@milaboratories/uikit 2.10.15 → 2.10.16
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/.oxfmtrc.json +4 -0
- package/.oxlintrc.json +3 -0
- package/.prettierrc +1 -1
- package/.turbo/turbo-build.log +190 -190
- package/.turbo/turbo-formatter$colon$check.log +12 -0
- package/.turbo/turbo-linter$colon$check.log +10 -0
- package/.turbo/{turbo-type-check.log → turbo-types$colon$check.log} +2 -2
- package/CHANGELOG.md +9 -0
- package/build.browser-lib.config.js +6 -6
- package/dist/base/BtnBase.vue.js.map +1 -1
- package/dist/colors/color.d.ts.map +1 -1
- package/dist/colors/color.js.map +1 -1
- package/dist/colors/gradient.d.ts.map +1 -1
- package/dist/colors/gradient.js.map +1 -1
- package/dist/colors/palette.js.map +1 -1
- package/dist/components/ContextProvider.vue.js.map +1 -1
- package/dist/components/DataTable/BaseCellComponent.vue.js.map +1 -1
- package/dist/components/DataTable/ColumnCaret.vue.js.map +1 -1
- package/dist/components/DataTable/ColumnsCommandMenu.vue.d.ts.map +1 -1
- package/dist/components/DataTable/ColumnsCommandMenu.vue.js.map +1 -1
- package/dist/components/DataTable/RowsCommandMenu.vue.d.ts.map +1 -1
- package/dist/components/DataTable/RowsCommandMenu.vue.js.map +1 -1
- package/dist/components/DataTable/TScroll.vue.d.ts.map +1 -1
- package/dist/components/DataTable/TScroll.vue.js +6 -1
- package/dist/components/DataTable/TScroll.vue.js.map +1 -1
- package/dist/components/DataTable/TableComponent.vue.d.ts.map +1 -1
- package/dist/components/DataTable/TableComponent.vue.js.map +1 -1
- package/dist/components/DataTable/TdCell.vue.d.ts.map +1 -1
- package/dist/components/DataTable/TdCell.vue.js +3 -1
- package/dist/components/DataTable/TdCell.vue.js.map +1 -1
- package/dist/components/DataTable/ThCell.vue.d.ts.map +1 -1
- package/dist/components/DataTable/ThCell.vue.js.map +1 -1
- package/dist/components/DataTable/TrBody.vue.d.ts.map +1 -1
- package/dist/components/DataTable/TrBody.vue.js.map +1 -1
- package/dist/components/DataTable/adapters/AsyncData.d.ts +1 -1
- package/dist/components/DataTable/adapters/AsyncData.js.map +1 -1
- package/dist/components/DataTable/adapters/RawData.d.ts +1 -1
- package/dist/components/DataTable/adapters/RawData.js.map +1 -1
- package/dist/components/DataTable/assets/TableIcon.vue.d.ts.map +1 -1
- package/dist/components/DataTable/assets/TableIcon.vue.js.map +1 -1
- package/dist/components/DataTable/composition/useColumn.d.ts.map +1 -1
- package/dist/components/DataTable/composition/useColumn.js.map +1 -1
- package/dist/components/DataTable/composition/useMouseUp.js.map +1 -1
- package/dist/components/DataTable/composition/useResize.js.map +1 -1
- package/dist/components/DataTable/composition/useTableColumns.js.map +1 -1
- package/dist/components/DataTable/composition/useTableRows.js.map +1 -1
- package/dist/components/DataTable/domain.d.ts +1 -1
- package/dist/components/DataTable/domain.d.ts.map +1 -1
- package/dist/components/DataTable/domain.js.map +1 -1
- package/dist/components/DataTable/index.d.ts +1 -1
- package/dist/components/DataTable/index.d.ts.map +1 -1
- package/dist/components/DataTable/index.js +5 -1
- package/dist/components/DataTable/index.js.map +1 -1
- package/dist/components/DataTable/keys.js.map +1 -1
- package/dist/components/DataTable/state.d.ts.map +1 -1
- package/dist/components/DataTable/state.js +10 -4
- package/dist/components/DataTable/state.js.map +1 -1
- package/dist/components/DataTable/types.d.ts +3 -3
- package/dist/components/DropdownListItem.vue.d.ts +1 -1
- package/dist/components/DropdownListItem.vue.d.ts.map +1 -1
- package/dist/components/DropdownListItem.vue.js.map +1 -1
- package/dist/components/GridTable/domain.d.ts +1 -1
- package/dist/components/GridTable/domain.d.ts.map +1 -1
- package/dist/components/GridTable/types.d.ts +4 -4
- package/dist/components/GridTable/types.d.ts.map +1 -1
- package/dist/components/GridTable/useColumn.d.ts.map +1 -1
- package/dist/components/HScroll.vue.js.map +1 -1
- package/dist/components/InputRange.vue.d.ts.map +1 -1
- package/dist/components/InputRange.vue.js +3 -1
- package/dist/components/InputRange.vue.js.map +1 -1
- package/dist/components/LongText.vue.d.ts.map +1 -1
- package/dist/components/LongText.vue.js +9 -7
- package/dist/components/LongText.vue.js.map +1 -1
- package/dist/components/PlAccordion/ExpandTransition.vue.d.ts.map +1 -1
- package/dist/components/PlAccordion/ExpandTransition.vue2.js.map +1 -1
- package/dist/components/PlAccordion/PlAccordion.vue.js.map +1 -1
- package/dist/components/PlAccordion/PlAccordionSection.vue2.js.map +1 -1
- package/dist/components/PlAlert/PlAlert.vue.d.ts.map +1 -1
- package/dist/components/PlAlert/PlAlert.vue.js.map +1 -1
- package/dist/components/PlAutocomplete/PlAutocomplete.vue.d.ts.map +1 -1
- package/dist/components/PlAutocomplete/PlAutocomplete.vue.js +40 -19
- package/dist/components/PlAutocomplete/PlAutocomplete.vue.js.map +1 -1
- package/dist/components/PlAutocompleteMulti/PlAutocompleteMulti.vue.d.ts +2 -2
- package/dist/components/PlAutocompleteMulti/PlAutocompleteMulti.vue.d.ts.map +1 -1
- package/dist/components/PlAutocompleteMulti/PlAutocompleteMulti.vue.js +22 -12
- package/dist/components/PlAutocompleteMulti/PlAutocompleteMulti.vue.js.map +1 -1
- package/dist/components/PlAutocompleteMulti/index.d.ts +1 -1
- package/dist/components/PlAutocompleteMulti/index.d.ts.map +1 -1
- package/dist/components/PlBtnAccent/PlBtnAccent.vue.js.map +1 -1
- package/dist/components/PlBtnDanger/PlBtnDanger.vue.js.map +1 -1
- package/dist/components/PlBtnGhost/PlBtnGhost.vue.js.map +1 -1
- package/dist/components/PlBtnGroup/PlBtnGroup.vue.js.map +1 -1
- package/dist/components/PlBtnLink/PlBtnLink.vue.d.ts.map +1 -1
- package/dist/components/PlBtnLink/PlBtnLink.vue.js.map +1 -1
- package/dist/components/PlBtnPrimary/PlBtnPrimary.vue.js.map +1 -1
- package/dist/components/PlBtnSecondary/PlBtnSecondary.vue.js.map +1 -1
- package/dist/components/PlBtnSplit/PlBtnSplit.vue.d.ts.map +1 -1
- package/dist/components/PlBtnSplit/PlBtnSplit.vue.js +6 -4
- package/dist/components/PlBtnSplit/PlBtnSplit.vue.js.map +1 -1
- package/dist/components/PlChartHistogram/PlChartHistogram.vue.d.ts.map +1 -1
- package/dist/components/PlChartHistogram/PlChartHistogram.vue2.js +8 -1
- package/dist/components/PlChartHistogram/PlChartHistogram.vue2.js.map +1 -1
- package/dist/components/PlChartHistogram/PlChartHistogram.vue3.js +4 -4
- package/dist/components/PlChartHistogram/createGridlines.d.ts.map +1 -1
- package/dist/components/PlChartHistogram/createGridlines.js +5 -1
- package/dist/components/PlChartHistogram/createGridlines.js.map +1 -1
- package/dist/components/PlChartHistogram/createLabels.d.ts.map +1 -1
- package/dist/components/PlChartHistogram/createLabels.js.map +1 -1
- package/dist/components/PlChartHistogram/createSvgContainer.js.map +1 -1
- package/dist/components/PlChartHistogram/drawBins.d.ts.map +1 -1
- package/dist/components/PlChartHistogram/drawBins.js.map +1 -1
- package/dist/components/PlChartHistogram/drawThreshold.js.map +1 -1
- package/dist/components/PlChartHistogram/histogram.d.ts.map +1 -1
- package/dist/components/PlChartHistogram/histogram.js +6 -2
- package/dist/components/PlChartHistogram/histogram.js.map +1 -1
- package/dist/components/PlChartHistogram/normalizeBins.js.map +1 -1
- package/dist/components/PlChartHistogram/types.d.ts +2 -2
- package/dist/components/PlChartHistogram/types.d.ts.map +1 -1
- package/dist/components/PlChartStackedBar/Legends.vue2.js.map +1 -1
- package/dist/components/PlChartStackedBar/PlChartStackedBar.vue.d.ts.map +1 -1
- package/dist/components/PlChartStackedBar/PlChartStackedBar.vue2.js +6 -4
- package/dist/components/PlChartStackedBar/PlChartStackedBar.vue2.js.map +1 -1
- package/dist/components/PlChartStackedBar/PlChartStackedBarCompact.vue2.js.map +1 -1
- package/dist/components/PlChartStackedBar/StackedRow.vue.d.ts.map +1 -1
- package/dist/components/PlChartStackedBar/StackedRow.vue2.js.map +1 -1
- package/dist/components/PlChartStackedBar/StackedRowCompact.vue.d.ts.map +1 -1
- package/dist/components/PlChartStackedBar/StackedRowCompact.vue2.js.map +1 -1
- package/dist/components/PlCheckbox/PlCheckbox.vue.js.map +1 -1
- package/dist/components/PlCheckbox/PlCheckboxBase.vue.d.ts.map +1 -1
- package/dist/components/PlCheckbox/PlCheckboxBase.vue.js.map +1 -1
- package/dist/components/PlCheckboxGroup/PlCheckboxGroup.vue.d.ts.map +1 -1
- package/dist/components/PlCheckboxGroup/PlCheckboxGroup.vue.js +8 -2
- package/dist/components/PlCheckboxGroup/PlCheckboxGroup.vue.js.map +1 -1
- package/dist/components/PlChip/PlChip.vue.d.ts.map +1 -1
- package/dist/components/PlChip/PlChip.vue.js.map +1 -1
- package/dist/components/PlClipboard/PlClipboard.vue2.js.map +1 -1
- package/dist/components/PlConfirmDialog.vue.d.ts.map +1 -1
- package/dist/components/PlConfirmDialog.vue.js.map +1 -1
- package/dist/components/PlDialogModal/PlDialogModal.vue.d.ts.map +1 -1
- package/dist/components/PlDialogModal/PlDialogModal.vue.js +4 -1
- package/dist/components/PlDialogModal/PlDialogModal.vue.js.map +1 -1
- package/dist/components/PlDropdown/OptionList.vue.d.ts +1 -1
- package/dist/components/PlDropdown/OptionList.vue.d.ts.map +1 -1
- package/dist/components/PlDropdown/OptionList.vue.js.map +1 -1
- package/dist/components/PlDropdown/PlDropdown.vue.d.ts.map +1 -1
- package/dist/components/PlDropdown/PlDropdown.vue.js.map +1 -1
- package/dist/components/PlDropdown/types.d.ts.map +1 -1
- package/dist/components/PlDropdown/useGroupBy.d.ts.map +1 -1
- package/dist/components/PlDropdown/useGroupBy.js.map +1 -1
- package/dist/components/PlDropdownLegacy/PlDropdownLegacy.vue.d.ts.map +1 -1
- package/dist/components/PlDropdownLegacy/PlDropdownLegacy.vue.js.map +1 -1
- package/dist/components/PlDropdownLine/PlDropdownLine.vue.d.ts +1 -1
- package/dist/components/PlDropdownLine/PlDropdownLine.vue.d.ts.map +1 -1
- package/dist/components/PlDropdownLine/PlDropdownLine.vue.js +5 -3
- package/dist/components/PlDropdownLine/PlDropdownLine.vue.js.map +1 -1
- package/dist/components/PlDropdownLine/ResizableInput.vue.d.ts.map +1 -1
- package/dist/components/PlDropdownLine/ResizableInput.vue.js.map +1 -1
- package/dist/components/PlDropdownMulti/PlDropdownMulti.vue.d.ts.map +1 -1
- package/dist/components/PlDropdownMulti/PlDropdownMulti.vue.js.map +1 -1
- package/dist/components/PlDropdownMultiRef/PlDropdownMultiRef.vue.js.map +1 -1
- package/dist/components/PlDropdownRef/PlDropdownRef.vue.js.map +1 -1
- package/dist/components/PlEditableTitle/PlEditableTitle.vue.d.ts.map +1 -1
- package/dist/components/PlEditableTitle/PlEditableTitle.vue.js.map +1 -1
- package/dist/components/PlElementList/PlElementList.vue.d.ts.map +1 -1
- package/dist/components/PlElementList/PlElementList.vue2.js +9 -2
- package/dist/components/PlElementList/PlElementList.vue2.js.map +1 -1
- package/dist/components/PlElementList/PlElementList.vue3.js +4 -4
- package/dist/components/PlElementList/PlElementListItem.vue.d.ts.map +1 -1
- package/dist/components/PlElementList/PlElementListItem.vue2.js +25 -13
- package/dist/components/PlElementList/PlElementListItem.vue2.js.map +1 -1
- package/dist/components/PlElementList/PlElementListItem.vue3.js +20 -20
- package/dist/components/PlElementList/utils.d.ts.map +1 -1
- package/dist/components/PlElementList/utils.js +3 -1
- package/dist/components/PlElementList/utils.js.map +1 -1
- package/dist/components/PlErrorAlert/PlErrorAlert.vue2.js.map +1 -1
- package/dist/components/PlErrorBoundary/PlErrorBoundary.vue.d.ts.map +1 -1
- package/dist/components/PlErrorBoundary/PlErrorBoundary.vue.js +4 -1
- package/dist/components/PlErrorBoundary/PlErrorBoundary.vue.js.map +1 -1
- package/dist/components/PlFileDialog/Local.vue.d.ts.map +1 -1
- package/dist/components/PlFileDialog/Local.vue.js +6 -2
- package/dist/components/PlFileDialog/Local.vue.js.map +1 -1
- package/dist/components/PlFileDialog/PlFileDialog.vue.d.ts.map +1 -1
- package/dist/components/PlFileDialog/PlFileDialog.vue.js +3 -1
- package/dist/components/PlFileDialog/PlFileDialog.vue.js.map +1 -1
- package/dist/components/PlFileDialog/Remote.vue.d.ts.map +1 -1
- package/dist/components/PlFileDialog/Remote.vue.js +6 -2
- package/dist/components/PlFileDialog/Remote.vue.js.map +1 -1
- package/dist/components/PlFileDialog/Shortcuts.vue2.js.map +1 -1
- package/dist/components/PlFileDialog/Shortcuts.vue3.js +4 -4
- package/dist/components/PlFileDialog/pl-file-dialog.module.scss.js +21 -21
- package/dist/components/PlFileDialog/remote.js.map +1 -1
- package/dist/components/PlFileDialog/utils.js.map +1 -1
- package/dist/components/PlFileInput/PlFileInput.vue.d.ts.map +1 -1
- package/dist/components/PlFileInput/PlFileInput.vue.js.map +1 -1
- package/dist/components/PlIcon16/PlIcon16.vue2.js.map +1 -1
- package/dist/components/PlIcon24/PlIcon24.vue2.js.map +1 -1
- package/dist/components/PlLoaderCircular/PlLoaderCircular.vue.d.ts +1 -1
- package/dist/components/PlLoaderCircular/PlLoaderCircular.vue.d.ts.map +1 -1
- package/dist/components/PlLoaderCircular/PlLoaderCircular.vue.js +5 -1
- package/dist/components/PlLoaderCircular/PlLoaderCircular.vue.js.map +1 -1
- package/dist/components/PlLoaderLogo.vue.d.ts.map +1 -1
- package/dist/components/PlLoaderLogo.vue2.js +8 -8
- package/dist/components/PlLoaderLogo.vue2.js.map +1 -1
- package/dist/components/PlLogView/PlLogView.vue.d.ts.map +1 -1
- package/dist/components/PlLogView/PlLogView.vue.js +11 -7
- package/dist/components/PlLogView/PlLogView.vue.js.map +1 -1
- package/dist/components/PlLogView/useLogHandle.d.ts.map +1 -1
- package/dist/components/PlLogView/useLogHandle.js +16 -3
- package/dist/components/PlLogView/useLogHandle.js.map +1 -1
- package/dist/components/PlNotificationAlert/PlNotificationAlert.vue.d.ts +1 -1
- package/dist/components/PlNotificationAlert/PlNotificationAlert.vue.d.ts.map +1 -1
- package/dist/components/PlNotificationAlert/PlNotificationAlert.vue.js.map +1 -1
- package/dist/components/PlNumberField/PlNumberField.vue.d.ts.map +1 -1
- package/dist/components/PlNumberField/PlNumberField.vue.js +4 -6
- package/dist/components/PlNumberField/PlNumberField.vue.js.map +1 -1
- package/dist/components/PlNumberField/parseNumber.d.ts.map +1 -1
- package/dist/components/PlNumberField/parseNumber.js.map +1 -1
- package/dist/components/PlProgressBar/PlProgressBar.vue.js.map +1 -1
- package/dist/components/PlProgressCell/PlProgressCell.vue.d.ts.map +1 -1
- package/dist/components/PlProgressCell/PlProgressCell.vue.js +11 -2
- package/dist/components/PlProgressCell/PlProgressCell.vue.js.map +1 -1
- package/dist/components/PlProgressCell/types.d.ts +1 -1
- package/dist/components/PlRadio/PlRadio.vue2.js.map +1 -1
- package/dist/components/PlRadio/PlRadio.vue3.js +3 -3
- package/dist/components/PlRadio/PlRadioGroup.vue2.js.map +1 -1
- package/dist/components/PlRadio/PlRadioGroup.vue3.js +6 -6
- package/dist/components/PlRadio/keys.js.map +1 -1
- package/dist/components/PlSearchField/PlSearchField.vue.d.ts.map +1 -1
- package/dist/components/PlSearchField/PlSearchField.vue2.js.map +1 -1
- package/dist/components/PlSectionSeparator/PlSectionSeparator.vue2.js.map +1 -1
- package/dist/components/PlSectionSeparator/PlSectionSeparator.vue3.js +1 -1
- package/dist/components/PlSidebar/PlSidebarGroup.vue2.js.map +1 -1
- package/dist/components/PlSidebar/PlSidebarGroup.vue3.js +6 -6
- package/dist/components/PlSidebar/PlSidebarItem.vue.d.ts +6 -6
- package/dist/components/PlSidebar/PlSidebarItem.vue.d.ts.map +1 -1
- package/dist/components/PlSidebar/PlSidebarItem.vue2.js.map +1 -1
- package/dist/components/PlSidebar/PlSidebarItem.vue3.js +8 -8
- package/dist/components/PlSlideModal/PlPureSlideModal.vue.d.ts.map +1 -1
- package/dist/components/PlSlideModal/PlPureSlideModal.vue.js.map +1 -1
- package/dist/components/PlSlideModal/PlSlideModal.vue.d.ts.map +1 -1
- package/dist/components/PlSlideModal/PlSlideModal.vue2.js.map +1 -1
- package/dist/components/PlSlideModal/props.d.ts +8 -8
- package/dist/components/PlSlideModal/props.d.ts.map +1 -1
- package/dist/components/PlSlideModal/props.js.map +1 -1
- package/dist/components/PlSplash/PlSplash.vue.d.ts +1 -1
- package/dist/components/PlSplash/PlSplash.vue.d.ts.map +1 -1
- package/dist/components/PlSplash/PlSplash.vue.js +4 -1
- package/dist/components/PlSplash/PlSplash.vue.js.map +1 -1
- package/dist/components/PlStatusTag/PlStatusTag.vue.d.ts.map +1 -1
- package/dist/components/PlStatusTag/PlStatusTag.vue.js.map +1 -1
- package/dist/components/PlStatusTag/types.d.ts +1 -1
- package/dist/components/PlSvg/PlSvg.vue.d.ts.map +1 -1
- package/dist/components/PlSvg/PlSvg.vue2.js +7 -2
- package/dist/components/PlSvg/PlSvg.vue2.js.map +1 -1
- package/dist/components/PlSvg/registry.d.ts.map +1 -1
- package/dist/components/PlSvg/registry.js.map +1 -1
- package/dist/components/PlTabs/PlTabs.vue.d.ts.map +1 -1
- package/dist/components/PlTabs/PlTabs.vue.js +4 -1
- package/dist/components/PlTabs/PlTabs.vue.js.map +1 -1
- package/dist/components/PlTabs/Tab.vue.js.map +1 -1
- package/dist/components/PlTextArea/PlTextArea.vue.js.map +1 -1
- package/dist/components/PlTextField/PlTextField.vue.d.ts.map +1 -1
- package/dist/components/PlTextField/PlTextField.vue.js +3 -1
- package/dist/components/PlTextField/PlTextField.vue.js.map +1 -1
- package/dist/components/PlToggleSwitch/PlToggleSwitch.vue.js.map +1 -1
- package/dist/components/PlTooltip/Beak.vue.d.ts.map +1 -1
- package/dist/components/PlTooltip/Beak.vue.js.map +1 -1
- package/dist/components/PlTooltip/PlTooltip.vue.d.ts.map +1 -1
- package/dist/components/PlTooltip/PlTooltip.vue.js.map +1 -1
- package/dist/components/PlTooltip/useTooltipPosition.d.ts +1 -1
- package/dist/components/PlTooltip/useTooltipPosition.js.map +1 -1
- package/dist/components/Scrollable.vue.d.ts.map +1 -1
- package/dist/components/Scrollable.vue.js +10 -1
- package/dist/components/Scrollable.vue.js.map +1 -1
- package/dist/components/Slider.vue.d.ts.map +1 -1
- package/dist/components/Slider.vue.js +3 -1
- package/dist/components/Slider.vue.js.map +1 -1
- package/dist/components/SliderRange.vue.d.ts.map +1 -1
- package/dist/components/SliderRange.vue.js +15 -3
- package/dist/components/SliderRange.vue.js.map +1 -1
- package/dist/components/SliderRangeTriple.vue.d.ts.map +1 -1
- package/dist/components/SliderRangeTriple.vue.js +7 -1
- package/dist/components/SliderRangeTriple.vue.js.map +1 -1
- package/dist/components/TabItem.vue.js.map +1 -1
- package/dist/components/ThemeSwitcher.vue.js.map +1 -1
- package/dist/components/TransitionSlidePanel.vue.js.map +1 -1
- package/dist/components/VScroll.vue.js.map +1 -1
- package/dist/components/contextMenu/Menu.vue.js +1 -1
- package/dist/components/contextMenu/Menu.vue2.js.map +1 -1
- package/dist/components/contextMenu/index.js.map +1 -1
- package/dist/composition/computedCached.js.map +1 -1
- package/dist/composition/filters/metadata.d.ts.map +1 -1
- package/dist/composition/filters/metadata.js.map +1 -1
- package/dist/composition/filters/types.d.ts +1 -19
- package/dist/composition/filters/types.d.ts.map +1 -1
- package/dist/composition/useClickOutside.js.map +1 -1
- package/dist/composition/useComponentProp.d.ts.map +1 -1
- package/dist/composition/useComponentProp.js.map +1 -1
- package/dist/composition/useConfirm.js.map +1 -1
- package/dist/composition/useDraggable.d.ts.map +1 -1
- package/dist/composition/useDraggable.js.map +1 -1
- package/dist/composition/useEventListener.d.ts.map +1 -1
- package/dist/composition/useEventListener.js +11 -7
- package/dist/composition/useEventListener.js.map +1 -1
- package/dist/composition/useFilteredList.d.ts.map +1 -1
- package/dist/composition/useFilteredList.js.map +1 -1
- package/dist/composition/useFormState.js.map +1 -1
- package/dist/composition/useHover.d.ts.map +1 -1
- package/dist/composition/useHover.js.map +1 -1
- package/dist/composition/useInterval.js.map +1 -1
- package/dist/composition/useLocalStorage.js.map +1 -1
- package/dist/composition/useMouse.js.map +1 -1
- package/dist/composition/useMouseCapture.d.ts.map +1 -1
- package/dist/composition/useMouseCapture.js.map +1 -1
- package/dist/composition/usePollingQuery.d.ts.map +1 -1
- package/dist/composition/usePollingQuery.js +4 -1
- package/dist/composition/usePollingQuery.js.map +1 -1
- package/dist/composition/usePosition.d.ts.map +1 -1
- package/dist/composition/usePosition.js.map +1 -1
- package/dist/composition/useQuery.js.map +1 -1
- package/dist/composition/useResizeObserver.d.ts.map +1 -1
- package/dist/composition/useResizeObserver.js.map +1 -1
- package/dist/composition/useRipple.js.map +1 -1
- package/dist/composition/useScroll.d.ts.map +1 -1
- package/dist/composition/useScroll.js.map +1 -1
- package/dist/composition/useSliderBreakpoints.d.ts.map +1 -1
- package/dist/composition/useSliderBreakpoints.js.map +1 -1
- package/dist/composition/useSortable.js.map +1 -1
- package/dist/composition/useSortable2.d.ts.map +1 -1
- package/dist/composition/useSortable2.js +8 -5
- package/dist/composition/useSortable2.js.map +1 -1
- package/dist/composition/useTheme.d.ts +1 -1
- package/dist/composition/useTheme.d.ts.map +1 -1
- package/dist/composition/useTheme.js.map +1 -1
- package/dist/composition/useTransformedModel.d.ts.map +1 -1
- package/dist/composition/useTransformedModel.js.map +1 -1
- package/dist/composition/useWatchFetch.js.map +1 -1
- package/dist/composition/utils.js.map +1 -1
- package/dist/composition/watchCached.d.ts.map +1 -1
- package/dist/composition/watchCached.js.map +1 -1
- package/dist/demo-site-data/all-css-variables.d.ts.map +1 -1
- package/dist/demo-site-data/all-css-variables.js +52 -13
- package/dist/demo-site-data/all-css-variables.js.map +1 -1
- package/dist/generated/icons-16.js.map +1 -1
- package/dist/generated/icons-24.js.map +1 -1
- package/dist/global/resizeObserver.js.map +1 -1
- package/dist/helpers/dom.d.ts.map +1 -1
- package/dist/helpers/dom.js.map +1 -1
- package/dist/helpers/downloadContent.d.ts +1 -1
- package/dist/helpers/downloadContent.d.ts.map +1 -1
- package/dist/helpers/downloadContent.js +3 -1
- package/dist/helpers/downloadContent.js.map +1 -1
- package/dist/helpers/error.js +4 -1
- package/dist/helpers/error.js.map +1 -1
- package/dist/helpers/functions.d.ts.map +1 -1
- package/dist/helpers/functions.js.map +1 -1
- package/dist/helpers/objects.js.map +1 -1
- package/dist/helpers/utils.d.ts.map +1 -1
- package/dist/helpers/utils.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/layout/PlBlockPage/PlBlockPage.vue.d.ts.map +1 -1
- package/dist/layout/PlBlockPage/PlBlockPage.vue2.js.map +1 -1
- package/dist/layout/PlBlockPage/PlBlockPage.vue3.js +4 -4
- package/dist/layout/PlBlockPage/PlBlockPageTitleTeleportTarget.js.map +1 -1
- package/dist/layout/PlBlockPage/usePlBlockPageTitleTeleportTarget.js.map +1 -1
- package/dist/layout/PlContainer/PlContainer.vue.d.ts.map +1 -1
- package/dist/layout/PlContainer/PlContainer.vue.js.map +1 -1
- package/dist/layout/PlGrid/PlGrid.vue.js.map +1 -1
- package/dist/layout/PlPlaceholder/PlPlaceholder.vue.d.ts +1 -1
- package/dist/layout/PlPlaceholder/PlPlaceholder.vue.d.ts.map +1 -1
- package/dist/layout/PlPlaceholder/PlPlaceholder.vue2.js +8 -8
- package/dist/layout/PlPlaceholder/PlPlaceholder.vue2.js.map +1 -1
- package/dist/layout/PlPlaceholder/PlPlaceholder.vue3.js +15 -15
- package/dist/layout/PlPlaceholder/index.d.ts +1 -1
- package/dist/layout/PlPlaceholder/index.d.ts.map +1 -1
- package/dist/layout/PlPlaceholder/index.js.map +1 -1
- package/dist/layout/PlPlaceholder/paint-worklet.js +6 -6
- package/dist/layout/PlPlaceholder/paint-worklet.js.map +1 -1
- package/dist/layout/PlRow/PlRow.vue.js.map +1 -1
- package/dist/layout/PlSpacer/PlSpacer.vue.js.map +1 -1
- package/dist/types.d.ts +5 -5
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/DoubleContour.vue.d.ts.map +1 -1
- package/dist/utils/DoubleContour.vue.js.map +1 -1
- package/dist/utils/DropdownOverlay/DropdownOverlay.vue.js.map +1 -1
- package/dist/utils/PlCloseModalBtn.vue.js.map +1 -1
- package/dist/utils/TextLabel.vue.js.map +1 -1
- package/dist/utils/useLabelNotch.d.ts.map +1 -1
- package/dist/utils/useLabelNotch.js.map +1 -1
- package/dist/utils/useValidation.js.map +1 -1
- package/package.json +23 -24
- package/scripts/parse-icons.js +20 -14
- package/src/__tests__/compositions/usePollingQuery.spec.ts +163 -165
- package/src/__tests__/compositions/useValidation.spec.ts +41 -28
- package/src/__tests__/setup.ts +1 -1
- package/src/__tests__/use-debounce-fn.test.ts +15 -11
- package/src/assets/animations.scss +5 -5
- package/src/assets/base-btn.scss +4 -3
- package/src/assets/base.scss +11 -8
- package/src/assets/common.scss +43 -43
- package/src/assets/dropdown-list-item.scss +53 -53
- package/src/assets/dropdown-tab-item.scss +4 -4
- package/src/assets/icons.scss +1 -1
- package/src/assets/input-range.scss +26 -27
- package/src/assets/layout.scss +1 -1
- package/src/assets/masks.scss +1 -1
- package/src/assets/mixins.scss +9 -17
- package/src/assets/scroll.scss +6 -6
- package/src/assets/slider.scss +6 -5
- package/src/assets/sortable.scss +1 -1
- package/src/assets/theme-switcher.scss +2 -2
- package/src/assets/typography.scss +16 -13
- package/src/assets/ui.scss +19 -19
- package/src/assets/utils.scss +19 -19
- package/src/assets/variables.scss +9 -10
- package/src/base/BtnBase.vue +6 -6
- package/src/colors/__tests__/colors.spec.ts +12 -10
- package/src/colors/color.ts +17 -12
- package/src/colors/gradient.ts +20 -17
- package/src/colors/index.ts +3 -3
- package/src/colors/palette.ts +194 -194
- package/src/components/ContextProvider.vue +1 -1
- package/src/components/DataTable/BaseCellComponent.vue +8 -8
- package/src/components/DataTable/ColumnCaret.vue +3 -3
- package/src/components/DataTable/ColumnsCommandMenu.vue +5 -3
- package/src/components/DataTable/RowsCommandMenu.vue +5 -3
- package/src/components/DataTable/TScroll.vue +11 -6
- package/src/components/DataTable/TableComponent.vue +41 -24
- package/src/components/DataTable/TdCell.vue +28 -15
- package/src/components/DataTable/ThCell.vue +14 -9
- package/src/components/DataTable/TrBody.vue +11 -4
- package/src/components/DataTable/adapters/AsyncData.ts +4 -4
- package/src/components/DataTable/adapters/RawData.ts +5 -5
- package/src/components/DataTable/assets/TableIcon.vue +6 -1
- package/src/components/DataTable/assets/data-table-style.scss +12 -10
- package/src/components/DataTable/composition/useColumn.ts +8 -5
- package/src/components/DataTable/composition/useMouseUp.ts +3 -3
- package/src/components/DataTable/composition/useResize.ts +16 -16
- package/src/components/DataTable/composition/useTableColumns.ts +8 -8
- package/src/components/DataTable/composition/useTableRows.ts +5 -5
- package/src/components/DataTable/domain.ts +8 -4
- package/src/components/DataTable/index.ts +26 -13
- package/src/components/DataTable/keys.ts +3 -3
- package/src/components/DataTable/state.ts +38 -18
- package/src/components/DataTable/types.ts +10 -10
- package/src/components/DropdownListItem.vue +18 -15
- package/src/components/GridTable/TdCell.vue +7 -7
- package/src/components/GridTable/ThCell.vue +14 -9
- package/src/components/GridTable/assets/TableIcon.vue +6 -1
- package/src/components/GridTable/assets/style.scss +6 -6
- package/src/components/GridTable/constants.ts +10 -10
- package/src/components/GridTable/domain.ts +8 -4
- package/src/components/GridTable/getColumnPositions.ts +4 -4
- package/src/components/GridTable/index.vue +41 -32
- package/src/components/GridTable/types.ts +14 -11
- package/src/components/GridTable/useColumn.ts +8 -5
- package/src/components/GridTable/useMouseUp.ts +3 -3
- package/src/components/GridTable/useResize.ts +13 -13
- package/src/components/HScroll.vue +10 -10
- package/src/components/InputRange.vue +9 -7
- package/src/components/LongText.vue +7 -5
- package/src/components/PlAccordion/ExpandTransition.vue +12 -6
- package/src/components/PlAccordion/PlAccordion.vue +3 -3
- package/src/components/PlAccordion/PlAccordionSection.vue +9 -9
- package/src/components/PlAccordion/index.ts +2 -2
- package/src/components/PlAlert/PlAlert.vue +21 -10
- package/src/components/PlAlert/index.ts +1 -1
- package/src/components/PlAlert/pl-alert.scss +1 -1
- package/src/components/PlAutocomplete/PlAutocomplete.vue +142 -82
- package/src/components/PlAutocomplete/__tests__/PlAutocomplete.spec.ts +19 -17
- package/src/components/PlAutocomplete/index.ts +1 -1
- package/src/components/PlAutocomplete/pl-autocomplete.scss +9 -7
- package/src/components/PlAutocompleteMulti/PlAutocompleteMulti.vue +92 -62
- package/src/components/PlAutocompleteMulti/__tests__/PlAutocompleteMulti.spec.ts +17 -16
- package/src/components/PlAutocompleteMulti/index.ts +4 -1
- package/src/components/PlAutocompleteMulti/pl-autocomplete-multi.scss +8 -6
- package/src/components/PlBtnAccent/PlBtnAccent.vue +4 -4
- package/src/components/PlBtnAccent/index.ts +1 -1
- package/src/components/PlBtnDanger/PlBtnDanger.vue +4 -4
- package/src/components/PlBtnDanger/index.ts +1 -1
- package/src/components/PlBtnDanger/pl-btn-danger.scss +1 -1
- package/src/components/PlBtnGhost/PlBtnGhost.vue +8 -8
- package/src/components/PlBtnGhost/index.ts +1 -1
- package/src/components/PlBtnGroup/PlBtnGroup.vue +10 -10
- package/src/components/PlBtnGroup/index.ts +1 -1
- package/src/components/PlBtnGroup/pl-btn-group.scss +4 -4
- package/src/components/PlBtnLink/PlBtnLink.vue +10 -5
- package/src/components/PlBtnLink/index.ts +1 -1
- package/src/components/PlBtnLink/pl-btn-link.scss +2 -1
- package/src/components/PlBtnPrimary/PlBtnPrimary.vue +4 -4
- package/src/components/PlBtnPrimary/__tests__/BtnPrimary.spec.ts +7 -7
- package/src/components/PlBtnPrimary/index.ts +1 -1
- package/src/components/PlBtnPrimary/pl-btn-primary.scss +2 -2
- package/src/components/PlBtnSecondary/PlBtnSecondary.vue +4 -4
- package/src/components/PlBtnSecondary/index.ts +1 -1
- package/src/components/PlBtnSecondary/pl-btn-secondary.scss +1 -1
- package/src/components/PlBtnSplit/PlBtnSplit.vue +42 -28
- package/src/components/PlBtnSplit/__tests__/PlBtnSplit.spec.ts +66 -66
- package/src/components/PlBtnSplit/index.ts +1 -1
- package/src/components/PlBtnSplit/pl-btn-split.scss +72 -75
- package/src/components/PlChartHistogram/PlChartHistogram.vue +29 -20
- package/src/components/PlChartHistogram/createGridlines.ts +28 -22
- package/src/components/PlChartHistogram/createLabels.ts +19 -17
- package/src/components/PlChartHistogram/createSvgContainer.ts +9 -9
- package/src/components/PlChartHistogram/drawBins.ts +27 -34
- package/src/components/PlChartHistogram/drawThreshold.ts +9 -9
- package/src/components/PlChartHistogram/histogram.ts +31 -34
- package/src/components/PlChartHistogram/index.ts +1 -1
- package/src/components/PlChartHistogram/normalizeBins.ts +3 -3
- package/src/components/PlChartHistogram/scales.spec.ts +5 -5
- package/src/components/PlChartHistogram/types.ts +6 -6
- package/src/components/PlChartStackedBar/Legends.vue +2 -2
- package/src/components/PlChartStackedBar/PlChartStackedBar.vue +16 -10
- package/src/components/PlChartStackedBar/PlChartStackedBarCompact.vue +4 -4
- package/src/components/PlChartStackedBar/StackedRow.vue +7 -9
- package/src/components/PlChartStackedBar/StackedRowCompact.vue +6 -8
- package/src/components/PlChartStackedBar/index.ts +3 -3
- package/src/components/PlChartStackedBar/types.ts +1 -1
- package/src/components/PlCheckbox/PlCheckbox.vue +5 -5
- package/src/components/PlCheckbox/PlCheckboxBase.vue +3 -5
- package/src/components/PlCheckbox/__tests__/PlCheckbox.spec.ts +15 -15
- package/src/components/PlCheckbox/index.ts +1 -1
- package/src/components/PlCheckbox/pl-checkbox-base.scss +13 -13
- package/src/components/PlCheckbox/pl-checkbox.scss +2 -2
- package/src/components/PlCheckboxGroup/PlCheckboxGroup.vue +24 -10
- package/src/components/PlCheckboxGroup/index.ts +1 -1
- package/src/components/PlCheckboxGroup/pl-checkbox-group.scss +1 -1
- package/src/components/PlChip/PlChip.vue +11 -5
- package/src/components/PlChip/index.ts +1 -1
- package/src/components/PlChip/pl-chip.scss +2 -2
- package/src/components/PlClipboard/PlClipboard.vue +7 -7
- package/src/components/PlClipboard/index.ts +1 -1
- package/src/components/PlConfirmDialog.vue +7 -6
- package/src/components/PlDialogModal/PlDialogModal.vue +52 -33
- package/src/components/PlDialogModal/index.ts +1 -1
- package/src/components/PlDialogModal/pl-dialog-modal.scss +2 -2
- package/src/components/PlDropdown/OptionList.vue +21 -10
- package/src/components/PlDropdown/PlDropdown.vue +65 -46
- package/src/components/PlDropdown/__tests__/PlDropdown.spec.ts +15 -15
- package/src/components/PlDropdown/index.ts +1 -1
- package/src/components/PlDropdown/pl-dropdown.scss +4 -2
- package/src/components/PlDropdown/types.ts +6 -2
- package/src/components/PlDropdown/useGroupBy.ts +7 -10
- package/src/components/PlDropdownLegacy/PlDropdownLegacy.vue +60 -43
- package/src/components/PlDropdownLegacy/__tests__/PlDropdownLegacy.spec.ts +16 -16
- package/src/components/PlDropdownLegacy/index.ts +1 -1
- package/src/components/PlDropdownLegacy/pl-dropdown-legacy.scss +6 -6
- package/src/components/PlDropdownLine/PlDropdownLine.vue +76 -54
- package/src/components/PlDropdownLine/ResizableInput.vue +15 -8
- package/src/components/PlDropdownLine/index.ts +1 -1
- package/src/components/PlDropdownLine/pl-dropdown-line.scss +132 -132
- package/src/components/PlDropdownLine/resizable-input.scss +38 -38
- package/src/components/PlDropdownMulti/PlDropdownMulti.vue +79 -45
- package/src/components/PlDropdownMulti/__tests__/PlDropdownMulti.spec.ts +15 -14
- package/src/components/PlDropdownMulti/index.ts +1 -1
- package/src/components/PlDropdownMulti/pl-dropdown-multi.scss +8 -6
- package/src/components/PlDropdownMultiRef/PlDropdownMultiRef.vue +5 -5
- package/src/components/PlDropdownMultiRef/__tests__/PlDropdownMultiRef.spec.ts +25 -24
- package/src/components/PlDropdownMultiRef/index.ts +1 -1
- package/src/components/PlDropdownRef/PlDropdownRef.vue +12 -12
- package/src/components/PlDropdownRef/__tests__/PlDropdownRef.spec.ts +23 -23
- package/src/components/PlDropdownRef/index.ts +1 -1
- package/src/components/PlEditableTitle/PlEditableTitle.vue +9 -10
- package/src/components/PlEditableTitle/index.ts +1 -1
- package/src/components/PlEditableTitle/pl-editable-title.module.scss +4 -4
- package/src/components/PlElementList/PlElementList.vue +60 -37
- package/src/components/PlElementList/PlElementListItem.vue +45 -29
- package/src/components/PlElementList/README.md +102 -119
- package/src/components/PlElementList/index.ts +1 -1
- package/src/components/PlElementList/utils.ts +3 -1
- package/src/components/PlErrorAlert/PlErrorAlert.vue +5 -5
- package/src/components/PlErrorAlert/index.ts +1 -1
- package/src/components/PlErrorBoundary/PlErrorBoundary.vue +8 -5
- package/src/components/PlErrorBoundary/index.ts +1 -1
- package/src/components/PlFileDialog/Local.vue +22 -16
- package/src/components/PlFileDialog/PlFileDialog.vue +27 -23
- package/src/components/PlFileDialog/Remote.vue +44 -34
- package/src/components/PlFileDialog/Shortcuts.vue +4 -4
- package/src/components/PlFileDialog/index.ts +1 -1
- package/src/components/PlFileDialog/pl-file-dialog.module.scss +15 -12
- package/src/components/PlFileDialog/remote.ts +9 -9
- package/src/components/PlFileDialog/utils.test.ts +20 -24
- package/src/components/PlFileDialog/utils.ts +8 -8
- package/src/components/PlFileInput/PlFileInput.vue +37 -26
- package/src/components/PlFileInput/index.ts +1 -1
- package/src/components/PlFileInput/pl-file-input.scss +3 -3
- package/src/components/PlFileInput/utils.ts +6 -6
- package/src/components/PlIcon16/PlIcon16.vue +7 -7
- package/src/components/PlIcon16/index.ts +1 -1
- package/src/components/PlIcon24/PlIcon24.vue +7 -7
- package/src/components/PlIcon24/index.ts +1 -1
- package/src/components/PlLoaderCircular/PlLoaderCircular.vue +24 -6
- package/src/components/PlLoaderCircular/index.ts +1 -1
- package/src/components/PlLoaderCircular/pl-loader-circular.scss +54 -50
- package/src/components/PlLoaderLogo.vue +8 -10
- package/src/components/PlLogView/PlLogView.vue +28 -22
- package/src/components/PlLogView/index.ts +1 -1
- package/src/components/PlLogView/pl-log-view.scss +10 -4
- package/src/components/PlLogView/useLogHandle.ts +32 -12
- package/src/components/PlMaskIcon16/index.ts +1 -1
- package/src/components/PlMaskIcon24/index.ts +1 -1
- package/src/components/PlNotificationAlert/PlNotificationAlert.vue +10 -5
- package/src/components/PlNotificationAlert/index.ts +1 -1
- package/src/components/PlNotificationAlert/pl-notification-alert.scss +43 -44
- package/src/components/PlNumberField/PlNumberField.vue +95 -68
- package/src/components/PlNumberField/__tests__/PlNumberField.spec.ts +71 -69
- package/src/components/PlNumberField/index.ts +1 -1
- package/src/components/PlNumberField/parseNumber.ts +20 -17
- package/src/components/PlProgressBar/PlProgressBar.vue +5 -5
- package/src/components/PlProgressBar/index.ts +1 -1
- package/src/components/PlProgressCell/PlProgressCell.vue +33 -14
- package/src/components/PlProgressCell/index.ts +2 -2
- package/src/components/PlProgressCell/pl-progress-cell.scss +70 -70
- package/src/components/PlProgressCell/types.ts +1 -1
- package/src/components/PlRadio/PlRadio.vue +54 -54
- package/src/components/PlRadio/PlRadioGroup.vue +16 -16
- package/src/components/PlRadio/__tests__/PlRadioGroup.spec.ts +50 -50
- package/src/components/PlRadio/index.ts +2 -2
- package/src/components/PlRadio/keys.ts +1 -1
- package/src/components/PlSearchField/PlSearchField.vue +21 -9
- package/src/components/PlSearchField/index.ts +1 -1
- package/src/components/PlSectionSeparator/PlSectionSeparator.vue +1 -1
- package/src/components/PlSectionSeparator/index.ts +1 -1
- package/src/components/PlSidebar/PlSidebarGroup.vue +2 -2
- package/src/components/PlSidebar/PlSidebarItem.vue +7 -7
- package/src/components/PlSidebar/index.ts +2 -2
- package/src/components/PlSlideModal/PlPureSlideModal.vue +18 -17
- package/src/components/PlSlideModal/PlSlideModal.vue +8 -12
- package/src/components/PlSlideModal/index.ts +2 -2
- package/src/components/PlSlideModal/pl-slide-modal.scss +2 -2
- package/src/components/PlSlideModal/props.ts +9 -9
- package/src/components/PlSpacer/PlSpacer.vue +1 -1
- package/src/components/PlSpacer/index.ts +1 -1
- package/src/components/PlSplash/PlSplash.vue +25 -17
- package/src/components/PlSplash/index.ts +1 -1
- package/src/components/PlSplash/pl-splash.module.scss +1 -1
- package/src/components/PlStatusTag/PlStatusTag.vue +13 -8
- package/src/components/PlStatusTag/index.ts +2 -2
- package/src/components/PlStatusTag/pl-status-tag.scss +18 -18
- package/src/components/PlStatusTag/types.ts +1 -1
- package/src/components/PlSvg/PlSvg.vue +24 -16
- package/src/components/PlSvg/index.ts +1 -1
- package/src/components/PlSvg/registry.ts +17 -21
- package/src/components/PlTabs/PlTabs.vue +10 -7
- package/src/components/PlTabs/Tab.vue +4 -4
- package/src/components/PlTabs/index.ts +2 -2
- package/src/components/PlTabs/pl-tabs.module.scss +3 -3
- package/src/components/PlTextArea/PlTextArea.vue +15 -15
- package/src/components/PlTextArea/__tests__/PlTextArea.spec.ts +12 -12
- package/src/components/PlTextArea/index.ts +1 -1
- package/src/components/PlTextArea/pl-textarea.scss +1 -1
- package/src/components/PlTextField/PlTextField.vue +48 -27
- package/src/components/PlTextField/__tests__/TextField.spec.ts +19 -19
- package/src/components/PlTextField/index.ts +1 -1
- package/src/components/PlToggleSwitch/PlToggleSwitch.vue +3 -3
- package/src/components/PlToggleSwitch/index.ts +1 -1
- package/src/components/PlToggleSwitch/pl-toggle-switch.scss +3 -2
- package/src/components/PlTooltip/Beak.vue +8 -1
- package/src/components/PlTooltip/PlTooltip.vue +33 -19
- package/src/components/PlTooltip/index.ts +1 -1
- package/src/components/PlTooltip/pl-tooltip.scss +4 -2
- package/src/components/PlTooltip/useTooltipPosition.ts +12 -12
- package/src/components/Scrollable.vue +17 -8
- package/src/components/Slider.vue +47 -23
- package/src/components/SliderRange.vue +72 -32
- package/src/components/SliderRangeTriple.vue +49 -31
- package/src/components/TabItem.vue +5 -5
- package/src/components/ThemeSwitcher.vue +1 -1
- package/src/components/TransitionSlidePanel.vue +2 -2
- package/src/components/VScroll.vue +10 -10
- package/src/components/contextMenu/Menu.vue +4 -4
- package/src/components/contextMenu/index.ts +6 -6
- package/src/composition/computedCached.ts +11 -7
- package/src/composition/filters/index.ts +2 -2
- package/src/composition/filters/metadata.ts +227 -220
- package/src/composition/filters/types.ts +44 -21
- package/src/composition/useClickOutside.ts +4 -4
- package/src/composition/useComponentProp.ts +5 -3
- package/src/composition/useConfirm.ts +5 -5
- package/src/composition/useDraggable.ts +16 -13
- package/src/composition/useEventListener.ts +13 -5
- package/src/composition/useFilteredList.ts +9 -6
- package/src/composition/useFormState.ts +3 -3
- package/src/composition/useHover.ts +10 -7
- package/src/composition/useInterval.ts +1 -1
- package/src/composition/useLocalStorage.ts +4 -4
- package/src/composition/useMouse.ts +3 -3
- package/src/composition/useMouseCapture.ts +10 -7
- package/src/composition/useNotificationPosition.ts +4 -4
- package/src/composition/usePollingQuery.ts +22 -20
- package/src/composition/usePosition.ts +13 -9
- package/src/composition/useQuery.ts +2 -2
- package/src/composition/useResizeObserver.ts +9 -6
- package/src/composition/useRipple.ts +6 -6
- package/src/composition/useScroll.ts +18 -12
- package/src/composition/useSliderBreakpoints.ts +6 -4
- package/src/composition/useSortable.ts +17 -17
- package/src/composition/useSortable2.ts +27 -24
- package/src/composition/useTheme.ts +11 -9
- package/src/composition/useTransformedModel.ts +6 -3
- package/src/composition/useWatchFetch.ts +3 -3
- package/src/composition/utils.ts +1 -1
- package/src/composition/watchCached.ts +2 -8
- package/src/demo-site-data/all-css-variables.ts +208 -169
- package/src/drafts/FileBaseInput.vue +35 -18
- package/src/generated/icons-16.ts +68 -68
- package/src/generated/icons-24.ts +211 -211
- package/src/global/resizeObserver.ts +1 -1
- package/src/helpers/dom.ts +12 -8
- package/src/helpers/downloadContent.ts +23 -21
- package/src/helpers/error.ts +6 -3
- package/src/helpers/functions.ts +5 -1
- package/src/helpers/objects.ts +1 -1
- package/src/helpers/utils.ts +23 -9
- package/src/index.ts +110 -110
- package/src/layout/PlBlockPage/PlBlockPage.vue +14 -19
- package/src/layout/PlBlockPage/PlBlockPageTitleTeleportTarget.ts +1 -1
- package/src/layout/PlBlockPage/index.ts +2 -2
- package/src/layout/PlBlockPage/pl-block-page.scss +1 -1
- package/src/layout/PlBlockPage/usePlBlockPageTitleTeleportTarget.ts +2 -2
- package/src/layout/PlContainer/PlContainer.vue +10 -5
- package/src/layout/PlContainer/index.ts +1 -1
- package/src/layout/PlContainer/pl-container.scss +1 -1
- package/src/layout/PlGrid/PlGrid.vue +3 -3
- package/src/layout/PlGrid/index.ts +1 -1
- package/src/layout/PlGrid/pl-grid.scss +1 -1
- package/src/layout/PlPlaceholder/PlPlaceholder.vue +19 -18
- package/src/layout/PlPlaceholder/index.ts +11 -14
- package/src/layout/PlPlaceholder/paint-worklet.js +6 -6
- package/src/layout/PlRow/PlRow.vue +2 -2
- package/src/layout/PlRow/index.ts +1 -1
- package/src/layout/PlRow/pl-row.scss +1 -1
- package/src/layout/PlSpacer/PlSpacer.vue +1 -1
- package/src/layout/PlSpacer/index.ts +1 -1
- package/src/types.ts +23 -17
- package/src/utils/DoubleContour.vue +18 -7
- package/src/utils/DropdownOverlay/DropdownOverlay.vue +13 -13
- package/src/utils/DropdownOverlay/index.ts +1 -1
- package/src/utils/PlCloseModalBtn.vue +1 -1
- package/src/utils/TextLabel.vue +1 -1
- package/src/utils/WebStopWatchElement.ts +5 -5
- package/src/utils/useLabelNotch.ts +12 -9
- package/src/utils/useValidation.ts +2 -2
- package/tsconfig.json +2 -7
- package/vitest.config.mts +9 -9
- package/.turbo/turbo-lint.log +0 -5
- package/eslint.config.mjs +0 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlCheckboxGroup.vue.js","sources":["../../../src/components/PlCheckboxGroup/PlCheckboxGroup.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Component for selecting multiple values from a list of options\n */\nexport default {\n name:
|
|
1
|
+
{"version":3,"file":"PlCheckboxGroup.vue.js","sources":["../../../src/components/PlCheckboxGroup/PlCheckboxGroup.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Component for selecting multiple values from a list of options\n */\nexport default {\n name: \"PlCheckboxGroup\",\n};\n</script>\n\n<script lang=\"ts\" setup generic=\"M = unknown\">\nimport \"./pl-checkbox-group.scss\";\nimport type { SimpleOption } from \"../../types\";\nimport PlCheckboxBase from \"../PlCheckbox/PlCheckboxBase.vue\";\nimport { PlTooltip } from \"../PlTooltip\";\nimport { useSlots } from \"vue\";\n\nconst slots = useSlots();\n\nconst emit = defineEmits<{\n (e: \"update:modelValue\", v: M[]): void;\n}>();\n\nconst props = defineProps<{\n /**\n * The current selected values.\n */\n modelValue: M[];\n /**\n * The label text for the component (optional)\n */\n label?: string;\n /**\n * List of available options for the component\n */\n options: Readonly<SimpleOption<M>[]>;\n /**\n * If `true`, the component is disabled and cannot be interacted with.\n */\n disabled?: boolean;\n}>();\n\nconst hasValue = (value: M) => {\n return props.modelValue.includes(value);\n};\n\nconst updateModel = (value: M) => {\n const values = props.modelValue ?? [];\n emit(\n \"update:modelValue\",\n hasValue(value) ? values.filter((v) => v !== value) : [...values, value],\n );\n};\n</script>\n\n<template>\n <div class=\"pl-checkbox-group\" :class=\"{ disabled }\">\n <label v-if=\"label\">\n <span>{{ label }}</span>\n <PlTooltip v-if=\"slots.tooltip\" class=\"info\" position=\"top\">\n <template #tooltip>\n <slot name=\"tooltip\" />\n </template>\n </PlTooltip>\n </label>\n <div\n v-for=\"(opt, i) in options.map((it) => ({\n label: 'label' in it ? it.label : it.text,\n value: it.value,\n }))\"\n :key=\"i\"\n >\n <PlCheckboxBase\n :disabled=\"disabled\"\n :label=\"opt.label\"\n :model-value=\"hasValue(opt.value)\"\n @update:model-value=\"() => updateModel(opt.value)\"\n />\n <label @click.stop=\"() => updateModel(opt.value)\">{{ opt.label }}</label>\n </div>\n </div>\n</template>\n"],"names":["__default__","slots","useSlots","emit","__emit","props","__props","hasValue","value","updateModel","values","v","_createElementBlock","_normalizeClass","_hoisted_1","_createElementVNode","_unref","_createBlock","PlTooltip","_renderSlot","_ctx","_openBlock","_Fragment","_renderList","it","opt","i","_createVNode","PlCheckboxBase","_withModifiers","_toDisplayString","_hoisted_2"],"mappings":";;;;uCAIAA,IAAe;AAAA,EACb,MAAM;AACR;;;;;;;;;;AAUA,UAAMC,IAAQC,EAAA,GAERC,IAAOC,GAIPC,IAAQC,GAmBRC,IAAW,CAACC,MACTH,EAAM,WAAW,SAASG,CAAK,GAGlCC,IAAc,CAACD,MAAa;AAChC,YAAME,IAASL,EAAM,cAAc,CAAA;AACnC,MAAAF;AAAA,QACE;AAAA,QACAI,EAASC,CAAK,IAAIE,EAAO,OAAO,CAACC,MAAMA,MAAMH,CAAK,IAAI,CAAC,GAAGE,GAAQF,CAAK;AAAA,MAAA;AAAA,IAE3E;2BAIEI,EAwBM,OAAA;AAAA,MAxBD,OAAKC,EAAA,CAAC,qBAAmB,EAAA,UAAWP,EAAA,UAAQ,CAAA;AAAA,IAAA;MAClCA,EAAA,cAAbM,EAOQ,SAAAE,GAAA;AAAA,QANNC,EAAwB,gBAAfT,EAAA,KAAK,GAAA,CAAA;AAAA,QACGU,EAAAf,CAAA,EAAM,gBAAvBgB,EAIYD,EAAAE,CAAA,GAAA;AAAA;UAJoB,OAAM;AAAA,UAAO,UAAS;AAAA,QAAA;UACzC,WACT,MAAuB;AAAA,YAAvBC,EAAuBC,EAAA,QAAA,SAAA;AAAA,UAAA;;;;OAI7BC,EAAA,EAAA,GAAAT,EAcMU,GAAA,MAAAC,EAbejB,EAAA,QAAQ,KAAKkB,OAAE;AAAA,QAAkC,OAAA,WAAAA,IAAKA,EAAG,QAAQA,EAAG;AAAA,QAAqB,OAAAA,EAAG;AAAA,MAAA,EAAvG,GAAA,CAAAC,GAAKC,YADfd,EAcM,OAAA,EATH,KAAKc,KAAC;AAAA,QAEPC,EAKEC,GAAA;AAAA,UAJC,UAAUtB,EAAA;AAAA,UACV,OAAOmB,EAAI;AAAA,UACX,eAAalB,EAASkB,EAAI,KAAK;AAAA,UAC/B,uBAAkB,MAAQhB,EAAYgB,EAAI,KAAK;AAAA,QAAA;QAElDV,EAAyE,SAAA;AAAA,UAAjE,SAAKc,EAAA,MAAapB,EAAYgB,EAAI,KAAK,GAAA,CAAA,MAAA,CAAA;AAAA,QAAA,GAAMK,EAAAL,EAAI,KAAK,GAAA,GAAAM,CAAA;AAAA,MAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlChip.vue.d.ts","sourceRoot":"","sources":["../../../src/components/PlChip/PlChip.vue"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"PlChip.vue.d.ts","sourceRoot":"","sources":["../../../src/components/PlChip/PlChip.vue"],"names":[],"mappings":"AA6CA,OAAO,gBAAgB,CAAC;AAMxB,KAAK,WAAW,GAAG;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAcF,iBAAS,cAAc;WA0ET,OAAO,IAA6B;;yBAZrB,GAAG;yBACH,GAAG;;;;;;EAgB/B;AAYD,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAC9D,QAAA,MAAM,eAAe;;;;;;OASnB,CAAC;wBACkB,uBAAuB,CAAC,OAAO,eAAe,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAAnG,wBAAoG;AAQpG,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IACxC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlChip.vue.js","sources":["../../../src/components/PlChip/PlChip.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport
|
|
1
|
+
{"version":3,"file":"PlChip.vue.js","sources":["../../../src/components/PlChip/PlChip.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport \"./pl-chip.scss\";\nimport { onMounted, ref } from \"vue\";\nimport { PlTooltip } from \"../PlTooltip\";\n\ndefineEmits([\"close\"]);\n\ndefineProps<{\n closeable?: boolean;\n small?: boolean;\n}>();\n\nconst chip = ref<HTMLElement>();\nconst canShowTooltip = ref(false);\n\nonMounted(() => {\n if (chip.value) {\n canShowTooltip.value = chip.value?.clientWidth >= 256;\n }\n});\n</script>\n\n<template>\n <PlTooltip position=\"top\" class=\"pl-chip-tooltip\" :delay=\"500\">\n <template v-if=\"canShowTooltip\" #tooltip>\n <slot />\n </template>\n <div ref=\"chip\" class=\"pl-chip\" :class=\"{ small }\">\n <div class=\"pl-chip__text\">\n <slot />\n </div>\n <div\n v-if=\"closeable\"\n tabindex=\"0\"\n class=\"pl-chip__close\"\n @keydown.enter=\"$emit('close')\"\n @click.stop=\"$emit('close')\"\n >\n <div class=\"pl-chip__close--icon\" />\n </div>\n </div>\n </PlTooltip>\n</template>\n"],"names":["chip","ref","canShowTooltip","onMounted","_a","_createBlock","_unref","PlTooltip","_createElementVNode","_normalizeClass","__props","_hoisted_1","_renderSlot","_ctx","_createElementBlock","$emit"],"mappings":";;;;;;;;;;;AAYA,UAAMA,IAAOC,EAAA,GACPC,IAAiBD,EAAI,EAAK;AAEhC,WAAAE,EAAU,MAAM;;AACd,MAAIH,EAAK,UACPE,EAAe,UAAQE,IAAAJ,EAAK,UAAL,gBAAAI,EAAY,gBAAe;AAAA,IAEtD,CAAC,mBAICC,EAkBYC,EAAAC,CAAA,GAAA;AAAA,MAlBD,UAAS;AAAA,MAAM,OAAM;AAAA,MAAmB,OAAO;AAAA,IAAA;iBAIxD,MAaM;AAAA,QAbNC,EAaM,OAAA;AAAA,mBAbG;AAAA,UAAJ,KAAIR;AAAA,UAAO,OAAKS,EAAA,CAAC,WAAS,EAAA,OAAWC,EAAA,OAAK,CAAA;AAAA,QAAA;UAC7CF,EAEM,OAFNG,GAEM;AAAA,YADJC,EAAQC,EAAA,QAAA,SAAA;AAAA,UAAA;UAGFH,EAAA,kBADRI,EAQM,OAAA;AAAA;YANJ,UAAS;AAAA,YACT,OAAM;AAAA,YACL,oCAAeC,EAAAA,MAAK,OAAA,GAAA,CAAA,OAAA,CAAA;AAAA,YACpB,kCAAYA,EAAAA,MAAK,OAAA,GAAA,CAAA,MAAA,CAAA;AAAA,UAAA;YAElBP,EAAoC,OAAA,EAA/B,OAAM,uBAAA,GAAsB,MAAA,EAAA;AAAA,UAAA;;;;;MAdrBN,EAAA;cAAiB;AAAA,cAC/B,MAAQ;AAAA,UAARU,EAAQC,EAAA,QAAA,SAAA;AAAA,QAAA;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlClipboard.vue2.js","sources":["../../../src/components/PlClipboard/PlClipboard.vue"],"sourcesContent":["<script lang=\"ts\">\nexport default {\n name:
|
|
1
|
+
{"version":3,"file":"PlClipboard.vue2.js","sources":["../../../src/components/PlClipboard/PlClipboard.vue"],"sourcesContent":["<script lang=\"ts\">\nexport default {\n name: \"PlClipboard\",\n};\n</script>\n\n<script lang=\"ts\" setup>\nimport { PlMaskIcon16 } from \"../PlMaskIcon16\";\nimport type { Size } from \"../../types.ts\";\nimport { computed, onUnmounted, ref } from \"vue\";\n\nconst props = defineProps<{\n size?: Size;\n}>();\n\nconst emit = defineEmits([\"copy\"]);\n\nconst copyEffect = ref<boolean>(false);\n\nconst iconName = computed(() => (copyEffect.value ? \"clipboard-copied\" : \"clipboard\"));\n\nlet timeoutId: undefined | number;\n\nfunction onCopy() {\n clearTimeout(timeoutId);\n copyEffect.value = true;\n emit(\"copy\");\n timeoutId = window.setTimeout(() => {\n copyEffect.value = false;\n }, 1000);\n}\n\nonUnmounted(() => {\n clearTimeout(timeoutId);\n});\n</script>\n\n<template>\n <PlMaskIcon16 :name=\"iconName\" :size=\"props.size\" :class=\"$style.copy\" @click=\"onCopy\" />\n</template>\n\n<style module>\n.copy {\n cursor: pointer;\n display: block;\n}\n</style>\n"],"names":["__default__","props","__props","emit","__emit","copyEffect","ref","iconName","computed","timeoutId","onCopy","onUnmounted","_createBlock","_unref","PlMaskIcon16","_normalizeClass","$style"],"mappings":";;AACA,MAAAA,IAAe;AAAA,EACb,MAAM;AACR;;;;;;;AAQA,UAAMC,IAAQC,GAIRC,IAAOC,GAEPC,IAAaC,EAAa,EAAK,GAE/BC,IAAWC,EAAS,MAAOH,EAAW,QAAQ,qBAAqB,WAAY;AAErF,QAAII;AAEJ,aAASC,IAAS;AAChB,mBAAaD,CAAS,GACtBJ,EAAW,QAAQ,IACnBF,EAAK,MAAM,GACXM,IAAY,OAAO,WAAW,MAAM;AAClC,QAAAJ,EAAW,QAAQ;AAAA,MACrB,GAAG,GAAI;AAAA,IACT;AAEA,WAAAM,EAAY,MAAM;AAChB,mBAAaF,CAAS;AAAA,IACxB,CAAC,mBAICG,EAAyFC,EAAAC,CAAA,GAAA;AAAA,MAA1E,MAAMP,EAAA;AAAA,MAAW,MAAMN,EAAM;AAAA,MAAO,OAAKc,EAAEC,EAAAA,OAAO,IAAI;AAAA,MAAG,SAAON;AAAA,IAAA;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlConfirmDialog.vue.d.ts","sourceRoot":"","sources":["../../src/components/PlConfirmDialog.vue"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"PlConfirmDialog.vue.d.ts","sourceRoot":"","sources":["../../src/components/PlConfirmDialog.vue"],"names":[],"mappings":"AA8DA,KAAK,WAAW,GAAG;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB,CAAC;;;;;;;;cADW,MAAM,IAAI;YANZ,OAAO;eAKJ,MAAM,IAAI;;AAgJ1B,wBASG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlConfirmDialog.vue.js","sources":["../../src/components/PlConfirmDialog.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { PlBtnPrimary } from
|
|
1
|
+
{"version":3,"file":"PlConfirmDialog.vue.js","sources":["../../src/components/PlConfirmDialog.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { PlBtnPrimary } from \"./PlBtnPrimary\";\nimport { PlBtnSecondary } from \"./PlBtnSecondary\";\nimport { PlDialogModal } from \"./PlDialogModal\";\n\nconst props = withDefaults(\n defineProps<{\n opened?: boolean;\n title: string;\n message: string;\n confirmLabel: string;\n cancelLabel: string;\n onConfirm?: () => void;\n onCancel?: () => void;\n }>(),\n {\n opened: true,\n onCancel: undefined,\n onConfirm: undefined,\n },\n);\n\nconst emits = defineEmits<{\n confirm: [];\n cancel: [];\n}>();\n\nconst handleConfirm = () => {\n emits(\"confirm\");\n props.onConfirm?.();\n};\n\nconst handleCancel = () => {\n emits(\"cancel\");\n props.onCancel?.();\n};\n</script>\n\n<template>\n <PlDialogModal v-model=\"props.opened\" :closable=\"false\" @click.stop>\n <template #title>\n {{ title }}\n </template>\n <template #default>\n {{ message }}\n </template>\n <template #actions>\n <PlBtnPrimary @click.stop=\"handleConfirm\">\n {{ props.confirmLabel }}\n </PlBtnPrimary>\n <PlBtnSecondary @click.stop=\"handleCancel\">\n {{ props.cancelLabel }}\n </PlBtnSecondary>\n </template>\n </PlDialogModal>\n</template>\n"],"names":["props","__props","emits","__emit","handleConfirm","_a","handleCancel","_createBlock","_unref","PlDialogModal","_cache","$event","_createVNode","PlBtnPrimary","_createTextVNode","_toDisplayString","PlBtnSecondary"],"mappings":";;;;;;;;;;;;;;;;;AAKA,UAAMA,IAAQC,GAiBRC,IAAQC,GAKRC,IAAgB,MAAM;;AAC1B,MAAAF,EAAM,SAAS,IACfG,IAAAL,EAAM,cAAN,QAAAK,EAAA,KAAAL;AAAA,IACF,GAEMM,IAAe,MAAM;;AACzB,MAAAJ,EAAM,QAAQ,IACdG,IAAAL,EAAM,aAAN,QAAAK,EAAA,KAAAL;AAAA,IACF;2BAIEO,EAegBC,EAAAC,CAAA,GAAA;AAAA,MAfQ,YAAAT,EAAM;AAAA,MAAN,uBAAAU,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAC,MAAAX,EAAM,SAAMW;AAAA,MAAG,UAAU;AAAA,MAAQ,2BAAD,MAAA;AAAA,MAAA,GAAW,CAAA,MAAA,CAAA;AAAA,IAAA;MACtD,SACT,MAAW;AAAA,YAARV,EAAA,KAAK,GAAA,CAAA;AAAA,MAAA;MAEC,WACT,MAAa;AAAA,YAAVA,EAAA,OAAO,GAAA,CAAA;AAAA,MAAA;MAED,WACT,MAEe;AAAA,QAFfW,EAEeJ,EAAAK,CAAA,GAAA;AAAA,UAFA,WAAYT,GAAa,CAAA,MAAA,CAAA;AAAA,QAAA;qBACtC,MAAwB;AAAA,YAArBU,EAAAC,EAAAf,EAAM,YAAY,GAAA,CAAA;AAAA,UAAA;;;QAEvBY,EAEiBJ,EAAAQ,CAAA,GAAA;AAAA,UAFA,WAAYV,GAAY,CAAA,MAAA,CAAA;AAAA,QAAA;qBACvC,MAAuB;AAAA,YAApBQ,EAAAC,EAAAf,EAAM,WAAW,GAAA,CAAA;AAAA,UAAA;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlDialogModal.vue.d.ts","sourceRoot":"","sources":["../../../src/components/PlDialogModal/PlDialogModal.vue"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"PlDialogModal.vue.d.ts","sourceRoot":"","sources":["../../../src/components/PlDialogModal/PlDialogModal.vue"],"names":[],"mappings":"AAgLA,OAAO,wBAAwB,CAAC;AAGhC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;;IAapC;;OAEG;gBACS,OAAO;IACnB;;OAEG;YACK,MAAM;IACd;;OAEG;aACM,MAAM;IACf;;OAEG;gBACS,MAAM;IAClB;;OAEG;gBACS,MAAM;IAClB;;OAEG;eACQ,OAAO;IAClB;;OAEG;uBACgB,OAAO;IAC1B;;OAEG;yBACkB,OAAO;IAC5B;;OAEG;0BACmB,OAAO;IAC7B;;OAEG;0BACmB,OAAO;IAC7B;;OAEG;WACI,IAAI,GAAG,SAAS;;;;IA3CvB;;OAEG;gBACS,OAAO;IACnB;;OAEG;YACK,MAAM;IACd;;OAEG;aACM,MAAM;IACf;;OAEG;gBACS,MAAM;IAClB;;OAEG;gBACS,MAAM;IAClB;;OAEG;eACQ,OAAO;IAClB;;OAEG;uBACgB,OAAO;IAC1B;;OAEG;yBACkB,OAAO;IAC5B;;OAEG;0BACmB,OAAO;IAC7B;;OAEG;0BACmB,OAAO;IAC7B;;OAEG;WACI,IAAI,GAAG,SAAS;;;;;YAhCd,MAAM;WAJP,MAAM;eAYF,MAAM;eAJN,MAAM;cAQP,OAAO;sBAIC,OAAO;yBAQJ,OAAO;;;;YA3CvB,MAAM,OAAO;cACX,MAAM,OAAO;cACb,MAAM,OAAO;;YAFf,MAAM,OAAO;cACX,MAAM,OAAO;cACb,MAAM,OAAO;;AAJzB,wBA8QK;AAcL,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IACxC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
|
|
@@ -72,7 +72,10 @@ const O = {
|
|
|
72
72
|
m(e.$slots, "title")
|
|
73
73
|
])) : i("", !0),
|
|
74
74
|
f("div", {
|
|
75
|
-
class: h(["pl-dialog-modal__content", {
|
|
75
|
+
class: h(["pl-dialog-modal__content", {
|
|
76
|
+
"no-content-gutters": t.noContentGutters,
|
|
77
|
+
"no-top-content-gutter": t.noTopContentGutter
|
|
78
|
+
}])
|
|
76
79
|
}, [
|
|
77
80
|
m(e.$slots, "default")
|
|
78
81
|
], 2),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlDialogModal.vue.js","sources":["../../../src/components/PlDialogModal/PlDialogModal.vue"],"sourcesContent":["<script lang=\"ts\">\nexport default {\n inheritAttrs: false,\n};\n</script>\n\n<script lang=\"ts\" setup>\nimport { useEventListener } from
|
|
1
|
+
{"version":3,"file":"PlDialogModal.vue.js","sources":["../../../src/components/PlDialogModal/PlDialogModal.vue"],"sourcesContent":["<script lang=\"ts\">\nexport default {\n inheritAttrs: false,\n};\n</script>\n\n<script lang=\"ts\" setup>\nimport { useEventListener } from \"../../composition/useEventListener\";\nimport \"./pl-dialog-modal.scss\";\nimport { computed, ref } from \"vue\";\nimport PlCloseModalBtn from \"../../utils/PlCloseModalBtn.vue\";\nimport type { Size } from \"../../types\";\n\nconst slots = defineSlots<{\n title?: () => unknown;\n default?: () => unknown;\n actions?: () => unknown;\n}>();\n\nconst emit = defineEmits([\"update:modelValue\"]);\n\nconst props = withDefaults(\n defineProps<{\n /**\n * Determines whether the modal is open\n */\n modelValue: boolean;\n /**\n * css width (default value is `448px`)\n */\n width?: string;\n /**\n * css height (default value is `auto`)\n */\n height?: string;\n /**\n * css min-height (default value is `auto`)\n */\n minHeight?: string;\n /**\n * css min-height (default value is `auto` but recommended is 440px)\n */\n maxHeight?: string;\n /**\n * Enables a button to close the modal (default: `true`)\n */\n closable?: boolean;\n /**\n * If `true` content gutters are removed\n */\n noContentGutters?: boolean;\n /**\n * If `true` top content gutter is removed\n */\n noTopContentGutter?: boolean;\n /**\n * Actions slot has a top border (default: `true`)\n */\n actionsHasTopBorder?: boolean;\n /**\n * If `true`, the modal window closes when clicking outside the modal area (default: `true`)\n */\n closeOnOutsideClick?: boolean;\n /**\n * Predefined size (standard small | medium | large). Takes precedence over (min|max)(width|height) properties. Not defined by default.\n */\n size?: Size | undefined;\n }>(),\n {\n width: \"448px\",\n minHeight: \"auto\",\n maxHeight: \"auto\",\n height: \"auto\",\n closable: true,\n noContentGutters: false,\n actionsHasTopBorder: true,\n size: undefined,\n },\n);\n\nconst modal = ref<HTMLElement>();\n\nconst style = computed(() => {\n const { width, height, minHeight, maxHeight, size } = props;\n\n if (size === \"small\") {\n return {\n width: \"448px\",\n height: \"440px\",\n minHeight: \"auto\",\n maxHeight: \"auto\",\n };\n }\n\n if (size === \"medium\") {\n return {\n width: \"720px\",\n height: \"720px\",\n minHeight: \"auto\",\n maxHeight: \"auto\",\n };\n }\n\n if (size === \"large\") {\n return {\n width: \"1080px\",\n height: \"880px\",\n minHeight: \"auto\",\n maxHeight: \"auto\",\n };\n }\n\n return { width, height, minHeight, maxHeight };\n});\n\nfunction onClickShadow(ev: Event) {\n if (\n modal.value &&\n props.closeOnOutsideClick &&\n document.contains(ev.target as Node) &&\n !modal.value.contains(ev.target as Node)\n ) {\n emit(\"update:modelValue\", false);\n }\n}\n\nuseEventListener(document.body, \"keyup\", (ev) => {\n if (props.modelValue && ev.code === \"Escape\") {\n emit(\"update:modelValue\", false);\n }\n});\n</script>\n\n<template>\n <Teleport to=\"body\">\n <Transition name=\"dialog\">\n <div v-if=\"modelValue\" class=\"pl-dialog-modal__shadow\" @click=\"onClickShadow\">\n <div\n v-bind=\"$attrs\"\n ref=\"modal\"\n class=\"pl-dialog-modal\"\n :class=\"{ 'has-title': slots.title, 'has-content': slots.default }\"\n :style=\"style\"\n >\n <PlCloseModalBtn\n v-if=\"closable\"\n class=\"close-modal-btn\"\n @click.stop=\"emit('update:modelValue', false)\"\n />\n <div v-if=\"slots.title\" class=\"pl-dialog-modal__title\">\n <slot name=\"title\" />\n </div>\n <div\n class=\"pl-dialog-modal__content\"\n :class=\"{\n 'no-content-gutters': noContentGutters,\n 'no-top-content-gutter': noTopContentGutter,\n }\"\n >\n <slot />\n </div>\n <div\n v-if=\"slots.actions\"\n class=\"pl-dialog-modal__actions\"\n :class=\"{ 'has-top-border': actionsHasTopBorder }\"\n >\n <slot name=\"actions\" />\n </div>\n </div>\n </div>\n </Transition>\n </Teleport>\n</template>\n"],"names":["__default__","slots","_useSlots","emit","__emit","props","__props","modal","ref","style","computed","width","height","minHeight","maxHeight","size","onClickShadow","ev","useEventListener","_createBlock","_Teleport","_createVNode","_Transition","_createElementBlock","_createElementVNode","_mergeProps","_ctx","PlCloseModalBtn","_openBlock","_hoisted_1","_renderSlot","_normalizeClass"],"mappings":";;;;;;;GACAA,IAAe;AAAA,EACb,cAAc;AAChB;;;;;;;;;;;;;;;;;;AAUA,UAAMC,IAAQC,EAAA,GAMRC,IAAOC,GAEPC,IAAQC,GA2DRC,IAAQC,EAAA,GAERC,IAAQC,EAAS,MAAM;AAC3B,YAAM,EAAE,OAAAC,GAAO,QAAAC,GAAQ,WAAAC,GAAW,WAAAC,GAAW,MAAAC,MAASV;AAEtD,aAAIU,MAAS,UACJ;AAAA,QACL,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,WAAW;AAAA,MAAA,IAIXA,MAAS,WACJ;AAAA,QACL,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,WAAW;AAAA,MAAA,IAIXA,MAAS,UACJ;AAAA,QACL,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,WAAW;AAAA,MAAA,IAIR,EAAE,OAAAJ,GAAO,QAAAC,GAAQ,WAAAC,GAAW,WAAAC,EAAA;AAAA,IACrC,CAAC;AAED,aAASE,EAAcC,GAAW;AAChC,MACEV,EAAM,SACNF,EAAM,uBACN,SAAS,SAASY,EAAG,MAAc,KACnC,CAACV,EAAM,MAAM,SAASU,EAAG,MAAc,KAEvCd,EAAK,qBAAqB,EAAK;AAAA,IAEnC;AAEA,WAAAe,EAAiB,SAAS,MAAM,SAAS,CAACD,MAAO;AAC/C,MAAIZ,EAAM,cAAcY,EAAG,SAAS,YAClCd,EAAK,qBAAqB,EAAK;AAAA,IAEnC,CAAC,mBAICgB,EAqCWC,GAAA,EArCD,IAAG,UAAM;AAAA,MACjBC,EAmCaC,GAAA,EAnCD,MAAK,YAAQ;AAAA,mBACvB,MAiCM;AAAA,UAjCKhB,EAAA,mBAAXiB,EAiCM,OAAA;AAAA;YAjCiB,OAAM;AAAA,YAA2B,SAAOP;AAAA,UAAA;YAC7DQ,EA+BM,OA/BNC,EA+BMC,EAAA,QA9BU;AAAA,uBACV;AAAA,cAAJ,KAAInB;AAAA,cACJ,OAAK,CAAC,mBAAiB,EAAA,aACAN,EAAM,OAAK,eAAiBA,EAAM,SAAO;AAAA,cAC/D,OAAOQ,EAAA;AAAA,YAAA;cAGAH,EAAA,iBADRa,EAIEQ,GAAA;AAAA;gBAFA,OAAM;AAAA,gBACL,kCAAYxB,EAAI,qBAAA,EAAA,GAAA,CAAA,MAAA,CAAA;AAAA,cAAA;cAERF,EAAM,SAAjB2B,EAAA,GAAAL,EAEM,OAFNM,GAEM;AAAA,gBADJC,EAAqBJ,EAAA,QAAA,OAAA;AAAA,cAAA;cAEvBF,EAQM,OAAA;AAAA,gBAPJ,UAAM,4BAA0B;AAAA,wCACclB,EAAA;AAAA,2CAAyDA,EAAA;AAAA,gBAAA;;gBAKvGwB,EAAQJ,EAAA,QAAA,SAAA;AAAA,cAAA;cAGFzB,EAAM,gBADdsB,EAMM,OAAA;AAAA;gBAJJ,OAAKQ,EAAA,CAAC,4BAA0B,EAAA,kBACJzB,EAAA,qBAAmB,CAAA;AAAA,cAAA;gBAE/CwB,EAAuBJ,EAAA,QAAA,SAAA;AAAA,cAAA;;;;;;;;;"}
|
|
@@ -3,7 +3,7 @@ type __VLS_Props = {
|
|
|
3
3
|
rootRef: HTMLElement;
|
|
4
4
|
groups: Map<string, LOption[]>;
|
|
5
5
|
rest: LOption[];
|
|
6
|
-
optionSize:
|
|
6
|
+
optionSize: "small" | "medium";
|
|
7
7
|
selectOption: (v: unknown) => void;
|
|
8
8
|
};
|
|
9
9
|
declare const _default: import('vue').DefineComponent<__VLS_Props, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OptionList.vue.d.ts","sourceRoot":"","sources":["../../../src/components/PlDropdown/OptionList.vue"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"OptionList.vue.d.ts","sourceRoot":"","sources":["../../../src/components/PlDropdown/OptionList.vue"],"names":[],"mappings":"AAwFA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAEvC,KAAK,WAAW,GAAG;IACjB,OAAO,EAAE,WAAW,CAAC;IACrB,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;IAC/B,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,UAAU,EAAE,OAAO,GAAG,QAAQ,CAAC;IAC/B,YAAY,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;CACpC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oCA6MsxgB,GAAG,8CAA8C,GAAG,yBAAyB,GAAG,6DAAmC,GAAG;;;;;;;;;;;;;;;AAjB94gB,wBASG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OptionList.vue.js","sources":["../../../src/components/PlDropdown/OptionList.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport DropdownListItem from
|
|
1
|
+
{"version":3,"file":"OptionList.vue.js","sources":["../../../src/components/PlDropdown/OptionList.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport DropdownListItem from \"../DropdownListItem.vue\";\nimport { DropdownOverlay } from \"../../utils/DropdownOverlay\";\nimport TextLabel from \"../../utils/TextLabel.vue\";\nimport { computed, useTemplateRef } from \"vue\";\nimport type { LOption } from \"./types\";\n\nconst props = defineProps<{\n rootRef: HTMLElement;\n groups: Map<string, LOption[]>;\n rest: LOption[];\n optionSize: \"small\" | \"medium\";\n selectOption: (v: unknown) => void;\n}>();\n\nconst overlay = useTemplateRef(\"overlay\");\n\nconst listRef = computed(() => overlay.value?.listRef);\n\nconst hasGroups = computed(() => props.groups.size > 0);\n\nconst optionsLength = computed(() => {\n let totalGroupItems = 0;\n for (const items of props.groups.values()) {\n totalGroupItems += items.length;\n }\n return totalGroupItems + props.rest.length;\n});\n\nconst scrollIntoActive = () => {\n overlay.value?.scrollIntoActive();\n};\n\ndefineExpose({\n scrollIntoActive,\n listRef,\n});\n</script>\n\n<template>\n <DropdownOverlay\n ref=\"overlay\"\n :root=\"rootRef\"\n class=\"pl-dropdown__options\"\n tabindex=\"-1\"\n :gap=\"3\"\n >\n <div\n v-for=\"[group, items] in groups.entries()\"\n :key=\"group\"\n :class=\"{ 'group-container': hasGroups }\"\n >\n <TextLabel>{{ group }}</TextLabel>\n <div>\n <DropdownListItem\n v-for=\"(item, index) in items\"\n :key=\"index\"\n :option=\"item\"\n :is-selected=\"item.isSelected\"\n :is-hovered=\"item.isActive\"\n :size=\"optionSize\"\n @click.stop=\"selectOption(item.value)\"\n />\n </div>\n </div>\n <div v-if=\"rest.length\" :class=\"{ 'group-container': hasGroups }\">\n <TextLabel />\n <div>\n <DropdownListItem\n v-for=\"(item, index) in rest\"\n :key=\"index\"\n :option=\"item\"\n :is-selected=\"item.isSelected\"\n :is-hovered=\"item.isActive\"\n :size=\"optionSize\"\n @click.stop=\"selectOption(item.value)\"\n />\n </div>\n </div>\n <div v-if=\"!optionsLength\" class=\"nothing-found\">Nothing found</div>\n </DropdownOverlay>\n</template>\n"],"names":["props","__props","overlay","useTemplateRef","listRef","computed","_a","hasGroups","optionsLength","totalGroupItems","items","__expose","_createBlock","_unref","DropdownOverlay","_openBlock","_createElementBlock","_Fragment","group","_createVNode","TextLabel","_createElementVNode","_renderList","item","index","DropdownListItem","_withModifiers","$event","_hoisted_1"],"mappings":";;;;;;;;;;;;;;;;;AAOA,UAAMA,IAAQC,GAQRC,IAAUC,EAAe,SAAS,GAElCC,IAAUC,EAAS,MAAA;;AAAM,cAAAC,IAAAJ,EAAQ,UAAR,gBAAAI,EAAe;AAAA,KAAO,GAE/CC,IAAYF,EAAS,MAAML,EAAM,OAAO,OAAO,CAAC,GAEhDQ,IAAgBH,EAAS,MAAM;AACnC,UAAII,IAAkB;AACtB,iBAAWC,KAASV,EAAM,OAAO,OAAA;AAC/B,QAAAS,KAAmBC,EAAM;AAE3B,aAAOD,IAAkBT,EAAM,KAAK;AAAA,IACtC,CAAC;AAMD,WAAAW,EAAa;AAAA,MACX,kBALuB,MAAM;;AAC7B,SAAAL,IAAAJ,EAAQ,UAAR,QAAAI,EAAe;AAAA,MACjB;AAAA,MAIE,SAAAF;AAAA,IAAA,CACD,mBAICQ,EAwCkBC,EAAAC,CAAA,GAAA;AAAA,eAvCZ;AAAA,MAAJ,KAAIZ;AAAA,MACH,MAAMD,EAAA;AAAA,MACP,OAAM;AAAA,MACN,UAAS;AAAA,MACR,KAAK;AAAA,IAAA;iBAGJ,MAA0C;AAAA,SAD5Cc,EAAA,EAAA,GAAAC,EAiBMC,WAhBqBhB,EAAA,OAAO,WAAO,CAAA,CAA/BiB,GAAOR,CAAK,YADtBM,EAiBM,OAAA;AAAA,UAfH,KAAKE;AAAA,UACL,8BAA4BX,EAAA,OAAS;AAAA,QAAA;UAEtCY,EAAkCC,GAAA,MAAA;AAAA,uBAAvB,MAAW;AAAA,kBAARF,CAAK,GAAA,CAAA;AAAA,YAAA;;;UACnBG,EAUM,OAAA,MAAA;AAAA,aATJN,EAAA,EAAA,GAAAC,EAQEC,GAAA,MAAAK,EAPwBZ,GAAK,CAArBa,GAAMC,YADhBZ,EAQEa,GAAA;AAAA,cANC,KAAKD;AAAA,cACL,QAAQD;AAAA,cACR,eAAaA,EAAK;AAAA,cAClB,cAAYA,EAAK;AAAA,cACjB,MAAMtB,EAAA;AAAA,cACN,SAAKyB,EAAA,CAAAC,MAAO1B,EAAA,aAAasB,EAAK,KAAK,GAAA,CAAA,MAAA,CAAA;AAAA,YAAA;;;QAI/BtB,EAAA,KAAK,eAAhBe,EAaM,OAAA;AAAA;UAbmB,8BAA4BT,EAAA,OAAS;AAAA,QAAA;UAC5DY,EAAaC,CAAA;AAAA,UACbC,EAUM,OAAA,MAAA;AAAA,aATJN,EAAA,EAAA,GAAAC,EAQEC,GAAA,MAAAK,EAPwBrB,EAAA,MAAI,CAApBsB,GAAMC,YADhBZ,EAQEa,GAAA;AAAA,cANC,KAAKD;AAAA,cACL,QAAQD;AAAA,cACR,eAAaA,EAAK;AAAA,cAClB,cAAYA,EAAK;AAAA,cACjB,MAAMtB,EAAA;AAAA,cACN,SAAKyB,EAAA,CAAAC,MAAO1B,EAAA,aAAasB,EAAK,KAAK,GAAA,CAAA,MAAA,CAAA;AAAA,YAAA;;;QAI9Bf,EAAA,0BAAZQ,EAAoE,OAApEY,GAAiD,eAAa;AAAA;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlDropdown.vue.d.ts","sourceRoot":"","sources":["../../../src/components/PlDropdown/PlDropdown.vue"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"PlDropdown.vue.d.ts","sourceRoot":"","sources":["../../../src/components/PlDropdown/PlDropdown.vue"],"names":[],"mappings":"AAsaA,OAAO,KAAK,EAAE,UAAU,EAAwB,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AASpG,OAAO,oBAAoB,CAAC;AAK5B;;GAEG;yBACc,CAAC,yBACJ,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,cAClD,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC,iBAC5F,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC;WAsnB1D,mBAAmB,CAAC;;;QA3mBxB;;WAEG;oBACS,CAAC;QACb;;WAEG;gBACK,MAAM;QACd;;WAEG;kBACO,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;QACnC;;WAEG;iBACM,MAAM;QACf;;WAEG;+BACoB,MAAM;QAC7B;;WAEG;gBACK,OAAO;QACf;;WAEG;sBACW,OAAO;QACrB;;WAEG;sBACW,MAAM;QACpB;;WAEG;oBACS,OAAO;QACnB;;WAEG;mBACQ,OAAO;QAClB;;WAEG;mBACQ,OAAO;QAClB;;WAEG;oBACS,cAAc;QAC1B;;WAEG;yBACc,cAAc;QAC/B;;WAEG;qBACU,OAAO,GAAG,QAAQ;QAC/B;;aAEK;wBAED,KAAK,GACL,QAAQ,GACR,MAAM,GACN,OAAO,GACP,UAAU,GACV,WAAW,GACX,aAAa,GACb,cAAc,GACd,QAAQ;mBAuiB8E,CAAC,4BAA2B;oBACzG,OAAO,KAAK,EAAE,gBAAgB,CAAC,EAAE,CAAC,GAAG,IAAI;WAClD,GAAG;;wBA/DkB,GAAG;yBACF,GAAG;;cApjB3B,mBAAmB,SAAS,CAAC,GAAG,SAAS,KAAG,IAAI;;;;YAunBV,OAAO,CAAC,OAAO,WAAW,CAAC;;AAhoBvE,wBAgoB4E;AAG5E,KAAK,mBAAmB,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAG,GAAG,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlDropdown.vue.js","sources":["../../../src/components/PlDropdown/PlDropdown.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * A component for selecting one value from a list of options\n */\nexport default {\n name: 'PlDropdown',\n};\n</script>\n\n<script lang=\"ts\" setup generic=\"M = unknown\">\nimport { computed, reactive, ref, unref, useTemplateRef, watch, watchPostEffect } from 'vue';\nimport SvgRequired from '../../assets/images/required.svg?raw';\nimport { getErrorMessage } from '../../helpers/error.ts';\nimport { tap } from '../../helpers/functions';\nimport { deepEqual } from '../../helpers/objects';\nimport { normalizeListOptions } from '../../helpers/utils';\nimport type { ListOption, ListOptionNormalized, MaskIconName16, MaskIconName24 } from '../../types';\nimport DoubleContour from '../../utils/DoubleContour.vue';\nimport { useLabelNotch } from '../../utils/useLabelNotch';\nimport LongText from '../LongText.vue';\nimport { PlIcon16 } from '../PlIcon16';\nimport { PlIcon24 } from '../PlIcon24';\nimport { PlSvg } from '../PlSvg';\nimport { PlTooltip } from '../PlTooltip';\nimport OptionList from './OptionList.vue';\nimport './pl-dropdown.scss';\nimport type { LOption } from './types';\nimport { useGroupBy } from './useGroupBy';\n\nconst emit = defineEmits<{\n /**\n * Emitted when the model value is updated.\n */\n (e: 'update:modelValue', value: M | undefined): void;\n}>();\n\nconst props = withDefaults(\n defineProps<{\n /**\n * The current selected value of the dropdown.\n */\n modelValue: M;\n /**\n * The label text for the dropdown field (optional)\n */\n label?: string;\n /**\n * List of available options for the dropdown\n */\n options?: Readonly<ListOption<M>[]>;\n /**\n * A helper text displayed below the dropdown when there are no errors (optional).\n */\n helper?: string;\n /**\n * A helper text displayed below the dropdown when there are no options yet or options is undefined (optional).\n */\n loadingOptionsHelper?: string;\n /**\n * Error message displayed below the dropdown (optional)\n */\n error?: unknown;\n /**\n * Shows red border even without an error message\n */\n errorStatus?: boolean;\n /**\n * Placeholder text shown when no value is selected.\n */\n placeholder?: string;\n /**\n * Enables a button to clear the selected value (default: false)\n */\n clearable?: boolean;\n /**\n * If `true`, the dropdown component is marked as required.\n */\n required?: boolean;\n /**\n * If `true`, the dropdown component is disabled and cannot be interacted with.\n */\n disabled?: boolean;\n /**\n * Custom icon (16px) class for the dropdown arrow (optional)\n */\n arrowIcon?: MaskIconName16;\n /**\n * Custom icon (24px) class for the dropdown arrow (optional)\n */\n arrowIconLarge?: MaskIconName24;\n /**\n * Option list item size\n */\n optionSize?: 'small' | 'medium';\n /**\n * Makes some of corners not rounded\n * */\n groupPosition?: 'top' | 'bottom' | 'left' | 'right' | 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right' | 'middle';\n }>(),\n {\n label: '',\n helper: undefined,\n loadingOptionsHelper: undefined,\n error: undefined,\n showErrorMessage: true,\n placeholder: '...',\n clearable: false,\n required: false,\n disabled: false,\n arrowIcon: undefined,\n arrowIconLarge: undefined,\n optionSize: 'small',\n options: undefined,\n groupPosition: undefined,\n },\n);\n\nconst rootRef = ref<HTMLElement | undefined>();\nconst input = ref<HTMLInputElement | undefined>();\n\nconst optionListRef = useTemplateRef<InstanceType<typeof OptionList>>('optionListRef');\n\nconst data = reactive({\n search: '',\n activeIndex: -1,\n open: false,\n optionsHeight: 0,\n});\n\nconst findActiveIndex = () =>\n tap(\n orderedRef.value.findIndex((o) => deepEqual(o.value, props.modelValue)),\n (v) => (v < 0 ? 0 : v),\n );\n\nconst updateActive = () => (data.activeIndex = findActiveIndex());\n\nconst isLoadingOptions = computed(() => {\n return props.options === undefined;\n});\n\n/**\n * Loading spinner should not be shown when the dropdown is explicitly disabled,\n * even if options are undefined. The disabled state takes precedence.\n */\nconst showLoadingSpinner = computed(() => {\n return !props.disabled && isLoadingOptions.value;\n});\n\nconst isDisabled = computed(() => {\n if (isLoadingOptions.value) {\n return true;\n }\n\n return props.disabled;\n});\n\nconst selectedIndex = computed(() => {\n return (props.options ?? []).findIndex((o) => deepEqual(o.value, props.modelValue));\n});\n\nconst computedError = computed(() => {\n if (isLoadingOptions.value) {\n return undefined;\n }\n\n if (props.error) {\n return getErrorMessage(props.error);\n }\n\n if (props.modelValue !== undefined && selectedIndex.value === -1) {\n return 'The selected value is not one of the options';\n }\n\n return undefined;\n});\n\nconst optionsRef = computed<LOption<M>[]>(() =>\n normalizeListOptions(props.options ?? []).map((opt, index) => ({\n ...opt,\n index,\n isSelected: index === selectedIndex.value,\n isActive: index === data.activeIndex,\n })),\n);\n\nconst textValue = computed(() => {\n const options = unref(optionsRef);\n\n const item: ListOption | undefined = options.find((o) => deepEqual(o.value, props.modelValue));\n\n return item?.label || props.modelValue; // @todo show inner value?\n});\n\nconst computedPlaceholder = computed(() => {\n if (!data.open && props.modelValue !== undefined) {\n return '';\n }\n\n return props.modelValue ? String(textValue.value) : props.placeholder;\n});\n\nconst hasValue = computed(() => {\n return props.modelValue !== undefined && props.modelValue !== null;\n});\n\nconst filteredRef = computed(() => {\n const options = optionsRef.value;\n\n if (data.search) {\n return options.filter((o: ListOptionNormalized) => {\n const search = data.search.toLowerCase();\n\n if (o.label.toLowerCase().includes(search)) {\n return true;\n }\n\n if (o.description && o.description.toLowerCase().includes(search)) {\n return true;\n }\n\n if (typeof o.value === 'string') {\n return o.value.toLowerCase().includes(search);\n }\n\n return o.value === data.search;\n });\n }\n\n return options;\n});\n\nconst { orderedRef, groupsRef, restRef } = useGroupBy(filteredRef, 'group');\n\nconst tabindex = computed(() => (isDisabled.value ? undefined : '0'));\n\nconst selectOption = (v: M | undefined) => {\n emit('update:modelValue', v);\n data.search = '';\n data.open = false;\n rootRef?.value?.focus();\n};\n\nconst selectOptionWrapper = (v: unknown) => {\n selectOption(v as M | undefined);\n};\n\nconst clear = () => emit('update:modelValue', undefined);\n\nconst setFocusOnInput = () => input.value?.focus();\n\nconst toggleOpen = () => {\n data.open = !data.open;\n if (!data.open) {\n data.search = '';\n }\n};\n\nconst onInputFocus = () => (data.open = true);\n\nconst onFocusOut = (event: FocusEvent) => {\n const relatedTarget = event.relatedTarget as Node | null;\n\n if (!rootRef.value?.contains(relatedTarget) && !optionListRef.value?.listRef?.contains(relatedTarget)) {\n data.search = '';\n data.open = false;\n }\n};\n\nconst handleKeydown = (e: { code: string; preventDefault(): void }) => {\n if (!['ArrowDown', 'ArrowUp', 'Enter', 'Escape'].includes(e.code)) {\n return;\n } else {\n e.preventDefault();\n }\n\n const { open, activeIndex } = data;\n\n if (!open) {\n if (e.code === 'Enter') {\n data.open = true;\n }\n return;\n }\n\n if (e.code === 'Escape') {\n data.open = false;\n rootRef.value?.focus();\n }\n\n const ordered = orderedRef.value;\n\n const { length } = ordered;\n\n if (!length) {\n return;\n }\n\n if (e.code === 'Enter') {\n selectOption(ordered.find((it) => it.index === activeIndex)?.value);\n }\n\n const localIndex = ordered.findIndex((it) => it.index === activeIndex) ?? -1;\n\n const delta = e.code === 'ArrowDown' ? 1 : e.code === 'ArrowUp' ? -1 : 0;\n\n const newIndex = Math.abs(localIndex + delta + length) % length;\n\n data.activeIndex = ordered[newIndex].index ?? -1;\n};\n\nuseLabelNotch(rootRef);\n\nwatch(() => props.modelValue, updateActive, { immediate: true });\n\nwatch(\n () => data.open,\n (open) => (open ? input.value?.focus() : ''),\n);\n\nwatchPostEffect(() => {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n data.search; // to watch\n\n if (data.activeIndex >= 0 && data.open) {\n optionListRef.value?.scrollIntoActive();\n }\n});\n</script>\n\n<template>\n <div class=\"pl-dropdown__envelope\" @click=\"setFocusOnInput\">\n <div\n ref=\"rootRef\"\n :tabindex=\"tabindex\"\n class=\"pl-dropdown\"\n :class=\"{ open: data.open, error: error || errorStatus, disabled: isDisabled }\"\n @keydown=\"handleKeydown\"\n @focusout=\"onFocusOut\"\n >\n <div class=\"pl-dropdown__container\">\n <div class=\"pl-dropdown__field\">\n <input\n ref=\"input\"\n v-model=\"data.search\"\n type=\"text\"\n tabindex=\"-1\"\n :disabled=\"isDisabled\"\n :placeholder=\"computedPlaceholder\"\n spellcheck=\"false\"\n autocomplete=\"chrome-off\"\n @focus=\"onInputFocus\"\n />\n\n <div v-if=\"!data.open\" class=\"input-value\">\n <LongText> {{ textValue }} </LongText>\n </div>\n\n <div class=\"pl-dropdown__controls\">\n <PlIcon24 v-if=\"showLoadingSpinner\" name=\"loading\" />\n <PlIcon16 v-if=\"clearable && hasValue\" class=\"clear\" name=\"delete-clear\" @click.stop=\"clear\" />\n <slot name=\"append\" />\n <div class=\"pl-dropdown__arrow-wrapper\" @click.stop=\"toggleOpen\">\n <PlIcon24 v-if=\"arrowIconLarge\" :name=\"arrowIconLarge\" class=\"arrow-icon\" />\n <PlIcon16 v-else-if=\"arrowIcon\" :name=\"arrowIcon\" class=\"arrow-icon\" />\n <PlIcon16 v-else name=\"chevron-down\" class=\"arrow-icon arrow-icon-default\" />\n </div>\n </div>\n </div>\n <label v-if=\"label\">\n <PlSvg v-if=\"required\" :uri=\"SvgRequired\" />\n <span>{{ label }}</span>\n <PlTooltip v-if=\"$slots.tooltip\" class=\"info\" position=\"top\">\n <template #tooltip>\n <slot name=\"tooltip\" />\n </template>\n </PlTooltip>\n </label>\n <OptionList\n v-if=\"data.open\"\n ref=\"optionListRef\"\n :root-ref=\"rootRef!\"\n :groups=\"groupsRef\"\n :rest=\"restRef\"\n :option-size=\"optionSize\"\n :select-option=\"selectOptionWrapper\"\n />\n <DoubleContour class=\"pl-dropdown__contour\" :group-position=\"groupPosition\" />\n </div>\n </div>\n <div v-if=\"computedError\" class=\"pl-dropdown__error\">{{ computedError }}</div>\n <div v-else-if=\"showLoadingSpinner && loadingOptionsHelper\" class=\"pl-dropdown__helper\">{{ loadingOptionsHelper }}</div>\n <div v-else-if=\"helper\" class=\"pl-dropdown__helper\">{{ helper }}</div>\n </div>\n</template>\n"],"names":["__default__","emit","__emit","props","__props","rootRef","ref","input","optionListRef","useTemplateRef","data","reactive","findActiveIndex","tap","orderedRef","o","deepEqual","v","updateActive","isLoadingOptions","computed","showLoadingSpinner","isDisabled","selectedIndex","computedError","getErrorMessage","optionsRef","normalizeListOptions","opt","index","textValue","item","unref","computedPlaceholder","hasValue","filteredRef","options","search","groupsRef","restRef","useGroupBy","tabindex","selectOption","_a","selectOptionWrapper","clear","setFocusOnInput","toggleOpen","onInputFocus","onFocusOut","event","relatedTarget","_c","_b","handleKeydown","open","activeIndex","ordered","length","it","localIndex","delta","newIndex","useLabelNotch","watch","watchPostEffect","_createElementBlock","_createElementVNode","_normalizeClass","_hoisted_2","_hoisted_3","_cache","$event","_vModelText","_openBlock","_hoisted_5","_createVNode","LongText","_hoisted_6","_createBlock","_unref","PlIcon24","PlIcon16","_renderSlot","_ctx","_hoisted_7","PlSvg","SvgRequired","$slots","PlTooltip","OptionList","DoubleContour","_hoisted_8","_toDisplayString","_hoisted_9","_hoisted_10"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PlDropdown.vue.js","sources":["../../../src/components/PlDropdown/PlDropdown.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * A component for selecting one value from a list of options\n */\nexport default {\n name: \"PlDropdown\",\n};\n</script>\n\n<script lang=\"ts\" setup generic=\"M = unknown\">\nimport { computed, reactive, ref, unref, useTemplateRef, watch, watchPostEffect } from \"vue\";\nimport SvgRequired from \"../../assets/images/required.svg?raw\";\nimport { getErrorMessage } from \"../../helpers/error.ts\";\nimport { tap } from \"../../helpers/functions\";\nimport { deepEqual } from \"../../helpers/objects\";\nimport { normalizeListOptions } from \"../../helpers/utils\";\nimport type { ListOption, ListOptionNormalized, MaskIconName16, MaskIconName24 } from \"../../types\";\nimport DoubleContour from \"../../utils/DoubleContour.vue\";\nimport { useLabelNotch } from \"../../utils/useLabelNotch\";\nimport LongText from \"../LongText.vue\";\nimport { PlIcon16 } from \"../PlIcon16\";\nimport { PlIcon24 } from \"../PlIcon24\";\nimport { PlSvg } from \"../PlSvg\";\nimport { PlTooltip } from \"../PlTooltip\";\nimport OptionList from \"./OptionList.vue\";\nimport \"./pl-dropdown.scss\";\nimport type { LOption } from \"./types\";\nimport { useGroupBy } from \"./useGroupBy\";\n\nconst emit = defineEmits<{\n /**\n * Emitted when the model value is updated.\n */\n (e: \"update:modelValue\", value: M | undefined): void;\n}>();\n\nconst props = withDefaults(\n defineProps<{\n /**\n * The current selected value of the dropdown.\n */\n modelValue: M;\n /**\n * The label text for the dropdown field (optional)\n */\n label?: string;\n /**\n * List of available options for the dropdown\n */\n options?: Readonly<ListOption<M>[]>;\n /**\n * A helper text displayed below the dropdown when there are no errors (optional).\n */\n helper?: string;\n /**\n * A helper text displayed below the dropdown when there are no options yet or options is undefined (optional).\n */\n loadingOptionsHelper?: string;\n /**\n * Error message displayed below the dropdown (optional)\n */\n error?: unknown;\n /**\n * Shows red border even without an error message\n */\n errorStatus?: boolean;\n /**\n * Placeholder text shown when no value is selected.\n */\n placeholder?: string;\n /**\n * Enables a button to clear the selected value (default: false)\n */\n clearable?: boolean;\n /**\n * If `true`, the dropdown component is marked as required.\n */\n required?: boolean;\n /**\n * If `true`, the dropdown component is disabled and cannot be interacted with.\n */\n disabled?: boolean;\n /**\n * Custom icon (16px) class for the dropdown arrow (optional)\n */\n arrowIcon?: MaskIconName16;\n /**\n * Custom icon (24px) class for the dropdown arrow (optional)\n */\n arrowIconLarge?: MaskIconName24;\n /**\n * Option list item size\n */\n optionSize?: \"small\" | \"medium\";\n /**\n * Makes some of corners not rounded\n * */\n groupPosition?:\n | \"top\"\n | \"bottom\"\n | \"left\"\n | \"right\"\n | \"top-left\"\n | \"top-right\"\n | \"bottom-left\"\n | \"bottom-right\"\n | \"middle\";\n }>(),\n {\n label: \"\",\n helper: undefined,\n loadingOptionsHelper: undefined,\n error: undefined,\n showErrorMessage: true,\n placeholder: \"...\",\n clearable: false,\n required: false,\n disabled: false,\n arrowIcon: undefined,\n arrowIconLarge: undefined,\n optionSize: \"small\",\n options: undefined,\n groupPosition: undefined,\n },\n);\n\nconst rootRef = ref<HTMLElement | undefined>();\nconst input = ref<HTMLInputElement | undefined>();\n\nconst optionListRef = useTemplateRef<InstanceType<typeof OptionList>>(\"optionListRef\");\n\nconst data = reactive({\n search: \"\",\n activeIndex: -1,\n open: false,\n optionsHeight: 0,\n});\n\nconst findActiveIndex = () =>\n tap(\n orderedRef.value.findIndex((o) => deepEqual(o.value, props.modelValue)),\n (v) => (v < 0 ? 0 : v),\n );\n\nconst updateActive = () => (data.activeIndex = findActiveIndex());\n\nconst isLoadingOptions = computed(() => {\n return props.options === undefined;\n});\n\n/**\n * Loading spinner should not be shown when the dropdown is explicitly disabled,\n * even if options are undefined. The disabled state takes precedence.\n */\nconst showLoadingSpinner = computed(() => {\n return !props.disabled && isLoadingOptions.value;\n});\n\nconst isDisabled = computed(() => {\n if (isLoadingOptions.value) {\n return true;\n }\n\n return props.disabled;\n});\n\nconst selectedIndex = computed(() => {\n return (props.options ?? []).findIndex((o) => deepEqual(o.value, props.modelValue));\n});\n\nconst computedError = computed(() => {\n if (isLoadingOptions.value) {\n return undefined;\n }\n\n if (props.error) {\n return getErrorMessage(props.error);\n }\n\n if (props.modelValue !== undefined && selectedIndex.value === -1) {\n return \"The selected value is not one of the options\";\n }\n\n return undefined;\n});\n\nconst optionsRef = computed<LOption<M>[]>(() =>\n normalizeListOptions(props.options ?? []).map((opt, index) => ({\n ...opt,\n index,\n isSelected: index === selectedIndex.value,\n isActive: index === data.activeIndex,\n })),\n);\n\nconst textValue = computed(() => {\n const options = unref(optionsRef);\n\n const item: ListOption | undefined = options.find((o) => deepEqual(o.value, props.modelValue));\n\n return item?.label || props.modelValue; // @todo show inner value?\n});\n\nconst computedPlaceholder = computed(() => {\n if (!data.open && props.modelValue !== undefined) {\n return \"\";\n }\n\n return props.modelValue ? String(textValue.value) : props.placeholder;\n});\n\nconst hasValue = computed(() => {\n return props.modelValue !== undefined && props.modelValue !== null;\n});\n\nconst filteredRef = computed(() => {\n const options = optionsRef.value;\n\n if (data.search) {\n return options.filter((o: ListOptionNormalized) => {\n const search = data.search.toLowerCase();\n\n if (o.label.toLowerCase().includes(search)) {\n return true;\n }\n\n if (o.description && o.description.toLowerCase().includes(search)) {\n return true;\n }\n\n if (typeof o.value === \"string\") {\n return o.value.toLowerCase().includes(search);\n }\n\n return o.value === data.search;\n });\n }\n\n return options;\n});\n\nconst { orderedRef, groupsRef, restRef } = useGroupBy(filteredRef, \"group\");\n\nconst tabindex = computed(() => (isDisabled.value ? undefined : \"0\"));\n\nconst selectOption = (v: M | undefined) => {\n emit(\"update:modelValue\", v);\n data.search = \"\";\n data.open = false;\n rootRef?.value?.focus();\n};\n\nconst selectOptionWrapper = (v: unknown) => {\n selectOption(v as M | undefined);\n};\n\nconst clear = () => emit(\"update:modelValue\", undefined);\n\nconst setFocusOnInput = () => input.value?.focus();\n\nconst toggleOpen = () => {\n data.open = !data.open;\n if (!data.open) {\n data.search = \"\";\n }\n};\n\nconst onInputFocus = () => (data.open = true);\n\nconst onFocusOut = (event: FocusEvent) => {\n const relatedTarget = event.relatedTarget as Node | null;\n\n if (\n !rootRef.value?.contains(relatedTarget) &&\n !optionListRef.value?.listRef?.contains(relatedTarget)\n ) {\n data.search = \"\";\n data.open = false;\n }\n};\n\nconst handleKeydown = (e: { code: string; preventDefault(): void }) => {\n if (![\"ArrowDown\", \"ArrowUp\", \"Enter\", \"Escape\"].includes(e.code)) {\n return;\n } else {\n e.preventDefault();\n }\n\n const { open, activeIndex } = data;\n\n if (!open) {\n if (e.code === \"Enter\") {\n data.open = true;\n }\n return;\n }\n\n if (e.code === \"Escape\") {\n data.open = false;\n rootRef.value?.focus();\n }\n\n const ordered = orderedRef.value;\n\n const { length } = ordered;\n\n if (!length) {\n return;\n }\n\n if (e.code === \"Enter\") {\n selectOption(ordered.find((it) => it.index === activeIndex)?.value);\n }\n\n const localIndex = ordered.findIndex((it) => it.index === activeIndex) ?? -1;\n\n const delta = e.code === \"ArrowDown\" ? 1 : e.code === \"ArrowUp\" ? -1 : 0;\n\n const newIndex = Math.abs(localIndex + delta + length) % length;\n\n data.activeIndex = ordered[newIndex].index ?? -1;\n};\n\nuseLabelNotch(rootRef);\n\nwatch(() => props.modelValue, updateActive, { immediate: true });\n\nwatch(\n () => data.open,\n (open) => (open ? input.value?.focus() : \"\"),\n);\n\nwatchPostEffect(() => {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n data.search; // to watch\n\n if (data.activeIndex >= 0 && data.open) {\n optionListRef.value?.scrollIntoActive();\n }\n});\n</script>\n\n<template>\n <div class=\"pl-dropdown__envelope\" @click=\"setFocusOnInput\">\n <div\n ref=\"rootRef\"\n :tabindex=\"tabindex\"\n class=\"pl-dropdown\"\n :class=\"{ open: data.open, error: error || errorStatus, disabled: isDisabled }\"\n @keydown=\"handleKeydown\"\n @focusout=\"onFocusOut\"\n >\n <div class=\"pl-dropdown__container\">\n <div class=\"pl-dropdown__field\">\n <input\n ref=\"input\"\n v-model=\"data.search\"\n type=\"text\"\n tabindex=\"-1\"\n :disabled=\"isDisabled\"\n :placeholder=\"computedPlaceholder\"\n spellcheck=\"false\"\n autocomplete=\"chrome-off\"\n @focus=\"onInputFocus\"\n />\n\n <div v-if=\"!data.open\" class=\"input-value\">\n <LongText> {{ textValue }} </LongText>\n </div>\n\n <div class=\"pl-dropdown__controls\">\n <PlIcon24 v-if=\"showLoadingSpinner\" name=\"loading\" />\n <PlIcon16\n v-if=\"clearable && hasValue\"\n class=\"clear\"\n name=\"delete-clear\"\n @click.stop=\"clear\"\n />\n <slot name=\"append\" />\n <div class=\"pl-dropdown__arrow-wrapper\" @click.stop=\"toggleOpen\">\n <PlIcon24 v-if=\"arrowIconLarge\" :name=\"arrowIconLarge\" class=\"arrow-icon\" />\n <PlIcon16 v-else-if=\"arrowIcon\" :name=\"arrowIcon\" class=\"arrow-icon\" />\n <PlIcon16 v-else name=\"chevron-down\" class=\"arrow-icon arrow-icon-default\" />\n </div>\n </div>\n </div>\n <label v-if=\"label\">\n <PlSvg v-if=\"required\" :uri=\"SvgRequired\" />\n <span>{{ label }}</span>\n <PlTooltip v-if=\"$slots.tooltip\" class=\"info\" position=\"top\">\n <template #tooltip>\n <slot name=\"tooltip\" />\n </template>\n </PlTooltip>\n </label>\n <OptionList\n v-if=\"data.open\"\n ref=\"optionListRef\"\n :root-ref=\"rootRef!\"\n :groups=\"groupsRef\"\n :rest=\"restRef\"\n :option-size=\"optionSize\"\n :select-option=\"selectOptionWrapper\"\n />\n <DoubleContour class=\"pl-dropdown__contour\" :group-position=\"groupPosition\" />\n </div>\n </div>\n <div v-if=\"computedError\" class=\"pl-dropdown__error\">{{ computedError }}</div>\n <div v-else-if=\"showLoadingSpinner && loadingOptionsHelper\" class=\"pl-dropdown__helper\">\n {{ loadingOptionsHelper }}\n </div>\n <div v-else-if=\"helper\" class=\"pl-dropdown__helper\">{{ helper }}</div>\n </div>\n</template>\n"],"names":["__default__","emit","__emit","props","__props","rootRef","ref","input","optionListRef","useTemplateRef","data","reactive","findActiveIndex","tap","orderedRef","o","deepEqual","v","updateActive","isLoadingOptions","computed","showLoadingSpinner","isDisabled","selectedIndex","computedError","getErrorMessage","optionsRef","normalizeListOptions","opt","index","textValue","item","unref","computedPlaceholder","hasValue","filteredRef","options","search","groupsRef","restRef","useGroupBy","tabindex","selectOption","_a","selectOptionWrapper","clear","setFocusOnInput","toggleOpen","onInputFocus","onFocusOut","event","relatedTarget","_c","_b","handleKeydown","open","activeIndex","ordered","length","it","localIndex","delta","newIndex","useLabelNotch","watch","watchPostEffect","_createElementBlock","_createElementVNode","_normalizeClass","_hoisted_2","_hoisted_3","_cache","$event","_vModelText","_openBlock","_hoisted_5","_createVNode","LongText","_hoisted_6","_createBlock","_unref","PlIcon24","PlIcon16","_renderSlot","_ctx","_hoisted_7","PlSvg","SvgRequired","$slots","PlTooltip","OptionList","DoubleContour","_hoisted_8","_toDisplayString","_hoisted_9","_hoisted_10"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAIAA,KAAe;AAAA,EACb,MAAM;AACR;;;;;;;;;;;;;;;;;;;;;AAuBA,UAAMC,IAAOC,GAOPC,IAAQC,GA0FRC,IAAUC,EAAA,GACVC,IAAQD,EAAA,GAERE,IAAgBC,GAAgD,eAAe,GAE/EC,IAAOC,GAAS;AAAA,MACpB,QAAQ;AAAA,MACR,aAAa;AAAA,MACb,MAAM;AAAA,MACN,eAAe;AAAA,IAAA,CAChB,GAEKC,IAAkB,MACtBC;AAAA,MACEC,EAAW,MAAM,UAAU,CAACC,MAAMC,EAAUD,EAAE,OAAOZ,EAAM,UAAU,CAAC;AAAA,MACtE,CAACc,MAAOA,IAAI,IAAI,IAAIA;AAAA,IAAA,GAGlBC,IAAe,MAAOR,EAAK,cAAcE,EAAA,GAEzCO,IAAmBC,EAAS,MACzBjB,EAAM,YAAY,MAC1B,GAMKkB,IAAqBD,EAAS,MAC3B,CAACjB,EAAM,YAAYgB,EAAiB,KAC5C,GAEKG,IAAaF,EAAS,MACtBD,EAAiB,QACZ,KAGFhB,EAAM,QACd,GAEKoB,IAAgBH,EAAS,OACrBjB,EAAM,WAAW,CAAA,GAAI,UAAU,CAACY,MAAMC,EAAUD,EAAE,OAAOZ,EAAM,UAAU,CAAC,CACnF,GAEKqB,IAAgBJ,EAAS,MAAM;AACnC,UAAI,CAAAD,EAAiB,OAIrB;AAAA,YAAIhB,EAAM;AACR,iBAAOsB,GAAgBtB,EAAM,KAAK;AAGpC,YAAIA,EAAM,eAAe,UAAaoB,EAAc,UAAU;AAC5D,iBAAO;AAAA;AAAA,IAIX,CAAC,GAEKG,IAAaN;AAAA,MAAuB,MACxCO,GAAqBxB,EAAM,WAAW,CAAA,CAAE,EAAE,IAAI,CAACyB,GAAKC,OAAW;AAAA,QAC7D,GAAGD;AAAA,QACH,OAAAC;AAAA,QACA,YAAYA,MAAUN,EAAc;AAAA,QACpC,UAAUM,MAAUnB,EAAK;AAAA,MAAA,EACzB;AAAA,IAAA,GAGEoB,IAAYV,EAAS,MAAM;AAG/B,YAAMW,IAFUC,EAAMN,CAAU,EAEa,KAAK,CAACX,MAAMC,EAAUD,EAAE,OAAOZ,EAAM,UAAU,CAAC;AAE7F,cAAO4B,KAAA,gBAAAA,EAAM,UAAS5B,EAAM;AAAA,IAC9B,CAAC,GAEK8B,IAAsBb,EAAS,MAC/B,CAACV,EAAK,QAAQP,EAAM,eAAe,SAC9B,KAGFA,EAAM,aAAa,OAAO2B,EAAU,KAAK,IAAI3B,EAAM,WAC3D,GAEK+B,IAAWd,EAAS,MACjBjB,EAAM,eAAe,UAAaA,EAAM,eAAe,IAC/D,GAEKgC,IAAcf,EAAS,MAAM;AACjC,YAAMgB,IAAUV,EAAW;AAE3B,aAAIhB,EAAK,SACA0B,EAAQ,OAAO,CAACrB,MAA4B;AACjD,cAAMsB,IAAS3B,EAAK,OAAO,YAAA;AAM3B,eAJIK,EAAE,MAAM,YAAA,EAAc,SAASsB,CAAM,KAIrCtB,EAAE,eAAeA,EAAE,YAAY,cAAc,SAASsB,CAAM,IACvD,KAGL,OAAOtB,EAAE,SAAU,WACdA,EAAE,MAAM,YAAA,EAAc,SAASsB,CAAM,IAGvCtB,EAAE,UAAUL,EAAK;AAAA,MAC1B,CAAC,IAGI0B;AAAA,IACT,CAAC,GAEK,EAAE,YAAAtB,GAAY,WAAAwB,GAAW,SAAAC,MAAYC,GAAWL,GAAa,OAAO,GAEpEM,IAAWrB,EAAS,MAAOE,EAAW,QAAQ,SAAY,GAAI,GAE9DoB,IAAe,CAACzB,MAAqB;;AACzC,MAAAhB,EAAK,qBAAqBgB,CAAC,GAC3BP,EAAK,SAAS,IACdA,EAAK,OAAO,KACZiC,IAAAtC,KAAA,gBAAAA,EAAS,UAAT,QAAAsC,EAAgB;AAAA,IAClB,GAEMC,IAAsB,CAAC3B,MAAe;AAC1C,MAAAyB,EAAazB,CAAkB;AAAA,IACjC,GAEM4B,IAAQ,MAAM5C,EAAK,qBAAqB,MAAS,GAEjD6C,IAAkB,MAAA;;AAAM,cAAAH,IAAApC,EAAM,UAAN,gBAAAoC,EAAa;AAAA,OAErCI,IAAa,MAAM;AACvB,MAAArC,EAAK,OAAO,CAACA,EAAK,MACbA,EAAK,SACRA,EAAK,SAAS;AAAA,IAElB,GAEMsC,KAAe,MAAOtC,EAAK,OAAO,IAElCuC,KAAa,CAACC,MAAsB;;AACxC,YAAMC,IAAgBD,EAAM;AAE5B,MACE,GAACP,IAAAtC,EAAQ,UAAR,QAAAsC,EAAe,SAASQ,OACzB,GAACC,KAAAC,IAAA7C,EAAc,UAAd,gBAAA6C,EAAqB,YAArB,QAAAD,EAA8B,SAASD,QAExCzC,EAAK,SAAS,IACdA,EAAK,OAAO;AAAA,IAEhB,GAEM4C,KAAgB,CAAC,MAAgD;;AACrE,UAAK,CAAC,aAAa,WAAW,SAAS,QAAQ,EAAE,SAAS,EAAE,IAAI;AAG9D,UAAE,eAAA;AAAA;AAFF;AAKF,YAAM,EAAE,MAAAC,GAAM,aAAAC,EAAA,IAAgB9C;AAE9B,UAAI,CAAC6C,GAAM;AACT,QAAI,EAAE,SAAS,YACb7C,EAAK,OAAO;AAEd;AAAA,MACF;AAEA,MAAI,EAAE,SAAS,aACbA,EAAK,OAAO,KACZiC,IAAAtC,EAAQ,UAAR,QAAAsC,EAAe;AAGjB,YAAMc,IAAU3C,EAAW,OAErB,EAAE,QAAA4C,MAAWD;AAEnB,UAAI,CAACC;AACH;AAGF,MAAI,EAAE,SAAS,WACbhB,GAAaW,IAAAI,EAAQ,KAAK,CAACE,MAAOA,EAAG,UAAUH,CAAW,MAA7C,gBAAAH,EAAgD,KAAK;AAGpE,YAAMO,KAAaH,EAAQ,UAAU,CAACE,MAAOA,EAAG,UAAUH,CAAW,KAAK,IAEpEK,KAAQ,EAAE,SAAS,cAAc,IAAI,EAAE,SAAS,YAAY,KAAK,GAEjEC,KAAW,KAAK,IAAIF,KAAaC,KAAQH,CAAM,IAAIA;AAEzD,MAAAhD,EAAK,cAAc+C,EAAQK,EAAQ,EAAE,SAAS;AAAA,IAChD;AAEA,WAAAC,GAAc1D,CAAO,GAErB2D,EAAM,MAAM7D,EAAM,YAAYe,GAAc,EAAE,WAAW,IAAM,GAE/D8C;AAAA,MACE,MAAMtD,EAAK;AAAA,MACX,CAAC6C,MAAA;;AAAU,eAAAA,KAAOZ,IAAApC,EAAM,UAAN,gBAAAoC,EAAa,UAAU;AAAA;AAAA,IAAA,GAG3CsB,GAAgB,MAAM;;AAEpB,MAAAvD,EAAK,QAEDA,EAAK,eAAe,KAAKA,EAAK,UAChCiC,IAAAnC,EAAc,UAAd,QAAAmC,EAAqB;AAAA,IAEzB,CAAC,mBAICuB,EAqEM,OAAA;AAAA,MArED,OAAM;AAAA,MAAyB,SAAOpB;AAAA,IAAA;MACzCqB,EA8DM,OAAA;AAAA,iBA7DA;AAAA,QAAJ,KAAI9D;AAAA,QACH,UAAUoC,EAAA;AAAA,QACX,OAAK2B,GAAA,CAAC,eAAa,EAAA,MACH1D,EAAK,MAAI,OAASN,EAAA,SAASA,EAAA,aAAW,UAAYkB,EAAA,MAAA,CAAU,CAAA;AAAA,QAC3E,WAASgC;AAAA,QACT,YAAUL;AAAA,MAAA;QAEXkB,EAqDM,OArDNE,IAqDM;AAAA,UApDJF,EAgCM,OAhCNG,IAgCM;AAAA,eA/BJH,EAUE,SAAA;AAAA,uBATI;AAAA,cAAJ,KAAI5D;AAAA,cACK,uBAAAgE,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAC,MAAA9D,EAAK,SAAM8D;AAAA,cACpB,MAAK;AAAA,cACL,UAAS;AAAA,cACR,UAAUlD,EAAA;AAAA,cACV,aAAaW,EAAA;AAAA,cACd,YAAW;AAAA,cACX,cAAa;AAAA,cACZ,SAAOe;AAAA,YAAA;cAPC,CAAAyB,IAAA/D,EAAK,MAAM;AAAA,YAAA;YAUVA,EAAK,oBAAjBgE,KAAAR,EAEM,OAFNS,IAEM;AAAA,cADJC,EAAsCC,IAAA,MAAA;AAAA,2BAA3B,MAAe;AAAA,uBAAZ/C,EAAA,KAAS,GAAA,CAAA;AAAA,gBAAA;;;;YAGzBqC,EAcM,OAdNW,IAcM;AAAA,cAbYzD,EAAA,cAAhB0D,EAAqDC,EAAAC,CAAA,GAAA;AAAA;gBAAjB,MAAK;AAAA,cAAA;cAEjC7E,EAAA,aAAa8B,EAAA,cADrB6C,EAKEC,EAAAE,CAAA,GAAA;AAAA;gBAHA,OAAM;AAAA,gBACN,MAAK;AAAA,gBACJ,WAAYrC,GAAK,CAAA,MAAA,CAAA;AAAA,cAAA;cAEpBsC,EAAsBC,EAAA,QAAA,QAAA;AAAA,cACtBjB,EAIM,OAAA;AAAA,gBAJD,OAAM;AAAA,gBAA8B,WAAYpB,GAAU,CAAA,MAAA,CAAA;AAAA,cAAA;gBAC7C3C,EAAA,uBAAhB2E,EAA4EC,EAAAC,CAAA,GAAA;AAAA;kBAA3C,MAAM7E,EAAA;AAAA,kBAAgB,OAAM;AAAA,gBAAA,yBACxCA,EAAA,kBAArB2E,EAAuEC,EAAAE,CAAA,GAAA;AAAA;kBAAtC,MAAM9E,EAAA;AAAA,kBAAW,OAAM;AAAA,gBAAA,+BACxD2E,EAA6EC,EAAAE,CAAA,GAAA;AAAA;kBAA5D,MAAK;AAAA,kBAAe,OAAM;AAAA,gBAAA;;;;UAIpC9E,EAAA,cAAb8D,EAQQ,SAAAmB,IAAA;AAAA,YAPOjF,EAAA,iBAAb2E,EAA4CC,EAAAM,EAAA,GAAA;AAAA;cAApB,KAAKN,EAAAO,EAAA;AAAA,YAAA;YAC7BpB,EAAwB,gBAAf/D,EAAA,KAAK,GAAA,CAAA;AAAA,YACGoF,EAAAA,OAAO,gBAAxBT,EAIYC,EAAAS,EAAA,GAAA;AAAA;cAJqB,OAAM;AAAA,cAAO,UAAS;AAAA,YAAA;cAC1C,WACT,MAAuB;AAAA,gBAAvBN,EAAuBC,EAAA,QAAA,SAAA;AAAA,cAAA;;;;UAKrB1E,EAAK,aADbqE,EAQEW,IAAA;AAAA;qBANI;AAAA,YAAJ,KAAIlF;AAAA,YACH,YAAUH,EAAA;AAAA,YACV,QAAQ2E,EAAA1C,CAAA;AAAA,YACR,MAAM0C,EAAAzC,CAAA;AAAA,YACN,eAAanC,EAAA;AAAA,YACb,iBAAewC;AAAA,UAAA;UAElBgC,EAA8Ee,IAAA;AAAA,YAA/D,OAAM;AAAA,YAAwB,kBAAgBvF,EAAA;AAAA,UAAA;;;MAGtDoB,EAAA,cAAX0C,EAA8E,OAA9E0B,IAA8EC,EAAtBrE,EAAA,KAAa,GAAA,CAAA,KACrDH,EAAA,SAAsBjB,EAAA,6BAAtC8D,EAEM,OAFN4B,IAEMD,EADDzF,EAAA,oBAAoB,GAAA,CAAA,KAETA,EAAA,eAAhB8D,EAAsE,OAAtE6B,IAAsEF,EAAfzF,EAAA,MAAM,GAAA,CAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/PlDropdown/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAExD,MAAM,MAAM,OAAO,CAAC,CAAC,GAAG,OAAO,IAAI,oBAAoB,CAAC,CAAC,CAAC,GAAG;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/PlDropdown/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAExD,MAAM,MAAM,OAAO,CAAC,CAAC,GAAG,OAAO,IAAI,oBAAoB,CAAC,CAAC,CAAC,GAAG;IAC3D,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useGroupBy.d.ts","sourceRoot":"","sources":["../../../src/components/PlDropdown/useGroupBy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AA6C/B,wBAAgB,UAAU,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"useGroupBy.d.ts","sourceRoot":"","sources":["../../../src/components/PlDropdown/useGroupBy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AA6C/B,wBAAgB,UAAU,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC;;;;EAcxE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useGroupBy.js","sources":["../../../src/components/PlDropdown/useGroupBy.ts"],"sourcesContent":["import type { Ref } from
|
|
1
|
+
{"version":3,"file":"useGroupBy.js","sources":["../../../src/components/PlDropdown/useGroupBy.ts"],"sourcesContent":["import type { Ref } from \"vue\";\nimport { computed } from \"vue\";\n\nfunction groupBy<T, K extends keyof T>(\n list: T[],\n groupBy: K,\n): {\n grouped: Map<NonNullable<T[K]>, T[]>;\n rest: T[];\n ordered: T[];\n} {\n const grouped: Map<NonNullable<T[K]>, T[]> = new Map();\n\n if (!list) {\n return {\n grouped,\n rest: [],\n ordered: [],\n };\n }\n\n // Group items by the specified key\n for (const item of list) {\n const key = item[groupBy];\n if (key === undefined) continue;\n if (key === null) continue;\n if (!grouped.has(key)) grouped.set(key, []);\n grouped.get(key)?.push(item);\n }\n\n // Items without a group key\n const rest = list.filter((item: T) => {\n const key = item[groupBy];\n return key === undefined || key === null;\n });\n\n const ordered = [...Array.from(grouped.values()).flat(), ...rest];\n\n return {\n grouped,\n rest,\n ordered,\n };\n}\n\nexport function useGroupBy<T, K extends keyof T>(list: Ref<T[]>, byKey: K) {\n const result = computed(() => groupBy(list.value, byKey));\n\n const orderedRef = computed(() => result.value.ordered);\n\n const groupsRef = computed(() => result.value.grouped);\n\n const restRef = computed(() => result.value.rest);\n\n return {\n orderedRef,\n groupsRef,\n restRef,\n };\n}\n"],"names":["groupBy","list","grouped","item","key","_a","rest","ordered","useGroupBy","byKey","result","computed","orderedRef","groupsRef","restRef"],"mappings":";AAGA,SAASA,EACPC,GACAD,GAKA;;AACA,QAAME,wBAA2C,IAAA;AAEjD,MAAI,CAACD;AACH,WAAO;AAAA,MACL,SAAAC;AAAA,MACA,MAAM,CAAA;AAAA,MACN,SAAS,CAAA;AAAA,IAAC;AAKd,aAAWC,KAAQF,GAAM;AACvB,UAAMG,IAAMD,EAAKH,CAAO;AACxB,IAAII,MAAQ,UACRA,MAAQ,SACPF,EAAQ,IAAIE,CAAG,KAAGF,EAAQ,IAAIE,GAAK,EAAE,IAC1CC,IAAAH,EAAQ,IAAIE,CAAG,MAAf,QAAAC,EAAkB,KAAKF;AAAA,EACzB;AAGA,QAAMG,IAAOL,EAAK,OAAO,CAACE,MAAY;AACpC,UAAMC,IAAMD,EAAKH,CAAO;AACxB,WAA4BI,KAAQ;AAAA,EACtC,CAAC,GAEKG,IAAU,CAAC,GAAG,MAAM,KAAKL,EAAQ,OAAA,CAAQ,EAAE,QAAQ,GAAGI,CAAI;AAEhE,SAAO;AAAA,IACL,SAAAJ;AAAA,IACA,MAAAI;AAAA,IACA,SAAAC;AAAA,EAAA;AAEJ;AAEO,SAASC,EAAiCP,GAAgBQ,GAAU;AACzE,QAAMC,IAASC,EAAS,MAAMX,EAAQC,EAAK,OAAOQ,CAAK,CAAC,GAElDG,IAAaD,EAAS,MAAMD,EAAO,MAAM,OAAO,GAEhDG,IAAYF,EAAS,MAAMD,EAAO,MAAM,OAAO,GAE/CI,IAAUH,EAAS,MAAMD,EAAO,MAAM,IAAI;AAEhD,SAAO;AAAA,IACL,YAAAE;AAAA,IACA,WAAAC;AAAA,IACA,SAAAC;AAAA,EAAA;AAEJ;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlDropdownLegacy.vue.d.ts","sourceRoot":"","sources":["../../../src/components/PlDropdownLegacy/PlDropdownLegacy.vue"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"PlDropdownLegacy.vue.d.ts","sourceRoot":"","sources":["../../../src/components/PlDropdownLegacy/PlDropdownLegacy.vue"],"names":[],"mappings":"AA2YA,OAAO,2BAA2B,CAAC;AAMnC,OAAO,KAAK,EAAE,UAAU,EAAwB,MAAM,aAAa,CAAC;AAapE;;GAEG;yBACc,CAAC,yBACJ,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,cAClD,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC,iBAC5F,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC;WA+kB1D,mBAAmB,CAAC;;;QApkBxB;;WAEG;oBACS,CAAC;QACb;;WAEG;gBACK,MAAM;QACd;;WAEG;kBACO,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;QACnC;;WAEG;iBACM,MAAM;QACf;;WAEG;+BACoB,MAAM;QAC7B;;WAEG;gBACK,OAAO;QACf;;WAEG;sBACW,MAAM;QACpB;;WAEG;oBACS,OAAO;QACnB;;WAEG;mBACQ,OAAO;QAClB;;WAEG;mBACQ,OAAO;QAClB;;WAEG;oBACS,MAAM;QAClB;;WAEG;yBACc,MAAM;QACvB;;WAEG;qBACU,OAAO,GAAG,QAAQ;mBAihB2D,CAAC,4BAA2B;oBACzG,OAAO,KAAK,EAAE,gBAAgB,CAAC,EAAE,CAAC,GAAG,IAAI;WAClD,GAAG;;wBA/DkB,GAAG;yBACF,GAAG;;cA7gB3B,mBAAmB,SAAS,CAAC,GAAG,SAAS,KAAG,IAAI;;;;YAglBV,OAAO,CAAC,OAAO,WAAW,CAAC;;AAzlBvE,wBAylB4E;AAG5E,KAAK,mBAAmB,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAG,GAAG,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlDropdownLegacy.vue.js","sources":["../../../src/components/PlDropdownLegacy/PlDropdownLegacy.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * A component for selecting one value from a list of options\n */\nexport default {\n name: 'PlDropdown',\n};\n</script>\n\n<script lang=\"ts\" setup generic=\"M = unknown\">\nimport './pl-dropdown-legacy.scss';\nimport { computed, reactive, ref, unref, useSlots, watch, watchPostEffect } from 'vue';\nimport { tap, tapIf } from '../../helpers/functions';\nimport { PlTooltip } from '../PlTooltip';\nimport DoubleContour from '../../utils/DoubleContour.vue';\nimport { useLabelNotch } from '../../utils/useLabelNotch';\nimport type { ListOption, ListOptionNormalized } from '../../types';\nimport { scrollIntoView } from '../../helpers/dom';\nimport { deepEqual } from '../../helpers/objects';\nimport DropdownListItem from '../DropdownListItem.vue';\nimport LongText from '../LongText.vue';\nimport { PlIcon16 } from '../PlIcon16';\nimport { PlMaskIcon24 } from '../PlMaskIcon24';\nimport { normalizeListOptions } from '../../helpers/utils';\nimport { getErrorMessage } from '../../helpers/error.ts';\nimport { PlSvg } from '../PlSvg';\nimport SvgRequired from '../../assets/images/required.svg?raw';\n\nconst emit = defineEmits<{\n /**\n * Emitted when the model value is updated.\n */\n (e: 'update:modelValue', value: M | undefined): void;\n}>();\n\nconst props = withDefaults(\n defineProps<{\n /**\n * The current selected value of the dropdown.\n */\n modelValue: M;\n /**\n * The label text for the dropdown field (optional)\n */\n label?: string;\n /**\n * List of available options for the dropdown\n */\n options?: Readonly<ListOption<M>[]>;\n /**\n * A helper text displayed below the dropdown when there are no errors (optional).\n */\n helper?: string;\n /**\n * A helper text displayed below the dropdown when there are no options yet or options is undefined (optional).\n */\n loadingOptionsHelper?: string;\n /**\n * Error message displayed below the dropdown (optional)\n */\n error?: unknown;\n /**\n * Placeholder text shown when no value is selected.\n */\n placeholder?: string;\n /**\n * Enables a button to clear the selected value (default: false)\n */\n clearable?: boolean;\n /**\n * If `true`, the dropdown component is marked as required.\n */\n required?: boolean;\n /**\n * If `true`, the dropdown component is disabled and cannot be interacted with.\n */\n disabled?: boolean;\n /**\n * Custom icon (16px) class for the dropdown arrow (optional)\n */\n arrowIcon?: string;\n /**\n * Custom icon (24px) class for the dropdown arrow (optional)\n */\n arrowIconLarge?: string;\n /**\n * Option list item size\n */\n optionSize?: 'small' | 'medium';\n }>(),\n {\n label: '',\n helper: undefined,\n loadingOptionsHelper: undefined,\n error: undefined,\n placeholder: '...',\n clearable: false,\n required: false,\n disabled: false,\n arrowIcon: undefined,\n arrowIconLarge: undefined,\n optionSize: 'small',\n options: undefined,\n },\n);\n\nconst slots = useSlots();\n\nconst root = ref<HTMLElement | undefined>();\nconst list = ref<HTMLElement | undefined>();\nconst input = ref<HTMLInputElement | undefined>();\n\nconst data = reactive({\n search: '',\n activeIndex: -1,\n open: false,\n});\n\nconst findActiveIndex = () =>\n tap(\n filteredRef.value.findIndex((o) => deepEqual(o.value, props.modelValue)),\n (v) => (v < 0 ? 0 : v),\n );\n\nconst updateActive = () => (data.activeIndex = findActiveIndex());\n\nconst isLoadingOptions = computed(() => {\n return props.options === undefined;\n});\n\nconst isDisabled = computed(() => {\n if (isLoadingOptions.value) {\n return true;\n }\n\n return props.disabled;\n});\n\nconst selectedIndex = computed(() => {\n return (props.options ?? []).findIndex((o) => deepEqual(o.value, props.modelValue));\n});\n\nconst computedError = computed(() => {\n if (isLoadingOptions.value) {\n return undefined;\n }\n\n if (props.error) {\n return getErrorMessage(props.error);\n }\n\n if (props.modelValue !== undefined && selectedIndex.value === -1) {\n return 'The selected value is not one of the options';\n }\n\n return undefined;\n});\n\nconst optionsRef = computed(() =>\n normalizeListOptions(props.options ?? []).map((opt, index) => ({\n ...opt,\n index,\n isSelected: index === selectedIndex.value,\n isActive: index === data.activeIndex,\n })),\n);\n\nconst textValue = computed(() => {\n const options = unref(optionsRef);\n\n const item: ListOption | undefined = options.find((o) => deepEqual(o.value, props.modelValue));\n\n return item?.label || props.modelValue; // @todo show inner value?\n});\n\nconst computedPlaceholder = computed(() => {\n if (!data.open && props.modelValue) {\n return '';\n }\n\n return props.modelValue ? String(textValue.value) : props.placeholder;\n});\n\nconst hasValue = computed(() => {\n return props.modelValue !== undefined && props.modelValue !== null;\n});\n\nconst filteredRef = computed(() => {\n const options = optionsRef.value;\n\n if (data.search) {\n return options.filter((o: ListOptionNormalized) => {\n const search = data.search.toLowerCase();\n\n if (o.label.toLowerCase().includes(search)) {\n return true;\n }\n\n if (o.description && o.description.toLowerCase().includes(search)) {\n return true;\n }\n\n if (typeof o.value === 'string') {\n return o.value.toLowerCase().includes(search);\n }\n\n return o.value === data.search;\n });\n }\n\n return options;\n});\n\nconst tabindex = computed(() => (isDisabled.value ? undefined : '0'));\n\nconst selectOption = (v: M | undefined) => {\n emit('update:modelValue', v);\n data.search = '';\n data.open = false;\n root?.value?.focus();\n};\n\nconst clear = () => emit('update:modelValue', undefined);\n\nconst setFocusOnInput = () => input.value?.focus();\n\nconst toggleOpen = () => (data.open = !data.open);\n\nconst onInputFocus = () => (data.open = true);\n\nconst onFocusOut = (event: FocusEvent) => {\n if (!root?.value?.contains(event.relatedTarget as Node | null)) {\n data.search = '';\n data.open = false;\n }\n};\n\nconst scrollIntoActive = () => {\n const $list = list.value;\n\n if (!$list) {\n return;\n }\n\n tapIf($list.querySelector('.hovered-item') as HTMLElement, (opt) => {\n scrollIntoView($list, opt);\n });\n};\n\nconst handleKeydown = (e: { code: string; preventDefault(): void }) => {\n if (!['ArrowDown', 'ArrowUp', 'Enter', 'Escape'].includes(e.code)) {\n return;\n } else {\n e.preventDefault();\n }\n\n const { open, activeIndex } = data;\n\n if (!open) {\n if (e.code === 'Enter') {\n data.open = true;\n }\n return;\n }\n\n if (e.code === 'Escape') {\n data.open = false;\n root.value?.focus();\n }\n\n const filtered = unref(filteredRef);\n\n const { length } = filtered;\n\n if (!length) {\n return;\n }\n\n if (e.code === 'Enter') {\n selectOption(filtered.find((it) => it.index === activeIndex)?.value);\n }\n\n const localIndex = filtered.findIndex((it) => it.index === activeIndex) ?? -1;\n\n const delta = e.code === 'ArrowDown' ? 1 : e.code === 'ArrowUp' ? -1 : 0;\n\n const newIndex = Math.abs(localIndex + delta + length) % length;\n\n data.activeIndex = filteredRef.value[newIndex].index ?? -1;\n};\n\nuseLabelNotch(root);\n\nwatch(() => props.modelValue, updateActive, { immediate: true });\n\nwatch(\n () => data.open,\n (open) => (open ? input.value?.focus() : ''),\n);\n\nwatchPostEffect(() => {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n data.search; // to watch\n\n if (data.activeIndex >= 0 && data.open) {\n scrollIntoActive();\n }\n});\n</script>\n\n<template>\n <div class=\"ui-dropdown__envelope\">\n <div\n ref=\"root\"\n :tabindex=\"tabindex\"\n class=\"ui-dropdown\"\n :class=\"{ open: data.open, error, disabled: isDisabled }\"\n @keydown=\"handleKeydown\"\n @focusout=\"onFocusOut\"\n >\n <div class=\"ui-dropdown__container\">\n <div class=\"ui-dropdown__field\">\n <input\n ref=\"input\"\n v-model=\"data.search\"\n type=\"text\"\n tabindex=\"-1\"\n :disabled=\"isDisabled\"\n :placeholder=\"computedPlaceholder\"\n spellcheck=\"false\"\n autocomplete=\"chrome-off\"\n @focus=\"onInputFocus\"\n />\n\n <div v-if=\"!data.open\" @click=\"setFocusOnInput\">\n <LongText class=\"input-value\"> {{ textValue }} </LongText>\n </div>\n\n <div class=\"ui-dropdown__controls\">\n <PlMaskIcon24 v-if=\"isLoadingOptions\" name=\"loading\" />\n <PlIcon16 v-if=\"clearable && hasValue\" class=\"clear\" name=\"delete-clear\" @click.stop=\"clear\" />\n <slot name=\"append\" />\n <div v-if=\"arrowIconLarge\" class=\"arrow-icon\" :class=\"[`icon-24 ${arrowIconLarge}`]\" @click.stop=\"toggleOpen\" />\n <div v-else-if=\"arrowIcon\" class=\"arrow-icon\" :class=\"[`icon-16 ${arrowIcon}`]\" @click.stop=\"toggleOpen\" />\n <div v-else class=\"arrow-icon arrow-icon-default\" @click.stop=\"toggleOpen\" />\n </div>\n </div>\n <label v-if=\"label\">\n <PlSvg v-if=\"required\" :uri=\"SvgRequired\" />\n <span>{{ label }}</span>\n <PlTooltip v-if=\"slots.tooltip\" class=\"info\" position=\"top\">\n <template #tooltip>\n <slot name=\"tooltip\" />\n </template>\n </PlTooltip>\n </label>\n <div v-if=\"data.open\" ref=\"list\" class=\"ui-dropdown__options\">\n <DropdownListItem\n v-for=\"(item, index) in filteredRef\"\n :key=\"index\"\n :option=\"item\"\n :is-selected=\"item.isSelected\"\n :is-hovered=\"item.isActive\"\n :size=\"optionSize\"\n @click.stop=\"selectOption(item.value)\"\n />\n <div v-if=\"!filteredRef.length\" class=\"nothing-found\">Nothing found</div>\n </div>\n <DoubleContour class=\"ui-dropdown__contour\" />\n </div>\n </div>\n <div v-if=\"computedError\" class=\"ui-dropdown__error\">{{ computedError }}</div>\n <div v-else-if=\"isLoadingOptions && loadingOptionsHelper\" class=\"ui-dropdown__helper\">{{ loadingOptionsHelper }}</div>\n <div v-else-if=\"helper\" class=\"ui-dropdown__helper\">{{ helper }}</div>\n </div>\n</template>\n"],"names":["__default__","emit","__emit","props","__props","slots","useSlots","root","ref","list","input","data","reactive","findActiveIndex","tap","filteredRef","o","deepEqual","v","updateActive","isLoadingOptions","computed","isDisabled","selectedIndex","computedError","getErrorMessage","optionsRef","normalizeListOptions","opt","index","textValue","item","unref","computedPlaceholder","hasValue","options","search","tabindex","selectOption","_a","clear","setFocusOnInput","toggleOpen","onInputFocus","onFocusOut","event","scrollIntoActive","$list","tapIf","scrollIntoView","handleKeydown","open","activeIndex","filtered","length","_b","it","localIndex","delta","newIndex","useLabelNotch","watch","watchPostEffect","_openBlock","_createElementBlock","_hoisted_1","_createElementVNode","_normalizeClass","_hoisted_3","_hoisted_4","_cache","$event","_vModelText","_createVNode","LongText","_hoisted_6","_createBlock","_unref","PlMaskIcon24","PlIcon16","_renderSlot","_ctx","_hoisted_7","PlSvg","SvgRequired","PlTooltip","_Fragment","_renderList","DropdownListItem","_withModifiers","_hoisted_8","DoubleContour","_hoisted_9","_toDisplayString","_hoisted_10","_hoisted_11"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PlDropdownLegacy.vue.js","sources":["../../../src/components/PlDropdownLegacy/PlDropdownLegacy.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * A component for selecting one value from a list of options\n */\nexport default {\n name: \"PlDropdown\",\n};\n</script>\n\n<script lang=\"ts\" setup generic=\"M = unknown\">\nimport \"./pl-dropdown-legacy.scss\";\nimport { computed, reactive, ref, unref, useSlots, watch, watchPostEffect } from \"vue\";\nimport { tap, tapIf } from \"../../helpers/functions\";\nimport { PlTooltip } from \"../PlTooltip\";\nimport DoubleContour from \"../../utils/DoubleContour.vue\";\nimport { useLabelNotch } from \"../../utils/useLabelNotch\";\nimport type { ListOption, ListOptionNormalized } from \"../../types\";\nimport { scrollIntoView } from \"../../helpers/dom\";\nimport { deepEqual } from \"../../helpers/objects\";\nimport DropdownListItem from \"../DropdownListItem.vue\";\nimport LongText from \"../LongText.vue\";\nimport { PlIcon16 } from \"../PlIcon16\";\nimport { PlMaskIcon24 } from \"../PlMaskIcon24\";\nimport { normalizeListOptions } from \"../../helpers/utils\";\nimport { getErrorMessage } from \"../../helpers/error.ts\";\nimport { PlSvg } from \"../PlSvg\";\nimport SvgRequired from \"../../assets/images/required.svg?raw\";\n\nconst emit = defineEmits<{\n /**\n * Emitted when the model value is updated.\n */\n (e: \"update:modelValue\", value: M | undefined): void;\n}>();\n\nconst props = withDefaults(\n defineProps<{\n /**\n * The current selected value of the dropdown.\n */\n modelValue: M;\n /**\n * The label text for the dropdown field (optional)\n */\n label?: string;\n /**\n * List of available options for the dropdown\n */\n options?: Readonly<ListOption<M>[]>;\n /**\n * A helper text displayed below the dropdown when there are no errors (optional).\n */\n helper?: string;\n /**\n * A helper text displayed below the dropdown when there are no options yet or options is undefined (optional).\n */\n loadingOptionsHelper?: string;\n /**\n * Error message displayed below the dropdown (optional)\n */\n error?: unknown;\n /**\n * Placeholder text shown when no value is selected.\n */\n placeholder?: string;\n /**\n * Enables a button to clear the selected value (default: false)\n */\n clearable?: boolean;\n /**\n * If `true`, the dropdown component is marked as required.\n */\n required?: boolean;\n /**\n * If `true`, the dropdown component is disabled and cannot be interacted with.\n */\n disabled?: boolean;\n /**\n * Custom icon (16px) class for the dropdown arrow (optional)\n */\n arrowIcon?: string;\n /**\n * Custom icon (24px) class for the dropdown arrow (optional)\n */\n arrowIconLarge?: string;\n /**\n * Option list item size\n */\n optionSize?: \"small\" | \"medium\";\n }>(),\n {\n label: \"\",\n helper: undefined,\n loadingOptionsHelper: undefined,\n error: undefined,\n placeholder: \"...\",\n clearable: false,\n required: false,\n disabled: false,\n arrowIcon: undefined,\n arrowIconLarge: undefined,\n optionSize: \"small\",\n options: undefined,\n },\n);\n\nconst slots = useSlots();\n\nconst root = ref<HTMLElement | undefined>();\nconst list = ref<HTMLElement | undefined>();\nconst input = ref<HTMLInputElement | undefined>();\n\nconst data = reactive({\n search: \"\",\n activeIndex: -1,\n open: false,\n});\n\nconst findActiveIndex = () =>\n tap(\n filteredRef.value.findIndex((o) => deepEqual(o.value, props.modelValue)),\n (v) => (v < 0 ? 0 : v),\n );\n\nconst updateActive = () => (data.activeIndex = findActiveIndex());\n\nconst isLoadingOptions = computed(() => {\n return props.options === undefined;\n});\n\nconst isDisabled = computed(() => {\n if (isLoadingOptions.value) {\n return true;\n }\n\n return props.disabled;\n});\n\nconst selectedIndex = computed(() => {\n return (props.options ?? []).findIndex((o) => deepEqual(o.value, props.modelValue));\n});\n\nconst computedError = computed(() => {\n if (isLoadingOptions.value) {\n return undefined;\n }\n\n if (props.error) {\n return getErrorMessage(props.error);\n }\n\n if (props.modelValue !== undefined && selectedIndex.value === -1) {\n return \"The selected value is not one of the options\";\n }\n\n return undefined;\n});\n\nconst optionsRef = computed(() =>\n normalizeListOptions(props.options ?? []).map((opt, index) => ({\n ...opt,\n index,\n isSelected: index === selectedIndex.value,\n isActive: index === data.activeIndex,\n })),\n);\n\nconst textValue = computed(() => {\n const options = unref(optionsRef);\n\n const item: ListOption | undefined = options.find((o) => deepEqual(o.value, props.modelValue));\n\n return item?.label || props.modelValue; // @todo show inner value?\n});\n\nconst computedPlaceholder = computed(() => {\n if (!data.open && props.modelValue) {\n return \"\";\n }\n\n return props.modelValue ? String(textValue.value) : props.placeholder;\n});\n\nconst hasValue = computed(() => {\n return props.modelValue !== undefined && props.modelValue !== null;\n});\n\nconst filteredRef = computed(() => {\n const options = optionsRef.value;\n\n if (data.search) {\n return options.filter((o: ListOptionNormalized) => {\n const search = data.search.toLowerCase();\n\n if (o.label.toLowerCase().includes(search)) {\n return true;\n }\n\n if (o.description && o.description.toLowerCase().includes(search)) {\n return true;\n }\n\n if (typeof o.value === \"string\") {\n return o.value.toLowerCase().includes(search);\n }\n\n return o.value === data.search;\n });\n }\n\n return options;\n});\n\nconst tabindex = computed(() => (isDisabled.value ? undefined : \"0\"));\n\nconst selectOption = (v: M | undefined) => {\n emit(\"update:modelValue\", v);\n data.search = \"\";\n data.open = false;\n root?.value?.focus();\n};\n\nconst clear = () => emit(\"update:modelValue\", undefined);\n\nconst setFocusOnInput = () => input.value?.focus();\n\nconst toggleOpen = () => (data.open = !data.open);\n\nconst onInputFocus = () => (data.open = true);\n\nconst onFocusOut = (event: FocusEvent) => {\n if (!root?.value?.contains(event.relatedTarget as Node | null)) {\n data.search = \"\";\n data.open = false;\n }\n};\n\nconst scrollIntoActive = () => {\n const $list = list.value;\n\n if (!$list) {\n return;\n }\n\n tapIf($list.querySelector(\".hovered-item\") as HTMLElement, (opt) => {\n scrollIntoView($list, opt);\n });\n};\n\nconst handleKeydown = (e: { code: string; preventDefault(): void }) => {\n if (![\"ArrowDown\", \"ArrowUp\", \"Enter\", \"Escape\"].includes(e.code)) {\n return;\n } else {\n e.preventDefault();\n }\n\n const { open, activeIndex } = data;\n\n if (!open) {\n if (e.code === \"Enter\") {\n data.open = true;\n }\n return;\n }\n\n if (e.code === \"Escape\") {\n data.open = false;\n root.value?.focus();\n }\n\n const filtered = unref(filteredRef);\n\n const { length } = filtered;\n\n if (!length) {\n return;\n }\n\n if (e.code === \"Enter\") {\n selectOption(filtered.find((it) => it.index === activeIndex)?.value);\n }\n\n const localIndex = filtered.findIndex((it) => it.index === activeIndex) ?? -1;\n\n const delta = e.code === \"ArrowDown\" ? 1 : e.code === \"ArrowUp\" ? -1 : 0;\n\n const newIndex = Math.abs(localIndex + delta + length) % length;\n\n data.activeIndex = filteredRef.value[newIndex].index ?? -1;\n};\n\nuseLabelNotch(root);\n\nwatch(() => props.modelValue, updateActive, { immediate: true });\n\nwatch(\n () => data.open,\n (open) => (open ? input.value?.focus() : \"\"),\n);\n\nwatchPostEffect(() => {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n data.search; // to watch\n\n if (data.activeIndex >= 0 && data.open) {\n scrollIntoActive();\n }\n});\n</script>\n\n<template>\n <div class=\"ui-dropdown__envelope\">\n <div\n ref=\"root\"\n :tabindex=\"tabindex\"\n class=\"ui-dropdown\"\n :class=\"{ open: data.open, error, disabled: isDisabled }\"\n @keydown=\"handleKeydown\"\n @focusout=\"onFocusOut\"\n >\n <div class=\"ui-dropdown__container\">\n <div class=\"ui-dropdown__field\">\n <input\n ref=\"input\"\n v-model=\"data.search\"\n type=\"text\"\n tabindex=\"-1\"\n :disabled=\"isDisabled\"\n :placeholder=\"computedPlaceholder\"\n spellcheck=\"false\"\n autocomplete=\"chrome-off\"\n @focus=\"onInputFocus\"\n />\n\n <div v-if=\"!data.open\" @click=\"setFocusOnInput\">\n <LongText class=\"input-value\"> {{ textValue }} </LongText>\n </div>\n\n <div class=\"ui-dropdown__controls\">\n <PlMaskIcon24 v-if=\"isLoadingOptions\" name=\"loading\" />\n <PlIcon16\n v-if=\"clearable && hasValue\"\n class=\"clear\"\n name=\"delete-clear\"\n @click.stop=\"clear\"\n />\n <slot name=\"append\" />\n <div\n v-if=\"arrowIconLarge\"\n class=\"arrow-icon\"\n :class=\"[`icon-24 ${arrowIconLarge}`]\"\n @click.stop=\"toggleOpen\"\n />\n <div\n v-else-if=\"arrowIcon\"\n class=\"arrow-icon\"\n :class=\"[`icon-16 ${arrowIcon}`]\"\n @click.stop=\"toggleOpen\"\n />\n <div v-else class=\"arrow-icon arrow-icon-default\" @click.stop=\"toggleOpen\" />\n </div>\n </div>\n <label v-if=\"label\">\n <PlSvg v-if=\"required\" :uri=\"SvgRequired\" />\n <span>{{ label }}</span>\n <PlTooltip v-if=\"slots.tooltip\" class=\"info\" position=\"top\">\n <template #tooltip>\n <slot name=\"tooltip\" />\n </template>\n </PlTooltip>\n </label>\n <div v-if=\"data.open\" ref=\"list\" class=\"ui-dropdown__options\">\n <DropdownListItem\n v-for=\"(item, index) in filteredRef\"\n :key=\"index\"\n :option=\"item\"\n :is-selected=\"item.isSelected\"\n :is-hovered=\"item.isActive\"\n :size=\"optionSize\"\n @click.stop=\"selectOption(item.value)\"\n />\n <div v-if=\"!filteredRef.length\" class=\"nothing-found\">Nothing found</div>\n </div>\n <DoubleContour class=\"ui-dropdown__contour\" />\n </div>\n </div>\n <div v-if=\"computedError\" class=\"ui-dropdown__error\">{{ computedError }}</div>\n <div v-else-if=\"isLoadingOptions && loadingOptionsHelper\" class=\"ui-dropdown__helper\">\n {{ loadingOptionsHelper }}\n </div>\n <div v-else-if=\"helper\" class=\"ui-dropdown__helper\">{{ helper }}</div>\n </div>\n</template>\n"],"names":["__default__","emit","__emit","props","__props","slots","useSlots","root","ref","list","input","data","reactive","findActiveIndex","tap","filteredRef","o","deepEqual","v","updateActive","isLoadingOptions","computed","isDisabled","selectedIndex","computedError","getErrorMessage","optionsRef","normalizeListOptions","opt","index","textValue","item","unref","computedPlaceholder","hasValue","options","search","tabindex","selectOption","_a","clear","setFocusOnInput","toggleOpen","onInputFocus","onFocusOut","event","scrollIntoActive","$list","tapIf","scrollIntoView","handleKeydown","open","activeIndex","filtered","length","_b","it","localIndex","delta","newIndex","useLabelNotch","watch","watchPostEffect","_openBlock","_createElementBlock","_hoisted_1","_createElementVNode","_normalizeClass","_hoisted_3","_hoisted_4","_cache","$event","_vModelText","_createVNode","LongText","_hoisted_6","_createBlock","_unref","PlMaskIcon24","PlIcon16","_renderSlot","_ctx","_hoisted_7","PlSvg","SvgRequired","PlTooltip","_Fragment","_renderList","DropdownListItem","_withModifiers","_hoisted_8","DoubleContour","_hoisted_9","_toDisplayString","_hoisted_10","_hoisted_11"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlDropdownLine.vue.d.ts","sourceRoot":"","sources":["../../../src/components/PlDropdownLine/PlDropdownLine.vue"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"PlDropdownLine.vue.d.ts","sourceRoot":"","sources":["../../../src/components/PlDropdownLine/PlDropdownLine.vue"],"names":[],"mappings":"AAiWA,OAAO,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAUtC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAM9C,KAAK,WAAW,GAAG;IACf,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,mBAAmB,CAAC,EAAE,UAAU,CAAC;IACjC,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAgPJ,iBAAS,cAAc;WAwMT,OAAO,IAA6B;;;;;;;;YAbvB,GAAG;;;;;;YACH,GAAG;;;;;;;EAiB7B;AA4BD,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAC9D,QAAA,MAAM,eAAe;;;;;iBA9dH,MAAM;UACb,MAAM,GAAG,MAAM;eAEV,OAAO;YALV,MAAM;;;;;kBA0ejB,CAAC;wBACkB,uBAAuB,CAAC,OAAO,eAAe,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAAnG,wBAAoG;AAapG,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IACxC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
|
|
@@ -37,7 +37,9 @@ const ce = { class: "pl-line-dropdown__prefix" }, fe = { class: "pl-line-dropdow
|
|
|
37
37
|
}), u = y(), m = y(), z = O(() => {
|
|
38
38
|
const e = [];
|
|
39
39
|
return n.isOpen && e.push("open"), i.disabled && e.push("disabled"), e.join(" ");
|
|
40
|
-
}), s = y(""), a = ne(X(i, "options"), s), $ = O(
|
|
40
|
+
}), s = y(""), a = ne(X(i, "options"), s), $ = O(
|
|
41
|
+
() => !!(i.clearable && n.isOpen && i.modelValue && p.value)
|
|
42
|
+
), p = O(() => {
|
|
41
43
|
if (i.modelValue !== void 0) {
|
|
42
44
|
const e = j();
|
|
43
45
|
if (e !== -1)
|
|
@@ -193,7 +195,7 @@ const ce = { class: "pl-line-dropdown__prefix" }, fe = { class: "pl-line-dropdow
|
|
|
193
195
|
}, null, 8, ["option", "is-selected", "is-hovered", "onClick"])
|
|
194
196
|
])), 128)),
|
|
195
197
|
b(a).length === 0 ? (r(), d("div", ve, [...t[3] || (t[3] = [
|
|
196
|
-
c("div", { class: "pl-line-dropdown__no-item-title text-s" }, "Didn't find anything that matched", -1)
|
|
198
|
+
c("div", { class: "pl-line-dropdown__no-item-title text-s" }, " Didn't find anything that matched ", -1)
|
|
197
199
|
])])) : k("", !0)
|
|
198
200
|
], 36)) : i.mode === "tabs" ? (r(), d("div", {
|
|
199
201
|
key: 1,
|
|
@@ -221,7 +223,7 @@ const ce = { class: "pl-line-dropdown__prefix" }, fe = { class: "pl-line-dropdow
|
|
|
221
223
|
}, null, 8, ["option", "is-selected", "is-hovered", "onClick"])
|
|
222
224
|
])), 128)),
|
|
223
225
|
b(a).length === 0 ? (r(), d("div", he, [...t[4] || (t[4] = [
|
|
224
|
-
c("div", { class: "pl-line-dropdown__no-item-title text-s" }, "Didn't find anything that matched", -1)
|
|
226
|
+
c("div", { class: "pl-line-dropdown__no-item-title text-s" }, " Didn't find anything that matched ", -1)
|
|
225
227
|
])])) : k("", !0)
|
|
226
228
|
], 36)) : k("", !0)
|
|
227
229
|
])) : k("", !0)
|