@rotki/ui-library 2.12.2 → 2.13.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/accordions/accordion/RuiAccordion.vue.d.ts +6 -14
- package/dist/components/accordions/accordion/RuiAccordion.vue.js +3 -4
- package/dist/components/accordions/accordion/RuiAccordion.vue.js.map +1 -1
- package/dist/components/accordions/accordions/RuiAccordions.vue.d.ts +10 -9
- package/dist/components/accordions/accordions/RuiAccordions.vue.js +27 -26
- package/dist/components/accordions/accordions/RuiAccordions.vue.js.map +1 -1
- package/dist/components/alerts/RuiAlert.vue.d.ts +5 -15
- package/dist/components/alerts/RuiAlert.vue2.js +8 -16
- package/dist/components/alerts/RuiAlert.vue2.js.map +1 -1
- package/dist/components/buttons/button/RuiButton.vue.d.ts +5 -7
- package/dist/components/buttons/button/RuiButton.vue2.js +19 -20
- package/dist/components/buttons/button/RuiButton.vue2.js.map +1 -1
- package/dist/components/buttons/button-group/RuiButtonGroup.vue.d.ts +6 -5
- package/dist/components/buttons/button-group/RuiButtonGroup.vue2.js +42 -41
- package/dist/components/buttons/button-group/RuiButtonGroup.vue2.js.map +1 -1
- package/dist/components/calendar/RuiCalendar.vue.d.ts +1 -6
- package/dist/components/calendar/RuiCalendar.vue.js +6 -7
- package/dist/components/calendar/RuiCalendar.vue.js.map +1 -1
- package/dist/components/calendar/RuiCalendarGrid.vue.js +1 -1
- package/dist/components/calendar/RuiCalendarGrid.vue2.js +19 -17
- package/dist/components/calendar/RuiCalendarGrid.vue2.js.map +1 -1
- package/dist/components/calendar/RuiCalendarHeader.vue.js +1 -1
- package/dist/components/calendar/RuiCalendarHeader.vue2.js +2 -3
- package/dist/components/calendar/RuiCalendarHeader.vue2.js.map +1 -1
- package/dist/components/calendar/RuiCalendarMenu.vue.js +1 -1
- package/dist/components/calendar/RuiCalendarMenu.vue2.js +47 -39
- package/dist/components/calendar/RuiCalendarMenu.vue2.js.map +1 -1
- package/dist/components/cards/RuiCard.vue.d.ts +9 -24
- package/dist/components/cards/RuiCard.vue2.js +7 -7
- package/dist/components/cards/RuiCard.vue2.js.map +1 -1
- package/dist/components/cards/RuiCardHeader.vue.d.ts +5 -10
- package/dist/components/cards/RuiCardHeader.vue2.js.map +1 -1
- package/dist/components/chips/RuiChip.vue.d.ts +7 -21
- package/dist/components/chips/RuiChip.vue2.js +16 -21
- package/dist/components/chips/RuiChip.vue2.js.map +1 -1
- package/dist/components/color-picker/RuiColorBoard.vue.d.ts +1 -1
- package/dist/components/color-picker/RuiColorBoard.vue2.js +14 -18
- package/dist/components/color-picker/RuiColorBoard.vue2.js.map +1 -1
- package/dist/components/color-picker/RuiColorDisplay.vue.js +3 -5
- package/dist/components/color-picker/RuiColorDisplay.vue.js.map +1 -1
- package/dist/components/color-picker/RuiColorHue.vue2.js +10 -13
- package/dist/components/color-picker/RuiColorHue.vue2.js.map +1 -1
- package/dist/components/color-picker/RuiColorInput.vue.js +8 -6
- package/dist/components/color-picker/RuiColorInput.vue.js.map +1 -1
- package/dist/components/color-picker/RuiColorPicker.vue.d.ts +7 -9
- package/dist/components/color-picker/RuiColorPicker.vue.js +18 -13
- package/dist/components/color-picker/RuiColorPicker.vue.js.map +1 -1
- package/dist/components/color-picker/utils.js +22 -5
- package/dist/components/color-picker/utils.js.map +1 -1
- package/dist/components/date-time-picker/RuiDateTimePicker.vue.d.ts +2 -44
- package/dist/components/date-time-picker/RuiDateTimePicker.vue2.js +73 -77
- package/dist/components/date-time-picker/RuiDateTimePicker.vue2.js.map +1 -1
- package/dist/components/date-time-picker/dayjs-setup.d.ts +1 -0
- package/dist/components/date-time-picker/dayjs-setup.js +8 -0
- package/dist/components/date-time-picker/dayjs-setup.js.map +1 -0
- package/dist/components/date-time-picker/segment-config.d.ts +14 -0
- package/dist/components/date-time-picker/segment-config.js +23 -0
- package/dist/components/date-time-picker/segment-config.js.map +1 -0
- package/dist/components/date-time-picker/segment-utils.d.ts +5 -0
- package/dist/components/date-time-picker/segment-utils.js +36 -0
- package/dist/components/date-time-picker/segment-utils.js.map +1 -0
- package/dist/components/date-time-picker/use-date-time-selection.d.ts +1 -0
- package/dist/components/date-time-picker/use-date-time-selection.js +1 -0
- package/dist/components/date-time-picker/use-date-time-selection.js.map +1 -1
- package/dist/components/date-time-picker/use-keyboard-handler.d.ts +4 -8
- package/dist/components/date-time-picker/use-keyboard-handler.js +9 -54
- package/dist/components/date-time-picker/use-keyboard-handler.js.map +1 -1
- package/dist/components/date-time-picker/utils.d.ts +1 -0
- package/dist/components/date-time-picker/utils.js +1 -0
- package/dist/components/date-time-picker/utils.js.map +1 -1
- package/dist/components/divider/RuiDivider.vue.d.ts +1 -3
- package/dist/components/divider/RuiDivider.vue.js.map +1 -1
- package/dist/components/forms/auto-complete/RuiAutoComplete.vue.d.ts +9 -1120
- package/dist/components/forms/auto-complete/RuiAutoComplete.vue2.js +144 -160
- package/dist/components/forms/auto-complete/RuiAutoComplete.vue2.js.map +1 -1
- package/dist/components/forms/checkbox/RuiCheckbox.vue.d.ts +15 -24
- package/dist/components/forms/checkbox/RuiCheckbox.vue2.js +31 -31
- package/dist/components/forms/checkbox/RuiCheckbox.vue2.js.map +1 -1
- package/dist/components/forms/radio-button/radio/RuiRadio.vue.d.ts +1 -1
- package/dist/components/forms/radio-button/radio/RuiRadio.vue2.js +18 -21
- 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 +3 -1
- package/dist/components/forms/radio-button/radio-group/RuiRadioGroup.vue2.js +12 -15
- package/dist/components/forms/radio-button/radio-group/RuiRadioGroup.vue2.js.map +1 -1
- package/dist/components/forms/revealable-text-field/RuiRevealableTextField.vue.d.ts +5 -11
- package/dist/components/forms/revealable-text-field/RuiRevealableTextField.vue.js +6 -7
- package/dist/components/forms/revealable-text-field/RuiRevealableTextField.vue.js.map +1 -1
- package/dist/components/forms/select/RuiMenuSelect.vue.d.ts +9 -784
- package/dist/components/forms/select/RuiMenuSelect.vue2.js +48 -51
- package/dist/components/forms/select/RuiMenuSelect.vue2.js.map +1 -1
- package/dist/components/forms/select/RuiSimpleSelect.vue.d.ts +10 -11
- package/dist/components/forms/select/RuiSimpleSelect.vue2.js +15 -24
- package/dist/components/forms/select/RuiSimpleSelect.vue2.js.map +1 -1
- package/dist/components/forms/slider/RuiSlider.vue.d.ts +10 -26
- package/dist/components/forms/slider/RuiSlider.vue2.js +41 -46
- package/dist/components/forms/slider/RuiSlider.vue2.js.map +1 -1
- package/dist/components/forms/switch/RuiSwitch.vue.d.ts +12 -20
- package/dist/components/forms/switch/RuiSwitch.vue2.js +21 -20
- package/dist/components/forms/switch/RuiSwitch.vue2.js.map +1 -1
- package/dist/components/forms/text-area/RuiTextArea.vue.d.ts +5 -30
- package/dist/components/forms/text-area/RuiTextArea.vue2.js +43 -79
- package/dist/components/forms/text-area/RuiTextArea.vue2.js.map +1 -1
- package/dist/components/forms/text-field/RuiTextField.vue.d.ts +7 -27
- package/dist/components/forms/text-field/RuiTextField.vue2.js +35 -66
- package/dist/components/forms/text-field/RuiTextField.vue2.js.map +1 -1
- package/dist/components/helpers/RuiFormTextDetail.vue.d.ts +1 -5
- package/dist/components/helpers/RuiFormTextDetail.vue.js +5 -9
- package/dist/components/helpers/RuiFormTextDetail.vue.js.map +1 -1
- package/dist/components/icons/LazyIcon.vue.d.ts +1 -3
- package/dist/components/icons/RuiIcon.vue.d.ts +1 -4
- package/dist/components/icons/RuiIcon.vue2.js +8 -8
- package/dist/components/icons/RuiIcon.vue2.js.map +1 -1
- package/dist/components/index.d.ts +3 -3
- package/dist/components/loaders/RuiSkeletonBase.vue.d.ts +1 -3
- package/dist/components/loaders/RuiSkeletonBase.vue2.js +1 -1
- package/dist/components/loaders/RuiSkeletonBase.vue2.js.map +1 -1
- package/dist/components/loaders/RuiSkeletonLoader.vue.d.ts +1 -4
- package/dist/components/loaders/RuiSkeletonLoader.vue2.js +1 -1
- package/dist/components/loaders/RuiSkeletonLoader.vue2.js.map +1 -1
- package/dist/components/logos/RuiLogo.vue.d.ts +1 -7
- package/dist/components/logos/RuiLogo.vue.js +11 -13
- package/dist/components/logos/RuiLogo.vue.js.map +1 -1
- package/dist/components/overlays/badge/RuiBadge.vue.d.ts +5 -20
- package/dist/components/overlays/badge/RuiBadge.vue2.js +11 -13
- package/dist/components/overlays/badge/RuiBadge.vue2.js.map +1 -1
- package/dist/components/overlays/bottom-sheet/RuiBottomSheet.vue.d.ts +10 -5
- package/dist/components/overlays/bottom-sheet/RuiBottomSheet.vue.js +18 -7
- package/dist/components/overlays/bottom-sheet/RuiBottomSheet.vue.js.map +1 -1
- package/dist/components/overlays/dialog/RuiDialog.vue.d.ts +21 -27
- package/dist/components/overlays/dialog/RuiDialog.vue2.js +80 -63
- package/dist/components/overlays/dialog/RuiDialog.vue2.js.map +1 -1
- package/dist/components/overlays/menu/RuiMenu.vue.d.ts +24 -35
- package/dist/components/overlays/menu/RuiMenu.vue2.js +67 -76
- package/dist/components/overlays/menu/RuiMenu.vue2.js.map +1 -1
- package/dist/components/overlays/navigation-drawer/RuiNavigationDrawer.vue.d.ts +22 -30
- package/dist/components/overlays/navigation-drawer/RuiNavigationDrawer.vue2.js +71 -47
- package/dist/components/overlays/navigation-drawer/RuiNavigationDrawer.vue2.js.map +1 -1
- package/dist/components/overlays/notification/RuiNotification.vue.d.ts +12 -12
- package/dist/components/overlays/notification/RuiNotification.vue.js +25 -22
- package/dist/components/overlays/notification/RuiNotification.vue.js.map +1 -1
- package/dist/components/overlays/tooltip/RuiTooltip.vue.d.ts +7 -18
- package/dist/components/overlays/tooltip/RuiTooltip.vue2.js +11 -8
- package/dist/components/overlays/tooltip/RuiTooltip.vue2.js.map +1 -1
- package/dist/components/progress/RuiProgress.vue.d.ts +8 -10
- package/dist/components/progress/RuiProgress.vue2.js +18 -24
- package/dist/components/progress/RuiProgress.vue2.js.map +1 -1
- package/dist/components/steppers/RuiFooterStepper.vue.d.ts +10 -11
- package/dist/components/steppers/RuiFooterStepper.vue2.js +21 -21
- package/dist/components/steppers/RuiFooterStepper.vue2.js.map +1 -1
- package/dist/components/steppers/RuiStepper.vue.d.ts +6 -15
- package/dist/components/steppers/RuiStepper.vue2.js +31 -33
- package/dist/components/steppers/RuiStepper.vue2.js.map +1 -1
- package/dist/components/steppers/RuiStepperCustomIcon.vue.d.ts +1 -3
- package/dist/components/steppers/RuiStepperCustomIcon.vue2.js +1 -1
- package/dist/components/steppers/RuiStepperCustomIcon.vue2.js.map +1 -1
- package/dist/components/steppers/RuiStepperIcon.vue.d.ts +1 -3
- package/dist/components/steppers/RuiStepperIcon.vue2.js +1 -1
- package/dist/components/steppers/RuiStepperIcon.vue2.js.map +1 -1
- package/dist/components/tables/RuiDataTable.vue.d.ts +29 -81
- package/dist/components/tables/RuiDataTable.vue2.js +173 -582
- package/dist/components/tables/RuiDataTable.vue2.js.map +1 -1
- package/dist/components/tables/RuiDataTable.vue3.js +24 -27
- package/dist/components/tables/RuiDataTable.vue3.js.map +1 -1
- package/dist/components/tables/RuiExpandButton.vue.d.ts +3 -6
- package/dist/components/tables/RuiExpandButton.vue2.js +1 -0
- package/dist/components/tables/RuiExpandButton.vue2.js.map +1 -1
- package/dist/components/tables/RuiTableHead.vue.d.ts +4 -7
- package/dist/components/tables/RuiTableHead.vue2.js +19 -19
- package/dist/components/tables/RuiTableHead.vue2.js.map +1 -1
- package/dist/components/tables/RuiTablePagination.vue.d.ts +10 -10
- package/dist/components/tables/RuiTablePagination.vue2.js +17 -16
- package/dist/components/tables/RuiTablePagination.vue2.js.map +1 -1
- package/dist/components/tabs/tab/RuiTab.vue.d.ts +3 -18
- package/dist/components/tabs/tab/RuiTab.vue2.js +80 -51
- package/dist/components/tabs/tab/RuiTab.vue2.js.map +1 -1
- package/dist/components/tabs/tab-item/RuiTabItem.vue.d.ts +3 -11
- package/dist/components/tabs/tab-item/RuiTabItem.vue2.js +1 -1
- package/dist/components/tabs/tab-item/RuiTabItem.vue2.js.map +1 -1
- package/dist/components/tabs/tab-items/RuiTabItems.vue.d.ts +1 -4
- package/dist/components/tabs/tab-items/RuiTabItems.vue2.js +18 -18
- package/dist/components/tabs/tab-items/RuiTabItems.vue2.js.map +1 -1
- package/dist/components/tabs/tabs/RuiTabs.vue.d.ts +10 -14
- package/dist/components/tabs/tabs/RuiTabs.vue2.js +101 -94
- package/dist/components/tabs/tabs/RuiTabs.vue2.js.map +1 -1
- package/dist/components/time-picker/RuiTimePicker.vue.d.ts +1 -4
- package/dist/components/time-picker/RuiTimePicker.vue2.js +68 -35
- package/dist/components/time-picker/RuiTimePicker.vue2.js.map +1 -1
- package/dist/composables/breakpoint.js +8 -13
- package/dist/composables/breakpoint.js.map +1 -1
- package/dist/composables/dropdown-menu.d.ts +7 -4
- package/dist/composables/dropdown-menu.js +73 -50
- package/dist/composables/dropdown-menu.js.map +1 -1
- package/dist/composables/forms/auto-complete/focus.d.ts +7 -5
- package/dist/composables/forms/auto-complete/focus.js +28 -17
- package/dist/composables/forms/auto-complete/focus.js.map +1 -1
- package/dist/composables/forms/auto-complete/index.d.ts +0 -9
- package/dist/composables/forms/auto-complete/keyboard-navigation.d.ts +8 -3
- package/dist/composables/forms/auto-complete/keyboard-navigation.js +11 -5
- package/dist/composables/forms/auto-complete/keyboard-navigation.js.map +1 -1
- package/dist/composables/forms/auto-complete/search.d.ts +7 -0
- package/dist/composables/forms/auto-complete/search.js +10 -8
- package/dist/composables/forms/auto-complete/search.js.map +1 -1
- package/dist/composables/forms/auto-complete/value.d.ts +4 -0
- package/dist/composables/forms/auto-complete/value.js +24 -42
- package/dist/composables/forms/auto-complete/value.js.map +1 -1
- package/dist/composables/forms/use-label-with-quote.d.ts +2 -0
- package/dist/composables/forms/use-label-with-quote.js +14 -0
- package/dist/composables/forms/use-label-with-quote.js.map +1 -0
- package/dist/composables/forms/use-prepend-append-width.d.ts +6 -0
- package/dist/composables/forms/use-prepend-append-width.js +25 -0
- package/dist/composables/forms/use-prepend-append-width.js.map +1 -0
- package/dist/composables/popper.js +60 -46
- package/dist/composables/popper.js.map +1 -1
- package/dist/composables/sticky-header.d.ts +7 -5
- package/dist/composables/sticky-header.js +51 -41
- package/dist/composables/sticky-header.js.map +1 -1
- package/dist/composables/tables/data-table/columns.d.ts +25 -0
- package/dist/composables/tables/data-table/columns.js +54 -0
- package/dist/composables/tables/data-table/columns.js.map +1 -0
- package/dist/composables/tables/data-table/expansion.d.ts +17 -0
- package/dist/composables/tables/data-table/expansion.js +38 -0
- package/dist/composables/tables/data-table/expansion.js.map +1 -0
- package/dist/composables/tables/data-table/grouping.d.ts +29 -0
- package/dist/composables/tables/data-table/grouping.js +136 -0
- package/dist/composables/tables/data-table/grouping.js.map +1 -0
- package/dist/composables/tables/data-table/pagination.d.ts +33 -0
- package/dist/composables/tables/data-table/pagination.js +119 -0
- package/dist/composables/tables/data-table/pagination.js.map +1 -0
- package/dist/composables/tables/data-table/selection.d.ts +29 -0
- package/dist/composables/tables/data-table/selection.js +164 -0
- package/dist/composables/tables/data-table/selection.js.map +1 -0
- package/dist/composables/tables/data-table/sort.d.ts +32 -0
- package/dist/composables/tables/data-table/sort.js +136 -0
- package/dist/composables/tables/data-table/sort.js.map +1 -0
- package/dist/composables/tables/data-table/types.d.ts +14 -0
- package/dist/composables/tables/data-table/types.js +11 -0
- package/dist/composables/tables/data-table/types.js.map +1 -0
- package/dist/composables/theme.js +1 -20
- package/dist/composables/theme.js.map +1 -1
- package/dist/composables/timeout-manager.d.ts +4 -2
- package/dist/composables/timeout-manager.js +2 -1
- package/dist/composables/timeout-manager.js.map +1 -1
- package/dist/icons/icons_1.js +28 -28
- package/dist/icons/icons_1.js.map +1 -1
- package/dist/icons/icons_2.d.ts +8 -8
- package/dist/icons/icons_2.js +52 -52
- package/dist/icons/icons_2.js.map +1 -1
- package/dist/icons/icons_3.d.ts +18 -18
- package/dist/icons/icons_3.js +108 -108
- package/dist/icons/icons_3.js.map +1 -1
- package/dist/icons/icons_4.d.ts +35 -0
- package/dist/icons/icons_4.js +176 -1
- package/dist/icons/icons_4.js.map +1 -1
- package/dist/icons/index.d.ts +1 -1
- package/dist/icons/index.js +1 -1
- package/dist/icons/index.js.map +1 -1
- package/dist/index.js +43 -15
- package/dist/index.js.map +1 -1
- package/dist/style.css +189 -162
- package/dist/theme/index.js +15 -1
- package/dist/theme/index.js.map +1 -1
- package/dist/utils/assert.d.ts +1 -1
- package/dist/utils/assert.js.map +1 -1
- package/dist/utils/form-text-detail.d.ts +9 -8
- package/dist/utils/form-text-detail.js +1 -2
- package/dist/utils/form-text-detail.js.map +1 -1
- package/dist/utils/helpers.d.ts +4 -32
- package/dist/utils/helpers.js +8 -9
- package/dist/utils/helpers.js.map +1 -1
- package/dist/utils/is-equal.d.ts +1 -1
- package/dist/utils/is-equal.js +5 -3
- package/dist/utils/is-equal.js.map +1 -1
- package/dist/web-types.json +359 -359
- package/package.json +44 -35
- package/dist/utils/generate-id.d.ts +0 -5
- package/dist/utils/generate-id.js +0 -21
- package/dist/utils/generate-id.js.map +0 -1
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { defineComponent, useCssVars, unref,
|
|
1
|
+
import { defineComponent, useCssVars, unref, useModel, useTemplateRef, toRef, computed, openBlock, createElementBlock, normalizeProps, guardReactiveProps, createElementVNode, normalizeClass, createTextVNode, toDisplayString, createCommentVNode, withDirectives, mergeProps, vModelText, Fragment, renderList, createBlock, mergeModels } from "vue";
|
|
2
2
|
import _sfc_main$1 from "../../helpers/RuiFormTextDetail.vue.js";
|
|
3
3
|
import { useFormTextDetail } from "../../../utils/form-text-detail.js";
|
|
4
4
|
import { getRootAttrs, getNonRootAttrs } from "../../../utils/helpers.js";
|
|
5
|
-
import { get } from "@vueuse/shared";
|
|
6
5
|
import { useElementBounding } from "@vueuse/core";
|
|
6
|
+
import { get } from "@vueuse/shared";
|
|
7
7
|
const _hoisted_1 = ["data-error"];
|
|
8
8
|
const _hoisted_2 = {
|
|
9
9
|
key: 0,
|
|
@@ -16,8 +16,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
16
16
|
inheritAttrs: false
|
|
17
17
|
},
|
|
18
18
|
__name: "RuiSlider",
|
|
19
|
-
props: {
|
|
20
|
-
modelValue: { default: 0 },
|
|
19
|
+
props: /* @__PURE__ */ mergeModels({
|
|
21
20
|
min: { default: 0 },
|
|
22
21
|
max: { default: 100 },
|
|
23
22
|
step: { default: 1 },
|
|
@@ -36,32 +35,29 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
36
35
|
sliderClass: { default: "" },
|
|
37
36
|
tickClass: { default: "" },
|
|
38
37
|
required: { type: Boolean, default: false }
|
|
39
|
-
},
|
|
40
|
-
|
|
41
|
-
|
|
38
|
+
}, {
|
|
39
|
+
"modelValue": { default: 0 },
|
|
40
|
+
"modelModifiers": {}
|
|
41
|
+
}),
|
|
42
|
+
emits: ["update:modelValue"],
|
|
43
|
+
setup(__props) {
|
|
42
44
|
useCssVars((_ctx) => ({
|
|
43
|
-
"
|
|
44
|
-
"
|
|
45
|
-
"
|
|
46
|
-
"
|
|
45
|
+
"v0602bc8e": unref(sliderHeight),
|
|
46
|
+
"v3a8ac2f4": unref(sliderWidth),
|
|
47
|
+
"ac6c4868": unref(trackWidth),
|
|
48
|
+
"v7501a288": unref(tickSizeInPx)
|
|
47
49
|
}));
|
|
48
|
-
const
|
|
49
|
-
const
|
|
50
|
-
const {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
set(value) {
|
|
56
|
-
emit("update:model-value", value);
|
|
57
|
-
}
|
|
58
|
-
});
|
|
50
|
+
const modelValue = useModel(__props, "modelValue");
|
|
51
|
+
const outer = useTemplateRef("outer");
|
|
52
|
+
const { hasError, hasSuccess } = useFormTextDetail(
|
|
53
|
+
toRef(() => __props.errorMessages),
|
|
54
|
+
toRef(() => __props.successMessages)
|
|
55
|
+
);
|
|
56
|
+
const { width, height } = useElementBounding(outer);
|
|
59
57
|
const ticksData = computed(() => {
|
|
60
|
-
const
|
|
61
|
-
const
|
|
62
|
-
const
|
|
63
|
-
const total = range / stepVal;
|
|
64
|
-
const current = Math.round((get(modelValue) - minVal) / stepVal);
|
|
58
|
+
const range = __props.max - __props.min;
|
|
59
|
+
const total = range / __props.step;
|
|
60
|
+
const current = Math.round((get(modelValue) - __props.min) / __props.step);
|
|
65
61
|
return [current, total];
|
|
66
62
|
});
|
|
67
63
|
const trackWidth = computed(() => {
|
|
@@ -69,15 +65,9 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
69
65
|
const percentage = Math.min(100, Math.max(0, Math.round(current / total * 100)));
|
|
70
66
|
return `${percentage}%`;
|
|
71
67
|
});
|
|
72
|
-
const { hasError, hasSuccess } = useFormTextDetail(
|
|
73
|
-
errorMessages,
|
|
74
|
-
successMessages
|
|
75
|
-
);
|
|
76
|
-
const outer = ref();
|
|
77
|
-
const { width, height } = useElementBounding(outer);
|
|
78
68
|
const sliderWidth = computed(() => `${get(width)}px`);
|
|
79
69
|
const sliderHeight = computed(() => `${get(height)}px`);
|
|
80
|
-
const tickSizeInPx = computed(() => `${
|
|
70
|
+
const tickSizeInPx = computed(() => `${__props.tickSize}px`);
|
|
81
71
|
return (_ctx, _cache) => {
|
|
82
72
|
return openBlock(), createElementBlock("div", normalizeProps(guardReactiveProps(unref(getRootAttrs)(_ctx.$attrs))), [
|
|
83
73
|
createElementVNode("label", {
|
|
@@ -85,10 +75,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
85
75
|
_ctx.$style.wrapper,
|
|
86
76
|
{
|
|
87
77
|
[_ctx.$style.disabled ?? ""]: __props.disabled,
|
|
88
|
-
[_ctx.$style.vertical ?? ""]:
|
|
78
|
+
[_ctx.$style.vertical ?? ""]: __props.vertical,
|
|
89
79
|
[_ctx.$style[__props.color] ?? ""]: __props.color,
|
|
90
80
|
[_ctx.$style["hide-track"] ?? ""]: __props.hideTrack,
|
|
91
|
-
[_ctx.$style["big-tick"] ?? ""]:
|
|
81
|
+
[_ctx.$style["big-tick"] ?? ""]: __props.tickSize > 4,
|
|
92
82
|
[_ctx.$style["with-error"] ?? ""]: unref(hasError),
|
|
93
83
|
[_ctx.$style["with-success"] ?? ""]: unref(hasSuccess) && !unref(hasError)
|
|
94
84
|
}
|
|
@@ -111,18 +101,18 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
111
101
|
class: normalizeClass(_ctx.$style.inner)
|
|
112
102
|
}, [
|
|
113
103
|
withDirectives(createElementVNode("input", mergeProps({
|
|
114
|
-
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) =>
|
|
104
|
+
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => modelValue.value = $event),
|
|
115
105
|
class: _ctx.$style.input,
|
|
116
106
|
type: "range",
|
|
117
|
-
max:
|
|
118
|
-
min:
|
|
119
|
-
step:
|
|
107
|
+
max: __props.max,
|
|
108
|
+
min: __props.min,
|
|
109
|
+
step: __props.step,
|
|
120
110
|
disabled: __props.disabled,
|
|
121
111
|
"aria-invalid": unref(hasError),
|
|
122
112
|
"aria-label": __props.label || void 0,
|
|
123
|
-
"aria-valuetext": String(
|
|
113
|
+
"aria-valuetext": String(modelValue.value)
|
|
124
114
|
}, unref(getNonRootAttrs)(_ctx.$attrs)), null, 16, _hoisted_3), [
|
|
125
|
-
[vModelText,
|
|
115
|
+
[vModelText, modelValue.value]
|
|
126
116
|
]),
|
|
127
117
|
createElementVNode("div", {
|
|
128
118
|
class: normalizeClass(_ctx.$style.slider)
|
|
@@ -144,7 +134,12 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
144
134
|
(openBlock(true), createElementBlock(Fragment, null, renderList(unref(ticksData)[1] + 1, (i) => {
|
|
145
135
|
return openBlock(), createElementBlock("span", {
|
|
146
136
|
key: i,
|
|
147
|
-
class: normalizeClass(
|
|
137
|
+
class: normalizeClass(
|
|
138
|
+
__props.hideTrack ? [__props.tickClass] : {
|
|
139
|
+
[_ctx.$style.highlighted]: i - 1 <= unref(ticksData)[0],
|
|
140
|
+
[__props.tickClass]: i - 1 > unref(ticksData)[0]
|
|
141
|
+
}
|
|
142
|
+
)
|
|
148
143
|
}, null, 2);
|
|
149
144
|
}), 128))
|
|
150
145
|
], 2)) : createCommentVNode("", true)
|
|
@@ -155,7 +150,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
155
150
|
__props.showThumbLabel && !__props.disabled ? (openBlock(), createElementBlock("div", {
|
|
156
151
|
key: 0,
|
|
157
152
|
class: normalizeClass(_ctx.$style.slider__thumb_label)
|
|
158
|
-
}, toDisplayString(
|
|
153
|
+
}, toDisplayString(modelValue.value), 3)) : createCommentVNode("", true)
|
|
159
154
|
], 2)
|
|
160
155
|
], 2)
|
|
161
156
|
], 2)
|
|
@@ -164,8 +159,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
164
159
|
!__props.hideDetails ? (openBlock(), createBlock(_sfc_main$1, {
|
|
165
160
|
key: 0,
|
|
166
161
|
class: "pt-1",
|
|
167
|
-
"error-messages":
|
|
168
|
-
"success-messages":
|
|
162
|
+
"error-messages": __props.errorMessages,
|
|
163
|
+
"success-messages": __props.successMessages,
|
|
169
164
|
hint: __props.hint
|
|
170
165
|
}, null, 8, ["error-messages", "success-messages", "hint"])) : createCommentVNode("", true)
|
|
171
166
|
], 16);
|
|
@@ -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 { useFormTextDetail } from '@/utils/form-text-detail';\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 :aria-label=\"label || undefined\"\n :aria-valuetext=\"String(vModel)\"\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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"}
|
|
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 { useFormTextDetail } from '@/utils/form-text-detail';\nimport { getNonRootAttrs, getRootAttrs } from '@/utils/helpers';\n\nexport interface Props {\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 modelValue = defineModel<number>({ default: 0 });\n\nconst {\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} = defineProps<Props>();\n\nconst outer = useTemplateRef<HTMLDivElement>('outer');\n\nconst { hasError, hasSuccess } = useFormTextDetail(\n toRef(() => errorMessages),\n toRef(() => successMessages),\n);\nconst { width, height } = useElementBounding(outer);\n\nconst ticksData = computed<[number, number]>(() => {\n const range = max - min;\n const total = range / step;\n const current = Math.round((get(modelValue) - min) / step);\n\n return [current, total];\n});\n\nconst trackWidth = computed<string>(() => {\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 sliderWidth = computed<string>(() => `${get(width)}px`);\nconst sliderHeight = computed<string>(() => `${get(height)}px`);\nconst tickSizeInPx = computed<string>(() => `${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=\"modelValue\"\n :class=\"$style.input\"\n type=\"range\"\n :max=\"max\"\n :min=\"min\"\n :step=\"step\"\n :disabled=\"disabled\"\n :aria-invalid=\"hasError\"\n :aria-label=\"label || undefined\"\n :aria-valuetext=\"String(modelValue)\"\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=\"\n hideTrack\n ? [tickClass]\n : {\n [$style.highlighted]: i - 1 <= ticksData[0],\n [tickClass]: i - 1 > ticksData[0],\n }\n \"\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":["_useModel","_createElementBlock","_normalizeProps","_guardReactiveProps","_unref","$attrs","_createElementVNode","_normalizeClass","$style","_createTextVNode","_toDisplayString","_withDirectives","_mergeProps","_Fragment","_renderList","_createBlock","RuiFormTextDetail"],"mappings":"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"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import type { ContextColorsType } from '../../../consts/colors.js';
|
|
2
2
|
export interface Props {
|
|
3
|
-
modelValue?: boolean;
|
|
4
3
|
disabled?: boolean;
|
|
5
4
|
color?: ContextColorsType;
|
|
6
5
|
size?: 'sm';
|
|
@@ -11,26 +10,19 @@ export interface Props {
|
|
|
11
10
|
hideDetails?: boolean;
|
|
12
11
|
required?: boolean;
|
|
13
12
|
}
|
|
14
|
-
|
|
15
|
-
type __VLS_Slots = {
|
|
16
|
-
default?: (
|
|
13
|
+
type __VLS_Props = Props;
|
|
14
|
+
type __VLS_Slots = {
|
|
15
|
+
default?: () => any;
|
|
16
|
+
};
|
|
17
|
+
type __VLS_ModelProps = {
|
|
18
|
+
modelValue?: boolean;
|
|
17
19
|
};
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
label: string;
|
|
25
|
-
color: ContextColorsType;
|
|
26
|
-
disabled: boolean;
|
|
27
|
-
modelValue: boolean;
|
|
28
|
-
errorMessages: string | string[];
|
|
29
|
-
successMessages: string | string[];
|
|
30
|
-
hint: string;
|
|
31
|
-
required: boolean;
|
|
32
|
-
hideDetails: boolean;
|
|
33
|
-
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
20
|
+
type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
|
|
21
|
+
declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
22
|
+
"update:modelValue": (value: boolean) => any;
|
|
23
|
+
}, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
|
|
24
|
+
"onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
|
|
25
|
+
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
34
26
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
35
27
|
declare const _default: typeof __VLS_export;
|
|
36
28
|
export default _default;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { defineComponent,
|
|
1
|
+
import { defineComponent, useModel, toRef, openBlock, createElementBlock, normalizeProps, guardReactiveProps, unref, createElementVNode, normalizeClass, mergeProps, renderSlot, createTextVNode, toDisplayString, createCommentVNode, createBlock, mergeModels } from "vue";
|
|
2
2
|
import _sfc_main$1 from "../../helpers/RuiFormTextDetail.vue.js";
|
|
3
3
|
import { useFormTextDetail } from "../../../utils/form-text-detail.js";
|
|
4
4
|
import { getRootAttrs, getNonRootAttrs } from "../../../utils/helpers.js";
|
|
5
|
+
import { set } from "@vueuse/shared";
|
|
5
6
|
const _hoisted_1 = ["data-error"];
|
|
6
7
|
const _hoisted_2 = ["checked", "disabled", "aria-invalid"];
|
|
7
8
|
const _hoisted_3 = {
|
|
@@ -14,40 +15,40 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
14
15
|
inheritAttrs: false
|
|
15
16
|
},
|
|
16
17
|
__name: "RuiSwitch",
|
|
17
|
-
props: {
|
|
18
|
-
modelValue: { type: Boolean, default: false },
|
|
18
|
+
props: /* @__PURE__ */ mergeModels({
|
|
19
19
|
disabled: { type: Boolean, default: false },
|
|
20
|
-
color: { default: void 0 },
|
|
21
|
-
size: { default: void 0 },
|
|
20
|
+
color: { default: () => void 0 },
|
|
21
|
+
size: { default: () => void 0 },
|
|
22
22
|
label: { default: "" },
|
|
23
23
|
hint: { default: "" },
|
|
24
24
|
errorMessages: { default: () => [] },
|
|
25
25
|
successMessages: { default: () => [] },
|
|
26
26
|
hideDetails: { type: Boolean, default: false },
|
|
27
27
|
required: { type: Boolean, default: false }
|
|
28
|
-
},
|
|
28
|
+
}, {
|
|
29
|
+
"modelValue": { type: Boolean, ...{ default: false } },
|
|
30
|
+
"modelModifiers": {}
|
|
31
|
+
}),
|
|
29
32
|
emits: ["update:modelValue"],
|
|
30
|
-
setup(__props
|
|
31
|
-
const
|
|
32
|
-
const
|
|
33
|
-
|
|
33
|
+
setup(__props) {
|
|
34
|
+
const modelValue = useModel(__props, "modelValue");
|
|
35
|
+
const { hasError, hasSuccess } = useFormTextDetail(
|
|
36
|
+
toRef(() => __props.errorMessages),
|
|
37
|
+
toRef(() => __props.successMessages)
|
|
38
|
+
);
|
|
34
39
|
function input(event) {
|
|
35
40
|
const checked = event.target.checked;
|
|
36
|
-
|
|
41
|
+
set(modelValue, checked);
|
|
37
42
|
}
|
|
38
|
-
const { hasError, hasSuccess } = useFormTextDetail(
|
|
39
|
-
errorMessages,
|
|
40
|
-
successMessages
|
|
41
|
-
);
|
|
42
43
|
return (_ctx, _cache) => {
|
|
43
44
|
return openBlock(), createElementBlock("div", normalizeProps(guardReactiveProps(unref(getRootAttrs)(_ctx.$attrs))), [
|
|
44
45
|
createElementVNode("label", {
|
|
45
46
|
class: normalizeClass([
|
|
46
47
|
_ctx.$style.wrapper,
|
|
47
|
-
_ctx.$style[
|
|
48
|
+
_ctx.$style[__props.size ?? ""],
|
|
48
49
|
_ctx.$style[__props.color ?? ""],
|
|
49
50
|
{
|
|
50
|
-
[_ctx.$style.checked]:
|
|
51
|
+
[_ctx.$style.checked]: modelValue.value,
|
|
51
52
|
[_ctx.$style.disabled]: __props.disabled,
|
|
52
53
|
[_ctx.$style["with-error"]]: unref(hasError),
|
|
53
54
|
[_ctx.$style["with-success"]]: unref(hasSuccess) && !unref(hasError)
|
|
@@ -59,7 +60,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
59
60
|
class: normalizeClass(_ctx.$style.inner)
|
|
60
61
|
}, [
|
|
61
62
|
createElementVNode("input", mergeProps({
|
|
62
|
-
checked:
|
|
63
|
+
checked: modelValue.value,
|
|
63
64
|
type: "checkbox",
|
|
64
65
|
class: _ctx.$style.input,
|
|
65
66
|
disabled: __props.disabled,
|
|
@@ -84,8 +85,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
84
85
|
!__props.hideDetails ? (openBlock(), createBlock(_sfc_main$1, {
|
|
85
86
|
key: 0,
|
|
86
87
|
class: "pt-1",
|
|
87
|
-
"error-messages":
|
|
88
|
-
"success-messages":
|
|
88
|
+
"error-messages": __props.errorMessages,
|
|
89
|
+
"success-messages": __props.successMessages,
|
|
89
90
|
hint: __props.hint
|
|
90
91
|
}, null, 8, ["error-messages", "success-messages", "hint"])) : createCommentVNode("", true)
|
|
91
92
|
], 16);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RuiSwitch.vue2.js","sources":["../../../../src/components/forms/switch/RuiSwitch.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { ContextColorsType } from '@/consts/colors';\nimport RuiFormTextDetail from '@/components/helpers/RuiFormTextDetail.vue';\nimport { useFormTextDetail } from '@/utils/form-text-detail';\nimport { getNonRootAttrs, getRootAttrs } from '@/utils/helpers';\n\nexport interface Props {\n
|
|
1
|
+
{"version":3,"file":"RuiSwitch.vue2.js","sources":["../../../../src/components/forms/switch/RuiSwitch.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { ContextColorsType } from '@/consts/colors';\nimport RuiFormTextDetail from '@/components/helpers/RuiFormTextDetail.vue';\nimport { useFormTextDetail } from '@/utils/form-text-detail';\nimport { getNonRootAttrs, getRootAttrs } from '@/utils/helpers';\n\nexport interface Props {\n disabled?: boolean;\n color?: ContextColorsType;\n size?: 'sm';\n label?: string;\n hint?: string;\n errorMessages?: string | string[];\n successMessages?: string | string[];\n hideDetails?: boolean;\n required?: boolean;\n}\n\ndefineOptions({\n name: 'RuiSwitch',\n inheritAttrs: false,\n});\n\nconst modelValue = defineModel<boolean>({ default: false });\n\nconst {\n disabled = false,\n color = undefined,\n size = undefined,\n label = '',\n hint = '',\n errorMessages = [],\n successMessages = [],\n hideDetails = false,\n required = false,\n} = defineProps<Props>();\n\ndefineSlots<{\n default?: () => any;\n}>();\n\nconst { hasError, hasSuccess } = useFormTextDetail(\n toRef(() => errorMessages),\n toRef(() => successMessages),\n);\n\nfunction input(event: Event): void {\n const checked = (event.target as HTMLInputElement).checked;\n set(modelValue, checked);\n}\n</script>\n\n<template>\n <div v-bind=\"getRootAttrs($attrs)\">\n <label\n :class=\"[\n $style.wrapper,\n $style[size ?? ''],\n $style[color ?? ''],\n {\n [$style.checked]: modelValue,\n [$style.disabled]: disabled,\n [$style['with-error']]: hasError,\n [$style['with-success']]: hasSuccess && !hasError,\n },\n ]\"\n :data-error=\"hasError ? '' : undefined\"\n >\n <div :class=\"$style.inner\">\n <input\n :checked=\"modelValue\"\n type=\"checkbox\"\n :class=\"$style.input\"\n :disabled=\"disabled\"\n :aria-invalid=\"hasError\"\n v-bind=\"getNonRootAttrs($attrs)\"\n @input=\"input($event)\"\n />\n <div :class=\"$style.toggle\" />\n </div>\n <span\n v-if=\"label || $slots.default\"\n :class=\"$style.label\"\n class=\"text-body-1\"\n >\n <slot>{{ label }}</slot>\n <span\n v-if=\"required\"\n class=\"text-rui-error\"\n >\n ﹡\n </span>\n </span>\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.wrapper {\n @apply relative flex gap-2 items-start cursor-pointer;\n\n &.disabled {\n @apply cursor-not-allowed;\n\n .input {\n @apply bg-rui-grey-300 cursor-not-allowed;\n }\n\n .label {\n @apply text-rui-text-disabled;\n }\n\n .toggle {\n @apply bg-rui-grey-500;\n }\n }\n\n &:hover {\n &:not(.disabled) {\n .toggle {\n @apply shadow-1;\n }\n }\n }\n\n &.checked {\n &:not(.disabled) {\n .input {\n @apply bg-black;\n }\n }\n\n .toggle {\n @apply left-[21px];\n }\n }\n\n &.sm {\n .inner {\n @apply w-10 h-5 mt-0.5;\n }\n .toggle {\n @apply w-4 h-4;\n\n &:before {\n @apply w-6 h-6;\n }\n }\n\n &.checked {\n .toggle {\n @apply left-[22px];\n }\n }\n }\n\n &.checked {\n &:not(.disabled) {\n @each $color in c.$context-colors {\n &.#{$color} {\n .input {\n @apply bg-rui-#{$color};\n }\n }\n }\n }\n }\n\n &.with-error {\n .input {\n @apply bg-rui-error #{!important};\n }\n\n .label {\n @apply text-rui-error;\n }\n }\n\n &.with-success {\n .input {\n @apply bg-rui-success #{!important};\n }\n\n .label {\n @apply text-rui-success;\n }\n }\n\n .inner {\n @apply relative w-[43px] h-[24px] shrink-0;\n }\n\n .input {\n @apply appearance-none relative w-full h-full rounded-full bg-rui-grey-400 transition-all duration-75 ease-in-out cursor-pointer;\n\n &:active:not(:disabled) {\n + .toggle {\n &:before {\n @apply opacity-20;\n }\n }\n }\n }\n\n .toggle {\n @apply absolute w-5 h-5 transition-all duration-75 ease-in-out transform -translate-y-1/2 top-1/2 rounded-full pointer-events-none;\n @apply bg-white left-[2px];\n\n &:before {\n content: '';\n @apply absolute w-10 h-10 bg-black rounded-full top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2 transition-all ease-in-out opacity-0;\n }\n }\n}\n\n:global(.dark) {\n .wrapper {\n &.disabled {\n .input {\n @apply bg-rui-grey-800;\n }\n\n .toggle {\n @apply bg-rui-grey-600;\n }\n }\n\n &.checked {\n &:not(.disabled) {\n .input {\n @apply bg-white;\n }\n .toggle {\n @apply bg-black;\n }\n }\n }\n\n &.checked {\n &:not(.disabled) {\n @each $color in c.$context-colors {\n &.#{$color} {\n .input {\n @apply bg-rui-#{$color}/[0.5];\n }\n .toggle {\n @apply bg-rui-#{$color};\n }\n }\n }\n }\n }\n\n &.with-error {\n .input {\n @apply bg-rui-error/[0.5] #{!important};\n }\n .toggle {\n @apply bg-rui-error #{!important};\n }\n }\n\n &.with-success {\n .input {\n @apply bg-rui-success/[0.5] #{!important};\n }\n .toggle {\n @apply bg-rui-success #{!important};\n }\n }\n }\n\n .input {\n @apply bg-rui-grey-700;\n }\n\n .toggle {\n &:before {\n @apply bg-white;\n }\n }\n}\n</style>\n"],"names":["_useModel","_createElementBlock","_normalizeProps","_guardReactiveProps","_unref","$attrs","_createElementVNode","_normalizeClass","$style","_mergeProps","$slots","_renderSlot","_createBlock","RuiFormTextDetail"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuBA,UAAM,aAAaA,8BAAuC;AAkB1D,UAAM,EAAE,UAAU,WAAA,IAAe;AAAA,MAC/B,MAAM,MAAM,qBAAa;AAAA,MACzB,MAAM,MAAM,uBAAe;AAAA,IAAA;AAG7B,aAAS,MAAM,OAAoB;AACjC,YAAM,UAAW,MAAM,OAA4B;AACnD,UAAI,YAAY,OAAO;AAAA,IACzB;;0BAIEC,mBAgDM,OAAAC,eAAAC,mBAhDOC,MAAA,YAAA,EAAaC,KAAAA,MAAM,CAAA,CAAA,GAAA;AAAA,QAC9BC,mBAuCQ,SAAA;AAAA,UAtCL,OAAKC,eAAA;AAAA,YAAYC,KAAAA,OAAO;AAAA,YAAiBA,KAAAA,OAAO,QAAA,QAAI,EAAA;AAAA,YAAiBA,KAAAA,OAAO,QAAA,SAAK,EAAA;AAAA;eAA8BA,KAAAA,OAAO,OAAO,GAAG,WAAA;AAAA,eAAuBA,KAAAA,OAAO,QAAQ,GAAG,QAAA;AAAA,cAAqBA,CAAAA,KAAAA,uBAAuBJ,MAAA,QAAA;AAAA,eAAqBI,KAAAA,OAAM,cAAA,CAAA,GAAmBJ,MAAA,UAAA,KAAU,CAAKA,MAAA,QAAA;AAAA,YAAA;AAAA;UAWlR,cAAYA,MAAA,QAAA,IAAQ,KAAQ;AAAA,QAAA;UAE7BE,mBAWM,OAAA;AAAA,YAXA,OAAKC,eAAEC,KAAAA,OAAO,KAAK;AAAA,UAAA;YACvBF,mBAQE,SARFG,WAQE;AAAA,cAPC,SAAS,WAAA;AAAA,cACV,MAAK;AAAA,cACJ,OAAOD,KAAAA,OAAO;AAAA,cACd,UAAU,QAAA;AAAA,cACV,gBAAcJ,MAAA,QAAA;AAAA,YAAA,GACPA,MAAA,eAAA,EAAgBC,KAAAA,MAAM,GAAA;AAAA,cAC7B,SAAK,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,CAAA,WAAE,MAAM,MAAM;AAAA,YAAA;YAEtBC,mBAA8B,OAAA;AAAA,cAAxB,OAAKC,eAAEC,KAAAA,OAAO,MAAM;AAAA,YAAA;;UAGpB,QAAA,SAASE,KAAAA,OAAO,wBADxBT,mBAYO,QAAA;AAAA;YAVJ,OAAKM,eAAA,CAAEC,KAAAA,OAAO,OACT,aAAa,CAAA;AAAA,UAAA;YAEnBG,WAAwB,4BAAxB,MAAwB;AAAA,8CAAf,QAAA,KAAK,GAAA,CAAA;AAAA,YAAA;YAEN,QAAA,yBADRV,mBAKO,QALP,YAGC,KAED;;;SAIK,QAAA,4BADTW,YAMEC,aAAA;AAAA;UAJA,OAAM;AAAA,UACL,kBAAgB,QAAA;AAAA,UAChB,oBAAkB,QAAA;AAAA,UAClB,MAAM,QAAA;AAAA,QAAA;;;;;"}
|
|
@@ -24,46 +24,21 @@ export interface Props {
|
|
|
24
24
|
required?: boolean;
|
|
25
25
|
}
|
|
26
26
|
type __VLS_Props = Props;
|
|
27
|
+
type __VLS_Slots = {
|
|
28
|
+
prepend?: () => any;
|
|
29
|
+
append?: () => any;
|
|
30
|
+
};
|
|
27
31
|
type __VLS_ModelProps = {
|
|
28
32
|
modelValue: string;
|
|
29
33
|
};
|
|
30
34
|
type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
|
|
31
|
-
declare var __VLS_1: {}, __VLS_21: {};
|
|
32
|
-
type __VLS_Slots = {} & {
|
|
33
|
-
prepend?: (props: typeof __VLS_1) => any;
|
|
34
|
-
} & {
|
|
35
|
-
append?: (props: typeof __VLS_21) => any;
|
|
36
|
-
};
|
|
37
35
|
declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
38
36
|
"update:modelValue": (value: string) => any;
|
|
39
|
-
} & {
|
|
40
37
|
"click:clear": () => any;
|
|
41
38
|
}, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
|
|
42
39
|
"onUpdate:modelValue"?: ((value: string) => any) | undefined;
|
|
43
40
|
"onClick:clear"?: (() => any) | undefined;
|
|
44
|
-
}>, {
|
|
45
|
-
label: string;
|
|
46
|
-
readonly: boolean;
|
|
47
|
-
variant: "default" | "filled" | "outlined";
|
|
48
|
-
color: ContextColorsType;
|
|
49
|
-
disabled: boolean;
|
|
50
|
-
errorMessages: string | string[];
|
|
51
|
-
successMessages: string | string[];
|
|
52
|
-
hint: string;
|
|
53
|
-
required: boolean;
|
|
54
|
-
hideDetails: boolean;
|
|
55
|
-
placeholder: string;
|
|
56
|
-
dense: boolean;
|
|
57
|
-
textColor: ContextColorsType;
|
|
58
|
-
prependIcon: RuiIcons;
|
|
59
|
-
appendIcon: RuiIcons;
|
|
60
|
-
clearable: boolean;
|
|
61
|
-
noResize: boolean;
|
|
62
|
-
minRows: number | string;
|
|
63
|
-
maxRows: number | string;
|
|
64
|
-
rowHeight: number | string;
|
|
65
|
-
autoGrow: boolean;
|
|
66
|
-
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
41
|
+
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
67
42
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
68
43
|
declare const _default: typeof __VLS_export;
|
|
69
44
|
export default _default;
|