@rotki/ui-library 2.9.1 → 2.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/accordions/accordion/RuiAccordion.vue.d.ts +3 -3
- package/dist/components/accordions/accordion/RuiAccordion.vue.js +87 -8
- package/dist/components/accordions/accordion/RuiAccordion.vue.js.map +1 -1
- package/dist/components/accordions/accordion/RuiAccordion.vue2.js +1 -62
- package/dist/components/accordions/accordion/RuiAccordion.vue2.js.map +1 -1
- package/dist/components/alerts/RuiAlert.vue.d.ts +3 -3
- package/dist/components/buttons/button/RuiButton.vue.d.ts +9 -5
- package/dist/components/buttons/button-group/RuiButtonGroup.vue.d.ts +9 -5
- package/dist/components/calendar/RuiCalendar.vue.js +12 -0
- package/dist/components/calendar/RuiCalendar.vue.js.map +1 -1
- package/dist/components/calendar/RuiCalendarMenu.vue.js +1 -1
- package/dist/components/calendar/RuiCalendarMenu.vue2.js +2 -2
- package/dist/components/calendar/RuiCalendarMenu.vue2.js.map +1 -1
- package/dist/components/calendar/state.js +1 -1
- package/dist/components/calendar/state.js.map +1 -1
- package/dist/components/cards/RuiCard.vue.d.ts +6 -6
- package/dist/components/date-time-picker/RuiDateTimePicker.vue.d.ts +3 -4
- package/dist/components/date-time-picker/RuiDateTimePicker.vue2.js +70 -251
- package/dist/components/date-time-picker/RuiDateTimePicker.vue2.js.map +1 -1
- package/dist/components/date-time-picker/use-date-time-selection.d.ts +38 -0
- package/dist/components/date-time-picker/use-date-time-selection.js +286 -0
- package/dist/components/date-time-picker/use-date-time-selection.js.map +1 -0
- package/dist/components/date-time-picker/use-keyboard-handler.d.ts +2 -0
- package/dist/components/date-time-picker/use-keyboard-handler.js +71 -60
- package/dist/components/date-time-picker/use-keyboard-handler.js.map +1 -1
- package/dist/components/forms/auto-complete/RuiAutoComplete.vue.d.ts +29 -25
- package/dist/components/forms/auto-complete/RuiAutoComplete.vue2.js +5 -3
- package/dist/components/forms/auto-complete/RuiAutoComplete.vue2.js.map +1 -1
- package/dist/components/forms/checkbox/RuiCheckbox.vue.d.ts +2 -2
- package/dist/components/forms/checkbox/RuiCheckbox.vue2.js +13 -8
- package/dist/components/forms/checkbox/RuiCheckbox.vue2.js.map +1 -1
- package/dist/components/forms/radio-button/radio/RuiRadio.vue.d.ts +9 -5
- package/dist/components/forms/radio-button/radio/RuiRadio.vue2.js +12 -8
- package/dist/components/forms/radio-button/radio/RuiRadio.vue2.js.map +1 -1
- package/dist/components/forms/radio-button/radio-group/RuiRadioGroup.vue.d.ts +9 -5
- package/dist/components/forms/revealable-text-field/RuiRevealableTextField.vue.d.ts +4 -4
- package/dist/components/forms/select/RuiMenuSelect.vue.d.ts +29 -25
- package/dist/components/forms/select/RuiMenuSelect.vue2.js +4 -2
- package/dist/components/forms/select/RuiMenuSelect.vue2.js.map +1 -1
- package/dist/components/forms/slider/RuiSlider.vue2.js +14 -11
- package/dist/components/forms/slider/RuiSlider.vue2.js.map +1 -1
- package/dist/components/forms/switch/RuiSwitch.vue2.js +10 -7
- package/dist/components/forms/switch/RuiSwitch.vue2.js.map +1 -1
- package/dist/components/forms/text-area/RuiTextArea.vue.d.ts +3 -3
- package/dist/components/forms/text-area/RuiTextArea.vue2.js +15 -12
- package/dist/components/forms/text-area/RuiTextArea.vue2.js.map +1 -1
- package/dist/components/forms/text-field/RuiTextField.vue.d.ts +3 -3
- package/dist/components/forms/text-field/RuiTextField.vue2.js +13 -10
- package/dist/components/forms/text-field/RuiTextField.vue2.js.map +1 -1
- package/dist/components/icons/IconBrowser.vue.d.ts +3 -0
- package/dist/components/icons/LazyIcon.vue.d.ts +10 -0
- package/dist/components/overlays/badge/RuiBadge.vue.d.ts +3 -3
- package/dist/components/overlays/bottom-sheet/RuiBottomSheet.vue.d.ts +2 -2
- package/dist/components/overlays/dialog/RuiDialog.vue.d.ts +2 -2
- package/dist/components/overlays/menu/RuiMenu.vue.d.ts +2 -2
- package/dist/components/overlays/navigation-drawer/RuiNavigationDrawer.vue.d.ts +2 -2
- package/dist/components/overlays/notification/RuiNotification.vue.d.ts +2 -2
- package/dist/components/overlays/tooltip/RuiTooltip.vue.d.ts +2 -2
- package/dist/components/tables/RuiDataTable.vue.d.ts +9 -5
- package/dist/components/tables/RuiExpandButton.vue.d.ts +2 -2
- package/dist/components/tables/RuiTableHead.vue.d.ts +9 -5
- package/dist/components/tabs/tab/RuiTab.vue.d.ts +1 -1
- package/dist/components/tabs/tab-item/RuiTabItem.vue.d.ts +3 -3
- package/dist/components/tabs/tab-items/RuiTabItems.vue.d.ts +9 -5
- package/dist/components/time-picker/RuiTimePicker.vue2.js +0 -1
- package/dist/components/time-picker/RuiTimePicker.vue2.js.map +1 -1
- package/dist/composables/defaults/table.js +1 -1
- package/dist/composables/defaults/table.js.map +1 -1
- package/dist/composables/icons.js +1 -1
- package/dist/composables/icons.js.map +1 -1
- package/dist/composables/use-rui-i18n.js +1 -1
- package/dist/composables/use-rui-i18n.js.map +1 -1
- package/dist/style.css +98 -61
- package/dist/web-types.json +116 -72
- package/package.json +31 -40
- package/dist/components/accordions/accordion/RuiAccordion.vue3.js +0 -18
- package/dist/components/accordions/accordion/RuiAccordion.vue3.js.map +0 -1
|
@@ -27,17 +27,19 @@ export interface Props<TValue, TItem> {
|
|
|
27
27
|
noDataText?: string;
|
|
28
28
|
required?: boolean;
|
|
29
29
|
}
|
|
30
|
-
declare const __VLS_export: <TValue, TItem>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>,
|
|
31
|
-
props: __VLS_PrettifyLocal<(Props<TValue, TItem> & {
|
|
30
|
+
declare const __VLS_export: <TValue, TItem>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
|
|
31
|
+
props: import("vue").PublicProps & __VLS_PrettifyLocal<(Props<TValue, TItem> & {
|
|
32
32
|
modelValue: TValue | undefined;
|
|
33
33
|
}) & {
|
|
34
34
|
"onUpdate:modelValue"?: ((value: TValue | undefined) => any) | undefined;
|
|
35
|
-
}> &
|
|
35
|
+
}> & (typeof globalThis extends {
|
|
36
|
+
__VLS_PROPS_FALLBACK: infer P;
|
|
37
|
+
} ? P : {});
|
|
36
38
|
expose: (exposed: {}) => void;
|
|
37
39
|
attrs: any;
|
|
38
40
|
slots: {
|
|
39
41
|
activator?: (props: {
|
|
40
|
-
disabled: import("@vue/reactivity").DistributeRef<[(Readonly<{
|
|
42
|
+
disabled: boolean & import("@vue/reactivity").DistributeRef<[(Readonly<{
|
|
41
43
|
options: TItem[];
|
|
42
44
|
menuOptions: MenuProps;
|
|
43
45
|
labelClass: string;
|
|
@@ -64,7 +66,7 @@ declare const __VLS_export: <TValue, TItem>(__VLS_props: NonNullable<Awaited<typ
|
|
|
64
66
|
readonly hideNoData: boolean;
|
|
65
67
|
readonly noDataText: string;
|
|
66
68
|
readonly required: boolean;
|
|
67
|
-
} & ("disabled" | "autoSelectFirst" | "dense" | "loading" | "required" | "hideDetails" | "clearable" | "readOnly" | "hideNoData" | (
|
|
69
|
+
} & ("disabled" | "autoSelectFirst" | "dense" | "loading" | "required" | "hideDetails" | "clearable" | "readOnly" | "hideNoData" | (KeyOfType<TItem, TValue extends (infer U)[] ? U : TValue> | undefined extends boolean | undefined ? (boolean & KeyOfType<TItem, TValue extends (infer U)[] ? U : TValue>) | undefined extends undefined ? never : "keyAttr" : never) | (keyof TItem | undefined extends boolean | undefined ? (boolean & keyof TItem) | undefined extends undefined ? never : "textAttr" : never) extends infer T extends keyof T_1 ? { readonly [K in T]-?: K extends "label" | "disabled" | "keyAttr" | "textAttr" | "appendWidth" | "autoSelectFirst" | "dense" | "itemHeight" | "prependWidth" | "variant" | "loading" | "errorMessages" | "successMessages" | "hint" | "required" | "hideDetails" | "clearable" | "readOnly" | "hideNoData" | "noDataText" ? {
|
|
68
70
|
disabled: false;
|
|
69
71
|
loading: false;
|
|
70
72
|
readOnly: false;
|
|
@@ -112,7 +114,7 @@ declare const __VLS_export: <TValue, TItem>(__VLS_props: NonNullable<Awaited<typ
|
|
|
112
114
|
readonly hideNoData: boolean;
|
|
113
115
|
readonly noDataText: string;
|
|
114
116
|
readonly required: boolean;
|
|
115
|
-
} & ("disabled" | "autoSelectFirst" | "dense" | "loading" | "required" | "hideDetails" | "clearable" | "readOnly" | "hideNoData" | (
|
|
117
|
+
} & ("disabled" | "autoSelectFirst" | "dense" | "loading" | "required" | "hideDetails" | "clearable" | "readOnly" | "hideNoData" | (KeyOfType<TItem, TValue extends (infer U)[] ? U : TValue> | undefined extends boolean | undefined ? (boolean & KeyOfType<TItem, TValue extends (infer U)[] ? U : TValue>) | undefined extends undefined ? never : "keyAttr" : never) | (keyof TItem | undefined extends boolean | undefined ? (boolean & keyof TItem) | undefined extends undefined ? never : "textAttr" : never) extends infer T_2 extends keyof T_1 ? { readonly [K in T_2]-?: K extends "label" | "disabled" | "keyAttr" | "textAttr" | "appendWidth" | "autoSelectFirst" | "dense" | "itemHeight" | "prependWidth" | "variant" | "loading" | "errorMessages" | "successMessages" | "hint" | "required" | "hideDetails" | "clearable" | "readOnly" | "hideNoData" | "noDataText" ? {
|
|
116
118
|
disabled: false;
|
|
117
119
|
loading: false;
|
|
118
120
|
readOnly: false;
|
|
@@ -160,7 +162,7 @@ declare const __VLS_export: <TValue, TItem>(__VLS_props: NonNullable<Awaited<typ
|
|
|
160
162
|
readonly hideNoData: boolean;
|
|
161
163
|
readonly noDataText: string;
|
|
162
164
|
readonly required: boolean;
|
|
163
|
-
} & ("disabled" | "autoSelectFirst" | "dense" | "loading" | "required" | "hideDetails" | "clearable" | "readOnly" | "hideNoData" | (
|
|
165
|
+
} & ("disabled" | "autoSelectFirst" | "dense" | "loading" | "required" | "hideDetails" | "clearable" | "readOnly" | "hideNoData" | (KeyOfType<TItem, TValue extends (infer U)[] ? U : TValue> | undefined extends boolean | undefined ? (boolean & KeyOfType<TItem, TValue extends (infer U)[] ? U : TValue>) | undefined extends undefined ? never : "keyAttr" : never) | (keyof TItem | undefined extends boolean | undefined ? (boolean & keyof TItem) | undefined extends undefined ? never : "textAttr" : never) extends infer T_3 extends keyof T_1 ? { readonly [K in T_3]-?: K extends "label" | "disabled" | "keyAttr" | "textAttr" | "appendWidth" | "autoSelectFirst" | "dense" | "itemHeight" | "prependWidth" | "variant" | "loading" | "errorMessages" | "successMessages" | "hint" | "required" | "hideDetails" | "clearable" | "readOnly" | "hideNoData" | "noDataText" ? {
|
|
164
166
|
disabled: false;
|
|
165
167
|
loading: false;
|
|
166
168
|
readOnly: false;
|
|
@@ -208,7 +210,7 @@ declare const __VLS_export: <TValue, TItem>(__VLS_props: NonNullable<Awaited<typ
|
|
|
208
210
|
readonly hideNoData: boolean;
|
|
209
211
|
readonly noDataText: string;
|
|
210
212
|
readonly required: boolean;
|
|
211
|
-
} & ("disabled" | "autoSelectFirst" | "dense" | "loading" | "required" | "hideDetails" | "clearable" | "readOnly" | "hideNoData" | (
|
|
213
|
+
} & ("disabled" | "autoSelectFirst" | "dense" | "loading" | "required" | "hideDetails" | "clearable" | "readOnly" | "hideNoData" | (KeyOfType<TItem, TValue extends (infer U)[] ? U : TValue> | undefined extends boolean | undefined ? (boolean & KeyOfType<TItem, TValue extends (infer U)[] ? U : TValue>) | undefined extends undefined ? never : "keyAttr" : never) | (keyof TItem | undefined extends boolean | undefined ? (boolean & keyof TItem) | undefined extends undefined ? never : "textAttr" : never) extends infer T_4 extends keyof T_1 ? { readonly [K in T_4]-?: K extends "label" | "disabled" | "keyAttr" | "textAttr" | "appendWidth" | "autoSelectFirst" | "dense" | "itemHeight" | "prependWidth" | "variant" | "loading" | "errorMessages" | "successMessages" | "hint" | "required" | "hideDetails" | "clearable" | "readOnly" | "hideNoData" | "noDataText" ? {
|
|
212
214
|
disabled: false;
|
|
213
215
|
loading: false;
|
|
214
216
|
readOnly: false;
|
|
@@ -252,7 +254,7 @@ declare const __VLS_export: <TValue, TItem>(__VLS_props: NonNullable<Awaited<typ
|
|
|
252
254
|
}) => any;
|
|
253
255
|
} & {
|
|
254
256
|
'item.prepend'?: (props: {
|
|
255
|
-
disabled: import("@vue/reactivity").DistributeRef<[(Readonly<{
|
|
257
|
+
disabled: boolean & import("@vue/reactivity").DistributeRef<[(Readonly<{
|
|
256
258
|
options: TItem[];
|
|
257
259
|
menuOptions: MenuProps;
|
|
258
260
|
labelClass: string;
|
|
@@ -279,7 +281,7 @@ declare const __VLS_export: <TValue, TItem>(__VLS_props: NonNullable<Awaited<typ
|
|
|
279
281
|
readonly hideNoData: boolean;
|
|
280
282
|
readonly noDataText: string;
|
|
281
283
|
readonly required: boolean;
|
|
282
|
-
} & ("disabled" | "autoSelectFirst" | "dense" | "loading" | "required" | "hideDetails" | "clearable" | "readOnly" | "hideNoData" | (
|
|
284
|
+
} & ("disabled" | "autoSelectFirst" | "dense" | "loading" | "required" | "hideDetails" | "clearable" | "readOnly" | "hideNoData" | (KeyOfType<TItem, TValue extends (infer U)[] ? U : TValue> | undefined extends boolean | undefined ? (boolean & KeyOfType<TItem, TValue extends (infer U)[] ? U : TValue>) | undefined extends undefined ? never : "keyAttr" : never) | (keyof TItem | undefined extends boolean | undefined ? (boolean & keyof TItem) | undefined extends undefined ? never : "textAttr" : never) extends infer T extends keyof T_1 ? { readonly [K in T]-?: K extends "label" | "disabled" | "keyAttr" | "textAttr" | "appendWidth" | "autoSelectFirst" | "dense" | "itemHeight" | "prependWidth" | "variant" | "loading" | "errorMessages" | "successMessages" | "hint" | "required" | "hideDetails" | "clearable" | "readOnly" | "hideNoData" | "noDataText" ? {
|
|
283
285
|
disabled: false;
|
|
284
286
|
loading: false;
|
|
285
287
|
readOnly: false;
|
|
@@ -327,7 +329,7 @@ declare const __VLS_export: <TValue, TItem>(__VLS_props: NonNullable<Awaited<typ
|
|
|
327
329
|
readonly hideNoData: boolean;
|
|
328
330
|
readonly noDataText: string;
|
|
329
331
|
readonly required: boolean;
|
|
330
|
-
} & ("disabled" | "autoSelectFirst" | "dense" | "loading" | "required" | "hideDetails" | "clearable" | "readOnly" | "hideNoData" | (
|
|
332
|
+
} & ("disabled" | "autoSelectFirst" | "dense" | "loading" | "required" | "hideDetails" | "clearable" | "readOnly" | "hideNoData" | (KeyOfType<TItem, TValue extends (infer U)[] ? U : TValue> | undefined extends boolean | undefined ? (boolean & KeyOfType<TItem, TValue extends (infer U)[] ? U : TValue>) | undefined extends undefined ? never : "keyAttr" : never) | (keyof TItem | undefined extends boolean | undefined ? (boolean & keyof TItem) | undefined extends undefined ? never : "textAttr" : never) extends infer T_2 extends keyof T_1 ? { readonly [K in T_2]-?: K extends "label" | "disabled" | "keyAttr" | "textAttr" | "appendWidth" | "autoSelectFirst" | "dense" | "itemHeight" | "prependWidth" | "variant" | "loading" | "errorMessages" | "successMessages" | "hint" | "required" | "hideDetails" | "clearable" | "readOnly" | "hideNoData" | "noDataText" ? {
|
|
331
333
|
disabled: false;
|
|
332
334
|
loading: false;
|
|
333
335
|
readOnly: false;
|
|
@@ -375,7 +377,7 @@ declare const __VLS_export: <TValue, TItem>(__VLS_props: NonNullable<Awaited<typ
|
|
|
375
377
|
readonly hideNoData: boolean;
|
|
376
378
|
readonly noDataText: string;
|
|
377
379
|
readonly required: boolean;
|
|
378
|
-
} & ("disabled" | "autoSelectFirst" | "dense" | "loading" | "required" | "hideDetails" | "clearable" | "readOnly" | "hideNoData" | (
|
|
380
|
+
} & ("disabled" | "autoSelectFirst" | "dense" | "loading" | "required" | "hideDetails" | "clearable" | "readOnly" | "hideNoData" | (KeyOfType<TItem, TValue extends (infer U)[] ? U : TValue> | undefined extends boolean | undefined ? (boolean & KeyOfType<TItem, TValue extends (infer U)[] ? U : TValue>) | undefined extends undefined ? never : "keyAttr" : never) | (keyof TItem | undefined extends boolean | undefined ? (boolean & keyof TItem) | undefined extends undefined ? never : "textAttr" : never) extends infer T_3 extends keyof T_1 ? { readonly [K in T_3]-?: K extends "label" | "disabled" | "keyAttr" | "textAttr" | "appendWidth" | "autoSelectFirst" | "dense" | "itemHeight" | "prependWidth" | "variant" | "loading" | "errorMessages" | "successMessages" | "hint" | "required" | "hideDetails" | "clearable" | "readOnly" | "hideNoData" | "noDataText" ? {
|
|
379
381
|
disabled: false;
|
|
380
382
|
loading: false;
|
|
381
383
|
readOnly: false;
|
|
@@ -423,7 +425,7 @@ declare const __VLS_export: <TValue, TItem>(__VLS_props: NonNullable<Awaited<typ
|
|
|
423
425
|
readonly hideNoData: boolean;
|
|
424
426
|
readonly noDataText: string;
|
|
425
427
|
readonly required: boolean;
|
|
426
|
-
} & ("disabled" | "autoSelectFirst" | "dense" | "loading" | "required" | "hideDetails" | "clearable" | "readOnly" | "hideNoData" | (
|
|
428
|
+
} & ("disabled" | "autoSelectFirst" | "dense" | "loading" | "required" | "hideDetails" | "clearable" | "readOnly" | "hideNoData" | (KeyOfType<TItem, TValue extends (infer U)[] ? U : TValue> | undefined extends boolean | undefined ? (boolean & KeyOfType<TItem, TValue extends (infer U)[] ? U : TValue>) | undefined extends undefined ? never : "keyAttr" : never) | (keyof TItem | undefined extends boolean | undefined ? (boolean & keyof TItem) | undefined extends undefined ? never : "textAttr" : never) extends infer T_4 extends keyof T_1 ? { readonly [K in T_4]-?: K extends "label" | "disabled" | "keyAttr" | "textAttr" | "appendWidth" | "autoSelectFirst" | "dense" | "itemHeight" | "prependWidth" | "variant" | "loading" | "errorMessages" | "successMessages" | "hint" | "required" | "hideDetails" | "clearable" | "readOnly" | "hideNoData" | "noDataText" ? {
|
|
427
429
|
disabled: false;
|
|
428
430
|
loading: false;
|
|
429
431
|
readOnly: false;
|
|
@@ -450,7 +452,7 @@ declare const __VLS_export: <TValue, TItem>(__VLS_props: NonNullable<Awaited<typ
|
|
|
450
452
|
}) => any;
|
|
451
453
|
} & {
|
|
452
454
|
item?: (props: {
|
|
453
|
-
disabled: import("@vue/reactivity").DistributeRef<[(Readonly<{
|
|
455
|
+
disabled: boolean & import("@vue/reactivity").DistributeRef<[(Readonly<{
|
|
454
456
|
options: TItem[];
|
|
455
457
|
menuOptions: MenuProps;
|
|
456
458
|
labelClass: string;
|
|
@@ -477,7 +479,7 @@ declare const __VLS_export: <TValue, TItem>(__VLS_props: NonNullable<Awaited<typ
|
|
|
477
479
|
readonly hideNoData: boolean;
|
|
478
480
|
readonly noDataText: string;
|
|
479
481
|
readonly required: boolean;
|
|
480
|
-
} & ("disabled" | "autoSelectFirst" | "dense" | "loading" | "required" | "hideDetails" | "clearable" | "readOnly" | "hideNoData" | (
|
|
482
|
+
} & ("disabled" | "autoSelectFirst" | "dense" | "loading" | "required" | "hideDetails" | "clearable" | "readOnly" | "hideNoData" | (KeyOfType<TItem, TValue extends (infer U)[] ? U : TValue> | undefined extends boolean | undefined ? (boolean & KeyOfType<TItem, TValue extends (infer U)[] ? U : TValue>) | undefined extends undefined ? never : "keyAttr" : never) | (keyof TItem | undefined extends boolean | undefined ? (boolean & keyof TItem) | undefined extends undefined ? never : "textAttr" : never) extends infer T extends keyof T_1 ? { readonly [K in T]-?: K extends "label" | "disabled" | "keyAttr" | "textAttr" | "appendWidth" | "autoSelectFirst" | "dense" | "itemHeight" | "prependWidth" | "variant" | "loading" | "errorMessages" | "successMessages" | "hint" | "required" | "hideDetails" | "clearable" | "readOnly" | "hideNoData" | "noDataText" ? {
|
|
481
483
|
disabled: false;
|
|
482
484
|
loading: false;
|
|
483
485
|
readOnly: false;
|
|
@@ -525,7 +527,7 @@ declare const __VLS_export: <TValue, TItem>(__VLS_props: NonNullable<Awaited<typ
|
|
|
525
527
|
readonly hideNoData: boolean;
|
|
526
528
|
readonly noDataText: string;
|
|
527
529
|
readonly required: boolean;
|
|
528
|
-
} & ("disabled" | "autoSelectFirst" | "dense" | "loading" | "required" | "hideDetails" | "clearable" | "readOnly" | "hideNoData" | (
|
|
530
|
+
} & ("disabled" | "autoSelectFirst" | "dense" | "loading" | "required" | "hideDetails" | "clearable" | "readOnly" | "hideNoData" | (KeyOfType<TItem, TValue extends (infer U)[] ? U : TValue> | undefined extends boolean | undefined ? (boolean & KeyOfType<TItem, TValue extends (infer U)[] ? U : TValue>) | undefined extends undefined ? never : "keyAttr" : never) | (keyof TItem | undefined extends boolean | undefined ? (boolean & keyof TItem) | undefined extends undefined ? never : "textAttr" : never) extends infer T_2 extends keyof T_1 ? { readonly [K in T_2]-?: K extends "label" | "disabled" | "keyAttr" | "textAttr" | "appendWidth" | "autoSelectFirst" | "dense" | "itemHeight" | "prependWidth" | "variant" | "loading" | "errorMessages" | "successMessages" | "hint" | "required" | "hideDetails" | "clearable" | "readOnly" | "hideNoData" | "noDataText" ? {
|
|
529
531
|
disabled: false;
|
|
530
532
|
loading: false;
|
|
531
533
|
readOnly: false;
|
|
@@ -573,7 +575,7 @@ declare const __VLS_export: <TValue, TItem>(__VLS_props: NonNullable<Awaited<typ
|
|
|
573
575
|
readonly hideNoData: boolean;
|
|
574
576
|
readonly noDataText: string;
|
|
575
577
|
readonly required: boolean;
|
|
576
|
-
} & ("disabled" | "autoSelectFirst" | "dense" | "loading" | "required" | "hideDetails" | "clearable" | "readOnly" | "hideNoData" | (
|
|
578
|
+
} & ("disabled" | "autoSelectFirst" | "dense" | "loading" | "required" | "hideDetails" | "clearable" | "readOnly" | "hideNoData" | (KeyOfType<TItem, TValue extends (infer U)[] ? U : TValue> | undefined extends boolean | undefined ? (boolean & KeyOfType<TItem, TValue extends (infer U)[] ? U : TValue>) | undefined extends undefined ? never : "keyAttr" : never) | (keyof TItem | undefined extends boolean | undefined ? (boolean & keyof TItem) | undefined extends undefined ? never : "textAttr" : never) extends infer T_3 extends keyof T_1 ? { readonly [K in T_3]-?: K extends "label" | "disabled" | "keyAttr" | "textAttr" | "appendWidth" | "autoSelectFirst" | "dense" | "itemHeight" | "prependWidth" | "variant" | "loading" | "errorMessages" | "successMessages" | "hint" | "required" | "hideDetails" | "clearable" | "readOnly" | "hideNoData" | "noDataText" ? {
|
|
577
579
|
disabled: false;
|
|
578
580
|
loading: false;
|
|
579
581
|
readOnly: false;
|
|
@@ -621,7 +623,7 @@ declare const __VLS_export: <TValue, TItem>(__VLS_props: NonNullable<Awaited<typ
|
|
|
621
623
|
readonly hideNoData: boolean;
|
|
622
624
|
readonly noDataText: string;
|
|
623
625
|
readonly required: boolean;
|
|
624
|
-
} & ("disabled" | "autoSelectFirst" | "dense" | "loading" | "required" | "hideDetails" | "clearable" | "readOnly" | "hideNoData" | (
|
|
626
|
+
} & ("disabled" | "autoSelectFirst" | "dense" | "loading" | "required" | "hideDetails" | "clearable" | "readOnly" | "hideNoData" | (KeyOfType<TItem, TValue extends (infer U)[] ? U : TValue> | undefined extends boolean | undefined ? (boolean & KeyOfType<TItem, TValue extends (infer U)[] ? U : TValue>) | undefined extends undefined ? never : "keyAttr" : never) | (keyof TItem | undefined extends boolean | undefined ? (boolean & keyof TItem) | undefined extends undefined ? never : "textAttr" : never) extends infer T_4 extends keyof T_1 ? { readonly [K in T_4]-?: K extends "label" | "disabled" | "keyAttr" | "textAttr" | "appendWidth" | "autoSelectFirst" | "dense" | "itemHeight" | "prependWidth" | "variant" | "loading" | "errorMessages" | "successMessages" | "hint" | "required" | "hideDetails" | "clearable" | "readOnly" | "hideNoData" | "noDataText" ? {
|
|
625
627
|
disabled: false;
|
|
626
628
|
loading: false;
|
|
627
629
|
readOnly: false;
|
|
@@ -648,7 +650,7 @@ declare const __VLS_export: <TValue, TItem>(__VLS_props: NonNullable<Awaited<typ
|
|
|
648
650
|
}) => any;
|
|
649
651
|
} & {
|
|
650
652
|
'item.append'?: (props: {
|
|
651
|
-
disabled: import("@vue/reactivity").DistributeRef<[(Readonly<{
|
|
653
|
+
disabled: boolean & import("@vue/reactivity").DistributeRef<[(Readonly<{
|
|
652
654
|
options: TItem[];
|
|
653
655
|
menuOptions: MenuProps;
|
|
654
656
|
labelClass: string;
|
|
@@ -675,7 +677,7 @@ declare const __VLS_export: <TValue, TItem>(__VLS_props: NonNullable<Awaited<typ
|
|
|
675
677
|
readonly hideNoData: boolean;
|
|
676
678
|
readonly noDataText: string;
|
|
677
679
|
readonly required: boolean;
|
|
678
|
-
} & ("disabled" | "autoSelectFirst" | "dense" | "loading" | "required" | "hideDetails" | "clearable" | "readOnly" | "hideNoData" | (
|
|
680
|
+
} & ("disabled" | "autoSelectFirst" | "dense" | "loading" | "required" | "hideDetails" | "clearable" | "readOnly" | "hideNoData" | (KeyOfType<TItem, TValue extends (infer U)[] ? U : TValue> | undefined extends boolean | undefined ? (boolean & KeyOfType<TItem, TValue extends (infer U)[] ? U : TValue>) | undefined extends undefined ? never : "keyAttr" : never) | (keyof TItem | undefined extends boolean | undefined ? (boolean & keyof TItem) | undefined extends undefined ? never : "textAttr" : never) extends infer T extends keyof T_1 ? { readonly [K in T]-?: K extends "label" | "disabled" | "keyAttr" | "textAttr" | "appendWidth" | "autoSelectFirst" | "dense" | "itemHeight" | "prependWidth" | "variant" | "loading" | "errorMessages" | "successMessages" | "hint" | "required" | "hideDetails" | "clearable" | "readOnly" | "hideNoData" | "noDataText" ? {
|
|
679
681
|
disabled: false;
|
|
680
682
|
loading: false;
|
|
681
683
|
readOnly: false;
|
|
@@ -723,7 +725,7 @@ declare const __VLS_export: <TValue, TItem>(__VLS_props: NonNullable<Awaited<typ
|
|
|
723
725
|
readonly hideNoData: boolean;
|
|
724
726
|
readonly noDataText: string;
|
|
725
727
|
readonly required: boolean;
|
|
726
|
-
} & ("disabled" | "autoSelectFirst" | "dense" | "loading" | "required" | "hideDetails" | "clearable" | "readOnly" | "hideNoData" | (
|
|
728
|
+
} & ("disabled" | "autoSelectFirst" | "dense" | "loading" | "required" | "hideDetails" | "clearable" | "readOnly" | "hideNoData" | (KeyOfType<TItem, TValue extends (infer U)[] ? U : TValue> | undefined extends boolean | undefined ? (boolean & KeyOfType<TItem, TValue extends (infer U)[] ? U : TValue>) | undefined extends undefined ? never : "keyAttr" : never) | (keyof TItem | undefined extends boolean | undefined ? (boolean & keyof TItem) | undefined extends undefined ? never : "textAttr" : never) extends infer T_2 extends keyof T_1 ? { readonly [K in T_2]-?: K extends "label" | "disabled" | "keyAttr" | "textAttr" | "appendWidth" | "autoSelectFirst" | "dense" | "itemHeight" | "prependWidth" | "variant" | "loading" | "errorMessages" | "successMessages" | "hint" | "required" | "hideDetails" | "clearable" | "readOnly" | "hideNoData" | "noDataText" ? {
|
|
727
729
|
disabled: false;
|
|
728
730
|
loading: false;
|
|
729
731
|
readOnly: false;
|
|
@@ -771,7 +773,7 @@ declare const __VLS_export: <TValue, TItem>(__VLS_props: NonNullable<Awaited<typ
|
|
|
771
773
|
readonly hideNoData: boolean;
|
|
772
774
|
readonly noDataText: string;
|
|
773
775
|
readonly required: boolean;
|
|
774
|
-
} & ("disabled" | "autoSelectFirst" | "dense" | "loading" | "required" | "hideDetails" | "clearable" | "readOnly" | "hideNoData" | (
|
|
776
|
+
} & ("disabled" | "autoSelectFirst" | "dense" | "loading" | "required" | "hideDetails" | "clearable" | "readOnly" | "hideNoData" | (KeyOfType<TItem, TValue extends (infer U)[] ? U : TValue> | undefined extends boolean | undefined ? (boolean & KeyOfType<TItem, TValue extends (infer U)[] ? U : TValue>) | undefined extends undefined ? never : "keyAttr" : never) | (keyof TItem | undefined extends boolean | undefined ? (boolean & keyof TItem) | undefined extends undefined ? never : "textAttr" : never) extends infer T_3 extends keyof T_1 ? { readonly [K in T_3]-?: K extends "label" | "disabled" | "keyAttr" | "textAttr" | "appendWidth" | "autoSelectFirst" | "dense" | "itemHeight" | "prependWidth" | "variant" | "loading" | "errorMessages" | "successMessages" | "hint" | "required" | "hideDetails" | "clearable" | "readOnly" | "hideNoData" | "noDataText" ? {
|
|
775
777
|
disabled: false;
|
|
776
778
|
loading: false;
|
|
777
779
|
readOnly: false;
|
|
@@ -819,7 +821,7 @@ declare const __VLS_export: <TValue, TItem>(__VLS_props: NonNullable<Awaited<typ
|
|
|
819
821
|
readonly hideNoData: boolean;
|
|
820
822
|
readonly noDataText: string;
|
|
821
823
|
readonly required: boolean;
|
|
822
|
-
} & ("disabled" | "autoSelectFirst" | "dense" | "loading" | "required" | "hideDetails" | "clearable" | "readOnly" | "hideNoData" | (
|
|
824
|
+
} & ("disabled" | "autoSelectFirst" | "dense" | "loading" | "required" | "hideDetails" | "clearable" | "readOnly" | "hideNoData" | (KeyOfType<TItem, TValue extends (infer U)[] ? U : TValue> | undefined extends boolean | undefined ? (boolean & KeyOfType<TItem, TValue extends (infer U)[] ? U : TValue>) | undefined extends undefined ? never : "keyAttr" : never) | (keyof TItem | undefined extends boolean | undefined ? (boolean & keyof TItem) | undefined extends undefined ? never : "textAttr" : never) extends infer T_4 extends keyof T_1 ? { readonly [K in T_4]-?: K extends "label" | "disabled" | "keyAttr" | "textAttr" | "appendWidth" | "autoSelectFirst" | "dense" | "itemHeight" | "prependWidth" | "variant" | "loading" | "errorMessages" | "successMessages" | "hint" | "required" | "hideDetails" | "clearable" | "readOnly" | "hideNoData" | "noDataText" ? {
|
|
823
825
|
disabled: false;
|
|
824
826
|
loading: false;
|
|
825
827
|
readOnly: false;
|
|
@@ -853,6 +855,8 @@ declare const __VLS_export: <TValue, TItem>(__VLS_props: NonNullable<Awaited<typ
|
|
|
853
855
|
};
|
|
854
856
|
declare const _default: typeof __VLS_export;
|
|
855
857
|
export default _default;
|
|
856
|
-
type __VLS_PrettifyLocal<T> = {
|
|
858
|
+
type __VLS_PrettifyLocal<T> = (T extends any ? {
|
|
859
|
+
[K in keyof T]: T[K];
|
|
860
|
+
} : {
|
|
857
861
|
[K in keyof T as K]: T[K];
|
|
858
|
-
} & {};
|
|
862
|
+
}) & {};
|
|
@@ -7,7 +7,7 @@ import RuiProgress from "../../progress/RuiProgress.vue.js";
|
|
|
7
7
|
import { useDropdownMenu } from "../../../composables/dropdown-menu.js";
|
|
8
8
|
import { useFocus, isDefined } from "@vueuse/core";
|
|
9
9
|
import { set, get } from "@vueuse/shared";
|
|
10
|
-
const _hoisted_1 = ["disabled", "aria-disabled", "tabindex"];
|
|
10
|
+
const _hoisted_1 = ["disabled", "aria-disabled", "tabindex", "data-error", "aria-invalid"];
|
|
11
11
|
const _hoisted_2 = {
|
|
12
12
|
key: 0,
|
|
13
13
|
class: "text-rui-error"
|
|
@@ -53,7 +53,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
53
53
|
emits: ["update:modelValue"],
|
|
54
54
|
setup(__props) {
|
|
55
55
|
useCssVars((_ctx) => ({
|
|
56
|
-
"
|
|
56
|
+
"ef71cdca": unref(labelWithQuote)
|
|
57
57
|
}));
|
|
58
58
|
const modelValue = useModel(__props, "modelValue");
|
|
59
59
|
const props = __props;
|
|
@@ -165,6 +165,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
165
165
|
]]
|
|
166
166
|
}, { ...("getNonRootAttrs" in _ctx ? _ctx.getNonRootAttrs : unref(getNonRootAttrs))(_ctx.$attrs), ...__props.readOnly ? {} : attrs }, {
|
|
167
167
|
"data-id": "activator",
|
|
168
|
+
"data-error": hasError ? "" : void 0,
|
|
169
|
+
"aria-invalid": hasError,
|
|
168
170
|
onKeydown: [
|
|
169
171
|
_cache[1] || (_cache[1] = withKeys(withModifiers(($event) => unref(moveHighlight)(true), ["prevent"]), ["up"])),
|
|
170
172
|
_cache[2] || (_cache[2] = withKeys(withModifiers(($event) => unref(moveHighlight)(false), ["prevent"]), ["down"]))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RuiMenuSelect.vue2.js","sources":["../../../../src/components/forms/select/RuiMenuSelect.vue"],"sourcesContent":["<script lang=\"ts\" setup generic=\"TValue, TItem\">\nimport RuiButton from '@/components/buttons/button/RuiButton.vue';\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';\n\nexport interface Props<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 labelClass?: string;\n menuClass?: string;\n optionClass?: string;\n prependWidth?: number; // in rem\n appendWidth?: number; // in rem\n itemHeight?: number; // in px\n variant?: 'default' | 'filled' | 'outlined';\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 props = withDefaults(defineProps<Props<TValue, TItem>>(), {\n disabled: false,\n loading: false,\n readOnly: false,\n dense: false,\n clearable: false,\n hideDetails: false,\n label: 'Select',\n prependWidth: 0,\n appendWidth: 0,\n variant: 'default',\n hint: undefined,\n keyAttr: undefined,\n textAttr: undefined,\n itemHeight: undefined,\n errorMessages: () => [],\n successMessages: () => [],\n autoSelectFirst: false,\n hideNoData: false,\n noDataText: 'No data available',\n required: false,\n});\n\nconst { dense, options, disabled } = toRefs(props);\n\nconst menuRef = ref();\nconst activator = ref();\nconst { focused } = useFocus(activator);\n\nconst value = computed<TItem | undefined>({\n get: () => {\n const keyAttr = props.keyAttr;\n const value = get(modelValue);\n if (keyAttr)\n return props.options.find(option => option[keyAttr] === value);\n return value as unknown as TItem;\n },\n set: (selected?: TItem) => {\n const keyAttr = props.keyAttr;\n const selection = keyAttr && selected ? selected[keyAttr] : selected;\n set(modelValue, selection as TValue);\n },\n});\n\nconst labelWithQuote = computed<string>(() => {\n if (!props.label)\n return '\"\\\\200B\"';\n\n const asterisk = props.required ? '﹡' : '';\n return `' ${props.label}${asterisk} '`;\n});\n\nconst {\n containerProps,\n wrapperProps,\n renderedData,\n isOpen,\n menuWidth,\n getText,\n getIdentifier,\n isActiveItem,\n highlightedIndex,\n moveHighlight,\n valueKey,\n} = useDropdownMenu<TValue, TItem>({\n itemHeight: props.itemHeight ?? (props.dense ? 30 : 48),\n keyAttr: props.keyAttr,\n textAttr: props.textAttr,\n options,\n autoFocus: true,\n dense,\n value,\n menuRef,\n disabled,\n autoSelectFirst: props.autoSelectFirst,\n});\n\nconst outlined = computed(() => props.variant === 'outlined');\n\nconst float = computed(() => (get(isOpen) || !!get(value)) && get(outlined));\n\nconst virtualContainerProps = computed(() => ({\n style: containerProps.style as any,\n ref: containerProps.ref as any,\n}));\n\nfunction setValue(val: TItem, index?: number) {\n if (isDefined(index))\n set(highlightedIndex, index);\n\n set(value, val);\n set(focused, true);\n}\n\nfunction clear() {\n set(modelValue, undefined);\n}\n</script>\n\n<template>\n <RuiMenu\n v-model=\"isOpen\"\n :class=\"$style.wrapper\"\n disable-auto-focus\n v-bind=\"{\n ...getRootAttrs($attrs),\n placement: 'bottom-start',\n closeOnContentClick: true,\n fullWidth: true,\n ...menuOptions,\n errorMessages,\n successMessages,\n hint,\n dense,\n showDetails: !hideDetails,\n disabled,\n }\"\n >\n <template #activator=\"{ attrs, open, hasError, hasSuccess }\">\n <slot\n name=\"activator\"\n v-bind=\"{ disabled, value, variant, readOnly, attrs, open, hasError, hasSuccess }\"\n >\n <button\n ref=\"activator\"\n :disabled=\"disabled\"\n :aria-disabled=\"disabled\"\n type=\"button\"\n :tabindex=\"disabled || readOnly ? -1 : 0\"\n class=\"group\"\n :class=\"[\n $style.activator,\n labelClass,\n {\n [$style.disabled]: disabled,\n [$style.readonly]: readOnly,\n [$style.outlined]: outlined,\n [$style.dense]: dense,\n [$style.float]: float,\n [$style.opened]: open,\n [$style['with-value']]: !!value,\n [$style['with-error']]: hasError,\n [$style['with-success']]: hasSuccess && !hasError,\n },\n ]\"\n v-bind=\"{ ...getNonRootAttrs($attrs), ...(readOnly ? {} : attrs) }\"\n data-id=\"activator\"\n @keydown.up.prevent=\"moveHighlight(true)\"\n @keydown.down.prevent=\"moveHighlight(false)\"\n >\n <span\n v-if=\"outlined || !value\"\n :class=\"[\n $style.label,\n {\n 'absolute': outlined,\n 'pr-2': !value && !open && outlined,\n },\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=\"text-rui-error\"\n >\n ﹡\n </span>\n </span>\n <span\n v-if=\"value\"\n class=\"w-full\"\n :class=\"$style.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 class=\"group-hover:!visible\"\n :class=\"[$style.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=\"$style.icon__wrapper\">\n <RuiIcon\n :class=\"[$style.icon, { 'rotate-180': open }]\"\n :size=\"dense ? 16 : 24\"\n name=\"lu-chevron-down\"\n />\n </span>\n\n <RuiProgress\n v-if=\"loading\"\n class=\"absolute left-0 bottom-0 w-full\"\n color=\"primary\"\n thickness=\"3\"\n variant=\"indeterminate\"\n />\n </button>\n <fieldset\n v-if=\"outlined\"\n :class=\"$style.fieldset\"\n >\n <legend :class=\"{ 'px-2': float }\" />\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 :class=\"[$style.menu, menuClass]\"\n :style=\"{ width: `${width}px`, minWidth: menuWidth }\"\n v-bind=\"virtualContainerProps\"\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=\"_index\"\n :active=\"isActiveItem(item)\"\n :size=\"dense ? 'sm' : undefined\"\n :model-value=\"getIdentifier(item)\"\n variant=\"list\"\n :class=\"{\n highlighted: highlightedIndex === _index,\n [$style.highlighted]: !isActiveItem(item) && highlightedIndex === _index,\n }\"\n @update:model-value=\"setValue(item, _index)\"\n @mousedown=\"highlightedIndex = _index\"\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 :style=\"{ width: `${width}px`, minWidth: menuWidth }\"\n :class=\"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\n<style lang=\"scss\" module>\n.wrapper {\n @apply w-full inline-flex flex-col;\n\n .activator {\n @apply relative inline-flex items-center w-full;\n @apply outline-none focus:outline-none cursor-pointer min-h-14 pl-3 py-2 pr-8 rounded;\n @apply m-0 bg-white transition-all text-body-1 text-left hover:border-black;\n\n &:not(.outlined) {\n @apply hover:bg-gray-100 focus-within:bg-gray-100;\n }\n\n &.dense {\n @apply py-1.5 min-h-10;\n\n ~ .fieldset {\n @apply px-2;\n }\n }\n\n &.disabled {\n @apply opacity-65 text-rui-text-disabled active:text-rui-text-disabled cursor-default pointer-events-none;\n }\n\n &.readonly {\n @apply opacity-80 pointer-events-none cursor-default bg-gray-50;\n }\n\n &.outlined {\n @apply border-none hover:border-none;\n\n &.opened,\n &:focus {\n @apply border-rui-primary;\n\n ~ .fieldset {\n @apply border-rui-primary #{!important};\n @apply border-2 #{!important};\n }\n }\n\n ~ .fieldset {\n @apply border border-black/[0.23];\n }\n\n &:hover {\n ~ .fieldset {\n @apply border-black;\n }\n }\n\n &.disabled {\n ~ .fieldset {\n @apply border-dotted;\n @apply border-black/[0.23] #{!important};\n }\n }\n\n &.with-success {\n .label {\n @apply text-rui-success #{!important};\n }\n\n ~ .fieldset {\n @apply border-rui-success #{!important};\n }\n }\n\n &.with-error {\n .label {\n @apply text-rui-error #{!important};\n }\n\n ~ .fieldset {\n @apply border-rui-error #{!important};\n }\n }\n }\n\n .label {\n @apply text-rui-text-secondary;\n max-width: calc(100% - 2.5rem);\n }\n\n .label,\n .value {\n @apply block truncate transition-all duration-75;\n }\n\n .clear {\n @apply ml-auto shrink-0 invisible;\n }\n\n .icon {\n @apply text-rui-text transition;\n\n &__wrapper {\n @apply flex items-center justify-end;\n @apply absolute right-3 top-px bottom-0;\n }\n }\n\n &.float {\n .label {\n @apply -translate-y-2 top-0 text-xs px-1;\n }\n\n ~ .fieldset {\n legend {\n &:after {\n content: v-bind(labelWithQuote);\n }\n }\n }\n\n &.opened,\n &.opened.with-value,\n &:focus,\n &:focus.with-value {\n .label {\n @apply text-rui-primary;\n }\n\n ~ .fieldset {\n @apply border-rui-primary;\n @apply border-2 #{!important};\n }\n }\n }\n }\n\n .fieldset {\n @apply absolute w-full min-w-0 h-[calc(100%+0.5rem)] top-0 left-0 rounded pointer-events-none px-2 transition-all -mt-2;\n\n legend {\n @apply opacity-0 text-xs truncate;\n max-width: calc(100% - 1rem);\n\n &:before {\n content: ' ';\n }\n\n &:after {\n @apply truncate max-w-full leading-[0];\n content: '\\200B';\n }\n }\n }\n}\n\n.menu {\n @apply overflow-y-auto max-h-60 min-w-[2.5rem];\n}\n\n.highlighted {\n @apply bg-rui-grey-200 #{!important};\n\n &.active {\n @apply bg-rui-grey-300 #{!important};\n }\n}\n\n:global(.dark) {\n .wrapper {\n .activator {\n @apply bg-transparent text-rui-text;\n\n &:not(.outlined) {\n @apply hover:bg-white/10 focus-within:bg-white/10;\n\n &.disabled {\n @apply bg-white/10;\n }\n }\n\n &.readonly {\n @apply bg-white/10;\n }\n\n &.outlined {\n ~ .fieldset {\n @apply border-white/[0.23];\n }\n\n &.disabled {\n ~ .fieldset {\n @apply border-white/[0.23] #{!important};\n }\n }\n\n &:hover {\n ~ .fieldset {\n @apply border-white;\n }\n }\n }\n }\n }\n\n .highlighted {\n @apply bg-rui-grey-800 #{!important};\n\n &.active {\n @apply bg-rui-grey-700 #{!important};\n }\n }\n}\n</style>\n"],"names":["_useModel","value","_openBlock","_createBlock","_mergeProps","_unref","$style","getRootAttrs","$attrs","_withCtx","_renderSlot","_createElementVNode","getNonRootAttrs","_createElementBlock","_normalizeClass","_normalizeProps","_guardReactiveProps","_createTextVNode","_toDisplayString","_createVNode","_Fragment","_renderList","_normalizeStyle"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"RuiMenuSelect.vue2.js","sources":["../../../../src/components/forms/select/RuiMenuSelect.vue"],"sourcesContent":["<script lang=\"ts\" setup generic=\"TValue, TItem\">\nimport RuiButton from '@/components/buttons/button/RuiButton.vue';\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';\n\nexport interface Props<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 labelClass?: string;\n menuClass?: string;\n optionClass?: string;\n prependWidth?: number; // in rem\n appendWidth?: number; // in rem\n itemHeight?: number; // in px\n variant?: 'default' | 'filled' | 'outlined';\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 props = withDefaults(defineProps<Props<TValue, TItem>>(), {\n disabled: false,\n loading: false,\n readOnly: false,\n dense: false,\n clearable: false,\n hideDetails: false,\n label: 'Select',\n prependWidth: 0,\n appendWidth: 0,\n variant: 'default',\n hint: undefined,\n keyAttr: undefined,\n textAttr: undefined,\n itemHeight: undefined,\n errorMessages: () => [],\n successMessages: () => [],\n autoSelectFirst: false,\n hideNoData: false,\n noDataText: 'No data available',\n required: false,\n});\n\nconst { dense, options, disabled } = toRefs(props);\n\nconst menuRef = ref();\nconst activator = ref();\nconst { focused } = useFocus(activator);\n\nconst value = computed<TItem | undefined>({\n get: () => {\n const keyAttr = props.keyAttr;\n const value = get(modelValue);\n if (keyAttr)\n return props.options.find(option => option[keyAttr] === value);\n return value as unknown as TItem;\n },\n set: (selected?: TItem) => {\n const keyAttr = props.keyAttr;\n const selection = keyAttr && selected ? selected[keyAttr] : selected;\n set(modelValue, selection as TValue);\n },\n});\n\nconst labelWithQuote = computed<string>(() => {\n if (!props.label)\n return '\"\\\\200B\"';\n\n const asterisk = props.required ? '﹡' : '';\n return `' ${props.label}${asterisk} '`;\n});\n\nconst {\n containerProps,\n wrapperProps,\n renderedData,\n isOpen,\n menuWidth,\n getText,\n getIdentifier,\n isActiveItem,\n highlightedIndex,\n moveHighlight,\n valueKey,\n} = useDropdownMenu<TValue, TItem>({\n itemHeight: props.itemHeight ?? (props.dense ? 30 : 48),\n keyAttr: props.keyAttr,\n textAttr: props.textAttr,\n options,\n autoFocus: true,\n dense,\n value,\n menuRef,\n disabled,\n autoSelectFirst: props.autoSelectFirst,\n});\n\nconst outlined = computed(() => props.variant === 'outlined');\n\nconst float = computed(() => (get(isOpen) || !!get(value)) && get(outlined));\n\nconst virtualContainerProps = computed(() => ({\n style: containerProps.style as any,\n ref: containerProps.ref as any,\n}));\n\nfunction setValue(val: TItem, index?: number) {\n if (isDefined(index))\n set(highlightedIndex, index);\n\n set(value, val);\n set(focused, true);\n}\n\nfunction clear() {\n set(modelValue, undefined);\n}\n</script>\n\n<template>\n <RuiMenu\n v-model=\"isOpen\"\n :class=\"$style.wrapper\"\n disable-auto-focus\n v-bind=\"{\n ...getRootAttrs($attrs),\n placement: 'bottom-start',\n closeOnContentClick: true,\n fullWidth: true,\n ...menuOptions,\n errorMessages,\n successMessages,\n hint,\n dense,\n showDetails: !hideDetails,\n disabled,\n }\"\n >\n <template #activator=\"{ attrs, open, hasError, hasSuccess }\">\n <slot\n name=\"activator\"\n v-bind=\"{ disabled, value, variant, readOnly, attrs, open, hasError, hasSuccess }\"\n >\n <button\n ref=\"activator\"\n :disabled=\"disabled\"\n :aria-disabled=\"disabled\"\n type=\"button\"\n :tabindex=\"disabled || readOnly ? -1 : 0\"\n class=\"group\"\n :class=\"[\n $style.activator,\n labelClass,\n {\n [$style.disabled]: disabled,\n [$style.readonly]: readOnly,\n [$style.outlined]: outlined,\n [$style.dense]: dense,\n [$style.float]: float,\n [$style.opened]: open,\n [$style['with-value']]: !!value,\n [$style['with-error']]: hasError,\n [$style['with-success']]: hasSuccess && !hasError,\n },\n ]\"\n v-bind=\"{ ...getNonRootAttrs($attrs), ...(readOnly ? {} : attrs) }\"\n data-id=\"activator\"\n :data-error=\"hasError ? '' : undefined\"\n :aria-invalid=\"hasError\"\n @keydown.up.prevent=\"moveHighlight(true)\"\n @keydown.down.prevent=\"moveHighlight(false)\"\n >\n <span\n v-if=\"outlined || !value\"\n :class=\"[\n $style.label,\n {\n 'absolute': outlined,\n 'pr-2': !value && !open && outlined,\n },\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=\"text-rui-error\"\n >\n ﹡\n </span>\n </span>\n <span\n v-if=\"value\"\n class=\"w-full\"\n :class=\"$style.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 class=\"group-hover:!visible\"\n :class=\"[$style.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=\"$style.icon__wrapper\">\n <RuiIcon\n :class=\"[$style.icon, { 'rotate-180': open }]\"\n :size=\"dense ? 16 : 24\"\n name=\"lu-chevron-down\"\n />\n </span>\n\n <RuiProgress\n v-if=\"loading\"\n class=\"absolute left-0 bottom-0 w-full\"\n color=\"primary\"\n thickness=\"3\"\n variant=\"indeterminate\"\n />\n </button>\n <fieldset\n v-if=\"outlined\"\n :class=\"$style.fieldset\"\n >\n <legend :class=\"{ 'px-2': float }\" />\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 :class=\"[$style.menu, menuClass]\"\n :style=\"{ width: `${width}px`, minWidth: menuWidth }\"\n v-bind=\"virtualContainerProps\"\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=\"_index\"\n :active=\"isActiveItem(item)\"\n :size=\"dense ? 'sm' : undefined\"\n :model-value=\"getIdentifier(item)\"\n variant=\"list\"\n :class=\"{\n highlighted: highlightedIndex === _index,\n [$style.highlighted]: !isActiveItem(item) && highlightedIndex === _index,\n }\"\n @update:model-value=\"setValue(item, _index)\"\n @mousedown=\"highlightedIndex = _index\"\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 :style=\"{ width: `${width}px`, minWidth: menuWidth }\"\n :class=\"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\n<style lang=\"scss\" module>\n.wrapper {\n @apply w-full inline-flex flex-col;\n\n .activator {\n @apply relative inline-flex items-center w-full;\n @apply outline-none focus:outline-none cursor-pointer min-h-14 pl-3 py-2 pr-8 rounded;\n @apply m-0 bg-white transition-all text-body-1 text-left hover:border-black;\n\n &:not(.outlined) {\n @apply hover:bg-gray-100 focus-within:bg-gray-100;\n }\n\n &.dense {\n @apply py-1.5 min-h-10;\n\n ~ .fieldset {\n @apply px-2;\n }\n }\n\n &.disabled {\n @apply opacity-65 text-rui-text-disabled active:text-rui-text-disabled cursor-default pointer-events-none;\n }\n\n &.readonly {\n @apply opacity-80 pointer-events-none cursor-default bg-gray-50;\n }\n\n &.outlined {\n @apply border-none hover:border-none;\n\n &.opened,\n &:focus {\n @apply border-rui-primary;\n\n ~ .fieldset {\n @apply border-rui-primary #{!important};\n @apply border-2 #{!important};\n }\n }\n\n ~ .fieldset {\n @apply border border-black/[0.23];\n }\n\n &:hover {\n ~ .fieldset {\n @apply border-black;\n }\n }\n\n &.disabled {\n ~ .fieldset {\n @apply border-dotted;\n @apply border-black/[0.23] #{!important};\n }\n }\n\n &.with-success {\n .label {\n @apply text-rui-success #{!important};\n }\n\n ~ .fieldset {\n @apply border-rui-success #{!important};\n }\n }\n\n &.with-error {\n .label {\n @apply text-rui-error #{!important};\n }\n\n ~ .fieldset {\n @apply border-rui-error #{!important};\n }\n }\n }\n\n .label {\n @apply text-rui-text-secondary;\n max-width: calc(100% - 2.5rem);\n }\n\n .label,\n .value {\n @apply block truncate transition-all duration-75;\n }\n\n .clear {\n @apply ml-auto shrink-0 invisible;\n }\n\n .icon {\n @apply text-rui-text transition;\n\n &__wrapper {\n @apply flex items-center justify-end;\n @apply absolute right-3 top-px bottom-0;\n }\n }\n\n &.float {\n .label {\n @apply -translate-y-2 top-0 text-xs px-1;\n }\n\n ~ .fieldset {\n legend {\n &:after {\n content: v-bind(labelWithQuote);\n }\n }\n }\n\n &.opened,\n &.opened.with-value,\n &:focus,\n &:focus.with-value {\n .label {\n @apply text-rui-primary;\n }\n\n ~ .fieldset {\n @apply border-rui-primary;\n @apply border-2 #{!important};\n }\n }\n }\n }\n\n .fieldset {\n @apply absolute w-full min-w-0 h-[calc(100%+0.5rem)] top-0 left-0 rounded pointer-events-none px-2 transition-all -mt-2;\n\n legend {\n @apply opacity-0 text-xs truncate;\n max-width: calc(100% - 1rem);\n\n &:before {\n content: ' ';\n }\n\n &:after {\n @apply truncate max-w-full leading-[0];\n content: '\\200B';\n }\n }\n }\n}\n\n.menu {\n @apply overflow-y-auto max-h-60 min-w-[2.5rem];\n}\n\n.highlighted {\n @apply bg-rui-grey-200 #{!important};\n\n &.active {\n @apply bg-rui-grey-300 #{!important};\n }\n}\n\n:global(.dark) {\n .wrapper {\n .activator {\n @apply bg-transparent text-rui-text;\n\n &:not(.outlined) {\n @apply hover:bg-white/10 focus-within:bg-white/10;\n\n &.disabled {\n @apply bg-white/10;\n }\n }\n\n &.readonly {\n @apply bg-white/10;\n }\n\n &.outlined {\n ~ .fieldset {\n @apply border-white/[0.23];\n }\n\n &.disabled {\n ~ .fieldset {\n @apply border-white/[0.23] #{!important};\n }\n }\n\n &:hover {\n ~ .fieldset {\n @apply border-white;\n }\n }\n }\n }\n }\n\n .highlighted {\n @apply bg-rui-grey-800 #{!important};\n\n &.active {\n @apply bg-rui-grey-700 #{!important};\n }\n }\n}\n</style>\n"],"names":["_useModel","value","_openBlock","_createBlock","_mergeProps","_unref","$style","getRootAttrs","$attrs","_withCtx","_renderSlot","_createElementVNode","getNonRootAttrs","_createElementBlock","_normalizeClass","_normalizeProps","_guardReactiveProps","_createTextVNode","_toDisplayString","_createVNode","_Fragment","_renderList","_normalizeStyle"],"mappings":"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"}
|
|
@@ -4,11 +4,12 @@ import { getRootAttrs, getNonRootAttrs } from "../../../utils/helpers.js";
|
|
|
4
4
|
import { get } from "@vueuse/shared";
|
|
5
5
|
import { useFormTextDetail } from "../../../utils/form-text-detail.js";
|
|
6
6
|
import { useElementBounding } from "@vueuse/core";
|
|
7
|
-
const _hoisted_1 =
|
|
7
|
+
const _hoisted_1 = ["data-error"];
|
|
8
|
+
const _hoisted_2 = {
|
|
8
9
|
key: 0,
|
|
9
10
|
class: "text-rui-error"
|
|
10
11
|
};
|
|
11
|
-
const
|
|
12
|
+
const _hoisted_3 = ["max", "min", "step", "disabled", "aria-invalid"];
|
|
12
13
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
13
14
|
...{
|
|
14
15
|
name: "RuiSlider",
|
|
@@ -39,10 +40,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
39
40
|
emits: ["update:model-value"],
|
|
40
41
|
setup(__props, { emit: __emit }) {
|
|
41
42
|
useCssVars((_ctx) => ({
|
|
42
|
-
"
|
|
43
|
-
"
|
|
44
|
-
"
|
|
45
|
-
"
|
|
43
|
+
"v5a3a992e": unref(sliderHeight),
|
|
44
|
+
"ae30ee42": unref(sliderWidth),
|
|
45
|
+
"b5d1a6fe": unref(trackWidth),
|
|
46
|
+
"v22bb2631": unref(tickSizeInPx)
|
|
46
47
|
}));
|
|
47
48
|
const props = __props;
|
|
48
49
|
const emit = __emit;
|
|
@@ -91,14 +92,15 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
91
92
|
[_ctx.$style["with-error"] ?? ""]: unref(hasError),
|
|
92
93
|
[_ctx.$style["with-success"] ?? ""]: unref(hasSuccess) && !unref(hasError)
|
|
93
94
|
}
|
|
94
|
-
])
|
|
95
|
+
]),
|
|
96
|
+
"data-error": unref(hasError) ? "" : void 0
|
|
95
97
|
}, [
|
|
96
98
|
__props.label ? (openBlock(), createElementBlock("div", {
|
|
97
99
|
key: 0,
|
|
98
100
|
class: normalizeClass([_ctx.$style.label, "text-body-1"])
|
|
99
101
|
}, [
|
|
100
102
|
createTextVNode(toDisplayString(__props.label) + " ", 1),
|
|
101
|
-
__props.required ? (openBlock(), createElementBlock("span",
|
|
103
|
+
__props.required ? (openBlock(), createElementBlock("span", _hoisted_2, " ﹡ ")) : createCommentVNode("", true)
|
|
102
104
|
], 2)) : createCommentVNode("", true),
|
|
103
105
|
createElementVNode("div", {
|
|
104
106
|
ref_key: "outer",
|
|
@@ -115,8 +117,9 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
115
117
|
max: unref(max),
|
|
116
118
|
min: unref(min),
|
|
117
119
|
step: unref(step),
|
|
118
|
-
disabled: __props.disabled
|
|
119
|
-
|
|
120
|
+
disabled: __props.disabled,
|
|
121
|
+
"aria-invalid": unref(hasError)
|
|
122
|
+
}, unref(getNonRootAttrs)(_ctx.$attrs)), null, 16, _hoisted_3), [
|
|
120
123
|
[vModelText, unref(vModel)]
|
|
121
124
|
]),
|
|
122
125
|
createElementVNode("div", {
|
|
@@ -155,7 +158,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
155
158
|
], 2)
|
|
156
159
|
], 2)
|
|
157
160
|
], 2)
|
|
158
|
-
],
|
|
161
|
+
], 10, _hoisted_1),
|
|
159
162
|
!__props.hideDetails ? (openBlock(), createBlock(_sfc_main$1, {
|
|
160
163
|
key: 0,
|
|
161
164
|
class: "pt-1",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RuiSlider.vue2.js","sources":["../../../../src/components/forms/slider/RuiSlider.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { ContextColorsType } from '@/consts/colors';\nimport RuiFormTextDetail from '@/components/helpers/RuiFormTextDetail.vue';\nimport { getNonRootAttrs, getRootAttrs } from '@/utils/helpers';\n\nexport interface Props {\n modelValue?: number;\n min?: number;\n max?: number;\n step?: number;\n disabled?: boolean;\n showThumbLabel?: boolean;\n showTicks?: boolean;\n hideTrack?: boolean;\n tickSize?: number;\n vertical?: boolean;\n color?: ContextColorsType;\n label?: string;\n hint?: string;\n errorMessages?: string | string[];\n successMessages?: string | string[];\n hideDetails?: boolean;\n sliderClass?: string;\n tickClass?: string;\n required?: boolean;\n}\n\ndefineOptions({\n name: 'RuiSlider',\n inheritAttrs: false,\n});\n\nconst props = withDefaults(defineProps<Props>(), {\n modelValue: 0,\n min: 0,\n max: 100,\n step: 1,\n disabled: false,\n showThumbLabel: false,\n showTicks: false,\n hideTrack: false,\n vertical: false,\n tickSize: 2,\n color: 'primary',\n label: '',\n hint: '',\n errorMessages: () => [],\n successMessages: () => [],\n hideDetails: false,\n sliderClass: '',\n tickClass: '',\n required: false,\n});\n\nconst emit = defineEmits<{\n (e: 'update:model-value', value: number): void;\n}>();\n\nconst { modelValue, max, min, step, errorMessages, successMessages, vertical, tickSize } = toRefs(props);\n\nconst vModel = computed({\n get() {\n return get(modelValue);\n },\n set(value: number) {\n emit('update:model-value', value);\n },\n});\n\nconst ticksData = computed<[number, number]>(() => {\n const minVal = get(min);\n const stepVal = get(step);\n const range = get(max) - minVal;\n const total = range / stepVal;\n const current = Math.round((get(modelValue) - minVal) / stepVal);\n\n return [current, total];\n});\n\nconst trackWidth = computed(() => {\n const [current, total] = get(ticksData);\n const percentage = Math.min(100, Math.max(0, Math.round(current / total * 100)));\n return `${percentage}%`;\n});\n\nconst { hasError, hasSuccess } = useFormTextDetail(\n errorMessages,\n successMessages,\n);\n\nconst outer = ref<HTMLDivElement>();\nconst { width, height } = useElementBounding(outer);\n\nconst sliderWidth = computed(() => `${get(width)}px`);\nconst sliderHeight = computed(() => `${get(height)}px`);\nconst tickSizeInPx = computed(() => `${get(tickSize)}px`);\n</script>\n\n<template>\n <div v-bind=\"getRootAttrs($attrs)\">\n <label\n :class=\"[\n $style.wrapper,\n {\n [$style.disabled ?? '']: disabled,\n [$style.vertical ?? '']: vertical,\n [$style[color] ?? '']: color,\n [$style['hide-track'] ?? '']: hideTrack,\n [$style['big-tick'] ?? '']: tickSize > 4,\n [$style['with-error'] ?? '']: hasError,\n [$style['with-success'] ?? '']: hasSuccess && !hasError,\n },\n ]\"\n >\n <div\n v-if=\"label\"\n :class=\"$style.label\"\n class=\"text-body-1\"\n >\n {{ label }}\n <span\n v-if=\"required\"\n class=\"text-rui-error\"\n >\n ﹡\n </span>\n </div>\n <div\n ref=\"outer\"\n :class=\"$style.outer\"\n >\n <div :class=\"$style.inner\">\n <input\n v-model=\"vModel\"\n :class=\"$style.input\"\n type=\"range\"\n :max=\"max\"\n :min=\"min\"\n :step=\"step\"\n :disabled=\"disabled\"\n v-bind=\"getNonRootAttrs($attrs)\"\n />\n <div :class=\"$style.slider\">\n <div :class=\"$style.slider__inner\">\n <div :class=\"[$style.slider__container, sliderClass]\">\n <div\n v-if=\"!hideTrack\"\n :class=\"$style.slider__container__track\"\n />\n <div\n v-if=\"showTicks && !disabled\"\n :class=\"$style.slider__ticks\"\n >\n <span\n v-for=\"i in (ticksData[1] + 1)\"\n :key=\"i\"\n :class=\"hideTrack ? [tickClass] : { [$style.highlighted]: i - 1 <= ticksData[0], [tickClass]: i - 1 > ticksData[0] }\"\n />\n </div>\n </div>\n <div :class=\"$style.slider__thumb\" />\n <div\n v-if=\"showThumbLabel && !disabled\"\n :class=\"$style.slider__thumb_label\"\n >\n {{ modelValue }}\n </div>\n </div>\n </div>\n </div>\n </div>\n </label>\n <RuiFormTextDetail\n v-if=\"!hideDetails\"\n class=\"pt-1\"\n :error-messages=\"errorMessages\"\n :success-messages=\"successMessages\"\n :hint=\"hint\"\n />\n </div>\n</template>\n\n<style lang=\"scss\" module>\n@use '@/styles/colors.scss' as c;\n\n:global(.dark) {\n .wrapper {\n &.disabled {\n .inner {\n .slider {\n &__container {\n @apply bg-rui-grey-800 #{!important};\n\n &__track {\n @apply bg-rui-grey-700 #{!important};\n }\n }\n\n &__thumb {\n @apply bg-rui-grey-700 #{!important};\n }\n }\n }\n }\n\n .inner {\n .slider {\n &__ticks {\n span {\n &.highlighted {\n @apply bg-[#121212];\n }\n }\n }\n }\n }\n }\n}\n\n.wrapper {\n @apply flex items-start gap-3;\n\n &.disabled {\n .label {\n @apply text-rui-text-disabled;\n }\n .inner {\n .slider {\n &__container {\n @apply bg-rui-grey-300 #{!important};\n\n &__track {\n @apply bg-rui-grey-400 #{!important};\n }\n }\n\n &__thumb {\n @apply bg-rui-grey-400 #{!important};\n }\n }\n }\n }\n\n @each $color in c.$context-colors {\n &.#{$color},\n &.with-#{$color} {\n .inner {\n .slider {\n &__container {\n @apply bg-rui-#{$color} bg-opacity-40;\n\n &__track {\n @apply bg-rui-#{$color};\n }\n }\n\n &__thumb {\n @apply bg-rui-#{$color};\n\n &:before {\n @apply bg-rui-#{$color};\n }\n }\n\n &__ticks {\n span {\n @apply bg-rui-#{$color};\n }\n }\n }\n }\n\n &.big-tick {\n .inner {\n .slider {\n &__ticks {\n span {\n @apply bg-rui-#{$color}-lighter;\n\n &.highlighted {\n @apply bg-rui-#{$color};\n }\n }\n }\n }\n }\n }\n }\n }\n\n @each $color in ('error', 'success') {\n &.with-#{$color} {\n .label {\n @apply text-rui-#{$color};\n }\n }\n }\n\n &.vertical {\n @apply flex-col-reverse items-center h-full;\n\n .label {\n @apply mb-2 text-center;\n }\n\n .outer {\n @apply min-w-0 min-h-[120px] w-8;\n }\n\n .inner {\n width: v-bind(sliderHeight);\n height: v-bind(sliderWidth);\n @apply -rotate-90;\n transform-origin: 0 0;\n --tw-translate-y: v-bind(sliderHeight);\n\n .slider {\n &__thumb {\n &_label {\n @apply mt-6;\n @apply rotate-90 translate-x-0;\n transform-origin: 0 50%;\n }\n }\n }\n }\n }\n\n .label {\n @apply mt-1 text-rui-text;\n }\n\n .outer {\n @apply relative h-8 flex-1 min-w-[120px];\n }\n\n .inner {\n width: v-bind(sliderWidth);\n height: v-bind(sliderHeight);\n @apply relative;\n\n .input {\n @apply h-full w-full opacity-0 cursor-pointer;\n\n &:not(:disabled) {\n &:hover {\n ~ .slider {\n .slider {\n &__thumb {\n &:before {\n @apply scale-100;\n }\n }\n }\n }\n }\n\n &:focus {\n ~ .slider {\n .slider {\n &__thumb {\n &:before {\n @apply scale-100 opacity-15;\n }\n }\n }\n }\n }\n\n &:active {\n ~ .slider {\n .slider {\n &__thumb {\n &:before {\n @apply scale-100 opacity-30;\n }\n\n &_label {\n @apply opacity-100 visible;\n }\n }\n }\n }\n }\n }\n }\n\n .slider {\n @apply absolute h-full w-full top-0 px-2 pointer-events-none;\n\n &__inner {\n @apply relative h-full w-full cursor-pointer;\n }\n\n &__container {\n @apply absolute top-1/2 transform -translate-y-1/2;\n @apply w-full h-1 rounded-full;\n\n &__track {\n width: v-bind(trackWidth);\n @apply transition-all ease-linear duration-75 delay-0;\n @apply h-full rounded-full;\n }\n }\n\n &__ticks {\n @apply h-full absolute top-0;\n @apply flex justify-between items-center;\n margin: 0 calc(v-bind(tickSizeInPx) / -2);\n width: calc(100% + v-bind(tickSizeInPx));\n\n span {\n @apply rounded-full;\n width: calc(v-bind(tickSizeInPx));\n height: calc(v-bind(tickSizeInPx));\n\n &.highlighted {\n @apply bg-rui-grey-100;\n }\n }\n }\n\n &__thumb {\n @apply absolute top-1/2 transition-all ease-linear duration-75 delay-0 transform -translate-y-1/2 -translate-x-1/2;\n @apply w-3 h-3 rounded-full shadow-2;\n left: v-bind(trackWidth);\n\n &:before {\n @apply w-8 h-8 rounded-full absolute top-1/2 left-1/2;\n @apply opacity-10;\n @apply transition transform -translate-x-1/2 -translate-y-1/2 scale-0;\n content: '';\n }\n\n &_label {\n left: v-bind(trackWidth);\n @apply invisible opacity-0;\n @apply absolute -mt-7 transition-all ease-linear duration-75 delay-0 transform -translate-x-1/2;\n @apply px-2 py-1 text-xs font-normal;\n @apply bg-rui-grey-700/90 text-white rounded shadow;\n }\n }\n }\n }\n}\n</style>\n"],"names":["_createElementBlock","_normalizeProps","_guardReactiveProps","_unref","$attrs","_createElementVNode","_normalizeClass","$style","_createTextVNode","_toDisplayString","_withDirectives","_mergeProps","_Fragment","_renderList","_createBlock","RuiFormTextDetail"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCA,UAAM,QAAQ;AAsBd,UAAM,OAAO;AAIb,UAAM,EAAE,YAAY,KAAK,KAAK,MAAM,eAAe,iBAAiB,UAAU,aAAa,OAAO,KAAK;AAEvG,UAAM,SAAS,SAAS;AAAA,MACtB,MAAM;AACJ,eAAO,IAAI,UAAU;AAAA,MACvB;AAAA,MACA,IAAI,OAAe;AACjB,aAAK,sBAAsB,KAAK;AAAA,MAClC;AAAA,IAAA,CACD;AAED,UAAM,YAAY,SAA2B,MAAM;AACjD,YAAM,SAAS,IAAI,GAAG;AACtB,YAAM,UAAU,IAAI,IAAI;AACxB,YAAM,QAAQ,IAAI,GAAG,IAAI;AACzB,YAAM,QAAQ,QAAQ;AACtB,YAAM,UAAU,KAAK,OAAO,IAAI,UAAU,IAAI,UAAU,OAAO;AAE/D,aAAO,CAAC,SAAS,KAAK;AAAA,IACxB,CAAC;AAED,UAAM,aAAa,SAAS,MAAM;AAChC,YAAM,CAAC,SAAS,KAAK,IAAI,IAAI,SAAS;AACtC,YAAM,aAAa,KAAK,IAAI,KAAK,KAAK,IAAI,GAAG,KAAK,MAAM,UAAU,QAAQ,GAAG,CAAC,CAAC;AAC/E,aAAO,GAAG,UAAU;AAAA,IACtB,CAAC;AAED,UAAM,EAAE,UAAU,WAAA,IAAe;AAAA,MAC/B;AAAA,MACA;AAAA,IAAA;AAGF,UAAM,QAAQ,IAAA;AACd,UAAM,EAAE,OAAO,WAAW,mBAAmB,KAAK;AAElD,UAAM,cAAc,SAAS,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI;AACpD,UAAM,eAAe,SAAS,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI;AACtD,UAAM,eAAe,SAAS,MAAM,GAAG,IAAI,QAAQ,CAAC,IAAI;;0BAItDA,mBAgFM,OAAAC,eAAAC,mBAhFOC,MAAA,YAAA,EAAaC,KAAAA,MAAM,CAAA,CAAA,GAAA;AAAA,QAC9BC,mBAuEQ,SAAA;AAAA,UAtEL,OAAKC,eAAA;AAAA,YAAYC,KAAAA,OAAO;AAAA;eAA8BA,KAAAA,OAAO,YAAQ,EAAA,GAAS,QAAA;AAAA,eAAqBA,KAAAA,OAAO,YAAQ,EAAA,GAASJ,MAAA,QAAA;AAAA,eAAqBI,KAAAA,OAAO,QAAA,KAAK,KAAA,EAAA,GAAU,QAAA;AAAA,cAAkBA,CAAAA,KAAAA,6BAA6B,QAAA;AAAA,cAAsBA,CAAAA,KAAAA,2BAA2BJ,MAAA,QAAA,IAAQ;AAAA,cAAiBI,CAAAA,KAAAA,6BAA6BJ,MAAA,QAAA;AAAA,eAAqBI,KAAAA,OAAM,cAAA,KAAA,EAAA,GAAyBJ,MAAA,UAAA,KAAU,CAAKA,MAAA,QAAA;AAAA,YAAA;AAAA;;UAcxX,QAAA,sBADRH,mBAYM,OAAA;AAAA;YAVH,OAAKM,eAAA,CAAEC,KAAAA,OAAO,OACT,aAAa,CAAA;AAAA,UAAA;YAEhBC,gBAAAC,gBAAA,QAAA,KAAK,IAAG,KACX,CAAA;AAAA,YACQ,QAAA,yBADRT,mBAKO,QALP,YAGC,KAED;;UAEFK,mBA2CM,OAAA;AAAA,qBA1CA;AAAA,YAAJ,KAAI;AAAA,YACH,OAAKC,eAAEC,KAAAA,OAAO,KAAK;AAAA,UAAA;YAEpBF,mBAsCM,OAAA;AAAA,cAtCA,OAAKC,eAAEC,KAAAA,OAAO,KAAK;AAAA,YAAA;cACvBG,eAAAL,mBASE,SATFM,WASE;AAAA,6FARS,OAAM,QAAA,SAAA;AAAA,gBACd,OAAOJ,KAAAA,OAAO;AAAA,gBACf,MAAK;AAAA,gBACJ,KAAKJ,MAAA,GAAA;AAAA,gBACL,KAAKA,MAAA,GAAA;AAAA,gBACL,MAAMA,MAAA,IAAA;AAAA,gBACN,UAAU,QAAA;AAAA,cAAA,GACHA,MAAA,eAAA,EAAgBC,KAAAA,MAAM,CAAA,GAAA,MAAA,IAAA,UAAA,GAAA;AAAA,6BAPrBD,MAAA,MAAA,CAAM;AAAA,cAAA;cASjBE,mBA0BM,OAAA;AAAA,gBA1BA,OAAKC,eAAEC,KAAAA,OAAO,MAAM;AAAA,cAAA;gBACxBF,mBAwBM,OAAA;AAAA,kBAxBA,OAAKC,eAAEC,KAAAA,OAAO,aAAa;AAAA,gBAAA;kBAC/BF,mBAeM,OAAA;AAAA,oBAfA,OAAKC,eAAA,CAAGC,KAAAA,OAAO,mBAAmB,QAAA,WAAW,CAAA;AAAA,kBAAA;qBAExC,QAAA,0BADTP,mBAGE,OAAA;AAAA;sBADC,OAAKM,eAAEC,KAAAA,OAAO,wBAAwB;AAAA,oBAAA;oBAGjC,QAAA,cAAc,QAAA,yBADtBP,mBASM,OAAA;AAAA;sBAPH,OAAKM,eAAEC,KAAAA,OAAO,aAAa;AAAA,oBAAA;wCAE5BP,mBAIEY,UAAA,MAAAC,WAHaV,MAAA,SAAA,EAAS,CAAA,IAAA,GAAA,CAAf,MAAC;4CADVH,mBAIE,QAAA;AAAA,0BAFC,KAAK;AAAA,0BACL,sBAAO,QAAA,YAAS,CAAI,QAAA,SAAS,IAAA,EAAA,CAAOO,YAAO,WAAW,GAAG,SAASJ,MAAA,SAAA,EAAS,CAAA,GAAA,CAAM,iBAAS,GAAG,QAAQA,MAAA,SAAA,EAAS,CAAA,GAAA;AAAA,wBAAA;;;;kBAIrHE,mBAAqC,OAAA;AAAA,oBAA/B,OAAKC,eAAEC,KAAAA,OAAO,aAAa;AAAA,kBAAA;kBAEzB,QAAA,mBAAmB,QAAA,yBAD3BP,mBAKM,OAAA;AAAA;oBAHH,OAAKM,eAAEC,KAAAA,OAAO,mBAAmB;AAAA,kBAAA,mBAE/BJ,MAAA,UAAA,CAAU,GAAA,CAAA;;;;;;SAQhB,QAAA,4BADTW,YAMEC,aAAA;AAAA;UAJA,OAAM;AAAA,UACL,kBAAgBZ,MAAA,aAAA;AAAA,UAChB,oBAAkBA,MAAA,eAAA;AAAA,UAClB,MAAM,QAAA;AAAA,QAAA;;;;;"}
|
|
1
|
+
{"version":3,"file":"RuiSlider.vue2.js","sources":["../../../../src/components/forms/slider/RuiSlider.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { ContextColorsType } from '@/consts/colors';\nimport RuiFormTextDetail from '@/components/helpers/RuiFormTextDetail.vue';\nimport { getNonRootAttrs, getRootAttrs } from '@/utils/helpers';\n\nexport interface Props {\n modelValue?: number;\n min?: number;\n max?: number;\n step?: number;\n disabled?: boolean;\n showThumbLabel?: boolean;\n showTicks?: boolean;\n hideTrack?: boolean;\n tickSize?: number;\n vertical?: boolean;\n color?: ContextColorsType;\n label?: string;\n hint?: string;\n errorMessages?: string | string[];\n successMessages?: string | string[];\n hideDetails?: boolean;\n sliderClass?: string;\n tickClass?: string;\n required?: boolean;\n}\n\ndefineOptions({\n name: 'RuiSlider',\n inheritAttrs: false,\n});\n\nconst props = withDefaults(defineProps<Props>(), {\n modelValue: 0,\n min: 0,\n max: 100,\n step: 1,\n disabled: false,\n showThumbLabel: false,\n showTicks: false,\n hideTrack: false,\n vertical: false,\n tickSize: 2,\n color: 'primary',\n label: '',\n hint: '',\n errorMessages: () => [],\n successMessages: () => [],\n hideDetails: false,\n sliderClass: '',\n tickClass: '',\n required: false,\n});\n\nconst emit = defineEmits<{\n (e: 'update:model-value', value: number): void;\n}>();\n\nconst { modelValue, max, min, step, errorMessages, successMessages, vertical, tickSize } = toRefs(props);\n\nconst vModel = computed({\n get() {\n return get(modelValue);\n },\n set(value: number) {\n emit('update:model-value', value);\n },\n});\n\nconst ticksData = computed<[number, number]>(() => {\n const minVal = get(min);\n const stepVal = get(step);\n const range = get(max) - minVal;\n const total = range / stepVal;\n const current = Math.round((get(modelValue) - minVal) / stepVal);\n\n return [current, total];\n});\n\nconst trackWidth = computed(() => {\n const [current, total] = get(ticksData);\n const percentage = Math.min(100, Math.max(0, Math.round(current / total * 100)));\n return `${percentage}%`;\n});\n\nconst { hasError, hasSuccess } = useFormTextDetail(\n errorMessages,\n successMessages,\n);\n\nconst outer = ref<HTMLDivElement>();\nconst { width, height } = useElementBounding(outer);\n\nconst sliderWidth = computed(() => `${get(width)}px`);\nconst sliderHeight = computed(() => `${get(height)}px`);\nconst tickSizeInPx = computed(() => `${get(tickSize)}px`);\n</script>\n\n<template>\n <div v-bind=\"getRootAttrs($attrs)\">\n <label\n :class=\"[\n $style.wrapper,\n {\n [$style.disabled ?? '']: disabled,\n [$style.vertical ?? '']: vertical,\n [$style[color] ?? '']: color,\n [$style['hide-track'] ?? '']: hideTrack,\n [$style['big-tick'] ?? '']: tickSize > 4,\n [$style['with-error'] ?? '']: hasError,\n [$style['with-success'] ?? '']: hasSuccess && !hasError,\n },\n ]\"\n :data-error=\"hasError ? '' : undefined\"\n >\n <div\n v-if=\"label\"\n :class=\"$style.label\"\n class=\"text-body-1\"\n >\n {{ label }}\n <span\n v-if=\"required\"\n class=\"text-rui-error\"\n >\n ﹡\n </span>\n </div>\n <div\n ref=\"outer\"\n :class=\"$style.outer\"\n >\n <div :class=\"$style.inner\">\n <input\n v-model=\"vModel\"\n :class=\"$style.input\"\n type=\"range\"\n :max=\"max\"\n :min=\"min\"\n :step=\"step\"\n :disabled=\"disabled\"\n :aria-invalid=\"hasError\"\n v-bind=\"getNonRootAttrs($attrs)\"\n />\n <div :class=\"$style.slider\">\n <div :class=\"$style.slider__inner\">\n <div :class=\"[$style.slider__container, sliderClass]\">\n <div\n v-if=\"!hideTrack\"\n :class=\"$style.slider__container__track\"\n />\n <div\n v-if=\"showTicks && !disabled\"\n :class=\"$style.slider__ticks\"\n >\n <span\n v-for=\"i in (ticksData[1] + 1)\"\n :key=\"i\"\n :class=\"hideTrack ? [tickClass] : { [$style.highlighted]: i - 1 <= ticksData[0], [tickClass]: i - 1 > ticksData[0] }\"\n />\n </div>\n </div>\n <div :class=\"$style.slider__thumb\" />\n <div\n v-if=\"showThumbLabel && !disabled\"\n :class=\"$style.slider__thumb_label\"\n >\n {{ modelValue }}\n </div>\n </div>\n </div>\n </div>\n </div>\n </label>\n <RuiFormTextDetail\n v-if=\"!hideDetails\"\n class=\"pt-1\"\n :error-messages=\"errorMessages\"\n :success-messages=\"successMessages\"\n :hint=\"hint\"\n />\n </div>\n</template>\n\n<style lang=\"scss\" module>\n@use '@/styles/colors.scss' as c;\n\n:global(.dark) {\n .wrapper {\n &.disabled {\n .inner {\n .slider {\n &__container {\n @apply bg-rui-grey-800 #{!important};\n\n &__track {\n @apply bg-rui-grey-700 #{!important};\n }\n }\n\n &__thumb {\n @apply bg-rui-grey-700 #{!important};\n }\n }\n }\n }\n\n .inner {\n .slider {\n &__ticks {\n span {\n &.highlighted {\n @apply bg-[#121212];\n }\n }\n }\n }\n }\n }\n}\n\n.wrapper {\n @apply flex items-start gap-3;\n\n &.disabled {\n .label {\n @apply text-rui-text-disabled;\n }\n .inner {\n .slider {\n &__container {\n @apply bg-rui-grey-300 #{!important};\n\n &__track {\n @apply bg-rui-grey-400 #{!important};\n }\n }\n\n &__thumb {\n @apply bg-rui-grey-400 #{!important};\n }\n }\n }\n }\n\n @each $color in c.$context-colors {\n &.#{$color},\n &.with-#{$color} {\n .inner {\n .slider {\n &__container {\n @apply bg-rui-#{$color} bg-opacity-40;\n\n &__track {\n @apply bg-rui-#{$color};\n }\n }\n\n &__thumb {\n @apply bg-rui-#{$color};\n\n &:before {\n @apply bg-rui-#{$color};\n }\n }\n\n &__ticks {\n span {\n @apply bg-rui-#{$color};\n }\n }\n }\n }\n\n &.big-tick {\n .inner {\n .slider {\n &__ticks {\n span {\n @apply bg-rui-#{$color}-lighter;\n\n &.highlighted {\n @apply bg-rui-#{$color};\n }\n }\n }\n }\n }\n }\n }\n }\n\n @each $color in ('error', 'success') {\n &.with-#{$color} {\n .label {\n @apply text-rui-#{$color};\n }\n }\n }\n\n &.vertical {\n @apply flex-col-reverse items-center h-full;\n\n .label {\n @apply mb-2 text-center;\n }\n\n .outer {\n @apply min-w-0 min-h-[120px] w-8;\n }\n\n .inner {\n width: v-bind(sliderHeight);\n height: v-bind(sliderWidth);\n @apply -rotate-90;\n transform-origin: 0 0;\n --tw-translate-y: v-bind(sliderHeight);\n\n .slider {\n &__thumb {\n &_label {\n @apply mt-6;\n @apply rotate-90 translate-x-0;\n transform-origin: 0 50%;\n }\n }\n }\n }\n }\n\n .label {\n @apply mt-1 text-rui-text;\n }\n\n .outer {\n @apply relative h-8 flex-1 min-w-[120px];\n }\n\n .inner {\n width: v-bind(sliderWidth);\n height: v-bind(sliderHeight);\n @apply relative;\n\n .input {\n @apply h-full w-full opacity-0 cursor-pointer;\n\n &:not(:disabled) {\n &:hover {\n ~ .slider {\n .slider {\n &__thumb {\n &:before {\n @apply scale-100;\n }\n }\n }\n }\n }\n\n &:focus {\n ~ .slider {\n .slider {\n &__thumb {\n &:before {\n @apply scale-100 opacity-15;\n }\n }\n }\n }\n }\n\n &:active {\n ~ .slider {\n .slider {\n &__thumb {\n &:before {\n @apply scale-100 opacity-30;\n }\n\n &_label {\n @apply opacity-100 visible;\n }\n }\n }\n }\n }\n }\n }\n\n .slider {\n @apply absolute h-full w-full top-0 px-2 pointer-events-none;\n\n &__inner {\n @apply relative h-full w-full cursor-pointer;\n }\n\n &__container {\n @apply absolute top-1/2 transform -translate-y-1/2;\n @apply w-full h-1 rounded-full;\n\n &__track {\n width: v-bind(trackWidth);\n @apply transition-all ease-linear duration-75 delay-0;\n @apply h-full rounded-full;\n }\n }\n\n &__ticks {\n @apply h-full absolute top-0;\n @apply flex justify-between items-center;\n margin: 0 calc(v-bind(tickSizeInPx) / -2);\n width: calc(100% + v-bind(tickSizeInPx));\n\n span {\n @apply rounded-full;\n width: calc(v-bind(tickSizeInPx));\n height: calc(v-bind(tickSizeInPx));\n\n &.highlighted {\n @apply bg-rui-grey-100;\n }\n }\n }\n\n &__thumb {\n @apply absolute top-1/2 transition-all ease-linear duration-75 delay-0 transform -translate-y-1/2 -translate-x-1/2;\n @apply w-3 h-3 rounded-full shadow-2;\n left: v-bind(trackWidth);\n\n &:before {\n @apply w-8 h-8 rounded-full absolute top-1/2 left-1/2;\n @apply opacity-10;\n @apply transition transform -translate-x-1/2 -translate-y-1/2 scale-0;\n content: '';\n }\n\n &_label {\n left: v-bind(trackWidth);\n @apply invisible opacity-0;\n @apply absolute -mt-7 transition-all ease-linear duration-75 delay-0 transform -translate-x-1/2;\n @apply px-2 py-1 text-xs font-normal;\n @apply bg-rui-grey-700/90 text-white rounded shadow;\n }\n }\n }\n }\n}\n</style>\n"],"names":["_createElementBlock","_normalizeProps","_guardReactiveProps","_unref","$attrs","_createElementVNode","_normalizeClass","$style","_createTextVNode","_toDisplayString","_withDirectives","_mergeProps","_Fragment","_renderList","_createBlock","RuiFormTextDetail"],"mappings":"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"}
|
|
@@ -2,8 +2,9 @@ import { defineComponent, toRefs, createElementBlock, openBlock, normalizeProps,
|
|
|
2
2
|
import _sfc_main$1 from "../../helpers/RuiFormTextDetail.vue.js";
|
|
3
3
|
import { getRootAttrs, getNonRootAttrs } from "../../../utils/helpers.js";
|
|
4
4
|
import { useFormTextDetail } from "../../../utils/form-text-detail.js";
|
|
5
|
-
const _hoisted_1 = ["
|
|
6
|
-
const _hoisted_2 =
|
|
5
|
+
const _hoisted_1 = ["data-error"];
|
|
6
|
+
const _hoisted_2 = ["checked", "disabled", "aria-invalid"];
|
|
7
|
+
const _hoisted_3 = {
|
|
7
8
|
key: 0,
|
|
8
9
|
class: "text-rui-error"
|
|
9
10
|
};
|
|
@@ -51,7 +52,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
51
52
|
[_ctx.$style["with-error"]]: unref(hasError),
|
|
52
53
|
[_ctx.$style["with-success"]]: unref(hasSuccess) && !unref(hasError)
|
|
53
54
|
}
|
|
54
|
-
])
|
|
55
|
+
]),
|
|
56
|
+
"data-error": unref(hasError) ? "" : void 0
|
|
55
57
|
}, [
|
|
56
58
|
createElementVNode("div", {
|
|
57
59
|
class: normalizeClass(_ctx.$style.inner)
|
|
@@ -60,10 +62,11 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
60
62
|
checked: unref(modelValue),
|
|
61
63
|
type: "checkbox",
|
|
62
64
|
class: _ctx.$style.input,
|
|
63
|
-
disabled: __props.disabled
|
|
65
|
+
disabled: __props.disabled,
|
|
66
|
+
"aria-invalid": unref(hasError)
|
|
64
67
|
}, unref(getNonRootAttrs)(_ctx.$attrs), {
|
|
65
68
|
onInput: _cache[0] || (_cache[0] = ($event) => input($event))
|
|
66
|
-
}), null, 16,
|
|
69
|
+
}), null, 16, _hoisted_2),
|
|
67
70
|
createElementVNode("div", {
|
|
68
71
|
class: normalizeClass(_ctx.$style.toggle)
|
|
69
72
|
}, null, 2)
|
|
@@ -75,9 +78,9 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
75
78
|
renderSlot(_ctx.$slots, "default", {}, () => [
|
|
76
79
|
createTextVNode(toDisplayString(__props.label), 1)
|
|
77
80
|
]),
|
|
78
|
-
__props.required ? (openBlock(), createElementBlock("span",
|
|
81
|
+
__props.required ? (openBlock(), createElementBlock("span", _hoisted_3, " ﹡ ")) : createCommentVNode("", true)
|
|
79
82
|
], 2)) : createCommentVNode("", true)
|
|
80
|
-
],
|
|
83
|
+
], 10, _hoisted_1),
|
|
81
84
|
!__props.hideDetails ? (openBlock(), createBlock(_sfc_main$1, {
|
|
82
85
|
key: 0,
|
|
83
86
|
class: "pt-1",
|