@mekari/pixel3-date-picker 0.0.3-dev.0 → 0.1.0-dev.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/dist/calendar-panel.d.mts +12 -6
  2. package/dist/calendar-panel.d.ts +12 -6
  3. package/dist/calendar-panel.js +163 -85
  4. package/dist/calendar-panel.mjs +14 -13
  5. package/dist/{chunk-EYTJIMSM.mjs → chunk-26K3LMTE.mjs} +32 -11
  6. package/dist/{chunk-5PISTT2K.mjs → chunk-5MFHZK63.mjs} +4 -4
  7. package/dist/{chunk-XQLKPPRN.mjs → chunk-5VRVDIXN.mjs} +47 -0
  8. package/dist/{chunk-NU6HYEPT.mjs → chunk-64EO4HV7.mjs} +1 -1
  9. package/dist/{chunk-ZS4JQRK3.mjs → chunk-7CLF67SP.mjs} +1 -1
  10. package/dist/{chunk-NIUQXHGQ.mjs → chunk-E5BRVBZ2.mjs} +19 -1
  11. package/dist/{chunk-KTADGCWP.mjs → chunk-FPRON3EM.mjs} +14 -14
  12. package/dist/chunk-IRNTTSB7.mjs +144 -0
  13. package/dist/chunk-KTYQJMW4.mjs +35 -0
  14. package/dist/chunk-MO5D3TCF.mjs +113 -0
  15. package/dist/{chunk-HJ4V3PM6.mjs → chunk-O43S64IA.mjs} +4 -4
  16. package/dist/{chunk-NVULZQVI.mjs → chunk-OMV7LXBW.mjs} +1 -1
  17. package/dist/chunk-OYJNIILC.mjs +40 -0
  18. package/dist/{chunk-3RCUXNBN.mjs → chunk-P7JOEQIL.mjs} +9 -6
  19. package/dist/{chunk-26Y3AVJW.mjs → chunk-U7O52D6B.mjs} +13 -1
  20. package/dist/{chunk-JZ2KFYWF.mjs → chunk-WK62QUOT.mjs} +1 -1
  21. package/dist/components/calendar/index.js +83 -51
  22. package/dist/components/calendar/index.mjs +8 -7
  23. package/dist/components/calendar/table-date.js +51 -19
  24. package/dist/components/calendar/table-date.mjs +5 -4
  25. package/dist/components/calendar/table-month.js +48 -16
  26. package/dist/components/calendar/table-month.mjs +6 -5
  27. package/dist/components/calendar/table-year.js +48 -16
  28. package/dist/components/calendar/table-year.mjs +6 -5
  29. package/dist/components/parts/index.d.mts +1 -0
  30. package/dist/components/parts/index.d.ts +1 -0
  31. package/dist/components/parts/index.js +34 -0
  32. package/dist/components/parts/index.mjs +7 -3
  33. package/dist/components/parts/time.d.mts +32 -0
  34. package/dist/components/parts/time.d.ts +32 -0
  35. package/dist/components/parts/time.js +59 -0
  36. package/dist/components/parts/time.mjs +7 -0
  37. package/dist/composables/useCalendar.d.mts +8 -1
  38. package/dist/composables/useCalendar.d.ts +8 -1
  39. package/dist/composables/useCalendar.mjs +2 -2
  40. package/dist/composables/useCalendarRange.mjs +2 -2
  41. package/dist/composables/useTime.d.mts +96 -0
  42. package/dist/composables/useTime.d.ts +96 -0
  43. package/dist/composables/useTime.js +185 -0
  44. package/dist/composables/useTime.mjs +9 -0
  45. package/dist/date-picker.d.mts +91 -3
  46. package/dist/date-picker.d.ts +91 -3
  47. package/dist/date-picker.js +487 -118
  48. package/dist/date-picker.mjs +19 -15
  49. package/dist/index.d.mts +7 -0
  50. package/dist/index.d.ts +7 -0
  51. package/dist/index.js +487 -118
  52. package/dist/index.mjs +19 -15
  53. package/dist/metafile-cjs.json +1 -1
  54. package/dist/metafile-esm.json +1 -1
  55. package/dist/modules/date-picker.hooks.js +3 -0
  56. package/dist/modules/date-picker.hooks.mjs +4 -4
  57. package/dist/modules/date-picker.locales.mjs +2 -2
  58. package/dist/modules/date-picker.props.d.mts +83 -4
  59. package/dist/modules/date-picker.props.d.ts +83 -4
  60. package/dist/modules/date-picker.props.js +50 -2
  61. package/dist/modules/date-picker.props.mjs +5 -3
  62. package/dist/time-panel.d.mts +98 -0
  63. package/dist/time-panel.d.ts +98 -0
  64. package/dist/time-panel.js +665 -0
  65. package/dist/time-panel.mjs +18 -0
  66. package/dist/utils/base.d.mts +3 -1
  67. package/dist/utils/base.d.ts +3 -1
  68. package/dist/utils/base.js +20 -0
  69. package/dist/utils/base.mjs +5 -1
  70. package/dist/utils/date.d.mts +2 -1
  71. package/dist/utils/date.d.ts +2 -1
  72. package/dist/utils/date.js +13 -0
  73. package/dist/utils/date.mjs +3 -1
  74. package/dist/utils/dom.d.mts +18 -0
  75. package/dist/utils/dom.d.ts +18 -0
  76. package/dist/utils/dom.js +62 -0
  77. package/dist/utils/dom.mjs +9 -0
  78. package/package.json +6 -6
  79. /package/dist/{chunk-FTR7OMCT.mjs → chunk-MRP3X6QP.mjs} +0 -0
