@davincihealthcare/elty-design-system-vue 1.73.4 → 1.73.6
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/dist/src/ElAccordion.vue.cjs2.js.map +1 -0
- package/dist/src/ElAccordion.vue.esm2.js.map +1 -0
- package/dist/src/ElActionButton.vue.cjs2.js +2 -0
- package/dist/src/ElActionButton.vue.cjs2.js.map +1 -0
- package/dist/src/ElActionButton.vue.esm2.js +2 -0
- package/dist/src/ElActionButton.vue.esm2.js.map +1 -0
- package/dist/src/ElAvatar.vue.cjs2.js.map +1 -0
- package/dist/src/ElAvatar.vue.esm2.js.map +1 -0
- package/dist/src/ElBadge.vue.cjs2.js.map +1 -0
- package/dist/src/ElBadge.vue.esm2.js.map +1 -0
- package/dist/src/ElBubbleChat.vue.cjs2.js +2 -0
- package/dist/src/ElBubbleChat.vue.cjs2.js.map +1 -0
- package/dist/src/ElBubbleChat.vue.esm2.js +2 -0
- package/dist/src/ElBubbleChat.vue.esm2.js.map +1 -0
- package/dist/src/ElButton.vue.cjs2.js.map +1 -0
- package/dist/src/ElButton.vue.esm2.js.map +1 -0
- package/dist/src/ElCalendarCard.vue.cjs2.js.map +1 -0
- package/dist/src/ElCalendarCard.vue.esm2.js.map +1 -0
- package/dist/src/ElCalendarCell.vue.cjs2.js.map +1 -0
- package/dist/src/ElCalendarCell.vue.esm2.js.map +1 -0
- package/dist/src/ElCarousel.vue.cjs2.js +2 -0
- package/dist/src/ElCarousel.vue.cjs2.js.map +1 -0
- package/dist/src/ElCarousel.vue.esm2.js +2 -0
- package/dist/src/ElCarousel.vue.esm2.js.map +1 -0
- package/dist/src/ElClipToAnchor.vue.cjs2.js +2 -0
- package/dist/src/ElClipToAnchor.vue.cjs2.js.map +1 -0
- package/dist/src/ElClipToAnchor.vue.esm2.js +2 -0
- package/dist/src/ElClipToAnchor.vue.esm2.js.map +1 -0
- package/dist/src/ElContainerTemplate.vue.cjs2.js +2 -0
- package/dist/src/ElContainerTemplate.vue.cjs2.js.map +1 -0
- package/dist/src/ElContainerTemplate.vue.esm2.js +2 -0
- package/dist/src/ElContainerTemplate.vue.esm2.js.map +1 -0
- package/dist/src/ElDivider.vue.cjs2.js.map +1 -0
- package/dist/src/ElDivider.vue.esm2.js.map +1 -0
- package/dist/src/ElDrawer.vue.cjs2.js.map +1 -0
- package/dist/src/ElDrawer.vue.esm2.js.map +1 -0
- package/dist/src/ElDropdown.vue.cjs2.js +2 -0
- package/dist/src/ElDropdown.vue.cjs2.js.map +1 -0
- package/dist/src/ElDropdown.vue.esm2.js +2 -0
- package/dist/src/ElDropdown.vue.esm2.js.map +1 -0
- package/dist/src/ElFile.vue.cjs2.js.map +1 -0
- package/dist/src/ElFile.vue.esm2.js.map +1 -0
- package/dist/src/ElIcon.vue.cjs2.js +2 -0
- package/dist/src/ElIcon.vue.cjs2.js.map +1 -0
- package/dist/src/ElIcon.vue.esm2.js +2 -0
- package/dist/src/ElIcon.vue.esm2.js.map +1 -0
- package/dist/src/ElIconButton.vue.cjs2.js.map +1 -0
- package/dist/src/ElIconButton.vue.esm2.js.map +1 -0
- package/dist/src/ElInlineBanner.vue.cjs2.js.map +1 -0
- package/dist/src/ElInlineBanner.vue.esm2.js.map +1 -0
- package/dist/src/ElInputChat.vue.cjs2.js.map +1 -0
- package/dist/src/ElInputChat.vue.esm2.js.map +1 -0
- package/dist/src/ElListItem.vue.cjs2.js.map +1 -0
- package/dist/src/ElListItem.vue.esm2.js.map +1 -0
- package/dist/src/ElLogo.vue.cjs2.js.map +1 -0
- package/dist/src/ElLogo.vue.esm2.js.map +1 -0
- package/dist/src/ElModal.vue.cjs2.js +2 -0
- package/dist/src/ElModal.vue.cjs2.js.map +1 -0
- package/dist/src/ElModal.vue.esm2.js +2 -0
- package/dist/src/ElModal.vue.esm2.js.map +1 -0
- package/dist/src/ElSortingHeader.vue.cjs2.js.map +1 -0
- package/dist/src/ElSortingHeader.vue.esm2.js.map +1 -0
- package/dist/src/ElSpinner.vue.cjs2.js.map +1 -0
- package/dist/src/ElSpinner.vue.esm2.js.map +1 -0
- package/dist/src/ElTab.vue.cjs2.js.map +1 -0
- package/dist/src/ElTab.vue.esm2.js.map +1 -0
- package/dist/src/ElTabGroup.vue.cjs2.js.map +1 -0
- package/dist/src/ElTabGroup.vue.esm2.js.map +1 -0
- package/dist/src/ElTabs.vue.cjs2.js.map +1 -0
- package/dist/src/ElTabs.vue.esm2.js.map +1 -0
- package/dist/src/ElTag.vue.cjs2.js.map +1 -0
- package/dist/src/ElTag.vue.esm2.js.map +1 -0
- package/dist/src/ElTextCell.vue.cjs2.js.map +1 -0
- package/dist/src/ElTextCell.vue.esm2.js.map +1 -0
- package/dist/src/ElToast.vue.cjs2.js +2 -0
- package/dist/src/ElToast.vue.cjs2.js.map +1 -0
- package/dist/src/ElToast.vue.esm2.js +2 -0
- package/dist/src/ElToast.vue.esm2.js.map +1 -0
- package/dist/src/ElTooltip.vue.cjs2.js.map +1 -0
- package/dist/src/ElTooltip.vue.esm2.js.map +1 -0
- package/dist/src/ElVerticalTab.vue.cjs2.js.map +1 -0
- package/dist/src/ElVerticalTab.vue.esm2.js.map +1 -0
- package/dist/src/_CustomTransition.vue.cjs2.js.map +1 -0
- package/dist/src/_CustomTransition.vue.esm2.js.map +1 -0
- package/dist/src/assets/logo/davinci-dark.svg.cjs.js +2 -0
- package/dist/src/assets/logo/davinci-dark.svg.cjs.js.map +1 -0
- package/dist/src/assets/logo/davinci-dark.svg.esm.js +2 -0
- package/dist/src/assets/logo/davinci-dark.svg.esm.js.map +1 -0
- package/dist/src/assets/logo/davinci-white.svg.cjs.js +2 -0
- package/dist/src/assets/logo/davinci-white.svg.cjs.js.map +1 -0
- package/dist/src/assets/logo/davinci-white.svg.esm.js +2 -0
- package/dist/src/assets/logo/davinci-white.svg.esm.js.map +1 -0
- package/dist/src/assets/logo/elty-dark.svg.cjs.js.map +1 -0
- package/dist/src/assets/logo/elty-dark.svg.esm.js.map +1 -0
- package/dist/src/assets/logo/elty-two-tone.svg.cjs.js.map +1 -0
- package/dist/src/assets/logo/elty-two-tone.svg.esm.js.map +1 -0
- package/dist/src/assets/logo/elty-white.svg.cjs.js.map +1 -0
- package/dist/src/assets/logo/elty-white.svg.esm.js.map +1 -0
- package/dist/src/assets/logo/heart-dark.svg.cjs.js.map +1 -0
- package/dist/src/assets/logo/heart-dark.svg.esm.js.map +1 -0
- package/dist/src/assets/logo/heart-two-tone.svg.cjs.js.map +1 -0
- package/dist/src/assets/logo/heart-two-tone.svg.esm.js.map +1 -0
- package/dist/src/assets/logo/heart-white.svg.cjs.js.map +1 -0
- package/dist/src/assets/logo/heart-white.svg.esm.js.map +1 -0
- package/dist/src/composable/mobileComposable.cjs.js +2 -0
- package/dist/src/composable/mobileComposable.cjs.js.map +1 -0
- package/dist/src/composable/mobileComposable.esm.js +2 -0
- package/dist/src/composable/mobileComposable.esm.js.map +1 -0
- package/dist/src/forms/ElInputCheckbox.vue.cjs2.js.map +1 -0
- package/dist/src/forms/ElInputCheckbox.vue.esm2.js.map +1 -0
- package/dist/src/forms/ElInputDate.vue.cjs2.js +2 -0
- package/dist/src/forms/ElInputDate.vue.cjs2.js.map +1 -0
- package/dist/src/forms/ElInputDate.vue.esm2.js +2 -0
- package/dist/src/forms/ElInputDate.vue.esm2.js.map +1 -0
- package/dist/src/forms/ElInputFile.vue.cjs2.js.map +1 -0
- package/dist/src/forms/ElInputFile.vue.esm2.js.map +1 -0
- package/dist/src/forms/ElInputMeasureUnit.vue.cjs2.js.map +1 -0
- package/dist/src/forms/ElInputMeasureUnit.vue.esm2.js.map +1 -0
- package/dist/src/forms/ElInputNumber.vue.cjs2.js.map +1 -0
- package/dist/src/forms/ElInputNumber.vue.esm2.js.map +1 -0
- package/dist/src/forms/ElInputPhone.vue.cjs2.js.map +1 -0
- package/dist/src/forms/ElInputPhone.vue.esm2.js.map +1 -0
- package/dist/src/forms/ElInputRadioButton.vue.cjs2.js.map +1 -0
- package/dist/src/forms/ElInputRadioButton.vue.esm2.js.map +1 -0
- package/dist/src/forms/ElInputRichText/Editor.vue.cjs2.js +2 -0
- package/dist/src/forms/ElInputRichText/Editor.vue.cjs2.js.map +1 -0
- package/dist/src/forms/ElInputRichText/Editor.vue.esm2.js +2 -0
- package/dist/src/forms/ElInputRichText/Editor.vue.esm2.js.map +1 -0
- package/dist/src/forms/ElInputRichText/translations/it.cjs.js +2 -0
- package/dist/src/forms/ElInputRichText/translations/it.cjs.js.map +1 -0
- package/dist/src/forms/ElInputRichText/translations/it.esm.js +2 -0
- package/dist/src/forms/ElInputRichText/translations/it.esm.js.map +1 -0
- package/dist/src/forms/ElInputRichText.vue.cjs2.js +2 -0
- package/dist/src/forms/ElInputRichText.vue.cjs2.js.map +1 -0
- package/dist/src/forms/ElInputRichText.vue.esm2.js +3 -0
- package/dist/src/forms/ElInputRichText.vue.esm2.js.map +1 -0
- package/dist/src/forms/ElInputSearch.vue.cjs2.js +2 -0
- package/dist/src/forms/ElInputSearch.vue.cjs2.js.map +1 -0
- package/dist/src/forms/ElInputSearch.vue.esm2.js +2 -0
- package/dist/src/forms/ElInputSearch.vue.esm2.js.map +1 -0
- package/dist/src/forms/ElInputSelect.vue.cjs2.js +2 -0
- package/dist/src/forms/ElInputSelect.vue.cjs2.js.map +1 -0
- package/dist/src/forms/ElInputSelect.vue.esm2.js +2 -0
- package/dist/src/forms/ElInputSelect.vue.esm2.js.map +1 -0
- package/dist/src/forms/ElInputSwitch.vue.cjs2.js.map +1 -0
- package/dist/src/forms/ElInputSwitch.vue.esm2.js.map +1 -0
- package/dist/src/forms/ElInputText.vue.cjs2.js.map +1 -0
- package/dist/src/forms/ElInputText.vue.esm2.js.map +1 -0
- package/dist/src/forms/ElInputTextarea.vue.cjs2.js.map +1 -0
- package/dist/src/forms/ElInputTextarea.vue.esm2.js.map +1 -0
- package/dist/src/forms/input.cjs.js.map +1 -0
- package/dist/src/forms/input.esm.js.map +1 -0
- package/dist/src/forms/unicodeCharsRule.cjs.js +3 -0
- package/dist/src/forms/unicodeCharsRule.cjs.js.map +1 -0
- package/dist/src/forms/unicodeCharsRule.esm.js +3 -0
- package/dist/src/forms/unicodeCharsRule.esm.js.map +1 -0
- package/dist/src/forms/utils.cjs.js +2 -0
- package/dist/src/forms/utils.cjs.js.map +1 -0
- package/dist/src/forms/utils.esm.js +2 -0
- package/dist/src/forms/utils.esm.js.map +1 -0
- package/dist/src/forms/validation-rules.cjs.js +2 -0
- package/dist/src/forms/validation-rules.cjs.js.map +1 -0
- package/dist/src/forms/validation-rules.esm.js +2 -0
- package/dist/src/forms/validation-rules.esm.js.map +1 -0
- package/dist/src/index.cjs.js +2 -0
- package/dist/src/index.esm.js +2 -0
- package/dist/src/polyfills.cjs.js.map +1 -0
- package/dist/src/polyfills.esm.js.map +1 -0
- package/dist/src/preset.cjs.js +2 -0
- package/dist/src/preset.esm.js +2 -0
- package/dist/src/table/ElMobileTable.vue.cjs2.js +2 -0
- package/dist/src/table/ElMobileTable.vue.cjs2.js.map +1 -0
- package/dist/src/table/ElMobileTable.vue.esm2.js +2 -0
- package/dist/src/table/ElMobileTable.vue.esm2.js.map +1 -0
- package/dist/src/table/ElResponsiveTable.vue.cjs2.js.map +1 -0
- package/dist/src/table/ElResponsiveTable.vue.esm2.js.map +1 -0
- package/dist/src/table/ElServerSideMobileTable.vue.cjs2.js.map +1 -0
- package/dist/src/table/ElServerSideMobileTable.vue.esm2.js.map +1 -0
- package/dist/src/table/ElServerSideResponsiveTable.vue.cjs2.js.map +1 -0
- package/dist/src/table/ElServerSideResponsiveTable.vue.esm2.js.map +1 -0
- package/dist/src/table/ElServerSideTable.vue.cjs2.js +2 -0
- package/dist/src/table/ElServerSideTable.vue.cjs2.js.map +1 -0
- package/dist/src/table/ElServerSideTable.vue.esm2.js +2 -0
- package/dist/src/table/ElServerSideTable.vue.esm2.js.map +1 -0
- package/dist/src/table/ElServerSideTablePagination.vue.cjs2.js.map +1 -0
- package/dist/src/table/ElServerSideTablePagination.vue.esm2.js.map +1 -0
- package/dist/src/table/ElTable.vue.cjs2.js.map +1 -0
- package/dist/src/table/ElTable.vue.esm2.js.map +1 -0
- package/dist/src/table/ElTableCell.vue.cjs2.js.map +1 -0
- package/dist/src/table/ElTableCell.vue.esm2.js.map +1 -0
- package/dist/src/table/ElTablePagination.vue.cjs2.js.map +1 -0
- package/dist/src/table/ElTablePagination.vue.esm2.js.map +1 -0
- package/dist/src/tailwind.plugin.cjs.js +2 -0
- package/dist/src/tailwind.plugin.cjs.js.map +1 -0
- package/dist/src/tailwind.plugin.esm.js +2 -0
- package/dist/src/tailwind.plugin.esm.js.map +1 -0
- package/dist/src/types.cjs.js.map +1 -0
- package/dist/src/types.esm.js.map +1 -0
- package/dist/src/utils.cjs.js.map +1 -0
- package/dist/src/utils.esm.js.map +1 -0
- package/dist/src/vue.plugin.cjs.js.map +1 -0
- package/dist/src/vue.plugin.esm.js.map +1 -0
- package/package.json +8 -8
- package/dist/ElAccordion.vue.cjs2.js.map +0 -1
- package/dist/ElAccordion.vue.esm2.js.map +0 -1
- package/dist/ElActionButton.vue.cjs2.js +0 -2
- package/dist/ElActionButton.vue.cjs2.js.map +0 -1
- package/dist/ElActionButton.vue.esm2.js +0 -2
- package/dist/ElActionButton.vue.esm2.js.map +0 -1
- package/dist/ElAvatar.vue.cjs2.js.map +0 -1
- package/dist/ElAvatar.vue.esm2.js.map +0 -1
- package/dist/ElBadge.vue.cjs2.js.map +0 -1
- package/dist/ElBadge.vue.esm2.js.map +0 -1
- package/dist/ElBubbleChat.vue.cjs2.js +0 -2
- package/dist/ElBubbleChat.vue.cjs2.js.map +0 -1
- package/dist/ElBubbleChat.vue.esm2.js +0 -2
- package/dist/ElBubbleChat.vue.esm2.js.map +0 -1
- package/dist/ElButton.vue.cjs2.js.map +0 -1
- package/dist/ElButton.vue.esm2.js.map +0 -1
- package/dist/ElCalendarCard.vue.cjs2.js.map +0 -1
- package/dist/ElCalendarCard.vue.esm2.js.map +0 -1
- package/dist/ElCalendarCell.vue.cjs2.js.map +0 -1
- package/dist/ElCalendarCell.vue.esm2.js.map +0 -1
- package/dist/ElCarousel.vue.cjs2.js +0 -2
- package/dist/ElCarousel.vue.cjs2.js.map +0 -1
- package/dist/ElCarousel.vue.esm2.js +0 -2
- package/dist/ElCarousel.vue.esm2.js.map +0 -1
- package/dist/ElClipToAnchor.vue.cjs2.js +0 -2
- package/dist/ElClipToAnchor.vue.cjs2.js.map +0 -1
- package/dist/ElClipToAnchor.vue.esm2.js +0 -2
- package/dist/ElClipToAnchor.vue.esm2.js.map +0 -1
- package/dist/ElContainerTemplate.vue.cjs2.js +0 -2
- package/dist/ElContainerTemplate.vue.cjs2.js.map +0 -1
- package/dist/ElContainerTemplate.vue.esm2.js +0 -2
- package/dist/ElContainerTemplate.vue.esm2.js.map +0 -1
- package/dist/ElDivider.vue.cjs2.js.map +0 -1
- package/dist/ElDivider.vue.esm2.js.map +0 -1
- package/dist/ElDrawer.vue.cjs2.js.map +0 -1
- package/dist/ElDrawer.vue.esm2.js.map +0 -1
- package/dist/ElDropdown.vue.cjs2.js +0 -2
- package/dist/ElDropdown.vue.cjs2.js.map +0 -1
- package/dist/ElDropdown.vue.esm2.js +0 -2
- package/dist/ElDropdown.vue.esm2.js.map +0 -1
- package/dist/ElFile.vue.cjs2.js.map +0 -1
- package/dist/ElFile.vue.esm2.js.map +0 -1
- package/dist/ElIcon.vue.cjs2.js +0 -2
- package/dist/ElIcon.vue.cjs2.js.map +0 -1
- package/dist/ElIcon.vue.esm2.js +0 -2
- package/dist/ElIcon.vue.esm2.js.map +0 -1
- package/dist/ElIconButton.vue.cjs2.js.map +0 -1
- package/dist/ElIconButton.vue.esm2.js.map +0 -1
- package/dist/ElInlineBanner.vue.cjs2.js.map +0 -1
- package/dist/ElInlineBanner.vue.esm2.js.map +0 -1
- package/dist/ElInputChat.vue.cjs2.js.map +0 -1
- package/dist/ElInputChat.vue.esm2.js.map +0 -1
- package/dist/ElListItem.vue.cjs2.js.map +0 -1
- package/dist/ElListItem.vue.esm2.js.map +0 -1
- package/dist/ElLogo.vue.cjs2.js.map +0 -1
- package/dist/ElLogo.vue.esm2.js.map +0 -1
- package/dist/ElModal.vue.cjs2.js +0 -2
- package/dist/ElModal.vue.cjs2.js.map +0 -1
- package/dist/ElModal.vue.esm2.js +0 -2
- package/dist/ElModal.vue.esm2.js.map +0 -1
- package/dist/ElSortingHeader.vue.cjs2.js.map +0 -1
- package/dist/ElSortingHeader.vue.esm2.js.map +0 -1
- package/dist/ElSpinner.vue.cjs2.js.map +0 -1
- package/dist/ElSpinner.vue.esm2.js.map +0 -1
- package/dist/ElTab.vue.cjs2.js.map +0 -1
- package/dist/ElTab.vue.esm2.js.map +0 -1
- package/dist/ElTabGroup.vue.cjs2.js.map +0 -1
- package/dist/ElTabGroup.vue.esm2.js.map +0 -1
- package/dist/ElTabs.vue.cjs2.js.map +0 -1
- package/dist/ElTabs.vue.esm2.js.map +0 -1
- package/dist/ElTag.vue.cjs2.js.map +0 -1
- package/dist/ElTag.vue.esm2.js.map +0 -1
- package/dist/ElTextCell.vue.cjs2.js.map +0 -1
- package/dist/ElTextCell.vue.esm2.js.map +0 -1
- package/dist/ElToast.vue.cjs2.js +0 -2
- package/dist/ElToast.vue.cjs2.js.map +0 -1
- package/dist/ElToast.vue.esm2.js +0 -2
- package/dist/ElToast.vue.esm2.js.map +0 -1
- package/dist/ElTooltip.vue.cjs2.js.map +0 -1
- package/dist/ElTooltip.vue.esm2.js.map +0 -1
- package/dist/ElVerticalTab.vue.cjs2.js.map +0 -1
- package/dist/ElVerticalTab.vue.esm2.js.map +0 -1
- package/dist/_CustomTransition.vue.cjs2.js.map +0 -1
- package/dist/_CustomTransition.vue.esm2.js.map +0 -1
- package/dist/assets/logo/davinci-dark.svg.cjs.js +0 -2
- package/dist/assets/logo/davinci-dark.svg.cjs.js.map +0 -1
- package/dist/assets/logo/davinci-dark.svg.esm.js +0 -2
- package/dist/assets/logo/davinci-dark.svg.esm.js.map +0 -1
- package/dist/assets/logo/davinci-white.svg.cjs.js +0 -2
- package/dist/assets/logo/davinci-white.svg.cjs.js.map +0 -1
- package/dist/assets/logo/davinci-white.svg.esm.js +0 -2
- package/dist/assets/logo/davinci-white.svg.esm.js.map +0 -1
- package/dist/assets/logo/elty-dark.svg.cjs.js.map +0 -1
- package/dist/assets/logo/elty-dark.svg.esm.js.map +0 -1
- package/dist/assets/logo/elty-two-tone.svg.cjs.js.map +0 -1
- package/dist/assets/logo/elty-two-tone.svg.esm.js.map +0 -1
- package/dist/assets/logo/elty-white.svg.cjs.js.map +0 -1
- package/dist/assets/logo/elty-white.svg.esm.js.map +0 -1
- package/dist/assets/logo/heart-dark.svg.cjs.js.map +0 -1
- package/dist/assets/logo/heart-dark.svg.esm.js.map +0 -1
- package/dist/assets/logo/heart-two-tone.svg.cjs.js.map +0 -1
- package/dist/assets/logo/heart-two-tone.svg.esm.js.map +0 -1
- package/dist/assets/logo/heart-white.svg.cjs.js.map +0 -1
- package/dist/assets/logo/heart-white.svg.esm.js.map +0 -1
- package/dist/composable/mobileComposable.cjs.js +0 -2
- package/dist/composable/mobileComposable.cjs.js.map +0 -1
- package/dist/composable/mobileComposable.esm.js +0 -2
- package/dist/composable/mobileComposable.esm.js.map +0 -1
- package/dist/davinci-dark.svg +0 -10
- package/dist/davinci-white.svg +0 -9
- package/dist/forms/ElInputCheckbox.vue.cjs2.js.map +0 -1
- package/dist/forms/ElInputCheckbox.vue.esm2.js.map +0 -1
- package/dist/forms/ElInputDate.vue.cjs2.js +0 -2
- package/dist/forms/ElInputDate.vue.cjs2.js.map +0 -1
- package/dist/forms/ElInputDate.vue.esm2.js +0 -2
- package/dist/forms/ElInputDate.vue.esm2.js.map +0 -1
- package/dist/forms/ElInputFile.vue.cjs2.js.map +0 -1
- package/dist/forms/ElInputFile.vue.esm2.js.map +0 -1
- package/dist/forms/ElInputMeasureUnit.vue.cjs2.js.map +0 -1
- package/dist/forms/ElInputMeasureUnit.vue.esm2.js.map +0 -1
- package/dist/forms/ElInputNumber.vue.cjs2.js.map +0 -1
- package/dist/forms/ElInputNumber.vue.esm2.js.map +0 -1
- package/dist/forms/ElInputPhone.vue.cjs2.js.map +0 -1
- package/dist/forms/ElInputPhone.vue.esm2.js.map +0 -1
- package/dist/forms/ElInputRadioButton.vue.cjs2.js.map +0 -1
- package/dist/forms/ElInputRadioButton.vue.esm2.js.map +0 -1
- package/dist/forms/ElInputRichText/Editor.vue.cjs2.js +0 -2
- package/dist/forms/ElInputRichText/Editor.vue.cjs2.js.map +0 -1
- package/dist/forms/ElInputRichText/Editor.vue.esm2.js +0 -2
- package/dist/forms/ElInputRichText/Editor.vue.esm2.js.map +0 -1
- package/dist/forms/ElInputRichText/translations/it.cjs.js +0 -2
- package/dist/forms/ElInputRichText/translations/it.cjs.js.map +0 -1
- package/dist/forms/ElInputRichText/translations/it.esm.js +0 -2
- package/dist/forms/ElInputRichText/translations/it.esm.js.map +0 -1
- package/dist/forms/ElInputRichText.vue.cjs2.js +0 -2
- package/dist/forms/ElInputRichText.vue.cjs2.js.map +0 -1
- package/dist/forms/ElInputRichText.vue.esm2.js +0 -3
- package/dist/forms/ElInputRichText.vue.esm2.js.map +0 -1
- package/dist/forms/ElInputSearch.vue.cjs2.js +0 -2
- package/dist/forms/ElInputSearch.vue.cjs2.js.map +0 -1
- package/dist/forms/ElInputSearch.vue.esm2.js +0 -2
- package/dist/forms/ElInputSearch.vue.esm2.js.map +0 -1
- package/dist/forms/ElInputSelect.vue.cjs2.js +0 -2
- package/dist/forms/ElInputSelect.vue.cjs2.js.map +0 -1
- package/dist/forms/ElInputSelect.vue.esm2.js +0 -2
- package/dist/forms/ElInputSelect.vue.esm2.js.map +0 -1
- package/dist/forms/ElInputSwitch.vue.cjs2.js.map +0 -1
- package/dist/forms/ElInputSwitch.vue.esm2.js.map +0 -1
- package/dist/forms/ElInputText.vue.cjs2.js.map +0 -1
- package/dist/forms/ElInputText.vue.esm2.js.map +0 -1
- package/dist/forms/ElInputTextarea.vue.cjs2.js.map +0 -1
- package/dist/forms/ElInputTextarea.vue.esm2.js.map +0 -1
- package/dist/forms/input.cjs.js.map +0 -1
- package/dist/forms/input.esm.js.map +0 -1
- package/dist/forms/unicodeCharsRule.cjs.js +0 -3
- package/dist/forms/unicodeCharsRule.cjs.js.map +0 -1
- package/dist/forms/unicodeCharsRule.esm.js +0 -3
- package/dist/forms/unicodeCharsRule.esm.js.map +0 -1
- package/dist/forms/utils.cjs.js +0 -2
- package/dist/forms/utils.cjs.js.map +0 -1
- package/dist/forms/utils.esm.js +0 -2
- package/dist/forms/utils.esm.js.map +0 -1
- package/dist/forms/validation-rules.cjs.js +0 -2
- package/dist/forms/validation-rules.cjs.js.map +0 -1
- package/dist/forms/validation-rules.esm.js +0 -2
- package/dist/forms/validation-rules.esm.js.map +0 -1
- package/dist/index.cjs.js +0 -2
- package/dist/index.esm.js +0 -2
- package/dist/polyfills.cjs.js.map +0 -1
- package/dist/polyfills.esm.js.map +0 -1
- package/dist/preset.cjs.js +0 -2
- package/dist/preset.esm.js +0 -2
- package/dist/table/ElMobileTable.vue.cjs2.js +0 -2
- package/dist/table/ElMobileTable.vue.cjs2.js.map +0 -1
- package/dist/table/ElMobileTable.vue.esm2.js +0 -2
- package/dist/table/ElMobileTable.vue.esm2.js.map +0 -1
- package/dist/table/ElResponsiveTable.vue.cjs2.js.map +0 -1
- package/dist/table/ElResponsiveTable.vue.esm2.js.map +0 -1
- package/dist/table/ElServerSideMobileTable.vue.cjs2.js.map +0 -1
- package/dist/table/ElServerSideMobileTable.vue.esm2.js.map +0 -1
- package/dist/table/ElServerSideResponsiveTable.vue.cjs2.js.map +0 -1
- package/dist/table/ElServerSideResponsiveTable.vue.esm2.js.map +0 -1
- package/dist/table/ElServerSideTable.vue.cjs2.js +0 -2
- package/dist/table/ElServerSideTable.vue.cjs2.js.map +0 -1
- package/dist/table/ElServerSideTable.vue.esm2.js +0 -2
- package/dist/table/ElServerSideTable.vue.esm2.js.map +0 -1
- package/dist/table/ElServerSideTablePagination.vue.cjs2.js.map +0 -1
- package/dist/table/ElServerSideTablePagination.vue.esm2.js.map +0 -1
- package/dist/table/ElTable.vue.cjs2.js.map +0 -1
- package/dist/table/ElTable.vue.esm2.js.map +0 -1
- package/dist/table/ElTableCell.vue.cjs2.js.map +0 -1
- package/dist/table/ElTableCell.vue.esm2.js.map +0 -1
- package/dist/table/ElTablePagination.vue.cjs2.js.map +0 -1
- package/dist/table/ElTablePagination.vue.esm2.js.map +0 -1
- package/dist/tailwind.plugin.cjs.js +0 -2
- package/dist/tailwind.plugin.cjs.js.map +0 -1
- package/dist/tailwind.plugin.esm.js +0 -2
- package/dist/tailwind.plugin.esm.js.map +0 -1
- package/dist/types.cjs.js.map +0 -1
- package/dist/types.esm.js.map +0 -1
- package/dist/utils.cjs.js.map +0 -1
- package/dist/utils.esm.js.map +0 -1
- package/dist/vue.plugin.cjs.js.map +0 -1
- package/dist/vue.plugin.esm.js.map +0 -1
- /package/dist/{ElAccordion.vue.cjs.js → src/ElAccordion.vue.cjs.js} +0 -0
- /package/dist/{ElAccordion.vue.cjs.js.map → src/ElAccordion.vue.cjs.js.map} +0 -0
- /package/dist/{ElAccordion.vue.cjs2.js → src/ElAccordion.vue.cjs2.js} +0 -0
- /package/dist/{ElAccordion.vue.esm.js → src/ElAccordion.vue.esm.js} +0 -0
- /package/dist/{ElAccordion.vue.esm.js.map → src/ElAccordion.vue.esm.js.map} +0 -0
- /package/dist/{ElAccordion.vue.esm2.js → src/ElAccordion.vue.esm2.js} +0 -0
- /package/dist/{ElActionButton.vue.cjs.js → src/ElActionButton.vue.cjs.js} +0 -0
- /package/dist/{ElActionButton.vue.cjs.js.map → src/ElActionButton.vue.cjs.js.map} +0 -0
- /package/dist/{ElActionButton.vue.esm.js → src/ElActionButton.vue.esm.js} +0 -0
- /package/dist/{ElActionButton.vue.esm.js.map → src/ElActionButton.vue.esm.js.map} +0 -0
- /package/dist/{ElAvatar.vue.cjs.js → src/ElAvatar.vue.cjs.js} +0 -0
- /package/dist/{ElAvatar.vue.cjs.js.map → src/ElAvatar.vue.cjs.js.map} +0 -0
- /package/dist/{ElAvatar.vue.cjs2.js → src/ElAvatar.vue.cjs2.js} +0 -0
- /package/dist/{ElAvatar.vue.esm.js → src/ElAvatar.vue.esm.js} +0 -0
- /package/dist/{ElAvatar.vue.esm.js.map → src/ElAvatar.vue.esm.js.map} +0 -0
- /package/dist/{ElAvatar.vue.esm2.js → src/ElAvatar.vue.esm2.js} +0 -0
- /package/dist/{ElBadge.vue.cjs.js → src/ElBadge.vue.cjs.js} +0 -0
- /package/dist/{ElBadge.vue.cjs.js.map → src/ElBadge.vue.cjs.js.map} +0 -0
- /package/dist/{ElBadge.vue.cjs2.js → src/ElBadge.vue.cjs2.js} +0 -0
- /package/dist/{ElBadge.vue.esm.js → src/ElBadge.vue.esm.js} +0 -0
- /package/dist/{ElBadge.vue.esm.js.map → src/ElBadge.vue.esm.js.map} +0 -0
- /package/dist/{ElBadge.vue.esm2.js → src/ElBadge.vue.esm2.js} +0 -0
- /package/dist/{ElBubbleChat.vue.cjs.js → src/ElBubbleChat.vue.cjs.js} +0 -0
- /package/dist/{ElBubbleChat.vue.cjs.js.map → src/ElBubbleChat.vue.cjs.js.map} +0 -0
- /package/dist/{ElBubbleChat.vue.esm.js → src/ElBubbleChat.vue.esm.js} +0 -0
- /package/dist/{ElBubbleChat.vue.esm.js.map → src/ElBubbleChat.vue.esm.js.map} +0 -0
- /package/dist/{ElButton.vue.cjs.js → src/ElButton.vue.cjs.js} +0 -0
- /package/dist/{ElButton.vue.cjs.js.map → src/ElButton.vue.cjs.js.map} +0 -0
- /package/dist/{ElButton.vue.cjs2.js → src/ElButton.vue.cjs2.js} +0 -0
- /package/dist/{ElButton.vue.esm.js → src/ElButton.vue.esm.js} +0 -0
- /package/dist/{ElButton.vue.esm.js.map → src/ElButton.vue.esm.js.map} +0 -0
- /package/dist/{ElButton.vue.esm2.js → src/ElButton.vue.esm2.js} +0 -0
- /package/dist/{ElCalendarCard.vue.cjs.js → src/ElCalendarCard.vue.cjs.js} +0 -0
- /package/dist/{ElCalendarCard.vue.cjs.js.map → src/ElCalendarCard.vue.cjs.js.map} +0 -0
- /package/dist/{ElCalendarCard.vue.cjs2.js → src/ElCalendarCard.vue.cjs2.js} +0 -0
- /package/dist/{ElCalendarCard.vue.esm.js → src/ElCalendarCard.vue.esm.js} +0 -0
- /package/dist/{ElCalendarCard.vue.esm.js.map → src/ElCalendarCard.vue.esm.js.map} +0 -0
- /package/dist/{ElCalendarCard.vue.esm2.js → src/ElCalendarCard.vue.esm2.js} +0 -0
- /package/dist/{ElCalendarCell.vue.cjs.js → src/ElCalendarCell.vue.cjs.js} +0 -0
- /package/dist/{ElCalendarCell.vue.cjs.js.map → src/ElCalendarCell.vue.cjs.js.map} +0 -0
- /package/dist/{ElCalendarCell.vue.cjs2.js → src/ElCalendarCell.vue.cjs2.js} +0 -0
- /package/dist/{ElCalendarCell.vue.esm.js → src/ElCalendarCell.vue.esm.js} +0 -0
- /package/dist/{ElCalendarCell.vue.esm.js.map → src/ElCalendarCell.vue.esm.js.map} +0 -0
- /package/dist/{ElCalendarCell.vue.esm2.js → src/ElCalendarCell.vue.esm2.js} +0 -0
- /package/dist/{ElCarousel.vue.cjs.js → src/ElCarousel.vue.cjs.js} +0 -0
- /package/dist/{ElCarousel.vue.cjs.js.map → src/ElCarousel.vue.cjs.js.map} +0 -0
- /package/dist/{ElCarousel.vue.esm.js → src/ElCarousel.vue.esm.js} +0 -0
- /package/dist/{ElCarousel.vue.esm.js.map → src/ElCarousel.vue.esm.js.map} +0 -0
- /package/dist/{ElClipToAnchor.vue.cjs.js → src/ElClipToAnchor.vue.cjs.js} +0 -0
- /package/dist/{ElClipToAnchor.vue.cjs.js.map → src/ElClipToAnchor.vue.cjs.js.map} +0 -0
- /package/dist/{ElClipToAnchor.vue.esm.js → src/ElClipToAnchor.vue.esm.js} +0 -0
- /package/dist/{ElClipToAnchor.vue.esm.js.map → src/ElClipToAnchor.vue.esm.js.map} +0 -0
- /package/dist/{ElContainerTemplate.vue.cjs.js → src/ElContainerTemplate.vue.cjs.js} +0 -0
- /package/dist/{ElContainerTemplate.vue.cjs.js.map → src/ElContainerTemplate.vue.cjs.js.map} +0 -0
- /package/dist/{ElContainerTemplate.vue.esm.js → src/ElContainerTemplate.vue.esm.js} +0 -0
- /package/dist/{ElContainerTemplate.vue.esm.js.map → src/ElContainerTemplate.vue.esm.js.map} +0 -0
- /package/dist/{ElDivider.vue.cjs.js → src/ElDivider.vue.cjs.js} +0 -0
- /package/dist/{ElDivider.vue.cjs.js.map → src/ElDivider.vue.cjs.js.map} +0 -0
- /package/dist/{ElDivider.vue.cjs2.js → src/ElDivider.vue.cjs2.js} +0 -0
- /package/dist/{ElDivider.vue.esm.js → src/ElDivider.vue.esm.js} +0 -0
- /package/dist/{ElDivider.vue.esm.js.map → src/ElDivider.vue.esm.js.map} +0 -0
- /package/dist/{ElDivider.vue.esm2.js → src/ElDivider.vue.esm2.js} +0 -0
- /package/dist/{ElDrawer.vue.cjs.js → src/ElDrawer.vue.cjs.js} +0 -0
- /package/dist/{ElDrawer.vue.cjs.js.map → src/ElDrawer.vue.cjs.js.map} +0 -0
- /package/dist/{ElDrawer.vue.cjs2.js → src/ElDrawer.vue.cjs2.js} +0 -0
- /package/dist/{ElDrawer.vue.esm.js → src/ElDrawer.vue.esm.js} +0 -0
- /package/dist/{ElDrawer.vue.esm.js.map → src/ElDrawer.vue.esm.js.map} +0 -0
- /package/dist/{ElDrawer.vue.esm2.js → src/ElDrawer.vue.esm2.js} +0 -0
- /package/dist/{ElDropdown.vue.cjs.js → src/ElDropdown.vue.cjs.js} +0 -0
- /package/dist/{ElDropdown.vue.cjs.js.map → src/ElDropdown.vue.cjs.js.map} +0 -0
- /package/dist/{ElDropdown.vue.esm.js → src/ElDropdown.vue.esm.js} +0 -0
- /package/dist/{ElDropdown.vue.esm.js.map → src/ElDropdown.vue.esm.js.map} +0 -0
- /package/dist/{ElFile.vue.cjs.js → src/ElFile.vue.cjs.js} +0 -0
- /package/dist/{ElFile.vue.cjs.js.map → src/ElFile.vue.cjs.js.map} +0 -0
- /package/dist/{ElFile.vue.cjs2.js → src/ElFile.vue.cjs2.js} +0 -0
- /package/dist/{ElFile.vue.esm.js → src/ElFile.vue.esm.js} +0 -0
- /package/dist/{ElFile.vue.esm.js.map → src/ElFile.vue.esm.js.map} +0 -0
- /package/dist/{ElFile.vue.esm2.js → src/ElFile.vue.esm2.js} +0 -0
- /package/dist/{ElIcon.vue.cjs.js → src/ElIcon.vue.cjs.js} +0 -0
- /package/dist/{ElIcon.vue.cjs.js.map → src/ElIcon.vue.cjs.js.map} +0 -0
- /package/dist/{ElIcon.vue.esm.js → src/ElIcon.vue.esm.js} +0 -0
- /package/dist/{ElIcon.vue.esm.js.map → src/ElIcon.vue.esm.js.map} +0 -0
- /package/dist/{ElIconButton.vue.cjs.js → src/ElIconButton.vue.cjs.js} +0 -0
- /package/dist/{ElIconButton.vue.cjs.js.map → src/ElIconButton.vue.cjs.js.map} +0 -0
- /package/dist/{ElIconButton.vue.cjs2.js → src/ElIconButton.vue.cjs2.js} +0 -0
- /package/dist/{ElIconButton.vue.esm.js → src/ElIconButton.vue.esm.js} +0 -0
- /package/dist/{ElIconButton.vue.esm.js.map → src/ElIconButton.vue.esm.js.map} +0 -0
- /package/dist/{ElIconButton.vue.esm2.js → src/ElIconButton.vue.esm2.js} +0 -0
- /package/dist/{ElInlineBanner.vue.cjs.js → src/ElInlineBanner.vue.cjs.js} +0 -0
- /package/dist/{ElInlineBanner.vue.cjs.js.map → src/ElInlineBanner.vue.cjs.js.map} +0 -0
- /package/dist/{ElInlineBanner.vue.cjs2.js → src/ElInlineBanner.vue.cjs2.js} +0 -0
- /package/dist/{ElInlineBanner.vue.esm.js → src/ElInlineBanner.vue.esm.js} +0 -0
- /package/dist/{ElInlineBanner.vue.esm.js.map → src/ElInlineBanner.vue.esm.js.map} +0 -0
- /package/dist/{ElInlineBanner.vue.esm2.js → src/ElInlineBanner.vue.esm2.js} +0 -0
- /package/dist/{ElInputChat.vue.cjs.js → src/ElInputChat.vue.cjs.js} +0 -0
- /package/dist/{ElInputChat.vue.cjs.js.map → src/ElInputChat.vue.cjs.js.map} +0 -0
- /package/dist/{ElInputChat.vue.cjs2.js → src/ElInputChat.vue.cjs2.js} +0 -0
- /package/dist/{ElInputChat.vue.esm.js → src/ElInputChat.vue.esm.js} +0 -0
- /package/dist/{ElInputChat.vue.esm.js.map → src/ElInputChat.vue.esm.js.map} +0 -0
- /package/dist/{ElInputChat.vue.esm2.js → src/ElInputChat.vue.esm2.js} +0 -0
- /package/dist/{ElItem.vue.cjs.js → src/ElItem.vue.cjs.js} +0 -0
- /package/dist/{ElItem.vue.cjs.js.map → src/ElItem.vue.cjs.js.map} +0 -0
- /package/dist/{ElItem.vue.cjs2.js → src/ElItem.vue.cjs2.js} +0 -0
- /package/dist/{ElItem.vue.cjs2.js.map → src/ElItem.vue.cjs2.js.map} +0 -0
- /package/dist/{ElItem.vue.esm.js → src/ElItem.vue.esm.js} +0 -0
- /package/dist/{ElItem.vue.esm.js.map → src/ElItem.vue.esm.js.map} +0 -0
- /package/dist/{ElItem.vue.esm2.js → src/ElItem.vue.esm2.js} +0 -0
- /package/dist/{ElItem.vue.esm2.js.map → src/ElItem.vue.esm2.js.map} +0 -0
- /package/dist/{ElListItem.vue.cjs.js → src/ElListItem.vue.cjs.js} +0 -0
- /package/dist/{ElListItem.vue.cjs.js.map → src/ElListItem.vue.cjs.js.map} +0 -0
- /package/dist/{ElListItem.vue.cjs2.js → src/ElListItem.vue.cjs2.js} +0 -0
- /package/dist/{ElListItem.vue.esm.js → src/ElListItem.vue.esm.js} +0 -0
- /package/dist/{ElListItem.vue.esm.js.map → src/ElListItem.vue.esm.js.map} +0 -0
- /package/dist/{ElListItem.vue.esm2.js → src/ElListItem.vue.esm2.js} +0 -0
- /package/dist/{ElLogo.vue.cjs.js → src/ElLogo.vue.cjs.js} +0 -0
- /package/dist/{ElLogo.vue.cjs.js.map → src/ElLogo.vue.cjs.js.map} +0 -0
- /package/dist/{ElLogo.vue.cjs2.js → src/ElLogo.vue.cjs2.js} +0 -0
- /package/dist/{ElLogo.vue.esm.js → src/ElLogo.vue.esm.js} +0 -0
- /package/dist/{ElLogo.vue.esm.js.map → src/ElLogo.vue.esm.js.map} +0 -0
- /package/dist/{ElLogo.vue.esm2.js → src/ElLogo.vue.esm2.js} +0 -0
- /package/dist/{ElModal.vue.cjs.js → src/ElModal.vue.cjs.js} +0 -0
- /package/dist/{ElModal.vue.cjs.js.map → src/ElModal.vue.cjs.js.map} +0 -0
- /package/dist/{ElModal.vue.esm.js → src/ElModal.vue.esm.js} +0 -0
- /package/dist/{ElModal.vue.esm.js.map → src/ElModal.vue.esm.js.map} +0 -0
- /package/dist/{ElSortingHeader.vue.cjs.js → src/ElSortingHeader.vue.cjs.js} +0 -0
- /package/dist/{ElSortingHeader.vue.cjs.js.map → src/ElSortingHeader.vue.cjs.js.map} +0 -0
- /package/dist/{ElSortingHeader.vue.cjs2.js → src/ElSortingHeader.vue.cjs2.js} +0 -0
- /package/dist/{ElSortingHeader.vue.esm.js → src/ElSortingHeader.vue.esm.js} +0 -0
- /package/dist/{ElSortingHeader.vue.esm.js.map → src/ElSortingHeader.vue.esm.js.map} +0 -0
- /package/dist/{ElSortingHeader.vue.esm2.js → src/ElSortingHeader.vue.esm2.js} +0 -0
- /package/dist/{ElSpinner.vue.cjs.js → src/ElSpinner.vue.cjs.js} +0 -0
- /package/dist/{ElSpinner.vue.cjs.js.map → src/ElSpinner.vue.cjs.js.map} +0 -0
- /package/dist/{ElSpinner.vue.cjs2.js → src/ElSpinner.vue.cjs2.js} +0 -0
- /package/dist/{ElSpinner.vue.esm.js → src/ElSpinner.vue.esm.js} +0 -0
- /package/dist/{ElSpinner.vue.esm.js.map → src/ElSpinner.vue.esm.js.map} +0 -0
- /package/dist/{ElSpinner.vue.esm2.js → src/ElSpinner.vue.esm2.js} +0 -0
- /package/dist/{ElSuggestionChip.vue.cjs.js → src/ElSuggestionChip.vue.cjs.js} +0 -0
- /package/dist/{ElSuggestionChip.vue.cjs.js.map → src/ElSuggestionChip.vue.cjs.js.map} +0 -0
- /package/dist/{ElSuggestionChip.vue.cjs2.js → src/ElSuggestionChip.vue.cjs2.js} +0 -0
- /package/dist/{ElSuggestionChip.vue.cjs2.js.map → src/ElSuggestionChip.vue.cjs2.js.map} +0 -0
- /package/dist/{ElSuggestionChip.vue.esm.js → src/ElSuggestionChip.vue.esm.js} +0 -0
- /package/dist/{ElSuggestionChip.vue.esm.js.map → src/ElSuggestionChip.vue.esm.js.map} +0 -0
- /package/dist/{ElSuggestionChip.vue.esm2.js → src/ElSuggestionChip.vue.esm2.js} +0 -0
- /package/dist/{ElSuggestionChip.vue.esm2.js.map → src/ElSuggestionChip.vue.esm2.js.map} +0 -0
- /package/dist/{ElTab.vue.cjs.js → src/ElTab.vue.cjs.js} +0 -0
- /package/dist/{ElTab.vue.cjs.js.map → src/ElTab.vue.cjs.js.map} +0 -0
- /package/dist/{ElTab.vue.cjs2.js → src/ElTab.vue.cjs2.js} +0 -0
- /package/dist/{ElTab.vue.esm.js → src/ElTab.vue.esm.js} +0 -0
- /package/dist/{ElTab.vue.esm.js.map → src/ElTab.vue.esm.js.map} +0 -0
- /package/dist/{ElTab.vue.esm2.js → src/ElTab.vue.esm2.js} +0 -0
- /package/dist/{ElTabGroup.vue.cjs.js → src/ElTabGroup.vue.cjs.js} +0 -0
- /package/dist/{ElTabGroup.vue.cjs.js.map → src/ElTabGroup.vue.cjs.js.map} +0 -0
- /package/dist/{ElTabGroup.vue.cjs2.js → src/ElTabGroup.vue.cjs2.js} +0 -0
- /package/dist/{ElTabGroup.vue.esm.js → src/ElTabGroup.vue.esm.js} +0 -0
- /package/dist/{ElTabGroup.vue.esm.js.map → src/ElTabGroup.vue.esm.js.map} +0 -0
- /package/dist/{ElTabGroup.vue.esm2.js → src/ElTabGroup.vue.esm2.js} +0 -0
- /package/dist/{ElTableHead.vue.cjs.js → src/ElTableHead.vue.cjs.js} +0 -0
- /package/dist/{ElTableHead.vue.cjs.js.map → src/ElTableHead.vue.cjs.js.map} +0 -0
- /package/dist/{ElTableHead.vue.cjs2.js → src/ElTableHead.vue.cjs2.js} +0 -0
- /package/dist/{ElTableHead.vue.cjs2.js.map → src/ElTableHead.vue.cjs2.js.map} +0 -0
- /package/dist/{ElTableHead.vue.esm.js → src/ElTableHead.vue.esm.js} +0 -0
- /package/dist/{ElTableHead.vue.esm.js.map → src/ElTableHead.vue.esm.js.map} +0 -0
- /package/dist/{ElTableHead.vue.esm2.js → src/ElTableHead.vue.esm2.js} +0 -0
- /package/dist/{ElTableHead.vue.esm2.js.map → src/ElTableHead.vue.esm2.js.map} +0 -0
- /package/dist/{ElTabs.vue.cjs.js → src/ElTabs.vue.cjs.js} +0 -0
- /package/dist/{ElTabs.vue.cjs.js.map → src/ElTabs.vue.cjs.js.map} +0 -0
- /package/dist/{ElTabs.vue.cjs2.js → src/ElTabs.vue.cjs2.js} +0 -0
- /package/dist/{ElTabs.vue.esm.js → src/ElTabs.vue.esm.js} +0 -0
- /package/dist/{ElTabs.vue.esm.js.map → src/ElTabs.vue.esm.js.map} +0 -0
- /package/dist/{ElTabs.vue.esm2.js → src/ElTabs.vue.esm2.js} +0 -0
- /package/dist/{ElTag.vue.cjs.js → src/ElTag.vue.cjs.js} +0 -0
- /package/dist/{ElTag.vue.cjs.js.map → src/ElTag.vue.cjs.js.map} +0 -0
- /package/dist/{ElTag.vue.cjs2.js → src/ElTag.vue.cjs2.js} +0 -0
- /package/dist/{ElTag.vue.esm.js → src/ElTag.vue.esm.js} +0 -0
- /package/dist/{ElTag.vue.esm.js.map → src/ElTag.vue.esm.js.map} +0 -0
- /package/dist/{ElTag.vue.esm2.js → src/ElTag.vue.esm2.js} +0 -0
- /package/dist/{ElTextCell.vue.cjs.js → src/ElTextCell.vue.cjs.js} +0 -0
- /package/dist/{ElTextCell.vue.cjs.js.map → src/ElTextCell.vue.cjs.js.map} +0 -0
- /package/dist/{ElTextCell.vue.cjs2.js → src/ElTextCell.vue.cjs2.js} +0 -0
- /package/dist/{ElTextCell.vue.esm.js → src/ElTextCell.vue.esm.js} +0 -0
- /package/dist/{ElTextCell.vue.esm.js.map → src/ElTextCell.vue.esm.js.map} +0 -0
- /package/dist/{ElTextCell.vue.esm2.js → src/ElTextCell.vue.esm2.js} +0 -0
- /package/dist/{ElToast.vue.cjs.js → src/ElToast.vue.cjs.js} +0 -0
- /package/dist/{ElToast.vue.cjs.js.map → src/ElToast.vue.cjs.js.map} +0 -0
- /package/dist/{ElToast.vue.esm.js → src/ElToast.vue.esm.js} +0 -0
- /package/dist/{ElToast.vue.esm.js.map → src/ElToast.vue.esm.js.map} +0 -0
- /package/dist/{ElTooltip.vue.cjs.js → src/ElTooltip.vue.cjs.js} +0 -0
- /package/dist/{ElTooltip.vue.cjs.js.map → src/ElTooltip.vue.cjs.js.map} +0 -0
- /package/dist/{ElTooltip.vue.cjs2.js → src/ElTooltip.vue.cjs2.js} +0 -0
- /package/dist/{ElTooltip.vue.esm.js → src/ElTooltip.vue.esm.js} +0 -0
- /package/dist/{ElTooltip.vue.esm.js.map → src/ElTooltip.vue.esm.js.map} +0 -0
- /package/dist/{ElTooltip.vue.esm2.js → src/ElTooltip.vue.esm2.js} +0 -0
- /package/dist/{ElVerticalTab.vue.cjs.js → src/ElVerticalTab.vue.cjs.js} +0 -0
- /package/dist/{ElVerticalTab.vue.cjs.js.map → src/ElVerticalTab.vue.cjs.js.map} +0 -0
- /package/dist/{ElVerticalTab.vue.cjs2.js → src/ElVerticalTab.vue.cjs2.js} +0 -0
- /package/dist/{ElVerticalTab.vue.esm.js → src/ElVerticalTab.vue.esm.js} +0 -0
- /package/dist/{ElVerticalTab.vue.esm.js.map → src/ElVerticalTab.vue.esm.js.map} +0 -0
- /package/dist/{ElVerticalTab.vue.esm2.js → src/ElVerticalTab.vue.esm2.js} +0 -0
- /package/dist/{_CustomTransition.vue.cjs.js → src/_CustomTransition.vue.cjs.js} +0 -0
- /package/dist/{_CustomTransition.vue.cjs.js.map → src/_CustomTransition.vue.cjs.js.map} +0 -0
- /package/dist/{_CustomTransition.vue.cjs2.js → src/_CustomTransition.vue.cjs2.js} +0 -0
- /package/dist/{_CustomTransition.vue.esm.js → src/_CustomTransition.vue.esm.js} +0 -0
- /package/dist/{_CustomTransition.vue.esm.js.map → src/_CustomTransition.vue.esm.js.map} +0 -0
- /package/dist/{_CustomTransition.vue.esm2.js → src/_CustomTransition.vue.esm2.js} +0 -0
- /package/dist/{assets → src/assets}/logo/elty-dark.svg.cjs.js +0 -0
- /package/dist/{assets → src/assets}/logo/elty-dark.svg.esm.js +0 -0
- /package/dist/{assets → src/assets}/logo/elty-two-tone.svg.cjs.js +0 -0
- /package/dist/{assets → src/assets}/logo/elty-two-tone.svg.esm.js +0 -0
- /package/dist/{assets → src/assets}/logo/elty-white.svg.cjs.js +0 -0
- /package/dist/{assets → src/assets}/logo/elty-white.svg.esm.js +0 -0
- /package/dist/{assets → src/assets}/logo/heart-dark.svg.cjs.js +0 -0
- /package/dist/{assets → src/assets}/logo/heart-dark.svg.esm.js +0 -0
- /package/dist/{assets → src/assets}/logo/heart-two-tone.svg.cjs.js +0 -0
- /package/dist/{assets → src/assets}/logo/heart-two-tone.svg.esm.js +0 -0
- /package/dist/{assets → src/assets}/logo/heart-white.svg.cjs.js +0 -0
- /package/dist/{assets → src/assets}/logo/heart-white.svg.esm.js +0 -0
- /package/dist/{forms → src/forms}/ElInputCheckbox.vue.cjs.js +0 -0
- /package/dist/{forms → src/forms}/ElInputCheckbox.vue.cjs.js.map +0 -0
- /package/dist/{forms → src/forms}/ElInputCheckbox.vue.cjs2.js +0 -0
- /package/dist/{forms → src/forms}/ElInputCheckbox.vue.esm.js +0 -0
- /package/dist/{forms → src/forms}/ElInputCheckbox.vue.esm.js.map +0 -0
- /package/dist/{forms → src/forms}/ElInputCheckbox.vue.esm2.js +0 -0
- /package/dist/{forms → src/forms}/ElInputContainer.vue.cjs.js +0 -0
- /package/dist/{forms → src/forms}/ElInputContainer.vue.cjs.js.map +0 -0
- /package/dist/{forms → src/forms}/ElInputContainer.vue.cjs2.js +0 -0
- /package/dist/{forms → src/forms}/ElInputContainer.vue.cjs2.js.map +0 -0
- /package/dist/{forms → src/forms}/ElInputContainer.vue.esm.js +0 -0
- /package/dist/{forms → src/forms}/ElInputContainer.vue.esm.js.map +0 -0
- /package/dist/{forms → src/forms}/ElInputContainer.vue.esm2.js +0 -0
- /package/dist/{forms → src/forms}/ElInputContainer.vue.esm2.js.map +0 -0
- /package/dist/{forms → src/forms}/ElInputDate.vue.cjs.js +0 -0
- /package/dist/{forms → src/forms}/ElInputDate.vue.cjs.js.map +0 -0
- /package/dist/{forms → src/forms}/ElInputDate.vue.esm.js +0 -0
- /package/dist/{forms → src/forms}/ElInputDate.vue.esm.js.map +0 -0
- /package/dist/{forms → src/forms}/ElInputFile.vue.cjs.js +0 -0
- /package/dist/{forms → src/forms}/ElInputFile.vue.cjs.js.map +0 -0
- /package/dist/{forms → src/forms}/ElInputFile.vue.cjs2.js +0 -0
- /package/dist/{forms → src/forms}/ElInputFile.vue.esm.js +0 -0
- /package/dist/{forms → src/forms}/ElInputFile.vue.esm.js.map +0 -0
- /package/dist/{forms → src/forms}/ElInputFile.vue.esm2.js +0 -0
- /package/dist/{forms → src/forms}/ElInputMeasureUnit.vue.cjs.js +0 -0
- /package/dist/{forms → src/forms}/ElInputMeasureUnit.vue.cjs.js.map +0 -0
- /package/dist/{forms → src/forms}/ElInputMeasureUnit.vue.cjs2.js +0 -0
- /package/dist/{forms → src/forms}/ElInputMeasureUnit.vue.esm.js +0 -0
- /package/dist/{forms → src/forms}/ElInputMeasureUnit.vue.esm.js.map +0 -0
- /package/dist/{forms → src/forms}/ElInputMeasureUnit.vue.esm2.js +0 -0
- /package/dist/{forms → src/forms}/ElInputNumber.vue.cjs.js +0 -0
- /package/dist/{forms → src/forms}/ElInputNumber.vue.cjs.js.map +0 -0
- /package/dist/{forms → src/forms}/ElInputNumber.vue.cjs2.js +0 -0
- /package/dist/{forms → src/forms}/ElInputNumber.vue.esm.js +0 -0
- /package/dist/{forms → src/forms}/ElInputNumber.vue.esm.js.map +0 -0
- /package/dist/{forms → src/forms}/ElInputNumber.vue.esm2.js +0 -0
- /package/dist/{forms → src/forms}/ElInputPhone.vue.cjs.js +0 -0
- /package/dist/{forms → src/forms}/ElInputPhone.vue.cjs.js.map +0 -0
- /package/dist/{forms → src/forms}/ElInputPhone.vue.cjs2.js +0 -0
- /package/dist/{forms → src/forms}/ElInputPhone.vue.esm.js +0 -0
- /package/dist/{forms → src/forms}/ElInputPhone.vue.esm.js.map +0 -0
- /package/dist/{forms → src/forms}/ElInputPhone.vue.esm2.js +0 -0
- /package/dist/{forms → src/forms}/ElInputRadioButton.vue.cjs.js +0 -0
- /package/dist/{forms → src/forms}/ElInputRadioButton.vue.cjs.js.map +0 -0
- /package/dist/{forms → src/forms}/ElInputRadioButton.vue.cjs2.js +0 -0
- /package/dist/{forms → src/forms}/ElInputRadioButton.vue.esm.js +0 -0
- /package/dist/{forms → src/forms}/ElInputRadioButton.vue.esm.js.map +0 -0
- /package/dist/{forms → src/forms}/ElInputRadioButton.vue.esm2.js +0 -0
- /package/dist/{forms → src/forms}/ElInputRichText/Editor.vue.cjs.js +0 -0
- /package/dist/{forms → src/forms}/ElInputRichText/Editor.vue.cjs.js.map +0 -0
- /package/dist/{forms → src/forms}/ElInputRichText/Editor.vue.esm.js +0 -0
- /package/dist/{forms → src/forms}/ElInputRichText/Editor.vue.esm.js.map +0 -0
- /package/dist/{forms → src/forms}/ElInputRichText.vue.cjs.js +0 -0
- /package/dist/{forms → src/forms}/ElInputRichText.vue.cjs.js.map +0 -0
- /package/dist/{forms → src/forms}/ElInputRichText.vue.esm.js +0 -0
- /package/dist/{forms → src/forms}/ElInputRichText.vue.esm.js.map +0 -0
- /package/dist/{forms → src/forms}/ElInputSearch.vue.cjs.js +0 -0
- /package/dist/{forms → src/forms}/ElInputSearch.vue.cjs.js.map +0 -0
- /package/dist/{forms → src/forms}/ElInputSearch.vue.esm.js +0 -0
- /package/dist/{forms → src/forms}/ElInputSearch.vue.esm.js.map +0 -0
- /package/dist/{forms → src/forms}/ElInputSelect.vue.cjs.js +0 -0
- /package/dist/{forms → src/forms}/ElInputSelect.vue.cjs.js.map +0 -0
- /package/dist/{forms → src/forms}/ElInputSelect.vue.esm.js +0 -0
- /package/dist/{forms → src/forms}/ElInputSelect.vue.esm.js.map +0 -0
- /package/dist/{forms → src/forms}/ElInputSwitch.vue.cjs.js +0 -0
- /package/dist/{forms → src/forms}/ElInputSwitch.vue.cjs.js.map +0 -0
- /package/dist/{forms → src/forms}/ElInputSwitch.vue.cjs2.js +0 -0
- /package/dist/{forms → src/forms}/ElInputSwitch.vue.esm.js +0 -0
- /package/dist/{forms → src/forms}/ElInputSwitch.vue.esm.js.map +0 -0
- /package/dist/{forms → src/forms}/ElInputSwitch.vue.esm2.js +0 -0
- /package/dist/{forms → src/forms}/ElInputText.vue.cjs.js +0 -0
- /package/dist/{forms → src/forms}/ElInputText.vue.cjs.js.map +0 -0
- /package/dist/{forms → src/forms}/ElInputText.vue.cjs2.js +0 -0
- /package/dist/{forms → src/forms}/ElInputText.vue.esm.js +0 -0
- /package/dist/{forms → src/forms}/ElInputText.vue.esm.js.map +0 -0
- /package/dist/{forms → src/forms}/ElInputText.vue.esm2.js +0 -0
- /package/dist/{forms → src/forms}/ElInputTextarea.vue.cjs.js +0 -0
- /package/dist/{forms → src/forms}/ElInputTextarea.vue.cjs.js.map +0 -0
- /package/dist/{forms → src/forms}/ElInputTextarea.vue.cjs2.js +0 -0
- /package/dist/{forms → src/forms}/ElInputTextarea.vue.esm.js +0 -0
- /package/dist/{forms → src/forms}/ElInputTextarea.vue.esm.js.map +0 -0
- /package/dist/{forms → src/forms}/ElInputTextarea.vue.esm2.js +0 -0
- /package/dist/{forms → src/forms}/input.cjs.js +0 -0
- /package/dist/{forms → src/forms}/input.esm.js +0 -0
- /package/dist/{index.cjs.js.map → src/index.cjs.js.map} +0 -0
- /package/dist/{index.esm.js.map → src/index.esm.js.map} +0 -0
- /package/dist/{polyfills.cjs.js → src/polyfills.cjs.js} +0 -0
- /package/dist/{polyfills.esm.js → src/polyfills.esm.js} +0 -0
- /package/dist/{preset.cjs.js.map → src/preset.cjs.js.map} +0 -0
- /package/dist/{preset.esm.js.map → src/preset.esm.js.map} +0 -0
- /package/dist/{shims.d.cjs.js → src/shims.d.cjs.js} +0 -0
- /package/dist/{shims.d.cjs.js.map → src/shims.d.cjs.js.map} +0 -0
- /package/dist/{shims.d.esm.js → src/shims.d.esm.js} +0 -0
- /package/dist/{shims.d.esm.js.map → src/shims.d.esm.js.map} +0 -0
- /package/dist/{style.cjs → src/style.cjs} +0 -0
- /package/dist/{style.css → src/style.css} +0 -0
- /package/dist/{table → src/table}/ElMobileTable.vue.cjs.js +0 -0
- /package/dist/{table → src/table}/ElMobileTable.vue.cjs.js.map +0 -0
- /package/dist/{table → src/table}/ElMobileTable.vue.esm.js +0 -0
- /package/dist/{table → src/table}/ElMobileTable.vue.esm.js.map +0 -0
- /package/dist/{table → src/table}/ElResponsiveTable.vue.cjs.js +0 -0
- /package/dist/{table → src/table}/ElResponsiveTable.vue.cjs.js.map +0 -0
- /package/dist/{table → src/table}/ElResponsiveTable.vue.cjs2.js +0 -0
- /package/dist/{table → src/table}/ElResponsiveTable.vue.esm.js +0 -0
- /package/dist/{table → src/table}/ElResponsiveTable.vue.esm.js.map +0 -0
- /package/dist/{table → src/table}/ElResponsiveTable.vue.esm2.js +0 -0
- /package/dist/{table → src/table}/ElServerSideMobileTable.vue.cjs.js +0 -0
- /package/dist/{table → src/table}/ElServerSideMobileTable.vue.cjs.js.map +0 -0
- /package/dist/{table → src/table}/ElServerSideMobileTable.vue.cjs2.js +0 -0
- /package/dist/{table → src/table}/ElServerSideMobileTable.vue.esm.js +0 -0
- /package/dist/{table → src/table}/ElServerSideMobileTable.vue.esm.js.map +0 -0
- /package/dist/{table → src/table}/ElServerSideMobileTable.vue.esm2.js +0 -0
- /package/dist/{table → src/table}/ElServerSideResponsiveTable.vue.cjs.js +0 -0
- /package/dist/{table → src/table}/ElServerSideResponsiveTable.vue.cjs.js.map +0 -0
- /package/dist/{table → src/table}/ElServerSideResponsiveTable.vue.cjs2.js +0 -0
- /package/dist/{table → src/table}/ElServerSideResponsiveTable.vue.esm.js +0 -0
- /package/dist/{table → src/table}/ElServerSideResponsiveTable.vue.esm.js.map +0 -0
- /package/dist/{table → src/table}/ElServerSideResponsiveTable.vue.esm2.js +0 -0
- /package/dist/{table → src/table}/ElServerSideTable.vue.cjs.js +0 -0
- /package/dist/{table → src/table}/ElServerSideTable.vue.cjs.js.map +0 -0
- /package/dist/{table → src/table}/ElServerSideTable.vue.esm.js +0 -0
- /package/dist/{table → src/table}/ElServerSideTable.vue.esm.js.map +0 -0
- /package/dist/{table → src/table}/ElServerSideTablePagination.vue.cjs.js +0 -0
- /package/dist/{table → src/table}/ElServerSideTablePagination.vue.cjs.js.map +0 -0
- /package/dist/{table → src/table}/ElServerSideTablePagination.vue.cjs2.js +0 -0
- /package/dist/{table → src/table}/ElServerSideTablePagination.vue.esm.js +0 -0
- /package/dist/{table → src/table}/ElServerSideTablePagination.vue.esm.js.map +0 -0
- /package/dist/{table → src/table}/ElServerSideTablePagination.vue.esm2.js +0 -0
- /package/dist/{table → src/table}/ElTable.vue.cjs.js +0 -0
- /package/dist/{table → src/table}/ElTable.vue.cjs.js.map +0 -0
- /package/dist/{table → src/table}/ElTable.vue.cjs2.js +0 -0
- /package/dist/{table → src/table}/ElTable.vue.esm.js +0 -0
- /package/dist/{table → src/table}/ElTable.vue.esm.js.map +0 -0
- /package/dist/{table → src/table}/ElTable.vue.esm2.js +0 -0
- /package/dist/{table → src/table}/ElTableCell.vue.cjs.js +0 -0
- /package/dist/{table → src/table}/ElTableCell.vue.cjs.js.map +0 -0
- /package/dist/{table → src/table}/ElTableCell.vue.cjs2.js +0 -0
- /package/dist/{table → src/table}/ElTableCell.vue.esm.js +0 -0
- /package/dist/{table → src/table}/ElTableCell.vue.esm.js.map +0 -0
- /package/dist/{table → src/table}/ElTableCell.vue.esm2.js +0 -0
- /package/dist/{table → src/table}/ElTablePagination.vue.cjs.js +0 -0
- /package/dist/{table → src/table}/ElTablePagination.vue.cjs.js.map +0 -0
- /package/dist/{table → src/table}/ElTablePagination.vue.cjs2.js +0 -0
- /package/dist/{table → src/table}/ElTablePagination.vue.esm.js +0 -0
- /package/dist/{table → src/table}/ElTablePagination.vue.esm.js.map +0 -0
- /package/dist/{table → src/table}/ElTablePagination.vue.esm2.js +0 -0
- /package/dist/{table → src/table}/commonTypes.cjs.js +0 -0
- /package/dist/{table → src/table}/commonTypes.cjs.js.map +0 -0
- /package/dist/{table → src/table}/commonTypes.esm.js +0 -0
- /package/dist/{table → src/table}/commonTypes.esm.js.map +0 -0
- /package/dist/{table → src/table}/responsive-table-utils.cjs.js +0 -0
- /package/dist/{table → src/table}/responsive-table-utils.cjs.js.map +0 -0
- /package/dist/{table → src/table}/responsive-table-utils.esm.js +0 -0
- /package/dist/{table → src/table}/responsive-table-utils.esm.js.map +0 -0
- /package/dist/{types.cjs.js → src/types.cjs.js} +0 -0
- /package/dist/{types.esm.js → src/types.esm.js} +0 -0
- /package/dist/{utils.cjs.js → src/utils.cjs.js} +0 -0
- /package/dist/{utils.esm.js → src/utils.esm.js} +0 -0
- /package/dist/{vite-env.d.cjs.js → src/vite-env.d.cjs.js} +0 -0
- /package/dist/{vite-env.d.cjs.js.map → src/vite-env.d.cjs.js.map} +0 -0
- /package/dist/{vite-env.d.esm.js → src/vite-env.d.esm.js} +0 -0
- /package/dist/{vite-env.d.esm.js.map → src/vite-env.d.esm.js.map} +0 -0
- /package/dist/{vue.plugin.cjs.js → src/vue.plugin.cjs.js} +0 -0
- /package/dist/{vue.plugin.esm.js → src/vue.plugin.esm.js} +0 -0
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),K=require("./ElServerSideTablePagination.vue.cjs2.js"),Q=require("../_CustomTransition.vue.cjs2.js"),b=require("../forms/ElInputCheckbox.vue.cjs2.js"),W=require("../forms/ElInputSelect.vue.cjs2.js"),Y=require("../forms/ElInputDate.vue.cjs2.js"),Z=require("../forms/ElInputText.vue.cjs2.js"),ee=require("../ElSpinner.vue.cjs2.js"),te=require("./ElTableCell.vue.cjs2.js"),le=require("../ElButton.vue.cjs2.js"),x=require("../../node_modules/@vueuse/core/node_modules/@vueuse/shared/index.cjs.js"),oe={class:"flex flex-col"},re={class:"overflow-x-auto"},ae={class:"inline-block min-w-full bg-white align-middle"},ne={class:"min-w-full"},se={class:"bg-neutral-surface-raised font-semibold"},ce={key:1,class:"w-7"},ue=["title","onClick"],ie={key:0,xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",class:"ml-1 inline-flex h-3 w-3",fill:"currentColor"},de={key:0,d:"M13 5.41V21a1 1 0 0 1-2 0V5.41l-5.3 5.3a1 1 0 1 1-1.4-1.42l7-7a1 1 0 0 1 1.4 0l7 7a1 1 0 1 1-1.4 1.42L13 5.4z"},pe={key:1,d:"M11 18.59V3a1 1 0 0 1 2 0v15.59l5.3-5.3a1 1 0 0 1 1.4 1.42l-7 7a1 1 0 0 1-1.4 0l-7-7a1 1 0 0 1 1.4-1.42l5.3 5.3z",title:"Ordine Decrescente"},fe={key:0},ge={key:0,scope:"col"},me={key:1,class:"flex flex-col"},_e={key:3,class:"flex justify-end"},ve={key:"loading"},we=["colspan"],ye={key:"tableFull",class:"bg-white"},Se={key:0,class:"flex h-20 items-center justify-center py-3"},ke=["data-cy"],Ee={key:"tableEmpty"},he=["colspan"],Be=e.defineComponent({__name:"ElServerSideTable",props:{columns:{},sortByCol:{default:-1},sortByColAsc:{type:Boolean,default:!1},noFilters:{type:Boolean},noFooter:{type:Boolean},rowsSelectionMode:{default:void 0},rowsSelectionDisabled:{type:Boolean},rowsPerPage:{default:15},dataController:{}},emits:["rows-selected","newPageSelected"],setup(A,{expose:F,emit:T}){const r=A,N=T,f=e.ref(!0),y=10,d=e.ref([]),S=e.ref(null);e.onMounted(async()=>{const t=await r.dataController({paginationStatus:{currentPage:0},sortStatus:v.value,filterStatus:u.value,triggeredEvent:"firstLoad"});d.value=t.data,_.value=t.totalRows,f.value=!1});function P(){const t=e.ref(0),i=e.computed(()=>{var a;return((a=S.value)==null?void 0:a.currentPage)??0});return{newPageSelected:async a=>{f.value=!0,d.value=(await r.dataController({paginationStatus:{currentPage:a},sortStatus:v.value,filterStatus:u.value,triggeredEvent:"paginate"})).data,f.value=!1},totalRowsCount:t,currentPage:i,goToFirstPage:()=>{var a;return(a=S.value)==null?void 0:a.goToPage(0,{doNotEmitEvent:!0})}}}function M(){const t=e.ref({currentlySortColIndex:r.sortByCol>-1?r.sortByCol:-1,arrows:[]}),i=()=>{t.value={currentlySortColIndex:-1,arrows:[]}},o=e.computed(()=>({columnToSort:t.value.currentlySortColIndex,order:t.value.arrows[t.value.currentlySortColIndex]?"asc":"desc"}));return e.onMounted(async()=>{t.value.arrows=new Array(y),r.sortByCol>-1&&(t.value.arrows[r.sortByCol]=r.sortByColAsc)}),{sortStatus:t,toggleSortArrow:async a=>{t.value.currentlySortColIndex=a,t.value.arrows.splice(a,1,!t.value.arrows[a]),f.value=!0;try{const n=await r.dataController({paginationStatus:{currentPage:h.value},sortStatus:o.value,filterStatus:u.value,triggeredEvent:"sort"});d.value=n.data,_.value=n.totalRows}catch(n){console.error(n)}finally{f.value=!1}},currentSortStatus:o,resetSort:i}}function D(){const t=e.ref([]),i=e.ref(!1);e.onMounted(()=>{o(),x.watchDeep(t,async n=>{i.value?(l(n),i.value=!1):a(n)})});const o=()=>{var n;i.value=!0,t.value=new Array(y);for(let s=0;s<y;s++){const c=(n=r.columns[s])==null?void 0:n.filter;c&&(c.type==="FREE_SEARCH"?t.value.splice(s,1,{id:c.id,textSearch:c.initialValue??"",type:"FREE_SEARCH",columnTitle:r.columns[s].title}):c.type==="MULTI_VALUE"?t.value.splice(s,1,{id:c.id,textSearch:c.initialValue??"",type:"MULTI_VALUE",columnTitle:r.columns[s].title}):c.type==="DATE_RANGE"&&t.value.splice(s,1,{id:c.id,dateFrom:c.initialValue??0,type:"DATE_RANGE",columnTitle:r.columns[s].title}))}},l=async n=>{console.log("applyFilters"),f.value=!0,H();const s=await r.dataController({paginationStatus:{currentPage:h.value},sortStatus:v.value,filterStatus:n,triggeredEvent:"filter"});d.value=s.data,_.value=s.totalRows,f.value=!1},a=x.useDebounceFn(l,500);return{filterStatus:t,resetFilters:o}}function U(){const t=e.ref([]),i=()=>{N("rows-selected",t.value)},o=p=>{a(p.map(g=>g.id))},l=p=>{const g=t.value.findIndex(m=>m.id===p);t.value.splice(g,1),i()},a=async p=>{r.rowsSelectionMode==="single"&&(t.value=[],await e.nextTick());const g=d.value.filter(m=>p.includes(m.id));r.rowsSelectionMode==="single"&&(g.length=Math.min(1,g.length));for(const m of g)t.value.some(J=>J.id===m.id)||t.value.push(m);i()},n=()=>{t.value=[],i()},s=()=>d.value,c=()=>t.value,w=e.computed(()=>t.value.length>0&&t.value.length===d.value.length);return{selectedRows:t,rowsSelected:o,rowUnselected:l,selectRows:a,unselectAllRows:n,getDataRows:s,getSelectedRows:c,allRowsSelected:w}}const{selectedRows:B,rowsSelected:C,rowUnselected:L,selectRows:I,unselectAllRows:k,getDataRows:q,getSelectedRows:z,allRowsSelected:V}=U(),{filterStatus:u,resetFilters:E}=D(),{sortStatus:R,toggleSortArrow:O,currentSortStatus:v,resetSort:G}=M(),{newPageSelected:j,totalRowsCount:_,currentPage:h,goToFirstPage:H}=P(),X=async()=>{G(),E(),k()},$=async()=>{f.value=!0;const t=await r.dataController({paginationStatus:{currentPage:h.value},sortStatus:v.value,filterStatus:u.value,triggeredEvent:"trigger"});d.value=t.data,_.value=t.totalRows,f.value=!1};return e.watch(()=>r.columns,()=>E(),{deep:!0,immediate:!0}),F({selectRows:I,resetAllAndFetch:X,unselectAllRows:k,getDataRows:q,getSelectedRows:z,triggerDataController:$}),(t,i)=>(e.openBlock(),e.createElementBlock("div",oe,[e.createElementVNode("div",re,[e.createElementVNode("div",ae,[e.createElementVNode("table",ne,[e.createElementVNode("thead",null,[e.createElementVNode("tr",se,[t.rowsSelectionMode?(e.openBlock(),e.createElementBlock("th",{key:0,scope:"col",class:e.normalizeClass(["bg-neutral-surface-raised text-neutral-darker flex justify-center px-3 py-3 text-xs uppercase leading-4 tracking-wider",{"cursor-pointer":t.rowsSelectionMode==="multiple"}])},[t.rowsSelectionMode==="multiple"?(e.openBlock(),e.createBlock(b.default,{key:0,"model-value":e.unref(V),disabled:t.rowsSelectionDisabled,size:"xxs",onClick:i[0]||(i[0]=()=>e.unref(V)?e.unref(k)():e.unref(C)(d.value))},null,8,["model-value","disabled"])):(e.openBlock(),e.createElementBlock("div",ce))],2)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.columns,(o,l)=>(e.openBlock(),e.createElementBlock("th",{key:l,scope:"col",class:e.normalizeClass(["bg-neutral-surface-raised text-neutral-darker whitespace-nowrap rounded-none px-3 py-3 text-xs font-semibold uppercase leading-4 tracking-wider",[o.alignRight?"text-right":"text-left",o.noSort?"cursor-default":"cursor-pointer"]]),title:o.noSort?"Colonna non ordinabile":e.unref(R).arrows[l]?"Ordine crescente":"Ordine decrescente",onClick:a=>!o.noSort&&e.unref(O)(l)},[e.createTextVNode(e.toDisplayString(o.title)+" ",1),o.noSort?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("svg",ie,[e.unref(R).arrows[l]?(e.openBlock(),e.createElementBlock("path",de)):(e.openBlock(),e.createElementBlock("path",pe))]))],10,ue))),128))]),e.unref(u).length>0&&!t.noFilters?(e.openBlock(),e.createElementBlock("tr",fe,[t.rowsSelectionMode?(e.openBlock(),e.createElementBlock("th",ge)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.columns,(o,l)=>{var a,n,s,c,w;return e.openBlock(),e.createElementBlock("th",{key:l,scope:"col",class:"text-neutral-darker px-3 py-3 text-left text-xs font-light leading-4 tracking-wider"},[((a=o.filter)==null?void 0:a.type)==="FREE_SEARCH"&&e.unref(u)[l].type==="FREE_SEARCH"?(e.openBlock(),e.createBlock(Z.default,{key:0,modelValue:e.unref(u)[l].textSearch,"onUpdate:modelValue":p=>e.unref(u)[l].textSearch=p,placeholder:((n=o.filter)==null?void 0:n.placeholder)||"Cerca","hidden-error-message":!0,"leading-icon":{name:"MagnifyingGlassIcon"}},null,8,["modelValue","onUpdate:modelValue","placeholder"])):((s=o.filter)==null?void 0:s.type)==="DATE_RANGE"&&e.unref(u)[l].type==="DATE_RANGE"?(e.openBlock(),e.createElementBlock("div",me,[e.createVNode(Y.default,{modelValue:e.unref(u)[l].dateFrom,"onUpdate:modelValue":p=>e.unref(u)[l].dateFrom=p,"hidden-error-message":!0},null,8,["modelValue","onUpdate:modelValue"])])):((c=o.filter)==null?void 0:c.type)==="MULTI_VALUE"&&e.unref(u)[l].type==="MULTI_VALUE"?(e.openBlock(),e.createBlock(W.default,{key:2,modelValue:e.unref(u)[l].textSearch,"onUpdate:modelValue":p=>e.unref(u)[l].textSearch=p,class:"flex flex-col",type:"autocomplete",options:o.filter.selectOptions,"hidden-error-message":!0},null,8,["modelValue","onUpdate:modelValue","options"])):((w=o.filter)==null?void 0:w.type)==="RESET_FILTERS_BUTTON"?(e.openBlock(),e.createElementBlock("div",_e,[e.createVNode(le.default,{label:"Azzera filtri",variant:"tertiary",size:"xs",onClick:e.unref(E)},null,8,["onClick"])])):e.createCommentVNode("",!0)])}),128))])):e.createCommentVNode("",!0)]),e.createVNode(Q.default,{name:"fade"},{default:e.withCtx(()=>[f.value?(e.openBlock(),e.createElementBlock("tbody",ve,[e.createElementVNode("tr",null,[e.createElementVNode("td",{colspan:r.columns.length+1},[e.createVNode(ee.default,{label:"Caricamento dati...",class:"p-4","extra-loading-msg-after-seconds":3})],8,we)])])):d.value.length>0?(e.openBlock(),e.createElementBlock("tbody",ye,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.value,o=>(e.openBlock(),e.createElementBlock("tr",{key:o.id,class:e.normalizeClass(["transition duration-150 ease-in-out border-t border-neutral-surface",{"bg-neutral-surface-raised":t.rowsSelectionMode&&e.unref(B).find(l=>l.id===o.id)}]),"data-cy":"table-row"},[t.rowsSelectionMode?(e.openBlock(),e.createElementBlock("td",Se,[e.createVNode(b.default,{"model-value":!!e.unref(B).find(l=>l.id===o.id),disabled:t.rowsSelectionDisabled,size:"xxs","onUpdate:modelValue":l=>l?e.unref(C)([o]):e.unref(L)(o.id)},null,8,["model-value","disabled","onUpdate:modelValue"])])):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.cells,(l,a)=>(e.openBlock(),e.createElementBlock("td",{key:a,class:"max-w-sm px-2.5 py-2.5","data-cy":l.type==="default"&&l.mainText.trim().replaceAll(" ","").replaceAll(",","")},[e.createVNode(te.default,{cell:l},null,8,["cell"])],8,ke))),128))],2))),128))])):d.value.length===0?(e.openBlock(),e.createElementBlock("tbody",Ee,[e.createElementVNode("tr",null,[e.createElementVNode("td",{colspan:r.columns.length+1,class:"p-4 font-light text-neutral-darker"},"nessun dato trovato",8,he)])])):e.createCommentVNode("",!0)]),_:1})])])]),e.createVNode(K.default,{ref_key:"pagination",ref:S,"total-rows-count":e.unref(_),"rows-per-page":r.rowsPerPage,"hide-footer":r.noFooter,"onUpdate:currentPage":e.unref(j)},null,8,["total-rows-count","rows-per-page","hide-footer","onUpdate:currentPage"])]))}});exports.default=Be;
|
|
2
|
+
//# sourceMappingURL=ElServerSideTable.vue.cjs2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ElServerSideTable.vue.cjs2.js","sources":["../../../src/table/ElServerSideTable.vue"],"sourcesContent":["<script lang=\"ts\">\nexport interface TableColumn {\n title: string;\n filter?: TableColumnFilter;\n alignRight?: boolean;\n noSort?: boolean;\n}\n\nexport type TableColumnFilter =\n | TableColumnFilterFreeSearch\n | TableColumnFilterDateRange\n | TableColumnFilterMultiValue\n | TableColumnFilterResetButton;\n\nexport type TableColumnFilterFreeSearch = {\n id?: string;\n type: Extract<FilterType, 'FREE_SEARCH'>;\n placeholder?: string;\n initialValue?: string;\n};\n\nexport type TableColumnFilterDateRange = {\n id?: string;\n type: Extract<FilterType, 'DATE_RANGE'>;\n placeholder?: string;\n initialValue?: number;\n};\n\nexport type TableColumnFilterMultiValue = {\n id?: string;\n type: Extract<FilterType, 'MULTI_VALUE'>;\n selectOptions: InstanceType<typeof ElInputSelect>['$props']['options'];\n initialValue?: string;\n};\n\nexport type TableColumnFilterResetButton = {\n type: 'RESET_FILTERS_BUTTON';\n};\n\nexport interface DataControls {\n sortStatus: SortStatus;\n paginationStatus: {\n currentPage: number;\n };\n filterStatus: FilterStatus[];\n triggeredEvent: 'paginate' | 'filter' | 'sort' | 'firstLoad' | 'trigger';\n}\n\nexport interface SortStatus {\n columnToSort: number;\n order: 'asc' | 'desc';\n}\n\nexport interface ServerSideTableProps {\n columns: TableColumn[];\n sortByCol?: number; // initial sort by column\n sortByColAsc?: boolean; // initial sort by column should be in Ascending order\n noFilters?: boolean;\n noFooter?: boolean;\n rowsSelectionMode?: 'single' | 'multiple';\n rowsSelectionDisabled?: boolean;\n rowsPerPage?: number;\n dataController: (args: DataControls) => Promise<{ data: DataRow[]; totalRows: number }>;\n}\n\nexport type FilterStatus = TextFilterStatus | DateFilterStatus;\n\nexport type TextFilterStatus = {\n id?: string;\n textSearch: string;\n columnTitle: string;\n type: Extract<FilterType, 'FREE_SEARCH' | 'MULTI_VALUE'>;\n};\n\nexport type DateFilterStatus = {\n id?: string;\n dateFrom: number;\n columnTitle: string;\n type: Extract<FilterType, 'DATE_RANGE'>;\n};\n</script>\n\n<script lang=\"ts\" setup>\nimport { computed, nextTick, onMounted, ref, watch } from 'vue';\nimport ElServerSideTablePagination from '@/table/ElServerSideTablePagination.vue';\nimport CustomTransition from '@/_CustomTransition.vue';\nimport ElInputCheckbox from '@/forms/ElInputCheckbox.vue';\nimport ElInputSelect from '@/forms/ElInputSelect.vue';\nimport ElInputDate from '@/forms/ElInputDate.vue';\nimport ElInputText from '@/forms/ElInputText.vue';\nimport ElSpinner from '@/ElSpinner.vue';\nimport ElTableCell from '@/table/ElTableCell.vue';\nimport ElButton from '@/ElButton.vue';\nimport { watchDeep } from '@vueuse/core';\nimport { DataRow, FilterType } from '@/table/commonTypes';\nimport { useDebounceFn } from '@vueuse/core';\n\nconst props = withDefaults(defineProps<ServerSideTableProps>(), {\n sortByCol: -1,\n sortByColAsc: false,\n rowsSelectionMode: undefined,\n rowsPerPage: 15,\n});\n\nconst emit = defineEmits<{\n (event: 'rows-selected', rows: DataRow[]): void;\n (event: 'newPageSelected', pageNumber: number): void;\n}>();\n\nconst loading = ref(true);\n\nconst MAX_COLS = 10;\n\nconst currentPageDataRows = ref<DataRow[]>([]);\n\nconst pagination = ref<InstanceType<typeof ElServerSideTablePagination> | null>(null);\n\nonMounted(async () => {\n const newData = await props.dataController({\n paginationStatus: {\n currentPage: 0,\n },\n sortStatus: currentSortStatus.value,\n filterStatus: filterStatus.value,\n triggeredEvent: 'firstLoad',\n });\n currentPageDataRows.value = newData.data;\n totalRowsCount.value = newData.totalRows;\n loading.value = false;\n});\n\nfunction usePagination() {\n const totalRowsCount = ref(0);\n const currentPage = computed(() => pagination.value?.currentPage ?? 0);\n\n const goToFirstPage = () => pagination.value?.goToPage(0, { doNotEmitEvent: true });\n\n const newPageSelected = async (newPage: number) => {\n loading.value = true;\n currentPageDataRows.value = (\n await props.dataController({\n paginationStatus: {\n currentPage: newPage,\n },\n sortStatus: currentSortStatus.value,\n filterStatus: filterStatus.value,\n triggeredEvent: 'paginate',\n })\n ).data;\n loading.value = false;\n };\n\n return {\n newPageSelected,\n totalRowsCount,\n currentPage,\n goToFirstPage,\n };\n}\n\nfunction useSorting() {\n const sortStatus = ref<{\n currentlySortColIndex: number;\n arrows: boolean[];\n }>({\n currentlySortColIndex: props.sortByCol > -1 ? props.sortByCol : -1,\n arrows: [],\n });\n\n const resetSort = () => {\n sortStatus.value = {\n currentlySortColIndex: -1,\n arrows: [],\n };\n };\n const currentSortStatus = computed<DataControls['sortStatus']>(() => {\n return {\n columnToSort: sortStatus.value.currentlySortColIndex,\n order: sortStatus.value.arrows[sortStatus.value.currentlySortColIndex] ? 'asc' : 'desc',\n };\n });\n\n onMounted(async () => {\n sortStatus.value.arrows = new Array(MAX_COLS);\n if (props.sortByCol > -1) {\n sortStatus.value.arrows[props.sortByCol] = props.sortByColAsc;\n }\n });\n\n const toggleSortArrow = async (colIndex: number) => {\n sortStatus.value.currentlySortColIndex = colIndex;\n sortStatus.value.arrows.splice(colIndex, 1, !sortStatus.value.arrows[colIndex]);\n loading.value = true;\n try {\n const newData = await props.dataController({\n paginationStatus: {\n currentPage: currentPage.value,\n },\n sortStatus: currentSortStatus.value,\n filterStatus: filterStatus.value,\n triggeredEvent: 'sort',\n });\n currentPageDataRows.value = newData.data;\n totalRowsCount.value = newData.totalRows;\n } catch (error) {\n // TODO handle error\n console.error(error);\n } finally {\n loading.value = false;\n }\n };\n\n return {\n sortStatus,\n toggleSortArrow,\n currentSortStatus,\n resetSort,\n };\n}\n\nfunction useFilters() {\n const filterStatus = ref<FilterStatus[]>([]);\n const isResettingFilters = ref(false);\n\n onMounted(() => {\n resetFilters();\n watchDeep(filterStatus, async filters => {\n if (isResettingFilters.value) {\n applyFilters(filters);\n isResettingFilters.value = false;\n } else {\n applyFiltersDebounced(filters);\n }\n });\n });\n\n const resetFilters = () => {\n isResettingFilters.value = true;\n\n filterStatus.value = new Array(MAX_COLS);\n for (let i = 0; i < MAX_COLS; i++) {\n const filter = props.columns[i]?.filter;\n if (filter) {\n if (filter.type === 'FREE_SEARCH') {\n filterStatus.value.splice(i, 1, {\n id: filter.id,\n textSearch: filter.initialValue ?? '',\n type: 'FREE_SEARCH',\n columnTitle: props.columns[i].title,\n });\n } else if (filter.type === 'MULTI_VALUE') {\n filterStatus.value.splice(i, 1, {\n id: filter.id,\n textSearch: filter.initialValue ?? '',\n type: 'MULTI_VALUE',\n columnTitle: props.columns[i].title,\n });\n } else if (filter.type === 'DATE_RANGE') {\n filterStatus.value.splice(i, 1, {\n id: filter.id,\n dateFrom: filter.initialValue ?? 0,\n type: 'DATE_RANGE',\n columnTitle: props.columns[i].title,\n });\n }\n }\n }\n };\n\n const applyFilters = async (filters: FilterStatus[]) => {\n console.log('applyFilters');\n loading.value = true;\n goToFirstPage();\n const newData = await props.dataController({\n paginationStatus: {\n currentPage: currentPage.value,\n },\n sortStatus: currentSortStatus.value,\n filterStatus: filters,\n triggeredEvent: 'filter',\n });\n currentPageDataRows.value = newData.data;\n totalRowsCount.value = newData.totalRows;\n loading.value = false;\n };\n\n const applyFiltersDebounced = useDebounceFn(applyFilters, 500);\n\n return {\n filterStatus,\n resetFilters,\n };\n}\n\nfunction useRowsSelection() {\n const selectedRows = ref<typeof currentPageDataRows.value>([]);\n\n const emitRowsSelected = () => {\n emit('rows-selected', selectedRows.value);\n };\n\n const rowsSelected = (rows: DataRow[]) => {\n selectRows(rows.map(r => r.id));\n };\n\n const rowUnselected = (rowId: string) => {\n const index = selectedRows.value.findIndex(r => r.id === rowId);\n selectedRows.value.splice(index, 1);\n emitRowsSelected();\n };\n\n // select the rows with the given ids, possibly in addition to the rows that are already selected\n const selectRows = async (rowsIds: string[]) => {\n if (props.rowsSelectionMode === 'single') {\n selectedRows.value = [];\n await nextTick();\n }\n const rowsToSelect = currentPageDataRows.value.filter(r => rowsIds.includes(r.id));\n if (props.rowsSelectionMode === 'single') {\n rowsToSelect.length = Math.min(1, rowsToSelect.length);\n }\n\n for (const row of rowsToSelect) {\n if (!selectedRows.value.some(r => r.id === row.id)) {\n selectedRows.value.push(row);\n }\n }\n\n emitRowsSelected();\n };\n\n const unselectAllRows = () => {\n selectedRows.value = [];\n emitRowsSelected();\n };\n\n const getDataRows = (): DataRow[] => currentPageDataRows.value;\n const getSelectedRows = (): DataRow[] => selectedRows.value;\n\n const allRowsSelected = computed(() => {\n return selectedRows.value.length > 0 && selectedRows.value.length === currentPageDataRows.value.length;\n });\n\n return {\n selectedRows,\n rowsSelected,\n rowUnselected,\n selectRows,\n unselectAllRows,\n getDataRows,\n getSelectedRows,\n allRowsSelected,\n };\n}\n\nconst { selectedRows, rowsSelected, rowUnselected, selectRows, unselectAllRows, getDataRows, getSelectedRows, allRowsSelected } =\n useRowsSelection();\nconst { filterStatus, resetFilters } = useFilters();\nconst { sortStatus, toggleSortArrow, currentSortStatus, resetSort } = useSorting();\nconst { newPageSelected, totalRowsCount, currentPage, goToFirstPage } = usePagination();\n\nconst resetAllAndFetch = async () => {\n // Resetting filters and sort will trigger the dataController\n resetSort();\n resetFilters();\n unselectAllRows();\n};\n\nconst triggerDataController = async () => {\n loading.value = true;\n const newData = await props.dataController({\n paginationStatus: {\n currentPage: currentPage.value,\n },\n sortStatus: currentSortStatus.value,\n filterStatus: filterStatus.value,\n triggeredEvent: 'trigger',\n });\n currentPageDataRows.value = newData.data;\n totalRowsCount.value = newData.totalRows;\n loading.value = false;\n};\n\nwatch(\n () => props.columns,\n () => resetFilters(),\n { deep: true, immediate: true },\n);\n\ndefineExpose({\n selectRows,\n resetAllAndFetch,\n unselectAllRows,\n getDataRows,\n getSelectedRows,\n triggerDataController,\n});\n</script>\n\n<template>\n <div class=\"flex flex-col\">\n <div class=\"overflow-x-auto\">\n <div class=\"inline-block min-w-full bg-white align-middle\">\n <table class=\"min-w-full\">\n <thead>\n <tr class=\"bg-neutral-surface-raised font-semibold\">\n <th\n v-if=\"rowsSelectionMode\"\n scope=\"col\"\n class=\"bg-neutral-surface-raised text-neutral-darker flex justify-center px-3 py-3 text-xs uppercase leading-4 tracking-wider\"\n :class=\"{ 'cursor-pointer': rowsSelectionMode === 'multiple' }\"\n >\n <ElInputCheckbox\n v-if=\"rowsSelectionMode === 'multiple'\"\n :model-value=\"allRowsSelected\"\n :disabled=\"rowsSelectionDisabled\"\n size=\"xxs\"\n @click=\"() => (allRowsSelected ? unselectAllRows() : rowsSelected(currentPageDataRows))\"\n />\n <div v-else class=\"w-7\" />\n </th>\n <th\n v-for=\"(col, index) in props.columns\"\n :key=\"index\"\n scope=\"col\"\n class=\"bg-neutral-surface-raised text-neutral-darker whitespace-nowrap rounded-none px-3 py-3 text-xs font-semibold uppercase leading-4 tracking-wider\"\n :class=\"[col.alignRight ? 'text-right' : 'text-left', !col.noSort ? 'cursor-pointer' : 'cursor-default']\"\n :title=\"!col.noSort ? (sortStatus.arrows[index] ? 'Ordine crescente' : 'Ordine decrescente') : 'Colonna non ordinabile'\"\n @click=\"!col.noSort && toggleSortArrow(index)\"\n >\n {{ col.title }}\n\n <!-- //////////////////// SORT //////////////////////////// -->\n <svg\n v-if=\"!col.noSort\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n class=\"ml-1 inline-flex h-3 w-3\"\n fill=\"currentColor\"\n >\n <path\n v-if=\"sortStatus.arrows[index]\"\n d=\"M13 5.41V21a1 1 0 0 1-2 0V5.41l-5.3 5.3a1 1 0 1 1-1.4-1.42l7-7a1 1 0 0 1 1.4 0l7 7a1 1 0 1 1-1.4 1.42L13 5.4z\"\n />\n <path\n v-else\n d=\"M11 18.59V3a1 1 0 0 1 2 0v15.59l5.3-5.3a1 1 0 0 1 1.4 1.42l-7 7a1 1 0 0 1-1.4 0l-7-7a1 1 0 0 1 1.4-1.42l5.3 5.3z\"\n title=\"Ordine Decrescente\"\n />\n </svg>\n </th>\n </tr>\n <!-- ///////////////////// FILTERS ///////////////////////// -->\n <tr v-if=\"filterStatus.length > 0 && !noFilters\">\n <th v-if=\"rowsSelectionMode\" scope=\"col\" />\n <th\n v-for=\"(col, index) in columns\"\n :key=\"index\"\n scope=\"col\"\n class=\"text-neutral-darker px-3 py-3 text-left text-xs font-light leading-4 tracking-wider\"\n >\n <!-- FILTER: TEXT SEARCH -->\n <ElInputText\n v-if=\"col.filter?.type === 'FREE_SEARCH' && filterStatus[index].type === 'FREE_SEARCH'\"\n v-model=\"(filterStatus[index] as TextFilterStatus).textSearch\"\n :placeholder=\"col.filter?.placeholder || 'Cerca'\"\n :hidden-error-message=\"true\"\n :leading-icon=\"{\n name: 'MagnifyingGlassIcon',\n }\"\n />\n\n <!-- FILTER: DATE RANGE -->\n <div v-else-if=\"col.filter?.type === 'DATE_RANGE' && filterStatus[index].type === 'DATE_RANGE'\" class=\"flex flex-col\">\n <ElInputDate v-model=\"(filterStatus[index] as DateFilterStatus).dateFrom\" :hidden-error-message=\"true\" />\n </div>\n\n <!-- FILTER: MULTIPLE VALUES -->\n <ElInputSelect\n v-else-if=\"col.filter?.type === 'MULTI_VALUE' && filterStatus[index].type === 'MULTI_VALUE'\"\n v-model=\"(filterStatus[index] as TextFilterStatus).textSearch\"\n class=\"flex flex-col\"\n type=\"autocomplete\"\n :options=\"col.filter.selectOptions\"\n :hidden-error-message=\"true\"\n />\n\n <!-- TODO: change with new button when it'll be available in DS version 2 -->\n <!-- FILTER: RESET -->\n\n <div v-else-if=\"col.filter?.type === 'RESET_FILTERS_BUTTON'\" class=\"flex justify-end\">\n <ElButton label=\"Azzera filtri\" variant=\"tertiary\" size=\"xs\" @click=\"resetFilters\" />\n </div>\n </th>\n </tr>\n </thead>\n <CustomTransition name=\"fade\">\n <tbody v-if=\"loading\" key=\"loading\">\n <tr>\n <td :colspan=\"props.columns.length + 1\">\n <ElSpinner label=\"Caricamento dati...\" class=\"p-4\" :extra-loading-msg-after-seconds=\"3\" />\n </td>\n </tr>\n </tbody>\n <tbody v-else-if=\"currentPageDataRows.length > 0\" key=\"tableFull\" class=\"bg-white\">\n <tr\n v-for=\"row in currentPageDataRows\"\n :key=\"row.id\"\n class=\"transition duration-150 ease-in-out border-t border-neutral-surface\"\n :class=\"{\n 'bg-neutral-surface-raised': rowsSelectionMode && selectedRows.find(x => x.id === row.id),\n }\"\n data-cy=\"table-row\"\n >\n <!-- ROWS SELECTION -->\n <td v-if=\"rowsSelectionMode\" class=\"flex h-20 items-center justify-center py-3\">\n <ElInputCheckbox\n :model-value=\"!!selectedRows.find(r => r.id === row.id)\"\n :disabled=\"rowsSelectionDisabled\"\n size=\"xxs\"\n @update:model-value=\"val => (val ? rowsSelected([row]) : rowUnselected(row.id))\"\n />\n </td>\n\n <!-- ///////////////////// DATA CELLS ///////////////////////// -->\n <td\n v-for=\"(cell, i) in row.cells\"\n :key=\"i\"\n class=\"max-w-sm px-2.5 py-2.5\"\n :data-cy=\"cell.type === 'default' && cell.mainText.trim().replaceAll(' ', '').replaceAll(',', '')\"\n >\n <!-- TODO data-cy should stay inside ElTableCell -->\n <ElTableCell :cell=\"cell\" />\n </td>\n </tr>\n </tbody>\n <tbody v-else-if=\"currentPageDataRows.length === 0\" key=\"tableEmpty\">\n <tr>\n <td :colspan=\"props.columns.length + 1\" class=\"p-4 font-light text-neutral-darker\">nessun dato trovato</td>\n </tr>\n </tbody>\n </CustomTransition>\n </table>\n </div>\n </div>\n\n <!-- Footer -->\n <ElServerSideTablePagination\n ref=\"pagination\"\n :total-rows-count=\"totalRowsCount\"\n :rows-per-page=\"props.rowsPerPage\"\n :hide-footer=\"props.noFooter\"\n @update:current-page=\"newPageSelected\"\n />\n </div>\n</template>\n"],"names":["props","__props","emit","__emit","loading","ref","MAX_COLS","currentPageDataRows","pagination","onMounted","newData","currentSortStatus","filterStatus","totalRowsCount","usePagination","currentPage","computed","_a","newPage","useSorting","sortStatus","resetSort","colIndex","error","useFilters","isResettingFilters","resetFilters","filters","applyFilters","applyFiltersDebounced","i","filter","goToFirstPage","useDebounceFn","useRowsSelection","selectedRows","emitRowsSelected","rowsSelected","rows","selectRows","r","rowUnselected","rowId","index","rowsIds","nextTick","rowsToSelect","row","unselectAllRows","getDataRows","getSelectedRows","allRowsSelected","toggleSortArrow","newPageSelected","resetAllAndFetch","triggerDataController","watch","__expose"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{defineComponent as se,ref as v,onMounted as T,watch as ne,openBlock as l,createElementBlock as n,createElementVNode as w,normalizeClass as U,createBlock as D,unref as a,createCommentVNode as y,Fragment as E,renderList as x,createTextVNode as ie,toDisplayString as ue,createVNode as _,withCtx as ce,computed as M,nextTick as de}from"vue";import pe from"./ElServerSideTablePagination.vue.esm2.js";import ge from"../_CustomTransition.vue.esm2.js";import $ from"../forms/ElInputCheckbox.vue.esm2.js";import fe from"../forms/ElInputSelect.vue.esm2.js";import me from"../forms/ElInputDate.vue.esm2.js";import we from"../forms/ElInputText.vue.esm2.js";import ve from"../ElSpinner.vue.esm2.js";import Se from"./ElTableCell.vue.esm2.js";import ye from"../ElButton.vue.esm2.js";import{watchDeep as _e,useDebounceFn as he}from"../../node_modules/@vueuse/core/node_modules/@vueuse/shared/index.esm.js";const Re={class:"flex flex-col"},Ce={class:"overflow-x-auto"},ke={class:"inline-block min-w-full bg-white align-middle"},Ee={class:"min-w-full"},xe={class:"bg-neutral-surface-raised font-semibold"},Ae={key:1,class:"w-7"},be=["title","onClick"],Fe={key:0,xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",class:"ml-1 inline-flex h-3 w-3",fill:"currentColor"},Ve={key:0,d:"M13 5.41V21a1 1 0 0 1-2 0V5.41l-5.3 5.3a1 1 0 1 1-1.4-1.42l7-7a1 1 0 0 1 1.4 0l7 7a1 1 0 1 1-1.4 1.42L13 5.4z"},Pe={key:1,d:"M11 18.59V3a1 1 0 0 1 2 0v15.59l5.3-5.3a1 1 0 0 1 1.4 1.42l-7 7a1 1 0 0 1-1.4 0l-7-7a1 1 0 0 1 1.4-1.42l5.3 5.3z",title:"Ordine Decrescente"},Te={key:0},Ue={key:0,scope:"col"},De={key:1,class:"flex flex-col"},Me={key:3,class:"flex justify-end"},Be={key:"loading"},Le=["colspan"],Ie={key:"tableFull",class:"bg-white"},Ne={key:0,class:"flex h-20 items-center justify-center py-3"},$e=["data-cy"],ze={key:"tableEmpty"},Oe=["colspan"],et=se({__name:"ElServerSideTable",props:{columns:{},sortByCol:{default:-1},sortByColAsc:{type:Boolean,default:!1},noFilters:{type:Boolean},noFooter:{type:Boolean},rowsSelectionMode:{default:void 0},rowsSelectionDisabled:{type:Boolean},rowsPerPage:{default:15},dataController:{}},emits:["rows-selected","newPageSelected"],setup(z,{expose:O,emit:G}){const r=z,H=G,m=v(!0),A=10,g=v([]),b=v(null);T(async()=>{const e=await r.dataController({paginationStatus:{currentPage:0},sortStatus:C.value,filterStatus:d.value,triggeredEvent:"firstLoad"});g.value=e.data,R.value=e.totalRows,m.value=!1});function j(){const e=v(0),p=M(()=>{var s;return((s=b.value)==null?void 0:s.currentPage)??0});return{newPageSelected:async s=>{m.value=!0,g.value=(await r.dataController({paginationStatus:{currentPage:s},sortStatus:C.value,filterStatus:d.value,triggeredEvent:"paginate"})).data,m.value=!1},totalRowsCount:e,currentPage:p,goToFirstPage:()=>{var s;return(s=b.value)==null?void 0:s.goToPage(0,{doNotEmitEvent:!0})}}}function X(){const e=v({currentlySortColIndex:r.sortByCol>-1?r.sortByCol:-1,arrows:[]}),p=()=>{e.value={currentlySortColIndex:-1,arrows:[]}},o=M(()=>({columnToSort:e.value.currentlySortColIndex,order:e.value.arrows[e.value.currentlySortColIndex]?"asc":"desc"}));return T(async()=>{e.value.arrows=new Array(A),r.sortByCol>-1&&(e.value.arrows[r.sortByCol]=r.sortByColAsc)}),{sortStatus:e,toggleSortArrow:async s=>{e.value.currentlySortColIndex=s,e.value.arrows.splice(s,1,!e.value.arrows[s]),m.value=!0;try{const i=await r.dataController({paginationStatus:{currentPage:P.value},sortStatus:o.value,filterStatus:d.value,triggeredEvent:"sort"});g.value=i.data,R.value=i.totalRows}catch(i){console.error(i)}finally{m.value=!1}},currentSortStatus:o,resetSort:p}}function q(){const e=v([]),p=v(!1);T(()=>{o(),_e(e,async i=>{p.value?(t(i),p.value=!1):s(i)})});const o=()=>{var i;p.value=!0,e.value=new Array(A);for(let u=0;u<A;u++){const c=(i=r.columns[u])==null?void 0:i.filter;c&&(c.type==="FREE_SEARCH"?e.value.splice(u,1,{id:c.id,textSearch:c.initialValue??"",type:"FREE_SEARCH",columnTitle:r.columns[u].title}):c.type==="MULTI_VALUE"?e.value.splice(u,1,{id:c.id,textSearch:c.initialValue??"",type:"MULTI_VALUE",columnTitle:r.columns[u].title}):c.type==="DATE_RANGE"&&e.value.splice(u,1,{id:c.id,dateFrom:c.initialValue??0,type:"DATE_RANGE",columnTitle:r.columns[u].title}))}},t=async i=>{console.log("applyFilters"),m.value=!0,oe();const u=await r.dataController({paginationStatus:{currentPage:P.value},sortStatus:C.value,filterStatus:i,triggeredEvent:"filter"});g.value=u.data,R.value=u.totalRows,m.value=!1},s=he(t,500);return{filterStatus:e,resetFilters:o}}function J(){const e=v([]),p=()=>{H("rows-selected",e.value)},o=f=>{s(f.map(S=>S.id))},t=f=>{const S=e.value.findIndex(h=>h.id===f);e.value.splice(S,1),p()},s=async f=>{r.rowsSelectionMode==="single"&&(e.value=[],await de());const S=g.value.filter(h=>f.includes(h.id));r.rowsSelectionMode==="single"&&(S.length=Math.min(1,S.length));for(const h of S)e.value.some(re=>re.id===h.id)||e.value.push(h);p()},i=()=>{e.value=[],p()},u=()=>g.value,c=()=>e.value,k=M(()=>e.value.length>0&&e.value.length===g.value.length);return{selectedRows:e,rowsSelected:o,rowUnselected:t,selectRows:s,unselectAllRows:i,getDataRows:u,getSelectedRows:c,allRowsSelected:k}}const{selectedRows:B,rowsSelected:L,rowUnselected:K,selectRows:Q,unselectAllRows:F,getDataRows:W,getSelectedRows:Y,allRowsSelected:I}=J(),{filterStatus:d,resetFilters:V}=q(),{sortStatus:N,toggleSortArrow:Z,currentSortStatus:C,resetSort:ee}=X(),{newPageSelected:te,totalRowsCount:R,currentPage:P,goToFirstPage:oe}=j(),le=async()=>{ee(),V(),F()},ae=async()=>{m.value=!0;const e=await r.dataController({paginationStatus:{currentPage:P.value},sortStatus:C.value,filterStatus:d.value,triggeredEvent:"trigger"});g.value=e.data,R.value=e.totalRows,m.value=!1};return ne(()=>r.columns,()=>V(),{deep:!0,immediate:!0}),O({selectRows:Q,resetAllAndFetch:le,unselectAllRows:F,getDataRows:W,getSelectedRows:Y,triggerDataController:ae}),(e,p)=>(l(),n("div",Re,[w("div",Ce,[w("div",ke,[w("table",Ee,[w("thead",null,[w("tr",xe,[e.rowsSelectionMode?(l(),n("th",{key:0,scope:"col",class:U(["bg-neutral-surface-raised text-neutral-darker flex justify-center px-3 py-3 text-xs uppercase leading-4 tracking-wider",{"cursor-pointer":e.rowsSelectionMode==="multiple"}])},[e.rowsSelectionMode==="multiple"?(l(),D($,{key:0,"model-value":a(I),disabled:e.rowsSelectionDisabled,size:"xxs",onClick:p[0]||(p[0]=()=>a(I)?a(F)():a(L)(g.value))},null,8,["model-value","disabled"])):(l(),n("div",Ae))],2)):y("",!0),(l(!0),n(E,null,x(r.columns,(o,t)=>(l(),n("th",{key:t,scope:"col",class:U(["bg-neutral-surface-raised text-neutral-darker whitespace-nowrap rounded-none px-3 py-3 text-xs font-semibold uppercase leading-4 tracking-wider",[o.alignRight?"text-right":"text-left",o.noSort?"cursor-default":"cursor-pointer"]]),title:o.noSort?"Colonna non ordinabile":a(N).arrows[t]?"Ordine crescente":"Ordine decrescente",onClick:s=>!o.noSort&&a(Z)(t)},[ie(ue(o.title)+" ",1),o.noSort?y("",!0):(l(),n("svg",Fe,[a(N).arrows[t]?(l(),n("path",Ve)):(l(),n("path",Pe))]))],10,be))),128))]),a(d).length>0&&!e.noFilters?(l(),n("tr",Te,[e.rowsSelectionMode?(l(),n("th",Ue)):y("",!0),(l(!0),n(E,null,x(e.columns,(o,t)=>{var s,i,u,c,k;return l(),n("th",{key:t,scope:"col",class:"text-neutral-darker px-3 py-3 text-left text-xs font-light leading-4 tracking-wider"},[((s=o.filter)==null?void 0:s.type)==="FREE_SEARCH"&&a(d)[t].type==="FREE_SEARCH"?(l(),D(we,{key:0,modelValue:a(d)[t].textSearch,"onUpdate:modelValue":f=>a(d)[t].textSearch=f,placeholder:((i=o.filter)==null?void 0:i.placeholder)||"Cerca","hidden-error-message":!0,"leading-icon":{name:"MagnifyingGlassIcon"}},null,8,["modelValue","onUpdate:modelValue","placeholder"])):((u=o.filter)==null?void 0:u.type)==="DATE_RANGE"&&a(d)[t].type==="DATE_RANGE"?(l(),n("div",De,[_(me,{modelValue:a(d)[t].dateFrom,"onUpdate:modelValue":f=>a(d)[t].dateFrom=f,"hidden-error-message":!0},null,8,["modelValue","onUpdate:modelValue"])])):((c=o.filter)==null?void 0:c.type)==="MULTI_VALUE"&&a(d)[t].type==="MULTI_VALUE"?(l(),D(fe,{key:2,modelValue:a(d)[t].textSearch,"onUpdate:modelValue":f=>a(d)[t].textSearch=f,class:"flex flex-col",type:"autocomplete",options:o.filter.selectOptions,"hidden-error-message":!0},null,8,["modelValue","onUpdate:modelValue","options"])):((k=o.filter)==null?void 0:k.type)==="RESET_FILTERS_BUTTON"?(l(),n("div",Me,[_(ye,{label:"Azzera filtri",variant:"tertiary",size:"xs",onClick:a(V)},null,8,["onClick"])])):y("",!0)])}),128))])):y("",!0)]),_(ge,{name:"fade"},{default:ce(()=>[m.value?(l(),n("tbody",Be,[w("tr",null,[w("td",{colspan:r.columns.length+1},[_(ve,{label:"Caricamento dati...",class:"p-4","extra-loading-msg-after-seconds":3})],8,Le)])])):g.value.length>0?(l(),n("tbody",Ie,[(l(!0),n(E,null,x(g.value,o=>(l(),n("tr",{key:o.id,class:U(["transition duration-150 ease-in-out border-t border-neutral-surface",{"bg-neutral-surface-raised":e.rowsSelectionMode&&a(B).find(t=>t.id===o.id)}]),"data-cy":"table-row"},[e.rowsSelectionMode?(l(),n("td",Ne,[_($,{"model-value":!!a(B).find(t=>t.id===o.id),disabled:e.rowsSelectionDisabled,size:"xxs","onUpdate:modelValue":t=>t?a(L)([o]):a(K)(o.id)},null,8,["model-value","disabled","onUpdate:modelValue"])])):y("",!0),(l(!0),n(E,null,x(o.cells,(t,s)=>(l(),n("td",{key:s,class:"max-w-sm px-2.5 py-2.5","data-cy":t.type==="default"&&t.mainText.trim().replaceAll(" ","").replaceAll(",","")},[_(Se,{cell:t},null,8,["cell"])],8,$e))),128))],2))),128))])):g.value.length===0?(l(),n("tbody",ze,[w("tr",null,[w("td",{colspan:r.columns.length+1,class:"p-4 font-light text-neutral-darker"},"nessun dato trovato",8,Oe)])])):y("",!0)]),_:1})])])]),_(pe,{ref_key:"pagination",ref:b,"total-rows-count":a(R),"rows-per-page":r.rowsPerPage,"hide-footer":r.noFooter,"onUpdate:currentPage":a(te)},null,8,["total-rows-count","rows-per-page","hide-footer","onUpdate:currentPage"])]))}});export{et as default};
|
|
2
|
+
//# sourceMappingURL=ElServerSideTable.vue.esm2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ElServerSideTable.vue.esm2.js","sources":["../../../src/table/ElServerSideTable.vue"],"sourcesContent":["<script lang=\"ts\">\nexport interface TableColumn {\n title: string;\n filter?: TableColumnFilter;\n alignRight?: boolean;\n noSort?: boolean;\n}\n\nexport type TableColumnFilter =\n | TableColumnFilterFreeSearch\n | TableColumnFilterDateRange\n | TableColumnFilterMultiValue\n | TableColumnFilterResetButton;\n\nexport type TableColumnFilterFreeSearch = {\n id?: string;\n type: Extract<FilterType, 'FREE_SEARCH'>;\n placeholder?: string;\n initialValue?: string;\n};\n\nexport type TableColumnFilterDateRange = {\n id?: string;\n type: Extract<FilterType, 'DATE_RANGE'>;\n placeholder?: string;\n initialValue?: number;\n};\n\nexport type TableColumnFilterMultiValue = {\n id?: string;\n type: Extract<FilterType, 'MULTI_VALUE'>;\n selectOptions: InstanceType<typeof ElInputSelect>['$props']['options'];\n initialValue?: string;\n};\n\nexport type TableColumnFilterResetButton = {\n type: 'RESET_FILTERS_BUTTON';\n};\n\nexport interface DataControls {\n sortStatus: SortStatus;\n paginationStatus: {\n currentPage: number;\n };\n filterStatus: FilterStatus[];\n triggeredEvent: 'paginate' | 'filter' | 'sort' | 'firstLoad' | 'trigger';\n}\n\nexport interface SortStatus {\n columnToSort: number;\n order: 'asc' | 'desc';\n}\n\nexport interface ServerSideTableProps {\n columns: TableColumn[];\n sortByCol?: number; // initial sort by column\n sortByColAsc?: boolean; // initial sort by column should be in Ascending order\n noFilters?: boolean;\n noFooter?: boolean;\n rowsSelectionMode?: 'single' | 'multiple';\n rowsSelectionDisabled?: boolean;\n rowsPerPage?: number;\n dataController: (args: DataControls) => Promise<{ data: DataRow[]; totalRows: number }>;\n}\n\nexport type FilterStatus = TextFilterStatus | DateFilterStatus;\n\nexport type TextFilterStatus = {\n id?: string;\n textSearch: string;\n columnTitle: string;\n type: Extract<FilterType, 'FREE_SEARCH' | 'MULTI_VALUE'>;\n};\n\nexport type DateFilterStatus = {\n id?: string;\n dateFrom: number;\n columnTitle: string;\n type: Extract<FilterType, 'DATE_RANGE'>;\n};\n</script>\n\n<script lang=\"ts\" setup>\nimport { computed, nextTick, onMounted, ref, watch } from 'vue';\nimport ElServerSideTablePagination from '@/table/ElServerSideTablePagination.vue';\nimport CustomTransition from '@/_CustomTransition.vue';\nimport ElInputCheckbox from '@/forms/ElInputCheckbox.vue';\nimport ElInputSelect from '@/forms/ElInputSelect.vue';\nimport ElInputDate from '@/forms/ElInputDate.vue';\nimport ElInputText from '@/forms/ElInputText.vue';\nimport ElSpinner from '@/ElSpinner.vue';\nimport ElTableCell from '@/table/ElTableCell.vue';\nimport ElButton from '@/ElButton.vue';\nimport { watchDeep } from '@vueuse/core';\nimport { DataRow, FilterType } from '@/table/commonTypes';\nimport { useDebounceFn } from '@vueuse/core';\n\nconst props = withDefaults(defineProps<ServerSideTableProps>(), {\n sortByCol: -1,\n sortByColAsc: false,\n rowsSelectionMode: undefined,\n rowsPerPage: 15,\n});\n\nconst emit = defineEmits<{\n (event: 'rows-selected', rows: DataRow[]): void;\n (event: 'newPageSelected', pageNumber: number): void;\n}>();\n\nconst loading = ref(true);\n\nconst MAX_COLS = 10;\n\nconst currentPageDataRows = ref<DataRow[]>([]);\n\nconst pagination = ref<InstanceType<typeof ElServerSideTablePagination> | null>(null);\n\nonMounted(async () => {\n const newData = await props.dataController({\n paginationStatus: {\n currentPage: 0,\n },\n sortStatus: currentSortStatus.value,\n filterStatus: filterStatus.value,\n triggeredEvent: 'firstLoad',\n });\n currentPageDataRows.value = newData.data;\n totalRowsCount.value = newData.totalRows;\n loading.value = false;\n});\n\nfunction usePagination() {\n const totalRowsCount = ref(0);\n const currentPage = computed(() => pagination.value?.currentPage ?? 0);\n\n const goToFirstPage = () => pagination.value?.goToPage(0, { doNotEmitEvent: true });\n\n const newPageSelected = async (newPage: number) => {\n loading.value = true;\n currentPageDataRows.value = (\n await props.dataController({\n paginationStatus: {\n currentPage: newPage,\n },\n sortStatus: currentSortStatus.value,\n filterStatus: filterStatus.value,\n triggeredEvent: 'paginate',\n })\n ).data;\n loading.value = false;\n };\n\n return {\n newPageSelected,\n totalRowsCount,\n currentPage,\n goToFirstPage,\n };\n}\n\nfunction useSorting() {\n const sortStatus = ref<{\n currentlySortColIndex: number;\n arrows: boolean[];\n }>({\n currentlySortColIndex: props.sortByCol > -1 ? props.sortByCol : -1,\n arrows: [],\n });\n\n const resetSort = () => {\n sortStatus.value = {\n currentlySortColIndex: -1,\n arrows: [],\n };\n };\n const currentSortStatus = computed<DataControls['sortStatus']>(() => {\n return {\n columnToSort: sortStatus.value.currentlySortColIndex,\n order: sortStatus.value.arrows[sortStatus.value.currentlySortColIndex] ? 'asc' : 'desc',\n };\n });\n\n onMounted(async () => {\n sortStatus.value.arrows = new Array(MAX_COLS);\n if (props.sortByCol > -1) {\n sortStatus.value.arrows[props.sortByCol] = props.sortByColAsc;\n }\n });\n\n const toggleSortArrow = async (colIndex: number) => {\n sortStatus.value.currentlySortColIndex = colIndex;\n sortStatus.value.arrows.splice(colIndex, 1, !sortStatus.value.arrows[colIndex]);\n loading.value = true;\n try {\n const newData = await props.dataController({\n paginationStatus: {\n currentPage: currentPage.value,\n },\n sortStatus: currentSortStatus.value,\n filterStatus: filterStatus.value,\n triggeredEvent: 'sort',\n });\n currentPageDataRows.value = newData.data;\n totalRowsCount.value = newData.totalRows;\n } catch (error) {\n // TODO handle error\n console.error(error);\n } finally {\n loading.value = false;\n }\n };\n\n return {\n sortStatus,\n toggleSortArrow,\n currentSortStatus,\n resetSort,\n };\n}\n\nfunction useFilters() {\n const filterStatus = ref<FilterStatus[]>([]);\n const isResettingFilters = ref(false);\n\n onMounted(() => {\n resetFilters();\n watchDeep(filterStatus, async filters => {\n if (isResettingFilters.value) {\n applyFilters(filters);\n isResettingFilters.value = false;\n } else {\n applyFiltersDebounced(filters);\n }\n });\n });\n\n const resetFilters = () => {\n isResettingFilters.value = true;\n\n filterStatus.value = new Array(MAX_COLS);\n for (let i = 0; i < MAX_COLS; i++) {\n const filter = props.columns[i]?.filter;\n if (filter) {\n if (filter.type === 'FREE_SEARCH') {\n filterStatus.value.splice(i, 1, {\n id: filter.id,\n textSearch: filter.initialValue ?? '',\n type: 'FREE_SEARCH',\n columnTitle: props.columns[i].title,\n });\n } else if (filter.type === 'MULTI_VALUE') {\n filterStatus.value.splice(i, 1, {\n id: filter.id,\n textSearch: filter.initialValue ?? '',\n type: 'MULTI_VALUE',\n columnTitle: props.columns[i].title,\n });\n } else if (filter.type === 'DATE_RANGE') {\n filterStatus.value.splice(i, 1, {\n id: filter.id,\n dateFrom: filter.initialValue ?? 0,\n type: 'DATE_RANGE',\n columnTitle: props.columns[i].title,\n });\n }\n }\n }\n };\n\n const applyFilters = async (filters: FilterStatus[]) => {\n console.log('applyFilters');\n loading.value = true;\n goToFirstPage();\n const newData = await props.dataController({\n paginationStatus: {\n currentPage: currentPage.value,\n },\n sortStatus: currentSortStatus.value,\n filterStatus: filters,\n triggeredEvent: 'filter',\n });\n currentPageDataRows.value = newData.data;\n totalRowsCount.value = newData.totalRows;\n loading.value = false;\n };\n\n const applyFiltersDebounced = useDebounceFn(applyFilters, 500);\n\n return {\n filterStatus,\n resetFilters,\n };\n}\n\nfunction useRowsSelection() {\n const selectedRows = ref<typeof currentPageDataRows.value>([]);\n\n const emitRowsSelected = () => {\n emit('rows-selected', selectedRows.value);\n };\n\n const rowsSelected = (rows: DataRow[]) => {\n selectRows(rows.map(r => r.id));\n };\n\n const rowUnselected = (rowId: string) => {\n const index = selectedRows.value.findIndex(r => r.id === rowId);\n selectedRows.value.splice(index, 1);\n emitRowsSelected();\n };\n\n // select the rows with the given ids, possibly in addition to the rows that are already selected\n const selectRows = async (rowsIds: string[]) => {\n if (props.rowsSelectionMode === 'single') {\n selectedRows.value = [];\n await nextTick();\n }\n const rowsToSelect = currentPageDataRows.value.filter(r => rowsIds.includes(r.id));\n if (props.rowsSelectionMode === 'single') {\n rowsToSelect.length = Math.min(1, rowsToSelect.length);\n }\n\n for (const row of rowsToSelect) {\n if (!selectedRows.value.some(r => r.id === row.id)) {\n selectedRows.value.push(row);\n }\n }\n\n emitRowsSelected();\n };\n\n const unselectAllRows = () => {\n selectedRows.value = [];\n emitRowsSelected();\n };\n\n const getDataRows = (): DataRow[] => currentPageDataRows.value;\n const getSelectedRows = (): DataRow[] => selectedRows.value;\n\n const allRowsSelected = computed(() => {\n return selectedRows.value.length > 0 && selectedRows.value.length === currentPageDataRows.value.length;\n });\n\n return {\n selectedRows,\n rowsSelected,\n rowUnselected,\n selectRows,\n unselectAllRows,\n getDataRows,\n getSelectedRows,\n allRowsSelected,\n };\n}\n\nconst { selectedRows, rowsSelected, rowUnselected, selectRows, unselectAllRows, getDataRows, getSelectedRows, allRowsSelected } =\n useRowsSelection();\nconst { filterStatus, resetFilters } = useFilters();\nconst { sortStatus, toggleSortArrow, currentSortStatus, resetSort } = useSorting();\nconst { newPageSelected, totalRowsCount, currentPage, goToFirstPage } = usePagination();\n\nconst resetAllAndFetch = async () => {\n // Resetting filters and sort will trigger the dataController\n resetSort();\n resetFilters();\n unselectAllRows();\n};\n\nconst triggerDataController = async () => {\n loading.value = true;\n const newData = await props.dataController({\n paginationStatus: {\n currentPage: currentPage.value,\n },\n sortStatus: currentSortStatus.value,\n filterStatus: filterStatus.value,\n triggeredEvent: 'trigger',\n });\n currentPageDataRows.value = newData.data;\n totalRowsCount.value = newData.totalRows;\n loading.value = false;\n};\n\nwatch(\n () => props.columns,\n () => resetFilters(),\n { deep: true, immediate: true },\n);\n\ndefineExpose({\n selectRows,\n resetAllAndFetch,\n unselectAllRows,\n getDataRows,\n getSelectedRows,\n triggerDataController,\n});\n</script>\n\n<template>\n <div class=\"flex flex-col\">\n <div class=\"overflow-x-auto\">\n <div class=\"inline-block min-w-full bg-white align-middle\">\n <table class=\"min-w-full\">\n <thead>\n <tr class=\"bg-neutral-surface-raised font-semibold\">\n <th\n v-if=\"rowsSelectionMode\"\n scope=\"col\"\n class=\"bg-neutral-surface-raised text-neutral-darker flex justify-center px-3 py-3 text-xs uppercase leading-4 tracking-wider\"\n :class=\"{ 'cursor-pointer': rowsSelectionMode === 'multiple' }\"\n >\n <ElInputCheckbox\n v-if=\"rowsSelectionMode === 'multiple'\"\n :model-value=\"allRowsSelected\"\n :disabled=\"rowsSelectionDisabled\"\n size=\"xxs\"\n @click=\"() => (allRowsSelected ? unselectAllRows() : rowsSelected(currentPageDataRows))\"\n />\n <div v-else class=\"w-7\" />\n </th>\n <th\n v-for=\"(col, index) in props.columns\"\n :key=\"index\"\n scope=\"col\"\n class=\"bg-neutral-surface-raised text-neutral-darker whitespace-nowrap rounded-none px-3 py-3 text-xs font-semibold uppercase leading-4 tracking-wider\"\n :class=\"[col.alignRight ? 'text-right' : 'text-left', !col.noSort ? 'cursor-pointer' : 'cursor-default']\"\n :title=\"!col.noSort ? (sortStatus.arrows[index] ? 'Ordine crescente' : 'Ordine decrescente') : 'Colonna non ordinabile'\"\n @click=\"!col.noSort && toggleSortArrow(index)\"\n >\n {{ col.title }}\n\n <!-- //////////////////// SORT //////////////////////////// -->\n <svg\n v-if=\"!col.noSort\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n class=\"ml-1 inline-flex h-3 w-3\"\n fill=\"currentColor\"\n >\n <path\n v-if=\"sortStatus.arrows[index]\"\n d=\"M13 5.41V21a1 1 0 0 1-2 0V5.41l-5.3 5.3a1 1 0 1 1-1.4-1.42l7-7a1 1 0 0 1 1.4 0l7 7a1 1 0 1 1-1.4 1.42L13 5.4z\"\n />\n <path\n v-else\n d=\"M11 18.59V3a1 1 0 0 1 2 0v15.59l5.3-5.3a1 1 0 0 1 1.4 1.42l-7 7a1 1 0 0 1-1.4 0l-7-7a1 1 0 0 1 1.4-1.42l5.3 5.3z\"\n title=\"Ordine Decrescente\"\n />\n </svg>\n </th>\n </tr>\n <!-- ///////////////////// FILTERS ///////////////////////// -->\n <tr v-if=\"filterStatus.length > 0 && !noFilters\">\n <th v-if=\"rowsSelectionMode\" scope=\"col\" />\n <th\n v-for=\"(col, index) in columns\"\n :key=\"index\"\n scope=\"col\"\n class=\"text-neutral-darker px-3 py-3 text-left text-xs font-light leading-4 tracking-wider\"\n >\n <!-- FILTER: TEXT SEARCH -->\n <ElInputText\n v-if=\"col.filter?.type === 'FREE_SEARCH' && filterStatus[index].type === 'FREE_SEARCH'\"\n v-model=\"(filterStatus[index] as TextFilterStatus).textSearch\"\n :placeholder=\"col.filter?.placeholder || 'Cerca'\"\n :hidden-error-message=\"true\"\n :leading-icon=\"{\n name: 'MagnifyingGlassIcon',\n }\"\n />\n\n <!-- FILTER: DATE RANGE -->\n <div v-else-if=\"col.filter?.type === 'DATE_RANGE' && filterStatus[index].type === 'DATE_RANGE'\" class=\"flex flex-col\">\n <ElInputDate v-model=\"(filterStatus[index] as DateFilterStatus).dateFrom\" :hidden-error-message=\"true\" />\n </div>\n\n <!-- FILTER: MULTIPLE VALUES -->\n <ElInputSelect\n v-else-if=\"col.filter?.type === 'MULTI_VALUE' && filterStatus[index].type === 'MULTI_VALUE'\"\n v-model=\"(filterStatus[index] as TextFilterStatus).textSearch\"\n class=\"flex flex-col\"\n type=\"autocomplete\"\n :options=\"col.filter.selectOptions\"\n :hidden-error-message=\"true\"\n />\n\n <!-- TODO: change with new button when it'll be available in DS version 2 -->\n <!-- FILTER: RESET -->\n\n <div v-else-if=\"col.filter?.type === 'RESET_FILTERS_BUTTON'\" class=\"flex justify-end\">\n <ElButton label=\"Azzera filtri\" variant=\"tertiary\" size=\"xs\" @click=\"resetFilters\" />\n </div>\n </th>\n </tr>\n </thead>\n <CustomTransition name=\"fade\">\n <tbody v-if=\"loading\" key=\"loading\">\n <tr>\n <td :colspan=\"props.columns.length + 1\">\n <ElSpinner label=\"Caricamento dati...\" class=\"p-4\" :extra-loading-msg-after-seconds=\"3\" />\n </td>\n </tr>\n </tbody>\n <tbody v-else-if=\"currentPageDataRows.length > 0\" key=\"tableFull\" class=\"bg-white\">\n <tr\n v-for=\"row in currentPageDataRows\"\n :key=\"row.id\"\n class=\"transition duration-150 ease-in-out border-t border-neutral-surface\"\n :class=\"{\n 'bg-neutral-surface-raised': rowsSelectionMode && selectedRows.find(x => x.id === row.id),\n }\"\n data-cy=\"table-row\"\n >\n <!-- ROWS SELECTION -->\n <td v-if=\"rowsSelectionMode\" class=\"flex h-20 items-center justify-center py-3\">\n <ElInputCheckbox\n :model-value=\"!!selectedRows.find(r => r.id === row.id)\"\n :disabled=\"rowsSelectionDisabled\"\n size=\"xxs\"\n @update:model-value=\"val => (val ? rowsSelected([row]) : rowUnselected(row.id))\"\n />\n </td>\n\n <!-- ///////////////////// DATA CELLS ///////////////////////// -->\n <td\n v-for=\"(cell, i) in row.cells\"\n :key=\"i\"\n class=\"max-w-sm px-2.5 py-2.5\"\n :data-cy=\"cell.type === 'default' && cell.mainText.trim().replaceAll(' ', '').replaceAll(',', '')\"\n >\n <!-- TODO data-cy should stay inside ElTableCell -->\n <ElTableCell :cell=\"cell\" />\n </td>\n </tr>\n </tbody>\n <tbody v-else-if=\"currentPageDataRows.length === 0\" key=\"tableEmpty\">\n <tr>\n <td :colspan=\"props.columns.length + 1\" class=\"p-4 font-light text-neutral-darker\">nessun dato trovato</td>\n </tr>\n </tbody>\n </CustomTransition>\n </table>\n </div>\n </div>\n\n <!-- Footer -->\n <ElServerSideTablePagination\n ref=\"pagination\"\n :total-rows-count=\"totalRowsCount\"\n :rows-per-page=\"props.rowsPerPage\"\n :hide-footer=\"props.noFooter\"\n @update:current-page=\"newPageSelected\"\n />\n </div>\n</template>\n"],"names":["props","__props","emit","__emit","loading","ref","MAX_COLS","currentPageDataRows","pagination","onMounted","newData","currentSortStatus","filterStatus","totalRowsCount","usePagination","currentPage","computed","_a","newPage","useSorting","sortStatus","resetSort","colIndex","error","useFilters","isResettingFilters","resetFilters","filters","applyFilters","applyFiltersDebounced","i","filter","goToFirstPage","useDebounceFn","useRowsSelection","selectedRows","emitRowsSelected","rowsSelected","rows","selectRows","r","rowUnselected","rowId","index","rowsIds","nextTick","rowsToSelect","row","unselectAllRows","getDataRows","getSelectedRows","allRowsSelected","toggleSortArrow","newPageSelected","resetAllAndFetch","triggerDataController","watch","__expose"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ElServerSideTablePagination.vue.cjs2.js","sources":["../../../src/table/ElServerSideTablePagination.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed, ref, watch } from 'vue';\nimport ElIconButton from '@/ElIconButton.vue';\n\ninterface Props {\n totalRowsCount: number;\n rowsPerPage?: number;\n pagesBeforeDots?: number; // < 1,2,3....13,14,15 > in this case it's 3\n hideFooter?: boolean;\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n rowsPerPage: 15,\n pagesBeforeDots: 3,\n hideFooter: false,\n});\n\nconst currentPage = ref(0);\n\nconst emit = defineEmits<{\n (event: 'update:currentPage', page: number): void;\n}>();\n\nconst totalPages = computed(() => Math.ceil(props.totalRowsCount / props.rowsPerPage));\n\nconst prevPageDisabled = computed(() => currentPage.value <= 0);\nconst nextPageDisabled = computed(() => currentPage.value >= totalPages.value - 1);\n\nconst pageChanged = (page: number) => emit('update:currentPage', page);\n\nconst goToPage = (pageNumber: number, { doNotEmitEvent }: { doNotEmitEvent: boolean } = { doNotEmitEvent: false }) => {\n console.log('goToPage', pageNumber);\n console.log('totalPages', totalPages.value);\n if (pageNumber < 0 || pageNumber >= totalPages.value) return;\n currentPage.value = pageNumber;\n console.log('pageChanged', pageNumber);\n if (!doNotEmitEvent) pageChanged(pageNumber);\n};\n\nfunction useNumberedPages() {\n const sliceStart = ref(0);\n const sliceArray = computed(() => range(totalPages.value).slice(sliceStart.value, sliceStart.value + props.pagesBeforeDots));\n\n watch(\n () => [props.pagesBeforeDots, props.totalRowsCount, props.rowsPerPage, totalPages.value, currentPage.value],\n () => {\n calculateSliceStart();\n },\n {\n immediate: true,\n },\n );\n\n const range = (end: number, start: number = 0, step: number = 1) => {\n const arr = [];\n for (let i = start; i < end; i += step) {\n arr.push(i);\n }\n return arr;\n };\n\n function calculateSliceStart() {\n const chunkSize = props.pagesBeforeDots;\n const currentChunkStart = sliceStart.value;\n const currentChunkEnd = currentChunkStart + chunkSize;\n\n if (currentPage.value >= currentChunkEnd) {\n const lastChunkStart = totalPages.value - chunkSize;\n if (currentPage.value > lastChunkStart) {\n sliceStart.value = lastChunkStart;\n } else {\n sliceStart.value = currentPage.value;\n }\n } else if (currentPage.value < currentChunkStart) {\n if (currentPage.value > chunkSize) {\n sliceStart.value = currentPage.value + 1 - chunkSize;\n } else {\n if (currentPage.value >= 3) {\n sliceStart.value = currentPage.value - 1;\n } else {\n sliceStart.value = 0;\n }\n }\n }\n }\n\n return {\n sliceStart,\n sliceArray,\n };\n}\nconst { sliceStart, sliceArray } = useNumberedPages();\n\ndefineExpose({\n currentPage,\n goToPage,\n});\n</script>\n\n<template>\n <div v-if=\"!hideFooter\" class=\"bg-white flex items-center rounded-b-md border-t border-neutral-surface px-4 sm:px-6 py-4\">\n <!-- Small Screen -->\n <ul class=\"pagination w-fit mx-auto flex items-center rounded-md border border-surface bg-white md:hidden\">\n <!--Previous-->\n <li class=\"min-w-8\">\n <ElIconButton\n class=\"-ml-px\"\n :icon=\"{\n name: 'ChevronLeftIcon',\n }\"\n :disabled=\"prevPageDisabled\"\n @click=\"goToPage(currentPage - 1)\"\n />\n </li>\n\n <!--Pages-->\n <li\n v-for=\"item in sliceArray\"\n :key=\"item\"\n :class=\"['border-x-[1px] border-surface -ml-px', currentPage === item && 'border-primary -my-px']\"\n >\n <button\n type=\"button\"\n :class=\"['text-sm min-w-8 h-8', currentPage === item ? 'font-semibold bg-primary text-white' : 'text-neutral-600']\"\n @click.prevent=\"goToPage(item)\"\n >\n {{ item + 1 }}\n </button>\n </li>\n\n <!-- Expand pages button (...) -->\n <li\n v-if=\"sliceStart < totalPages - pagesBeforeDots && totalPages > 3 && (sliceArray.at(-1) ?? 0) < totalPages - 1\"\n class=\"border-x-[1px] border-surface -my-px -ml-px\"\n >\n <button type=\"button\" class=\"text-neutral-600 text-sm min-w-8 h-8\" @click.prevent=\"goToPage((sliceArray.at(-1) ?? 0) + 1)\">\n <span aria-hidden=\"true\">…</span>\n </button>\n </li>\n\n <!-- Next -->\n <li class=\"min-w-8\">\n <ElIconButton\n :icon=\"{\n name: 'ChevronRightIcon',\n }\"\n :disabled=\"nextPageDisabled\"\n @click=\"goToPage(currentPage + 1)\"\n />\n </li>\n </ul>\n\n <!-- Large Screen -->\n <div class=\"hidden md:flex flex-1 items-center w-full\">\n <nav class=\"mx-auto\" aria-label=\"Page navigation\">\n <ul class=\"pagination flex items-center rounded-md border border-surface bg-white\">\n <!--Previous-->\n <li>\n <ElIconButton\n :icon=\"{\n name: 'ChevronLeftIcon',\n }\"\n :disabled=\"prevPageDisabled\"\n @click=\"goToPage(currentPage - 1)\"\n />\n </li>\n\n <!-- First 2 pages -->\n <li v-if=\"sliceStart > 0 && totalPages > pagesBeforeDots\" class=\"border-x-[1px] border-surface -ml-px\">\n <button type=\"button\" class=\"text-sm min-w-8 h-8 text-neutral-600\" @click.prevent=\"goToPage(0)\">1</button>\n </li>\n <li\n v-if=\"(sliceStart > 2 && totalPages > pagesBeforeDots + 1) || (sliceStart > 0 && totalPages === 5)\"\n class=\"border-x-[1px] border-surface -ml-px\"\n >\n <button type=\"button\" class=\"text-sm min-w-8 h-8 text-neutral-600\" @click.prevent=\"goToPage(1)\">2</button>\n </li>\n\n <!-- Expand pages button (...) -->\n <li v-if=\"sliceStart > 0 && totalPages > 5\" class=\"border-x-[1px] border-surface -my-px -ml-px\">\n <button type=\"button\" class=\"text-neutral-600 text-sm min-w-8 h-8\" @click.prevent=\"goToPage((sliceArray.at(0) ?? 1) - 1)\">\n <span aria-hidden=\"true\">…</span>\n </button>\n </li>\n\n <!--Pages-->\n <li\n v-for=\"item in sliceArray\"\n :key=\"item\"\n :class=\"['border-x-[1px] border-surface -ml-px', currentPage === item && 'border-primary -my-px']\"\n >\n <button\n type=\"button\"\n :class=\"['text-sm min-w-8 h-8', currentPage === item ? 'font-semibold bg-primary text-white' : 'text-neutral-600']\"\n @click.prevent=\"goToPage(item)\"\n >\n {{ item + 1 }}\n </button>\n </li>\n\n <!-- Expand pages button (...) -->\n <li\n v-if=\"sliceStart < totalPages - pagesBeforeDots && totalPages > 5 && (sliceArray.at(-1) ?? 0) < totalPages - 2\"\n class=\"border-x-[1px] border-surface -my-px -ml-px\"\n >\n <button type=\"button\" class=\"text-neutral-600 text-sm min-w-8 h-8\" @click.prevent=\"goToPage((sliceArray.at(-1) ?? 0) + 1)\">\n <span aria-hidden=\"true\">…</span>\n </button>\n </li>\n\n <!-- Last 2 pages -->\n <li\n v-if=\"\n sliceStart < totalPages - pagesBeforeDots &&\n totalPages >= pagesBeforeDots + 2 &&\n (totalPages === 5 || (sliceArray.at(-1) ?? 0) < totalPages - 3)\n \"\n class=\"border-x-[1px] border-surface -ml-px\"\n >\n <button type=\"button\" class=\"text-sm min-w-8 h-8 text-neutral-600\" @click.prevent=\"goToPage(totalPages - 2)\">\n {{ totalPages - 1 }}\n </button>\n </li>\n <li\n v-if=\"sliceStart < totalPages - pagesBeforeDots && totalPages >= pagesBeforeDots + 1\"\n class=\"border-x-[1px] border-surface -ml-px\"\n >\n <button type=\"button\" class=\"text-sm min-w-8 h-8 text-neutral-600\" @click.prevent=\"goToPage(totalPages - 1)\">\n {{ totalPages }}\n </button>\n </li>\n\n <!-- Next -->\n <li>\n <ElIconButton\n :icon=\"{\n name: 'ChevronRightIcon',\n }\"\n :disabled=\"nextPageDisabled\"\n @click=\"goToPage(currentPage + 1)\"\n />\n </li>\n </ul>\n </nav>\n </div>\n </div>\n</template>\n"],"names":["props","__props","currentPage","ref","emit","__emit","totalPages","computed","prevPageDisabled","nextPageDisabled","pageChanged","page","goToPage","pageNumber","doNotEmitEvent","useNumberedPages","sliceStart","sliceArray","range","watch","calculateSliceStart","end","start","step","arr","i","chunkSize","currentChunkStart","currentChunkEnd","lastChunkStart","__expose"],"mappings":"w8CAWA,MAAMA,EAAQC,EAMRC,EAAcC,MAAI,CAAC,EAEnBC,EAAOC,EAIPC,EAAaC,WAAS,IAAM,KAAK,KAAKP,EAAM,eAAiBA,EAAM,WAAW,CAAC,EAE/EQ,EAAmBD,EAAAA,SAAS,IAAML,EAAY,OAAS,CAAC,EACxDO,EAAmBF,EAAS,SAAA,IAAML,EAAY,OAASI,EAAW,MAAQ,CAAC,EAE3EI,EAAeC,GAAiBP,EAAK,qBAAsBO,CAAI,EAE/DC,EAAW,CAACC,EAAoB,CAAE,eAAAC,GAAgD,CAAE,eAAgB,MAAY,CAC5G,QAAA,IAAI,WAAYD,CAAU,EAC1B,QAAA,IAAI,aAAcP,EAAW,KAAK,EACtC,EAAAO,EAAa,GAAKA,GAAcP,EAAW,SAC/CJ,EAAY,MAAQW,EACZ,QAAA,IAAI,cAAeA,CAAU,EAChCC,GAAgBJ,EAAYG,CAAU,EAAA,EAG7C,SAASE,GAAmB,CACpBC,MAAAA,EAAab,MAAI,CAAC,EAClBc,EAAaV,EAAAA,SAAS,IAAMW,EAAMZ,EAAW,KAAK,EAAE,MAAMU,EAAW,MAAOA,EAAW,MAAQhB,EAAM,eAAe,CAAC,EAE3HmB,EAAA,MACE,IAAM,CAACnB,EAAM,gBAAiBA,EAAM,eAAgBA,EAAM,YAAaM,EAAW,MAAOJ,EAAY,KAAK,EAC1G,IAAM,CACgBkB,GACtB,EACA,CACE,UAAW,EACb,CAAA,EAGF,MAAMF,EAAQ,CAACG,EAAaC,EAAgB,EAAGC,EAAe,IAAM,CAClE,MAAMC,EAAM,CAAA,EACZ,QAASC,EAAIH,EAAOG,EAAIJ,EAAKI,GAAKF,EAChCC,EAAI,KAAKC,CAAC,EAEL,OAAAD,CAAA,EAGT,SAASJ,GAAsB,CAC7B,MAAMM,EAAY1B,EAAM,gBAClB2B,EAAoBX,EAAW,MAC/BY,EAAkBD,EAAoBD,EAExC,GAAAxB,EAAY,OAAS0B,EAAiB,CAClC,MAAAC,EAAiBvB,EAAW,MAAQoB,EACtCxB,EAAY,MAAQ2B,EACtBb,EAAW,MAAQa,EAEnBb,EAAW,MAAQd,EAAY,KACjC,MACSA,EAAY,MAAQyB,IACzBzB,EAAY,MAAQwB,EACtBV,EAAW,MAAQd,EAAY,MAAQ,EAAIwB,EAEvCxB,EAAY,OAAS,EACvBc,EAAW,MAAQd,EAAY,MAAQ,EAEvCc,EAAW,MAAQ,EAI3B,CAEO,MAAA,CACL,WAAAA,EACA,WAAAC,CAAA,CAEJ,CACA,KAAM,CAAE,WAAAD,EAAY,WAAAC,CAAW,EAAIF,EAAiB,EAEvC,OAAAe,EAAA,CACX,YAAA5B,EACA,SAAAU,CAAA,CACD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ElServerSideTablePagination.vue.esm2.js","sources":["../../../src/table/ElServerSideTablePagination.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed, ref, watch } from 'vue';\nimport ElIconButton from '@/ElIconButton.vue';\n\ninterface Props {\n totalRowsCount: number;\n rowsPerPage?: number;\n pagesBeforeDots?: number; // < 1,2,3....13,14,15 > in this case it's 3\n hideFooter?: boolean;\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n rowsPerPage: 15,\n pagesBeforeDots: 3,\n hideFooter: false,\n});\n\nconst currentPage = ref(0);\n\nconst emit = defineEmits<{\n (event: 'update:currentPage', page: number): void;\n}>();\n\nconst totalPages = computed(() => Math.ceil(props.totalRowsCount / props.rowsPerPage));\n\nconst prevPageDisabled = computed(() => currentPage.value <= 0);\nconst nextPageDisabled = computed(() => currentPage.value >= totalPages.value - 1);\n\nconst pageChanged = (page: number) => emit('update:currentPage', page);\n\nconst goToPage = (pageNumber: number, { doNotEmitEvent }: { doNotEmitEvent: boolean } = { doNotEmitEvent: false }) => {\n console.log('goToPage', pageNumber);\n console.log('totalPages', totalPages.value);\n if (pageNumber < 0 || pageNumber >= totalPages.value) return;\n currentPage.value = pageNumber;\n console.log('pageChanged', pageNumber);\n if (!doNotEmitEvent) pageChanged(pageNumber);\n};\n\nfunction useNumberedPages() {\n const sliceStart = ref(0);\n const sliceArray = computed(() => range(totalPages.value).slice(sliceStart.value, sliceStart.value + props.pagesBeforeDots));\n\n watch(\n () => [props.pagesBeforeDots, props.totalRowsCount, props.rowsPerPage, totalPages.value, currentPage.value],\n () => {\n calculateSliceStart();\n },\n {\n immediate: true,\n },\n );\n\n const range = (end: number, start: number = 0, step: number = 1) => {\n const arr = [];\n for (let i = start; i < end; i += step) {\n arr.push(i);\n }\n return arr;\n };\n\n function calculateSliceStart() {\n const chunkSize = props.pagesBeforeDots;\n const currentChunkStart = sliceStart.value;\n const currentChunkEnd = currentChunkStart + chunkSize;\n\n if (currentPage.value >= currentChunkEnd) {\n const lastChunkStart = totalPages.value - chunkSize;\n if (currentPage.value > lastChunkStart) {\n sliceStart.value = lastChunkStart;\n } else {\n sliceStart.value = currentPage.value;\n }\n } else if (currentPage.value < currentChunkStart) {\n if (currentPage.value > chunkSize) {\n sliceStart.value = currentPage.value + 1 - chunkSize;\n } else {\n if (currentPage.value >= 3) {\n sliceStart.value = currentPage.value - 1;\n } else {\n sliceStart.value = 0;\n }\n }\n }\n }\n\n return {\n sliceStart,\n sliceArray,\n };\n}\nconst { sliceStart, sliceArray } = useNumberedPages();\n\ndefineExpose({\n currentPage,\n goToPage,\n});\n</script>\n\n<template>\n <div v-if=\"!hideFooter\" class=\"bg-white flex items-center rounded-b-md border-t border-neutral-surface px-4 sm:px-6 py-4\">\n <!-- Small Screen -->\n <ul class=\"pagination w-fit mx-auto flex items-center rounded-md border border-surface bg-white md:hidden\">\n <!--Previous-->\n <li class=\"min-w-8\">\n <ElIconButton\n class=\"-ml-px\"\n :icon=\"{\n name: 'ChevronLeftIcon',\n }\"\n :disabled=\"prevPageDisabled\"\n @click=\"goToPage(currentPage - 1)\"\n />\n </li>\n\n <!--Pages-->\n <li\n v-for=\"item in sliceArray\"\n :key=\"item\"\n :class=\"['border-x-[1px] border-surface -ml-px', currentPage === item && 'border-primary -my-px']\"\n >\n <button\n type=\"button\"\n :class=\"['text-sm min-w-8 h-8', currentPage === item ? 'font-semibold bg-primary text-white' : 'text-neutral-600']\"\n @click.prevent=\"goToPage(item)\"\n >\n {{ item + 1 }}\n </button>\n </li>\n\n <!-- Expand pages button (...) -->\n <li\n v-if=\"sliceStart < totalPages - pagesBeforeDots && totalPages > 3 && (sliceArray.at(-1) ?? 0) < totalPages - 1\"\n class=\"border-x-[1px] border-surface -my-px -ml-px\"\n >\n <button type=\"button\" class=\"text-neutral-600 text-sm min-w-8 h-8\" @click.prevent=\"goToPage((sliceArray.at(-1) ?? 0) + 1)\">\n <span aria-hidden=\"true\">…</span>\n </button>\n </li>\n\n <!-- Next -->\n <li class=\"min-w-8\">\n <ElIconButton\n :icon=\"{\n name: 'ChevronRightIcon',\n }\"\n :disabled=\"nextPageDisabled\"\n @click=\"goToPage(currentPage + 1)\"\n />\n </li>\n </ul>\n\n <!-- Large Screen -->\n <div class=\"hidden md:flex flex-1 items-center w-full\">\n <nav class=\"mx-auto\" aria-label=\"Page navigation\">\n <ul class=\"pagination flex items-center rounded-md border border-surface bg-white\">\n <!--Previous-->\n <li>\n <ElIconButton\n :icon=\"{\n name: 'ChevronLeftIcon',\n }\"\n :disabled=\"prevPageDisabled\"\n @click=\"goToPage(currentPage - 1)\"\n />\n </li>\n\n <!-- First 2 pages -->\n <li v-if=\"sliceStart > 0 && totalPages > pagesBeforeDots\" class=\"border-x-[1px] border-surface -ml-px\">\n <button type=\"button\" class=\"text-sm min-w-8 h-8 text-neutral-600\" @click.prevent=\"goToPage(0)\">1</button>\n </li>\n <li\n v-if=\"(sliceStart > 2 && totalPages > pagesBeforeDots + 1) || (sliceStart > 0 && totalPages === 5)\"\n class=\"border-x-[1px] border-surface -ml-px\"\n >\n <button type=\"button\" class=\"text-sm min-w-8 h-8 text-neutral-600\" @click.prevent=\"goToPage(1)\">2</button>\n </li>\n\n <!-- Expand pages button (...) -->\n <li v-if=\"sliceStart > 0 && totalPages > 5\" class=\"border-x-[1px] border-surface -my-px -ml-px\">\n <button type=\"button\" class=\"text-neutral-600 text-sm min-w-8 h-8\" @click.prevent=\"goToPage((sliceArray.at(0) ?? 1) - 1)\">\n <span aria-hidden=\"true\">…</span>\n </button>\n </li>\n\n <!--Pages-->\n <li\n v-for=\"item in sliceArray\"\n :key=\"item\"\n :class=\"['border-x-[1px] border-surface -ml-px', currentPage === item && 'border-primary -my-px']\"\n >\n <button\n type=\"button\"\n :class=\"['text-sm min-w-8 h-8', currentPage === item ? 'font-semibold bg-primary text-white' : 'text-neutral-600']\"\n @click.prevent=\"goToPage(item)\"\n >\n {{ item + 1 }}\n </button>\n </li>\n\n <!-- Expand pages button (...) -->\n <li\n v-if=\"sliceStart < totalPages - pagesBeforeDots && totalPages > 5 && (sliceArray.at(-1) ?? 0) < totalPages - 2\"\n class=\"border-x-[1px] border-surface -my-px -ml-px\"\n >\n <button type=\"button\" class=\"text-neutral-600 text-sm min-w-8 h-8\" @click.prevent=\"goToPage((sliceArray.at(-1) ?? 0) + 1)\">\n <span aria-hidden=\"true\">…</span>\n </button>\n </li>\n\n <!-- Last 2 pages -->\n <li\n v-if=\"\n sliceStart < totalPages - pagesBeforeDots &&\n totalPages >= pagesBeforeDots + 2 &&\n (totalPages === 5 || (sliceArray.at(-1) ?? 0) < totalPages - 3)\n \"\n class=\"border-x-[1px] border-surface -ml-px\"\n >\n <button type=\"button\" class=\"text-sm min-w-8 h-8 text-neutral-600\" @click.prevent=\"goToPage(totalPages - 2)\">\n {{ totalPages - 1 }}\n </button>\n </li>\n <li\n v-if=\"sliceStart < totalPages - pagesBeforeDots && totalPages >= pagesBeforeDots + 1\"\n class=\"border-x-[1px] border-surface -ml-px\"\n >\n <button type=\"button\" class=\"text-sm min-w-8 h-8 text-neutral-600\" @click.prevent=\"goToPage(totalPages - 1)\">\n {{ totalPages }}\n </button>\n </li>\n\n <!-- Next -->\n <li>\n <ElIconButton\n :icon=\"{\n name: 'ChevronRightIcon',\n }\"\n :disabled=\"nextPageDisabled\"\n @click=\"goToPage(currentPage + 1)\"\n />\n </li>\n </ul>\n </nav>\n </div>\n </div>\n</template>\n"],"names":["props","__props","currentPage","ref","emit","__emit","totalPages","computed","prevPageDisabled","nextPageDisabled","pageChanged","page","goToPage","pageNumber","doNotEmitEvent","useNumberedPages","sliceStart","sliceArray","range","watch","calculateSliceStart","end","start","step","arr","i","chunkSize","currentChunkStart","currentChunkEnd","lastChunkStart","__expose"],"mappings":"kiDAWA,MAAMA,EAAQC,EAMRC,EAAcC,EAAI,CAAC,EAEnBC,EAAOC,EAIPC,EAAaC,EAAS,IAAM,KAAK,KAAKP,EAAM,eAAiBA,EAAM,WAAW,CAAC,EAE/EQ,EAAmBD,EAAS,IAAML,EAAY,OAAS,CAAC,EACxDO,EAAmBF,EAAS,IAAML,EAAY,OAASI,EAAW,MAAQ,CAAC,EAE3EI,EAAeC,GAAiBP,EAAK,qBAAsBO,CAAI,EAE/DC,EAAW,CAACC,EAAoB,CAAE,eAAAC,GAAgD,CAAE,eAAgB,MAAY,CAC5G,QAAA,IAAI,WAAYD,CAAU,EAC1B,QAAA,IAAI,aAAcP,EAAW,KAAK,EACtC,EAAAO,EAAa,GAAKA,GAAcP,EAAW,SAC/CJ,EAAY,MAAQW,EACZ,QAAA,IAAI,cAAeA,CAAU,EAChCC,GAAgBJ,EAAYG,CAAU,EAAA,EAG7C,SAASE,GAAmB,CACpBC,MAAAA,EAAab,EAAI,CAAC,EAClBc,EAAaV,EAAS,IAAMW,EAAMZ,EAAW,KAAK,EAAE,MAAMU,EAAW,MAAOA,EAAW,MAAQhB,EAAM,eAAe,CAAC,EAE3HmB,EACE,IAAM,CAACnB,EAAM,gBAAiBA,EAAM,eAAgBA,EAAM,YAAaM,EAAW,MAAOJ,EAAY,KAAK,EAC1G,IAAM,CACgBkB,GACtB,EACA,CACE,UAAW,EACb,CAAA,EAGF,MAAMF,EAAQ,CAACG,EAAaC,EAAgB,EAAGC,EAAe,IAAM,CAClE,MAAMC,EAAM,CAAA,EACZ,QAASC,EAAIH,EAAOG,EAAIJ,EAAKI,GAAKF,EAChCC,EAAI,KAAKC,CAAC,EAEL,OAAAD,CAAA,EAGT,SAASJ,GAAsB,CAC7B,MAAMM,EAAY1B,EAAM,gBAClB2B,EAAoBX,EAAW,MAC/BY,EAAkBD,EAAoBD,EAExC,GAAAxB,EAAY,OAAS0B,EAAiB,CAClC,MAAAC,EAAiBvB,EAAW,MAAQoB,EACtCxB,EAAY,MAAQ2B,EACtBb,EAAW,MAAQa,EAEnBb,EAAW,MAAQd,EAAY,KACjC,MACSA,EAAY,MAAQyB,IACzBzB,EAAY,MAAQwB,EACtBV,EAAW,MAAQd,EAAY,MAAQ,EAAIwB,EAEvCxB,EAAY,OAAS,EACvBc,EAAW,MAAQd,EAAY,MAAQ,EAEvCc,EAAW,MAAQ,EAI3B,CAEO,MAAA,CACL,WAAAA,EACA,WAAAC,CAAA,CAEJ,CACA,KAAM,CAAE,WAAAD,EAAY,WAAAC,CAAW,EAAIF,EAAiB,EAEvC,OAAAe,EAAA,CACX,YAAA5B,EACA,SAAAU,CAAA,CACD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ElTable.vue.cjs2.js","sources":["../../../src/table/ElTable.vue"],"sourcesContent":["<script lang=\"ts\">\ninterface TableColumn {\n title: string;\n filter?:\n | {\n type: FilterType;\n placeholder?: string;\n }\n | { type: 'RESET_FILTERS_BUTTON' };\n alignRight?: boolean;\n noSort?: boolean;\n}\n\nexport interface TableProps {\n columns: TableColumn[];\n data: DataRow[];\n tableId?: number | string; // needed to understand when the table changes cols and data\n sortByCol?: number; // initial sort by column\n sortByColAsc?: boolean; // initial sort by column should be in Ascending order\n noFilters?: boolean;\n noFooter?: boolean;\n rowsSelectionMode?: 'single' | 'multiple';\n rowsSelectionDisabled?: boolean;\n initialRows?: number;\n loading?: boolean;\n}\n</script>\n\n<script lang=\"ts\" setup>\nimport { computed, nextTick, onMounted, ref, watch } from 'vue';\nimport TablePagination from '@/table/ElTablePagination.vue';\nimport CustomTransition from '@/_CustomTransition.vue';\nimport ElInputCheckbox from '@/forms/ElInputCheckbox.vue';\nimport ElInputSelect from '@/forms/ElInputSelect.vue';\nimport ElInputDate from '@/forms/ElInputDate.vue';\nimport ElInputText from '@/forms/ElInputText.vue';\nimport ElSpinner from '@/ElSpinner.vue';\nimport ElTableCell, { getCellText, getCellSortableAndFilterableValue } from '@/table/ElTableCell.vue';\nimport ElButton from '@/ElButton.vue';\nimport { DataRow, FilterType } from '@/table/commonTypes';\n\nconst props = withDefaults(defineProps<TableProps>(), {\n tableId: 0,\n sortByCol: 0,\n initialRows: 15,\n sortByColAsc: false,\n rowsSelectionMode: undefined,\n});\n\nconst emit = defineEmits<{\n (event: 'rows-selected', rows: DataRow[]): void;\n}>();\n\nconst MAX_COLS = 10;\n\nconst currentTabDataRows = ref<DataRow[]>(props.data);\n\nfunction useSorting() {\n const sortStatus = ref<{\n currentlySortColIndex: number;\n arrows: boolean[];\n }>({\n currentlySortColIndex: props.sortByCol > -1 ? props.sortByCol : -1,\n arrows: [],\n });\n\n onMounted(() => {\n sortStatus.value.arrows = new Array(MAX_COLS);\n if (props.sortByCol > -1) {\n sortStatus.value.arrows[props.sortByCol] = props.sortByColAsc;\n }\n });\n\n const sortData = (data: DataRow[]) => {\n if (data.length > 0) {\n const colIndex = sortStatus.value.currentlySortColIndex;\n const asc = sortStatus.value.arrows[colIndex];\n\n return data.sort((a, b) => {\n const sortValueA = getCellSortableAndFilterableValue(a.cells[colIndex]);\n const sortValueB = getCellSortableAndFilterableValue(b.cells[colIndex]);\n return asc ? sortValueA.localeCompare(sortValueB) : sortValueB.localeCompare(sortValueA);\n });\n }\n return data;\n };\n\n const toggleSortArrow = (colIndex: number) => {\n sortStatus.value.currentlySortColIndex = colIndex;\n sortStatus.value.arrows.splice(colIndex, 1, !sortStatus.value.arrows[colIndex]);\n };\n\n return {\n sortStatus,\n sortData,\n toggleSortArrow,\n };\n}\n\nfunction useFilters() {\n const filterStatus = ref<\n {\n textSearch: string;\n dateFrom: number;\n }[]\n >([]);\n\n onMounted(() => {\n filterStatus.value = new Array(MAX_COLS);\n for (let i = 0; i < MAX_COLS; i++) {\n filterStatus.value.splice(i, 1, {\n textSearch: '',\n dateFrom: 0,\n });\n }\n });\n\n watch(\n () => props.tableId,\n () => resetFilter(),\n );\n\n const filteredData = computed((): typeof props.data => {\n let data = props.data.slice();\n\n if (filterStatus.value.length > 0 && data.length > 0) {\n for (let i = 0; i < props.columns.length; i++) {\n const colToFilter = props.columns[i];\n const currentFilter = filterStatus.value[i];\n\n if (colToFilter.filter?.type === 'FREE_SEARCH') {\n if (currentFilter.textSearch) {\n const searchValues = currentFilter.textSearch.trim().toLowerCase().split(' ');\n data = data.filter(d => {\n const cellValue = getCellSortableAndFilterableValue(d.cells[i]).toLowerCase();\n return searchValues.some(searchValue => cellValue && cellValue.includes(searchValue));\n });\n }\n } else if (colToFilter.filter?.type === 'MULTI_VALUE') {\n if (currentFilter.textSearch) {\n data = data.filter(d => currentFilter.textSearch === getCellSortableAndFilterableValue(d.cells[i]));\n }\n } else if (colToFilter.filter?.type === 'DATE_RANGE') {\n if (currentFilter.dateFrom > 0) {\n data = data.filter(d => parseInt(getCellSortableAndFilterableValue(d.cells[i])) >= currentFilter.dateFrom);\n }\n }\n }\n\n if (sortStatus.value.currentlySortColIndex > -1) {\n return sortData(data);\n }\n }\n return data;\n });\n\n const resetFilter = () => {\n filterStatus.value.forEach(f => {\n f.textSearch = '';\n f.dateFrom = 0;\n });\n };\n\n const findFilterMultiValuesOptions = (colIndex: number): InstanceType<typeof ElInputSelect>['$props']['options'] => {\n const mainTextValues = props.data\n .filter(d => {\n const currentCell = d.cells[colIndex];\n return getCellText(currentCell);\n })\n .map(d => getCellText(d.cells[colIndex]) || '');\n return [...new Set(mainTextValues)].map(v => ({\n value: v,\n label: v,\n }));\n };\n return {\n filterStatus,\n filteredData,\n resetFilter,\n findFilterMultiValuesOptions,\n };\n}\n\nfunction useRowsSelection() {\n const selectedRows = ref<typeof props.data>([]);\n\n const emitRowsSelected = () => {\n emit('rows-selected', selectedRows.value);\n };\n\n const rowsSelected = (rows: DataRow[]) => {\n selectRows(rows.map(r => r.id));\n };\n\n const rowUnselected = (rowId: string) => {\n const index = selectedRows.value.findIndex(r => r.id === rowId);\n selectedRows.value.splice(index, 1);\n emitRowsSelected();\n };\n\n // select the rows with the given ids, possibly in addition to the rows that are already selected\n const selectRows = async (rowsIds: string[]) => {\n if (props.rowsSelectionMode === 'single') {\n selectedRows.value = [];\n await nextTick();\n }\n const rowsToSelect = currentTabDataRows.value.filter(r => rowsIds.includes(r.id));\n if (props.rowsSelectionMode === 'single') {\n rowsToSelect.length = Math.min(1, rowsToSelect.length);\n }\n\n for (const row of rowsToSelect) {\n if (!selectedRows.value.some(r => r.id === row.id)) {\n selectedRows.value.push(row);\n }\n }\n\n emitRowsSelected();\n };\n\n const unselectAllRows = () => {\n selectedRows.value = [];\n emitRowsSelected();\n };\n\n const getDataRows = (): DataRow[] => currentTabDataRows.value;\n const getSelectedRows = (): DataRow[] => selectedRows.value;\n\n const allRowsSelected = computed(() => {\n return selectedRows.value.length > 0 && selectedRows.value.length === currentTabDataRows.value.length;\n });\n\n return {\n selectedRows,\n rowsSelected,\n rowUnselected,\n selectRows,\n unselectAllRows,\n getDataRows,\n getSelectedRows,\n allRowsSelected,\n };\n}\n\nconst { selectedRows, rowsSelected, rowUnselected, selectRows, unselectAllRows, getDataRows, getSelectedRows, allRowsSelected } =\n useRowsSelection();\nconst { filterStatus, filteredData, resetFilter, findFilterMultiValuesOptions } = useFilters();\nconst { sortStatus, sortData, toggleSortArrow } = useSorting();\n\ndefineExpose({\n filteredData,\n selectRows,\n unselectAllRows,\n getDataRows,\n getSelectedRows,\n});\n</script>\n\n<template>\n <div class=\"flex flex-col\">\n <div class=\"overflow-x-auto\">\n <div class=\"inline-block min-w-full bg-white align-middle\">\n <table class=\"min-w-full\">\n <thead>\n <tr class=\"bg-neutral-surface-raised font-semibold\">\n <th\n v-if=\"rowsSelectionMode\"\n scope=\"col\"\n class=\"bg-neutral-surface-raised text-neutral-darker flex justify-center px-3 py-3 text-xs uppercase leading-4 tracking-wider\"\n :class=\"{ 'cursor-pointer': rowsSelectionMode === 'multiple' }\"\n >\n <ElInputCheckbox\n v-if=\"rowsSelectionMode === 'multiple'\"\n :model-value=\"allRowsSelected\"\n :disabled=\"rowsSelectionDisabled\"\n size=\"xxs\"\n @click=\"() => (allRowsSelected ? unselectAllRows() : rowsSelected(currentTabDataRows))\"\n />\n <div v-else class=\"w-7\" />\n </th>\n <th\n v-for=\"(col, index) in props.columns\"\n :key=\"index\"\n scope=\"col\"\n class=\"bg-neutral-surface-raised text-neutral-darker whitespace-nowrap rounded-none px-3 py-3 text-xs font-semibold uppercase leading-4 tracking-wider\"\n :class=\"[col.alignRight ? 'text-right' : 'text-left', !col.noSort ? 'cursor-pointer' : 'cursor-default']\"\n :title=\"!col.noSort ? (sortStatus.arrows[index] ? 'Ordine crescente' : 'Ordine decrescente') : 'Colonna non ordinabile'\"\n @click=\"!col.noSort && toggleSortArrow(index)\"\n >\n {{ col.title }}\n\n <!-- //////////////////// SORT //////////////////////////// -->\n <svg\n v-if=\"!col.noSort\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n class=\"ml-1 inline-flex h-3 w-3\"\n fill=\"currentColor\"\n >\n <path\n v-if=\"sortStatus.arrows[index]\"\n d=\"M13 5.41V21a1 1 0 0 1-2 0V5.41l-5.3 5.3a1 1 0 1 1-1.4-1.42l7-7a1 1 0 0 1 1.4 0l7 7a1 1 0 1 1-1.4 1.42L13 5.4z\"\n />\n <path\n v-else\n d=\"M11 18.59V3a1 1 0 0 1 2 0v15.59l5.3-5.3a1 1 0 0 1 1.4 1.42l-7 7a1 1 0 0 1-1.4 0l-7-7a1 1 0 0 1 1.4-1.42l5.3 5.3z\"\n title=\"Ordine Decrescente\"\n />\n </svg>\n </th>\n </tr>\n <!-- ///////////////////// FILTERS ///////////////////////// -->\n <tr v-if=\"filterStatus.length > 0 && !noFilters\" class=\"bg-white\">\n <th v-if=\"rowsSelectionMode\" scope=\"col\" />\n <th\n v-for=\"(col, index) in columns\"\n :key=\"index\"\n scope=\"col\"\n class=\"text-neutral-darker px-3 py-3 text-left text-xs font-light leading-4 tracking-wider\"\n >\n <!-- FILTER: TEXT SEARCH -->\n <ElInputText\n v-if=\"col.filter?.type === 'FREE_SEARCH'\"\n v-model=\"filterStatus[index].textSearch\"\n :placeholder=\"col.filter?.placeholder || 'Cerca'\"\n :hidden-error-message=\"true\"\n :leading-icon=\"{\n name: 'MagnifyingGlassIcon',\n }\"\n />\n\n <!-- FILTER: DATE RANGE -->\n <div v-else-if=\"col.filter?.type === 'DATE_RANGE'\" class=\"flex flex-col\">\n <ElInputDate v-model=\"filterStatus[index].dateFrom\" :hidden-error-message=\"true\" />\n </div>\n\n <!-- FILTER: MULTIPLE VALUES -->\n <ElInputSelect\n v-else-if=\"col.filter?.type === 'MULTI_VALUE'\"\n v-model=\"filterStatus[index].textSearch\"\n class=\"flex flex-col\"\n type=\"autocomplete\"\n :options=\"findFilterMultiValuesOptions(index)\"\n :hidden-error-message=\"true\"\n />\n\n <!-- TODO: change with new button when it'll be available in version 2 -->\n <!-- FILTER: RESET -->\n\n <div v-else-if=\"col.filter?.type === 'RESET_FILTERS_BUTTON'\" class=\"flex justify-end\">\n <ElButton label=\"Azzera filtri\" variant=\"tertiary\" size=\"xs\" @click=\"resetFilter\" />\n </div>\n </th>\n </tr>\n </thead>\n <CustomTransition name=\"fade\">\n <tbody v-if=\"props.loading\" key=\"loading\">\n <tr>\n <td :colspan=\"props.columns.length + 1\">\n <ElSpinner label=\"Caricamento dati...\" class=\"p-4\" :extra-loading-msg-after-seconds=\"3\" />\n </td>\n </tr>\n </tbody>\n <tbody v-else-if=\"currentTabDataRows.length > 0\" key=\"tableFull\" class=\"bg-white\">\n <tr\n v-for=\"row in currentTabDataRows\"\n :key=\"row.id\"\n class=\"transition duration-150 ease-in-out border-t border-neutral-surface\"\n :class=\"{\n 'bg-neutral-surface-raised': rowsSelectionMode && selectedRows.find(x => x.id === row.id),\n }\"\n data-cy=\"table-row\"\n >\n <!-- ROWS SELECTION -->\n <td v-if=\"rowsSelectionMode\" class=\"flex h-20 items-center justify-center py-3\">\n <ElInputCheckbox\n :model-value=\"!!selectedRows.find(r => r.id === row.id)\"\n :disabled=\"rowsSelectionDisabled\"\n size=\"xxs\"\n @update:model-value=\"val => (val ? rowsSelected([row]) : rowUnselected(row.id))\"\n />\n </td>\n\n <!-- ///////////////////// DATA CELLS ///////////////////////// -->\n <td\n v-for=\"(cell, i) in row.cells\"\n :key=\"i\"\n class=\"max-w-sm px-2.5 py-2.5\"\n :data-cy=\"cell.type === 'default' && cell.mainText.trim().replaceAll(' ', '').replaceAll(',', '')\"\n >\n <!-- TODO data-cy should stay inside ElTableCell -->\n <ElTableCell :cell=\"cell\" />\n </td>\n </tr>\n </tbody>\n <tbody v-else-if=\"currentTabDataRows.length === 0\" key=\"tableEmpty\">\n <tr>\n <td :colspan=\"props.columns.length + 1\" class=\"p-4 font-light text-neutral-darker\">nessun dato trovato</td>\n </tr>\n </tbody>\n </CustomTransition>\n </table>\n </div>\n </div>\n\n <!-- Footer -->\n <TablePagination\n v-model:current-tab-rows=\"currentTabDataRows\"\n :rows=\"filteredData\"\n :rows-per-page=\"props.initialRows\"\n :hide-footer=\"props.noFooter\"\n />\n </div>\n</template>\n"],"names":["props","__props","emit","__emit","MAX_COLS","currentTabDataRows","ref","useSorting","sortStatus","onMounted","data","colIndex","asc","a","b","sortValueA","getCellSortableAndFilterableValue","sortValueB","useFilters","filterStatus","i","watch","resetFilter","filteredData","computed","colToFilter","currentFilter","_a","searchValues","d","cellValue","searchValue","_b","_c","sortData","f","mainTextValues","currentCell","getCellText","v","useRowsSelection","selectedRows","emitRowsSelected","rowsSelected","rows","selectRows","r","rowUnselected","rowId","index","rowsIds","nextTick","rowsToSelect","row","unselectAllRows","getDataRows","getSelectedRows","allRowsSelected","findFilterMultiValuesOptions","toggleSortArrow","__expose"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ElTable.vue.esm2.js","sources":["../../../src/table/ElTable.vue"],"sourcesContent":["<script lang=\"ts\">\ninterface TableColumn {\n title: string;\n filter?:\n | {\n type: FilterType;\n placeholder?: string;\n }\n | { type: 'RESET_FILTERS_BUTTON' };\n alignRight?: boolean;\n noSort?: boolean;\n}\n\nexport interface TableProps {\n columns: TableColumn[];\n data: DataRow[];\n tableId?: number | string; // needed to understand when the table changes cols and data\n sortByCol?: number; // initial sort by column\n sortByColAsc?: boolean; // initial sort by column should be in Ascending order\n noFilters?: boolean;\n noFooter?: boolean;\n rowsSelectionMode?: 'single' | 'multiple';\n rowsSelectionDisabled?: boolean;\n initialRows?: number;\n loading?: boolean;\n}\n</script>\n\n<script lang=\"ts\" setup>\nimport { computed, nextTick, onMounted, ref, watch } from 'vue';\nimport TablePagination from '@/table/ElTablePagination.vue';\nimport CustomTransition from '@/_CustomTransition.vue';\nimport ElInputCheckbox from '@/forms/ElInputCheckbox.vue';\nimport ElInputSelect from '@/forms/ElInputSelect.vue';\nimport ElInputDate from '@/forms/ElInputDate.vue';\nimport ElInputText from '@/forms/ElInputText.vue';\nimport ElSpinner from '@/ElSpinner.vue';\nimport ElTableCell, { getCellText, getCellSortableAndFilterableValue } from '@/table/ElTableCell.vue';\nimport ElButton from '@/ElButton.vue';\nimport { DataRow, FilterType } from '@/table/commonTypes';\n\nconst props = withDefaults(defineProps<TableProps>(), {\n tableId: 0,\n sortByCol: 0,\n initialRows: 15,\n sortByColAsc: false,\n rowsSelectionMode: undefined,\n});\n\nconst emit = defineEmits<{\n (event: 'rows-selected', rows: DataRow[]): void;\n}>();\n\nconst MAX_COLS = 10;\n\nconst currentTabDataRows = ref<DataRow[]>(props.data);\n\nfunction useSorting() {\n const sortStatus = ref<{\n currentlySortColIndex: number;\n arrows: boolean[];\n }>({\n currentlySortColIndex: props.sortByCol > -1 ? props.sortByCol : -1,\n arrows: [],\n });\n\n onMounted(() => {\n sortStatus.value.arrows = new Array(MAX_COLS);\n if (props.sortByCol > -1) {\n sortStatus.value.arrows[props.sortByCol] = props.sortByColAsc;\n }\n });\n\n const sortData = (data: DataRow[]) => {\n if (data.length > 0) {\n const colIndex = sortStatus.value.currentlySortColIndex;\n const asc = sortStatus.value.arrows[colIndex];\n\n return data.sort((a, b) => {\n const sortValueA = getCellSortableAndFilterableValue(a.cells[colIndex]);\n const sortValueB = getCellSortableAndFilterableValue(b.cells[colIndex]);\n return asc ? sortValueA.localeCompare(sortValueB) : sortValueB.localeCompare(sortValueA);\n });\n }\n return data;\n };\n\n const toggleSortArrow = (colIndex: number) => {\n sortStatus.value.currentlySortColIndex = colIndex;\n sortStatus.value.arrows.splice(colIndex, 1, !sortStatus.value.arrows[colIndex]);\n };\n\n return {\n sortStatus,\n sortData,\n toggleSortArrow,\n };\n}\n\nfunction useFilters() {\n const filterStatus = ref<\n {\n textSearch: string;\n dateFrom: number;\n }[]\n >([]);\n\n onMounted(() => {\n filterStatus.value = new Array(MAX_COLS);\n for (let i = 0; i < MAX_COLS; i++) {\n filterStatus.value.splice(i, 1, {\n textSearch: '',\n dateFrom: 0,\n });\n }\n });\n\n watch(\n () => props.tableId,\n () => resetFilter(),\n );\n\n const filteredData = computed((): typeof props.data => {\n let data = props.data.slice();\n\n if (filterStatus.value.length > 0 && data.length > 0) {\n for (let i = 0; i < props.columns.length; i++) {\n const colToFilter = props.columns[i];\n const currentFilter = filterStatus.value[i];\n\n if (colToFilter.filter?.type === 'FREE_SEARCH') {\n if (currentFilter.textSearch) {\n const searchValues = currentFilter.textSearch.trim().toLowerCase().split(' ');\n data = data.filter(d => {\n const cellValue = getCellSortableAndFilterableValue(d.cells[i]).toLowerCase();\n return searchValues.some(searchValue => cellValue && cellValue.includes(searchValue));\n });\n }\n } else if (colToFilter.filter?.type === 'MULTI_VALUE') {\n if (currentFilter.textSearch) {\n data = data.filter(d => currentFilter.textSearch === getCellSortableAndFilterableValue(d.cells[i]));\n }\n } else if (colToFilter.filter?.type === 'DATE_RANGE') {\n if (currentFilter.dateFrom > 0) {\n data = data.filter(d => parseInt(getCellSortableAndFilterableValue(d.cells[i])) >= currentFilter.dateFrom);\n }\n }\n }\n\n if (sortStatus.value.currentlySortColIndex > -1) {\n return sortData(data);\n }\n }\n return data;\n });\n\n const resetFilter = () => {\n filterStatus.value.forEach(f => {\n f.textSearch = '';\n f.dateFrom = 0;\n });\n };\n\n const findFilterMultiValuesOptions = (colIndex: number): InstanceType<typeof ElInputSelect>['$props']['options'] => {\n const mainTextValues = props.data\n .filter(d => {\n const currentCell = d.cells[colIndex];\n return getCellText(currentCell);\n })\n .map(d => getCellText(d.cells[colIndex]) || '');\n return [...new Set(mainTextValues)].map(v => ({\n value: v,\n label: v,\n }));\n };\n return {\n filterStatus,\n filteredData,\n resetFilter,\n findFilterMultiValuesOptions,\n };\n}\n\nfunction useRowsSelection() {\n const selectedRows = ref<typeof props.data>([]);\n\n const emitRowsSelected = () => {\n emit('rows-selected', selectedRows.value);\n };\n\n const rowsSelected = (rows: DataRow[]) => {\n selectRows(rows.map(r => r.id));\n };\n\n const rowUnselected = (rowId: string) => {\n const index = selectedRows.value.findIndex(r => r.id === rowId);\n selectedRows.value.splice(index, 1);\n emitRowsSelected();\n };\n\n // select the rows with the given ids, possibly in addition to the rows that are already selected\n const selectRows = async (rowsIds: string[]) => {\n if (props.rowsSelectionMode === 'single') {\n selectedRows.value = [];\n await nextTick();\n }\n const rowsToSelect = currentTabDataRows.value.filter(r => rowsIds.includes(r.id));\n if (props.rowsSelectionMode === 'single') {\n rowsToSelect.length = Math.min(1, rowsToSelect.length);\n }\n\n for (const row of rowsToSelect) {\n if (!selectedRows.value.some(r => r.id === row.id)) {\n selectedRows.value.push(row);\n }\n }\n\n emitRowsSelected();\n };\n\n const unselectAllRows = () => {\n selectedRows.value = [];\n emitRowsSelected();\n };\n\n const getDataRows = (): DataRow[] => currentTabDataRows.value;\n const getSelectedRows = (): DataRow[] => selectedRows.value;\n\n const allRowsSelected = computed(() => {\n return selectedRows.value.length > 0 && selectedRows.value.length === currentTabDataRows.value.length;\n });\n\n return {\n selectedRows,\n rowsSelected,\n rowUnselected,\n selectRows,\n unselectAllRows,\n getDataRows,\n getSelectedRows,\n allRowsSelected,\n };\n}\n\nconst { selectedRows, rowsSelected, rowUnselected, selectRows, unselectAllRows, getDataRows, getSelectedRows, allRowsSelected } =\n useRowsSelection();\nconst { filterStatus, filteredData, resetFilter, findFilterMultiValuesOptions } = useFilters();\nconst { sortStatus, sortData, toggleSortArrow } = useSorting();\n\ndefineExpose({\n filteredData,\n selectRows,\n unselectAllRows,\n getDataRows,\n getSelectedRows,\n});\n</script>\n\n<template>\n <div class=\"flex flex-col\">\n <div class=\"overflow-x-auto\">\n <div class=\"inline-block min-w-full bg-white align-middle\">\n <table class=\"min-w-full\">\n <thead>\n <tr class=\"bg-neutral-surface-raised font-semibold\">\n <th\n v-if=\"rowsSelectionMode\"\n scope=\"col\"\n class=\"bg-neutral-surface-raised text-neutral-darker flex justify-center px-3 py-3 text-xs uppercase leading-4 tracking-wider\"\n :class=\"{ 'cursor-pointer': rowsSelectionMode === 'multiple' }\"\n >\n <ElInputCheckbox\n v-if=\"rowsSelectionMode === 'multiple'\"\n :model-value=\"allRowsSelected\"\n :disabled=\"rowsSelectionDisabled\"\n size=\"xxs\"\n @click=\"() => (allRowsSelected ? unselectAllRows() : rowsSelected(currentTabDataRows))\"\n />\n <div v-else class=\"w-7\" />\n </th>\n <th\n v-for=\"(col, index) in props.columns\"\n :key=\"index\"\n scope=\"col\"\n class=\"bg-neutral-surface-raised text-neutral-darker whitespace-nowrap rounded-none px-3 py-3 text-xs font-semibold uppercase leading-4 tracking-wider\"\n :class=\"[col.alignRight ? 'text-right' : 'text-left', !col.noSort ? 'cursor-pointer' : 'cursor-default']\"\n :title=\"!col.noSort ? (sortStatus.arrows[index] ? 'Ordine crescente' : 'Ordine decrescente') : 'Colonna non ordinabile'\"\n @click=\"!col.noSort && toggleSortArrow(index)\"\n >\n {{ col.title }}\n\n <!-- //////////////////// SORT //////////////////////////// -->\n <svg\n v-if=\"!col.noSort\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n class=\"ml-1 inline-flex h-3 w-3\"\n fill=\"currentColor\"\n >\n <path\n v-if=\"sortStatus.arrows[index]\"\n d=\"M13 5.41V21a1 1 0 0 1-2 0V5.41l-5.3 5.3a1 1 0 1 1-1.4-1.42l7-7a1 1 0 0 1 1.4 0l7 7a1 1 0 1 1-1.4 1.42L13 5.4z\"\n />\n <path\n v-else\n d=\"M11 18.59V3a1 1 0 0 1 2 0v15.59l5.3-5.3a1 1 0 0 1 1.4 1.42l-7 7a1 1 0 0 1-1.4 0l-7-7a1 1 0 0 1 1.4-1.42l5.3 5.3z\"\n title=\"Ordine Decrescente\"\n />\n </svg>\n </th>\n </tr>\n <!-- ///////////////////// FILTERS ///////////////////////// -->\n <tr v-if=\"filterStatus.length > 0 && !noFilters\" class=\"bg-white\">\n <th v-if=\"rowsSelectionMode\" scope=\"col\" />\n <th\n v-for=\"(col, index) in columns\"\n :key=\"index\"\n scope=\"col\"\n class=\"text-neutral-darker px-3 py-3 text-left text-xs font-light leading-4 tracking-wider\"\n >\n <!-- FILTER: TEXT SEARCH -->\n <ElInputText\n v-if=\"col.filter?.type === 'FREE_SEARCH'\"\n v-model=\"filterStatus[index].textSearch\"\n :placeholder=\"col.filter?.placeholder || 'Cerca'\"\n :hidden-error-message=\"true\"\n :leading-icon=\"{\n name: 'MagnifyingGlassIcon',\n }\"\n />\n\n <!-- FILTER: DATE RANGE -->\n <div v-else-if=\"col.filter?.type === 'DATE_RANGE'\" class=\"flex flex-col\">\n <ElInputDate v-model=\"filterStatus[index].dateFrom\" :hidden-error-message=\"true\" />\n </div>\n\n <!-- FILTER: MULTIPLE VALUES -->\n <ElInputSelect\n v-else-if=\"col.filter?.type === 'MULTI_VALUE'\"\n v-model=\"filterStatus[index].textSearch\"\n class=\"flex flex-col\"\n type=\"autocomplete\"\n :options=\"findFilterMultiValuesOptions(index)\"\n :hidden-error-message=\"true\"\n />\n\n <!-- TODO: change with new button when it'll be available in version 2 -->\n <!-- FILTER: RESET -->\n\n <div v-else-if=\"col.filter?.type === 'RESET_FILTERS_BUTTON'\" class=\"flex justify-end\">\n <ElButton label=\"Azzera filtri\" variant=\"tertiary\" size=\"xs\" @click=\"resetFilter\" />\n </div>\n </th>\n </tr>\n </thead>\n <CustomTransition name=\"fade\">\n <tbody v-if=\"props.loading\" key=\"loading\">\n <tr>\n <td :colspan=\"props.columns.length + 1\">\n <ElSpinner label=\"Caricamento dati...\" class=\"p-4\" :extra-loading-msg-after-seconds=\"3\" />\n </td>\n </tr>\n </tbody>\n <tbody v-else-if=\"currentTabDataRows.length > 0\" key=\"tableFull\" class=\"bg-white\">\n <tr\n v-for=\"row in currentTabDataRows\"\n :key=\"row.id\"\n class=\"transition duration-150 ease-in-out border-t border-neutral-surface\"\n :class=\"{\n 'bg-neutral-surface-raised': rowsSelectionMode && selectedRows.find(x => x.id === row.id),\n }\"\n data-cy=\"table-row\"\n >\n <!-- ROWS SELECTION -->\n <td v-if=\"rowsSelectionMode\" class=\"flex h-20 items-center justify-center py-3\">\n <ElInputCheckbox\n :model-value=\"!!selectedRows.find(r => r.id === row.id)\"\n :disabled=\"rowsSelectionDisabled\"\n size=\"xxs\"\n @update:model-value=\"val => (val ? rowsSelected([row]) : rowUnselected(row.id))\"\n />\n </td>\n\n <!-- ///////////////////// DATA CELLS ///////////////////////// -->\n <td\n v-for=\"(cell, i) in row.cells\"\n :key=\"i\"\n class=\"max-w-sm px-2.5 py-2.5\"\n :data-cy=\"cell.type === 'default' && cell.mainText.trim().replaceAll(' ', '').replaceAll(',', '')\"\n >\n <!-- TODO data-cy should stay inside ElTableCell -->\n <ElTableCell :cell=\"cell\" />\n </td>\n </tr>\n </tbody>\n <tbody v-else-if=\"currentTabDataRows.length === 0\" key=\"tableEmpty\">\n <tr>\n <td :colspan=\"props.columns.length + 1\" class=\"p-4 font-light text-neutral-darker\">nessun dato trovato</td>\n </tr>\n </tbody>\n </CustomTransition>\n </table>\n </div>\n </div>\n\n <!-- Footer -->\n <TablePagination\n v-model:current-tab-rows=\"currentTabDataRows\"\n :rows=\"filteredData\"\n :rows-per-page=\"props.initialRows\"\n :hide-footer=\"props.noFooter\"\n />\n </div>\n</template>\n"],"names":["props","__props","emit","__emit","MAX_COLS","currentTabDataRows","ref","useSorting","sortStatus","onMounted","data","colIndex","asc","a","b","sortValueA","getCellSortableAndFilterableValue","sortValueB","useFilters","filterStatus","i","watch","resetFilter","filteredData","computed","colToFilter","currentFilter","_a","searchValues","d","cellValue","searchValue","_b","_c","sortData","f","mainTextValues","currentCell","getCellText","v","useRowsSelection","selectedRows","emitRowsSelected","rowsSelected","rows","selectRows","r","rowUnselected","rowId","index","rowsIds","nextTick","rowsToSelect","row","unselectAllRows","getDataRows","getSelectedRows","allRowsSelected","findFilterMultiValuesOptions","toggleSortArrow","__expose"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ElTableCell.vue.cjs2.js","sources":["../../../src/table/ElTableCell.vue"],"sourcesContent":["<script lang=\"ts\">\nimport ElTag from '@/ElTag.vue';\nimport ElButton from '@/ElButton.vue';\nimport ElIconButton from '@/ElIconButton.vue';\nimport ElTextCell, { ElTextCellColor, ElTextCellStyle, getTextColorClass } from '@/ElTextCell.vue';\nimport ElAvatar from '@/ElAvatar.vue';\nimport ElIcon, { ElIconProps } from '@/ElIcon.vue';\nimport ElInputText from '@/forms/ElInputText.vue';\nimport { TextualValueType } from '@/forms/input';\nimport ElDropdown from '@/ElDropdown.vue';\nimport ElTooltip from '@/ElTooltip.vue';\n\nexport const dataCellTypes = ['default', 'tag', 'action', 'input'] as const;\nexport type DataCellType = (typeof dataCellTypes)[number];\n\nexport type DataCell = TagCell | DefaultCell | ActionCell | InputCell;\n\ninterface BasicDataCell {\n sortableAndFilterableValue?: string;\n type?: DataCellType;\n}\n\nexport interface DefaultCell extends BasicDataCell {\n type?: 'default';\n mainIcon?: ElIconProps;\n mainIconTooltip?: string;\n mainText: string;\n mainTextStyle?: ElTextCellStyle;\n mainTextColor?: ElTextCellColor;\n subIcon?: ElIconProps;\n subIconTooltip?: string;\n subText?: string;\n avatar?: Pick<InstanceType<typeof ElAvatar>['$props'], 'picture' | 'label'>;\n clickAction?: (payload?: PointerEvent) => void;\n longText?: boolean;\n truncateSubText?: boolean;\n}\n\nexport interface TagCell extends BasicDataCell {\n type?: 'tag';\n tag: InstanceType<typeof ElTag>['$props'];\n subText?: string;\n truncateSubText?: boolean;\n}\n\nexport interface ActionCell<ID extends string = string> extends BasicDataCell {\n type?: 'action';\n buttons?: (InstanceType<typeof ElButton>['$props'] & { id?: ID })[];\n iconButtons?: (InstanceType<typeof ElIconButton>['$props'] & { id?: ID })[];\n dropdown?: InstanceType<typeof ElDropdown>['$props'] & { disabled?: boolean };\n}\n\nexport interface InputCell extends BasicDataCell {\n type?: 'input';\n value?: string;\n onUpdate?: (value: TextualValueType) => void;\n}\n\nconst isCellTypeDefault = (cell: DataCell): cell is DefaultCell => !cell.type || cell.type === 'default';\nconst isCellTypeTag = (cell: DataCell): cell is TagCell => cell.type === 'tag';\nconst isCellTypeAction = (cell: DataCell): cell is ActionCell => cell.type === 'action';\nconst isCellTypeInput = (cell: DataCell): cell is InputCell => cell.type === 'input';\n\nexport const getCellText = (cell: DataCell) => {\n if (isCellTypeDefault(cell)) return cell.mainText;\n if (isCellTypeTag(cell)) return cell.tag.text;\n return null;\n};\n\nexport const getCellSortableAndFilterableValue = (cell: DataCell): string => {\n if (cell.sortableAndFilterableValue?.length) return cell.sortableAndFilterableValue;\n if (isCellTypeDefault(cell)) return cell.mainText;\n if (isCellTypeTag(cell)) return cell.tag.text;\n if (isCellTypeInput(cell)) return cell.value || '';\n return '';\n};\n</script>\n\n<script setup lang=\"ts\">\ndefineProps<{\n cell: DataCell;\n}>();\n</script>\n\n<template>\n <!-- type DEFAULT -->\n <div v-if=\"isCellTypeDefault(cell)\" :class=\"['flex h-12 gap-3 items-center text-nowrap', cell.clickAction && 'cursor-pointer']\">\n <ElAvatar v-if=\"cell.avatar\" size=\"sm\" :picture=\"cell.avatar.picture\" :label=\"cell.avatar.label\" class=\"shrink-0\" />\n\n <div class=\"flex flex-col gap-2 grow min-w-8\">\n <div class=\"flex gap-2 items-center\">\n <ElTooltip v-if=\"cell.mainIcon\" :title=\"cell.mainIconTooltip ?? ''\">\n <ElIcon\n :name=\"cell.mainIcon.name\"\n :solid=\"cell.mainIcon.solid\"\n class=\"w-4 h-4 shrink-0\"\n :class=\"[\n cell.mainTextColor && cell.mainTextStyle !== 'underline'\n ? getTextColorClass(cell.mainTextColor, cell.mainTextStyle)\n : 'text-neutral-darker',\n cell.mainIconTooltip ? 'cursor-pointer' : '',\n ]\"\n />\n </ElTooltip>\n <div class=\"overflow-hidden\">\n <ElTextCell\n :label=\"cell.mainText\"\n :style=\"cell.mainTextStyle\"\n :color-text=\"cell.mainTextColor\"\n @click=\"\n () => {\n if (isCellTypeDefault(cell) && cell.clickAction) cell.clickAction();\n }\n \"\n />\n </div>\n </div>\n <div v-if=\"cell.subIcon || cell.subText\" class=\"flex gap-2 items-center\">\n <ElTooltip v-if=\"cell.subIcon\" :title=\"cell.subIconTooltip ?? ''\">\n <div class=\"flex gap-2 items-center\">\n <ElIcon\n :name=\"cell.subIcon.name\"\n :solid=\"cell.subIcon.solid\"\n class=\"w-4 h-4 text-neutral-lighter shrink-0\"\n :class=\"cell.subIconTooltip ? 'cursor-pointer' : ''\"\n />\n </div>\n </ElTooltip>\n <div v-if=\"cell.subText\" class=\"text-sm font-normal text-neutral-lighter overflow-hidden text-ellipsis\">\n {{ cell.subText }}\n </div>\n </div>\n </div>\n </div>\n\n <!-- type TAG -->\n <div v-else-if=\"isCellTypeTag(cell)\" class=\"overflow-y-hidden h-12 flex items-center\">\n <div class=\"flex flex-col gap-2 grow min-w-8\">\n <div class=\"text-neutral-darker text-xs inline font-normal text-nowrap\">\n <ElTag v-bind=\"{ size: 'xs', ...cell.tag }\">\n {{ cell.tag.text }}\n </ElTag>\n </div>\n\n <div v-if=\"cell.subText\" class=\"text-sm font-normal text-neutral-lighter overflow-hidden text-ellipsis\">\n {{ cell.subText }}\n </div>\n </div>\n </div>\n\n <!-- ACTION -->\n <div v-else-if=\"isCellTypeAction(cell)\" class=\"flex items-center h-12 overflow-y-hidden content-center justify-end gap-2\">\n <ElButton v-for=\"(button, index, prevI) in cell.buttons\" :key=\"prevI || 0 + index\" v-bind=\"button\" />\n <ElIconButton v-for=\"(iconButton, index, prevI) in cell.iconButtons\" :key=\"prevI || 0 + index\" v-bind=\"iconButton\" />\n <ElDropdown v-if=\"cell.dropdown\" v-bind=\"cell.dropdown\" left>\n <template #anchor=\"{ toggle }\">\n <ElIconButton :disabled=\"cell.dropdown.disabled\" :icon=\"{ name: 'EllipsisVerticalIcon' }\" @click=\"toggle\" />\n </template>\n </ElDropdown>\n </div>\n\n <!-- INPUT -->\n <div v-else-if=\"isCellTypeInput(cell)\" class=\"flex items-center h-12\">\n <ElInputText class=\"w-full\" :model-value=\"cell.value\" @update:model-value=\"cell.onUpdate?.($event)\" />\n </div>\n</template>\n"],"names":["dataCellTypes","isCellTypeDefault","cell","isCellTypeTag","isCellTypeAction","isCellTypeInput","getCellText","getCellSortableAndFilterableValue","_a"],"mappings":"8nCAYaA,EAAgB,CAAC,UAAW,MAAO,SAAU,OAAO,EA8C3DC,EAAqBC,GAAwC,CAACA,EAAK,MAAQA,EAAK,OAAS,UACzFC,EAAiBD,GAAoCA,EAAK,OAAS,MACnEE,EAAoBF,GAAuCA,EAAK,OAAS,SACzEG,EAAmBH,GAAsCA,EAAK,OAAS,QAEhEI,EAAeJ,GACtBD,EAAkBC,CAAI,EAAUA,EAAK,SACrCC,EAAcD,CAAI,EAAUA,EAAK,IAAI,KAClC,KAGIK,EAAqCL,GAA2B,OAC3E,OAAIM,EAAAN,EAAK,6BAAL,MAAAM,EAAiC,OAAeN,EAAK,2BACrDD,EAAkBC,CAAI,EAAUA,EAAK,SACrCC,EAAcD,CAAI,EAAUA,EAAK,IAAI,KACrCG,EAAgBH,CAAI,GAAUA,EAAK,OAAS,EAElD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ElTableCell.vue.esm2.js","sources":["../../../src/table/ElTableCell.vue"],"sourcesContent":["<script lang=\"ts\">\nimport ElTag from '@/ElTag.vue';\nimport ElButton from '@/ElButton.vue';\nimport ElIconButton from '@/ElIconButton.vue';\nimport ElTextCell, { ElTextCellColor, ElTextCellStyle, getTextColorClass } from '@/ElTextCell.vue';\nimport ElAvatar from '@/ElAvatar.vue';\nimport ElIcon, { ElIconProps } from '@/ElIcon.vue';\nimport ElInputText from '@/forms/ElInputText.vue';\nimport { TextualValueType } from '@/forms/input';\nimport ElDropdown from '@/ElDropdown.vue';\nimport ElTooltip from '@/ElTooltip.vue';\n\nexport const dataCellTypes = ['default', 'tag', 'action', 'input'] as const;\nexport type DataCellType = (typeof dataCellTypes)[number];\n\nexport type DataCell = TagCell | DefaultCell | ActionCell | InputCell;\n\ninterface BasicDataCell {\n sortableAndFilterableValue?: string;\n type?: DataCellType;\n}\n\nexport interface DefaultCell extends BasicDataCell {\n type?: 'default';\n mainIcon?: ElIconProps;\n mainIconTooltip?: string;\n mainText: string;\n mainTextStyle?: ElTextCellStyle;\n mainTextColor?: ElTextCellColor;\n subIcon?: ElIconProps;\n subIconTooltip?: string;\n subText?: string;\n avatar?: Pick<InstanceType<typeof ElAvatar>['$props'], 'picture' | 'label'>;\n clickAction?: (payload?: PointerEvent) => void;\n longText?: boolean;\n truncateSubText?: boolean;\n}\n\nexport interface TagCell extends BasicDataCell {\n type?: 'tag';\n tag: InstanceType<typeof ElTag>['$props'];\n subText?: string;\n truncateSubText?: boolean;\n}\n\nexport interface ActionCell<ID extends string = string> extends BasicDataCell {\n type?: 'action';\n buttons?: (InstanceType<typeof ElButton>['$props'] & { id?: ID })[];\n iconButtons?: (InstanceType<typeof ElIconButton>['$props'] & { id?: ID })[];\n dropdown?: InstanceType<typeof ElDropdown>['$props'] & { disabled?: boolean };\n}\n\nexport interface InputCell extends BasicDataCell {\n type?: 'input';\n value?: string;\n onUpdate?: (value: TextualValueType) => void;\n}\n\nconst isCellTypeDefault = (cell: DataCell): cell is DefaultCell => !cell.type || cell.type === 'default';\nconst isCellTypeTag = (cell: DataCell): cell is TagCell => cell.type === 'tag';\nconst isCellTypeAction = (cell: DataCell): cell is ActionCell => cell.type === 'action';\nconst isCellTypeInput = (cell: DataCell): cell is InputCell => cell.type === 'input';\n\nexport const getCellText = (cell: DataCell) => {\n if (isCellTypeDefault(cell)) return cell.mainText;\n if (isCellTypeTag(cell)) return cell.tag.text;\n return null;\n};\n\nexport const getCellSortableAndFilterableValue = (cell: DataCell): string => {\n if (cell.sortableAndFilterableValue?.length) return cell.sortableAndFilterableValue;\n if (isCellTypeDefault(cell)) return cell.mainText;\n if (isCellTypeTag(cell)) return cell.tag.text;\n if (isCellTypeInput(cell)) return cell.value || '';\n return '';\n};\n</script>\n\n<script setup lang=\"ts\">\ndefineProps<{\n cell: DataCell;\n}>();\n</script>\n\n<template>\n <!-- type DEFAULT -->\n <div v-if=\"isCellTypeDefault(cell)\" :class=\"['flex h-12 gap-3 items-center text-nowrap', cell.clickAction && 'cursor-pointer']\">\n <ElAvatar v-if=\"cell.avatar\" size=\"sm\" :picture=\"cell.avatar.picture\" :label=\"cell.avatar.label\" class=\"shrink-0\" />\n\n <div class=\"flex flex-col gap-2 grow min-w-8\">\n <div class=\"flex gap-2 items-center\">\n <ElTooltip v-if=\"cell.mainIcon\" :title=\"cell.mainIconTooltip ?? ''\">\n <ElIcon\n :name=\"cell.mainIcon.name\"\n :solid=\"cell.mainIcon.solid\"\n class=\"w-4 h-4 shrink-0\"\n :class=\"[\n cell.mainTextColor && cell.mainTextStyle !== 'underline'\n ? getTextColorClass(cell.mainTextColor, cell.mainTextStyle)\n : 'text-neutral-darker',\n cell.mainIconTooltip ? 'cursor-pointer' : '',\n ]\"\n />\n </ElTooltip>\n <div class=\"overflow-hidden\">\n <ElTextCell\n :label=\"cell.mainText\"\n :style=\"cell.mainTextStyle\"\n :color-text=\"cell.mainTextColor\"\n @click=\"\n () => {\n if (isCellTypeDefault(cell) && cell.clickAction) cell.clickAction();\n }\n \"\n />\n </div>\n </div>\n <div v-if=\"cell.subIcon || cell.subText\" class=\"flex gap-2 items-center\">\n <ElTooltip v-if=\"cell.subIcon\" :title=\"cell.subIconTooltip ?? ''\">\n <div class=\"flex gap-2 items-center\">\n <ElIcon\n :name=\"cell.subIcon.name\"\n :solid=\"cell.subIcon.solid\"\n class=\"w-4 h-4 text-neutral-lighter shrink-0\"\n :class=\"cell.subIconTooltip ? 'cursor-pointer' : ''\"\n />\n </div>\n </ElTooltip>\n <div v-if=\"cell.subText\" class=\"text-sm font-normal text-neutral-lighter overflow-hidden text-ellipsis\">\n {{ cell.subText }}\n </div>\n </div>\n </div>\n </div>\n\n <!-- type TAG -->\n <div v-else-if=\"isCellTypeTag(cell)\" class=\"overflow-y-hidden h-12 flex items-center\">\n <div class=\"flex flex-col gap-2 grow min-w-8\">\n <div class=\"text-neutral-darker text-xs inline font-normal text-nowrap\">\n <ElTag v-bind=\"{ size: 'xs', ...cell.tag }\">\n {{ cell.tag.text }}\n </ElTag>\n </div>\n\n <div v-if=\"cell.subText\" class=\"text-sm font-normal text-neutral-lighter overflow-hidden text-ellipsis\">\n {{ cell.subText }}\n </div>\n </div>\n </div>\n\n <!-- ACTION -->\n <div v-else-if=\"isCellTypeAction(cell)\" class=\"flex items-center h-12 overflow-y-hidden content-center justify-end gap-2\">\n <ElButton v-for=\"(button, index, prevI) in cell.buttons\" :key=\"prevI || 0 + index\" v-bind=\"button\" />\n <ElIconButton v-for=\"(iconButton, index, prevI) in cell.iconButtons\" :key=\"prevI || 0 + index\" v-bind=\"iconButton\" />\n <ElDropdown v-if=\"cell.dropdown\" v-bind=\"cell.dropdown\" left>\n <template #anchor=\"{ toggle }\">\n <ElIconButton :disabled=\"cell.dropdown.disabled\" :icon=\"{ name: 'EllipsisVerticalIcon' }\" @click=\"toggle\" />\n </template>\n </ElDropdown>\n </div>\n\n <!-- INPUT -->\n <div v-else-if=\"isCellTypeInput(cell)\" class=\"flex items-center h-12\">\n <ElInputText class=\"w-full\" :model-value=\"cell.value\" @update:model-value=\"cell.onUpdate?.($event)\" />\n </div>\n</template>\n"],"names":["dataCellTypes","isCellTypeDefault","cell","isCellTypeTag","isCellTypeAction","isCellTypeInput","getCellText","getCellSortableAndFilterableValue","_a"],"mappings":"84CAYaA,GAAgB,CAAC,UAAW,MAAO,SAAU,OAAO,EA8C3DC,EAAqBC,GAAwC,CAACA,EAAK,MAAQA,EAAK,OAAS,UACzFC,EAAiBD,GAAoCA,EAAK,OAAS,MACnEE,EAAoBF,GAAuCA,EAAK,OAAS,SACzEG,EAAmBH,GAAsCA,EAAK,OAAS,QAEhEI,GAAeJ,GACtBD,EAAkBC,CAAI,EAAUA,EAAK,SACrCC,EAAcD,CAAI,EAAUA,EAAK,IAAI,KAClC,KAGIK,GAAqCL,GAA2B,OAC3E,OAAIM,EAAAN,EAAK,6BAAL,MAAAM,EAAiC,OAAeN,EAAK,2BACrDD,EAAkBC,CAAI,EAAUA,EAAK,SACrCC,EAAcD,CAAI,EAAUA,EAAK,IAAI,KACrCG,EAAgBH,CAAI,GAAUA,EAAK,OAAS,EAElD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ElTablePagination.vue.cjs2.js","sources":["../../../src/table/ElTablePagination.vue"],"sourcesContent":["<script lang=\"ts\" setup generic=\"T\">\nimport { computed, ref, watch } from 'vue';\nimport ElIconButton from '@/ElIconButton.vue';\n\ninterface Props {\n rows: T[];\n rowsPerPage?: number;\n pagesBeforeDots?: number; // < 1,2,3....13,14,15 > in this case it's 3\n hideFooter?: boolean;\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n rowsPerPage: 15,\n pagesBeforeDots: 3,\n hideFooter: false,\n});\n\nconst currentPage = ref(0);\n\nconst totalRowsNumber = computed(() => props.rows.length);\n\nconst emitCurrentTabRows = () => emit('update:currentTabRows', props.rows.slice(currentStartItem.value, currentEndItem.value + 1));\n\nconst currentStartItem = computed(() => {\n return currentPage.value * props.rowsPerPage;\n});\n\nconst currentEndItem = computed(() => {\n const end = currentStartItem.value + props.rowsPerPage - 1;\n return end <= totalRowsNumber.value ? end : totalRowsNumber.value - 1;\n});\n\nconst emit = defineEmits<{\n (event: 'update:currentTabRows', rows: T[]): void;\n (event: 'update:currentPage', page: number): void;\n (event: 'change', page: number): void;\n}>();\n\n// number of pages, given number of rows and rows per page\nconst totalPages = computed(() => Math.ceil(totalRowsNumber.value / props.rowsPerPage));\n\nconst prevPageDisabled = computed(() => currentPage.value <= 0);\nconst nextPageDisabled = computed(() => currentPage.value >= totalPages.value - 1);\n\nconst onPageChange = (page: number) => {\n if (page > 0 && page <= totalPages.value && page !== currentPage.value) {\n emit('update:currentPage', page);\n emit('change', page);\n }\n emitCurrentTabRows();\n};\n\n// reset current page if filters have been applied\nwatch(\n () => props.rows,\n () => {\n currentPage.value = 0;\n },\n);\n\nconst goToPage = (pageNumber: number) => {\n console.log('goToPage', pageNumber, currentPage.value, sliceStart.value, totalPages.value);\n // only allow going to valid pages\n if (pageNumber < 0 || pageNumber >= totalPages.value) return;\n currentPage.value = pageNumber;\n onPageChange(pageNumber);\n};\n\nfunction useNumberedPages() {\n const sliceStart = ref(0);\n const sliceArray = computed(() => range(totalPages.value).slice(sliceStart.value, sliceStart.value + props.pagesBeforeDots));\n\n watch(\n () => [props.pagesBeforeDots, props.rows, props.rowsPerPage, totalPages.value, currentPage.value],\n () => {\n calculateSliceStart();\n emitCurrentTabRows();\n },\n {\n immediate: true,\n },\n );\n\n const range = (end: number, start: number = 0, step: number = 1) => {\n const arr = [];\n for (let i = start; i < end; i += step) {\n arr.push(i);\n }\n return arr;\n };\n\n function calculateSliceStart() {\n const chunkSize = props.pagesBeforeDots;\n const currentChunkStart = sliceStart.value;\n const currentChunkEnd = currentChunkStart + chunkSize;\n\n if (currentPage.value >= currentChunkEnd) {\n const lastChunkStart = totalPages.value - chunkSize;\n if (currentPage.value > lastChunkStart) {\n sliceStart.value = lastChunkStart;\n } else {\n sliceStart.value = currentPage.value;\n }\n } else if (currentPage.value < currentChunkStart) {\n if (currentPage.value > chunkSize) {\n sliceStart.value = currentPage.value + 1 - chunkSize;\n } else {\n if (currentPage.value >= 3) {\n sliceStart.value = currentPage.value - 1;\n } else {\n sliceStart.value = 0;\n }\n }\n }\n }\n\n return {\n sliceStart,\n sliceArray,\n };\n}\nconst { sliceStart, sliceArray } = useNumberedPages();\n</script>\n\n<template>\n <div v-if=\"!hideFooter\" class=\"bg-white flex items-center rounded-b-md border-t border-neutral-surface px-4 sm:px-6 py-4\">\n <!-- Small Screen -->\n <ul class=\"pagination w-fit mx-auto flex items-center rounded-md border border-surface bg-white md:hidden\">\n <!--Previous-->\n <li class=\"min-w-8\">\n <ElIconButton\n class=\"-ml-px\"\n :icon=\"{\n name: 'ChevronLeftIcon',\n }\"\n :disabled=\"prevPageDisabled\"\n @click=\"goToPage(currentPage - 1)\"\n />\n </li>\n\n <!--Pages-->\n <li\n v-for=\"item in sliceArray\"\n :key=\"item\"\n :class=\"['border-x-[1px] border-surface -ml-px', currentPage === item && 'border-primary -my-px']\"\n >\n <button\n type=\"button\"\n :class=\"['text-sm min-w-8 h-8', currentPage === item ? 'font-semibold bg-primary text-white' : 'text-neutral-600']\"\n @click.prevent=\"goToPage(item)\"\n >\n {{ item + 1 }}\n </button>\n </li>\n\n <!-- Expand pages button (...) -->\n <li\n v-if=\"sliceStart < totalPages - pagesBeforeDots && totalPages > 3 && (sliceArray.at(-1) ?? 0) < totalPages - 1\"\n class=\"border-x-[1px] border-surface -my-px -ml-px\"\n >\n <button type=\"button\" class=\"text-neutral-600 text-sm min-w-8 h-8\" @click.prevent=\"goToPage((sliceArray.at(-1) ?? 0) + 1)\">\n <span aria-hidden=\"true\">…</span>\n </button>\n </li>\n\n <!-- Next -->\n <li class=\"min-w-8\">\n <ElIconButton\n :icon=\"{\n name: 'ChevronRightIcon',\n }\"\n :disabled=\"nextPageDisabled\"\n @click=\"goToPage(currentPage + 1)\"\n />\n </li>\n </ul>\n\n <!-- Large Screen -->\n <div class=\"hidden md:flex flex-1 items-center w-full\">\n <nav class=\"mx-auto\" aria-label=\"Page navigation\">\n <ul class=\"pagination flex items-center rounded-md border border-surface bg-white\">\n <!--Previous-->\n <li>\n <ElIconButton\n :icon=\"{\n name: 'ChevronLeftIcon',\n }\"\n :disabled=\"prevPageDisabled\"\n @click=\"goToPage(currentPage - 1)\"\n />\n </li>\n\n <!-- First 2 pages -->\n <li v-if=\"sliceStart > 0 && totalPages > pagesBeforeDots\" class=\"border-x-[1px] border-surface -ml-px\">\n <button type=\"button\" class=\"text-sm min-w-8 h-8 text-neutral-600\" @click.prevent=\"goToPage(0)\">1</button>\n </li>\n <li\n v-if=\"(sliceStart > 2 && totalPages > pagesBeforeDots + 1) || (sliceStart > 0 && totalPages === 5)\"\n class=\"border-x-[1px] border-surface -ml-px\"\n >\n <button type=\"button\" class=\"text-sm min-w-8 h-8 text-neutral-600\" @click.prevent=\"goToPage(1)\">2</button>\n </li>\n\n <!-- Expand pages button (...) -->\n <li v-if=\"sliceStart > 0 && totalPages > 5\" class=\"border-x-[1px] border-surface -my-px -ml-px\">\n <button type=\"button\" class=\"text-neutral-600 text-sm min-w-8 h-8\" @click.prevent=\"goToPage((sliceArray.at(0) ?? 1) - 1)\">\n <span aria-hidden=\"true\">…</span>\n </button>\n </li>\n\n <!--Pages-->\n <li\n v-for=\"item in sliceArray\"\n :key=\"item\"\n :class=\"['border-x-[1px] border-surface -ml-px', currentPage === item && 'border-primary -my-px']\"\n >\n <button\n type=\"button\"\n :class=\"['text-sm min-w-8 h-8', currentPage === item ? 'font-semibold bg-primary text-white' : 'text-neutral-600']\"\n @click.prevent=\"goToPage(item)\"\n >\n {{ item + 1 }}\n </button>\n </li>\n\n <!-- Expand pages button (...) -->\n <li\n v-if=\"sliceStart < totalPages - pagesBeforeDots && totalPages > 5 && (sliceArray.at(-1) ?? 0) < totalPages - 2\"\n class=\"border-x-[1px] border-surface -my-px -ml-px\"\n >\n <button type=\"button\" class=\"text-neutral-600 text-sm min-w-8 h-8\" @click.prevent=\"goToPage((sliceArray.at(-1) ?? 0) + 1)\">\n <span aria-hidden=\"true\">…</span>\n </button>\n </li>\n\n <!-- Last 2 pages -->\n <li\n v-if=\"\n sliceStart < totalPages - pagesBeforeDots &&\n totalPages >= pagesBeforeDots + 2 &&\n (totalPages === 5 || (sliceArray.at(-1) ?? 0) < totalPages - 3)\n \"\n class=\"border-x-[1px] border-surface -ml-px\"\n >\n <button type=\"button\" class=\"text-sm min-w-8 h-8 text-neutral-600\" @click.prevent=\"goToPage(totalPages - 2)\">\n {{ totalPages - 1 }}\n </button>\n </li>\n <li\n v-if=\"sliceStart < totalPages - pagesBeforeDots && totalPages >= pagesBeforeDots + 1\"\n class=\"border-x-[1px] border-surface -ml-px\"\n >\n <button type=\"button\" class=\"text-sm min-w-8 h-8 text-neutral-600\" @click.prevent=\"goToPage(totalPages - 1)\">\n {{ totalPages }}\n </button>\n </li>\n\n <!-- Next -->\n <li>\n <ElIconButton\n :icon=\"{\n name: 'ChevronRightIcon',\n }\"\n :disabled=\"nextPageDisabled\"\n @click=\"goToPage(currentPage + 1)\"\n />\n </li>\n </ul>\n </nav>\n </div>\n </div>\n</template>\n"],"names":["props","__props","currentPage","ref","totalRowsNumber","computed","emitCurrentTabRows","emit","currentStartItem","currentEndItem","end","__emit","totalPages","prevPageDisabled","nextPageDisabled","onPageChange","page","watch","goToPage","pageNumber","sliceStart","useNumberedPages","sliceArray","range","calculateSliceStart","start","step","arr","i","chunkSize","currentChunkStart","currentChunkEnd","lastChunkStart"],"mappings":"48CAWA,MAAMA,EAAQC,EAMRC,EAAcC,MAAI,CAAC,EAEnBC,EAAkBC,EAAAA,SAAS,IAAML,EAAM,KAAK,MAAM,EAElDM,EAAqB,IAAMC,EAAK,wBAAyBP,EAAM,KAAK,MAAMQ,EAAiB,MAAOC,EAAe,MAAQ,CAAC,CAAC,EAE3HD,EAAmBH,EAAAA,SAAS,IACzBH,EAAY,MAAQF,EAAM,WAClC,EAEKS,EAAiBJ,EAAAA,SAAS,IAAM,CACpC,MAAMK,EAAMF,EAAiB,MAAQR,EAAM,YAAc,EACzD,OAAOU,GAAON,EAAgB,MAAQM,EAAMN,EAAgB,MAAQ,CAAA,CACrE,EAEKG,EAAOI,EAOPC,EAAaP,WAAS,IAAM,KAAK,KAAKD,EAAgB,MAAQJ,EAAM,WAAW,CAAC,EAEhFa,EAAmBR,EAAAA,SAAS,IAAMH,EAAY,OAAS,CAAC,EACxDY,EAAmBT,EAAS,SAAA,IAAMH,EAAY,OAASU,EAAW,MAAQ,CAAC,EAE3EG,EAAgBC,GAAiB,CACjCA,EAAO,GAAKA,GAAQJ,EAAW,OAASI,IAASd,EAAY,QAC/DK,EAAK,qBAAsBS,CAAI,EAC/BT,EAAK,SAAUS,CAAI,GAEFV,GAAA,EAIrBW,EAAA,MACE,IAAMjB,EAAM,KACZ,IAAM,CACJE,EAAY,MAAQ,CACtB,CAAA,EAGI,MAAAgB,EAAYC,GAAuB,CAC/B,QAAA,IAAI,WAAYA,EAAYjB,EAAY,MAAOkB,EAAW,MAAOR,EAAW,KAAK,EAErF,EAAAO,EAAa,GAAKA,GAAcP,EAAW,SAC/CV,EAAY,MAAQiB,EACpBJ,EAAaI,CAAU,EAAA,EAGzB,SAASE,GAAmB,CACpBD,MAAAA,EAAajB,MAAI,CAAC,EAClBmB,EAAajB,EAAAA,SAAS,IAAMkB,EAAMX,EAAW,KAAK,EAAE,MAAMQ,EAAW,MAAOA,EAAW,MAAQpB,EAAM,eAAe,CAAC,EAE3HiB,EAAA,MACE,IAAM,CAACjB,EAAM,gBAAiBA,EAAM,KAAMA,EAAM,YAAaY,EAAW,MAAOV,EAAY,KAAK,EAChG,IAAM,CACgBsB,IACDlB,GACrB,EACA,CACE,UAAW,EACb,CAAA,EAGF,MAAMiB,EAAQ,CAACb,EAAae,EAAgB,EAAGC,EAAe,IAAM,CAClE,MAAMC,EAAM,CAAA,EACZ,QAASC,EAAIH,EAAOG,EAAIlB,EAAKkB,GAAKF,EAChCC,EAAI,KAAKC,CAAC,EAEL,OAAAD,CAAA,EAGT,SAASH,GAAsB,CAC7B,MAAMK,EAAY7B,EAAM,gBAClB8B,EAAoBV,EAAW,MAC/BW,EAAkBD,EAAoBD,EAExC,GAAA3B,EAAY,OAAS6B,EAAiB,CAClC,MAAAC,EAAiBpB,EAAW,MAAQiB,EACtC3B,EAAY,MAAQ8B,EACtBZ,EAAW,MAAQY,EAEnBZ,EAAW,MAAQlB,EAAY,KACjC,MACSA,EAAY,MAAQ4B,IACzB5B,EAAY,MAAQ2B,EACtBT,EAAW,MAAQlB,EAAY,MAAQ,EAAI2B,EAEvC3B,EAAY,OAAS,EACvBkB,EAAW,MAAQlB,EAAY,MAAQ,EAEvCkB,EAAW,MAAQ,EAI3B,CAEO,MAAA,CACL,WAAAA,EACA,WAAAE,CAAA,CAEJ,CACA,KAAM,CAAE,WAAAF,EAAY,WAAAE,CAAW,EAAID,EAAiB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ElTablePagination.vue.esm2.js","sources":["../../../src/table/ElTablePagination.vue"],"sourcesContent":["<script lang=\"ts\" setup generic=\"T\">\nimport { computed, ref, watch } from 'vue';\nimport ElIconButton from '@/ElIconButton.vue';\n\ninterface Props {\n rows: T[];\n rowsPerPage?: number;\n pagesBeforeDots?: number; // < 1,2,3....13,14,15 > in this case it's 3\n hideFooter?: boolean;\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n rowsPerPage: 15,\n pagesBeforeDots: 3,\n hideFooter: false,\n});\n\nconst currentPage = ref(0);\n\nconst totalRowsNumber = computed(() => props.rows.length);\n\nconst emitCurrentTabRows = () => emit('update:currentTabRows', props.rows.slice(currentStartItem.value, currentEndItem.value + 1));\n\nconst currentStartItem = computed(() => {\n return currentPage.value * props.rowsPerPage;\n});\n\nconst currentEndItem = computed(() => {\n const end = currentStartItem.value + props.rowsPerPage - 1;\n return end <= totalRowsNumber.value ? end : totalRowsNumber.value - 1;\n});\n\nconst emit = defineEmits<{\n (event: 'update:currentTabRows', rows: T[]): void;\n (event: 'update:currentPage', page: number): void;\n (event: 'change', page: number): void;\n}>();\n\n// number of pages, given number of rows and rows per page\nconst totalPages = computed(() => Math.ceil(totalRowsNumber.value / props.rowsPerPage));\n\nconst prevPageDisabled = computed(() => currentPage.value <= 0);\nconst nextPageDisabled = computed(() => currentPage.value >= totalPages.value - 1);\n\nconst onPageChange = (page: number) => {\n if (page > 0 && page <= totalPages.value && page !== currentPage.value) {\n emit('update:currentPage', page);\n emit('change', page);\n }\n emitCurrentTabRows();\n};\n\n// reset current page if filters have been applied\nwatch(\n () => props.rows,\n () => {\n currentPage.value = 0;\n },\n);\n\nconst goToPage = (pageNumber: number) => {\n console.log('goToPage', pageNumber, currentPage.value, sliceStart.value, totalPages.value);\n // only allow going to valid pages\n if (pageNumber < 0 || pageNumber >= totalPages.value) return;\n currentPage.value = pageNumber;\n onPageChange(pageNumber);\n};\n\nfunction useNumberedPages() {\n const sliceStart = ref(0);\n const sliceArray = computed(() => range(totalPages.value).slice(sliceStart.value, sliceStart.value + props.pagesBeforeDots));\n\n watch(\n () => [props.pagesBeforeDots, props.rows, props.rowsPerPage, totalPages.value, currentPage.value],\n () => {\n calculateSliceStart();\n emitCurrentTabRows();\n },\n {\n immediate: true,\n },\n );\n\n const range = (end: number, start: number = 0, step: number = 1) => {\n const arr = [];\n for (let i = start; i < end; i += step) {\n arr.push(i);\n }\n return arr;\n };\n\n function calculateSliceStart() {\n const chunkSize = props.pagesBeforeDots;\n const currentChunkStart = sliceStart.value;\n const currentChunkEnd = currentChunkStart + chunkSize;\n\n if (currentPage.value >= currentChunkEnd) {\n const lastChunkStart = totalPages.value - chunkSize;\n if (currentPage.value > lastChunkStart) {\n sliceStart.value = lastChunkStart;\n } else {\n sliceStart.value = currentPage.value;\n }\n } else if (currentPage.value < currentChunkStart) {\n if (currentPage.value > chunkSize) {\n sliceStart.value = currentPage.value + 1 - chunkSize;\n } else {\n if (currentPage.value >= 3) {\n sliceStart.value = currentPage.value - 1;\n } else {\n sliceStart.value = 0;\n }\n }\n }\n }\n\n return {\n sliceStart,\n sliceArray,\n };\n}\nconst { sliceStart, sliceArray } = useNumberedPages();\n</script>\n\n<template>\n <div v-if=\"!hideFooter\" class=\"bg-white flex items-center rounded-b-md border-t border-neutral-surface px-4 sm:px-6 py-4\">\n <!-- Small Screen -->\n <ul class=\"pagination w-fit mx-auto flex items-center rounded-md border border-surface bg-white md:hidden\">\n <!--Previous-->\n <li class=\"min-w-8\">\n <ElIconButton\n class=\"-ml-px\"\n :icon=\"{\n name: 'ChevronLeftIcon',\n }\"\n :disabled=\"prevPageDisabled\"\n @click=\"goToPage(currentPage - 1)\"\n />\n </li>\n\n <!--Pages-->\n <li\n v-for=\"item in sliceArray\"\n :key=\"item\"\n :class=\"['border-x-[1px] border-surface -ml-px', currentPage === item && 'border-primary -my-px']\"\n >\n <button\n type=\"button\"\n :class=\"['text-sm min-w-8 h-8', currentPage === item ? 'font-semibold bg-primary text-white' : 'text-neutral-600']\"\n @click.prevent=\"goToPage(item)\"\n >\n {{ item + 1 }}\n </button>\n </li>\n\n <!-- Expand pages button (...) -->\n <li\n v-if=\"sliceStart < totalPages - pagesBeforeDots && totalPages > 3 && (sliceArray.at(-1) ?? 0) < totalPages - 1\"\n class=\"border-x-[1px] border-surface -my-px -ml-px\"\n >\n <button type=\"button\" class=\"text-neutral-600 text-sm min-w-8 h-8\" @click.prevent=\"goToPage((sliceArray.at(-1) ?? 0) + 1)\">\n <span aria-hidden=\"true\">…</span>\n </button>\n </li>\n\n <!-- Next -->\n <li class=\"min-w-8\">\n <ElIconButton\n :icon=\"{\n name: 'ChevronRightIcon',\n }\"\n :disabled=\"nextPageDisabled\"\n @click=\"goToPage(currentPage + 1)\"\n />\n </li>\n </ul>\n\n <!-- Large Screen -->\n <div class=\"hidden md:flex flex-1 items-center w-full\">\n <nav class=\"mx-auto\" aria-label=\"Page navigation\">\n <ul class=\"pagination flex items-center rounded-md border border-surface bg-white\">\n <!--Previous-->\n <li>\n <ElIconButton\n :icon=\"{\n name: 'ChevronLeftIcon',\n }\"\n :disabled=\"prevPageDisabled\"\n @click=\"goToPage(currentPage - 1)\"\n />\n </li>\n\n <!-- First 2 pages -->\n <li v-if=\"sliceStart > 0 && totalPages > pagesBeforeDots\" class=\"border-x-[1px] border-surface -ml-px\">\n <button type=\"button\" class=\"text-sm min-w-8 h-8 text-neutral-600\" @click.prevent=\"goToPage(0)\">1</button>\n </li>\n <li\n v-if=\"(sliceStart > 2 && totalPages > pagesBeforeDots + 1) || (sliceStart > 0 && totalPages === 5)\"\n class=\"border-x-[1px] border-surface -ml-px\"\n >\n <button type=\"button\" class=\"text-sm min-w-8 h-8 text-neutral-600\" @click.prevent=\"goToPage(1)\">2</button>\n </li>\n\n <!-- Expand pages button (...) -->\n <li v-if=\"sliceStart > 0 && totalPages > 5\" class=\"border-x-[1px] border-surface -my-px -ml-px\">\n <button type=\"button\" class=\"text-neutral-600 text-sm min-w-8 h-8\" @click.prevent=\"goToPage((sliceArray.at(0) ?? 1) - 1)\">\n <span aria-hidden=\"true\">…</span>\n </button>\n </li>\n\n <!--Pages-->\n <li\n v-for=\"item in sliceArray\"\n :key=\"item\"\n :class=\"['border-x-[1px] border-surface -ml-px', currentPage === item && 'border-primary -my-px']\"\n >\n <button\n type=\"button\"\n :class=\"['text-sm min-w-8 h-8', currentPage === item ? 'font-semibold bg-primary text-white' : 'text-neutral-600']\"\n @click.prevent=\"goToPage(item)\"\n >\n {{ item + 1 }}\n </button>\n </li>\n\n <!-- Expand pages button (...) -->\n <li\n v-if=\"sliceStart < totalPages - pagesBeforeDots && totalPages > 5 && (sliceArray.at(-1) ?? 0) < totalPages - 2\"\n class=\"border-x-[1px] border-surface -my-px -ml-px\"\n >\n <button type=\"button\" class=\"text-neutral-600 text-sm min-w-8 h-8\" @click.prevent=\"goToPage((sliceArray.at(-1) ?? 0) + 1)\">\n <span aria-hidden=\"true\">…</span>\n </button>\n </li>\n\n <!-- Last 2 pages -->\n <li\n v-if=\"\n sliceStart < totalPages - pagesBeforeDots &&\n totalPages >= pagesBeforeDots + 2 &&\n (totalPages === 5 || (sliceArray.at(-1) ?? 0) < totalPages - 3)\n \"\n class=\"border-x-[1px] border-surface -ml-px\"\n >\n <button type=\"button\" class=\"text-sm min-w-8 h-8 text-neutral-600\" @click.prevent=\"goToPage(totalPages - 2)\">\n {{ totalPages - 1 }}\n </button>\n </li>\n <li\n v-if=\"sliceStart < totalPages - pagesBeforeDots && totalPages >= pagesBeforeDots + 1\"\n class=\"border-x-[1px] border-surface -ml-px\"\n >\n <button type=\"button\" class=\"text-sm min-w-8 h-8 text-neutral-600\" @click.prevent=\"goToPage(totalPages - 1)\">\n {{ totalPages }}\n </button>\n </li>\n\n <!-- Next -->\n <li>\n <ElIconButton\n :icon=\"{\n name: 'ChevronRightIcon',\n }\"\n :disabled=\"nextPageDisabled\"\n @click=\"goToPage(currentPage + 1)\"\n />\n </li>\n </ul>\n </nav>\n </div>\n </div>\n</template>\n"],"names":["props","__props","currentPage","ref","totalRowsNumber","computed","emitCurrentTabRows","emit","currentStartItem","currentEndItem","end","__emit","totalPages","prevPageDisabled","nextPageDisabled","onPageChange","page","watch","goToPage","pageNumber","sliceStart","useNumberedPages","sliceArray","range","calculateSliceStart","start","step","arr","i","chunkSize","currentChunkStart","currentChunkEnd","lastChunkStart"],"mappings":"0iDAWA,MAAMA,EAAQC,EAMRC,EAAcC,EAAI,CAAC,EAEnBC,EAAkBC,EAAS,IAAML,EAAM,KAAK,MAAM,EAElDM,EAAqB,IAAMC,EAAK,wBAAyBP,EAAM,KAAK,MAAMQ,EAAiB,MAAOC,EAAe,MAAQ,CAAC,CAAC,EAE3HD,EAAmBH,EAAS,IACzBH,EAAY,MAAQF,EAAM,WAClC,EAEKS,EAAiBJ,EAAS,IAAM,CACpC,MAAMK,EAAMF,EAAiB,MAAQR,EAAM,YAAc,EACzD,OAAOU,GAAON,EAAgB,MAAQM,EAAMN,EAAgB,MAAQ,CAAA,CACrE,EAEKG,EAAOI,EAOPC,EAAaP,EAAS,IAAM,KAAK,KAAKD,EAAgB,MAAQJ,EAAM,WAAW,CAAC,EAEhFa,EAAmBR,EAAS,IAAMH,EAAY,OAAS,CAAC,EACxDY,EAAmBT,EAAS,IAAMH,EAAY,OAASU,EAAW,MAAQ,CAAC,EAE3EG,EAAgBC,GAAiB,CACjCA,EAAO,GAAKA,GAAQJ,EAAW,OAASI,IAASd,EAAY,QAC/DK,EAAK,qBAAsBS,CAAI,EAC/BT,EAAK,SAAUS,CAAI,GAEFV,GAAA,EAIrBW,EACE,IAAMjB,EAAM,KACZ,IAAM,CACJE,EAAY,MAAQ,CACtB,CAAA,EAGI,MAAAgB,EAAYC,GAAuB,CAC/B,QAAA,IAAI,WAAYA,EAAYjB,EAAY,MAAOkB,EAAW,MAAOR,EAAW,KAAK,EAErF,EAAAO,EAAa,GAAKA,GAAcP,EAAW,SAC/CV,EAAY,MAAQiB,EACpBJ,EAAaI,CAAU,EAAA,EAGzB,SAASE,GAAmB,CACpBD,MAAAA,EAAajB,EAAI,CAAC,EAClBmB,EAAajB,EAAS,IAAMkB,EAAMX,EAAW,KAAK,EAAE,MAAMQ,EAAW,MAAOA,EAAW,MAAQpB,EAAM,eAAe,CAAC,EAE3HiB,EACE,IAAM,CAACjB,EAAM,gBAAiBA,EAAM,KAAMA,EAAM,YAAaY,EAAW,MAAOV,EAAY,KAAK,EAChG,IAAM,CACgBsB,IACDlB,GACrB,EACA,CACE,UAAW,EACb,CAAA,EAGF,MAAMiB,EAAQ,CAACb,EAAae,EAAgB,EAAGC,EAAe,IAAM,CAClE,MAAMC,EAAM,CAAA,EACZ,QAASC,EAAIH,EAAOG,EAAIlB,EAAKkB,GAAKF,EAChCC,EAAI,KAAKC,CAAC,EAEL,OAAAD,CAAA,EAGT,SAASH,GAAsB,CAC7B,MAAMK,EAAY7B,EAAM,gBAClB8B,EAAoBV,EAAW,MAC/BW,EAAkBD,EAAoBD,EAExC,GAAA3B,EAAY,OAAS6B,EAAiB,CAClC,MAAAC,EAAiBpB,EAAW,MAAQiB,EACtC3B,EAAY,MAAQ8B,EACtBZ,EAAW,MAAQY,EAEnBZ,EAAW,MAAQlB,EAAY,KACjC,MACSA,EAAY,MAAQ4B,IACzB5B,EAAY,MAAQ2B,EACtBT,EAAW,MAAQlB,EAAY,MAAQ,EAAI2B,EAEvC3B,EAAY,OAAS,EACvBkB,EAAW,MAAQlB,EAAY,MAAQ,EAEvCkB,EAAW,MAAQ,EAI3B,CAEO,MAAA,CACL,WAAAA,EACA,WAAAE,CAAA,CAEJ,CACA,KAAM,CAAE,WAAAF,EAAY,WAAAE,CAAW,EAAID,EAAiB"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("../node_modules/@davincihealthcare/elty-design-system-foundations/dist/index.cjs.js"),t=require("../node_modules/tailwindcss/plugin.cjs.js"),i=t.default(({addBase:e})=>{e(require("./style.cjs"))},{plugins:[u.TailwindPlugin]}),l=t.default(({addBase:e})=>{e(require("./style.cjs"))});exports.defaultPlugin=i;exports.pluginWithoutStyles=l;
|
|
2
|
+
//# sourceMappingURL=tailwind.plugin.cjs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tailwind.plugin.cjs.js","sources":["../../src/tailwind.plugin.ts"],"sourcesContent":["import { TailwindPlugin } from '@davincihealthcare/elty-design-system-foundations';\nimport plugin from 'tailwindcss/plugin';\n\nexport const defaultPlugin = plugin(\n ({ addBase }) => {\n // eslint-disable-next-line no-undef\n addBase(require('./style.cjs'));\n },\n {\n plugins: [TailwindPlugin],\n },\n);\n\nexport const pluginWithoutStyles = plugin(({ addBase }) => {\n // eslint-disable-next-line no-undef\n addBase(require('./style.cjs'));\n});\n"],"names":["defaultPlugin","plugin","addBase","TailwindPlugin","pluginWithoutStyles"],"mappings":"8OAGaA,EAAgBC,EAAA,QAC3B,CAAC,CAAE,QAAAC,CAAA,IAAc,CAEPA,EAAA,QAAQ,aAAa,CAAC,CAChC,EACA,CACE,QAAS,CAACC,EAAAA,cAAc,CAC1B,CACF,EAEaC,EAAsBH,EAAA,QAAO,CAAC,CAAE,QAAAC,KAAc,CAEjDA,EAAA,QAAQ,aAAa,CAAC,CAChC,CAAC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{TailwindPlugin as t}from"../node_modules/@davincihealthcare/elty-design-system-foundations/dist/index.esm.js";import r from"../node_modules/tailwindcss/plugin.esm.js";const n=r(({addBase:i})=>{i(require("./style.cjs"))},{plugins:[t]}),o=r(({addBase:i})=>{i(require("./style.cjs"))});export{n as defaultPlugin,o as pluginWithoutStyles};
|
|
2
|
+
//# sourceMappingURL=tailwind.plugin.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tailwind.plugin.esm.js","sources":["../../src/tailwind.plugin.ts"],"sourcesContent":["import { TailwindPlugin } from '@davincihealthcare/elty-design-system-foundations';\nimport plugin from 'tailwindcss/plugin';\n\nexport const defaultPlugin = plugin(\n ({ addBase }) => {\n // eslint-disable-next-line no-undef\n addBase(require('./style.cjs'));\n },\n {\n plugins: [TailwindPlugin],\n },\n);\n\nexport const pluginWithoutStyles = plugin(({ addBase }) => {\n // eslint-disable-next-line no-undef\n addBase(require('./style.cjs'));\n});\n"],"names":["defaultPlugin","plugin","addBase","TailwindPlugin","pluginWithoutStyles"],"mappings":"8KAGO,MAAMA,EAAgBC,EAC3B,CAAC,CAAE,QAAAC,CAAA,IAAc,CAEPA,EAAA,QAAQ,aAAa,CAAC,CAChC,EACA,CACE,QAAS,CAACC,CAAc,CAC1B,CACF,EAEaC,EAAsBH,EAAO,CAAC,CAAE,QAAAC,KAAc,CAEjDA,EAAA,QAAQ,aAAa,CAAC,CAChC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.cjs.js","sources":["../../src/types.ts"],"sourcesContent":["export type OptionType = {\n __typename?: 'OptionType';\n imageUrl?: string | null;\n label: string;\n value: string;\n};\n\nexport enum Role {\n Admin = 'ADMIN',\n AuxiliaryNurse = 'AUXILIARY_NURSE',\n Clinic = 'CLINIC',\n Doctor = 'DOCTOR',\n Nurse = 'NURSE',\n Patient = 'PATIENT',\n Secretary = 'SECRETARY',\n}\n\nexport enum DrugDurationMeasures {\n Giorni = 'GIORNI',\n Mesi = 'MESI',\n Settimane = 'SETTIMANE',\n}\n\nexport enum DrugTimeMeasures {\n AlBisogno = 'AL_BISOGNO',\n Giorni = 'GIORNI',\n Mesi = 'MESI',\n Ore = 'ORE',\n Settimane = 'SETTIMANE',\n}\n\nexport enum DrugUnitMeasures {\n Amp = 'AMP',\n App = 'APP',\n Bar = 'BAR',\n Bas = 'BAS',\n Bom = 'BOM',\n Bus = 'BUS',\n Car = 'CAR',\n Cc = 'CC',\n Cer = 'CER',\n Cli = 'CLI',\n Cmo = 'CMO',\n Cpr = 'CPR',\n Cps = 'CPS',\n Cro = 'CRO',\n Div = 'DIV',\n Dos = 'DOS',\n Ero = 'ERO',\n Fia = 'FIA',\n Fil = 'FIL',\n Fla = 'FLA',\n G = 'G',\n Gar = 'GAR',\n Gra = 'GRA',\n Grn = 'GRN',\n Gtt = 'GTT',\n Imp = 'IMP',\n Inp = 'INP',\n Ins = 'INS',\n Iud = 'IUD',\n Lio = 'LIO',\n Mc = 'MC',\n Mcg = 'MCG',\n Meq = 'MEQ',\n Mg = 'MG',\n Ml = 'ML',\n Mtr = 'MTR',\n Neb = 'NEB',\n Ovu = 'OVU',\n Pas = 'PAS',\n Pen = 'PEN',\n Sac = 'SAC',\n Sir = 'SIR',\n Spu = 'SPU',\n Sup = 'SUP',\n Tam = 'TAM',\n Tub = 'TUB',\n U = 'U',\n Ual = 'UAL',\n Ui = 'UI',\n Vas = 'VAS',\n}\n\nexport interface AvatarParameters {\n avatarUrl: string | null | undefined;\n role: Role;\n}\n"],"names":["Role","DrugDurationMeasures","DrugTimeMeasures","DrugUnitMeasures"],"mappings":"gFAOY,IAAAA,GAAAA,IACVA,EAAA,MAAQ,QACRA,EAAA,eAAiB,kBACjBA,EAAA,OAAS,SACTA,EAAA,OAAS,SACTA,EAAA,MAAQ,QACRA,EAAA,QAAU,UACVA,EAAA,UAAY,YAPFA,IAAAA,GAAA,CAAA,CAAA,EAUAC,GAAAA,IACVA,EAAA,OAAS,SACTA,EAAA,KAAO,OACPA,EAAA,UAAY,YAHFA,IAAAA,GAAA,CAAA,CAAA,EAMAC,GAAAA,IACVA,EAAA,UAAY,aACZA,EAAA,OAAS,SACTA,EAAA,KAAO,OACPA,EAAA,IAAM,MACNA,EAAA,UAAY,YALFA,IAAAA,GAAA,CAAA,CAAA,EAQAC,GAAAA,IACVA,EAAA,IAAM,MACNA,EAAA,IAAM,MACNA,EAAA,IAAM,MACNA,EAAA,IAAM,MACNA,EAAA,IAAM,MACNA,EAAA,IAAM,MACNA,EAAA,IAAM,MACNA,EAAA,GAAK,KACLA,EAAA,IAAM,MACNA,EAAA,IAAM,MACNA,EAAA,IAAM,MACNA,EAAA,IAAM,MACNA,EAAA,IAAM,MACNA,EAAA,IAAM,MACNA,EAAA,IAAM,MACNA,EAAA,IAAM,MACNA,EAAA,IAAM,MACNA,EAAA,IAAM,MACNA,EAAA,IAAM,MACNA,EAAA,IAAM,MACNA,EAAA,EAAI,IACJA,EAAA,IAAM,MACNA,EAAA,IAAM,MACNA,EAAA,IAAM,MACNA,EAAA,IAAM,MACNA,EAAA,IAAM,MACNA,EAAA,IAAM,MACNA,EAAA,IAAM,MACNA,EAAA,IAAM,MACNA,EAAA,IAAM,MACNA,EAAA,GAAK,KACLA,EAAA,IAAM,MACNA,EAAA,IAAM,MACNA,EAAA,GAAK,KACLA,EAAA,GAAK,KACLA,EAAA,IAAM,MACNA,EAAA,IAAM,MACNA,EAAA,IAAM,MACNA,EAAA,IAAM,MACNA,EAAA,IAAM,MACNA,EAAA,IAAM,MACNA,EAAA,IAAM,MACNA,EAAA,IAAM,MACNA,EAAA,IAAM,MACNA,EAAA,IAAM,MACNA,EAAA,IAAM,MACNA,EAAA,EAAI,IACJA,EAAA,IAAM,MACNA,EAAA,GAAK,KACLA,EAAA,IAAM,MAlDIA,IAAAA,GAAA,CAAA,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.esm.js","sources":["../../src/types.ts"],"sourcesContent":["export type OptionType = {\n __typename?: 'OptionType';\n imageUrl?: string | null;\n label: string;\n value: string;\n};\n\nexport enum Role {\n Admin = 'ADMIN',\n AuxiliaryNurse = 'AUXILIARY_NURSE',\n Clinic = 'CLINIC',\n Doctor = 'DOCTOR',\n Nurse = 'NURSE',\n Patient = 'PATIENT',\n Secretary = 'SECRETARY',\n}\n\nexport enum DrugDurationMeasures {\n Giorni = 'GIORNI',\n Mesi = 'MESI',\n Settimane = 'SETTIMANE',\n}\n\nexport enum DrugTimeMeasures {\n AlBisogno = 'AL_BISOGNO',\n Giorni = 'GIORNI',\n Mesi = 'MESI',\n Ore = 'ORE',\n Settimane = 'SETTIMANE',\n}\n\nexport enum DrugUnitMeasures {\n Amp = 'AMP',\n App = 'APP',\n Bar = 'BAR',\n Bas = 'BAS',\n Bom = 'BOM',\n Bus = 'BUS',\n Car = 'CAR',\n Cc = 'CC',\n Cer = 'CER',\n Cli = 'CLI',\n Cmo = 'CMO',\n Cpr = 'CPR',\n Cps = 'CPS',\n Cro = 'CRO',\n Div = 'DIV',\n Dos = 'DOS',\n Ero = 'ERO',\n Fia = 'FIA',\n Fil = 'FIL',\n Fla = 'FLA',\n G = 'G',\n Gar = 'GAR',\n Gra = 'GRA',\n Grn = 'GRN',\n Gtt = 'GTT',\n Imp = 'IMP',\n Inp = 'INP',\n Ins = 'INS',\n Iud = 'IUD',\n Lio = 'LIO',\n Mc = 'MC',\n Mcg = 'MCG',\n Meq = 'MEQ',\n Mg = 'MG',\n Ml = 'ML',\n Mtr = 'MTR',\n Neb = 'NEB',\n Ovu = 'OVU',\n Pas = 'PAS',\n Pen = 'PEN',\n Sac = 'SAC',\n Sir = 'SIR',\n Spu = 'SPU',\n Sup = 'SUP',\n Tam = 'TAM',\n Tub = 'TUB',\n U = 'U',\n Ual = 'UAL',\n Ui = 'UI',\n Vas = 'VAS',\n}\n\nexport interface AvatarParameters {\n avatarUrl: string | null | undefined;\n role: Role;\n}\n"],"names":["Role","DrugDurationMeasures","DrugTimeMeasures","DrugUnitMeasures"],"mappings":"AAOY,IAAAA,GAAAA,IACVA,EAAA,MAAQ,QACRA,EAAA,eAAiB,kBACjBA,EAAA,OAAS,SACTA,EAAA,OAAS,SACTA,EAAA,MAAQ,QACRA,EAAA,QAAU,UACVA,EAAA,UAAY,YAPFA,IAAAA,GAAA,CAAA,CAAA,EAUAC,GAAAA,IACVA,EAAA,OAAS,SACTA,EAAA,KAAO,OACPA,EAAA,UAAY,YAHFA,IAAAA,GAAA,CAAA,CAAA,EAMAC,GAAAA,IACVA,EAAA,UAAY,aACZA,EAAA,OAAS,SACTA,EAAA,KAAO,OACPA,EAAA,IAAM,MACNA,EAAA,UAAY,YALFA,IAAAA,GAAA,CAAA,CAAA,EAQAC,GAAAA,IACVA,EAAA,IAAM,MACNA,EAAA,IAAM,MACNA,EAAA,IAAM,MACNA,EAAA,IAAM,MACNA,EAAA,IAAM,MACNA,EAAA,IAAM,MACNA,EAAA,IAAM,MACNA,EAAA,GAAK,KACLA,EAAA,IAAM,MACNA,EAAA,IAAM,MACNA,EAAA,IAAM,MACNA,EAAA,IAAM,MACNA,EAAA,IAAM,MACNA,EAAA,IAAM,MACNA,EAAA,IAAM,MACNA,EAAA,IAAM,MACNA,EAAA,IAAM,MACNA,EAAA,IAAM,MACNA,EAAA,IAAM,MACNA,EAAA,IAAM,MACNA,EAAA,EAAI,IACJA,EAAA,IAAM,MACNA,EAAA,IAAM,MACNA,EAAA,IAAM,MACNA,EAAA,IAAM,MACNA,EAAA,IAAM,MACNA,EAAA,IAAM,MACNA,EAAA,IAAM,MACNA,EAAA,IAAM,MACNA,EAAA,IAAM,MACNA,EAAA,GAAK,KACLA,EAAA,IAAM,MACNA,EAAA,IAAM,MACNA,EAAA,GAAK,KACLA,EAAA,GAAK,KACLA,EAAA,IAAM,MACNA,EAAA,IAAM,MACNA,EAAA,IAAM,MACNA,EAAA,IAAM,MACNA,EAAA,IAAM,MACNA,EAAA,IAAM,MACNA,EAAA,IAAM,MACNA,EAAA,IAAM,MACNA,EAAA,IAAM,MACNA,EAAA,IAAM,MACNA,EAAA,IAAM,MACNA,EAAA,EAAI,IACJA,EAAA,IAAM,MACNA,EAAA,GAAK,KACLA,EAAA,IAAM,MAlDIA,IAAAA,GAAA,CAAA,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.cjs.js","sources":["../../src/utils.ts"],"sourcesContent":["import { onMounted, onUnmounted, ref } from 'vue';\nimport { AvatarParameters, Role } from '@/types';\n\nexport const getAvatar = (user: AvatarParameters | null | undefined): string => {\n if (user?.avatarUrl) {\n return user.avatarUrl;\n }\n if (user?.role === Role.Doctor) {\n return 'https://davinci-public.s3.eu-central-1.amazonaws.com/avatar_doctor.svg';\n } else {\n return 'https://davinci-public.s3.eu-central-1.amazonaws.com/avatar_patient.svg';\n }\n};\n\nenum MaxWidth {\n Mobile = 640,\n Tablet = 768,\n Desktop = 1024,\n LargeDesktop = 1280,\n ExtraLargeDesktop = 1536,\n}\n\nexport enum Device {\n Mobile = 'Mobile',\n Tablet = 'Tablet',\n Desktop = 'Desktop',\n}\n\nexport const useMatchDevice = () => {\n const mediaQueryMobile = window.matchMedia(`(max-width: ${MaxWidth.Mobile}px)`);\n const mediaQueryTablet = window.matchMedia(`(max-width: ${MaxWidth.Tablet}px)`);\n const mediaQueryDesktop = window.matchMedia(`(max-width: ${MaxWidth.Desktop}px)`);\n\n const device = ref<Device>(mediaQueryDesktop.matches ? Device.Desktop : mediaQueryTablet.matches ? Device.Tablet : Device.Mobile);\n\n const onMatchMobileMediaChange = () => {\n device.value = Device.Mobile;\n };\n\n const onMatchTabletMediaChange = () => {\n device.value = Device.Tablet;\n };\n\n const onMatchDesktopMediaChange = () => {\n device.value = Device.Desktop;\n };\n\n onMounted(() => {\n mediaQueryMobile.addEventListener('change', onMatchMobileMediaChange);\n mediaQueryTablet.addEventListener('change', onMatchTabletMediaChange);\n mediaQueryDesktop.addEventListener('change', onMatchDesktopMediaChange);\n });\n\n onUnmounted(() => {\n mediaQueryMobile.removeEventListener('change', onMatchMobileMediaChange);\n mediaQueryTablet.removeEventListener('change', onMatchTabletMediaChange);\n mediaQueryDesktop.removeEventListener('change', onMatchDesktopMediaChange);\n });\n\n return device;\n};\n"],"names":["getAvatar","user","Role","Device","useMatchDevice","mediaQueryMobile","mediaQueryTablet","mediaQueryDesktop","device","ref","onMatchMobileMediaChange","onMatchTabletMediaChange","onMatchDesktopMediaChange","onMounted","onUnmounted"],"mappings":"mIAGaA,EAAaC,GACpBA,GAAA,MAAAA,EAAM,UACDA,EAAK,WAEVA,GAAA,YAAAA,EAAM,QAASC,EAAA,KAAK,OACf,yEAEA,0EAYC,IAAAC,GAAAA,IACVA,EAAA,OAAS,SACTA,EAAA,OAAS,SACTA,EAAA,QAAU,UAHAA,IAAAA,GAAA,CAAA,CAAA,EAML,MAAMC,EAAiB,IAAM,CAClC,MAAMC,EAAmB,OAAO,WAAW,oBAAmC,EACxEC,EAAmB,OAAO,WAAW,oBAAmC,EACxEC,EAAoB,OAAO,WAAW,qBAAoC,EAE1EC,EAASC,MAAYF,EAAkB,QAAU,UAAiBD,EAAiB,QAAU,SAAgB,UAE7GI,EAA2B,IAAM,CACrCF,EAAO,MAAQ,QAAA,EAGXG,EAA2B,IAAM,CACrCH,EAAO,MAAQ,QAAA,EAGXI,EAA4B,IAAM,CACtCJ,EAAO,MAAQ,SAAA,EAGjBK,OAAAA,EAAAA,UAAU,IAAM,CACGR,EAAA,iBAAiB,SAAUK,CAAwB,EACnDJ,EAAA,iBAAiB,SAAUK,CAAwB,EAClDJ,EAAA,iBAAiB,SAAUK,CAAyB,CAAA,CACvE,EAEDE,EAAAA,YAAY,IAAM,CACCT,EAAA,oBAAoB,SAAUK,CAAwB,EACtDJ,EAAA,oBAAoB,SAAUK,CAAwB,EACrDJ,EAAA,oBAAoB,SAAUK,CAAyB,CAAA,CAC1E,EAEMJ,CACT"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.esm.js","sources":["../../src/utils.ts"],"sourcesContent":["import { onMounted, onUnmounted, ref } from 'vue';\nimport { AvatarParameters, Role } from '@/types';\n\nexport const getAvatar = (user: AvatarParameters | null | undefined): string => {\n if (user?.avatarUrl) {\n return user.avatarUrl;\n }\n if (user?.role === Role.Doctor) {\n return 'https://davinci-public.s3.eu-central-1.amazonaws.com/avatar_doctor.svg';\n } else {\n return 'https://davinci-public.s3.eu-central-1.amazonaws.com/avatar_patient.svg';\n }\n};\n\nenum MaxWidth {\n Mobile = 640,\n Tablet = 768,\n Desktop = 1024,\n LargeDesktop = 1280,\n ExtraLargeDesktop = 1536,\n}\n\nexport enum Device {\n Mobile = 'Mobile',\n Tablet = 'Tablet',\n Desktop = 'Desktop',\n}\n\nexport const useMatchDevice = () => {\n const mediaQueryMobile = window.matchMedia(`(max-width: ${MaxWidth.Mobile}px)`);\n const mediaQueryTablet = window.matchMedia(`(max-width: ${MaxWidth.Tablet}px)`);\n const mediaQueryDesktop = window.matchMedia(`(max-width: ${MaxWidth.Desktop}px)`);\n\n const device = ref<Device>(mediaQueryDesktop.matches ? Device.Desktop : mediaQueryTablet.matches ? Device.Tablet : Device.Mobile);\n\n const onMatchMobileMediaChange = () => {\n device.value = Device.Mobile;\n };\n\n const onMatchTabletMediaChange = () => {\n device.value = Device.Tablet;\n };\n\n const onMatchDesktopMediaChange = () => {\n device.value = Device.Desktop;\n };\n\n onMounted(() => {\n mediaQueryMobile.addEventListener('change', onMatchMobileMediaChange);\n mediaQueryTablet.addEventListener('change', onMatchTabletMediaChange);\n mediaQueryDesktop.addEventListener('change', onMatchDesktopMediaChange);\n });\n\n onUnmounted(() => {\n mediaQueryMobile.removeEventListener('change', onMatchMobileMediaChange);\n mediaQueryTablet.removeEventListener('change', onMatchTabletMediaChange);\n mediaQueryDesktop.removeEventListener('change', onMatchDesktopMediaChange);\n });\n\n return device;\n};\n"],"names":["getAvatar","user","Role","Device","useMatchDevice","mediaQueryMobile","mediaQueryTablet","mediaQueryDesktop","device","ref","onMatchMobileMediaChange","onMatchTabletMediaChange","onMatchDesktopMediaChange","onMounted","onUnmounted"],"mappings":"gGAGa,MAAAA,EAAaC,GACpBA,GAAA,MAAAA,EAAM,UACDA,EAAK,WAEVA,GAAA,YAAAA,EAAM,QAASC,EAAK,OACf,yEAEA,0EAYC,IAAAC,GAAAA,IACVA,EAAA,OAAS,SACTA,EAAA,OAAS,SACTA,EAAA,QAAU,UAHAA,IAAAA,GAAA,CAAA,CAAA,EAML,MAAMC,EAAiB,IAAM,CAClC,MAAMC,EAAmB,OAAO,WAAW,oBAAmC,EACxEC,EAAmB,OAAO,WAAW,oBAAmC,EACxEC,EAAoB,OAAO,WAAW,qBAAoC,EAE1EC,EAASC,EAAYF,EAAkB,QAAU,UAAiBD,EAAiB,QAAU,SAAgB,UAE7GI,EAA2B,IAAM,CACrCF,EAAO,MAAQ,QAAA,EAGXG,EAA2B,IAAM,CACrCH,EAAO,MAAQ,QAAA,EAGXI,EAA4B,IAAM,CACtCJ,EAAO,MAAQ,SAAA,EAGjB,OAAAK,EAAU,IAAM,CACGR,EAAA,iBAAiB,SAAUK,CAAwB,EACnDJ,EAAA,iBAAiB,SAAUK,CAAwB,EAClDJ,EAAA,iBAAiB,SAAUK,CAAyB,CAAA,CACvE,EAEDE,EAAY,IAAM,CACCT,EAAA,oBAAoB,SAAUK,CAAwB,EACtDJ,EAAA,oBAAoB,SAAUK,CAAwB,EACrDJ,EAAA,oBAAoB,SAAUK,CAAyB,CAAA,CAC1E,EAEMJ,CACT"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vue.plugin.cjs.js","sources":["../../src/vue.plugin.ts"],"sourcesContent":["import { defineValidationRules } from './forms/validation-rules';\n\nexport default {\n install: () => {\n defineValidationRules();\n },\n};\n"],"names":["vue_plugin","defineValidationRules"],"mappings":"+JAEeA,EAAA,CACb,QAAS,IAAM,CACSC,EAAAA,uBACxB,CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vue.plugin.esm.js","sources":["../../src/vue.plugin.ts"],"sourcesContent":["import { defineValidationRules } from './forms/validation-rules';\n\nexport default {\n install: () => {\n defineValidationRules();\n },\n};\n"],"names":["vue_plugin","defineValidationRules"],"mappings":"wEAEA,MAAeA,EAAA,CACb,QAAS,IAAM,CACSC,GACxB,CACF"}
|