sprintify-ui 0.6.81 → 0.6.83

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.
Files changed (234) hide show
  1. package/dist/sprintify-ui.es.js +15301 -15194
  2. package/dist/style.css +1 -1
  3. package/dist/types/components/BaseActionItem.vue.d.ts +31 -0
  4. package/dist/types/components/BaseActionItemButton.vue.d.ts +32 -0
  5. package/dist/types/components/BaseAddressForm.vue.d.ts +92 -0
  6. package/dist/types/components/BaseAlert.vue.d.ts +61 -0
  7. package/dist/types/{src/components → components}/BaseApp.vue.d.ts +1 -1
  8. package/dist/types/{src/components → components}/BaseAppDialogs.vue.d.ts +2 -2
  9. package/dist/types/components/BaseAppNotifications.vue.d.ts +2 -0
  10. package/dist/types/{src/components → components}/BaseAutocomplete.vue.d.ts +18 -18
  11. package/dist/types/{src/components → components}/BaseAutocompleteDrawer.vue.d.ts +4 -4
  12. package/dist/types/{src/components → components}/BaseAutocompleteFetch.vue.d.ts +13 -13
  13. package/dist/types/{src/components → components}/BaseAvatar.vue.d.ts +5 -5
  14. package/dist/types/{src/components → components}/BaseAvatarGroup.vue.d.ts +2 -2
  15. package/dist/types/components/BaseBadge.vue.d.ts +60 -0
  16. package/dist/types/{src/components → components}/BaseBelongsTo.vue.d.ts +8 -8
  17. package/dist/types/{src/components → components}/BaseBelongsToFetch.vue.d.ts +8 -8
  18. package/dist/types/components/BaseBoolean.vue.d.ts +15 -0
  19. package/dist/types/{src/components → components}/BaseBreadcrumbs.vue.d.ts +1 -1
  20. package/dist/types/components/BaseButton.vue.d.ts +95 -0
  21. package/dist/types/{src/components → components}/BaseButtonGroup.vue.d.ts +7 -7
  22. package/dist/types/{src/components → components}/BaseCalendar.vue.d.ts +19 -19
  23. package/dist/types/{src/components → components}/BaseCard.vue.d.ts +1 -1
  24. package/dist/types/components/BaseCardRow.vue.d.ts +42 -0
  25. package/dist/types/{src/components → components}/BaseCharacterCounter.vue.d.ts +2 -2
  26. package/dist/types/{src/components → components}/BaseClipboard.vue.d.ts +1 -1
  27. package/dist/types/{src/components → components}/BaseColor.vue.d.ts +4 -4
  28. package/dist/types/{src/components → components}/BaseContainer.vue.d.ts +1 -1
  29. package/dist/types/{src/components → components}/BaseCounter.vue.d.ts +2 -2
  30. package/dist/types/{src/components → components}/BaseCropper.vue.d.ts +25 -42
  31. package/dist/types/components/BaseCropperModal.vue.d.ts +27 -0
  32. package/dist/types/{src/components → components}/BaseDataIterator.vue.d.ts +1 -1
  33. package/dist/types/components/BaseDataIteratorSectionBox.vue.d.ts +23 -0
  34. package/dist/types/components/BaseDataIteratorSectionButton.vue.d.ts +23 -0
  35. package/dist/types/{src/components → components}/BaseDataIteratorSectionColumns.vue.d.ts +245 -191
  36. package/dist/types/components/BaseDataIteratorSectionModal.vue.d.ts +29 -0
  37. package/dist/types/{src/components → components}/BaseDataTable.vue.d.ts +7 -7
  38. package/dist/types/components/BaseDataTableRowAction.vue.d.ts +35 -0
  39. package/dist/types/{src/components → components}/BaseDataTableTemplate.vue.d.ts +19 -25
  40. package/dist/types/components/BaseDatePicker.vue.d.ts +99 -0
  41. package/dist/types/{src/components → components}/BaseDateSelect.vue.d.ts +2 -2
  42. package/dist/types/{src/components → components}/BaseDescriptionList.vue.d.ts +1 -1
  43. package/dist/types/{src/components → components}/BaseDescriptionListItem.vue.d.ts +1 -1
  44. package/dist/types/{src/components → components}/BaseDialog.vue.d.ts +4 -4
  45. package/dist/types/{src/components → components}/BaseDisplayRelativeTime.vue.d.ts +2 -2
  46. package/dist/types/components/BaseDraggable.vue.d.ts +36 -0
  47. package/dist/types/{src/components → components}/BaseDropdown.vue.d.ts +1 -1
  48. package/dist/types/{src/components → components}/BaseDropdownAutocomplete.vue.d.ts +8 -8
  49. package/dist/types/{src/components → components}/BaseField.vue.d.ts +3 -3
  50. package/dist/types/{src/components → components}/BaseFieldI18n.vue.d.ts +5 -5
  51. package/dist/types/components/BaseFilePicker.vue.d.ts +69 -0
  52. package/dist/types/components/BaseFilePickerCrop.vue.d.ts +62 -0
  53. package/dist/types/components/BaseFileUploader.vue.d.ts +122 -0
  54. package/dist/types/{src/components → components}/BaseForm.vue.d.ts +4 -4
  55. package/dist/types/{src/components → components}/BaseGantt.vue.d.ts +141 -120
  56. package/dist/types/{src/components → components}/BaseHasMany.vue.d.ts +2 -2
  57. package/dist/types/components/BaseHeader.vue.d.ts +78 -0
  58. package/dist/types/components/BaseIconPicker.vue.d.ts +43 -0
  59. package/dist/types/{src/components → components}/BaseInput.vue.d.ts +15 -15
  60. package/dist/types/{src/components → components}/BaseInputError.vue.d.ts +1 -1
  61. package/dist/types/{src/components → components}/BaseInputLabel.vue.d.ts +1 -1
  62. package/dist/types/{src/components → components}/BaseInputPercent.vue.d.ts +8 -8
  63. package/dist/types/components/BaseJsonReader.vue.d.ts +40 -0
  64. package/dist/types/{src/components → components}/BaseLayoutNotificationDropdown.vue.d.ts +2 -2
  65. package/dist/types/{src/components → components}/BaseLayoutNotificationItem.vue.d.ts +1 -1
  66. package/dist/types/components/BaseLayoutNotificationItemContent.vue.d.ts +18 -0
  67. package/dist/types/{src/components → components}/BaseLayoutSidebar.vue.d.ts +2 -2
  68. package/dist/types/{src/components → components}/BaseLayoutSidebarConfigurable.vue.d.ts +3 -3
  69. package/dist/types/components/BaseLayoutStacked.vue.d.ts +59 -0
  70. package/dist/types/{src/components → components}/BaseLayoutStackedConfigurable.vue.d.ts +3 -3
  71. package/dist/types/{src/components → components}/BaseLoadingCover.vue.d.ts +4 -4
  72. package/dist/types/{src/components → components}/BaseMediaGallery.vue.d.ts +4 -4
  73. package/dist/types/{src/components → components}/BaseMediaGalleryItem.vue.d.ts +3 -3
  74. package/dist/types/{src/components → components}/BaseMediaItem.vue.d.ts +3 -3
  75. package/dist/types/{src/components → components}/BaseMediaLibrary.vue.d.ts +10 -10
  76. package/dist/types/{src/components → components}/BaseMediaList.vue.d.ts +4 -4
  77. package/dist/types/{src/components → components}/BaseMediaListItem.vue.d.ts +4 -4
  78. package/dist/types/{src/components → components}/BaseMediaPictures.vue.d.ts +4 -4
  79. package/dist/types/{src/components → components}/BaseMediaPicturesItem.vue.d.ts +3 -3
  80. package/dist/types/{src/components → components}/BaseMediaPreview.vue.d.ts +3 -3
  81. package/dist/types/{src/components → components}/BaseMenu.vue.d.ts +5 -5
  82. package/dist/types/{src/components → components}/BaseMenuItem.vue.d.ts +6 -6
  83. package/dist/types/{src/components → components}/BaseModalCenter.vue.d.ts +1 -1
  84. package/dist/types/{src/components → components}/BaseModalSide.vue.d.ts +1 -1
  85. package/dist/types/{src/components → components}/BaseNavbar.vue.d.ts +2 -2
  86. package/dist/types/{src/components → components}/BaseNavbarItem.vue.d.ts +11 -2
  87. package/dist/types/{src/components → components}/BaseNavbarItemContent.vue.d.ts +5 -5
  88. package/dist/types/{src/components → components}/BaseNavbarSideItem.vue.d.ts +2 -2
  89. package/dist/types/{src/components → components}/BaseNavbarSideItemContent.vue.d.ts +5 -5
  90. package/dist/types/{src/components → components}/BasePagination.vue.d.ts +1 -1
  91. package/dist/types/{src/components → components}/BasePanel.vue.d.ts +1 -1
  92. package/dist/types/{src/components → components}/BasePassword.vue.d.ts +5 -5
  93. package/dist/types/{src/components → components}/BaseProgressCircle.vue.d.ts +3 -3
  94. package/dist/types/{src/components → components}/BaseRadioGroup.vue.d.ts +3 -3
  95. package/dist/types/{src/components → components}/BaseReadMore.vue.d.ts +1 -1
  96. package/dist/types/{src/components → components}/BaseRichText.vue.d.ts +7 -7
  97. package/dist/types/{src/components → components}/BaseScrollColumn.vue.d.ts +2 -2
  98. package/dist/types/{src/components → components}/BaseSelect.vue.d.ts +5 -5
  99. package/dist/types/{src/components → components}/BaseShortcut.vue.d.ts +5 -5
  100. package/dist/types/components/BaseSideNavigation.vue.d.ts +36 -0
  101. package/dist/types/components/BaseSideNavigationItem.vue.d.ts +46 -0
  102. package/dist/types/{src/components → components}/BaseSkeleton.vue.d.ts +1 -1
  103. package/dist/types/{src/components → components}/BaseStatistic.vue.d.ts +2 -2
  104. package/dist/types/{src/components → components}/BaseStepper.vue.d.ts +1 -1
  105. package/dist/types/{src/components → components}/BaseStepperItem.vue.d.ts +1 -1
  106. package/dist/types/{src/components → components}/BaseSwitch.vue.d.ts +8 -8
  107. package/dist/types/{src/components → components}/BaseSystemAlert.vue.d.ts +4 -4
  108. package/dist/types/components/BaseTabItem.vue.d.ts +46 -0
  109. package/dist/types/components/BaseTable.vue.d.ts +58 -0
  110. package/dist/types/{src/components → components}/BaseTableBody.vue.d.ts +1 -1
  111. package/dist/types/components/BaseTableCell.vue.d.ts +68 -0
  112. package/dist/types/{src/components → components}/BaseTableColumn.vue.d.ts +9 -9
  113. package/dist/types/components/BaseTableHead.vue.d.ts +36 -0
  114. package/dist/types/components/BaseTableHeader.vue.d.ts +47 -0
  115. package/dist/types/components/BaseTableRow.vue.d.ts +66 -0
  116. package/dist/types/components/BaseTabs.vue.d.ts +36 -0
  117. package/dist/types/{src/components → components}/BaseTagAutocomplete.vue.d.ts +13 -13
  118. package/dist/types/{src/components → components}/BaseTagAutocompleteFetch.vue.d.ts +5 -5
  119. package/dist/types/{src/components → components}/BaseTextarea.vue.d.ts +7 -7
  120. package/dist/types/{src/components → components}/BaseTextareaAutoresize.vue.d.ts +8 -8
  121. package/dist/types/{src/components → components}/BaseTimePicker.vue.d.ts +3 -3
  122. package/dist/types/{src/components → components}/BaseTimeline.vue.d.ts +1 -1
  123. package/dist/types/{src/components → components}/BaseTimelineItem.vue.d.ts +1 -1
  124. package/dist/types/components/BaseToast.vue.d.ts +17 -0
  125. package/dist/types/components/BaseTooltip.vue.d.ts +47 -0
  126. package/dist/types/{src/components → components}/BaseUniqueCode.vue.d.ts +1 -1
  127. package/dist/types/{src/components → components}/SlotComponent.d.ts +1 -1
  128. package/dist/types/{src/services → services}/gantt/format.d.ts +4 -4
  129. package/dist/types/{src/services → services}/gantt/timescale.d.ts +2 -2
  130. package/dist/types/stories/PageInputSizes.vue.d.ts +2 -0
  131. package/dist/types/stories/PageShow.vue.d.ts +2 -0
  132. package/dist/types/svg/BaseEmptyState.vue.d.ts +2 -0
  133. package/dist/types/svg/BaseSpinnerLarge.vue.d.ts +2 -0
  134. package/dist/types/svg/BaseSpinnerSmall.vue.d.ts +2 -0
  135. package/dist/types/{src/types → types}/index.d.ts +1 -0
  136. package/package.json +58 -58
  137. package/src/assets/base-json-reader.css +32 -0
  138. package/src/assets/main.css +1 -0
  139. package/src/components/BaseActionItem.vue +2 -1
  140. package/src/components/BaseDataTableTemplate.vue +36 -44
  141. package/src/components/BaseJsonReader.stories.js +128 -0
  142. package/src/components/BaseJsonReader.vue +199 -0
  143. package/src/components/BaseLayoutNotificationItem.vue +1 -1
  144. package/src/components/BaseNavbarItem.vue +25 -2
  145. package/src/components/BaseScrollColumn.vue +0 -2
  146. package/src/components/BaseTimePicker.vue +0 -3
  147. package/src/types/index.ts +1 -0
  148. package/dist/types/src/components/BaseActionItem.vue.d.ts +0 -32
  149. package/dist/types/src/components/BaseActionItemButton.vue.d.ts +0 -25
  150. package/dist/types/src/components/BaseAddressForm.vue.d.ts +0 -121
  151. package/dist/types/src/components/BaseAlert.vue.d.ts +0 -68
  152. package/dist/types/src/components/BaseAppNotifications.vue.d.ts +0 -2
  153. package/dist/types/src/components/BaseBadge.vue.d.ts +0 -69
  154. package/dist/types/src/components/BaseBoolean.vue.d.ts +0 -10
  155. package/dist/types/src/components/BaseButton.vue.d.ts +0 -120
  156. package/dist/types/src/components/BaseCardRow.vue.d.ts +0 -33
  157. package/dist/types/src/components/BaseCropperModal.vue.d.ts +0 -28
  158. package/dist/types/src/components/BaseDataIteratorSectionBox.vue.d.ts +0 -20
  159. package/dist/types/src/components/BaseDataIteratorSectionButton.vue.d.ts +0 -25
  160. package/dist/types/src/components/BaseDataIteratorSectionModal.vue.d.ts +0 -32
  161. package/dist/types/src/components/BaseDataTableRowAction.vue.d.ts +0 -32
  162. package/dist/types/src/components/BaseDatePicker.vue.d.ts +0 -136
  163. package/dist/types/src/components/BaseDraggable.vue.d.ts +0 -51
  164. package/dist/types/src/components/BaseFilePicker.vue.d.ts +0 -74
  165. package/dist/types/src/components/BaseFilePickerCrop.vue.d.ts +0 -65
  166. package/dist/types/src/components/BaseFileUploader.vue.d.ts +0 -147
  167. package/dist/types/src/components/BaseHeader.vue.d.ts +0 -93
  168. package/dist/types/src/components/BaseIconPicker.vue.d.ts +0 -36
  169. package/dist/types/src/components/BaseLayoutNotificationItemContent.vue.d.ts +0 -21
  170. package/dist/types/src/components/BaseLayoutStacked.vue.d.ts +0 -56
  171. package/dist/types/src/components/BaseSideNavigation.vue.d.ts +0 -21
  172. package/dist/types/src/components/BaseSideNavigationItem.vue.d.ts +0 -41
  173. package/dist/types/src/components/BaseTabItem.vue.d.ts +0 -41
  174. package/dist/types/src/components/BaseTable.vue.d.ts +0 -59
  175. package/dist/types/src/components/BaseTableCell.vue.d.ts +0 -77
  176. package/dist/types/src/components/BaseTableHead.vue.d.ts +0 -21
  177. package/dist/types/src/components/BaseTableHeader.vue.d.ts +0 -40
  178. package/dist/types/src/components/BaseTableRow.vue.d.ts +0 -67
  179. package/dist/types/src/components/BaseTabs.vue.d.ts +0 -21
  180. package/dist/types/src/components/BaseToast.vue.d.ts +0 -20
  181. package/dist/types/src/components/BaseTooltip.vue.d.ts +0 -40
  182. package/dist/types/src/stories/PageInputSizes.vue.d.ts +0 -2
  183. package/dist/types/src/stories/PageShow.vue.d.ts +0 -2
  184. package/dist/types/src/svg/BaseEmptyState.vue.d.ts +0 -2
  185. package/dist/types/src/svg/BaseSpinnerLarge.vue.d.ts +0 -2
  186. package/dist/types/src/svg/BaseSpinnerSmall.vue.d.ts +0 -2
  187. /package/dist/types/{src/components → components}/index.d.ts +0 -0
  188. /package/dist/types/{src/composables → composables}/breakpoints.d.ts +0 -0
  189. /package/dist/types/{src/composables → composables}/clickOutside.d.ts +0 -0
  190. /package/dist/types/{src/composables → composables}/field.d.ts +0 -0
  191. /package/dist/types/{src/composables → composables}/hasOptions.d.ts +0 -0
  192. /package/dist/types/{src/composables → composables}/inputSize.d.ts +0 -0
  193. /package/dist/types/{src/composables → composables}/mediaQuery.d.ts +0 -0
  194. /package/dist/types/{src/composables → composables}/modal.d.ts +0 -0
  195. /package/dist/types/{src/composables → composables}/paginatedData.d.ts +0 -0
  196. /package/dist/types/{src/composables → composables}/tooltip.d.ts +0 -0
  197. /package/dist/types/{src/constants → constants}/MyConstants.d.ts +0 -0
  198. /package/dist/types/{src/constants → constants}/index.d.ts +0 -0
  199. /package/dist/types/{src/i18n → i18n}/index.d.ts +0 -0
  200. /package/dist/types/{src/index.d.ts → index.d.ts} +0 -0
  201. /package/dist/types/{src/services → services}/gantt/types.d.ts +0 -0
  202. /package/dist/types/{src/services → services}/table/classes.d.ts +0 -0
  203. /package/dist/types/{src/services → services}/table/types.d.ts +0 -0
  204. /package/dist/types/{src/stores → stores}/dialogs.d.ts +0 -0
  205. /package/dist/types/{src/stores → stores}/i18n.d.ts +0 -0
  206. /package/dist/types/{src/stores → stores}/notifications.d.ts +0 -0
  207. /package/dist/types/{src/stores → stores}/systemAlerts.d.ts +0 -0
  208. /package/dist/types/{src/types → types}/CalendarEvent.d.ts +0 -0
  209. /package/dist/types/{src/types → types}/Color.d.ts +0 -0
  210. /package/dist/types/{src/types → types}/Country.d.ts +0 -0
  211. /package/dist/types/{src/types → types}/ImagePickerResult.d.ts +0 -0
  212. /package/dist/types/{src/types → types}/Media.d.ts +0 -0
  213. /package/dist/types/{src/types → types}/Notification.d.ts +0 -0
  214. /package/dist/types/{src/types → types}/Region.d.ts +0 -0
  215. /package/dist/types/{src/types → types}/Status.d.ts +0 -0
  216. /package/dist/types/{src/types → types}/StepperItem.d.ts +0 -0
  217. /package/dist/types/{src/types → types}/TimelineItem.d.ts +0 -0
  218. /package/dist/types/{src/types → types}/UploadedFile.d.ts +0 -0
  219. /package/dist/types/{src/types → types}/User.d.ts +0 -0
  220. /package/dist/types/{src/utils → utils}/blob.d.ts +0 -0
  221. /package/dist/types/{src/utils → utils}/colors.d.ts +0 -0
  222. /package/dist/types/{src/utils → utils}/cropper/avatar.d.ts +0 -0
  223. /package/dist/types/{src/utils → utils}/cropper/cover.d.ts +0 -0
  224. /package/dist/types/{src/utils → utils}/cropper/presetInterface.d.ts +0 -0
  225. /package/dist/types/{src/utils → utils}/cropper/presets.d.ts +0 -0
  226. /package/dist/types/{src/utils → utils}/fileSizeFormat.d.ts +0 -0
  227. /package/dist/types/{src/utils → utils}/fileValidations.d.ts +0 -0
  228. /package/dist/types/{src/utils → utils}/getApiData.d.ts +0 -0
  229. /package/dist/types/{src/utils → utils}/index.d.ts +0 -0
  230. /package/dist/types/{src/utils → utils}/resizeImageFromURI.d.ts +0 -0
  231. /package/dist/types/{src/utils → utils}/scrollPreventer.d.ts +0 -0
  232. /package/dist/types/{src/utils → utils}/sizes.d.ts +0 -0
  233. /package/dist/types/{src/utils → utils}/slots.d.ts +0 -0
  234. /package/dist/types/{src/utils → utils}/toHumanList.d.ts +0 -0
