@onereach/ui-components 4.9.1-beta.2907.0 → 4.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (133) hide show
  1. package/dist/bundled/v2/{OrDateTimePickerPopoverHeader-6f78e8e7.js → OrDateTimePickerPopoverHeader-28995b95.js} +8 -1
  2. package/dist/bundled/v2/{OrDateTimePickerTimeSelect-78f775d8.js → OrDateTimePickerTimeSelect-c52ee823.js} +74 -4
  3. package/dist/bundled/v2/components/OrDatePickerV3/OrDatePicker.js +19 -1
  4. package/dist/bundled/v2/components/OrDatePickerV3/OrDatePicker.vue.d.ts +2 -0
  5. package/dist/bundled/v2/components/OrDatePickerV3/index.js +1 -1
  6. package/dist/bundled/v2/components/OrDateTimePickerV3/OrDateTimePicker.js +37 -2
  7. package/dist/bundled/v2/components/OrDateTimePickerV3/OrDateTimePicker.vue.d.ts +14 -1
  8. package/dist/bundled/v2/components/OrDateTimePickerV3/hooks/useTimePlaceholder.d.ts +1 -1
  9. package/dist/bundled/v2/components/OrDateTimePickerV3/hooks/useTimePlaceholder.js +2 -1
  10. package/dist/bundled/v2/components/OrDateTimePickerV3/index.js +3 -2
  11. package/dist/bundled/v2/components/OrDateTimePickerV3/props.d.ts +5 -0
  12. package/dist/bundled/v2/components/OrDateTimePickerV3/props.js +9 -0
  13. package/dist/bundled/v2/components/OrDateTimePickerV3/styles.js +1 -3
  14. package/dist/bundled/v2/components/OrTimePickerV3/OrTimePicker.js +25 -2
  15. package/dist/bundled/v2/components/OrTimePickerV3/OrTimePicker.vue.d.ts +14 -1
  16. package/dist/bundled/v2/components/OrTimePickerV3/index.js +3 -2
  17. package/dist/bundled/v2/components/OrTimePickerV3/props.d.ts +1 -0
  18. package/dist/bundled/v2/components/OrTimePickerV3/props.js +1 -0
  19. package/dist/bundled/v2/components/OrTimePickerV3/styles.js +1 -3
  20. package/dist/bundled/v2/components/index.d.ts +0 -1
  21. package/dist/bundled/v2/components/index.js +3 -3
  22. package/dist/bundled/v2/index.js +4 -4
  23. package/dist/bundled/v3/{OrDatePicker.vue_vue_type_script_lang-8ec017e2.js → OrDatePicker.vue_vue_type_script_lang-0e648149.js} +16 -1
  24. package/dist/bundled/v3/{OrDateTimePicker.vue_vue_type_script_lang-fec947db.js → OrDateTimePicker.vue_vue_type_script_lang-69d65518.js} +29 -2
  25. package/dist/bundled/v3/{OrDateTimePickerPopoverHeader-bb988d7c.js → OrDateTimePickerPopoverHeader-ec90761f.js} +8 -1
  26. package/dist/bundled/v3/{OrDateTimePickerTimeSelect-01a39297.js → OrDateTimePickerTimeSelect-683ab20d.js} +68 -5
  27. package/dist/bundled/v3/{OrTimePicker.vue_vue_type_script_lang-c737eaa8.js → OrTimePicker.vue_vue_type_script_lang-a300ab1b.js} +20 -2
  28. package/dist/bundled/v3/components/OrDatePickerV3/OrDatePicker.js +5 -4
  29. package/dist/bundled/v3/components/OrDatePickerV3/OrDatePicker.vue.d.ts +1 -0
  30. package/dist/bundled/v3/components/OrDatePickerV3/index.js +2 -2
  31. package/dist/bundled/v3/components/OrDateTimePickerV3/OrDateTimePicker.js +14 -9
  32. package/dist/bundled/v3/components/OrDateTimePickerV3/OrDateTimePicker.vue.d.ts +11 -1
  33. package/dist/bundled/v3/components/OrDateTimePickerV3/hooks/useTimePlaceholder.d.ts +1 -1
  34. package/dist/bundled/v3/components/OrDateTimePickerV3/hooks/useTimePlaceholder.js +2 -1
  35. package/dist/bundled/v3/components/OrDateTimePickerV3/index.js +4 -3
  36. package/dist/bundled/v3/components/OrDateTimePickerV3/props.d.ts +5 -0
  37. package/dist/bundled/v3/components/OrDateTimePickerV3/props.js +9 -0
  38. package/dist/bundled/v3/components/OrDateTimePickerV3/styles.js +1 -3
  39. package/dist/bundled/v3/components/OrTimePickerV3/OrTimePicker.js +12 -8
  40. package/dist/bundled/v3/components/OrTimePickerV3/OrTimePicker.vue.d.ts +11 -1
  41. package/dist/bundled/v3/components/OrTimePickerV3/index.js +4 -3
  42. package/dist/bundled/v3/components/OrTimePickerV3/props.d.ts +1 -0
  43. package/dist/bundled/v3/components/OrTimePickerV3/props.js +1 -0
  44. package/dist/bundled/v3/components/OrTimePickerV3/styles.js +1 -3
  45. package/dist/bundled/v3/components/index.d.ts +0 -1
  46. package/dist/bundled/v3/components/index.js +6 -6
  47. package/dist/bundled/v3/index.js +7 -8
  48. package/dist/esm/v2/{OrDatePicker-0989a40c.js → OrDatePicker-328189a2.js} +19 -2
  49. package/dist/esm/v2/{OrDateTimePicker-ac766f04.js → OrDateTimePicker-8bcc71c3.js} +9 -234
  50. package/dist/esm/v2/OrDateTimePicker.vue_rollup-plugin-vue_script-399a44b5.js +636 -0
  51. package/dist/esm/v2/{OrDateTimePickerMonthSelect-4eb8bfb6.js → OrDateTimePickerPopoverHeader-fa88e970.js} +263 -39
  52. package/dist/esm/v2/{OrTimePicker-5fd08ad2.js → OrTimePicker-a9c5547b.js} +25 -5
  53. package/dist/esm/v2/components/index.d.ts +0 -1
  54. package/dist/esm/v2/components/index.js +5 -7
  55. package/dist/esm/v2/components/or-date-picker-v3/OrDatePicker.vue.d.ts +2 -0
  56. package/dist/esm/v2/components/or-date-picker-v3/index.js +3 -4
  57. package/dist/esm/v2/components/or-date-time-picker-v3/OrDateTimePicker.vue.d.ts +14 -1
  58. package/dist/esm/v2/components/or-date-time-picker-v3/hooks/useTimePlaceholder.d.ts +1 -1
  59. package/dist/esm/v2/components/or-date-time-picker-v3/index.js +4 -5
  60. package/dist/esm/v2/components/or-date-time-picker-v3/partials/or-date-time-picker-popover-footer/OrDateTimePickerPopoverFooter.vue.d.ts +19 -3
  61. package/dist/esm/v2/components/or-date-time-picker-v3/partials/or-date-time-picker-time-control/OrDateTimePickerTimeControl.vue.d.ts +13 -0
  62. package/dist/esm/v2/components/or-date-time-picker-v3/partials/or-date-time-picker-time-select/OrDateTimePickerTimeSelect.vue.d.ts +16 -0
  63. package/dist/esm/v2/components/or-date-time-picker-v3/props.d.ts +5 -0
  64. package/dist/esm/v2/components/or-time-picker-v3/OrTimePicker.vue.d.ts +14 -1
  65. package/dist/esm/v2/components/or-time-picker-v3/index.js +8 -6
  66. package/dist/esm/v2/components/or-time-picker-v3/props.d.ts +1 -0
  67. package/dist/esm/v2/index.js +5 -7
  68. package/dist/esm/v3/{OrDatePicker-6ac8578a.js → OrDatePicker-4c4fd5dc.js} +18 -3
  69. package/dist/esm/v3/OrDateTimePicker-0a4d194e.js +763 -0
  70. package/dist/esm/v3/{OrDateTimePickerMonthSelect-f807e6d5.js → OrDateTimePickerPopoverHeader-bc8e0bcf.js} +174 -24
  71. package/dist/esm/v3/{OrTimePicker-d66edf77.js → OrTimePicker-67f75e85.js} +26 -8
  72. package/dist/esm/v3/components/index.d.ts +0 -1
  73. package/dist/esm/v3/components/index.js +4 -7
  74. package/dist/esm/v3/components/or-date-picker-v3/OrDatePicker.vue.d.ts +1 -0
  75. package/dist/esm/v3/components/or-date-picker-v3/index.js +3 -4
  76. package/dist/esm/v3/components/or-date-time-picker-v3/OrDateTimePicker.vue.d.ts +11 -1
  77. package/dist/esm/v3/components/or-date-time-picker-v3/hooks/useTimePlaceholder.d.ts +1 -1
  78. package/dist/esm/v3/components/or-date-time-picker-v3/index.js +2 -4
  79. package/dist/esm/v3/components/or-date-time-picker-v3/partials/or-date-time-picker-popover-footer/OrDateTimePickerPopoverFooter.vue.d.ts +15 -3
  80. package/dist/esm/v3/components/or-date-time-picker-v3/partials/or-date-time-picker-time-control/OrDateTimePickerTimeControl.vue.d.ts +11 -0
  81. package/dist/esm/v3/components/or-date-time-picker-v3/partials/or-date-time-picker-time-select/OrDateTimePickerTimeSelect.vue.d.ts +12 -0
  82. package/dist/esm/v3/components/or-date-time-picker-v3/props.d.ts +5 -0
  83. package/dist/esm/v3/components/or-time-picker-v3/OrTimePicker.vue.d.ts +11 -1
  84. package/dist/esm/v3/components/or-time-picker-v3/index.js +8 -6
  85. package/dist/esm/v3/components/or-time-picker-v3/props.d.ts +1 -0
  86. package/dist/esm/v3/index.js +4 -7
  87. package/package.json +3 -2
  88. package/src/components/index.ts +0 -1
  89. package/src/components/or-date-picker-v3/OrDatePicker.vue +20 -0
  90. package/src/components/or-date-time-picker-v3/OrDateTimePicker.vue +38 -1
  91. package/src/components/or-date-time-picker-v3/hooks/useTimePlaceholder.ts +2 -1
  92. package/src/components/or-date-time-picker-v3/partials/or-date-time-picker-popover-footer/OrDateTimePickerPopoverFooter.vue +8 -0
  93. package/src/components/or-date-time-picker-v3/partials/or-date-time-picker-time-control/OrDateTimePickerTimeControl.vue +9 -2
  94. package/src/components/or-date-time-picker-v3/partials/or-date-time-picker-time-select/OrDateTimePickerTimeSelect.vue +87 -2
  95. package/src/components/or-date-time-picker-v3/props.ts +6 -0
  96. package/src/components/or-date-time-picker-v3/styles.ts +1 -4
  97. package/src/components/or-time-picker-v3/OrTimePicker.vue +25 -1
  98. package/src/components/or-time-picker-v3/props.ts +1 -0
  99. package/src/components/or-time-picker-v3/styles.ts +1 -4
  100. package/dist/bundled/v2/components/OrTreeV3/OrTree.js +0 -277
  101. package/dist/bundled/v2/components/OrTreeV3/OrTree.vue.d.ts +0 -68
  102. package/dist/bundled/v2/components/OrTreeV3/index.d.ts +0 -1
  103. package/dist/bundled/v2/components/OrTreeV3/index.js +0 -17
  104. package/dist/bundled/v2/components/OrTreeV3/types.d.ts +0 -7
  105. package/dist/bundled/v2/components/OrTreeV3/types.js +0 -1
  106. package/dist/bundled/v3/OrTree.vue_vue_type_script_lang-60234ac6.js +0 -179
  107. package/dist/bundled/v3/components/OrTreeV3/OrTree.js +0 -50
  108. package/dist/bundled/v3/components/OrTreeV3/OrTree.vue.d.ts +0 -54
  109. package/dist/bundled/v3/components/OrTreeV3/index.d.ts +0 -1
  110. package/dist/bundled/v3/components/OrTreeV3/index.js +0 -21
  111. package/dist/bundled/v3/components/OrTreeV3/types.d.ts +0 -7
  112. package/dist/bundled/v3/components/OrTreeV3/types.js +0 -1
  113. package/dist/esm/v2/OrDateTimePickerPopoverHeader-a84af34e.js +0 -222
  114. package/dist/esm/v2/OrDateTimePickerTimeSelect-eecdd8ab.js +0 -304
  115. package/dist/esm/v2/OrTree-ee993927.js +0 -266
  116. package/dist/esm/v2/components/or-tree-v3/OrTree.vue.d.ts +0 -68
  117. package/dist/esm/v2/components/or-tree-v3/index.d.ts +0 -1
  118. package/dist/esm/v2/components/or-tree-v3/index.js +0 -8
  119. package/dist/esm/v2/components/or-tree-v3/partials/or-tree-node/OrTreeNode.vue.d.ts +0 -85
  120. package/dist/esm/v2/components/or-tree-v3/types.d.ts +0 -7
  121. package/dist/esm/v3/OrDateTimePicker-b15d4198.js +0 -419
  122. package/dist/esm/v3/OrDateTimePickerPopoverHeader-3ae517f8.js +0 -148
  123. package/dist/esm/v3/OrDateTimePickerTimeSelect-14503fde.js +0 -252
  124. package/dist/esm/v3/OrTree-b4276dfb.js +0 -204
  125. package/dist/esm/v3/components/or-tree-v3/OrTree.vue.d.ts +0 -54
  126. package/dist/esm/v3/components/or-tree-v3/index.d.ts +0 -1
  127. package/dist/esm/v3/components/or-tree-v3/index.js +0 -8
  128. package/dist/esm/v3/components/or-tree-v3/partials/or-tree-node/OrTreeNode.vue.d.ts +0 -62
  129. package/dist/esm/v3/components/or-tree-v3/types.d.ts +0 -7
  130. package/src/components/or-tree-v3/OrTree.vue +0 -63
  131. package/src/components/or-tree-v3/index.ts +0 -1
  132. package/src/components/or-tree-v3/partials/or-tree-node/OrTreeNode.vue +0 -158
  133. package/src/components/or-tree-v3/types.ts +0 -7
