@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.
- package/dist/calendar-panel.d.mts +12 -6
- package/dist/calendar-panel.d.ts +12 -6
- package/dist/calendar-panel.js +163 -85
- package/dist/calendar-panel.mjs +14 -13
- package/dist/{chunk-EYTJIMSM.mjs → chunk-26K3LMTE.mjs} +32 -11
- package/dist/{chunk-5PISTT2K.mjs → chunk-5MFHZK63.mjs} +4 -4
- package/dist/{chunk-XQLKPPRN.mjs → chunk-5VRVDIXN.mjs} +47 -0
- package/dist/{chunk-NU6HYEPT.mjs → chunk-64EO4HV7.mjs} +1 -1
- package/dist/{chunk-ZS4JQRK3.mjs → chunk-7CLF67SP.mjs} +1 -1
- package/dist/{chunk-NIUQXHGQ.mjs → chunk-E5BRVBZ2.mjs} +19 -1
- package/dist/{chunk-KTADGCWP.mjs → chunk-FPRON3EM.mjs} +14 -14
- package/dist/chunk-IRNTTSB7.mjs +144 -0
- package/dist/chunk-KTYQJMW4.mjs +35 -0
- package/dist/chunk-MO5D3TCF.mjs +113 -0
- package/dist/{chunk-HJ4V3PM6.mjs → chunk-O43S64IA.mjs} +4 -4
- package/dist/{chunk-NVULZQVI.mjs → chunk-OMV7LXBW.mjs} +1 -1
- package/dist/chunk-OYJNIILC.mjs +40 -0
- package/dist/{chunk-3RCUXNBN.mjs → chunk-P7JOEQIL.mjs} +9 -6
- package/dist/{chunk-26Y3AVJW.mjs → chunk-U7O52D6B.mjs} +13 -1
- package/dist/{chunk-JZ2KFYWF.mjs → chunk-WK62QUOT.mjs} +1 -1
- package/dist/components/calendar/index.js +83 -51
- package/dist/components/calendar/index.mjs +8 -7
- package/dist/components/calendar/table-date.js +51 -19
- package/dist/components/calendar/table-date.mjs +5 -4
- package/dist/components/calendar/table-month.js +48 -16
- package/dist/components/calendar/table-month.mjs +6 -5
- package/dist/components/calendar/table-year.js +48 -16
- package/dist/components/calendar/table-year.mjs +6 -5
- package/dist/components/parts/index.d.mts +1 -0
- package/dist/components/parts/index.d.ts +1 -0
- package/dist/components/parts/index.js +34 -0
- package/dist/components/parts/index.mjs +7 -3
- package/dist/components/parts/time.d.mts +32 -0
- package/dist/components/parts/time.d.ts +32 -0
- package/dist/components/parts/time.js +59 -0
- package/dist/components/parts/time.mjs +7 -0
- package/dist/composables/useCalendar.d.mts +8 -1
- package/dist/composables/useCalendar.d.ts +8 -1
- package/dist/composables/useCalendar.mjs +2 -2
- package/dist/composables/useCalendarRange.mjs +2 -2
- package/dist/composables/useTime.d.mts +96 -0
- package/dist/composables/useTime.d.ts +96 -0
- package/dist/composables/useTime.js +185 -0
- package/dist/composables/useTime.mjs +9 -0
- package/dist/date-picker.d.mts +91 -3
- package/dist/date-picker.d.ts +91 -3
- package/dist/date-picker.js +487 -118
- package/dist/date-picker.mjs +19 -15
- package/dist/index.d.mts +7 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +487 -118
- package/dist/index.mjs +19 -15
- package/dist/metafile-cjs.json +1 -1
- package/dist/metafile-esm.json +1 -1
- package/dist/modules/date-picker.hooks.js +3 -0
- package/dist/modules/date-picker.hooks.mjs +4 -4
- package/dist/modules/date-picker.locales.mjs +2 -2
- package/dist/modules/date-picker.props.d.mts +83 -4
- package/dist/modules/date-picker.props.d.ts +83 -4
- package/dist/modules/date-picker.props.js +50 -2
- package/dist/modules/date-picker.props.mjs +5 -3
- package/dist/time-panel.d.mts +98 -0
- package/dist/time-panel.d.ts +98 -0
- package/dist/time-panel.js +665 -0
- package/dist/time-panel.mjs +18 -0
- package/dist/utils/base.d.mts +3 -1
- package/dist/utils/base.d.ts +3 -1
- package/dist/utils/base.js +20 -0
- package/dist/utils/base.mjs +5 -1
- package/dist/utils/date.d.mts +2 -1
- package/dist/utils/date.d.ts +2 -1
- package/dist/utils/date.js +13 -0
- package/dist/utils/date.mjs +3 -1
- package/dist/utils/dom.d.mts +18 -0
- package/dist/utils/dom.d.ts +18 -0
- package/dist/utils/dom.js +62 -0
- package/dist/utils/dom.mjs +9 -0
- package/package.json +6 -6
- /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-
|
|
7
|
+
} from "./chunk-FPRON3EM.mjs";
|
|
8
|
+
import {
|
|
9
|
+
TimePanel
|
|
10
|
+
} from "./chunk-MO5D3TCF.mjs";
|
|
5
11
|
import {
|
|
6
12
|
datePickerProps
|
|
7
|
-
} from "./chunk-
|
|
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(
|
|
82
|
-
"
|
|
83
|
-
},
|
|
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
|
|
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-
|
|
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
|
|
@@ -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
|
-
|
|
3
|
-
|
|
4
|
-
} from "./chunk-XQLKPPRN.mjs";
|
|
2
|
+
getLocale
|
|
3
|
+
} from "./chunk-7CLF67SP.mjs";
|
|
5
4
|
import {
|
|
6
5
|
TableDate
|
|
7
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-64EO4HV7.mjs";
|
|
8
7
|
import {
|
|
9
8
|
TableMonth
|
|
10
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-5MFHZK63.mjs";
|
|
11
10
|
import {
|
|
12
11
|
TableYear
|
|
13
|
-
} from "./chunk-
|
|
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-
|
|
19
|
+
} from "./chunk-OMV7LXBW.mjs";
|
|
17
20
|
import {
|
|
18
21
|
useCalendarRange
|
|
19
|
-
} from "./chunk-
|
|
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-
|
|
28
|
+
} from "./chunk-U7O52D6B.mjs";
|
|
29
29
|
import {
|
|
30
|
-
|
|
31
|
-
} from "./chunk-
|
|
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-
|
|
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";
|
|
@@ -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-
|
|
3
|
+
} from "./chunk-7CLF67SP.mjs";
|
|
8
4
|
import {
|
|
9
5
|
isObject
|
|
10
|
-
} from "./chunk-
|
|
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
|
};
|