sprintify-ui 0.2.19 → 0.2.21
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 +244 -244
- package/dist/sprintify-ui.es.js +7634 -7664
- package/dist/style.css +1 -1
- package/dist/tailwindcss/index.js +306 -306
- package/dist/types/src/components/BaseActionItem.vue.d.ts +40 -40
- package/dist/types/src/components/BaseActionItemButton.vue.d.ts +25 -25
- package/dist/types/src/components/BaseAddressForm.vue.d.ts +84 -84
- package/dist/types/src/components/BaseAlert.vue.d.ts +51 -51
- package/dist/types/src/components/BaseApp.vue.d.ts +9 -9
- package/dist/types/src/components/BaseAppDialogs.vue.d.ts +14 -14
- package/dist/types/src/components/BaseAppNotifications.vue.d.ts +2 -2
- package/dist/types/src/components/BaseAutocomplete.vue.d.ts +237 -237
- package/dist/types/src/components/BaseAutocompleteDrawer.vue.d.ts +91 -91
- package/dist/types/src/components/BaseAutocompleteFetch.vue.d.ts +210 -210
- package/dist/types/src/components/BaseAvatar.vue.d.ts +52 -52
- package/dist/types/src/components/BaseAvatarGroup.vue.d.ts +43 -43
- package/dist/types/src/components/BaseBadge.vue.d.ts +54 -54
- package/dist/types/src/components/BaseBelongsTo.vue.d.ts +216 -216
- package/dist/types/src/components/BaseBoolean.vue.d.ts +10 -10
- package/dist/types/src/components/BaseBreadcrumbs.vue.d.ts +14 -14
- package/dist/types/src/components/BaseButton.vue.d.ts +23 -23
- package/dist/types/src/components/BaseButtonGroup.vue.d.ts +143 -143
- package/dist/types/src/components/BaseCard.vue.d.ts +21 -21
- package/dist/types/src/components/BaseCardRow.vue.d.ts +16 -16
- package/dist/types/src/components/BaseCharacterCounter.vue.d.ts +49 -49
- package/dist/types/src/components/BaseClickOutside.vue.d.ts +26 -26
- package/dist/types/src/components/BaseClipboard.vue.d.ts +21 -21
- package/dist/types/src/components/BaseColor.vue.d.ts +80 -80
- package/dist/types/src/components/BaseContainer.vue.d.ts +34 -34
- package/dist/types/src/components/BaseCounter.vue.d.ts +42 -42
- package/dist/types/src/components/BaseCropper.vue.d.ts +76 -76
- package/dist/types/src/components/BaseCropperModal.vue.d.ts +28 -28
- package/dist/types/src/components/BaseDataIterator.vue.d.ts +212 -212
- package/dist/types/src/components/BaseDataIteratorSectionBox.vue.d.ts +20 -20
- package/dist/types/src/components/BaseDataIteratorSectionButton.vue.d.ts +17 -17
- package/dist/types/src/components/BaseDataIteratorSectionColumns.vue.d.ts +637 -637
- package/dist/types/src/components/BaseDataIteratorSectionModal.vue.d.ts +32 -32
- package/dist/types/src/components/BaseDataTable.vue.d.ts +385 -385
- package/dist/types/src/components/BaseDataTableRowAction.vue.d.ts +21 -21
- package/dist/types/src/components/BaseDatePicker.vue.d.ts +124 -124
- package/dist/types/src/components/BaseDateSelect.vue.d.ts +79 -79
- package/dist/types/src/components/BaseDescriptionList.vue.d.ts +9 -9
- package/dist/types/src/components/BaseDescriptionListItem.vue.d.ts +10 -10
- package/dist/types/src/components/BaseDialog.vue.d.ts +60 -60
- package/dist/types/src/components/BaseDisplayRelativeTime.vue.d.ts +68 -68
- package/dist/types/src/components/BaseDraggable.vue.d.ts +49 -49
- package/dist/types/src/components/BaseDropdown.vue.d.ts +65 -65
- package/dist/types/src/components/BaseDropdownAutocomplete.vue.d.ts +132 -132
- package/dist/types/src/components/BaseField.vue.d.ts +58 -58
- package/dist/types/src/components/BaseFieldI18n.vue.d.ts +93 -93
- package/dist/types/src/components/BaseFilePicker.vue.d.ts +72 -72
- package/dist/types/src/components/BaseFilePickerCrop.vue.d.ts +63 -63
- package/dist/types/src/components/BaseFileUploader.vue.d.ts +144 -144
- package/dist/types/src/components/BaseForm.vue.d.ts +134 -134
- package/dist/types/src/components/BaseGantt.vue.d.ts +425 -425
- package/dist/types/src/components/BaseHasMany.vue.d.ts +149 -149
- package/dist/types/src/components/BaseHeader.vue.d.ts +98 -98
- package/dist/types/src/components/BaseIconPicker.vue.d.ts +34 -34
- package/dist/types/src/components/BaseInput.vue.d.ts +174 -174
- package/dist/types/src/components/BaseInputError.vue.d.ts +9 -9
- package/dist/types/src/components/BaseInputLabel.vue.d.ts +43 -43
- package/dist/types/src/components/BaseInputPercent.vue.d.ts +138 -138
- package/dist/types/src/components/BaseLayoutNotificationDropdown.vue.d.ts +36 -36
- package/dist/types/src/components/BaseLayoutNotificationItem.vue.d.ts +16 -16
- package/dist/types/src/components/BaseLayoutNotificationItemContent.vue.d.ts +21 -21
- package/dist/types/src/components/BaseLayoutSidebar.vue.d.ts +51 -51
- package/dist/types/src/components/BaseLayoutSidebarConfigurable.vue.d.ts +87 -87
- package/dist/types/src/components/BaseLayoutStacked.vue.d.ts +23 -23
- package/dist/types/src/components/BaseLayoutStackedConfigurable.vue.d.ts +78 -78
- package/dist/types/src/components/BaseLoadingCover.vue.d.ts +96 -96
- package/dist/types/src/components/BaseMediaGallery.vue.d.ts +64 -64
- package/dist/types/src/components/BaseMediaGalleryItem.vue.d.ts +45 -45
- package/dist/types/src/components/BaseMediaItem.vue.d.ts +27 -27
- package/dist/types/src/components/BaseMediaLibrary.vue.d.ts +199 -199
- package/dist/types/src/components/BaseMediaList.vue.d.ts +47 -47
- package/dist/types/src/components/BaseMediaListItem.vue.d.ts +47 -47
- package/dist/types/src/components/BaseMediaPictures.vue.d.ts +55 -55
- package/dist/types/src/components/BaseMediaPicturesItem.vue.d.ts +54 -54
- package/dist/types/src/components/BaseMediaPreview.vue.d.ts +36 -36
- package/dist/types/src/components/BaseMenu.vue.d.ts +68 -68
- package/dist/types/src/components/BaseMenuItem.vue.d.ts +61 -61
- package/dist/types/src/components/BaseModalCenter.vue.d.ts +80 -80
- package/dist/types/src/components/BaseModalSide.vue.d.ts +62 -62
- package/dist/types/src/components/BaseNavbar.vue.d.ts +38 -38
- package/dist/types/src/components/BaseNavbarItem.vue.d.ts +26 -26
- package/dist/types/src/components/BaseNavbarItemContent.vue.d.ts +60 -60
- package/dist/types/src/components/BaseNavbarSideItem.vue.d.ts +44 -44
- package/dist/types/src/components/BaseNavbarSideItemContent.vue.d.ts +60 -60
- package/dist/types/src/components/BasePagination.vue.d.ts +35 -35
- package/dist/types/src/components/BasePanel.vue.d.ts +31 -31
- package/dist/types/src/components/BasePassword.vue.d.ts +67 -67
- package/dist/types/src/components/BaseProgressCircle.vue.d.ts +37 -37
- package/dist/types/src/components/BaseRadioGroup.vue.d.ts +105 -105
- package/dist/types/src/components/BaseReadMore.vue.d.ts +21 -21
- package/dist/types/src/components/BaseRichText.vue.d.ts +92 -92
- package/dist/types/src/components/BaseSelect.vue.d.ts +98 -98
- package/dist/types/src/components/BaseShortcut.vue.d.ts +86 -86
- package/dist/types/src/components/BaseSideNavigation.vue.d.ts +21 -21
- package/dist/types/src/components/BaseSideNavigationItem.vue.d.ts +41 -41
- package/dist/types/src/components/BaseSkeleton.vue.d.ts +31 -31
- package/dist/types/src/components/BaseStatistic.vue.d.ts +56 -56
- package/dist/types/src/components/BaseStepper.vue.d.ts +16 -16
- package/dist/types/src/components/BaseStepperItem.vue.d.ts +51 -51
- package/dist/types/src/components/BaseSwitch.vue.d.ts +87 -87
- package/dist/types/src/components/BaseSystemAlert.vue.d.ts +52 -52
- package/dist/types/src/components/BaseTabItem.vue.d.ts +41 -41
- package/dist/types/src/components/BaseTable.vue.d.ts +212 -212
- package/dist/types/src/components/BaseTableColumn.vue.d.ts +174 -174
- package/dist/types/src/components/BaseTabs.vue.d.ts +21 -21
- package/dist/types/src/components/BaseTagAutocomplete.vue.d.ts +209 -209
- package/dist/types/src/components/BaseTagAutocompleteFetch.vue.d.ts +141 -141
- package/dist/types/src/components/BaseTextarea.vue.d.ts +103 -103
- package/dist/types/src/components/BaseTextareaAutoresize.vue.d.ts +113 -113
- package/dist/types/src/components/BaseTimeline.vue.d.ts +14 -14
- package/dist/types/src/components/BaseTimelineItem.vue.d.ts +14 -14
- package/dist/types/src/components/BaseUniqueCode.vue.d.ts +33 -33
- package/dist/types/src/components/SlotComponent.d.ts +43 -43
- package/dist/types/src/components/index.d.ts +96 -96
- package/dist/types/src/composables/breakpoints.d.ts +27 -27
- package/dist/types/src/composables/clickOutside.d.ts +8 -8
- package/dist/types/src/composables/field.d.ts +19 -19
- package/dist/types/src/composables/hasOptions.d.ts +7 -7
- package/dist/types/src/composables/mediaQuery.d.ts +2 -2
- package/dist/types/src/composables/modal.d.ts +6 -6
- package/dist/types/src/composables/paginatedData.d.ts +7 -7
- package/dist/types/src/constants/MyConstants.d.ts +1 -1
- package/dist/types/src/constants/index.d.ts +2 -2
- package/dist/types/src/i18n/index.d.ts +1 -1
- package/dist/types/src/index.d.ts +222 -222
- package/dist/types/src/services/gantt/format.d.ts +24 -24
- package/dist/types/src/services/gantt/timescale.d.ts +26 -26
- package/dist/types/src/services/gantt/types.d.ts +67 -67
- package/dist/types/src/stores/dialogs.d.ts +9 -9
- package/dist/types/src/stores/i18n.d.ts +5 -5
- package/dist/types/src/stores/notifications.d.ts +10 -10
- package/dist/types/src/stores/systemAlerts.d.ts +9 -9
- package/dist/types/src/svg/BaseEmptyState.vue.d.ts +2 -2
- package/dist/types/src/svg/BaseSpinnerLarge.vue.d.ts +2 -2
- package/dist/types/src/svg/BaseSpinnerSmall.vue.d.ts +2 -2
- package/dist/types/src/types/Color.d.ts +9 -9
- package/dist/types/src/types/Country.d.ts +4 -4
- package/dist/types/src/types/ImagePickerResult.d.ts +5 -5
- package/dist/types/src/types/Media.d.ts +9 -9
- package/dist/types/src/types/Notification.d.ts +8 -8
- package/dist/types/src/types/Region.d.ts +5 -5
- package/dist/types/src/types/Status.d.ts +5 -5
- package/dist/types/src/types/StepperItem.d.ts +7 -7
- package/dist/types/src/types/TimelineItem.d.ts +8 -8
- package/dist/types/src/types/UploadedFile.d.ts +10 -10
- package/dist/types/src/types/User.d.ts +6 -6
- package/dist/types/src/types/index.d.ts +218 -218
- package/dist/types/src/utils/blob.d.ts +3 -3
- package/dist/types/src/utils/colors.d.ts +13 -13
- package/dist/types/src/utils/cropper/avatar.d.ts +5 -5
- package/dist/types/src/utils/cropper/cover.d.ts +5 -5
- package/dist/types/src/utils/cropper/presetInterface.d.ts +7 -7
- package/dist/types/src/utils/cropper/presets.d.ts +6 -6
- package/dist/types/src/utils/fileSizeFormat.d.ts +1 -1
- package/dist/types/src/utils/fileValidations.d.ts +2 -2
- package/dist/types/src/utils/index.d.ts +6 -6
- package/dist/types/src/utils/resizeImageFromURI.d.ts +1 -1
- package/dist/types/src/utils/scrollPreventer.d.ts +3 -3
- package/dist/types/src/utils/toHumanList.d.ts +1 -1
- package/package.json +139 -136
- package/src/assets/flatpickr.css +243 -243
- package/src/assets/form.css +6 -6
- package/src/assets/main.css +36 -36
- package/src/assets/tailwind.css +2 -2
- package/src/components/BaseActionItem.vue +68 -68
- package/src/components/BaseActionItemButton.vue +75 -75
- package/src/components/BaseAddressForm.stories.js +103 -103
- package/src/components/BaseAddressForm.vue +354 -354
- package/src/components/BaseAlert.stories.js +52 -52
- package/src/components/BaseAlert.vue +158 -158
- package/src/components/BaseApp.vue +16 -16
- package/src/components/BaseAppDialogs.vue +124 -124
- package/src/components/BaseAppNotifications.vue +76 -76
- package/src/components/BaseAutocomplete.stories.js +236 -236
- package/src/components/BaseAutocomplete.vue +523 -523
- package/src/components/BaseAutocompleteDrawer.vue +372 -372
- package/src/components/BaseAutocompleteFetch.stories.js +224 -224
- package/src/components/BaseAutocompleteFetch.vue +288 -288
- package/src/components/BaseAvatar.stories.js +39 -39
- package/src/components/BaseAvatar.vue +120 -120
- package/src/components/BaseAvatarGroup.stories.js +71 -71
- package/src/components/BaseAvatarGroup.vue +148 -148
- package/src/components/BaseBadge.stories.js +124 -124
- package/src/components/BaseBadge.vue +78 -78
- package/src/components/BaseBelongsTo.stories.js +223 -223
- package/src/components/BaseBelongsTo.vue +193 -193
- package/src/components/BaseBoolean.stories.js +35 -35
- package/src/components/BaseBoolean.vue +26 -26
- package/src/components/BaseBreadcrumbs.stories.js +45 -45
- package/src/components/BaseBreadcrumbs.vue +104 -104
- package/src/components/BaseButton.stories.js +88 -88
- package/src/components/BaseButton.vue +46 -46
- package/src/components/BaseButtonGroup.stories.js +86 -86
- package/src/components/BaseButtonGroup.vue +150 -150
- package/src/components/BaseCard.stories.js +61 -61
- package/src/components/BaseCard.vue +49 -49
- package/src/components/BaseCardRow.vue +34 -34
- package/src/components/BaseCharacterCounter.stories.js +30 -30
- package/src/components/BaseCharacterCounter.vue +64 -64
- package/src/components/BaseClickOutside.vue +37 -37
- package/src/components/BaseClipboard.stories.js +31 -31
- package/src/components/BaseClipboard.vue +99 -99
- package/src/components/BaseColor.stories.js +46 -46
- package/src/components/BaseColor.vue +154 -154
- package/src/components/BaseContainer.stories.js +34 -34
- package/src/components/BaseContainer.vue +50 -50
- package/src/components/BaseCounter.stories.js +47 -47
- package/src/components/BaseCounter.vue +82 -82
- package/src/components/BaseCropper.stories.js +113 -113
- package/src/components/BaseCropper.vue +458 -458
- package/src/components/BaseCropperModal.stories.js +54 -54
- package/src/components/BaseCropperModal.vue +143 -143
- package/src/components/BaseDataIterator.stories.js +197 -197
- package/src/components/BaseDataIterator.vue +802 -802
- package/src/components/BaseDataIteratorSectionBox.vue +36 -36
- package/src/components/BaseDataIteratorSectionButton.vue +42 -42
- package/src/components/BaseDataIteratorSectionColumns.vue +70 -70
- package/src/components/BaseDataIteratorSectionModal.vue +41 -41
- package/src/components/BaseDataTable.stories.js +341 -341
- package/src/components/BaseDataTable.vue +747 -747
- package/src/components/BaseDataTableRowAction.vue +34 -34
- package/src/components/BaseDatePicker.stories.js +130 -130
- package/src/components/BaseDatePicker.vue +296 -296
- package/src/components/BaseDateSelect.stories.js +47 -47
- package/src/components/BaseDateSelect.vue +241 -241
- 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 +51 -51
- package/src/components/BaseDialog.vue +119 -119
- package/src/components/BaseDisplayRelativeTime.stories.js +59 -59
- package/src/components/BaseDisplayRelativeTime.vue +123 -123
- package/src/components/BaseDraggable.vue +71 -71
- package/src/components/BaseDropdown.stories.js +210 -210
- package/src/components/BaseDropdown.vue +280 -280
- package/src/components/BaseDropdownAutocomplete.stories.js +187 -187
- package/src/components/BaseDropdownAutocomplete.vue +236 -236
- package/src/components/BaseField.vue +112 -112
- package/src/components/BaseFieldI18n.stories.js +38 -38
- package/src/components/BaseFieldI18n.vue +170 -170
- package/src/components/BaseFilePicker.stories.js +84 -83
- package/src/components/BaseFilePicker.vue +166 -166
- package/src/components/BaseFilePickerCrop.stories.js +135 -134
- package/src/components/BaseFilePickerCrop.vue +130 -130
- package/src/components/BaseFileUploader.stories.js +90 -89
- package/src/components/BaseFileUploader.vue +174 -174
- package/src/components/BaseForm.stories.js +48 -46
- package/src/components/BaseForm.vue +331 -331
- package/src/components/BaseGantt.stories.js +133 -133
- package/src/components/BaseGantt.vue +336 -336
- package/src/components/BaseHasMany.stories.js +189 -189
- package/src/components/BaseHasMany.vue +137 -137
- package/src/components/BaseHeader.stories.js +127 -127
- package/src/components/BaseHeader.vue +191 -191
- package/src/components/BaseIconPicker.stories.js +22 -22
- package/src/components/BaseIconPicker.vue +225 -225
- package/src/components/BaseInput.stories.js +167 -167
- package/src/components/BaseInput.vue +264 -264
- package/src/components/BaseInputError.vue +7 -7
- package/src/components/BaseInputLabel.stories.js +36 -36
- package/src/components/BaseInputLabel.vue +75 -75
- package/src/components/BaseInputPercent.stories.js +65 -65
- package/src/components/BaseInputPercent.vue +139 -139
- package/src/components/BaseLayoutNotificationDropdown.vue +150 -150
- package/src/components/BaseLayoutNotificationItem.vue +53 -53
- package/src/components/BaseLayoutNotificationItemContent.vue +30 -30
- package/src/components/BaseLayoutSidebar.vue +236 -236
- package/src/components/BaseLayoutSidebarConfigurable.stories.js +166 -166
- package/src/components/BaseLayoutSidebarConfigurable.vue +181 -181
- package/src/components/BaseLayoutStacked.vue +52 -52
- package/src/components/BaseLayoutStackedConfigurable.stories.js +109 -109
- package/src/components/BaseLayoutStackedConfigurable.vue +158 -158
- 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 -268
- package/src/components/BaseMediaLibrary.vue +323 -323
- package/src/components/BaseMediaList.vue +68 -68
- package/src/components/BaseMediaListItem.vue +181 -181
- 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 +125 -125
- package/src/components/BaseMenu.vue +165 -165
- package/src/components/BaseMenuItem.vue +118 -118
- package/src/components/BaseModalCenter.stories.js +68 -68
- package/src/components/BaseModalCenter.vue +134 -134
- package/src/components/BaseModalSide.stories.js +55 -55
- package/src/components/BaseModalSide.vue +122 -122
- package/src/components/BaseNavbar.stories.js +151 -151
- package/src/components/BaseNavbar.vue +91 -91
- package/src/components/BaseNavbarItem.vue +49 -49
- package/src/components/BaseNavbarItemContent.vue +97 -97
- package/src/components/BaseNavbarSideItem.vue +114 -114
- package/src/components/BaseNavbarSideItemContent.vue +111 -111
- 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 +57 -57
- package/src/components/BasePassword.vue +107 -107
- package/src/components/BaseProgressCircle.stories.js +27 -27
- package/src/components/BaseProgressCircle.vue +80 -80
- package/src/components/BaseRadioGroup.stories.js +88 -88
- package/src/components/BaseRadioGroup.vue +125 -125
- package/src/components/BaseReadMore.stories.js +30 -30
- package/src/components/BaseReadMore.vue +73 -73
- package/src/components/BaseRichText.stories.js +102 -102
- package/src/components/BaseRichText.vue +182 -182
- package/src/components/BaseSelect.stories.js +118 -118
- package/src/components/BaseSelect.vue +224 -224
- package/src/components/BaseShortcut.stories.js +102 -102
- package/src/components/BaseShortcut.vue +112 -112
- package/src/components/BaseSideNavigation.stories.js +80 -80
- package/src/components/BaseSideNavigation.vue +32 -32
- package/src/components/BaseSideNavigationItem.vue +95 -95
- 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 +109 -109
- 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 +130 -130
- package/src/components/BaseSwitch.vue +215 -215
- package/src/components/BaseSystemAlert.stories.js +63 -63
- package/src/components/BaseSystemAlert.vue +89 -89
- package/src/components/BaseTabItem.vue +96 -96
- package/src/components/BaseTable.vue +890 -890
- package/src/components/BaseTableColumn.vue +124 -124
- package/src/components/BaseTabs.stories.js +85 -85
- package/src/components/BaseTabs.vue +73 -73
- package/src/components/BaseTagAutocomplete.stories.js +258 -258
- package/src/components/BaseTagAutocomplete.vue +438 -438
- package/src/components/BaseTagAutocompleteFetch.stories.js +185 -185
- package/src/components/BaseTagAutocompleteFetch.vue +220 -220
- package/src/components/BaseTextarea.stories.js +58 -58
- package/src/components/BaseTextarea.vue +103 -103
- package/src/components/BaseTextareaAutoresize.stories.js +102 -102
- package/src/components/BaseTextareaAutoresize.vue +166 -166
- package/src/components/BaseTimeline.stories.js +53 -53
- package/src/components/BaseTimeline.vue +35 -35
- package/src/components/BaseTimelineItem.stories.js +78 -78
- package/src/components/BaseTimelineItem.vue +79 -79
- 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 +194 -194
- package/src/composables/breakpoints.ts +94 -94
- package/src/composables/clickOutside.ts +80 -80
- package/src/composables/field.ts +117 -117
- package/src/composables/hasOptions.ts +68 -68
- package/src/composables/mediaQuery.ts +42 -42
- package/src/composables/modal.ts +73 -73
- package/src/composables/paginatedData.ts +65 -65
- 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 +111 -111
- package/src/lang/en.json +87 -87
- package/src/lang/fr.json +87 -87
- package/src/services/gantt/format.ts +113 -113
- package/src/services/gantt/timescale.ts +242 -242
- package/src/services/gantt/types.ts +74 -74
- package/src/stores/dialogs.ts +45 -45
- package/src/stores/i18n.ts +14 -14
- package/src/stores/notifications.ts +47 -47
- package/src/stores/systemAlerts.ts +33 -33
- package/src/svg/BaseEmptyState.vue +38 -38
- package/src/svg/BaseSpinnerLarge.vue +59 -59
- package/src/svg/BaseSpinnerSmall.vue +15 -15
- 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 +10 -10
- package/src/types/Region.ts +5 -5
- package/src/types/Status.ts +5 -5
- package/src/types/StepperItem.ts +8 -8
- package/src/types/TimelineItem.ts +8 -8
- package/src/types/UploadedFile.ts +11 -11
- package/src/types/User.ts +7 -7
- package/src/types/index.ts +267 -267
- package/src/utils/blob.ts +30 -30
- package/src/utils/colors.ts +200 -200
- 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/fileSizeFormat.ts +15 -15
- package/src/utils/fileValidations.ts +26 -26
- package/src/utils/index.ts +16 -16
- package/src/utils/resizeImageFromURI.ts +118 -118
- package/src/utils/scrollPreventer.ts +11 -11
- package/src/utils/toHumanList.ts +20 -20
package/src/lang/en.json
CHANGED
|
@@ -1,88 +1,88 @@
|
|
|
1
|
-
{
|
|
2
|
-
"cancel": "Cancel",
|
|
3
|
-
"cropper": "Crop",
|
|
4
|
-
"drag_to_reposition": "Drag to reposition",
|
|
5
|
-
"save": "Save",
|
|
6
|
-
"sui": {
|
|
7
|
-
"address": "Address",
|
|
8
|
-
"address_1_placeholder": "Postal address",
|
|
9
|
-
"address_2_description": "Apartment, suite, unit, building",
|
|
10
|
-
"and": "and",
|
|
11
|
-
"apply": "Apply",
|
|
12
|
-
"apply_filters": "Apply filters",
|
|
13
|
-
"authentication_code": "Authentication code",
|
|
14
|
-
"autocomplete_placeholder": "Type to start your search",
|
|
15
|
-
"cancel": "Cancel",
|
|
16
|
-
"city": "City",
|
|
17
|
-
"clear": "Clear",
|
|
18
|
-
"click_or_select_date": "Click or select date",
|
|
19
|
-
"click_to_copy": "Click to copy",
|
|
20
|
-
"columns": "Columns",
|
|
21
|
-
"confirm": "Confirm",
|
|
22
|
-
"copied": "Copied",
|
|
23
|
-
"country": "Country",
|
|
24
|
-
"create_new": "Create new",
|
|
25
|
-
"day": "Day",
|
|
26
|
-
"delete": "Delete",
|
|
27
|
-
"delete_record": "Delete the record",
|
|
28
|
-
"delete_record_description": "Are you sure to delete this record? This action is irreversible.",
|
|
29
|
-
"deselect_all": "Deselect all",
|
|
30
|
-
"download": "Download",
|
|
31
|
-
"drag_to_reposition": "Drag to reposition",
|
|
32
|
-
"drop_or_click_to_upload": "Drop or click to upload",
|
|
33
|
-
"edit": "Edit",
|
|
34
|
-
"error": "Error",
|
|
35
|
-
"file_must_be_of_type": "The file must be of type",
|
|
36
|
-
"filters": "Filters",
|
|
37
|
-
"go_to_page": "Go to ",
|
|
38
|
-
"invalid_value": "Invalid value",
|
|
39
|
-
"just_now": "Just now",
|
|
40
|
-
"maximum_x_decimal_places": "Maximum 1 decimal place|Maximum {count} decimal places",
|
|
41
|
-
"min_x_characters": "{x} characters minimum",
|
|
42
|
-
"month": "Month",
|
|
43
|
-
"more": "More",
|
|
44
|
-
"next": "Next",
|
|
45
|
-
"next_month": "Next month",
|
|
46
|
-
"none": "None",
|
|
47
|
-
"nothing_found": "Nothing found",
|
|
48
|
-
"notifications_empty": "You have no new notifications",
|
|
49
|
-
"of": "of",
|
|
50
|
-
"or": "or",
|
|
51
|
-
"page": "Page",
|
|
52
|
-
"pagination_detail_1": "Viewing",
|
|
53
|
-
"pagination_detail_2": "of",
|
|
54
|
-
"postal_code_zip_code": "Postal Code / Zip Code",
|
|
55
|
-
"previous": "Previous",
|
|
56
|
-
"previous_month": "Previous month",
|
|
57
|
-
"read_more": "Read more",
|
|
58
|
-
"region": "State / Province",
|
|
59
|
-
"remove": "Remove",
|
|
60
|
-
"remove_file": "Remove file?",
|
|
61
|
-
"remove_file_description": "Are you sure you want to remove the file? This action is irreversible.",
|
|
62
|
-
"save": "Save",
|
|
63
|
-
"search": "Search",
|
|
64
|
-
"see_all_notifications": "See all notifications",
|
|
65
|
-
"select_an_item": "Select an item",
|
|
66
|
-
"select_an_option": "Select an option",
|
|
67
|
-
"success": "Success",
|
|
68
|
-
"the_file_size_must_not_exceed_x": "The file size must not exceed {x}",
|
|
69
|
-
"the_file_type_is_invalid": "The file type is invalid",
|
|
70
|
-
"type_to_start_your_search": "Type to start your search",
|
|
71
|
-
"units": {
|
|
72
|
-
"b": "B",
|
|
73
|
-
"gb": "GB",
|
|
74
|
-
"kb": "kB",
|
|
75
|
-
"mb": "MB",
|
|
76
|
-
"tb": "TB"
|
|
77
|
-
},
|
|
78
|
-
"up_to_x": "Up to {x}",
|
|
79
|
-
"upload_failed": "Upload failed",
|
|
80
|
-
"whoops": "Whoops",
|
|
81
|
-
"x_ago": "{duration} ago",
|
|
82
|
-
"x_rows_selected": "1 item selected | {count} items selected",
|
|
83
|
-
"year": "Year",
|
|
84
|
-
"yes_delete": "Yes, delete",
|
|
85
|
-
"you_can_upload_up_to_n_files": "You can upload one file at most|You can upload up to {count} files",
|
|
86
|
-
"you_cannot_select_more_than_x_items": "You can't select more than one item|You can't select more than {count} items"
|
|
87
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"cancel": "Cancel",
|
|
3
|
+
"cropper": "Crop",
|
|
4
|
+
"drag_to_reposition": "Drag to reposition",
|
|
5
|
+
"save": "Save",
|
|
6
|
+
"sui": {
|
|
7
|
+
"address": "Address",
|
|
8
|
+
"address_1_placeholder": "Postal address",
|
|
9
|
+
"address_2_description": "Apartment, suite, unit, building",
|
|
10
|
+
"and": "and",
|
|
11
|
+
"apply": "Apply",
|
|
12
|
+
"apply_filters": "Apply filters",
|
|
13
|
+
"authentication_code": "Authentication code",
|
|
14
|
+
"autocomplete_placeholder": "Type to start your search",
|
|
15
|
+
"cancel": "Cancel",
|
|
16
|
+
"city": "City",
|
|
17
|
+
"clear": "Clear",
|
|
18
|
+
"click_or_select_date": "Click or select date",
|
|
19
|
+
"click_to_copy": "Click to copy",
|
|
20
|
+
"columns": "Columns",
|
|
21
|
+
"confirm": "Confirm",
|
|
22
|
+
"copied": "Copied",
|
|
23
|
+
"country": "Country",
|
|
24
|
+
"create_new": "Create new",
|
|
25
|
+
"day": "Day",
|
|
26
|
+
"delete": "Delete",
|
|
27
|
+
"delete_record": "Delete the record",
|
|
28
|
+
"delete_record_description": "Are you sure to delete this record? This action is irreversible.",
|
|
29
|
+
"deselect_all": "Deselect all",
|
|
30
|
+
"download": "Download",
|
|
31
|
+
"drag_to_reposition": "Drag to reposition",
|
|
32
|
+
"drop_or_click_to_upload": "Drop or click to upload",
|
|
33
|
+
"edit": "Edit",
|
|
34
|
+
"error": "Error",
|
|
35
|
+
"file_must_be_of_type": "The file must be of type",
|
|
36
|
+
"filters": "Filters",
|
|
37
|
+
"go_to_page": "Go to ",
|
|
38
|
+
"invalid_value": "Invalid value",
|
|
39
|
+
"just_now": "Just now",
|
|
40
|
+
"maximum_x_decimal_places": "Maximum 1 decimal place|Maximum {count} decimal places",
|
|
41
|
+
"min_x_characters": "{x} characters minimum",
|
|
42
|
+
"month": "Month",
|
|
43
|
+
"more": "More",
|
|
44
|
+
"next": "Next",
|
|
45
|
+
"next_month": "Next month",
|
|
46
|
+
"none": "None",
|
|
47
|
+
"nothing_found": "Nothing found",
|
|
48
|
+
"notifications_empty": "You have no new notifications",
|
|
49
|
+
"of": "of",
|
|
50
|
+
"or": "or",
|
|
51
|
+
"page": "Page",
|
|
52
|
+
"pagination_detail_1": "Viewing",
|
|
53
|
+
"pagination_detail_2": "of",
|
|
54
|
+
"postal_code_zip_code": "Postal Code / Zip Code",
|
|
55
|
+
"previous": "Previous",
|
|
56
|
+
"previous_month": "Previous month",
|
|
57
|
+
"read_more": "Read more",
|
|
58
|
+
"region": "State / Province",
|
|
59
|
+
"remove": "Remove",
|
|
60
|
+
"remove_file": "Remove file?",
|
|
61
|
+
"remove_file_description": "Are you sure you want to remove the file? This action is irreversible.",
|
|
62
|
+
"save": "Save",
|
|
63
|
+
"search": "Search",
|
|
64
|
+
"see_all_notifications": "See all notifications",
|
|
65
|
+
"select_an_item": "Select an item",
|
|
66
|
+
"select_an_option": "Select an option",
|
|
67
|
+
"success": "Success",
|
|
68
|
+
"the_file_size_must_not_exceed_x": "The file size must not exceed {x}",
|
|
69
|
+
"the_file_type_is_invalid": "The file type is invalid",
|
|
70
|
+
"type_to_start_your_search": "Type to start your search",
|
|
71
|
+
"units": {
|
|
72
|
+
"b": "B",
|
|
73
|
+
"gb": "GB",
|
|
74
|
+
"kb": "kB",
|
|
75
|
+
"mb": "MB",
|
|
76
|
+
"tb": "TB"
|
|
77
|
+
},
|
|
78
|
+
"up_to_x": "Up to {x}",
|
|
79
|
+
"upload_failed": "Upload failed",
|
|
80
|
+
"whoops": "Whoops",
|
|
81
|
+
"x_ago": "{duration} ago",
|
|
82
|
+
"x_rows_selected": "1 item selected | {count} items selected",
|
|
83
|
+
"year": "Year",
|
|
84
|
+
"yes_delete": "Yes, delete",
|
|
85
|
+
"you_can_upload_up_to_n_files": "You can upload one file at most|You can upload up to {count} files",
|
|
86
|
+
"you_cannot_select_more_than_x_items": "You can't select more than one item|You can't select more than {count} items"
|
|
87
|
+
}
|
|
88
88
|
}
|
package/src/lang/fr.json
CHANGED
|
@@ -1,88 +1,88 @@
|
|
|
1
|
-
{
|
|
2
|
-
"cancel": "Fermer",
|
|
3
|
-
"cropper": "Recadrer",
|
|
4
|
-
"drag_to_reposition": "Faites glisser pour repositionner",
|
|
5
|
-
"save": "Sauvegarder",
|
|
6
|
-
"sui": {
|
|
7
|
-
"address": "Adresse",
|
|
8
|
-
"address_1_placeholder": "Adresse postale",
|
|
9
|
-
"address_2_description": "Appartement, suite, unité, immeuble",
|
|
10
|
-
"and": "et",
|
|
11
|
-
"apply": "Appliquer",
|
|
12
|
-
"apply_filters": "Appliquer les filtres",
|
|
13
|
-
"authentication_code": "Code d'authentification",
|
|
14
|
-
"autocomplete_placeholder": "Taper pour lancer votre recherche",
|
|
15
|
-
"cancel": "Annuler",
|
|
16
|
-
"city": "Ville",
|
|
17
|
-
"clear": "Effacer",
|
|
18
|
-
"click_or_select_date": "Cliquer ou sélectionner une date",
|
|
19
|
-
"click_to_copy": "Cliquer pour copier",
|
|
20
|
-
"columns": "Colonnes",
|
|
21
|
-
"confirm": "Confirmer",
|
|
22
|
-
"copied": "Copié",
|
|
23
|
-
"country": "Pays",
|
|
24
|
-
"create_new": "Créer un nouveau",
|
|
25
|
-
"day": "Jour",
|
|
26
|
-
"delete": "Supprimer",
|
|
27
|
-
"delete_record": "Supprimer l'item",
|
|
28
|
-
"delete_record_description": "Supprimer cet item ? \nCette action est irréversible.",
|
|
29
|
-
"deselect_all": "Tout déselectionner",
|
|
30
|
-
"download": "Télécharger",
|
|
31
|
-
"drag_to_reposition": "Faites glisser pour repositionner",
|
|
32
|
-
"drop_or_click_to_upload": "Déposer ou cliquer pour télécharger",
|
|
33
|
-
"edit": "Modifier",
|
|
34
|
-
"error": "Erreur",
|
|
35
|
-
"file_must_be_of_type": "Le fichier doit être de type",
|
|
36
|
-
"filters": "Filtres",
|
|
37
|
-
"go_to_page": "Page",
|
|
38
|
-
"invalid_value": "Valeur invalide",
|
|
39
|
-
"just_now": "à l’instant",
|
|
40
|
-
"maximum_x_decimal_places": "Maximum 1 décimale|Maximum {count} décimales",
|
|
41
|
-
"min_x_characters": "{x} caractères minimum",
|
|
42
|
-
"month": "Mois",
|
|
43
|
-
"more": "Plus",
|
|
44
|
-
"next": "Suivant",
|
|
45
|
-
"next_month": "Mois prochain",
|
|
46
|
-
"none": "Aucun",
|
|
47
|
-
"nothing_found": "Rien n'a été trouvé",
|
|
48
|
-
"notifications_empty": "Vous n'avez aucune nouvelle notification",
|
|
49
|
-
"of": "de",
|
|
50
|
-
"or": "ou",
|
|
51
|
-
"page": "Page",
|
|
52
|
-
"pagination_detail_1": "Affichage de",
|
|
53
|
-
"pagination_detail_2": "de",
|
|
54
|
-
"postal_code_zip_code": "Code postal",
|
|
55
|
-
"previous": "Précédent",
|
|
56
|
-
"previous_month": "Mois précédent",
|
|
57
|
-
"read_more": "Lire la suite",
|
|
58
|
-
"region": "État / Province",
|
|
59
|
-
"remove": "Retirer",
|
|
60
|
-
"remove_file": "Retirer le fichier?",
|
|
61
|
-
"remove_file_description": "Supprimer le fichier ? \nCette action est irréversible.",
|
|
62
|
-
"save": "Sauvegarder",
|
|
63
|
-
"search": "Rechercher",
|
|
64
|
-
"see_all_notifications": "Voir toutes les notifications",
|
|
65
|
-
"select_an_item": "Sélectionner un élément",
|
|
66
|
-
"select_an_option": "Sélectionner une option",
|
|
67
|
-
"success": "Succès",
|
|
68
|
-
"the_file_size_must_not_exceed_x": "La taille du fichier ne doit pas dépasser {x}",
|
|
69
|
-
"the_file_type_is_invalid": "Le type de fichier n'est pas valide",
|
|
70
|
-
"type_to_start_your_search": "Taper pour lancer votre recherche",
|
|
71
|
-
"units": {
|
|
72
|
-
"b": "o",
|
|
73
|
-
"gb": "Go",
|
|
74
|
-
"kb": "Ko",
|
|
75
|
-
"mb": "Mo",
|
|
76
|
-
"tb": "To"
|
|
77
|
-
},
|
|
78
|
-
"up_to_x": "Jusqu'à {x}",
|
|
79
|
-
"upload_failed": "Le téléchargement a échoué",
|
|
80
|
-
"whoops": "Oups",
|
|
81
|
-
"x_ago": "il y a {duration}",
|
|
82
|
-
"x_rows_selected": "1 item sélectionné | \n{count} items sélectionnés",
|
|
83
|
-
"year": "Année",
|
|
84
|
-
"yes_delete": "Oui, supprimer",
|
|
85
|
-
"you_can_upload_up_to_n_files": "Vous pouvez télécharger un fichier au maximum|Vous pouvez télécharger jusqu'à {count} fichiers",
|
|
86
|
-
"you_cannot_select_more_than_x_items": "Vous ne pouvez pas sélectionner plus de un élément|Vous ne pouvez pas sélectionner plus de {count} éléments"
|
|
87
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"cancel": "Fermer",
|
|
3
|
+
"cropper": "Recadrer",
|
|
4
|
+
"drag_to_reposition": "Faites glisser pour repositionner",
|
|
5
|
+
"save": "Sauvegarder",
|
|
6
|
+
"sui": {
|
|
7
|
+
"address": "Adresse",
|
|
8
|
+
"address_1_placeholder": "Adresse postale",
|
|
9
|
+
"address_2_description": "Appartement, suite, unité, immeuble",
|
|
10
|
+
"and": "et",
|
|
11
|
+
"apply": "Appliquer",
|
|
12
|
+
"apply_filters": "Appliquer les filtres",
|
|
13
|
+
"authentication_code": "Code d'authentification",
|
|
14
|
+
"autocomplete_placeholder": "Taper pour lancer votre recherche",
|
|
15
|
+
"cancel": "Annuler",
|
|
16
|
+
"city": "Ville",
|
|
17
|
+
"clear": "Effacer",
|
|
18
|
+
"click_or_select_date": "Cliquer ou sélectionner une date",
|
|
19
|
+
"click_to_copy": "Cliquer pour copier",
|
|
20
|
+
"columns": "Colonnes",
|
|
21
|
+
"confirm": "Confirmer",
|
|
22
|
+
"copied": "Copié",
|
|
23
|
+
"country": "Pays",
|
|
24
|
+
"create_new": "Créer un nouveau",
|
|
25
|
+
"day": "Jour",
|
|
26
|
+
"delete": "Supprimer",
|
|
27
|
+
"delete_record": "Supprimer l'item",
|
|
28
|
+
"delete_record_description": "Supprimer cet item ? \nCette action est irréversible.",
|
|
29
|
+
"deselect_all": "Tout déselectionner",
|
|
30
|
+
"download": "Télécharger",
|
|
31
|
+
"drag_to_reposition": "Faites glisser pour repositionner",
|
|
32
|
+
"drop_or_click_to_upload": "Déposer ou cliquer pour télécharger",
|
|
33
|
+
"edit": "Modifier",
|
|
34
|
+
"error": "Erreur",
|
|
35
|
+
"file_must_be_of_type": "Le fichier doit être de type",
|
|
36
|
+
"filters": "Filtres",
|
|
37
|
+
"go_to_page": "Page",
|
|
38
|
+
"invalid_value": "Valeur invalide",
|
|
39
|
+
"just_now": "à l’instant",
|
|
40
|
+
"maximum_x_decimal_places": "Maximum 1 décimale|Maximum {count} décimales",
|
|
41
|
+
"min_x_characters": "{x} caractères minimum",
|
|
42
|
+
"month": "Mois",
|
|
43
|
+
"more": "Plus",
|
|
44
|
+
"next": "Suivant",
|
|
45
|
+
"next_month": "Mois prochain",
|
|
46
|
+
"none": "Aucun",
|
|
47
|
+
"nothing_found": "Rien n'a été trouvé",
|
|
48
|
+
"notifications_empty": "Vous n'avez aucune nouvelle notification",
|
|
49
|
+
"of": "de",
|
|
50
|
+
"or": "ou",
|
|
51
|
+
"page": "Page",
|
|
52
|
+
"pagination_detail_1": "Affichage de",
|
|
53
|
+
"pagination_detail_2": "de",
|
|
54
|
+
"postal_code_zip_code": "Code postal",
|
|
55
|
+
"previous": "Précédent",
|
|
56
|
+
"previous_month": "Mois précédent",
|
|
57
|
+
"read_more": "Lire la suite",
|
|
58
|
+
"region": "État / Province",
|
|
59
|
+
"remove": "Retirer",
|
|
60
|
+
"remove_file": "Retirer le fichier?",
|
|
61
|
+
"remove_file_description": "Supprimer le fichier ? \nCette action est irréversible.",
|
|
62
|
+
"save": "Sauvegarder",
|
|
63
|
+
"search": "Rechercher",
|
|
64
|
+
"see_all_notifications": "Voir toutes les notifications",
|
|
65
|
+
"select_an_item": "Sélectionner un élément",
|
|
66
|
+
"select_an_option": "Sélectionner une option",
|
|
67
|
+
"success": "Succès",
|
|
68
|
+
"the_file_size_must_not_exceed_x": "La taille du fichier ne doit pas dépasser {x}",
|
|
69
|
+
"the_file_type_is_invalid": "Le type de fichier n'est pas valide",
|
|
70
|
+
"type_to_start_your_search": "Taper pour lancer votre recherche",
|
|
71
|
+
"units": {
|
|
72
|
+
"b": "o",
|
|
73
|
+
"gb": "Go",
|
|
74
|
+
"kb": "Ko",
|
|
75
|
+
"mb": "Mo",
|
|
76
|
+
"tb": "To"
|
|
77
|
+
},
|
|
78
|
+
"up_to_x": "Jusqu'à {x}",
|
|
79
|
+
"upload_failed": "Le téléchargement a échoué",
|
|
80
|
+
"whoops": "Oups",
|
|
81
|
+
"x_ago": "il y a {duration}",
|
|
82
|
+
"x_rows_selected": "1 item sélectionné | \n{count} items sélectionnés",
|
|
83
|
+
"year": "Année",
|
|
84
|
+
"yes_delete": "Oui, supprimer",
|
|
85
|
+
"you_can_upload_up_to_n_files": "Vous pouvez télécharger un fichier au maximum|Vous pouvez télécharger jusqu'à {count} fichiers",
|
|
86
|
+
"you_cannot_select_more_than_x_items": "Vous ne pouvez pas sélectionner plus de un élément|Vous ne pouvez pas sélectionner plus de {count} éléments"
|
|
87
|
+
}
|
|
88
88
|
}
|
|
@@ -1,113 +1,113 @@
|
|
|
1
|
-
import { DateTime } from "luxon";
|
|
2
|
-
import { FormatConfig, GanttItem, GanttItemFormatted, GanttRow, GanttRowFormatted } from "./types";
|
|
3
|
-
import { minBy } from "lodash";
|
|
4
|
-
import { Timescale } from "./timescale";
|
|
5
|
-
|
|
6
|
-
export class Format {
|
|
7
|
-
|
|
8
|
-
private rows: GanttRow[];
|
|
9
|
-
private config: FormatConfig;
|
|
10
|
-
|
|
11
|
-
constructor(config: FormatConfig) {
|
|
12
|
-
this.rows = config.rows;
|
|
13
|
-
this.config = config;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
public handle() {
|
|
17
|
-
|
|
18
|
-
// Format rows
|
|
19
|
-
const rowsFormatted = this.formatGanttRows();
|
|
20
|
-
|
|
21
|
-
// Get min and max
|
|
22
|
-
let { min, max } = this.getMinMax(rowsFormatted);
|
|
23
|
-
|
|
24
|
-
// Get timescale
|
|
25
|
-
const timescale = (new Timescale(this.config.minWidth, min, max)).handle();
|
|
26
|
-
|
|
27
|
-
// Padded min and max
|
|
28
|
-
min = timescale.min;
|
|
29
|
-
max = timescale.max;
|
|
30
|
-
|
|
31
|
-
const millisecondToPixel = timescale.millisecondToPixel;
|
|
32
|
-
|
|
33
|
-
// Set x, y, width and height
|
|
34
|
-
|
|
35
|
-
rowsFormatted.forEach((row) => {
|
|
36
|
-
row.items.forEach((item) => {
|
|
37
|
-
|
|
38
|
-
const x = (item.start.toMillis() - min.toMillis()) * millisecondToPixel;
|
|
39
|
-
const y = this.config.rowPadding;
|
|
40
|
-
const width = item.milliseconds * millisecondToPixel;
|
|
41
|
-
const height = this.config.rowHeight - (this.config.rowPadding * 2);
|
|
42
|
-
|
|
43
|
-
item.x = x;
|
|
44
|
-
item.y = y;
|
|
45
|
-
item.width = width;
|
|
46
|
-
item.height = height;
|
|
47
|
-
});
|
|
48
|
-
});
|
|
49
|
-
|
|
50
|
-
return {
|
|
51
|
-
rows: rowsFormatted,
|
|
52
|
-
min,
|
|
53
|
-
max,
|
|
54
|
-
millisecondToPixel,
|
|
55
|
-
height: this.config.rowHeight * this.rows.length,
|
|
56
|
-
width: timescale.width,
|
|
57
|
-
groups: timescale.groups,
|
|
58
|
-
ticks: timescale.ticks,
|
|
59
|
-
};
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
formatGanttRows(): GanttRowFormatted[] {
|
|
63
|
-
return this.rows.map((row) => {
|
|
64
|
-
return this.formatGanttRow(row);
|
|
65
|
-
}) as GanttRowFormatted[];
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
formatGanttRow(row: GanttRow): GanttRowFormatted {
|
|
69
|
-
const itemsFormatted = row.items.map((item) => {
|
|
70
|
-
return this.formatGanttItem(item);
|
|
71
|
-
});
|
|
72
|
-
|
|
73
|
-
return {
|
|
74
|
-
id: row.id,
|
|
75
|
-
name: row.name,
|
|
76
|
-
meta: row.meta,
|
|
77
|
-
items: itemsFormatted,
|
|
78
|
-
};
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
formatGanttItem(item: GanttItem): GanttItemFormatted {
|
|
82
|
-
const start = DateTime.fromISO(item.start);
|
|
83
|
-
const end = DateTime.fromISO(item.end);
|
|
84
|
-
const milliseconds = end.diff(start, "milliseconds").milliseconds;
|
|
85
|
-
|
|
86
|
-
return {
|
|
87
|
-
id: item.id,
|
|
88
|
-
name: item.name,
|
|
89
|
-
meta: item.meta,
|
|
90
|
-
color: item.color,
|
|
91
|
-
start,
|
|
92
|
-
end,
|
|
93
|
-
milliseconds,
|
|
94
|
-
x: 0,
|
|
95
|
-
y: 0,
|
|
96
|
-
width: 0,
|
|
97
|
-
height: 0,
|
|
98
|
-
} as GanttItemFormatted;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
getMinMax(rowsFormatted: GanttRowFormatted[]) {
|
|
102
|
-
const flatItems = rowsFormatted.flatMap((row) => row.items);
|
|
103
|
-
const flatDateTimes = flatItems.flatMap((item) => [item.start, item.end]);
|
|
104
|
-
|
|
105
|
-
const min = minBy(flatDateTimes, (dateTime) => dateTime.toMillis())?.toMillis() || 0;
|
|
106
|
-
const max = Math.max(...flatDateTimes.map((dateTime) => dateTime.toMillis()));
|
|
107
|
-
|
|
108
|
-
const minDateTime = DateTime.fromMillis(min);
|
|
109
|
-
const maxDateTime = DateTime.fromMillis(max);
|
|
110
|
-
|
|
111
|
-
return { min: minDateTime, max: maxDateTime };
|
|
112
|
-
}
|
|
113
|
-
}
|
|
1
|
+
import { DateTime } from "luxon";
|
|
2
|
+
import { FormatConfig, GanttItem, GanttItemFormatted, GanttRow, GanttRowFormatted } from "./types";
|
|
3
|
+
import { minBy } from "lodash";
|
|
4
|
+
import { Timescale } from "./timescale";
|
|
5
|
+
|
|
6
|
+
export class Format {
|
|
7
|
+
|
|
8
|
+
private rows: GanttRow[];
|
|
9
|
+
private config: FormatConfig;
|
|
10
|
+
|
|
11
|
+
constructor(config: FormatConfig) {
|
|
12
|
+
this.rows = config.rows;
|
|
13
|
+
this.config = config;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
public handle() {
|
|
17
|
+
|
|
18
|
+
// Format rows
|
|
19
|
+
const rowsFormatted = this.formatGanttRows();
|
|
20
|
+
|
|
21
|
+
// Get min and max
|
|
22
|
+
let { min, max } = this.getMinMax(rowsFormatted);
|
|
23
|
+
|
|
24
|
+
// Get timescale
|
|
25
|
+
const timescale = (new Timescale(this.config.minWidth, min, max)).handle();
|
|
26
|
+
|
|
27
|
+
// Padded min and max
|
|
28
|
+
min = timescale.min;
|
|
29
|
+
max = timescale.max;
|
|
30
|
+
|
|
31
|
+
const millisecondToPixel = timescale.millisecondToPixel;
|
|
32
|
+
|
|
33
|
+
// Set x, y, width and height
|
|
34
|
+
|
|
35
|
+
rowsFormatted.forEach((row) => {
|
|
36
|
+
row.items.forEach((item) => {
|
|
37
|
+
|
|
38
|
+
const x = (item.start.toMillis() - min.toMillis()) * millisecondToPixel;
|
|
39
|
+
const y = this.config.rowPadding;
|
|
40
|
+
const width = item.milliseconds * millisecondToPixel;
|
|
41
|
+
const height = this.config.rowHeight - (this.config.rowPadding * 2);
|
|
42
|
+
|
|
43
|
+
item.x = x;
|
|
44
|
+
item.y = y;
|
|
45
|
+
item.width = width;
|
|
46
|
+
item.height = height;
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
return {
|
|
51
|
+
rows: rowsFormatted,
|
|
52
|
+
min,
|
|
53
|
+
max,
|
|
54
|
+
millisecondToPixel,
|
|
55
|
+
height: this.config.rowHeight * this.rows.length,
|
|
56
|
+
width: timescale.width,
|
|
57
|
+
groups: timescale.groups,
|
|
58
|
+
ticks: timescale.ticks,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
formatGanttRows(): GanttRowFormatted[] {
|
|
63
|
+
return this.rows.map((row) => {
|
|
64
|
+
return this.formatGanttRow(row);
|
|
65
|
+
}) as GanttRowFormatted[];
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
formatGanttRow(row: GanttRow): GanttRowFormatted {
|
|
69
|
+
const itemsFormatted = row.items.map((item) => {
|
|
70
|
+
return this.formatGanttItem(item);
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
return {
|
|
74
|
+
id: row.id,
|
|
75
|
+
name: row.name,
|
|
76
|
+
meta: row.meta,
|
|
77
|
+
items: itemsFormatted,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
formatGanttItem(item: GanttItem): GanttItemFormatted {
|
|
82
|
+
const start = DateTime.fromISO(item.start);
|
|
83
|
+
const end = DateTime.fromISO(item.end);
|
|
84
|
+
const milliseconds = end.diff(start, "milliseconds").milliseconds;
|
|
85
|
+
|
|
86
|
+
return {
|
|
87
|
+
id: item.id,
|
|
88
|
+
name: item.name,
|
|
89
|
+
meta: item.meta,
|
|
90
|
+
color: item.color,
|
|
91
|
+
start,
|
|
92
|
+
end,
|
|
93
|
+
milliseconds,
|
|
94
|
+
x: 0,
|
|
95
|
+
y: 0,
|
|
96
|
+
width: 0,
|
|
97
|
+
height: 0,
|
|
98
|
+
} as GanttItemFormatted;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
getMinMax(rowsFormatted: GanttRowFormatted[]) {
|
|
102
|
+
const flatItems = rowsFormatted.flatMap((row) => row.items);
|
|
103
|
+
const flatDateTimes = flatItems.flatMap((item) => [item.start, item.end]);
|
|
104
|
+
|
|
105
|
+
const min = minBy(flatDateTimes, (dateTime) => dateTime.toMillis())?.toMillis() || 0;
|
|
106
|
+
const max = Math.max(...flatDateTimes.map((dateTime) => dateTime.toMillis()));
|
|
107
|
+
|
|
108
|
+
const minDateTime = DateTime.fromMillis(min);
|
|
109
|
+
const maxDateTime = DateTime.fromMillis(max);
|
|
110
|
+
|
|
111
|
+
return { min: minDateTime, max: maxDateTime };
|
|
112
|
+
}
|
|
113
|
+
}
|