@@ -1,16 +1,14 @@
1
- export { s as OrTimePickerV3 } from '../../OrTimePicker-d66edf77.js';
1
+ export { s as OrTimePickerV3 } from '../../OrTimePicker-67f75e85.js';
2
+ export { D as TimePickerFormat } from '../../OrDateTimePicker-0a4d194e.js';
2
3
  export { I as TimePickerSize } from '../../OrInputBox-32b37b17.js';
3
4
  import 'vue-demi';
4
5
  import '../../dropdown-open-e1f90e0a.js';
5
- import '../../OrDateTimePickerPopoverHeader-3ae517f8.js';
6
- import '../../OrLabel-4da56db0.js';
6
+ import '../../OrDateTimePickerPopoverHeader-bc8e0bcf.js';
7
7
  import 'vue';
8
8
  import '../../OrButton-c2b6aa9e.js';
9
9
  import '../../OrLoader-b79022da.js';
10
10
  import '@vueuse/core';
11
- import '../../OrDateTimePickerTimeSelect-14503fde.js';
12
- import '../../OrError-c01d0c29.js';
13
- import '../../OrHint-06ab89d7.js';
11
+ import '../../OrLabel-4da56db0.js';
14
12
  import '../../OrIconButton-0aaadc68.js';
15
13
  import '../../OrIcon-62793572.js';
