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.
- package/dist/sprintify-ui.es.js +15301 -15194
- package/dist/style.css +1 -1
- package/dist/types/components/BaseActionItem.vue.d.ts +31 -0
- package/dist/types/components/BaseActionItemButton.vue.d.ts +32 -0
- package/dist/types/components/BaseAddressForm.vue.d.ts +92 -0
- package/dist/types/components/BaseAlert.vue.d.ts +61 -0
- package/dist/types/{src/components → components}/BaseApp.vue.d.ts +1 -1
- package/dist/types/{src/components → components}/BaseAppDialogs.vue.d.ts +2 -2
- package/dist/types/components/BaseAppNotifications.vue.d.ts +2 -0
- package/dist/types/{src/components → components}/BaseAutocomplete.vue.d.ts +18 -18
- package/dist/types/{src/components → components}/BaseAutocompleteDrawer.vue.d.ts +4 -4
- package/dist/types/{src/components → components}/BaseAutocompleteFetch.vue.d.ts +13 -13
- package/dist/types/{src/components → components}/BaseAvatar.vue.d.ts +5 -5
- package/dist/types/{src/components → components}/BaseAvatarGroup.vue.d.ts +2 -2
- package/dist/types/components/BaseBadge.vue.d.ts +60 -0
- package/dist/types/{src/components → components}/BaseBelongsTo.vue.d.ts +8 -8
- package/dist/types/{src/components → components}/BaseBelongsToFetch.vue.d.ts +8 -8
- package/dist/types/components/BaseBoolean.vue.d.ts +15 -0
- package/dist/types/{src/components → components}/BaseBreadcrumbs.vue.d.ts +1 -1
- package/dist/types/components/BaseButton.vue.d.ts +95 -0
- package/dist/types/{src/components → components}/BaseButtonGroup.vue.d.ts +7 -7
- package/dist/types/{src/components → components}/BaseCalendar.vue.d.ts +19 -19
- package/dist/types/{src/components → components}/BaseCard.vue.d.ts +1 -1
- package/dist/types/components/BaseCardRow.vue.d.ts +42 -0
- package/dist/types/{src/components → components}/BaseCharacterCounter.vue.d.ts +2 -2
- package/dist/types/{src/components → components}/BaseClipboard.vue.d.ts +1 -1
- package/dist/types/{src/components → components}/BaseColor.vue.d.ts +4 -4
- package/dist/types/{src/components → components}/BaseContainer.vue.d.ts +1 -1
- package/dist/types/{src/components → components}/BaseCounter.vue.d.ts +2 -2
- package/dist/types/{src/components → components}/BaseCropper.vue.d.ts +25 -42
- package/dist/types/components/BaseCropperModal.vue.d.ts +27 -0
- package/dist/types/{src/components → components}/BaseDataIterator.vue.d.ts +1 -1
- package/dist/types/components/BaseDataIteratorSectionBox.vue.d.ts +23 -0
- package/dist/types/components/BaseDataIteratorSectionButton.vue.d.ts +23 -0
- package/dist/types/{src/components → components}/BaseDataIteratorSectionColumns.vue.d.ts +245 -191
- package/dist/types/components/BaseDataIteratorSectionModal.vue.d.ts +29 -0
- package/dist/types/{src/components → components}/BaseDataTable.vue.d.ts +7 -7
- package/dist/types/components/BaseDataTableRowAction.vue.d.ts +35 -0
- package/dist/types/{src/components → components}/BaseDataTableTemplate.vue.d.ts +19 -25
- package/dist/types/components/BaseDatePicker.vue.d.ts +99 -0
- package/dist/types/{src/components → components}/BaseDateSelect.vue.d.ts +2 -2
- package/dist/types/{src/components → components}/BaseDescriptionList.vue.d.ts +1 -1
- package/dist/types/{src/components → components}/BaseDescriptionListItem.vue.d.ts +1 -1
- package/dist/types/{src/components → components}/BaseDialog.vue.d.ts +4 -4
- package/dist/types/{src/components → components}/BaseDisplayRelativeTime.vue.d.ts +2 -2
- package/dist/types/components/BaseDraggable.vue.d.ts +36 -0
- package/dist/types/{src/components → components}/BaseDropdown.vue.d.ts +1 -1
- package/dist/types/{src/components → components}/BaseDropdownAutocomplete.vue.d.ts +8 -8
- package/dist/types/{src/components → components}/BaseField.vue.d.ts +3 -3
- package/dist/types/{src/components → components}/BaseFieldI18n.vue.d.ts +5 -5
- package/dist/types/components/BaseFilePicker.vue.d.ts +69 -0
- package/dist/types/components/BaseFilePickerCrop.vue.d.ts +62 -0
- package/dist/types/components/BaseFileUploader.vue.d.ts +122 -0
- package/dist/types/{src/components → components}/BaseForm.vue.d.ts +4 -4
- package/dist/types/{src/components → components}/BaseGantt.vue.d.ts +141 -120
- package/dist/types/{src/components → components}/BaseHasMany.vue.d.ts +2 -2
- package/dist/types/components/BaseHeader.vue.d.ts +78 -0
- package/dist/types/components/BaseIconPicker.vue.d.ts +43 -0
- package/dist/types/{src/components → components}/BaseInput.vue.d.ts +15 -15
- package/dist/types/{src/components → components}/BaseInputError.vue.d.ts +1 -1
- package/dist/types/{src/components → components}/BaseInputLabel.vue.d.ts +1 -1
- package/dist/types/{src/components → components}/BaseInputPercent.vue.d.ts +8 -8
- package/dist/types/components/BaseJsonReader.vue.d.ts +40 -0
- package/dist/types/{src/components → components}/BaseLayoutNotificationDropdown.vue.d.ts +2 -2
- package/dist/types/{src/components → components}/BaseLayoutNotificationItem.vue.d.ts +1 -1
- package/dist/types/components/BaseLayoutNotificationItemContent.vue.d.ts +18 -0
- package/dist/types/{src/components → components}/BaseLayoutSidebar.vue.d.ts +2 -2
- package/dist/types/{src/components → components}/BaseLayoutSidebarConfigurable.vue.d.ts +3 -3
- package/dist/types/components/BaseLayoutStacked.vue.d.ts +59 -0
- package/dist/types/{src/components → components}/BaseLayoutStackedConfigurable.vue.d.ts +3 -3
- package/dist/types/{src/components → components}/BaseLoadingCover.vue.d.ts +4 -4
- package/dist/types/{src/components → components}/BaseMediaGallery.vue.d.ts +4 -4
- package/dist/types/{src/components → components}/BaseMediaGalleryItem.vue.d.ts +3 -3
- package/dist/types/{src/components → components}/BaseMediaItem.vue.d.ts +3 -3
- package/dist/types/{src/components → components}/BaseMediaLibrary.vue.d.ts +10 -10
- package/dist/types/{src/components → components}/BaseMediaList.vue.d.ts +4 -4
- package/dist/types/{src/components → components}/BaseMediaListItem.vue.d.ts +4 -4
- package/dist/types/{src/components → components}/BaseMediaPictures.vue.d.ts +4 -4
- package/dist/types/{src/components → components}/BaseMediaPicturesItem.vue.d.ts +3 -3
- package/dist/types/{src/components → components}/BaseMediaPreview.vue.d.ts +3 -3
- package/dist/types/{src/components → components}/BaseMenu.vue.d.ts +5 -5
- package/dist/types/{src/components → components}/BaseMenuItem.vue.d.ts +6 -6
- package/dist/types/{src/components → components}/BaseModalCenter.vue.d.ts +1 -1
- package/dist/types/{src/components → components}/BaseModalSide.vue.d.ts +1 -1
- package/dist/types/{src/components → components}/BaseNavbar.vue.d.ts +2 -2
- package/dist/types/{src/components → components}/BaseNavbarItem.vue.d.ts +11 -2
- package/dist/types/{src/components → components}/BaseNavbarItemContent.vue.d.ts +5 -5
- package/dist/types/{src/components → components}/BaseNavbarSideItem.vue.d.ts +2 -2
- package/dist/types/{src/components → components}/BaseNavbarSideItemContent.vue.d.ts +5 -5
- package/dist/types/{src/components → components}/BasePagination.vue.d.ts +1 -1
- package/dist/types/{src/components → components}/BasePanel.vue.d.ts +1 -1
- package/dist/types/{src/components → components}/BasePassword.vue.d.ts +5 -5
- package/dist/types/{src/components → components}/BaseProgressCircle.vue.d.ts +3 -3
- package/dist/types/{src/components → components}/BaseRadioGroup.vue.d.ts +3 -3
- package/dist/types/{src/components → components}/BaseReadMore.vue.d.ts +1 -1
- package/dist/types/{src/components → components}/BaseRichText.vue.d.ts +7 -7
- package/dist/types/{src/components → components}/BaseScrollColumn.vue.d.ts +2 -2
- package/dist/types/{src/components → components}/BaseSelect.vue.d.ts +5 -5
- package/dist/types/{src/components → components}/BaseShortcut.vue.d.ts +5 -5
- package/dist/types/components/BaseSideNavigation.vue.d.ts +36 -0
- package/dist/types/components/BaseSideNavigationItem.vue.d.ts +46 -0
- package/dist/types/{src/components → components}/BaseSkeleton.vue.d.ts +1 -1
- package/dist/types/{src/components → components}/BaseStatistic.vue.d.ts +2 -2
- package/dist/types/{src/components → components}/BaseStepper.vue.d.ts +1 -1
- package/dist/types/{src/components → components}/BaseStepperItem.vue.d.ts +1 -1
- package/dist/types/{src/components → components}/BaseSwitch.vue.d.ts +8 -8
- package/dist/types/{src/components → components}/BaseSystemAlert.vue.d.ts +4 -4
- package/dist/types/components/BaseTabItem.vue.d.ts +46 -0
- package/dist/types/components/BaseTable.vue.d.ts +58 -0
- package/dist/types/{src/components → components}/BaseTableBody.vue.d.ts +1 -1
- package/dist/types/components/BaseTableCell.vue.d.ts +68 -0
- package/dist/types/{src/components → components}/BaseTableColumn.vue.d.ts +9 -9
- package/dist/types/components/BaseTableHead.vue.d.ts +36 -0
- package/dist/types/components/BaseTableHeader.vue.d.ts +47 -0
- package/dist/types/components/BaseTableRow.vue.d.ts +66 -0
- package/dist/types/components/BaseTabs.vue.d.ts +36 -0
- package/dist/types/{src/components → components}/BaseTagAutocomplete.vue.d.ts +13 -13
- package/dist/types/{src/components → components}/BaseTagAutocompleteFetch.vue.d.ts +5 -5
- package/dist/types/{src/components → components}/BaseTextarea.vue.d.ts +7 -7
- package/dist/types/{src/components → components}/BaseTextareaAutoresize.vue.d.ts +8 -8
- package/dist/types/{src/components → components}/BaseTimePicker.vue.d.ts +3 -3
- package/dist/types/{src/components → components}/BaseTimeline.vue.d.ts +1 -1
- package/dist/types/{src/components → components}/BaseTimelineItem.vue.d.ts +1 -1
- package/dist/types/components/BaseToast.vue.d.ts +17 -0
- package/dist/types/components/BaseTooltip.vue.d.ts +47 -0
- package/dist/types/{src/components → components}/BaseUniqueCode.vue.d.ts +1 -1
- package/dist/types/{src/components → components}/SlotComponent.d.ts +1 -1
- package/dist/types/{src/services → services}/gantt/format.d.ts +4 -4
- package/dist/types/{src/services → services}/gantt/timescale.d.ts +2 -2
- package/dist/types/stories/PageInputSizes.vue.d.ts +2 -0
- package/dist/types/stories/PageShow.vue.d.ts +2 -0
- package/dist/types/svg/BaseEmptyState.vue.d.ts +2 -0
- package/dist/types/svg/BaseSpinnerLarge.vue.d.ts +2 -0
- package/dist/types/svg/BaseSpinnerSmall.vue.d.ts +2 -0
- package/dist/types/{src/types → types}/index.d.ts +1 -0
- package/package.json +58 -58
- package/src/assets/base-json-reader.css +32 -0
- package/src/assets/main.css +1 -0
- package/src/components/BaseActionItem.vue +2 -1
- package/src/components/BaseDataTableTemplate.vue +36 -44
- package/src/components/BaseJsonReader.stories.js +128 -0
- package/src/components/BaseJsonReader.vue +199 -0
- package/src/components/BaseLayoutNotificationItem.vue +1 -1
- package/src/components/BaseNavbarItem.vue +25 -2
- package/src/components/BaseScrollColumn.vue +0 -2
- package/src/components/BaseTimePicker.vue +0 -3
- package/src/types/index.ts +1 -0
- package/dist/types/src/components/BaseActionItem.vue.d.ts +0 -32
- package/dist/types/src/components/BaseActionItemButton.vue.d.ts +0 -25
- package/dist/types/src/components/BaseAddressForm.vue.d.ts +0 -121
- package/dist/types/src/components/BaseAlert.vue.d.ts +0 -68
- package/dist/types/src/components/BaseAppNotifications.vue.d.ts +0 -2
- package/dist/types/src/components/BaseBadge.vue.d.ts +0 -69
- package/dist/types/src/components/BaseBoolean.vue.d.ts +0 -10
- package/dist/types/src/components/BaseButton.vue.d.ts +0 -120
- package/dist/types/src/components/BaseCardRow.vue.d.ts +0 -33
- package/dist/types/src/components/BaseCropperModal.vue.d.ts +0 -28
- package/dist/types/src/components/BaseDataIteratorSectionBox.vue.d.ts +0 -20
- package/dist/types/src/components/BaseDataIteratorSectionButton.vue.d.ts +0 -25
- package/dist/types/src/components/BaseDataIteratorSectionModal.vue.d.ts +0 -32
- package/dist/types/src/components/BaseDataTableRowAction.vue.d.ts +0 -32
- package/dist/types/src/components/BaseDatePicker.vue.d.ts +0 -136
- package/dist/types/src/components/BaseDraggable.vue.d.ts +0 -51
- package/dist/types/src/components/BaseFilePicker.vue.d.ts +0 -74
- package/dist/types/src/components/BaseFilePickerCrop.vue.d.ts +0 -65
- package/dist/types/src/components/BaseFileUploader.vue.d.ts +0 -147
- package/dist/types/src/components/BaseHeader.vue.d.ts +0 -93
- package/dist/types/src/components/BaseIconPicker.vue.d.ts +0 -36
- package/dist/types/src/components/BaseLayoutNotificationItemContent.vue.d.ts +0 -21
- package/dist/types/src/components/BaseLayoutStacked.vue.d.ts +0 -56
- package/dist/types/src/components/BaseSideNavigation.vue.d.ts +0 -21
- package/dist/types/src/components/BaseSideNavigationItem.vue.d.ts +0 -41
- package/dist/types/src/components/BaseTabItem.vue.d.ts +0 -41
- package/dist/types/src/components/BaseTable.vue.d.ts +0 -59
- package/dist/types/src/components/BaseTableCell.vue.d.ts +0 -77
- package/dist/types/src/components/BaseTableHead.vue.d.ts +0 -21
- package/dist/types/src/components/BaseTableHeader.vue.d.ts +0 -40
- package/dist/types/src/components/BaseTableRow.vue.d.ts +0 -67
- package/dist/types/src/components/BaseTabs.vue.d.ts +0 -21
- package/dist/types/src/components/BaseToast.vue.d.ts +0 -20
- package/dist/types/src/components/BaseTooltip.vue.d.ts +0 -40
- package/dist/types/src/stories/PageInputSizes.vue.d.ts +0 -2
- package/dist/types/src/stories/PageShow.vue.d.ts +0 -2
- package/dist/types/src/svg/BaseEmptyState.vue.d.ts +0 -2
- package/dist/types/src/svg/BaseSpinnerLarge.vue.d.ts +0 -2
- package/dist/types/src/svg/BaseSpinnerSmall.vue.d.ts +0 -2
- /package/dist/types/{src/components → components}/index.d.ts +0 -0
- /package/dist/types/{src/composables → composables}/breakpoints.d.ts +0 -0
- /package/dist/types/{src/composables → composables}/clickOutside.d.ts +0 -0
- /package/dist/types/{src/composables → composables}/field.d.ts +0 -0
- /package/dist/types/{src/composables → composables}/hasOptions.d.ts +0 -0
- /package/dist/types/{src/composables → composables}/inputSize.d.ts +0 -0
- /package/dist/types/{src/composables → composables}/mediaQuery.d.ts +0 -0
- /package/dist/types/{src/composables → composables}/modal.d.ts +0 -0
- /package/dist/types/{src/composables → composables}/paginatedData.d.ts +0 -0
- /package/dist/types/{src/composables → composables}/tooltip.d.ts +0 -0
- /package/dist/types/{src/constants → constants}/MyConstants.d.ts +0 -0
- /package/dist/types/{src/constants → constants}/index.d.ts +0 -0
- /package/dist/types/{src/i18n → i18n}/index.d.ts +0 -0
- /package/dist/types/{src/index.d.ts → index.d.ts} +0 -0
- /package/dist/types/{src/services → services}/gantt/types.d.ts +0 -0
- /package/dist/types/{src/services → services}/table/classes.d.ts +0 -0
- /package/dist/types/{src/services → services}/table/types.d.ts +0 -0
- /package/dist/types/{src/stores → stores}/dialogs.d.ts +0 -0
- /package/dist/types/{src/stores → stores}/i18n.d.ts +0 -0
- /package/dist/types/{src/stores → stores}/notifications.d.ts +0 -0
- /package/dist/types/{src/stores → stores}/systemAlerts.d.ts +0 -0
- /package/dist/types/{src/types → types}/CalendarEvent.d.ts +0 -0
- /package/dist/types/{src/types → types}/Color.d.ts +0 -0
- /package/dist/types/{src/types → types}/Country.d.ts +0 -0
- /package/dist/types/{src/types → types}/ImagePickerResult.d.ts +0 -0
- /package/dist/types/{src/types → types}/Media.d.ts +0 -0
- /package/dist/types/{src/types → types}/Notification.d.ts +0 -0
- /package/dist/types/{src/types → types}/Region.d.ts +0 -0
- /package/dist/types/{src/types → types}/Status.d.ts +0 -0
- /package/dist/types/{src/types → types}/StepperItem.d.ts +0 -0
- /package/dist/types/{src/types → types}/TimelineItem.d.ts +0 -0
- /package/dist/types/{src/types → types}/UploadedFile.d.ts +0 -0
- /package/dist/types/{src/types → types}/User.d.ts +0 -0
- /package/dist/types/{src/utils → utils}/blob.d.ts +0 -0
- /package/dist/types/{src/utils → utils}/colors.d.ts +0 -0
- /package/dist/types/{src/utils → utils}/cropper/avatar.d.ts +0 -0
- /package/dist/types/{src/utils → utils}/cropper/cover.d.ts +0 -0
- /package/dist/types/{src/utils → utils}/cropper/presetInterface.d.ts +0 -0
- /package/dist/types/{src/utils → utils}/cropper/presets.d.ts +0 -0
- /package/dist/types/{src/utils → utils}/fileSizeFormat.d.ts +0 -0
- /package/dist/types/{src/utils → utils}/fileValidations.d.ts +0 -0
- /package/dist/types/{src/utils → utils}/getApiData.d.ts +0 -0
- /package/dist/types/{src/utils → utils}/index.d.ts +0 -0
- /package/dist/types/{src/utils → utils}/resizeImageFromURI.d.ts +0 -0
- /package/dist/types/{src/utils → utils}/scrollPreventer.d.ts +0 -0
- /package/dist/types/{src/utils → utils}/sizes.d.ts +0 -0
- /package/dist/types/{src/utils → utils}/slots.d.ts +0 -0
- /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>
|
|
@@ -18,8 +18,9 @@
|
|
|
18
18
|
</BaseActionItem>
|
|
19
19
|
<div
|
|
20
20
|
v-if="item.actions && item.actions.length"
|
|
21
|
-
class="
|
|
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>
|
package/src/types/index.ts
CHANGED
|
@@ -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;
|