@veltra/desktop 1.1.25 → 1.1.27

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 (243) hide show
  1. package/dist/components/action/action-group.vue.d.ts +2 -2
  2. package/dist/components/action/action.js.map +1 -1
  3. package/dist/components/action/action.vue.d.ts +1 -1
  4. package/dist/components/badge/badge.js.map +1 -1
  5. package/dist/components/batch-edit/batch-edit-form.js.map +1 -1
  6. package/dist/components/batch-edit/batch-edit-list.js.map +1 -1
  7. package/dist/components/batch-edit/batch-edit.js.map +1 -1
  8. package/dist/components/batch-edit/batch-edit.vue.d.ts +2 -2
  9. package/dist/components/breadcrumb/breadcrumb.js.map +1 -1
  10. package/dist/components/button/button-group.js.map +1 -1
  11. package/dist/components/button/button.js.map +1 -1
  12. package/dist/components/calendar/calendar.js.map +1 -1
  13. package/dist/components/card/card-action.js.map +1 -1
  14. package/dist/components/card/card-content.js.map +1 -1
  15. package/dist/components/card/card-cover.js.map +1 -1
  16. package/dist/components/card/card.js.map +1 -1
  17. package/dist/components/cascade/cascade-panel-item.js.map +1 -1
  18. package/dist/components/cascade/cascade.js.map +1 -1
  19. package/dist/components/cascade/cascade.vue.d.ts +3 -3
  20. package/dist/components/check-tag/check-tag.js.map +1 -1
  21. package/dist/components/checkbox/checkbox-button.js.map +1 -1
  22. package/dist/components/checkbox/checkbox-button.vue.d.ts +1 -1
  23. package/dist/components/checkbox/checkbox.js.map +1 -1
  24. package/dist/components/checkbox-group/checkbox-group.js.map +1 -1
  25. package/dist/components/checkbox-group/checkbox-group.vue.d.ts +2 -2
  26. package/dist/components/code-editor/code-editor.js.map +1 -1
  27. package/dist/components/collapse/collapse-item.js.map +1 -1
  28. package/dist/components/collapse/collapse.js.map +1 -1
  29. package/dist/components/condition-editor/components/condition-row.js.map +1 -1
  30. package/dist/components/condition-editor/condition-editor.js.map +1 -1
  31. package/dist/components/context-menu/context-menu-item.js.map +1 -1
  32. package/dist/components/context-menu/context-menu.js.map +1 -1
  33. package/dist/components/date-panel/date-panel.js.map +1 -1
  34. package/dist/components/date-panel/date-panel.vue.d.ts +1 -1
  35. package/dist/components/date-panel/headers/day.js.map +1 -1
  36. package/dist/components/date-panel/headers/month.js.map +1 -1
  37. package/dist/components/date-panel/headers/year.js.map +1 -1
  38. package/dist/components/date-panel/panels/day.js.map +1 -1
  39. package/dist/components/date-panel/panels/month.js.map +1 -1
  40. package/dist/components/date-panel/panels/year.js.map +1 -1
  41. package/dist/components/date-picker/date-picker.js.map +1 -1
  42. package/dist/components/date-picker/date-picker.vue.d.ts +1 -1
  43. package/dist/components/date-range-picker/date-range-picker.js.map +1 -1
  44. package/dist/components/date-range-picker/date-range-picker.vue.d.ts +1 -1
  45. package/dist/components/dialog/dialog.js.map +1 -1
  46. package/dist/components/drawer/drawer.js.map +1 -1
  47. package/dist/components/empty/empty.js.map +1 -1
  48. package/dist/components/expression-editor/components/path-preview.js.map +1 -1
  49. package/dist/components/expression-editor/components/variable-picker.js.map +1 -1
  50. package/dist/components/expression-editor/expression-editor.js.map +1 -1
  51. package/dist/components/file-picker/file-picker.js.map +1 -1
  52. package/dist/components/file-picker/file-picker.vue.d.ts +1 -1
  53. package/dist/components/file-viewer/file-viewer.js.map +1 -1
  54. package/dist/components/file-viewer/previewers/pdf-previewer.js.map +1 -1
  55. package/dist/components/file-viewer/previewers/pdf-viewport-scroll.js.map +1 -1
  56. package/dist/components/file-viewer/previewers/pdf-zoom-bridge.js.map +1 -1
  57. package/dist/components/file-viewer/previewers/sheet-previewer.js.map +1 -1
  58. package/dist/components/float-button/float-button.js.map +1 -1
  59. package/dist/components/form/form-model.d.ts +2 -2
  60. package/dist/components/form/form-model.js.map +1 -1
  61. package/dist/components/form/form.js.map +1 -1
  62. package/dist/components/form/form.vue_vue_type_script_setup_true_lang.js.map +1 -1
  63. package/dist/components/gantt-chart/gantt-chart.js.map +1 -1
  64. package/dist/components/grid/grid-item.js.map +1 -1
  65. package/dist/components/grid/grid.js.map +1 -1
  66. package/dist/components/grid-input/grid-input.js.map +1 -1
  67. package/dist/components/group-input/group-input.js.map +1 -1
  68. package/dist/components/icon/icon.js.map +1 -1
  69. package/dist/components/input/input.js.map +1 -1
  70. package/dist/components/input/input.vue.d.ts +2 -2
  71. package/dist/components/input/input.vue_vue_type_script_setup_true_lang.js.map +1 -1
  72. package/dist/components/layout/layout-resizer.js.map +1 -1
  73. package/dist/components/layout/layout.js.map +1 -1
  74. package/dist/components/list/list-item.js.map +1 -1
  75. package/dist/components/list/list.js.map +1 -1
  76. package/dist/components/loading/loading.js.map +1 -1
  77. package/dist/components/menu/menu-icon.js.map +1 -1
  78. package/dist/components/menu/menu-sub-collapsed.js.map +1 -1
  79. package/dist/components/menu/menu.js.map +1 -1
  80. package/dist/components/message/message-box.js.map +1 -1
  81. package/dist/components/message/message.js.map +1 -1
  82. package/dist/components/message-confirm/message-confirm.js.map +1 -1
  83. package/dist/components/multi-select/multi-select-option.js.map +1 -1
  84. package/dist/components/multi-select/multi-select.vue.d.ts +3 -3
  85. package/dist/components/multi-tree-select/multi-tree-select.vue.d.ts +3 -3
  86. package/dist/components/notification/notification.js.map +1 -1
  87. package/dist/components/notification/notification.vue.d.ts +1 -1
  88. package/dist/components/number/number.js.map +1 -1
  89. package/dist/components/number/number.vue.d.ts +1 -1
  90. package/dist/components/number-input/number-input.js.map +1 -1
  91. package/dist/components/number-range-input/number-range-input.js.map +1 -1
  92. package/dist/components/paginator/paginator.js.map +1 -1
  93. package/dist/components/palette/palette-alpha.js.map +1 -1
  94. package/dist/components/palette/palette-color-switch.js.map +1 -1
  95. package/dist/components/palette/palette-hue.js.map +1 -1
  96. package/dist/components/palette/palette-sv.js.map +1 -1
  97. package/dist/components/palette/palette.js.map +1 -1
  98. package/dist/components/pop-confirm/pop-confirm.js.map +1 -1
  99. package/dist/components/pop-confirm/pop-confirm.vue.d.ts +1 -1
  100. package/dist/components/progress/progress.js.map +1 -1
  101. package/dist/components/progress-nodes/progress-nodes.js.map +1 -1
  102. package/dist/components/radio/radio.js.map +1 -1
  103. package/dist/components/radio-group/radio-group.js.map +1 -1
  104. package/dist/components/radio-group/radio-group.vue.d.ts +2 -2
  105. package/dist/components/scroll/scroll-bar.js.map +1 -1
  106. package/dist/components/scroll/scroll.js.map +1 -1
  107. package/dist/components/select/select.vue.d.ts +2 -2
  108. package/dist/components/slider/slider-thumb.js.map +1 -1
  109. package/dist/components/slider/slider.js.map +1 -1
  110. package/dist/components/steps/steps.js.map +1 -1
  111. package/dist/components/switch/switch.js.map +1 -1
  112. package/dist/components/table/table-body.js.map +1 -1
  113. package/dist/components/table/table-cell.js.map +1 -1
  114. package/dist/components/table/table-foot.js.map +1 -1
  115. package/dist/components/table/table.vue.d.ts +2 -2
  116. package/dist/components/table-editor/table-editor.js.map +1 -1
  117. package/dist/components/tabs/tabs-horizontal.js.map +1 -1
  118. package/dist/components/tabs/tabs-horizontal.vue.d.ts +3 -3
  119. package/dist/components/tabs/tabs-vertical.js.map +1 -1
  120. package/dist/components/tabs/tabs-vertical.vue.d.ts +2 -2
  121. package/dist/components/tabs/tabs.js.map +1 -1
  122. package/dist/components/tabs/tabs.vue.d.ts +3 -3
  123. package/dist/components/tag/tag.js.map +1 -1
  124. package/dist/components/text/text.js.map +1 -1
  125. package/dist/components/textarea/textarea.js.map +1 -1
  126. package/dist/components/textarea/textarea.vue.d.ts +3 -3
  127. package/dist/components/theme/theme.js.map +1 -1
  128. package/dist/components/tip/tip.js.map +1 -1
  129. package/dist/components/tip/tip.vue.d.ts +1 -1
  130. package/dist/components/tree/tree-node.js.map +1 -1
  131. package/dist/components/tree/tree.js.map +1 -1
  132. package/dist/components/tree-select/tree-select.vue.d.ts +3 -3
  133. package/dist/components/watermark/watermark.js.map +1 -1
  134. package/package.json +6 -6
  135. package/src/components/action/action.vue +1 -4
  136. package/src/components/badge/badge.vue +3 -9
  137. package/src/components/batch-edit/batch-edit-form.vue +1 -5
  138. package/src/components/batch-edit/batch-edit-list.vue +2 -6
  139. package/src/components/batch-edit/batch-edit.vue +2 -12
  140. package/src/components/breadcrumb/breadcrumb.vue +4 -13
  141. package/src/components/button/button-group.vue +2 -6
  142. package/src/components/button/button.vue +3 -9
  143. package/src/components/calendar/calendar.vue +1 -3
  144. package/src/components/card/card-action.vue +1 -3
  145. package/src/components/card/card-content.vue +1 -6
  146. package/src/components/card/card-cover.vue +1 -3
  147. package/src/components/card/card.vue +2 -6
  148. package/src/components/cascade/cascade-panel-item.vue +2 -8
  149. package/src/components/cascade/cascade.vue +5 -37
  150. package/src/components/check-tag/check-tag.vue +1 -3
  151. package/src/components/checkbox/checkbox-button.vue +2 -6
  152. package/src/components/checkbox/checkbox.vue +1 -3
  153. package/src/components/checkbox-group/checkbox-group.vue +1 -3
  154. package/src/components/code-editor/code-editor.vue +4 -12
  155. package/src/components/collapse/collapse-item.vue +1 -3
  156. package/src/components/collapse/collapse.vue +2 -8
  157. package/src/components/condition-editor/components/condition-row.vue +2 -8
  158. package/src/components/condition-editor/condition-editor.vue +2 -6
  159. package/src/components/context-menu/context-menu-item.vue +3 -10
  160. package/src/components/context-menu/context-menu.vue +5 -17
  161. package/src/components/date-panel/date-panel.vue +3 -11
  162. package/src/components/date-panel/headers/day.vue +1 -3
  163. package/src/components/date-panel/headers/month.vue +1 -3
  164. package/src/components/date-panel/headers/year.vue +1 -3
  165. package/src/components/date-panel/panels/day.vue +1 -4
  166. package/src/components/date-panel/panels/month.vue +1 -3
  167. package/src/components/date-panel/panels/year.vue +1 -3
  168. package/src/components/date-picker/date-picker.vue +1 -3
  169. package/src/components/date-range-picker/date-range-picker.vue +1 -3
  170. package/src/components/dialog/dialog.vue +7 -24
  171. package/src/components/drawer/drawer.vue +3 -11
  172. package/src/components/empty/empty.vue +2 -7
  173. package/src/components/expression-editor/components/path-preview.vue +2 -6
  174. package/src/components/expression-editor/components/variable-picker.vue +1 -3
  175. package/src/components/expression-editor/expression-editor.vue +2 -6
  176. package/src/components/expression-editor/style.scss +1 -1
  177. package/src/components/file-picker/file-picker.vue +2 -7
  178. package/src/components/file-viewer/file-viewer.vue +4 -22
  179. package/src/components/file-viewer/previewers/pdf-previewer.vue +1 -5
  180. package/src/components/file-viewer/previewers/pdf-viewport-scroll.vue +1 -7
  181. package/src/components/file-viewer/previewers/pdf-zoom-bridge.vue +2 -7
  182. package/src/components/file-viewer/previewers/sheet-previewer.vue +4 -10
  183. package/src/components/float-button/float-button.vue +1 -3
  184. package/src/components/form/form-model.ts +9 -2
  185. package/src/components/form/form.vue +3 -13
  186. package/src/components/gantt-chart/gantt-chart.vue +1 -3
  187. package/src/components/grid/grid-item.vue +3 -9
  188. package/src/components/grid/grid.vue +5 -18
  189. package/src/components/grid-input/grid-input.vue +2 -6
  190. package/src/components/group-input/group-input.vue +2 -7
  191. package/src/components/icon/icon.vue +2 -6
  192. package/src/components/input/input.vue +2 -6
  193. package/src/components/layout/layout-resizer.vue +1 -3
  194. package/src/components/layout/layout.vue +3 -9
  195. package/src/components/list/list-item.vue +1 -3
  196. package/src/components/list/list.vue +2 -6
  197. package/src/components/loading/loading.vue +3 -9
  198. package/src/components/menu/menu-icon.vue +2 -6
  199. package/src/components/menu/menu-sub-collapsed.vue +2 -8
  200. package/src/components/menu/menu.vue +3 -9
  201. package/src/components/menu/style.scss +1 -1
  202. package/src/components/message/message-box.vue +3 -10
  203. package/src/components/message/message.vue +3 -9
  204. package/src/components/message-confirm/message-confirm.vue +2 -6
  205. package/src/components/multi-select/multi-select-option.vue +3 -9
  206. package/src/components/notification/notification.vue +3 -11
  207. package/src/components/number/number.vue +4 -14
  208. package/src/components/number-input/number-input.vue +7 -36
  209. package/src/components/number-range-input/number-range-input.vue +4 -17
  210. package/src/components/paginator/paginator.vue +7 -22
  211. package/src/components/palette/palette-alpha.vue +2 -6
  212. package/src/components/palette/palette-color-switch.vue +1 -3
  213. package/src/components/palette/palette-hue.vue +2 -6
  214. package/src/components/palette/palette-sv.vue +5 -17
  215. package/src/components/palette/palette.vue +2 -12
  216. package/src/components/pop-confirm/pop-confirm.vue +2 -6
  217. package/src/components/progress/progress.vue +2 -7
  218. package/src/components/progress-nodes/progress-nodes.vue +2 -7
  219. package/src/components/radio/radio.vue +2 -6
  220. package/src/components/radio-group/radio-group.vue +1 -3
  221. package/src/components/scroll/scroll-bar.vue +5 -17
  222. package/src/components/scroll/scroll.vue +5 -16
  223. package/src/components/slider/slider-thumb.vue +4 -12
  224. package/src/components/slider/slider.vue +3 -14
  225. package/src/components/steps/steps.vue +3 -10
  226. package/src/components/switch/switch.vue +2 -7
  227. package/src/components/table/table-body.vue +2 -8
  228. package/src/components/table/table-cell.vue +2 -7
  229. package/src/components/table/table-foot.vue +2 -9
  230. package/src/components/table-editor/table-editor.vue +1 -3
  231. package/src/components/tabs/tabs-horizontal.vue +2 -6
  232. package/src/components/tabs/tabs-vertical.vue +1 -3
  233. package/src/components/tabs/tabs.vue +1 -3
  234. package/src/components/tag/tag.vue +2 -6
  235. package/src/components/text/text.vue +3 -9
  236. package/src/components/textarea/textarea.vue +1 -3
  237. package/src/components/theme/group-item.vue +1 -3
  238. package/src/components/theme/group.vue +1 -3
  239. package/src/components/theme/theme.vue +6 -26
  240. package/src/components/tip/tip.vue +1 -3
  241. package/src/components/tree/tree-node.vue +1 -3
  242. package/src/components/tree/tree.vue +7 -30
  243. package/src/components/watermark/watermark.vue +4 -15
@@ -8,10 +8,10 @@ type __VLS_Slots = {
8
8
  default?: () => VNode[];
9
9
  };
10
10
  declare const __VLS_base: _$vue.DefineComponent<ActionGroupProps, _ActionGroupExposed, {}, {}, {}, _$vue.ComponentOptionsMixin, _$vue.ComponentOptionsMixin, {}, string, _$vue.PublicProps, Readonly<ActionGroupProps> & Readonly<{}>, {
11
- type: _$_veltra_utils0.ColorType;
12
11
  size: "small" | "default" | "large";
13
- max: number;
12
+ type: _$_veltra_utils0.ColorType;
14
13
  circle: boolean;
14
+ max: number;
15
15
  text: boolean;
16
16
  loading: boolean;
17
17
  }, {}, {}, {}, string, _$vue.ComponentProvideOptions, false, {}, any>;
