@veltra/desktop 1.1.2 → 1.1.3

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.
Files changed (123) hide show
  1. package/dist/components/action/action-group.vue.d.ts +3 -3
  2. package/dist/components/action/action.vue.d.ts +2 -2
  3. package/dist/components/auto-complete/auto-complete.js +1 -2
  4. package/dist/components/auto-complete/auto-complete.js.map +1 -1
  5. package/dist/components/auto-complete/auto-complete.vue.d.ts +2 -2
  6. package/dist/components/cascade/cascade.js +1 -2
  7. package/dist/components/cascade/cascade.js.map +1 -1
  8. package/dist/components/cascade/cascade.vue.d.ts +5 -5
  9. package/dist/components/checkbox/checkbox-button.js +1 -2
  10. package/dist/components/checkbox/checkbox-button.js.map +1 -1
  11. package/dist/components/checkbox/checkbox.js +1 -2
  12. package/dist/components/checkbox/checkbox.js.map +1 -1
  13. package/dist/components/checkbox-group/checkbox-group.js +1 -2
  14. package/dist/components/checkbox-group/checkbox-group.js.map +1 -1
  15. package/dist/components/code-editor/code-editor.js +1 -2
  16. package/dist/components/code-editor/code-editor.js.map +1 -1
  17. package/dist/components/date-panel/date-panel.vue.d.ts +1 -1
  18. package/dist/components/date-picker/date-picker.js +1 -2
  19. package/dist/components/date-picker/date-picker.js.map +1 -1
  20. package/dist/components/date-picker/date-picker.vue.d.ts +2 -2
  21. package/dist/components/date-range-picker/date-range-picker.js +1 -2
  22. package/dist/components/date-range-picker/date-range-picker.js.map +1 -1
  23. package/dist/components/date-range-picker/date-range-picker.vue.d.ts +2 -2
  24. package/dist/components/dialog/style2.css +1 -1
  25. package/dist/components/expression-editor/expression-editor.js +1 -2
  26. package/dist/components/expression-editor/expression-editor.js.map +1 -1
  27. package/dist/components/form/form.js.map +1 -1
  28. package/dist/components/form/form.vue_vue_type_script_setup_true_lang.js +1 -2
  29. package/dist/components/form/form.vue_vue_type_script_setup_true_lang.js.map +1 -1
  30. package/dist/components/form-item/form-item.js.map +1 -1
  31. package/dist/components/form-item/form-item.vue_vue_type_script_setup_true_lang.js +1 -2
  32. package/dist/components/form-item/form-item.vue_vue_type_script_setup_true_lang.js.map +1 -1
  33. package/dist/components/group-input/group-input.js +1 -2
  34. package/dist/components/group-input/group-input.js.map +1 -1
  35. package/dist/components/input/input.js.map +1 -1
  36. package/dist/components/input/input.vue.d.ts +4 -4
  37. package/dist/components/input/input.vue_vue_type_script_setup_true_lang.js +1 -2
  38. package/dist/components/input/input.vue_vue_type_script_setup_true_lang.js.map +1 -1
  39. package/dist/components/multi-select/multi-select.js +1 -2
  40. package/dist/components/multi-select/multi-select.js.map +1 -1
  41. package/dist/components/multi-select/multi-select.vue.d.ts +4 -4
  42. package/dist/components/multi-tree-select/multi-tree-select.js +1 -2
  43. package/dist/components/multi-tree-select/multi-tree-select.js.map +1 -1
  44. package/dist/components/multi-tree-select/multi-tree-select.vue.d.ts +6 -6
  45. package/dist/components/notification/notification.vue.d.ts +1 -1
  46. package/dist/components/number/number.vue.d.ts +1 -1
  47. package/dist/components/number-input/number-input.js +1 -2
  48. package/dist/components/number-input/number-input.js.map +1 -1
  49. package/dist/components/number-input/number-input.vue.d.ts +4 -4
  50. package/dist/components/number-range-input/number-range-input.js +1 -2
  51. package/dist/components/number-range-input/number-range-input.js.map +1 -1
  52. package/dist/components/number-range-input/number-range-input.vue.d.ts +1 -1
  53. package/dist/components/palette/palette.js +1 -2
  54. package/dist/components/palette/palette.js.map +1 -1
  55. package/dist/components/password-input/password-input.js +1 -2
  56. package/dist/components/password-input/password-input.js.map +1 -1
  57. package/dist/components/password-input/password-input.vue.d.ts +1 -1
  58. package/dist/components/pop-confirm/pop-confirm.js +1 -2
  59. package/dist/components/pop-confirm/pop-confirm.js.map +1 -1
  60. package/dist/components/pop-confirm/pop-confirm.vue.d.ts +2 -2
  61. package/dist/components/radio/radio.js +1 -2
  62. package/dist/components/radio/radio.js.map +1 -1
  63. package/dist/components/radio-group/radio-group.js +1 -2
  64. package/dist/components/radio-group/radio-group.js.map +1 -1
  65. package/dist/components/rich-text-editor/rich-text-editor.js +1 -2
  66. package/dist/components/rich-text-editor/rich-text-editor.js.map +1 -1
  67. package/dist/components/rich-text-editor/rich-text-editor.vue.d.ts +1 -1
  68. package/dist/components/select/select.js +1 -2
  69. package/dist/components/select/select.js.map +1 -1
  70. package/dist/components/select/select.vue.d.ts +2 -2
  71. package/dist/components/slider/slider.js +1 -2
  72. package/dist/components/slider/slider.js.map +1 -1
  73. package/dist/components/switch/switch.js +1 -2
  74. package/dist/components/switch/switch.js.map +1 -1
  75. package/dist/components/tabs/tabs-horizontal.vue.d.ts +3 -3
  76. package/dist/components/tabs/tabs-vertical.vue.d.ts +3 -3
  77. package/dist/components/tabs/tabs.vue.d.ts +3 -3
  78. package/dist/components/tag/tag.js +1 -2
  79. package/dist/components/tag/tag.js.map +1 -1
  80. package/dist/components/textarea/textarea.js +1 -2
  81. package/dist/components/textarea/textarea.js.map +1 -1
  82. package/dist/components/textarea/textarea.vue.d.ts +4 -4
  83. package/dist/components/tip/tip.vue.d.ts +1 -1
  84. package/dist/components/tree/tree.js +1 -2
  85. package/dist/components/tree/tree.js.map +1 -1
  86. package/dist/components/tree-select/tree-select.js +1 -2
  87. package/dist/components/tree-select/tree-select.js.map +1 -1
  88. package/dist/components/tree-select/tree-select.vue.d.ts +6 -6
  89. package/package.json +11 -11
  90. package/src/components/auto-complete/auto-complete.vue +1 -1
  91. package/src/components/cascade/cascade.vue +1 -1
  92. package/src/components/checkbox/checkbox-button.vue +1 -1
  93. package/src/components/checkbox/checkbox.vue +1 -1
  94. package/src/components/checkbox-group/checkbox-group.vue +1 -1
  95. package/src/components/code-editor/code-editor.vue +1 -1
  96. package/src/components/date-picker/date-picker.vue +1 -1
  97. package/src/components/date-range-picker/date-range-picker.vue +1 -1
  98. package/src/components/dialog/style.scss +1 -1
  99. package/src/components/expression-editor/expression-editor.vue +1 -1
  100. package/src/components/form/form.vue +1 -1
  101. package/src/components/form-item/form-item.vue +1 -1
  102. package/src/components/group-input/group-input.vue +1 -1
  103. package/src/components/input/input.vue +1 -1
  104. package/src/components/multi-select/multi-select.vue +1 -1
  105. package/src/components/multi-tree-select/multi-tree-select.vue +1 -1
  106. package/src/components/number-input/number-input.vue +1 -1
  107. package/src/components/number-range-input/number-range-input.vue +1 -1
  108. package/src/components/palette/palette.vue +1 -1
  109. package/src/components/password-input/password-input.vue +1 -1
  110. package/src/components/pop-confirm/pop-confirm.vue +1 -1
  111. package/src/components/radio/radio.vue +1 -1
  112. package/src/components/radio-group/radio-group.vue +1 -1
  113. package/src/components/rich-text-editor/rich-text-editor.vue +1 -1
  114. package/src/components/select/select.vue +1 -1
  115. package/src/components/slider/slider.vue +1 -1
  116. package/src/components/switch/switch.vue +1 -1
  117. package/src/components/tag/tag.vue +1 -1
  118. package/src/components/textarea/textarea.vue +1 -1
  119. package/src/components/tree/tree.vue +1 -1
  120. package/src/components/tree-select/tree-select.vue +1 -1
  121. package/dist/utils/form-context.js +0 -17
  122. package/dist/utils/form-context.js.map +0 -1
  123. package/src/utils/form-context.ts +0 -24
@@ -16,12 +16,12 @@ type __VLS_Slots = {
16
16
  default?: () => VNode[];
17
17
  };
18
18
  declare const __VLS_base: _$vue.DefineComponent<_Props, {}, {}, {}, {}, _$vue.ComponentOptionsMixin, _$vue.ComponentOptionsMixin, {}, string, _$vue.PublicProps, Readonly<_Props> & Readonly<{}>, {
19
- size: "small" | "default" | "large";
20
19
  type: ColorType;
20
+ max: number;
21
+ size: "small" | "default" | "large";
22
+ text: boolean;
21
23
  hover: boolean;
22
24
  circle: boolean;
23
- text: boolean;
24
- max: number;
25
25
  loading: boolean;
26
26
  }, {}, {}, {}, string, _$vue.ComponentProvideOptions, false, {}, any>;
27
27
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
@@ -15,10 +15,10 @@ declare const __VLS_base: _$vue.DefineComponent<ActionProps, {}, {}, {}, {}, _$v
15
15
  }, string, _$vue.PublicProps, Readonly<ActionProps> & Readonly<{
16
16
  onRun?: (() => any) | undefined;
17
17
  }>, {
18
- size: _$_veltra_utils0.ComponentSize;
19
18
  type: ButtonType;
20
- circle: boolean;
19
+ size: _$_veltra_utils0.ComponentSize;
21
20
  text: boolean;
21
+ circle: boolean;
22
22
  loading: boolean;
23
23
  inDropdown: boolean;
24
24
  }, {}, {}, {}, string, _$vue.ComponentProvideOptions, false, {}, any>;
@@ -1,11 +1,10 @@
1
1
  import _sfc_main$1 from "../scroll/scroll.js";
2
- import { injectFormContext } from "../../utils/form-context.js";
3
2
  import _sfc_main$2 from "../dropdown/dropdown.js";
4
3
  import input_default from "../input/input.js";
5
4
  import { useKeyboard } from "./use-keyboard.js";
6
5
  import { useSuggestions } from "./use-suggestions.js";
7
6
  import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createSlots, createTextVNode, createVNode, defineComponent, guardReactiveProps, mergeModels, mergeProps, normalizeClass, normalizeProps, openBlock, renderList, renderSlot, shallowRef, toDisplayString, unref, useModel, useSlots, watch, withCtx, withDirectives } from "vue";
8
- import { FORM_EMPTY_CONTENT, bem, scrollIntoContainerView } from "@veltra/utils";
7
+ import { FORM_EMPTY_CONTENT, bem, injectFormContext, scrollIntoContainerView } from "@veltra/utils";
9
8
  import { useFormFallbackProps } from "@veltra/compositions";
10
9
  import { vRipple } from "@veltra/directives";
11
10
  //#region src/components/auto-complete/auto-complete.vue