@@ -1,16 +1,19 @@
1
+ import {
2
+ useDatePicker
3
+ } from "./chunk-P7JOEQIL.mjs";
1
4
  import {
2
5
  CalendarPanel,
3
6
  CalendarPanelRange
4
- } from "./chunk-KTADGCWP.mjs";
7
+ } from "./chunk-FPRON3EM.mjs";
8
+ import {
9
+ TimePanel
10
+ } from "./chunk-MO5D3TCF.mjs";
5
11
  import {
6
12
  datePickerProps
7
- } from "./chunk-XQLKPPRN.mjs";
13
+ } from "./chunk-5VRVDIXN.mjs";
8
14
  import {
9
15
  DatePickerProvider
10
16
  } from "./chunk-VACMCDOZ.mjs";
11
- import {
12
- useDatePicker
13
- } from "./chunk-3RCUXNBN.mjs";
14
17
  import {
15
18
  __name
16
19
  } from "./chunk-QZ7VFGWC.mjs";
@@ -46,7 +49,8 @@ var MpDatePicker = defineComponent({
46
49
  onBlur,
47
50
  onClear,
48
51
  onInputChange,
49
- onEmitModelValue
52
+ onEmitModelValue,
53
+ handleForceFocusToInput
50
54
  } = useDatePicker(props, emit);
51
55
  DatePickerProvider({
52
56
  rootProps: props,
@@ -56,7 +60,9 @@ var MpDatePicker = defineComponent({
56
60
  const {
57
61
  root,
58
62
  popoverContent
59
- } = datePickerSlotRecipe();
63
+ } = datePickerSlotRecipe({
64
+ variant: props.type === "time" ? "time" : "date"
65
+ });
60
66
  const inputNode = _createVNode(MpInputGroup, null, {
61
67
  default: () => [_createVNode(MpInput, {
62
68
  "id": getId,
@@ -78,9 +84,11 @@ var MpDatePicker = defineComponent({
78
84
  target.focus();
79
85
  }
80
86
  }, null), _createVNode(MpInputRightAddon, null, {
81
- default: () => [_createVNode(MpIcon, {
82
- "name": "calendar"
83
- }, null)]
87
+ default: () => [_createVNode("div", {
88
+ "onClick": () => handleForceFocusToInput()
89
+ }, [_createVNode(MpIcon, {
90
+ "name": props.type === "time" ? "time" : "calendar"
91
+ }, null)])]
84
92
  })]
85
93
  });
86
94
  const calendarPanelAttrs = {
@@ -91,11 +99,24 @@ var MpDatePicker = defineComponent({
91
99
  disabledMonth: props.disabledMonth,
92
100
  disabledYear: props.disabledYear
93
101
  };
94
- const panelNode = isUseRange.value ? _createVNode(CalendarPanelRange, _mergeProps(calendarPanelAttrs, {
102
+ const datePanelNode = isUseRange.value ? _createVNode(CalendarPanelRange, _mergeProps(calendarPanelAttrs, {
95
103
  "modelValue": innerValue.value
96
104
  }), null) : _createVNode(CalendarPanel, _mergeProps(calendarPanelAttrs, {
97
105
  "modelValue": innerValue.value
98
106
  }), null);
107
+ const timePanelNode = _createVNode(TimePanel, {
108
+ "modelValue": innerValue.value,
109
+ "onUpdate:modelValue": onEmitModelValue,
110
+ "disabledTime": props.disabledTime,
111
+ "isShowHour": props.isShowHour,
112
+ "isShowMinute": props.isShowMinute,
113
+ "isShowSecond": props.isShowSecond,
114
+ "hourStep": props.hourStep,
115
+ "minuteStep": props.minuteStep,
116
+ "secondStep": props.minuteStep,
117
+ "isUse12h": props.isUse12h
118
+ }, null);
119
+ const panelNode = props.type === "time" ? timePanelNode : datePanelNode;
99
120
  const withPopover = _createVNode(MpPopover, {
100
121
  "id": getId,
101
122
  "isManual": true,
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  Month
3
3
  } from "./chunk-3VROFGJH.mjs";
4
- import {
5
- createDate
6
- } from "./chunk-26Y3AVJW.mjs";
7
4
  import {
8
5
  chunk
9
- } from "./chunk-NIUQXHGQ.mjs";
6
+ } from "./chunk-E5BRVBZ2.mjs";
7
+ import {
8
+ createDate
9
+ } from "./chunk-U7O52D6B.mjs";
10
10
  import {
11
11
  __name
12
12
  } from "./chunk-QZ7VFGWC.mjs";
@@ -1,4 +1,49 @@
1
1
  // src/modules/date-picker.props.ts
2
+ var timePanelProps = {
3
+ modelValue: {
4
+ type: Date
5
+ },
6
+ defaultDate: {
7
+ type: Date,
8
+ default() {
9
+ const date = /* @__PURE__ */ new Date();
10
+ date.setHours(0, 0, 0, 0);
11
+ return date;
12
+ }
13
+ },
14
+ isShowHour: {
15
+ type: Boolean,
16
+ default: true
17
+ },
18
+ isShowMinute: {
19
+ type: Boolean,
20
+ default: true
21
+ },
22
+ isShowSecond: {
23
+ type: Boolean,
24
+ default: true
25
+ },
26
+ hourStep: {
27
+ type: Number,
28
+ default: 1
29
+ },
30
+ minuteStep: {
31
+ type: Number,
32
+ default: 1
33
+ },
34
+ secondStep: {
35
+ type: Number,
36
+ default: 1
37
+ },
38
+ isUse12h: {
39
+ type: Boolean,
40
+ default: false
41
+ },
42
+ disabledTime: {
43
+ type: Function,
44
+ default: () => false
45
+ }
46
+ };
2
47
  var calendarPanelProps = {
3
48
  modelValue: {
4
49
  type: Date
@@ -63,6 +108,7 @@ var calendarPanelRangeProps = {
63
108
  }
64
109
  };
65
110
  var datePickerProps = {
111
+ ...timePanelProps,
66
112
  id: {
67
113
  type: String
68
114
  },
@@ -153,6 +199,7 @@ var datePickerProps = {
153
199
  };
154
200
 
155
201
  export {
202
+ timePanelProps,
156
203
  calendarPanelProps,
157
204
  calendarPanelRangeProps,
158
205
  datePickerProps
@@ -6,7 +6,7 @@ import {
6
6
  } from "./chunk-AGAA7XTC.mjs";
7
7
  import {
8
8
  chunk
9
- } from "./chunk-NIUQXHGQ.mjs";
9
+ } from "./chunk-E5BRVBZ2.mjs";
10
10
  import {
11
11
  __name
12
12
  } from "./chunk-QZ7VFGWC.mjs";
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-IZITNJFI.mjs";
4
4
  import {
5
5
  assign
6
- } from "./chunk-NIUQXHGQ.mjs";
6
+ } from "./chunk-E5BRVBZ2.mjs";
7
7
  import {
8
8
  __name
9
9
  } from "./chunk-QZ7VFGWC.mjs";
@@ -47,10 +47,28 @@ var assign = /* @__PURE__ */ __name((initial, override) => {
47
47
  };
48
48
  }, {});
49
49
  }, "assign");
50
+ function padNumber(value) {
51
+ value = parseInt(value, 10);
52
+ return value < 10 ? `0${value}` : `${value}`;
53
+ }
54
+ __name(padNumber, "padNumber");
55
+ function generateOptions(length, step) {
56
+ if (step <= 0) {
57
+ step = 1;
58
+ }
59
+ const arr = [];
60
+ for (let i = 0; i < length; i += step) {
61
+ arr.push(i);
62
+ }
63
+ return arr;
64
+ }
65
+ __name(generateOptions, "generateOptions");
50
66
 
51
67
  export {
52
68
  chunk,
53
69
  isObject,
54
70
  pick,
55
- assign
71
+ assign,
72
+ padNumber,
73
+ generateOptions
56
74
  };
@@ -1,34 +1,34 @@
1
1
  import {
2
- calendarPanelProps,
3
- calendarPanelRangeProps
4
- } from "./chunk-XQLKPPRN.mjs";
2
+ getLocale
3
+ } from "./chunk-7CLF67SP.mjs";
5
4
  import {
6
5
  TableDate
7
- } from "./chunk-NU6HYEPT.mjs";
6
+ } from "./chunk-64EO4HV7.mjs";
8
7
  import {
9
8
  TableMonth
10
- } from "./chunk-5PISTT2K.mjs";
9
+ } from "./chunk-5MFHZK63.mjs";
11
10
  import {
12
11
  TableYear
13
- } from "./chunk-HJ4V3PM6.mjs";
12
+ } from "./chunk-O43S64IA.mjs";
13
+ import {
14
+ calendarPanelProps,
15
+ calendarPanelRangeProps
16
+ } from "./chunk-5VRVDIXN.mjs";
14
17
  import {
15
18
  useCalendar
16
- } from "./chunk-NVULZQVI.mjs";
19
+ } from "./chunk-OMV7LXBW.mjs";
17
20
  import {
18
21
  useCalendarRange
19
- } from "./chunk-JZ2KFYWF.mjs";
20
- import {
21
- useDatePickerContext
22
- } from "./chunk-VACMCDOZ.mjs";
22
+ } from "./chunk-WK62QUOT.mjs";
23
23
  import {
24
24
  addDays,
25
25
  createDate,
26
26
  isDateBetween,
27
27
  startOfWeek
28
- } from "./chunk-26Y3AVJW.mjs";
28
+ } from "./chunk-U7O52D6B.mjs";
29
29
  import {
30
- getLocale
31
- } from "./chunk-ZS4JQRK3.mjs";
30
+ useDatePickerContext
31
+ } from "./chunk-VACMCDOZ.mjs";
32
32
  import {
33
33
  __name
34
34
  } from "./chunk-QZ7VFGWC.mjs";
