sprintify-ui 0.10.65 → 0.10.66
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +266 -266
- package/dist/{BaseCkeditor-D6D4FPEb.js → BaseCkeditor-B4PbYw6a.js} +2 -2
- package/dist/sprintify-ui.es.js +3324 -3461
- package/dist/style.css +3 -3
- package/dist/tailwindcss/button.js +260 -260
- package/dist/tailwindcss/index.js +21 -21
- package/dist/tailwindcss/input.js +22 -22
- package/dist/tailwindcss/overlay.js +12 -12
- package/dist/tailwindcss/table.js +91 -91
- package/dist/tailwindcss/theme.js +52 -52
- package/dist/types/components/BaseActionButtons.vue.d.ts +1 -1
- package/dist/types/components/BaseActionItem.vue.d.ts +7 -10
- package/dist/types/components/BaseAddressForm.vue.d.ts +1 -1
- package/dist/types/components/BaseAlert.vue.d.ts +24 -11
- package/dist/types/components/BaseApp.vue.d.ts +14 -12
- package/dist/types/components/BaseAssign.vue.d.ts +1 -1
- package/dist/types/components/BaseAutocomplete.vue.d.ts +665 -455
- package/dist/types/components/BaseAutocompleteDrawer.vue.d.ts +119 -24
- package/dist/types/components/BaseAutocompleteFetch.vue.d.ts +1033 -412
- package/dist/types/components/BaseAvatarGroup.vue.d.ts +1 -1
- package/dist/types/components/BaseBadge.vue.d.ts +23 -11
- package/dist/types/components/BaseBelongsTo.vue.d.ts +998 -411
- package/dist/types/components/BaseBelongsToFetch.vue.d.ts +754 -371
- package/dist/types/components/BaseBoolean.vue.d.ts +1 -1
- package/dist/types/components/BaseBreadcrumbs.vue.d.ts +1 -1
- package/dist/types/components/BaseButton.vue.d.ts +78 -16
- package/dist/types/components/BaseButtonGroup.vue.d.ts +166 -15
- package/dist/types/components/BaseCard.vue.d.ts +26 -12
- package/dist/types/components/BaseCardRow.vue.d.ts +20 -11
- package/dist/types/components/BaseCharacterCounter.vue.d.ts +1 -1
- package/dist/types/components/BaseClipboard.vue.d.ts +45 -13
- package/dist/types/components/BaseCollapse.vue.d.ts +41 -20
- package/dist/types/components/BaseContainer.vue.d.ts +16 -11
- package/dist/types/components/BaseCounter.vue.d.ts +1 -1
- package/dist/types/components/BaseCropper.vue.d.ts +55 -30
- package/dist/types/components/BaseDataIterator.vue.d.ts +43 -42
- package/dist/types/components/BaseDataIteratorSectionBox.vue.d.ts +15 -12
- package/dist/types/components/BaseDataIteratorSectionColumns.vue.d.ts +1 -1
- package/dist/types/components/BaseDataIteratorSectionModal.vue.d.ts +19 -10
- package/dist/types/components/BaseDataTable.vue.d.ts +2090 -738
- package/dist/types/components/BaseDataTableTemplate.vue.d.ts +576 -100
- package/dist/types/components/BaseDatePicker.vue.d.ts +1 -1
- package/dist/types/components/BaseDateSelect.vue.d.ts +1 -1
- package/dist/types/components/BaseDescriptionList.vue.d.ts +12 -12
- package/dist/types/components/BaseDescriptionListItem.vue.d.ts +16 -15
- package/dist/types/components/BaseDialog.vue.d.ts +114 -413
- package/dist/types/components/BaseDisplayRelativeTime.vue.d.ts +55 -13
- package/dist/types/components/BaseDraggable.vue.d.ts +25 -16
- package/dist/types/components/BaseDropdown.vue.d.ts +155 -17
- package/dist/types/components/BaseDropdownAutocomplete.vue.d.ts +131 -16
- package/dist/types/components/BaseField.vue.d.ts +103 -12
- package/dist/types/components/BaseFieldI18n.vue.d.ts +1 -1
- package/dist/types/components/BaseFilePicker.vue.d.ts +35 -16
- package/dist/types/components/BaseFilePickerCrop.vue.d.ts +87 -42
- package/dist/types/components/BaseFileUploader.vue.d.ts +195 -29
- package/dist/types/components/BaseForm.vue.d.ts +161 -20
- package/dist/types/components/BaseGantt.vue.d.ts +1130 -409
- package/dist/types/components/BaseHasMany.vue.d.ts +590 -347
- package/dist/types/components/BaseHasManyFetch.vue.d.ts +602 -251
- package/dist/types/components/BaseHeader.vue.d.ts +1 -1
- package/dist/types/components/BaseIconPicker.vue.d.ts +1 -1
- package/dist/types/components/BaseInputError.vue.d.ts +23 -11
- package/dist/types/components/BaseJsonReaderItem.vue.d.ts +1 -1
- package/dist/types/components/BaseLayoutNotificationItemContent.vue.d.ts +1 -1
- package/dist/types/components/BaseLayoutSidebar.vue.d.ts +124 -16
- package/dist/types/components/BaseLayoutSidebarConfigurable.vue.d.ts +115 -13
- package/dist/types/components/BaseLayoutStacked.vue.d.ts +69 -22
- package/dist/types/components/BaseLayoutStackedConfigurable.vue.d.ts +120 -10
- package/dist/types/components/BaseLazy.vue.d.ts +20 -15
- package/dist/types/components/BaseMediaGallery.vue.d.ts +1 -1
- package/dist/types/components/BaseMediaGalleryItem.vue.d.ts +1 -1
- package/dist/types/components/BaseMediaItem.vue.d.ts +1 -1
- package/dist/types/components/BaseMediaLibrary.vue.d.ts +234 -34
- package/dist/types/components/BaseMediaListItem.vue.d.ts +1 -1
- package/dist/types/components/BaseMediaPicturesItem.vue.d.ts +1 -1
- package/dist/types/components/BaseMenu.vue.d.ts +233 -30
- package/dist/types/components/BaseMenuItem.vue.d.ts +1 -1
- package/dist/types/components/BaseModalCenter.vue.d.ts +88 -12
- package/dist/types/components/BaseModalSide.vue.d.ts +85 -12
- package/dist/types/components/BaseNavbar.vue.d.ts +88 -22
- package/dist/types/components/BaseNavbarItem.vue.d.ts +1 -1
- package/dist/types/components/BaseNavbarItemContent.vue.d.ts +1 -1
- package/dist/types/components/BaseNavbarSideItem.vue.d.ts +1 -1
- package/dist/types/components/BaseNavbarSideItemContent.vue.d.ts +1 -1
- package/dist/types/components/BasePagination.vue.d.ts +1 -1
- package/dist/types/components/BaseRadioGroup.vue.d.ts +113 -13
- package/dist/types/components/BaseReadMore.vue.d.ts +31 -12
- package/dist/types/components/BaseRichText.vue.d.ts +1 -1
- package/dist/types/components/BaseSelect.vue.d.ts +149 -12
- package/dist/types/components/BaseShortcut.vue.d.ts +1 -1
- package/dist/types/components/BaseSideNavigation.vue.d.ts +11 -12
- package/dist/types/components/BaseSideNavigationItem.vue.d.ts +22 -13
- package/dist/types/components/BaseSkeleton.vue.d.ts +3 -3
- package/dist/types/components/BaseStepper.vue.d.ts +1 -1
- package/dist/types/components/BaseSwitch.vue.d.ts +122 -13
- package/dist/types/components/BaseSystemAlert.vue.d.ts +58 -11
- package/dist/types/components/BaseTabItem.vue.d.ts +35 -18
- package/dist/types/components/BaseTable.vue.d.ts +29 -14
- package/dist/types/components/BaseTableBody.vue.d.ts +9 -12
- package/dist/types/components/BaseTableCell.vue.d.ts +40 -15
- package/dist/types/components/BaseTableColumn.vue.d.ts +3 -3
- package/dist/types/components/BaseTableHead.vue.d.ts +14 -12
- package/dist/types/components/BaseTableHeader.vue.d.ts +46 -17
- package/dist/types/components/BaseTableRow.vue.d.ts +40 -13
- package/dist/types/components/BaseTabs.vue.d.ts +21 -15
- package/dist/types/components/BaseTagAutocomplete.vue.d.ts +602 -203
- package/dist/types/components/BaseTagAutocompleteFetch.vue.d.ts +807 -348
- package/dist/types/components/BaseTextareaAutoresize.vue.d.ts +1 -1
- package/dist/types/components/BaseTimeline.vue.d.ts +1 -1
- package/dist/types/components/BaseTimelineItem.vue.d.ts +1 -1
- package/dist/types/components/BaseToast.vue.d.ts +1 -1
- package/dist/types/components/BaseTooltip.vue.d.ts +41 -15
- package/dist/types/components/BaseUniqueCode.vue.d.ts +1 -1
- package/dist/types/stories/PageInputSizes.vue.d.ts +1 -1
- package/dist/types/stories/PageShow.vue.d.ts +1 -1
- package/dist/types/svg/BaseEmptyState.vue.d.ts +1 -1
- package/dist/types/svg/BaseSpinnerSmall.vue.d.ts +1 -1
- package/package.json +135 -135
- package/src/assets/base-cropper.css +61 -61
- package/src/assets/base-date-picker.css +4 -4
- package/src/assets/base-rich-text.css +270 -270
- package/src/assets/base-spinner.css +18 -18
- package/src/assets/base-tabs.css +4 -4
- package/src/assets/base-time-picker.css +9 -9
- package/src/assets/flatpickr.css +247 -247
- package/src/assets/form.css +6 -6
- package/src/assets/google-pac.css +25 -25
- package/src/assets/main.css +56 -56
- package/src/assets/tailwind.css +2 -2
- package/src/changelog.mdx +6 -6
- package/src/components/BaseActionButtons.vue +76 -76
- package/src/components/BaseActionItem.vue +80 -80
- package/src/components/BaseActionItemButton.vue +75 -75
- package/src/components/BaseAddressForm.stories.js +114 -114
- package/src/components/BaseAddressForm.vue +382 -382
- package/src/components/BaseAlert.stories.js +75 -75
- package/src/components/BaseAlert.vue +101 -101
- package/src/components/BaseApp.vue +16 -16
- package/src/components/BaseAppDialogs.vue +126 -126
- package/src/components/BaseAppSnackbars.vue +40 -40
- package/src/components/BaseAssign.mdx +98 -98
- package/src/components/BaseAssign.stories.js +78 -78
- package/src/components/BaseAssign.vue +366 -366
- package/src/components/BaseAutocomplete.stories.js +243 -243
- package/src/components/BaseAutocomplete.vue +603 -603
- package/src/components/BaseAutocompleteDrawer.vue +386 -386
- package/src/components/BaseAutocompleteFetch.stories.js +224 -224
- package/src/components/BaseAutocompleteFetch.vue +314 -314
- package/src/components/BaseAvatar.stories.js +39 -39
- package/src/components/BaseAvatar.vue +164 -164
- package/src/components/BaseAvatarGroup.stories.js +71 -71
- package/src/components/BaseAvatarGroup.vue +148 -148
- package/src/components/BaseBadge.stories.js +130 -130
- package/src/components/BaseBadge.vue +97 -97
- package/src/components/BaseBelongsTo.stories.js +220 -220
- package/src/components/BaseBelongsTo.vue +164 -164
- package/src/components/BaseBelongsToFetch.stories.js +223 -223
- package/src/components/BaseBelongsToFetch.vue +213 -213
- package/src/components/BaseBoolean.stories.js +35 -35
- package/src/components/BaseBoolean.vue +26 -26
- package/src/components/BaseBreadcrumbs.stories.js +50 -50
- package/src/components/BaseBreadcrumbs.vue +109 -109
- package/src/components/BaseButton.stories.js +126 -126
- package/src/components/BaseButton.vue +279 -279
- package/src/components/BaseButtonGroup.stories.js +114 -114
- package/src/components/BaseButtonGroup.vue +193 -193
- package/src/components/BaseCard.stories.js +63 -63
- package/src/components/BaseCard.vue +49 -49
- package/src/components/BaseCardRow.vue +53 -53
- package/src/components/BaseCharacterCounter.stories.js +30 -30
- package/src/components/BaseCharacterCounter.vue +64 -64
- package/src/components/BaseCkeditor.vue +154 -154
- package/src/components/BaseClipboard.stories.js +55 -55
- package/src/components/BaseClipboard.vue +105 -105
- package/src/components/BaseCollapse.stories.js +168 -168
- package/src/components/BaseCollapse.vue +98 -98
- package/src/components/BaseColor.stories.js +66 -66
- package/src/components/BaseColor.vue +155 -155
- package/src/components/BaseContainer.stories.js +34 -34
- package/src/components/BaseContainer.vue +64 -64
- package/src/components/BaseCounter.stories.js +47 -47
- package/src/components/BaseCounter.vue +83 -83
- package/src/components/BaseCropper.stories.js +113 -113
- package/src/components/BaseCropper.vue +390 -390
- package/src/components/BaseCropperModal.stories.js +54 -54
- package/src/components/BaseCropperModal.vue +143 -143
- package/src/components/BaseDataIterator.stories.js +292 -292
- package/src/components/BaseDataIterator.vue +986 -986
- package/src/components/BaseDataIteratorSectionBox.vue +36 -36
- package/src/components/BaseDataIteratorSectionButton.vue +42 -42
- package/src/components/BaseDataIteratorSectionColumns.vue +150 -150
- package/src/components/BaseDataIteratorSectionModal.vue +41 -41
- package/src/components/BaseDataTable.stories.js +393 -393
- package/src/components/BaseDataTable.vue +966 -966
- package/src/components/BaseDataTableRowAction.vue +70 -70
- package/src/components/BaseDataTableTemplate.vue +831 -838
- package/src/components/BaseDatePicker.stories.js +166 -166
- package/src/components/BaseDatePicker.vue +372 -372
- package/src/components/BaseDateSelect.stories.js +68 -68
- package/src/components/BaseDateSelect.vue +222 -222
- package/src/components/BaseDescriptionList.stories.js +35 -35
- package/src/components/BaseDescriptionList.vue +13 -13
- package/src/components/BaseDescriptionListItem.vue +47 -47
- package/src/components/BaseDialog.stories.js +95 -95
- package/src/components/BaseDialog.vue +221 -221
- package/src/components/BaseDisplayRelativeTime.stories.js +47 -47
- package/src/components/BaseDisplayRelativeTime.vue +126 -126
- package/src/components/BaseDraggable.stories.js +34 -34
- package/src/components/BaseDraggable.vue +111 -111
- package/src/components/BaseDropdown.stories.js +164 -164
- package/src/components/BaseDropdown.vue +74 -74
- package/src/components/BaseDropdownAutocomplete.stories.js +208 -208
- package/src/components/BaseDropdownAutocomplete.vue +203 -203
- package/src/components/BaseField.vue +151 -151
- package/src/components/BaseFieldI18n.stories.js +37 -37
- package/src/components/BaseFieldI18n.vue +170 -170
- package/src/components/BaseFilePicker.stories.js +84 -84
- package/src/components/BaseFilePicker.vue +163 -163
- package/src/components/BaseFilePickerCrop.stories.js +135 -135
- package/src/components/BaseFilePickerCrop.vue +130 -130
- package/src/components/BaseFileUploader.stories.js +101 -101
- package/src/components/BaseFileUploader.vue +185 -185
- package/src/components/BaseForm.mdx +87 -87
- package/src/components/BaseForm.stories.js +133 -133
- package/src/components/BaseForm.vue +372 -372
- package/src/components/BaseGantt.stories.js +145 -145
- package/src/components/BaseGantt.vue +384 -384
- package/src/components/BaseHasMany.stories.js +211 -211
- package/src/components/BaseHasMany.vue +135 -135
- package/src/components/BaseHasManyFetch.stories.js +278 -278
- package/src/components/BaseHasManyFetch.vue +222 -222
- package/src/components/BaseHeader.stories.js +137 -137
- package/src/components/BaseHeader.vue +141 -141
- package/src/components/BaseIconPicker.stories.js +22 -22
- package/src/components/BaseIconPicker.vue +225 -225
- package/src/components/BaseInput.stories.js +202 -202
- package/src/components/BaseInput.vue +402 -402
- package/src/components/BaseInputError.vue +39 -39
- package/src/components/BaseInputLabel.stories.js +36 -36
- package/src/components/BaseInputLabel.vue +83 -83
- package/src/components/BaseInputPercent.stories.js +66 -66
- package/src/components/BaseInputPercent.vue +139 -139
- package/src/components/BaseJsonReader.stories.js +120 -120
- package/src/components/BaseJsonReader.vue +51 -51
- package/src/components/BaseJsonReaderItem.vue +119 -119
- package/src/components/BaseLayoutNotificationDropdown.vue +153 -153
- package/src/components/BaseLayoutNotificationItem.vue +53 -53
- package/src/components/BaseLayoutNotificationItemContent.vue +41 -41
- package/src/components/BaseLayoutSidebar.vue +300 -300
- package/src/components/BaseLayoutSidebarConfigurable.stories.js +217 -217
- package/src/components/BaseLayoutSidebarConfigurable.vue +202 -202
- package/src/components/BaseLayoutStacked.vue +78 -78
- package/src/components/BaseLayoutStackedConfigurable.stories.js +181 -181
- package/src/components/BaseLayoutStackedConfigurable.vue +196 -196
- package/src/components/BaseLazy.stories.js +59 -59
- package/src/components/BaseLazy.vue +80 -80
- package/src/components/BaseLoadingCover.stories.js +55 -55
- package/src/components/BaseLoadingCover.vue +101 -101
- package/src/components/BaseMediaGallery.vue +96 -96
- package/src/components/BaseMediaGalleryItem.vue +101 -101
- package/src/components/BaseMediaItem.stories.js +41 -41
- package/src/components/BaseMediaItem.vue +80 -80
- package/src/components/BaseMediaLibrary.stories.js +267 -267
- package/src/components/BaseMediaLibrary.vue +357 -357
- package/src/components/BaseMediaList.vue +67 -67
- package/src/components/BaseMediaListItem.vue +213 -213
- package/src/components/BaseMediaPictures.vue +64 -64
- package/src/components/BaseMediaPicturesItem.vue +100 -100
- package/src/components/BaseMediaPreview.stories.js +72 -72
- package/src/components/BaseMediaPreview.vue +106 -106
- package/src/components/BaseMenu.stories.js +134 -134
- package/src/components/BaseMenu.vue +187 -187
- package/src/components/BaseMenuItem.vue +177 -177
- package/src/components/BaseModalCenter.stories.js +68 -68
- package/src/components/BaseModalCenter.vue +128 -128
- package/src/components/BaseModalSide.stories.js +61 -61
- package/src/components/BaseModalSide.vue +130 -130
- package/src/components/BaseNavbar.stories.js +152 -152
- package/src/components/BaseNavbar.vue +191 -191
- package/src/components/BaseNavbarItem.vue +108 -108
- package/src/components/BaseNavbarItemContent.vue +124 -124
- package/src/components/BaseNavbarSideItem.vue +187 -187
- package/src/components/BaseNavbarSideItemContent.vue +126 -126
- package/src/components/BasePagination.stories.js +35 -35
- package/src/components/BasePagination.vue +266 -266
- package/src/components/BasePanel.stories.js +56 -56
- package/src/components/BasePanel.vue +42 -42
- package/src/components/BasePassword.stories.js +80 -80
- package/src/components/BasePassword.vue +87 -87
- package/src/components/BaseProgressCircle.stories.js +27 -27
- package/src/components/BaseProgressCircle.vue +80 -80
- package/src/components/BaseRadioGroup.stories.js +87 -87
- package/src/components/BaseRadioGroup.vue +124 -124
- package/src/components/BaseReadMore.stories.js +30 -30
- package/src/components/BaseReadMore.vue +73 -73
- package/src/components/BaseRichText.stories.js +90 -90
- package/src/components/BaseRichText.vue +87 -87
- package/src/components/BaseScrollColumn.vue +128 -128
- package/src/components/BaseSelect.stories.js +151 -151
- package/src/components/BaseSelect.vue +241 -241
- package/src/components/BaseShortcut.stories.js +100 -100
- package/src/components/BaseShortcut.vue +114 -114
- package/src/components/BaseSideNavigation.stories.js +85 -85
- package/src/components/BaseSideNavigation.vue +32 -32
- package/src/components/BaseSideNavigationItem.vue +99 -99
- package/src/components/BaseSkeleton.stories.js +36 -36
- package/src/components/BaseSkeleton.vue +40 -40
- package/src/components/BaseStatistic.stories.js +51 -51
- package/src/components/BaseStatistic.vue +98 -98
- package/src/components/BaseStepper.stories.js +94 -94
- package/src/components/BaseStepper.vue +72 -72
- package/src/components/BaseStepperItem.stories.js +65 -65
- package/src/components/BaseStepperItem.vue +149 -149
- package/src/components/BaseSwitch.stories.js +133 -133
- package/src/components/BaseSwitch.vue +228 -226
- package/src/components/BaseSystemAlert.stories.js +63 -63
- package/src/components/BaseSystemAlert.vue +89 -89
- package/src/components/BaseTabItem.vue +192 -192
- package/src/components/BaseTable.stories.js +214 -214
- package/src/components/BaseTable.vue +111 -111
- package/src/components/BaseTableBody.vue +14 -14
- package/src/components/BaseTableCell.vue +204 -204
- package/src/components/BaseTableColumn.vue +140 -140
- package/src/components/BaseTableHead.vue +38 -38
- package/src/components/BaseTableHeader.vue +139 -139
- package/src/components/BaseTableRow.vue +197 -197
- package/src/components/BaseTabs.stories.js +165 -165
- package/src/components/BaseTabs.vue +203 -203
- package/src/components/BaseTagAutocomplete.stories.js +271 -271
- package/src/components/BaseTagAutocomplete.vue +565 -565
- package/src/components/BaseTagAutocompleteFetch.stories.js +211 -211
- package/src/components/BaseTagAutocompleteFetch.vue +237 -237
- package/src/components/BaseTextarea.stories.js +81 -81
- package/src/components/BaseTextarea.vue +138 -138
- package/src/components/BaseTextareaAutoresize.stories.js +125 -125
- package/src/components/BaseTextareaAutoresize.vue +187 -187
- package/src/components/BaseTimePicker.stories.js +68 -68
- package/src/components/BaseTimePicker.vue +379 -379
- package/src/components/BaseTimeline.stories.js +55 -55
- package/src/components/BaseTimeline.vue +38 -38
- package/src/components/BaseTimelineItem.stories.js +77 -77
- package/src/components/BaseTimelineItem.vue +90 -90
- package/src/components/BaseToast.stories.js +50 -50
- package/src/components/BaseToast.vue +43 -43
- package/src/components/BaseTooltip.stories.js +65 -65
- package/src/components/BaseTooltip.vue +93 -93
- package/src/components/BaseUniqueCode.stories.js +36 -36
- package/src/components/BaseUniqueCode.vue +183 -183
- package/src/components/SlotComponent.ts +37 -37
- package/src/components/index.ts +222 -222
- package/src/composables/breakpoints.ts +94 -94
- package/src/composables/clickOutside.ts +80 -80
- package/src/composables/field.ts +156 -156
- package/src/composables/hasOptions.ts +86 -86
- package/src/composables/inputSize.ts +35 -35
- package/src/composables/isLastColumn.ts +30 -30
- package/src/composables/mediaQuery.ts +42 -42
- package/src/composables/modal.ts +73 -73
- package/src/composables/paginatedData.ts +76 -76
- package/src/composables/tooltip.ts +84 -84
- package/src/constants/MyConstants.ts +1 -1
- package/src/constants/index.ts +5 -5
- package/src/env.d.ts +15 -15
- package/src/i18n/index.ts +60 -60
- package/src/index.ts +138 -138
- package/src/lang/en.json +101 -101
- package/src/lang/fr.json +101 -101
- package/src/services/gantt/format.ts +133 -133
- package/src/services/gantt/timescale.ts +250 -250
- package/src/services/gantt/types.ts +81 -81
- package/src/services/table/classes.ts +37 -37
- package/src/services/table/customKeyActions.ts +2 -2
- package/src/services/table/types.ts +27 -27
- package/src/stores/dialogs.ts +48 -48
- package/src/stores/i18n.ts +14 -14
- package/src/stores/snackbars.ts +47 -47
- package/src/stores/systemAlerts.ts +32 -32
- package/src/stories/InputSizes.stories.js +21 -21
- package/src/stories/List.stories.js +136 -136
- package/src/stories/PageInputSizes.vue +228 -228
- package/src/stories/PageShow.vue +423 -423
- package/src/stories/Show.stories.js +21 -21
- package/src/svg/BaseEmptyState.vue +38 -38
- package/src/svg/BaseSpinnerLarge.vue +40 -40
- package/src/svg/BaseSpinnerSmall.vue +13 -13
- package/src/types/Color.ts +9 -9
- package/src/types/Country.ts +4 -4
- package/src/types/ImagePickerResult.ts +5 -5
- package/src/types/Media.ts +10 -10
- package/src/types/Notification.ts +11 -11
- package/src/types/Region.ts +5 -5
- package/src/types/Status.ts +5 -5
- package/src/types/StepperItem.ts +8 -8
- package/src/types/ToolbarOption.ts +1 -1
- package/src/types/UploadedFile.ts +11 -11
- package/src/types/User.ts +7 -7
- package/src/types/index.ts +302 -302
- package/src/utils/blob.ts +30 -30
- package/src/utils/colors.ts +239 -239
- package/src/utils/cropper/avatar.ts +33 -33
- package/src/utils/cropper/cover.ts +41 -41
- package/src/utils/cropper/presetInterface.ts +16 -16
- package/src/utils/cropper/presets.ts +7 -7
- package/src/utils/deepIncludes.ts +76 -76
- package/src/utils/fileSizeFormat.ts +15 -15
- package/src/utils/fileValidations.ts +26 -26
- package/src/utils/getApiData.ts +11 -11
- package/src/utils/index.ts +18 -18
- package/src/utils/resizeImageFromURI.ts +118 -118
- package/src/utils/scrollPreventer.ts +11 -11
- package/src/utils/sizeBehaviors.ts +3 -3
- package/src/utils/sizes.ts +38 -38
- package/src/utils/slots.ts +12 -12
- package/src/utils/storage.ts +36 -36
- package/src/utils/toHumanList.ts +20 -20
- package/src/utils/uuid.ts +7 -7
|
@@ -1,168 +1,168 @@
|
|
|
1
|
-
import { method } from "lodash";
|
|
2
|
-
import BaseCollapse from "./BaseCollapse.vue";
|
|
3
|
-
|
|
4
|
-
export default {
|
|
5
|
-
title: "Components/BaseCollapse",
|
|
6
|
-
component: BaseCollapse,
|
|
7
|
-
args: {},
|
|
8
|
-
argTypes: {
|
|
9
|
-
defaultOpen: {
|
|
10
|
-
control: { type: "boolean" },
|
|
11
|
-
},
|
|
12
|
-
icon: {
|
|
13
|
-
control: { type: "text" },
|
|
14
|
-
},
|
|
15
|
-
isOpenIconClass: {
|
|
16
|
-
control: { type: "text" },
|
|
17
|
-
},
|
|
18
|
-
isCloseIconClass: {
|
|
19
|
-
control: { type: "text" },
|
|
20
|
-
},
|
|
21
|
-
twIcon: {
|
|
22
|
-
control: { type: "text" },
|
|
23
|
-
},
|
|
24
|
-
twHeader: {
|
|
25
|
-
control: { type: "text" },
|
|
26
|
-
},
|
|
27
|
-
twContent: {
|
|
28
|
-
control: { type: "text" },
|
|
29
|
-
},
|
|
30
|
-
twTitle: {
|
|
31
|
-
control: { type: "text" },
|
|
32
|
-
},
|
|
33
|
-
iconPosition: {
|
|
34
|
-
control: { type: "select" },
|
|
35
|
-
options: ["left", "right"],
|
|
36
|
-
},
|
|
37
|
-
},
|
|
38
|
-
};
|
|
39
|
-
|
|
40
|
-
const Template = (args) => ({
|
|
41
|
-
components: { BaseCollapse },
|
|
42
|
-
setup() {
|
|
43
|
-
return { args };
|
|
44
|
-
},
|
|
45
|
-
template: `
|
|
46
|
-
<BaseCollapse v-bind="args" class="mb-1">
|
|
47
|
-
<template #title>
|
|
48
|
-
<h6 class="font-semibold"> Qu'est-ce que le Lorem Ipsum? </h6>
|
|
49
|
-
</template>
|
|
50
|
-
<template #content={isOpen}>
|
|
51
|
-
<p class="p-3">
|
|
52
|
-
Le Lorem Ipsum est simplement du faux texte employé dans la composition et la mise en page avant impression. Le Lorem Ipsum est le faux texte standard de l'imprimerie depuis les années 1500, quand un imprimeur anonyme assembla ensemble des morceaux de texte pour réaliser un livre spécimen de polices de texte.
|
|
53
|
-
</p>
|
|
54
|
-
</template>
|
|
55
|
-
</BaseCollapse>
|
|
56
|
-
|
|
57
|
-
<BaseCollapse v-bind="args" class="mb-1">
|
|
58
|
-
<template #title>
|
|
59
|
-
<h6 class="font-semibold"> Qu'est-ce que le Lorem Ipsum? </h6>
|
|
60
|
-
</template>
|
|
61
|
-
<template #content>
|
|
62
|
-
<p class="p-3">
|
|
63
|
-
Le Lorem Ipsum est simplement du faux texte employé dans la composition et la mise en page avant impression. Le Lorem Ipsum est le faux texte standard de l'imprimerie depuis les années 1500, quand un imprimeur anonyme assembla ensemble des morceaux de texte pour réaliser un livre spécimen de polices de texte.
|
|
64
|
-
</p>
|
|
65
|
-
</template>
|
|
66
|
-
</BaseCollapse>
|
|
67
|
-
|
|
68
|
-
<BaseCollapse v-bind="args" class="mb-1">
|
|
69
|
-
<template #title>
|
|
70
|
-
<h6 class="font-semibold"> Qu'est-ce que le Lorem Ipsum? </h6>
|
|
71
|
-
</template>
|
|
72
|
-
<template #content>
|
|
73
|
-
<p class="p-3">
|
|
74
|
-
Le Lorem Ipsum est simplement du faux texte employé dans la composition et la mise en page avant impression. Le Lorem Ipsum est le faux texte standard de l'imprimerie depuis les années 1500, quand un imprimeur anonyme assembla ensemble des morceaux de texte pour réaliser un livre spécimen de polices de texte.
|
|
75
|
-
</p>
|
|
76
|
-
</template>
|
|
77
|
-
</BaseCollapse>
|
|
78
|
-
|
|
79
|
-
`,
|
|
80
|
-
});
|
|
81
|
-
|
|
82
|
-
export const Demo = Template.bind({});
|
|
83
|
-
Demo.args = {
|
|
84
|
-
defaultOpen: false,
|
|
85
|
-
};
|
|
86
|
-
|
|
87
|
-
const CustomHeaderTemplate = (args) => ({
|
|
88
|
-
components: { BaseCollapse },
|
|
89
|
-
setup() {
|
|
90
|
-
return { args };
|
|
91
|
-
},
|
|
92
|
-
method: {
|
|
93
|
-
toggle() {
|
|
94
|
-
this.defaultOpen = !this.defaultOpen;
|
|
95
|
-
},
|
|
96
|
-
},
|
|
97
|
-
template: `
|
|
98
|
-
|
|
99
|
-
<BaseCollapse v-bind="args" class="mb-3">
|
|
100
|
-
<template #header={toggle}>
|
|
101
|
-
<h6 class="cursor-pointer hover:text-slate-400" @click="toggle()"> Qu'est-ce que le Lorem Ipsum? </h6>
|
|
102
|
-
</template>
|
|
103
|
-
<template #content>
|
|
104
|
-
<p class="p-3">
|
|
105
|
-
Le Lorem Ipsum est simplement du faux texte employé dans la composition et la mise en page avant impression. Le Lorem Ipsum est le faux texte standard de l'imprimerie depuis les années 1500, quand un imprimeur anonyme assembla ensemble des morceaux de texte pour réaliser un livre spécimen de polices de texte.
|
|
106
|
-
</p>
|
|
107
|
-
</template>
|
|
108
|
-
</BaseCollapse>
|
|
109
|
-
|
|
110
|
-
<BaseCollapse v-bind="args" class="mb-3">
|
|
111
|
-
<template #header={toggle}>
|
|
112
|
-
<h6 class="cursor-pointer hover:text-slate-400" @click="toggle()"> Qu'est-ce que le Lorem Ipsum? </h6>
|
|
113
|
-
</template>
|
|
114
|
-
<template #content>
|
|
115
|
-
<p class="p-3">
|
|
116
|
-
Le Lorem Ipsum est simplement du faux texte employé dans la composition et la mise en page avant impression. Le Lorem Ipsum est le faux texte standard de l'imprimerie depuis les années 1500, quand un imprimeur anonyme assembla ensemble des morceaux de texte pour réaliser un livre spécimen de polices de texte.
|
|
117
|
-
</p>
|
|
118
|
-
</template>
|
|
119
|
-
</BaseCollapse>
|
|
120
|
-
|
|
121
|
-
<BaseCollapse v-bind="args" class="mb-3">
|
|
122
|
-
<template #header={toggle}>
|
|
123
|
-
<h6 class="cursor-pointer hover:text-slate-400" @click="toggle()"> Qu'est-ce que le Lorem Ipsum? </h6>
|
|
124
|
-
</template>
|
|
125
|
-
<template #content>
|
|
126
|
-
<p class="p-3">
|
|
127
|
-
Le Lorem Ipsum est simplement du faux texte employé dans la composition et la mise en page avant impression. Le Lorem Ipsum est le faux texte standard de l'imprimerie depuis les années 1500, quand un imprimeur anonyme assembla ensemble des morceaux de texte pour réaliser un livre spécimen de polices de texte.
|
|
128
|
-
</p>
|
|
129
|
-
</template>
|
|
130
|
-
</BaseCollapse>
|
|
131
|
-
|
|
132
|
-
`,
|
|
133
|
-
argTypes: {
|
|
134
|
-
defaultOpen: {
|
|
135
|
-
control: { type: "boolean" },
|
|
136
|
-
},
|
|
137
|
-
icon: {
|
|
138
|
-
control: { type: "text" },
|
|
139
|
-
},
|
|
140
|
-
isOpenIconClass: {
|
|
141
|
-
control: { type: "text" },
|
|
142
|
-
},
|
|
143
|
-
isCloseIconClass: {
|
|
144
|
-
control: { type: "text" },
|
|
145
|
-
},
|
|
146
|
-
twIcon: {
|
|
147
|
-
control: { type: "text" },
|
|
148
|
-
},
|
|
149
|
-
twHeader: {
|
|
150
|
-
control: { type: "text" },
|
|
151
|
-
},
|
|
152
|
-
twContent: {
|
|
153
|
-
control: { type: "text" },
|
|
154
|
-
},
|
|
155
|
-
twTitle: {
|
|
156
|
-
control: { type: "text" },
|
|
157
|
-
},
|
|
158
|
-
iconPosition: {
|
|
159
|
-
control: { type: "select" },
|
|
160
|
-
options: ["left", "right"],
|
|
161
|
-
},
|
|
162
|
-
},
|
|
163
|
-
});
|
|
164
|
-
export const CustomHeader = CustomHeaderTemplate.bind({});
|
|
165
|
-
|
|
166
|
-
CustomHeader.args = {
|
|
167
|
-
defaultOpen: false,
|
|
168
|
-
};
|
|
1
|
+
import { method } from "lodash";
|
|
2
|
+
import BaseCollapse from "./BaseCollapse.vue";
|
|
3
|
+
|
|
4
|
+
export default {
|
|
5
|
+
title: "Components/BaseCollapse",
|
|
6
|
+
component: BaseCollapse,
|
|
7
|
+
args: {},
|
|
8
|
+
argTypes: {
|
|
9
|
+
defaultOpen: {
|
|
10
|
+
control: { type: "boolean" },
|
|
11
|
+
},
|
|
12
|
+
icon: {
|
|
13
|
+
control: { type: "text" },
|
|
14
|
+
},
|
|
15
|
+
isOpenIconClass: {
|
|
16
|
+
control: { type: "text" },
|
|
17
|
+
},
|
|
18
|
+
isCloseIconClass: {
|
|
19
|
+
control: { type: "text" },
|
|
20
|
+
},
|
|
21
|
+
twIcon: {
|
|
22
|
+
control: { type: "text" },
|
|
23
|
+
},
|
|
24
|
+
twHeader: {
|
|
25
|
+
control: { type: "text" },
|
|
26
|
+
},
|
|
27
|
+
twContent: {
|
|
28
|
+
control: { type: "text" },
|
|
29
|
+
},
|
|
30
|
+
twTitle: {
|
|
31
|
+
control: { type: "text" },
|
|
32
|
+
},
|
|
33
|
+
iconPosition: {
|
|
34
|
+
control: { type: "select" },
|
|
35
|
+
options: ["left", "right"],
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
const Template = (args) => ({
|
|
41
|
+
components: { BaseCollapse },
|
|
42
|
+
setup() {
|
|
43
|
+
return { args };
|
|
44
|
+
},
|
|
45
|
+
template: `
|
|
46
|
+
<BaseCollapse v-bind="args" class="mb-1">
|
|
47
|
+
<template #title>
|
|
48
|
+
<h6 class="font-semibold"> Qu'est-ce que le Lorem Ipsum? </h6>
|
|
49
|
+
</template>
|
|
50
|
+
<template #content={isOpen}>
|
|
51
|
+
<p class="p-3">
|
|
52
|
+
Le Lorem Ipsum est simplement du faux texte employé dans la composition et la mise en page avant impression. Le Lorem Ipsum est le faux texte standard de l'imprimerie depuis les années 1500, quand un imprimeur anonyme assembla ensemble des morceaux de texte pour réaliser un livre spécimen de polices de texte.
|
|
53
|
+
</p>
|
|
54
|
+
</template>
|
|
55
|
+
</BaseCollapse>
|
|
56
|
+
|
|
57
|
+
<BaseCollapse v-bind="args" class="mb-1">
|
|
58
|
+
<template #title>
|
|
59
|
+
<h6 class="font-semibold"> Qu'est-ce que le Lorem Ipsum? </h6>
|
|
60
|
+
</template>
|
|
61
|
+
<template #content>
|
|
62
|
+
<p class="p-3">
|
|
63
|
+
Le Lorem Ipsum est simplement du faux texte employé dans la composition et la mise en page avant impression. Le Lorem Ipsum est le faux texte standard de l'imprimerie depuis les années 1500, quand un imprimeur anonyme assembla ensemble des morceaux de texte pour réaliser un livre spécimen de polices de texte.
|
|
64
|
+
</p>
|
|
65
|
+
</template>
|
|
66
|
+
</BaseCollapse>
|
|
67
|
+
|
|
68
|
+
<BaseCollapse v-bind="args" class="mb-1">
|
|
69
|
+
<template #title>
|
|
70
|
+
<h6 class="font-semibold"> Qu'est-ce que le Lorem Ipsum? </h6>
|
|
71
|
+
</template>
|
|
72
|
+
<template #content>
|
|
73
|
+
<p class="p-3">
|
|
74
|
+
Le Lorem Ipsum est simplement du faux texte employé dans la composition et la mise en page avant impression. Le Lorem Ipsum est le faux texte standard de l'imprimerie depuis les années 1500, quand un imprimeur anonyme assembla ensemble des morceaux de texte pour réaliser un livre spécimen de polices de texte.
|
|
75
|
+
</p>
|
|
76
|
+
</template>
|
|
77
|
+
</BaseCollapse>
|
|
78
|
+
|
|
79
|
+
`,
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
export const Demo = Template.bind({});
|
|
83
|
+
Demo.args = {
|
|
84
|
+
defaultOpen: false,
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
const CustomHeaderTemplate = (args) => ({
|
|
88
|
+
components: { BaseCollapse },
|
|
89
|
+
setup() {
|
|
90
|
+
return { args };
|
|
91
|
+
},
|
|
92
|
+
method: {
|
|
93
|
+
toggle() {
|
|
94
|
+
this.defaultOpen = !this.defaultOpen;
|
|
95
|
+
},
|
|
96
|
+
},
|
|
97
|
+
template: `
|
|
98
|
+
|
|
99
|
+
<BaseCollapse v-bind="args" class="mb-3">
|
|
100
|
+
<template #header={toggle}>
|
|
101
|
+
<h6 class="cursor-pointer hover:text-slate-400" @click="toggle()"> Qu'est-ce que le Lorem Ipsum? </h6>
|
|
102
|
+
</template>
|
|
103
|
+
<template #content>
|
|
104
|
+
<p class="p-3">
|
|
105
|
+
Le Lorem Ipsum est simplement du faux texte employé dans la composition et la mise en page avant impression. Le Lorem Ipsum est le faux texte standard de l'imprimerie depuis les années 1500, quand un imprimeur anonyme assembla ensemble des morceaux de texte pour réaliser un livre spécimen de polices de texte.
|
|
106
|
+
</p>
|
|
107
|
+
</template>
|
|
108
|
+
</BaseCollapse>
|
|
109
|
+
|
|
110
|
+
<BaseCollapse v-bind="args" class="mb-3">
|
|
111
|
+
<template #header={toggle}>
|
|
112
|
+
<h6 class="cursor-pointer hover:text-slate-400" @click="toggle()"> Qu'est-ce que le Lorem Ipsum? </h6>
|
|
113
|
+
</template>
|
|
114
|
+
<template #content>
|
|
115
|
+
<p class="p-3">
|
|
116
|
+
Le Lorem Ipsum est simplement du faux texte employé dans la composition et la mise en page avant impression. Le Lorem Ipsum est le faux texte standard de l'imprimerie depuis les années 1500, quand un imprimeur anonyme assembla ensemble des morceaux de texte pour réaliser un livre spécimen de polices de texte.
|
|
117
|
+
</p>
|
|
118
|
+
</template>
|
|
119
|
+
</BaseCollapse>
|
|
120
|
+
|
|
121
|
+
<BaseCollapse v-bind="args" class="mb-3">
|
|
122
|
+
<template #header={toggle}>
|
|
123
|
+
<h6 class="cursor-pointer hover:text-slate-400" @click="toggle()"> Qu'est-ce que le Lorem Ipsum? </h6>
|
|
124
|
+
</template>
|
|
125
|
+
<template #content>
|
|
126
|
+
<p class="p-3">
|
|
127
|
+
Le Lorem Ipsum est simplement du faux texte employé dans la composition et la mise en page avant impression. Le Lorem Ipsum est le faux texte standard de l'imprimerie depuis les années 1500, quand un imprimeur anonyme assembla ensemble des morceaux de texte pour réaliser un livre spécimen de polices de texte.
|
|
128
|
+
</p>
|
|
129
|
+
</template>
|
|
130
|
+
</BaseCollapse>
|
|
131
|
+
|
|
132
|
+
`,
|
|
133
|
+
argTypes: {
|
|
134
|
+
defaultOpen: {
|
|
135
|
+
control: { type: "boolean" },
|
|
136
|
+
},
|
|
137
|
+
icon: {
|
|
138
|
+
control: { type: "text" },
|
|
139
|
+
},
|
|
140
|
+
isOpenIconClass: {
|
|
141
|
+
control: { type: "text" },
|
|
142
|
+
},
|
|
143
|
+
isCloseIconClass: {
|
|
144
|
+
control: { type: "text" },
|
|
145
|
+
},
|
|
146
|
+
twIcon: {
|
|
147
|
+
control: { type: "text" },
|
|
148
|
+
},
|
|
149
|
+
twHeader: {
|
|
150
|
+
control: { type: "text" },
|
|
151
|
+
},
|
|
152
|
+
twContent: {
|
|
153
|
+
control: { type: "text" },
|
|
154
|
+
},
|
|
155
|
+
twTitle: {
|
|
156
|
+
control: { type: "text" },
|
|
157
|
+
},
|
|
158
|
+
iconPosition: {
|
|
159
|
+
control: { type: "select" },
|
|
160
|
+
options: ["left", "right"],
|
|
161
|
+
},
|
|
162
|
+
},
|
|
163
|
+
});
|
|
164
|
+
export const CustomHeader = CustomHeaderTemplate.bind({});
|
|
165
|
+
|
|
166
|
+
CustomHeader.args = {
|
|
167
|
+
defaultOpen: false,
|
|
168
|
+
};
|
|
@@ -1,98 +1,98 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div>
|
|
3
|
-
<div>
|
|
4
|
-
<slot
|
|
5
|
-
name="header"
|
|
6
|
-
:open="isOpen"
|
|
7
|
-
:toggle="toggle"
|
|
8
|
-
>
|
|
9
|
-
<button
|
|
10
|
-
:class="headerClass"
|
|
11
|
-
type="button"
|
|
12
|
-
@click="toggle()"
|
|
13
|
-
>
|
|
14
|
-
<BaseIcon
|
|
15
|
-
v-if="iconPosition === 'left'"
|
|
16
|
-
:class="internalIconClass"
|
|
17
|
-
:icon="icon"
|
|
18
|
-
/>
|
|
19
|
-
|
|
20
|
-
<div :class="internalTitleClass">
|
|
21
|
-
<slot
|
|
22
|
-
name="title"
|
|
23
|
-
:open="isOpen"
|
|
24
|
-
/>
|
|
25
|
-
</div>
|
|
26
|
-
<BaseIcon
|
|
27
|
-
v-if="iconPosition === 'right'"
|
|
28
|
-
:class="internalIconClass"
|
|
29
|
-
:icon="icon"
|
|
30
|
-
/>
|
|
31
|
-
</button>
|
|
32
|
-
</slot>
|
|
33
|
-
</div>
|
|
34
|
-
|
|
35
|
-
<div
|
|
36
|
-
v-show="isOpen"
|
|
37
|
-
:class="internalContentClass"
|
|
38
|
-
>
|
|
39
|
-
<slot
|
|
40
|
-
name="content"
|
|
41
|
-
:open="isOpen"
|
|
42
|
-
/>
|
|
43
|
-
</div>
|
|
44
|
-
</div>
|
|
45
|
-
</template>
|
|
46
|
-
|
|
47
|
-
<script lang="ts" setup>
|
|
48
|
-
|
|
49
|
-
import { twMerge } from 'tailwind-merge';
|
|
50
|
-
|
|
51
|
-
const internalIconClass = computed(() => {
|
|
52
|
-
const base = "w-6 h-6 flex items-center justify-center transition duration-300 ease-in-out transform cursor-pointer";
|
|
53
|
-
|
|
54
|
-
return twMerge(base, props.twIcon, isOpen.value ? props.isOpenIconClass : props.isCloseIconClass,);
|
|
55
|
-
});
|
|
56
|
-
|
|
57
|
-
const headerClass = computed(() => {
|
|
58
|
-
return twMerge('flex items-center w-full space-x-1', props.twHeader);
|
|
59
|
-
});
|
|
60
|
-
|
|
61
|
-
const internalContentClass = computed(() => {
|
|
62
|
-
return twMerge('transition duration-300 ease-in-out transform', props.twContent);
|
|
63
|
-
});
|
|
64
|
-
|
|
65
|
-
const internalTitleClass = computed(() => {
|
|
66
|
-
return twMerge(props.twTitle, '');
|
|
67
|
-
});
|
|
68
|
-
|
|
69
|
-
function toggle() {
|
|
70
|
-
isOpen.value = !isOpen.value;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
const props = withDefaults(defineProps<{
|
|
75
|
-
defaultOpen?: boolean;
|
|
76
|
-
icon?: string;
|
|
77
|
-
iconPosition?: 'left' | 'right';
|
|
78
|
-
isOpenIconClass?: string;
|
|
79
|
-
isCloseIconClass?: string;
|
|
80
|
-
twIcon?: string | string[] | null;
|
|
81
|
-
twHeader?: string | string[] | null;
|
|
82
|
-
twTitle?: string | string[] | null;
|
|
83
|
-
twContent?: string | string[] | null;
|
|
84
|
-
}>(), {
|
|
85
|
-
defaultOpen: true,
|
|
86
|
-
icon: 'heroicons:chevron-down-16-solid',
|
|
87
|
-
iconPosition: 'left',
|
|
88
|
-
twIcon: null,
|
|
89
|
-
twHeader: null,
|
|
90
|
-
twTitle: null,
|
|
91
|
-
twContent: null,
|
|
92
|
-
isOpenIconClass: '-rotate-0',
|
|
93
|
-
isCloseIconClass: '-rotate-90',
|
|
94
|
-
});
|
|
95
|
-
|
|
96
|
-
const isOpen = ref(props.defaultOpen as boolean);
|
|
97
|
-
|
|
98
|
-
</script>
|
|
1
|
+
<template>
|
|
2
|
+
<div>
|
|
3
|
+
<div>
|
|
4
|
+
<slot
|
|
5
|
+
name="header"
|
|
6
|
+
:open="isOpen"
|
|
7
|
+
:toggle="toggle"
|
|
8
|
+
>
|
|
9
|
+
<button
|
|
10
|
+
:class="headerClass"
|
|
11
|
+
type="button"
|
|
12
|
+
@click="toggle()"
|
|
13
|
+
>
|
|
14
|
+
<BaseIcon
|
|
15
|
+
v-if="iconPosition === 'left'"
|
|
16
|
+
:class="internalIconClass"
|
|
17
|
+
:icon="icon"
|
|
18
|
+
/>
|
|
19
|
+
|
|
20
|
+
<div :class="internalTitleClass">
|
|
21
|
+
<slot
|
|
22
|
+
name="title"
|
|
23
|
+
:open="isOpen"
|
|
24
|
+
/>
|
|
25
|
+
</div>
|
|
26
|
+
<BaseIcon
|
|
27
|
+
v-if="iconPosition === 'right'"
|
|
28
|
+
:class="internalIconClass"
|
|
29
|
+
:icon="icon"
|
|
30
|
+
/>
|
|
31
|
+
</button>
|
|
32
|
+
</slot>
|
|
33
|
+
</div>
|
|
34
|
+
|
|
35
|
+
<div
|
|
36
|
+
v-show="isOpen"
|
|
37
|
+
:class="internalContentClass"
|
|
38
|
+
>
|
|
39
|
+
<slot
|
|
40
|
+
name="content"
|
|
41
|
+
:open="isOpen"
|
|
42
|
+
/>
|
|
43
|
+
</div>
|
|
44
|
+
</div>
|
|
45
|
+
</template>
|
|
46
|
+
|
|
47
|
+
<script lang="ts" setup>
|
|
48
|
+
|
|
49
|
+
import { twMerge } from 'tailwind-merge';
|
|
50
|
+
|
|
51
|
+
const internalIconClass = computed(() => {
|
|
52
|
+
const base = "w-6 h-6 flex items-center justify-center transition duration-300 ease-in-out transform cursor-pointer";
|
|
53
|
+
|
|
54
|
+
return twMerge(base, props.twIcon, isOpen.value ? props.isOpenIconClass : props.isCloseIconClass,);
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
const headerClass = computed(() => {
|
|
58
|
+
return twMerge('flex items-center w-full space-x-1', props.twHeader);
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
const internalContentClass = computed(() => {
|
|
62
|
+
return twMerge('transition duration-300 ease-in-out transform', props.twContent);
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
const internalTitleClass = computed(() => {
|
|
66
|
+
return twMerge(props.twTitle, '');
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
function toggle() {
|
|
70
|
+
isOpen.value = !isOpen.value;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
const props = withDefaults(defineProps<{
|
|
75
|
+
defaultOpen?: boolean;
|
|
76
|
+
icon?: string;
|
|
77
|
+
iconPosition?: 'left' | 'right';
|
|
78
|
+
isOpenIconClass?: string;
|
|
79
|
+
isCloseIconClass?: string;
|
|
80
|
+
twIcon?: string | string[] | null;
|
|
81
|
+
twHeader?: string | string[] | null;
|
|
82
|
+
twTitle?: string | string[] | null;
|
|
83
|
+
twContent?: string | string[] | null;
|
|
84
|
+
}>(), {
|
|
85
|
+
defaultOpen: true,
|
|
86
|
+
icon: 'heroicons:chevron-down-16-solid',
|
|
87
|
+
iconPosition: 'left',
|
|
88
|
+
twIcon: null,
|
|
89
|
+
twHeader: null,
|
|
90
|
+
twTitle: null,
|
|
91
|
+
twContent: null,
|
|
92
|
+
isOpenIconClass: '-rotate-0',
|
|
93
|
+
isCloseIconClass: '-rotate-90',
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
const isOpen = ref(props.defaultOpen as boolean);
|
|
97
|
+
|
|
98
|
+
</script>
|
|
@@ -1,66 +1,66 @@
|
|
|
1
|
-
import { createFieldStory, sizes } from "../../.storybook/utils";
|
|
2
|
-
import BaseColor from "./BaseColor.vue";
|
|
3
|
-
import ShowValue from "../../.storybook/components/ShowValue.vue";
|
|
4
|
-
|
|
5
|
-
export default {
|
|
6
|
-
title: "Form/BaseColor",
|
|
7
|
-
component: BaseColor,
|
|
8
|
-
decorators: [() => ({ template: '<div class="mb-36"><story/></div>' })],
|
|
9
|
-
argTypes: {
|
|
10
|
-
size: {
|
|
11
|
-
control: { type: "select" },
|
|
12
|
-
options: sizes,
|
|
13
|
-
},
|
|
14
|
-
},
|
|
15
|
-
};
|
|
16
|
-
|
|
17
|
-
const Template = (args) => ({
|
|
18
|
-
components: { BaseColor, ShowValue },
|
|
19
|
-
setup() {
|
|
20
|
-
const value = ref(null);
|
|
21
|
-
return { args, value };
|
|
22
|
-
},
|
|
23
|
-
template: `
|
|
24
|
-
<BaseColor v-model="value" v-bind="args"></BaseColor>
|
|
25
|
-
<ShowValue :value="value"></ShowValue>
|
|
26
|
-
`,
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
export const Single = Template.bind({});
|
|
30
|
-
Single.args = {};
|
|
31
|
-
|
|
32
|
-
export const SingleRequired = Template.bind({});
|
|
33
|
-
SingleRequired.args = {
|
|
34
|
-
required: true,
|
|
35
|
-
};
|
|
36
|
-
|
|
37
|
-
export const Multiple = Template.bind({});
|
|
38
|
-
Multiple.args = {
|
|
39
|
-
multiple: true,
|
|
40
|
-
};
|
|
41
|
-
|
|
42
|
-
export const Disabled = Template.bind({});
|
|
43
|
-
Disabled.args = {
|
|
44
|
-
disabled: true,
|
|
45
|
-
modelValue: "#16a34a",
|
|
46
|
-
};
|
|
47
|
-
|
|
48
|
-
export const Sizes = (args) => ({
|
|
49
|
-
components: { BaseColor },
|
|
50
|
-
setup() {
|
|
51
|
-
const value = ref(null);
|
|
52
|
-
return { args, sizes, value };
|
|
53
|
-
},
|
|
54
|
-
template: `
|
|
55
|
-
<div v-for="size in sizes" :key="size" class="mb-4">
|
|
56
|
-
<p class="text-xs text-slate-600 leading-tight mb-1"> {{ size }}</p>
|
|
57
|
-
<BaseColor v-bind="args" v-model="value" :size="size"></BaseColor>
|
|
58
|
-
</div>
|
|
59
|
-
`,
|
|
60
|
-
});
|
|
61
|
-
|
|
62
|
-
export const Field = createFieldStory({
|
|
63
|
-
component: BaseColor,
|
|
64
|
-
componentName: "BaseColor",
|
|
65
|
-
label: "Choose your favorite color",
|
|
66
|
-
});
|
|
1
|
+
import { createFieldStory, sizes } from "../../.storybook/utils";
|
|
2
|
+
import BaseColor from "./BaseColor.vue";
|
|
3
|
+
import ShowValue from "../../.storybook/components/ShowValue.vue";
|
|
4
|
+
|
|
5
|
+
export default {
|
|
6
|
+
title: "Form/BaseColor",
|
|
7
|
+
component: BaseColor,
|
|
8
|
+
decorators: [() => ({ template: '<div class="mb-36"><story/></div>' })],
|
|
9
|
+
argTypes: {
|
|
10
|
+
size: {
|
|
11
|
+
control: { type: "select" },
|
|
12
|
+
options: sizes,
|
|
13
|
+
},
|
|
14
|
+
},
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
const Template = (args) => ({
|
|
18
|
+
components: { BaseColor, ShowValue },
|
|
19
|
+
setup() {
|
|
20
|
+
const value = ref(null);
|
|
21
|
+
return { args, value };
|
|
22
|
+
},
|
|
23
|
+
template: `
|
|
24
|
+
<BaseColor v-model="value" v-bind="args"></BaseColor>
|
|
25
|
+
<ShowValue :value="value"></ShowValue>
|
|
26
|
+
`,
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
export const Single = Template.bind({});
|
|
30
|
+
Single.args = {};
|
|
31
|
+
|
|
32
|
+
export const SingleRequired = Template.bind({});
|
|
33
|
+
SingleRequired.args = {
|
|
34
|
+
required: true,
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
export const Multiple = Template.bind({});
|
|
38
|
+
Multiple.args = {
|
|
39
|
+
multiple: true,
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
export const Disabled = Template.bind({});
|
|
43
|
+
Disabled.args = {
|
|
44
|
+
disabled: true,
|
|
45
|
+
modelValue: "#16a34a",
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
export const Sizes = (args) => ({
|
|
49
|
+
components: { BaseColor },
|
|
50
|
+
setup() {
|
|
51
|
+
const value = ref(null);
|
|
52
|
+
return { args, sizes, value };
|
|
53
|
+
},
|
|
54
|
+
template: `
|
|
55
|
+
<div v-for="size in sizes" :key="size" class="mb-4">
|
|
56
|
+
<p class="text-xs text-slate-600 leading-tight mb-1"> {{ size }}</p>
|
|
57
|
+
<BaseColor v-bind="args" v-model="value" :size="size"></BaseColor>
|
|
58
|
+
</div>
|
|
59
|
+
`,
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
export const Field = createFieldStory({
|
|
63
|
+
component: BaseColor,
|
|
64
|
+
componentName: "BaseColor",
|
|
65
|
+
label: "Choose your favorite color",
|
|
66
|
+
});
|