@rotki/ui-library 2.12.1 → 2.12.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (147) hide show
  1. package/dist/components/accordions/accordion/RuiAccordion.vue.js +1 -1
  2. package/dist/components/accordions/accordions/RuiAccordions.vue.js +1 -1
  3. package/dist/components/alerts/RuiAlert.vue.d.ts +2 -2
  4. package/dist/components/alerts/RuiAlert.vue2.js +1 -1
  5. package/dist/components/buttons/button/RuiButton.vue2.js +1 -1
  6. package/dist/components/buttons/button-group/RuiButtonGroup.vue2.js +1 -1
  7. package/dist/components/calendar/RuiCalendar.vue.js +1 -1
  8. package/dist/components/calendar/RuiCalendarGrid.vue2.js +1 -1
  9. package/dist/components/calendar/RuiCalendarHeader.vue2.js +1 -1
  10. package/dist/components/calendar/RuiCalendarMenu.vue2.js +1 -1
  11. package/dist/components/cards/RuiCard.vue.d.ts +1 -1
  12. package/dist/components/cards/RuiCard.vue2.js +1 -1
  13. package/dist/components/cards/RuiCardHeader.vue2.js +1 -1
  14. package/dist/components/chips/RuiChip.vue.d.ts +1 -1
  15. package/dist/components/chips/RuiChip.vue2.js +1 -1
  16. package/dist/components/color-picker/RuiColorBoard.vue2.js +6 -2
  17. package/dist/components/color-picker/RuiColorBoard.vue2.js.map +1 -1
  18. package/dist/components/color-picker/RuiColorDisplay.vue.js +1 -1
  19. package/dist/components/color-picker/RuiColorHue.vue2.js +8 -2
  20. package/dist/components/color-picker/RuiColorHue.vue2.js.map +1 -1
  21. package/dist/components/color-picker/RuiColorInput.vue.js +1 -1
  22. package/dist/components/color-picker/RuiColorPicker.vue.js +6 -2
  23. package/dist/components/color-picker/RuiColorPicker.vue.js.map +1 -1
  24. package/dist/components/date-time-picker/RuiDateTimePicker.vue.d.ts +4 -4
  25. package/dist/components/date-time-picker/RuiDateTimePicker.vue2.js +5 -5
  26. package/dist/components/date-time-picker/RuiDateTimePicker.vue2.js.map +1 -1
  27. package/dist/components/date-time-picker/RuiDateTimePickerMenu.vue.js +1 -1
  28. package/dist/components/divider/RuiDivider.vue.js +6 -3
  29. package/dist/components/divider/RuiDivider.vue.js.map +1 -1
  30. package/dist/components/forms/auto-complete/RuiAutoComplete.vue.d.ts +17 -34
  31. package/dist/components/forms/auto-complete/RuiAutoComplete.vue2.js +18 -9
  32. package/dist/components/forms/auto-complete/RuiAutoComplete.vue2.js.map +1 -1
  33. package/dist/components/forms/checkbox/RuiCheckbox.vue.d.ts +2 -2
  34. package/dist/components/forms/checkbox/RuiCheckbox.vue2.js +2 -2
  35. package/dist/components/forms/checkbox/RuiCheckbox.vue2.js.map +1 -1
  36. package/dist/components/forms/radio-button/radio/RuiRadio.vue.d.ts +1 -1
  37. package/dist/components/forms/radio-button/radio/RuiRadio.vue2.js +2 -2
  38. package/dist/components/forms/radio-button/radio/RuiRadio.vue2.js.map +1 -1
  39. package/dist/components/forms/radio-button/radio-group/RuiRadioGroup.vue.d.ts +1 -1
  40. package/dist/components/forms/radio-button/radio-group/RuiRadioGroup.vue2.js +2 -2
  41. package/dist/components/forms/radio-button/radio-group/RuiRadioGroup.vue2.js.map +1 -1
  42. package/dist/components/forms/revealable-text-field/RuiRevealableTextField.vue.d.ts +3 -3
  43. package/dist/components/forms/revealable-text-field/RuiRevealableTextField.vue.js +4 -2
  44. package/dist/components/forms/revealable-text-field/RuiRevealableTextField.vue.js.map +1 -1
  45. package/dist/components/forms/select/RuiMenuSelect.vue.d.ts +17 -17
  46. package/dist/components/forms/select/RuiMenuSelect.vue2.js +14 -7
  47. package/dist/components/forms/select/RuiMenuSelect.vue2.js.map +1 -1
  48. package/dist/components/forms/select/RuiSimpleSelect.vue.d.ts +3 -1
  49. package/dist/components/forms/select/RuiSimpleSelect.vue2.js +8 -4
  50. package/dist/components/forms/select/RuiSimpleSelect.vue2.js.map +1 -1
  51. package/dist/components/forms/slider/RuiSlider.vue.d.ts +2 -2
  52. package/dist/components/forms/slider/RuiSlider.vue2.js +10 -8
  53. package/dist/components/forms/slider/RuiSlider.vue2.js.map +1 -1
  54. package/dist/components/forms/switch/RuiSwitch.vue.d.ts +1 -1
  55. package/dist/components/forms/switch/RuiSwitch.vue2.js +2 -2
  56. package/dist/components/forms/switch/RuiSwitch.vue2.js.map +1 -1
  57. package/dist/components/forms/text-area/RuiTextArea.vue.d.ts +3 -3
  58. package/dist/components/forms/text-area/RuiTextArea.vue2.js +8 -8
  59. package/dist/components/forms/text-area/RuiTextArea.vue2.js.map +1 -1
  60. package/dist/components/forms/text-field/RuiTextField.vue.d.ts +6 -6
  61. package/dist/components/forms/text-field/RuiTextField.vue2.js +5 -5
  62. package/dist/components/forms/text-field/RuiTextField.vue2.js.map +1 -1
  63. package/dist/components/helpers/RuiFormTextDetail.vue.js +1 -1
  64. package/dist/components/helpers/RuiFormTextDetail.vue.js.map +1 -1
  65. package/dist/components/icons/RuiIcon.vue2.js +3 -6
  66. package/dist/components/icons/RuiIcon.vue2.js.map +1 -1
  67. package/dist/components/index.d.ts +2 -2
  68. package/dist/components/loaders/RuiSkeletonBase.vue2.js +1 -1
  69. package/dist/components/loaders/RuiSkeletonLoader.vue2.js +1 -1
  70. package/dist/components/logos/RuiLogo.vue.js +3 -1
  71. package/dist/components/logos/RuiLogo.vue.js.map +1 -1
  72. package/dist/components/overlays/badge/RuiBadge.vue.d.ts +3 -3
  73. package/dist/components/overlays/badge/RuiBadge.vue2.js +1 -1
  74. package/dist/components/overlays/bottom-sheet/RuiBottomSheet.vue.js +1 -1
  75. package/dist/components/overlays/dialog/RuiDialog.vue.d.ts +4 -3
  76. package/dist/components/overlays/dialog/RuiDialog.vue2.js +11 -5
  77. package/dist/components/overlays/dialog/RuiDialog.vue2.js.map +1 -1
  78. package/dist/components/overlays/menu/RuiMenu.vue.d.ts +1 -1
  79. package/dist/components/overlays/menu/RuiMenu.vue2.js +6 -4
  80. package/dist/components/overlays/menu/RuiMenu.vue2.js.map +1 -1
  81. package/dist/components/overlays/navigation-drawer/RuiNavigationDrawer.vue.d.ts +4 -3
  82. package/dist/components/overlays/navigation-drawer/RuiNavigationDrawer.vue2.js +9 -4
  83. package/dist/components/overlays/navigation-drawer/RuiNavigationDrawer.vue2.js.map +1 -1
  84. package/dist/components/overlays/notification/RuiNotification.vue.d.ts +1 -1
  85. package/dist/components/overlays/notification/RuiNotification.vue.js +3 -1
  86. package/dist/components/overlays/notification/RuiNotification.vue.js.map +1 -1
  87. package/dist/components/overlays/tooltip/RuiTooltip.vue.d.ts +1 -1
  88. package/dist/components/overlays/tooltip/RuiTooltip.vue2.js +7 -3
  89. package/dist/components/overlays/tooltip/RuiTooltip.vue2.js.map +1 -1
  90. package/dist/components/progress/RuiProgress.vue.d.ts +1 -1
  91. package/dist/components/progress/RuiProgress.vue2.js +1 -1
  92. package/dist/components/steppers/RuiFooterStepper.vue2.js +15 -8
  93. package/dist/components/steppers/RuiFooterStepper.vue2.js.map +1 -1
  94. package/dist/components/steppers/RuiStepper.vue.d.ts +1 -1
  95. package/dist/components/steppers/RuiStepper.vue2.js +9 -4
  96. package/dist/components/steppers/RuiStepper.vue2.js.map +1 -1
  97. package/dist/components/steppers/RuiStepperCustomIcon.vue2.js +1 -1
  98. package/dist/components/steppers/RuiStepperIcon.vue2.js +1 -1
  99. package/dist/components/tables/RuiDataTable.vue2.js +28 -24
  100. package/dist/components/tables/RuiDataTable.vue2.js.map +1 -1
  101. package/dist/components/tables/RuiExpandButton.vue2.js +3 -2
  102. package/dist/components/tables/RuiExpandButton.vue2.js.map +1 -1
  103. package/dist/components/tables/RuiTableHead.vue2.js +1 -1
  104. package/dist/components/tables/RuiTablePagination.vue.d.ts +1 -1
  105. package/dist/components/tables/RuiTablePagination.vue2.js +12 -5
  106. package/dist/components/tables/RuiTablePagination.vue2.js.map +1 -1
  107. package/dist/components/tabs/tab/RuiTab.vue.d.ts +2 -2
  108. package/dist/components/tabs/tab/RuiTab.vue2.js +9 -6
  109. package/dist/components/tabs/tab/RuiTab.vue2.js.map +1 -1
  110. package/dist/components/tabs/tab-item/RuiTabItem.vue.d.ts +1 -1
  111. package/dist/components/tabs/tab-item/RuiTabItem.vue2.js +2 -1
  112. package/dist/components/tabs/tab-item/RuiTabItem.vue2.js.map +1 -1
  113. package/dist/components/tabs/tab-items/RuiTabItems.vue.d.ts +1 -1
  114. package/dist/components/tabs/tab-items/RuiTabItems.vue2.js +1 -1
  115. package/dist/components/tabs/tabs/RuiTabs.vue.d.ts +1 -1
  116. package/dist/components/tabs/tabs/RuiTabs.vue2.js +1 -1
  117. package/dist/components/time-picker/RuiTimePicker.vue2.js +21 -4
  118. package/dist/components/time-picker/RuiTimePicker.vue2.js.map +1 -1
  119. package/dist/composables/icons.js +1 -1
  120. package/dist/composables/icons.js.map +1 -1
  121. package/dist/composables/popper.js +3 -3
  122. package/dist/composables/popper.js.map +1 -1
  123. package/dist/composables/theme.js +7 -4
  124. package/dist/composables/theme.js.map +1 -1
  125. package/dist/icons/icons_1.d.ts +15 -15
  126. package/dist/icons/icons_1.js +96 -96
  127. package/dist/icons/icons_1.js.map +1 -1
  128. package/dist/icons/icons_2.d.ts +38 -38
  129. package/dist/icons/icons_2.js +255 -255
  130. package/dist/icons/icons_2.js.map +1 -1
  131. package/dist/icons/icons_3.d.ts +26 -26
  132. package/dist/icons/icons_3.js +153 -153
  133. package/dist/icons/icons_3.js.map +1 -1
  134. package/dist/icons/icons_4.d.ts +37 -2
  135. package/dist/icons/icons_4.js +192 -17
  136. package/dist/icons/icons_4.js.map +1 -1
  137. package/dist/icons/index.d.ts +1 -1
  138. package/dist/icons/index.js +1 -1
  139. package/dist/icons/index.js.map +1 -1
  140. package/dist/index.js +65 -30
  141. package/dist/style.css +26 -26
  142. package/dist/vite-plugin/index.js +4 -4
  143. package/dist/vite-plugin/index.js.map +1 -1
  144. package/dist/vite-plugin/scanner.js +3 -3
  145. package/dist/vite-plugin/scanner.js.map +1 -1
  146. package/dist/web-types.json +43 -24
  147. package/package.json +28 -34
@@ -1,4 +1,4 @@
1
- import { defineComponent, useId, ref, computed, createElementBlock, openBlock, mergeProps, createCommentVNode, unref, normalizeClass, createElementVNode, createVNode, renderSlot, normalizeStyle } from "vue";
1
+ import { defineComponent, useId, ref, computed, openBlock, createElementBlock, mergeProps, unref, normalizeClass, createElementVNode, renderSlot, createVNode, createCommentVNode, normalizeStyle } from "vue";
2
2
  import RuiIcon from "../../icons/RuiIcon.vue.js";
3
3
  import { useElementSize } from "@vueuse/core";
4
4
  import { get } from "@vueuse/shared";
@@ -1,4 +1,4 @@
1
- import { defineComponent, toRefs, ref, useSlots, computed, watch, createElementBlock, openBlock, normalizeProps, guardReactiveProps, Fragment, renderList, unref, createBlock, resolveDynamicComponent } from "vue";
1
+ import { defineComponent, toRefs, ref, useSlots, computed, watch, openBlock, createElementBlock, normalizeProps, guardReactiveProps, Fragment, renderList, unref, createBlock, resolveDynamicComponent } from "vue";
2
2
  import { get, set } from "@vueuse/shared";
