niuma-ui 2.0.3 → 2.0.4

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 (202) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/dist/components/_shared/src/reka.d.ts +1 -1
  3. package/dist/components/_shared/src/reka.js +2 -2
  4. package/dist/components/anchor/index.d.ts +1 -1
  5. package/dist/components/anchor/src/RsAnchor.css +63 -32
  6. package/dist/components/anchor/src/RsAnchor.d.ts +29 -2
  7. package/dist/components/anchor/src/RsAnchor.impl.js +199 -81
  8. package/dist/components/anchor/src/RsAnchor.js +1 -1
  9. package/dist/components/anchor/src/anchor-utils.d.ts +36 -4
  10. package/dist/components/anchor/src/anchor-utils.js +81 -19
  11. package/dist/components/auto-complete/index.d.ts +2 -0
  12. package/dist/components/auto-complete/src/RsAutoComplete.css +122 -0
  13. package/dist/components/auto-complete/src/RsAutoComplete.d.ts +47 -7
  14. package/dist/components/auto-complete/src/RsAutoComplete.impl.js +180 -72
  15. package/dist/components/auto-complete/src/RsAutoComplete.js +4 -1
  16. package/dist/components/auto-complete/src/auto-complete-utils.d.ts +7 -0
  17. package/dist/components/auto-complete/src/auto-complete-utils.js +17 -0
  18. package/dist/components/avatar/index.d.ts +1 -0
  19. package/dist/components/avatar/src/RsAvatar.css +36 -19
  20. package/dist/components/avatar/src/RsAvatar.d.ts +9 -3
  21. package/dist/components/avatar/src/RsAvatar.impl.js +57 -33
  22. package/dist/components/avatar/src/RsAvatar.js +2 -1
  23. package/dist/components/avatar/src/avatar-utils.d.ts +16 -7
  24. package/dist/components/avatar/src/avatar-utils.js +41 -3
  25. package/dist/components/breadcrumb/index.d.ts +1 -1
  26. package/dist/components/breadcrumb/src/RsBreadcrumb.css +50 -17
  27. package/dist/components/breadcrumb/src/RsBreadcrumb.d.ts +45 -6
  28. package/dist/components/breadcrumb/src/RsBreadcrumb.impl.js +111 -12
  29. package/dist/components/breadcrumb/src/RsBreadcrumb.js +2 -1
  30. package/dist/components/breadcrumb/src/breadcrumb-utils.d.ts +37 -5
  31. package/dist/components/breadcrumb/src/breadcrumb-utils.js +70 -9
  32. package/dist/components/calendar-grid/index.d.ts +2 -0
  33. package/dist/components/calendar-grid/src/RsCalendarGrid.css +105 -45
  34. package/dist/components/calendar-grid/src/RsCalendarGrid.d.ts +62 -2
  35. package/dist/components/calendar-grid/src/RsCalendarGrid.impl.js +265 -94
  36. package/dist/components/calendar-grid/src/RsCalendarGrid.js +1 -1
  37. package/dist/components/calendar-grid/src/calendar-grid-utils.d.ts +72 -0
  38. package/dist/components/calendar-grid/src/calendar-grid-utils.js +122 -0
  39. package/dist/components/card/index.d.ts +1 -1
  40. package/dist/components/card/src/RsCard.css +108 -98
  41. package/dist/components/card/src/RsCard.d.ts +3 -12
  42. package/dist/components/card/src/RsCard.impl.js +29 -25
  43. package/dist/components/card/src/RsCard.js +2 -1
  44. package/dist/components/card/src/card-utils.d.ts +25 -0
  45. package/dist/components/card/src/card-utils.js +10 -0
  46. package/dist/components/cascader/index.d.ts +1 -0
  47. package/dist/components/cascader/src/RsCascader.css +175 -30
  48. package/dist/components/cascader/src/RsCascader.d.ts +15 -3
  49. package/dist/components/cascader/src/RsCascader.impl.js +277 -48
  50. package/dist/components/cascader/src/RsCascader.js +1 -1
  51. package/dist/components/cascader/src/cascader-utils.d.ts +2 -0
  52. package/dist/components/cascader/src/cascader-utils.js +8 -1
  53. package/dist/components/checkbox/index.d.ts +1 -0
  54. package/dist/components/checkbox/src/RsCheckbox.css +46 -23
  55. package/dist/components/checkbox/src/RsCheckbox.d.ts +11 -1
  56. package/dist/components/checkbox/src/RsCheckbox.impl.js +37 -9
  57. package/dist/components/checkbox/src/RsCheckbox.js +2 -1
  58. package/dist/components/checkbox/src/checkbox-utils.d.ts +4 -0
  59. package/dist/components/checkbox/src/checkbox-utils.js +12 -0
  60. package/dist/components/container/index.d.ts +1 -1
  61. package/dist/components/container/src/RsContainer.css +11 -11
  62. package/dist/components/container/src/RsContainer.d.ts +2 -12
  63. package/dist/components/container/src/RsContainer.impl.js +10 -57
  64. package/dist/components/container/src/RsContainer.js +1 -1
  65. package/dist/components/container/src/container-utils.d.ts +23 -0
  66. package/dist/components/container/src/container-utils.js +51 -0
  67. package/dist/components/date-picker/index.d.ts +4 -2
  68. package/dist/components/date-picker/src/RsDatePicker.css +42 -22
  69. package/dist/components/date-picker/src/RsDatePicker.d.ts +44 -20
  70. package/dist/components/date-picker/src/RsDatePicker.impl.js +484 -222
  71. package/dist/components/date-picker/src/RsDatePicker.js +1 -3
  72. package/dist/components/date-picker/src/RsDateTimePicker.d.ts +33 -6
  73. package/dist/components/date-picker/src/RsDateTimePicker.impl.js +47 -6
  74. package/dist/components/date-picker/src/date-picker-utils.d.ts +19 -0
  75. package/dist/components/date-picker/src/date-picker-utils.js +33 -10
  76. package/dist/components/dynamic-tags/index.d.ts +1 -1
  77. package/dist/components/dynamic-tags/src/RsDynamicTags.css +115 -38
  78. package/dist/components/dynamic-tags/src/RsDynamicTags.d.ts +58 -17
  79. package/dist/components/dynamic-tags/src/RsDynamicTags.impl.js +269 -106
  80. package/dist/components/dynamic-tags/src/RsDynamicTags.js +1 -1
  81. package/dist/components/dynamic-tags/src/dynamic-tags-utils.d.ts +19 -0
  82. package/dist/components/dynamic-tags/src/dynamic-tags-utils.js +60 -0
  83. package/dist/components/fieldset/src/RsFieldset.css +71 -41
  84. package/dist/components/fieldset/src/RsFieldset.d.ts +21 -2
  85. package/dist/components/fieldset/src/RsFieldset.impl.js +93 -26
  86. package/dist/components/fieldset/src/RsFieldset.js +1 -1
  87. package/dist/components/fieldset/src/fieldset-utils.d.ts +4 -0
  88. package/dist/components/fieldset/src/fieldset-utils.js +9 -1
  89. package/dist/components/form/index.d.ts +1 -0
  90. package/dist/components/form/src/RsForm.css +15 -12
  91. package/dist/components/form/src/RsForm.d.ts +20 -22
  92. package/dist/components/form/src/RsForm.impl.js +33 -20
  93. package/dist/components/form/src/RsForm.js +1 -1
  94. package/dist/components/form/src/form-utils.d.ts +7 -0
  95. package/dist/components/form/src/form-utils.js +28 -1
  96. package/dist/components/input/index.d.ts +1 -1
  97. package/dist/components/input/src/RsInput.css +78 -260
  98. package/dist/components/input/src/RsInput.d.ts +5 -3
  99. package/dist/components/input/src/RsInput.impl.js +8 -16
  100. package/dist/components/input/src/RsInput.js +1 -1
  101. package/dist/components/input/src/input-utils.d.ts +11 -0
  102. package/dist/components/input/src/input-utils.js +22 -0
  103. package/dist/components/input-number/index.d.ts +1 -0
  104. package/dist/components/input-number/src/RsInputNumber.css +31 -31
  105. package/dist/components/input-number/src/RsInputNumber.d.ts +15 -13
  106. package/dist/components/input-number/src/RsInputNumber.impl.js +17 -4
  107. package/dist/components/input-number/src/RsInputNumber.js +1 -1
  108. package/dist/components/label/src/RsLabel.css +30 -11
  109. package/dist/components/label/src/RsLabel.d.ts +18 -1
  110. package/dist/components/label/src/RsLabel.impl.js +63 -10
  111. package/dist/components/label/src/RsLabel.js +1 -1
  112. package/dist/components/label/src/label-utils.d.ts +6 -0
  113. package/dist/components/label/src/label-utils.js +16 -0
  114. package/dist/components/link/src/RsLink.d.ts +2 -2
  115. package/dist/components/loading/src/RsLoading.d.ts +1 -1
  116. package/dist/components/mentions/index.d.ts +2 -1
  117. package/dist/components/mentions/src/RsMentions.css +119 -3
  118. package/dist/components/mentions/src/RsMentions.d.ts +56 -4
  119. package/dist/components/mentions/src/RsMentions.impl.js +298 -79
  120. package/dist/components/mentions/src/RsMentions.js +1 -3
  121. package/dist/components/mentions/src/mentions-utils.d.ts +5 -1
  122. package/dist/components/mentions/src/mentions-utils.js +28 -9
  123. package/dist/components/popover/src/RsPopover.d.ts +1 -1
  124. package/dist/components/radio/index.d.ts +1 -1
  125. package/dist/components/radio/src/RsRadio.css +7 -6
  126. package/dist/components/radio/src/RsRadio.d.ts +8 -5
  127. package/dist/components/radio/src/RsRadio.impl.js +34 -24
  128. package/dist/components/radio/src/RsRadio.js +2 -1
  129. package/dist/components/radio/src/RsRadioItem.css +61 -44
  130. package/dist/components/radio/src/RsRadioItem.d.ts +2 -2
  131. package/dist/components/radio/src/RsRadioItem.impl.js +53 -20
  132. package/dist/components/radio/src/RsRadioItem.js +2 -1
  133. package/dist/components/radio/src/radio-utils.d.ts +12 -1
  134. package/dist/components/radio/src/radio-utils.js +15 -1
  135. package/dist/components/scrollbar/src/RsScrollbar.css +71 -24
  136. package/dist/components/scrollbar/src/RsScrollbar.d.ts +9 -5
  137. package/dist/components/scrollbar/src/RsScrollbar.impl.js +372 -47
  138. package/dist/components/scrollbar/src/RsScrollbar.js +2 -1
  139. package/dist/components/scrollbar/src/scrollbar-utils.d.ts +34 -2
  140. package/dist/components/scrollbar/src/scrollbar-utils.js +64 -1
  141. package/dist/components/select/index.d.ts +1 -0
  142. package/dist/components/select/src/RsSelect.css +54 -42
  143. package/dist/components/select/src/RsSelect.d.ts +19 -2
  144. package/dist/components/select/src/RsSelect.impl.js +727 -312
  145. package/dist/components/select/src/RsSelect.js +1 -1
  146. package/dist/components/select/src/select-utils.d.ts +4 -2
  147. package/dist/components/select/src/select-utils.js +8 -3
  148. package/dist/components/select/src/use-rs-select.d.ts +1 -0
  149. package/dist/components/select/src/use-rs-select.js +23 -17
  150. package/dist/components/switch/index.d.ts +2 -1
  151. package/dist/components/switch/src/RsSwitch.css +36 -18
  152. package/dist/components/switch/src/RsSwitch.d.ts +18 -5
  153. package/dist/components/switch/src/RsSwitch.impl.js +61 -29
  154. package/dist/components/switch/src/RsSwitch.js +2 -1
  155. package/dist/components/switch/src/switch-utils.d.ts +4 -0
  156. package/dist/components/switch/src/switch-utils.js +9 -0
  157. package/dist/components/textarea/src/RsTextarea.css +23 -23
  158. package/dist/components/textarea/src/RsTextarea.d.ts +6 -12
  159. package/dist/components/textarea/src/RsTextarea.impl.js +37 -46
  160. package/dist/components/textarea/src/RsTextarea.js +1 -1
  161. package/dist/components/textarea/src/textarea-utils.d.ts +27 -0
  162. package/dist/components/textarea/src/textarea-utils.js +61 -0
  163. package/dist/components/time-picker/index.d.ts +3 -2
  164. package/dist/components/time-picker/src/RsTimePicker.css +41 -24
  165. package/dist/components/time-picker/src/RsTimePicker.d.ts +52 -7
  166. package/dist/components/time-picker/src/RsTimePicker.impl.js +520 -156
  167. package/dist/components/time-picker/src/RsTimePicker.js +1 -3
  168. package/dist/components/time-picker/src/RsTimePickerColumns.css +26 -18
  169. package/dist/components/time-picker/src/RsTimePickerColumns.d.ts +3 -1
  170. package/dist/components/time-picker/src/RsTimePickerColumns.impl.js +62 -9
  171. package/dist/components/time-picker/src/RsTimePickerColumns.js +1 -1
  172. package/dist/components/time-picker/src/time-picker-utils.d.ts +38 -0
  173. package/dist/components/time-picker/src/time-picker-utils.js +97 -5
  174. package/dist/components/toaster/src/RsToaster.d.ts +1 -1
  175. package/dist/components/tooltip/src/RsTooltip.d.ts +1 -1
  176. package/dist/components/tree/src/RsTree.d.ts +3 -3
  177. package/dist/components/tree-select/index.d.ts +2 -0
  178. package/dist/components/tree-select/src/RsTreeSelect.css +100 -25
  179. package/dist/components/tree-select/src/RsTreeSelect.d.ts +91 -7
  180. package/dist/components/tree-select/src/RsTreeSelect.impl.js +464 -79
  181. package/dist/components/tree-select/src/RsTreeSelect.js +1 -1
  182. package/dist/components/tree-select/src/tree-select-utils.d.ts +20 -0
  183. package/dist/components/tree-select/src/tree-select-utils.js +60 -0
  184. package/dist/components/upload/index.d.ts +2 -1
  185. package/dist/components/upload/src/RsUpload.css +223 -75
  186. package/dist/components/upload/src/RsUpload.d.ts +77 -1
  187. package/dist/components/upload/src/RsUpload.impl.js +404 -90
  188. package/dist/components/upload/src/RsUpload.js +1 -1
  189. package/dist/components/upload/src/upload-utils.d.ts +21 -2
  190. package/dist/components/upload/src/upload-utils.js +139 -9
  191. package/dist/index.d.ts +21 -11
  192. package/dist/index.js +6 -0
  193. package/dist/locale/messages.js +46 -2
  194. package/dist/styles.css +518 -154
  195. package/dist/theme/brand.example.css +1 -1
  196. package/package.json +1 -1
  197. package/dist/components/breadcrumb/src/RsBreadcrumbItems.d.ts +0 -8
  198. package/dist/components/breadcrumb/src/RsBreadcrumbItems.impl.js +0 -40
  199. package/dist/components/breadcrumb/src/RsBreadcrumbItems.js +0 -5
  200. package/dist/components/date-picker/src/RsDatePicker-1.css +0 -157
  201. package/dist/components/mentions/src/RsMentions-1.css +0 -29
  202. package/dist/components/time-picker/src/RsTimePicker-1.css +0 -98
