@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
|
@@ -0,0 +1,665 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
20
|
+
|
|
21
|
+
// src/time-panel.tsx
|
|
22
|
+
var time_panel_exports = {};
|
|
23
|
+
__export(time_panel_exports, {
|
|
24
|
+
TimePanel: () => TimePanel
|
|
25
|
+
});
|
|
26
|
+
module.exports = __toCommonJS(time_panel_exports);
|
|
27
|
+
var import_vue12 = require("vue");
|
|
28
|
+
var import_vue13 = require("vue");
|
|
29
|
+
|
|
30
|
+
// src/components/parts/date.tsx
|
|
31
|
+
var import_vue = require("vue");
|
|
32
|
+
var import_vue2 = require("vue");
|
|
33
|
+
var import_recipes = require("@mekari/pixel3-styled-system/recipes");
|
|
34
|
+
var Date2 = (0, import_vue2.defineComponent)({
|
|
35
|
+
name: "Date",
|
|
36
|
+
props: {
|
|
37
|
+
status: {
|
|
38
|
+
type: String
|
|
39
|
+
},
|
|
40
|
+
isDisabled: {
|
|
41
|
+
type: Boolean,
|
|
42
|
+
default: false
|
|
43
|
+
},
|
|
44
|
+
isShowPinbar: {
|
|
45
|
+
type: Boolean,
|
|
46
|
+
default: false
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
setup(props, {
|
|
50
|
+
slots
|
|
51
|
+
}) {
|
|
52
|
+
return () => {
|
|
53
|
+
const dateItemClasses = (0, import_recipes.dateItemRecipe)({
|
|
54
|
+
status: props.status
|
|
55
|
+
});
|
|
56
|
+
const {
|
|
57
|
+
root,
|
|
58
|
+
pinbar
|
|
59
|
+
} = (0, import_recipes.pinbarSlotRecipe)();
|
|
60
|
+
return (0, import_vue.createVNode)("button", {
|
|
61
|
+
"disabled": props.isDisabled,
|
|
62
|
+
"data-status": props.status,
|
|
63
|
+
"class": dateItemClasses
|
|
64
|
+
}, [slots.default(), props.isShowPinbar && (0, import_vue.createVNode)("div", {
|
|
65
|
+
"class": root
|
|
66
|
+
}, [(0, import_vue.createVNode)("div", {
|
|
67
|
+
"class": pinbar
|
|
68
|
+
}, null)])]);
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
// src/components/parts/day.tsx
|
|
74
|
+
var import_vue3 = require("vue");
|
|
75
|
+
var import_vue4 = require("vue");
|
|
76
|
+
var import_recipes2 = require("@mekari/pixel3-styled-system/recipes");
|
|
77
|
+
var Day = (0, import_vue4.defineComponent)({
|
|
78
|
+
name: "Day",
|
|
79
|
+
setup(props, {
|
|
80
|
+
slots
|
|
81
|
+
}) {
|
|
82
|
+
return () => {
|
|
83
|
+
return (0, import_vue3.createVNode)("div", {
|
|
84
|
+
"class": (0, import_recipes2.dayItemRecipe)()
|
|
85
|
+
}, [slots.default()]);
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
// src/components/parts/month.tsx
|
|
91
|
+
var import_vue5 = require("vue");
|
|
92
|
+
var import_vue6 = require("vue");
|
|
93
|
+
var import_recipes3 = require("@mekari/pixel3-styled-system/recipes");
|
|
94
|
+
var Month = (0, import_vue6.defineComponent)({
|
|
95
|
+
name: "Month",
|
|
96
|
+
props: {
|
|
97
|
+
status: {
|
|
98
|
+
type: String
|
|
99
|
+
},
|
|
100
|
+
isDisabled: {
|
|
101
|
+
type: Boolean,
|
|
102
|
+
default: false
|
|
103
|
+
}
|
|
104
|
+
},
|
|
105
|
+
setup(props, {
|
|
106
|
+
slots
|
|
107
|
+
}) {
|
|
108
|
+
return () => {
|
|
109
|
+
const classes = (0, import_recipes3.monthItemRecipe)({
|
|
110
|
+
status: props.status
|
|
111
|
+
});
|
|
112
|
+
return (0, import_vue5.createVNode)("button", {
|
|
113
|
+
"disabled": props.isDisabled,
|
|
114
|
+
"data-status": props.status,
|
|
115
|
+
"class": classes
|
|
116
|
+
}, [slots.default()]);
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
// src/components/parts/year.tsx
|
|
122
|
+
var import_vue7 = require("vue");
|
|
123
|
+
var import_vue8 = require("vue");
|
|
124
|
+
var import_recipes4 = require("@mekari/pixel3-styled-system/recipes");
|
|
125
|
+
var YearItem = (0, import_vue8.defineComponent)({
|
|
126
|
+
name: "YearItem",
|
|
127
|
+
props: {
|
|
128
|
+
status: {
|
|
129
|
+
type: String
|
|
130
|
+
},
|
|
131
|
+
isDisabled: {
|
|
132
|
+
type: Boolean,
|
|
133
|
+
default: false
|
|
134
|
+
}
|
|
135
|
+
},
|
|
136
|
+
setup(props, {
|
|
137
|
+
slots
|
|
138
|
+
}) {
|
|
139
|
+
return () => {
|
|
140
|
+
const classes = (0, import_recipes4.yearItemRecipe)({
|
|
141
|
+
status: props.status
|
|
142
|
+
});
|
|
143
|
+
return (0, import_vue7.createVNode)("button", {
|
|
144
|
+
"disabled": props.isDisabled,
|
|
145
|
+
"data-status": props.status,
|
|
146
|
+
"class": classes
|
|
147
|
+
}, [slots.default()]);
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
});
|
|
151
|
+
|
|
152
|
+
// src/components/parts/time.tsx
|
|
153
|
+
var import_vue9 = require("vue");
|
|
154
|
+
var import_vue10 = require("vue");
|
|
155
|
+
var import_recipes5 = require("@mekari/pixel3-styled-system/recipes");
|
|
156
|
+
var TimeItem = (0, import_vue10.defineComponent)({
|
|
157
|
+
name: "TimeItem",
|
|
158
|
+
props: {
|
|
159
|
+
status: {
|
|
160
|
+
type: String,
|
|
161
|
+
default: "default"
|
|
162
|
+
},
|
|
163
|
+
isDisabled: {
|
|
164
|
+
type: Boolean,
|
|
165
|
+
default: false
|
|
166
|
+
}
|
|
167
|
+
},
|
|
168
|
+
setup(props, {
|
|
169
|
+
slots
|
|
170
|
+
}) {
|
|
171
|
+
return () => {
|
|
172
|
+
const classes = (0, import_recipes5.timeItemRecipe)({
|
|
173
|
+
status: props.status
|
|
174
|
+
});
|
|
175
|
+
return (0, import_vue9.createVNode)("button", {
|
|
176
|
+
"disabled": props.isDisabled,
|
|
177
|
+
"data-status": props.status,
|
|
178
|
+
"class": classes
|
|
179
|
+
}, [slots.default()]);
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
});
|
|
183
|
+
|
|
184
|
+
// src/time-panel.tsx
|
|
185
|
+
var import_css = require("@mekari/pixel3-styled-system/css");
|
|
186
|
+
|
|
187
|
+
// src/modules/date-picker.props.ts
|
|
188
|
+
var timePanelProps = {
|
|
189
|
+
modelValue: {
|
|
190
|
+
type: Date
|
|
191
|
+
},
|
|
192
|
+
defaultDate: {
|
|
193
|
+
type: Date,
|
|
194
|
+
default() {
|
|
195
|
+
const date = /* @__PURE__ */ new Date();
|
|
196
|
+
date.setHours(0, 0, 0, 0);
|
|
197
|
+
return date;
|
|
198
|
+
}
|
|
199
|
+
},
|
|
200
|
+
isShowHour: {
|
|
201
|
+
type: Boolean,
|
|
202
|
+
default: true
|
|
203
|
+
},
|
|
204
|
+
isShowMinute: {
|
|
205
|
+
type: Boolean,
|
|
206
|
+
default: true
|
|
207
|
+
},
|
|
208
|
+
isShowSecond: {
|
|
209
|
+
type: Boolean,
|
|
210
|
+
default: true
|
|
211
|
+
},
|
|
212
|
+
hourStep: {
|
|
213
|
+
type: Number,
|
|
214
|
+
default: 1
|
|
215
|
+
},
|
|
216
|
+
minuteStep: {
|
|
217
|
+
type: Number,
|
|
218
|
+
default: 1
|
|
219
|
+
},
|
|
220
|
+
secondStep: {
|
|
221
|
+
type: Number,
|
|
222
|
+
default: 1
|
|
223
|
+
},
|
|
224
|
+
isUse12h: {
|
|
225
|
+
type: Boolean,
|
|
226
|
+
default: false
|
|
227
|
+
},
|
|
228
|
+
disabledTime: {
|
|
229
|
+
type: Function,
|
|
230
|
+
default: () => false
|
|
231
|
+
}
|
|
232
|
+
};
|
|
233
|
+
var calendarPanelProps = {
|
|
234
|
+
modelValue: {
|
|
235
|
+
type: Date
|
|
236
|
+
},
|
|
237
|
+
defaultValue: {
|
|
238
|
+
type: Date
|
|
239
|
+
},
|
|
240
|
+
type: {
|
|
241
|
+
type: String,
|
|
242
|
+
default: "date"
|
|
243
|
+
},
|
|
244
|
+
calendar: {
|
|
245
|
+
type: Date
|
|
246
|
+
},
|
|
247
|
+
isRange: {
|
|
248
|
+
type: Boolean,
|
|
249
|
+
default: false
|
|
250
|
+
},
|
|
251
|
+
isInline: {
|
|
252
|
+
type: Boolean,
|
|
253
|
+
default: false
|
|
254
|
+
},
|
|
255
|
+
isShowShortcut: {
|
|
256
|
+
type: Boolean,
|
|
257
|
+
default: true
|
|
258
|
+
},
|
|
259
|
+
disabledDate: {
|
|
260
|
+
type: Function,
|
|
261
|
+
default: () => {
|
|
262
|
+
}
|
|
263
|
+
},
|
|
264
|
+
disabledMonth: {
|
|
265
|
+
type: Function,
|
|
266
|
+
default: () => {
|
|
267
|
+
}
|
|
268
|
+
},
|
|
269
|
+
disabledYear: {
|
|
270
|
+
type: Function,
|
|
271
|
+
default: () => {
|
|
272
|
+
}
|
|
273
|
+
},
|
|
274
|
+
getDateStatus: {
|
|
275
|
+
type: Function,
|
|
276
|
+
default: void 0
|
|
277
|
+
},
|
|
278
|
+
getMonthStatus: {
|
|
279
|
+
type: Function,
|
|
280
|
+
default: void 0
|
|
281
|
+
},
|
|
282
|
+
getYearStatus: {
|
|
283
|
+
type: Function,
|
|
284
|
+
default: void 0
|
|
285
|
+
},
|
|
286
|
+
isHideNotThisMonthDate: {
|
|
287
|
+
type: Boolean
|
|
288
|
+
}
|
|
289
|
+
};
|
|
290
|
+
var calendarPanelRangeProps = {
|
|
291
|
+
...calendarPanelProps,
|
|
292
|
+
modelValue: {
|
|
293
|
+
type: Array
|
|
294
|
+
}
|
|
295
|
+
};
|
|
296
|
+
var datePickerProps = {
|
|
297
|
+
...timePanelProps,
|
|
298
|
+
id: {
|
|
299
|
+
type: String
|
|
300
|
+
},
|
|
301
|
+
modelValue: {
|
|
302
|
+
type: [String, Number, Date, Array]
|
|
303
|
+
},
|
|
304
|
+
type: calendarPanelProps.type,
|
|
305
|
+
valueType: {
|
|
306
|
+
type: String,
|
|
307
|
+
default: "date"
|
|
308
|
+
},
|
|
309
|
+
format: {
|
|
310
|
+
type: String
|
|
311
|
+
},
|
|
312
|
+
rangeSeparator: {
|
|
313
|
+
type: String,
|
|
314
|
+
default: " - "
|
|
315
|
+
},
|
|
316
|
+
placeholder: {
|
|
317
|
+
type: String,
|
|
318
|
+
default: ""
|
|
319
|
+
},
|
|
320
|
+
errorMessage: {
|
|
321
|
+
type: String,
|
|
322
|
+
default: "Format tanggal/waktu salah"
|
|
323
|
+
},
|
|
324
|
+
disabledMessage: {
|
|
325
|
+
type: String,
|
|
326
|
+
default: ""
|
|
327
|
+
},
|
|
328
|
+
lang: {
|
|
329
|
+
type: Object,
|
|
330
|
+
default: () => {
|
|
331
|
+
}
|
|
332
|
+
},
|
|
333
|
+
inputAttr: {
|
|
334
|
+
type: Object,
|
|
335
|
+
default: () => ({})
|
|
336
|
+
},
|
|
337
|
+
contentAttr: {
|
|
338
|
+
type: Object,
|
|
339
|
+
default: () => ({})
|
|
340
|
+
},
|
|
341
|
+
isRange: calendarPanelProps.isRange,
|
|
342
|
+
isReadOnly: {
|
|
343
|
+
type: Boolean,
|
|
344
|
+
default: false
|
|
345
|
+
},
|
|
346
|
+
isDisabled: {
|
|
347
|
+
type: Boolean,
|
|
348
|
+
default: false
|
|
349
|
+
},
|
|
350
|
+
isClearable: {
|
|
351
|
+
type: Boolean,
|
|
352
|
+
default: true
|
|
353
|
+
},
|
|
354
|
+
isInvalid: {
|
|
355
|
+
type: Boolean,
|
|
356
|
+
default: false
|
|
357
|
+
},
|
|
358
|
+
usePortal: {
|
|
359
|
+
type: Boolean,
|
|
360
|
+
default: false
|
|
361
|
+
},
|
|
362
|
+
isKeepAlive: {
|
|
363
|
+
type: Boolean,
|
|
364
|
+
default: false
|
|
365
|
+
},
|
|
366
|
+
isInline: {
|
|
367
|
+
type: Boolean,
|
|
368
|
+
default: false
|
|
369
|
+
},
|
|
370
|
+
isNotClickable: {
|
|
371
|
+
type: Boolean,
|
|
372
|
+
default: false
|
|
373
|
+
},
|
|
374
|
+
isDisableHeader: {
|
|
375
|
+
type: Boolean,
|
|
376
|
+
default: false
|
|
377
|
+
},
|
|
378
|
+
isShowShortcut: {
|
|
379
|
+
type: Boolean,
|
|
380
|
+
default: false
|
|
381
|
+
},
|
|
382
|
+
disabledDate: calendarPanelProps.disabledDate,
|
|
383
|
+
disabledMonth: calendarPanelProps.disabledMonth,
|
|
384
|
+
disabledYear: calendarPanelProps.disabledYear
|
|
385
|
+
};
|
|
386
|
+
|
|
387
|
+
// src/composables/useTime.ts
|
|
388
|
+
var import_vue11 = require("vue");
|
|
389
|
+
|
|
390
|
+
// src/utils/base.ts
|
|
391
|
+
function padNumber(value) {
|
|
392
|
+
value = parseInt(value, 10);
|
|
393
|
+
return value < 10 ? `0${value}` : `${value}`;
|
|
394
|
+
}
|
|
395
|
+
__name(padNumber, "padNumber");
|
|
396
|
+
function generateOptions(length, step) {
|
|
397
|
+
if (step <= 0) {
|
|
398
|
+
step = 1;
|
|
399
|
+
}
|
|
400
|
+
const arr = [];
|
|
401
|
+
for (let i = 0; i < length; i += step) {
|
|
402
|
+
arr.push(i);
|
|
403
|
+
}
|
|
404
|
+
return arr;
|
|
405
|
+
}
|
|
406
|
+
__name(generateOptions, "generateOptions");
|
|
407
|
+
|
|
408
|
+
// src/utils/date.ts
|
|
409
|
+
var import_date_fns = require("date-fns");
|
|
410
|
+
function isValidDate(date) {
|
|
411
|
+
return date instanceof Date && !isNaN(date);
|
|
412
|
+
}
|
|
413
|
+
__name(isValidDate, "isValidDate");
|
|
414
|
+
|
|
415
|
+
// src/composables/useTime.ts
|
|
416
|
+
function useTime(props) {
|
|
417
|
+
const innerValue = (0, import_vue11.ref)(props.modelValue);
|
|
418
|
+
const innerDateValue = (0, import_vue11.computed)(() => isValidDate(props.modelValue) ? props.modelValue : props.defaultDate);
|
|
419
|
+
const columns = (0, import_vue11.computed)(() => {
|
|
420
|
+
const cols = [];
|
|
421
|
+
if (props.isShowHour)
|
|
422
|
+
cols.push({
|
|
423
|
+
type: "hour",
|
|
424
|
+
list: getHoursList()
|
|
425
|
+
});
|
|
426
|
+
if (props.isShowMinute)
|
|
427
|
+
cols.push({
|
|
428
|
+
type: "minute",
|
|
429
|
+
list: getMinutesList()
|
|
430
|
+
});
|
|
431
|
+
if (props.isShowSecond)
|
|
432
|
+
cols.push({
|
|
433
|
+
type: "second",
|
|
434
|
+
list: getSecondsList()
|
|
435
|
+
});
|
|
436
|
+
if (props.isUse12h)
|
|
437
|
+
cols.push({
|
|
438
|
+
type: "ampm",
|
|
439
|
+
list: getAMPMList()
|
|
440
|
+
});
|
|
441
|
+
return cols.filter((v) => v.list.length > 0);
|
|
442
|
+
});
|
|
443
|
+
function getHoursList() {
|
|
444
|
+
return generateOptions(props.isUse12h ? 12 : 24, props.hourStep).map((num) => {
|
|
445
|
+
const innerDate = new Date(innerDateValue.value);
|
|
446
|
+
let text = padNumber(num);
|
|
447
|
+
if (props.isUse12h) {
|
|
448
|
+
if (num === 0) {
|
|
449
|
+
text = "12";
|
|
450
|
+
}
|
|
451
|
+
if (innerDate.getHours() >= 12) {
|
|
452
|
+
num += 12;
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
const value = innerDate.setHours(num);
|
|
456
|
+
return {
|
|
457
|
+
value,
|
|
458
|
+
text
|
|
459
|
+
};
|
|
460
|
+
});
|
|
461
|
+
}
|
|
462
|
+
__name(getHoursList, "getHoursList");
|
|
463
|
+
function getMinutesList() {
|
|
464
|
+
return generateOptions(60, props.minuteStep).map((num) => {
|
|
465
|
+
const value = new Date(innerDateValue.value).setMinutes(num);
|
|
466
|
+
return {
|
|
467
|
+
value,
|
|
468
|
+
text: padNumber(num)
|
|
469
|
+
};
|
|
470
|
+
});
|
|
471
|
+
}
|
|
472
|
+
__name(getMinutesList, "getMinutesList");
|
|
473
|
+
function getSecondsList() {
|
|
474
|
+
return generateOptions(60, props.secondStep).map((num) => {
|
|
475
|
+
const value = new Date(innerDateValue.value).setSeconds(num);
|
|
476
|
+
return {
|
|
477
|
+
value,
|
|
478
|
+
text: padNumber(num)
|
|
479
|
+
};
|
|
480
|
+
});
|
|
481
|
+
}
|
|
482
|
+
__name(getSecondsList, "getSecondsList");
|
|
483
|
+
function getAMPMList() {
|
|
484
|
+
return ["AM", "PM"].map((text, i) => {
|
|
485
|
+
const innerDate = new Date(innerDateValue.value);
|
|
486
|
+
const value = innerDate.setHours(innerDate.getHours() % 12 + i * 12);
|
|
487
|
+
return {
|
|
488
|
+
text,
|
|
489
|
+
value
|
|
490
|
+
};
|
|
491
|
+
});
|
|
492
|
+
}
|
|
493
|
+
__name(getAMPMList, "getAMPMList");
|
|
494
|
+
function isDisabledTime(value) {
|
|
495
|
+
return props.disabledTime(new Date(value));
|
|
496
|
+
}
|
|
497
|
+
__name(isDisabledTime, "isDisabledTime");
|
|
498
|
+
function isDisabledHour(date) {
|
|
499
|
+
const value = new Date(date);
|
|
500
|
+
return isDisabledTime(value) && isDisabledTime(value.setMinutes(0, 0, 0)) && isDisabledTime(value.setMinutes(59, 59, 999));
|
|
501
|
+
}
|
|
502
|
+
__name(isDisabledHour, "isDisabledHour");
|
|
503
|
+
function isDisabledMinute(date) {
|
|
504
|
+
const value = new Date(date);
|
|
505
|
+
return isDisabledTime(value) && isDisabledTime(value.setSeconds(0, 0)) && isDisabledTime(value.setSeconds(59, 999));
|
|
506
|
+
}
|
|
507
|
+
__name(isDisabledMinute, "isDisabledMinute");
|
|
508
|
+
function isDisabledAMPM(date) {
|
|
509
|
+
const value = new Date(date);
|
|
510
|
+
const minHour = value.getHours() < 12 ? 0 : 12;
|
|
511
|
+
const maxHour = minHour + 11;
|
|
512
|
+
return isDisabledTime(value) && isDisabledTime(value.setHours(minHour, 0, 0, 0)) && isDisabledTime(value.setHours(maxHour, 59, 59, 999));
|
|
513
|
+
}
|
|
514
|
+
__name(isDisabledAMPM, "isDisabledAMPM");
|
|
515
|
+
function isDisabled(date, type) {
|
|
516
|
+
if (type === "hour") {
|
|
517
|
+
return isDisabledHour(date);
|
|
518
|
+
}
|
|
519
|
+
if (type === "minute") {
|
|
520
|
+
return isDisabledMinute(date);
|
|
521
|
+
}
|
|
522
|
+
if (type === "ampm") {
|
|
523
|
+
return isDisabledAMPM(date);
|
|
524
|
+
}
|
|
525
|
+
return isDisabledTime(date);
|
|
526
|
+
}
|
|
527
|
+
__name(isDisabled, "isDisabled");
|
|
528
|
+
return {
|
|
529
|
+
innerValue,
|
|
530
|
+
columns,
|
|
531
|
+
getHoursList,
|
|
532
|
+
getMinutesList,
|
|
533
|
+
getSecondsList,
|
|
534
|
+
getAMPMList,
|
|
535
|
+
isDisabledTime,
|
|
536
|
+
isDisabledHour,
|
|
537
|
+
isDisabledMinute,
|
|
538
|
+
isDisabledAMPM,
|
|
539
|
+
isDisabled
|
|
540
|
+
};
|
|
541
|
+
}
|
|
542
|
+
__name(useTime, "useTime");
|
|
543
|
+
|
|
544
|
+
// src/utils/dom.ts
|
|
545
|
+
function getScrollParent(node, until = document.body) {
|
|
546
|
+
if (!node || node === until) {
|
|
547
|
+
return null;
|
|
548
|
+
}
|
|
549
|
+
const style = /* @__PURE__ */ __name((value, prop) => getComputedStyle(value, null).getPropertyValue(prop), "style");
|
|
550
|
+
const regex = /(auto|scroll)/;
|
|
551
|
+
const scroll = regex.test(style(node, "overflow") + style(node, "overflow-y") + style(node, "overflow-x"));
|
|
552
|
+
return scroll ? node : getScrollParent(node.parentElement, until);
|
|
553
|
+
}
|
|
554
|
+
__name(getScrollParent, "getScrollParent");
|
|
555
|
+
function scrollTo(element, to, duration = 0) {
|
|
556
|
+
if (duration <= 0) {
|
|
557
|
+
requestAnimationFrame(() => {
|
|
558
|
+
element.scrollTop = to;
|
|
559
|
+
});
|
|
560
|
+
return;
|
|
561
|
+
}
|
|
562
|
+
const difference = to - element.scrollTop;
|
|
563
|
+
const tick = difference / duration * 10;
|
|
564
|
+
requestAnimationFrame(() => {
|
|
565
|
+
const scrollTop = element.scrollTop + tick;
|
|
566
|
+
if (scrollTop >= to) {
|
|
567
|
+
element.scrollTop = to;
|
|
568
|
+
return;
|
|
569
|
+
}
|
|
570
|
+
element.scrollTop = scrollTop;
|
|
571
|
+
scrollTo(element, to, duration - 10);
|
|
572
|
+
});
|
|
573
|
+
}
|
|
574
|
+
__name(scrollTo, "scrollTo");
|
|
575
|
+
|
|
576
|
+
// src/time-panel.tsx
|
|
577
|
+
var TimePanel = (0, import_vue13.defineComponent)({
|
|
578
|
+
name: "MpTimePanel",
|
|
579
|
+
props: timePanelProps,
|
|
580
|
+
emits: ["update:modelValue"],
|
|
581
|
+
setup(props, {
|
|
582
|
+
emit
|
|
583
|
+
}) {
|
|
584
|
+
const columnNode = (0, import_vue13.ref)();
|
|
585
|
+
const {
|
|
586
|
+
innerValue,
|
|
587
|
+
columns,
|
|
588
|
+
isDisabled
|
|
589
|
+
} = useTime(props);
|
|
590
|
+
function handleSelectTime(col, item) {
|
|
591
|
+
const date = new Date(item.value);
|
|
592
|
+
innerValue.value = date;
|
|
593
|
+
emit("update:modelValue", date);
|
|
594
|
+
(0, import_vue13.nextTick)(() => handleScrollToSelected());
|
|
595
|
+
}
|
|
596
|
+
__name(handleSelectTime, "handleSelectTime");
|
|
597
|
+
function getTimeStatus(value, type) {
|
|
598
|
+
var _a;
|
|
599
|
+
const cellDate = new Date(value);
|
|
600
|
+
if (isDisabled(value, type)) {
|
|
601
|
+
return "disabled";
|
|
602
|
+
}
|
|
603
|
+
if (cellDate.getTime() === ((_a = innerValue.value) == null ? void 0 : _a.getTime()) && isValidDate(innerValue.value)) {
|
|
604
|
+
return "selected";
|
|
605
|
+
}
|
|
606
|
+
return "default";
|
|
607
|
+
}
|
|
608
|
+
__name(getTimeStatus, "getTimeStatus");
|
|
609
|
+
function getTimeAttrs(value, type) {
|
|
610
|
+
const status = getTimeStatus(value, type);
|
|
611
|
+
return {
|
|
612
|
+
status,
|
|
613
|
+
isDisabled: status === "disabled" || void 0,
|
|
614
|
+
"data-selected": status === "selected" || void 0
|
|
615
|
+
};
|
|
616
|
+
}
|
|
617
|
+
__name(getTimeAttrs, "getTimeAttrs");
|
|
618
|
+
function handleScrollToSelected(duration = 0) {
|
|
619
|
+
var _a;
|
|
620
|
+
const elements = (_a = columnNode.value) == null ? void 0 : _a.querySelectorAll("[data-selected=true]");
|
|
621
|
+
elements == null ? void 0 : elements.forEach((element) => {
|
|
622
|
+
const scrollElement = getScrollParent(element, columnNode.value);
|
|
623
|
+
if (scrollElement) {
|
|
624
|
+
const to = element.offsetTop - 10;
|
|
625
|
+
scrollTo(scrollElement, to, duration);
|
|
626
|
+
}
|
|
627
|
+
});
|
|
628
|
+
}
|
|
629
|
+
__name(handleScrollToSelected, "handleScrollToSelected");
|
|
630
|
+
(0, import_vue13.onMounted)(() => {
|
|
631
|
+
(0, import_vue13.nextTick)(() => handleScrollToSelected(0));
|
|
632
|
+
});
|
|
633
|
+
return () => {
|
|
634
|
+
return (0, import_vue12.createVNode)("div", {
|
|
635
|
+
"ref": columnNode,
|
|
636
|
+
"class": (0, import_css.css)({
|
|
637
|
+
display: "flex",
|
|
638
|
+
flexDirection: "row",
|
|
639
|
+
gap: "0.5"
|
|
640
|
+
})
|
|
641
|
+
}, [columns.value.map((col, colIndex) => (0, import_vue12.createVNode)("ul", {
|
|
642
|
+
"data-index": colIndex,
|
|
643
|
+
"data-type": col.type,
|
|
644
|
+
"class": (0, import_css.css)({
|
|
645
|
+
display: "flex",
|
|
646
|
+
flexDirection: "column",
|
|
647
|
+
height: "224px",
|
|
648
|
+
overflowY: "scroll",
|
|
649
|
+
overflowX: "hidden",
|
|
650
|
+
py: "10px"
|
|
651
|
+
})
|
|
652
|
+
}, [col.list.map((item, itemIndex) => (0, import_vue12.createVNode)("li", {
|
|
653
|
+
"onClick": () => handleSelectTime(col, item)
|
|
654
|
+
}, [(0, import_vue12.createVNode)(TimeItem, (0, import_vue12.mergeProps)({
|
|
655
|
+
"data-index": itemIndex
|
|
656
|
+
}, getTimeAttrs(item.value, col.type)), {
|
|
657
|
+
default: () => [item.text]
|
|
658
|
+
})]))]))]);
|
|
659
|
+
};
|
|
660
|
+
}
|
|
661
|
+
});
|
|
662
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
663
|
+
0 && (module.exports = {
|
|
664
|
+
TimePanel
|
|
665
|
+
});
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import {
|
|
2
|
+
TimePanel
|
|
3
|
+
} from "./chunk-MO5D3TCF.mjs";
|
|
4
|
+
import "./chunk-OYJNIILC.mjs";
|
|
5
|
+
import "./chunk-5VRVDIXN.mjs";
|
|
6
|
+
import "./chunk-MRP3X6QP.mjs";
|
|
7
|
+
import "./chunk-EQWT6VDG.mjs";
|
|
8
|
+
import "./chunk-J5BK7Z2U.mjs";
|
|
9
|
+
import "./chunk-AGAA7XTC.mjs";
|
|
10
|
+
import "./chunk-3VROFGJH.mjs";
|
|
11
|
+
import "./chunk-KTYQJMW4.mjs";
|
|
12
|
+
import "./chunk-IRNTTSB7.mjs";
|
|
13
|
+
import "./chunk-E5BRVBZ2.mjs";
|
|
14
|
+
import "./chunk-U7O52D6B.mjs";
|
|
15
|
+
import "./chunk-QZ7VFGWC.mjs";
|
|
16
|
+
export {
|
|
17
|
+
TimePanel
|
|
18
|
+
};
|
package/dist/utils/base.d.mts
CHANGED
|
@@ -16,5 +16,7 @@ declare const pick: <T extends object, TKeys extends keyof T>(obj: T, keys: TKey
|
|
|
16
16
|
* Recursion only applies to child object properties.
|
|
17
17
|
*/
|
|
18
18
|
declare const assign: <X extends Record<string | number | symbol, any>>(initial: X, override: unknown) => X;
|
|
19
|
+
declare function padNumber(value: any): string;
|
|
20
|
+
declare function generateOptions(length: number, step: number): number[];
|
|
19
21
|
|
|
20
|
-
export { assign, chunk, isObject, pick };
|
|
22
|
+
export { assign, chunk, generateOptions, isObject, padNumber, pick };
|
package/dist/utils/base.d.ts
CHANGED
|
@@ -16,5 +16,7 @@ declare const pick: <T extends object, TKeys extends keyof T>(obj: T, keys: TKey
|
|
|
16
16
|
* Recursion only applies to child object properties.
|
|
17
17
|
*/
|
|
18
18
|
declare const assign: <X extends Record<string | number | symbol, any>>(initial: X, override: unknown) => X;
|
|
19
|
+
declare function padNumber(value: any): string;
|
|
20
|
+
declare function generateOptions(length: number, step: number): number[];
|
|
19
21
|
|
|
20
|
-
export { assign, chunk, isObject, pick };
|
|
22
|
+
export { assign, chunk, generateOptions, isObject, padNumber, pick };
|