@@ -0,0 +1,144 @@
1
+ import {
2
+ generateOptions,
3
+ padNumber
4
+ } from "./chunk-E5BRVBZ2.mjs";
5
+ import {
6
+ isValidDate
7
+ } from "./chunk-U7O52D6B.mjs";
8
+ import {
9
+ __name
10
+ } from "./chunk-QZ7VFGWC.mjs";
11
+
12
+ // src/composables/useTime.ts
13
+ import { computed, ref } from "vue";
14
+ function useTime(props) {
15
+ const innerValue = ref(props.modelValue);
16
+ const innerDateValue = computed(() => isValidDate(props.modelValue) ? props.modelValue : props.defaultDate);
17
+ const columns = computed(() => {
18
+ const cols = [];
19
+ if (props.isShowHour)
20
+ cols.push({
21
+ type: "hour",
22
+ list: getHoursList()
23
+ });
24
+ if (props.isShowMinute)
25
+ cols.push({
26
+ type: "minute",
27
+ list: getMinutesList()
28
+ });
29
+ if (props.isShowSecond)
30
+ cols.push({
31
+ type: "second",
32
+ list: getSecondsList()
33
+ });
34
+ if (props.isUse12h)
35
+ cols.push({
36
+ type: "ampm",
37
+ list: getAMPMList()
38
+ });
39
+ return cols.filter((v) => v.list.length > 0);
40
+ });
41
+ function getHoursList() {
42
+ return generateOptions(props.isUse12h ? 12 : 24, props.hourStep).map((num) => {
43
+ const innerDate = new Date(innerDateValue.value);
44
+ let text = padNumber(num);
45
+ if (props.isUse12h) {
46
+ if (num === 0) {
47
+ text = "12";
48
+ }
49
+ if (innerDate.getHours() >= 12) {
50
+ num += 12;
51
+ }
52
+ }
53
+ const value = innerDate.setHours(num);
54
+ return {
55
+ value,
56
+ text
57
+ };
58
+ });
59
+ }
60
+ __name(getHoursList, "getHoursList");
61
+ function getMinutesList() {
62
+ return generateOptions(60, props.minuteStep).map((num) => {
63
+ const value = new Date(innerDateValue.value).setMinutes(num);
64
+ return {
65
+ value,
66
+ text: padNumber(num)
67
+ };
68
+ });
69
+ }
70
+ __name(getMinutesList, "getMinutesList");
71
+ function getSecondsList() {
72
+ return generateOptions(60, props.secondStep).map((num) => {
73
+ const value = new Date(innerDateValue.value).setSeconds(num);
74
+ return {
75
+ value,
76
+ text: padNumber(num)
77
+ };
78
+ });
79
+ }
80
+ __name(getSecondsList, "getSecondsList");
81
+ function getAMPMList() {
82
+ return ["AM", "PM"].map((text, i) => {
83
+ const innerDate = new Date(innerDateValue.value);
84
+ const value = innerDate.setHours(innerDate.getHours() % 12 + i * 12);
85
+ return {
86
+ text,
87
+ value
88
+ };
89
+ });
90
+ }
91
+ __name(getAMPMList, "getAMPMList");
92
+ function isDisabledTime(value) {
93
+ return props.disabledTime(new Date(value));
94
+ }
95
+ __name(isDisabledTime, "isDisabledTime");
96
+ function isDisabledHour(date) {
97
+ const value = new Date(date);
98
+ return isDisabledTime(value) && isDisabledTime(value.setMinutes(0, 0, 0)) && isDisabledTime(value.setMinutes(59, 59, 999));
99
+ }
100
+ __name(isDisabledHour, "isDisabledHour");
101
+ function isDisabledMinute(date) {
102
+ const value = new Date(date);
103
+ return isDisabledTime(value) && isDisabledTime(value.setSeconds(0, 0)) && isDisabledTime(value.setSeconds(59, 999));
104
+ }
105
+ __name(isDisabledMinute, "isDisabledMinute");
106
+ function isDisabledAMPM(date) {
107
+ const value = new Date(date);
108
+ const minHour = value.getHours() < 12 ? 0 : 12;
109
+ const maxHour = minHour + 11;
110
+ return isDisabledTime(value) && isDisabledTime(value.setHours(minHour, 0, 0, 0)) && isDisabledTime(value.setHours(maxHour, 59, 59, 999));
111
+ }
112
+ __name(isDisabledAMPM, "isDisabledAMPM");
113
+ function isDisabled(date, type) {
114
+ if (type === "hour") {
115
+ return isDisabledHour(date);
116
+ }
117
+ if (type === "minute") {
118
+ return isDisabledMinute(date);
119
+ }
120
+ if (type === "ampm") {
121
+ return isDisabledAMPM(date);
122
+ }
123
+ return isDisabledTime(date);
124
+ }
125
+ __name(isDisabled, "isDisabled");
126
+ return {
127
+ innerValue,
128
+ columns,
129
+ getHoursList,
130
+ getMinutesList,
131
+ getSecondsList,
132
+ getAMPMList,
133
+ isDisabledTime,
134
+ isDisabledHour,
135
+ isDisabledMinute,
136
+ isDisabledAMPM,
137
+ isDisabled
138
+ };
139
+ }
140
+ __name(useTime, "useTime");
141
+
142
+ export {
143
+ useTime
144
+ };
@@ -0,0 +1,35 @@
1
+ // src/components/parts/time.tsx
2
+ import { createVNode as _createVNode } from "vue";
3
+ import { defineComponent } from "vue";
4
+ import { timeItemRecipe } from "@mekari/pixel3-styled-system/recipes";
5
+ var TimeItem = defineComponent({
6
+ name: "TimeItem",
7
+ props: {
8
+ status: {
9
+ type: String,
10
+ default: "default"
11
+ },
12
+ isDisabled: {
13
+ type: Boolean,
14
+ default: false
15
+ }
16
+ },
17
+ setup(props, {
18
+ slots
19
+ }) {
20
+ return () => {
21
+ const classes = timeItemRecipe({
22
+ status: props.status
23
+ });
24
+ return _createVNode("button", {
25
+ "disabled": props.isDisabled,
26
+ "data-status": props.status,
27
+ "class": classes
28
+ }, [slots.default()]);
29
+ };
30
+ }
31
+ });
32
+
33
+ export {
34
+ TimeItem
35
+ };
@@ -0,0 +1,113 @@
1
+ import {
2
+ getScrollParent,
3
+ scrollTo
4
+ } from "./chunk-OYJNIILC.mjs";
5
+ import {
6
+ timePanelProps
7
+ } from "./chunk-5VRVDIXN.mjs";
8
+ import {
9
+ TimeItem
10
+ } from "./chunk-KTYQJMW4.mjs";
11
+ import {
12
+ useTime
13
+ } from "./chunk-IRNTTSB7.mjs";
14
+ import {
15
+ isValidDate
16
+ } from "./chunk-U7O52D6B.mjs";
17
+ import {
18
+ __name
19
+ } from "./chunk-QZ7VFGWC.mjs";
20
+
21
+ // src/time-panel.tsx
22
+ import { createVNode as _createVNode, mergeProps as _mergeProps } from "vue";
23
+ import { defineComponent, nextTick, ref, onMounted } from "vue";
24
+ import { css } from "@mekari/pixel3-styled-system/css";
25
+ var TimePanel = defineComponent({
26
+ name: "MpTimePanel",
27
+ props: timePanelProps,
28
+ emits: ["update:modelValue"],
29
+ setup(props, {
30
+ emit
31
+ }) {
32
+ const columnNode = ref();
33
+ const {
34
+ innerValue,
35
+ columns,
36
+ isDisabled
37
+ } = useTime(props);
38
+ function handleSelectTime(col, item) {
39
+ const date = new Date(item.value);
40
+ innerValue.value = date;
41
+ emit("update:modelValue", date);
42
+ nextTick(() => handleScrollToSelected());
43
+ }
44
+ __name(handleSelectTime, "handleSelectTime");
45
+ function getTimeStatus(value, type) {
46
+ var _a;
47
+ const cellDate = new Date(value);
48
+ if (isDisabled(value, type)) {
49
+ return "disabled";
50
+ }
51
+ if (cellDate.getTime() === ((_a = innerValue.value) == null ? void 0 : _a.getTime()) && isValidDate(innerValue.value)) {
52
+ return "selected";
53
+ }
54
+ return "default";
55
+ }
56
+ __name(getTimeStatus, "getTimeStatus");
57
+ function getTimeAttrs(value, type) {
58
+ const status = getTimeStatus(value, type);
59
+ return {
60
+ status,
61
+ isDisabled: status === "disabled" || void 0,
62
+ "data-selected": status === "selected" || void 0
63
+ };
64
+ }
65
+ __name(getTimeAttrs, "getTimeAttrs");
66
+ function handleScrollToSelected(duration = 0) {
67
+ var _a;
68
+ const elements = (_a = columnNode.value) == null ? void 0 : _a.querySelectorAll("[data-selected=true]");
69
+ elements == null ? void 0 : elements.forEach((element) => {
70
+ const scrollElement = getScrollParent(element, columnNode.value);
71
+ if (scrollElement) {
72
+ const to = element.offsetTop - 10;
73
+ scrollTo(scrollElement, to, duration);
74
+ }
75
+ });
76
+ }
77
+ __name(handleScrollToSelected, "handleScrollToSelected");
78
+ onMounted(() => {
79
+ nextTick(() => handleScrollToSelected(0));
80
+ });
81
+ return () => {
82
+ return _createVNode("div", {
83
+ "ref": columnNode,
84
+ "class": css({
85
+ display: "flex",
86
+ flexDirection: "row",
87
+ gap: "0.5"
88
+ })
89
+ }, [columns.value.map((col, colIndex) => _createVNode("ul", {
90
+ "data-index": colIndex,
91
+ "data-type": col.type,
92
+ "class": css({
93
+ display: "flex",
94
+ flexDirection: "column",
95
+ height: "224px",
96
+ overflowY: "scroll",
97
+ overflowX: "hidden",
98
+ py: "10px"
99
+ })
100
+ }, [col.list.map((item, itemIndex) => _createVNode("li", {
101
+ "onClick": () => handleSelectTime(col, item)
102
+ }, [_createVNode(TimeItem, _mergeProps({
103
+ "data-index": itemIndex
104
+ }, getTimeAttrs(item.value, col.type)), {
105
+ default: () => [item.text]
106
+ })]))]))]);
107
+ };
108
+ }
109
+ });
110
+
111
+ export {
112
+ TimePanel
113
+ };
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  YearItem
3
3
  } from "./chunk-EQWT6VDG.mjs";