16
14
  import '../../OrTooltip-3025564a.js';
@@ -24,3 +22,7 @@ import '../../useResponsive-a02e95b7.js';
24
22
  import '../../OrBottomSheet-f2f3aef9.js';
25
23
  import '../../OrOverlay-489fdf76.js';
26
24
  import '../../OrTeleport.vue3-8099178c.js';
25
+ import '../../OrMenuItem-dbee450f.js';
26
+ import '../../OrMenu-9659b8eb.js';
27
+ import '../../OrError-c01d0c29.js';
28
+ import '../../OrHint-06ab89d7.js';
@@ -1 +1,2 @@
1
+ export { DateTimePickerTimeFormat as TimePickerFormat } from '../or-date-time-picker-v3';
1
2
  export { InputBoxSize as TimePickerSize } from '../or-input-box-v3';
@@ -24,9 +24,9 @@ export { s as OrCombinedInputV3 } from './OrCombinedInput-e3891038.js';
24
24
  export { I as CombinedInputSize, I as DatePickerSize, I as DateTimePickerSize, I as InputBoxSize, a as InputBoxVariant, I as InputSize, s as OrInputBoxV3, I as SearchSize, I as SelectSize, I as TagInputSize, I as TextareaSize, I as TimePickerSize } from './OrInputBox-32b37b17.js';
