@veltra/desktop 1.0.3 → 1.0.5

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 (207) hide show
  1. package/dist/components/action/action-group.vue.d.ts +1 -1
  2. package/dist/components/action/action.vue.d.ts +2 -2
  3. package/dist/components/auto-complete/auto-complete.js.map +1 -1
  4. package/dist/components/auto-complete/auto-complete.vue.d.ts +2 -2
  5. package/dist/components/button/button.vue.d.ts +1 -1
  6. package/dist/components/cascade/cascade.js.map +1 -1
  7. package/dist/components/cascade/cascade.vue.d.ts +7 -7
  8. package/dist/components/checkbox/checkbox-button.js.map +1 -1
  9. package/dist/components/checkbox/checkbox-button.vue.d.ts +1 -1
  10. package/dist/components/checkbox/checkbox.vue.d.ts +1 -1
  11. package/dist/components/checkbox-group/checkbox-group.js.map +1 -1
  12. package/dist/components/checkbox-group/checkbox-group.vue.d.ts +2 -2
  13. package/dist/components/code-editor/code-editor.vue.d.ts +1 -1
  14. package/dist/components/date-picker/date-picker.js.map +1 -1
  15. package/dist/components/date-picker/date-picker.vue.d.ts +3 -3
  16. package/dist/components/date-range-picker/date-range-picker.js.map +1 -1
  17. package/dist/components/date-range-picker/date-range-picker.vue.d.ts +3 -3
  18. package/dist/components/form-item/helper.js.map +1 -1
  19. package/dist/components/grid/use-responsive.js.map +1 -1
  20. package/dist/components/grid-input/grid-input.vue.d.ts +1 -1
  21. package/dist/components/group-input/group-input.js.map +1 -1
  22. package/dist/components/icon/icon.js.map +1 -1
  23. package/dist/components/input/input.js.map +1 -1
  24. package/dist/components/input/input.vue.d.ts +4 -4
  25. package/dist/components/input/input.vue_vue_type_script_setup_true_lang.js.map +1 -1
  26. package/dist/components/message-confirm/message-confirm.js.map +1 -1
  27. package/dist/components/multi-select/multi-select.js.map +1 -1
  28. package/dist/components/multi-select/multi-select.vue.d.ts +4 -4
  29. package/dist/components/multi-tree-select/multi-tree-select.vue.d.ts +6 -6
  30. package/dist/components/number-input/number-input.js.map +1 -1
  31. package/dist/components/number-input/number-input.vue.d.ts +2 -2
  32. package/dist/components/number-range-input/number-range-input.js.map +1 -1
  33. package/dist/components/number-range-input/number-range-input.vue.d.ts +3 -3
  34. package/dist/components/palette/palette.vue.d.ts +1 -1
  35. package/dist/components/password-input/password-input.vue.d.ts +2 -2
  36. package/dist/components/progress/progress.vue.d.ts +1 -1
  37. package/dist/components/radio-group/radio-group.js.map +1 -1
  38. package/dist/components/radio-group/radio-group.vue.d.ts +2 -2
  39. package/dist/components/rich-text-editor/rich-text-editor.vue.d.ts +2 -2
  40. package/dist/components/select/select.js.map +1 -1
  41. package/dist/components/select/select.vue.d.ts +4 -4
  42. package/dist/components/switch/switch.vue.d.ts +1 -1
  43. package/dist/components/table/table-foot.js.map +1 -1
  44. package/dist/components/tabs/tabs.vue.d.ts +2 -2
  45. package/dist/components/textarea/textarea.js.map +1 -1
  46. package/dist/components/textarea/textarea.vue.d.ts +4 -4
  47. package/dist/components/tree/tree.vue.d.ts +1 -1
  48. package/dist/components/tree-select/tree-select.vue.d.ts +6 -6
  49. package/dist/index.d.ts +1 -1
  50. package/dist/types/action.d.ts +1 -1
  51. package/dist/types/animation.d.ts +1 -1
  52. package/dist/types/auto-complete.d.ts +1 -2
  53. package/dist/types/badge.d.ts +1 -2
  54. package/dist/types/batch-edit.d.ts +1 -1
  55. package/dist/types/button.d.ts +1 -2
  56. package/dist/types/calendar.d.ts +1 -1
  57. package/dist/types/card.d.ts +1 -2
  58. package/dist/types/cascade.d.ts +1 -2
  59. package/dist/types/check-tag.d.ts +1 -1
  60. package/dist/types/checkbox-group.d.ts +1 -1
  61. package/dist/types/checkbox.d.ts +1 -1
  62. package/dist/types/code-editor.d.ts +1 -2
  63. package/dist/types/condition-editor.d.ts +1 -1
  64. package/dist/types/context-menu.d.ts +1 -2
  65. package/dist/types/css-transition.d.ts +1 -1
  66. package/dist/types/date-panel.d.ts +1 -1
  67. package/dist/types/date-picker.d.ts +1 -2
  68. package/dist/types/date-range-picker.d.ts +1 -2
  69. package/dist/types/dialog.d.ts +1 -2
  70. package/dist/types/drawer.d.ts +1 -1
  71. package/dist/types/dropdown.d.ts +1 -1
  72. package/dist/types/empty.d.ts +1 -1
  73. package/dist/types/expression-editor.d.ts +1 -2
  74. package/dist/types/file-picker.d.ts +1 -2
  75. package/dist/types/float-button.d.ts +1 -2
  76. package/dist/types/form-item.d.ts +1 -1
  77. package/dist/types/form.d.ts +1 -3
  78. package/dist/types/grid-input.d.ts +1 -1
  79. package/dist/types/grid.d.ts +1 -2
  80. package/dist/types/group-input.d.ts +1 -2
  81. package/dist/types/index.d.ts +2 -2
  82. package/dist/types/layout.d.ts +1 -1
  83. package/dist/types/list.d.ts +1 -2
  84. package/dist/types/loading.d.ts +1 -1
  85. package/dist/types/menu.d.ts +1 -1
  86. package/dist/types/message-confirm.d.ts +1 -2
  87. package/dist/types/message.d.ts +1 -1
  88. package/dist/types/multi-auto-complete.d.ts +1 -1
  89. package/dist/types/multi-select.d.ts +1 -2
  90. package/dist/types/multi-tree-select.d.ts +1 -2
  91. package/dist/types/notification.d.ts +1 -2
  92. package/dist/types/paginator.d.ts +1 -1
  93. package/dist/types/palette.d.ts +1 -2
  94. package/dist/types/password-input.d.ts +1 -1
  95. package/dist/types/pop-confirm.d.ts +1 -1
  96. package/dist/types/pop.d.ts +1 -1
  97. package/dist/types/progress-nodes.d.ts +1 -2
  98. package/dist/types/progress.d.ts +1 -2
  99. package/dist/types/quick-batch-edit.d.ts +1 -1
  100. package/dist/types/radio-group.d.ts +1 -2
  101. package/dist/types/radio.d.ts +1 -2
  102. package/dist/types/rich-text-editor.d.ts +1 -2
  103. package/dist/types/scroll.d.ts +1 -1
  104. package/dist/types/select.d.ts +1 -2
  105. package/dist/types/slider.d.ts +1 -2
  106. package/dist/types/steps.d.ts +1 -2
  107. package/dist/types/switch.d.ts +1 -2
  108. package/dist/types/table-editor.d.ts +1 -1
  109. package/dist/types/table.d.ts +1 -2
  110. package/dist/types/tabs.d.ts +1 -1
  111. package/dist/types/tag.d.ts +1 -1
  112. package/dist/types/text-editor.d.ts +1 -2
  113. package/dist/types/textarea.d.ts +1 -2
  114. package/dist/types/theme.d.ts +1 -1
  115. package/dist/types/tip.d.ts +1 -1
  116. package/dist/types/tree-select.d.ts +1 -2
  117. package/dist/types/tree.d.ts +1 -1
  118. package/dist/types/watermark.d.ts +1 -1
  119. package/package.json +13 -17
  120. package/src/components/auto-complete/auto-complete.vue +1 -2
  121. package/src/components/cascade/cascade.vue +1 -2
  122. package/src/components/checkbox/checkbox-button.vue +1 -2
  123. package/src/components/checkbox-group/checkbox-group.vue +1 -2
  124. package/src/components/date-picker/date-picker.vue +1 -2
  125. package/src/components/date-range-picker/date-range-picker.vue +1 -2
  126. package/src/components/form-item/helper.ts +1 -2
  127. package/src/components/grid/use-responsive.ts +1 -1
  128. package/src/components/group-input/group-input.vue +1 -2
  129. package/src/components/icon/icon.vue +1 -2
  130. package/src/components/input/input.vue +1 -2
  131. package/src/components/message-confirm/message-confirm.vue +1 -2
  132. package/src/components/multi-select/multi-select.vue +1 -2
  133. package/src/components/number-input/number-input.vue +1 -3
  134. package/src/components/number-range-input/number-range-input.vue +1 -2
  135. package/src/components/radio-group/radio-group.vue +1 -2
  136. package/src/components/select/select.vue +1 -2
  137. package/src/components/table/table-foot.vue +1 -2
  138. package/src/components/textarea/textarea.vue +1 -2
  139. package/src/types/action.ts +1 -1
  140. package/src/types/animation.ts +1 -1
  141. package/src/types/auto-complete.ts +1 -2
  142. package/src/types/badge.ts +1 -2
  143. package/src/types/batch-edit.ts +1 -1
  144. package/src/types/button.ts +1 -2
  145. package/src/types/calendar.ts +1 -1
  146. package/src/types/card.ts +1 -2
  147. package/src/types/cascade.ts +1 -2
  148. package/src/types/check-tag.ts +1 -1
  149. package/src/types/checkbox-group.ts +1 -1
  150. package/src/types/checkbox.ts +1 -1
  151. package/src/types/code-editor.ts +1 -2
  152. package/src/types/condition-editor.ts +1 -1
  153. package/src/types/context-menu.ts +1 -2
  154. package/src/types/css-transition.ts +1 -1
  155. package/src/types/date-panel.ts +1 -1
  156. package/src/types/date-picker.ts +1 -2
  157. package/src/types/date-range-picker.ts +1 -2
  158. package/src/types/dialog.ts +1 -2
  159. package/src/types/drawer.ts +1 -1
  160. package/src/types/dropdown.ts +1 -1
  161. package/src/types/empty.ts +1 -1
  162. package/src/types/expression-editor.ts +1 -2
  163. package/src/types/file-picker.ts +1 -2
  164. package/src/types/float-button.ts +1 -2
  165. package/src/types/form-item.ts +1 -1
  166. package/src/types/form.ts +1 -3
  167. package/src/types/grid-input.ts +1 -1
  168. package/src/types/grid.ts +1 -2
  169. package/src/types/group-input.ts +1 -2
  170. package/src/types/index.ts +1 -1
  171. package/src/types/layout.ts +1 -1
  172. package/src/types/list.ts +1 -2
  173. package/src/types/loading.ts +1 -1
  174. package/src/types/menu.ts +1 -1
  175. package/src/types/message-confirm.ts +1 -2
  176. package/src/types/message.ts +1 -1
  177. package/src/types/multi-auto-complete.ts +1 -1
  178. package/src/types/multi-select.ts +1 -2
  179. package/src/types/multi-tree-select.ts +1 -2
  180. package/src/types/notification.ts +1 -2
  181. package/src/types/paginator.ts +1 -1
  182. package/src/types/palette.ts +1 -2
  183. package/src/types/password-input.ts +1 -1
  184. package/src/types/pop-confirm.ts +1 -1
  185. package/src/types/pop.ts +1 -1
  186. package/src/types/progress-nodes.ts +1 -2
  187. package/src/types/progress.ts +1 -2
  188. package/src/types/quick-batch-edit.ts +1 -1
  189. package/src/types/radio-group.ts +1 -2
  190. package/src/types/radio.ts +1 -2
  191. package/src/types/rich-text-editor.ts +1 -2
  192. package/src/types/scroll.ts +1 -1
  193. package/src/types/select.ts +1 -2
  194. package/src/types/slider.ts +1 -2
  195. package/src/types/steps.ts +1 -2
  196. package/src/types/switch.ts +1 -2
  197. package/src/types/table-editor.ts +1 -1
  198. package/src/types/table.ts +1 -2
  199. package/src/types/tabs.ts +1 -1
  200. package/src/types/tag.ts +1 -1
  201. package/src/types/text-editor.ts +1 -2
  202. package/src/types/textarea.ts +1 -2
  203. package/src/types/theme.ts +1 -1
  204. package/src/types/tip.ts +1 -1
  205. package/src/types/tree-select.ts +1 -2
  206. package/src/types/tree.ts +1 -1
  207. package/src/types/watermark.ts +1 -1
