edvoyui-component-library-test-flight 0.0.252 → 0.0.255
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/components/accordion/EUIAccordionMenu.d.ts +18 -1
- package/dist/components/accordion/EUIAccordionMenu.vue +3 -1
- package/dist/components/datepicker/EUIDatepicker.d.ts +4 -4
- package/dist/components/datepicker/EUIDatepicker.vue +2 -2
- package/dist/components/searchTagSelect/EUISearchTagSelect.d.ts +3 -0
- package/dist/components/searchTagSelect/EUISearchTagSelect.vue +8 -0
- package/dist/components/table/EUITable.d.ts +2 -2
- package/dist/components/table/EUITable.vue +31 -29
- package/dist/components/table/UTable.vue +11 -11
- package/dist/edvoy-ui.cjs.js +1 -1
- package/dist/edvoy-ui.css +1 -1
- package/dist/edvoy-ui.es.js +415 -411
- package/dist/edvoy-ui.umd.js +19 -19
- package/package.json +1 -1
|
@@ -8,7 +8,18 @@ type AccordionMenuSection = {
|
|
|
8
8
|
label: string;
|
|
9
9
|
items: AccordionMenuItem[];
|
|
10
10
|
};
|
|
11
|
-
declare
|
|
11
|
+
declare function __VLS_template(): {
|
|
12
|
+
attrs: Partial<{}>;
|
|
13
|
+
slots: {
|
|
14
|
+
'section-label'?(_: {
|
|
15
|
+
section: AccordionMenuSection;
|
|
16
|
+
}): any;
|
|
17
|
+
};
|
|
18
|
+
refs: {};
|
|
19
|
+
rootEl: HTMLElement;
|
|
20
|
+
};
|
|
21
|
+
type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
|
|
22
|
+
declare const __VLS_component: import('../../../node_modules/vue').DefineComponent<import('../../../node_modules/vue').ExtractPropTypes<{
|
|
12
23
|
items: {
|
|
13
24
|
type: PropType<AccordionMenuSection[]>;
|
|
14
25
|
default: () => never[];
|
|
@@ -67,4 +78,10 @@ declare const _default: import('../../../node_modules/vue').DefineComponent<impo
|
|
|
67
78
|
openSection: string;
|
|
68
79
|
stickySectionHeaders: boolean;
|
|
69
80
|
}, {}, {}, {}, string, import('../../../node_modules/vue').ComponentProvideOptions, true, {}, HTMLElement>;
|
|
81
|
+
declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
|
|
70
82
|
export default _default;
|
|
83
|
+
type __VLS_WithTemplateSlots<T, S> = T & {
|
|
84
|
+
new (): {
|
|
85
|
+
$slots: S;
|
|
86
|
+
};
|
|
87
|
+
};
|
|
@@ -17,7 +17,9 @@
|
|
|
17
17
|
:aria-expanded="expandedSection === section.id"
|
|
18
18
|
@click="toggleSection(section.id)"
|
|
19
19
|
>
|
|
20
|
-
<
|
|
20
|
+
<slot name="section-label" :section="section">
|
|
21
|
+
<span class="flex-1 min-w-0 truncate">{{ section.label }}</span>
|
|
22
|
+
</slot>
|
|
21
23
|
<svg
|
|
22
24
|
class="size-5 shrink-0 transition-transform duration-350 ease-[cubic-bezier(0.15,0.3,0.25,1)]"
|
|
23
25
|
:class="expandedSection === section.id ? 'rotate-90' : ''"
|
|
@@ -10,11 +10,11 @@ declare const _default: import('../../../node_modules/vue').DefineComponent<impo
|
|
|
10
10
|
};
|
|
11
11
|
maxDate: {
|
|
12
12
|
type: any;
|
|
13
|
-
default:
|
|
13
|
+
default: undefined;
|
|
14
14
|
};
|
|
15
15
|
minDate: {
|
|
16
16
|
type: any;
|
|
17
|
-
default:
|
|
17
|
+
default: undefined;
|
|
18
18
|
};
|
|
19
19
|
name: {
|
|
20
20
|
type: StringConstructor;
|
|
@@ -86,11 +86,11 @@ declare const _default: import('../../../node_modules/vue').DefineComponent<impo
|
|
|
86
86
|
};
|
|
87
87
|
maxDate: {
|
|
88
88
|
type: any;
|
|
89
|
-
default:
|
|
89
|
+
default: undefined;
|
|
90
90
|
};
|
|
91
91
|
minDate: {
|
|
92
92
|
type: any;
|
|
93
|
-
default:
|
|
93
|
+
default: undefined;
|
|
94
94
|
};
|
|
95
95
|
name: {
|
|
96
96
|
type: StringConstructor;
|
|
@@ -113,11 +113,11 @@ const props = defineProps({
|
|
|
113
113
|
},
|
|
114
114
|
maxDate: {
|
|
115
115
|
type: Date as any,
|
|
116
|
-
default:
|
|
116
|
+
default: undefined,
|
|
117
117
|
},
|
|
118
118
|
minDate: {
|
|
119
119
|
type: Date as any,
|
|
120
|
-
default:
|
|
120
|
+
default: undefined,
|
|
121
121
|
},
|
|
122
122
|
name: {
|
|
123
123
|
type: String,
|
|
@@ -36,6 +36,8 @@ interface Props {
|
|
|
36
36
|
/** Maximum selected tags shown before the More/Less control; 0 shows all. */
|
|
37
37
|
maxVisibleTags?: number;
|
|
38
38
|
tagSize?: "sm" | "md" | "lg";
|
|
39
|
+
/** Hide options until the user has entered this many non-whitespace characters. */
|
|
40
|
+
minimumSearchLength?: number;
|
|
39
41
|
dropdownWidth?: string;
|
|
40
42
|
/** Render the menu at body level to escape clipping scroll containers. */
|
|
41
43
|
teleported?: boolean;
|
|
@@ -254,6 +256,7 @@ declare const __VLS_component: import('../../../node_modules/vue').DefineCompone
|
|
|
254
256
|
selectAllLabel: string;
|
|
255
257
|
maxVisibleTags: number;
|
|
256
258
|
tagSize: "sm" | "md" | "lg";
|
|
259
|
+
minimumSearchLength: number;
|
|
257
260
|
dropdownWidth: string;
|
|
258
261
|
}, {}, {}, {}, string, import('../../../node_modules/vue').ComponentProvideOptions, false, {
|
|
259
262
|
componentRef: HTMLDivElement;
|
|
@@ -159,6 +159,9 @@
|
|
|
159
159
|
<template v-if="internalSearch?.trim()">
|
|
160
160
|
No results found for "<strong>{{ internalSearch }}</strong>"
|
|
161
161
|
</template>
|
|
162
|
+
<template v-else-if="minimumSearchLength > 0">
|
|
163
|
+
Type at least {{ minimumSearchLength }} character<span v-if="minimumSearchLength !== 1">s</span> to search
|
|
164
|
+
</template>
|
|
162
165
|
<template v-else-if="backendPagination">
|
|
163
166
|
Type in the search box to see results
|
|
164
167
|
</template>
|
|
@@ -403,6 +406,8 @@ interface Props {
|
|
|
403
406
|
/** Maximum selected tags shown before the More/Less control; 0 shows all. */
|
|
404
407
|
maxVisibleTags?: number;
|
|
405
408
|
tagSize?: "sm" | "md" | "lg";
|
|
409
|
+
/** Hide options until the user has entered this many non-whitespace characters. */
|
|
410
|
+
minimumSearchLength?: number;
|
|
406
411
|
dropdownWidth?: string,
|
|
407
412
|
/** Render the menu at body level to escape clipping scroll containers. */
|
|
408
413
|
teleported?: boolean;
|
|
@@ -437,6 +442,7 @@ const props = withDefaults(defineProps<Props>(), {
|
|
|
437
442
|
selectAllLabel: "All",
|
|
438
443
|
maxVisibleTags: 0,
|
|
439
444
|
tagSize: "md",
|
|
445
|
+
minimumSearchLength: 0,
|
|
440
446
|
dropdownWidth: '',
|
|
441
447
|
teleported: false,
|
|
442
448
|
});
|
|
@@ -594,6 +600,8 @@ const filteredItems = computed(() => {
|
|
|
594
600
|
const searchValue = String(internalSearch.value ?? "");
|
|
595
601
|
const search = searchValue.trim().toLowerCase();
|
|
596
602
|
|
|
603
|
+
if (search.length < props.minimumSearchLength) return [];
|
|
604
|
+
|
|
597
605
|
if (searchValue !== "") {
|
|
598
606
|
if (search === "") return [];
|
|
599
607
|
if (props.backendPagination) return props.items;
|
|
@@ -60,7 +60,7 @@ declare const __VLS_component: import('../../../node_modules/vue').DefineCompone
|
|
|
60
60
|
checkedRows: {
|
|
61
61
|
type: ArrayConstructor;
|
|
62
62
|
default: () => never[];
|
|
63
|
-
required:
|
|
63
|
+
required: false;
|
|
64
64
|
};
|
|
65
65
|
headers: {
|
|
66
66
|
type: PropType<Header[]>;
|
|
@@ -152,7 +152,7 @@ declare const __VLS_component: import('../../../node_modules/vue').DefineCompone
|
|
|
152
152
|
checkedRows: {
|
|
153
153
|
type: ArrayConstructor;
|
|
154
154
|
default: () => never[];
|
|
155
|
-
required:
|
|
155
|
+
required: false;
|
|
156
156
|
};
|
|
157
157
|
headers: {
|
|
158
158
|
type: PropType<Header[]>;
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
</div>
|
|
22
22
|
</Transition>
|
|
23
23
|
|
|
24
|
-
<div class="relative
|
|
24
|
+
<div class="overflow-hidden relative mx-auto w-full">
|
|
25
25
|
<div
|
|
26
26
|
id="student-table"
|
|
27
27
|
:class="[
|
|
@@ -67,7 +67,7 @@
|
|
|
67
67
|
@click="sortBy(header, $event)"
|
|
68
68
|
>
|
|
69
69
|
<div
|
|
70
|
-
class="flex
|
|
70
|
+
class="flex gap-2 justify-between items-center text-sm font-medium text-current font-inter"
|
|
71
71
|
>
|
|
72
72
|
<slot name="header" :header="header" :index="headerIndex">
|
|
73
73
|
{{ capitalizeText(header?.text ?? header?.name ?? "") }}
|
|
@@ -122,11 +122,10 @@
|
|
|
122
122
|
>
|
|
123
123
|
<tr
|
|
124
124
|
:id="`row-${rowIndex}`"
|
|
125
|
-
:class="
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
"
|
|
125
|
+
:class="{
|
|
126
|
+
'is-active-row':
|
|
127
|
+
activeRowIndex != null && activeRowIndex === rowIndex,
|
|
128
|
+
}"
|
|
130
129
|
@mouseenter="
|
|
131
130
|
$attrs.mouseenter
|
|
132
131
|
? $emit('mouseenter', row, rowIndex)
|
|
@@ -139,14 +138,7 @@
|
|
|
139
138
|
"
|
|
140
139
|
>
|
|
141
140
|
<template v-if="checkable">
|
|
142
|
-
<td
|
|
143
|
-
class="checkable"
|
|
144
|
-
:class="
|
|
145
|
-
activeRowIndex == rowIndex
|
|
146
|
-
? '!bg-violet-50 !ring-1 !ring-violet-100 !ring-inset'
|
|
147
|
-
: ''
|
|
148
|
-
"
|
|
149
|
-
>
|
|
141
|
+
<td class="checkable">
|
|
150
142
|
<EUITableCheckbox
|
|
151
143
|
:disabled="!isRowCheckable(row)"
|
|
152
144
|
:checked="isRowChecked(row)"
|
|
@@ -161,9 +153,6 @@
|
|
|
161
153
|
:key="headerIndex"
|
|
162
154
|
:class="[
|
|
163
155
|
isScrolled && headerIndex === 0 ? stickyClass.body : '',
|
|
164
|
-
activeRowIndex == rowIndex
|
|
165
|
-
? '!bg-violet-50 !ring-1 !ring-violet-100 !ring-inset'
|
|
166
|
-
: '',
|
|
167
156
|
]"
|
|
168
157
|
>
|
|
169
158
|
<slot
|
|
@@ -204,7 +193,7 @@
|
|
|
204
193
|
class="sticky bottom-0 left-0 z-50 flex items-center justify-between px-2 py-1 bg-white shadow-[0_-6px_24px_-6px_#0c0c0d1c]"
|
|
205
194
|
>
|
|
206
195
|
<slot name="tableCount">
|
|
207
|
-
<div class="inline-flex
|
|
196
|
+
<div class="inline-flex gap-x-2 items-center">
|
|
208
197
|
<div class="text-sm font-medium text-gray-900">
|
|
209
198
|
Total {{ total }}
|
|
210
199
|
</div>
|
|
@@ -271,7 +260,7 @@ const props = defineProps({
|
|
|
271
260
|
paginated: { type: Boolean, default: false },
|
|
272
261
|
tableExpanded: { type: Boolean, default: false },
|
|
273
262
|
backendPagination: { type: Boolean, default: false },
|
|
274
|
-
checkedRows: { type: Array, default: () => [], required:
|
|
263
|
+
checkedRows: { type: Array, default: () => [], required: false },
|
|
275
264
|
headers: {
|
|
276
265
|
type: Array as PropType<Header[]>,
|
|
277
266
|
default: () => ({}),
|
|
@@ -548,26 +537,39 @@ watch(() => tableContainer.value?.clientWidth, checkOverflow);
|
|
|
548
537
|
}
|
|
549
538
|
|
|
550
539
|
tbody {
|
|
551
|
-
|
|
540
|
+
@apply snap-y snap-mandatory snap-always;
|
|
552
541
|
tr:not(.norecords) {
|
|
553
|
-
@apply text-gray-600
|
|
542
|
+
@apply text-gray-600 bg-white snap-mandatory snap-start rounded-sm h-12;
|
|
543
|
+
|
|
554
544
|
td {
|
|
555
|
-
|
|
545
|
+
// Keep border widths stable in every state. Changing border width on
|
|
546
|
+
// hover causes table row geometry to shift and produces a jump.
|
|
547
|
+
@apply box-border px-3 py-1 text-sm font-normal snap-start snap-always border-solid border-b border-t border-gray-100 border-t-transparent;
|
|
548
|
+
|
|
549
|
+
&:first-child {
|
|
550
|
+
@apply border-l border-l-transparent;
|
|
551
|
+
}
|
|
552
|
+
|
|
553
|
+
&:last-child {
|
|
554
|
+
@apply border-r border-r-transparent;
|
|
555
|
+
}
|
|
556
|
+
|
|
556
557
|
&:first-of-type.checkable {
|
|
557
558
|
@apply w-12 text-center sticky left-0 top-0 z-[11] bg-white;
|
|
558
559
|
}
|
|
559
560
|
}
|
|
560
561
|
|
|
561
|
-
|
|
562
|
-
|
|
562
|
+
// Do not transition background/border colors between rows. When the
|
|
563
|
+
// pointer moves quickly, the previous row would otherwise fade out while
|
|
564
|
+
// the next row fades in, making two rows look highlighted at once.
|
|
565
|
+
&:hover td,
|
|
566
|
+
&.is-active-row td {
|
|
567
|
+
@apply text-gray-900 bg-violet-50 border-violet-200 first-of-type:rounded-s-sm last-of-type:rounded-e-sm;
|
|
568
|
+
|
|
563
569
|
&:first-of-type.checkable {
|
|
564
570
|
@apply bg-violet-50;
|
|
565
571
|
}
|
|
566
572
|
}
|
|
567
|
-
|
|
568
|
-
&:has(+ tr:hover) td {
|
|
569
|
-
@apply border-b-0;
|
|
570
|
-
}
|
|
571
573
|
}
|
|
572
574
|
}
|
|
573
575
|
}
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
</slot>
|
|
21
21
|
</div>
|
|
22
22
|
</Transition>
|
|
23
|
-
<div class="relative max-w-full
|
|
23
|
+
<div class="overflow-hidden relative mx-auto max-w-full">
|
|
24
24
|
<div
|
|
25
25
|
:class="[
|
|
26
26
|
'ui-table scrollbar--auto',
|
|
@@ -67,7 +67,7 @@
|
|
|
67
67
|
{ '!bg-gray-200': currentSort === header.value },
|
|
68
68
|
]"
|
|
69
69
|
:style="
|
|
70
|
-
headers.length >
|
|
70
|
+
headers.length > 5
|
|
71
71
|
? headerStyle(header)
|
|
72
72
|
: 'width: 100%;min-width: 250px;background-color: rgb(243 244 246);'
|
|
73
73
|
"
|
|
@@ -97,7 +97,7 @@
|
|
|
97
97
|
</template>
|
|
98
98
|
<template v-slot:tooltip>
|
|
99
99
|
<div
|
|
100
|
-
class="z-50 max-w-xs
|
|
100
|
+
class="z-50 min-w-max max-w-xs whitespace-normal break-words"
|
|
101
101
|
>
|
|
102
102
|
{{ header?.showHeaderInfoText }}
|
|
103
103
|
</div>
|
|
@@ -106,7 +106,7 @@
|
|
|
106
106
|
</div>
|
|
107
107
|
<div
|
|
108
108
|
v-if="header?.sortable"
|
|
109
|
-
class="absolute -top-0.5 -right-6 size-6
|
|
109
|
+
class="absolute -top-0.5 -right-6 z-10 size-6"
|
|
110
110
|
>
|
|
111
111
|
<svg
|
|
112
112
|
width="24"
|
|
@@ -215,7 +215,7 @@
|
|
|
215
215
|
</template>
|
|
216
216
|
<template v-slot:tooltip>
|
|
217
217
|
<div
|
|
218
|
-
class="z-50 max-w-xs
|
|
218
|
+
class="z-50 min-w-max max-w-xs whitespace-normal break-words"
|
|
219
219
|
>
|
|
220
220
|
{{ header?.showInfoText }}
|
|
221
221
|
</div>
|
|
@@ -252,12 +252,12 @@
|
|
|
252
252
|
>
|
|
253
253
|
<div class="text-center">
|
|
254
254
|
<div
|
|
255
|
-
class="mx-auto
|
|
255
|
+
class="overflow-hidden mx-auto rounded-md size-56"
|
|
256
256
|
>
|
|
257
257
|
<img
|
|
258
258
|
src="@/assets/images/search-nodata.png"
|
|
259
259
|
alt=""
|
|
260
|
-
class="block object-contain object-center
|
|
260
|
+
class="block object-contain object-center max-w-full h-auto opacity-90"
|
|
261
261
|
/>
|
|
262
262
|
</div>
|
|
263
263
|
<div class="my-2 text-xl font-medium text-gray-500">
|
|
@@ -274,7 +274,7 @@
|
|
|
274
274
|
</div>
|
|
275
275
|
<div
|
|
276
276
|
v-if="stickyFooter"
|
|
277
|
-
class="sticky bottom-0 left-0 z-50
|
|
277
|
+
class="flex sticky bottom-0 left-0 z-50 justify-between items-center px-2 py-1 bg-white border-t border-gray-300"
|
|
278
278
|
>
|
|
279
279
|
<slot
|
|
280
280
|
name="tableCount"
|
|
@@ -282,12 +282,12 @@
|
|
|
282
282
|
:from="rangeFrom"
|
|
283
283
|
:to="rangeTo"
|
|
284
284
|
>
|
|
285
|
-
<div class="inline-flex items-center self-stretch
|
|
285
|
+
<div class="inline-flex gap-x-3 items-center self-stretch">
|
|
286
286
|
<div class="text-sm font-normal text-gray-600">
|
|
287
287
|
{{ rangeFrom }} - {{ rangeTo }} of {{ total }}
|
|
288
288
|
</div>
|
|
289
|
-
<div class="self-stretch w-px h-4
|
|
290
|
-
<div class="inline-flex items-center
|
|
289
|
+
<div class="self-stretch my-auto w-px h-4 bg-gray-300"></div>
|
|
290
|
+
<div class="inline-flex gap-0 items-center">
|
|
291
291
|
<span class="text-sm font-normal text-gray-600"
|
|
292
292
|
> Items per page:</span>
|
|
293
293
|
<EUIPageLimit
|