@rotki/ui-library 2.12.1 → 2.12.2
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.vue.js +1 -1
- package/dist/components/accordions/accordions/RuiAccordions.vue.js +1 -1
- package/dist/components/alerts/RuiAlert.vue.d.ts +2 -2
- package/dist/components/alerts/RuiAlert.vue2.js +1 -1
- package/dist/components/buttons/button/RuiButton.vue2.js +1 -1
- package/dist/components/buttons/button-group/RuiButtonGroup.vue2.js +1 -1
- package/dist/components/calendar/RuiCalendar.vue.js +1 -1
- package/dist/components/calendar/RuiCalendarGrid.vue2.js +1 -1
- package/dist/components/calendar/RuiCalendarHeader.vue2.js +1 -1
- package/dist/components/calendar/RuiCalendarMenu.vue2.js +1 -1
- package/dist/components/cards/RuiCard.vue.d.ts +1 -1
- package/dist/components/cards/RuiCard.vue2.js +1 -1
- package/dist/components/cards/RuiCardHeader.vue2.js +1 -1
- package/dist/components/chips/RuiChip.vue.d.ts +1 -1
- package/dist/components/chips/RuiChip.vue2.js +1 -1
- package/dist/components/color-picker/RuiColorBoard.vue2.js +6 -2
- package/dist/components/color-picker/RuiColorBoard.vue2.js.map +1 -1
- package/dist/components/color-picker/RuiColorDisplay.vue.js +1 -1
- package/dist/components/color-picker/RuiColorHue.vue2.js +8 -2
- package/dist/components/color-picker/RuiColorHue.vue2.js.map +1 -1
- package/dist/components/color-picker/RuiColorInput.vue.js +1 -1
- package/dist/components/color-picker/RuiColorPicker.vue.js +6 -2
- package/dist/components/color-picker/RuiColorPicker.vue.js.map +1 -1
- package/dist/components/date-time-picker/RuiDateTimePicker.vue.d.ts +4 -4
- package/dist/components/date-time-picker/RuiDateTimePicker.vue2.js +5 -5
- package/dist/components/date-time-picker/RuiDateTimePicker.vue2.js.map +1 -1
- package/dist/components/date-time-picker/RuiDateTimePickerMenu.vue.js +1 -1
- package/dist/components/divider/RuiDivider.vue.js +6 -3
- package/dist/components/divider/RuiDivider.vue.js.map +1 -1
- package/dist/components/forms/auto-complete/RuiAutoComplete.vue.d.ts +17 -34
- package/dist/components/forms/auto-complete/RuiAutoComplete.vue2.js +18 -9
- package/dist/components/forms/auto-complete/RuiAutoComplete.vue2.js.map +1 -1
- package/dist/components/forms/checkbox/RuiCheckbox.vue.d.ts +2 -2
- package/dist/components/forms/checkbox/RuiCheckbox.vue2.js +2 -2
- package/dist/components/forms/checkbox/RuiCheckbox.vue2.js.map +1 -1
- package/dist/components/forms/radio-button/radio/RuiRadio.vue.d.ts +1 -1
- package/dist/components/forms/radio-button/radio/RuiRadio.vue2.js +2 -2
- package/dist/components/forms/radio-button/radio/RuiRadio.vue2.js.map +1 -1
- package/dist/components/forms/radio-button/radio-group/RuiRadioGroup.vue.d.ts +1 -1
- package/dist/components/forms/radio-button/radio-group/RuiRadioGroup.vue2.js +2 -2
- package/dist/components/forms/radio-button/radio-group/RuiRadioGroup.vue2.js.map +1 -1
- package/dist/components/forms/revealable-text-field/RuiRevealableTextField.vue.d.ts +3 -3
- package/dist/components/forms/revealable-text-field/RuiRevealableTextField.vue.js +4 -2
- package/dist/components/forms/revealable-text-field/RuiRevealableTextField.vue.js.map +1 -1
- package/dist/components/forms/select/RuiMenuSelect.vue.d.ts +17 -17
- package/dist/components/forms/select/RuiMenuSelect.vue2.js +14 -7
- package/dist/components/forms/select/RuiMenuSelect.vue2.js.map +1 -1
- package/dist/components/forms/select/RuiSimpleSelect.vue.d.ts +3 -1
- package/dist/components/forms/select/RuiSimpleSelect.vue2.js +8 -4
- package/dist/components/forms/select/RuiSimpleSelect.vue2.js.map +1 -1
- package/dist/components/forms/slider/RuiSlider.vue.d.ts +2 -2
- package/dist/components/forms/slider/RuiSlider.vue2.js +10 -8
- package/dist/components/forms/slider/RuiSlider.vue2.js.map +1 -1
- package/dist/components/forms/switch/RuiSwitch.vue.d.ts +1 -1
- package/dist/components/forms/switch/RuiSwitch.vue2.js +2 -2
- package/dist/components/forms/switch/RuiSwitch.vue2.js.map +1 -1
- package/dist/components/forms/text-area/RuiTextArea.vue.d.ts +3 -3
- package/dist/components/forms/text-area/RuiTextArea.vue2.js +8 -8
- package/dist/components/forms/text-area/RuiTextArea.vue2.js.map +1 -1
- package/dist/components/forms/text-field/RuiTextField.vue.d.ts +6 -6
- package/dist/components/forms/text-field/RuiTextField.vue2.js +5 -5
- package/dist/components/forms/text-field/RuiTextField.vue2.js.map +1 -1
- package/dist/components/helpers/RuiFormTextDetail.vue.js +1 -1
- package/dist/components/helpers/RuiFormTextDetail.vue.js.map +1 -1
- package/dist/components/icons/RuiIcon.vue2.js +3 -6
- package/dist/components/icons/RuiIcon.vue2.js.map +1 -1
- package/dist/components/index.d.ts +2 -2
- package/dist/components/loaders/RuiSkeletonBase.vue2.js +1 -1
- package/dist/components/loaders/RuiSkeletonLoader.vue2.js +1 -1
- package/dist/components/logos/RuiLogo.vue.js +3 -1
- package/dist/components/logos/RuiLogo.vue.js.map +1 -1
- package/dist/components/overlays/badge/RuiBadge.vue.d.ts +3 -3
- package/dist/components/overlays/badge/RuiBadge.vue2.js +1 -1
- package/dist/components/overlays/bottom-sheet/RuiBottomSheet.vue.js +1 -1
- package/dist/components/overlays/dialog/RuiDialog.vue.d.ts +4 -3
- package/dist/components/overlays/dialog/RuiDialog.vue2.js +11 -5
- package/dist/components/overlays/dialog/RuiDialog.vue2.js.map +1 -1
- package/dist/components/overlays/menu/RuiMenu.vue.d.ts +1 -1
- package/dist/components/overlays/menu/RuiMenu.vue2.js +6 -4
- package/dist/components/overlays/menu/RuiMenu.vue2.js.map +1 -1
- package/dist/components/overlays/navigation-drawer/RuiNavigationDrawer.vue.d.ts +4 -3
- package/dist/components/overlays/navigation-drawer/RuiNavigationDrawer.vue2.js +9 -4
- package/dist/components/overlays/navigation-drawer/RuiNavigationDrawer.vue2.js.map +1 -1
- package/dist/components/overlays/notification/RuiNotification.vue.d.ts +1 -1
- package/dist/components/overlays/notification/RuiNotification.vue.js +3 -1
- package/dist/components/overlays/notification/RuiNotification.vue.js.map +1 -1
- package/dist/components/overlays/tooltip/RuiTooltip.vue.d.ts +1 -1
- package/dist/components/overlays/tooltip/RuiTooltip.vue2.js +7 -3
- package/dist/components/overlays/tooltip/RuiTooltip.vue2.js.map +1 -1
- package/dist/components/progress/RuiProgress.vue.d.ts +1 -1
- package/dist/components/progress/RuiProgress.vue2.js +1 -1
- package/dist/components/steppers/RuiFooterStepper.vue2.js +15 -8
- package/dist/components/steppers/RuiFooterStepper.vue2.js.map +1 -1
- package/dist/components/steppers/RuiStepper.vue.d.ts +1 -1
- package/dist/components/steppers/RuiStepper.vue2.js +9 -4
- package/dist/components/steppers/RuiStepper.vue2.js.map +1 -1
- package/dist/components/steppers/RuiStepperCustomIcon.vue2.js +1 -1
- package/dist/components/steppers/RuiStepperIcon.vue2.js +1 -1
- package/dist/components/tables/RuiDataTable.vue2.js +28 -24
- package/dist/components/tables/RuiDataTable.vue2.js.map +1 -1
- package/dist/components/tables/RuiExpandButton.vue2.js +3 -2
- package/dist/components/tables/RuiExpandButton.vue2.js.map +1 -1
- package/dist/components/tables/RuiTableHead.vue2.js +1 -1
- package/dist/components/tables/RuiTablePagination.vue.d.ts +1 -1
- package/dist/components/tables/RuiTablePagination.vue2.js +12 -5
- package/dist/components/tables/RuiTablePagination.vue2.js.map +1 -1
- package/dist/components/tabs/tab/RuiTab.vue.d.ts +2 -2
- package/dist/components/tabs/tab/RuiTab.vue2.js +9 -6
- package/dist/components/tabs/tab/RuiTab.vue2.js.map +1 -1
- package/dist/components/tabs/tab-item/RuiTabItem.vue.d.ts +1 -1
- package/dist/components/tabs/tab-item/RuiTabItem.vue2.js +2 -1
- package/dist/components/tabs/tab-item/RuiTabItem.vue2.js.map +1 -1
- package/dist/components/tabs/tab-items/RuiTabItems.vue.d.ts +1 -1
- package/dist/components/tabs/tab-items/RuiTabItems.vue2.js +1 -1
- package/dist/components/tabs/tabs/RuiTabs.vue.d.ts +1 -1
- package/dist/components/tabs/tabs/RuiTabs.vue2.js +1 -1
- package/dist/components/time-picker/RuiTimePicker.vue2.js +21 -4
- package/dist/components/time-picker/RuiTimePicker.vue2.js.map +1 -1
- package/dist/composables/icons.js +1 -1
- package/dist/composables/icons.js.map +1 -1
- package/dist/composables/popper.js +3 -3
- package/dist/composables/popper.js.map +1 -1
- package/dist/composables/theme.js +7 -4
- package/dist/composables/theme.js.map +1 -1
- package/dist/icons/icons_1.d.ts +15 -15
- package/dist/icons/icons_1.js +96 -96
- package/dist/icons/icons_1.js.map +1 -1
- package/dist/icons/icons_2.d.ts +38 -38
- package/dist/icons/icons_2.js +255 -255
- package/dist/icons/icons_2.js.map +1 -1
- package/dist/icons/icons_3.d.ts +26 -26
- package/dist/icons/icons_3.js +153 -153
- package/dist/icons/icons_3.js.map +1 -1
- package/dist/icons/icons_4.d.ts +37 -2
- package/dist/icons/icons_4.js +192 -17
- package/dist/icons/icons_4.js.map +1 -1
- package/dist/icons/index.d.ts +1 -1
- package/dist/icons/index.js +1 -1
- package/dist/icons/index.js.map +1 -1
- package/dist/index.js +65 -30
- package/dist/style.css +26 -26
- package/dist/vite-plugin/index.js +4 -4
- package/dist/vite-plugin/index.js.map +1 -1
- package/dist/vite-plugin/scanner.js +3 -3
- package/dist/vite-plugin/scanner.js.map +1 -1
- package/dist/web-types.json +43 -24
- package/package.json +28 -34
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RuiTab.vue2.js","sources":["../../../../src/components/tabs/tab/RuiTab.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { RouteLocationRaw } from 'vue-router';\nimport type { ContextColorsType } from '@/consts/colors';\nimport RuiButton from '@/components/buttons/button/RuiButton.vue';\n\nexport interface Props {\n color?: ContextColorsType;\n disabled?: boolean;\n grow?: boolean;\n value?: number | string;\n active?: boolean;\n activeClass?: string;\n link?: boolean;\n target?: string;\n to?: RouteLocationRaw;\n exact?: boolean;\n exactPath?: boolean;\n vertical?: boolean;\n align?: 'start' | 'center' | 'end';\n indicatorPosition?: 'start' | 'end';\n}\n\ndefineOptions({\n name: 'RuiTab',\n inheritAttrs: false,\n});\n\nconst props = withDefaults(defineProps<Props>(), {\n color: undefined,\n disabled: false,\n grow: false,\n value: generateId(),\n active: false,\n activeClass: '',\n link: false,\n to: '',\n target: '_self',\n exact: false,\n exactPath: false,\n vertical: false,\n align: 'center',\n indicatorPosition: 'end',\n});\n\nconst emit = defineEmits<{\n (e: 'click', value: string | number): void;\n}>();\n\nconst slots = defineSlots<{\n default?: (props?: object) => any;\n prepend?: (props?: object) => any;\n append?: (props?: object) => any;\n}>();\n\nconst { target, grow, active, activeClass, disabled, vertical, align, value, indicatorPosition }\n = toRefs(props);\n\nconst css = useCssModule();\n\nconst isSelf = computed(() => get(target) === '_self');\n\nconst tabClass = computed(() => [\n css.tab,\n css[`tab--${get(align)}`],\n css[`tab-indicator--${get(indicatorPosition)}`],\n {\n [css['tab--grow'] ?? '']: get(grow),\n [`${css['tab--active']} active-tab ${get(activeClass)}`]: get(active),\n [css['tab--disabled'] ?? '']: get(disabled),\n [css['tab--vertical'] ?? '']: get(vertical),\n },\n]);\n\nfunction click() {\n emit('click', get(value));\n}\n</script>\n\n<template>\n <RuiButton\n v-if=\"disabled\"\n variant=\"text\"\n disabled\n :class=\"tabClass\"\n hide-focus-indicator\n tabindex=\"-1\"\n role=\"tab\"\n v-bind=\"$attrs\"\n >\n <template\n v-for=\"(_, name) in slots\"\n #[name]=\"slotData\"\n >\n <slot\n :name=\"name\"\n v-bind=\"slotData\"\n />\n </template>\n </RuiButton>\n <RuiButton\n v-else-if=\"!link\"\n :class=\"tabClass\"\n :color=\"active ? color : undefined\"\n role=\"tab\"\n v-bind=\"$attrs\"\n tabindex=\"-1\"\n hide-focus-indicator\n variant=\"text\"\n @click=\"click()\"\n >\n <template\n v-for=\"(_, name) in slots\"\n #[name]=\"slotData\"\n >\n <slot\n :name=\"name\"\n v-bind=\"slotData\"\n />\n </template>\n </RuiButton>\n <RouterLink\n v-else\n #default=\"{ href, navigate, isActive, isExactActive }\"\n :to=\"to\"\n :exact=\"exact\"\n :exact-path=\"exactPath\"\n custom\n >\n <RuiButton\n :class=\"[\n ...tabClass,\n {\n [`${css['tab--active']} active-tab-link`]: exact\n ? isExactActive\n : isActive,\n },\n ]\"\n :color=\"active || (exact ? isExactActive : isActive) ? color : undefined\"\n :href=\"isSelf ? undefined : href\"\n :target=\"target\"\n role=\"tab\"\n no-outline\n tag=\"a\"\n hide-focus-indicator\n tabindex=\"-1\"\n v-bind=\"$attrs\"\n variant=\"text\"\n @click=\"\n click();\n isSelf ? navigate($event) : undefined;\n \"\n >\n <template\n v-for=\"(_, name) in slots\"\n #[name]=\"slotData\"\n >\n <slot\n :name=\"name\"\n v-bind=\"slotData\"\n />\n </template>\n </RuiButton>\n </RouterLink>\n</template>\n\n<style lang=\"scss\" module>\n.tab {\n @apply h-full min-w-[90px] max-w-[360px] flex items-center rounded-none cursor-pointer relative whitespace-nowrap shrink-0;\n @apply px-4 #{!important};\n\n &--vertical {\n @apply h-[2.625rem] w-full max-w-none;\n }\n\n &--grow {\n @apply grow max-w-none;\n }\n\n &--active {\n &:after {\n content: '';\n @apply absolute h-0 w-full bottom-0 left-0 border-b-2 border-current;\n }\n\n &.tab-indicator--start {\n &:after {\n @apply top-0 bottom-auto;\n }\n }\n\n &.tab--vertical {\n &:after {\n @apply h-full w-0 right-0 left-auto border-b-0 border-r-2;\n }\n\n &.tab-indicator--start {\n &:after {\n @apply left-0 right-auto;\n }\n }\n }\n }\n\n &--disabled {\n @apply cursor-not-allowed;\n }\n\n &--start {\n @apply justify-start text-left rtl:justify-end rtl:text-right;\n }\n\n &--center {\n @apply justify-center text-center;\n }\n\n &--end {\n @apply justify-end text-right rtl:justify-start rtl:text-left;\n }\n}\n</style>\n"],"names":["_useSlots","_unref","_openBlock","_createBlock","_mergeProps","$attrs","_createSlots","_withCtx","_renderSlot","_normalizeProps","_guardReactiveProps","_createVNode"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"RuiTab.vue2.js","sources":["../../../../src/components/tabs/tab/RuiTab.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { RouteLocationRaw } from 'vue-router';\nimport type { ContextColorsType } from '@/consts/colors';\nimport RuiButton from '@/components/buttons/button/RuiButton.vue';\nimport { generateId } from '@/utils/generate-id';\n\nexport interface Props {\n color?: ContextColorsType;\n disabled?: boolean;\n grow?: boolean;\n value?: number | string;\n active?: boolean;\n activeClass?: string;\n link?: boolean;\n target?: string;\n to?: RouteLocationRaw;\n exact?: boolean;\n exactPath?: boolean;\n vertical?: boolean;\n align?: 'start' | 'center' | 'end';\n indicatorPosition?: 'start' | 'end';\n}\n\ndefineOptions({\n name: 'RuiTab',\n inheritAttrs: false,\n});\n\nconst props = withDefaults(defineProps<Props>(), {\n color: undefined,\n disabled: false,\n grow: false,\n value: generateId(),\n active: false,\n activeClass: '',\n link: false,\n to: '',\n target: '_self',\n exact: false,\n exactPath: false,\n vertical: false,\n align: 'center',\n indicatorPosition: 'end',\n});\n\nconst emit = defineEmits<{\n (e: 'click', value: string | number): void;\n}>();\n\nconst slots = defineSlots<{\n default?: (props?: object) => any;\n prepend?: (props?: object) => any;\n append?: (props?: object) => any;\n}>();\n\nconst { target, grow, active, activeClass, disabled, vertical, align, value, indicatorPosition }\n = toRefs(props);\n\nconst css = useCssModule();\n\nconst isSelf = computed(() => get(target) === '_self');\n\nconst tabClass = computed(() => [\n css.tab,\n css[`tab--${get(align)}`],\n css[`tab-indicator--${get(indicatorPosition)}`],\n {\n [css['tab--grow'] ?? '']: get(grow),\n [`${css['tab--active']} active-tab ${get(activeClass)}`]: get(active),\n [css['tab--disabled'] ?? '']: get(disabled),\n [css['tab--vertical'] ?? '']: get(vertical),\n },\n]);\n\nfunction click() {\n emit('click', get(value));\n}\n</script>\n\n<template>\n <RuiButton\n v-if=\"disabled\"\n variant=\"text\"\n disabled\n :class=\"tabClass\"\n hide-focus-indicator\n tabindex=\"-1\"\n role=\"tab\"\n :aria-selected=\"active\"\n v-bind=\"$attrs\"\n >\n <template\n v-for=\"(_, name) in slots\"\n #[name]=\"slotData\"\n >\n <slot\n :name=\"name\"\n v-bind=\"slotData\"\n />\n </template>\n </RuiButton>\n <RuiButton\n v-else-if=\"!link\"\n :class=\"tabClass\"\n :color=\"active ? color : undefined\"\n role=\"tab\"\n :aria-selected=\"active\"\n v-bind=\"$attrs\"\n tabindex=\"-1\"\n hide-focus-indicator\n variant=\"text\"\n @click=\"click()\"\n >\n <template\n v-for=\"(_, name) in slots\"\n #[name]=\"slotData\"\n >\n <slot\n :name=\"name\"\n v-bind=\"slotData\"\n />\n </template>\n </RuiButton>\n <RouterLink\n v-else\n #default=\"{ href, navigate, isActive, isExactActive }\"\n :to=\"to\"\n :exact=\"exact\"\n :exact-path=\"exactPath\"\n custom\n >\n <RuiButton\n :class=\"[\n ...tabClass,\n {\n [`${css['tab--active']} active-tab-link`]: exact\n ? isExactActive\n : isActive,\n },\n ]\"\n :color=\"active || (exact ? isExactActive : isActive) ? color : undefined\"\n :href=\"isSelf ? undefined : href\"\n :target=\"target\"\n role=\"tab\"\n :aria-selected=\"active || (exact ? isExactActive : isActive)\"\n no-outline\n tag=\"a\"\n hide-focus-indicator\n tabindex=\"-1\"\n v-bind=\"$attrs\"\n variant=\"text\"\n @click=\"\n click();\n isSelf ? navigate($event) : undefined;\n \"\n >\n <template\n v-for=\"(_, name) in slots\"\n #[name]=\"slotData\"\n >\n <slot\n :name=\"name\"\n v-bind=\"slotData\"\n />\n </template>\n </RuiButton>\n </RouterLink>\n</template>\n\n<style lang=\"scss\" module>\n.tab {\n @apply h-full min-w-[90px] max-w-[360px] flex items-center rounded-none cursor-pointer relative whitespace-nowrap shrink-0;\n @apply px-4 #{!important};\n\n &--vertical {\n @apply h-[2.625rem] w-full max-w-none;\n }\n\n &--grow {\n @apply grow max-w-none;\n }\n\n &--active {\n &:after {\n content: '';\n @apply absolute h-0 w-full bottom-0 left-0 border-b-2 border-current;\n }\n\n &.tab-indicator--start {\n &:after {\n @apply top-0 bottom-auto;\n }\n }\n\n &.tab--vertical {\n &:after {\n @apply h-full w-0 right-0 left-auto border-b-0 border-r-2;\n }\n\n &.tab-indicator--start {\n &:after {\n @apply left-0 right-auto;\n }\n }\n }\n }\n\n &--disabled {\n @apply cursor-not-allowed;\n }\n\n &--start {\n @apply justify-start text-left rtl:justify-end rtl:text-right;\n }\n\n &--center {\n @apply justify-center text-center;\n }\n\n &--end {\n @apply justify-end text-right rtl:justify-start rtl:text-left;\n }\n}\n</style>\n"],"names":["_useSlots","_unref","_openBlock","_createBlock","_mergeProps","$attrs","_createSlots","_withCtx","_renderSlot","_normalizeProps","_guardReactiveProps","_createVNode"],"mappings":"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"}
|
|
@@ -11,8 +11,8 @@ type __VLS_Slots = {} & {
|
|
|
11
11
|
default?: (props: typeof __VLS_9) => any;
|
|
12
12
|
};
|
|
13
13
|
declare const __VLS_base: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{}>, {
|
|
14
|
-
value: number | string;
|
|
15
14
|
reverse: boolean;
|
|
15
|
+
value: number | string;
|
|
16
16
|
active: boolean;
|
|
17
17
|
eager: boolean;
|
|
18
18
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { defineComponent,
|
|
1
|
+
import { defineComponent, openBlock, createElementBlock, normalizeClass, createVNode, Transition, withCtx, renderSlot, createCommentVNode } from "vue";
|
|
2
2
|
const _hoisted_1 = {
|
|
3
3
|
key: 0,
|
|
4
4
|
class: "w-full"
|
|
@@ -21,6 +21,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
21
21
|
setup(__props) {
|
|
22
22
|
return (_ctx, _cache) => {
|
|
23
23
|
return openBlock(), createElementBlock("div", {
|
|
24
|
+
role: "tabpanel",
|
|
24
25
|
class: normalizeClass([_ctx.$style.tab, { "active-tab-item": __props.active }])
|
|
25
26
|
}, [
|
|
26
27
|
createVNode(Transition, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RuiTabItem.vue2.js","sources":["../../../../src/components/tabs/tab-item/RuiTabItem.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nexport interface Props {\n active?: boolean;\n value?: number | string;\n eager?: boolean;\n reverse?: boolean;\n}\n\ndefineOptions({\n name: 'RuiTabItem',\n});\n\nwithDefaults(defineProps<Props>(), {\n value: undefined,\n eager: false,\n active: false,\n reverse: false,\n});\n</script>\n\n<template>\n <div
|
|
1
|
+
{"version":3,"file":"RuiTabItem.vue2.js","sources":["../../../../src/components/tabs/tab-item/RuiTabItem.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nexport interface Props {\n active?: boolean;\n value?: number | string;\n eager?: boolean;\n reverse?: boolean;\n}\n\ndefineOptions({\n name: 'RuiTabItem',\n});\n\nwithDefaults(defineProps<Props>(), {\n value: undefined,\n eager: false,\n active: false,\n reverse: false,\n});\n</script>\n\n<template>\n <div\n role=\"tabpanel\"\n :class=\"[$style.tab, { 'active-tab-item': active }]\"\n >\n <Transition\n :enter-from-class=\"`opacity-0 ${reverse ? '-translate-x-8' : 'translate-x-8'}`\"\n :leave-to-class=\"`opacity-0 !h-0 overflow-hidden ${\n reverse ? 'translate-x-8' : '-translate-x-8'\n }`\"\n enter-active-class=\"w-full transform duration-300 transition\"\n enter-to-class=\"opacity-100 translate-x-0\"\n leave-active-class=\"w-full transform duration-300 transition !h-0 overflow-hidden\"\n leave-from-class=\"opacity-100 translate-x-0 !h-0 overflow-hidden\"\n >\n <div\n v-if=\"active\"\n class=\"w-full\"\n >\n <slot />\n </div>\n </Transition>\n <div\n v-if=\"eager && !active\"\n class=\"hidden\"\n >\n <slot />\n </div>\n </div>\n</template>\n\n<style lang=\"scss\" module>\n.tab {\n @apply w-full;\n}\n</style>\n"],"names":["_createElementBlock","_normalizeClass","$style","_createVNode","_Transition","_openBlock","_renderSlot"],"mappings":";;;;;;;;;;;;;;;;;;;;;;0BAqBEA,mBA2BM,OAAA;AAAA,QA1BJ,MAAK;AAAA,QACJ,OAAKC,eAAA,CAAGC,KAAAA,OAAO,0BAA0B,QAAA,QAAM,CAAA;AAAA,MAAA;QAEhDC,YAgBaC,YAAA;AAAA,UAfV,iCAA+B,QAAA,UAAO,mBAAA,eAAA;AAAA,UACtC,kBAAc,kCAA6C,QAAA,UAAO,kBAAA;UAGnE,sBAAmB;AAAA,UACnB,kBAAe;AAAA,UACf,sBAAmB;AAAA,UACnB,oBAAiB;AAAA,QAAA;2BAEjB,MAKM;AAAA,YAJE,QAAA,UADRC,UAAA,GAAAL,mBAKM,OALN,YAKM;AAAA,cADJM,WAAQ,KAAA,QAAA,SAAA;AAAA,YAAA;;;;QAIJ,QAAA,UAAU,QAAA,UADlBD,aAAAL,mBAKM,OALN,YAKM;AAAA,UADJM,WAAQ,KAAA,QAAA,SAAA;AAAA,QAAA;;;;;"}
|
|
@@ -12,7 +12,7 @@ declare const __VLS_export: <T extends string | number>(__VLS_props: NonNullable
|
|
|
12
12
|
expose: (exposed: {}) => void;
|
|
13
13
|
attrs: any;
|
|
14
14
|
slots: {};
|
|
15
|
-
emit: (
|
|
15
|
+
emit: (event: "update:modelValue", value: T | undefined) => void;
|
|
16
16
|
}>) => import("vue").VNode & {
|
|
17
17
|
__ctx?: Awaited<typeof __VLS_setup>;
|
|
18
18
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { defineComponent, useCssVars, unref, useModel, useSlots, ref, watch, nextTick, computed,
|
|
1
|
+
import { defineComponent, useCssVars, unref, useModel, useSlots, ref, watch, nextTick, computed, openBlock, createElementBlock, mergeProps, createElementVNode, Fragment, renderList, createBlock, resolveDynamicComponent, isVNode } from "vue";
|
|
2
2
|
import { set, get } from "@vueuse/shared";
|
|
3
3
|
import { useElementSize } from "@vueuse/core";
|
|
4
4
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
@@ -13,9 +13,9 @@ declare const __VLS_export: import("vue").DefineComponent<Props, {}, {}, {}, {},
|
|
|
13
13
|
}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{
|
|
14
14
|
"onUpdate:modelValue"?: ((modelValue: string | number) => any) | undefined;
|
|
15
15
|
}>, {
|
|
16
|
+
vertical: boolean;
|
|
16
17
|
color: ContextColorsType;
|
|
17
18
|
disabled: boolean;
|
|
18
|
-
vertical: boolean;
|
|
19
19
|
modelValue: number | string;
|
|
20
20
|
align: "start" | "center" | "end";
|
|
21
21
|
grow: boolean;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { defineComponent, toRefs, ref, useSlots, computed, onMounted, watch,
|
|
1
|
+
import { defineComponent, toRefs, ref, useSlots, computed, onMounted, watch, openBlock, createElementBlock, normalizeClass, unref, createVNode, withCtx, createCommentVNode, createElementVNode, Fragment, renderList, createBlock, resolveDynamicComponent, isVNode, nextTick } from "vue";
|
|
2
2
|
import { get, set, throttleFilter } from "@vueuse/shared";
|
|
3
3
|
import { useRoute, useRouter } from "vue-router";
|
|
4
4
|
import RuiButton from "../../buttons/button/RuiButton.vue.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { defineComponent,
|
|
1
|
+
import { defineComponent, useModel, ref, useTemplateRef, computed, onMounted, watch, openBlock, createElementBlock, normalizeClass, createElementVNode, toDisplayString, createCommentVNode, normalizeStyle, Fragment, renderList, mergeModels, nextTick } from "vue";
|
|
2
2
|
import { TimeAccuracy } from "../../consts/time-accuracy.js";
|
|
3
3
|
import { assert } from "../../utils/assert.js";
|
|
4
4
|
import { isDefined } from "@vueuse/core";
|
|
@@ -13,7 +13,8 @@ const _hoisted_3 = {
|
|
|
13
13
|
class: "text-lg font-semibold"
|
|
14
14
|
};
|
|
15
15
|
const _hoisted_4 = { class: "text-xl" };
|
|
16
|
-
const _hoisted_5 = ["
|
|
16
|
+
const _hoisted_5 = ["aria-label"];
|
|
17
|
+
const _hoisted_6 = ["aria-selected", "onClick"];
|
|
17
18
|
const FULL_CIRCLE = 360;
|
|
18
19
|
const TWELVE_HOURS = 12;
|
|
19
20
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
@@ -320,6 +321,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
320
321
|
}, { deep: true });
|
|
321
322
|
return (_ctx, _cache) => {
|
|
322
323
|
return openBlock(), createElementBlock("div", {
|
|
324
|
+
role: "group",
|
|
325
|
+
"aria-label": "Time picker",
|
|
323
326
|
class: normalizeClass({
|
|
324
327
|
[_ctx.$style["rui-timepicker"]]: true,
|
|
325
328
|
[_ctx.$style.bordered]: !__props.borderless
|
|
@@ -330,6 +333,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
330
333
|
}, [
|
|
331
334
|
createElementVNode("div", _hoisted_1, [
|
|
332
335
|
createElementVNode("div", {
|
|
336
|
+
role: "button",
|
|
337
|
+
"aria-label": "Select hours",
|
|
333
338
|
class: normalizeClass({
|
|
334
339
|
[_ctx.$style["rui-digit"]]: true,
|
|
335
340
|
[_ctx.$style.active]: editMode.value === "hour"
|
|
@@ -338,6 +343,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
338
343
|
}, toDisplayString(formatValue(displayHour.value)), 3),
|
|
339
344
|
_cache[7] || (_cache[7] = createElementVNode("div", { class: "text-2xl font-semibold" }, " : ", -1)),
|
|
340
345
|
createElementVNode("div", {
|
|
346
|
+
role: "button",
|
|
347
|
+
"aria-label": "Select minutes",
|
|
341
348
|
class: normalizeClass({
|
|
342
349
|
[_ctx.$style["rui-digit"]]: true,
|
|
343
350
|
[_ctx.$style.active]: editMode.value === "minute"
|
|
@@ -347,6 +354,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
347
354
|
showSecond.value ? (openBlock(), createElementBlock("div", _hoisted_2, " : ")) : createCommentVNode("", true),
|
|
348
355
|
showSecond.value ? (openBlock(), createElementBlock("div", {
|
|
349
356
|
key: 1,
|
|
357
|
+
role: "button",
|
|
358
|
+
"aria-label": "Select seconds",
|
|
350
359
|
class: normalizeClass({
|
|
351
360
|
[_ctx.$style["rui-digit"]]: true,
|
|
352
361
|
[_ctx.$style.active]: editMode.value === "second"
|
|
@@ -356,6 +365,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
356
365
|
showMillisecond.value ? (openBlock(), createElementBlock("div", _hoisted_3, " . ")) : createCommentVNode("", true),
|
|
357
366
|
showMillisecond.value ? (openBlock(), createElementBlock("div", {
|
|
358
367
|
key: 3,
|
|
368
|
+
role: "button",
|
|
369
|
+
"aria-label": "Select milliseconds",
|
|
359
370
|
class: normalizeClass(["!text-lg", {
|
|
360
371
|
[_ctx.$style.active]: editMode.value === "millisecond",
|
|
361
372
|
[_ctx.$style["rui-digit"]]: true
|
|
@@ -364,6 +375,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
364
375
|
}, toDisplayString(formatValue(selectedMillisecond.value, 3)), 3)) : createCommentVNode("", true),
|
|
365
376
|
createElementVNode("div", _hoisted_4, [
|
|
366
377
|
createElementVNode("div", {
|
|
378
|
+
role: "button",
|
|
379
|
+
"aria-label": "Toggle AM/PM",
|
|
367
380
|
class: "rui-time-picker-period cursor-pointer",
|
|
368
381
|
onClick: _cache[4] || (_cache[4] = ($event) => toggleAmPm())
|
|
369
382
|
}, toDisplayString(period.value), 1)
|
|
@@ -373,6 +386,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
373
386
|
createElementVNode("div", {
|
|
374
387
|
ref_key: "clockFace",
|
|
375
388
|
ref: clockFace,
|
|
389
|
+
role: "listbox",
|
|
390
|
+
"aria-label": `Select ${editMode.value}`,
|
|
376
391
|
class: normalizeClass(_ctx.$style["rui-clock-face"]),
|
|
377
392
|
onMousedown: _cache[5] || (_cache[5] = ($event) => startDrag($event)),
|
|
378
393
|
onTouchstart: _cache[6] || (_cache[6] = ($event) => startDrag($event))
|
|
@@ -393,6 +408,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
393
408
|
(openBlock(true), createElementBlock(Fragment, null, renderList(clockNumbers.value, (num) => {
|
|
394
409
|
return openBlock(), createElementBlock("div", {
|
|
395
410
|
key: `num-${num}`,
|
|
411
|
+
role: "option",
|
|
412
|
+
"aria-selected": isSelectedNumber(num),
|
|
396
413
|
class: normalizeClass({
|
|
397
414
|
[_ctx.$style["rui-clock-number"]]: true,
|
|
398
415
|
[_ctx.$style["is-selected"]]: isSelectedNumber(num),
|
|
@@ -400,9 +417,9 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
400
417
|
}),
|
|
401
418
|
style: normalizeStyle(numberStyle(num)),
|
|
402
419
|
onClick: ($event) => selectByClick(num)
|
|
403
|
-
}, toDisplayString(num), 15,
|
|
420
|
+
}, toDisplayString(num), 15, _hoisted_6);
|
|
404
421
|
}), 128))
|
|
405
|
-
],
|
|
422
|
+
], 42, _hoisted_5)
|
|
406
423
|
], 2);
|
|
407
424
|
};
|
|
408
425
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RuiTimePicker.vue2.js","sources":["../../../src/components/time-picker/RuiTimePicker.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, onMounted, ref, type StyleValue, watch } from 'vue';\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 props = withDefaults(defineProps<RuiTimePickerProps>(), {\n accuracy: TimeAccuracy.MINUTE,\n borderless: false,\n});\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>(() => props.accuracy === TimeAccuracy.SECOND || props.accuracy === TimeAccuracy.MILLISECOND);\nconst showMillisecond = computed<boolean>(() => props.accuracy === TimeAccuracy.MILLISECOND);\n\nconst period = computed<'PM' | 'AM'>(() => isDefined(selectedHour) && get(selectedHour) >= TWELVE_HOURS ? 'PM' : 'AM');\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() {\n return isDefined(modelValue) ? new Date(get(modelValue)).getHours() : undefined;\n}\n\nfunction getModelMinutes() {\n return isDefined(modelValue) ? new Date(get(modelValue)).getMinutes() : undefined;\n}\n\nfunction getModelSeconds() {\n const acceptedAccuracy: TimeAccuracy[] = [TimeAccuracy.SECOND, TimeAccuracy.MILLISECOND];\n return acceptedAccuracy.includes(props.accuracy) && isDefined(modelValue)\n ? new Date(get(modelValue)).getSeconds()\n : undefined;\n}\n\nfunction getModelMilliseconds() {\n return props.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\n ? value.toString().padStart(padding, '0')\n : '-'.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() {\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) {\n event.preventDefault();\n set(isDragging, true);\n\n const handleMove = (moveEvent: MouseEvent | TouchEvent) => {\n if (!get(isDragging) || !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\n let clientX, clientY;\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 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 = Math.round(angle / (FULL_CIRCLE / totalItemsPerMode[mode])) % totalItemsPerMode[mode];\n if (mode === 'hour') {\n let hour;\n\n 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 handleEnd = (): void => {\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 handleMove(event);\n}\n\nfunction selectByClick(num: number) {\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() {\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\nonMounted(() => {\n set(selectedHour, getModelHours());\n set(selectedMinute, getModelMinutes());\n set(selectedSecond, getModelSeconds());\n set(selectedMillisecond, getModelMilliseconds());\n});\n\nwatch(modelValue, () => {\n set(selectedHour, getModelHours());\n set(selectedMinute, getModelMinutes());\n set(selectedSecond, getModelSeconds());\n set(selectedMillisecond, getModelMilliseconds());\n}, { deep: true });\n</script>\n\n<template>\n <div\n :class=\"{\n [$style['rui-timepicker']]: true,\n [$style.bordered]: !borderless,\n }\"\n >\n <div :class=\"$style['rui-digital-display']\">\n <div class=\"flex justify-center items-center gap-1\">\n <div\n :class=\"{\n [$style['rui-digit']]: true,\n [$style.active]: editMode === 'hour',\n }\"\n @click=\"editMode = 'hour'\"\n >\n {{ formatValue(displayHour) }}\n </div>\n <div class=\"text-2xl font-semibold\">\n :\n </div>\n <div\n :class=\"{\n [$style['rui-digit']]: true,\n [$style.active]: editMode === 'minute',\n }\"\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 :class=\"{\n [$style['rui-digit']]: true,\n [$style.active]: editMode === 'second',\n }\"\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 class=\"!text-lg\"\n :class=\"{\n [$style.active]: editMode === 'millisecond',\n [$style['rui-digit']]: true,\n }\"\n @click=\"editMode = 'millisecond'\"\n >\n {{ formatValue(selectedMillisecond, 3) }}\n </div>\n <div class=\"text-xl\">\n <div\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 :class=\"$style['rui-clock-face']\"\n @mousedown=\"startDrag($event)\"\n @touchstart=\"startDrag($event)\"\n >\n <div\n :class=\"$style['rui-center-dot']\"\n :style=\"dotStyle\"\n />\n\n <div\n :class=\"$style['rui-clock-hand']\"\n :style=\"clockHandStyle\"\n />\n\n <div\n v-if=\"displayClockHandCircle\"\n :class=\"$style['rui-clock-hand-circle']\"\n :style=\"clockHandCircleStyle\"\n />\n\n <div\n v-for=\"num in clockNumbers\"\n :key=\"`num-${num}`\"\n :class=\"{\n [$style['rui-clock-number']]: true,\n [$style['is-selected']]: isSelectedNumber(num),\n [`rui-${editMode}-${num.toString().padStart(2, '0')}`]: true,\n }\"\n :style=\"numberStyle(num)\"\n @click=\"selectByClick(num)\"\n >\n {{ num }}\n </div>\n </div>\n </div>\n</template>\n\n<style lang=\"scss\" module>\n.rui-timepicker {\n @apply bg-white overflow-hidden text-rui-text p-3;\n\n &.bordered {\n @apply rounded-md shadow-sm border border-rui-grey-200;\n }\n}\n\n.rui-digital-display {\n @apply mb-2 text-center;\n}\n\n.rui-digit {\n @apply text-2xl font-semibold cursor-pointer;\n\n &.active {\n @apply text-rui-primary;\n }\n}\n\n.rui-clock-face {\n @apply relative rounded-full w-64 h-64 mx-auto border border-rui-grey-200;\n}\n\n.rui-center-dot {\n @apply absolute rounded-full bg-rui-primary w-3 h-3;\n}\n\n.rui-clock-hand {\n @apply absolute w-[1.5px] bg-rui-primary rounded-full;\n}\n\n.rui-clock-hand-circle {\n @apply absolute border-2 border-rui-primary;\n}\n\n.rui-clock-number {\n @apply absolute text-center text-sm font-medium w-8 h-8 flex items-center justify-center hover:bg-rui-primary-lighter cursor-pointer rounded-full;\n\n &.is-selected {\n @apply bg-rui-primary text-rui-dark-text dark:text-rui-light-text z-10 font-bold;\n }\n}\n\n:global(.dark) {\n .rui-timepicker {\n @apply bg-rui-grey-900;\n\n &.bordered {\n @apply border-rui-grey-800;\n }\n }\n\n .rui-clock-face {\n @apply border-rui-grey-800;\n }\n}\n</style>\n"],"names":["_useModel","_createElementBlock","_normalizeClass","$style","_createElementVNode","_toDisplayString","_Fragment","_renderList","_normalizeStyle"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"RuiTimePicker.vue2.js","sources":["../../../src/components/time-picker/RuiTimePicker.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, onMounted, ref, type StyleValue, watch } from 'vue';\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 props = withDefaults(defineProps<RuiTimePickerProps>(), {\n accuracy: TimeAccuracy.MINUTE,\n borderless: false,\n});\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>(() => props.accuracy === TimeAccuracy.SECOND || props.accuracy === TimeAccuracy.MILLISECOND);\nconst showMillisecond = computed<boolean>(() => props.accuracy === TimeAccuracy.MILLISECOND);\n\nconst period = computed<'PM' | 'AM'>(() => isDefined(selectedHour) && get(selectedHour) >= TWELVE_HOURS ? 'PM' : 'AM');\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() {\n return isDefined(modelValue) ? new Date(get(modelValue)).getHours() : undefined;\n}\n\nfunction getModelMinutes() {\n return isDefined(modelValue) ? new Date(get(modelValue)).getMinutes() : undefined;\n}\n\nfunction getModelSeconds() {\n const acceptedAccuracy: TimeAccuracy[] = [TimeAccuracy.SECOND, TimeAccuracy.MILLISECOND];\n return acceptedAccuracy.includes(props.accuracy) && isDefined(modelValue)\n ? new Date(get(modelValue)).getSeconds()\n : undefined;\n}\n\nfunction getModelMilliseconds() {\n return props.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\n ? value.toString().padStart(padding, '0')\n : '-'.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() {\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) {\n event.preventDefault();\n set(isDragging, true);\n\n const handleMove = (moveEvent: MouseEvent | TouchEvent) => {\n if (!get(isDragging) || !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\n let clientX, clientY;\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 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 = Math.round(angle / (FULL_CIRCLE / totalItemsPerMode[mode])) % totalItemsPerMode[mode];\n if (mode === 'hour') {\n let hour;\n\n 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 handleEnd = (): void => {\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 handleMove(event);\n}\n\nfunction selectByClick(num: number) {\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() {\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\nonMounted(() => {\n set(selectedHour, getModelHours());\n set(selectedMinute, getModelMinutes());\n set(selectedSecond, getModelSeconds());\n set(selectedMillisecond, getModelMilliseconds());\n});\n\nwatch(modelValue, () => {\n set(selectedHour, getModelHours());\n set(selectedMinute, getModelMinutes());\n set(selectedSecond, getModelSeconds());\n set(selectedMillisecond, getModelMilliseconds());\n}, { deep: true });\n</script>\n\n<template>\n <div\n role=\"group\"\n aria-label=\"Time picker\"\n :class=\"{\n [$style['rui-timepicker']]: true,\n [$style.bordered]: !borderless,\n }\"\n >\n <div :class=\"$style['rui-digital-display']\">\n <div class=\"flex justify-center items-center gap-1\">\n <div\n role=\"button\"\n aria-label=\"Select hours\"\n :class=\"{\n [$style['rui-digit']]: true,\n [$style.active]: editMode === 'hour',\n }\"\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=\"{\n [$style['rui-digit']]: true,\n [$style.active]: editMode === 'minute',\n }\"\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=\"{\n [$style['rui-digit']]: true,\n [$style.active]: editMode === 'second',\n }\"\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=\"!text-lg\"\n :class=\"{\n [$style.active]: editMode === 'millisecond',\n [$style['rui-digit']]: true,\n }\"\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=\"$style['rui-clock-face']\"\n @mousedown=\"startDrag($event)\"\n @touchstart=\"startDrag($event)\"\n >\n <div\n :class=\"$style['rui-center-dot']\"\n :style=\"dotStyle\"\n />\n\n <div\n :class=\"$style['rui-clock-hand']\"\n :style=\"clockHandStyle\"\n />\n\n <div\n v-if=\"displayClockHandCircle\"\n :class=\"$style['rui-clock-hand-circle']\"\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 [$style['rui-clock-number']]: true,\n [$style['is-selected']]: isSelectedNumber(num),\n [`rui-${editMode}-${num.toString().padStart(2, '0')}`]: true,\n }\"\n :style=\"numberStyle(num)\"\n @click=\"selectByClick(num)\"\n >\n {{ num }}\n </div>\n </div>\n </div>\n</template>\n\n<style lang=\"scss\" module>\n.rui-timepicker {\n @apply bg-white overflow-hidden text-rui-text p-3;\n\n &.bordered {\n @apply rounded-md shadow-sm border border-rui-grey-200;\n }\n}\n\n.rui-digital-display {\n @apply mb-2 text-center;\n}\n\n.rui-digit {\n @apply text-2xl font-semibold cursor-pointer;\n\n &.active {\n @apply text-rui-primary;\n }\n}\n\n.rui-clock-face {\n @apply relative rounded-full w-64 h-64 mx-auto border border-rui-grey-200;\n}\n\n.rui-center-dot {\n @apply absolute rounded-full bg-rui-primary w-3 h-3;\n}\n\n.rui-clock-hand {\n @apply absolute w-[1.5px] bg-rui-primary rounded-full;\n}\n\n.rui-clock-hand-circle {\n @apply absolute border-2 border-rui-primary;\n}\n\n.rui-clock-number {\n @apply absolute text-center text-sm font-medium w-8 h-8 flex items-center justify-center hover:bg-rui-primary-lighter cursor-pointer rounded-full;\n\n &.is-selected {\n @apply bg-rui-primary text-rui-dark-text dark:text-rui-light-text z-10 font-bold;\n }\n}\n\n:global(.dark) {\n .rui-timepicker {\n @apply bg-rui-grey-900;\n\n &.bordered {\n @apply border-rui-grey-800;\n }\n }\n\n .rui-clock-face {\n @apply border-rui-grey-800;\n }\n}\n</style>\n"],"names":["_useModel","_createElementBlock","_normalizeClass","$style","_createElementVNode","_toDisplayString","_Fragment","_renderList","_normalizeStyle"],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { LuChevronsUpDown, LuArrowUp, LuArrowDown, LuArrowLeft, LuArrowRight, LuChevronUp, LuChevronDown, LuChevronLeft, LuChevronRight, LuChevronsLeft, LuChevronsRight, LuCircleAlert, LuCheck, LuCircleX, LuCircleCheck, LuCheckboxBlank, LuCheckboxFill, LuCheckboxIndeterminateFill, LuCheckboxBlankCircle, LuCheckboxBlankCircleFill, LuRadioButtonFill, LuClock } from "../icons/icons_1.js";
|
|
2
2
|
import { LuEllipsis, LuInfo, LuEye, LuEyeOff } from "../icons/icons_2.js";
|
|
3
3
|
import { LuTriangleAlert, LuX } from "../icons/icons_4.js";
|
|
4
|
-
import { inject } from "vue";
|
|
5
4
|
import { assert } from "../utils/assert.js";
|
|
5
|
+
import { inject } from "vue";
|
|
6
6
|
const requiredIcons = [
|
|
7
7
|
LuChevronsUpDown,
|
|
8
8
|
LuEllipsis,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"icons.js","sources":["../../src/composables/icons.ts"],"sourcesContent":["import type { InjectionKey } from 'vue';\nimport type { GeneratedIcon } from '@/types/icons';\nimport {\n LuArrowDown,\n LuArrowLeft,\n LuArrowRight,\n LuArrowUp,\n LuCheck,\n LuCheckboxBlank,\n LuCheckboxBlankCircle,\n LuCheckboxBlankCircleFill,\n LuCheckboxFill,\n LuCheckboxIndeterminateFill,\n LuChevronDown,\n LuChevronLeft,\n LuChevronRight,\n LuChevronsLeft,\n LuChevronsRight,\n LuChevronsUpDown,\n LuChevronUp,\n LuCircleAlert,\n LuCircleCheck,\n LuCircleX,\n LuClock,\n LuEllipsis,\n LuEye,\n LuEyeOff,\n LuInfo,\n LuRadioButtonFill,\n LuTriangleAlert,\n LuX,\n} from '@/icons';\n\nconst requiredIcons: GeneratedIcon[] = [\n LuChevronsUpDown,\n LuEllipsis,\n LuTriangleAlert,\n LuX,\n LuInfo,\n LuArrowUp,\n LuArrowDown,\n LuArrowLeft,\n LuArrowRight,\n LuChevronUp,\n LuChevronDown,\n LuChevronLeft,\n LuChevronRight,\n LuChevronsLeft,\n LuChevronsRight,\n LuCircleAlert,\n LuEye,\n LuEyeOff,\n LuCheck,\n LuCircleX,\n LuCircleCheck,\n LuCheckboxBlank,\n LuCheckboxFill,\n LuCheckboxIndeterminateFill,\n LuCheckboxBlankCircle,\n LuCheckboxBlankCircleFill,\n LuRadioButtonFill,\n LuClock,\n];\n\nexport interface IconsOptions {\n registeredIcons: GeneratedIcon[];\n}\n\nexport interface UseIconsReturn {\n registeredIcons: Readonly<Record<string, [string, Record<string, string>][]>>;\n}\n\nexport const IconsSymbol: InjectionKey<UseIconsReturn> = Symbol.for('rui:icons');\n\nexport function createIconDefaults(options?: Partial<IconsOptions>): UseIconsReturn {\n const iconsToAdd = options?.registeredIcons || [];\n return {\n registeredIcons: {\n ...Object.fromEntries(\n [\n ...requiredIcons,\n ...iconsToAdd,\n ].map(({ components, name }) => [name, components]),\n ),\n },\n };\n}\n\nexport function useIcons(): UseIconsReturn {\n const icons = inject(IconsSymbol);\n assert(icons, 'Could not find icons injection');\n return icons;\n}\n"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"icons.js","sources":["../../src/composables/icons.ts"],"sourcesContent":["import type { InjectionKey } from 'vue';\nimport type { GeneratedIcon } from '@/types/icons';\nimport {\n LuArrowDown,\n LuArrowLeft,\n LuArrowRight,\n LuArrowUp,\n LuCheck,\n LuCheckboxBlank,\n LuCheckboxBlankCircle,\n LuCheckboxBlankCircleFill,\n LuCheckboxFill,\n LuCheckboxIndeterminateFill,\n LuChevronDown,\n LuChevronLeft,\n LuChevronRight,\n LuChevronsLeft,\n LuChevronsRight,\n LuChevronsUpDown,\n LuChevronUp,\n LuCircleAlert,\n LuCircleCheck,\n LuCircleX,\n LuClock,\n LuEllipsis,\n LuEye,\n LuEyeOff,\n LuInfo,\n LuRadioButtonFill,\n LuTriangleAlert,\n LuX,\n} from '@/icons';\nimport { assert } from '@/utils/assert';\n\nconst requiredIcons: GeneratedIcon[] = [\n LuChevronsUpDown,\n LuEllipsis,\n LuTriangleAlert,\n LuX,\n LuInfo,\n LuArrowUp,\n LuArrowDown,\n LuArrowLeft,\n LuArrowRight,\n LuChevronUp,\n LuChevronDown,\n LuChevronLeft,\n LuChevronRight,\n LuChevronsLeft,\n LuChevronsRight,\n LuCircleAlert,\n LuEye,\n LuEyeOff,\n LuCheck,\n LuCircleX,\n LuCircleCheck,\n LuCheckboxBlank,\n LuCheckboxFill,\n LuCheckboxIndeterminateFill,\n LuCheckboxBlankCircle,\n LuCheckboxBlankCircleFill,\n LuRadioButtonFill,\n LuClock,\n];\n\nexport interface IconsOptions {\n registeredIcons: GeneratedIcon[];\n}\n\nexport interface UseIconsReturn {\n registeredIcons: Readonly<Record<string, [string, Record<string, string>][]>>;\n}\n\nexport const IconsSymbol: InjectionKey<UseIconsReturn> = Symbol.for('rui:icons');\n\nexport function createIconDefaults(options?: Partial<IconsOptions>): UseIconsReturn {\n const iconsToAdd = options?.registeredIcons || [];\n return {\n registeredIcons: {\n ...Object.fromEntries(\n [\n ...requiredIcons,\n ...iconsToAdd,\n ].map(({ components, name }) => [name, components]),\n ),\n },\n };\n}\n\nexport function useIcons(): UseIconsReturn {\n const icons = inject(IconsSymbol);\n assert(icons, 'Could not find icons injection');\n return icons;\n}\n"],"names":[],"mappings":";;;;;AAkCA,MAAM,gBAAiC;AAAA,EACrC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAUO,MAAM,cAA4C,uBAAO,IAAI,WAAW;AAExE,SAAS,mBAAmB,SAAiD;AAClF,QAAM,aAAa,SAAS,mBAAmB,CAAA;AAC/C,SAAO;AAAA,IACL,iBAAiB;AAAA,MACf,GAAG,OAAO;AAAA,QACR;AAAA,UACE,GAAG;AAAA,UACH,GAAG;AAAA,QAAA,EACH,IAAI,CAAC,EAAE,YAAY,WAAW,CAAC,MAAM,UAAU,CAAC;AAAA,MAAA;AAAA,IACpD;AAAA,EACF;AAEJ;AAEO,SAAS,WAA2B;AACzC,QAAM,QAAQ,OAAO,WAAW;AAChC,SAAO,OAAO,gCAAgC;AAC9C,SAAO;AACT;"}
|
|
@@ -16,9 +16,9 @@ const DEFAULT_POPPER_OPTIONS = {
|
|
|
16
16
|
strategy: "absolute"
|
|
17
17
|
};
|
|
18
18
|
function usePopper(options, disabled = ref(false), openDelay = ref(0), closeDelay = ref(0), virtualReference) {
|
|
19
|
-
const reference = ref(
|
|
20
|
-
const popper = ref(
|
|
21
|
-
const instance = ref(
|
|
19
|
+
const reference = ref();
|
|
20
|
+
const popper = ref();
|
|
21
|
+
const instance = ref();
|
|
22
22
|
const open = ref(false);
|
|
23
23
|
const popperEnter = ref(false);
|
|
24
24
|
const leavePending = ref(false);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"popper.js","sources":["../../src/composables/popper.ts"],"sourcesContent":["import { createPopper, type Instance, type Placement, type PositioningStrategy, type VirtualElement } from '@popperjs/core';\nimport { type MaybeElement, unrefElement } from '@vueuse/core';\nimport { onMounted, type Ref, ref, watchEffect } from 'vue';\nimport { useTimeoutManager } from './timeout-manager';\n\nexport interface PopperOptions {\n locked?: boolean;\n overflowPadding?: number;\n offsetDistance?: number;\n offsetSkid?: number;\n placement?: Placement;\n strategy?: PositioningStrategy;\n gpuAcceleration?: boolean;\n adaptive?: boolean;\n scroll?: boolean;\n resize?: boolean;\n}\n\nexport const DEFAULT_POPPER_OPTIONS: PopperOptions = {\n adaptive: true,\n gpuAcceleration: true,\n locked: false,\n offsetDistance: 8,\n offsetSkid: 0,\n overflowPadding: 8,\n placement: 'bottom',\n resize: true,\n scroll: true,\n strategy: 'absolute',\n};\n\ninterface UsePopperReturn {\n instance: Ref<Instance | undefined>;\n leavePending: Ref<boolean>;\n onClose: (immediate?: boolean) => void;\n onLeavePending: () => void;\n onOpen: (immediate?: boolean) => void;\n onPopperLeave: () => void;\n open: Ref<boolean, boolean>;\n popper: Ref<MaybeElement>;\n popperEnter: Ref<boolean>;\n reference: Ref<HTMLElement | undefined>;\n updatePopper: () => Promise<void>;\n}\n\nexport function usePopper(\n options: Ref<PopperOptions>,\n disabled: Ref<boolean> = ref(false),\n openDelay: Ref<number> = ref(0),\n closeDelay: Ref<number> = ref(0),\n virtualReference?: Ref<Element | VirtualElement>,\n): UsePopperReturn {\n const reference = ref<HTMLElement
|
|
1
|
+
{"version":3,"file":"popper.js","sources":["../../src/composables/popper.ts"],"sourcesContent":["import { createPopper, type Instance, type Placement, type PositioningStrategy, type VirtualElement } from '@popperjs/core';\nimport { type MaybeElement, unrefElement } from '@vueuse/core';\nimport { onMounted, type Ref, ref, watchEffect } from 'vue';\nimport { useTimeoutManager } from './timeout-manager';\n\nexport interface PopperOptions {\n locked?: boolean;\n overflowPadding?: number;\n offsetDistance?: number;\n offsetSkid?: number;\n placement?: Placement;\n strategy?: PositioningStrategy;\n gpuAcceleration?: boolean;\n adaptive?: boolean;\n scroll?: boolean;\n resize?: boolean;\n}\n\nexport const DEFAULT_POPPER_OPTIONS: PopperOptions = {\n adaptive: true,\n gpuAcceleration: true,\n locked: false,\n offsetDistance: 8,\n offsetSkid: 0,\n overflowPadding: 8,\n placement: 'bottom',\n resize: true,\n scroll: true,\n strategy: 'absolute',\n};\n\ninterface UsePopperReturn {\n instance: Ref<Instance | undefined>;\n leavePending: Ref<boolean>;\n onClose: (immediate?: boolean) => void;\n onLeavePending: () => void;\n onOpen: (immediate?: boolean) => void;\n onPopperLeave: () => void;\n open: Ref<boolean, boolean>;\n popper: Ref<MaybeElement>;\n popperEnter: Ref<boolean>;\n reference: Ref<HTMLElement | undefined>;\n updatePopper: () => Promise<void>;\n}\n\nexport function usePopper(\n options: Ref<PopperOptions>,\n disabled: Ref<boolean> = ref(false),\n openDelay: Ref<number> = ref(0),\n closeDelay: Ref<number> = ref(0),\n virtualReference?: Ref<Element | VirtualElement>,\n): UsePopperReturn {\n const reference = ref<HTMLElement>();\n const popper = ref<MaybeElement>();\n const instance = ref<Instance>();\n const open = ref<boolean>(false);\n const popperEnter = ref<boolean>(false);\n const leavePending = ref<boolean>(false);\n\n const openTimeoutManager = useTimeoutManager();\n const closeTimeoutManager = useTimeoutManager();\n\n const onPopperLeave = () => {\n set(popperEnter, false);\n };\n\n const updatePopper = async (): Promise<void> => {\n await get(instance)?.update();\n };\n\n const onOpen = (immediate = false) => {\n if (get(disabled))\n return;\n\n closeTimeoutManager.clear();\n\n set(leavePending, false);\n if (!openTimeoutManager.isActive()) {\n set(popperEnter, true);\n\n openTimeoutManager.create(() => {\n set(open, true);\n }, immediate ? 0 : get(openDelay));\n }\n };\n\n const onClose = (immediate = false) => {\n if (get(disabled))\n return;\n\n openTimeoutManager.clear();\n\n if (!closeTimeoutManager.isActive()) {\n closeTimeoutManager.create(() => {\n if (!get(open))\n onPopperLeave();\n\n set(open, false);\n }, immediate ? 0 : get(closeDelay));\n }\n };\n\n const onLeavePending = () => {\n set(leavePending, true);\n };\n\n const modifiers = computed(() => {\n const {\n adaptive = DEFAULT_POPPER_OPTIONS.adaptive,\n gpuAcceleration = DEFAULT_POPPER_OPTIONS.gpuAcceleration,\n locked = DEFAULT_POPPER_OPTIONS.locked,\n offsetDistance = DEFAULT_POPPER_OPTIONS.offsetDistance,\n offsetSkid = DEFAULT_POPPER_OPTIONS.offsetSkid,\n overflowPadding = DEFAULT_POPPER_OPTIONS.overflowPadding,\n resize = DEFAULT_POPPER_OPTIONS.resize,\n scroll = DEFAULT_POPPER_OPTIONS.scroll,\n } = get(options);\n\n return [{\n enabled: false,\n name: 'hide',\n }, {\n enabled: !locked,\n name: 'flip',\n }, {\n name: 'preventOverflow',\n options: {\n padding: overflowPadding,\n },\n }, {\n name: 'offset',\n options: {\n offset: [offsetSkid, offsetDistance],\n },\n }, {\n name: 'computeStyles',\n options: {\n adaptive,\n gpuAcceleration,\n },\n }, {\n name: 'eventListeners',\n options: {\n resize,\n scroll,\n },\n }, {\n name: 'arrow',\n options: {\n padding: 4,\n },\n }];\n });\n\n const popperConfig = computed(() => {\n const {\n placement = DEFAULT_POPPER_OPTIONS.placement,\n strategy = DEFAULT_POPPER_OPTIONS.strategy,\n } = get(options);\n\n return {\n modifiers: get(modifiers),\n placement,\n strategy,\n };\n });\n\n function getValidElements(): { popperEl: HTMLElement; referenceEl: Element | VirtualElement } | null {\n if (!get(popper) || (!get(reference) && !get(virtualReference))) {\n return null;\n }\n\n const popperEl = unrefElement(popper);\n const referenceEl = get(virtualReference) || unrefElement(reference);\n\n if (!(popperEl instanceof HTMLElement) || !referenceEl) {\n return null;\n }\n\n return { popperEl, referenceEl };\n }\n\n function initializePopper(onInvalidate: (cleanupFn: () => void) => void) {\n const elements = getValidElements();\n if (!elements)\n return;\n\n const { popperEl, referenceEl } = elements;\n\n const value = createPopper(referenceEl, popperEl, get(popperConfig));\n\n set(instance, value);\n onInvalidate(value.destroy);\n }\n\n useResizeObserver([reference, popper], async () => {\n if (isDefined(instance))\n await get(instance).update();\n });\n\n onMounted(() => {\n watchEffect((onInvalidate) => {\n initializePopper(onInvalidate);\n });\n });\n\n return {\n instance,\n leavePending,\n onClose,\n onLeavePending,\n onOpen,\n onPopperLeave,\n open,\n popper,\n popperEnter,\n reference,\n updatePopper,\n };\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createSharedComposable, getSSRHandler, useColorMode } from "@vueuse/core";
|
|
1
|
+
import { createSharedComposable, getSSRHandler, defaultWindow, useColorMode } from "@vueuse/core";
|
|
2
2
|
import { ref, computed, watch } from "vue";
|
|
3
3
|
import { defaultTheme, ThemeMode } from "../types/theme.js";
|
|
4
4
|
import { get, set } from "@vueuse/shared";
|
|
@@ -7,7 +7,9 @@ const useRotkiTheme = createSharedComposable(() => {
|
|
|
7
7
|
const updateHTMLAttrs = getSSRHandler(
|
|
8
8
|
"updateHTMLAttrs",
|
|
9
9
|
(selector, attribute, value) => {
|
|
10
|
-
|
|
10
|
+
if (typeof selector !== "string" || !defaultWindow)
|
|
11
|
+
return;
|
|
12
|
+
const el = defaultWindow.document.querySelector(selector);
|
|
11
13
|
if (!el)
|
|
12
14
|
return;
|
|
13
15
|
el.setAttribute(attribute, value);
|
|
@@ -44,7 +46,8 @@ const useRotkiTheme = createSharedComposable(() => {
|
|
|
44
46
|
const init = (options) => {
|
|
45
47
|
switchThemeScheme(options.mode ?? ThemeMode.auto);
|
|
46
48
|
setThemeConfig(options.config ?? { ...defaultTheme });
|
|
47
|
-
|
|
49
|
+
const windowReference = defaultWindow;
|
|
50
|
+
if (windowReference) {
|
|
48
51
|
watch([isLight, theme], ([isLight2, theme2]) => {
|
|
49
52
|
const styleVariables = /* @__PURE__ */ new Map();
|
|
50
53
|
Object.entries(theme2).forEach(([context, contextObject]) => {
|
|
@@ -56,7 +59,7 @@ const useRotkiTheme = createSharedComposable(() => {
|
|
|
56
59
|
styleVariables.set("--rui-text-disabled", `var(--rui-${state2}-text-disabled)`);
|
|
57
60
|
styleVariables.set("--rui-text-primary", `var(--rui-${state2}-text-primary)`);
|
|
58
61
|
styleVariables.set("--rui-text-secondary", `var(--rui-${state2}-text-secondary)`);
|
|
59
|
-
const rootStyle = document.documentElement.style;
|
|
62
|
+
const rootStyle = windowReference.document.documentElement.style;
|
|
60
63
|
styleVariables.forEach((value, variableName) => {
|
|
61
64
|
rootStyle.setProperty(variableName, value);
|
|
62
65
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theme.js","sources":["../../src/composables/theme.ts"],"sourcesContent":["import { getSSRHandler, useColorMode } from '@vueuse/core';\nimport { computed, type ComputedRef, type Ref, ref } from 'vue';\nimport {\n type ColorIntensity,\n defaultTheme,\n type InitThemeOptions,\n type ThemeConfig,\n type ThemeContent,\n type ThemeData,\n ThemeMode,\n} from '@/types/theme';\n\nconst config: Ref<ThemeConfig> = ref({ ...defaultTheme });\n\n/**\n * Theme manager\n * @returns {ThemeContent}\n */\nexport const useRotkiTheme = createSharedComposable<() => ThemeContent>(() => {\n const updateHTMLAttrs = getSSRHandler(\n 'updateHTMLAttrs',\n (selector, attribute, value) => {\n
|
|
1
|
+
{"version":3,"file":"theme.js","sources":["../../src/composables/theme.ts"],"sourcesContent":["import { defaultWindow, getSSRHandler, useColorMode } from '@vueuse/core';\nimport { computed, type ComputedRef, type Ref, ref } from 'vue';\nimport {\n type ColorIntensity,\n defaultTheme,\n type InitThemeOptions,\n type ThemeConfig,\n type ThemeContent,\n type ThemeData,\n ThemeMode,\n} from '@/types/theme';\n\nconst config: Ref<ThemeConfig> = ref({ ...defaultTheme });\n\n/**\n * Theme manager\n * @returns {ThemeContent}\n */\nexport const useRotkiTheme = createSharedComposable<() => ThemeContent>(() => {\n const updateHTMLAttrs = getSSRHandler(\n 'updateHTMLAttrs',\n (selector, attribute, value) => {\n if (typeof selector !== 'string' || !defaultWindow)\n return;\n\n const el = defaultWindow.document.querySelector(selector);\n if (!el)\n return;\n\n el.setAttribute(attribute, value);\n },\n );\n\n const { state, store } = useColorMode<ThemeMode>({\n onChanged(mode, defaultHandler) {\n defaultHandler(mode);\n updateHTMLAttrs('html', 'data-theme', mode);\n },\n });\n\n /**\n * whether the current theme is controlled by system or user\n * @type {ComputedRef<boolean>}\n */\n const isAutoControlled: ComputedRef<boolean> = computed(() => get(store) === ThemeMode.auto);\n\n /**\n * truthy for light theme\n * @type {ComputedRef<boolean>}\n */\n const isLight: ComputedRef<boolean> = computed(() => get(state) === ThemeMode.light);\n\n /**\n * truthy for dark theme\n * @type {ComputedRef<boolean>}\n */\n const isDark: ComputedRef<boolean> = computed(() => get(state) === ThemeMode.dark);\n\n /**\n * current theme based on light or dark mode\n * @type {ComputedRef<ThemeData>}\n */\n const theme: ComputedRef<ThemeData> = computed(() => {\n if (get(isLight))\n return get(config).light;\n\n return get(config).dark;\n });\n\n /**\n * switch theme through dark/light/auto modes\n * @param {ThemeMode} mode\n */\n const switchThemeScheme = (mode: ThemeMode): void => {\n set(store, mode || ThemeMode.auto);\n };\n\n /**\n * toggle between auto|light|dark\n */\n const toggleThemeMode = (): void => {\n if (get(isAutoControlled))\n switchThemeScheme(ThemeMode.light);\n else if (get(isLight))\n switchThemeScheme(ThemeMode.dark);\n else if (get(isDark))\n switchThemeScheme(ThemeMode.auto);\n };\n\n /**\n * sets the configuration for the theme\n * @param {ThemeConfig} newConfig\n */\n const setThemeConfig = (newConfig: ThemeConfig): void => {\n set(config, newConfig);\n };\n\n /**\n * theme initializer, must be called once from the app's entry\n * @param {InitThemeOptions} options\n */\n const init = (options: InitThemeOptions): void => {\n switchThemeScheme(options.mode ?? ThemeMode.auto);\n setThemeConfig(options.config ?? { ...defaultTheme });\n\n const windowReference = defaultWindow;\n if (windowReference) {\n watch([isLight, theme], ([isLight, theme]) => {\n const styleVariables = new Map();\n\n // Compute context variables\n Object.entries(theme).forEach(([context, contextObject]: [string, ColorIntensity]) => {\n styleVariables.set(`--rui-${context}-darker`, contextObject.darker);\n styleVariables.set(`--rui-${context}-lighter`, contextObject.lighter);\n styleVariables.set(`--rui-${context}-main`, contextObject.DEFAULT);\n });\n\n // Determine the theme mode\n const state = isLight ? ThemeMode.light : ThemeMode.dark;\n\n // Add text color variables\n styleVariables.set('--rui-text-disabled', `var(--rui-${state}-text-disabled)`);\n styleVariables.set('--rui-text-primary', `var(--rui-${state}-text-primary)`);\n styleVariables.set('--rui-text-secondary', `var(--rui-${state}-text-secondary)`);\n\n // Apply all style variables in one operation\n const rootStyle = windowReference.document.documentElement.style;\n styleVariables.forEach((value, variableName) => {\n rootStyle.setProperty(variableName, value);\n });\n }, { immediate: true });\n }\n };\n\n return {\n config,\n init,\n isAutoControlled,\n isDark,\n isLight,\n setThemeConfig,\n state,\n store,\n switchThemeScheme,\n theme,\n toggleThemeMode,\n };\n});\n"],"names":["isLight","theme","state"],"mappings":";;;;AAYA,MAAM,SAA2B,IAAI,EAAE,GAAG,cAAc;AAMjD,MAAM,gBAAgB,uBAA2C,MAAM;AAC5E,QAAM,kBAAkB;AAAA,IACtB;AAAA,IACA,CAAC,UAAU,WAAW,UAAU;AAC9B,UAAI,OAAO,aAAa,YAAY,CAAC;AACnC;AAEF,YAAM,KAAK,cAAc,SAAS,cAAc,QAAQ;AACxD,UAAI,CAAC;AACH;AAEF,SAAG,aAAa,WAAW,KAAK;AAAA,IAClC;AAAA,EAAA;AAGF,QAAM,EAAE,OAAO,MAAA,IAAU,aAAwB;AAAA,IAC/C,UAAU,MAAM,gBAAgB;AAC9B,qBAAe,IAAI;AACnB,sBAAgB,QAAQ,cAAc,IAAI;AAAA,IAC5C;AAAA,EAAA,CACD;AAMD,QAAM,mBAAyC,SAAS,MAAM,IAAI,KAAK,MAAM,UAAU,IAAI;AAM3F,QAAM,UAAgC,SAAS,MAAM,IAAI,KAAK,MAAM,UAAU,KAAK;AAMnF,QAAM,SAA+B,SAAS,MAAM,IAAI,KAAK,MAAM,UAAU,IAAI;AAMjF,QAAM,QAAgC,SAAS,MAAM;AACnD,QAAI,IAAI,OAAO;AACb,aAAO,IAAI,MAAM,EAAE;AAErB,WAAO,IAAI,MAAM,EAAE;AAAA,EACrB,CAAC;AAMD,QAAM,oBAAoB,CAAC,SAA0B;AACnD,QAAI,OAAO,QAAQ,UAAU,IAAI;AAAA,EACnC;AAKA,QAAM,kBAAkB,MAAY;AAClC,QAAI,IAAI,gBAAgB;AACtB,wBAAkB,UAAU,KAAK;AAAA,aAC1B,IAAI,OAAO;AAClB,wBAAkB,UAAU,IAAI;AAAA,aACzB,IAAI,MAAM;AACjB,wBAAkB,UAAU,IAAI;AAAA,EACpC;AAMA,QAAM,iBAAiB,CAAC,cAAiC;AACvD,QAAI,QAAQ,SAAS;AAAA,EACvB;AAMA,QAAM,OAAO,CAAC,YAAoC;AAChD,sBAAkB,QAAQ,QAAQ,UAAU,IAAI;AAChD,mBAAe,QAAQ,UAAU,EAAE,GAAG,cAAc;AAEpD,UAAM,kBAAkB;AACxB,QAAI,iBAAiB;AACnB,YAAM,CAAC,SAAS,KAAK,GAAG,CAAC,CAACA,UAASC,MAAK,MAAM;AAC5C,cAAM,qCAAqB,IAAA;AAG3B,eAAO,QAAQA,MAAK,EAAE,QAAQ,CAAC,CAAC,SAAS,aAAa,MAAgC;AACpF,yBAAe,IAAI,SAAS,OAAO,WAAW,cAAc,MAAM;AAClE,yBAAe,IAAI,SAAS,OAAO,YAAY,cAAc,OAAO;AACpE,yBAAe,IAAI,SAAS,OAAO,SAAS,cAAc,OAAO;AAAA,QACnE,CAAC;AAGD,cAAMC,SAAQF,WAAU,UAAU,QAAQ,UAAU;AAGpD,uBAAe,IAAI,uBAAuB,aAAaE,MAAK,iBAAiB;AAC7E,uBAAe,IAAI,sBAAsB,aAAaA,MAAK,gBAAgB;AAC3E,uBAAe,IAAI,wBAAwB,aAAaA,MAAK,kBAAkB;AAG/E,cAAM,YAAY,gBAAgB,SAAS,gBAAgB;AAC3D,uBAAe,QAAQ,CAAC,OAAO,iBAAiB;AAC9C,oBAAU,YAAY,cAAc,KAAK;AAAA,QAC3C,CAAC;AAAA,MACH,GAAG,EAAE,WAAW,MAAM;AAAA,IACxB;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ,CAAC;"}
|
package/dist/icons/icons_1.d.ts
CHANGED
|
@@ -66,7 +66,6 @@ export declare const LuAlarmSmoke: GeneratedIcon;
|
|
|
66
66
|
export declare const LuAlbum: GeneratedIcon;
|
|
67
67
|
export declare const LuAlignCenterHorizontal: GeneratedIcon;
|
|
68
68
|
export declare const LuAlignCenterVertical: GeneratedIcon;
|
|
69
|
-
export declare const LuAlignCenter: GeneratedIcon;
|
|
70
69
|
export declare const LuAlignEndHorizontal: GeneratedIcon;
|
|
71
70
|
export declare const LuAlignEndVertical: GeneratedIcon;
|
|
72
71
|
export declare const LuAlignHorizontalDistributeCenter: GeneratedIcon;
|
|
@@ -77,9 +76,6 @@ export declare const LuAlignHorizontalJustifyEnd: GeneratedIcon;
|
|
|
77
76
|
export declare const LuAlignHorizontalJustifyStart: GeneratedIcon;
|
|
78
77
|
export declare const LuAlignHorizontalSpaceAround: GeneratedIcon;
|
|
79
78
|
export declare const LuAlignHorizontalSpaceBetween: GeneratedIcon;
|
|
80
|
-
export declare const LuAlignJustify: GeneratedIcon;
|
|
81
|
-
export declare const LuAlignLeft: GeneratedIcon;
|
|
82
|
-
export declare const LuAlignRight: GeneratedIcon;
|
|
83
79
|
export declare const LuAlignStartHorizontal: GeneratedIcon;
|
|
84
80
|
export declare const LuAlignStartVertical: GeneratedIcon;
|
|
85
81
|
export declare const LuAlignVerticalDistributeCenter: GeneratedIcon;
|
|
@@ -179,6 +175,7 @@ export declare const LuBadgeTurkishLira: GeneratedIcon;
|
|
|
179
175
|
export declare const LuBadgeX: GeneratedIcon;
|
|
180
176
|
export declare const LuBadge: GeneratedIcon;
|
|
181
177
|
export declare const LuBaggageClaim: GeneratedIcon;
|
|
178
|
+
export declare const LuBalloon: GeneratedIcon;
|
|
182
179
|
export declare const LuBan: GeneratedIcon;
|
|
183
180
|
export declare const LuBanana: GeneratedIcon;
|
|
184
181
|
export declare const LuBandage: GeneratedIcon;
|
|
@@ -223,6 +220,7 @@ export declare const LuBinary: GeneratedIcon;
|
|
|
223
220
|
export declare const LuBinoculars: GeneratedIcon;
|
|
224
221
|
export declare const LuBiohazard: GeneratedIcon;
|
|
225
222
|
export declare const LuBird: GeneratedIcon;
|
|
223
|
+
export declare const LuBirdhouse: GeneratedIcon;
|
|
226
224
|
export declare const LuBitcoin: GeneratedIcon;
|
|
227
225
|
export declare const LuBlend: GeneratedIcon;
|
|
228
226
|
export declare const LuBlinds: GeneratedIcon;
|
|
@@ -253,6 +251,7 @@ export declare const LuBookOpenCheck: GeneratedIcon;
|
|
|
253
251
|
export declare const LuBookOpenText: GeneratedIcon;
|
|
254
252
|
export declare const LuBookOpen: GeneratedIcon;
|
|
255
253
|
export declare const LuBookPlus: GeneratedIcon;
|
|
254
|
+
export declare const LuBookSearch: GeneratedIcon;
|
|
256
255
|
export declare const LuBookText: GeneratedIcon;
|
|
257
256
|
export declare const LuBookType: GeneratedIcon;
|
|
258
257
|
export declare const LuBookUp2: GeneratedIcon;
|
|
@@ -322,11 +321,13 @@ export declare const LuCalendarSync: GeneratedIcon;
|
|
|
322
321
|
export declare const LuCalendarX2: GeneratedIcon;
|
|
323
322
|
export declare const LuCalendarX: GeneratedIcon;
|
|
324
323
|
export declare const LuCalendar: GeneratedIcon;
|
|
324
|
+
export declare const LuCalendars: GeneratedIcon;
|
|
325
325
|
export declare const LuCameraOff: GeneratedIcon;
|
|
326
326
|
export declare const LuCamera: GeneratedIcon;
|
|
327
327
|
export declare const LuCandyCane: GeneratedIcon;
|
|
328
328
|
export declare const LuCandyOff: GeneratedIcon;
|
|
329
329
|
export declare const LuCandy: GeneratedIcon;
|
|
330
|
+
export declare const LuCannabisOff: GeneratedIcon;
|
|
330
331
|
export declare const LuCannabis: GeneratedIcon;
|
|
331
332
|
export declare const LuCaptionsOff: GeneratedIcon;
|
|
332
333
|
export declare const LuCaptions: GeneratedIcon;
|
|
@@ -372,6 +373,12 @@ export declare const LuCheckLine: GeneratedIcon;
|
|
|
372
373
|
export declare const LuCheck: GeneratedIcon;
|
|
373
374
|
export declare const LuChefHat: GeneratedIcon;
|
|
374
375
|
export declare const LuCherry: GeneratedIcon;
|
|
376
|
+
export declare const LuChessBishop: GeneratedIcon;
|
|
377
|
+
export declare const LuChessKing: GeneratedIcon;
|
|
378
|
+
export declare const LuChessKnight: GeneratedIcon;
|
|
379
|
+
export declare const LuChessPawn: GeneratedIcon;
|
|
380
|
+
export declare const LuChessQueen: GeneratedIcon;
|
|
381
|
+
export declare const LuChessRook: GeneratedIcon;
|
|
375
382
|
export declare const LuChevronDown: GeneratedIcon;
|
|
376
383
|
export declare const LuChevronFirst: GeneratedIcon;
|
|
377
384
|
export declare const LuChevronLast: GeneratedIcon;
|
|
@@ -422,6 +429,7 @@ export declare const LuCircleParkingOff: GeneratedIcon;
|
|
|
422
429
|
export declare const LuCircleParking: GeneratedIcon;
|
|
423
430
|
export declare const LuCirclePause: GeneratedIcon;
|
|
424
431
|
export declare const LuCirclePercent: GeneratedIcon;
|
|
432
|
+
export declare const LuCirclePile: GeneratedIcon;
|
|
425
433
|
export declare const LuCirclePlay: GeneratedIcon;
|
|
426
434
|
export declare const LuCirclePlus: GeneratedIcon;
|
|
427
435
|
export declare const LuCirclePoundSterling: GeneratedIcon;
|
|
@@ -466,11 +474,13 @@ export declare const LuClock9: GeneratedIcon;
|
|
|
466
474
|
export declare const LuClockAlert: GeneratedIcon;
|
|
467
475
|
export declare const LuClockArrowDown: GeneratedIcon;
|
|
468
476
|
export declare const LuClockArrowUp: GeneratedIcon;
|
|
477
|
+
export declare const LuClockCheck: GeneratedIcon;
|
|
469
478
|
export declare const LuClockFading: GeneratedIcon;
|
|
470
479
|
export declare const LuClockPlus: GeneratedIcon;
|
|
471
480
|
export declare const LuClock: GeneratedIcon;
|
|
472
481
|
export declare const LuClosedCaption: GeneratedIcon;
|
|
473
482
|
export declare const LuCloudAlert: GeneratedIcon;
|
|
483
|
+
export declare const LuCloudBackup: GeneratedIcon;
|
|
474
484
|
export declare const LuCloudCheck: GeneratedIcon;
|
|
475
485
|
export declare const LuCloudCog: GeneratedIcon;
|
|
476
486
|
export declare const LuCloudDownload: GeneratedIcon;
|
|
@@ -486,16 +496,6 @@ export declare const LuCloudRain: GeneratedIcon;
|
|
|
486
496
|
export declare const LuCloudSnow: GeneratedIcon;
|
|
487
497
|
export declare const LuCloudSunRain: GeneratedIcon;
|
|
488
498
|
export declare const LuCloudSun: GeneratedIcon;
|
|
499
|
+
export declare const LuCloudSync: GeneratedIcon;
|
|
489
500
|
export declare const LuCloudUpload: GeneratedIcon;
|
|
490
501
|
export declare const LuCloud: GeneratedIcon;
|
|
491
|
-
export declare const LuCloudy: GeneratedIcon;
|
|
492
|
-
export declare const LuClover: GeneratedIcon;
|
|
493
|
-
export declare const LuClub: GeneratedIcon;
|
|
494
|
-
export declare const LuCodeXml: GeneratedIcon;
|
|
495
|
-
export declare const LuCode: GeneratedIcon;
|
|
496
|
-
export declare const LuCodepen: GeneratedIcon;
|
|
497
|
-
export declare const LuCodesandbox: GeneratedIcon;
|
|
498
|
-
export declare const LuCoffee: GeneratedIcon;
|
|
499
|
-
export declare const LuCog: GeneratedIcon;
|
|
500
|
-
export declare const LuCoins: GeneratedIcon;
|
|
501
|
-
export declare const LuColumns2: GeneratedIcon;
|