@veltra/desktop 1.0.15 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/action/action-group.vue.d.ts +2 -2
- package/dist/components/action/action.vue.d.ts +1 -1
- package/dist/components/action/style2.css +2 -2
- package/dist/components/auto-complete/style2.css +5 -4
- package/dist/components/badge/badge.js +2 -1
- package/dist/components/badge/badge.js.map +1 -1
- package/dist/components/batch-edit/style2.css +2 -2
- package/dist/components/breadcrumb/style2.css +1 -1
- package/dist/components/button/style2.css +8 -7
- package/dist/components/card/style2.css +2 -0
- package/dist/components/cascade/cascade.vue.d.ts +2 -2
- package/dist/components/cascade/style2.css +4 -3
- package/dist/components/check-tag/check-tag.js +1 -1
- package/dist/components/checkbox/checkbox-button.vue.d.ts +1 -1
- package/dist/components/checkbox/style2.css +1 -1
- package/dist/components/checkbox-group/checkbox-group.vue.d.ts +2 -2
- package/dist/components/code-editor/style2.css +7 -9
- package/dist/components/collapse/style2.css +3 -3
- package/dist/components/context-menu/style2.css +3 -1
- package/dist/components/date-panel/date-panel.vue.d.ts +1 -1
- package/dist/components/date-picker/date-picker.vue.d.ts +3 -3
- package/dist/components/date-range-picker/date-range-picker.vue.d.ts +1 -1
- package/dist/components/date-range-picker/style2.css +5 -4
- package/dist/components/dialog/style2.css +2 -0
- package/dist/components/drawer/style2.css +2 -1
- package/dist/components/dropdown/style2.css +2 -0
- package/dist/components/expression-editor/style2.css +2 -2
- package/dist/components/file-viewer/style2.css +6 -6
- package/dist/components/form-item/style2.css +5 -2
- package/dist/components/input/input.js.map +1 -1
- package/dist/components/input/input.vue.d.ts +2 -2
- package/dist/components/input/input.vue_vue_type_script_setup_true_lang.js +30 -13
- package/dist/components/input/input.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/input/style2.css +11 -14
- package/dist/components/menu/style2.css +4 -2
- package/dist/components/multi-select/multi-select.vue.d.ts +2 -2
- package/dist/components/multi-select/style2.css +5 -4
- package/dist/components/multi-tree-select/multi-tree-select.vue.d.ts +2 -2
- package/dist/components/multi-tree-select/style2.css +5 -4
- package/dist/components/number-input/number-input.js +48 -10
- package/dist/components/number-input/number-input.js.map +1 -1
- package/dist/components/number-input/number-input.vue.d.ts +2 -0
- package/dist/components/number-input/style2.css +25 -0
- package/dist/components/palette/palette.js +10 -3
- package/dist/components/palette/palette.js.map +1 -1
- package/dist/components/progress-nodes/style2.css +1 -1
- package/dist/components/radio-group/radio-group.vue.d.ts +2 -2
- package/dist/components/rich-text-editor/style2.css +2 -2
- package/dist/components/select/select.js +6 -2
- package/dist/components/select/select.js.map +1 -1
- package/dist/components/select/select.vue.d.ts +2 -2
- package/dist/components/switch/style2.css +3 -0
- package/dist/components/tabs/tabs-horizontal.vue.d.ts +1 -1
- package/dist/components/tabs/tabs.vue.d.ts +1 -1
- package/dist/components/textarea/style2.css +7 -6
- package/dist/components/theme/style2.css +2 -1
- package/dist/components/tree-select/tree-select.vue.d.ts +2 -2
- package/dist/types/badge.d.ts +1 -1
- package/dist/types/check-tag.d.ts +1 -1
- package/dist/types/date-picker.d.ts +2 -2
- package/dist/types/number-input.d.ts +1 -0
- package/package.json +11 -11
- package/src/components/action/style.scss +2 -2
- package/src/components/auto-complete/style.scss +5 -4
- package/src/components/badge/badge.vue +4 -1
- package/src/components/batch-edit/style.scss +2 -2
- package/src/components/breadcrumb/style.scss +4 -2
- package/src/components/button/style.scss +2 -1
- package/src/components/card/style.scss +2 -0
- package/src/components/cascade/style.scss +4 -4
- package/src/components/checkbox/style.scss +2 -1
- package/src/components/code-editor/style.scss +7 -8
- package/src/components/collapse/style.scss +13 -7
- package/src/components/context-menu/style.scss +6 -2
- package/src/components/date-range-picker/style.scss +5 -5
- package/src/components/dialog/style.scss +2 -1
- package/src/components/drawer/style.scss +2 -1
- package/src/components/dropdown/style.scss +2 -0
- package/src/components/expression-editor/style.scss +8 -6
- package/src/components/file-viewer/style.scss +7 -7
- package/src/components/form-item/style.scss +3 -3
- package/src/components/input/input.vue +30 -11
- package/src/components/input/style.scss +16 -17
- package/src/components/menu/style.scss +4 -2
- package/src/components/multi-select/style.scss +5 -5
- package/src/components/multi-tree-select/style.scss +5 -4
- package/src/components/number-input/__test__/number-input.test.ts +60 -0
- package/src/components/number-input/number-input.vue +48 -5
- package/src/components/number-input/style.scss +30 -0
- package/src/components/palette/palette.vue +14 -4
- package/src/components/progress-nodes/style.scss +1 -1
- package/src/components/rich-text-editor/style.scss +8 -4
- package/src/components/select/select.vue +9 -2
- package/src/components/switch/style.scss +3 -0
- package/src/components/tabs/style.scss +4 -2
- package/src/components/textarea/style.scss +9 -8
- package/src/components/theme/style.scss +2 -1
- package/src/components/tree/style.scss +2 -2
- package/src/types/badge.ts +1 -1
- package/src/types/check-tag.ts +1 -1
- package/src/types/date-picker.ts +2 -2
- package/src/types/number-input.ts +1 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"select.js","names":["$slots"],"sources":["../../../src/components/select/select.vue"],"sourcesContent":["<template>\n <u-dropdown\n v-if=\"!readonly\"\n trigger=\"click\"\n :class=\"[cls.b, bem.is('disabled', disabled)]\"\n ref=\"dropdownRef\"\n v-model:visible=\"dropdownVisible\"\n :content-class=\"[cls.e('panel'), cls.em('panel', size), contentClass]\"\n :content-style=\"contentStyle\"\n :disabled=\"disabled\"\n :min-width=\"minWidth\"\n :width=\"width\"\n @keydown=\"handleKeydown\"\n @update:visible=\"handleDropdownVisible\"\n >\n <!-- 触发 -->\n <template #trigger>\n <u-input\n :size=\"size\"\n :disabled=\"disabled\"\n :placeholder=\"placeholder\"\n :clearable=\"clearable\"\n :model-value=\"selected ? (o(selected).get(labelKey) ?? label) : modelValue\"\n @clear=\"handleClear\"\n @keydown=\"handleKeydown\"\n native-readonly\n >\n <template #prefix v-if=\"$slots.prefix\">\n <slot name=\"prefix\" />\n </template>\n\n <template #suffix>\n <u-icon :class=\"cls.e('arrow')\">\n <ArrowDown />\n </u-icon>\n </template>\n </u-input>\n </template>\n\n <!-- 下拉内容 -->\n <template #content>\n <!-- 过滤器 -->\n <div v-if=\"filterable\" :class=\"cls.e('content-filter')\">\n <u-input placeholder=\"输入关键字进行搜索\" tabindex=\"0\" v-focus v-model=\"queryString\">\n <template #suffix>\n <u-icon>\n <Search />\n </u-icon>\n </template>\n </u-input>\n </div>\n\n <!--\n 单选列表。虚拟化启用时,内容容器 height 由 useVirtualizer 命令式写入;\n 此处 content-style 仅承担 grid 相关样式,避免 height 变化触发模板重渲染。\n -->\n <u-scroll\n v-if=\"options.length\"\n tag=\"ul\"\n :class=\"cls.e('options')\"\n ref=\"scrollRef\"\n :content-class=\"[\n cls.e('options-wrap'),\n bem.is('virtual', virtualEnabled),\n bem.is('grid', !!grid)\n ]\"\n :content-style=\"{\n gridTemplateColumns: grid ? `repeat(${grid.cols}, minmax(0px, 1fr))` : undefined,\n gridGap: grid ? withUnit(grid.gap, 'px') : undefined\n }\"\n >\n <template v-if=\"virtualEnabled\">\n <!-- @vue-ignore -->\n <li\n v-for=\"{ option, index, val, label, key, offset } of virtualOptions\"\n :class=\"[optionClass, bem.is('selected', index === currentIndex)]\"\n @click=\"handleSelect(option, index)\"\n :key=\"key\"\n :style=\"{ transform: `translateY(${offset}px)` }\"\n :data-index=\"index\"\n :ref=\"(el) => measureElement(index, el as Element | null)\"\n >\n <slot v-bind=\"{ option, index }\">\n {{ label }}\n </slot>\n </li>\n </template>\n\n <template v-else>\n <li\n v-for=\"(option, index) of options\"\n :class=\"[optionClass, bem.is('selected', index === currentIndex)]\"\n @click=\"handleSelect(option, index)\"\n :data-index=\"index\"\n :title=\"o(option).get(labelKey)\"\n :key=\"o(option).get(valueKey)\"\n >\n <slot v-bind=\"{ option, index }\">\n {{ o(option).get(labelKey) }}\n </slot>\n </li>\n </template>\n </u-scroll>\n\n <div v-else :class=\"cls.e('empty')\">\n <UEmpty />\n </div>\n </template>\n </u-dropdown>\n\n <template v-else>\n {{ label || selected?.[labelKey] || FORM_EMPTY_CONTENT }}\n </template>\n</template>\n\n<script lang=\"ts\" setup>\nimport { o } from '@cat-kit/core'\nimport { useFormComponent, useFormFallbackProps, useVirtualizer } from '@veltra/compositions'\nimport { vFocus } from '@veltra/directives'\nimport { ArrowDown, Search } from '@veltra/icons/normal'\nimport { bem, FORM_EMPTY_CONTENT, scrollIntoContainerView, withUnit } from '@veltra/utils'\nimport { computed, nextTick, shallowRef, watch } from 'vue'\n\nimport type {\n SelectEmits,\n SelectProps,\n _SelectExposed,\n DropdownExposed,\n ScrollExposed\n} from '../../types'\nimport { UDropdown } from '../dropdown'\nimport { UEmpty } from '../empty'\nimport { UIcon } from '../icon'\nimport { UInput } from '../input'\nimport { UScroll } from '../scroll'\nimport { useKeyboard } from './use-keyboard'\nimport { useOptions } from './use-options'\n\ndefineOptions({ name: 'Select' })\n\nconst props = withDefaults(defineProps<SelectProps>(), {\n labelKey: 'label',\n valueKey: 'value',\n placeholder: '请选择',\n clearable: true,\n disabled: undefined,\n readonly: undefined\n})\n\nconst emit = defineEmits<SelectEmits>()\n\ndefineSlots<{\n /** 前缀插槽 */\n prefix?: () => any\n /** 默认插槽 */\n default?: (scope: { option: Record<string, any>; index: number }) => any\n}>()\n\nconst cls = bem('select')\n\nconst optionClass = cls.e('option')\n\nconst { formProps } = useFormComponent()\nconst { size, disabled, readonly } = useFormFallbackProps([formProps ?? {}, props], {\n size: 'default',\n disabled: false,\n readonly: false\n})\n\nconst currentIndex = shallowRef(-1)\nconst label = defineModel('text')\nconst selected = shallowRef<Record<string, any>>()\n\nconst dropdownRef = shallowRef<DropdownExposed>()\nconst scrollRef = shallowRef<ScrollExposed>()\n\nconst filterable = computed(() => {\n return props.filterable || typeof props.options === 'function'\n})\n\nconst { queryString, options, temOptionsToCreatedOptions, clearCreatedOptions } = useOptions({\n props\n})\n\n// TODO: 优化\nlet userSelecting = false\nfunction lock() {\n userSelecting = true\n}\n\nfunction unlock() {\n nextTick(() => {\n userSelecting = false\n })\n}\n\n// 回显\nwatch(\n [() => props.modelValue, options],\n ([modelValue, options]) => {\n if (userSelecting) return\n\n if (!options?.length) return\n\n if (modelValue !== undefined) {\n const { valueKey } = props\n currentIndex.value = options.findIndex((option) => o(option).get(valueKey) === modelValue)\n selected.value = options[currentIndex.value]\n } else {\n currentIndex.value = -1\n selected.value = undefined\n }\n },\n { immediate: true }\n)\n\nconst baseVirtualEnabled = computed(() => options.value.length > 80)\nconst virtualEnabled = computed(() => baseVirtualEnabled.value && !props.grid)\n\nconst { virtualizer, items } = useVirtualizer({\n count: computed(() => options.value.length),\n scrollEl: () => scrollRef.value?.containerRef ?? null,\n contentEl: () => (virtualEnabled.value ? (scrollRef.value?.contentRef ?? null) : null),\n gap: 4,\n estimateSize: () => 40\n})\n\nconst virtualOptions = computed(() => {\n const _options = options.value\n const { labelKey, valueKey } = props\n return items.value.map((item) => {\n const option = _options[item.index]!\n return {\n option,\n index: item.index,\n label: o(option).get(labelKey),\n val: o(option).get(valueKey),\n key: item.index,\n offset: item.start\n }\n })\n})\n\nconst measureElement: (index: number, el: Element | null) => void = (index, el) =>\n virtualizer.measureElement(index, el)\n\nfunction scrollTo(index: number): void {\n virtualizer.scrollToIndex(index, { align: 'center' })\n}\n\nwatch([scrollRef, virtualEnabled], ([scroll, virtualEnabled]) => {\n if (!scroll || !props.modelValue) return\n\n if (virtualEnabled) {\n const index = options.value.findIndex((option) => option === selected.value)\n index !== -1 && dropdownVisible.value && nextTick(() => scrollTo(index))\n } else {\n const selectedEl = scroll?.contentRef?.getElementsByClassName('is-selected')[0]\n if (selectedEl) {\n scrollIntoContainerView(selectedEl as HTMLElement, scroll.containerRef ?? null)\n }\n }\n})\n\nconst dropdownVisible = shallowRef(false)\n\nwatch(dropdownVisible, (v) => {\n if (!v) {\n queryString.value = ''\n }\n})\n\nconst handleDropdownVisible = (visible: boolean) => {\n if (!visible) {\n queryString.value = ''\n }\n}\n\n/** 单选 */\nconst handleSelect = (option: Record<string, any>, index: number) => {\n lock()\n selected.value = option\n\n emit('update:modelValue', option?.[props.valueKey])\n label.value = option?.[props.labelKey]\n emit('change', option)\n if (option.__isTemp) {\n temOptionsToCreatedOptions()\n }\n currentIndex.value = index\n dropdownRef.value?.close()\n\n unlock()\n}\n\n/** 清除选项 */\nconst handleClear = () => {\n lock()\n selected.value = undefined\n clearCreatedOptions()\n emit('update:modelValue', undefined)\n emit('change', undefined)\n unlock()\n}\n\nfunction getCurrentEl() {\n return scrollRef.value?.contentRef?.querySelector('li.is-selected') as HTMLElement | undefined\n}\n\nconst { handleKeydown } = useKeyboard({\n options,\n currentIndex,\n selectOption: handleSelect,\n getCurrentEl\n})\n</script>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"select.js","names":["$slots"],"sources":["../../../src/components/select/select.vue"],"sourcesContent":["<template>\n <u-dropdown\n v-if=\"!readonly\"\n trigger=\"click\"\n :class=\"[cls.b, bem.is('disabled', disabled)]\"\n ref=\"dropdownRef\"\n v-model:visible=\"dropdownVisible\"\n :content-class=\"[cls.e('panel'), cls.em('panel', size), contentClass]\"\n :content-style=\"contentStyle\"\n :disabled=\"disabled\"\n :min-width=\"minWidth\"\n :width=\"width\"\n @keydown=\"handleKeydown\"\n @update:visible=\"handleDropdownVisible\"\n >\n <!-- 触发 -->\n <template #trigger>\n <u-input\n :size=\"size\"\n :disabled=\"disabled\"\n :placeholder=\"placeholder\"\n :clearable=\"clearable\"\n :model-value=\"displayedValue\"\n @clear=\"handleClear\"\n @keydown=\"handleKeydown\"\n native-readonly\n >\n <template #prefix v-if=\"$slots.prefix\">\n <slot name=\"prefix\" />\n </template>\n\n <template #suffix>\n <u-icon :class=\"cls.e('arrow')\">\n <ArrowDown />\n </u-icon>\n </template>\n </u-input>\n </template>\n\n <!-- 下拉内容 -->\n <template #content>\n <!-- 过滤器 -->\n <div v-if=\"filterable\" :class=\"cls.e('content-filter')\">\n <u-input placeholder=\"输入关键字进行搜索\" tabindex=\"0\" v-focus v-model=\"queryString\">\n <template #suffix>\n <u-icon>\n <Search />\n </u-icon>\n </template>\n </u-input>\n </div>\n\n <!--\n 单选列表。虚拟化启用时,内容容器 height 由 useVirtualizer 命令式写入;\n 此处 content-style 仅承担 grid 相关样式,避免 height 变化触发模板重渲染。\n -->\n <u-scroll\n v-if=\"options.length\"\n tag=\"ul\"\n :class=\"cls.e('options')\"\n ref=\"scrollRef\"\n :content-class=\"[\n cls.e('options-wrap'),\n bem.is('virtual', virtualEnabled),\n bem.is('grid', !!grid)\n ]\"\n :content-style=\"{\n gridTemplateColumns: grid ? `repeat(${grid.cols}, minmax(0px, 1fr))` : undefined,\n gridGap: grid ? withUnit(grid.gap, 'px') : undefined\n }\"\n >\n <template v-if=\"virtualEnabled\">\n <!-- @vue-ignore -->\n <li\n v-for=\"{ option, index, val, label, key, offset } of virtualOptions\"\n :class=\"[optionClass, bem.is('selected', index === currentIndex)]\"\n @click=\"handleSelect(option, index)\"\n :key=\"key\"\n :style=\"{ transform: `translateY(${offset}px)` }\"\n :data-index=\"index\"\n :ref=\"(el) => measureElement(index, el as Element | null)\"\n >\n <slot v-bind=\"{ option, index }\">\n {{ label }}\n </slot>\n </li>\n </template>\n\n <template v-else>\n <li\n v-for=\"(option, index) of options\"\n :class=\"[optionClass, bem.is('selected', index === currentIndex)]\"\n @click=\"handleSelect(option, index)\"\n :data-index=\"index\"\n :title=\"o(option).get(labelKey)\"\n :key=\"o(option).get(valueKey)\"\n >\n <slot v-bind=\"{ option, index }\">\n {{ o(option).get(labelKey) }}\n </slot>\n </li>\n </template>\n </u-scroll>\n\n <div v-else :class=\"cls.e('empty')\">\n <UEmpty />\n </div>\n </template>\n </u-dropdown>\n\n <template v-else>\n {{ displayedValue || FORM_EMPTY_CONTENT }}\n </template>\n</template>\n\n<script lang=\"ts\" setup>\nimport { o } from '@cat-kit/core'\nimport { useFormComponent, useFormFallbackProps, useVirtualizer } from '@veltra/compositions'\nimport { vFocus } from '@veltra/directives'\nimport { ArrowDown, Search } from '@veltra/icons/normal'\nimport { bem, FORM_EMPTY_CONTENT, scrollIntoContainerView, withUnit } from '@veltra/utils'\nimport { computed, nextTick, shallowRef, watch } from 'vue'\n\nimport type {\n SelectEmits,\n SelectProps,\n _SelectExposed,\n DropdownExposed,\n ScrollExposed\n} from '../../types'\nimport { UDropdown } from '../dropdown'\nimport { UEmpty } from '../empty'\nimport { UIcon } from '../icon'\nimport { UInput } from '../input'\nimport { UScroll } from '../scroll'\nimport { useKeyboard } from './use-keyboard'\nimport { useOptions } from './use-options'\n\ndefineOptions({ name: 'Select' })\n\nconst props = withDefaults(defineProps<SelectProps>(), {\n labelKey: 'label',\n valueKey: 'value',\n placeholder: '请选择',\n clearable: true,\n disabled: undefined,\n readonly: undefined\n})\n\nconst emit = defineEmits<SelectEmits>()\n\ndefineSlots<{\n /** 前缀插槽 */\n prefix?: () => any\n /** 默认插槽 */\n default?: (scope: { option: Record<string, any>; index: number }) => any\n}>()\n\nconst cls = bem('select')\n\nconst optionClass = cls.e('option')\n\nconst { formProps } = useFormComponent()\nconst { size, disabled, readonly } = useFormFallbackProps([formProps ?? {}, props], {\n size: 'default',\n disabled: false,\n readonly: false\n})\n\nconst currentIndex = shallowRef(-1)\nconst label = defineModel('text')\nconst selected = shallowRef<Record<string, any>>()\n\nconst displayedValue = computed(() => {\n if (label.value) return label.value\n\n return selected.value ? o(selected.value).get(props.labelKey) : String(props.modelValue)\n})\n\nconst dropdownRef = shallowRef<DropdownExposed>()\nconst scrollRef = shallowRef<ScrollExposed>()\n\nconst filterable = computed(() => {\n return props.filterable || typeof props.options === 'function'\n})\n\nconst { queryString, options, temOptionsToCreatedOptions, clearCreatedOptions } = useOptions({\n props\n})\n\n// TODO: 优化\nlet userSelecting = false\nfunction lock() {\n userSelecting = true\n}\n\nfunction unlock() {\n nextTick(() => {\n userSelecting = false\n })\n}\n\n// 回显\nwatch(\n [() => props.modelValue, options],\n ([modelValue, options]) => {\n if (userSelecting) return\n\n if (!options?.length) return\n\n if (modelValue !== undefined) {\n const { valueKey } = props\n currentIndex.value = options.findIndex((option) => o(option).get(valueKey) === modelValue)\n\n selected.value = options[currentIndex.value]\n } else {\n currentIndex.value = -1\n selected.value = undefined\n }\n },\n { immediate: true }\n)\n\nconst baseVirtualEnabled = computed(() => options.value.length > 80)\nconst virtualEnabled = computed(() => baseVirtualEnabled.value && !props.grid)\n\nconst { virtualizer, items } = useVirtualizer({\n count: computed(() => options.value.length),\n scrollEl: () => scrollRef.value?.containerRef ?? null,\n contentEl: () => (virtualEnabled.value ? (scrollRef.value?.contentRef ?? null) : null),\n gap: 4,\n estimateSize: () => 40\n})\n\nconst virtualOptions = computed(() => {\n const _options = options.value\n const { labelKey, valueKey } = props\n return items.value.map((item) => {\n const option = _options[item.index]!\n return {\n option,\n index: item.index,\n label: o(option).get(labelKey),\n val: o(option).get(valueKey),\n key: item.index,\n offset: item.start\n }\n })\n})\n\nconst measureElement: (index: number, el: Element | null) => void = (index, el) =>\n virtualizer.measureElement(index, el)\n\nfunction scrollTo(index: number): void {\n virtualizer.scrollToIndex(index, { align: 'center' })\n}\n\nwatch([scrollRef, virtualEnabled], ([scroll, virtualEnabled]) => {\n if (!scroll || !props.modelValue) return\n\n if (virtualEnabled) {\n const index = options.value.findIndex((option) => option === selected.value)\n index !== -1 && dropdownVisible.value && nextTick(() => scrollTo(index))\n } else {\n const selectedEl = scroll?.contentRef?.getElementsByClassName('is-selected')[0]\n if (selectedEl) {\n scrollIntoContainerView(selectedEl as HTMLElement, scroll.containerRef ?? null)\n }\n }\n})\n\nconst dropdownVisible = shallowRef(false)\n\nwatch(dropdownVisible, (v) => {\n if (!v) {\n queryString.value = ''\n }\n})\n\nconst handleDropdownVisible = (visible: boolean) => {\n if (!visible) {\n queryString.value = ''\n }\n}\n\n/** 单选 */\nconst handleSelect = (option: Record<string, any>, index: number) => {\n lock()\n selected.value = option\n\n emit('update:modelValue', option?.[props.valueKey])\n label.value = option?.[props.labelKey]\n emit('change', option)\n if (option.__isTemp) {\n temOptionsToCreatedOptions()\n }\n currentIndex.value = index\n dropdownRef.value?.close()\n\n unlock()\n}\n\n/** 清除选项 */\nconst handleClear = () => {\n lock()\n selected.value = undefined\n clearCreatedOptions()\n emit('update:modelValue', undefined)\n emit('change', undefined)\n unlock()\n}\n\nfunction getCurrentEl() {\n return scrollRef.value?.contentRef?.querySelector('li.is-selected') as HTMLElement | undefined\n}\n\nconst { handleKeydown } = useKeyboard({\n options,\n currentIndex,\n selectOption: handleSelect,\n getCurrentEl\n})\n</script>\n"],"mappings":"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"}
|
|
@@ -26,10 +26,10 @@ declare const __VLS_base: _$vue.DefineComponent<__VLS_PublicProps, {}, {}, {}, {
|
|
|
26
26
|
"onUpdate:text"?: ((value: any) => any) | undefined;
|
|
27
27
|
"onUpdate:label"?: ((label?: string | undefined) => any) | undefined;
|
|
28
28
|
}>, {
|
|
29
|
-
disabled: boolean;
|
|
30
|
-
readonly: boolean;
|
|
31
29
|
labelKey: string;
|
|
32
30
|
valueKey: string;
|
|
31
|
+
disabled: boolean;
|
|
32
|
+
readonly: boolean;
|
|
33
33
|
placeholder: string;
|
|
34
34
|
clearable: boolean;
|
|
35
35
|
}, {}, {}, {}, string, _$vue.ComponentProvideOptions, false, {}, any>;
|
|
@@ -67,8 +67,11 @@
|
|
|
67
67
|
visibility: hidden;
|
|
68
68
|
}
|
|
69
69
|
.u-switch__button {
|
|
70
|
+
display: flex;
|
|
71
|
+
align-items: center;
|
|
70
72
|
border-radius: 100px;
|
|
71
73
|
background-color: var(--u-bg-color-bottom);
|
|
74
|
+
border: 1px solid var(--u-border-color);
|
|
72
75
|
transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
|
|
73
76
|
padding: 2px;
|
|
74
77
|
flex-shrink: 0;
|
|
@@ -24,9 +24,9 @@ declare const __VLS_base: _$vue.DefineComponent<__VLS_PublicProps, {}, {}, {}, {
|
|
|
24
24
|
onClose?: ((item: TabItem, index: number) => any) | undefined;
|
|
25
25
|
}>, {
|
|
26
26
|
closable: boolean;
|
|
27
|
-
block: boolean;
|
|
28
27
|
rounded: boolean;
|
|
29
28
|
position: "top" | "bottom";
|
|
29
|
+
block: boolean;
|
|
30
30
|
}, {}, {}, {}, string, _$vue.ComponentProvideOptions, false, {}, any>;
|
|
31
31
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
32
32
|
declare const _default: typeof __VLS_export;
|
|
@@ -19,9 +19,9 @@ declare const __VLS_export: _$vue.DefineComponent<__VLS_PublicProps, {}, {}, {},
|
|
|
19
19
|
onClose?: ((item: TabItem, index: number) => any) | undefined;
|
|
20
20
|
}>, {
|
|
21
21
|
closable: boolean;
|
|
22
|
-
block: boolean;
|
|
23
22
|
rounded: boolean;
|
|
24
23
|
position: "left" | "right" | "top" | "bottom";
|
|
24
|
+
block: boolean;
|
|
25
25
|
keepAlive: boolean;
|
|
26
26
|
}, {}, {}, {}, string, _$vue.ComponentProvideOptions, false, {}, any>;
|
|
27
27
|
declare const _default: typeof __VLS_export;
|
|
@@ -18,13 +18,14 @@
|
|
|
18
18
|
.u-textarea {
|
|
19
19
|
position: relative;
|
|
20
20
|
width: 100%;
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
border: var(--u-border);
|
|
22
|
+
box-shadow: var(--u-shadow-emboss);
|
|
23
|
+
transition: border-color 0.25s ease, box-shadow 0.25s ease;
|
|
23
24
|
overflow: hidden;
|
|
24
25
|
vertical-align: middle;
|
|
25
26
|
}
|
|
26
|
-
.u-textarea:hover {
|
|
27
|
-
|
|
27
|
+
.u-textarea:not(.is-disabled):hover {
|
|
28
|
+
border-color: var(--u-color-primary);
|
|
28
29
|
}
|
|
29
30
|
.u-textarea--small {
|
|
30
31
|
border-radius: var(--u-radius-small);
|
|
@@ -77,11 +78,11 @@
|
|
|
77
78
|
color: var(--u-text-color-placeholder);
|
|
78
79
|
}
|
|
79
80
|
.u-textarea.is-focus {
|
|
80
|
-
|
|
81
|
+
border-color: var(--u-color-primary);
|
|
81
82
|
}
|
|
82
83
|
.u-textarea.is-disabled {
|
|
83
84
|
background-color: var(--u-color-disabled);
|
|
84
|
-
box-shadow:
|
|
85
|
+
box-shadow: none;
|
|
85
86
|
}
|
|
86
87
|
.u-textarea.is-disabled .u-textarea__native {
|
|
87
88
|
cursor: not-allowed;
|
|
@@ -26,7 +26,8 @@
|
|
|
26
26
|
border-radius: var(--u-radius-large);
|
|
27
27
|
background: radial-gradient(circle at top right, rgba(30, 136, 229, 0.14), transparent 36%), linear-gradient(180deg, var(--u-bg-color-top) 0%, var(--u-bg-color-middle) 100%);
|
|
28
28
|
box-shadow: 0 18px 48px rgba(15, 23, 42, 0.12), inset 0 1px 0 rgba(255, 255, 255, 0.7);
|
|
29
|
-
backdrop-filter:
|
|
29
|
+
backdrop-filter: var(--u-bg-filter);
|
|
30
|
+
-webkit-backdrop-filter: var(--u-bg-filter);
|
|
30
31
|
overflow: hidden;
|
|
31
32
|
}
|
|
32
33
|
.u-theme__header {
|
|
@@ -24,11 +24,11 @@ declare const __VLS_base: _$vue.DefineComponent<__VLS_PublicProps, {}, {}, {}, {
|
|
|
24
24
|
onChange?: ((value?: string | number | undefined, selectedData?: Record<string, any> | undefined) => any) | undefined;
|
|
25
25
|
"onUpdate:text"?: ((text?: string | undefined) => any) | undefined;
|
|
26
26
|
}>, {
|
|
27
|
-
disabled: boolean;
|
|
28
|
-
readonly: boolean;
|
|
29
27
|
expandAll: boolean;
|
|
30
28
|
labelKey: string;
|
|
31
29
|
valueKey: string;
|
|
30
|
+
disabled: boolean;
|
|
31
|
+
readonly: boolean;
|
|
32
32
|
placeholder: string;
|
|
33
33
|
clearable: boolean;
|
|
34
34
|
filterable: boolean;
|
package/dist/types/badge.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ import { Dater } from "@cat-kit/core";
|
|
|
4
4
|
//#region src/types/date-picker.d.ts
|
|
5
5
|
/** date-picker组件属性 */
|
|
6
6
|
interface DatePickerProps extends FormComponentProps {
|
|
7
|
-
modelValue?: string;
|
|
7
|
+
modelValue?: string | number | Date;
|
|
8
8
|
/** 占位 */
|
|
9
9
|
placeholder?: string;
|
|
10
10
|
/** 日期类型 */
|
|
@@ -20,7 +20,7 @@ interface DatePickerProps extends FormComponentProps {
|
|
|
20
20
|
}
|
|
21
21
|
/** date-picker组件定义的事件 */
|
|
22
22
|
interface DatePickerEmits {
|
|
23
|
-
(e: 'update:modelValue', value?: string): void;
|
|
23
|
+
(e: 'update:modelValue', value?: string | number | Date): void;
|
|
24
24
|
}
|
|
25
25
|
/** date-picker组件暴露的属性和方法(组件内部使用) */
|
|
26
26
|
interface _DatePickerExposed {}
|
|
@@ -25,6 +25,7 @@ interface NumberInputProps extends Omit<InputProps, 'modelValue'> {
|
|
|
25
25
|
interface NumberInputEmits {
|
|
26
26
|
(event: 'update:modelValue', value?: number): void;
|
|
27
27
|
(event: 'change', value?: number): void;
|
|
28
|
+
(event: 'clear'): void;
|
|
28
29
|
}
|
|
29
30
|
/** 数字输入组件暴露的属性和方法 */
|
|
30
31
|
interface NumberInputExposed {}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@veltra/desktop",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"files": [
|
|
5
5
|
"dist",
|
|
6
6
|
"src"
|
|
@@ -61,22 +61,22 @@
|
|
|
61
61
|
"@lexical/rich-text": "^0.43.0",
|
|
62
62
|
"@lexical/selection": "^0.43.0",
|
|
63
63
|
"@lexical/utils": "^0.43.0",
|
|
64
|
-
"@veltra/compositions": "
|
|
65
|
-
"@veltra/directives": "
|
|
66
|
-
"@veltra/icons": "
|
|
67
|
-
"@veltra/styles": "
|
|
68
|
-
"@veltra/utils": "
|
|
64
|
+
"@veltra/compositions": "2.0.0",
|
|
65
|
+
"@veltra/directives": "2.0.0",
|
|
66
|
+
"@veltra/icons": "2.0.0",
|
|
67
|
+
"@veltra/styles": "2.0.0",
|
|
68
|
+
"@veltra/utils": "2.0.0",
|
|
69
69
|
"@visactor/vtable": "^1.26.0",
|
|
70
70
|
"codemirror": "^6.0.2",
|
|
71
71
|
"docx-preview": "^0.3.7",
|
|
72
72
|
"lexical": "^0.43.0"
|
|
73
73
|
},
|
|
74
74
|
"peerDependencies": {
|
|
75
|
-
"@veltra/compositions": "
|
|
76
|
-
"@veltra/directives": "
|
|
77
|
-
"@veltra/icons": "
|
|
78
|
-
"@veltra/styles": "
|
|
79
|
-
"@veltra/utils": "
|
|
75
|
+
"@veltra/compositions": "2.0.0",
|
|
76
|
+
"@veltra/directives": "2.0.0",
|
|
77
|
+
"@veltra/icons": "2.0.0",
|
|
78
|
+
"@veltra/styles": "2.0.0",
|
|
79
|
+
"@veltra/utils": "2.0.0",
|
|
80
80
|
"vue": "^3.5.33"
|
|
81
81
|
}
|
|
82
82
|
}
|
|
@@ -31,8 +31,8 @@ $group-name: action-group;
|
|
|
31
31
|
&:focus-within {
|
|
32
32
|
opacity: 1;
|
|
33
33
|
background-color: color-mix(in srgb, #{fn.use-var(bg-color, top)} 70%, transparent);
|
|
34
|
-
backdrop-filter:
|
|
35
|
-
-webkit-backdrop-filter:
|
|
34
|
+
backdrop-filter: fn.use-var(bg-filter);
|
|
35
|
+
-webkit-backdrop-filter: fn.use-var(bg-filter);
|
|
36
36
|
box-shadow: 0 1px 4px color-mix(in srgb, #{fn.use-var(shadow, color)} 35%, transparent);
|
|
37
37
|
}
|
|
38
38
|
}
|
|
@@ -14,7 +14,7 @@ $root-name: auto-complete;
|
|
|
14
14
|
|
|
15
15
|
@include m.is(disabled) {
|
|
16
16
|
background-color: fn.use-var(color, disabled);
|
|
17
|
-
box-shadow:
|
|
17
|
+
box-shadow: none;
|
|
18
18
|
cursor: not-allowed;
|
|
19
19
|
|
|
20
20
|
@include m.bem($root-name, arrow) {
|
|
@@ -68,12 +68,13 @@ $root-name: auto-complete;
|
|
|
68
68
|
|
|
69
69
|
@include m.is(multiple) {
|
|
70
70
|
line-height: 1;
|
|
71
|
-
|
|
72
|
-
|
|
71
|
+
border: fn.use-var(border);
|
|
72
|
+
box-shadow: fn.use-var(shadow, emboss);
|
|
73
|
+
transition: border-color 0.25s ease, box-shadow 0.25s ease;
|
|
73
74
|
overflow: hidden;
|
|
74
75
|
@include m.flex($display: inline-flex);
|
|
75
76
|
&:hover {
|
|
76
|
-
|
|
77
|
+
border-color: fn.use-var(color, primary);
|
|
77
78
|
}
|
|
78
79
|
}
|
|
79
80
|
|
|
@@ -28,7 +28,10 @@ const { size } = useFallbackProps([props], {
|
|
|
28
28
|
|
|
29
29
|
const badgeValue = computed(() => {
|
|
30
30
|
if (props.dot) return ''
|
|
31
|
-
|
|
31
|
+
if (typeof props.value === 'number' && typeof props.max === 'number') {
|
|
32
|
+
return props.value > props.max ? `${props.max}+` : props.value
|
|
33
|
+
}
|
|
34
|
+
return props.value
|
|
32
35
|
})
|
|
33
36
|
|
|
34
37
|
const classList = computed(() => {
|
|
@@ -21,8 +21,8 @@ $root-name: batch-edit;
|
|
|
21
21
|
.u-table__row.is-current .#{vars.$namespace}action-group.is-hover {
|
|
22
22
|
opacity: 1;
|
|
23
23
|
background-color: color-mix(in srgb, #{fn.use-var(bg-color, top)} 70%, transparent);
|
|
24
|
-
backdrop-filter:
|
|
25
|
-
-webkit-backdrop-filter:
|
|
24
|
+
backdrop-filter: fn.use-var(bg-filter);
|
|
25
|
+
-webkit-backdrop-filter: fn.use-var(bg-filter);
|
|
26
26
|
box-shadow: 0 1px 4px color-mix(in srgb, #{fn.use-var(shadow, color)} 35%, transparent);
|
|
27
27
|
}
|
|
28
28
|
|
|
@@ -44,8 +44,10 @@ $root-name: breadcrumb;
|
|
|
44
44
|
border-radius: fn.use-var(radius, small);
|
|
45
45
|
transition: color 0.15s ease;
|
|
46
46
|
|
|
47
|
-
|
|
48
|
-
|
|
47
|
+
@include m.is-not(disabled) {
|
|
48
|
+
&:hover {
|
|
49
|
+
color: fn.use-var(color, primary);
|
|
50
|
+
}
|
|
49
51
|
}
|
|
50
52
|
|
|
51
53
|
&:focus-visible {
|
|
@@ -19,6 +19,7 @@ $root-name: button;
|
|
|
19
19
|
-webkit-appearance: none;
|
|
20
20
|
border: none;
|
|
21
21
|
background-color: fn.use-var(color, default);
|
|
22
|
+
box-shadow: fn.use-var(shadow, emboss);
|
|
22
23
|
transition:
|
|
23
24
|
background-color 0.25s,
|
|
24
25
|
box-shadow 0.2s;
|
|
@@ -101,7 +102,7 @@ $root-name: button;
|
|
|
101
102
|
box-shadow: 0px 0px 0px 1px fn.use-var(color, $type);
|
|
102
103
|
}
|
|
103
104
|
|
|
104
|
-
|
|
105
|
+
@include m.is-not(disabled, loading) {
|
|
105
106
|
&:hover,
|
|
106
107
|
&:focus {
|
|
107
108
|
background-color: fn.use-var(color, $type, 'light-9');
|
|
@@ -8,6 +8,8 @@ $root-name: card;
|
|
|
8
8
|
border-radius: fn.use-var(radius, default);
|
|
9
9
|
background-color: fn.use-var(bg-color, top);
|
|
10
10
|
box-shadow: fn.use-var(shadow);
|
|
11
|
+
backdrop-filter: fn.use-var(bg-filter);
|
|
12
|
+
-webkit-backdrop-filter: fn.use-var(bg-filter);
|
|
11
13
|
overflow: hidden;
|
|
12
14
|
|
|
13
15
|
@include m.is(integrate) {
|
|
@@ -10,16 +10,16 @@ $menu-name: $root-name + '-panel-item';
|
|
|
10
10
|
width: 100%;
|
|
11
11
|
|
|
12
12
|
@include m.is(multiple) {
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
border: fn.use-var(border);
|
|
14
|
+
box-shadow: fn.use-var(shadow, emboss);
|
|
15
|
+
transition: border-color 0.25s ease, box-shadow 0.25s ease;
|
|
15
16
|
overflow: hidden;
|
|
16
17
|
cursor: pointer;
|
|
17
18
|
|
|
18
19
|
@include m.flex($display: inline-flex);
|
|
19
20
|
|
|
20
21
|
&:hover {
|
|
21
|
-
|
|
22
|
-
box-shadow: inset 0 0 1px 1px fn.use-var(color, primary);
|
|
22
|
+
border-color: fn.use-var(color, primary);
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
25
|
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
@use 'pkg:@veltra/styles/vars';
|
|
4
4
|
|
|
5
5
|
$root-name: checkbox;
|
|
6
|
+
|
|
6
7
|
@include m.b($root-name) {
|
|
7
8
|
user-select: none;
|
|
8
9
|
vertical-align: middle;
|
|
@@ -51,7 +52,7 @@ $root-name: checkbox;
|
|
|
51
52
|
@include m.e(wrap) {
|
|
52
53
|
border: fn.use-var(border, width) fn.use-var(border, style)
|
|
53
54
|
#{fn.component-var(checkbox, border, #ccc)};
|
|
54
|
-
border-radius:
|
|
55
|
+
border-radius: 6px;
|
|
55
56
|
color: #fff;
|
|
56
57
|
transition: background-color 0.15s ease;
|
|
57
58
|
@include m.flex(inline-flex, center);
|
|
@@ -21,13 +21,14 @@ $root-name: code-editor;
|
|
|
21
21
|
max-height: 480px;
|
|
22
22
|
border-radius: fn.use-var(radius, default);
|
|
23
23
|
background-color: var(--u-code-editor-bg);
|
|
24
|
-
|
|
24
|
+
border: 1px solid var(--u-code-editor-border);
|
|
25
|
+
box-shadow: fn.use-var(shadow, emboss);
|
|
25
26
|
overflow: hidden;
|
|
26
|
-
transition: box-shadow 0.2s ease;
|
|
27
|
+
transition: border-color 0.2s ease, box-shadow 0.2s ease;
|
|
27
28
|
|
|
28
29
|
&:hover,
|
|
29
30
|
&:focus-within {
|
|
30
|
-
|
|
31
|
+
border-color: fn.use-var(color, primary);
|
|
31
32
|
}
|
|
32
33
|
|
|
33
34
|
.cm-editor {
|
|
@@ -106,12 +107,12 @@ $root-name: code-editor;
|
|
|
106
107
|
|
|
107
108
|
@include m.is(disabled) {
|
|
108
109
|
background-color: fn.use-var(color, disabled);
|
|
109
|
-
box-shadow:
|
|
110
|
+
box-shadow: none;
|
|
110
111
|
cursor: not-allowed;
|
|
111
112
|
|
|
112
113
|
&:hover,
|
|
113
114
|
&:focus-within {
|
|
114
|
-
|
|
115
|
+
border-color: var(--u-code-editor-border);
|
|
115
116
|
}
|
|
116
117
|
|
|
117
118
|
.cm-editor,
|
|
@@ -121,11 +122,9 @@ $root-name: code-editor;
|
|
|
121
122
|
}
|
|
122
123
|
|
|
123
124
|
@include m.is(readonly) {
|
|
124
|
-
box-shadow: inset 0 0 0 1px var(--u-code-editor-border);
|
|
125
|
-
|
|
126
125
|
&:hover,
|
|
127
126
|
&:focus-within {
|
|
128
|
-
|
|
127
|
+
border-color: var(--u-code-editor-border);
|
|
129
128
|
}
|
|
130
129
|
}
|
|
131
130
|
}
|
|
@@ -73,8 +73,10 @@ $header-padding-y: (
|
|
|
73
73
|
color $transition-fast,
|
|
74
74
|
background-color $transition-fast;
|
|
75
75
|
|
|
76
|
-
|
|
77
|
-
|
|
76
|
+
@include m.is-not(disabled) {
|
|
77
|
+
&:hover {
|
|
78
|
+
background-color: fn.use-var(bg-color, hover);
|
|
79
|
+
}
|
|
78
80
|
}
|
|
79
81
|
|
|
80
82
|
&:focus-visible {
|
|
@@ -158,7 +160,7 @@ $header-padding-y: (
|
|
|
158
160
|
|
|
159
161
|
// ===== Ghost(无边框):项级胶囊化,反馈完全由 item hover 承担 =====
|
|
160
162
|
// 嵌入卡片 / 对话框时使用,不引入额外的容器边界
|
|
161
|
-
|
|
163
|
+
@include m.is-not(bordered) {
|
|
162
164
|
background-color: transparent;
|
|
163
165
|
|
|
164
166
|
#{fn.bem($root-name, item)} {
|
|
@@ -169,8 +171,10 @@ $header-padding-y: (
|
|
|
169
171
|
margin-top: 4px;
|
|
170
172
|
}
|
|
171
173
|
|
|
172
|
-
|
|
173
|
-
|
|
174
|
+
@include m.is-not(disabled) {
|
|
175
|
+
&:hover {
|
|
176
|
+
background-color: fn.use-var(bg-color, hover);
|
|
177
|
+
}
|
|
174
178
|
}
|
|
175
179
|
}
|
|
176
180
|
|
|
@@ -178,8 +182,10 @@ $header-padding-y: (
|
|
|
178
182
|
#{fn.bem($root-name, header)} {
|
|
179
183
|
border-radius: inherit;
|
|
180
184
|
|
|
181
|
-
|
|
182
|
-
|
|
185
|
+
@include m.is-not(disabled) {
|
|
186
|
+
&:hover {
|
|
187
|
+
background-color: transparent;
|
|
188
|
+
}
|
|
183
189
|
}
|
|
184
190
|
}
|
|
185
191
|
}
|
|
@@ -11,6 +11,8 @@ $root-name: context-menu;
|
|
|
11
11
|
box-shadow: fn.use-var(shadow);
|
|
12
12
|
border-radius: fn.use-var(radius, default);
|
|
13
13
|
padding: fn.use-var(gap, small);
|
|
14
|
+
backdrop-filter: fn.use-var(bg-filter);
|
|
15
|
+
-webkit-backdrop-filter: fn.use-var(bg-filter);
|
|
14
16
|
|
|
15
17
|
@include m.e(label) {
|
|
16
18
|
margin-left: fn.use-var(gap, small);
|
|
@@ -31,8 +33,10 @@ $root-name: context-menu;
|
|
|
31
33
|
border-radius: fn.use-var(radius, default);
|
|
32
34
|
@include m.flex;
|
|
33
35
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
+
@include m.is-not(disabled, loading) {
|
|
37
|
+
&:hover {
|
|
38
|
+
background-color: fn.use-var(color, primary, light-9);
|
|
39
|
+
}
|
|
36
40
|
}
|
|
37
41
|
|
|
38
42
|
@include m.is(disabled, loading) {
|
|
@@ -9,8 +9,9 @@ $root-name: date-range-picker;
|
|
|
9
9
|
width: 100%;
|
|
10
10
|
vertical-align: middle;
|
|
11
11
|
line-height: 1;
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
border: fn.use-var(border);
|
|
13
|
+
box-shadow: fn.use-var(shadow, emboss);
|
|
14
|
+
transition: border-color 0.25s ease, box-shadow 0.25s ease;
|
|
14
15
|
overflow: hidden;
|
|
15
16
|
|
|
16
17
|
@include m.flex($display: inline-flex);
|
|
@@ -26,8 +27,7 @@ $root-name: date-range-picker;
|
|
|
26
27
|
}
|
|
27
28
|
|
|
28
29
|
&:hover {
|
|
29
|
-
|
|
30
|
-
box-shadow: inset 0 0 0px 1px fn.use-var(color, primary);
|
|
30
|
+
border-color: fn.use-var(color, primary);
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
@include m.e(input) {
|
|
@@ -71,7 +71,7 @@ $root-name: date-range-picker;
|
|
|
71
71
|
|
|
72
72
|
@include m.is(disabled) {
|
|
73
73
|
background-color: fn.use-var(color, disabled);
|
|
74
|
-
box-shadow:
|
|
74
|
+
box-shadow: none;
|
|
75
75
|
|
|
76
76
|
@include m.bem($root-name, input) {
|
|
77
77
|
cursor: not-allowed;
|
|
@@ -40,7 +40,8 @@ $root-name: dialog;
|
|
|
40
40
|
flex-shrink: 0;
|
|
41
41
|
overflow: hidden;
|
|
42
42
|
background-color: fn.use-var(bg-color, middle);
|
|
43
|
-
|
|
43
|
+
backdrop-filter: fn.use-var(bg-filter);
|
|
44
|
+
-webkit-backdrop-filter: fn.use-var(bg-filter);
|
|
44
45
|
}
|
|
45
46
|
|
|
46
47
|
// 弹框头
|
|
@@ -24,7 +24,8 @@ $direction-map: (
|
|
|
24
24
|
position: absolute;
|
|
25
25
|
border-radius: fn.use-var(radius, large);
|
|
26
26
|
background-color: fn.use-var(bg-color, top);
|
|
27
|
-
backdrop-filter:
|
|
27
|
+
backdrop-filter: fn.use-var(bg-filter);
|
|
28
|
+
-webkit-backdrop-filter: fn.use-var(bg-filter);
|
|
28
29
|
box-shadow: 0 0 10px 2px fn.use-var(shadow, color);
|
|
29
30
|
|
|
30
31
|
@include m.e(close) {
|
|
@@ -12,13 +12,15 @@ $root-name: expression-editor;
|
|
|
12
12
|
border-color: fn.use-var(border, color);
|
|
13
13
|
border-radius: fn.use-var(radius, default);
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
@include m.is-not(disabled, readonly) {
|
|
16
|
+
&:hover {
|
|
17
|
+
border-color: fn.use-var(color, primary);
|
|
18
|
+
}
|
|
18
19
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
&:focus-within {
|
|
21
|
+
border-color: fn.use-var(color, primary);
|
|
22
|
+
outline: none;
|
|
23
|
+
}
|
|
22
24
|
}
|
|
23
25
|
|
|
24
26
|
@include m.is('disabled') {
|