yuyeon 0.3.4-rc.4 → 0.3.6-beta.0
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/style.css +1 -1
- package/dist/yuyeon.js +3963 -3707
- package/dist/yuyeon.umd.cjs +3 -3
- package/lib/abstract/items.js.map +1 -1
- package/lib/components/alert/YAlert.js +1 -2
- package/lib/components/alert/YAlert.js.map +1 -1
- package/lib/components/alert/index.js.map +1 -1
- package/lib/components/app/YApp.js +2 -2
- package/lib/components/app/YApp.js.map +1 -1
- package/lib/components/app/index.js.map +1 -1
- package/lib/components/badge/YBadge.js +7 -5
- package/lib/components/badge/YBadge.js.map +1 -1
- package/lib/components/badge/YBadge.scss +87 -86
- package/lib/components/badge/index.js.map +1 -1
- package/lib/components/bench/YBench.js +3 -4
- package/lib/components/bench/YBench.js.map +1 -1
- package/lib/components/bench/index.js.map +1 -1
- package/lib/components/button/YButton.js +1 -2
- package/lib/components/button/YButton.js.map +1 -1
- package/lib/components/button/index.js.map +1 -1
- package/lib/components/card/YCard.js.map +1 -1
- package/lib/components/card/YCard.scss +2 -2
- package/lib/components/card/YCardBody.js.map +1 -1
- package/lib/components/card/YCardFooter.js.map +1 -1
- package/lib/components/card/YCardHeader.js.map +1 -1
- package/lib/components/card/index.js.map +1 -1
- package/lib/components/checkbox/YCheckbox.js +1 -2
- package/lib/components/checkbox/YCheckbox.js.map +1 -1
- package/lib/components/checkbox/YInputCheckbox.js +1 -2
- package/lib/components/checkbox/YInputCheckbox.js.map +1 -1
- package/lib/components/checkbox/index.js.map +1 -1
- package/lib/components/chip/YChip.js +1 -2
- package/lib/components/chip/YChip.js.map +1 -1
- package/lib/components/chip/index.js.map +1 -1
- package/lib/components/date-picker/YDateCalendar.js +59 -54
- package/lib/components/date-picker/YDateCalendar.js.map +1 -1
- package/lib/components/date-picker/YDatePicker.js +24 -25
- package/lib/components/date-picker/YDatePicker.js.map +1 -1
- package/lib/components/date-picker/YDatePickerControl.js +19 -20
- package/lib/components/date-picker/YDatePickerControl.js.map +1 -1
- package/lib/components/date-picker/YMonthPicker.js +10 -11
- package/lib/components/date-picker/YMonthPicker.js.map +1 -1
- package/lib/components/date-picker/YYearPicker.js +11 -13
- package/lib/components/date-picker/YYearPicker.js.map +1 -1
- package/lib/components/date-picker/index.js.map +1 -1
- package/lib/components/default-provider/YDefaultProvider.js.map +1 -1
- package/lib/components/default-provider/index.js.map +1 -1
- package/lib/components/dialog/YDialog.js +32 -32
- package/lib/components/dialog/YDialog.js.map +1 -1
- package/lib/components/dialog/index.js.map +1 -1
- package/lib/components/divider/YDivider.js +5 -5
- package/lib/components/divider/YDivider.js.map +1 -1
- package/lib/components/divider/index.js.map +1 -1
- package/lib/components/draggable/YDraggable.js +10 -11
- package/lib/components/draggable/YDraggable.js.map +1 -1
- package/lib/components/draggable/index.js.map +1 -1
- package/lib/components/dropdown/YDropdown.js +16 -17
- package/lib/components/dropdown/YDropdown.js.map +1 -1
- package/lib/components/dropdown/index.js.map +1 -1
- package/lib/components/field-input/YFieldInput.js +39 -39
- package/lib/components/field-input/YFieldInput.js.map +1 -1
- package/lib/components/field-input/index.js.map +1 -1
- package/lib/components/form/YForm.js +12 -14
- package/lib/components/form/YForm.js.map +1 -1
- package/lib/components/form/index.js.map +1 -1
- package/lib/components/hover/YHover.js +9 -8
- package/lib/components/hover/YHover.js.map +1 -1
- package/lib/components/hover/index.js.map +1 -1
- package/lib/components/icon/YIcon.js +2 -4
- package/lib/components/icon/YIcon.js.map +1 -1
- package/lib/components/icon/index.js.map +1 -1
- package/lib/components/icons/YIconCheckbox.js +7 -6
- package/lib/components/icons/YIconCheckbox.js.map +1 -1
- package/lib/components/icons/YIconCheckbox.scss +4 -5
- package/lib/components/icons/YIconClear.js +2 -1
- package/lib/components/icons/YIconClear.js.map +1 -1
- package/lib/components/icons/YIconDropdown.js +2 -1
- package/lib/components/icons/YIconDropdown.js.map +1 -1
- package/lib/components/icons/YIconExpand.js +1 -0
- package/lib/components/icons/YIconExpand.js.map +1 -1
- package/lib/components/icons/YIconPageControl.js +7 -6
- package/lib/components/icons/YIconPageControl.js.map +1 -1
- package/lib/components/icons/YIconSort.js +6 -5
- package/lib/components/icons/YIconSort.js.map +1 -1
- package/lib/components/icons/YIconSort.scss +2 -0
- package/lib/components/icons/index.js.map +1 -1
- package/lib/components/img/YImg.js +38 -33
- package/lib/components/img/YImg.js.map +1 -1
- package/lib/components/img/index.js +1 -1
- package/lib/components/img/index.js.map +1 -1
- package/lib/components/index.js +1 -0
- package/lib/components/index.js.map +1 -1
- package/lib/components/input/YInput.js +1 -2
- package/lib/components/input/YInput.js.map +1 -1
- package/lib/components/input/YInput.scss +9 -8
- package/lib/components/input/index.js.map +1 -1
- package/lib/components/ip-field/YIpv4Field.js +1 -2
- package/lib/components/ip-field/YIpv4Field.js.map +1 -1
- package/lib/components/ip-field/index.js.map +1 -1
- package/lib/components/layer/YLayer.js +38 -25
- package/lib/components/layer/YLayer.js.map +1 -1
- package/lib/components/layer/active-delay.js.map +1 -1
- package/lib/components/layer/active-stack.js.map +1 -1
- package/lib/components/layer/base.js +11 -1
- package/lib/components/layer/base.js.map +1 -1
- package/lib/components/layer/content.js.map +1 -1
- package/lib/components/layer/index.js.map +1 -1
- package/lib/components/layer/scroll-strategies.js.map +1 -1
- package/lib/components/list/YList.js +1 -2
- package/lib/components/list/YList.js.map +1 -1
- package/lib/components/list/YListItem.js +1 -2
- package/lib/components/list/YListItem.js.map +1 -1
- package/lib/components/list/index.js.map +1 -1
- package/lib/components/loading/YSpinnerRing.js.map +1 -1
- package/lib/components/loading/index.js.map +1 -1
- package/lib/components/menu/YMenu.js +22 -25
- package/lib/components/menu/YMenu.js.map +1 -1
- package/lib/components/menu/YMenu.scss +3 -4
- package/lib/components/menu/index.js.map +1 -1
- package/lib/components/navigation/YNavigation.js +1 -2
- package/lib/components/navigation/YNavigation.js.map +1 -1
- package/lib/components/navigation/index.js.map +1 -1
- package/lib/components/pagination/YPagination.js +1 -2
- package/lib/components/pagination/YPagination.js.map +1 -1
- package/lib/components/pagination/index.js.map +1 -1
- package/lib/components/panel/YDividePanel.js +1 -2
- package/lib/components/panel/YDividePanel.js.map +1 -1
- package/lib/components/panel/YDividePanel.scss +44 -43
- package/lib/components/panel/index.js.map +1 -1
- package/lib/components/plate/YPlate.js +1 -2
- package/lib/components/plate/YPlate.js.map +1 -1
- package/lib/components/plate/index.js.map +1 -1
- package/lib/components/progress-bar/YProgressBar.js +1 -2
- package/lib/components/progress-bar/YProgressBar.js.map +1 -1
- package/lib/components/progress-bar/index.js.map +1 -1
- package/lib/components/progress-ring/YProgressRing.js +3 -4
- package/lib/components/progress-ring/YProgressRing.js.map +1 -1
- package/lib/components/progress-ring/index.js.map +1 -1
- package/lib/components/radio/YRadio.js +1 -1
- package/lib/components/radio/YRadio.js.map +1 -1
- package/lib/components/radio/YRadioIcon.js.map +1 -1
- package/lib/components/radio/YRadioIcon.scss +2 -3
- package/lib/components/radio/index.js.map +1 -1
- package/lib/components/select/YSelect.js +41 -42
- package/lib/components/select/YSelect.js.map +1 -1
- package/lib/components/select/index.js.map +1 -1
- package/lib/components/slider/YSlider.js.map +1 -1
- package/lib/components/slider/index.js.map +1 -1
- package/lib/components/slider/slider.js.map +1 -1
- package/lib/components/snackbar/YSnackbar.js +6 -6
- package/lib/components/snackbar/YSnackbar.js.map +1 -1
- package/lib/components/snackbar/index.js.map +1 -1
- package/lib/components/switch/YSwitch.js +1 -2
- package/lib/components/switch/YSwitch.js.map +1 -1
- package/lib/components/switch/index.js.map +1 -1
- package/lib/components/tab/YTab.js +2 -3
- package/lib/components/tab/YTab.js.map +1 -1
- package/lib/components/tab/YTab.scss +1 -1
- package/lib/components/tab/YTabs.js +1 -2
- package/lib/components/tab/YTabs.js.map +1 -1
- package/lib/components/tab/index.js.map +1 -1
- package/lib/components/tab/shared.js.map +1 -1
- package/lib/components/tab/types.js.map +1 -1
- package/lib/components/table/YDataTable.js +1 -2
- package/lib/components/table/YDataTable.js.map +1 -1
- package/lib/components/table/YDataTableBody.js +2 -3
- package/lib/components/table/YDataTableBody.js.map +1 -1
- package/lib/components/table/YDataTableCell.js +1 -2
- package/lib/components/table/YDataTableCell.js.map +1 -1
- package/lib/components/table/YDataTableControl.js +1 -1
- package/lib/components/table/YDataTableControl.js.map +1 -1
- package/lib/components/table/YDataTableControl.scss +17 -17
- package/lib/components/table/YDataTableHead.js +1 -1
- package/lib/components/table/YDataTableHead.js.map +1 -1
- package/lib/components/table/YDataTableLayer.js +1 -2
- package/lib/components/table/YDataTableLayer.js.map +1 -1
- package/lib/components/table/YDataTableLayerRow.js +1 -2
- package/lib/components/table/YDataTableLayerRow.js.map +1 -1
- package/lib/components/table/YDataTableLayerRows.js +3 -4
- package/lib/components/table/YDataTableLayerRows.js.map +1 -1
- package/lib/components/table/YDataTableRow.js +1 -2
- package/lib/components/table/YDataTableRow.js.map +1 -1
- package/lib/components/table/YDataTableServer.js +1 -2
- package/lib/components/table/YDataTableServer.js.map +1 -1
- package/lib/components/table/YTable.js +1 -2
- package/lib/components/table/YTable.js.map +1 -1
- package/lib/components/table/composables/expand.js.map +1 -1
- package/lib/components/table/composables/header.js.map +1 -1
- package/lib/components/table/composables/items.js.map +1 -1
- package/lib/components/table/composables/measure.js +1 -1
- package/lib/components/table/composables/measure.js.map +1 -1
- package/lib/components/table/composables/options.js.map +1 -1
- package/lib/components/table/composables/pagination.js.map +1 -1
- package/lib/components/table/composables/provides.js.map +1 -1
- package/lib/components/table/composables/selection.js.map +1 -1
- package/lib/components/table/composables/sorted-items.js.map +1 -1
- package/lib/components/table/composables/sorting.js.map +1 -1
- package/lib/components/table/index.js.map +1 -1
- package/lib/components/table/types/common.js.map +1 -1
- package/lib/components/table/types/header.js.map +1 -1
- package/lib/components/table/types/index.js.map +1 -1
- package/lib/components/table/types/item.js.map +1 -1
- package/lib/components/table/types/row.js.map +1 -1
- package/lib/components/text-ellipsis/YTextEllipsis.js +1 -2
- package/lib/components/text-ellipsis/YTextEllipsis.js.map +1 -1
- package/lib/components/text-ellipsis/index.js.map +1 -1
- package/lib/components/text-highlighter/YTextHighlighter.js.map +1 -1
- package/lib/components/text-highlighter/index.js.map +1 -1
- package/lib/components/text-interpolation/YTi.js +2 -2
- package/lib/components/text-interpolation/YTi.js.map +1 -1
- package/lib/components/text-interpolation/index.js.map +1 -1
- package/lib/components/textarea/YTextarea.js +1 -2
- package/lib/components/textarea/YTextarea.js.map +1 -1
- package/lib/components/textarea/index.js.map +1 -1
- package/lib/components/toggle-button/YToggleButton.js.map +1 -1
- package/lib/components/toggle-button/index.js.map +1 -1
- package/lib/components/tooltip/YTooltip.js +20 -21
- package/lib/components/tooltip/YTooltip.js.map +1 -1
- package/lib/components/tooltip/index.js.map +1 -1
- package/lib/components/transitions/expand-transition.js.map +1 -1
- package/lib/components/transitions/index.js.map +1 -1
- package/lib/components/tree-view/YTreeView.js +23 -29
- package/lib/components/tree-view/YTreeView.js.map +1 -1
- package/lib/components/tree-view/YTreeViewNode.js +58 -21
- package/lib/components/tree-view/YTreeViewNode.js.map +1 -1
- package/lib/components/tree-view/index.js.map +1 -1
- package/lib/components/tree-view/tree-view.js +61 -8
- package/lib/components/tree-view/tree-view.js.map +1 -1
- package/lib/components/tree-view/types.js.map +1 -1
- package/lib/components/tree-view/util.js.map +1 -1
- package/lib/composables/choice-link.js.map +1 -1
- package/lib/composables/choice.js.map +1 -1
- package/lib/composables/communication.js.map +1 -1
- package/lib/composables/component.js.map +1 -1
- package/lib/composables/coordinate/arrangement.js.map +1 -1
- package/lib/composables/coordinate/index.js +23 -13
- package/lib/composables/coordinate/index.js.map +1 -1
- package/lib/composables/coordinate/levitation.js +79 -50
- package/lib/composables/coordinate/levitation.js.map +1 -1
- package/lib/composables/coordinate/types.js.map +1 -1
- package/lib/composables/coordinate/utils/point.js.map +1 -1
- package/lib/composables/date/factory.js.map +1 -1
- package/lib/composables/date/index.js.map +1 -1
- package/lib/composables/date/setting.js.map +1 -1
- package/lib/composables/date/types.js.map +1 -1
- package/lib/composables/defaults/index.js.map +1 -1
- package/lib/composables/defaults/share.js.map +1 -1
- package/lib/composables/defaults/types.js.map +1 -1
- package/lib/composables/dimension.js.map +1 -1
- package/lib/composables/focus.js.map +1 -1
- package/lib/composables/form.js +5 -5
- package/lib/composables/form.js.map +1 -1
- package/lib/composables/i18n/index.js.map +1 -1
- package/lib/composables/i18n/locale.js.map +1 -1
- package/lib/composables/i18n/rtl.js.map +1 -1
- package/lib/composables/i18n/share.js.map +1 -1
- package/lib/composables/icon.js +1 -2
- package/lib/composables/icon.js.map +1 -1
- package/lib/composables/index.js.map +1 -1
- package/lib/composables/layer-group.js.map +1 -1
- package/lib/composables/layout.js.map +1 -1
- package/lib/composables/list-items.js.map +1 -1
- package/lib/composables/progress.js.map +1 -1
- package/lib/composables/ref.js.map +1 -1
- package/lib/composables/resize-observer.js.map +1 -1
- package/lib/composables/scope.js.map +1 -1
- package/lib/composables/style-color.js +6 -5
- package/lib/composables/style-color.js.map +1 -1
- package/lib/composables/theme/factory.js.map +1 -1
- package/lib/composables/theme/helper.js.map +1 -1
- package/lib/composables/theme/index.js +8 -1
- package/lib/composables/theme/index.js.map +1 -1
- package/lib/composables/theme/setting.js.map +1 -1
- package/lib/composables/theme/types.js.map +1 -1
- package/lib/composables/timing.js +13 -5
- package/lib/composables/timing.js.map +1 -1
- package/lib/composables/transition.js.map +1 -1
- package/lib/composables/validation.js.map +1 -1
- package/lib/composables/vue-router.js.map +1 -1
- package/lib/directives/complement-click/index.js.map +1 -1
- package/lib/directives/index.js +3 -0
- package/lib/directives/index.js.map +1 -0
- package/lib/directives/plate-wave/index.js.map +1 -1
- package/lib/directives/plate-wave/plate-wave.scss +44 -33
- package/lib/directives/theme-class/index.js +24 -0
- package/lib/directives/theme-class/index.js.map +1 -0
- package/lib/etc/index.js.map +1 -1
- package/lib/i18n/built-in.js.map +1 -1
- package/lib/i18n/config.js.map +1 -1
- package/lib/i18n/types.js.map +1 -1
- package/lib/index.js +3 -3
- package/lib/index.js.map +1 -1
- package/lib/locales/en.js.map +1 -1
- package/lib/locales/index.js.map +1 -1
- package/lib/locales/ko.js.map +1 -1
- package/lib/mixins/di.js.map +1 -1
- package/lib/mixins/rebind-attrs.js +0 -2
- package/lib/mixins/rebind-attrs.js.map +1 -1
- package/lib/styles/_elevation.scss +0 -1
- package/lib/styles/base.scss +3 -1
- package/lib/styles/settings/_elevation.scss +12 -12
- package/lib/styles/settings/_provided.scss +33 -33
- package/lib/styles/theme/dark.scss +3 -3
- package/lib/styles/theme/index.scss +4 -5
- package/lib/styles/theme/light.scss +3 -3
- package/lib/styles/util/_mixin.scss +16 -16
- package/lib/types/index.js.map +1 -1
- package/lib/util/anchor.js.map +1 -1
- package/lib/util/array.js.map +1 -1
- package/lib/util/collection.js.map +1 -1
- package/lib/util/color/apca.js +31 -30
- package/lib/util/color/apca.js.map +1 -1
- package/lib/util/color/const.js.map +1 -1
- package/lib/util/color/contrast/contrast.js.map +1 -1
- package/lib/util/color/conversion.js.map +1 -1
- package/lib/util/color/hct/cam16.js +95 -95
- package/lib/util/color/hct/cam16.js.map +1 -1
- package/lib/util/color/hct/hct-solver.js +113 -113
- package/lib/util/color/hct/hct-solver.js.map +1 -1
- package/lib/util/color/hct/hct.js +71 -71
- package/lib/util/color/hct/hct.js.map +1 -1
- package/lib/util/color/hct/viewing-conditions.js +6 -4
- package/lib/util/color/hct/viewing-conditions.js.map +1 -1
- package/lib/util/color/index.js +12 -12
- package/lib/util/color/index.js.map +1 -1
- package/lib/util/color/palettes/core-palette.js.map +1 -1
- package/lib/util/color/palettes/tonal-palette.js +3 -3
- package/lib/util/color/palettes/tonal-palette.js.map +1 -1
- package/lib/util/color/types.js.map +1 -1
- package/lib/util/color/utils/math-utils.js +62 -62
- package/lib/util/color/utils/math-utils.js.map +1 -1
- package/lib/util/common.js +28 -13
- package/lib/util/common.js.map +1 -1
- package/lib/util/component/component.js.map +1 -1
- package/lib/util/component/index.js.map +1 -1
- package/lib/util/component/inject-self.js.map +1 -1
- package/lib/util/component/props.js.map +1 -1
- package/lib/util/component/types.js.map +1 -1
- package/lib/util/date/adapters/yuyeon-date-adapter.js +3 -3
- package/lib/util/date/adapters/yuyeon-date-adapter.js.map +1 -1
- package/lib/util/date/built-in.js +2 -0
- package/lib/util/date/built-in.js.map +1 -1
- package/lib/util/date/index.js +1 -1
- package/lib/util/date/index.js.map +1 -1
- package/lib/util/date/types.js.map +1 -1
- package/lib/util/debounce.js +1 -1
- package/lib/util/debounce.js.map +1 -1
- package/lib/util/dom.js +10 -1
- package/lib/util/dom.js.map +1 -1
- package/lib/util/environments.js.map +1 -1
- package/lib/util/frame-scheduler.js +3 -3
- package/lib/util/frame-scheduler.js.map +1 -1
- package/lib/util/index.js +11 -11
- package/lib/util/index.js.map +1 -1
- package/lib/util/reactivity.js +3 -3
- package/lib/util/reactivity.js.map +1 -1
- package/lib/util/rect.js.map +1 -1
- package/lib/util/scroll.js.map +1 -1
- package/lib/util/string.js +3 -1
- package/lib/util/string.js.map +1 -1
- package/lib/util/ui.js +8 -7
- package/lib/util/ui.js.map +1 -1
- package/lib/util/validation.js.map +1 -1
- package/package.json +11 -2
- package/types/abstract/items.d.ts +4 -4
- package/types/components/alert/YAlert.d.ts +2 -2
- package/types/components/badge/YBadge.d.ts +9 -3
- package/types/components/button/YButton.d.ts +3 -3
- package/types/components/checkbox/YCheckbox.d.ts +4 -4
- package/types/components/chip/YChip.d.ts +0 -3
- package/types/components/date-picker/YDateCalendar.d.ts +4 -3
- package/types/components/date-picker/YDatePickerControl.d.ts +7 -7
- package/types/components/dialog/YDialog.d.ts +116 -6484
- package/types/components/draggable/YDraggable.d.ts +6 -6
- package/types/components/dropdown/YDropdown.d.ts +87 -87
- package/types/components/field-input/YFieldInput.d.ts +14 -14
- package/types/components/form/YForm.d.ts +3 -3
- package/types/components/icon/YIcon.d.ts +4 -4
- package/types/components/icons/YIconPageControl.d.ts +1 -1
- package/types/components/icons/YIconSort.d.ts +1 -1
- package/types/components/icons/index.d.ts +4 -4
- package/types/components/img/YImg.d.ts +30 -27
- package/types/components/img/index.d.ts +1 -0
- package/types/components/index.d.ts +1 -0
- package/types/components/input/YInput.d.ts +13 -13
- package/types/components/ip-field/YIpv4Field.d.ts +5 -5
- package/types/components/layer/YLayer.d.ts +59 -3242
- package/types/components/layer/base.d.ts +4 -0
- package/types/components/layer/scroll-strategies.d.ts +4 -4
- package/types/components/menu/YMenu.d.ts +83 -6451
- package/types/components/pagination/YPagination.d.ts +3 -3
- package/types/components/select/YSelect.d.ts +172 -496
- package/types/components/slider/YSlider.d.ts +1 -1
- package/types/components/snackbar/YSnackbar.d.ts +55 -55
- package/types/components/tab/YTab.d.ts +3 -3
- package/types/components/tab/YTabs.d.ts +1 -1
- package/types/components/table/YDataTable.d.ts +30 -87
- package/types/components/table/YDataTableBody.d.ts +3 -3
- package/types/components/table/YDataTableCell.d.ts +2 -2
- package/types/components/table/YDataTableControl.d.ts +6 -6
- package/types/components/table/YDataTableLayer.d.ts +2 -2
- package/types/components/table/YDataTableRow.d.ts +1 -1
- package/types/components/table/YDataTableServer.d.ts +37 -94
- package/types/components/table/YTable.d.ts +3 -3
- package/types/components/table/composables/expand.d.ts +4 -4
- package/types/components/table/composables/header.d.ts +16 -48
- package/types/components/table/composables/items.d.ts +2 -2
- package/types/components/table/composables/pagination.d.ts +10 -10
- package/types/components/table/composables/selection.d.ts +6 -6
- package/types/components/table/composables/sorting.d.ts +8 -14
- package/types/components/table/types/item.d.ts +1 -1
- package/types/components/textarea/YTextarea.d.ts +30 -30
- package/types/components/tooltip/YTooltip.d.ts +67 -67
- package/types/components/tree-view/YTreeView.d.ts +21 -29
- package/types/components/tree-view/YTreeViewNode.d.ts +76 -6
- package/types/components/tree-view/tree-view.d.ts +19 -3
- package/types/composables/choice.d.ts +2 -2
- package/types/composables/coordinate/index.d.ts +28 -3207
- package/types/composables/coordinate/levitation.d.ts +4 -2
- package/types/composables/coordinate/types.d.ts +1 -0
- package/types/composables/dimension.d.ts +6 -6
- package/types/composables/form.d.ts +17 -27
- package/types/composables/list-items.d.ts +3 -3
- package/types/composables/style-color.d.ts +22 -1
- package/types/composables/theme/index.d.ts +1 -0
- package/types/composables/transition.d.ts +10 -10
- package/types/composables/validation.d.ts +6 -6
- package/types/composables/vue-router.d.ts +3 -3
- package/types/declares.d.ts +1 -0
- package/types/directives/index.d.ts +2 -0
- package/types/directives/plate-wave/index.d.ts +7 -1
- package/types/globals.d.ts +4 -5
- package/types/shims.d.ts +65 -59
- package/types/types/index.d.ts +3 -0
- package/types/util/anchor.d.ts +1 -1
- package/types/util/common.d.ts +3 -0
- package/types/util/component/component.d.ts +1 -2
- package/types/util/component/props.d.ts +1 -1
- package/types/util/component/types.d.ts +1 -1
- package/types/util/date/index.d.ts +1 -1
- package/types/util/dom.d.ts +2 -0
- package/types/util/index.d.ts +11 -11
- package/types/components/table/composibles/header.d.ts +0 -207
- package/types/components/table/composibles/items.d.ts +0 -55
- package/types/components/table/composibles/measure.d.ts +0 -8
- package/types/components/table/composibles/options.d.ts +0 -11
- package/types/components/table/composibles/pagination.d.ts +0 -81
- package/types/components/table/composibles/selection.d.ts +0 -82
- package/types/components/table/composibles/sorted-items.d.ts +0 -7
- package/types/components/table/composibles/sorting.d.ts +0 -62
- /package/types/directives/{theme-class.d.ts → theme-class/index.d.ts} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"YTreeViewNode.js","names":["computed","getCurrentInstance","mergeProps","onBeforeMount","ref","resolveComponent","pressItemsPropsOptions","useTreeView","useRender","getObjectValueByPath","defineComponent","propsFactory","YButton","YIconCheckbox","YIconExpand","YPlate","YTextHighlighter","YExpandVTransition","pressYTreeViewNodeProps","search","String","disableTransition","Boolean","enableActive","activeClass","Array","activeSingleModifier","requiredActive","activeColor","type","default","enableSelect","onMouseenterContainer","Function","onMouseleaveContainer","onMousemoveContainer","itemKey","YTreeViewNode","name","components","props","item","Object","level","Number","slots","setup","_ref","expose","YTreeNode","vm","treeView","container$","expanded","active","selected","immediate","children","itemChildren","slice","imLeaf","value","length","classes","styles","contentText","itemText","slotProps","toggleActive","searchLoading","leaves","filter","leaf","isExcluded","e","to","updateActive","myKey","emitActive","onClick","onClickExpand","stopPropagation","updateExpanded","emitExpanded","onClickSelect","updateSelected","emitSelected","indentSpacer","i","push","_createVNode","leading","text","trailing","map","_mergeProps","_len","arguments","args","_key","_len2","_key2","_len3","_key3","_len4","_key4","nodeState","register"],"sources":["../../../src/components/tree-view/YTreeViewNode.tsx"],"sourcesContent":["import {\n type PropType,\n type SlotsType,\n type VNodeArrayChildren,\n computed,\n getCurrentInstance,\n mergeProps,\n onBeforeMount,\n ref,\n resolveComponent,\n} from 'vue';\n\nimport { pressItemsPropsOptions } from '@/abstract/items';\nimport { useTreeView } from '@/components/tree-view/tree-view';\nimport { useRender } from '@/composables/component';\nimport { getObjectValueByPath } from '@/util/common';\nimport { defineComponent } from '@/util/component';\nimport { propsFactory } from '@/util/component';\n\nimport { YButton } from '../button';\nimport { YIconCheckbox, YIconExpand } from '../icons';\nimport { YPlate } from '../plate';\nimport { YTextHighlighter } from '../text-highlighter/YTextHighlighter';\nimport { YExpandVTransition } from '../transitions';\n\nexport const pressYTreeViewNodeProps = propsFactory(\n {\n search: String,\n disableTransition: Boolean,\n enableActive: Boolean,\n activeClass: [String, Array],\n activeSingleModifier: String,\n requiredActive: Boolean,\n activeColor: {\n type: String,\n default: 'primary',\n },\n enableSelect: Boolean,\n onMouseenterContainer: Function,\n onMouseleaveContainer: Function,\n onMousemoveContainer: Function,\n ...pressItemsPropsOptions({\n itemKey: 'id',\n }),\n },\n 'YTreeViewNode',\n);\n\nexport const YTreeViewNode = defineComponent({\n name: 'YTreeNode',\n components: {\n YButton,\n YIconExpand,\n YPlate,\n YIconCheckbox,\n },\n props: {\n item: {\n type: Object as PropType<any>,\n },\n level: {\n type: Number as PropType<number>,\n default: 0,\n },\n ...pressYTreeViewNodeProps(),\n },\n slots: Object as SlotsType<{\n default: any;\n 'expand-icon': any;\n leading: any;\n trailing: any;\n }>,\n setup(props, { slots, expose }) {\n const YTreeNode = resolveComponent('YTreeViewNode', true) as any;\n const vm = getCurrentInstance();\n const treeView = useTreeView();\n const container$ = ref<HTMLElement>();\n\n const expanded = ref(false);\n const active = ref(false);\n const selected = ref(false);\n const immediate = ref(false);\n\n const children = computed(() => {\n return (\n getObjectValueByPath(props.item, props.itemChildren as string) ?? []\n ).slice();\n });\n\n const imLeaf = computed(() => children.value.length < 1);\n\n const classes = computed(() => {\n return {\n 'y-tree-view-node': true,\n 'y-tree-view-node--leaf': imLeaf.value,\n 'y-tree-view-node--expanded': expanded.value,\n 'y-tree-view-node--active': active.value,\n };\n });\n\n const styles = computed(() => {\n return {\n '--tree-view-node--level': props.level,\n };\n });\n\n const contentText = computed(() => {\n return getObjectValueByPath(props.item, props.itemText) ?? '';\n });\n\n const slotProps = computed(() => {\n return {\n level: props.level,\n imLeaf: imLeaf.value,\n toggleActive,\n };\n });\n\n const searchLoading = computed(() => {\n return treeView.searchLoading.value;\n });\n\n const leaves = computed(() => {\n return children.value.filter((leaf: any) => {\n return !treeView.isExcluded(getObjectValueByPath(leaf, props.itemKey));\n });\n });\n\n function toggleActive(e?: MouseEvent) {\n const to = !active.value;\n active.value = to;\n treeView.updateActive(myKey.value, to, e);\n treeView.emitActive();\n }\n\n function onClick(e: MouseEvent) {\n toggleActive(e);\n }\n\n function onClickExpand(e: MouseEvent) {\n e.stopPropagation();\n const to = !expanded.value;\n expanded.value = to;\n treeView.updateExpanded(myKey.value, to);\n treeView.emitExpanded();\n }\n\n function onClickSelect(e: MouseEvent) {\n e.stopPropagation();\n const to = !selected.value;\n selected.value = to;\n treeView.updateSelected(myKey.value, to);\n treeView.emitSelected();\n }\n\n function onMouseenterContainer(e: MouseEvent) {\n props.onMouseenterContainer?.(e, {\n ...slotProps.value,\n item: props.item,\n });\n }\n\n function onMouseleaveContainer(e: MouseEvent) {\n props.onMouseleaveContainer?.(e, {\n ...slotProps.value,\n item: props.item,\n });\n }\n\n function onMousemoveContainer(e: MouseEvent) {\n props.onMousemoveContainer?.(e, { ...slotProps.value, item: props.item });\n }\n\n useRender(() => {\n const indentSpacer: VNodeArrayChildren = [];\n for (let i = 0; i < props.level; i += 1) {\n indentSpacer.push(\n <div class={'y-tree-view-node__indent-spacer'}></div>,\n );\n }\n\n return (\n <div\n class={classes.value}\n style={styles.value}\n role=\"treeitem\"\n data-level={props.level}\n >\n <div\n ref={container$}\n class={'y-tree-view-node__container'}\n onClick={(e: MouseEvent) =>\n props.enableActive ? onClick(e) : void 0\n }\n onMouseenter={props.onMouseenterContainer && onMouseenterContainer}\n onMouseleave={props.onMouseleaveContainer && onMouseleaveContainer}\n onMousemove={props.onMousemoveContainer && onMousemoveContainer}\n >\n <YPlate />\n <div class={'y-tree-view-node__indents'}>{indentSpacer}</div>\n {/* EXPAND */}\n {!imLeaf.value && leaves.value.length > 0 ? (\n <YButton\n class={'y-tree-view-node__expand-icon'}\n variation={'icon'}\n onClick={onClickExpand}\n >\n {slots['expand-icon'] ? (\n slots['expand-icon']()\n ) : (\n <YIconExpand></YIconExpand>\n )}\n </YButton>\n ) : (\n <i class={'y-tree-view-node__no-expand-icon'}></i>\n )}\n {/* SELECT */}\n {props.enableSelect && (\n <div class={'y-tree-view-node__select'} onClick={onClickSelect}>\n <YIconCheckbox checked={selected.value}></YIconCheckbox>\n </div>\n )}\n {/* CONTENT */}\n <div class={'y-tree-view-node__content'}>\n {slots.leading && (\n <div class={'y-tree-view-node__leading'}>\n {slots.leading(slotProps.value)}\n </div>\n )}\n <div class={'y-tree-view-node__text'}>\n {slots.default ? (\n slots.default?.({\n text: contentText.value,\n item: props.item,\n ...slotProps.value,\n })\n ) : props.search && !searchLoading.value ? (\n <YTextHighlighter\n text={contentText.value}\n keyword={props.search}\n ></YTextHighlighter>\n ) : (\n contentText.value\n )}\n </div>\n {slots.trailing && (\n <div class={'y-tree-view-node__trailing'}>\n {slots.trailing(slotProps.value)}\n </div>\n )}\n </div>\n </div>\n {/* CHILDREN */}\n {children.value.length > 0 && (\n <YExpandVTransition disabled={props.disableTransition}>\n {expanded.value && (\n <div class={['y-tree-view-node__leaves']} role=\"tree\">\n {leaves.value.map((item: any) => {\n return (\n <YTreeNode\n {...mergeProps(props)}\n key={getObjectValueByPath(item, props.itemKey)}\n level={(props.level ?? 0) + 1}\n item={item}\n >\n {{\n default:\n slots.default &&\n ((...args: any[]) => slots.default?.(...args)),\n 'expand-icon':\n slots['expand-icon'] &&\n ((...args: any[]) =>\n slots['expand-icon']?.(...args)),\n leading:\n slots.leading &&\n ((...args: any[]) => slots.leading?.(...args)),\n trailing:\n slots.trailing &&\n ((...args: any[]) => slots.trailing?.(...args)),\n }}\n </YTreeNode>\n );\n })}\n </div>\n )}\n </YExpandVTransition>\n )}\n </div>\n );\n });\n\n const myKey = computed(() => {\n return getObjectValueByPath(props.item, props.itemKey);\n });\n\n const nodeState = {\n myKey,\n expanded,\n active,\n selected,\n immediate,\n };\n\n expose(nodeState);\n\n onBeforeMount(() => {\n treeView?.register?.(myKey.value, nodeState);\n });\n\n return {\n treeView,\n myKey,\n expanded,\n active,\n selected,\n immediate,\n };\n },\n});\n\nexport type YTreeNode = InstanceType<typeof YTreeViewNode>;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"YTreeViewNode.js","names":["computed","mergeProps","onBeforeMount","ref","resolveComponent","watch","createVNode","_createVNode","_mergeProps","pressItemsPropsOptions","useTreeView","useRender","getObjectValueByPath","defineComponent","propsFactory","YButton","YIconCheckbox","YIconExpand","YPlate","YTextHighlighter","YExpandVTransition","pressYTreeViewNodeProps","search","String","disableTransition","Boolean","enableActive","activeStrategy","type","default","activeClass","Array","activeSingleModifier","requiredActive","activeColor","enableSelect","selectStrategy","onMouseenterContainer","Function","onMouseleaveContainer","onMousemoveContainer","itemKey","YTreeViewNode","name","components","props","item","Object","level","Number","slots","setup","_ref","expose","YTreeNode","treeView","container$","expanded","active","selected","indeterminate","myKey","children","itemChildren","slice","imLeaf","value","length","searchLoading","leaves","filter","leaf","isExcluded","childrenSelection","selectedState","map","child","childrenAllChecked","all","childrenSomeChecked","some","isChecked","classes","styles","contentText","itemText","slotProps","toggleActive","e","to","updateActive","emitActive","onClick","onClickExpand","stopPropagation","updateExpanded","emitExpanded","onClickSelect","updateSelected","emitSelected","indentSpacer","i","push","leading","text","trailing","_len","arguments","args","_key","_len2","_key2","_len3","_key3","_len4","_key4","nodeState","register"],"sources":["../../../src/components/tree-view/YTreeViewNode.tsx"],"sourcesContent":["/** biome-ignore-all lint/a11y/noStaticElementInteractions: <explanation> */\r\n/** biome-ignore-all lint/a11y/useFocusableInteractive: <explanation> */\r\n/** biome-ignore-all lint/a11y/useKeyWithClickEvents: <explanation> */\r\nimport {\r\n computed,\r\n mergeProps,\r\n onBeforeMount,\r\n type PropType,\r\n ref,\r\n resolveComponent,\r\n type SlotsType,\r\n type VNodeArrayChildren,\r\n watch,\r\n} from 'vue';\r\n\r\nimport { pressItemsPropsOptions } from '@/abstract/items';\r\nimport { useTreeView } from '@/components/tree-view/tree-view';\r\nimport { useRender } from '@/composables/component';\r\nimport { getObjectValueByPath } from '@/util/common';\r\nimport { defineComponent, propsFactory } from '@/util/component';\r\n\r\nimport { YButton } from '../button';\r\nimport { YIconCheckbox, YIconExpand } from '../icons';\r\nimport { YPlate } from '../plate';\r\nimport { YTextHighlighter } from '../text-highlighter/YTextHighlighter';\r\nimport { YExpandVTransition } from '../transitions';\r\n\r\nexport const pressYTreeViewNodeProps = propsFactory(\r\n {\r\n search: String,\r\n disableTransition: Boolean,\r\n enableActive: Boolean,\r\n activeStrategy: {\r\n /**\r\n * cascade: only action descendent leaves\r\n * relative: cascade after check parent (ancestor)\r\n */\r\n type: String as PropType<'independent' | 'cascade' | 'relative'>,\r\n default: 'independent',\r\n },\r\n activeClass: [String, Array],\r\n activeSingleModifier: String,\r\n requiredActive: Boolean,\r\n activeColor: {\r\n type: String,\r\n default: 'primary',\r\n },\r\n enableSelect: Boolean,\r\n selectStrategy: {\r\n /**\r\n * cascade: only action descendent leaves\r\n * relative: cascade after check parent (ancestor)\r\n * leaves: relative after return values only leaf\r\n */\r\n type: String as PropType<'independent' | 'cascade' | 'relative' | 'leaf'>,\r\n default: 'relative',\r\n },\r\n onMouseenterContainer: Function,\r\n onMouseleaveContainer: Function,\r\n onMousemoveContainer: Function,\r\n ...pressItemsPropsOptions({\r\n itemKey: 'id',\r\n }),\r\n },\r\n 'YTreeViewNode',\r\n);\r\n\r\n/**\r\n * TODO: correct selected values what selectStrategy leaf or others\r\n */\r\nexport const YTreeViewNode = defineComponent({\r\n name: 'YTreeNode',\r\n components: {\r\n YButton,\r\n YIconExpand,\r\n YPlate,\r\n YIconCheckbox,\r\n },\r\n props: {\r\n item: {\r\n type: Object as PropType<any>,\r\n },\r\n level: {\r\n type: Number as PropType<number>,\r\n default: 0,\r\n },\r\n ...pressYTreeViewNodeProps(),\r\n },\r\n slots: Object as SlotsType<{\r\n default: any;\r\n 'expand-icon': any;\r\n leading: any;\r\n trailing: any;\r\n }>,\r\n setup(props, { slots, expose }) {\r\n const YTreeNode = resolveComponent('YTreeViewNode', true) as any;\r\n const treeView = useTreeView();\r\n const container$ = ref<HTMLElement>();\r\n\r\n const expanded = ref(false);\r\n const active = ref(false);\r\n const selected = ref(false);\r\n const indeterminate = ref(false);\r\n\r\n const myKey = computed(() =>\r\n getObjectValueByPath(props.item, props.itemKey),\r\n );\r\n\r\n const children = computed(() => {\r\n return (\r\n getObjectValueByPath(props.item, props.itemChildren as string) ?? []\r\n ).slice();\r\n });\r\n\r\n const imLeaf = computed(() => children.value.length < 1);\r\n\r\n const searchLoading = computed(() => {\r\n return treeView.searchLoading.value;\r\n });\r\n\r\n const leaves = computed(() => {\r\n return children.value.filter((leaf: any) => {\r\n return !treeView.isExcluded(getObjectValueByPath(leaf, props.itemKey));\r\n });\r\n });\r\n\r\n const childrenSelection = computed(() =>\r\n treeView.selectedState.value(\r\n myKey.value,\r\n children.value.map((child: any) =>\r\n getObjectValueByPath(child, props.itemKey),\r\n ),\r\n ),\r\n );\r\n\r\n const childrenAllChecked = computed(() => {\r\n return !!children.value?.length && childrenSelection.value.all;\r\n });\r\n\r\n const childrenSomeChecked = computed(() => {\r\n return (\r\n (props.selectStrategy === 'relative' ||\r\n props.selectStrategy === 'leaf') &&\r\n (children.value?.length ?? 0) > 0 &&\r\n !childrenAllChecked.value &&\r\n childrenSelection.value.some\r\n );\r\n });\r\n\r\n const isChecked = computed(() => {\r\n return (\r\n selected.value ||\r\n (props.selectStrategy === 'leaf' && childrenAllChecked.value)\r\n );\r\n });\r\n\r\n const classes = computed(() => {\r\n return {\r\n 'y-tree-view-node': true,\r\n 'y-tree-view-node--leaf': imLeaf.value,\r\n 'y-tree-view-node--expanded': expanded.value,\r\n 'y-tree-view-node--active': active.value,\r\n };\r\n });\r\n\r\n const styles = computed(() => {\r\n return {\r\n '--tree-view-node--level': props.level,\r\n };\r\n });\r\n\r\n const contentText = computed(() => {\r\n return getObjectValueByPath(props.item, props.itemText) ?? '';\r\n });\r\n\r\n const slotProps = computed(() => {\r\n return {\r\n level: props.level,\r\n imLeaf: imLeaf.value,\r\n toggleActive,\r\n };\r\n });\r\n\r\n watch(childrenSomeChecked, (value) => {\r\n indeterminate.value = value;\r\n });\r\n\r\n function toggleActive(e?: MouseEvent) {\r\n const to = !active.value;\r\n active.value = to;\r\n treeView.updateActive(myKey.value, to, e);\r\n treeView.emitActive();\r\n }\r\n\r\n function onClick(e: MouseEvent) {\r\n toggleActive(e);\r\n }\r\n\r\n function onClickExpand(e: MouseEvent) {\r\n e.stopPropagation();\r\n const to = !expanded.value;\r\n expanded.value = to;\r\n treeView.updateExpanded(myKey.value, to);\r\n treeView.emitExpanded();\r\n }\r\n\r\n function onClickSelect(e: MouseEvent) {\r\n e.stopPropagation();\r\n const to = !isChecked.value;\r\n selected.value = to;\r\n treeView.updateSelected(myKey.value, to);\r\n treeView.emitSelected();\r\n }\r\n\r\n function onMouseenterContainer(e: MouseEvent) {\r\n props.onMouseenterContainer?.(e, {\r\n ...slotProps.value,\r\n item: props.item,\r\n });\r\n }\r\n\r\n function onMouseleaveContainer(e: MouseEvent) {\r\n props.onMouseleaveContainer?.(e, {\r\n ...slotProps.value,\r\n item: props.item,\r\n });\r\n }\r\n\r\n function onMousemoveContainer(e: MouseEvent) {\r\n props.onMousemoveContainer?.(e, { ...slotProps.value, item: props.item });\r\n }\r\n\r\n useRender(() => {\r\n const indentSpacer: VNodeArrayChildren = [];\r\n for (let i = 0; i < props.level; i += 1) {\r\n indentSpacer.push(\r\n <div class={'y-tree-view-node__indent-spacer'}></div>,\r\n );\r\n }\r\n\r\n return (\r\n <div\r\n class={classes.value}\r\n style={styles.value}\r\n role=\"treeitem\"\r\n data-level={props.level}\r\n >\r\n <div\r\n ref={container$}\r\n class={'y-tree-view-node__container'}\r\n onClick={(e: MouseEvent) =>\r\n props.enableActive ? onClick(e) : void 0\r\n }\r\n onMouseenter={props.onMouseenterContainer && onMouseenterContainer}\r\n onMouseleave={props.onMouseleaveContainer && onMouseleaveContainer}\r\n onMousemove={props.onMousemoveContainer && onMousemoveContainer}\r\n >\r\n <YPlate />\r\n <div class={'y-tree-view-node__indents'}>{indentSpacer}</div>\r\n {/* EXPAND */}\r\n {!imLeaf.value && leaves.value.length > 0 ? (\r\n <YButton\r\n class={'y-tree-view-node__expand-icon'}\r\n variation={'icon'}\r\n onClick={onClickExpand}\r\n >\r\n {slots['expand-icon'] ? (\r\n slots['expand-icon']()\r\n ) : (\r\n <YIconExpand></YIconExpand>\r\n )}\r\n </YButton>\r\n ) : (\r\n <i class={'y-tree-view-node__no-expand-icon'}></i>\r\n )}\r\n {/* SELECT */}\r\n {props.enableSelect && (\r\n // biome-ignore lint/a11y/useSemanticElements: passive\r\n <div\r\n class={'y-tree-view-node__select'}\r\n role=\"checkbox\"\r\n aria-checked={isChecked.value}\r\n onClick={onClickSelect}\r\n >\r\n <YIconCheckbox\r\n checked={isChecked.value}\r\n indeterminate={!selected.value && childrenSomeChecked.value}\r\n ></YIconCheckbox>\r\n </div>\r\n )}\r\n {/* CONTENT */}\r\n <div class={'y-tree-view-node__content'}>\r\n {slots.leading && (\r\n <div class={'y-tree-view-node__leading'}>\r\n {slots.leading(slotProps.value)}\r\n </div>\r\n )}\r\n <div class={'y-tree-view-node__text'}>\r\n {slots.default ? (\r\n slots.default?.({\r\n text: contentText.value,\r\n item: props.item,\r\n ...slotProps.value,\r\n })\r\n ) : props.search && !searchLoading.value ? (\r\n <YTextHighlighter\r\n text={contentText.value}\r\n keyword={props.search}\r\n ></YTextHighlighter>\r\n ) : (\r\n contentText.value\r\n )}\r\n </div>\r\n {slots.trailing && (\r\n <div class={'y-tree-view-node__trailing'}>\r\n {slots.trailing(slotProps.value)}\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n {/* CHILDREN */}\r\n {children.value.length > 0 && (\r\n <YExpandVTransition disabled={props.disableTransition}>\r\n {expanded.value && (\r\n <div class={['y-tree-view-node__leaves']} role=\"tree\">\r\n {leaves.value.map((item: any) => {\r\n return (\r\n <YTreeNode\r\n {...mergeProps(props)}\r\n key={getObjectValueByPath(item, props.itemKey)}\r\n level={(props.level ?? 0) + 1}\r\n item={item}\r\n >\r\n {{\r\n default:\r\n slots.default &&\r\n ((...args: any[]) => slots.default?.(...args)),\r\n 'expand-icon':\r\n slots['expand-icon'] &&\r\n ((...args: any[]) =>\r\n slots['expand-icon']?.(...args)),\r\n leading:\r\n slots.leading &&\r\n ((...args: any[]) => slots.leading?.(...args)),\r\n trailing:\r\n slots.trailing &&\r\n ((...args: any[]) => slots.trailing?.(...args)),\r\n }}\r\n </YTreeNode>\r\n );\r\n })}\r\n </div>\r\n )}\r\n </YExpandVTransition>\r\n )}\r\n </div>\r\n );\r\n });\r\n\r\n const nodeState = {\r\n myKey,\r\n expanded,\r\n active,\r\n selected,\r\n indeterminate,\r\n };\r\n\r\n expose(nodeState);\r\n\r\n onBeforeMount(() => {\r\n treeView?.register?.(myKey.value, nodeState);\r\n });\r\n\r\n return {\r\n treeView,\r\n myKey,\r\n expanded,\r\n active,\r\n selected,\r\n indeterminate,\r\n childrenSelection,\r\n };\r\n },\r\n});\r\n\r\nexport type YTreeNode = InstanceType<typeof YTreeViewNode>;\r\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../src/components/tree-view/index.ts"],"sourcesContent":["export * from './YTreeViewNode';\nexport * from './YTreeView';\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../src/components/tree-view/index.ts"],"sourcesContent":["export * from './YTreeViewNode';\nexport * from './YTreeView';\n"],"mappings":"","ignoreList":[]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { inject, provide, ref, shallowRef } from 'vue';
|
|
1
|
+
import { computed, inject, provide, ref, shallowRef } from 'vue';
|
|
2
2
|
import { useModelDuplex } from "../../composables/index.js";
|
|
3
3
|
import { getObjectValueByPath } from "../../util/index.js";
|
|
4
4
|
export const Y_TREE_VIEW = Symbol.for('YTreeView');
|
|
@@ -14,6 +14,18 @@ export function provideTreeView(props) {
|
|
|
14
14
|
const activeSet = ref(new Set());
|
|
15
15
|
const searchLoading = shallowRef(false);
|
|
16
16
|
const excludedSet = ref(new Set());
|
|
17
|
+
const selectedState = computed(() => {
|
|
18
|
+
let all = false;
|
|
19
|
+
let some = false;
|
|
20
|
+
return (key, children) => {
|
|
21
|
+
all = children.every(child => selectedSet.value.has(child));
|
|
22
|
+
some = getDescendants(key).some(child => selectedSet.value.has(child));
|
|
23
|
+
return {
|
|
24
|
+
all: all,
|
|
25
|
+
some: some
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
});
|
|
17
29
|
|
|
18
30
|
// Utils
|
|
19
31
|
function getDescendants(key) {
|
|
@@ -115,7 +127,11 @@ export function provideTreeView(props) {
|
|
|
115
127
|
if (!(key in nodes.value)) return;
|
|
116
128
|
const node = nodes.value[key];
|
|
117
129
|
if (to) {
|
|
118
|
-
|
|
130
|
+
if (props.selectStrategy !== 'leaf') {
|
|
131
|
+
selectedSet.value.add(key);
|
|
132
|
+
} else if (!node.childKeys.length) {
|
|
133
|
+
selectedSet.value.add(key);
|
|
134
|
+
}
|
|
119
135
|
node.selected = true;
|
|
120
136
|
}
|
|
121
137
|
if (!to && key in nodes.value) {
|
|
@@ -123,14 +139,32 @@ export function provideTreeView(props) {
|
|
|
123
139
|
nodes.value[key].selected = false;
|
|
124
140
|
issueVnodeState(key);
|
|
125
141
|
}
|
|
126
|
-
if (props.selectStrategy === 'cascade') {
|
|
142
|
+
if (props.selectStrategy === 'cascade' || props.selectStrategy === 'relative' || props.selectStrategy === 'leaf') {
|
|
127
143
|
for (const descendant of getDescendants(key)) {
|
|
128
144
|
if (descendant in nodes.value) {
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
145
|
+
if (props.selectStrategy === 'leaf' && !!nodes.value[descendant]?.childKeys?.length) {
|
|
146
|
+
continue;
|
|
147
|
+
}
|
|
148
|
+
setSelected(descendant, to);
|
|
132
149
|
}
|
|
133
150
|
}
|
|
151
|
+
if (props.selectStrategy === 'relative') {
|
|
152
|
+
let grand = node.parentKey;
|
|
153
|
+
do {
|
|
154
|
+
const parentKey = grand;
|
|
155
|
+
grand = null;
|
|
156
|
+
if (!parentKey) continue;
|
|
157
|
+
const parent = nodes.value[parentKey];
|
|
158
|
+
if (!parent) continue;
|
|
159
|
+
const all = isChildrenAll(parentKey, 'selected', to);
|
|
160
|
+
if (all || !to) {
|
|
161
|
+
setSelected(parentKey, to);
|
|
162
|
+
if (parent.parentKey) {
|
|
163
|
+
grand = parent.parentKey;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
} while (grand != null);
|
|
167
|
+
}
|
|
134
168
|
}
|
|
135
169
|
}
|
|
136
170
|
function isChildrenAll(key, stateKey, to) {
|
|
@@ -143,11 +177,26 @@ export function provideTreeView(props) {
|
|
|
143
177
|
return nodes.value[childKey]?.[stateKey] === to;
|
|
144
178
|
});
|
|
145
179
|
}
|
|
180
|
+
function isChildrenSome(key, stateKey) {
|
|
181
|
+
const node = nodes.value[key];
|
|
182
|
+
if (!node) return false;
|
|
183
|
+
const {
|
|
184
|
+
childKeys
|
|
185
|
+
} = node;
|
|
186
|
+
return childKeys.some(childKey => {
|
|
187
|
+
return nodes.value[childKey]?.[stateKey] === true;
|
|
188
|
+
});
|
|
189
|
+
}
|
|
146
190
|
function setActive(key, to) {
|
|
147
191
|
to ? activeSet.value.add(key) : activeSet.value.delete(key);
|
|
148
192
|
nodes.value[key].active = to;
|
|
149
193
|
issueVnodeState(key);
|
|
150
194
|
}
|
|
195
|
+
function setSelected(key, to) {
|
|
196
|
+
to ? selectedSet.value.add(key) : selectedSet.value.delete(key);
|
|
197
|
+
nodes.value[key].selected = to;
|
|
198
|
+
issueVnodeState(key);
|
|
199
|
+
}
|
|
151
200
|
|
|
152
201
|
// Emit
|
|
153
202
|
function emitExpanded() {
|
|
@@ -179,7 +228,10 @@ export function provideTreeView(props) {
|
|
|
179
228
|
isExcluded,
|
|
180
229
|
emitExpanded,
|
|
181
230
|
emitActive,
|
|
182
|
-
emitSelected
|
|
231
|
+
emitSelected,
|
|
232
|
+
isChildrenAll,
|
|
233
|
+
isChildrenSome,
|
|
234
|
+
selectedState
|
|
183
235
|
});
|
|
184
236
|
return {
|
|
185
237
|
nodes,
|
|
@@ -198,7 +250,8 @@ export function provideTreeView(props) {
|
|
|
198
250
|
activeSet,
|
|
199
251
|
searchLoading,
|
|
200
252
|
excludedSet,
|
|
201
|
-
isExcluded
|
|
253
|
+
isExcluded,
|
|
254
|
+
selectedState
|
|
202
255
|
};
|
|
203
256
|
}
|
|
204
257
|
export function useTreeView() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tree-view.js","names":["inject","provide","ref","shallowRef","useModelDuplex","getObjectValueByPath","Y_TREE_VIEW","Symbol","for","provideTreeView","props","nodes","expanded","active","selected","expandedSet","Set","selectedSet","activeSet","searchLoading","excludedSet","getDescendants","key","descendants","childKeys","value","push","remains","slice","length","childKey","splice","item","isExcluded","search","has","issueVnodeState","node","vnode","indeterminate","updateExpanded","to","children","itemChildren","Array","isArray","add","delete","updateActive","event","inactiveKey","multipleActive","requiredActive","size","activeSingleModifier","getModifierState","onlyEventActiveStrategy","activeStrategy","descendant","setActive","grand","parentKey","parent","all","isChildrenAll","updateSelected","selectStrategy","stateKey","every","emitExpanded","arr","returnItem","map","emitActive","emitSelected","register","useTreeView","instance","Error"],"sources":["../../../src/components/tree-view/tree-view.ts"],"sourcesContent":["import { InjectionKey, Ref, inject, provide, ref, shallowRef } from 'vue';\n\n\n\nimport { NodeState } from '@/components/tree-view/types';\nimport { useModelDuplex } from '@/composables';\nimport { CandidateKey } from '@/types';\nimport { getObjectValueByPath } from '@/util';\n\n\nexport const Y_TREE_VIEW: InjectionKey<{\n register: (key: CandidateKey, vnode: any) => void;\n updateExpanded: (key: CandidateKey, to: boolean) => void;\n updateActive: (key: CandidateKey, to: boolean, event?: MouseEvent) => void;\n updateSelected: (key: CandidateKey, to: boolean) => void;\n searchLoading: Ref<boolean>;\n isExcluded: (key: CandidateKey) => boolean;\n emitExpanded: () => void;\n emitActive: () => void;\n emitSelected: () => void;\n}> = Symbol.for('YTreeView');\n\n// TODO: props type\nexport function provideTreeView(props: any) {\n const nodes = ref<Record<CandidateKey, NodeState>>({});\n const expanded = useModelDuplex(props, 'expanded');\n const active = useModelDuplex(props, 'active');\n const selected = useModelDuplex(props, 'selected');\n\n const expandedSet = ref(new Set<CandidateKey>());\n const selectedSet = ref(new Set<CandidateKey>());\n const activeSet = ref(new Set<CandidateKey>());\n const searchLoading = shallowRef(false);\n const excludedSet = ref(new Set<CandidateKey>());\n\n // Utils\n function getDescendants(key: CandidateKey) {\n const descendants: CandidateKey[] = [];\n const { childKeys } = nodes.value[key];\n descendants.push(...childKeys);\n const remains: CandidateKey[] = childKeys.slice();\n\n while (remains.length > 0) {\n const childKey: CandidateKey = remains.splice(0, 1)[0];\n const item = nodes.value[childKey];\n if (item) {\n descendants.push(...item.childKeys);\n remains.push(...item.childKeys);\n }\n }\n\n return descendants;\n }\n\n // Search\n function isExcluded(key: CandidateKey) {\n return !!props.search && excludedSet.value.has(key);\n }\n\n //\n function issueVnodeState(key: CandidateKey) {\n const node = nodes.value[key];\n if (node?.vnode) {\n node.vnode.active = node.active;\n node.vnode.selected = node.selected;\n node.vnode.indeterminate = node.indeterminate;\n node.vnode.expanded = node.expanded;\n }\n }\n\n // Update\n function updateExpanded(key: CandidateKey, to: boolean) {\n if (!(key in nodes.value)) return;\n const node = nodes.value[key];\n const children = getObjectValueByPath(\n node.item,\n props.itemChildren as string,\n );\n if (Array.isArray(children) && children.length > 0) {\n to ? expandedSet.value.add(key) : expandedSet.value.delete(key);\n node.expanded = to;\n issueVnodeState(key);\n }\n }\n\n function updateActive(key: CandidateKey, to: boolean, event?: MouseEvent) {\n if (!(key in nodes.value)) return;\n const node = nodes.value[key];\n let inactiveKey = !to ? key : '';\n if (!props.multipleActive && to && !activeSet.value.has(key)) {\n [inactiveKey] = [...activeSet.value];\n }\n if (to) {\n activeSet.value.add(key);\n node.active = true;\n issueVnodeState(key);\n } else {\n if (\n props.requiredActive &&\n activeSet.value.size === 1 &&\n key === inactiveKey\n ) {\n issueVnodeState(key);\n return;\n }\n }\n if (inactiveKey && inactiveKey in nodes.value) {\n activeSet.value.delete(inactiveKey);\n nodes.value[inactiveKey].active = false;\n issueVnodeState(inactiveKey);\n }\n\n if (\n props.activeSingleModifier &&\n event?.getModifierState(props.activeSingleModifier)\n ) {\n return;\n }\n\n if (\n props.multipleActive &&\n (!props.onlyEventActiveStrategy ||\n (props.onlyEventActiveStrategy && event)) &&\n (props.activeStrategy === 'cascade' ||\n props.activeStrategy === 'relative')\n ) {\n for (const descendant of getDescendants(key)) {\n if (descendant in nodes.value) {\n setActive(descendant, to);\n }\n }\n if (props.activeStrategy === 'relative') {\n let grand: CandidateKey | null = node.parentKey;\n do {\n const parentKey = grand;\n grand = null;\n if (!parentKey) continue;\n const parent = nodes.value[parentKey];\n if (!parent) continue;\n const all = isChildrenAll(parentKey, 'active', to);\n if (all || !to) {\n setActive(parentKey, to);\n if (parent.parentKey) {\n grand = parent.parentKey;\n }\n }\n } while (grand != null);\n }\n }\n }\n\n function updateSelected(key: CandidateKey, to: boolean) {\n if (!(key in nodes.value)) return;\n const node = nodes.value[key];\n\n if (to) {\n selectedSet.value.add(key);\n node.selected = true;\n }\n\n if (!to && key in nodes.value) {\n selectedSet.value.delete(key);\n nodes.value[key].selected = false;\n issueVnodeState(key);\n }\n\n if (props.selectStrategy === 'cascade') {\n for (const descendant of getDescendants(key)) {\n if (descendant in nodes.value) {\n to\n ? selectedSet.value.add(descendant)\n : selectedSet.value.delete(descendant);\n nodes.value[descendant].selected = to;\n issueVnodeState(descendant);\n }\n }\n }\n }\n\n function isChildrenAll(key: CandidateKey, stateKey: string, to: boolean) {\n const node = nodes.value[key];\n if (!node) return false;\n const { childKeys } = node;\n return childKeys.every((childKey) => {\n return (nodes.value[childKey] as any)?.[stateKey] === to;\n });\n }\n\n function setActive(key: CandidateKey, to: boolean) {\n to ? activeSet.value.add(key) : activeSet.value.delete(key);\n nodes.value[key].active = to;\n issueVnodeState(key);\n }\n\n // Emit\n function emitExpanded() {\n const arr = [...expandedSet.value];\n expanded.value = props.returnItem\n ? arr.map((key) => nodes.value[key].item)\n : arr;\n }\n\n function emitActive() {\n const arr = [...activeSet.value];\n active.value = props.returnItem\n ? arr.map((key) => nodes.value[key].item)\n : arr;\n }\n\n function emitSelected() {\n const arr = [...selectedSet.value];\n selected.value = props.returnItem\n ? arr.map((key) => nodes.value[key].item)\n : arr;\n }\n\n // Inject\n function register(key: CandidateKey, vnode: any) {\n if (nodes.value[key]) {\n nodes.value[key].vnode = vnode;\n }\n\n issueVnodeState(key);\n }\n\n provide(Y_TREE_VIEW, {\n register,\n updateExpanded,\n updateActive,\n updateSelected,\n searchLoading,\n isExcluded,\n emitExpanded,\n emitActive,\n emitSelected,\n });\n\n return {\n nodes,\n expanded,\n active,\n selected,\n issueVnodeState,\n updateExpanded,\n updateActive,\n updateSelected,\n emitExpanded,\n emitActive,\n emitSelected,\n expandedSet,\n selectedSet,\n activeSet,\n searchLoading,\n excludedSet,\n isExcluded,\n };\n}\n\nexport function useTreeView() {\n const instance = inject(Y_TREE_VIEW);\n if (!instance) throw new Error('Not found provided YTreeView');\n return instance;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tree-view.js","names":["computed","inject","provide","ref","shallowRef","useModelDuplex","getObjectValueByPath","Y_TREE_VIEW","Symbol","for","provideTreeView","props","nodes","expanded","active","selected","expandedSet","Set","selectedSet","activeSet","searchLoading","excludedSet","selectedState","all","some","key","children","every","child","value","has","getDescendants","descendants","childKeys","push","remains","slice","length","childKey","splice","item","isExcluded","search","issueVnodeState","node","vnode","indeterminate","updateExpanded","to","itemChildren","Array","isArray","add","delete","updateActive","event","inactiveKey","multipleActive","requiredActive","size","activeSingleModifier","getModifierState","onlyEventActiveStrategy","activeStrategy","descendant","setActive","grand","parentKey","parent","isChildrenAll","updateSelected","selectStrategy","setSelected","stateKey","isChildrenSome","emitExpanded","arr","returnItem","map","emitActive","emitSelected","register","useTreeView","instance","Error"],"sources":["../../../src/components/tree-view/tree-view.ts"],"sourcesContent":["import {\n type ComputedRef,\n computed,\n type InjectionKey,\n inject,\n provide,\n type Ref,\n ref,\n shallowRef,\n} from 'vue';\n\nimport type { NodeState } from '@/components/tree-view/types';\nimport { useModelDuplex } from '@/composables';\nimport type { CandidateKey } from '@/types';\nimport { getObjectValueByPath } from '@/util';\n\nexport const Y_TREE_VIEW: InjectionKey<{\n register: (key: CandidateKey, vnode: any) => void;\n updateExpanded: (key: CandidateKey, to: boolean) => void;\n updateActive: (key: CandidateKey, to: boolean, event?: MouseEvent) => void;\n updateSelected: (key: CandidateKey, to: boolean) => void;\n searchLoading: Ref<boolean>;\n isExcluded: (key: CandidateKey) => boolean;\n emitExpanded: () => void;\n emitActive: () => void;\n emitSelected: () => void;\n isChildrenAll: (key: CandidateKey, stateKey: string, to: boolean) => boolean;\n isChildrenSome: (key: CandidateKey, stateKey: string) => boolean;\n selectedState: ComputedRef<\n (key: CandidateKey, children: CandidateKey[]) => { all: boolean; some: boolean }\n >;\n}> = Symbol.for('YTreeView');\n\n// TODO: props type\nexport function provideTreeView(props: any) {\n const nodes = ref<Record<CandidateKey, NodeState>>({});\n const expanded = useModelDuplex(props, 'expanded');\n const active = useModelDuplex(props, 'active');\n const selected = useModelDuplex(props, 'selected');\n\n const expandedSet = ref(new Set<CandidateKey>());\n const selectedSet = ref(new Set<CandidateKey>());\n const activeSet = ref(new Set<CandidateKey>());\n const searchLoading = shallowRef(false);\n const excludedSet = ref(new Set<CandidateKey>());\n\n const selectedState = computed(() => {\n let all = false;\n let some = false;\n\n return (key: CandidateKey, children: CandidateKey[]) => {\n all = children.every((child) => selectedSet.value.has(child));\n some = getDescendants(key).some((child) => selectedSet.value.has(child));\n return {\n all: all,\n some: some,\n };\n };\n });\n\n // Utils\n function getDescendants(key: CandidateKey) {\n const descendants: CandidateKey[] = [];\n const { childKeys } = nodes.value[key];\n descendants.push(...childKeys);\n const remains: CandidateKey[] = childKeys.slice();\n\n while (remains.length > 0) {\n const childKey: CandidateKey = remains.splice(0, 1)[0];\n const item = nodes.value[childKey];\n if (item) {\n descendants.push(...item.childKeys);\n remains.push(...item.childKeys);\n }\n }\n\n return descendants;\n }\n\n // Search\n function isExcluded(key: CandidateKey) {\n return !!props.search && excludedSet.value.has(key);\n }\n\n //\n function issueVnodeState(key: CandidateKey) {\n const node = nodes.value[key];\n if (node?.vnode) {\n node.vnode.active = node.active;\n node.vnode.selected = node.selected;\n node.vnode.indeterminate = node.indeterminate;\n node.vnode.expanded = node.expanded;\n }\n }\n\n // Update\n function updateExpanded(key: CandidateKey, to: boolean) {\n if (!(key in nodes.value)) return;\n const node = nodes.value[key];\n const children = getObjectValueByPath(\n node.item,\n props.itemChildren as string,\n );\n if (Array.isArray(children) && children.length > 0) {\n to ? expandedSet.value.add(key) : expandedSet.value.delete(key);\n node.expanded = to;\n issueVnodeState(key);\n }\n }\n\n function updateActive(key: CandidateKey, to: boolean, event?: MouseEvent) {\n if (!(key in nodes.value)) return;\n const node = nodes.value[key];\n let inactiveKey = !to ? key : '';\n if (!props.multipleActive && to && !activeSet.value.has(key)) {\n [inactiveKey] = [...activeSet.value];\n }\n if (to) {\n activeSet.value.add(key);\n node.active = true;\n issueVnodeState(key);\n } else {\n if (\n props.requiredActive &&\n activeSet.value.size === 1 &&\n key === inactiveKey\n ) {\n issueVnodeState(key);\n return;\n }\n }\n if (inactiveKey && inactiveKey in nodes.value) {\n activeSet.value.delete(inactiveKey);\n nodes.value[inactiveKey].active = false;\n issueVnodeState(inactiveKey);\n }\n\n if (\n props.activeSingleModifier &&\n event?.getModifierState(props.activeSingleModifier)\n ) {\n return;\n }\n\n if (\n props.multipleActive &&\n (!props.onlyEventActiveStrategy ||\n (props.onlyEventActiveStrategy && event)) &&\n (props.activeStrategy === 'cascade' ||\n props.activeStrategy === 'relative')\n ) {\n for (const descendant of getDescendants(key)) {\n if (descendant in nodes.value) {\n setActive(descendant, to);\n }\n }\n if (props.activeStrategy === 'relative') {\n let grand: CandidateKey | null = node.parentKey;\n do {\n const parentKey = grand;\n grand = null;\n if (!parentKey) continue;\n const parent = nodes.value[parentKey];\n if (!parent) continue;\n const all = isChildrenAll(parentKey, 'active', to);\n if (all || !to) {\n setActive(parentKey, to);\n if (parent.parentKey) {\n grand = parent.parentKey;\n }\n }\n } while (grand != null);\n }\n }\n }\n\n function updateSelected(key: CandidateKey, to: boolean) {\n if (!(key in nodes.value)) return;\n const node = nodes.value[key];\n\n if (to) {\n if (props.selectStrategy !== 'leaf') {\n selectedSet.value.add(key);\n } else if (!node.childKeys.length) {\n selectedSet.value.add(key);\n }\n node.selected = true;\n }\n\n if (!to && key in nodes.value) {\n selectedSet.value.delete(key);\n nodes.value[key].selected = false;\n issueVnodeState(key);\n }\n\n if (\n props.selectStrategy === 'cascade' ||\n props.selectStrategy === 'relative' ||\n props.selectStrategy === 'leaf'\n ) {\n for (const descendant of getDescendants(key)) {\n if (descendant in nodes.value) {\n if (props.selectStrategy === 'leaf' && !!nodes.value[descendant]?.childKeys?.length) {\n continue;\n }\n setSelected(descendant, to);\n }\n }\n if (props.selectStrategy === 'relative') {\n let grand: CandidateKey | null = node.parentKey;\n do {\n const parentKey = grand;\n grand = null;\n if (!parentKey) continue;\n const parent = nodes.value[parentKey];\n if (!parent) continue;\n const all = isChildrenAll(parentKey, 'selected', to);\n if (all || !to) {\n setSelected(parentKey, to);\n if (parent.parentKey) {\n grand = parent.parentKey;\n }\n }\n } while (grand != null);\n }\n }\n }\n\n function isChildrenAll(key: CandidateKey, stateKey: string, to: boolean) {\n const node = nodes.value[key];\n if (!node) return false;\n const { childKeys } = node;\n return childKeys.every((childKey) => {\n return (nodes.value[childKey] as any)?.[stateKey] === to;\n });\n }\n\n function isChildrenSome(key: CandidateKey, stateKey: string) {\n const node = nodes.value[key];\n if (!node) return false;\n const { childKeys } = node;\n return childKeys.some((childKey) => {\n return (nodes.value[childKey] as any)?.[stateKey] === true;\n });\n }\n\n function setActive(key: CandidateKey, to: boolean) {\n to ? activeSet.value.add(key) : activeSet.value.delete(key);\n nodes.value[key].active = to;\n issueVnodeState(key);\n }\n\n function setSelected(key: CandidateKey, to: boolean) {\n to ? selectedSet.value.add(key) : selectedSet.value.delete(key);\n nodes.value[key].selected = to;\n issueVnodeState(key);\n }\n\n // Emit\n function emitExpanded() {\n const arr = [...expandedSet.value];\n expanded.value = props.returnItem\n ? arr.map((key) => nodes.value[key].item)\n : arr;\n }\n\n function emitActive() {\n const arr = [...activeSet.value];\n active.value = props.returnItem\n ? arr.map((key) => nodes.value[key].item)\n : arr;\n }\n\n function emitSelected() {\n const arr = [...selectedSet.value];\n selected.value = props.returnItem\n ? arr.map((key) => nodes.value[key].item)\n : arr;\n }\n\n // Inject\n function register(key: CandidateKey, vnode: any) {\n if (nodes.value[key]) {\n nodes.value[key].vnode = vnode;\n }\n\n issueVnodeState(key);\n }\n\n provide(Y_TREE_VIEW, {\n register,\n updateExpanded,\n updateActive,\n updateSelected,\n searchLoading,\n isExcluded,\n emitExpanded,\n emitActive,\n emitSelected,\n isChildrenAll,\n isChildrenSome,\n selectedState,\n });\n\n return {\n nodes,\n expanded,\n active,\n selected,\n issueVnodeState,\n updateExpanded,\n updateActive,\n updateSelected,\n emitExpanded,\n emitActive,\n emitSelected,\n expandedSet,\n selectedSet,\n activeSet,\n searchLoading,\n excludedSet,\n isExcluded,\n selectedState,\n };\n}\n\nexport function useTreeView() {\n const instance = inject(Y_TREE_VIEW);\n if (!instance) throw new Error('Not found provided YTreeView');\n return instance;\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":[],"sources":["../../../src/components/tree-view/types.ts"],"sourcesContent":["import { type ComponentPublicInstance } from 'vue';\n\nimport type { CandidateKey } from '@/types';\n\nexport interface ItemState {\n selected: boolean;\n indeterminate: boolean;\n active: boolean;\n expanded: boolean;\n}\n\nexport interface NodeState extends ItemState {\n childKeys: CandidateKey[];\n item: any;\n parentKey: null | CandidateKey;\n vnode
|
|
1
|
+
{"version":3,"file":"types.js","names":[],"sources":["../../../src/components/tree-view/types.ts"],"sourcesContent":["import { type ComponentPublicInstance } from 'vue';\r\n\r\nimport type { CandidateKey } from '@/types';\r\n\r\nexport interface ItemState {\r\n selected: boolean;\r\n indeterminate: boolean;\r\n active: boolean;\r\n expanded: boolean;\r\n}\r\n\r\nexport interface NodeState extends ItemState {\r\n childKeys: CandidateKey[];\r\n item: any;\r\n parentKey: null | CandidateKey;\r\n vnode: null | (ComponentPublicInstance & ItemState);\r\n level: number;\r\n}\r\n\r\nexport type TreeviewFilterFn = (\r\n item: any,\r\n search: string,\r\n itemText: string,\r\n) => boolean;\r\n"],"mappings":"","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","names":["getObjectValueByPath","getKeys","items","itemKey","childrenKey","keys","remains","slice","length","item","splice","key","push","children","Array","isArray","filterTreeItem","search","textKey","text","toLocaleLowerCase","indexOf","filterTreeItems","filter","idKey","excluded","match","i","add"],"sources":["../../../src/components/tree-view/util.ts"],"sourcesContent":["import { CandidateKey } from '../../types';\
|
|
1
|
+
{"version":3,"file":"util.js","names":["getObjectValueByPath","getKeys","items","itemKey","childrenKey","keys","remains","slice","length","item","splice","key","push","children","Array","isArray","filterTreeItem","search","textKey","text","toLocaleLowerCase","indexOf","filterTreeItems","filter","idKey","excluded","match","i","add"],"sources":["../../../src/components/tree-view/util.ts"],"sourcesContent":["import { CandidateKey } from '../../types';\nimport { getObjectValueByPath } from '../../util/common';\nimport { TreeviewFilterFn } from './types';\n\nexport function getKeys(items: any[], itemKey: string, childrenKey: string) {\n const keys: CandidateKey[] = [];\n const remains: any[] = items.slice();\n\n while (remains.length > 0) {\n const item = remains.splice(0, 1);\n const key = getObjectValueByPath(item, itemKey);\n keys.push(key);\n const children = getObjectValueByPath(item, childrenKey);\n if (Array.isArray(children)) {\n remains.push(...children);\n }\n }\n\n return keys;\n}\n\nexport function filterTreeItem(\n item: object,\n search: string,\n textKey: string,\n): boolean {\n const text = getObjectValueByPath(item, textKey);\n\n return text?.toLocaleLowerCase().indexOf(search.toLocaleLowerCase()) > -1;\n}\n\nexport function filterTreeItems(\n filter: TreeviewFilterFn,\n item: any,\n search: string,\n idKey: string,\n textKey: string,\n childrenKey: string,\n excluded: Set<CandidateKey>,\n): boolean {\n const children = getObjectValueByPath(item, childrenKey);\n\n if (children) {\n let match = false;\n for (let i = 0; i < children.length; i++) {\n if (\n filterTreeItems(\n filter,\n children[i],\n search,\n idKey,\n textKey,\n childrenKey,\n excluded,\n )\n ) {\n match = true;\n }\n }\n\n if (match) {\n return true;\n } else if (filter(item, search, textKey)) {\n return true;\n }\n } else if (filter(item, search, textKey)) {\n return true;\n }\n\n excluded.add(getObjectValueByPath(item, idKey));\n\n return false;\n}\n"],"mappings":"SACSA,oBAAoB;AAG7B,OAAO,SAASC,OAAOA,CAACC,KAAY,EAAEC,OAAe,EAAEC,WAAmB,EAAE;EAC1E,MAAMC,IAAoB,GAAG,EAAE;EAC/B,MAAMC,OAAc,GAAGJ,KAAK,CAACK,KAAK,CAAC,CAAC;EAEpC,OAAOD,OAAO,CAACE,MAAM,GAAG,CAAC,EAAE;IACzB,MAAMC,IAAI,GAAGH,OAAO,CAACI,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;IACjC,MAAMC,GAAG,GAAGX,oBAAoB,CAACS,IAAI,EAAEN,OAAO,CAAC;IAC/CE,IAAI,CAACO,IAAI,CAACD,GAAG,CAAC;IACd,MAAME,QAAQ,GAAGb,oBAAoB,CAACS,IAAI,EAAEL,WAAW,CAAC;IACxD,IAAIU,KAAK,CAACC,OAAO,CAACF,QAAQ,CAAC,EAAE;MAC3BP,OAAO,CAACM,IAAI,CAAC,GAAGC,QAAQ,CAAC;IAC3B;EACF;EAEA,OAAOR,IAAI;AACb;AAEA,OAAO,SAASW,cAAcA,CAC5BP,IAAY,EACZQ,MAAc,EACdC,OAAe,EACN;EACT,MAAMC,IAAI,GAAGnB,oBAAoB,CAACS,IAAI,EAAES,OAAO,CAAC;EAEhD,OAAOC,IAAI,EAAEC,iBAAiB,CAAC,CAAC,CAACC,OAAO,CAACJ,MAAM,CAACG,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC3E;AAEA,OAAO,SAASE,eAAeA,CAC7BC,MAAwB,EACxBd,IAAS,EACTQ,MAAc,EACdO,KAAa,EACbN,OAAe,EACfd,WAAmB,EACnBqB,QAA2B,EAClB;EACT,MAAMZ,QAAQ,GAAGb,oBAAoB,CAACS,IAAI,EAAEL,WAAW,CAAC;EAExD,IAAIS,QAAQ,EAAE;IACZ,IAAIa,KAAK,GAAG,KAAK;IACjB,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGd,QAAQ,CAACL,MAAM,EAAEmB,CAAC,EAAE,EAAE;MACxC,IACEL,eAAe,CACbC,MAAM,EACNV,QAAQ,CAACc,CAAC,CAAC,EACXV,MAAM,EACNO,KAAK,EACLN,OAAO,EACPd,WAAW,EACXqB,QACF,CAAC,EACD;QACAC,KAAK,GAAG,IAAI;MACd;IACF;IAEA,IAAIA,KAAK,EAAE;MACT,OAAO,IAAI;IACb,CAAC,MAAM,IAAIH,MAAM,CAACd,IAAI,EAAEQ,MAAM,EAAEC,OAAO,CAAC,EAAE;MACxC,OAAO,IAAI;IACb;EACF,CAAC,MAAM,IAAIK,MAAM,CAACd,IAAI,EAAEQ,MAAM,EAAEC,OAAO,CAAC,EAAE;IACxC,OAAO,IAAI;EACb;EAEAO,QAAQ,CAACG,GAAG,CAAC5B,oBAAoB,CAACS,IAAI,EAAEe,KAAK,CAAC,CAAC;EAE/C,OAAO,KAAK;AACd","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"choice-link.js","names":["nextTick","watch","useChoiceByLink","link","select","isActive","value","neo","isLink","immediate"],"sources":["../../src/composables/choice-link.ts"],"sourcesContent":["import { nextTick, watch } from 'vue';\n\nimport type { UseLink } from './vue-router';\n\nexport function useChoiceByLink(\n link: UseLink,\n select?: (value: boolean, event?: Event) => void,\n) {\n watch(\n () => link.isActive?.value,\n (neo) => {\n if (link.isLink.value && neo && select) {\n nextTick(() => {\n select(true);\n });\n }\n },\n { immediate: true },\n );\n}\n"],"mappings":"AAAA,SAASA,QAAQ,EAAEC,KAAK,QAAQ,KAAK;AAIrC,OAAO,SAASC,eAAeA,CAC7BC,IAAa,EACbC,MAAgD,EAChD;EACAH,KAAK,CACH,MAAME,IAAI,CAACE,QAAQ,EAAEC,KAAK,EACzBC,GAAG,IAAK;IACP,IAAIJ,IAAI,CAACK,MAAM,CAACF,KAAK,IAAIC,GAAG,IAAIH,MAAM,EAAE;MACtCJ,QAAQ,CAAC,MAAM;QACbI,MAAM,CAAC,IAAI,CAAC;MACd,CAAC,CAAC;IACJ;EACF,CAAC,EACD;IAAEK,SAAS,EAAE;EAAK,CACpB,CAAC;AACH"}
|
|
1
|
+
{"version":3,"file":"choice-link.js","names":["nextTick","watch","useChoiceByLink","link","select","isActive","value","neo","isLink","immediate"],"sources":["../../src/composables/choice-link.ts"],"sourcesContent":["import { nextTick, watch } from 'vue';\n\nimport type { UseLink } from './vue-router';\n\nexport function useChoiceByLink(\n link: UseLink,\n select?: (value: boolean, event?: Event) => void,\n) {\n watch(\n () => link.isActive?.value,\n (neo) => {\n if (link.isLink.value && neo && select) {\n nextTick(() => {\n select(true);\n });\n }\n },\n { immediate: true },\n );\n}\n"],"mappings":"AAAA,SAASA,QAAQ,EAAEC,KAAK,QAAQ,KAAK;AAIrC,OAAO,SAASC,eAAeA,CAC7BC,IAAa,EACbC,MAAgD,EAChD;EACAH,KAAK,CACH,MAAME,IAAI,CAACE,QAAQ,EAAEC,KAAK,EACzBC,GAAG,IAAK;IACP,IAAIJ,IAAI,CAACK,MAAM,CAACF,KAAK,IAAIC,GAAG,IAAIH,MAAM,EAAE;MACtCJ,QAAQ,CAAC,MAAM;QACbI,MAAM,CAAC,IAAI,CAAC;MACd,CAAC,CAAC;IACJ;EACF,CAAC,EACD;IAAEK,SAAS,EAAE;EAAK,CACpB,CAAC;AACH","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"choice.js","names":["computed","getCurrentInstance","inject","onBeforeUnmount","onMounted","provide","reactive","toRef","watch","wrapInArray","deepEqual","findChildrenWithProvide","getUid","propsFactory","useModelDuplex","pressChoicePropsOptions","modelValue","type","default","undefined","multiple","Boolean","mandatory","String","max","Number","selectedClass","disabled","returnItem","pressChoiceItemPropsOptions","value","useChoiceItem","props","injectKey","required","arguments","length","vm","Error","id","Symbol","for","description","choiceProvider","register","unregister","isSelected","emit","toggle","select","provider","useChoice","isUnmounted","items","selected","v","getIds","arr","getValues","groupVm","item","unwrapped","key","children","vnode","index","indexOf","splice","push","forceMandatoryValue","findIndex","find","internalValue","slice","includes","step","offset","currentId","currentIndex","i","newIndex","newItem","state","prev","next","getItemIndex","ids","forEach","itemByIndex","values","itemIndex"],"sources":["../../src/composables/choice.ts"],"sourcesContent":["import type {\r\n ComponentInternalInstance,\r\n ComputedRef,\r\n ExtractPropTypes,\r\n InjectionKey,\r\n PropType,\r\n Ref,\r\n UnwrapRef,\r\n} from 'vue';\r\nimport {\r\n computed,\r\n getCurrentInstance,\r\n inject,\r\n onBeforeUnmount,\r\n onMounted,\r\n provide,\r\n reactive,\r\n toRef,\r\n watch,\r\n} from 'vue';\r\n\r\nimport { wrapInArray } from '@/util/array';\r\nimport { deepEqual } from '@/util/common';\r\nimport {\r\n findChildrenWithProvide,\r\n getUid,\r\n propsFactory,\r\n} from '@/util/component';\r\n\r\nimport { useModelDuplex } from './communication';\r\n\r\nexport interface ChoiceItem {\r\n id: number;\r\n value: Ref<unknown>;\r\n disabled: Ref<boolean | undefined>;\r\n}\r\n\r\nexport interface ChoiceProps {\r\n disabled: boolean;\r\n modelValue: unknown;\r\n multiple?: boolean;\r\n mandatory?: boolean | 'force' | undefined;\r\n max?: number | undefined;\r\n selectedClass?: string | undefined;\r\n 'onUpdate:modelValue': ((value: unknown) => void) | undefined;\r\n}\r\n\r\nexport interface ChoiceProvide {\r\n register: (item: ChoiceItem, instance: ComponentInternalInstance) => void;\r\n unregister: (id: number) => void;\r\n select: (id: number, value: boolean) => void;\r\n selected: Ref<Readonly<number[]>>;\r\n selectedClass: Ref<string | undefined>;\r\n isSelected: (id: number) => boolean;\r\n disabled: Ref<boolean | undefined>;\r\n getItemIndex: (value: unknown) => number;\r\n prev: () => void;\r\n next: () => void;\r\n items: ComputedRef<\r\n { id: number; value: unknown; disabled: boolean | undefined }[]\r\n >;\r\n}\r\n\r\nexport interface ChoiceItemProvide {\r\n id: number;\r\n isSelected: Ref<boolean>;\r\n toggle: () => void;\r\n select: (value: boolean) => void;\r\n selectedClass: Ref<(string | undefined)[] | false>;\r\n value: Ref<unknown>;\r\n disabled: Ref<boolean | undefined>;\r\n provider: ChoiceProvide;\r\n}\r\n\r\nexport const pressChoicePropsOptions = propsFactory(\r\n {\r\n modelValue: {\r\n type: null,\r\n default: undefined,\r\n },\r\n multiple: Boolean,\r\n mandatory: [Boolean, String] as PropType<boolean | 'force'>,\r\n max: Number,\r\n selectedClass: String as PropType<string>,\r\n disabled: Boolean,\r\n returnItem: Boolean as PropType<boolean>,\r\n },\r\n 'choice',\r\n);\r\n\r\nexport const pressChoiceItemPropsOptions = propsFactory(\r\n {\r\n value: null,\r\n disabled: Boolean,\r\n selectedClass: String,\r\n },\r\n 'choice-item',\r\n);\r\n\r\nexport interface ChoiceItemProps\r\n extends ExtractPropTypes<ReturnType<typeof pressChoiceItemPropsOptions>> {\r\n 'onChoice:selected': ((val: { value: boolean }) => void) | undefined;\r\n}\r\n\r\nexport function useChoiceItem(\r\n props: ChoiceItemProps,\r\n injectKey: InjectionKey<ChoiceProvide>,\r\n required?: true,\r\n): ChoiceItemProvide;\r\nexport function useChoiceItem(\r\n props: ChoiceItemProps,\r\n injectKey: InjectionKey<ChoiceProvide>,\r\n required: false,\r\n): ChoiceItemProvide | null;\r\nexport function useChoiceItem(\r\n props: ChoiceItemProps,\r\n injectKey: InjectionKey<ChoiceProvide>,\r\n required = true,\r\n): ChoiceItemProvide | null {\r\n const vm = getCurrentInstance();\r\n\r\n if (!vm) {\r\n throw new Error(\r\n '\"useChoiceItem\" must be used inside a component setup function',\r\n );\r\n }\r\n\r\n const id = getUid() as number;\r\n\r\n provide(Symbol.for(`${injectKey.description}:id`), id);\r\n\r\n const choiceProvider = inject(injectKey, null);\r\n\r\n if (!choiceProvider) {\r\n if (!required) return choiceProvider as null;\r\n\r\n throw new Error(`Not found provider`);\r\n }\r\n\r\n const value = toRef(props, 'value');\r\n const disabled = computed(\r\n () => !!(choiceProvider.disabled.value || props.disabled),\r\n );\r\n\r\n choiceProvider.register(\r\n {\r\n id,\r\n value,\r\n disabled,\r\n },\r\n vm,\r\n );\r\n\r\n onBeforeUnmount(() => {\r\n choiceProvider.unregister(id);\r\n });\r\n\r\n const isSelected = computed(() => {\r\n return choiceProvider.isSelected(id);\r\n });\r\n\r\n const selectedClass = computed(\r\n () =>\r\n isSelected.value && [\r\n choiceProvider.selectedClass.value,\r\n props.selectedClass,\r\n ],\r\n );\r\n\r\n watch(isSelected, (value) => {\r\n vm.emit('choice:selected', { value });\r\n });\r\n\r\n return {\r\n id,\r\n isSelected,\r\n toggle: () => choiceProvider.select(id, !isSelected.value),\r\n select: (value: boolean) => choiceProvider.select(id, value),\r\n selectedClass,\r\n value,\r\n disabled,\r\n provider: choiceProvider,\r\n };\r\n}\r\n\r\nexport function useChoice(\r\n props: ChoiceProps,\r\n injectKey: InjectionKey<ChoiceProvide>,\r\n) {\r\n let isUnmounted = false;\r\n const items = reactive<ChoiceItem[]>([]);\r\n const selected = useModelDuplex(\r\n props,\r\n 'modelValue',\r\n [],\r\n (v) => {\r\n if (v == null) return [];\r\n\r\n return getIds(items, wrapInArray(v));\r\n },\r\n (v) => {\r\n const arr = getValues(items, v);\r\n\r\n return props.multiple ? arr : arr[0];\r\n },\r\n );\r\n\r\n const groupVm = getCurrentInstance();\r\n\r\n function register(item: ChoiceItem, vm: ComponentInternalInstance) {\r\n const unwrapped = item as unknown as UnwrapRef<ChoiceItem>;\r\n\r\n const key = Symbol.for(`${injectKey.description}:id`);\r\n const children = findChildrenWithProvide(key, groupVm?.vnode);\r\n const index = children.indexOf(vm);\r\n\r\n if (index > -1) {\r\n items.splice(index, 0, unwrapped);\r\n } else {\r\n items.push(unwrapped);\r\n }\r\n }\r\n\r\n function unregister(id: number) {\r\n if (isUnmounted) return;\r\n forceMandatoryValue();\r\n const index = items.findIndex((item) => item.id === id);\r\n items.splice(index, 1);\r\n }\r\n\r\n function forceMandatoryValue() {\r\n const item = items.find((item) => !item.disabled);\r\n if (item && props.mandatory === 'force' && !selected.value.length) {\r\n selected.value = [item.id];\r\n }\r\n }\r\n\r\n onMounted(() => {\r\n forceMandatoryValue();\r\n });\r\n\r\n onBeforeUnmount(() => {\r\n isUnmounted = true;\r\n });\r\n\r\n function select(id: number, value?: boolean) {\r\n const item = items.find((item) => item.id === id);\r\n if (value && item?.disabled) return;\r\n\r\n if (props.multiple) {\r\n const internalValue = selected.value.slice();\r\n const index = internalValue.findIndex((v: any) => v === id);\r\n const isSelected = ~index;\r\n value = value ?? !isSelected;\r\n if (isSelected && props.mandatory && internalValue.length <= 1) return;\r\n if (\r\n !isSelected &&\r\n props.max != null &&\r\n internalValue.length + 1 > props.max\r\n )\r\n return;\r\n\r\n if (index < 0 && value) internalValue.push(id);\r\n else if (index >= 0 && !value) internalValue.splice(index, 1);\r\n\r\n selected.value = internalValue;\r\n } else {\r\n const isSelected = selected.value.includes(id);\r\n if (props.mandatory && isSelected) return;\r\n selected.value = value ?? !isSelected ? [id] : [];\r\n }\r\n }\r\n\r\n function step(offset: number) {\r\n if (props.multiple) {\r\n }\r\n\r\n if (!selected.value.length) {\r\n const item = items.find((item) => !item.disabled);\r\n item && (selected.value = [item.id]);\r\n } else {\r\n const currentId = selected.value[0];\r\n const currentIndex = items.findIndex((i) => i.id === currentId);\r\n\r\n let newIndex = (currentIndex + offset) % items.length;\r\n let newItem = items[newIndex];\r\n\r\n while (newItem.disabled && newIndex !== currentIndex) {\r\n newIndex = (newIndex + offset) % items.length;\r\n newItem = items[newIndex];\r\n }\r\n\r\n if (newItem.disabled) return;\r\n\r\n selected.value = [items[newIndex].id];\r\n }\r\n }\r\n\r\n const state: ChoiceProvide = {\r\n register,\r\n unregister,\r\n selected,\r\n select,\r\n disabled: toRef(props, 'disabled'),\r\n prev: () => step(items.length - 1),\r\n next: () => step(1),\r\n isSelected: (id: number) => selected.value.includes(id),\r\n selectedClass: computed(() => props.selectedClass),\r\n items: computed(() => items),\r\n getItemIndex: (value: unknown) => getItemIndex(items, value),\r\n };\r\n\r\n provide(injectKey, state);\r\n\r\n return state;\r\n}\r\n\r\nfunction getItemIndex(items: UnwrapRef<ChoiceItem[]>, value: unknown) {\r\n const ids = getIds(items, [value]);\r\n\r\n if (!ids.length) return -1;\r\n\r\n return items.findIndex((item) => item.id === ids[0]);\r\n}\r\n\r\nfunction getIds(items: UnwrapRef<ChoiceItem[]>, modelValue: any[]) {\r\n const ids: number[] = [];\r\n\r\n modelValue.forEach((value) => {\r\n const item = items.find((item) => deepEqual(value, item.value));\r\n const itemByIndex = items[value];\r\n\r\n if (item?.value != null) {\r\n ids.push(item.id);\r\n } else if (itemByIndex != null) {\r\n ids.push(itemByIndex.id);\r\n }\r\n });\r\n\r\n return ids;\r\n}\r\n\r\nfunction getValues(items: UnwrapRef<ChoiceItem[]>, ids: any[]) {\r\n const values: unknown[] = [];\r\n ids.forEach((id) => {\r\n const itemIndex = items.findIndex((item) => item.id === id);\r\n if (~itemIndex) {\r\n const item = items[itemIndex];\r\n values.push(item.value != null ? item.value : itemIndex);\r\n }\r\n });\r\n\r\n return values;\r\n}\r\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"choice.js","names":["computed","getCurrentInstance","inject","onBeforeUnmount","onMounted","provide","reactive","toRef","watch","wrapInArray","deepEqual","findChildrenWithProvide","getUid","propsFactory","useModelDuplex","pressChoicePropsOptions","modelValue","type","default","undefined","multiple","Boolean","mandatory","String","max","Number","selectedClass","disabled","returnItem","pressChoiceItemPropsOptions","value","useChoiceItem","props","injectKey","required","arguments","length","vm","Error","id","Symbol","for","description","choiceProvider","register","unregister","isSelected","emit","toggle","select","provider","useChoice","isUnmounted","items","selected","v","getIds","arr","getValues","groupVm","item","unwrapped","key","children","vnode","index","indexOf","splice","push","forceMandatoryValue","findIndex","find","internalValue","slice","includes","step","offset","currentId","currentIndex","i","newIndex","newItem","state","prev","next","getItemIndex","ids","forEach","itemByIndex","values","itemIndex"],"sources":["../../src/composables/choice.ts"],"sourcesContent":["import type {\r\n ComponentInternalInstance,\r\n ComputedRef,\r\n ExtractPropTypes,\r\n InjectionKey,\r\n PropType,\r\n Ref,\r\n UnwrapRef,\r\n} from 'vue';\r\nimport {\r\n computed,\r\n getCurrentInstance,\r\n inject,\r\n onBeforeUnmount,\r\n onMounted,\r\n provide,\r\n reactive,\r\n toRef,\r\n watch,\r\n} from 'vue';\r\n\r\nimport { wrapInArray } from '@/util/array';\r\nimport { deepEqual } from '@/util/common';\r\nimport {\r\n findChildrenWithProvide,\r\n getUid,\r\n propsFactory,\r\n} from '@/util/component';\r\n\r\nimport { useModelDuplex } from './communication';\r\n\r\nexport interface ChoiceItem {\r\n id: number;\r\n value: Ref<unknown>;\r\n disabled: Ref<boolean | undefined>;\r\n}\r\n\r\nexport interface ChoiceProps {\r\n disabled: boolean;\r\n modelValue: unknown;\r\n multiple?: boolean;\r\n mandatory?: boolean | 'force' | undefined;\r\n max?: number | undefined;\r\n selectedClass?: string | undefined;\r\n 'onUpdate:modelValue': ((value: unknown) => void) | undefined;\r\n}\r\n\r\nexport interface ChoiceProvide {\r\n register: (item: ChoiceItem, instance: ComponentInternalInstance) => void;\r\n unregister: (id: number) => void;\r\n select: (id: number, value: boolean) => void;\r\n selected: Ref<Readonly<number[]>>;\r\n selectedClass: Ref<string | undefined>;\r\n isSelected: (id: number) => boolean;\r\n disabled: Ref<boolean | undefined>;\r\n getItemIndex: (value: unknown) => number;\r\n prev: () => void;\r\n next: () => void;\r\n items: ComputedRef<\r\n { id: number; value: unknown; disabled: boolean | undefined }[]\r\n >;\r\n}\r\n\r\nexport interface ChoiceItemProvide {\r\n id: number;\r\n isSelected: Ref<boolean>;\r\n toggle: () => void;\r\n select: (value: boolean) => void;\r\n selectedClass: Ref<(string | undefined)[] | false>;\r\n value: Ref<unknown>;\r\n disabled: Ref<boolean | undefined>;\r\n provider: ChoiceProvide;\r\n}\r\n\r\nexport const pressChoicePropsOptions = propsFactory(\r\n {\r\n modelValue: {\r\n type: null,\r\n default: undefined,\r\n },\r\n multiple: Boolean,\r\n mandatory: [Boolean, String] as PropType<boolean | 'force'>,\r\n max: Number,\r\n selectedClass: String as PropType<string>,\r\n disabled: Boolean,\r\n returnItem: Boolean as PropType<boolean>,\r\n },\r\n 'choice',\r\n);\r\n\r\nexport const pressChoiceItemPropsOptions = propsFactory(\r\n {\r\n value: null,\r\n disabled: Boolean,\r\n selectedClass: String,\r\n },\r\n 'choice-item',\r\n);\r\n\r\nexport interface ChoiceItemProps\r\n extends ExtractPropTypes<ReturnType<typeof pressChoiceItemPropsOptions>> {\r\n 'onChoice:selected': ((val: { value: boolean }) => void) | undefined;\r\n}\r\n\r\nexport function useChoiceItem(\r\n props: ChoiceItemProps,\r\n injectKey: InjectionKey<ChoiceProvide>,\r\n required?: true,\r\n): ChoiceItemProvide;\r\nexport function useChoiceItem(\r\n props: ChoiceItemProps,\r\n injectKey: InjectionKey<ChoiceProvide>,\r\n required: false,\r\n): ChoiceItemProvide | null;\r\nexport function useChoiceItem(\r\n props: ChoiceItemProps,\r\n injectKey: InjectionKey<ChoiceProvide>,\r\n required = true,\r\n): ChoiceItemProvide | null {\r\n const vm = getCurrentInstance();\r\n\r\n if (!vm) {\r\n throw new Error(\r\n '\"useChoiceItem\" must be used inside a component setup function',\r\n );\r\n }\r\n\r\n const id = getUid() as number;\r\n\r\n provide(Symbol.for(`${injectKey.description}:id`), id);\r\n\r\n const choiceProvider = inject(injectKey, null);\r\n\r\n if (!choiceProvider) {\r\n if (!required) return choiceProvider as null;\r\n\r\n throw new Error(`Not found provider`);\r\n }\r\n\r\n const value = toRef(props, 'value');\r\n const disabled = computed(\r\n () => !!(choiceProvider.disabled.value || props.disabled),\r\n );\r\n\r\n choiceProvider.register(\r\n {\r\n id,\r\n value,\r\n disabled,\r\n },\r\n vm,\r\n );\r\n\r\n onBeforeUnmount(() => {\r\n choiceProvider.unregister(id);\r\n });\r\n\r\n const isSelected = computed(() => {\r\n return choiceProvider.isSelected(id);\r\n });\r\n\r\n const selectedClass = computed(\r\n () =>\r\n isSelected.value && [\r\n choiceProvider.selectedClass.value,\r\n props.selectedClass,\r\n ],\r\n );\r\n\r\n watch(isSelected, (value) => {\r\n vm.emit('choice:selected', { value });\r\n });\r\n\r\n return {\r\n id,\r\n isSelected,\r\n toggle: () => choiceProvider.select(id, !isSelected.value),\r\n select: (value: boolean) => choiceProvider.select(id, value),\r\n selectedClass,\r\n value,\r\n disabled,\r\n provider: choiceProvider,\r\n };\r\n}\r\n\r\nexport function useChoice(\r\n props: ChoiceProps,\r\n injectKey: InjectionKey<ChoiceProvide>,\r\n) {\r\n let isUnmounted = false;\r\n const items = reactive<ChoiceItem[]>([]);\r\n const selected = useModelDuplex(\r\n props,\r\n 'modelValue',\r\n [],\r\n (v) => {\r\n if (v == null) return [];\r\n\r\n return getIds(items, wrapInArray(v));\r\n },\r\n (v) => {\r\n const arr = getValues(items, v);\r\n\r\n return props.multiple ? arr : arr[0];\r\n },\r\n );\r\n\r\n const groupVm = getCurrentInstance();\r\n\r\n function register(item: ChoiceItem, vm: ComponentInternalInstance) {\r\n const unwrapped = item as unknown as UnwrapRef<ChoiceItem>;\r\n\r\n const key = Symbol.for(`${injectKey.description}:id`);\r\n const children = findChildrenWithProvide(key, groupVm?.vnode);\r\n const index = children.indexOf(vm);\r\n\r\n if (index > -1) {\r\n items.splice(index, 0, unwrapped);\r\n } else {\r\n items.push(unwrapped);\r\n }\r\n }\r\n\r\n function unregister(id: number) {\r\n if (isUnmounted) return;\r\n forceMandatoryValue();\r\n const index = items.findIndex((item) => item.id === id);\r\n items.splice(index, 1);\r\n }\r\n\r\n function forceMandatoryValue() {\r\n const item = items.find((item) => !item.disabled);\r\n if (item && props.mandatory === 'force' && !selected.value.length) {\r\n selected.value = [item.id];\r\n }\r\n }\r\n\r\n onMounted(() => {\r\n forceMandatoryValue();\r\n });\r\n\r\n onBeforeUnmount(() => {\r\n isUnmounted = true;\r\n });\r\n\r\n function select(id: number, value?: boolean) {\r\n const item = items.find((item) => item.id === id);\r\n if (value && item?.disabled) return;\r\n\r\n if (props.multiple) {\r\n const internalValue = selected.value.slice();\r\n const index = internalValue.findIndex((v: any) => v === id);\r\n const isSelected = ~index;\r\n value = value ?? !isSelected;\r\n if (isSelected && props.mandatory && internalValue.length <= 1) return;\r\n if (\r\n !isSelected &&\r\n props.max != null &&\r\n internalValue.length + 1 > props.max\r\n )\r\n return;\r\n\r\n if (index < 0 && value) internalValue.push(id);\r\n else if (index >= 0 && !value) internalValue.splice(index, 1);\r\n\r\n selected.value = internalValue;\r\n } else {\r\n const isSelected = selected.value.includes(id);\r\n if (props.mandatory && isSelected) return;\r\n selected.value = (value ?? !isSelected) ? [id] : [];\r\n }\r\n }\r\n\r\n function step(offset: number) {\r\n if (props.multiple) {\r\n }\r\n\r\n if (!selected.value.length) {\r\n const item = items.find((item) => !item.disabled);\r\n item && (selected.value = [item.id]);\r\n } else {\r\n const currentId = selected.value[0];\r\n const currentIndex = items.findIndex((i) => i.id === currentId);\r\n\r\n let newIndex = (currentIndex + offset) % items.length;\r\n let newItem = items[newIndex];\r\n\r\n while (newItem.disabled && newIndex !== currentIndex) {\r\n newIndex = (newIndex + offset) % items.length;\r\n newItem = items[newIndex];\r\n }\r\n\r\n if (newItem.disabled) return;\r\n\r\n selected.value = [items[newIndex].id];\r\n }\r\n }\r\n\r\n const state: ChoiceProvide = {\r\n register,\r\n unregister,\r\n selected,\r\n select,\r\n disabled: toRef(props, 'disabled'),\r\n prev: () => step(items.length - 1),\r\n next: () => step(1),\r\n isSelected: (id: number) => selected.value.includes(id),\r\n selectedClass: computed(() => props.selectedClass),\r\n items: computed(() => items),\r\n getItemIndex: (value: unknown) => getItemIndex(items, value),\r\n };\r\n\r\n provide(injectKey, state);\r\n\r\n return state;\r\n}\r\n\r\nfunction getItemIndex(items: UnwrapRef<ChoiceItem[]>, value: unknown) {\r\n const ids = getIds(items, [value]);\r\n\r\n if (!ids.length) return -1;\r\n\r\n return items.findIndex((item) => item.id === ids[0]);\r\n}\r\n\r\nfunction getIds(items: UnwrapRef<ChoiceItem[]>, modelValue: any[]) {\r\n const ids: number[] = [];\r\n\r\n modelValue.forEach((value) => {\r\n const item = items.find((item) => deepEqual(value, item.value));\r\n const itemByIndex = items[value];\r\n\r\n if (item?.value != null) {\r\n ids.push(item.id);\r\n } else if (itemByIndex != null) {\r\n ids.push(itemByIndex.id);\r\n }\r\n });\r\n\r\n return ids;\r\n}\r\n\r\nfunction getValues(items: UnwrapRef<ChoiceItem[]>, ids: any[]) {\r\n const values: unknown[] = [];\r\n ids.forEach((id) => {\r\n const itemIndex = items.findIndex((item) => item.id === id);\r\n if (~itemIndex) {\r\n const item = items[itemIndex];\r\n values.push(item.value != null ? item.value : itemIndex);\r\n }\r\n });\r\n\r\n return values;\r\n}\r\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"communication.js","names":["computed","getCurrentInstance","ref","toRaw","watch","hasOwnProperty","kebabToCamel","toKebabCase","useToggleScope","useModelDuplex","props","prop","arguments","length","undefined","defaultValue","getIn","v","setOut","vm","kebabProp","property","txValue","getProp","isDefinedProp","registeredProps","vnode","value","model","get","set","neo","current","emit","Object","defineProperty","useProvided","provided","internal"],"sources":["../../src/composables/communication.ts"],"sourcesContent":["import { type Ref, computed, getCurrentInstance, ref, toRaw, watch } from 'vue';\
|
|
1
|
+
{"version":3,"file":"communication.js","names":["computed","getCurrentInstance","ref","toRaw","watch","hasOwnProperty","kebabToCamel","toKebabCase","useToggleScope","useModelDuplex","props","prop","arguments","length","undefined","defaultValue","getIn","v","setOut","vm","kebabProp","property","txValue","getProp","isDefinedProp","registeredProps","vnode","value","model","get","set","neo","current","emit","Object","defineProperty","useProvided","provided","internal"],"sources":["../../src/composables/communication.ts"],"sourcesContent":["import { type Ref, computed, getCurrentInstance, ref, toRaw, watch } from 'vue';\n\nimport { hasOwnProperty } from '@/util/common';\nimport { kebabToCamel, toKebabCase } from '@/util/string';\n\nimport { useToggleScope } from './scope';\n\nexport function useModelDuplex(\n props: any,\n prop: string = 'modelValue',\n defaultValue?: any,\n getIn: (value?: any) => any = (v: any) => v,\n setOut: (value: any) => any = (v: any) => v,\n) {\n const vm = getCurrentInstance()!;\n const kebabProp = toKebabCase(prop);\n const property = kebabProp === prop ? kebabToCamel(prop) : prop;\n const txValue = ref(\n props[property] !== undefined ? props[property] : defaultValue,\n );\n\n function getProp() {\n return props[property];\n }\n\n const isDefinedProp = computed(() => {\n getProp();\n const registeredProps = vm.vnode.props;\n return (\n (hasOwnProperty(registeredProps, kebabProp) ||\n hasOwnProperty(registeredProps, property)) &&\n (hasOwnProperty(registeredProps, `onUpdate:${kebabProp}`) ||\n hasOwnProperty(registeredProps, `onUpdate:${property}`))\n );\n });\n\n useToggleScope(\n () => !isDefinedProp.value,\n () => {\n watch(\n () => getProp(),\n (value) => {\n txValue.value = value;\n },\n );\n },\n );\n\n const model = computed({\n get(): any {\n return getIn(isDefinedProp.value ? getProp() : txValue.value);\n },\n set(value) {\n const neo = setOut(value);\n const current = toRaw(isDefinedProp.value ? getProp() : txValue.value);\n if (current === neo || getIn(current) === value) {\n return;\n }\n txValue.value = neo;\n vm?.emit(`update:${property}`, neo);\n },\n }) as any as Ref<any> & { readonly rxValue: any };\n\n Object.defineProperty(model, 'rxValue', {\n get: () => (isDefinedProp.value ? getProp() : txValue.value),\n });\n\n return model;\n}\n\nexport function useProvided<T>(props: any, prop: string, provided: Ref<T>) {\n const internal = useModelDuplex(props, prop, props[prop] ?? provided.value);\n\n watch(provided, (value) => {\n if (props[prop] == null) {\n internal.value = value;\n }\n });\n return internal;\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component.js","names":["getCurrentInstance","useRender","render","vm"],"sources":["../../src/composables/component.ts"],"sourcesContent":["import {\
|
|
1
|
+
{"version":3,"file":"component.js","names":["getCurrentInstance","useRender","render","vm"],"sources":["../../src/composables/component.ts"],"sourcesContent":["import {\n type ComponentInternalInstance,\n type VNode,\n getCurrentInstance,\n} from 'vue';\n\ninterface RedefinedComponentInternalInstance extends ComponentInternalInstance {\n render: () => VNode;\n}\n\nexport function useRender(render: () => VNode) {\n const vm = getCurrentInstance() as RedefinedComponentInternalInstance | null;\n if (vm) {\n vm.render = render;\n }\n}\n"],"mappings":"AAAA,SAGEA,kBAAkB,QACb,KAAK;AAMZ,OAAO,SAASC,SAASA,CAACC,MAAmB,EAAE;EAC7C,MAAMC,EAAE,GAAGH,kBAAkB,CAAC,CAA8C;EAC5E,IAAIG,EAAE,EAAE;IACNA,EAAE,CAACD,MAAM,GAAGA,MAAM;EACpB;AACF","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"arrangement.js","names":["applyArrangement","props","state","coordinate","coordinateStyles","contentEl","base","active","updateCoordinate"],"sources":["../../../src/composables/coordinate/arrangement.ts"],"sourcesContent":["import { type CSSProperties, type Ref } from 'vue';\
|
|
1
|
+
{"version":3,"file":"arrangement.js","names":["applyArrangement","props","state","coordinate","coordinateStyles","contentEl","base","active","updateCoordinate"],"sources":["../../../src/composables/coordinate/arrangement.ts"],"sourcesContent":["import { type CSSProperties, type Ref } from 'vue';\n\nimport { type Rect } from '@/util/rect';\n\nimport type { CoordinateState } from './types';\n\nexport function applyArrangement(\n props: any,\n state: CoordinateState,\n coordinate: Ref<Rect | undefined>,\n coordinateStyles: Ref<CSSProperties>,\n) {\n const { contentEl, base, active } = state;\n\n function updateCoordinate(): any {\n //\n }\n\n return {\n updateCoordinate,\n };\n}\n"],"mappings":"AAMA,OAAO,SAASA,gBAAgBA,CAC9BC,KAAU,EACVC,KAAsB,EACtBC,UAAiC,EACjCC,gBAAoC,EACpC;EACA,MAAM;IAAEC,SAAS;IAAEC,IAAI;IAAEC;EAAO,CAAC,GAAGL,KAAK;EAEzC,SAASM,gBAAgBA,CAAA,EAAQ;IAC/B;EAAA;EAGF,OAAO;IACLA;EACF,CAAC;AACH","ignoreList":[]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { onScopeDispose, ref, watch } from
|
|
1
|
+
import { onScopeDispose, ref, watch } from "vue";
|
|
2
2
|
import { propsFactory } from "../../util/component/index.js";
|
|
3
3
|
import { useToggleScope } from "../scope.js";
|
|
4
4
|
import { applyArrangement } from "./arrangement.js";
|
|
@@ -10,19 +10,19 @@ const coordinateStrategies = {
|
|
|
10
10
|
export const pressCoordinateProps = propsFactory({
|
|
11
11
|
coordinateStrategy: {
|
|
12
12
|
type: [String, Function],
|
|
13
|
-
default:
|
|
13
|
+
default: "arrangement"
|
|
14
14
|
},
|
|
15
15
|
position: {
|
|
16
16
|
type: String,
|
|
17
|
-
default:
|
|
17
|
+
default: "default"
|
|
18
18
|
},
|
|
19
19
|
align: {
|
|
20
20
|
type: String,
|
|
21
|
-
default:
|
|
21
|
+
default: "start"
|
|
22
22
|
},
|
|
23
23
|
origin: {
|
|
24
24
|
type: String,
|
|
25
|
-
default:
|
|
25
|
+
default: "auto"
|
|
26
26
|
},
|
|
27
27
|
offset: {
|
|
28
28
|
type: [Number, String, Array]
|
|
@@ -31,35 +31,45 @@ export const pressCoordinateProps = propsFactory({
|
|
|
31
31
|
type: [Number, String, Array],
|
|
32
32
|
default: 16
|
|
33
33
|
}
|
|
34
|
-
},
|
|
34
|
+
}, "Coordinate");
|
|
35
35
|
export function useCoordinate(props, state) {
|
|
36
36
|
const updateCoordinate = ref();
|
|
37
|
-
const
|
|
37
|
+
const coordination = ref({
|
|
38
|
+
side: '',
|
|
39
|
+
align: '',
|
|
40
|
+
offset: [0, 0],
|
|
41
|
+
rect: {
|
|
42
|
+
x: 0,
|
|
43
|
+
y: 0,
|
|
44
|
+
width: 0,
|
|
45
|
+
height: 0
|
|
46
|
+
}
|
|
47
|
+
});
|
|
38
48
|
const coordinateStyles = ref({});
|
|
39
49
|
useToggleScope(() => !!(state.active.value && props.coordinateStrategy), reset => {
|
|
40
50
|
watch(() => props.coordinateStrategy, reset);
|
|
41
51
|
onScopeDispose(() => {
|
|
42
52
|
updateCoordinate.value = undefined;
|
|
43
53
|
});
|
|
44
|
-
if (typeof props.coordinateStrategy ===
|
|
45
|
-
updateCoordinate.value = props.coordinateStrategy(props, state,
|
|
54
|
+
if (typeof props.coordinateStrategy === "function") {
|
|
55
|
+
updateCoordinate.value = props.coordinateStrategy(props, state, coordination, coordinateStyles)?.updateCoordinate;
|
|
46
56
|
} else {
|
|
47
57
|
const strategy = coordinateStrategies[props.coordinateStrategy];
|
|
48
|
-
updateCoordinate.value = strategy?.(props, state,
|
|
58
|
+
updateCoordinate.value = strategy?.(props, state, coordination, coordinateStyles)?.updateCoordinate;
|
|
49
59
|
}
|
|
50
60
|
});
|
|
51
|
-
window.addEventListener(
|
|
61
|
+
window.addEventListener("resize", onResize, {
|
|
52
62
|
passive: true
|
|
53
63
|
});
|
|
54
64
|
onScopeDispose(() => {
|
|
55
|
-
window.removeEventListener(
|
|
65
|
+
window.removeEventListener("resize", onResize);
|
|
56
66
|
updateCoordinate.value = undefined;
|
|
57
67
|
});
|
|
58
68
|
function onResize(e) {
|
|
59
69
|
updateCoordinate.value?.(e);
|
|
60
70
|
}
|
|
61
71
|
return {
|
|
62
|
-
|
|
72
|
+
coordination,
|
|
63
73
|
coordinateStyles,
|
|
64
74
|
updateCoordinate
|
|
65
75
|
};
|