@@ -1 +1 @@
1
- {"version":3,"file":"auto-complete.js","names":[],"sources":["../../../src/components/auto-complete/auto-complete.vue"],"sourcesContent":["<template>\n <u-dropdown\n v-if=\"!readonly\"\n trigger=\"click\"\n :class=\"[cls.b, cls.m(size), bem.is('disabled', disabled)]\"\n ref=\"dropdownRef\"\n v-model:visible=\"dropdownVisible\"\n :content-class=\"[cls.e('panel'), cls.em('panel', size)]\"\n :disabled=\"disabled\"\n >\n <!-- 触发 -->\n <template #trigger>\n <!-- 单选 -->\n <u-input\n :size=\"size\"\n :disabled=\"disabled\"\n :placeholder=\"placeholder\"\n :clearable=\"clearable\"\n v-model=\"model\"\n @keydown=\"handleInputKeydown\"\n >\n <template #suffix v-if=\"slots.suffix\">\n <slot name=\"suffix\" />\n </template>\n\n <template #prefix v-if=\"slots.prefix\">\n <slot name=\"prefix\" />\n </template>\n </u-input>\n </template>\n\n <!-- 下拉内容 -->\n <template #content>\n <u-scroll tag=\"ul\" :class=\"cls.e('options')\" ref=\"scrollRef\">\n <li\n v-if=\"cachedSuggestion\"\n :class=\"[optionClass, bem.is('active', isCachedActive)]\"\n @click=\"handleSelectCachedOption(cachedSuggestion)\"\n v-ripple=\"cls.e('ripple')\"\n :data-key=\"cachedSuggestion\"\n :key=\"cachedSuggestion\"\n >\n <slot v-bind=\"{ option: cachedSuggestion, index: -1 }\">\n {{ cachedSuggestion }}\n </slot>\n </li>\n\n <li\n v-for=\"(option, index) of suggestions\"\n :class=\"[\n optionClass,\n bem.is('selected', option === model),\n bem.is('active', isActiveOption(index))\n ]\"\n @click=\"handleSelect(option)\"\n v-ripple=\"cls.e('ripple')\"\n :data-key=\"option\"\n :key=\"option\"\n >\n <slot v-bind=\"{ option, index }\">\n {{ option }}\n </slot>\n </li>\n </u-scroll>\n </template>\n </u-dropdown>\n\n <template v-else>\n {{ model || FORM_EMPTY_CONTENT }}\n </template>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFormFallbackProps } from '@veltra/compositions'\nimport { vRipple } from '@veltra/directives'\nimport { bem, FORM_EMPTY_CONTENT, scrollIntoContainerView } from '@veltra/utils'\nimport { computed, shallowRef, watch } from 'vue'\n\nimport type { AutoCompleteEmits, AutoCompleteProps, _AutoCompleteExposed } from '../../types'\nimport type { DropdownExposed, ScrollExposed } from '../../types'\nimport { injectFormContext } from '../../utils/form-context'\nimport { UDropdown } from '../dropdown'\nimport { UInput } from '../input'\nimport { UScroll } from '../scroll'\nimport { useKeyboard } from './use-keyboard'\nimport { useSuggestions } from './use-suggestions'\n\ndefineOptions({ name: 'AutoComplete', inheritAttrs: false })\n\nconst props = withDefaults(defineProps<AutoCompleteProps>(), {\n placeholder: '请输入',\n clearable: true,\n disabled: undefined,\n readonly: undefined\n})\n\nconst emit = defineEmits<AutoCompleteEmits>()\n\nconst slots = defineSlots<{\n default?: (props: { option: string; index: number }) => any\n suffix?: () => any\n prefix?: () => any\n}>()\n\n// 当前输入框的值\nconst model = defineModel<string>()\n\nconst cls = bem('auto-complete')\n\nconst optionClass = cls.e('option')\n\nconst { formProps } = injectFormContext()\nconst { size, disabled, readonly } = useFormFallbackProps([formProps ?? {}, props], {\n size: 'default',\n disabled: false,\n readonly: false\n})\n\nconst dropdownRef = shallowRef<DropdownExposed>()\nconst dropdownVisible = shallowRef(false)\nconst scrollRef = shallowRef<ScrollExposed>()\n\nwatch(scrollRef, (scroll) => {\n if (scroll && model.value !== undefined) {\n const li = scroll.contentRef!.querySelector(`li[data-key=\"${model.value}\"]`) as HTMLElement\n li && scrollIntoContainerView(li, scroll.containerRef ?? null)\n }\n})\n\nconst { suggestions, appendedSuggestions, cachedSuggestion } = useSuggestions({ props, model })\n\nconst keyboardOptions = computed(() => {\n const currentSuggestions = suggestions.value\n return cachedSuggestion.value\n ? [cachedSuggestion.value, ...currentSuggestions]\n : currentSuggestions\n})\n\nconst { point, handleKeydown } = useKeyboard({\n options: keyboardOptions,\n dropdownVisible,\n getDefaultIndex: (options) => {\n if (!options.length) return -1\n if (model.value) {\n const matchIndex = options.indexOf(model.value)\n if (matchIndex > -1) return matchIndex\n }\n return 0\n },\n onSelect: (option, index) => {\n if (cachedSuggestion.value && index === 0) {\n handleSelectCachedOption(option)\n return\n }\n handleSelect(option)\n }\n})\n\nconst isCachedActive = computed(() => !!cachedSuggestion.value && point.value === 0)\n\nconst isActiveOption = (index: number) => {\n const offset = cachedSuggestion.value ? 1 : 0\n return point.value === index + offset\n}\n\nconst handleInputKeydown = (event: KeyboardEvent) => {\n if (!dropdownVisible.value && event.key === 'Enter' && cachedSuggestion.value) {\n event.preventDefault()\n event.stopPropagation()\n handleSelectCachedOption(cachedSuggestion.value)\n return\n }\n handleKeydown(event)\n}\n\nwatch([point, keyboardOptions], ([currentPoint, options]) => {\n if (!scrollRef.value || currentPoint < 0) return\n const currentOption = options[currentPoint]\n if (!currentOption) return\n const target = scrollRef.value.contentRef?.querySelector(\n `li[data-key=\"${currentOption}\"]`\n ) as HTMLElement | null\n if (target) {\n scrollIntoContainerView(target, scrollRef.value.containerRef ?? null)\n }\n})\n\n/** 选中选项 */\nconst handleSelect = (option: string) => {\n model.value = option\n dropdownRef.value?.close()\n saveCache()\n emit('select', option)\n}\n\nfunction saveCache() {\n if (!model.value) return\n appendedSuggestions.value = [...appendedSuggestions.value, model.value]\n}\n\nconst handleSelectCachedOption = (cachedOption: string) => {\n appendedSuggestions.value = [...appendedSuggestions.value, cachedOption]\n dropdownRef.value?.close()\n}\n</script>\n"],"mappings":"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"}
1
+ {"version":3,"file":"auto-complete.js","names":[],"sources":["../../../src/components/auto-complete/auto-complete.vue"],"sourcesContent":["<template>\n <u-dropdown\n v-if=\"!readonly\"\n trigger=\"click\"\n :class=\"[cls.b, cls.m(size), bem.is('disabled', disabled)]\"\n ref=\"dropdownRef\"\n v-model:visible=\"dropdownVisible\"\n :content-class=\"[cls.e('panel'), cls.em('panel', size)]\"\n :disabled=\"disabled\"\n >\n <!-- 触发 -->\n <template #trigger>\n <!-- 单选 -->\n <u-input\n :size=\"size\"\n :disabled=\"disabled\"\n :placeholder=\"placeholder\"\n :clearable=\"clearable\"\n v-model=\"model\"\n @keydown=\"handleInputKeydown\"\n >\n <template #suffix v-if=\"slots.suffix\">\n <slot name=\"suffix\" />\n </template>\n\n <template #prefix v-if=\"slots.prefix\">\n <slot name=\"prefix\" />\n </template>\n </u-input>\n </template>\n\n <!-- 下拉内容 -->\n <template #content>\n <u-scroll tag=\"ul\" :class=\"cls.e('options')\" ref=\"scrollRef\">\n <li\n v-if=\"cachedSuggestion\"\n :class=\"[optionClass, bem.is('active', isCachedActive)]\"\n @click=\"handleSelectCachedOption(cachedSuggestion)\"\n v-ripple=\"cls.e('ripple')\"\n :data-key=\"cachedSuggestion\"\n :key=\"cachedSuggestion\"\n >\n <slot v-bind=\"{ option: cachedSuggestion, index: -1 }\">\n {{ cachedSuggestion }}\n </slot>\n </li>\n\n <li\n v-for=\"(option, index) of suggestions\"\n :class=\"[\n optionClass,\n bem.is('selected', option === model),\n bem.is('active', isActiveOption(index))\n ]\"\n @click=\"handleSelect(option)\"\n v-ripple=\"cls.e('ripple')\"\n :data-key=\"option\"\n :key=\"option\"\n >\n <slot v-bind=\"{ option, index }\">\n {{ option }}\n </slot>\n </li>\n </u-scroll>\n </template>\n </u-dropdown>\n\n <template v-else>\n {{ model || FORM_EMPTY_CONTENT }}\n </template>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFormFallbackProps } from '@veltra/compositions'\nimport { vRipple } from '@veltra/directives'\nimport { bem, FORM_EMPTY_CONTENT, scrollIntoContainerView } from '@veltra/utils'\nimport { injectFormContext } from '@veltra/utils'\nimport { computed, shallowRef, watch } from 'vue'\n\nimport type { AutoCompleteEmits, AutoCompleteProps, _AutoCompleteExposed } from '../../types'\nimport type { DropdownExposed, ScrollExposed } from '../../types'\nimport { UDropdown } from '../dropdown'\nimport { UInput } from '../input'\nimport { UScroll } from '../scroll'\nimport { useKeyboard } from './use-keyboard'\nimport { useSuggestions } from './use-suggestions'\n\ndefineOptions({ name: 'AutoComplete', inheritAttrs: false })\n\nconst props = withDefaults(defineProps<AutoCompleteProps>(), {\n placeholder: '请输入',\n clearable: true,\n disabled: undefined,\n readonly: undefined\n})\n\nconst emit = defineEmits<AutoCompleteEmits>()\n\nconst slots = defineSlots<{\n default?: (props: { option: string; index: number }) => any\n suffix?: () => any\n prefix?: () => any\n}>()\n\n// 当前输入框的值\nconst model = defineModel<string>()\n\nconst cls = bem('auto-complete')\n\nconst optionClass = cls.e('option')\n\nconst { formProps } = injectFormContext()\nconst { size, disabled, readonly } = useFormFallbackProps([formProps ?? {}, props], {\n size: 'default',\n disabled: false,\n readonly: false\n})\n\nconst dropdownRef = shallowRef<DropdownExposed>()\nconst dropdownVisible = shallowRef(false)\nconst scrollRef = shallowRef<ScrollExposed>()\n\nwatch(scrollRef, (scroll) => {\n if (scroll && model.value !== undefined) {\n const li = scroll.contentRef!.querySelector(`li[data-key=\"${model.value}\"]`) as HTMLElement\n li && scrollIntoContainerView(li, scroll.containerRef ?? null)\n }\n})\n\nconst { suggestions, appendedSuggestions, cachedSuggestion } = useSuggestions({ props, model })\n\nconst keyboardOptions = computed(() => {\n const currentSuggestions = suggestions.value\n return cachedSuggestion.value\n ? [cachedSuggestion.value, ...currentSuggestions]\n : currentSuggestions\n})\n\nconst { point, handleKeydown } = useKeyboard({\n options: keyboardOptions,\n dropdownVisible,\n getDefaultIndex: (options) => {\n if (!options.length) return -1\n if (model.value) {\n const matchIndex = options.indexOf(model.value)\n if (matchIndex > -1) return matchIndex\n }\n return 0\n },\n onSelect: (option, index) => {\n if (cachedSuggestion.value && index === 0) {\n handleSelectCachedOption(option)\n return\n }\n handleSelect(option)\n }\n})\n\nconst isCachedActive = computed(() => !!cachedSuggestion.value && point.value === 0)\n\nconst isActiveOption = (index: number) => {\n const offset = cachedSuggestion.value ? 1 : 0\n return point.value === index + offset\n}\n\nconst handleInputKeydown = (event: KeyboardEvent) => {\n if (!dropdownVisible.value && event.key === 'Enter' && cachedSuggestion.value) {\n event.preventDefault()\n event.stopPropagation()\n handleSelectCachedOption(cachedSuggestion.value)\n return\n }\n handleKeydown(event)\n}\n\nwatch([point, keyboardOptions], ([currentPoint, options]) => {\n if (!scrollRef.value || currentPoint < 0) return\n const currentOption = options[currentPoint]\n if (!currentOption) return\n const target = scrollRef.value.contentRef?.querySelector(\n `li[data-key=\"${currentOption}\"]`\n ) as HTMLElement | null\n if (target) {\n scrollIntoContainerView(target, scrollRef.value.containerRef ?? null)\n }\n})\n\n/** 选中选项 */\nconst handleSelect = (option: string) => {\n model.value = option\n dropdownRef.value?.close()\n saveCache()\n emit('select', option)\n}\n\nfunction saveCache() {\n if (!model.value) return\n appendedSuggestions.value = [...appendedSuggestions.value, model.value]\n}\n\nconst handleSelectCachedOption = (cachedOption: string) => {\n appendedSuggestions.value = [...appendedSuggestions.value, cachedOption]\n dropdownRef.value?.close()\n}\n</script>\n"],"mappings":"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"}
@@ -24,10 +24,10 @@ declare const __VLS_base: _$vue.DefineComponent<__VLS_PublicProps, {}, {}, {}, {
24
24
  "onUpdate:modelValue"?: ((value: string) => any) | undefined;
25
25
  onSelect?: ((value: string) => any) | undefined;
26
26
  }>, {
27
+ clearable: boolean;
28
+ placeholder: string;
27
29
  disabled: boolean;
28
30
  readonly: boolean;
29
- placeholder: string;
30
- clearable: boolean;
31
31
  }, {}, {}, {}, string, _$vue.ComponentProvideOptions, false, {}, any>;
32
32
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
33
33
  declare const _default: typeof __VLS_export;
@@ -1,5 +1,4 @@
1
1
  import _sfc_main$1 from "../icon/icon.js";
2
- import { injectFormContext } from "../../utils/form-context.js";
3
2
  import _sfc_main$2 from "../empty/empty.js";
4
3
  import _sfc_main$3 from "../dropdown/dropdown.js";
5
4
  import input_default from "../input/input.js";
@@ -11,7 +10,7 @@ import { useCheck } from "./use-check.js";
11
10
  import { useDataMap } from "./use-data-map.js";
12
11
  import { useSelect } from "./use-select.js";
13
12
  import { Fragment, Transition, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, normalizeClass, openBlock, provide, renderList, shallowRef, toDisplayString, triggerRef, unref, vShow, watch, withCtx, withDirectives, withModifiers } from "vue";
14
- import { FORM_EMPTY_CONTENT, bem } from "@veltra/utils";
13
+ import { FORM_EMPTY_CONTENT, bem, injectFormContext } from "@veltra/utils";
15
14
  import { useFormFallbackProps, useUserAction } from "@veltra/compositions";
16
15
  import { Forest, o } from "@cat-kit/core";
17
16
  import { ArrowDown, Close, Search } from "@veltra/icons/normal";