@@ -7,9 +7,9 @@ type __VLS_Slots = {
7
7
  default?: () => VNode[];
8
8
  };
9
9
  declare const __VLS_base: _$vue.DefineComponent<ActionGroupProps, {}, {}, {}, {}, _$vue.ComponentOptionsMixin, _$vue.ComponentOptionsMixin, {}, string, _$vue.PublicProps, Readonly<ActionGroupProps> & Readonly<{}>, {
10
- max: number;
11
10
  loading: boolean;
12
11
  circle: boolean;
12
+ max: number;
13
13
  }, {}, {}, {}, string, _$vue.ComponentProvideOptions, false, {}, any>;
14
14
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
15
15
  declare const _default: typeof __VLS_export;
@@ -16,11 +16,11 @@ declare const __VLS_base: _$vue.DefineComponent<ActionProps, {}, {}, {}, {}, _$v
16
16
  onRun?: (() => any) | undefined;
17
17
  }>, {
18
18
  size: _$_veltra_utils0.ComponentSize;
19
- type: ButtonType;
20
- text: boolean;
21
19
  loading: boolean;
22
20
  circle: boolean;
21
+ type: ButtonType;
23
22
  inDropdown: boolean;
23
+ text: boolean;
24
24
  }, {}, {}, {}, string, _$vue.ComponentProvideOptions, false, {}, any>;
25
25
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
26
26
  declare const _default: typeof __VLS_export;
@@ -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 { useFormComponent, useFormFallbackProps } from '@veltra/compositions'\nimport { vRipple } from '@veltra/directives'\nimport { bem, scrollIntoContainerView } from '@veltra/utils'\nimport { FORM_EMPTY_CONTENT } 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 } = useFormComponent()\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 { useFormComponent, 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 { 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 } = useFormComponent()\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
+ readonly: boolean;
28
+ disabled: boolean;
27
29
  placeholder: string;
28
30
  clearable: boolean;
29
- disabled: boolean;
30
- readonly: 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;
@@ -11,8 +11,8 @@ declare const __VLS_base: _$vue.DefineComponent<ButtonProps, _ButtonExposed, {},
11
11
  }, string, _$vue.PublicProps, Readonly<ButtonProps> & Readonly<{
12
12
  onClick?: ((e: MouseEvent) => any) | undefined;
13
13
  }>, {
14
- disabled: boolean;
15
14
  loadingIcon: _$vue.Component;
15
+ disabled: boolean;
16
16
  iconPosition: "left" | "right";
17
17
  propagate: boolean;
18
18
  }, {}, {}, {}, string, _$vue.ComponentProvideOptions, false, {}, any>;
@@ -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 { useFormComponent, useFormFallbackProps, useUpdateLock } from '@veltra/compositions'\nimport { ArrowDown, Close, Search } from '@veltra/icons/normal'\nimport { bem } from '@veltra/utils'\nimport { FORM_EMPTY_CONTENT } 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 } = useFormComponent()\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\n// 初始化更新辅助\nconst updater = useUpdateLock()\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 updater,\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 updater,\n disabled,\n readonly\n })\n\nfunction handleClick(panelIndex: number, item: CascadeNode) {\n // 选择\n selectItem(panelIndex, item)\n\n // 更新数据\n !props.multiple &&\n updater.updateAndLock(() => {\n if (!props.strict) {\n updateSingleValue()\n } else if (!item.children?.length) {\n updateSingleValue()\n }\n })\n}\n\nfunction handleCheck(item: CascadeNode, checked: boolean) {\n updater.updateAndLock(() => 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) => (node.visible = true))\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 { useFormComponent, useFormFallbackProps, useUpdateLock } 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 { 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 } = useFormComponent()\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\n// 初始化更新辅助\nconst updater = useUpdateLock()\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 updater,\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 updater,\n disabled,\n readonly\n })\n\nfunction handleClick(panelIndex: number, item: CascadeNode) {\n // 选择\n selectItem(panelIndex, item)\n\n // 更新数据\n !props.multiple &&\n updater.updateAndLock(() => {\n if (!props.strict) {\n updateSingleValue()\n } else if (!item.children?.length) {\n updateSingleValue()\n }\n })\n}\n\nfunction handleCheck(item: CascadeNode, checked: boolean) {\n updater.updateAndLock(() => 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) => (node.visible = true))\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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"}
@@ -3,25 +3,25 @@ import * as _$vue from "vue";
3
3
 
4
4
  //#region src/components/cascade/cascade.vue.d.ts