25
25
  export { s as OrConfirm } from './OrConfirm-704f817e.js';
26
26
  export { C as ConfirmType, s as OrConfirmV3 } from './OrConfirm-5509c440.js';
27
- export { s as OrDatePickerV3 } from './OrDatePicker-6ac8578a.js';
27
+ export { s as OrDatePickerV3 } from './OrDatePicker-4c4fd5dc.js';
28
28
  export { D as DEFAULT_TEXT, s as OrDateTimePicker, a as OrDateTimePickerItemTypes, O as OrDateTimePickerTypes } from './OrDateTimePicker-c19dcefc.js';
29
- export { s as OrDateTimePickerV3 } from './OrDateTimePicker-b15d4198.js';
29
+ export { D as DateTimePickerTimeFormat, s as OrDateTimePickerV3, D as TimePickerFormat } from './OrDateTimePicker-0a4d194e.js';
30
30
  export { E as EmptyStateSize, s as OrEmptyStateV3 } from './OrEmptyState-5349a1f9.js';
31
31
  export { s as OrError } from './OrError-f90296db.js';
32
32
  export { s as OrErrorTagV3 } from './OrErrorTag-ade9192b.js';
@@ -107,7 +107,7 @@ export { s as OrTextV3 } from './OrText-d54c951d.js';
107
107
  export { s as OrTextarea } from './OrTextarea-31b54c7e.js';
108
108
  export { s as OrTextareaV3 } from './OrTextarea-1e19417a.js';
109
109
  export { s as OrTextbox, T as TextboxTypes } from './OrTextbox-8d2903db.js';
110
- export { s as OrTimePickerV3 } from './OrTimePicker-d66edf77.js';
110
+ export { s as OrTimePickerV3 } from './OrTimePicker-67f75e85.js';
111
111
  export { s as OrToast, a as OrToastContainer } from './OrToastContainer-72b52576.js';
112
112
  export { P as PositionsX, b as PositionsY, c as ToastType, T as TransitionType, a as useQueue, u as useToast } from './useToast-b5ea5cb2.js';
113
113
  export { a as OrToastContainerV3, s as OrToastV3, t as TypesV3 } from './types-53cb1e6c.js';
@@ -115,7 +115,6 @@ export { p as PropsV3, a as useQueueV3, u as useToastV3 } from './useToast-a1332
115
115
  export { s as OrTooltip } from './OrTooltip-c1006713.js';
116
116
  export { s as OrTooltipContent } from './OrTooltipContent-c0042844.js';
117
117
  export { s as OrTooltipV3 } from './OrTooltip-3025564a.js';
118
- export { s as OrTreeV3 } from './OrTree-b4276dfb.js';
119
118
  export { D as DropdownClose, a as DropdownOpen } from './dropdown-open-e1f90e0a.js';
120
119
  export { u as useControlAttributes, a as useIdAttribute } from './useIdAttribute-859439f0.js';
121
120
  export { u as useElevation } from './useElevation-a50ec347.js';