@@ -1 +1 @@
1
- {"version":3,"file":"cascade.js","names":[],"sources":["../../../src/components/cascade/cascade.vue"],"sourcesContent":["<template>\n <u-dropdown\n v-if=\"!readonly\"\n :class=\"[cls.b, bem.is('disabled', disabled), bem.is('multiple', multiple), cls.m(size)]\"\n :content-class=\"[cls.e('panel'), cls.em('panel', size)]\"\n trigger=\"click\"\n ref=\"dropdownRef\"\n :disabled=\"disabled\"\n width=\"auto\"\n @mouseenter=\"hovered = true\"\n @mouseleave=\"hovered = false\"\n @update:visible=\"!$event && (qs = '')\"\n >\n <template #trigger>\n <!-- 单选展示 -->\n <u-input\n v-if=\"!multiple\"\n :size=\"size\"\n :disabled=\"disabled\"\n :placeholder=\"placeholder\"\n :clearable=\"clearable\"\n native-readonly\n :model-value=\"displayedValue\"\n @clear=\"handleClear\"\n >\n <template #suffix>\n <u-icon :class=\"cls.e('arrow')\"><ArrowDown /></u-icon>\n </template>\n </u-input>\n\n <!-- 多选展示 -->\n <template v-if=\"multiple\">\n <span :class=\"cls.e('placeholder')\" v-show=\"!modelValue?.length\">\n {{ placeholder }}\n </span>\n\n <div v-if=\"modelValue?.length\" :class=\"cls.e('tags')\">\n <u-tag\n v-for=\"tag of tags\"\n :key=\"tag.value\"\n :closable=\"!disabled\"\n @close=\"handleCloseTag(tag)\"\n >\n {{ tag.label }}\n </u-tag>\n <u-tag v-if=\"restTag\"> {{ restTag }}+ </u-tag>\n </div>\n\n <transition name=\"zoom-in\" mode=\"out-in\">\n <u-icon\n v-if=\"clearable && modelValue?.length && hovered && !disabled\"\n :class=\"cls.e('clear')\"\n @click.stop=\"handleClear\"\n >\n <Close />\n </u-icon>\n\n <u-icon :class=\"cls.e('arrow')\" v-else><ArrowDown /></u-icon>\n </transition>\n </template>\n </template>\n\n <template #content>\n <!-- 过滤 -->\n <div v-if=\"filterable\" :class=\"cls.e('panel-filter')\">\n <u-input placeholder=\"输入关键字进行过滤\" v-model=\"qs\" :size=\"size\" clearable>\n <template #suffix>\n <u-icon><Search /></u-icon>\n </template>\n </u-input>\n </div>\n\n <div :class=\"cls.e('content')\" v-if=\"panelItemList.length\">\n <UCascadePanelItem\n v-for=\"({ nodes, key }, index) of panelItemList\"\n :data=\"nodes\"\n :key=\"key\"\n :panel-index=\"index\"\n :value=\"selectedNodeKeys[index]\"\n @click=\"handleClick\"\n @check=\"handleCheck\"\n />\n </div>\n\n <div :class=\"cls.e('empty')\" v-else>\n <UEmpty />\n </div>\n </template>\n </u-dropdown>\n\n <!-- 只读 -->\n <template v-else>\n <div :class=\"[cls.m(size)]\" v-if=\"multiple\">\n <div :class=\"cls.e('tags')\">\n <u-tag v-for=\"tag of tags\" :key=\"tag.value\">\n {{ tag.label }}\n </u-tag>\n </div>\n </div>\n <template v-else>\n {{ displayedValue || FORM_EMPTY_CONTENT }}\n </template>\n </template>\n</template>\n\n<script lang=\"ts\" setup>\nimport { Forest, o } from '@cat-kit/core'\nimport { useFormFallbackProps, useUserAction } from '@veltra/compositions'\nimport { ArrowDown, Close, Search } from '@veltra/icons/normal'\nimport { bem, FORM_EMPTY_CONTENT } from '@veltra/utils'\nimport { computed, provide, shallowRef, triggerRef, watch } from 'vue'\n\nimport type { CascadeProps, CascadeEmits, DropdownExposed } from '../../types'\nimport { injectFormContext } from '../../utils/form-context'\nimport { UDropdown } from '../dropdown'\nimport { UEmpty } from '../empty'\nimport { UIcon } from '../icon'\nimport { UInput } from '../input'\nimport { UTag } from '../tag'\nimport UCascadePanelItem from './cascade-panel-item.vue'\nimport { CascadeDIKey } from './di'\nimport { CascadeNode } from './node'\nimport { useCheck } from './use-check'\nimport { useDataMap } from './use-data-map'\nimport { useSelect } from './use-select'\n\ndefineOptions({\n name: 'Cascade'\n})\n\nconst props = withDefaults(defineProps<CascadeProps>(), {\n labelKey: 'label',\n valueKey: 'value',\n placeholder: '请选择',\n separator: '/',\n clearable: true,\n disabled: undefined,\n readonly: undefined,\n childrenKey: 'children',\n filterable: false,\n data: () => [],\n visibilityLimit: 3\n})\n\nconst emit = defineEmits<CascadeEmits>()\n\nconst cls = bem('cascade')\n\nconst { formProps } = injectFormContext()\n\nconst { size, disabled, readonly } = useFormFallbackProps([formProps ?? {}, props], {\n size: 'default',\n disabled: false,\n readonly: false\n})\n\nconst dropdownRef = shallowRef<DropdownExposed>()\n\nconst forest = computed(() => {\n return new Forest<Record<string, unknown>, any>({\n data: (props.data ?? []) as Record<string, unknown>[],\n childrenKey: props.childrenKey,\n createNode: (data, index, depth, _forest, parent) => {\n if (!data) {\n return new CascadeNode({\n data,\n index,\n depth,\n value: '',\n label: '',\n parent\n })\n }\n\n return new CascadeNode({\n data,\n index,\n depth,\n value: o(data).get(props.valueKey) ?? '',\n label: o(data).get(props.labelKey) ?? '',\n parent\n })\n }\n })\n})\n\nconst { dataMap } = useDataMap({ props, forest })\n\nconst { userAction, isUserActive } = useUserAction()\n\nconst {\n displayedValue,\n selectItem,\n updateSingleValue,\n panelItemList,\n getPanelItemList,\n createPanelItem,\n selectedNodeKeys\n} = useSelect({\n props,\n emit,\n dataMap,\n forest,\n isUserActive,\n dropdownRef\n})\n\nconst { hovered, tags, restTag, updateMultipleValue, handleCloseTag, checkItem, checkedSet } =\n useCheck({\n props,\n forest,\n getPanelItemList,\n emit,\n dataMap,\n isUserActive,\n disabled,\n readonly\n })\n\nconst commitSingleSelect = userAction((item: CascadeNode) => {\n if (!props.strict) {\n updateSingleValue()\n } else if (!item.children?.length) {\n updateSingleValue()\n }\n})\n\nfunction handleClick(panelIndex: number, item: CascadeNode) {\n selectItem(panelIndex, item)\n\n if (!props.multiple) {\n commitSingleSelect(item)\n }\n}\n\nconst handleCheck = userAction((item: CascadeNode, checked: boolean) => {\n checkItem(item, checked)\n})\n\nfunction handleClear() {\n if (props.multiple) {\n checkedSet.value.clear()\n triggerRef(checkedSet)\n updateMultipleValue()\n } else {\n selectedNodeKeys.value = []\n updateSingleValue()\n }\n\n emit('clear')\n}\n\n// 过滤\nconst qs = shallowRef<string>('')\n\nwatch([qs, forest], ([qs, forest]) => {\n const { filterable } = props\n if (!filterable || !qs) {\n forest.dfs((node) => {\n node.visible = true\n })\n getPanelItemList(forest.roots)\n return\n }\n\n const cache = new Set<CascadeNode>()\n\n forest.dfs((node) => {\n if (node.label?.toLowerCase().includes(qs.toLowerCase())) {\n node.visible = true\n let parent = node.parent\n while (parent && !cache.has(parent)) {\n parent.visible = true\n cache.add(parent)\n parent = parent.parent\n }\n } else {\n node.visible = false\n }\n })\n\n panelItemList.value = [createPanelItem(forest.roots)]\n})\n\nprovide(CascadeDIKey, {\n cls,\n size,\n disabled,\n readonly,\n cascadeProps: props,\n checkedSet\n})\n</script>\n"],"mappings":"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"}
1
+ {"version":3,"file":"cascade.js","names":[],"sources":["../../../src/components/cascade/cascade.vue"],"sourcesContent":["<template>\n <u-dropdown\n v-if=\"!readonly\"\n :class=\"[cls.b, bem.is('disabled', disabled), bem.is('multiple', multiple), cls.m(size)]\"\n :content-class=\"[cls.e('panel'), cls.em('panel', size)]\"\n trigger=\"click\"\n ref=\"dropdownRef\"\n :disabled=\"disabled\"\n width=\"auto\"\n @mouseenter=\"hovered = true\"\n @mouseleave=\"hovered = false\"\n @update:visible=\"!$event && (qs = '')\"\n >\n <template #trigger>\n <!-- 单选展示 -->\n <u-input\n v-if=\"!multiple\"\n :size=\"size\"\n :disabled=\"disabled\"\n :placeholder=\"placeholder\"\n :clearable=\"clearable\"\n native-readonly\n :model-value=\"displayedValue\"\n @clear=\"handleClear\"\n >\n <template #suffix>\n <u-icon :class=\"cls.e('arrow')\"><ArrowDown /></u-icon>\n </template>\n </u-input>\n\n <!-- 多选展示 -->\n <template v-if=\"multiple\">\n <span :class=\"cls.e('placeholder')\" v-show=\"!modelValue?.length\">\n {{ placeholder }}\n </span>\n\n <div v-if=\"modelValue?.length\" :class=\"cls.e('tags')\">\n <u-tag\n v-for=\"tag of tags\"\n :key=\"tag.value\"\n :closable=\"!disabled\"\n @close=\"handleCloseTag(tag)\"\n >\n {{ tag.label }}\n </u-tag>\n <u-tag v-if=\"restTag\"> {{ restTag }}+ </u-tag>\n </div>\n\n <transition name=\"zoom-in\" mode=\"out-in\">\n <u-icon\n v-if=\"clearable && modelValue?.length && hovered && !disabled\"\n :class=\"cls.e('clear')\"\n @click.stop=\"handleClear\"\n >\n <Close />\n </u-icon>\n\n <u-icon :class=\"cls.e('arrow')\" v-else><ArrowDown /></u-icon>\n </transition>\n </template>\n </template>\n\n <template #content>\n <!-- 过滤 -->\n <div v-if=\"filterable\" :class=\"cls.e('panel-filter')\">\n <u-input placeholder=\"输入关键字进行过滤\" v-model=\"qs\" :size=\"size\" clearable>\n <template #suffix>\n <u-icon><Search /></u-icon>\n </template>\n </u-input>\n </div>\n\n <div :class=\"cls.e('content')\" v-if=\"panelItemList.length\">\n <UCascadePanelItem\n v-for=\"({ nodes, key }, index) of panelItemList\"\n :data=\"nodes\"\n :key=\"key\"\n :panel-index=\"index\"\n :value=\"selectedNodeKeys[index]\"\n @click=\"handleClick\"\n @check=\"handleCheck\"\n />\n </div>\n\n <div :class=\"cls.e('empty')\" v-else>\n <UEmpty />\n </div>\n </template>\n </u-dropdown>\n\n <!-- 只读 -->\n <template v-else>\n <div :class=\"[cls.m(size)]\" v-if=\"multiple\">\n <div :class=\"cls.e('tags')\">\n <u-tag v-for=\"tag of tags\" :key=\"tag.value\">\n {{ tag.label }}\n </u-tag>\n </div>\n </div>\n <template v-else>\n {{ displayedValue || FORM_EMPTY_CONTENT }}\n </template>\n </template>\n</template>\n\n<script lang=\"ts\" setup>\nimport { Forest, o } from '@cat-kit/core'\nimport { useFormFallbackProps, useUserAction } from '@veltra/compositions'\nimport { ArrowDown, Close, Search } from '@veltra/icons/normal'\nimport { bem, FORM_EMPTY_CONTENT } from '@veltra/utils'\nimport { injectFormContext } from '@veltra/utils'\nimport { computed, provide, shallowRef, triggerRef, watch } from 'vue'\n\nimport type { CascadeProps, CascadeEmits, DropdownExposed } from '../../types'\nimport { UDropdown } from '../dropdown'\nimport { UEmpty } from '../empty'\nimport { UIcon } from '../icon'\nimport { UInput } from '../input'\nimport { UTag } from '../tag'\nimport UCascadePanelItem from './cascade-panel-item.vue'\nimport { CascadeDIKey } from './di'\nimport { CascadeNode } from './node'\nimport { useCheck } from './use-check'\nimport { useDataMap } from './use-data-map'\nimport { useSelect } from './use-select'\n\ndefineOptions({\n name: 'Cascade'\n})\n\nconst props = withDefaults(defineProps<CascadeProps>(), {\n labelKey: 'label',\n valueKey: 'value',\n placeholder: '请选择',\n separator: '/',\n clearable: true,\n disabled: undefined,\n readonly: undefined,\n childrenKey: 'children',\n filterable: false,\n data: () => [],\n visibilityLimit: 3\n})\n\nconst emit = defineEmits<CascadeEmits>()\n\nconst cls = bem('cascade')\n\nconst { formProps } = injectFormContext()\n\nconst { size, disabled, readonly } = useFormFallbackProps([formProps ?? {}, props], {\n size: 'default',\n disabled: false,\n readonly: false\n})\n\nconst dropdownRef = shallowRef<DropdownExposed>()\n\nconst forest = computed(() => {\n return new Forest<Record<string, unknown>, any>({\n data: (props.data ?? []) as Record<string, unknown>[],\n childrenKey: props.childrenKey,\n createNode: (data, index, depth, _forest, parent) => {\n if (!data) {\n return new CascadeNode({\n data,\n index,\n depth,\n value: '',\n label: '',\n parent\n })\n }\n\n return new CascadeNode({\n data,\n index,\n depth,\n value: o(data).get(props.valueKey) ?? '',\n label: o(data).get(props.labelKey) ?? '',\n parent\n })\n }\n })\n})\n\nconst { dataMap } = useDataMap({ props, forest })\n\nconst { userAction, isUserActive } = useUserAction()\n\nconst {\n displayedValue,\n selectItem,\n updateSingleValue,\n panelItemList,\n getPanelItemList,\n createPanelItem,\n selectedNodeKeys\n} = useSelect({\n props,\n emit,\n dataMap,\n forest,\n isUserActive,\n dropdownRef\n})\n\nconst { hovered, tags, restTag, updateMultipleValue, handleCloseTag, checkItem, checkedSet } =\n useCheck({\n props,\n forest,\n getPanelItemList,\n emit,\n dataMap,\n isUserActive,\n disabled,\n readonly\n })\n\nconst commitSingleSelect = userAction((item: CascadeNode) => {\n if (!props.strict) {\n updateSingleValue()\n } else if (!item.children?.length) {\n updateSingleValue()\n }\n})\n\nfunction handleClick(panelIndex: number, item: CascadeNode) {\n selectItem(panelIndex, item)\n\n if (!props.multiple) {\n commitSingleSelect(item)\n }\n}\n\nconst handleCheck = userAction((item: CascadeNode, checked: boolean) => {\n checkItem(item, checked)\n})\n\nfunction handleClear() {\n if (props.multiple) {\n checkedSet.value.clear()\n triggerRef(checkedSet)\n updateMultipleValue()\n } else {\n selectedNodeKeys.value = []\n updateSingleValue()\n }\n\n emit('clear')\n}\n\n// 过滤\nconst qs = shallowRef<string>('')\n\nwatch([qs, forest], ([qs, forest]) => {\n const { filterable } = props\n if (!filterable || !qs) {\n forest.dfs((node) => {\n node.visible = true\n })\n getPanelItemList(forest.roots)\n return\n }\n\n const cache = new Set<CascadeNode>()\n\n forest.dfs((node) => {\n if (node.label?.toLowerCase().includes(qs.toLowerCase())) {\n node.visible = true\n let parent = node.parent\n while (parent && !cache.has(parent)) {\n parent.visible = true\n cache.add(parent)\n parent = parent.parent\n }\n } else {\n node.visible = false\n }\n })\n\n panelItemList.value = [createPanelItem(forest.roots)]\n})\n\nprovide(CascadeDIKey, {\n cls,\n size,\n disabled,\n readonly,\n cascadeProps: props,\n checkedSet\n})\n</script>\n"],"mappings":"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"}
@@ -4,23 +4,23 @@ import * as _$vue from "vue";
4
4
  //#region src/components/cascade/cascade.vue.d.ts
5
5
  declare const __VLS_export: _$vue.DefineComponent<CascadeProps, {}, {}, {}, {}, _$vue.ComponentOptionsMixin, _$vue.ComponentOptionsMixin, {} & {
6
6
  "update:modelValue": (value?: string | string[] | undefined) => any;
7
- clear: () => any;
8
7
  change: (...args: [value?: string | undefined, label?: string | undefined, item?: Record<string, any> | undefined] | [value: string[], label: string[], data: Record<string, any>[]]) => any;
8
+ clear: () => any;
9
9
  }, string, _$vue.PublicProps, Readonly<CascadeProps> & Readonly<{
10
10
  "onUpdate:modelValue"?: ((value?: string | string[] | undefined) => any) | undefined;
11
- onClear?: (() => any) | undefined;
12
11
  onChange?: ((...args: [value?: string | undefined, label?: string | undefined, item?: Record<string, any> | undefined] | [value: string[], label: string[], data: Record<string, any>[]]) => any) | undefined;
12
+ onClear?: (() => any) | undefined;
13
13
  }>, {
14
14
  labelKey: string;
15
15
  valueKey: string;
16
16
  childrenKey: string;
17
17
  data: Record<string, any>[];
18
- disabled: boolean;
19
- readonly: boolean;
20
- placeholder: string;
21
18
  clearable: boolean;
19
+ placeholder: string;
22
20
  filterable: boolean;
23
21
  visibilityLimit: number;
22
+ disabled: boolean;
23
+ readonly: boolean;
24
24
  separator: string;
25
25
  }, {}, {}, {}, string, _$vue.ComponentProvideOptions, false, {}, any>;
26
26
  declare const _default: typeof __VLS_export;
@@ -1,7 +1,6 @@
1
- import { injectFormContext } from "../../utils/form-context.js";
2
1
  import _sfc_main$1 from "../tag/tag.js";
3
2
  import { Fragment, computed, createBlock, createElementBlock, createTextVNode, defineComponent, mergeModels, normalizeClass, openBlock, renderSlot, toDisplayString, unref, useModel, useSlots, withCtx } from "vue";
4
- import { FORM_EMPTY_CONTENT, bem } from "@veltra/utils";
3
+ import { FORM_EMPTY_CONTENT, bem, injectFormContext } from "@veltra/utils";
5
4
  import { useFormFallbackProps } from "@veltra/compositions";
6
5
  //#region src/components/checkbox/checkbox-button.vue