@@ -1 +1 @@
1
- {"version":3,"file":"action.js","names":["$attrs"],"sources":["../../../src/components/action/action.vue"],"sourcesContent":["<template>\n <u-pop-confirm\n v-if=\"needConfirm\"\n title=\"确认执行此操作吗?\"\n style=\"display: inline-block\"\n direction=\"left\"\n @confirm=\"handleConfirm\"\n >\n <template #reference>\n <u-button\n :class=\"cls.b\"\n :loading\n :circle\n :propagate=\"false\"\n v-bind=\"{ ...buttonProps, ...$attrs }\"\n >\n <slot />\n </u-button>\n </template>\n </u-pop-confirm>\n\n <u-button\n v-else\n :class=\"cls.b\"\n :loading\n :circle\n :propagate=\"false\"\n v-bind=\"{ ...buttonProps, ...$attrs }\"\n @click=\"handleRun\"\n >\n <slot />\n </u-button>\n</template>\n\n<script lang=\"ts\" setup>\nimport { o } from '@cat-kit/core'\nimport { bem } from '@veltra/utils'\nimport { computed, inject } from 'vue'\n\nimport type { ActionEmits, ActionProps } from '../../types'\nimport { UButton } from '../button'\nimport { UPopConfirm } from '../pop-confirm'\nimport { ActionDIKey } from './di'\n\ndefineOptions({\n name: 'Action',\n inheritAttrs: false\n})\n\n// 这里所有可继承自 `<u-action-group>` 的默认值都强制为 `undefined`,\n// 否则 Vue 对 Boolean 类型 prop 的默认值(false)会让 `??` 兜底始终失效\nconst props = withDefaults(defineProps<ActionProps>(), {\n inDropdown: false,\n loading: undefined,\n circle: undefined,\n text: undefined,\n size: undefined,\n type: undefined\n})\n\nconst ctx = inject(ActionDIKey, undefined)\n\nconst size = computed(() => props.size ?? ctx?.groupProps.size ?? 'small')\nconst text = computed(() => props.text ?? ctx?.groupProps.text ?? true)\nconst type = computed(() => props.type ?? ctx?.groupProps.type ?? 'primary')\n\nconst loading = computed(() => {\n return props.loading ?? ctx?.groupProps.loading\n})\n\n// 下拉菜单中的操作项强制非圆形以呈现完整文本,否则跟随用户/分组配置\nconst circle = computed(() => {\n if (props.inDropdown) return false\n return props.circle ?? ctx?.groupProps.circle\n})\n\nconst buttonProps = computed(() => {\n return {\n ...o(props as Record<string, any>).omit([\n 'needConfirm',\n 'loading',\n 'circle',\n 'propagate',\n 'size',\n 'text',\n 'type',\n 'inDropdown'\n ]),\n size: size.value,\n text: text.value,\n type: type.value\n }\n})\n\nconst emit = defineEmits<ActionEmits>()\n\nconst cls = bem('action')\n\nfunction handleConfirm() {\n handleRun()\n}\n\nfunction handleRun() {\n emit('run')\n\n if (props.inDropdown) {\n ctx?.closeTip()\n }\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmDA,MAAM,QAAQ;EASd,MAAM,MAAM,OAAO,aAAa,KAAA,EAAS;EAEzC,MAAM,OAAO,eAAe,MAAM,QAAQ,KAAK,WAAW,QAAQ,QAAO;EACzE,MAAM,OAAO,eAAe,MAAM,QAAQ,KAAK,WAAW,QAAQ,KAAI;EACtE,MAAM,OAAO,eAAe,MAAM,QAAQ,KAAK,WAAW,QAAQ,UAAS;EAE3E,MAAM,UAAU,eAAe;GAC7B,OAAO,MAAM,WAAW,KAAK,WAAW;IACzC;EAGD,MAAM,SAAS,eAAe;GAC5B,IAAI,MAAM,YAAY,OAAO;GAC7B,OAAO,MAAM,UAAU,KAAK,WAAW;IACxC;EAED,MAAM,cAAc,eAAe;GACjC,OAAO;IACL,GAAG,EAAE,MAA4B,CAAE,KAAK;KACtC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACD,CAAA;IACD,MAAM,KAAK;IACX,MAAM,KAAK;IACX,MAAM,KAAK;IACb;IACD;EAED,MAAM,OAAO;EAEb,MAAM,MAAM,IAAI,SAAQ;EAExB,SAAS,gBAAgB;GACvB,WAAU;;EAGZ,SAAS,YAAY;GACnB,KAAK,MAAK;GAEV,IAAI,MAAM,YACR,KAAK,UAAS;;;UAxGR,QAAA,eAAA,WAAA,EADR,YAkBgB,MAAA,YAAA,EAAA;;IAhBd,OAAM;IACN,OAAA,EAAA,WAAA,gBAAA;IACA,WAAU;IACT,WAAS;;IAEC,WAAS,cASP,CARX,YAQW,MAAA,YAAA,EARX,WAQW;KAPR,OAAO,MAAA,IAAA,CAAI;KACX,SAAA,QAAA;KACA,QAAA,OAAA;KACA,WAAW;;QACC,YAAA;KAAW,GAAKA,KAAAA;KAAM,CAAA,EAAA;4BAE3B,CAAR,WAAQ,KAAA,QAAA,UAAA,CAAA,CAAA;;;;;;;;uBAKd,YAUW,MAAA,YAAA,EAVX,WAUW;;IARR,OAAO,MAAA,IAAA,CAAI;IACX,SAAA,QAAA;IACA,QAAA,OAAA;IACA,WAAW;;OACC,YAAA;IAAW,GAAKA,KAAAA;IAAM,EAAA,EAClC,SAAO,WAAS,CAAA,EAAA;2BAET,CAAR,WAAQ,KAAA,QAAA,UAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"action.js","names":["$attrs"],"sources":["../../../src/components/action/action.vue"],"sourcesContent":["<template>\n <u-pop-confirm\n v-if=\"needConfirm\"\n title=\"确认执行此操作吗?\"\n style=\"display: inline-block\"\n direction=\"left\"\n @confirm=\"handleConfirm\"\n >\n <template #reference>\n <u-button\n :class=\"cls.b\"\n :loading\n :circle\n :propagate=\"false\"\n v-bind=\"{ ...buttonProps, ...$attrs }\"\n >\n <slot />\n </u-button>\n </template>\n </u-pop-confirm>\n\n <u-button\n v-else\n :class=\"cls.b\"\n :loading\n :circle\n :propagate=\"false\"\n v-bind=\"{ ...buttonProps, ...$attrs }\"\n @click=\"handleRun\"\n >\n <slot />\n </u-button>\n</template>\n\n<script lang=\"ts\" setup>\nimport { o } from '@cat-kit/core'\nimport { bem } from '@veltra/utils'\nimport { computed, inject } from 'vue'\n\nimport type { ActionEmits, ActionProps } from '../../types'\nimport { UButton } from '../button'\nimport { UPopConfirm } from '../pop-confirm'\nimport { ActionDIKey } from './di'\n\ndefineOptions({ name: 'Action', inheritAttrs: false })\n\n// 这里所有可继承自 `<u-action-group>` 的默认值都强制为 `undefined`,\n// 否则 Vue 对 Boolean 类型 prop 的默认值(false)会让 `??` 兜底始终失效\nconst props = withDefaults(defineProps<ActionProps>(), {\n inDropdown: false,\n loading: undefined,\n circle: undefined,\n text: undefined,\n size: undefined,\n type: undefined\n})\n\nconst ctx = inject(ActionDIKey, undefined)\n\nconst size = computed(() => props.size ?? ctx?.groupProps.size ?? 'small')\nconst text = computed(() => props.text ?? ctx?.groupProps.text ?? true)\nconst type = computed(() => props.type ?? ctx?.groupProps.type ?? 'primary')\n\nconst loading = computed(() => {\n return props.loading ?? ctx?.groupProps.loading\n})\n\n// 下拉菜单中的操作项强制非圆形以呈现完整文本,否则跟随用户/分组配置\nconst circle = computed(() => {\n if (props.inDropdown) return false\n return props.circle ?? ctx?.groupProps.circle\n})\n\nconst buttonProps = computed(() => {\n return {\n ...o(props as Record<string, any>).omit([\n 'needConfirm',\n 'loading',\n 'circle',\n 'propagate',\n 'size',\n 'text',\n 'type',\n 'inDropdown'\n ]),\n size: size.value,\n text: text.value,\n type: type.value\n }\n})\n\nconst emit = defineEmits<ActionEmits>()\n\nconst cls = bem('action')\n\nfunction handleConfirm() {\n handleRun()\n}\n\nfunction handleRun() {\n emit('run')\n\n if (props.inDropdown) {\n ctx?.closeTip()\n }\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgDA,MAAM,QAAQ;EASd,MAAM,MAAM,OAAO,aAAa,KAAA,EAAS;EAEzC,MAAM,OAAO,eAAe,MAAM,QAAQ,KAAK,WAAW,QAAQ,QAAO;EACzE,MAAM,OAAO,eAAe,MAAM,QAAQ,KAAK,WAAW,QAAQ,KAAI;EACtE,MAAM,OAAO,eAAe,MAAM,QAAQ,KAAK,WAAW,QAAQ,UAAS;EAE3E,MAAM,UAAU,eAAe;GAC7B,OAAO,MAAM,WAAW,KAAK,WAAW;IACzC;EAGD,MAAM,SAAS,eAAe;GAC5B,IAAI,MAAM,YAAY,OAAO;GAC7B,OAAO,MAAM,UAAU,KAAK,WAAW;IACxC;EAED,MAAM,cAAc,eAAe;GACjC,OAAO;IACL,GAAG,EAAE,MAA4B,CAAE,KAAK;KACtC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACD,CAAA;IACD,MAAM,KAAK;IACX,MAAM,KAAK;IACX,MAAM,KAAK;IACb;IACD;EAED,MAAM,OAAO;EAEb,MAAM,MAAM,IAAI,SAAQ;EAExB,SAAS,gBAAgB;GACvB,WAAU;;EAGZ,SAAS,YAAY;GACnB,KAAK,MAAK;GAEV,IAAI,MAAM,YACR,KAAK,UAAS;;;UArGR,QAAA,eAAA,WAAA,EADR,YAkBgB,MAAA,YAAA,EAAA;;IAhBd,OAAM;IACN,OAAA,EAAA,WAAA,gBAAA;IACA,WAAU;IACT,WAAS;;IAEC,WAAS,cASP,CARX,YAQW,MAAA,YAAA,EARX,WAQW;KAPR,OAAO,MAAA,IAAA,CAAI;KACX,SAAA,QAAA;KACA,QAAA,OAAA;KACA,WAAW;;QACC,YAAA;KAAW,GAAKA,KAAAA;KAAM,CAAA,EAAA;4BAE3B,CAAR,WAAQ,KAAA,QAAA,UAAA,CAAA,CAAA;;;;;;;;uBAKd,YAUW,MAAA,YAAA,EAVX,WAUW;;IARR,OAAO,MAAA,IAAA,CAAI;IACX,SAAA,QAAA;IACA,QAAA,OAAA;IACA,WAAW;;OACC,YAAA;IAAW,GAAKA,KAAAA;IAAM,EAAA,EAClC,SAAO,WAAS,CAAA,EAAA;2BAET,CAAR,WAAQ,KAAA,QAAA,UAAA,CAAA,CAAA"}
@@ -15,8 +15,8 @@ declare const __VLS_base: _$vue.DefineComponent<ActionProps, {}, {}, {}, {}, _$v
15
15
  }, string, _$vue.PublicProps, Readonly<ActionProps> & Readonly<{
16
16
  onRun?: (() => any) | undefined;
17
17
  }>, {
18
- type: ButtonType;
19
18
  size: _$_veltra_utils0.ComponentSize;
19
+ type: ButtonType;
20
20
  circle: boolean;
21
21
  text: boolean;
22
22
  loading: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"badge.js","names":[],"sources":["../../../src/components/badge/badge.vue"],"sourcesContent":["<template>\n <div :class=\"cls.b\">\n <slot />\n <sup :class=\"classList\" ref=\"supRef\" v-if=\"!hidden\">{{ badgeValue }}</sup>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFallbackProps } from '@veltra/compositions'\nimport { bem, setStyles, zIndex } from '@veltra/utils'\nimport { computed, nextTick, onMounted, shallowRef, watch } from 'vue'\n\nimport type { BadgeProps, ComponentSize } from '../../types'\n\ndefineOptions({\n name: 'Badge'\n})\n\nconst cls = bem('badge')\n\nconst props = withDefaults(defineProps<BadgeProps>(), {\n max: 99\n})\n\nconst { size } = useFallbackProps([props], {\n size: 'default' as ComponentSize\n})\n\nconst badgeValue = computed(() => {\n if (props.dot) return ''\n if (typeof props.value === 'number' && typeof props.max === 'number') {\n return props.value > props.max ? `${props.max}+` : props.value\n }\n return props.value\n})\n\nconst classList = computed(() => {\n return [\n cls.e('sup'),\n props.type && cls.m('color-' + props.type),\n cls.m(size.value),\n bem.is('dot', props.dot)\n ]\n})\n\nconst supRef = shallowRef<HTMLElement>()\n\nconst setPosition = () => {\n if (supRef.value) {\n const { width, height } = supRef.value.getBoundingClientRect()\n setStyles(supRef.value, {\n transform: `translate(-${width / 2}px, -${height / 2}px)`,\n backgroundColor: props.color,\n zIndex: zIndex()\n })\n }\n}\n\nwatch(\n () => size.value,\n () => {\n nextTick(() => {\n setPosition()\n })\n }\n)\n\nonMounted(() => {\n setPosition()\n})\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;EAkBA,MAAM,MAAM,IAAI,QAAO;EAEvB,MAAM,QAAQ;EAId,MAAM,EAAE,SAAS,iBAAiB,CAAC,MAAK,EAAG,EACzC,MAAM,WACP,CAAA;EAED,MAAM,aAAa,eAAe;GAChC,IAAI,MAAM,KAAK,OAAO;GACtB,IAAI,OAAO,MAAM,UAAU,YAAY,OAAO,MAAM,QAAQ,UAC1D,OAAO,MAAM,QAAQ,MAAM,MAAM,GAAG,MAAM,IAAI,KAAK,MAAM;GAE3D,OAAO,MAAM;IACd;EAED,MAAM,YAAY,eAAe;GAC/B,OAAO;IACL,IAAI,EAAE,MAAK;IACX,MAAM,QAAQ,IAAI,EAAE,WAAW,MAAM,KAAI;IACzC,IAAI,EAAE,KAAK,MAAK;IAChB,IAAI,GAAG,OAAO,MAAM,IAAG;IACzB;IACD;EAED,MAAM,SAAS,YAAwB;EAEvC,MAAM,oBAAoB;GACxB,IAAI,OAAO,OAAO;IAChB,MAAM,EAAE,OAAO,WAAW,OAAO,MAAM,uBAAsB;IAC7D,UAAU,OAAO,OAAO;KACtB,WAAW,cAAc,QAAQ,EAAE,OAAO,SAAS,EAAE;KACrD,iBAAiB,MAAM;KACvB,QAAQ,QAAO;KAChB,CAAA;;;EAIL,YACQ,KAAK,aACL;GACJ,eAAe;IACb,aAAY;KACb;IAEL;EAEA,gBAAgB;GACd,aAAY;IACb;;uBApEC,mBAGM,OAAA,EAHA,OAAK,eAAE,MAAA,IAAA,CAAI,EAAC,EAAA,EAAA,CAChB,WAAQ,KAAA,QAAA,UAAA,EAAA,CACoC,QAAA,UAAA,WAAA,EAA5C,mBAA0E,OAAA;;IAApE,OAAK,eAAE,UAAA,MAAS;aAAM;IAAJ,KAAI;sBAA2B,WAAA,MAAU,EAAA,EAAA,IAAA,mBAAA,QAAA,KAAA,CAAA,EAAA,EAAA"}
1
+ {"version":3,"file":"badge.js","names":[],"sources":["../../../src/components/badge/badge.vue"],"sourcesContent":["<template>\n <div :class=\"cls.b\">\n <slot />\n <sup :class=\"classList\" ref=\"supRef\" v-if=\"!hidden\">{{ badgeValue }}</sup>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFallbackProps } from '@veltra/compositions'\nimport { bem, setStyles, zIndex } from '@veltra/utils'\nimport { computed, nextTick, onMounted, shallowRef, watch } from 'vue'\n\nimport type { BadgeProps, ComponentSize } from '../../types'\n\ndefineOptions({ name: 'Badge' })\n\nconst cls = bem('badge')\n\nconst props = withDefaults(defineProps<BadgeProps>(), { max: 99 })\n\nconst { size } = useFallbackProps([props], { size: 'default' as ComponentSize })\n\nconst badgeValue = computed(() => {\n if (props.dot) return ''\n if (typeof props.value === 'number' && typeof props.max === 'number') {\n return props.value > props.max ? `${props.max}+` : props.value\n }\n return props.value\n})\n\nconst classList = computed(() => {\n return [\n cls.e('sup'),\n props.type && cls.m('color-' + props.type),\n cls.m(size.value),\n bem.is('dot', props.dot)\n ]\n})\n\nconst supRef = shallowRef<HTMLElement>()\n\nconst setPosition = () => {\n if (supRef.value) {\n const { width, height } = supRef.value.getBoundingClientRect()\n setStyles(supRef.value, {\n transform: `translate(-${width / 2}px, -${height / 2}px)`,\n backgroundColor: props.color,\n zIndex: zIndex()\n })\n }\n}\n\nwatch(\n () => size.value,\n () => {\n nextTick(() => {\n setPosition()\n })\n }\n)\n\nonMounted(() => {\n setPosition()\n})\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;EAgBA,MAAM,MAAM,IAAI,QAAO;EAEvB,MAAM,QAAQ;EAEd,MAAM,EAAE,SAAS,iBAAiB,CAAC,MAAK,EAAG,EAAE,MAAM,WAA4B,CAAA;EAE/E,MAAM,aAAa,eAAe;GAChC,IAAI,MAAM,KAAK,OAAO;GACtB,IAAI,OAAO,MAAM,UAAU,YAAY,OAAO,MAAM,QAAQ,UAC1D,OAAO,MAAM,QAAQ,MAAM,MAAM,GAAG,MAAM,IAAI,KAAK,MAAM;GAE3D,OAAO,MAAM;IACd;EAED,MAAM,YAAY,eAAe;GAC/B,OAAO;IACL,IAAI,EAAE,MAAK;IACX,MAAM,QAAQ,IAAI,EAAE,WAAW,MAAM,KAAI;IACzC,IAAI,EAAE,KAAK,MAAK;IAChB,IAAI,GAAG,OAAO,MAAM,IAAG;IACzB;IACD;EAED,MAAM,SAAS,YAAwB;EAEvC,MAAM,oBAAoB;GACxB,IAAI,OAAO,OAAO;IAChB,MAAM,EAAE,OAAO,WAAW,OAAO,MAAM,uBAAsB;IAC7D,UAAU,OAAO,OAAO;KACtB,WAAW,cAAc,QAAQ,EAAE,OAAO,SAAS,EAAE;KACrD,iBAAiB,MAAM;KACvB,QAAQ,QAAO;KAChB,CAAA;;;EAIL,YACQ,KAAK,aACL;GACJ,eAAe;IACb,aAAY;KACb;IAEL;EAEA,gBAAgB;GACd,aAAY;IACb;;uBA9DC,mBAGM,OAAA,EAHA,OAAK,eAAE,MAAA,IAAA,CAAI,EAAC,EAAA,EAAA,CAChB,WAAQ,KAAA,QAAA,UAAA,EAAA,CACoC,QAAA,UAAA,WAAA,EAA5C,mBAA0E,OAAA;;IAApE,OAAK,eAAE,UAAA,MAAS;aAAM;IAAJ,KAAI;sBAA2B,WAAA,MAAU,EAAA,EAAA,IAAA,mBAAA,QAAA,KAAA,CAAA,EAAA,EAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"batch-edit-form.js","names":[],"sources":["../../../src/components/batch-edit/batch-edit-form.vue"],"sourcesContent":["<template>\n <aside :class=\"cls.e('form')\" v-if=\"state.visible && !!props.model\">\n <header :class=\"cls.e('form-header')\">\n <span :class=\"[cls.e('form-icon'), bem.is(headerInfo.tone)]\">\n <u-icon>\n <component :is=\"headerInfo.icon\" />\n </u-icon>\n </span>\n <div :class=\"cls.e('form-title')\">\n <h3 :class=\"cls.e('form-title-text')\">{{ headerInfo.title }}</h3>\n <span v-if=\"headerInfo.chip\" :class=\"cls.e('form-chip')\">\n {{ headerInfo.chip }}\n </span>\n </div>\n <u-button\n :class=\"cls.e('form-close')\"\n :icon=\"Close\"\n text\n circle\n size=\"small\"\n title=\"关闭\"\n @click=\"handleClose\"\n />\n </header>\n\n <u-scroll always :class=\"cls.e('form-body')\" :key=\"bodyKey\">\n <transition name=\"fade\" appear mode=\"out-in\">\n <u-form\n :model=\"props.model\"\n :readonly=\"props.readonly\"\n @keydown=\"handleFormKeydown\"\n :label-width=\"props.labelWidth\"\n >\n <template #default=\"{ data, model }\">\n <slot\n v-bind=\"{\n data,\n model,\n row: state.row,\n depth: state.depth,\n indexes: insertIndexes,\n index: state.row?.index\n }\"\n />\n </template>\n </u-form>\n </transition>\n </u-scroll>\n\n <footer :class=\"cls.e('form-footer')\">\n <span :class=\"cls.e('form-hint')\" v-if=\"!props.readonly && state.dataUpdated\">\n 有未保存改动\n </span>\n <span :class=\"cls.e('form-hint')\" v-else-if=\"!props.readonly\">\n <u-kbd>Ctrl + Enter</u-kbd> 保存 · <u-kbd>Esc</u-kbd> 关闭\n </span>\n <span :class=\"cls.e('form-hint')\" v-else>只读模式</span>\n\n <div :class=\"cls.e('form-actions')\">\n <u-button text :loading=\"state.loading\" @click=\"handleClose\"> 取消 </u-button>\n <u-button\n v-if=\"!props.readonly && (creatable || updatable)\"\n :type=\"state.type === 'create' ? 'success' : 'primary'\"\n :loading=\"state.loading\"\n :disabled=\"!state.dataUpdated\"\n @click=\"handleSave\"\n >\n 保存\n </u-button>\n </div>\n </footer>\n </aside>\n</template>\n\n<script lang=\"ts\" setup>\nimport { AddChild, Close, EditPen, Plus, View } from '@veltra/icons/normal'\nimport { bem } from '@veltra/utils'\nimport { computed, inject, type Component } from 'vue'\n\nimport { UButton } from '../button'\nimport { UForm } from '../form'\nimport { UIcon } from '../icon'\nimport { UKbd } from '../kbd'\nimport { UScroll } from '../scroll'\nimport { BatchEditDIKey } from './di'\n\ndefineOptions({ name: 'BatchEditForm' })\n\nconst {\n cls,\n props,\n state,\n insertIndexes,\n handleSave,\n handleClose,\n staticFeatures,\n dynamicFeatures\n} = inject(BatchEditDIKey)!\n\nconst creatable = computed(() => {\n return (\n state.type === 'create' &&\n (staticFeatures.value.has('create') || dynamicFeatures.value.create?.(state.row))\n )\n})\n\nconst updatable = computed(() => {\n return (\n state.type === 'update' &&\n (staticFeatures.value.has('update') || dynamicFeatures.value.update?.(state.row))\n )\n})\n\ninterface HeaderInfo {\n icon: Component\n title: string\n chip?: string\n tone: 'create' | 'update' | 'view' | 'child'\n}\n\nconst headerInfo = computed<HeaderInfo>(() => {\n if (props.readonly) {\n return {\n icon: View,\n title: '查看详情',\n chip: state.row ? `第 ${state.row.index + 1} 行` : undefined,\n tone: 'view'\n }\n }\n if (state.parentRow) {\n return {\n icon: AddChild,\n title: '新增子级',\n chip: `归属于第 ${state.parentRow.index + 1} 行`,\n tone: 'child'\n }\n }\n if (state.type === 'create') {\n return {\n icon: Plus,\n title: '新增',\n tone: 'create'\n }\n }\n return {\n icon: EditPen,\n title: '编辑',\n chip: state.row ? `第 ${state.row.index + 1} 行` : undefined,\n tone: 'update'\n }\n})\n\n/** 通过 row 切换 / 类型切换驱动表单内容淡出淡入 */\nconst bodyKey = computed(() => {\n return `${state.type}-${state.row?.uid ?? 'create'}-${state.parentRow?.uid ?? 'root'}`\n})\n\nfunction handleFormKeydown(e: KeyboardEvent) {\n if ((e.metaKey || e.ctrlKey) && e.key === 'Enter') {\n e.preventDefault()\n handleSave()\n }\n}\n</script>\n"],"mappings":"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"}
1
+ {"version":3,"file":"batch-edit-form.js","names":[],"sources":["../../../src/components/batch-edit/batch-edit-form.vue"],"sourcesContent":["<template>\n <aside :class=\"cls.e('form')\" v-if=\"state.visible && !!props.model\">\n <header :class=\"cls.e('form-header')\">\n <span :class=\"[cls.e('form-icon'), bem.is(headerInfo.tone)]\">\n <u-icon>\n <component :is=\"headerInfo.icon\" />\n </u-icon>\n </span>\n <div :class=\"cls.e('form-title')\">\n <h3 :class=\"cls.e('form-title-text')\">{{ headerInfo.title }}</h3>\n <span v-if=\"headerInfo.chip\" :class=\"cls.e('form-chip')\">\n {{ headerInfo.chip }}\n </span>\n </div>\n <u-button\n :class=\"cls.e('form-close')\"\n :icon=\"Close\"\n text\n circle\n size=\"small\"\n title=\"关闭\"\n @click=\"handleClose\"\n />\n </header>\n\n <u-scroll always :class=\"cls.e('form-body')\" :key=\"bodyKey\">\n <transition name=\"fade\" appear mode=\"out-in\">\n <u-form\n :model=\"props.model\"\n :readonly=\"props.readonly\"\n @keydown=\"handleFormKeydown\"\n :label-width=\"props.labelWidth\"\n >\n <template #default=\"{ data, model }\">\n <slot\n v-bind=\"{\n data,\n model,\n row: state.row,\n depth: state.depth,\n indexes: insertIndexes,\n index: state.row?.index\n }\"\n />\n </template>\n </u-form>\n </transition>\n </u-scroll>\n\n <footer :class=\"cls.e('form-footer')\">\n <span :class=\"cls.e('form-hint')\" v-if=\"!props.readonly && state.dataUpdated\">\n 有未保存改动\n </span>\n <span :class=\"cls.e('form-hint')\" v-else-if=\"!props.readonly\">\n <u-kbd>Ctrl + Enter</u-kbd> 保存 · <u-kbd>Esc</u-kbd> 关闭\n </span>\n <span :class=\"cls.e('form-hint')\" v-else>只读模式</span>\n\n <div :class=\"cls.e('form-actions')\">\n <u-button text :loading=\"state.loading\" @click=\"handleClose\"> 取消 </u-button>\n <u-button\n v-if=\"!props.readonly && (creatable || updatable)\"\n :type=\"state.type === 'create' ? 'success' : 'primary'\"\n :loading=\"state.loading\"\n :disabled=\"!state.dataUpdated\"\n @click=\"handleSave\"\n >\n 保存\n </u-button>\n </div>\n </footer>\n </aside>\n</template>\n\n<script lang=\"ts\" setup>\nimport { AddChild, Close, EditPen, Plus, View } from '@veltra/icons/normal'\nimport { bem } from '@veltra/utils'\nimport { computed, inject, type Component } from 'vue'\n\nimport { UButton } from '../button'\nimport { UForm } from '../form'\nimport { UIcon } from '../icon'\nimport { UKbd } from '../kbd'\nimport { UScroll } from '../scroll'\nimport { BatchEditDIKey } from './di'\n\ndefineOptions({ name: 'BatchEditForm' })\n\nconst {\n cls,\n props,\n state,\n insertIndexes,\n handleSave,\n handleClose,\n staticFeatures,\n dynamicFeatures\n} = inject(BatchEditDIKey)!\n\nconst creatable = computed(() => {\n return (\n state.type === 'create' &&\n (staticFeatures.value.has('create') || dynamicFeatures.value.create?.(state.row))\n )\n})\n\nconst updatable = computed(() => {\n return (\n state.type === 'update' &&\n (staticFeatures.value.has('update') || dynamicFeatures.value.update?.(state.row))\n )\n})\n\ninterface HeaderInfo {\n icon: Component\n title: string\n chip?: string\n tone: 'create' | 'update' | 'view' | 'child'\n}\n\nconst headerInfo = computed<HeaderInfo>(() => {\n if (props.readonly) {\n return {\n icon: View,\n title: '查看详情',\n chip: state.row ? `第 ${state.row.index + 1} 行` : undefined,\n tone: 'view'\n }\n }\n if (state.parentRow) {\n return {\n icon: AddChild,\n title: '新增子级',\n chip: `归属于第 ${state.parentRow.index + 1} 行`,\n tone: 'child'\n }\n }\n if (state.type === 'create') {\n return { icon: Plus, title: '新增', tone: 'create' }\n }\n return {\n icon: EditPen,\n title: '编辑',\n chip: state.row ? `第 ${state.row.index + 1} 行` : undefined,\n tone: 'update'\n }\n})\n\n/** 通过 row 切换 / 类型切换驱动表单内容淡出淡入 */\nconst bodyKey = computed(() => {\n return `${state.type}-${state.row?.uid ?? 'create'}-${state.parentRow?.uid ?? 'root'}`\n})\n\nfunction handleFormKeydown(e: KeyboardEvent) {\n if ((e.metaKey || e.ctrlKey) && e.key === 'Enter') {\n e.preventDefault()\n handleSave()\n }\n}\n</script>\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"batch-edit-list.js","names":[],"sources":["../../../src/components/batch-edit/batch-edit-list.vue"],"sourcesContent":["<template>\n <u-table\n v-bind=\"tableProps\"\n :slots=\"slots\"\n :class=\"[cls.e('table'), bem.is('editing', state.visible)]\"\n :columns=\"columns\"\n highlight-current\n :current=\"state.row\"\n @update:current=\"handleUpdateCurrentRow\"\n @update:checked=\"emit('update:checked', $event)\"\n @update:selected=\"emit('update:selected', $event)\"\n ref=\"tableRef\"\n >\n <template #column:__action__=\"{ row }\">\n <u-action-group :class=\"cls.e('row-actions')\" :max=\"5\" @click.stop circle>\n <u-action\n v-if=\"allowed('create', row)\"\n :icon=\"InsertToPrev\"\n title=\"在上方插入\"\n @run=\"handleInsertToPrev(row)\"\n />\n <u-action\n v-if=\"allowed('create', row)\"\n :icon=\"InsertToNext\"\n title=\"在下方插入\"\n @run=\"handleInsertToNext(row)\"\n />\n <u-action\n v-if=\"!!props.tree && allowed('createChild', row)\"\n :icon=\"AddChild\"\n title=\"添加子级\"\n @run=\"handleInsertChild(row)\"\n />\n <u-action\n v-if=\"allowed('copy', row)\"\n :icon=\"Copy\"\n title=\"复制此行\"\n @run=\"handleCopy(row)\"\n />\n\n <u-action\n v-if=\"canDelete(row)\"\n :icon=\"Delete\"\n type=\"danger\"\n title=\"删除\"\n @run=\"handleDelete(row)\"\n v-bind=\"props.actionsProps?.delete\"\n />\n </u-action-group>\n </template>\n\n <template #empty v-if=\"!props.readonly\"> {{ null }} </template>\n\n <template\n #append\n v-if=\"\n !props.readonly &&\n (staticFeatures.has('create') || dynamicFeatures.create?.()) &&\n ((state.type === 'create' && !state.visible) || state.type === 'update')\n \"\n >\n <div :class=\"cls.e('add')\">\n <u-button\n :class=\"cls.e('add-btn')\"\n :icon=\"Plus\"\n :loading=\"state.loading\"\n type=\"primary\"\n plain\n @click.stop=\"handleCreate\"\n >\n 新增一行\n </u-button>\n </div>\n </template>\n </u-table>\n</template>\n\n<script setup lang=\"ts\">\nimport { o } from '@cat-kit/core'\nimport { AddChild, Copy, Delete, InsertToNext, InsertToPrev, Plus } from '@veltra/icons/normal'\nimport { bem } from '@veltra/utils'\nimport { computed, inject, type Slots } from 'vue'\n\nimport type { BatchEditFeature, TableRow } from '../../types'\nimport { UAction, UActionGroup } from '../action'\nimport { UButton } from '../button'\nimport { UTable } from '../table'\nimport { BatchEditDIKey } from './di'\n\ndefineOptions({\n name: 'BatchEditList'\n})\n\ndefineProps<{\n slots: Slots\n}>()\n\nconst {\n cls,\n state,\n tableRef,\n props,\n emit,\n staticFeatures,\n dynamicFeatures,\n handleCreate,\n handleCopy,\n handleDelete,\n handleInsertToNext,\n handleInsertToPrev,\n handleInsertChild\n} = inject(BatchEditDIKey)!\n\nconst tableProps = computed(() => {\n return o(props as Record<string, any>).omit([\n 'model',\n 'columns',\n 'cols',\n 'readonly',\n 'deleteMethod',\n 'saveMethod',\n 'features'\n ])\n})\n\nconst hasNot = (value: BatchEditFeature[]) => value.every((v) => !staticFeatures.value.has(v))\n\nconst allowed = (feature: BatchEditFeature, row?: TableRow) => {\n return staticFeatures.value.has(feature) || !!dynamicFeatures.value[feature]?.(row)\n}\n\nconst columns = computed(() => {\n if (props.readonly || hasNot(['create', 'delete', 'createChild', 'update', 'copy']))\n return props.columns\n\n return (props.columns ?? []).concat({\n name: '操作',\n key: '__action__',\n align: 'center',\n width: 180,\n fixed: 'right',\n resizable: false\n })\n})\n\nfunction handleUpdateCurrentRow(row?: TableRow) {\n if (allowed('update', row)) {\n state.row = row\n state.depth = row?.depth\n }\n}\n\nfunction canDelete(row: TableRow) {\n return !props.readonly && allowed('delete', row)\n}\n</script>\n"],"mappings":"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"}
1
+ {"version":3,"file":"batch-edit-list.js","names":[],"sources":["../../../src/components/batch-edit/batch-edit-list.vue"],"sourcesContent":["<template>\n <u-table\n v-bind=\"tableProps\"\n :slots=\"slots\"\n :class=\"[cls.e('table'), bem.is('editing', state.visible)]\"\n :columns=\"columns\"\n highlight-current\n :current=\"state.row\"\n @update:current=\"handleUpdateCurrentRow\"\n @update:checked=\"emit('update:checked', $event)\"\n @update:selected=\"emit('update:selected', $event)\"\n ref=\"tableRef\"\n >\n <template #column:__action__=\"{ row }\">\n <u-action-group :class=\"cls.e('row-actions')\" :max=\"5\" @click.stop circle>\n <u-action\n v-if=\"allowed('create', row)\"\n :icon=\"InsertToPrev\"\n title=\"在上方插入\"\n @run=\"handleInsertToPrev(row)\"\n />\n <u-action\n v-if=\"allowed('create', row)\"\n :icon=\"InsertToNext\"\n title=\"在下方插入\"\n @run=\"handleInsertToNext(row)\"\n />\n <u-action\n v-if=\"!!props.tree && allowed('createChild', row)\"\n :icon=\"AddChild\"\n title=\"添加子级\"\n @run=\"handleInsertChild(row)\"\n />\n <u-action\n v-if=\"allowed('copy', row)\"\n :icon=\"Copy\"\n title=\"复制此行\"\n @run=\"handleCopy(row)\"\n />\n\n <u-action\n v-if=\"canDelete(row)\"\n :icon=\"Delete\"\n type=\"danger\"\n title=\"删除\"\n @run=\"handleDelete(row)\"\n v-bind=\"props.actionsProps?.delete\"\n />\n </u-action-group>\n </template>\n\n <template #empty v-if=\"!props.readonly\"> {{ null }} </template>\n\n <template\n #append\n v-if=\"\n !props.readonly &&\n (staticFeatures.has('create') || dynamicFeatures.create?.()) &&\n ((state.type === 'create' && !state.visible) || state.type === 'update')\n \"\n >\n <div :class=\"cls.e('add')\">\n <u-button\n :class=\"cls.e('add-btn')\"\n :icon=\"Plus\"\n :loading=\"state.loading\"\n type=\"primary\"\n plain\n @click.stop=\"handleCreate\"\n >\n 新增一行\n </u-button>\n </div>\n </template>\n </u-table>\n</template>\n\n<script setup lang=\"ts\">\nimport { o } from '@cat-kit/core'\nimport { AddChild, Copy, Delete, InsertToNext, InsertToPrev, Plus } from '@veltra/icons/normal'\nimport { bem } from '@veltra/utils'\nimport { computed, inject, type Slots } from 'vue'\n\nimport type { BatchEditFeature, TableRow } from '../../types'\nimport { UAction, UActionGroup } from '../action'\nimport { UButton } from '../button'\nimport { UTable } from '../table'\nimport { BatchEditDIKey } from './di'\n\ndefineOptions({ name: 'BatchEditList' })\n\ndefineProps<{ slots: Slots }>()\n\nconst {\n cls,\n state,\n tableRef,\n props,\n emit,\n staticFeatures,\n dynamicFeatures,\n handleCreate,\n handleCopy,\n handleDelete,\n handleInsertToNext,\n handleInsertToPrev,\n handleInsertChild\n} = inject(BatchEditDIKey)!\n\nconst tableProps = computed(() => {\n return o(props as Record<string, any>).omit([\n 'model',\n 'columns',\n 'cols',\n 'readonly',\n 'deleteMethod',\n 'saveMethod',\n 'features'\n ])\n})\n\nconst hasNot = (value: BatchEditFeature[]) => value.every((v) => !staticFeatures.value.has(v))\n\nconst allowed = (feature: BatchEditFeature, row?: TableRow) => {\n return staticFeatures.value.has(feature) || !!dynamicFeatures.value[feature]?.(row)\n}\n\nconst columns = computed(() => {\n if (props.readonly || hasNot(['create', 'delete', 'createChild', 'update', 'copy']))\n return props.columns\n\n return (props.columns ?? []).concat({\n name: '操作',\n key: '__action__',\n align: 'center',\n width: 180,\n fixed: 'right',\n resizable: false\n })\n})\n\nfunction handleUpdateCurrentRow(row?: TableRow) {\n if (allowed('update', row)) {\n state.row = row\n state.depth = row?.depth\n }\n}\n\nfunction canDelete(row: TableRow) {\n return !props.readonly && allowed('delete', row)\n}\n</script>\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"batch-edit.js","names":[],"sources":["../../../src/components/batch-edit/batch-edit.vue"],"sourcesContent":["<template>\n <u-layout\n :class=\"cls.b\"\n :cols=\"cols\"\n rows=\"minmax(0, 1fr)\"\n gap=\"8px\"\n resizable\n @keydown=\"handleKeydown\"\n tabindex=\"-1\"\n >\n <!-- 编辑列表 -->\n <BatchEditList :slots=\"slots\" />\n\n <!-- 编辑表单 -->\n <BatchEditForm v-slot=\"scoped\">\n <!-- @vue-ignore -->\n <slot name=\"form\" v-bind=\"scoped\" />\n </BatchEditForm>\n </u-layout>\n</template>\n\n<script lang=\"ts\" setup generic=\"Model extends FormModel\">\nimport { bem } from '@veltra/utils'\nimport { computed, inject, provide, shallowRef, watch } from 'vue'\n\nimport type {\n BatchEditEmits,\n BatchEditFeature,\n BatchEditProps,\n TableColumnSlotsScope,\n TableExposed,\n TableRow\n} from '../../types'\nimport { DialogDIKey } from '../dialog/di'\nimport type { FormModel } from '../form'\nimport { ULayout } from '../layout'\nimport BatchEditForm from './batch-edit-form.vue'\nimport BatchEditList from './batch-edit-list.vue'\nimport { BatchEditDIKey } from './di'\nimport { useEdit } from './use-edit'\n\ndefineOptions({ name: 'BatchEdit' })\n\nconst props = withDefaults(defineProps<BatchEditProps<Model>>(), {\n cols: () => ['1fr', '420px'],\n mode: 'normal'\n})\n\nconst emit = defineEmits<BatchEditEmits>()\n\nconst staticFeatures = computed(() => {\n const { features } = props\n\n if (Array.isArray(features)) {\n return new Set(features)\n }\n\n const defaultFeatures = new Set<BatchEditFeature>(['create', 'delete', 'update', 'createChild'])\n\n if (!features) {\n return defaultFeatures\n }\n\n // 函数与 false 的特性视为关闭;显式 true 视为开启(即便不在默认集合内)\n Object.entries(features).forEach(([key, value]) => {\n const k = key as BatchEditFeature\n if (typeof value === 'function' || value === false) {\n defaultFeatures.delete(k)\n } else if (value === true) {\n defaultFeatures.add(k)\n }\n })\n return defaultFeatures\n})\n\nconst dynamicFeatures = computed<\n Record<BatchEditFeature, ((row?: TableRow) => boolean) | undefined>\n>(() => {\n const { features } = props\n if (!Array.isArray(features) && typeof features === 'object') {\n const ret = Object.entries(features)\n .filter(([_, value]) => {\n return typeof value === 'function'\n })\n .reduce(\n (acc, [key, value]) => {\n acc[key] = value\n return acc\n },\n {} as Record<BatchEditFeature, (row?: TableRow) => boolean>\n )\n return ret\n }\n\n return {} as Record<BatchEditFeature, ((row?: TableRow) => boolean) | undefined>\n})\n\nconst slots = defineSlots<\n {\n form?: (props: {\n /** 表单数据 */\n data: Model['data']\n /** 表单模型 */\n model: Model\n /** 当前编辑的层级 */\n depth?: number\n /** 当前编辑的行 */\n row?: TableRow\n /** 当前编辑的行索引 */\n index?: number\n /** 操作的目标行索引路径 */\n indexes?: number[]\n }) => any\n\n header?: () => any\n } & Partial<{\n [key: `column:${string}`]: (props: TableColumnSlotsScope) => any\n }>\n>()\n\nconst cls = bem('batch-edit')\n\nconst tableRef = shallowRef<TableExposed>()\n\nconst editCtx = useEdit({ props, emit, tableRef })\n\nconst { state, handleClose, handleSave, handleDelete, handleCreate } = editCtx\n\nprovide(BatchEditDIKey, {\n cls,\n props,\n emit,\n tableRef,\n staticFeatures,\n dynamicFeatures,\n ...editCtx\n})\n\nconst dialogCtx = inject(DialogDIKey, undefined)\n\ndialogCtx &&\n watch(dialogCtx.visible, (visible) => {\n !visible && editCtx.handleClose()\n })\n\nconst cols = computed(() => {\n return !!state.row || state.visible ? props.cols : undefined\n})\n\n/**\n * 键盘快捷键:\n * - Esc 关闭表单\n * - ⌘/Ctrl + S 保存\n * - ⌘/Ctrl + Backspace 删除当前编辑行\n * - ⌘/Ctrl + N 新增(仅在不在表单中时)\n */\nfunction handleKeydown(e: KeyboardEvent) {\n if (props.readonly && e.key !== 'Escape') return\n\n if (e.key === 'Escape') {\n if (state.visible) {\n e.preventDefault()\n handleClose()\n }\n return\n }\n\n const meta = e.metaKey || e.ctrlKey\n if (!meta) return\n\n const key = e.key.toLowerCase()\n\n if (key === 's' && state.visible) {\n e.preventDefault()\n handleSave()\n return\n }\n\n if (e.key === 'Backspace' && state.row && state.type === 'update') {\n e.preventDefault()\n handleDelete(state.row)\n return\n }\n\n if (key === 'n' && !state.visible) {\n e.preventDefault()\n handleCreate()\n }\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2CA,MAAM,QAAQ;EAKd,MAAM,OAAO;EAEb,MAAM,iBAAiB,eAAe;GACpC,MAAM,EAAE,aAAa;GAErB,IAAI,MAAM,QAAQ,SAAQ,EACxB,OAAO,IAAI,IAAI,SAAQ;GAGzB,MAAM,kBAAkB,IAAI,IAAsB;IAAC;IAAU;IAAU;IAAU;IAAc,CAAA;GAE/F,IAAI,CAAC,UACH,OAAO;GAIT,OAAO,QAAQ,SAAQ,CAAE,SAAS,CAAC,KAAK,WAAW;IACjD,MAAM,IAAI;IACV,IAAI,OAAO,UAAU,cAAc,UAAU,OAC3C,gBAAgB,OAAO,EAAC;SACnB,IAAI,UAAU,MACnB,gBAAgB,IAAI,EAAC;KAExB;GACD,OAAO;IACR;EAED,MAAM,kBAAkB,eAEhB;GACN,MAAM,EAAE,aAAa;GACrB,IAAI,CAAC,MAAM,QAAQ,SAAQ,IAAK,OAAO,aAAa,UAYlD,OAXY,OAAO,QAAQ,SAAQ,CAChC,QAAQ,CAAC,GAAG,WAAW;IACtB,OAAO,OAAO,UAAU;KACzB,CACA,QACE,KAAK,CAAC,KAAK,WAAW;IACrB,IAAI,OAAO;IACX,OAAO;MAET,EACF,CACK;GAGT,OAAO,EAAC;IACT;EAED,MAAM,QAAQ,UAAA;EAuBd,MAAM,MAAM,IAAI,aAAY;EAE5B,MAAM,WAAW,YAAyB;EAE1C,MAAM,UAAU,QAAQ;GAAE;GAAO;GAAM;GAAU,CAAA;EAEjD,MAAM,EAAE,OAAO,aAAa,YAAY,cAAc,iBAAiB;EAEvE,QAAQ,gBAAgB;GACtB;GACA;GACA;GACA;GACA;GACA;GACA,GAAG;GACJ,CAAA;EAED,MAAM,YAAY,OAAO,aAAa,KAAA,EAAS;EAE/C,aACE,MAAM,UAAU,UAAU,YAAY;GACpC,CAAC,WAAW,QAAQ,aAAY;IACjC;EAEH,MAAM,OAAO,eAAe;GAC1B,OAAO,CAAC,CAAC,MAAM,OAAO,MAAM,UAAU,MAAM,OAAO,KAAA;IACpD;;;;;;;;EASD,SAAS,cAAc,GAAkB;GACvC,IAAI,MAAM,YAAY,EAAE,QAAQ,UAAU;GAE1C,IAAI,EAAE,QAAQ,UAAU;IACtB,IAAI,MAAM,SAAS;KACjB,EAAE,gBAAe;KACjB,aAAY;;IAEd;;GAIF,IAAI,EADS,EAAE,WAAW,EAAE,UACjB;GAEX,MAAM,MAAM,EAAE,IAAI,aAAY;GAE9B,IAAI,QAAQ,OAAO,MAAM,SAAS;IAChC,EAAE,gBAAe;IACjB,YAAW;IACX;;GAGF,IAAI,EAAE,QAAQ,eAAe,MAAM,OAAO,MAAM,SAAS,UAAU;IACjE,EAAE,gBAAe;IACjB,aAAa,MAAM,IAAG;IACtB;;GAGF,IAAI,QAAQ,OAAO,CAAC,MAAM,SAAS;IACjC,EAAE,gBAAe;IACjB,cAAa;;;;uBAzLf,YAiBW,MAAA,YAAA,EAAA;IAhBR,OAAK,eAAE,MAAA,IAAA,CAAI,EAAC;IACZ,MAAM,KAAA;IACP,MAAK;IACL,KAAI;IACJ,WAAA;IACC,WAAS;IACV,UAAS;;2BAEI;KAAb,mBAAA,SAAA;KACA,YAAgC,aAAA,EAAT,OAAK,CAAA;KAE5B,mBAAA,SAAA;KACA,YAGgB,aAAA,MAAA;wBAHO,WAAM,CAC3B,mBAAA,gBAAA,EACA,WAAoC,KAAA,QAAA,QAAA,eAAA,mBAAV,OAAM,CAAA,CAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"batch-edit.js","names":[],"sources":["../../../src/components/batch-edit/batch-edit.vue"],"sourcesContent":["<template>\n <u-layout\n :class=\"cls.b\"\n :cols=\"cols\"\n rows=\"minmax(0, 1fr)\"\n gap=\"8px\"\n resizable\n @keydown=\"handleKeydown\"\n tabindex=\"-1\"\n >\n <!-- 编辑列表 -->\n <BatchEditList :slots=\"slots\" />\n\n <!-- 编辑表单 -->\n <BatchEditForm v-slot=\"scoped\">\n <!-- @vue-ignore -->\n <slot name=\"form\" v-bind=\"scoped\" />\n </BatchEditForm>\n </u-layout>\n</template>\n\n<script lang=\"ts\" setup generic=\"Model extends FormModel\">\nimport { bem } from '@veltra/utils'\nimport { computed, inject, provide, shallowRef, watch } from 'vue'\n\nimport type {\n BatchEditEmits,\n BatchEditFeature,\n BatchEditProps,\n TableColumnSlotsScope,\n TableExposed,\n TableRow\n} from '../../types'\nimport { DialogDIKey } from '../dialog/di'\nimport type { FormModel } from '../form'\nimport { ULayout } from '../layout'\nimport BatchEditForm from './batch-edit-form.vue'\nimport BatchEditList from './batch-edit-list.vue'\nimport { BatchEditDIKey } from './di'\nimport { useEdit } from './use-edit'\n\ndefineOptions({ name: 'BatchEdit' })\n\nconst props = withDefaults(defineProps<BatchEditProps<Model>>(), {\n cols: () => ['1fr', '420px'],\n mode: 'normal'\n})\n\nconst emit = defineEmits<BatchEditEmits>()\n\nconst staticFeatures = computed(() => {\n const { features } = props\n\n if (Array.isArray(features)) {\n return new Set(features)\n }\n\n const defaultFeatures = new Set<BatchEditFeature>(['create', 'delete', 'update', 'createChild'])\n\n if (!features) {\n return defaultFeatures\n }\n\n // 函数与 false 的特性视为关闭;显式 true 视为开启(即便不在默认集合内)\n Object.entries(features).forEach(([key, value]) => {\n const k = key as BatchEditFeature\n if (typeof value === 'function' || value === false) {\n defaultFeatures.delete(k)\n } else if (value === true) {\n defaultFeatures.add(k)\n }\n })\n return defaultFeatures\n})\n\nconst dynamicFeatures = computed<\n Record<BatchEditFeature, ((row?: TableRow) => boolean) | undefined>\n>(() => {\n const { features } = props\n if (!Array.isArray(features) && typeof features === 'object') {\n const ret = Object.entries(features)\n .filter(([_, value]) => {\n return typeof value === 'function'\n })\n .reduce(\n (acc, [key, value]) => {\n acc[key] = value\n return acc\n },\n {} as Record<BatchEditFeature, (row?: TableRow) => boolean>\n )\n return ret\n }\n\n return {} as Record<BatchEditFeature, ((row?: TableRow) => boolean) | undefined>\n})\n\nconst slots = defineSlots<\n {\n form?: (props: {\n /** 表单数据 */\n data: Model['data']\n /** 表单模型 */\n model: Model\n /** 当前编辑的层级 */\n depth?: number\n /** 当前编辑的行 */\n row?: TableRow\n /** 当前编辑的行索引 */\n index?: number\n /** 操作的目标行索引路径 */\n indexes?: number[]\n }) => any\n\n header?: () => any\n } & Partial<{ [key: `column:${string}`]: (props: TableColumnSlotsScope) => any }>\n>()\n\nconst cls = bem('batch-edit')\n\nconst tableRef = shallowRef<TableExposed>()\n\nconst editCtx = useEdit({ props, emit, tableRef })\n\nconst { state, handleClose, handleSave, handleDelete, handleCreate } = editCtx\n\nprovide(BatchEditDIKey, { cls, props, emit, tableRef, staticFeatures, dynamicFeatures, ...editCtx })\n\nconst dialogCtx = inject(DialogDIKey, undefined)\n\ndialogCtx &&\n watch(dialogCtx.visible, (visible) => {\n !visible && editCtx.handleClose()\n })\n\nconst cols = computed(() => {\n return !!state.row || state.visible ? props.cols : undefined\n})\n\n/**\n * 键盘快捷键:\n * - Esc 关闭表单\n * - ⌘/Ctrl + S 保存\n * - ⌘/Ctrl + Backspace 删除当前编辑行\n * - ⌘/Ctrl + N 新增(仅在不在表单中时)\n */\nfunction handleKeydown(e: KeyboardEvent) {\n if (props.readonly && e.key !== 'Escape') return\n\n if (e.key === 'Escape') {\n if (state.visible) {\n e.preventDefault()\n handleClose()\n }\n return\n }\n\n const meta = e.metaKey || e.ctrlKey\n if (!meta) return\n\n const key = e.key.toLowerCase()\n\n if (key === 's' && state.visible) {\n e.preventDefault()\n handleSave()\n return\n }\n\n if (e.key === 'Backspace' && state.row && state.type === 'update') {\n e.preventDefault()\n handleDelete(state.row)\n return\n }\n\n if (key === 'n' && !state.visible) {\n e.preventDefault()\n handleCreate()\n }\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2CA,MAAM,QAAQ;EAKd,MAAM,OAAO;EAEb,MAAM,iBAAiB,eAAe;GACpC,MAAM,EAAE,aAAa;GAErB,IAAI,MAAM,QAAQ,SAAQ,EACxB,OAAO,IAAI,IAAI,SAAQ;GAGzB,MAAM,kBAAkB,IAAI,IAAsB;IAAC;IAAU;IAAU;IAAU;IAAc,CAAA;GAE/F,IAAI,CAAC,UACH,OAAO;GAIT,OAAO,QAAQ,SAAQ,CAAE,SAAS,CAAC,KAAK,WAAW;IACjD,MAAM,IAAI;IACV,IAAI,OAAO,UAAU,cAAc,UAAU,OAC3C,gBAAgB,OAAO,EAAC;SACnB,IAAI,UAAU,MACnB,gBAAgB,IAAI,EAAC;KAExB;GACD,OAAO;IACR;EAED,MAAM,kBAAkB,eAEhB;GACN,MAAM,EAAE,aAAa;GACrB,IAAI,CAAC,MAAM,QAAQ,SAAQ,IAAK,OAAO,aAAa,UAYlD,OAXY,OAAO,QAAQ,SAAQ,CAChC,QAAQ,CAAC,GAAG,WAAW;IACtB,OAAO,OAAO,UAAU;KACzB,CACA,QACE,KAAK,CAAC,KAAK,WAAW;IACrB,IAAI,OAAO;IACX,OAAO;MAET,EACF,CACK;GAGT,OAAO,EAAC;IACT;EAED,MAAM,QAAQ,UAAA;EAqBd,MAAM,MAAM,IAAI,aAAY;EAE5B,MAAM,WAAW,YAAyB;EAE1C,MAAM,UAAU,QAAQ;GAAE;GAAO;GAAM;GAAU,CAAA;EAEjD,MAAM,EAAE,OAAO,aAAa,YAAY,cAAc,iBAAiB;EAEvE,QAAQ,gBAAgB;GAAE;GAAK;GAAO;GAAM;GAAU;GAAgB;GAAiB,GAAG;GAAS,CAAA;EAEnG,MAAM,YAAY,OAAO,aAAa,KAAA,EAAS;EAE/C,aACE,MAAM,UAAU,UAAU,YAAY;GACpC,CAAC,WAAW,QAAQ,aAAY;IACjC;EAEH,MAAM,OAAO,eAAe;GAC1B,OAAO,CAAC,CAAC,MAAM,OAAO,MAAM,UAAU,MAAM,OAAO,KAAA;IACpD;;;;;;;;EASD,SAAS,cAAc,GAAkB;GACvC,IAAI,MAAM,YAAY,EAAE,QAAQ,UAAU;GAE1C,IAAI,EAAE,QAAQ,UAAU;IACtB,IAAI,MAAM,SAAS;KACjB,EAAE,gBAAe;KACjB,aAAY;;IAEd;;GAIF,IAAI,EADS,EAAE,WAAW,EAAE,UACjB;GAEX,MAAM,MAAM,EAAE,IAAI,aAAY;GAE9B,IAAI,QAAQ,OAAO,MAAM,SAAS;IAChC,EAAE,gBAAe;IACjB,YAAW;IACX;;GAGF,IAAI,EAAE,QAAQ,eAAe,MAAM,OAAO,MAAM,SAAS,UAAU;IACjE,EAAE,gBAAe;IACjB,aAAa,MAAM,IAAG;IACtB;;GAGF,IAAI,QAAQ,OAAO,CAAC,MAAM,SAAS;IACjC,EAAE,gBAAe;IACjB,cAAa;;;;uBA/Kf,YAiBW,MAAA,YAAA,EAAA;IAhBR,OAAK,eAAE,MAAA,IAAA,CAAI,EAAC;IACZ,MAAM,KAAA;IACP,MAAK;IACL,KAAI;IACJ,WAAA;IACC,WAAS;IACV,UAAS;;2BAEI;KAAb,mBAAA,SAAA;KACA,YAAgC,aAAA,EAAT,OAAK,CAAA;KAE5B,mBAAA,SAAA;KACA,YAGgB,aAAA,MAAA;wBAHO,WAAM,CAC3B,mBAAA,gBAAA,EACA,WAAoC,KAAA,QAAA,QAAA,eAAA,mBAAV,OAAM,CAAA,CAAA,CAAA,CAAA"}
@@ -9,12 +9,12 @@ declare const __VLS_export: <Model extends FormModel>(__VLS_props: NonNullable<A
9
9
  props: _$vue.PublicProps & __VLS_PrettifyLocal<BatchEditProps<Model> & {
10
10
  "onUpdate:selected"?: ((value: Record<string, any> | undefined) => any) | undefined;
11
11
  "onUpdate:checked"?: ((value: Record<string, any>[]) => any) | undefined;
12
- "onUpdate:current"?: ((row?: TableRow | undefined) => any) | undefined;
12
+ "onUpdate:data"?: ((value: Record<string, any>[]) => any) | undefined;
13
13
  "onUpdate:rows"?: ((rows: TableRow[]) => any) | undefined;
14
14
  "onUpdate:forest"?: ((rows?: _$_cat_kit_core0.Forest<Record<string, unknown>, any> | undefined) => any) | undefined;
15
+ "onUpdate:current"?: ((row?: TableRow | undefined) => any) | undefined;
15
16
  "onCell-click"?: ((row: TableRow, column: TableColumn, ev: MouseEvent) => any) | undefined;
16
17
  "onRow-click"?: ((row: TableRow, ev: MouseEvent) => any) | undefined;
17
- "onUpdate:data"?: ((value: Record<string, any>[]) => any) | undefined;
18
18
  }> & (typeof globalThis extends {
19
19
  __VLS_PROPS_FALLBACK: infer P;
20
20
  } ? P : {});
@@ -1 +1 @@
1
- {"version":3,"file":"breadcrumb.js","names":[],"sources":["../../../src/components/breadcrumb/breadcrumb.vue"],"sourcesContent":["<template>\n <nav :class=\"[cls.b, cls.m(size)]\" aria-label=\"Breadcrumb\">\n <ol :class=\"cls.e('list')\">\n <template v-for=\"(item, index) in props.items\" :key=\"index\">\n <li :class=\"cls.e('item')\">\n <slot name=\"item\" v-bind=\"{ item, index, isLast: index === props.items.length - 1 }\">\n <a\n v-if=\"isAnchor(item, index)\"\n :class=\"linkClass(item, index)\"\n :href=\"item.href\"\n :aria-disabled=\"item.disabled ? 'true' : undefined\"\n :tabindex=\"item.disabled ? -1 : undefined\"\n @click=\"handleAnchorClick($event, item, index)\"\n >\n {{ item.title }}\n </a>\n <span\n v-else-if=\"isActionSpan(item, index)\"\n :class=\"linkClass(item, index)\"\n role=\"link\"\n :tabindex=\"item.disabled ? -1 : 0\"\n @click=\"handleSpanClick($event, item, index)\"\n @keydown=\"handleSpanKeydown($event, item, index)\"\n >\n {{ item.title }}\n </span>\n <span v-else :class=\"innerClass(true)\" aria-current=\"page\">{{ item.title }}</span>\n </slot>\n </li>\n <li v-if=\"index < props.items.length - 1\" :class=\"cls.e('separator')\" aria-hidden=\"true\">\n <slot name=\"separator\">/</slot>\n </li>\n </template>\n </ol>\n </nav>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFallbackProps } from '@veltra/compositions'\nimport { bem } from '@veltra/utils'\n\nimport type {\n BreadcrumbEmits,\n BreadcrumbItem,\n BreadcrumbProps,\n BreadcrumbSlotScope,\n ComponentSize\n} from '../../types'\n\ndefineOptions({\n name: 'Breadcrumb'\n})\n\nconst props = withDefaults(defineProps<BreadcrumbProps>(), {\n lastLinked: false\n})\n\nconst emit = defineEmits<BreadcrumbEmits>()\n\ndefineSlots<{\n item?: (scope: BreadcrumbSlotScope) => unknown\n separator?: () => unknown\n}>()\n\nconst cls = bem('breadcrumb')\n\nconst { size } = useFallbackProps([props], {\n size: 'default' as ComponentSize\n})\n\nconst isLast = (index: number) => index === props.items.length - 1\n\nconst isLinked = (item: BreadcrumbItem, index: number) => {\n if (item.disabled) return false\n if (isLast(index)) return props.lastLinked\n return true\n}\n\nconst isAnchor = (item: BreadcrumbItem, index: number) => isLinked(item, index) && !!item.href\n\nconst isActionSpan = (item: BreadcrumbItem, index: number) => isLinked(item, index) && !item.href\n\nconst innerClass = (current: boolean) => [cls.e('inner'), current && bem.is('current', current)]\n\nconst linkClass = (item: BreadcrumbItem, index: number) => [\n cls.e('inner'),\n cls.e('link'),\n bem.is('disabled', !!item.disabled),\n bem.is('current', isLast(index) && !props.lastLinked)\n]\n\nconst handleAnchorClick = (ev: MouseEvent, item: BreadcrumbItem, index: number) => {\n if (item.disabled) {\n ev.preventDefault()\n ev.stopPropagation()\n }\n}\n\nconst handleSpanClick = (ev: MouseEvent, item: BreadcrumbItem, index: number) => {\n if (item.disabled) {\n ev.preventDefault()\n return\n }\n emit('click', item, index, ev)\n}\n\nconst handleSpanKeydown = (ev: KeyboardEvent, item: BreadcrumbItem, index: number) => {\n if (item.disabled) return\n if (ev.key !== 'Enter' && ev.key !== ' ') return\n ev.preventDefault()\n emit('click', item, index, ev)\n}\n</script>\n"],"mappings":"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"}
1
+ {"version":3,"file":"breadcrumb.js","names":[],"sources":["../../../src/components/breadcrumb/breadcrumb.vue"],"sourcesContent":["<template>\n <nav :class=\"[cls.b, cls.m(size)]\" aria-label=\"Breadcrumb\">\n <ol :class=\"cls.e('list')\">\n <template v-for=\"(item, index) in props.items\" :key=\"index\">\n <li :class=\"cls.e('item')\">\n <slot name=\"item\" v-bind=\"{ item, index, isLast: index === props.items.length - 1 }\">\n <a\n v-if=\"isAnchor(item, index)\"\n :class=\"linkClass(item, index)\"\n :href=\"item.href\"\n :aria-disabled=\"item.disabled ? 'true' : undefined\"\n :tabindex=\"item.disabled ? -1 : undefined\"\n @click=\"handleAnchorClick($event, item, index)\"\n >\n {{ item.title }}\n </a>\n <span\n v-else-if=\"isActionSpan(item, index)\"\n :class=\"linkClass(item, index)\"\n role=\"link\"\n :tabindex=\"item.disabled ? -1 : 0\"\n @click=\"handleSpanClick($event, item, index)\"\n @keydown=\"handleSpanKeydown($event, item, index)\"\n >\n {{ item.title }}\n </span>\n <span v-else :class=\"innerClass(true)\" aria-current=\"page\">{{ item.title }}</span>\n </slot>\n </li>\n <li v-if=\"index < props.items.length - 1\" :class=\"cls.e('separator')\" aria-hidden=\"true\">\n <slot name=\"separator\">/</slot>\n </li>\n </template>\n </ol>\n </nav>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFallbackProps } from '@veltra/compositions'\nimport { bem } from '@veltra/utils'\n\nimport type {\n BreadcrumbEmits,\n BreadcrumbItem,\n BreadcrumbProps,\n BreadcrumbSlotScope,\n ComponentSize\n} from '../../types'\n\ndefineOptions({ name: 'Breadcrumb' })\n\nconst props = withDefaults(defineProps<BreadcrumbProps>(), { lastLinked: false })\n\nconst emit = defineEmits<BreadcrumbEmits>()\n\ndefineSlots<{ item?: (scope: BreadcrumbSlotScope) => unknown; separator?: () => unknown }>()\n\nconst cls = bem('breadcrumb')\n\nconst { size } = useFallbackProps([props], { size: 'default' as ComponentSize })\n\nconst isLast = (index: number) => index === props.items.length - 1\n\nconst isLinked = (item: BreadcrumbItem, index: number) => {\n if (item.disabled) return false\n if (isLast(index)) return props.lastLinked\n return true\n}\n\nconst isAnchor = (item: BreadcrumbItem, index: number) => isLinked(item, index) && !!item.href\n\nconst isActionSpan = (item: BreadcrumbItem, index: number) => isLinked(item, index) && !item.href\n\nconst innerClass = (current: boolean) => [cls.e('inner'), current && bem.is('current', current)]\n\nconst linkClass = (item: BreadcrumbItem, index: number) => [\n cls.e('inner'),\n cls.e('link'),\n bem.is('disabled', !!item.disabled),\n bem.is('current', isLast(index) && !props.lastLinked)\n]\n\nconst handleAnchorClick = (ev: MouseEvent, item: BreadcrumbItem, index: number) => {\n if (item.disabled) {\n ev.preventDefault()\n ev.stopPropagation()\n }\n}\n\nconst handleSpanClick = (ev: MouseEvent, item: BreadcrumbItem, index: number) => {\n if (item.disabled) {\n ev.preventDefault()\n return\n }\n emit('click', item, index, ev)\n}\n\nconst handleSpanKeydown = (ev: KeyboardEvent, item: BreadcrumbItem, index: number) => {\n if (item.disabled) return\n if (ev.key !== 'Enter' && ev.key !== ' ') return\n ev.preventDefault()\n emit('click', item, index, ev)\n}\n</script>\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"button-group.js","names":[],"sources":["../../../src/components/button/button-group.vue"],"sourcesContent":["<template>\n <div :class=\"cls.b\">\n <slot v-bind=\"{ props }\" />\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { bem } from '@veltra/utils'\n\nimport type { ButtonProps } from '../../types'\n\ndefineOptions({\n name: 'ButtonGroup'\n})\n\nconst props = defineProps<ButtonProps>()\n\nconst cls = bem('button-group')\n\ndefineSlots<{\n default: (props: { props: ButtonProps }) => any\n}>()\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;EAeA,MAAM,QAAQ;EAEd,MAAM,MAAM,IAAI,eAAc;;uBAhB5B,mBAEM,OAAA,EAFA,OAAK,eAAE,MAAA,IAAA,CAAI,EAAC,EAAA,EAAA,CAChB,WAA2B,KAAA,QAAA,WAAA,eAAA,mBAAA,EAAX,OAAK,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA"}
1
+ {"version":3,"file":"button-group.js","names":[],"sources":["../../../src/components/button/button-group.vue"],"sourcesContent":["<template>\n <div :class=\"cls.b\">\n <slot v-bind=\"{ props }\" />\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { bem } from '@veltra/utils'\n\nimport type { ButtonProps } from '../../types'\n\ndefineOptions({ name: 'ButtonGroup' })\n\nconst props = defineProps<ButtonProps>()\n\nconst cls = bem('button-group')\n\ndefineSlots<{ default: (props: { props: ButtonProps }) => any }>()\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;EAaA,MAAM,QAAQ;EAEd,MAAM,MAAM,IAAI,eAAc;;uBAd5B,mBAEM,OAAA,EAFA,OAAK,eAAE,MAAA,IAAA,CAAI,EAAC,EAAA,EAAA,CAChB,WAA2B,KAAA,QAAA,WAAA,eAAA,mBAAA,EAAX,OAAK,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"button.js","names":[],"sources":["../../../src/components/button/button.vue"],"sourcesContent":["<template>\n <button\n :class=\"classList\"\n type=\"button\"\n aria-label=\"button\"\n ref=\"buttonRef\"\n v-ripple=\"ripple\"\n @click=\"handleClick\"\n >\n <!-- 加载图标 -->\n <u-icon v-if=\"loading\" :class=\"[bem.is('loading')]\" :size=\"iconSize\">\n <component :is=\"loadingIcon\" />\n </u-icon>\n\n <!-- 左侧图标 -->\n <u-icon v-if=\"!!icon && iconPosition === 'left' && !loading\" :size=\"iconSize\">\n <component :is=\"icon\" />\n </u-icon>\n\n <slot />\n\n <!-- 右侧图标 -->\n <u-icon v-if=\"!!icon && iconPosition === 'right'\" :size=\"iconSize\">\n <component :is=\"icon\" />\n </u-icon>\n </button>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFallbackProps } from '@veltra/compositions'\nimport { vRipple } from '@veltra/directives'\nimport { Loading } from '@veltra/icons'\nimport { bem } from '@veltra/utils'\nimport { computed, shallowRef } from 'vue'\n\nimport type { ButtonEmits, ButtonProps, _ButtonExposed, ComponentSize } from '../../types'\nimport { UIcon } from '../icon'\n\ndefineOptions({\n name: 'Button'\n})\n\nconst props = withDefaults(defineProps<ButtonProps>(), {\n iconPosition: 'left',\n loadingIcon: () => Loading,\n disabled: false,\n propagate: true\n})\n\nconst { size } = useFallbackProps([props], {\n size: 'default' as ComponentSize\n})\n\nconst emit = defineEmits<ButtonEmits>()\n\nconst cls = bem('button')\n\nconst classList = computed(() => {\n return [\n cls.b,\n cls.m(size.value),\n props.type && cls.m('color-' + props.type),\n bem.is('circle', props.circle),\n bem.is('disabled', props.disabled),\n bem.is('loading', props.loading),\n bem.is('plain', props.plain),\n bem.is('text', props.text)\n ]\n})\n\nconst ripple = computed(() => {\n if (props.disabled || props.loading) return false\n if ((props.plain || props.text) && props.type) {\n return bem.is(`ripple-${props.type}`)\n }\n return true\n})\n\nconst handleClick = (e: MouseEvent) => {\n if (props.disabled || props.loading) {\n e.stopPropagation()\n return\n }\n\n !props.propagate && e.stopPropagation()\n\n emit('click', e)\n}\n\nconst buttonRef = shallowRef<HTMLButtonElement>()\n\nconst exposed: _ButtonExposed = {\n el: buttonRef\n}\n\ndefineExpose(exposed)\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0CA,MAAM,QAAQ;EAOd,MAAM,EAAE,SAAS,iBAAiB,CAAC,MAAK,EAAG,EACzC,MAAM,WACP,CAAA;EAED,MAAM,OAAO;EAEb,MAAM,MAAM,IAAI,SAAQ;EAExB,MAAM,YAAY,eAAe;GAC/B,OAAO;IACL,IAAI;IACJ,IAAI,EAAE,KAAK,MAAK;IAChB,MAAM,QAAQ,IAAI,EAAE,WAAW,MAAM,KAAI;IACzC,IAAI,GAAG,UAAU,MAAM,OAAM;IAC7B,IAAI,GAAG,YAAY,MAAM,SAAQ;IACjC,IAAI,GAAG,WAAW,MAAM,QAAO;IAC/B,IAAI,GAAG,SAAS,MAAM,MAAK;IAC3B,IAAI,GAAG,QAAQ,MAAM,KAAI;IAC3B;IACD;EAED,MAAM,SAAS,eAAe;GAC5B,IAAI,MAAM,YAAY,MAAM,SAAS,OAAO;GAC5C,KAAK,MAAM,SAAS,MAAM,SAAS,MAAM,MACvC,OAAO,IAAI,GAAG,UAAU,MAAM,OAAM;GAEtC,OAAO;IACR;EAED,MAAM,eAAe,MAAkB;GACrC,IAAI,MAAM,YAAY,MAAM,SAAS;IACnC,EAAE,iBAAgB;IAClB;;GAGF,CAAC,MAAM,aAAa,EAAE,iBAAgB;GAEtC,KAAK,SAAS,EAAC;;EAGjB,MAAM,YAAY,YAA8B;EAMhD,SAAa,EAHX,IAAI,WAGc,CAAA;;uCA9FlB,mBAwBS,UAAA;IAvBN,OAAK,eAAE,UAAA,MAAS;IACjB,MAAK;IACL,cAAW;aACP;IAAJ,KAAI;IAEH,SAAO;;IAER,mBAAA,SAAA;IACc,QAAA,WAAA,WAAA,EAAd,YAES,MAAA,YAAA,EAAA;;KAFe,OAAK,eAAA,CAAG,MAAA,IAAA,CAAI,GAAE,UAAA,CAAA,CAAA;KAAe,MAAM,QAAA;;4BAC1B,EAAA,WAAA,EAA/B,YAA+B,wBAAf,QAAA,YAAW,CAAA,EAAA,CAAA;;;IAG7B,mBAAA,SAAA;MACgB,QAAA,QAAQ,QAAA,iBAAY,UAAA,CAAgB,QAAA,WAAA,WAAA,EAApD,YAES,MAAA,YAAA,EAAA;;KAFqD,MAAM,QAAA;;4BAC1C,EAAA,WAAA,EAAxB,YAAwB,wBAAR,QAAA,KAAI,CAAA,EAAA,CAAA;;;IAGtB,WAAQ,KAAA,QAAA,UAAA;IAER,mBAAA,SAAA;MACgB,QAAA,QAAQ,QAAA,iBAAY,WAAA,WAAA,EAApC,YAES,MAAA,YAAA,EAAA;;KAF0C,MAAM,QAAA;;4BAC/B,EAAA,WAAA,EAAxB,YAAwB,wBAAR,QAAA,KAAI,CAAA,EAAA,CAAA;;;6BAjBZ,OAAA,MAAM,CAAA,CAAA"}
1
+ {"version":3,"file":"button.js","names":[],"sources":["../../../src/components/button/button.vue"],"sourcesContent":["<template>\n <button\n :class=\"classList\"\n type=\"button\"\n aria-label=\"button\"\n ref=\"buttonRef\"\n v-ripple=\"ripple\"\n @click=\"handleClick\"\n >\n <!-- 加载图标 -->\n <u-icon v-if=\"loading\" :class=\"[bem.is('loading')]\" :size=\"iconSize\">\n <component :is=\"loadingIcon\" />\n </u-icon>\n\n <!-- 左侧图标 -->\n <u-icon v-if=\"!!icon && iconPosition === 'left' && !loading\" :size=\"iconSize\">\n <component :is=\"icon\" />\n </u-icon>\n\n <slot />\n\n <!-- 右侧图标 -->\n <u-icon v-if=\"!!icon && iconPosition === 'right'\" :size=\"iconSize\">\n <component :is=\"icon\" />\n </u-icon>\n </button>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFallbackProps } from '@veltra/compositions'\nimport { vRipple } from '@veltra/directives'\nimport { Loading } from '@veltra/icons'\nimport { bem } from '@veltra/utils'\nimport { computed, shallowRef } from 'vue'\n\nimport type { ButtonEmits, ButtonProps, _ButtonExposed, ComponentSize } from '../../types'\nimport { UIcon } from '../icon'\n\ndefineOptions({ name: 'Button' })\n\nconst props = withDefaults(defineProps<ButtonProps>(), {\n iconPosition: 'left',\n loadingIcon: () => Loading,\n disabled: false,\n propagate: true\n})\n\nconst { size } = useFallbackProps([props], { size: 'default' as ComponentSize })\n\nconst emit = defineEmits<ButtonEmits>()\n\nconst cls = bem('button')\n\nconst classList = computed(() => {\n return [\n cls.b,\n cls.m(size.value),\n props.type && cls.m('color-' + props.type),\n bem.is('circle', props.circle),\n bem.is('disabled', props.disabled),\n bem.is('loading', props.loading),\n bem.is('plain', props.plain),\n bem.is('text', props.text)\n ]\n})\n\nconst ripple = computed(() => {\n if (props.disabled || props.loading) return false\n if ((props.plain || props.text) && props.type) {\n return bem.is(`ripple-${props.type}`)\n }\n return true\n})\n\nconst handleClick = (e: MouseEvent) => {\n if (props.disabled || props.loading) {\n e.stopPropagation()\n return\n }\n\n !props.propagate && e.stopPropagation()\n\n emit('click', e)\n}\n\nconst buttonRef = shallowRef<HTMLButtonElement>()\n\nconst exposed: _ButtonExposed = { el: buttonRef }\n\ndefineExpose(exposed)\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwCA,MAAM,QAAQ;EAOd,MAAM,EAAE,SAAS,iBAAiB,CAAC,MAAK,EAAG,EAAE,MAAM,WAA4B,CAAA;EAE/E,MAAM,OAAO;EAEb,MAAM,MAAM,IAAI,SAAQ;EAExB,MAAM,YAAY,eAAe;GAC/B,OAAO;IACL,IAAI;IACJ,IAAI,EAAE,KAAK,MAAK;IAChB,MAAM,QAAQ,IAAI,EAAE,WAAW,MAAM,KAAI;IACzC,IAAI,GAAG,UAAU,MAAM,OAAM;IAC7B,IAAI,GAAG,YAAY,MAAM,SAAQ;IACjC,IAAI,GAAG,WAAW,MAAM,QAAO;IAC/B,IAAI,GAAG,SAAS,MAAM,MAAK;IAC3B,IAAI,GAAG,QAAQ,MAAM,KAAI;IAC3B;IACD;EAED,MAAM,SAAS,eAAe;GAC5B,IAAI,MAAM,YAAY,MAAM,SAAS,OAAO;GAC5C,KAAK,MAAM,SAAS,MAAM,SAAS,MAAM,MACvC,OAAO,IAAI,GAAG,UAAU,MAAM,OAAM;GAEtC,OAAO;IACR;EAED,MAAM,eAAe,MAAkB;GACrC,IAAI,MAAM,YAAY,MAAM,SAAS;IACnC,EAAE,iBAAgB;IAClB;;GAGF,CAAC,MAAM,aAAa,EAAE,iBAAgB;GAEtC,KAAK,SAAS,EAAC;;EAGjB,MAAM,YAAY,YAA8B;EAIhD,SAAa,EAFqB,IAAI,WAElB,CAAA;;uCAxFlB,mBAwBS,UAAA;IAvBN,OAAK,eAAE,UAAA,MAAS;IACjB,MAAK;IACL,cAAW;aACP;IAAJ,KAAI;IAEH,SAAO;;IAER,mBAAA,SAAA;IACc,QAAA,WAAA,WAAA,EAAd,YAES,MAAA,YAAA,EAAA;;KAFe,OAAK,eAAA,CAAG,MAAA,IAAA,CAAI,GAAE,UAAA,CAAA,CAAA;KAAe,MAAM,QAAA;;4BAC1B,EAAA,WAAA,EAA/B,YAA+B,wBAAf,QAAA,YAAW,CAAA,EAAA,CAAA;;;IAG7B,mBAAA,SAAA;MACgB,QAAA,QAAQ,QAAA,iBAAY,UAAA,CAAgB,QAAA,WAAA,WAAA,EAApD,YAES,MAAA,YAAA,EAAA;;KAFqD,MAAM,QAAA;;4BAC1C,EAAA,WAAA,EAAxB,YAAwB,wBAAR,QAAA,KAAI,CAAA,EAAA,CAAA;;;IAGtB,WAAQ,KAAA,QAAA,UAAA;IAER,mBAAA,SAAA;MACgB,QAAA,QAAQ,QAAA,iBAAY,WAAA,WAAA,EAApC,YAES,MAAA,YAAA,EAAA;;KAF0C,MAAM,QAAA;;4BAC/B,EAAA,WAAA,EAAxB,YAAwB,wBAAR,QAAA,KAAI,CAAA,EAAA,CAAA;;;6BAjBZ,OAAA,MAAM,CAAA,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"calendar.js","names":[],"sources":["../../../src/components/calendar/calendar.vue"],"sourcesContent":["<template>\n <div :class=\"cls.b\">\n <ul :class=\"cls.e('days')\">\n <li\n :class=\"[cls.e('day'), cls.em('day', day.type)]\"\n v-for=\"day of days\"\n :key=\"day.date.timestamp\"\n >\n {{ day.date.day }}\n </li>\n </ul>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { bem } from '@veltra/utils'\nimport { computed } from 'vue'\n\nimport type { CalendarProps } from '../../types'\nimport { getMonthDays } from './utils'\n\ndefineOptions({\n name: 'Calendar'\n})\n\ndefineProps<CalendarProps>()\n\nconst model = defineModel<string>()\n\nconst cls = bem('calendar')\n\nconst days = computed(() => {\n return getMonthDays(model.value ?? new Date())\n})\n</script>\n"],"mappings":";;;;;;;;;;;;;EA2BA,MAAM,QAAQ,SAAmB,SAAA,aAAC;EAElC,MAAM,MAAM,IAAI,WAAU;EAE1B,MAAM,OAAO,eAAe;GAC1B,OAAO,aAAa,MAAM,yBAAS,IAAI,MAAM,CAAA;IAC9C;;uBAhCC,mBAUM,OAAA,EAVA,OAAK,eAAE,MAAA,IAAA,CAAI,EAAC,EAAA,EAAA,CAChB,mBAQK,MAAA,EARA,OAAK,eAAE,MAAA,IAAA,CAAI,EAAC,OAAA,CAAA,EAAA,EAAA,EAAA,UAAA,KAAA,EACf,mBAMK,UAAA,MAAA,WAJW,KAAA,QAAP,QAAG;wBAFZ,mBAMK,MAAA;KALF,OAAK,eAAA,CAAG,MAAA,IAAA,CAAI,EAAC,MAAA,EAAS,MAAA,IAAA,CAAI,GAAE,OAAQ,IAAI,KAAI,CAAA,CAAA;KAE5C,KAAK,IAAI,KAAK;uBAEZ,IAAI,KAAK,IAAG,EAAA,EAAA"}
1
+ {"version":3,"file":"calendar.js","names":[],"sources":["../../../src/components/calendar/calendar.vue"],"sourcesContent":["<template>\n <div :class=\"cls.b\">\n <ul :class=\"cls.e('days')\">\n <li\n :class=\"[cls.e('day'), cls.em('day', day.type)]\"\n v-for=\"day of days\"\n :key=\"day.date.timestamp\"\n >\n {{ day.date.day }}\n </li>\n </ul>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { bem } from '@veltra/utils'\nimport { computed } from 'vue'\n\nimport type { CalendarProps } from '../../types'\nimport { getMonthDays } from './utils'\n\ndefineOptions({ name: 'Calendar' })\n\ndefineProps<CalendarProps>()\n\nconst model = defineModel<string>()\n\nconst cls = bem('calendar')\n\nconst days = computed(() => {\n return getMonthDays(model.value ?? new Date())\n})\n</script>\n"],"mappings":";;;;;;;;;;;;;EAyBA,MAAM,QAAQ,SAAmB,SAAA,aAAC;EAElC,MAAM,MAAM,IAAI,WAAU;EAE1B,MAAM,OAAO,eAAe;GAC1B,OAAO,aAAa,MAAM,yBAAS,IAAI,MAAM,CAAA;IAC9C;;uBA9BC,mBAUM,OAAA,EAVA,OAAK,eAAE,MAAA,IAAA,CAAI,EAAC,EAAA,EAAA,CAChB,mBAQK,MAAA,EARA,OAAK,eAAE,MAAA,IAAA,CAAI,EAAC,OAAA,CAAA,EAAA,EAAA,EAAA,UAAA,KAAA,EACf,mBAMK,UAAA,MAAA,WAJW,KAAA,QAAP,QAAG;wBAFZ,mBAMK,MAAA;KALF,OAAK,eAAA,CAAG,MAAA,IAAA,CAAI,EAAC,MAAA,EAAS,MAAA,IAAA,CAAI,GAAE,OAAQ,IAAI,KAAI,CAAA,CAAA;KAE5C,KAAK,IAAI,KAAK;uBAEZ,IAAI,KAAK,IAAG,EAAA,EAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"card-action.js","names":[],"sources":["../../../src/components/card/card-action.vue"],"sourcesContent":["<template>\n <div :class=\"cls?.e('action')\" :style=\"style\">\n <slot> </slot>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { type CSSProperties, computed, inject } from 'vue'\n\nimport type { CardActionProps } from '../../types'\nimport { CardDIKey } from './di'\n\ndefineOptions({ name: 'CardAction' })\n\nconst props = defineProps<CardActionProps>()\n\nconst style = computed<CSSProperties>(() => {\n return {\n textAlign: props.alignRight ? 'right' : undefined\n }\n})\n\nconst injected = inject(CardDIKey)\nconst { cls } = injected || {}\n\nif (!injected) {\n console.warn('CardAction组件仅能在Card组件中使用')\n}\n</script>\n"],"mappings":";;;;;;;;EAcA,MAAM,QAAQ;EAEd,MAAM,QAAQ,eAA8B;GAC1C,OAAO,EACL,WAAW,MAAM,aAAa,UAAU,KAAA,GAC1C;IACD;EAED,MAAM,WAAW,OAAO,UAAS;EACjC,MAAM,EAAE,QAAQ,YAAY,EAAC;EAE7B,IAAI,CAAC,UACH,QAAQ,KAAK,2BAA0B;;uBAzBvC,mBAEM,OAAA;IAFA,OAAK,eAAE,MAAA,IAAA,EAAK,EAAC,SAAA,CAAA;IAAa,OAAK,eAAE,MAAA,MAAK;OAC1C,WAAc,KAAA,QAAA,UAAA,CAAA,EAAA,EAAA"}
1
+ {"version":3,"file":"card-action.js","names":[],"sources":["../../../src/components/card/card-action.vue"],"sourcesContent":["<template>\n <div :class=\"cls?.e('action')\" :style=\"style\">\n <slot> </slot>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { type CSSProperties, computed, inject } from 'vue'\n\nimport type { CardActionProps } from '../../types'\nimport { CardDIKey } from './di'\n\ndefineOptions({ name: 'CardAction' })\n\nconst props = defineProps<CardActionProps>()\n\nconst style = computed<CSSProperties>(() => {\n return { textAlign: props.alignRight ? 'right' : undefined }\n})\n\nconst injected = inject(CardDIKey)\nconst { cls } = injected || {}\n\nif (!injected) {\n console.warn('CardAction组件仅能在Card组件中使用')\n}\n</script>\n"],"mappings":";;;;;;;;EAcA,MAAM,QAAQ;EAEd,MAAM,QAAQ,eAA8B;GAC1C,OAAO,EAAE,WAAW,MAAM,aAAa,UAAU,KAAA,GAAU;IAC5D;EAED,MAAM,WAAW,OAAO,UAAS;EACjC,MAAM,EAAE,QAAQ,YAAY,EAAC;EAE7B,IAAI,CAAC,UACH,QAAQ,KAAK,2BAA0B;;uBAvBvC,mBAEM,OAAA;IAFA,OAAK,eAAE,MAAA,IAAA,EAAK,EAAC,SAAA,CAAA;IAAa,OAAK,eAAE,MAAA,MAAK;OAC1C,WAAc,KAAA,QAAA,UAAA,CAAA,EAAA,EAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"card-content.js","names":[],"sources":["../../../src/components/card/card-content.vue"],"sourcesContent":["<template>\n <div :class=\"cls?.e('content')\" :style=\"style\">\n <slot> </slot>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, type CSSProperties } from 'vue'\n\nimport type { CardContentProps } from '../../types'\nimport { CardDIKey } from './di'\n\ndefineOptions({ name: 'CardContent' })\n\nconst props = defineProps<CardContentProps>()\n\nconst style = computed<CSSProperties | undefined>(() => {\n return props.cover\n ? {\n padding: 0,\n fontSize: 0\n }\n : undefined\n})\n\nconst injected = inject(CardDIKey)\nconst { cls } = injected || {}\n\nif (!injected) {\n console.warn('CardContent组件仅能在Card组件中使用')\n}\n</script>\n"],"mappings":";;;;;;;;EAcA,MAAM,QAAQ;EAEd,MAAM,QAAQ,eAA0C;GACtD,OAAO,MAAM,QACT;IACE,SAAS;IACT,UAAU;IACZ,GACA,KAAA;IACL;EAED,MAAM,WAAW,OAAO,UAAS;EACjC,MAAM,EAAE,QAAQ,YAAY,EAAC;EAE7B,IAAI,CAAC,UACH,QAAQ,KAAK,4BAA2B;;uBA5BxC,mBAEM,OAAA;IAFA,OAAK,eAAE,MAAA,IAAA,EAAK,EAAC,UAAA,CAAA;IAAc,OAAK,eAAE,MAAA,MAAK;OAC3C,WAAc,KAAA,QAAA,UAAA,CAAA,EAAA,EAAA"}
1
+ {"version":3,"file":"card-content.js","names":[],"sources":["../../../src/components/card/card-content.vue"],"sourcesContent":["<template>\n <div :class=\"cls?.e('content')\" :style=\"style\">\n <slot> </slot>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, type CSSProperties } from 'vue'\n\nimport type { CardContentProps } from '../../types'\nimport { CardDIKey } from './di'\n\ndefineOptions({ name: 'CardContent' })\n\nconst props = defineProps<CardContentProps>()\n\nconst style = computed<CSSProperties | undefined>(() => {\n return props.cover ? { padding: 0, fontSize: 0 } : undefined\n})\n\nconst injected = inject(CardDIKey)\nconst { cls } = injected || {}\n\nif (!injected) {\n console.warn('CardContent组件仅能在Card组件中使用')\n}\n</script>\n"],"mappings":";;;;;;;;EAcA,MAAM,QAAQ;EAEd,MAAM,QAAQ,eAA0C;GACtD,OAAO,MAAM,QAAQ;IAAE,SAAS;IAAG,UAAU;IAAE,GAAI,KAAA;IACpD;EAED,MAAM,WAAW,OAAO,UAAS;EACjC,MAAM,EAAE,QAAQ,YAAY,EAAC;EAE7B,IAAI,CAAC,UACH,QAAQ,KAAK,4BAA2B;;uBAvBxC,mBAEM,OAAA;IAFA,OAAK,eAAE,MAAA,IAAA,EAAK,EAAC,UAAA,CAAA;IAAc,OAAK,eAAE,MAAA,MAAK;OAC3C,WAAc,KAAA,QAAA,UAAA,CAAA,EAAA,EAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"card-cover.js","names":[],"sources":["../../../src/components/card/card-cover.vue"],"sourcesContent":["<template>\n <div :class=\"cls?.e('cover')\" :style=\"style\">\n <img\n v-if=\"src\"\n :src=\"src\"\n draggable=\"false\"\n alt=\"封面\"\n :class=\"bem.is('height-fixed', props.height !== undefined)\"\n />\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { withUnit, bem } from '@veltra/utils'\nimport { computed, inject } from 'vue'\n\nimport type { CardCoverProps } from '../../types'\nimport { CardDIKey } from './di'\n\ndefineOptions({ name: 'CardCover' })\n\nconst props = defineProps<CardCoverProps>()\n\nconst injected = inject(CardDIKey)\nconst { cls } = injected || {}\n\nif (!injected) {\n console.warn('CardCover组件仅能在Card组件中使用')\n}\n\nconst style = computed(() => {\n return {\n height: withUnit(props.height, 'px')\n }\n})\n</script>\n"],"mappings":";;;;;;;;;;;;;EAqBA,MAAM,QAAQ;EAEd,MAAM,WAAW,OAAO,UAAS;EACjC,MAAM,EAAE,QAAQ,YAAY,EAAC;EAE7B,IAAI,CAAC,UACH,QAAQ,KAAK,0BAAyB;EAGxC,MAAM,QAAQ,eAAe;GAC3B,OAAO,EACL,QAAQ,SAAS,MAAM,QAAQ,KAAI,EACrC;IACD;;uBAjCC,mBAQM,OAAA;IARA,OAAK,eAAE,MAAA,IAAA,EAAK,EAAC,QAAA,CAAA;IAAY,OAAK,eAAE,MAAA,MAAK;OAEjC,QAAA,OAAA,WAAA,EADR,mBAME,OAAA;;IAJC,KAAK,QAAA;IACN,WAAU;IACV,KAAI;IACH,OAAK,eAAE,MAAA,IAAA,CAAI,GAAE,gBAAiB,MAAM,WAAW,KAAA,EAAS,CAAA"}
1
+ {"version":3,"file":"card-cover.js","names":[],"sources":["../../../src/components/card/card-cover.vue"],"sourcesContent":["<template>\n <div :class=\"cls?.e('cover')\" :style=\"style\">\n <img\n v-if=\"src\"\n :src=\"src\"\n draggable=\"false\"\n alt=\"封面\"\n :class=\"bem.is('height-fixed', props.height !== undefined)\"\n />\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { withUnit, bem } from '@veltra/utils'\nimport { computed, inject } from 'vue'\n\nimport type { CardCoverProps } from '../../types'\nimport { CardDIKey } from './di'\n\ndefineOptions({ name: 'CardCover' })\n\nconst props = defineProps<CardCoverProps>()\n\nconst injected = inject(CardDIKey)\nconst { cls } = injected || {}\n\nif (!injected) {\n console.warn('CardCover组件仅能在Card组件中使用')\n}\n\nconst style = computed(() => {\n return { height: withUnit(props.height, 'px') }\n})\n</script>\n"],"mappings":";;;;;;;;;;;;;EAqBA,MAAM,QAAQ;EAEd,MAAM,WAAW,OAAO,UAAS;EACjC,MAAM,EAAE,QAAQ,YAAY,EAAC;EAE7B,IAAI,CAAC,UACH,QAAQ,KAAK,0BAAyB;EAGxC,MAAM,QAAQ,eAAe;GAC3B,OAAO,EAAE,QAAQ,SAAS,MAAM,QAAQ,KAAI,EAAE;IAC/C;;uBA/BC,mBAQM,OAAA;IARA,OAAK,eAAE,MAAA,IAAA,EAAK,EAAC,QAAA,CAAA;IAAY,OAAK,eAAE,MAAA,MAAK;OAEjC,QAAA,OAAA,WAAA,EADR,mBAME,OAAA;;IAJC,KAAK,QAAA;IACN,WAAU;IACV,KAAI;IACH,OAAK,eAAE,MAAA,IAAA,CAAI,GAAE,gBAAiB,MAAM,WAAW,KAAA,EAAS,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"card.js","names":[],"sources":["../../../src/components/card/card.vue"],"sourcesContent":["<template>\n <div :class=\"classList\" :style=\"styles\">\n <slot />\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFormFallbackProps } from '@veltra/compositions'\nimport { bem, withUnit } from '@veltra/utils'\nimport { computed, provide } from 'vue'\n\nimport type { CardProps } from '../../types'\nimport { CardDIKey } from './di'\n\ndefineOptions({\n name: 'Card'\n})\n\nconst props = defineProps<CardProps>()\n\nconst cls = bem('card')\n\nconst { size } = useFormFallbackProps([props], { size: 'default' })\n\nconst classList = computed(() => {\n return [cls.b, cls.m(size.value), bem.is('integrate', props.integrate)]\n})\n\nconst styles = computed(() => {\n return {\n width: withUnit(props.width, 'px')\n }\n})\n\nprovide(CardDIKey, { cls, cardProps: props })\n</script>\n"],"mappings":";;;;;;;;;;;;;;EAkBA,MAAM,QAAQ;EAEd,MAAM,MAAM,IAAI,OAAM;EAEtB,MAAM,EAAE,SAAS,qBAAqB,CAAC,MAAK,EAAG,EAAE,MAAM,WAAW,CAAA;EAElE,MAAM,YAAY,eAAe;GAC/B,OAAO;IAAC,IAAI;IAAG,IAAI,EAAE,KAAK,MAAK;IAAG,IAAI,GAAG,aAAa,MAAM,UAAS;IAAC;IACvE;EAED,MAAM,SAAS,eAAe;GAC5B,OAAO,EACL,OAAO,SAAS,MAAM,OAAO,KAAI,EACnC;IACD;EAED,QAAQ,WAAW;GAAE;GAAK,WAAW;GAAO,CAAA;;uBAjC1C,mBAEM,OAAA;IAFA,OAAK,eAAE,UAAA,MAAS;IAAG,OAAK,eAAE,OAAA,MAAM;OACpC,WAAQ,KAAA,QAAA,UAAA,CAAA,EAAA,EAAA"}
1
+ {"version":3,"file":"card.js","names":[],"sources":["../../../src/components/card/card.vue"],"sourcesContent":["<template>\n <div :class=\"classList\" :style=\"styles\">\n <slot />\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFormFallbackProps } from '@veltra/compositions'\nimport { bem, withUnit } from '@veltra/utils'\nimport { computed, provide } from 'vue'\n\nimport type { CardProps } from '../../types'\nimport { CardDIKey } from './di'\n\ndefineOptions({ name: 'Card' })\n\nconst props = defineProps<CardProps>()\n\nconst cls = bem('card')\n\nconst { size } = useFormFallbackProps([props], { size: 'default' })\n\nconst classList = computed(() => {\n return [cls.b, cls.m(size.value), bem.is('integrate', props.integrate)]\n})\n\nconst styles = computed(() => {\n return { width: withUnit(props.width, 'px') }\n})\n\nprovide(CardDIKey, { cls, cardProps: props })\n</script>\n"],"mappings":";;;;;;;;;;;;;;EAgBA,MAAM,QAAQ;EAEd,MAAM,MAAM,IAAI,OAAM;EAEtB,MAAM,EAAE,SAAS,qBAAqB,CAAC,MAAK,EAAG,EAAE,MAAM,WAAW,CAAA;EAElE,MAAM,YAAY,eAAe;GAC/B,OAAO;IAAC,IAAI;IAAG,IAAI,EAAE,KAAK,MAAK;IAAG,IAAI,GAAG,aAAa,MAAM,UAAS;IAAC;IACvE;EAED,MAAM,SAAS,eAAe;GAC5B,OAAO,EAAE,OAAO,SAAS,MAAM,OAAO,KAAI,EAAE;IAC7C;EAED,QAAQ,WAAW;GAAE;GAAK,WAAW;GAAO,CAAA;;uBA7B1C,mBAEM,OAAA;IAFA,OAAK,eAAE,UAAA,MAAS;IAAG,OAAK,eAAE,OAAA,MAAM;OACpC,WAAQ,KAAA,QAAA,UAAA,CAAA,EAAA,EAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"cascade-panel-item.js","names":[],"sources":["../../../src/components/cascade/cascade-panel-item.vue"],"sourcesContent":["<template>\n <u-scroll\n tag=\"ul\"\n :class=\"panelCls.b\"\n ref=\"scroll-container\"\n :content-class=\"panelCls.e('content')\"\n >\n <li\n v-for=\"(node, index) of data\"\n :key=\"node.value ?? index\"\n ref=\"itemRefs\"\n :class=\"getItemCls(node)\"\n @click=\"emit('click', panelIndex, node)\"\n >\n <u-checkbox\n v-if=\"cascadeProps.multiple\"\n :class=\"panelCls.e('option-checkbox')\"\n :model-value=\"checkedSet.has(node)\"\n @update:model-value=\"emit('check', node, $event)\"\n />\n\n <span :class=\"panelCls.e('option-label')\">\n {{ node.label }}\n </span>\n\n <u-icon :class=\"panelCls.e('option-expand')\" v-if=\"node.children?.length\">\n <ArrowRight />\n </u-icon>\n </li>\n </u-scroll>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ArrowRight } from '@veltra/icons/normal'\nimport { bem, scrollIntoContainerView } from '@veltra/utils'\nimport { inject, onMounted, shallowRef, useTemplateRef } from 'vue'\n\nimport type { CascadeNode } from '../../types'\nimport { UCheckbox } from '../checkbox'\nimport { UIcon } from '../icon'\nimport { UScroll } from '../scroll'\nimport { CascadeDIKey } from './di'\n\ndefineOptions({\n name: 'UCascadePanelItem'\n})\n\nconst props = defineProps<{\n data: CascadeNode[]\n value?: string\n panelIndex: number\n}>()\n\nconst emit = defineEmits<{\n (e: 'click', panelIndex: number, item: CascadeNode): void\n (e: 'check', item: CascadeNode, checked: boolean): void\n}>()\n\nconst { cls, cascadeProps, checkedSet } = inject(CascadeDIKey)!\n\nconst panelCls = cls.create('panel-item')\n\nconst optionCls = panelCls.e('option')\n\nfunction getItemCls(item: CascadeNode) {\n const selected = props.value === item.value\n return [\n optionCls,\n bem.is('active', selected),\n bem.is('selected', selected && !cascadeProps.multiple)\n ]\n}\n\nconst itemRefs = shallowRef<HTMLElement[]>([])\nconst scrollContainerRef = useTemplateRef('scroll-container')\n\nonMounted(() => {\n const activeItem = itemRefs.value.find((el) => el.classList.contains(bem.is('active')))\n if (activeItem) {\n setTimeout(() => {\n scrollIntoContainerView(activeItem, scrollContainerRef.value?.containerRef ?? null)\n })\n }\n})\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;EA+CA,MAAM,QAAQ;EAMd,MAAM,OAAO;EAKb,MAAM,EAAE,KAAK,cAAc,eAAe,OAAO,aAAY;EAE7D,MAAM,WAAW,IAAI,OAAO,aAAY;EAExC,MAAM,YAAY,SAAS,EAAE,SAAQ;EAErC,SAAS,WAAW,MAAmB;GACrC,MAAM,WAAW,MAAM,UAAU,KAAK;GACtC,OAAO;IACL;IACA,IAAI,GAAG,UAAU,SAAQ;IACzB,IAAI,GAAG,YAAY,YAAY,CAAC,aAAa,SAAQ;IACvD;;EAGF,MAAM,WAAW,WAA0B,EAAE,CAAA;EAC7C,MAAM,qBAAqB,eAAe,mBAAkB;EAE5D,gBAAgB;GACd,MAAM,aAAa,SAAS,MAAM,MAAM,OAAO,GAAG,UAAU,SAAS,IAAI,GAAG,SAAS,CAAC,CAAA;GACtF,IAAI,YACF,iBAAiB;IACf,wBAAwB,YAAY,mBAAmB,OAAO,gBAAgB,KAAI;KACnF;IAEJ;;uBAlFC,YA4BW,MAAA,YAAA,EAAA;IA3BT,KAAI;IACH,OAAK,eAAE,MAAA,SAAA,CAAS,EAAC;IAClB,KAAI;IACH,iBAAe,MAAA,SAAA,CAAS,EAAC,UAAA;;2BAGK,EAAA,UAAA,KAAA,EAD/B,mBAqBK,UAAA,MAAA,WApBqB,QAAA,OAAhB,MAAM,UAAK;yBADrB,mBAqBK,MAAA;MAnBF,KAAK,KAAK,SAAS;;eAChB;MAAJ,KAAI;MACH,OAAK,eAAE,WAAW,KAAI,CAAA;MACtB,UAAK,WAAE,KAAI,SAAU,QAAA,YAAY,KAAI;;MAG9B,MAAA,aAAA,CAAa,YAAA,WAAA,EADrB,YAKE,MAAA,YAAA,EAAA;;OAHC,OAAK,eAAE,MAAA,SAAA,CAAS,EAAC,kBAAA,CAAA;OACjB,eAAa,MAAA,WAAA,CAAW,IAAI,KAAI;OAChC,wBAAkB,WAAE,KAAI,SAAU,MAAM,OAAM;;;;;;MAGjD,mBAEO,QAAA,EAFA,OAAK,eAAE,MAAA,SAAA,CAAS,EAAC,eAAA,CAAA,EAAA,EAAA,gBACnB,KAAK,MAAK,EAAA,EAAA;MAGoC,KAAK,UAAU,UAAA,WAAA,EAAlE,YAES,MAAA,YAAA,EAAA;;OAFA,OAAK,eAAE,MAAA,SAAA,CAAS,EAAC,gBAAA,CAAA;;8BACV,CAAd,YAAc,MAAA,WAAA,CAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"cascade-panel-item.js","names":[],"sources":["../../../src/components/cascade/cascade-panel-item.vue"],"sourcesContent":["<template>\n <u-scroll\n tag=\"ul\"\n :class=\"panelCls.b\"\n ref=\"scroll-container\"\n :content-class=\"panelCls.e('content')\"\n >\n <li\n v-for=\"(node, index) of data\"\n :key=\"node.value ?? index\"\n ref=\"itemRefs\"\n :class=\"getItemCls(node)\"\n @click=\"emit('click', panelIndex, node)\"\n >\n <u-checkbox\n v-if=\"cascadeProps.multiple\"\n :class=\"panelCls.e('option-checkbox')\"\n :model-value=\"checkedSet.has(node)\"\n @update:model-value=\"emit('check', node, $event)\"\n />\n\n <span :class=\"panelCls.e('option-label')\">\n {{ node.label }}\n </span>\n\n <u-icon :class=\"panelCls.e('option-expand')\" v-if=\"node.children?.length\">\n <ArrowRight />\n </u-icon>\n </li>\n </u-scroll>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ArrowRight } from '@veltra/icons/normal'\nimport { bem, scrollIntoContainerView } from '@veltra/utils'\nimport { inject, onMounted, shallowRef, useTemplateRef } from 'vue'\n\nimport type { CascadeNode } from '../../types'\nimport { UCheckbox } from '../checkbox'\nimport { UIcon } from '../icon'\nimport { UScroll } from '../scroll'\nimport { CascadeDIKey } from './di'\n\ndefineOptions({ name: 'UCascadePanelItem' })\n\nconst props = defineProps<{ data: CascadeNode[]; value?: string; panelIndex: number }>()\n\nconst emit = defineEmits<{\n (e: 'click', panelIndex: number, item: CascadeNode): void\n (e: 'check', item: CascadeNode, checked: boolean): void\n}>()\n\nconst { cls, cascadeProps, checkedSet } = inject(CascadeDIKey)!\n\nconst panelCls = cls.create('panel-item')\n\nconst optionCls = panelCls.e('option')\n\nfunction getItemCls(item: CascadeNode) {\n const selected = props.value === item.value\n return [\n optionCls,\n bem.is('active', selected),\n bem.is('selected', selected && !cascadeProps.multiple)\n ]\n}\n\nconst itemRefs = shallowRef<HTMLElement[]>([])\nconst scrollContainerRef = useTemplateRef('scroll-container')\n\nonMounted(() => {\n const activeItem = itemRefs.value.find((el) => el.classList.contains(bem.is('active')))\n if (activeItem) {\n setTimeout(() => {\n scrollIntoContainerView(activeItem, scrollContainerRef.value?.containerRef ?? null)\n })\n }\n})\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;EA6CA,MAAM,QAAQ;EAEd,MAAM,OAAO;EAKb,MAAM,EAAE,KAAK,cAAc,eAAe,OAAO,aAAY;EAE7D,MAAM,WAAW,IAAI,OAAO,aAAY;EAExC,MAAM,YAAY,SAAS,EAAE,SAAQ;EAErC,SAAS,WAAW,MAAmB;GACrC,MAAM,WAAW,MAAM,UAAU,KAAK;GACtC,OAAO;IACL;IACA,IAAI,GAAG,UAAU,SAAQ;IACzB,IAAI,GAAG,YAAY,YAAY,CAAC,aAAa,SAAQ;IACvD;;EAGF,MAAM,WAAW,WAA0B,EAAE,CAAA;EAC7C,MAAM,qBAAqB,eAAe,mBAAkB;EAE5D,gBAAgB;GACd,MAAM,aAAa,SAAS,MAAM,MAAM,OAAO,GAAG,UAAU,SAAS,IAAI,GAAG,SAAS,CAAC,CAAA;GACtF,IAAI,YACF,iBAAiB;IACf,wBAAwB,YAAY,mBAAmB,OAAO,gBAAgB,KAAI;KACnF;IAEJ;;uBA5EC,YA4BW,MAAA,YAAA,EAAA;IA3BT,KAAI;IACH,OAAK,eAAE,MAAA,SAAA,CAAS,EAAC;IAClB,KAAI;IACH,iBAAe,MAAA,SAAA,CAAS,EAAC,UAAA;;2BAGK,EAAA,UAAA,KAAA,EAD/B,mBAqBK,UAAA,MAAA,WApBqB,QAAA,OAAhB,MAAM,UAAK;yBADrB,mBAqBK,MAAA;MAnBF,KAAK,KAAK,SAAS;;eAChB;MAAJ,KAAI;MACH,OAAK,eAAE,WAAW,KAAI,CAAA;MACtB,UAAK,WAAE,KAAI,SAAU,QAAA,YAAY,KAAI;;MAG9B,MAAA,aAAA,CAAa,YAAA,WAAA,EADrB,YAKE,MAAA,YAAA,EAAA;;OAHC,OAAK,eAAE,MAAA,SAAA,CAAS,EAAC,kBAAA,CAAA;OACjB,eAAa,MAAA,WAAA,CAAW,IAAI,KAAI;OAChC,wBAAkB,WAAE,KAAI,SAAU,MAAM,OAAM;;;;;;MAGjD,mBAEO,QAAA,EAFA,OAAK,eAAE,MAAA,SAAA,CAAS,EAAC,eAAA,CAAA,EAAA,EAAA,gBACnB,KAAK,MAAK,EAAA,EAAA;MAGoC,KAAK,UAAU,UAAA,WAAA,EAAlE,YAES,MAAA,YAAA,EAAA;;OAFA,OAAK,eAAE,MAAA,SAAA,CAAS,EAAC,gBAAA,CAAA;;8BACV,CAAd,YAAc,MAAA,WAAA,CAAA,CAAA,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"cascade.js","names":[],"sources":["../../../src/components/cascade/cascade.vue"],"sourcesContent":["<template>\n <u-dropdown\n v-if=\"!readonly\"\n :class=\"[cls.b, bem.is('disabled', disabled), bem.is('multiple', multiple), cls.m(size)]\"\n :content-class=\"[cls.e('panel'), cls.em('panel', size)]\"\n trigger=\"click\"\n ref=\"dropdownRef\"\n :disabled=\"disabled\"\n width=\"auto\"\n @mouseenter=\"hovered = true\"\n @mouseleave=\"hovered = false\"\n @update:visible=\"!$event && (qs = '')\"\n >\n <template #trigger>\n <!-- 单选展示 -->\n <u-input\n v-if=\"!multiple\"\n :size=\"size\"\n :disabled=\"disabled\"\n :placeholder=\"placeholder\"\n :clearable=\"clearable\"\n native-readonly\n :model-value=\"displayedValue\"\n @clear=\"handleClear\"\n >\n <template #suffix>\n <u-icon :class=\"cls.e('arrow')\"><ArrowDown /></u-icon>\n </template>\n </u-input>\n\n <!-- 多选展示 -->\n <template v-if=\"multiple\">\n <span :class=\"cls.e('placeholder')\" v-show=\"!modelValue?.length\">\n {{ placeholder }}\n </span>\n\n <div v-if=\"modelValue?.length\" :class=\"cls.e('tags')\">\n <u-tag\n v-for=\"tag of tags\"\n :key=\"tag.value\"\n :closable=\"!disabled\"\n @close=\"handleCloseTag(tag)\"\n >\n {{ tag.label }}\n </u-tag>\n <u-tag v-if=\"restTag\"> {{ restTag }}+ </u-tag>\n </div>\n\n <transition name=\"zoom-in\" mode=\"out-in\">\n <u-icon\n v-if=\"clearable && modelValue?.length && hovered && !disabled\"\n :class=\"cls.e('clear')\"\n @click.stop=\"handleClear\"\n >\n <Close />\n </u-icon>\n\n <u-icon :class=\"cls.e('arrow')\" v-else><ArrowDown /></u-icon>\n </transition>\n </template>\n </template>\n\n <template #content>\n <!-- 过滤 -->\n <div v-if=\"filterable\" :class=\"cls.e('panel-filter')\">\n <u-input placeholder=\"输入关键字进行过滤\" v-model=\"qs\" :size=\"size\" clearable>\n <template #suffix>\n <u-icon><Search /></u-icon>\n </template>\n </u-input>\n </div>\n\n <div :class=\"cls.e('content')\" v-if=\"panelItemList.length\">\n <UCascadePanelItem\n v-for=\"({ nodes, key }, index) of panelItemList\"\n :data=\"nodes\"\n :key=\"key\"\n :panel-index=\"index\"\n :value=\"selectedNodeKeys[index]\"\n @click=\"handleClick\"\n @check=\"handleCheck\"\n />\n </div>\n\n <div :class=\"cls.e('empty')\" v-else>\n <UEmpty />\n </div>\n </template>\n </u-dropdown>\n\n <!-- 只读 -->\n <template v-else>\n <div :class=\"[cls.m(size)]\" v-if=\"multiple\">\n <div :class=\"cls.e('tags')\">\n <u-tag v-for=\"tag of tags\" :key=\"tag.value\">\n {{ tag.label }}\n </u-tag>\n </div>\n </div>\n <template v-else>\n {{ displayedValue || FORM_EMPTY_CONTENT }}\n </template>\n </template>\n</template>\n\n<script lang=\"ts\" setup>\nimport { Forest, o } from '@cat-kit/core'\nimport { useFormFallbackProps, useUserAction } from '@veltra/compositions'\nimport { ArrowDown, Close, Search } from '@veltra/icons/normal'\nimport { bem, FORM_EMPTY_CONTENT } from '@veltra/utils'\nimport { injectFormContext } from '@veltra/utils'\nimport { computed, provide, shallowRef, triggerRef, watch } from 'vue'\n\nimport type { CascadeProps, CascadeEmits, DropdownExposed } from '../../types'\nimport { UDropdown } from '../dropdown'\nimport { UEmpty } from '../empty'\nimport { UIcon } from '../icon'\nimport { UInput } from '../input'\nimport { UTag } from '../tag'\nimport UCascadePanelItem from './cascade-panel-item.vue'\nimport { CascadeDIKey } from './di'\nimport { CascadeNode } from './node'\nimport { useCheck } from './use-check'\nimport { useDataMap } from './use-data-map'\nimport { useSelect } from './use-select'\n\ndefineOptions({\n name: 'Cascade'\n})\n\nconst props = withDefaults(defineProps<CascadeProps>(), {\n labelKey: 'label',\n valueKey: 'value',\n placeholder: '请选择',\n separator: '/',\n clearable: true,\n disabled: undefined,\n readonly: undefined,\n childrenKey: 'children',\n filterable: false,\n data: () => [],\n visibilityLimit: 3\n})\n\nconst emit = defineEmits<CascadeEmits>()\n\nconst cls = bem('cascade')\n\nconst { formProps } = injectFormContext()\n\nconst { size, disabled, readonly } = useFormFallbackProps([formProps ?? {}, props], {\n size: 'default',\n disabled: false,\n readonly: false\n})\n\nconst dropdownRef = shallowRef<DropdownExposed>()\n\nconst forest = computed(() => {\n return new Forest<Record<string, unknown>, any>({\n data: (props.data ?? []) as Record<string, unknown>[],\n childrenKey: props.childrenKey,\n createNode: (data, index, depth, _forest, parent) => {\n if (!data) {\n return new CascadeNode({\n data,\n index,\n depth,\n value: '',\n label: '',\n parent\n })\n }\n\n return new CascadeNode({\n data,\n index,\n depth,\n value: o(data).get(props.valueKey) ?? '',\n label: o(data).get(props.labelKey) ?? '',\n parent\n })\n }\n })\n})\n\nconst { dataMap } = useDataMap({ props, forest })\n\nconst { userAction, isUserActive } = useUserAction()\n\nconst {\n displayedValue,\n selectItem,\n updateSingleValue,\n panelItemList,\n getPanelItemList,\n createPanelItem,\n selectedNodeKeys\n} = useSelect({\n props,\n emit,\n dataMap,\n forest,\n isUserActive,\n dropdownRef\n})\n\nconst { hovered, tags, restTag, updateMultipleValue, handleCloseTag, checkItem, checkedSet } =\n useCheck({\n props,\n forest,\n getPanelItemList,\n emit,\n dataMap,\n isUserActive,\n disabled,\n readonly\n })\n\nconst commitSingleSelect = userAction((item: CascadeNode) => {\n if (!props.strict) {\n updateSingleValue()\n } else if (!item.children?.length) {\n updateSingleValue()\n }\n})\n\nfunction handleClick(panelIndex: number, item: CascadeNode) {\n selectItem(panelIndex, item)\n\n if (!props.multiple) {\n commitSingleSelect(item)\n }\n}\n\nconst handleCheck = userAction((item: CascadeNode, checked: boolean) => {\n checkItem(item, checked)\n})\n\nfunction handleClear() {\n if (props.multiple) {\n checkedSet.value.clear()\n triggerRef(checkedSet)\n updateMultipleValue()\n } else {\n selectedNodeKeys.value = []\n updateSingleValue()\n }\n\n emit('clear')\n}\n\n// 过滤\nconst qs = shallowRef<string>('')\n\nwatch([qs, forest], ([qs, forest]) => {\n const { filterable } = props\n if (!filterable || !qs) {\n forest.dfs((node) => {\n node.visible = true\n })\n getPanelItemList(forest.roots)\n return\n }\n\n const cache = new Set<CascadeNode>()\n\n forest.dfs((node) => {\n if (node.label?.toLowerCase().includes(qs.toLowerCase())) {\n node.visible = true\n let parent = node.parent\n while (parent && !cache.has(parent)) {\n parent.visible = true\n cache.add(parent)\n parent = parent.parent\n }\n } else {\n node.visible = false\n }\n })\n\n panelItemList.value = [createPanelItem(forest.roots)]\n})\n\nprovide(CascadeDIKey, {\n cls,\n size,\n disabled,\n readonly,\n cascadeProps: props,\n checkedSet\n})\n</script>\n"],"mappings":"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"}
1
+ {"version":3,"file":"cascade.js","names":[],"sources":["../../../src/components/cascade/cascade.vue"],"sourcesContent":["<template>\n <u-dropdown\n v-if=\"!readonly\"\n :class=\"[cls.b, bem.is('disabled', disabled), bem.is('multiple', multiple), cls.m(size)]\"\n :content-class=\"[cls.e('panel'), cls.em('panel', size)]\"\n trigger=\"click\"\n ref=\"dropdownRef\"\n :disabled=\"disabled\"\n width=\"auto\"\n @mouseenter=\"hovered = true\"\n @mouseleave=\"hovered = false\"\n @update:visible=\"!$event && (qs = '')\"\n >\n <template #trigger>\n <!-- 单选展示 -->\n <u-input\n v-if=\"!multiple\"\n :size=\"size\"\n :disabled=\"disabled\"\n :placeholder=\"placeholder\"\n :clearable=\"clearable\"\n native-readonly\n :model-value=\"displayedValue\"\n @clear=\"handleClear\"\n >\n <template #suffix>\n <u-icon :class=\"cls.e('arrow')\"><ArrowDown /></u-icon>\n </template>\n </u-input>\n\n <!-- 多选展示 -->\n <template v-if=\"multiple\">\n <span :class=\"cls.e('placeholder')\" v-show=\"!modelValue?.length\">\n {{ placeholder }}\n </span>\n\n <div v-if=\"modelValue?.length\" :class=\"cls.e('tags')\">\n <u-tag\n v-for=\"tag of tags\"\n :key=\"tag.value\"\n :closable=\"!disabled\"\n @close=\"handleCloseTag(tag)\"\n >\n {{ tag.label }}\n </u-tag>\n <u-tag v-if=\"restTag\"> {{ restTag }}+ </u-tag>\n </div>\n\n <transition name=\"zoom-in\" mode=\"out-in\">\n <u-icon\n v-if=\"clearable && modelValue?.length && hovered && !disabled\"\n :class=\"cls.e('clear')\"\n @click.stop=\"handleClear\"\n >\n <Close />\n </u-icon>\n\n <u-icon :class=\"cls.e('arrow')\" v-else><ArrowDown /></u-icon>\n </transition>\n </template>\n </template>\n\n <template #content>\n <!-- 过滤 -->\n <div v-if=\"filterable\" :class=\"cls.e('panel-filter')\">\n <u-input placeholder=\"输入关键字进行过滤\" v-model=\"qs\" :size=\"size\" clearable>\n <template #suffix>\n <u-icon><Search /></u-icon>\n </template>\n </u-input>\n </div>\n\n <div :class=\"cls.e('content')\" v-if=\"panelItemList.length\">\n <UCascadePanelItem\n v-for=\"({ nodes, key }, index) of panelItemList\"\n :data=\"nodes\"\n :key=\"key\"\n :panel-index=\"index\"\n :value=\"selectedNodeKeys[index]\"\n @click=\"handleClick\"\n @check=\"handleCheck\"\n />\n </div>\n\n <div :class=\"cls.e('empty')\" v-else>\n <UEmpty />\n </div>\n </template>\n </u-dropdown>\n\n <!-- 只读 -->\n <template v-else>\n <div :class=\"[cls.m(size)]\" v-if=\"multiple\">\n <div :class=\"cls.e('tags')\">\n <u-tag v-for=\"tag of tags\" :key=\"tag.value\">\n {{ tag.label }}\n </u-tag>\n </div>\n </div>\n <template v-else>\n {{ displayedValue || FORM_EMPTY_CONTENT }}\n </template>\n </template>\n</template>\n\n<script lang=\"ts\" setup>\nimport { Forest, o } from '@cat-kit/core'\nimport { useFormFallbackProps, useUserAction } from '@veltra/compositions'\nimport { ArrowDown, Close, Search } from '@veltra/icons/normal'\nimport { bem, FORM_EMPTY_CONTENT } from '@veltra/utils'\nimport { injectFormContext } from '@veltra/utils'\nimport { computed, provide, shallowRef, triggerRef, watch } from 'vue'\n\nimport type { CascadeProps, CascadeEmits, DropdownExposed } from '../../types'\nimport { UDropdown } from '../dropdown'\nimport { UEmpty } from '../empty'\nimport { UIcon } from '../icon'\nimport { UInput } from '../input'\nimport { UTag } from '../tag'\nimport UCascadePanelItem from './cascade-panel-item.vue'\nimport { CascadeDIKey } from './di'\nimport { CascadeNode } from './node'\nimport { useCheck } from './use-check'\nimport { useDataMap } from './use-data-map'\nimport { useSelect } from './use-select'\n\ndefineOptions({ name: 'Cascade' })\n\nconst props = withDefaults(defineProps<CascadeProps>(), {\n labelKey: 'label',\n valueKey: 'value',\n placeholder: '请选择',\n separator: '/',\n clearable: true,\n disabled: undefined,\n readonly: undefined,\n childrenKey: 'children',\n filterable: false,\n data: () => [],\n visibilityLimit: 3\n})\n\nconst emit = defineEmits<CascadeEmits>()\n\nconst cls = bem('cascade')\n\nconst { formProps } = injectFormContext()\n\nconst { size, disabled, readonly } = useFormFallbackProps([formProps ?? {}, props], {\n size: 'default',\n disabled: false,\n readonly: false\n})\n\nconst dropdownRef = shallowRef<DropdownExposed>()\n\nconst forest = computed(() => {\n return new Forest<Record<string, unknown>, any>({\n data: (props.data ?? []) as Record<string, unknown>[],\n childrenKey: props.childrenKey,\n createNode: (data, index, depth, _forest, parent) => {\n if (!data) {\n return new CascadeNode({ data, index, depth, value: '', label: '', parent })\n }\n\n return new CascadeNode({\n data,\n index,\n depth,\n value: o(data).get(props.valueKey) ?? '',\n label: o(data).get(props.labelKey) ?? '',\n parent\n })\n }\n })\n})\n\nconst { dataMap } = useDataMap({ props, forest })\n\nconst { userAction, isUserActive } = useUserAction()\n\nconst {\n displayedValue,\n selectItem,\n updateSingleValue,\n panelItemList,\n getPanelItemList,\n createPanelItem,\n selectedNodeKeys\n} = useSelect({ props, emit, dataMap, forest, isUserActive, dropdownRef })\n\nconst { hovered, tags, restTag, updateMultipleValue, handleCloseTag, checkItem, checkedSet } =\n useCheck({ props, forest, getPanelItemList, emit, dataMap, isUserActive, disabled, readonly })\n\nconst commitSingleSelect = userAction((item: CascadeNode) => {\n if (!props.strict) {\n updateSingleValue()\n } else if (!item.children?.length) {\n updateSingleValue()\n }\n})\n\nfunction handleClick(panelIndex: number, item: CascadeNode) {\n selectItem(panelIndex, item)\n\n if (!props.multiple) {\n commitSingleSelect(item)\n }\n}\n\nconst handleCheck = userAction((item: CascadeNode, checked: boolean) => {\n checkItem(item, checked)\n})\n\nfunction handleClear() {\n if (props.multiple) {\n checkedSet.value.clear()\n triggerRef(checkedSet)\n updateMultipleValue()\n } else {\n selectedNodeKeys.value = []\n updateSingleValue()\n }\n\n emit('clear')\n}\n\n// 过滤\nconst qs = shallowRef<string>('')\n\nwatch([qs, forest], ([qs, forest]) => {\n const { filterable } = props\n if (!filterable || !qs) {\n forest.dfs((node) => {\n node.visible = true\n })\n getPanelItemList(forest.roots)\n return\n }\n\n const cache = new Set<CascadeNode>()\n\n forest.dfs((node) => {\n if (node.label?.toLowerCase().includes(qs.toLowerCase())) {\n node.visible = true\n let parent = node.parent\n while (parent && !cache.has(parent)) {\n parent.visible = true\n cache.add(parent)\n parent = parent.parent\n }\n } else {\n node.visible = false\n }\n })\n\n panelItemList.value = [createPanelItem(forest.roots)]\n})\n\nprovide(CascadeDIKey, { cls, size, disabled, readonly, cascadeProps: props, checkedSet })\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgIA,MAAM,QAAQ;EAcd,MAAM,OAAO;EAEb,MAAM,MAAM,IAAI,UAAS;EAEzB,MAAM,EAAE,cAAc,mBAAkB;EAExC,MAAM,EAAE,MAAM,UAAU,aAAa,qBAAqB,CAAC,aAAa,EAAC,EAAG,MAAK,EAAG;GAClF,MAAM;GACN,UAAU;GACV,UAAU;GACX,CAAA;EAED,MAAM,cAAc,YAA4B;EAEhD,MAAM,SAAS,eAAe;GAC5B,OAAO,IAAI,OAAqC;IAC9C,MAAO,MAAM,QAAQ,EAAC;IACtB,aAAa,MAAM;IACnB,aAAa,MAAM,OAAO,OAAO,SAAS,WAAW;KACnD,IAAI,CAAC,MACH,OAAO,IAAI,YAAY;MAAE;MAAM;MAAO;MAAO,OAAO;MAAI,OAAO;MAAI;MAAQ,CAAA;KAG7E,OAAO,IAAI,YAAY;MACrB;MACA;MACA;MACA,OAAO,EAAE,KAAI,CAAE,IAAI,MAAM,SAAQ,IAAK;MACtC,OAAO,EAAE,KAAI,CAAE,IAAI,MAAM,SAAQ,IAAK;MACtC;MACD,CAAA;;IAEJ,CAAA;IACF;EAED,MAAM,EAAE,YAAY,WAAW;GAAE;GAAO;GAAQ,CAAA;EAEhD,MAAM,EAAE,YAAY,iBAAiB,eAAc;EAEnD,MAAM,EACJ,gBACA,YACA,mBACA,eACA,kBACA,iBACA,qBACE,UAAU;GAAE;GAAO;GAAM;GAAS;GAAQ;GAAc;GAAa,CAAA;EAEzE,MAAM,EAAE,SAAS,MAAM,SAAS,qBAAqB,gBAAgB,WAAW,eAC9E,SAAS;GAAE;GAAO;GAAQ;GAAkB;GAAM;GAAS;GAAc;GAAU;GAAU,CAAA;EAE/F,MAAM,qBAAqB,YAAY,SAAsB;GAC3D,IAAI,CAAC,MAAM,QACT,mBAAkB;QACb,IAAI,CAAC,KAAK,UAAU,QACzB,mBAAkB;IAErB;EAED,SAAS,YAAY,YAAoB,MAAmB;GAC1D,WAAW,YAAY,KAAI;GAE3B,IAAI,CAAC,MAAM,UACT,mBAAmB,KAAI;;EAI3B,MAAM,cAAc,YAAY,MAAmB,YAAqB;GACtE,UAAU,MAAM,QAAO;IACxB;EAED,SAAS,cAAc;GACrB,IAAI,MAAM,UAAU;IAClB,WAAW,MAAM,OAAM;IACvB,WAAW,WAAU;IACrB,qBAAoB;UACf;IACL,iBAAiB,QAAQ,EAAC;IAC1B,mBAAkB;;GAGpB,KAAK,QAAO;;EAId,MAAM,KAAK,WAAmB,GAAE;EAEhC,MAAM,CAAC,IAAI,OAAM,GAAI,CAAC,IAAI,YAAY;GACpC,MAAM,EAAE,eAAe;GACvB,IAAI,CAAC,cAAc,CAAC,IAAI;IACtB,OAAO,KAAK,SAAS;KACnB,KAAK,UAAU;MAChB;IACD,iBAAiB,OAAO,MAAK;IAC7B;;GAGF,MAAM,wBAAQ,IAAI,KAAiB;GAEnC,OAAO,KAAK,SAAS;IACnB,IAAI,KAAK,OAAO,aAAY,CAAE,SAAS,GAAG,aAAa,CAAA,EAAG;KACxD,KAAK,UAAU;KACf,IAAI,SAAS,KAAK;KAClB,OAAO,UAAU,CAAC,MAAM,IAAI,OAAM,EAAG;MACnC,OAAO,UAAU;MACjB,MAAM,IAAI,OAAM;MAChB,SAAS,OAAO;;WAGlB,KAAK,UAAU;KAElB;GAED,cAAc,QAAQ,CAAC,gBAAgB,OAAO,MAAM,CAAA;IACrD;EAED,QAAQ,cAAc;GAAE;GAAK;GAAM;GAAU;GAAU,cAAc;GAAO;GAAY,CAAA;;WAjQ7E,MAAA,SAAA,IAAA,WAAA,EADT,YAuFa,MAAA,YAAA,EAAA;;IArFV,OAAK,eAAA;KAAG,MAAA,IAAA,CAAI;KAAG,MAAA,IAAA,CAAI,GAAE,YAAa,MAAA,SAAQ,CAAA;KAAG,MAAA,IAAA,CAAI,GAAE,YAAa,QAAA,SAAQ;KAAG,MAAA,IAAA,CAAI,EAAE,MAAA,KAAI,CAAA;KAAA,CAAA;IACrF,iBAAa,CAAG,MAAA,IAAA,CAAI,EAAC,QAAA,EAAW,MAAA,IAAA,CAAI,GAAE,SAAU,MAAA,KAAI,CAAA,CAAA;IACrD,SAAQ;aACJ;IAAJ,KAAI;IACH,UAAU,MAAA,SAAA;IACX,OAAM;IACL,cAAU,OAAA,OAAA,OAAA,MAAA,WAAE,QAAA,QAAO;IACnB,cAAU,OAAA,OAAA,OAAA,MAAA,WAAE,QAAA,QAAO;IACnB,oBAAc,OAAA,OAAA,OAAA,MAAA,WAAA,CAAG,WAAW,GAAA,QAAE;;IAEpB,SAAO,cACH;KAAb,mBAAA,SAAA;MAES,QAAA,YAAA,WAAA,EADT,YAaU,MAAA,cAAA,EAAA;;MAXP,MAAM,MAAA,KAAA;MACN,UAAU,MAAA,SAAA;MACV,aAAa,QAAA;MACb,WAAW,QAAA;MACZ,mBAAA;MACC,eAAa,MAAA,eAAA;MACb,SAAO;;MAEG,QAAM,cACuC,CAAtD,YAAsD,MAAA,YAAA,EAAA,EAA7C,OAAK,eAAE,MAAA,IAAA,CAAI,EAAC,QAAA,CAAA,EAAA,EAAA;8BAAwB,CAAb,YAAa,MAAA,UAAA,CAAA,CAAA,CAAA;;;;;;;;;;;KAIjD,mBAAA,SAAA;KACgB,QAAA,YAAA,WAAA,EAAhB,mBA4BW,UAAA,EAAA,KAAA,GAAA,EAAA;qBA3BT,mBAEO,QAAA,EAFA,OAAK,eAAE,MAAA,IAAA,CAAI,EAAC,cAAA,CAAA,EAAA,EAAA,gBACd,QAAA,YAAW,EAAA,EAAA,EAAA,CAAA,CAAA,OAAA,CAD6B,QAAA,YAAY,OAAM,CAAA,CAAA;MAIpD,QAAA,YAAY,UAAA,WAAA,EAAvB,mBAUM,OAAA;;OAV0B,OAAK,eAAE,MAAA,IAAA,CAAI,EAAC,OAAA,CAAA;4BAC1C,mBAOQ,UAAA,MAAA,WANQ,MAAA,KAAA,GAAP,QAAG;2BADZ,YAOQ,MAAA,YAAA,EAAA;QALL,KAAK,IAAI;QACT,UAAQ,CAAG,MAAA,SAAA;QACX,UAAK,WAAE,MAAA,eAAA,CAAe,IAAG;;+BAEX,CAAA,gBAAA,gBAAZ,IAAI,MAAK,EAAA,EAAA,CAAA,CAAA;;;iBAED,MAAA,QAAA,IAAA,WAAA,EAAb,YAA8C,MAAA,YAAA,EAAA,EAAA,KAAA,GAAA,EAAA;8BAAV,CAAA,gBAAA,gBAAV,MAAA,QAAO,CAAA,GAAG,MAAE,EAAA,CAAA,CAAA;;;MAGxC,YAUa,YAAA;OAVD,MAAK;OAAU,MAAK;;8BAOrB,CALD,QAAA,aAAa,QAAA,YAAY,UAAU,MAAA,QAAA,IAAO,CAAK,MAAA,SAAA,IAAA,WAAA,EADvD,YAMS,MAAA,YAAA,EAAA;;QAJN,OAAK,eAAE,MAAA,IAAA,CAAI,EAAC,QAAA,CAAA;QACZ,SAAK,cAAO,aAAW,CAAA,OAAA,CAAA;;+BAEf,CAAT,YAAS,MAAA,MAAA,CAAA,CAAA,CAAA;;yCAGX,YAA6D,MAAA,YAAA,EAAA;;QAApD,OAAK,eAAE,MAAA,IAAA,CAAI,EAAC,QAAA,CAAA;;+BAA+B,CAAb,YAAa,MAAA,UAAA,CAAA,CAAA,CAAA;;;;;;;IAK/C,SAAO,cACL;KAAX,mBAAA,OAAA;KACW,QAAA,cAAA,WAAA,EAAX,mBAMM,OAAA;;MANkB,OAAK,eAAE,MAAA,IAAA,CAAI,EAAC,eAAA,CAAA;SAClC,YAIU,MAAA,cAAA,EAAA;MAJD,aAAY;kBAAqB,GAAA;mEAAA,GAAE,QAAA;MAAG,MAAM,MAAA,KAAA;MAAM,WAAA;;MAC9C,QAAM,cACY,CAA3B,YAA2B,MAAA,YAAA,EAAA,MAAA;8BAAT,CAAV,YAAU,MAAA,OAAA,CAAA,CAAA,CAAA;;;;;KAKa,MAAA,cAAA,CAAc,UAAA,WAAA,EAAnD,mBAUM,OAAA;;MAVA,OAAK,eAAE,MAAA,IAAA,CAAI,EAAC,UAAA,CAAA;2BAChB,mBAQE,UAAA,MAAA,WAPkC,MAAA,cAAA,GAAa,EAArC,OAAO,OAAO,UAAK;0BAD/B,YAQE,aAAA;OANC,MAAM;OACD;OACL,eAAa;OACb,OAAO,MAAA,iBAAA,CAAiB;OACxB,SAAO;OACP,SAAO,MAAA,YAAA;;;;;;;qCAIZ,mBAEM,OAAA;;MAFA,OAAK,eAAE,MAAA,IAAA,CAAI,EAAC,QAAA,CAAA;SAChB,YAAU,MAAA,YAAA,CAAA,CAAA,EAAA,EAAA;;;;;;;uBAMhB,mBAWW,UAAA,EAAA,KAAA,GAAA,EAAA,CAZX,mBAAA,OAAA,EAEoC,QAAA,YAAA,WAAA,EAAlC,mBAMM,OAAA;;IANA,OAAK,eAAA,CAAG,MAAA,IAAA,CAAI,EAAE,MAAA,KAAI,CAAA,CAAA,CAAA;OACtB,mBAIM,OAAA,EAJA,OAAK,eAAE,MAAA,IAAA,CAAI,EAAC,OAAA,CAAA,EAAA,EAAA,EAAA,UAAA,KAAA,EAChB,mBAEQ,UAAA,MAAA,WAFa,MAAA,KAAA,GAAP,QAAG;wBAAjB,YAEQ,MAAA,YAAA,EAAA,EAFoB,KAAK,IAAI,OAAA,EAAA;4BACpB,CAAA,gBAAA,gBAAZ,IAAI,MAAK,EAAA,EAAA,CAAA,CAAA;;;wCAIlB,mBAEW,UAAA,EAAA,KAAA,GAAA,EAAA,CAAA,gBAAA,gBADN,MAAA,eAAA,IAAkB,MAAA,mBAAkB,CAAA,EAAA,EAAA,CAAA,EAAA,GAAA,EAAA,EAAA,GAAA"}
@@ -11,17 +11,17 @@ declare const __VLS_export: _$vue.DefineComponent<CascadeProps, {}, {}, {}, {},
11
11
  onChange?: ((...args: [value?: string | undefined, label?: string | undefined, item?: Record<string, any> | undefined] | [value: string[], label: string[], data: Record<string, any>[]]) => any) | undefined;
12
12
  onClear?: (() => any) | undefined;
13
13
  }>, {
14
+ disabled: boolean;
15
+ readonly: boolean;
14
16
  labelKey: string;
15
17
  valueKey: string;
16
18
  childrenKey: string;
17
19
  data: Record<string, any>[];
18
- disabled: boolean;
19
- readonly: boolean;
20
20
  placeholder: string;
21
21
  clearable: boolean;
22
+ separator: string;
22
23
  filterable: boolean;
23
24
  visibilityLimit: number;
24
- separator: string;
25
25
  }, {}, {}, {}, string, _$vue.ComponentProvideOptions, false, {}, any>;
