@veltra/desktop 1.1.28 → 1.1.30
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 +3 -5
- 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 +6 -8
- 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 +3 -5
- 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 +3 -5
- 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 +3 -5
- 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 +2 -4
- 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 +3 -5
- 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 +5 -7
- 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 +6 -7
- 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 +3 -5
- 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 +3 -5
- package/dist/components/pop-confirm/pop-confirm.js.map +1 -1
- package/dist/components/pop-confirm/pop-confirm.vue.d.ts +4 -6
- 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 +3 -5
- 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 +4 -6
- 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 +5 -7
- 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 +6 -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 +10 -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 +3 -5
- 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 +3 -5
- 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 +6 -7
- 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 +3 -1
- package/src/components/tabs/tabs.vue +2 -2
- package/dist/components/kbd/index.d.ts +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evaluator.js","names":[],"sources":["../../../../src/components/condition-editor/core/evaluator.ts"],"sourcesContent":["import { o } from '@cat-kit/core'\n\nimport type {\n ConditionConnector,\n ConditionExpression,\n ConditionField,\n ConditionGroup,\n ConditionLeaf,\n ConditionNode,\n ConditionValue\n} from '../../../types'\n\nexport interface EvaluateOptions {\n /** 字段定义 —— 提供后按字段类型做类型感知比较 */\n fields?: ConditionField[]\n /** 上下文数据,用于解析 `kind: 'variable'` 引用 */\n data?: Record<string, unknown>\n}\n\n/**\n * 求值表达式\n *\n * - 纯函数,不修改入参\n * - 空表达式(无任何叶子节点)返回 `true`(视作\"无限制\")\n * - 不完整的叶子(field/operator 缺失、或缺少所需值且 operator 需要值)按 `false` 计\n * - 同组内 AND/OR 按 **从左到右、等优先级** 求值;需要更高优先级请用子分组\n */\nexport function evaluate(expression: ConditionExpression, options: EvaluateOptions = {}): boolean {\n return evaluateGroup(expression, options)\n}\n\nfunction evaluateGroup(group: ConditionGroup, options: EvaluateOptions): boolean {\n const { children, connectors } = group\n if (children.length === 0) return true\n\n let acc = evaluateNode(children[0]!, options)\n for (let i = 1; i < children.length; i++) {\n const connector: ConditionConnector = connectors[i - 1] ?? 'and'\n const current = evaluateNode(children[i]!, options)\n acc = connector === 'and' ? acc && current : acc || current\n }\n return acc\n}\n\nfunction evaluateNode(node: ConditionNode, options: EvaluateOptions): boolean {\n return node.type === 'group' ? evaluateGroup(node, options) : evaluateLeaf(node, options)\n}\n\nfunction evaluateLeaf(leaf: ConditionLeaf, options: EvaluateOptions): boolean {\n if (!leaf.field || !leaf.operator) return false\n const field = options.fields?.find((f) => f.value === leaf.field)\n const left = readField(leaf.field, options.data)\n const op = leaf.operator\n\n if (op === 'empty') return isEmpty(left)\n if (op === 'not_empty') return !isEmpty(left)\n if (op === 'is_true') return toBool(left) === true\n if (op === 'is_false') return toBool(left) === false\n\n // 其余 operator 需要一个右侧比较值\n if (!isValueProvided(leaf.value)) return false\n const right = resolveValue(leaf.value, options.data)\n\n const fieldType = field?.type ?? 'string'\n\n switch (op) {\n case 'eq':\n return compareEq(left, right, fieldType)\n case 'ne':\n return !compareEq(left, right, fieldType)\n case 'contains':\n return toStr(left).includes(toStr(right))\n case 'not_contains':\n return !toStr(left).includes(toStr(right))\n case 'gt':\n return toNumber(left) > toNumber(right)\n case 'lt':\n return toNumber(left) < toNumber(right)\n case 'gte':\n return toNumber(left) >= toNumber(right)\n case 'lte':\n return toNumber(left) <= toNumber(right)\n case 'before':\n return toTime(left) < toTime(right)\n case 'after':\n return toTime(left) > toTime(right)\n case 'in': {\n // 右侧可能是数组、逗号分隔字符串或单值\n const list = Array.isArray(right)\n ? right.map(toStr)\n : toStr(right)\n .split(',')\n .map((s) => s.trim())\n .filter(Boolean)\n return list.includes(toStr(left))\n }\n default:\n return false\n }\n}\n\nfunction readField(path: string, data?: Record<string, unknown>): unknown {\n if (!data) return undefined\n return o(data).get(path)\n}\n\nfunction resolveValue(value: ConditionValue, data?: Record<string, unknown>): unknown {\n if (value.kind === 'constant') return value.value\n return readField(value.name, data)\n}\n\nfunction isValueProvided(value: ConditionValue): boolean {\n if (value.kind === 'constant') return value.value !== ''\n return value.name !== ''\n}\n\nfunction isEmpty(v: unknown): boolean {\n if (v == null) return true\n if (typeof v === 'string') return v.trim() === ''\n if (Array.isArray(v)) return v.length === 0\n return false\n}\n\nfunction toBool(v: unknown): boolean {\n if (typeof v === 'boolean') return v\n if (typeof v === 'number') return v !== 0\n if (typeof v === 'string') {\n const s = v.trim().toLowerCase()\n if (s === 'true' || s === '1') return true\n if (s === 'false' || s === '0' || s === '') return false\n }\n return Boolean(v)\n}\n\nfunction toNumber(v: unknown): number {\n if (typeof v === 'number') return v\n if (typeof v === 'boolean') return v ? 1 : 0\n if (typeof v === 'string') {\n const n = Number(v)\n return Number.isNaN(n) ? Number.NaN : n\n }\n return Number.NaN\n}\n\nfunction toTime(v: unknown): number {\n if (v instanceof Date) return v.getTime()\n if (typeof v === 'number') return v\n if (typeof v === 'string' && v) return new Date(v).getTime()\n return Number.NaN\n}\n\nfunction compareEq(left: unknown, right: unknown, type: ConditionField['type']): boolean {\n if (type === 'number') return toNumber(left) === toNumber(right)\n if (type === 'boolean') return toBool(left) === toBool(right)\n if (type === 'date') return toTime(left) === toTime(right)\n return toStr(left) === toStr(right)\n}\n\nfunction toStr(v: unknown): string {\n if (v == null) return ''\n if (typeof v === 'string') return v\n if (typeof v === 'number' || typeof v === 'boolean' || typeof v === 'bigint') return String(v)\n if (v instanceof Date) return v.toISOString()\n try {\n return JSON.stringify(v)\n } catch {\n return ''\n }\n}\n\n// ── 工厂 ─────────────────────────────────────────\n\nexport function createEmptyGroup(): ConditionGroup {\n return { type: 'group', children: [], connectors: [] }\n}\n\nexport function createEmptyLeaf(): ConditionLeaf {\n return { type: 'condition', field: '', operator: 'eq', value: { kind: 'constant', value: '' } }\n}\n"],"mappings":";;;;;;;;;;AA2BA,SAAgB,SAAS,YAAiC,UAA2B,
|
|
1
|
+
{"version":3,"file":"evaluator.js","names":[],"sources":["../../../../src/components/condition-editor/core/evaluator.ts"],"sourcesContent":["import { o } from '@cat-kit/core'\n\nimport type {\n ConditionConnector,\n ConditionExpression,\n ConditionField,\n ConditionGroup,\n ConditionLeaf,\n ConditionNode,\n ConditionValue\n} from '../../../types'\n\nexport interface EvaluateOptions {\n /** 字段定义 —— 提供后按字段类型做类型感知比较 */\n fields?: ConditionField[]\n /** 上下文数据,用于解析 `kind: 'variable'` 引用 */\n data?: Record<string, unknown>\n}\n\n/**\n * 求值表达式\n *\n * - 纯函数,不修改入参\n * - 空表达式(无任何叶子节点)返回 `true`(视作\"无限制\")\n * - 不完整的叶子(field/operator 缺失、或缺少所需值且 operator 需要值)按 `false` 计\n * - 同组内 AND/OR 按 **从左到右、等优先级** 求值;需要更高优先级请用子分组\n */\nexport function evaluate(expression: ConditionExpression, options: EvaluateOptions = {}): boolean {\n return evaluateGroup(expression, options)\n}\n\nfunction evaluateGroup(group: ConditionGroup, options: EvaluateOptions): boolean {\n const { children, connectors } = group\n if (children.length === 0) return true\n\n let acc = evaluateNode(children[0]!, options)\n for (let i = 1; i < children.length; i++) {\n const connector: ConditionConnector = connectors[i - 1] ?? 'and'\n const current = evaluateNode(children[i]!, options)\n acc = connector === 'and' ? acc && current : acc || current\n }\n return acc\n}\n\nfunction evaluateNode(node: ConditionNode, options: EvaluateOptions): boolean {\n return node.type === 'group' ? evaluateGroup(node, options) : evaluateLeaf(node, options)\n}\n\nfunction evaluateLeaf(leaf: ConditionLeaf, options: EvaluateOptions): boolean {\n if (!leaf.field || !leaf.operator) return false\n const field = options.fields?.find((f) => f.value === leaf.field)\n const left = readField(leaf.field, options.data)\n const op = leaf.operator\n\n if (op === 'empty') return isEmpty(left)\n if (op === 'not_empty') return !isEmpty(left)\n if (op === 'is_true') return toBool(left) === true\n if (op === 'is_false') return toBool(left) === false\n\n // 其余 operator 需要一个右侧比较值\n if (!isValueProvided(leaf.value)) return false\n const right = resolveValue(leaf.value, options.data)\n\n const fieldType = field?.type ?? 'string'\n\n switch (op) {\n case 'eq':\n return compareEq(left, right, fieldType)\n case 'ne':\n return !compareEq(left, right, fieldType)\n case 'contains':\n return toStr(left).includes(toStr(right))\n case 'not_contains':\n return !toStr(left).includes(toStr(right))\n case 'gt':\n return toNumber(left) > toNumber(right)\n case 'lt':\n return toNumber(left) < toNumber(right)\n case 'gte':\n return toNumber(left) >= toNumber(right)\n case 'lte':\n return toNumber(left) <= toNumber(right)\n case 'before':\n return toTime(left) < toTime(right)\n case 'after':\n return toTime(left) > toTime(right)\n case 'in': {\n // 右侧可能是数组、逗号分隔字符串或单值\n const list = Array.isArray(right)\n ? right.map(toStr)\n : toStr(right)\n .split(',')\n .map((s) => s.trim())\n .filter(Boolean)\n return list.includes(toStr(left))\n }\n default:\n return false\n }\n}\n\nfunction readField(path: string, data?: Record<string, unknown>): unknown {\n if (!data) return undefined\n return o(data).get(path)\n}\n\nfunction resolveValue(value: ConditionValue, data?: Record<string, unknown>): unknown {\n if (value.kind === 'constant') return value.value\n return readField(value.name, data)\n}\n\nfunction isValueProvided(value: ConditionValue): boolean {\n if (value.kind === 'constant') return value.value !== ''\n return value.name !== ''\n}\n\nfunction isEmpty(v: unknown): boolean {\n if (v == null) return true\n if (typeof v === 'string') return v.trim() === ''\n if (Array.isArray(v)) return v.length === 0\n return false\n}\n\nfunction toBool(v: unknown): boolean {\n if (typeof v === 'boolean') return v\n if (typeof v === 'number') return v !== 0\n if (typeof v === 'string') {\n const s = v.trim().toLowerCase()\n if (s === 'true' || s === '1') return true\n if (s === 'false' || s === '0' || s === '') return false\n }\n return Boolean(v)\n}\n\nfunction toNumber(v: unknown): number {\n if (typeof v === 'number') return v\n if (typeof v === 'boolean') return v ? 1 : 0\n if (typeof v === 'string') {\n const n = Number(v)\n return Number.isNaN(n) ? Number.NaN : n\n }\n return Number.NaN\n}\n\nfunction toTime(v: unknown): number {\n if (v instanceof Date) return v.getTime()\n if (typeof v === 'number') return v\n if (typeof v === 'string' && v) return new Date(v).getTime()\n return Number.NaN\n}\n\nfunction compareEq(left: unknown, right: unknown, type: ConditionField['type']): boolean {\n if (type === 'number') return toNumber(left) === toNumber(right)\n if (type === 'boolean') return toBool(left) === toBool(right)\n if (type === 'date') return toTime(left) === toTime(right)\n return toStr(left) === toStr(right)\n}\n\nfunction toStr(v: unknown): string {\n if (v == null) return ''\n if (typeof v === 'string') return v\n if (typeof v === 'number' || typeof v === 'boolean' || typeof v === 'bigint') return String(v)\n if (v instanceof Date) return v.toISOString()\n try {\n return JSON.stringify(v)\n } catch {\n return ''\n }\n}\n\n// ── 工厂 ─────────────────────────────────────────\n\nexport function createEmptyGroup(): ConditionGroup {\n return { type: 'group', children: [], connectors: [] }\n}\n\nexport function createEmptyLeaf(): ConditionLeaf {\n return { type: 'condition', field: '', operator: 'eq', value: { kind: 'constant', value: '' } }\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operators.js","names":[],"sources":["../../../../src/components/condition-editor/core/operators.ts"],"sourcesContent":["export interface OperatorDef {\n label: string\n value: string\n needValue: boolean\n}\n\nconst STRING_OPERATORS: OperatorDef[] = [\n { label: '等于', value: 'eq', needValue: true },\n { label: '不等于', value: 'ne', needValue: true },\n { label: '包含', value: 'contains', needValue: true },\n { label: '不包含', value: 'not_contains', needValue: true },\n { label: '为空', value: 'empty', needValue: false },\n { label: '不为空', value: 'not_empty', needValue: false }\n]\n\nconst NUMBER_OPERATORS: OperatorDef[] = [\n { label: '等于', value: 'eq', needValue: true },\n { label: '不等于', value: 'ne', needValue: true },\n { label: '大于', value: 'gt', needValue: true },\n { label: '小于', value: 'lt', needValue: true },\n { label: '大于等于', value: 'gte', needValue: true },\n { label: '小于等于', value: 'lte', needValue: true }\n]\n\nconst BOOLEAN_OPERATORS: OperatorDef[] = [\n { label: '是', value: 'is_true', needValue: false },\n { label: '否', value: 'is_false', needValue: false }\n]\n\nconst DATE_OPERATORS: OperatorDef[] = [\n { label: '等于', value: 'eq', needValue: true },\n { label: '不等于', value: 'ne', needValue: true },\n { label: '早于', value: 'before', needValue: true },\n { label: '晚于', value: 'after', needValue: true }\n]\n\nconst ENUM_OPERATORS: OperatorDef[] = [\n { label: '等于', value: 'eq', needValue: true },\n { label: '不等于', value: 'ne', needValue: true },\n { label: '包含于', value: 'in', needValue: true }\n]\n\nconst OPERATOR_MAP: Record<string, OperatorDef[]> = {\n string: STRING_OPERATORS,\n number: NUMBER_OPERATORS,\n boolean: BOOLEAN_OPERATORS,\n date: DATE_OPERATORS,\n enum: ENUM_OPERATORS\n}\n\nexport function getOperatorsByFieldType(type: string): OperatorDef[] {\n return OPERATOR_MAP[type] ?? STRING_OPERATORS\n}\n\nexport function getOperatorDef(type: string, operator: string): OperatorDef | undefined {\n return getOperatorsByFieldType(type).find((op) => op.value === operator)\n}\n"],"mappings":";AAMA,MAAM,mBAAkC;CACtC;EAAE,OAAO;EAAM,OAAO;EAAM,WAAW;
|
|
1
|
+
{"version":3,"file":"operators.js","names":[],"sources":["../../../../src/components/condition-editor/core/operators.ts"],"sourcesContent":["export interface OperatorDef {\n label: string\n value: string\n needValue: boolean\n}\n\nconst STRING_OPERATORS: OperatorDef[] = [\n { label: '等于', value: 'eq', needValue: true },\n { label: '不等于', value: 'ne', needValue: true },\n { label: '包含', value: 'contains', needValue: true },\n { label: '不包含', value: 'not_contains', needValue: true },\n { label: '为空', value: 'empty', needValue: false },\n { label: '不为空', value: 'not_empty', needValue: false }\n]\n\nconst NUMBER_OPERATORS: OperatorDef[] = [\n { label: '等于', value: 'eq', needValue: true },\n { label: '不等于', value: 'ne', needValue: true },\n { label: '大于', value: 'gt', needValue: true },\n { label: '小于', value: 'lt', needValue: true },\n { label: '大于等于', value: 'gte', needValue: true },\n { label: '小于等于', value: 'lte', needValue: true }\n]\n\nconst BOOLEAN_OPERATORS: OperatorDef[] = [\n { label: '是', value: 'is_true', needValue: false },\n { label: '否', value: 'is_false', needValue: false }\n]\n\nconst DATE_OPERATORS: OperatorDef[] = [\n { label: '等于', value: 'eq', needValue: true },\n { label: '不等于', value: 'ne', needValue: true },\n { label: '早于', value: 'before', needValue: true },\n { label: '晚于', value: 'after', needValue: true }\n]\n\nconst ENUM_OPERATORS: OperatorDef[] = [\n { label: '等于', value: 'eq', needValue: true },\n { label: '不等于', value: 'ne', needValue: true },\n { label: '包含于', value: 'in', needValue: true }\n]\n\nconst OPERATOR_MAP: Record<string, OperatorDef[]> = {\n string: STRING_OPERATORS,\n number: NUMBER_OPERATORS,\n boolean: BOOLEAN_OPERATORS,\n date: DATE_OPERATORS,\n enum: ENUM_OPERATORS\n}\n\nexport function getOperatorsByFieldType(type: string): OperatorDef[] {\n return OPERATOR_MAP[type] ?? STRING_OPERATORS\n}\n\nexport function getOperatorDef(type: string, operator: string): OperatorDef | undefined {\n return getOperatorsByFieldType(type).find((op) => op.value === operator)\n}\n"],"mappings":";AAMA,MAAM,mBAAkC;CACtC;EAAE,OAAO;EAAM,OAAO;EAAM,WAAW;CAAK;CAC5C;EAAE,OAAO;EAAO,OAAO;EAAM,WAAW;CAAK;CAC7C;EAAE,OAAO;EAAM,OAAO;EAAY,WAAW;CAAK;CAClD;EAAE,OAAO;EAAO,OAAO;EAAgB,WAAW;CAAK;CACvD;EAAE,OAAO;EAAM,OAAO;EAAS,WAAW;CAAM;CAChD;EAAE,OAAO;EAAO,OAAO;EAAa,WAAW;CAAM;AACvD;AA6BA,MAAM,eAA8C;CAClD,QAAQ;CACR,QAAQ;EA5BR;GAAE,OAAO;GAAM,OAAO;GAAM,WAAW;EAAK;EAC5C;GAAE,OAAO;GAAO,OAAO;GAAM,WAAW;EAAK;EAC7C;GAAE,OAAO;GAAM,OAAO;GAAM,WAAW;EAAK;EAC5C;GAAE,OAAO;GAAM,OAAO;GAAM,WAAW;EAAK;EAC5C;GAAE,OAAO;GAAQ,OAAO;GAAO,WAAW;EAAK;EAC/C;GAAE,OAAO;GAAQ,OAAO;GAAO,WAAW;EAAK;CAuBxB;CACvB,SAAS,CApBT;EAAE,OAAO;EAAK,OAAO;EAAW,WAAW;CAAM,GACjD;EAAE,OAAO;EAAK,OAAO;EAAY,WAAW;CAAM,CAmBzB;CACzB,MAAM;EAhBN;GAAE,OAAO;GAAM,OAAO;GAAM,WAAW;EAAK;EAC5C;GAAE,OAAO;GAAO,OAAO;GAAM,WAAW;EAAK;EAC7C;GAAE,OAAO;GAAM,OAAO;GAAU,WAAW;EAAK;EAChD;GAAE,OAAO;GAAM,OAAO;GAAS,WAAW;EAAK;CAa5B;CACnB,MAAM;EAVN;GAAE,OAAO;GAAM,OAAO;GAAM,WAAW;EAAK;EAC5C;GAAE,OAAO;GAAO,OAAO;GAAM,WAAW;EAAK;EAC7C;GAAE,OAAO;GAAO,OAAO;GAAM,WAAW;EAAK;CAQ1B;AACrB;AAEA,SAAgB,wBAAwB,MAA6B;CACnE,OAAO,aAAa,SAAS;AAC/B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","names":["MContextMenu"],"sources":["../../../src/components/context-menu/api.ts"],"sourcesContent":["import { createVNode, render, type VNode } from 'vue'\n\nimport type { ContextMenuProps } from '../../types'\nimport MContextMenu from './context-menu.vue'\n\nlet node: VNode\n\nexport const contextmenu = {\n pop(options: ContextMenuProps): void {\n if (node) {\n render(null, document.body)\n }\n\n node = createVNode(MContextMenu, {\n ...options,\n onDestroy() {\n render(null, document.body)\n }\n })\n\n render(node, document.body)\n }\n}\n"],"mappings":";;;AAKA,IAAI;AAEJ,MAAa,cAAc,EACzB,IAAI,SAAiC;CACnC,IAAI,MACF,OAAO,MAAM,SAAS,
|
|
1
|
+
{"version":3,"file":"api.js","names":["MContextMenu"],"sources":["../../../src/components/context-menu/api.ts"],"sourcesContent":["import { createVNode, render, type VNode } from 'vue'\n\nimport type { ContextMenuProps } from '../../types'\nimport MContextMenu from './context-menu.vue'\n\nlet node: VNode\n\nexport const contextmenu = {\n pop(options: ContextMenuProps): void {\n if (node) {\n render(null, document.body)\n }\n\n node = createVNode(MContextMenu, {\n ...options,\n onDestroy() {\n render(null, document.body)\n }\n })\n\n render(node, document.body)\n }\n}\n"],"mappings":";;;AAKA,IAAI;AAEJ,MAAa,cAAc,EACzB,IAAI,SAAiC;CACnC,IAAI,MACF,OAAO,MAAM,SAAS,IAAI;CAG5B,OAAO,YAAYA,WAAc;EAC/B,GAAG;EACH,YAAY;GACV,OAAO,MAAM,SAAS,IAAI;EAC5B;CACF,CAAC;CAED,OAAO,MAAM,SAAS,IAAI;AAC5B,EACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-menu-item.js","names":[],"sources":["../../../src/components/context-menu/context-menu-item.vue"],"sourcesContent":["<template>\n <li\n :class=\"[\n cls.e('item'),\n bem.is('disabled', disabled),\n bem.is('loading', loading),\n cls.em('item', 'menu')\n ]\"\n v-ripple=\"!disabled && !loading\"\n @click=\"handleClickMenu\"\n >\n <u-icon v-if=\"loading\" :class=\"bem.is('loading')\">\n <Loading />\n </u-icon>\n <template v-else>\n <u-icon v-if=\"menu.icon\">\n <component :is=\"menu.icon\" />\n </u-icon>\n <i v-else :class=\"cls.e('icon-place')\"></i>\n </template>\n\n <span :class=\"cls.e('label')\">{{ menu.label }}</span>\n </li>\n</template>\n\n<script lang=\"ts\" setup>\nimport { vRipple } from '@veltra/directives'\nimport { Loading } from '@veltra/icons/normal'\nimport { bem } from '@veltra/utils'\nimport { computed, inject, shallowRef } from 'vue'\n\nimport type { ContextMenuItem } from '../../types'\nimport { UIcon } from '../icon'\nimport { ContextMenuDIKey } from './di'\n\ndefineOptions({ name: 'ContextMenuItem' })\n\nconst { menu } = defineProps<{ menu: ContextMenuItem }>()\n\nconst emit = defineEmits<{ (e: 'click-start'): void; (e: 'click-end'): void }>()\n\nconst { cls } = inject(ContextMenuDIKey)!\n\nconst loading = shallowRef(false)\n\nconst disabled = computed(() => {\n return (typeof menu.disabled === 'function' ? menu.disabled() : menu.disabled) ?? false\n})\n\nfunction handleClickMenu() {\n if (disabled.value || loading.value) return\n emit('click-start')\n loading.value = true\n const result = menu.callback?.()\n\n if (result instanceof Promise) {\n return result\n .then(() => {})\n .finally(() => {\n emit('click-end')\n loading.value = false\n })\n }\n loading.value = false\n emit('click-end')\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;EAuCA,MAAM,OAAO;EAEb,MAAM,EAAE,QAAQ,OAAO,
|
|
1
|
+
{"version":3,"file":"context-menu-item.js","names":[],"sources":["../../../src/components/context-menu/context-menu-item.vue"],"sourcesContent":["<template>\n <li\n :class=\"[\n cls.e('item'),\n bem.is('disabled', disabled),\n bem.is('loading', loading),\n cls.em('item', 'menu')\n ]\"\n v-ripple=\"!disabled && !loading\"\n @click=\"handleClickMenu\"\n >\n <u-icon v-if=\"loading\" :class=\"bem.is('loading')\">\n <Loading />\n </u-icon>\n <template v-else>\n <u-icon v-if=\"menu.icon\">\n <component :is=\"menu.icon\" />\n </u-icon>\n <i v-else :class=\"cls.e('icon-place')\"></i>\n </template>\n\n <span :class=\"cls.e('label')\">{{ menu.label }}</span>\n </li>\n</template>\n\n<script lang=\"ts\" setup>\nimport { vRipple } from '@veltra/directives'\nimport { Loading } from '@veltra/icons/normal'\nimport { bem } from '@veltra/utils'\nimport { computed, inject, shallowRef } from 'vue'\n\nimport type { ContextMenuItem } from '../../types'\nimport { UIcon } from '../icon'\nimport { ContextMenuDIKey } from './di'\n\ndefineOptions({ name: 'ContextMenuItem' })\n\nconst { menu } = defineProps<{ menu: ContextMenuItem }>()\n\nconst emit = defineEmits<{ (e: 'click-start'): void; (e: 'click-end'): void }>()\n\nconst { cls } = inject(ContextMenuDIKey)!\n\nconst loading = shallowRef(false)\n\nconst disabled = computed(() => {\n return (typeof menu.disabled === 'function' ? menu.disabled() : menu.disabled) ?? false\n})\n\nfunction handleClickMenu() {\n if (disabled.value || loading.value) return\n emit('click-start')\n loading.value = true\n const result = menu.callback?.()\n\n if (result instanceof Promise) {\n return result\n .then(() => {})\n .finally(() => {\n emit('click-end')\n loading.value = false\n })\n }\n loading.value = false\n emit('click-end')\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;EAuCA,MAAM,OAAO;EAEb,MAAM,EAAE,QAAQ,OAAO,gBAAgB;EAEvC,MAAM,UAAU,WAAW,KAAK;EAEhC,MAAM,WAAW,eAAe;GAC9B,QAAQ,OAAO,QAAA,KAAK,aAAa,aAAa,QAAA,KAAK,SAAS,IAAI,QAAA,KAAK,aAAa;EACpF,CAAC;EAED,SAAS,kBAAkB;GACzB,IAAI,SAAS,SAAS,QAAQ,OAAO;GACrC,KAAK,aAAa;GAClB,QAAQ,QAAQ;GAChB,MAAM,SAAS,QAAA,KAAK,WAAW;GAE/B,IAAI,kBAAkB,SACpB,OAAO,OACJ,WAAW,CAAC,CAAC,EACb,cAAc;IACb,KAAK,WAAW;IAChB,QAAQ,QAAQ;GAClB,CAAC;GAEL,QAAQ,QAAQ;GAChB,KAAK,WAAW;EAClB;;uCAhEE,mBAqBK,MAAA;IApBF,OAAK,eAAA;KAAU,MAAA,GAAA,EAAI,EAAC,MAAA;KAAgB,MAAA,GAAA,EAAI,GAAE,YAAa,SAAA,KAAQ;KAAS,MAAA,GAAA,EAAI,GAAE,WAAY,QAAA,KAAO;KAAS,MAAA,GAAA,EAAI,GAAE,QAAA,MAAA;;IAOhH,SAAO;OAEM,QAAA,SAAA,UAAA,GAAd,YAES,MAAA,WAAA,GAAA;;IAFe,OAAK,eAAE,MAAA,GAAA,EAAI,GAAE,SAAA,CAAA;;2BACxB,CAAX,YAAW,MAAA,OAAA,CAAA,CAAA,CAAA;;qCAEb,mBAKW,UAAA,EAAA,KAAA,EAAA,GAAA,CAJK,QAAA,KAAK,QAAA,UAAA,GAAnB,YAES,MAAA,WAAA,GAAA,EAAA,KAAA,EAAA,GAAA;2BADsB,EAAA,UAAA,GAA7B,YAA6B,wBAAb,QAAA,KAAK,IAAI,CAAA,EAAA,CAAA;;uBAE3B,mBAA2C,KAAA;;IAAhC,OAAK,eAAE,MAAA,GAAA,EAAI,EAAC,YAAA,CAAA;wBAGzB,mBAAqD,QAAA,EAA9C,OAAK,eAAE,MAAA,GAAA,EAAI,EAAC,OAAA,CAAA,EAAA,GAAA,gBAAc,QAAA,KAAK,KAAK,GAAA,CAAA,CAAA,GAAA,CAAA,IAAA,CAAA,CAAA,MAAA,OAAA,GAAA,CAbhC,SAAA,SAAQ,CAAK,QAAA,KAAO,CAAA,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-menu.js","names":[],"sources":["../../../src/components/context-menu/context-menu.vue"],"sourcesContent":["<template>\n <transition name=\"zoom-in\" appear @after-leave=\"emit('destroy')\">\n <ul\n :class=\"[cls.b, cls.m(size)]\"\n :style=\"style\"\n ref=\"contextMenuRef\"\n v-if=\"visible\"\n v-click-outside=\"handleClickOutside\"\n >\n <UContextMenuItem\n v-for=\"menu of menus\"\n :menu=\"menu\"\n :disabled=\"getMenuDisabled(menu)\"\n @click-start=\"handleClickStart\"\n @click-end=\"handleClickEnd\"\n />\n </ul>\n </transition>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFallbackProps } from '@veltra/compositions'\nimport { vClickOutside } from '@veltra/directives'\nimport { bem, withUnit, zIndex } from '@veltra/utils'\nimport { computed, provide, shallowRef, type CSSProperties } from 'vue'\n\nimport type {\n ContextMenuEmits,\n ContextMenuItem,\n ContextMenuProps,\n ComponentSize\n} from '../../types'\nimport UContextMenuItem from './context-menu-item.vue'\nimport { ContextMenuDIKey } from './di'\n\ndefineOptions({ name: 'ContextMenu' })\n\nconst props = withDefaults(defineProps<ContextMenuProps>(), { width: 150 })\n\nconst emit = defineEmits<ContextMenuEmits>()\n\nconst { size } = useFallbackProps([props], { size: 'default' as ComponentSize })\n\nconst cls = bem('context-menu')\n\nconst contextMenuRef = shallowRef<HTMLElement>()\n\nconst visible = shallowRef(true)\n\nconst computePosition = () => {\n const position: {\n top?: number\n left?: number\n right?: number\n bottom?: number\n transformOrigin?: string\n } = {}\n\n const { mousePosition } = props\n const { x, y } = mousePosition\n if (x > window.innerWidth / 2) {\n position.right = window.innerWidth - x - 1\n } else {\n position.left = x + 1\n }\n if (y > window.innerHeight / 2) {\n position.bottom = window.innerHeight - y - 1\n } else {\n position.top = y + 1\n }\n\n const positionY = position.top ? 'top' : 'bottom'\n const positionX = position.left ? 'left' : 'right'\n position.transformOrigin = `${positionY} ${positionX}`\n\n return Object.fromEntries(\n Object.entries(position).map(([k, v]) => [k, withUnit(v as number | string | undefined, 'px')])\n ) as CSSProperties\n}\n\nconst style = computed<CSSProperties>(() => {\n return { width: withUnit(props.width, 'px'), ...computePosition(), zIndex: zIndex() }\n})\n\nconst menus = computed(() => {\n const { menus } = props\n if (typeof menus === 'function') {\n return menus()\n }\n return menus\n})\n\nconst getMenuDisabled = (menu: ContextMenuItem) => {\n return typeof menu.disabled === 'function' ? menu.disabled() : menu.disabled\n}\n\nfunction close() {\n visible.value = false\n}\n\nlet loading = false\nfunction handleClickStart() {\n loading = true\n}\n\nfunction handleClickEnd() {\n loading = false\n close()\n}\n\nfunction handleClickOutside() {\n if (loading) return\n close()\n}\n\nprovide(ContextMenuDIKey, { cls })\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;EAqCA,MAAM,QAAQ;EAEd,MAAM,OAAO;EAEb,MAAM,EAAE,SAAS,iBAAiB,CAAC,
|
|
1
|
+
{"version":3,"file":"context-menu.js","names":[],"sources":["../../../src/components/context-menu/context-menu.vue"],"sourcesContent":["<template>\n <transition name=\"zoom-in\" appear @after-leave=\"emit('destroy')\">\n <ul\n :class=\"[cls.b, cls.m(size)]\"\n :style=\"style\"\n ref=\"contextMenuRef\"\n v-if=\"visible\"\n v-click-outside=\"handleClickOutside\"\n >\n <UContextMenuItem\n v-for=\"menu of menus\"\n :menu=\"menu\"\n :disabled=\"getMenuDisabled(menu)\"\n @click-start=\"handleClickStart\"\n @click-end=\"handleClickEnd\"\n />\n </ul>\n </transition>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useFallbackProps } from '@veltra/compositions'\nimport { vClickOutside } from '@veltra/directives'\nimport { bem, withUnit, zIndex } from '@veltra/utils'\nimport { computed, provide, shallowRef, type CSSProperties } from 'vue'\n\nimport type {\n ContextMenuEmits,\n ContextMenuItem,\n ContextMenuProps,\n ComponentSize\n} from '../../types'\nimport UContextMenuItem from './context-menu-item.vue'\nimport { ContextMenuDIKey } from './di'\n\ndefineOptions({ name: 'ContextMenu' })\n\nconst props = withDefaults(defineProps<ContextMenuProps>(), { width: 150 })\n\nconst emit = defineEmits<ContextMenuEmits>()\n\nconst { size } = useFallbackProps([props], { size: 'default' as ComponentSize })\n\nconst cls = bem('context-menu')\n\nconst contextMenuRef = shallowRef<HTMLElement>()\n\nconst visible = shallowRef(true)\n\nconst computePosition = () => {\n const position: {\n top?: number\n left?: number\n right?: number\n bottom?: number\n transformOrigin?: string\n } = {}\n\n const { mousePosition } = props\n const { x, y } = mousePosition\n if (x > window.innerWidth / 2) {\n position.right = window.innerWidth - x - 1\n } else {\n position.left = x + 1\n }\n if (y > window.innerHeight / 2) {\n position.bottom = window.innerHeight - y - 1\n } else {\n position.top = y + 1\n }\n\n const positionY = position.top ? 'top' : 'bottom'\n const positionX = position.left ? 'left' : 'right'\n position.transformOrigin = `${positionY} ${positionX}`\n\n return Object.fromEntries(\n Object.entries(position).map(([k, v]) => [k, withUnit(v as number | string | undefined, 'px')])\n ) as CSSProperties\n}\n\nconst style = computed<CSSProperties>(() => {\n return { width: withUnit(props.width, 'px'), ...computePosition(), zIndex: zIndex() }\n})\n\nconst menus = computed(() => {\n const { menus } = props\n if (typeof menus === 'function') {\n return menus()\n }\n return menus\n})\n\nconst getMenuDisabled = (menu: ContextMenuItem) => {\n return typeof menu.disabled === 'function' ? menu.disabled() : menu.disabled\n}\n\nfunction close() {\n visible.value = false\n}\n\nlet loading = false\nfunction handleClickStart() {\n loading = true\n}\n\nfunction handleClickEnd() {\n loading = false\n close()\n}\n\nfunction handleClickOutside() {\n if (loading) return\n close()\n}\n\nprovide(ContextMenuDIKey, { cls })\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;EAqCA,MAAM,QAAQ;EAEd,MAAM,OAAO;EAEb,MAAM,EAAE,SAAS,iBAAiB,CAAC,KAAK,GAAG,EAAE,MAAM,UAA2B,CAAC;EAE/E,MAAM,MAAM,IAAI,cAAc;EAE9B,MAAM,iBAAiB,WAAwB;EAE/C,MAAM,UAAU,WAAW,IAAI;EAE/B,MAAM,wBAAwB;GAC5B,MAAM,WAMF,CAAC;GAEL,MAAM,EAAE,kBAAkB;GAC1B,MAAM,EAAE,GAAG,MAAM;GACjB,IAAI,IAAI,OAAO,aAAa,GAC1B,SAAS,QAAQ,OAAO,aAAa,IAAI;QAEzC,SAAS,OAAO,IAAI;GAEtB,IAAI,IAAI,OAAO,cAAc,GAC3B,SAAS,SAAS,OAAO,cAAc,IAAI;QAE3C,SAAS,MAAM,IAAI;GAKrB,SAAS,kBAAkB,GAFT,SAAS,MAAM,QAAQ,SAED,GADtB,SAAS,OAAO,SAAS;GAG3C,OAAO,OAAO,YACZ,OAAO,QAAQ,QAAQ,EAAE,KAAK,CAAC,GAAG,OAAO,CAAC,GAAG,SAAS,GAAkC,IAAI,CAAC,CAAC,CAChG;EACF;EAEA,MAAM,QAAQ,eAA8B;GAC1C,OAAO;IAAE,OAAO,SAAS,MAAM,OAAO,IAAI;IAAG,GAAG,gBAAgB;IAAG,QAAQ,OAAO;GAAE;EACtF,CAAC;EAED,MAAM,QAAQ,eAAe;GAC3B,MAAM,EAAE,UAAU;GAClB,IAAI,OAAO,UAAU,YACnB,OAAO,MAAM;GAEf,OAAO;EACT,CAAC;EAED,MAAM,mBAAmB,SAA0B;GACjD,OAAO,OAAO,KAAK,aAAa,aAAa,KAAK,SAAS,IAAI,KAAK;EACtE;EAEA,SAAS,QAAQ;GACf,QAAQ,QAAQ;EAClB;EAEA,IAAI,UAAU;EACd,SAAS,mBAAmB;GAC1B,UAAU;EACZ;EAEA,SAAS,iBAAiB;GACxB,UAAU;GACV,MAAM;EACR;EAEA,SAAS,qBAAqB;GAC5B,IAAI,SAAS;GACb,MAAM;EACR;EAEA,QAAQ,kBAAkB,EAAE,IAAI,CAAC;;uBAlH/B,YAgBa,YAAA;IAhBD,MAAK;IAAU,QAAA;IAAQ,cAAW,OAAA,OAAA,OAAA,MAAA,WAAE,KAAI,SAAA;;2BAe7C,CAVG,QAAA,QAAA,gBAAA,UAAA,GAJR,mBAcK,MAAA;;KAbF,OAAK,eAAA,CAAG,MAAA,GAAA,EAAI,GAAG,MAAA,GAAA,EAAI,EAAE,MAAA,IAAA,CAAI,CAAA,CAAA;KACzB,OAAK,eAAE,MAAA,KAAK;cACT;KAAJ,KAAI;0BAIJ,mBAME,UAAA,MAAA,WALe,MAAA,QAAR,SAAI;yBADb,YAME,aAAA;MAJO;MACN,UAAU,gBAAgB,IAAI;MAC9B,cAAa;MACb,YAAW;;6CAPG,kBAAkB,CAAA,CAAA,IAAA,mBAAA,QAAA,IAAA,CAAA,CAAA"}
|
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
import { ContextMenuProps } from "../../types/context-menu.js";
|
|
2
|
-
import * as _$vue from "vue";
|
|
3
|
-
|
|
4
2
|
//#region src/components/context-menu/context-menu.vue.d.ts
|
|
5
|
-
declare const __VLS_export:
|
|
3
|
+
declare const __VLS_export: import("vue").DefineComponent<ContextMenuProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
|
|
6
4
|
destroy: () => any;
|
|
7
|
-
}, string,
|
|
5
|
+
}, string, import("vue").PublicProps, Readonly<ContextMenuProps> & Readonly<{
|
|
8
6
|
onDestroy?: (() => any) | undefined;
|
|
9
7
|
}>, {
|
|
10
8
|
width: number | string;
|
|
11
|
-
}, {}, {}, {}, string,
|
|
9
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
12
10
|
declare const _default: typeof __VLS_export;
|
|
13
11
|
//#endregion
|
|
14
12
|
export { _default };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"di.js","names":[],"sources":["../../../src/components/context-menu/di.ts"],"sourcesContent":["import type { BEM } from '@veltra/utils'\nimport type { InjectionKey } from 'vue'\n\nexport const ContextMenuDIKey: InjectionKey<{ cls: BEM<'context-menu'> }> =\n Symbol('ContextMenuDIKey')\n"],"mappings":";AAGA,MAAa,mBACX,OAAO,
|
|
1
|
+
{"version":3,"file":"di.js","names":[],"sources":["../../../src/components/context-menu/di.ts"],"sourcesContent":["import type { BEM } from '@veltra/utils'\nimport type { InjectionKey } from 'vue'\n\nexport const ContextMenuDIKey: InjectionKey<{ cls: BEM<'context-menu'> }> =\n Symbol('ContextMenuDIKey')\n"],"mappings":";AAGA,MAAa,mBACX,OAAO,kBAAkB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date-panel.js","names":[],"sources":["../../../src/components/date-panel/date-panel.vue"],"sourcesContent":["<template>\n <div :class=\"[cls.b, cls.m(props.size)]\">\n <template v-if=\"panelType === 'day'\">\n <DayHeader />\n <DayPanel />\n </template>\n\n <template v-else-if=\"panelType === 'year'\">\n <YearHeader />\n <YearPanel />\n </template>\n\n <template v-else-if=\"panelType === 'month'\">\n <MonthHeader />\n <MonthPanel />\n </template>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport type { DatePanelEmits, DatePanelProps } from '../../types'\nimport DayHeader from './headers/day.vue'\nimport MonthHeader from './headers/month.vue'\nimport YearHeader from './headers/year.vue'\nimport DayPanel from './panels/day.vue'\nimport MonthPanel from './panels/month.vue'\nimport YearPanel from './panels/year.vue'\nimport { usePanel } from './use-panel'\n\ndefineOptions({ name: 'DatePanel' })\n\nconst props = withDefaults(defineProps<DatePanelProps>(), { size: 'default', type: 'date' })\n\nconst emit = defineEmits<DatePanelEmits>()\n\nconst { cls, panelType } = usePanel({ props, emit })\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;EA+BA,MAAM,QAAQ;EAId,MAAM,EAAE,KAAK,cAAc,SAAS;GAAE;GAAO,MAAA;
|
|
1
|
+
{"version":3,"file":"date-panel.js","names":[],"sources":["../../../src/components/date-panel/date-panel.vue"],"sourcesContent":["<template>\n <div :class=\"[cls.b, cls.m(props.size)]\">\n <template v-if=\"panelType === 'day'\">\n <DayHeader />\n <DayPanel />\n </template>\n\n <template v-else-if=\"panelType === 'year'\">\n <YearHeader />\n <YearPanel />\n </template>\n\n <template v-else-if=\"panelType === 'month'\">\n <MonthHeader />\n <MonthPanel />\n </template>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport type { DatePanelEmits, DatePanelProps } from '../../types'\nimport DayHeader from './headers/day.vue'\nimport MonthHeader from './headers/month.vue'\nimport YearHeader from './headers/year.vue'\nimport DayPanel from './panels/day.vue'\nimport MonthPanel from './panels/month.vue'\nimport YearPanel from './panels/year.vue'\nimport { usePanel } from './use-panel'\n\ndefineOptions({ name: 'DatePanel' })\n\nconst props = withDefaults(defineProps<DatePanelProps>(), { size: 'default', type: 'date' })\n\nconst emit = defineEmits<DatePanelEmits>()\n\nconst { cls, panelType } = usePanel({ props, emit })\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;EA+BA,MAAM,QAAQ;EAId,MAAM,EAAE,KAAK,cAAc,SAAS;GAAE;GAAO,MAAA;EAAK,CAAC;;uBAlCjD,mBAeM,OAAA,EAfA,OAAK,eAAA,CAAG,MAAA,GAAA,EAAI,GAAG,MAAA,GAAA,EAAI,EAAE,MAAM,IAAI,CAAA,CAAA,EAAA,GAAA,CACnB,MAAA,SAAA,MAAS,SAAA,UAAA,GAAzB,mBAGW,UAAA,EAAA,KAAA,EAAA,GAAA,CAFT,YAAa,WAAA,GACb,YAAY,WAAA,CAAA,GAAA,EAAA,KAGO,MAAA,SAAA,MAAS,UAAA,UAAA,GAA9B,mBAGW,UAAA,EAAA,KAAA,EAAA,GAAA,CAFT,YAAc,WAAA,GACd,YAAa,WAAA,CAAA,GAAA,EAAA,KAGM,MAAA,SAAA,MAAS,WAAA,UAAA,GAA9B,mBAGW,UAAA,EAAA,KAAA,EAAA,GAAA,CAFT,YAAe,WAAA,GACf,YAAc,WAAA,CAAA,GAAA,EAAA,KAAA,mBAAA,QAAA,IAAA,CAAA,GAAA,CAAA"}
|
|
@@ -1,19 +1,15 @@
|
|
|
1
1
|
import { DatePanelProps } from "../../types/date-panel.js";
|
|
2
|
-
import * as _$vue from "vue";
|
|
3
|
-
import * as _$_veltra_utils0 from "@veltra/utils";
|
|
4
|
-
import * as _$_cat_kit_core0 from "@cat-kit/core";
|
|
5
|
-
|
|
6
2
|
//#region src/components/date-panel/date-panel.vue.d.ts
|
|
7
|
-
declare const __VLS_export:
|
|
8
|
-
"select:range-date": (rangeDate?: [
|
|
9
|
-
"select:date": (date:
|
|
10
|
-
}, string,
|
|
11
|
-
"onSelect:range-date"?: ((rangeDate?: [
|
|
12
|
-
"onSelect:date"?: ((date:
|
|
3
|
+
declare const __VLS_export: import("vue").DefineComponent<DatePanelProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
|
|
4
|
+
"select:range-date": (rangeDate?: [import("@cat-kit/core").Dater, import("@cat-kit/core").Dater] | undefined) => any;
|
|
5
|
+
"select:date": (date: import("@cat-kit/core").Dater) => any;
|
|
6
|
+
}, string, import("vue").PublicProps, Readonly<DatePanelProps> & Readonly<{
|
|
7
|
+
"onSelect:range-date"?: ((rangeDate?: [import("@cat-kit/core").Dater, import("@cat-kit/core").Dater] | undefined) => any) | undefined;
|
|
8
|
+
"onSelect:date"?: ((date: import("@cat-kit/core").Dater) => any) | undefined;
|
|
13
9
|
}>, {
|
|
14
10
|
type: "date" | "month" | "year";
|
|
15
|
-
size:
|
|
16
|
-
}, {}, {}, {}, string,
|
|
11
|
+
size: import("@veltra/utils").ComponentSize;
|
|
12
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
17
13
|
declare const _default: typeof __VLS_export;
|
|
18
14
|
//#endregion
|
|
19
15
|
export { _default };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"di.js","names":[],"sources":["../../../src/components/date-panel/di.ts"],"sourcesContent":["import type { Dater } from '@cat-kit/core'\nimport type { BEM } from '@veltra/utils'\nimport type { ComputedRef, InjectionKey, Ref } from 'vue'\n\nimport type { DatePanelEmits, DatePanelProps, PanelType } from '../../types'\n\nexport interface DatePanelContext {\n cls: BEM<'date-panel'>\n panelType: Ref<PanelType>\n panelDate: Ref<Dater>\n rangeDate: ComputedRef<[Dater, Dater] | undefined>\n\n panelProps: DatePanelProps\n panelEmit: DatePanelEmits\n\n /** 选择日期 */\n handleDateSelect: (date: Dater) => void\n /** 范围日期悬停 */\n handleDateRangeHover: (date: Dater) => void\n\n /** 上一年 */\n toPrevYear: () => void\n /** 上个月 */\n toPrevMonth: () => void\n /** 下一年 */\n toNextYear: () => void\n /** 下个月 */\n toNextMonth: () => void\n /** 下十年 */\n toNextTenYears: () => void\n /** 上十年 */\n toPrevTenYears: () => void\n}\n\nexport const DatePanelDIKey: InjectionKey<DatePanelContext> = Symbol('DatePanelDIKey')\n"],"mappings":";AAkCA,MAAa,iBAAiD,OAAO,
|
|
1
|
+
{"version":3,"file":"di.js","names":[],"sources":["../../../src/components/date-panel/di.ts"],"sourcesContent":["import type { Dater } from '@cat-kit/core'\nimport type { BEM } from '@veltra/utils'\nimport type { ComputedRef, InjectionKey, Ref } from 'vue'\n\nimport type { DatePanelEmits, DatePanelProps, PanelType } from '../../types'\n\nexport interface DatePanelContext {\n cls: BEM<'date-panel'>\n panelType: Ref<PanelType>\n panelDate: Ref<Dater>\n rangeDate: ComputedRef<[Dater, Dater] | undefined>\n\n panelProps: DatePanelProps\n panelEmit: DatePanelEmits\n\n /** 选择日期 */\n handleDateSelect: (date: Dater) => void\n /** 范围日期悬停 */\n handleDateRangeHover: (date: Dater) => void\n\n /** 上一年 */\n toPrevYear: () => void\n /** 上个月 */\n toPrevMonth: () => void\n /** 下一年 */\n toNextYear: () => void\n /** 下个月 */\n toNextMonth: () => void\n /** 下十年 */\n toNextTenYears: () => void\n /** 上十年 */\n toPrevTenYears: () => void\n}\n\nexport const DatePanelDIKey: InjectionKey<DatePanelContext> = Symbol('DatePanelDIKey')\n"],"mappings":";AAkCA,MAAa,iBAAiD,OAAO,gBAAgB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"day.js","names":[],"sources":["../../../../src/components/date-panel/headers/day.vue"],"sourcesContent":["<template>\n <div :class=\"cls.e('header')\">\n <div>\n <u-icon @click=\"toPrevYear\" title=\"上一年\">\n <DArrowLeft />\n </u-icon>\n <u-icon @click=\"toPrevMonth\" title=\"上个月\">\n <ArrowLeft />\n </u-icon>\n </div>\n\n <div>\n <span :class=\"cls.e('header-year')\" @click=\"panelType = 'year'\">\n {{ panelDate.year }}\n </span>\n <span :class=\"cls.e('header-month')\" @click=\"panelType = 'month'\">\n {{ panelDate.month }}月\n </span>\n </div>\n\n <div>\n <u-icon @click=\"toNextMonth\" title=\"下个月\">\n <ArrowRight />\n </u-icon>\n <u-icon @click=\"toNextYear\" title=\"下一年\">\n <DArrowRight />\n </u-icon>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ArrowLeft, ArrowRight, DArrowLeft, DArrowRight } from '@veltra/icons/normal'\nimport { inject } from 'vue'\n\nimport { UIcon } from '../../icon'\nimport { DatePanelDIKey } from '../di'\n\ndefineOptions({ name: 'DatePanelDayHeader' })\n\nconst { panelDate, panelType, cls, toPrevMonth, toNextMonth, toPrevYear, toNextYear } =\n inject(DatePanelDIKey)!\n</script>\n"],"mappings":";;;;;;;;;EAwCA,MAAM,EAAE,WAAW,WAAW,KAAK,aAAa,aAAa,YAAY,eACvE,OAAO,
|
|
1
|
+
{"version":3,"file":"day.js","names":[],"sources":["../../../../src/components/date-panel/headers/day.vue"],"sourcesContent":["<template>\n <div :class=\"cls.e('header')\">\n <div>\n <u-icon @click=\"toPrevYear\" title=\"上一年\">\n <DArrowLeft />\n </u-icon>\n <u-icon @click=\"toPrevMonth\" title=\"上个月\">\n <ArrowLeft />\n </u-icon>\n </div>\n\n <div>\n <span :class=\"cls.e('header-year')\" @click=\"panelType = 'year'\">\n {{ panelDate.year }}\n </span>\n <span :class=\"cls.e('header-month')\" @click=\"panelType = 'month'\">\n {{ panelDate.month }}月\n </span>\n </div>\n\n <div>\n <u-icon @click=\"toNextMonth\" title=\"下个月\">\n <ArrowRight />\n </u-icon>\n <u-icon @click=\"toNextYear\" title=\"下一年\">\n <DArrowRight />\n </u-icon>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ArrowLeft, ArrowRight, DArrowLeft, DArrowRight } from '@veltra/icons/normal'\nimport { inject } from 'vue'\n\nimport { UIcon } from '../../icon'\nimport { DatePanelDIKey } from '../di'\n\ndefineOptions({ name: 'DatePanelDayHeader' })\n\nconst { panelDate, panelType, cls, toPrevMonth, toNextMonth, toPrevYear, toNextYear } =\n inject(DatePanelDIKey)!\n</script>\n"],"mappings":";;;;;;;;;EAwCA,MAAM,EAAE,WAAW,WAAW,KAAK,aAAa,aAAa,YAAY,eACvE,OAAO,cAAc;;uBAxCrB,mBA2BM,OAAA,EA3BA,OAAK,eAAE,MAAA,GAAA,EAAI,EAAC,QAAA,CAAA,EAAA,GAAA;IAChB,mBAOM,OAAA,MAAA,CANJ,YAES,MAAA,WAAA,GAAA;KAFA,SAAO,MAAA,UAAA;KAAY,OAAM;;4BAClB,CAAd,YAAc,MAAA,UAAA,CAAA,CAAA,CAAA;;wBAEhB,YAES,MAAA,WAAA,GAAA;KAFA,SAAO,MAAA,WAAA;KAAa,OAAM;;4BACpB,CAAb,YAAa,MAAA,SAAA,CAAA,CAAA,CAAA;;;IAIjB,mBAOM,OAAA,MAAA,CANJ,mBAEO,QAAA;KAFA,OAAK,eAAE,MAAA,GAAA,EAAI,EAAC,aAAA,CAAA;KAAkB,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,UAAA,QAAS;uBAChD,MAAA,SAAA,EAAU,IAAI,GAAA,CAAA,GAEnB,mBAEO,QAAA;KAFA,OAAK,eAAE,MAAA,GAAA,EAAI,EAAC,cAAA,CAAA;KAAmB,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,UAAA,QAAS;uBACjD,MAAA,SAAA,EAAU,KAAK,IAAG,MACvB,CAAA,CAAA,CAAA;IAGF,mBAOM,OAAA,MAAA,CANJ,YAES,MAAA,WAAA,GAAA;KAFA,SAAO,MAAA,WAAA;KAAa,OAAM;;4BACnB,CAAd,YAAc,MAAA,UAAA,CAAA,CAAA,CAAA;;wBAEhB,YAES,MAAA,WAAA,GAAA;KAFA,SAAO,MAAA,UAAA;KAAY,OAAM;;4BACjB,CAAf,YAAe,MAAA,WAAA,CAAA,CAAA,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"month.js","names":[],"sources":["../../../../src/components/date-panel/headers/month.vue"],"sourcesContent":["<template>\n <div :class=\"cls.e('header')\">\n <u-icon @click=\"toPrevYear\" title=\"上一年\">\n <DArrowLeft />\n </u-icon>\n\n <span :class=\"cls.e('header-year')\" @click=\"panelType = 'year'\">\n {{ panelDate.year }}\n </span>\n\n <u-icon @click=\"toNextYear\" title=\"下一年\">\n <DArrowRight />\n </u-icon>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { DArrowLeft, DArrowRight } from '@veltra/icons'\nimport { inject } from 'vue'\n\nimport { UIcon } from '../../icon'\nimport { DatePanelDIKey } from '../di'\n\ndefineOptions({ name: 'DatePanelMonthHeader' })\n\nconst { panelDate, panelType, toPrevYear, toNextYear, cls } = inject(DatePanelDIKey)!\n</script>\n"],"mappings":";;;;;;;;;EAyBA,MAAM,EAAE,WAAW,WAAW,YAAY,YAAY,QAAQ,OAAO,
|
|
1
|
+
{"version":3,"file":"month.js","names":[],"sources":["../../../../src/components/date-panel/headers/month.vue"],"sourcesContent":["<template>\n <div :class=\"cls.e('header')\">\n <u-icon @click=\"toPrevYear\" title=\"上一年\">\n <DArrowLeft />\n </u-icon>\n\n <span :class=\"cls.e('header-year')\" @click=\"panelType = 'year'\">\n {{ panelDate.year }}\n </span>\n\n <u-icon @click=\"toNextYear\" title=\"下一年\">\n <DArrowRight />\n </u-icon>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { DArrowLeft, DArrowRight } from '@veltra/icons'\nimport { inject } from 'vue'\n\nimport { UIcon } from '../../icon'\nimport { DatePanelDIKey } from '../di'\n\ndefineOptions({ name: 'DatePanelMonthHeader' })\n\nconst { panelDate, panelType, toPrevYear, toNextYear, cls } = inject(DatePanelDIKey)!\n</script>\n"],"mappings":";;;;;;;;;EAyBA,MAAM,EAAE,WAAW,WAAW,YAAY,YAAY,QAAQ,OAAO,cAAc;;uBAxBjF,mBAYM,OAAA,EAZA,OAAK,eAAE,MAAA,GAAA,EAAI,EAAC,QAAA,CAAA,EAAA,GAAA;IAChB,YAES,MAAA,WAAA,GAAA;KAFA,SAAO,MAAA,UAAA;KAAY,OAAM;;4BAClB,CAAd,YAAc,MAAA,UAAA,CAAA,CAAA,CAAA;;;IAGhB,mBAEO,QAAA;KAFA,OAAK,eAAE,MAAA,GAAA,EAAI,EAAC,aAAA,CAAA;KAAkB,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,UAAA,QAAS;uBAChD,MAAA,SAAA,EAAU,IAAI,GAAA,CAAA;IAGnB,YAES,MAAA,WAAA,GAAA;KAFA,SAAO,MAAA,UAAA;KAAY,OAAM;;4BACjB,CAAf,YAAe,MAAA,WAAA,CAAA,CAAA,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"year.js","names":[],"sources":["../../../../src/components/date-panel/headers/year.vue"],"sourcesContent":["<template>\n <div :class=\"cls.e('header')\">\n <u-icon @click=\"toPrevTenYears\" title=\"上个十年\">\n <DArrowLeft />\n </u-icon>\n\n <span> {{ startYear }} ~ {{ endYear }} </span>\n\n <u-icon @click=\"toNextTenYears\" title=\"下个十年\">\n <DArrowRight />\n </u-icon>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { DArrowLeft, DArrowRight } from '@veltra/icons/normal'\nimport { computed } from 'vue'\nimport { inject } from 'vue'\n\nimport { UIcon } from '../../icon'\nimport { DatePanelDIKey } from '../di'\n\ndefineOptions({ name: 'DatePanelYearHeader' })\n\nconst { panelDate, toPrevTenYears, toNextTenYears, cls } = inject(DatePanelDIKey)!\n\nconst startYear = computed(() => {\n return panelDate.value.year - (panelDate.value.year % 10) + 1\n})\n\nconst endYear = computed(() => {\n return startYear.value + 9\n})\n</script>\n"],"mappings":";;;;;;;;;EAwBA,MAAM,EAAE,WAAW,gBAAgB,gBAAgB,QAAQ,OAAO,
|
|
1
|
+
{"version":3,"file":"year.js","names":[],"sources":["../../../../src/components/date-panel/headers/year.vue"],"sourcesContent":["<template>\n <div :class=\"cls.e('header')\">\n <u-icon @click=\"toPrevTenYears\" title=\"上个十年\">\n <DArrowLeft />\n </u-icon>\n\n <span> {{ startYear }} ~ {{ endYear }} </span>\n\n <u-icon @click=\"toNextTenYears\" title=\"下个十年\">\n <DArrowRight />\n </u-icon>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { DArrowLeft, DArrowRight } from '@veltra/icons/normal'\nimport { computed } from 'vue'\nimport { inject } from 'vue'\n\nimport { UIcon } from '../../icon'\nimport { DatePanelDIKey } from '../di'\n\ndefineOptions({ name: 'DatePanelYearHeader' })\n\nconst { panelDate, toPrevTenYears, toNextTenYears, cls } = inject(DatePanelDIKey)!\n\nconst startYear = computed(() => {\n return panelDate.value.year - (panelDate.value.year % 10) + 1\n})\n\nconst endYear = computed(() => {\n return startYear.value + 9\n})\n</script>\n"],"mappings":";;;;;;;;;EAwBA,MAAM,EAAE,WAAW,gBAAgB,gBAAgB,QAAQ,OAAO,cAAc;EAEhF,MAAM,YAAY,eAAe;GAC/B,OAAO,UAAU,MAAM,OAAQ,UAAU,MAAM,OAAO,KAAM;EAC9D,CAAC;EAED,MAAM,UAAU,eAAe;GAC7B,OAAO,UAAU,QAAQ;EAC3B,CAAC;;uBA/BC,mBAUM,OAAA,EAVA,OAAK,eAAE,MAAA,GAAA,EAAI,EAAC,QAAA,CAAA,EAAA,GAAA;IAChB,YAES,MAAA,WAAA,GAAA;KAFA,SAAO,MAAA,cAAA;KAAgB,OAAM;;4BACtB,CAAd,YAAc,MAAA,UAAA,CAAA,CAAA,CAAA;;;IAGhB,mBAA8C,QAAA,MAAA,gBAApC,UAAA,KAAS,IAAG,QAAG,gBAAG,QAAA,KAAO,GAAA,CAAA;IAEnC,YAES,MAAA,WAAA,GAAA;KAFA,SAAO,MAAA,cAAA;KAAgB,OAAM;;4BACrB,CAAf,YAAe,MAAA,WAAA,CAAA,CAAA,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"day.js","names":[],"sources":["../../../../src/components/date-panel/panels/day.vue"],"sourcesContent":["<template>\n <ul :class=\"cls.e('week')\">\n <li :class=\"cls.e('week-day')\" v-for=\"weekDay of weekDays\">\n {{ weekDay }}\n </li>\n </ul>\n\n <ul :class=\"cls.e('days')\">\n <li\n v-for=\"day of days\"\n :title=\"day.isToday ? '今天' : ''\"\n :class=\"getDayCls(day)\"\n :key=\"day.date.timestamp\"\n @click=\"!day.disabled && handleDateSelect(day.date)\"\n @mouseenter=\"!day.disabled && handleDateRangeHover(day.date)\"\n >\n <span :class=\"cls.e('cell-value')\">\n {{ day.date.day }}\n </span>\n </li>\n </ul>\n</template>\n\n<script lang=\"ts\" setup>\nimport type { Dater } from '@cat-kit/core'\nimport { bem } from '@veltra/utils'\nimport { computed } from 'vue'\nimport { inject } from 'vue'\n\nimport type { CalendarDay } from '../../../types'\nimport { getMonthDays, weekDays } from '../../calendar/utils'\nimport { DatePanelDIKey } from '../di'\n\ndefineOptions({ name: 'DatePanelDay', inheritAttrs: false })\n\nconst { panelDate, rangeDate, panelProps, cls, handleDateSelect, handleDateRangeHover } =\n inject(DatePanelDIKey)!\n\nconst days = computed<CalendarDay[]>(() => {\n return getMonthDays(panelDate.value.timestamp, panelProps.disabledDate)\n})\n\nfunction getRangeCls(day: CalendarDay) {\n return [\n bem.is('in-range', didInRange(day.date)),\n bem.is('range-start', isRangeStart(day.date)),\n bem.is('range-end', isRangeEnd(day.date))\n ]\n}\n\nfunction getSingleCls(day: CalendarDay) {\n return [bem.is('selected', didSelected(day.date))]\n}\nfunction getDayCls(day: CalendarDay) {\n const ret = [\n cls.e('cell'),\n bem.is(day.type),\n bem.is('today', day.isToday === true),\n bem.is('disabled', day.disabled === true)\n ]\n if (panelProps.range) {\n return [...ret, ...getRangeCls(day)]\n }\n return [...ret, ...getSingleCls(day)]\n}\n\nconst fmtStr = 'yyyyMMdd'\n\nfunction didSelected(date: Dater) {\n if (!panelProps.date) return false\n return date.format(fmtStr) === panelProps.date.format(fmtStr)\n}\n\nfunction didInRange(date: Dater) {\n if (!rangeDate.value) return false\n const [start, end] = rangeDate.value\n return date.timestamp >= start.timestamp && date.timestamp <= end.timestamp\n}\n\nfunction isRangeStart(date: Dater) {\n if (!rangeDate.value) return false\n const [start] = rangeDate.value\n return date.format(fmtStr) === start.format(fmtStr)\n}\n\nfunction isRangeEnd(date: Dater) {\n if (!rangeDate.value) return false\n const [, end] = rangeDate.value\n return date.format(fmtStr) === end.format(fmtStr)\n}\n</script>\n"],"mappings":";;;;;;;;;;AAkEA,MAAM,SAAS;;;;;;EA/Bf,MAAM,EAAE,WAAW,WAAW,YAAY,KAAK,kBAAkB,yBAC/D,OAAO,
|
|
1
|
+
{"version":3,"file":"day.js","names":[],"sources":["../../../../src/components/date-panel/panels/day.vue"],"sourcesContent":["<template>\n <ul :class=\"cls.e('week')\">\n <li :class=\"cls.e('week-day')\" v-for=\"weekDay of weekDays\">\n {{ weekDay }}\n </li>\n </ul>\n\n <ul :class=\"cls.e('days')\">\n <li\n v-for=\"day of days\"\n :title=\"day.isToday ? '今天' : ''\"\n :class=\"getDayCls(day)\"\n :key=\"day.date.timestamp\"\n @click=\"!day.disabled && handleDateSelect(day.date)\"\n @mouseenter=\"!day.disabled && handleDateRangeHover(day.date)\"\n >\n <span :class=\"cls.e('cell-value')\">\n {{ day.date.day }}\n </span>\n </li>\n </ul>\n</template>\n\n<script lang=\"ts\" setup>\nimport type { Dater } from '@cat-kit/core'\nimport { bem } from '@veltra/utils'\nimport { computed } from 'vue'\nimport { inject } from 'vue'\n\nimport type { CalendarDay } from '../../../types'\nimport { getMonthDays, weekDays } from '../../calendar/utils'\nimport { DatePanelDIKey } from '../di'\n\ndefineOptions({ name: 'DatePanelDay', inheritAttrs: false })\n\nconst { panelDate, rangeDate, panelProps, cls, handleDateSelect, handleDateRangeHover } =\n inject(DatePanelDIKey)!\n\nconst days = computed<CalendarDay[]>(() => {\n return getMonthDays(panelDate.value.timestamp, panelProps.disabledDate)\n})\n\nfunction getRangeCls(day: CalendarDay) {\n return [\n bem.is('in-range', didInRange(day.date)),\n bem.is('range-start', isRangeStart(day.date)),\n bem.is('range-end', isRangeEnd(day.date))\n ]\n}\n\nfunction getSingleCls(day: CalendarDay) {\n return [bem.is('selected', didSelected(day.date))]\n}\nfunction getDayCls(day: CalendarDay) {\n const ret = [\n cls.e('cell'),\n bem.is(day.type),\n bem.is('today', day.isToday === true),\n bem.is('disabled', day.disabled === true)\n ]\n if (panelProps.range) {\n return [...ret, ...getRangeCls(day)]\n }\n return [...ret, ...getSingleCls(day)]\n}\n\nconst fmtStr = 'yyyyMMdd'\n\nfunction didSelected(date: Dater) {\n if (!panelProps.date) return false\n return date.format(fmtStr) === panelProps.date.format(fmtStr)\n}\n\nfunction didInRange(date: Dater) {\n if (!rangeDate.value) return false\n const [start, end] = rangeDate.value\n return date.timestamp >= start.timestamp && date.timestamp <= end.timestamp\n}\n\nfunction isRangeStart(date: Dater) {\n if (!rangeDate.value) return false\n const [start] = rangeDate.value\n return date.format(fmtStr) === start.format(fmtStr)\n}\n\nfunction isRangeEnd(date: Dater) {\n if (!rangeDate.value) return false\n const [, end] = rangeDate.value\n return date.format(fmtStr) === end.format(fmtStr)\n}\n</script>\n"],"mappings":";;;;;;;;;;AAkEA,MAAM,SAAS;;;;;;EA/Bf,MAAM,EAAE,WAAW,WAAW,YAAY,KAAK,kBAAkB,yBAC/D,OAAO,cAAc;EAEvB,MAAM,OAAO,eAA8B;GACzC,OAAO,aAAa,UAAU,MAAM,WAAW,WAAW,YAAY;EACxE,CAAC;EAED,SAAS,YAAY,KAAkB;GACrC,OAAO;IACL,IAAI,GAAG,YAAY,WAAW,IAAI,IAAI,CAAC;IACvC,IAAI,GAAG,eAAe,aAAa,IAAI,IAAI,CAAC;IAC5C,IAAI,GAAG,aAAa,WAAW,IAAI,IAAI,CAAC;GAC1C;EACF;EAEA,SAAS,aAAa,KAAkB;GACtC,OAAO,CAAC,IAAI,GAAG,YAAY,YAAY,IAAI,IAAI,CAAC,CAAC;EACnD;EACA,SAAS,UAAU,KAAkB;GACnC,MAAM,MAAM;IACV,IAAI,EAAE,MAAM;IACZ,IAAI,GAAG,IAAI,IAAI;IACf,IAAI,GAAG,SAAS,IAAI,YAAY,IAAI;IACpC,IAAI,GAAG,YAAY,IAAI,aAAa,IAAI;GAC1C;GACA,IAAI,WAAW,OACb,OAAO,CAAC,GAAG,KAAK,GAAG,YAAY,GAAG,CAAC;GAErC,OAAO,CAAC,GAAG,KAAK,GAAG,aAAa,GAAG,CAAC;EACtC;EAIA,SAAS,YAAY,MAAa;GAChC,IAAI,CAAC,WAAW,MAAM,OAAO;GAC7B,OAAO,KAAK,OAAO,MAAM,MAAM,WAAW,KAAK,OAAO,MAAM;EAC9D;EAEA,SAAS,WAAW,MAAa;GAC/B,IAAI,CAAC,UAAU,OAAO,OAAO;GAC7B,MAAM,CAAC,OAAO,OAAO,UAAU;GAC/B,OAAO,KAAK,aAAa,MAAM,aAAa,KAAK,aAAa,IAAI;EACpE;EAEA,SAAS,aAAa,MAAa;GACjC,IAAI,CAAC,UAAU,OAAO,OAAO;GAC7B,MAAM,CAAC,SAAS,UAAU;GAC1B,OAAO,KAAK,OAAO,MAAM,MAAM,MAAM,OAAO,MAAM;EACpD;EAEA,SAAS,WAAW,MAAa;GAC/B,IAAI,CAAC,UAAU,OAAO,OAAO;GAC7B,MAAM,GAAG,OAAO,UAAU;GAC1B,OAAO,KAAK,OAAO,MAAM,MAAM,IAAI,OAAO,MAAM;EAClD;;2DAxFE,mBAIK,MAAA,EAJA,OAAK,eAAE,MAAA,GAAA,EAAI,EAAC,MAAA,CAAA,EAAA,GAAA,EAAA,UAAA,IAAA,GACf,mBAEK,UAAA,MAAA,WAF4C,MAAA,QAAA,IAAX,YAAO;wBAA7C,mBAEK,MAAA,EAFA,OAAK,eAAE,MAAA,GAAA,EAAI,EAAC,UAAA,CAAA,EAAA,GAAA,gBACZ,OAAO,GAAA,CAAA;mBAId,mBAaK,MAAA,EAbA,OAAK,eAAE,MAAA,GAAA,EAAI,EAAC,MAAA,CAAA,EAAA,GAAA,EAAA,UAAA,IAAA,GACf,mBAWK,UAAA,MAAA,WAVW,KAAA,QAAP,QAAG;wBADZ,mBAWK,MAAA;KATF,OAAO,IAAI,UAAO,OAAA;KAClB,OAAK,eAAE,UAAU,GAAG,CAAA;KACpB,KAAK,IAAI,KAAK;KACd,UAAK,WAAA,CAAG,IAAI,YAAY,MAAA,gBAAA,EAAiB,IAAI,IAAI;KACjD,eAAU,WAAA,CAAG,IAAI,YAAY,MAAA,oBAAA,EAAqB,IAAI,IAAI;QAE3D,mBAEO,QAAA,EAFA,OAAK,eAAE,MAAA,GAAA,EAAI,EAAC,YAAA,CAAA,EAAA,GAAA,gBACd,IAAI,KAAK,GAAG,GAAA,CAAA,CAAA,GAAA,IAAA,UAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"month.js","names":[],"sources":["../../../../src/components/date-panel/panels/month.vue"],"sourcesContent":["<template>\n <ul :class=\"cls.e('months')\">\n <li\n v-for=\"month of months\"\n :key=\"month.key\"\n :class=\"getMonthCls(month)\"\n @click=\"!month.disabled && handleDateSelect(month.date)\"\n @mouseenter=\"!month.disabled && handleDateRangeHover(month.date)\"\n >\n <span :class=\"cls.e('cell-value')\">{{ month.month }}月</span>\n </li>\n </ul>\n</template>\n\n<script lang=\"ts\" setup>\nimport type { Dater } from '@cat-kit/core'\nimport { bem } from '@veltra/utils'\nimport { computed } from 'vue'\nimport { inject } from 'vue'\n\nimport type { CalendarMonth } from '../../../types'\nimport { getYearMonths } from '../../calendar/utils'\nimport { DatePanelDIKey } from '../di'\n\ndefineOptions({ name: 'DatePanelMonth' })\n\nconst { cls, panelDate, rangeDate, panelProps, handleDateSelect, handleDateRangeHover } =\n inject(DatePanelDIKey)!\n\nconst months = computed(() => {\n return getYearMonths(panelDate.value.timestamp, panelProps.disabledDate)\n})\n\nfunction getRangeCls(month: CalendarMonth) {\n return [\n bem.is('in-range', didInRange(month.date)),\n bem.is('range-start', isRangeStart(month.date)),\n bem.is('range-end', isRangeEnd(month.date))\n ]\n}\n\nfunction getSingleCls(month: CalendarMonth) {\n return [bem.is('selected', didSelected(month.date))]\n}\n\nfunction getMonthCls(month: CalendarMonth) {\n const ret = [cls.e('cell'), bem.is('disabled', month.disabled === true)]\n if (panelProps.range) {\n return [...ret, ...getRangeCls(month)]\n }\n return [...ret, ...getSingleCls(month)]\n}\n\nconst fmtStr = 'yyyyMM'\n\nfunction didSelected(date: Dater) {\n if (!panelProps.date) return false\n return date.format(fmtStr) === panelProps.date.format(fmtStr)\n}\n\nfunction didInRange(date: Dater) {\n if (!rangeDate.value) return false\n const [start, end] = rangeDate.value\n return date.timestamp >= start.timestamp && date.timestamp <= end.timestamp\n}\n\nfunction isRangeStart(date: Dater) {\n if (!rangeDate.value) return false\n const [start] = rangeDate.value\n return date.format(fmtStr) === start.format(fmtStr)\n}\n\nfunction isRangeEnd(date: Dater) {\n if (!rangeDate.value) return false\n const [, end] = rangeDate.value\n return date.format(fmtStr) === end.format(fmtStr)\n}\n</script>\n"],"mappings":";;;;;;AAqDA,MAAM,SAAS;;;;;EA3Bf,MAAM,EAAE,KAAK,WAAW,WAAW,YAAY,kBAAkB,yBAC/D,OAAO,
|
|
1
|
+
{"version":3,"file":"month.js","names":[],"sources":["../../../../src/components/date-panel/panels/month.vue"],"sourcesContent":["<template>\n <ul :class=\"cls.e('months')\">\n <li\n v-for=\"month of months\"\n :key=\"month.key\"\n :class=\"getMonthCls(month)\"\n @click=\"!month.disabled && handleDateSelect(month.date)\"\n @mouseenter=\"!month.disabled && handleDateRangeHover(month.date)\"\n >\n <span :class=\"cls.e('cell-value')\">{{ month.month }}月</span>\n </li>\n </ul>\n</template>\n\n<script lang=\"ts\" setup>\nimport type { Dater } from '@cat-kit/core'\nimport { bem } from '@veltra/utils'\nimport { computed } from 'vue'\nimport { inject } from 'vue'\n\nimport type { CalendarMonth } from '../../../types'\nimport { getYearMonths } from '../../calendar/utils'\nimport { DatePanelDIKey } from '../di'\n\ndefineOptions({ name: 'DatePanelMonth' })\n\nconst { cls, panelDate, rangeDate, panelProps, handleDateSelect, handleDateRangeHover } =\n inject(DatePanelDIKey)!\n\nconst months = computed(() => {\n return getYearMonths(panelDate.value.timestamp, panelProps.disabledDate)\n})\n\nfunction getRangeCls(month: CalendarMonth) {\n return [\n bem.is('in-range', didInRange(month.date)),\n bem.is('range-start', isRangeStart(month.date)),\n bem.is('range-end', isRangeEnd(month.date))\n ]\n}\n\nfunction getSingleCls(month: CalendarMonth) {\n return [bem.is('selected', didSelected(month.date))]\n}\n\nfunction getMonthCls(month: CalendarMonth) {\n const ret = [cls.e('cell'), bem.is('disabled', month.disabled === true)]\n if (panelProps.range) {\n return [...ret, ...getRangeCls(month)]\n }\n return [...ret, ...getSingleCls(month)]\n}\n\nconst fmtStr = 'yyyyMM'\n\nfunction didSelected(date: Dater) {\n if (!panelProps.date) return false\n return date.format(fmtStr) === panelProps.date.format(fmtStr)\n}\n\nfunction didInRange(date: Dater) {\n if (!rangeDate.value) return false\n const [start, end] = rangeDate.value\n return date.timestamp >= start.timestamp && date.timestamp <= end.timestamp\n}\n\nfunction isRangeStart(date: Dater) {\n if (!rangeDate.value) return false\n const [start] = rangeDate.value\n return date.format(fmtStr) === start.format(fmtStr)\n}\n\nfunction isRangeEnd(date: Dater) {\n if (!rangeDate.value) return false\n const [, end] = rangeDate.value\n return date.format(fmtStr) === end.format(fmtStr)\n}\n</script>\n"],"mappings":";;;;;;AAqDA,MAAM,SAAS;;;;;EA3Bf,MAAM,EAAE,KAAK,WAAW,WAAW,YAAY,kBAAkB,yBAC/D,OAAO,cAAc;EAEvB,MAAM,SAAS,eAAe;GAC5B,OAAO,cAAc,UAAU,MAAM,WAAW,WAAW,YAAY;EACzE,CAAC;EAED,SAAS,YAAY,OAAsB;GACzC,OAAO;IACL,IAAI,GAAG,YAAY,WAAW,MAAM,IAAI,CAAC;IACzC,IAAI,GAAG,eAAe,aAAa,MAAM,IAAI,CAAC;IAC9C,IAAI,GAAG,aAAa,WAAW,MAAM,IAAI,CAAC;GAC5C;EACF;EAEA,SAAS,aAAa,OAAsB;GAC1C,OAAO,CAAC,IAAI,GAAG,YAAY,YAAY,MAAM,IAAI,CAAC,CAAC;EACrD;EAEA,SAAS,YAAY,OAAsB;GACzC,MAAM,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,YAAY,MAAM,aAAa,IAAI,CAAC;GACvE,IAAI,WAAW,OACb,OAAO,CAAC,GAAG,KAAK,GAAG,YAAY,KAAK,CAAC;GAEvC,OAAO,CAAC,GAAG,KAAK,GAAG,aAAa,KAAK,CAAC;EACxC;EAIA,SAAS,YAAY,MAAa;GAChC,IAAI,CAAC,WAAW,MAAM,OAAO;GAC7B,OAAO,KAAK,OAAO,MAAM,MAAM,WAAW,KAAK,OAAO,MAAM;EAC9D;EAEA,SAAS,WAAW,MAAa;GAC/B,IAAI,CAAC,UAAU,OAAO,OAAO;GAC7B,MAAM,CAAC,OAAO,OAAO,UAAU;GAC/B,OAAO,KAAK,aAAa,MAAM,aAAa,KAAK,aAAa,IAAI;EACpE;EAEA,SAAS,aAAa,MAAa;GACjC,IAAI,CAAC,UAAU,OAAO,OAAO;GAC7B,MAAM,CAAC,SAAS,UAAU;GAC1B,OAAO,KAAK,OAAO,MAAM,MAAM,MAAM,OAAO,MAAM;EACpD;EAEA,SAAS,WAAW,MAAa;GAC/B,IAAI,CAAC,UAAU,OAAO,OAAO;GAC7B,MAAM,GAAG,OAAO,UAAU;GAC1B,OAAO,KAAK,OAAO,MAAM,MAAM,IAAI,OAAO,MAAM;EAClD;;uBA3EE,mBAUK,MAAA,EAVA,OAAK,eAAE,MAAA,GAAA,EAAI,EAAC,QAAA,CAAA,EAAA,GAAA,EAAA,UAAA,IAAA,GACf,mBAQK,UAAA,MAAA,WAPa,OAAA,QAAT,UAAK;wBADd,mBAQK,MAAA;KANF,KAAK,MAAM;KACX,OAAK,eAAE,YAAY,KAAK,CAAA;KACxB,UAAK,WAAA,CAAG,MAAM,YAAY,MAAA,gBAAA,EAAiB,MAAM,IAAI;KACrD,eAAU,WAAA,CAAG,MAAM,YAAY,MAAA,oBAAA,EAAqB,MAAM,IAAI;QAE/D,mBAA4D,QAAA,EAArD,OAAK,eAAE,MAAA,GAAA,EAAI,EAAC,YAAA,CAAA,EAAA,GAAA,gBAAmB,MAAM,KAAK,IAAG,KAAC,CAAA,CAAA,GAAA,IAAA,UAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"year.js","names":[],"sources":["../../../../src/components/date-panel/panels/year.vue"],"sourcesContent":["<template>\n <ul :class=\"cls.e('years')\">\n <li\n v-for=\"year of years\"\n :key=\"year.year\"\n :class=\"getYearCls(year)\"\n @click=\"!year.disabled && handleDateSelect(year.date)\"\n @mouseenter=\"!year.disabled && handleDateRangeHover(year.date)\"\n >\n <span :class=\"cls.e('cell-value')\">{{ year.year }}</span>\n </li>\n </ul>\n</template>\n\n<script lang=\"ts\" setup>\nimport type { Dater } from '@cat-kit/core'\nimport { bem } from '@veltra/utils'\nimport { computed } from 'vue'\nimport { inject } from 'vue'\n\nimport type { CalendarYear } from '../../../types'\nimport { getTenYears } from '../../calendar/utils'\nimport { DatePanelDIKey } from '../di'\n\ndefineOptions({ name: 'DatePanelYear' })\n\nconst { panelDate, rangeDate, panelProps, cls, handleDateSelect, handleDateRangeHover } =\n inject(DatePanelDIKey)!\n\nconst years = computed(() => {\n return getTenYears(panelDate.value.timestamp, panelProps.disabledDate)\n})\n\nfunction getRangeCls(year: CalendarYear) {\n return [\n bem.is('range', didInRange(year.date)),\n bem.is('range-start', isRangeStart(year.date)),\n bem.is('range-end', isRangeEnd(year.date))\n ]\n}\n\nfunction getSingleCls(year: CalendarYear) {\n return [bem.is('selected', didSelected(year.date))]\n}\n\nfunction getYearCls(year: CalendarYear) {\n const ret = [cls.e('cell'), bem.is('disabled', year.disabled === true)]\n if (panelProps.range) {\n return [...ret, ...getRangeCls(year)]\n }\n return [...ret, ...getSingleCls(year)]\n}\n\nfunction didSelected(date: Dater) {\n if (!panelProps.date) return false\n return date.year === panelProps.date.year\n}\n\nfunction didInRange(date: Dater) {\n if (!rangeDate.value) return false\n const [start, end] = rangeDate.value\n return date.timestamp >= start.timestamp && date.timestamp <= end.timestamp\n}\n\nfunction isRangeStart(date: Dater) {\n if (!rangeDate.value) return false\n const [start] = rangeDate.value\n return date.year === start.year\n}\n\nfunction isRangeEnd(date: Dater) {\n if (!rangeDate.value) return false\n const [, end] = rangeDate.value\n return date.year === end.year\n}\n</script>\n"],"mappings":";;;;;;;;;;EA0BA,MAAM,EAAE,WAAW,WAAW,YAAY,KAAK,kBAAkB,yBAC/D,OAAO,
|
|
1
|
+
{"version":3,"file":"year.js","names":[],"sources":["../../../../src/components/date-panel/panels/year.vue"],"sourcesContent":["<template>\n <ul :class=\"cls.e('years')\">\n <li\n v-for=\"year of years\"\n :key=\"year.year\"\n :class=\"getYearCls(year)\"\n @click=\"!year.disabled && handleDateSelect(year.date)\"\n @mouseenter=\"!year.disabled && handleDateRangeHover(year.date)\"\n >\n <span :class=\"cls.e('cell-value')\">{{ year.year }}</span>\n </li>\n </ul>\n</template>\n\n<script lang=\"ts\" setup>\nimport type { Dater } from '@cat-kit/core'\nimport { bem } from '@veltra/utils'\nimport { computed } from 'vue'\nimport { inject } from 'vue'\n\nimport type { CalendarYear } from '../../../types'\nimport { getTenYears } from '../../calendar/utils'\nimport { DatePanelDIKey } from '../di'\n\ndefineOptions({ name: 'DatePanelYear' })\n\nconst { panelDate, rangeDate, panelProps, cls, handleDateSelect, handleDateRangeHover } =\n inject(DatePanelDIKey)!\n\nconst years = computed(() => {\n return getTenYears(panelDate.value.timestamp, panelProps.disabledDate)\n})\n\nfunction getRangeCls(year: CalendarYear) {\n return [\n bem.is('range', didInRange(year.date)),\n bem.is('range-start', isRangeStart(year.date)),\n bem.is('range-end', isRangeEnd(year.date))\n ]\n}\n\nfunction getSingleCls(year: CalendarYear) {\n return [bem.is('selected', didSelected(year.date))]\n}\n\nfunction getYearCls(year: CalendarYear) {\n const ret = [cls.e('cell'), bem.is('disabled', year.disabled === true)]\n if (panelProps.range) {\n return [...ret, ...getRangeCls(year)]\n }\n return [...ret, ...getSingleCls(year)]\n}\n\nfunction didSelected(date: Dater) {\n if (!panelProps.date) return false\n return date.year === panelProps.date.year\n}\n\nfunction didInRange(date: Dater) {\n if (!rangeDate.value) return false\n const [start, end] = rangeDate.value\n return date.timestamp >= start.timestamp && date.timestamp <= end.timestamp\n}\n\nfunction isRangeStart(date: Dater) {\n if (!rangeDate.value) return false\n const [start] = rangeDate.value\n return date.year === start.year\n}\n\nfunction isRangeEnd(date: Dater) {\n if (!rangeDate.value) return false\n const [, end] = rangeDate.value\n return date.year === end.year\n}\n</script>\n"],"mappings":";;;;;;;;;;EA0BA,MAAM,EAAE,WAAW,WAAW,YAAY,KAAK,kBAAkB,yBAC/D,OAAO,cAAc;EAEvB,MAAM,QAAQ,eAAe;GAC3B,OAAO,YAAY,UAAU,MAAM,WAAW,WAAW,YAAY;EACvE,CAAC;EAED,SAAS,YAAY,MAAoB;GACvC,OAAO;IACL,IAAI,GAAG,SAAS,WAAW,KAAK,IAAI,CAAC;IACrC,IAAI,GAAG,eAAe,aAAa,KAAK,IAAI,CAAC;IAC7C,IAAI,GAAG,aAAa,WAAW,KAAK,IAAI,CAAC;GAC3C;EACF;EAEA,SAAS,aAAa,MAAoB;GACxC,OAAO,CAAC,IAAI,GAAG,YAAY,YAAY,KAAK,IAAI,CAAC,CAAC;EACpD;EAEA,SAAS,WAAW,MAAoB;GACtC,MAAM,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,YAAY,KAAK,aAAa,IAAI,CAAC;GACtE,IAAI,WAAW,OACb,OAAO,CAAC,GAAG,KAAK,GAAG,YAAY,IAAI,CAAC;GAEtC,OAAO,CAAC,GAAG,KAAK,GAAG,aAAa,IAAI,CAAC;EACvC;EAEA,SAAS,YAAY,MAAa;GAChC,IAAI,CAAC,WAAW,MAAM,OAAO;GAC7B,OAAO,KAAK,SAAS,WAAW,KAAK;EACvC;EAEA,SAAS,WAAW,MAAa;GAC/B,IAAI,CAAC,UAAU,OAAO,OAAO;GAC7B,MAAM,CAAC,OAAO,OAAO,UAAU;GAC/B,OAAO,KAAK,aAAa,MAAM,aAAa,KAAK,aAAa,IAAI;EACpE;EAEA,SAAS,aAAa,MAAa;GACjC,IAAI,CAAC,UAAU,OAAO,OAAO;GAC7B,MAAM,CAAC,SAAS,UAAU;GAC1B,OAAO,KAAK,SAAS,MAAM;EAC7B;EAEA,SAAS,WAAW,MAAa;GAC/B,IAAI,CAAC,UAAU,OAAO,OAAO;GAC7B,MAAM,GAAG,OAAO,UAAU;GAC1B,OAAO,KAAK,SAAS,IAAI;EAC3B;;uBAzEE,mBAUK,MAAA,EAVA,OAAK,eAAE,MAAA,GAAA,EAAI,EAAC,OAAA,CAAA,EAAA,GAAA,EAAA,UAAA,IAAA,GACf,mBAQK,UAAA,MAAA,WAPY,MAAA,QAAR,SAAI;wBADb,mBAQK,MAAA;KANF,KAAK,KAAK;KACV,OAAK,eAAE,WAAW,IAAI,CAAA;KACtB,UAAK,WAAA,CAAG,KAAK,YAAY,MAAA,gBAAA,EAAiB,KAAK,IAAI;KACnD,eAAU,WAAA,CAAG,KAAK,YAAY,MAAA,oBAAA,EAAqB,KAAK,IAAI;QAE7D,mBAAyD,QAAA,EAAlD,OAAK,eAAE,MAAA,GAAA,EAAI,EAAC,YAAA,CAAA,EAAA,GAAA,gBAAmB,KAAK,IAAI,GAAA,CAAA,CAAA,GAAA,IAAA,UAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-date-select.js","names":[],"sources":["../../../src/components/date-panel/use-date-select.ts"],"sourcesContent":["import type { Dater } from '@cat-kit/core'\nimport { type Ref, computed, type ComputedRef, shallowRef } from 'vue'\n\nimport type { DatePanelProps, PanelType, DatePanelEmits } from '../../types'\n\ninterface DateSelectOptions {\n props: DatePanelProps\n emit: DatePanelEmits\n panelType: Ref<PanelType>\n updatePanelDate: (date: Dater) => void\n}\n\ninterface UseDateSelectReturned {\n handleDateSelect: (date: Dater) => void\n handleDateRangeHover: (date: Dater) => void\n resetRangeDateTemp: () => void\n rangeDate: ComputedRef<[Dater, Dater] | undefined>\n}\n\nexport function useDateSelect(options: DateSelectOptions): UseDateSelectReturned {\n const { props, panelType, emit, updatePanelDate } = options\n\n /** 面板顺序 */\n const panelSequence: PanelType[] = ['year', 'month', 'day']\n\n const typeMapToPanelType = { year: 'year', month: 'month', date: 'day' }\n\n /**\n * 临时日期范围, 在点击第一次范围日期时使用\n */\n const rangeDateTemp = shallowRef<[Dater, Dater]>()\n let firstSelectedRangeDate: Dater | undefined = undefined\n\n const rangeDate = computed(() => {\n return rangeDateTemp.value || props.rangeDate\n })\n\n function resetRangeDateTemp() {\n rangeDateTemp.value = undefined\n firstSelectedRangeDate = undefined\n }\n\n /** 面板类型是否匹配日期类型 */\n const panelTypeMatchDateType = computed(() => {\n const { type } = props\n return typeMapToPanelType[type!] === panelType.value\n })\n\n /** 切换到下一个面板 */\n function switchNextPanel() {\n const index = panelSequence.indexOf(panelType.value)\n if (index === -1) return\n panelType.value = panelSequence[index + 1]!\n }\n\n /** 选择日期范围 */\n function handleDateRangeSelect(date: Dater) {\n if (panelTypeMatchDateType.value) {\n // 第一次选择\n if (!firstSelectedRangeDate) {\n firstSelectedRangeDate = date\n rangeDateTemp.value = [date, date]\n }\n // 第二次选择范围日期\n else {\n if (date.timestamp < firstSelectedRangeDate.timestamp) {\n rangeDateTemp.value = [date, firstSelectedRangeDate]\n } else {\n rangeDateTemp.value = [firstSelectedRangeDate, date]\n }\n emit('select:range-date', rangeDateTemp.value)\n\n // 选择完成, 清空临时日期范围\n resetRangeDateTemp()\n }\n } else {\n updatePanelDate(date)\n switchNextPanel()\n }\n }\n\n /** 范围日期悬停 */\n function handleDateRangeHover(date: Dater) {\n if (!panelTypeMatchDateType.value || !firstSelectedRangeDate) {\n return\n }\n if (date.timestamp < firstSelectedRangeDate.timestamp) {\n rangeDateTemp.value = [date, firstSelectedRangeDate]\n } else {\n rangeDateTemp.value = [firstSelectedRangeDate, date]\n }\n }\n\n function handleDateSingleSelect(date: Dater) {\n // 类型匹配则触发数据更新\n\n if (panelTypeMatchDateType.value) {\n emit('select:date', date)\n } else {\n updatePanelDate(date)\n switchNextPanel()\n }\n }\n\n /** 选择日期 */\n function handleDateSelect(date: Dater) {\n const { range } = props\n if (range) {\n handleDateRangeSelect(date)\n } else {\n handleDateSingleSelect(date)\n }\n }\n\n return { handleDateSelect, handleDateRangeHover, resetRangeDateTemp, rangeDate }\n}\n"],"mappings":";;AAmBA,SAAgB,cAAc,SAAmD;CAC/E,MAAM,EAAE,OAAO,WAAW,MAAM,oBAAoB;;CAGpD,MAAM,gBAA6B;EAAC;EAAQ;EAAS;
|
|
1
|
+
{"version":3,"file":"use-date-select.js","names":[],"sources":["../../../src/components/date-panel/use-date-select.ts"],"sourcesContent":["import type { Dater } from '@cat-kit/core'\nimport { type Ref, computed, type ComputedRef, shallowRef } from 'vue'\n\nimport type { DatePanelProps, PanelType, DatePanelEmits } from '../../types'\n\ninterface DateSelectOptions {\n props: DatePanelProps\n emit: DatePanelEmits\n panelType: Ref<PanelType>\n updatePanelDate: (date: Dater) => void\n}\n\ninterface UseDateSelectReturned {\n handleDateSelect: (date: Dater) => void\n handleDateRangeHover: (date: Dater) => void\n resetRangeDateTemp: () => void\n rangeDate: ComputedRef<[Dater, Dater] | undefined>\n}\n\nexport function useDateSelect(options: DateSelectOptions): UseDateSelectReturned {\n const { props, panelType, emit, updatePanelDate } = options\n\n /** 面板顺序 */\n const panelSequence: PanelType[] = ['year', 'month', 'day']\n\n const typeMapToPanelType = { year: 'year', month: 'month', date: 'day' }\n\n /**\n * 临时日期范围, 在点击第一次范围日期时使用\n */\n const rangeDateTemp = shallowRef<[Dater, Dater]>()\n let firstSelectedRangeDate: Dater | undefined = undefined\n\n const rangeDate = computed(() => {\n return rangeDateTemp.value || props.rangeDate\n })\n\n function resetRangeDateTemp() {\n rangeDateTemp.value = undefined\n firstSelectedRangeDate = undefined\n }\n\n /** 面板类型是否匹配日期类型 */\n const panelTypeMatchDateType = computed(() => {\n const { type } = props\n return typeMapToPanelType[type!] === panelType.value\n })\n\n /** 切换到下一个面板 */\n function switchNextPanel() {\n const index = panelSequence.indexOf(panelType.value)\n if (index === -1) return\n panelType.value = panelSequence[index + 1]!\n }\n\n /** 选择日期范围 */\n function handleDateRangeSelect(date: Dater) {\n if (panelTypeMatchDateType.value) {\n // 第一次选择\n if (!firstSelectedRangeDate) {\n firstSelectedRangeDate = date\n rangeDateTemp.value = [date, date]\n }\n // 第二次选择范围日期\n else {\n if (date.timestamp < firstSelectedRangeDate.timestamp) {\n rangeDateTemp.value = [date, firstSelectedRangeDate]\n } else {\n rangeDateTemp.value = [firstSelectedRangeDate, date]\n }\n emit('select:range-date', rangeDateTemp.value)\n\n // 选择完成, 清空临时日期范围\n resetRangeDateTemp()\n }\n } else {\n updatePanelDate(date)\n switchNextPanel()\n }\n }\n\n /** 范围日期悬停 */\n function handleDateRangeHover(date: Dater) {\n if (!panelTypeMatchDateType.value || !firstSelectedRangeDate) {\n return\n }\n if (date.timestamp < firstSelectedRangeDate.timestamp) {\n rangeDateTemp.value = [date, firstSelectedRangeDate]\n } else {\n rangeDateTemp.value = [firstSelectedRangeDate, date]\n }\n }\n\n function handleDateSingleSelect(date: Dater) {\n // 类型匹配则触发数据更新\n\n if (panelTypeMatchDateType.value) {\n emit('select:date', date)\n } else {\n updatePanelDate(date)\n switchNextPanel()\n }\n }\n\n /** 选择日期 */\n function handleDateSelect(date: Dater) {\n const { range } = props\n if (range) {\n handleDateRangeSelect(date)\n } else {\n handleDateSingleSelect(date)\n }\n }\n\n return { handleDateSelect, handleDateRangeHover, resetRangeDateTemp, rangeDate }\n}\n"],"mappings":";;AAmBA,SAAgB,cAAc,SAAmD;CAC/E,MAAM,EAAE,OAAO,WAAW,MAAM,oBAAoB;;CAGpD,MAAM,gBAA6B;EAAC;EAAQ;EAAS;CAAK;CAE1D,MAAM,qBAAqB;EAAE,MAAM;EAAQ,OAAO;EAAS,MAAM;CAAM;;;;CAKvE,MAAM,gBAAgB,WAA2B;CACjD,IAAI,yBAA4C,KAAA;CAEhD,MAAM,YAAY,eAAe;EAC/B,OAAO,cAAc,SAAS,MAAM;CACtC,CAAC;CAED,SAAS,qBAAqB;EAC5B,cAAc,QAAQ,KAAA;EACtB,yBAAyB,KAAA;CAC3B;;CAGA,MAAM,yBAAyB,eAAe;EAC5C,MAAM,EAAE,SAAS;EACjB,OAAO,mBAAmB,UAAW,UAAU;CACjD,CAAC;;CAGD,SAAS,kBAAkB;EACzB,MAAM,QAAQ,cAAc,QAAQ,UAAU,KAAK;EACnD,IAAI,UAAU,IAAI;EAClB,UAAU,QAAQ,cAAc,QAAQ;CAC1C;;CAGA,SAAS,sBAAsB,MAAa;EAC1C,IAAI,uBAAuB,OAEzB,IAAI,CAAC,wBAAwB;GAC3B,yBAAyB;GACzB,cAAc,QAAQ,CAAC,MAAM,IAAI;EACnC,OAEK;GACH,IAAI,KAAK,YAAY,uBAAuB,WAC1C,cAAc,QAAQ,CAAC,MAAM,sBAAsB;QAEnD,cAAc,QAAQ,CAAC,wBAAwB,IAAI;GAErD,KAAK,qBAAqB,cAAc,KAAK;GAG7C,mBAAmB;EACrB;OACK;GACL,gBAAgB,IAAI;GACpB,gBAAgB;EAClB;CACF;;CAGA,SAAS,qBAAqB,MAAa;EACzC,IAAI,CAAC,uBAAuB,SAAS,CAAC,wBACpC;EAEF,IAAI,KAAK,YAAY,uBAAuB,WAC1C,cAAc,QAAQ,CAAC,MAAM,sBAAsB;OAEnD,cAAc,QAAQ,CAAC,wBAAwB,IAAI;CAEvD;CAEA,SAAS,uBAAuB,MAAa;EAG3C,IAAI,uBAAuB,OACzB,KAAK,eAAe,IAAI;OACnB;GACL,gBAAgB,IAAI;GACpB,gBAAgB;EAClB;CACF;;CAGA,SAAS,iBAAiB,MAAa;EACrC,MAAM,EAAE,UAAU;EAClB,IAAI,OACF,sBAAsB,IAAI;OAE1B,uBAAuB,IAAI;CAE/B;CAEA,OAAO;EAAE;EAAkB;EAAsB;EAAoB;CAAU;AACjF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-panel-date.js","names":[],"sources":["../../../src/components/date-panel/use-panel-date.ts"],"sourcesContent":["import { date, type Dater } from '@cat-kit/core'\nimport { computed, type ComputedRef, shallowRef } from 'vue'\n\nimport type { DatePanelProps } from '../../types'\n\ninterface PanelDateOptions {\n props: DatePanelProps\n}\n\ninterface UsePanelDateReturned {\n panelDate: ComputedRef<Dater>\n updatePanelDate: (date: Dater) => void\n toPrevYear: () => void\n toNextYear: () => void\n toPrevMonth: () => void\n toNextMonth: () => void\n toPrevTenYears: () => void\n toNextTenYears: () => void\n}\n\nexport function usePanelDate(options: PanelDateOptions): UsePanelDateReturned {\n const { props } = options\n\n /** 当前面板日期 */\n const panelDate = shallowRef<Dater>(\n date((props.date || props.rangeDate?.[0])?.timestamp ?? new Date())\n )\n\n function updatePanelDate(date: Dater) {\n panelDate.value = date\n }\n\n function toPrevYear() {\n updatePanelDate(panelDate.value.calc(-1, 'years'))\n }\n\n function toNextYear() {\n updatePanelDate(panelDate.value.calc(1, 'years'))\n }\n\n function toPrevMonth() {\n updatePanelDate(panelDate.value.calc(-1, 'months'))\n }\n\n function toNextMonth() {\n updatePanelDate(panelDate.value.calc(1, 'months'))\n }\n\n function toPrevTenYears() {\n updatePanelDate(panelDate.value.calc(-10, 'years'))\n }\n\n function toNextTenYears() {\n updatePanelDate(panelDate.value.calc(10, 'years'))\n }\n\n return {\n panelDate: computed(() => panelDate.value),\n updatePanelDate,\n\n toPrevYear,\n toNextYear,\n toPrevMonth,\n toNextMonth,\n toPrevTenYears,\n toNextTenYears\n }\n}\n"],"mappings":";;;AAoBA,SAAgB,aAAa,SAAiD;CAC5E,MAAM,EAAE,UAAU;;CAGlB,MAAM,YAAY,WAChB,MAAM,MAAM,QAAQ,MAAM,YAAY,KAAK,6BAAa,IAAI,
|
|
1
|
+
{"version":3,"file":"use-panel-date.js","names":[],"sources":["../../../src/components/date-panel/use-panel-date.ts"],"sourcesContent":["import { date, type Dater } from '@cat-kit/core'\nimport { computed, type ComputedRef, shallowRef } from 'vue'\n\nimport type { DatePanelProps } from '../../types'\n\ninterface PanelDateOptions {\n props: DatePanelProps\n}\n\ninterface UsePanelDateReturned {\n panelDate: ComputedRef<Dater>\n updatePanelDate: (date: Dater) => void\n toPrevYear: () => void\n toNextYear: () => void\n toPrevMonth: () => void\n toNextMonth: () => void\n toPrevTenYears: () => void\n toNextTenYears: () => void\n}\n\nexport function usePanelDate(options: PanelDateOptions): UsePanelDateReturned {\n const { props } = options\n\n /** 当前面板日期 */\n const panelDate = shallowRef<Dater>(\n date((props.date || props.rangeDate?.[0])?.timestamp ?? new Date())\n )\n\n function updatePanelDate(date: Dater) {\n panelDate.value = date\n }\n\n function toPrevYear() {\n updatePanelDate(panelDate.value.calc(-1, 'years'))\n }\n\n function toNextYear() {\n updatePanelDate(panelDate.value.calc(1, 'years'))\n }\n\n function toPrevMonth() {\n updatePanelDate(panelDate.value.calc(-1, 'months'))\n }\n\n function toNextMonth() {\n updatePanelDate(panelDate.value.calc(1, 'months'))\n }\n\n function toPrevTenYears() {\n updatePanelDate(panelDate.value.calc(-10, 'years'))\n }\n\n function toNextTenYears() {\n updatePanelDate(panelDate.value.calc(10, 'years'))\n }\n\n return {\n panelDate: computed(() => panelDate.value),\n updatePanelDate,\n\n toPrevYear,\n toNextYear,\n toPrevMonth,\n toNextMonth,\n toPrevTenYears,\n toNextTenYears\n }\n}\n"],"mappings":";;;AAoBA,SAAgB,aAAa,SAAiD;CAC5E,MAAM,EAAE,UAAU;;CAGlB,MAAM,YAAY,WAChB,MAAM,MAAM,QAAQ,MAAM,YAAY,KAAK,6BAAa,IAAI,KAAK,CAAC,CACpE;CAEA,SAAS,gBAAgB,MAAa;EACpC,UAAU,QAAQ;CACpB;CAEA,SAAS,aAAa;EACpB,gBAAgB,UAAU,MAAM,KAAK,IAAI,OAAO,CAAC;CACnD;CAEA,SAAS,aAAa;EACpB,gBAAgB,UAAU,MAAM,KAAK,GAAG,OAAO,CAAC;CAClD;CAEA,SAAS,cAAc;EACrB,gBAAgB,UAAU,MAAM,KAAK,IAAI,QAAQ,CAAC;CACpD;CAEA,SAAS,cAAc;EACrB,gBAAgB,UAAU,MAAM,KAAK,GAAG,QAAQ,CAAC;CACnD;CAEA,SAAS,iBAAiB;EACxB,gBAAgB,UAAU,MAAM,KAAK,KAAK,OAAO,CAAC;CACpD;CAEA,SAAS,iBAAiB;EACxB,gBAAgB,UAAU,MAAM,KAAK,IAAI,OAAO,CAAC;CACnD;CAEA,OAAO;EACL,WAAW,eAAe,UAAU,KAAK;EACzC;EAEA;EACA;EACA;EACA;EACA;EACA;CACF;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-panel.js","names":[],"sources":["../../../src/components/date-panel/use-panel.ts"],"sourcesContent":["import type { Dater } from '@cat-kit/core'\nimport { bem, type BEM } from '@veltra/utils'\nimport { provide, shallowRef, watch, type ShallowRef, type ComputedRef } from 'vue'\n\nimport type { DatePanelEmits, DatePanelProps, PanelType } from '../../types'\nimport { DatePanelDIKey } from './di'\nimport { useDateSelect } from './use-date-select'\nimport { usePanelDate } from './use-panel-date'\n\ninterface PanelOptions {\n props: DatePanelProps\n emit: DatePanelEmits\n}\n\ninterface UsePanelReturned {\n cls: BEM<'date-panel', 'u-'>\n panelType: ShallowRef<PanelType>\n panelDate: ComputedRef<Dater>\n}\n\nexport function usePanel(options: PanelOptions): UsePanelReturned {\n const { props, emit } = options\n\n /** 组件类 */\n const cls = bem('date-panel')\n\n /** 当前面板类型 */\n const panelType = shallowRef<PanelType>('day')\n\n watch(\n () => props.type,\n (type) => {\n if (type === 'date') {\n panelType.value = 'day'\n } else if (type === 'month') {\n panelType.value = 'month'\n } else if (type === 'year') {\n panelType.value = 'year'\n }\n },\n { immediate: true }\n )\n\n const { panelDate, updatePanelDate, ...panelDateRest } = usePanelDate({ props })\n\n const { handleDateSelect, handleDateRangeHover, rangeDate } = useDateSelect({\n props,\n emit,\n panelType,\n updatePanelDate\n })\n\n provide(DatePanelDIKey, {\n cls,\n\n panelProps: props,\n panelEmit: emit,\n\n panelType,\n panelDate,\n\n rangeDate,\n\n ...panelDateRest,\n\n handleDateSelect,\n handleDateRangeHover\n })\n\n return { cls, panelType, panelDate }\n}\n"],"mappings":";;;;;;AAoBA,SAAgB,SAAS,SAAyC;CAChE,MAAM,EAAE,OAAO,SAAS;;CAGxB,MAAM,MAAM,IAAI,
|
|
1
|
+
{"version":3,"file":"use-panel.js","names":[],"sources":["../../../src/components/date-panel/use-panel.ts"],"sourcesContent":["import type { Dater } from '@cat-kit/core'\nimport { bem, type BEM } from '@veltra/utils'\nimport { provide, shallowRef, watch, type ShallowRef, type ComputedRef } from 'vue'\n\nimport type { DatePanelEmits, DatePanelProps, PanelType } from '../../types'\nimport { DatePanelDIKey } from './di'\nimport { useDateSelect } from './use-date-select'\nimport { usePanelDate } from './use-panel-date'\n\ninterface PanelOptions {\n props: DatePanelProps\n emit: DatePanelEmits\n}\n\ninterface UsePanelReturned {\n cls: BEM<'date-panel', 'u-'>\n panelType: ShallowRef<PanelType>\n panelDate: ComputedRef<Dater>\n}\n\nexport function usePanel(options: PanelOptions): UsePanelReturned {\n const { props, emit } = options\n\n /** 组件类 */\n const cls = bem('date-panel')\n\n /** 当前面板类型 */\n const panelType = shallowRef<PanelType>('day')\n\n watch(\n () => props.type,\n (type) => {\n if (type === 'date') {\n panelType.value = 'day'\n } else if (type === 'month') {\n panelType.value = 'month'\n } else if (type === 'year') {\n panelType.value = 'year'\n }\n },\n { immediate: true }\n )\n\n const { panelDate, updatePanelDate, ...panelDateRest } = usePanelDate({ props })\n\n const { handleDateSelect, handleDateRangeHover, rangeDate } = useDateSelect({\n props,\n emit,\n panelType,\n updatePanelDate\n })\n\n provide(DatePanelDIKey, {\n cls,\n\n panelProps: props,\n panelEmit: emit,\n\n panelType,\n panelDate,\n\n rangeDate,\n\n ...panelDateRest,\n\n handleDateSelect,\n handleDateRangeHover\n })\n\n return { cls, panelType, panelDate }\n}\n"],"mappings":";;;;;;AAoBA,SAAgB,SAAS,SAAyC;CAChE,MAAM,EAAE,OAAO,SAAS;;CAGxB,MAAM,MAAM,IAAI,YAAY;;CAG5B,MAAM,YAAY,WAAsB,KAAK;CAE7C,YACQ,MAAM,OACX,SAAS;EACR,IAAI,SAAS,QACX,UAAU,QAAQ;OACb,IAAI,SAAS,SAClB,UAAU,QAAQ;OACb,IAAI,SAAS,QAClB,UAAU,QAAQ;CAEtB,GACA,EAAE,WAAW,KAAK,CACpB;CAEA,MAAM,EAAE,WAAW,iBAAiB,GAAG,kBAAkB,aAAa,EAAE,MAAM,CAAC;CAE/E,MAAM,EAAE,kBAAkB,sBAAsB,cAAc,cAAc;EAC1E;EACA;EACA;EACA;CACF,CAAC;CAED,QAAQ,gBAAgB;EACtB;EAEA,YAAY;EACZ,WAAW;EAEX;EACA;EAEA;EAEA,GAAG;EAEH;EACA;CACF,CAAC;CAED,OAAO;EAAE;EAAK;EAAW;CAAU;AACrC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date-picker.js","names":[],"sources":["../../../src/components/date-picker/date-picker.vue"],"sourcesContent":["<template>\n <u-dropdown\n :class=\"className\"\n trigger=\"click\"\n width=\"auto\"\n ref=\"dropdownRef\"\n @update:visible=\"\"\n :disabled=\"disabled\"\n v-if=\"!readonly\"\n >\n <template #trigger>\n <u-input\n :size=\"size\"\n native-readonly\n :clearable=\"clearable\"\n :placeholder=\"placeholder\"\n :model-value=\"displayedValue\"\n :disabled=\"disabled\"\n @clear=\"handleClear\"\n >\n <template #suffix>\n <u-icon :class=\"cls.e('icon')\"><Calendar /></u-icon>\n </template>\n </u-input>\n </template>\n\n <template #content>\n <UDatePanel :size :type :disabled-date :date=\"currentDate\" @select:date=\"handleSelectDate\" />\n </template>\n </u-dropdown>\n\n <template v-else>\n {{ displayedValue || FORM_EMPTY_CONTENT }}\n </template>\n</template>\n\n<script lang=\"ts\" setup>\nimport { date, type Dater } from '@cat-kit/core'\nimport { useFormFallbackProps, useUserAction } from '@veltra/compositions'\nimport { Calendar } from '@veltra/icons/normal'\nimport { bem, FORM_EMPTY_CONTENT } from '@veltra/utils'\nimport { injectFormContext } from '@veltra/utils'\nimport { computed, shallowRef, watch } from 'vue'\n\nimport type { DatePickerEmits, DatePickerProps } from '../../types'\nimport type { DropdownExposed } from '../../types'\nimport { UDatePanel } from '../date-panel'\nimport { UDropdown } from '../dropdown'\nimport { UIcon } from '../icon'\nimport { UInput } from '../input'\n\ndefineOptions({ name: 'DatePicker' })\n\nconst props = withDefaults(defineProps<DatePickerProps>(), {\n placeholder: '选择日期',\n type: 'date',\n disabled: undefined,\n readonly: undefined,\n clearable: true\n})\n\nconst emit = defineEmits<DatePickerEmits>()\n\nconst cls = bem('date-picker')\n\nconst { formProps } = injectFormContext()\n\nconst { size, disabled, readonly } = useFormFallbackProps([formProps ?? {}, props], {\n size: 'default',\n disabled: false,\n readonly: false\n})\n\nconst className = computed(() => {\n return [cls.b, cls.m(size.value)]\n})\n\nconst dropdownRef = shallowRef<DropdownExposed>()\n\nconst formatStr = computed(() => {\n const { format, type } = props\n if (format) return format\n if (type === 'date') return 'yyyy-MM-dd'\n if (type === 'month') return 'yyyy-MM'\n if (type === 'year') return 'yyyy'\n return 'yyyy-MM-dd'\n})\n\nconst currentDate = shallowRef<Dater>()\n\nconst { userAction, isUserActive } = useUserAction()\n\nwatch(\n () => props.modelValue,\n (modelValue) => {\n if (isUserActive()) return\n currentDate.value = modelValue ? date(modelValue) : undefined\n },\n { immediate: true }\n)\n\nconst displayedValue = computed(() => {\n return currentDate.value?.format(formatStr.value) ?? ''\n})\n\nconst commitSelectedDate = userAction((date: Dater) => {\n currentDate.value = date\n emit('update:modelValue', date.format(formatStr.value))\n})\n\nasync function handleSelectDate(date: Dater) {\n await commitSelectedDate(date)\n dropdownRef.value?.close()\n}\n\nfunction handleClear() {\n currentDate.value = undefined\n emit('update:modelValue', undefined)\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqDA,MAAM,QAAQ;EAQd,MAAM,OAAO;EAEb,MAAM,MAAM,IAAI,
|
|
1
|
+
{"version":3,"file":"date-picker.js","names":[],"sources":["../../../src/components/date-picker/date-picker.vue"],"sourcesContent":["<template>\n <u-dropdown\n :class=\"className\"\n trigger=\"click\"\n width=\"auto\"\n ref=\"dropdownRef\"\n @update:visible=\"\"\n :disabled=\"disabled\"\n v-if=\"!readonly\"\n >\n <template #trigger>\n <u-input\n :size=\"size\"\n native-readonly\n :clearable=\"clearable\"\n :placeholder=\"placeholder\"\n :model-value=\"displayedValue\"\n :disabled=\"disabled\"\n @clear=\"handleClear\"\n >\n <template #suffix>\n <u-icon :class=\"cls.e('icon')\"><Calendar /></u-icon>\n </template>\n </u-input>\n </template>\n\n <template #content>\n <UDatePanel :size :type :disabled-date :date=\"currentDate\" @select:date=\"handleSelectDate\" />\n </template>\n </u-dropdown>\n\n <template v-else>\n {{ displayedValue || FORM_EMPTY_CONTENT }}\n </template>\n</template>\n\n<script lang=\"ts\" setup>\nimport { date, type Dater } from '@cat-kit/core'\nimport { useFormFallbackProps, useUserAction } from '@veltra/compositions'\nimport { Calendar } from '@veltra/icons/normal'\nimport { bem, FORM_EMPTY_CONTENT } from '@veltra/utils'\nimport { injectFormContext } from '@veltra/utils'\nimport { computed, shallowRef, watch } from 'vue'\n\nimport type { DatePickerEmits, DatePickerProps } from '../../types'\nimport type { DropdownExposed } from '../../types'\nimport { UDatePanel } from '../date-panel'\nimport { UDropdown } from '../dropdown'\nimport { UIcon } from '../icon'\nimport { UInput } from '../input'\n\ndefineOptions({ name: 'DatePicker' })\n\nconst props = withDefaults(defineProps<DatePickerProps>(), {\n placeholder: '选择日期',\n type: 'date',\n disabled: undefined,\n readonly: undefined,\n clearable: true\n})\n\nconst emit = defineEmits<DatePickerEmits>()\n\nconst cls = bem('date-picker')\n\nconst { formProps } = injectFormContext()\n\nconst { size, disabled, readonly } = useFormFallbackProps([formProps ?? {}, props], {\n size: 'default',\n disabled: false,\n readonly: false\n})\n\nconst className = computed(() => {\n return [cls.b, cls.m(size.value)]\n})\n\nconst dropdownRef = shallowRef<DropdownExposed>()\n\nconst formatStr = computed(() => {\n const { format, type } = props\n if (format) return format\n if (type === 'date') return 'yyyy-MM-dd'\n if (type === 'month') return 'yyyy-MM'\n if (type === 'year') return 'yyyy'\n return 'yyyy-MM-dd'\n})\n\nconst currentDate = shallowRef<Dater>()\n\nconst { userAction, isUserActive } = useUserAction()\n\nwatch(\n () => props.modelValue,\n (modelValue) => {\n if (isUserActive()) return\n currentDate.value = modelValue ? date(modelValue) : undefined\n },\n { immediate: true }\n)\n\nconst displayedValue = computed(() => {\n return currentDate.value?.format(formatStr.value) ?? ''\n})\n\nconst commitSelectedDate = userAction((date: Dater) => {\n currentDate.value = date\n emit('update:modelValue', date.format(formatStr.value))\n})\n\nasync function handleSelectDate(date: Dater) {\n await commitSelectedDate(date)\n dropdownRef.value?.close()\n}\n\nfunction handleClear() {\n currentDate.value = undefined\n emit('update:modelValue', undefined)\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqDA,MAAM,QAAQ;EAQd,MAAM,OAAO;EAEb,MAAM,MAAM,IAAI,aAAa;EAE7B,MAAM,EAAE,cAAc,kBAAkB;EAExC,MAAM,EAAE,MAAM,UAAU,aAAa,qBAAqB,CAAC,aAAa,CAAC,GAAG,KAAK,GAAG;GAClF,MAAM;GACN,UAAU;GACV,UAAU;EACZ,CAAC;EAED,MAAM,YAAY,eAAe;GAC/B,OAAO,CAAC,IAAI,GAAG,IAAI,EAAE,KAAK,KAAK,CAAC;EAClC,CAAC;EAED,MAAM,cAAc,WAA4B;EAEhD,MAAM,YAAY,eAAe;GAC/B,MAAM,EAAE,QAAQ,SAAS;GACzB,IAAI,QAAQ,OAAO;GACnB,IAAI,SAAS,QAAQ,OAAO;GAC5B,IAAI,SAAS,SAAS,OAAO;GAC7B,IAAI,SAAS,QAAQ,OAAO;GAC5B,OAAO;EACT,CAAC;EAED,MAAM,cAAc,WAAkB;EAEtC,MAAM,EAAE,YAAY,iBAAiB,cAAc;EAEnD,YACQ,MAAM,aACX,eAAe;GACd,IAAI,aAAa,GAAG;GACpB,YAAY,QAAQ,aAAa,KAAK,UAAU,IAAI,KAAA;EACtD,GACA,EAAE,WAAW,KAAK,CACpB;EAEA,MAAM,iBAAiB,eAAe;GACpC,OAAO,YAAY,OAAO,OAAO,UAAU,KAAK,KAAK;EACvD,CAAC;EAED,MAAM,qBAAqB,YAAY,SAAgB;GACrD,YAAY,QAAQ;GACpB,KAAK,qBAAqB,KAAK,OAAO,UAAU,KAAK,CAAC;EACxD,CAAC;EAED,eAAe,iBAAiB,MAAa;GAC3C,MAAM,mBAAmB,IAAI;GAC7B,YAAY,OAAO,MAAM;EAC3B;EAEA,SAAS,cAAc;GACrB,YAAY,QAAQ,KAAA;GACpB,KAAK,qBAAqB,KAAA,CAAS;EACrC;;WA9GW,MAAA,QAAA,KAAA,UAAA,GAPT,YA4Ba,MAAA,WAAA,GAAA;;IA3BV,OAAK,eAAE,UAAA,KAAS;IACjB,SAAQ;IACR,OAAM;aACF;IAAJ,KAAI;IACH,oBAAc,OAAA,OAAA,OAAA,WAAf,CAAA;IACC,UAAU,MAAA,QAAA;;IAGA,SAAO,cAaN,CAZV,YAYU,MAAA,aAAA,GAAA;KAXP,MAAM,MAAA,IAAA;KACP,mBAAA;KACC,WAAW,QAAA;KACX,aAAa,QAAA;KACb,eAAa,eAAA;KACb,UAAU,MAAA,QAAA;KACV,SAAO;;KAEG,QAAM,cACqC,CAApD,YAAoD,MAAA,WAAA,GAAA,EAA3C,OAAK,eAAE,MAAA,GAAA,EAAI,EAAC,MAAA,CAAA,EAAA,GAAA;6BAAsB,CAAZ,YAAY,MAAA,QAAA,CAAA,CAAA,CAAA;;;;;;;;;;;IAKtC,SAAO,cAC6E,CAA7F,YAA6F,MAAA,WAAA,GAAA;KAAhF,MAAA,MAAA,IAAA;KAAM,MAAA,QAAA;KAAM,iBAAA,QAAA;KAAe,MAAM,YAAA;KAAc,iBAAa;;;;;;;;iDAI7E,mBAEW,UAAA,EAAA,KAAA,EAAA,GAAA,CAAA,gBAAA,gBADN,eAAA,SAAkB,MAAA,kBAAA,CAAkB,GAAA,CAAA,CAAA,GAAA,EAAA"}
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
import { DatePickerProps } from "../../types/date-picker.js";
|
|
2
|
-
import * as _$vue from "vue";
|
|
3
|
-
|
|
4
2
|
//#region src/components/date-picker/date-picker.vue.d.ts
|
|
5
|
-
declare const __VLS_export:
|
|
3
|
+
declare const __VLS_export: import("vue").DefineComponent<DatePickerProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
|
|
6
4
|
"update:modelValue": (value?: string | number | Date | undefined) => any;
|
|
7
|
-
}, string,
|
|
5
|
+
}, string, import("vue").PublicProps, Readonly<DatePickerProps> & Readonly<{
|
|
8
6
|
"onUpdate:modelValue"?: ((value?: string | number | Date | undefined) => any) | undefined;
|
|
9
7
|
}>, {
|
|
10
8
|
type: "date" | "month" | "year";
|
|
@@ -12,7 +10,7 @@ declare const __VLS_export: _$vue.DefineComponent<DatePickerProps, {}, {}, {}, {
|
|
|
12
10
|
readonly: boolean;
|
|
13
11
|
placeholder: string;
|
|
14
12
|
clearable: boolean;
|
|
15
|
-
}, {}, {}, {}, string,
|
|
13
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
16
14
|
declare const _default: typeof __VLS_export;
|
|
17
15
|
//#endregion
|
|
18
16
|
export { _default };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date-range-picker.js","names":[],"sources":["../../../src/components/date-range-picker/date-range-picker.vue"],"sourcesContent":["<template>\n <u-dropdown\n :class=\"className\"\n trigger=\"click\"\n :content-class=\"[cls.e('panel'), cls.em('panel', size)]\"\n width=\"auto\"\n ref=\"dropdownRef\"\n :disabled=\"disabled\"\n @mouseenter.native=\"hovered = true\"\n @mouseleave.native=\"hovered = false\"\n v-if=\"!readonly\"\n >\n <template #trigger>\n <input\n type=\"text\"\n :class=\"cls.e('input')\"\n :value=\"displayedOfStart\"\n :placeholder=\"placeholder[0]\"\n readonly\n />\n <span :class=\"cls.e('separator')\">至</span>\n <input\n type=\"text\"\n :class=\"cls.e('input')\"\n :value=\"displayedOfEnd\"\n :placeholder=\"placeholder[1]\"\n readonly\n />\n\n <Transition name=\"zoom-in\" mode=\"out-in\">\n <UIcon\n v-if=\"clearable && modelValue && hovered && !disabled\"\n :class=\"[cls.e('icon'), cls.e('clear')]\"\n title=\"清除\"\n @click.stop=\"handleClear\"\n >\n <Close />\n </UIcon>\n\n <u-icon :class=\"cls.e('icon')\" v-else><Calendar /></u-icon>\n </Transition>\n </template>\n\n <template #content>\n <UDatePanel\n range\n :type\n :disabled-date\n :size\n :range-date=\"currentRangeDate\"\n @select:range-date=\"handleSelect\"\n />\n </template>\n </u-dropdown>\n\n <template v-else>\n {{ displayedOfStart || FORM_EMPTY_CONTENT }} 至\n {{ displayedOfEnd || FORM_EMPTY_CONTENT }}\n </template>\n</template>\n\n<script lang=\"ts\" setup>\nimport { date, type Dater } from '@cat-kit/core'\nimport { useFormFallbackProps, useUserAction } from '@veltra/compositions'\nimport { Calendar, Close } from '@veltra/icons/normal'\nimport { bem, FORM_EMPTY_CONTENT } from '@veltra/utils'\nimport { injectFormContext } from '@veltra/utils'\nimport { computed, shallowRef, watch } from 'vue'\n\nimport type { DateRangePickerEmits, DateRangePickerProps, DropdownExposed } from '../../types'\nimport { UDatePanel } from '../date-panel'\nimport { UDropdown } from '../dropdown'\nimport { UIcon } from '../icon'\n\ndefineOptions({ name: 'DateRangePicker' })\n\nconst props = withDefaults(defineProps<DateRangePickerProps>(), {\n placeholder: () => ['起始日期', '结束日期'],\n type: 'date',\n disabled: undefined,\n readonly: undefined,\n clearable: true\n})\n\nconst emit = defineEmits<DateRangePickerEmits>()\n\nconst cls = bem('date-range-picker')\n\nconst className = computed(() => {\n return [cls.b, cls.m(size.value), bem.is('disabled', disabled.value)]\n})\n\nconst { formProps } = injectFormContext()\n\nconst { size, disabled, readonly } = useFormFallbackProps([formProps ?? {}, props], {\n size: 'default',\n disabled: false,\n readonly: false\n})\n\nconst dropdownRef = shallowRef<DropdownExposed>()\n\nconst { userAction, isUserActive } = useUserAction()\n\nconst currentRangeDate = shallowRef<[Dater, Dater]>()\n\nconst displayedOfStart = computed(() => {\n return props.modelValue?.[0]\n})\n\nconst displayedOfEnd = computed(() => {\n return props.modelValue?.[1]\n})\n\nconst formatStr = computed(() => {\n const { format, type } = props\n if (format) return format\n if (type === 'date') return 'yyyy-MM-dd'\n if (type === 'month') return 'yyyy-MM'\n if (type === 'year') return 'yyyy'\n return 'yyyy-MM-dd'\n})\n\nwatch(\n () => props.modelValue,\n (val) => {\n if (isUserActive()) return\n if (val?.length === 2) {\n currentRangeDate.value = [date(val[0]), date(val[1])]\n }\n },\n { immediate: true }\n)\n\nconst commitSelectedRange = userAction((rangeDate: [Dater, Dater] | undefined) => {\n currentRangeDate.value = rangeDate\n emit('update:modelValue', rangeDate?.map((d) => d.format(formatStr.value)) as [string, string])\n})\n\nasync function handleSelect(rangeDate: [Dater, Dater] | undefined) {\n await commitSelectedRange(rangeDate)\n dropdownRef.value?.close()\n}\n\nconst hovered = shallowRef(false)\n\nfunction handleClear() {\n currentRangeDate.value = undefined\n emit('update:modelValue', undefined)\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4EA,MAAM,QAAQ;EAQd,MAAM,OAAO;EAEb,MAAM,MAAM,IAAI,
|
|
1
|
+
{"version":3,"file":"date-range-picker.js","names":[],"sources":["../../../src/components/date-range-picker/date-range-picker.vue"],"sourcesContent":["<template>\n <u-dropdown\n :class=\"className\"\n trigger=\"click\"\n :content-class=\"[cls.e('panel'), cls.em('panel', size)]\"\n width=\"auto\"\n ref=\"dropdownRef\"\n :disabled=\"disabled\"\n @mouseenter.native=\"hovered = true\"\n @mouseleave.native=\"hovered = false\"\n v-if=\"!readonly\"\n >\n <template #trigger>\n <input\n type=\"text\"\n :class=\"cls.e('input')\"\n :value=\"displayedOfStart\"\n :placeholder=\"placeholder[0]\"\n readonly\n />\n <span :class=\"cls.e('separator')\">至</span>\n <input\n type=\"text\"\n :class=\"cls.e('input')\"\n :value=\"displayedOfEnd\"\n :placeholder=\"placeholder[1]\"\n readonly\n />\n\n <Transition name=\"zoom-in\" mode=\"out-in\">\n <UIcon\n v-if=\"clearable && modelValue && hovered && !disabled\"\n :class=\"[cls.e('icon'), cls.e('clear')]\"\n title=\"清除\"\n @click.stop=\"handleClear\"\n >\n <Close />\n </UIcon>\n\n <u-icon :class=\"cls.e('icon')\" v-else><Calendar /></u-icon>\n </Transition>\n </template>\n\n <template #content>\n <UDatePanel\n range\n :type\n :disabled-date\n :size\n :range-date=\"currentRangeDate\"\n @select:range-date=\"handleSelect\"\n />\n </template>\n </u-dropdown>\n\n <template v-else>\n {{ displayedOfStart || FORM_EMPTY_CONTENT }} 至\n {{ displayedOfEnd || FORM_EMPTY_CONTENT }}\n </template>\n</template>\n\n<script lang=\"ts\" setup>\nimport { date, type Dater } from '@cat-kit/core'\nimport { useFormFallbackProps, useUserAction } from '@veltra/compositions'\nimport { Calendar, Close } from '@veltra/icons/normal'\nimport { bem, FORM_EMPTY_CONTENT } from '@veltra/utils'\nimport { injectFormContext } from '@veltra/utils'\nimport { computed, shallowRef, watch } from 'vue'\n\nimport type { DateRangePickerEmits, DateRangePickerProps, DropdownExposed } from '../../types'\nimport { UDatePanel } from '../date-panel'\nimport { UDropdown } from '../dropdown'\nimport { UIcon } from '../icon'\n\ndefineOptions({ name: 'DateRangePicker' })\n\nconst props = withDefaults(defineProps<DateRangePickerProps>(), {\n placeholder: () => ['起始日期', '结束日期'],\n type: 'date',\n disabled: undefined,\n readonly: undefined,\n clearable: true\n})\n\nconst emit = defineEmits<DateRangePickerEmits>()\n\nconst cls = bem('date-range-picker')\n\nconst className = computed(() => {\n return [cls.b, cls.m(size.value), bem.is('disabled', disabled.value)]\n})\n\nconst { formProps } = injectFormContext()\n\nconst { size, disabled, readonly } = useFormFallbackProps([formProps ?? {}, props], {\n size: 'default',\n disabled: false,\n readonly: false\n})\n\nconst dropdownRef = shallowRef<DropdownExposed>()\n\nconst { userAction, isUserActive } = useUserAction()\n\nconst currentRangeDate = shallowRef<[Dater, Dater]>()\n\nconst displayedOfStart = computed(() => {\n return props.modelValue?.[0]\n})\n\nconst displayedOfEnd = computed(() => {\n return props.modelValue?.[1]\n})\n\nconst formatStr = computed(() => {\n const { format, type } = props\n if (format) return format\n if (type === 'date') return 'yyyy-MM-dd'\n if (type === 'month') return 'yyyy-MM'\n if (type === 'year') return 'yyyy'\n return 'yyyy-MM-dd'\n})\n\nwatch(\n () => props.modelValue,\n (val) => {\n if (isUserActive()) return\n if (val?.length === 2) {\n currentRangeDate.value = [date(val[0]), date(val[1])]\n }\n },\n { immediate: true }\n)\n\nconst commitSelectedRange = userAction((rangeDate: [Dater, Dater] | undefined) => {\n currentRangeDate.value = rangeDate\n emit('update:modelValue', rangeDate?.map((d) => d.format(formatStr.value)) as [string, string])\n})\n\nasync function handleSelect(rangeDate: [Dater, Dater] | undefined) {\n await commitSelectedRange(rangeDate)\n dropdownRef.value?.close()\n}\n\nconst hovered = shallowRef(false)\n\nfunction handleClear() {\n currentRangeDate.value = undefined\n emit('update:modelValue', undefined)\n}\n</script>\n"],"mappings":"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"}
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
import { DateRangePickerProps } from "../../types/date-range-picker.js";
|
|
2
|
-
import * as _$vue from "vue";
|
|
3
|
-
|
|
4
2
|
//#region src/components/date-range-picker/date-range-picker.vue.d.ts
|
|
5
|
-
declare const __VLS_export:
|
|
3
|
+
declare const __VLS_export: import("vue").DefineComponent<DateRangePickerProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
|
|
6
4
|
"update:modelValue": (value?: [string, string] | undefined) => any;
|
|
7
|
-
}, string,
|
|
5
|
+
}, string, import("vue").PublicProps, Readonly<DateRangePickerProps> & Readonly<{
|
|
8
6
|
"onUpdate:modelValue"?: ((value?: [string, string] | undefined) => any) | undefined;
|
|
9
7
|
}>, {
|
|
10
8
|
type: "date" | "month" | "year";
|
|
@@ -12,7 +10,7 @@ declare const __VLS_export: _$vue.DefineComponent<DateRangePickerProps, {}, {},
|
|
|
12
10
|
readonly: boolean;
|
|
13
11
|
placeholder: [string, string];
|
|
14
12
|
clearable: boolean;
|
|
15
|
-
}, {}, {}, {}, string,
|
|
13
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
16
14
|
declare const _default: typeof __VLS_export;
|
|
17
15
|
//#endregion
|
|
18
16
|
export { _default };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"di.js","names":[],"sources":["../../../src/components/dialog/di.ts"],"sourcesContent":["import type { InjectionKey, ShallowRef } from 'vue'\n\nexport interface DialogContext {\n visible: ShallowRef<boolean>\n}\n\nexport const DialogDIKey: InjectionKey<DialogContext> = Symbol('DialogDIKey')\n"],"mappings":";AAMA,MAAa,cAA2C,OAAO,
|
|
1
|
+
{"version":3,"file":"di.js","names":[],"sources":["../../../src/components/dialog/di.ts"],"sourcesContent":["import type { InjectionKey, ShallowRef } from 'vue'\n\nexport interface DialogContext {\n visible: ShallowRef<boolean>\n}\n\nexport const DialogDIKey: InjectionKey<DialogContext> = Symbol('DialogDIKey')\n"],"mappings":";AAMA,MAAa,cAA2C,OAAO,aAAa"}
|