@@ -0,0 +1,199 @@
1
+ <template>
2
+ <div
3
+ class="base-json-reader"
4
+ :class="classes"
5
+ @click="handleClick"
6
+ >
7
+ <div
8
+ v-html="renderObject(modelValue)"
9
+ />
10
+ </div>
11
+ </template>
12
+
13
+ <script lang="ts" setup>
14
+ import { Size, sizes } from '@/utils/sizes';
15
+ import { twMerge } from 'tailwind-merge';
16
+ import { defineProps } from 'vue';
17
+
18
+ interface JsonData {
19
+ [key: string]: string | number | null | undefined | JsonData[];
20
+ }
21
+
22
+ const props = withDefaults(
23
+ defineProps<{
24
+ modelValue: JsonData;
25
+ size?: Size;
26
+ variant?: 'list' | 'collapse';
27
+ }>(),
28
+ {
29
+ size: 'sm',
30
+ variant: 'list',
31
+ }
32
+ );
33
+
34
+ const classes = computed(() => {
35
+ const base = 'bg-slate-100 p-2 rounded-md text-sm text-slate-800';
36
+ const sizeConfig = sizes[props.size];
37
+
38
+ return twMerge(
39
+ base,
40
+ sizeConfig.fontSize,
41
+ );
42
+ });
43
+
44
+ const classSizeChevron = computed(() => {
45
+ const chevronSizes = {
46
+ xs: {
47
+ width: 'w-[1em]',
48
+ height: 'h-[1em]',
49
+ marginBottom: 'mb-[-2.5px]'
50
+ },
51
+ sm: {
52
+ width: 'w-[1.1em]',
53
+ height: 'h-[1.1em]',
54
+ marginBottom: 'mb-[-3.5px]'
55
+ },
56
+ md: {
57
+ width: 'w-[1.2em]',
58
+ height: 'h-[1.2em]',
59
+ marginBottom: 'mb-[-5px]'
60
+ },
61
+ };
62
+
63
+ const sizeConfig = chevronSizes[props.size];
64
+
65
+ return twMerge(
66
+ sizeConfig.height,
67
+ sizeConfig.width,
68
+ sizeConfig.marginBottom
69
+ );
70
+ });
71
+
72
+ const expandedKeys = ref<string[]>([]);
73
+
74
+ function toggleExpand(key: string) {
75
+ if (isExpanded(key)) {
76
+ expandedKeys.value = expandedKeys.value.filter(k => k !== key);
77
+ } else {
78
+ expandedKeys.value.push(key);
79
+ }
80
+ }
81
+
82
+ function isExpanded(key: string): boolean {
83
+ return expandedKeys.value.includes(key);
84
+ }
85
+
86
+ // Expand when created
87
+ function recursiveExpand(data: JsonData | JsonData[] , parentKey = '') {
88
+ if (props.variant !== 'collapse') {
89
+ return;
90
+ }
91
+
92
+ if (Array.isArray(data)) {
93
+ data.forEach((item, index) => {
94
+ const uniqueKey = parentKey ? `${parentKey}[${index}]` : `[${index}]`;
95
+ expandedKeys.value.push(uniqueKey);
96
+ recursiveExpand(item, uniqueKey);
97
+ });
98
+ } else {
99
+ Object.entries(data).forEach(([key, value], index) => {
100
+ const uniqueKey = parentKey ? `${parentKey}[${index}]` : `[${index}]`;
101
+ expandedKeys.value.push(uniqueKey);
102
+
103
+ if (typeof value === 'object' && value !== null) {
104
+ recursiveExpand(value, uniqueKey);
105
+ }
106
+ });
107
+ }
108
+ }
109
+
110
+ recursiveExpand(props.modelValue);
111
+
112
+ function handleClick(event: MouseEvent) {
113
+ if (props.variant !== 'collapse') {
114
+ return;
115
+ }
116
+
117
+ const target = event.target as HTMLElement;
118
+ if (target.classList.contains('chevron')) {
119
+ const key = target.dataset.key;
120
+
121
+ if (key) {
122
+ toggleExpand(key);
123
+ }
124
+ }
125
+ }
126
+
127
+ function renderContent(data: JsonData | JsonData[], uniqueKey = ''): string {
128
+ if (Array.isArray(data)) {
129
+ return renderArray(data, uniqueKey);
130
+ }
131
+
132
+ else if (typeof data === 'object' && data !== null) {
133
+ return renderObject(data, uniqueKey);
134
+ }
135
+
136
+ return `<span>${data}</span>`;
137
+ }
138
+
139
+ // If data is an array
140
+ function renderArray(data: JsonData[], parentKey = ''): string {
141
+ let result = '<ul>';
142
+
143
+ data.forEach((item, index) => {
144
+ const uniqueKey = parentKey ? `${parentKey}[${index}]` : `[${index}]`;
145
+
146
+ if (typeof item === 'object' && item !== null) {
147
+ result += `${renderContent(item, uniqueKey)}`;
148
+ }
149
+ else {
150
+ result += `<li>${renderContent(item, uniqueKey)}</li>`;
151
+ }
152
+
153
+ });
154
+
155
+ result += '</ul>';
156
+
157
+ return result;
158
+ }
159
+
160
+ // If data is an object
161
+ function renderObject(data: JsonData, parentKey = ''): string {
162
+ let result = '<ul>';
163
+
164
+ Object.entries(data).forEach(([key, value], index) => {
165
+ const uniqueKey = parentKey ? `${parentKey}[${index}]` : `[${index}]`;
166
+ console.log('uniqueKey', uniqueKey, 'parentKey', parentKey, 'index', index);
167
+
168
+
169
+ if (props.variant === 'collapse') {
170
+ result += `<li> <b data-key="${uniqueKey}" class="${(typeof value === 'object' && value !== null) ? 'chevron' : ''}">${key}</b>`;
171
+ } else {
172
+ result += `<li> <b>${key}</b>`;
173
+ }
174
+
175
+ if (typeof value === 'object' && value !== null) {
176
+ if (props.variant === 'collapse') {
177
+ result += `<span data-key="${uniqueKey}" class="chevron ml-[-2px]"> ${renderChevron(uniqueKey)} </span>`;
178
+ }
179
+
180
+ if (isExpanded(uniqueKey) || props.variant !== 'collapse') {
181
+ result += renderContent(value, uniqueKey);
182
+ }
183
+ } else {
184
+ result += ` <span>${value}</span>`;
185
+ }
186
+
187
+ result += '</li>';
188
+ });
189
+
190
+ result += '</ul>';
191
+
192
+ return result;
193
+ }
194
+
195
+ function renderChevron(key: string): string {
196
+ return isExpanded(key) ? `<span class="chevron heroicons--chevron-right-16-solid w-1 h-1 ${classSizeChevron.value}" data-key="${key}"></span>`
197
+ : `<span class="chevron heroicons--chevron-down-16-solid ${classSizeChevron.value}" data-key="${key}"></span>`;
198
+ }
199
+ </script>
@@ -43,7 +43,7 @@ const props = defineProps({
43
43
  },
44
44
  });
