@coreui/vue-pro 5.17.1 → 5.19.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/autocomplete/CAutocomplete.js +43 -17
- package/dist/cjs/components/autocomplete/CAutocomplete.js.map +1 -1
- package/dist/cjs/components/autocomplete/CAutocompleteOptions.js +1 -1
- package/dist/cjs/components/autocomplete/CAutocompleteOptions.js.map +1 -1
- package/dist/cjs/components/autocomplete/utils.d.ts +1 -1
- package/dist/cjs/components/autocomplete/utils.js.map +1 -1
- package/dist/cjs/components/calendar/CCalendar.d.ts +50 -4
- package/dist/cjs/components/calendar/CCalendar.js +146 -40
- package/dist/cjs/components/calendar/CCalendar.js.map +1 -1
- package/dist/cjs/components/calendar/types.d.ts +2 -2
- package/dist/cjs/components/calendar/utils.d.ts +29 -4
- package/dist/cjs/components/calendar/utils.js +120 -6
- package/dist/cjs/components/calendar/utils.js.map +1 -1
- package/dist/cjs/components/carousel/CCarousel.d.ts +24 -2
- package/dist/cjs/components/carousel/CCarousel.js +51 -14
- package/dist/cjs/components/carousel/CCarousel.js.map +1 -1
- package/dist/cjs/components/carousel/CCarouselItem.js +3 -3
- package/dist/cjs/components/carousel/CCarouselItem.js.map +1 -1
- package/dist/cjs/components/chip/CChip.d.ts +253 -0
- package/dist/cjs/components/chip/CChip.js +314 -0
- package/dist/cjs/components/chip/CChip.js.map +1 -0
- package/dist/cjs/components/chip/const.d.ts +1 -0
- package/dist/cjs/components/chip/const.js +8 -0
- package/dist/cjs/components/chip/const.js.map +1 -0
- package/dist/cjs/components/chip/index.d.ts +6 -0
- package/dist/cjs/components/chip/index.js +13 -0
- package/dist/cjs/components/chip/index.js.map +1 -0
- package/dist/cjs/components/chip-input/CChipInput.d.ts +233 -0
- package/dist/cjs/components/chip-input/CChipInput.js +424 -0
- package/dist/cjs/components/chip-input/CChipInput.js.map +1 -0
- package/dist/cjs/components/chip-input/index.d.ts +6 -0
- package/dist/cjs/components/chip-input/index.js +13 -0
- package/dist/cjs/components/chip-input/index.js.map +1 -0
- package/dist/cjs/components/chip-set/CChipSet.d.ts +145 -0
- package/dist/cjs/components/chip-set/CChipSet.js +127 -0
- package/dist/cjs/components/chip-set/CChipSet.js.map +1 -0
- package/dist/cjs/components/chip-set/buildChips.d.ts +13 -0
- package/dist/cjs/components/chip-set/buildChips.js +19 -0
- package/dist/cjs/components/chip-set/buildChips.js.map +1 -0
- package/dist/cjs/components/chip-set/index.d.ts +2 -0
- package/dist/cjs/components/chip-set/useChipSet.d.ts +42 -0
- package/dist/cjs/components/chip-set/useChipSet.js +115 -0
- package/dist/cjs/components/chip-set/useChipSet.js.map +1 -0
- package/dist/cjs/components/collapse/CCollapse.js +2 -2
- package/dist/cjs/components/collapse/CCollapse.js.map +1 -1
- package/dist/cjs/components/date-picker/CDatePicker.d.ts +51 -5
- package/dist/cjs/components/date-picker/CDatePicker.js +54 -3
- package/dist/cjs/components/date-picker/CDatePicker.js.map +1 -1
- package/dist/cjs/components/date-range-picker/CDateRangePicker.d.ts +52 -6
- package/dist/cjs/components/date-range-picker/CDateRangePicker.js +46 -6
- package/dist/cjs/components/date-range-picker/CDateRangePicker.js.map +1 -1
- package/dist/cjs/components/dropdown/CDropdown.d.ts +24 -1
- package/dist/cjs/components/dropdown/CDropdown.js +35 -18
- package/dist/cjs/components/dropdown/CDropdown.js.map +1 -1
- package/dist/cjs/components/dropdown/CDropdownToggle.js +1 -1
- package/dist/cjs/components/dropdown/CDropdownToggle.js.map +1 -1
- package/dist/cjs/components/focus-trap/CFocusTrap.js +4 -1
- package/dist/cjs/components/focus-trap/CFocusTrap.js.map +1 -1
- package/dist/cjs/components/form/CFormInput.d.ts +3 -0
- package/dist/cjs/components/form/CFormRange.d.ts +2 -2
- package/dist/cjs/components/form/CFormRange.js +2 -2
- package/dist/cjs/components/form/CFormRange.js.map +1 -1
- package/dist/cjs/components/grid/CContainer.js +3 -1
- package/dist/cjs/components/grid/CContainer.js.map +1 -1
- package/dist/cjs/components/index.d.ts +4 -0
- package/dist/cjs/components/index.js +140 -126
- package/dist/cjs/components/index.js.map +1 -1
- package/dist/cjs/components/modal/CModal.js +3 -2
- package/dist/cjs/components/modal/CModal.js.map +1 -1
- package/dist/cjs/components/modal/CModalHeader.js +6 -3
- package/dist/cjs/components/modal/CModalHeader.js.map +1 -1
- package/dist/cjs/components/multi-select/CMultiSelect.d.ts +206 -3
- package/dist/cjs/components/multi-select/CMultiSelect.js +307 -30
- package/dist/cjs/components/multi-select/CMultiSelect.js.map +1 -1
- package/dist/cjs/components/multi-select/CMultiSelectNativeSelect.js +1 -2
- package/dist/cjs/components/multi-select/CMultiSelectNativeSelect.js.map +1 -1
- package/dist/cjs/components/multi-select/CMultiSelectOptions.d.ts +16 -1
- package/dist/cjs/components/multi-select/CMultiSelectOptions.js +60 -4
- package/dist/cjs/components/multi-select/CMultiSelectOptions.js.map +1 -1
- package/dist/cjs/components/multi-select/CMultiSelectSelection.d.ts +9 -0
- package/dist/cjs/components/multi-select/CMultiSelectSelection.js +6 -1
- package/dist/cjs/components/multi-select/CMultiSelectSelection.js.map +1 -1
- package/dist/cjs/components/multi-select/utils.js +1 -4
- package/dist/cjs/components/multi-select/utils.js.map +1 -1
- package/dist/cjs/components/nav/CNav.js +8 -1
- package/dist/cjs/components/nav/CNav.js.map +1 -1
- package/dist/cjs/components/nav/CNavGroup.d.ts +15 -7
- package/dist/cjs/components/nav/CNavGroup.js +113 -88
- package/dist/cjs/components/nav/CNavGroup.js.map +1 -1
- package/dist/cjs/components/nav/CNavLink.js +11 -0
- package/dist/cjs/components/nav/CNavLink.js.map +1 -1
- package/dist/cjs/components/popover/CPopover.d.ts +24 -1
- package/dist/cjs/components/popover/CPopover.js +18 -1
- package/dist/cjs/components/popover/CPopover.js.map +1 -1
- package/dist/cjs/components/range-slider/CRangeSlider.d.ts +1 -1
- package/dist/cjs/components/search-button/CSearchButton.d.ts +63 -0
- package/dist/cjs/components/search-button/CSearchButton.js +125 -0
- package/dist/cjs/components/search-button/CSearchButton.js.map +1 -0
- package/dist/cjs/components/search-button/index.d.ts +6 -0
- package/dist/cjs/components/search-button/index.js +13 -0
- package/dist/cjs/components/search-button/index.js.map +1 -0
- package/dist/cjs/components/search-button/types.d.ts +10 -0
- package/dist/cjs/components/search-button/utils.d.ts +11 -0
- package/dist/cjs/components/search-button/utils.js +114 -0
- package/dist/cjs/components/search-button/utils.js.map +1 -0
- package/dist/cjs/components/sidebar/CSidebar.js +4 -3
- package/dist/cjs/components/sidebar/CSidebar.js.map +1 -1
- package/dist/cjs/components/sidebar/CSidebarNav.d.ts +32 -0
- package/dist/cjs/components/sidebar/CSidebarNav.js +28 -24
- package/dist/cjs/components/sidebar/CSidebarNav.js.map +1 -1
- package/dist/cjs/components/smart-table/CSmartTable.d.ts +1 -1
- package/dist/cjs/components/smart-table/CSmartTableBody.d.ts +1 -1
- package/dist/cjs/components/smart-table/CSmartTableHead.d.ts +1 -1
- package/dist/cjs/components/spinner/CSpinner.d.ts +4 -4
- package/dist/cjs/components/spinner/CSpinner.js +2 -2
- package/dist/cjs/components/spinner/CSpinner.js.map +1 -1
- package/dist/cjs/components/table/utils.js +4 -4
- package/dist/cjs/components/table/utils.js.map +1 -1
- package/dist/cjs/components/tabs/CTabList.js +8 -2
- package/dist/cjs/components/tabs/CTabList.js.map +1 -1
- package/dist/cjs/components/tabs/CTabs.js +1 -1
- package/dist/cjs/components/tabs/CTabs.js.map +1 -1
- package/dist/cjs/components/toast/CToast.js +12 -2
- package/dist/cjs/components/toast/CToast.js.map +1 -1
- package/dist/cjs/components/toast/CToastClose.d.ts +3 -2
- package/dist/cjs/components/toast/CToastClose.js +2 -3
- package/dist/cjs/components/toast/CToastClose.js.map +1 -1
- package/dist/cjs/components/tooltip/CTooltip.d.ts +24 -1
- package/dist/cjs/components/tooltip/CTooltip.js +18 -1
- package/dist/cjs/components/tooltip/CTooltip.js.map +1 -1
- package/dist/cjs/directives/v-c-popover.js +6 -3
- package/dist/cjs/directives/v-c-popover.js.map +1 -1
- package/dist/cjs/directives/v-c-tooltip.js +6 -3
- package/dist/cjs/directives/v-c-tooltip.js.map +1 -1
- package/dist/cjs/directives/v-c-visible.js +1 -1
- package/dist/cjs/directives/v-c-visible.js.map +1 -1
- package/dist/cjs/index.js +158 -144
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/node_modules/@coreui/icons/dist/esm/free/cil-arrow-bottom.js +1 -1
- package/dist/cjs/node_modules/@coreui/icons/dist/esm/free/cil-arrow-bottom.js.map +1 -1
- package/dist/cjs/node_modules/@coreui/icons/dist/esm/free/cil-arrow-top.js +1 -1
- package/dist/cjs/node_modules/@coreui/icons/dist/esm/free/cil-arrow-top.js.map +1 -1
- package/dist/cjs/node_modules/@coreui/icons/dist/esm/free/cil-filter-x.js +1 -1
- package/dist/cjs/node_modules/@coreui/icons/dist/esm/free/cil-filter-x.js.map +1 -1
- package/dist/cjs/node_modules/@coreui/icons/dist/esm/free/cil-swap-vertical.js +1 -1
- package/dist/cjs/node_modules/@coreui/icons/dist/esm/free/cil-swap-vertical.js.map +1 -1
- package/dist/cjs/utils/index.d.ts +2 -1
- package/dist/cjs/utils/swipe.d.ts +26 -0
- package/dist/cjs/utils/swipe.js +94 -0
- package/dist/cjs/utils/swipe.js.map +1 -0
- package/dist/cjs/utils/transition.js.map +1 -1
- package/dist/esm/components/autocomplete/CAutocomplete.js +45 -19
- package/dist/esm/components/autocomplete/CAutocomplete.js.map +1 -1
- package/dist/esm/components/autocomplete/CAutocompleteOptions.js +2 -2
- package/dist/esm/components/autocomplete/utils.d.ts +1 -1
- package/dist/esm/components/autocomplete/utils.js.map +1 -1
- package/dist/esm/components/calendar/CCalendar.d.ts +50 -4
- package/dist/esm/components/calendar/CCalendar.js +147 -41
- package/dist/esm/components/calendar/CCalendar.js.map +1 -1
- package/dist/esm/components/calendar/types.d.ts +2 -2
- package/dist/esm/components/calendar/utils.d.ts +29 -4
- package/dist/esm/components/calendar/utils.js +118 -7
- package/dist/esm/components/calendar/utils.js.map +1 -1
- package/dist/esm/components/carousel/CCarousel.d.ts +24 -2
- package/dist/esm/components/carousel/CCarousel.js +52 -15
- package/dist/esm/components/carousel/CCarousel.js.map +1 -1
- package/dist/esm/components/carousel/CCarouselItem.js +3 -3
- package/dist/esm/components/carousel/CCarouselItem.js.map +1 -1
- package/dist/esm/components/chip/CChip.d.ts +253 -0
- package/dist/esm/components/chip/CChip.js +312 -0
- package/dist/esm/components/chip/CChip.js.map +1 -0
- package/dist/esm/components/chip/const.d.ts +1 -0
- package/dist/esm/components/chip/const.js +6 -0
- package/dist/esm/components/chip/const.js.map +1 -0
- package/dist/esm/components/chip/index.d.ts +6 -0
- package/dist/esm/components/chip/index.js +10 -0
- package/dist/esm/components/chip/index.js.map +1 -0
- package/dist/esm/components/chip-input/CChipInput.d.ts +233 -0
- package/dist/esm/components/chip-input/CChipInput.js +422 -0
- package/dist/esm/components/chip-input/CChipInput.js.map +1 -0
- package/dist/esm/components/chip-input/index.d.ts +6 -0
- package/dist/esm/components/chip-input/index.js +10 -0
- package/dist/esm/components/chip-input/index.js.map +1 -0
- package/dist/esm/components/chip-set/CChipSet.d.ts +145 -0
- package/dist/esm/components/chip-set/CChipSet.js +125 -0
- package/dist/esm/components/chip-set/CChipSet.js.map +1 -0
- package/dist/esm/components/chip-set/buildChips.d.ts +13 -0
- package/dist/esm/components/chip-set/buildChips.js +17 -0
- package/dist/esm/components/chip-set/buildChips.js.map +1 -0
- package/dist/esm/components/chip-set/index.d.ts +2 -0
- package/dist/esm/components/chip-set/useChipSet.d.ts +42 -0
- package/dist/esm/components/chip-set/useChipSet.js +112 -0
- package/dist/esm/components/chip-set/useChipSet.js.map +1 -0
- package/dist/esm/components/collapse/CCollapse.js +2 -2
- package/dist/esm/components/collapse/CCollapse.js.map +1 -1
- package/dist/esm/components/date-picker/CDatePicker.d.ts +51 -5
- package/dist/esm/components/date-picker/CDatePicker.js +54 -3
- package/dist/esm/components/date-picker/CDatePicker.js.map +1 -1
- package/dist/esm/components/date-range-picker/CDateRangePicker.d.ts +52 -6
- package/dist/esm/components/date-range-picker/CDateRangePicker.js +46 -6
- package/dist/esm/components/date-range-picker/CDateRangePicker.js.map +1 -1
- package/dist/esm/components/dropdown/CDropdown.d.ts +24 -1
- package/dist/esm/components/dropdown/CDropdown.js +35 -18
- package/dist/esm/components/dropdown/CDropdown.js.map +1 -1
- package/dist/esm/components/dropdown/CDropdownToggle.js +2 -2
- package/dist/esm/components/dropdown/CDropdownToggle.js.map +1 -1
- package/dist/esm/components/focus-trap/CFocusTrap.js +4 -1
- package/dist/esm/components/focus-trap/CFocusTrap.js.map +1 -1
- package/dist/esm/components/form/CFormInput.d.ts +3 -0
- package/dist/esm/components/form/CFormRange.d.ts +2 -2
- package/dist/esm/components/form/CFormRange.js +2 -2
- package/dist/esm/components/form/CFormRange.js.map +1 -1
- package/dist/esm/components/grid/CContainer.js +3 -1
- package/dist/esm/components/grid/CContainer.js.map +1 -1
- package/dist/esm/components/index.d.ts +4 -0
- package/dist/esm/components/index.js +23 -16
- package/dist/esm/components/index.js.map +1 -1
- package/dist/esm/components/modal/CModal.js +3 -2
- package/dist/esm/components/modal/CModal.js.map +1 -1
- package/dist/esm/components/modal/CModalHeader.js +6 -3
- package/dist/esm/components/modal/CModalHeader.js.map +1 -1
- package/dist/esm/components/multi-select/CMultiSelect.d.ts +206 -3
- package/dist/esm/components/multi-select/CMultiSelect.js +308 -31
- package/dist/esm/components/multi-select/CMultiSelect.js.map +1 -1
- package/dist/esm/components/multi-select/CMultiSelectNativeSelect.js +1 -2
- package/dist/esm/components/multi-select/CMultiSelectNativeSelect.js.map +1 -1
- package/dist/esm/components/multi-select/CMultiSelectOptions.d.ts +16 -1
- package/dist/esm/components/multi-select/CMultiSelectOptions.js +60 -4
- package/dist/esm/components/multi-select/CMultiSelectOptions.js.map +1 -1
- package/dist/esm/components/multi-select/CMultiSelectSelection.d.ts +9 -0
- package/dist/esm/components/multi-select/CMultiSelectSelection.js +6 -1
- package/dist/esm/components/multi-select/CMultiSelectSelection.js.map +1 -1
- package/dist/esm/components/multi-select/utils.js +1 -4
- package/dist/esm/components/multi-select/utils.js.map +1 -1
- package/dist/esm/components/nav/CNav.js +8 -1
- package/dist/esm/components/nav/CNav.js.map +1 -1
- package/dist/esm/components/nav/CNavGroup.d.ts +15 -7
- package/dist/esm/components/nav/CNavGroup.js +114 -89
- package/dist/esm/components/nav/CNavGroup.js.map +1 -1
- package/dist/esm/components/nav/CNavLink.js +12 -1
- package/dist/esm/components/nav/CNavLink.js.map +1 -1
- package/dist/esm/components/popover/CPopover.d.ts +24 -1
- package/dist/esm/components/popover/CPopover.js +18 -1
- package/dist/esm/components/popover/CPopover.js.map +1 -1
- package/dist/esm/components/range-slider/CRangeSlider.d.ts +1 -1
- package/dist/esm/components/search-button/CSearchButton.d.ts +63 -0
- package/dist/esm/components/search-button/CSearchButton.js +123 -0
- package/dist/esm/components/search-button/CSearchButton.js.map +1 -0
- package/dist/esm/components/search-button/index.d.ts +6 -0
- package/dist/esm/components/search-button/index.js +10 -0
- package/dist/esm/components/search-button/index.js.map +1 -0
- package/dist/esm/components/search-button/types.d.ts +10 -0
- package/dist/esm/components/search-button/utils.d.ts +11 -0
- package/dist/esm/components/search-button/utils.js +103 -0
- package/dist/esm/components/search-button/utils.js.map +1 -0
- package/dist/esm/components/sidebar/CSidebar.js +4 -3
- package/dist/esm/components/sidebar/CSidebar.js.map +1 -1
- package/dist/esm/components/sidebar/CSidebarNav.d.ts +32 -0
- package/dist/esm/components/sidebar/CSidebarNav.js +29 -25
- package/dist/esm/components/sidebar/CSidebarNav.js.map +1 -1
- package/dist/esm/components/smart-table/CSmartTable.d.ts +1 -1
- package/dist/esm/components/smart-table/CSmartTableBody.d.ts +1 -1
- package/dist/esm/components/smart-table/CSmartTableHead.d.ts +1 -1
- package/dist/esm/components/smart-table/CSmartTableHead.js +1 -1
- package/dist/esm/components/spinner/CSpinner.d.ts +4 -4
- package/dist/esm/components/spinner/CSpinner.js +2 -2
- package/dist/esm/components/spinner/CSpinner.js.map +1 -1
- package/dist/esm/components/table/utils.js +4 -4
- package/dist/esm/components/table/utils.js.map +1 -1
- package/dist/esm/components/tabs/CTabList.js +8 -2
- package/dist/esm/components/tabs/CTabList.js.map +1 -1
- package/dist/esm/components/tabs/CTabs.js +1 -1
- package/dist/esm/components/tabs/CTabs.js.map +1 -1
- package/dist/esm/components/time-picker/CTimePicker.js +1 -1
- package/dist/esm/components/toast/CToast.js +12 -2
- package/dist/esm/components/toast/CToast.js.map +1 -1
- package/dist/esm/components/toast/CToastClose.d.ts +3 -2
- package/dist/esm/components/toast/CToastClose.js +2 -3
- package/dist/esm/components/toast/CToastClose.js.map +1 -1
- package/dist/esm/components/tooltip/CTooltip.d.ts +24 -1
- package/dist/esm/components/tooltip/CTooltip.js +18 -1
- package/dist/esm/components/tooltip/CTooltip.js.map +1 -1
- package/dist/esm/directives/v-c-popover.js +6 -3
- package/dist/esm/directives/v-c-popover.js.map +1 -1
- package/dist/esm/directives/v-c-tooltip.js +6 -3
- package/dist/esm/directives/v-c-tooltip.js.map +1 -1
- package/dist/esm/directives/v-c-visible.js +1 -1
- package/dist/esm/directives/v-c-visible.js.map +1 -1
- package/dist/esm/index.js +67 -60
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/node_modules/@coreui/icons/dist/esm/free/cil-arrow-bottom.js +1 -1
- package/dist/esm/node_modules/@coreui/icons/dist/esm/free/cil-arrow-bottom.js.map +1 -1
- package/dist/esm/node_modules/@coreui/icons/dist/esm/free/cil-arrow-top.js +1 -1
- package/dist/esm/node_modules/@coreui/icons/dist/esm/free/cil-arrow-top.js.map +1 -1
- package/dist/esm/node_modules/@coreui/icons/dist/esm/free/cil-filter-x.js +1 -1
- package/dist/esm/node_modules/@coreui/icons/dist/esm/free/cil-filter-x.js.map +1 -1
- package/dist/esm/node_modules/@coreui/icons/dist/esm/free/cil-swap-vertical.js +1 -1
- package/dist/esm/node_modules/@coreui/icons/dist/esm/free/cil-swap-vertical.js.map +1 -1
- package/dist/esm/utils/index.d.ts +2 -1
- package/dist/esm/utils/swipe.d.ts +26 -0
- package/dist/esm/utils/swipe.js +90 -0
- package/dist/esm/utils/swipe.js.map +1 -0
- package/dist/esm/utils/transition.js.map +1 -1
- package/package.json +9 -9
- package/src/components/accordion/CAccordion.ts +2 -2
- package/src/components/accordion/CAccordionBody.ts +1 -1
- package/src/components/accordion/CAccordionButton.ts +1 -1
- package/src/components/accordion/CAccordionHeader.ts +2 -2
- package/src/components/accordion/__tests__/__snapshots__/CAccordionButton.spec.ts.snap +1 -1
- package/src/components/accordion/__tests__/__snapshots__/CAccordionHeader.spec.ts.snap +1 -1
- package/src/components/alert/CAlert.ts +3 -3
- package/src/components/alert/CAlertHeading.ts +1 -1
- package/src/components/alert/CAlertLink.ts +1 -1
- package/src/components/autocomplete/CAutocomplete.ts +71 -34
- package/src/components/autocomplete/__tests__/CAutocomplete.spec.ts +48 -2
- package/src/components/autocomplete/__tests__/CAutocompleteOptions.spec.ts +8 -5
- package/src/components/autocomplete/utils.ts +2 -2
- package/src/components/avatar/CAvatar.ts +1 -1
- package/src/components/backdrop/CBackdrop.ts +1 -1
- package/src/components/badge/CBadge.ts +1 -1
- package/src/components/breadcrumb/CBreadcrumb.ts +1 -1
- package/src/components/breadcrumb/CBreadcrumbItem.ts +1 -1
- package/src/components/button/CButton.ts +1 -1
- package/src/components/button/__tests__/CButton.spec.ts +0 -1
- package/src/components/button/__tests__/__snapshots__/CButton.spec.ts.snap +1 -1
- package/src/components/button-group/CButtonGroup.ts +1 -1
- package/src/components/calendar/CCalendar.ts +170 -37
- package/src/components/calendar/types.ts +2 -2
- package/src/components/calendar/utils.ts +150 -7
- package/src/components/callout/CCallout.ts +1 -1
- package/src/components/card/CCard.ts +1 -1
- package/src/components/card/CCardImage.ts +1 -1
- package/src/components/card/CCardLink.ts +1 -1
- package/src/components/carousel/CCarousel.ts +61 -22
- package/src/components/carousel/CCarouselCaption.ts +1 -1
- package/src/components/carousel/CCarouselItem.ts +5 -4
- package/src/components/carousel/__tests__/CCarousel.spec.ts +1 -1
- package/src/components/chip/CChip.ts +361 -0
- package/src/components/chip/__tests__/CChip.spec.ts +391 -0
- package/src/components/chip/__tests__/__snapshots__/CChip.spec.ts.snap +5 -0
- package/src/components/chip/const.ts +3 -0
- package/src/components/chip/index.ts +10 -0
- package/src/components/chip-input/CChipInput.ts +503 -0
- package/src/components/chip-input/__tests__/CChipInput.spec.ts +443 -0
- package/src/components/chip-input/__tests__/__snapshots__/CChipInput.spec.ts.snap +3 -0
- package/src/components/chip-input/index.ts +10 -0
- package/src/components/chip-set/CChipSet.ts +140 -0
- package/src/components/chip-set/__tests__/CChipSet.spec.ts +174 -0
- package/src/components/chip-set/buildChips.ts +29 -0
- package/src/components/chip-set/index.ts +3 -0
- package/src/components/chip-set/useChipSet.ts +168 -0
- package/src/components/collapse/CCollapse.ts +5 -5
- package/src/components/collapse/__tests__/CCollapse.spec.ts +48 -0
- package/src/components/collapse/__tests__/__snapshots__/CCollapse.spec.ts.snap +7 -0
- package/src/components/conditional-teleport/CConditionalTeleport.ts +3 -3
- package/src/components/conditional-teleport/__tests__/CConditionalTeleport.spec.ts +28 -0
- package/src/components/date-picker/CDatePicker.ts +73 -13
- package/src/components/date-range-picker/CDateRangePicker.ts +53 -7
- package/src/components/dropdown/CDropdown.ts +44 -24
- package/src/components/dropdown/CDropdownHeader.ts +1 -1
- package/src/components/dropdown/CDropdownItem.ts +1 -1
- package/src/components/dropdown/CDropdownMenu.ts +2 -2
- package/src/components/dropdown/CDropdownToggle.ts +4 -4
- package/src/components/dropdown/__tests__/CDropdown.spec.ts +1 -1
- package/src/components/dropdown/__tests__/CDropdownMenu.spec.ts +11 -7
- package/src/components/dropdown/__tests__/CDropdownPopperConfig.spec.ts +63 -0
- package/src/components/dropdown/__tests__/CDropdownToggle.spec.ts +0 -2
- package/src/components/dropdown/__tests__/__snapshots__/CDropdown.spec.ts.snap +1 -1
- package/src/components/dropdown/__tests__/__snapshots__/CDropdownMenu.spec.ts.snap +4 -0
- package/src/components/dropdown/utils.ts +2 -2
- package/src/components/focus-trap/CFocusTrap.ts +9 -6
- package/src/components/focus-trap/__tests__/CFocusTrap.spec.ts +42 -0
- package/src/components/footer/CFooter.ts +1 -1
- package/src/components/footer/__tests__/__snapshots__/CFooter.spec.ts.snap +2 -0
- package/src/components/form/CForm.ts +1 -1
- package/src/components/form/CFormCheck.ts +5 -5
- package/src/components/form/CFormControlValidation.ts +3 -3
- package/src/components/form/CFormFeedback.ts +1 -1
- package/src/components/form/CFormFloating.ts +1 -1
- package/src/components/form/CFormInput.ts +2 -2
- package/src/components/form/CFormLabel.ts +1 -1
- package/src/components/form/CFormRange.ts +4 -4
- package/src/components/form/CFormSelect.ts +3 -3
- package/src/components/form/CFormSwitch.ts +2 -2
- package/src/components/form/CFormTextarea.ts +2 -2
- package/src/components/form/CInputGroup.ts +1 -1
- package/src/components/form/__tests__/CFormRange.spec.ts +2 -2
- package/src/components/form/__tests__/CFormText.spec.ts +1 -1
- package/src/components/form/__tests__/__snapshots__/CFormRange.spec.ts.snap +1 -1
- package/src/components/grid/CCol.ts +1 -1
- package/src/components/grid/CContainer.ts +4 -2
- package/src/components/grid/CRow.ts +1 -1
- package/src/components/header/CHeader.ts +2 -2
- package/src/components/header/CHeaderNav.ts +1 -1
- package/src/components/header/CHeaderToggler.ts +1 -1
- package/src/components/header/__tests__/CHeader.spec.ts +1 -2
- package/src/components/header/__tests__/__snapshots__/CHeader.spec.ts.snap +2 -0
- package/src/components/index.ts +4 -0
- package/src/components/link/CLink.ts +1 -1
- package/src/components/list-group/CListGroup.ts +1 -1
- package/src/components/list-group/CListGroupItem.ts +1 -1
- package/src/components/modal/CModal.ts +3 -2
- package/src/components/modal/CModalHeader.ts +10 -3
- package/src/components/modal/__tests__/__snapshots__/CModal.spec.ts.snap +9 -4
- package/src/components/multi-select/CMultiSelect.ts +385 -43
- package/src/components/multi-select/CMultiSelectNativeSelect.ts +1 -2
- package/src/components/multi-select/CMultiSelectOptions.ts +77 -3
- package/src/components/multi-select/CMultiSelectSelection.ts +6 -1
- package/src/components/multi-select/utils.ts +6 -6
- package/src/components/nav/CNav.ts +9 -2
- package/src/components/nav/CNavGroup.ts +147 -99
- package/src/components/nav/CNavItem.ts +2 -2
- package/src/components/nav/CNavLink.ts +19 -2
- package/src/components/nav/__tests__/CNavGroup.spec.ts +188 -6
- package/src/components/nav/__tests__/CNavItem.spec.ts +6 -6
- package/src/components/nav/__tests__/__snapshots__/CNavGroup.spec.ts.snap +3 -7
- package/src/components/nav/__tests__/__snapshots__/CNavItem.spec.ts.snap +1 -5
- package/src/components/navbar/CNavbar.ts +2 -2
- package/src/components/navbar/CNavbarBrand.ts +1 -1
- package/src/components/navbar/CNavbarNav.ts +1 -1
- package/src/components/navbar/CNavbarToggler.ts +1 -1
- package/src/components/navbar/__tests__/CNavbar.spec.ts +1 -1
- package/src/components/pagination/CPagination.ts +2 -2
- package/src/components/pagination/CPaginationItem.ts +2 -2
- package/src/components/placeholder/CPlaceholder.ts +1 -1
- package/src/components/popover/CPopover.ts +27 -7
- package/src/components/popover/__tests__/CPopover.spec.ts +43 -0
- package/src/components/progress/CProgress.ts +2 -2
- package/src/components/progress/CProgressBar.ts +1 -1
- package/src/components/progress/CProgressStacked.ts +1 -1
- package/src/components/progress/__tests__/CProgressBar.spec.ts +0 -4
- package/src/components/search-button/CSearchButton.ts +163 -0
- package/src/components/search-button/__tests__/CSearchButton.spec.ts +128 -0
- package/src/components/search-button/__tests__/__snapshots__/CSearchButton.spec.ts.snap +13 -0
- package/src/components/search-button/index.ts +10 -0
- package/src/components/search-button/types.ts +10 -0
- package/src/components/search-button/utils.ts +140 -0
- package/src/components/sidebar/CSidebar.ts +9 -6
- package/src/components/sidebar/CSidebarBrand.ts +1 -1
- package/src/components/sidebar/CSidebarNav.ts +30 -28
- package/src/components/sidebar/__tests__/CSidebar.spec.ts +1 -1
- package/src/components/spinner/CSpinner.ts +6 -6
- package/src/components/spinner/__tests__/CSpinner.spec.ts +0 -1
- package/src/components/stepper/__tests__/CStepper.spec.ts +13 -8
- package/src/components/table/CTable.ts +16 -16
- package/src/components/table/CTableBody.ts +1 -1
- package/src/components/table/CTableDataCell.ts +1 -1
- package/src/components/table/CTableFoot.ts +1 -1
- package/src/components/table/CTableHead.ts +1 -1
- package/src/components/table/CTableHeaderCell.ts +1 -1
- package/src/components/table/CTableRow.ts +1 -1
- package/src/components/table/types.ts +1 -0
- package/src/components/table/utils.ts +4 -4
- package/src/components/tabs/CTab.ts +1 -1
- package/src/components/tabs/CTabList.ts +12 -5
- package/src/components/tabs/CTabPane.ts +3 -3
- package/src/components/tabs/CTabPanel.ts +5 -5
- package/src/components/tabs/CTabs.ts +2 -2
- package/src/components/tabs/__tests__/__snapshots__/CTabPane.spec.ts.snap +1 -1
- package/src/components/toast/CToast.ts +12 -4
- package/src/components/toast/CToastClose.ts +5 -6
- package/src/components/toast/CToaster.ts +1 -1
- package/src/components/toast/__tests__/CToaster.spec.ts +0 -2
- package/src/components/toast/__tests__/__snapshots__/CToastClose.spec.ts.snap +1 -1
- package/src/components/tooltip/CTooltip.ts +26 -6
- package/src/components/tooltip/__tests__/CTooltip.spec.ts +43 -0
- package/src/components/widgets/CWidgetStatsA.ts +4 -4
- package/src/components/widgets/CWidgetStatsB.ts +5 -5
- package/src/components/widgets/CWidgetStatsC.ts +5 -5
- package/src/components/widgets/CWidgetStatsD.ts +5 -5
- package/src/components/widgets/CWidgetStatsE.ts +4 -4
- package/src/components/widgets/CWidgetStatsF.ts +5 -5
- package/src/directives/__tests__/v-c-placeholder.spec.ts +33 -0
- package/src/directives/__tests__/v-c-popover.spec.ts +67 -0
- package/src/directives/__tests__/v-c-tooltip.spec.ts +66 -0
- package/src/directives/v-c-popover.ts +8 -5
- package/src/directives/v-c-tooltip.ts +8 -5
- package/src/directives/v-c-visible.ts +1 -1
- package/src/index.ts +1 -1
- package/src/utils/ComponentProps.ts +1 -0
- package/src/utils/__tests__/swipe.spec.ts +82 -0
- package/src/utils/getNextActiveElement.ts +1 -1
- package/src/utils/index.ts +2 -0
- package/src/utils/swipe.ts +114 -0
- package/src/utils/transition.ts +2 -2
- package/dist/cjs/components/collapse/__test__/CCollapse.spec.d.ts +0 -1
- package/dist/esm/components/collapse/__test__/CCollapse.spec.d.ts +0 -1
- package/src/components/accordion/__tests__/CAccordionCollapse.spec.ts +0 -28
- package/src/components/accordion/__tests__/__snapshots__/CAccordionCollapse.spec.ts.snap +0 -7
- package/src/components/collapse/__test__/CCollapse.spec.ts +0 -44
- package/src/components/collapse/__test__/__snapshots__/CCollapse.spec.ts.snap +0 -13
|
@@ -15,6 +15,9 @@ import {
|
|
|
15
15
|
isMonthDisabled,
|
|
16
16
|
isMonthInRange,
|
|
17
17
|
isMonthSelected,
|
|
18
|
+
isQuarterDisabled,
|
|
19
|
+
isQuarterInRange,
|
|
20
|
+
isQuarterSelected,
|
|
18
21
|
isToday,
|
|
19
22
|
isSameDateAs,
|
|
20
23
|
isYearDisabled,
|
|
@@ -77,7 +80,7 @@ const CCalendar = defineComponent({
|
|
|
77
80
|
default: 1,
|
|
78
81
|
},
|
|
79
82
|
/**
|
|
80
|
-
* Set the format of
|
|
83
|
+
* Set the format of days.
|
|
81
84
|
*
|
|
82
85
|
* @default 'numeric'
|
|
83
86
|
* @since 4.6.0
|
|
@@ -138,6 +141,19 @@ const CCalendar = defineComponent({
|
|
|
138
141
|
* Min selectable date.
|
|
139
142
|
*/
|
|
140
143
|
minDate: null as unknown as PropType<Date | string | null>,
|
|
144
|
+
/**
|
|
145
|
+
* Sets the format for month names.
|
|
146
|
+
*
|
|
147
|
+
* @default 'short'
|
|
148
|
+
* @since 5.18.0
|
|
149
|
+
*/
|
|
150
|
+
monthFormat: {
|
|
151
|
+
type: String as PropType<'long' | 'narrow' | 'short' | 'numeric' | '2-digit'>,
|
|
152
|
+
default: 'short',
|
|
153
|
+
validator: (value: string) => {
|
|
154
|
+
return ['long', 'narrow', 'short', 'numeric', '2-digit'].includes(value)
|
|
155
|
+
},
|
|
156
|
+
},
|
|
141
157
|
/**
|
|
142
158
|
* Show arrows navigation.
|
|
143
159
|
*/
|
|
@@ -166,14 +182,15 @@ const CCalendar = defineComponent({
|
|
|
166
182
|
*/
|
|
167
183
|
selectAdjacementDays: Boolean,
|
|
168
184
|
/**
|
|
169
|
-
* Specify the type of date selection as day, week, month, or year.
|
|
185
|
+
* Specify the type of date selection as day, week, month, quarter, or year.
|
|
170
186
|
*
|
|
171
187
|
* @since 5.0.0
|
|
172
188
|
*/
|
|
173
189
|
selectionType: {
|
|
174
190
|
type: String as PropType<SelectionTypes>,
|
|
175
191
|
default: 'day',
|
|
176
|
-
validator: (value: SelectionTypes) =>
|
|
192
|
+
validator: (value: SelectionTypes) =>
|
|
193
|
+
['day', 'week', 'month', 'quarter', 'year'].includes(value),
|
|
177
194
|
},
|
|
178
195
|
/**
|
|
179
196
|
* Set whether to display dates in adjacent months (non-selectable) at the start and end of the current month.
|
|
@@ -221,6 +238,19 @@ const CCalendar = defineComponent({
|
|
|
221
238
|
* @since 5.0.0
|
|
222
239
|
*/
|
|
223
240
|
weekNumbersLabel: String,
|
|
241
|
+
/**
|
|
242
|
+
* Sets the format for years.
|
|
243
|
+
*
|
|
244
|
+
* @default 'numeric'
|
|
245
|
+
* @since 5.18.0
|
|
246
|
+
*/
|
|
247
|
+
yearFormat: {
|
|
248
|
+
type: String as PropType<'numeric' | '2-digit'>,
|
|
249
|
+
default: 'numeric',
|
|
250
|
+
validator: (value: string) => {
|
|
251
|
+
return ['numeric', '2-digit'].includes(value)
|
|
252
|
+
},
|
|
253
|
+
},
|
|
224
254
|
},
|
|
225
255
|
emits: [
|
|
226
256
|
/**
|
|
@@ -233,6 +263,7 @@ const CCalendar = defineComponent({
|
|
|
233
263
|
* Callback fired when the calendar date changed.
|
|
234
264
|
*
|
|
235
265
|
* @property {Date | null} date
|
|
266
|
+
* @property {ViewTypes} view
|
|
236
267
|
*/
|
|
237
268
|
'calendar-date-change',
|
|
238
269
|
/**
|
|
@@ -280,6 +311,7 @@ const CCalendar = defineComponent({
|
|
|
280
311
|
day: 'days',
|
|
281
312
|
week: 'days',
|
|
282
313
|
month: 'months',
|
|
314
|
+
quarter: 'quarters',
|
|
283
315
|
year: 'years',
|
|
284
316
|
}
|
|
285
317
|
|
|
@@ -297,7 +329,7 @@ const CCalendar = defineComponent({
|
|
|
297
329
|
}
|
|
298
330
|
|
|
299
331
|
if (props.calendarDate) {
|
|
300
|
-
calendarDate.value =
|
|
332
|
+
calendarDate.value = convertToDateObject(props.calendarDate, props.selectionType)
|
|
301
333
|
}
|
|
302
334
|
}
|
|
303
335
|
)
|
|
@@ -380,7 +412,7 @@ const CCalendar = defineComponent({
|
|
|
380
412
|
|
|
381
413
|
calendarDate.value = d
|
|
382
414
|
|
|
383
|
-
emit('calendar-date-change', d)
|
|
415
|
+
emit('calendar-date-change', d, view.value)
|
|
384
416
|
}
|
|
385
417
|
|
|
386
418
|
const handleCalendarClick = (date: Date, index?: number) => {
|
|
@@ -393,6 +425,7 @@ const CCalendar = defineComponent({
|
|
|
393
425
|
if (view.value === 'months' && props.selectionType !== 'month') {
|
|
394
426
|
calendarDate.value = index ? new Date(_date.setMonth(_date.getMonth() - index)) : _date
|
|
395
427
|
view.value = 'days'
|
|
428
|
+
emit('calendar-date-change', calendarDate.value, 'days')
|
|
396
429
|
return
|
|
397
430
|
}
|
|
398
431
|
|
|
@@ -400,7 +433,8 @@ const CCalendar = defineComponent({
|
|
|
400
433
|
calendarDate.value = index
|
|
401
434
|
? new Date(_date.setFullYear(_date.getFullYear() - index))
|
|
402
435
|
: _date
|
|
403
|
-
view.value = 'months'
|
|
436
|
+
view.value = props.selectionType === 'quarter' ? 'quarters' : 'months'
|
|
437
|
+
emit('calendar-date-change', calendarDate.value, view.value)
|
|
404
438
|
return
|
|
405
439
|
}
|
|
406
440
|
|
|
@@ -411,14 +445,14 @@ const CCalendar = defineComponent({
|
|
|
411
445
|
|
|
412
446
|
if (props.range) {
|
|
413
447
|
if (selectEndDate.value) {
|
|
414
|
-
selectEndDate.value = false
|
|
415
|
-
|
|
416
448
|
if (startDate.value && startDate.value > date) {
|
|
417
|
-
startDate.value =
|
|
449
|
+
startDate.value = setTimeFromDate(date, startDate.value)
|
|
418
450
|
endDate.value = null
|
|
419
451
|
return
|
|
420
452
|
}
|
|
421
453
|
|
|
454
|
+
selectEndDate.value = false
|
|
455
|
+
|
|
422
456
|
if (isDisableDateInRange(startDate.value, date, props.disabledDates)) {
|
|
423
457
|
startDate.value = null
|
|
424
458
|
endDate.value = null
|
|
@@ -430,8 +464,9 @@ const CCalendar = defineComponent({
|
|
|
430
464
|
}
|
|
431
465
|
|
|
432
466
|
if (endDate.value && endDate.value < date) {
|
|
433
|
-
startDate.value =
|
|
467
|
+
startDate.value = setTimeFromDate(date, startDate.value)
|
|
434
468
|
endDate.value = null
|
|
469
|
+
selectEndDate.value = true
|
|
435
470
|
return
|
|
436
471
|
}
|
|
437
472
|
|
|
@@ -456,6 +491,7 @@ const CCalendar = defineComponent({
|
|
|
456
491
|
handleCalendarClick(date, index)
|
|
457
492
|
if (
|
|
458
493
|
(_view === 'months' && props.selectionType !== 'month') ||
|
|
494
|
+
(_view === 'quarters' && props.selectionType !== 'quarter') ||
|
|
459
495
|
(_view === 'years' && props.selectionType !== 'year')
|
|
460
496
|
) {
|
|
461
497
|
nextTick(() => {
|
|
@@ -514,12 +550,16 @@ const CCalendar = defineComponent({
|
|
|
514
550
|
? -1
|
|
515
551
|
: view.value === 'days'
|
|
516
552
|
? -7
|
|
553
|
+
: view.value === 'quarters'
|
|
554
|
+
? -2
|
|
517
555
|
: -3,
|
|
518
556
|
ArrowDown:
|
|
519
557
|
props.selectionType === 'week' && view.value === 'days'
|
|
520
558
|
? 1
|
|
521
559
|
: view.value === 'days'
|
|
522
560
|
? 7
|
|
561
|
+
: view.value === 'quarters'
|
|
562
|
+
? 2
|
|
523
563
|
: 3,
|
|
524
564
|
}
|
|
525
565
|
|
|
@@ -533,7 +573,7 @@ const CCalendar = defineComponent({
|
|
|
533
573
|
setCalendarPage(0, event.key === 'ArrowRight' || event.key === 'ArrowDown' ? 1 : -1)
|
|
534
574
|
}
|
|
535
575
|
|
|
536
|
-
if (view.value === 'months') {
|
|
576
|
+
if (view.value === 'months' || view.value === 'quarters') {
|
|
537
577
|
setCalendarPage(event.key === 'ArrowRight' || event.key === 'ArrowDown' ? 1 : -1)
|
|
538
578
|
}
|
|
539
579
|
|
|
@@ -632,13 +672,13 @@ const CCalendar = defineComponent({
|
|
|
632
672
|
}
|
|
633
673
|
}
|
|
634
674
|
|
|
635
|
-
const Calendar = (_calendarDate: Date) => {
|
|
675
|
+
const Calendar = (_calendarDate: Date, index?: number) => {
|
|
636
676
|
const monthDetails = getMonthDetails(
|
|
637
677
|
_calendarDate.getFullYear(),
|
|
638
678
|
_calendarDate.getMonth(),
|
|
639
679
|
props.firstDayOfWeek
|
|
640
680
|
)
|
|
641
|
-
const listOfMonths = createGroupsInArray(getMonthsNames(props.locale), 4)
|
|
681
|
+
const listOfMonths = createGroupsInArray(getMonthsNames(props.locale, props.monthFormat), 4)
|
|
642
682
|
const listOfYears = createGroupsInArray(getYears(_calendarDate.getFullYear()), 4)
|
|
643
683
|
const weekDays = monthDetails[0].days
|
|
644
684
|
|
|
@@ -713,9 +753,9 @@ const CCalendar = defineComponent({
|
|
|
713
753
|
...(isSelected && { 'aria-selected': true }),
|
|
714
754
|
...(!isDisabled && {
|
|
715
755
|
onBlur: () => handleCalendarMouseLeave(),
|
|
716
|
-
onClick: () => handleCalendarClick(date),
|
|
756
|
+
onClick: () => handleCalendarClick(date, index),
|
|
717
757
|
onFocus: () => handleCalendarMouseEnter(date),
|
|
718
|
-
onKeydown: (event: KeyboardEvent) => handleCalendarKeyDown(event, date),
|
|
758
|
+
onKeydown: (event: KeyboardEvent) => handleCalendarKeyDown(event, date, index),
|
|
719
759
|
onMouseenter: () => handleCalendarMouseEnter(date),
|
|
720
760
|
onMouseleave: () => handleCalendarMouseLeave(),
|
|
721
761
|
}),
|
|
@@ -732,6 +772,9 @@ const CCalendar = defineComponent({
|
|
|
732
772
|
props.disabledDates
|
|
733
773
|
)
|
|
734
774
|
const isSelected = isDateSelected(date, startDate.value, endDate.value)
|
|
775
|
+
const isInRange = isDateInRange(date, startDate.value, endDate.value)
|
|
776
|
+
const isCurrentMonth = month === 'current'
|
|
777
|
+
const isTodayDate = isCurrentMonth && isToday(date)
|
|
735
778
|
return month === 'current' || props.showAdjacementDays
|
|
736
779
|
? h(
|
|
737
780
|
'td',
|
|
@@ -747,13 +790,11 @@ const CCalendar = defineComponent({
|
|
|
747
790
|
(hoverDate.value && selectEndDate.value
|
|
748
791
|
? isDateInRange(date, startDate.value, hoverDate.value)
|
|
749
792
|
: isDateInRange(date, hoverDate.value, endDate.value)),
|
|
750
|
-
range:
|
|
751
|
-
month === 'current' &&
|
|
752
|
-
isDateInRange(date, startDate.value, endDate.value),
|
|
793
|
+
range: month === 'current' && isInRange,
|
|
753
794
|
selected: isSelected,
|
|
754
795
|
}),
|
|
755
796
|
[month]: true,
|
|
756
|
-
today:
|
|
797
|
+
today: isTodayDate,
|
|
757
798
|
},
|
|
758
799
|
],
|
|
759
800
|
tabindex:
|
|
@@ -767,10 +808,10 @@ const CCalendar = defineComponent({
|
|
|
767
808
|
...(props.selectionType === 'day' &&
|
|
768
809
|
(month === 'current' || props.selectAdjacementDays) && {
|
|
769
810
|
onBlur: () => handleCalendarMouseLeave(),
|
|
770
|
-
onClick: () => handleCalendarClick(date),
|
|
811
|
+
onClick: () => handleCalendarClick(date, index),
|
|
771
812
|
onFocus: () => handleCalendarMouseEnter(date),
|
|
772
813
|
onKeydown: (event: KeyboardEvent) =>
|
|
773
|
-
handleCalendarKeyDown(event, date),
|
|
814
|
+
handleCalendarKeyDown(event, date, index),
|
|
774
815
|
onMouseenter: () => handleCalendarMouseEnter(date),
|
|
775
816
|
onMouseleave: () => handleCalendarMouseLeave(),
|
|
776
817
|
}),
|
|
@@ -784,11 +825,20 @@ const CCalendar = defineComponent({
|
|
|
784
825
|
{
|
|
785
826
|
class: 'calendar-cell-inner',
|
|
786
827
|
},
|
|
787
|
-
|
|
788
|
-
?
|
|
789
|
-
|
|
790
|
-
|
|
828
|
+
slots.dayCell
|
|
829
|
+
? slots.dayCell({
|
|
830
|
+
date,
|
|
831
|
+
isDisabled,
|
|
832
|
+
isInCurrentMonth: isCurrentMonth,
|
|
833
|
+
isInRange,
|
|
834
|
+
isSelected,
|
|
835
|
+
isToday: isTodayDate,
|
|
791
836
|
})
|
|
837
|
+
: typeof props.dayFormat === 'function'
|
|
838
|
+
? props.dayFormat(date)
|
|
839
|
+
: date.toLocaleDateString(props.locale, {
|
|
840
|
+
day: <'numeric' | '2-digit'>props.dayFormat,
|
|
841
|
+
})
|
|
792
842
|
)
|
|
793
843
|
)
|
|
794
844
|
: h('td')
|
|
@@ -811,6 +861,7 @@ const CCalendar = defineComponent({
|
|
|
811
861
|
props.disabledDates
|
|
812
862
|
)
|
|
813
863
|
const isSelected = isMonthSelected(date, startDate.value, endDate.value)
|
|
864
|
+
const isInRange = isMonthInRange(date, startDate.value, endDate.value)
|
|
814
865
|
return h(
|
|
815
866
|
'td',
|
|
816
867
|
{
|
|
@@ -824,25 +875,93 @@ const CCalendar = defineComponent({
|
|
|
824
875
|
(hoverDate.value && selectEndDate.value
|
|
825
876
|
? isMonthInRange(date, startDate.value, hoverDate.value)
|
|
826
877
|
: isMonthInRange(date, hoverDate.value, endDate.value)),
|
|
827
|
-
range:
|
|
878
|
+
range: isInRange,
|
|
828
879
|
},
|
|
829
880
|
],
|
|
830
881
|
tabindex: isDisabled ? -1 : 0,
|
|
831
882
|
...(isSelected && { 'aria-selected': true }),
|
|
832
883
|
...(!isDisabled && {
|
|
833
884
|
onBlur: () => handleCalendarMouseLeave(),
|
|
834
|
-
onClick: () => handleCalendarClick(date),
|
|
885
|
+
onClick: () => handleCalendarClick(date, index),
|
|
835
886
|
onFocus: () => handleCalendarMouseEnter(date),
|
|
836
|
-
onKeydown: (event: KeyboardEvent) => handleCalendarKeyDown(event, date),
|
|
887
|
+
onKeydown: (event: KeyboardEvent) => handleCalendarKeyDown(event, date, index),
|
|
837
888
|
onMouseenter: () => handleCalendarMouseEnter(date),
|
|
838
889
|
onMouseleave: () => handleCalendarMouseLeave(),
|
|
839
890
|
}),
|
|
840
891
|
},
|
|
841
|
-
h(
|
|
892
|
+
h(
|
|
893
|
+
'div',
|
|
894
|
+
{ class: 'calendar-cell-inner' },
|
|
895
|
+
slots.monthCell
|
|
896
|
+
? slots.monthCell({
|
|
897
|
+
date,
|
|
898
|
+
isDisabled,
|
|
899
|
+
isInRange,
|
|
900
|
+
isSelected,
|
|
901
|
+
})
|
|
902
|
+
: month
|
|
903
|
+
)
|
|
842
904
|
)
|
|
843
905
|
})
|
|
844
906
|
)
|
|
845
907
|
}),
|
|
908
|
+
view.value === 'quarters' &&
|
|
909
|
+
h(
|
|
910
|
+
'tr',
|
|
911
|
+
{},
|
|
912
|
+
Array.from({ length: 4 }, (_, index) => {
|
|
913
|
+
const date = new Date(_calendarDate.getFullYear(), index * 3, 1)
|
|
914
|
+
const isDisabled = isQuarterDisabled(
|
|
915
|
+
date,
|
|
916
|
+
minDate.value,
|
|
917
|
+
maxDate.value,
|
|
918
|
+
props.disabledDates
|
|
919
|
+
)
|
|
920
|
+
const isSelected = isQuarterSelected(date, startDate.value, endDate.value)
|
|
921
|
+
const isInRange = isQuarterInRange(date, startDate.value, endDate.value)
|
|
922
|
+
return h(
|
|
923
|
+
'td',
|
|
924
|
+
{
|
|
925
|
+
class: [
|
|
926
|
+
'calendar-cell',
|
|
927
|
+
'quarters',
|
|
928
|
+
{
|
|
929
|
+
disabled: isDisabled,
|
|
930
|
+
selected: isSelected,
|
|
931
|
+
'range-hover':
|
|
932
|
+
props.selectionType === 'quarter' &&
|
|
933
|
+
(hoverDate.value && selectEndDate.value
|
|
934
|
+
? isQuarterInRange(date, startDate.value, hoverDate.value)
|
|
935
|
+
: isQuarterInRange(date, hoverDate.value, endDate.value)),
|
|
936
|
+
range: isInRange,
|
|
937
|
+
},
|
|
938
|
+
],
|
|
939
|
+
tabindex: isDisabled ? -1 : 0,
|
|
940
|
+
...(isSelected && { 'aria-selected': true }),
|
|
941
|
+
...(!isDisabled && {
|
|
942
|
+
onBlur: () => handleCalendarMouseLeave(),
|
|
943
|
+
onClick: () => handleCalendarClick(date, index),
|
|
944
|
+
onFocus: () => handleCalendarMouseEnter(date),
|
|
945
|
+
onKeydown: (event: KeyboardEvent) => handleCalendarKeyDown(event, date, index),
|
|
946
|
+
onMouseenter: () => handleCalendarMouseEnter(date),
|
|
947
|
+
onMouseleave: () => handleCalendarMouseLeave(),
|
|
948
|
+
}),
|
|
949
|
+
},
|
|
950
|
+
h(
|
|
951
|
+
'div',
|
|
952
|
+
{ class: 'calendar-cell-inner' },
|
|
953
|
+
slots.quarterCell
|
|
954
|
+
? slots.quarterCell({
|
|
955
|
+
date,
|
|
956
|
+
isDisabled,
|
|
957
|
+
isInRange,
|
|
958
|
+
isSelected,
|
|
959
|
+
})
|
|
960
|
+
: `Q${index + 1}`
|
|
961
|
+
)
|
|
962
|
+
)
|
|
963
|
+
})
|
|
964
|
+
),
|
|
846
965
|
view.value === 'years' &&
|
|
847
966
|
listOfYears.map((row) => {
|
|
848
967
|
return h(
|
|
@@ -857,6 +976,7 @@ const CCalendar = defineComponent({
|
|
|
857
976
|
props.disabledDates
|
|
858
977
|
)
|
|
859
978
|
const isSelected = isYearSelected(date, startDate.value, endDate.value)
|
|
979
|
+
const isInRange = isYearInRange(date, startDate.value, endDate.value)
|
|
860
980
|
return h(
|
|
861
981
|
'td',
|
|
862
982
|
{
|
|
@@ -870,21 +990,34 @@ const CCalendar = defineComponent({
|
|
|
870
990
|
(hoverDate.value && selectEndDate.value
|
|
871
991
|
? isYearInRange(date, startDate.value, hoverDate.value)
|
|
872
992
|
: isYearInRange(date, hoverDate.value, endDate.value)),
|
|
873
|
-
range:
|
|
993
|
+
range: isInRange,
|
|
874
994
|
},
|
|
875
995
|
],
|
|
876
996
|
tabindex: isDisabled ? -1 : 0,
|
|
877
997
|
...(isSelected && { 'aria-selected': true }),
|
|
878
998
|
...(!isDisabled && {
|
|
879
999
|
onBlur: () => handleCalendarMouseLeave(),
|
|
880
|
-
onClick: () => handleCalendarClick(date),
|
|
1000
|
+
onClick: () => handleCalendarClick(date, index),
|
|
881
1001
|
onFocus: () => handleCalendarMouseEnter(date),
|
|
882
|
-
onKeydown: (event: KeyboardEvent) => handleCalendarKeyDown(event, date),
|
|
1002
|
+
onKeydown: (event: KeyboardEvent) => handleCalendarKeyDown(event, date, index),
|
|
883
1003
|
onMouseenter: () => handleCalendarMouseEnter(date),
|
|
884
1004
|
onMouseleave: () => handleCalendarMouseLeave(),
|
|
885
1005
|
}),
|
|
886
1006
|
},
|
|
887
|
-
h(
|
|
1007
|
+
h(
|
|
1008
|
+
'div',
|
|
1009
|
+
{ class: 'calendar-cell-inner' },
|
|
1010
|
+
slots.yearCell
|
|
1011
|
+
? slots.yearCell({
|
|
1012
|
+
date,
|
|
1013
|
+
isDisabled,
|
|
1014
|
+
isInRange,
|
|
1015
|
+
isSelected,
|
|
1016
|
+
})
|
|
1017
|
+
: date.toLocaleDateString(props.locale, {
|
|
1018
|
+
year: props.yearFormat,
|
|
1019
|
+
})
|
|
1020
|
+
)
|
|
888
1021
|
)
|
|
889
1022
|
})
|
|
890
1023
|
)
|
|
@@ -953,8 +1086,8 @@ const CCalendar = defineComponent({
|
|
|
953
1086
|
if (props.navigation) view.value = 'months'
|
|
954
1087
|
},
|
|
955
1088
|
},
|
|
956
|
-
|
|
957
|
-
|
|
1089
|
+
_calendarDate.toLocaleDateString(props.locale, { month: 'long' })
|
|
1090
|
+
),
|
|
958
1091
|
h(
|
|
959
1092
|
'button',
|
|
960
1093
|
{
|
|
@@ -965,7 +1098,7 @@ const CCalendar = defineComponent({
|
|
|
965
1098
|
},
|
|
966
1099
|
...(props.navYearFirst && { style: { order: '-1' } }),
|
|
967
1100
|
},
|
|
968
|
-
_calendarDate.toLocaleDateString(props.locale, { year:
|
|
1101
|
+
_calendarDate.toLocaleDateString(props.locale, { year: props.yearFormat })
|
|
969
1102
|
),
|
|
970
1103
|
]
|
|
971
1104
|
),
|
|
@@ -1030,7 +1163,7 @@ const CCalendar = defineComponent({
|
|
|
1030
1163
|
const _calendarDate = getCalendarDate(calendarDate.value as Date, index, view.value)
|
|
1031
1164
|
return h('div', { class: ['calendar', view.value] }, [
|
|
1032
1165
|
Navigation(_calendarDate),
|
|
1033
|
-
Calendar(_calendarDate),
|
|
1166
|
+
Calendar(_calendarDate, index),
|
|
1034
1167
|
])
|
|
1035
1168
|
}),
|
|
1036
1169
|
]
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export type DisabledDate = ((date: Date) => boolean) | Date | Date[]
|
|
2
2
|
|
|
3
|
-
export type SelectionTypes = 'day' | 'week' | 'month' | 'year'
|
|
3
|
+
export type SelectionTypes = 'day' | 'week' | 'month' | 'quarter' | 'year'
|
|
4
4
|
|
|
5
|
-
export type ViewTypes = 'days' | 'months' | 'years'
|
|
5
|
+
export type ViewTypes = 'days' | 'months' | 'quarters' | 'years'
|
|
@@ -60,8 +60,17 @@ const getMondayOfISOWeek = (year: number, week: number): Date => {
|
|
|
60
60
|
* @returns A number representing year*12 + month for easy comparison.
|
|
61
61
|
*/
|
|
62
62
|
const dateToMonthNumber = (date: Date): number => {
|
|
63
|
-
|
|
64
|
-
|
|
63
|
+
return date.getFullYear() * 12 + date.getMonth()
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Helper function to convert a date to a quarter number for comparison.
|
|
68
|
+
* @param date - The date to convert.
|
|
69
|
+
* @returns A number representing year*4 + quarter for easy comparison.
|
|
70
|
+
*/
|
|
71
|
+
const dateToQuarterNumber = (date: Date): number => {
|
|
72
|
+
const quarter = Math.floor(date.getMonth() / 3)
|
|
73
|
+
return date.getFullYear() * 4 + quarter
|
|
65
74
|
}
|
|
66
75
|
|
|
67
76
|
/**
|
|
@@ -122,6 +131,34 @@ const parseWeekString = (dateString: string): Date | null => {
|
|
|
122
131
|
return convertIsoWeekToDate(dateString)
|
|
123
132
|
}
|
|
124
133
|
|
|
134
|
+
/**
|
|
135
|
+
* Parses a quarter string and returns a Date object for the first day of that quarter.
|
|
136
|
+
* @param dateString - The quarter string to parse.
|
|
137
|
+
* @returns The Date object for the first day of the quarter, or null if invalid.
|
|
138
|
+
*/
|
|
139
|
+
const parseQuarterString = (dateString: string): Date | null => {
|
|
140
|
+
const quarterPatterns = [
|
|
141
|
+
/^(\d{4})-Q(\d{1})$/,
|
|
142
|
+
/^(\d{4})Q(\d{1})$/,
|
|
143
|
+
/^(\d{4})\s+Q(\d{1})$/,
|
|
144
|
+
]
|
|
145
|
+
|
|
146
|
+
for (const pattern of quarterPatterns) {
|
|
147
|
+
const match = dateString.trim().match(pattern)
|
|
148
|
+
if (match) {
|
|
149
|
+
const parsedYear = parseYearSmart(match[1])
|
|
150
|
+
const parsedQuarter = Number.parseInt(match[2], 10)
|
|
151
|
+
|
|
152
|
+
if (parsedQuarter >= 1 && parsedQuarter <= 4) {
|
|
153
|
+
const monthIndex = (parsedQuarter - 1) * 3
|
|
154
|
+
return new Date(parsedYear, monthIndex, 1)
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
return null
|
|
160
|
+
}
|
|
161
|
+
|
|
125
162
|
/**
|
|
126
163
|
* Parses a month string and returns a Date object for the first day of that month.
|
|
127
164
|
* @param dateString - The month string to parse.
|
|
@@ -480,7 +517,7 @@ const parseLocalDateString = (dateString: string): Date | null => {
|
|
|
480
517
|
/**
|
|
481
518
|
* Converts a date string or Date object to a Date object based on selection type.
|
|
482
519
|
* @param date - The date to convert.
|
|
483
|
-
* @param selectionType - The type of selection ('day', 'week', 'month', 'year').
|
|
520
|
+
* @param selectionType - The type of selection ('day', 'week', 'month', 'quarter', 'year').
|
|
484
521
|
* @param locale - The locale to use for date parsing (for day parsing).
|
|
485
522
|
* @param includeTime - Whether to include time parsing (for day parsing).
|
|
486
523
|
* @returns The corresponding Date object or null if invalid.
|
|
@@ -508,6 +545,9 @@ export const convertToDateObject = (
|
|
|
508
545
|
case 'month': {
|
|
509
546
|
return parseMonthString(dateString)
|
|
510
547
|
}
|
|
548
|
+
case 'quarter': {
|
|
549
|
+
return parseQuarterString(dateString)
|
|
550
|
+
}
|
|
511
551
|
case 'year': {
|
|
512
552
|
return parseYearString(dateString)
|
|
513
553
|
}
|
|
@@ -523,7 +563,7 @@ export const convertToDateObject = (
|
|
|
523
563
|
* @param dateString - The date string to parse.
|
|
524
564
|
* @param locale - The locale to use for date format patterns.
|
|
525
565
|
* @param includeTime - Whether to include time parsing.
|
|
526
|
-
* @param selectionType - The selection type ('day', 'week', 'month', 'year').
|
|
566
|
+
* @param selectionType - The selection type ('day', 'week', 'month', 'quarter', 'year').
|
|
527
567
|
* @returns A Date object if parsing succeeds, null if parsing fails.
|
|
528
568
|
*/
|
|
529
569
|
export const getLocalDateFromString = (
|
|
@@ -565,7 +605,7 @@ export const getCalendarDate = (calendarDate: Date, order: number, view: ViewTyp
|
|
|
565
605
|
return new Date(calendarDate.getFullYear(), calendarDate.getMonth() + order, 1)
|
|
566
606
|
}
|
|
567
607
|
|
|
568
|
-
if (order !== 0 && view === 'months') {
|
|
608
|
+
if (order !== 0 && (view === 'months' || view === 'quarters')) {
|
|
569
609
|
return new Date(calendarDate.getFullYear() + order, calendarDate.getMonth(), 1)
|
|
570
610
|
}
|
|
571
611
|
|
|
@@ -580,7 +620,7 @@ export const getCalendarDate = (calendarDate: Date, order: number, view: ViewTyp
|
|
|
580
620
|
/**
|
|
581
621
|
* Formats a date based on the selection type.
|
|
582
622
|
* @param date - The date to format.
|
|
583
|
-
* @param selectionType - The type of selection ('day', 'week', 'month', 'year').
|
|
623
|
+
* @param selectionType - The type of selection ('day', 'week', 'month', 'quarter', 'year').
|
|
584
624
|
* @returns A formatted date string or the original Date object.
|
|
585
625
|
*/
|
|
586
626
|
export const getDateBySelectionType = (
|
|
@@ -601,6 +641,11 @@ export const getDateBySelectionType = (
|
|
|
601
641
|
return `${date.getFullYear()}-${monthNumber}`
|
|
602
642
|
}
|
|
603
643
|
|
|
644
|
+
if (selectionType === 'quarter') {
|
|
645
|
+
const quarter = Math.floor(date.getMonth() / 3) + 1
|
|
646
|
+
return `${date.getFullYear()}Q${quarter}`
|
|
647
|
+
}
|
|
648
|
+
|
|
604
649
|
if (selectionType === 'year') {
|
|
605
650
|
return `${date.getFullYear()}`
|
|
606
651
|
}
|
|
@@ -650,7 +695,10 @@ export const getFirstAvailableDateInRange = (
|
|
|
650
695
|
* @param format - The format of the month names ('short' or 'long').
|
|
651
696
|
* @returns An array of month names.
|
|
652
697
|
*/
|
|
653
|
-
export const getMonthsNames = (
|
|
698
|
+
export const getMonthsNames = (
|
|
699
|
+
locale: string,
|
|
700
|
+
format: 'long' | 'narrow' | 'short' | 'numeric' | '2-digit' = 'short'
|
|
701
|
+
): string[] => {
|
|
654
702
|
return Array.from({ length: 12 }, (_, i) => {
|
|
655
703
|
return new Date(2000, i, 1).toLocaleString(locale, { month: format })
|
|
656
704
|
})
|
|
@@ -1031,6 +1079,101 @@ export const isMonthInRange = (date: Date, start: Date | null, end: Date | null)
|
|
|
1031
1079
|
return Boolean(_start && _end && _start <= _date && _date <= _end)
|
|
1032
1080
|
}
|
|
1033
1081
|
|
|
1082
|
+
/**
|
|
1083
|
+
* Checks if a quarter is disabled based on the 'quarter' period type.
|
|
1084
|
+
* @param date - The date representing the quarter to check.
|
|
1085
|
+
* @param min - Minimum allowed date.
|
|
1086
|
+
* @param max - Maximum allowed date.
|
|
1087
|
+
* @param disabledDates - Criteria for disabled dates.
|
|
1088
|
+
* @returns True if the quarter is disabled, false otherwise.
|
|
1089
|
+
*/
|
|
1090
|
+
export const isQuarterDisabled = (
|
|
1091
|
+
date: Date,
|
|
1092
|
+
min?: Date | null,
|
|
1093
|
+
max?: Date | null,
|
|
1094
|
+
disabledDates?: DisabledDate | DisabledDate[]
|
|
1095
|
+
) => {
|
|
1096
|
+
const current = dateToQuarterNumber(date)
|
|
1097
|
+
const _min = min ? dateToQuarterNumber(min) : null
|
|
1098
|
+
const _max = max ? dateToQuarterNumber(max) : null
|
|
1099
|
+
|
|
1100
|
+
if (isOutsideRange(current, _min, _max)) {
|
|
1101
|
+
return true
|
|
1102
|
+
}
|
|
1103
|
+
|
|
1104
|
+
if (disabledDates === undefined) {
|
|
1105
|
+
return false
|
|
1106
|
+
}
|
|
1107
|
+
|
|
1108
|
+
const quarter = Math.floor(date.getMonth() / 3)
|
|
1109
|
+
const quarterStartMonth = quarter * 3
|
|
1110
|
+
const quarterEndMonth = quarterStartMonth + 2
|
|
1111
|
+
const year = date.getFullYear()
|
|
1112
|
+
|
|
1113
|
+
const quarterStart = new Date(year, quarterStartMonth, 1)
|
|
1114
|
+
const quarterEnd = new Date(year, quarterEndMonth + 1, 0)
|
|
1115
|
+
|
|
1116
|
+
const startTime = min ? Math.max(quarterStart.getTime(), min.getTime()) : quarterStart.getTime()
|
|
1117
|
+
const endTime = max ? Math.min(quarterEnd.getTime(), max.getTime()) : quarterEnd.getTime()
|
|
1118
|
+
|
|
1119
|
+
for (
|
|
1120
|
+
const currentDate = new Date(startTime);
|
|
1121
|
+
currentDate.getTime() <= endTime;
|
|
1122
|
+
currentDate.setDate(currentDate.getDate() + 1)
|
|
1123
|
+
) {
|
|
1124
|
+
if (!isDateDisabled(currentDate, min, max, disabledDates)) {
|
|
1125
|
+
return false
|
|
1126
|
+
}
|
|
1127
|
+
}
|
|
1128
|
+
|
|
1129
|
+
return false
|
|
1130
|
+
}
|
|
1131
|
+
|
|
1132
|
+
/**
|
|
1133
|
+
* Checks if a quarter is selected based on start and end dates.
|
|
1134
|
+
* @param date - The date representing the quarter.
|
|
1135
|
+
* @param start - Start date.
|
|
1136
|
+
* @param end - End date.
|
|
1137
|
+
* @returns True if the quarter is selected, false otherwise.
|
|
1138
|
+
*/
|
|
1139
|
+
export const isQuarterSelected = (date: Date, start: Date | null, end: Date | null): boolean => {
|
|
1140
|
+
const year = date.getFullYear()
|
|
1141
|
+
const quarter = Math.floor(date.getMonth() / 3)
|
|
1142
|
+
|
|
1143
|
+
if (start !== null) {
|
|
1144
|
+
const startYear = start.getFullYear()
|
|
1145
|
+
const startQuarter = Math.floor(start.getMonth() / 3)
|
|
1146
|
+
if (year === startYear && quarter === startQuarter) {
|
|
1147
|
+
return true
|
|
1148
|
+
}
|
|
1149
|
+
}
|
|
1150
|
+
|
|
1151
|
+
if (end !== null) {
|
|
1152
|
+
const endYear = end.getFullYear()
|
|
1153
|
+
const endQuarter = Math.floor(end.getMonth() / 3)
|
|
1154
|
+
if (year === endYear && quarter === endQuarter) {
|
|
1155
|
+
return true
|
|
1156
|
+
}
|
|
1157
|
+
}
|
|
1158
|
+
|
|
1159
|
+
return false
|
|
1160
|
+
}
|
|
1161
|
+
|
|
1162
|
+
/**
|
|
1163
|
+
* Checks if a quarter is within a specified range.
|
|
1164
|
+
* @param date - The date representing the quarter.
|
|
1165
|
+
* @param start - Start date.
|
|
1166
|
+
* @param end - End date.
|
|
1167
|
+
* @returns True if the quarter is within the range, false otherwise.
|
|
1168
|
+
*/
|
|
1169
|
+
export const isQuarterInRange = (date: Date, start: Date | null, end: Date | null): boolean => {
|
|
1170
|
+
const _start = start ? dateToQuarterNumber(start) : null
|
|
1171
|
+
const _end = end ? dateToQuarterNumber(end) : null
|
|
1172
|
+
const _date = dateToQuarterNumber(date)
|
|
1173
|
+
|
|
1174
|
+
return Boolean(_start && _end && _start <= _date && _date <= _end)
|
|
1175
|
+
}
|
|
1176
|
+
|
|
1034
1177
|
/**
|
|
1035
1178
|
* Checks if two dates are the same calendar date.
|
|
1036
1179
|
* @param date - First date.
|