3
3
  const _sfc_main = /* @__PURE__ */ defineComponent({
4
4
  ...{
@@ -16,11 +16,11 @@ type __VLS_Slots = {} & {
16
16
  default?: (props: typeof __VLS_8) => any;
17
17
  };
18
18
  declare const __VLS_base: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
19
- close: () => any;
20
19
  action: () => any;
20
+ close: () => any;
21
21
  }, string, import("vue").PublicProps, Readonly<Props> & Readonly<{
22
- onClose?: (() => any) | undefined;
23
22
  onAction?: (() => any) | undefined;
23
+ onClose?: (() => any) | undefined;
24
24
  }>, {
25
25
  title: string;
26
26
  variant: "default" | "filled" | "outlined";
@@ -1,4 +1,4 @@
1
- import { defineComponent, toRefs, computed, createElementBlock, openBlock, mergeProps, unref, createElementVNode, createCommentVNode, normalizeClass, createVNode, renderSlot, createTextVNode, toDisplayString, withCtx } from "vue";
1
+ import { defineComponent, toRefs, computed, openBlock, createElementBlock, mergeProps, unref, createElementVNode, normalizeClass, createVNode, createCommentVNode, renderSlot, createTextVNode, toDisplayString, withCtx } from "vue";
2
2
  import RuiButton from "../buttons/button/RuiButton.vue.js";
3
3
  import RuiIcon from "../icons/RuiIcon.vue.js";
4
4
  import { get } from "@vueuse/shared";
@@ -1,4 +1,4 @@
1
- import { defineComponent, computed, createBlock, openBlock, resolveDynamicComponent, mergeProps, unref, withCtx, renderSlot, createCommentVNode, createElementBlock, normalizeClass } from "vue";
1
+ import { defineComponent, computed, openBlock, createBlock, resolveDynamicComponent, mergeProps, unref, withCtx, renderSlot, createCommentVNode, createElementBlock, normalizeClass } from "vue";
2
2
  import RuiProgress from "../../progress/RuiProgress.vue.js";
3
3
  const _sfc_main = /* @__PURE__ */ defineComponent({
4
4
  ...{
@@ -1,4 +1,4 @@
1
- import { defineComponent, useSlots, toRefs, computed, useCssModule, createElementBlock, openBlock, mergeProps, unref, Fragment, renderList, createBlock, resolveDynamicComponent, normalizeClass, isVNode } from "vue";
1
+ import { defineComponent, useSlots, toRefs, computed, useCssModule, openBlock, createElementBlock, mergeProps, unref, Fragment, renderList, createBlock, resolveDynamicComponent, normalizeClass, isVNode } from "vue";
2
2
  import { get } from "@vueuse/shared";
3
3
  const _sfc_main = /* @__PURE__ */ defineComponent({
4
4
  ...{
@@ -1,4 +1,4 @@
1
- import { defineComponent, mergeModels, useModel, ref, computed, provide, watch, createElementBlock, openBlock, normalizeClass, unref, createVNode } from "vue";
1
+ import { defineComponent, useModel, ref, computed, provide, watch, openBlock, createElementBlock, normalizeClass, unref, createVNode, mergeModels } from "vue";
2
2
  import { isDefined, get, set } from "@vueuse/core";
3
3
  import { CalendarStateSymbol } from "./state.js";
4
4
  import { useRotkiTheme } from "../../composables/theme.js";
@@ -1,4 +1,4 @@
1
- import { defineComponent, mergeModels, useModel, inject, ref, watch, createElementBlock, openBlock, createElementVNode, Fragment, renderList, unref, toDisplayString, withModifiers, normalizeClass } from "vue";
1
+ import { defineComponent, useModel, inject, ref, watch, openBlock, createElementBlock, createElementVNode, Fragment, renderList, unref, toDisplayString, withModifiers, normalizeClass, mergeModels } from "vue";
2
2
  import { get, isDefined, set } from "@vueuse/core";
3
3
  import { CalendarStateSymbol, getDaysOfWeek } from "./state.js";
4
4
  const _hoisted_1 = { class: "calendar-grid" };
@@ -1,4 +1,4 @@
1
- import { defineComponent, mergeModels, useModel, ref, inject, computed, createElementBlock, openBlock, createVNode, createElementVNode, withModifiers, withCtx, createTextVNode, toDisplayString } from "vue";
1
+ import { defineComponent, useModel, ref, inject, computed, openBlock, createElementBlock, createVNode, withModifiers, withCtx, createElementVNode, createTextVNode, toDisplayString, mergeModels } from "vue";
2
2
  import { isDefined, get, set } from "@vueuse/core";
3
3
  import RuiButton from "../buttons/button/RuiButton.vue.js";
4
4
  import { CalendarStateSymbol } from "./state.js";
@@ -1,4 +1,4 @@
1
- import { defineComponent, mergeModels, useModel, ref, inject, watch, createBlock, openBlock, withCtx, createElementVNode, createElementBlock, createCommentVNode, createVNode, withModifiers, unref, toDisplayString, Fragment, renderList, normalizeClass } from "vue";
1
+ import { defineComponent, useModel, ref, inject, watch, openBlock, createBlock, withCtx, createElementVNode, createVNode, withModifiers, unref, toDisplayString, createElementBlock, Fragment, renderList, normalizeClass, createCommentVNode, mergeModels } from "vue";
2
2
  import { get, set, isDefined } from "@vueuse/core";
3
3
  import { getShortMonthNames, CalendarStateSymbol } from "./state.js";
4
4
  import RuiIcon from "../icons/RuiIcon.vue.js";
@@ -24,10 +24,10 @@ type __VLS_Slots = {} & {
24
24
  footer?: (props: typeof __VLS_22) => any;
25
25
  };
26
26
  declare const __VLS_base: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{}>, {
27
- dense: boolean;
28
27
  variant: "flat" | "outlined";
29
28
  rounded: "sm" | "md" | "lg";
30
29
  elevation: number;
30
+ dense: boolean;
31
31
  contentClass: string;
32
32
  divide: boolean;
33
33
  noPadding: boolean;
@@ -1,4 +1,4 @@
1
- import { defineComponent, useSlots, computed, createElementBlock, openBlock, mergeProps, createCommentVNode, renderSlot, unref, normalizeClass, createBlock, createSlots, withCtx } from "vue";
1
+ import { defineComponent, useSlots, computed, openBlock, createElementBlock, mergeProps, unref, normalizeClass, renderSlot, createCommentVNode, createBlock, createSlots, withCtx } from "vue";
2
2
  import RuiCardHeader from "./RuiCardHeader.vue.js";
3
3
  const _sfc_main = /* @__PURE__ */ defineComponent({
4
4
  ...{
@@ -1,4 +1,4 @@
1
- import { defineComponent, createElementBlock, openBlock, mergeProps, createCommentVNode, createElementVNode, normalizeClass, renderSlot } from "vue";
1
+ import { defineComponent, openBlock, createElementBlock, mergeProps, normalizeClass, renderSlot, createCommentVNode, createElementVNode } from "vue";
2
2
  const _sfc_main = /* @__PURE__ */ defineComponent({
3
3
  ...{
4
4
  name: "RuiCardHeader",
@@ -27,9 +27,9 @@ declare const __VLS_base: import("vue").DefineComponent<Props, {}, {}, {}, {}, i
27
27
  "onClick:close"?: (() => any) | undefined;
28
28
  }>, {
29
29
  size: "sm" | "md";
30
+ variant: "filled" | "outlined";
30
31
  color: "grey" | ContextColorsType;
31
32
  disabled: boolean;
32
- variant: "filled" | "outlined";
33
33
  contentClass: string;
34
34
  closeable: boolean;
35
35
  tile: boolean;
@@ -1,4 +1,4 @@
1
- import { defineComponent, toRefs, computed, createElementBlock, openBlock, mergeProps, unref, createCommentVNode, createElementVNode, normalizeClass, renderSlot, withModifiers, createVNode } from "vue";
1
+ import { defineComponent, toRefs, computed, openBlock, createElementBlock, mergeProps, unref, normalizeClass, renderSlot, createCommentVNode, createElementVNode, withModifiers, createVNode } from "vue";
2
2
  import { logicOr, logicNot } from "@vueuse/math";
3
3
  import { get, objectOmit } from "@vueuse/shared";
4
4
  import RuiIcon from "../icons/RuiIcon.vue.js";
@@ -1,7 +1,8 @@
1
- import { defineComponent, reactive, ref, computed, getCurrentInstance, onMounted, createElementBlock, openBlock, mergeProps, unref, createElementVNode, normalizeClass, normalizeStyle } from "vue";
1
+ import { defineComponent, reactive, ref, computed, getCurrentInstance, onMounted, openBlock, createElementBlock, mergeProps, unref, createElementVNode, normalizeClass, normalizeStyle } from "vue";
2
2
  import { get, set, clamp } from "@vueuse/shared";
3
3
  import { useElementDrag, Color } from "./utils.js";
4
4
  import { whenever } from "@vueuse/core";
5
+ const _hoisted_1 = ["aria-valuetext"];
5
6
  const _sfc_main = /* @__PURE__ */ defineComponent({
6
7
  ...{
7
8
  name: "RuiColorBoard",
@@ -76,6 +77,9 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
76
77
  return openBlock(), createElementBlock("div", mergeProps({
77
78
  ref_key: "wrapper",
78
79
  ref: wrapper,
80
+ role: "slider",
81
+ "aria-label": "Color saturation and brightness",
82
+ "aria-valuetext": `Saturation ${Math.round(unref(state).saturation * 100)}%, Brightness ${Math.round(unref(state).brightness * 100)}%`,
79
83
  class: ["rui-color-board", _ctx.$style.saturation]
80
84
  }, _ctx.$attrs, {
81
85
  style: { backgroundColor: unref(state).hexString },
@@ -92,7 +96,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
92
96
  class: normalizeClass(_ctx.$style.cursor),
93
97
  style: normalizeStyle(unref(cursorStyle))
94
98
  }, null, 6)
95
- ], 16);
99
+ ], 16, _hoisted_1);
96
100
  };
97
101
  }
98
102
  });
@@ -1 +1 @@
1
- {"version":3,"file":"RuiColorBoard.vue2.js","sources":["../../../src/components/color-picker/RuiColorBoard.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { clamp } from '@vueuse/shared';\nimport { Color, useElementDrag } from './utils';\n\ndefineOptions({\n name: 'RuiColorBoard',\n inheritAttrs: false,\n});\n\nconst props = defineProps<{\n color: Color;\n}>();\n\nconst emit = defineEmits<{\n (e: 'update:board', event: { saturation: number; brightness: number }): void;\n}>();\n\nfunction hueToHex(hue: number) {\n return new Color({ h: hue, s: 1, v: 1 }).hexString;\n}\n\nconst state = reactive({\n hexString: hueToHex(props.color.hue),\n saturation: props.color.saturation,\n brightness: props.color.brightness,\n});\n\nconst cursorTop = ref<number>(0);\nconst cursorLeft = ref<number>(0);\n\nconst cursorStyle = computed(() => ({\n top: `${get(cursorTop) * 100}%`,\n left: `${get(cursorLeft) * 100}%`,\n}));\n\nconst wrapper = ref<HTMLElement>();\n\nfunction updatePosition() {\n set(cursorLeft, state.saturation);\n set(cursorTop, (1 - state.brightness));\n}\n\nconst instance = getCurrentInstance();\n\nconst {\n handleClick,\n onMouseDown,\n} = useElementDrag(emitColor);\n\nfunction emitColor(x: number, y: number) {\n if (!instance)\n return;\n\n const el = instance.vnode.el;\n const rect = el?.getBoundingClientRect();\n\n if (!rect)\n return;\n\n const { width, height, left, top } = rect;\n let calculatedX = x - left;\n let calculatedY = y - top;\n\n calculatedX = clamp(calculatedX, 0, width);\n calculatedY = clamp(calculatedY, 0, height);\n\n const saturation = calculatedX / width;\n const brightness = clamp(-(calculatedY / height) + 1, 0, 1);\n\n set(cursorLeft, calculatedX / width);\n set(cursorTop, calculatedY / height);\n\n state.saturation = saturation;\n state.brightness = brightness;\n\n emit('update:board', { saturation, brightness });\n}\n\nonMounted(() => {\n updatePosition();\n});\n\nwhenever(\n () => props.color,\n (value) => {\n state.hexString = hueToHex(value.hue);\n state.saturation = value.saturation;\n state.brightness = value.brightness;\n updatePosition();\n },\n { deep: true },\n);\n</script>\n\n<template>\n <div\n ref=\"wrapper\"\n class=\"rui-color-board\"\n :class=\"$style.saturation\"\n v-bind=\"$attrs\"\n :style=\"{ backgroundColor: state.hexString }\"\n @click=\"handleClick($event)\"\n @mousedown=\"onMouseDown($event)\"\n >\n <div :class=\"$style.saturation__white\" />\n <div :class=\"$style.saturation__black\" />\n <div\n :class=\"$style.cursor\"\n :style=\"cursorStyle\"\n />\n </div>\n</template>\n\n<style lang=\"scss\" module>\n.saturation {\n @apply relative w-full h-40 overflow-hidden cursor-pointer;\n\n &__white,\n &__black {\n @apply absolute top-0 left-0 right-0 bottom-0 to-transparent;\n }\n\n &__black {\n @apply bg-gradient-to-t from-black;\n }\n\n &__white {\n @apply bg-gradient-to-r from-white;\n }\n}\n\n.cursor {\n @apply absolute w-5 h-5 transform -translate-x-1/2 -translate-y-1/2 border-2 border-white shadow rounded-full;\n\n &:after {\n content: '';\n @apply absolute w-full h-full rounded-full border-2 border-black/15;\n }\n}\n</style>\n"],"names":["_openBlock","_createElementBlock","_mergeProps","$style","$attrs","_unref","_createElementVNode","_normalizeClass"],"mappings":";;;;;;;;;;;;;;;AASA,UAAM,QAAQ;AAId,UAAM,OAAO;AAIb,aAAS,SAAS,KAAa;AAC7B,aAAO,IAAI,MAAM,EAAE,GAAG,KAAK,GAAG,GAAG,GAAG,EAAA,CAAG,EAAE;AAAA,IAC3C;AAEA,UAAM,QAAQ,SAAS;AAAA,MACrB,WAAW,SAAS,MAAM,MAAM,GAAG;AAAA,MACnC,YAAY,MAAM,MAAM;AAAA,MACxB,YAAY,MAAM,MAAM;AAAA,IAAA,CACzB;AAED,UAAM,YAAY,IAAY,CAAC;AAC/B,UAAM,aAAa,IAAY,CAAC;AAEhC,UAAM,cAAc,SAAS,OAAO;AAAA,MAClC,KAAK,GAAG,IAAI,SAAS,IAAI,GAAG;AAAA,MAC5B,MAAM,GAAG,IAAI,UAAU,IAAI,GAAG;AAAA,IAAA,EAC9B;AAEF,UAAM,UAAU,IAAA;AAEhB,aAAS,iBAAiB;AACxB,UAAI,YAAY,MAAM,UAAU;AAChC,UAAI,WAAY,IAAI,MAAM,UAAW;AAAA,IACvC;AAEA,UAAM,WAAW,mBAAA;AAEjB,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IAAA,IACE,eAAe,SAAS;AAE5B,aAAS,UAAU,GAAW,GAAW;AACvC,UAAI,CAAC;AACH;AAEF,YAAM,KAAK,SAAS,MAAM;AAC1B,YAAM,OAAO,IAAI,sBAAA;AAEjB,UAAI,CAAC;AACH;AAEF,YAAM,EAAE,OAAO,QAAQ,MAAM,QAAQ;AACrC,UAAI,cAAc,IAAI;AACtB,UAAI,cAAc,IAAI;AAEtB,oBAAc,MAAM,aAAa,GAAG,KAAK;AACzC,oBAAc,MAAM,aAAa,GAAG,MAAM;AAE1C,YAAM,aAAa,cAAc;AACjC,YAAM,aAAa,MAAM,EAAE,cAAc,UAAU,GAAG,GAAG,CAAC;AAE1D,UAAI,YAAY,cAAc,KAAK;AACnC,UAAI,WAAW,cAAc,MAAM;AAEnC,YAAM,aAAa;AACnB,YAAM,aAAa;AAEnB,WAAK,gBAAgB,EAAE,YAAY,WAAA,CAAY;AAAA,IACjD;AAEA,cAAU,MAAM;AACd,qBAAA;AAAA,IACF,CAAC;AAED;AAAA,MACE,MAAM,MAAM;AAAA,MACZ,CAAC,UAAU;AACT,cAAM,YAAY,SAAS,MAAM,GAAG;AACpC,cAAM,aAAa,MAAM;AACzB,cAAM,aAAa,MAAM;AACzB,uBAAA;AAAA,MACF;AAAA,MACA,EAAE,MAAM,KAAA;AAAA,IAAK;;AAKb,aAAAA,UAAA,GAAAC,mBAeM,OAfNC,WAeM;AAAA,iBAdA;AAAA,QAAJ,KAAI;AAAA,QACJ,OAAK,CAAC,mBACEC,KAAAA,OAAO,UAAU;AAAA,MAAA,GACjBC,KAAAA,QAAM;AAAA,QACb,OAAK,EAAA,iBAAqBC,MAAA,KAAA,EAAM,UAAA;AAAA,QAChC,SAAK,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,CAAA,WAAEA,MAAA,WAAA,EAAY,MAAM;AAAA,QACzB,aAAS,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,CAAA,WAAEA,MAAA,WAAA,EAAY,MAAM;AAAA,MAAA;QAE9BC,mBAAyC,OAAA;AAAA,UAAnC,OAAKC,eAAEJ,KAAAA,OAAO,iBAAiB;AAAA,QAAA;QACrCG,mBAAyC,OAAA;AAAA,UAAnC,OAAKC,eAAEJ,KAAAA,OAAO,iBAAiB;AAAA,QAAA;QACrCG,mBAGE,OAAA;AAAA,UAFC,OAAKC,eAAEJ,KAAAA,OAAO,MAAM;AAAA,UACpB,sBAAOE,MAAA,WAAA,CAAW;AAAA,QAAA;;;;;"}
1
+ {"version":3,"file":"RuiColorBoard.vue2.js","sources":["../../../src/components/color-picker/RuiColorBoard.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { clamp } from '@vueuse/shared';\nimport { Color, useElementDrag } from './utils';\n\ndefineOptions({\n name: 'RuiColorBoard',\n inheritAttrs: false,\n});\n\nconst props = defineProps<{\n color: Color;\n}>();\n\nconst emit = defineEmits<{\n (e: 'update:board', event: { saturation: number; brightness: number }): void;\n}>();\n\nfunction hueToHex(hue: number) {\n return new Color({ h: hue, s: 1, v: 1 }).hexString;\n}\n\nconst state = reactive({\n hexString: hueToHex(props.color.hue),\n saturation: props.color.saturation,\n brightness: props.color.brightness,\n});\n\nconst cursorTop = ref<number>(0);\nconst cursorLeft = ref<number>(0);\n\nconst cursorStyle = computed(() => ({\n top: `${get(cursorTop) * 100}%`,\n left: `${get(cursorLeft) * 100}%`,\n}));\n\nconst wrapper = ref<HTMLElement>();\n\nfunction updatePosition() {\n set(cursorLeft, state.saturation);\n set(cursorTop, (1 - state.brightness));\n}\n\nconst instance = getCurrentInstance();\n\nconst {\n handleClick,\n onMouseDown,\n} = useElementDrag(emitColor);\n\nfunction emitColor(x: number, y: number) {\n if (!instance)\n return;\n\n const el = instance.vnode.el;\n const rect = el?.getBoundingClientRect();\n\n if (!rect)\n return;\n\n const { width, height, left, top } = rect;\n let calculatedX = x - left;\n let calculatedY = y - top;\n\n calculatedX = clamp(calculatedX, 0, width);\n calculatedY = clamp(calculatedY, 0, height);\n\n const saturation = calculatedX / width;\n const brightness = clamp(-(calculatedY / height) + 1, 0, 1);\n\n set(cursorLeft, calculatedX / width);\n set(cursorTop, calculatedY / height);\n\n state.saturation = saturation;\n state.brightness = brightness;\n\n emit('update:board', { saturation, brightness });\n}\n\nonMounted(() => {\n updatePosition();\n});\n\nwhenever(\n () => props.color,\n (value) => {\n state.hexString = hueToHex(value.hue);\n state.saturation = value.saturation;\n state.brightness = value.brightness;\n updatePosition();\n },\n { deep: true },\n);\n</script>\n\n<template>\n <div\n ref=\"wrapper\"\n role=\"slider\"\n aria-label=\"Color saturation and brightness\"\n :aria-valuetext=\"`Saturation ${Math.round(state.saturation * 100)}%, Brightness ${Math.round(state.brightness * 100)}%`\"\n class=\"rui-color-board\"\n :class=\"$style.saturation\"\n v-bind=\"$attrs\"\n :style=\"{ backgroundColor: state.hexString }\"\n @click=\"handleClick($event)\"\n @mousedown=\"onMouseDown($event)\"\n >\n <div :class=\"$style.saturation__white\" />\n <div :class=\"$style.saturation__black\" />\n <div\n :class=\"$style.cursor\"\n :style=\"cursorStyle\"\n />\n </div>\n</template>\n\n<style lang=\"scss\" module>\n.saturation {\n @apply relative w-full h-40 overflow-hidden cursor-pointer;\n\n &__white,\n &__black {\n @apply absolute top-0 left-0 right-0 bottom-0 to-transparent;\n }\n\n &__black {\n @apply bg-gradient-to-t from-black;\n }\n\n &__white {\n @apply bg-gradient-to-r from-white;\n }\n}\n\n.cursor {\n @apply absolute w-5 h-5 transform -translate-x-1/2 -translate-y-1/2 border-2 border-white shadow rounded-full;\n\n &:after {\n content: '';\n @apply absolute w-full h-full rounded-full border-2 border-black/15;\n }\n}\n</style>\n"],"names":["_openBlock","_createElementBlock","_mergeProps","_unref","$style","$attrs","_createElementVNode","_normalizeClass"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { defineComponent, toRefs, createBlock, openBlock, mergeProps, withCtx, createElementVNode, createElementBlock, createCommentVNode, normalizeClass, unref, normalizeStyle } from "vue";
1
+ import { defineComponent, toRefs, openBlock, createBlock, mergeProps, withCtx, createElementVNode, normalizeClass, unref, createElementBlock, createCommentVNode, normalizeStyle } from "vue";
2
2
  import RuiTooltip from "../overlays/tooltip/RuiTooltip.vue.js";
3
3
  import { useClipboard } from "@vueuse/core";
4
4
  const _hoisted_1 = {
@@ -1,6 +1,7 @@
1
- import { defineComponent, useModel, ref, computed, getCurrentInstance, onMounted, watch, createElementBlock, openBlock, mergeProps, unref, createElementVNode, normalizeStyle, normalizeClass } from "vue";
1
+ import { defineComponent, useModel, ref, computed, getCurrentInstance, onMounted, watch, openBlock, createElementBlock, mergeProps, unref, createElementVNode, normalizeStyle, normalizeClass } from "vue";
2
2
  import { get, set, clamp } from "@vueuse/shared";
3
3
  import { useElementDrag, roundTwoDecimal } from "./utils.js";
4
+ const _hoisted_1 = ["aria-valuenow"];
4
5
  const cursorWidth = 16;
5
6
  const _sfc_main = /* @__PURE__ */ defineComponent({
6
7
  ...{
@@ -70,6 +71,11 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
70
71
  return openBlock(), createElementBlock("div", mergeProps({
71
72
  ref_key: "barElement",
72
73
  ref: barElement,
74
+ role: "slider",
75
+ "aria-label": "Hue",
76
+ "aria-valuenow": modelValue.value,
77
+ "aria-valuemin": "0",
78
+ "aria-valuemax": "360",
73
79
  class: [_ctx.$style.bar, "rui-color-hue"]
74
80
  }, _ctx.$attrs, {
75
81
  onClick: _cache[0] || (_cache[0] = ($event) => unref(handleClick)($event)),
@@ -79,7 +85,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
79
85
  class: normalizeClass(_ctx.$style.cursor),
80
86
  style: normalizeStyle(unref(cursorStyle))
81
87
  }, null, 6)
82
- ], 16);
88
+ ], 16, _hoisted_1);
83
89
  };
84
90
  }
85
91
  });
@@ -1 +1 @@
1
- {"version":3,"file":"RuiColorHue.vue2.js","sources":["../../../src/components/color-picker/RuiColorHue.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { clamp } from '@vueuse/shared';\nimport { roundTwoDecimal, useElementDrag } from './utils';\n\ndefineOptions({\n name: 'RuiColorHue',\n inheritAttrs: false,\n});\n\nconst modelValue = defineModel<number>({ required: true });\n\nconst barElement = ref<HTMLElement>();\n\nconst cursorWidth = 16;\n\nfunction getLimit(width: number) {\n const lowerLimit = cursorWidth / 2;\n const upperLimit = width - lowerLimit;\n const availableWidth = upperLimit - lowerLimit;\n\n return { lowerLimit, upperLimit, availableWidth };\n}\n\nconst cursorLeft = ref<string>('');\n\nfunction updatePosition() {\n set(cursorLeft, getCursorLeft().toString());\n}\n\nconst cursorStyle = computed(() => ({\n left: get(cursorLeft),\n}));\n\nconst instance = getCurrentInstance();\n\nfunction getCursorLeft() {\n if (!instance)\n return 0;\n\n const el = instance.vnode.el;\n const rect = el?.getBoundingClientRect();\n\n if (!rect)\n return 0;\n\n const actualWidth = rect.width;\n const { lowerLimit, availableWidth } = getLimit(actualWidth);\n\n const hueVal = get(modelValue);\n const usedHue = hueVal === 360 ? 360 : hueVal % 360;\n\n const percentage = roundTwoDecimal((usedHue / 360) * (availableWidth / actualWidth) * 100);\n return `calc(${percentage}% + ${lowerLimit}px)`;\n}\n\nfunction emitHue(x: number) {\n if (!instance)\n return;\n\n const el = instance.vnode.el;\n const rect = el?.getBoundingClientRect();\n\n if (!rect)\n return;\n\n let calculatedX = x - rect.left;\n\n const { lowerLimit, upperLimit, availableWidth } = getLimit(rect.width);\n calculatedX = clamp(calculatedX, lowerLimit, upperLimit);\n\n set(modelValue, Math.round(((calculatedX - lowerLimit) / availableWidth) * 360));\n}\n\nconst {\n handleClick,\n onMouseDown,\n} = useElementDrag(emitHue);\n\nonMounted(() => {\n updatePosition();\n});\n\nwatch(modelValue, () => {\n updatePosition();\n});\n</script>\n\n<template>\n <div\n ref=\"barElement\"\n :class=\"$style.bar\"\n class=\"rui-color-hue\"\n v-bind=\"$attrs\"\n @click=\"handleClick($event)\"\n @mousedown=\"onMouseDown($event)\"\n >\n <div\n :class=\"$style.cursor\"\n :style=\"cursorStyle\"\n />\n </div>\n</template>\n\n<style lang=\"scss\" module>\n.bar {\n @apply relative w-full h-3.5 rounded-full cursor-pointer;\n\n background: linear-gradient(\n to right,\n rgb(255, 0, 0) 0%,\n rgb(255, 255, 0) 16.66%,\n rgb(0, 255, 0) 33.33%,\n rgb(0, 255, 255) 50%,\n rgb(0, 0, 255) 66.66%,\n rgb(255, 0, 255) 83.33%,\n rgb(255, 0, 0) 100%\n );\n}\n\n.cursor {\n @apply absolute w-4 h-4 transform top-1/2 -translate-x-1/2 -translate-y-1/2 shadow-2 bg-white rounded-full;\n}\n</style>\n"],"names":["_useModel","_openBlock","_createElementBlock","_mergeProps","$style","$attrs","_unref","_createElementVNode","_normalizeClass"],"mappings":";;;AAaA,MAAM,cAAc;;;;;;;;;;;;;AAJpB,UAAM,aAAaA,SAAmB,SAAA,YAAmB;AAEzD,UAAM,aAAa,IAAA;AAInB,aAAS,SAAS,OAAe;AAC/B,YAAM,aAAa,cAAc;AACjC,YAAM,aAAa,QAAQ;AAC3B,YAAM,iBAAiB,aAAa;AAEpC,aAAO,EAAE,YAAY,YAAY,eAAA;AAAA,IACnC;AAEA,UAAM,aAAa,IAAY,EAAE;AAEjC,aAAS,iBAAiB;AACxB,UAAI,YAAY,cAAA,EAAgB,SAAA,CAAU;AAAA,IAC5C;AAEA,UAAM,cAAc,SAAS,OAAO;AAAA,MAClC,MAAM,IAAI,UAAU;AAAA,IAAA,EACpB;AAEF,UAAM,WAAW,mBAAA;AAEjB,aAAS,gBAAgB;AACvB,UAAI,CAAC;AACH,eAAO;AAET,YAAM,KAAK,SAAS,MAAM;AAC1B,YAAM,OAAO,IAAI,sBAAA;AAEjB,UAAI,CAAC;AACH,eAAO;AAET,YAAM,cAAc,KAAK;AACzB,YAAM,EAAE,YAAY,mBAAmB,SAAS,WAAW;AAE3D,YAAM,SAAS,IAAI,UAAU;AAC7B,YAAM,UAAU,WAAW,MAAM,MAAM,SAAS;AAEhD,YAAM,aAAa,gBAAiB,UAAU,OAAQ,iBAAiB,eAAe,GAAG;AACzF,aAAO,QAAQ,UAAU,OAAO,UAAU;AAAA,IAC5C;AAEA,aAAS,QAAQ,GAAW;AAC1B,UAAI,CAAC;AACH;AAEF,YAAM,KAAK,SAAS,MAAM;AAC1B,YAAM,OAAO,IAAI,sBAAA;AAEjB,UAAI,CAAC;AACH;AAEF,UAAI,cAAc,IAAI,KAAK;AAE3B,YAAM,EAAE,YAAY,YAAY,mBAAmB,SAAS,KAAK,KAAK;AACtE,oBAAc,MAAM,aAAa,YAAY,UAAU;AAEvD,UAAI,YAAY,KAAK,OAAQ,cAAc,cAAc,iBAAkB,GAAG,CAAC;AAAA,IACjF;AAEA,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IAAA,IACE,eAAe,OAAO;AAE1B,cAAU,MAAM;AACd,qBAAA;AAAA,IACF,CAAC;AAED,UAAM,YAAY,MAAM;AACtB,qBAAA;AAAA,IACF,CAAC;;AAIC,aAAAC,UAAA,GAAAC,mBAYM,OAZNC,WAYM;AAAA,iBAXA;AAAA,QAAJ,KAAI;AAAA,QACH,OAAK,CAAEC,KAAAA,OAAO,KACT,eAAe;AAAA,MAAA,GACbC,KAAAA,QAAM;AAAA,QACb,SAAK,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,CAAA,WAAEC,MAAA,WAAA,EAAY,MAAM;AAAA,QACzB,aAAS,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,CAAA,WAAEA,MAAA,WAAA,EAAY,MAAM;AAAA,MAAA;QAE9BC,mBAGE,OAAA;AAAA,UAFC,OAAKC,eAAEJ,KAAAA,OAAO,MAAM;AAAA,UACpB,sBAAOE,MAAA,WAAA,CAAW;AAAA,QAAA;;;;;"}
1
+ {"version":3,"file":"RuiColorHue.vue2.js","sources":["../../../src/components/color-picker/RuiColorHue.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { clamp } from '@vueuse/shared';\nimport { roundTwoDecimal, useElementDrag } from './utils';\n\ndefineOptions({\n name: 'RuiColorHue',\n inheritAttrs: false,\n});\n\nconst modelValue = defineModel<number>({ required: true });\n\nconst barElement = ref<HTMLElement>();\n\nconst cursorWidth = 16;\n\nfunction getLimit(width: number) {\n const lowerLimit = cursorWidth / 2;\n const upperLimit = width - lowerLimit;\n const availableWidth = upperLimit - lowerLimit;\n\n return { lowerLimit, upperLimit, availableWidth };\n}\n\nconst cursorLeft = ref<string>('');\n\nfunction updatePosition() {\n set(cursorLeft, getCursorLeft().toString());\n}\n\nconst cursorStyle = computed(() => ({\n left: get(cursorLeft),\n}));\n\nconst instance = getCurrentInstance();\n\nfunction getCursorLeft() {\n if (!instance)\n return 0;\n\n const el = instance.vnode.el;\n const rect = el?.getBoundingClientRect();\n\n if (!rect)\n return 0;\n\n const actualWidth = rect.width;\n const { lowerLimit, availableWidth } = getLimit(actualWidth);\n\n const hueVal = get(modelValue);\n const usedHue = hueVal === 360 ? 360 : hueVal % 360;\n\n const percentage = roundTwoDecimal((usedHue / 360) * (availableWidth / actualWidth) * 100);\n return `calc(${percentage}% + ${lowerLimit}px)`;\n}\n\nfunction emitHue(x: number) {\n if (!instance)\n return;\n\n const el = instance.vnode.el;\n const rect = el?.getBoundingClientRect();\n\n if (!rect)\n return;\n\n let calculatedX = x - rect.left;\n\n const { lowerLimit, upperLimit, availableWidth } = getLimit(rect.width);\n calculatedX = clamp(calculatedX, lowerLimit, upperLimit);\n\n set(modelValue, Math.round(((calculatedX - lowerLimit) / availableWidth) * 360));\n}\n\nconst {\n handleClick,\n onMouseDown,\n} = useElementDrag(emitHue);\n\nonMounted(() => {\n updatePosition();\n});\n\nwatch(modelValue, () => {\n updatePosition();\n});\n</script>\n\n<template>\n <div\n ref=\"barElement\"\n role=\"slider\"\n aria-label=\"Hue\"\n :aria-valuenow=\"modelValue\"\n aria-valuemin=\"0\"\n aria-valuemax=\"360\"\n :class=\"$style.bar\"\n class=\"rui-color-hue\"\n v-bind=\"$attrs\"\n @click=\"handleClick($event)\"\n @mousedown=\"onMouseDown($event)\"\n >\n <div\n :class=\"$style.cursor\"\n :style=\"cursorStyle\"\n />\n </div>\n</template>\n\n<style lang=\"scss\" module>\n.bar {\n @apply relative w-full h-3.5 rounded-full cursor-pointer;\n\n background: linear-gradient(\n to right,\n rgb(255, 0, 0) 0%,\n rgb(255, 255, 0) 16.66%,\n rgb(0, 255, 0) 33.33%,\n rgb(0, 255, 255) 50%,\n rgb(0, 0, 255) 66.66%,\n rgb(255, 0, 255) 83.33%,\n rgb(255, 0, 0) 100%\n );\n}\n\n.cursor {\n @apply absolute w-4 h-4 transform top-1/2 -translate-x-1/2 -translate-y-1/2 shadow-2 bg-white rounded-full;\n}\n</style>\n"],"names":["_useModel","_openBlock","_createElementBlock","_mergeProps","$style","$attrs","_unref","_createElementVNode","_normalizeClass"],"mappings":";;;;AAaA,MAAM,cAAc;;;;;;;;;;;;;AAJpB,UAAM,aAAaA,SAAmB,SAAA,YAAmB;AAEzD,UAAM,aAAa,IAAA;AAInB,aAAS,SAAS,OAAe;AAC/B,YAAM,aAAa,cAAc;AACjC,YAAM,aAAa,QAAQ;AAC3B,YAAM,iBAAiB,aAAa;AAEpC,aAAO,EAAE,YAAY,YAAY,eAAA;AAAA,IACnC;AAEA,UAAM,aAAa,IAAY,EAAE;AAEjC,aAAS,iBAAiB;AACxB,UAAI,YAAY,cAAA,EAAgB,SAAA,CAAU;AAAA,IAC5C;AAEA,UAAM,cAAc,SAAS,OAAO;AAAA,MAClC,MAAM,IAAI,UAAU;AAAA,IAAA,EACpB;AAEF,UAAM,WAAW,mBAAA;AAEjB,aAAS,gBAAgB;AACvB,UAAI,CAAC;AACH,eAAO;AAET,YAAM,KAAK,SAAS,MAAM;AAC1B,YAAM,OAAO,IAAI,sBAAA;AAEjB,UAAI,CAAC;AACH,eAAO;AAET,YAAM,cAAc,KAAK;AACzB,YAAM,EAAE,YAAY,mBAAmB,SAAS,WAAW;AAE3D,YAAM,SAAS,IAAI,UAAU;AAC7B,YAAM,UAAU,WAAW,MAAM,MAAM,SAAS;AAEhD,YAAM,aAAa,gBAAiB,UAAU,OAAQ,iBAAiB,eAAe,GAAG;AACzF,aAAO,QAAQ,UAAU,OAAO,UAAU;AAAA,IAC5C;AAEA,aAAS,QAAQ,GAAW;AAC1B,UAAI,CAAC;AACH;AAEF,YAAM,KAAK,SAAS,MAAM;AAC1B,YAAM,OAAO,IAAI,sBAAA;AAEjB,UAAI,CAAC;AACH;AAEF,UAAI,cAAc,IAAI,KAAK;AAE3B,YAAM,EAAE,YAAY,YAAY,mBAAmB,SAAS,KAAK,KAAK;AACtE,oBAAc,MAAM,aAAa,YAAY,UAAU;AAEvD,UAAI,YAAY,KAAK,OAAQ,cAAc,cAAc,iBAAkB,GAAG,CAAC;AAAA,IACjF;AAEA,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IAAA,IACE,eAAe,OAAO;AAE1B,cAAU,MAAM;AACd,qBAAA;AAAA,IACF,CAAC;AAED,UAAM,YAAY,MAAM;AACtB,qBAAA;AAAA,IACF,CAAC;;AAIC,aAAAC,UAAA,GAAAC,mBAiBM,OAjBNC,WAiBM;AAAA,iBAhBA;AAAA,QAAJ,KAAI;AAAA,QACJ,MAAK;AAAA,QACL,cAAW;AAAA,QACV,iBAAe,WAAA;AAAA,QAChB,iBAAc;AAAA,QACd,iBAAc;AAAA,QACb,OAAK,CAAEC,KAAAA,OAAO,KACT,eAAe;AAAA,MAAA,GACbC,KAAAA,QAAM;AAAA,QACb,SAAK,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,CAAA,WAAEC,MAAA,WAAA,EAAY,MAAM;AAAA,QACzB,aAAS,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,CAAA,WAAEA,MAAA,WAAA,EAAY,MAAM;AAAA,MAAA;QAE9BC,mBAGE,OAAA;AAAA,UAFC,OAAKC,eAAEJ,KAAAA,OAAO,MAAM;AAAA,UACpB,sBAAOE,MAAA,WAAA,CAAW;AAAA,QAAA;;;;;"}
@@ -1,4 +1,4 @@
1
- import { defineComponent, useModel, ref, reactive, createElementBlock, openBlock, mergeProps, createElementVNode, createVNode, createBlock, unref, withCtx, Fragment, renderList, toDisplayString } from "vue";
1
+ import { defineComponent, useModel, ref, reactive, openBlock, createElementBlock, mergeProps, createElementVNode, unref, createBlock, withCtx, Fragment, renderList, toDisplayString, createVNode } from "vue";
2
2
  import { get, clamp, set } from "@vueuse/shared";
3
3
  import tinycolor from "tinycolor2";
4
4
  import RuiButton from "../buttons/button/RuiButton.vue.js";
@@ -1,4 +1,4 @@
1
- import { defineComponent, toRefs, reactive, watch, createElementBlock, openBlock, mergeProps, createVNode, createElementVNode, unref } from "vue";
1
+ import { defineComponent, toRefs, reactive, watch, openBlock, createElementBlock, mergeProps, createVNode, unref, createElementVNode } from "vue";
2
2
  import RuiColorBoard from "./RuiColorBoard.vue.js";
3
3
  import _sfc_main$1 from "./RuiColorDisplay.vue.js";
4
4
  import RuiColorHue from "./RuiColorHue.vue.js";
@@ -41,7 +41,11 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
41
41
  emit("update:model-value", state2.color.hex);
42
42
  }, { immediate: true, deep: true });
43
43
  return (_ctx, _cache) => {
44
- return openBlock(), createElementBlock("div", mergeProps({ class: "rui-color-picker relative select-none bg-initial" }, _ctx.$attrs), [
44
+ return openBlock(), createElementBlock("div", mergeProps({
45
+ role: "application",
46
+ "aria-label": "Color picker",
47
+ class: "rui-color-picker relative select-none bg-initial"
48
+ }, _ctx.$attrs), [
45
49
  createVNode(RuiColorBoard, {
46
50
  color: unref(state).color,
47
51
  "onUpdate:board": _cache[0] || (_cache[0] = ($event) => onBoardChange($event))
@@ -1 +1 @@
1
- {"version":3,"file":"RuiColorPicker.vue.js","sources":["../../../src/components/color-picker/RuiColorPicker.vue"],"sourcesContent":["<script lang=\"ts\" setup>\n// Inspired by https://github.com/aesoper101/vue3-colorpicker/\nimport RuiColorBoard from '@/components/color-picker/RuiColorBoard.vue';\nimport RuiColorDisplay from '@/components/color-picker/RuiColorDisplay.vue';\nimport RuiColorHue from '@/components/color-picker/RuiColorHue.vue';\nimport RuiColorInput from '@/components/color-picker/RuiColorInput.vue';\nimport { Color } from './utils';\n\nexport interface Props {\n modelValue?: string;\n}\n\ndefineOptions({\n name: 'RuiColorPicker',\n inheritAttrs: false,\n});\n\nconst props = withDefaults(defineProps<Props>(), { modelValue: '' });\n\nconst emit = defineEmits<{\n (e: 'update:model-value', value: string): void;\n}>();\n\nconst { modelValue } = toRefs(props);\n\nconst state = reactive({\n color: new Color(get(modelValue)),\n});\n\nfunction onBoardChange({ saturation, brightness }: { saturation: number; brightness: number }) {\n state.color.saturation = saturation;\n state.color.brightness = brightness;\n}\n\nwhenever(\n modelValue,\n (value: string) => {\n if (state.color.hex !== value)\n state.color = new Color(value);\n },\n { deep: true },\n);\n\nwatch(state, (state) => {\n emit('update:model-value', state.color.hex);\n}, { immediate: true, deep: true });\n</script>\n\n<template>\n <div\n class=\"rui-color-picker relative select-none bg-initial\"\n v-bind=\"$attrs\"\n >\n <RuiColorBoard\n :color=\"state.color\"\n @update:board=\"onBoardChange($event)\"\n />\n <div class=\"flex flex-col gap-5 p-4\">\n <div class=\"flex items-center gap-4\">\n <RuiColorDisplay :color=\"state.color.hexString\" />\n <RuiColorHue\n v-model=\"state.color.hue\"\n class=\"flex-1\"\n />\n </div>\n\n <RuiColorInput v-model=\"state.color\" />\n </div>\n </div>\n</template>\n"],"names":["state","_openBlock","_createElementBlock","_mergeProps","$attrs","_createVNode","_unref","_createElementVNode","RuiColorDisplay","RuiColorInput"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAiBA,UAAM,QAAQ;AAEd,UAAM,OAAO;AAIb,UAAM,EAAE,WAAA,IAAe,OAAO,KAAK;AAEnC,UAAM,QAAQ,SAAS;AAAA,MACrB,OAAO,IAAI,MAAM,IAAI,UAAU,CAAC;AAAA,IAAA,CACjC;AAED,aAAS,cAAc,EAAE,YAAY,cAA0D;AAC7F,YAAM,MAAM,aAAa;AACzB,YAAM,MAAM,aAAa;AAAA,IAC3B;AAEA;AAAA,MACE;AAAA,MACA,CAAC,UAAkB;AACjB,YAAI,MAAM,MAAM,QAAQ;AACtB,gBAAM,QAAQ,IAAI,MAAM,KAAK;AAAA,MACjC;AAAA,MACA,EAAE,MAAM,KAAA;AAAA,IAAK;AAGf,UAAM,OAAO,CAACA,WAAU;AACtB,WAAK,sBAAsBA,OAAM,MAAM,GAAG;AAAA,IAC5C,GAAG,EAAE,WAAW,MAAM,MAAM,MAAM;;AAIhC,aAAAC,UAAA,GAAAC,mBAmBM,OAnBNC,WAmBM,EAlBJ,OAAM,mDAAA,GACEC,KAAAA,MAAM,GAAA;AAAA,QAEdC,YAGE,eAAA;AAAA,UAFC,OAAOC,MAAA,KAAA,EAAM;AAAA,UACb,kBAAY,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,CAAA,WAAE,cAAc,MAAM;AAAA,QAAA;QAErCC,mBAUM,OAVN,YAUM;AAAA,UATJA,mBAMM,OANN,YAMM;AAAA,YALJF,YAAkDG,aAAA;AAAA,cAAhC,OAAOF,MAAA,KAAA,EAAM,MAAM;AAAA,YAAA;YACrCD,YAGE,aAAA;AAAA,0BAFSC,MAAA,KAAA,EAAM,MAAM;AAAA,2EAAZA,MAAA,KAAA,EAAM,MAAM,MAAG;AAAA,cACxB,OAAM;AAAA,YAAA;;UAIVD,YAAuCI,aAAA;AAAA,YAAf,YAAAH,MAAA,KAAA,EAAM;AAAA,YAAN,uBAAA,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,CAAA,WAAAA,MAAA,KAAA,EAAM,QAAK;AAAA,UAAA;;;;;;"}
1
+ {"version":3,"file":"RuiColorPicker.vue.js","sources":["../../../src/components/color-picker/RuiColorPicker.vue"],"sourcesContent":["<script lang=\"ts\" setup>\n// Inspired by https://github.com/aesoper101/vue3-colorpicker/\nimport RuiColorBoard from '@/components/color-picker/RuiColorBoard.vue';\nimport RuiColorDisplay from '@/components/color-picker/RuiColorDisplay.vue';\nimport RuiColorHue from '@/components/color-picker/RuiColorHue.vue';\nimport RuiColorInput from '@/components/color-picker/RuiColorInput.vue';\nimport { Color } from './utils';\n\nexport interface Props {\n modelValue?: string;\n}\n\ndefineOptions({\n name: 'RuiColorPicker',\n inheritAttrs: false,\n});\n\nconst props = withDefaults(defineProps<Props>(), { modelValue: '' });\n\nconst emit = defineEmits<{\n (e: 'update:model-value', value: string): void;\n}>();\n\nconst { modelValue } = toRefs(props);\n\nconst state = reactive({\n color: new Color(get(modelValue)),\n});\n\nfunction onBoardChange({ saturation, brightness }: { saturation: number; brightness: number }) {\n state.color.saturation = saturation;\n state.color.brightness = brightness;\n}\n\nwhenever(\n modelValue,\n (value: string) => {\n if (state.color.hex !== value)\n state.color = new Color(value);\n },\n { deep: true },\n);\n\nwatch(state, (state) => {\n emit('update:model-value', state.color.hex);\n}, { immediate: true, deep: true });\n</script>\n\n<template>\n <div\n role=\"application\"\n aria-label=\"Color picker\"\n class=\"rui-color-picker relative select-none bg-initial\"\n v-bind=\"$attrs\"\n >\n <RuiColorBoard\n :color=\"state.color\"\n @update:board=\"onBoardChange($event)\"\n />\n <div class=\"flex flex-col gap-5 p-4\">\n <div class=\"flex items-center gap-4\">\n <RuiColorDisplay :color=\"state.color.hexString\" />\n <RuiColorHue\n v-model=\"state.color.hue\"\n class=\"flex-1\"\n />\n </div>\n\n <RuiColorInput v-model=\"state.color\" />\n </div>\n </div>\n</template>\n"],"names":["state","_openBlock","_createElementBlock","_mergeProps","$attrs","_createVNode","_unref","_createElementVNode","RuiColorDisplay","RuiColorInput"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAiBA,UAAM,QAAQ;AAEd,UAAM,OAAO;AAIb,UAAM,EAAE,WAAA,IAAe,OAAO,KAAK;AAEnC,UAAM,QAAQ,SAAS;AAAA,MACrB,OAAO,IAAI,MAAM,IAAI,UAAU,CAAC;AAAA,IAAA,CACjC;AAED,aAAS,cAAc,EAAE,YAAY,cAA0D;AAC7F,YAAM,MAAM,aAAa;AACzB,YAAM,MAAM,aAAa;AAAA,IAC3B;AAEA;AAAA,MACE;AAAA,MACA,CAAC,UAAkB;AACjB,YAAI,MAAM,MAAM,QAAQ;AACtB,gBAAM,QAAQ,IAAI,MAAM,KAAK;AAAA,MACjC;AAAA,MACA,EAAE,MAAM,KAAA;AAAA,IAAK;AAGf,UAAM,OAAO,CAACA,WAAU;AACtB,WAAK,sBAAsBA,OAAM,MAAM,GAAG;AAAA,IAC5C,GAAG,EAAE,WAAW,MAAM,MAAM,MAAM;;AAIhC,aAAAC,UAAA,GAAAC,mBAqBM,OArBNC,WAqBM;AAAA,QApBJ,MAAK;AAAA,QACL,cAAW;AAAA,QACX,OAAM;AAAA,MAAA,GACEC,KAAAA,MAAM,GAAA;AAAA,QAEdC,YAGE,eAAA;AAAA,UAFC,OAAOC,MAAA,KAAA,EAAM;AAAA,UACb,kBAAY,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,CAAA,WAAE,cAAc,MAAM;AAAA,QAAA;QAErCC,mBAUM,OAVN,YAUM;AAAA,UATJA,mBAMM,OANN,YAMM;AAAA,YALJF,YAAkDG,aAAA;AAAA,cAAhC,OAAOF,MAAA,KAAA,EAAM,MAAM;AAAA,YAAA;YACrCD,YAGE,aAAA;AAAA,0BAFSC,MAAA,KAAA,EAAM,MAAM;AAAA,2EAAZA,MAAA,KAAA,EAAM,MAAM,MAAG;AAAA,cACxB,OAAM;AAAA,YAAA;;UAIVD,YAAuCI,aAAA;AAAA,YAAf,YAAAH,MAAA,KAAA,EAAM;AAAA,YAAN,uBAAA,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,CAAA,WAAAA,MAAA,KAAA,EAAM,QAAK;AAAA,UAAA;;;;;;"}
@@ -38,11 +38,11 @@ declare const props: Readonly<{}> & {
38
38
  readonly successMessages: string | string[];
39
39
  readonly required: boolean;
40
40
  } & {
41
- readonly disabled: boolean;
42
- readonly dense: boolean;
43
41
  readonly readonly: boolean;
42
+ readonly disabled: boolean;
44
43
  readonly required: boolean;
45
44
  readonly hideDetails: boolean;
45
+ readonly dense: boolean;
46
46
  readonly allowEmpty: boolean;
47
47
  };
48
48
  type __VLS_Slots = {
@@ -58,16 +58,16 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, {}, {
58
58
  "onUpdate:modelValue"?: ((value: number | Date | undefined) => any) | undefined;
59
59
  }>, {
60
60
  label: string;
61
- disabled: boolean;
62
- dense: boolean;
63
61
  readonly: boolean;
64
62
  variant: "default" | "filled" | "outlined";
65
63
  type: DateTimeModelType;
64
+ disabled: boolean;
66
65
  errorMessages: string | string[];
67
66
  successMessages: string | string[];
68
67
  hint: string;
69
68
  required: boolean;
70
69
  hideDetails: boolean;
70
+ dense: boolean;
71
71
  maxDate: Date | number | "now";
72
72
  minDate: Date | number;
73
73
  allowEmpty: boolean;
@@ -1,5 +1,4 @@
1
- import { getRootAttrs, getNonRootAttrs } from "../../utils/helpers.js";
2
- import { defineComponent, mergeModels, useCssVars, unref, computed, useModel, ref, createBlock, openBlock, mergeProps, isRef, withCtx, createVNode, renderSlot, createElementVNode, createElementBlock, createCommentVNode, normalizeClass, createTextVNode, toDisplayString, withModifiers, nextTick } from "vue";
1
+ import { defineComponent, useCssVars, unref, useModel, ref, computed, openBlock, createBlock, mergeProps, isRef, withCtx, createVNode, renderSlot, createElementVNode, createElementBlock, normalizeClass, createTextVNode, toDisplayString, createCommentVNode, withModifiers, mergeModels, nextTick } from "vue";
3
2
  import { logicOr, logicAnd } from "@vueuse/math";
4
3
  import RuiButton from "../buttons/button/RuiButton.vue.js";
5
4
  import _sfc_main$1 from "./RuiDateTimePickerMenu.vue.js";
@@ -8,6 +7,7 @@ import { useInputHandler } from "./use-input-handler.js";
8
7
  import { useKeyboardHandler } from "./use-keyboard-handler.js";
9
8
  import RuiIcon from "../icons/RuiIcon.vue.js";
10
9
  import RuiMenu from "../overlays/menu/RuiMenu.vue.js";
10
+ import { getRootAttrs, getNonRootAttrs } from "../../utils/helpers.js";
11
11
  import { useFocusWithin, useFocus, isDefined } from "@vueuse/core";
12
12
  import { get, set } from "@vueuse/shared";
13
13
  const _hoisted_1 = ["data-error", "tabindex"];
@@ -47,7 +47,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
47
47
  emits: ["update:modelValue"],
48
48
  setup(__props) {
49
49
  useCssVars((_ctx) => ({
50
- "a01b5b3e": unref(labelWithQuote)
50
+ "v5fc8ba2e": unref(labelWithQuote)
51
51
  }));
52
52
  const modelValue = useModel(__props, "modelValue");
53
53
  const props = __props;
@@ -233,7 +233,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
233
233
  "full-width": "",
234
234
  "disable-auto-focus": ""
235
235
  }, {
236
- ...("getRootAttrs" in _ctx ? _ctx.getRootAttrs : unref(getRootAttrs))(_ctx.$attrs)
236
+ ...unref(getRootAttrs)(_ctx.$attrs)
237
237
  }), {
238
238
  activator: withCtx(({ attrs, open, hasError, hasSuccess }) => [
239
239
  createElementVNode("div", mergeProps(
@@ -256,7 +256,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
256
256
  ]]
257
257
  },
258
258
  {
259
- ...("getNonRootAttrs" in _ctx ? _ctx.getNonRootAttrs : unref(getNonRootAttrs))(_ctx.$attrs, ["onClick", "class"]),
259
+ ...unref(getNonRootAttrs)(_ctx.$attrs, ["onClick", "class"]),
260
260
  ...props.readonly ? {} : attrs
261
261
  },
262
262
  {
@@ -1 +1 @@
1
- {"version":3,"file":"RuiDateTimePicker.vue2.js","sources":["../../../src/components/date-time-picker/RuiDateTimePicker.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { DateTimeSegmentType } from '@/components/date-time-picker/types';\nimport type { TimePickerSelection } from '@/components/time-picker/RuiTimePicker.vue';\nimport { logicAnd, logicOr } from '@vueuse/math';\nimport RuiButton from '@/components/buttons/button/RuiButton.vue';\nimport RuiDateTimePickerMenu from '@/components/date-time-picker/RuiDateTimePickerMenu.vue';\nimport { useDateTimeSelection } from '@/components/date-time-picker/use-date-time-selection';\nimport { useInputHandler } from '@/components/date-time-picker/use-input-handler';\nimport { useKeyboardHandler } from '@/components/date-time-picker/use-keyboard-handler';\nimport RuiIcon from '@/components/icons/RuiIcon.vue';\nimport RuiMenu from '@/components/overlays/menu/RuiMenu.vue';\n\ntype DateFormat = 'year-first' | 'month-first' | 'day-first';\n\ntype DateTimeModelType = 'date' | 'epoch-ms' | 'epoch';\n\ntype ModelValueType<T extends DateTimeModelType> =\n T extends 'date' ? Date | undefined :\n T extends 'epoch-ms' ? number | undefined :\n T extends 'epoch' ? number | undefined :\n Date | number | undefined;\n\nexport interface RuiDateTimePickerProps {\n minDate?: Date | number;\n maxDate?: Date | number | 'now';\n format?: DateFormat;\n type?: DateTimeModelType;\n accuracy?: 'minute' | 'second' | 'millisecond';\n disabled?: boolean;\n allowEmpty?: boolean;\n readonly?: boolean;\n dense?: boolean;\n label?: string;\n variant?: 'default' | 'filled' | 'outlined';\n hint?: string;\n errorMessages?: string | string[];\n successMessages?: string | string[];\n hideDetails?: boolean;\n required?: boolean;\n}\n\ndefineOptions({\n name: 'RuiDateTimePicker',\n inheritAttrs: false,\n});\n\nconst modelValue = defineModel<ModelValueType<typeof props.type>>({ required: true });\n\nconst props = withDefaults(defineProps<RuiDateTimePickerProps>(), {\n disabled: false,\n readonly: false,\n allowEmpty: false,\n dense: false,\n type: 'epoch-ms',\n hideDetails: false,\n label: 'Pick a date',\n variant: 'default',\n hint: undefined,\n maxDate: undefined,\n minDate: undefined,\n format: 'day-first',\n accuracy: 'minute',\n errorMessages: () => [],\n successMessages: () => [],\n required: false,\n});\n\ndefineSlots<{\n 'menu-content': () => any;\n}>();\n\nconst baseFormats: Record<DateFormat, string> = {\n 'day-first': 'DD/MM/YYYY HH:mm',\n 'month-first': 'MM/DD/YYYY HH:mm',\n 'year-first': 'YYYY/MM/DD HH:mm',\n};\n\nconst isOpen = ref<boolean>(false);\nconst cursorPosition = ref<number>(0);\nconst currentValue = ref<number>();\n\nconst textInput = ref<HTMLInputElement>();\nconst activator = ref();\nconst menuWrapperRef = ref();\nconst calendarMenuOpen = ref<boolean>(false);\n\nconst { focused: activatorFocusedWithin } = useFocusWithin(activator);\nconst { focused: menuWrapperFocusedWithin } = useFocusWithin(menuWrapperRef);\nconst { focused: searchInputFocused } = useFocus(textInput);\n\nconst {\n clear: clearSelection,\n getDateTime,\n internalErrorMessages,\n maxAllowedDate,\n minAllowedDate,\n segmentData,\n selectedDate,\n selectedDay,\n selectedHour,\n selectedMillisecond,\n selectedMinute,\n selectedMonth,\n selectedSecond,\n selectedTime,\n selectedTimezone,\n selectedYear,\n setNow,\n valueSet,\n} = useDateTimeSelection({\n accuracy: props.accuracy,\n allowEmpty: props.allowEmpty,\n maxDate: props.maxDate,\n minDate: props.minDate,\n modelValue,\n type: props.type,\n});\n\nconst { setValue, getCurrent } = useInputHandler(segmentData, currentValue);\n\nconst dateFormat = computed<string>(() => {\n const dateFormat = props.format;\n const format = baseFormats[dateFormat];\n if (props.accuracy === 'second') {\n return format.replace('HH:mm', 'HH:mm:ss');\n }\n else if (props.accuracy === 'millisecond') {\n return format.replace('HH:mm', 'HH:mm:ss.SSS');\n }\n return format;\n});\n\nconst {\n clear: clearSegment,\n getCurrentSegment,\n handleBlur,\n handleClick,\n handleFocus,\n handleInput,\n handleInputSelection,\n handleKeyDown,\n handleMouseDown,\n handlePaste,\n setSegment,\n} = useKeyboardHandler({\n accuracy: props.accuracy,\n currentValue,\n cursorPosition,\n dateFormat,\n disabled: props.disabled,\n getCurrent,\n getDateTime,\n readonly: props.readonly,\n setValue,\n textInput,\n});\n\nfunction handleInputClick(event: MouseEvent): void {\n // Handle segment selection first, before any DOM changes from menu opening\n handleClick(event);\n // Open menu if not already open\n if (!get(isOpen)) {\n set(isOpen, true);\n }\n}\n\nconst anyFocused = logicOr(activatorFocusedWithin, menuWrapperFocusedWithin);\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 isOutlined = computed<boolean>(() => props.variant === 'outlined');\n\nconst formattedDisplay = computed<string>(() => {\n let result = get(dateFormat);\n\n const replacements = [\n { pattern: 'YYYY', value: getDisplayValue(selectedYear, 4) },\n { pattern: 'MM', value: getDisplayValue(selectedMonth, 2) },\n { pattern: 'DD', value: getDisplayValue(selectedDay, 2) },\n { pattern: 'HH', value: getDisplayValue(selectedHour, 2) },\n { pattern: 'mm', value: getDisplayValue(selectedMinute, 2) },\n { pattern: 'ss', value: getDisplayValue(selectedSecond, 2) },\n { pattern: 'SSS', value: getDisplayValue(selectedMillisecond, 3) },\n ];\n\n for (const { pattern, value } of replacements) {\n if (value !== undefined) {\n result = result.replace(pattern, value);\n }\n }\n\n return result;\n});\n\nconst timeSelection = computed<TimePickerSelection>({\n get() {\n const type = getCurrentSegment()?.type;\n\n if (type === 'mm') {\n return 'minute';\n }\n else if (type === 'ss') {\n return 'second';\n }\n else if (type === 'SSS') {\n return 'millisecond';\n }\n return 'hour';\n },\n set(value: TimePickerSelection) {\n let segmentType: DateTimeSegmentType = 'HH';\n if (value === 'minute') {\n segmentType = 'mm';\n }\n else if (value === 'second') {\n segmentType = 'ss';\n }\n else if (value === 'millisecond') {\n segmentType = 'SSS';\n }\n\n setSegment(segmentType);\n },\n});\n\nconst float = logicAnd(logicOr(isOpen, valueSet, searchInputFocused), isOutlined);\n\nconst combinedErrorMessages = computed<string[]>(() => {\n let propErrors: string[];\n if (props.errorMessages) {\n propErrors = Array.isArray(props.errorMessages)\n ? props.errorMessages\n : [props.errorMessages];\n }\n else {\n propErrors = Array.isArray(props.errorMessages)\n ? props.errorMessages\n : [];\n }\n return [...propErrors, ...get(internalErrorMessages)];\n});\n\nfunction getDisplayValue(digit: Ref<number | undefined>, padding: number): string | undefined {\n return isDefined(digit)\n ? get(digit).toString().padStart(padding, '0')\n : undefined;\n}\n\nasync function setInputFocus(): Promise<void> {\n await nextTick(() => {\n set(searchInputFocused, true);\n });\n}\n\nfunction clear(segmentType?: string): void {\n if (!segmentType) {\n clearSelection();\n set(currentValue, undefined);\n return;\n }\n\n clearSegment(segmentType);\n}\n\nfunction arrowClicked(event: any): void {\n if (get(isOpen)) {\n set(isOpen, false);\n event.stopPropagation();\n }\n}\n</script>\n\n<template>\n <RuiMenu\n v-model=\"isOpen\"\n :class=\"$style.wrapper\"\n :dense=\"dense\"\n :hint=\"hint\"\n :disabled=\"disabled\"\n :success-messages=\"successMessages\"\n :error-messages=\"combinedErrorMessages\"\n :close-on-content-click=\"false\"\n :show-details=\"!hideDetails\"\n :persistent=\"calendarMenuOpen\"\n :popper=\"{\n placement: 'bottom-start',\n }\"\n full-width\n disable-auto-focus\n v-bind=\"{\n ...getRootAttrs($attrs),\n }\"\n >\n <template #activator=\"{ attrs, open, hasError, hasSuccess }\">\n <div\n ref=\"activator\"\n class=\"group\"\n :class=\"[\n $style.activator,\n {\n [$style.disabled]: disabled,\n [$style.readonly]: readonly,\n [$style.outlined]: isOutlined,\n [$style.dense]: dense,\n [$style.float]: float,\n [$style.opened]: open,\n [$style['with-value']]: valueSet,\n [$style['with-error']]: hasError,\n [$style['with-success']]: hasSuccess && !hasError,\n },\n ]\"\n v-bind=\"{\n ...getNonRootAttrs($attrs, ['onClick', 'class']),\n ...(props.readonly ? {} : attrs) }\n \"\n data-id=\"activator\"\n :data-error=\"hasError ? '' : undefined\"\n :tabindex=\"disabled || props.readonly ? -1 : 0\"\n @click=\"setInputFocus()\"\n >\n <span\n v-if=\"isOutlined && (searchInputFocused || open || valueSet)\"\n data-id=\"label\"\n :class=\"[\n $style.label,\n {\n 'absolute': isOutlined,\n 'pr-2': !valueSet && !open && isOutlined,\n },\n ]\"\n >\n {{ label }}\n <span\n v-if=\"props.required\"\n data-id=\"required-indicator\"\n class=\"text-rui-error\"\n >\n ﹡\n </span>\n </span>\n\n <span :class=\"[$style.icon__wrapper, $style.icon__prepend]\">\n <RuiIcon\n :class=\"[$style.icon]\"\n :size=\"dense ? 16 : 24\"\n name=\"lu-calendar-days\"\n />\n </span>\n\n <div :class=\"$style.value\">\n <input\n ref=\"textInput\"\n :disabled=\"disabled\"\n :value=\"formattedDisplay\"\n class=\"bg-transparent outline-none flex-1 min-w-0\"\n type=\"text\"\n :placeholder=\"dateFormat\"\n :readonly=\"readonly\"\n :aria-invalid=\"hasError\"\n @mousedown=\"handleMouseDown($event)\"\n @focus=\"handleFocus()\"\n @blur=\"handleBlur()\"\n @select=\"handleInputSelection($event)\"\n @click.stop=\"handleInputClick($event)\"\n @keydown=\"handleKeyDown($event)\"\n @paste=\"handlePaste($event)\"\n @input=\"handleInput($event)\"\n />\n </div>\n\n <RuiButton\n v-if=\"allowEmpty && valueSet && !disabled\"\n variant=\"text\"\n icon\n data-id=\"clear-button\"\n size=\"sm\"\n tabindex=\"-1\"\n color=\"error\"\n class=\"group-hover:!visible\"\n :class=\"[$style.clear, anyFocused && '!visible', {\n 'mr-2': !dense,\n }]\"\n @click.stop.prevent=\"clear()\"\n >\n <RuiIcon\n name=\"lu-x\"\n size=\"18\"\n />\n </RuiButton>\n\n <span\n :class=\"[$style.icon__wrapper, $style.icon__append]\"\n data-id=\"append\"\n @click=\"arrowClicked($event)\"\n >\n <RuiIcon\n :class=\"[$style.icon, { 'rotate-180': open }]\"\n :size=\"dense ? 16 : 24\"\n name=\"lu-chevron-down\"\n />\n </span>\n </div>\n <fieldset\n v-if=\"isOutlined\"\n :class=\"$style.fieldset\"\n >\n <legend :class=\"{ 'px-2': float }\" />\n </fieldset>\n </template>\n <template #default>\n <RuiDateTimePickerMenu\n ref=\"menuWrapperRef\"\n v-model:selected-date=\"selectedDate\"\n v-model:selected-time=\"selectedTime\"\n v-model:selected-hour=\"selectedHour\"\n v-model:selected-minute=\"selectedMinute\"\n v-model:selected-second=\"selectedSecond\"\n v-model:selected-millisecond=\"selectedMillisecond\"\n v-model:time-selection=\"timeSelection\"\n v-model:selected-timezone=\"selectedTimezone\"\n v-model:calendar-menu-open=\"calendarMenuOpen\"\n :accuracy=\"accuracy\"\n :max-date=\"maxAllowedDate\"\n :min-date=\"minAllowedDate\"\n @set-now=\"setNow()\"\n >\n <slot name=\"menu-content\" />\n </RuiDateTimePickerMenu>\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-within: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 &:focus-within {\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 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 .value {\n @apply flex gap-1 flex-wrap flex-1 ps-8;\n }\n\n .clear {\n @apply ml-auto shrink-0 invisible;\n }\n\n .icon {\n @apply text-rui-text-secondary transition;\n\n &__wrapper {\n @apply flex items-center justify-end;\n @apply absolute top-px bottom-0;\n }\n\n &__append {\n @apply right-3;\n }\n\n &__prepend {\n @apply left-3;\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 &:focus-within,\n &:focus-within.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","dateFormat","_openBlock","_createBlock","_mergeProps","_unref","$style","getRootAttrs","$attrs","_withCtx","_createElementVNode","getNonRootAttrs","_createElementBlock","_normalizeClass","_createTextVNode","_toDisplayString","_createVNode","_withModifiers","RuiDateTimePickerMenu","_renderSlot"],"mappings":"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"}
1
+ {"version":3,"file":"RuiDateTimePicker.vue2.js","sources":["../../../src/components/date-time-picker/RuiDateTimePicker.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { DateTimeSegmentType } from '@/components/date-time-picker/types';\nimport type { TimePickerSelection } from '@/components/time-picker/RuiTimePicker.vue';\nimport { logicAnd, logicOr } from '@vueuse/math';\nimport RuiButton from '@/components/buttons/button/RuiButton.vue';\nimport RuiDateTimePickerMenu from '@/components/date-time-picker/RuiDateTimePickerMenu.vue';\nimport { useDateTimeSelection } from '@/components/date-time-picker/use-date-time-selection';\nimport { useInputHandler } from '@/components/date-time-picker/use-input-handler';\nimport { useKeyboardHandler } from '@/components/date-time-picker/use-keyboard-handler';\nimport RuiIcon from '@/components/icons/RuiIcon.vue';\nimport RuiMenu from '@/components/overlays/menu/RuiMenu.vue';\nimport { getNonRootAttrs, getRootAttrs } from '@/utils/helpers';\n\ntype DateFormat = 'year-first' | 'month-first' | 'day-first';\n\ntype DateTimeModelType = 'date' | 'epoch-ms' | 'epoch';\n\ntype ModelValueType<T extends DateTimeModelType> =\n T extends 'date' ? Date | undefined :\n T extends 'epoch-ms' ? number | undefined :\n T extends 'epoch' ? number | undefined :\n Date | number | undefined;\n\nexport interface RuiDateTimePickerProps {\n minDate?: Date | number;\n maxDate?: Date | number | 'now';\n format?: DateFormat;\n type?: DateTimeModelType;\n accuracy?: 'minute' | 'second' | 'millisecond';\n disabled?: boolean;\n allowEmpty?: boolean;\n readonly?: boolean;\n dense?: boolean;\n label?: string;\n variant?: 'default' | 'filled' | 'outlined';\n hint?: string;\n errorMessages?: string | string[];\n successMessages?: string | string[];\n hideDetails?: boolean;\n required?: boolean;\n}\n\ndefineOptions({\n name: 'RuiDateTimePicker',\n inheritAttrs: false,\n});\n\nconst modelValue = defineModel<ModelValueType<typeof props.type>>({ required: true });\n\nconst props = withDefaults(defineProps<RuiDateTimePickerProps>(), {\n disabled: false,\n readonly: false,\n allowEmpty: false,\n dense: false,\n type: 'epoch-ms',\n hideDetails: false,\n label: 'Pick a date',\n variant: 'default',\n hint: undefined,\n maxDate: undefined,\n minDate: undefined,\n format: 'day-first',\n accuracy: 'minute',\n errorMessages: () => [],\n successMessages: () => [],\n required: false,\n});\n\ndefineSlots<{\n 'menu-content': () => any;\n}>();\n\nconst baseFormats: Record<DateFormat, string> = {\n 'day-first': 'DD/MM/YYYY HH:mm',\n 'month-first': 'MM/DD/YYYY HH:mm',\n 'year-first': 'YYYY/MM/DD HH:mm',\n};\n\nconst isOpen = ref<boolean>(false);\nconst cursorPosition = ref<number>(0);\nconst currentValue = ref<number>();\n\nconst textInput = ref<HTMLInputElement>();\nconst activator = ref();\nconst menuWrapperRef = ref();\nconst calendarMenuOpen = ref<boolean>(false);\n\nconst { focused: activatorFocusedWithin } = useFocusWithin(activator);\nconst { focused: menuWrapperFocusedWithin } = useFocusWithin(menuWrapperRef);\nconst { focused: searchInputFocused } = useFocus(textInput);\n\nconst {\n clear: clearSelection,\n getDateTime,\n internalErrorMessages,\n maxAllowedDate,\n minAllowedDate,\n segmentData,\n selectedDate,\n selectedDay,\n selectedHour,\n selectedMillisecond,\n selectedMinute,\n selectedMonth,\n selectedSecond,\n selectedTime,\n selectedTimezone,\n selectedYear,\n setNow,\n valueSet,\n} = useDateTimeSelection({\n accuracy: props.accuracy,\n allowEmpty: props.allowEmpty,\n maxDate: props.maxDate,\n minDate: props.minDate,\n modelValue,\n type: props.type,\n});\n\nconst { setValue, getCurrent } = useInputHandler(segmentData, currentValue);\n\nconst dateFormat = computed<string>(() => {\n const dateFormat = props.format;\n const format = baseFormats[dateFormat];\n if (props.accuracy === 'second') {\n return format.replace('HH:mm', 'HH:mm:ss');\n }\n else if (props.accuracy === 'millisecond') {\n return format.replace('HH:mm', 'HH:mm:ss.SSS');\n }\n return format;\n});\n\nconst {\n clear: clearSegment,\n getCurrentSegment,\n handleBlur,\n handleClick,\n handleFocus,\n handleInput,\n handleInputSelection,\n handleKeyDown,\n handleMouseDown,\n handlePaste,\n setSegment,\n} = useKeyboardHandler({\n accuracy: props.accuracy,\n currentValue,\n cursorPosition,\n dateFormat,\n disabled: props.disabled,\n getCurrent,\n getDateTime,\n readonly: props.readonly,\n setValue,\n textInput,\n});\n\nfunction handleInputClick(event: MouseEvent): void {\n // Handle segment selection first, before any DOM changes from menu opening\n handleClick(event);\n // Open menu if not already open\n if (!get(isOpen)) {\n set(isOpen, true);\n }\n}\n\nconst anyFocused = logicOr(activatorFocusedWithin, menuWrapperFocusedWithin);\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 isOutlined = computed<boolean>(() => props.variant === 'outlined');\n\nconst formattedDisplay = computed<string>(() => {\n let result = get(dateFormat);\n\n const replacements = [\n { pattern: 'YYYY', value: getDisplayValue(selectedYear, 4) },\n { pattern: 'MM', value: getDisplayValue(selectedMonth, 2) },\n { pattern: 'DD', value: getDisplayValue(selectedDay, 2) },\n { pattern: 'HH', value: getDisplayValue(selectedHour, 2) },\n { pattern: 'mm', value: getDisplayValue(selectedMinute, 2) },\n { pattern: 'ss', value: getDisplayValue(selectedSecond, 2) },\n { pattern: 'SSS', value: getDisplayValue(selectedMillisecond, 3) },\n ];\n\n for (const { pattern, value } of replacements) {\n if (value !== undefined) {\n result = result.replace(pattern, value);\n }\n }\n\n return result;\n});\n\nconst timeSelection = computed<TimePickerSelection>({\n get() {\n const type = getCurrentSegment()?.type;\n\n if (type === 'mm') {\n return 'minute';\n }\n else if (type === 'ss') {\n return 'second';\n }\n else if (type === 'SSS') {\n return 'millisecond';\n }\n return 'hour';\n },\n set(value: TimePickerSelection) {\n let segmentType: DateTimeSegmentType = 'HH';\n if (value === 'minute') {\n segmentType = 'mm';\n }\n else if (value === 'second') {\n segmentType = 'ss';\n }\n else if (value === 'millisecond') {\n segmentType = 'SSS';\n }\n\n setSegment(segmentType);\n },\n});\n\nconst float = logicAnd(logicOr(isOpen, valueSet, searchInputFocused), isOutlined);\n\nconst combinedErrorMessages = computed<string[]>(() => {\n let propErrors: string[];\n if (props.errorMessages) {\n propErrors = Array.isArray(props.errorMessages)\n ? props.errorMessages\n : [props.errorMessages];\n }\n else {\n propErrors = Array.isArray(props.errorMessages)\n ? props.errorMessages\n : [];\n }\n return [...propErrors, ...get(internalErrorMessages)];\n});\n\nfunction getDisplayValue(digit: Ref<number | undefined>, padding: number): string | undefined {\n return isDefined(digit)\n ? get(digit).toString().padStart(padding, '0')\n : undefined;\n}\n\nasync function setInputFocus(): Promise<void> {\n await nextTick(() => {\n set(searchInputFocused, true);\n });\n}\n\nfunction clear(segmentType?: string): void {\n if (!segmentType) {\n clearSelection();\n set(currentValue, undefined);\n return;\n }\n\n clearSegment(segmentType);\n}\n\nfunction arrowClicked(event: any): void {\n if (get(isOpen)) {\n set(isOpen, false);\n event.stopPropagation();\n }\n}\n</script>\n\n<template>\n <RuiMenu\n v-model=\"isOpen\"\n :class=\"$style.wrapper\"\n :dense=\"dense\"\n :hint=\"hint\"\n :disabled=\"disabled\"\n :success-messages=\"successMessages\"\n :error-messages=\"combinedErrorMessages\"\n :close-on-content-click=\"false\"\n :show-details=\"!hideDetails\"\n :persistent=\"calendarMenuOpen\"\n :popper=\"{\n placement: 'bottom-start',\n }\"\n full-width\n disable-auto-focus\n v-bind=\"{\n ...getRootAttrs($attrs),\n }\"\n >\n <template #activator=\"{ attrs, open, hasError, hasSuccess }\">\n <div\n ref=\"activator\"\n class=\"group\"\n :class=\"[\n $style.activator,\n {\n [$style.disabled]: disabled,\n [$style.readonly]: readonly,\n [$style.outlined]: isOutlined,\n [$style.dense]: dense,\n [$style.float]: float,\n [$style.opened]: open,\n [$style['with-value']]: valueSet,\n [$style['with-error']]: hasError,\n [$style['with-success']]: hasSuccess && !hasError,\n },\n ]\"\n v-bind=\"{\n ...getNonRootAttrs($attrs, ['onClick', 'class']),\n ...(props.readonly ? {} : attrs) }\n \"\n data-id=\"activator\"\n :data-error=\"hasError ? '' : undefined\"\n :tabindex=\"disabled || props.readonly ? -1 : 0\"\n @click=\"setInputFocus()\"\n >\n <span\n v-if=\"isOutlined && (searchInputFocused || open || valueSet)\"\n data-id=\"label\"\n :class=\"[\n $style.label,\n {\n 'absolute': isOutlined,\n 'pr-2': !valueSet && !open && isOutlined,\n },\n ]\"\n >\n {{ label }}\n <span\n v-if=\"props.required\"\n data-id=\"required-indicator\"\n class=\"text-rui-error\"\n >\n ﹡\n </span>\n </span>\n\n <span :class=\"[$style.icon__wrapper, $style.icon__prepend]\">\n <RuiIcon\n :class=\"[$style.icon]\"\n :size=\"dense ? 16 : 24\"\n name=\"lu-calendar-days\"\n />\n </span>\n\n <div :class=\"$style.value\">\n <input\n ref=\"textInput\"\n :disabled=\"disabled\"\n :value=\"formattedDisplay\"\n class=\"bg-transparent outline-none flex-1 min-w-0\"\n type=\"text\"\n :placeholder=\"dateFormat\"\n :readonly=\"readonly\"\n :aria-invalid=\"hasError\"\n @mousedown=\"handleMouseDown($event)\"\n @focus=\"handleFocus()\"\n @blur=\"handleBlur()\"\n @select=\"handleInputSelection($event)\"\n @click.stop=\"handleInputClick($event)\"\n @keydown=\"handleKeyDown($event)\"\n @paste=\"handlePaste($event)\"\n @input=\"handleInput($event)\"\n />\n </div>\n\n <RuiButton\n v-if=\"allowEmpty && valueSet && !disabled\"\n variant=\"text\"\n icon\n data-id=\"clear-button\"\n size=\"sm\"\n tabindex=\"-1\"\n color=\"error\"\n class=\"group-hover:!visible\"\n :class=\"[$style.clear, anyFocused && '!visible', {\n 'mr-2': !dense,\n }]\"\n @click.stop.prevent=\"clear()\"\n >\n <RuiIcon\n name=\"lu-x\"\n size=\"18\"\n />\n </RuiButton>\n\n <span\n :class=\"[$style.icon__wrapper, $style.icon__append]\"\n data-id=\"append\"\n @click=\"arrowClicked($event)\"\n >\n <RuiIcon\n :class=\"[$style.icon, { 'rotate-180': open }]\"\n :size=\"dense ? 16 : 24\"\n name=\"lu-chevron-down\"\n />\n </span>\n </div>\n <fieldset\n v-if=\"isOutlined\"\n :class=\"$style.fieldset\"\n >\n <legend :class=\"{ 'px-2': float }\" />\n </fieldset>\n </template>\n <template #default>\n <RuiDateTimePickerMenu\n ref=\"menuWrapperRef\"\n v-model:selected-date=\"selectedDate\"\n v-model:selected-time=\"selectedTime\"\n v-model:selected-hour=\"selectedHour\"\n v-model:selected-minute=\"selectedMinute\"\n v-model:selected-second=\"selectedSecond\"\n v-model:selected-millisecond=\"selectedMillisecond\"\n v-model:time-selection=\"timeSelection\"\n v-model:selected-timezone=\"selectedTimezone\"\n v-model:calendar-menu-open=\"calendarMenuOpen\"\n :accuracy=\"accuracy\"\n :max-date=\"maxAllowedDate\"\n :min-date=\"minAllowedDate\"\n @set-now=\"setNow()\"\n >\n <slot name=\"menu-content\" />\n </RuiDateTimePickerMenu>\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-within: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 &:focus-within {\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 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 .value {\n @apply flex gap-1 flex-wrap flex-1 ps-8;\n }\n\n .clear {\n @apply ml-auto shrink-0 invisible;\n }\n\n .icon {\n @apply text-rui-text-secondary transition;\n\n &__wrapper {\n @apply flex items-center justify-end;\n @apply absolute top-px bottom-0;\n }\n\n &__append {\n @apply right-3;\n }\n\n &__prepend {\n @apply left-3;\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 &:focus-within,\n &:focus-within.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","dateFormat","_openBlock","_createBlock","_mergeProps","_unref","$style","$attrs","_withCtx","_createElementVNode","_createElementBlock","_normalizeClass","_createTextVNode","_toDisplayString","_createVNode","_withModifiers","RuiDateTimePickerMenu","_renderSlot"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+CA,UAAM,aAAaA,SAA8C,SAAA,YAAmB;AAEpF,UAAM,QAAQ;AAuBd,UAAM,cAA0C;AAAA,MAC9C,aAAa;AAAA,MACb,eAAe;AAAA,MACf,cAAc;AAAA,IAAA;AAGhB,UAAM,SAAS,IAAa,KAAK;AACjC,UAAM,iBAAiB,IAAY,CAAC;AACpC,UAAM,eAAe,IAAA;AAErB,UAAM,YAAY,IAAA;AAClB,UAAM,YAAY,IAAA;AAClB,UAAM,iBAAiB,IAAA;AACvB,UAAM,mBAAmB,IAAa,KAAK;AAE3C,UAAM,EAAE,SAAS,2BAA2B,eAAe,SAAS;AACpE,UAAM,EAAE,SAAS,6BAA6B,eAAe,cAAc;AAC3E,UAAM,EAAE,SAAS,uBAAuB,SAAS,SAAS;AAE1D,UAAM;AAAA,MACJ,OAAO;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA,IACE,qBAAqB;AAAA,MACvB,UAAU,MAAM;AAAA,MAChB,YAAY,MAAM;AAAA,MAClB,SAAS,MAAM;AAAA,MACf,SAAS,MAAM;AAAA,MACf;AAAA,MACA,MAAM,MAAM;AAAA,IAAA,CACb;AAED,UAAM,EAAE,UAAU,WAAA,IAAe,gBAAgB,aAAa,YAAY;AAE1E,UAAM,aAAa,SAAiB,MAAM;AACxC,YAAMC,cAAa,MAAM;AACzB,YAAM,SAAS,YAAYA,WAAU;AACrC,UAAI,MAAM,aAAa,UAAU;AAC/B,eAAO,OAAO,QAAQ,SAAS,UAAU;AAAA,MAC3C,WACS,MAAM,aAAa,eAAe;AACzC,eAAO,OAAO,QAAQ,SAAS,cAAc;AAAA,MAC/C;AACA,aAAO;AAAA,IACT,CAAC;AAED,UAAM;AAAA,MAEJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA,IACE,mBAAmB;AAAA,MACrB,UAAU,MAAM;AAAA,MAChB;AAAA,MACA;AAAA,MACA;AAAA,MACA,UAAU,MAAM;AAAA,MAChB;AAAA,MACA;AAAA,MACA,UAAU,MAAM;AAAA,MAChB;AAAA,MACA;AAAA,IAAA,CACD;AAED,aAAS,iBAAiB,OAAyB;AAEjD,kBAAY,KAAK;AAEjB,UAAI,CAAC,IAAI,MAAM,GAAG;AAChB,YAAI,QAAQ,IAAI;AAAA,MAClB;AAAA,IACF;AAEA,UAAM,aAAa,QAAQ,wBAAwB,wBAAwB;AAE3E,UAAM,iBAAiB,SAAiB,MAAM;AAC5C,UAAI,CAAC,MAAM;AACT,eAAO;AAET,YAAM,WAAW,MAAM,WAAW,MAAM;AACxC,aAAO,MAAM,MAAM,KAAK,GAAG,QAAQ;AAAA,IACrC,CAAC;AAED,UAAM,aAAa,SAAkB,MAAM,MAAM,YAAY,UAAU;AAEvE,UAAM,mBAAmB,SAAiB,MAAM;AAC9C,UAAI,SAAS,IAAI,UAAU;AAE3B,YAAM,eAAe;AAAA,QACnB,EAAE,SAAS,QAAQ,OAAO,gBAAgB,cAAc,CAAC,EAAA;AAAA,QACzD,EAAE,SAAS,MAAM,OAAO,gBAAgB,eAAe,CAAC,EAAA;AAAA,QACxD,EAAE,SAAS,MAAM,OAAO,gBAAgB,aAAa,CAAC,EAAA;AAAA,QACtD,EAAE,SAAS,MAAM,OAAO,gBAAgB,cAAc,CAAC,EAAA;AAAA,QACvD,EAAE,SAAS,MAAM,OAAO,gBAAgB,gBAAgB,CAAC,EAAA;AAAA,QACzD,EAAE,SAAS,MAAM,OAAO,gBAAgB,gBAAgB,CAAC,EAAA;AAAA,QACzD,EAAE,SAAS,OAAO,OAAO,gBAAgB,qBAAqB,CAAC,EAAA;AAAA,MAAE;AAGnE,iBAAW,EAAE,SAAS,MAAA,KAAW,cAAc;AAC7C,YAAI,UAAU,QAAW;AACvB,mBAAS,OAAO,QAAQ,SAAS,KAAK;AAAA,QACxC;AAAA,MACF;AAEA,aAAO;AAAA,IACT,CAAC;AAED,UAAM,gBAAgB,SAA8B;AAAA,MAClD,MAAM;AACJ,cAAM,OAAO,qBAAqB;AAElC,YAAI,SAAS,MAAM;AACjB,iBAAO;AAAA,QACT,WACS,SAAS,MAAM;AACtB,iBAAO;AAAA,QACT,WACS,SAAS,OAAO;AACvB,iBAAO;AAAA,QACT;AACA,eAAO;AAAA,MACT;AAAA,MACA,IAAI,OAA4B;AAC9B,YAAI,cAAmC;AACvC,YAAI,UAAU,UAAU;AACtB,wBAAc;AAAA,QAChB,WACS,UAAU,UAAU;AAC3B,wBAAc;AAAA,QAChB,WACS,UAAU,eAAe;AAChC,wBAAc;AAAA,QAChB;AAEA,mBAAW,WAAW;AAAA,MACxB;AAAA,IAAA,CACD;AAED,UAAM,QAAQ,SAAS,QAAQ,QAAQ,UAAU,kBAAkB,GAAG,UAAU;AAEhF,UAAM,wBAAwB,SAAmB,MAAM;AACrD,UAAI;AACJ,UAAI,MAAM,eAAe;AACvB,qBAAa,MAAM,QAAQ,MAAM,aAAa,IAC1C,MAAM,gBACN,CAAC,MAAM,aAAa;AAAA,MAC1B,OACK;AACH,qBAAa,MAAM,QAAQ,MAAM,aAAa,IAC1C,MAAM,gBACN,CAAA;AAAA,MACN;AACA,aAAO,CAAC,GAAG,YAAY,GAAG,IAAI,qBAAqB,CAAC;AAAA,IACtD,CAAC;AAED,aAAS,gBAAgB,OAAgC,SAAqC;AAC5F,aAAO,UAAU,KAAK,IAClB,IAAI,KAAK,EAAE,SAAA,EAAW,SAAS,SAAS,GAAG,IAC3C;AAAA,IACN;AAEA,mBAAe,gBAA+B;AAC5C,YAAM,SAAS,MAAM;AACnB,YAAI,oBAAoB,IAAI;AAAA,MAC9B,CAAC;AAAA,IACH;AAEA,aAAS,MAAM,aAA4B;AACvB;AAChB,uBAAA;AACA,YAAI,cAAc,MAAS;AAC3B;AAAA,MACF;AAAA,IAGF;AAEA,aAAS,aAAa,OAAkB;AACtC,UAAI,IAAI,MAAM,GAAG;AACf,YAAI,QAAQ,KAAK;AACjB,cAAM,gBAAA;AAAA,MACR;AAAA,IACF;;AAIE,aAAAC,UAAA,GAAAC,YA4JU,SA5JVC,WA4JU;AAAA,oBA3JCC,MAAA,MAAA;AAAA,uFAAA,OAAM,QAAA,SAAA;AAAA,QACd,OAAOC,KAAAA,OAAO;AAAA,QACd,OAAO,QAAA;AAAA,QACP,MAAM,QAAA;AAAA,QACN,UAAU,QAAA;AAAA,QACV,oBAAkB,QAAA;AAAA,QAClB,kBAAgBD,MAAA,qBAAA;AAAA,QAChB,0BAAwB;AAAA,QACxB,iBAAe,QAAA;AAAA,QACf,YAAYA,MAAA,gBAAA;AAAA,QACZ,QAAQ;AAAA;;QAGT,cAAA;AAAA,QACA,sBAAA;AAAA,MAAA;QACmB,GAAAA,MAAA,YAAA,EAAaE,KAAAA,MAAM;AAAA,MAAA;QAI3B,WAASC,QAClB,CA2GM,EA5GgB,OAAO,MAAM,UAAU,iBAAU;AAAA,UACvDC,mBA2GM,OA3GNL;AAAAA,YA2GM;AAAA,uBA1GA;AAAA,cAAJ,KAAI;AAAA,cACJ,QAAM,SAAO;AAAA,gBACOE,KAAAA,OAAO;AAAA;mBAAoCA,KAAAA,OAAO,QAAQ,GAAG,QAAA;AAAA,mBAAuBA,KAAAA,OAAO,QAAQ,GAAG,QAAA;AAAA,mBAAuBA,KAAAA,OAAO,QAAQ,GAAGD,MAAA,UAAA;AAAA,mBAAyBC,KAAAA,OAAO,KAAK,GAAG,QAAA;AAAA,mBAAoBA,KAAAA,OAAO,KAAK,GAAGD,MAAA,KAAA;AAAA,mBAAoBC,KAAAA,OAAO,MAAM,GAAG;AAAA,kBAAmBA,CAAAA,KAAAA,uBAAuBD,MAAA,QAAA;AAAA,kBAAuBC,CAAAA,KAAAA,uBAAuB;AAAA,mBAAuBA,KAAAA,OAAM,cAAA,CAAA,GAAmB,cAAU,CAAK;AAAA,gBAAA;AAAA;;;cAclZ,GAAAD,MAAA,eAAA,EAAgBE,KAAAA,QAAM,CAAA,WAAA,OAAA,CAAA;AAAA,iBAAuC,MAAM,WAAQ,KAAQ;AAAA,YAAA;AAAA;cAI1G,WAAQ;AAAA,cACP,cAAY,WAAQ,KAAQ;AAAA,cAC5B,UAAU,QAAA,YAAY,MAAM,WAAQ,KAAA;AAAA,cACpC,iDAAO,cAAA;AAAA,YAAa;AAAA;YAGbF,MAAA,UAAA,MAAeA,MAAA,kBAAA,KAAsB,QAAQA,MAAA,QAAA,mBADrDK,mBAmBO,QAAA;AAAA;cAjBL,WAAQ;AAAA,cACP,OAAKC,eAAA;AAAA,gBAAgBL,KAAAA,OAAO;AAAA;8BAA+CD,MAAA,UAAA;AAAA,2BAAmCA,MAAA,QAAA,KAAQ,CAAK,QAAQA,MAAA,UAAA;AAAA,gBAAA;AAAA;;cAQjIO,gBAAAC,gBAAA,QAAA,KAAK,IAAG,KACX,CAAA;AAAA,cACQ,MAAM,yBADdH,mBAMO,QANP,YAIC,KAED;;YAGFD,mBAMO,QAAA;AAAA,cANA,uBAAQH,KAAAA,OAAO,eAAeA,KAAAA,OAAO,aAAa,CAAA;AAAA,YAAA;cACvDQ,YAIE,SAAA;AAAA,gBAHC,OAAKH,eAAA,CAAGL,KAAAA,OAAO,IAAI,CAAA;AAAA,gBACnB,MAAM,QAAA,QAAK,KAAA;AAAA,gBACZ,MAAK;AAAA,cAAA;;YAITG,mBAmBM,OAAA;AAAA,cAnBA,OAAKE,eAAEL,KAAAA,OAAO,KAAK;AAAA,YAAA;cACvBG,mBAiBE,SAAA;AAAA,yBAhBI;AAAA,gBAAJ,KAAI;AAAA,gBACH,UAAU,QAAA;AAAA,gBACV,OAAOJ,MAAA,gBAAA;AAAA,gBACR,OAAM;AAAA,gBACN,MAAK;AAAA,gBACJ,aAAaA,MAAA,UAAA;AAAA,gBACb,UAAU,QAAA;AAAA,gBACV,gBAAc;AAAA,gBACd,aAAS,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,CAAA,WAAEA,MAAA,eAAA,EAAgB,MAAM;AAAA,gBACjC,+CAAOA,MAAA,WAAA;gBACP,8CAAMA,MAAA,UAAA;gBACN,UAAM,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,CAAA,WAAEA,MAAA,oBAAA,EAAqB,MAAM;AAAA,gBACnC,SAAK,OAAA,CAAA,MAAA,OAAA,CAAA,IAAAU,cAAA,CAAA,WAAO,iBAAiB,MAAM,GAAA,CAAA,MAAA,CAAA;AAAA,gBACnC,WAAO,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,CAAA,WAAEV,MAAA,aAAA,EAAc,MAAM;AAAA,gBAC7B,SAAK,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,CAAA,WAAEA,MAAA,WAAA,EAAY,MAAM;AAAA,gBACzB,SAAK,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,CAAA,WAAEA,MAAA,WAAA,EAAY,MAAM;AAAA,cAAA;;YAKtB,QAAA,cAAcA,MAAA,QAAA,KAAQ,CAAK,QAAA,yBADnCF,YAkBY,WAAA;AAAA;cAhBV,SAAQ;AAAA,cACR,MAAA;AAAA,cACA,WAAQ;AAAA,cACR,MAAK;AAAA,cACL,UAAS;AAAA,cACT,OAAM;AAAA,cACN,uBAAM,wBAAsB,CACnBG,YAAO,OAAOD,MAAA,UAAA,KAAU,YAAA;AAAA,yBAAuC,QAAA;AAAA,cAAA;cAGvE,6DAAoB,MAAA,GAAK,CAAA,QAAA,SAAA,CAAA;AAAA,YAAA;+BAE1B,MAGE;AAAA,gBAHFS,YAGE,SAAA;AAAA,kBAFA,MAAK;AAAA,kBACL,MAAK;AAAA,gBAAA;;;;YAITL,mBAUO,QAAA;AAAA,cATJ,uBAAQH,KAAAA,OAAO,eAAeA,KAAAA,OAAO,YAAY,CAAA;AAAA,cAClD,WAAQ;AAAA,cACP,SAAK,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,CAAA,WAAE,aAAa,MAAM;AAAA,YAAA;cAE3BQ,YAIE,SAAA;AAAA,gBAHC,OAAKH,eAAA,CAAGL,KAAAA,OAAO,sBAAsB,KAAA,CAAI,CAAA;AAAA,gBACzC,MAAM,QAAA,QAAK,KAAA;AAAA,gBACZ,MAAK;AAAA,cAAA;;;UAKHD,MAAA,UAAA,kBADRK,mBAKW,YAAA;AAAA;YAHR,OAAKC,eAAEL,KAAAA,OAAO,QAAQ;AAAA,UAAA;YAEvBG,mBAAqC,UAAA;AAAA,cAA5B,gCAAiBJ,MAAA,KAAA,GAAK;AAAA,YAAA;;;QAGxB,iBACT,MAiBwB;AAAA,UAjBxBS,YAiBwBE,aAAA;AAAA,qBAhBlB;AAAA,YAAJ,KAAI;AAAA,YACI,iBAAeX,MAAA,YAAA;AAAA,mGAAA,aAAY,QAAA,SAAA;AAAA,YAC3B,iBAAeA,MAAA,YAAA;AAAA,mGAAA,aAAY,QAAA,SAAA;AAAA,YAC3B,iBAAeA,MAAA,YAAA;AAAA,mGAAA,aAAY,QAAA,SAAA;AAAA,YAC3B,mBAAiBA,MAAA,cAAA;AAAA,uGAAA,eAAc,QAAA,SAAA;AAAA,YAC/B,mBAAiBA,MAAA,cAAA;AAAA,uGAAA,eAAc,QAAA,SAAA;AAAA,YAC/B,wBAAsBA,MAAA,mBAAA;AAAA,iHAAA,oBAAmB,QAAA,SAAA;AAAA,YACzC,kBAAgBA,MAAA,aAAA;AAAA,qGAAA,cAAa,QAAA,SAAA;AAAA,YAC7B,qBAAmBA,MAAA,gBAAA;AAAA,2GAAA,iBAAgB,QAAA,SAAA;AAAA,YACnC,sBAAoBA,MAAA,gBAAA;AAAA,2GAAA,iBAAgB,QAAA,SAAA;AAAA,YAC3C,UAAU,QAAA;AAAA,YACV,YAAUA,MAAA,cAAA;AAAA,YACV,YAAUA,MAAA,cAAA;AAAA,YACV,kDAASA,MAAA,MAAA,EAAA;AAAA,UAAM;6BAEhB,MAA4B;AAAA,cAA5BY,WAA4B,KAAA,QAAA,cAAA;AAAA,YAAA;;;;;;;;;"}
@@ -1,4 +1,4 @@
1
- import { defineComponent, mergeModels, useModel, createElementBlock, openBlock, createVNode, createElementVNode, renderSlot, withCtx, unref } from "vue";
1
+ import { defineComponent, useModel, openBlock, createElementBlock, createVNode, createElementVNode, withCtx, unref, renderSlot, mergeModels } from "vue";
2
2
  import RuiButton from "../buttons/button/RuiButton.vue.js";
3
3
  import _sfc_main$1 from "../calendar/RuiCalendar.vue.js";
4
4
  /* empty css */
@@ -1,4 +1,5 @@
1
- import { defineComponent, createElementBlock, openBlock, mergeProps } from "vue";
1
+ import { defineComponent, openBlock, createElementBlock, mergeProps } from "vue";
2
+ const _hoisted_1 = ["aria-orientation"];
2
3
  const _sfc_main = /* @__PURE__ */ defineComponent({
3
4
  ...{
4
5
  name: "RuiDivider",
@@ -11,8 +12,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
11
12
  setup(__props) {
12
13
  return (_ctx, _cache) => {
13
14
  return openBlock(), createElementBlock("div", mergeProps({
14
- class: [__props.vertical ? "border-l" : "border-t", "border-default"]
15
- }, _ctx.$attrs), null, 16);
15
+ class: [__props.vertical ? "border-l" : "border-t", "border-default"],
16
+ role: "separator",
17
+ "aria-orientation": __props.vertical ? "vertical" : "horizontal"
18
+ }, _ctx.$attrs), null, 16, _hoisted_1);
16
19
  };
17
20
  }
18
21
  });
@@ -1 +1 @@
1
- {"version":3,"file":"RuiDivider.vue.js","sources":["../../../src/components/divider/RuiDivider.vue"],"sourcesContent":["<script setup lang=\"ts\">\nexport interface Props {\n vertical?: boolean;\n}\n\ndefineOptions({\n name: 'RuiDivider',\n inheritAttrs: false,\n});\n\nwithDefaults(defineProps<Props>(), {\n vertical: false,\n});\n</script>\n\n<template>\n <div\n :class=\"vertical ? 'border-l' : 'border-t'\"\n class=\"border-default\"\n v-bind=\"$attrs\"\n />\n</template>\n"],"names":["_openBlock","_createElementBlock","_mergeProps","$attrs"],"mappings":";;;;;;;;;;;;AAgBE,aAAAA,UAAA,GAAAC,mBAIE,OAJFC,WAIE;AAAA,QAHC,OAAK,CAAE,QAAA,WAAQ,aAAA,YACV,gBAAgB;AAAA,MAAA,GACdC,KAAAA,MAAM,GAAA,MAAA,EAAA;AAAA;;;"}
1
+ {"version":3,"file":"RuiDivider.vue.js","sources":["../../../src/components/divider/RuiDivider.vue"],"sourcesContent":["<script setup lang=\"ts\">\nexport interface Props {\n vertical?: boolean;\n}\n\ndefineOptions({\n name: 'RuiDivider',\n inheritAttrs: false,\n});\n\nwithDefaults(defineProps<Props>(), {\n vertical: false,\n});\n</script>\n\n<template>\n <div\n :class=\"vertical ? 'border-l' : 'border-t'\"\n class=\"border-default\"\n role=\"separator\"\n :aria-orientation=\"vertical ? 'vertical' : 'horizontal'\"\n v-bind=\"$attrs\"\n />\n</template>\n"],"names":["_openBlock","_createElementBlock","_mergeProps","$attrs"],"mappings":";;;;;;;;;;;;;AAgBE,aAAAA,UAAA,GAAAC,mBAME,OANFC,WAME;AAAA,QALC,OAAK,CAAE,QAAA,WAAQ,aAAA,YACV,gBAAgB;AAAA,QACtB,MAAK;AAAA,QACJ,oBAAkB,QAAA,WAAQ,aAAA;AAAA,MAAA,GACnBC,KAAAA,MAAM,GAAA,MAAA,IAAA,UAAA;AAAA;;;"}