45
45
 
46
- function onClick(close: () => void | null) {
46
+ function onClick(close?: () => void | undefined) {
47
47
  emit('click', props.notification);
48
48
 
49
49
  if (close) {
@@ -18,8 +18,9 @@
18
18
  </BaseActionItem>
19
19
  <div
20
20
  v-if="item.actions && item.actions.length"
21
- class="absolute ring-1 ring-black ring-opacity-10 shadow-lg rounded-md invisible p-1 left-0 bg-white w-56 duration-100 opacity-0 translate-y-1 || group-hover:visible group-hover:opacity-100 group-hover:translate-y-0"
21
+ :class="dropdownClasses"
22
22
  :style="{
23
+ width: `${dropdownWidth}px`,
23
24
  top: `${height - 3}px`,
24
25
  }"
25
26
  >
@@ -56,8 +57,9 @@ import { ActionItem } from '@/types';
56
57
  import BaseActionItem from './BaseActionItem.vue';
57
58
  import BaseNavbarItemContent from './BaseNavbarItemContent.vue';
58
59
  import BaseMenuItem from './BaseMenuItem.vue';
60
+ import { twMerge } from 'tailwind-merge';
59
61
 
60
- defineProps({
62
+ const props = defineProps({
61
63
  item: {
62
64
  required: true,
63
65
  type: Object as PropType<ActionItem>,
@@ -70,6 +72,10 @@ defineProps({
70
72
  default: 'md',
71
73
  type: String as PropType<'xs' | 'sm' | 'md'>,
72
74
  },
75
+ twDropdown: {
76
+ default: undefined,
77
+ type: [String, Array] as PropType<string | string[]>,
78
+ },
73
79
  });
74
80
 
75
81
  const height = inject('navbar:height') as Ref<number>;
@@ -82,4 +88,21 @@ async function onClick() {
82
88
  emit('click');
83
89
  closeMenu();
84
90
  }
91
+
92
+ const dropdownWidth = computed(() => {
93
+ if (props.item.meta?.dropdownWidth) {
94
+ return props.item.meta.dropdownWidth;
95
+ }
96
+
97
+ return 256;
98
+ });
99
+
100
+ const dropdownClasses = computed(() => {
101
+ return twMerge(
102
+ 'absolute ring-1 ring-black ring-opacity-10 shadow-lg rounded-md invisible p-1 left-0 bg-white duration-100 opacity-0 translate-y-1',
103
+ 'group-hover:visible group-hover:opacity-100 group-hover:translate-y-0',
104
+ props.twDropdown
105
+ );
106
+ });
107
+
85
108
  </script>
@@ -77,8 +77,6 @@ const scrollToSelectedValue = (
77
77
  behavior: 'auto' | 'instant' | 'smooth' | undefined = 'smooth'
78
78
  ) => {
79
79
 
80
- console.log('timeContainer', timeContainer, 'timeValue', timeValue.value);
81
-
82
80
  if (!timeContainer || !timeValue.value) {
83
81
  return;
84
82
  }
@@ -345,9 +345,6 @@ function ok(close: () => void) {
345
345
 
346
346
  emitUpdate(time);
347
347
 
348
- console.log('time', time);
349
-
350
-
351
348
  close();
352
349
  }
353
350
 
@@ -88,6 +88,7 @@ export interface ActionItem {
88
88
  meta?: {
89
89
  line?: boolean;
90
90
  showSubItems?: 'always' | 'active' | 'never';
91
+ dropdownWidth?: number;
91
92
  [key: string]: any
92
93
  };
93
94
  actions?: ActionItem[];
@@ -1,32 +0,0 @@
1
- import { ActionItem } from '@/types';
2
- declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<{
3
- item: {
4
- type: import("vue").PropType<ActionItem>;
5
- required: true;
6
- };
7
- class: {
8
- type: import("vue").PropType<string | string[] | null>;
9
- };
10
- }, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
11
- click: (...args: any[]) => void;
12
- }, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
13
- item: {
14
- type: import("vue").PropType<ActionItem>;
15
- required: true;
16
- };
17
- class: {
18
- type: import("vue").PropType<string | string[] | null>;
19
- };
20
- }>> & {
21
- onClick?: ((...args: any[]) => any) | undefined;
22
- }, {}, {}>, {
23
- default?(_: {
24
- active: boolean;
25
- }): any;
26
- }>;
27
- export default _default;
28
- type __VLS_WithTemplateSlots<T, S> = T & {
29
- new (): {
30
- $slots: S;
31
- };
32
- };
@@ -1,25 +0,0 @@
1
- import { ActionItem } from '@/types';
2
- declare const _default: import("vue").DefineComponent<{
3
- item: {
4
- type: import("vue").PropType<ActionItem>;
5
- required: true;
6
- };
7
- size: {
8
- type: import("vue").PropType<"sm" | "md" | "lg">;
9
- required: true;
10
- default: string;
11
- };
12
- }, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
13
- item: {
14
- type: import("vue").PropType<ActionItem>;
15
- required: true;
16
- };
17
- size: {
18
- type: import("vue").PropType<"sm" | "md" | "lg">;
19
- required: true;
20
- default: string;
21
- };
22
- }>>, {
23
- size: 'sm' | 'md' | 'lg';
24
- }, {}>;
25
- export default _default;
@@ -1,121 +0,0 @@
1
- import { Country } from '@/types/Country';
2
- import { Region } from '@/types/Region';
3
- import { Size } from '@/utils/sizes';
4
- type Address = {
5
- address_1?: string | null;
6
- address_2?: string | null;
7
- postal_code?: string | null;
8
- city?: string | null;
9
- region?: string | null;
10
- country?: string | null;
11
- notes?: string | null;
12
- };
13
- declare const _default: import("vue").DefineComponent<{
14
- required: {
15
- type: import("vue").PropType<boolean>;
16
- };
17
- size: {
18
- type: import("vue").PropType<"xs" | "sm" | "md">;
19
- default: undefined;
20
- };
21
- modelValue: {
22
- type: import("vue").PropType<Address | null | undefined>;
23
- required: true;
24
- default: () => {};
25
- };
26
- prefix: {
27
- type: import("vue").PropType<string | null>;
28
- required: true;
29
- default: null;
30
- };
31
- countries: {
32
- type: import("vue").PropType<Country[]>;
33
- default: () => never[];
34
- };
35
- regions: {
36
- type: import("vue").PropType<Region[]>;
37
- default: () => never[];
38
- };
39
- restrictCountry: {
40
- type: import("vue").PropType<boolean>;
41
- default: boolean;
42
- };
43
- hideRegion: {
44
- type: import("vue").PropType<boolean>;
45
- default: boolean;
46
- };
47
- hideCountry: {
48
- type: import("vue").PropType<boolean>;
49
- default: boolean;
50
- };
51
- showNotes: {
52
- type: import("vue").PropType<boolean>;
53
- default: boolean;
54
- };
55
- requiredFields: {
56
- type: import("vue").PropType<(keyof Address)[]>;
57
- default: () => string[];
58
- };
59
- }, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
60
- "update:model-value": (...args: any[]) => void;
61
- }, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
62
- required: {
63
- type: import("vue").PropType<boolean>;
64
- };
65
- size: {
66
- type: import("vue").PropType<"xs" | "sm" | "md">;
67
- default: undefined;
68
- };
69
- modelValue: {
70
- type: import("vue").PropType<Address | null | undefined>;
71
- required: true;
72
- default: () => {};
73
- };
74
- prefix: {
75
- type: import("vue").PropType<string | null>;
76
- required: true;
77
- default: null;
78
- };
79
- countries: {
80
- type: import("vue").PropType<Country[]>;
81
- default: () => never[];
82
- };
83
- regions: {
84
- type: import("vue").PropType<Region[]>;
85
- default: () => never[];
86
- };
87
- restrictCountry: {
88
- type: import("vue").PropType<boolean>;
89
- default: boolean;
90
- };
91
- hideRegion: {
92
- type: import("vue").PropType<boolean>;
93
- default: boolean;
94
- };
95
- hideCountry: {
96
- type: import("vue").PropType<boolean>;
97
- default: boolean;
98
- };
99
- showNotes: {
100
- type: import("vue").PropType<boolean>;
101
- default: boolean;
102
- };
103
- requiredFields: {
104
- type: import("vue").PropType<(keyof Address)[]>;
105
- default: () => string[];
106
- };
107
- }>> & {
108
- "onUpdate:model-value"?: ((...args: any[]) => any) | undefined;
109
- }, {
110
- size: Size;
111
- modelValue: undefined | null | Address;
112
- prefix: string | null;
113
- countries: Country[];
114
- regions: Region[];
115
- restrictCountry: boolean;
116
- hideRegion: boolean;
117
- hideCountry: boolean;
118
- showNotes: boolean;
119
- requiredFields: (keyof Address)[];
120
- }, {}>;
121
- export default _default;
@@ -1,68 +0,0 @@
1
- declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<{
2
- class: {
3
- type: import("vue").PropType<string | string[]>;
4
- default: undefined;
5
- };
6
- title: {
7
- type: import("vue").PropType<string>;
8
- default: undefined;
9
- };
10
- color: {
11
- type: import("vue").PropType<string>;
12
- required: true;
13
- default: string;
14
- };
15
- icon: {
16
- type: import("vue").PropType<string>;
17
- default: undefined;
18
- };
19
- showIcon: {
20
- type: import("vue").PropType<boolean>;
21
- default: boolean;
22
- };
23
- bordered: {
24
- type: import("vue").PropType<boolean>;
25
- default: boolean;
26
- };
27
- }, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
28
- class: {
29
- type: import("vue").PropType<string | string[]>;
30
- default: undefined;
31
- };
32
- title: {
33
- type: import("vue").PropType<string>;
34
- default: undefined;
35
- };
36
- color: {
37
- type: import("vue").PropType<string>;
38
- required: true;
39
- default: string;
40
- };
41
- icon: {
42
- type: import("vue").PropType<string>;
43
- default: undefined;
44
- };
45
- showIcon: {
46
- type: import("vue").PropType<boolean>;
47
- default: boolean;
48
- };
49
- bordered: {
50
- type: import("vue").PropType<boolean>;
51
- default: boolean;
52
- };
53
- }>>, {
54
- class: string | string[];
55
- title: string;
56
- color: string;
57
- icon: string;
58
- showIcon: boolean;
59
- bordered: boolean;
60
- }, {}>, {
61
- default?(_: {}): any;
62
- }>;
63
- export default _default;
64
- type __VLS_WithTemplateSlots<T, S> = T & {
65
- new (): {
66
- $slots: S;
67
- };
68
- };
@@ -1,2 +0,0 @@
1
- declare const _default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}, {}>;
2
- export default _default;
@@ -1,69 +0,0 @@
1
- declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<{
2
- class: {
3
- type: import("vue").PropType<string | string[]>;
4
- default: undefined;
5
- };
6
- color: {
7
- type: import("vue").PropType<string>;
8
- default: string;
9
- };
10
- icon: {
11
- type: import("vue").PropType<string>;
12
- default: undefined;
13
- };
14
- bordered: {
15
- type: import("vue").PropType<boolean>;
16
- };
17
- size: {
18
- type: import("vue").PropType<string>;
19
- default: string;
20
- };
21
- contrast: {
22
- type: import("vue").PropType<"high" | "low">;
23
- default: string;
24
- };
25
- wrap: {
26
- type: import("vue").PropType<boolean>;
27
- };
28
- }, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
29
- class: {
30
- type: import("vue").PropType<string | string[]>;
31
- default: undefined;
32
- };
33
- color: {
34
- type: import("vue").PropType<string>;
35
- default: string;
36
- };
37
- icon: {
38
- type: import("vue").PropType<string>;
39
- default: undefined;
40
- };
41
- bordered: {
42
- type: import("vue").PropType<boolean>;
43
- };
44
- size: {
45
- type: import("vue").PropType<string>;
46
- default: string;
47
- };
48
- contrast: {
49
- type: import("vue").PropType<"high" | "low">;
50
- default: string;
51
- };
52
- wrap: {
53
- type: import("vue").PropType<boolean>;
54
- };
55
- }>>, {
56
- class: string | string[];
57
- color: string;
58
- icon: string;
59
- size: string;
60
- contrast: "high" | "low";
61
- }, {}>, {
62
- default?(_: {}): any;
63
- }>;
64
- export default _default;
65
- type __VLS_WithTemplateSlots<T, S> = T & {
66
- new (): {
67
- $slots: S;
68
- };
69
- };
@@ -1,10 +0,0 @@
1
- declare const _default: import("vue").DefineComponent<{
2
- modelValue: {
3
- type: import("vue").PropType<string | number | boolean | null>;
4
- };
5
- }, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
6
- modelValue: {
7
- type: import("vue").PropType<string | number | boolean | null>;
8
- };
9
- }>>, {}, {}>;
10
- export default _default;