@rotki/ui-library 2.19.3 → 2.20.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/date-time-picker/RuiDateTimePickerMenu.js.map +1 -1
- package/dist/components/date-time-picker/RuiDateTimePickerMenu.vue_vue_type_script_setup_true_lang.js +5 -9
- package/dist/components/date-time-picker/RuiDateTimePickerMenu.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/date-time-picker/RuiTimezoneSelect.js +7 -0
- package/dist/components/date-time-picker/RuiTimezoneSelect.js.map +1 -0
- package/dist/components/date-time-picker/RuiTimezoneSelect.vue.d.ts +31 -0
- package/dist/components/date-time-picker/RuiTimezoneSelect.vue_vue_type_script_setup_true_lang.js +98 -0
- package/dist/components/date-time-picker/RuiTimezoneSelect.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/date-time-picker/timezones.js +2 -0
- package/dist/components/date-time-picker/timezones.js.map +1 -1
- package/dist/components/date-time-picker/use-keyboard-handler.js +9 -2
- package/dist/components/date-time-picker/use-keyboard-handler.js.map +1 -1
- package/dist/components/forms/select/RuiMenuSelect.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/forms/text-area/text-area-styles.js +7 -1
- package/dist/components/forms/text-area/text-area-styles.js.map +1 -1
- package/dist/components/index.d.ts +3 -2
- package/dist/components/index.js +2 -1
- package/dist/composables/dropdown-menu.d.ts +1 -1
- package/dist/composables/dropdown-menu.js +23 -10
- package/dist/composables/dropdown-menu.js.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/web-types.json +171 -1
- package/package.json +2 -2
- /package/{dist/README.md → README.md} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RuiDateTimePickerMenu.js","names":[],"sources":["../../../src/components/date-time-picker/RuiDateTimePickerMenu.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { TimeAccuracy } from '@/consts/time-accuracy';\nimport RuiButton from '@/components/buttons/button/RuiButton.vue';\nimport RuiCalendar from '@/components/calendar/RuiCalendar.vue';\nimport
|
|
1
|
+
{"version":3,"file":"RuiDateTimePickerMenu.js","names":[],"sources":["../../../src/components/date-time-picker/RuiDateTimePickerMenu.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { TimeAccuracy } from '@/consts/time-accuracy';\nimport RuiButton from '@/components/buttons/button/RuiButton.vue';\nimport RuiCalendar from '@/components/calendar/RuiCalendar.vue';\nimport RuiTimezoneSelect from '@/components/date-time-picker/RuiTimezoneSelect.vue';\nimport RuiIcon from '@/components/icons/RuiIcon.vue';\nimport RuiTimePicker, { type TimePickerSelection } from '@/components/time-picker/RuiTimePicker.vue';\n\ndefineOptions({\n name: 'RuiDateTimePickerMenu',\n});\n\nconst selectedDate = defineModel<Date | undefined>('selectedDate', { required: true });\nconst selectedTime = defineModel<Date | undefined>('selectedTime', { required: true });\nconst selectedHour = defineModel<number | undefined>('selectedHour', { required: true });\nconst selectedMinute = defineModel<number | undefined>('selectedMinute', { required: true });\nconst selectedSecond = defineModel<number | undefined>('selectedSecond', { required: true });\nconst selectedMillisecond = defineModel<number | undefined>('selectedMillisecond', { required: true });\nconst timeSelection = defineModel<TimePickerSelection>('timeSelection', { required: true });\nconst selectedTimezone = defineModel<string | undefined>('selectedTimezone', { required: true });\nconst calendarMenuOpen = defineModel<boolean>('calendarMenuOpen', { required: true });\n\ndefineProps<{\n accuracy: TimeAccuracy;\n maxDate?: Date | number;\n minDate?: Date | number;\n}>();\n\nconst emit = defineEmits<{\n 'set-now': [];\n}>();\n\ndefineSlots<{\n default: () => any;\n}>();\n\nfunction setNow(): void {\n emit('set-now');\n}\n</script>\n\n<template>\n <div class=\"flex divide-x divide-rui-grey-200 dark:divide-rui-grey-800\">\n <RuiCalendar\n v-model=\"selectedDate\"\n v-model:menu-open=\"calendarMenuOpen\"\n borderless\n :max-date=\"maxDate\"\n :min-date=\"minDate\"\n />\n <RuiTimePicker\n v-model=\"selectedTime\"\n v-model:hour=\"selectedHour\"\n v-model:minute=\"selectedMinute\"\n v-model:second=\"selectedSecond\"\n v-model:millisecond=\"selectedMillisecond\"\n v-model:selection=\"timeSelection\"\n :accuracy=\"accuracy\"\n borderless\n />\n <div>\n <div class=\"flex gap-3 p-4 pl-3\">\n <div class=\"flex flex-col justify-center items-center\">\n <RuiButton\n variant=\"text\"\n icon\n data-id=\"set-now\"\n @click=\"setNow()\"\n >\n <RuiIcon\n name=\"lu-clock\"\n size=\"18\"\n />\n </RuiButton>\n </div>\n <RuiTimezoneSelect\n v-model=\"selectedTimezone\"\n hide-details\n class=\"pt-0 pr-0\"\n />\n </div>\n <slot />\n </div>\n </div>\n</template>\n"],"mappings":""}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import RuiIcon_default from "../icons/RuiIcon.js";
|
|
2
2
|
import RuiButton_default from "../buttons/button/RuiButton.js";
|
|
3
3
|
import RuiCalendar_default from "../calendar/RuiCalendar.js";
|
|
4
|
-
import
|
|
5
|
-
import RuiAutoComplete_default from "../forms/auto-complete/RuiAutoComplete.js";
|
|
4
|
+
import RuiTimezoneSelect_default from "./RuiTimezoneSelect.js";
|
|
6
5
|
import RuiTimePicker_default from "../time-picker/RuiTimePicker.js";
|
|
7
|
-
import { createElementBlock, createElementVNode, createVNode, defineComponent, mergeModels, openBlock, renderSlot,
|
|
6
|
+
import { createElementBlock, createElementVNode, createVNode, defineComponent, mergeModels, openBlock, renderSlot, useModel, withCtx } from "vue";
|
|
8
7
|
//#region src/components/date-time-picker/RuiDateTimePickerMenu.vue?vue&type=script&setup=true&lang.ts
|
|
9
8
|
var _hoisted_1 = { class: "flex divide-x divide-rui-grey-200 dark:divide-rui-grey-800" };
|
|
10
9
|
var _hoisted_2 = { class: "flex gap-3 p-4 pl-3" };
|
|
@@ -115,15 +114,12 @@ var RuiDateTimePickerMenu_vue_vue_type_script_setup_true_lang_default = /* @__PU
|
|
|
115
114
|
size: "18"
|
|
116
115
|
})]),
|
|
117
116
|
_: 1
|
|
118
|
-
})]), createVNode(
|
|
117
|
+
})]), createVNode(RuiTimezoneSelect_default, {
|
|
119
118
|
modelValue: selectedTimezone.value,
|
|
120
119
|
"onUpdate:modelValue": _cache[9] || (_cache[9] = ($event) => selectedTimezone.value = $event),
|
|
121
120
|
"hide-details": "",
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
variant: "outlined",
|
|
125
|
-
options: unref(timezones)
|
|
126
|
-
}, null, 8, ["modelValue", "options"])]), renderSlot(_ctx.$slots, "default")])
|
|
121
|
+
class: "pt-0 pr-0"
|
|
122
|
+
}, null, 8, ["modelValue"])]), renderSlot(_ctx.$slots, "default")])
|
|
127
123
|
]);
|
|
128
124
|
};
|
|
129
125
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RuiDateTimePickerMenu.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/date-time-picker/RuiDateTimePickerMenu.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { TimeAccuracy } from '@/consts/time-accuracy';\nimport RuiButton from '@/components/buttons/button/RuiButton.vue';\nimport RuiCalendar from '@/components/calendar/RuiCalendar.vue';\nimport
|
|
1
|
+
{"version":3,"file":"RuiDateTimePickerMenu.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/date-time-picker/RuiDateTimePickerMenu.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { TimeAccuracy } from '@/consts/time-accuracy';\nimport RuiButton from '@/components/buttons/button/RuiButton.vue';\nimport RuiCalendar from '@/components/calendar/RuiCalendar.vue';\nimport RuiTimezoneSelect from '@/components/date-time-picker/RuiTimezoneSelect.vue';\nimport RuiIcon from '@/components/icons/RuiIcon.vue';\nimport RuiTimePicker, { type TimePickerSelection } from '@/components/time-picker/RuiTimePicker.vue';\n\ndefineOptions({\n name: 'RuiDateTimePickerMenu',\n});\n\nconst selectedDate = defineModel<Date | undefined>('selectedDate', { required: true });\nconst selectedTime = defineModel<Date | undefined>('selectedTime', { required: true });\nconst selectedHour = defineModel<number | undefined>('selectedHour', { required: true });\nconst selectedMinute = defineModel<number | undefined>('selectedMinute', { required: true });\nconst selectedSecond = defineModel<number | undefined>('selectedSecond', { required: true });\nconst selectedMillisecond = defineModel<number | undefined>('selectedMillisecond', { required: true });\nconst timeSelection = defineModel<TimePickerSelection>('timeSelection', { required: true });\nconst selectedTimezone = defineModel<string | undefined>('selectedTimezone', { required: true });\nconst calendarMenuOpen = defineModel<boolean>('calendarMenuOpen', { required: true });\n\ndefineProps<{\n accuracy: TimeAccuracy;\n maxDate?: Date | number;\n minDate?: Date | number;\n}>();\n\nconst emit = defineEmits<{\n 'set-now': [];\n}>();\n\ndefineSlots<{\n default: () => any;\n}>();\n\nfunction setNow(): void {\n emit('set-now');\n}\n</script>\n\n<template>\n <div class=\"flex divide-x divide-rui-grey-200 dark:divide-rui-grey-800\">\n <RuiCalendar\n v-model=\"selectedDate\"\n v-model:menu-open=\"calendarMenuOpen\"\n borderless\n :max-date=\"maxDate\"\n :min-date=\"minDate\"\n />\n <RuiTimePicker\n v-model=\"selectedTime\"\n v-model:hour=\"selectedHour\"\n v-model:minute=\"selectedMinute\"\n v-model:second=\"selectedSecond\"\n v-model:millisecond=\"selectedMillisecond\"\n v-model:selection=\"timeSelection\"\n :accuracy=\"accuracy\"\n borderless\n />\n <div>\n <div class=\"flex gap-3 p-4 pl-3\">\n <div class=\"flex flex-col justify-center items-center\">\n <RuiButton\n variant=\"text\"\n icon\n data-id=\"set-now\"\n @click=\"setNow()\"\n >\n <RuiIcon\n name=\"lu-clock\"\n size=\"18\"\n />\n </RuiButton>\n </div>\n <RuiTimezoneSelect\n v-model=\"selectedTimezone\"\n hide-details\n class=\"pt-0 pr-0\"\n />\n </div>\n <slot />\n </div>\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAYA,MAAM,eAAe,SAA6B,SAAC,eAAmC;EACtF,MAAM,eAAe,SAA6B,SAAC,eAAmC;EACtF,MAAM,eAAe,SAA+B,SAAC,eAAmC;EACxF,MAAM,iBAAiB,SAA+B,SAAC,iBAAqC;EAC5F,MAAM,iBAAiB,SAA+B,SAAC,iBAAqC;EAC5F,MAAM,sBAAsB,SAA+B,SAAC,sBAA0C;EACtG,MAAM,gBAAgB,SAAgC,SAAC,gBAAoC;EAC3F,MAAM,mBAAmB,SAA+B,SAAC,mBAAuC;EAChG,MAAM,mBAAmB,SAAoB,SAAC,mBAAuC;EAQrF,MAAM,OAAO;EAQb,SAAS,SAAe;AACtB,QAAK,UAAU;;;uBAKf,mBAyCM,OAzCN,YAyCM;IAxCJ,YAME,qBAAA;iBALS,aAAA;+EAAY,QAAA;KACb,aAAW,iBAAA;iFAAgB,QAAA;KACnC,YAAA;KACC,YAAU,QAAA;KACV,YAAU,QAAA;;;;;;;IAEb,YASE,uBAAA;iBARS,aAAA;+EAAY,QAAA;KACb,MAAM,aAAA;yEAAY,QAAA;KAClB,QAAQ,eAAA;6EAAc,QAAA;KACtB,QAAQ,eAAA;6EAAc,QAAA;KACtB,aAAa,oBAAA;uFAAmB,QAAA;KAChC,WAAW,cAAA;+EAAa,QAAA;KAC/B,UAAU,QAAA;KACX,YAAA;;;;;;;;;;IAEF,mBAsBM,OAAA,MAAA,CArBJ,mBAmBM,OAnBN,YAmBM,CAlBJ,mBAYM,OAZN,YAYM,CAXJ,YAUY,mBAAA;KATV,SAAQ;KACR,MAAA;KACA,WAAQ;KACP,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,QAAM;;4BAKZ,CAHF,YAGE,iBAAA;MAFA,MAAK;MACL,MAAK;;;UAIX,YAIE,2BAAA;iBAHS,iBAAA;mFAAgB,QAAA;KACzB,gBAAA;KACA,OAAM;mCAGV,WAAQ,KAAA,QAAA,UAAA,CAAA,CAAA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import RuiTimezoneSelect_vue_vue_type_script_setup_true_lang_default from "./RuiTimezoneSelect.vue_vue_type_script_setup_true_lang.js";
|
|
2
|
+
//#region src/components/date-time-picker/RuiTimezoneSelect.vue
|
|
3
|
+
var RuiTimezoneSelect_default = RuiTimezoneSelect_vue_vue_type_script_setup_true_lang_default;
|
|
4
|
+
//#endregion
|
|
5
|
+
export { RuiTimezoneSelect_default as default };
|
|
6
|
+
|
|
7
|
+
//# sourceMappingURL=RuiTimezoneSelect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RuiTimezoneSelect.js","names":[],"sources":["../../../src/components/date-time-picker/RuiTimezoneSelect.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { AutoCompleteVariant } from '@/components/forms/auto-complete/auto-complete-styles';\nimport type { MenuProps } from '@/components/overlays/menu/RuiMenu.vue';\nimport { timezones } from '@/components/date-time-picker/timezones';\nimport RuiAutoComplete, { type RuiAutoCompleteClassNames } from '@/components/forms/auto-complete/RuiAutoComplete.vue';\n\nexport interface RuiTimezoneSelectProps {\n disabled?: boolean;\n readOnly?: boolean;\n dense?: boolean;\n clearable?: boolean;\n label?: string;\n variant?: AutoCompleteVariant;\n hint?: string;\n errorMessages?: string | string[];\n successMessages?: string | string[];\n hideDetails?: boolean;\n placeholder?: string;\n required?: boolean;\n classNames?: RuiAutoCompleteClassNames;\n menuOptions?: MenuProps;\n}\n\ndefineOptions({\n name: 'RuiTimezoneSelect',\n});\n\nconst modelValue = defineModel<string | undefined>({ required: true });\n\nconst {\n disabled = false,\n readOnly = false,\n dense = false,\n clearable = false,\n label = 'Timezone',\n variant = 'outlined',\n hint,\n errorMessages,\n successMessages,\n hideDetails = false,\n placeholder,\n required = false,\n classNames,\n menuOptions,\n} = defineProps<RuiTimezoneSelectProps>();\n\ninterface TimezoneOption {\n value: string;\n label: string;\n}\n\nconst options: TimezoneOption[] = timezones.map(value => ({\n value,\n label: value.replace(/_/g, ' '),\n}));\n</script>\n\n<template>\n <RuiAutoComplete\n v-model=\"modelValue\"\n key-attr=\"value\"\n text-attr=\"label\"\n auto-select-first\n :options=\"options\"\n :label=\"label\"\n :variant=\"variant\"\n :disabled=\"disabled\"\n :read-only=\"readOnly\"\n :dense=\"dense\"\n :clearable=\"clearable\"\n :hint=\"hint\"\n :error-messages=\"errorMessages\"\n :success-messages=\"successMessages\"\n :hide-details=\"hideDetails\"\n :placeholder=\"placeholder\"\n :required=\"required\"\n :class-names=\"classNames\"\n :menu-options=\"menuOptions\"\n />\n</template>\n"],"mappings":""}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { AutoCompleteVariant } from '../../components/forms/auto-complete/auto-complete-styles.js';
|
|
2
|
+
import type { MenuProps } from '../../components/overlays/menu/RuiMenu.vue';
|
|
3
|
+
import { type RuiAutoCompleteClassNames } from '../../components/forms/auto-complete/RuiAutoComplete.vue';
|
|
4
|
+
export interface RuiTimezoneSelectProps {
|
|
5
|
+
disabled?: boolean;
|
|
6
|
+
readOnly?: boolean;
|
|
7
|
+
dense?: boolean;
|
|
8
|
+
clearable?: boolean;
|
|
9
|
+
label?: string;
|
|
10
|
+
variant?: AutoCompleteVariant;
|
|
11
|
+
hint?: string;
|
|
12
|
+
errorMessages?: string | string[];
|
|
13
|
+
successMessages?: string | string[];
|
|
14
|
+
hideDetails?: boolean;
|
|
15
|
+
placeholder?: string;
|
|
16
|
+
required?: boolean;
|
|
17
|
+
classNames?: RuiAutoCompleteClassNames;
|
|
18
|
+
menuOptions?: MenuProps;
|
|
19
|
+
}
|
|
20
|
+
type __VLS_Props = RuiTimezoneSelectProps;
|
|
21
|
+
type __VLS_ModelProps = {
|
|
22
|
+
modelValue: string | undefined;
|
|
23
|
+
};
|
|
24
|
+
type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
|
|
25
|
+
declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
26
|
+
"update:modelValue": (value: string | undefined) => any;
|
|
27
|
+
}, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
|
|
28
|
+
"onUpdate:modelValue"?: ((value: string | undefined) => any) | undefined;
|
|
29
|
+
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
30
|
+
declare const _default: typeof __VLS_export;
|
|
31
|
+
export default _default;
|
package/dist/components/date-time-picker/RuiTimezoneSelect.vue_vue_type_script_setup_true_lang.js
ADDED
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { timezones } from "./timezones.js";
|
|
2
|
+
import RuiAutoComplete_default from "../forms/auto-complete/RuiAutoComplete.js";
|
|
3
|
+
import { createBlock, defineComponent, mergeModels, openBlock, unref, useModel } from "vue";
|
|
4
|
+
//#region src/components/date-time-picker/RuiTimezoneSelect.vue?vue&type=script&setup=true&lang.ts
|
|
5
|
+
var RuiTimezoneSelect_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
|
|
6
|
+
name: "RuiTimezoneSelect",
|
|
7
|
+
__name: "RuiTimezoneSelect",
|
|
8
|
+
props: /* @__PURE__ */ mergeModels({
|
|
9
|
+
disabled: {
|
|
10
|
+
type: Boolean,
|
|
11
|
+
default: false
|
|
12
|
+
},
|
|
13
|
+
readOnly: {
|
|
14
|
+
type: Boolean,
|
|
15
|
+
default: false
|
|
16
|
+
},
|
|
17
|
+
dense: {
|
|
18
|
+
type: Boolean,
|
|
19
|
+
default: false
|
|
20
|
+
},
|
|
21
|
+
clearable: {
|
|
22
|
+
type: Boolean,
|
|
23
|
+
default: false
|
|
24
|
+
},
|
|
25
|
+
label: { default: "Timezone" },
|
|
26
|
+
variant: { default: "outlined" },
|
|
27
|
+
hint: {},
|
|
28
|
+
errorMessages: {},
|
|
29
|
+
successMessages: {},
|
|
30
|
+
hideDetails: {
|
|
31
|
+
type: Boolean,
|
|
32
|
+
default: false
|
|
33
|
+
},
|
|
34
|
+
placeholder: {},
|
|
35
|
+
required: {
|
|
36
|
+
type: Boolean,
|
|
37
|
+
default: false
|
|
38
|
+
},
|
|
39
|
+
classNames: {},
|
|
40
|
+
menuOptions: {}
|
|
41
|
+
}, {
|
|
42
|
+
"modelValue": { required: true },
|
|
43
|
+
"modelModifiers": {}
|
|
44
|
+
}),
|
|
45
|
+
emits: ["update:modelValue"],
|
|
46
|
+
setup(__props) {
|
|
47
|
+
const modelValue = useModel(__props, "modelValue");
|
|
48
|
+
const options = timezones.map((value) => ({
|
|
49
|
+
value,
|
|
50
|
+
label: value.replace(/_/g, " ")
|
|
51
|
+
}));
|
|
52
|
+
return (_ctx, _cache) => {
|
|
53
|
+
return openBlock(), createBlock(RuiAutoComplete_default, {
|
|
54
|
+
modelValue: modelValue.value,
|
|
55
|
+
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => modelValue.value = $event),
|
|
56
|
+
"key-attr": "value",
|
|
57
|
+
"text-attr": "label",
|
|
58
|
+
"auto-select-first": "",
|
|
59
|
+
options: unref(options),
|
|
60
|
+
label: __props.label,
|
|
61
|
+
variant: __props.variant,
|
|
62
|
+
disabled: __props.disabled,
|
|
63
|
+
"read-only": __props.readOnly,
|
|
64
|
+
dense: __props.dense,
|
|
65
|
+
clearable: __props.clearable,
|
|
66
|
+
hint: __props.hint,
|
|
67
|
+
"error-messages": __props.errorMessages,
|
|
68
|
+
"success-messages": __props.successMessages,
|
|
69
|
+
"hide-details": __props.hideDetails,
|
|
70
|
+
placeholder: __props.placeholder,
|
|
71
|
+
required: __props.required,
|
|
72
|
+
"class-names": __props.classNames,
|
|
73
|
+
"menu-options": __props.menuOptions
|
|
74
|
+
}, null, 8, [
|
|
75
|
+
"modelValue",
|
|
76
|
+
"options",
|
|
77
|
+
"label",
|
|
78
|
+
"variant",
|
|
79
|
+
"disabled",
|
|
80
|
+
"read-only",
|
|
81
|
+
"dense",
|
|
82
|
+
"clearable",
|
|
83
|
+
"hint",
|
|
84
|
+
"error-messages",
|
|
85
|
+
"success-messages",
|
|
86
|
+
"hide-details",
|
|
87
|
+
"placeholder",
|
|
88
|
+
"required",
|
|
89
|
+
"class-names",
|
|
90
|
+
"menu-options"
|
|
91
|
+
]);
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
//#endregion
|
|
96
|
+
export { RuiTimezoneSelect_vue_vue_type_script_setup_true_lang_default as default };
|
|
97
|
+
|
|
98
|
+
//# sourceMappingURL=RuiTimezoneSelect.vue_vue_type_script_setup_true_lang.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RuiTimezoneSelect.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/date-time-picker/RuiTimezoneSelect.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { AutoCompleteVariant } from '@/components/forms/auto-complete/auto-complete-styles';\nimport type { MenuProps } from '@/components/overlays/menu/RuiMenu.vue';\nimport { timezones } from '@/components/date-time-picker/timezones';\nimport RuiAutoComplete, { type RuiAutoCompleteClassNames } from '@/components/forms/auto-complete/RuiAutoComplete.vue';\n\nexport interface RuiTimezoneSelectProps {\n disabled?: boolean;\n readOnly?: boolean;\n dense?: boolean;\n clearable?: boolean;\n label?: string;\n variant?: AutoCompleteVariant;\n hint?: string;\n errorMessages?: string | string[];\n successMessages?: string | string[];\n hideDetails?: boolean;\n placeholder?: string;\n required?: boolean;\n classNames?: RuiAutoCompleteClassNames;\n menuOptions?: MenuProps;\n}\n\ndefineOptions({\n name: 'RuiTimezoneSelect',\n});\n\nconst modelValue = defineModel<string | undefined>({ required: true });\n\nconst {\n disabled = false,\n readOnly = false,\n dense = false,\n clearable = false,\n label = 'Timezone',\n variant = 'outlined',\n hint,\n errorMessages,\n successMessages,\n hideDetails = false,\n placeholder,\n required = false,\n classNames,\n menuOptions,\n} = defineProps<RuiTimezoneSelectProps>();\n\ninterface TimezoneOption {\n value: string;\n label: string;\n}\n\nconst options: TimezoneOption[] = timezones.map(value => ({\n value,\n label: value.replace(/_/g, ' '),\n}));\n</script>\n\n<template>\n <RuiAutoComplete\n v-model=\"modelValue\"\n key-attr=\"value\"\n text-attr=\"label\"\n auto-select-first\n :options=\"options\"\n :label=\"label\"\n :variant=\"variant\"\n :disabled=\"disabled\"\n :read-only=\"readOnly\"\n :dense=\"dense\"\n :clearable=\"clearable\"\n :hint=\"hint\"\n :error-messages=\"errorMessages\"\n :success-messages=\"successMessages\"\n :hide-details=\"hideDetails\"\n :placeholder=\"placeholder\"\n :required=\"required\"\n :class-names=\"classNames\"\n :menu-options=\"menuOptions\"\n />\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2BA,MAAM,aAAa,SAA+B,SAAA,aAAoB;EAwBtE,MAAM,UAA4B,UAAU,KAAI,WAAU;GACxD;GACA,OAAO,MAAM,QAAQ,MAAM,IAAI;GAChC,EAAE;;uBAID,YAoBE,yBAAA;gBAnBS,WAAA;4EAAU,QAAA;IACnB,YAAS;IACT,aAAU;IACV,qBAAA;IACC,SAAS,MAAA,QAAO;IAChB,OAAO,QAAA;IACP,SAAS,QAAA;IACT,UAAU,QAAA;IACV,aAAW,QAAA;IACX,OAAO,QAAA;IACP,WAAW,QAAA;IACX,MAAM,QAAA;IACN,kBAAgB,QAAA;IAChB,oBAAkB,QAAA;IAClB,gBAAc,QAAA;IACd,aAAa,QAAA;IACb,UAAU,QAAA;IACV,eAAa,QAAA;IACb,gBAAc,QAAA"}
|
|
@@ -95,9 +95,11 @@ var timezones = [
|
|
|
95
95
|
"America/Cayman",
|
|
96
96
|
"America/Chicago",
|
|
97
97
|
"America/Chihuahua",
|
|
98
|
+
"America/Ciudad_Juarez",
|
|
98
99
|
"America/Coral_Harbour",
|
|
99
100
|
"America/Cordoba",
|
|
100
101
|
"America/Costa_Rica",
|
|
102
|
+
"America/Coyhaique",
|
|
101
103
|
"America/Creston",
|
|
102
104
|
"America/Cuiaba",
|
|
103
105
|
"America/Curacao",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timezones.js","names":[],"sources":["../../../src/components/date-time-picker/timezones.ts"],"sourcesContent":["/* eslint-disable max-lines */\n\nexport const timezones: string[] = [\n 'Africa/Abidjan',\n 'Africa/Accra',\n 'Africa/Addis_Ababa',\n 'Africa/Algiers',\n 'Africa/Asmara',\n 'Africa/Asmera',\n 'Africa/Bamako',\n 'Africa/Bangui',\n 'Africa/Banjul',\n 'Africa/Bissau',\n 'Africa/Blantyre',\n 'Africa/Brazzaville',\n 'Africa/Bujumbura',\n 'Africa/Cairo',\n 'Africa/Casablanca',\n 'Africa/Ceuta',\n 'Africa/Conakry',\n 'Africa/Dakar',\n 'Africa/Dar_es_Salaam',\n 'Africa/Djibouti',\n 'Africa/Douala',\n 'Africa/El_Aaiun',\n 'Africa/Freetown',\n 'Africa/Gaborone',\n 'Africa/Harare',\n 'Africa/Johannesburg',\n 'Africa/Juba',\n 'Africa/Kampala',\n 'Africa/Khartoum',\n 'Africa/Kigali',\n 'Africa/Kinshasa',\n 'Africa/Lagos',\n 'Africa/Libreville',\n 'Africa/Lome',\n 'Africa/Luanda',\n 'Africa/Lubumbashi',\n 'Africa/Lusaka',\n 'Africa/Malabo',\n 'Africa/Maputo',\n 'Africa/Maseru',\n 'Africa/Mbabane',\n 'Africa/Mogadishu',\n 'Africa/Monrovia',\n 'Africa/Nairobi',\n 'Africa/Ndjamena',\n 'Africa/Niamey',\n 'Africa/Nouakchott',\n 'Africa/Ouagadougou',\n 'Africa/Porto-Novo',\n 'Africa/Sao_Tome',\n 'Africa/Timbuktu',\n 'Africa/Tripoli',\n 'Africa/Tunis',\n 'Africa/Windhoek',\n 'America/Adak',\n 'America/Anchorage',\n 'America/Anguilla',\n 'America/Antigua',\n 'America/Araguaina',\n 'America/Argentina/Buenos_Aires',\n 'America/Argentina/Catamarca',\n 'America/Argentina/ComodRivadavia',\n 'America/Argentina/Cordoba',\n 'America/Argentina/Jujuy',\n 'America/Argentina/La_Rioja',\n 'America/Argentina/Mendoza',\n 'America/Argentina/Rio_Gallegos',\n 'America/Argentina/Salta',\n 'America/Argentina/San_Juan',\n 'America/Argentina/San_Luis',\n 'America/Argentina/Tucuman',\n 'America/Argentina/Ushuaia',\n 'America/Aruba',\n 'America/Asuncion',\n 'America/Atikokan',\n 'America/Atka',\n 'America/Bahia',\n 'America/Bahia_Banderas',\n 'America/Barbados',\n 'America/Belem',\n 'America/Belize',\n 'America/Blanc-Sablon',\n 'America/Boa_Vista',\n 'America/Bogota',\n 'America/Boise',\n 'America/Buenos_Aires',\n 'America/Cambridge_Bay',\n 'America/Campo_Grande',\n 'America/Cancun',\n 'America/Caracas',\n 'America/Catamarca',\n 'America/Cayenne',\n 'America/Cayman',\n 'America/Chicago',\n 'America/Chihuahua',\n 'America/Coral_Harbour',\n 'America/Cordoba',\n 'America/Costa_Rica',\n 'America/Creston',\n 'America/Cuiaba',\n 'America/Curacao',\n 'America/Danmarkshavn',\n 'America/Dawson',\n 'America/Dawson_Creek',\n 'America/Denver',\n 'America/Detroit',\n 'America/Dominica',\n 'America/Edmonton',\n 'America/Eirunepe',\n 'America/El_Salvador',\n 'America/Ensenada',\n 'America/Fort_Nelson',\n 'America/Fort_Wayne',\n 'America/Fortaleza',\n 'America/Glace_Bay',\n 'America/Godthab',\n 'America/Goose_Bay',\n 'America/Grand_Turk',\n 'America/Grenada',\n 'America/Guadeloupe',\n 'America/Guatemala',\n 'America/Guayaquil',\n 'America/Guyana',\n 'America/Halifax',\n 'America/Havana',\n 'America/Hermosillo',\n 'America/Indiana/Indianapolis',\n 'America/Indiana/Knox',\n 'America/Indiana/Marengo',\n 'America/Indiana/Petersburg',\n 'America/Indiana/Tell_City',\n 'America/Indiana/Vevay',\n 'America/Indiana/Vincennes',\n 'America/Indiana/Winamac',\n 'America/Indianapolis',\n 'America/Inuvik',\n 'America/Iqaluit',\n 'America/Jamaica',\n 'America/Jujuy',\n 'America/Juneau',\n 'America/Kentucky/Louisville',\n 'America/Kentucky/Monticello',\n 'America/Knox_IN',\n 'America/Kralendijk',\n 'America/La_Paz',\n 'America/Lima',\n 'America/Los_Angeles',\n 'America/Louisville',\n 'America/Lower_Princes',\n 'America/Maceio',\n 'America/Managua',\n 'America/Manaus',\n 'America/Marigot',\n 'America/Martinique',\n 'America/Matamoros',\n 'America/Mazatlan',\n 'America/Mendoza',\n 'America/Menominee',\n 'America/Merida',\n 'America/Metlakatla',\n 'America/Mexico_City',\n 'America/Miquelon',\n 'America/Moncton',\n 'America/Monterrey',\n 'America/Montevideo',\n 'America/Montreal',\n 'America/Montserrat',\n 'America/Nassau',\n 'America/New_York',\n 'America/Nipigon',\n 'America/Nome',\n 'America/Noronha',\n 'America/North_Dakota/Beulah',\n 'America/North_Dakota/Center',\n 'America/North_Dakota/New_Salem',\n 'America/Nuuk',\n 'America/Ojinaga',\n 'America/Panama',\n 'America/Pangnirtung',\n 'America/Paramaribo',\n 'America/Phoenix',\n 'America/Port-au-Prince',\n 'America/Port_of_Spain',\n 'America/Porto_Acre',\n 'America/Porto_Velho',\n 'America/Puerto_Rico',\n 'America/Punta_Arenas',\n 'America/Rainy_River',\n 'America/Rankin_Inlet',\n 'America/Recife',\n 'America/Regina',\n 'America/Resolute',\n 'America/Rio_Branco',\n 'America/Rosario',\n 'America/Santa_Isabel',\n 'America/Santarem',\n 'America/Santiago',\n 'America/Santo_Domingo',\n 'America/Sao_Paulo',\n 'America/Scoresbysund',\n 'America/Shiprock',\n 'America/Sitka',\n 'America/St_Barthelemy',\n 'America/St_Johns',\n 'America/St_Kitts',\n 'America/St_Lucia',\n 'America/St_Thomas',\n 'America/St_Vincent',\n 'America/Swift_Current',\n 'America/Tegucigalpa',\n 'America/Thule',\n 'America/Thunder_Bay',\n 'America/Tijuana',\n 'America/Toronto',\n 'America/Tortola',\n 'America/Vancouver',\n 'America/Virgin',\n 'America/Whitehorse',\n 'America/Winnipeg',\n 'America/Yakutat',\n 'America/Yellowknife',\n 'Antarctica/Casey',\n 'Antarctica/Davis',\n 'Antarctica/DumontDUrville',\n 'Antarctica/Macquarie',\n 'Antarctica/Mawson',\n 'Antarctica/McMurdo',\n 'Antarctica/Palmer',\n 'Antarctica/Rothera',\n 'Antarctica/South_Pole',\n 'Antarctica/Syowa',\n 'Antarctica/Troll',\n 'Antarctica/Vostok',\n 'Arctic/Longyearbyen',\n 'Asia/Aden',\n 'Asia/Almaty',\n 'Asia/Amman',\n 'Asia/Anadyr',\n 'Asia/Aqtau',\n 'Asia/Aqtobe',\n 'Asia/Ashgabat',\n 'Asia/Ashkhabad',\n 'Asia/Atyrau',\n 'Asia/Baghdad',\n 'Asia/Bahrain',\n 'Asia/Baku',\n 'Asia/Bangkok',\n 'Asia/Barnaul',\n 'Asia/Beirut',\n 'Asia/Bishkek',\n 'Asia/Brunei',\n 'Asia/Calcutta',\n 'Asia/Chita',\n 'Asia/Choibalsan',\n 'Asia/Chongqing',\n 'Asia/Chungking',\n 'Asia/Colombo',\n 'Asia/Dacca',\n 'Asia/Damascus',\n 'Asia/Dhaka',\n 'Asia/Dili',\n 'Asia/Dubai',\n 'Asia/Dushanbe',\n 'Asia/Famagusta',\n 'Asia/Gaza',\n 'Asia/Harbin',\n 'Asia/Hebron',\n 'Asia/Ho_Chi_Minh',\n 'Asia/Hong_Kong',\n 'Asia/Hovd',\n 'Asia/Irkutsk',\n 'Asia/Istanbul',\n 'Asia/Jakarta',\n 'Asia/Jayapura',\n 'Asia/Jerusalem',\n 'Asia/Kabul',\n 'Asia/Kamchatka',\n 'Asia/Karachi',\n 'Asia/Kashgar',\n 'Asia/Kathmandu',\n 'Asia/Katmandu',\n 'Asia/Khandyga',\n 'Asia/Kolkata',\n 'Asia/Krasnoyarsk',\n 'Asia/Kuala_Lumpur',\n 'Asia/Kuching',\n 'Asia/Kuwait',\n 'Asia/Macao',\n 'Asia/Macau',\n 'Asia/Magadan',\n 'Asia/Makassar',\n 'Asia/Manila',\n 'Asia/Muscat',\n 'Asia/Nicosia',\n 'Asia/Novokuznetsk',\n 'Asia/Novosibirsk',\n 'Asia/Omsk',\n 'Asia/Oral',\n 'Asia/Phnom_Penh',\n 'Asia/Pontianak',\n 'Asia/Pyongyang',\n 'Asia/Qatar',\n 'Asia/Qostanay',\n 'Asia/Qyzylorda',\n 'Asia/Rangoon',\n 'Asia/Riyadh',\n 'Asia/Saigon',\n 'Asia/Sakhalin',\n 'Asia/Samarkand',\n 'Asia/Seoul',\n 'Asia/Shanghai',\n 'Asia/Singapore',\n 'Asia/Srednekolymsk',\n 'Asia/Taipei',\n 'Asia/Tashkent',\n 'Asia/Tbilisi',\n 'Asia/Tehran',\n 'Asia/Tel_Aviv',\n 'Asia/Thimbu',\n 'Asia/Thimphu',\n 'Asia/Tokyo',\n 'Asia/Tomsk',\n 'Asia/Ujung_Pandang',\n 'Asia/Ulaanbaatar',\n 'Asia/Ulan_Bator',\n 'Asia/Urumqi',\n 'Asia/Ust-Nera',\n 'Asia/Vientiane',\n 'Asia/Vladivostok',\n 'Asia/Yakutsk',\n 'Asia/Yangon',\n 'Asia/Yekaterinburg',\n 'Asia/Yerevan',\n 'Atlantic/Azores',\n 'Atlantic/Bermuda',\n 'Atlantic/Canary',\n 'Atlantic/Cape_Verde',\n 'Atlantic/Faeroe',\n 'Atlantic/Faroe',\n 'Atlantic/Jan_Mayen',\n 'Atlantic/Madeira',\n 'Atlantic/Reykjavik',\n 'Atlantic/South_Georgia',\n 'Atlantic/St_Helena',\n 'Atlantic/Stanley',\n 'Australia/ACT',\n 'Australia/Adelaide',\n 'Australia/Brisbane',\n 'Australia/Broken_Hill',\n 'Australia/Canberra',\n 'Australia/Currie',\n 'Australia/Darwin',\n 'Australia/Eucla',\n 'Australia/Hobart',\n 'Australia/LHI',\n 'Australia/Lindeman',\n 'Australia/Lord_Howe',\n 'Australia/Melbourne',\n 'Australia/NSW',\n 'Australia/North',\n 'Australia/Perth',\n 'Australia/Queensland',\n 'Australia/South',\n 'Australia/Sydney',\n 'Australia/Tasmania',\n 'Australia/Victoria',\n 'Australia/West',\n 'Australia/Yancowinna',\n 'Brazil/Acre',\n 'Brazil/DeNoronha',\n 'Brazil/East',\n 'Brazil/West',\n 'CET',\n 'CST6CDT',\n 'Canada/Atlantic',\n 'Canada/Central',\n 'Canada/Eastern',\n 'Canada/Mountain',\n 'Canada/Newfoundland',\n 'Canada/Pacific',\n 'Canada/Saskatchewan',\n 'Canada/Yukon',\n 'Chile/Continental',\n 'Chile/EasterIsland',\n 'Cuba',\n 'EET',\n 'EST',\n 'EST5EDT',\n 'Egypt',\n 'Eire',\n 'Etc/GMT',\n 'Etc/GMT+0',\n 'Etc/GMT+1',\n 'Etc/GMT+10',\n 'Etc/GMT+11',\n 'Etc/GMT+12',\n 'Etc/GMT+2',\n 'Etc/GMT+3',\n 'Etc/GMT+4',\n 'Etc/GMT+5',\n 'Etc/GMT+6',\n 'Etc/GMT+7',\n 'Etc/GMT+8',\n 'Etc/GMT+9',\n 'Etc/GMT-0',\n 'Etc/GMT-1',\n 'Etc/GMT-10',\n 'Etc/GMT-11',\n 'Etc/GMT-12',\n 'Etc/GMT-13',\n 'Etc/GMT-14',\n 'Etc/GMT-2',\n 'Etc/GMT-3',\n 'Etc/GMT-4',\n 'Etc/GMT-5',\n 'Etc/GMT-6',\n 'Etc/GMT-7',\n 'Etc/GMT-8',\n 'Etc/GMT-9',\n 'Etc/GMT0',\n 'Etc/Greenwich',\n 'Etc/UCT',\n 'Etc/UTC',\n 'Etc/Universal',\n 'Etc/Zulu',\n 'Europe/Amsterdam',\n 'Europe/Andorra',\n 'Europe/Astrakhan',\n 'Europe/Athens',\n 'Europe/Belfast',\n 'Europe/Belgrade',\n 'Europe/Berlin',\n 'Europe/Bratislava',\n 'Europe/Brussels',\n 'Europe/Bucharest',\n 'Europe/Budapest',\n 'Europe/Busingen',\n 'Europe/Chisinau',\n 'Europe/Copenhagen',\n 'Europe/Dublin',\n 'Europe/Gibraltar',\n 'Europe/Guernsey',\n 'Europe/Helsinki',\n 'Europe/Isle_of_Man',\n 'Europe/Istanbul',\n 'Europe/Jersey',\n 'Europe/Kaliningrad',\n 'Europe/Kiev',\n 'Europe/Kirov',\n 'Europe/Lisbon',\n 'Europe/Ljubljana',\n 'Europe/London',\n 'Europe/Luxembourg',\n 'Europe/Madrid',\n 'Europe/Malta',\n 'Europe/Mariehamn',\n 'Europe/Minsk',\n 'Europe/Monaco',\n 'Europe/Moscow',\n 'Europe/Nicosia',\n 'Europe/Oslo',\n 'Europe/Paris',\n 'Europe/Podgorica',\n 'Europe/Prague',\n 'Europe/Riga',\n 'Europe/Rome',\n 'Europe/Samara',\n 'Europe/San_Marino',\n 'Europe/Sarajevo',\n 'Europe/Saratov',\n 'Europe/Simferopol',\n 'Europe/Skopje',\n 'Europe/Sofia',\n 'Europe/Stockholm',\n 'Europe/Tallinn',\n 'Europe/Tirane',\n 'Europe/Tiraspol',\n 'Europe/Ulyanovsk',\n 'Europe/Uzhgorod',\n 'Europe/Vaduz',\n 'Europe/Vatican',\n 'Europe/Vienna',\n 'Europe/Vilnius',\n 'Europe/Volgograd',\n 'Europe/Warsaw',\n 'Europe/Zagreb',\n 'Europe/Zaporozhye',\n 'Europe/Zurich',\n 'Factory',\n 'GB',\n 'GB-Eire',\n 'GMT',\n 'GMT+0',\n 'GMT-0',\n 'GMT0',\n 'Greenwich',\n 'HST',\n 'Hongkong',\n 'Iceland',\n 'Indian/Antananarivo',\n 'Indian/Chagos',\n 'Indian/Christmas',\n 'Indian/Cocos',\n 'Indian/Comoro',\n 'Indian/Kerguelen',\n 'Indian/Mahe',\n 'Indian/Maldives',\n 'Indian/Mauritius',\n 'Indian/Mayotte',\n 'Indian/Reunion',\n 'Iran',\n 'Israel',\n 'Jamaica',\n 'Japan',\n 'Kwajalein',\n 'Libya',\n 'MET',\n 'MST',\n 'MST7MDT',\n 'Mexico/BajaNorte',\n 'Mexico/BajaSur',\n 'Mexico/General',\n 'NZ',\n 'NZ-CHAT',\n 'Navajo',\n 'PRC',\n 'PST8PDT',\n 'Pacific/Apia',\n 'Pacific/Auckland',\n 'Pacific/Bougainville',\n 'Pacific/Chatham',\n 'Pacific/Chuuk',\n 'Pacific/Easter',\n 'Pacific/Efate',\n 'Pacific/Enderbury',\n 'Pacific/Fakaofo',\n 'Pacific/Fiji',\n 'Pacific/Funafuti',\n 'Pacific/Galapagos',\n 'Pacific/Gambier',\n 'Pacific/Guadalcanal',\n 'Pacific/Guam',\n 'Pacific/Honolulu',\n 'Pacific/Johnston',\n 'Pacific/Kiritimati',\n 'Pacific/Kosrae',\n 'Pacific/Kwajalein',\n 'Pacific/Majuro',\n 'Pacific/Marquesas',\n 'Pacific/Midway',\n 'Pacific/Nauru',\n 'Pacific/Niue',\n 'Pacific/Norfolk',\n 'Pacific/Noumea',\n 'Pacific/Pago_Pago',\n 'Pacific/Palau',\n 'Pacific/Pitcairn',\n 'Pacific/Pohnpei',\n 'Pacific/Ponape',\n 'Pacific/Port_Moresby',\n 'Pacific/Rarotonga',\n 'Pacific/Saipan',\n 'Pacific/Samoa',\n 'Pacific/Tahiti',\n 'Pacific/Tarawa',\n 'Pacific/Tongatapu',\n 'Pacific/Truk',\n 'Pacific/Wake',\n 'Pacific/Wallis',\n 'Pacific/Yap',\n 'Poland',\n 'Portugal',\n 'ROC',\n 'ROK',\n 'Singapore',\n 'Turkey',\n 'UCT',\n 'US/Alaska',\n 'US/Aleutian',\n 'US/Arizona',\n 'US/Central',\n 'US/East-Indiana',\n 'US/Eastern',\n 'US/Hawaii',\n 'US/Indiana-Starke',\n 'US/Michigan',\n 'US/Mountain',\n 'US/Pacific',\n 'US/Pacific-New',\n 'US/Samoa',\n 'UTC',\n 'Universal',\n 'W-SU',\n 'WET',\n 'Zulu',\n];\n"],"mappings":";AAEA,IAAa,YAAsB;CACjC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD"}
|
|
1
|
+
{"version":3,"file":"timezones.js","names":[],"sources":["../../../src/components/date-time-picker/timezones.ts"],"sourcesContent":["/* eslint-disable max-lines */\n\nexport const timezones: string[] = [\n 'Africa/Abidjan',\n 'Africa/Accra',\n 'Africa/Addis_Ababa',\n 'Africa/Algiers',\n 'Africa/Asmara',\n 'Africa/Asmera',\n 'Africa/Bamako',\n 'Africa/Bangui',\n 'Africa/Banjul',\n 'Africa/Bissau',\n 'Africa/Blantyre',\n 'Africa/Brazzaville',\n 'Africa/Bujumbura',\n 'Africa/Cairo',\n 'Africa/Casablanca',\n 'Africa/Ceuta',\n 'Africa/Conakry',\n 'Africa/Dakar',\n 'Africa/Dar_es_Salaam',\n 'Africa/Djibouti',\n 'Africa/Douala',\n 'Africa/El_Aaiun',\n 'Africa/Freetown',\n 'Africa/Gaborone',\n 'Africa/Harare',\n 'Africa/Johannesburg',\n 'Africa/Juba',\n 'Africa/Kampala',\n 'Africa/Khartoum',\n 'Africa/Kigali',\n 'Africa/Kinshasa',\n 'Africa/Lagos',\n 'Africa/Libreville',\n 'Africa/Lome',\n 'Africa/Luanda',\n 'Africa/Lubumbashi',\n 'Africa/Lusaka',\n 'Africa/Malabo',\n 'Africa/Maputo',\n 'Africa/Maseru',\n 'Africa/Mbabane',\n 'Africa/Mogadishu',\n 'Africa/Monrovia',\n 'Africa/Nairobi',\n 'Africa/Ndjamena',\n 'Africa/Niamey',\n 'Africa/Nouakchott',\n 'Africa/Ouagadougou',\n 'Africa/Porto-Novo',\n 'Africa/Sao_Tome',\n 'Africa/Timbuktu',\n 'Africa/Tripoli',\n 'Africa/Tunis',\n 'Africa/Windhoek',\n 'America/Adak',\n 'America/Anchorage',\n 'America/Anguilla',\n 'America/Antigua',\n 'America/Araguaina',\n 'America/Argentina/Buenos_Aires',\n 'America/Argentina/Catamarca',\n 'America/Argentina/ComodRivadavia',\n 'America/Argentina/Cordoba',\n 'America/Argentina/Jujuy',\n 'America/Argentina/La_Rioja',\n 'America/Argentina/Mendoza',\n 'America/Argentina/Rio_Gallegos',\n 'America/Argentina/Salta',\n 'America/Argentina/San_Juan',\n 'America/Argentina/San_Luis',\n 'America/Argentina/Tucuman',\n 'America/Argentina/Ushuaia',\n 'America/Aruba',\n 'America/Asuncion',\n 'America/Atikokan',\n 'America/Atka',\n 'America/Bahia',\n 'America/Bahia_Banderas',\n 'America/Barbados',\n 'America/Belem',\n 'America/Belize',\n 'America/Blanc-Sablon',\n 'America/Boa_Vista',\n 'America/Bogota',\n 'America/Boise',\n 'America/Buenos_Aires',\n 'America/Cambridge_Bay',\n 'America/Campo_Grande',\n 'America/Cancun',\n 'America/Caracas',\n 'America/Catamarca',\n 'America/Cayenne',\n 'America/Cayman',\n 'America/Chicago',\n 'America/Chihuahua',\n 'America/Ciudad_Juarez',\n 'America/Coral_Harbour',\n 'America/Cordoba',\n 'America/Costa_Rica',\n 'America/Coyhaique',\n 'America/Creston',\n 'America/Cuiaba',\n 'America/Curacao',\n 'America/Danmarkshavn',\n 'America/Dawson',\n 'America/Dawson_Creek',\n 'America/Denver',\n 'America/Detroit',\n 'America/Dominica',\n 'America/Edmonton',\n 'America/Eirunepe',\n 'America/El_Salvador',\n 'America/Ensenada',\n 'America/Fort_Nelson',\n 'America/Fort_Wayne',\n 'America/Fortaleza',\n 'America/Glace_Bay',\n 'America/Godthab',\n 'America/Goose_Bay',\n 'America/Grand_Turk',\n 'America/Grenada',\n 'America/Guadeloupe',\n 'America/Guatemala',\n 'America/Guayaquil',\n 'America/Guyana',\n 'America/Halifax',\n 'America/Havana',\n 'America/Hermosillo',\n 'America/Indiana/Indianapolis',\n 'America/Indiana/Knox',\n 'America/Indiana/Marengo',\n 'America/Indiana/Petersburg',\n 'America/Indiana/Tell_City',\n 'America/Indiana/Vevay',\n 'America/Indiana/Vincennes',\n 'America/Indiana/Winamac',\n 'America/Indianapolis',\n 'America/Inuvik',\n 'America/Iqaluit',\n 'America/Jamaica',\n 'America/Jujuy',\n 'America/Juneau',\n 'America/Kentucky/Louisville',\n 'America/Kentucky/Monticello',\n 'America/Knox_IN',\n 'America/Kralendijk',\n 'America/La_Paz',\n 'America/Lima',\n 'America/Los_Angeles',\n 'America/Louisville',\n 'America/Lower_Princes',\n 'America/Maceio',\n 'America/Managua',\n 'America/Manaus',\n 'America/Marigot',\n 'America/Martinique',\n 'America/Matamoros',\n 'America/Mazatlan',\n 'America/Mendoza',\n 'America/Menominee',\n 'America/Merida',\n 'America/Metlakatla',\n 'America/Mexico_City',\n 'America/Miquelon',\n 'America/Moncton',\n 'America/Monterrey',\n 'America/Montevideo',\n 'America/Montreal',\n 'America/Montserrat',\n 'America/Nassau',\n 'America/New_York',\n 'America/Nipigon',\n 'America/Nome',\n 'America/Noronha',\n 'America/North_Dakota/Beulah',\n 'America/North_Dakota/Center',\n 'America/North_Dakota/New_Salem',\n 'America/Nuuk',\n 'America/Ojinaga',\n 'America/Panama',\n 'America/Pangnirtung',\n 'America/Paramaribo',\n 'America/Phoenix',\n 'America/Port-au-Prince',\n 'America/Port_of_Spain',\n 'America/Porto_Acre',\n 'America/Porto_Velho',\n 'America/Puerto_Rico',\n 'America/Punta_Arenas',\n 'America/Rainy_River',\n 'America/Rankin_Inlet',\n 'America/Recife',\n 'America/Regina',\n 'America/Resolute',\n 'America/Rio_Branco',\n 'America/Rosario',\n 'America/Santa_Isabel',\n 'America/Santarem',\n 'America/Santiago',\n 'America/Santo_Domingo',\n 'America/Sao_Paulo',\n 'America/Scoresbysund',\n 'America/Shiprock',\n 'America/Sitka',\n 'America/St_Barthelemy',\n 'America/St_Johns',\n 'America/St_Kitts',\n 'America/St_Lucia',\n 'America/St_Thomas',\n 'America/St_Vincent',\n 'America/Swift_Current',\n 'America/Tegucigalpa',\n 'America/Thule',\n 'America/Thunder_Bay',\n 'America/Tijuana',\n 'America/Toronto',\n 'America/Tortola',\n 'America/Vancouver',\n 'America/Virgin',\n 'America/Whitehorse',\n 'America/Winnipeg',\n 'America/Yakutat',\n 'America/Yellowknife',\n 'Antarctica/Casey',\n 'Antarctica/Davis',\n 'Antarctica/DumontDUrville',\n 'Antarctica/Macquarie',\n 'Antarctica/Mawson',\n 'Antarctica/McMurdo',\n 'Antarctica/Palmer',\n 'Antarctica/Rothera',\n 'Antarctica/South_Pole',\n 'Antarctica/Syowa',\n 'Antarctica/Troll',\n 'Antarctica/Vostok',\n 'Arctic/Longyearbyen',\n 'Asia/Aden',\n 'Asia/Almaty',\n 'Asia/Amman',\n 'Asia/Anadyr',\n 'Asia/Aqtau',\n 'Asia/Aqtobe',\n 'Asia/Ashgabat',\n 'Asia/Ashkhabad',\n 'Asia/Atyrau',\n 'Asia/Baghdad',\n 'Asia/Bahrain',\n 'Asia/Baku',\n 'Asia/Bangkok',\n 'Asia/Barnaul',\n 'Asia/Beirut',\n 'Asia/Bishkek',\n 'Asia/Brunei',\n 'Asia/Calcutta',\n 'Asia/Chita',\n 'Asia/Choibalsan',\n 'Asia/Chongqing',\n 'Asia/Chungking',\n 'Asia/Colombo',\n 'Asia/Dacca',\n 'Asia/Damascus',\n 'Asia/Dhaka',\n 'Asia/Dili',\n 'Asia/Dubai',\n 'Asia/Dushanbe',\n 'Asia/Famagusta',\n 'Asia/Gaza',\n 'Asia/Harbin',\n 'Asia/Hebron',\n 'Asia/Ho_Chi_Minh',\n 'Asia/Hong_Kong',\n 'Asia/Hovd',\n 'Asia/Irkutsk',\n 'Asia/Istanbul',\n 'Asia/Jakarta',\n 'Asia/Jayapura',\n 'Asia/Jerusalem',\n 'Asia/Kabul',\n 'Asia/Kamchatka',\n 'Asia/Karachi',\n 'Asia/Kashgar',\n 'Asia/Kathmandu',\n 'Asia/Katmandu',\n 'Asia/Khandyga',\n 'Asia/Kolkata',\n 'Asia/Krasnoyarsk',\n 'Asia/Kuala_Lumpur',\n 'Asia/Kuching',\n 'Asia/Kuwait',\n 'Asia/Macao',\n 'Asia/Macau',\n 'Asia/Magadan',\n 'Asia/Makassar',\n 'Asia/Manila',\n 'Asia/Muscat',\n 'Asia/Nicosia',\n 'Asia/Novokuznetsk',\n 'Asia/Novosibirsk',\n 'Asia/Omsk',\n 'Asia/Oral',\n 'Asia/Phnom_Penh',\n 'Asia/Pontianak',\n 'Asia/Pyongyang',\n 'Asia/Qatar',\n 'Asia/Qostanay',\n 'Asia/Qyzylorda',\n 'Asia/Rangoon',\n 'Asia/Riyadh',\n 'Asia/Saigon',\n 'Asia/Sakhalin',\n 'Asia/Samarkand',\n 'Asia/Seoul',\n 'Asia/Shanghai',\n 'Asia/Singapore',\n 'Asia/Srednekolymsk',\n 'Asia/Taipei',\n 'Asia/Tashkent',\n 'Asia/Tbilisi',\n 'Asia/Tehran',\n 'Asia/Tel_Aviv',\n 'Asia/Thimbu',\n 'Asia/Thimphu',\n 'Asia/Tokyo',\n 'Asia/Tomsk',\n 'Asia/Ujung_Pandang',\n 'Asia/Ulaanbaatar',\n 'Asia/Ulan_Bator',\n 'Asia/Urumqi',\n 'Asia/Ust-Nera',\n 'Asia/Vientiane',\n 'Asia/Vladivostok',\n 'Asia/Yakutsk',\n 'Asia/Yangon',\n 'Asia/Yekaterinburg',\n 'Asia/Yerevan',\n 'Atlantic/Azores',\n 'Atlantic/Bermuda',\n 'Atlantic/Canary',\n 'Atlantic/Cape_Verde',\n 'Atlantic/Faeroe',\n 'Atlantic/Faroe',\n 'Atlantic/Jan_Mayen',\n 'Atlantic/Madeira',\n 'Atlantic/Reykjavik',\n 'Atlantic/South_Georgia',\n 'Atlantic/St_Helena',\n 'Atlantic/Stanley',\n 'Australia/ACT',\n 'Australia/Adelaide',\n 'Australia/Brisbane',\n 'Australia/Broken_Hill',\n 'Australia/Canberra',\n 'Australia/Currie',\n 'Australia/Darwin',\n 'Australia/Eucla',\n 'Australia/Hobart',\n 'Australia/LHI',\n 'Australia/Lindeman',\n 'Australia/Lord_Howe',\n 'Australia/Melbourne',\n 'Australia/NSW',\n 'Australia/North',\n 'Australia/Perth',\n 'Australia/Queensland',\n 'Australia/South',\n 'Australia/Sydney',\n 'Australia/Tasmania',\n 'Australia/Victoria',\n 'Australia/West',\n 'Australia/Yancowinna',\n 'Brazil/Acre',\n 'Brazil/DeNoronha',\n 'Brazil/East',\n 'Brazil/West',\n 'CET',\n 'CST6CDT',\n 'Canada/Atlantic',\n 'Canada/Central',\n 'Canada/Eastern',\n 'Canada/Mountain',\n 'Canada/Newfoundland',\n 'Canada/Pacific',\n 'Canada/Saskatchewan',\n 'Canada/Yukon',\n 'Chile/Continental',\n 'Chile/EasterIsland',\n 'Cuba',\n 'EET',\n 'EST',\n 'EST5EDT',\n 'Egypt',\n 'Eire',\n 'Etc/GMT',\n 'Etc/GMT+0',\n 'Etc/GMT+1',\n 'Etc/GMT+10',\n 'Etc/GMT+11',\n 'Etc/GMT+12',\n 'Etc/GMT+2',\n 'Etc/GMT+3',\n 'Etc/GMT+4',\n 'Etc/GMT+5',\n 'Etc/GMT+6',\n 'Etc/GMT+7',\n 'Etc/GMT+8',\n 'Etc/GMT+9',\n 'Etc/GMT-0',\n 'Etc/GMT-1',\n 'Etc/GMT-10',\n 'Etc/GMT-11',\n 'Etc/GMT-12',\n 'Etc/GMT-13',\n 'Etc/GMT-14',\n 'Etc/GMT-2',\n 'Etc/GMT-3',\n 'Etc/GMT-4',\n 'Etc/GMT-5',\n 'Etc/GMT-6',\n 'Etc/GMT-7',\n 'Etc/GMT-8',\n 'Etc/GMT-9',\n 'Etc/GMT0',\n 'Etc/Greenwich',\n 'Etc/UCT',\n 'Etc/UTC',\n 'Etc/Universal',\n 'Etc/Zulu',\n 'Europe/Amsterdam',\n 'Europe/Andorra',\n 'Europe/Astrakhan',\n 'Europe/Athens',\n 'Europe/Belfast',\n 'Europe/Belgrade',\n 'Europe/Berlin',\n 'Europe/Bratislava',\n 'Europe/Brussels',\n 'Europe/Bucharest',\n 'Europe/Budapest',\n 'Europe/Busingen',\n 'Europe/Chisinau',\n 'Europe/Copenhagen',\n 'Europe/Dublin',\n 'Europe/Gibraltar',\n 'Europe/Guernsey',\n 'Europe/Helsinki',\n 'Europe/Isle_of_Man',\n 'Europe/Istanbul',\n 'Europe/Jersey',\n 'Europe/Kaliningrad',\n 'Europe/Kiev',\n 'Europe/Kirov',\n 'Europe/Lisbon',\n 'Europe/Ljubljana',\n 'Europe/London',\n 'Europe/Luxembourg',\n 'Europe/Madrid',\n 'Europe/Malta',\n 'Europe/Mariehamn',\n 'Europe/Minsk',\n 'Europe/Monaco',\n 'Europe/Moscow',\n 'Europe/Nicosia',\n 'Europe/Oslo',\n 'Europe/Paris',\n 'Europe/Podgorica',\n 'Europe/Prague',\n 'Europe/Riga',\n 'Europe/Rome',\n 'Europe/Samara',\n 'Europe/San_Marino',\n 'Europe/Sarajevo',\n 'Europe/Saratov',\n 'Europe/Simferopol',\n 'Europe/Skopje',\n 'Europe/Sofia',\n 'Europe/Stockholm',\n 'Europe/Tallinn',\n 'Europe/Tirane',\n 'Europe/Tiraspol',\n 'Europe/Ulyanovsk',\n 'Europe/Uzhgorod',\n 'Europe/Vaduz',\n 'Europe/Vatican',\n 'Europe/Vienna',\n 'Europe/Vilnius',\n 'Europe/Volgograd',\n 'Europe/Warsaw',\n 'Europe/Zagreb',\n 'Europe/Zaporozhye',\n 'Europe/Zurich',\n 'Factory',\n 'GB',\n 'GB-Eire',\n 'GMT',\n 'GMT+0',\n 'GMT-0',\n 'GMT0',\n 'Greenwich',\n 'HST',\n 'Hongkong',\n 'Iceland',\n 'Indian/Antananarivo',\n 'Indian/Chagos',\n 'Indian/Christmas',\n 'Indian/Cocos',\n 'Indian/Comoro',\n 'Indian/Kerguelen',\n 'Indian/Mahe',\n 'Indian/Maldives',\n 'Indian/Mauritius',\n 'Indian/Mayotte',\n 'Indian/Reunion',\n 'Iran',\n 'Israel',\n 'Jamaica',\n 'Japan',\n 'Kwajalein',\n 'Libya',\n 'MET',\n 'MST',\n 'MST7MDT',\n 'Mexico/BajaNorte',\n 'Mexico/BajaSur',\n 'Mexico/General',\n 'NZ',\n 'NZ-CHAT',\n 'Navajo',\n 'PRC',\n 'PST8PDT',\n 'Pacific/Apia',\n 'Pacific/Auckland',\n 'Pacific/Bougainville',\n 'Pacific/Chatham',\n 'Pacific/Chuuk',\n 'Pacific/Easter',\n 'Pacific/Efate',\n 'Pacific/Enderbury',\n 'Pacific/Fakaofo',\n 'Pacific/Fiji',\n 'Pacific/Funafuti',\n 'Pacific/Galapagos',\n 'Pacific/Gambier',\n 'Pacific/Guadalcanal',\n 'Pacific/Guam',\n 'Pacific/Honolulu',\n 'Pacific/Johnston',\n 'Pacific/Kiritimati',\n 'Pacific/Kosrae',\n 'Pacific/Kwajalein',\n 'Pacific/Majuro',\n 'Pacific/Marquesas',\n 'Pacific/Midway',\n 'Pacific/Nauru',\n 'Pacific/Niue',\n 'Pacific/Norfolk',\n 'Pacific/Noumea',\n 'Pacific/Pago_Pago',\n 'Pacific/Palau',\n 'Pacific/Pitcairn',\n 'Pacific/Pohnpei',\n 'Pacific/Ponape',\n 'Pacific/Port_Moresby',\n 'Pacific/Rarotonga',\n 'Pacific/Saipan',\n 'Pacific/Samoa',\n 'Pacific/Tahiti',\n 'Pacific/Tarawa',\n 'Pacific/Tongatapu',\n 'Pacific/Truk',\n 'Pacific/Wake',\n 'Pacific/Wallis',\n 'Pacific/Yap',\n 'Poland',\n 'Portugal',\n 'ROC',\n 'ROK',\n 'Singapore',\n 'Turkey',\n 'UCT',\n 'US/Alaska',\n 'US/Aleutian',\n 'US/Arizona',\n 'US/Central',\n 'US/East-Indiana',\n 'US/Eastern',\n 'US/Hawaii',\n 'US/Indiana-Starke',\n 'US/Michigan',\n 'US/Mountain',\n 'US/Pacific',\n 'US/Pacific-New',\n 'US/Samoa',\n 'UTC',\n 'Universal',\n 'W-SU',\n 'WET',\n 'Zulu',\n];\n"],"mappings":";AAEA,IAAa,YAAsB;CACjC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD"}
|
|
@@ -43,7 +43,10 @@ function useKeyboardHandler(options) {
|
|
|
43
43
|
}
|
|
44
44
|
function setSegment(segmentType) {
|
|
45
45
|
const segments = get$1(segmentPositions).find((segment) => segment.type === segmentType);
|
|
46
|
-
if (segments)
|
|
46
|
+
if (segments) {
|
|
47
|
+
set$1(currentValue, void 0);
|
|
48
|
+
setCursorPosition(segments);
|
|
49
|
+
}
|
|
47
50
|
}
|
|
48
51
|
function clear(segmentType) {
|
|
49
52
|
const currentSegment = getCurrentSegment();
|
|
@@ -141,12 +144,16 @@ function useKeyboardHandler(options) {
|
|
|
141
144
|
function handleMouseDown(event) {
|
|
142
145
|
if (disabled || readonly || !(event.target instanceof HTMLInputElement)) return;
|
|
143
146
|
const currentSegment = getCurrentSegment(getClickPosition(event, event.target, true));
|
|
144
|
-
if (currentSegment)
|
|
147
|
+
if (currentSegment) {
|
|
148
|
+
set$1(currentValue, void 0);
|
|
149
|
+
clickedSegment = currentSegment;
|
|
150
|
+
}
|
|
145
151
|
}
|
|
146
152
|
function handleClick(event) {
|
|
147
153
|
if (disabled || readonly || !(event.target instanceof HTMLInputElement)) return;
|
|
148
154
|
const currentSegment = getCurrentSegment(getClickPosition(event, event.target, true));
|
|
149
155
|
if (currentSegment) {
|
|
156
|
+
set$1(currentValue, void 0);
|
|
150
157
|
clickedSegment = currentSegment;
|
|
151
158
|
set$1(cursorPosition, currentSegment.end);
|
|
152
159
|
event.target.setSelectionRange(currentSegment.start, currentSegment.end);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-keyboard-handler.js","names":[],"sources":["../../../src/components/date-time-picker/use-keyboard-handler.ts"],"sourcesContent":["import type { Dayjs } from 'dayjs';\nimport type { Ref, ShallowRef } from 'vue';\nimport type { TimeAccuracy } from '@/consts/time-accuracy';\nimport { type Segment, SEGMENT_CONFIG, SEGMENT_METHODS } from '@/components/date-time-picker/segment-config';\nimport { getClickPosition, parseAndSetDateValues } from '@/components/date-time-picker/segment-utils';\nimport {\n type DateTimeSegmentType,\n isDateTimeSegmentType,\n} from '@/components/date-time-picker/types';\nimport { assert } from '@/utils/assert';\n\ninterface KeyboardHandlerOptions {\n dateFormat: Ref<string>;\n cursorPosition: Ref<number>;\n currentValue: Ref<number | undefined>;\n textInput: Readonly<ShallowRef<HTMLInputElement | null>> | Ref<HTMLInputElement | undefined>;\n setValue: (segment: DateTimeSegmentType, value?: number) => void;\n getCurrent: (segment: DateTimeSegmentType) => number | undefined;\n getDateTime: () => Dayjs;\n disabled: boolean;\n readonly: boolean;\n accuracy: TimeAccuracy;\n}\n\nexport function useKeyboardHandler(options: KeyboardHandlerOptions) {\n const {\n accuracy,\n currentValue,\n cursorPosition,\n dateFormat,\n disabled,\n getCurrent,\n getDateTime,\n readonly,\n setValue,\n textInput,\n } = options;\n\n const formatSegments = computed<string[]>(() => {\n const format = get(dateFormat);\n return format.split(/([\\s./:])/g).filter(Boolean);\n });\n\n const segmentPositions = computed<Segment[]>(() => {\n const segments = get(formatSegments);\n const positions: Segment[] = [];\n let currentPosition = 0;\n\n segments.forEach((segment) => {\n if (!/[\\s./:]/.test(segment)) {\n assert(isDateTimeSegmentType(segment), `Invalid date format segment: ${segment}`);\n positions.push({\n end: currentPosition + segment.length,\n start: currentPosition,\n type: segment,\n });\n }\n currentPosition += segment.length;\n });\n\n return positions;\n });\n\n function getCurrentSegment(position: number = get(cursorPosition)) {\n const segments = get(segmentPositions);\n return segments.find(segment => position >= segment.start && position <= segment.end);\n }\n\n function setCursorPosition(segment: Segment): void {\n set(cursorPosition, segment.end);\n\n nextTick(() => {\n if (isDefined(textInput)) {\n const input = get(textInput);\n input.setSelectionRange(segment.start, segment.end);\n input.focus();\n }\n });\n }\n\n function setSegment(segmentType: DateTimeSegmentType): void {\n const segments = get(segmentPositions).find(segment => segment.type === segmentType);\n if (segments) {\n setCursorPosition(segments);\n }\n }\n\n function clear(segmentType?: string): void {\n const currentSegment = getCurrentSegment();\n if (!segmentType && !currentSegment) {\n return;\n }\n\n const typeToUse = segmentType ?? currentSegment?.type;\n if (!typeToUse) {\n return;\n }\n\n setValue(typeToUse as DateTimeSegmentType, undefined);\n\n if (currentSegment) {\n setCursorPosition(currentSegment);\n }\n }\n\n function changeSegmentValue(increment: boolean): void {\n if (!isDefined(textInput))\n return;\n const currentSegment = getCurrentSegment();\n if (!currentSegment)\n return;\n const segmentType = currentSegment.type;\n const method = SEGMENT_METHODS[segmentType];\n const selectedDate = getDateTime();\n const updatedDate = selectedDate.set(method, selectedDate.get(method) + (increment ? 1 : -1));\n if (updatedDate.year() >= 1970) {\n setValue(\n segmentType,\n segmentType === 'MM' ? updatedDate.get(method) + 1 : updatedDate.get(method),\n );\n setCursorPosition(currentSegment);\n }\n }\n\n function navigateSegments(key: string) {\n const position = get(cursorPosition);\n const positions = get(segmentPositions);\n const currentSegmentIndex = positions.findIndex(\n segment => position >= segment.start && position <= segment.end,\n );\n\n if (currentSegmentIndex === -1) {\n return;\n }\n\n set(currentValue, undefined);\n\n let nextSegmentIndex: number;\n if (key === 'ArrowRight') {\n nextSegmentIndex = currentSegmentIndex + 1;\n if (nextSegmentIndex < positions.length) {\n const nextSegment = positions[nextSegmentIndex];\n assert(nextSegment);\n setCursorPosition(nextSegment);\n }\n }\n else {\n nextSegmentIndex = currentSegmentIndex - 1;\n if (nextSegmentIndex >= 0) {\n const nextSegment = positions[nextSegmentIndex];\n assert(nextSegment);\n setCursorPosition(nextSegment);\n }\n }\n }\n\n function handleDigitPressed(event: KeyboardEvent, digit: string): void {\n if (!(event.target instanceof HTMLInputElement))\n return;\n const position = event.target.selectionStart ?? 0;\n const currentSegment = getCurrentSegment(position);\n if (!currentSegment || isNaN(parseInt(digit)))\n return;\n const segmentType = currentSegment.type;\n if (!isDateTimeSegmentType(segmentType))\n return;\n\n const config = SEGMENT_CONFIG[segmentType];\n const value = get(currentValue) ?? '';\n const combinedStr = `${value}${digit}`;\n const combinedValue = parseInt(combinedStr);\n const maxLength = segmentType.length;\n const minValue = config.minValue ?? 0;\n\n if (combinedValue >= minValue && combinedValue <= config.maxValue) {\n setValue(segmentType, combinedValue);\n setCursorPosition(currentSegment);\n }\n else if (combinedValue < minValue && combinedStr.length < maxLength) {\n // Track digit even if below minValue, so next digit can combine (e.g., \"0\" allows \"01\")\n set(currentValue, combinedValue);\n }\n\n const willExceedMax = parseInt(`${combinedStr}0`) > config.maxValue;\n // Use string length of typed digits, not parsed number length (e.g., \"01\" has length 2)\n if (willExceedMax || combinedStr.length >= maxLength)\n navigateSegments('ArrowRight');\n }\n\n function handleKeyboardNavigation(event: KeyboardEvent): void {\n if (event.key === 'ArrowUp')\n changeSegmentValue(true);\n else if (event.key === 'ArrowDown')\n changeSegmentValue(false);\n }\n\n function handleBackspace(event: KeyboardEvent): void {\n if (!(event.target instanceof HTMLInputElement))\n return;\n const currentSegment = getCurrentSegment(event.target.selectionStart ?? 0);\n if (!currentSegment)\n return;\n const value = get(currentValue) ?? getCurrent(currentSegment.type) ?? '';\n const updatedValue = value.toString().slice(0, -1);\n setValue(currentSegment.type, updatedValue.length === 0 ? undefined : parseInt(updatedValue));\n setCursorPosition(currentSegment);\n }\n\n function onInputDeletePressed(event: KeyboardEvent): void {\n if (!(event.target instanceof HTMLInputElement))\n return;\n const segment = getCurrentSegment(event.target.selectionStart ?? 0);\n if (segment) {\n clear(segment.type);\n setCursorPosition(segment);\n }\n }\n\n function handleKeyDown(event: KeyboardEvent): void {\n if (disabled || readonly)\n return;\n const { key } = event;\n if (key === 'Tab')\n return;\n event.preventDefault();\n if (key === 'ArrowRight' || key === 'ArrowLeft')\n navigateSegments(key);\n else if (key === 'ArrowUp' || key === 'ArrowDown')\n handleKeyboardNavigation(event);\n else if (key === 'Backspace')\n handleBackspace(event);\n else if (key === 'Delete')\n onInputDeletePressed(event);\n else if (/^\\d$/.test(key))\n handleDigitPressed(event, key);\n }\n\n // Track the segment that was clicked, so handleFocus can restore it after DOM updates\n let clickedSegment: Segment | undefined;\n\n // Capture clicked segment on mousedown (fires before focus event)\n function handleMouseDown(event: MouseEvent): void {\n if (disabled || readonly || !(event.target instanceof HTMLInputElement))\n return;\n const currentSegment = getCurrentSegment(getClickPosition(event, event.target, true));\n if (currentSegment) {\n clickedSegment = currentSegment;\n }\n }\n\n function handleClick(event: MouseEvent): void {\n if (disabled || readonly || !(event.target instanceof HTMLInputElement))\n return;\n const currentSegment = getCurrentSegment(getClickPosition(event, event.target, true));\n if (currentSegment) {\n clickedSegment = currentSegment;\n set(cursorPosition, currentSegment.end);\n event.target.setSelectionRange(currentSegment.start, currentSegment.end);\n }\n }\n\n function handleInputSelection(event: Event): void {\n const target = event.target as HTMLInputElement;\n set(cursorPosition, target.selectionStart ?? 0);\n }\n\n function handleFocus(): void {\n // If we just clicked on a segment, restore that selection\n // (the selection may have been lost due to menu opening/DOM updates)\n if (clickedSegment) {\n setCursorPosition(clickedSegment);\n clickedSegment = undefined;\n return;\n }\n\n // Only select first segment if no text is currently selected in the input\n const input = get(textInput);\n if (input && input.selectionStart !== input.selectionEnd)\n return;\n const firstSegment = get(segmentPositions)[0];\n if (firstSegment)\n setCursorPosition(firstSegment);\n }\n\n function handleBlur(): void {\n // Reset cursor position and clicked segment when input loses focus\n // This prevents \"blinking\" when re-focusing on a different segment\n set(cursorPosition, 0);\n set(currentValue, undefined);\n clickedSegment = undefined;\n }\n\n function handlePaste(event: ClipboardEvent): void {\n if (disabled || readonly)\n return;\n\n if (!(event.target instanceof HTMLInputElement)) {\n return;\n }\n\n event.preventDefault();\n\n const pastedText = event.clipboardData?.getData('text');\n if (!pastedText) {\n return;\n }\n parseAndSetDateValues(pastedText, get(dateFormat), accuracy, setValue);\n }\n\n function handleInput(event: Event): void {\n if (disabled || readonly)\n return;\n\n if (!(event.target instanceof HTMLInputElement)) {\n return;\n }\n\n const inputText = event.target.value;\n if (!inputText) {\n return;\n }\n\n parseAndSetDateValues(inputText, get(dateFormat), accuracy, setValue);\n }\n\n return {\n clear,\n getCurrentSegment,\n handleBlur,\n handleClick,\n handleFocus,\n handleInput,\n handleInputSelection,\n handleKeyDown,\n handleMouseDown,\n handlePaste,\n setSegment,\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"use-keyboard-handler.js","names":[],"sources":["../../../src/components/date-time-picker/use-keyboard-handler.ts"],"sourcesContent":["import type { Dayjs } from 'dayjs';\nimport type { Ref, ShallowRef } from 'vue';\nimport type { TimeAccuracy } from '@/consts/time-accuracy';\nimport { type Segment, SEGMENT_CONFIG, SEGMENT_METHODS } from '@/components/date-time-picker/segment-config';\nimport { getClickPosition, parseAndSetDateValues } from '@/components/date-time-picker/segment-utils';\nimport {\n type DateTimeSegmentType,\n isDateTimeSegmentType,\n} from '@/components/date-time-picker/types';\nimport { assert } from '@/utils/assert';\n\ninterface KeyboardHandlerOptions {\n dateFormat: Ref<string>;\n cursorPosition: Ref<number>;\n currentValue: Ref<number | undefined>;\n textInput: Readonly<ShallowRef<HTMLInputElement | null>> | Ref<HTMLInputElement | undefined>;\n setValue: (segment: DateTimeSegmentType, value?: number) => void;\n getCurrent: (segment: DateTimeSegmentType) => number | undefined;\n getDateTime: () => Dayjs;\n disabled: boolean;\n readonly: boolean;\n accuracy: TimeAccuracy;\n}\n\nexport function useKeyboardHandler(options: KeyboardHandlerOptions) {\n const {\n accuracy,\n currentValue,\n cursorPosition,\n dateFormat,\n disabled,\n getCurrent,\n getDateTime,\n readonly,\n setValue,\n textInput,\n } = options;\n\n const formatSegments = computed<string[]>(() => {\n const format = get(dateFormat);\n return format.split(/([\\s./:])/g).filter(Boolean);\n });\n\n const segmentPositions = computed<Segment[]>(() => {\n const segments = get(formatSegments);\n const positions: Segment[] = [];\n let currentPosition = 0;\n\n segments.forEach((segment) => {\n if (!/[\\s./:]/.test(segment)) {\n assert(isDateTimeSegmentType(segment), `Invalid date format segment: ${segment}`);\n positions.push({\n end: currentPosition + segment.length,\n start: currentPosition,\n type: segment,\n });\n }\n currentPosition += segment.length;\n });\n\n return positions;\n });\n\n function getCurrentSegment(position: number = get(cursorPosition)) {\n const segments = get(segmentPositions);\n return segments.find(segment => position >= segment.start && position <= segment.end);\n }\n\n function setCursorPosition(segment: Segment): void {\n set(cursorPosition, segment.end);\n\n nextTick(() => {\n if (isDefined(textInput)) {\n const input = get(textInput);\n input.setSelectionRange(segment.start, segment.end);\n input.focus();\n }\n });\n }\n\n function setSegment(segmentType: DateTimeSegmentType): void {\n const segments = get(segmentPositions).find(segment => segment.type === segmentType);\n if (segments) {\n set(currentValue, undefined);\n setCursorPosition(segments);\n }\n }\n\n function clear(segmentType?: string): void {\n const currentSegment = getCurrentSegment();\n if (!segmentType && !currentSegment) {\n return;\n }\n\n const typeToUse = segmentType ?? currentSegment?.type;\n if (!typeToUse) {\n return;\n }\n\n setValue(typeToUse as DateTimeSegmentType, undefined);\n\n if (currentSegment) {\n setCursorPosition(currentSegment);\n }\n }\n\n function changeSegmentValue(increment: boolean): void {\n if (!isDefined(textInput))\n return;\n const currentSegment = getCurrentSegment();\n if (!currentSegment)\n return;\n const segmentType = currentSegment.type;\n const method = SEGMENT_METHODS[segmentType];\n const selectedDate = getDateTime();\n const updatedDate = selectedDate.set(method, selectedDate.get(method) + (increment ? 1 : -1));\n if (updatedDate.year() >= 1970) {\n setValue(\n segmentType,\n segmentType === 'MM' ? updatedDate.get(method) + 1 : updatedDate.get(method),\n );\n setCursorPosition(currentSegment);\n }\n }\n\n function navigateSegments(key: string) {\n const position = get(cursorPosition);\n const positions = get(segmentPositions);\n const currentSegmentIndex = positions.findIndex(\n segment => position >= segment.start && position <= segment.end,\n );\n\n if (currentSegmentIndex === -1) {\n return;\n }\n\n set(currentValue, undefined);\n\n let nextSegmentIndex: number;\n if (key === 'ArrowRight') {\n nextSegmentIndex = currentSegmentIndex + 1;\n if (nextSegmentIndex < positions.length) {\n const nextSegment = positions[nextSegmentIndex];\n assert(nextSegment);\n setCursorPosition(nextSegment);\n }\n }\n else {\n nextSegmentIndex = currentSegmentIndex - 1;\n if (nextSegmentIndex >= 0) {\n const nextSegment = positions[nextSegmentIndex];\n assert(nextSegment);\n setCursorPosition(nextSegment);\n }\n }\n }\n\n function handleDigitPressed(event: KeyboardEvent, digit: string): void {\n if (!(event.target instanceof HTMLInputElement))\n return;\n const position = event.target.selectionStart ?? 0;\n const currentSegment = getCurrentSegment(position);\n if (!currentSegment || isNaN(parseInt(digit)))\n return;\n const segmentType = currentSegment.type;\n if (!isDateTimeSegmentType(segmentType))\n return;\n\n const config = SEGMENT_CONFIG[segmentType];\n const value = get(currentValue) ?? '';\n const combinedStr = `${value}${digit}`;\n const combinedValue = parseInt(combinedStr);\n const maxLength = segmentType.length;\n const minValue = config.minValue ?? 0;\n\n if (combinedValue >= minValue && combinedValue <= config.maxValue) {\n setValue(segmentType, combinedValue);\n setCursorPosition(currentSegment);\n }\n else if (combinedValue < minValue && combinedStr.length < maxLength) {\n // Track digit even if below minValue, so next digit can combine (e.g., \"0\" allows \"01\")\n set(currentValue, combinedValue);\n }\n\n const willExceedMax = parseInt(`${combinedStr}0`) > config.maxValue;\n // Use string length of typed digits, not parsed number length (e.g., \"01\" has length 2)\n if (willExceedMax || combinedStr.length >= maxLength)\n navigateSegments('ArrowRight');\n }\n\n function handleKeyboardNavigation(event: KeyboardEvent): void {\n if (event.key === 'ArrowUp')\n changeSegmentValue(true);\n else if (event.key === 'ArrowDown')\n changeSegmentValue(false);\n }\n\n function handleBackspace(event: KeyboardEvent): void {\n if (!(event.target instanceof HTMLInputElement))\n return;\n const currentSegment = getCurrentSegment(event.target.selectionStart ?? 0);\n if (!currentSegment)\n return;\n const value = get(currentValue) ?? getCurrent(currentSegment.type) ?? '';\n const updatedValue = value.toString().slice(0, -1);\n setValue(currentSegment.type, updatedValue.length === 0 ? undefined : parseInt(updatedValue));\n setCursorPosition(currentSegment);\n }\n\n function onInputDeletePressed(event: KeyboardEvent): void {\n if (!(event.target instanceof HTMLInputElement))\n return;\n const segment = getCurrentSegment(event.target.selectionStart ?? 0);\n if (segment) {\n clear(segment.type);\n setCursorPosition(segment);\n }\n }\n\n function handleKeyDown(event: KeyboardEvent): void {\n if (disabled || readonly)\n return;\n const { key } = event;\n if (key === 'Tab')\n return;\n event.preventDefault();\n if (key === 'ArrowRight' || key === 'ArrowLeft')\n navigateSegments(key);\n else if (key === 'ArrowUp' || key === 'ArrowDown')\n handleKeyboardNavigation(event);\n else if (key === 'Backspace')\n handleBackspace(event);\n else if (key === 'Delete')\n onInputDeletePressed(event);\n else if (/^\\d$/.test(key))\n handleDigitPressed(event, key);\n }\n\n // Track the segment that was clicked, so handleFocus can restore it after DOM updates\n let clickedSegment: Segment | undefined;\n\n // Capture clicked segment on mousedown (fires before focus event)\n function handleMouseDown(event: MouseEvent): void {\n if (disabled || readonly || !(event.target instanceof HTMLInputElement))\n return;\n const currentSegment = getCurrentSegment(getClickPosition(event, event.target, true));\n if (currentSegment) {\n // Reset in-progress digit buffer: switching segments must not carry typed digits over,\n // otherwise a leftover digit from another segment combines with the next keystroke\n // (e.g. type \"1\" in HH, click mm, type \"3\" → mm becomes 13 instead of 3).\n set(currentValue, undefined);\n clickedSegment = currentSegment;\n }\n }\n\n function handleClick(event: MouseEvent): void {\n if (disabled || readonly || !(event.target instanceof HTMLInputElement))\n return;\n const currentSegment = getCurrentSegment(getClickPosition(event, event.target, true));\n if (currentSegment) {\n set(currentValue, undefined);\n clickedSegment = currentSegment;\n set(cursorPosition, currentSegment.end);\n event.target.setSelectionRange(currentSegment.start, currentSegment.end);\n }\n }\n\n function handleInputSelection(event: Event): void {\n const target = event.target as HTMLInputElement;\n set(cursorPosition, target.selectionStart ?? 0);\n }\n\n function handleFocus(): void {\n // If we just clicked on a segment, restore that selection\n // (the selection may have been lost due to menu opening/DOM updates)\n if (clickedSegment) {\n setCursorPosition(clickedSegment);\n clickedSegment = undefined;\n return;\n }\n\n // Only select first segment if no text is currently selected in the input\n const input = get(textInput);\n if (input && input.selectionStart !== input.selectionEnd)\n return;\n const firstSegment = get(segmentPositions)[0];\n if (firstSegment)\n setCursorPosition(firstSegment);\n }\n\n function handleBlur(): void {\n // Reset cursor position and clicked segment when input loses focus\n // This prevents \"blinking\" when re-focusing on a different segment\n set(cursorPosition, 0);\n set(currentValue, undefined);\n clickedSegment = undefined;\n }\n\n function handlePaste(event: ClipboardEvent): void {\n if (disabled || readonly)\n return;\n\n if (!(event.target instanceof HTMLInputElement)) {\n return;\n }\n\n event.preventDefault();\n\n const pastedText = event.clipboardData?.getData('text');\n if (!pastedText) {\n return;\n }\n parseAndSetDateValues(pastedText, get(dateFormat), accuracy, setValue);\n }\n\n function handleInput(event: Event): void {\n if (disabled || readonly)\n return;\n\n if (!(event.target instanceof HTMLInputElement)) {\n return;\n }\n\n const inputText = event.target.value;\n if (!inputText) {\n return;\n }\n\n parseAndSetDateValues(inputText, get(dateFormat), accuracy, setValue);\n }\n\n return {\n clear,\n getCurrentSegment,\n handleBlur,\n handleClick,\n handleFocus,\n handleInput,\n handleInputSelection,\n handleKeyDown,\n handleMouseDown,\n handlePaste,\n setSegment,\n };\n}\n"],"mappings":";;;;;;;;AAwBA,SAAgB,mBAAmB,SAAiC;CAClE,MAAM,EACJ,UACA,cACA,gBACA,YACA,UACA,YACA,aACA,UACA,UACA,cACE;CAEJ,MAAM,iBAAiB,eAAyB;AAE9C,SADe,MAAI,WAAW,CAChB,MAAM,aAAa,CAAC,OAAO,QAAQ;GACjD;CAEF,MAAM,mBAAmB,eAA0B;EACjD,MAAM,WAAW,MAAI,eAAe;EACpC,MAAM,YAAuB,EAAE;EAC/B,IAAI,kBAAkB;AAEtB,WAAS,SAAS,YAAY;AAC5B,OAAI,CAAC,UAAU,KAAK,QAAQ,EAAE;AAC5B,WAAO,sBAAsB,QAAQ,EAAE,gCAAgC,UAAU;AACjF,cAAU,KAAK;KACb,KAAK,kBAAkB,QAAQ;KAC/B,OAAO;KACP,MAAM;KACP,CAAC;;AAEJ,sBAAmB,QAAQ;IAC3B;AAEF,SAAO;GACP;CAEF,SAAS,kBAAkB,WAAmB,MAAI,eAAe,EAAE;AAEjE,SADiB,MAAI,iBAAiB,CACtB,MAAK,YAAW,YAAY,QAAQ,SAAS,YAAY,QAAQ,IAAI;;CAGvF,SAAS,kBAAkB,SAAwB;AACjD,QAAI,gBAAgB,QAAQ,IAAI;AAEhC,iBAAe;AACb,OAAI,UAAU,UAAU,EAAE;IACxB,MAAM,QAAQ,MAAI,UAAU;AAC5B,UAAM,kBAAkB,QAAQ,OAAO,QAAQ,IAAI;AACnD,UAAM,OAAO;;IAEf;;CAGJ,SAAS,WAAW,aAAwC;EAC1D,MAAM,WAAW,MAAI,iBAAiB,CAAC,MAAK,YAAW,QAAQ,SAAS,YAAY;AACpF,MAAI,UAAU;AACZ,SAAI,cAAc,KAAA,EAAU;AAC5B,qBAAkB,SAAS;;;CAI/B,SAAS,MAAM,aAA4B;EACzC,MAAM,iBAAiB,mBAAmB;AAC1C,MAAI,CAAC,eAAe,CAAC,eACnB;EAGF,MAAM,YAAY,eAAe,gBAAgB;AACjD,MAAI,CAAC,UACH;AAGF,WAAS,WAAkC,KAAA,EAAU;AAErD,MAAI,eACF,mBAAkB,eAAe;;CAIrC,SAAS,mBAAmB,WAA0B;AACpD,MAAI,CAAC,UAAU,UAAU,CACvB;EACF,MAAM,iBAAiB,mBAAmB;AAC1C,MAAI,CAAC,eACH;EACF,MAAM,cAAc,eAAe;EACnC,MAAM,SAAS,gBAAgB;EAC/B,MAAM,eAAe,aAAa;EAClC,MAAM,cAAc,aAAa,IAAI,QAAQ,aAAa,IAAI,OAAO,IAAI,YAAY,IAAI,IAAI;AAC7F,MAAI,YAAY,MAAM,IAAI,MAAM;AAC9B,YACE,aACA,gBAAgB,OAAO,YAAY,IAAI,OAAO,GAAG,IAAI,YAAY,IAAI,OAAO,CAC7E;AACD,qBAAkB,eAAe;;;CAIrC,SAAS,iBAAiB,KAAa;EACrC,MAAM,WAAW,MAAI,eAAe;EACpC,MAAM,YAAY,MAAI,iBAAiB;EACvC,MAAM,sBAAsB,UAAU,WACpC,YAAW,YAAY,QAAQ,SAAS,YAAY,QAAQ,IAC7D;AAED,MAAI,wBAAwB,GAC1B;AAGF,QAAI,cAAc,KAAA,EAAU;EAE5B,IAAI;AACJ,MAAI,QAAQ,cAAc;AACxB,sBAAmB,sBAAsB;AACzC,OAAI,mBAAmB,UAAU,QAAQ;IACvC,MAAM,cAAc,UAAU;AAC9B,WAAO,YAAY;AACnB,sBAAkB,YAAY;;SAG7B;AACH,sBAAmB,sBAAsB;AACzC,OAAI,oBAAoB,GAAG;IACzB,MAAM,cAAc,UAAU;AAC9B,WAAO,YAAY;AACnB,sBAAkB,YAAY;;;;CAKpC,SAAS,mBAAmB,OAAsB,OAAqB;AACrE,MAAI,EAAE,MAAM,kBAAkB,kBAC5B;EAEF,MAAM,iBAAiB,kBADN,MAAM,OAAO,kBAAkB,EACE;AAClD,MAAI,CAAC,kBAAkB,MAAM,SAAS,MAAM,CAAC,CAC3C;EACF,MAAM,cAAc,eAAe;AACnC,MAAI,CAAC,sBAAsB,YAAY,CACrC;EAEF,MAAM,SAAS,eAAe;EAE9B,MAAM,cAAc,GADN,MAAI,aAAa,IAAI,KACJ;EAC/B,MAAM,gBAAgB,SAAS,YAAY;EAC3C,MAAM,YAAY,YAAY;EAC9B,MAAM,WAAW,OAAO,YAAY;AAEpC,MAAI,iBAAiB,YAAY,iBAAiB,OAAO,UAAU;AACjE,YAAS,aAAa,cAAc;AACpC,qBAAkB,eAAe;aAE1B,gBAAgB,YAAY,YAAY,SAAS,UAExD,OAAI,cAAc,cAAc;AAKlC,MAFsB,SAAS,GAAG,YAAY,GAAG,GAAG,OAAO,YAEtC,YAAY,UAAU,UACzC,kBAAiB,aAAa;;CAGlC,SAAS,yBAAyB,OAA4B;AAC5D,MAAI,MAAM,QAAQ,UAChB,oBAAmB,KAAK;WACjB,MAAM,QAAQ,YACrB,oBAAmB,MAAM;;CAG7B,SAAS,gBAAgB,OAA4B;AACnD,MAAI,EAAE,MAAM,kBAAkB,kBAC5B;EACF,MAAM,iBAAiB,kBAAkB,MAAM,OAAO,kBAAkB,EAAE;AAC1E,MAAI,CAAC,eACH;EAEF,MAAM,gBADQ,MAAI,aAAa,IAAI,WAAW,eAAe,KAAK,IAAI,IAC3C,UAAU,CAAC,MAAM,GAAG,GAAG;AAClD,WAAS,eAAe,MAAM,aAAa,WAAW,IAAI,KAAA,IAAY,SAAS,aAAa,CAAC;AAC7F,oBAAkB,eAAe;;CAGnC,SAAS,qBAAqB,OAA4B;AACxD,MAAI,EAAE,MAAM,kBAAkB,kBAC5B;EACF,MAAM,UAAU,kBAAkB,MAAM,OAAO,kBAAkB,EAAE;AACnE,MAAI,SAAS;AACX,SAAM,QAAQ,KAAK;AACnB,qBAAkB,QAAQ;;;CAI9B,SAAS,cAAc,OAA4B;AACjD,MAAI,YAAY,SACd;EACF,MAAM,EAAE,QAAQ;AAChB,MAAI,QAAQ,MACV;AACF,QAAM,gBAAgB;AACtB,MAAI,QAAQ,gBAAgB,QAAQ,YAClC,kBAAiB,IAAI;WACd,QAAQ,aAAa,QAAQ,YACpC,0BAAyB,MAAM;WACxB,QAAQ,YACf,iBAAgB,MAAM;WACf,QAAQ,SACf,sBAAqB,MAAM;WACpB,OAAO,KAAK,IAAI,CACvB,oBAAmB,OAAO,IAAI;;CAIlC,IAAI;CAGJ,SAAS,gBAAgB,OAAyB;AAChD,MAAI,YAAY,YAAY,EAAE,MAAM,kBAAkB,kBACpD;EACF,MAAM,iBAAiB,kBAAkB,iBAAiB,OAAO,MAAM,QAAQ,KAAK,CAAC;AACrF,MAAI,gBAAgB;AAIlB,SAAI,cAAc,KAAA,EAAU;AAC5B,oBAAiB;;;CAIrB,SAAS,YAAY,OAAyB;AAC5C,MAAI,YAAY,YAAY,EAAE,MAAM,kBAAkB,kBACpD;EACF,MAAM,iBAAiB,kBAAkB,iBAAiB,OAAO,MAAM,QAAQ,KAAK,CAAC;AACrF,MAAI,gBAAgB;AAClB,SAAI,cAAc,KAAA,EAAU;AAC5B,oBAAiB;AACjB,SAAI,gBAAgB,eAAe,IAAI;AACvC,SAAM,OAAO,kBAAkB,eAAe,OAAO,eAAe,IAAI;;;CAI5E,SAAS,qBAAqB,OAAoB;EAChD,MAAM,SAAS,MAAM;AACrB,QAAI,gBAAgB,OAAO,kBAAkB,EAAE;;CAGjD,SAAS,cAAoB;AAG3B,MAAI,gBAAgB;AAClB,qBAAkB,eAAe;AACjC,oBAAiB,KAAA;AACjB;;EAIF,MAAM,QAAQ,MAAI,UAAU;AAC5B,MAAI,SAAS,MAAM,mBAAmB,MAAM,aAC1C;EACF,MAAM,eAAe,MAAI,iBAAiB,CAAC;AAC3C,MAAI,aACF,mBAAkB,aAAa;;CAGnC,SAAS,aAAmB;AAG1B,QAAI,gBAAgB,EAAE;AACtB,QAAI,cAAc,KAAA,EAAU;AAC5B,mBAAiB,KAAA;;CAGnB,SAAS,YAAY,OAA6B;AAChD,MAAI,YAAY,SACd;AAEF,MAAI,EAAE,MAAM,kBAAkB,kBAC5B;AAGF,QAAM,gBAAgB;EAEtB,MAAM,aAAa,MAAM,eAAe,QAAQ,OAAO;AACvD,MAAI,CAAC,WACH;AAEF,wBAAsB,YAAY,MAAI,WAAW,EAAE,UAAU,SAAS;;CAGxE,SAAS,YAAY,OAAoB;AACvC,MAAI,YAAY,SACd;AAEF,MAAI,EAAE,MAAM,kBAAkB,kBAC5B;EAGF,MAAM,YAAY,MAAM,OAAO;AAC/B,MAAI,CAAC,UACH;AAGF,wBAAsB,WAAW,MAAI,WAAW,EAAE,UAAU,SAAS;;AAGvE,QAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD"}
|
package/dist/components/forms/select/RuiMenuSelect.vue_vue_type_script_setup_true_lang.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RuiMenuSelect.vue_vue_type_script_setup_true_lang.js","names":["$attrs"],"sources":["../../../../src/components/forms/select/RuiMenuSelect.vue"],"sourcesContent":["<script lang=\"ts\" setup generic=\"TValue, TItem\">\nimport type { VueClassValue } from '@/types/class-value';\nimport RuiButton from '@/components/buttons/button/RuiButton.vue';\nimport { menuSelectStyles, type MenuSelectVariant } from '@/components/forms/select/menu-select-styles';\nimport RuiIcon from '@/components/icons/RuiIcon.vue';\nimport RuiMenu, { type MenuProps } from '@/components/overlays/menu/RuiMenu.vue';\nimport RuiProgress from '@/components/progress/RuiProgress.vue';\nimport { type KeyOfType, useDropdownMenu } from '@/composables/dropdown-menu';\nimport { useFormTextDetail } from '@/utils/form-text-detail';\nimport { getNonRootAttrs, getRootAttrs } from '@/utils/helpers';\nimport { cn } from '@/utils/tv';\n\nexport interface RuiMenuSelectClassNames {\n root?: VueClassValue;\n label?: VueClassValue;\n menu?: VueClassValue;\n option?: VueClassValue;\n}\n\nexport interface MenuSelectProps<TValue, TItem> {\n options: TItem[];\n keyAttr?: KeyOfType<TItem, TValue extends Array<infer U> ? U : TValue>;\n textAttr?: keyof TItem;\n disabled?: boolean;\n loading?: boolean;\n readOnly?: boolean;\n dense?: boolean;\n clearable?: boolean;\n label?: string;\n menuOptions?: MenuProps;\n classNames?: RuiMenuSelectClassNames;\n /** @deprecated Use `classNames.label` instead */\n labelClass?: string;\n /** @deprecated Use `classNames.menu` instead */\n menuClass?: string;\n /** @deprecated Use `classNames.option` instead */\n optionClass?: string;\n prependWidth?: number;\n appendWidth?: number;\n itemHeight?: number;\n variant?: MenuSelectVariant;\n hint?: string;\n errorMessages?: string | string[];\n successMessages?: string | string[];\n hideDetails?: boolean;\n autoSelectFirst?: boolean;\n hideNoData?: boolean;\n noDataText?: string;\n required?: boolean;\n}\n\ndefineOptions({\n name: 'RuiMenuSelect',\n inheritAttrs: false,\n});\n\nconst modelValue = defineModel<TValue | undefined>({ required: true });\n\nconst {\n options,\n disabled = false,\n loading = false,\n readOnly = false,\n dense = false,\n clearable = false,\n hideDetails = false,\n label = 'Select',\n menuOptions,\n classNames,\n labelClass,\n menuClass,\n variant = 'default',\n hint,\n keyAttr,\n textAttr,\n itemHeight,\n errorMessages = [],\n successMessages = [],\n autoSelectFirst = false,\n hideNoData = false,\n noDataText = 'No data available',\n required = false,\n} = defineProps<MenuSelectProps<TValue, TItem>>();\n\ndefineSlots<{\n 'activator'?: (props: {\n disabled: boolean;\n value: TItem | undefined;\n variant: string;\n readOnly: boolean;\n attrs: Record<string, unknown>;\n open: boolean;\n hasError: boolean;\n hasSuccess: boolean;\n }) => any;\n 'activator.label'?: (props: { value: TItem | undefined }) => any;\n 'selection.prepend'?: (props: { item: TItem }) => any;\n 'selection'?: (props: { item: TItem }) => any;\n 'item.prepend'?: (props: { disabled: boolean; item: TItem; active: boolean }) => any;\n 'item'?: (props: { disabled: boolean; item: TItem; active: boolean }) => any;\n 'item.append'?: (props: { disabled: boolean; item: TItem; active: boolean }) => any;\n 'no-data'?: () => any;\n}>();\n\nconst menuRef = useTemplateRef<HTMLDivElement>('menuRef');\nconst activator = useTemplateRef<HTMLDivElement>('activator');\nconst { focused } = useFocus(activator);\nconst isHovered = ref<boolean>(false);\n\nconst { hasError, hasSuccess } = useFormTextDetail(\n () => errorMessages,\n () => successMessages,\n);\n\nconst value = computed<TItem | undefined>({\n get: () => {\n const value = get(modelValue);\n if (keyAttr)\n return options.find(option => option[keyAttr] === value);\n return value as unknown as TItem;\n },\n set: (selected?: TItem) => {\n const selection = keyAttr && selected ? selected[keyAttr] : selected;\n set(modelValue, selection as TValue);\n },\n});\n\nfunction setValue(val: TItem): void {\n set(value, val);\n set(focused, true);\n}\n\nconst {\n containerProps,\n wrapperProps,\n renderedData,\n isOpen,\n menuWidth,\n getText,\n getIdentifier,\n isActiveItem,\n highlightedIndex,\n moveHighlight,\n applyHighlighted,\n valueKey,\n} = useDropdownMenu<TValue, TItem>({\n itemHeight: itemHeight ?? (dense ? 30 : 48),\n keyAttr,\n textAttr,\n options: () => options,\n dense: () => dense,\n value,\n menuRef,\n disabled: () => disabled,\n autoSelectFirst,\n setValue,\n});\n\nconst outlined = computed<boolean>(() => variant === 'outlined');\nconst float = computed<boolean>(() => (get(isOpen) || !!get(value)) && get(outlined));\n\nconst legendText = computed<string>(() => {\n if (!get(float) || !label)\n return '';\n return required ? `${label} ﹡` : label;\n});\n\nconst ui = computed<ReturnType<typeof menuSelectStyles>>(() => menuSelectStyles({\n filled: variant === 'filled',\n outlined: get(outlined),\n float: get(float),\n opened: get(isOpen),\n hovered: get(isHovered),\n dense,\n disabled,\n readonly: readOnly,\n hasError: get(hasError),\n hasSuccess: get(hasSuccess) && !get(hasError),\n}));\n\nconst highlightedClass = menuSelectStyles({}).highlighted();\n\nfunction clear(): void {\n set(modelValue, undefined);\n}\n</script>\n\n<template>\n <RuiMenu\n v-model=\"isOpen\"\n v-bind=\"{ ...getRootAttrs($attrs, []), ...menuOptions }\"\n :class=\"ui.wrapper({ class: cn($attrs.class) })\"\n placement=\"bottom-start\"\n :close-on-content-click=\"true\"\n :full-width=\"true\"\n :error-messages=\"errorMessages\"\n :success-messages=\"successMessages\"\n :hint=\"hint\"\n :dense=\"dense\"\n :show-details=\"!hideDetails\"\n :disabled=\"disabled\"\n disable-auto-focus\n >\n <template #activator=\"{ attrs, open, hasError: slotHasError, hasSuccess: slotHasSuccess }\">\n <slot\n name=\"activator\"\n v-bind=\"{ disabled, value, variant, readOnly, attrs, open, hasError: slotHasError, hasSuccess: slotHasSuccess }\"\n >\n <button\n ref=\"activator\"\n :disabled=\"disabled\"\n :aria-disabled=\"disabled\"\n :aria-expanded=\"isOpen\"\n :aria-readonly=\"readOnly || undefined\"\n :aria-required=\"required || undefined\"\n :aria-busy=\"loading || undefined\"\n type=\"button\"\n :tabindex=\"disabled || readOnly ? -1 : 0\"\n :class=\"ui.activator({ class: cn(classNames?.label) ?? labelClass })\"\n v-bind=\"{\n ...getNonRootAttrs($attrs),\n ...(readOnly ? {} : attrs),\n }\"\n data-id=\"activator\"\n :aria-invalid=\"hasError\"\n @mouseenter=\"isHovered = true\"\n @mouseleave=\"isHovered = false\"\n @keydown.up.prevent=\"moveHighlight(true)\"\n @keydown.down.prevent=\"moveHighlight(false)\"\n @keydown.enter.prevent=\"applyHighlighted()\"\n @keydown.space.prevent=\"applyHighlighted()\"\n @keydown.home.prevent=\"highlightedIndex = 0\"\n @keydown.end.prevent=\"highlightedIndex = options.length - 1\"\n >\n <span\n v-if=\"outlined || !value\"\n :class=\"[\n ui.label(),\n { 'pr-2': !value && !open && outlined },\n ]\"\n >\n <slot\n name=\"activator.label\"\n v-bind=\"{ value }\"\n >\n {{ label }}\n </slot>\n <span\n v-if=\"required\"\n :class=\"ui.required()\"\n >\n ﹡\n </span>\n </span>\n <span\n v-if=\"value\"\n :class=\"ui.value()\"\n >\n <slot\n name=\"selection.prepend\"\n v-bind=\"{ item: value }\"\n />\n <slot\n name=\"selection\"\n v-bind=\"{ item: value }\"\n >\n {{ getText(value) }}\n </slot>\n </span>\n\n <span\n v-if=\"clearable && value && !disabled\"\n data-id=\"clear\"\n :class=\"[ui.clear(), focused && '!visible']\"\n @click.stop.prevent=\"clear()\"\n >\n <RuiIcon\n color=\"error\"\n name=\"lu-x\"\n size=\"18\"\n />\n </span>\n\n <span :class=\"ui.iconWrapper()\">\n <RuiIcon\n :class=\"ui.icon()\"\n :size=\"dense ? 16 : 24\"\n name=\"lu-chevron-down\"\n />\n </span>\n\n <RuiProgress\n v-if=\"loading\"\n :class=\"ui.progress()\"\n color=\"primary\"\n thickness=\"3\"\n variant=\"indeterminate\"\n />\n </button>\n <fieldset\n v-if=\"outlined\"\n :class=\"ui.fieldset()\"\n >\n <legend :class=\"ui.legend()\">\n {{ legendText }}\n </legend>\n </fieldset>\n </slot>\n <input\n :value=\"valueKey\"\n class=\"hidden\"\n type=\"hidden\"\n />\n </template>\n <template #default=\"{ width }\">\n <div\n v-if=\"options.length > 0\"\n :ref=\"containerProps.ref\"\n :class=\"ui.menu({ class: cn(classNames?.menu) ?? menuClass })\"\n :style=\"[containerProps.style, { width: `${width}px`, minWidth: menuWidth }]\"\n @scroll=\"containerProps.onScroll\"\n @keydown.up.prevent=\"moveHighlight(true)\"\n @keydown.down.prevent=\"moveHighlight(false)\"\n >\n <div\n v-bind=\"wrapperProps\"\n ref=\"menuRef\"\n >\n <RuiButton\n v-for=\"{ item, _index } in renderedData\"\n :key=\"getIdentifier(item)\"\n :active=\"isActiveItem(item)\"\n :aria-selected=\"isActiveItem(item)\"\n :size=\"dense ? 'sm' : undefined\"\n variant=\"list\"\n :data-highlighted=\"highlightedIndex === _index\"\n :class=\"{\n [highlightedClass]: !isActiveItem(item) && highlightedIndex === _index,\n }\"\n @click=\"setValue(item)\"\n >\n <template #prepend>\n <slot\n name=\"item.prepend\"\n v-bind=\"{ disabled, item, active: isActiveItem(item) }\"\n />\n </template>\n <slot\n name=\"item\"\n v-bind=\"{ disabled, item, active: isActiveItem(item) }\"\n >\n {{ getText(item) }}\n </slot>\n <template #append>\n <slot\n name=\"item.append\"\n v-bind=\"{ disabled, item, active: isActiveItem(item) }\"\n />\n </template>\n </RuiButton>\n </div>\n </div>\n\n <div\n v-else-if=\"!hideNoData\"\n data-id=\"no-data\"\n :style=\"{ width: `${width}px`, minWidth: menuWidth }\"\n :class=\"classNames?.menu ?? menuClass\"\n >\n <slot name=\"no-data\">\n <div class=\"p-4\">\n {{ noDataText }}\n </div>\n </slot>\n </div>\n </template>\n </RuiMenu>\n</template>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"RuiMenuSelect.vue_vue_type_script_setup_true_lang.js","names":["$attrs"],"sources":["../../../../src/components/forms/select/RuiMenuSelect.vue"],"sourcesContent":["<script lang=\"ts\" setup generic=\"TValue, TItem\">\nimport type { VueClassValue } from '@/types/class-value';\nimport RuiButton from '@/components/buttons/button/RuiButton.vue';\nimport { menuSelectStyles, type MenuSelectVariant } from '@/components/forms/select/menu-select-styles';\nimport RuiIcon from '@/components/icons/RuiIcon.vue';\nimport RuiMenu, { type MenuProps } from '@/components/overlays/menu/RuiMenu.vue';\nimport RuiProgress from '@/components/progress/RuiProgress.vue';\nimport { type KeyOfType, useDropdownMenu } from '@/composables/dropdown-menu';\nimport { useFormTextDetail } from '@/utils/form-text-detail';\nimport { getNonRootAttrs, getRootAttrs } from '@/utils/helpers';\nimport { cn } from '@/utils/tv';\n\nexport interface RuiMenuSelectClassNames {\n root?: VueClassValue;\n label?: VueClassValue;\n menu?: VueClassValue;\n option?: VueClassValue;\n}\n\nexport interface MenuSelectProps<TValue, TItem> {\n options: TItem[];\n keyAttr?: KeyOfType<TItem, TValue extends Array<infer U> ? U : TValue>;\n textAttr?: keyof TItem;\n disabled?: boolean;\n loading?: boolean;\n readOnly?: boolean;\n dense?: boolean;\n clearable?: boolean;\n label?: string;\n menuOptions?: MenuProps;\n classNames?: RuiMenuSelectClassNames;\n /** @deprecated Use `classNames.label` instead */\n labelClass?: string;\n /** @deprecated Use `classNames.menu` instead */\n menuClass?: string;\n /** @deprecated Use `classNames.option` instead */\n optionClass?: string;\n prependWidth?: number;\n appendWidth?: number;\n itemHeight?: number;\n variant?: MenuSelectVariant;\n hint?: string;\n errorMessages?: string | string[];\n successMessages?: string | string[];\n hideDetails?: boolean;\n autoSelectFirst?: boolean;\n hideNoData?: boolean;\n noDataText?: string;\n required?: boolean;\n}\n\ndefineOptions({\n name: 'RuiMenuSelect',\n inheritAttrs: false,\n});\n\nconst modelValue = defineModel<TValue | undefined>({ required: true });\n\nconst {\n options,\n disabled = false,\n loading = false,\n readOnly = false,\n dense = false,\n clearable = false,\n hideDetails = false,\n label = 'Select',\n menuOptions,\n classNames,\n labelClass,\n menuClass,\n variant = 'default',\n hint,\n keyAttr,\n textAttr,\n itemHeight,\n errorMessages = [],\n successMessages = [],\n autoSelectFirst = false,\n hideNoData = false,\n noDataText = 'No data available',\n required = false,\n} = defineProps<MenuSelectProps<TValue, TItem>>();\n\ndefineSlots<{\n 'activator'?: (props: {\n disabled: boolean;\n value: TItem | undefined;\n variant: string;\n readOnly: boolean;\n attrs: Record<string, unknown>;\n open: boolean;\n hasError: boolean;\n hasSuccess: boolean;\n }) => any;\n 'activator.label'?: (props: { value: TItem | undefined }) => any;\n 'selection.prepend'?: (props: { item: TItem }) => any;\n 'selection'?: (props: { item: TItem }) => any;\n 'item.prepend'?: (props: { disabled: boolean; item: TItem; active: boolean }) => any;\n 'item'?: (props: { disabled: boolean; item: TItem; active: boolean }) => any;\n 'item.append'?: (props: { disabled: boolean; item: TItem; active: boolean }) => any;\n 'no-data'?: () => any;\n}>();\n\nconst menuRef = useTemplateRef<HTMLDivElement>('menuRef');\nconst activator = useTemplateRef<HTMLDivElement>('activator');\nconst { focused } = useFocus(activator);\nconst isHovered = ref<boolean>(false);\n\nconst { hasError, hasSuccess } = useFormTextDetail(\n () => errorMessages,\n () => successMessages,\n);\n\nconst value = computed<TItem | undefined>({\n get: () => {\n const value = get(modelValue);\n if (keyAttr)\n return options.find(option => option[keyAttr] === value);\n return value as unknown as TItem;\n },\n set: (selected?: TItem) => {\n const selection = keyAttr && selected ? selected[keyAttr] : selected;\n set(modelValue, selection as TValue);\n },\n});\n\nfunction setValue(val: TItem): void {\n set(value, val);\n set(focused, true);\n}\n\nconst {\n containerProps,\n wrapperProps,\n renderedData,\n isOpen,\n menuWidth,\n getText,\n getIdentifier,\n isActiveItem,\n highlightedIndex,\n moveHighlight,\n applyHighlighted,\n valueKey,\n} = useDropdownMenu<TValue, TItem>({\n itemHeight: itemHeight ?? (dense ? 30 : 48),\n keyAttr,\n textAttr,\n options: () => options,\n dense: () => dense,\n value,\n menuRef,\n disabled: () => disabled,\n autoSelectFirst,\n setValue,\n});\n\nconst outlined = computed<boolean>(() => variant === 'outlined');\nconst float = computed<boolean>(() => (get(isOpen) || !!get(value)) && get(outlined));\n\nconst legendText = computed<string>(() => {\n if (!get(float) || !label)\n return '';\n return required ? `${label} ﹡` : label;\n});\n\nconst ui = computed<ReturnType<typeof menuSelectStyles>>(() => menuSelectStyles({\n filled: variant === 'filled',\n outlined: get(outlined),\n float: get(float),\n opened: get(isOpen),\n hovered: get(isHovered),\n dense,\n disabled,\n readonly: readOnly,\n hasError: get(hasError),\n hasSuccess: get(hasSuccess) && !get(hasError),\n}));\n\nconst highlightedClass = menuSelectStyles({}).highlighted();\n\nfunction clear(): void {\n set(modelValue, undefined);\n}\n</script>\n\n<template>\n <RuiMenu\n v-model=\"isOpen\"\n v-bind=\"{ ...getRootAttrs($attrs, []), ...menuOptions }\"\n :class=\"ui.wrapper({ class: cn($attrs.class) })\"\n placement=\"bottom-start\"\n :close-on-content-click=\"true\"\n :full-width=\"true\"\n :error-messages=\"errorMessages\"\n :success-messages=\"successMessages\"\n :hint=\"hint\"\n :dense=\"dense\"\n :show-details=\"!hideDetails\"\n :disabled=\"disabled\"\n disable-auto-focus\n >\n <template #activator=\"{ attrs, open, hasError: slotHasError, hasSuccess: slotHasSuccess }\">\n <slot\n name=\"activator\"\n v-bind=\"{ disabled, value, variant, readOnly, attrs, open, hasError: slotHasError, hasSuccess: slotHasSuccess }\"\n >\n <button\n ref=\"activator\"\n :disabled=\"disabled\"\n :aria-disabled=\"disabled\"\n :aria-expanded=\"isOpen\"\n :aria-readonly=\"readOnly || undefined\"\n :aria-required=\"required || undefined\"\n :aria-busy=\"loading || undefined\"\n type=\"button\"\n :tabindex=\"disabled || readOnly ? -1 : 0\"\n :class=\"ui.activator({ class: cn(classNames?.label) ?? labelClass })\"\n v-bind=\"{\n ...getNonRootAttrs($attrs),\n ...(readOnly ? {} : attrs),\n }\"\n data-id=\"activator\"\n :aria-invalid=\"hasError\"\n @mouseenter=\"isHovered = true\"\n @mouseleave=\"isHovered = false\"\n @keydown.up.prevent=\"moveHighlight(true)\"\n @keydown.down.prevent=\"moveHighlight(false)\"\n @keydown.enter.prevent=\"applyHighlighted()\"\n @keydown.space.prevent=\"applyHighlighted()\"\n @keydown.home.prevent=\"highlightedIndex = 0\"\n @keydown.end.prevent=\"highlightedIndex = options.length - 1\"\n >\n <span\n v-if=\"outlined || !value\"\n :class=\"[\n ui.label(),\n { 'pr-2': !value && !open && outlined },\n ]\"\n >\n <slot\n name=\"activator.label\"\n v-bind=\"{ value }\"\n >\n {{ label }}\n </slot>\n <span\n v-if=\"required\"\n :class=\"ui.required()\"\n >\n ﹡\n </span>\n </span>\n <span\n v-if=\"value\"\n :class=\"ui.value()\"\n >\n <slot\n name=\"selection.prepend\"\n v-bind=\"{ item: value }\"\n />\n <slot\n name=\"selection\"\n v-bind=\"{ item: value }\"\n >\n {{ getText(value) }}\n </slot>\n </span>\n\n <span\n v-if=\"clearable && value && !disabled\"\n data-id=\"clear\"\n :class=\"[ui.clear(), focused && '!visible']\"\n @click.stop.prevent=\"clear()\"\n >\n <RuiIcon\n color=\"error\"\n name=\"lu-x\"\n size=\"18\"\n />\n </span>\n\n <span :class=\"ui.iconWrapper()\">\n <RuiIcon\n :class=\"ui.icon()\"\n :size=\"dense ? 16 : 24\"\n name=\"lu-chevron-down\"\n />\n </span>\n\n <RuiProgress\n v-if=\"loading\"\n :class=\"ui.progress()\"\n color=\"primary\"\n thickness=\"3\"\n variant=\"indeterminate\"\n />\n </button>\n <fieldset\n v-if=\"outlined\"\n :class=\"ui.fieldset()\"\n >\n <legend :class=\"ui.legend()\">\n {{ legendText }}\n </legend>\n </fieldset>\n </slot>\n <input\n :value=\"valueKey\"\n class=\"hidden\"\n type=\"hidden\"\n />\n </template>\n <template #default=\"{ width }\">\n <div\n v-if=\"options.length > 0\"\n :ref=\"containerProps.ref\"\n :class=\"ui.menu({ class: cn(classNames?.menu) ?? menuClass })\"\n :style=\"[containerProps.style, { width: `${width}px`, minWidth: menuWidth }]\"\n @scroll=\"containerProps.onScroll\"\n @keydown.up.prevent=\"moveHighlight(true)\"\n @keydown.down.prevent=\"moveHighlight(false)\"\n >\n <div\n v-bind=\"wrapperProps\"\n ref=\"menuRef\"\n >\n <RuiButton\n v-for=\"{ item, _index } in renderedData\"\n :key=\"getIdentifier(item)\"\n :active=\"isActiveItem(item)\"\n :aria-selected=\"isActiveItem(item)\"\n :size=\"dense ? 'sm' : undefined\"\n variant=\"list\"\n :data-highlighted=\"highlightedIndex === _index\"\n :class=\"{\n [highlightedClass]: !isActiveItem(item) && highlightedIndex === _index,\n }\"\n @click=\"setValue(item)\"\n >\n <template #prepend>\n <slot\n name=\"item.prepend\"\n v-bind=\"{ disabled, item, active: isActiveItem(item) }\"\n />\n </template>\n <slot\n name=\"item\"\n v-bind=\"{ disabled, item, active: isActiveItem(item) }\"\n >\n {{ getText(item) }}\n </slot>\n <template #append>\n <slot\n name=\"item.append\"\n v-bind=\"{ disabled, item, active: isActiveItem(item) }\"\n />\n </template>\n </RuiButton>\n </div>\n </div>\n\n <div\n v-else-if=\"!hideNoData\"\n data-id=\"no-data\"\n :style=\"{ width: `${width}px`, minWidth: menuWidth }\"\n :class=\"classNames?.menu ?? menuClass\"\n >\n <slot name=\"no-data\">\n <div class=\"p-4\">\n {{ noDataText }}\n </div>\n </slot>\n </div>\n </template>\n </RuiMenu>\n</template>\n"],"mappings":"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"}
|
|
@@ -165,7 +165,7 @@ var textAreaStyles = tv({
|
|
|
165
165
|
active: true,
|
|
166
166
|
class: {
|
|
167
167
|
textarea: "border-t-transparent",
|
|
168
|
-
label: "!h-auto -translate-y-
|
|
168
|
+
label: "!h-auto -translate-y-[0.5rem] pl-4"
|
|
169
169
|
}
|
|
170
170
|
},
|
|
171
171
|
{
|
|
@@ -173,6 +173,12 @@ var textAreaStyles = tv({
|
|
|
173
173
|
dense: true,
|
|
174
174
|
class: { label: "leading-[2.5]" }
|
|
175
175
|
},
|
|
176
|
+
{
|
|
177
|
+
variant: "outlined",
|
|
178
|
+
dense: true,
|
|
179
|
+
active: true,
|
|
180
|
+
class: { label: "!leading-tight" }
|
|
181
|
+
},
|
|
176
182
|
{
|
|
177
183
|
focused: true,
|
|
178
184
|
color: "primary",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"text-area-styles.js","names":[],"sources":["../../../../src/components/forms/text-area/text-area-styles.ts"],"sourcesContent":["import { textInputBase, type TextInputVariant, underlinePseudo } from '@/components/forms/text-input-styles';\nimport { tv } from '@/utils/tv';\n\nexport type TextAreaVariant = TextInputVariant;\n\n/**\n * tv() styles for RuiTextArea. Extends textInputBase for shared\n * fieldset/legend/label/validation core.\n *\n * IMPORTANT: tv() extend does NOT deduplicate conflicting Tailwind classes\n * between base and extension. Never put a class in the base slot that a\n * variant needs to override — put variant-specific classes in the variants.\n */\nexport const textAreaStyles = tv({\n extend: textInputBase,\n slots: {\n fieldset: '',\n legend: '',\n wrapper: 'relative w-full min-w-[12.5rem] flex items-start rounded bg-white dark:bg-transparent',\n inputWrapper: 'flex flex-1 overflow-hidden',\n textarea: [\n 'peer leading-6 text-rui-text w-full bg-transparent pb-2 pt-0',\n 'outline-0 outline-none',\n 'placeholder:opacity-0 focus:placeholder:opacity-100',\n ].join(' '),\n textareaSizer: 'invisible absolute top-0 left-0 w-full h-0 -z-10 pointer-events-none',\n label: [\n 'left-0 text-[1rem] pointer-events-none',\n 'absolute top-0 h-full w-full select-none',\n '[padding-left:calc(var(--x-padding,0px)+var(--prepend-w,0px))]',\n '[padding-right:calc(var(--x-padding,0px)+var(--append-w,0px))]',\n ].join(' '),\n labelText: 'truncate transition-all duration-75',\n prepend: 'flex items-center gap-1 shrink-0 mt-4 mx-3',\n append: 'flex items-center gap-1 shrink-0 absolute right-0 mt-4 mx-3',\n icon: 'text-black/[0.54] dark:text-white/[0.56]',\n details: 'pt-1 px-4',\n required: 'text-rui-error',\n clearButton: '!p-2',\n },\n variants: {\n variant: {\n default: {\n inputWrapper: 'pt-4',\n textarea: '[padding-right:calc(var(--x-padding,1rem)+var(--append-w,0px))]',\n label: `flex leading-[3.2] ${underlinePseudo}`,\n },\n filled: {\n inputWrapper: 'pt-4',\n textarea: 'px-4 [padding-right:calc(var(--x-padding,1rem)+var(--append-w,0px))]',\n textareaSizer: 'px-4',\n label: `flex leading-[3.2] [--x-padding:1rem] rounded-t bg-black/[0.06] dark:bg-white/[0.09] ${underlinePseudo}`,\n prepend: '!mr-0',\n append: '!ml-0',\n },\n outlined: {\n inputWrapper: '!overflow-visible pt-4',\n textarea: 'px-4 [padding-right:calc(var(--x-padding,1rem)+var(--append-w,0px))]',\n textareaSizer: 'px-4',\n label: [\n 'flex leading-[3.2] [--x-padding:1rem]',\n 'border-0 border-transparent',\n 'after:content-none',\n ].join(' '),\n fieldset: '!mt-0 !h-full',\n prepend: '!mr-0',\n append: '!ml-0',\n },\n },\n dense: {\n true: {\n inputWrapper: '!pt-2',\n textarea: 'py-1',\n textareaSizer: 'py-1',\n },\n },\n noResize: {\n true: {\n textarea: 'resize-none',\n },\n false: {\n textarea: 'resize-y',\n },\n },\n hovered: {\n true: {\n label: 'border-black dark:border-white',\n },\n },\n focused: {\n true: {},\n },\n active: {\n true: {\n label: [\n 'text-[0.75rem] leading-tight',\n '[padding-left:var(--x-padding,0px)]',\n '[padding-right:var(--x-padding,0px)]',\n ].join(' '),\n },\n },\n noLabel: {\n true: {},\n },\n showLabel: {\n true: {},\n },\n textColor: {\n primary: { prepend: 'text-rui-primary', append: 'text-rui-primary', textarea: 'text-rui-primary', icon: 'text-rui-primary' },\n secondary: { prepend: 'text-rui-secondary', append: 'text-rui-secondary', textarea: 'text-rui-secondary', icon: 'text-rui-secondary' },\n error: { prepend: 'text-rui-error', append: 'text-rui-error', textarea: 'text-rui-error', icon: 'text-rui-error' },\n warning: { prepend: 'text-rui-warning', append: 'text-rui-warning', textarea: 'text-rui-warning', icon: 'text-rui-warning' },\n info: { prepend: 'text-rui-info', append: 'text-rui-info', textarea: 'text-rui-info', icon: 'text-rui-info' },\n success: { prepend: 'text-rui-success', append: 'text-rui-success', textarea: 'text-rui-success', icon: 'text-rui-success' },\n },\n validation: {\n error: {\n textarea: '!border-rui-error',\n label: '!text-rui-error !after:border-rui-error',\n },\n success: {\n textarea: '!border-rui-success',\n label: '!text-rui-success !after:border-rui-success',\n },\n },\n },\n compoundVariants: [\n // --- Default variant ---\n { variant: 'default', focused: true, class: { label: 'after:scale-x-100' } },\n\n // --- Filled variant ---\n { variant: 'filled', focused: true, class: { label: 'bg-black/[0.09] dark:bg-white/[0.13]' } },\n { variant: 'filled', noLabel: true, class: { textarea: 'py-4', textareaSizer: 'py-4' } },\n { variant: 'filled', noLabel: true, dense: true, class: { textarea: 'py-3', textareaSizer: 'py-3' } },\n\n // --- Outlined variant ---\n { variant: 'outlined', active: true, class: {\n textarea: 'border-t-transparent',\n label: '!h-auto -translate-y-
|
|
1
|
+
{"version":3,"file":"text-area-styles.js","names":[],"sources":["../../../../src/components/forms/text-area/text-area-styles.ts"],"sourcesContent":["import { textInputBase, type TextInputVariant, underlinePseudo } from '@/components/forms/text-input-styles';\nimport { tv } from '@/utils/tv';\n\nexport type TextAreaVariant = TextInputVariant;\n\n/**\n * tv() styles for RuiTextArea. Extends textInputBase for shared\n * fieldset/legend/label/validation core.\n *\n * IMPORTANT: tv() extend does NOT deduplicate conflicting Tailwind classes\n * between base and extension. Never put a class in the base slot that a\n * variant needs to override — put variant-specific classes in the variants.\n */\nexport const textAreaStyles = tv({\n extend: textInputBase,\n slots: {\n fieldset: '',\n legend: '',\n wrapper: 'relative w-full min-w-[12.5rem] flex items-start rounded bg-white dark:bg-transparent',\n inputWrapper: 'flex flex-1 overflow-hidden',\n textarea: [\n 'peer leading-6 text-rui-text w-full bg-transparent pb-2 pt-0',\n 'outline-0 outline-none',\n 'placeholder:opacity-0 focus:placeholder:opacity-100',\n ].join(' '),\n textareaSizer: 'invisible absolute top-0 left-0 w-full h-0 -z-10 pointer-events-none',\n label: [\n 'left-0 text-[1rem] pointer-events-none',\n 'absolute top-0 h-full w-full select-none',\n '[padding-left:calc(var(--x-padding,0px)+var(--prepend-w,0px))]',\n '[padding-right:calc(var(--x-padding,0px)+var(--append-w,0px))]',\n ].join(' '),\n labelText: 'truncate transition-all duration-75',\n prepend: 'flex items-center gap-1 shrink-0 mt-4 mx-3',\n append: 'flex items-center gap-1 shrink-0 absolute right-0 mt-4 mx-3',\n icon: 'text-black/[0.54] dark:text-white/[0.56]',\n details: 'pt-1 px-4',\n required: 'text-rui-error',\n clearButton: '!p-2',\n },\n variants: {\n variant: {\n default: {\n inputWrapper: 'pt-4',\n textarea: '[padding-right:calc(var(--x-padding,1rem)+var(--append-w,0px))]',\n label: `flex leading-[3.2] ${underlinePseudo}`,\n },\n filled: {\n inputWrapper: 'pt-4',\n textarea: 'px-4 [padding-right:calc(var(--x-padding,1rem)+var(--append-w,0px))]',\n textareaSizer: 'px-4',\n label: `flex leading-[3.2] [--x-padding:1rem] rounded-t bg-black/[0.06] dark:bg-white/[0.09] ${underlinePseudo}`,\n prepend: '!mr-0',\n append: '!ml-0',\n },\n outlined: {\n inputWrapper: '!overflow-visible pt-4',\n textarea: 'px-4 [padding-right:calc(var(--x-padding,1rem)+var(--append-w,0px))]',\n textareaSizer: 'px-4',\n label: [\n 'flex leading-[3.2] [--x-padding:1rem]',\n 'border-0 border-transparent',\n 'after:content-none',\n ].join(' '),\n fieldset: '!mt-0 !h-full',\n prepend: '!mr-0',\n append: '!ml-0',\n },\n },\n dense: {\n true: {\n inputWrapper: '!pt-2',\n textarea: 'py-1',\n textareaSizer: 'py-1',\n },\n },\n noResize: {\n true: {\n textarea: 'resize-none',\n },\n false: {\n textarea: 'resize-y',\n },\n },\n hovered: {\n true: {\n label: 'border-black dark:border-white',\n },\n },\n focused: {\n true: {},\n },\n active: {\n true: {\n label: [\n 'text-[0.75rem] leading-tight',\n '[padding-left:var(--x-padding,0px)]',\n '[padding-right:var(--x-padding,0px)]',\n ].join(' '),\n },\n },\n noLabel: {\n true: {},\n },\n showLabel: {\n true: {},\n },\n textColor: {\n primary: { prepend: 'text-rui-primary', append: 'text-rui-primary', textarea: 'text-rui-primary', icon: 'text-rui-primary' },\n secondary: { prepend: 'text-rui-secondary', append: 'text-rui-secondary', textarea: 'text-rui-secondary', icon: 'text-rui-secondary' },\n error: { prepend: 'text-rui-error', append: 'text-rui-error', textarea: 'text-rui-error', icon: 'text-rui-error' },\n warning: { prepend: 'text-rui-warning', append: 'text-rui-warning', textarea: 'text-rui-warning', icon: 'text-rui-warning' },\n info: { prepend: 'text-rui-info', append: 'text-rui-info', textarea: 'text-rui-info', icon: 'text-rui-info' },\n success: { prepend: 'text-rui-success', append: 'text-rui-success', textarea: 'text-rui-success', icon: 'text-rui-success' },\n },\n validation: {\n error: {\n textarea: '!border-rui-error',\n label: '!text-rui-error !after:border-rui-error',\n },\n success: {\n textarea: '!border-rui-success',\n label: '!text-rui-success !after:border-rui-success',\n },\n },\n },\n compoundVariants: [\n // --- Default variant ---\n { variant: 'default', focused: true, class: { label: 'after:scale-x-100' } },\n\n // --- Filled variant ---\n { variant: 'filled', focused: true, class: { label: 'bg-black/[0.09] dark:bg-white/[0.13]' } },\n { variant: 'filled', noLabel: true, class: { textarea: 'py-4', textareaSizer: 'py-4' } },\n { variant: 'filled', noLabel: true, dense: true, class: { textarea: 'py-3', textareaSizer: 'py-3' } },\n\n // --- Outlined variant ---\n { variant: 'outlined', active: true, class: {\n textarea: 'border-t-transparent',\n // Same rationale as RuiTextField's outlined+active rule: a percentage\n // translate gets recomputed against the *current* label height, which\n // jumps the moment !h-auto is removed on blur, producing a visible\n // upward overshoot before the transition settles. Anchor in rem.\n label: '!h-auto -translate-y-[0.5rem] pl-4',\n } },\n { variant: 'outlined', dense: true, class: { label: 'leading-[2.5]' } },\n // Re-assert `leading-tight` for outlined+dense+active. The dense rule\n // above sets `leading-[2.5]` which twMerge keeps as the winning leading,\n // inflating the floated label's line-box and pushing its visual centre\n // below the fieldset border.\n { variant: 'outlined', dense: true, active: true, class: { label: '!leading-tight' } },\n\n // --- Focus label color (per color) ---\n { focused: true, color: 'primary', class: { label: 'text-rui-primary' } },\n { focused: true, color: 'secondary', class: { label: 'text-rui-secondary' } },\n { focused: true, color: 'error', class: { label: 'text-rui-error' } },\n { focused: true, color: 'warning', class: { label: 'text-rui-warning' } },\n { focused: true, color: 'info', class: { label: 'text-rui-info' } },\n { focused: true, color: 'success', class: { label: 'text-rui-success' } },\n\n // --- Label after border color (always applied when color set) ---\n { color: 'primary', class: { label: 'after:border-rui-primary' } },\n { color: 'secondary', class: { label: 'after:border-rui-secondary' } },\n { color: 'error', class: { label: 'after:border-rui-error' } },\n { color: 'warning', class: { label: 'after:border-rui-warning' } },\n { color: 'info', class: { label: 'after:border-rui-info' } },\n { color: 'success', class: { label: 'after:border-rui-success' } },\n ],\n defaultVariants: {\n variant: 'default',\n noResize: false,\n },\n});\n"],"mappings":"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"}
|
|
@@ -12,6 +12,7 @@ import RuiCardHeader, { type Props as CardHeaderProps } from '../components/card
|
|
|
12
12
|
import RuiChip, { type Props as ChipProps, type RuiChipClassNames } from '../components/chips/RuiChip.vue';
|
|
13
13
|
import RuiColorPicker from '../components/color-picker/RuiColorPicker.vue';
|
|
14
14
|
import RuiDateTimePicker, { type RuiDateTimePickerProps } from '../components/date-time-picker/RuiDateTimePicker.vue';
|
|
15
|
+
import RuiTimezoneSelect, { type RuiTimezoneSelectProps } from '../components/date-time-picker/RuiTimezoneSelect.vue';
|
|
15
16
|
import RuiDivider, { type Props as DividerProps } from '../components/divider/RuiDivider.vue';
|
|
16
17
|
import RuiAutoComplete, { type AutoCompleteProps, type RuiAutoCompleteClassNames } from '../components/forms/auto-complete/RuiAutoComplete.vue';
|
|
17
18
|
import RuiCheckboxGroup, { type Props as CheckboxGroupProps } from '../components/forms/checkbox/checkbox-group/RuiCheckboxGroup.vue';
|
|
@@ -46,5 +47,5 @@ import RuiTabItems from '../components/tabs/tab-items/RuiTabItems.vue';
|
|
|
46
47
|
import RuiTab, { type RuiTabClassNames, type Props as TabProps } from '../components/tabs/tab/RuiTab.vue';
|
|
47
48
|
import RuiTabs, { type Props as TabsProps } from '../components/tabs/tabs/RuiTabs.vue';
|
|
48
49
|
import RuiTimePicker, { type RuiTimePickerProps } from '../components/time-picker/RuiTimePicker.vue';
|
|
49
|
-
export type { AccordionProps, AccordionsProps, AlertProps, AutoCompleteProps, AvatarGroupProps, AvatarProps, BadgeProps, BottomSheetProps, ButtonGroupProps, ButtonProps, CalendarProps, CardHeaderProps, CardProps, CheckboxGroupProps, CheckboxProps, ChipProps, DataTableColumn, DataTableGroupKeys, DataTableOptions, DataTableProps, DataTableSortColumn, DataTableSortData, DialogProps, DividerProps, ExpandButtonProps, FooterStepperProps, GroupData, IconProps, LogoProps, MenuProps, MenuSelectProps, NavigationDrawerProps, NotificationProps, ProgressProps, RadioGroupProps, RadioProps, RevealableTextFieldProps, RuiAccordionClassNames, RuiAutoCompleteClassNames, RuiCardClassNames, RuiChipClassNames, RuiDateTimePickerProps, RuiDialogClassNames, RuiMenuClassNames, RuiMenuSelectClassNames, RuiNavigationDrawerClassNames, RuiSliderClassNames, RuiStepperClassNames, RuiTabClassNames, RuiTimePickerProps, RuiTooltipClassNames, SimpleSelectProps, SkeletonLoaderProps, SliderProps, StepperProps, SwitchProps, TabItemProps, TablePaginationData, TablePaginationProps, TabProps, TabsProps, TextAreaProps, TextFieldProps, TooltipProps, };
|
|
50
|
-
export { RuiAccordion, RuiAccordions, RuiAlert, RuiAutoComplete, RuiAvatar, RuiAvatarGroup, RuiBadge, RuiBottomSheet, RuiButton, RuiButtonGroup, RuiCalendar, RuiCard, RuiCardHeader, RuiCheckbox, RuiCheckboxGroup, RuiChip, RuiColorPicker, RuiDataTable, RuiDateTimePicker, RuiDialog, RuiDivider, RuiFooterStepper, RuiIcon, RuiLogo, RuiMenu, RuiMenuSelect, RuiNavigationDrawer, RuiNotification, RuiProgress, RuiRadio, RuiRadioGroup, RuiRevealableTextField, RuiSimpleSelect, RuiSkeletonLoader, RuiSlider, RuiStepper, RuiSwitch, RuiTab, RuiTabItem, RuiTabItems, RuiTablePagination, RuiTableRowExpander, RuiTabs, RuiTextArea, RuiTextField, RuiTimePicker, RuiTooltip, };
|
|
50
|
+
export type { AccordionProps, AccordionsProps, AlertProps, AutoCompleteProps, AvatarGroupProps, AvatarProps, BadgeProps, BottomSheetProps, ButtonGroupProps, ButtonProps, CalendarProps, CardHeaderProps, CardProps, CheckboxGroupProps, CheckboxProps, ChipProps, DataTableColumn, DataTableGroupKeys, DataTableOptions, DataTableProps, DataTableSortColumn, DataTableSortData, DialogProps, DividerProps, ExpandButtonProps, FooterStepperProps, GroupData, IconProps, LogoProps, MenuProps, MenuSelectProps, NavigationDrawerProps, NotificationProps, ProgressProps, RadioGroupProps, RadioProps, RevealableTextFieldProps, RuiAccordionClassNames, RuiAutoCompleteClassNames, RuiCardClassNames, RuiChipClassNames, RuiDateTimePickerProps, RuiDialogClassNames, RuiMenuClassNames, RuiMenuSelectClassNames, RuiNavigationDrawerClassNames, RuiSliderClassNames, RuiStepperClassNames, RuiTabClassNames, RuiTimePickerProps, RuiTimezoneSelectProps, RuiTooltipClassNames, SimpleSelectProps, SkeletonLoaderProps, SliderProps, StepperProps, SwitchProps, TabItemProps, TablePaginationData, TablePaginationProps, TabProps, TabsProps, TextAreaProps, TextFieldProps, TooltipProps, };
|
|
51
|
+
export { RuiAccordion, RuiAccordions, RuiAlert, RuiAutoComplete, RuiAvatar, RuiAvatarGroup, RuiBadge, RuiBottomSheet, RuiButton, RuiButtonGroup, RuiCalendar, RuiCard, RuiCardHeader, RuiCheckbox, RuiCheckboxGroup, RuiChip, RuiColorPicker, RuiDataTable, RuiDateTimePicker, RuiDialog, RuiDivider, RuiFooterStepper, RuiIcon, RuiLogo, RuiMenu, RuiMenuSelect, RuiNavigationDrawer, RuiNotification, RuiProgress, RuiRadio, RuiRadioGroup, RuiRevealableTextField, RuiSimpleSelect, RuiSkeletonLoader, RuiSlider, RuiStepper, RuiSwitch, RuiTab, RuiTabItem, RuiTabItems, RuiTablePagination, RuiTableRowExpander, RuiTabs, RuiTextArea, RuiTextField, RuiTimePicker, RuiTimezoneSelect, RuiTooltip, };
|
package/dist/components/index.js
CHANGED
|
@@ -16,6 +16,7 @@ import RuiTooltip_default from "./overlays/tooltip/RuiTooltip.js";
|
|
|
16
16
|
import RuiTextField_default from "./forms/text-field/RuiTextField.js";
|
|
17
17
|
import RuiColorPicker_default from "./color-picker/RuiColorPicker.js";
|
|
18
18
|
import RuiAutoComplete_default from "./forms/auto-complete/RuiAutoComplete.js";
|
|
19
|
+
import RuiTimezoneSelect_default from "./date-time-picker/RuiTimezoneSelect.js";
|
|
19
20
|
import RuiTimePicker_default from "./time-picker/RuiTimePicker.js";
|
|
20
21
|
import RuiDateTimePicker_default from "./date-time-picker/RuiDateTimePicker.js";
|
|
21
22
|
import RuiDivider_default from "./divider/RuiDivider.js";
|
|
@@ -45,4 +46,4 @@ import RuiTabItem_default from "./tabs/tab-item/RuiTabItem.js";
|
|
|
45
46
|
import RuiTabItems_default from "./tabs/tab-items/RuiTabItems.js";
|
|
46
47
|
import RuiTab_default from "./tabs/tab/RuiTab.js";
|
|
47
48
|
import RuiTabs_default from "./tabs/tabs/RuiTabs.js";
|
|
48
|
-
export { RuiAccordion_default as RuiAccordion, RuiAccordions_default as RuiAccordions, RuiAlert_default as RuiAlert, RuiAutoComplete_default as RuiAutoComplete, RuiAvatar_default as RuiAvatar, RuiAvatarGroup_default as RuiAvatarGroup, RuiBadge_default as RuiBadge, RuiBottomSheet_default as RuiBottomSheet, RuiButton_default as RuiButton, RuiButtonGroup_default as RuiButtonGroup, RuiCalendar_default as RuiCalendar, RuiCard_default as RuiCard, RuiCardHeader_default as RuiCardHeader, RuiCheckbox_default as RuiCheckbox, RuiCheckboxGroup_default as RuiCheckboxGroup, RuiChip_default as RuiChip, RuiColorPicker_default as RuiColorPicker, RuiDataTable_default as RuiDataTable, RuiDateTimePicker_default as RuiDateTimePicker, RuiDialog_default as RuiDialog, RuiDivider_default as RuiDivider, RuiFooterStepper_default as RuiFooterStepper, RuiIcon_default as RuiIcon, RuiLogo_default as RuiLogo, RuiMenu_default as RuiMenu, RuiMenuSelect_default as RuiMenuSelect, RuiNavigationDrawer_default as RuiNavigationDrawer, RuiNotification_default as RuiNotification, RuiProgress_default as RuiProgress, RuiRadio_default as RuiRadio, RuiRadioGroup_default as RuiRadioGroup, RuiRevealableTextField_default as RuiRevealableTextField, RuiSimpleSelect_default as RuiSimpleSelect, RuiSkeletonLoader_default as RuiSkeletonLoader, RuiSlider_default as RuiSlider, RuiStepper_default as RuiStepper, RuiSwitch_default as RuiSwitch, RuiTab_default as RuiTab, RuiTabItem_default as RuiTabItem, RuiTabItems_default as RuiTabItems, RuiTablePagination_default as RuiTablePagination, RuiExpandButton_default as RuiTableRowExpander, RuiTabs_default as RuiTabs, RuiTextArea_default as RuiTextArea, RuiTextField_default as RuiTextField, RuiTimePicker_default as RuiTimePicker, RuiTooltip_default as RuiTooltip };
|
|
49
|
+
export { RuiAccordion_default as RuiAccordion, RuiAccordions_default as RuiAccordions, RuiAlert_default as RuiAlert, RuiAutoComplete_default as RuiAutoComplete, RuiAvatar_default as RuiAvatar, RuiAvatarGroup_default as RuiAvatarGroup, RuiBadge_default as RuiBadge, RuiBottomSheet_default as RuiBottomSheet, RuiButton_default as RuiButton, RuiButtonGroup_default as RuiButtonGroup, RuiCalendar_default as RuiCalendar, RuiCard_default as RuiCard, RuiCardHeader_default as RuiCardHeader, RuiCheckbox_default as RuiCheckbox, RuiCheckboxGroup_default as RuiCheckboxGroup, RuiChip_default as RuiChip, RuiColorPicker_default as RuiColorPicker, RuiDataTable_default as RuiDataTable, RuiDateTimePicker_default as RuiDateTimePicker, RuiDialog_default as RuiDialog, RuiDivider_default as RuiDivider, RuiFooterStepper_default as RuiFooterStepper, RuiIcon_default as RuiIcon, RuiLogo_default as RuiLogo, RuiMenu_default as RuiMenu, RuiMenuSelect_default as RuiMenuSelect, RuiNavigationDrawer_default as RuiNavigationDrawer, RuiNotification_default as RuiNotification, RuiProgress_default as RuiProgress, RuiRadio_default as RuiRadio, RuiRadioGroup_default as RuiRadioGroup, RuiRevealableTextField_default as RuiRevealableTextField, RuiSimpleSelect_default as RuiSimpleSelect, RuiSkeletonLoader_default as RuiSkeletonLoader, RuiSlider_default as RuiSlider, RuiStepper_default as RuiStepper, RuiSwitch_default as RuiSwitch, RuiTab_default as RuiTab, RuiTabItem_default as RuiTabItem, RuiTabItems_default as RuiTabItems, RuiTablePagination_default as RuiTablePagination, RuiExpandButton_default as RuiTableRowExpander, RuiTabs_default as RuiTabs, RuiTextArea_default as RuiTextArea, RuiTextField_default as RuiTextField, RuiTimePicker_default as RuiTimePicker, RuiTimezoneSelect_default as RuiTimezoneSelect, RuiTooltip_default as RuiTooltip };
|
|
@@ -50,7 +50,7 @@ export declare function useDropdownMenu<TValue, TItem>({ appendWidth, autoSelect
|
|
|
50
50
|
item: TItem;
|
|
51
51
|
}>;
|
|
52
52
|
toggle: (state?: boolean) => void;
|
|
53
|
-
userNavigated:
|
|
53
|
+
userNavigated: globalThis.ShallowRef<boolean>;
|
|
54
54
|
valueKey: globalThis.ComputedRef<TItem | TItem[] | TItem[KeyOfType<TItem, TValue extends (infer U)[] ? U : TValue>][] | NonNullable<TItem>[KeyOfType<TItem, TValue extends (infer U)[] ? U : TValue>] | undefined>;
|
|
55
55
|
wrapperProps: globalThis.ComputedRef<{
|
|
56
56
|
style: {
|
|
@@ -58,7 +58,7 @@ function useDropdownMenu({ appendWidth, autoSelectFirst, dense, disabled = false
|
|
|
58
58
|
return Array.isArray(selected) ? selected.map((item) => item[keyAttr]) : selected[keyAttr];
|
|
59
59
|
});
|
|
60
60
|
const highlightedIndex = ref(get$1(autoSelectFirst) ? 0 : -1);
|
|
61
|
-
const userNavigated =
|
|
61
|
+
const userNavigated = shallowRef(false);
|
|
62
62
|
const optionWidthBounds = computed(() => {
|
|
63
63
|
let min = 0;
|
|
64
64
|
let max = 0;
|
|
@@ -97,28 +97,41 @@ function useDropdownMenu({ appendWidth, autoSelectFirst, dense, disabled = false
|
|
|
97
97
|
const itemId = getIdentifier(item);
|
|
98
98
|
return selected.findIndex((selectedItem) => getIdentifier(selectedItem) === itemId);
|
|
99
99
|
}
|
|
100
|
-
function
|
|
100
|
+
function scrollHighlightedIntoView() {
|
|
101
|
+
get$1(_menuRef)?.querySelector("[data-highlighted=\"true\"]")?.scrollIntoView({ block: "nearest" });
|
|
102
|
+
}
|
|
103
|
+
async function adjustScrollByHighlightedIndex() {
|
|
101
104
|
const index = get$1(highlightedIndex);
|
|
102
|
-
if (index
|
|
105
|
+
if (index === -1) return;
|
|
106
|
+
await nextTick();
|
|
107
|
+
if (get$1(_menuRef)?.querySelector("[data-highlighted=\"true\"]")) {
|
|
108
|
+
scrollHighlightedIntoView();
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
scrollTo(index);
|
|
112
|
+
await nextTick();
|
|
113
|
+
scrollHighlightedIntoView();
|
|
103
114
|
}
|
|
104
|
-
function updateOpen(open) {
|
|
115
|
+
async function updateOpen(open) {
|
|
105
116
|
if (!open) return;
|
|
106
117
|
const val = get$1(value);
|
|
107
118
|
if (Array.isArray(val) && val.length > 0 || val !== null && val !== void 0) {
|
|
108
119
|
const index = get$1(options).findIndex(isActiveItem);
|
|
109
120
|
if (index > -1) set$1(highlightedIndex, index);
|
|
110
121
|
}
|
|
111
|
-
|
|
122
|
+
await adjustScrollByHighlightedIndex();
|
|
112
123
|
}
|
|
113
|
-
watch([isOpen, () => toValue(disabled)], ([open, _]) => {
|
|
114
|
-
updateOpen(open);
|
|
124
|
+
watch([isOpen, () => toValue(disabled)], async ([open, _]) => {
|
|
125
|
+
await updateOpen(open);
|
|
126
|
+
});
|
|
127
|
+
watch(highlightedIndex, async () => {
|
|
128
|
+
await adjustScrollByHighlightedIndex();
|
|
115
129
|
});
|
|
116
|
-
watch(
|
|
117
|
-
watch(options, () => {
|
|
130
|
+
watch(options, async () => {
|
|
118
131
|
set$1(userNavigated, false);
|
|
119
132
|
if (get$1(highlightedIndex) !== -1) if (get$1(autoSelectFirst)) {
|
|
120
133
|
set$1(highlightedIndex, 0);
|
|
121
|
-
adjustScrollByHighlightedIndex();
|
|
134
|
+
await adjustScrollByHighlightedIndex();
|
|
122
135
|
} else {
|
|
123
136
|
set$1(highlightedIndex, -1);
|
|
124
137
|
scrollTo(0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dropdown-menu.js","names":[],"sources":["../../src/composables/dropdown-menu.ts"],"sourcesContent":["import type { MaybeRefOrGetter, Ref, TemplateRef } from 'vue';\n\nexport type KeyOfType<T, V> = T extends string | number | boolean | symbol | null | undefined\n ? never\n : V extends object\n ? keyof T\n : keyof {\n [P in keyof T as T[P] extends V ? P : V extends T[P] ? P : never]: any;\n };\n\nexport interface DropdownItemAttr<TValue, TItem> {\n keyAttr?: KeyOfType<TItem, TValue extends Array<infer U> ? U : TValue>;\n textAttr?: keyof TItem | ((item: TItem) => string);\n}\n\nexport interface DropdownOptions<TValue, TItem> {\n options: MaybeRefOrGetter<TItem[]>;\n dense?: MaybeRefOrGetter<boolean>;\n disabled?: MaybeRefOrGetter<boolean>;\n value: Ref<TItem | TItem[] | undefined>;\n menuRef: Ref<HTMLElement> | TemplateRef<HTMLElement>;\n keyAttr?: KeyOfType<TItem, TValue extends Array<infer U> ? U : TValue>;\n textAttr?: keyof TItem | ((item: TItem) => string);\n appendWidth?: number;\n prependWidth?: number;\n itemHeight?: number;\n overscan?: number;\n autoSelectFirst?: boolean;\n setValue?: (val: TItem) => void;\n hideSelected?: boolean;\n isOpen?: Ref<boolean>;\n getText?: (item: TItem) => string | undefined;\n getIdentifier?: (item: TItem) => any;\n}\n\nexport function useDropdownOptionProperty<TValue, TItem>({\n keyAttr,\n textAttr,\n}: DropdownItemAttr<TValue, TItem>) {\n function getText(item: TItem): string | undefined {\n if (textAttr) {\n if (typeof textAttr === 'function')\n return textAttr(item);\n else return item[textAttr]?.toString();\n }\n\n return item?.toString();\n }\n\n function getIdentifier(\n item: TItem,\n ): TItem | TItem[KeyOfType<TItem, TValue extends Array<infer U> ? U : TValue>] {\n if (keyAttr)\n return item[keyAttr];\n\n return item;\n }\n\n return {\n getIdentifier,\n getText,\n };\n}\n\nfunction toSelectedArray<TItem>(val: TItem | TItem[] | undefined): TItem[] {\n if (Array.isArray(val))\n return val;\n if (val !== null && val !== undefined)\n return [val];\n return [];\n}\n\nexport function useDropdownMenu<TValue, TItem>({\n appendWidth,\n autoSelectFirst,\n dense,\n disabled = false,\n getIdentifier: externalGetIdentifier,\n getText: externalGetText,\n hideSelected,\n isOpen: externalIsOpen,\n itemHeight = 48,\n keyAttr,\n menuRef: _menuRef,\n options: allOptions,\n overscan = 5,\n prependWidth,\n setValue,\n textAttr,\n value,\n}: DropdownOptions<TValue, TItem>) {\n const { getIdentifier: defaultGetIdentifier, getText: defaultGetText } = useDropdownOptionProperty({\n keyAttr,\n textAttr,\n });\n\n const getIdentifier = externalGetIdentifier ?? defaultGetIdentifier;\n const getText = externalGetText ?? defaultGetText;\n\n const activeIdentifiers = computed<Set<any>>(() => {\n const val = get(value);\n const selected: TItem[] = toSelectedArray(val);\n const identifiers = new Set<any>();\n for (const item of selected) {\n identifiers.add(getIdentifier(item));\n }\n return identifiers;\n });\n\n function isActiveItem(item: TItem): boolean {\n return get(activeIdentifiers).has(getIdentifier(item));\n }\n\n const options = computed<TItem[]>(() => {\n const options = toValue(allOptions);\n if (!hideSelected)\n return options;\n\n return options.filter(item => !isActiveItem(item));\n });\n\n const { containerProps, list, scrollTo, wrapperProps } = useVirtualList<TItem>(options, {\n itemHeight,\n overscan,\n });\n\n const renderedData = useArrayMap(list, ({ data, index: _index }) => ({ _index, item: data }));\n\n const isOpen = externalIsOpen ?? shallowRef<boolean>(false);\n\n const valueKey = computed(() => {\n const selected = get(value);\n if (!keyAttr || !selected)\n return selected;\n return Array.isArray(selected) ? selected.map(item => item[keyAttr]) : selected[keyAttr];\n });\n\n const highlightedIndex: Ref<number> = ref(get(autoSelectFirst) ? 0 : -1);\n const userNavigated = ref<boolean>(false);\n\n const optionWidthBounds = computed<{ min: number; max: number }>(() => {\n let min = 0;\n let max = 0;\n for (const option of get(options)) {\n const length = getText(option)?.toString()?.length ?? 0;\n if (min === 0 && max === 0) {\n min = length;\n max = length;\n }\n else if (length < min) {\n min = length;\n }\n else if (length > max) {\n max = length;\n }\n }\n return { min, max };\n });\n\n const menuWidth = computed<string>(() => {\n const { min, max } = get(optionWidthBounds);\n const maxWidth = 30;\n const paddingX = 1.5;\n const fontMultiplier = toValue(dense) ? 12 : 13;\n const difference = max - min;\n\n function computeValue(width: number): string {\n const additionalWidths =\n (prependWidth ? prependWidth + 0.5 : 0) + (appendWidth ? appendWidth + 0.5 : 0);\n return `${Math.min((width * fontMultiplier) / 16 + paddingX + additionalWidths, maxWidth)}rem`;\n }\n\n if (difference <= 5)\n return computeValue(max);\n\n return computeValue(min + difference / 2);\n });\n\n function toggle(state: boolean = false): void {\n set(isOpen, state);\n }\n\n function itemIndexInValue(item: TItem): number {\n const val = get(value);\n const selected: TItem[] = toSelectedArray(val);\n\n if (selected.length === 0)\n return -1;\n\n const itemId = getIdentifier(item);\n return selected.findIndex(selectedItem => getIdentifier(selectedItem) === itemId);\n }\n\n function adjustScrollByHighlightedIndex(): void {\n const index = get(highlightedIndex);\n if (index > -1)\n scrollTo(index);\n }\n\n function updateOpen(open: boolean): void {\n if (!open)\n return;\n\n const val = get(value);\n\n // Set highlighted index to active item\n if ((Array.isArray(val) && val.length > 0) || (val !== null && val !== undefined)) {\n const index = get(options).findIndex(isActiveItem);\n if (index > -1)\n set(highlightedIndex, index);\n }\n\n nextTick(() => adjustScrollByHighlightedIndex());\n }\n\n watch([isOpen, () => toValue(disabled)], ([open, _]) => {\n updateOpen(open);\n });\n\n watch(highlightedIndex, () => adjustScrollByHighlightedIndex());\n\n watch(options, () => {\n set(userNavigated, false);\n if (get(highlightedIndex) !== -1) {\n if (get(autoSelectFirst)) {\n set(highlightedIndex, 0);\n adjustScrollByHighlightedIndex();\n }\n else {\n set(highlightedIndex, -1);\n scrollTo(0);\n }\n }\n else {\n scrollTo(0);\n }\n });\n\n watch(isOpen, (open) => {\n if (!open)\n set(userNavigated, false);\n });\n\n const moveHighlight = (up: boolean): void => {\n if (!get(isOpen)) {\n toggle(true);\n return;\n }\n\n set(userNavigated, true);\n\n let position = get(highlightedIndex);\n const move = up ? -1 : 1;\n\n position += move;\n\n const total = get(options).length;\n\n if (position >= total)\n set(highlightedIndex, 0);\n else if (position < 0)\n set(highlightedIndex, total - 1);\n else set(highlightedIndex, position);\n };\n\n const applyHighlighted = (): void => {\n if (!setValue || !get(isOpen))\n return;\n\n const highlightedIndexVal = get(highlightedIndex);\n if (highlightedIndexVal === -1)\n return;\n\n const entry = get(options)[highlightedIndexVal];\n if (entry !== undefined)\n setValue(entry);\n };\n\n return {\n applyHighlighted,\n containerProps,\n getIdentifier,\n getText,\n highlightedIndex,\n isActiveItem,\n isOpen,\n itemIndexInValue,\n menuWidth,\n moveHighlight,\n optionsWithSelectedHidden: options,\n renderedData,\n toggle,\n userNavigated,\n valueKey,\n wrapperProps,\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dropdown-menu.js","names":[],"sources":["../../src/composables/dropdown-menu.ts"],"sourcesContent":["import type { MaybeRefOrGetter, Ref, TemplateRef } from 'vue';\n\nexport type KeyOfType<T, V> = T extends string | number | boolean | symbol | null | undefined\n ? never\n : V extends object\n ? keyof T\n : keyof {\n [P in keyof T as T[P] extends V ? P : V extends T[P] ? P : never]: any;\n };\n\nexport interface DropdownItemAttr<TValue, TItem> {\n keyAttr?: KeyOfType<TItem, TValue extends Array<infer U> ? U : TValue>;\n textAttr?: keyof TItem | ((item: TItem) => string);\n}\n\nexport interface DropdownOptions<TValue, TItem> {\n options: MaybeRefOrGetter<TItem[]>;\n dense?: MaybeRefOrGetter<boolean>;\n disabled?: MaybeRefOrGetter<boolean>;\n value: Ref<TItem | TItem[] | undefined>;\n menuRef: Ref<HTMLElement> | TemplateRef<HTMLElement>;\n keyAttr?: KeyOfType<TItem, TValue extends Array<infer U> ? U : TValue>;\n textAttr?: keyof TItem | ((item: TItem) => string);\n appendWidth?: number;\n prependWidth?: number;\n itemHeight?: number;\n overscan?: number;\n autoSelectFirst?: boolean;\n setValue?: (val: TItem) => void;\n hideSelected?: boolean;\n isOpen?: Ref<boolean>;\n getText?: (item: TItem) => string | undefined;\n getIdentifier?: (item: TItem) => any;\n}\n\nexport function useDropdownOptionProperty<TValue, TItem>({\n keyAttr,\n textAttr,\n}: DropdownItemAttr<TValue, TItem>) {\n function getText(item: TItem): string | undefined {\n if (textAttr) {\n if (typeof textAttr === 'function')\n return textAttr(item);\n else return item[textAttr]?.toString();\n }\n\n return item?.toString();\n }\n\n function getIdentifier(\n item: TItem,\n ): TItem | TItem[KeyOfType<TItem, TValue extends Array<infer U> ? U : TValue>] {\n if (keyAttr)\n return item[keyAttr];\n\n return item;\n }\n\n return {\n getIdentifier,\n getText,\n };\n}\n\nfunction toSelectedArray<TItem>(val: TItem | TItem[] | undefined): TItem[] {\n if (Array.isArray(val))\n return val;\n if (val !== null && val !== undefined)\n return [val];\n return [];\n}\n\nexport function useDropdownMenu<TValue, TItem>({\n appendWidth,\n autoSelectFirst,\n dense,\n disabled = false,\n getIdentifier: externalGetIdentifier,\n getText: externalGetText,\n hideSelected,\n isOpen: externalIsOpen,\n itemHeight = 48,\n keyAttr,\n menuRef: _menuRef,\n options: allOptions,\n overscan = 5,\n prependWidth,\n setValue,\n textAttr,\n value,\n}: DropdownOptions<TValue, TItem>) {\n const { getIdentifier: defaultGetIdentifier, getText: defaultGetText } = useDropdownOptionProperty({\n keyAttr,\n textAttr,\n });\n\n const getIdentifier = externalGetIdentifier ?? defaultGetIdentifier;\n const getText = externalGetText ?? defaultGetText;\n\n const activeIdentifiers = computed<Set<any>>(() => {\n const val = get(value);\n const selected: TItem[] = toSelectedArray(val);\n const identifiers = new Set<any>();\n for (const item of selected) {\n identifiers.add(getIdentifier(item));\n }\n return identifiers;\n });\n\n function isActiveItem(item: TItem): boolean {\n return get(activeIdentifiers).has(getIdentifier(item));\n }\n\n const options = computed<TItem[]>(() => {\n const options = toValue(allOptions);\n if (!hideSelected)\n return options;\n\n return options.filter(item => !isActiveItem(item));\n });\n\n const { containerProps, list, scrollTo, wrapperProps } = useVirtualList<TItem>(options, {\n itemHeight,\n overscan,\n });\n\n const renderedData = useArrayMap(list, ({ data, index: _index }) => ({ _index, item: data }));\n\n const isOpen = externalIsOpen ?? shallowRef<boolean>(false);\n\n const valueKey = computed(() => {\n const selected = get(value);\n if (!keyAttr || !selected)\n return selected;\n return Array.isArray(selected) ? selected.map(item => item[keyAttr]) : selected[keyAttr];\n });\n\n const highlightedIndex: Ref<number> = ref(get(autoSelectFirst) ? 0 : -1);\n const userNavigated = shallowRef<boolean>(false);\n\n const optionWidthBounds = computed<{ min: number; max: number }>(() => {\n let min = 0;\n let max = 0;\n for (const option of get(options)) {\n const length = getText(option)?.toString()?.length ?? 0;\n if (min === 0 && max === 0) {\n min = length;\n max = length;\n }\n else if (length < min) {\n min = length;\n }\n else if (length > max) {\n max = length;\n }\n }\n return { min, max };\n });\n\n const menuWidth = computed<string>(() => {\n const { min, max } = get(optionWidthBounds);\n const maxWidth = 30;\n const paddingX = 1.5;\n const fontMultiplier = toValue(dense) ? 12 : 13;\n const difference = max - min;\n\n function computeValue(width: number): string {\n const additionalWidths =\n (prependWidth ? prependWidth + 0.5 : 0) + (appendWidth ? appendWidth + 0.5 : 0);\n return `${Math.min((width * fontMultiplier) / 16 + paddingX + additionalWidths, maxWidth)}rem`;\n }\n\n if (difference <= 5)\n return computeValue(max);\n\n return computeValue(min + difference / 2);\n });\n\n function toggle(state: boolean = false): void {\n set(isOpen, state);\n }\n\n function itemIndexInValue(item: TItem): number {\n const val = get(value);\n const selected: TItem[] = toSelectedArray(val);\n\n if (selected.length === 0)\n return -1;\n\n const itemId = getIdentifier(item);\n return selected.findIndex(selectedItem => getIdentifier(selectedItem) === itemId);\n }\n\n function scrollHighlightedIntoView(): void {\n get(_menuRef)\n ?.querySelector<HTMLElement>('[data-highlighted=\"true\"]')\n ?.scrollIntoView({ block: 'nearest' });\n }\n\n async function adjustScrollByHighlightedIndex(): Promise<void> {\n const index = get(highlightedIndex);\n if (index === -1)\n return;\n\n await nextTick();\n if (get(_menuRef)?.querySelector('[data-highlighted=\"true\"]')) {\n scrollHighlightedIntoView();\n return;\n }\n\n // Highlighted item is outside the virtual list's rendered window —\n // kick the virtual scroll to render it, then nudge it fully into view.\n scrollTo(index);\n await nextTick();\n scrollHighlightedIntoView();\n }\n\n async function updateOpen(open: boolean): Promise<void> {\n if (!open)\n return;\n\n const val = get(value);\n\n // Set highlighted index to active item\n if ((Array.isArray(val) && val.length > 0) || (val !== null && val !== undefined)) {\n const index = get(options).findIndex(isActiveItem);\n if (index > -1)\n set(highlightedIndex, index);\n }\n\n await adjustScrollByHighlightedIndex();\n }\n\n watch([isOpen, () => toValue(disabled)], async ([open, _]) => {\n await updateOpen(open);\n });\n\n watch(highlightedIndex, async () => {\n await adjustScrollByHighlightedIndex();\n });\n\n watch(options, async () => {\n set(userNavigated, false);\n if (get(highlightedIndex) !== -1) {\n if (get(autoSelectFirst)) {\n set(highlightedIndex, 0);\n await adjustScrollByHighlightedIndex();\n }\n else {\n set(highlightedIndex, -1);\n scrollTo(0);\n }\n }\n else {\n scrollTo(0);\n }\n });\n\n watch(isOpen, (open) => {\n if (!open)\n set(userNavigated, false);\n });\n\n const moveHighlight = (up: boolean): void => {\n if (!get(isOpen)) {\n toggle(true);\n return;\n }\n\n set(userNavigated, true);\n\n let position = get(highlightedIndex);\n const move = up ? -1 : 1;\n\n position += move;\n\n const total = get(options).length;\n\n if (position >= total)\n set(highlightedIndex, 0);\n else if (position < 0)\n set(highlightedIndex, total - 1);\n else set(highlightedIndex, position);\n };\n\n const applyHighlighted = (): void => {\n if (!setValue || !get(isOpen))\n return;\n\n const highlightedIndexVal = get(highlightedIndex);\n if (highlightedIndexVal === -1)\n return;\n\n const entry = get(options)[highlightedIndexVal];\n if (entry !== undefined)\n setValue(entry);\n };\n\n return {\n applyHighlighted,\n containerProps,\n getIdentifier,\n getText,\n highlightedIndex,\n isActiveItem,\n isOpen,\n itemIndexInValue,\n menuWidth,\n moveHighlight,\n optionsWithSelectedHidden: options,\n renderedData,\n toggle,\n userNavigated,\n valueKey,\n wrapperProps,\n };\n}\n"],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -30,6 +30,7 @@ import RuiTooltip_default from "./components/overlays/tooltip/RuiTooltip.js";
|
|
|
30
30
|
import RuiTextField_default from "./components/forms/text-field/RuiTextField.js";
|
|
31
31
|
import RuiColorPicker_default from "./components/color-picker/RuiColorPicker.js";
|
|
32
32
|
import RuiAutoComplete_default from "./components/forms/auto-complete/RuiAutoComplete.js";
|
|
33
|
+
import RuiTimezoneSelect_default from "./components/date-time-picker/RuiTimezoneSelect.js";
|
|
33
34
|
import RuiTimePicker_default from "./components/time-picker/RuiTimePicker.js";
|
|
34
35
|
import { translationKeys } from "./i18n/keys.js";
|
|
35
36
|
import RuiDateTimePicker_default from "./components/date-time-picker/RuiDateTimePicker.js";
|
|
@@ -94,6 +95,6 @@ function createRuiI8nPlugin(i18nInstance) {
|
|
|
94
95
|
} };
|
|
95
96
|
}
|
|
96
97
|
//#endregion
|
|
97
|
-
export { LuAArrowDown, LuAArrowUp, LuALargeSmall, LuAccessibility, LuActivatePremium, LuActivity, LuAirVent, LuAirplay, LuAlarmClock, LuAlarmClockCheck, LuAlarmClockMinus, LuAlarmClockOff, LuAlarmClockPlus, LuAlarmSmoke, LuAlbum, LuAlignCenterHorizontal, LuAlignCenterVertical, LuAlignEndHorizontal, LuAlignEndVertical, LuAlignHorizontalDistributeCenter, LuAlignHorizontalDistributeEnd, LuAlignHorizontalDistributeStart, LuAlignHorizontalJustifyCenter, LuAlignHorizontalJustifyEnd, LuAlignHorizontalJustifyStart, LuAlignHorizontalSpaceAround, LuAlignHorizontalSpaceBetween, LuAlignStartHorizontal, LuAlignStartVertical, LuAlignVerticalDistributeCenter, LuAlignVerticalDistributeEnd, LuAlignVerticalDistributeStart, LuAlignVerticalJustifyCenter, LuAlignVerticalJustifyEnd, LuAlignVerticalJustifyStart, LuAlignVerticalSpaceAround, LuAlignVerticalSpaceBetween, LuAmbulance, LuAmpersand, LuAmpersands, LuAmphora, LuAnchor, LuAngry, LuAnnoyed, LuAntenna, LuAnvil, LuAperture, LuAppWindow, LuAppWindowMac, LuApple, LuArchive, LuArchiveRestore, LuArchiveX, LuArmchair, LuArrowBigDown, LuArrowBigDownDash, LuArrowBigLeft, LuArrowBigLeftDash, LuArrowBigRight, LuArrowBigRightDash, LuArrowBigUp, LuArrowBigUpDash, LuArrowDown, LuArrowDown01, LuArrowDown10, LuArrowDownAZ, LuArrowDownFromLine, LuArrowDownLeft, LuArrowDownNarrowWide, LuArrowDownRight, LuArrowDownToDot, LuArrowDownToLine, LuArrowDownUp, LuArrowDownWideNarrow, LuArrowDownZA, LuArrowLeft, LuArrowLeftFromLine, LuArrowLeftRight, LuArrowLeftToLine, LuArrowRight, LuArrowRightFromLine, LuArrowRightLeft, LuArrowRightToLine, LuArrowUp, LuArrowUp01, LuArrowUp10, LuArrowUpAZ, LuArrowUpDown, LuArrowUpFromDot, LuArrowUpFromLine, LuArrowUpLeft, LuArrowUpNarrowWide, LuArrowUpRight, LuArrowUpToLine, LuArrowUpWideNarrow, LuArrowUpZA, LuArrowsUpFromLine, LuAsterisk, LuAtSign, LuAtom, LuAudioLines, LuAudioWaveform, LuAward, LuAxe, LuAxis3d, LuBaby, LuBackpack, LuBadge, LuBadgeAlert, LuBadgeCent, LuBadgeCheck, LuBadgeDollarSign, LuBadgeEuro, LuBadgeIndianRupee, LuBadgeInfo, LuBadgeJapaneseYen, LuBadgeMinus, LuBadgePercent, LuBadgePlus, LuBadgePoundSterling, LuBadgeQuestionMark, LuBadgeRussianRuble, LuBadgeSwissFranc, LuBadgeTurkishLira, LuBadgeX, LuBaggageClaim, LuBalances, LuBalloon, LuBan, LuBanana, LuBandage, LuBanknote, LuBanknoteArrowDown, LuBanknoteArrowUp, LuBanknoteX, LuBarcode, LuBarrel, LuBaseline, LuBath, LuBattery, LuBatteryCharging, LuBatteryFull, LuBatteryLow, LuBatteryMedium, LuBatteryPlus, LuBatteryWarning, LuBeaker, LuBean, LuBeanOff, LuBed, LuBedDouble, LuBedSingle, LuBeef, LuBeer, LuBeerOff, LuBell, LuBellDot, LuBellElectric, LuBellMinus, LuBellOff, LuBellPlus, LuBellRing, LuBetweenHorizontalEnd, LuBetweenHorizontalStart, LuBetweenVerticalEnd, LuBetweenVerticalStart, LuBicepsFlexed, LuBike, LuBinary, LuBinoculars, LuBiohazard, LuBird, LuBirdhouse, LuBitcoin, LuBitcoinAccounts, LuBlend, LuBlinds, LuBlockchain, LuBlocks, LuBluetooth, LuBluetoothConnected, LuBluetoothOff, LuBluetoothSearching, LuBold, LuBolt, LuBomb, LuBone, LuBook, LuBookA, LuBookAlert, LuBookAudio, LuBookCheck, LuBookCopy, LuBookDashed, LuBookDown, LuBookHeadphones, LuBookHeart, LuBookImage, LuBookKey, LuBookLock, LuBookMarked, LuBookMinus, LuBookOpen, LuBookOpenCheck, LuBookOpenText, LuBookPlus, LuBookSearch, LuBookText, LuBookType, LuBookUp, LuBookUp2, LuBookUser, LuBookX, LuBookmark, LuBookmarkCheck, LuBookmarkMinus, LuBookmarkPlus, LuBookmarkX, LuBoomBox, LuBot, LuBotMessageSquare, LuBotOff, LuBottleWine, LuBowArrow, LuBox, LuBoxes, LuBraces, LuBrackets, LuBrain, LuBrainCircuit, LuBrainCog, LuBrickWall, LuBrickWallFire, LuBrickWallShield, LuBriefcase, LuBriefcaseBusiness, LuBriefcaseConveyorBelt, LuBriefcaseMedical, LuBringToFront, LuBrush, LuBrushCleaning, LuBubbles, LuBug, LuBugOff, LuBugPlay, LuBuilding, LuBuilding2, LuBus, LuBusFront, LuCable, LuCableCar, LuCake, LuCakeSlice, LuCalculator, LuCalendar, LuCalendar1, LuCalendarArrowDown, LuCalendarArrowUp, LuCalendarCheck, LuCalendarCheck2, LuCalendarClock, LuCalendarCog, LuCalendarDays, LuCalendarFold, LuCalendarHeart, LuCalendarMinus, LuCalendarMinus2, LuCalendarOff, LuCalendarPlus, LuCalendarPlus2, LuCalendarRange, LuCalendarSearch, LuCalendarSync, LuCalendarX, LuCalendarX2, LuCalendars, LuCamera, LuCameraOff, LuCandy, LuCandyCane, LuCandyOff, LuCannabis, LuCannabisOff, LuCaptions, LuCaptionsOff, LuCar, LuCarFront, LuCarTaxiFront, LuCaravan, LuCardSim, LuCarrot, LuCaseLower, LuCaseSensitive, LuCaseUpper, LuCassetteTape, LuCast, LuCastle, LuCat, LuCctv, LuChartArea, LuChartBar, LuChartBarBig, LuChartBarDecreasing, LuChartBarIncreasing, LuChartBarStacked, LuChartCandlestick, LuChartColumn, LuChartColumnBig, LuChartColumnDecreasing, LuChartColumnIncreasing, LuChartColumnStacked, LuChartGantt, LuChartLine, LuChartNetwork, LuChartNoAxesColumn, LuChartNoAxesColumnDecreasing, LuChartNoAxesColumnIncreasing, LuChartNoAxesCombined, LuChartNoAxesGantt, LuChartPie, LuChartScatter, LuChartSpline, LuCheck, LuCheckCheck, LuCheckLine, LuCheckboxBlank, LuCheckboxBlankCircle, LuCheckboxBlankCircleFill, LuCheckboxFill, LuCheckboxIndeterminateFill, LuChefHat, LuCherry, LuChessBishop, LuChessKing, LuChessKnight, LuChessPawn, LuChessQueen, LuChessRook, LuChevronDown, LuChevronFirst, LuChevronLast, LuChevronLeft, LuChevronRight, LuChevronUp, LuChevronsDown, LuChevronsDownUp, LuChevronsLeft, LuChevronsLeftRight, LuChevronsLeftRightEllipsis, LuChevronsRight, LuChevronsRightLeft, LuChevronsUp, LuChevronsUpDown, LuChromium, LuChurch, LuCigarette, LuCigaretteOff, LuCircle, LuCircleAlert, LuCircleArrowDown, LuCircleArrowLeft, LuCircleArrowOutDownLeft, LuCircleArrowOutDownRight, LuCircleArrowOutUpLeft, LuCircleArrowOutUpRight, LuCircleArrowRight, LuCircleArrowUp, LuCircleCheck, LuCircleCheckBig, LuCircleChevronDown, LuCircleChevronLeft, LuCircleChevronRight, LuCircleChevronUp, LuCircleDashed, LuCircleDivide, LuCircleDollarSign, LuCircleDot, LuCircleDotDashed, LuCircleEllipsis, LuCircleEqual, LuCircleFadingArrowUp, LuCircleFadingPlus, LuCircleGauge, LuCircleMinus, LuCircleOff, LuCircleParking, LuCircleParkingOff, LuCirclePause, LuCirclePercent, LuCirclePile, LuCirclePlay, LuCirclePlus, LuCirclePoundSterling, LuCirclePower, LuCircleQuestionMark, LuCircleSlash, LuCircleSlash2, LuCircleSmall, LuCircleStar, LuCircleStop, LuCircleUser, LuCircleUserRound, LuCircleX, LuCircuitBoard, LuCitrus, LuClapperboard, LuClipboard, LuClipboardCheck, LuClipboardClock, LuClipboardCopy, LuClipboardList, LuClipboardMinus, LuClipboardPaste, LuClipboardPen, LuClipboardPenLine, LuClipboardPlus, LuClipboardType, LuClipboardX, LuClock, LuClock1, LuClock10, LuClock11, LuClock12, LuClock2, LuClock3, LuClock4, LuClock5, LuClock6, LuClock7, LuClock8, LuClock9, LuClockAlert, LuClockArrowDown, LuClockArrowUp, LuClockCheck, LuClockFading, LuClockPlus, LuClosedCaption, LuCloud, LuCloudAlert, LuCloudBackup, LuCloudCheck, LuCloudCog, LuCloudDownload, LuCloudDownload2Fill, LuCloudDownloadFill, LuCloudDrizzle, LuCloudFill, LuCloudFog, LuCloudHail, LuCloudLightning, LuCloudMoon, LuCloudMoonRain, LuCloudOff, LuCloudOffFill, LuCloudRain, LuCloudRainWind, LuCloudSnow, LuCloudSun, LuCloudSunRain, LuCloudSync, LuCloudSyncFill, LuCloudUpload, LuCloudUpload2Fill, LuCloudUploadFill, LuCloudy, LuClover, LuClub, LuCode, LuCodeXml, LuCodepen, LuCodesandbox, LuCoffee, LuCog, LuCoins, LuCoinsExchange, LuColumns2, LuColumns3, LuColumns3Cog, LuColumns4, LuCombine, LuCommand, LuCompass, LuComponent, LuComputer, LuConciergeBell, LuCone, LuConstruction, LuContact, LuContactRound, LuContainer, LuContrast, LuCookie, LuCookingPot, LuCopy, LuCopyCheck, LuCopyMinus, LuCopyPlus, LuCopySlash, LuCopyX, LuCopyleft, LuCopyright, LuCornerDownLeft, LuCornerDownRight, LuCornerLeftDown, LuCornerLeftUp, LuCornerRightDown, LuCornerRightUp, LuCornerUpLeft, LuCornerUpRight, LuCpu, LuCreativeCommons, LuCreditCard, LuCroissant, LuCrop, LuCross, LuCrosshair, LuCrown, LuCuboid, LuCupSoda, LuCurrency, LuCustomAssets, LuCylinder, LuDam, LuDatabase, LuDatabaseBackup, LuDatabaseSearch, LuDatabaseZap, LuDecimalsArrowLeft, LuDecimalsArrowRight, LuDelete, LuDeposits, LuDessert, LuDiameter, LuDiamond, LuDiamondMinus, LuDiamondPercent, LuDiamondPlus, LuDice1, LuDice2, LuDice3, LuDice4, LuDice5, LuDice6, LuDices, LuDiff, LuDisc, LuDisc2, LuDisc3, LuDiscAlbum, LuDiscord, LuDivide, LuDna, LuDnaOff, LuDock, LuDog, LuDollarSign, LuDonateFill, LuDonut, LuDoorClosed, LuDoorClosedLocked, LuDoorOpen, LuDot, LuDownload, LuDraftingCompass, LuDrama, LuDribbble, LuDrill, LuDrone, LuDroplet, LuDropletFill, LuDropletHalfFill, LuDropletOff, LuDropletTrendingDown, LuDroplets, LuDrum, LuDrumstick, LuDumbbell, LuEar, LuEarOff, LuEarth, LuEarthLock, LuEclipse, LuEgg, LuEggFried, LuEggOff, LuEllipse, LuEllipsis, LuEllipsisVertical, LuEqual, LuEqualApproximately, LuEqualNot, LuEraser, LuEthernetPort, LuEuro, LuEvCharger, LuEvmAccounts, LuExpand, LuExport, LuExternalLink, LuEye, LuEyeClosed, LuEyeOff, LuEyeSemiOff, LuFacebook, LuFactory, LuFan, LuFastForward, LuFeather, LuFence, LuFerrisWheel, LuFigma, LuFile, LuFileArchive, LuFileAxis3d, LuFileBadge, LuFileBox, LuFileBraces, LuFileBracesCorner, LuFileChartColumn, LuFileChartColumnIncreasing, LuFileChartLine, LuFileChartPie, LuFileCheck, LuFileCheckCorner, LuFileClock, LuFileCode, LuFileCodeCorner, LuFileCog, LuFileDiff, LuFileDigit, LuFileDown, LuFileExclamationPoint, LuFileHeadphone, LuFileHeart, LuFileImage, LuFileInput, LuFileKey, LuFileLock, LuFileMinus, LuFileMinusCorner, LuFileMusic, LuFileOutput, LuFilePen, LuFilePenLine, LuFilePlay, LuFilePlus, LuFilePlusCorner, LuFileQuestionMark, LuFileScan, LuFileSearch, LuFileSearchCorner, LuFileSignal, LuFileSliders, LuFileSpreadsheet, LuFileStack, LuFileSymlink, LuFileTerminal, LuFileText, LuFileType, LuFileTypeCorner, LuFileUp, LuFileUser, LuFileVideoCamera, LuFileVolume, LuFileX, LuFileXCorner, LuFiles, LuFilm, LuFingerprintPattern, LuFireExtinguisher, LuFish, LuFishOff, LuFishSymbol, LuFishingHook, LuFishingRod, LuFlag, LuFlagOff, LuFlagTriangleLeft, LuFlagTriangleRight, LuFlame, LuFlameKindling, LuFlashlight, LuFlashlightOff, LuFlaskConical, LuFlaskConicalOff, LuFlaskRound, LuFlipHorizontal2, LuFlipVertical2, LuFlower, LuFlower2, LuFocus, LuFoldHorizontal, LuFoldVertical, LuFolder, LuFolderArchive, LuFolderCheck, LuFolderClock, LuFolderClosed, LuFolderCode, LuFolderCog, LuFolderDot, LuFolderDown, LuFolderGit, LuFolderGit2, LuFolderHeart, LuFolderInput, LuFolderKanban, LuFolderKey, LuFolderLock, LuFolderMinus, LuFolderOpen, LuFolderOpenDot, LuFolderOutput, LuFolderPen, LuFolderPlus, LuFolderRoot, LuFolderSearch, LuFolderSearch2, LuFolderShrink1, LuFolderShrink2, LuFolderSymlink, LuFolderSync, LuFolderTree, LuFolderUp, LuFolderX, LuFolders, LuFootprints, LuForklift, LuForm, LuForward, LuFrame, LuFramer, LuFrown, LuFuel, LuFullscreen, LuFunnel, LuFunnelPlus, LuFunnelX, LuGalleryHorizontal, LuGalleryHorizontalEnd, LuGalleryThumbnails, LuGalleryVertical, LuGalleryVerticalEnd, LuGamepad, LuGamepad2, LuGamepadDirectional, LuGauge, LuGavel, LuGem, LuGeorgianLari, LuGhost, LuGift, LuGitBranch, LuGitBranchMinus, LuGitBranchPlus, LuGitCommitHorizontal, LuGitCommitVertical, LuGitCompare, LuGitCompareArrows, LuGitFork, LuGitGraph, LuGitMerge, LuGitMergeConflict, LuGitPullRequest, LuGitPullRequestArrow, LuGitPullRequestClosed, LuGitPullRequestCreate, LuGitPullRequestCreateArrow, LuGitPullRequestDraft, LuGithub, LuGitlab, LuGlassWater, LuGlasses, LuGlobe, LuGlobeLock, LuGlobeOff, LuGlobeX, LuGoal, LuGpu, LuGraduationCap, LuGrape, LuGrid2x2, LuGrid2x2Check, LuGrid2x2Plus, LuGrid2x2X, LuGrid3x2, LuGrid3x3, LuGrip, LuGripHorizontal, LuGripVertical, LuGroup, LuGuitar, LuHam, LuHamburger, LuHammer, LuHand, LuHandCoins, LuHandFist, LuHandGrab, LuHandHeart, LuHandHelping, LuHandMetal, LuHandPlatter, LuHandbag, LuHandshake, LuHardDrive, LuHardDriveDownload, LuHardDriveUpload, LuHardHat, LuHash, LuHatGlasses, LuHaze, LuHd, LuHdmiPort, LuHeading, LuHeading1, LuHeading2, LuHeading3, LuHeading4, LuHeading5, LuHeading6, LuHeadphoneOff, LuHeadphones, LuHeadset, LuHeart, LuHeartCrack, LuHeartHandshake, LuHeartMinus, LuHeartOff, LuHeartPlus, LuHeartPulse, LuHeater, LuHelicopter, LuHexagon, LuHighlighter, LuHistoricPrices, LuHistory, LuHistoryEventsFill, LuHop, LuHopOff, LuHospital, LuHotel, LuHourglass, LuHouse, LuHouseHeart, LuHousePlug, LuHousePlus, LuHouseWifi, LuIceCreamBowl, LuIceCreamCone, LuIdCard, LuIdCardLanyard, LuImage, LuImageDown, LuImageMinus, LuImageOff, LuImagePlay, LuImagePlus, LuImageUp, LuImageUpscale, LuImages, LuImport, LuInbox, LuIndianRupee, LuInfinity, LuInfo, LuInspectionPanel, LuInstagram, LuItalic, LuIterationCcw, LuIterationCw, LuJapaneseYen, LuJoystick, LuKanban, LuKayak, LuKey, LuKeyRound, LuKeySquare, LuKeyboard, LuKeyboardMusic, LuKeyboardOff, LuLamp, LuLampCeiling, LuLampDesk, LuLampFloor, LuLampWallDown, LuLampWallUp, LuLandPlot, LuLandmark, LuLanguages, LuLaptop, LuLaptopMinimal, LuLaptopMinimalCheck, LuLasso, LuLassoSelect, LuLatestPrices, LuLaugh, LuLayers, LuLayers2, LuLayersIn, LuLayersOut, LuLayersPlus, LuLayoutDashboard, LuLayoutGrid, LuLayoutList, LuLayoutPanelLeft, LuLayoutPanelTop, LuLayoutTemplate, LuLeaf, LuLeafyGreen, LuLectern, LuLensConcave, LuLensConvex, LuLiabilities, LuLibrary, LuLibraryBig, LuLifeBuoy, LuLigature, LuLightbulb, LuLightbulbOff, LuLineDotRightHorizontal, LuLineSquiggle, LuLink, LuLink2, LuLink2Off, LuLinkedin, LuList, LuListCheck, LuListChecks, LuListChevronsDownUp, LuListChevronsUpDown, LuListCollapse, LuListEnd, LuListFilter, LuListFilterPlus, LuListIndentDecrease, LuListIndentIncrease, LuListMinus, LuListMusic, LuListOrdered, LuListPlus, LuListRestart, LuListStart, LuListTodo, LuListTree, LuListVideo, LuListX, LuLoader, LuLoaderCircle, LuLoaderPinwheel, LuLocate, LuLocateFixed, LuLocateOff, LuLock, LuLockKeyhole, LuLockKeyholeOpen, LuLockOpen, LuLogIn, LuLogOut, LuLogs, LuLollipop, LuLuggage, LuMagnet, LuMail, LuMailCheck, LuMailMinus, LuMailOpen, LuMailPlus, LuMailQuestionMark, LuMailSearch, LuMailWarning, LuMailX, LuMailbox, LuMails, LuManageAssets, LuManagePrices, LuManualBalances, LuMap, LuMapMinus, LuMapPin, LuMapPinCheck, LuMapPinCheckInside, LuMapPinHouse, LuMapPinMinus, LuMapPinMinusInside, LuMapPinOff, LuMapPinPen, LuMapPinPlus, LuMapPinPlusInside, LuMapPinX, LuMapPinXInside, LuMapPinned, LuMapPlus, LuMars, LuMarsStroke, LuMartini, LuMaximize, LuMaximize2, LuMedal, LuMegaphone, LuMegaphoneOff, LuMeh, LuMemoryStick, LuMenu, LuMerge, LuMessageCircle, LuMessageCircleCheck, LuMessageCircleCode, LuMessageCircleDashed, LuMessageCircleHeart, LuMessageCircleMore, LuMessageCircleOff, LuMessageCirclePlus, LuMessageCircleQuestionMark, LuMessageCircleReply, LuMessageCircleWarning, LuMessageCircleX, LuMessageSquare, LuMessageSquareCheck, LuMessageSquareCode, LuMessageSquareDashed, LuMessageSquareDiff, LuMessageSquareDot, LuMessageSquareHeart, LuMessageSquareLock, LuMessageSquareMore, LuMessageSquareOff, LuMessageSquarePlus, LuMessageSquareQuote, LuMessageSquareReply, LuMessageSquareShare, LuMessageSquareText, LuMessageSquareWarning, LuMessageSquareX, LuMessagesSquare, LuMetronome, LuMic, LuMicOff, LuMicVocal, LuMicrochip, LuMicroscope, LuMicrowave, LuMilestone, LuMilk, LuMilkOff, LuMinimize, LuMinimize2, LuMinus, LuMirrorRectangular, LuMirrorRound, LuMonitor, LuMonitorCheck, LuMonitorCloud, LuMonitorCog, LuMonitorDot, LuMonitorDown, LuMonitorOff, LuMonitorPause, LuMonitorPlay, LuMonitorSmartphone, LuMonitorSpeaker, LuMonitorStop, LuMonitorUp, LuMonitorX, LuMoon, LuMoonStar, LuMoreAssets, LuMotorbike, LuMountain, LuMountainSnow, LuMouse, LuMouseLeft, LuMouseOff, LuMousePointer, LuMousePointer2, LuMousePointer2Off, LuMousePointerBan, LuMousePointerClick, LuMouseRight, LuMove, LuMove3d, LuMoveDiagonal, LuMoveDiagonal2, LuMoveDown, LuMoveDownLeft, LuMoveDownRight, LuMoveHorizontal, LuMoveLeft, LuMoveRight, LuMoveUp, LuMoveUpLeft, LuMoveUpRight, LuMoveVertical, LuMusic, LuMusic2, LuMusic3, LuMusic4, LuNavigation, LuNavigation2, LuNavigation2Off, LuNavigationOff, LuNetwork, LuNewspaper, LuNfc, LuNonBinary, LuNotebook, LuNotebookPen, LuNotebookTabs, LuNotebookText, LuNotepadText, LuNotepadTextDashed, LuNut, LuNutOff, LuOctagon, LuOctagonAlert, LuOctagonMinus, LuOctagonPause, LuOctagonX, LuOmega, LuOnchain, LuOption, LuOrbit, LuOrigami, LuOsApple, LuOsWindows, LuPackage, LuPackage2, LuPackageCheck, LuPackageMinus, LuPackageOpen, LuPackagePlus, LuPackageSearch, LuPackageX, LuPaintBucket, LuPaintRoller, LuPaintbrush, LuPaintbrushVertical, LuPalette, LuPanda, LuPanelBottom, LuPanelBottomClose, LuPanelBottomDashed, LuPanelBottomOpen, LuPanelLeft, LuPanelLeftClose, LuPanelLeftDashed, LuPanelLeftOpen, LuPanelLeftRightDashed, LuPanelRight, LuPanelRightClose, LuPanelRightDashed, LuPanelRightOpen, LuPanelTop, LuPanelTopBottomDashed, LuPanelTopClose, LuPanelTopDashed, LuPanelTopOpen, LuPanelsLeftBottom, LuPanelsRightBottom, LuPanelsTopLeft, LuPaperclip, LuParentheses, LuParkingMeter, LuPartyPopper, LuPause, LuPawPrint, LuPaypal, LuPcCase, LuPen, LuPenLine, LuPenOff, LuPenTool, LuPencil, LuPencilLine, LuPencilOff, LuPencilRuler, LuPentagon, LuPercent, LuPersonStanding, LuPhilippinePeso, LuPhone, LuPhoneCall, LuPhoneForwarded, LuPhoneIncoming, LuPhoneMissed, LuPhoneOff, LuPhoneOutgoing, LuPi, LuPiano, LuPickaxe, LuPictureInPicture, LuPictureInPicture2, LuPiggyBank, LuPilcrow, LuPilcrowLeft, LuPilcrowRight, LuPill, LuPillBottle, LuPin, LuPinOff, LuPipette, LuPizza, LuPlane, LuPlaneLanding, LuPlaneTakeoff, LuPlay, LuPlug, LuPlug2, LuPlugZap, LuPlus, LuPocket, LuPocketKnife, LuPodcast, LuPointer, LuPointerOff, LuPopcorn, LuPopsicle, LuPoundSterling, LuPower, LuPowerOff, LuPresentation, LuPrinter, LuPrinterCheck, LuPrinterX, LuProjector, LuProportions, LuPuzzle, LuPyramid, LuQrCode, LuQuote, LuRabbit, LuRadar, LuRadiation, LuRadical, LuRadio, LuRadioButtonFill, LuRadioReceiver, LuRadioTower, LuRadius, LuRailSymbol, LuRainbow, LuRat, LuRatio, LuReceipt, LuReceiptCent, LuReceiptEuro, LuReceiptIndianRupee, LuReceiptJapaneseYen, LuReceiptPoundSterling, LuReceiptRussianRuble, LuReceiptSwissFranc, LuReceiptText, LuReceiptTurkishLira, LuReceiveDonationFill, LuRectangleCircle, LuRectangleEllipsis, LuRectangleGoggles, LuRectangleHorizontal, LuRectangleVertical, LuRecycle, LuReddit, LuRedo, LuRedo2, LuRedoDot, LuRefreshCcw, LuRefreshCcwDot, LuRefreshCw, LuRefreshCwOff, LuRefrigerator, LuRefund, LuRegex, LuRemoveFormatting, LuRepeat, LuRepeat1, LuRepeat2, LuReplace, LuReplaceAll, LuReply, LuReplyAll, LuRewind, LuRibbon, LuRocket, LuRockingChair, LuRollerCoaster, LuRose, LuRotate3d, LuRotateCcw, LuRotateCcwKey, LuRotateCcwSquare, LuRotateCw, LuRotateCwSquare, LuRoute, LuRouteOff, LuRouter, LuRows2, LuRows3, LuRows4, LuRss, LuRuler, LuRulerDimensionLine, LuRussianRuble, LuSailboat, LuSalad, LuSandwich, LuSatellite, LuSatelliteDish, LuSaudiRiyal, LuSave, LuSaveAll, LuSaveOff, LuScale, LuScale3d, LuScaling, LuScan, LuScanBarcode, LuScanEye, LuScanFace, LuScanHeart, LuScanLine, LuScanQrCode, LuScanSearch, LuScanText, LuSchool, LuScissors, LuScissorsLineDashed, LuScooter, LuScreenShare, LuScreenShareOff, LuScroll, LuScrollText, LuSearch, LuSearchAlert, LuSearchCheck, LuSearchCode, LuSearchSlash, LuSearchX, LuSection, LuSend, LuSendHorizontal, LuSendToBack, LuSeparatorHorizontal, LuSeparatorVertical, LuServer, LuServerCog, LuServerCrash, LuServerOff, LuSettings, LuSettings2, LuShapes, LuShare, LuShare2, LuSheet, LuShell, LuShelvingUnit, LuShield, LuShieldAlert, LuShieldBan, LuShieldCheck, LuShieldEllipsis, LuShieldHalf, LuShieldMinus, LuShieldOff, LuShieldPlus, LuShieldQuestionMark, LuShieldUser, LuShieldX, LuShip, LuShipWheel, LuShirt, LuShoppingBag, LuShoppingBasket, LuShoppingCart, LuShovel, LuShowerHead, LuShredder, LuShrimp, LuShrink, LuShrub, LuShuffle, LuSigma, LuSignal, LuSignalHigh, LuSignalLow, LuSignalMedium, LuSignalZero, LuSignature, LuSignpost, LuSignpostBig, LuSiren, LuSkipBack, LuSkipForward, LuSkull, LuSlack, LuSlash, LuSlashDivider, LuSlice, LuSlidersHorizontal, LuSlidersVertical, LuSmartphone, LuSmartphoneCharging, LuSmartphoneNfc, LuSmile, LuSmilePlus, LuSnail, LuSnowflake, LuSoapDispenserDroplet, LuSofa, LuSolanaAccountsFill, LuSolarPanel, LuSoup, LuSpace, LuSpade, LuSparkle, LuSparkles, LuSpeaker, LuSpeech, LuSpellCheck, LuSpellCheck2, LuSpline, LuSplinePointer, LuSplit, LuSpool, LuSpotlight, LuSprayCan, LuSprout, LuSquare, LuSquareActivity, LuSquareArrowDown, LuSquareArrowDownLeft, LuSquareArrowDownRight, LuSquareArrowLeft, LuSquareArrowOutDownLeft, LuSquareArrowOutDownRight, LuSquareArrowOutUpLeft, LuSquareArrowOutUpRight, LuSquareArrowRight, LuSquareArrowRightEnter, LuSquareArrowRightExit, LuSquareArrowUp, LuSquareArrowUpLeft, LuSquareArrowUpRight, LuSquareAsterisk, LuSquareBottomDashedScissors, LuSquareCenterlineDashedHorizontal, LuSquareCenterlineDashedVertical, LuSquareChartGantt, LuSquareCheck, LuSquareCheckBig, LuSquareChevronDown, LuSquareChevronLeft, LuSquareChevronRight, LuSquareChevronUp, LuSquareCode, LuSquareDashed, LuSquareDashedBottom, LuSquareDashedBottomCode, LuSquareDashedKanban, LuSquareDashedMousePointer, LuSquareDashedTopSolid, LuSquareDivide, LuSquareDot, LuSquareEqual, LuSquareFunction, LuSquareKanban, LuSquareLibrary, LuSquareM, LuSquareMenu, LuSquareMinus, LuSquareMousePointer, LuSquareParking, LuSquareParkingOff, LuSquarePause, LuSquarePen, LuSquarePercent, LuSquarePi, LuSquarePilcrow, LuSquarePlay, LuSquarePlus, LuSquarePower, LuSquareRadical, LuSquareRoundCorner, LuSquareScissors, LuSquareSigma, LuSquareSlash, LuSquareSplitHorizontal, LuSquareSplitVertical, LuSquareSquare, LuSquareStack, LuSquareStar, LuSquareStop, LuSquareTerminal, LuSquareUser, LuSquareUserRound, LuSquareX, LuSquaresExclude, LuSquaresIntersect, LuSquaresSubtract, LuSquaresUnite, LuSquircle, LuSquircleDashed, LuSquirrel, LuStamp, LuStar, LuStarHalf, LuStarOff, LuStepBack, LuStepForward, LuStethoscope, LuSticker, LuStickyNote, LuStone, LuStore, LuStretchHorizontal, LuStretchVertical, LuStrikethrough, LuSubscript, LuSubstrateAccounts, LuSun, LuSunDim, LuSunMedium, LuSunMoon, LuSunSnow, LuSunrise, LuSunset, LuSuperscript, LuSwatchBook, LuSwissFranc, LuSwitchCamera, LuSword, LuSwords, LuSyringe, LuTable, LuTable2, LuTableCellsMerge, LuTableCellsSplit, LuTableColumnsSplit, LuTableOfContents, LuTableProperties, LuTableRowsSplit, LuTablet, LuTabletSmartphone, LuTablets, LuTag, LuTagManager, LuTags, LuTally1, LuTally2, LuTally3, LuTally4, LuTally5, LuTangent, LuTarget, LuTelescope, LuTent, LuTentTree, LuTerminal, LuTestTube, LuTestTubeDiagonal, LuTestTubes, LuTextAlignCenter, LuTextAlignEnd, LuTextAlignJustify, LuTextAlignStart, LuTextCursor, LuTextCursorInput, LuTextInitial, LuTextQuote, LuTextSearch, LuTextSelect, LuTextWrap, LuTheater, LuThermometer, LuThermometerSnowflake, LuThermometerSun, LuThumbsDown, LuThumbsUp, LuTicket, LuTicketCheck, LuTicketMinus, LuTicketPercent, LuTicketPlus, LuTicketSlash, LuTicketX, LuTickets, LuTicketsPlane, LuTimer, LuTimerOff, LuTimerReset, LuToggleLeft, LuToggleRight, LuToilet, LuToolCase, LuToolbox, LuTornado, LuTorus, LuTouchpad, LuTouchpadOff, LuTowelRack, LuTowerControl, LuToyBrick, LuTractor, LuTrafficCone, LuTrainFront, LuTrainFrontTunnel, LuTrainTrack, LuTramFront, LuTransgender, LuTrash, LuTrash2, LuTreeDeciduous, LuTreePalm, LuTreePine, LuTrees, LuTrello, LuTrendingDown, LuTrendingUp, LuTrendingUpDown, LuTriangle, LuTriangleAlert, LuTriangleDashed, LuTriangleRight, LuTrophy, LuTruck, LuTruckElectric, LuTurkishLira, LuTurntable, LuTurtle, LuTv, LuTvMinimal, LuTvMinimalPlay, LuTwitch, LuTwitter, LuType, LuTypeOutline, LuUmbrella, LuUmbrellaOff, LuUnderline, LuUndo, LuUndo2, LuUndoDot, LuUnfoldHorizontal, LuUnfoldVertical, LuUngroup, LuUniversity, LuUnlink, LuUnlink2, LuUnplug, LuUpload, LuUsb, LuUser, LuUserCheck, LuUserCog, LuUserKey, LuUserLock, LuUserMinus, LuUserPen, LuUserPlus, LuUserRound, LuUserRoundCheck, LuUserRoundCog, LuUserRoundKey, LuUserRoundMinus, LuUserRoundPen, LuUserRoundPlus, LuUserRoundSearch, LuUserRoundX, LuUserSearch, LuUserStar, LuUserX, LuUsers, LuUsersRound, LuUtensils, LuUtensilsCrossed, LuUtilityPole, LuVan, LuVariable, LuVault, LuVectorSquare, LuVegan, LuVenetianMask, LuVenus, LuVenusAndMars, LuVibrate, LuVibrateOff, LuVideo, LuVideoOff, LuVideotape, LuView, LuVoicemail, LuVolleyball, LuVolume, LuVolume1, LuVolume2, LuVolumeOff, LuVolumeX, LuVote, LuWallet, LuWalletCards, LuWalletMinimal, LuWallpaper, LuWand, LuWandSparkles, LuWarehouse, LuWashingMachine, LuWatch, LuWaves, LuWavesArrowDown, LuWavesArrowUp, LuWavesLadder, LuWaypoints, LuWebcam, LuWebhook, LuWebhookOff, LuWeight, LuWeightTilde, LuWheat, LuWheatOff, LuWholeWord, LuWifi, LuWifiCog, LuWifiHigh, LuWifiLow, LuWifiOff, LuWifiPen, LuWifiSync, LuWifiZero, LuWind, LuWindArrowDown, LuWine, LuWineOff, LuWorkflow, LuWorm, LuWrench, LuX, LuXLineTop, LuXTwitter, LuYoutube, LuZap, LuZapOff, LuZodiacAquarius, LuZodiacAries, LuZodiacCancer, LuZodiacCapricorn, LuZodiacGemini, LuZodiacLeo, LuZodiacLibra, LuZodiacOphiuchus, LuZodiacPisces, LuZodiacSagittarius, LuZodiacScorpio, LuZodiacTaurus, LuZodiacVirgo, LuZoomIn, LuZoomOut, RuiAccordion_default as RuiAccordion, RuiAccordions_default as RuiAccordions, RuiAlert_default as RuiAlert, RuiAutoComplete_default as RuiAutoComplete, RuiAvatar_default as RuiAvatar, RuiAvatarGroup_default as RuiAvatarGroup, RuiBadge_default as RuiBadge, RuiBottomSheet_default as RuiBottomSheet, RuiButton_default as RuiButton, RuiButtonGroup_default as RuiButtonGroup, RuiCalendar_default as RuiCalendar, RuiCard_default as RuiCard, RuiCardHeader_default as RuiCardHeader, RuiCheckbox_default as RuiCheckbox, RuiCheckboxGroup_default as RuiCheckboxGroup, RuiChip_default as RuiChip, RuiColorPicker_default as RuiColorPicker, RuiDataTable_default as RuiDataTable, RuiDateTimePicker_default as RuiDateTimePicker, RuiDialog_default as RuiDialog, RuiDivider_default as RuiDivider, RuiFooterStepper_default as RuiFooterStepper, RuiIcon_default as RuiIcon, RuiIcons, RuiLogo_default as RuiLogo, RuiMenu_default as RuiMenu, RuiMenuSelect_default as RuiMenuSelect, RuiNavigationDrawer_default as RuiNavigationDrawer, RuiNotification_default as RuiNotification, RuiProgress_default as RuiProgress, RuiRadio_default as RuiRadio, RuiRadioGroup_default as RuiRadioGroup, RuiRevealableTextField_default as RuiRevealableTextField, RuiSimpleSelect_default as RuiSimpleSelect, RuiSkeletonLoader_default as RuiSkeletonLoader, RuiSlider_default as RuiSlider, RuiStepper_default as RuiStepper, RuiSwitch_default as RuiSwitch, RuiTab_default as RuiTab, RuiTabItem_default as RuiTabItem, RuiTabItems_default as RuiTabItems, RuiTablePagination_default as RuiTablePagination, RuiExpandButton_default as RuiTableRowExpander, RuiTabs_default as RuiTabs, RuiTextArea_default as RuiTextArea, RuiTextField_default as RuiTextField, RuiTimePicker_default as RuiTimePicker, RuiTooltip_default as RuiTooltip, StepperState, ThemeMode, cn, contextColors, createBlockie, createRui, createRuiI8nPlugin, isRuiIcon, translationKeys, tv, useBreakpoint, useIcons, useRotkiTheme };
|
|
98
|
+
export { LuAArrowDown, LuAArrowUp, LuALargeSmall, LuAccessibility, LuActivatePremium, LuActivity, LuAirVent, LuAirplay, LuAlarmClock, LuAlarmClockCheck, LuAlarmClockMinus, LuAlarmClockOff, LuAlarmClockPlus, LuAlarmSmoke, LuAlbum, LuAlignCenterHorizontal, LuAlignCenterVertical, LuAlignEndHorizontal, LuAlignEndVertical, LuAlignHorizontalDistributeCenter, LuAlignHorizontalDistributeEnd, LuAlignHorizontalDistributeStart, LuAlignHorizontalJustifyCenter, LuAlignHorizontalJustifyEnd, LuAlignHorizontalJustifyStart, LuAlignHorizontalSpaceAround, LuAlignHorizontalSpaceBetween, LuAlignStartHorizontal, LuAlignStartVertical, LuAlignVerticalDistributeCenter, LuAlignVerticalDistributeEnd, LuAlignVerticalDistributeStart, LuAlignVerticalJustifyCenter, LuAlignVerticalJustifyEnd, LuAlignVerticalJustifyStart, LuAlignVerticalSpaceAround, LuAlignVerticalSpaceBetween, LuAmbulance, LuAmpersand, LuAmpersands, LuAmphora, LuAnchor, LuAngry, LuAnnoyed, LuAntenna, LuAnvil, LuAperture, LuAppWindow, LuAppWindowMac, LuApple, LuArchive, LuArchiveRestore, LuArchiveX, LuArmchair, LuArrowBigDown, LuArrowBigDownDash, LuArrowBigLeft, LuArrowBigLeftDash, LuArrowBigRight, LuArrowBigRightDash, LuArrowBigUp, LuArrowBigUpDash, LuArrowDown, LuArrowDown01, LuArrowDown10, LuArrowDownAZ, LuArrowDownFromLine, LuArrowDownLeft, LuArrowDownNarrowWide, LuArrowDownRight, LuArrowDownToDot, LuArrowDownToLine, LuArrowDownUp, LuArrowDownWideNarrow, LuArrowDownZA, LuArrowLeft, LuArrowLeftFromLine, LuArrowLeftRight, LuArrowLeftToLine, LuArrowRight, LuArrowRightFromLine, LuArrowRightLeft, LuArrowRightToLine, LuArrowUp, LuArrowUp01, LuArrowUp10, LuArrowUpAZ, LuArrowUpDown, LuArrowUpFromDot, LuArrowUpFromLine, LuArrowUpLeft, LuArrowUpNarrowWide, LuArrowUpRight, LuArrowUpToLine, LuArrowUpWideNarrow, LuArrowUpZA, LuArrowsUpFromLine, LuAsterisk, LuAtSign, LuAtom, LuAudioLines, LuAudioWaveform, LuAward, LuAxe, LuAxis3d, LuBaby, LuBackpack, LuBadge, LuBadgeAlert, LuBadgeCent, LuBadgeCheck, LuBadgeDollarSign, LuBadgeEuro, LuBadgeIndianRupee, LuBadgeInfo, LuBadgeJapaneseYen, LuBadgeMinus, LuBadgePercent, LuBadgePlus, LuBadgePoundSterling, LuBadgeQuestionMark, LuBadgeRussianRuble, LuBadgeSwissFranc, LuBadgeTurkishLira, LuBadgeX, LuBaggageClaim, LuBalances, LuBalloon, LuBan, LuBanana, LuBandage, LuBanknote, LuBanknoteArrowDown, LuBanknoteArrowUp, LuBanknoteX, LuBarcode, LuBarrel, LuBaseline, LuBath, LuBattery, LuBatteryCharging, LuBatteryFull, LuBatteryLow, LuBatteryMedium, LuBatteryPlus, LuBatteryWarning, LuBeaker, LuBean, LuBeanOff, LuBed, LuBedDouble, LuBedSingle, LuBeef, LuBeer, LuBeerOff, LuBell, LuBellDot, LuBellElectric, LuBellMinus, LuBellOff, LuBellPlus, LuBellRing, LuBetweenHorizontalEnd, LuBetweenHorizontalStart, LuBetweenVerticalEnd, LuBetweenVerticalStart, LuBicepsFlexed, LuBike, LuBinary, LuBinoculars, LuBiohazard, LuBird, LuBirdhouse, LuBitcoin, LuBitcoinAccounts, LuBlend, LuBlinds, LuBlockchain, LuBlocks, LuBluetooth, LuBluetoothConnected, LuBluetoothOff, LuBluetoothSearching, LuBold, LuBolt, LuBomb, LuBone, LuBook, LuBookA, LuBookAlert, LuBookAudio, LuBookCheck, LuBookCopy, LuBookDashed, LuBookDown, LuBookHeadphones, LuBookHeart, LuBookImage, LuBookKey, LuBookLock, LuBookMarked, LuBookMinus, LuBookOpen, LuBookOpenCheck, LuBookOpenText, LuBookPlus, LuBookSearch, LuBookText, LuBookType, LuBookUp, LuBookUp2, LuBookUser, LuBookX, LuBookmark, LuBookmarkCheck, LuBookmarkMinus, LuBookmarkPlus, LuBookmarkX, LuBoomBox, LuBot, LuBotMessageSquare, LuBotOff, LuBottleWine, LuBowArrow, LuBox, LuBoxes, LuBraces, LuBrackets, LuBrain, LuBrainCircuit, LuBrainCog, LuBrickWall, LuBrickWallFire, LuBrickWallShield, LuBriefcase, LuBriefcaseBusiness, LuBriefcaseConveyorBelt, LuBriefcaseMedical, LuBringToFront, LuBrush, LuBrushCleaning, LuBubbles, LuBug, LuBugOff, LuBugPlay, LuBuilding, LuBuilding2, LuBus, LuBusFront, LuCable, LuCableCar, LuCake, LuCakeSlice, LuCalculator, LuCalendar, LuCalendar1, LuCalendarArrowDown, LuCalendarArrowUp, LuCalendarCheck, LuCalendarCheck2, LuCalendarClock, LuCalendarCog, LuCalendarDays, LuCalendarFold, LuCalendarHeart, LuCalendarMinus, LuCalendarMinus2, LuCalendarOff, LuCalendarPlus, LuCalendarPlus2, LuCalendarRange, LuCalendarSearch, LuCalendarSync, LuCalendarX, LuCalendarX2, LuCalendars, LuCamera, LuCameraOff, LuCandy, LuCandyCane, LuCandyOff, LuCannabis, LuCannabisOff, LuCaptions, LuCaptionsOff, LuCar, LuCarFront, LuCarTaxiFront, LuCaravan, LuCardSim, LuCarrot, LuCaseLower, LuCaseSensitive, LuCaseUpper, LuCassetteTape, LuCast, LuCastle, LuCat, LuCctv, LuChartArea, LuChartBar, LuChartBarBig, LuChartBarDecreasing, LuChartBarIncreasing, LuChartBarStacked, LuChartCandlestick, LuChartColumn, LuChartColumnBig, LuChartColumnDecreasing, LuChartColumnIncreasing, LuChartColumnStacked, LuChartGantt, LuChartLine, LuChartNetwork, LuChartNoAxesColumn, LuChartNoAxesColumnDecreasing, LuChartNoAxesColumnIncreasing, LuChartNoAxesCombined, LuChartNoAxesGantt, LuChartPie, LuChartScatter, LuChartSpline, LuCheck, LuCheckCheck, LuCheckLine, LuCheckboxBlank, LuCheckboxBlankCircle, LuCheckboxBlankCircleFill, LuCheckboxFill, LuCheckboxIndeterminateFill, LuChefHat, LuCherry, LuChessBishop, LuChessKing, LuChessKnight, LuChessPawn, LuChessQueen, LuChessRook, LuChevronDown, LuChevronFirst, LuChevronLast, LuChevronLeft, LuChevronRight, LuChevronUp, LuChevronsDown, LuChevronsDownUp, LuChevronsLeft, LuChevronsLeftRight, LuChevronsLeftRightEllipsis, LuChevronsRight, LuChevronsRightLeft, LuChevronsUp, LuChevronsUpDown, LuChromium, LuChurch, LuCigarette, LuCigaretteOff, LuCircle, LuCircleAlert, LuCircleArrowDown, LuCircleArrowLeft, LuCircleArrowOutDownLeft, LuCircleArrowOutDownRight, LuCircleArrowOutUpLeft, LuCircleArrowOutUpRight, LuCircleArrowRight, LuCircleArrowUp, LuCircleCheck, LuCircleCheckBig, LuCircleChevronDown, LuCircleChevronLeft, LuCircleChevronRight, LuCircleChevronUp, LuCircleDashed, LuCircleDivide, LuCircleDollarSign, LuCircleDot, LuCircleDotDashed, LuCircleEllipsis, LuCircleEqual, LuCircleFadingArrowUp, LuCircleFadingPlus, LuCircleGauge, LuCircleMinus, LuCircleOff, LuCircleParking, LuCircleParkingOff, LuCirclePause, LuCirclePercent, LuCirclePile, LuCirclePlay, LuCirclePlus, LuCirclePoundSterling, LuCirclePower, LuCircleQuestionMark, LuCircleSlash, LuCircleSlash2, LuCircleSmall, LuCircleStar, LuCircleStop, LuCircleUser, LuCircleUserRound, LuCircleX, LuCircuitBoard, LuCitrus, LuClapperboard, LuClipboard, LuClipboardCheck, LuClipboardClock, LuClipboardCopy, LuClipboardList, LuClipboardMinus, LuClipboardPaste, LuClipboardPen, LuClipboardPenLine, LuClipboardPlus, LuClipboardType, LuClipboardX, LuClock, LuClock1, LuClock10, LuClock11, LuClock12, LuClock2, LuClock3, LuClock4, LuClock5, LuClock6, LuClock7, LuClock8, LuClock9, LuClockAlert, LuClockArrowDown, LuClockArrowUp, LuClockCheck, LuClockFading, LuClockPlus, LuClosedCaption, LuCloud, LuCloudAlert, LuCloudBackup, LuCloudCheck, LuCloudCog, LuCloudDownload, LuCloudDownload2Fill, LuCloudDownloadFill, LuCloudDrizzle, LuCloudFill, LuCloudFog, LuCloudHail, LuCloudLightning, LuCloudMoon, LuCloudMoonRain, LuCloudOff, LuCloudOffFill, LuCloudRain, LuCloudRainWind, LuCloudSnow, LuCloudSun, LuCloudSunRain, LuCloudSync, LuCloudSyncFill, LuCloudUpload, LuCloudUpload2Fill, LuCloudUploadFill, LuCloudy, LuClover, LuClub, LuCode, LuCodeXml, LuCodepen, LuCodesandbox, LuCoffee, LuCog, LuCoins, LuCoinsExchange, LuColumns2, LuColumns3, LuColumns3Cog, LuColumns4, LuCombine, LuCommand, LuCompass, LuComponent, LuComputer, LuConciergeBell, LuCone, LuConstruction, LuContact, LuContactRound, LuContainer, LuContrast, LuCookie, LuCookingPot, LuCopy, LuCopyCheck, LuCopyMinus, LuCopyPlus, LuCopySlash, LuCopyX, LuCopyleft, LuCopyright, LuCornerDownLeft, LuCornerDownRight, LuCornerLeftDown, LuCornerLeftUp, LuCornerRightDown, LuCornerRightUp, LuCornerUpLeft, LuCornerUpRight, LuCpu, LuCreativeCommons, LuCreditCard, LuCroissant, LuCrop, LuCross, LuCrosshair, LuCrown, LuCuboid, LuCupSoda, LuCurrency, LuCustomAssets, LuCylinder, LuDam, LuDatabase, LuDatabaseBackup, LuDatabaseSearch, LuDatabaseZap, LuDecimalsArrowLeft, LuDecimalsArrowRight, LuDelete, LuDeposits, LuDessert, LuDiameter, LuDiamond, LuDiamondMinus, LuDiamondPercent, LuDiamondPlus, LuDice1, LuDice2, LuDice3, LuDice4, LuDice5, LuDice6, LuDices, LuDiff, LuDisc, LuDisc2, LuDisc3, LuDiscAlbum, LuDiscord, LuDivide, LuDna, LuDnaOff, LuDock, LuDog, LuDollarSign, LuDonateFill, LuDonut, LuDoorClosed, LuDoorClosedLocked, LuDoorOpen, LuDot, LuDownload, LuDraftingCompass, LuDrama, LuDribbble, LuDrill, LuDrone, LuDroplet, LuDropletFill, LuDropletHalfFill, LuDropletOff, LuDropletTrendingDown, LuDroplets, LuDrum, LuDrumstick, LuDumbbell, LuEar, LuEarOff, LuEarth, LuEarthLock, LuEclipse, LuEgg, LuEggFried, LuEggOff, LuEllipse, LuEllipsis, LuEllipsisVertical, LuEqual, LuEqualApproximately, LuEqualNot, LuEraser, LuEthernetPort, LuEuro, LuEvCharger, LuEvmAccounts, LuExpand, LuExport, LuExternalLink, LuEye, LuEyeClosed, LuEyeOff, LuEyeSemiOff, LuFacebook, LuFactory, LuFan, LuFastForward, LuFeather, LuFence, LuFerrisWheel, LuFigma, LuFile, LuFileArchive, LuFileAxis3d, LuFileBadge, LuFileBox, LuFileBraces, LuFileBracesCorner, LuFileChartColumn, LuFileChartColumnIncreasing, LuFileChartLine, LuFileChartPie, LuFileCheck, LuFileCheckCorner, LuFileClock, LuFileCode, LuFileCodeCorner, LuFileCog, LuFileDiff, LuFileDigit, LuFileDown, LuFileExclamationPoint, LuFileHeadphone, LuFileHeart, LuFileImage, LuFileInput, LuFileKey, LuFileLock, LuFileMinus, LuFileMinusCorner, LuFileMusic, LuFileOutput, LuFilePen, LuFilePenLine, LuFilePlay, LuFilePlus, LuFilePlusCorner, LuFileQuestionMark, LuFileScan, LuFileSearch, LuFileSearchCorner, LuFileSignal, LuFileSliders, LuFileSpreadsheet, LuFileStack, LuFileSymlink, LuFileTerminal, LuFileText, LuFileType, LuFileTypeCorner, LuFileUp, LuFileUser, LuFileVideoCamera, LuFileVolume, LuFileX, LuFileXCorner, LuFiles, LuFilm, LuFingerprintPattern, LuFireExtinguisher, LuFish, LuFishOff, LuFishSymbol, LuFishingHook, LuFishingRod, LuFlag, LuFlagOff, LuFlagTriangleLeft, LuFlagTriangleRight, LuFlame, LuFlameKindling, LuFlashlight, LuFlashlightOff, LuFlaskConical, LuFlaskConicalOff, LuFlaskRound, LuFlipHorizontal2, LuFlipVertical2, LuFlower, LuFlower2, LuFocus, LuFoldHorizontal, LuFoldVertical, LuFolder, LuFolderArchive, LuFolderCheck, LuFolderClock, LuFolderClosed, LuFolderCode, LuFolderCog, LuFolderDot, LuFolderDown, LuFolderGit, LuFolderGit2, LuFolderHeart, LuFolderInput, LuFolderKanban, LuFolderKey, LuFolderLock, LuFolderMinus, LuFolderOpen, LuFolderOpenDot, LuFolderOutput, LuFolderPen, LuFolderPlus, LuFolderRoot, LuFolderSearch, LuFolderSearch2, LuFolderShrink1, LuFolderShrink2, LuFolderSymlink, LuFolderSync, LuFolderTree, LuFolderUp, LuFolderX, LuFolders, LuFootprints, LuForklift, LuForm, LuForward, LuFrame, LuFramer, LuFrown, LuFuel, LuFullscreen, LuFunnel, LuFunnelPlus, LuFunnelX, LuGalleryHorizontal, LuGalleryHorizontalEnd, LuGalleryThumbnails, LuGalleryVertical, LuGalleryVerticalEnd, LuGamepad, LuGamepad2, LuGamepadDirectional, LuGauge, LuGavel, LuGem, LuGeorgianLari, LuGhost, LuGift, LuGitBranch, LuGitBranchMinus, LuGitBranchPlus, LuGitCommitHorizontal, LuGitCommitVertical, LuGitCompare, LuGitCompareArrows, LuGitFork, LuGitGraph, LuGitMerge, LuGitMergeConflict, LuGitPullRequest, LuGitPullRequestArrow, LuGitPullRequestClosed, LuGitPullRequestCreate, LuGitPullRequestCreateArrow, LuGitPullRequestDraft, LuGithub, LuGitlab, LuGlassWater, LuGlasses, LuGlobe, LuGlobeLock, LuGlobeOff, LuGlobeX, LuGoal, LuGpu, LuGraduationCap, LuGrape, LuGrid2x2, LuGrid2x2Check, LuGrid2x2Plus, LuGrid2x2X, LuGrid3x2, LuGrid3x3, LuGrip, LuGripHorizontal, LuGripVertical, LuGroup, LuGuitar, LuHam, LuHamburger, LuHammer, LuHand, LuHandCoins, LuHandFist, LuHandGrab, LuHandHeart, LuHandHelping, LuHandMetal, LuHandPlatter, LuHandbag, LuHandshake, LuHardDrive, LuHardDriveDownload, LuHardDriveUpload, LuHardHat, LuHash, LuHatGlasses, LuHaze, LuHd, LuHdmiPort, LuHeading, LuHeading1, LuHeading2, LuHeading3, LuHeading4, LuHeading5, LuHeading6, LuHeadphoneOff, LuHeadphones, LuHeadset, LuHeart, LuHeartCrack, LuHeartHandshake, LuHeartMinus, LuHeartOff, LuHeartPlus, LuHeartPulse, LuHeater, LuHelicopter, LuHexagon, LuHighlighter, LuHistoricPrices, LuHistory, LuHistoryEventsFill, LuHop, LuHopOff, LuHospital, LuHotel, LuHourglass, LuHouse, LuHouseHeart, LuHousePlug, LuHousePlus, LuHouseWifi, LuIceCreamBowl, LuIceCreamCone, LuIdCard, LuIdCardLanyard, LuImage, LuImageDown, LuImageMinus, LuImageOff, LuImagePlay, LuImagePlus, LuImageUp, LuImageUpscale, LuImages, LuImport, LuInbox, LuIndianRupee, LuInfinity, LuInfo, LuInspectionPanel, LuInstagram, LuItalic, LuIterationCcw, LuIterationCw, LuJapaneseYen, LuJoystick, LuKanban, LuKayak, LuKey, LuKeyRound, LuKeySquare, LuKeyboard, LuKeyboardMusic, LuKeyboardOff, LuLamp, LuLampCeiling, LuLampDesk, LuLampFloor, LuLampWallDown, LuLampWallUp, LuLandPlot, LuLandmark, LuLanguages, LuLaptop, LuLaptopMinimal, LuLaptopMinimalCheck, LuLasso, LuLassoSelect, LuLatestPrices, LuLaugh, LuLayers, LuLayers2, LuLayersIn, LuLayersOut, LuLayersPlus, LuLayoutDashboard, LuLayoutGrid, LuLayoutList, LuLayoutPanelLeft, LuLayoutPanelTop, LuLayoutTemplate, LuLeaf, LuLeafyGreen, LuLectern, LuLensConcave, LuLensConvex, LuLiabilities, LuLibrary, LuLibraryBig, LuLifeBuoy, LuLigature, LuLightbulb, LuLightbulbOff, LuLineDotRightHorizontal, LuLineSquiggle, LuLink, LuLink2, LuLink2Off, LuLinkedin, LuList, LuListCheck, LuListChecks, LuListChevronsDownUp, LuListChevronsUpDown, LuListCollapse, LuListEnd, LuListFilter, LuListFilterPlus, LuListIndentDecrease, LuListIndentIncrease, LuListMinus, LuListMusic, LuListOrdered, LuListPlus, LuListRestart, LuListStart, LuListTodo, LuListTree, LuListVideo, LuListX, LuLoader, LuLoaderCircle, LuLoaderPinwheel, LuLocate, LuLocateFixed, LuLocateOff, LuLock, LuLockKeyhole, LuLockKeyholeOpen, LuLockOpen, LuLogIn, LuLogOut, LuLogs, LuLollipop, LuLuggage, LuMagnet, LuMail, LuMailCheck, LuMailMinus, LuMailOpen, LuMailPlus, LuMailQuestionMark, LuMailSearch, LuMailWarning, LuMailX, LuMailbox, LuMails, LuManageAssets, LuManagePrices, LuManualBalances, LuMap, LuMapMinus, LuMapPin, LuMapPinCheck, LuMapPinCheckInside, LuMapPinHouse, LuMapPinMinus, LuMapPinMinusInside, LuMapPinOff, LuMapPinPen, LuMapPinPlus, LuMapPinPlusInside, LuMapPinX, LuMapPinXInside, LuMapPinned, LuMapPlus, LuMars, LuMarsStroke, LuMartini, LuMaximize, LuMaximize2, LuMedal, LuMegaphone, LuMegaphoneOff, LuMeh, LuMemoryStick, LuMenu, LuMerge, LuMessageCircle, LuMessageCircleCheck, LuMessageCircleCode, LuMessageCircleDashed, LuMessageCircleHeart, LuMessageCircleMore, LuMessageCircleOff, LuMessageCirclePlus, LuMessageCircleQuestionMark, LuMessageCircleReply, LuMessageCircleWarning, LuMessageCircleX, LuMessageSquare, LuMessageSquareCheck, LuMessageSquareCode, LuMessageSquareDashed, LuMessageSquareDiff, LuMessageSquareDot, LuMessageSquareHeart, LuMessageSquareLock, LuMessageSquareMore, LuMessageSquareOff, LuMessageSquarePlus, LuMessageSquareQuote, LuMessageSquareReply, LuMessageSquareShare, LuMessageSquareText, LuMessageSquareWarning, LuMessageSquareX, LuMessagesSquare, LuMetronome, LuMic, LuMicOff, LuMicVocal, LuMicrochip, LuMicroscope, LuMicrowave, LuMilestone, LuMilk, LuMilkOff, LuMinimize, LuMinimize2, LuMinus, LuMirrorRectangular, LuMirrorRound, LuMonitor, LuMonitorCheck, LuMonitorCloud, LuMonitorCog, LuMonitorDot, LuMonitorDown, LuMonitorOff, LuMonitorPause, LuMonitorPlay, LuMonitorSmartphone, LuMonitorSpeaker, LuMonitorStop, LuMonitorUp, LuMonitorX, LuMoon, LuMoonStar, LuMoreAssets, LuMotorbike, LuMountain, LuMountainSnow, LuMouse, LuMouseLeft, LuMouseOff, LuMousePointer, LuMousePointer2, LuMousePointer2Off, LuMousePointerBan, LuMousePointerClick, LuMouseRight, LuMove, LuMove3d, LuMoveDiagonal, LuMoveDiagonal2, LuMoveDown, LuMoveDownLeft, LuMoveDownRight, LuMoveHorizontal, LuMoveLeft, LuMoveRight, LuMoveUp, LuMoveUpLeft, LuMoveUpRight, LuMoveVertical, LuMusic, LuMusic2, LuMusic3, LuMusic4, LuNavigation, LuNavigation2, LuNavigation2Off, LuNavigationOff, LuNetwork, LuNewspaper, LuNfc, LuNonBinary, LuNotebook, LuNotebookPen, LuNotebookTabs, LuNotebookText, LuNotepadText, LuNotepadTextDashed, LuNut, LuNutOff, LuOctagon, LuOctagonAlert, LuOctagonMinus, LuOctagonPause, LuOctagonX, LuOmega, LuOnchain, LuOption, LuOrbit, LuOrigami, LuOsApple, LuOsWindows, LuPackage, LuPackage2, LuPackageCheck, LuPackageMinus, LuPackageOpen, LuPackagePlus, LuPackageSearch, LuPackageX, LuPaintBucket, LuPaintRoller, LuPaintbrush, LuPaintbrushVertical, LuPalette, LuPanda, LuPanelBottom, LuPanelBottomClose, LuPanelBottomDashed, LuPanelBottomOpen, LuPanelLeft, LuPanelLeftClose, LuPanelLeftDashed, LuPanelLeftOpen, LuPanelLeftRightDashed, LuPanelRight, LuPanelRightClose, LuPanelRightDashed, LuPanelRightOpen, LuPanelTop, LuPanelTopBottomDashed, LuPanelTopClose, LuPanelTopDashed, LuPanelTopOpen, LuPanelsLeftBottom, LuPanelsRightBottom, LuPanelsTopLeft, LuPaperclip, LuParentheses, LuParkingMeter, LuPartyPopper, LuPause, LuPawPrint, LuPaypal, LuPcCase, LuPen, LuPenLine, LuPenOff, LuPenTool, LuPencil, LuPencilLine, LuPencilOff, LuPencilRuler, LuPentagon, LuPercent, LuPersonStanding, LuPhilippinePeso, LuPhone, LuPhoneCall, LuPhoneForwarded, LuPhoneIncoming, LuPhoneMissed, LuPhoneOff, LuPhoneOutgoing, LuPi, LuPiano, LuPickaxe, LuPictureInPicture, LuPictureInPicture2, LuPiggyBank, LuPilcrow, LuPilcrowLeft, LuPilcrowRight, LuPill, LuPillBottle, LuPin, LuPinOff, LuPipette, LuPizza, LuPlane, LuPlaneLanding, LuPlaneTakeoff, LuPlay, LuPlug, LuPlug2, LuPlugZap, LuPlus, LuPocket, LuPocketKnife, LuPodcast, LuPointer, LuPointerOff, LuPopcorn, LuPopsicle, LuPoundSterling, LuPower, LuPowerOff, LuPresentation, LuPrinter, LuPrinterCheck, LuPrinterX, LuProjector, LuProportions, LuPuzzle, LuPyramid, LuQrCode, LuQuote, LuRabbit, LuRadar, LuRadiation, LuRadical, LuRadio, LuRadioButtonFill, LuRadioReceiver, LuRadioTower, LuRadius, LuRailSymbol, LuRainbow, LuRat, LuRatio, LuReceipt, LuReceiptCent, LuReceiptEuro, LuReceiptIndianRupee, LuReceiptJapaneseYen, LuReceiptPoundSterling, LuReceiptRussianRuble, LuReceiptSwissFranc, LuReceiptText, LuReceiptTurkishLira, LuReceiveDonationFill, LuRectangleCircle, LuRectangleEllipsis, LuRectangleGoggles, LuRectangleHorizontal, LuRectangleVertical, LuRecycle, LuReddit, LuRedo, LuRedo2, LuRedoDot, LuRefreshCcw, LuRefreshCcwDot, LuRefreshCw, LuRefreshCwOff, LuRefrigerator, LuRefund, LuRegex, LuRemoveFormatting, LuRepeat, LuRepeat1, LuRepeat2, LuReplace, LuReplaceAll, LuReply, LuReplyAll, LuRewind, LuRibbon, LuRocket, LuRockingChair, LuRollerCoaster, LuRose, LuRotate3d, LuRotateCcw, LuRotateCcwKey, LuRotateCcwSquare, LuRotateCw, LuRotateCwSquare, LuRoute, LuRouteOff, LuRouter, LuRows2, LuRows3, LuRows4, LuRss, LuRuler, LuRulerDimensionLine, LuRussianRuble, LuSailboat, LuSalad, LuSandwich, LuSatellite, LuSatelliteDish, LuSaudiRiyal, LuSave, LuSaveAll, LuSaveOff, LuScale, LuScale3d, LuScaling, LuScan, LuScanBarcode, LuScanEye, LuScanFace, LuScanHeart, LuScanLine, LuScanQrCode, LuScanSearch, LuScanText, LuSchool, LuScissors, LuScissorsLineDashed, LuScooter, LuScreenShare, LuScreenShareOff, LuScroll, LuScrollText, LuSearch, LuSearchAlert, LuSearchCheck, LuSearchCode, LuSearchSlash, LuSearchX, LuSection, LuSend, LuSendHorizontal, LuSendToBack, LuSeparatorHorizontal, LuSeparatorVertical, LuServer, LuServerCog, LuServerCrash, LuServerOff, LuSettings, LuSettings2, LuShapes, LuShare, LuShare2, LuSheet, LuShell, LuShelvingUnit, LuShield, LuShieldAlert, LuShieldBan, LuShieldCheck, LuShieldEllipsis, LuShieldHalf, LuShieldMinus, LuShieldOff, LuShieldPlus, LuShieldQuestionMark, LuShieldUser, LuShieldX, LuShip, LuShipWheel, LuShirt, LuShoppingBag, LuShoppingBasket, LuShoppingCart, LuShovel, LuShowerHead, LuShredder, LuShrimp, LuShrink, LuShrub, LuShuffle, LuSigma, LuSignal, LuSignalHigh, LuSignalLow, LuSignalMedium, LuSignalZero, LuSignature, LuSignpost, LuSignpostBig, LuSiren, LuSkipBack, LuSkipForward, LuSkull, LuSlack, LuSlash, LuSlashDivider, LuSlice, LuSlidersHorizontal, LuSlidersVertical, LuSmartphone, LuSmartphoneCharging, LuSmartphoneNfc, LuSmile, LuSmilePlus, LuSnail, LuSnowflake, LuSoapDispenserDroplet, LuSofa, LuSolanaAccountsFill, LuSolarPanel, LuSoup, LuSpace, LuSpade, LuSparkle, LuSparkles, LuSpeaker, LuSpeech, LuSpellCheck, LuSpellCheck2, LuSpline, LuSplinePointer, LuSplit, LuSpool, LuSpotlight, LuSprayCan, LuSprout, LuSquare, LuSquareActivity, LuSquareArrowDown, LuSquareArrowDownLeft, LuSquareArrowDownRight, LuSquareArrowLeft, LuSquareArrowOutDownLeft, LuSquareArrowOutDownRight, LuSquareArrowOutUpLeft, LuSquareArrowOutUpRight, LuSquareArrowRight, LuSquareArrowRightEnter, LuSquareArrowRightExit, LuSquareArrowUp, LuSquareArrowUpLeft, LuSquareArrowUpRight, LuSquareAsterisk, LuSquareBottomDashedScissors, LuSquareCenterlineDashedHorizontal, LuSquareCenterlineDashedVertical, LuSquareChartGantt, LuSquareCheck, LuSquareCheckBig, LuSquareChevronDown, LuSquareChevronLeft, LuSquareChevronRight, LuSquareChevronUp, LuSquareCode, LuSquareDashed, LuSquareDashedBottom, LuSquareDashedBottomCode, LuSquareDashedKanban, LuSquareDashedMousePointer, LuSquareDashedTopSolid, LuSquareDivide, LuSquareDot, LuSquareEqual, LuSquareFunction, LuSquareKanban, LuSquareLibrary, LuSquareM, LuSquareMenu, LuSquareMinus, LuSquareMousePointer, LuSquareParking, LuSquareParkingOff, LuSquarePause, LuSquarePen, LuSquarePercent, LuSquarePi, LuSquarePilcrow, LuSquarePlay, LuSquarePlus, LuSquarePower, LuSquareRadical, LuSquareRoundCorner, LuSquareScissors, LuSquareSigma, LuSquareSlash, LuSquareSplitHorizontal, LuSquareSplitVertical, LuSquareSquare, LuSquareStack, LuSquareStar, LuSquareStop, LuSquareTerminal, LuSquareUser, LuSquareUserRound, LuSquareX, LuSquaresExclude, LuSquaresIntersect, LuSquaresSubtract, LuSquaresUnite, LuSquircle, LuSquircleDashed, LuSquirrel, LuStamp, LuStar, LuStarHalf, LuStarOff, LuStepBack, LuStepForward, LuStethoscope, LuSticker, LuStickyNote, LuStone, LuStore, LuStretchHorizontal, LuStretchVertical, LuStrikethrough, LuSubscript, LuSubstrateAccounts, LuSun, LuSunDim, LuSunMedium, LuSunMoon, LuSunSnow, LuSunrise, LuSunset, LuSuperscript, LuSwatchBook, LuSwissFranc, LuSwitchCamera, LuSword, LuSwords, LuSyringe, LuTable, LuTable2, LuTableCellsMerge, LuTableCellsSplit, LuTableColumnsSplit, LuTableOfContents, LuTableProperties, LuTableRowsSplit, LuTablet, LuTabletSmartphone, LuTablets, LuTag, LuTagManager, LuTags, LuTally1, LuTally2, LuTally3, LuTally4, LuTally5, LuTangent, LuTarget, LuTelescope, LuTent, LuTentTree, LuTerminal, LuTestTube, LuTestTubeDiagonal, LuTestTubes, LuTextAlignCenter, LuTextAlignEnd, LuTextAlignJustify, LuTextAlignStart, LuTextCursor, LuTextCursorInput, LuTextInitial, LuTextQuote, LuTextSearch, LuTextSelect, LuTextWrap, LuTheater, LuThermometer, LuThermometerSnowflake, LuThermometerSun, LuThumbsDown, LuThumbsUp, LuTicket, LuTicketCheck, LuTicketMinus, LuTicketPercent, LuTicketPlus, LuTicketSlash, LuTicketX, LuTickets, LuTicketsPlane, LuTimer, LuTimerOff, LuTimerReset, LuToggleLeft, LuToggleRight, LuToilet, LuToolCase, LuToolbox, LuTornado, LuTorus, LuTouchpad, LuTouchpadOff, LuTowelRack, LuTowerControl, LuToyBrick, LuTractor, LuTrafficCone, LuTrainFront, LuTrainFrontTunnel, LuTrainTrack, LuTramFront, LuTransgender, LuTrash, LuTrash2, LuTreeDeciduous, LuTreePalm, LuTreePine, LuTrees, LuTrello, LuTrendingDown, LuTrendingUp, LuTrendingUpDown, LuTriangle, LuTriangleAlert, LuTriangleDashed, LuTriangleRight, LuTrophy, LuTruck, LuTruckElectric, LuTurkishLira, LuTurntable, LuTurtle, LuTv, LuTvMinimal, LuTvMinimalPlay, LuTwitch, LuTwitter, LuType, LuTypeOutline, LuUmbrella, LuUmbrellaOff, LuUnderline, LuUndo, LuUndo2, LuUndoDot, LuUnfoldHorizontal, LuUnfoldVertical, LuUngroup, LuUniversity, LuUnlink, LuUnlink2, LuUnplug, LuUpload, LuUsb, LuUser, LuUserCheck, LuUserCog, LuUserKey, LuUserLock, LuUserMinus, LuUserPen, LuUserPlus, LuUserRound, LuUserRoundCheck, LuUserRoundCog, LuUserRoundKey, LuUserRoundMinus, LuUserRoundPen, LuUserRoundPlus, LuUserRoundSearch, LuUserRoundX, LuUserSearch, LuUserStar, LuUserX, LuUsers, LuUsersRound, LuUtensils, LuUtensilsCrossed, LuUtilityPole, LuVan, LuVariable, LuVault, LuVectorSquare, LuVegan, LuVenetianMask, LuVenus, LuVenusAndMars, LuVibrate, LuVibrateOff, LuVideo, LuVideoOff, LuVideotape, LuView, LuVoicemail, LuVolleyball, LuVolume, LuVolume1, LuVolume2, LuVolumeOff, LuVolumeX, LuVote, LuWallet, LuWalletCards, LuWalletMinimal, LuWallpaper, LuWand, LuWandSparkles, LuWarehouse, LuWashingMachine, LuWatch, LuWaves, LuWavesArrowDown, LuWavesArrowUp, LuWavesLadder, LuWaypoints, LuWebcam, LuWebhook, LuWebhookOff, LuWeight, LuWeightTilde, LuWheat, LuWheatOff, LuWholeWord, LuWifi, LuWifiCog, LuWifiHigh, LuWifiLow, LuWifiOff, LuWifiPen, LuWifiSync, LuWifiZero, LuWind, LuWindArrowDown, LuWine, LuWineOff, LuWorkflow, LuWorm, LuWrench, LuX, LuXLineTop, LuXTwitter, LuYoutube, LuZap, LuZapOff, LuZodiacAquarius, LuZodiacAries, LuZodiacCancer, LuZodiacCapricorn, LuZodiacGemini, LuZodiacLeo, LuZodiacLibra, LuZodiacOphiuchus, LuZodiacPisces, LuZodiacSagittarius, LuZodiacScorpio, LuZodiacTaurus, LuZodiacVirgo, LuZoomIn, LuZoomOut, RuiAccordion_default as RuiAccordion, RuiAccordions_default as RuiAccordions, RuiAlert_default as RuiAlert, RuiAutoComplete_default as RuiAutoComplete, RuiAvatar_default as RuiAvatar, RuiAvatarGroup_default as RuiAvatarGroup, RuiBadge_default as RuiBadge, RuiBottomSheet_default as RuiBottomSheet, RuiButton_default as RuiButton, RuiButtonGroup_default as RuiButtonGroup, RuiCalendar_default as RuiCalendar, RuiCard_default as RuiCard, RuiCardHeader_default as RuiCardHeader, RuiCheckbox_default as RuiCheckbox, RuiCheckboxGroup_default as RuiCheckboxGroup, RuiChip_default as RuiChip, RuiColorPicker_default as RuiColorPicker, RuiDataTable_default as RuiDataTable, RuiDateTimePicker_default as RuiDateTimePicker, RuiDialog_default as RuiDialog, RuiDivider_default as RuiDivider, RuiFooterStepper_default as RuiFooterStepper, RuiIcon_default as RuiIcon, RuiIcons, RuiLogo_default as RuiLogo, RuiMenu_default as RuiMenu, RuiMenuSelect_default as RuiMenuSelect, RuiNavigationDrawer_default as RuiNavigationDrawer, RuiNotification_default as RuiNotification, RuiProgress_default as RuiProgress, RuiRadio_default as RuiRadio, RuiRadioGroup_default as RuiRadioGroup, RuiRevealableTextField_default as RuiRevealableTextField, RuiSimpleSelect_default as RuiSimpleSelect, RuiSkeletonLoader_default as RuiSkeletonLoader, RuiSlider_default as RuiSlider, RuiStepper_default as RuiStepper, RuiSwitch_default as RuiSwitch, RuiTab_default as RuiTab, RuiTabItem_default as RuiTabItem, RuiTabItems_default as RuiTabItems, RuiTablePagination_default as RuiTablePagination, RuiExpandButton_default as RuiTableRowExpander, RuiTabs_default as RuiTabs, RuiTextArea_default as RuiTextArea, RuiTextField_default as RuiTextField, RuiTimePicker_default as RuiTimePicker, RuiTimezoneSelect_default as RuiTimezoneSelect, RuiTooltip_default as RuiTooltip, StepperState, ThemeMode, cn, contextColors, createBlockie, createRui, createRuiI8nPlugin, isRuiIcon, translationKeys, tv, useBreakpoint, useIcons, useRotkiTheme };
|
|
98
99
|
|
|
99
100
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../src/index.ts"],"sourcesContent":["import type { App } from 'vue';\nimport type { InitThemeOptions } from '@/types/theme';\nimport {\n createTableDefaults,\n type TableOptions,\n TableSymbol,\n} from '@/composables/defaults/table';\nimport { createIconDefaults, IconsSymbol } from '@/composables/icons';\nimport { useRotkiTheme } from '@/composables/theme';\nimport { RUI_I18N_INJECTION_KEY } from '@/composables/use-rui-i18n';\nimport { StepperState } from '@/types/stepper';\nimport '@/style.css';\n\nexport * from '@/components';\n\nexport * from '@/composables';\n\nexport { contextColors, type ContextColorsType } from '@/consts/colors';\n\nexport { translationKeys } from '@/i18n/keys';\n\nexport * from '@/icons';\n\nexport { StepperState };\n\nexport type { VueClassValue } from '@/types/class-value';\n\nexport {\n type InitThemeOptions,\n type ThemeConfig,\n type ThemeContent,\n type ThemeData,\n ThemeMode,\n} from '@/types/theme';\n\nexport { createBlockie } from '@/utils/blockie';\n\nexport { cn, tv } from '@/utils/tv';\n\nexport type { VariantProps } from 'tailwind-variants';\n\nexport interface RuiOptions {\n theme?: InitThemeOptions;\n defaults?: {\n table?: Partial<TableOptions>;\n };\n}\n\nexport function createRui(options: RuiOptions = {}) {\n const { theme, defaults: defaultOptions } = options;\n\n const defaults = Object.freeze({\n icons: createIconDefaults({\n registeredIcons: theme?.icons,\n }),\n table: createTableDefaults(defaultOptions?.table),\n });\n\n const install = (app: App) => {\n useRotkiTheme().init({ ...theme });\n\n app.provide(TableSymbol, defaults.table);\n app.provide(IconsSymbol, defaults.icons);\n };\n\n return {\n defaults,\n install,\n };\n}\n\nexport function createRuiI8nPlugin(i18nInstance: any) {\n if (!i18nInstance || typeof i18nInstance !== 'object') {\n throw new Error('i18nInstance must be an object');\n }\n\n if (!i18nInstance.global || typeof i18nInstance.global !== 'object') {\n throw new Error('i18nInstance must have a global property');\n }\n\n if (!i18nInstance.global.t || typeof i18nInstance.global.t !== 'function') {\n throw new Error('i18nInstance.global.t must be a function');\n }\n\n if (!i18nInstance.global.te || typeof i18nInstance.global.te !== 'function') {\n throw new Error('i18nInstance.global.te must be a function');\n }\n\n return {\n install: (app: App) => {\n app.provide(RUI_I18N_INJECTION_KEY, {\n t: i18nInstance.global.t.bind(i18nInstance.global),\n te: i18nInstance.global.te.bind(i18nInstance.global),\n });\n },\n };\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../src/index.ts"],"sourcesContent":["import type { App } from 'vue';\nimport type { InitThemeOptions } from '@/types/theme';\nimport {\n createTableDefaults,\n type TableOptions,\n TableSymbol,\n} from '@/composables/defaults/table';\nimport { createIconDefaults, IconsSymbol } from '@/composables/icons';\nimport { useRotkiTheme } from '@/composables/theme';\nimport { RUI_I18N_INJECTION_KEY } from '@/composables/use-rui-i18n';\nimport { StepperState } from '@/types/stepper';\nimport '@/style.css';\n\nexport * from '@/components';\n\nexport * from '@/composables';\n\nexport { contextColors, type ContextColorsType } from '@/consts/colors';\n\nexport { translationKeys } from '@/i18n/keys';\n\nexport * from '@/icons';\n\nexport { StepperState };\n\nexport type { VueClassValue } from '@/types/class-value';\n\nexport {\n type InitThemeOptions,\n type ThemeConfig,\n type ThemeContent,\n type ThemeData,\n ThemeMode,\n} from '@/types/theme';\n\nexport { createBlockie } from '@/utils/blockie';\n\nexport { cn, tv } from '@/utils/tv';\n\nexport type { VariantProps } from 'tailwind-variants';\n\nexport interface RuiOptions {\n theme?: InitThemeOptions;\n defaults?: {\n table?: Partial<TableOptions>;\n };\n}\n\nexport function createRui(options: RuiOptions = {}) {\n const { theme, defaults: defaultOptions } = options;\n\n const defaults = Object.freeze({\n icons: createIconDefaults({\n registeredIcons: theme?.icons,\n }),\n table: createTableDefaults(defaultOptions?.table),\n });\n\n const install = (app: App) => {\n useRotkiTheme().init({ ...theme });\n\n app.provide(TableSymbol, defaults.table);\n app.provide(IconsSymbol, defaults.icons);\n };\n\n return {\n defaults,\n install,\n };\n}\n\nexport function createRuiI8nPlugin(i18nInstance: any) {\n if (!i18nInstance || typeof i18nInstance !== 'object') {\n throw new Error('i18nInstance must be an object');\n }\n\n if (!i18nInstance.global || typeof i18nInstance.global !== 'object') {\n throw new Error('i18nInstance must have a global property');\n }\n\n if (!i18nInstance.global.t || typeof i18nInstance.global.t !== 'function') {\n throw new Error('i18nInstance.global.t must be a function');\n }\n\n if (!i18nInstance.global.te || typeof i18nInstance.global.te !== 'function') {\n throw new Error('i18nInstance.global.te must be a function');\n }\n\n return {\n install: (app: App) => {\n app.provide(RUI_I18N_INJECTION_KEY, {\n t: i18nInstance.global.t.bind(i18nInstance.global),\n te: i18nInstance.global.te.bind(i18nInstance.global),\n });\n },\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgDA,SAAgB,UAAU,UAAsB,EAAE,EAAE;CAClD,MAAM,EAAE,OAAO,UAAU,mBAAmB;CAE5C,MAAM,WAAW,OAAO,OAAO;EAC7B,OAAO,mBAAmB,EACxB,iBAAiB,OAAO,OACzB,CAAC;EACF,OAAO,oBAAoB,gBAAgB,MAAM;EAClD,CAAC;CAEF,MAAM,WAAW,QAAa;AAC5B,iBAAe,CAAC,KAAK,EAAE,GAAG,OAAO,CAAC;AAElC,MAAI,QAAQ,aAAa,SAAS,MAAM;AACxC,MAAI,QAAQ,aAAa,SAAS,MAAM;;AAG1C,QAAO;EACL;EACA;EACD;;AAGH,SAAgB,mBAAmB,cAAmB;AACpD,KAAI,CAAC,gBAAgB,OAAO,iBAAiB,SAC3C,OAAM,IAAI,MAAM,iCAAiC;AAGnD,KAAI,CAAC,aAAa,UAAU,OAAO,aAAa,WAAW,SACzD,OAAM,IAAI,MAAM,2CAA2C;AAG7D,KAAI,CAAC,aAAa,OAAO,KAAK,OAAO,aAAa,OAAO,MAAM,WAC7D,OAAM,IAAI,MAAM,2CAA2C;AAG7D,KAAI,CAAC,aAAa,OAAO,MAAM,OAAO,aAAa,OAAO,OAAO,WAC/D,OAAM,IAAI,MAAM,4CAA4C;AAG9D,QAAO,EACL,UAAU,QAAa;AACrB,MAAI,QAAQ,wBAAwB;GAClC,GAAG,aAAa,OAAO,EAAE,KAAK,aAAa,OAAO;GAClD,IAAI,aAAa,OAAO,GAAG,KAAK,aAAa,OAAO;GACrD,CAAC;IAEL"}
|
package/dist/web-types.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "http://json.schemastore.org/web-types",
|
|
3
3
|
"framework": "vue",
|
|
4
4
|
"name": "@rotki/ui-library",
|
|
5
|
-
"version": "2.
|
|
5
|
+
"version": "2.20.1",
|
|
6
6
|
"js-types-syntax": "typescript",
|
|
7
7
|
"description-markup": "markdown",
|
|
8
8
|
"contributions": {
|
|
@@ -1516,6 +1516,176 @@
|
|
|
1516
1516
|
]
|
|
1517
1517
|
}
|
|
1518
1518
|
},
|
|
1519
|
+
{
|
|
1520
|
+
"name": "RuiTimezoneSelect",
|
|
1521
|
+
"source": {
|
|
1522
|
+
"module": "@rotki/ui-library/components/date-time-picker/RuiTimezoneSelect.vue",
|
|
1523
|
+
"symbol": "RuiTimezoneSelect"
|
|
1524
|
+
},
|
|
1525
|
+
"attributes": [
|
|
1526
|
+
{
|
|
1527
|
+
"name": "disabled",
|
|
1528
|
+
"description": "",
|
|
1529
|
+
"required": false,
|
|
1530
|
+
"default": "false",
|
|
1531
|
+
"value": {
|
|
1532
|
+
"kind": "expression",
|
|
1533
|
+
"type": "boolean | undefined"
|
|
1534
|
+
}
|
|
1535
|
+
},
|
|
1536
|
+
{
|
|
1537
|
+
"name": "read-only",
|
|
1538
|
+
"description": "",
|
|
1539
|
+
"required": false,
|
|
1540
|
+
"default": "false",
|
|
1541
|
+
"value": {
|
|
1542
|
+
"kind": "expression",
|
|
1543
|
+
"type": "boolean | undefined"
|
|
1544
|
+
}
|
|
1545
|
+
},
|
|
1546
|
+
{
|
|
1547
|
+
"name": "dense",
|
|
1548
|
+
"description": "",
|
|
1549
|
+
"required": false,
|
|
1550
|
+
"default": "false",
|
|
1551
|
+
"value": {
|
|
1552
|
+
"kind": "expression",
|
|
1553
|
+
"type": "boolean | undefined"
|
|
1554
|
+
}
|
|
1555
|
+
},
|
|
1556
|
+
{
|
|
1557
|
+
"name": "clearable",
|
|
1558
|
+
"description": "",
|
|
1559
|
+
"required": false,
|
|
1560
|
+
"default": "false",
|
|
1561
|
+
"value": {
|
|
1562
|
+
"kind": "expression",
|
|
1563
|
+
"type": "boolean | undefined"
|
|
1564
|
+
}
|
|
1565
|
+
},
|
|
1566
|
+
{
|
|
1567
|
+
"name": "label",
|
|
1568
|
+
"description": "",
|
|
1569
|
+
"required": false,
|
|
1570
|
+
"default": "'Timezone'",
|
|
1571
|
+
"value": {
|
|
1572
|
+
"kind": "expression",
|
|
1573
|
+
"type": "string | undefined"
|
|
1574
|
+
}
|
|
1575
|
+
},
|
|
1576
|
+
{
|
|
1577
|
+
"name": "variant",
|
|
1578
|
+
"description": "",
|
|
1579
|
+
"required": false,
|
|
1580
|
+
"default": "'outlined'",
|
|
1581
|
+
"value": {
|
|
1582
|
+
"kind": "expression",
|
|
1583
|
+
"type": "TextInputVariant | undefined"
|
|
1584
|
+
}
|
|
1585
|
+
},
|
|
1586
|
+
{
|
|
1587
|
+
"name": "hint",
|
|
1588
|
+
"description": "",
|
|
1589
|
+
"required": false,
|
|
1590
|
+
"value": {
|
|
1591
|
+
"kind": "expression",
|
|
1592
|
+
"type": "string | undefined"
|
|
1593
|
+
}
|
|
1594
|
+
},
|
|
1595
|
+
{
|
|
1596
|
+
"name": "error-messages",
|
|
1597
|
+
"description": "",
|
|
1598
|
+
"required": false,
|
|
1599
|
+
"value": {
|
|
1600
|
+
"kind": "expression",
|
|
1601
|
+
"type": "string | string[] | undefined"
|
|
1602
|
+
}
|
|
1603
|
+
},
|
|
1604
|
+
{
|
|
1605
|
+
"name": "success-messages",
|
|
1606
|
+
"description": "",
|
|
1607
|
+
"required": false,
|
|
1608
|
+
"value": {
|
|
1609
|
+
"kind": "expression",
|
|
1610
|
+
"type": "string | string[] | undefined"
|
|
1611
|
+
}
|
|
1612
|
+
},
|
|
1613
|
+
{
|
|
1614
|
+
"name": "hide-details",
|
|
1615
|
+
"description": "",
|
|
1616
|
+
"required": false,
|
|
1617
|
+
"default": "false",
|
|
1618
|
+
"value": {
|
|
1619
|
+
"kind": "expression",
|
|
1620
|
+
"type": "boolean | undefined"
|
|
1621
|
+
}
|
|
1622
|
+
},
|
|
1623
|
+
{
|
|
1624
|
+
"name": "placeholder",
|
|
1625
|
+
"description": "",
|
|
1626
|
+
"required": false,
|
|
1627
|
+
"value": {
|
|
1628
|
+
"kind": "expression",
|
|
1629
|
+
"type": "string | undefined"
|
|
1630
|
+
}
|
|
1631
|
+
},
|
|
1632
|
+
{
|
|
1633
|
+
"name": "required",
|
|
1634
|
+
"description": "",
|
|
1635
|
+
"required": false,
|
|
1636
|
+
"default": "false",
|
|
1637
|
+
"value": {
|
|
1638
|
+
"kind": "expression",
|
|
1639
|
+
"type": "boolean | undefined"
|
|
1640
|
+
}
|
|
1641
|
+
},
|
|
1642
|
+
{
|
|
1643
|
+
"name": "class-names",
|
|
1644
|
+
"description": "",
|
|
1645
|
+
"required": false,
|
|
1646
|
+
"value": {
|
|
1647
|
+
"kind": "expression",
|
|
1648
|
+
"type": "RuiAutoCompleteClassNames | undefined"
|
|
1649
|
+
}
|
|
1650
|
+
},
|
|
1651
|
+
{
|
|
1652
|
+
"name": "menu-options",
|
|
1653
|
+
"description": "",
|
|
1654
|
+
"required": false,
|
|
1655
|
+
"value": {
|
|
1656
|
+
"kind": "expression",
|
|
1657
|
+
"type": "MenuProps | undefined"
|
|
1658
|
+
}
|
|
1659
|
+
},
|
|
1660
|
+
{
|
|
1661
|
+
"name": "model-value",
|
|
1662
|
+
"description": "",
|
|
1663
|
+
"required": true,
|
|
1664
|
+
"value": {
|
|
1665
|
+
"kind": "expression",
|
|
1666
|
+
"type": "string | undefined"
|
|
1667
|
+
}
|
|
1668
|
+
}
|
|
1669
|
+
],
|
|
1670
|
+
"slots": [],
|
|
1671
|
+
"js": {
|
|
1672
|
+
"events": [
|
|
1673
|
+
{
|
|
1674
|
+
"name": "update:modelValue",
|
|
1675
|
+
"arguments": [
|
|
1676
|
+
{
|
|
1677
|
+
"name": "argument",
|
|
1678
|
+
"type": "[value: string | undefined]"
|
|
1679
|
+
}
|
|
1680
|
+
]
|
|
1681
|
+
}
|
|
1682
|
+
]
|
|
1683
|
+
},
|
|
1684
|
+
"vue-model": {
|
|
1685
|
+
"prop": "modelValue",
|
|
1686
|
+
"event": "update:modelValue"
|
|
1687
|
+
}
|
|
1688
|
+
},
|
|
1519
1689
|
{
|
|
1520
1690
|
"name": "RuiDivider",
|
|
1521
1691
|
"source": {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rotki/ui-library",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.20.1",
|
|
4
4
|
"description": "A vue design system and component library for rotki",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"keywords": [
|
|
@@ -144,7 +144,7 @@
|
|
|
144
144
|
},
|
|
145
145
|
"scripts": {
|
|
146
146
|
"build:prod": "tsx scripts/dist-build.mjs",
|
|
147
|
-
"build": "pnpm run generate-icons && vite build && cp
|
|
147
|
+
"build": "pnpm run generate-icons && vite build && cp src/vite-plugin/client.d.ts dist/vite-plugin/",
|
|
148
148
|
"build:storybook": "STORYBOOK=true storybook build",
|
|
149
149
|
"build:tailwind": "tailwindcss -o dist/style.css --minify",
|
|
150
150
|
"build:types": "vue-tsc -p tsconfig.build.json",
|
|
File without changes
|