5
5
  declare const __VLS_export: _$vue.DefineComponent<CascadeProps, {}, {}, {}, {}, _$vue.ComponentOptionsMixin, _$vue.ComponentOptionsMixin, {} & {
6
+ clear: () => any;
6
7
  "update:modelValue": (value?: string | string[] | undefined) => any;
7
8
  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
+ onClear?: (() => any) | undefined;
10
11
  "onUpdate:modelValue"?: ((value?: string | string[] | undefined) => any) | undefined;
11
12
  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
+ readonly: boolean;
15
+ data: Record<string, any>[];
16
+ disabled: boolean;
17
+ placeholder: string;
18
+ clearable: boolean;
14
19
  separator: string;
15
20
  labelKey: string;
16
21
  valueKey: string;
17
- placeholder: string;
18
- clearable: boolean;
19
22
  childrenKey: string;
20
- data: Record<string, any>[];
21
23
  filterable: boolean;
22
24
  visibilityLimit: number;
23
- disabled: boolean;
24
- readonly: boolean;
25
25
  }, {}, {}, {}, string, _$vue.ComponentProvideOptions, false, {}, any>;
26
26
  declare const _default: typeof __VLS_export;
27
27
  //#endregion
@@ -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 { useFormComponent, useFormFallbackProps } from '@veltra/compositions'\nimport { bem } from '@veltra/utils'\nimport { FORM_EMPTY_CONTENT } 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 } = useFormComponent()\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,kBAAiB;EAEvC,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 { useFormComponent, useFormFallbackProps } from '@veltra/compositions'\nimport { bem, FORM_EMPTY_CONTENT } 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 } = useFormComponent()\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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0BA,MAAM,QAAQ;EAOd,MAAM,OAAO;AAEA,YAAA;EAIb,MAAM,MAAM,IAAI,kBAAiB;EAEjC,MAAM,UAAU,SAAoB,SAAA,aAAC;EAErC,MAAM,EAAE,cAAc,kBAAiB;EAEvC,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;;;WA/DlB,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"}
@@ -20,9 +20,9 @@ declare const __VLS_base: _$vue.DefineComponent<__VLS_PublicProps, {}, {}, {}, {
20
20
  "onUpdate:modelValue"?: ((checked: boolean) => any) | undefined;
21
21
  onChange?: ((checked: boolean) => any) | undefined;
22
22
  }>, {
23
- disabled: boolean;
24
23
  readonly: boolean;
25
24
  type: _$_veltra_utils0.ColorType;
25
+ disabled: boolean;
26
26
  round: boolean;
27
27
  }, {}, {}, {}, string, _$vue.ComponentProvideOptions, false, {}, any>;
28
28
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
@@ -20,8 +20,8 @@ declare const __VLS_base: _$vue.DefineComponent<__VLS_PublicProps, {}, {}, {}, {
20
20
  "onUpdate:modelValue"?: ((checked: boolean) => any) | undefined;
21
21
  onChange?: ((checked: boolean, e: MouseEvent) => any) | undefined;
22
22
  }>, {
23
- disabled: boolean;
24
23
  readonly: boolean;
24
+ disabled: boolean;
25
25
  }, {}, {}, {}, string, _$vue.ComponentProvideOptions, false, {}, any>;
26
26
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
27
27
  declare const _default: typeof __VLS_export;
@@ -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 { useFormComponent, useFormFallbackProps } from '@veltra/compositions'\nimport { bem } from '@veltra/utils'\nimport { FORM_EMPTY_CONTENT } 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 } = useFormComponent()\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,kBAAiB;EAEvC,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,MAAK,GAC5C;;;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 { useFormComponent, useFormFallbackProps } from '@veltra/compositions'\nimport { bem, FORM_EMPTY_CONTENT } 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 } = useFormComponent()\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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuCA,MAAM,QAAQ;EASd,MAAM,QAAQ,SAAkB,SAAA,aAAC;EAEjC,MAAM,MAAM,IAAI,iBAAgB;EAEhC,MAAM,EAAE,cAAc,kBAAiB;EAEvC,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,MAAK,GAC5C;;;WA1FoD,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"}
@@ -14,10 +14,10 @@ declare const __VLS_export: _$vue.DefineComponent<__VLS_PublicProps, {}, {}, {},
14
14
  }, string, _$vue.PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
15
15
  "onUpdate:modelValue"?: ((value: any[]) => any) | undefined;
16
16
  }>, {
17
+ readonly: boolean;
18
+ disabled: boolean;
17
19
  labelKey: string;
18
20
  valueKey: string;
19
- disabled: boolean;
20
- readonly: boolean;
21
21
  }, {}, {}, {}, string, _$vue.ComponentProvideOptions, false, {}, any>;
22
22
  declare const _default: typeof __VLS_export;
23
23
  //#endregion
@@ -12,8 +12,8 @@ declare const __VLS_export: _$vue.DefineComponent<__VLS_PublicProps, {}, {}, {},
12
12
  }, string, _$vue.PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
13
13
  "onUpdate:modelValue"?: ((value: string | undefined) => any) | undefined;
14
14
  }>, {
15
- disabled: boolean;
16
15
  readonly: boolean;
16
+ disabled: boolean;
17
17
  }, {}, {}, {}, string, _$vue.ComponentProvideOptions, false, {}, any>;
18
18
  declare const _default: typeof __VLS_export;
19
19
  //#endregion