@@ -150,10 +149,8 @@ import './dom-f1d55b67.js';
150
149
  import 'lodash/isElement';
151
150
  import 'lodash/get';
152
151
  import '@vueuse/math';
153
- import './OrDateTimePickerPopoverHeader-3ae517f8.js';
154
- import './OrDateTimePickerMonthSelect-f807e6d5.js';
152
+ import './OrDateTimePickerPopoverHeader-bc8e0bcf.js';
155
153
  import 'lodash/padStart';
156
- import './OrDateTimePickerTimeSelect-14503fde.js';
157
154
  import '@floating-ui/dom';
158
155
  import 'lodash/cloneDeep';
159
156
  import 'lodash/isEqual';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@onereach/ui-components",
3
- "version": "4.9.1-beta.2907.0",
3
+ "version": "4.10.0",
4
4
  "description": "Vue components library for v2/3",
5
5
  "sideEffects": false,
6
6
  "main": "./dist/auto/index.js",
@@ -154,5 +154,6 @@
154
154
  "default": "./dist/bundled/v3/components/*/index.js"
155
155
  },
156
156
  "./package.json": "./package.json"
157
- }
157
+ },
158
+ "gitHead": "ba154bd45bae4b281e1feffed5b6ebe0e6122fae"
158
159
  }
@@ -104,4 +104,3 @@ export * from './or-toast';
104
104
  export * from './or-toast-v3';
105
105
  export * from './or-tooltip';
106
106
  export * from './or-tooltip-v3';
107
- export * from './or-tree-v3';
@@ -65,6 +65,7 @@
65
65
  />
66
66
 
67
67
  <OrDateTimePickerPopoverFooter
68
+ :disabled="isInvalidDraftModelValue"
68
69
  @apply="apply(); popover.close()"
69
70
  @reset="reset(); popover.close()"
70
71
  />
@@ -272,6 +273,24 @@ export default defineComponent({
272
273
  draftModelValue.value = value;
273
274
  }, { immediate: true });
274
275
 
276
+ const isInvalidDraftModelValue = computed(() => {
277
+ if (draftModelValue.value) {
278
+ if (props.yearFilter && !props.yearFilter(draftModelValue.value)) {
279
+ return true;
280
+ }
281
+
282
+ if (props.monthFilter && !props.monthFilter(draftModelValue.value)) {
283
+ return true;
284
+ }
285
+
286
+ if (props.dateFilter && !props.dateFilter(draftModelValue.value)) {
287
+ return true;
288
+ }
289
+ }
290
+
291
+ return false;
292
+ });
293
+
275
294
  // Methods