4
- import {
5
- createDate
6
- } from "./chunk-26Y3AVJW.mjs";
7
4
  import {
8
5
  chunk
9
- } from "./chunk-NIUQXHGQ.mjs";
6
+ } from "./chunk-E5BRVBZ2.mjs";
7
+ import {
8
+ createDate
9
+ } from "./chunk-U7O52D6B.mjs";
10
10
  import {
11
11
  __name
12
12
  } from "./chunk-QZ7VFGWC.mjs";
@@ -3,7 +3,7 @@ import {
3
3
  getNextMonth,
4
4
  getPreviousMonth,
5
5
  isValidDate
6
- } from "./chunk-26Y3AVJW.mjs";
6
+ } from "./chunk-U7O52D6B.mjs";
7
7
  import {
8
8
  __name
9
9
  } from "./chunk-QZ7VFGWC.mjs";
@@ -0,0 +1,40 @@
1
+ import {
2
+ __name
3
+ } from "./chunk-QZ7VFGWC.mjs";
4
+
5
+ // src/utils/dom.ts
6
+ function getScrollParent(node, until = document.body) {
7
+ if (!node || node === until) {
8
+ return null;
9
+ }
10
+ const style = /* @__PURE__ */ __name((value, prop) => getComputedStyle(value, null).getPropertyValue(prop), "style");
11
+ const regex = /(auto|scroll)/;
12
+ const scroll = regex.test(style(node, "overflow") + style(node, "overflow-y") + style(node, "overflow-x"));
13
+ return scroll ? node : getScrollParent(node.parentElement, until);
14
+ }
15
+ __name(getScrollParent, "getScrollParent");
16
+ function scrollTo(element, to, duration = 0) {
17
+ if (duration <= 0) {
18
+ requestAnimationFrame(() => {
19
+ element.scrollTop = to;
20
+ });
21
+ return;
22
+ }
23
+ const difference = to - element.scrollTop;
24
+ const tick = difference / duration * 10;
25
+ requestAnimationFrame(() => {
26
+ const scrollTop = element.scrollTop + tick;
27
+ if (scrollTop >= to) {
28
+ element.scrollTop = to;
29
+ return;
30
+ }
31
+ element.scrollTop = scrollTop;
32
+ scrollTo(element, to, duration - 10);
33
+ });
34
+ }
35
+ __name(scrollTo, "scrollTo");
36
+
37
+ export {
38
+ getScrollParent,
39
+ scrollTo
40
+ };
@@ -1,13 +1,13 @@
1
- import {
2
- isValidDate,
3
- isValidRangeDate
4
- } from "./chunk-26Y3AVJW.mjs";
5
1
  import {
6
2
  getLocale
7
- } from "./chunk-ZS4JQRK3.mjs";
3
+ } from "./chunk-7CLF67SP.mjs";
8
4
  import {
9
5
  isObject
10
- } from "./chunk-NIUQXHGQ.mjs";
6
+ } from "./chunk-E5BRVBZ2.mjs";
7
+ import {
8
+ isValidDate,
9
+ isValidRangeDate
10
+ } from "./chunk-U7O52D6B.mjs";
11
11
  import {
12
12
  __name
13
13
  } from "./chunk-QZ7VFGWC.mjs";