@@ -1,74 +1,85 @@
1
1
  import { RS_COMPONENT_SIZE_ICON_PX } from "../../../theme/types.js";
2
- import { PopoverContent, PopoverPortal, PopoverRoot, PopoverTrigger } from "../../_shared/src/reka.js";
3
2
  import { useRsI18n } from "../../../composables/useRsI18n.js";
4
3
  import RsIcon_default from "../../icon/src/RsIcon.js";
5
4
  import { buildLocalInputRules, runFormFieldRules } from "../../form/src/form-rules.js";
6
5
  import { isRsFormItemBoundControl, useRsFormContext, useRsFormField, useRsFormItemContext } from "../../form/src/form-utils.js";
7
6
  import { useResolvedRsComponentSize } from "../../_shared/src/resolve-size.js";
8
- import { EMPTY_DATE_RANGE, compareDates, extractTimeFromDateTime, formatDateDisplay, formatDateParts, formatDateRangeLabel, formatDateTimeDisplay, formatDateTimeParts, formatDateTimeRangeLabel, formatTimestampValue, fromInternalPickerValue, getNextMonth, getNowDateTime, getTodayDate, isDateRangeEmpty, isDateRangeOrdered, isDateWithinBounds, isTimestampRange, normalizeShortcutValue, parseDateTimeValue, parseDateValue, parseTimestampValue, toInternalPickerValue, toRangeEndpointString } from "./date-picker-utils.js";
7
+ import { rsRadiusCss, useResolvedRsRadius } from "../../_shared/src/resolve-radius.js";
8
+ import RsButton_default from "../../button/src/RsButton.js";
9
+ import { placeAnchoredPopup } from "../../_shared/src/overlay-utils.js";
10
+ import { EMPTY_DATE_RANGE, compareDates, extractTimeFromDateTime, formatDateParts, formatDateTimeParts, formatPickerDisplay, formatTimestampValue, fromInternalPickerValue, getNextMonth, getNowDateTime, getTodayDate, isDateRangeEmpty, isDateRangeOrdered, isDateWithinBounds, isTimestampRange, normalizeShortcutValue, parseDateTimeValue, parseDateValue, parseTimestampValue, resolveDatePickerPortalTarget, resolveWeekStartsOn, toInternalPickerValue, toRangeEndpointString } from "./date-picker-utils.js";
9
11
  import RsCalendarGrid_default from "../../calendar-grid/src/RsCalendarGrid.js";
