@rotki/ui-library 2.15.0 → 2.16.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/accordions/accordion/RuiAccordion.js +7 -0
- package/dist/components/accordions/accordion/RuiAccordion.js.map +1 -0
- package/dist/components/accordions/accordion/RuiAccordion.vue.d.ts +9 -0
- package/dist/components/accordions/accordion/RuiAccordion.vue_vue_type_script_setup_true_lang.js +88 -0
- package/dist/components/accordions/accordion/RuiAccordion.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/accordions/accordions/RuiAccordions.js +7 -0
- package/dist/components/accordions/accordions/RuiAccordions.js.map +1 -0
- package/dist/components/accordions/accordions/RuiAccordions.vue_vue_type_script_setup_true_lang.js +67 -0
- package/dist/components/accordions/accordions/RuiAccordions.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/alerts/RuiAlert.js +7 -0
- package/dist/components/alerts/RuiAlert.js.map +1 -0
- package/dist/components/alerts/RuiAlert.vue_vue_type_script_setup_true_lang.js +330 -0
- package/dist/components/alerts/RuiAlert.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/buttons/button/RuiButton.js +7 -0
- package/dist/components/buttons/button/RuiButton.js.map +1 -0
- package/dist/components/buttons/button/RuiButton.vue.d.ts +3 -2
- package/dist/components/buttons/button/RuiButton.vue_vue_type_script_setup_true_lang.js +104 -0
- package/dist/components/buttons/button/RuiButton.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/buttons/button/button-props.d.ts +16 -0
- package/dist/components/buttons/button/button-props.js +20 -0
- package/dist/components/buttons/button/button-props.js.map +1 -0
- package/dist/components/buttons/button/button-styles.d.ts +229 -0
- package/dist/components/buttons/button/button-styles.js +342 -0
- package/dist/components/buttons/button/button-styles.js.map +1 -0
- package/dist/components/buttons/button-group/RuiButtonGroup.js +7 -0
- package/dist/components/buttons/button-group/RuiButtonGroup.js.map +1 -0
- package/dist/components/buttons/button-group/RuiButtonGroup.vue_vue_type_script_setup_true_lang.js +246 -0
- package/dist/components/buttons/button-group/RuiButtonGroup.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/calendar/RuiCalendar.js +7 -0
- package/dist/components/calendar/RuiCalendar.js.map +1 -0
- package/dist/components/calendar/RuiCalendar.vue_vue_type_script_setup_true_lang.js +151 -0
- package/dist/components/calendar/RuiCalendar.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/calendar/RuiCalendarGrid.js +7 -0
- package/dist/components/calendar/RuiCalendarGrid.js.map +1 -0
- package/dist/components/calendar/RuiCalendarGrid.vue_vue_type_script_setup_true_lang.js +155 -0
- package/dist/components/calendar/RuiCalendarGrid.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/calendar/RuiCalendarHeader.js +7 -0
- package/dist/components/calendar/RuiCalendarHeader.js.map +1 -0
- package/dist/components/calendar/RuiCalendarHeader.vue_vue_type_script_setup_true_lang.js +113 -0
- package/dist/components/calendar/RuiCalendarHeader.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/calendar/RuiCalendarMenu.js +7 -0
- package/dist/components/calendar/RuiCalendarMenu.js.map +1 -0
- package/dist/components/calendar/RuiCalendarMenu.vue_vue_type_script_setup_true_lang.js +246 -0
- package/dist/components/calendar/RuiCalendarMenu.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/calendar/state.js +20 -21
- package/dist/components/calendar/state.js.map +1 -1
- package/dist/components/cards/RuiCard.js +7 -0
- package/dist/components/cards/RuiCard.js.map +1 -0
- package/dist/components/cards/RuiCard.vue.d.ts +9 -0
- package/dist/components/cards/RuiCard.vue_vue_type_script_setup_true_lang.js +130 -0
- package/dist/components/cards/RuiCard.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/cards/RuiCardHeader.js +7 -0
- package/dist/components/cards/RuiCardHeader.js.map +1 -0
- package/dist/components/cards/RuiCardHeader.vue_vue_type_script_setup_true_lang.js +67 -0
- package/dist/components/cards/RuiCardHeader.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/chips/RuiChip.js +7 -0
- package/dist/components/chips/RuiChip.js.map +1 -0
- package/dist/components/chips/RuiChip.vue.d.ts +10 -2
- package/dist/components/chips/RuiChip.vue_vue_type_script_setup_true_lang.js +308 -0
- package/dist/components/chips/RuiChip.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/chips/chip-props.d.ts +11 -0
- package/dist/components/chips/chip-props.js +17 -0
- package/dist/components/chips/chip-props.js.map +1 -0
- package/dist/components/color-picker/RuiColorBoard.js +7 -0
- package/dist/components/color-picker/RuiColorBoard.js.map +1 -0
- package/dist/components/color-picker/RuiColorBoard.vue.d.ts +1 -1
- package/dist/components/color-picker/RuiColorBoard.vue_vue_type_script_setup_true_lang.js +100 -0
- package/dist/components/color-picker/RuiColorBoard.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/color-picker/RuiColorDisplay.js +7 -0
- package/dist/components/color-picker/RuiColorDisplay.js.map +1 -0
- package/dist/components/color-picker/RuiColorDisplay.vue_vue_type_script_setup_true_lang.js +37 -0
- package/dist/components/color-picker/RuiColorDisplay.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/color-picker/RuiColorHue.js +7 -0
- package/dist/components/color-picker/RuiColorHue.js.map +1 -0
- package/dist/components/color-picker/RuiColorHue.vue_vue_type_script_setup_true_lang.js +84 -0
- package/dist/components/color-picker/RuiColorHue.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/color-picker/RuiColorInput.js +7 -0
- package/dist/components/color-picker/RuiColorInput.js.map +1 -0
- package/dist/components/color-picker/RuiColorInput.vue_vue_type_script_setup_true_lang.js +132 -0
- package/dist/components/color-picker/RuiColorInput.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/color-picker/RuiColorPicker.js +7 -0
- package/dist/components/color-picker/RuiColorPicker.js.map +1 -0
- package/dist/components/color-picker/RuiColorPicker.vue_vue_type_script_setup_true_lang.js +57 -0
- package/dist/components/color-picker/RuiColorPicker.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/color-picker/utils.d.ts +11 -8
- package/dist/components/color-picker/utils.js +179 -194
- package/dist/components/color-picker/utils.js.map +1 -1
- package/dist/components/date-time-picker/RuiDateTimePicker.js +7 -0
- package/dist/components/date-time-picker/RuiDateTimePicker.js.map +1 -0
- package/dist/components/date-time-picker/RuiDateTimePicker.vue.d.ts +2 -1
- package/dist/components/date-time-picker/RuiDateTimePicker.vue_vue_type_script_setup_true_lang.js +369 -0
- package/dist/components/date-time-picker/RuiDateTimePicker.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/date-time-picker/RuiDateTimePickerMenu.js +7 -0
- package/dist/components/date-time-picker/RuiDateTimePickerMenu.js.map +1 -0
- package/dist/components/date-time-picker/RuiDateTimePickerMenu.vue.d.ts +1 -1
- package/dist/components/date-time-picker/RuiDateTimePickerMenu.vue_vue_type_script_setup_true_lang.js +134 -0
- package/dist/components/date-time-picker/RuiDateTimePickerMenu.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/date-time-picker/date-time-picker-styles.d.ts +326 -0
- package/dist/components/date-time-picker/date-time-picker-styles.js +19 -0
- package/dist/components/date-time-picker/date-time-picker-styles.js.map +1 -0
- package/dist/components/date-time-picker/dayjs-setup.js +4 -1
- package/dist/components/date-time-picker/dayjs-setup.js.map +1 -1
- package/dist/components/date-time-picker/segment-config.js +42 -21
- package/dist/components/date-time-picker/segment-config.js.map +1 -1
- package/dist/components/date-time-picker/segment-utils.js +24 -31
- package/dist/components/date-time-picker/segment-utils.js.map +1 -1
- package/dist/components/date-time-picker/timezones.js +601 -600
- package/dist/components/date-time-picker/timezones.js.map +1 -1
- package/dist/components/date-time-picker/types.js +14 -14
- package/dist/components/date-time-picker/types.js.map +1 -1
- package/dist/components/date-time-picker/use-date-time-selection.js +222 -282
- package/dist/components/date-time-picker/use-date-time-selection.js.map +1 -1
- package/dist/components/date-time-picker/use-input-handler.js +31 -28
- package/dist/components/date-time-picker/use-input-handler.js.map +1 -1
- package/dist/components/date-time-picker/use-keyboard-handler.js +201 -268
- package/dist/components/date-time-picker/use-keyboard-handler.js.map +1 -1
- package/dist/components/date-time-picker/utils.js +10 -11
- package/dist/components/date-time-picker/utils.js.map +1 -1
- package/dist/components/divider/RuiDivider.js +7 -0
- package/dist/components/divider/RuiDivider.js.map +1 -0
- package/dist/components/divider/RuiDivider.vue_vue_type_script_setup_true_lang.js +25 -0
- package/dist/components/divider/RuiDivider.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/forms/auto-complete/RuiAutoComplete.js +7 -0
- package/dist/components/forms/auto-complete/RuiAutoComplete.js.map +1 -0
- package/dist/components/forms/auto-complete/RuiAutoComplete.vue.d.ts +12 -2
- package/dist/components/forms/auto-complete/RuiAutoComplete.vue_vue_type_script_setup_true_lang.js +566 -0
- package/dist/components/forms/auto-complete/RuiAutoComplete.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/forms/auto-complete/auto-complete-styles.d.ts +324 -0
- package/dist/components/forms/auto-complete/auto-complete-styles.js +15 -0
- package/dist/components/forms/auto-complete/auto-complete-styles.js.map +1 -0
- package/dist/components/forms/check-control-styles.d.ts +135 -0
- package/dist/components/forms/check-control-styles.js +126 -0
- package/dist/components/forms/check-control-styles.js.map +1 -0
- package/dist/components/forms/checkbox/RuiCheckbox.js +7 -0
- package/dist/components/forms/checkbox/RuiCheckbox.js.map +1 -0
- package/dist/components/forms/checkbox/RuiCheckbox.vue_vue_type_script_setup_true_lang.js +133 -0
- package/dist/components/forms/checkbox/RuiCheckbox.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/forms/radio-button/radio/RuiRadio.js +7 -0
- package/dist/components/forms/radio-button/radio/RuiRadio.js.map +1 -0
- package/dist/components/forms/radio-button/radio/RuiRadio.vue_vue_type_script_setup_true_lang.js +115 -0
- package/dist/components/forms/radio-button/radio/RuiRadio.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/forms/radio-button/radio-group/RuiRadioGroup.js +7 -0
- package/dist/components/forms/radio-button/radio-group/RuiRadioGroup.js.map +1 -0
- package/dist/components/forms/radio-button/radio-group/RuiRadioGroup.vue_vue_type_script_setup_true_lang.js +96 -0
- package/dist/components/forms/radio-button/radio-group/RuiRadioGroup.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/forms/revealable-text-field/RuiRevealableTextField.js +7 -0
- package/dist/components/forms/revealable-text-field/RuiRevealableTextField.js.map +1 -0
- package/dist/components/forms/revealable-text-field/RuiRevealableTextField.vue.d.ts +2 -15
- package/dist/components/forms/revealable-text-field/RuiRevealableTextField.vue_vue_type_script_setup_true_lang.js +117 -0
- package/dist/components/forms/revealable-text-field/RuiRevealableTextField.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/forms/select/RuiMenuSelect.js +7 -0
- package/dist/components/forms/select/RuiMenuSelect.js.map +1 -0
- package/dist/components/forms/select/RuiMenuSelect.vue.d.ts +16 -4
- package/dist/components/forms/select/RuiMenuSelect.vue_vue_type_script_setup_true_lang.js +313 -0
- package/dist/components/forms/select/RuiMenuSelect.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/forms/select/RuiSimpleSelect.js +7 -0
- package/dist/components/forms/select/RuiSimpleSelect.js.map +1 -0
- package/dist/components/forms/select/RuiSimpleSelect.vue_vue_type_script_setup_true_lang.js +75 -0
- package/dist/components/forms/select/RuiSimpleSelect.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/forms/select/menu-select-styles.d.ts +319 -0
- package/dist/components/forms/select/menu-select-styles.js +11 -0
- package/dist/components/forms/select/menu-select-styles.js.map +1 -0
- package/dist/components/forms/slider/RuiSlider.js +7 -0
- package/dist/components/forms/slider/RuiSlider.js.map +1 -0
- package/dist/components/forms/slider/RuiSlider.vue.d.ts +9 -0
- package/dist/components/forms/slider/RuiSlider.vue_vue_type_script_setup_true_lang.js +222 -0
- package/dist/components/forms/slider/RuiSlider.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/forms/slider/slider-styles.d.ts +208 -0
- package/dist/components/forms/slider/slider-styles.js +235 -0
- package/dist/components/forms/slider/slider-styles.js.map +1 -0
- package/dist/components/forms/switch/RuiSwitch.js +7 -0
- package/dist/components/forms/switch/RuiSwitch.js.map +1 -0
- package/dist/components/forms/switch/RuiSwitch.vue_vue_type_script_setup_true_lang.js +226 -0
- package/dist/components/forms/switch/RuiSwitch.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/forms/text-area/RuiTextArea.js +7 -0
- package/dist/components/forms/text-area/RuiTextArea.js.map +1 -0
- package/dist/components/forms/text-area/RuiTextArea.vue.d.ts +8 -4
- package/dist/components/forms/text-area/RuiTextArea.vue_vue_type_script_setup_true_lang.js +248 -0
- package/dist/components/forms/text-area/RuiTextArea.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/forms/text-area/text-area-styles.d.ts +313 -0
- package/dist/components/forms/text-area/text-area-styles.js +239 -0
- package/dist/components/forms/text-area/text-area-styles.js.map +1 -0
- package/dist/components/forms/text-field/RuiTextField.js +7 -0
- package/dist/components/forms/text-field/RuiTextField.js.map +1 -0
- package/dist/components/forms/text-field/RuiTextField.vue.d.ts +4 -3
- package/dist/components/forms/text-field/RuiTextField.vue_vue_type_script_setup_true_lang.js +220 -0
- package/dist/components/forms/text-field/RuiTextField.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/forms/text-field/text-field-styles.d.ts +299 -0
- package/dist/components/forms/text-field/text-field-styles.js +251 -0
- package/dist/components/forms/text-field/text-field-styles.js.map +1 -0
- package/dist/components/forms/text-input-styles.d.ts +422 -0
- package/dist/components/forms/text-input-styles.js +250 -0
- package/dist/components/forms/text-input-styles.js.map +1 -0
- package/dist/components/helpers/RuiFormTextDetail.js +7 -0
- package/dist/components/helpers/RuiFormTextDetail.js.map +1 -0
- package/dist/components/helpers/RuiFormTextDetail.vue_vue_type_script_setup_true_lang.js +46 -0
- package/dist/components/helpers/RuiFormTextDetail.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/icons/RuiIcon.js +7 -0
- package/dist/components/icons/RuiIcon.js.map +1 -0
- package/dist/components/icons/RuiIcon.vue_vue_type_script_setup_true_lang.js +58 -0
- package/dist/components/icons/RuiIcon.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/index.d.ts +46 -46
- package/dist/components/index.js +45 -92
- package/dist/components/loaders/RuiSkeletonBase.js +7 -0
- package/dist/components/loaders/RuiSkeletonBase.js.map +1 -0
- package/dist/components/loaders/RuiSkeletonBase.vue_vue_type_script_setup_true_lang.js +31 -0
- package/dist/components/loaders/RuiSkeletonBase.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/loaders/RuiSkeletonLoader.js +7 -0
- package/dist/components/loaders/RuiSkeletonLoader.js.map +1 -0
- package/dist/components/loaders/RuiSkeletonLoader.vue.d.ts +3 -2
- package/dist/components/loaders/RuiSkeletonLoader.vue_vue_type_script_setup_true_lang.js +62 -0
- package/dist/components/loaders/RuiSkeletonLoader.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/loaders/skeleton-type.d.ts +12 -0
- package/dist/components/loaders/skeleton-type.js +16 -0
- package/dist/components/loaders/skeleton-type.js.map +1 -0
- package/dist/components/logos/RuiLogo.js +7 -0
- package/dist/components/logos/RuiLogo.js.map +1 -0
- package/dist/components/logos/RuiLogo.vue_vue_type_script_setup_true_lang.js +130 -0
- package/dist/components/logos/RuiLogo.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/logos/logo.js +6 -0
- package/dist/components/logos/logo.js.map +1 -0
- package/dist/components/logos/use-logo-sources.d.ts +1 -1
- package/dist/components/logos/use-logo-sources.js +66 -62
- package/dist/components/logos/use-logo-sources.js.map +1 -1
- package/dist/components/overlays/badge/RuiBadge.js +7 -0
- package/dist/components/overlays/badge/RuiBadge.js.map +1 -0
- package/dist/components/overlays/badge/RuiBadge.vue.d.ts +4 -3
- package/dist/components/overlays/badge/RuiBadge.vue_vue_type_script_setup_true_lang.js +189 -0
- package/dist/components/overlays/badge/RuiBadge.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/overlays/badge/badge-props.d.ts +19 -0
- package/dist/components/overlays/badge/badge-props.js +21 -0
- package/dist/components/overlays/badge/badge-props.js.map +1 -0
- package/dist/components/overlays/bottom-sheet/RuiBottomSheet.js +7 -0
- package/dist/components/overlays/bottom-sheet/RuiBottomSheet.js.map +1 -0
- package/dist/components/overlays/bottom-sheet/RuiBottomSheet.vue_vue_type_script_setup_true_lang.js +51 -0
- package/dist/components/overlays/bottom-sheet/RuiBottomSheet.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/overlays/dialog/RuiDialog.js +7 -0
- package/dist/components/overlays/dialog/RuiDialog.js.map +1 -0
- package/dist/components/overlays/dialog/RuiDialog.vue.d.ts +7 -0
- package/dist/components/overlays/dialog/RuiDialog.vue_vue_type_script_setup_true_lang.js +163 -0
- package/dist/components/overlays/dialog/RuiDialog.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/overlays/menu/RuiMenu.js +7 -0
- package/dist/components/overlays/menu/RuiMenu.js.map +1 -0
- package/dist/components/overlays/menu/RuiMenu.vue.d.ts +12 -0
- package/dist/components/overlays/menu/RuiMenu.vue_vue_type_script_setup_true_lang.js +236 -0
- package/dist/components/overlays/menu/RuiMenu.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/overlays/navigation-drawer/RuiNavigationDrawer.js +7 -0
- package/dist/components/overlays/navigation-drawer/RuiNavigationDrawer.js.map +1 -0
- package/dist/components/overlays/navigation-drawer/RuiNavigationDrawer.vue.d.ts +7 -0
- package/dist/components/overlays/navigation-drawer/RuiNavigationDrawer.vue_vue_type_script_setup_true_lang.js +180 -0
- package/dist/components/overlays/navigation-drawer/RuiNavigationDrawer.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/overlays/notification/RuiNotification.js +7 -0
- package/dist/components/overlays/notification/RuiNotification.js.map +1 -0
- package/dist/components/overlays/notification/RuiNotification.vue_vue_type_script_setup_true_lang.js +70 -0
- package/dist/components/overlays/notification/RuiNotification.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/overlays/tooltip/RuiTooltip.js +7 -0
- package/dist/components/overlays/tooltip/RuiTooltip.js.map +1 -0
- package/dist/components/overlays/tooltip/RuiTooltip.vue.d.ts +10 -0
- package/dist/components/overlays/tooltip/RuiTooltip.vue_vue_type_script_setup_true_lang.js +107 -0
- package/dist/components/overlays/tooltip/RuiTooltip.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/overlays/tooltip/tooltip-styles.d.ts +91 -0
- package/dist/components/overlays/tooltip/tooltip-styles.js +40 -0
- package/dist/components/overlays/tooltip/tooltip-styles.js.map +1 -0
- package/dist/components/progress/RuiProgress.js +7 -0
- package/dist/components/progress/RuiProgress.js.map +1 -0
- package/dist/components/progress/RuiProgress.vue.d.ts +2 -1
- package/dist/components/progress/RuiProgress.vue_vue_type_script_setup_true_lang.js +254 -0
- package/dist/components/progress/RuiProgress.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/progress/progress-props.d.ts +6 -0
- package/dist/components/progress/progress-props.js +10 -0
- package/dist/components/progress/progress-props.js.map +1 -0
- package/dist/components/steppers/RuiFooterStepper.js +7 -0
- package/dist/components/steppers/RuiFooterStepper.js.map +1 -0
- package/dist/components/steppers/RuiFooterStepper.vue.d.ts +2 -1
- package/dist/components/steppers/RuiFooterStepper.vue_vue_type_script_setup_true_lang.js +164 -0
- package/dist/components/steppers/RuiFooterStepper.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/steppers/RuiStepper.js +7 -0
- package/dist/components/steppers/RuiStepper.js.map +1 -0
- package/dist/components/steppers/RuiStepper.vue.d.ts +9 -0
- package/dist/components/steppers/RuiStepper.vue_vue_type_script_setup_true_lang.js +232 -0
- package/dist/components/steppers/RuiStepper.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/steppers/RuiStepperCustomIcon.js +7 -0
- package/dist/components/steppers/RuiStepperCustomIcon.js.map +1 -0
- package/dist/components/steppers/RuiStepperCustomIcon.vue_vue_type_script_setup_true_lang.js +43 -0
- package/dist/components/steppers/RuiStepperCustomIcon.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/steppers/RuiStepperIcon.js +7 -0
- package/dist/components/steppers/RuiStepperIcon.js.map +1 -0
- package/dist/components/steppers/RuiStepperIcon.vue_vue_type_script_setup_true_lang.js +72 -0
- package/dist/components/steppers/RuiStepperIcon.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/steppers/footer-stepper-variant.d.ts +7 -0
- package/dist/components/steppers/footer-stepper-variant.js +11 -0
- package/dist/components/steppers/footer-stepper-variant.js.map +1 -0
- package/dist/components/tables/RuiDataTable.js +7 -0
- package/dist/components/tables/RuiDataTable.js.map +1 -0
- package/dist/components/tables/RuiDataTable.vue.d.ts +7 -2
- package/dist/components/tables/RuiDataTable.vue_vue_type_script_setup_true_lang.js +516 -0
- package/dist/components/tables/RuiDataTable.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/tables/RuiExpandButton.js +7 -0
- package/dist/components/tables/RuiExpandButton.js.map +1 -0
- package/dist/components/tables/RuiExpandButton.vue_vue_type_script_setup_true_lang.js +34 -0
- package/dist/components/tables/RuiExpandButton.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/tables/RuiTableEmptyState.js +7 -0
- package/dist/components/tables/RuiTableEmptyState.js.map +1 -0
- package/dist/components/tables/RuiTableEmptyState.vue.d.ts +16 -0
- package/dist/components/tables/RuiTableEmptyState.vue_vue_type_script_setup_true_lang.js +46 -0
- package/dist/components/tables/RuiTableEmptyState.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/tables/RuiTableHead.js +7 -0
- package/dist/components/tables/RuiTableHead.js.map +1 -0
- package/dist/components/tables/RuiTableHead.vue.d.ts +6 -5
- package/dist/components/tables/RuiTableHead.vue_vue_type_script_setup_true_lang.js +230 -0
- package/dist/components/tables/RuiTableHead.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/tables/RuiTablePagination.js +7 -0
- package/dist/components/tables/RuiTablePagination.js.map +1 -0
- package/dist/components/tables/RuiTablePagination.vue.d.ts +9 -6
- package/dist/components/tables/RuiTablePagination.vue_vue_type_script_setup_true_lang.js +187 -0
- package/dist/components/tables/RuiTablePagination.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/tables/data-table-styles.d.ts +155 -0
- package/dist/components/tables/data-table-styles.js +36 -0
- package/dist/components/tables/data-table-styles.js.map +1 -0
- package/dist/components/tables/table-props.d.ts +20 -0
- package/dist/components/tables/table-props.js +39 -0
- package/dist/components/tables/table-props.js.map +1 -0
- package/dist/components/tables/table_no_data_placeholder.js +6 -0
- package/dist/components/tables/table_no_data_placeholder.js.map +1 -0
- package/dist/components/tables/table_no_data_placeholder_dark.js +6 -0
- package/dist/components/tables/table_no_data_placeholder_dark.js.map +1 -0
- package/dist/components/tables/use-pagination-navigation.d.ts +32 -0
- package/dist/components/tables/use-pagination-navigation.js +88 -0
- package/dist/components/tables/use-pagination-navigation.js.map +1 -0
- package/dist/components/tabs/tab/RuiTab.js +7 -0
- package/dist/components/tabs/tab/RuiTab.js.map +1 -0
- package/dist/components/tabs/tab/RuiTab.vue.d.ts +12 -3
- package/dist/components/tabs/tab/RuiTab.vue_vue_type_script_setup_true_lang.js +175 -0
- package/dist/components/tabs/tab/RuiTab.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/tabs/tab/use-tab-link.d.ts +26 -0
- package/dist/components/tabs/tab/use-tab-link.js +28 -0
- package/dist/components/tabs/tab/use-tab-link.js.map +1 -0
- package/dist/components/tabs/tab-item/RuiTabItem.js +7 -0
- package/dist/components/tabs/tab-item/RuiTabItem.js.map +1 -0
- package/dist/components/tabs/tab-item/RuiTabItem.vue_vue_type_script_setup_true_lang.js +54 -0
- package/dist/components/tabs/tab-item/RuiTabItem.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/tabs/tab-items/RuiTabItems.js +7 -0
- package/dist/components/tabs/tab-items/RuiTabItems.js.map +1 -0
- package/dist/components/tabs/tab-items/RuiTabItems.vue_vue_type_script_setup_true_lang.js +76 -0
- package/dist/components/tabs/tab-items/RuiTabItems.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/tabs/tab-props.d.ts +20 -0
- package/dist/components/tabs/tab-props.js +18 -0
- package/dist/components/tabs/tab-props.js.map +1 -0
- package/dist/components/tabs/tabs/RuiTabs.js +7 -0
- package/dist/components/tabs/tabs/RuiTabs.js.map +1 -0
- package/dist/components/tabs/tabs/RuiTabs.vue.d.ts +3 -2
- package/dist/components/tabs/tabs/RuiTabs.vue_vue_type_script_setup_true_lang.js +208 -0
- package/dist/components/tabs/tabs/RuiTabs.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/tabs/tabs/use-tab-routing.d.ts +28 -0
- package/dist/components/tabs/tabs/use-tab-routing.js +43 -0
- package/dist/components/tabs/tabs/use-tab-routing.js.map +1 -0
- package/dist/components/tabs/tabs/use-tab-scroll.d.ts +23 -0
- package/dist/components/tabs/tabs/use-tab-scroll.js +68 -0
- package/dist/components/tabs/tabs/use-tab-scroll.js.map +1 -0
- package/dist/components/time-picker/RuiTimePicker.js +7 -0
- package/dist/components/time-picker/RuiTimePicker.js.map +1 -0
- package/dist/components/time-picker/RuiTimePicker.vue_vue_type_script_setup_true_lang.js +382 -0
- package/dist/components/time-picker/RuiTimePicker.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/time-picker/time-picker-styles.d.ts +76 -0
- package/dist/components/time-picker/time-picker-styles.js +27 -0
- package/dist/components/time-picker/time-picker-styles.js.map +1 -0
- package/dist/composables/breakpoint.js +35 -40
- package/dist/composables/breakpoint.js.map +1 -1
- package/dist/composables/colors/common.d.ts +20 -0
- package/dist/composables/colors/index.d.ts +3 -0
- package/dist/composables/colors/text-input.d.ts +27 -0
- package/dist/composables/defaults/table.js +21 -18
- package/dist/composables/defaults/table.js.map +1 -1
- package/dist/composables/dropdown-menu.d.ts +6 -6
- package/dist/composables/dropdown-menu.js +169 -237
- package/dist/composables/dropdown-menu.js.map +1 -1
- package/dist/composables/floating.d.ts +60 -0
- package/dist/composables/floating.js +167 -0
- package/dist/composables/floating.js.map +1 -0
- package/dist/composables/forms/auto-complete/focus.d.ts +4 -4
- package/dist/composables/forms/auto-complete/focus.js +59 -79
- package/dist/composables/forms/auto-complete/focus.js.map +1 -1
- package/dist/composables/forms/auto-complete/index.js +4 -0
- package/dist/composables/forms/auto-complete/keyboard-navigation.d.ts +6 -5
- package/dist/composables/forms/auto-complete/keyboard-navigation.js +116 -136
- package/dist/composables/forms/auto-complete/keyboard-navigation.js.map +1 -1
- package/dist/composables/forms/auto-complete/search.d.ts +11 -10
- package/dist/composables/forms/auto-complete/search.js +80 -91
- package/dist/composables/forms/auto-complete/search.js.map +1 -1
- package/dist/composables/forms/auto-complete/value.d.ts +9 -8
- package/dist/composables/forms/auto-complete/value.js +76 -108
- package/dist/composables/forms/auto-complete/value.js.map +1 -1
- package/dist/composables/forms/use-prepend-append-width.js +24 -20
- package/dist/composables/forms/use-prepend-append-width.js.map +1 -1
- package/dist/composables/icons.js +42 -52
- package/dist/composables/icons.js.map +1 -1
- package/dist/composables/index.js +2 -7
- package/dist/composables/popper.d.ts +5 -20
- package/dist/composables/popper.js +22 -177
- package/dist/composables/popper.js.map +1 -1
- package/dist/composables/sticky-header.js +132 -143
- package/dist/composables/sticky-header.js.map +1 -1
- package/dist/composables/tables/data-table/columns.d.ts +1 -1
- package/dist/composables/tables/data-table/columns.js +41 -49
- package/dist/composables/tables/data-table/columns.js.map +1 -1
- package/dist/composables/tables/data-table/expansion.js +29 -34
- package/dist/composables/tables/data-table/expansion.js.map +1 -1
- package/dist/composables/tables/data-table/grouping.d.ts +1 -1
- package/dist/composables/tables/data-table/grouping.js +110 -132
- package/dist/composables/tables/data-table/grouping.js.map +1 -1
- package/dist/composables/tables/data-table/pagination.d.ts +2 -2
- package/dist/composables/tables/data-table/pagination.js +98 -115
- package/dist/composables/tables/data-table/pagination.js.map +1 -1
- package/dist/composables/tables/data-table/selection.js +124 -160
- package/dist/composables/tables/data-table/selection.js.map +1 -1
- package/dist/composables/tables/data-table/sort.d.ts +2 -2
- package/dist/composables/tables/data-table/sort.js +118 -132
- package/dist/composables/tables/data-table/sort.js.map +1 -1
- package/dist/composables/tables/data-table/types.d.ts +2 -2
- package/dist/composables/tables/data-table/types.js +7 -7
- package/dist/composables/tables/data-table/types.js.map +1 -1
- package/dist/composables/theme.js +91 -66
- package/dist/composables/theme.js.map +1 -1
- package/dist/composables/timeout-manager.js +24 -19
- package/dist/composables/timeout-manager.js.map +1 -1
- package/dist/composables/use-rui-i18n.js +15 -21
- package/dist/composables/use-rui-i18n.js.map +1 -1
- package/dist/consts/colors.js +50 -47
- package/dist/consts/colors.js.map +1 -1
- package/dist/consts/time-accuracy.js +9 -8
- package/dist/consts/time-accuracy.js.map +1 -1
- package/dist/i18n/keys.js +17 -16
- package/dist/i18n/keys.js.map +1 -1
- package/dist/icons/icons_1.js +1529 -2027
- package/dist/icons/icons_1.js.map +1 -1
- package/dist/icons/icons_2.js +1529 -2027
- package/dist/icons/icons_2.js.map +1 -1
- package/dist/icons/icons_3.js +1529 -2027
- package/dist/icons/icons_3.js.map +1 -1
- package/dist/icons/icons_4.js +794 -1047
- package/dist/icons/icons_4.js.map +1 -1
- package/dist/icons/index.js +1767 -7
- package/dist/icons/index.js.map +1 -1
- package/dist/index.d.ts +5 -2
- package/dist/index.js +87 -1907
- package/dist/index.js.map +1 -1
- package/dist/style.css +2780 -10260
- package/dist/theme/index.js +160 -198
- package/dist/theme/index.js.map +1 -1
- package/dist/types/class-value.d.ts +5 -0
- package/dist/types/stepper.js +16 -15
- package/dist/types/stepper.js.map +1 -1
- package/dist/types/theme.js +17 -22
- package/dist/types/theme.js.map +1 -1
- package/dist/utils/assert.js +12 -12
- package/dist/utils/assert.js.map +1 -1
- package/dist/utils/blockie.js +58 -65
- package/dist/utils/blockie.js.map +1 -1
- package/dist/utils/form-text-detail.d.ts +4 -2
- package/dist/utils/form-text-detail.js +29 -27
- package/dist/utils/form-text-detail.js.map +1 -1
- package/dist/utils/helpers.js +60 -35
- package/dist/utils/helpers.js.map +1 -1
- package/dist/utils/is-equal.js +23 -33
- package/dist/utils/is-equal.js.map +1 -1
- package/dist/utils/tv.d.ts +16 -0
- package/dist/utils/tv.js +23 -0
- package/dist/utils/tv.js.map +1 -0
- package/dist/vite-plugin/index.js +144 -155
- package/dist/vite-plugin/index.js.map +1 -1
- package/dist/vite-plugin/scanner.js +46 -52
- package/dist/vite-plugin/scanner.js.map +1 -1
- package/dist/web-types.json +214 -39
- package/package.json +36 -27
- package/dist/_virtual/_plugin-vue_export-helper.js +0 -11
- package/dist/_virtual/_plugin-vue_export-helper.js.map +0 -1
- package/dist/components/accordions/accordion/RuiAccordion.vue.js +0 -89
- package/dist/components/accordions/accordion/RuiAccordion.vue.js.map +0 -1
- package/dist/components/accordions/accordion/RuiAccordion.vue2.js +0 -5
- package/dist/components/accordions/accordion/RuiAccordion.vue2.js.map +0 -1
- package/dist/components/accordions/accordions/RuiAccordions.vue.js +0 -79
- package/dist/components/accordions/accordions/RuiAccordions.vue.js.map +0 -1
- package/dist/components/accordions/accordions/RuiAccordions.vue2.js +0 -5
- package/dist/components/accordions/accordions/RuiAccordions.vue2.js.map +0 -1
- package/dist/components/alerts/RuiAlert.vue.js +0 -11
- package/dist/components/alerts/RuiAlert.vue.js.map +0 -1
- package/dist/components/alerts/RuiAlert.vue2.js +0 -115
- package/dist/components/alerts/RuiAlert.vue2.js.map +0 -1
- package/dist/components/alerts/RuiAlert.vue3.js +0 -50
- package/dist/components/alerts/RuiAlert.vue3.js.map +0 -1
- package/dist/components/buttons/button/RuiButton.vue.js +0 -11
- package/dist/components/buttons/button/RuiButton.vue.js.map +0 -1
- package/dist/components/buttons/button/RuiButton.vue2.js +0 -93
- package/dist/components/buttons/button/RuiButton.vue2.js.map +0 -1
- package/dist/components/buttons/button/RuiButton.vue3.js +0 -74
- package/dist/components/buttons/button/RuiButton.vue3.js.map +0 -1
- package/dist/components/buttons/button-group/RuiButtonGroup.vue.js +0 -11
- package/dist/components/buttons/button-group/RuiButtonGroup.vue.js.map +0 -1
- package/dist/components/buttons/button-group/RuiButtonGroup.vue2.js +0 -113
- package/dist/components/buttons/button-group/RuiButtonGroup.vue2.js.map +0 -1
- package/dist/components/buttons/button-group/RuiButtonGroup.vue3.js +0 -58
- package/dist/components/buttons/button-group/RuiButtonGroup.vue3.js.map +0 -1
- package/dist/components/calendar/RuiCalendar.vue.js +0 -139
- package/dist/components/calendar/RuiCalendar.vue.js.map +0 -1
- package/dist/components/calendar/RuiCalendar.vue3.js +0 -6
- package/dist/components/calendar/RuiCalendar.vue3.js.map +0 -1
- package/dist/components/calendar/RuiCalendarGrid.vue.js +0 -8
- package/dist/components/calendar/RuiCalendarGrid.vue.js.map +0 -1
- package/dist/components/calendar/RuiCalendarGrid.vue2.js +0 -151
- package/dist/components/calendar/RuiCalendarGrid.vue2.js.map +0 -1
- package/dist/components/calendar/RuiCalendarHeader.vue.js +0 -8
- package/dist/components/calendar/RuiCalendarHeader.vue.js.map +0 -1
- package/dist/components/calendar/RuiCalendarHeader.vue2.js +0 -111
- package/dist/components/calendar/RuiCalendarHeader.vue2.js.map +0 -1
- package/dist/components/calendar/RuiCalendarMenu.vue.js +0 -8
- package/dist/components/calendar/RuiCalendarMenu.vue.js.map +0 -1
- package/dist/components/calendar/RuiCalendarMenu.vue2.js +0 -269
- package/dist/components/calendar/RuiCalendarMenu.vue2.js.map +0 -1
- package/dist/components/cards/RuiCard.vue.js +0 -11
- package/dist/components/cards/RuiCard.vue.js.map +0 -1
- package/dist/components/cards/RuiCard.vue2.js +0 -88
- package/dist/components/cards/RuiCard.vue2.js.map +0 -1
- package/dist/components/cards/RuiCard.vue3.js +0 -40
- package/dist/components/cards/RuiCard.vue3.js.map +0 -1
- package/dist/components/cards/RuiCardHeader.vue.js +0 -11
- package/dist/components/cards/RuiCardHeader.vue.js.map +0 -1
- package/dist/components/cards/RuiCardHeader.vue2.js +0 -51
- package/dist/components/cards/RuiCardHeader.vue2.js.map +0 -1
- package/dist/components/cards/RuiCardHeader.vue3.js +0 -27
- package/dist/components/cards/RuiCardHeader.vue3.js.map +0 -1
- package/dist/components/chips/RuiChip.vue.js +0 -11
- package/dist/components/chips/RuiChip.vue.js.map +0 -1
- package/dist/components/chips/RuiChip.vue2.js +0 -90
- package/dist/components/chips/RuiChip.vue2.js.map +0 -1
- package/dist/components/chips/RuiChip.vue3.js +0 -88
- package/dist/components/chips/RuiChip.vue3.js.map +0 -1
- package/dist/components/color-picker/RuiColorBoard.vue.js +0 -11
- package/dist/components/color-picker/RuiColorBoard.vue.js.map +0 -1
- package/dist/components/color-picker/RuiColorBoard.vue2.js +0 -102
- package/dist/components/color-picker/RuiColorBoard.vue2.js.map +0 -1
- package/dist/components/color-picker/RuiColorBoard.vue3.js +0 -18
- package/dist/components/color-picker/RuiColorBoard.vue3.js.map +0 -1
- package/dist/components/color-picker/RuiColorDisplay.vue.js +0 -47
- package/dist/components/color-picker/RuiColorDisplay.vue.js.map +0 -1
- package/dist/components/color-picker/RuiColorDisplay.vue2.js +0 -5
- package/dist/components/color-picker/RuiColorDisplay.vue2.js.map +0 -1
- package/dist/components/color-picker/RuiColorHue.vue.js +0 -11
- package/dist/components/color-picker/RuiColorHue.vue.js.map +0 -1
- package/dist/components/color-picker/RuiColorHue.vue2.js +0 -92
- package/dist/components/color-picker/RuiColorHue.vue2.js.map +0 -1
- package/dist/components/color-picker/RuiColorHue.vue3.js +0 -12
- package/dist/components/color-picker/RuiColorHue.vue3.js.map +0 -1
- package/dist/components/color-picker/RuiColorInput.vue.js +0 -141
- package/dist/components/color-picker/RuiColorInput.vue.js.map +0 -1
- package/dist/components/color-picker/RuiColorInput.vue2.js +0 -5
- package/dist/components/color-picker/RuiColorInput.vue2.js.map +0 -1
- package/dist/components/color-picker/RuiColorPicker.vue.js +0 -81
- package/dist/components/color-picker/RuiColorPicker.vue.js.map +0 -1
- package/dist/components/color-picker/RuiColorPicker.vue2.js +0 -5
- package/dist/components/color-picker/RuiColorPicker.vue2.js.map +0 -1
- package/dist/components/date-time-picker/RuiDateTimePicker.vue.js +0 -11
- package/dist/components/date-time-picker/RuiDateTimePicker.vue.js.map +0 -1
- package/dist/components/date-time-picker/RuiDateTimePicker.vue2.js +0 -394
- package/dist/components/date-time-picker/RuiDateTimePicker.vue2.js.map +0 -1
- package/dist/components/date-time-picker/RuiDateTimePicker.vue3.js +0 -66
- package/dist/components/date-time-picker/RuiDateTimePicker.vue3.js.map +0 -1
- package/dist/components/date-time-picker/RuiDateTimePickerMenu.vue.js +0 -120
- package/dist/components/date-time-picker/RuiDateTimePickerMenu.vue.js.map +0 -1
- package/dist/components/date-time-picker/RuiDateTimePickerMenu.vue2.js +0 -5
- package/dist/components/date-time-picker/RuiDateTimePickerMenu.vue2.js.map +0 -1
- package/dist/components/divider/RuiDivider.vue.js +0 -25
- package/dist/components/divider/RuiDivider.vue.js.map +0 -1
- package/dist/components/divider/RuiDivider.vue2.js +0 -5
- package/dist/components/divider/RuiDivider.vue2.js.map +0 -1
- package/dist/components/forms/auto-complete/RuiAutoComplete.vue.js +0 -11
- package/dist/components/forms/auto-complete/RuiAutoComplete.vue.js.map +0 -1
- package/dist/components/forms/auto-complete/RuiAutoComplete.vue2.js +0 -594
- package/dist/components/forms/auto-complete/RuiAutoComplete.vue2.js.map +0 -1
- package/dist/components/forms/auto-complete/RuiAutoComplete.vue3.js +0 -60
- package/dist/components/forms/auto-complete/RuiAutoComplete.vue3.js.map +0 -1
- package/dist/components/forms/checkbox/RuiCheckbox.vue.js +0 -11
- package/dist/components/forms/checkbox/RuiCheckbox.vue.js.map +0 -1
- package/dist/components/forms/checkbox/RuiCheckbox.vue2.js +0 -148
- package/dist/components/forms/checkbox/RuiCheckbox.vue2.js.map +0 -1
- package/dist/components/forms/checkbox/RuiCheckbox.vue3.js +0 -54
- package/dist/components/forms/checkbox/RuiCheckbox.vue3.js.map +0 -1
- package/dist/components/forms/radio-button/radio/RuiRadio.vue.js +0 -11
- package/dist/components/forms/radio-button/radio/RuiRadio.vue.js.map +0 -1
- package/dist/components/forms/radio-button/radio/RuiRadio.vue2.js +0 -122
- package/dist/components/forms/radio-button/radio/RuiRadio.vue2.js.map +0 -1
- package/dist/components/forms/radio-button/radio/RuiRadio.vue3.js +0 -54
- package/dist/components/forms/radio-button/radio/RuiRadio.vue3.js.map +0 -1
- package/dist/components/forms/radio-button/radio-group/RuiRadioGroup.vue.js +0 -11
- package/dist/components/forms/radio-button/radio-group/RuiRadioGroup.vue.js.map +0 -1
- package/dist/components/forms/radio-button/radio-group/RuiRadioGroup.vue2.js +0 -84
- package/dist/components/forms/radio-button/radio-group/RuiRadioGroup.vue2.js.map +0 -1
- package/dist/components/forms/radio-button/radio-group/RuiRadioGroup.vue3.js +0 -9
- package/dist/components/forms/radio-button/radio-group/RuiRadioGroup.vue3.js.map +0 -1
- package/dist/components/forms/revealable-text-field/RuiRevealableTextField.vue.js +0 -84
- package/dist/components/forms/revealable-text-field/RuiRevealableTextField.vue.js.map +0 -1
- package/dist/components/forms/revealable-text-field/RuiRevealableTextField.vue2.js +0 -5
- package/dist/components/forms/revealable-text-field/RuiRevealableTextField.vue2.js.map +0 -1
- package/dist/components/forms/select/RuiMenuSelect.vue.js +0 -11
- package/dist/components/forms/select/RuiMenuSelect.vue.js.map +0 -1
- package/dist/components/forms/select/RuiMenuSelect.vue2.js +0 -310
- package/dist/components/forms/select/RuiMenuSelect.vue2.js.map +0 -1
- package/dist/components/forms/select/RuiMenuSelect.vue3.js +0 -60
- package/dist/components/forms/select/RuiMenuSelect.vue3.js.map +0 -1
- package/dist/components/forms/select/RuiSimpleSelect.vue.js +0 -11
- package/dist/components/forms/select/RuiSimpleSelect.vue.js.map +0 -1
- package/dist/components/forms/select/RuiSimpleSelect.vue2.js +0 -62
- package/dist/components/forms/select/RuiSimpleSelect.vue2.js.map +0 -1
- package/dist/components/forms/select/RuiSimpleSelect.vue3.js +0 -21
- package/dist/components/forms/select/RuiSimpleSelect.vue3.js.map +0 -1
- package/dist/components/forms/slider/RuiSlider.vue.js +0 -11
- package/dist/components/forms/slider/RuiSlider.vue.js.map +0 -1
- package/dist/components/forms/slider/RuiSlider.vue2.js +0 -173
- package/dist/components/forms/slider/RuiSlider.vue2.js.map +0 -1
- package/dist/components/forms/slider/RuiSlider.vue3.js +0 -80
- package/dist/components/forms/slider/RuiSlider.vue3.js.map +0 -1
- package/dist/components/forms/switch/RuiSwitch.vue.js +0 -11
- package/dist/components/forms/switch/RuiSwitch.vue.js.map +0 -1
- package/dist/components/forms/switch/RuiSwitch.vue2.js +0 -99
- package/dist/components/forms/switch/RuiSwitch.vue2.js.map +0 -1
- package/dist/components/forms/switch/RuiSwitch.vue3.js +0 -54
- package/dist/components/forms/switch/RuiSwitch.vue3.js.map +0 -1
- package/dist/components/forms/text-area/RuiTextArea.vue.js +0 -11
- package/dist/components/forms/text-area/RuiTextArea.vue.js.map +0 -1
- package/dist/components/forms/text-area/RuiTextArea.vue2.js +0 -229
- package/dist/components/forms/text-area/RuiTextArea.vue2.js.map +0 -1
- package/dist/components/forms/text-area/RuiTextArea.vue3.js +0 -92
- package/dist/components/forms/text-area/RuiTextArea.vue3.js.map +0 -1
- package/dist/components/forms/text-field/RuiTextField.vue.js +0 -11
- package/dist/components/forms/text-field/RuiTextField.vue.js.map +0 -1
- package/dist/components/forms/text-field/RuiTextField.vue2.js +0 -202
- package/dist/components/forms/text-field/RuiTextField.vue2.js.map +0 -1
- package/dist/components/forms/text-field/RuiTextField.vue3.js +0 -89
- package/dist/components/forms/text-field/RuiTextField.vue3.js.map +0 -1
- package/dist/components/helpers/RuiFormTextDetail.vue.js +0 -50
- package/dist/components/helpers/RuiFormTextDetail.vue.js.map +0 -1
- package/dist/components/helpers/RuiFormTextDetail.vue2.js +0 -5
- package/dist/components/helpers/RuiFormTextDetail.vue2.js.map +0 -1
- package/dist/components/icons/RuiIcon.vue.js +0 -11
- package/dist/components/icons/RuiIcon.vue.js.map +0 -1
- package/dist/components/icons/RuiIcon.vue2.js +0 -57
- package/dist/components/icons/RuiIcon.vue2.js.map +0 -1
- package/dist/components/icons/RuiIcon.vue3.js +0 -29
- package/dist/components/icons/RuiIcon.vue3.js.map +0 -1
- package/dist/components/index.js.map +0 -1
- package/dist/components/loaders/RuiSkeletonBase.vue.js +0 -11
- package/dist/components/loaders/RuiSkeletonBase.vue.js.map +0 -1
- package/dist/components/loaders/RuiSkeletonBase.vue2.js +0 -22
- package/dist/components/loaders/RuiSkeletonBase.vue2.js.map +0 -1
- package/dist/components/loaders/RuiSkeletonBase.vue3.js +0 -12
- package/dist/components/loaders/RuiSkeletonBase.vue3.js.map +0 -1
- package/dist/components/loaders/RuiSkeletonLoader.vue.js +0 -11
- package/dist/components/loaders/RuiSkeletonLoader.vue.js.map +0 -1
- package/dist/components/loaders/RuiSkeletonLoader.vue2.js +0 -47
- package/dist/components/loaders/RuiSkeletonLoader.vue2.js.map +0 -1
- package/dist/components/loaders/RuiSkeletonLoader.vue3.js +0 -33
- package/dist/components/loaders/RuiSkeletonLoader.vue3.js.map +0 -1
- package/dist/components/logos/RuiLogo.vue.js +0 -148
- package/dist/components/logos/RuiLogo.vue.js.map +0 -1
- package/dist/components/logos/RuiLogo.vue2.js +0 -5
- package/dist/components/logos/RuiLogo.vue2.js.map +0 -1
- package/dist/components/logos/logo.svg.js +0 -5
- package/dist/components/logos/logo.svg.js.map +0 -1
- package/dist/components/overlays/badge/RuiBadge.vue.js +0 -11
- package/dist/components/overlays/badge/RuiBadge.vue.js.map +0 -1
- package/dist/components/overlays/badge/RuiBadge.vue2.js +0 -93
- package/dist/components/overlays/badge/RuiBadge.vue2.js.map +0 -1
- package/dist/components/overlays/badge/RuiBadge.vue3.js +0 -77
- package/dist/components/overlays/badge/RuiBadge.vue3.js.map +0 -1
- package/dist/components/overlays/bottom-sheet/RuiBottomSheet.vue.js +0 -45
- package/dist/components/overlays/bottom-sheet/RuiBottomSheet.vue.js.map +0 -1
- package/dist/components/overlays/bottom-sheet/RuiBottomSheet.vue2.js +0 -5
- package/dist/components/overlays/bottom-sheet/RuiBottomSheet.vue2.js.map +0 -1
- package/dist/components/overlays/dialog/RuiDialog.vue.js +0 -11
- package/dist/components/overlays/dialog/RuiDialog.vue.js.map +0 -1
- package/dist/components/overlays/dialog/RuiDialog.vue2.js +0 -195
- package/dist/components/overlays/dialog/RuiDialog.vue2.js.map +0 -1
- package/dist/components/overlays/dialog/RuiDialog.vue3.js +0 -18
- package/dist/components/overlays/dialog/RuiDialog.vue3.js.map +0 -1
- package/dist/components/overlays/menu/RuiMenu.vue.js +0 -11
- package/dist/components/overlays/menu/RuiMenu.vue.js.map +0 -1
- package/dist/components/overlays/menu/RuiMenu.vue2.js +0 -214
- package/dist/components/overlays/menu/RuiMenu.vue2.js.map +0 -1
- package/dist/components/overlays/menu/RuiMenu.vue3.js +0 -21
- package/dist/components/overlays/menu/RuiMenu.vue3.js.map +0 -1
- package/dist/components/overlays/navigation-drawer/RuiNavigationDrawer.vue.js +0 -11
- package/dist/components/overlays/navigation-drawer/RuiNavigationDrawer.vue.js.map +0 -1
- package/dist/components/overlays/navigation-drawer/RuiNavigationDrawer.vue2.js +0 -164
- package/dist/components/overlays/navigation-drawer/RuiNavigationDrawer.vue2.js.map +0 -1
- package/dist/components/overlays/navigation-drawer/RuiNavigationDrawer.vue3.js +0 -28
- package/dist/components/overlays/navigation-drawer/RuiNavigationDrawer.vue3.js.map +0 -1
- package/dist/components/overlays/notification/RuiNotification.vue.js +0 -79
- package/dist/components/overlays/notification/RuiNotification.vue.js.map +0 -1
- package/dist/components/overlays/notification/RuiNotification.vue2.js +0 -5
- package/dist/components/overlays/notification/RuiNotification.vue2.js.map +0 -1
- package/dist/components/overlays/tooltip/RuiTooltip.vue.js +0 -11
- package/dist/components/overlays/tooltip/RuiTooltip.vue.js.map +0 -1
- package/dist/components/overlays/tooltip/RuiTooltip.vue2.js +0 -112
- package/dist/components/overlays/tooltip/RuiTooltip.vue2.js.map +0 -1
- package/dist/components/overlays/tooltip/RuiTooltip.vue3.js +0 -27
- package/dist/components/overlays/tooltip/RuiTooltip.vue3.js.map +0 -1
- package/dist/components/progress/RuiProgress.vue.js +0 -11
- package/dist/components/progress/RuiProgress.vue.js.map +0 -1
- package/dist/components/progress/RuiProgress.vue2.js +0 -92
- package/dist/components/progress/RuiProgress.vue2.js.map +0 -1
- package/dist/components/progress/RuiProgress.vue3.js +0 -48
- package/dist/components/progress/RuiProgress.vue3.js.map +0 -1
- package/dist/components/steppers/RuiFooterStepper.vue.js +0 -11
- package/dist/components/steppers/RuiFooterStepper.vue.js.map +0 -1
- package/dist/components/steppers/RuiFooterStepper.vue2.js +0 -150
- package/dist/components/steppers/RuiFooterStepper.vue2.js.map +0 -1
- package/dist/components/steppers/RuiFooterStepper.vue3.js +0 -31
- package/dist/components/steppers/RuiFooterStepper.vue3.js.map +0 -1
- package/dist/components/steppers/RuiStepper.vue.js +0 -11
- package/dist/components/steppers/RuiStepper.vue.js.map +0 -1
- package/dist/components/steppers/RuiStepper.vue2.js +0 -133
- package/dist/components/steppers/RuiStepper.vue2.js.map +0 -1
- package/dist/components/steppers/RuiStepper.vue3.js +0 -58
- package/dist/components/steppers/RuiStepper.vue3.js.map +0 -1
- package/dist/components/steppers/RuiStepperCustomIcon.vue.js +0 -11
- package/dist/components/steppers/RuiStepperCustomIcon.vue.js.map +0 -1
- package/dist/components/steppers/RuiStepperCustomIcon.vue2.js +0 -38
- package/dist/components/steppers/RuiStepperCustomIcon.vue2.js.map +0 -1
- package/dist/components/steppers/RuiStepperCustomIcon.vue3.js +0 -15
- package/dist/components/steppers/RuiStepperCustomIcon.vue3.js.map +0 -1
- package/dist/components/steppers/RuiStepperIcon.vue.js +0 -11
- package/dist/components/steppers/RuiStepperIcon.vue.js.map +0 -1
- package/dist/components/steppers/RuiStepperIcon.vue2.js +0 -43
- package/dist/components/steppers/RuiStepperIcon.vue2.js.map +0 -1
- package/dist/components/steppers/RuiStepperIcon.vue3.js +0 -21
- package/dist/components/steppers/RuiStepperIcon.vue3.js.map +0 -1
- package/dist/components/tables/RuiDataTable.vue.js +0 -11
- package/dist/components/tables/RuiDataTable.vue.js.map +0 -1
- package/dist/components/tables/RuiDataTable.vue2.js +0 -541
- package/dist/components/tables/RuiDataTable.vue2.js.map +0 -1
- package/dist/components/tables/RuiDataTable.vue3.js +0 -76
- package/dist/components/tables/RuiDataTable.vue3.js.map +0 -1
- package/dist/components/tables/RuiExpandButton.vue.js +0 -11
- package/dist/components/tables/RuiExpandButton.vue.js.map +0 -1
- package/dist/components/tables/RuiExpandButton.vue2.js +0 -44
- package/dist/components/tables/RuiExpandButton.vue2.js.map +0 -1
- package/dist/components/tables/RuiExpandButton.vue3.js +0 -15
- package/dist/components/tables/RuiExpandButton.vue3.js.map +0 -1
- package/dist/components/tables/RuiTableHead.vue.js +0 -11
- package/dist/components/tables/RuiTableHead.vue.js.map +0 -1
- package/dist/components/tables/RuiTableHead.vue2.js +0 -195
- package/dist/components/tables/RuiTableHead.vue2.js.map +0 -1
- package/dist/components/tables/RuiTableHead.vue3.js +0 -69
- package/dist/components/tables/RuiTableHead.vue3.js.map +0 -1
- package/dist/components/tables/RuiTablePagination.vue.js +0 -11
- package/dist/components/tables/RuiTablePagination.vue.js.map +0 -1
- package/dist/components/tables/RuiTablePagination.vue2.js +0 -204
- package/dist/components/tables/RuiTablePagination.vue2.js.map +0 -1
- package/dist/components/tables/RuiTablePagination.vue3.js +0 -28
- package/dist/components/tables/RuiTablePagination.vue3.js.map +0 -1
- package/dist/components/tables/table_no_data_placeholder.svg.js +0 -5
- package/dist/components/tables/table_no_data_placeholder.svg.js.map +0 -1
- package/dist/components/tables/table_no_data_placeholder_dark.svg.js +0 -5
- package/dist/components/tables/table_no_data_placeholder_dark.svg.js.map +0 -1
- package/dist/components/tabs/tab/RuiTab.vue.js +0 -11
- package/dist/components/tabs/tab/RuiTab.vue.js.map +0 -1
- package/dist/components/tabs/tab/RuiTab.vue2.js +0 -167
- package/dist/components/tabs/tab/RuiTab.vue2.js.map +0 -1
- package/dist/components/tabs/tab/RuiTab.vue3.js +0 -17
- package/dist/components/tabs/tab/RuiTab.vue3.js.map +0 -1
- package/dist/components/tabs/tab-item/RuiTabItem.vue.js +0 -11
- package/dist/components/tabs/tab-item/RuiTabItem.vue.js.map +0 -1
- package/dist/components/tabs/tab-item/RuiTabItem.vue2.js +0 -52
- package/dist/components/tabs/tab-item/RuiTabItem.vue2.js.map +0 -1
- package/dist/components/tabs/tab-item/RuiTabItem.vue3.js +0 -9
- package/dist/components/tabs/tab-item/RuiTabItem.vue3.js.map +0 -1
- package/dist/components/tabs/tab-items/RuiTabItems.vue.js +0 -11
- package/dist/components/tabs/tab-items/RuiTabItems.vue.js.map +0 -1
- package/dist/components/tabs/tab-items/RuiTabItems.vue2.js +0 -90
- package/dist/components/tabs/tab-items/RuiTabItems.vue2.js.map +0 -1
- package/dist/components/tabs/tab-items/RuiTabItems.vue3.js +0 -9
- package/dist/components/tabs/tab-items/RuiTabItems.vue3.js.map +0 -1
- package/dist/components/tabs/tabs/RuiTabs.vue.js +0 -11
- package/dist/components/tabs/tabs/RuiTabs.vue.js.map +0 -1
- package/dist/components/tabs/tabs/RuiTabs.vue2.js +0 -288
- package/dist/components/tabs/tabs/RuiTabs.vue2.js.map +0 -1
- package/dist/components/tabs/tabs/RuiTabs.vue3.js +0 -20
- package/dist/components/tabs/tabs/RuiTabs.vue3.js.map +0 -1
- package/dist/components/time-picker/RuiTimePicker.vue.js +0 -11
- package/dist/components/time-picker/RuiTimePicker.vue.js.map +0 -1
- package/dist/components/time-picker/RuiTimePicker.vue2.js +0 -463
- package/dist/components/time-picker/RuiTimePicker.vue2.js.map +0 -1
- package/dist/components/time-picker/RuiTimePicker.vue3.js +0 -21
- package/dist/components/time-picker/RuiTimePicker.vue3.js.map +0 -1
- package/dist/composables/forms/use-label-with-quote.js +0 -14
- package/dist/composables/forms/use-label-with-quote.js.map +0 -1
- package/dist/composables/index.js.map +0 -1
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
import { tv } from "../../../utils/tv.js";
|
|
2
|
+
import RuiIcon_default from "../../icons/RuiIcon.js";
|
|
3
|
+
import RuiButton_default from "../../buttons/button/RuiButton.js";
|
|
4
|
+
import { TabLayout } from "../tab-props.js";
|
|
5
|
+
import { useTabRouting } from "./use-tab-routing.js";
|
|
6
|
+
import { useTabScroll } from "./use-tab-scroll.js";
|
|
7
|
+
import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, isVNode, mergeModels, normalizeClass, onMounted, openBlock, ref, renderList, resolveDynamicComponent, unref, useModel, useSlots, useTemplateRef, watch, withCtx } from "vue";
|
|
8
|
+
import { watchImmediate } from "@vueuse/core";
|
|
9
|
+
import { get as get$1, set as set$1 } from "@vueuse/shared";
|
|
10
|
+
//#region src/components/tabs/tabs/RuiTabs.vue?vue&type=script&setup=true&lang.ts
|
|
11
|
+
var _hoisted_1 = ["data-vertical"];
|
|
12
|
+
var RuiTabs_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
|
|
13
|
+
name: "RuiTabs",
|
|
14
|
+
__name: "RuiTabs",
|
|
15
|
+
props: /* @__PURE__ */ mergeModels({
|
|
16
|
+
color: {},
|
|
17
|
+
vertical: {
|
|
18
|
+
type: Boolean,
|
|
19
|
+
default: false
|
|
20
|
+
},
|
|
21
|
+
disabled: {
|
|
22
|
+
type: Boolean,
|
|
23
|
+
default: false
|
|
24
|
+
},
|
|
25
|
+
grow: {
|
|
26
|
+
type: Boolean,
|
|
27
|
+
default: false
|
|
28
|
+
},
|
|
29
|
+
align: { default: "center" },
|
|
30
|
+
indicatorPosition: { default: "end" }
|
|
31
|
+
}, {
|
|
32
|
+
"modelValue": {},
|
|
33
|
+
"modelModifiers": {}
|
|
34
|
+
}),
|
|
35
|
+
emits: ["update:modelValue"],
|
|
36
|
+
setup(__props) {
|
|
37
|
+
const modelValue = useModel(__props, "modelValue");
|
|
38
|
+
const internalModelValue = ref();
|
|
39
|
+
const bar = useTemplateRef("bar");
|
|
40
|
+
const wrapper = useTemplateRef("wrapper");
|
|
41
|
+
const tabs = tv({
|
|
42
|
+
slots: {
|
|
43
|
+
root: "",
|
|
44
|
+
arrow: "",
|
|
45
|
+
bar: "no-scrollbar max-h-full overflow-auto",
|
|
46
|
+
wrapper: "h-full inline-flex max-w-none"
|
|
47
|
+
},
|
|
48
|
+
variants: {
|
|
49
|
+
layout: {
|
|
50
|
+
[TabLayout.horizontal]: {
|
|
51
|
+
root: "flex h-fit",
|
|
52
|
+
arrow: "h-[3rem] w-10",
|
|
53
|
+
bar: "h-[3rem]",
|
|
54
|
+
wrapper: ""
|
|
55
|
+
},
|
|
56
|
+
[TabLayout.vertical]: {
|
|
57
|
+
root: "inline-flex flex-col",
|
|
58
|
+
arrow: "min-h-[3rem] w-full",
|
|
59
|
+
bar: "",
|
|
60
|
+
wrapper: "flex-col h-auto"
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
wide: { true: {
|
|
64
|
+
bar: "w-full",
|
|
65
|
+
wrapper: "min-w-full"
|
|
66
|
+
} }
|
|
67
|
+
},
|
|
68
|
+
defaultVariants: { layout: TabLayout.horizontal }
|
|
69
|
+
});
|
|
70
|
+
const slots = useSlots();
|
|
71
|
+
const { showArrows, prevArrowDisabled, nextArrowDisabled, onPrevSliderClick, onNextSliderClick, keepActiveTabVisible } = useTabScroll({
|
|
72
|
+
bar,
|
|
73
|
+
wrapper,
|
|
74
|
+
vertical: () => __props.vertical
|
|
75
|
+
});
|
|
76
|
+
const { resolveRoute, isPathMatch } = useTabRouting({ onRouteChange: () => applyNewValue(true) });
|
|
77
|
+
const layout = computed(() => __props.vertical ? TabLayout.vertical : TabLayout.horizontal);
|
|
78
|
+
const ui = computed(() => tabs({
|
|
79
|
+
layout: get$1(layout),
|
|
80
|
+
wide: __props.vertical || __props.grow
|
|
81
|
+
}));
|
|
82
|
+
const children = computed(() => {
|
|
83
|
+
const tabs = getChildrenTabs(slots.default?.() ?? []);
|
|
84
|
+
const currentModelValue = get$1(internalModelValue);
|
|
85
|
+
const inheritedProps = {
|
|
86
|
+
color: __props.color,
|
|
87
|
+
grow: __props.grow,
|
|
88
|
+
disabled: __props.disabled,
|
|
89
|
+
vertical: __props.vertical,
|
|
90
|
+
align: __props.align,
|
|
91
|
+
indicatorPosition: __props.indicatorPosition
|
|
92
|
+
};
|
|
93
|
+
return tabs.map((tab, index) => {
|
|
94
|
+
let tabValue = tab.props?.value ?? index;
|
|
95
|
+
if (tab.props?.link !== false && tab.props?.to) tabValue = tab.props.to;
|
|
96
|
+
const active = currentModelValue === tabValue;
|
|
97
|
+
return {
|
|
98
|
+
...tab,
|
|
99
|
+
props: {
|
|
100
|
+
value: tabValue,
|
|
101
|
+
active,
|
|
102
|
+
...inheritedProps,
|
|
103
|
+
...tab.props
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
});
|
|
107
|
+
});
|
|
108
|
+
function getChildrenTabs(children) {
|
|
109
|
+
return children.flatMap((item) => {
|
|
110
|
+
if (item.type === Fragment && Array.isArray(item.children) && item.children.length > 0) return getChildrenTabs(item.children.filter(isVNode));
|
|
111
|
+
return [item];
|
|
112
|
+
}).flat();
|
|
113
|
+
}
|
|
114
|
+
function updateModelValue(newModelValue) {
|
|
115
|
+
set$1(modelValue, newModelValue);
|
|
116
|
+
set$1(internalModelValue, newModelValue);
|
|
117
|
+
}
|
|
118
|
+
function getTabRouteProps(props) {
|
|
119
|
+
return {
|
|
120
|
+
value: typeof props.value === "string" || typeof props.value === "number" ? props.value : void 0,
|
|
121
|
+
to: props.to ?? void 0,
|
|
122
|
+
link: typeof props.link === "boolean" ? props.link : void 0,
|
|
123
|
+
exact: typeof props.exact === "boolean" ? props.exact : void 0,
|
|
124
|
+
exactPath: typeof props.exactPath === "boolean" ? props.exactPath : void 0
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
function resolveActiveValue(onlyLink) {
|
|
128
|
+
const enabledChildren = get$1(children).filter((child) => !child.props?.disabled);
|
|
129
|
+
if (enabledChildren.length === 0) return void 0;
|
|
130
|
+
let result = get$1(modelValue) || 0;
|
|
131
|
+
enabledChildren.forEach((child, index) => {
|
|
132
|
+
const tabProps = getTabRouteProps(child.props);
|
|
133
|
+
if (!onlyLink && index === 0 && tabProps.value) result = tabProps.value;
|
|
134
|
+
const fullPath = resolveRoute(tabProps.to);
|
|
135
|
+
if (tabProps.link !== false && fullPath && isPathMatch(fullPath, tabProps)) result = fullPath;
|
|
136
|
+
});
|
|
137
|
+
return result;
|
|
138
|
+
}
|
|
139
|
+
function applyNewValue(onlyLink = false) {
|
|
140
|
+
const value = resolveActiveValue(onlyLink);
|
|
141
|
+
if (value !== void 0) updateModelValue(value);
|
|
142
|
+
keepActiveTabVisible();
|
|
143
|
+
}
|
|
144
|
+
watchImmediate(() => get$1(modelValue), (modelValue) => {
|
|
145
|
+
set$1(internalModelValue, modelValue);
|
|
146
|
+
});
|
|
147
|
+
watch(internalModelValue, () => {
|
|
148
|
+
keepActiveTabVisible();
|
|
149
|
+
});
|
|
150
|
+
onMounted(() => {
|
|
151
|
+
if (get$1(modelValue) !== void 0) return;
|
|
152
|
+
applyNewValue();
|
|
153
|
+
});
|
|
154
|
+
return (_ctx, _cache) => {
|
|
155
|
+
return openBlock(), createElementBlock("div", {
|
|
156
|
+
class: normalizeClass(unref(ui).root()),
|
|
157
|
+
"data-vertical": __props.vertical || void 0
|
|
158
|
+
}, [
|
|
159
|
+
unref(showArrows) ? (openBlock(), createElementBlock("div", {
|
|
160
|
+
key: 0,
|
|
161
|
+
class: normalizeClass(unref(ui).arrow())
|
|
162
|
+
}, [createVNode(RuiButton_default, {
|
|
163
|
+
class: "w-full h-full !rounded-none",
|
|
164
|
+
variant: "text",
|
|
165
|
+
color: __props.color,
|
|
166
|
+
disabled: unref(prevArrowDisabled),
|
|
167
|
+
onClick: _cache[0] || (_cache[0] = ($event) => unref(onPrevSliderClick)())
|
|
168
|
+
}, {
|
|
169
|
+
default: withCtx(() => [createVNode(RuiIcon_default, { name: __props.vertical ? "lu-chevron-up" : "lu-chevron-left" }, null, 8, ["name"])]),
|
|
170
|
+
_: 1
|
|
171
|
+
}, 8, ["color", "disabled"])], 2)) : createCommentVNode("", true),
|
|
172
|
+
createElementVNode("div", {
|
|
173
|
+
ref_key: "bar",
|
|
174
|
+
ref: bar,
|
|
175
|
+
class: normalizeClass(unref(ui).bar())
|
|
176
|
+
}, [createElementVNode("div", {
|
|
177
|
+
ref_key: "wrapper",
|
|
178
|
+
ref: wrapper,
|
|
179
|
+
role: "tablist",
|
|
180
|
+
"data-id": "tabs-wrapper",
|
|
181
|
+
class: normalizeClass(unref(ui).wrapper())
|
|
182
|
+
}, [(openBlock(true), createElementBlock(Fragment, null, renderList(unref(children), (child, i) => {
|
|
183
|
+
return openBlock(), createBlock(resolveDynamicComponent(child), {
|
|
184
|
+
key: i,
|
|
185
|
+
onClick: _cache[1] || (_cache[1] = ($event) => updateModelValue($event))
|
|
186
|
+
});
|
|
187
|
+
}), 128))], 2)], 2),
|
|
188
|
+
unref(showArrows) ? (openBlock(), createElementBlock("div", {
|
|
189
|
+
key: 1,
|
|
190
|
+
class: normalizeClass(unref(ui).arrow())
|
|
191
|
+
}, [createVNode(RuiButton_default, {
|
|
192
|
+
class: "w-full h-full !rounded-none",
|
|
193
|
+
variant: "text",
|
|
194
|
+
color: __props.color,
|
|
195
|
+
disabled: unref(nextArrowDisabled),
|
|
196
|
+
onClick: _cache[2] || (_cache[2] = ($event) => unref(onNextSliderClick)())
|
|
197
|
+
}, {
|
|
198
|
+
default: withCtx(() => [createVNode(RuiIcon_default, { name: __props.vertical ? "lu-chevron-down" : "lu-chevron-right" }, null, 8, ["name"])]),
|
|
199
|
+
_: 1
|
|
200
|
+
}, 8, ["color", "disabled"])], 2)) : createCommentVNode("", true)
|
|
201
|
+
], 10, _hoisted_1);
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
});
|
|
205
|
+
//#endregion
|
|
206
|
+
export { RuiTabs_vue_vue_type_script_setup_true_lang_default as default };
|
|
207
|
+
|
|
208
|
+
//# sourceMappingURL=RuiTabs.vue_vue_type_script_setup_true_lang.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RuiTabs.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../../src/components/tabs/tabs/RuiTabs.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { ContextColorsType } from '@/consts/colors';\nimport { Fragment, isVNode, type VNode } from 'vue';\nimport RuiButton from '@/components/buttons/button/RuiButton.vue';\nimport RuiIcon from '@/components/icons/RuiIcon.vue';\nimport { type TabAlignment, type TabIndicatorPosition, TabLayout } from '@/components/tabs/tab-props';\nimport { useTabRouting } from '@/components/tabs/tabs/use-tab-routing';\nimport { useTabScroll } from '@/components/tabs/tabs/use-tab-scroll';\nimport { tv } from '@/utils/tv';\n\ntype ChildNode = VNode & { props: Record<string, any> };\n\ninterface ResolvedTabProps {\n value?: string | number;\n to?: unknown;\n link?: boolean;\n exact?: boolean;\n exactPath?: boolean;\n}\n\nexport interface Props {\n color?: ContextColorsType;\n vertical?: boolean;\n disabled?: boolean;\n grow?: boolean;\n align?: TabAlignment;\n indicatorPosition?: TabIndicatorPosition;\n}\n\ndefineOptions({\n name: 'RuiTabs',\n});\n\nconst modelValue = defineModel<number | string>();\n\nconst {\n color,\n vertical = false,\n disabled = false,\n grow = false,\n align = 'center',\n indicatorPosition = 'end',\n} = defineProps<Props>();\n\nconst internalModelValue = ref<string | number>();\nconst bar = useTemplateRef<HTMLDivElement>('bar');\nconst wrapper = useTemplateRef<HTMLDivElement>('wrapper');\n\nconst tabs = tv({\n slots: {\n root: '',\n arrow: '',\n bar: 'no-scrollbar max-h-full overflow-auto',\n wrapper: 'h-full inline-flex max-w-none',\n },\n variants: {\n layout: {\n [TabLayout.horizontal]: {\n root: 'flex h-fit',\n arrow: 'h-[3rem] w-10',\n bar: 'h-[3rem]',\n wrapper: '',\n },\n [TabLayout.vertical]: {\n root: 'inline-flex flex-col',\n arrow: 'min-h-[3rem] w-full',\n bar: '',\n wrapper: 'flex-col h-auto',\n },\n },\n wide: {\n true: {\n bar: 'w-full',\n wrapper: 'min-w-full',\n },\n },\n },\n defaultVariants: { layout: TabLayout.horizontal },\n});\n\nconst slots = useSlots();\n\nconst {\n showArrows,\n prevArrowDisabled,\n nextArrowDisabled,\n onPrevSliderClick,\n onNextSliderClick,\n keepActiveTabVisible,\n} = useTabScroll({ bar, wrapper, vertical: () => vertical });\n\nconst { resolveRoute, isPathMatch } = useTabRouting({\n onRouteChange: () => applyNewValue(true),\n});\n\nconst layout = computed<TabLayout>(() => vertical ? TabLayout.vertical : TabLayout.horizontal);\nconst ui = computed<ReturnType<typeof tabs>>(() => tabs({ layout: get(layout), wide: vertical || grow }));\n\nconst children = computed<ChildNode[]>(() => {\n const slotContent = slots.default?.() ?? [];\n\n const tabs = getChildrenTabs(slotContent);\n\n const currentModelValue = get(internalModelValue);\n const inheritedProps = {\n color,\n grow,\n disabled,\n vertical,\n align,\n indicatorPosition,\n };\n\n return tabs.map((tab, index) => {\n let tabValue = tab.props?.value ?? index;\n if (tab.props?.link !== false && tab.props?.to)\n tabValue = tab.props.to;\n\n const active = currentModelValue === tabValue;\n return {\n ...tab,\n props: {\n value: tabValue,\n active,\n ...inheritedProps,\n ...tab.props,\n },\n };\n });\n});\n\n// When using dynamic content with v-for the slot content can contain fragment,\n// Go through the fragment and always return RuiTab only\nfunction getChildrenTabs(children: VNode[]): VNode[] {\n return children.flatMap((item) => {\n if (item.type === Fragment && Array.isArray(item.children) && item.children.length > 0)\n return getChildrenTabs(item.children.filter(isVNode));\n\n return [item];\n }).flat();\n}\n\nfunction updateModelValue(newModelValue: string | number): void {\n set(modelValue, newModelValue);\n set(internalModelValue, newModelValue);\n}\n\nfunction getTabRouteProps(props: Record<string, unknown>): ResolvedTabProps {\n return {\n value: typeof props.value === 'string' || typeof props.value === 'number' ? props.value : undefined,\n to: props.to ?? undefined,\n link: typeof props.link === 'boolean' ? props.link : undefined,\n exact: typeof props.exact === 'boolean' ? props.exact : undefined,\n exactPath: typeof props.exactPath === 'boolean' ? props.exactPath : undefined,\n };\n}\n\nfunction resolveActiveValue(onlyLink: boolean): string | number | undefined {\n const enabledChildren = get(children).filter(child => !child.props?.disabled);\n if (enabledChildren.length === 0)\n return undefined;\n\n let result: string | number = get(modelValue) || 0;\n enabledChildren.forEach((child, index) => {\n const tabProps = getTabRouteProps(child.props);\n if (!onlyLink && index === 0 && tabProps.value)\n result = tabProps.value;\n\n const fullPath = resolveRoute(tabProps.to);\n\n if (tabProps.link !== false && fullPath && isPathMatch(fullPath, tabProps))\n result = fullPath;\n });\n return result;\n}\n\nfunction applyNewValue(onlyLink = false): void {\n const value = resolveActiveValue(onlyLink);\n if (value !== undefined)\n updateModelValue(value);\n\n keepActiveTabVisible();\n}\n\nwatchImmediate(() => get(modelValue), (modelValue) => {\n set(internalModelValue, modelValue);\n});\n\nwatch(internalModelValue, () => {\n keepActiveTabVisible();\n});\n\nonMounted(() => {\n if (get(modelValue) !== undefined)\n return;\n\n applyNewValue();\n});\n</script>\n\n<template>\n <div\n :class=\"ui.root()\"\n :data-vertical=\"vertical || undefined\"\n >\n <div\n v-if=\"showArrows\"\n :class=\"ui.arrow()\"\n >\n <RuiButton\n class=\"w-full h-full !rounded-none\"\n variant=\"text\"\n :color=\"color\"\n :disabled=\"prevArrowDisabled\"\n @click=\"onPrevSliderClick()\"\n >\n <RuiIcon :name=\"vertical ? 'lu-chevron-up' : 'lu-chevron-left'\" />\n </RuiButton>\n </div>\n <div\n ref=\"bar\"\n :class=\"ui.bar()\"\n >\n <div\n ref=\"wrapper\"\n role=\"tablist\"\n data-id=\"tabs-wrapper\"\n :class=\"ui.wrapper()\"\n >\n <Component\n :is=\"child\"\n v-for=\"(child, i) in children\"\n :key=\"i\"\n @click=\"updateModelValue($event)\"\n />\n </div>\n </div>\n <div\n v-if=\"showArrows\"\n :class=\"ui.arrow()\"\n >\n <RuiButton\n class=\"w-full h-full !rounded-none\"\n variant=\"text\"\n :color=\"color\"\n :disabled=\"nextArrowDisabled\"\n @click=\"onNextSliderClick()\"\n >\n <RuiIcon :name=\"vertical ? 'lu-chevron-down' : 'lu-chevron-right'\" />\n </RuiButton>\n </div>\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiCA,MAAM,aAAa,SAA4B,SAAA,aAAE;EAWjD,MAAM,qBAAqB,KAAsB;EACjD,MAAM,MAAM,eAA+B,MAAM;EACjD,MAAM,UAAU,eAA+B,UAAU;EAEzD,MAAM,OAAO,GAAG;GACd,OAAO;IACL,MAAM;IACN,OAAO;IACP,KAAK;IACL,SAAS;IACV;GACD,UAAU;IACR,QAAQ;MACL,UAAU,aAAa;MACtB,MAAM;MACN,OAAO;MACP,KAAK;MACL,SAAS;MACV;MACA,UAAU,WAAW;MACpB,MAAM;MACN,OAAO;MACP,KAAK;MACL,SAAS;;KAEZ;IACD,MAAM,EACJ,MAAM;KACJ,KAAK;KACL,SAAS;KACV,EAAA;IAEJ;GACD,iBAAiB,EAAE,QAAQ,UAAU,YAAA;GACtC,CAAC;EAEF,MAAM,QAAQ,UAAU;EAExB,MAAM,EACJ,YACA,mBACA,mBACA,mBACA,mBACA,yBACE,aAAa;GAAE;GAAK;GAAS,gBAAgB,QAAA;GAAU,CAAC;EAE5D,MAAM,EAAE,cAAc,gBAAgB,cAAc,EAClD,qBAAqB,cAAc,KAAK,EACzC,CAAC;EAEF,MAAM,SAAS,eAA0B,QAAA,WAAW,UAAU,WAAW,UAAU,WAAW;EAC9F,MAAM,KAAK,eAAwC,KAAK;GAAE,QAAQ,MAAI,OAAO;GAAE,MAAM,QAAA,YAAY,QAAA;GAAM,CAAC,CAAC;EAEzG,MAAM,WAAW,eAA4B;GAG3C,MAAM,OAAO,gBAFO,MAAM,WAAW,IAAI,EAAE,CAEF;GAEzC,MAAM,oBAAoB,MAAI,mBAAmB;GACjD,MAAM,iBAAiB;IACrB,OAAI,QAAA;IACJ,MAAG,QAAA;IACH,UAAO,QAAA;IACP,UAAO,QAAA;IACP,OAAI,QAAA;IACJ,mBAAgB,QAAA;IACjB;AAED,UAAO,KAAK,KAAK,KAAK,UAAU;IAC9B,IAAI,WAAW,IAAI,OAAO,SAAS;AACnC,QAAI,IAAI,OAAO,SAAS,SAAS,IAAI,OAAO,GAC1C,YAAW,IAAI,MAAM;IAEvB,MAAM,SAAS,sBAAsB;AACrC,WAAO;KACL,GAAG;KACH,OAAO;MACL,OAAO;MACP;MACA,GAAG;MACH,GAAG,IAAI;;KAEV;KACD;IACF;EAIF,SAAS,gBAAgB,UAA4B;AACnD,UAAO,SAAS,SAAS,SAAS;AAChC,QAAI,KAAK,SAAS,YAAY,MAAM,QAAQ,KAAK,SAAS,IAAI,KAAK,SAAS,SAAS,EACnF,QAAO,gBAAgB,KAAK,SAAS,OAAO,QAAQ,CAAC;AAEvD,WAAO,CAAC,KAAK;KACb,CAAC,MAAM;;EAGX,SAAS,iBAAiB,eAAsC;AAC9D,SAAI,YAAY,cAAc;AAC9B,SAAI,oBAAoB,cAAc;;EAGxC,SAAS,iBAAiB,OAAkD;AAC1E,UAAO;IACL,OAAO,OAAO,MAAM,UAAU,YAAY,OAAO,MAAM,UAAU,WAAW,MAAM,QAAQ,KAAA;IAC1F,IAAI,MAAM,MAAM,KAAA;IAChB,MAAM,OAAO,MAAM,SAAS,YAAY,MAAM,OAAO,KAAA;IACrD,OAAO,OAAO,MAAM,UAAU,YAAY,MAAM,QAAQ,KAAA;IACxD,WAAW,OAAO,MAAM,cAAc,YAAY,MAAM,YAAY,KAAA;IACrE;;EAGH,SAAS,mBAAmB,UAAgD;GAC1E,MAAM,kBAAkB,MAAI,SAAS,CAAC,QAAO,UAAS,CAAC,MAAM,OAAO,SAAS;AAC7E,OAAI,gBAAgB,WAAW,EAC7B,QAAO,KAAA;GAET,IAAI,SAA0B,MAAI,WAAW,IAAI;AACjD,mBAAgB,SAAS,OAAO,UAAU;IACxC,MAAM,WAAW,iBAAiB,MAAM,MAAM;AAC9C,QAAI,CAAC,YAAY,UAAU,KAAK,SAAS,MACvC,UAAS,SAAS;IAEpB,MAAM,WAAW,aAAa,SAAS,GAAG;AAE1C,QAAI,SAAS,SAAS,SAAS,YAAY,YAAY,UAAU,SAAS,CACxE,UAAS;KACX;AACF,UAAO;;EAGT,SAAS,cAAc,WAAW,OAAa;GAC7C,MAAM,QAAQ,mBAAmB,SAAS;AAC1C,OAAI,UAAU,KAAA,EACZ,kBAAiB,MAAM;AAEzB,yBAAsB;;AAGxB,uBAAqB,MAAI,WAAW,GAAG,eAAe;AACpD,SAAI,oBAAoB,WAAW;IACnC;AAEF,QAAM,0BAA0B;AAC9B,yBAAsB;IACtB;AAEF,kBAAgB;AACd,OAAI,MAAI,WAAW,KAAK,KAAA,EACtB;AAEF,kBAAe;IACf;;uBAIA,mBAkDM,OAAA;IAjDH,OAAK,eAAE,MAAA,GAAE,CAAC,MAAI,CAAA;IACd,iBAAe,QAAA,YAAY,KAAA;;IAGpB,MAAA,WAAU,IAAA,WAAA,EADlB,mBAaM,OAAA;;KAXH,OAAK,eAAE,MAAA,GAAE,CAAC,OAAK,CAAA;QAEhB,YAQY,mBAAA;KAPV,OAAM;KACN,SAAQ;KACP,OAAO,QAAA;KACP,UAAU,MAAA,kBAAiB;KAC3B,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,MAAA,kBAAiB,EAAA;;4BAEyC,CAAlE,YAAkE,iBAAA,EAAxD,MAAM,QAAA,WAAQ,kBAAA,mBAAA,EAAA,MAAA,GAAA,CAAA,OAAA,CAAA,CAAA,CAAA;;;IAG5B,mBAiBM,OAAA;cAhBA;KAAJ,KAAI;KACH,OAAK,eAAE,MAAA,GAAE,CAAC,KAAG,CAAA;QAEd,mBAYM,OAAA;cAXA;KAAJ,KAAI;KACJ,MAAK;KACL,WAAQ;KACP,OAAK,eAAE,MAAA,GAAE,CAAC,SAAO,CAAA;0BAElB,mBAKE,UAAA,MAAA,WAHqB,MAAA,SAAQ,GAArB,OAAO,MAAC;yBAFlB,YAKE,wBAJK,MAAK,EAAA;MAET,KAAK;MACL,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,iBAAiB,OAAM;;;IAK7B,MAAA,WAAU,IAAA,WAAA,EADlB,mBAaM,OAAA;;KAXH,OAAK,eAAE,MAAA,GAAE,CAAC,OAAK,CAAA;QAEhB,YAQY,mBAAA;KAPV,OAAM;KACN,SAAQ;KACP,OAAO,QAAA;KACP,UAAU,MAAA,kBAAiB;KAC3B,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,MAAA,kBAAiB,EAAA;;4BAE4C,CAArE,YAAqE,iBAAA,EAA3D,MAAM,QAAA,WAAQ,oBAAA,oBAAA,EAAA,MAAA,GAAA,CAAA,OAAA,CAAA,CAAA,CAAA"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { RouteMatchOptions } from '../../../components/tabs/tab-props.js';
|
|
2
|
+
import { type RouteLocationRaw } from 'vue-router';
|
|
3
|
+
interface UseTabRoutingOptions {
|
|
4
|
+
/** Callback invoked when the route changes, to re-sync the active tab */
|
|
5
|
+
onRouteChange: () => void;
|
|
6
|
+
}
|
|
7
|
+
interface UseTabRoutingReturn {
|
|
8
|
+
/** Whether vue-router is available in the app context */
|
|
9
|
+
hasRouter: boolean;
|
|
10
|
+
/**
|
|
11
|
+
* Resolves a route location and returns its full path, or undefined
|
|
12
|
+
* if the router is not available or the value is not a valid route location.
|
|
13
|
+
*/
|
|
14
|
+
resolveRoute: (to: unknown) => string | undefined;
|
|
15
|
+
/**
|
|
16
|
+
* Checks whether a given path matches the current route.
|
|
17
|
+
* Supports exact path, exact route, and prefix matching.
|
|
18
|
+
*/
|
|
19
|
+
isPathMatch: (path: string, options: RouteMatchOptions) => boolean;
|
|
20
|
+
}
|
|
21
|
+
export declare function isRouteLocation(value: unknown): value is RouteLocationRaw;
|
|
22
|
+
/**
|
|
23
|
+
* Composable that manages vue-router integration for the RuiTabs component.
|
|
24
|
+
* Provides route resolution and path matching utilities, and watches for
|
|
25
|
+
* route changes to notify the parent component.
|
|
26
|
+
*/
|
|
27
|
+
export declare function useTabRouting({ onRouteChange }: UseTabRoutingOptions): UseTabRoutingReturn;
|
|
28
|
+
export {};
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { getCurrentInstance, watch } from "vue";
|
|
2
|
+
import { useRoute, useRouter } from "vue-router";
|
|
3
|
+
//#region src/components/tabs/tabs/use-tab-routing.ts
|
|
4
|
+
function isRouteLocation(value) {
|
|
5
|
+
return typeof value === "string" || typeof value === "object" && value !== null;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Composable that manages vue-router integration for the RuiTabs component.
|
|
9
|
+
* Provides route resolution and path matching utilities, and watches for
|
|
10
|
+
* route changes to notify the parent component.
|
|
11
|
+
*/
|
|
12
|
+
function useTabRouting({ onRouteChange }) {
|
|
13
|
+
const hasRouter = getCurrentInstance()?.appContext.config.globalProperties.$router !== void 0;
|
|
14
|
+
if (!hasRouter) return {
|
|
15
|
+
hasRouter,
|
|
16
|
+
resolveRoute: () => void 0,
|
|
17
|
+
isPathMatch: () => false
|
|
18
|
+
};
|
|
19
|
+
const route = useRoute();
|
|
20
|
+
const router = useRouter();
|
|
21
|
+
function resolveRoute(to) {
|
|
22
|
+
if (!isRouteLocation(to)) return void 0;
|
|
23
|
+
return router.resolve(to).fullPath;
|
|
24
|
+
}
|
|
25
|
+
function isPathMatch(path, { exactPath, exact }) {
|
|
26
|
+
const currentRoute = route.fullPath;
|
|
27
|
+
if (exactPath) return currentRoute === path;
|
|
28
|
+
const base = typeof window !== "undefined" ? window.location.origin : "http://localhost";
|
|
29
|
+
const routeWithoutQueryParams = new URL(path, base).pathname;
|
|
30
|
+
if (exact) return currentRoute === routeWithoutQueryParams;
|
|
31
|
+
return currentRoute.startsWith(routeWithoutQueryParams);
|
|
32
|
+
}
|
|
33
|
+
watch(route, onRouteChange);
|
|
34
|
+
return {
|
|
35
|
+
hasRouter,
|
|
36
|
+
resolveRoute,
|
|
37
|
+
isPathMatch
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
//#endregion
|
|
41
|
+
export { useTabRouting };
|
|
42
|
+
|
|
43
|
+
//# sourceMappingURL=use-tab-routing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-tab-routing.js","names":[],"sources":["../../../../src/components/tabs/tabs/use-tab-routing.ts"],"sourcesContent":["import type { RouteMatchOptions } from '@/components/tabs/tab-props';\nimport { type RouteLocationRaw, useRoute, useRouter } from 'vue-router';\n\ninterface UseTabRoutingOptions {\n /** Callback invoked when the route changes, to re-sync the active tab */\n onRouteChange: () => void;\n}\n\ninterface UseTabRoutingReturn {\n /** Whether vue-router is available in the app context */\n hasRouter: boolean;\n /**\n * Resolves a route location and returns its full path, or undefined\n * if the router is not available or the value is not a valid route location.\n */\n resolveRoute: (to: unknown) => string | undefined;\n /**\n * Checks whether a given path matches the current route.\n * Supports exact path, exact route, and prefix matching.\n */\n isPathMatch: (path: string, options: RouteMatchOptions) => boolean;\n}\n\nexport function isRouteLocation(value: unknown): value is RouteLocationRaw {\n return typeof value === 'string' || (typeof value === 'object' && value !== null);\n}\n\n/**\n * Composable that manages vue-router integration for the RuiTabs component.\n * Provides route resolution and path matching utilities, and watches for\n * route changes to notify the parent component.\n */\nexport function useTabRouting({ onRouteChange }: UseTabRoutingOptions): UseTabRoutingReturn {\n const hasRouter = getCurrentInstance()?.appContext.config.globalProperties.$router !== undefined;\n\n if (!hasRouter) {\n return {\n hasRouter,\n resolveRoute: () => undefined,\n isPathMatch: () => false,\n };\n }\n\n const route = useRoute();\n const router = useRouter();\n\n function resolveRoute(to: unknown): string | undefined {\n if (!isRouteLocation(to))\n return undefined;\n\n return router.resolve(to).fullPath;\n }\n\n function isPathMatch(\n path: string,\n { exactPath, exact }: RouteMatchOptions,\n ): boolean {\n const currentRoute = route.fullPath;\n\n if (exactPath)\n return currentRoute === path;\n\n const base = typeof window !== 'undefined' ? window.location.origin : 'http://localhost';\n const routeWithoutQueryParams = new URL(path, base).pathname;\n\n if (exact)\n return currentRoute === routeWithoutQueryParams;\n\n return currentRoute.startsWith(routeWithoutQueryParams);\n }\n\n watch(route, onRouteChange);\n\n return {\n hasRouter,\n resolveRoute,\n isPathMatch,\n };\n}\n"],"mappings":";;;AAuBA,SAAgB,gBAAgB,OAA2C;AACzE,QAAO,OAAO,UAAU,YAAa,OAAO,UAAU,YAAY,UAAU;;;;;;;AAQ9E,SAAgB,cAAc,EAAE,iBAA4D;CAC1F,MAAM,YAAY,oBAAoB,EAAE,WAAW,OAAO,iBAAiB,YAAY,KAAA;AAEvF,KAAI,CAAC,UACH,QAAO;EACL;EACA,oBAAoB,KAAA;EACpB,mBAAmB;EACpB;CAGH,MAAM,QAAQ,UAAU;CACxB,MAAM,SAAS,WAAW;CAE1B,SAAS,aAAa,IAAiC;AACrD,MAAI,CAAC,gBAAgB,GAAG,CACtB,QAAO,KAAA;AAET,SAAO,OAAO,QAAQ,GAAG,CAAC;;CAG5B,SAAS,YACP,MACA,EAAE,WAAW,SACJ;EACT,MAAM,eAAe,MAAM;AAE3B,MAAI,UACF,QAAO,iBAAiB;EAE1B,MAAM,OAAO,OAAO,WAAW,cAAc,OAAO,SAAS,SAAS;EACtE,MAAM,0BAA0B,IAAI,IAAI,MAAM,KAAK,CAAC;AAEpD,MAAI,MACF,QAAO,iBAAiB;AAE1B,SAAO,aAAa,WAAW,wBAAwB;;AAGzD,OAAM,OAAO,cAAc;AAE3B,QAAO;EACL;EACA;EACA;EACD"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { ComputedRef, MaybeRefOrGetter, Ref, ShallowRef } from 'vue';
|
|
2
|
+
interface UseTabScrollOptions {
|
|
3
|
+
/** The scrollable bar container element */
|
|
4
|
+
bar: Readonly<ShallowRef<HTMLDivElement | null>>;
|
|
5
|
+
/** The wrapper element containing the tab buttons */
|
|
6
|
+
wrapper: Readonly<ShallowRef<HTMLDivElement | null>>;
|
|
7
|
+
/** Getter for the current vertical orientation state */
|
|
8
|
+
vertical: MaybeRefOrGetter<boolean>;
|
|
9
|
+
}
|
|
10
|
+
interface UseTabScrollReturn {
|
|
11
|
+
showArrows: Readonly<Ref<boolean>>;
|
|
12
|
+
prevArrowDisabled: ComputedRef<boolean>;
|
|
13
|
+
nextArrowDisabled: ComputedRef<boolean>;
|
|
14
|
+
onPrevSliderClick: () => void;
|
|
15
|
+
onNextSliderClick: () => void;
|
|
16
|
+
keepActiveTabVisible: () => void;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Composable that manages tab scroll behavior, overflow arrow visibility,
|
|
20
|
+
* and active tab auto-scrolling for the RuiTabs component.
|
|
21
|
+
*/
|
|
22
|
+
export declare function useTabScroll({ bar, wrapper, vertical }: UseTabScrollOptions): UseTabScrollReturn;
|
|
23
|
+
export {};
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { computed, nextTick, readonly, shallowRef, toRefs, toValue } from "vue";
|
|
2
|
+
import { useElementSize, useResizeObserver, useScroll } from "@vueuse/core";
|
|
3
|
+
import { get as get$1, set as set$1 } from "@vueuse/shared";
|
|
4
|
+
//#region src/components/tabs/tabs/use-tab-scroll.ts
|
|
5
|
+
/**
|
|
6
|
+
* Composable that manages tab scroll behavior, overflow arrow visibility,
|
|
7
|
+
* and active tab auto-scrolling for the RuiTabs component.
|
|
8
|
+
*/
|
|
9
|
+
function useTabScroll({ bar, wrapper, vertical }) {
|
|
10
|
+
const showArrows = shallowRef(false);
|
|
11
|
+
const { width: barWidth, height: barHeight } = useElementSize(bar);
|
|
12
|
+
const { arrivedState, x, y } = useScroll(bar, { behavior: "smooth" });
|
|
13
|
+
const { top, bottom, left, right } = toRefs(arrivedState);
|
|
14
|
+
function checkOverflow() {
|
|
15
|
+
const elem = get$1(wrapper);
|
|
16
|
+
const barElem = get$1(bar);
|
|
17
|
+
if (!elem || !barElem) {
|
|
18
|
+
set$1(showArrows, false);
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
set$1(showArrows, toValue(vertical) ? elem.scrollHeight > barElem.offsetHeight : elem.scrollWidth > barElem.offsetWidth);
|
|
22
|
+
}
|
|
23
|
+
useResizeObserver(bar, checkOverflow);
|
|
24
|
+
useResizeObserver(wrapper, () => {
|
|
25
|
+
checkOverflow();
|
|
26
|
+
keepActiveTabVisible();
|
|
27
|
+
});
|
|
28
|
+
const prevArrowDisabled = computed(() => toValue(vertical) ? get$1(top) : get$1(left));
|
|
29
|
+
const nextArrowDisabled = computed(() => toValue(vertical) ? get$1(bottom) : get$1(right));
|
|
30
|
+
function scrollToActiveTab() {
|
|
31
|
+
if (!get$1(showArrows)) return;
|
|
32
|
+
const elem = get$1(wrapper);
|
|
33
|
+
const barElem = get$1(bar);
|
|
34
|
+
if (!elem || !barElem) return;
|
|
35
|
+
const activeTab = elem.querySelector("[data-active-tab]");
|
|
36
|
+
if (!activeTab) return;
|
|
37
|
+
const childLeft = activeTab.offsetLeft - elem.offsetLeft;
|
|
38
|
+
const childTop = activeTab.offsetTop - elem.offsetTop;
|
|
39
|
+
barElem.scrollTo({
|
|
40
|
+
left: Math.max(Math.min(barElem.scrollLeft, childLeft), childLeft + activeTab.offsetWidth - barElem.offsetWidth),
|
|
41
|
+
top: Math.max(Math.min(barElem.scrollTop, childTop), childTop + activeTab.offsetHeight - barElem.offsetHeight),
|
|
42
|
+
behavior: "smooth"
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
function keepActiveTabVisible() {
|
|
46
|
+
nextTick(scrollToActiveTab);
|
|
47
|
+
}
|
|
48
|
+
function onPrevSliderClick() {
|
|
49
|
+
if (!toValue(vertical)) set$1(x, get$1(x) - get$1(barWidth));
|
|
50
|
+
else set$1(y, get$1(y) - get$1(barHeight));
|
|
51
|
+
}
|
|
52
|
+
function onNextSliderClick() {
|
|
53
|
+
if (!toValue(vertical)) set$1(x, get$1(x) + get$1(barWidth));
|
|
54
|
+
else set$1(y, get$1(y) + get$1(barHeight));
|
|
55
|
+
}
|
|
56
|
+
return {
|
|
57
|
+
showArrows: readonly(showArrows),
|
|
58
|
+
prevArrowDisabled,
|
|
59
|
+
nextArrowDisabled,
|
|
60
|
+
onPrevSliderClick,
|
|
61
|
+
onNextSliderClick,
|
|
62
|
+
keepActiveTabVisible
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
//#endregion
|
|
66
|
+
export { useTabScroll };
|
|
67
|
+
|
|
68
|
+
//# sourceMappingURL=use-tab-scroll.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-tab-scroll.js","names":[],"sources":["../../../../src/components/tabs/tabs/use-tab-scroll.ts"],"sourcesContent":["import type { ComputedRef, MaybeRefOrGetter, Ref, ShallowRef } from 'vue';\n\ninterface UseTabScrollOptions {\n /** The scrollable bar container element */\n bar: Readonly<ShallowRef<HTMLDivElement | null>>;\n /** The wrapper element containing the tab buttons */\n wrapper: Readonly<ShallowRef<HTMLDivElement | null>>;\n /** Getter for the current vertical orientation state */\n vertical: MaybeRefOrGetter<boolean>;\n}\n\ninterface UseTabScrollReturn {\n showArrows: Readonly<Ref<boolean>>;\n prevArrowDisabled: ComputedRef<boolean>;\n nextArrowDisabled: ComputedRef<boolean>;\n onPrevSliderClick: () => void;\n onNextSliderClick: () => void;\n keepActiveTabVisible: () => void;\n}\n\n/**\n * Composable that manages tab scroll behavior, overflow arrow visibility,\n * and active tab auto-scrolling for the RuiTabs component.\n */\nexport function useTabScroll({ bar, wrapper, vertical }: UseTabScrollOptions): UseTabScrollReturn {\n const showArrows = shallowRef<boolean>(false);\n\n const { width: barWidth, height: barHeight } = useElementSize(bar);\n const { arrivedState, x, y } = useScroll(bar, { behavior: 'smooth' });\n const { top, bottom, left, right } = toRefs(arrivedState);\n\n function checkOverflow(): void {\n const elem = get(wrapper);\n const barElem = get(bar);\n if (!elem || !barElem) {\n set(showArrows, false);\n return;\n }\n\n const overflows = toValue(vertical)\n ? elem.scrollHeight > barElem.offsetHeight\n : elem.scrollWidth > barElem.offsetWidth;\n\n set(showArrows, overflows);\n }\n\n useResizeObserver(bar, checkOverflow);\n useResizeObserver(wrapper, () => {\n checkOverflow();\n keepActiveTabVisible();\n });\n\n const prevArrowDisabled = computed<boolean>(() => toValue(vertical) ? get(top) : get(left));\n\n const nextArrowDisabled = computed<boolean>(() => toValue(vertical) ? get(bottom) : get(right));\n\n function scrollToActiveTab(): void {\n if (!get(showArrows))\n return;\n\n const elem = get(wrapper);\n const barElem = get(bar);\n\n if (!elem || !barElem)\n return;\n\n const activeTab = elem.querySelector<HTMLElement>('[data-active-tab]');\n\n if (!activeTab)\n return;\n\n const childLeft = activeTab.offsetLeft - elem.offsetLeft;\n const childTop = activeTab.offsetTop - elem.offsetTop;\n\n barElem.scrollTo({\n left: Math.max(Math.min(barElem.scrollLeft, childLeft), childLeft + activeTab.offsetWidth - barElem.offsetWidth),\n top: Math.max(Math.min(barElem.scrollTop, childTop), childTop + activeTab.offsetHeight - barElem.offsetHeight),\n behavior: 'smooth',\n });\n }\n\n function keepActiveTabVisible(): void {\n nextTick(scrollToActiveTab);\n }\n\n function onPrevSliderClick(): void {\n if (!toValue(vertical))\n set(x, get(x) - get(barWidth));\n else\n set(y, get(y) - get(barHeight));\n }\n\n function onNextSliderClick(): void {\n if (!toValue(vertical))\n set(x, get(x) + get(barWidth));\n else\n set(y, get(y) + get(barHeight));\n }\n\n return {\n showArrows: readonly(showArrows),\n prevArrowDisabled,\n nextArrowDisabled,\n onPrevSliderClick,\n onNextSliderClick,\n keepActiveTabVisible,\n };\n}\n"],"mappings":";;;;;;;;AAwBA,SAAgB,aAAa,EAAE,KAAK,SAAS,YAAqD;CAChG,MAAM,aAAa,WAAoB,MAAM;CAE7C,MAAM,EAAE,OAAO,UAAU,QAAQ,cAAc,eAAe,IAAI;CAClE,MAAM,EAAE,cAAc,GAAG,MAAM,UAAU,KAAK,EAAE,UAAU,UAAU,CAAC;CACrE,MAAM,EAAE,KAAK,QAAQ,MAAM,UAAU,OAAO,aAAa;CAEzD,SAAS,gBAAsB;EAC7B,MAAM,OAAO,MAAI,QAAQ;EACzB,MAAM,UAAU,MAAI,IAAI;AACxB,MAAI,CAAC,QAAQ,CAAC,SAAS;AACrB,SAAI,YAAY,MAAM;AACtB;;AAOF,QAAI,YAJc,QAAQ,SAAS,GAC/B,KAAK,eAAe,QAAQ,eAC5B,KAAK,cAAc,QAAQ,YAEL;;AAG5B,mBAAkB,KAAK,cAAc;AACrC,mBAAkB,eAAe;AAC/B,iBAAe;AACf,wBAAsB;GACtB;CAEF,MAAM,oBAAoB,eAAwB,QAAQ,SAAS,GAAG,MAAI,IAAI,GAAG,MAAI,KAAK,CAAC;CAE3F,MAAM,oBAAoB,eAAwB,QAAQ,SAAS,GAAG,MAAI,OAAO,GAAG,MAAI,MAAM,CAAC;CAE/F,SAAS,oBAA0B;AACjC,MAAI,CAAC,MAAI,WAAW,CAClB;EAEF,MAAM,OAAO,MAAI,QAAQ;EACzB,MAAM,UAAU,MAAI,IAAI;AAExB,MAAI,CAAC,QAAQ,CAAC,QACZ;EAEF,MAAM,YAAY,KAAK,cAA2B,oBAAoB;AAEtE,MAAI,CAAC,UACH;EAEF,MAAM,YAAY,UAAU,aAAa,KAAK;EAC9C,MAAM,WAAW,UAAU,YAAY,KAAK;AAE5C,UAAQ,SAAS;GACf,MAAM,KAAK,IAAI,KAAK,IAAI,QAAQ,YAAY,UAAU,EAAE,YAAY,UAAU,cAAc,QAAQ,YAAY;GAChH,KAAK,KAAK,IAAI,KAAK,IAAI,QAAQ,WAAW,SAAS,EAAE,WAAW,UAAU,eAAe,QAAQ,aAAa;GAC9G,UAAU;GACX,CAAC;;CAGJ,SAAS,uBAA6B;AACpC,WAAS,kBAAkB;;CAG7B,SAAS,oBAA0B;AACjC,MAAI,CAAC,QAAQ,SAAS,CACpB,OAAI,GAAG,MAAI,EAAE,GAAG,MAAI,SAAS,CAAC;MAE9B,OAAI,GAAG,MAAI,EAAE,GAAG,MAAI,UAAU,CAAC;;CAGnC,SAAS,oBAA0B;AACjC,MAAI,CAAC,QAAQ,SAAS,CACpB,OAAI,GAAG,MAAI,EAAE,GAAG,MAAI,SAAS,CAAC;MAE9B,OAAI,GAAG,MAAI,EAAE,GAAG,MAAI,UAAU,CAAC;;AAGnC,QAAO;EACL,YAAY,SAAS,WAAW;EAChC;EACA;EACA;EACA;EACA;EACD"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import RuiTimePicker_vue_vue_type_script_setup_true_lang_default from "./RuiTimePicker.vue_vue_type_script_setup_true_lang.js";
|
|
2
|
+
//#region src/components/time-picker/RuiTimePicker.vue
|
|
3
|
+
var RuiTimePicker_default = RuiTimePicker_vue_vue_type_script_setup_true_lang_default;
|
|
4
|
+
//#endregion
|
|
5
|
+
export { RuiTimePicker_default as default };
|
|
6
|
+
|
|
7
|
+
//# sourceMappingURL=RuiTimePicker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RuiTimePicker.js","names":[],"sources":["../../../src/components/time-picker/RuiTimePicker.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, onMounted, ref, type StyleValue, watch } from 'vue';\nimport { timePickerStyles } from '@/components/time-picker/time-picker-styles';\nimport { TimeAccuracy } from '@/consts/time-accuracy';\nimport { assert } from '@/utils/assert';\n\nexport type TimePickerSelection = 'hour' | 'minute' | 'second' | 'millisecond';\n\nexport interface RuiTimePickerProps {\n accuracy?: TimeAccuracy;\n borderless?: boolean;\n}\n\nconst modelValue = defineModel<Date | undefined>({ required: true });\n\nconst selectedHour = defineModel<number | undefined>('hour');\nconst selectedMinute = defineModel<number | undefined>('minute');\nconst selectedSecond = defineModel<number | undefined>('second');\nconst selectedMillisecond = defineModel<number | undefined>('millisecond');\nconst editMode = defineModel<TimePickerSelection>('selection', { default: 'hour' });\n\nconst { accuracy = TimeAccuracy.MINUTE, borderless = false } = defineProps<RuiTimePickerProps>();\n\nconst ui = timePickerStyles();\n\nconst FULL_CIRCLE = 360;\nconst TWELVE_HOURS = 12;\n\nconst totalItemsPerMode: Record<TimePickerSelection, number> = {\n hour: 12,\n minute: 60,\n second: 60,\n millisecond: 1000,\n};\n\nconst intervals: Record<TimePickerSelection, number> = {\n hour: 1,\n minute: 5,\n second: 5,\n millisecond: 100,\n};\n\nconst isDragging = ref<boolean>(false);\nconst clockFace = useTemplateRef<InstanceType<typeof HTMLDivElement>>('clockFace');\n\nconst showSecond = computed<boolean>(\n () => accuracy === TimeAccuracy.SECOND || accuracy === TimeAccuracy.MILLISECOND,\n);\nconst showMillisecond = computed<boolean>(() => accuracy === TimeAccuracy.MILLISECOND);\n\nconst period = computed<'PM' | 'AM'>(() =>\n isDefined(selectedHour) && get(selectedHour) >= TWELVE_HOURS ? 'PM' : 'AM',\n);\n\nconst displayHour = computed<number | undefined>(() => {\n if (!isDefined(selectedHour)) {\n return undefined;\n }\n const hourValue = get(selectedHour);\n const hour = hourValue % TWELVE_HOURS;\n return hour === 0 ? TWELVE_HOURS : hour;\n});\n\nconst editedValue = computed<number | undefined>(() => {\n const mode = get(editMode);\n if (mode === 'hour') {\n return get(displayHour);\n }\n else if (mode === 'minute') {\n return get(selectedMinute);\n }\n else if (mode === 'second') {\n return get(selectedSecond);\n }\n else {\n return get(selectedMillisecond);\n }\n});\n\nconst displayClockHandCircle = computed<boolean>(() => {\n const mode = get(editMode);\n if (mode === 'hour' || !isDefined(editedValue)) {\n return false;\n }\n else {\n const interval = intervals[mode];\n const value = get(editedValue);\n return value % interval !== 0;\n }\n});\n\nconst dotStyle = computed<StyleValue>(() => ({\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n}));\n\nconst clockHandStyle = computed<StyleValue>(() => {\n if (!isDefined(editedValue)) {\n return {};\n }\n const currentValue = get(editedValue);\n const totalItems = totalItemsPerMode[get(editMode)];\n const angle = currentValue * (FULL_CIRCLE / totalItems);\n\n return {\n height: '36%',\n top: '14%',\n left: '50%',\n transformOrigin: 'bottom center',\n transform: `translateX(-50%) rotate(${angle}deg)`,\n zIndex: 10,\n };\n});\n\nconst clockHandCircleStyle = computed<StyleValue>(() => {\n if (!isDefined(editedValue)) {\n return {};\n }\n const radius = '38%';\n const currentValue = get(editedValue);\n const totalItems = totalItemsPerMode[get(editMode)];\n const angle = currentValue * (FULL_CIRCLE / totalItems);\n\n const radians = (angle * Math.PI) / 180;\n\n const x = 50 + parseFloat(radius) * Math.cos(radians - Math.PI / 2);\n const y = 50 + parseFloat(radius) * Math.sin(radians - Math.PI / 2);\n\n return {\n position: 'absolute',\n top: `${y}%`,\n left: `${x}%`,\n width: '10px',\n height: '10px',\n borderRadius: '50%',\n transform: 'translate(-50%, -50%)',\n zIndex: 11,\n };\n});\n\nconst clockNumbers = computed<number[]>(() => {\n const mode = get(editMode);\n const interval = intervals[mode];\n const total = totalItemsPerMode[mode];\n const numbers = generateNumbers(total, interval);\n if (mode === 'hour') {\n numbers[0] = 12;\n }\n return numbers;\n});\n\nfunction getModelHours(): number | undefined {\n return isDefined(modelValue) ? new Date(get(modelValue)).getHours() : undefined;\n}\n\nfunction getModelMinutes(): number | undefined {\n return isDefined(modelValue) ? new Date(get(modelValue)).getMinutes() : undefined;\n}\n\nfunction getModelSeconds(): number | undefined {\n const acceptedAccuracy: TimeAccuracy[] = [TimeAccuracy.SECOND, TimeAccuracy.MILLISECOND];\n return acceptedAccuracy.includes(accuracy) && isDefined(modelValue)\n ? new Date(get(modelValue)).getSeconds()\n : undefined;\n}\n\nfunction getModelMilliseconds(): number | undefined {\n return accuracy === TimeAccuracy.MILLISECOND && isDefined(modelValue)\n ? new Date(get(modelValue)).getMilliseconds()\n : undefined;\n}\n\nfunction generateNumbers(total: number, interval: number): number[] {\n const numbers: number[] = [];\n for (let i = 0; i < total; i += interval) {\n numbers.push(i);\n }\n return numbers;\n}\n\nfunction formatValue(value?: number, padding = 2): string {\n return value !== undefined ? value.toString().padStart(padding, '0') : '-'.repeat(padding);\n}\n\nfunction numberStyle(num: number): StyleValue {\n const radius = '38%';\n const totalItems = totalItemsPerMode[get(editMode)];\n const angle = num * (FULL_CIRCLE / totalItems) - 90;\n\n const radians = (angle * Math.PI) / 180;\n const x = 50 + parseFloat(radius) * Math.cos(radians);\n const y = 50 + parseFloat(radius) * Math.sin(radians);\n\n return {\n top: `${y}%`,\n left: `${x}%`,\n transform: 'translate(-50%, -50%)',\n };\n}\n\nfunction isSelectedNumber(num: number): boolean {\n if (!isDefined(editedValue)) {\n return false;\n }\n const mode = get(editMode);\n if (mode === 'hour') {\n return get(displayHour) === num;\n }\n else {\n const value = get(editedValue);\n const interval = intervals[mode];\n return value === num || (value % interval === 0 && value === num);\n }\n}\n\nfunction toggleAmPm(): void {\n if (!isDefined(selectedHour)) {\n return;\n }\n if (get(selectedHour) < TWELVE_HOURS) {\n set(selectedHour, get(selectedHour) + TWELVE_HOURS);\n }\n else {\n set(selectedHour, get(selectedHour) - TWELVE_HOURS);\n }\n\n updateModelValue();\n}\n\nfunction startDrag(event: MouseEvent | TouchEvent): void {\n event.preventDefault();\n set(isDragging, true);\n\n if (!isDefined(clockFace))\n return;\n\n const rect = get(clockFace).getBoundingClientRect();\n const centerX = rect.left + rect.width / 2;\n const centerY = rect.top + rect.height / 2;\n let rafId: number | null = null;\n\n const applyMove = (clientX: number, clientY: number): void => {\n const x = clientX - centerX;\n const y = clientY - centerY;\n\n let angle = Math.atan2(y, x) * (180 / Math.PI) + 90;\n if (angle < 0)\n angle += FULL_CIRCLE;\n\n const mode = get(editMode);\n const unit =\n Math.round(angle / (FULL_CIRCLE / totalItemsPerMode[mode])) % totalItemsPerMode[mode];\n if (mode === 'hour') {\n let hour = unit;\n if (hour === 0)\n hour = TWELVE_HOURS;\n\n if (get(period) === 'PM' && hour < TWELVE_HOURS) {\n hour += TWELVE_HOURS;\n }\n else if (get(period) === 'AM' && hour === TWELVE_HOURS) {\n hour = 0;\n }\n\n set(selectedHour, hour);\n }\n else if (mode === 'minute') {\n set(selectedMinute, unit);\n }\n else if (mode === 'second') {\n set(selectedSecond, unit);\n }\n else {\n set(selectedMillisecond, unit);\n }\n\n updateModelValue();\n };\n\n const handleMove = (moveEvent: MouseEvent | TouchEvent): void => {\n if (!get(isDragging))\n return;\n\n if (rafId !== null)\n return;\n\n let clientX: number;\n let clientY: number;\n\n if ('touches' in moveEvent) {\n const touch = moveEvent.touches[0];\n assert(touch);\n clientX = touch.clientX;\n clientY = touch.clientY;\n }\n else {\n clientX = moveEvent.clientX;\n clientY = moveEvent.clientY;\n }\n\n rafId = requestAnimationFrame(() => {\n applyMove(clientX, clientY);\n rafId = null;\n });\n };\n\n const handleEnd = (): void => {\n if (rafId !== null) {\n cancelAnimationFrame(rafId);\n rafId = null;\n }\n set(isDragging, false);\n document.removeEventListener('mousemove', handleMove);\n document.removeEventListener('touchmove', handleMove);\n document.removeEventListener('mouseup', handleEnd);\n document.removeEventListener('touchend', handleEnd);\n\n if (get(editMode) === 'hour') {\n set(editMode, 'minute');\n }\n else if (get(showSecond) && get(editMode) === 'minute') {\n set(editMode, 'second');\n }\n else if (get(showMillisecond) && get(editMode) === 'second') {\n set(editMode, 'millisecond');\n }\n };\n\n document.addEventListener('mousemove', handleMove);\n document.addEventListener('touchmove', handleMove);\n document.addEventListener('mouseup', handleEnd);\n document.addEventListener('touchend', handleEnd);\n\n // Apply initial position synchronously for immediate feedback\n const initialEvent = event;\n let clientX: number;\n let clientY: number;\n if ('touches' in initialEvent) {\n const touch = initialEvent.touches[0];\n assert(touch);\n clientX = touch.clientX;\n clientY = touch.clientY;\n }\n else {\n clientX = initialEvent.clientX;\n clientY = initialEvent.clientY;\n }\n applyMove(clientX, clientY);\n}\n\nfunction selectByClick(num: number): void {\n const mode = get(editMode);\n if (mode === 'hour') {\n let newHour = num;\n\n if (get(period) === 'PM' && newHour < TWELVE_HOURS) {\n newHour += TWELVE_HOURS;\n }\n\n set(selectedHour, newHour);\n set(editMode, 'minute');\n }\n else if (mode === 'minute') {\n set(selectedMinute, num);\n if (get(showSecond))\n set(editMode, 'second');\n }\n else if (mode === 'second') {\n set(selectedSecond, num);\n if (get(showMillisecond)) {\n set(editMode, 'millisecond');\n }\n }\n else if (mode === 'millisecond') {\n set(selectedMillisecond, num);\n }\n\n updateModelValue();\n}\n\nfunction updateModelValue(): void {\n if (!(isDefined(selectedHour) && isDefined(selectedMinute))) {\n return;\n }\n nextTick(() => {\n const date = isDefined(modelValue) ? new Date(get(modelValue)) : new Date();\n date.setHours(get(selectedHour));\n date.setMinutes(get(selectedMinute));\n date.setSeconds(get(selectedSecond) ?? 0);\n date.setMilliseconds(get(selectedMillisecond) ?? 0);\n set(modelValue, date);\n });\n}\n\nwatch(\n modelValue,\n () => {\n set(selectedHour, getModelHours());\n set(selectedMinute, getModelMinutes());\n set(selectedSecond, getModelSeconds());\n set(selectedMillisecond, getModelMilliseconds());\n },\n);\n\nonMounted(() => {\n set(selectedHour, getModelHours());\n set(selectedMinute, getModelMinutes());\n set(selectedSecond, getModelSeconds());\n set(selectedMillisecond, getModelMilliseconds());\n});\n</script>\n\n<template>\n <div\n role=\"group\"\n aria-label=\"Time picker\"\n :class=\"ui.root({ bordered: !borderless })\"\n >\n <div :class=\"ui.digitalDisplay()\">\n <div class=\"flex justify-center items-center gap-1\">\n <div\n role=\"button\"\n aria-label=\"Select hours\"\n :class=\"ui.digit({ active: editMode === 'hour' })\"\n @click=\"editMode = 'hour'\"\n >\n {{ formatValue(displayHour) }}\n </div>\n <div class=\"text-2xl font-semibold\">\n :\n </div>\n <div\n role=\"button\"\n aria-label=\"Select minutes\"\n :class=\"ui.digit({ active: editMode === 'minute' })\"\n @click=\"editMode = 'minute'\"\n >\n {{ formatValue(selectedMinute) }}\n </div>\n <div\n v-if=\"showSecond\"\n class=\"text-2xl font-semibold\"\n >\n :\n </div>\n <div\n v-if=\"showSecond\"\n role=\"button\"\n aria-label=\"Select seconds\"\n :class=\"ui.digit({ active: editMode === 'second' })\"\n @click=\"editMode = 'second'\"\n >\n {{ formatValue(selectedSecond) }}\n </div>\n\n <div\n v-if=\"showMillisecond\"\n class=\"text-lg font-semibold\"\n >\n .\n </div>\n\n <div\n v-if=\"showMillisecond\"\n role=\"button\"\n aria-label=\"Select milliseconds\"\n :class=\"ui.digit({ active: editMode === 'millisecond', class: '!text-lg' })\"\n @click=\"editMode = 'millisecond'\"\n >\n {{ formatValue(selectedMillisecond, 3) }}\n </div>\n <div class=\"text-xl\">\n <div\n role=\"button\"\n aria-label=\"Toggle AM/PM\"\n class=\"rui-time-picker-period cursor-pointer\"\n @click=\"toggleAmPm()\"\n >\n {{ period }}\n </div>\n </div>\n </div>\n </div>\n\n <div\n ref=\"clockFace\"\n role=\"listbox\"\n :aria-label=\"`Select ${editMode}`\"\n :class=\"ui.clockFace()\"\n @mousedown=\"startDrag($event)\"\n @touchstart=\"startDrag($event)\"\n >\n <div\n :class=\"ui.centerDot()\"\n :style=\"dotStyle\"\n />\n\n <div\n :class=\"ui.clockHand()\"\n :style=\"clockHandStyle\"\n />\n\n <div\n v-if=\"displayClockHandCircle\"\n :class=\"ui.clockHandCircle()\"\n :style=\"clockHandCircleStyle\"\n />\n\n <div\n v-for=\"num in clockNumbers\"\n :key=\"`num-${num}`\"\n role=\"option\"\n :aria-selected=\"isSelectedNumber(num)\"\n :class=\"[\n ui.clockNumber({ selected: isSelectedNumber(num) }),\n `rui-${editMode}-${num.toString().padStart(2, '0')}`,\n ]\"\n :style=\"numberStyle(num)\"\n @click=\"selectByClick(num)\"\n >\n {{ num }}\n </div>\n </div>\n </div>\n</template>\n"],"mappings":""}
|