@@ -128,6 +128,7 @@ function useDatePicker(props, emit) {
128
128
  }
129
129
  if (isValidValueAndNotDisabled(date)) {
130
130
  innerValueDate.value = date;
131
+ onEmitModelValue(innerValueDate.value);
131
132
  nextTick(() => {
132
133
  isOutside.value = true;
133
134
  isInnerInvalid.value = false;
@@ -151,6 +152,8 @@ function useDatePicker(props, emit) {
151
152
  } else {
152
153
  emit("update:modelValue", dateToValue(new Date(value)));
153
154
  }
155
+ if (props.type === "time")
156
+ return;
154
157
  nextTick(() => {
155
158
  isOutside.value = true;
156
159
  onBlur();
@@ -98,6 +98,17 @@ function isDateBetween(date, min, max) {
98
98
  return _date.getTime() >= _min.getTime() && _date.getTime() <= _max.getTime();
99
99
  }
100
100
  __name(isDateBetween, "isDateBetween");
101
+ function getValidDate(value, ...backup) {
102
+ const date = new Date(value);
103
+ if (isValidDate(date)) {
104
+ return date;
105
+ }
106
+ if (backup.length) {
107
+ return getValidDate(backup[0], ...backup.slice(1));
108
+ }
109
+ return /* @__PURE__ */ new Date();
110
+ }
111
+ __name(getValidDate, "getValidDate");
101
112
 
102
113
  export {
103
114
  createDate,
@@ -111,5 +122,6 @@ export {
111
122
  getNextMonth,
112
123
  getPreviousMonth,
113
124
  addDays,
114
- isDateBetween
125
+ isDateBetween,
126
+ getValidDate
115
127
  };