@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
|
@@ -14,6 +14,14 @@ const CMultiSelectOptions = defineComponent({
|
|
|
14
14
|
type: Array as PropType<(Option | OptionsGroup)[]>,
|
|
15
15
|
default: () => [],
|
|
16
16
|
},
|
|
17
|
+
optionsGroupsSelectable: Boolean,
|
|
18
|
+
optionsGroupsStyle: {
|
|
19
|
+
type: String,
|
|
20
|
+
default: 'checkbox',
|
|
21
|
+
validator: (value: string) => {
|
|
22
|
+
return ['checkbox', 'text'].includes(value)
|
|
23
|
+
},
|
|
24
|
+
},
|
|
17
25
|
optionsMaxHeight: {
|
|
18
26
|
type: [Number, String],
|
|
19
27
|
default: 'auto',
|
|
@@ -40,7 +48,7 @@ const CMultiSelectOptions = defineComponent({
|
|
|
40
48
|
default: 10,
|
|
41
49
|
},
|
|
42
50
|
},
|
|
43
|
-
emits: ['optionClick'],
|
|
51
|
+
emits: ['groupClick', 'optionClick'],
|
|
44
52
|
setup(props, { emit }) {
|
|
45
53
|
const handleKeyDown = (event: KeyboardEvent, option: Option) => {
|
|
46
54
|
if (event.code === 'Space' || event.key === 'Enter') {
|
|
@@ -66,10 +74,49 @@ const CMultiSelectOptions = defineComponent({
|
|
|
66
74
|
}
|
|
67
75
|
}
|
|
68
76
|
|
|
77
|
+
const handleGroupKeyDown = (event: KeyboardEvent, group: OptionsGroup) => {
|
|
78
|
+
if (event.code === 'Space' || event.key === 'Enter') {
|
|
79
|
+
event.preventDefault()
|
|
80
|
+
emit('groupClick', group)
|
|
81
|
+
return
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
if (event.key === 'Down' || event.key === 'ArrowDown') {
|
|
85
|
+
event.preventDefault()
|
|
86
|
+
const next = getNextSibling(event.target as HTMLElement, '.form-multi-select-option')
|
|
87
|
+
|
|
88
|
+
next && (next as HTMLElement).focus()
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
if (event.key === 'Up' || event.key === 'ArrowUp') {
|
|
92
|
+
event.preventDefault()
|
|
93
|
+
const prev = getPreviousSibling(event.target as HTMLElement, '.form-multi-select-option')
|
|
94
|
+
|
|
95
|
+
prev && (prev as HTMLElement).focus()
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
const getGroupCheckboxState = (group: OptionsGroup) => {
|
|
100
|
+
const groupOptions = (group.options ?? []).filter((option) => !option.disabled)
|
|
101
|
+
const selectedCount = groupOptions.filter((option) =>
|
|
102
|
+
props.selected.some((_option) => _option.value === option.value),
|
|
103
|
+
).length
|
|
104
|
+
|
|
105
|
+
if (groupOptions.length > 0 && selectedCount >= groupOptions.length) {
|
|
106
|
+
return 'all'
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
return selectedCount === 0 ? 'none' : 'indeterminate'
|
|
110
|
+
}
|
|
111
|
+
|
|
69
112
|
const handleOptionClick = (option: Option) => {
|
|
70
113
|
emit('optionClick', option as Option)
|
|
71
114
|
}
|
|
72
115
|
|
|
116
|
+
const handleGroupClick = (group: OptionsGroup) => {
|
|
117
|
+
emit('groupClick', group as OptionsGroup)
|
|
118
|
+
}
|
|
119
|
+
|
|
73
120
|
// TODO: find solution how to remove any
|
|
74
121
|
const createOptions = (options: (Option | OptionsGroup)[]): VNode | VNode[] | any =>
|
|
75
122
|
options.length > 0
|
|
@@ -103,14 +150,41 @@ const CMultiSelectOptions = defineComponent({
|
|
|
103
150
|
: [
|
|
104
151
|
h(
|
|
105
152
|
'div',
|
|
106
|
-
{
|
|
153
|
+
{
|
|
154
|
+
class: [
|
|
155
|
+
'form-multi-select-optgroup-label',
|
|
156
|
+
{
|
|
157
|
+
'form-multi-select-optgroup-label-with-checkbox':
|
|
158
|
+
props.optionsGroupsSelectable && props.optionsGroupsStyle === 'checkbox',
|
|
159
|
+
'form-multi-selected':
|
|
160
|
+
props.optionsGroupsSelectable &&
|
|
161
|
+
props.optionsGroupsStyle === 'checkbox' &&
|
|
162
|
+
getGroupCheckboxState(option) === 'all',
|
|
163
|
+
'form-multi-select-indeterminate':
|
|
164
|
+
props.optionsGroupsSelectable &&
|
|
165
|
+
props.optionsGroupsStyle === 'checkbox' &&
|
|
166
|
+
getGroupCheckboxState(option) === 'indeterminate',
|
|
167
|
+
},
|
|
168
|
+
],
|
|
169
|
+
...(props.optionsGroupsSelectable &&
|
|
170
|
+
props.optionsGroupsStyle === 'checkbox' && {
|
|
171
|
+
onClick: () => handleGroupClick(option as OptionsGroup),
|
|
172
|
+
onKeydown: (event: any) => handleGroupKeyDown(event, option as OptionsGroup),
|
|
173
|
+
tabindex: 0,
|
|
174
|
+
role: 'button',
|
|
175
|
+
}),
|
|
176
|
+
},
|
|
107
177
|
props.scopedSlots && props.scopedSlots['options-groups']
|
|
108
178
|
? h(props.scopedSlots['options-groups'], { option: option })
|
|
109
179
|
: option.label,
|
|
110
180
|
),
|
|
111
181
|
],
|
|
112
182
|
)
|
|
113
|
-
: h(
|
|
183
|
+
: h(
|
|
184
|
+
'div',
|
|
185
|
+
{ class: 'form-multi-select-options-empty', role: 'status' },
|
|
186
|
+
props.searchNoResultsLabel,
|
|
187
|
+
)
|
|
114
188
|
|
|
115
189
|
return () => [
|
|
116
190
|
props.virtualScroller
|
|
@@ -5,6 +5,10 @@ import type { Option, Search } from './types'
|
|
|
5
5
|
const CMultiSelectSelection = defineComponent({
|
|
6
6
|
name: 'CMultiSelectSelection',
|
|
7
7
|
props: {
|
|
8
|
+
ariaTagDeleteLabel: {
|
|
9
|
+
type: String,
|
|
10
|
+
default: 'Remove',
|
|
11
|
+
},
|
|
8
12
|
disabled: Boolean,
|
|
9
13
|
multiple: {
|
|
10
14
|
type: Boolean,
|
|
@@ -70,6 +74,7 @@ const CMultiSelectSelection = defineComponent({
|
|
|
70
74
|
'form-multi-select-selection-tags': props.multiple && props.selectionType === 'tags',
|
|
71
75
|
},
|
|
72
76
|
],
|
|
77
|
+
'aria-live': 'polite',
|
|
73
78
|
},
|
|
74
79
|
[
|
|
75
80
|
props.multiple &&
|
|
@@ -93,7 +98,7 @@ const CMultiSelectSelection = defineComponent({
|
|
|
93
98
|
h('button', {
|
|
94
99
|
class: 'form-multi-select-tag-delete',
|
|
95
100
|
type: 'button',
|
|
96
|
-
ariaLabel:
|
|
101
|
+
ariaLabel: `${props.ariaTagDeleteLabel} ${option.label}`.trim(),
|
|
97
102
|
onClick: () => handleRemove(option),
|
|
98
103
|
}),
|
|
99
104
|
])
|
|
@@ -28,7 +28,7 @@ export const filterOptionsList = (search: string, _options: (Option | OptionsGro
|
|
|
28
28
|
option.options &&
|
|
29
29
|
option.options.filter(
|
|
30
30
|
(option: Option) =>
|
|
31
|
-
option.label && option.label.toLowerCase().includes(search.toLowerCase())
|
|
31
|
+
option.label && option.label.toLowerCase().includes(search.toLowerCase())
|
|
32
32
|
)
|
|
33
33
|
if (
|
|
34
34
|
(option.label && option.label.toLowerCase().includes(search.toLowerCase())) ||
|
|
@@ -46,7 +46,7 @@ export const filterOptionsList = (search: string, _options: (Option | OptionsGro
|
|
|
46
46
|
|
|
47
47
|
export const flattenOptionsArray = (
|
|
48
48
|
options: (Option | OptionsGroup)[],
|
|
49
|
-
keepGroupLabel?: boolean
|
|
49
|
+
keepGroupLabel?: boolean
|
|
50
50
|
): (Option | OptionsGroup)[] => {
|
|
51
51
|
const optionsList: (Option | OptionsGroup)[] = []
|
|
52
52
|
|
|
@@ -68,7 +68,7 @@ export const flattenOptionsArray = (
|
|
|
68
68
|
|
|
69
69
|
export const getOptionsList = (container: HTMLElement): HTMLElement[] => {
|
|
70
70
|
return Array.from(
|
|
71
|
-
container.querySelectorAll('.form-multi-select-option:not(.disabled):not(:disabled)')
|
|
71
|
+
container.querySelectorAll('.form-multi-select-option:not(.disabled):not(:disabled)')
|
|
72
72
|
)
|
|
73
73
|
}
|
|
74
74
|
|
|
@@ -90,10 +90,10 @@ export const selectOptions = (
|
|
|
90
90
|
multiple: boolean,
|
|
91
91
|
options: (Option | OptionsGroup)[],
|
|
92
92
|
selected: SelectedOption[],
|
|
93
|
-
deselected?: Option[]
|
|
93
|
+
deselected?: Option[]
|
|
94
94
|
) => {
|
|
95
95
|
if (!multiple) {
|
|
96
|
-
return [options[0]] as SelectedOption[]
|
|
96
|
+
return options.length > 0 ? ([options[0]] as SelectedOption[]) : []
|
|
97
97
|
}
|
|
98
98
|
|
|
99
99
|
let _selected = [...selected, ...options]
|
|
@@ -101,7 +101,7 @@ export const selectOptions = (
|
|
|
101
101
|
if (deselected) {
|
|
102
102
|
_selected = _selected.filter(
|
|
103
103
|
(selectedOption) =>
|
|
104
|
-
!deselected.some((deselectedOption) => deselectedOption.value === selectedOption.value)
|
|
104
|
+
!deselected.some((deselectedOption) => deselectedOption.value === selectedOption.value)
|
|
105
105
|
)
|
|
106
106
|
}
|
|
107
107
|
|
|
@@ -29,7 +29,14 @@ const CNav = defineComponent({
|
|
|
29
29
|
variant: {
|
|
30
30
|
type: String,
|
|
31
31
|
validator: (value: string) => {
|
|
32
|
-
return [
|
|
32
|
+
return [
|
|
33
|
+
'enclosed',
|
|
34
|
+
'enclosed-pills',
|
|
35
|
+
'pills',
|
|
36
|
+
'tabs',
|
|
37
|
+
'underline',
|
|
38
|
+
'underline-border',
|
|
39
|
+
].includes(value)
|
|
33
40
|
},
|
|
34
41
|
},
|
|
35
42
|
},
|
|
@@ -48,7 +55,7 @@ const CNav = defineComponent({
|
|
|
48
55
|
],
|
|
49
56
|
role: 'navigation',
|
|
50
57
|
},
|
|
51
|
-
slots.default && slots.default()
|
|
58
|
+
slots.default && slots.default()
|
|
52
59
|
)
|
|
53
60
|
},
|
|
54
61
|
})
|
|
@@ -1,4 +1,15 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
computed,
|
|
3
|
+
defineComponent,
|
|
4
|
+
getCurrentInstance,
|
|
5
|
+
h,
|
|
6
|
+
inject,
|
|
7
|
+
provide,
|
|
8
|
+
Ref,
|
|
9
|
+
ref,
|
|
10
|
+
useId,
|
|
11
|
+
watch,
|
|
12
|
+
} from 'vue'
|
|
2
13
|
|
|
3
14
|
import { executeAfterTransition } from '../../utils/transition'
|
|
4
15
|
|
|
@@ -17,149 +28,186 @@ const CNavGroup = defineComponent({
|
|
|
17
28
|
*/
|
|
18
29
|
compact: Boolean,
|
|
19
30
|
/**
|
|
20
|
-
* Show nav group items.
|
|
31
|
+
* Show nav group items. Acts as the initial state on its own, or as the controlled value
|
|
32
|
+
* when paired with a `v-model:visible` / `@update:visible` listener.
|
|
21
33
|
*/
|
|
22
|
-
visible:
|
|
34
|
+
visible: {
|
|
35
|
+
type: Boolean,
|
|
36
|
+
default: undefined,
|
|
37
|
+
},
|
|
23
38
|
},
|
|
24
|
-
emits: ['visible-change'],
|
|
39
|
+
emits: ['update:visible', 'visible-change'],
|
|
25
40
|
setup(props, { slots, emit }) {
|
|
26
|
-
const
|
|
27
|
-
const
|
|
28
|
-
const
|
|
41
|
+
const key = useId()
|
|
42
|
+
const instance = getCurrentInstance()
|
|
43
|
+
const hasUpdateListener = Boolean(instance?.vnode.props?.['onUpdate:visible'])
|
|
29
44
|
|
|
30
|
-
const
|
|
31
|
-
if (visible) {
|
|
32
|
-
visibleGroup.value = index
|
|
33
|
-
} else {
|
|
34
|
-
if (visibleGroup.value === index) {
|
|
35
|
-
visibleGroup.value = 0
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
}
|
|
45
|
+
const navGroupItemsRef = ref<HTMLElement>()
|
|
39
46
|
|
|
40
|
-
const
|
|
47
|
+
const parentActiveKey = inject<Ref<string | undefined> | undefined>(
|
|
48
|
+
'cNavGroupActiveKey',
|
|
49
|
+
undefined
|
|
50
|
+
)
|
|
51
|
+
const parentSetActiveKey = inject<((key?: string) => void) | undefined>(
|
|
52
|
+
'cNavGroupSetActiveKey',
|
|
53
|
+
undefined
|
|
54
|
+
)
|
|
55
|
+
const parentOpenBranch = inject<(() => void) | undefined>('cNavGroupOpenBranch', undefined)
|
|
56
|
+
|
|
57
|
+
const controlled = computed(() => props.visible !== undefined && hasUpdateListener)
|
|
58
|
+
|
|
59
|
+
const internal = ref(Boolean(props.visible))
|
|
60
|
+
|
|
61
|
+
const visible = computed(() => {
|
|
62
|
+
if (controlled.value) {
|
|
63
|
+
return props.visible as boolean
|
|
64
|
+
}
|
|
41
65
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
if (props.visible) {
|
|
45
|
-
navGroupRef.value.classList.add('show')
|
|
66
|
+
if (parentActiveKey) {
|
|
67
|
+
return parentActiveKey.value === key
|
|
46
68
|
}
|
|
47
69
|
|
|
48
|
-
|
|
70
|
+
return internal.value
|
|
49
71
|
})
|
|
50
72
|
|
|
73
|
+
const activeGroupKey = ref<string>()
|
|
74
|
+
provide('cNavGroupActiveKey', activeGroupKey)
|
|
75
|
+
provide('cNavGroupSetActiveKey', (value?: string) => {
|
|
76
|
+
activeGroupKey.value = value
|
|
77
|
+
})
|
|
78
|
+
|
|
79
|
+
const openBranch = () => {
|
|
80
|
+
parentSetActiveKey?.(key)
|
|
81
|
+
parentOpenBranch?.()
|
|
82
|
+
}
|
|
83
|
+
provide('cNavGroupOpenBranch', openBranch)
|
|
84
|
+
|
|
85
|
+
// Seed the accordion / local state from the `visible` prop: opens default-open groups and
|
|
86
|
+
// follows later changes (and keeps controlled groups in sync). Watching `props.visible`
|
|
87
|
+
// keeps this from re-running on accordion changes, so a default-open group can be collapsed
|
|
88
|
+
// manually.
|
|
51
89
|
watch(
|
|
52
90
|
() => props.visible,
|
|
53
|
-
() => {
|
|
54
|
-
|
|
91
|
+
(value) => {
|
|
92
|
+
if (value === undefined) {
|
|
93
|
+
return
|
|
94
|
+
}
|
|
55
95
|
|
|
56
|
-
if (
|
|
57
|
-
|
|
96
|
+
if (parentSetActiveKey) {
|
|
97
|
+
if (value) {
|
|
98
|
+
parentSetActiveKey(key)
|
|
99
|
+
} else if (parentActiveKey && parentActiveKey.value === key) {
|
|
100
|
+
parentSetActiveKey(undefined)
|
|
101
|
+
}
|
|
102
|
+
} else {
|
|
103
|
+
internal.value = value
|
|
58
104
|
}
|
|
59
105
|
},
|
|
106
|
+
{ immediate: true }
|
|
60
107
|
)
|
|
61
108
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
109
|
+
// Accordion: when another branch opens, a controlled group must close too. As its
|
|
110
|
+
// visibility is owned by the parent, request the change through `update:visible`.
|
|
111
|
+
watch(
|
|
112
|
+
() => parentActiveKey?.value,
|
|
113
|
+
(activeKey) => {
|
|
114
|
+
if (!controlled.value || !props.visible) {
|
|
115
|
+
return
|
|
116
|
+
}
|
|
65
117
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
118
|
+
if (activeKey !== undefined && activeKey !== key) {
|
|
119
|
+
emit('update:visible', false)
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
)
|
|
71
123
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
124
|
+
// Animate the height of the always-mounted items, after the `show` class (driven straight
|
|
125
|
+
// from `visible`, so the toggler indicator reacts immediately). `display` is forced while
|
|
126
|
+
// collapsing to override the `.nav-group:not(.show) .nav-group-items { display: none }` rule.
|
|
127
|
+
watch(
|
|
128
|
+
visible,
|
|
129
|
+
(value) => {
|
|
130
|
+
emit('visible-change', value)
|
|
76
131
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
}
|
|
132
|
+
const el = navGroupItemsRef.value
|
|
133
|
+
if (!el) {
|
|
134
|
+
return
|
|
135
|
+
}
|
|
82
136
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
137
|
+
el.style.display = 'block'
|
|
138
|
+
|
|
139
|
+
// Each branch sets the starting height, forces a reflow by reading `offsetHeight`, then
|
|
140
|
+
// sets the target height. The reflow makes the browser commit the starting value, so the
|
|
141
|
+
// CSS height transition runs instead of both writes collapsing into a single frame.
|
|
142
|
+
if (value) {
|
|
143
|
+
el.style.height = '0px'
|
|
144
|
+
el.offsetHeight // eslint-disable-line @typescript-eslint/no-unused-expressions
|
|
145
|
+
el.style.height = `${el.scrollHeight}px`
|
|
146
|
+
executeAfterTransition(() => {
|
|
147
|
+
el.style.height = 'auto'
|
|
148
|
+
}, el)
|
|
149
|
+
} else {
|
|
150
|
+
el.style.height = `${el.scrollHeight}px`
|
|
151
|
+
el.offsetHeight // eslint-disable-line @typescript-eslint/no-unused-expressions
|
|
152
|
+
el.style.height = '0px'
|
|
153
|
+
executeAfterTransition(() => {
|
|
154
|
+
el.style.display = ''
|
|
155
|
+
el.style.height = ''
|
|
156
|
+
}, el)
|
|
157
|
+
}
|
|
158
|
+
},
|
|
159
|
+
{ flush: 'post' }
|
|
160
|
+
)
|
|
87
161
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
el.style.height = `${el.scrollHeight}px`
|
|
91
|
-
}
|
|
162
|
+
const handleTogglerClick = (event: Event) => {
|
|
163
|
+
event.preventDefault()
|
|
92
164
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
}
|
|
99
|
-
}
|
|
165
|
+
const next = !visible.value
|
|
166
|
+
emit('update:visible', next)
|
|
167
|
+
|
|
168
|
+
if (controlled.value) {
|
|
169
|
+
return
|
|
170
|
+
}
|
|
100
171
|
|
|
101
|
-
|
|
102
|
-
|
|
172
|
+
if (parentSetActiveKey) {
|
|
173
|
+
parentSetActiveKey(next ? key : undefined)
|
|
174
|
+
} else {
|
|
175
|
+
internal.value = next
|
|
176
|
+
}
|
|
103
177
|
}
|
|
104
178
|
|
|
105
179
|
return () =>
|
|
106
180
|
h(
|
|
107
181
|
props.as,
|
|
108
182
|
{
|
|
109
|
-
class: 'nav-group',
|
|
110
|
-
ref: navGroupRef,
|
|
183
|
+
class: ['nav-group', { show: visible.value }],
|
|
111
184
|
},
|
|
112
185
|
[
|
|
113
186
|
slots.togglerContent &&
|
|
114
187
|
h(
|
|
115
188
|
'a',
|
|
116
189
|
{
|
|
190
|
+
'aria-expanded': visible.value,
|
|
117
191
|
class: ['nav-link', 'nav-group-toggle'],
|
|
118
192
|
href: '#',
|
|
119
193
|
onClick: handleTogglerClick,
|
|
120
194
|
},
|
|
121
|
-
slots.togglerContent && slots.togglerContent()
|
|
195
|
+
slots.togglerContent && slots.togglerContent({ visible: visible.value })
|
|
122
196
|
),
|
|
123
197
|
h(
|
|
124
|
-
|
|
125
|
-
{
|
|
126
|
-
css: false,
|
|
127
|
-
onBeforeEnter: (el) => handleBeforeEnter(el),
|
|
128
|
-
onEnter: (el, done) => handleEnter(el, done),
|
|
129
|
-
onAfterEnter: (el) => handleAfterEnter(el),
|
|
130
|
-
onBeforeLeave: (el) => handleBeforeLeave(el),
|
|
131
|
-
onLeave: (el, done) => handleLeave(el, done),
|
|
132
|
-
onAfterLeave: () => handleAfterLeave(),
|
|
133
|
-
},
|
|
198
|
+
props.as === 'div' ? 'div' : 'ul',
|
|
134
199
|
{
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
props.
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
{
|
|
143
|
-
compact: props.compact,
|
|
144
|
-
},
|
|
145
|
-
],
|
|
146
|
-
},
|
|
147
|
-
slots.default &&
|
|
148
|
-
slots.default().map((vnode, index) => {
|
|
149
|
-
// @ts-expect-error name is defined in component
|
|
150
|
-
if (vnode.type.name === 'CNavGroup') {
|
|
151
|
-
return h(vnode, {
|
|
152
|
-
onVisibleChange: (visible: boolean) =>
|
|
153
|
-
handleVisibleChange(visible, index + 1),
|
|
154
|
-
...(visibleGroup.value && { visible: isVisible(index + 1) }),
|
|
155
|
-
})
|
|
156
|
-
}
|
|
157
|
-
return vnode
|
|
158
|
-
}),
|
|
159
|
-
),
|
|
200
|
+
class: [
|
|
201
|
+
'nav-group-items',
|
|
202
|
+
{
|
|
203
|
+
compact: props.compact,
|
|
204
|
+
},
|
|
205
|
+
],
|
|
206
|
+
ref: navGroupItemsRef,
|
|
160
207
|
},
|
|
208
|
+
slots.default && slots.default()
|
|
161
209
|
),
|
|
162
|
-
]
|
|
210
|
+
]
|
|
163
211
|
)
|
|
164
212
|
},
|
|
165
213
|
})
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { defineComponent, h } from 'vue'
|
|
1
|
+
import { defineComponent, h, inject, onMounted, watch } from 'vue'
|
|
2
2
|
|
|
3
3
|
import { CLink } from '../link/CLink'
|
|
4
4
|
|
|
@@ -26,6 +26,23 @@ const CNavLink = defineComponent({
|
|
|
26
26
|
href: String,
|
|
27
27
|
},
|
|
28
28
|
setup(props, { slots }) {
|
|
29
|
+
const openBranch = inject<(() => void) | undefined>('cNavGroupOpenBranch', undefined)
|
|
30
|
+
|
|
31
|
+
onMounted(() => {
|
|
32
|
+
if (props.active && openBranch) {
|
|
33
|
+
openBranch()
|
|
34
|
+
}
|
|
35
|
+
})
|
|
36
|
+
|
|
37
|
+
watch(
|
|
38
|
+
() => props.active,
|
|
39
|
+
(active, previous) => {
|
|
40
|
+
if (active && !previous && openBranch) {
|
|
41
|
+
openBranch()
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
)
|
|
45
|
+
|
|
29
46
|
return () =>
|
|
30
47
|
h(
|
|
31
48
|
CLink,
|
|
@@ -38,7 +55,7 @@ const CNavLink = defineComponent({
|
|
|
38
55
|
},
|
|
39
56
|
{
|
|
40
57
|
default: () => slots.default && slots.default(),
|
|
41
|
-
}
|
|
58
|
+
}
|
|
42
59
|
)
|
|
43
60
|
},
|
|
44
61
|
})
|