@veltra/desktop 1.1.28 → 1.1.29
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 +4 -6
- package/dist/components/action/action-group.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/components/action/action-group.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/action/action.js.map +1 -1
- package/dist/components/action/action.vue.d.ts +4 -7
- package/dist/components/action/di.js.map +1 -1
- package/dist/components/auto-complete/auto-complete.js.map +1 -1
- package/dist/components/auto-complete/auto-complete.vue.d.ts +5 -7
- package/dist/components/auto-complete/use-keyboard.js.map +1 -1
- package/dist/components/auto-complete/use-suggestions.js.map +1 -1
- package/dist/components/badge/badge.js.map +1 -1
- package/dist/components/badge/badge.vue.d.ts +2 -4
- 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/batch-edit/batch-edit.vue.d.ts +4 -7
- package/dist/components/batch-edit/di.js.map +1 -1
- package/dist/components/batch-edit/helper.js.map +1 -1
- package/dist/components/batch-edit/use-edit.js.map +1 -1
- package/dist/components/breadcrumb/breadcrumb.js.map +1 -1
- package/dist/components/breadcrumb/breadcrumb.vue.d.ts +3 -5
- package/dist/components/button/button-group.js.map +1 -1
- package/dist/components/button/button-group.vue.d.ts +1 -3
- package/dist/components/button/button.js.map +1 -1
- package/dist/components/button/button.vue.d.ts +4 -6
- package/dist/components/calendar/calendar.js.map +1 -1
- package/dist/components/calendar/calendar.vue.d.ts +3 -5
- package/dist/components/calendar/utils.js.map +1 -1
- package/dist/components/card/card-action.js.map +1 -1
- package/dist/components/card/card-action.vue.d.ts +1 -3
- package/dist/components/card/card-content.js.map +1 -1
- package/dist/components/card/card-content.vue.d.ts +1 -3
- package/dist/components/card/card-cover.js.map +1 -1
- package/dist/components/card/card-cover.vue.d.ts +1 -3
- package/dist/components/card/card-header.js.map +1 -1
- package/dist/components/card/card-header.vue.d.ts +1 -3
- package/dist/components/card/card.js.map +1 -1
- package/dist/components/card/card.vue.d.ts +1 -3
- package/dist/components/card/di.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 +7 -9
- package/dist/components/cascade/di.js.map +1 -1
- package/dist/components/cascade/node.js.map +1 -1
- package/dist/components/cascade/use-check.js.map +1 -1
- package/dist/components/cascade/use-data-map.js.map +1 -1
- package/dist/components/cascade/use-select.js.map +1 -1
- package/dist/components/check-tag/check-tag.js.map +1 -1
- package/dist/components/check-tag/check-tag.vue.d.ts +3 -5
- package/dist/components/checkbox/checkbox-button.js.map +1 -1
- package/dist/components/checkbox/checkbox-button.vue.d.ts +4 -7
- package/dist/components/checkbox/checkbox.js.map +1 -1
- package/dist/components/checkbox/checkbox.vue.d.ts +3 -5
- package/dist/components/checkbox-group/checkbox-group.js.map +1 -1
- package/dist/components/checkbox-group/checkbox-group.vue.d.ts +5 -7
- package/dist/components/code-editor/code-editor.js.map +1 -1
- package/dist/components/code-editor/code-editor.vue.d.ts +3 -5
- package/dist/components/collapse/collapse-item.js.map +1 -1
- package/dist/components/collapse/collapse-item.vue.d.ts +1 -3
- package/dist/components/collapse/collapse.js.map +1 -1
- package/dist/components/collapse/collapse.vue.d.ts +3 -5
- package/dist/components/collapse/di.js.map +1 -1
- package/dist/components/condition-editor/components/condition-group.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/condition-editor/condition-editor.vue.d.ts +3 -5
- package/dist/components/condition-editor/core/evaluator.js.map +1 -1
- package/dist/components/condition-editor/core/operators.js.map +1 -1
- package/dist/components/context-menu/api.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/context-menu/context-menu.vue.d.ts +3 -5
- package/dist/components/context-menu/di.js.map +1 -1
- package/dist/components/date-panel/date-panel.js.map +1 -1
- package/dist/components/date-panel/date-panel.vue.d.ts +8 -12
- package/dist/components/date-panel/di.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-panel/use-date-select.js.map +1 -1
- package/dist/components/date-panel/use-panel-date.js.map +1 -1
- package/dist/components/date-panel/use-panel.js.map +1 -1
- package/dist/components/date-picker/date-picker.js.map +1 -1
- package/dist/components/date-picker/date-picker.vue.d.ts +5 -7
- package/dist/components/date-range-picker/date-range-picker.js.map +1 -1
- package/dist/components/date-range-picker/date-range-picker.vue.d.ts +5 -7
- package/dist/components/dialog/di.js.map +1 -1
- package/dist/components/dialog/dialog.js.map +1 -1
- package/dist/components/dialog/dialog.vue.d.ts +3 -6
- package/dist/components/dialog/use-maximum.js.map +1 -1
- package/dist/components/drawer/drawer.js.map +1 -1
- package/dist/components/drawer/drawer.vue.d.ts +3 -5
- package/dist/components/dropdown/dropdown.js.map +1 -1
- package/dist/components/dropdown/dropdown.vue.d.ts +3 -6
- package/dist/components/empty/empty.js.map +1 -1
- package/dist/components/empty/empty.vue.d.ts +3 -5
- 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/core/chip.js.map +1 -1
- package/dist/components/expression-editor/core/editor.js.map +1 -1
- package/dist/components/expression-editor/core/mention.js.map +1 -1
- package/dist/components/expression-editor/core/model.js.map +1 -1
- package/dist/components/expression-editor/di.js.map +1 -1
- package/dist/components/expression-editor/expression-editor.js.map +1 -1
- package/dist/components/expression-editor/expression-editor.vue.d.ts +3 -5
- package/dist/components/file-picker/file-picker.js.map +1 -1
- package/dist/components/file-picker/file-picker.vue.d.ts +3 -5
- package/dist/components/file-picker/helper.js.map +1 -1
- package/dist/components/file-viewer/file-viewer.js +1 -1
- package/dist/components/file-viewer/file-viewer.js.map +1 -1
- package/dist/components/file-viewer/file-viewer.vue.d.ts +5 -6
- package/dist/components/file-viewer/helper.js.map +1 -1
- package/dist/components/file-viewer/previewers/docx-previewer.js.map +1 -1
- package/dist/components/file-viewer/previewers/image-previewer.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/file-viewer/previewers/text-previewer.js.map +1 -1
- package/dist/components/file-viewer/previewers/video-previewer.js.map +1 -1
- package/dist/components/float-button/float-button.js.map +1 -1
- package/dist/components/float-button/float-button.vue.d.ts +3 -5
- package/dist/components/form/dynamic-form-model.js.map +1 -1
- package/dist/components/form/form-model.js.map +1 -1
- package/dist/components/form/form.vue.d.ts +3 -4
- package/dist/components/form/form.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/components/form/form.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/form/helper.js.map +1 -1
- package/dist/components/form/use-node-interceptor.js.map +1 -1
- package/dist/components/form-item/form-item.vue.d.ts +2 -4
- package/dist/components/form-item/form-item.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/components/form-item/form-item.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/form-item/helper.js.map +1 -1
- package/dist/components/gantt-chart/gantt-chart.js.map +1 -1
- package/dist/components/gantt-chart/gantt-chart.vue.d.ts +1 -3
- package/dist/components/grid/breakpoint.js.map +1 -1
- package/dist/components/grid/di.js.map +1 -1
- package/dist/components/grid/grid-item.js.map +1 -1
- package/dist/components/grid/grid-item.vue.d.ts +2 -4
- package/dist/components/grid/grid.js.map +1 -1
- package/dist/components/grid/grid.vue.d.ts +3 -5
- package/dist/components/grid/use-responsive.js.map +1 -1
- package/dist/components/grid-input/grid-input.js.map +1 -1
- package/dist/components/grid-input/grid-input.vue.d.ts +3 -6
- package/dist/components/group-input/group-input.js.map +1 -1
- package/dist/components/group-input/group-input.vue.d.ts +2 -4
- package/dist/components/group-input/use-group-items.js.map +1 -1
- package/dist/components/icon/icon.js.map +1 -1
- package/dist/components/icon/icon.vue.d.ts +1 -3
- package/dist/components/input/input.vue.d.ts +5 -7
- package/dist/components/input/input.vue_vue_type_script_setup_true_lang.js +3 -3
- package/dist/components/input/input.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/kbd/kbd.js.map +1 -1
- package/dist/components/kbd/kbd.vue.d.ts +1 -3
- package/dist/components/layout/di.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/layout/layout.vue.d.ts +2 -4
- package/dist/components/list/list-item.js.map +1 -1
- package/dist/components/list/list-item.vue.d.ts +1 -3
- package/dist/components/list/list.js.map +1 -1
- package/dist/components/list/list.vue.d.ts +1 -3
- package/dist/components/loading/directive.js.map +1 -1
- package/dist/components/loading/loading.js.map +1 -1
- package/dist/components/loading/loading.vue.d.ts +2 -4
- package/dist/components/menu/di.js.map +1 -1
- package/dist/components/menu/helper.js.map +1 -1
- package/dist/components/menu/menu-icon.js.map +1 -1
- package/dist/components/menu/menu-item-collapsed.js.map +1 -1
- package/dist/components/menu/menu-item.js.map +1 -1
- package/dist/components/menu/menu-item.vue.d.ts +1 -3
- package/dist/components/menu/menu-sub-collapsed.js.map +1 -1
- package/dist/components/menu/menu-sub.js.map +1 -1
- package/dist/components/menu/menu-sub.vue.d.ts +1 -3
- package/dist/components/menu/menu.js.map +1 -1
- package/dist/components/menu/menu.vue.d.ts +3 -5
- package/dist/components/menu/use-menu-item.js.map +1 -1
- package/dist/components/menu/walk-menu-path.js.map +1 -1
- package/dist/components/message/helper.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/message.vue.d.ts +3 -5
- package/dist/components/message/message2.js.map +1 -1
- package/dist/components/message-confirm/message-confirm.js.map +1 -1
- package/dist/components/message-confirm/message-confirm.vue.d.ts +2 -3
- package/dist/components/message-confirm/message-confirm2.js.map +1 -1
- package/dist/components/multi-select/di.js.map +1 -1
- package/dist/components/multi-select/multi-select-option.js.map +1 -1
- package/dist/components/multi-select/multi-select.js.map +1 -1
- package/dist/components/multi-select/multi-select.vue.d.ts +7 -9
- package/dist/components/multi-tree-select/multi-tree-select.js.map +1 -1
- package/dist/components/multi-tree-select/multi-tree-select.vue.d.ts +8 -9
- package/dist/components/node-render/node-render.js.map +1 -1
- package/dist/components/notification/index.js.map +1 -1
- package/dist/components/notification/notification.js.map +1 -1
- package/dist/components/notification/notification.vue.d.ts +3 -6
- package/dist/components/number/number.js.map +1 -1
- package/dist/components/number/number.vue.d.ts +2 -4
- package/dist/components/number-input/number-input.js.map +1 -1
- package/dist/components/number-input/number-input.vue.d.ts +5 -7
- package/dist/components/number-range-input/number-range-input.js.map +1 -1
- package/dist/components/number-range-input/number-range-input.vue.d.ts +4 -6
- package/dist/components/paginator/paginator.js.map +1 -1
- package/dist/components/paginator/paginator.vue.d.ts +3 -5
- package/dist/components/palette/color-transform.js.map +1 -1
- package/dist/components/palette/di.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/palette/palette.vue.d.ts +3 -5
- package/dist/components/palette/use-hsv.js.map +1 -1
- package/dist/components/password-input/password-input.js.map +1 -1
- package/dist/components/password-input/password-input.vue.d.ts +4 -6
- package/dist/components/pop-confirm/pop-confirm.js.map +1 -1
- package/dist/components/pop-confirm/pop-confirm.vue.d.ts +5 -7
- package/dist/components/progress/progress.js.map +1 -1
- package/dist/components/progress/progress.vue.d.ts +2 -3
- package/dist/components/progress-nodes/progress-nodes.js.map +1 -1
- package/dist/components/progress-nodes/progress-nodes.vue.d.ts +4 -7
- package/dist/components/radio/radio.js.map +1 -1
- package/dist/components/radio/radio.vue.d.ts +3 -5
- package/dist/components/radio-group/radio-group.js.map +1 -1
- package/dist/components/radio-group/radio-group.vue.d.ts +5 -7
- package/dist/components/rich-text-editor/rich-text-editor.js.map +1 -1
- package/dist/components/rich-text-editor/rich-text-editor.vue.d.ts +5 -7
- package/dist/components/rich-text-editor/toolbar.js.map +1 -1
- package/dist/components/scroll/di.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/scroll/scroll.vue.d.ts +3 -5
- package/dist/components/select/select.js.map +1 -1
- package/dist/components/select/select.vue.d.ts +7 -9
- package/dist/components/select/use-keyboard.js.map +1 -1
- package/dist/components/select/use-options.js.map +1 -1
- package/dist/components/slider/di.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/slider/slider.vue.d.ts +2 -4
- package/dist/components/slider/use-slider.js.map +1 -1
- package/dist/components/steps/steps.js.map +1 -1
- package/dist/components/steps/steps.vue.d.ts +4 -7
- package/dist/components/switch/switch.js.map +1 -1
- package/dist/components/switch/switch.vue.d.ts +3 -5
- package/dist/components/table/di.js.map +1 -1
- package/dist/components/table/node/col.js.map +1 -1
- package/dist/components/table/node/row.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/table-head.js.map +1 -1
- package/dist/components/table/table-row.js.map +1 -1
- package/dist/components/table/table.js.map +1 -1
- package/dist/components/table/table.vue.d.ts +7 -10
- package/dist/components/table/use-check.js.map +1 -1
- package/dist/components/table/use-col-resize.js.map +1 -1
- package/dist/components/table/use-columns.js.map +1 -1
- package/dist/components/table/use-fixed-columns.js.map +1 -1
- package/dist/components/table/use-rows.js.map +1 -1
- package/dist/components/table/use-table.js.map +1 -1
- package/dist/components/table-editor/table-editor.js.map +1 -1
- package/dist/components/table-editor/table-editor.vue.d.ts +3 -5
- package/dist/components/tabs/tabs-horizontal.js +5 -2
- package/dist/components/tabs/tabs-horizontal.js.map +1 -1
- package/dist/components/tabs/tabs-horizontal.vue.d.ts +5 -7
- package/dist/components/tabs/tabs-vertical.js +5 -2
- package/dist/components/tabs/tabs-vertical.js.map +1 -1
- package/dist/components/tabs/tabs-vertical.vue.d.ts +11 -10
- package/dist/components/tabs/tabs.js.map +1 -1
- package/dist/components/tabs/tabs.vue.d.ts +11 -6
- package/dist/components/tabs/use-tabs-bar.js.map +1 -1
- package/dist/components/tag/tag.js.map +1 -1
- package/dist/components/tag/tag.vue.d.ts +3 -5
- package/dist/components/text/text.js.map +1 -1
- package/dist/components/text/text.vue.d.ts +2 -4
- package/dist/components/textarea/textarea.js.map +1 -1
- package/dist/components/textarea/textarea.vue.d.ts +6 -8
- package/dist/components/textarea/utils.js.map +1 -1
- package/dist/components/theme/schema.js.map +1 -1
- package/dist/components/theme/theme.js.map +1 -1
- package/dist/components/theme/theme.vue.d.ts +1 -3
- package/dist/components/tip/tip.js.map +1 -1
- package/dist/components/tip/tip.vue.d.ts +4 -6
- package/dist/components/tip/use-nest.js.map +1 -1
- package/dist/components/tree/di.js.map +1 -1
- package/dist/components/tree/tree-node.js.map +1 -1
- package/dist/components/tree/tree-node2.js.map +1 -1
- package/dist/components/tree/tree.js.map +1 -1
- package/dist/components/tree/tree.vue.d.ts +3 -5
- package/dist/components/tree/use-check.js.map +1 -1
- package/dist/components/tree/use-filter.js.map +1 -1
- package/dist/components/tree/use-select.js.map +1 -1
- package/dist/components/tree/use-tree-nodes.js.map +1 -1
- package/dist/components/tree-select/tree-select.js.map +1 -1
- package/dist/components/tree-select/tree-select.vue.d.ts +8 -9
- package/dist/components/watermark/watermark.js.map +1 -1
- package/dist/components/watermark/watermark.vue.d.ts +2 -4
- package/dist/index.d.ts +1 -1
- package/dist/install.js.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/package.json +8 -8
- package/src/components/tabs/tabs-horizontal.vue +2 -2
- package/src/components/tabs/tabs-vertical.vue +1 -1
- package/src/components/tabs/tabs.vue +2 -2
- package/dist/components/kbd/index.d.ts +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"group-input.js","names":[],"sources":["../../../src/components/group-input/group-input.vue"],"sourcesContent":["<template>\n <ul :class=\"[cls.b, cls.m(size)]\" v-if=\"!readonly\">\n <li v-if=\"isEmpty && creatable\">\n <u-button style=\"width: 100%\" :icon=\"Plus\" @click=\"handleAdd(0)\" :size=\"size\">\n 新增\n </u-button>\n </li>\n <li v-for=\"(item, index) of items\" :key=\"item.id\" :class=\"cls.e('item')\" :style=\"itemStyle\">\n <slot v-bind=\"{ item: item.data, index }\" />\n <span :class=\"cls.e('actions')\">\n <u-button\n :icon=\"Minus\"\n circle\n :disabled=\"disabled\"\n :size=\"size\"\n @click=\"handleRemove(index)\"\n />\n <u-button\n :icon=\"Plus\"\n circle\n :disabled=\"disabled\"\n :size=\"size\"\n type=\"primary\"\n @click=\"handleAdd(index)\"\n />\n </span>\n </li>\n </ul>\n\n <template v-else-if=\"items?.length\">\n <ul :class=\"[cls.b, cls.m(size)]\">\n <li v-for=\"item of items\" :key=\"item.id\" :class=\"cls.e('item')\">\n <span v-for=\"v in item.data\">{{ v }}</span>\n </li>\n </ul>\n </template>\n\n <template v-else>\n {{ FORM_EMPTY_CONTENT }}\n </template>\n</template>\n\n<script lang=\"ts\" setup generic=\"GroupItem extends Record<string, any>\">\nimport { useFormFallbackProps } from '@veltra/compositions'\nimport { Minus, Plus } from '@veltra/icons/normal'\nimport { bem, FORM_EMPTY_CONTENT } from '@veltra/utils'\nimport { injectFormContext } from '@veltra/utils'\nimport { computed } from 'vue'\n\nimport type { GroupInputEmits, GroupInputProps } from '../../types'\nimport { UButton } from '../button'\nimport { useGroupItems } from './use-group-items'\n\ndefineOptions({ name: 'GroupInput' })\n\nconst props = withDefaults(defineProps<GroupInputProps<GroupItem>>(), {\n modelValue: () => [],\n disabled: undefined,\n readonly: undefined,\n creatable: true\n})\n\nconst emit = defineEmits<GroupInputEmits>()\n\nconst cls = bem('group-input')\n\nconst { formProps } = injectFormContext()\nconst { disabled, size, readonly } = useFormFallbackProps([formProps ?? {}, props], {\n size: 'default',\n disabled: false,\n readonly: false\n})\n\nconst { items, createItem, runByEvent } = useGroupItems({ props, emit })\n\nconst isEmpty = computed(() => {\n return !items.value.length\n})\n\nfunction handleAdd(index: number) {\n runByEvent(() => {\n items.value = [\n ...items.value.slice(0, index + 1),\n createItem({}),\n ...items.value.slice(index + 1)\n ]\n })\n}\n\nfunction handleRemove(index: number) {\n runByEvent(() => {\n items.value = [...items.value.slice(0, index), ...items.value.slice(index + 1)]\n })\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuDA,MAAM,QAAQ;EAOd,MAAM,OAAO;EAEb,MAAM,MAAM,IAAI,
|
|
1
|
+
{"version":3,"file":"group-input.js","names":[],"sources":["../../../src/components/group-input/group-input.vue"],"sourcesContent":["<template>\n <ul :class=\"[cls.b, cls.m(size)]\" v-if=\"!readonly\">\n <li v-if=\"isEmpty && creatable\">\n <u-button style=\"width: 100%\" :icon=\"Plus\" @click=\"handleAdd(0)\" :size=\"size\">\n 新增\n </u-button>\n </li>\n <li v-for=\"(item, index) of items\" :key=\"item.id\" :class=\"cls.e('item')\" :style=\"itemStyle\">\n <slot v-bind=\"{ item: item.data, index }\" />\n <span :class=\"cls.e('actions')\">\n <u-button\n :icon=\"Minus\"\n circle\n :disabled=\"disabled\"\n :size=\"size\"\n @click=\"handleRemove(index)\"\n />\n <u-button\n :icon=\"Plus\"\n circle\n :disabled=\"disabled\"\n :size=\"size\"\n type=\"primary\"\n @click=\"handleAdd(index)\"\n />\n </span>\n </li>\n </ul>\n\n <template v-else-if=\"items?.length\">\n <ul :class=\"[cls.b, cls.m(size)]\">\n <li v-for=\"item of items\" :key=\"item.id\" :class=\"cls.e('item')\">\n <span v-for=\"v in item.data\">{{ v }}</span>\n </li>\n </ul>\n </template>\n\n <template v-else>\n {{ FORM_EMPTY_CONTENT }}\n </template>\n</template>\n\n<script lang=\"ts\" setup generic=\"GroupItem extends Record<string, any>\">\nimport { useFormFallbackProps } from '@veltra/compositions'\nimport { Minus, Plus } from '@veltra/icons/normal'\nimport { bem, FORM_EMPTY_CONTENT } from '@veltra/utils'\nimport { injectFormContext } from '@veltra/utils'\nimport { computed } from 'vue'\n\nimport type { GroupInputEmits, GroupInputProps } from '../../types'\nimport { UButton } from '../button'\nimport { useGroupItems } from './use-group-items'\n\ndefineOptions({ name: 'GroupInput' })\n\nconst props = withDefaults(defineProps<GroupInputProps<GroupItem>>(), {\n modelValue: () => [],\n disabled: undefined,\n readonly: undefined,\n creatable: true\n})\n\nconst emit = defineEmits<GroupInputEmits>()\n\nconst cls = bem('group-input')\n\nconst { formProps } = injectFormContext()\nconst { disabled, size, readonly } = useFormFallbackProps([formProps ?? {}, props], {\n size: 'default',\n disabled: false,\n readonly: false\n})\n\nconst { items, createItem, runByEvent } = useGroupItems({ props, emit })\n\nconst isEmpty = computed(() => {\n return !items.value.length\n})\n\nfunction handleAdd(index: number) {\n runByEvent(() => {\n items.value = [\n ...items.value.slice(0, index + 1),\n createItem({}),\n ...items.value.slice(index + 1)\n ]\n })\n}\n\nfunction handleRemove(index: number) {\n runByEvent(() => {\n items.value = [...items.value.slice(0, index), ...items.value.slice(index + 1)]\n })\n}\n</script>\n"],"mappings":"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"}
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import { GroupInputEmits, GroupInputProps } from "../../types/group-input.js";
|
|
2
|
-
import * as _$vue from "vue";
|
|
3
|
-
|
|
4
2
|
//#region src/components/group-input/group-input.vue.d.ts
|
|
5
3
|
declare const __VLS_export: <GroupItem extends Record<string, any>>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
|
|
6
|
-
props:
|
|
4
|
+
props: import("vue").PublicProps & __VLS_PrettifyLocal<GroupInputProps<GroupItem> & {
|
|
7
5
|
"onUpdate:modelValue"?: ((modelValue: Record<string, any>[]) => any) | undefined;
|
|
8
6
|
}> & (typeof globalThis extends {
|
|
9
7
|
__VLS_PROPS_FALLBACK: infer P;
|
|
@@ -17,7 +15,7 @@ declare const __VLS_export: <GroupItem extends Record<string, any>>(__VLS_props:
|
|
|
17
15
|
}) => any;
|
|
18
16
|
};
|
|
19
17
|
emit: GroupInputEmits<Record<string, any>>;
|
|
20
|
-
}>) =>
|
|
18
|
+
}>) => import("vue").VNode & {
|
|
21
19
|
__ctx?: Awaited<typeof __VLS_setup>;
|
|
22
20
|
};
|
|
23
21
|
declare const _default: typeof __VLS_export;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-group-items.js","names":[],"sources":["../../../src/components/group-input/use-group-items.ts"],"sourcesContent":["import { createIncrease } from '@veltra/utils'\nimport { isReactive, nextTick, shallowReactive, shallowRef, watch, type ShallowRef } from 'vue'\n\nimport type { GroupInputEmits, GroupInputProps } from '../../types'\n\ninterface Options {\n props: GroupInputProps\n emit: GroupInputEmits\n}\n\ninterface UseGroupItemsReturned {\n items: ShallowRef<{ id: number; data: Record<string, any> }[]>\n createItem: (data: Record<string, any>) => { id: number; data: Record<string, any> }\n runByEvent: (cb: () => void) => void\n}\n\nexport function useGroupItems(options: Options): UseGroupItemsReturned {\n const { props, emit } = options\n\n const id = createIncrease(1)\n\n const items = shallowRef<{ id: number; data: Record<string, any> }[]>([])\n\n function createItem(data: Record<string, any>) {\n return { data: isReactive(data) ? data : shallowReactive(data), id: id() }\n }\n\n let changedByEvent = false\n let changedByModelValue = false\n function runByEvent(cb: () => void) {\n changedByEvent = true\n cb()\n nextTick(() => {\n changedByEvent = false\n })\n }\n\n watch(\n () => props.modelValue,\n (modelValue) => {\n if (changedByEvent) return\n changedByModelValue = true\n items.value = modelValue?.map(createItem) ?? []\n nextTick(() => {\n changedByModelValue = false\n })\n },\n { immediate: true }\n )\n\n watch(items, (items) => {\n if (changedByModelValue) return\n emit(\n 'update:modelValue',\n items.map((item) => item.data)\n )\n })\n\n return { items, createItem, runByEvent }\n}\n"],"mappings":";;;AAgBA,SAAgB,cAAc,SAAyC;CACrE,MAAM,EAAE,OAAO,SAAS;CAExB,MAAM,KAAK,eAAe,
|
|
1
|
+
{"version":3,"file":"use-group-items.js","names":[],"sources":["../../../src/components/group-input/use-group-items.ts"],"sourcesContent":["import { createIncrease } from '@veltra/utils'\nimport { isReactive, nextTick, shallowReactive, shallowRef, watch, type ShallowRef } from 'vue'\n\nimport type { GroupInputEmits, GroupInputProps } from '../../types'\n\ninterface Options {\n props: GroupInputProps\n emit: GroupInputEmits\n}\n\ninterface UseGroupItemsReturned {\n items: ShallowRef<{ id: number; data: Record<string, any> }[]>\n createItem: (data: Record<string, any>) => { id: number; data: Record<string, any> }\n runByEvent: (cb: () => void) => void\n}\n\nexport function useGroupItems(options: Options): UseGroupItemsReturned {\n const { props, emit } = options\n\n const id = createIncrease(1)\n\n const items = shallowRef<{ id: number; data: Record<string, any> }[]>([])\n\n function createItem(data: Record<string, any>) {\n return { data: isReactive(data) ? data : shallowReactive(data), id: id() }\n }\n\n let changedByEvent = false\n let changedByModelValue = false\n function runByEvent(cb: () => void) {\n changedByEvent = true\n cb()\n nextTick(() => {\n changedByEvent = false\n })\n }\n\n watch(\n () => props.modelValue,\n (modelValue) => {\n if (changedByEvent) return\n changedByModelValue = true\n items.value = modelValue?.map(createItem) ?? []\n nextTick(() => {\n changedByModelValue = false\n })\n },\n { immediate: true }\n )\n\n watch(items, (items) => {\n if (changedByModelValue) return\n emit(\n 'update:modelValue',\n items.map((item) => item.data)\n )\n })\n\n return { items, createItem, runByEvent }\n}\n"],"mappings":";;;AAgBA,SAAgB,cAAc,SAAyC;CACrE,MAAM,EAAE,OAAO,SAAS;CAExB,MAAM,KAAK,eAAe,CAAC;CAE3B,MAAM,QAAQ,WAAwD,CAAC,CAAC;CAExE,SAAS,WAAW,MAA2B;EAC7C,OAAO;GAAE,MAAM,WAAW,IAAI,IAAI,OAAO,gBAAgB,IAAI;GAAG,IAAI,GAAG;EAAE;CAC3E;CAEA,IAAI,iBAAiB;CACrB,IAAI,sBAAsB;CAC1B,SAAS,WAAW,IAAgB;EAClC,iBAAiB;EACjB,GAAG;EACH,eAAe;GACb,iBAAiB;EACnB,CAAC;CACH;CAEA,YACQ,MAAM,aACX,eAAe;EACd,IAAI,gBAAgB;EACpB,sBAAsB;EACtB,MAAM,QAAQ,YAAY,IAAI,UAAU,KAAK,CAAC;EAC9C,eAAe;GACb,sBAAsB;EACxB,CAAC;CACH,GACA,EAAE,WAAW,KAAK,CACpB;CAEA,MAAM,QAAQ,UAAU;EACtB,IAAI,qBAAqB;EACzB,KACE,qBACA,MAAM,KAAK,SAAS,KAAK,IAAI,CAC/B;CACF,CAAC;CAED,OAAO;EAAE;EAAO;EAAY;CAAW;AACzC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"icon.js","names":[],"sources":["../../../src/components/icon/icon.vue"],"sourcesContent":["<template>\n <i :class=\"cls.b\" :style=\"style\">\n <slot></slot>\n </i>\n</template>\n\n<script lang=\"ts\" setup>\nimport { bem, withUnit } from '@veltra/utils'\nimport { type CSSProperties, computed } from 'vue'\n\nimport type { IconProps } from '../../types'\n\ndefineOptions({ name: 'Icon' })\n\nconst props = defineProps<IconProps>()\n\nconst cls = bem('icon')\n\nconst style = computed<CSSProperties>(() => {\n return { fontSize: withUnit(props.size, 'px') }\n})\n</script>\n"],"mappings":";;;;;;;;EAcA,MAAM,QAAQ;EAEd,MAAM,MAAM,IAAI,
|
|
1
|
+
{"version":3,"file":"icon.js","names":[],"sources":["../../../src/components/icon/icon.vue"],"sourcesContent":["<template>\n <i :class=\"cls.b\" :style=\"style\">\n <slot></slot>\n </i>\n</template>\n\n<script lang=\"ts\" setup>\nimport { bem, withUnit } from '@veltra/utils'\nimport { type CSSProperties, computed } from 'vue'\n\nimport type { IconProps } from '../../types'\n\ndefineOptions({ name: 'Icon' })\n\nconst props = defineProps<IconProps>()\n\nconst cls = bem('icon')\n\nconst style = computed<CSSProperties>(() => {\n return { fontSize: withUnit(props.size, 'px') }\n})\n</script>\n"],"mappings":";;;;;;;;EAcA,MAAM,QAAQ;EAEd,MAAM,MAAM,IAAI,MAAM;EAEtB,MAAM,QAAQ,eAA8B;GAC1C,OAAO,EAAE,UAAU,SAAS,MAAM,MAAM,IAAI,EAAE;EAChD,CAAC;;uBAnBC,mBAEI,KAAA;IAFA,OAAK,eAAE,MAAA,GAAA,EAAI,CAAC;IAAG,OAAK,eAAE,MAAA,KAAK;OAC7B,WAAa,KAAA,QAAA,SAAA,CAAA,GAAA,CAAA"}
|
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
import { IconProps } from "../../types/icon.js";
|
|
2
|
-
import * as _$vue from "vue";
|
|
3
|
-
|
|
4
2
|
//#region src/components/icon/icon.vue.d.ts
|
|
5
3
|
declare var __VLS_1: {};
|
|
6
4
|
type __VLS_Slots = {} & {
|
|
7
5
|
default?: (props: typeof __VLS_1) => any;
|
|
8
6
|
};
|
|
9
|
-
declare const __VLS_base:
|
|
7
|
+
declare const __VLS_base: import("vue").DefineComponent<IconProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<IconProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
10
8
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
11
9
|
declare const _default: typeof __VLS_export;
|
|
12
10
|
type __VLS_WithSlots<T, S> = T & {
|
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
import { InputProps, _InputExposed } from "../../types/input.js";
|
|
2
|
-
import * as _$vue from "vue";
|
|
3
|
-
|
|
4
2
|
//#region src/components/input/input.vue.d.ts
|
|
5
3
|
type __VLS_Props = InputProps;
|
|
6
4
|
type __VLS_ModelProps = {
|
|
@@ -13,7 +11,7 @@ type __VLS_Slots = {} & {
|
|
|
13
11
|
} & {
|
|
14
12
|
suffix?: (props: typeof __VLS_22) => any;
|
|
15
13
|
};
|
|
16
|
-
declare const __VLS_base:
|
|
14
|
+
declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, _InputExposed, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
17
15
|
"update:modelValue": (value: string | undefined) => any;
|
|
18
16
|
} & {
|
|
19
17
|
"update:modelValue": (value: string) => any;
|
|
@@ -24,7 +22,7 @@ declare const __VLS_base: _$vue.DefineComponent<__VLS_PublicProps, _InputExposed
|
|
|
24
22
|
focus: (value?: string | undefined) => any;
|
|
25
23
|
blur: (value?: string | undefined) => any;
|
|
26
24
|
"native:input": (ev: Event) => any;
|
|
27
|
-
}, string,
|
|
25
|
+
}, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
|
|
28
26
|
"onUpdate:modelValue"?: ((value: string) => any) | undefined;
|
|
29
27
|
onClear?: (() => any) | undefined;
|
|
30
28
|
onChange?: ((value: string) => any) | undefined;
|
|
@@ -34,11 +32,11 @@ declare const __VLS_base: _$vue.DefineComponent<__VLS_PublicProps, _InputExposed
|
|
|
34
32
|
onBlur?: ((value?: string | undefined) => any) | undefined;
|
|
35
33
|
"onNative:input"?: ((ev: Event) => any) | undefined;
|
|
36
34
|
}>, {
|
|
37
|
-
disabled: boolean;
|
|
38
|
-
readonly: boolean;
|
|
39
35
|
placeholder: string;
|
|
40
36
|
clearable: boolean;
|
|
41
|
-
|
|
37
|
+
disabled: boolean;
|
|
38
|
+
readonly: boolean;
|
|
39
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
42
40
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
43
41
|
declare const _default: typeof __VLS_export;
|
|
44
42
|
type __VLS_WithSlots<T, S> = T & {
|
|
@@ -10,10 +10,10 @@ const _hoisted_1 = [
|
|
|
10
10
|
"disabled",
|
|
11
11
|
"readonly"
|
|
12
12
|
];
|
|
13
|
-
var input_vue_vue_type_script_setup_true_lang_default =
|
|
13
|
+
var input_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
|
|
14
14
|
name: "Input",
|
|
15
15
|
__name: "input",
|
|
16
|
-
props:
|
|
16
|
+
props: /*@__PURE__*/ mergeModels({
|
|
17
17
|
modelValue: {},
|
|
18
18
|
placeholder: { default: "请输入" },
|
|
19
19
|
prefix: {},
|
|
@@ -41,7 +41,7 @@ var input_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineCo
|
|
|
41
41
|
"modelValue": {},
|
|
42
42
|
"modelModifiers": {}
|
|
43
43
|
}),
|
|
44
|
-
emits:
|
|
44
|
+
emits: /*@__PURE__*/ mergeModels([
|
|
45
45
|
"update:modelValue",
|
|
46
46
|
"change",
|
|
47
47
|
"suffix:click",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input.vue_vue_type_script_setup_true_lang.js","names":["$slots"],"sources":["../../../src/components/input/input.vue"],"sourcesContent":["<template>\n <div\n :class=\"inputClass\"\n @mouseenter=\"handleMouseEnter\"\n @mouseleave=\"handleMouseLeave\"\n v-if=\"!readonly\"\n >\n <span v-if=\"$slots.prefix || prefix\" :class=\"prefixClass\" @click=\"handlePrefixClick\">\n {{ prefix }}\n <slot name=\"prefix\"></slot>\n </span>\n\n <input\n :class=\"cls.e('native')\"\n :placeholder=\"props.placeholder\"\n type=\"text\"\n :value=\"model\"\n @input=\"handleInput\"\n @change=\"handleChange\"\n @focus=\"handleFocus\"\n @blur=\"handleBlur\"\n @compositionstart=\"handleCompositionStart\"\n @compositionend=\"handleCompositionEnd\"\n autocomplete=\"off\"\n ref=\"el\"\n :disabled=\"disabled\"\n :readonly=\"nativeReadonly\"\n />\n\n <span :class=\"suffixClass\" v-if=\"hasSuffix\">\n <Transition name=\"zoom-in\" mode=\"out-in\">\n <UIcon\n v-if=\"showClear\"\n :class=\"cls.e('clear')\"\n title=\"清除\"\n @click.stop=\"clearModelValue\"\n key=\"clear\"\n >\n <Close />\n </UIcon>\n\n <span v-else :class=\"cls.e('suffix-content')\" @click=\"handleSuffixClick\" key=\"suffix\">\n {{ suffix }}\n <slot name=\"suffix\"></slot>\n </span>\n </Transition>\n </span>\n </div>\n\n <template v-else>\n {{ generateModel || FORM_EMPTY_CONTENT }}\n </template>\n</template>\n\n<script lang=\"tsx\" setup>\nimport { useFocus, useFormFallbackProps } from '@veltra/compositions'\nimport { Close } from '@veltra/icons/normal'\nimport { bem, FORM_EMPTY_CONTENT } from '@veltra/utils'\nimport { injectFormContext } from '@veltra/utils'\nimport { computed, getCurrentInstance, ref, shallowRef, nextTick } from 'vue'\n\nimport type { InputEmits, InputProps, _InputExposed } from '../../types'\nimport { UIcon } from '../icon'\n\ndefineOptions({ name: 'Input' })\n\nconst props = withDefaults(defineProps<InputProps>(), {\n placeholder: '请输入',\n clearable: true,\n disabled: undefined,\n readonly: undefined\n})\n\nconst emit = defineEmits<InputEmits>()\n\nconst model = defineModel<string>()\n\nconst inst = getCurrentInstance()\n\nconst cls = bem('input')\n\nconst { formProps } = injectFormContext()\n\nconst { size, disabled, readonly } = useFormFallbackProps([formProps ?? {}, props])\n\nconst { focus, handleBlur, handleFocus } = useFocus((focused) => {\n if (focused) {\n emit('focus')\n } else {\n emit('blur')\n }\n})\n\nconst inputClass = computed(() => {\n return [\n cls.b,\n cls.m(size.value),\n bem.is('disabled', disabled.value),\n bem.is('readonly', readonly.value),\n bem.is('focus', focus.value)\n ]\n})\n\nconst prefixClass = [cls.e('prefix'), bem.is('clickable', !!inst?.vnode.props?.['onPrefix:click'])]\n\nconst suffixClass = [cls.e('suffix'), bem.is('clickable', !!inst?.vnode.props?.['onSuffix:click'])]\n\nlet isComposing = false\n\nfunction handleCompositionStart() {\n isComposing = true\n}\n\nfunction handleCompositionEnd(e: Event) {\n isComposing = false\n handleInput(e)\n}\n\nconst handleInput = (e: Event) => {\n if (isComposing) return\n\n const inputVal = (e.target as HTMLInputElement).value\n emit('native:input', e)\n\n const valid = props.pattern?.test(inputVal) ?? true\n\n if (!valid) return\n model.value = inputVal\n}\n\nconst handlePrefixClick = () => {\n emit('prefix:click', model.value)\n}\n\nconst handleSuffixClick = () => {\n emit('suffix:click', model.value)\n}\n\nconst clearModelValue = () => {\n model.value = ''\n emit('clear')\n}\n\nconst hovered = ref(false)\nconst handleMouseEnter = () => {\n hovered.value = true\n}\n\nconst handleMouseLeave = () => {\n hovered.value = false\n}\n\nconst showClear = computed(() => {\n return props.clearable && !disabled.value && !!model.value && hovered.value\n})\n\nconst hasSuffixContent = computed(() => {\n return !!inst?.slots.suffix || !!props.suffix\n})\n\nconst hasSuffix = computed(() => {\n return hasSuffixContent.value || showClear.value\n})\n\nconst handleChange = (e: Event) => {\n const target = e.target as HTMLInputElement\n\n const valid = props.pattern?.test(target.value) ?? true\n\n if (valid) {\n emit('change', target.value)\n } else {\n nextTick(() => {\n target.value = model.value ?? ''\n })\n }\n}\n\nconst el = shallowRef<HTMLInputElement>()\n\nconst generateModel = computed(() => {\n if (!model.value) return ''\n\n return `${props.prefix ?? ''}${model.value}${props.suffix ?? ''}`\n})\n\ndefineExpose<_InputExposed>({ el })\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkEA,MAAM,QAAQ;EAOd,MAAM,OAAO;EAEb,MAAM,QAAQ,SAAmB,SAAA,
|
|
1
|
+
{"version":3,"file":"input.vue_vue_type_script_setup_true_lang.js","names":["$slots"],"sources":["../../../src/components/input/input.vue"],"sourcesContent":["<template>\n <div\n :class=\"inputClass\"\n @mouseenter=\"handleMouseEnter\"\n @mouseleave=\"handleMouseLeave\"\n v-if=\"!readonly\"\n >\n <span v-if=\"$slots.prefix || prefix\" :class=\"prefixClass\" @click=\"handlePrefixClick\">\n {{ prefix }}\n <slot name=\"prefix\"></slot>\n </span>\n\n <input\n :class=\"cls.e('native')\"\n :placeholder=\"props.placeholder\"\n type=\"text\"\n :value=\"model\"\n @input=\"handleInput\"\n @change=\"handleChange\"\n @focus=\"handleFocus\"\n @blur=\"handleBlur\"\n @compositionstart=\"handleCompositionStart\"\n @compositionend=\"handleCompositionEnd\"\n autocomplete=\"off\"\n ref=\"el\"\n :disabled=\"disabled\"\n :readonly=\"nativeReadonly\"\n />\n\n <span :class=\"suffixClass\" v-if=\"hasSuffix\">\n <Transition name=\"zoom-in\" mode=\"out-in\">\n <UIcon\n v-if=\"showClear\"\n :class=\"cls.e('clear')\"\n title=\"清除\"\n @click.stop=\"clearModelValue\"\n key=\"clear\"\n >\n <Close />\n </UIcon>\n\n <span v-else :class=\"cls.e('suffix-content')\" @click=\"handleSuffixClick\" key=\"suffix\">\n {{ suffix }}\n <slot name=\"suffix\"></slot>\n </span>\n </Transition>\n </span>\n </div>\n\n <template v-else>\n {{ generateModel || FORM_EMPTY_CONTENT }}\n </template>\n</template>\n\n<script lang=\"tsx\" setup>\nimport { useFocus, useFormFallbackProps } from '@veltra/compositions'\nimport { Close } from '@veltra/icons/normal'\nimport { bem, FORM_EMPTY_CONTENT } from '@veltra/utils'\nimport { injectFormContext } from '@veltra/utils'\nimport { computed, getCurrentInstance, ref, shallowRef, nextTick } from 'vue'\n\nimport type { InputEmits, InputProps, _InputExposed } from '../../types'\nimport { UIcon } from '../icon'\n\ndefineOptions({ name: 'Input' })\n\nconst props = withDefaults(defineProps<InputProps>(), {\n placeholder: '请输入',\n clearable: true,\n disabled: undefined,\n readonly: undefined\n})\n\nconst emit = defineEmits<InputEmits>()\n\nconst model = defineModel<string>()\n\nconst inst = getCurrentInstance()\n\nconst cls = bem('input')\n\nconst { formProps } = injectFormContext()\n\nconst { size, disabled, readonly } = useFormFallbackProps([formProps ?? {}, props])\n\nconst { focus, handleBlur, handleFocus } = useFocus((focused) => {\n if (focused) {\n emit('focus')\n } else {\n emit('blur')\n }\n})\n\nconst inputClass = computed(() => {\n return [\n cls.b,\n cls.m(size.value),\n bem.is('disabled', disabled.value),\n bem.is('readonly', readonly.value),\n bem.is('focus', focus.value)\n ]\n})\n\nconst prefixClass = [cls.e('prefix'), bem.is('clickable', !!inst?.vnode.props?.['onPrefix:click'])]\n\nconst suffixClass = [cls.e('suffix'), bem.is('clickable', !!inst?.vnode.props?.['onSuffix:click'])]\n\nlet isComposing = false\n\nfunction handleCompositionStart() {\n isComposing = true\n}\n\nfunction handleCompositionEnd(e: Event) {\n isComposing = false\n handleInput(e)\n}\n\nconst handleInput = (e: Event) => {\n if (isComposing) return\n\n const inputVal = (e.target as HTMLInputElement).value\n emit('native:input', e)\n\n const valid = props.pattern?.test(inputVal) ?? true\n\n if (!valid) return\n model.value = inputVal\n}\n\nconst handlePrefixClick = () => {\n emit('prefix:click', model.value)\n}\n\nconst handleSuffixClick = () => {\n emit('suffix:click', model.value)\n}\n\nconst clearModelValue = () => {\n model.value = ''\n emit('clear')\n}\n\nconst hovered = ref(false)\nconst handleMouseEnter = () => {\n hovered.value = true\n}\n\nconst handleMouseLeave = () => {\n hovered.value = false\n}\n\nconst showClear = computed(() => {\n return props.clearable && !disabled.value && !!model.value && hovered.value\n})\n\nconst hasSuffixContent = computed(() => {\n return !!inst?.slots.suffix || !!props.suffix\n})\n\nconst hasSuffix = computed(() => {\n return hasSuffixContent.value || showClear.value\n})\n\nconst handleChange = (e: Event) => {\n const target = e.target as HTMLInputElement\n\n const valid = props.pattern?.test(target.value) ?? true\n\n if (valid) {\n emit('change', target.value)\n } else {\n nextTick(() => {\n target.value = model.value ?? ''\n })\n }\n}\n\nconst el = shallowRef<HTMLInputElement>()\n\nconst generateModel = computed(() => {\n if (!model.value) return ''\n\n return `${props.prefix ?? ''}${model.value}${props.suffix ?? ''}`\n})\n\ndefineExpose<_InputExposed>({ el })\n</script>\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kbd.js","names":[],"sources":["../../../src/components/kbd/kbd.vue"],"sourcesContent":["<template>\n <kbd :class=\"cls.b\">\n <slot />\n </kbd>\n</template>\n\n<script lang=\"ts\" setup>\nimport { bem } from '@veltra/utils'\n\ndefineOptions({ name: 'Kbd' })\n\nconst cls = bem('kbd')\n</script>\n"],"mappings":";;;;;;;EAWA,MAAM,MAAM,IAAI,
|
|
1
|
+
{"version":3,"file":"kbd.js","names":[],"sources":["../../../src/components/kbd/kbd.vue"],"sourcesContent":["<template>\n <kbd :class=\"cls.b\">\n <slot />\n </kbd>\n</template>\n\n<script lang=\"ts\" setup>\nimport { bem } from '@veltra/utils'\n\ndefineOptions({ name: 'Kbd' })\n\nconst cls = bem('kbd')\n</script>\n"],"mappings":";;;;;;;EAWA,MAAM,MAAM,IAAI,KAAK;;uBAVnB,mBAEM,OAAA,EAFA,OAAK,eAAE,MAAA,GAAA,EAAI,CAAC,EAAA,GAAA,CAChB,WAAQ,KAAA,QAAA,SAAA,CAAA,GAAA,CAAA"}
|
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
import * as _$vue from "vue";
|
|
2
|
-
|
|
3
1
|
//#region src/components/kbd/kbd.vue.d.ts
|
|
4
2
|
declare var __VLS_1: {};
|
|
5
3
|
type __VLS_Slots = {} & {
|
|
6
4
|
default?: (props: typeof __VLS_1) => any;
|
|
7
5
|
};
|
|
8
|
-
declare const __VLS_base:
|
|
6
|
+
declare const __VLS_base: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
9
7
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
10
8
|
declare const _default: typeof __VLS_export;
|
|
11
9
|
type __VLS_WithSlots<T, S> = T & {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"di.js","names":[],"sources":["../../../src/components/layout/di.ts"],"sourcesContent":["import type { BEM } from '@veltra/utils'\nimport type { InjectionKey } from 'vue'\n\ninterface LayoutContext {\n cls: BEM<'layout'>\n}\n\nexport const LayoutDIKey: InjectionKey<LayoutContext> = Symbol('LayoutDIKey')\n"],"mappings":";AAOA,MAAa,cAA2C,OAAO,
|
|
1
|
+
{"version":3,"file":"di.js","names":[],"sources":["../../../src/components/layout/di.ts"],"sourcesContent":["import type { BEM } from '@veltra/utils'\nimport type { InjectionKey } from 'vue'\n\ninterface LayoutContext {\n cls: BEM<'layout'>\n}\n\nexport const LayoutDIKey: InjectionKey<LayoutContext> = Symbol('LayoutDIKey')\n"],"mappings":";AAOA,MAAa,cAA2C,OAAO,aAAa"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layout-resizer.js","names":[],"sources":["../../../src/components/layout/layout-resizer.vue"],"sourcesContent":["<template>\n <div\n :class=\"className\"\n :style=\"{ transform: `translate3d(${offsets.x}, ${offsets.y}, 0)` }\"\n ref=\"resizerRef\"\n >\n <u-icon :size=\"10\"> <Move /> </u-icon>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useDrag } from '@veltra/compositions'\nimport { Move } from '@veltra/icons/normal'\nimport { bem } from '@veltra/utils'\nimport { computed, inject, shallowReactive, shallowRef } from 'vue'\n\nimport { UIcon } from '../icon'\nimport { LayoutDIKey } from './di'\n\ndefineOptions({ name: 'LayoutResizer' })\n\nconst props = defineProps<{\n /** 是否横向 */\n horizontal?: boolean\n /** 默认偏移量 */\n offset?: number\n}>()\n\nconst emit = defineEmits<{\n (e: 'resize', offset: number): void\n (e: 'resize-start'): void\n (e: 'resize-end'): void\n}>()\n\nconst { cls } = inject(LayoutDIKey)!\n\nconst className = computed(() => {\n return [cls.e('resizer'), bem.is('horizontal', props.horizontal)]\n})\n\nconst resizerRef = shallowRef<HTMLDivElement>()\n\nlet offset = props.offset ?? 0\nconst offsets = shallowReactive({\n x: props.horizontal ? '0' : offset + 'px',\n y: props.horizontal ? offset + 'px' : '0'\n})\nlet currentOffset = 0\nuseDrag({\n target: resizerRef,\n onDragStart() {\n currentOffset = offset\n emit('resize-start')\n },\n onDrag({ x, y }) {\n if (!props.horizontal) {\n offset = currentOffset + x\n offsets.x = offset + 'px'\n emit('resize', x)\n } else {\n offset = currentOffset + y\n offsets.y = offset + 'px'\n emit('resize', y)\n }\n },\n onDragEnd() {\n emit('resize-end')\n }\n})\n\ndefineExpose({\n update(_offset: number): void {\n offset = _offset\n if (!props.horizontal) {\n offsets.x = offset + 'px'\n } else {\n offsets.y = offset + 'px'\n }\n }\n})\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;EAqBA,MAAM,QAAQ;EAOd,MAAM,OAAO;EAMb,MAAM,EAAE,QAAQ,OAAO,
|
|
1
|
+
{"version":3,"file":"layout-resizer.js","names":[],"sources":["../../../src/components/layout/layout-resizer.vue"],"sourcesContent":["<template>\n <div\n :class=\"className\"\n :style=\"{ transform: `translate3d(${offsets.x}, ${offsets.y}, 0)` }\"\n ref=\"resizerRef\"\n >\n <u-icon :size=\"10\"> <Move /> </u-icon>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useDrag } from '@veltra/compositions'\nimport { Move } from '@veltra/icons/normal'\nimport { bem } from '@veltra/utils'\nimport { computed, inject, shallowReactive, shallowRef } from 'vue'\n\nimport { UIcon } from '../icon'\nimport { LayoutDIKey } from './di'\n\ndefineOptions({ name: 'LayoutResizer' })\n\nconst props = defineProps<{\n /** 是否横向 */\n horizontal?: boolean\n /** 默认偏移量 */\n offset?: number\n}>()\n\nconst emit = defineEmits<{\n (e: 'resize', offset: number): void\n (e: 'resize-start'): void\n (e: 'resize-end'): void\n}>()\n\nconst { cls } = inject(LayoutDIKey)!\n\nconst className = computed(() => {\n return [cls.e('resizer'), bem.is('horizontal', props.horizontal)]\n})\n\nconst resizerRef = shallowRef<HTMLDivElement>()\n\nlet offset = props.offset ?? 0\nconst offsets = shallowReactive({\n x: props.horizontal ? '0' : offset + 'px',\n y: props.horizontal ? offset + 'px' : '0'\n})\nlet currentOffset = 0\nuseDrag({\n target: resizerRef,\n onDragStart() {\n currentOffset = offset\n emit('resize-start')\n },\n onDrag({ x, y }) {\n if (!props.horizontal) {\n offset = currentOffset + x\n offsets.x = offset + 'px'\n emit('resize', x)\n } else {\n offset = currentOffset + y\n offsets.y = offset + 'px'\n emit('resize', y)\n }\n },\n onDragEnd() {\n emit('resize-end')\n }\n})\n\ndefineExpose({\n update(_offset: number): void {\n offset = _offset\n if (!props.horizontal) {\n offsets.x = offset + 'px'\n } else {\n offsets.y = offset + 'px'\n }\n }\n})\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;EAqBA,MAAM,QAAQ;EAOd,MAAM,OAAO;EAMb,MAAM,EAAE,QAAQ,OAAO,WAAW;EAElC,MAAM,YAAY,eAAe;GAC/B,OAAO,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,GAAG,cAAc,MAAM,UAAU,CAAC;EAClE,CAAC;EAED,MAAM,aAAa,WAA2B;EAE9C,IAAI,SAAS,MAAM,UAAU;EAC7B,MAAM,UAAU,gBAAgB;GAC9B,GAAG,MAAM,aAAa,MAAM,SAAS;GACrC,GAAG,MAAM,aAAa,SAAS,OAAO;EACxC,CAAC;EACD,IAAI,gBAAgB;EACpB,QAAQ;GACN,QAAQ;GACR,cAAc;IACZ,gBAAgB;IAChB,KAAK,cAAc;GACrB;GACA,OAAO,EAAE,GAAG,KAAK;IACf,IAAI,CAAC,MAAM,YAAY;KACrB,SAAS,gBAAgB;KACzB,QAAQ,IAAI,SAAS;KACrB,KAAK,UAAU,CAAC;IAClB,OAAO;KACL,SAAS,gBAAgB;KACzB,QAAQ,IAAI,SAAS;KACrB,KAAK,UAAU,CAAC;IAClB;GACF;GACA,YAAY;IACV,KAAK,YAAY;GACnB;EACF,CAAC;EAED,SAAa,EACX,OAAO,SAAuB;GAC5B,SAAS;GACT,IAAI,CAAC,MAAM,YACT,QAAQ,IAAI,SAAS;QAErB,QAAQ,IAAI,SAAS;EAEzB,EACF,CAAC;;uBA9EC,mBAMM,OAAA;IALH,OAAK,eAAE,UAAA,KAAS;IAChB,OAAK,eAAA,EAAA,WAAA,eAA8B,MAAA,OAAA,EAAQ,EAAC,IAAK,MAAA,OAAA,EAAQ,EAAC,MAAA,CAAA;aACvD;IAAJ,KAAI;OAEJ,YAAsC,MAAA,WAAA,GAAA,EAA7B,MAAM,GAAE,GAAA;2BAAW,CAAR,YAAQ,MAAA,IAAA,CAAA,CAAA,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layout.js","names":[],"sources":["../../../src/components/layout/layout.vue"],"sourcesContent":["<template>\n <component :is=\"tag\" :class=\"cls.b\" :style=\"style\" ref=\"containerRef\">\n <slot />\n\n <!-- 竖向调节 -->\n <ULayoutResizer\n v-for=\"(offset, index) of resizerOffsets\"\n :offset=\"offset\"\n :key=\"index\"\n ref=\"resizerRefs\"\n direction=\"vertical\"\n @resize=\"handleResize($event, index)\"\n @resize-start=\"handleStartResize(index)\"\n >\n </ULayoutResizer>\n\n <!-- 横向调节 -->\n <!-- <ULayoutResizer\n v-for=\"item in horizontalResizerList\"\n :key=\"item\"\n direction=\"horizontal\"\n /> -->\n </component>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useResizeObserver } from '@veltra/compositions'\nimport { bem, withUnit } from '@veltra/utils'\nimport {\n computed,\n shallowRef,\n type CSSProperties,\n provide,\n watchEffect,\n ref,\n watch,\n nextTick\n} from 'vue'\n\nimport type { LayoutProps } from '../../types'\nimport { LayoutDIKey } from './di'\nimport ULayoutResizer from './layout-resizer.vue'\n\ndefineOptions({ name: 'Layout' })\n\nconst props = withDefaults(defineProps<LayoutProps>(), { tag: 'div' })\n\nconst cls = bem('layout')\n\nconst templateCols = ref<string[]>([])\n\nwatchEffect(() => {\n const { cols } = props\n if (!cols) {\n templateCols.value = []\n return\n }\n templateCols.value = typeof cols === 'string' ? cols.split(' ') : [...cols]\n})\n\nconst style = computed<CSSProperties>(() => {\n const { rows, gap, resizable } = props\n return {\n gridTemplateColumns: templateCols.value.join(' '),\n gridTemplateRows: rows ? (typeof rows === 'string' ? rows : rows.join(' ')) : '',\n columnGap: resizable ? '10px' : withUnit(gap, 'px')\n }\n})\n\nconst containerRef = shallowRef<HTMLElement>()\nconst resizerRefs = shallowRef<InstanceType<typeof ULayoutResizer>[]>([])\n\nconst resizerOffsets = ref<number[]>([])\n\nfunction getResizeOffsets() {\n const container = containerRef.value\n if (!props.resizable || !container || !props.cols) {\n return (resizerOffsets.value = [])\n }\n\n resizerOffsets.value = templateCols.value.slice(0, -1).map((_, index) => {\n const dom = container.children[index] as HTMLElement\n if (!dom) return 0\n return dom.offsetLeft + dom.offsetWidth\n })\n}\n\nwatch([() => props.resizable, containerRef, () => props.cols], () => {\n nextTick(() => {\n getResizeOffsets()\n })\n})\n\nuseResizeObserver({\n targets: containerRef,\n onResize() {\n getResizeOffsets()\n resizerRefs.value.forEach((r, i) => {\n r.update(resizerOffsets.value![i]!)\n })\n }\n})\n\n// const horizontalResizerList = []\n\n// const resizing = shallowRef(false)\n\nlet prevSize = 0\nlet nextSize = 0\nconst handleStartResize = (index: number) => {\n const container = containerRef.value\n if (!container) return\n\n // 拖拽前把相邻两列按实际渲染宽度固定成 px,\n // 这样拖拽时两列等量增减、容器整体宽度保持不变。\n const prevDom = container.children[index] as HTMLElement | undefined\n const nextDom = container.children[index + 1] as HTMLElement | undefined\n prevSize = prevDom ? prevDom.getBoundingClientRect().width : 0\n nextSize = nextDom ? nextDom.getBoundingClientRect().width : 0\n}\nconst handleResize = (offset: number, index: number) => {\n // 钳位到 [-prevSize, nextSize],避免轨道尺寸出现负值——\n // 一旦 grid-template-columns 中带负值,整条声明会被浏览器丢弃。\n const clamped = Math.max(-prevSize, Math.min(nextSize, offset))\n templateCols.value[index] = `${prevSize + clamped}px`\n templateCols.value[index + 1] = `${nextSize - clamped}px`\n}\n\nprovide(LayoutDIKey, { cls })\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;EA6CA,MAAM,QAAQ;EAEd,MAAM,MAAM,IAAI,
|
|
1
|
+
{"version":3,"file":"layout.js","names":[],"sources":["../../../src/components/layout/layout.vue"],"sourcesContent":["<template>\n <component :is=\"tag\" :class=\"cls.b\" :style=\"style\" ref=\"containerRef\">\n <slot />\n\n <!-- 竖向调节 -->\n <ULayoutResizer\n v-for=\"(offset, index) of resizerOffsets\"\n :offset=\"offset\"\n :key=\"index\"\n ref=\"resizerRefs\"\n direction=\"vertical\"\n @resize=\"handleResize($event, index)\"\n @resize-start=\"handleStartResize(index)\"\n >\n </ULayoutResizer>\n\n <!-- 横向调节 -->\n <!-- <ULayoutResizer\n v-for=\"item in horizontalResizerList\"\n :key=\"item\"\n direction=\"horizontal\"\n /> -->\n </component>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useResizeObserver } from '@veltra/compositions'\nimport { bem, withUnit } from '@veltra/utils'\nimport {\n computed,\n shallowRef,\n type CSSProperties,\n provide,\n watchEffect,\n ref,\n watch,\n nextTick\n} from 'vue'\n\nimport type { LayoutProps } from '../../types'\nimport { LayoutDIKey } from './di'\nimport ULayoutResizer from './layout-resizer.vue'\n\ndefineOptions({ name: 'Layout' })\n\nconst props = withDefaults(defineProps<LayoutProps>(), { tag: 'div' })\n\nconst cls = bem('layout')\n\nconst templateCols = ref<string[]>([])\n\nwatchEffect(() => {\n const { cols } = props\n if (!cols) {\n templateCols.value = []\n return\n }\n templateCols.value = typeof cols === 'string' ? cols.split(' ') : [...cols]\n})\n\nconst style = computed<CSSProperties>(() => {\n const { rows, gap, resizable } = props\n return {\n gridTemplateColumns: templateCols.value.join(' '),\n gridTemplateRows: rows ? (typeof rows === 'string' ? rows : rows.join(' ')) : '',\n columnGap: resizable ? '10px' : withUnit(gap, 'px')\n }\n})\n\nconst containerRef = shallowRef<HTMLElement>()\nconst resizerRefs = shallowRef<InstanceType<typeof ULayoutResizer>[]>([])\n\nconst resizerOffsets = ref<number[]>([])\n\nfunction getResizeOffsets() {\n const container = containerRef.value\n if (!props.resizable || !container || !props.cols) {\n return (resizerOffsets.value = [])\n }\n\n resizerOffsets.value = templateCols.value.slice(0, -1).map((_, index) => {\n const dom = container.children[index] as HTMLElement\n if (!dom) return 0\n return dom.offsetLeft + dom.offsetWidth\n })\n}\n\nwatch([() => props.resizable, containerRef, () => props.cols], () => {\n nextTick(() => {\n getResizeOffsets()\n })\n})\n\nuseResizeObserver({\n targets: containerRef,\n onResize() {\n getResizeOffsets()\n resizerRefs.value.forEach((r, i) => {\n r.update(resizerOffsets.value![i]!)\n })\n }\n})\n\n// const horizontalResizerList = []\n\n// const resizing = shallowRef(false)\n\nlet prevSize = 0\nlet nextSize = 0\nconst handleStartResize = (index: number) => {\n const container = containerRef.value\n if (!container) return\n\n // 拖拽前把相邻两列按实际渲染宽度固定成 px,\n // 这样拖拽时两列等量增减、容器整体宽度保持不变。\n const prevDom = container.children[index] as HTMLElement | undefined\n const nextDom = container.children[index + 1] as HTMLElement | undefined\n prevSize = prevDom ? prevDom.getBoundingClientRect().width : 0\n nextSize = nextDom ? nextDom.getBoundingClientRect().width : 0\n}\nconst handleResize = (offset: number, index: number) => {\n // 钳位到 [-prevSize, nextSize],避免轨道尺寸出现负值——\n // 一旦 grid-template-columns 中带负值,整条声明会被浏览器丢弃。\n const clamped = Math.max(-prevSize, Math.min(nextSize, offset))\n templateCols.value[index] = `${prevSize + clamped}px`\n templateCols.value[index + 1] = `${nextSize - clamped}px`\n}\n\nprovide(LayoutDIKey, { cls })\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;EA6CA,MAAM,QAAQ;EAEd,MAAM,MAAM,IAAI,QAAQ;EAExB,MAAM,eAAe,IAAc,CAAC,CAAC;EAErC,kBAAkB;GAChB,MAAM,EAAE,SAAS;GACjB,IAAI,CAAC,MAAM;IACT,aAAa,QAAQ,CAAC;IACtB;GACF;GACA,aAAa,QAAQ,OAAO,SAAS,WAAW,KAAK,MAAM,GAAG,IAAI,CAAC,GAAG,IAAI;EAC5E,CAAC;EAED,MAAM,QAAQ,eAA8B;GAC1C,MAAM,EAAE,MAAM,KAAK,cAAc;GACjC,OAAO;IACL,qBAAqB,aAAa,MAAM,KAAK,GAAG;IAChD,kBAAkB,OAAQ,OAAO,SAAS,WAAW,OAAO,KAAK,KAAK,GAAG,IAAK;IAC9E,WAAW,YAAY,SAAS,SAAS,KAAK,IAAI;GACpD;EACF,CAAC;EAED,MAAM,eAAe,WAAwB;EAC7C,MAAM,cAAc,WAAkD,CAAC,CAAC;EAExE,MAAM,iBAAiB,IAAc,CAAC,CAAC;EAEvC,SAAS,mBAAmB;GAC1B,MAAM,YAAY,aAAa;GAC/B,IAAI,CAAC,MAAM,aAAa,CAAC,aAAa,CAAC,MAAM,MAC3C,OAAQ,eAAe,QAAQ,CAAC;GAGlC,eAAe,QAAQ,aAAa,MAAM,MAAM,GAAG,EAAE,EAAE,KAAK,GAAG,UAAU;IACvE,MAAM,MAAM,UAAU,SAAS;IAC/B,IAAI,CAAC,KAAK,OAAO;IACjB,OAAO,IAAI,aAAa,IAAI;GAC9B,CAAC;EACH;EAEA,MAAM;SAAO,MAAM;GAAW;SAAoB,MAAM;EAAI,SAAS;GACnE,eAAe;IACb,iBAAiB;GACnB,CAAC;EACH,CAAC;EAED,kBAAkB;GAChB,SAAS;GACT,WAAW;IACT,iBAAiB;IACjB,YAAY,MAAM,SAAS,GAAG,MAAM;KAClC,EAAE,OAAO,eAAe,MAAO,EAAG;IACpC,CAAC;GACH;EACF,CAAC;EAMD,IAAI,WAAW;EACf,IAAI,WAAW;EACf,MAAM,qBAAqB,UAAkB;GAC3C,MAAM,YAAY,aAAa;GAC/B,IAAI,CAAC,WAAW;GAIhB,MAAM,UAAU,UAAU,SAAS;GACnC,MAAM,UAAU,UAAU,SAAS,QAAQ;GAC3C,WAAW,UAAU,QAAQ,sBAAsB,EAAE,QAAQ;GAC7D,WAAW,UAAU,QAAQ,sBAAsB,EAAE,QAAQ;EAC/D;EACA,MAAM,gBAAgB,QAAgB,UAAkB;GAGtD,MAAM,UAAU,KAAK,IAAI,CAAC,UAAU,KAAK,IAAI,UAAU,MAAM,CAAC;GAC9D,aAAa,MAAM,SAAS,GAAG,WAAW,QAAQ;GAClD,aAAa,MAAM,QAAQ,KAAK,GAAG,WAAW,QAAQ;EACxD;EAEA,QAAQ,aAAa,EAAE,IAAI,CAAC;;uBA/H1B,YAqBY,wBArBI,QAAA,GAAG,GAAA;IAAG,OAAK,eAAE,MAAA,GAAA,EAAI,CAAC;IAAG,OAAK,eAAE,MAAA,KAAK;aAAM;IAAJ,KAAI;;2BAC7C;KAAR,WAAQ,KAAA,QAAA,SAAA;KAER,mBAAA,QAAA;uBACA,mBASiB,UAAA,MAAA,WARW,eAAA,QAAlB,QAAQ,UAAK;0BADvB,YASiB,aAAA;OAPN;OACR,KAAK;;gBACF;OAAJ,KAAI;OACJ,WAAU;OACT,WAAM,WAAE,aAAa,QAAQ,KAAK;OAClC,gBAAY,WAAE,kBAAkB,KAAK;;;;;;;KAIxC,mBAAA,QAAA;KACA,mBAAA,+HAAA"}
|
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
import { LayoutProps } from "../../types/layout.js";
|
|
2
|
-
import * as _$vue from "vue";
|
|
3
|
-
|
|
4
2
|
//#region src/components/layout/layout.vue.d.ts
|
|
5
3
|
declare var __VLS_9: {};
|
|
6
4
|
type __VLS_Slots = {} & {
|
|
7
5
|
default?: (props: typeof __VLS_9) => any;
|
|
8
6
|
};
|
|
9
|
-
declare const __VLS_base:
|
|
7
|
+
declare const __VLS_base: import("vue").DefineComponent<LayoutProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<LayoutProps> & Readonly<{}>, {
|
|
10
8
|
tag: string;
|
|
11
|
-
}, {}, {}, {}, string,
|
|
9
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
12
10
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
13
11
|
declare const _default: typeof __VLS_export;
|
|
14
12
|
type __VLS_WithSlots<T, S> = T & {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-item.js","names":[],"sources":["../../../src/components/list/list-item.vue"],"sourcesContent":["<template>\n <li :class=\"cls.b\">\n <slot />\n </li>\n</template>\n\n<script lang=\"ts\" setup>\nimport { bem } from '@veltra/utils'\n\ndefineOptions({ name: 'ListItem' })\n\nconst cls = bem('list-item')\n</script>\n"],"mappings":";;;;;;;EAWA,MAAM,MAAM,IAAI,
|
|
1
|
+
{"version":3,"file":"list-item.js","names":[],"sources":["../../../src/components/list/list-item.vue"],"sourcesContent":["<template>\n <li :class=\"cls.b\">\n <slot />\n </li>\n</template>\n\n<script lang=\"ts\" setup>\nimport { bem } from '@veltra/utils'\n\ndefineOptions({ name: 'ListItem' })\n\nconst cls = bem('list-item')\n</script>\n"],"mappings":";;;;;;;EAWA,MAAM,MAAM,IAAI,WAAW;;uBAVzB,mBAEK,MAAA,EAFA,OAAK,eAAE,MAAA,GAAA,EAAI,CAAC,EAAA,GAAA,CACf,WAAQ,KAAA,QAAA,SAAA,CAAA,GAAA,CAAA"}
|
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
import * as _$vue from "vue";
|
|
2
|
-
|
|
3
1
|
//#region src/components/list/list-item.vue.d.ts
|
|
4
2
|
declare var __VLS_1: {};
|
|
5
3
|
type __VLS_Slots = {} & {
|
|
6
4
|
default?: (props: typeof __VLS_1) => any;
|
|
7
5
|
};
|
|
8
|
-
declare const __VLS_base:
|
|
6
|
+
declare const __VLS_base: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
9
7
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
10
8
|
declare const _default: typeof __VLS_export;
|
|
11
9
|
type __VLS_WithSlots<T, S> = T & {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","names":[],"sources":["../../../src/components/list/list.vue"],"sourcesContent":["<template>\n <u-scroll tag=\"ul\" :class=\"[cls.b, cls.m(size)]\">\n <slot v-for=\"(item, index) of data\" v-bind=\"{ item, index }\" />\n </u-scroll>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFallbackProps } from '@veltra/compositions'\nimport { bem } from '@veltra/utils'\n\nimport type { ListProps } from '../../types'\nimport type { ComponentSize } from '../../types'\nimport { UScroll } from '../scroll'\n\ndefineOptions({ name: 'List' })\n\nconst props = withDefaults(defineProps<ListProps>(), {})\n\nconst { size } = useFallbackProps([props], { size: 'default' as ComponentSize })\n\nconst cls = bem('list')\n</script>\n"],"mappings":";;;;;;;;;;;;;EAkBA,MAAM,EAAE,SAAS,iBAAiB,CAAC,
|
|
1
|
+
{"version":3,"file":"list.js","names":[],"sources":["../../../src/components/list/list.vue"],"sourcesContent":["<template>\n <u-scroll tag=\"ul\" :class=\"[cls.b, cls.m(size)]\">\n <slot v-for=\"(item, index) of data\" v-bind=\"{ item, index }\" />\n </u-scroll>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFallbackProps } from '@veltra/compositions'\nimport { bem } from '@veltra/utils'\n\nimport type { ListProps } from '../../types'\nimport type { ComponentSize } from '../../types'\nimport { UScroll } from '../scroll'\n\ndefineOptions({ name: 'List' })\n\nconst props = withDefaults(defineProps<ListProps>(), {})\n\nconst { size } = useFallbackProps([props], { size: 'default' as ComponentSize })\n\nconst cls = bem('list')\n</script>\n"],"mappings":";;;;;;;;;;;;;EAkBA,MAAM,EAAE,SAAS,iBAAiB,CAAC,OAAK,GAAG,EAAE,MAAM,UAA2B,CAAC;EAE/E,MAAM,MAAM,IAAI,MAAM;;uBAnBpB,YAEW,MAAA,WAAA,GAAA;IAFD,KAAI;IAAM,OAAK,eAAA,CAAG,MAAA,GAAA,EAAI,GAAG,MAAA,GAAA,EAAI,EAAE,MAAA,IAAA,CAAI,CAAA,CAAA;;2BACR,EAAA,UAAA,IAAA,GAAnC,mBAA+D,UAAA,MAAA,WAAjC,QAAA,OAAhB,MAAM,UAAK;YAAzB,WAA+D,KAAA,QAAA,WAA/D,WAA+D,EAAA,SAAA,KAAA,GAAA;MAAjB;MAAM;KAAK,CAAA,CAAA"}
|
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
import { ListProps } from "../../types/list.js";
|
|
2
|
-
import * as _$vue from "vue";
|
|
3
|
-
|
|
4
2
|
//#region src/components/list/list.vue.d.ts
|
|
5
3
|
declare var __VLS_8: {
|
|
6
4
|
item: Record<string, any>;
|
|
@@ -9,7 +7,7 @@ declare var __VLS_8: {
|
|
|
9
7
|
type __VLS_Slots = {} & {
|
|
10
8
|
default?: (props: typeof __VLS_8) => any;
|
|
11
9
|
};
|
|
12
|
-
declare const __VLS_base:
|
|
10
|
+
declare const __VLS_base: import("vue").DefineComponent<ListProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<ListProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
13
11
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
14
12
|
declare const _default: typeof __VLS_export;
|
|
15
13
|
type __VLS_WithSlots<T, S> = T & {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"directive.js","names":["LoadingComponent"],"sources":["../../../src/components/loading/directive.ts"],"sourcesContent":["import { bem } from '@veltra/utils'\nimport { createVNode, render, type DirectiveBinding, type ObjectDirective } from 'vue'\n\nimport type { LoadingType } from '../../types'\nimport LoadingComponent from './loading.vue'\n\nconst loadingCls = bem('loading')\nconst loadingContainerCls = loadingCls.e('container')\n\nfunction renderLoading(el: HTMLElement, binding: DirectiveBinding) {\n el.classList.add(loadingContainerCls)\n\n const node = createVNode(LoadingComponent, { type: binding.arg as LoadingType })\n\n render(node, el)\n}\n\nfunction removeLoading(el: HTMLElement) {\n render(null, el)\n el.classList.remove(loadingContainerCls)\n}\nexport const vLoading: ObjectDirective<HTMLElement> = {\n mounted(el, binding) {\n binding.value && renderLoading(el, binding)\n },\n\n updated(el, binding) {\n binding.value ? renderLoading(el, binding) : removeLoading(el)\n },\n\n unmounted(el) {\n removeLoading(el)\n }\n}\n"],"mappings":";;;;AAOA,MAAM,sBADa,IAAI,
|
|
1
|
+
{"version":3,"file":"directive.js","names":["LoadingComponent"],"sources":["../../../src/components/loading/directive.ts"],"sourcesContent":["import { bem } from '@veltra/utils'\nimport { createVNode, render, type DirectiveBinding, type ObjectDirective } from 'vue'\n\nimport type { LoadingType } from '../../types'\nimport LoadingComponent from './loading.vue'\n\nconst loadingCls = bem('loading')\nconst loadingContainerCls = loadingCls.e('container')\n\nfunction renderLoading(el: HTMLElement, binding: DirectiveBinding) {\n el.classList.add(loadingContainerCls)\n\n const node = createVNode(LoadingComponent, { type: binding.arg as LoadingType })\n\n render(node, el)\n}\n\nfunction removeLoading(el: HTMLElement) {\n render(null, el)\n el.classList.remove(loadingContainerCls)\n}\nexport const vLoading: ObjectDirective<HTMLElement> = {\n mounted(el, binding) {\n binding.value && renderLoading(el, binding)\n },\n\n updated(el, binding) {\n binding.value ? renderLoading(el, binding) : removeLoading(el)\n },\n\n unmounted(el) {\n removeLoading(el)\n }\n}\n"],"mappings":";;;;AAOA,MAAM,sBADa,IAAI,SACc,EAAE,EAAE,WAAW;AAEpD,SAAS,cAAc,IAAiB,SAA2B;CACjE,GAAG,UAAU,IAAI,mBAAmB;CAIpC,OAFa,YAAYA,WAAkB,EAAE,MAAM,QAAQ,IAAmB,CAEpE,GAAG,EAAE;AACjB;AAEA,SAAS,cAAc,IAAiB;CACtC,OAAO,MAAM,EAAE;CACf,GAAG,UAAU,OAAO,mBAAmB;AACzC;AACA,MAAa,WAAyC;CACpD,QAAQ,IAAI,SAAS;EACnB,QAAQ,SAAS,cAAc,IAAI,OAAO;CAC5C;CAEA,QAAQ,IAAI,SAAS;EACnB,QAAQ,QAAQ,cAAc,IAAI,OAAO,IAAI,cAAc,EAAE;CAC/D;CAEA,UAAU,IAAI;EACZ,cAAc,EAAE;CAClB;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loading.js","names":[],"sources":["../../../src/components/loading/loading.vue"],"sourcesContent":["<template>\n <transition name=\"fade\" appear>\n <div :class=\"className\" :style=\"{ zIndex: zIndex() }\">\n <div :class=\"cls.e('loader')\"></div>\n </div>\n </transition>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFallbackProps } from '@veltra/compositions'\nimport { bem, zIndex } from '@veltra/utils'\nimport { computed } from 'vue'\n\nimport type { LoadingProps, ComponentSize } from '../../types'\n\ndefineOptions({ name: 'Loading' })\n\nconst props = withDefaults(defineProps<LoadingProps>(), { type: 'spinner' })\n\nconst { size } = useFallbackProps([props], { size: 'default' as ComponentSize })\n\nconst cls = bem('loading')\n\nconst className = computed(() => {\n return [cls.b, cls.m(size.value), cls.e(props.type)]\n})\n</script>\n"],"mappings":";;;;;;;;;EAiBA,MAAM,QAAQ;EAEd,MAAM,EAAE,SAAS,iBAAiB,CAAC,
|
|
1
|
+
{"version":3,"file":"loading.js","names":[],"sources":["../../../src/components/loading/loading.vue"],"sourcesContent":["<template>\n <transition name=\"fade\" appear>\n <div :class=\"className\" :style=\"{ zIndex: zIndex() }\">\n <div :class=\"cls.e('loader')\"></div>\n </div>\n </transition>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFallbackProps } from '@veltra/compositions'\nimport { bem, zIndex } from '@veltra/utils'\nimport { computed } from 'vue'\n\nimport type { LoadingProps, ComponentSize } from '../../types'\n\ndefineOptions({ name: 'Loading' })\n\nconst props = withDefaults(defineProps<LoadingProps>(), { type: 'spinner' })\n\nconst { size } = useFallbackProps([props], { size: 'default' as ComponentSize })\n\nconst cls = bem('loading')\n\nconst className = computed(() => {\n return [cls.b, cls.m(size.value), cls.e(props.type)]\n})\n</script>\n"],"mappings":";;;;;;;;;EAiBA,MAAM,QAAQ;EAEd,MAAM,EAAE,SAAS,iBAAiB,CAAC,KAAK,GAAG,EAAE,MAAM,UAA2B,CAAC;EAE/E,MAAM,MAAM,IAAI,SAAS;EAEzB,MAAM,YAAY,eAAe;GAC/B,OAAO;IAAC,IAAI;IAAG,IAAI,EAAE,KAAK,KAAK;IAAG,IAAI,EAAE,MAAM,IAAI;GAAC;EACrD,CAAC;;uBAxBC,YAIa,YAAA;IAJD,MAAK;IAAO,QAAA;;2BAGhB,CAFN,mBAEM,OAAA;KAFA,OAAK,eAAE,UAAA,KAAS;KAAG,OAAK,eAAA,EAAA,QAAY,MAAA,MAAA,EAAM,EAAA,CAAA;QAC9C,mBAAoC,OAAA,EAA9B,OAAK,eAAE,MAAA,GAAA,EAAI,EAAC,QAAA,CAAA,EAAA,GAAA,MAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA"}
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
import { LoadingProps, LoadingType } from "../../types/loading.js";
|
|
2
|
-
import * as _$vue from "vue";
|
|
3
|
-
|
|
4
2
|
//#region src/components/loading/loading.vue.d.ts
|
|
5
|
-
declare const __VLS_export:
|
|
3
|
+
declare const __VLS_export: import("vue").DefineComponent<LoadingProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<LoadingProps> & Readonly<{}>, {
|
|
6
4
|
type: LoadingType;
|
|
7
|
-
}, {}, {}, {}, string,
|
|
5
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
8
6
|
declare const _default: typeof __VLS_export;
|
|
9
7
|
//#endregion
|
|
10
8
|
export { _default };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"di.js","names":[],"sources":["../../../src/components/menu/di.ts"],"sourcesContent":["import { type BEM, ExpandTransition } from '@veltra/utils'\nimport type { ComputedRef, InjectionKey } from 'vue'\n\nimport type { MenuProps, MenuEmits } from '../../types'\nimport type { ComponentSize } from '../../types'\n\nexport interface MenuContext {\n cls: BEM<'menu', 'u-'>\n collapsedCls: BEM<'collapsed-menu', 'u-'>\n menuProps: MenuProps\n menuEmit: MenuEmits\n expandedPath: Set<string>\n size: ComputedRef<ComponentSize>\n expandTransition: ExpandTransition\n}\n\nexport const MenuDIKey: InjectionKey<MenuContext> = Symbol('MenuDIKey')\n"],"mappings":";;AAgBA,MAAa,YAAuC,OAAO,
|
|
1
|
+
{"version":3,"file":"di.js","names":[],"sources":["../../../src/components/menu/di.ts"],"sourcesContent":["import { type BEM, ExpandTransition } from '@veltra/utils'\nimport type { ComputedRef, InjectionKey } from 'vue'\n\nimport type { MenuProps, MenuEmits } from '../../types'\nimport type { ComponentSize } from '../../types'\n\nexport interface MenuContext {\n cls: BEM<'menu', 'u-'>\n collapsedCls: BEM<'collapsed-menu', 'u-'>\n menuProps: MenuProps\n menuEmit: MenuEmits\n expandedPath: Set<string>\n size: ComputedRef<ComponentSize>\n expandTransition: ExpandTransition\n}\n\nexport const MenuDIKey: InjectionKey<MenuContext> = Symbol('MenuDIKey')\n"],"mappings":";;AAgBA,MAAa,YAAuC,OAAO,WAAW"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helper.js","names":[],"sources":["../../../src/components/menu/helper.ts"],"sourcesContent":["export function getKey(index: number, parentKey: string): string {\n return `${parentKey}-${index}`\n}\n"],"mappings":";AAAA,SAAgB,OAAO,OAAe,WAA2B;CAC/D,OAAO,GAAG,UAAU,GAAG"}
|
|
1
|
+
{"version":3,"file":"helper.js","names":[],"sources":["../../../src/components/menu/helper.ts"],"sourcesContent":["export function getKey(index: number, parentKey: string): string {\n return `${parentKey}-${index}`\n}\n"],"mappings":";AAAA,SAAgB,OAAO,OAAe,WAA2B;CAC/D,OAAO,GAAG,UAAU,GAAG;AACzB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu-icon.js","names":[],"sources":["../../../src/components/menu/menu-icon.vue"],"sourcesContent":["<template>\n <u-icon v-if=\"typeof icon !== 'string'\">\n <component :is=\"icon\" />\n </u-icon>\n\n <img :src=\"icon\" v-else alt=\"icon\" />\n</template>\n\n<script lang=\"ts\" setup>\nimport type { DefineComponent } from 'vue'\n\nimport { UIcon } from '../icon'\n\ndefineOptions({ name: 'MenuIcon' })\n\ndefineProps<{ icon: string | DefineComponent }>()\n</script>\n"],"mappings":";;;;;;;;;;iBACuB,QAAA,SAAI,YAAA,
|
|
1
|
+
{"version":3,"file":"menu-icon.js","names":[],"sources":["../../../src/components/menu/menu-icon.vue"],"sourcesContent":["<template>\n <u-icon v-if=\"typeof icon !== 'string'\">\n <component :is=\"icon\" />\n </u-icon>\n\n <img :src=\"icon\" v-else alt=\"icon\" />\n</template>\n\n<script lang=\"ts\" setup>\nimport type { DefineComponent } from 'vue'\n\nimport { UIcon } from '../icon'\n\ndefineOptions({ name: 'MenuIcon' })\n\ndefineProps<{ icon: string | DefineComponent }>()\n</script>\n"],"mappings":";;;;;;;;;;iBACuB,QAAA,SAAI,YAAA,UAAA,GAAzB,YAES,MAAA,WAAA,GAAA,EAAA,KAAA,EAAA,GAAA;2BADiB,EAAA,UAAA,GAAxB,YAAwB,wBAAR,QAAA,IAAI,CAAA,EAAA,CAAA;;uBAGtB,mBAAqC,OAAA;;IAA/B,KAAK,QAAA;IAAa,KAAI"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu-item-collapsed.js","names":[],"sources":["../../../src/components/menu/menu-item-collapsed.vue"],"sourcesContent":["<template>\n <!-- 一级菜单 -->\n <u-tip v-if=\"depth === 0\" direction=\"right\" hide-arrow>\n <li\n :class=\"[\n collapsedCls.e('item'),\n bem.is('active', active),\n bem.is('first-level'),\n bem.is('disabled', menu.disabled ?? false)\n ]\"\n ref=\"item\"\n @click=\"handleClickMenu\"\n >\n <UMenuIcon v-if=\"menu.icon\" :icon=\"menu.icon\" :class=\"collapsedCls.e('icon')\" />\n <span v-else>{{ menu.title[0] }}</span>\n </li>\n\n <template #content>\n {{ menu.title }}\n </template>\n </u-tip>\n\n <!-- 二级以及二级以下菜单 -->\n <li\n v-else\n :class=\"[\n collapsedCls.e('item'),\n bem.is('active', active),\n bem.is('disabled', menu.disabled ?? false)\n ]\"\n ref=\"item\"\n @click=\"_handleClickMenu\"\n >\n <UMenuIcon v-if=\"menu.icon\" :icon=\"menu.icon\" :class=\"collapsedCls.e('icon')\" />\n\n <!-- 文本 -->\n <span :class=\"collapsedCls.e('item-title')\">\n {{ menu.title }}\n </span>\n </li>\n</template>\n\n<script setup lang=\"ts\">\nimport { bem } from '@veltra/utils'\nimport { useTemplateRef } from 'vue'\n\nimport type { MenuItem } from '../../types'\nimport { UTip } from '../tip'\nimport UMenuIcon from './menu-icon.vue'\nimport { useMenuItem } from './use-menu-item'\n\ndefineOptions({ name: 'MenuItemCollapsed' })\n\nconst props = defineProps<{ menu: MenuItem; depth: number }>()\n\nconst itemRef = useTemplateRef('item')\n\nconst emit = defineEmits(['click'])\n\nconst { collapsedCls, active, handleClickMenu } = useMenuItem({ itemProps: props, itemRef })\n\nfunction _handleClickMenu() {\n handleClickMenu()\n emit('click')\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;EAqDA,MAAM,QAAQ;EAEd,MAAM,UAAU,eAAe,
|
|
1
|
+
{"version":3,"file":"menu-item-collapsed.js","names":[],"sources":["../../../src/components/menu/menu-item-collapsed.vue"],"sourcesContent":["<template>\n <!-- 一级菜单 -->\n <u-tip v-if=\"depth === 0\" direction=\"right\" hide-arrow>\n <li\n :class=\"[\n collapsedCls.e('item'),\n bem.is('active', active),\n bem.is('first-level'),\n bem.is('disabled', menu.disabled ?? false)\n ]\"\n ref=\"item\"\n @click=\"handleClickMenu\"\n >\n <UMenuIcon v-if=\"menu.icon\" :icon=\"menu.icon\" :class=\"collapsedCls.e('icon')\" />\n <span v-else>{{ menu.title[0] }}</span>\n </li>\n\n <template #content>\n {{ menu.title }}\n </template>\n </u-tip>\n\n <!-- 二级以及二级以下菜单 -->\n <li\n v-else\n :class=\"[\n collapsedCls.e('item'),\n bem.is('active', active),\n bem.is('disabled', menu.disabled ?? false)\n ]\"\n ref=\"item\"\n @click=\"_handleClickMenu\"\n >\n <UMenuIcon v-if=\"menu.icon\" :icon=\"menu.icon\" :class=\"collapsedCls.e('icon')\" />\n\n <!-- 文本 -->\n <span :class=\"collapsedCls.e('item-title')\">\n {{ menu.title }}\n </span>\n </li>\n</template>\n\n<script setup lang=\"ts\">\nimport { bem } from '@veltra/utils'\nimport { useTemplateRef } from 'vue'\n\nimport type { MenuItem } from '../../types'\nimport { UTip } from '../tip'\nimport UMenuIcon from './menu-icon.vue'\nimport { useMenuItem } from './use-menu-item'\n\ndefineOptions({ name: 'MenuItemCollapsed' })\n\nconst props = defineProps<{ menu: MenuItem; depth: number }>()\n\nconst itemRef = useTemplateRef('item')\n\nconst emit = defineEmits(['click'])\n\nconst { collapsedCls, active, handleClickMenu } = useMenuItem({ itemProps: props, itemRef })\n\nfunction _handleClickMenu() {\n handleClickMenu()\n emit('click')\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;EAqDA,MAAM,QAAQ;EAEd,MAAM,UAAU,eAAe,MAAM;EAErC,MAAM,OAAO;EAEb,MAAM,EAAE,cAAc,QAAQ,oBAAoB,YAAY;GAAE,WAAW;GAAO;EAAQ,CAAC;EAE3F,SAAS,mBAAmB;GAC1B,gBAAgB;GAChB,KAAK,OAAO;EACd;;2DA/DE,mBAAA,QAAA,GACa,QAAA,UAAK,KAAA,UAAA,GAAlB,YAkBQ,MAAA,WAAA,GAAA;;IAlBkB,WAAU;IAAQ,cAAA;;IAe/B,SAAO,cACA,CAAA,gBAAA,gBAAb,QAAA,KAAK,KAAK,GAAA,CAAA,CAAA,CAAA;2BAHV,CAZL,mBAYK,MAAA;KAXF,OAAK,eAAA;MAAY,MAAA,YAAA,EAAa,EAAC,MAAA;MAAkB,MAAA,GAAA,EAAI,GAAE,UAAW,MAAA,MAAA,CAAM;MAAW,MAAA,GAAA,EAAI,GAAE,aAAA;MAAyB,MAAA,GAAA,EAAI,GAAE,YAAa,QAAA,KAAK,YAAQ,KAAA;;KAMnJ,KAAI;KACH,SAAK,OAAA,OAAA,OAAA,MAAA,GAAA,SAAE,MAAA,eAAA,KAAA,MAAA,eAAA,EAAA,GAAA,IAAA;QAES,QAAA,KAAK,QAAA,UAAA,GAAtB,YAAgF,aAAA;;KAAnD,MAAM,QAAA,KAAK;KAAO,OAAK,eAAE,MAAA,YAAA,EAAa,EAAC,MAAA,CAAA;oDACpE,mBAAuC,QAAA,YAAA,gBAAvB,QAAA,KAAK,MAAK,EAAA,GAAA,CAAA,EAAA,GAAA,CAAA,CAAA,CAAA;;uBAS9B,mBAgBK,UAAA,EAAA,KAAA,EAAA,GAAA,CAjBL,mBAAA,cAAA,GACA,mBAgBK,MAAA;IAdF,OAAK,eAAA;KAAU,MAAA,YAAA,EAAa,EAAC,MAAA;KAAgB,MAAA,GAAA,EAAI,GAAE,UAAW,MAAA,MAAA,CAAM;KAAS,MAAA,GAAA,EAAI,GAAE,YAAa,QAAA,KAAK,YAAQ,KAAA;;IAK9G,KAAI;IACH,SAAO;;IAES,QAAA,KAAK,QAAA,UAAA,GAAtB,YAAgF,aAAA;;KAAnD,MAAM,QAAA,KAAK;KAAO,OAAK,eAAE,MAAA,YAAA,EAAa,EAAC,MAAA,CAAA;;IAEpE,mBAAA,MAAA;IACA,mBAEO,QAAA,EAFA,OAAK,eAAE,MAAA,YAAA,EAAa,EAAC,YAAA,CAAA,EAAA,GAAA,gBACvB,QAAA,KAAK,KAAK,GAAA,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu-item.js","names":[],"sources":["../../../src/components/menu/menu-item.vue"],"sourcesContent":["<template>\n <li\n :class=\"[\n cls.e('item'),\n bem.is('first-level', depth === 0),\n bem.is('active', active),\n bem.is('disabled', menu.disabled ?? false)\n ]\"\n ref=\"item\"\n @click=\"handleClickMenu\"\n >\n <MenuIcon v-if=\"menu.icon\" :icon=\"menu.icon\" :class=\"cls.e('icon')\" />\n\n <!-- 文本 -->\n <span :class=\"cls.e('item-title')\">\n {{ menu.title }}\n </span>\n </li>\n</template>\n\n<script setup lang=\"ts\">\nimport { bem } from '@veltra/utils'\nimport { useTemplateRef } from 'vue'\n\nimport type { MenuItem } from '../../types'\nimport MenuIcon from './menu-icon.vue'\nimport { useMenuItem } from './use-menu-item'\n\ndefineOptions({ name: 'MenuItem' })\n\nconst props = defineProps<{ menu: MenuItem; depth: number }>()\n\nconst itemRef = useTemplateRef('item')\n\nconst { cls, active, handleClickMenu } = useMenuItem({ itemProps: props, itemRef })\n</script>\n"],"mappings":";;;;;;;;;;;;;EAkCA,MAAM,EAAE,KAAK,QAAQ,oBAAoB,YAAY;GAAE,WAAW;GAAO,SAFzD,eAAe,
|
|
1
|
+
{"version":3,"file":"menu-item.js","names":[],"sources":["../../../src/components/menu/menu-item.vue"],"sourcesContent":["<template>\n <li\n :class=\"[\n cls.e('item'),\n bem.is('first-level', depth === 0),\n bem.is('active', active),\n bem.is('disabled', menu.disabled ?? false)\n ]\"\n ref=\"item\"\n @click=\"handleClickMenu\"\n >\n <MenuIcon v-if=\"menu.icon\" :icon=\"menu.icon\" :class=\"cls.e('icon')\" />\n\n <!-- 文本 -->\n <span :class=\"cls.e('item-title')\">\n {{ menu.title }}\n </span>\n </li>\n</template>\n\n<script setup lang=\"ts\">\nimport { bem } from '@veltra/utils'\nimport { useTemplateRef } from 'vue'\n\nimport type { MenuItem } from '../../types'\nimport MenuIcon from './menu-icon.vue'\nimport { useMenuItem } from './use-menu-item'\n\ndefineOptions({ name: 'MenuItem' })\n\nconst props = defineProps<{ menu: MenuItem; depth: number }>()\n\nconst itemRef = useTemplateRef('item')\n\nconst { cls, active, handleClickMenu } = useMenuItem({ itemProps: props, itemRef })\n</script>\n"],"mappings":";;;;;;;;;;;;;EAkCA,MAAM,EAAE,KAAK,QAAQ,oBAAoB,YAAY;GAAE,WAAW;GAAO,SAFzD,eAAe,MAE0C;EAAQ,CAAC;;uBAjChF,mBAgBK,MAAA;IAfF,OAAK,eAAA;KAAU,MAAA,GAAA,EAAI,EAAC,MAAA;KAAgB,MAAA,GAAA,EAAI,GAAE,eAAgB,QAAA,UAAK,CAAA;KAAe,MAAA,GAAA,EAAI,GAAE,UAAW,MAAA,MAAA,CAAM;KAAS,MAAA,GAAA,EAAI,GAAE,YAAa,QAAA,KAAK,YAAQ,KAAA;;IAM/I,KAAI;IACH,SAAK,OAAA,OAAA,OAAA,MAAA,GAAA,SAAE,MAAA,eAAA,KAAA,MAAA,eAAA,EAAA,GAAA,IAAA;;IAEQ,QAAA,KAAK,QAAA,UAAA,GAArB,YAAsE,aAAA;;KAA1C,MAAM,QAAA,KAAK;KAAO,OAAK,eAAE,MAAA,GAAA,EAAI,EAAC,MAAA,CAAA;;IAE1D,mBAAA,MAAA;IACA,mBAEO,QAAA,EAFA,OAAK,eAAE,MAAA,GAAA,EAAI,EAAC,YAAA,CAAA,EAAA,GAAA,gBACd,QAAA,KAAK,KAAK,GAAA,CAAA"}
|
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
import { MenuItem } from "../../types/menu.js";
|
|
2
|
-
import * as _$vue from "vue";
|
|
3
|
-
|
|
4
2
|
//#region src/components/menu/menu-item.vue.d.ts
|
|
5
3
|
type __VLS_Props = {
|
|
6
4
|
menu: MenuItem;
|
|
7
5
|
depth: number;
|
|
8
6
|
};
|
|
9
|
-
declare const __VLS_export:
|
|
7
|
+
declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
10
8
|
declare const _default: typeof __VLS_export;
|
|
11
9
|
//#endregion
|
|
12
10
|
export { _default };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu-sub-collapsed.js","names":[],"sources":["../../../src/components/menu/menu-sub-collapsed.vue"],"sourcesContent":["<template>\n <u-tip\n hide-arrow\n direction=\"right\"\n alignment=\"start\"\n :class=\"[collapsedCls.m(size), collapsedCls.e('panel')]\"\n style=\"padding: 0\"\n v-model:visible=\"visible\"\n >\n <li :class=\"[collapsedCls.e('sub-content'), bem.is('first-level', depth === 0)]\">\n <MenuIcon v-if=\"menu.icon\" :icon=\"menu.icon\" :class=\"collapsedCls.e('icon')\" />\n\n <span v-else>{{ menu.title[0] }}</span>\n\n <template v-if=\"depth !== 0\">\n <span :class=\"collapsedCls.e('sub-title')\">\n {{ menu.title }}\n </span>\n\n <!-- 展开图标 -->\n <u-icon :class=\"[collapsedCls.e('sub-expand')]\">\n <ArrowRight />\n </u-icon>\n </template>\n </li>\n\n <template #content>\n <u-scroll tag=\"ul\" :class=\"collapsedCls.e('sub-list')\">\n <template v-for=\"(child, index) of menu.children!\" :key=\"getKey(index, parentKey)\">\n <UMenuItemCollapsed\n v-if=\"!child.children?.length\"\n :menu=\"child\"\n :depth=\"depth + 1\"\n @click=\"closeSubMenu\"\n />\n\n <MenuSubCollapsed\n v-else\n :menu=\"child\"\n :parent-key=\"getKey(index, parentKey)\"\n :depth=\"depth + 1\"\n />\n </template>\n </u-scroll>\n </template>\n </u-tip>\n</template>\n\n<script setup lang=\"ts\">\nimport { ArrowRight } from '@veltra/icons/normal'\nimport { bem } from '@veltra/utils'\nimport { inject, ref } from 'vue'\n\nimport type { MenuItem } from '../../types'\nimport { UIcon } from '../icon'\nimport { UScroll } from '../scroll'\nimport { UTip } from '../tip'\nimport { MenuDIKey } from './di'\nimport { getKey } from './helper'\nimport MenuIcon from './menu-icon.vue'\nimport UMenuItemCollapsed from './menu-item-collapsed.vue'\n\ndefineOptions({ name: 'MenuSubCollapsed' })\n\ndefineProps<{ menu: MenuItem; parentKey: string; depth: number }>()\n\nconst visible = ref(false)\n\nfunction closeSubMenu() {\n visible.value = false\n}\n\nconst { collapsedCls, size } = inject(MenuDIKey)!\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;EAkEA,MAAM,UAAU,IAAI,
|
|
1
|
+
{"version":3,"file":"menu-sub-collapsed.js","names":[],"sources":["../../../src/components/menu/menu-sub-collapsed.vue"],"sourcesContent":["<template>\n <u-tip\n hide-arrow\n direction=\"right\"\n alignment=\"start\"\n :class=\"[collapsedCls.m(size), collapsedCls.e('panel')]\"\n style=\"padding: 0\"\n v-model:visible=\"visible\"\n >\n <li :class=\"[collapsedCls.e('sub-content'), bem.is('first-level', depth === 0)]\">\n <MenuIcon v-if=\"menu.icon\" :icon=\"menu.icon\" :class=\"collapsedCls.e('icon')\" />\n\n <span v-else>{{ menu.title[0] }}</span>\n\n <template v-if=\"depth !== 0\">\n <span :class=\"collapsedCls.e('sub-title')\">\n {{ menu.title }}\n </span>\n\n <!-- 展开图标 -->\n <u-icon :class=\"[collapsedCls.e('sub-expand')]\">\n <ArrowRight />\n </u-icon>\n </template>\n </li>\n\n <template #content>\n <u-scroll tag=\"ul\" :class=\"collapsedCls.e('sub-list')\">\n <template v-for=\"(child, index) of menu.children!\" :key=\"getKey(index, parentKey)\">\n <UMenuItemCollapsed\n v-if=\"!child.children?.length\"\n :menu=\"child\"\n :depth=\"depth + 1\"\n @click=\"closeSubMenu\"\n />\n\n <MenuSubCollapsed\n v-else\n :menu=\"child\"\n :parent-key=\"getKey(index, parentKey)\"\n :depth=\"depth + 1\"\n />\n </template>\n </u-scroll>\n </template>\n </u-tip>\n</template>\n\n<script setup lang=\"ts\">\nimport { ArrowRight } from '@veltra/icons/normal'\nimport { bem } from '@veltra/utils'\nimport { inject, ref } from 'vue'\n\nimport type { MenuItem } from '../../types'\nimport { UIcon } from '../icon'\nimport { UScroll } from '../scroll'\nimport { UTip } from '../tip'\nimport { MenuDIKey } from './di'\nimport { getKey } from './helper'\nimport MenuIcon from './menu-icon.vue'\nimport UMenuItemCollapsed from './menu-item-collapsed.vue'\n\ndefineOptions({ name: 'MenuSubCollapsed' })\n\ndefineProps<{ menu: MenuItem; parentKey: string; depth: number }>()\n\nconst visible = ref(false)\n\nfunction closeSubMenu() {\n visible.value = false\n}\n\nconst { collapsedCls, size } = inject(MenuDIKey)!\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;EAkEA,MAAM,UAAU,IAAI,KAAK;EAEzB,SAAS,eAAe;GACtB,QAAQ,QAAQ;EAClB;EAEA,MAAM,EAAE,cAAc,SAAS,OAAO,SAAS;;;uBAvE7C,YA4CQ,MAAA,WAAA,GAAA;IA3CN,cAAA;IACA,WAAU;IACV,WAAU;IACT,OAAK,eAAA,CAAG,MAAA,YAAA,EAAa,EAAE,MAAA,IAAA,CAAI,GAAG,MAAA,YAAA,EAAa,EAAC,OAAA,CAAA,CAAA;IAC7C,OAAA,EAAA,WAAA,IAAA;IACQ,SAAS,QAAA;8DAAA,QAAO,QAAA;;IAmBb,SAAO,cAiBL,CAhBX,YAgBW,MAAA,WAAA,GAAA;KAhBD,KAAI;KAAM,OAAK,eAAE,MAAA,YAAA,EAAa,EAAC,UAAA,CAAA;;4BACW,EAAA,UAAA,IAAA,GAAlD,mBAcW,UAAA,MAAA,WAdwB,QAAA,KAAK,WAAtB,OAAO,UAAK;8DAA2B,MAAA,MAAA,EAAO,OAAO,QAAA,SAAS,EAAA,GAAA,CAAA,CAErE,MAAM,UAAU,UAAA,UAAA,GADzB,YAKE,aAAA;;OAHC,MAAM;OACN,OAAO,QAAA,QAAK;OACZ,SAAO;sDAGV,YAKE,6BAAA;;OAHC,MAAM;OACN,cAAY,MAAA,MAAA,EAAO,OAAO,QAAA,SAAS;OACnC,OAAO,QAAA,QAAK;;;;;;;;;2BAhBhB,CAfL,mBAeK,MAAA,EAfA,OAAK,eAAA,CAAG,MAAA,YAAA,EAAa,EAAC,aAAA,GAAiB,MAAA,GAAA,EAAI,GAAE,eAAgB,QAAA,UAAK,CAAA,CAAA,CAAA,EAAA,GAAA,CACrD,QAAA,KAAK,QAAA,UAAA,GAArB,YAA+E,aAAA;;KAAnD,MAAM,QAAA,KAAK;KAAO,OAAK,eAAE,MAAA,YAAA,EAAa,EAAC,MAAA,CAAA;oDAEnE,mBAAuC,QAAA,YAAA,gBAAvB,QAAA,KAAK,MAAK,EAAA,GAAA,CAAA,IAEV,QAAA,UAAK,KAAA,UAAA,GAArB,mBASW,UAAA,EAAA,KAAA,EAAA,GAAA;KART,mBAEO,QAAA,EAFA,OAAK,eAAE,MAAA,YAAA,EAAa,EAAC,WAAA,CAAA,EAAA,GAAA,gBACvB,QAAA,KAAK,KAAK,GAAA,CAAA;KAGf,mBAAA,QAAA;KACA,YAES,MAAA,WAAA,GAAA,EAFA,OAAK,eAAA,CAAG,MAAA,YAAA,EAAa,EAAC,YAAA,CAAA,CAAA,EAAA,GAAA;6BACf,CAAd,YAAc,MAAA,UAAA,CAAA,CAAA,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu-sub.js","names":[],"sources":["../../../src/components/menu/menu-sub.vue"],"sourcesContent":["<template>\n <li :class=\"[cls.e('sub'), bem.is('expanded', expanded)]\">\n <div\n :class=\"[\n cls.e('sub-content'),\n bem.is('first-level', depth === 0),\n bem.is('expanded', expanded),\n bem.is('branch-active', branchActive)\n ]\"\n @click=\"handleToggleExpand\"\n >\n <UMenuIcon v-if=\"menu.icon\" :icon=\"menu.icon\" :class=\"cls.e('icon')\" />\n\n <!-- 文本 -->\n <span :class=\"cls.e('sub-title')\">\n {{ menu.title }}\n </span>\n\n <!-- 展开图标 -->\n <u-icon :class=\"[cls.e('sub-expand'), bem.is('expanded', expanded)]\">\n <ArrowRight />\n </u-icon>\n </div>\n\n <!-- @vue-ignore -->\n <transition\n @enter=\"(el: Element) => expandTransition.enter(el as HTMLElement)\"\n @after-enter=\"(el: Element) => expandTransition.afterEnter(el as HTMLElement)\"\n @before-leave=\"(el: Element) => expandTransition.beforeLeave(el as HTMLElement)\"\n @leave=\"(el: Element) => expandTransition.leave(el as HTMLElement)\"\n @after-leave=\"(el: Element) => expandTransition.afterLeave(el as HTMLElement)\"\n >\n <ul :class=\"cls.e('sub-list')\" v-show=\"expanded\">\n <template v-for=\"(child, index) of menu.children!\" :key=\"getKey(index, parentKey)\">\n <UMenuItem v-if=\"!child.children?.length\" :menu=\"child\" :depth=\"depth + 1\" />\n <MenuSub v-else :menu=\"child\" :parent-key=\"getKey(index, parentKey)\" :depth=\"depth + 1\" />\n </template>\n </ul>\n </transition>\n </li>\n</template>\n\n<script setup lang=\"ts\">\nimport { ArrowRight } from '@veltra/icons/normal'\nimport { bem } from '@veltra/utils'\nimport { computed, inject } from 'vue'\n\nimport type { MenuItem } from '../../types'\nimport { UIcon } from '../icon'\nimport { MenuDIKey } from './di'\nimport { getKey } from './helper'\nimport UMenuIcon from './menu-icon.vue'\nimport UMenuItem from './menu-item.vue'\n\ndefineOptions({ name: 'MenuSub' })\n\nconst props = defineProps<{ menu: MenuItem; parentKey: string; depth: number }>()\n\nconst { cls, expandedPath, menuProps, expandTransition } = inject(MenuDIKey)!\n\nconst expanded = computed(() => expandedPath.has(props.menu.path))\n\nconst branchActive = computed(() => {\n const currentPath = menuProps.currentPath\n if (!currentPath) return false\n\n const check = (items?: MenuItem[]) => {\n return items?.some((item) => item.path === currentPath || check(item.children)) ?? false\n }\n\n return check(props.menu.children)\n})\n\nfunction handleToggleExpand() {\n const { menu } = props\n expandedPath.has(menu.path) ? expandedPath.delete(menu.path) : expandedPath.add(menu.path)\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;EAwDA,MAAM,QAAQ;EAEd,MAAM,EAAE,KAAK,cAAc,WAAW,qBAAqB,OAAO,
|
|
1
|
+
{"version":3,"file":"menu-sub.js","names":[],"sources":["../../../src/components/menu/menu-sub.vue"],"sourcesContent":["<template>\n <li :class=\"[cls.e('sub'), bem.is('expanded', expanded)]\">\n <div\n :class=\"[\n cls.e('sub-content'),\n bem.is('first-level', depth === 0),\n bem.is('expanded', expanded),\n bem.is('branch-active', branchActive)\n ]\"\n @click=\"handleToggleExpand\"\n >\n <UMenuIcon v-if=\"menu.icon\" :icon=\"menu.icon\" :class=\"cls.e('icon')\" />\n\n <!-- 文本 -->\n <span :class=\"cls.e('sub-title')\">\n {{ menu.title }}\n </span>\n\n <!-- 展开图标 -->\n <u-icon :class=\"[cls.e('sub-expand'), bem.is('expanded', expanded)]\">\n <ArrowRight />\n </u-icon>\n </div>\n\n <!-- @vue-ignore -->\n <transition\n @enter=\"(el: Element) => expandTransition.enter(el as HTMLElement)\"\n @after-enter=\"(el: Element) => expandTransition.afterEnter(el as HTMLElement)\"\n @before-leave=\"(el: Element) => expandTransition.beforeLeave(el as HTMLElement)\"\n @leave=\"(el: Element) => expandTransition.leave(el as HTMLElement)\"\n @after-leave=\"(el: Element) => expandTransition.afterLeave(el as HTMLElement)\"\n >\n <ul :class=\"cls.e('sub-list')\" v-show=\"expanded\">\n <template v-for=\"(child, index) of menu.children!\" :key=\"getKey(index, parentKey)\">\n <UMenuItem v-if=\"!child.children?.length\" :menu=\"child\" :depth=\"depth + 1\" />\n <MenuSub v-else :menu=\"child\" :parent-key=\"getKey(index, parentKey)\" :depth=\"depth + 1\" />\n </template>\n </ul>\n </transition>\n </li>\n</template>\n\n<script setup lang=\"ts\">\nimport { ArrowRight } from '@veltra/icons/normal'\nimport { bem } from '@veltra/utils'\nimport { computed, inject } from 'vue'\n\nimport type { MenuItem } from '../../types'\nimport { UIcon } from '../icon'\nimport { MenuDIKey } from './di'\nimport { getKey } from './helper'\nimport UMenuIcon from './menu-icon.vue'\nimport UMenuItem from './menu-item.vue'\n\ndefineOptions({ name: 'MenuSub' })\n\nconst props = defineProps<{ menu: MenuItem; parentKey: string; depth: number }>()\n\nconst { cls, expandedPath, menuProps, expandTransition } = inject(MenuDIKey)!\n\nconst expanded = computed(() => expandedPath.has(props.menu.path))\n\nconst branchActive = computed(() => {\n const currentPath = menuProps.currentPath\n if (!currentPath) return false\n\n const check = (items?: MenuItem[]) => {\n return items?.some((item) => item.path === currentPath || check(item.children)) ?? false\n }\n\n return check(props.menu.children)\n})\n\nfunction handleToggleExpand() {\n const { menu } = props\n expandedPath.has(menu.path) ? expandedPath.delete(menu.path) : expandedPath.add(menu.path)\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;EAwDA,MAAM,QAAQ;EAEd,MAAM,EAAE,KAAK,cAAc,WAAW,qBAAqB,OAAO,SAAS;EAE3E,MAAM,WAAW,eAAe,aAAa,IAAI,MAAM,KAAK,IAAI,CAAC;EAEjE,MAAM,eAAe,eAAe;GAClC,MAAM,cAAc,UAAU;GAC9B,IAAI,CAAC,aAAa,OAAO;GAEzB,MAAM,SAAS,UAAuB;IACpC,OAAO,OAAO,MAAM,SAAS,KAAK,SAAS,eAAe,MAAM,KAAK,QAAQ,CAAC,KAAK;GACrF;GAEA,OAAO,MAAM,MAAM,KAAK,QAAQ;EAClC,CAAC;EAED,SAAS,qBAAqB;GAC5B,MAAM,EAAE,SAAS;GACjB,aAAa,IAAI,KAAK,IAAI,IAAI,aAAa,OAAO,KAAK,IAAI,IAAI,aAAa,IAAI,KAAK,IAAI;EAC3F;;;uBA3EE,mBAsCK,MAAA,EAtCA,OAAK,eAAA,CAAG,MAAA,GAAA,EAAI,EAAC,KAAA,GAAS,MAAA,GAAA,EAAI,GAAE,YAAa,SAAA,KAAQ,CAAA,CAAA,EAAA,GAAA;IACpD,mBAoBM,OAAA;KAnBH,OAAK,eAAA;MAAY,MAAA,GAAA,EAAI,EAAC,aAAA;MAAyB,MAAA,GAAA,EAAI,GAAE,eAAgB,QAAA,UAAK,CAAA;MAAiB,MAAA,GAAA,EAAI,GAAE,YAAa,SAAA,KAAQ;MAAW,MAAA,GAAA,EAAI,GAAE,iBAAkB,aAAA,KAAY;;KAMrK,SAAO;;KAES,QAAA,KAAK,QAAA,UAAA,GAAtB,YAAuE,aAAA;;MAA1C,MAAM,QAAA,KAAK;MAAO,OAAK,eAAE,MAAA,GAAA,EAAI,EAAC,MAAA,CAAA;;KAE3D,mBAAA,MAAA;KACA,mBAEO,QAAA,EAFA,OAAK,eAAE,MAAA,GAAA,EAAI,EAAC,WAAA,CAAA,EAAA,GAAA,gBACd,QAAA,KAAK,KAAK,GAAA,CAAA;KAGf,mBAAA,QAAA;KACA,YAES,MAAA,WAAA,GAAA,EAFA,OAAK,eAAA,CAAG,MAAA,GAAA,EAAI,EAAC,YAAA,GAAgB,MAAA,GAAA,EAAI,GAAE,YAAa,SAAA,KAAQ,CAAA,CAAA,EAAA,GAAA;6BACjD,CAAd,YAAc,MAAA,UAAA,CAAA,CAAA,CAAA;;;;IAIlB,mBAAA,eAAA;IACA,YAaa,YAAA;KAZV,SAAK,OAAA,OAAA,OAAA,MAAG,OAAgB,MAAA,gBAAA,EAAiB,MAAM,EAAE;KACjD,cAAW,OAAA,OAAA,OAAA,MAAG,OAAgB,MAAA,gBAAA,EAAiB,WAAW,EAAE;KAC5D,eAAY,OAAA,OAAA,OAAA,MAAG,OAAgB,MAAA,gBAAA,EAAiB,YAAY,EAAE;KAC9D,SAAK,OAAA,OAAA,OAAA,MAAG,OAAgB,MAAA,gBAAA,EAAiB,MAAM,EAAE;KACjD,cAAW,OAAA,OAAA,OAAA,MAAG,OAAgB,MAAA,gBAAA,EAAiB,WAAW,EAAE;KAL/D,WAAA;;4BAYO,CAAA,eALL,mBAKK,MAAA,EALA,OAAK,eAAE,MAAA,GAAA,EAAI,EAAC,UAAA,CAAA,EAAA,GAAA,EAAA,UAAA,IAAA,GACf,mBAGW,UAAA,MAAA,WAHwB,QAAA,KAAK,WAAtB,OAAO,UAAK;8DAA2B,MAAA,MAAA,EAAO,OAAO,QAAA,SAAS,EAAA,GAAA,CAAA,CAC5D,MAAM,UAAU,UAAA,UAAA,GAAlC,YAA6E,aAAA;;OAAlC,MAAM;OAAQ,OAAO,QAAA,QAAK;sDACrE,YAA0F,oBAAA;;OAAzE,MAAM;OAAQ,cAAY,MAAA,MAAA,EAAO,OAAO,QAAA,SAAS;OAAI,OAAO,QAAA,QAAK;;;;;;8BAH/C,SAAA,KAAQ,CAAA,CAAA,CAAA,CAAA"}
|
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
import { MenuItem } from "../../types/menu.js";
|
|
2
|
-
import * as _$vue from "vue";
|
|
3
|
-
|
|
4
2
|
//#region src/components/menu/menu-sub.vue.d.ts
|
|
5
3
|
type __VLS_Props = {
|
|
6
4
|
menu: MenuItem;
|
|
7
5
|
parentKey: string;
|
|
8
6
|
depth: number;
|
|
9
7
|
};
|
|
10
|
-
declare const __VLS_export:
|
|
8
|
+
declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
11
9
|
declare const _default: typeof __VLS_export;
|
|
12
10
|
//#endregion
|
|
13
11
|
export { _default };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu.js","names":[],"sources":["../../../src/components/menu/menu.vue"],"sourcesContent":["<template>\n <u-scroll\n tag=\"ul\"\n :class=\"[menuCls.b, menuCls.m(size)]\"\n :container-class=\"menuCls.e('container')\"\n >\n <!-- 常规 -->\n <template v-if=\"!collapsed\">\n <template v-for=\"(menu, index) of menus\" :key=\"index\">\n <UMenuSub\n v-if=\"menu.children?.length\"\n :menu=\"menu\"\n :parent-key=\"String(index)\"\n :depth=\"0\"\n />\n <UMenuItem v-else :menu=\"menu\" :key=\"index\" :depth=\"0\" />\n </template>\n </template>\n\n <!-- 折叠 -->\n <template v-else>\n <template v-for=\"(menu, index) of menus\" :key=\"index\">\n <UMenuSubCollapsed\n v-if=\"menu.children?.length\"\n :menu=\"menu\"\n :parent-key=\"String(index)\"\n :depth=\"0\"\n />\n <UMenuItemCollapsed v-else :menu=\"menu\" :key=\"index\" :depth=\"0\" />\n </template>\n </template>\n </u-scroll>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFallbackProps } from '@veltra/compositions'\nimport { bem, ExpandTransition } from '@veltra/utils'\nimport { computed, provide, shallowReactive, watch } from 'vue'\n\nimport type { MenuEmits, MenuProps, ComponentSize } from '../../types'\nimport { UScroll } from '../scroll'\nimport { MenuDIKey } from './di'\nimport UMenuItemCollapsed from './menu-item-collapsed.vue'\nimport UMenuItem from './menu-item.vue'\nimport UMenuSubCollapsed from './menu-sub-collapsed.vue'\nimport UMenuSub from './menu-sub.vue'\nimport { walkMenuWithPath } from './walk-menu-path'\n\ndefineOptions({ name: 'Menu' })\n\nconst props = withDefaults(defineProps<MenuProps>(), {\n expand: false,\n activeIndex: '',\n collapsed: false,\n uniqueOpened: false\n})\n\nconst emit = defineEmits<MenuEmits>()\n\nconst cls = bem('menu')\nconst collapsedCls = bem('collapsed-menu')\n\nconst menuCls = computed(() => {\n return props.collapsed ? collapsedCls : cls\n})\n\nconst expandTransition = new ExpandTransition({\n enterTransition:\n 'height 0.25s cubic-bezier(0.4, 0, 0.2, 1), padding-top 0.25s cubic-bezier(0.4, 0, 0.2, 1), padding-bottom 0.25s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.18s cubic-bezier(0.4, 0, 0.2, 1)',\n leaveTransition:\n 'height 0.2s cubic-bezier(0.4, 0, 1, 1), padding-top 0.2s cubic-bezier(0.4, 0, 1, 1), padding-bottom 0.2s cubic-bezier(0.4, 0, 1, 1), opacity 0.12s cubic-bezier(0.4, 0, 1, 1)',\n opacity: true\n})\n\nconst { size } = useFallbackProps([props], { size: 'default' as ComponentSize })\n\nconst expandedPath = shallowReactive(new Set<string>())\n\nwatch(\n [() => props.currentPath, () => props.menus],\n ([currentPath, menus]) => {\n if (!currentPath || !menus) return\n menus.forEach((menu) => {\n walkMenuWithPath(menu, (node, nodePath) => {\n if (node.path === currentPath) {\n nodePath.slice(0, -1).forEach((path) => {\n expandedPath.add(path.path)\n })\n return false\n }\n })\n })\n },\n { immediate: true }\n)\n\nprovide(MenuDIKey, {\n cls,\n collapsedCls,\n menuProps: props,\n menuEmit: emit,\n expandedPath,\n size,\n expandTransition\n})\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkDA,MAAM,QAAQ;EAOd,MAAM,OAAO;EAEb,MAAM,MAAM,IAAI,
|
|
1
|
+
{"version":3,"file":"menu.js","names":[],"sources":["../../../src/components/menu/menu.vue"],"sourcesContent":["<template>\n <u-scroll\n tag=\"ul\"\n :class=\"[menuCls.b, menuCls.m(size)]\"\n :container-class=\"menuCls.e('container')\"\n >\n <!-- 常规 -->\n <template v-if=\"!collapsed\">\n <template v-for=\"(menu, index) of menus\" :key=\"index\">\n <UMenuSub\n v-if=\"menu.children?.length\"\n :menu=\"menu\"\n :parent-key=\"String(index)\"\n :depth=\"0\"\n />\n <UMenuItem v-else :menu=\"menu\" :key=\"index\" :depth=\"0\" />\n </template>\n </template>\n\n <!-- 折叠 -->\n <template v-else>\n <template v-for=\"(menu, index) of menus\" :key=\"index\">\n <UMenuSubCollapsed\n v-if=\"menu.children?.length\"\n :menu=\"menu\"\n :parent-key=\"String(index)\"\n :depth=\"0\"\n />\n <UMenuItemCollapsed v-else :menu=\"menu\" :key=\"index\" :depth=\"0\" />\n </template>\n </template>\n </u-scroll>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFallbackProps } from '@veltra/compositions'\nimport { bem, ExpandTransition } from '@veltra/utils'\nimport { computed, provide, shallowReactive, watch } from 'vue'\n\nimport type { MenuEmits, MenuProps, ComponentSize } from '../../types'\nimport { UScroll } from '../scroll'\nimport { MenuDIKey } from './di'\nimport UMenuItemCollapsed from './menu-item-collapsed.vue'\nimport UMenuItem from './menu-item.vue'\nimport UMenuSubCollapsed from './menu-sub-collapsed.vue'\nimport UMenuSub from './menu-sub.vue'\nimport { walkMenuWithPath } from './walk-menu-path'\n\ndefineOptions({ name: 'Menu' })\n\nconst props = withDefaults(defineProps<MenuProps>(), {\n expand: false,\n activeIndex: '',\n collapsed: false,\n uniqueOpened: false\n})\n\nconst emit = defineEmits<MenuEmits>()\n\nconst cls = bem('menu')\nconst collapsedCls = bem('collapsed-menu')\n\nconst menuCls = computed(() => {\n return props.collapsed ? collapsedCls : cls\n})\n\nconst expandTransition = new ExpandTransition({\n enterTransition:\n 'height 0.25s cubic-bezier(0.4, 0, 0.2, 1), padding-top 0.25s cubic-bezier(0.4, 0, 0.2, 1), padding-bottom 0.25s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.18s cubic-bezier(0.4, 0, 0.2, 1)',\n leaveTransition:\n 'height 0.2s cubic-bezier(0.4, 0, 1, 1), padding-top 0.2s cubic-bezier(0.4, 0, 1, 1), padding-bottom 0.2s cubic-bezier(0.4, 0, 1, 1), opacity 0.12s cubic-bezier(0.4, 0, 1, 1)',\n opacity: true\n})\n\nconst { size } = useFallbackProps([props], { size: 'default' as ComponentSize })\n\nconst expandedPath = shallowReactive(new Set<string>())\n\nwatch(\n [() => props.currentPath, () => props.menus],\n ([currentPath, menus]) => {\n if (!currentPath || !menus) return\n menus.forEach((menu) => {\n walkMenuWithPath(menu, (node, nodePath) => {\n if (node.path === currentPath) {\n nodePath.slice(0, -1).forEach((path) => {\n expandedPath.add(path.path)\n })\n return false\n }\n })\n })\n },\n { immediate: true }\n)\n\nprovide(MenuDIKey, {\n cls,\n collapsedCls,\n menuProps: props,\n menuEmit: emit,\n expandedPath,\n size,\n expandTransition\n})\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkDA,MAAM,QAAQ;EAOd,MAAM,OAAO;EAEb,MAAM,MAAM,IAAI,MAAM;EACtB,MAAM,eAAe,IAAI,gBAAgB;EAEzC,MAAM,UAAU,eAAe;GAC7B,OAAO,MAAM,YAAY,eAAe;EAC1C,CAAC;EAED,MAAM,mBAAmB,IAAI,iBAAiB;GAC5C,iBACE;GACF,iBACE;GACF,SAAS;EACX,CAAC;EAED,MAAM,EAAE,SAAS,iBAAiB,CAAC,KAAK,GAAG,EAAE,MAAM,UAA2B,CAAC;EAE/E,MAAM,eAAe,gCAAgB,IAAI,IAAY,CAAC;EAEtD,MACE,OAAO,MAAM,mBAAmB,MAAM,KAAK,IAC1C,CAAC,aAAa,WAAW;GACxB,IAAI,CAAC,eAAe,CAAC,OAAO;GAC5B,MAAM,SAAS,SAAS;IACtB,iBAAiB,OAAO,MAAM,aAAa;KACzC,IAAI,KAAK,SAAS,aAAa;MAC7B,SAAS,MAAM,GAAG,EAAE,EAAE,SAAS,SAAS;OACtC,aAAa,IAAI,KAAK,IAAI;MAC5B,CAAC;MACD,OAAO;KACT;IACF,CAAC;GACH,CAAC;EACH,GACA,EAAE,WAAW,KAAK,CACpB;EAEA,QAAQ,WAAW;GACjB;GACA;GACA,WAAW;GACX,UAAU;GACV;GACA;GACA;EACF,CAAC;;uBAvGC,YA8BW,MAAA,WAAA,GAAA;IA7BT,KAAI;IACH,OAAK,eAAA,CAAG,QAAA,MAAQ,GAAG,QAAA,MAAQ,EAAE,MAAA,IAAA,CAAI,CAAA,CAAA;IACjC,mBAAiB,QAAA,MAAQ,EAAC,WAAA;;2BAEhB,CAAX,mBAAA,MAAA,GAAA,CACiB,QAAA,aAAA,UAAA,IAAA,GACf,mBAQW,UAAA,EAAA,KAAA,EAAA,GAAA,WARuB,QAAA,QAAhB,MAAM,UAAK;6DAAkB,MAAK,GAAA,CAE1C,KAAK,UAAU,UAAA,UAAA,GADvB,YAKE,aAAA;;MAHO;MACN,cAAY,OAAO,KAAK;MACxB,OAAO;0DAEV,YAAyD,aAAA;MAAhC;MAAO,KAAK;MAAQ,OAAO;;8BAKxD,mBAUW,UAAA,EAAA,KAAA,EAAA,GAAA,CAXX,mBAAA,MAAA,IAAA,UAAA,IAAA,GAEE,mBAQW,UAAA,MAAA,WARuB,QAAA,QAAhB,MAAM,UAAK;6DAAkB,MAAK,GAAA,CAE1C,KAAK,UAAU,UAAA,UAAA,GADvB,YAKE,aAAA;;MAHO;MACN,cAAY,OAAO,KAAK;MACxB,OAAO;0DAEV,YAAkE,aAAA;MAAhC;MAAO,KAAK;MAAQ,OAAO"}
|