276
295
  function apply(): void {
277
296
  proxyModelValue.value = draftModelValue.value ?? initialModelValue;
@@ -321,6 +340,7 @@ export default defineComponent({
321
340
  initialModelValue,
322
341
  proxyModelValue,
323
342
  draftModelValue,
343
+ isInvalidDraftModelValue,
324
344
  apply,
325
345
  reset,
326
346
  togglePopover,
@@ -40,6 +40,7 @@
40
40
  v-model="draftModelValue"
41
41
  v-dropdown-open="toggleTimePopover"
42
42
  v-dropdown-close="closeTimePopover"
43
+ :format="timeFormat"
43
44
  :required="required"
44
45
  :readonly="readonly"
45
46
  :disabled="disabled"
@@ -78,6 +79,7 @@
78
79
  />
79
80
 
80
81
  <OrDateTimePickerPopoverFooter
82
+ :disabled="isInvalidDraftModelValue"
81
83
  @apply="apply(); datePopover.close()"
82
84
  @reset="reset(); datePopover.close()"
83
85
  />
@@ -105,11 +107,13 @@
105
107
  <OrDateTimePickerTimeSelect
106
108
  v-model="draftModelValue"
107
109
  :initial-value="initialModelValue"
110
+ :format="timeFormat"
108
111
  :hours-filter="hoursFilter"
109
112
  :minutes-filter="minutesFilter"
110
113
  />
111
114
 
112
115
  <OrDateTimePickerPopoverFooter
116
+ :disabled="isInvalidDraftModelValue"
113
117
  @apply="apply(); timePopover.close()"
114
118
  @reset="reset(); timePopover.close()"
115
119
  />
@@ -171,7 +175,7 @@ import OrDateTimePickerPopoverFooter from './partials/or-date-time-picker-popove
171
175
  import OrDateTimePickerPopoverHeader from './partials/or-date-time-picker-popover-header/OrDateTimePickerPopoverHeader.vue';
172
176
  import OrDateTimePickerTimeControl from './partials/or-date-time-picker-time-control/OrDateTimePickerTimeControl.vue';
173
177
  import OrDateTimePickerTimeSelect from './partials/or-date-time-picker-time-select/OrDateTimePickerTimeSelect.vue';
174
- import { DateTimePickerSize } from './props';
178
+ import { DateTimePickerSize, DateTimePickerTimeFormat } from './props';
175
179
  import { DateTimePicker, DateTimePickerDatePopover, DateTimePickerTimePopover } from './styles';
176
180
  import { FilterFunction } from './types';
177
181
 
@@ -212,6 +216,11 @@ export default defineComponent({
212
216
  default: undefined,
213
217
  },
214
218
 
219
+ timeFormat: {
220
+ type: String as PropType<`${DateTimePickerTimeFormat}`>,
221
+ default: DateTimePickerTimeFormat.Auto,
222
+ },
223
+
215
224
  yearFilter: {
216
225
  type: Function as PropType<FilterFunction>,
217
226
  default: undefined,
@@ -338,6 +347,32 @@ export default defineComponent({
338
347
  draftModelValue.value = value;
339
348
  }, { immediate: true });
340
349
 
350
+ const isInvalidDraftModelValue = computed(() => {
351
+ if (draftModelValue.value) {
352
+ if (props.yearFilter && !props.yearFilter(draftModelValue.value)) {
353
+ return true;
354
+ }
355
+
356
+ if (props.monthFilter && !props.monthFilter(draftModelValue.value)) {
357
+ return true;
358
+ }
359
+
360
+ if (props.dateFilter && !props.dateFilter(draftModelValue.value)) {
361
+ return true;
362
+ }
363
+
364
+ if (props.hoursFilter && !props.hoursFilter(draftModelValue.value)) {
365
+ return true;
366
+ }
367
+
368
+ if (props.minutesFilter && !props.minutesFilter(draftModelValue.value)) {
369
+ return true;
370
+ }
371
+ }
372
+
373
+ return false;
374
+ });
375
+
341
376
  // Methods
342
377
  function apply(): void {
343
378
  proxyModelValue.value = draftModelValue.value ?? initialModelValue;
@@ -405,6 +440,7 @@ export default defineComponent({
405
440
  function formatTimeAlt(value?: Date): string {
406
441
  return value?.toLocaleString(navigator.language, {
407
442
  timeStyle: 'short',
443
+ hourCycle: props.timeFormat !== DateTimePickerTimeFormat.Auto ? props.timeFormat : undefined,
408
444
  timeZone: 'UTC',
409
445
  }) ?? '--';
410
446
  }
@@ -423,6 +459,7 @@ export default defineComponent({
423
459
  initialModelValue,
424
460
  proxyModelValue,
425
461
  draftModelValue,
462
+ isInvalidDraftModelValue,
426
463
  apply,
427
464
  reset,
428
465
  toggleDatePopover,
@@ -1,6 +1,7 @@
1
- export function useTimePlaceholder(): string {
1
+ export function useTimePlaceholder(hourCycle?: Intl.DateTimeFormatOptions['hourCycle']): string {
2
2
  const sample = new Date(Date.UTC(1, 1, 3, 4, 5)).toLocaleString(navigator.language, {
3
3
  timeStyle: 'short',
4
+ hourCycle,
4
5
  timeZone: 'UTC',
5
6
  });
6
7
 
@@ -5,6 +5,7 @@
5
5
  >
6
6
  <OrButton
7
7
  :variant="'outlined'"
8
+ :disabled="disabled"
8
9
  @click.stop="$emit('apply')"
9
10
  >
10
11
  Done
@@ -31,6 +32,13 @@ export default defineComponent({
31
32
  OrButton,
32
33
  },
33
34
 
35
+ props: {
36
+ disabled: {
37
+ type: Boolean,
38
+ default: false,
39
+ },
40
+ },
41
+
34
42
  emits: [
35
43
  'apply',
36
44
  'reset',
@@ -23,8 +23,9 @@
23
23
  </template>
24
24
 
25
25
  <script lang="ts">
26
- import { computed, defineComponent, ref } from 'vue-demi';
26
+ import { PropType, computed, defineComponent, ref } from 'vue-demi';
27
27
  import { useTimePlaceholder } from '../../hooks/useTimePlaceholder';
28
+ import { DateTimePickerTimeFormat } from '../../props';
28
29
  import { DateTimePickerTimeControl, DateTimePickerTimeControlPlaceholder } from './styles';
29
30
 
30
31
  export default defineComponent({
@@ -41,6 +42,11 @@ export default defineComponent({
41
42
  default: undefined,
42
43
  },
43
44
 
45
+ format: {
46
+ type: String as PropType<`${DateTimePickerTimeFormat}`>,
47
+ default: DateTimePickerTimeFormat.Auto,
48
+ },
49
+
44
50
  required: {
45
51
  type: Boolean,
46
52
  default: false,
@@ -84,12 +90,13 @@ export default defineComponent({
84
90
  },
85
91
  });
86
92
 
87
- const placeholder = useTimePlaceholder();
93
+ const placeholder = useTimePlaceholder(props.format !== DateTimePickerTimeFormat.Auto ? props.format : undefined);
88
94
 
89
95
  // Methods
90
96
  function formatModelValue(value: Date): string {
91
97
  return value.toLocaleString(navigator.language, {
92
98
  timeStyle: 'short',
99
+ hourCycle: props.format !== DateTimePickerTimeFormat.Auto ? props.format : undefined,
93
100
  timeZone: 'UTC',
94
101
  });
95
102
  }
@@ -32,12 +32,35 @@
32
32
  {{ formatMinutes(value) }}
33
33
  </OrButton>
34
34
  </div>
35
+
36
+ <template v-if="proxyTimeFormat === 'h12'">
37
+ <div :class="buttonGroupStyles">
38
+ <OrButton
39
+ :class="buttonGroupItemStyles"
40
+ :variant="hoursRange === 'am' ? 'contained' : 'text'"
41
+ :color="hoursRange === 'am' ? 'primary' : 'inherit'"
42
+ @click.stop="hoursRange = 'am'"
43
+ >
44
+ AM
45
+ </OrButton>
46
+
47
+ <OrButton
48
+ :class="buttonGroupItemStyles"
49
+ :variant="hoursRange === 'pm' ? 'contained' : 'text'"
50
+ :color="hoursRange === 'pm' ? 'primary' : 'inherit'"
51
+ @click.stop="hoursRange = 'pm'"
52
+ >
53
+ PM
54
+ </OrButton>
55
+ </div>
56
+ </template>
35
57
  </div>
36
58
  </template>
37
59
 
38
60
  <script lang="ts">
39
- import { computed, defineComponent, PropType, ref } from 'vue-demi';
61
+ import { computed, defineComponent, PropType, ref, watch } from 'vue-demi';
40
62
  import { OrButtonV3 as OrButton } from '../../../or-button-v3';
63
+ import { DateTimePickerTimeFormat } from '../../props';
41
64
  import { FilterFunction } from '../../types';
42
65
  import { DateTimePickerTimeSelect, DateTimePickerTimeSelectButtonGroup, DateTimePickerTimeSelectButtonGroupItem } from './styles';
43
66
 
@@ -64,6 +87,11 @@ export default defineComponent({
64
87
  required: true,
65
88
  },
66
89
 
90
+ format: {
91
+ type: String as PropType<`${DateTimePickerTimeFormat}`>,
92
+ default: DateTimePickerTimeFormat.Auto,
93
+ },
94
+
67
95
  hoursFilter: {
68
96
  type: Function as PropType<FilterFunction>,
69
97
  default: undefined,
@@ -110,6 +138,48 @@ export default defineComponent({
110
138
  },
111
139
  });
112
140
 
141
+ const proxyTimeFormat = computed(() => {
142
+ if (props.format === DateTimePickerTimeFormat.Auto) {
143
+ const timeSample = new Date(1970, 0);
144
+
145
+ if (timeSample.toLocaleTimeString(navigator.language).includes('12')) {
146
+ return DateTimePickerTimeFormat.H12;
147
+ }
148
+
149
+ return DateTimePickerTimeFormat.H23;
150
+ }
151
+
152
+ return props.format;
153
+ });
154
+
155
+ const hoursRange = ref<'am' | 'pm'>(proxyModelValue.value.getUTCHours() < 12 ? 'am' : 'pm');
156
+
157
+ watch(hoursRange, (value) => {
158
+ switch (value) {
159
+ case 'am':
160
+ proxyModelValue.value = new Date(Date.UTC(
161
+ proxyModelValue.value.getUTCFullYear(),
162
+ proxyModelValue.value.getUTCMonth(),
163
+ proxyModelValue.value.getUTCDate(),
164
+ proxyModelValue.value.getUTCHours() - 12,
165
+ proxyModelValue.value.getUTCMinutes(),
166
+ ));
167
+
168
+ break;
169
+
170
+ case 'pm':
171
+ proxyModelValue.value = new Date(Date.UTC(
172
+ proxyModelValue.value.getUTCFullYear(),
173
+ proxyModelValue.value.getUTCMonth(),
174
+ proxyModelValue.value.getUTCDate(),
175
+ proxyModelValue.value.getUTCHours() + 12,
176
+ proxyModelValue.value.getUTCMinutes(),
177
+ ));
178
+
179
+ break;
180
+ }
181
+ });
182
+
113
183
  const hoursOptions = computed(() => {
114
184
  return Array.from({ length: 24 }, (_value, index) => {
115
185
  const value = index;
@@ -121,6 +191,18 @@ export default defineComponent({
121
191
  value,
122
192
  proxyModelValue.value.getUTCMinutes(),
123
193
  ));
194
+ }).filter((value) => {
195
+ if (proxyTimeFormat.value === DateTimePickerTimeFormat.H23) {
196
+ return true;
197
+ }
198
+
199
+ switch (hoursRange.value) {
200
+ case 'am':
201
+ return value.getUTCHours() < 12;
202
+
203
+ case 'pm':
204
+ return value.getUTCHours() >= 12;
205
+ }
124
206
  });
125
207
  });
126
208
 
@@ -142,8 +224,9 @@ export default defineComponent({
142
224
  function formatHours(value: Date): string {
143
225
  return value.toLocaleString(navigator.language, {
144
226
  hour: 'numeric',
227
+ hourCycle: props.format !== DateTimePickerTimeFormat.Auto ? props.format : undefined,
145
228
  timeZone: 'UTC',
146
- });
229
+ }).replace(/\s(am|pm)/i, '');
147
230
  }
148
231
 
149
232
  function formatMinutes(value: Date): string {
@@ -156,6 +239,8 @@ export default defineComponent({
156
239
  buttonGroupStyles,
157
240
  buttonGroupItemStyles,
158
241
  proxyModelValue,
242
+ proxyTimeFormat,
243
+ hoursRange,
159
244
  hoursOptions,
160
245
  minutesOptions,
161
246
  formatHours,
@@ -1 +1,7 @@
1
+ export enum DateTimePickerTimeFormat {
2
+ Auto = 'auto',
3
+ H12 = 'h12',
4
+ H23 = 'h23',
5
+ }
6
+
1
7
  export { InputBoxSize as DateTimePickerSize } from '../or-input-box-v3';
@@ -11,7 +11,4 @@ export const DateTimePickerDatePopover: string[] = [
11
11
  'w-[298px]',
12
12
  ];
13
13
 
14
- export const DateTimePickerTimePopover: string[] = [
15
- // Box
16
- 'w-[224px]',
17
- ];
14
+ export const DateTimePickerTimePopover: string[] = [];
@@ -31,6 +31,7 @@
31
31
  v-model="draftModelValue"
32
32
  v-dropdown-open="togglePopover"
33
33
  v-dropdown-close="closePopover"
34
+ :format="format"
34
35
  :required="required"
35
36
  :readonly="readonly"
36
37
  :disabled="disabled"
@@ -54,11 +55,13 @@
54
55
  <OrDateTimePickerTimeSelect
55
56
  v-model="draftModelValue"
56
57
  :initial-value="initialModelValue"
58
+ :format="format"
57
59
  :hours-filter="hoursFilter"
58
60
  :minutes-filter="minutesFilter"
59
61
  />
60
62
 
61
63
  <OrDateTimePickerPopoverFooter
64
+ :disabled="isInvalidDraftModelValue"
62
65
  @apply="apply(); popover.close()"
63
66
  @reset="reset(); popover.close()"
64
67
  />
@@ -118,7 +121,7 @@ import { OrIconV3 as OrIcon } from '../or-icon-v3';
118
121
  import { OrInputBoxV3 as OrInputBox } from '../or-input-box-v3';
119
122
  import { OrLabelV3 as OrLabel } from '../or-label-v3';
120
123
  import { OrPopoverV3 as OrPopover } from '../or-popover-v3';
121
- import { TimePickerSize } from './props';
124
+ import { TimePickerFormat, TimePickerSize } from './props';
122
125
  import { TimePicker, TimePickerPopover } from './styles';
123
126
 
124
127
  export default defineComponent({
@@ -155,6 +158,11 @@ export default defineComponent({
155
158
  default: undefined,
156
159
  },
157
160
 
161
+ format: {
162
+ type: String as PropType<`${TimePickerFormat}`>,
163
+ default: TimePickerFormat.Auto,
164
+ },
165
+
158
166
  hoursFilter: {
159
167
  type: Function as PropType<FilterFunction>,
160
168
  default: undefined,
@@ -259,6 +267,20 @@ export default defineComponent({
259
267
  draftModelValue.value = value;
260
268
  }, { immediate: true });
261
269
 
270
+ const isInvalidDraftModelValue = computed(() => {
271
+ if (draftModelValue.value) {
272
+ if (props.hoursFilter && !props.hoursFilter(draftModelValue.value)) {
273
+ return true;
274
+ }
275
+
276
+ if (props.minutesFilter && !props.minutesFilter(draftModelValue.value)) {
277
+ return true;
278
+ }
279
+ }
280
+
281
+ return false;
282
+ });
283
+
262
284
  // Methods
263
285
  function apply(): void {
264
286
  proxyModelValue.value = draftModelValue.value ?? initialModelValue;
@@ -293,6 +315,7 @@ export default defineComponent({
293
315
  function formatTimeAlt(value?: Date): string {
294
316
  return value?.toLocaleString(navigator.language, {
295
317
  timeStyle: 'short',
318
+ hourCycle: props.format !== TimePickerFormat.Auto ? props.format : undefined,
296
319
  timeZone: 'UTC',
297
320
  }) ?? '--';
298
321
  }
@@ -308,6 +331,7 @@ export default defineComponent({
308
331
  initialModelValue,
309
332
  proxyModelValue,
310
333
  draftModelValue,
334
+ isInvalidDraftModelValue,
311
335
  apply,
312
336
  reset,
313
337
  togglePopover,
@@ -1 +1,2 @@
1
+ export { DateTimePickerTimeFormat as TimePickerFormat } from '../or-date-time-picker-v3';
1
2
  export { InputBoxSize as TimePickerSize } from '../or-input-box-v3';
@@ -6,7 +6,4 @@ export const TimePicker: string[] = [
6
6
  'gap-xs',
7
7
  ];
8
8
 
9
- export const TimePickerPopover: string[] = [
10
- // Box
11
- 'w-[224px]',
12
- ];
9
+ export const TimePickerPopover: string[] = [];