@@ -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 { useFormComponent, useFormFallbackProps, useUpdateLock } from '@veltra/compositions'\nimport { Calendar } from '@veltra/icons/normal'\nimport { bem } from '@veltra/utils'\nimport { 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 { 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 } = useFormComponent()\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 { update, updateAndLock } = useUpdateLock()\n\nwatch(\n () => props.modelValue,\n (modelValue) => {\n update(() => {\n currentDate.value = modelValue ? date(modelValue) : undefined\n })\n },\n { immediate: true }\n)\n\nconst displayedValue = computed(() => {\n return currentDate.value?.format(formatStr.value) ?? ''\n})\n\nasync function handleSelectDate(date: Dater) {\n await updateAndLock(() => {\n currentDate.value = date\n emit('update:modelValue', date.format(formatStr.value))\n })\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,kBAAiB;EAEvC,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,QAAQ,kBAAkB,eAAc;AAEhD,cACQ,MAAM,aACX,eAAe;AACd,gBAAa;AACX,gBAAY,QAAQ,aAAa,KAAK,WAAW,GAAG,KAAA;KACrD;KAEH,EAAE,WAAW,MAAK,CACpB;EAEA,MAAM,iBAAiB,eAAe;AACpC,UAAO,YAAY,OAAO,OAAO,UAAU,MAAM,IAAI;IACtD;EAED,eAAe,iBAAiB,MAAa;AAC3C,SAAM,oBAAoB;AACxB,gBAAY,QAAQ;AACpB,SAAK,qBAAqB,KAAK,OAAO,UAAU,MAAM,CAAA;KACvD;AACD,eAAY,OAAO,OAAM;;EAG3B,SAAS,cAAc;AACrB,eAAY,QAAQ,KAAA;AACpB,QAAK,qBAAqB,KAAA,EAAS;;;WA9G1B,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 { useFormComponent, useFormFallbackProps, useUpdateLock } 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 { 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 } = useFormComponent()\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 { update, updateAndLock } = useUpdateLock()\n\nwatch(\n () => props.modelValue,\n (modelValue) => {\n update(() => {\n currentDate.value = modelValue ? date(modelValue) : undefined\n })\n },\n { immediate: true }\n)\n\nconst displayedValue = computed(() => {\n return currentDate.value?.format(formatStr.value) ?? ''\n})\n\nasync function handleSelectDate(date: Dater) {\n await updateAndLock(() => {\n currentDate.value = date\n emit('update:modelValue', date.format(formatStr.value))\n })\n dropdownRef.value?.close()\n}\n\nfunction handleClear() {\n currentDate.value = undefined\n emit('update:modelValue', undefined)\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsDA,MAAM,QAAQ;EAQd,MAAM,OAAO;EAEb,MAAM,MAAM,IAAI,cAAa;EAE7B,MAAM,EAAE,cAAc,kBAAiB;EAEvC,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,QAAQ,kBAAkB,eAAc;AAEhD,cACQ,MAAM,aACX,eAAe;AACd,gBAAa;AACX,gBAAY,QAAQ,aAAa,KAAK,WAAW,GAAG,KAAA;KACrD;KAEH,EAAE,WAAW,MAAK,CACpB;EAEA,MAAM,iBAAiB,eAAe;AACpC,UAAO,YAAY,OAAO,OAAO,UAAU,MAAM,IAAI;IACtD;EAED,eAAe,iBAAiB,MAAa;AAC3C,SAAM,oBAAoB;AACxB,gBAAY,QAAQ;AACpB,SAAK,qBAAqB,KAAK,OAAO,UAAU,MAAM,CAAA;KACvD;AACD,eAAY,OAAO,OAAM;;EAG3B,SAAS,cAAc;AACrB,eAAY,QAAQ,KAAA;AACpB,QAAK,qBAAqB,KAAA,EAAS;;;WA7G1B,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"}
@@ -7,11 +7,11 @@ declare const __VLS_export: _$vue.DefineComponent<DatePickerProps, {}, {}, {}, {
7
7
  }, string, _$vue.PublicProps, Readonly<DatePickerProps> & Readonly<{
8
8
  "onUpdate:modelValue"?: ((value?: string | undefined) => any) | undefined;
9
9
  }>, {
10
- placeholder: string;
11
- clearable: boolean;
12
- disabled: boolean;
13
10
  readonly: boolean;
14
11
  type: "date" | "month" | "year";
12
+ disabled: 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 +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 { useFormComponent, useFormFallbackProps } from '@veltra/compositions'\nimport { useUpdateLock } from '@veltra/compositions'\nimport { Calendar, Close } from '@veltra/icons/normal'\nimport { FORM_EMPTY_CONTENT } from '@veltra/utils'\nimport { bem } 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 } = useFormComponent()\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 { update, updateAndLock } = useUpdateLock()\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 update(() => {\n if (val?.length === 2) {\n currentRangeDate.value = [date(val[0]), date(val[1])]\n }\n })\n },\n { immediate: true }\n)\n\nasync function handleSelect(rangeDate: [Dater, Dater] | undefined) {\n await updateAndLock(() => {\n currentRangeDate.value = rangeDate\n emit('update:modelValue', rangeDate?.map((d) => d.format(formatStr.value)) as [string, string])\n })\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 { useFormComponent, useFormFallbackProps } from '@veltra/compositions'\nimport { useUpdateLock } 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 { 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 } = useFormComponent()\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 { update, updateAndLock } = useUpdateLock()\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 update(() => {\n if (val?.length === 2) {\n currentRangeDate.value = [date(val[0]), date(val[1])]\n }\n })\n },\n { immediate: true }\n)\n\nasync function handleSelect(rangeDate: [Dater, Dater] | undefined) {\n await updateAndLock(() => {\n currentRangeDate.value = rangeDate\n emit('update:modelValue', rangeDate?.map((d) => d.format(formatStr.value)) as [string, string])\n })\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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"}
@@ -7,11 +7,11 @@ declare const __VLS_export: _$vue.DefineComponent<DateRangePickerProps, {}, {},
7
7
  }, string, _$vue.PublicProps, Readonly<DateRangePickerProps> & Readonly<{
8
8
  "onUpdate:modelValue"?: ((value?: [string, string] | undefined) => any) | undefined;
9
9
  }>, {
10
- placeholder: [string, string];
11
- clearable: boolean;
12
- disabled: boolean;
13
10
  readonly: boolean;
14
11
  type: "date" | "month" | "year";
12
+ disabled: 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
@@ -1 +1 @@
1
- {"version":3,"file":"helper.js","names":[],"sources":["../../../src/components/form-item/helper.ts"],"sourcesContent":["import { o } from '@cat-kit/core'\nimport { bem, type BEM } from '@veltra/utils'\nimport type { FormComponentProps } from '@veltra/utils/types'\n\n/**\n * 获取表单项的属性\n * @param props 表单系列组件的属性\n * @returns\n */\nexport function getFormItemProps(\n props: FormComponentProps\n): Pick<FormComponentProps, 'label' | 'field' | 'readonly' | 'span' | 'tips'> {\n return o(props).pick(['label', 'field', 'readonly', 'span', 'tips']) as Pick<\n FormComponentProps,\n 'label' | 'field' | 'readonly' | 'span' | 'tips'\n >\n}\n\nexport const formItemCls: BEM<'form-item'> = bem('form-item')\n"],"mappings":";;;AAkBA,MAAa,cAAgC,IAAI,YAAY"}
1
+ {"version":3,"file":"helper.js","names":[],"sources":["../../../src/components/form-item/helper.ts"],"sourcesContent":["import { o } from '@cat-kit/core'\nimport { bem, type BEM, type FormComponentProps } from '@veltra/utils'\n\n/**\n * 获取表单项的属性\n * @param props 表单系列组件的属性\n * @returns\n */\nexport function getFormItemProps(\n props: FormComponentProps\n): Pick<FormComponentProps, 'label' | 'field' | 'readonly' | 'span' | 'tips'> {\n return o(props).pick(['label', 'field', 'readonly', 'span', 'tips']) as Pick<\n FormComponentProps,\n 'label' | 'field' | 'readonly' | 'span' | 'tips'\n >\n}\n\nexport const formItemCls: BEM<'form-item'> = bem('form-item')\n"],"mappings":";;;AAiBA,MAAa,cAAgC,IAAI,YAAY"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-responsive.js","names":[],"sources":["../../../src/components/grid/use-responsive.ts"],"sourcesContent":["import { debounce } from '@cat-kit/core'\nimport type { Undef } from '@veltra/utils/types/helper'\nimport {\n computed,\n shallowRef,\n watch,\n type ShallowRef,\n shallowReactive,\n onBeforeUnmount,\n type ComputedRef\n} from 'vue'\n\nimport type { Breakpoint, GridEmits, GridItemProps, GridProps } from '../../types'\nimport { getContainerBreakpoint } from './breakpoint'\n\ninterface ResponsiveOptions {\n props: GridProps\n emit: GridEmits\n /** 栅格容器模板引用 */\n gridRef: ShallowRef<HTMLElement | null>\n}\n\ninterface UseResponsiveReturned {\n responsive: ComputedRef<boolean>\n gridItemsProps: Set<GridItemProps>\n currentBreakpoint: ShallowRef<Breakpoint | undefined>\n}\n\nexport function useResponsive(options: ResponsiveOptions): UseResponsiveReturned {\n const { props, gridRef, emit } = options\n\n const gridItemsProps = shallowReactive<Set<GridItemProps>>(new Set())\n\n const responsive = computed(() => {\n return (props.cols && typeof props.cols !== 'number') || !!gridItemsProps.size\n })\n\n const currentBreakpoint = shallowRef<Breakpoint>()\n\n let observer: Undef<ResizeObserver>\n\n watch(\n [responsive, gridRef],\n ([responsive, dom]) => {\n if (!dom) return\n\n observer?.unobserve(dom)\n observer?.disconnect()\n observer = undefined\n\n if (!responsive) {\n currentBreakpoint.value = undefined\n return\n }\n\n observer = new ResizeObserver(\n debounce(([entry]) => {\n const target = entry!.target as HTMLElement\n const rect = target.getBoundingClientRect()\n emit('resize', rect)\n const breakpoint = getContainerBreakpoint(target.offsetWidth)\n const prev = currentBreakpoint.value\n if (\n prev !== undefined &&\n prev.name === breakpoint.name &&\n prev.level === breakpoint.level\n ) {\n return\n }\n currentBreakpoint.value = breakpoint\n emit('breakpoint-change', breakpoint)\n }, 0)\n )\n observer.observe(dom)\n },\n { immediate: true }\n )\n\n onBeforeUnmount(() => {\n gridRef.value && observer?.unobserve(gridRef.value)\n observer?.disconnect()\n })\n\n return { responsive, gridItemsProps, currentBreakpoint }\n}\n"],"mappings":";;;;AA4BA,SAAgB,cAAc,SAAmD;CAC/E,MAAM,EAAE,OAAO,SAAS,SAAS;CAEjC,MAAM,iBAAiB,gCAAoC,IAAI,KAAK,CAAC;CAErE,MAAM,aAAa,eAAe;AAChC,SAAQ,MAAM,QAAQ,OAAO,MAAM,SAAS,YAAa,CAAC,CAAC,eAAe;GAC1E;CAEF,MAAM,oBAAoB,YAAwB;CAElD,IAAI;AAEJ,OACE,CAAC,YAAY,QAAQ,GACpB,CAAC,YAAY,SAAS;AACrB,MAAI,CAAC,IAAK;AAEV,YAAU,UAAU,IAAI;AACxB,YAAU,YAAY;AACtB,aAAW,KAAA;AAEX,MAAI,CAAC,YAAY;AACf,qBAAkB,QAAQ,KAAA;AAC1B;;AAGF,aAAW,IAAI,eACb,UAAU,CAAC,WAAW;GACpB,MAAM,SAAS,MAAO;AAEtB,QAAK,UADQ,OAAO,uBAAuB,CACvB;GACpB,MAAM,aAAa,uBAAuB,OAAO,YAAY;GAC7D,MAAM,OAAO,kBAAkB;AAC/B,OACE,SAAS,KAAA,KACT,KAAK,SAAS,WAAW,QACzB,KAAK,UAAU,WAAW,MAE1B;AAEF,qBAAkB,QAAQ;AAC1B,QAAK,qBAAqB,WAAW;KACpC,EAAE,CACN;AACD,WAAS,QAAQ,IAAI;IAEvB,EAAE,WAAW,MAAM,CACpB;AAED,uBAAsB;AACpB,UAAQ,SAAS,UAAU,UAAU,QAAQ,MAAM;AACnD,YAAU,YAAY;GACtB;AAEF,QAAO;EAAE;EAAY;EAAgB;EAAmB"}
1
+ {"version":3,"file":"use-responsive.js","names":[],"sources":["../../../src/components/grid/use-responsive.ts"],"sourcesContent":["import { debounce } from '@cat-kit/core'\nimport type { Undef } from '@veltra/utils'\nimport {\n computed,\n shallowRef,\n watch,\n type ShallowRef,\n shallowReactive,\n onBeforeUnmount,\n type ComputedRef\n} from 'vue'\n\nimport type { Breakpoint, GridEmits, GridItemProps, GridProps } from '../../types'\nimport { getContainerBreakpoint } from './breakpoint'\n\ninterface ResponsiveOptions {\n props: GridProps\n emit: GridEmits\n /** 栅格容器模板引用 */\n gridRef: ShallowRef<HTMLElement | null>\n}\n\ninterface UseResponsiveReturned {\n responsive: ComputedRef<boolean>\n gridItemsProps: Set<GridItemProps>\n currentBreakpoint: ShallowRef<Breakpoint | undefined>\n}\n\nexport function useResponsive(options: ResponsiveOptions): UseResponsiveReturned {\n const { props, gridRef, emit } = options\n\n const gridItemsProps = shallowReactive<Set<GridItemProps>>(new Set())\n\n const responsive = computed(() => {\n return (props.cols && typeof props.cols !== 'number') || !!gridItemsProps.size\n })\n\n const currentBreakpoint = shallowRef<Breakpoint>()\n\n let observer: Undef<ResizeObserver>\n\n watch(\n [responsive, gridRef],\n ([responsive, dom]) => {\n if (!dom) return\n\n observer?.unobserve(dom)\n observer?.disconnect()\n observer = undefined\n\n if (!responsive) {\n currentBreakpoint.value = undefined\n return\n }\n\n observer = new ResizeObserver(\n debounce(([entry]) => {\n const target = entry!.target as HTMLElement\n const rect = target.getBoundingClientRect()\n emit('resize', rect)\n const breakpoint = getContainerBreakpoint(target.offsetWidth)\n const prev = currentBreakpoint.value\n if (\n prev !== undefined &&\n prev.name === breakpoint.name &&\n prev.level === breakpoint.level\n ) {\n return\n }\n currentBreakpoint.value = breakpoint\n emit('breakpoint-change', breakpoint)\n }, 0)\n )\n observer.observe(dom)\n },\n { immediate: true }\n )\n\n onBeforeUnmount(() => {\n gridRef.value && observer?.unobserve(gridRef.value)\n observer?.disconnect()\n })\n\n return { responsive, gridItemsProps, currentBreakpoint }\n}\n"],"mappings":";;;;AA4BA,SAAgB,cAAc,SAAmD;CAC/E,MAAM,EAAE,OAAO,SAAS,SAAS;CAEjC,MAAM,iBAAiB,gCAAoC,IAAI,KAAK,CAAC;CAErE,MAAM,aAAa,eAAe;AAChC,SAAQ,MAAM,QAAQ,OAAO,MAAM,SAAS,YAAa,CAAC,CAAC,eAAe;GAC1E;CAEF,MAAM,oBAAoB,YAAwB;CAElD,IAAI;AAEJ,OACE,CAAC,YAAY,QAAQ,GACpB,CAAC,YAAY,SAAS;AACrB,MAAI,CAAC,IAAK;AAEV,YAAU,UAAU,IAAI;AACxB,YAAU,YAAY;AACtB,aAAW,KAAA;AAEX,MAAI,CAAC,YAAY;AACf,qBAAkB,QAAQ,KAAA;AAC1B;;AAGF,aAAW,IAAI,eACb,UAAU,CAAC,WAAW;GACpB,MAAM,SAAS,MAAO;AAEtB,QAAK,UADQ,OAAO,uBAAuB,CACvB;GACpB,MAAM,aAAa,uBAAuB,OAAO,YAAY;GAC7D,MAAM,OAAO,kBAAkB;AAC/B,OACE,SAAS,KAAA,KACT,KAAK,SAAS,WAAW,QACzB,KAAK,UAAU,WAAW,MAE1B;AAEF,qBAAkB,QAAQ;AAC1B,QAAK,qBAAqB,WAAW;KACpC,EAAE,CACN;AACD,WAAS,QAAQ,IAAI;IAEvB,EAAE,WAAW,MAAM,CACpB;AAED,uBAAsB;AACpB,UAAQ,SAAS,UAAU,UAAU,QAAQ,MAAM;AACnD,YAAU,YAAY;GACtB;AAEF,QAAO;EAAE;EAAY;EAAgB;EAAmB"}
@@ -10,8 +10,8 @@ declare const __VLS_export: _$vue.DefineComponent<GridInputProps, _$_veltra_util
10
10
  "onUpdate:modelValue"?: ((value: string) => any) | undefined;
11
11
  onInput?: ((value: string) => any) | undefined;
12
12
  }>, {
13
- separator: string;
14
13
  length: number;
14
+ separator: string;
15
15
  zero: false;
16
16
  }, {}, {}, {}, string, _$vue.ComponentProvideOptions, false, {}, any>;
17
17
  declare const _default: typeof __VLS_export;
@@ -1 +1 @@
1
- {"version":3,"file":"group-input.js","names":[],"sources":["../../../src/components/group-input/group-input.vue"],"sourcesContent":["<template>\n <ul :class=\"[cls.b, cls.m(size)]\" v-if=\"!readonly\">\n <li v-if=\"isEmpty && creatable\">\n <u-button style=\"width: 100%\" :icon=\"Plus\" @click=\"handleAdd(0)\" :size=\"size\">\n 新增\n </u-button>\n </li>\n <li v-for=\"(item, index) of items\" :key=\"item.id\" :class=\"cls.e('item')\" :style=\"itemStyle\">\n <slot v-bind=\"{ item: item.data, index }\" />\n <span :class=\"cls.e('actions')\">\n <u-button\n :icon=\"Minus\"\n circle\n :disabled=\"disabled\"\n :size=\"size\"\n @click=\"handleRemove(index)\"\n />\n <u-button :icon=\"Plus\" circle :disabled=\"disabled\" :size=\"size\" @click=\"handleAdd(index)\" />\n </span>\n </li>\n </ul>\n\n <template v-else-if=\"items?.length\">\n <ul :class=\"[cls.b, cls.m(size)]\">\n <li v-for=\"item of items\" :key=\"item.id\" :class=\"cls.e('item')\">\n <span v-for=\"v in item.data\">{{ v }}</span>\n </li>\n </ul>\n </template>\n\n <template v-else>\n {{ FORM_EMPTY_CONTENT }}\n </template>\n</template>\n\n<script lang=\"ts\" setup generic=\"GroupItem extends Record<string, any>\">\nimport { useFormComponent, useFormFallbackProps } from '@veltra/compositions'\nimport { Minus, Plus } from '@veltra/icons/normal'\nimport { bem } from '@veltra/utils'\nimport { FORM_EMPTY_CONTENT } from '@veltra/utils'\nimport { computed } from 'vue'\n\nimport type { GroupInputEmits, GroupInputProps } from '../../types'\nimport { UButton } from '../button'\nimport { useGroupItems } from './use-group-items'\n\ndefineOptions({\n name: 'GroupInput'\n})\n\nconst props = withDefaults(defineProps<GroupInputProps<GroupItem>>(), {\n modelValue: () => [],\n disabled: undefined,\n readonly: undefined,\n creatable: true\n})\n\nconst emit = defineEmits<GroupInputEmits>()\n\nconst cls = bem('group-input')\n\nconst { formProps } = useFormComponent()\nconst { disabled, size, readonly } = useFormFallbackProps([formProps ?? {}, props], {\n size: 'default',\n disabled: false,\n readonly: false\n})\n\nconst { items, createItem, runByEvent } = useGroupItems({\n props,\n emit\n})\n\nconst isEmpty = computed(() => {\n return !items.value.length\n})\n\nfunction handleAdd(index: number) {\n runByEvent(() => {\n items.value = [\n ...items.value.slice(0, index + 1),\n createItem({}),\n ...items.value.slice(index + 1)\n ]\n })\n}\n\nfunction handleRemove(index: number) {\n runByEvent(() => {\n items.value = [...items.value.slice(0, index), ...items.value.slice(index + 1)]\n })\n}\n</script>\n"],"mappings":"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"}
1
+ {"version":3,"file":"group-input.js","names":[],"sources":["../../../src/components/group-input/group-input.vue"],"sourcesContent":["<template>\n <ul :class=\"[cls.b, cls.m(size)]\" v-if=\"!readonly\">\n <li v-if=\"isEmpty && creatable\">\n <u-button style=\"width: 100%\" :icon=\"Plus\" @click=\"handleAdd(0)\" :size=\"size\">\n 新增\n </u-button>\n </li>\n <li v-for=\"(item, index) of items\" :key=\"item.id\" :class=\"cls.e('item')\" :style=\"itemStyle\">\n <slot v-bind=\"{ item: item.data, index }\" />\n <span :class=\"cls.e('actions')\">\n <u-button\n :icon=\"Minus\"\n circle\n :disabled=\"disabled\"\n :size=\"size\"\n @click=\"handleRemove(index)\"\n />\n <u-button :icon=\"Plus\" circle :disabled=\"disabled\" :size=\"size\" @click=\"handleAdd(index)\" />\n </span>\n </li>\n </ul>\n\n <template v-else-if=\"items?.length\">\n <ul :class=\"[cls.b, cls.m(size)]\">\n <li v-for=\"item of items\" :key=\"item.id\" :class=\"cls.e('item')\">\n <span v-for=\"v in item.data\">{{ v }}</span>\n </li>\n </ul>\n </template>\n\n <template v-else>\n {{ FORM_EMPTY_CONTENT }}\n </template>\n</template>\n\n<script lang=\"ts\" setup generic=\"GroupItem extends Record<string, any>\">\nimport { useFormComponent, useFormFallbackProps } from '@veltra/compositions'\nimport { Minus, Plus } from '@veltra/icons/normal'\nimport { bem, FORM_EMPTY_CONTENT } from '@veltra/utils'\nimport { computed } from 'vue'\n\nimport type { GroupInputEmits, GroupInputProps } from '../../types'\nimport { UButton } from '../button'\nimport { useGroupItems } from './use-group-items'\n\ndefineOptions({\n name: 'GroupInput'\n})\n\nconst props = withDefaults(defineProps<GroupInputProps<GroupItem>>(), {\n modelValue: () => [],\n disabled: undefined,\n readonly: undefined,\n creatable: true\n})\n\nconst emit = defineEmits<GroupInputEmits>()\n\nconst cls = bem('group-input')\n\nconst { formProps } = useFormComponent()\nconst { disabled, size, readonly } = useFormFallbackProps([formProps ?? {}, props], {\n size: 'default',\n disabled: false,\n readonly: false\n})\n\nconst { items, createItem, runByEvent } = useGroupItems({\n props,\n emit\n})\n\nconst isEmpty = computed(() => {\n return !items.value.length\n})\n\nfunction handleAdd(index: number) {\n runByEvent(() => {\n items.value = [\n ...items.value.slice(0, index + 1),\n createItem({}),\n ...items.value.slice(index + 1)\n ]\n })\n}\n\nfunction handleRemove(index: number) {\n runByEvent(() => {\n items.value = [...items.value.slice(0, index), ...items.value.slice(index + 1)]\n })\n}\n</script>\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"icon.js","names":[],"sources":["../../../src/components/icon/icon.vue"],"sourcesContent":["<template>\n <i :class=\"cls.b\" :style=\"style\">\n <slot></slot>\n </i>\n</template>\n\n<script lang=\"ts\" setup>\nimport { bem } from '@veltra/utils'\nimport { withUnit } from '@veltra/utils'\nimport { type CSSProperties, computed } from 'vue'\n\nimport type { IconProps } from '../../types'\n\ndefineOptions({\n name: 'Icon'\n})\n\nconst props = defineProps<IconProps>()\n\nconst cls = bem('icon')\n\nconst style = computed<CSSProperties>(() => {\n return {\n fontSize: withUnit(props.size, 'px')\n }\n})\n</script>\n"],"mappings":";;;;;;;;EAiBA,MAAM,QAAQ;EAEd,MAAM,MAAM,IAAI,OAAM;EAEtB,MAAM,QAAQ,eAA8B;AAC1C,UAAO,EACL,UAAU,SAAS,MAAM,MAAM,KAAI,EACrC;IACD;;uBAxBC,mBAEI,KAAA;IAFA,OAAK,eAAE,MAAA,IAAG,CAAC,EAAC;IAAG,OAAK,eAAE,MAAA,MAAK;OAC7B,WAAa,KAAA,QAAA,UAAA,CAAA,EAAA,EAAA"}
1
+ {"version":3,"file":"icon.js","names":[],"sources":["../../../src/components/icon/icon.vue"],"sourcesContent":["<template>\n <i :class=\"cls.b\" :style=\"style\">\n <slot></slot>\n </i>\n</template>\n\n<script lang=\"ts\" setup>\nimport { bem, withUnit } from '@veltra/utils'\nimport { type CSSProperties, computed } from 'vue'\n\nimport type { IconProps } from '../../types'\n\ndefineOptions({\n name: 'Icon'\n})\n\nconst props = defineProps<IconProps>()\n\nconst cls = bem('icon')\n\nconst style = computed<CSSProperties>(() => {\n return {\n fontSize: withUnit(props.size, 'px')\n }\n})\n</script>\n"],"mappings":";;;;;;;;EAgBA,MAAM,QAAQ;EAEd,MAAM,MAAM,IAAI,OAAM;EAEtB,MAAM,QAAQ,eAA8B;AAC1C,UAAO,EACL,UAAU,SAAS,MAAM,MAAM,KAAI,EACrC;IACD;;uBAvBC,mBAEI,KAAA;IAFA,OAAK,eAAE,MAAA,IAAG,CAAC,EAAC;IAAG,OAAK,eAAE,MAAA,MAAK;OAC7B,WAAa,KAAA,QAAA,UAAA,CAAA,EAAA,EAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"input.js","names":[],"sources":["../../../src/components/input/input.vue"],"sourcesContent":["<template>\n <div\n :class=\"inputClass\"\n @mouseenter=\"handleMouseEnter\"\n @mouseleave=\"handleMouseLeave\"\n v-if=\"!readonly\"\n >\n <span v-if=\"$slots.prefix || prefix\" :class=\"prefixClass\" @click=\"handlePrefixClick\">\n {{ prefix }}\n <slot name=\"prefix\"></slot>\n </span>\n\n <input\n :class=\"cls.e('native')\"\n :placeholder=\"props.placeholder\"\n type=\"text\"\n :value=\"model\"\n @input=\"handleInput\"\n @change=\"handleChange\"\n @focus=\"handleFocus\"\n @blur=\"handleBlur\"\n @compositionstart=\"handleCompositionStart\"\n @compositionend=\"handleCompositionEnd\"\n autocomplete=\"off\"\n ref=\"el\"\n :disabled=\"disabled\"\n :readonly=\"nativeReadonly\"\n />\n <UIcon\n v-if=\"clearable && !disabled && model\"\n :class=\"[cls.e('clear'), bem.is('hidden', !hovered)]\"\n title=\"清除\"\n @click.stop=\"clearModelValue\"\n >\n <Close />\n </UIcon>\n <span :class=\"suffixClass\" @click=\"handleSuffixClick\" v-if=\"$slots.suffix || suffix\">\n {{ suffix }}\n <slot name=\"suffix\"></slot>\n </span>\n </div>\n\n <template v-else>\n {{ generateModel || FORM_EMPTY_CONTENT }}\n </template>\n</template>\n\n<script lang=\"tsx\" setup>\nimport { useFocus, useFormComponent, useFormFallbackProps } from '@veltra/compositions'\nimport { Close } from '@veltra/icons/normal'\nimport { bem } from '@veltra/utils'\nimport { FORM_EMPTY_CONTENT } from '@veltra/utils'\nimport { computed, getCurrentInstance, ref, shallowRef, nextTick } from 'vue'\n\nimport type { InputEmits, InputProps, _InputExposed } from '../../types'\nimport { UIcon } from '../icon'\n\ndefineOptions({\n name: 'Input'\n})\n\nconst props = withDefaults(defineProps<InputProps>(), {\n placeholder: '请输入',\n clearable: true,\n disabled: undefined,\n readonly: undefined\n})\n\nconst emit = defineEmits<InputEmits>()\n\nconst model = defineModel<string>()\n\nconst inst = getCurrentInstance()\n\nconst cls = bem('input')\n\nconst { formProps } = useFormComponent()\n\nconst { size, disabled, readonly } = useFormFallbackProps([formProps ?? {}, props])\n\nconst { focus, handleBlur, handleFocus } = useFocus((focused) => {\n if (focused) {\n emit('focus')\n } else {\n emit('blur')\n }\n})\n\nconst inputClass = 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('focus', focus.value)\n ]\n})\n\nconst prefixClass = [cls.e('prefix'), bem.is('clickable', !!inst?.vnode.props?.['onPrefix:click'])]\n\nconst suffixClass = [cls.e('suffix'), bem.is('clickable', !!inst?.vnode.props?.['onSuffix:click'])]\n\nlet isComposing = false\n\nfunction handleCompositionStart() {\n isComposing = true\n}\n\nfunction handleCompositionEnd(e: Event) {\n isComposing = false\n handleInput(e)\n}\n\nconst handleInput = (e: Event) => {\n if (isComposing) return\n\n const inputVal = (e.target as HTMLInputElement).value\n emit('native:input', e)\n\n const valid = props.pattern?.test(inputVal) ?? true\n\n if (!valid) return\n model.value = inputVal\n}\n\nconst handlePrefixClick = () => {\n emit('prefix:click', model.value)\n}\n\nconst handleSuffixClick = () => {\n emit('suffix:click', model.value)\n}\n\nconst clearModelValue = () => {\n model.value = ''\n emit('clear')\n}\n\nconst hovered = ref(false)\nconst handleMouseEnter = () => {\n hovered.value = true\n}\n\nconst handleMouseLeave = () => {\n hovered.value = false\n}\n\nconst handleChange = (e: Event) => {\n const target = e.target as HTMLInputElement\n\n const valid = props.pattern?.test(target.value) ?? true\n\n if (valid) {\n emit('change', target.value)\n } else {\n nextTick(() => {\n target.value = model.value ?? ''\n })\n }\n}\n\nconst el = shallowRef<HTMLInputElement>()\n\nconst generateModel = computed(() => {\n if (!model.value) return ''\n\n return `${props.prefix ?? ''}${model.value}${props.suffix ?? ''}`\n})\n\ndefineExpose<_InputExposed>({\n el\n})\n</script>\n"],"mappings":""}
1
+ {"version":3,"file":"input.js","names":[],"sources":["../../../src/components/input/input.vue"],"sourcesContent":["<template>\n <div\n :class=\"inputClass\"\n @mouseenter=\"handleMouseEnter\"\n @mouseleave=\"handleMouseLeave\"\n v-if=\"!readonly\"\n >\n <span v-if=\"$slots.prefix || prefix\" :class=\"prefixClass\" @click=\"handlePrefixClick\">\n {{ prefix }}\n <slot name=\"prefix\"></slot>\n </span>\n\n <input\n :class=\"cls.e('native')\"\n :placeholder=\"props.placeholder\"\n type=\"text\"\n :value=\"model\"\n @input=\"handleInput\"\n @change=\"handleChange\"\n @focus=\"handleFocus\"\n @blur=\"handleBlur\"\n @compositionstart=\"handleCompositionStart\"\n @compositionend=\"handleCompositionEnd\"\n autocomplete=\"off\"\n ref=\"el\"\n :disabled=\"disabled\"\n :readonly=\"nativeReadonly\"\n />\n <UIcon\n v-if=\"clearable && !disabled && model\"\n :class=\"[cls.e('clear'), bem.is('hidden', !hovered)]\"\n title=\"清除\"\n @click.stop=\"clearModelValue\"\n >\n <Close />\n </UIcon>\n <span :class=\"suffixClass\" @click=\"handleSuffixClick\" v-if=\"$slots.suffix || suffix\">\n {{ suffix }}\n <slot name=\"suffix\"></slot>\n </span>\n </div>\n\n <template v-else>\n {{ generateModel || FORM_EMPTY_CONTENT }}\n </template>\n</template>\n\n<script lang=\"tsx\" setup>\nimport { useFocus, useFormComponent, useFormFallbackProps } from '@veltra/compositions'\nimport { Close } from '@veltra/icons/normal'\nimport { bem, FORM_EMPTY_CONTENT } from '@veltra/utils'\nimport { computed, getCurrentInstance, ref, shallowRef, nextTick } from 'vue'\n\nimport type { InputEmits, InputProps, _InputExposed } from '../../types'\nimport { UIcon } from '../icon'\n\ndefineOptions({\n name: 'Input'\n})\n\nconst props = withDefaults(defineProps<InputProps>(), {\n placeholder: '请输入',\n clearable: true,\n disabled: undefined,\n readonly: undefined\n})\n\nconst emit = defineEmits<InputEmits>()\n\nconst model = defineModel<string>()\n\nconst inst = getCurrentInstance()\n\nconst cls = bem('input')\n\nconst { formProps } = useFormComponent()\n\nconst { size, disabled, readonly } = useFormFallbackProps([formProps ?? {}, props])\n\nconst { focus, handleBlur, handleFocus } = useFocus((focused) => {\n if (focused) {\n emit('focus')\n } else {\n emit('blur')\n }\n})\n\nconst inputClass = 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('focus', focus.value)\n ]\n})\n\nconst prefixClass = [cls.e('prefix'), bem.is('clickable', !!inst?.vnode.props?.['onPrefix:click'])]\n\nconst suffixClass = [cls.e('suffix'), bem.is('clickable', !!inst?.vnode.props?.['onSuffix:click'])]\n\nlet isComposing = false\n\nfunction handleCompositionStart() {\n isComposing = true\n}\n\nfunction handleCompositionEnd(e: Event) {\n isComposing = false\n handleInput(e)\n}\n\nconst handleInput = (e: Event) => {\n if (isComposing) return\n\n const inputVal = (e.target as HTMLInputElement).value\n emit('native:input', e)\n\n const valid = props.pattern?.test(inputVal) ?? true\n\n if (!valid) return\n model.value = inputVal\n}\n\nconst handlePrefixClick = () => {\n emit('prefix:click', model.value)\n}\n\nconst handleSuffixClick = () => {\n emit('suffix:click', model.value)\n}\n\nconst clearModelValue = () => {\n model.value = ''\n emit('clear')\n}\n\nconst hovered = ref(false)\nconst handleMouseEnter = () => {\n hovered.value = true\n}\n\nconst handleMouseLeave = () => {\n hovered.value = false\n}\n\nconst handleChange = (e: Event) => {\n const target = e.target as HTMLInputElement\n\n const valid = props.pattern?.test(target.value) ?? true\n\n if (valid) {\n emit('change', target.value)\n } else {\n nextTick(() => {\n target.value = model.value ?? ''\n })\n }\n}\n\nconst el = shallowRef<HTMLInputElement>()\n\nconst generateModel = computed(() => {\n if (!model.value) return ''\n\n return `${props.prefix ?? ''}${model.value}${props.suffix ?? ''}`\n})\n\ndefineExpose<_InputExposed>({\n el\n})\n</script>\n"],"mappings":""}
@@ -16,28 +16,28 @@ type __VLS_Slots = {} & {
16
16
  declare const __VLS_base: _$vue.DefineComponent<__VLS_PublicProps, _InputExposed, {}, {}, {}, _$vue.ComponentOptionsMixin, _$vue.ComponentOptionsMixin, {
17
17
  "update:modelValue": (value: string | undefined) => any;
18
18
  } & {
19
+ clear: () => any;
19
20
  "update:modelValue": (value: string) => any;
20
21
  change: (value: string) => any;
21
- clear: () => any;
22
22
  "suffix:click": (value?: string | undefined) => any;
23
23
  "prefix:click": (value?: string | undefined) => any;
24
24
  focus: (value?: string | undefined) => any;
25
25
  blur: (value?: string | undefined) => any;
26
26
  "native:input": (ev: Event) => any;
27
27
  }, string, _$vue.PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
28
+ onClear?: (() => any) | undefined;
28
29
  "onUpdate:modelValue"?: ((value: string) => any) | undefined;
29
30
  onChange?: ((value: string) => any) | undefined;
30
- onClear?: (() => any) | undefined;
31
31
  "onSuffix:click"?: ((value?: string | undefined) => any) | undefined;
32
32
  "onPrefix:click"?: ((value?: string | undefined) => any) | undefined;
33
33
  onFocus?: ((value?: string | undefined) => any) | undefined;
34
34
  onBlur?: ((value?: string | undefined) => any) | undefined;
35
35
  "onNative:input"?: ((ev: Event) => any) | undefined;
36
36
  }>, {
37
+ readonly: boolean;
38
+ disabled: boolean;
37
39
  placeholder: string;
38
40
  clearable: boolean;
39
- disabled: boolean;
40
- readonly: boolean;
41
41
  }, {}, {}, {}, string, _$vue.ComponentProvideOptions, false, {}, any>;