10
- import { formatTimeParts } from "../../time-picker/src/time-picker-utils.js";
12
+ import { containOverlayWheel, formatTimeParts, isTimeColumnScrollTarget } from "../../time-picker/src/time-picker-utils.js";
11
13
  import RsTimePicker_default from "../../time-picker/src/RsTimePicker.js";
12
- import { Fragment, computed, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, mergeModels, mergeProps, normalizeClass, openBlock, ref, renderList, toDisplayString, unref, useAttrs, useId, useModel, watch, withCtx } from "vue";
14
+ import { Fragment, Teleport, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, mergeModels, mergeProps, nextTick, normalizeClass, normalizeStyle, onBeforeUnmount, openBlock, ref, renderList, toDisplayString, unref, useAttrs, useId, useModel, useTemplateRef, watch, withModifiers } from "vue";
13
15
  //#region src/components/date-picker/src/RsDatePicker.vue?vue&type=script&setup=true&lang.ts
14
- var _hoisted_1 = {
16
+ var _hoisted_1 = ["for"];
17
+ var _hoisted_2 = {
15
18
  key: 0,
16
- class: "rs-field__label"
17
- };
18
- var _hoisted_2 = ["for"];
19
- var _hoisted_3 = {
20
- key: 2,
21
19
  class: "rs-field__required",
22
20
  "aria-hidden": "true"
23
21
  };
22
+ var _hoisted_3 = [
23
+ "id",
24
+ "disabled",
25
+ "aria-invalid",
26
+ "aria-label",
27
+ "aria-expanded",
28
+ "aria-controls",
29
+ "aria-readonly"
30
+ ];
24
31
  var _hoisted_4 = { class: "rs-date-picker__leading" };
25
32
  var _hoisted_5 = { class: "rs-date-picker__value" };
26
- var _hoisted_6 = {
27
- key: 0,
28
- class: "rs-date-picker__panel"
29
- };
30
- var _hoisted_7 = {
33
+ var _hoisted_6 = [
34
+ "id",
35
+ "data-placement",
36
+ "data-rs-theme",
37
+ "aria-label"
38
+ ];
39
+ var _hoisted_7 = { class: "rs-date-picker__panel" };
40
+ var _hoisted_8 = {
31
41
  key: 0,
32
42
  class: "rs-date-picker__range-grid"
33
43
  };
34
- var _hoisted_8 = { class: "rs-date-picker__range-pane" };
35
- var _hoisted_9 = { class: "rs-date-picker__pane-title" };
36
- var _hoisted_10 = {
44
+ var _hoisted_9 = { class: "rs-date-picker__range-pane" };
45
+ var _hoisted_10 = { class: "rs-date-picker__pane-title" };
46
+ var _hoisted_11 = {
37
47
  key: 0,
38
48
  class: "rs-date-picker__time-row"
39
49
  };
40
- var _hoisted_11 = { class: "rs-date-picker__time-label" };
41
- var _hoisted_12 = { class: "rs-date-picker__range-pane" };
42
- var _hoisted_13 = { class: "rs-date-picker__pane-title" };
43
- var _hoisted_14 = {
50
+ var _hoisted_12 = { class: "rs-date-picker__time-label" };
51
+ var _hoisted_13 = { class: "rs-date-picker__range-pane" };
52
+ var _hoisted_14 = { class: "rs-date-picker__pane-title" };
53
+ var _hoisted_15 = {
44
54
  key: 0,
45
55
  class: "rs-date-picker__time-row"
46
56
  };
47
- var _hoisted_15 = { class: "rs-date-picker__time-label" };
48
- var _hoisted_16 = {
57
+ var _hoisted_16 = { class: "rs-date-picker__time-label" };
58
+ var _hoisted_17 = {
49
59
  key: 0,
50
60
  class: "rs-date-picker__time-row"
51
61
  };
52
- var _hoisted_17 = { class: "rs-date-picker__time-label" };
53
- var _hoisted_18 = { class: "rs-date-picker__footer" };
54
- var _hoisted_19 = { class: "rs-date-picker__footer-start" };
55
- var _hoisted_20 = {
62
+ var _hoisted_18 = { class: "rs-date-picker__time-label" };
63
+ var _hoisted_19 = { class: "rs-date-picker__footer" };
64
+ var _hoisted_20 = { class: "rs-date-picker__footer-start" };
65
+ var _hoisted_21 = {
56
66
  key: 0,
57
67
  class: "rs-date-picker__shortcuts"
58
68
  };
59
- var _hoisted_21 = ["disabled", "onClick"];
60
- var _hoisted_22 = { class: "rs-date-picker__actions" };
61
- var _hoisted_23 = ["disabled"];
62
- var _hoisted_24 = {
69
+ var _hoisted_22 = ["disabled", "onClick"];
70
+ var _hoisted_23 = { class: "rs-date-picker__actions" };
71
+ var _hoisted_24 = ["disabled"];
72
+ var _hoisted_25 = {
63
73
  key: 1,
64
74
  class: "rs-date-picker-field__error",
65
75
  role: "alert"
66
76
  };
67
- var _hoisted_25 = {
77
+ var _hoisted_26 = {
68
78
  key: 2,
69
79
  class: "rs-field__hint"
70
80
  };
71
81
  var RsDatePicker_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
82
+ name: "RsDatePicker",
72
83
  inheritAttrs: false,
73
84
  __name: "RsDatePicker",
74
85
  props: /*@__PURE__*/ mergeModels({
@@ -96,15 +107,30 @@ var RsDatePicker_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ def
96
107
  },
97
108
  withSeconds: { type: Boolean },
98
109
  valueFormat: { default: "string" },
110
+ format: {},
99
111
  labelPosition: { default: "top" },
100
112
  shortcuts: {},
101
113
  size: {},
114
+ radius: {},
102
115
  id: {},
103
116
  invalid: { type: Boolean },
104
117
  showValidateMessage: {
105
118
  type: Boolean,
106
119
  default: true
107
- }
120
+ },
121
+ clearable: {
122
+ type: Boolean,
123
+ default: false
124
+ },
125
+ readonly: {
126
+ type: Boolean,
127
+ default: false
128
+ },
129
+ ariaLabel: {},
130
+ weekStartsOn: {},
131
+ disabledDates: { default: () => [] },
132
+ disabledDate: {},
133
+ getPopupContainer: {}
108
134
  }, {
109
135
  "modelValue": { default: "" },
110
136
  "modelModifiers": {},
@@ -114,21 +140,32 @@ var RsDatePicker_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ def
114
140
  },
115
141
  "openModifiers": {}
116
142
  }),
117
- emits: ["update:modelValue", "update:open"],
118
- setup(__props, { expose: __expose }) {
143
+ emits: /*@__PURE__*/ mergeModels([
144
+ "change",
145
+ "openChange",
146
+ "clear",
147
+ "focus",
148
+ "blur"
149
+ ], ["update:modelValue", "update:open"]),
150
+ setup(__props, { expose: __expose, emit: __emit }) {
119
151
  function isRangeModel(value) {
120
152
  return typeof value === "object" && value !== null && !Array.isArray(value) && ("start" in value || "end" in value);
121
153
  }
122
154
  const model = useModel(__props, "modelValue");
123
155
  const open = useModel(__props, "open");
124
156
  const props = __props;
125
- const fieldId = useId();
157
+ const emit = __emit;
158
+ const fallbackId = useId();
159
+ const panelId = useId();
126
160
  const attrs = useAttrs();
127
- const { t } = useRsI18n();
161
+ const { t, locale } = useRsI18n();
128
162
  const resolvedSize = useResolvedRsComponentSize(() => props.size);
163
+ const resolvedRadius = useResolvedRsRadius(() => props.radius, "sm");
129
164
  const triggerIconSize = computed(() => RS_COMPONENT_SIZE_ICON_PX[resolvedSize.value]);
165
+ const clearIconSize = computed(() => Math.max(12, triggerIconSize.value - 2));
130
166
  /** withTime 默认带秒;显式 withSeconds 优先(勿与 prop 同名,避免模板取到未传 prop) */
131
167
  const resolvedWithSeconds = computed(() => props.withSeconds !== void 0 ? props.withSeconds : props.withTime);
168
+ const resolvedWeekStartsOn = computed(() => resolveWeekStartsOn(locale.value, props.weekStartsOn));
132
169
  const formContext = useRsFormContext();
133
170
  const formItem = useRsFormItemContext();
134
171
  const boundToItem = computed(() => isRsFormItemBoundControl(formItem, {
@@ -137,14 +174,27 @@ var RsDatePicker_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ def
137
174
  }));
138
175
  const autoMessage = ref("");
139
176
  const isInvalid = computed(() => Boolean(props.invalid || boundToItem.value && formItem?.invalid.value || !boundToItem.value && autoMessage.value));
140
- const triggerId = computed(() => props.id || fieldId);
177
+ const triggerId = computed(() => props.id || fallbackId);
141
178
  const visibleMessage = computed(() => boundToItem.value || props.showValidateMessage === false ? "" : autoMessage.value);
142
- const viewYear = ref(getTodayDate().year);
143
- const viewMonth = ref(getTodayDate().month);
144
- const startViewYear = ref(getTodayDate().year);
145
- const startViewMonth = ref(getTodayDate().month);
146
- const endViewYear = ref(getTodayDate().year);
147
- const endViewMonth = ref(getTodayDate().month);
179
+ const resolvedDisabled = computed(() => props.disabled || Boolean(formContext?.disabled.value));
180
+ const canInteract = computed(() => !resolvedDisabled.value && !props.readonly);
181
+ const rootRef = useTemplateRef("rootRef");
182
+ const triggerRef = useTemplateRef("triggerRef");
183
+ const contentRef = useTemplateRef("contentRef");
184
+ const panelTheme = ref();
185
+ const popup = ref({
186
+ top: 0,
187
+ left: 0,
188
+ width: 0,
189
+ placement: "bottom"
190
+ });
191
+ const todaySeed = getTodayDate();
192
+ const viewYear = ref(todaySeed.year);
193
+ const viewMonth = ref(todaySeed.month);
194
+ const startViewYear = ref(todaySeed.year);
195
+ const startViewMonth = ref(todaySeed.month);
196
+ const endViewYear = ref(todaySeed.year);
197
+ const endViewMonth = ref(todaySeed.month);
148
198
  const draftDate = ref(null);
149
199
  const draftStart = ref(null);
150
200
  const draftEnd = ref(null);
@@ -203,20 +253,37 @@ var RsDatePicker_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ def
203
253
  return formatDateParts(draftStart.value);
204
254
  });
205
255
  const isEmpty = computed(() => props.range ? isDateRangeEmpty(rangeModel.value) : !singleModel.value);
256
+ const displayOptions = computed(() => ({
257
+ format: props.format,
258
+ withTime: props.withTime
259
+ }));
206
260
  const displayValue = computed(() => {
207
261
  if (props.range) {
208
- const formatted = props.withTime ? formatDateTimeRangeLabel(rangeModel.value, t("datePicker.separator")) : formatDateRangeLabel(rangeModel.value, t("datePicker.separator"));
209
- if (formatted) return formatted;
262
+ const start = formatPickerDisplay(rangeModel.value.start, displayOptions.value);
263
+ const end = formatPickerDisplay(rangeModel.value.end, displayOptions.value);
264
+ if (start || end) {
265
+ const separator = t("datePicker.separator");
266
+ if (start && end) return `${start}${separator}${end}`;
267
+ return start || end;
268
+ }
210
269
  if (props.placeholder) return props.placeholder;
211
270
  return props.withTime ? t("dateTimePicker.rangePlaceholder") : t("datePicker.rangePlaceholder");
212
271
  }
213
272
  if (!singleModel.value) return props.placeholder ?? (props.withTime ? t("dateTimePicker.placeholder") : t("datePicker.placeholder"));
214
- return props.withTime ? formatDateTimeDisplay(singleModel.value) : formatDateDisplay(singleModel.value);
273
+ return formatPickerDisplay(singleModel.value, displayOptions.value);
215
274
  });
216
275
  const triggerIcon = computed(() => {
217
276
  if (props.range || props.withTime) return "calendar-clock";
218
277
  return "calendar-days";
219
278
  });
279
+ const showClear = computed(() => props.clearable && !isEmpty.value && canInteract.value);
280
+ const portalTarget = computed(() => resolveDatePickerPortalTarget(props.getPopupContainer, triggerRef.value));
281
+ const panelStyle = computed(() => ({
282
+ top: `${popup.value.top}px`,
283
+ left: `${popup.value.left}px`,
284
+ "--rs-date-picker-radius": rsRadiusCss(resolvedRadius.value)
285
+ }));
286
+ const rootStyle = computed(() => ({ "--rs-date-picker-radius": rsRadiusCss(resolvedRadius.value) }));
220
287
  function currentTimeValue() {
221
288
  const now = getNowDateTime();
222
289
  return formatTimeParts(now.hour, now.minute, resolvedWithSeconds.value ? now.second : void 0);
@@ -334,6 +401,9 @@ var RsDatePicker_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ def
334
401
  }
335
402
  syncSingleDraft();
336
403
  }
404
+ function emitChange() {
405
+ emit("change", model.value);
406
+ }
337
407
  function confirmSingleSelection() {
338
408
  if (!draftDate.value) return;
339
409
  if (props.withTime) {
@@ -341,6 +411,7 @@ var RsDatePicker_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ def
341
411
  if (!combined) return;
342
412
  singleModel.value = combined;
343
413
  open.value = false;
414
+ emitChange();
344
415
  return;
345
416
  }
346
417
  if (!isDateWithinBounds(draftDate.value.year, draftDate.value.month, draftDate.value.day, {
@@ -349,6 +420,7 @@ var RsDatePicker_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ def
349
420
  })) return;
350
421
  singleModel.value = formatDateParts(draftDate.value);
351
422
  open.value = false;
423
+ emitChange();
352
424
  }
353
425
  function confirmRangeSelection() {
354
426
  if (!draftStart.value || !draftEnd.value) return;
@@ -365,6 +437,7 @@ var RsDatePicker_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ def
365
437
  end
366
438
  };
367
439
  open.value = false;
440
+ emitChange();
368
441
  return;
369
442
  }
370
443
  const start = formatDateParts(draftStart.value);
@@ -385,6 +458,7 @@ var RsDatePicker_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ def
385
458
  end
386
459
  };
387
460
  open.value = false;
461
+ emitChange();
388
462
  }
389
463
  function confirmSelection() {
390
464
  if (props.range) {
@@ -394,7 +468,7 @@ var RsDatePicker_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ def
394
468
  confirmSingleSelection();
395
469
  }
396
470
  function applyShortcut(shortcut) {
397
- if (props.disabled) return;
471
+ if (!canInteract.value) return;
398
472
  const normalized = normalizeShortcutValue(shortcut.value(), { withTime: props.withTime });
399
473
  if (!normalized) return;
400
474
  if (props.range) {
@@ -406,11 +480,13 @@ var RsDatePicker_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ def
406
480
  if (!isDateRangeOrdered(rangeValue)) return;
407
481
  rangeModel.value = rangeValue;
408
482
  open.value = false;
483
+ emitChange();
409
484
  return;
410
485
  }
411
486
  if (typeof normalized !== "string") return;
412
487
  singleModel.value = normalized;
413
488
  open.value = false;
489
+ emitChange();
414
490
  }
415
491
  function clearSelection() {
416
492
  if (props.range) {
@@ -425,6 +501,8 @@ var RsDatePicker_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ def
425
501
  if (props.withTime) draftTime.value = currentTimeValue();
426
502
  }
427
503
  open.value = false;
504
+ emit("clear");
505
+ emitChange();
428
506
  }
429
507
  function selectToday() {
430
508
  const today = getTodayDate();
@@ -499,6 +577,121 @@ var RsDatePicker_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ def
499
577
  }
500
578
  model.value = value == null ? "" : value;
501
579
  }
580
+ function focus() {
581
+ triggerRef.value?.focus();
582
+ }
583
+ function blur() {
584
+ triggerRef.value?.blur();
585
+ }
586
+ function toggleOpen() {
587
+ if (!canInteract.value) return;
588
+ open.value = !open.value;
589
+ }
590
+ function onTriggerKeydown(event) {
591
+ if (!canInteract.value || event.isComposing) return;
592
+ if (event.key === "Escape" && open.value) {
593
+ event.preventDefault();
594
+ open.value = false;
595
+ return;
596
+ }
597
+ if (open.value) return;
598
+ if (event.key === "ArrowDown" || event.key === "ArrowUp") {
599
+ event.preventDefault();
600
+ open.value = true;
601
+ }
602
+ }
603
+ function syncPanelTheme() {
604
+ const el = triggerRef.value ?? rootRef.value;
605
+ if (!el) {
606
+ panelTheme.value = void 0;
607
+ return;
608
+ }
609
+ const themed = el.closest("[data-rs-theme]");
610
+ panelTheme.value = themed instanceof HTMLElement ? themed.dataset.rsTheme : void 0;
611
+ }
612
+ function placePopup() {
613
+ const trigger = triggerRef.value;
614
+ const content = contentRef.value;
615
+ if (!trigger || !open.value || typeof window === "undefined") return;
616
+ const anchor = trigger.getBoundingClientRect();
617
+ const measured = content?.getBoundingClientRect();
618
+ const prefWidth = props.range ? Math.max(anchor.width, measured?.width || Math.min(672, window.innerWidth - 32)) : Math.max(anchor.width, measured?.width || Math.min(320, window.innerWidth - 32));
619
+ popup.value = placeAnchoredPopup({
620
+ top: anchor.top,
621
+ left: anchor.left,
622
+ height: anchor.height,
623
+ width: anchor.width
624
+ }, {
625
+ width: prefWidth,
626
+ height: measured?.height || 320
627
+ }, {
628
+ width: window.innerWidth,
629
+ height: window.innerHeight
630
+ }, 6);
631
+ }
632
+ let frame = 0;
633
+ let overlayBound = false;
634
+ let openWatchReady = false;
635
+ let panelResize;
636
+ function requestPlace() {
637
+ if (typeof window === "undefined") return;
638
+ if (frame) return;
639
+ frame = window.requestAnimationFrame(() => {
640
+ frame = 0;
641
+ placePopup();
642
+ });
643
+ }
644
+ function onDocPointerDown(event) {
645
+ const target = event.target;
646
+ if (!(target instanceof Node)) return;
647
+ if (rootRef.value?.contains(target)) return;
648
+ if (contentRef.value?.contains(target)) return;
649
+ if (target instanceof Element) {
650
+ if (target.closest(".rs-time-picker__content")) return;
651
+ }
652
+ open.value = false;
653
+ }
654
+ function onWindowChange(event) {
655
+ if (!open.value) return;
656
+ if (event?.type === "scroll" && isTimeColumnScrollTarget(event.target)) return;
657
+ requestPlace();
658
+ }
659
+ function attachPanelObserver() {
660
+ if (typeof ResizeObserver === "undefined") return;
661
+ panelResize?.disconnect();
662
+ if (!contentRef.value) return;
663
+ panelResize = new ResizeObserver(() => requestPlace());
664
+ panelResize.observe(contentRef.value);
665
+ }
666
+ function attachPanelWheel() {
667
+ contentRef.value?.addEventListener("wheel", containOverlayWheel, { passive: false });
668
+ }
669
+ function detachPanelWheel() {
670
+ contentRef.value?.removeEventListener("wheel", containOverlayWheel);
671
+ }
672
+ function attachOverlay() {
673
+ if (overlayBound || typeof window === "undefined") return;
674
+ overlayBound = true;
675
+ if (typeof document !== "undefined") document.addEventListener("pointerdown", onDocPointerDown);
676
+ window.addEventListener("resize", onWindowChange);
677
+ window.addEventListener("scroll", onWindowChange, true);
678
+ }
679
+ function detachOverlay() {
680
+ detachPanelWheel();
681
+ panelResize?.disconnect();
682
+ panelResize = void 0;
683
+ if (frame && typeof window !== "undefined") {
684
+ window.cancelAnimationFrame(frame);
685
+ frame = 0;
686
+ }
687
+ if (!overlayBound) return;
688
+ overlayBound = false;
689
+ if (typeof document !== "undefined") document.removeEventListener("pointerdown", onDocPointerDown);
690
+ if (typeof window !== "undefined") {
691
+ window.removeEventListener("resize", onWindowChange);
692
+ window.removeEventListener("scroll", onWindowChange, true);
693
+ }
694
+ }
502
695
  async function runValidate(trigger = "submit") {
503
696
  const formRules = formContext?.getFieldRules(props.name) ?? [];
504
697
  const localRules = buildLocalInputRules({ required: props.required });
@@ -533,185 +726,254 @@ var RsDatePicker_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ def
533
726
  __expose({
534
727
  setValue: setFieldValue,
535
728
  clearValidation,
536
- validate: runValidate
729
+ setError: (message) => {
730
+ autoMessage.value = message;
731
+ },
732
+ validate: runValidate,
733
+ focus,
734
+ blur
537
735
  });
538
736
  watch(open, (isOpen) => {
539
- if (isOpen) syncDraftFromModel();
540
- if (!isOpen && props.name) runValidate("change");
737
+ const skipEvent = !openWatchReady;
738
+ openWatchReady = true;
739
+ if (typeof document === "undefined" || typeof window === "undefined") return;
740
+ if (isOpen) {
741
+ if (!canInteract.value) {
742
+ open.value = false;
743
+ return;
744
+ }
745
+ syncDraftFromModel();
746
+ syncPanelTheme();
747
+ attachOverlay();
748
+ nextTick(() => {
749
+ requestPlace();
750
+ attachPanelObserver();
751
+ attachPanelWheel();
752
+ });
753
+ if (!skipEvent) emit("openChange", true);
754
+ return;
755
+ }
756
+ detachOverlay();
757
+ if (!skipEvent) {
758
+ emit("openChange", false);
759
+ if (props.name) runValidate("change");
760
+ }
761
+ }, { immediate: true });
762
+ watch(resolvedDisabled, (disabled) => {
763
+ if (disabled && open.value) open.value = false;
541
764
  });
765
+ onBeforeUnmount(detachOverlay);
542
766
  return (_ctx, _cache) => {
543
- return openBlock(), createElementBlock("div", { class: normalizeClass(["rs-field", `rs-field--label-${__props.labelPosition}`]) }, [
544
- __props.label ? (openBlock(), createElementBlock("span", _hoisted_1, [__props.labelPosition === "left" ? (openBlock(), createElementBlock("label", {
767
+ return openBlock(), createElementBlock("div", {
768
+ ref_key: "rootRef",
769
+ ref: rootRef,
770
+ class: normalizeClass(["rs-field", [`rs-field--label-${__props.labelPosition}`, { "rs-date-picker-wrap--clearable": showClear.value }]]),
771
+ style: normalizeStyle(rootStyle.value)
772
+ }, [
773
+ __props.label ? (openBlock(), createElementBlock("label", {
774
+ key: 0,
775
+ class: "rs-field__label",
776
+ for: triggerId.value
777
+ }, [createTextVNode(toDisplayString(__props.label) + " ", 1), __props.required ? (openBlock(), createElementBlock("span", _hoisted_2, "*")) : createCommentVNode("", true)], 8, _hoisted_1)) : createCommentVNode("", true),
778
+ createElementVNode("div", { class: normalizeClass(["rs-date-picker", `rs-date-picker--${unref(resolvedSize)}`]) }, [createElementVNode("button", mergeProps(unref(attrs), {
779
+ id: triggerId.value,
780
+ ref_key: "triggerRef",
781
+ ref: triggerRef,
782
+ type: "button",
783
+ class: ["rs-date-picker__trigger", {
784
+ "rs-date-picker__trigger--placeholder": isEmpty.value,
785
+ "rs-date-picker__trigger--invalid": isInvalid.value
786
+ }],
787
+ disabled: resolvedDisabled.value,
788
+ "aria-invalid": isInvalid.value || void 0,
789
+ "aria-label": __props.ariaLabel,
790
+ "aria-haspopup": "dialog",
791
+ "aria-expanded": open.value ? "true" : "false",
792
+ "aria-controls": open.value ? unref(panelId) : void 0,
793
+ "aria-readonly": __props.readonly || void 0,
794
+ onClick: toggleOpen,
795
+ onKeydown: onTriggerKeydown,
796
+ onFocus: _cache[0] || (_cache[0] = ($event) => emit("focus")),
797
+ onBlur: _cache[1] || (_cache[1] = ($event) => emit("blur"))
798
+ }), [createElementVNode("span", _hoisted_4, [createVNode(RsIcon_default, {
799
+ name: triggerIcon.value,
800
+ size: triggerIconSize.value,
801
+ class: "rs-date-picker__icon",
802
+ "aria-hidden": "true"
803
+ }, null, 8, ["name", "size"]), createElementVNode("span", _hoisted_5, toDisplayString(displayValue.value), 1)]), createVNode(RsIcon_default, {
804
+ name: "chevron-down",
805
+ size: triggerIconSize.value,
806
+ class: "rs-date-picker__chevron",
807
+ "aria-hidden": "true"
808
+ }, null, 8, ["size"])], 16, _hoisted_3), showClear.value ? (openBlock(), createBlock(RsButton_default, {
809
+ key: 0,
810
+ class: "rs-date-picker__clear",
811
+ variant: "text",
812
+ bordered: false,
813
+ size: "ssm",
814
+ radius: "full",
815
+ icon: "x",
816
+ "icon-size": clearIconSize.value,
817
+ "icon-only": "",
818
+ "aria-label": __props.withTime ? unref(t)("dateTimePicker.clear") : unref(t)("datePicker.clear"),
819
+ onPointerdown: _cache[2] || (_cache[2] = withModifiers(() => {}, ["stop"])),
820
+ onClick: withModifiers(clearSelection, ["stop"])
821
+ }, null, 8, ["icon-size", "aria-label"])) : createCommentVNode("", true)], 2),
822
+ (openBlock(), createBlock(Teleport, { to: portalTarget.value }, [open.value && canInteract.value ? (openBlock(), createElementBlock("div", {
545
823
  key: 0,
546
- for: unref(fieldId)
547
- }, toDisplayString(__props.label), 9, _hoisted_2)) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [createTextVNode(toDisplayString(__props.label), 1)], 64)), __props.required ? (openBlock(), createElementBlock("span", _hoisted_3, "*")) : createCommentVNode("", true)])) : createCommentVNode("", true),
548
- createElementVNode("div", { class: normalizeClass(["rs-date-picker", `rs-date-picker--${unref(resolvedSize)}`]) }, [createVNode(unref(PopoverRoot), {
549
- open: open.value,
550
- "onUpdate:open": _cache[9] || (_cache[9] = ($event) => open.value = $event)
551
- }, {
552
- default: withCtx(() => [createVNode(unref(PopoverTrigger), mergeProps(unref(attrs), {
553
- id: triggerId.value,
824
+ id: unref(panelId),
825
+ ref_key: "contentRef",
826
+ ref: contentRef,
827
+ class: normalizeClass(["rs-date-picker__content", { "rs-date-picker__content--range": __props.range }]),
828
+ "data-placement": popup.value.placement,
829
+ "data-rs-theme": panelTheme.value,
830
+ style: normalizeStyle(panelStyle.value),
831
+ role: "dialog",
832
+ "aria-label": __props.label || __props.ariaLabel || (__props.withTime ? unref(t)("dateTimePicker.placeholder") : unref(t)("datePicker.placeholder"))
833
+ }, [createElementVNode("div", _hoisted_7, [__props.range ? (openBlock(), createElementBlock("div", _hoisted_8, [createElementVNode("section", _hoisted_9, [
834
+ createElementVNode("span", _hoisted_10, toDisplayString(__props.withTime ? unref(t)("dateTimePicker.rangeStart") : unref(t)("datePicker.rangeStart")), 1),
835
+ createVNode(RsCalendarGrid_default, {
836
+ "view-year": startViewYear.value,
837
+ "onUpdate:viewYear": _cache[3] || (_cache[3] = ($event) => startViewYear.value = $event),
838
+ "view-month": startViewMonth.value,
839
+ "onUpdate:viewMonth": _cache[4] || (_cache[4] = ($event) => startViewMonth.value = $event),
840
+ selected: draftStart.value,
841
+ "range-start": draftStart.value,
842
+ "range-end": draftEnd.value,
843
+ "min-date": __props.minDate,
844
+ "max-date": startMaxDate.value,
845
+ "disabled-dates": __props.disabledDates,
846
+ "disabled-date": __props.disabledDate,
847
+ "week-starts-on": resolvedWeekStartsOn.value,
848
+ onSelect: handleStartSelect
849
+ }, null, 8, [
850
+ "view-year",
851
+ "view-month",
852
+ "selected",
853
+ "range-start",
854
+ "range-end",
855
+ "min-date",
856
+ "max-date",
857
+ "disabled-dates",
858
+ "disabled-date",
859
+ "week-starts-on"
860
+ ]),
861
+ __props.withTime ? (openBlock(), createElementBlock("div", _hoisted_11, [createElementVNode("span", _hoisted_12, toDisplayString(unref(t)("dateTimePicker.time")), 1), createVNode(RsTimePicker_default, {
862
+ modelValue: draftStartTime.value,
863
+ "onUpdate:modelValue": _cache[5] || (_cache[5] = ($event) => draftStartTime.value = $event),
864
+ class: "rs-date-picker__time-picker",
865
+ embedded: "",
866
+ size: unref(resolvedSize),
867
+ "with-seconds": resolvedWithSeconds.value,
868
+ disabled: !draftStart.value || resolvedDisabled.value
869
+ }, null, 8, [
870
+ "modelValue",
871
+ "size",
872
+ "with-seconds",
873
+ "disabled"
874
+ ])])) : createCommentVNode("", true)
875
+ ]), createElementVNode("section", _hoisted_13, [
876
+ createElementVNode("span", _hoisted_14, toDisplayString(__props.withTime ? unref(t)("dateTimePicker.rangeEnd") : unref(t)("datePicker.rangeEnd")), 1),
877
+ createVNode(RsCalendarGrid_default, {
878
+ "view-year": endViewYear.value,
879
+ "onUpdate:viewYear": _cache[6] || (_cache[6] = ($event) => endViewYear.value = $event),
880
+ "view-month": endViewMonth.value,
881
+ "onUpdate:viewMonth": _cache[7] || (_cache[7] = ($event) => endViewMonth.value = $event),
882
+ selected: draftEnd.value,
883
+ "range-start": draftStart.value,
884
+ "range-end": draftEnd.value,
885
+ "min-date": endMinDate.value,
886
+ "max-date": __props.maxDate,
887
+ "disabled-dates": __props.disabledDates,
888
+ "disabled-date": __props.disabledDate,
889
+ "week-starts-on": resolvedWeekStartsOn.value,
890
+ onSelect: handleEndSelect
891
+ }, null, 8, [
892
+ "view-year",
893
+ "view-month",
894
+ "selected",
895
+ "range-start",
896
+ "range-end",
897
+ "min-date",
898
+ "max-date",
899
+ "disabled-dates",
900
+ "disabled-date",
901
+ "week-starts-on"
902
+ ]),
903
+ __props.withTime ? (openBlock(), createElementBlock("div", _hoisted_15, [createElementVNode("span", _hoisted_16, toDisplayString(unref(t)("dateTimePicker.time")), 1), createVNode(RsTimePicker_default, {
904
+ modelValue: draftEndTime.value,
905
+ "onUpdate:modelValue": _cache[8] || (_cache[8] = ($event) => draftEndTime.value = $event),
906
+ class: "rs-date-picker__time-picker",
907
+ embedded: "",
908
+ size: unref(resolvedSize),
909
+ "with-seconds": resolvedWithSeconds.value,
910
+ disabled: !draftEnd.value || resolvedDisabled.value
911
+ }, null, 8, [
912
+ "modelValue",
913
+ "size",
914
+ "with-seconds",
915
+ "disabled"
916
+ ])])) : createCommentVNode("", true)
917
+ ])])) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [createVNode(RsCalendarGrid_default, {
918
+ "view-year": viewYear.value,
919
+ "onUpdate:viewYear": _cache[9] || (_cache[9] = ($event) => viewYear.value = $event),
920
+ "view-month": viewMonth.value,
921
+ "onUpdate:viewMonth": _cache[10] || (_cache[10] = ($event) => viewMonth.value = $event),
922
+ selected: draftDate.value,
923
+ "min-date": __props.minDate,
924
+ "max-date": __props.maxDate,
925
+ "disabled-dates": __props.disabledDates,
926
+ "disabled-date": __props.disabledDate,
927
+ "week-starts-on": resolvedWeekStartsOn.value,
928
+ onSelect: handleDateSelect
929
+ }, null, 8, [
930
+ "view-year",
931
+ "view-month",
932
+ "selected",
933
+ "min-date",
934
+ "max-date",
935
+ "disabled-dates",
936
+ "disabled-date",
937
+ "week-starts-on"
938
+ ]), __props.withTime ? (openBlock(), createElementBlock("div", _hoisted_17, [createElementVNode("span", _hoisted_18, toDisplayString(unref(t)("dateTimePicker.time")), 1), createVNode(RsTimePicker_default, {
939
+ modelValue: draftTime.value,
940
+ "onUpdate:modelValue": _cache[11] || (_cache[11] = ($event) => draftTime.value = $event),
941
+ class: "rs-date-picker__time-picker",
942
+ embedded: "",
943
+ size: unref(resolvedSize),
944
+ "with-seconds": resolvedWithSeconds.value,
945
+ disabled: !draftDate.value || resolvedDisabled.value
946
+ }, null, 8, [
947
+ "modelValue",
948
+ "size",
949
+ "with-seconds",
950
+ "disabled"
951
+ ])])) : createCommentVNode("", true)], 64)), createElementVNode("footer", _hoisted_19, [createElementVNode("div", _hoisted_20, [__props.shortcuts?.length ? (openBlock(), createElementBlock("div", _hoisted_21, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.shortcuts, (item, index) => {
952
+ return openBlock(), createElementBlock("button", {
953
+ key: `${item.label}-${index}`,
554
954
  type: "button",
555
- class: ["rs-date-picker__trigger", {
556
- "rs-date-picker__trigger--placeholder": isEmpty.value,
557
- "rs-date-picker__trigger--invalid": isInvalid.value
558
- }],
559
- disabled: __props.disabled,
560
- "aria-invalid": isInvalid.value || void 0
561
- }), {
562
- default: withCtx(() => [createElementVNode("span", _hoisted_4, [createVNode(RsIcon_default, {
563
- name: triggerIcon.value,
564
- size: triggerIconSize.value,
565
- class: "rs-date-picker__icon"
566
- }, null, 8, ["name", "size"]), createElementVNode("span", _hoisted_5, toDisplayString(displayValue.value), 1)]), createVNode(RsIcon_default, {
567
- name: "chevron-down",
568
- size: triggerIconSize.value,
569
- class: "rs-date-picker__chevron"
570
- }, null, 8, ["size"])]),
571
- _: 1
572
- }, 16, [
573
- "id",
574
- "class",
575
- "disabled",
576
- "aria-invalid"
577
- ]), createVNode(unref(PopoverPortal), null, {
578
- default: withCtx(() => [createVNode(unref(PopoverContent), {
579
- class: normalizeClass(["rs-date-picker__content", { "rs-date-picker__content--range": __props.range }]),
580
- "side-offset": 6,
581
- align: "start"
582
- }, {
583
- default: withCtx(() => [open.value ? (openBlock(), createElementBlock("div", _hoisted_6, [__props.range ? (openBlock(), createElementBlock("div", _hoisted_7, [createElementVNode("section", _hoisted_8, [
584
- createElementVNode("span", _hoisted_9, toDisplayString(__props.withTime ? unref(t)("dateTimePicker.rangeStart") : unref(t)("datePicker.rangeStart")), 1),
585
- createVNode(RsCalendarGrid_default, {
586
- "view-year": startViewYear.value,
587
- "onUpdate:viewYear": _cache[0] || (_cache[0] = ($event) => startViewYear.value = $event),
588
- "view-month": startViewMonth.value,
589
- "onUpdate:viewMonth": _cache[1] || (_cache[1] = ($event) => startViewMonth.value = $event),
590
- selected: draftStart.value,
591
- "range-start": draftStart.value,
592
- "range-end": draftEnd.value,
593
- "min-date": __props.minDate,
594
- "max-date": startMaxDate.value,
595
- onSelect: handleStartSelect
596
- }, null, 8, [
597
- "view-year",
598
- "view-month",
599
- "selected",
600
- "range-start",
601
- "range-end",
602
- "min-date",
603
- "max-date"
604
- ]),
605
- __props.withTime ? (openBlock(), createElementBlock("div", _hoisted_10, [createElementVNode("span", _hoisted_11, toDisplayString(unref(t)("dateTimePicker.time")), 1), createVNode(RsTimePicker_default, {
606
- modelValue: draftStartTime.value,
607
- "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => draftStartTime.value = $event),
608
- class: "rs-date-picker__time-picker",
609
- embedded: "",
610
- size: unref(resolvedSize),
611
- "with-seconds": resolvedWithSeconds.value,
612
- disabled: !draftStart.value || __props.disabled
613
- }, null, 8, [
614
- "modelValue",
615
- "size",
616
- "with-seconds",
617
- "disabled"
618
- ])])) : createCommentVNode("", true)
619
- ]), createElementVNode("section", _hoisted_12, [
620
- createElementVNode("span", _hoisted_13, toDisplayString(__props.withTime ? unref(t)("dateTimePicker.rangeEnd") : unref(t)("datePicker.rangeEnd")), 1),
621
- createVNode(RsCalendarGrid_default, {
622
- "view-year": endViewYear.value,
623
- "onUpdate:viewYear": _cache[3] || (_cache[3] = ($event) => endViewYear.value = $event),
624
- "view-month": endViewMonth.value,
625
- "onUpdate:viewMonth": _cache[4] || (_cache[4] = ($event) => endViewMonth.value = $event),
626
- selected: draftEnd.value,
627
- "range-start": draftStart.value,
628
- "range-end": draftEnd.value,
629
- "min-date": endMinDate.value,
630
- "max-date": __props.maxDate,
631
- onSelect: handleEndSelect
632
- }, null, 8, [
633
- "view-year",
634
- "view-month",
635
- "selected",
636
- "range-start",
637
- "range-end",
638
- "min-date",
639
- "max-date"
640
- ]),
641
- __props.withTime ? (openBlock(), createElementBlock("div", _hoisted_14, [createElementVNode("span", _hoisted_15, toDisplayString(unref(t)("dateTimePicker.time")), 1), createVNode(RsTimePicker_default, {
642
- modelValue: draftEndTime.value,
643
- "onUpdate:modelValue": _cache[5] || (_cache[5] = ($event) => draftEndTime.value = $event),
644
- class: "rs-date-picker__time-picker",
645
- embedded: "",
646
- size: unref(resolvedSize),
647
- "with-seconds": resolvedWithSeconds.value,
648
- disabled: !draftEnd.value || __props.disabled
649
- }, null, 8, [
650
- "modelValue",
651
- "size",
652
- "with-seconds",
653
- "disabled"
654
- ])])) : createCommentVNode("", true)
655
- ])])) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [createVNode(RsCalendarGrid_default, {
656
- "view-year": viewYear.value,
657
- "onUpdate:viewYear": _cache[6] || (_cache[6] = ($event) => viewYear.value = $event),
658
- "view-month": viewMonth.value,
659
- "onUpdate:viewMonth": _cache[7] || (_cache[7] = ($event) => viewMonth.value = $event),
660
- selected: draftDate.value,
661
- "min-date": __props.minDate,
662
- "max-date": __props.maxDate,
663
- onSelect: handleDateSelect
664
- }, null, 8, [
665
- "view-year",
666
- "view-month",
667
- "selected",
668
- "min-date",
669
- "max-date"
670
- ]), __props.withTime ? (openBlock(), createElementBlock("div", _hoisted_16, [createElementVNode("span", _hoisted_17, toDisplayString(unref(t)("dateTimePicker.time")), 1), createVNode(RsTimePicker_default, {
671
- modelValue: draftTime.value,
672
- "onUpdate:modelValue": _cache[8] || (_cache[8] = ($event) => draftTime.value = $event),
673
- class: "rs-date-picker__time-picker",
674
- embedded: "",
675
- size: unref(resolvedSize),
676
- "with-seconds": resolvedWithSeconds.value,
677
- disabled: !draftDate.value || __props.disabled
678
- }, null, 8, [
679
- "modelValue",
680
- "size",
681
- "with-seconds",
682
- "disabled"
683
- ])])) : createCommentVNode("", true)], 64)), createElementVNode("footer", _hoisted_18, [createElementVNode("div", _hoisted_19, [__props.shortcuts?.length ? (openBlock(), createElementBlock("div", _hoisted_20, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.shortcuts, (item) => {
684
- return openBlock(), createElementBlock("button", {
685
- key: item.label,
686
- type: "button",
687
- class: "rs-date-picker__shortcut",
688
- disabled: __props.disabled,
689
- onClick: ($event) => applyShortcut(item)
690
- }, toDisplayString(item.label), 9, _hoisted_21);
691
- }), 128))])) : (openBlock(), createElementBlock("button", {
692
- key: 1,
693
- type: "button",
694
- class: "rs-date-picker__link",
695
- onClick: selectToday
696
- }, toDisplayString(__props.range ? __props.withTime ? unref(t)("dateTimePicker.now") : unref(t)("datePicker.rangeToday") : __props.withTime ? unref(t)("dateTimePicker.now") : unref(t)("datePicker.today")), 1))]), createElementVNode("div", _hoisted_22, [createElementVNode("button", {
697
- type: "button",
698
- class: "rs-date-picker__ghost",
699
- onClick: clearSelection
700
- }, toDisplayString(__props.withTime ? unref(t)("dateTimePicker.clear") : unref(t)("datePicker.clear")), 1), createElementVNode("button", {
701
- type: "button",
702
- class: "rs-date-picker__confirm",
703
- disabled: __props.range ? !draftStart.value || !draftEnd.value : !draftDate.value || __props.withTime && !draftTime.value,
704
- onClick: confirmSelection
705
- }, toDisplayString(unref(t)("datePicker.confirm")), 9, _hoisted_23)])])])) : createCommentVNode("", true)]),
706
- _: 1
707
- }, 8, ["class"])]),
708
- _: 1
709
- })]),
710
- _: 1
711
- }, 8, ["open"])], 2),
712
- visibleMessage.value ? (openBlock(), createElementBlock("p", _hoisted_24, toDisplayString(visibleMessage.value), 1)) : createCommentVNode("", true),
713
- __props.hint ? (openBlock(), createElementBlock("span", _hoisted_25, toDisplayString(__props.hint), 1)) : createCommentVNode("", true)
714
- ], 2);
955
+ class: "rs-date-picker__shortcut",
956
+ disabled: resolvedDisabled.value,
957
+ onClick: ($event) => applyShortcut(item)
958
+ }, toDisplayString(item.label), 9, _hoisted_22);
959
+ }), 128))])) : (openBlock(), createElementBlock("button", {
960
+ key: 1,
961
+ type: "button",
962
+ class: "rs-date-picker__link",
963
+ onClick: selectToday
964
+ }, toDisplayString(__props.range ? __props.withTime ? unref(t)("dateTimePicker.now") : unref(t)("datePicker.rangeToday") : __props.withTime ? unref(t)("dateTimePicker.now") : unref(t)("datePicker.today")), 1))]), createElementVNode("div", _hoisted_23, [createElementVNode("button", {
965
+ type: "button",
966
+ class: "rs-date-picker__ghost",
967
+ onClick: clearSelection
968
+ }, toDisplayString(__props.withTime ? unref(t)("dateTimePicker.clear") : unref(t)("datePicker.clear")), 1), createElementVNode("button", {
969
+ type: "button",
970
+ class: "rs-date-picker__confirm",
971
+ disabled: __props.range ? !draftStart.value || !draftEnd.value : !draftDate.value || __props.withTime && !draftTime.value,
972
+ onClick: confirmSelection
973
+ }, toDisplayString(unref(t)("datePicker.confirm")), 9, _hoisted_24)])])])], 14, _hoisted_6)) : createCommentVNode("", true)], 8, ["to"])),
974
+ visibleMessage.value ? (openBlock(), createElementBlock("p", _hoisted_25, toDisplayString(visibleMessage.value), 1)) : createCommentVNode("", true),
975
+ __props.hint ? (openBlock(), createElementBlock("span", _hoisted_26, toDisplayString(__props.hint), 1)) : createCommentVNode("", true)
976
+ ], 6);
715
977
  };
716
978
  }
717
979
  });