@coreui/vue-pro 5.9.0 → 5.11.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.
- package/README.md +1 -1
- package/dist/cjs/components/accordion/CAccordionBody.js +2 -1
- package/dist/cjs/components/accordion/CAccordionBody.js.map +1 -1
- package/dist/cjs/components/accordion/CAccordionButton.js +3 -1
- package/dist/cjs/components/accordion/CAccordionButton.js.map +1 -1
- package/dist/cjs/components/accordion/CAccordionItem.d.ts +8 -0
- package/dist/cjs/components/accordion/CAccordionItem.js +10 -2
- package/dist/cjs/components/accordion/CAccordionItem.js.map +1 -1
- package/dist/cjs/components/button/CButton.js +1 -1
- package/dist/cjs/components/button/CButton.js.map +1 -1
- package/dist/cjs/components/calendar/CCalendar.d.ts +6 -6
- package/dist/cjs/components/calendar/CCalendar.js +44 -39
- package/dist/cjs/components/calendar/CCalendar.js.map +1 -1
- package/dist/cjs/components/calendar/types.d.ts +3 -0
- package/dist/cjs/components/calendar/utils.d.ts +183 -18
- package/dist/cjs/components/calendar/utils.js +327 -43
- package/dist/cjs/components/calendar/utils.js.map +1 -1
- package/dist/cjs/components/date-picker/CDatePicker.d.ts +1 -1
- package/dist/cjs/components/date-range-picker/CDateRangePicker.d.ts +1 -1
- package/dist/cjs/components/form/CFormControlWrapper.d.ts +2 -0
- package/dist/cjs/components/form/CFormControlWrapper.js +9 -1
- package/dist/cjs/components/form/CFormControlWrapper.js.map +1 -1
- package/dist/cjs/components/index.d.ts +2 -0
- package/dist/cjs/components/index.js +44 -36
- package/dist/cjs/components/index.js.map +1 -1
- package/dist/cjs/components/link/CLink.js.map +1 -1
- package/dist/cjs/components/loading-button/CLoadingButton.d.ts +2 -2
- package/dist/cjs/components/multi-select/CMultiSelect.d.ts +12 -0
- package/dist/cjs/components/multi-select/CMultiSelect.js +28 -2
- package/dist/cjs/components/multi-select/CMultiSelect.js.map +1 -1
- package/dist/cjs/components/nav/CNav.d.ts +2 -2
- package/dist/cjs/components/nav/CNav.js +3 -2
- package/dist/cjs/components/nav/CNav.js.map +1 -1
- package/dist/cjs/components/nav/CNavGroup.js +6 -2
- package/dist/cjs/components/nav/CNavGroup.js.map +1 -1
- package/dist/cjs/components/offcanvas/COffcanvas.js.map +1 -1
- package/dist/cjs/components/password-input/CPasswordInput.d.ts +190 -0
- package/dist/cjs/components/password-input/CPasswordInput.js +178 -0
- package/dist/cjs/components/password-input/CPasswordInput.js.map +1 -0
- package/dist/cjs/components/password-input/index.d.ts +6 -0
- package/dist/cjs/components/password-input/index.js +13 -0
- package/dist/cjs/components/password-input/index.js.map +1 -0
- package/dist/cjs/components/popover/CPopover.d.ts +1 -1
- package/dist/cjs/components/range-slider/CRangeSlider.js +6 -2
- package/dist/cjs/components/range-slider/CRangeSlider.js.map +1 -1
- package/dist/cjs/components/rating/CRating.d.ts +1 -1
- package/dist/cjs/components/smart-table/CSmartTable.js +2 -2
- package/dist/cjs/components/smart-table/CSmartTable.js.map +1 -1
- package/dist/cjs/components/smart-table/utils.js.map +1 -1
- package/dist/cjs/components/stepper/CStepper.d.ts +168 -0
- package/dist/cjs/components/stepper/CStepper.js +305 -0
- package/dist/cjs/components/stepper/CStepper.js.map +1 -0
- package/dist/cjs/components/stepper/index.d.ts +6 -0
- package/dist/cjs/components/stepper/index.js +13 -0
- package/dist/cjs/components/stepper/index.js.map +1 -0
- package/dist/cjs/components/stepper/types.d.ts +15 -0
- package/dist/cjs/components/tabs/CTab.js.map +1 -1
- package/dist/cjs/components/tabs/CTabList.d.ts +2 -2
- package/dist/cjs/components/tabs/CTabList.js +3 -2
- package/dist/cjs/components/tabs/CTabList.js.map +1 -1
- package/dist/cjs/components/time-picker/utils.d.ts +10 -0
- package/dist/cjs/components/time-picker/utils.js +25 -9
- package/dist/cjs/components/time-picker/utils.js.map +1 -1
- package/dist/cjs/components/tooltip/CTooltip.d.ts +1 -1
- package/dist/cjs/components/widgets/CWidgetStatsB.js +2 -2
- package/dist/cjs/components/widgets/CWidgetStatsB.js.map +1 -1
- package/dist/cjs/components/widgets/CWidgetStatsC.js +2 -2
- package/dist/cjs/components/widgets/CWidgetStatsC.js.map +1 -1
- package/dist/cjs/index.js +50 -42
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/node_modules/vue-types/dist/index.js +567 -0
- package/dist/cjs/node_modules/vue-types/dist/index.js.map +1 -0
- package/dist/cjs/node_modules/vue-types/dist/shared/vue-types.8139b772.js +29 -0
- package/dist/cjs/node_modules/vue-types/dist/shared/vue-types.8139b772.js.map +1 -0
- package/dist/cjs/utils/getNextActiveElement.js.map +1 -1
- package/dist/cjs/utils/index.d.ts +2 -1
- package/dist/cjs/utils/isEqual.d.ts +2 -0
- package/dist/cjs/utils/isEqual.js +78 -0
- package/dist/cjs/utils/isEqual.js.map +1 -0
- package/dist/esm/components/accordion/CAccordionBody.js +2 -1
- package/dist/esm/components/accordion/CAccordionBody.js.map +1 -1
- package/dist/esm/components/accordion/CAccordionButton.js +3 -1
- package/dist/esm/components/accordion/CAccordionButton.js.map +1 -1
- package/dist/esm/components/accordion/CAccordionItem.d.ts +8 -0
- package/dist/esm/components/accordion/CAccordionItem.js +11 -3
- package/dist/esm/components/accordion/CAccordionItem.js.map +1 -1
- package/dist/esm/components/avatar/CAvatar.js +1 -1
- package/dist/esm/components/badge/CBadge.js +1 -1
- package/dist/esm/components/button/CButton.js +2 -2
- package/dist/esm/components/button/CButton.js.map +1 -1
- package/dist/esm/components/calendar/CCalendar.d.ts +6 -6
- package/dist/esm/components/calendar/CCalendar.js +46 -41
- package/dist/esm/components/calendar/CCalendar.js.map +1 -1
- package/dist/esm/components/calendar/types.d.ts +3 -0
- package/dist/esm/components/calendar/utils.d.ts +183 -18
- package/dist/esm/components/calendar/utils.js +320 -44
- package/dist/esm/components/calendar/utils.js.map +1 -1
- package/dist/esm/components/card/CCard.js +1 -1
- package/dist/esm/components/date-picker/CDatePicker.d.ts +1 -1
- package/dist/esm/components/date-range-picker/CDateRangePicker.d.ts +1 -1
- package/dist/esm/components/dropdown/CDropdownToggle.js +2 -2
- package/dist/esm/components/form/CFormControlWrapper.d.ts +2 -0
- package/dist/esm/components/form/CFormControlWrapper.js +9 -1
- package/dist/esm/components/form/CFormControlWrapper.js.map +1 -1
- package/dist/esm/components/index.d.ts +2 -0
- package/dist/esm/components/index.js +4 -0
- package/dist/esm/components/index.js.map +1 -1
- package/dist/esm/components/link/CLink.js.map +1 -1
- package/dist/esm/components/loading-button/CLoadingButton.d.ts +2 -2
- package/dist/esm/components/multi-select/CMultiSelect.d.ts +12 -0
- package/dist/esm/components/multi-select/CMultiSelect.js +29 -3
- package/dist/esm/components/multi-select/CMultiSelect.js.map +1 -1
- package/dist/esm/components/nav/CNav.d.ts +2 -2
- package/dist/esm/components/nav/CNav.js +3 -2
- package/dist/esm/components/nav/CNav.js.map +1 -1
- package/dist/esm/components/nav/CNavGroup.js +6 -2
- package/dist/esm/components/nav/CNavGroup.js.map +1 -1
- package/dist/esm/components/offcanvas/COffcanvas.js.map +1 -1
- package/dist/esm/components/password-input/CPasswordInput.d.ts +190 -0
- package/dist/esm/components/password-input/CPasswordInput.js +176 -0
- package/dist/esm/components/password-input/CPasswordInput.js.map +1 -0
- package/dist/esm/components/password-input/index.d.ts +6 -0
- package/dist/esm/components/password-input/index.js +10 -0
- package/dist/esm/components/password-input/index.js.map +1 -0
- package/dist/esm/components/popover/CPopover.d.ts +1 -1
- package/dist/esm/components/range-slider/CRangeSlider.js +6 -2
- package/dist/esm/components/range-slider/CRangeSlider.js.map +1 -1
- package/dist/esm/components/rating/CRating.d.ts +1 -1
- package/dist/esm/components/smart-table/CSmartTable.js +2 -2
- package/dist/esm/components/smart-table/CSmartTable.js.map +1 -1
- package/dist/esm/components/smart-table/CSmartTableBody.js +1 -1
- package/dist/esm/components/smart-table/utils.js.map +1 -1
- package/dist/esm/components/stepper/CStepper.d.ts +168 -0
- package/dist/esm/components/stepper/CStepper.js +303 -0
- package/dist/esm/components/stepper/CStepper.js.map +1 -0
- package/dist/esm/components/stepper/index.d.ts +6 -0
- package/dist/esm/components/stepper/index.js +10 -0
- package/dist/esm/components/stepper/index.js.map +1 -0
- package/dist/esm/components/stepper/types.d.ts +15 -0
- package/dist/esm/components/tabs/CTab.js.map +1 -1
- package/dist/esm/components/tabs/CTabList.d.ts +2 -2
- package/dist/esm/components/tabs/CTabList.js +3 -2
- package/dist/esm/components/tabs/CTabList.js.map +1 -1
- package/dist/esm/components/time-picker/utils.d.ts +10 -0
- package/dist/esm/components/time-picker/utils.js +25 -10
- package/dist/esm/components/time-picker/utils.js.map +1 -1
- package/dist/esm/components/tooltip/CTooltip.d.ts +1 -1
- package/dist/esm/components/widgets/CWidgetStatsB.js +2 -2
- package/dist/esm/components/widgets/CWidgetStatsB.js.map +1 -1
- package/dist/esm/components/widgets/CWidgetStatsC.js +2 -2
- package/dist/esm/components/widgets/CWidgetStatsC.js.map +1 -1
- package/dist/esm/index.js +4 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/node_modules/vue-types/dist/index.js +541 -0
- package/dist/esm/node_modules/vue-types/dist/index.js.map +1 -0
- package/dist/esm/node_modules/vue-types/dist/shared/vue-types.8139b772.js +25 -0
- package/dist/esm/node_modules/vue-types/dist/shared/vue-types.8139b772.js.map +1 -0
- package/dist/esm/utils/getNextActiveElement.js.map +1 -1
- package/dist/esm/utils/index.d.ts +2 -1
- package/dist/esm/utils/isEqual.d.ts +2 -0
- package/dist/esm/utils/isEqual.js +74 -0
- package/dist/esm/utils/isEqual.js.map +1 -0
- package/package.json +10 -10
- package/src/components/accordion/CAccordionBody.ts +2 -1
- package/src/components/accordion/CAccordionButton.ts +3 -1
- package/src/components/accordion/CAccordionItem.ts +11 -3
- package/src/components/button/CButton.ts +1 -1
- package/src/components/calendar/CCalendar.ts +108 -95
- package/src/components/calendar/types.ts +5 -0
- package/src/components/calendar/utils.ts +439 -111
- package/src/components/date-picker/CDatePicker.ts +1 -1
- package/src/components/date-range-picker/CDateRangePicker.ts +1 -1
- package/src/components/form/CFormControlWrapper.ts +35 -21
- package/src/components/index.ts +2 -0
- package/src/components/multi-select/CMultiSelect.ts +57 -26
- package/src/components/nav/CNav.ts +3 -2
- package/src/components/nav/CNavGroup.ts +7 -2
- package/src/components/password-input/CPasswordInput.ts +214 -0
- package/src/components/password-input/index.ts +10 -0
- package/src/components/range-slider/CRangeSlider.ts +7 -2
- package/src/components/stepper/CStepper.ts +384 -0
- package/src/components/stepper/__tests__/CStepper.spec.ts +175 -0
- package/src/components/stepper/index.ts +10 -0
- package/src/components/stepper/types.ts +18 -0
- package/src/components/tabs/CTabList.ts +3 -2
- package/src/components/time-picker/CTimePicker.ts +22 -22
- package/src/components/time-picker/CTimePickerRollCol.ts +3 -3
- package/src/components/time-picker/utils.ts +30 -13
- package/src/utils/index.ts +10 -1
- package/src/utils/isEqual.ts +75 -0
- package/dist/cjs/node_modules/is-plain-object/dist/is-plain-object.js +0 -37
- package/dist/cjs/node_modules/is-plain-object/dist/is-plain-object.js.map +0 -1
- package/dist/cjs/node_modules/vue-types/dist/vue-types.modern.js +0 -33
- package/dist/cjs/node_modules/vue-types/dist/vue-types.modern.js.map +0 -1
- package/dist/esm/node_modules/is-plain-object/dist/is-plain-object.js +0 -35
- package/dist/esm/node_modules/is-plain-object/dist/is-plain-object.js.map +0 -1
- package/dist/esm/node_modules/vue-types/dist/vue-types.modern.js +0 -6
- package/dist/esm/node_modules/vue-types/dist/vue-types.modern.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { defineComponent, h, PropType, ref, watch } from 'vue'
|
|
1
|
+
import { defineComponent, h, nextTick, PropType, ref, watch } from 'vue'
|
|
2
2
|
|
|
3
3
|
import { CButton } from '../button'
|
|
4
4
|
|
|
@@ -14,11 +14,19 @@ import {
|
|
|
14
14
|
isDateInRange,
|
|
15
15
|
isDateSelected,
|
|
16
16
|
isDisableDateInRange,
|
|
17
|
-
|
|
17
|
+
isMonthDisabled,
|
|
18
|
+
isMonthInRange,
|
|
19
|
+
isMonthSelected,
|
|
18
20
|
isToday,
|
|
21
|
+
isSameDateAs,
|
|
22
|
+
isYearDisabled,
|
|
23
|
+
isYearInRange,
|
|
24
|
+
isYearSelected,
|
|
25
|
+
getSelectableDates,
|
|
26
|
+
setTimeFromDate,
|
|
19
27
|
} from './utils'
|
|
20
28
|
|
|
21
|
-
|
|
29
|
+
import type { DisabledDate, SelectionTypes, ViewTypes } from './types'
|
|
22
30
|
|
|
23
31
|
const CCalendar = defineComponent({
|
|
24
32
|
name: 'CCalendar',
|
|
@@ -165,9 +173,9 @@ const CCalendar = defineComponent({
|
|
|
165
173
|
* @since 5.0.0
|
|
166
174
|
*/
|
|
167
175
|
selectionType: {
|
|
168
|
-
type: String as PropType<
|
|
176
|
+
type: String as PropType<SelectionTypes>,
|
|
169
177
|
default: 'day',
|
|
170
|
-
validator: (value:
|
|
178
|
+
validator: (value: SelectionTypes) => ['day', 'week', 'month', 'year'].includes(value),
|
|
171
179
|
},
|
|
172
180
|
/**
|
|
173
181
|
* Set whether to display dates in adjacent months (non-selectable) at the start and end of the current month.
|
|
@@ -249,43 +257,37 @@ const CCalendar = defineComponent({
|
|
|
249
257
|
? convertToDateObject(props.calendarDate, props.selectionType)
|
|
250
258
|
: props.startDate
|
|
251
259
|
? convertToDateObject(props.startDate, props.selectionType)
|
|
252
|
-
: new Date()
|
|
260
|
+
: new Date()
|
|
253
261
|
)
|
|
254
262
|
const startDate = ref<Date | null>(
|
|
255
|
-
props.startDate ? convertToDateObject(props.startDate, props.selectionType) : null
|
|
263
|
+
props.startDate ? convertToDateObject(props.startDate, props.selectionType) : null
|
|
256
264
|
)
|
|
257
265
|
const endDate = ref(
|
|
258
|
-
props.endDate ? convertToDateObject(props.endDate, props.selectionType) : null
|
|
266
|
+
props.endDate ? convertToDateObject(props.endDate, props.selectionType) : null
|
|
259
267
|
)
|
|
260
268
|
const hoverDate = ref<Date | null>(null)
|
|
261
269
|
const maxDate = ref(
|
|
262
|
-
props.maxDate ? convertToDateObject(props.maxDate, props.selectionType) : null
|
|
270
|
+
props.maxDate ? convertToDateObject(props.maxDate, props.selectionType) : null
|
|
263
271
|
)
|
|
264
272
|
const minDate = ref(
|
|
265
|
-
props.minDate ? convertToDateObject(props.minDate, props.selectionType) : null
|
|
273
|
+
props.minDate ? convertToDateObject(props.minDate, props.selectionType) : null
|
|
266
274
|
)
|
|
267
275
|
const selectEndDate = ref(props.selectEndDate)
|
|
268
|
-
const view = ref<
|
|
276
|
+
const view = ref<ViewTypes>('days')
|
|
269
277
|
|
|
270
278
|
watch(
|
|
271
279
|
() => props.selectionType,
|
|
272
280
|
() => {
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
281
|
+
const viewMap = {
|
|
282
|
+
day: 'days',
|
|
283
|
+
week: 'days',
|
|
284
|
+
month: 'months',
|
|
285
|
+
year: 'years',
|
|
276
286
|
}
|
|
277
287
|
|
|
278
|
-
|
|
279
|
-
view.value = 'months'
|
|
280
|
-
return
|
|
281
|
-
}
|
|
282
|
-
|
|
283
|
-
if (props.selectionType === 'year') {
|
|
284
|
-
view.value = 'years'
|
|
285
|
-
return
|
|
286
|
-
}
|
|
288
|
+
view.value = (viewMap[props.selectionType] as ViewTypes) || 'days'
|
|
287
289
|
},
|
|
288
|
-
{ immediate: true }
|
|
290
|
+
{ immediate: true }
|
|
289
291
|
)
|
|
290
292
|
|
|
291
293
|
watch(
|
|
@@ -294,7 +296,7 @@ const CCalendar = defineComponent({
|
|
|
294
296
|
if (props.calendarDate) {
|
|
295
297
|
calendarDate.value = new Date(props.calendarDate)
|
|
296
298
|
}
|
|
297
|
-
}
|
|
299
|
+
}
|
|
298
300
|
)
|
|
299
301
|
|
|
300
302
|
watch(
|
|
@@ -306,7 +308,7 @@ const CCalendar = defineComponent({
|
|
|
306
308
|
if (!isSameDateAs(date, startDate.value)) {
|
|
307
309
|
startDate.value = date
|
|
308
310
|
}
|
|
309
|
-
}
|
|
311
|
+
}
|
|
310
312
|
)
|
|
311
313
|
|
|
312
314
|
watch(
|
|
@@ -316,7 +318,7 @@ const CCalendar = defineComponent({
|
|
|
316
318
|
if (!isSameDateAs(date, endDate.value)) {
|
|
317
319
|
endDate.value = date
|
|
318
320
|
}
|
|
319
|
-
}
|
|
321
|
+
}
|
|
320
322
|
)
|
|
321
323
|
|
|
322
324
|
watch(
|
|
@@ -325,7 +327,7 @@ const CCalendar = defineComponent({
|
|
|
325
327
|
maxDate.value = props.maxDate
|
|
326
328
|
? convertToDateObject(props.maxDate, props.selectionType)
|
|
327
329
|
: null
|
|
328
|
-
}
|
|
330
|
+
}
|
|
329
331
|
)
|
|
330
332
|
|
|
331
333
|
watch(
|
|
@@ -334,14 +336,14 @@ const CCalendar = defineComponent({
|
|
|
334
336
|
minDate.value = props.minDate
|
|
335
337
|
? convertToDateObject(props.minDate, props.selectionType)
|
|
336
338
|
: null
|
|
337
|
-
}
|
|
339
|
+
}
|
|
338
340
|
)
|
|
339
341
|
|
|
340
342
|
watch(
|
|
341
343
|
() => props.selectEndDate,
|
|
342
344
|
() => {
|
|
343
345
|
selectEndDate.value = props.selectEndDate
|
|
344
|
-
}
|
|
346
|
+
}
|
|
345
347
|
)
|
|
346
348
|
|
|
347
349
|
watch(startDate, () => {
|
|
@@ -357,9 +359,17 @@ const CCalendar = defineComponent({
|
|
|
357
359
|
const month = calendarDate.value.getMonth()
|
|
358
360
|
const d = new Date(year, month, 1)
|
|
359
361
|
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
362
|
+
if (years) {
|
|
363
|
+
d.setFullYear(d.getFullYear() + years)
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
if (months) {
|
|
367
|
+
d.setMonth(d.getMonth() + months)
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
if (typeof setMonth === 'number') {
|
|
371
|
+
d.setMonth(setMonth)
|
|
372
|
+
}
|
|
363
373
|
|
|
364
374
|
calendarDate.value = d
|
|
365
375
|
|
|
@@ -367,10 +377,6 @@ const CCalendar = defineComponent({
|
|
|
367
377
|
}
|
|
368
378
|
|
|
369
379
|
const handleCalendarClick = (date: Date, index?: number) => {
|
|
370
|
-
if (isDateDisabled(date, minDate.value, maxDate.value, props.disabledDates)) {
|
|
371
|
-
return
|
|
372
|
-
}
|
|
373
|
-
|
|
374
380
|
const _date = new Date(date)
|
|
375
381
|
|
|
376
382
|
if (view.value === 'days') {
|
|
@@ -391,6 +397,11 @@ const CCalendar = defineComponent({
|
|
|
391
397
|
return
|
|
392
398
|
}
|
|
393
399
|
|
|
400
|
+
// Allow to change the calendarDate but not startDate or endDate
|
|
401
|
+
if (isDateDisabled(date, minDate.value, maxDate.value, props.disabledDates)) {
|
|
402
|
+
return
|
|
403
|
+
}
|
|
404
|
+
|
|
394
405
|
if (props.range) {
|
|
395
406
|
if (selectEndDate.value) {
|
|
396
407
|
selectEndDate.value = false
|
|
@@ -407,7 +418,7 @@ const CCalendar = defineComponent({
|
|
|
407
418
|
return
|
|
408
419
|
}
|
|
409
420
|
|
|
410
|
-
endDate.value = date
|
|
421
|
+
endDate.value = setTimeFromDate(date, endDate.value)
|
|
411
422
|
return
|
|
412
423
|
}
|
|
413
424
|
|
|
@@ -424,17 +435,27 @@ const CCalendar = defineComponent({
|
|
|
424
435
|
}
|
|
425
436
|
|
|
426
437
|
selectEndDate.value = true
|
|
427
|
-
startDate.value = date
|
|
438
|
+
startDate.value = setTimeFromDate(date, startDate.value)
|
|
428
439
|
return
|
|
429
440
|
}
|
|
430
441
|
|
|
431
|
-
startDate.value = date
|
|
442
|
+
startDate.value = setTimeFromDate(date, startDate.value)
|
|
432
443
|
}
|
|
433
444
|
|
|
434
445
|
const handleCalendarKeyDown = (event: KeyboardEvent, date: Date, index?: number) => {
|
|
435
446
|
if (event.code === 'Space' || event.key === 'Enter') {
|
|
436
447
|
event.preventDefault()
|
|
448
|
+
const _view = view.value
|
|
437
449
|
handleCalendarClick(date, index)
|
|
450
|
+
if (
|
|
451
|
+
(_view === 'months' && props.selectionType !== 'month') ||
|
|
452
|
+
(_view === 'years' && props.selectionType !== 'year')
|
|
453
|
+
) {
|
|
454
|
+
nextTick(() => {
|
|
455
|
+
const list: HTMLElement[] = getSelectableDates(calendarRef.value as HTMLDivElement)
|
|
456
|
+
list[0]?.focus()
|
|
457
|
+
})
|
|
458
|
+
}
|
|
438
459
|
}
|
|
439
460
|
|
|
440
461
|
if (
|
|
@@ -447,7 +468,7 @@ const CCalendar = defineComponent({
|
|
|
447
468
|
|
|
448
469
|
if (
|
|
449
470
|
maxDate.value &&
|
|
450
|
-
date >=
|
|
471
|
+
date >= maxDate.value &&
|
|
451
472
|
(event.key === 'ArrowRight' || event.key === 'ArrowDown')
|
|
452
473
|
) {
|
|
453
474
|
return
|
|
@@ -455,7 +476,7 @@ const CCalendar = defineComponent({
|
|
|
455
476
|
|
|
456
477
|
if (
|
|
457
478
|
minDate.value &&
|
|
458
|
-
date <=
|
|
479
|
+
date <= minDate.value &&
|
|
459
480
|
(event.key === 'ArrowLeft' || event.key === 'ArrowUp')
|
|
460
481
|
) {
|
|
461
482
|
return
|
|
@@ -467,13 +488,7 @@ const CCalendar = defineComponent({
|
|
|
467
488
|
element = element.closest('tr[tabindex="0"]') as HTMLElement
|
|
468
489
|
}
|
|
469
490
|
|
|
470
|
-
const list: HTMLElement[] = calendarRef.value
|
|
471
|
-
? Array.from(
|
|
472
|
-
calendarRef.value.querySelectorAll(
|
|
473
|
-
props.selectionType === 'week' ? 'tr[tabindex="0"]' : 'td[tabindex="0"]',
|
|
474
|
-
),
|
|
475
|
-
)
|
|
476
|
-
: []
|
|
491
|
+
const list: HTMLElement[] = getSelectableDates(calendarRef.value as HTMLDivElement)
|
|
477
492
|
|
|
478
493
|
const index = list.indexOf(element)
|
|
479
494
|
const first = index === 0
|
|
@@ -520,20 +535,16 @@ const CCalendar = defineComponent({
|
|
|
520
535
|
}
|
|
521
536
|
|
|
522
537
|
setTimeout(() => {
|
|
523
|
-
const _list: HTMLElement[] =
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
'td[tabindex="0"], tr[tabindex="0"]',
|
|
527
|
-
),
|
|
528
|
-
)
|
|
529
|
-
: []
|
|
538
|
+
const _list: HTMLElement[] = getSelectableDates(
|
|
539
|
+
element.parentNode?.parentNode as HTMLDivElement
|
|
540
|
+
)
|
|
530
541
|
|
|
531
542
|
if (_list.length > 0 && event.key === 'ArrowRight') {
|
|
532
543
|
_list[0].focus()
|
|
533
544
|
}
|
|
534
545
|
|
|
535
546
|
if (_list.length > 0 && event.key === 'ArrowLeft') {
|
|
536
|
-
_list
|
|
547
|
+
_list.at(-1)?.focus()
|
|
537
548
|
}
|
|
538
549
|
|
|
539
550
|
if (_list.length > 0 && event.key === 'ArrowDown') {
|
|
@@ -571,6 +582,8 @@ const CCalendar = defineComponent({
|
|
|
571
582
|
return
|
|
572
583
|
}
|
|
573
584
|
|
|
585
|
+
date = setTimeFromDate(date, selectEndDate.value ? endDate.value : startDate.value)
|
|
586
|
+
|
|
574
587
|
hoverDate.value = date
|
|
575
588
|
emit('date-hover', getDateBySelectionType(date, props.selectionType))
|
|
576
589
|
}
|
|
@@ -616,7 +629,7 @@ const CCalendar = defineComponent({
|
|
|
616
629
|
const monthDetails = getMonthDetails(
|
|
617
630
|
_calendarDate.getFullYear(),
|
|
618
631
|
_calendarDate.getMonth(),
|
|
619
|
-
props.firstDayOfWeek
|
|
632
|
+
props.firstDayOfWeek
|
|
620
633
|
)
|
|
621
634
|
const listOfMonths = createGroupsInArray(getMonthsNames(props.locale), 4)
|
|
622
635
|
const listOfYears = createGroupsInArray(getYears(_calendarDate.getFullYear()), 4)
|
|
@@ -632,7 +645,7 @@ const CCalendar = defineComponent({
|
|
|
632
645
|
h(
|
|
633
646
|
'th',
|
|
634
647
|
{ class: 'calendar-cell' },
|
|
635
|
-
h('div', { class: 'calendar-header-cell-inner' }, props.weekNumbersLabel)
|
|
648
|
+
h('div', { class: 'calendar-header-cell-inner' }, props.weekNumbersLabel)
|
|
636
649
|
),
|
|
637
650
|
weekDays.map(({ date }: { date: Date }) => {
|
|
638
651
|
return h(
|
|
@@ -654,11 +667,11 @@ const CCalendar = defineComponent({
|
|
|
654
667
|
})
|
|
655
668
|
: date
|
|
656
669
|
.toLocaleDateString(props.locale, { weekday: 'long' })
|
|
657
|
-
.slice(0, props.weekdayFormat)
|
|
658
|
-
)
|
|
670
|
+
.slice(0, props.weekdayFormat)
|
|
671
|
+
)
|
|
659
672
|
)
|
|
660
673
|
}),
|
|
661
|
-
])
|
|
674
|
+
])
|
|
662
675
|
),
|
|
663
676
|
h('tbody', {}, [
|
|
664
677
|
view.value === 'days' &&
|
|
@@ -667,13 +680,13 @@ const CCalendar = defineComponent({
|
|
|
667
680
|
week.weekNumber === 0
|
|
668
681
|
? `${_calendarDate.getFullYear()}W53`
|
|
669
682
|
: `${_calendarDate.getFullYear()}W${week.weekNumber}`,
|
|
670
|
-
props.selectionType
|
|
683
|
+
props.selectionType
|
|
671
684
|
)
|
|
672
685
|
const isDisabled = isDateDisabled(
|
|
673
686
|
date,
|
|
674
687
|
minDate.value,
|
|
675
688
|
maxDate.value,
|
|
676
|
-
props.disabledDates
|
|
689
|
+
props.disabledDates
|
|
677
690
|
)
|
|
678
691
|
const isSelected = isDateSelected(date, startDate.value, endDate.value)
|
|
679
692
|
const current = week.days.some((day) => day.month === 'current')
|
|
@@ -711,14 +724,14 @@ const CCalendar = defineComponent({
|
|
|
711
724
|
h(
|
|
712
725
|
'th',
|
|
713
726
|
{ class: 'calendar-cell-week-number' },
|
|
714
|
-
week.weekNumber === 0 ? 53 : week.weekNumber
|
|
727
|
+
week.weekNumber === 0 ? 53 : week.weekNumber
|
|
715
728
|
),
|
|
716
729
|
week.days.map(({ date, month }: { date: Date; month: string }) => {
|
|
717
730
|
const isDisabled = isDateDisabled(
|
|
718
731
|
date,
|
|
719
732
|
minDate.value,
|
|
720
733
|
maxDate.value,
|
|
721
|
-
props.disabledDates
|
|
734
|
+
props.disabledDates
|
|
722
735
|
)
|
|
723
736
|
const isSelected = isDateSelected(date, startDate.value, endDate.value)
|
|
724
737
|
return month === 'current' || props.showAdjacementDays
|
|
@@ -777,12 +790,12 @@ const CCalendar = defineComponent({
|
|
|
777
790
|
? props.dayFormat(date)
|
|
778
791
|
: date.toLocaleDateString(props.locale, {
|
|
779
792
|
day: <'numeric' | '2-digit'>props.dayFormat,
|
|
780
|
-
})
|
|
781
|
-
)
|
|
793
|
+
})
|
|
794
|
+
)
|
|
782
795
|
)
|
|
783
796
|
: h('td')
|
|
784
797
|
}),
|
|
785
|
-
]
|
|
798
|
+
]
|
|
786
799
|
)
|
|
787
800
|
}),
|
|
788
801
|
view.value === 'months' &&
|
|
@@ -793,13 +806,13 @@ const CCalendar = defineComponent({
|
|
|
793
806
|
row.map((month, idx) => {
|
|
794
807
|
const monthNumber = index * 3 + idx
|
|
795
808
|
const date = new Date(_calendarDate.getFullYear(), monthNumber, 1)
|
|
796
|
-
const isDisabled =
|
|
809
|
+
const isDisabled = isMonthDisabled(
|
|
797
810
|
date,
|
|
798
811
|
minDate.value,
|
|
799
812
|
maxDate.value,
|
|
800
|
-
props.disabledDates
|
|
813
|
+
props.disabledDates
|
|
801
814
|
)
|
|
802
|
-
const isSelected =
|
|
815
|
+
const isSelected = isMonthSelected(date, startDate.value, endDate.value)
|
|
803
816
|
return h(
|
|
804
817
|
'td',
|
|
805
818
|
{
|
|
@@ -811,9 +824,9 @@ const CCalendar = defineComponent({
|
|
|
811
824
|
'range-hover':
|
|
812
825
|
props.selectionType === 'month' &&
|
|
813
826
|
(hoverDate.value && selectEndDate.value
|
|
814
|
-
?
|
|
815
|
-
:
|
|
816
|
-
range:
|
|
827
|
+
? isMonthInRange(date, startDate.value, hoverDate.value)
|
|
828
|
+
: isMonthInRange(date, hoverDate.value, endDate.value)),
|
|
829
|
+
range: isMonthInRange(date, startDate.value, endDate.value),
|
|
817
830
|
},
|
|
818
831
|
],
|
|
819
832
|
tabindex: isDisabled ? -1 : 0,
|
|
@@ -827,9 +840,9 @@ const CCalendar = defineComponent({
|
|
|
827
840
|
onMouseleave: () => handleCalendarMouseLeave(),
|
|
828
841
|
}),
|
|
829
842
|
},
|
|
830
|
-
h('div', { class: 'calendar-cell-inner' }, month)
|
|
843
|
+
h('div', { class: 'calendar-cell-inner' }, month)
|
|
831
844
|
)
|
|
832
|
-
})
|
|
845
|
+
})
|
|
833
846
|
)
|
|
834
847
|
}),
|
|
835
848
|
view.value === 'years' &&
|
|
@@ -839,13 +852,13 @@ const CCalendar = defineComponent({
|
|
|
839
852
|
{},
|
|
840
853
|
row.map((year) => {
|
|
841
854
|
const date = new Date(year, 0, 1)
|
|
842
|
-
const isDisabled =
|
|
855
|
+
const isDisabled = isYearDisabled(
|
|
843
856
|
date,
|
|
844
857
|
minDate.value,
|
|
845
858
|
maxDate.value,
|
|
846
|
-
props.disabledDates
|
|
859
|
+
props.disabledDates
|
|
847
860
|
)
|
|
848
|
-
const isSelected =
|
|
861
|
+
const isSelected = isYearSelected(date, startDate.value, endDate.value)
|
|
849
862
|
return h(
|
|
850
863
|
'td',
|
|
851
864
|
{
|
|
@@ -857,9 +870,9 @@ const CCalendar = defineComponent({
|
|
|
857
870
|
'range-hover':
|
|
858
871
|
props.selectionType === 'year' &&
|
|
859
872
|
(hoverDate.value && selectEndDate.value
|
|
860
|
-
?
|
|
861
|
-
:
|
|
862
|
-
range:
|
|
873
|
+
? isYearInRange(date, startDate.value, hoverDate.value)
|
|
874
|
+
: isYearInRange(date, hoverDate.value, endDate.value)),
|
|
875
|
+
range: isYearInRange(date, startDate.value, endDate.value),
|
|
863
876
|
},
|
|
864
877
|
],
|
|
865
878
|
tabindex: isDisabled ? -1 : 0,
|
|
@@ -873,9 +886,9 @@ const CCalendar = defineComponent({
|
|
|
873
886
|
onMouseleave: () => handleCalendarMouseLeave(),
|
|
874
887
|
}),
|
|
875
888
|
},
|
|
876
|
-
h('div', { class: 'calendar-cell-inner' }, year)
|
|
889
|
+
h('div', { class: 'calendar-cell-inner' }, year)
|
|
877
890
|
)
|
|
878
|
-
})
|
|
891
|
+
})
|
|
879
892
|
)
|
|
880
893
|
}),
|
|
881
894
|
]),
|
|
@@ -907,7 +920,7 @@ const CCalendar = defineComponent({
|
|
|
907
920
|
slots.navPrevDoubleIcon
|
|
908
921
|
? slots.navPrevDoubleIcon()
|
|
909
922
|
: h('span', { class: 'calendar-nav-icon calendar-nav-icon-double-prev' }),
|
|
910
|
-
}
|
|
923
|
+
}
|
|
911
924
|
),
|
|
912
925
|
view.value === 'days' &&
|
|
913
926
|
h(
|
|
@@ -926,9 +939,9 @@ const CCalendar = defineComponent({
|
|
|
926
939
|
slots.navPrevIcon
|
|
927
940
|
? slots.navPrevIcon()
|
|
928
941
|
: h('span', { class: 'calendar-nav-icon calendar-nav-icon-prev' }),
|
|
929
|
-
}
|
|
942
|
+
}
|
|
930
943
|
),
|
|
931
|
-
]
|
|
944
|
+
]
|
|
932
945
|
),
|
|
933
946
|
h(
|
|
934
947
|
'div',
|
|
@@ -948,7 +961,7 @@ const CCalendar = defineComponent({
|
|
|
948
961
|
if (props.navigation) view.value = 'months'
|
|
949
962
|
},
|
|
950
963
|
},
|
|
951
|
-
() => _calendarDate.toLocaleDateString(props.locale, { month: 'long' })
|
|
964
|
+
() => _calendarDate.toLocaleDateString(props.locale, { month: 'long' })
|
|
952
965
|
),
|
|
953
966
|
h(
|
|
954
967
|
CButton,
|
|
@@ -960,9 +973,9 @@ const CCalendar = defineComponent({
|
|
|
960
973
|
},
|
|
961
974
|
...(props.navYearFirst && { style: { order: '-1' } }),
|
|
962
975
|
},
|
|
963
|
-
() => _calendarDate.toLocaleDateString(props.locale, { year: 'numeric' })
|
|
976
|
+
() => _calendarDate.toLocaleDateString(props.locale, { year: 'numeric' })
|
|
964
977
|
),
|
|
965
|
-
]
|
|
978
|
+
]
|
|
966
979
|
),
|
|
967
980
|
props.navigation &&
|
|
968
981
|
h(
|
|
@@ -988,7 +1001,7 @@ const CCalendar = defineComponent({
|
|
|
988
1001
|
slots.navNextIcon
|
|
989
1002
|
? slots.navNextIcon()
|
|
990
1003
|
: h('span', { class: 'calendar-nav-icon calendar-nav-icon-next' }),
|
|
991
|
-
}
|
|
1004
|
+
}
|
|
992
1005
|
),
|
|
993
1006
|
h(
|
|
994
1007
|
CButton,
|
|
@@ -1006,9 +1019,9 @@ const CCalendar = defineComponent({
|
|
|
1006
1019
|
slots.navNextDoubleIcon
|
|
1007
1020
|
? slots.navNextDoubleIcon()
|
|
1008
1021
|
: h('span', { class: 'calendar-nav-icon calendar-nav-icon-double-next' }),
|
|
1009
|
-
}
|
|
1022
|
+
}
|
|
1010
1023
|
),
|
|
1011
|
-
]
|
|
1024
|
+
]
|
|
1012
1025
|
),
|
|
1013
1026
|
])
|
|
1014
1027
|
}
|
|
@@ -1034,7 +1047,7 @@ const CCalendar = defineComponent({
|
|
|
1034
1047
|
Calendar(_calendarDate),
|
|
1035
1048
|
])
|
|
1036
1049
|
}),
|
|
1037
|
-
]
|
|
1050
|
+
]
|
|
1038
1051
|
)
|
|
1039
1052
|
},
|
|
1040
1053
|
})
|