42
42
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
43
43
  declare const _default: typeof __VLS_export;
@@ -1 +1 @@
1
- {"version":3,"file":"input.vue_vue_type_script_setup_true_lang.js","names":["$slots"],"sources":["../../../src/components/input/input.vue"],"sourcesContent":["<template>\n <div\n :class=\"inputClass\"\n @mouseenter=\"handleMouseEnter\"\n @mouseleave=\"handleMouseLeave\"\n v-if=\"!readonly\"\n >\n <span v-if=\"$slots.prefix || prefix\" :class=\"prefixClass\" @click=\"handlePrefixClick\">\n {{ prefix }}\n <slot name=\"prefix\"></slot>\n </span>\n\n <input\n :class=\"cls.e('native')\"\n :placeholder=\"props.placeholder\"\n type=\"text\"\n :value=\"model\"\n @input=\"handleInput\"\n @change=\"handleChange\"\n @focus=\"handleFocus\"\n @blur=\"handleBlur\"\n @compositionstart=\"handleCompositionStart\"\n @compositionend=\"handleCompositionEnd\"\n autocomplete=\"off\"\n ref=\"el\"\n :disabled=\"disabled\"\n :readonly=\"nativeReadonly\"\n />\n <UIcon\n v-if=\"clearable && !disabled && model\"\n :class=\"[cls.e('clear'), bem.is('hidden', !hovered)]\"\n title=\"清除\"\n @click.stop=\"clearModelValue\"\n >\n <Close />\n </UIcon>\n <span :class=\"suffixClass\" @click=\"handleSuffixClick\" v-if=\"$slots.suffix || suffix\">\n {{ suffix }}\n <slot name=\"suffix\"></slot>\n </span>\n </div>\n\n <template v-else>\n {{ generateModel || FORM_EMPTY_CONTENT }}\n </template>\n</template>\n\n<script lang=\"tsx\" setup>\nimport { useFocus, useFormComponent, useFormFallbackProps } from '@veltra/compositions'\nimport { Close } from '@veltra/icons/normal'\nimport { bem } from '@veltra/utils'\nimport { FORM_EMPTY_CONTENT } from '@veltra/utils'\nimport { computed, getCurrentInstance, ref, shallowRef, nextTick } from 'vue'\n\nimport type { InputEmits, InputProps, _InputExposed } from '../../types'\nimport { UIcon } from '../icon'\n\ndefineOptions({\n name: 'Input'\n})\n\nconst props = withDefaults(defineProps<InputProps>(), {\n placeholder: '请输入',\n clearable: true,\n disabled: undefined,\n readonly: undefined\n})\n\nconst emit = defineEmits<InputEmits>()\n\nconst model = defineModel<string>()\n\nconst inst = getCurrentInstance()\n\nconst cls = bem('input')\n\nconst { formProps } = useFormComponent()\n\nconst { size, disabled, readonly } = useFormFallbackProps([formProps ?? {}, props])\n\nconst { focus, handleBlur, handleFocus } = useFocus((focused) => {\n if (focused) {\n emit('focus')\n } else {\n emit('blur')\n }\n})\n\nconst inputClass = 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('focus', focus.value)\n ]\n})\n\nconst prefixClass = [cls.e('prefix'), bem.is('clickable', !!inst?.vnode.props?.['onPrefix:click'])]\n\nconst suffixClass = [cls.e('suffix'), bem.is('clickable', !!inst?.vnode.props?.['onSuffix:click'])]\n\nlet isComposing = false\n\nfunction handleCompositionStart() {\n isComposing = true\n}\n\nfunction handleCompositionEnd(e: Event) {\n isComposing = false\n handleInput(e)\n}\n\nconst handleInput = (e: Event) => {\n if (isComposing) return\n\n const inputVal = (e.target as HTMLInputElement).value\n emit('native:input', e)\n\n const valid = props.pattern?.test(inputVal) ?? true\n\n if (!valid) return\n model.value = inputVal\n}\n\nconst handlePrefixClick = () => {\n emit('prefix:click', model.value)\n}\n\nconst handleSuffixClick = () => {\n emit('suffix:click', model.value)\n}\n\nconst clearModelValue = () => {\n model.value = ''\n emit('clear')\n}\n\nconst hovered = ref(false)\nconst handleMouseEnter = () => {\n hovered.value = true\n}\n\nconst handleMouseLeave = () => {\n hovered.value = false\n}\n\nconst handleChange = (e: Event) => {\n const target = e.target as HTMLInputElement\n\n const valid = props.pattern?.test(target.value) ?? true\n\n if (valid) {\n emit('change', target.value)\n } else {\n nextTick(() => {\n target.value = model.value ?? ''\n })\n }\n}\n\nconst el = shallowRef<HTMLInputElement>()\n\nconst generateModel = computed(() => {\n if (!model.value) return ''\n\n return `${props.prefix ?? ''}${model.value}${props.suffix ?? ''}`\n})\n\ndefineExpose<_InputExposed>({\n el\n})\n</script>\n"],"mappings":"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"}
1
+ {"version":3,"file":"input.vue_vue_type_script_setup_true_lang.js","names":["$slots"],"sources":["../../../src/components/input/input.vue"],"sourcesContent":["<template>\n <div\n :class=\"inputClass\"\n @mouseenter=\"handleMouseEnter\"\n @mouseleave=\"handleMouseLeave\"\n v-if=\"!readonly\"\n >\n <span v-if=\"$slots.prefix || prefix\" :class=\"prefixClass\" @click=\"handlePrefixClick\">\n {{ prefix }}\n <slot name=\"prefix\"></slot>\n </span>\n\n <input\n :class=\"cls.e('native')\"\n :placeholder=\"props.placeholder\"\n type=\"text\"\n :value=\"model\"\n @input=\"handleInput\"\n @change=\"handleChange\"\n @focus=\"handleFocus\"\n @blur=\"handleBlur\"\n @compositionstart=\"handleCompositionStart\"\n @compositionend=\"handleCompositionEnd\"\n autocomplete=\"off\"\n ref=\"el\"\n :disabled=\"disabled\"\n :readonly=\"nativeReadonly\"\n />\n <UIcon\n v-if=\"clearable && !disabled && model\"\n :class=\"[cls.e('clear'), bem.is('hidden', !hovered)]\"\n title=\"清除\"\n @click.stop=\"clearModelValue\"\n >\n <Close />\n </UIcon>\n <span :class=\"suffixClass\" @click=\"handleSuffixClick\" v-if=\"$slots.suffix || suffix\">\n {{ suffix }}\n <slot name=\"suffix\"></slot>\n </span>\n </div>\n\n <template v-else>\n {{ generateModel || FORM_EMPTY_CONTENT }}\n </template>\n</template>\n\n<script lang=\"tsx\" setup>\nimport { useFocus, useFormComponent, useFormFallbackProps } from '@veltra/compositions'\nimport { Close } from '@veltra/icons/normal'\nimport { bem, FORM_EMPTY_CONTENT } from '@veltra/utils'\nimport { computed, getCurrentInstance, ref, shallowRef, nextTick } from 'vue'\n\nimport type { InputEmits, InputProps, _InputExposed } from '../../types'\nimport { UIcon } from '../icon'\n\ndefineOptions({\n name: 'Input'\n})\n\nconst props = withDefaults(defineProps<InputProps>(), {\n placeholder: '请输入',\n clearable: true,\n disabled: undefined,\n readonly: undefined\n})\n\nconst emit = defineEmits<InputEmits>()\n\nconst model = defineModel<string>()\n\nconst inst = getCurrentInstance()\n\nconst cls = bem('input')\n\nconst { formProps } = useFormComponent()\n\nconst { size, disabled, readonly } = useFormFallbackProps([formProps ?? {}, props])\n\nconst { focus, handleBlur, handleFocus } = useFocus((focused) => {\n if (focused) {\n emit('focus')\n } else {\n emit('blur')\n }\n})\n\nconst inputClass = 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('focus', focus.value)\n ]\n})\n\nconst prefixClass = [cls.e('prefix'), bem.is('clickable', !!inst?.vnode.props?.['onPrefix:click'])]\n\nconst suffixClass = [cls.e('suffix'), bem.is('clickable', !!inst?.vnode.props?.['onSuffix:click'])]\n\nlet isComposing = false\n\nfunction handleCompositionStart() {\n isComposing = true\n}\n\nfunction handleCompositionEnd(e: Event) {\n isComposing = false\n handleInput(e)\n}\n\nconst handleInput = (e: Event) => {\n if (isComposing) return\n\n const inputVal = (e.target as HTMLInputElement).value\n emit('native:input', e)\n\n const valid = props.pattern?.test(inputVal) ?? true\n\n if (!valid) return\n model.value = inputVal\n}\n\nconst handlePrefixClick = () => {\n emit('prefix:click', model.value)\n}\n\nconst handleSuffixClick = () => {\n emit('suffix:click', model.value)\n}\n\nconst clearModelValue = () => {\n model.value = ''\n emit('clear')\n}\n\nconst hovered = ref(false)\nconst handleMouseEnter = () => {\n hovered.value = true\n}\n\nconst handleMouseLeave = () => {\n hovered.value = false\n}\n\nconst handleChange = (e: Event) => {\n const target = e.target as HTMLInputElement\n\n const valid = props.pattern?.test(target.value) ?? true\n\n if (valid) {\n emit('change', target.value)\n } else {\n nextTick(() => {\n target.value = model.value ?? ''\n })\n }\n}\n\nconst el = shallowRef<HTMLInputElement>()\n\nconst generateModel = computed(() => {\n if (!model.value) return ''\n\n return `${props.prefix ?? ''}${model.value}${props.suffix ?? ''}`\n})\n\ndefineExpose<_InputExposed>({\n el\n})\n</script>\n"],"mappings":"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"}