7
6
  const _sfc_main = /* @__PURE__ */ defineComponent({
@@ -1 +1 @@
1
- {"version":3,"file":"checkbox-button.js","names":[],"sources":["../../../src/components/checkbox/checkbox-button.vue"],"sourcesContent":["<template>\n <div v-if=\"!readonly\" :class=\"className\" @click=\"handleInput\">\n <slot />\n </div>\n\n <u-tag v-else-if=\"checked !== undefined\" :type=\"checked ? 'success' : 'danger'\">\n {{ checked ? '是' : '否' }}\n </u-tag>\n\n <template v-else>\n {{ FORM_EMPTY_CONTENT }}\n </template>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFormFallbackProps } from '@veltra/compositions'\nimport { bem, FORM_EMPTY_CONTENT } from '@veltra/utils'\nimport { computed } from 'vue'\n\nimport type { CheckboxButtonProps, CheckboxButtonEmits } from '../../types'\nimport { injectFormContext } from '../../utils/form-context'\nimport { UTag } from '../tag'\n\ndefineOptions({\n name: 'CheckboxButton'\n})\n\nconst props = withDefaults(defineProps<CheckboxButtonProps>(), {\n disabled: undefined,\n readonly: undefined,\n type: 'primary',\n round: false\n})\n\nconst emit = defineEmits<CheckboxButtonEmits>()\n\nconst slot = defineSlots<{\n default(): any\n}>()\n\nconst cls = bem('checkbox-button')\n\nconst checked = defineModel<boolean>()\n\nconst { formProps } = injectFormContext()\n\nconst { size, disabled, readonly } = useFormFallbackProps([formProps ?? {}, props], {\n size: 'default',\n disabled: false,\n readonly: false\n})\n\nconst className = computed(() => {\n return [\n cls.b,\n cls.m(size.value),\n bem.is(props.type),\n bem.is('round', props.round),\n bem.is('disabled', disabled.value),\n bem.is('checked', checked.value)\n ]\n})\n\nconst handleInput = () => {\n checked.value = !checked.value\n emit('change', !!checked.value)\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2BA,MAAM,QAAQ;EAOd,MAAM,OAAO;AAEA,YAAA;EAIb,MAAM,MAAM,IAAI,kBAAiB;EAEjC,MAAM,UAAU,SAAoB,SAAA,aAAC;EAErC,MAAM,EAAE,cAAc,mBAAkB;EAExC,MAAM,EAAE,MAAM,UAAU,aAAa,qBAAqB,CAAC,aAAa,EAAE,EAAE,MAAM,EAAE;GAClF,MAAM;GACN,UAAU;GACV,UAAU;GACX,CAAA;EAED,MAAM,YAAY,eAAe;AAC/B,UAAO;IACL,IAAI;IACJ,IAAI,EAAE,KAAK,MAAM;IACjB,IAAI,GAAG,MAAM,KAAK;IAClB,IAAI,GAAG,SAAS,MAAM,MAAM;IAC5B,IAAI,GAAG,YAAY,SAAS,MAAM;IAClC,IAAI,GAAG,WAAW,QAAQ,MAAK;IACjC;IACD;EAED,MAAM,oBAAoB;AACxB,WAAQ,QAAQ,CAAC,QAAQ;AACzB,QAAK,UAAU,CAAC,CAAC,QAAQ,MAAK;;;WAhElB,MAAA,SAAQ,IAAA,WAAA,EAApB,mBAEM,OAAA;;IAFiB,OAAK,eAAE,UAAA,MAAS;IAAG,SAAO;OAC/C,WAAQ,KAAA,QAAA,UAAA,CAAA,EAAA,EAAA,IAGQ,QAAA,UAAY,KAAA,KAAA,WAAA,EAA9B,YAEQ,MAAA,YAAA,EAAA;;IAFkC,MAAM,QAAA,QAAO,YAAA;;2BAC5B,CAAA,gBAAA,gBAAtB,QAAA,QAAO,MAAA,IAAA,EAAA,EAAA,CAAA,CAAA;;oCAGZ,mBAEW,UAAA,EAAA,KAAA,GAAA,EAAA,CAAA,gBAAA,gBADN,MAAA,mBAAkB,CAAA,EAAA,EAAA,CAAA,EAAA,GAAA"}
1
+ {"version":3,"file":"checkbox-button.js","names":[],"sources":["../../../src/components/checkbox/checkbox-button.vue"],"sourcesContent":["<template>\n <div v-if=\"!readonly\" :class=\"className\" @click=\"handleInput\">\n <slot />\n </div>\n\n <u-tag v-else-if=\"checked !== undefined\" :type=\"checked ? 'success' : 'danger'\">\n {{ checked ? '是' : '否' }}\n </u-tag>\n\n <template v-else>\n {{ FORM_EMPTY_CONTENT }}\n </template>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFormFallbackProps } from '@veltra/compositions'\nimport { bem, FORM_EMPTY_CONTENT } from '@veltra/utils'\nimport { injectFormContext } from '@veltra/utils'\nimport { computed } from 'vue'\n\nimport type { CheckboxButtonProps, CheckboxButtonEmits } from '../../types'\nimport { UTag } from '../tag'\n\ndefineOptions({\n name: 'CheckboxButton'\n})\n\nconst props = withDefaults(defineProps<CheckboxButtonProps>(), {\n disabled: undefined,\n readonly: undefined,\n type: 'primary',\n round: false\n})\n\nconst emit = defineEmits<CheckboxButtonEmits>()\n\nconst slot = defineSlots<{\n default(): any\n}>()\n\nconst cls = bem('checkbox-button')\n\nconst checked = defineModel<boolean>()\n\nconst { formProps } = injectFormContext()\n\nconst { size, disabled, readonly } = useFormFallbackProps([formProps ?? {}, props], {\n size: 'default',\n disabled: false,\n readonly: false\n})\n\nconst className = computed(() => {\n return [\n cls.b,\n cls.m(size.value),\n bem.is(props.type),\n bem.is('round', props.round),\n bem.is('disabled', disabled.value),\n bem.is('checked', checked.value)\n ]\n})\n\nconst handleInput = () => {\n checked.value = !checked.value\n emit('change', !!checked.value)\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2BA,MAAM,QAAQ;EAOd,MAAM,OAAO;AAEA,YAAA;EAIb,MAAM,MAAM,IAAI,kBAAiB;EAEjC,MAAM,UAAU,SAAoB,SAAA,aAAC;EAErC,MAAM,EAAE,cAAc,mBAAkB;EAExC,MAAM,EAAE,MAAM,UAAU,aAAa,qBAAqB,CAAC,aAAa,EAAE,EAAE,MAAM,EAAE;GAClF,MAAM;GACN,UAAU;GACV,UAAU;GACX,CAAA;EAED,MAAM,YAAY,eAAe;AAC/B,UAAO;IACL,IAAI;IACJ,IAAI,EAAE,KAAK,MAAM;IACjB,IAAI,GAAG,MAAM,KAAK;IAClB,IAAI,GAAG,SAAS,MAAM,MAAM;IAC5B,IAAI,GAAG,YAAY,SAAS,MAAM;IAClC,IAAI,GAAG,WAAW,QAAQ,MAAK;IACjC;IACD;EAED,MAAM,oBAAoB;AACxB,WAAQ,QAAQ,CAAC,QAAQ;AACzB,QAAK,UAAU,CAAC,CAAC,QAAQ,MAAK;;;WAhElB,MAAA,SAAQ,IAAA,WAAA,EAApB,mBAEM,OAAA;;IAFiB,OAAK,eAAE,UAAA,MAAS;IAAG,SAAO;OAC/C,WAAQ,KAAA,QAAA,UAAA,CAAA,EAAA,EAAA,IAGQ,QAAA,UAAY,KAAA,KAAA,WAAA,EAA9B,YAEQ,MAAA,YAAA,EAAA;;IAFkC,MAAM,QAAA,QAAO,YAAA;;2BAC5B,CAAA,gBAAA,gBAAtB,QAAA,QAAO,MAAA,IAAA,EAAA,EAAA,CAAA,CAAA;;oCAGZ,mBAEW,UAAA,EAAA,KAAA,GAAA,EAAA,CAAA,gBAAA,gBADN,MAAA,mBAAkB,CAAA,EAAA,EAAA,CAAA,EAAA,GAAA"}
@@ -1,6 +1,5 @@
1
- import { injectFormContext } from "../../utils/form-context.js";
2
1
  import { Transition, computed, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, mergeModels, normalizeClass, openBlock, renderSlot, unref, useModel, withCtx } from "vue";
3
- import { bem } from "@veltra/utils";
2
+ import { bem, injectFormContext } from "@veltra/utils";
4
3
  import { useFormFallbackProps } from "@veltra/compositions";
5
4
  //#region src/components/checkbox/checkbox.vue
6
5
  const _hoisted_1 = {
@@ -1 +1 @@
1
- {"version":3,"file":"checkbox.js","names":["$slots"],"sources":["../../../src/components/checkbox/checkbox.vue"],"sourcesContent":["<template>\n <label :class=\"className\">\n <span :class=\"cls.e('wrap')\">\n <transition name=\"zoom-in\" mode=\"out-in\">\n <svg viewBox=\"0 0 64 64\" v-if=\"checked\" fill=\"currentColor\">\n <path\n d=\"M50.42,16.76L22.34,39.45l-8.1-11.46c-1.12-1.58-3.3-1.96-4.88-0.84c-1.58,1.12-1.95,3.3-0.84,4.88l10.26,14.51 c0.56,0.79,1.42,1.31,2.38,1.45c0.16,0.02,0.32,0.03,0.48,0.03c0.8,0,1.57-0.27,2.2-0.78l30.99-25.03c1.5-1.21,1.74-3.42,0.52-4.92 C54.13,15.78,51.93,15.55,50.42,16.76z\"\n ></path>\n </svg>\n <span v-else-if=\"indeterminate\" :class=\"cls.m('indeterminate')\"></span>\n </transition>\n </span>\n\n <input type=\"checkbox\" :checked=\"checked\" :disabled=\"disabled\" hidden @click=\"handleInput\" />\n\n <span :class=\"cls.e('label')\" v-if=\"$slots.default\"><slot /> </span>\n </label>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFormFallbackProps } from '@veltra/compositions'\nimport { bem } from '@veltra/utils'\nimport { computed } from 'vue'\n\nimport type { CheckboxProps, CheckboxEmits } from '../../types'\nimport { injectFormContext } from '../../utils/form-context'\n\ndefineOptions({\n name: 'Checkbox'\n})\nconst props = withDefaults(defineProps<CheckboxProps>(), {\n disabled: undefined,\n readonly: undefined\n})\n\nconst emit = defineEmits<CheckboxEmits>()\nconst cls = bem('checkbox')\n\nconst checked = defineModel<boolean>()\n\nconst { formProps } = injectFormContext()\n\nconst { size, disabled, readonly } = useFormFallbackProps([formProps ?? {}, props], {\n size: 'default',\n disabled: false,\n readonly: false\n})\n\nconst className = computed(() => {\n return [\n cls.b,\n cls.m(size.value),\n bem.is('disabled', disabled.value),\n bem.is('readonly', readonly.value),\n bem.is('checked', checked.value || props.indeterminate)\n ]\n})\n\nconst handleInput = (e: MouseEvent) => {\n if (readonly.value) return\n const target = e.target as HTMLInputElement\n checked.value = target.checked\n emit('change', target.checked, e)\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8BA,MAAM,QAAQ;EAKd,MAAM,OAAO;EACb,MAAM,MAAM,IAAI,WAAU;EAE1B,MAAM,UAAU,SAAoB,SAAA,aAAC;EAErC,MAAM,EAAE,cAAc,mBAAkB;EAExC,MAAM,EAAE,MAAM,UAAU,aAAa,qBAAqB,CAAC,aAAa,EAAE,EAAE,MAAM,EAAE;GAClF,MAAM;GACN,UAAU;GACV,UAAU;GACX,CAAA;EAED,MAAM,YAAY,eAAe;AAC/B,UAAO;IACL,IAAI;IACJ,IAAI,EAAE,KAAK,MAAM;IACjB,IAAI,GAAG,YAAY,SAAS,MAAM;IAClC,IAAI,GAAG,YAAY,SAAS,MAAM;IAClC,IAAI,GAAG,WAAW,QAAQ,SAAS,MAAM,cAAa;IACxD;IACD;EAED,MAAM,eAAe,MAAkB;AACrC,OAAI,SAAS,MAAO;GACpB,MAAM,SAAS,EAAE;AACjB,WAAQ,QAAQ,OAAO;AACvB,QAAK,UAAU,OAAO,SAAS,EAAC;;;uBA7DhC,mBAeQ,SAAA,EAfA,OAAK,eAAE,UAAA,MAAS,EAAA,EAAA;IACtB,mBASO,QAAA,EATA,OAAK,eAAE,MAAA,IAAG,CAAC,EAAC,OAAA,CAAA,EAAA,EAAA,CACjB,YAOa,YAAA;KAPD,MAAK;KAAU,MAAK;;4BAKxB,CAJyB,QAAA,SAAA,WAAA,EAA/B,mBAIM,OAJN,YAIM,CAAA,GAAA,OAAA,OAAA,OAAA,KAAA,CAHJ,mBAEQ,QAAA,EADN,GAAE,sRAAoR,EAAA,MAAA,GAAA,CAAA,EAAA,CAAA,IAGzQ,QAAA,iBAAA,WAAA,EAAjB,mBAAuE,QAAA;;MAAtC,OAAK,eAAE,MAAA,IAAG,CAAC,EAAC,gBAAA,CAAA;;;;IAIjD,mBAA6F,SAAA;KAAtF,MAAK;KAAY,SAAS,QAAA;KAAU,UAAU,MAAA,SAAQ;KAAE,QAAA;KAAQ,SAAO;;IAE1CA,KAAAA,OAAO,WAAA,WAAA,EAA3C,mBAAoE,QAAA;;KAA7D,OAAK,eAAE,MAAA,IAAG,CAAC,EAAC,QAAA,CAAA;QAAiC,WAAQ,KAAA,QAAA,UAAA,CAAA,EAAA,EAAA,IAAA,mBAAA,QAAA,KAAA"}
1
+ {"version":3,"file":"checkbox.js","names":["$slots"],"sources":["../../../src/components/checkbox/checkbox.vue"],"sourcesContent":["<template>\n <label :class=\"className\">\n <span :class=\"cls.e('wrap')\">\n <transition name=\"zoom-in\" mode=\"out-in\">\n <svg viewBox=\"0 0 64 64\" v-if=\"checked\" fill=\"currentColor\">\n <path\n d=\"M50.42,16.76L22.34,39.45l-8.1-11.46c-1.12-1.58-3.3-1.96-4.88-0.84c-1.58,1.12-1.95,3.3-0.84,4.88l10.26,14.51 c0.56,0.79,1.42,1.31,2.38,1.45c0.16,0.02,0.32,0.03,0.48,0.03c0.8,0,1.57-0.27,2.2-0.78l30.99-25.03c1.5-1.21,1.74-3.42,0.52-4.92 C54.13,15.78,51.93,15.55,50.42,16.76z\"\n ></path>\n </svg>\n <span v-else-if=\"indeterminate\" :class=\"cls.m('indeterminate')\"></span>\n </transition>\n </span>\n\n <input type=\"checkbox\" :checked=\"checked\" :disabled=\"disabled\" hidden @click=\"handleInput\" />\n\n <span :class=\"cls.e('label')\" v-if=\"$slots.default\"><slot /> </span>\n </label>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFormFallbackProps } from '@veltra/compositions'\nimport { bem } from '@veltra/utils'\nimport { injectFormContext } from '@veltra/utils'\nimport { computed } from 'vue'\n\nimport type { CheckboxProps, CheckboxEmits } from '../../types'\n\ndefineOptions({\n name: 'Checkbox'\n})\nconst props = withDefaults(defineProps<CheckboxProps>(), {\n disabled: undefined,\n readonly: undefined\n})\n\nconst emit = defineEmits<CheckboxEmits>()\nconst cls = bem('checkbox')\n\nconst checked = defineModel<boolean>()\n\nconst { formProps } = injectFormContext()\n\nconst { size, disabled, readonly } = useFormFallbackProps([formProps ?? {}, props], {\n size: 'default',\n disabled: false,\n readonly: false\n})\n\nconst className = computed(() => {\n return [\n cls.b,\n cls.m(size.value),\n bem.is('disabled', disabled.value),\n bem.is('readonly', readonly.value),\n bem.is('checked', checked.value || props.indeterminate)\n ]\n})\n\nconst handleInput = (e: MouseEvent) => {\n if (readonly.value) return\n const target = e.target as HTMLInputElement\n checked.value = target.checked\n emit('change', target.checked, e)\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8BA,MAAM,QAAQ;EAKd,MAAM,OAAO;EACb,MAAM,MAAM,IAAI,WAAU;EAE1B,MAAM,UAAU,SAAoB,SAAA,aAAC;EAErC,MAAM,EAAE,cAAc,mBAAkB;EAExC,MAAM,EAAE,MAAM,UAAU,aAAa,qBAAqB,CAAC,aAAa,EAAE,EAAE,MAAM,EAAE;GAClF,MAAM;GACN,UAAU;GACV,UAAU;GACX,CAAA;EAED,MAAM,YAAY,eAAe;AAC/B,UAAO;IACL,IAAI;IACJ,IAAI,EAAE,KAAK,MAAM;IACjB,IAAI,GAAG,YAAY,SAAS,MAAM;IAClC,IAAI,GAAG,YAAY,SAAS,MAAM;IAClC,IAAI,GAAG,WAAW,QAAQ,SAAS,MAAM,cAAa;IACxD;IACD;EAED,MAAM,eAAe,MAAkB;AACrC,OAAI,SAAS,MAAO;GACpB,MAAM,SAAS,EAAE;AACjB,WAAQ,QAAQ,OAAO;AACvB,QAAK,UAAU,OAAO,SAAS,EAAC;;;uBA7DhC,mBAeQ,SAAA,EAfA,OAAK,eAAE,UAAA,MAAS,EAAA,EAAA;IACtB,mBASO,QAAA,EATA,OAAK,eAAE,MAAA,IAAG,CAAC,EAAC,OAAA,CAAA,EAAA,EAAA,CACjB,YAOa,YAAA;KAPD,MAAK;KAAU,MAAK;;4BAKxB,CAJyB,QAAA,SAAA,WAAA,EAA/B,mBAIM,OAJN,YAIM,CAAA,GAAA,OAAA,OAAA,OAAA,KAAA,CAHJ,mBAEQ,QAAA,EADN,GAAE,sRAAoR,EAAA,MAAA,GAAA,CAAA,EAAA,CAAA,IAGzQ,QAAA,iBAAA,WAAA,EAAjB,mBAAuE,QAAA;;MAAtC,OAAK,eAAE,MAAA,IAAG,CAAC,EAAC,gBAAA,CAAA;;;;IAIjD,mBAA6F,SAAA;KAAtF,MAAK;KAAY,SAAS,QAAA;KAAU,UAAU,MAAA,SAAQ;KAAE,QAAA;KAAQ,SAAO;;IAE1CA,KAAAA,OAAO,WAAA,WAAA,EAA3C,mBAAoE,QAAA;;KAA7D,OAAK,eAAE,MAAA,IAAG,CAAC,EAAC,QAAA,CAAA;QAAiC,WAAQ,KAAA,QAAA,UAAA,CAAA,EAAA,EAAA,IAAA,mBAAA,QAAA,KAAA"}
@@ -1,8 +1,7 @@
1
- import { injectFormContext } from "../../utils/form-context.js";
2
1
  import _sfc_main$1 from "../checkbox/checkbox.js";
3
2
  import _sfc_main$2 from "../tag/tag.js";
4
3
  import { Fragment, createBlock, createElementBlock, createElementVNode, createTextVNode, defineComponent, mergeModels, normalizeClass, openBlock, renderList, toDisplayString, unref, useModel, withCtx } from "vue";
5
- import { FORM_EMPTY_CONTENT, bem } from "@veltra/utils";
4
+ import { FORM_EMPTY_CONTENT, bem, injectFormContext } from "@veltra/utils";
6
5
  import { useFormFallbackProps } from "@veltra/compositions";
7
6
  //#region src/components/checkbox-group/checkbox-group.vue
8
7
  const _sfc_main = /* @__PURE__ */ defineComponent({
@@ -1 +1 @@
1
- {"version":3,"file":"checkbox-group.js","names":[],"sources":["../../../src/components/checkbox-group/checkbox-group.vue"],"sourcesContent":["<template>\n <div :class=\"[cls.b, cls.m(size), bem.is('block', block)]\" v-if=\"!readonly\">\n <u-checkbox\n v-for=\"item of items\"\n :key=\"item[valueKey]\"\n :model-value=\"getCheckStatus(item)\"\n @update:model-value=\"handleUpdate($event, item)\"\n :disabled=\"disabled\"\n :size=\"size\"\n >\n {{ item[labelKey] }}\n </u-checkbox>\n </div>\n\n <div v-else-if=\"model?.length\" :class=\"[cls.m(size), cls.e('readonly-tags')]\">\n <div :class=\"cls.e('tags')\">\n <u-tag v-for=\"tag of model\" :key=\"tag\">\n {{ getLabel(tag) }}\n </u-tag>\n </div>\n </div>\n\n <template v-else>\n {{ FORM_EMPTY_CONTENT }}\n </template>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFormFallbackProps } from '@veltra/compositions'\nimport { bem, FORM_EMPTY_CONTENT } from '@veltra/utils'\n\nimport type { CheckboxGroupProps, CheckboxGroupEmits } from '../../types'\nimport { injectFormContext } from '../../utils/form-context'\nimport { UCheckbox } from '../checkbox'\nimport { UTag } from '../tag'\n\ndefineOptions({\n name: 'CheckboxGroup'\n})\n\nconst props = withDefaults(defineProps<CheckboxGroupProps>(), {\n labelKey: 'label',\n valueKey: 'value',\n disabled: undefined,\n readonly: undefined\n})\n\ndefineEmits<CheckboxGroupEmits>()\n\nconst model = defineModel<any[]>()\n\nconst cls = bem('checkbox-group')\n\nconst { formProps } = injectFormContext()\n\nconst { size, disabled, readonly } = useFormFallbackProps([formProps ?? {}, props], {\n size: 'default',\n disabled: false,\n readonly: false\n})\n\n/**\n * 获取checkbox的选中状态\n * @param item - 模型对象\n * @returns 模型值是否存在于model.value中\n */\nconst getCheckStatus = (item: Record<string, string | number>): boolean => {\n const { valueKey } = props\n const value = item[valueKey]\n if (!value || !model.value) return false\n return model.value.includes(value)\n}\n\n/**\n * 处理更新操作\n * @param checked - 指示是否选中\n * @param item - 更新的项\n */\nconst handleUpdate = (checked: boolean, item: Record<string, string | number>) => {\n const { valueKey } = props\n const value = item[valueKey]\n if (!value) return\n if (checked) {\n model.value = [...(model.value ?? []), value]\n } else {\n model.value = model.value?.filter((v) => v !== value)\n }\n}\n\nconst getLabel = (value: string | number) => {\n const { items, valueKey, labelKey } = props\n const item = items.find((item) => item[valueKey] === value)\n return item?.[labelKey]\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwCA,MAAM,QAAQ;EASd,MAAM,QAAQ,SAAkB,SAAA,aAAC;EAEjC,MAAM,MAAM,IAAI,iBAAgB;EAEhC,MAAM,EAAE,cAAc,mBAAkB;EAExC,MAAM,EAAE,MAAM,UAAU,aAAa,qBAAqB,CAAC,aAAa,EAAE,EAAE,MAAM,EAAE;GAClF,MAAM;GACN,UAAU;GACV,UAAU;GACX,CAAA;;;;;;EAOD,MAAM,kBAAkB,SAAmD;GACzE,MAAM,EAAE,aAAa;GACrB,MAAM,QAAQ,KAAK;AACnB,OAAI,CAAC,SAAS,CAAC,MAAM,MAAO,QAAO;AACnC,UAAO,MAAM,MAAM,SAAS,MAAK;;;;;;;EAQnC,MAAM,gBAAgB,SAAkB,SAA0C;GAChF,MAAM,EAAE,aAAa;GACrB,MAAM,QAAQ,KAAK;AACnB,OAAI,CAAC,MAAO;AACZ,OAAI,QACF,OAAM,QAAQ,CAAC,GAAI,MAAM,SAAS,EAAE,EAAG,MAAK;OAE5C,OAAM,QAAQ,MAAM,OAAO,QAAQ,MAAM,MAAM,MAAK;;EAIxD,MAAM,YAAY,UAA2B;GAC3C,MAAM,EAAE,OAAO,UAAU,aAAa;AAEtC,UADa,MAAM,MAAM,SAAS,KAAK,cAAc,MAC9C,GAAO;;;WA3FoD,MAAA,SAAQ,IAAA,WAAA,EAA1E,mBAWM,OAAA;;IAXA,OAAK,eAAA;KAAG,MAAA,IAAG,CAAC;KAAG,MAAA,IAAG,CAAC,EAAE,MAAA,KAAI,CAAA;KAAG,MAAA,IAAG,CAAC,GAAE,SAAU,QAAA,MAAK;KAAA,CAAA;yBACrD,mBASa,UAAA,MAAA,WARI,QAAA,QAAR,SAAI;wBADb,YASa,MAAA,YAAA,EAAA;KAPV,KAAK,KAAK,QAAA;KACV,eAAa,eAAe,KAAI;KAChC,wBAAkB,WAAE,aAAa,QAAQ,KAAI;KAC7C,UAAU,MAAA,SAAQ;KAClB,MAAM,MAAA,KAAI;;4BAES,CAAA,gBAAA,gBAAjB,KAAK,QAAA,UAAQ,EAAA,EAAA,CAAA,CAAA;;;;;;;;qBAIJ,MAAA,OAAO,UAAA,WAAA,EAAvB,mBAMM,OAAA;;IAN0B,OAAK,eAAA,CAAG,MAAA,IAAG,CAAC,EAAE,MAAA,KAAI,CAAA,EAAG,MAAA,IAAG,CAAC,EAAC,gBAAA,CAAA,CAAA;OACxD,mBAIM,OAAA,EAJA,OAAK,eAAE,MAAA,IAAG,CAAC,EAAC,OAAA,CAAA,EAAA,EAAA,EAAA,UAAA,KAAA,EAChB,mBAEQ,UAAA,MAAA,WAFa,MAAA,QAAP,QAAG;wBAAjB,YAEQ,MAAA,YAAA,EAAA,EAFqB,KAAK,KAAG,EAAA;4BAChB,CAAA,gBAAA,gBAAhB,SAAS,IAAG,CAAA,EAAA,EAAA,CAAA,CAAA;;;wCAKrB,mBAEW,UAAA,EAAA,KAAA,GAAA,EAAA,CAAA,gBAAA,gBADN,MAAA,mBAAkB,CAAA,EAAA,EAAA,CAAA,EAAA,GAAA"}
1
+ {"version":3,"file":"checkbox-group.js","names":[],"sources":["../../../src/components/checkbox-group/checkbox-group.vue"],"sourcesContent":["<template>\n <div :class=\"[cls.b, cls.m(size), bem.is('block', block)]\" v-if=\"!readonly\">\n <u-checkbox\n v-for=\"item of items\"\n :key=\"item[valueKey]\"\n :model-value=\"getCheckStatus(item)\"\n @update:model-value=\"handleUpdate($event, item)\"\n :disabled=\"disabled\"\n :size=\"size\"\n >\n {{ item[labelKey] }}\n </u-checkbox>\n </div>\n\n <div v-else-if=\"model?.length\" :class=\"[cls.m(size), cls.e('readonly-tags')]\">\n <div :class=\"cls.e('tags')\">\n <u-tag v-for=\"tag of model\" :key=\"tag\">\n {{ getLabel(tag) }}\n </u-tag>\n </div>\n </div>\n\n <template v-else>\n {{ FORM_EMPTY_CONTENT }}\n </template>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFormFallbackProps } from '@veltra/compositions'\nimport { bem, FORM_EMPTY_CONTENT } from '@veltra/utils'\nimport { injectFormContext } from '@veltra/utils'\n\nimport type { CheckboxGroupProps, CheckboxGroupEmits } from '../../types'\nimport { UCheckbox } from '../checkbox'\nimport { UTag } from '../tag'\n\ndefineOptions({\n name: 'CheckboxGroup'\n})\n\nconst props = withDefaults(defineProps<CheckboxGroupProps>(), {\n labelKey: 'label',\n valueKey: 'value',\n disabled: undefined,\n readonly: undefined\n})\n\ndefineEmits<CheckboxGroupEmits>()\n\nconst model = defineModel<any[]>()\n\nconst cls = bem('checkbox-group')\n\nconst { formProps } = injectFormContext()\n\nconst { size, disabled, readonly } = useFormFallbackProps([formProps ?? {}, props], {\n size: 'default',\n disabled: false,\n readonly: false\n})\n\n/**\n * 获取checkbox的选中状态\n * @param item - 模型对象\n * @returns 模型值是否存在于model.value中\n */\nconst getCheckStatus = (item: Record<string, string | number>): boolean => {\n const { valueKey } = props\n const value = item[valueKey]\n if (!value || !model.value) return false\n return model.value.includes(value)\n}\n\n/**\n * 处理更新操作\n * @param checked - 指示是否选中\n * @param item - 更新的项\n */\nconst handleUpdate = (checked: boolean, item: Record<string, string | number>) => {\n const { valueKey } = props\n const value = item[valueKey]\n if (!value) return\n if (checked) {\n model.value = [...(model.value ?? []), value]\n } else {\n model.value = model.value?.filter((v) => v !== value)\n }\n}\n\nconst getLabel = (value: string | number) => {\n const { items, valueKey, labelKey } = props\n const item = items.find((item) => item[valueKey] === value)\n return item?.[labelKey]\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwCA,MAAM,QAAQ;EASd,MAAM,QAAQ,SAAkB,SAAA,aAAC;EAEjC,MAAM,MAAM,IAAI,iBAAgB;EAEhC,MAAM,EAAE,cAAc,mBAAkB;EAExC,MAAM,EAAE,MAAM,UAAU,aAAa,qBAAqB,CAAC,aAAa,EAAE,EAAE,MAAM,EAAE;GAClF,MAAM;GACN,UAAU;GACV,UAAU;GACX,CAAA;;;;;;EAOD,MAAM,kBAAkB,SAAmD;GACzE,MAAM,EAAE,aAAa;GACrB,MAAM,QAAQ,KAAK;AACnB,OAAI,CAAC,SAAS,CAAC,MAAM,MAAO,QAAO;AACnC,UAAO,MAAM,MAAM,SAAS,MAAK;;;;;;;EAQnC,MAAM,gBAAgB,SAAkB,SAA0C;GAChF,MAAM,EAAE,aAAa;GACrB,MAAM,QAAQ,KAAK;AACnB,OAAI,CAAC,MAAO;AACZ,OAAI,QACF,OAAM,QAAQ,CAAC,GAAI,MAAM,SAAS,EAAE,EAAG,MAAK;OAE5C,OAAM,QAAQ,MAAM,OAAO,QAAQ,MAAM,MAAM,MAAK;;EAIxD,MAAM,YAAY,UAA2B;GAC3C,MAAM,EAAE,OAAO,UAAU,aAAa;AAEtC,UADa,MAAM,MAAM,SAAS,KAAK,cAAc,MAC9C,GAAO;;;WA3FoD,MAAA,SAAQ,IAAA,WAAA,EAA1E,mBAWM,OAAA;;IAXA,OAAK,eAAA;KAAG,MAAA,IAAG,CAAC;KAAG,MAAA,IAAG,CAAC,EAAE,MAAA,KAAI,CAAA;KAAG,MAAA,IAAG,CAAC,GAAE,SAAU,QAAA,MAAK;KAAA,CAAA;yBACrD,mBASa,UAAA,MAAA,WARI,QAAA,QAAR,SAAI;wBADb,YASa,MAAA,YAAA,EAAA;KAPV,KAAK,KAAK,QAAA;KACV,eAAa,eAAe,KAAI;KAChC,wBAAkB,WAAE,aAAa,QAAQ,KAAI;KAC7C,UAAU,MAAA,SAAQ;KAClB,MAAM,MAAA,KAAI;;4BAES,CAAA,gBAAA,gBAAjB,KAAK,QAAA,UAAQ,EAAA,EAAA,CAAA,CAAA;;;;;;;;qBAIJ,MAAA,OAAO,UAAA,WAAA,EAAvB,mBAMM,OAAA;;IAN0B,OAAK,eAAA,CAAG,MAAA,IAAG,CAAC,EAAE,MAAA,KAAI,CAAA,EAAG,MAAA,IAAG,CAAC,EAAC,gBAAA,CAAA,CAAA;OACxD,mBAIM,OAAA,EAJA,OAAK,eAAE,MAAA,IAAG,CAAC,EAAC,OAAA,CAAA,EAAA,EAAA,EAAA,UAAA,KAAA,EAChB,mBAEQ,UAAA,MAAA,WAFa,MAAA,QAAP,QAAG;wBAAjB,YAEQ,MAAA,YAAA,EAAA,EAFqB,KAAK,KAAG,EAAA;4BAChB,CAAA,gBAAA,gBAAhB,SAAS,IAAG,CAAA,EAAA,EAAA,CAAA,CAAA;;;wCAKrB,mBAEW,UAAA,EAAA,KAAA,GAAA,EAAA,CAAA,gBAAA,gBADN,MAAA,mBAAkB,CAAA,EAAA,EAAA,CAAA,EAAA,GAAA"}
@@ -1,7 +1,6 @@
1
1
  import _sfc_main$1 from "../scroll/scroll.js";
2
- import { injectFormContext } from "../../utils/form-context.js";
3
2
  import { computed, createBlock, createElementVNode, defineComponent, mergeModels, normalizeClass, normalizeStyle, onBeforeUnmount, openBlock, shallowRef, unref, useModel, useTemplateRef, watch, withCtx, withKeys, withModifiers } from "vue";
4
- import { bem, zIndex } from "@veltra/utils";
3
+ import { bem, injectFormContext, zIndex } from "@veltra/utils";
5
4
  import { useFormFallbackProps } from "@veltra/compositions";
6
5
  import { Compartment, EditorState } from "@codemirror/state";
7
6
  import { oneDark } from "@codemirror/theme-one-dark";
@@ -1 +1 @@
1
- {"version":3,"file":"code-editor.js","names":[],"sources":["../../../src/components/code-editor/code-editor.vue"],"sourcesContent":["<template>\n <u-scroll :class=\"className\" :style=\"rootStyle\" @keyup.enter.stop>\n <div ref=\"container\"></div>\n </u-scroll>\n</template>\n\n<script lang=\"ts\" setup>\nimport { Compartment, EditorState, type Extension } from '@codemirror/state'\nimport { oneDark } from '@codemirror/theme-one-dark'\nimport { ViewPlugin, tooltips, type ViewUpdate } from '@codemirror/view'\nimport { useFormFallbackProps } from '@veltra/compositions'\nimport { bem, zIndex } from '@veltra/utils'\nimport { EditorView, basicSetup } from 'codemirror'\nimport {\n computed,\n onBeforeUnmount,\n shallowRef,\n useTemplateRef,\n watch,\n type CSSProperties\n} from 'vue'\n\nimport type { CodeEditorLang, CodeEditorProps } from '../../types'\nimport { injectFormContext } from '../../utils/form-context'\nimport { UScroll } from '../scroll'\n\ndefineOptions({ name: 'CodeEditor' })\n\nconst props = withDefaults(defineProps<CodeEditorProps>(), {\n disabled: undefined,\n readonly: undefined,\n dark: false,\n defaultLines: 8\n})\n\nconst model = defineModel<string>()\n\nconst cls = bem('code-editor')\n\nconst { formProps } = injectFormContext()\n\nconst { disabled, readonly } = useFormFallbackProps([formProps ?? {}, props], {\n disabled: false,\n readonly: false\n})\n\nconst className = computed<string[]>(() => [\n cls.b,\n bem.is('disabled', disabled.value),\n bem.is('readonly', readonly.value),\n bem.is('dark', props.dark)\n])\n\nconst rootStyle = computed<CSSProperties>(() => ({\n '--u-code-editor-default-lines': Math.max(1, props.defaultLines)\n}))\n\nconst containerRef = useTemplateRef('container')\nconst editor = shallowRef<EditorView | null>(null)\n\nconst langLoaders: Record<CodeEditorLang, () => Promise<Extension>> = {\n js: () => import('@codemirror/lang-javascript').then((m) => m.javascript({ typescript: true })),\n sql: () => import('@codemirror/lang-sql').then((m) => m.sql()),\n java: () => import('@codemirror/lang-java').then((m) => m.java()),\n json: () => import('@codemirror/lang-json').then((m) => m.json())\n}\n\nconst themeCompartment = new Compartment()\nconst editableCompartment = new Compartment()\nconst readOnlyCompartment = new Compartment()\nconst langCompartment = new Compartment()\n\nlet phantomGutter: HTMLElement | null = null\nlet phantomContainer: HTMLElement | null = null\nlet lastPhantomKey = ''\n\nfunction resetPhantomCache() {\n phantomGutter = null\n phantomContainer = null\n lastPhantomKey = ''\n}\n\n/**\n * 在 .cm-lineNumbers 末尾追加占位行号 DOM,使可视行号数量补齐到 defaultLines。\n * CodeMirror 的 lineNumbers() 仅为真实文档行渲染行号,超出部分由本逻辑补全。\n */\nfunction syncPhantomLineNumbers() {\n const view = editor.value\n if (!view) return\n\n if (!phantomGutter || !phantomGutter.isConnected) {\n phantomGutter = view.dom.querySelector<HTMLElement>('.cm-gutter.cm-lineNumbers')\n }\n if (!phantomGutter) return\n\n if (!phantomContainer) {\n phantomContainer = document.createElement('div')\n phantomContainer.className = 'cm-phantom-lines'\n }\n if (\n phantomContainer.parentElement !== phantomGutter ||\n phantomContainer !== phantomGutter.lastElementChild\n ) {\n phantomGutter.appendChild(phantomContainer)\n }\n\n const realLines = view.state.doc.lines\n const target = Math.max(0, Math.max(1, props.defaultLines) - realLines)\n const lineHeight = view.defaultLineHeight\n\n const key = `${realLines}|${target}|${lineHeight}`\n if (key === lastPhantomKey) return\n lastPhantomKey = key\n\n while (phantomContainer.children.length > target) {\n phantomContainer.lastElementChild!.remove()\n }\n while (phantomContainer.children.length < target) {\n const el = document.createElement('div')\n el.className = 'cm-gutterElement cm-gutterElement-phantom'\n phantomContainer.appendChild(el)\n }\n for (let i = 0; i < target; i++) {\n const el = phantomContainer.children[i] as HTMLElement\n const num = String(realLines + i + 1)\n if (el.textContent !== num) el.textContent = num\n if (lineHeight && el.style.height !== `${lineHeight}px`) {\n el.style.height = `${lineHeight}px`\n }\n }\n}\n\nconst phantomLineNumbersPlugin = ViewPlugin.fromClass(\n class {\n update(update: ViewUpdate) {\n if (update.docChanged || update.geometryChanged) {\n syncPhantomLineNumbers()\n }\n }\n }\n)\n\nfunction buildExtensions(): Extension[] {\n return [\n basicSetup,\n tooltips({ parent: document.body }),\n EditorView.theme({\n '.cm-tooltip': { zIndex: zIndex() }\n }),\n themeCompartment.of(props.dark ? oneDark : []),\n editableCompartment.of(EditorView.editable.of(!disabled.value)),\n readOnlyCompartment.of(EditorState.readOnly.of(readonly.value)),\n langCompartment.of([]),\n phantomLineNumbersPlugin\n ]\n}\n\nlet editorToken = 0\nlet langToken = 0\n\nasync function applyLanguage() {\n const view = editor.value\n if (!view) return\n const myToken = ++langToken\n const { language } = props\n const ext = language ? await langLoaders[language]() : []\n if (myToken !== langToken || editor.value !== view) return\n view.dispatch({ effects: langCompartment.reconfigure(ext) })\n}\n\nfunction destroyEditor() {\n ++editorToken\n ++langToken\n editor.value?.destroy()\n editor.value = null\n resetPhantomCache()\n}\n\nfunction createEditor() {\n destroyEditor()\n const myToken = ++editorToken\n const parent = containerRef.value\n if (!parent) return\n\n const view = new EditorView({\n doc: model.value,\n extensions: buildExtensions(),\n parent,\n dispatch(tr) {\n view.update([tr])\n if (tr.docChanged) {\n model.value = tr.state.doc.toString()\n }\n }\n })\n\n if (myToken !== editorToken) {\n view.destroy()\n return\n }\n\n editor.value = view\n syncPhantomLineNumbers()\n applyLanguage()\n}\n\nwatch(\n containerRef,\n (el) => {\n if (el) createEditor()\n else destroyEditor()\n },\n { immediate: true, flush: 'post' }\n)\n\nwatch(() => props.language, applyLanguage)\n\nwatch(\n () => props.dark,\n (dark) => {\n editor.value?.dispatch({\n effects: themeCompartment.reconfigure(dark ? oneDark : [])\n })\n }\n)\n\nwatch(disabled, (v) => {\n editor.value?.dispatch({\n effects: editableCompartment.reconfigure(EditorView.editable.of(!v))\n })\n})\n\nwatch(readonly, (v) => {\n editor.value?.dispatch({\n effects: readOnlyCompartment.reconfigure(EditorState.readOnly.of(v))\n })\n})\n\nwatch(() => props.defaultLines, syncPhantomLineNumbers)\n\nwatch(\n [() => props.modelValue, editor],\n ([v, e]) => {\n if (!e) return\n if (e.composing) return\n const next = v ?? ''\n if (e.state.doc.toString() === next) return\n\n const valueLength = next.length\n const inRange = e.state.selection.ranges.every(\n (range) => range.anchor <= valueLength && range.head <= valueLength\n )\n e.dispatch({\n changes: { from: 0, to: e.state.doc.length, insert: next },\n selection: inRange ? e.state.selection : { anchor: 0, head: 0 },\n scrollIntoView: true\n })\n },\n { immediate: true }\n)\n\nonBeforeUnmount(destroyEditor)\n</script>\n"],"mappings":"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"}
1
+ {"version":3,"file":"code-editor.js","names":[],"sources":["../../../src/components/code-editor/code-editor.vue"],"sourcesContent":["<template>\n <u-scroll :class=\"className\" :style=\"rootStyle\" @keyup.enter.stop>\n <div ref=\"container\"></div>\n </u-scroll>\n</template>\n\n<script lang=\"ts\" setup>\nimport { Compartment, EditorState, type Extension } from '@codemirror/state'\nimport { oneDark } from '@codemirror/theme-one-dark'\nimport { ViewPlugin, tooltips, type ViewUpdate } from '@codemirror/view'\nimport { useFormFallbackProps } from '@veltra/compositions'\nimport { bem, zIndex } from '@veltra/utils'\nimport { injectFormContext } from '@veltra/utils'\nimport { EditorView, basicSetup } from 'codemirror'\nimport {\n computed,\n onBeforeUnmount,\n shallowRef,\n useTemplateRef,\n watch,\n type CSSProperties\n} from 'vue'\n\nimport type { CodeEditorLang, CodeEditorProps } from '../../types'\nimport { UScroll } from '../scroll'\n\ndefineOptions({ name: 'CodeEditor' })\n\nconst props = withDefaults(defineProps<CodeEditorProps>(), {\n disabled: undefined,\n readonly: undefined,\n dark: false,\n defaultLines: 8\n})\n\nconst model = defineModel<string>()\n\nconst cls = bem('code-editor')\n\nconst { formProps } = injectFormContext()\n\nconst { disabled, readonly } = useFormFallbackProps([formProps ?? {}, props], {\n disabled: false,\n readonly: false\n})\n\nconst className = computed<string[]>(() => [\n cls.b,\n bem.is('disabled', disabled.value),\n bem.is('readonly', readonly.value),\n bem.is('dark', props.dark)\n])\n\nconst rootStyle = computed<CSSProperties>(() => ({\n '--u-code-editor-default-lines': Math.max(1, props.defaultLines)\n}))\n\nconst containerRef = useTemplateRef('container')\nconst editor = shallowRef<EditorView | null>(null)\n\nconst langLoaders: Record<CodeEditorLang, () => Promise<Extension>> = {\n js: () => import('@codemirror/lang-javascript').then((m) => m.javascript({ typescript: true })),\n sql: () => import('@codemirror/lang-sql').then((m) => m.sql()),\n java: () => import('@codemirror/lang-java').then((m) => m.java()),\n json: () => import('@codemirror/lang-json').then((m) => m.json())\n}\n\nconst themeCompartment = new Compartment()\nconst editableCompartment = new Compartment()\nconst readOnlyCompartment = new Compartment()\nconst langCompartment = new Compartment()\n\nlet phantomGutter: HTMLElement | null = null\nlet phantomContainer: HTMLElement | null = null\nlet lastPhantomKey = ''\n\nfunction resetPhantomCache() {\n phantomGutter = null\n phantomContainer = null\n lastPhantomKey = ''\n}\n\n/**\n * 在 .cm-lineNumbers 末尾追加占位行号 DOM,使可视行号数量补齐到 defaultLines。\n * CodeMirror 的 lineNumbers() 仅为真实文档行渲染行号,超出部分由本逻辑补全。\n */\nfunction syncPhantomLineNumbers() {\n const view = editor.value\n if (!view) return\n\n if (!phantomGutter || !phantomGutter.isConnected) {\n phantomGutter = view.dom.querySelector<HTMLElement>('.cm-gutter.cm-lineNumbers')\n }\n if (!phantomGutter) return\n\n if (!phantomContainer) {\n phantomContainer = document.createElement('div')\n phantomContainer.className = 'cm-phantom-lines'\n }\n if (\n phantomContainer.parentElement !== phantomGutter ||\n phantomContainer !== phantomGutter.lastElementChild\n ) {\n phantomGutter.appendChild(phantomContainer)\n }\n\n const realLines = view.state.doc.lines\n const target = Math.max(0, Math.max(1, props.defaultLines) - realLines)\n const lineHeight = view.defaultLineHeight\n\n const key = `${realLines}|${target}|${lineHeight}`\n if (key === lastPhantomKey) return\n lastPhantomKey = key\n\n while (phantomContainer.children.length > target) {\n phantomContainer.lastElementChild!.remove()\n }\n while (phantomContainer.children.length < target) {\n const el = document.createElement('div')\n el.className = 'cm-gutterElement cm-gutterElement-phantom'\n phantomContainer.appendChild(el)\n }\n for (let i = 0; i < target; i++) {\n const el = phantomContainer.children[i] as HTMLElement\n const num = String(realLines + i + 1)\n if (el.textContent !== num) el.textContent = num\n if (lineHeight && el.style.height !== `${lineHeight}px`) {\n el.style.height = `${lineHeight}px`\n }\n }\n}\n\nconst phantomLineNumbersPlugin = ViewPlugin.fromClass(\n class {\n update(update: ViewUpdate) {\n if (update.docChanged || update.geometryChanged) {\n syncPhantomLineNumbers()\n }\n }\n }\n)\n\nfunction buildExtensions(): Extension[] {\n return [\n basicSetup,\n tooltips({ parent: document.body }),\n EditorView.theme({\n '.cm-tooltip': { zIndex: zIndex() }\n }),\n themeCompartment.of(props.dark ? oneDark : []),\n editableCompartment.of(EditorView.editable.of(!disabled.value)),\n readOnlyCompartment.of(EditorState.readOnly.of(readonly.value)),\n langCompartment.of([]),\n phantomLineNumbersPlugin\n ]\n}\n\nlet editorToken = 0\nlet langToken = 0\n\nasync function applyLanguage() {\n const view = editor.value\n if (!view) return\n const myToken = ++langToken\n const { language } = props\n const ext = language ? await langLoaders[language]() : []\n if (myToken !== langToken || editor.value !== view) return\n view.dispatch({ effects: langCompartment.reconfigure(ext) })\n}\n\nfunction destroyEditor() {\n ++editorToken\n ++langToken\n editor.value?.destroy()\n editor.value = null\n resetPhantomCache()\n}\n\nfunction createEditor() {\n destroyEditor()\n const myToken = ++editorToken\n const parent = containerRef.value\n if (!parent) return\n\n const view = new EditorView({\n doc: model.value,\n extensions: buildExtensions(),\n parent,\n dispatch(tr) {\n view.update([tr])\n if (tr.docChanged) {\n model.value = tr.state.doc.toString()\n }\n }\n })\n\n if (myToken !== editorToken) {\n view.destroy()\n return\n }\n\n editor.value = view\n syncPhantomLineNumbers()\n applyLanguage()\n}\n\nwatch(\n containerRef,\n (el) => {\n if (el) createEditor()\n else destroyEditor()\n },\n { immediate: true, flush: 'post' }\n)\n\nwatch(() => props.language, applyLanguage)\n\nwatch(\n () => props.dark,\n (dark) => {\n editor.value?.dispatch({\n effects: themeCompartment.reconfigure(dark ? oneDark : [])\n })\n }\n)\n\nwatch(disabled, (v) => {\n editor.value?.dispatch({\n effects: editableCompartment.reconfigure(EditorView.editable.of(!v))\n })\n})\n\nwatch(readonly, (v) => {\n editor.value?.dispatch({\n effects: readOnlyCompartment.reconfigure(EditorState.readOnly.of(v))\n })\n})\n\nwatch(() => props.defaultLines, syncPhantomLineNumbers)\n\nwatch(\n [() => props.modelValue, editor],\n ([v, e]) => {\n if (!e) return\n if (e.composing) return\n const next = v ?? ''\n if (e.state.doc.toString() === next) return\n\n const valueLength = next.length\n const inRange = e.state.selection.ranges.every(\n (range) => range.anchor <= valueLength && range.head <= valueLength\n )\n e.dispatch({\n changes: { from: 0, to: e.state.doc.length, insert: next },\n selection: inRange ? e.state.selection : { anchor: 0, head: 0 },\n scrollIntoView: true\n })\n },\n { immediate: true }\n)\n\nonBeforeUnmount(destroyEditor)\n</script>\n"],"mappings":"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"}
@@ -11,8 +11,8 @@ declare const __VLS_export: _$vue.DefineComponent<DatePanelProps, {}, {}, {}, {}
11
11
  "onSelect:range-date"?: ((rangeDate?: [_$_cat_kit_core0.Dater, _$_cat_kit_core0.Dater] | undefined) => any) | undefined;
12
12
  "onSelect:date"?: ((date: _$_cat_kit_core0.Dater) => any) | undefined;
13
13
  }>, {
14
- size: _$_veltra_utils0.ComponentSize;
15
14
  type: "date" | "month" | "year";
15
+ size: _$_veltra_utils0.ComponentSize;
16
16
  }, {}, {}, {}, string, _$vue.ComponentProvideOptions, false, {}, any>;
17
17
  declare const _default: typeof __VLS_export;
18
18
  //#endregion
@@ -1,10 +1,9 @@
1
1
  import _sfc_main$1 from "../icon/icon.js";
2
- import { injectFormContext } from "../../utils/form-context.js";
3
2
  import _sfc_main$2 from "../dropdown/dropdown.js";
4
3
  import input_default from "../input/input.js";
5
4
  import _sfc_main$3 from "../date-panel/date-panel.js";
6
5
  import { Fragment, computed, createBlock, createElementBlock, createTextVNode, createVNode, defineComponent, normalizeClass, openBlock, shallowRef, toDisplayString, unref, watch, withCtx } from "vue";
7
- import { FORM_EMPTY_CONTENT, bem } from "@veltra/utils";
6
+ import { FORM_EMPTY_CONTENT, bem, injectFormContext } from "@veltra/utils";
8
7
  import { useFormFallbackProps, useUserAction } from "@veltra/compositions";
9
8
  import { date } from "@cat-kit/core";
10
9
  import { Calendar } from "@veltra/icons/normal";
@@ -1 +1 @@
1
- {"version":3,"file":"date-picker.js","names":[],"sources":["../../../src/components/date-picker/date-picker.vue"],"sourcesContent":["<template>\n <u-dropdown\n :class=\"className\"\n trigger=\"click\"\n width=\"auto\"\n ref=\"dropdownRef\"\n @update:visible=\"\"\n :disabled=\"disabled\"\n v-if=\"!readonly\"\n >\n <template #trigger>\n <u-input\n :size=\"size\"\n native-readonly\n :clearable=\"clearable\"\n :placeholder=\"placeholder\"\n :model-value=\"displayedValue\"\n :disabled=\"disabled\"\n @clear=\"handleClear\"\n >\n <template #suffix>\n <u-icon :class=\"cls.e('icon')\"><Calendar /></u-icon>\n </template>\n </u-input>\n </template>\n\n <template #content>\n <UDatePanel :size :type :disabled-date :date=\"currentDate\" @select:date=\"handleSelectDate\" />\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 { date, type Dater } from '@cat-kit/core'\nimport { useFormFallbackProps, useUserAction } from '@veltra/compositions'\nimport { Calendar } from '@veltra/icons/normal'\nimport { bem, FORM_EMPTY_CONTENT } from '@veltra/utils'\nimport { computed, shallowRef, watch } from 'vue'\n\nimport type { DatePickerEmits, DatePickerProps } from '../../types'\nimport type { DropdownExposed } from '../../types'\nimport { injectFormContext } from '../../utils/form-context'\nimport { UDatePanel } from '../date-panel'\nimport { UDropdown } from '../dropdown'\nimport { UIcon } from '../icon'\nimport { UInput } from '../input'\n\ndefineOptions({\n name: 'DatePicker'\n})\n\nconst props = withDefaults(defineProps<DatePickerProps>(), {\n placeholder: '选择日期',\n type: 'date',\n disabled: undefined,\n readonly: undefined,\n clearable: true\n})\n\nconst emit = defineEmits<DatePickerEmits>()\n\nconst cls = bem('date-picker')\n\nconst { formProps } = injectFormContext()\n\nconst { size, disabled, readonly } = useFormFallbackProps([formProps ?? {}, props], {\n size: 'default',\n disabled: false,\n readonly: false\n})\n\nconst className = computed(() => {\n return [cls.b, cls.m(size.value)]\n})\n\nconst dropdownRef = shallowRef<DropdownExposed>()\n\nconst formatStr = computed(() => {\n const { format, type } = props\n if (format) return format\n if (type === 'date') return 'yyyy-MM-dd'\n if (type === 'month') return 'yyyy-MM'\n if (type === 'year') return 'yyyy'\n return 'yyyy-MM-dd'\n})\n\nconst currentDate = shallowRef<Dater>()\n\nconst { userAction, isUserActive } = useUserAction()\n\nwatch(\n () => props.modelValue,\n (modelValue) => {\n if (isUserActive()) return\n currentDate.value = modelValue ? date(modelValue) : undefined\n },\n { immediate: true }\n)\n\nconst displayedValue = computed(() => {\n return currentDate.value?.format(formatStr.value) ?? ''\n})\n\nconst commitSelectedDate = userAction((date: Dater) => {\n currentDate.value = date\n emit('update:modelValue', date.format(formatStr.value))\n})\n\nasync function handleSelectDate(date: Dater) {\n await commitSelectedDate(date)\n dropdownRef.value?.close()\n}\n\nfunction handleClear() {\n currentDate.value = undefined\n emit('update:modelValue', undefined)\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuDA,MAAM,QAAQ;EAQd,MAAM,OAAO;EAEb,MAAM,MAAM,IAAI,cAAa;EAE7B,MAAM,EAAE,cAAc,mBAAkB;EAExC,MAAM,EAAE,MAAM,UAAU,aAAa,qBAAqB,CAAC,aAAa,EAAE,EAAE,MAAM,EAAE;GAClF,MAAM;GACN,UAAU;GACV,UAAU;GACX,CAAA;EAED,MAAM,YAAY,eAAe;AAC/B,UAAO,CAAC,IAAI,GAAG,IAAI,EAAE,KAAK,MAAM,CAAA;IACjC;EAED,MAAM,cAAc,YAA4B;EAEhD,MAAM,YAAY,eAAe;GAC/B,MAAM,EAAE,QAAQ,SAAS;AACzB,OAAI,OAAQ,QAAO;AACnB,OAAI,SAAS,OAAQ,QAAO;AAC5B,OAAI,SAAS,QAAS,QAAO;AAC7B,OAAI,SAAS,OAAQ,QAAO;AAC5B,UAAO;IACR;EAED,MAAM,cAAc,YAAkB;EAEtC,MAAM,EAAE,YAAY,iBAAiB,eAAc;AAEnD,cACQ,MAAM,aACX,eAAe;AACd,OAAI,cAAc,CAAE;AACpB,eAAY,QAAQ,aAAa,KAAK,WAAW,GAAG,KAAA;KAEtD,EAAE,WAAW,MAAK,CACpB;EAEA,MAAM,iBAAiB,eAAe;AACpC,UAAO,YAAY,OAAO,OAAO,UAAU,MAAM,IAAI;IACtD;EAED,MAAM,qBAAqB,YAAY,SAAgB;AACrD,eAAY,QAAQ;AACpB,QAAK,qBAAqB,KAAK,OAAO,UAAU,MAAM,CAAA;IACvD;EAED,eAAe,iBAAiB,MAAa;AAC3C,SAAM,mBAAmB,KAAI;AAC7B,eAAY,OAAO,OAAM;;EAG3B,SAAS,cAAc;AACrB,eAAY,QAAQ,KAAA;AACpB,QAAK,qBAAqB,KAAA,EAAS;;;WA/G1B,MAAA,SAAQ,IAAA,WAAA,EAPjB,YA4Ba,MAAA,YAAA,EAAA;;IA3BV,OAAK,eAAE,UAAA,MAAS;IACjB,SAAQ;IACR,OAAM;aACF;IAAJ,KAAI;IACH,oBAAc,OAAA,OAAA,OAAA,WAAf;IACC,UAAU,MAAA,SAAQ;;IAGR,SAAO,cAaN,CAZV,YAYU,MAAA,cAAA,EAAA;KAXP,MAAM,MAAA,KAAI;KACX,mBAAA;KACC,WAAW,QAAA;KACX,aAAa,QAAA;KACb,eAAa,eAAA;KACb,UAAU,MAAA,SAAQ;KAClB,SAAO;;KAEG,QAAM,cACqC,CAApD,YAAoD,MAAA,YAAA,EAAA,EAA3C,OAAK,eAAE,MAAA,IAAG,CAAC,EAAC,OAAA,CAAA,EAAA,EAAA;6BAAsB,CAAZ,YAAY,MAAA,SAAA,CAAA,CAAA,CAAA;;;;;;;;;;;IAKtC,SAAO,cAC6E,CAA7F,YAA6F,MAAA,YAAA,EAAA;KAAhF,MAAA,MAAA,KAAI;KAAE,MAAA,QAAA;KAAM,iBAAA,QAAA;KAAe,MAAM,YAAA;KAAc,iBAAa;;;;;;;;iDAI7E,mBAEW,UAAA,EAAA,KAAA,GAAA,EAAA,CAAA,gBAAA,gBADN,eAAA,SAAkB,MAAA,mBAAkB,CAAA,EAAA,EAAA,CAAA,EAAA,GAAA"}
1
+ {"version":3,"file":"date-picker.js","names":[],"sources":["../../../src/components/date-picker/date-picker.vue"],"sourcesContent":["<template>\n <u-dropdown\n :class=\"className\"\n trigger=\"click\"\n width=\"auto\"\n ref=\"dropdownRef\"\n @update:visible=\"\"\n :disabled=\"disabled\"\n v-if=\"!readonly\"\n >\n <template #trigger>\n <u-input\n :size=\"size\"\n native-readonly\n :clearable=\"clearable\"\n :placeholder=\"placeholder\"\n :model-value=\"displayedValue\"\n :disabled=\"disabled\"\n @clear=\"handleClear\"\n >\n <template #suffix>\n <u-icon :class=\"cls.e('icon')\"><Calendar /></u-icon>\n </template>\n </u-input>\n </template>\n\n <template #content>\n <UDatePanel :size :type :disabled-date :date=\"currentDate\" @select:date=\"handleSelectDate\" />\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 { date, type Dater } from '@cat-kit/core'\nimport { useFormFallbackProps, useUserAction } from '@veltra/compositions'\nimport { Calendar } from '@veltra/icons/normal'\nimport { bem, FORM_EMPTY_CONTENT } from '@veltra/utils'\nimport { injectFormContext } from '@veltra/utils'\nimport { computed, shallowRef, watch } from 'vue'\n\nimport type { DatePickerEmits, DatePickerProps } from '../../types'\nimport type { DropdownExposed } from '../../types'\nimport { UDatePanel } from '../date-panel'\nimport { UDropdown } from '../dropdown'\nimport { UIcon } from '../icon'\nimport { UInput } from '../input'\n\ndefineOptions({\n name: 'DatePicker'\n})\n\nconst props = withDefaults(defineProps<DatePickerProps>(), {\n placeholder: '选择日期',\n type: 'date',\n disabled: undefined,\n readonly: undefined,\n clearable: true\n})\n\nconst emit = defineEmits<DatePickerEmits>()\n\nconst cls = bem('date-picker')\n\nconst { formProps } = injectFormContext()\n\nconst { size, disabled, readonly } = useFormFallbackProps([formProps ?? {}, props], {\n size: 'default',\n disabled: false,\n readonly: false\n})\n\nconst className = computed(() => {\n return [cls.b, cls.m(size.value)]\n})\n\nconst dropdownRef = shallowRef<DropdownExposed>()\n\nconst formatStr = computed(() => {\n const { format, type } = props\n if (format) return format\n if (type === 'date') return 'yyyy-MM-dd'\n if (type === 'month') return 'yyyy-MM'\n if (type === 'year') return 'yyyy'\n return 'yyyy-MM-dd'\n})\n\nconst currentDate = shallowRef<Dater>()\n\nconst { userAction, isUserActive } = useUserAction()\n\nwatch(\n () => props.modelValue,\n (modelValue) => {\n if (isUserActive()) return\n currentDate.value = modelValue ? date(modelValue) : undefined\n },\n { immediate: true }\n)\n\nconst displayedValue = computed(() => {\n return currentDate.value?.format(formatStr.value) ?? ''\n})\n\nconst commitSelectedDate = userAction((date: Dater) => {\n currentDate.value = date\n emit('update:modelValue', date.format(formatStr.value))\n})\n\nasync function handleSelectDate(date: Dater) {\n await commitSelectedDate(date)\n dropdownRef.value?.close()\n}\n\nfunction handleClear() {\n currentDate.value = undefined\n emit('update:modelValue', undefined)\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuDA,MAAM,QAAQ;EAQd,MAAM,OAAO;EAEb,MAAM,MAAM,IAAI,cAAa;EAE7B,MAAM,EAAE,cAAc,mBAAkB;EAExC,MAAM,EAAE,MAAM,UAAU,aAAa,qBAAqB,CAAC,aAAa,EAAE,EAAE,MAAM,EAAE;GAClF,MAAM;GACN,UAAU;GACV,UAAU;GACX,CAAA;EAED,MAAM,YAAY,eAAe;AAC/B,UAAO,CAAC,IAAI,GAAG,IAAI,EAAE,KAAK,MAAM,CAAA;IACjC;EAED,MAAM,cAAc,YAA4B;EAEhD,MAAM,YAAY,eAAe;GAC/B,MAAM,EAAE,QAAQ,SAAS;AACzB,OAAI,OAAQ,QAAO;AACnB,OAAI,SAAS,OAAQ,QAAO;AAC5B,OAAI,SAAS,QAAS,QAAO;AAC7B,OAAI,SAAS,OAAQ,QAAO;AAC5B,UAAO;IACR;EAED,MAAM,cAAc,YAAkB;EAEtC,MAAM,EAAE,YAAY,iBAAiB,eAAc;AAEnD,cACQ,MAAM,aACX,eAAe;AACd,OAAI,cAAc,CAAE;AACpB,eAAY,QAAQ,aAAa,KAAK,WAAW,GAAG,KAAA;KAEtD,EAAE,WAAW,MAAK,CACpB;EAEA,MAAM,iBAAiB,eAAe;AACpC,UAAO,YAAY,OAAO,OAAO,UAAU,MAAM,IAAI;IACtD;EAED,MAAM,qBAAqB,YAAY,SAAgB;AACrD,eAAY,QAAQ;AACpB,QAAK,qBAAqB,KAAK,OAAO,UAAU,MAAM,CAAA;IACvD;EAED,eAAe,iBAAiB,MAAa;AAC3C,SAAM,mBAAmB,KAAI;AAC7B,eAAY,OAAO,OAAM;;EAG3B,SAAS,cAAc;AACrB,eAAY,QAAQ,KAAA;AACpB,QAAK,qBAAqB,KAAA,EAAS;;;WA/G1B,MAAA,SAAQ,IAAA,WAAA,EAPjB,YA4Ba,MAAA,YAAA,EAAA;;IA3BV,OAAK,eAAE,UAAA,MAAS;IACjB,SAAQ;IACR,OAAM;aACF;IAAJ,KAAI;IACH,oBAAc,OAAA,OAAA,OAAA,WAAf;IACC,UAAU,MAAA,SAAQ;;IAGR,SAAO,cAaN,CAZV,YAYU,MAAA,cAAA,EAAA;KAXP,MAAM,MAAA,KAAI;KACX,mBAAA;KACC,WAAW,QAAA;KACX,aAAa,QAAA;KACb,eAAa,eAAA;KACb,UAAU,MAAA,SAAQ;KAClB,SAAO;;KAEG,QAAM,cACqC,CAApD,YAAoD,MAAA,YAAA,EAAA,EAA3C,OAAK,eAAE,MAAA,IAAG,CAAC,EAAC,OAAA,CAAA,EAAA,EAAA;6BAAsB,CAAZ,YAAY,MAAA,SAAA,CAAA,CAAA,CAAA;;;;;;;;;;;IAKtC,SAAO,cAC6E,CAA7F,YAA6F,MAAA,YAAA,EAAA;KAAhF,MAAA,MAAA,KAAI;KAAE,MAAA,QAAA;KAAM,iBAAA,QAAA;KAAe,MAAM,YAAA;KAAc,iBAAa;;;;;;;;iDAI7E,mBAEW,UAAA,EAAA,KAAA,GAAA,EAAA,CAAA,gBAAA,gBADN,eAAA,SAAkB,MAAA,mBAAkB,CAAA,EAAA,EAAA,CAAA,EAAA,GAAA"}
@@ -8,10 +8,10 @@ declare const __VLS_export: _$vue.DefineComponent<DatePickerProps, {}, {}, {}, {
8
8
  "onUpdate:modelValue"?: ((value?: string | number | Date | undefined) => any) | undefined;
9
9
  }>, {
10
10
  type: "date" | "month" | "year";
11
+ clearable: boolean;
12
+ placeholder: string;
11
13
  disabled: boolean;
12
14
  readonly: boolean;
13
- placeholder: string;
14
- clearable: boolean;
15
15
  }, {}, {}, {}, string, _$vue.ComponentProvideOptions, false, {}, any>;
16
16
  declare const _default: typeof __VLS_export;
17
17
  //#endregion
@@ -1,9 +1,8 @@
1
1
  import _sfc_main$1 from "../icon/icon.js";
2
- import { injectFormContext } from "../../utils/form-context.js";
3
2
  import _sfc_main$2 from "../dropdown/dropdown.js";
4
3
  import _sfc_main$3 from "../date-panel/date-panel.js";
5
4
  import { Fragment, Transition, computed, createBlock, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, normalizeClass, openBlock, shallowRef, toDisplayString, unref, watch, withCtx, withModifiers } from "vue";
6
- import { FORM_EMPTY_CONTENT, bem } from "@veltra/utils";
5
+ import { FORM_EMPTY_CONTENT, bem, injectFormContext } from "@veltra/utils";
7
6
  import { useFormFallbackProps, useUserAction } from "@veltra/compositions";
8
7
  import { date } from "@cat-kit/core";
9
8
  import { Calendar, Close } from "@veltra/icons/normal";
@@ -1 +1 @@
1
- {"version":3,"file":"date-range-picker.js","names":[],"sources":["../../../src/components/date-range-picker/date-range-picker.vue"],"sourcesContent":["<template>\n <u-dropdown\n :class=\"className\"\n trigger=\"click\"\n :content-class=\"[cls.e('panel'), cls.em('panel', size)]\"\n width=\"auto\"\n ref=\"dropdownRef\"\n :disabled=\"disabled\"\n @mouseenter.native=\"hovered = true\"\n @mouseleave.native=\"hovered = false\"\n v-if=\"!readonly\"\n >\n <template #trigger>\n <input\n type=\"text\"\n :class=\"cls.e('input')\"\n :value=\"displayedOfStart\"\n :placeholder=\"placeholder[0]\"\n readonly\n />\n <span :class=\"cls.e('separator')\">至</span>\n <input\n type=\"text\"\n :class=\"cls.e('input')\"\n :value=\"displayedOfEnd\"\n :placeholder=\"placeholder[1]\"\n readonly\n />\n\n <Transition name=\"zoom-in\" mode=\"out-in\">\n <UIcon\n v-if=\"clearable && modelValue && hovered && !disabled\"\n :class=\"[cls.e('icon'), cls.e('clear')]\"\n title=\"清除\"\n @click.stop=\"handleClear\"\n >\n <Close />\n </UIcon>\n\n <u-icon :class=\"cls.e('icon')\" v-else><Calendar /></u-icon>\n </Transition>\n </template>\n\n <template #content>\n <UDatePanel\n range\n :type\n :disabled-date\n :size\n :range-date=\"currentRangeDate\"\n @select:range-date=\"handleSelect\"\n />\n </template>\n </u-dropdown>\n\n <template v-else>\n {{ displayedOfStart || FORM_EMPTY_CONTENT }} 至\n {{ displayedOfEnd || FORM_EMPTY_CONTENT }}\n </template>\n</template>\n\n<script lang=\"ts\" setup>\nimport { date, type Dater } from '@cat-kit/core'\nimport { useFormFallbackProps, useUserAction } from '@veltra/compositions'\nimport { Calendar, Close } from '@veltra/icons/normal'\nimport { bem, FORM_EMPTY_CONTENT } from '@veltra/utils'\nimport { computed, shallowRef, watch } from 'vue'\n\nimport type { DateRangePickerEmits, DateRangePickerProps, DropdownExposed } from '../../types'\nimport { injectFormContext } from '../../utils/form-context'\nimport { UDatePanel } from '../date-panel'\nimport { UDropdown } from '../dropdown'\nimport { UIcon } from '../icon'\n\ndefineOptions({\n name: 'DateRangePicker'\n})\n\nconst props = withDefaults(defineProps<DateRangePickerProps>(), {\n placeholder: () => ['起始日期', '结束日期'],\n type: 'date',\n disabled: undefined,\n readonly: undefined,\n clearable: true\n})\n\nconst emit = defineEmits<DateRangePickerEmits>()\n\nconst cls = bem('date-range-picker')\n\nconst className = computed(() => {\n return [cls.b, cls.m(size.value), bem.is('disabled', disabled.value)]\n})\n\nconst { formProps } = injectFormContext()\n\nconst { size, disabled, readonly } = useFormFallbackProps([formProps ?? {}, props], {\n size: 'default',\n disabled: false,\n readonly: false\n})\n\nconst dropdownRef = shallowRef<DropdownExposed>()\n\nconst { userAction, isUserActive } = useUserAction()\n\nconst currentRangeDate = shallowRef<[Dater, Dater]>()\n\nconst displayedOfStart = computed(() => {\n return props.modelValue?.[0]\n})\n\nconst displayedOfEnd = computed(() => {\n return props.modelValue?.[1]\n})\n\nconst formatStr = computed(() => {\n const { format, type } = props\n if (format) return format\n if (type === 'date') return 'yyyy-MM-dd'\n if (type === 'month') return 'yyyy-MM'\n if (type === 'year') return 'yyyy'\n return 'yyyy-MM-dd'\n})\n\nwatch(\n () => props.modelValue,\n (val) => {\n if (isUserActive()) return\n if (val?.length === 2) {\n currentRangeDate.value = [date(val[0]), date(val[1])]\n }\n },\n { immediate: true }\n)\n\nconst commitSelectedRange = userAction((rangeDate: [Dater, Dater] | undefined) => {\n currentRangeDate.value = rangeDate\n emit('update:modelValue', rangeDate?.map((d) => d.format(formatStr.value)) as [string, string])\n})\n\nasync function handleSelect(rangeDate: [Dater, Dater] | undefined) {\n await commitSelectedRange(rangeDate)\n dropdownRef.value?.close()\n}\n\nconst hovered = shallowRef(false)\n\nfunction handleClear() {\n currentRangeDate.value = undefined\n emit('update:modelValue', undefined)\n}\n</script>\n"],"mappings":"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"}
1
+ {"version":3,"file":"date-range-picker.js","names":[],"sources":["../../../src/components/date-range-picker/date-range-picker.vue"],"sourcesContent":["<template>\n <u-dropdown\n :class=\"className\"\n trigger=\"click\"\n :content-class=\"[cls.e('panel'), cls.em('panel', size)]\"\n width=\"auto\"\n ref=\"dropdownRef\"\n :disabled=\"disabled\"\n @mouseenter.native=\"hovered = true\"\n @mouseleave.native=\"hovered = false\"\n v-if=\"!readonly\"\n >\n <template #trigger>\n <input\n type=\"text\"\n :class=\"cls.e('input')\"\n :value=\"displayedOfStart\"\n :placeholder=\"placeholder[0]\"\n readonly\n />\n <span :class=\"cls.e('separator')\">至</span>\n <input\n type=\"text\"\n :class=\"cls.e('input')\"\n :value=\"displayedOfEnd\"\n :placeholder=\"placeholder[1]\"\n readonly\n />\n\n <Transition name=\"zoom-in\" mode=\"out-in\">\n <UIcon\n v-if=\"clearable && modelValue && hovered && !disabled\"\n :class=\"[cls.e('icon'), cls.e('clear')]\"\n title=\"清除\"\n @click.stop=\"handleClear\"\n >\n <Close />\n </UIcon>\n\n <u-icon :class=\"cls.e('icon')\" v-else><Calendar /></u-icon>\n </Transition>\n </template>\n\n <template #content>\n <UDatePanel\n range\n :type\n :disabled-date\n :size\n :range-date=\"currentRangeDate\"\n @select:range-date=\"handleSelect\"\n />\n </template>\n </u-dropdown>\n\n <template v-else>\n {{ displayedOfStart || FORM_EMPTY_CONTENT }} 至\n {{ displayedOfEnd || FORM_EMPTY_CONTENT }}\n </template>\n</template>\n\n<script lang=\"ts\" setup>\nimport { date, type Dater } from '@cat-kit/core'\nimport { useFormFallbackProps, useUserAction } from '@veltra/compositions'\nimport { Calendar, Close } from '@veltra/icons/normal'\nimport { bem, FORM_EMPTY_CONTENT } from '@veltra/utils'\nimport { injectFormContext } from '@veltra/utils'\nimport { computed, shallowRef, watch } from 'vue'\n\nimport type { DateRangePickerEmits, DateRangePickerProps, DropdownExposed } from '../../types'\nimport { UDatePanel } from '../date-panel'\nimport { UDropdown } from '../dropdown'\nimport { UIcon } from '../icon'\n\ndefineOptions({\n name: 'DateRangePicker'\n})\n\nconst props = withDefaults(defineProps<DateRangePickerProps>(), {\n placeholder: () => ['起始日期', '结束日期'],\n type: 'date',\n disabled: undefined,\n readonly: undefined,\n clearable: true\n})\n\nconst emit = defineEmits<DateRangePickerEmits>()\n\nconst cls = bem('date-range-picker')\n\nconst className = computed(() => {\n return [cls.b, cls.m(size.value), bem.is('disabled', disabled.value)]\n})\n\nconst { formProps } = injectFormContext()\n\nconst { size, disabled, readonly } = useFormFallbackProps([formProps ?? {}, props], {\n size: 'default',\n disabled: false,\n readonly: false\n})\n\nconst dropdownRef = shallowRef<DropdownExposed>()\n\nconst { userAction, isUserActive } = useUserAction()\n\nconst currentRangeDate = shallowRef<[Dater, Dater]>()\n\nconst displayedOfStart = computed(() => {\n return props.modelValue?.[0]\n})\n\nconst displayedOfEnd = computed(() => {\n return props.modelValue?.[1]\n})\n\nconst formatStr = computed(() => {\n const { format, type } = props\n if (format) return format\n if (type === 'date') return 'yyyy-MM-dd'\n if (type === 'month') return 'yyyy-MM'\n if (type === 'year') return 'yyyy'\n return 'yyyy-MM-dd'\n})\n\nwatch(\n () => props.modelValue,\n (val) => {\n if (isUserActive()) return\n if (val?.length === 2) {\n currentRangeDate.value = [date(val[0]), date(val[1])]\n }\n },\n { immediate: true }\n)\n\nconst commitSelectedRange = userAction((rangeDate: [Dater, Dater] | undefined) => {\n currentRangeDate.value = rangeDate\n emit('update:modelValue', rangeDate?.map((d) => d.format(formatStr.value)) as [string, string])\n})\n\nasync function handleSelect(rangeDate: [Dater, Dater] | undefined) {\n await commitSelectedRange(rangeDate)\n dropdownRef.value?.close()\n}\n\nconst hovered = shallowRef(false)\n\nfunction handleClear() {\n currentRangeDate.value = undefined\n emit('update:modelValue', undefined)\n}\n</script>\n"],"mappings":"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"}
@@ -8,10 +8,10 @@ declare const __VLS_export: _$vue.DefineComponent<DateRangePickerProps, {}, {},
8
8
  "onUpdate:modelValue"?: ((value?: [string, string] | undefined) => any) | undefined;
9
9
  }>, {
10
10
  type: "date" | "month" | "year";
11
+ clearable: boolean;
12
+ placeholder: [string, string];
11
13
  disabled: boolean;
12
14
  readonly: boolean;
13
- placeholder: [string, string];
14
- clearable: boolean;
15
15
  }, {}, {}, {}, string, _$vue.ComponentProvideOptions, false, {}, any>;
16
16
  declare const _default: typeof __VLS_export;
17
17
  //#endregion
@@ -60,7 +60,6 @@
60
60
  overflow: hidden;
61
61
  background-color: var(--u-bg-color-middle);
62
62
  backdrop-filter: var(--u-bg-filter);
63
- -webkit-backdrop-filter: var(--u-bg-filter);
64
63
  }
65
64
  .u-dialog__header {
66
65
  height: 49px;
@@ -83,6 +82,7 @@
83
82
  .u-dialog__body {
84
83
  padding: 8px;
85
84
  background-color: var(--u-bg-color-top);
85
+ backdrop-filter: var(--u-bg-filter);
86
86
  flex-grow: 1;
87
87
  }
88
88
  .u-dialog__footer {
@@ -1,11 +1,10 @@
1
- import { injectFormContext } from "../../utils/form-context.js";
2
1
  import _sfc_main$1 from "./components/variable-picker.js";
3
2
  import { parse } from "./core/model.js";
4
3
  import { createEditor } from "./core/editor.js";
5
4
  import { createMention } from "./core/mention.js";
6
5
  import { createVariableMap } from "./di.js";
7
6
  import { computed, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, nextTick, normalizeClass, onBeforeUnmount, onMounted, openBlock, shallowRef, toDisplayString, unref, useTemplateRef, watch } from "vue";
8
- import { bem } from "@veltra/utils";
7
+ import { bem, injectFormContext } from "@veltra/utils";
9
8
  import { useFormFallbackProps } from "@veltra/compositions";
10
9
  //#region src/components/expression-editor/expression-editor.vue
11
10
  const _hoisted_1 = [