sprintify-ui 0.8.3 → 0.8.4
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 +2859 -2797
- package/dist/types/components/BaseCollapse.vue.d.ts +86 -0
- package/dist/types/components/BaseDataIteratorSectionColumns.vue.d.ts +0 -8
- package/dist/types/components/BaseDataTableTemplate.vue.d.ts +0 -2
- package/dist/types/components/BaseLoadingCover.vue.d.ts +1 -1
- package/dist/types/components/index.d.ts +2 -1
- package/dist/types/types/index.d.ts +0 -2
- package/package.json +1 -1
- package/src/components/BaseCollapse.stories.js +169 -0
- package/src/components/BaseCollapse.vue +98 -0
- package/src/components/index.ts +3 -1
- package/src/types/index.ts +0 -4
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
declare function toggle(): void;
|
|
2
|
+
declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<__VLS_WithDefaults<__VLS_TypePropsToOption<{
|
|
3
|
+
defaultOpen?: boolean | undefined;
|
|
4
|
+
icon?: string | undefined;
|
|
5
|
+
iconPosition?: "right" | "left" | undefined;
|
|
6
|
+
isOpenIconClass?: string | undefined;
|
|
7
|
+
isCloseIconClass?: string | undefined;
|
|
8
|
+
twIcon?: string | string[] | null | undefined;
|
|
9
|
+
twHeader?: string | string[] | null | undefined;
|
|
10
|
+
twTitle?: string | string[] | null | undefined;
|
|
11
|
+
twContent?: string | string[] | null | undefined;
|
|
12
|
+
}>, {
|
|
13
|
+
defaultOpen: boolean;
|
|
14
|
+
icon: string;
|
|
15
|
+
iconPosition: string;
|
|
16
|
+
twIcon: null;
|
|
17
|
+
twHeader: null;
|
|
18
|
+
twTitle: null;
|
|
19
|
+
twContent: null;
|
|
20
|
+
isOpenIconClass: string;
|
|
21
|
+
isCloseIconClass: string;
|
|
22
|
+
}>, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<{
|
|
23
|
+
defaultOpen?: boolean | undefined;
|
|
24
|
+
icon?: string | undefined;
|
|
25
|
+
iconPosition?: "right" | "left" | undefined;
|
|
26
|
+
isOpenIconClass?: string | undefined;
|
|
27
|
+
isCloseIconClass?: string | undefined;
|
|
28
|
+
twIcon?: string | string[] | null | undefined;
|
|
29
|
+
twHeader?: string | string[] | null | undefined;
|
|
30
|
+
twTitle?: string | string[] | null | undefined;
|
|
31
|
+
twContent?: string | string[] | null | undefined;
|
|
32
|
+
}>, {
|
|
33
|
+
defaultOpen: boolean;
|
|
34
|
+
icon: string;
|
|
35
|
+
iconPosition: string;
|
|
36
|
+
twIcon: null;
|
|
37
|
+
twHeader: null;
|
|
38
|
+
twTitle: null;
|
|
39
|
+
twContent: null;
|
|
40
|
+
isOpenIconClass: string;
|
|
41
|
+
isCloseIconClass: string;
|
|
42
|
+
}>>>, {
|
|
43
|
+
icon: string;
|
|
44
|
+
iconPosition: "right" | "left";
|
|
45
|
+
defaultOpen: boolean;
|
|
46
|
+
isOpenIconClass: string;
|
|
47
|
+
isCloseIconClass: string;
|
|
48
|
+
twIcon: string | string[] | null;
|
|
49
|
+
twHeader: string | string[] | null;
|
|
50
|
+
twTitle: string | string[] | null;
|
|
51
|
+
twContent: string | string[] | null;
|
|
52
|
+
}, {}>, {
|
|
53
|
+
header?(_: {
|
|
54
|
+
open: boolean;
|
|
55
|
+
toggle: typeof toggle;
|
|
56
|
+
}): any;
|
|
57
|
+
title?(_: {
|
|
58
|
+
open: boolean;
|
|
59
|
+
}): any;
|
|
60
|
+
content?(_: {
|
|
61
|
+
open: boolean;
|
|
62
|
+
}): any;
|
|
63
|
+
}>;
|
|
64
|
+
export default _default;
|
|
65
|
+
type __VLS_WithDefaults<P, D> = {
|
|
66
|
+
[K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_Prettify<P[K] & {
|
|
67
|
+
default: D[K];
|
|
68
|
+
}> : P[K];
|
|
69
|
+
};
|
|
70
|
+
type __VLS_Prettify<T> = {
|
|
71
|
+
[K in keyof T]: T[K];
|
|
72
|
+
} & {};
|
|
73
|
+
type __VLS_WithTemplateSlots<T, S> = T & {
|
|
74
|
+
new (): {
|
|
75
|
+
$slots: S;
|
|
76
|
+
};
|
|
77
|
+
};
|
|
78
|
+
type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
|
|
79
|
+
type __VLS_TypePropsToOption<T> = {
|
|
80
|
+
[K in keyof T]-?: {} extends Pick<T, K> ? {
|
|
81
|
+
type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
|
|
82
|
+
} : {
|
|
83
|
+
type: import('vue').PropType<T[K]>;
|
|
84
|
+
required: true;
|
|
85
|
+
};
|
|
86
|
+
};
|
|
@@ -235,8 +235,6 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
235
235
|
style: {
|
|
236
236
|
width: number | undefined;
|
|
237
237
|
};
|
|
238
|
-
thAttrs: (column: import("@/index.js").BaseTableColumnData) => Record<string, any>;
|
|
239
|
-
tdAttrs: (row: import("@/index.js").Row, column: import("@/index.js").BaseTableColumnData) => Record<string, any>;
|
|
240
238
|
}[]>;
|
|
241
239
|
uncheckAll: () => void;
|
|
242
240
|
scrollTop: () => void;
|
|
@@ -385,8 +383,6 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
385
383
|
style: {
|
|
386
384
|
width: number | undefined;
|
|
387
385
|
};
|
|
388
|
-
thAttrs: (column: import("@/index.js").BaseTableColumnData) => Record<string, any>;
|
|
389
|
-
tdAttrs: (row: import("@/index.js").Row, column: import("@/index.js").BaseTableColumnData) => Record<string, any>;
|
|
390
386
|
}[]>;
|
|
391
387
|
uncheckAll: () => void;
|
|
392
388
|
scrollTop: () => void;
|
|
@@ -643,8 +639,6 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
643
639
|
style: {
|
|
644
640
|
width: number | undefined;
|
|
645
641
|
};
|
|
646
|
-
thAttrs: (column: import("@/index.js").BaseTableColumnData) => Record<string, any>;
|
|
647
|
-
tdAttrs: (row: import("@/index.js").Row, column: import("@/index.js").BaseTableColumnData) => Record<string, any>;
|
|
648
642
|
}[]>;
|
|
649
643
|
uncheckAll: () => void;
|
|
650
644
|
scrollTop: () => void;
|
|
@@ -793,8 +787,6 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
793
787
|
style: {
|
|
794
788
|
width: number | undefined;
|
|
795
789
|
};
|
|
796
|
-
thAttrs: (column: import("@/index.js").BaseTableColumnData) => Record<string, any>;
|
|
797
|
-
tdAttrs: (row: import("@/index.js").Row, column: import("@/index.js").BaseTableColumnData) => Record<string, any>;
|
|
798
790
|
}[]>;
|
|
799
791
|
uncheckAll: () => void;
|
|
800
792
|
scrollTop: () => void;
|
|
@@ -105,8 +105,6 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<{
|
|
|
105
105
|
style: {
|
|
106
106
|
width: number | undefined;
|
|
107
107
|
};
|
|
108
|
-
thAttrs: (column: BaseTableColumnData) => Record<string, any>;
|
|
109
|
-
tdAttrs: (row: Row, column: BaseTableColumnData) => Record<string, any>;
|
|
110
108
|
}[]>;
|
|
111
109
|
uncheckAll: typeof uncheckAll;
|
|
112
110
|
scrollTop: () => void;
|
|
@@ -20,6 +20,7 @@ import BaseCardRow from './BaseCardRow.vue';
|
|
|
20
20
|
import BaseCharacterCounter from './BaseCharacterCounter.vue';
|
|
21
21
|
import BaseClipboard from './BaseClipboard.vue';
|
|
22
22
|
import BaseCalendar from './BaseCalendar.vue';
|
|
23
|
+
import BaseCollapse from './BaseCollapse.vue';
|
|
23
24
|
import BaseColor from './BaseColor.vue';
|
|
24
25
|
import BaseContainer from './BaseContainer.vue';
|
|
25
26
|
import BaseCounter from './BaseCounter.vue';
|
|
@@ -102,4 +103,4 @@ import BaseLayoutStacked from './BaseLayoutStacked.vue';
|
|
|
102
103
|
import BaseLayoutStackedConfigurable from './BaseLayoutStackedConfigurable.vue';
|
|
103
104
|
import BaseLayoutSidebar from './BaseLayoutSidebar.vue';
|
|
104
105
|
import BaseLayoutSidebarConfigurable from './BaseLayoutSidebarConfigurable.vue';
|
|
105
|
-
export { BaseActionItem, BaseAddressForm, BaseAlert, BaseApp, BaseAppDialogs, BaseAppSnackbars, BaseAutocomplete, BaseAutocompleteFetch, BaseAvatar, BaseAvatarGroup, BaseBadge, BaseBelongsTo, BaseBelongsToFetch, BaseBoolean, BaseBreadcrumbs, BaseButton, BaseButtonGroup, BaseCard, BaseCardRow, BaseCharacterCounter, BaseClipboard, BaseCalendar, BaseColor, BaseContainer, BaseCounter, BaseCropper, BaseCropperModal, BaseDataIterator, BaseDataTable, BaseDatePicker,
|
|
106
|
+
export { BaseActionItem, BaseAddressForm, BaseAlert, BaseApp, BaseAppDialogs, BaseAppSnackbars, BaseAutocomplete, BaseAutocompleteFetch, BaseAvatar, BaseAvatarGroup, BaseBadge, BaseBelongsTo, BaseBelongsToFetch, BaseBoolean, BaseBreadcrumbs, BaseButton, BaseButtonGroup, BaseCard, BaseCardRow, BaseCharacterCounter, BaseClipboard, BaseCalendar, BaseCollapse, BaseColor, BaseContainer, BaseCounter, BaseCropper, BaseCropperModal, BaseDataIterator, BaseDataTable, BaseDatePicker, BaseDateSelect, BaseDescriptionList, BaseDescriptionListItem, BaseDialog, BaseDisplayRelativeTime, BaseDropdown, BaseDropdownAutocomplete, BaseEmptyState, BaseField, BaseFieldI18n, BaseFilePicker, BaseFilePickerCrop, BaseFileUploader, BaseForm, BaseGantt, BaseHasMany, BaseHeader, BaseIcon, BaseIconPicker, BaseInput, BaseInputLabel, BaseInputPercent, BaseJsonReader, BaseLoadingCover, BaseMediaItem, BaseMediaLibrary, BaseMediaPreview, BaseMenu, BaseMenuItem, BaseModalCenter, BaseModalSide, BaseNavbar, BaseNavbarItem, BaseNavbarItemContent, BaseNavbarSideItem, BasePagination, BasePanel, BasePassword, BaseProgressCircle, BaseRadioGroup, BaseReadMore, BaseRichText, BaseSelect, BaseShortcut, BaseSideNavigation, BaseSideNavigationItem, BaseSkeleton, BaseStatistic, BaseStepper, BaseStepperItem, BaseSwitch, BaseSystemAlert, BaseTable, BaseTableBody, BaseTableCell, BaseTableHead, BaseTableHeader, BaseTableRow, BaseTabs, BaseTabItem, BaseTagAutocomplete, BaseTagAutocompleteFetch, BaseTableColumn, BaseTextarea, BaseTextareaAutoresize, BaseTimeline, BaseTimelineItem, BaseTimePicker, BaseTooltip, BaseUniqueCode, BaseLayoutStacked, BaseLayoutStackedConfigurable, BaseLayoutSidebar, BaseLayoutSidebarConfigurable, };
|
package/package.json
CHANGED
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
import { method } from 'lodash';
|
|
2
|
+
import BaseCollapse from './BaseCollapse.vue';
|
|
3
|
+
|
|
4
|
+
export default {
|
|
5
|
+
title: 'Components/BaseCollapse',
|
|
6
|
+
component: BaseCollapse,
|
|
7
|
+
args: {},
|
|
8
|
+
argTypes: {
|
|
9
|
+
defaultOpen: {
|
|
10
|
+
control: { type: 'boolean' },
|
|
11
|
+
},
|
|
12
|
+
icon: {
|
|
13
|
+
control: { type: 'text' },
|
|
14
|
+
},
|
|
15
|
+
isOpenIconClass: {
|
|
16
|
+
control: { type: 'text' },
|
|
17
|
+
},
|
|
18
|
+
isCloseIconClass: {
|
|
19
|
+
control: { type: 'text' },
|
|
20
|
+
},
|
|
21
|
+
twIcon: {
|
|
22
|
+
control: { type: 'text' },
|
|
23
|
+
},
|
|
24
|
+
twHeader: {
|
|
25
|
+
control: { type: 'text' },
|
|
26
|
+
},
|
|
27
|
+
twContent: {
|
|
28
|
+
control: { type: 'text' },
|
|
29
|
+
},
|
|
30
|
+
twTitle: {
|
|
31
|
+
control: { type: 'text' },
|
|
32
|
+
},
|
|
33
|
+
iconPosition: {
|
|
34
|
+
control: { type: 'select' },
|
|
35
|
+
options: ['left', 'right'],
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
const Template = (args) => ({
|
|
41
|
+
components: { BaseCollapse },
|
|
42
|
+
setup() {
|
|
43
|
+
return { args };
|
|
44
|
+
},
|
|
45
|
+
template: `
|
|
46
|
+
<BaseCollapse v-bind="args" class="mb-1">
|
|
47
|
+
<template #title>
|
|
48
|
+
<h6 class="font-semibold"> Qu'est-ce que le Lorem Ipsum? </h6>
|
|
49
|
+
</template>
|
|
50
|
+
<template #content={isOpen}>
|
|
51
|
+
<p class="p-3">
|
|
52
|
+
Le Lorem Ipsum est simplement du faux texte employé dans la composition et la mise en page avant impression. Le Lorem Ipsum est le faux texte standard de l'imprimerie depuis les années 1500, quand un imprimeur anonyme assembla ensemble des morceaux de texte pour réaliser un livre spécimen de polices de texte.
|
|
53
|
+
</p>
|
|
54
|
+
</template>
|
|
55
|
+
</BaseCollapse>
|
|
56
|
+
|
|
57
|
+
<BaseCollapse v-bind="args" class="mb-1">
|
|
58
|
+
<template #title>
|
|
59
|
+
<h6 class="font-semibold"> Qu'est-ce que le Lorem Ipsum? </h6>
|
|
60
|
+
</template>
|
|
61
|
+
<template #content>
|
|
62
|
+
<p class="p-3">
|
|
63
|
+
Le Lorem Ipsum est simplement du faux texte employé dans la composition et la mise en page avant impression. Le Lorem Ipsum est le faux texte standard de l'imprimerie depuis les années 1500, quand un imprimeur anonyme assembla ensemble des morceaux de texte pour réaliser un livre spécimen de polices de texte.
|
|
64
|
+
</p>
|
|
65
|
+
</template>
|
|
66
|
+
</BaseCollapse>
|
|
67
|
+
|
|
68
|
+
<BaseCollapse v-bind="args" class="mb-1">
|
|
69
|
+
<template #title>
|
|
70
|
+
<h6 class="font-semibold"> Qu'est-ce que le Lorem Ipsum? </h6>
|
|
71
|
+
</template>
|
|
72
|
+
<template #content>
|
|
73
|
+
<p class="p-3">
|
|
74
|
+
Le Lorem Ipsum est simplement du faux texte employé dans la composition et la mise en page avant impression. Le Lorem Ipsum est le faux texte standard de l'imprimerie depuis les années 1500, quand un imprimeur anonyme assembla ensemble des morceaux de texte pour réaliser un livre spécimen de polices de texte.
|
|
75
|
+
</p>
|
|
76
|
+
</template>
|
|
77
|
+
</BaseCollapse>
|
|
78
|
+
|
|
79
|
+
`,
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
export const Demo = Template.bind({});
|
|
83
|
+
Demo.args = {
|
|
84
|
+
defaultOpen: false,
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
const CustomHeaderTemplate = (args) => ({
|
|
89
|
+
components: { BaseCollapse },
|
|
90
|
+
setup() {
|
|
91
|
+
return { args };
|
|
92
|
+
},
|
|
93
|
+
method: {
|
|
94
|
+
toggle() {
|
|
95
|
+
this.defaultOpen = !this.defaultOpen;
|
|
96
|
+
},
|
|
97
|
+
},
|
|
98
|
+
template: `
|
|
99
|
+
|
|
100
|
+
<BaseCollapse v-bind="args" class="mb-3">
|
|
101
|
+
<template #header={toggle}>
|
|
102
|
+
<h6 class="cursor-pointer hover:text-slate-400" @click="toggle()"> Qu'est-ce que le Lorem Ipsum? </h6>
|
|
103
|
+
</template>
|
|
104
|
+
<template #content>
|
|
105
|
+
<p class="p-3">
|
|
106
|
+
Le Lorem Ipsum est simplement du faux texte employé dans la composition et la mise en page avant impression. Le Lorem Ipsum est le faux texte standard de l'imprimerie depuis les années 1500, quand un imprimeur anonyme assembla ensemble des morceaux de texte pour réaliser un livre spécimen de polices de texte.
|
|
107
|
+
</p>
|
|
108
|
+
</template>
|
|
109
|
+
</BaseCollapse>
|
|
110
|
+
|
|
111
|
+
<BaseCollapse v-bind="args" class="mb-3">
|
|
112
|
+
<template #header={toggle}>
|
|
113
|
+
<h6 class="cursor-pointer hover:text-slate-400" @click="toggle()"> Qu'est-ce que le Lorem Ipsum? </h6>
|
|
114
|
+
</template>
|
|
115
|
+
<template #content>
|
|
116
|
+
<p class="p-3">
|
|
117
|
+
Le Lorem Ipsum est simplement du faux texte employé dans la composition et la mise en page avant impression. Le Lorem Ipsum est le faux texte standard de l'imprimerie depuis les années 1500, quand un imprimeur anonyme assembla ensemble des morceaux de texte pour réaliser un livre spécimen de polices de texte.
|
|
118
|
+
</p>
|
|
119
|
+
</template>
|
|
120
|
+
</BaseCollapse>
|
|
121
|
+
|
|
122
|
+
<BaseCollapse v-bind="args" class="mb-3">
|
|
123
|
+
<template #header={toggle}>
|
|
124
|
+
<h6 class="cursor-pointer hover:text-slate-400" @click="toggle()"> Qu'est-ce que le Lorem Ipsum? </h6>
|
|
125
|
+
</template>
|
|
126
|
+
<template #content>
|
|
127
|
+
<p class="p-3">
|
|
128
|
+
Le Lorem Ipsum est simplement du faux texte employé dans la composition et la mise en page avant impression. Le Lorem Ipsum est le faux texte standard de l'imprimerie depuis les années 1500, quand un imprimeur anonyme assembla ensemble des morceaux de texte pour réaliser un livre spécimen de polices de texte.
|
|
129
|
+
</p>
|
|
130
|
+
</template>
|
|
131
|
+
</BaseCollapse>
|
|
132
|
+
|
|
133
|
+
`,
|
|
134
|
+
argTypes: {
|
|
135
|
+
defaultOpen: {
|
|
136
|
+
control: { type: 'boolean' },
|
|
137
|
+
},
|
|
138
|
+
icon: {
|
|
139
|
+
control: { type: 'text' },
|
|
140
|
+
},
|
|
141
|
+
isOpenIconClass: {
|
|
142
|
+
control: { type: 'text' },
|
|
143
|
+
},
|
|
144
|
+
isCloseIconClass: {
|
|
145
|
+
control: { type: 'text' },
|
|
146
|
+
},
|
|
147
|
+
twIcon: {
|
|
148
|
+
control: { type: 'text' },
|
|
149
|
+
},
|
|
150
|
+
twHeader: {
|
|
151
|
+
control: { type: 'text' },
|
|
152
|
+
},
|
|
153
|
+
twContent: {
|
|
154
|
+
control: { type: 'text' },
|
|
155
|
+
},
|
|
156
|
+
twTitle: {
|
|
157
|
+
control: { type: 'text' },
|
|
158
|
+
},
|
|
159
|
+
iconPosition: {
|
|
160
|
+
control: { type: 'select' },
|
|
161
|
+
options: ['left', 'right'],
|
|
162
|
+
},
|
|
163
|
+
}
|
|
164
|
+
});
|
|
165
|
+
export const CustomHeader = CustomHeaderTemplate.bind({});
|
|
166
|
+
|
|
167
|
+
CustomHeader.args = {
|
|
168
|
+
defaultOpen: false,
|
|
169
|
+
};
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div>
|
|
3
|
+
<div>
|
|
4
|
+
<slot
|
|
5
|
+
name="header"
|
|
6
|
+
:open="isOpen"
|
|
7
|
+
:toggle="toggle"
|
|
8
|
+
>
|
|
9
|
+
<button
|
|
10
|
+
:class="headerClass"
|
|
11
|
+
type="button"
|
|
12
|
+
@click="toggle()"
|
|
13
|
+
>
|
|
14
|
+
<BaseIcon
|
|
15
|
+
v-if="iconPosition === 'left'"
|
|
16
|
+
:class="internalIconClass"
|
|
17
|
+
:icon="icon"
|
|
18
|
+
/>
|
|
19
|
+
|
|
20
|
+
<div :class="internalTitleClass">
|
|
21
|
+
<slot
|
|
22
|
+
name="title"
|
|
23
|
+
:open="isOpen"
|
|
24
|
+
/>
|
|
25
|
+
</div>
|
|
26
|
+
<BaseIcon
|
|
27
|
+
v-if="iconPosition === 'right'"
|
|
28
|
+
:class="internalIconClass"
|
|
29
|
+
:icon="icon"
|
|
30
|
+
/>
|
|
31
|
+
</button>
|
|
32
|
+
</slot>
|
|
33
|
+
</div>
|
|
34
|
+
|
|
35
|
+
<div
|
|
36
|
+
v-show="isOpen"
|
|
37
|
+
:class="internalContentClass"
|
|
38
|
+
>
|
|
39
|
+
<slot
|
|
40
|
+
name="content"
|
|
41
|
+
:open="isOpen"
|
|
42
|
+
/>
|
|
43
|
+
</div>
|
|
44
|
+
</div>
|
|
45
|
+
</template>
|
|
46
|
+
|
|
47
|
+
<script lang="ts" setup>
|
|
48
|
+
|
|
49
|
+
import { twMerge } from 'tailwind-merge';
|
|
50
|
+
|
|
51
|
+
const internalIconClass = computed(() => {
|
|
52
|
+
const base = "w-6 h-6 flex items-center justify-center transition duration-300 ease-in-out transform cursor-pointer";
|
|
53
|
+
|
|
54
|
+
return twMerge(base, props.twIcon, isOpen.value ? props.isOpenIconClass : props.isCloseIconClass,);
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
const headerClass = computed(() => {
|
|
58
|
+
return twMerge('flex items-center w-full space-x-1', props.twHeader);
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
const internalContentClass = computed(() => {
|
|
62
|
+
return twMerge('transition duration-300 ease-in-out transform', props.twContent);
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
const internalTitleClass = computed(() => {
|
|
66
|
+
return twMerge(props.twTitle, '');
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
function toggle() {
|
|
70
|
+
isOpen.value = !isOpen.value;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
const props = withDefaults(defineProps<{
|
|
75
|
+
defaultOpen?: boolean;
|
|
76
|
+
icon?: string;
|
|
77
|
+
iconPosition?: 'left' | 'right';
|
|
78
|
+
isOpenIconClass?: string;
|
|
79
|
+
isCloseIconClass?: string;
|
|
80
|
+
twIcon?: string | string[] | null;
|
|
81
|
+
twHeader?: string | string[] | null;
|
|
82
|
+
twTitle?: string | string[] | null;
|
|
83
|
+
twContent?: string | string[] | null;
|
|
84
|
+
}>(), {
|
|
85
|
+
defaultOpen: true,
|
|
86
|
+
icon: 'heroicons:chevron-down-16-solid',
|
|
87
|
+
iconPosition: 'left',
|
|
88
|
+
twIcon: null,
|
|
89
|
+
twHeader: null,
|
|
90
|
+
twTitle: null,
|
|
91
|
+
twContent: null,
|
|
92
|
+
isOpenIconClass: '-rotate-0',
|
|
93
|
+
isCloseIconClass: '-rotate-90',
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
const isOpen = ref(props.defaultOpen as boolean);
|
|
97
|
+
|
|
98
|
+
</script>
|
package/src/components/index.ts
CHANGED
|
@@ -20,6 +20,7 @@ import BaseCardRow from './BaseCardRow.vue';
|
|
|
20
20
|
import BaseCharacterCounter from './BaseCharacterCounter.vue';
|
|
21
21
|
import BaseClipboard from './BaseClipboard.vue';
|
|
22
22
|
import BaseCalendar from './BaseCalendar.vue';
|
|
23
|
+
import BaseCollapse from './BaseCollapse.vue';
|
|
23
24
|
import BaseColor from './BaseColor.vue';
|
|
24
25
|
import BaseContainer from './BaseContainer.vue';
|
|
25
26
|
import BaseCounter from './BaseCounter.vue';
|
|
@@ -127,6 +128,7 @@ export {
|
|
|
127
128
|
BaseCharacterCounter,
|
|
128
129
|
BaseClipboard,
|
|
129
130
|
BaseCalendar,
|
|
131
|
+
BaseCollapse,
|
|
130
132
|
BaseColor,
|
|
131
133
|
BaseContainer,
|
|
132
134
|
BaseCounter,
|
|
@@ -135,7 +137,6 @@ export {
|
|
|
135
137
|
BaseDataIterator,
|
|
136
138
|
BaseDataTable,
|
|
137
139
|
BaseDatePicker,
|
|
138
|
-
BaseTimePicker,
|
|
139
140
|
BaseDateSelect,
|
|
140
141
|
BaseDescriptionList,
|
|
141
142
|
BaseDescriptionListItem,
|
|
@@ -203,6 +204,7 @@ export {
|
|
|
203
204
|
BaseTextareaAutoresize,
|
|
204
205
|
BaseTimeline,
|
|
205
206
|
BaseTimelineItem,
|
|
207
|
+
BaseTimePicker,
|
|
206
208
|
BaseTooltip,
|
|
207
209
|
BaseUniqueCode,
|
|
208
210
|
BaseLayoutStacked,
|
package/src/types/index.ts
CHANGED
|
@@ -120,10 +120,6 @@ export interface BaseTableColumnData {
|
|
|
120
120
|
style: {
|
|
121
121
|
width: undefined | number;
|
|
122
122
|
};
|
|
123
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
124
|
-
thAttrs: (column: BaseTableColumnData) => Record<string, any>;
|
|
125
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
126
|
-
tdAttrs: (row: Row, column: BaseTableColumnData) => Record<string, any>;
|
|
127
123
|
}
|
|
128
124
|
|
|
129
125
|
/**
|