@coreui/vue-pro 5.5.0 → 5.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/cjs/components/accordion/CAccordion.js.map +1 -1
- package/dist/cjs/components/accordion/CAccordionBody.js.map +1 -1
- package/dist/cjs/components/accordion/CAccordionButton.js.map +1 -1
- package/dist/cjs/components/accordion/CAccordionHeader.js.map +1 -1
- package/dist/cjs/components/accordion/CAccordionItem.js.map +1 -1
- package/dist/cjs/components/accordion/index.js.map +1 -1
- package/dist/cjs/components/alert/CAlert.js.map +1 -1
- package/dist/cjs/components/alert/CAlertHeading.js.map +1 -1
- package/dist/cjs/components/alert/CAlertLink.js.map +1 -1
- package/dist/cjs/components/alert/index.js.map +1 -1
- package/dist/cjs/components/avatar/CAvatar.js.map +1 -1
- package/dist/cjs/components/avatar/index.js.map +1 -1
- package/dist/cjs/components/backdrop/CBackdrop.js.map +1 -1
- package/dist/cjs/components/backdrop/index.js.map +1 -1
- package/dist/cjs/components/badge/CBadge.js.map +1 -1
- package/dist/cjs/components/badge/index.js.map +1 -1
- package/dist/cjs/components/breadcrumb/CBreadcrumb.js.map +1 -1
- package/dist/cjs/components/breadcrumb/CBreadcrumbItem.js.map +1 -1
- package/dist/cjs/components/breadcrumb/index.js.map +1 -1
- package/dist/cjs/components/button/CButton.js.map +1 -1
- package/dist/cjs/components/button/index.js.map +1 -1
- package/dist/cjs/components/button-group/CButtonGroup.js.map +1 -1
- package/dist/cjs/components/button-group/CButtonToolbar.js.map +1 -1
- package/dist/cjs/components/button-group/index.js.map +1 -1
- package/dist/cjs/components/calendar/CCalendar.js +2 -2
- package/dist/cjs/components/calendar/CCalendar.js.map +1 -1
- package/dist/cjs/components/calendar/index.js.map +1 -1
- package/dist/cjs/components/calendar/utils.js +5 -0
- package/dist/cjs/components/calendar/utils.js.map +1 -1
- package/dist/cjs/components/callout/CCallout.js.map +1 -1
- package/dist/cjs/components/callout/index.js.map +1 -1
- package/dist/cjs/components/card/CCard.js.map +1 -1
- package/dist/cjs/components/card/CCardBody.js.map +1 -1
- package/dist/cjs/components/card/CCardFooter.js.map +1 -1
- package/dist/cjs/components/card/CCardGroup.js.map +1 -1
- package/dist/cjs/components/card/CCardHeader.js.map +1 -1
- package/dist/cjs/components/card/CCardImage.js.map +1 -1
- package/dist/cjs/components/card/CCardImageOverlay.js.map +1 -1
- package/dist/cjs/components/card/CCardLink.js.map +1 -1
- package/dist/cjs/components/card/CCardSubtitle.js.map +1 -1
- package/dist/cjs/components/card/CCardText.js.map +1 -1
- package/dist/cjs/components/card/CCardTitle.js.map +1 -1
- package/dist/cjs/components/card/index.js.map +1 -1
- package/dist/cjs/components/carousel/CCarousel.js.map +1 -1
- package/dist/cjs/components/carousel/CCarouselCaption.js.map +1 -1
- package/dist/cjs/components/carousel/CCarouselItem.js.map +1 -1
- package/dist/cjs/components/carousel/index.js.map +1 -1
- package/dist/cjs/components/close-button/CCloseButton.js.map +1 -1
- package/dist/cjs/components/close-button/index.js.map +1 -1
- package/dist/cjs/components/collapse/CCollapse.js.map +1 -1
- package/dist/cjs/components/collapse/index.js.map +1 -1
- package/dist/cjs/components/conditional-teleport/CConditionalTeleport.js.map +1 -1
- package/dist/cjs/components/conditional-teleport/index.js.map +1 -1
- package/dist/cjs/components/date-picker/CDatePicker.js.map +1 -1
- package/dist/cjs/components/date-picker/index.js.map +1 -1
- package/dist/cjs/components/date-range-picker/CDateRangePicker.js +7 -5
- package/dist/cjs/components/date-range-picker/CDateRangePicker.js.map +1 -1
- package/dist/cjs/components/date-range-picker/index.js.map +1 -1
- package/dist/cjs/components/date-range-picker/utils.js.map +1 -1
- package/dist/cjs/components/dropdown/CDropdown.d.ts +1 -1
- package/dist/cjs/components/dropdown/CDropdown.js.map +1 -1
- package/dist/cjs/components/dropdown/CDropdownDivider.js.map +1 -1
- package/dist/cjs/components/dropdown/CDropdownHeader.js.map +1 -1
- package/dist/cjs/components/dropdown/CDropdownItem.js.map +1 -1
- package/dist/cjs/components/dropdown/CDropdownMenu.js.map +1 -1
- package/dist/cjs/components/dropdown/CDropdownToggle.js.map +1 -1
- package/dist/cjs/components/dropdown/index.js.map +1 -1
- package/dist/cjs/components/dropdown/utils.js.map +1 -1
- package/dist/cjs/components/element-cover/CElementCover.js.map +1 -1
- package/dist/cjs/components/element-cover/index.js.map +1 -1
- package/dist/cjs/components/footer/CFooter.js.map +1 -1
- package/dist/cjs/components/footer/index.js.map +1 -1
- package/dist/cjs/components/form/CForm.js.map +1 -1
- package/dist/cjs/components/form/CFormCheck.js.map +1 -1
- package/dist/cjs/components/form/CFormControlValidation.js.map +1 -1
- package/dist/cjs/components/form/CFormControlWrapper.js.map +1 -1
- package/dist/cjs/components/form/CFormFeedback.js.map +1 -1
- package/dist/cjs/components/form/CFormFloating.js.map +1 -1
- package/dist/cjs/components/form/CFormInput.js.map +1 -1
- package/dist/cjs/components/form/CFormLabel.js.map +1 -1
- package/dist/cjs/components/form/CFormRange.js.map +1 -1
- package/dist/cjs/components/form/CFormSelect.js.map +1 -1
- package/dist/cjs/components/form/CFormSwitch.js.map +1 -1
- package/dist/cjs/components/form/CFormText.js.map +1 -1
- package/dist/cjs/components/form/CFormTextarea.js.map +1 -1
- package/dist/cjs/components/form/CInputGroup.js.map +1 -1
- package/dist/cjs/components/form/CInputGroupText.js.map +1 -1
- package/dist/cjs/components/form/index.js.map +1 -1
- package/dist/cjs/components/grid/CCol.js.map +1 -1
- package/dist/cjs/components/grid/CContainer.js.map +1 -1
- package/dist/cjs/components/grid/CRow.js.map +1 -1
- package/dist/cjs/components/grid/index.js.map +1 -1
- package/dist/cjs/components/header/CHeader.js.map +1 -1
- package/dist/cjs/components/header/CHeaderBrand.js.map +1 -1
- package/dist/cjs/components/header/CHeaderDivider.js.map +1 -1
- package/dist/cjs/components/header/CHeaderNav.js.map +1 -1
- package/dist/cjs/components/header/CHeaderText.js.map +1 -1
- package/dist/cjs/components/header/CHeaderToggler.js.map +1 -1
- package/dist/cjs/components/header/index.js.map +1 -1
- package/dist/cjs/components/image/CImage.js.map +1 -1
- package/dist/cjs/components/image/index.js.map +1 -1
- package/dist/cjs/components/link/CLink.js.map +1 -1
- package/dist/cjs/components/link/index.js.map +1 -1
- package/dist/cjs/components/list-group/CListGroup.js.map +1 -1
- package/dist/cjs/components/list-group/CListGroupItem.js.map +1 -1
- package/dist/cjs/components/list-group/index.js.map +1 -1
- package/dist/cjs/components/loading-button/CLoadingButton.js.map +1 -1
- package/dist/cjs/components/loading-button/index.js.map +1 -1
- package/dist/cjs/components/modal/CModal.js.map +1 -1
- package/dist/cjs/components/modal/CModalBody.js.map +1 -1
- package/dist/cjs/components/modal/CModalFooter.js.map +1 -1
- package/dist/cjs/components/modal/CModalHeader.js.map +1 -1
- package/dist/cjs/components/modal/CModalTitle.js.map +1 -1
- package/dist/cjs/components/modal/index.js.map +1 -1
- package/dist/cjs/components/multi-select/CMultiSelect.d.ts +75 -8
- package/dist/cjs/components/multi-select/CMultiSelect.js +190 -129
- package/dist/cjs/components/multi-select/CMultiSelect.js.map +1 -1
- package/dist/cjs/components/multi-select/CMultiSelectNativeSelect.js.map +1 -1
- package/dist/cjs/components/multi-select/CMultiSelectOptions.js.map +1 -1
- package/dist/cjs/components/multi-select/CMultiSelectSelection.d.ts +15 -3
- package/dist/cjs/components/multi-select/CMultiSelectSelection.js +26 -2
- package/dist/cjs/components/multi-select/CMultiSelectSelection.js.map +1 -1
- package/dist/cjs/components/multi-select/index.js.map +1 -1
- package/dist/cjs/components/multi-select/types.d.ts +4 -0
- package/dist/cjs/components/multi-select/utils.d.ts +5 -2
- package/dist/cjs/components/multi-select/utils.js +18 -1
- package/dist/cjs/components/multi-select/utils.js.map +1 -1
- package/dist/cjs/components/nav/CNav.js.map +1 -1
- package/dist/cjs/components/nav/CNavGroup.js.map +1 -1
- package/dist/cjs/components/nav/CNavGroupItems.js.map +1 -1
- package/dist/cjs/components/nav/CNavItem.d.ts +4 -2
- package/dist/cjs/components/nav/CNavItem.js +12 -1
- package/dist/cjs/components/nav/CNavItem.js.map +1 -1
- package/dist/cjs/components/nav/CNavLink.js.map +1 -1
- package/dist/cjs/components/nav/CNavTitle.js.map +1 -1
- package/dist/cjs/components/nav/index.js.map +1 -1
- package/dist/cjs/components/navbar/CNavbar.js.map +1 -1
- package/dist/cjs/components/navbar/CNavbarBrand.js.map +1 -1
- package/dist/cjs/components/navbar/CNavbarNav.js.map +1 -1
- package/dist/cjs/components/navbar/CNavbarText.js.map +1 -1
- package/dist/cjs/components/navbar/CNavbarToggler.js.map +1 -1
- package/dist/cjs/components/navbar/index.js.map +1 -1
- package/dist/cjs/components/offcanvas/COffcanvas.js.map +1 -1
- package/dist/cjs/components/offcanvas/COffcanvasBody.js.map +1 -1
- package/dist/cjs/components/offcanvas/COffcanvasHeader.js.map +1 -1
- package/dist/cjs/components/offcanvas/COffcanvasTitle.js.map +1 -1
- package/dist/cjs/components/offcanvas/index.js.map +1 -1
- package/dist/cjs/components/pagination/CPagination.js.map +1 -1
- package/dist/cjs/components/pagination/CPaginationItem.js.map +1 -1
- package/dist/cjs/components/pagination/index.js.map +1 -1
- package/dist/cjs/components/picker/CPicker.js.map +1 -1
- package/dist/cjs/components/picker/index.js.map +1 -1
- package/dist/cjs/components/placeholder/CPlaceholder.js.map +1 -1
- package/dist/cjs/components/placeholder/index.js.map +1 -1
- package/dist/cjs/components/popover/CPopover.js +1 -1
- package/dist/cjs/components/popover/CPopover.js.map +1 -1
- package/dist/cjs/components/popover/index.js.map +1 -1
- package/dist/cjs/components/progress/CProgress.js.map +1 -1
- package/dist/cjs/components/progress/CProgressBar.js.map +1 -1
- package/dist/cjs/components/progress/CProgressStacked.js.map +1 -1
- package/dist/cjs/components/progress/index.js.map +1 -1
- package/dist/cjs/components/props.js.map +1 -1
- package/dist/cjs/components/rating/CRating.js.map +1 -1
- package/dist/cjs/components/rating/index.js.map +1 -1
- package/dist/cjs/components/sidebar/CSidebar.js.map +1 -1
- package/dist/cjs/components/sidebar/CSidebarBrand.js.map +1 -1
- package/dist/cjs/components/sidebar/CSidebarFooter.js.map +1 -1
- package/dist/cjs/components/sidebar/CSidebarHeader.js.map +1 -1
- package/dist/cjs/components/sidebar/CSidebarNav.js.map +1 -1
- package/dist/cjs/components/sidebar/CSidebarToggler.js.map +1 -1
- package/dist/cjs/components/sidebar/index.js.map +1 -1
- package/dist/cjs/components/smart-pagination/CSmartPagination.js.map +1 -1
- package/dist/cjs/components/smart-pagination/index.js.map +1 -1
- package/dist/cjs/components/smart-table/CSmartTable.d.ts +5 -0
- package/dist/cjs/components/smart-table/CSmartTable.js +2 -1
- package/dist/cjs/components/smart-table/CSmartTable.js.map +1 -1
- package/dist/cjs/components/smart-table/CSmartTableBody.js.map +1 -1
- package/dist/cjs/components/smart-table/CSmartTableHead.js +11 -15
- package/dist/cjs/components/smart-table/CSmartTableHead.js.map +1 -1
- package/dist/cjs/components/smart-table/index.js.map +1 -1
- package/dist/cjs/components/smart-table/utils.js.map +1 -1
- package/dist/cjs/components/spinner/CSpinner.js.map +1 -1
- package/dist/cjs/components/spinner/index.js.map +1 -1
- package/dist/cjs/components/table/CTable.js.map +1 -1
- package/dist/cjs/components/table/CTableBody.js.map +1 -1
- package/dist/cjs/components/table/CTableCaption.js.map +1 -1
- package/dist/cjs/components/table/CTableDataCell.js.map +1 -1
- package/dist/cjs/components/table/CTableFoot.js.map +1 -1
- package/dist/cjs/components/table/CTableHead.js.map +1 -1
- package/dist/cjs/components/table/CTableHeaderCell.js.map +1 -1
- package/dist/cjs/components/table/CTableRow.js.map +1 -1
- package/dist/cjs/components/table/index.js.map +1 -1
- package/dist/cjs/components/table/utils.js.map +1 -1
- package/dist/cjs/components/tabs/CTab.js.map +1 -1
- package/dist/cjs/components/tabs/CTabContent.js.map +1 -1
- package/dist/cjs/components/tabs/CTabList.js.map +1 -1
- package/dist/cjs/components/tabs/CTabPane.js.map +1 -1
- package/dist/cjs/components/tabs/CTabPanel.js.map +1 -1
- package/dist/cjs/components/tabs/CTabs.js.map +1 -1
- package/dist/cjs/components/tabs/index.js.map +1 -1
- package/dist/cjs/components/time-picker/CTimePicker.js.map +1 -1
- package/dist/cjs/components/time-picker/CTimePickerRollCol.js +1 -1
- package/dist/cjs/components/time-picker/CTimePickerRollCol.js.map +1 -1
- package/dist/cjs/components/time-picker/index.js.map +1 -1
- package/dist/cjs/components/time-picker/utils.js.map +1 -1
- package/dist/cjs/components/toast/CToast.js.map +1 -1
- package/dist/cjs/components/toast/CToastBody.js.map +1 -1
- package/dist/cjs/components/toast/CToastClose.js.map +1 -1
- package/dist/cjs/components/toast/CToastHeader.js.map +1 -1
- package/dist/cjs/components/toast/CToaster.js.map +1 -1
- package/dist/cjs/components/toast/index.js.map +1 -1
- package/dist/cjs/components/tooltip/CTooltip.js +1 -1
- package/dist/cjs/components/tooltip/CTooltip.js.map +1 -1
- package/dist/cjs/components/tooltip/index.js.map +1 -1
- package/dist/cjs/components/virtual-scroller/CVirtualScroller.js.map +1 -1
- package/dist/cjs/components/virtual-scroller/index.js.map +1 -1
- package/dist/cjs/components/widgets/CWidgetStatsA.js.map +1 -1
- package/dist/cjs/components/widgets/CWidgetStatsB.js.map +1 -1
- package/dist/cjs/components/widgets/CWidgetStatsC.js.map +1 -1
- package/dist/cjs/components/widgets/CWidgetStatsD.js.map +1 -1
- package/dist/cjs/components/widgets/CWidgetStatsE.js.map +1 -1
- package/dist/cjs/components/widgets/CWidgetStatsF.js.map +1 -1
- package/dist/cjs/components/widgets/index.js.map +1 -1
- package/dist/cjs/composables/index.d.ts +2 -1
- package/dist/cjs/composables/useColorModes.js.map +1 -1
- package/dist/cjs/composables/useDebouncedCallback.js.map +1 -1
- package/dist/cjs/composables/useDropdownWithPopper.d.ts +10 -0
- package/dist/cjs/composables/useDropdownWithPopper.js +110 -0
- package/dist/cjs/composables/useDropdownWithPopper.js.map +1 -0
- package/dist/cjs/composables/useIsVisible.js.map +1 -1
- package/dist/cjs/composables/usePopper.js.map +1 -1
- package/dist/cjs/composables/useUniqueId.js.map +1 -1
- package/dist/cjs/directives/v-c-placeholder.js.map +1 -1
- package/dist/cjs/directives/v-c-popover.js.map +1 -1
- package/dist/cjs/directives/v-c-tooltip.js.map +1 -1
- package/dist/cjs/directives/v-c-visible.js.map +1 -1
- package/dist/cjs/index.js +2 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/node_modules/@coreui/icons-vue/dist/index.es.js.map +1 -1
- package/dist/cjs/node_modules/is-plain-object/dist/is-plain-object.js.map +1 -1
- package/dist/cjs/props.js.map +1 -1
- package/dist/cjs/utils/getNextActiveElement.js +1 -1
- package/dist/cjs/utils/getNextActiveElement.js.map +1 -1
- package/dist/cjs/utils/getRTLPlacement.js.map +1 -1
- package/dist/cjs/utils/isInViewport.js.map +1 -1
- package/dist/cjs/utils/isObjectInArray.js.map +1 -1
- package/dist/cjs/utils/isRTL.js.map +1 -1
- package/dist/cjs/utils/transition.js.map +1 -1
- package/dist/esm/components/accordion/CAccordion.js.map +1 -1
- package/dist/esm/components/accordion/CAccordionBody.js.map +1 -1
- package/dist/esm/components/accordion/CAccordionButton.js.map +1 -1
- package/dist/esm/components/accordion/CAccordionHeader.js.map +1 -1
- package/dist/esm/components/accordion/CAccordionItem.js.map +1 -1
- package/dist/esm/components/accordion/index.js.map +1 -1
- package/dist/esm/components/alert/CAlert.js.map +1 -1
- package/dist/esm/components/alert/CAlertHeading.js.map +1 -1
- package/dist/esm/components/alert/CAlertLink.js.map +1 -1
- package/dist/esm/components/alert/index.js.map +1 -1
- package/dist/esm/components/avatar/CAvatar.js.map +1 -1
- package/dist/esm/components/avatar/index.js.map +1 -1
- package/dist/esm/components/backdrop/CBackdrop.js.map +1 -1
- package/dist/esm/components/backdrop/index.js.map +1 -1
- package/dist/esm/components/badge/CBadge.js.map +1 -1
- package/dist/esm/components/badge/index.js.map +1 -1
- package/dist/esm/components/breadcrumb/CBreadcrumb.js.map +1 -1
- package/dist/esm/components/breadcrumb/CBreadcrumbItem.js.map +1 -1
- package/dist/esm/components/breadcrumb/index.js.map +1 -1
- package/dist/esm/components/button/CButton.js.map +1 -1
- package/dist/esm/components/button/index.js.map +1 -1
- package/dist/esm/components/button-group/CButtonGroup.js.map +1 -1
- package/dist/esm/components/button-group/CButtonToolbar.js.map +1 -1
- package/dist/esm/components/button-group/index.js.map +1 -1
- package/dist/esm/components/calendar/CCalendar.js +2 -2
- package/dist/esm/components/calendar/CCalendar.js.map +1 -1
- package/dist/esm/components/calendar/index.js.map +1 -1
- package/dist/esm/components/calendar/utils.js +5 -0
- package/dist/esm/components/calendar/utils.js.map +1 -1
- package/dist/esm/components/callout/CCallout.js.map +1 -1
- package/dist/esm/components/callout/index.js.map +1 -1
- package/dist/esm/components/card/CCard.js.map +1 -1
- package/dist/esm/components/card/CCardBody.js.map +1 -1
- package/dist/esm/components/card/CCardFooter.js.map +1 -1
- package/dist/esm/components/card/CCardGroup.js.map +1 -1
- package/dist/esm/components/card/CCardHeader.js.map +1 -1
- package/dist/esm/components/card/CCardImage.js.map +1 -1
- package/dist/esm/components/card/CCardImageOverlay.js.map +1 -1
- package/dist/esm/components/card/CCardLink.js.map +1 -1
- package/dist/esm/components/card/CCardSubtitle.js.map +1 -1
- package/dist/esm/components/card/CCardText.js.map +1 -1
- package/dist/esm/components/card/CCardTitle.js.map +1 -1
- package/dist/esm/components/card/index.js.map +1 -1
- package/dist/esm/components/carousel/CCarousel.js.map +1 -1
- package/dist/esm/components/carousel/CCarouselCaption.js.map +1 -1
- package/dist/esm/components/carousel/CCarouselItem.js.map +1 -1
- package/dist/esm/components/carousel/index.js.map +1 -1
- package/dist/esm/components/close-button/CCloseButton.js.map +1 -1
- package/dist/esm/components/close-button/index.js.map +1 -1
- package/dist/esm/components/collapse/CCollapse.js.map +1 -1
- package/dist/esm/components/collapse/index.js.map +1 -1
- package/dist/esm/components/conditional-teleport/CConditionalTeleport.js.map +1 -1
- package/dist/esm/components/conditional-teleport/index.js.map +1 -1
- package/dist/esm/components/date-picker/CDatePicker.js.map +1 -1
- package/dist/esm/components/date-picker/index.js.map +1 -1
- package/dist/esm/components/date-range-picker/CDateRangePicker.js +7 -5
- package/dist/esm/components/date-range-picker/CDateRangePicker.js.map +1 -1
- package/dist/esm/components/date-range-picker/index.js.map +1 -1
- package/dist/esm/components/date-range-picker/utils.js.map +1 -1
- package/dist/esm/components/dropdown/CDropdown.d.ts +1 -1
- package/dist/esm/components/dropdown/CDropdown.js.map +1 -1
- package/dist/esm/components/dropdown/CDropdownDivider.js.map +1 -1
- package/dist/esm/components/dropdown/CDropdownHeader.js.map +1 -1
- package/dist/esm/components/dropdown/CDropdownItem.js.map +1 -1
- package/dist/esm/components/dropdown/CDropdownMenu.js.map +1 -1
- package/dist/esm/components/dropdown/CDropdownToggle.js.map +1 -1
- package/dist/esm/components/dropdown/index.js.map +1 -1
- package/dist/esm/components/dropdown/utils.js.map +1 -1
- package/dist/esm/components/element-cover/CElementCover.js.map +1 -1
- package/dist/esm/components/element-cover/index.js.map +1 -1
- package/dist/esm/components/footer/CFooter.js.map +1 -1
- package/dist/esm/components/footer/index.js.map +1 -1
- package/dist/esm/components/form/CForm.js.map +1 -1
- package/dist/esm/components/form/CFormCheck.js.map +1 -1
- package/dist/esm/components/form/CFormControlValidation.js.map +1 -1
- package/dist/esm/components/form/CFormControlWrapper.js.map +1 -1
- package/dist/esm/components/form/CFormFeedback.js.map +1 -1
- package/dist/esm/components/form/CFormFloating.js.map +1 -1
- package/dist/esm/components/form/CFormInput.js.map +1 -1
- package/dist/esm/components/form/CFormLabel.js.map +1 -1
- package/dist/esm/components/form/CFormRange.js.map +1 -1
- package/dist/esm/components/form/CFormSelect.js.map +1 -1
- package/dist/esm/components/form/CFormSwitch.js.map +1 -1
- package/dist/esm/components/form/CFormText.js.map +1 -1
- package/dist/esm/components/form/CFormTextarea.js.map +1 -1
- package/dist/esm/components/form/CInputGroup.js.map +1 -1
- package/dist/esm/components/form/CInputGroupText.js.map +1 -1
- package/dist/esm/components/form/index.js.map +1 -1
- package/dist/esm/components/grid/CCol.js.map +1 -1
- package/dist/esm/components/grid/CContainer.js.map +1 -1
- package/dist/esm/components/grid/CRow.js.map +1 -1
- package/dist/esm/components/grid/index.js.map +1 -1
- package/dist/esm/components/header/CHeader.js.map +1 -1
- package/dist/esm/components/header/CHeaderBrand.js.map +1 -1
- package/dist/esm/components/header/CHeaderDivider.js.map +1 -1
- package/dist/esm/components/header/CHeaderNav.js.map +1 -1
- package/dist/esm/components/header/CHeaderText.js.map +1 -1
- package/dist/esm/components/header/CHeaderToggler.js.map +1 -1
- package/dist/esm/components/header/index.js.map +1 -1
- package/dist/esm/components/image/CImage.js.map +1 -1
- package/dist/esm/components/image/index.js.map +1 -1
- package/dist/esm/components/link/CLink.js.map +1 -1
- package/dist/esm/components/link/index.js.map +1 -1
- package/dist/esm/components/list-group/CListGroup.js.map +1 -1
- package/dist/esm/components/list-group/CListGroupItem.js.map +1 -1
- package/dist/esm/components/list-group/index.js.map +1 -1
- package/dist/esm/components/loading-button/CLoadingButton.js.map +1 -1
- package/dist/esm/components/loading-button/index.js.map +1 -1
- package/dist/esm/components/modal/CModal.js.map +1 -1
- package/dist/esm/components/modal/CModalBody.js.map +1 -1
- package/dist/esm/components/modal/CModalFooter.js.map +1 -1
- package/dist/esm/components/modal/CModalHeader.js.map +1 -1
- package/dist/esm/components/modal/CModalTitle.js.map +1 -1
- package/dist/esm/components/modal/index.js.map +1 -1
- package/dist/esm/components/multi-select/CMultiSelect.d.ts +75 -8
- package/dist/esm/components/multi-select/CMultiSelect.js +192 -131
- package/dist/esm/components/multi-select/CMultiSelect.js.map +1 -1
- package/dist/esm/components/multi-select/CMultiSelectNativeSelect.js.map +1 -1
- package/dist/esm/components/multi-select/CMultiSelectOptions.js.map +1 -1
- package/dist/esm/components/multi-select/CMultiSelectSelection.d.ts +15 -3
- package/dist/esm/components/multi-select/CMultiSelectSelection.js +26 -2
- package/dist/esm/components/multi-select/CMultiSelectSelection.js.map +1 -1
- package/dist/esm/components/multi-select/index.js.map +1 -1
- package/dist/esm/components/multi-select/types.d.ts +4 -0
- package/dist/esm/components/multi-select/utils.d.ts +5 -2
- package/dist/esm/components/multi-select/utils.js +16 -2
- package/dist/esm/components/multi-select/utils.js.map +1 -1
- package/dist/esm/components/nav/CNav.js.map +1 -1
- package/dist/esm/components/nav/CNavGroup.js.map +1 -1
- package/dist/esm/components/nav/CNavGroupItems.js.map +1 -1
- package/dist/esm/components/nav/CNavItem.d.ts +4 -2
- package/dist/esm/components/nav/CNavItem.js +12 -1
- package/dist/esm/components/nav/CNavItem.js.map +1 -1
- package/dist/esm/components/nav/CNavLink.js.map +1 -1
- package/dist/esm/components/nav/CNavTitle.js.map +1 -1
- package/dist/esm/components/nav/index.js.map +1 -1
- package/dist/esm/components/navbar/CNavbar.js.map +1 -1
- package/dist/esm/components/navbar/CNavbarBrand.js.map +1 -1
- package/dist/esm/components/navbar/CNavbarNav.js.map +1 -1
- package/dist/esm/components/navbar/CNavbarText.js.map +1 -1
- package/dist/esm/components/navbar/CNavbarToggler.js.map +1 -1
- package/dist/esm/components/navbar/index.js.map +1 -1
- package/dist/esm/components/offcanvas/COffcanvas.js.map +1 -1
- package/dist/esm/components/offcanvas/COffcanvasBody.js.map +1 -1
- package/dist/esm/components/offcanvas/COffcanvasHeader.js.map +1 -1
- package/dist/esm/components/offcanvas/COffcanvasTitle.js.map +1 -1
- package/dist/esm/components/offcanvas/index.js.map +1 -1
- package/dist/esm/components/pagination/CPagination.js.map +1 -1
- package/dist/esm/components/pagination/CPaginationItem.js.map +1 -1
- package/dist/esm/components/pagination/index.js.map +1 -1
- package/dist/esm/components/picker/CPicker.js.map +1 -1
- package/dist/esm/components/picker/index.js.map +1 -1
- package/dist/esm/components/placeholder/CPlaceholder.js.map +1 -1
- package/dist/esm/components/placeholder/index.js.map +1 -1
- package/dist/esm/components/popover/CPopover.js +1 -1
- package/dist/esm/components/popover/CPopover.js.map +1 -1
- package/dist/esm/components/popover/index.js.map +1 -1
- package/dist/esm/components/progress/CProgress.js.map +1 -1
- package/dist/esm/components/progress/CProgressBar.js.map +1 -1
- package/dist/esm/components/progress/CProgressStacked.js.map +1 -1
- package/dist/esm/components/progress/index.js.map +1 -1
- package/dist/esm/components/props.js.map +1 -1
- package/dist/esm/components/rating/CRating.js.map +1 -1
- package/dist/esm/components/rating/index.js.map +1 -1
- package/dist/esm/components/sidebar/CSidebar.js.map +1 -1
- package/dist/esm/components/sidebar/CSidebarBrand.js.map +1 -1
- package/dist/esm/components/sidebar/CSidebarFooter.js.map +1 -1
- package/dist/esm/components/sidebar/CSidebarHeader.js.map +1 -1
- package/dist/esm/components/sidebar/CSidebarNav.js.map +1 -1
- package/dist/esm/components/sidebar/CSidebarToggler.js.map +1 -1
- package/dist/esm/components/sidebar/index.js.map +1 -1
- package/dist/esm/components/smart-pagination/CSmartPagination.js.map +1 -1
- package/dist/esm/components/smart-pagination/index.js.map +1 -1
- package/dist/esm/components/smart-table/CSmartTable.d.ts +5 -0
- package/dist/esm/components/smart-table/CSmartTable.js +2 -1
- package/dist/esm/components/smart-table/CSmartTable.js.map +1 -1
- package/dist/esm/components/smart-table/CSmartTableBody.js.map +1 -1
- package/dist/esm/components/smart-table/CSmartTableHead.js +11 -15
- package/dist/esm/components/smart-table/CSmartTableHead.js.map +1 -1
- package/dist/esm/components/smart-table/index.js.map +1 -1
- package/dist/esm/components/smart-table/utils.js.map +1 -1
- package/dist/esm/components/spinner/CSpinner.js.map +1 -1
- package/dist/esm/components/spinner/index.js.map +1 -1
- package/dist/esm/components/table/CTable.js.map +1 -1
- package/dist/esm/components/table/CTableBody.js.map +1 -1
- package/dist/esm/components/table/CTableCaption.js.map +1 -1
- package/dist/esm/components/table/CTableDataCell.js.map +1 -1
- package/dist/esm/components/table/CTableFoot.js.map +1 -1
- package/dist/esm/components/table/CTableHead.js.map +1 -1
- package/dist/esm/components/table/CTableHeaderCell.js.map +1 -1
- package/dist/esm/components/table/CTableRow.js.map +1 -1
- package/dist/esm/components/table/index.js.map +1 -1
- package/dist/esm/components/table/utils.js.map +1 -1
- package/dist/esm/components/tabs/CTab.js.map +1 -1
- package/dist/esm/components/tabs/CTabContent.js.map +1 -1
- package/dist/esm/components/tabs/CTabList.js.map +1 -1
- package/dist/esm/components/tabs/CTabPane.js.map +1 -1
- package/dist/esm/components/tabs/CTabPanel.js.map +1 -1
- package/dist/esm/components/tabs/CTabs.js.map +1 -1
- package/dist/esm/components/tabs/index.js.map +1 -1
- package/dist/esm/components/time-picker/CTimePicker.js.map +1 -1
- package/dist/esm/components/time-picker/CTimePickerRollCol.js +1 -1
- package/dist/esm/components/time-picker/CTimePickerRollCol.js.map +1 -1
- package/dist/esm/components/time-picker/index.js.map +1 -1
- package/dist/esm/components/time-picker/utils.js.map +1 -1
- package/dist/esm/components/toast/CToast.js.map +1 -1
- package/dist/esm/components/toast/CToastBody.js.map +1 -1
- package/dist/esm/components/toast/CToastClose.js.map +1 -1
- package/dist/esm/components/toast/CToastHeader.js.map +1 -1
- package/dist/esm/components/toast/CToaster.js.map +1 -1
- package/dist/esm/components/toast/index.js.map +1 -1
- package/dist/esm/components/tooltip/CTooltip.js +1 -1
- package/dist/esm/components/tooltip/CTooltip.js.map +1 -1
- package/dist/esm/components/tooltip/index.js.map +1 -1
- package/dist/esm/components/virtual-scroller/CVirtualScroller.js.map +1 -1
- package/dist/esm/components/virtual-scroller/index.js.map +1 -1
- package/dist/esm/components/widgets/CWidgetStatsA.js.map +1 -1
- package/dist/esm/components/widgets/CWidgetStatsB.js.map +1 -1
- package/dist/esm/components/widgets/CWidgetStatsC.js.map +1 -1
- package/dist/esm/components/widgets/CWidgetStatsD.js.map +1 -1
- package/dist/esm/components/widgets/CWidgetStatsE.js.map +1 -1
- package/dist/esm/components/widgets/CWidgetStatsF.js.map +1 -1
- package/dist/esm/components/widgets/index.js.map +1 -1
- package/dist/esm/composables/index.d.ts +2 -1
- package/dist/esm/composables/useColorModes.js.map +1 -1
- package/dist/esm/composables/useDebouncedCallback.js.map +1 -1
- package/dist/esm/composables/useDropdownWithPopper.d.ts +10 -0
- package/dist/esm/composables/useDropdownWithPopper.js +108 -0
- package/dist/esm/composables/useDropdownWithPopper.js.map +1 -0
- package/dist/esm/composables/useIsVisible.js.map +1 -1
- package/dist/esm/composables/usePopper.js.map +1 -1
- package/dist/esm/composables/useUniqueId.js.map +1 -1
- package/dist/esm/directives/v-c-placeholder.js.map +1 -1
- package/dist/esm/directives/v-c-popover.js.map +1 -1
- package/dist/esm/directives/v-c-tooltip.js.map +1 -1
- package/dist/esm/directives/v-c-visible.js.map +1 -1
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/node_modules/@coreui/icons-vue/dist/index.es.js.map +1 -1
- package/dist/esm/node_modules/is-plain-object/dist/is-plain-object.js.map +1 -1
- package/dist/esm/props.js.map +1 -1
- package/dist/esm/utils/getNextActiveElement.js +1 -1
- package/dist/esm/utils/getNextActiveElement.js.map +1 -1
- package/dist/esm/utils/getRTLPlacement.js.map +1 -1
- package/dist/esm/utils/isInViewport.js.map +1 -1
- package/dist/esm/utils/isObjectInArray.js.map +1 -1
- package/dist/esm/utils/isRTL.js.map +1 -1
- package/dist/esm/utils/transition.js.map +1 -1
- package/package.json +9 -9
- package/src/components/calendar/CCalendar.ts +2 -2
- package/src/components/calendar/utils.ts +6 -0
- package/src/components/date-range-picker/CDateRangePicker.ts +12 -7
- package/src/components/multi-select/CMultiSelect.ts +286 -180
- package/src/components/multi-select/CMultiSelectSelection.ts +32 -3
- package/src/components/multi-select/types.ts +9 -0
- package/src/components/multi-select/utils.ts +26 -1
- package/src/components/nav/CNavItem.ts +12 -1
- package/src/components/smart-table/CSmartTable.ts +3 -2
- package/src/components/smart-table/CSmartTableHead.ts +15 -16
- package/src/composables/index.ts +9 -1
- package/src/composables/useDropdownWithPopper.ts +130 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { PropType } from 'vue';
|
|
2
|
-
import type { Option, OptionsGroup } from './types';
|
|
2
|
+
import type { Option, OptionsGroup, Search } from './types';
|
|
3
3
|
declare const CMultiSelect: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
4
4
|
/**
|
|
5
5
|
* Allow users to create options if they are not in the list of options.
|
|
@@ -7,6 +7,15 @@ declare const CMultiSelect: import("vue").DefineComponent<import("vue").ExtractP
|
|
|
7
7
|
* @since 4.9.0
|
|
8
8
|
*/
|
|
9
9
|
allowCreateOptions: BooleanConstructor;
|
|
10
|
+
/**
|
|
11
|
+
* A string that provides an accessible label for the cleaner button. This label is read by screen readers to describe the action associated with the button.
|
|
12
|
+
*
|
|
13
|
+
* @since 5.7.0
|
|
14
|
+
*/
|
|
15
|
+
ariaCleanerLabel: {
|
|
16
|
+
type: StringConstructor;
|
|
17
|
+
default: string;
|
|
18
|
+
};
|
|
10
19
|
/**
|
|
11
20
|
* Enables selection cleaner element.
|
|
12
21
|
*
|
|
@@ -16,6 +25,15 @@ declare const CMultiSelect: import("vue").DefineComponent<import("vue").ExtractP
|
|
|
16
25
|
type: BooleanConstructor;
|
|
17
26
|
default: boolean;
|
|
18
27
|
};
|
|
28
|
+
/**
|
|
29
|
+
* Appends the dropdown to a specific element. You can pass an HTML element or function that returns a single element.
|
|
30
|
+
*
|
|
31
|
+
* @since 5.7.0
|
|
32
|
+
*/
|
|
33
|
+
container: {
|
|
34
|
+
type: PropType<HTMLElement | (() => HTMLElement) | string>;
|
|
35
|
+
default: string;
|
|
36
|
+
};
|
|
19
37
|
/**
|
|
20
38
|
* Clear current search on selecting an item.
|
|
21
39
|
*
|
|
@@ -131,12 +149,17 @@ declare const CMultiSelect: import("vue").DefineComponent<import("vue").ExtractP
|
|
|
131
149
|
*/
|
|
132
150
|
resetSelectionOnOptionsChange: BooleanConstructor;
|
|
133
151
|
/**
|
|
134
|
-
*
|
|
152
|
+
* The `search` prop determines how the search input element is enabled and behaves. It accepts multiple types to provide flexibility in configuring search behavior:
|
|
153
|
+
*
|
|
154
|
+
* - `true` : Enables the default search input element with standard behavior.
|
|
155
|
+
* - `'external'`: Enables an external search mechanism, possibly integrating with external APIs or services.
|
|
156
|
+
* - `'global'`: When set, the user can perform searches across the entire component, regardless of where their focus is within the component.
|
|
157
|
+
* - `{ external?: boolean; global?: boolean }`: Allows for granular control over the search behavior by specifying individual properties. It is useful when you also want to use external and global search.
|
|
135
158
|
*/
|
|
136
159
|
search: {
|
|
137
|
-
type:
|
|
160
|
+
type: PropType<Search>;
|
|
138
161
|
default: boolean;
|
|
139
|
-
validator: (value: boolean | string) => boolean;
|
|
162
|
+
validator: (value: boolean | object | string) => boolean;
|
|
140
163
|
};
|
|
141
164
|
/**
|
|
142
165
|
* Sets the label for no results when filtering.
|
|
@@ -192,6 +215,15 @@ declare const CMultiSelect: import("vue").DefineComponent<import("vue").ExtractP
|
|
|
192
215
|
type: StringConstructor;
|
|
193
216
|
validator: (value: string) => boolean;
|
|
194
217
|
};
|
|
218
|
+
/**
|
|
219
|
+
* Generates dropdown menu using Teleport.
|
|
220
|
+
*
|
|
221
|
+
* @since 5.7.0
|
|
222
|
+
*/
|
|
223
|
+
teleport: {
|
|
224
|
+
type: BooleanConstructor[];
|
|
225
|
+
default: boolean;
|
|
226
|
+
};
|
|
195
227
|
/**
|
|
196
228
|
* Add helper text to the component.
|
|
197
229
|
*
|
|
@@ -241,6 +273,15 @@ declare const CMultiSelect: import("vue").DefineComponent<import("vue").ExtractP
|
|
|
241
273
|
* @since 4.9.0
|
|
242
274
|
*/
|
|
243
275
|
allowCreateOptions: BooleanConstructor;
|
|
276
|
+
/**
|
|
277
|
+
* A string that provides an accessible label for the cleaner button. This label is read by screen readers to describe the action associated with the button.
|
|
278
|
+
*
|
|
279
|
+
* @since 5.7.0
|
|
280
|
+
*/
|
|
281
|
+
ariaCleanerLabel: {
|
|
282
|
+
type: StringConstructor;
|
|
283
|
+
default: string;
|
|
284
|
+
};
|
|
244
285
|
/**
|
|
245
286
|
* Enables selection cleaner element.
|
|
246
287
|
*
|
|
@@ -250,6 +291,15 @@ declare const CMultiSelect: import("vue").DefineComponent<import("vue").ExtractP
|
|
|
250
291
|
type: BooleanConstructor;
|
|
251
292
|
default: boolean;
|
|
252
293
|
};
|
|
294
|
+
/**
|
|
295
|
+
* Appends the dropdown to a specific element. You can pass an HTML element or function that returns a single element.
|
|
296
|
+
*
|
|
297
|
+
* @since 5.7.0
|
|
298
|
+
*/
|
|
299
|
+
container: {
|
|
300
|
+
type: PropType<HTMLElement | (() => HTMLElement) | string>;
|
|
301
|
+
default: string;
|
|
302
|
+
};
|
|
253
303
|
/**
|
|
254
304
|
* Clear current search on selecting an item.
|
|
255
305
|
*
|
|
@@ -365,12 +415,17 @@ declare const CMultiSelect: import("vue").DefineComponent<import("vue").ExtractP
|
|
|
365
415
|
*/
|
|
366
416
|
resetSelectionOnOptionsChange: BooleanConstructor;
|
|
367
417
|
/**
|
|
368
|
-
*
|
|
418
|
+
* The `search` prop determines how the search input element is enabled and behaves. It accepts multiple types to provide flexibility in configuring search behavior:
|
|
419
|
+
*
|
|
420
|
+
* - `true` : Enables the default search input element with standard behavior.
|
|
421
|
+
* - `'external'`: Enables an external search mechanism, possibly integrating with external APIs or services.
|
|
422
|
+
* - `'global'`: When set, the user can perform searches across the entire component, regardless of where their focus is within the component.
|
|
423
|
+
* - `{ external?: boolean; global?: boolean }`: Allows for granular control over the search behavior by specifying individual properties. It is useful when you also want to use external and global search.
|
|
369
424
|
*/
|
|
370
425
|
search: {
|
|
371
|
-
type:
|
|
426
|
+
type: PropType<Search>;
|
|
372
427
|
default: boolean;
|
|
373
|
-
validator: (value: boolean | string) => boolean;
|
|
428
|
+
validator: (value: boolean | object | string) => boolean;
|
|
374
429
|
};
|
|
375
430
|
/**
|
|
376
431
|
* Sets the label for no results when filtering.
|
|
@@ -426,6 +481,15 @@ declare const CMultiSelect: import("vue").DefineComponent<import("vue").ExtractP
|
|
|
426
481
|
type: StringConstructor;
|
|
427
482
|
validator: (value: string) => boolean;
|
|
428
483
|
};
|
|
484
|
+
/**
|
|
485
|
+
* Generates dropdown menu using Teleport.
|
|
486
|
+
*
|
|
487
|
+
* @since 5.7.0
|
|
488
|
+
*/
|
|
489
|
+
teleport: {
|
|
490
|
+
type: BooleanConstructor[];
|
|
491
|
+
default: boolean;
|
|
492
|
+
};
|
|
429
493
|
/**
|
|
430
494
|
* Add helper text to the component.
|
|
431
495
|
*
|
|
@@ -472,12 +536,14 @@ declare const CMultiSelect: import("vue").DefineComponent<import("vue").ExtractP
|
|
|
472
536
|
onShow?: ((...args: any[]) => any) | undefined;
|
|
473
537
|
onFilterChange?: ((...args: any[]) => any) | undefined;
|
|
474
538
|
}>, {
|
|
475
|
-
search:
|
|
539
|
+
search: Search;
|
|
476
540
|
invalid: boolean;
|
|
477
541
|
visible: boolean;
|
|
478
542
|
disabled: boolean;
|
|
479
543
|
required: boolean;
|
|
480
544
|
selectionType: string;
|
|
545
|
+
container: string | HTMLElement | (() => HTMLElement);
|
|
546
|
+
teleport: boolean;
|
|
481
547
|
valid: boolean;
|
|
482
548
|
tooltipFeedback: boolean;
|
|
483
549
|
options: (Option | OptionsGroup)[];
|
|
@@ -494,6 +560,7 @@ declare const CMultiSelect: import("vue").DefineComponent<import("vue").ExtractP
|
|
|
494
560
|
allowCreateOptions: boolean;
|
|
495
561
|
clearSearchOnSelect: boolean;
|
|
496
562
|
resetSelectionOnOptionsChange: boolean;
|
|
563
|
+
ariaCleanerLabel: string;
|
|
497
564
|
selectAll: boolean;
|
|
498
565
|
selectAllLabel: string;
|
|
499
566
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
@@ -1,11 +1,13 @@
|
|
|
1
|
-
import { defineComponent, ref, provide, computed, watch,
|
|
2
|
-
import { createPopper } from '@popperjs/core';
|
|
1
|
+
import { defineComponent, ref, provide, computed, watch, h } from 'vue';
|
|
3
2
|
import { CFormControlWrapper } from '../form/CFormControlWrapper.js';
|
|
3
|
+
import { CConditionalTeleport } from '../conditional-teleport/CConditionalTeleport.js';
|
|
4
4
|
import { CMultiSelectNativeSelect } from './CMultiSelectNativeSelect.js';
|
|
5
5
|
import { CMultiSelectOptions } from './CMultiSelectOptions.js';
|
|
6
6
|
import { CMultiSelectSelection } from './CMultiSelectSelection.js';
|
|
7
|
-
import
|
|
8
|
-
import
|
|
7
|
+
import { useDropdownWithPopper } from '../../composables/useDropdownWithPopper.js';
|
|
8
|
+
import '@popperjs/core';
|
|
9
|
+
import getNextActiveElement from '../../utils/getNextActiveElement.js';
|
|
10
|
+
import { flattenOptionsArray, isExternalSearch, filterOptionsList, createOption, selectOptions, getOptionsList, isGlobalSearch } from './utils.js';
|
|
9
11
|
|
|
10
12
|
const CMultiSelect = defineComponent({
|
|
11
13
|
name: 'CMultiSelect',
|
|
@@ -16,6 +18,15 @@ const CMultiSelect = defineComponent({
|
|
|
16
18
|
* @since 4.9.0
|
|
17
19
|
*/
|
|
18
20
|
allowCreateOptions: Boolean,
|
|
21
|
+
/**
|
|
22
|
+
* A string that provides an accessible label for the cleaner button. This label is read by screen readers to describe the action associated with the button.
|
|
23
|
+
*
|
|
24
|
+
* @since 5.7.0
|
|
25
|
+
*/
|
|
26
|
+
ariaCleanerLabel: {
|
|
27
|
+
type: String,
|
|
28
|
+
default: 'Clear all selections',
|
|
29
|
+
},
|
|
19
30
|
/**
|
|
20
31
|
* Enables selection cleaner element.
|
|
21
32
|
*
|
|
@@ -25,6 +36,15 @@ const CMultiSelect = defineComponent({
|
|
|
25
36
|
type: Boolean,
|
|
26
37
|
default: true,
|
|
27
38
|
},
|
|
39
|
+
/**
|
|
40
|
+
* Appends the dropdown to a specific element. You can pass an HTML element or function that returns a single element.
|
|
41
|
+
*
|
|
42
|
+
* @since 5.7.0
|
|
43
|
+
*/
|
|
44
|
+
container: {
|
|
45
|
+
type: [Object, String],
|
|
46
|
+
default: 'body',
|
|
47
|
+
},
|
|
28
48
|
/**
|
|
29
49
|
* Clear current search on selecting an item.
|
|
30
50
|
*
|
|
@@ -142,18 +162,35 @@ const CMultiSelect = defineComponent({
|
|
|
142
162
|
*/
|
|
143
163
|
resetSelectionOnOptionsChange: Boolean,
|
|
144
164
|
/**
|
|
145
|
-
*
|
|
165
|
+
* The `search` prop determines how the search input element is enabled and behaves. It accepts multiple types to provide flexibility in configuring search behavior:
|
|
166
|
+
*
|
|
167
|
+
* - `true` : Enables the default search input element with standard behavior.
|
|
168
|
+
* - `'external'`: Enables an external search mechanism, possibly integrating with external APIs or services.
|
|
169
|
+
* - `'global'`: When set, the user can perform searches across the entire component, regardless of where their focus is within the component.
|
|
170
|
+
* - `{ external?: boolean; global?: boolean }`: Allows for granular control over the search behavior by specifying individual properties. It is useful when you also want to use external and global search.
|
|
146
171
|
*/
|
|
147
172
|
search: {
|
|
148
|
-
type: [Boolean, String],
|
|
173
|
+
type: [Boolean, String, Object],
|
|
149
174
|
default: true,
|
|
150
175
|
validator: (value) => {
|
|
151
|
-
if (typeof value == 'string') {
|
|
152
|
-
return ['external'].includes(value);
|
|
153
|
-
}
|
|
154
176
|
if (typeof value == 'boolean') {
|
|
155
177
|
return true;
|
|
156
178
|
}
|
|
179
|
+
if (typeof value == 'string') {
|
|
180
|
+
return ['external', 'global'].includes(value);
|
|
181
|
+
}
|
|
182
|
+
if (typeof value === 'object' && value !== null) {
|
|
183
|
+
// Ensure that all keys are either 'external' or 'global'
|
|
184
|
+
const validKeys = ['external', 'global'];
|
|
185
|
+
const keys = Object.keys(value);
|
|
186
|
+
const allKeysValid = keys.every((key) => validKeys.includes(key));
|
|
187
|
+
if (!allKeysValid) {
|
|
188
|
+
return false;
|
|
189
|
+
}
|
|
190
|
+
// Ensure that all values corresponding to the keys are boolean
|
|
191
|
+
const allValuesBoolean = keys.every((key) => typeof value[key] === 'boolean');
|
|
192
|
+
return allValuesBoolean;
|
|
193
|
+
}
|
|
157
194
|
return false;
|
|
158
195
|
},
|
|
159
196
|
},
|
|
@@ -215,6 +252,15 @@ const CMultiSelect = defineComponent({
|
|
|
215
252
|
return ['sm', 'lg'].includes(value);
|
|
216
253
|
},
|
|
217
254
|
},
|
|
255
|
+
/**
|
|
256
|
+
* Generates dropdown menu using Teleport.
|
|
257
|
+
*
|
|
258
|
+
* @since 5.7.0
|
|
259
|
+
*/
|
|
260
|
+
teleport: {
|
|
261
|
+
type: [Boolean],
|
|
262
|
+
default: false,
|
|
263
|
+
},
|
|
218
264
|
/**
|
|
219
265
|
* Add helper text to the component.
|
|
220
266
|
*
|
|
@@ -278,20 +324,16 @@ const CMultiSelect = defineComponent({
|
|
|
278
324
|
],
|
|
279
325
|
setup(props, { attrs, emit, slots }) {
|
|
280
326
|
const multiSelectRef = ref();
|
|
281
|
-
const dropdownRef = ref();
|
|
282
327
|
const nativeSelectRef = ref();
|
|
283
|
-
const togglerRef = ref();
|
|
284
328
|
const searchRef = ref();
|
|
285
|
-
const options = ref(props.options);
|
|
286
|
-
const popper = ref();
|
|
287
329
|
const searchValue = ref('');
|
|
288
330
|
const selected = ref([]);
|
|
289
331
|
const userOptions = ref([]);
|
|
290
|
-
const
|
|
332
|
+
const { dropdownMenuElement, dropdownRefElement, isOpen, closeDropdown, openDropdown, toggleDropdown, updatePopper, } = useDropdownWithPopper();
|
|
291
333
|
provide('nativeSelectRef', nativeSelectRef);
|
|
292
|
-
const filteredOptions = computed(() => flattenOptionsArray(props.search
|
|
293
|
-
? [...options
|
|
294
|
-
: filterOptionsList(searchValue.value, [...options
|
|
334
|
+
const filteredOptions = computed(() => flattenOptionsArray(isExternalSearch(props.search)
|
|
335
|
+
? [...props.options, ...filterOptionsList(searchValue.value, userOptions.value)]
|
|
336
|
+
: filterOptionsList(searchValue.value, [...props.options, ...userOptions.value]), true));
|
|
295
337
|
const flattenedOptions = computed(() => flattenOptionsArray(props.options));
|
|
296
338
|
const userOption = computed(() => {
|
|
297
339
|
if (props.allowCreateOptions &&
|
|
@@ -300,37 +342,38 @@ const CMultiSelect = defineComponent({
|
|
|
300
342
|
}
|
|
301
343
|
return searchRef.value && createOption(String(searchValue.value), flattenedOptions.value);
|
|
302
344
|
});
|
|
303
|
-
watch(
|
|
304
|
-
if (
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
if (_selected) {
|
|
313
|
-
selected.value = selectOptions(_selected, selected.value, deselected);
|
|
314
|
-
}
|
|
345
|
+
watch(flattenedOptions, () => {
|
|
346
|
+
if (props.resetSelectionOnOptionsChange) {
|
|
347
|
+
selected.value = [];
|
|
348
|
+
return;
|
|
349
|
+
}
|
|
350
|
+
const _selected = flattenedOptions.value.filter((option) => option.selected === true);
|
|
351
|
+
const deselected = flattenedOptions.value.filter((option) => option.selected === false);
|
|
352
|
+
if (_selected.length > 0) {
|
|
353
|
+
selected.value = selectOptions(props.multiple, _selected, selected.value, deselected);
|
|
315
354
|
}
|
|
316
355
|
}, { immediate: true });
|
|
317
356
|
watch(selected, () => {
|
|
318
|
-
nativeSelectRef.value
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
357
|
+
nativeSelectRef.value?.dispatchEvent(new Event('change', { bubbles: true }));
|
|
358
|
+
updatePopper();
|
|
359
|
+
});
|
|
360
|
+
watch(() => props.visible, (visible) => {
|
|
361
|
+
if (visible) {
|
|
362
|
+
openDropdown();
|
|
363
|
+
}
|
|
364
|
+
else {
|
|
365
|
+
closeDropdown();
|
|
322
366
|
}
|
|
367
|
+
}, {
|
|
368
|
+
immediate: true,
|
|
323
369
|
});
|
|
324
|
-
watch(
|
|
325
|
-
if (
|
|
370
|
+
watch(isOpen, () => {
|
|
371
|
+
if (isOpen.value) {
|
|
326
372
|
emit('show');
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
setTimeout(() => {
|
|
332
|
-
searchRef.value && searchRef.value.focus();
|
|
333
|
-
}, 100);
|
|
373
|
+
if (props.teleport && dropdownMenuElement.value && dropdownRefElement.value) {
|
|
374
|
+
dropdownMenuElement.value.style.minWidth = `${dropdownRefElement.value.offsetWidth}px`;
|
|
375
|
+
}
|
|
376
|
+
searchRef.value?.focus();
|
|
334
377
|
return;
|
|
335
378
|
}
|
|
336
379
|
emit('hide');
|
|
@@ -338,58 +381,26 @@ const CMultiSelect = defineComponent({
|
|
|
338
381
|
if (searchRef.value) {
|
|
339
382
|
searchRef.value.value = '';
|
|
340
383
|
}
|
|
341
|
-
window.removeEventListener('mouseup', handleMouseUp);
|
|
342
|
-
window.removeEventListener('keyup', handleKeyUp);
|
|
343
|
-
destroyPopper();
|
|
344
384
|
});
|
|
345
|
-
onBeforeUnmount(() => {
|
|
346
|
-
window.removeEventListener('mouseup', handleMouseUp);
|
|
347
|
-
window.removeEventListener('keyup', handleKeyUp);
|
|
348
|
-
});
|
|
349
|
-
const initPopper = () => {
|
|
350
|
-
if (togglerRef.value && dropdownRef.value) {
|
|
351
|
-
popper.value = createPopper(togglerRef.value, dropdownRef.value, {
|
|
352
|
-
placement: isRTL() ? 'bottom-end' : 'bottom-start',
|
|
353
|
-
modifiers: [
|
|
354
|
-
{
|
|
355
|
-
name: 'preventOverflow',
|
|
356
|
-
options: {
|
|
357
|
-
boundary: 'clippingParents',
|
|
358
|
-
},
|
|
359
|
-
},
|
|
360
|
-
{
|
|
361
|
-
name: 'offset',
|
|
362
|
-
options: {
|
|
363
|
-
offset: [0, 2],
|
|
364
|
-
},
|
|
365
|
-
},
|
|
366
|
-
],
|
|
367
|
-
});
|
|
368
|
-
}
|
|
369
|
-
};
|
|
370
|
-
const destroyPopper = () => {
|
|
371
|
-
if (popper.value) {
|
|
372
|
-
popper.value.destroy();
|
|
373
|
-
}
|
|
374
|
-
popper.value = undefined;
|
|
375
|
-
};
|
|
376
|
-
const handleKeyUp = (event) => {
|
|
377
|
-
if (event.key === 'Escape') {
|
|
378
|
-
visible.value = false;
|
|
379
|
-
}
|
|
380
|
-
};
|
|
381
|
-
const handleMouseUp = (event) => {
|
|
382
|
-
if (multiSelectRef.value && multiSelectRef.value.contains(event.target)) {
|
|
383
|
-
return;
|
|
384
|
-
}
|
|
385
|
-
visible.value = false;
|
|
386
|
-
};
|
|
387
385
|
const handleSearchChange = (event) => {
|
|
388
386
|
const target = event.target;
|
|
389
387
|
searchValue.value = target.value.toLowerCase();
|
|
390
388
|
emit('filterChange', target.value);
|
|
391
389
|
};
|
|
392
390
|
const handleSearchKeyDown = (event) => {
|
|
391
|
+
if (!isOpen.value) {
|
|
392
|
+
openDropdown();
|
|
393
|
+
}
|
|
394
|
+
if (event.key === 'ArrowDown' &&
|
|
395
|
+
dropdownMenuElement.value &&
|
|
396
|
+
searchRef.value &&
|
|
397
|
+
searchRef.value.value.length === searchRef.value.selectionStart) {
|
|
398
|
+
event.preventDefault();
|
|
399
|
+
const items = getOptionsList(dropdownMenuElement.value);
|
|
400
|
+
const target = event.target;
|
|
401
|
+
getNextActiveElement(items, target, event.key === 'ArrowDown', !items.includes(target)).focus();
|
|
402
|
+
return;
|
|
403
|
+
}
|
|
393
404
|
if (event.key === 'Enter' && searchValue.value && props.allowCreateOptions) {
|
|
394
405
|
event.preventDefault();
|
|
395
406
|
if (!userOption.value) {
|
|
@@ -418,10 +429,30 @@ const CMultiSelect = defineComponent({
|
|
|
418
429
|
}
|
|
419
430
|
}
|
|
420
431
|
};
|
|
421
|
-
const
|
|
432
|
+
const handleTogglerKeyDown = (event) => {
|
|
433
|
+
if (!isOpen.value && (event.key === 'Enter' || event.key === 'ArrowDown')) {
|
|
434
|
+
event.preventDefault();
|
|
435
|
+
openDropdown();
|
|
436
|
+
return;
|
|
437
|
+
}
|
|
438
|
+
if (isOpen && dropdownMenuElement.value && event.key === 'ArrowDown') {
|
|
439
|
+
event.preventDefault();
|
|
440
|
+
const items = getOptionsList(dropdownMenuElement.value);
|
|
441
|
+
const target = event.target;
|
|
442
|
+
getNextActiveElement(items, target, event.key === 'ArrowDown', !items.includes(target)).focus();
|
|
443
|
+
}
|
|
444
|
+
};
|
|
445
|
+
const handleGlobalSearch = (event) => {
|
|
446
|
+
if (isGlobalSearch(props.search) &&
|
|
447
|
+
searchRef.value &&
|
|
448
|
+
(event.key.length === 1 || event.key === 'Backspace' || event.key === 'Delete')) {
|
|
449
|
+
searchRef.value.focus();
|
|
450
|
+
}
|
|
451
|
+
};
|
|
452
|
+
const handleOnOptionClick = (option) => {
|
|
422
453
|
if (!props.multiple) {
|
|
423
454
|
selected.value = [option];
|
|
424
|
-
|
|
455
|
+
closeDropdown();
|
|
425
456
|
if (searchRef.value) {
|
|
426
457
|
searchRef.value.value = '';
|
|
427
458
|
}
|
|
@@ -445,7 +476,7 @@ const CMultiSelect = defineComponent({
|
|
|
445
476
|
}
|
|
446
477
|
};
|
|
447
478
|
const handleSelectAll = () => {
|
|
448
|
-
selected.value = selectOptions([
|
|
479
|
+
selected.value = selectOptions(props.multiple, [
|
|
449
480
|
...flattenedOptions.value.filter((option) => !option.disabled),
|
|
450
481
|
...userOptions.value,
|
|
451
482
|
], selected.value);
|
|
@@ -487,32 +518,38 @@ const CMultiSelect = defineComponent({
|
|
|
487
518
|
[`form-multi-select-${props.size}`]: props.size,
|
|
488
519
|
'is-invalid': props.invalid,
|
|
489
520
|
'is-valid': props.valid,
|
|
490
|
-
show:
|
|
521
|
+
show: isOpen.value,
|
|
491
522
|
},
|
|
492
523
|
],
|
|
493
|
-
|
|
524
|
+
onKeydown: handleGlobalSearch,
|
|
525
|
+
'aria-expanded': isOpen.value,
|
|
494
526
|
ref: multiSelectRef,
|
|
495
527
|
}, {
|
|
496
528
|
default: () => [
|
|
497
529
|
h('div', {
|
|
498
530
|
class: 'form-multi-select-input-group',
|
|
531
|
+
...(!props.search && !props.disabled && { tabIndex: 0 }),
|
|
499
532
|
onClick: () => {
|
|
500
|
-
|
|
533
|
+
if (!props.disabled) {
|
|
534
|
+
openDropdown();
|
|
535
|
+
}
|
|
501
536
|
},
|
|
502
|
-
|
|
537
|
+
onKeydown: handleTogglerKeyDown,
|
|
538
|
+
ref: dropdownRefElement,
|
|
503
539
|
}, {
|
|
504
540
|
default: () => [
|
|
505
541
|
h(CMultiSelectSelection, {
|
|
542
|
+
disabled: props.disabled,
|
|
506
543
|
multiple: props.multiple,
|
|
507
544
|
placeholder: props.placeholder,
|
|
508
|
-
onRemove: (option) => !props.disabled &&
|
|
545
|
+
onRemove: (option) => !props.disabled && handleOnOptionClick(option),
|
|
509
546
|
search: props.search,
|
|
510
547
|
selected: selected.value,
|
|
511
548
|
selectionType: props.selectionType,
|
|
512
549
|
selectionTypeCounterText: props.selectionTypeCounterText,
|
|
513
550
|
}, {
|
|
514
|
-
default: () => props.search
|
|
515
|
-
h('input', {
|
|
551
|
+
default: () => props.search
|
|
552
|
+
? h('input', {
|
|
516
553
|
type: 'text',
|
|
517
554
|
class: 'form-multi-select-search',
|
|
518
555
|
disabled: props.disabled,
|
|
@@ -536,56 +573,80 @@ const CMultiSelect = defineComponent({
|
|
|
536
573
|
size: searchValue.value.length + 2,
|
|
537
574
|
}),
|
|
538
575
|
ref: searchRef,
|
|
539
|
-
})
|
|
576
|
+
})
|
|
577
|
+
: selected.value.length === 0 &&
|
|
578
|
+
h('span', {
|
|
579
|
+
class: 'form-multi-select-placeholder',
|
|
580
|
+
}, {
|
|
581
|
+
default: () => props.placeholder,
|
|
582
|
+
}),
|
|
540
583
|
}),
|
|
541
584
|
h('div', { class: 'form-multi-select-buttons' }, {
|
|
542
585
|
default: () => [
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
586
|
+
!props.disabled &&
|
|
587
|
+
props.cleaner &&
|
|
588
|
+
selected.value.length > 0 &&
|
|
589
|
+
h('button', {
|
|
590
|
+
class: 'form-multi-select-cleaner',
|
|
591
|
+
onClick: () => handleDeselectAll(),
|
|
592
|
+
type: 'button',
|
|
593
|
+
'aria-label': props.ariaCleanerLabel,
|
|
594
|
+
}),
|
|
548
595
|
h('button', {
|
|
549
596
|
class: 'form-multi-select-indicator',
|
|
550
597
|
onClick: (event) => {
|
|
551
598
|
event.preventDefault();
|
|
552
599
|
event.stopPropagation();
|
|
553
|
-
|
|
600
|
+
if (!props.disabled) {
|
|
601
|
+
toggleDropdown();
|
|
602
|
+
}
|
|
554
603
|
},
|
|
555
604
|
type: 'button',
|
|
605
|
+
...(props.disabled && { tabIndex: -1 }),
|
|
556
606
|
}),
|
|
557
607
|
],
|
|
558
608
|
}),
|
|
559
609
|
],
|
|
560
610
|
}),
|
|
561
|
-
h(
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
ref: dropdownRef,
|
|
611
|
+
h(CConditionalTeleport, {
|
|
612
|
+
container: props.container,
|
|
613
|
+
teleport: props.teleport,
|
|
565
614
|
}, {
|
|
566
|
-
default: () =>
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
615
|
+
default: () => h('div', {
|
|
616
|
+
class: [
|
|
617
|
+
'form-multi-select-dropdown',
|
|
618
|
+
{
|
|
619
|
+
show: props.teleport && isOpen.value,
|
|
620
|
+
},
|
|
621
|
+
],
|
|
622
|
+
onKeydown: handleGlobalSearch,
|
|
623
|
+
role: 'menu',
|
|
624
|
+
ref: dropdownMenuElement,
|
|
625
|
+
}, {
|
|
626
|
+
default: () => [
|
|
627
|
+
props.multiple &&
|
|
628
|
+
props.selectAll &&
|
|
629
|
+
h('button', {
|
|
630
|
+
class: 'form-multi-select-all',
|
|
631
|
+
onClick: () => handleSelectAll(),
|
|
632
|
+
type: 'button',
|
|
633
|
+
}, props.selectAllLabel),
|
|
634
|
+
h(CMultiSelectOptions, {
|
|
635
|
+
loading: props.loading,
|
|
636
|
+
onOptionClick: (option) => handleOnOptionClick(option),
|
|
637
|
+
options: filteredOptions.value.length === 0 && props.allowCreateOptions
|
|
638
|
+
? userOption.value || []
|
|
639
|
+
: filteredOptions.value,
|
|
640
|
+
optionsMaxHeight: props.optionsMaxHeight,
|
|
641
|
+
optionsStyle: props.optionsStyle,
|
|
642
|
+
scopedSlots: slots,
|
|
643
|
+
searchNoResultsLabel: props.searchNoResultsLabel,
|
|
644
|
+
selected: selected.value,
|
|
645
|
+
virtualScroller: props.virtualScroller,
|
|
646
|
+
visibleItems: props.visibleItems,
|
|
647
|
+
}),
|
|
648
|
+
],
|
|
649
|
+
}),
|
|
589
650
|
}),
|
|
590
651
|
],
|
|
591
652
|
}),
|