diff --git a/lint/plugin.js b/lint/plugin.js index 0bd0a88ac..28019b98d 100644 --- a/lint/plugin.js +++ b/lint/plugin.js @@ -182,7 +182,13 @@ function vueTemplateAst(source, filename) { } function isVueSourceFile(file) { - return file.endsWith('.vue') && (file.includes('/src/') || file.includes('/packages/vue/src/')) + return ( + file.endsWith('.vue') && + (file.startsWith('src/') || + file.includes('/src/') || + file.startsWith('packages/vue/src/') || + file.includes('/packages/vue/src/')) + ) } function sourceLineCount(source) { @@ -272,8 +278,7 @@ const noVueStyleBlocks = { }, create(context) { const file = normalizedFilename(context) - if (!file.endsWith('.vue')) return {} - if (!file.includes('/src/') && !file.includes('/packages/vue/src/')) return {} + if (!isVueSourceFile(file)) return {} return { Program(node) { @@ -297,8 +302,7 @@ const noNativeTitleAttributesInVue = { }, create(context) { const file = normalizedFilename(context) - if (!file.endsWith('.vue')) return {} - if (!file.includes('/src/') && !file.includes('/packages/vue/src/')) return {} + if (!isVueSourceFile(file)) return {} return { Program(node) { @@ -329,8 +333,7 @@ const noHardcodedTipLabelsInVue = { }, create(context) { const file = normalizedFilename(context) - if (!file.endsWith('.vue')) return {} - if (!file.includes('/src/') && !file.includes('/packages/vue/src/')) return {} + if (!isVueSourceFile(file)) return {} return { Program(node) { diff --git a/src/components/properties/ExportScaleInput.vue b/src/components/properties/ExportScaleInput.vue index 9f648a6fd..c9bf99412 100644 --- a/src/components/properties/ExportScaleInput.vue +++ b/src/components/properties/ExportScaleInput.vue @@ -12,6 +12,7 @@ import { vTestId, type TestIdProps } from '@open-pencil/vue' import { useInputUI } from '@/components/ui/input' import { menuItem, useMenuUI } from '@/components/ui/menu' +import Tip from '@/components/ui/Tip.vue' interface ExportScaleInputProps extends TestIdProps { presets: readonly number[] @@ -35,7 +36,10 @@ const text = ref('') // Keep the editable text in sync with the committed scale (e.g. 1.5 -> "1.5x"). watch(modelValue, (value) => (text.value = `${value}x`), { immediate: true }) -const inputClass = useInputUI({ size: 'sm', ui: { base: 'min-w-0 flex-1' } }).base +const inputClass = useInputUI({ + size: 'sm', + ui: { base: 'min-w-0 flex-1 rounded-none border-0 bg-transparent focus:border-transparent' } +}).base const menuCls = useMenuUI({ content: 'min-w-[7rem]' }) const itemCls = menuItem({ justify: 'between' }) @@ -58,46 +62,50 @@ function isActive(scale: number) { diff --git a/src/components/ui/AppSelect.vue b/src/components/ui/AppSelect.vue index 133417dfb..0ab42df30 100644 --- a/src/components/ui/AppSelect.vue +++ b/src/components/ui/AppSelect.vue @@ -49,7 +49,7 @@ const indicator = ui?.indicator ?? 'absolute left-1.5 inline-flex items-center j