26
26
  declare const _default: typeof __VLS_export;
27
27
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"check-tag.js","names":[],"sources":["../../../src/components/check-tag/check-tag.vue"],"sourcesContent":["<template>\n <div :class=\"classList\" @click=\"handleChange\">\n <slot />\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { bem } from '@veltra/utils'\nimport { computed } from 'vue'\n\nimport type { CheckTagEmits, CheckTagProps } from '../../types'\n\ndefineOptions({\n name: 'CheckTag'\n})\n\nconst cls = bem('check-tag')\n\nconst props = withDefaults(defineProps<CheckTagProps>(), {})\n\nconst emits = defineEmits<CheckTagEmits>()\n\nconst classList = computed(() => {\n return [cls.b, bem.is('checked', props.checked)]\n})\n\nconst handleChange = () => {\n emits('update:modelValue', props.checked)\n}\n</script>\n"],"mappings":";;;;;;;;;;;;EAgBA,MAAM,MAAM,IAAI,YAAW;EAE3B,MAAM,QAAQ;EAEd,MAAM,QAAQ;EAEd,MAAM,YAAY,eAAe;GAC/B,OAAO,CAAC,IAAI,GAAG,IAAI,GAAG,WAAW,MAAM,QAAQ,CAAA;IAChD;EAED,MAAM,qBAAqB;GACzB,MAAM,qBAAqB,MAAM,QAAO;;;uBA1BxC,mBAEM,OAAA;IAFA,OAAK,eAAE,UAAA,MAAS;IAAG,SAAO;OAC9B,WAAQ,KAAA,QAAA,UAAA,CAAA,EAAA,EAAA"}
1
+ {"version":3,"file":"check-tag.js","names":[],"sources":["../../../src/components/check-tag/check-tag.vue"],"sourcesContent":["<template>\n <div :class=\"classList\" @click=\"handleChange\">\n <slot />\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { bem } from '@veltra/utils'\nimport { computed } from 'vue'\n\nimport type { CheckTagEmits, CheckTagProps } from '../../types'\n\ndefineOptions({ name: 'CheckTag' })\n\nconst cls = bem('check-tag')\n\nconst props = withDefaults(defineProps<CheckTagProps>(), {})\n\nconst emits = defineEmits<CheckTagEmits>()\n\nconst classList = computed(() => {\n return [cls.b, bem.is('checked', props.checked)]\n})\n\nconst handleChange = () => {\n emits('update:modelValue', props.checked)\n}\n</script>\n"],"mappings":";;;;;;;;;;;;EAcA,MAAM,MAAM,IAAI,YAAW;EAE3B,MAAM,QAAQ;EAEd,MAAM,QAAQ;EAEd,MAAM,YAAY,eAAe;GAC/B,OAAO,CAAC,IAAI,GAAG,IAAI,GAAG,WAAW,MAAM,QAAQ,CAAA;IAChD;EAED,MAAM,qBAAqB;GACzB,MAAM,qBAAqB,MAAM,QAAO;;;uBAxBxC,mBAEM,OAAA;IAFA,OAAK,eAAE,UAAA,MAAS;IAAG,SAAO;OAC9B,WAAQ,KAAA,QAAA,UAAA,CAAA,EAAA,EAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"checkbox-button.js","names":[],"sources":["../../../src/components/checkbox/checkbox-button.vue"],"sourcesContent":["<template>\n <div v-if=\"!readonly\" :class=\"className\" @click=\"handleInput\">\n <slot />\n </div>\n\n <u-tag v-else-if=\"checked !== undefined\" :type=\"checked ? 'success' : 'danger'\">\n {{ checked ? '是' : '否' }}\n </u-tag>\n\n <template v-else>\n {{ FORM_EMPTY_CONTENT }}\n </template>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFormFallbackProps } from '@veltra/compositions'\nimport { bem, FORM_EMPTY_CONTENT } from '@veltra/utils'\nimport { injectFormContext } from '@veltra/utils'\nimport { computed } from 'vue'\n\nimport type { CheckboxButtonProps, CheckboxButtonEmits } from '../../types'\nimport { UTag } from '../tag'\n\ndefineOptions({\n name: 'CheckboxButton'\n})\n\nconst props = withDefaults(defineProps<CheckboxButtonProps>(), {\n disabled: undefined,\n readonly: undefined,\n type: 'primary',\n round: false\n})\n\nconst emit = defineEmits<CheckboxButtonEmits>()\n\nconst slot = defineSlots<{\n default(): any\n}>()\n\nconst cls = bem('checkbox-button')\n\nconst checked = defineModel<boolean>()\n\nconst { formProps } = injectFormContext()\n\nconst { size, disabled, readonly } = useFormFallbackProps([formProps ?? {}, props], {\n size: 'default',\n disabled: false,\n readonly: false\n})\n\nconst className = computed(() => {\n return [\n cls.b,\n cls.m(size.value),\n bem.is(props.type),\n bem.is('round', props.round),\n bem.is('disabled', disabled.value),\n bem.is('checked', checked.value)\n ]\n})\n\nconst handleInput = () => {\n checked.value = !checked.value\n emit('change', !!checked.value)\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2BA,MAAM,QAAQ;EAOd,MAAM,OAAO;EAEA,UAAA;EAIb,MAAM,MAAM,IAAI,kBAAiB;EAEjC,MAAM,UAAU,SAAoB,SAAA,aAAC;EAErC,MAAM,EAAE,cAAc,mBAAkB;EAExC,MAAM,EAAE,MAAM,UAAU,aAAa,qBAAqB,CAAC,aAAa,EAAC,EAAG,MAAK,EAAG;GAClF,MAAM;GACN,UAAU;GACV,UAAU;GACX,CAAA;EAED,MAAM,YAAY,eAAe;GAC/B,OAAO;IACL,IAAI;IACJ,IAAI,EAAE,KAAK,MAAK;IAChB,IAAI,GAAG,MAAM,KAAI;IACjB,IAAI,GAAG,SAAS,MAAM,MAAK;IAC3B,IAAI,GAAG,YAAY,SAAS,MAAK;IACjC,IAAI,GAAG,WAAW,QAAQ,MAAK;IACjC;IACD;EAED,MAAM,oBAAoB;GACxB,QAAQ,QAAQ,CAAC,QAAQ;GACzB,KAAK,UAAU,CAAC,CAAC,QAAQ,MAAK;;;WAhElB,MAAA,SAAA,IAAA,WAAA,EAAZ,mBAEM,OAAA;;IAFiB,OAAK,eAAE,UAAA,MAAS;IAAG,SAAO;OAC/C,WAAQ,KAAA,QAAA,UAAA,CAAA,EAAA,EAAA,IAGQ,QAAA,UAAY,KAAA,KAAA,WAAA,EAA9B,YAEQ,MAAA,YAAA,EAAA;;IAFkC,MAAM,QAAA,QAAO,YAAA;;2BAC5B,CAAA,gBAAA,gBAAtB,QAAA,QAAO,MAAA,IAAA,EAAA,EAAA,CAAA,CAAA;;oCAGZ,mBAEW,UAAA,EAAA,KAAA,GAAA,EAAA,CAAA,gBAAA,gBADN,MAAA,mBAAkB,CAAA,EAAA,EAAA,CAAA,EAAA,GAAA"}
1
+ {"version":3,"file":"checkbox-button.js","names":[],"sources":["../../../src/components/checkbox/checkbox-button.vue"],"sourcesContent":["<template>\n <div v-if=\"!readonly\" :class=\"className\" @click=\"handleInput\">\n <slot />\n </div>\n\n <u-tag v-else-if=\"checked !== undefined\" :type=\"checked ? 'success' : 'danger'\">\n {{ checked ? '是' : '否' }}\n </u-tag>\n\n <template v-else>\n {{ FORM_EMPTY_CONTENT }}\n </template>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFormFallbackProps } from '@veltra/compositions'\nimport { bem, FORM_EMPTY_CONTENT } from '@veltra/utils'\nimport { injectFormContext } from '@veltra/utils'\nimport { computed } from 'vue'\n\nimport type { CheckboxButtonProps, CheckboxButtonEmits } from '../../types'\nimport { UTag } from '../tag'\n\ndefineOptions({ name: 'CheckboxButton' })\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<{ default(): any }>()\n\nconst cls = bem('checkbox-button')\n\nconst checked = defineModel<boolean>()\n\nconst { formProps } = injectFormContext()\n\nconst { size, disabled, readonly } = useFormFallbackProps([formProps ?? {}, props], {\n size: 'default',\n disabled: false,\n readonly: false\n})\n\nconst className = computed(() => {\n return [\n cls.b,\n cls.m(size.value),\n bem.is(props.type),\n bem.is('round', props.round),\n bem.is('disabled', disabled.value),\n bem.is('checked', checked.value)\n ]\n})\n\nconst handleInput = () => {\n checked.value = !checked.value\n emit('change', !!checked.value)\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyBA,MAAM,QAAQ;EAOd,MAAM,OAAO;EAEA,UAAA;EAEb,MAAM,MAAM,IAAI,kBAAiB;EAEjC,MAAM,UAAU,SAAoB,SAAA,aAAC;EAErC,MAAM,EAAE,cAAc,mBAAkB;EAExC,MAAM,EAAE,MAAM,UAAU,aAAa,qBAAqB,CAAC,aAAa,EAAC,EAAG,MAAK,EAAG;GAClF,MAAM;GACN,UAAU;GACV,UAAU;GACX,CAAA;EAED,MAAM,YAAY,eAAe;GAC/B,OAAO;IACL,IAAI;IACJ,IAAI,EAAE,KAAK,MAAK;IAChB,IAAI,GAAG,MAAM,KAAI;IACjB,IAAI,GAAG,SAAS,MAAM,MAAK;IAC3B,IAAI,GAAG,YAAY,SAAS,MAAK;IACjC,IAAI,GAAG,WAAW,QAAQ,MAAK;IACjC;IACD;EAED,MAAM,oBAAoB;GACxB,QAAQ,QAAQ,CAAC,QAAQ;GACzB,KAAK,UAAU,CAAC,CAAC,QAAQ,MAAK;;;WA5DlB,MAAA,SAAA,IAAA,WAAA,EAAZ,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
- type: _$_veltra_utils0.ColorType;
24
23
  disabled: boolean;
25
24
  readonly: boolean;
25
+ type: _$_veltra_utils0.ColorType;
26
26
  round: boolean;
27
27
  }, {}, {}, {}, string, _$vue.ComponentProvideOptions, false, {}, any>;
28
28
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
@@ -1 +1 @@
1
- {"version":3,"file":"checkbox.js","names":["$slots"],"sources":["../../../src/components/checkbox/checkbox.vue"],"sourcesContent":["<template>\n <label :class=\"className\">\n <span :class=\"cls.e('wrap')\">\n <transition name=\"zoom-in\" mode=\"out-in\">\n <svg viewBox=\"0 0 64 64\" v-if=\"checked\" fill=\"currentColor\">\n <path\n d=\"M50.42,16.76L22.34,39.45l-8.1-11.46c-1.12-1.58-3.3-1.96-4.88-0.84c-1.58,1.12-1.95,3.3-0.84,4.88l10.26,14.51 c0.56,0.79,1.42,1.31,2.38,1.45c0.16,0.02,0.32,0.03,0.48,0.03c0.8,0,1.57-0.27,2.2-0.78l30.99-25.03c1.5-1.21,1.74-3.42,0.52-4.92 C54.13,15.78,51.93,15.55,50.42,16.76z\"\n ></path>\n </svg>\n <span v-else-if=\"indeterminate\" :class=\"cls.m('indeterminate')\"></span>\n </transition>\n </span>\n\n <input type=\"checkbox\" :checked=\"checked\" :disabled=\"disabled\" hidden @click=\"handleInput\" />\n\n <span :class=\"cls.e('label')\" v-if=\"$slots.default\"><slot /> </span>\n </label>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFormFallbackProps } from '@veltra/compositions'\nimport { bem } from '@veltra/utils'\nimport { injectFormContext } from '@veltra/utils'\nimport { computed } from 'vue'\n\nimport type { CheckboxProps, CheckboxEmits } from '../../types'\n\ndefineOptions({\n name: 'Checkbox'\n})\nconst props = withDefaults(defineProps<CheckboxProps>(), {\n disabled: undefined,\n readonly: undefined\n})\n\nconst emit = defineEmits<CheckboxEmits>()\nconst cls = bem('checkbox')\n\nconst checked = defineModel<boolean>()\n\nconst { formProps } = injectFormContext()\n\nconst { size, disabled, readonly } = useFormFallbackProps([formProps ?? {}, props], {\n size: 'default',\n disabled: false,\n readonly: false\n})\n\nconst className = computed(() => {\n return [\n cls.b,\n cls.m(size.value),\n bem.is('disabled', disabled.value),\n bem.is('readonly', readonly.value),\n bem.is('checked', checked.value || props.indeterminate)\n ]\n})\n\nconst handleInput = (e: MouseEvent) => {\n if (readonly.value) return\n const target = e.target as HTMLInputElement\n checked.value = target.checked\n emit('change', target.checked, e)\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8BA,MAAM,QAAQ;EAKd,MAAM,OAAO;EACb,MAAM,MAAM,IAAI,WAAU;EAE1B,MAAM,UAAU,SAAoB,SAAA,aAAC;EAErC,MAAM,EAAE,cAAc,mBAAkB;EAExC,MAAM,EAAE,MAAM,UAAU,aAAa,qBAAqB,CAAC,aAAa,EAAC,EAAG,MAAK,EAAG;GAClF,MAAM;GACN,UAAU;GACV,UAAU;GACX,CAAA;EAED,MAAM,YAAY,eAAe;GAC/B,OAAO;IACL,IAAI;IACJ,IAAI,EAAE,KAAK,MAAK;IAChB,IAAI,GAAG,YAAY,SAAS,MAAK;IACjC,IAAI,GAAG,YAAY,SAAS,MAAK;IACjC,IAAI,GAAG,WAAW,QAAQ,SAAS,MAAM,cAAa;IACxD;IACD;EAED,MAAM,eAAe,MAAkB;GACrC,IAAI,SAAS,OAAO;GACpB,MAAM,SAAS,EAAE;GACjB,QAAQ,QAAQ,OAAO;GACvB,KAAK,UAAU,OAAO,SAAS,EAAC;;;uBA7DhC,mBAeQ,SAAA,EAfA,OAAK,eAAE,UAAA,MAAS,EAAA,EAAA;IACtB,mBASO,QAAA,EATA,OAAK,eAAE,MAAA,IAAA,CAAI,EAAC,OAAA,CAAA,EAAA,EAAA,CACjB,YAOa,YAAA;KAPD,MAAK;KAAU,MAAK;;4BAKxB,CAJyB,QAAA,SAAA,WAAA,EAA/B,mBAIM,OAJN,YAIM,CAAA,GAAA,OAAA,OAAA,OAAA,KAAA,CAHJ,mBAEQ,QAAA,EADN,GAAE,sRAAoR,EAAA,MAAA,GAAA,CAAA,EAAA,CAAA,IAGzQ,QAAA,iBAAA,WAAA,EAAjB,mBAAuE,QAAA;;MAAtC,OAAK,eAAE,MAAA,IAAA,CAAI,EAAC,gBAAA,CAAA;;;;IAIjD,mBAA6F,SAAA;KAAtF,MAAK;KAAY,SAAS,QAAA;KAAU,UAAU,MAAA,SAAA;KAAU,QAAA;KAAQ,SAAO;;IAE1CA,KAAAA,OAAO,WAAA,WAAA,EAA3C,mBAAoE,QAAA;;KAA7D,OAAK,eAAE,MAAA,IAAA,CAAI,EAAC,QAAA,CAAA;QAAiC,WAAQ,KAAA,QAAA,UAAA,CAAA,EAAA,EAAA,IAAA,mBAAA,QAAA,KAAA"}
1
+ {"version":3,"file":"checkbox.js","names":["$slots"],"sources":["../../../src/components/checkbox/checkbox.vue"],"sourcesContent":["<template>\n <label :class=\"className\">\n <span :class=\"cls.e('wrap')\">\n <transition name=\"zoom-in\" mode=\"out-in\">\n <svg viewBox=\"0 0 64 64\" v-if=\"checked\" fill=\"currentColor\">\n <path\n d=\"M50.42,16.76L22.34,39.45l-8.1-11.46c-1.12-1.58-3.3-1.96-4.88-0.84c-1.58,1.12-1.95,3.3-0.84,4.88l10.26,14.51 c0.56,0.79,1.42,1.31,2.38,1.45c0.16,0.02,0.32,0.03,0.48,0.03c0.8,0,1.57-0.27,2.2-0.78l30.99-25.03c1.5-1.21,1.74-3.42,0.52-4.92 C54.13,15.78,51.93,15.55,50.42,16.76z\"\n ></path>\n </svg>\n <span v-else-if=\"indeterminate\" :class=\"cls.m('indeterminate')\"></span>\n </transition>\n </span>\n\n <input type=\"checkbox\" :checked=\"checked\" :disabled=\"disabled\" hidden @click=\"handleInput\" />\n\n <span :class=\"cls.e('label')\" v-if=\"$slots.default\"><slot /> </span>\n </label>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFormFallbackProps } from '@veltra/compositions'\nimport { bem } from '@veltra/utils'\nimport { injectFormContext } from '@veltra/utils'\nimport { computed } from 'vue'\n\nimport type { CheckboxProps, CheckboxEmits } from '../../types'\n\ndefineOptions({ name: 'Checkbox' })\nconst props = withDefaults(defineProps<CheckboxProps>(), {\n disabled: undefined,\n readonly: undefined\n})\n\nconst emit = defineEmits<CheckboxEmits>()\nconst cls = bem('checkbox')\n\nconst checked = defineModel<boolean>()\n\nconst { formProps } = injectFormContext()\n\nconst { size, disabled, readonly } = useFormFallbackProps([formProps ?? {}, props], {\n size: 'default',\n disabled: false,\n readonly: false\n})\n\nconst className = computed(() => {\n return [\n cls.b,\n cls.m(size.value),\n bem.is('disabled', disabled.value),\n bem.is('readonly', readonly.value),\n bem.is('checked', checked.value || props.indeterminate)\n ]\n})\n\nconst handleInput = (e: MouseEvent) => {\n if (readonly.value) return\n const target = e.target as HTMLInputElement\n checked.value = target.checked\n emit('change', target.checked, e)\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4BA,MAAM,QAAQ;EAKd,MAAM,OAAO;EACb,MAAM,MAAM,IAAI,WAAU;EAE1B,MAAM,UAAU,SAAoB,SAAA,aAAC;EAErC,MAAM,EAAE,cAAc,mBAAkB;EAExC,MAAM,EAAE,MAAM,UAAU,aAAa,qBAAqB,CAAC,aAAa,EAAC,EAAG,MAAK,EAAG;GAClF,MAAM;GACN,UAAU;GACV,UAAU;GACX,CAAA;EAED,MAAM,YAAY,eAAe;GAC/B,OAAO;IACL,IAAI;IACJ,IAAI,EAAE,KAAK,MAAK;IAChB,IAAI,GAAG,YAAY,SAAS,MAAK;IACjC,IAAI,GAAG,YAAY,SAAS,MAAK;IACjC,IAAI,GAAG,WAAW,QAAQ,SAAS,MAAM,cAAa;IACxD;IACD;EAED,MAAM,eAAe,MAAkB;GACrC,IAAI,SAAS,OAAO;GACpB,MAAM,SAAS,EAAE;GACjB,QAAQ,QAAQ,OAAO;GACvB,KAAK,UAAU,OAAO,SAAS,EAAC;;;uBA3DhC,mBAeQ,SAAA,EAfA,OAAK,eAAE,UAAA,MAAS,EAAA,EAAA;IACtB,mBASO,QAAA,EATA,OAAK,eAAE,MAAA,IAAA,CAAI,EAAC,OAAA,CAAA,EAAA,EAAA,CACjB,YAOa,YAAA;KAPD,MAAK;KAAU,MAAK;;4BAKxB,CAJyB,QAAA,SAAA,WAAA,EAA/B,mBAIM,OAJN,YAIM,CAAA,GAAA,OAAA,OAAA,OAAA,KAAA,CAHJ,mBAEQ,QAAA,EADN,GAAE,sRAAoR,EAAA,MAAA,GAAA,CAAA,EAAA,CAAA,IAGzQ,QAAA,iBAAA,WAAA,EAAjB,mBAAuE,QAAA;;MAAtC,OAAK,eAAE,MAAA,IAAA,CAAI,EAAC,gBAAA,CAAA;;;;IAIjD,mBAA6F,SAAA;KAAtF,MAAK;KAAY,SAAS,QAAA;KAAU,UAAU,MAAA,SAAA;KAAU,QAAA;KAAQ,SAAO;;IAE1CA,KAAAA,OAAO,WAAA,WAAA,EAA3C,mBAAoE,QAAA;;KAA7D,OAAK,eAAE,MAAA,IAAA,CAAI,EAAC,QAAA,CAAA;QAAiC,WAAQ,KAAA,QAAA,UAAA,CAAA,EAAA,EAAA,IAAA,mBAAA,QAAA,KAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"checkbox-group.js","names":[],"sources":["../../../src/components/checkbox-group/checkbox-group.vue"],"sourcesContent":["<template>\n <div :class=\"[cls.b, cls.m(size), bem.is('block', block)]\" v-if=\"!readonly\">\n <u-checkbox\n v-for=\"item of items\"\n :key=\"item[valueKey]\"\n :model-value=\"getCheckStatus(item)\"\n @update:model-value=\"handleUpdate($event, item)\"\n :disabled=\"disabled\"\n :size=\"size\"\n >\n {{ item[labelKey] }}\n </u-checkbox>\n </div>\n\n <div v-else-if=\"model?.length\" :class=\"[cls.m(size), cls.e('readonly-tags')]\">\n <div :class=\"cls.e('tags')\">\n <u-tag v-for=\"tag of model\" :key=\"tag\">\n {{ getLabel(tag) }}\n </u-tag>\n </div>\n </div>\n\n <template v-else>\n {{ FORM_EMPTY_CONTENT }}\n </template>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFormFallbackProps } from '@veltra/compositions'\nimport { bem, FORM_EMPTY_CONTENT } from '@veltra/utils'\nimport { injectFormContext } from '@veltra/utils'\n\nimport type { CheckboxGroupProps, CheckboxGroupEmits } from '../../types'\nimport { UCheckbox } from '../checkbox'\nimport { UTag } from '../tag'\n\ndefineOptions({\n name: 'CheckboxGroup'\n})\n\nconst props = withDefaults(defineProps<CheckboxGroupProps>(), {\n labelKey: 'label',\n valueKey: 'value',\n disabled: undefined,\n readonly: undefined\n})\n\ndefineEmits<CheckboxGroupEmits>()\n\nconst model = defineModel<any[]>()\n\nconst cls = bem('checkbox-group')\n\nconst { formProps } = injectFormContext()\n\nconst { size, disabled, readonly } = useFormFallbackProps([formProps ?? {}, props], {\n size: 'default',\n disabled: false,\n readonly: false\n})\n\n/**\n * 获取checkbox的选中状态\n * @param item - 模型对象\n * @returns 模型值是否存在于model.value中\n */\nconst getCheckStatus = (item: Record<string, string | number>): boolean => {\n const { valueKey } = props\n const value = item[valueKey]\n if (!value || !model.value) return false\n return model.value.includes(value)\n}\n\n/**\n * 处理更新操作\n * @param checked - 指示是否选中\n * @param item - 更新的项\n */\nconst handleUpdate = (checked: boolean, item: Record<string, string | number>) => {\n const { valueKey } = props\n const value = item[valueKey]\n if (!value) return\n if (checked) {\n model.value = [...(model.value ?? []), value]\n } else {\n model.value = model.value?.filter((v) => v !== value)\n }\n}\n\nconst getLabel = (value: string | number) => {\n const { items, valueKey, labelKey } = props\n const item = items.find((item) => item[valueKey] === value)\n return item?.[labelKey]\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwCA,MAAM,QAAQ;EASd,MAAM,QAAQ,SAAkB,SAAA,aAAC;EAEjC,MAAM,MAAM,IAAI,iBAAgB;EAEhC,MAAM,EAAE,cAAc,mBAAkB;EAExC,MAAM,EAAE,MAAM,UAAU,aAAa,qBAAqB,CAAC,aAAa,EAAC,EAAG,MAAK,EAAG;GAClF,MAAM;GACN,UAAU;GACV,UAAU;GACX,CAAA;;;;;;EAOD,MAAM,kBAAkB,SAAmD;GACzE,MAAM,EAAE,aAAa;GACrB,MAAM,QAAQ,KAAK;GACnB,IAAI,CAAC,SAAS,CAAC,MAAM,OAAO,OAAO;GACnC,OAAO,MAAM,MAAM,SAAS,MAAK;;;;;;;EAQnC,MAAM,gBAAgB,SAAkB,SAA0C;GAChF,MAAM,EAAE,aAAa;GACrB,MAAM,QAAQ,KAAK;GACnB,IAAI,CAAC,OAAO;GACZ,IAAI,SACF,MAAM,QAAQ,CAAC,GAAI,MAAM,SAAS,EAAC,EAAI,MAAK;QAE5C,MAAM,QAAQ,MAAM,OAAO,QAAQ,MAAM,MAAM,MAAK;;EAIxD,MAAM,YAAY,UAA2B;GAC3C,MAAM,EAAE,OAAO,UAAU,aAAa;GAEtC,OADa,MAAM,MAAM,SAAS,KAAK,cAAc,MAC9C,GAAO;;;WA3FoD,MAAA,SAAA,IAAA,WAAA,EAAlE,mBAWM,OAAA;;IAXA,OAAK,eAAA;KAAG,MAAA,IAAA,CAAI;KAAG,MAAA,IAAA,CAAI,EAAE,MAAA,KAAI,CAAA;KAAG,MAAA,IAAA,CAAI,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,SAAA;KACV,MAAM,MAAA,KAAA;;4BAEa,CAAA,gBAAA,gBAAjB,KAAK,QAAA,UAAQ,EAAA,EAAA,CAAA,CAAA;;;;;;;;qBAIJ,MAAA,OAAO,UAAA,WAAA,EAAvB,mBAMM,OAAA;;IAN0B,OAAK,eAAA,CAAG,MAAA,IAAA,CAAI,EAAE,MAAA,KAAI,CAAA,EAAG,MAAA,IAAA,CAAI,EAAC,gBAAA,CAAA,CAAA;OACxD,mBAIM,OAAA,EAJA,OAAK,eAAE,MAAA,IAAA,CAAI,EAAC,OAAA,CAAA,EAAA,EAAA,EAAA,UAAA,KAAA,EAChB,mBAEQ,UAAA,MAAA,WAFa,MAAA,QAAP,QAAG;wBAAjB,YAEQ,MAAA,YAAA,EAAA,EAFqB,KAAK,KAAG,EAAA;4BAChB,CAAA,gBAAA,gBAAhB,SAAS,IAAG,CAAA,EAAA,EAAA,CAAA,CAAA;;;wCAKrB,mBAEW,UAAA,EAAA,KAAA,GAAA,EAAA,CAAA,gBAAA,gBADN,MAAA,mBAAkB,CAAA,EAAA,EAAA,CAAA,EAAA,GAAA"}
1
+ {"version":3,"file":"checkbox-group.js","names":[],"sources":["../../../src/components/checkbox-group/checkbox-group.vue"],"sourcesContent":["<template>\n <div :class=\"[cls.b, cls.m(size), bem.is('block', block)]\" v-if=\"!readonly\">\n <u-checkbox\n v-for=\"item of items\"\n :key=\"item[valueKey]\"\n :model-value=\"getCheckStatus(item)\"\n @update:model-value=\"handleUpdate($event, item)\"\n :disabled=\"disabled\"\n :size=\"size\"\n >\n {{ item[labelKey] }}\n </u-checkbox>\n </div>\n\n <div v-else-if=\"model?.length\" :class=\"[cls.m(size), cls.e('readonly-tags')]\">\n <div :class=\"cls.e('tags')\">\n <u-tag v-for=\"tag of model\" :key=\"tag\">\n {{ getLabel(tag) }}\n </u-tag>\n </div>\n </div>\n\n <template v-else>\n {{ FORM_EMPTY_CONTENT }}\n </template>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFormFallbackProps } from '@veltra/compositions'\nimport { bem, FORM_EMPTY_CONTENT } from '@veltra/utils'\nimport { injectFormContext } from '@veltra/utils'\n\nimport type { CheckboxGroupProps, CheckboxGroupEmits } from '../../types'\nimport { UCheckbox } from '../checkbox'\nimport { UTag } from '../tag'\n\ndefineOptions({ name: 'CheckboxGroup' })\n\nconst props = withDefaults(defineProps<CheckboxGroupProps>(), {\n labelKey: 'label',\n valueKey: 'value',\n disabled: undefined,\n readonly: undefined\n})\n\ndefineEmits<CheckboxGroupEmits>()\n\nconst model = defineModel<any[]>()\n\nconst cls = bem('checkbox-group')\n\nconst { formProps } = injectFormContext()\n\nconst { size, disabled, readonly } = useFormFallbackProps([formProps ?? {}, props], {\n size: 'default',\n disabled: false,\n readonly: false\n})\n\n/**\n * 获取checkbox的选中状态\n * @param item - 模型对象\n * @returns 模型值是否存在于model.value中\n */\nconst getCheckStatus = (item: Record<string, string | number>): boolean => {\n const { valueKey } = props\n const value = item[valueKey]\n if (!value || !model.value) return false\n return model.value.includes(value)\n}\n\n/**\n * 处理更新操作\n * @param checked - 指示是否选中\n * @param item - 更新的项\n */\nconst handleUpdate = (checked: boolean, item: Record<string, string | number>) => {\n const { valueKey } = props\n const value = item[valueKey]\n if (!value) return\n if (checked) {\n model.value = [...(model.value ?? []), value]\n } else {\n model.value = model.value?.filter((v) => v !== value)\n }\n}\n\nconst getLabel = (value: string | number) => {\n const { items, valueKey, labelKey } = props\n const item = items.find((item) => item[valueKey] === value)\n return item?.[labelKey]\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsCA,MAAM,QAAQ;EASd,MAAM,QAAQ,SAAkB,SAAA,aAAC;EAEjC,MAAM,MAAM,IAAI,iBAAgB;EAEhC,MAAM,EAAE,cAAc,mBAAkB;EAExC,MAAM,EAAE,MAAM,UAAU,aAAa,qBAAqB,CAAC,aAAa,EAAC,EAAG,MAAK,EAAG;GAClF,MAAM;GACN,UAAU;GACV,UAAU;GACX,CAAA;;;;;;EAOD,MAAM,kBAAkB,SAAmD;GACzE,MAAM,EAAE,aAAa;GACrB,MAAM,QAAQ,KAAK;GACnB,IAAI,CAAC,SAAS,CAAC,MAAM,OAAO,OAAO;GACnC,OAAO,MAAM,MAAM,SAAS,MAAK;;;;;;;EAQnC,MAAM,gBAAgB,SAAkB,SAA0C;GAChF,MAAM,EAAE,aAAa;GACrB,MAAM,QAAQ,KAAK;GACnB,IAAI,CAAC,OAAO;GACZ,IAAI,SACF,MAAM,QAAQ,CAAC,GAAI,MAAM,SAAS,EAAC,EAAI,MAAK;QAE5C,MAAM,QAAQ,MAAM,OAAO,QAAQ,MAAM,MAAM,MAAK;;EAIxD,MAAM,YAAY,UAA2B;GAC3C,MAAM,EAAE,OAAO,UAAU,aAAa;GAEtC,OADa,MAAM,MAAM,SAAS,KAAK,cAAc,MAC9C,GAAO;;;WAzFoD,MAAA,SAAA,IAAA,WAAA,EAAlE,mBAWM,OAAA;;IAXA,OAAK,eAAA;KAAG,MAAA,IAAA,CAAI;KAAG,MAAA,IAAA,CAAI,EAAE,MAAA,KAAI,CAAA;KAAG,MAAA,IAAA,CAAI,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,SAAA;KACV,MAAM,MAAA,KAAA;;4BAEa,CAAA,gBAAA,gBAAjB,KAAK,QAAA,UAAQ,EAAA,EAAA,CAAA,CAAA;;;;;;;;qBAIJ,MAAA,OAAO,UAAA,WAAA,EAAvB,mBAMM,OAAA;;IAN0B,OAAK,eAAA,CAAG,MAAA,IAAA,CAAI,EAAE,MAAA,KAAI,CAAA,EAAG,MAAA,IAAA,CAAI,EAAC,gBAAA,CAAA,CAAA;OACxD,mBAIM,OAAA,EAJA,OAAK,eAAE,MAAA,IAAA,CAAI,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
- labelKey: string;
18
- valueKey: string;
19
17
  disabled: boolean;
20
18
  readonly: boolean;
19
+ labelKey: string;
20
+ valueKey: string;
21
21
  }, {}, {}, {}, string, _$vue.ComponentProvideOptions, false, {}, any>;
22
22
  declare const _default: typeof __VLS_export;
23
23
  //#endregion