@veltra/desktop 1.1.24 → 1.1.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/action/action-group.vue.d.ts +2 -2
- package/dist/components/action/action.js.map +1 -1
- package/dist/components/action/action.vue.d.ts +1 -1
- package/dist/components/badge/badge.js.map +1 -1
- package/dist/components/batch-edit/batch-edit-form.js.map +1 -1
- package/dist/components/batch-edit/batch-edit-list.js.map +1 -1
- package/dist/components/batch-edit/batch-edit.js.map +1 -1
- package/dist/components/breadcrumb/breadcrumb.js.map +1 -1
- package/dist/components/button/button-group.js.map +1 -1
- package/dist/components/button/button.js.map +1 -1
- package/dist/components/calendar/calendar.js.map +1 -1
- package/dist/components/card/card-action.js.map +1 -1
- package/dist/components/card/card-content.js.map +1 -1
- package/dist/components/card/card-cover.js.map +1 -1
- package/dist/components/card/card.js.map +1 -1
- package/dist/components/cascade/cascade-panel-item.js.map +1 -1
- package/dist/components/cascade/cascade.js.map +1 -1
- package/dist/components/cascade/cascade.vue.d.ts +1 -1
- package/dist/components/check-tag/check-tag.js.map +1 -1
- package/dist/components/checkbox/checkbox-button.js.map +1 -1
- package/dist/components/checkbox/checkbox.js.map +1 -1
- package/dist/components/checkbox-group/checkbox-group.js.map +1 -1
- package/dist/components/code-editor/code-editor.js.map +1 -1
- package/dist/components/collapse/collapse-item.js.map +1 -1
- package/dist/components/collapse/collapse.js.map +1 -1
- package/dist/components/condition-editor/components/condition-row.js.map +1 -1
- package/dist/components/condition-editor/condition-editor.js.map +1 -1
- package/dist/components/context-menu/context-menu-item.js.map +1 -1
- package/dist/components/context-menu/context-menu.js.map +1 -1
- package/dist/components/date-panel/date-panel.js.map +1 -1
- package/dist/components/date-panel/headers/day.js.map +1 -1
- package/dist/components/date-panel/headers/month.js.map +1 -1
- package/dist/components/date-panel/headers/year.js.map +1 -1
- package/dist/components/date-panel/panels/day.js.map +1 -1
- package/dist/components/date-panel/panels/month.js.map +1 -1
- package/dist/components/date-panel/panels/year.js.map +1 -1
- package/dist/components/date-picker/date-picker.js.map +1 -1
- package/dist/components/date-range-picker/date-range-picker.js.map +1 -1
- package/dist/components/dialog/dialog.js.map +1 -1
- package/dist/components/drawer/drawer.js.map +1 -1
- package/dist/components/empty/empty.js.map +1 -1
- package/dist/components/expression-editor/components/path-preview.js.map +1 -1
- package/dist/components/expression-editor/components/variable-picker.js.map +1 -1
- package/dist/components/expression-editor/expression-editor.js.map +1 -1
- package/dist/components/file-picker/file-picker.js.map +1 -1
- package/dist/components/file-viewer/file-viewer.js.map +1 -1
- package/dist/components/file-viewer/previewers/pdf-previewer.js.map +1 -1
- package/dist/components/file-viewer/previewers/pdf-viewport-scroll.js.map +1 -1
- package/dist/components/file-viewer/previewers/pdf-zoom-bridge.js.map +1 -1
- package/dist/components/file-viewer/previewers/sheet-previewer.js.map +1 -1
- package/dist/components/float-button/float-button.js.map +1 -1
- package/dist/components/form/dynamic-form-model.d.ts +7 -5
- package/dist/components/form/dynamic-form-model.js +31 -12
- package/dist/components/form/dynamic-form-model.js.map +1 -1
- package/dist/components/form/form-model.d.ts +8 -8
- package/dist/components/form/form-model.js +17 -3
- package/dist/components/form/form-model.js.map +1 -1
- package/dist/components/form/form.js.map +1 -1
- package/dist/components/form/form.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/form/helper.d.ts +6 -1
- package/dist/components/form/helper.js +7 -1
- package/dist/components/form/helper.js.map +1 -1
- package/dist/components/form/index.d.ts +2 -2
- package/dist/components/gantt-chart/gantt-chart.js.map +1 -1
- package/dist/components/grid/grid-item.js.map +1 -1
- package/dist/components/grid/grid.js.map +1 -1
- package/dist/components/grid-input/grid-input.js.map +1 -1
- package/dist/components/group-input/group-input.js.map +1 -1
- package/dist/components/icon/icon.js.map +1 -1
- package/dist/components/index.d.ts +1 -1
- package/dist/components/index.js +2 -1
- package/dist/components/input/input.js.map +1 -1
- package/dist/components/input/input.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/layout/layout-resizer.js.map +1 -1
- package/dist/components/layout/layout.js.map +1 -1
- package/dist/components/list/list-item.js.map +1 -1
- package/dist/components/list/list.js.map +1 -1
- package/dist/components/loading/loading.js.map +1 -1
- package/dist/components/menu/menu-icon.js.map +1 -1
- package/dist/components/menu/menu-sub-collapsed.js.map +1 -1
- package/dist/components/menu/menu.js.map +1 -1
- package/dist/components/message/message-box.js.map +1 -1
- package/dist/components/message/message.js.map +1 -1
- package/dist/components/message-confirm/message-confirm.js.map +1 -1
- package/dist/components/multi-select/multi-select-option.js.map +1 -1
- package/dist/components/multi-select/multi-select.vue.d.ts +1 -1
- package/dist/components/multi-tree-select/multi-tree-select.vue.d.ts +1 -1
- package/dist/components/notification/notification.js.map +1 -1
- package/dist/components/notification/notification.vue.d.ts +2 -2
- package/dist/components/number/number.js.map +1 -1
- package/dist/components/number-input/number-input.js.map +1 -1
- package/dist/components/number-range-input/number-range-input.js.map +1 -1
- package/dist/components/paginator/paginator.js.map +1 -1
- package/dist/components/palette/palette-alpha.js.map +1 -1
- package/dist/components/palette/palette-color-switch.js.map +1 -1
- package/dist/components/palette/palette-hue.js.map +1 -1
- package/dist/components/palette/palette-sv.js.map +1 -1
- package/dist/components/palette/palette.js.map +1 -1
- package/dist/components/pop-confirm/pop-confirm.js.map +1 -1
- package/dist/components/pop-confirm/pop-confirm.vue.d.ts +1 -1
- package/dist/components/progress/progress.js.map +1 -1
- package/dist/components/progress-nodes/progress-nodes.js.map +1 -1
- package/dist/components/radio/radio.js.map +1 -1
- package/dist/components/radio-group/radio-group.js.map +1 -1
- package/dist/components/scroll/scroll-bar.js.map +1 -1
- package/dist/components/scroll/scroll.js.map +1 -1
- package/dist/components/slider/slider-thumb.js.map +1 -1
- package/dist/components/slider/slider.js.map +1 -1
- package/dist/components/steps/steps.js.map +1 -1
- package/dist/components/switch/switch.js.map +1 -1
- package/dist/components/table/table-body.js.map +1 -1
- package/dist/components/table/table-cell.js.map +1 -1
- package/dist/components/table/table-foot.js.map +1 -1
- package/dist/components/table-editor/table-editor.js.map +1 -1
- package/dist/components/tabs/tabs-horizontal.js.map +1 -1
- package/dist/components/tabs/tabs-horizontal.vue.d.ts +4 -4
- package/dist/components/tabs/tabs-vertical.js.map +1 -1
- package/dist/components/tabs/tabs-vertical.vue.d.ts +3 -3
- package/dist/components/tabs/tabs.js.map +1 -1
- package/dist/components/tabs/tabs.vue.d.ts +4 -4
- package/dist/components/tag/tag.js.map +1 -1
- package/dist/components/text/text.js.map +1 -1
- package/dist/components/textarea/textarea.js.map +1 -1
- package/dist/components/textarea/textarea.vue.d.ts +1 -1
- package/dist/components/theme/theme.js.map +1 -1
- package/dist/components/tip/tip.js.map +1 -1
- package/dist/components/tip/tip.vue.d.ts +1 -1
- package/dist/components/tree/tree-node.js.map +1 -1
- package/dist/components/tree/tree.js.map +1 -1
- package/dist/components/tree-select/tree-select.vue.d.ts +1 -1
- package/dist/components/watermark/watermark.js.map +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.js +2 -2
- package/dist/types/form.d.ts +12 -9
- package/dist/types/index.d.ts +2 -2
- package/package.json +6 -6
- package/src/components/action/action.vue +1 -4
- package/src/components/badge/badge.vue +3 -9
- package/src/components/batch-edit/batch-edit-form.vue +1 -5
- package/src/components/batch-edit/batch-edit-list.vue +2 -6
- package/src/components/batch-edit/batch-edit.vue +2 -12
- package/src/components/breadcrumb/breadcrumb.vue +4 -13
- package/src/components/button/button-group.vue +2 -6
- package/src/components/button/button.vue +3 -9
- package/src/components/calendar/calendar.vue +1 -3
- package/src/components/card/card-action.vue +1 -3
- package/src/components/card/card-content.vue +1 -6
- package/src/components/card/card-cover.vue +1 -3
- package/src/components/card/card.vue +2 -6
- package/src/components/cascade/cascade-panel-item.vue +2 -8
- package/src/components/cascade/cascade.vue +5 -37
- package/src/components/check-tag/check-tag.vue +1 -3
- package/src/components/checkbox/checkbox-button.vue +2 -6
- package/src/components/checkbox/checkbox.vue +1 -3
- package/src/components/checkbox-group/checkbox-group.vue +1 -3
- package/src/components/code-editor/code-editor.vue +4 -12
- package/src/components/collapse/collapse-item.vue +1 -3
- package/src/components/collapse/collapse.vue +2 -8
- package/src/components/condition-editor/components/condition-row.vue +2 -8
- package/src/components/condition-editor/condition-editor.vue +2 -6
- package/src/components/context-menu/context-menu-item.vue +3 -10
- package/src/components/context-menu/context-menu.vue +5 -17
- package/src/components/date-panel/date-panel.vue +3 -11
- package/src/components/date-panel/headers/day.vue +1 -3
- package/src/components/date-panel/headers/month.vue +1 -3
- package/src/components/date-panel/headers/year.vue +1 -3
- package/src/components/date-panel/panels/day.vue +1 -4
- package/src/components/date-panel/panels/month.vue +1 -3
- package/src/components/date-panel/panels/year.vue +1 -3
- package/src/components/date-picker/date-picker.vue +1 -3
- package/src/components/date-range-picker/date-range-picker.vue +1 -3
- package/src/components/dialog/dialog.vue +7 -24
- package/src/components/drawer/drawer.vue +3 -11
- package/src/components/empty/empty.vue +2 -7
- package/src/components/expression-editor/components/path-preview.vue +2 -6
- package/src/components/expression-editor/components/variable-picker.vue +1 -3
- package/src/components/expression-editor/expression-editor.vue +2 -6
- package/src/components/expression-editor/style.scss +1 -1
- package/src/components/file-picker/file-picker.vue +2 -7
- package/src/components/file-viewer/file-viewer.vue +4 -22
- package/src/components/file-viewer/previewers/pdf-previewer.vue +1 -5
- package/src/components/file-viewer/previewers/pdf-viewport-scroll.vue +1 -7
- package/src/components/file-viewer/previewers/pdf-zoom-bridge.vue +2 -7
- package/src/components/file-viewer/previewers/sheet-previewer.vue +4 -10
- package/src/components/float-button/float-button.vue +1 -3
- package/src/components/form/__test__/form-model.test.ts +190 -0
- package/src/components/form/dynamic-form-model.ts +47 -19
- package/src/components/form/form-model.ts +40 -28
- package/src/components/form/form.vue +3 -13
- package/src/components/form/helper.ts +9 -0
- package/src/components/form/index.ts +2 -1
- package/src/components/gantt-chart/gantt-chart.vue +1 -3
- package/src/components/grid/grid-item.vue +3 -9
- package/src/components/grid/grid.vue +5 -18
- package/src/components/grid-input/grid-input.vue +2 -6
- package/src/components/group-input/group-input.vue +2 -7
- package/src/components/icon/icon.vue +2 -6
- package/src/components/input/input.vue +2 -6
- package/src/components/layout/layout-resizer.vue +1 -3
- package/src/components/layout/layout.vue +3 -9
- package/src/components/list/list-item.vue +1 -3
- package/src/components/list/list.vue +2 -6
- package/src/components/loading/loading.vue +3 -9
- package/src/components/menu/menu-icon.vue +2 -6
- package/src/components/menu/menu-sub-collapsed.vue +2 -8
- package/src/components/menu/menu.vue +3 -9
- package/src/components/menu/style.scss +1 -1
- package/src/components/message/message-box.vue +3 -10
- package/src/components/message/message.vue +3 -9
- package/src/components/message-confirm/message-confirm.vue +2 -6
- package/src/components/multi-select/multi-select-option.vue +3 -9
- package/src/components/notification/notification.vue +3 -11
- package/src/components/number/number.vue +4 -14
- package/src/components/number-input/number-input.vue +7 -36
- package/src/components/number-range-input/number-range-input.vue +4 -17
- package/src/components/paginator/paginator.vue +7 -22
- package/src/components/palette/palette-alpha.vue +2 -6
- package/src/components/palette/palette-color-switch.vue +1 -3
- package/src/components/palette/palette-hue.vue +2 -6
- package/src/components/palette/palette-sv.vue +5 -17
- package/src/components/palette/palette.vue +2 -12
- package/src/components/pop-confirm/pop-confirm.vue +2 -6
- package/src/components/progress/progress.vue +2 -7
- package/src/components/progress-nodes/progress-nodes.vue +2 -7
- package/src/components/radio/radio.vue +2 -6
- package/src/components/radio-group/radio-group.vue +1 -3
- package/src/components/scroll/scroll-bar.vue +5 -17
- package/src/components/scroll/scroll.vue +5 -16
- package/src/components/slider/slider-thumb.vue +4 -12
- package/src/components/slider/slider.vue +3 -14
- package/src/components/steps/steps.vue +3 -10
- package/src/components/switch/switch.vue +2 -7
- package/src/components/table/table-body.vue +2 -8
- package/src/components/table/table-cell.vue +2 -7
- package/src/components/table/table-foot.vue +2 -9
- package/src/components/table-editor/table-editor.vue +1 -3
- package/src/components/tabs/tabs-horizontal.vue +2 -6
- package/src/components/tabs/tabs-vertical.vue +1 -3
- package/src/components/tabs/tabs.vue +1 -3
- package/src/components/tag/tag.vue +2 -6
- package/src/components/text/text.vue +3 -9
- package/src/components/textarea/textarea.vue +1 -3
- package/src/components/theme/group-item.vue +1 -3
- package/src/components/theme/group.vue +1 -3
- package/src/components/theme/theme.vue +6 -26
- package/src/components/tip/tip.vue +1 -3
- package/src/components/tree/tree-node.vue +1 -3
- package/src/components/tree/tree.vue +7 -30
- package/src/components/watermark/watermark.vue +4 -15
- package/src/types/form.ts +29 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collapse-item.js","names":[],"sources":["../../../src/components/collapse/collapse-item.vue"],"sourcesContent":["<template>\n <div :class=\"classList\">\n <div\n :class=\"headerClassList\"\n role=\"button\"\n :aria-expanded=\"isActive\"\n :aria-disabled=\"disabled\"\n :tabindex=\"disabled ? -1 : 0\"\n @click=\"handleClick\"\n @keydown.enter.prevent=\"handleClick\"\n @keydown.space.prevent=\"handleClick\"\n >\n <span :class=\"cls.e('title')\">\n <slot name=\"title\">{{ title }}</slot>\n </span>\n\n <span :class=\"cls.e('icon')\">\n <slot name=\"icon\" :is-active=\"isActive\">\n <UIcon><component :is=\"iconComponent\" /></UIcon>\n </slot>\n </span>\n </div>\n <div ref=\"wrapperEl\" :class=\"cls.e('content-wrapper')\" :aria-hidden=\"!isActive\">\n <div :class=\"cls.e('content')\">\n <slot />\n </div>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ArrowRight } from '@veltra/icons/normal'\nimport { bem } from '@veltra/utils'\nimport { computed, inject, onBeforeUnmount, onMounted, ref, watch } from 'vue'\n\nimport type { CollapseItemProps } from '../../types'\nimport { UIcon } from '../icon'\nimport { CollapseDIKey } from './di'\n\ndefineOptions({
|
|
1
|
+
{"version":3,"file":"collapse-item.js","names":[],"sources":["../../../src/components/collapse/collapse-item.vue"],"sourcesContent":["<template>\n <div :class=\"classList\">\n <div\n :class=\"headerClassList\"\n role=\"button\"\n :aria-expanded=\"isActive\"\n :aria-disabled=\"disabled\"\n :tabindex=\"disabled ? -1 : 0\"\n @click=\"handleClick\"\n @keydown.enter.prevent=\"handleClick\"\n @keydown.space.prevent=\"handleClick\"\n >\n <span :class=\"cls.e('title')\">\n <slot name=\"title\">{{ title }}</slot>\n </span>\n\n <span :class=\"cls.e('icon')\">\n <slot name=\"icon\" :is-active=\"isActive\">\n <UIcon><component :is=\"iconComponent\" /></UIcon>\n </slot>\n </span>\n </div>\n <div ref=\"wrapperEl\" :class=\"cls.e('content-wrapper')\" :aria-hidden=\"!isActive\">\n <div :class=\"cls.e('content')\">\n <slot />\n </div>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ArrowRight } from '@veltra/icons/normal'\nimport { bem } from '@veltra/utils'\nimport { computed, inject, onBeforeUnmount, onMounted, ref, watch } from 'vue'\n\nimport type { CollapseItemProps } from '../../types'\nimport { UIcon } from '../icon'\nimport { CollapseDIKey } from './di'\n\ndefineOptions({ name: 'CollapseItem' })\n\nconst props = defineProps<CollapseItemProps>()\n\nconst context = inject(CollapseDIKey)!\n\nconst cls = context?.cls ?? bem('collapse')\n\nconst isActive = computed(() => !!context?.activeValues.value.includes(props.value))\n\nconst iconComponent = computed(() => context?.expandIcon.value ?? ArrowRight)\n\nconst classList = computed(() => [\n cls.e('item'),\n bem.is('active', isActive.value),\n bem.is('disabled', props.disabled)\n])\n\nconst headerClassList = computed(() => [\n cls.e('header'),\n bem.is('disabled', props.disabled),\n bem.is('active', isActive.value)\n])\n\nconst handleClick = () => {\n if (props.disabled) return\n context?.toggle(props.value)\n}\n\nconst wrapperEl = ref<HTMLElement>()\n\nconst { expandTransition } = context\n\nonMounted(() => {\n context?.register(props.value)\n if (!wrapperEl.value) return\n expandTransition.setExpanded(wrapperEl.value, isActive.value)\n})\n\nwatch(isActive, (active) => {\n if (!wrapperEl.value) return\n active ? expandTransition.expand(wrapperEl.value) : expandTransition.collapse(wrapperEl.value)\n})\n\nonBeforeUnmount(() => {\n context?.unregister(props.value)\n if (!wrapperEl.value) return\n expandTransition.cancel(wrapperEl.value)\n})\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;EAyCA,MAAM,QAAQ;EAEd,MAAM,UAAU,OAAO,cAAa;EAEpC,MAAM,MAAM,SAAS,OAAO,IAAI,WAAU;EAE1C,MAAM,WAAW,eAAe,CAAC,CAAC,SAAS,aAAa,MAAM,SAAS,MAAM,MAAM,CAAA;EAEnF,MAAM,gBAAgB,eAAe,SAAS,WAAW,SAAS,WAAU;EAE5E,MAAM,YAAY,eAAe;GAC/B,IAAI,EAAE,OAAM;GACZ,IAAI,GAAG,UAAU,SAAS,MAAK;GAC/B,IAAI,GAAG,YAAY,MAAM,SAAQ;GAClC,CAAA;EAED,MAAM,kBAAkB,eAAe;GACrC,IAAI,EAAE,SAAQ;GACd,IAAI,GAAG,YAAY,MAAM,SAAQ;GACjC,IAAI,GAAG,UAAU,SAAS,MAAK;GAChC,CAAA;EAED,MAAM,oBAAoB;GACxB,IAAI,MAAM,UAAU;GACpB,SAAS,OAAO,MAAM,MAAK;;EAG7B,MAAM,YAAY,KAAiB;EAEnC,MAAM,EAAE,qBAAqB;EAE7B,gBAAgB;GACd,SAAS,SAAS,MAAM,MAAK;GAC7B,IAAI,CAAC,UAAU,OAAO;GACtB,iBAAiB,YAAY,UAAU,OAAO,SAAS,MAAK;IAC7D;EAED,MAAM,WAAW,WAAW;GAC1B,IAAI,CAAC,UAAU,OAAO;GACtB,SAAS,iBAAiB,OAAO,UAAU,MAAK,GAAI,iBAAiB,SAAS,UAAU,MAAK;IAC9F;EAED,sBAAsB;GACpB,SAAS,WAAW,MAAM,MAAK;GAC/B,IAAI,CAAC,UAAU,OAAO;GACtB,iBAAiB,OAAO,UAAU,MAAK;IACxC;;uBAtFC,mBA0BM,OAAA,EA1BA,OAAK,eAAE,UAAA,MAAS,EAAA,EAAA,CACpB,mBAmBM,OAAA;IAlBH,OAAK,eAAE,gBAAA,MAAe;IACvB,MAAK;IACJ,iBAAe,SAAA;IACf,iBAAe,QAAA;IACf,UAAU,QAAA,WAAQ,KAAA;IAClB,SAAO;IACP,WAAO,CAAA,SAAA,cAAgB,aAAW,CAAA,UAAA,CAAA,EAAA,CAAA,QAAA,CAAA,EAAA,SAAA,cACX,aAAW,CAAA,UAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA;OAEnC,mBAEO,QAAA,EAFA,OAAK,eAAE,MAAA,IAAA,CAAI,EAAC,QAAA,CAAA,EAAA,EAAA,CACjB,WAAqC,KAAA,QAAA,SAAA,EAAA,QAAA,CAAA,gBAAA,gBAAf,QAAA,MAAK,EAAA,EAAA,CAAA,CAAA,CAAA,EAAA,EAAA,EAG7B,mBAIO,QAAA,EAJA,OAAK,eAAE,MAAA,IAAA,CAAI,EAAC,OAAA,CAAA,EAAA,EAAA,CACjB,WAEO,KAAA,QAAA,QAAA,EAFY,UAAW,SAAA,OAAQ,QAE/B,CADL,YAAgD,MAAA,YAAA,EAAA,MAAA;2BAAR,EAAA,WAAA,EAAjC,YAAiC,wBAAjB,cAAA,MAAa,CAAA,EAAA,CAAA;;gCAI1C,mBAIM,OAAA;aAJG;IAAJ,KAAI;IAAa,OAAK,eAAE,MAAA,IAAA,CAAI,EAAC,kBAAA,CAAA;IAAsB,eAAW,CAAG,SAAA;OACpE,mBAEM,OAAA,EAFA,OAAK,eAAE,MAAA,IAAA,CAAI,EAAC,UAAA,CAAA,EAAA,EAAA,CAChB,WAAQ,KAAA,QAAA,UAAA,CAAA,EAAA,EAAA,CAAA,EAAA,IAAA,WAAA,CAAA,EAAA,EAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collapse.js","names":[],"sources":["../../../src/components/collapse/collapse.vue"],"sourcesContent":["<template>\n <div :class=\"classList\" role=\"region\">\n <slot />\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFormFallbackProps, useModel } from '@veltra/compositions'\nimport { bem, ExpandTransition } from '@veltra/utils'\nimport { computed, provide, ref } from 'vue'\n\nimport type { CollapseEmits, CollapseModelValue, CollapseProps, CollapseValue } from '../../types'\nimport { CollapseDIKey } from './di'\n\ndefineOptions({
|
|
1
|
+
{"version":3,"file":"collapse.js","names":[],"sources":["../../../src/components/collapse/collapse.vue"],"sourcesContent":["<template>\n <div :class=\"classList\" role=\"region\">\n <slot />\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFormFallbackProps, useModel } from '@veltra/compositions'\nimport { bem, ExpandTransition } from '@veltra/utils'\nimport { computed, provide, ref } from 'vue'\n\nimport type { CollapseEmits, CollapseModelValue, CollapseProps, CollapseValue } from '../../types'\nimport { CollapseDIKey } from './di'\n\ndefineOptions({ name: 'Collapse' })\n\nconst props = withDefaults(defineProps<CollapseProps>(), {\n accordion: false,\n defaultCollapseAll: false\n})\nconst emit = defineEmits<CollapseEmits>()\n\nconst cls = bem('collapse')\n\nconst expandTransition = new ExpandTransition({\n transition: 'height 0.24s cubic-bezier(0.4, 0, 0.2, 1)'\n})\n\nconst { size } = useFormFallbackProps([props], { size: 'default' })\n\nconst expandIcon = computed(() => props.expandIcon)\n\nconst classList = computed(() => [cls.b, cls.m(size.value)])\n\nconst modelValue = useModel<CollapseProps, 'modelValue'>({ props, emit, propName: 'modelValue' })\n\nconst activeValues = computed<CollapseValue[]>(() => {\n const v = modelValue.value\n if (v === undefined || v === null) return []\n return Array.isArray(v) ? v : [v]\n})\n\nconst update = (next: CollapseModelValue) => {\n modelValue.value = next\n emit('change', next)\n}\n\nconst toggle = (value: CollapseValue) => {\n if (props.accordion) {\n update(activeValues.value[0] === value ? [] : value)\n return\n }\n\n const values = activeValues.value.slice()\n const index = values.indexOf(value)\n if (index > -1) values.splice(index, 1)\n else values.push(value)\n update(values)\n}\n\n// 收集子组件已注册的 values\nconst registeredValues = ref<CollapseValue[]>([])\n\n// 初始捕获 modelValue 是否具有有效初值\nconst hasInitialValue =\n modelValue.value !== undefined &&\n modelValue.value !== null &&\n (!Array.isArray(modelValue.value) || modelValue.value.length > 0)\n\nconst register = (value: CollapseValue) => {\n if (!registeredValues.value.includes(value)) {\n registeredValues.value.push(value)\n\n // 若默认展开全部(defaultCollapseAll 为 false)且外部未指定初始值,则自动展开该子项\n if (!props.defaultCollapseAll && !hasInitialValue) {\n if (props.accordion) {\n if (registeredValues.value.length === 1) {\n update(value)\n }\n } else {\n const current = Array.isArray(modelValue.value)\n ? modelValue.value\n : modelValue.value !== undefined && modelValue.value !== null\n ? [modelValue.value]\n : []\n if (!current.includes(value)) {\n update([...current, value])\n }\n }\n }\n }\n}\n\nconst unregister = (value: CollapseValue) => {\n const idx = registeredValues.value.indexOf(value)\n if (idx > -1) {\n registeredValues.value.splice(idx, 1)\n }\n}\n\nprovide(CollapseDIKey, {\n cls,\n size,\n expandIcon,\n activeValues,\n toggle,\n expandTransition,\n register,\n unregister\n})\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;EAgBA,MAAM,QAAQ;EAId,MAAM,OAAO;EAEb,MAAM,MAAM,IAAI,WAAU;EAE1B,MAAM,mBAAmB,IAAI,iBAAiB,EAC5C,YAAY,6CACb,CAAA;EAED,MAAM,EAAE,SAAS,qBAAqB,CAAC,MAAK,EAAG,EAAE,MAAM,WAAW,CAAA;EAElE,MAAM,aAAa,eAAe,MAAM,WAAU;EAElD,MAAM,YAAY,eAAe,CAAC,IAAI,GAAG,IAAI,EAAE,KAAK,MAAM,CAAC,CAAA;EAE3D,MAAM,aAAa,WAAsC;GAAE;GAAO;GAAM,UAAU;GAAc,CAAA;EAEhG,MAAM,eAAe,eAAgC;GACnD,MAAM,IAAI,WAAW;GACrB,IAAI,MAAM,KAAA,KAAa,MAAM,MAAM,OAAO,EAAC;GAC3C,OAAO,MAAM,QAAQ,EAAC,GAAI,IAAI,CAAC,EAAC;IACjC;EAED,MAAM,UAAU,SAA6B;GAC3C,WAAW,QAAQ;GACnB,KAAK,UAAU,KAAI;;EAGrB,MAAM,UAAU,UAAyB;GACvC,IAAI,MAAM,WAAW;IACnB,OAAO,aAAa,MAAM,OAAO,QAAQ,EAAC,GAAI,MAAK;IACnD;;GAGF,MAAM,SAAS,aAAa,MAAM,OAAM;GACxC,MAAM,QAAQ,OAAO,QAAQ,MAAK;GAClC,IAAI,QAAQ,IAAI,OAAO,OAAO,OAAO,EAAC;QACjC,OAAO,KAAK,MAAK;GACtB,OAAO,OAAM;;EAIf,MAAM,mBAAmB,IAAqB,EAAE,CAAA;EAGhD,MAAM,kBACJ,WAAW,UAAU,KAAA,KACrB,WAAW,UAAU,SACpB,CAAC,MAAM,QAAQ,WAAW,MAAK,IAAK,WAAW,MAAM,SAAS;EAEjE,MAAM,YAAY,UAAyB;GACzC,IAAI,CAAC,iBAAiB,MAAM,SAAS,MAAK,EAAG;IAC3C,iBAAiB,MAAM,KAAK,MAAK;IAGjC,IAAI,CAAC,MAAM,sBAAsB,CAAC,iBAChC,IAAI,MAAM;SACJ,iBAAiB,MAAM,WAAW,GACpC,OAAO,MAAK;WAET;KACL,MAAM,UAAU,MAAM,QAAQ,WAAW,MAAK,GAC1C,WAAW,QACX,WAAW,UAAU,KAAA,KAAa,WAAW,UAAU,OACrD,CAAC,WAAW,MAAK,GACjB,EAAC;KACP,IAAI,CAAC,QAAQ,SAAS,MAAK,EACzB,OAAO,CAAC,GAAG,SAAS,MAAM,CAAA;;;;EAOpC,MAAM,cAAc,UAAyB;GAC3C,MAAM,MAAM,iBAAiB,MAAM,QAAQ,MAAK;GAChD,IAAI,MAAM,IACR,iBAAiB,MAAM,OAAO,KAAK,EAAC;;EAIxC,QAAQ,eAAe;GACrB;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACD,CAAA;;uBA5GC,mBAEM,OAAA;IAFA,OAAK,eAAE,UAAA,MAAS;IAAE,MAAK;OAC3B,WAAQ,KAAA,QAAA,UAAA,CAAA,EAAA,EAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"condition-row.js","names":[],"sources":["../../../../src/components/condition-editor/components/condition-row.vue"],"sourcesContent":["<template>\n <div :class=\"cls.e('row')\">\n <u-select\n :class=\"cls.e('field')\"\n :model-value=\"item.field\"\n :options=\"fieldOptions\"\n value-key=\"value\"\n label-key=\"label\"\n placeholder=\"字段\"\n :size=\"size\"\n :disabled=\"disabled || readonly\"\n :clearable=\"false\"\n filterable\n @update:model-value=\"onFieldChange\"\n />\n\n <u-select\n :class=\"cls.e('operator')\"\n :model-value=\"item.operator\"\n :options=\"operatorOptions\"\n value-key=\"value\"\n label-key=\"label\"\n placeholder=\"运算符\"\n :size=\"size\"\n :disabled=\"disabled || readonly || !currentField\"\n :clearable=\"false\"\n @update:model-value=\"onOperatorChange\"\n />\n\n <div :class=\"cls.e('value')\">\n <template v-if=\"!needValue\">\n <span :class=\"cls.e('value-empty')\">—</span>\n </template>\n\n <template v-else-if=\"enumValueOptions\">\n <u-select\n :model-value=\"constantValue\"\n :options=\"enumValueOptions\"\n value-key=\"value\"\n label-key=\"label\"\n placeholder=\"选择值\"\n :size=\"size\"\n :disabled=\"disabled || readonly\"\n :clearable=\"false\"\n @update:model-value=\"onConstantChange\"\n />\n </template>\n\n <template v-else-if=\"booleanValueOptions\">\n <u-select\n :model-value=\"constantValue\"\n :options=\"booleanValueOptions\"\n value-key=\"value\"\n label-key=\"label\"\n placeholder=\"选择值\"\n :size=\"size\"\n :disabled=\"disabled || readonly\"\n :clearable=\"false\"\n @update:model-value=\"onConstantChange\"\n />\n </template>\n\n <template v-else-if=\"item.value.kind === 'variable'\">\n <span\n ref=\"chipRef\"\n :class=\"cls.e('value-chip')\"\n tabindex=\"0\"\n :title=\"`变量:${item.value.name}`\"\n @click=\"onChipClick\"\n @keydown.delete=\"onChipDelete\"\n >\n <span :class=\"cls.e('value-chip-label')\">{{ item.value.name }}</span>\n <span :class=\"cls.e('value-chip-close')\" @click.stop=\"onChipDelete\">\n <u-icon><Close /></u-icon>\n </span>\n </span>\n </template>\n\n <template v-else>\n <input\n ref=\"valueInputRef\"\n :class=\"cls.e('value-input')\"\n :type=\"inputType\"\n :value=\"constantValue\"\n :placeholder=\"placeholder\"\n :disabled=\"disabled\"\n :readonly=\"readonly\"\n @input=\"onValueInput\"\n @keydown=\"onValueKeydown\"\n />\n </template>\n </div>\n\n <button\n v-if=\"!readonly\"\n type=\"button\"\n :class=\"cls.e('row-delete')\"\n :disabled=\"disabled\"\n title=\"删除条件\"\n @click=\"emit('delete')\"\n >\n <u-icon><Delete /></u-icon>\n </button>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { Close, Delete } from '@veltra/icons/normal'\nimport { bem } from '@veltra/utils'\nimport { computed, useTemplateRef } from 'vue'\n\nimport type { ConditionField, ConditionLeaf, ConditionValue } from '../../../types'\nimport { UIcon } from '../../icon'\nimport { USelect } from '../../select'\nimport { getOperatorsByFieldType, type OperatorDef } from '../core/operators'\n\ndefineOptions({ name: 'ConditionRow' })\n\nexport interface MentionPayload {\n triggerDom: HTMLElement\n setValue: (val: ConditionValue) => void\n}\n\nconst props = withDefaults(\n defineProps<{\n item: ConditionLeaf\n fields?: ConditionField[]\n size?: 'small' | 'default' | 'large'\n disabled?: boolean\n readonly?: boolean\n }>(),\n { size: 'default' }\n)\n\nconst emit = defineEmits<{\n (e: 'update:item', item: ConditionLeaf): void\n (e: 'delete'): void\n (e: 'mention', payload: MentionPayload): void\n}>()\n\nconst cls = bem('condition-editor')\n\nconst valueInputRef = useTemplateRef<HTMLInputElement>('valueInputRef')\nconst chipRef = useTemplateRef<HTMLElement>('chipRef')\n\nconst fieldOptions = computed(() =>\n (props.fields ?? []).map((f) => ({ label: f.label, value: f.value }))\n)\n\nconst currentField = computed(() => props.fields?.find((f) => f.value === props.item.field))\n\nconst operatorOptions = computed<OperatorDef[]>(() => {\n if (!currentField.value) {\n return props.item.operator\n ? [{ label: props.item.operator, value: props.item.operator, needValue: true }]\n : []\n }\n return getOperatorsByFieldType(currentField.value.type)\n})\n\nconst currentOperator = computed(() =>\n operatorOptions.value.find((o) => o.value === props.item.operator)\n)\n\nconst needValue = computed(() => currentOperator.value?.needValue ?? true)\n\nconst constantValue = computed(() =>\n props.item.value.kind === 'constant' ? props.item.value.value : ''\n)\n\n/** 枚举字段的可选值(仅在非 `in` 等多值运算符下展开为下拉) */\nconst enumValueOptions = computed(() => {\n if (!currentField.value || currentField.value.type !== 'enum') return null\n if (props.item.operator === 'in') return null\n return currentField.value.enumOptions ?? []\n})\n\nconst booleanValueOptions = computed(() => {\n if (!currentField.value || currentField.value.type !== 'boolean') return null\n if (!needValue.value) return null\n return [\n { label: '是', value: 'true' },\n { label: '否', value: 'false' }\n ]\n})\n\nconst inputType = computed(() => {\n const type = currentField.value?.type\n if (type === 'number') return 'number'\n if (type === 'date') return 'date'\n return 'text'\n})\n\nconst placeholder = computed(() => {\n if (props.item.operator === 'in') return '多个值用逗号分隔'\n if (!props.fields?.length) return ''\n return '输入值或 @ 引用变量'\n})\n\nfunction emitUpdate(patch: Partial<ConditionLeaf>) {\n emit('update:item', { ...props.item, ...patch })\n}\n\nfunction onFieldChange(val: string) {\n const field = props.fields?.find((f) => f.value === val)\n const nextOps = field ? getOperatorsByFieldType(field.type) : []\n const nextOp = nextOps[0]?.value ?? 'eq'\n emit('update:item', {\n ...props.item,\n field: val,\n operator: nextOp,\n value: { kind: 'constant', value: '' }\n })\n}\n\nfunction onOperatorChange(val: string) {\n emitUpdate({\n operator: val,\n value: { kind: 'constant', value: '' }\n })\n}\n\nfunction onValueInput(e: Event) {\n emitUpdate({ value: { kind: 'constant', value: (e.target as HTMLInputElement).value } })\n}\n\nfunction onConstantChange(val: string) {\n emitUpdate({ value: { kind: 'constant', value: val } })\n}\n\nfunction onValueKeydown(e: KeyboardEvent) {\n if (props.disabled || props.readonly) return\n if (e.key === '@' && valueInputRef.value) {\n e.preventDefault()\n emit('mention', {\n triggerDom: valueInputRef.value,\n setValue: (val) => emitUpdate({ value: val })\n })\n }\n}\n\nfunction onChipClick() {\n if (props.disabled || props.readonly) return\n const dom = chipRef.value\n if (!dom) return\n emit('mention', {\n triggerDom: dom,\n setValue: (val) => emitUpdate({ value: val })\n })\n}\n\nfunction onChipDelete() {\n if (props.disabled || props.readonly) return\n emitUpdate({ value: { kind: 'constant', value: '' } })\n}\n</script>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"condition-row.js","names":[],"sources":["../../../../src/components/condition-editor/components/condition-row.vue"],"sourcesContent":["<template>\n <div :class=\"cls.e('row')\">\n <u-select\n :class=\"cls.e('field')\"\n :model-value=\"item.field\"\n :options=\"fieldOptions\"\n value-key=\"value\"\n label-key=\"label\"\n placeholder=\"字段\"\n :size=\"size\"\n :disabled=\"disabled || readonly\"\n :clearable=\"false\"\n filterable\n @update:model-value=\"onFieldChange\"\n />\n\n <u-select\n :class=\"cls.e('operator')\"\n :model-value=\"item.operator\"\n :options=\"operatorOptions\"\n value-key=\"value\"\n label-key=\"label\"\n placeholder=\"运算符\"\n :size=\"size\"\n :disabled=\"disabled || readonly || !currentField\"\n :clearable=\"false\"\n @update:model-value=\"onOperatorChange\"\n />\n\n <div :class=\"cls.e('value')\">\n <template v-if=\"!needValue\">\n <span :class=\"cls.e('value-empty')\">—</span>\n </template>\n\n <template v-else-if=\"enumValueOptions\">\n <u-select\n :model-value=\"constantValue\"\n :options=\"enumValueOptions\"\n value-key=\"value\"\n label-key=\"label\"\n placeholder=\"选择值\"\n :size=\"size\"\n :disabled=\"disabled || readonly\"\n :clearable=\"false\"\n @update:model-value=\"onConstantChange\"\n />\n </template>\n\n <template v-else-if=\"booleanValueOptions\">\n <u-select\n :model-value=\"constantValue\"\n :options=\"booleanValueOptions\"\n value-key=\"value\"\n label-key=\"label\"\n placeholder=\"选择值\"\n :size=\"size\"\n :disabled=\"disabled || readonly\"\n :clearable=\"false\"\n @update:model-value=\"onConstantChange\"\n />\n </template>\n\n <template v-else-if=\"item.value.kind === 'variable'\">\n <span\n ref=\"chipRef\"\n :class=\"cls.e('value-chip')\"\n tabindex=\"0\"\n :title=\"`变量:${item.value.name}`\"\n @click=\"onChipClick\"\n @keydown.delete=\"onChipDelete\"\n >\n <span :class=\"cls.e('value-chip-label')\">{{ item.value.name }}</span>\n <span :class=\"cls.e('value-chip-close')\" @click.stop=\"onChipDelete\">\n <u-icon><Close /></u-icon>\n </span>\n </span>\n </template>\n\n <template v-else>\n <input\n ref=\"valueInputRef\"\n :class=\"cls.e('value-input')\"\n :type=\"inputType\"\n :value=\"constantValue\"\n :placeholder=\"placeholder\"\n :disabled=\"disabled\"\n :readonly=\"readonly\"\n @input=\"onValueInput\"\n @keydown=\"onValueKeydown\"\n />\n </template>\n </div>\n\n <button\n v-if=\"!readonly\"\n type=\"button\"\n :class=\"cls.e('row-delete')\"\n :disabled=\"disabled\"\n title=\"删除条件\"\n @click=\"emit('delete')\"\n >\n <u-icon><Delete /></u-icon>\n </button>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { Close, Delete } from '@veltra/icons/normal'\nimport { bem } from '@veltra/utils'\nimport { computed, useTemplateRef } from 'vue'\n\nimport type { ConditionField, ConditionLeaf, ConditionValue } from '../../../types'\nimport { UIcon } from '../../icon'\nimport { USelect } from '../../select'\nimport { getOperatorsByFieldType, type OperatorDef } from '../core/operators'\n\ndefineOptions({ name: 'ConditionRow' })\n\nexport interface MentionPayload {\n triggerDom: HTMLElement\n setValue: (val: ConditionValue) => void\n}\n\nconst props = withDefaults(\n defineProps<{\n item: ConditionLeaf\n fields?: ConditionField[]\n size?: 'small' | 'default' | 'large'\n disabled?: boolean\n readonly?: boolean\n }>(),\n { size: 'default' }\n)\n\nconst emit = defineEmits<{\n (e: 'update:item', item: ConditionLeaf): void\n (e: 'delete'): void\n (e: 'mention', payload: MentionPayload): void\n}>()\n\nconst cls = bem('condition-editor')\n\nconst valueInputRef = useTemplateRef<HTMLInputElement>('valueInputRef')\nconst chipRef = useTemplateRef<HTMLElement>('chipRef')\n\nconst fieldOptions = computed(() =>\n (props.fields ?? []).map((f) => ({ label: f.label, value: f.value }))\n)\n\nconst currentField = computed(() => props.fields?.find((f) => f.value === props.item.field))\n\nconst operatorOptions = computed<OperatorDef[]>(() => {\n if (!currentField.value) {\n return props.item.operator\n ? [{ label: props.item.operator, value: props.item.operator, needValue: true }]\n : []\n }\n return getOperatorsByFieldType(currentField.value.type)\n})\n\nconst currentOperator = computed(() =>\n operatorOptions.value.find((o) => o.value === props.item.operator)\n)\n\nconst needValue = computed(() => currentOperator.value?.needValue ?? true)\n\nconst constantValue = computed(() =>\n props.item.value.kind === 'constant' ? props.item.value.value : ''\n)\n\n/** 枚举字段的可选值(仅在非 `in` 等多值运算符下展开为下拉) */\nconst enumValueOptions = computed(() => {\n if (!currentField.value || currentField.value.type !== 'enum') return null\n if (props.item.operator === 'in') return null\n return currentField.value.enumOptions ?? []\n})\n\nconst booleanValueOptions = computed(() => {\n if (!currentField.value || currentField.value.type !== 'boolean') return null\n if (!needValue.value) return null\n return [\n { label: '是', value: 'true' },\n { label: '否', value: 'false' }\n ]\n})\n\nconst inputType = computed(() => {\n const type = currentField.value?.type\n if (type === 'number') return 'number'\n if (type === 'date') return 'date'\n return 'text'\n})\n\nconst placeholder = computed(() => {\n if (props.item.operator === 'in') return '多个值用逗号分隔'\n if (!props.fields?.length) return ''\n return '输入值或 @ 引用变量'\n})\n\nfunction emitUpdate(patch: Partial<ConditionLeaf>) {\n emit('update:item', { ...props.item, ...patch })\n}\n\nfunction onFieldChange(val: string) {\n const field = props.fields?.find((f) => f.value === val)\n const nextOps = field ? getOperatorsByFieldType(field.type) : []\n const nextOp = nextOps[0]?.value ?? 'eq'\n emit('update:item', {\n ...props.item,\n field: val,\n operator: nextOp,\n value: { kind: 'constant', value: '' }\n })\n}\n\nfunction onOperatorChange(val: string) {\n emitUpdate({ operator: val, value: { kind: 'constant', value: '' } })\n}\n\nfunction onValueInput(e: Event) {\n emitUpdate({ value: { kind: 'constant', value: (e.target as HTMLInputElement).value } })\n}\n\nfunction onConstantChange(val: string) {\n emitUpdate({ value: { kind: 'constant', value: val } })\n}\n\nfunction onValueKeydown(e: KeyboardEvent) {\n if (props.disabled || props.readonly) return\n if (e.key === '@' && valueInputRef.value) {\n e.preventDefault()\n emit('mention', {\n triggerDom: valueInputRef.value,\n setValue: (val) => emitUpdate({ value: val })\n })\n }\n}\n\nfunction onChipClick() {\n if (props.disabled || props.readonly) return\n const dom = chipRef.value\n if (!dom) return\n emit('mention', { triggerDom: dom, setValue: (val) => emitUpdate({ value: val }) })\n}\n\nfunction onChipDelete() {\n if (props.disabled || props.readonly) return\n emitUpdate({ value: { kind: 'constant', value: '' } })\n}\n</script>\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"condition-editor.js","names":[],"sources":["../../../src/components/condition-editor/condition-editor.vue"],"sourcesContent":["<template>\n <div :class=\"className\" @keydown=\"onKeydown\">\n <ConditionGroup\n :group=\"rootGroup\"\n :fields=\"props.fields\"\n :size=\"size\"\n :disabled=\"disabled\"\n :readonly=\"readonly\"\n @update:group=\"onGroupUpdate\"\n @mention=\"onMention\"\n />\n\n <VariablePicker\n ref=\"pickerRef\"\n :visible=\"pickerVisible\"\n :trigger-dom=\"pickerTriggerDom\"\n :variables=\"props.variables\"\n :filter=\"pickerFilter\"\n :selectable-levels=\"'leaf'\"\n @select=\"onPickerSelect\"\n @dismiss=\"onPickerDismiss\"\n @update:visible=\"onPickerVisibleChange\"\n />\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFormFallbackProps } from '@veltra/compositions'\nimport { bem, injectFormContext } from '@veltra/utils'\nimport { computed, shallowRef, useTemplateRef, watch } from 'vue'\n\nimport type { ConditionEditorProps, ConditionExpression } from '../../types'\nimport VariablePicker from '../expression-editor/components/variable-picker.vue'\nimport ConditionGroup from './components/condition-group.vue'\nimport type { MentionPayload } from './components/condition-row.vue'\nimport { createEmptyGroup } from './core/evaluator'\n\ndefineOptions({ name: 'ConditionEditor' })\n\nconst props = withDefaults(defineProps<ConditionEditorProps>(), {
|
|
1
|
+
{"version":3,"file":"condition-editor.js","names":[],"sources":["../../../src/components/condition-editor/condition-editor.vue"],"sourcesContent":["<template>\n <div :class=\"className\" @keydown=\"onKeydown\">\n <ConditionGroup\n :group=\"rootGroup\"\n :fields=\"props.fields\"\n :size=\"size\"\n :disabled=\"disabled\"\n :readonly=\"readonly\"\n @update:group=\"onGroupUpdate\"\n @mention=\"onMention\"\n />\n\n <VariablePicker\n ref=\"pickerRef\"\n :visible=\"pickerVisible\"\n :trigger-dom=\"pickerTriggerDom\"\n :variables=\"props.variables\"\n :filter=\"pickerFilter\"\n :selectable-levels=\"'leaf'\"\n @select=\"onPickerSelect\"\n @dismiss=\"onPickerDismiss\"\n @update:visible=\"onPickerVisibleChange\"\n />\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFormFallbackProps } from '@veltra/compositions'\nimport { bem, injectFormContext } from '@veltra/utils'\nimport { computed, shallowRef, useTemplateRef, watch } from 'vue'\n\nimport type { ConditionEditorProps, ConditionExpression } from '../../types'\nimport VariablePicker from '../expression-editor/components/variable-picker.vue'\nimport ConditionGroup from './components/condition-group.vue'\nimport type { MentionPayload } from './components/condition-row.vue'\nimport { createEmptyGroup } from './core/evaluator'\n\ndefineOptions({ name: 'ConditionEditor' })\n\nconst props = withDefaults(defineProps<ConditionEditorProps>(), { fields: () => [] })\n\nconst emit = defineEmits<{ (e: 'update:modelValue', value: ConditionExpression): void }>()\n\nconst cls = bem('condition-editor')\nconst { formProps } = injectFormContext()\nconst { size, disabled, readonly } = useFormFallbackProps([formProps ?? {}, props])\n\nconst className = computed(() => [\n cls.b,\n cls.m(size.value),\n bem.is('disabled', disabled.value),\n bem.is('readonly', readonly.value)\n])\n\nconst rootGroup = shallowRef<ConditionExpression>(\n props.modelValue ? clone(props.modelValue) : createEmptyGroup()\n)\n\nfunction clone<T>(v: T): T {\n return JSON.parse(JSON.stringify(v)) as T\n}\n\nfunction onGroupUpdate(group: ConditionExpression) {\n rootGroup.value = group\n emit('update:modelValue', clone(group))\n}\n\nwatch(\n () => props.modelValue,\n (v) => {\n if (!v) {\n rootGroup.value = createEmptyGroup()\n return\n }\n if (JSON.stringify(v) === JSON.stringify(rootGroup.value)) return\n rootGroup.value = clone(v)\n }\n)\n\n// ── VariablePicker ──\n\nconst pickerRef = useTemplateRef<{ handleKeydown: (e: KeyboardEvent) => boolean }>('pickerRef')\nconst pickerVisible = shallowRef(false)\nconst pickerTriggerDom = shallowRef<HTMLElement | undefined>(undefined)\nconst pickerFilter = shallowRef('')\nconst mentionTarget = shallowRef<MentionPayload | null>(null)\n\nfunction onMention(payload: MentionPayload) {\n if (disabled.value || readonly.value) return\n mentionTarget.value = payload\n pickerTriggerDom.value = payload.triggerDom\n pickerFilter.value = ''\n pickerVisible.value = true\n}\n\nfunction onPickerSelect(item: { label: string; value: string }) {\n mentionTarget.value?.setValue({ kind: 'variable', name: item.value })\n pickerVisible.value = false\n mentionTarget.value = null\n}\n\nfunction onPickerDismiss() {\n pickerVisible.value = false\n mentionTarget.value = null\n}\n\nfunction onPickerVisibleChange(v: boolean) {\n if (!v) {\n pickerVisible.value = false\n mentionTarget.value = null\n }\n}\n\nfunction onKeydown(e: KeyboardEvent) {\n if (disabled.value || readonly.value) return\n if (pickerVisible.value) {\n const handled = pickerRef.value?.handleKeydown(e)\n if (handled) {\n e.preventDefault()\n }\n }\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;EAuCA,MAAM,QAAQ;EAEd,MAAM,OAAO;EAEb,MAAM,MAAM,IAAI,mBAAkB;EAClC,MAAM,EAAE,cAAc,mBAAkB;EACxC,MAAM,EAAE,MAAM,UAAU,aAAa,qBAAqB,CAAC,aAAa,EAAC,EAAG,MAAM,CAAA;EAElF,MAAM,YAAY,eAAe;GAC/B,IAAI;GACJ,IAAI,EAAE,KAAK,MAAK;GAChB,IAAI,GAAG,YAAY,SAAS,MAAK;GACjC,IAAI,GAAG,YAAY,SAAS,MAAK;GAClC,CAAA;EAED,MAAM,YAAY,WAChB,MAAM,aAAa,MAAM,MAAM,WAAU,GAAI,kBAC/C,CAAA;EAEA,SAAS,MAAS,GAAS;GACzB,OAAO,KAAK,MAAM,KAAK,UAAU,EAAE,CAAA;;EAGrC,SAAS,cAAc,OAA4B;GACjD,UAAU,QAAQ;GAClB,KAAK,qBAAqB,MAAM,MAAM,CAAA;;EAGxC,YACQ,MAAM,aACX,MAAM;GACL,IAAI,CAAC,GAAG;IACN,UAAU,QAAQ,kBAAiB;IACnC;;GAEF,IAAI,KAAK,UAAU,EAAC,KAAM,KAAK,UAAU,UAAU,MAAK,EAAG;GAC3D,UAAU,QAAQ,MAAM,EAAC;IAE7B;EAIA,MAAM,YAAY,eAAiE,YAAW;EAC9F,MAAM,gBAAgB,WAAW,MAAK;EACtC,MAAM,mBAAmB,WAAoC,KAAA,EAAS;EACtE,MAAM,eAAe,WAAW,GAAE;EAClC,MAAM,gBAAgB,WAAkC,KAAI;EAE5D,SAAS,UAAU,SAAyB;GAC1C,IAAI,SAAS,SAAS,SAAS,OAAO;GACtC,cAAc,QAAQ;GACtB,iBAAiB,QAAQ,QAAQ;GACjC,aAAa,QAAQ;GACrB,cAAc,QAAQ;;EAGxB,SAAS,eAAe,MAAwC;GAC9D,cAAc,OAAO,SAAS;IAAE,MAAM;IAAY,MAAM,KAAK;IAAO,CAAA;GACpE,cAAc,QAAQ;GACtB,cAAc,QAAQ;;EAGxB,SAAS,kBAAkB;GACzB,cAAc,QAAQ;GACtB,cAAc,QAAQ;;EAGxB,SAAS,sBAAsB,GAAY;GACzC,IAAI,CAAC,GAAG;IACN,cAAc,QAAQ;IACtB,cAAc,QAAQ;;;EAI1B,SAAS,UAAU,GAAkB;GACnC,IAAI,SAAS,SAAS,SAAS,OAAO;GACtC,IAAI,cAAc;QACA,UAAU,OAAO,cAAc,EAAC,EAE9C,EAAE,gBAAe;;;;uBArHrB,mBAsBM,OAAA;IAtBA,OAAK,eAAE,UAAA,MAAS;IAAY;OAChC,YAQE,aAAA;IAPC,OAAO,UAAA;IACP,QAAQ,MAAM;IACd,MAAM,MAAA,KAAA;IACN,UAAU,MAAA,SAAA;IACV,UAAU,MAAA,SAAA;IACV,kBAAc;IACL;;;;;;;OAGZ,YAUE,aAAA;aATI;IAAJ,KAAI;IACH,SAAS,cAAA;IACT,eAAa,iBAAA;IACb,WAAW,MAAM;IACjB,QAAQ,aAAA;IACR,qBAAmB;IACnB,UAAQ;IACR,WAAS;IACT,oBAAgB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-menu-item.js","names":[],"sources":["../../../src/components/context-menu/context-menu-item.vue"],"sourcesContent":["<template>\n <li\n :class=\"[\n cls.e('item'),\n bem.is('disabled', disabled),\n bem.is('loading', loading),\n cls.em('item', 'menu')\n ]\"\n v-ripple=\"!disabled && !loading\"\n @click=\"handleClickMenu\"\n >\n <u-icon v-if=\"loading\" :class=\"bem.is('loading')\">\n <Loading />\n </u-icon>\n <template v-else>\n <u-icon v-if=\"menu.icon\">\n <component :is=\"menu.icon\" />\n </u-icon>\n <i v-else :class=\"cls.e('icon-place')\"></i>\n </template>\n\n <span :class=\"cls.e('label')\">{{ menu.label }}</span>\n </li>\n</template>\n\n<script lang=\"ts\" setup>\nimport { vRipple } from '@veltra/directives'\nimport { Loading } from '@veltra/icons/normal'\nimport { bem } from '@veltra/utils'\nimport { computed, inject, shallowRef } from 'vue'\n\nimport type { ContextMenuItem } from '../../types'\nimport { UIcon } from '../icon'\nimport { ContextMenuDIKey } from './di'\n\ndefineOptions({
|
|
1
|
+
{"version":3,"file":"context-menu-item.js","names":[],"sources":["../../../src/components/context-menu/context-menu-item.vue"],"sourcesContent":["<template>\n <li\n :class=\"[\n cls.e('item'),\n bem.is('disabled', disabled),\n bem.is('loading', loading),\n cls.em('item', 'menu')\n ]\"\n v-ripple=\"!disabled && !loading\"\n @click=\"handleClickMenu\"\n >\n <u-icon v-if=\"loading\" :class=\"bem.is('loading')\">\n <Loading />\n </u-icon>\n <template v-else>\n <u-icon v-if=\"menu.icon\">\n <component :is=\"menu.icon\" />\n </u-icon>\n <i v-else :class=\"cls.e('icon-place')\"></i>\n </template>\n\n <span :class=\"cls.e('label')\">{{ menu.label }}</span>\n </li>\n</template>\n\n<script lang=\"ts\" setup>\nimport { vRipple } from '@veltra/directives'\nimport { Loading } from '@veltra/icons/normal'\nimport { bem } from '@veltra/utils'\nimport { computed, inject, shallowRef } from 'vue'\n\nimport type { ContextMenuItem } from '../../types'\nimport { UIcon } from '../icon'\nimport { ContextMenuDIKey } from './di'\n\ndefineOptions({ name: 'ContextMenuItem' })\n\nconst { menu } = defineProps<{ menu: ContextMenuItem }>()\n\nconst emit = defineEmits<{ (e: 'click-start'): void; (e: 'click-end'): void }>()\n\nconst { cls } = inject(ContextMenuDIKey)!\n\nconst loading = shallowRef(false)\n\nconst disabled = computed(() => {\n return (typeof menu.disabled === 'function' ? menu.disabled() : menu.disabled) ?? false\n})\n\nfunction handleClickMenu() {\n if (disabled.value || loading.value) return\n emit('click-start')\n loading.value = true\n const result = menu.callback?.()\n\n if (result instanceof Promise) {\n return result\n .then(() => {})\n .finally(() => {\n emit('click-end')\n loading.value = false\n })\n }\n loading.value = false\n emit('click-end')\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;EAuCA,MAAM,OAAO;EAEb,MAAM,EAAE,QAAQ,OAAO,iBAAgB;EAEvC,MAAM,UAAU,WAAW,MAAK;EAEhC,MAAM,WAAW,eAAe;GAC9B,QAAQ,OAAO,QAAA,KAAK,aAAa,aAAa,QAAA,KAAK,UAAS,GAAI,QAAA,KAAK,aAAa;IACnF;EAED,SAAS,kBAAkB;GACzB,IAAI,SAAS,SAAS,QAAQ,OAAO;GACrC,KAAK,cAAa;GAClB,QAAQ,QAAQ;GAChB,MAAM,SAAS,QAAA,KAAK,YAAW;GAE/B,IAAI,kBAAkB,SACpB,OAAO,OACJ,WAAW,GAAE,CACb,cAAc;IACb,KAAK,YAAW;IAChB,QAAQ,QAAQ;KACjB;GAEL,QAAQ,QAAQ;GAChB,KAAK,YAAW;;;uCA/DhB,mBAqBK,MAAA;IApBF,OAAK,eAAA;KAAU,MAAA,IAAA,CAAI,EAAC,OAAA;KAAgB,MAAA,IAAA,CAAI,GAAE,YAAa,SAAA,MAAQ;KAAS,MAAA,IAAA,CAAI,GAAE,WAAY,QAAA,MAAO;KAAS,MAAA,IAAA,CAAI,GAAE,QAAA,OAAA;;IAOhH,SAAO;OAEM,QAAA,SAAA,WAAA,EAAd,YAES,MAAA,YAAA,EAAA;;IAFe,OAAK,eAAE,MAAA,IAAA,CAAI,GAAE,UAAA,CAAA;;2BACxB,CAAX,YAAW,MAAA,QAAA,CAAA,CAAA,CAAA;;qCAEb,mBAKW,UAAA,EAAA,KAAA,GAAA,EAAA,CAJK,QAAA,KAAK,QAAA,WAAA,EAAnB,YAES,MAAA,YAAA,EAAA,EAAA,KAAA,GAAA,EAAA;2BADsB,EAAA,WAAA,EAA7B,YAA6B,wBAAb,QAAA,KAAK,KAAI,CAAA,EAAA,CAAA;;uBAE3B,mBAA2C,KAAA;;IAAhC,OAAK,eAAE,MAAA,IAAA,CAAI,EAAC,aAAA,CAAA;wBAGzB,mBAAqD,QAAA,EAA9C,OAAK,eAAE,MAAA,IAAA,CAAI,EAAC,QAAA,CAAA,EAAA,EAAA,gBAAc,QAAA,KAAK,MAAK,EAAA,EAAA,CAAA,EAAA,EAAA,GAAA,CAAA,CAAA,MAAA,QAAA,EAAA,CAbhC,SAAA,SAAQ,CAAK,QAAA,MAAO,CAAA,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-menu.js","names":[],"sources":["../../../src/components/context-menu/context-menu.vue"],"sourcesContent":["<template>\n <transition name=\"zoom-in\" appear @after-leave=\"emit('destroy')\">\n <ul\n :class=\"[cls.b, cls.m(size)]\"\n :style=\"style\"\n ref=\"contextMenuRef\"\n v-if=\"visible\"\n v-click-outside=\"handleClickOutside\"\n >\n <UContextMenuItem\n v-for=\"menu of menus\"\n :menu=\"menu\"\n :disabled=\"getMenuDisabled(menu)\"\n @click-start=\"handleClickStart\"\n @click-end=\"handleClickEnd\"\n />\n </ul>\n </transition>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFallbackProps } from '@veltra/compositions'\nimport { vClickOutside } from '@veltra/directives'\nimport { bem, withUnit, zIndex } from '@veltra/utils'\nimport { computed, provide, shallowRef, type CSSProperties } from 'vue'\n\nimport type {\n ContextMenuEmits,\n ContextMenuItem,\n ContextMenuProps,\n ComponentSize\n} from '../../types'\nimport UContextMenuItem from './context-menu-item.vue'\nimport { ContextMenuDIKey } from './di'\n\ndefineOptions({
|
|
1
|
+
{"version":3,"file":"context-menu.js","names":[],"sources":["../../../src/components/context-menu/context-menu.vue"],"sourcesContent":["<template>\n <transition name=\"zoom-in\" appear @after-leave=\"emit('destroy')\">\n <ul\n :class=\"[cls.b, cls.m(size)]\"\n :style=\"style\"\n ref=\"contextMenuRef\"\n v-if=\"visible\"\n v-click-outside=\"handleClickOutside\"\n >\n <UContextMenuItem\n v-for=\"menu of menus\"\n :menu=\"menu\"\n :disabled=\"getMenuDisabled(menu)\"\n @click-start=\"handleClickStart\"\n @click-end=\"handleClickEnd\"\n />\n </ul>\n </transition>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFallbackProps } from '@veltra/compositions'\nimport { vClickOutside } from '@veltra/directives'\nimport { bem, withUnit, zIndex } from '@veltra/utils'\nimport { computed, provide, shallowRef, type CSSProperties } from 'vue'\n\nimport type {\n ContextMenuEmits,\n ContextMenuItem,\n ContextMenuProps,\n ComponentSize\n} from '../../types'\nimport UContextMenuItem from './context-menu-item.vue'\nimport { ContextMenuDIKey } from './di'\n\ndefineOptions({ name: 'ContextMenu' })\n\nconst props = withDefaults(defineProps<ContextMenuProps>(), { width: 150 })\n\nconst emit = defineEmits<ContextMenuEmits>()\n\nconst { size } = useFallbackProps([props], { size: 'default' as ComponentSize })\n\nconst cls = bem('context-menu')\n\nconst contextMenuRef = shallowRef<HTMLElement>()\n\nconst visible = shallowRef(true)\n\nconst computePosition = () => {\n const position: {\n top?: number\n left?: number\n right?: number\n bottom?: number\n transformOrigin?: string\n } = {}\n\n const { mousePosition } = props\n const { x, y } = mousePosition\n if (x > window.innerWidth / 2) {\n position.right = window.innerWidth - x - 1\n } else {\n position.left = x + 1\n }\n if (y > window.innerHeight / 2) {\n position.bottom = window.innerHeight - y - 1\n } else {\n position.top = y + 1\n }\n\n const positionY = position.top ? 'top' : 'bottom'\n const positionX = position.left ? 'left' : 'right'\n position.transformOrigin = `${positionY} ${positionX}`\n\n return Object.fromEntries(\n Object.entries(position).map(([k, v]) => [k, withUnit(v as number | string | undefined, 'px')])\n ) as CSSProperties\n}\n\nconst style = computed<CSSProperties>(() => {\n return { width: withUnit(props.width, 'px'), ...computePosition(), zIndex: zIndex() }\n})\n\nconst menus = computed(() => {\n const { menus } = props\n if (typeof menus === 'function') {\n return menus()\n }\n return menus\n})\n\nconst getMenuDisabled = (menu: ContextMenuItem) => {\n return typeof menu.disabled === 'function' ? menu.disabled() : menu.disabled\n}\n\nfunction close() {\n visible.value = false\n}\n\nlet loading = false\nfunction handleClickStart() {\n loading = true\n}\n\nfunction handleClickEnd() {\n loading = false\n close()\n}\n\nfunction handleClickOutside() {\n if (loading) return\n close()\n}\n\nprovide(ContextMenuDIKey, { cls })\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;EAqCA,MAAM,QAAQ;EAEd,MAAM,OAAO;EAEb,MAAM,EAAE,SAAS,iBAAiB,CAAC,MAAK,EAAG,EAAE,MAAM,WAA4B,CAAA;EAE/E,MAAM,MAAM,IAAI,eAAc;EAE9B,MAAM,iBAAiB,YAAwB;EAE/C,MAAM,UAAU,WAAW,KAAI;EAE/B,MAAM,wBAAwB;GAC5B,MAAM,WAMF,EAAC;GAEL,MAAM,EAAE,kBAAkB;GAC1B,MAAM,EAAE,GAAG,MAAM;GACjB,IAAI,IAAI,OAAO,aAAa,GAC1B,SAAS,QAAQ,OAAO,aAAa,IAAI;QAEzC,SAAS,OAAO,IAAI;GAEtB,IAAI,IAAI,OAAO,cAAc,GAC3B,SAAS,SAAS,OAAO,cAAc,IAAI;QAE3C,SAAS,MAAM,IAAI;GAKrB,SAAS,kBAAkB,GAFT,SAAS,MAAM,QAAQ,SAED,GADtB,SAAS,OAAO,SAAS;GAG3C,OAAO,OAAO,YACZ,OAAO,QAAQ,SAAQ,CAAE,KAAK,CAAC,GAAG,OAAO,CAAC,GAAG,SAAS,GAAkC,KAAK,CAAC,CAChG,CAAA;;EAGF,MAAM,QAAQ,eAA8B;GAC1C,OAAO;IAAE,OAAO,SAAS,MAAM,OAAO,KAAI;IAAG,GAAG,iBAAgB;IAAG,QAAQ,QAAO;IAAE;IACrF;EAED,MAAM,QAAQ,eAAe;GAC3B,MAAM,EAAE,UAAU;GAClB,IAAI,OAAO,UAAU,YACnB,OAAO,OAAM;GAEf,OAAO;IACR;EAED,MAAM,mBAAmB,SAA0B;GACjD,OAAO,OAAO,KAAK,aAAa,aAAa,KAAK,UAAS,GAAI,KAAK;;EAGtE,SAAS,QAAQ;GACf,QAAQ,QAAQ;;EAGlB,IAAI,UAAU;EACd,SAAS,mBAAmB;GAC1B,UAAU;;EAGZ,SAAS,iBAAiB;GACxB,UAAU;GACV,OAAM;;EAGR,SAAS,qBAAqB;GAC5B,IAAI,SAAS;GACb,OAAM;;EAGR,QAAQ,kBAAkB,EAAE,KAAK,CAAA;;uBAlH/B,YAgBa,YAAA;IAhBD,MAAK;IAAU,QAAA;IAAQ,cAAW,OAAA,OAAA,OAAA,MAAA,WAAE,KAAI,UAAA;;2BAe7C,CAVG,QAAA,QAAA,gBAAA,WAAA,EAJR,mBAcK,MAAA;;KAbF,OAAK,eAAA,CAAG,MAAA,IAAA,CAAI,GAAG,MAAA,IAAA,CAAI,EAAE,MAAA,KAAI,CAAA,CAAA,CAAA;KACzB,OAAK,eAAE,MAAA,MAAK;cACT;KAAJ,KAAI;0BAIJ,mBAME,UAAA,MAAA,WALe,MAAA,QAAR,SAAI;yBADb,YAME,aAAA;MAJO;MACN,UAAU,gBAAgB,KAAI;MAC9B,cAAa;MACb,YAAW;;6CAPG,mBAAkB,CAAA,CAAA,GAAA,mBAAA,QAAA,KAAA,CAAA,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date-panel.js","names":[],"sources":["../../../src/components/date-panel/date-panel.vue"],"sourcesContent":["<template>\n <div :class=\"[cls.b, cls.m(props.size)]\">\n <template v-if=\"panelType === 'day'\">\n <DayHeader />\n <DayPanel />\n </template>\n\n <template v-else-if=\"panelType === 'year'\">\n <YearHeader />\n <YearPanel />\n </template>\n\n <template v-else-if=\"panelType === 'month'\">\n <MonthHeader />\n <MonthPanel />\n </template>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport type { DatePanelEmits, DatePanelProps } from '../../types'\nimport DayHeader from './headers/day.vue'\nimport MonthHeader from './headers/month.vue'\nimport YearHeader from './headers/year.vue'\nimport DayPanel from './panels/day.vue'\nimport MonthPanel from './panels/month.vue'\nimport YearPanel from './panels/year.vue'\nimport { usePanel } from './use-panel'\n\ndefineOptions({
|
|
1
|
+
{"version":3,"file":"date-panel.js","names":[],"sources":["../../../src/components/date-panel/date-panel.vue"],"sourcesContent":["<template>\n <div :class=\"[cls.b, cls.m(props.size)]\">\n <template v-if=\"panelType === 'day'\">\n <DayHeader />\n <DayPanel />\n </template>\n\n <template v-else-if=\"panelType === 'year'\">\n <YearHeader />\n <YearPanel />\n </template>\n\n <template v-else-if=\"panelType === 'month'\">\n <MonthHeader />\n <MonthPanel />\n </template>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport type { DatePanelEmits, DatePanelProps } from '../../types'\nimport DayHeader from './headers/day.vue'\nimport MonthHeader from './headers/month.vue'\nimport YearHeader from './headers/year.vue'\nimport DayPanel from './panels/day.vue'\nimport MonthPanel from './panels/month.vue'\nimport YearPanel from './panels/year.vue'\nimport { usePanel } from './use-panel'\n\ndefineOptions({ name: 'DatePanel' })\n\nconst props = withDefaults(defineProps<DatePanelProps>(), { size: 'default', type: 'date' })\n\nconst emit = defineEmits<DatePanelEmits>()\n\nconst { cls, panelType } = usePanel({ props, emit })\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;EA+BA,MAAM,QAAQ;EAId,MAAM,EAAE,KAAK,cAAc,SAAS;GAAE;GAAO,MAAA;GAAM,CAAA;;uBAlCjD,mBAeM,OAAA,EAfA,OAAK,eAAA,CAAG,MAAA,IAAA,CAAI,GAAG,MAAA,IAAA,CAAI,EAAE,MAAM,KAAI,CAAA,CAAA,EAAA,EAAA,CACnB,MAAA,UAAA,KAAS,SAAA,WAAA,EAAzB,mBAGW,UAAA,EAAA,KAAA,GAAA,EAAA,CAFT,YAAa,YAAA,EACb,YAAY,YAAA,CAAA,EAAA,GAAA,IAGO,MAAA,UAAA,KAAS,UAAA,WAAA,EAA9B,mBAGW,UAAA,EAAA,KAAA,GAAA,EAAA,CAFT,YAAc,YAAA,EACd,YAAa,YAAA,CAAA,EAAA,GAAA,IAGM,MAAA,UAAA,KAAS,WAAA,WAAA,EAA9B,mBAGW,UAAA,EAAA,KAAA,GAAA,EAAA,CAFT,YAAe,YAAA,EACf,YAAc,YAAA,CAAA,EAAA,GAAA,IAAA,mBAAA,QAAA,KAAA,CAAA,EAAA,EAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"day.js","names":[],"sources":["../../../../src/components/date-panel/headers/day.vue"],"sourcesContent":["<template>\n <div :class=\"cls.e('header')\">\n <div>\n <u-icon @click=\"toPrevYear\" title=\"上一年\">\n <DArrowLeft />\n </u-icon>\n <u-icon @click=\"toPrevMonth\" title=\"上个月\">\n <ArrowLeft />\n </u-icon>\n </div>\n\n <div>\n <span :class=\"cls.e('header-year')\" @click=\"panelType = 'year'\">\n {{ panelDate.year }}\n </span>\n <span :class=\"cls.e('header-month')\" @click=\"panelType = 'month'\">\n {{ panelDate.month }}月\n </span>\n </div>\n\n <div>\n <u-icon @click=\"toNextMonth\" title=\"下个月\">\n <ArrowRight />\n </u-icon>\n <u-icon @click=\"toNextYear\" title=\"下一年\">\n <DArrowRight />\n </u-icon>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ArrowLeft, ArrowRight, DArrowLeft, DArrowRight } from '@veltra/icons/normal'\nimport { inject } from 'vue'\n\nimport { UIcon } from '../../icon'\nimport { DatePanelDIKey } from '../di'\n\ndefineOptions({
|
|
1
|
+
{"version":3,"file":"day.js","names":[],"sources":["../../../../src/components/date-panel/headers/day.vue"],"sourcesContent":["<template>\n <div :class=\"cls.e('header')\">\n <div>\n <u-icon @click=\"toPrevYear\" title=\"上一年\">\n <DArrowLeft />\n </u-icon>\n <u-icon @click=\"toPrevMonth\" title=\"上个月\">\n <ArrowLeft />\n </u-icon>\n </div>\n\n <div>\n <span :class=\"cls.e('header-year')\" @click=\"panelType = 'year'\">\n {{ panelDate.year }}\n </span>\n <span :class=\"cls.e('header-month')\" @click=\"panelType = 'month'\">\n {{ panelDate.month }}月\n </span>\n </div>\n\n <div>\n <u-icon @click=\"toNextMonth\" title=\"下个月\">\n <ArrowRight />\n </u-icon>\n <u-icon @click=\"toNextYear\" title=\"下一年\">\n <DArrowRight />\n </u-icon>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ArrowLeft, ArrowRight, DArrowLeft, DArrowRight } from '@veltra/icons/normal'\nimport { inject } from 'vue'\n\nimport { UIcon } from '../../icon'\nimport { DatePanelDIKey } from '../di'\n\ndefineOptions({ name: 'DatePanelDayHeader' })\n\nconst { panelDate, panelType, cls, toPrevMonth, toNextMonth, toPrevYear, toNextYear } =\n inject(DatePanelDIKey)!\n</script>\n"],"mappings":";;;;;;;;;EAwCA,MAAM,EAAE,WAAW,WAAW,KAAK,aAAa,aAAa,YAAY,eACvE,OAAO,eAAc;;uBAxCrB,mBA2BM,OAAA,EA3BA,OAAK,eAAE,MAAA,IAAA,CAAI,EAAC,SAAA,CAAA,EAAA,EAAA;IAChB,mBAOM,OAAA,MAAA,CANJ,YAES,MAAA,YAAA,EAAA;KAFA,SAAO,MAAA,WAAA;KAAY,OAAM;;4BAClB,CAAd,YAAc,MAAA,WAAA,CAAA,CAAA,CAAA;;wBAEhB,YAES,MAAA,YAAA,EAAA;KAFA,SAAO,MAAA,YAAA;KAAa,OAAM;;4BACpB,CAAb,YAAa,MAAA,UAAA,CAAA,CAAA,CAAA;;;IAIjB,mBAOM,OAAA,MAAA,CANJ,mBAEO,QAAA;KAFA,OAAK,eAAE,MAAA,IAAA,CAAI,EAAC,cAAA,CAAA;KAAkB,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,UAAA,QAAS;uBAChD,MAAA,UAAA,CAAU,KAAI,EAAA,EAAA,EAEnB,mBAEO,QAAA;KAFA,OAAK,eAAE,MAAA,IAAA,CAAI,EAAC,eAAA,CAAA;KAAmB,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,UAAA,QAAS;uBACjD,MAAA,UAAA,CAAU,MAAK,GAAG,MACvB,EAAA,CAAA,CAAA;IAGF,mBAOM,OAAA,MAAA,CANJ,YAES,MAAA,YAAA,EAAA;KAFA,SAAO,MAAA,YAAA;KAAa,OAAM;;4BACnB,CAAd,YAAc,MAAA,WAAA,CAAA,CAAA,CAAA;;wBAEhB,YAES,MAAA,YAAA,EAAA;KAFA,SAAO,MAAA,WAAA;KAAY,OAAM;;4BACjB,CAAf,YAAe,MAAA,YAAA,CAAA,CAAA,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"month.js","names":[],"sources":["../../../../src/components/date-panel/headers/month.vue"],"sourcesContent":["<template>\n <div :class=\"cls.e('header')\">\n <u-icon @click=\"toPrevYear\" title=\"上一年\">\n <DArrowLeft />\n </u-icon>\n\n <span :class=\"cls.e('header-year')\" @click=\"panelType = 'year'\">\n {{ panelDate.year }}\n </span>\n\n <u-icon @click=\"toNextYear\" title=\"下一年\">\n <DArrowRight />\n </u-icon>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { DArrowLeft, DArrowRight } from '@veltra/icons'\nimport { inject } from 'vue'\n\nimport { UIcon } from '../../icon'\nimport { DatePanelDIKey } from '../di'\n\ndefineOptions({
|
|
1
|
+
{"version":3,"file":"month.js","names":[],"sources":["../../../../src/components/date-panel/headers/month.vue"],"sourcesContent":["<template>\n <div :class=\"cls.e('header')\">\n <u-icon @click=\"toPrevYear\" title=\"上一年\">\n <DArrowLeft />\n </u-icon>\n\n <span :class=\"cls.e('header-year')\" @click=\"panelType = 'year'\">\n {{ panelDate.year }}\n </span>\n\n <u-icon @click=\"toNextYear\" title=\"下一年\">\n <DArrowRight />\n </u-icon>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { DArrowLeft, DArrowRight } from '@veltra/icons'\nimport { inject } from 'vue'\n\nimport { UIcon } from '../../icon'\nimport { DatePanelDIKey } from '../di'\n\ndefineOptions({ name: 'DatePanelMonthHeader' })\n\nconst { panelDate, panelType, toPrevYear, toNextYear, cls } = inject(DatePanelDIKey)!\n</script>\n"],"mappings":";;;;;;;;;EAyBA,MAAM,EAAE,WAAW,WAAW,YAAY,YAAY,QAAQ,OAAO,eAAc;;uBAxBjF,mBAYM,OAAA,EAZA,OAAK,eAAE,MAAA,IAAA,CAAI,EAAC,SAAA,CAAA,EAAA,EAAA;IAChB,YAES,MAAA,YAAA,EAAA;KAFA,SAAO,MAAA,WAAA;KAAY,OAAM;;4BAClB,CAAd,YAAc,MAAA,WAAA,CAAA,CAAA,CAAA;;;IAGhB,mBAEO,QAAA;KAFA,OAAK,eAAE,MAAA,IAAA,CAAI,EAAC,cAAA,CAAA;KAAkB,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,UAAA,QAAS;uBAChD,MAAA,UAAA,CAAU,KAAI,EAAA,EAAA;IAGnB,YAES,MAAA,YAAA,EAAA;KAFA,SAAO,MAAA,WAAA;KAAY,OAAM;;4BACjB,CAAf,YAAe,MAAA,YAAA,CAAA,CAAA,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"year.js","names":[],"sources":["../../../../src/components/date-panel/headers/year.vue"],"sourcesContent":["<template>\n <div :class=\"cls.e('header')\">\n <u-icon @click=\"toPrevTenYears\" title=\"上个十年\">\n <DArrowLeft />\n </u-icon>\n\n <span> {{ startYear }} ~ {{ endYear }} </span>\n\n <u-icon @click=\"toNextTenYears\" title=\"下个十年\">\n <DArrowRight />\n </u-icon>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { DArrowLeft, DArrowRight } from '@veltra/icons/normal'\nimport { computed } from 'vue'\nimport { inject } from 'vue'\n\nimport { UIcon } from '../../icon'\nimport { DatePanelDIKey } from '../di'\n\ndefineOptions({
|
|
1
|
+
{"version":3,"file":"year.js","names":[],"sources":["../../../../src/components/date-panel/headers/year.vue"],"sourcesContent":["<template>\n <div :class=\"cls.e('header')\">\n <u-icon @click=\"toPrevTenYears\" title=\"上个十年\">\n <DArrowLeft />\n </u-icon>\n\n <span> {{ startYear }} ~ {{ endYear }} </span>\n\n <u-icon @click=\"toNextTenYears\" title=\"下个十年\">\n <DArrowRight />\n </u-icon>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { DArrowLeft, DArrowRight } from '@veltra/icons/normal'\nimport { computed } from 'vue'\nimport { inject } from 'vue'\n\nimport { UIcon } from '../../icon'\nimport { DatePanelDIKey } from '../di'\n\ndefineOptions({ name: 'DatePanelYearHeader' })\n\nconst { panelDate, toPrevTenYears, toNextTenYears, cls } = inject(DatePanelDIKey)!\n\nconst startYear = computed(() => {\n return panelDate.value.year - (panelDate.value.year % 10) + 1\n})\n\nconst endYear = computed(() => {\n return startYear.value + 9\n})\n</script>\n"],"mappings":";;;;;;;;;EAwBA,MAAM,EAAE,WAAW,gBAAgB,gBAAgB,QAAQ,OAAO,eAAc;EAEhF,MAAM,YAAY,eAAe;GAC/B,OAAO,UAAU,MAAM,OAAQ,UAAU,MAAM,OAAO,KAAM;IAC7D;EAED,MAAM,UAAU,eAAe;GAC7B,OAAO,UAAU,QAAQ;IAC1B;;uBA/BC,mBAUM,OAAA,EAVA,OAAK,eAAE,MAAA,IAAA,CAAI,EAAC,SAAA,CAAA,EAAA,EAAA;IAChB,YAES,MAAA,YAAA,EAAA;KAFA,SAAO,MAAA,eAAA;KAAgB,OAAM;;4BACtB,CAAd,YAAc,MAAA,WAAA,CAAA,CAAA,CAAA;;;IAGhB,mBAA8C,QAAA,MAAA,gBAApC,UAAA,MAAS,GAAG,QAAG,gBAAG,QAAA,MAAO,EAAA,EAAA;IAEnC,YAES,MAAA,YAAA,EAAA;KAFA,SAAO,MAAA,eAAA;KAAgB,OAAM;;4BACrB,CAAf,YAAe,MAAA,YAAA,CAAA,CAAA,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"day.js","names":[],"sources":["../../../../src/components/date-panel/panels/day.vue"],"sourcesContent":["<template>\n <ul :class=\"cls.e('week')\">\n <li :class=\"cls.e('week-day')\" v-for=\"weekDay of weekDays\">\n {{ weekDay }}\n </li>\n </ul>\n\n <ul :class=\"cls.e('days')\">\n <li\n v-for=\"day of days\"\n :title=\"day.isToday ? '今天' : ''\"\n :class=\"getDayCls(day)\"\n :key=\"day.date.timestamp\"\n @click=\"!day.disabled && handleDateSelect(day.date)\"\n @mouseenter=\"!day.disabled && handleDateRangeHover(day.date)\"\n >\n <span :class=\"cls.e('cell-value')\">\n {{ day.date.day }}\n </span>\n </li>\n </ul>\n</template>\n\n<script lang=\"ts\" setup>\nimport type { Dater } from '@cat-kit/core'\nimport { bem } from '@veltra/utils'\nimport { computed } from 'vue'\nimport { inject } from 'vue'\n\nimport type { CalendarDay } from '../../../types'\nimport { getMonthDays, weekDays } from '../../calendar/utils'\nimport { DatePanelDIKey } from '../di'\n\ndefineOptions({
|
|
1
|
+
{"version":3,"file":"day.js","names":[],"sources":["../../../../src/components/date-panel/panels/day.vue"],"sourcesContent":["<template>\n <ul :class=\"cls.e('week')\">\n <li :class=\"cls.e('week-day')\" v-for=\"weekDay of weekDays\">\n {{ weekDay }}\n </li>\n </ul>\n\n <ul :class=\"cls.e('days')\">\n <li\n v-for=\"day of days\"\n :title=\"day.isToday ? '今天' : ''\"\n :class=\"getDayCls(day)\"\n :key=\"day.date.timestamp\"\n @click=\"!day.disabled && handleDateSelect(day.date)\"\n @mouseenter=\"!day.disabled && handleDateRangeHover(day.date)\"\n >\n <span :class=\"cls.e('cell-value')\">\n {{ day.date.day }}\n </span>\n </li>\n </ul>\n</template>\n\n<script lang=\"ts\" setup>\nimport type { Dater } from '@cat-kit/core'\nimport { bem } from '@veltra/utils'\nimport { computed } from 'vue'\nimport { inject } from 'vue'\n\nimport type { CalendarDay } from '../../../types'\nimport { getMonthDays, weekDays } from '../../calendar/utils'\nimport { DatePanelDIKey } from '../di'\n\ndefineOptions({ name: 'DatePanelDay', inheritAttrs: false })\n\nconst { panelDate, rangeDate, panelProps, cls, handleDateSelect, handleDateRangeHover } =\n inject(DatePanelDIKey)!\n\nconst days = computed<CalendarDay[]>(() => {\n return getMonthDays(panelDate.value.timestamp, panelProps.disabledDate)\n})\n\nfunction getRangeCls(day: CalendarDay) {\n return [\n bem.is('in-range', didInRange(day.date)),\n bem.is('range-start', isRangeStart(day.date)),\n bem.is('range-end', isRangeEnd(day.date))\n ]\n}\n\nfunction getSingleCls(day: CalendarDay) {\n return [bem.is('selected', didSelected(day.date))]\n}\nfunction getDayCls(day: CalendarDay) {\n const ret = [\n cls.e('cell'),\n bem.is(day.type),\n bem.is('today', day.isToday === true),\n bem.is('disabled', day.disabled === true)\n ]\n if (panelProps.range) {\n return [...ret, ...getRangeCls(day)]\n }\n return [...ret, ...getSingleCls(day)]\n}\n\nconst fmtStr = 'yyyyMMdd'\n\nfunction didSelected(date: Dater) {\n if (!panelProps.date) return false\n return date.format(fmtStr) === panelProps.date.format(fmtStr)\n}\n\nfunction didInRange(date: Dater) {\n if (!rangeDate.value) return false\n const [start, end] = rangeDate.value\n return date.timestamp >= start.timestamp && date.timestamp <= end.timestamp\n}\n\nfunction isRangeStart(date: Dater) {\n if (!rangeDate.value) return false\n const [start] = rangeDate.value\n return date.format(fmtStr) === start.format(fmtStr)\n}\n\nfunction isRangeEnd(date: Dater) {\n if (!rangeDate.value) return false\n const [, end] = rangeDate.value\n return date.format(fmtStr) === end.format(fmtStr)\n}\n</script>\n"],"mappings":";;;;;;;;;;AAkEA,MAAM,SAAS;;;;;;EA/Bf,MAAM,EAAE,WAAW,WAAW,YAAY,KAAK,kBAAkB,yBAC/D,OAAO,eAAc;EAEvB,MAAM,OAAO,eAA8B;GACzC,OAAO,aAAa,UAAU,MAAM,WAAW,WAAW,aAAY;IACvE;EAED,SAAS,YAAY,KAAkB;GACrC,OAAO;IACL,IAAI,GAAG,YAAY,WAAW,IAAI,KAAK,CAAA;IACvC,IAAI,GAAG,eAAe,aAAa,IAAI,KAAK,CAAA;IAC5C,IAAI,GAAG,aAAa,WAAW,IAAI,KAAK,CAAA;IAC1C;;EAGF,SAAS,aAAa,KAAkB;GACtC,OAAO,CAAC,IAAI,GAAG,YAAY,YAAY,IAAI,KAAK,CAAC,CAAA;;EAEnD,SAAS,UAAU,KAAkB;GACnC,MAAM,MAAM;IACV,IAAI,EAAE,OAAM;IACZ,IAAI,GAAG,IAAI,KAAI;IACf,IAAI,GAAG,SAAS,IAAI,YAAY,KAAI;IACpC,IAAI,GAAG,YAAY,IAAI,aAAa,KAAI;IAC1C;GACA,IAAI,WAAW,OACb,OAAO,CAAC,GAAG,KAAK,GAAG,YAAY,IAAI,CAAA;GAErC,OAAO,CAAC,GAAG,KAAK,GAAG,aAAa,IAAI,CAAA;;EAKtC,SAAS,YAAY,MAAa;GAChC,IAAI,CAAC,WAAW,MAAM,OAAO;GAC7B,OAAO,KAAK,OAAO,OAAM,KAAM,WAAW,KAAK,OAAO,OAAM;;EAG9D,SAAS,WAAW,MAAa;GAC/B,IAAI,CAAC,UAAU,OAAO,OAAO;GAC7B,MAAM,CAAC,OAAO,OAAO,UAAU;GAC/B,OAAO,KAAK,aAAa,MAAM,aAAa,KAAK,aAAa,IAAI;;EAGpE,SAAS,aAAa,MAAa;GACjC,IAAI,CAAC,UAAU,OAAO,OAAO;GAC7B,MAAM,CAAC,SAAS,UAAU;GAC1B,OAAO,KAAK,OAAO,OAAM,KAAM,MAAM,OAAO,OAAM;;EAGpD,SAAS,WAAW,MAAa;GAC/B,IAAI,CAAC,UAAU,OAAO,OAAO;GAC7B,MAAM,GAAG,OAAO,UAAU;GAC1B,OAAO,KAAK,OAAO,OAAM,KAAM,IAAI,OAAO,OAAM;;;2DAvFhD,mBAIK,MAAA,EAJA,OAAK,eAAE,MAAA,IAAA,CAAI,EAAC,OAAA,CAAA,EAAA,EAAA,EAAA,UAAA,KAAA,EACf,mBAEK,UAAA,MAAA,WAF4C,MAAA,SAAA,GAAX,YAAO;wBAA7C,mBAEK,MAAA,EAFA,OAAK,eAAE,MAAA,IAAA,CAAI,EAAC,WAAA,CAAA,EAAA,EAAA,gBACZ,QAAO,EAAA,EAAA;mBAId,mBAaK,MAAA,EAbA,OAAK,eAAE,MAAA,IAAA,CAAI,EAAC,OAAA,CAAA,EAAA,EAAA,EAAA,UAAA,KAAA,EACf,mBAWK,UAAA,MAAA,WAVW,KAAA,QAAP,QAAG;wBADZ,mBAWK,MAAA;KATF,OAAO,IAAI,UAAO,OAAA;KAClB,OAAK,eAAE,UAAU,IAAG,CAAA;KACpB,KAAK,IAAI,KAAK;KACd,UAAK,WAAA,CAAG,IAAI,YAAY,MAAA,iBAAA,CAAiB,IAAI,KAAI;KACjD,eAAU,WAAA,CAAG,IAAI,YAAY,MAAA,qBAAA,CAAqB,IAAI,KAAI;QAE3D,mBAEO,QAAA,EAFA,OAAK,eAAE,MAAA,IAAA,CAAI,EAAC,aAAA,CAAA,EAAA,EAAA,gBACd,IAAI,KAAK,IAAG,EAAA,EAAA,CAAA,EAAA,IAAA,WAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"month.js","names":[],"sources":["../../../../src/components/date-panel/panels/month.vue"],"sourcesContent":["<template>\n <ul :class=\"cls.e('months')\">\n <li\n v-for=\"month of months\"\n :key=\"month.key\"\n :class=\"getMonthCls(month)\"\n @click=\"!month.disabled && handleDateSelect(month.date)\"\n @mouseenter=\"!month.disabled && handleDateRangeHover(month.date)\"\n >\n <span :class=\"cls.e('cell-value')\">{{ month.month }}月</span>\n </li>\n </ul>\n</template>\n\n<script lang=\"ts\" setup>\nimport type { Dater } from '@cat-kit/core'\nimport { bem } from '@veltra/utils'\nimport { computed } from 'vue'\nimport { inject } from 'vue'\n\nimport type { CalendarMonth } from '../../../types'\nimport { getYearMonths } from '../../calendar/utils'\nimport { DatePanelDIKey } from '../di'\n\ndefineOptions({
|
|
1
|
+
{"version":3,"file":"month.js","names":[],"sources":["../../../../src/components/date-panel/panels/month.vue"],"sourcesContent":["<template>\n <ul :class=\"cls.e('months')\">\n <li\n v-for=\"month of months\"\n :key=\"month.key\"\n :class=\"getMonthCls(month)\"\n @click=\"!month.disabled && handleDateSelect(month.date)\"\n @mouseenter=\"!month.disabled && handleDateRangeHover(month.date)\"\n >\n <span :class=\"cls.e('cell-value')\">{{ month.month }}月</span>\n </li>\n </ul>\n</template>\n\n<script lang=\"ts\" setup>\nimport type { Dater } from '@cat-kit/core'\nimport { bem } from '@veltra/utils'\nimport { computed } from 'vue'\nimport { inject } from 'vue'\n\nimport type { CalendarMonth } from '../../../types'\nimport { getYearMonths } from '../../calendar/utils'\nimport { DatePanelDIKey } from '../di'\n\ndefineOptions({ name: 'DatePanelMonth' })\n\nconst { cls, panelDate, rangeDate, panelProps, handleDateSelect, handleDateRangeHover } =\n inject(DatePanelDIKey)!\n\nconst months = computed(() => {\n return getYearMonths(panelDate.value.timestamp, panelProps.disabledDate)\n})\n\nfunction getRangeCls(month: CalendarMonth) {\n return [\n bem.is('in-range', didInRange(month.date)),\n bem.is('range-start', isRangeStart(month.date)),\n bem.is('range-end', isRangeEnd(month.date))\n ]\n}\n\nfunction getSingleCls(month: CalendarMonth) {\n return [bem.is('selected', didSelected(month.date))]\n}\n\nfunction getMonthCls(month: CalendarMonth) {\n const ret = [cls.e('cell'), bem.is('disabled', month.disabled === true)]\n if (panelProps.range) {\n return [...ret, ...getRangeCls(month)]\n }\n return [...ret, ...getSingleCls(month)]\n}\n\nconst fmtStr = 'yyyyMM'\n\nfunction didSelected(date: Dater) {\n if (!panelProps.date) return false\n return date.format(fmtStr) === panelProps.date.format(fmtStr)\n}\n\nfunction didInRange(date: Dater) {\n if (!rangeDate.value) return false\n const [start, end] = rangeDate.value\n return date.timestamp >= start.timestamp && date.timestamp <= end.timestamp\n}\n\nfunction isRangeStart(date: Dater) {\n if (!rangeDate.value) return false\n const [start] = rangeDate.value\n return date.format(fmtStr) === start.format(fmtStr)\n}\n\nfunction isRangeEnd(date: Dater) {\n if (!rangeDate.value) return false\n const [, end] = rangeDate.value\n return date.format(fmtStr) === end.format(fmtStr)\n}\n</script>\n"],"mappings":";;;;;;AAqDA,MAAM,SAAS;;;;;EA3Bf,MAAM,EAAE,KAAK,WAAW,WAAW,YAAY,kBAAkB,yBAC/D,OAAO,eAAc;EAEvB,MAAM,SAAS,eAAe;GAC5B,OAAO,cAAc,UAAU,MAAM,WAAW,WAAW,aAAY;IACxE;EAED,SAAS,YAAY,OAAsB;GACzC,OAAO;IACL,IAAI,GAAG,YAAY,WAAW,MAAM,KAAK,CAAA;IACzC,IAAI,GAAG,eAAe,aAAa,MAAM,KAAK,CAAA;IAC9C,IAAI,GAAG,aAAa,WAAW,MAAM,KAAK,CAAA;IAC5C;;EAGF,SAAS,aAAa,OAAsB;GAC1C,OAAO,CAAC,IAAI,GAAG,YAAY,YAAY,MAAM,KAAK,CAAC,CAAA;;EAGrD,SAAS,YAAY,OAAsB;GACzC,MAAM,MAAM,CAAC,IAAI,EAAE,OAAM,EAAG,IAAI,GAAG,YAAY,MAAM,aAAa,KAAK,CAAA;GACvE,IAAI,WAAW,OACb,OAAO,CAAC,GAAG,KAAK,GAAG,YAAY,MAAM,CAAA;GAEvC,OAAO,CAAC,GAAG,KAAK,GAAG,aAAa,MAAM,CAAA;;EAKxC,SAAS,YAAY,MAAa;GAChC,IAAI,CAAC,WAAW,MAAM,OAAO;GAC7B,OAAO,KAAK,OAAO,OAAM,KAAM,WAAW,KAAK,OAAO,OAAM;;EAG9D,SAAS,WAAW,MAAa;GAC/B,IAAI,CAAC,UAAU,OAAO,OAAO;GAC7B,MAAM,CAAC,OAAO,OAAO,UAAU;GAC/B,OAAO,KAAK,aAAa,MAAM,aAAa,KAAK,aAAa,IAAI;;EAGpE,SAAS,aAAa,MAAa;GACjC,IAAI,CAAC,UAAU,OAAO,OAAO;GAC7B,MAAM,CAAC,SAAS,UAAU;GAC1B,OAAO,KAAK,OAAO,OAAM,KAAM,MAAM,OAAO,OAAM;;EAGpD,SAAS,WAAW,MAAa;GAC/B,IAAI,CAAC,UAAU,OAAO,OAAO;GAC7B,MAAM,GAAG,OAAO,UAAU;GAC1B,OAAO,KAAK,OAAO,OAAM,KAAM,IAAI,OAAO,OAAM;;;uBA1EhD,mBAUK,MAAA,EAVA,OAAK,eAAE,MAAA,IAAA,CAAI,EAAC,SAAA,CAAA,EAAA,EAAA,EAAA,UAAA,KAAA,EACf,mBAQK,UAAA,MAAA,WAPa,OAAA,QAAT,UAAK;wBADd,mBAQK,MAAA;KANF,KAAK,MAAM;KACX,OAAK,eAAE,YAAY,MAAK,CAAA;KACxB,UAAK,WAAA,CAAG,MAAM,YAAY,MAAA,iBAAA,CAAiB,MAAM,KAAI;KACrD,eAAU,WAAA,CAAG,MAAM,YAAY,MAAA,qBAAA,CAAqB,MAAM,KAAI;QAE/D,mBAA4D,QAAA,EAArD,OAAK,eAAE,MAAA,IAAA,CAAI,EAAC,aAAA,CAAA,EAAA,EAAA,gBAAmB,MAAM,MAAK,GAAG,KAAC,EAAA,CAAA,EAAA,IAAA,WAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"year.js","names":[],"sources":["../../../../src/components/date-panel/panels/year.vue"],"sourcesContent":["<template>\n <ul :class=\"cls.e('years')\">\n <li\n v-for=\"year of years\"\n :key=\"year.year\"\n :class=\"getYearCls(year)\"\n @click=\"!year.disabled && handleDateSelect(year.date)\"\n @mouseenter=\"!year.disabled && handleDateRangeHover(year.date)\"\n >\n <span :class=\"cls.e('cell-value')\">{{ year.year }}</span>\n </li>\n </ul>\n</template>\n\n<script lang=\"ts\" setup>\nimport type { Dater } from '@cat-kit/core'\nimport { bem } from '@veltra/utils'\nimport { computed } from 'vue'\nimport { inject } from 'vue'\n\nimport type { CalendarYear } from '../../../types'\nimport { getTenYears } from '../../calendar/utils'\nimport { DatePanelDIKey } from '../di'\n\ndefineOptions({
|
|
1
|
+
{"version":3,"file":"year.js","names":[],"sources":["../../../../src/components/date-panel/panels/year.vue"],"sourcesContent":["<template>\n <ul :class=\"cls.e('years')\">\n <li\n v-for=\"year of years\"\n :key=\"year.year\"\n :class=\"getYearCls(year)\"\n @click=\"!year.disabled && handleDateSelect(year.date)\"\n @mouseenter=\"!year.disabled && handleDateRangeHover(year.date)\"\n >\n <span :class=\"cls.e('cell-value')\">{{ year.year }}</span>\n </li>\n </ul>\n</template>\n\n<script lang=\"ts\" setup>\nimport type { Dater } from '@cat-kit/core'\nimport { bem } from '@veltra/utils'\nimport { computed } from 'vue'\nimport { inject } from 'vue'\n\nimport type { CalendarYear } from '../../../types'\nimport { getTenYears } from '../../calendar/utils'\nimport { DatePanelDIKey } from '../di'\n\ndefineOptions({ name: 'DatePanelYear' })\n\nconst { panelDate, rangeDate, panelProps, cls, handleDateSelect, handleDateRangeHover } =\n inject(DatePanelDIKey)!\n\nconst years = computed(() => {\n return getTenYears(panelDate.value.timestamp, panelProps.disabledDate)\n})\n\nfunction getRangeCls(year: CalendarYear) {\n return [\n bem.is('range', didInRange(year.date)),\n bem.is('range-start', isRangeStart(year.date)),\n bem.is('range-end', isRangeEnd(year.date))\n ]\n}\n\nfunction getSingleCls(year: CalendarYear) {\n return [bem.is('selected', didSelected(year.date))]\n}\n\nfunction getYearCls(year: CalendarYear) {\n const ret = [cls.e('cell'), bem.is('disabled', year.disabled === true)]\n if (panelProps.range) {\n return [...ret, ...getRangeCls(year)]\n }\n return [...ret, ...getSingleCls(year)]\n}\n\nfunction didSelected(date: Dater) {\n if (!panelProps.date) return false\n return date.year === panelProps.date.year\n}\n\nfunction didInRange(date: Dater) {\n if (!rangeDate.value) return false\n const [start, end] = rangeDate.value\n return date.timestamp >= start.timestamp && date.timestamp <= end.timestamp\n}\n\nfunction isRangeStart(date: Dater) {\n if (!rangeDate.value) return false\n const [start] = rangeDate.value\n return date.year === start.year\n}\n\nfunction isRangeEnd(date: Dater) {\n if (!rangeDate.value) return false\n const [, end] = rangeDate.value\n return date.year === end.year\n}\n</script>\n"],"mappings":";;;;;;;;;;EA0BA,MAAM,EAAE,WAAW,WAAW,YAAY,KAAK,kBAAkB,yBAC/D,OAAO,eAAc;EAEvB,MAAM,QAAQ,eAAe;GAC3B,OAAO,YAAY,UAAU,MAAM,WAAW,WAAW,aAAY;IACtE;EAED,SAAS,YAAY,MAAoB;GACvC,OAAO;IACL,IAAI,GAAG,SAAS,WAAW,KAAK,KAAK,CAAA;IACrC,IAAI,GAAG,eAAe,aAAa,KAAK,KAAK,CAAA;IAC7C,IAAI,GAAG,aAAa,WAAW,KAAK,KAAK,CAAA;IAC3C;;EAGF,SAAS,aAAa,MAAoB;GACxC,OAAO,CAAC,IAAI,GAAG,YAAY,YAAY,KAAK,KAAK,CAAC,CAAA;;EAGpD,SAAS,WAAW,MAAoB;GACtC,MAAM,MAAM,CAAC,IAAI,EAAE,OAAM,EAAG,IAAI,GAAG,YAAY,KAAK,aAAa,KAAK,CAAA;GACtE,IAAI,WAAW,OACb,OAAO,CAAC,GAAG,KAAK,GAAG,YAAY,KAAK,CAAA;GAEtC,OAAO,CAAC,GAAG,KAAK,GAAG,aAAa,KAAK,CAAA;;EAGvC,SAAS,YAAY,MAAa;GAChC,IAAI,CAAC,WAAW,MAAM,OAAO;GAC7B,OAAO,KAAK,SAAS,WAAW,KAAK;;EAGvC,SAAS,WAAW,MAAa;GAC/B,IAAI,CAAC,UAAU,OAAO,OAAO;GAC7B,MAAM,CAAC,OAAO,OAAO,UAAU;GAC/B,OAAO,KAAK,aAAa,MAAM,aAAa,KAAK,aAAa,IAAI;;EAGpE,SAAS,aAAa,MAAa;GACjC,IAAI,CAAC,UAAU,OAAO,OAAO;GAC7B,MAAM,CAAC,SAAS,UAAU;GAC1B,OAAO,KAAK,SAAS,MAAM;;EAG7B,SAAS,WAAW,MAAa;GAC/B,IAAI,CAAC,UAAU,OAAO,OAAO;GAC7B,MAAM,GAAG,OAAO,UAAU;GAC1B,OAAO,KAAK,SAAS,IAAI;;;uBAxEzB,mBAUK,MAAA,EAVA,OAAK,eAAE,MAAA,IAAA,CAAI,EAAC,QAAA,CAAA,EAAA,EAAA,EAAA,UAAA,KAAA,EACf,mBAQK,UAAA,MAAA,WAPY,MAAA,QAAR,SAAI;wBADb,mBAQK,MAAA;KANF,KAAK,KAAK;KACV,OAAK,eAAE,WAAW,KAAI,CAAA;KACtB,UAAK,WAAA,CAAG,KAAK,YAAY,MAAA,iBAAA,CAAiB,KAAK,KAAI;KACnD,eAAU,WAAA,CAAG,KAAK,YAAY,MAAA,qBAAA,CAAqB,KAAK,KAAI;QAE7D,mBAAyD,QAAA,EAAlD,OAAK,eAAE,MAAA,IAAA,CAAI,EAAC,aAAA,CAAA,EAAA,EAAA,gBAAmB,KAAK,KAAI,EAAA,EAAA,CAAA,EAAA,IAAA,WAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date-picker.js","names":[],"sources":["../../../src/components/date-picker/date-picker.vue"],"sourcesContent":["<template>\n <u-dropdown\n :class=\"className\"\n trigger=\"click\"\n width=\"auto\"\n ref=\"dropdownRef\"\n @update:visible=\"\"\n :disabled=\"disabled\"\n v-if=\"!readonly\"\n >\n <template #trigger>\n <u-input\n :size=\"size\"\n native-readonly\n :clearable=\"clearable\"\n :placeholder=\"placeholder\"\n :model-value=\"displayedValue\"\n :disabled=\"disabled\"\n @clear=\"handleClear\"\n >\n <template #suffix>\n <u-icon :class=\"cls.e('icon')\"><Calendar /></u-icon>\n </template>\n </u-input>\n </template>\n\n <template #content>\n <UDatePanel :size :type :disabled-date :date=\"currentDate\" @select:date=\"handleSelectDate\" />\n </template>\n </u-dropdown>\n\n <template v-else>\n {{ displayedValue || FORM_EMPTY_CONTENT }}\n </template>\n</template>\n\n<script lang=\"ts\" setup>\nimport { date, type Dater } from '@cat-kit/core'\nimport { useFormFallbackProps, useUserAction } from '@veltra/compositions'\nimport { Calendar } from '@veltra/icons/normal'\nimport { bem, FORM_EMPTY_CONTENT } from '@veltra/utils'\nimport { injectFormContext } from '@veltra/utils'\nimport { computed, shallowRef, watch } from 'vue'\n\nimport type { DatePickerEmits, DatePickerProps } from '../../types'\nimport type { DropdownExposed } from '../../types'\nimport { UDatePanel } from '../date-panel'\nimport { UDropdown } from '../dropdown'\nimport { UIcon } from '../icon'\nimport { UInput } from '../input'\n\ndefineOptions({
|
|
1
|
+
{"version":3,"file":"date-picker.js","names":[],"sources":["../../../src/components/date-picker/date-picker.vue"],"sourcesContent":["<template>\n <u-dropdown\n :class=\"className\"\n trigger=\"click\"\n width=\"auto\"\n ref=\"dropdownRef\"\n @update:visible=\"\"\n :disabled=\"disabled\"\n v-if=\"!readonly\"\n >\n <template #trigger>\n <u-input\n :size=\"size\"\n native-readonly\n :clearable=\"clearable\"\n :placeholder=\"placeholder\"\n :model-value=\"displayedValue\"\n :disabled=\"disabled\"\n @clear=\"handleClear\"\n >\n <template #suffix>\n <u-icon :class=\"cls.e('icon')\"><Calendar /></u-icon>\n </template>\n </u-input>\n </template>\n\n <template #content>\n <UDatePanel :size :type :disabled-date :date=\"currentDate\" @select:date=\"handleSelectDate\" />\n </template>\n </u-dropdown>\n\n <template v-else>\n {{ displayedValue || FORM_EMPTY_CONTENT }}\n </template>\n</template>\n\n<script lang=\"ts\" setup>\nimport { date, type Dater } from '@cat-kit/core'\nimport { useFormFallbackProps, useUserAction } from '@veltra/compositions'\nimport { Calendar } from '@veltra/icons/normal'\nimport { bem, FORM_EMPTY_CONTENT } from '@veltra/utils'\nimport { injectFormContext } from '@veltra/utils'\nimport { computed, shallowRef, watch } from 'vue'\n\nimport type { DatePickerEmits, DatePickerProps } from '../../types'\nimport type { DropdownExposed } from '../../types'\nimport { UDatePanel } from '../date-panel'\nimport { UDropdown } from '../dropdown'\nimport { UIcon } from '../icon'\nimport { UInput } from '../input'\n\ndefineOptions({ name: 'DatePicker' })\n\nconst props = withDefaults(defineProps<DatePickerProps>(), {\n placeholder: '选择日期',\n type: 'date',\n disabled: undefined,\n readonly: undefined,\n clearable: true\n})\n\nconst emit = defineEmits<DatePickerEmits>()\n\nconst cls = bem('date-picker')\n\nconst { formProps } = injectFormContext()\n\nconst { size, disabled, readonly } = useFormFallbackProps([formProps ?? {}, props], {\n size: 'default',\n disabled: false,\n readonly: false\n})\n\nconst className = computed(() => {\n return [cls.b, cls.m(size.value)]\n})\n\nconst dropdownRef = shallowRef<DropdownExposed>()\n\nconst formatStr = computed(() => {\n const { format, type } = props\n if (format) return format\n if (type === 'date') return 'yyyy-MM-dd'\n if (type === 'month') return 'yyyy-MM'\n if (type === 'year') return 'yyyy'\n return 'yyyy-MM-dd'\n})\n\nconst currentDate = shallowRef<Dater>()\n\nconst { userAction, isUserActive } = useUserAction()\n\nwatch(\n () => props.modelValue,\n (modelValue) => {\n if (isUserActive()) return\n currentDate.value = modelValue ? date(modelValue) : undefined\n },\n { immediate: true }\n)\n\nconst displayedValue = computed(() => {\n return currentDate.value?.format(formatStr.value) ?? ''\n})\n\nconst commitSelectedDate = userAction((date: Dater) => {\n currentDate.value = date\n emit('update:modelValue', date.format(formatStr.value))\n})\n\nasync function handleSelectDate(date: Dater) {\n await commitSelectedDate(date)\n dropdownRef.value?.close()\n}\n\nfunction handleClear() {\n currentDate.value = undefined\n emit('update:modelValue', undefined)\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqDA,MAAM,QAAQ;EAQd,MAAM,OAAO;EAEb,MAAM,MAAM,IAAI,cAAa;EAE7B,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,CAAC,IAAI,GAAG,IAAI,EAAE,KAAK,MAAM,CAAA;IACjC;EAED,MAAM,cAAc,YAA4B;EAEhD,MAAM,YAAY,eAAe;GAC/B,MAAM,EAAE,QAAQ,SAAS;GACzB,IAAI,QAAQ,OAAO;GACnB,IAAI,SAAS,QAAQ,OAAO;GAC5B,IAAI,SAAS,SAAS,OAAO;GAC7B,IAAI,SAAS,QAAQ,OAAO;GAC5B,OAAO;IACR;EAED,MAAM,cAAc,YAAkB;EAEtC,MAAM,EAAE,YAAY,iBAAiB,eAAc;EAEnD,YACQ,MAAM,aACX,eAAe;GACd,IAAI,cAAa,EAAG;GACpB,YAAY,QAAQ,aAAa,KAAK,WAAU,GAAI,KAAA;KAEtD,EAAE,WAAW,MACf,CAAA;EAEA,MAAM,iBAAiB,eAAe;GACpC,OAAO,YAAY,OAAO,OAAO,UAAU,MAAK,IAAK;IACtD;EAED,MAAM,qBAAqB,YAAY,SAAgB;GACrD,YAAY,QAAQ;GACpB,KAAK,qBAAqB,KAAK,OAAO,UAAU,MAAM,CAAA;IACvD;EAED,eAAe,iBAAiB,MAAa;GAC3C,MAAM,mBAAmB,KAAI;GAC7B,YAAY,OAAO,OAAM;;EAG3B,SAAS,cAAc;GACrB,YAAY,QAAQ,KAAA;GACpB,KAAK,qBAAqB,KAAA,EAAS;;;WA7G1B,MAAA,SAAA,IAAA,WAAA,EAPT,YA4Ba,MAAA,YAAA,EAAA;;IA3BV,OAAK,eAAE,UAAA,MAAS;IACjB,SAAQ;IACR,OAAM;aACF;IAAJ,KAAI;IACH,oBAAc,OAAA,OAAA,OAAA,WAAf;IACC,UAAU,MAAA,SAAA;;IAGA,SAAO,cAaN,CAZV,YAYU,MAAA,cAAA,EAAA;KAXP,MAAM,MAAA,KAAA;KACP,mBAAA;KACC,WAAW,QAAA;KACX,aAAa,QAAA;KACb,eAAa,eAAA;KACb,UAAU,MAAA,SAAA;KACV,SAAO;;KAEG,QAAM,cACqC,CAApD,YAAoD,MAAA,YAAA,EAAA,EAA3C,OAAK,eAAE,MAAA,IAAA,CAAI,EAAC,OAAA,CAAA,EAAA,EAAA;6BAAsB,CAAZ,YAAY,MAAA,SAAA,CAAA,CAAA,CAAA;;;;;;;;;;;IAKtC,SAAO,cAC6E,CAA7F,YAA6F,MAAA,YAAA,EAAA;KAAhF,MAAA,MAAA,KAAA;KAAM,MAAA,QAAA;KAAM,iBAAA,QAAA;KAAe,MAAM,YAAA;KAAc,iBAAa;;;;;;;;iDAI7E,mBAEW,UAAA,EAAA,KAAA,GAAA,EAAA,CAAA,gBAAA,gBADN,eAAA,SAAkB,MAAA,mBAAkB,CAAA,EAAA,EAAA,CAAA,EAAA,GAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date-range-picker.js","names":[],"sources":["../../../src/components/date-range-picker/date-range-picker.vue"],"sourcesContent":["<template>\n <u-dropdown\n :class=\"className\"\n trigger=\"click\"\n :content-class=\"[cls.e('panel'), cls.em('panel', size)]\"\n width=\"auto\"\n ref=\"dropdownRef\"\n :disabled=\"disabled\"\n @mouseenter.native=\"hovered = true\"\n @mouseleave.native=\"hovered = false\"\n v-if=\"!readonly\"\n >\n <template #trigger>\n <input\n type=\"text\"\n :class=\"cls.e('input')\"\n :value=\"displayedOfStart\"\n :placeholder=\"placeholder[0]\"\n readonly\n />\n <span :class=\"cls.e('separator')\">至</span>\n <input\n type=\"text\"\n :class=\"cls.e('input')\"\n :value=\"displayedOfEnd\"\n :placeholder=\"placeholder[1]\"\n readonly\n />\n\n <Transition name=\"zoom-in\" mode=\"out-in\">\n <UIcon\n v-if=\"clearable && modelValue && hovered && !disabled\"\n :class=\"[cls.e('icon'), cls.e('clear')]\"\n title=\"清除\"\n @click.stop=\"handleClear\"\n >\n <Close />\n </UIcon>\n\n <u-icon :class=\"cls.e('icon')\" v-else><Calendar /></u-icon>\n </Transition>\n </template>\n\n <template #content>\n <UDatePanel\n range\n :type\n :disabled-date\n :size\n :range-date=\"currentRangeDate\"\n @select:range-date=\"handleSelect\"\n />\n </template>\n </u-dropdown>\n\n <template v-else>\n {{ displayedOfStart || FORM_EMPTY_CONTENT }} 至\n {{ displayedOfEnd || FORM_EMPTY_CONTENT }}\n </template>\n</template>\n\n<script lang=\"ts\" setup>\nimport { date, type Dater } from '@cat-kit/core'\nimport { useFormFallbackProps, useUserAction } from '@veltra/compositions'\nimport { Calendar, Close } from '@veltra/icons/normal'\nimport { bem, FORM_EMPTY_CONTENT } from '@veltra/utils'\nimport { injectFormContext } from '@veltra/utils'\nimport { computed, shallowRef, watch } from 'vue'\n\nimport type { DateRangePickerEmits, DateRangePickerProps, DropdownExposed } from '../../types'\nimport { UDatePanel } from '../date-panel'\nimport { UDropdown } from '../dropdown'\nimport { UIcon } from '../icon'\n\ndefineOptions({
|
|
1
|
+
{"version":3,"file":"date-range-picker.js","names":[],"sources":["../../../src/components/date-range-picker/date-range-picker.vue"],"sourcesContent":["<template>\n <u-dropdown\n :class=\"className\"\n trigger=\"click\"\n :content-class=\"[cls.e('panel'), cls.em('panel', size)]\"\n width=\"auto\"\n ref=\"dropdownRef\"\n :disabled=\"disabled\"\n @mouseenter.native=\"hovered = true\"\n @mouseleave.native=\"hovered = false\"\n v-if=\"!readonly\"\n >\n <template #trigger>\n <input\n type=\"text\"\n :class=\"cls.e('input')\"\n :value=\"displayedOfStart\"\n :placeholder=\"placeholder[0]\"\n readonly\n />\n <span :class=\"cls.e('separator')\">至</span>\n <input\n type=\"text\"\n :class=\"cls.e('input')\"\n :value=\"displayedOfEnd\"\n :placeholder=\"placeholder[1]\"\n readonly\n />\n\n <Transition name=\"zoom-in\" mode=\"out-in\">\n <UIcon\n v-if=\"clearable && modelValue && hovered && !disabled\"\n :class=\"[cls.e('icon'), cls.e('clear')]\"\n title=\"清除\"\n @click.stop=\"handleClear\"\n >\n <Close />\n </UIcon>\n\n <u-icon :class=\"cls.e('icon')\" v-else><Calendar /></u-icon>\n </Transition>\n </template>\n\n <template #content>\n <UDatePanel\n range\n :type\n :disabled-date\n :size\n :range-date=\"currentRangeDate\"\n @select:range-date=\"handleSelect\"\n />\n </template>\n </u-dropdown>\n\n <template v-else>\n {{ displayedOfStart || FORM_EMPTY_CONTENT }} 至\n {{ displayedOfEnd || FORM_EMPTY_CONTENT }}\n </template>\n</template>\n\n<script lang=\"ts\" setup>\nimport { date, type Dater } from '@cat-kit/core'\nimport { useFormFallbackProps, useUserAction } from '@veltra/compositions'\nimport { Calendar, Close } from '@veltra/icons/normal'\nimport { bem, FORM_EMPTY_CONTENT } from '@veltra/utils'\nimport { injectFormContext } from '@veltra/utils'\nimport { computed, shallowRef, watch } from 'vue'\n\nimport type { DateRangePickerEmits, DateRangePickerProps, DropdownExposed } from '../../types'\nimport { UDatePanel } from '../date-panel'\nimport { UDropdown } from '../dropdown'\nimport { UIcon } from '../icon'\n\ndefineOptions({ name: 'DateRangePicker' })\n\nconst props = withDefaults(defineProps<DateRangePickerProps>(), {\n placeholder: () => ['起始日期', '结束日期'],\n type: 'date',\n disabled: undefined,\n readonly: undefined,\n clearable: true\n})\n\nconst emit = defineEmits<DateRangePickerEmits>()\n\nconst cls = bem('date-range-picker')\n\nconst className = computed(() => {\n return [cls.b, cls.m(size.value), bem.is('disabled', disabled.value)]\n})\n\nconst { formProps } = injectFormContext()\n\nconst { size, disabled, readonly } = useFormFallbackProps([formProps ?? {}, props], {\n size: 'default',\n disabled: false,\n readonly: false\n})\n\nconst dropdownRef = shallowRef<DropdownExposed>()\n\nconst { userAction, isUserActive } = useUserAction()\n\nconst currentRangeDate = shallowRef<[Dater, Dater]>()\n\nconst displayedOfStart = computed(() => {\n return props.modelValue?.[0]\n})\n\nconst displayedOfEnd = computed(() => {\n return props.modelValue?.[1]\n})\n\nconst formatStr = computed(() => {\n const { format, type } = props\n if (format) return format\n if (type === 'date') return 'yyyy-MM-dd'\n if (type === 'month') return 'yyyy-MM'\n if (type === 'year') return 'yyyy'\n return 'yyyy-MM-dd'\n})\n\nwatch(\n () => props.modelValue,\n (val) => {\n if (isUserActive()) return\n if (val?.length === 2) {\n currentRangeDate.value = [date(val[0]), date(val[1])]\n }\n },\n { immediate: true }\n)\n\nconst commitSelectedRange = userAction((rangeDate: [Dater, Dater] | undefined) => {\n currentRangeDate.value = rangeDate\n emit('update:modelValue', rangeDate?.map((d) => d.format(formatStr.value)) as [string, string])\n})\n\nasync function handleSelect(rangeDate: [Dater, Dater] | undefined) {\n await commitSelectedRange(rangeDate)\n dropdownRef.value?.close()\n}\n\nconst hovered = shallowRef(false)\n\nfunction handleClear() {\n currentRangeDate.value = undefined\n emit('update:modelValue', undefined)\n}\n</script>\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dialog.js","names":["$attrs","$slots"],"sources":["../../../src/components/dialog/dialog.vue"],"sourcesContent":["<template>\n <Teleport to=\"body\">\n <transition name=\"fade\" @after-leave=\"emit('closed')\" @enter=\"onOverlayEnter\">\n <div\n v-if=\"overlayVisible || opened\"\n v-show=\"overlayVisible\"\n :class=\"[cls.e('overlay'), bem.is('modal', modal)]\"\n ref=\"overlayRef\"\n @mousedown=\"modal && close()\"\n @keyup.esc=\"close\"\n tabindex=\"0\"\n >\n <transition name=\"spring\" @after-leave=\"onAfterDialogLeave\">\n <div\n v-if=\"dialogVisible\"\n v-bind=\"$attrs\"\n :class=\"className\"\n ref=\"dialogRef\"\n @mousedown.stop=\"handleIncreaseZIndex\"\n >\n <section :class=\"headerCls\" ref=\"headerRef\" @transitionend.stop @transitioncancel.stop>\n <div :class=\"cls.e('title')\" @mousedown.stop>\n <slot name=\"header\">\n {{ header || title }}\n </slot>\n </div>\n\n <div :class=\"cls.e('buttons')\" @mousedown.stop>\n <u-icon\n v-if=\"maximized\"\n :class=\"cls.e('btn-recover')\"\n @click=\"toggleMaximize(false)\"\n title=\"还原\"\n >\n <Recover />\n </u-icon>\n <u-icon\n v-else\n :class=\"cls.e('btn-maximize')\"\n @click=\"toggleMaximize(true)\"\n title=\"最大化\"\n >\n <Maximum />\n </u-icon>\n <u-icon :class=\"cls.e('btn-close')\" @click=\"close\" title=\"关闭\">\n <Close />\n </u-icon>\n </div>\n </section>\n\n <u-scroll\n tag=\"section\"\n :class=\"cls.e('body')\"\n ref=\"bodyRef\"\n :content-style=\"{ height: maximized ? '100%' : undefined }\"\n @transitionend.stop\n @transitioncancel.stop\n >\n <slot v-bind=\"{ maximized }\" />\n </u-scroll>\n\n <section ref=\"footerRef\" :class=\"footerCls\" v-if=\"$slots.footer\">\n <slot name=\"footer\" v-bind=\"{ close }\" />\n </section>\n </div>\n </transition>\n </div>\n </transition>\n </Teleport>\n\n <!-- 触发 -->\n <UNodeRender @click=\"visible = !visible\" :content=\"getTriggerNode()\" ref=\"triggerRef\" />\n</template>\n\n<script lang=\"ts\" setup>\nimport { useDrag, useFallbackProps } from '@veltra/compositions'\nimport { Close, Maximum, Recover } from '@veltra/icons/normal'\nimport { bem, extractNormalVNodes, setStyles, zIndex } from '@veltra/utils'\nimport { shallowRef, watch, computed, provide, nextTick } from 'vue'\n\nimport type { DialogProps, DialogEmits, DialogExposed, ComponentSize } from '../../types'\nimport type { ScrollExposed } from '../../types'\nimport { UIcon } from '../icon'\nimport { UNodeRender } from '../node-render'\nimport { UScroll } from '../scroll'\nimport { DialogDIKey } from './di'\nimport { useMaximum } from './use-maximum'\n\ndefineOptions({\n name: 'Dialog',\n inheritAttrs: false\n})\n\nconst props = withDefaults(defineProps<DialogProps>(), {\n modal: true,\n modelValue: true,\n autoScroll: true\n})\nconst emit = defineEmits<DialogEmits>()\n\nconst slots = defineSlots<{\n footer?: (props: { close: () => void }) => any\n trigger?: () => any\n header?: () => any\n default?: (props: {\n /** 弹框是否最大化了 */\n maximized: boolean\n }) => any\n}>()\n\nconst cls = bem('dialog')\nconst headerCls = [cls.e('header')]\nconst footerCls = [cls.e('footer')]\n\nconst { size } = useFallbackProps([props], { size: 'default' as ComponentSize })\n\nconst overlayRef = shallowRef<HTMLDivElement>()\n\n/** 弹框模板引用 */\nconst dialogRef = shallowRef<HTMLDivElement>()\n\n/** 弹框头部模板引用 */\nconst headerRef = shallowRef<HTMLDivElement>()\n\n/** 弹框body模板引用 */\nconst bodyRef = shallowRef<ScrollExposed>()\n\n/** 弹框footer模板引用 */\nconst footerRef = shallowRef<HTMLDivElement>()\n\nconst visible = defineModel<boolean>({\n default: false\n})\n\nconst overlayVisible = shallowRef(false)\nconst dialogVisible = shallowRef(false)\n\nwatch(visible, (v) => {\n if (v) {\n overlayVisible.value = true\n } else {\n dialogVisible.value = false\n }\n})\n\nfunction getTriggerNode() {\n const nodes = slots.trigger?.()\n if (!nodes?.length) return null\n\n const node = extractNormalVNodes(nodes)[0]\n return node\n}\n\nfunction onOverlayEnter() {\n dialogVisible.value = true\n}\n\nfunction onAfterDialogLeave() {\n overlayVisible.value = false\n}\n\nconst { toggleMaximize, maximized } = useMaximum({\n dialogRef,\n cls\n})\n\nconst className = computed(() => {\n return [cls.b, cls.m(size.value)]\n})\n\n/**\n * 是否弹出过, 用于控制下一次弹出时是否采用v-show的方式\n */\nlet opened = false\n\nwatch(visible, (v) => {\n if (!v) return\n\n if (!opened) opened = true\n\n // 初始化位置偏移量\n translated.x = 0\n translated.y = 0\n\n nextTick(() => {\n setStyles(overlayRef.value!, { zIndex: zIndex() })\n })\n})\n\n/** dialog位移的位置 */\nconst translated = {\n x: 0,\n y: 0\n}\n\n/**\n * 更新弹框位置\n * 使用独立 `translate` 而非整体 `transform`, 与 spring 动画的 `scale` 解耦,\n * 避免动画期间整体 transform 被关键帧覆盖、动画结束后又\"啪\"地跳回内联位置\n */\nconst updateDialogTransform = (x: number, y: number) => {\n const dom = dialogRef.value\n if (!dom) return\n setStyles(dom, {\n translate: `${x}px ${y}px`\n })\n}\n\n// 运用拖拽\nuseDrag({\n target: headerRef,\n\n onDragStart() {\n handleIncreaseZIndex()\n },\n\n onDrag({ x, y }) {\n if (maximized.value) return\n updateDialogTransform(translated.x + x, translated.y + y)\n },\n\n onDragEnd({ x, y }) {\n if (maximized.value) return\n translated.x += x\n translated.y += y\n\n // 字体模糊的bug修正\n if (translated.x % 2 !== 0) {\n translated.x += x < 0 ? 1 : -1\n }\n if (translated.y % 2 !== 0) {\n translated.y += y < 0 ? 1 : -1\n }\n updateDialogTransform(translated.x, translated.y)\n }\n})\n\nfunction handleIncreaseZIndex() {\n if (props.modal) return\n setStyles(overlayRef.value!, { zIndex: zIndex() })\n}\n\n/** 关闭 */\nconst close = () => {\n visible.value = false\n}\n\nprovide(DialogDIKey, {\n visible\n})\n\ndefineExpose<DialogExposed>({\n close\n})\n</script>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dialog.js","names":["$attrs","$slots"],"sources":["../../../src/components/dialog/dialog.vue"],"sourcesContent":["<template>\n <Teleport to=\"body\">\n <transition name=\"fade\" @after-leave=\"emit('closed')\" @enter=\"onOverlayEnter\">\n <div\n v-if=\"overlayVisible || opened\"\n v-show=\"overlayVisible\"\n :class=\"[cls.e('overlay'), bem.is('modal', modal)]\"\n ref=\"overlayRef\"\n @mousedown=\"modal && close()\"\n @keyup.esc=\"close\"\n tabindex=\"0\"\n >\n <transition name=\"spring\" @after-leave=\"onAfterDialogLeave\">\n <div\n v-if=\"dialogVisible\"\n v-bind=\"$attrs\"\n :class=\"className\"\n ref=\"dialogRef\"\n @mousedown.stop=\"handleIncreaseZIndex\"\n >\n <section :class=\"headerCls\" ref=\"headerRef\" @transitionend.stop @transitioncancel.stop>\n <div :class=\"cls.e('title')\" @mousedown.stop>\n <slot name=\"header\">\n {{ header || title }}\n </slot>\n </div>\n\n <div :class=\"cls.e('buttons')\" @mousedown.stop>\n <u-icon\n v-if=\"maximized\"\n :class=\"cls.e('btn-recover')\"\n @click=\"toggleMaximize(false)\"\n title=\"还原\"\n >\n <Recover />\n </u-icon>\n <u-icon\n v-else\n :class=\"cls.e('btn-maximize')\"\n @click=\"toggleMaximize(true)\"\n title=\"最大化\"\n >\n <Maximum />\n </u-icon>\n <u-icon :class=\"cls.e('btn-close')\" @click=\"close\" title=\"关闭\">\n <Close />\n </u-icon>\n </div>\n </section>\n\n <u-scroll\n tag=\"section\"\n :class=\"cls.e('body')\"\n ref=\"bodyRef\"\n :content-style=\"{ height: maximized ? '100%' : undefined }\"\n @transitionend.stop\n @transitioncancel.stop\n >\n <slot v-bind=\"{ maximized }\" />\n </u-scroll>\n\n <section ref=\"footerRef\" :class=\"footerCls\" v-if=\"$slots.footer\">\n <slot name=\"footer\" v-bind=\"{ close }\" />\n </section>\n </div>\n </transition>\n </div>\n </transition>\n </Teleport>\n\n <!-- 触发 -->\n <UNodeRender @click=\"visible = !visible\" :content=\"getTriggerNode()\" ref=\"triggerRef\" />\n</template>\n\n<script lang=\"ts\" setup>\nimport { useDrag, useFallbackProps } from '@veltra/compositions'\nimport { Close, Maximum, Recover } from '@veltra/icons/normal'\nimport { bem, extractNormalVNodes, setStyles, zIndex } from '@veltra/utils'\nimport { shallowRef, watch, computed, provide, nextTick } from 'vue'\n\nimport type { DialogProps, DialogEmits, DialogExposed, ComponentSize } from '../../types'\nimport type { ScrollExposed } from '../../types'\nimport { UIcon } from '../icon'\nimport { UNodeRender } from '../node-render'\nimport { UScroll } from '../scroll'\nimport { DialogDIKey } from './di'\nimport { useMaximum } from './use-maximum'\n\ndefineOptions({ name: 'Dialog', inheritAttrs: false })\n\nconst props = withDefaults(defineProps<DialogProps>(), {\n modal: true,\n modelValue: true,\n autoScroll: true\n})\nconst emit = defineEmits<DialogEmits>()\n\nconst slots = defineSlots<{\n footer?: (props: { close: () => void }) => any\n trigger?: () => any\n header?: () => any\n default?: (props: {\n /** 弹框是否最大化了 */\n maximized: boolean\n }) => any\n}>()\n\nconst cls = bem('dialog')\nconst headerCls = [cls.e('header')]\nconst footerCls = [cls.e('footer')]\n\nconst { size } = useFallbackProps([props], { size: 'default' as ComponentSize })\n\nconst overlayRef = shallowRef<HTMLDivElement>()\n\n/** 弹框模板引用 */\nconst dialogRef = shallowRef<HTMLDivElement>()\n\n/** 弹框头部模板引用 */\nconst headerRef = shallowRef<HTMLDivElement>()\n\n/** 弹框body模板引用 */\nconst bodyRef = shallowRef<ScrollExposed>()\n\n/** 弹框footer模板引用 */\nconst footerRef = shallowRef<HTMLDivElement>()\n\nconst visible = defineModel<boolean>({ default: false })\n\nconst overlayVisible = shallowRef(false)\nconst dialogVisible = shallowRef(false)\n\nwatch(visible, (v) => {\n if (v) {\n overlayVisible.value = true\n } else {\n dialogVisible.value = false\n }\n})\n\nfunction getTriggerNode() {\n const nodes = slots.trigger?.()\n if (!nodes?.length) return null\n\n const node = extractNormalVNodes(nodes)[0]\n return node\n}\n\nfunction onOverlayEnter() {\n dialogVisible.value = true\n}\n\nfunction onAfterDialogLeave() {\n overlayVisible.value = false\n}\n\nconst { toggleMaximize, maximized } = useMaximum({ dialogRef, cls })\n\nconst className = computed(() => {\n return [cls.b, cls.m(size.value)]\n})\n\n/**\n * 是否弹出过, 用于控制下一次弹出时是否采用v-show的方式\n */\nlet opened = false\n\nwatch(visible, (v) => {\n if (!v) return\n\n if (!opened) opened = true\n\n // 初始化位置偏移量\n translated.x = 0\n translated.y = 0\n\n nextTick(() => {\n setStyles(overlayRef.value!, { zIndex: zIndex() })\n })\n})\n\n/** dialog位移的位置 */\nconst translated = { x: 0, y: 0 }\n\n/**\n * 更新弹框位置\n * 使用独立 `translate` 而非整体 `transform`, 与 spring 动画的 `scale` 解耦,\n * 避免动画期间整体 transform 被关键帧覆盖、动画结束后又\"啪\"地跳回内联位置\n */\nconst updateDialogTransform = (x: number, y: number) => {\n const dom = dialogRef.value\n if (!dom) return\n setStyles(dom, { translate: `${x}px ${y}px` })\n}\n\n// 运用拖拽\nuseDrag({\n target: headerRef,\n\n onDragStart() {\n handleIncreaseZIndex()\n },\n\n onDrag({ x, y }) {\n if (maximized.value) return\n updateDialogTransform(translated.x + x, translated.y + y)\n },\n\n onDragEnd({ x, y }) {\n if (maximized.value) return\n translated.x += x\n translated.y += y\n\n // 字体模糊的bug修正\n if (translated.x % 2 !== 0) {\n translated.x += x < 0 ? 1 : -1\n }\n if (translated.y % 2 !== 0) {\n translated.y += y < 0 ? 1 : -1\n }\n updateDialogTransform(translated.x, translated.y)\n }\n})\n\nfunction handleIncreaseZIndex() {\n if (props.modal) return\n setStyles(overlayRef.value!, { zIndex: zIndex() })\n}\n\n/** 关闭 */\nconst close = () => {\n visible.value = false\n}\n\nprovide(DialogDIKey, { visible })\n\ndefineExpose<DialogExposed>({ close })\n</script>\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drawer.js","names":["$attrs"],"sources":["../../../src/components/drawer/drawer.vue"],"sourcesContent":["<template>\n <Teleport to=\"body\">\n <transition name=\"fade\" mode=\"out-in\" @enter=\"onEnter\">\n <div v-if=\"overlayVisible\" :class=\"overlayCls.b\" :style=\"{ zIndex: zIndex() }\" @click=\"close\">\n <transition :name=\"transitionName\" appear @after-leave=\"onAfterDrawerLeave\">\n <div\n v-bind=\"$attrs\"\n v-if=\"drawerVisible\"\n :class=\"drawerClass\"\n :style=\"drawerStyle\"\n @click.stop\n >\n <span :class=\"cls.e('close')\" @click=\"close\" v-if=\"showClose\">\n <u-icon><Close /></u-icon>\n </span>\n <slot />\n </div>\n </transition>\n </div>\n </transition>\n </Teleport>\n</template>\n\n<script lang=\"ts\" setup>\nimport { Close } from '@veltra/icons/normal'\nimport { bem, zIndex } from '@veltra/utils'\nimport { computed, shallowRef } from 'vue'\n\nimport type { DrawerProps, DrawerEmits } from '../../types'\nimport { UIcon } from '../icon'\n\ndefineOptions({
|
|
1
|
+
{"version":3,"file":"drawer.js","names":["$attrs"],"sources":["../../../src/components/drawer/drawer.vue"],"sourcesContent":["<template>\n <Teleport to=\"body\">\n <transition name=\"fade\" mode=\"out-in\" @enter=\"onEnter\">\n <div v-if=\"overlayVisible\" :class=\"overlayCls.b\" :style=\"{ zIndex: zIndex() }\" @click=\"close\">\n <transition :name=\"transitionName\" appear @after-leave=\"onAfterDrawerLeave\">\n <div\n v-bind=\"$attrs\"\n v-if=\"drawerVisible\"\n :class=\"drawerClass\"\n :style=\"drawerStyle\"\n @click.stop\n >\n <span :class=\"cls.e('close')\" @click=\"close\" v-if=\"showClose\">\n <u-icon><Close /></u-icon>\n </span>\n <slot />\n </div>\n </transition>\n </div>\n </transition>\n </Teleport>\n</template>\n\n<script lang=\"ts\" setup>\nimport { Close } from '@veltra/icons/normal'\nimport { bem, zIndex } from '@veltra/utils'\nimport { computed, shallowRef } from 'vue'\n\nimport type { DrawerProps, DrawerEmits } from '../../types'\nimport { UIcon } from '../icon'\n\ndefineOptions({ name: 'Drawer', inheritAttrs: false })\n\nconst props = withDefaults(defineProps<DrawerProps>(), { direction: 'right', closable: true })\n\nconst emit = defineEmits<DrawerEmits>()\n\nconst cls = bem('drawer')\nconst overlayCls = bem('drawer-overlay')\n\nconst overlayVisible = defineModel<boolean>({ default: false })\n\nconst drawerVisible = shallowRef(false)\n\n// 根据方向计算过渡动画名称\nconst transitionName = computed(() => {\n return `drawer-slide-${props.direction}`\n})\n\n// 计算抽屉样式类\nconst drawerClass = computed(() => {\n return [cls.b, bem.is(props.direction)]\n})\n\n// 计算抽屉样式\nconst drawerStyle = computed(() => {\n const style: Record<string, string> = {}\n\n return style\n})\n\nconst onEnter = () => {\n drawerVisible.value = true\n}\n\nconst onAfterDrawerLeave = () => {\n overlayVisible.value = false\n}\n\n// 关闭抽屉\nconst close = () => {\n drawerVisible.value = false\n emit('close')\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;EAiCA,MAAM,QAAQ;EAEd,MAAM,OAAO;EAEb,MAAM,MAAM,IAAI,SAAQ;EACxB,MAAM,aAAa,IAAI,iBAAgB;EAEvC,MAAM,iBAAiB,SAAoB,SAAA,aAAmB;EAE9D,MAAM,gBAAgB,WAAW,MAAK;EAGtC,MAAM,iBAAiB,eAAe;GACpC,OAAO,gBAAgB,MAAM;IAC9B;EAGD,MAAM,cAAc,eAAe;GACjC,OAAO,CAAC,IAAI,GAAG,IAAI,GAAG,MAAM,UAAU,CAAA;IACvC;EAGD,MAAM,cAAc,eAAe;GAGjC,OAAO,EAAA;IACR;EAED,MAAM,gBAAgB;GACpB,cAAc,QAAQ;;EAGxB,MAAM,2BAA2B;GAC/B,eAAe,QAAQ;;EAIzB,MAAM,cAAc;GAClB,cAAc,QAAQ;GACtB,KAAK,QAAO;;;uBAvEZ,YAmBW,UAAA,EAnBD,IAAG,QAAM,EAAA,CACjB,YAiBa,YAAA;IAjBD,MAAK;IAAO,MAAK;IAAiB;;2BAgBtC,CAfK,eAAA,SAAA,WAAA,EAAX,mBAeM,OAAA;;KAfsB,OAAK,eAAE,MAAA,WAAA,CAAW,EAAC;KAAG,OAAK,eAAA,EAAA,QAAY,MAAA,OAAA,EAAM,EAAA,CAAA;KAAO,SAAO;QACrF,YAaa,YAAA;KAbA,MAAM,eAAA;KAAgB,QAAA;KAAQ,cAAa;;4BAYhD,CATE,cAAA,SAAA,WAAA,EAFR,mBAWM,OAXN,WAWM,EAAA,KAAA,GAAA,EAVIA,KAAAA,QAAM;MAEb,OAAO,YAAA;MACP,OAAO,YAAA;MACP,SAAK,OAAA,OAAA,OAAA,KAAA,oBAAN,IAAW,CAAA,OAAA,CAAA;UAEwC,QAAA,aAAA,WAAA,EAAnD,mBAEO,QAAA;;MAFA,OAAK,eAAE,MAAA,IAAA,CAAI,EAAC,QAAA,CAAA;MAAY,SAAO;SACpC,YAA0B,MAAA,YAAA,EAAA,MAAA;6BAAT,CAAT,YAAS,MAAA,MAAA,CAAA,CAAA,CAAA;;kDAEnB,WAAQ,KAAA,QAAA,UAAA,CAAA,EAAA,GAAA,IAAA,mBAAA,QAAA,KAAA,CAAA,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"empty.js","names":[],"sources":["../../../src/components/empty/empty.vue"],"sourcesContent":["<template>\n <span :class=\"cls.b\">\n <u-icon :size=\"size\"> <Empty /> </u-icon>\n <div>{{ text }}</div>\n </span>\n</template>\n\n<script lang=\"ts\" setup>\nimport { Empty } from '@veltra/icons/normal'\nimport { bem } from '@veltra/utils'\n\nimport type { EmptyProps } from '../../types'\nimport { UIcon } from '../icon'\n\ndefineOptions({
|
|
1
|
+
{"version":3,"file":"empty.js","names":[],"sources":["../../../src/components/empty/empty.vue"],"sourcesContent":["<template>\n <span :class=\"cls.b\">\n <u-icon :size=\"size\"> <Empty /> </u-icon>\n <div>{{ text }}</div>\n </span>\n</template>\n\n<script lang=\"ts\" setup>\nimport { Empty } from '@veltra/icons/normal'\nimport { bem } from '@veltra/utils'\n\nimport type { EmptyProps } from '../../types'\nimport { UIcon } from '../icon'\n\ndefineOptions({ name: 'Empty' })\n\nwithDefaults(defineProps<EmptyProps>(), { size: 48, text: '暂无数据' })\n\nconst cls = bem('empty')\n</script>\n"],"mappings":";;;;;;;;;;;;;EAkBA,MAAM,MAAM,IAAI,QAAO;;uBAjBrB,mBAGO,QAAA,EAHA,OAAK,eAAE,MAAA,IAAA,CAAI,EAAC,EAAA,EAAA,CACjB,YAAyC,MAAA,YAAA,EAAA,EAAhC,MAAM,QAAA,MAAI,EAAA;2BAAY,CAAT,YAAS,MAAA,MAAA,CAAA,CAAA,CAAA;;oBAC/B,mBAAqB,OAAA,MAAA,gBAAb,QAAA,KAAI,EAAA,EAAA,CAAA,EAAA,EAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"path-preview.js","names":[],"sources":["../../../../src/components/expression-editor/components/path-preview.vue"],"sourcesContent":["<template>\n <div :class=\"cls.e('path-preview')\">\n <div :class=\"cls.e('path-preview-title')\">变量路径</div>\n <ul :class=\"cls.e('path-tree')\">\n <li\n v-for=\"(node, i) in path\"\n :key=\"`${i}-${node.value || node.label}`\"\n :class=\"[cls.e('path-tree-item'), bem.is('active', i === path.length - 1)]\"\n :style=\"{ paddingLeft: `${i * 14}px` }\"\n >\n <span v-if=\"i > 0\" :class=\"cls.e('path-tree-branch')\">└</span>\n <span :class=\"cls.e('path-tree-label')\">{{ node.label }}</span>\n </li>\n </ul>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { bem } from '@veltra/utils'\n\nimport type { VariableItem } from '../../../types'\n\ndefineOptions({
|
|
1
|
+
{"version":3,"file":"path-preview.js","names":[],"sources":["../../../../src/components/expression-editor/components/path-preview.vue"],"sourcesContent":["<template>\n <div :class=\"cls.e('path-preview')\">\n <div :class=\"cls.e('path-preview-title')\">变量路径</div>\n <ul :class=\"cls.e('path-tree')\">\n <li\n v-for=\"(node, i) in path\"\n :key=\"`${i}-${node.value || node.label}`\"\n :class=\"[cls.e('path-tree-item'), bem.is('active', i === path.length - 1)]\"\n :style=\"{ paddingLeft: `${i * 14}px` }\"\n >\n <span v-if=\"i > 0\" :class=\"cls.e('path-tree-branch')\">└</span>\n <span :class=\"cls.e('path-tree-label')\">{{ node.label }}</span>\n </li>\n </ul>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { bem } from '@veltra/utils'\n\nimport type { VariableItem } from '../../../types'\n\ndefineOptions({ name: 'ExpressionPathPreview' })\n\ndefineProps<{ path: VariableItem[] }>()\n\nconst cls = bem('expression-editor')\n</script>\n"],"mappings":";;;;;;;;EA0BA,MAAM,MAAM,IAAI,oBAAmB;;uBAzBjC,mBAaM,OAAA,EAbA,OAAK,eAAE,MAAA,IAAA,CAAI,EAAC,eAAA,CAAA,EAAA,EAAA,CAChB,mBAAoD,OAAA,EAA9C,OAAK,eAAE,MAAA,IAAA,CAAI,EAAC,qBAAA,CAAA,EAAA,EAAwB,QAAI,EAAA,EAC9C,mBAUK,MAAA,EAVA,OAAK,eAAE,MAAA,IAAA,CAAI,EAAC,YAAA,CAAA,EAAA,EAAA,EAAA,UAAA,KAAA,EACf,mBAQK,UAAA,MAAA,WAPiB,QAAA,OAAZ,MAAM,MAAC;wBADjB,mBAQK,MAAA;KANF,KAAG,GAAK,EAAC,GAAI,KAAK,SAAS,KAAK;KAChC,OAAK,eAAA,CAAG,MAAA,IAAA,CAAI,EAAC,iBAAA,EAAoB,MAAA,IAAA,CAAI,GAAE,UAAW,MAAM,QAAA,KAAK,SAAM,EAAA,CAAA,CAAA;KACnE,OAAK,eAAA,EAAA,aAAA,GAAoB,IAAC,GAAA,KAAA,CAAA;QAEf,IAAC,KAAA,WAAA,EAAb,mBAA8D,QAAA;;KAA1C,OAAK,eAAE,MAAA,IAAA,CAAI,EAAC,mBAAA,CAAA;OAAsB,KAAC,EAAA,IAAA,mBAAA,QAAA,KAAA,EACvD,mBAA+D,QAAA,EAAxD,OAAK,eAAE,MAAA,IAAA,CAAI,EAAC,kBAAA,CAAA,EAAA,EAAA,gBAAwB,KAAK,MAAK,EAAA,EAAA,CAAA,EAAA,EAAA"}
|