@vc-shell/framework 1.1.29 → 1.1.31
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/CHANGELOG.md +26 -0
- package/core/composables/useErrorHandler/index.ts +28 -36
- package/core/composables/useLanguages/index.ts +1 -0
- package/core/services/settings-menu-service.ts +6 -6
- package/core/utilities/error.ts +89 -0
- package/dist/core/composables/useErrorHandler/index.d.ts +10 -1
- package/dist/core/composables/useErrorHandler/index.d.ts.map +1 -1
- package/dist/core/composables/useLanguages/index.d.ts.map +1 -1
- package/dist/core/services/settings-menu-service.d.ts +3 -3
- package/dist/core/services/settings-menu-service.d.ts.map +1 -1
- package/dist/core/utilities/error.d.ts +13 -0
- package/dist/core/utilities/error.d.ts.map +1 -0
- package/dist/framework.js +138 -134
- package/dist/{index-Bpzd_lmX.js → index-0JXtGXkU.js} +1 -1
- package/dist/{index-DJxEdMUZ.js → index-B4vlCcFR.js} +1 -1
- package/dist/{index-Bn87vMP8.js → index-Bo-tMcwW.js} +1 -1
- package/dist/{index-CM7z23lM.js → index-Bxzy9NzM.js} +1 -1
- package/dist/{index-BhEc39Bx.js → index-C0HMg87C.js} +1 -1
- package/dist/{index-DFp2PcZu.js → index-C34EKuYz.js} +1 -1
- package/dist/{index-B8e874V3.js → index-CIYNhqa0.js} +1 -1
- package/dist/{index-CK1ZmJzV.js → index-D2ktcdHl.js} +30374 -30127
- package/dist/{index-CR9ZPpuz.js → index-DKAEB9Q6.js} +1 -1
- package/dist/{index-BeTy-tH8.js → index-DWkmlYj4.js} +1 -1
- package/dist/{index-Cl-FWJ0z.js → index-Dxs7WOw2.js} +1 -1
- package/dist/{index-sElVLLwP.js → index-NFZ0riWN.js} +1 -1
- package/dist/{index-BerVe4OV.js → index-W3dvhLJ3.js} +1 -1
- package/dist/{index-C-pBZXky.js → index-Yu2Xrty9.js} +1 -1
- package/dist/{index-AgS-u96H.js → index-jKOJ5dxS.js} +1 -1
- package/dist/{index-HFn5nMnu.js → index-lJ-eV6nh.js} +1 -1
- package/dist/{index-NX-Ek0LQ.js → index-uOSH3WBg.js} +1 -1
- package/dist/index.css +1 -1
- package/dist/locales/de.json +1 -1
- package/dist/locales/en.json +1 -1
- package/dist/shared/components/blade-navigation/components/vc-blade-navigation/vc-blade-navigation.vue.d.ts.map +1 -1
- package/dist/shared/components/blade-navigation/components/vc-blade-view/vc-blade-view.d.ts +3 -2
- package/dist/shared/components/blade-navigation/components/vc-blade-view/vc-blade-view.d.ts.map +1 -1
- package/dist/shared/components/blade-navigation/composables/useBladeNavigation/index.d.ts +2 -0
- package/dist/shared/components/blade-navigation/composables/useBladeNavigation/index.d.ts.map +1 -1
- package/dist/shared/components/blade-navigation/composables/useBladeNavigation/internal/bladeState.d.ts +2 -0
- package/dist/shared/components/blade-navigation/composables/useBladeNavigation/internal/bladeState.d.ts.map +1 -1
- package/dist/shared/components/blade-navigation/types/index.d.ts +3 -2
- package/dist/shared/components/blade-navigation/types/index.d.ts.map +1 -1
- package/dist/shared/components/draggable-dashboard/composables/useDashboardDragAndDrop.d.ts +18 -363
- package/dist/shared/components/draggable-dashboard/composables/useDashboardDragAndDrop.d.ts.map +1 -1
- package/dist/shared/components/error-interceptor/interceptor.d.ts +7 -4
- package/dist/shared/components/error-interceptor/interceptor.d.ts.map +1 -1
- package/dist/shared/components/index.d.ts +1 -0
- package/dist/shared/components/index.d.ts.map +1 -1
- package/dist/shared/components/multilanguage-selector/index.d.ts +2 -0
- package/dist/shared/components/multilanguage-selector/index.d.ts.map +1 -0
- package/dist/shared/components/multilanguage-selector/multilanguage-selector.vue.d.ts +43 -0
- package/dist/shared/components/multilanguage-selector/multilanguage-selector.vue.d.ts.map +1 -0
- package/dist/shared/composables/index.d.ts +1 -0
- package/dist/shared/composables/index.d.ts.map +1 -1
- package/dist/shared/composables/useModificationTracker/index.d.ts +34 -0
- package/dist/shared/composables/useModificationTracker/index.d.ts.map +1 -0
- package/dist/shared/index.d.ts +1 -0
- package/dist/shared/index.d.ts.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/ui/components/atoms/index.d.ts +1 -0
- package/dist/ui/components/atoms/index.d.ts.map +1 -1
- package/dist/ui/components/atoms/vc-banner/index.d.ts +2 -0
- package/dist/ui/components/atoms/vc-banner/index.d.ts.map +1 -0
- package/dist/ui/components/atoms/vc-banner/vc-banner.vue.d.ts +25 -0
- package/dist/ui/components/atoms/vc-banner/vc-banner.vue.d.ts.map +1 -0
- package/dist/ui/components/atoms/vc-card/vc-card.vue.d.ts.map +1 -1
- package/dist/ui/components/molecules/vc-checkbox/vc-checkbox.vue.d.ts +1 -0
- package/dist/ui/components/molecules/vc-checkbox/vc-checkbox.vue.d.ts.map +1 -1
- package/dist/ui/components/organisms/vc-app/vc-app.vue.d.ts +1 -0
- package/dist/ui/components/organisms/vc-app/vc-app.vue.d.ts.map +1 -1
- package/dist/ui/components/organisms/vc-blade/vc-blade.backupsb.d.ts +5 -1
- package/dist/ui/components/organisms/vc-blade/vc-blade.backupsb.d.ts.map +1 -1
- package/dist/ui/components/organisms/vc-blade/vc-blade.vue.d.ts +3 -1
- package/dist/ui/components/organisms/vc-blade/vc-blade.vue.d.ts.map +1 -1
- package/dist/ui/components/organisms/vc-table/_internal/vc-table-desktop-view/_internal/vc-table-body/vc-table-body.vue.d.ts +0 -1
- package/dist/ui/components/organisms/vc-table/_internal/vc-table-desktop-view/_internal/vc-table-body/vc-table-body.vue.d.ts.map +1 -1
- package/dist/ui/components/organisms/vc-table/_internal/vc-table-desktop-view/_internal/vc-table-row/vc-table-row.vue.d.ts +0 -1
- package/dist/ui/components/organisms/vc-table/_internal/vc-table-desktop-view/_internal/vc-table-row/vc-table-row.vue.d.ts.map +1 -1
- package/dist/ui/components/organisms/vc-table/_internal/vc-table-desktop-view/vc-table-desktop-view.vue.d.ts +0 -1
- package/dist/ui/components/organisms/vc-table/_internal/vc-table-desktop-view/vc-table-desktop-view.vue.d.ts.map +1 -1
- package/dist/ui/components/organisms/vc-table/composables/useTableActions.d.ts +4 -4
- package/dist/ui/components/organisms/vc-table/composables/useTableActions.d.ts.map +1 -1
- package/dist/ui/components/organisms/vc-table/vc-table.vue.d.ts.map +1 -1
- package/package.json +4 -4
- package/shared/components/blade-navigation/components/vc-blade-navigation/vc-blade-navigation.vue +18 -18
- package/shared/components/blade-navigation/components/vc-blade-view/vc-blade-view.ts +5 -3
- package/shared/components/blade-navigation/composables/useBladeNavigation/index.ts +12 -1
- package/shared/components/blade-navigation/composables/useBladeNavigation/internal/bladeState.ts +34 -0
- package/shared/components/blade-navigation/types/index.ts +2 -1
- package/shared/components/draggable-dashboard/composables/useDashboardDragAndDrop.ts +17 -3
- package/shared/components/error-interceptor/interceptor.ts +48 -44
- package/shared/components/index.ts +1 -0
- package/shared/components/multilanguage-selector/index.ts +1 -0
- package/shared/components/multilanguage-selector/multilanguage-selector.vue +144 -0
- package/shared/composables/index.ts +2 -1
- package/shared/composables/useModificationTracker/index.ts +93 -0
- package/shared/index.ts +1 -0
- package/ui/components/atoms/index.ts +1 -0
- package/ui/components/atoms/vc-banner/index.ts +1 -0
- package/ui/components/atoms/vc-banner/vc-banner.vue +138 -0
- package/ui/components/atoms/vc-card/vc-card.vue +6 -0
- package/ui/components/molecules/vc-checkbox/vc-checkbox.vue +9 -3
- package/ui/components/organisms/vc-app/vc-app.vue +6 -1
- package/ui/components/organisms/vc-blade/vc-blade.vue +40 -50
- package/ui/components/organisms/vc-table/_internal/vc-table-desktop-view/_internal/vc-table-body/vc-table-body.vue +0 -2
- package/ui/components/organisms/vc-table/_internal/vc-table-desktop-view/_internal/vc-table-row/vc-table-row.vue +1 -2
- package/ui/components/organisms/vc-table/_internal/vc-table-desktop-view/vc-table-desktop-view.vue +0 -2
- package/ui/components/organisms/vc-table/composables/useTableActions.ts +13 -8
- package/ui/components/organisms/vc-table/vc-table.vue +6 -6
|
@@ -68,11 +68,11 @@
|
|
|
68
68
|
size="s"
|
|
69
69
|
icon="material-warning"
|
|
70
70
|
/>
|
|
71
|
-
<div class="vc-blade__error-text">{{
|
|
71
|
+
<div class="vc-blade__error-text">{{ shortErrorMessage }}</div>
|
|
72
72
|
<VcButton
|
|
73
73
|
text
|
|
74
74
|
class="vc-blade__error-button"
|
|
75
|
-
@click="
|
|
75
|
+
@click="openErrorDetails"
|
|
76
76
|
>
|
|
77
77
|
{{ t("COMPONENTS.ORGANISMS.VC_BLADE.SEE_DETAILS") }}
|
|
78
78
|
</VcButton>
|
|
@@ -153,6 +153,7 @@ export interface Emits {
|
|
|
153
153
|
(event: "close"): void;
|
|
154
154
|
(event: "expand"): void;
|
|
155
155
|
(event: "collapse"): void;
|
|
156
|
+
(event: "reset:error"): void;
|
|
156
157
|
}
|
|
157
158
|
|
|
158
159
|
defineOptions({
|
|
@@ -198,7 +199,6 @@ const slots = defineSlots<{
|
|
|
198
199
|
* });
|
|
199
200
|
*/
|
|
200
201
|
widgets: (props: any) => any;
|
|
201
|
-
backButton: (props: any) => any;
|
|
202
202
|
}>();
|
|
203
203
|
|
|
204
204
|
const emit = defineEmits<Emits>();
|
|
@@ -207,7 +207,7 @@ const blade = inject(
|
|
|
207
207
|
BladeInstance,
|
|
208
208
|
computed(() => ({
|
|
209
209
|
id: FALLBACK_BLADE_ID,
|
|
210
|
-
error:
|
|
210
|
+
error: null,
|
|
211
211
|
expandable: false,
|
|
212
212
|
maximized: false,
|
|
213
213
|
navigation: undefined,
|
|
@@ -225,10 +225,27 @@ const { blades } = useBladeNavigation();
|
|
|
225
225
|
const bladeRef = ref<HTMLElement | null>(null);
|
|
226
226
|
const contentRef = ref<HTMLElement | null>(null);
|
|
227
227
|
|
|
228
|
+
const error = computed(() => toValue(blade.value.error));
|
|
229
|
+
|
|
230
|
+
const shortErrorMessage = computed(() => {
|
|
231
|
+
const err = error.value;
|
|
232
|
+
if (!err) return "";
|
|
233
|
+
return err instanceof Error ? err.message : err;
|
|
234
|
+
});
|
|
235
|
+
|
|
236
|
+
const errorDetails = computed(() => {
|
|
237
|
+
const err = error.value;
|
|
238
|
+
if (!err) return "";
|
|
239
|
+
if (err instanceof Error) {
|
|
240
|
+
return (err as any).details || err.stack || String(err);
|
|
241
|
+
}
|
|
242
|
+
return String(err);
|
|
243
|
+
});
|
|
244
|
+
|
|
228
245
|
const { open } = usePopup({
|
|
229
246
|
component: vcPopupError,
|
|
230
247
|
slots: {
|
|
231
|
-
default:
|
|
248
|
+
default: errorDetails,
|
|
232
249
|
header: defineComponent({
|
|
233
250
|
render: () =>
|
|
234
251
|
h("div", [
|
|
@@ -236,13 +253,17 @@ const { open } = usePopup({
|
|
|
236
253
|
" ",
|
|
237
254
|
h(
|
|
238
255
|
VcLink,
|
|
239
|
-
{ onClick: () => navigator.clipboard.writeText(
|
|
256
|
+
{ onClick: () => navigator.clipboard.writeText(errorDetails.value) },
|
|
240
257
|
`(${t("COMPONENTS.ORGANISMS.VC_BLADE.ERROR_POPUP.COPY_ERROR")})`,
|
|
241
258
|
),
|
|
242
259
|
]),
|
|
243
260
|
}),
|
|
244
261
|
},
|
|
245
262
|
});
|
|
263
|
+
|
|
264
|
+
const openErrorDetails = () => {
|
|
265
|
+
open();
|
|
266
|
+
};
|
|
246
267
|
</script>
|
|
247
268
|
|
|
248
269
|
<style lang="scss">
|
|
@@ -276,17 +297,18 @@ const { open } = usePopup({
|
|
|
276
297
|
}
|
|
277
298
|
|
|
278
299
|
&--mobile {
|
|
279
|
-
@apply tw-w-full
|
|
300
|
+
@apply tw-w-full !important;
|
|
280
301
|
}
|
|
281
302
|
|
|
282
303
|
&--expanded {
|
|
283
|
-
@apply tw-w-full tw-shrink
|
|
304
|
+
@apply tw-w-full tw-shrink !important;
|
|
284
305
|
}
|
|
285
306
|
|
|
286
307
|
&--maximized {
|
|
287
|
-
@apply tw-absolute tw-z-[2] tw-top-0 tw-bottom-0 tw-left-0 tw-shrink
|
|
288
|
-
width: -webkit-fill-available
|
|
289
|
-
width: -moz-available
|
|
308
|
+
@apply tw-absolute tw-z-[2] tw-top-0 tw-bottom-0 tw-left-0 tw-shrink !important;
|
|
309
|
+
width: -webkit-fill-available;
|
|
310
|
+
width: -moz-available;
|
|
311
|
+
width: fill-available;
|
|
290
312
|
}
|
|
291
313
|
|
|
292
314
|
&__header {
|
|
@@ -306,8 +328,8 @@ const { open } = usePopup({
|
|
|
306
328
|
}
|
|
307
329
|
|
|
308
330
|
&__error-button {
|
|
309
|
-
@apply tw-shrink-0 tw-opacity-80
|
|
310
|
-
@apply tw-text-[color:var(--blade-text-color)]
|
|
331
|
+
@apply tw-shrink-0 tw-opacity-80 hover:tw-opacity-100 hover:tw-text-[color:var(--blade-text-color)];
|
|
332
|
+
@apply tw-text-[color:var(--blade-text-color)] !important;
|
|
311
333
|
}
|
|
312
334
|
|
|
313
335
|
&__unsaved-changes {
|
|
@@ -339,7 +361,7 @@ const { open } = usePopup({
|
|
|
339
361
|
}
|
|
340
362
|
|
|
341
363
|
&__slot {
|
|
342
|
-
@apply tw-flex tw-flex-auto tw-flex-col;
|
|
364
|
+
@apply tw-flex tw-flex-auto tw-flex-col tw-relative;
|
|
343
365
|
|
|
344
366
|
&--desktop {
|
|
345
367
|
@apply tw-w-0;
|
|
@@ -362,46 +384,14 @@ const { open } = usePopup({
|
|
|
362
384
|
@apply tw-mr-[10px];
|
|
363
385
|
|
|
364
386
|
&-button {
|
|
365
|
-
@apply tw-text-[color:var(--blade-header-breadcrumbs-button-color)] tw-cursor-pointer hover:tw-text-[color:var(--blade-header-breadcrumbs-button-color-hover)]
|
|
387
|
+
@apply tw-text-[color:var(--blade-header-breadcrumbs-button-color)] tw-cursor-pointer hover:tw-text-[color:var(--blade-header-breadcrumbs-button-color-hover)] !important;
|
|
366
388
|
|
|
367
389
|
&--active {
|
|
368
|
-
@apply tw-text-[color:var(--blade-header-breadcrumbs-button-color-hover)]
|
|
390
|
+
@apply tw-text-[color:var(--blade-header-breadcrumbs-button-color-hover)] !important;
|
|
369
391
|
}
|
|
370
392
|
}
|
|
371
393
|
}
|
|
372
394
|
|
|
373
|
-
// &__widgets {
|
|
374
|
-
// @apply tw-flex;
|
|
375
|
-
|
|
376
|
-
// &--desktop {
|
|
377
|
-
// @apply tw-border-l tw-border-solid tw-border-l-[color:var(--blade-border-color)];
|
|
378
|
-
// }
|
|
379
|
-
|
|
380
|
-
// &--not-expanded {
|
|
381
|
-
// @apply tw-w-12 tw-flex-col;
|
|
382
|
-
// }
|
|
383
|
-
|
|
384
|
-
// &--expanded {
|
|
385
|
-
// @apply tw-w-32 tw-flex-col;
|
|
386
|
-
// }
|
|
387
|
-
|
|
388
|
-
// &--mobile {
|
|
389
|
-
// @apply tw-w-auto tw-border-t tw-border-solid tw-border-t-[color:var(--blade-border-color)] tw-flex-row;
|
|
390
|
-
// }
|
|
391
|
-
// }
|
|
392
|
-
|
|
393
|
-
// &__widget-container {
|
|
394
|
-
// @apply tw-flex tw-overflow-y-auto tw-flex-row;
|
|
395
|
-
|
|
396
|
-
// // &--desktop {
|
|
397
|
-
// // @apply tw-flex-col tw-overflow-x-clip;
|
|
398
|
-
// // }
|
|
399
|
-
|
|
400
|
-
// // &--mobile {
|
|
401
|
-
// // @apply tw-flex-row;
|
|
402
|
-
// // }
|
|
403
|
-
// }
|
|
404
|
-
|
|
405
395
|
&__widget-toggle {
|
|
406
396
|
@apply tw-flex;
|
|
407
397
|
|
|
@@ -416,7 +406,7 @@ const { open } = usePopup({
|
|
|
416
406
|
|
|
417
407
|
&__toggle-icon {
|
|
418
408
|
@apply tw-flex-auto tw-items-center tw-self-center tw-justify-self-center tw-text-[color:var(--blade-icon-color)] tw-cursor-pointer hover:tw-text-[color:var(--blade-icon-hover-color)];
|
|
419
|
-
@apply tw-flex
|
|
409
|
+
@apply tw-flex !important;
|
|
420
410
|
}
|
|
421
411
|
|
|
422
412
|
&__toggle-icon--desktop {
|
|
@@ -435,7 +425,7 @@ const { open } = usePopup({
|
|
|
435
425
|
}
|
|
436
426
|
|
|
437
427
|
&__breadcrumbs-button {
|
|
438
|
-
@apply tw-p-0
|
|
428
|
+
@apply tw-p-0 !important;
|
|
439
429
|
}
|
|
440
430
|
}
|
|
441
431
|
|
|
@@ -19,7 +19,6 @@
|
|
|
19
19
|
:has-click-listener="hasClickListener"
|
|
20
20
|
:editing="editing"
|
|
21
21
|
:enable-item-actions="enableItemActions"
|
|
22
|
-
:item-action-builder="itemActionBuilder"
|
|
23
22
|
:item-actions="itemActions"
|
|
24
23
|
:selected-row-index="selectedRowIndex"
|
|
25
24
|
:is-selected="isSelected"
|
|
@@ -89,7 +88,6 @@ defineProps<{
|
|
|
89
88
|
hasClickListener?: boolean;
|
|
90
89
|
editing?: boolean;
|
|
91
90
|
enableItemActions?: boolean;
|
|
92
|
-
itemActionBuilder?: (item: T) => IActionBuilderResult[] | undefined;
|
|
93
91
|
itemActions: IActionBuilderResult[][];
|
|
94
92
|
selectedRowIndex?: number;
|
|
95
93
|
columnsInit: boolean;
|
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
</div>
|
|
65
65
|
</div>
|
|
66
66
|
<div
|
|
67
|
-
v-if="enableItemActions &&
|
|
67
|
+
v-if="enableItemActions && itemActions?.length && typeof item === 'object' && selectedRowIndex === index"
|
|
68
68
|
class="vc-table-row__actions"
|
|
69
69
|
:class="{
|
|
70
70
|
'vc-table-row__actions--hover': hasClickListener,
|
|
@@ -121,7 +121,6 @@ defineProps<{
|
|
|
121
121
|
hasClickListener?: boolean;
|
|
122
122
|
editing?: boolean;
|
|
123
123
|
enableItemActions?: boolean;
|
|
124
|
-
itemActionBuilder?: (item: T) => IActionBuilderResult[] | undefined;
|
|
125
124
|
itemActions: IActionBuilderResult[][];
|
|
126
125
|
selectedRowIndex?: number;
|
|
127
126
|
isSelected: (item: T) => boolean;
|
package/ui/components/organisms/vc-table/_internal/vc-table-desktop-view/vc-table-desktop-view.vue
CHANGED
|
@@ -51,7 +51,6 @@
|
|
|
51
51
|
:has-click-listener="hasClickListener"
|
|
52
52
|
:editing="editing"
|
|
53
53
|
:enable-item-actions="enableItemActions"
|
|
54
|
-
:item-action-builder="itemActionBuilder"
|
|
55
54
|
:item-actions="itemActions"
|
|
56
55
|
:selected-row-index="selectedRowIndex"
|
|
57
56
|
:columns-init="columnsInit"
|
|
@@ -119,7 +118,6 @@ const props = defineProps<{
|
|
|
119
118
|
reorderableRows?: boolean;
|
|
120
119
|
reorderableColumns?: boolean;
|
|
121
120
|
enableItemActions?: boolean;
|
|
122
|
-
itemActionBuilder?: (item: T) => IActionBuilderResult<T>[] | undefined;
|
|
123
121
|
itemActions: IActionBuilderResult<T>[][];
|
|
124
122
|
selectedRowIndex?: number;
|
|
125
123
|
hasClickListener?: boolean;
|
|
@@ -1,31 +1,37 @@
|
|
|
1
|
-
import { Ref, ref, shallowRef } from "vue";
|
|
1
|
+
import { type MaybeRef, Ref, ref, shallowRef, unref } from "vue";
|
|
2
2
|
import { IActionBuilderResult } from "../../../../../core/types";
|
|
3
3
|
import type { TableItem } from "./../types";
|
|
4
4
|
|
|
5
5
|
export interface UseTableActionsOptions<T extends TableItem | string> {
|
|
6
|
-
enableItemActions?: boolean
|
|
7
|
-
itemActionBuilder?:
|
|
6
|
+
enableItemActions?: MaybeRef<boolean | undefined>;
|
|
7
|
+
itemActionBuilder?: MaybeRef<
|
|
8
|
+
((item: T) => Promise<IActionBuilderResult<T>[]> | IActionBuilderResult<T>[] | undefined) | undefined
|
|
9
|
+
>;
|
|
8
10
|
}
|
|
9
11
|
|
|
10
12
|
export function useTableActions<T extends TableItem | string>(options: UseTableActionsOptions<T>) {
|
|
11
13
|
const { enableItemActions, itemActionBuilder } = options;
|
|
12
14
|
|
|
13
|
-
const itemActions: Ref<IActionBuilderResult[][]> = ref([]);
|
|
15
|
+
const itemActions: Ref<IActionBuilderResult<T>[][]> = ref([]);
|
|
14
16
|
const selectedRowIndex = shallowRef<number>();
|
|
15
17
|
const mobileSwipeItem = ref<string>();
|
|
16
18
|
|
|
17
19
|
async function calculateActions(items: T[]) {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
+
const builder = unref(itemActionBuilder);
|
|
21
|
+
|
|
22
|
+
if (unref(enableItemActions) && typeof builder === "function") {
|
|
23
|
+
const populatedItems: IActionBuilderResult<T>[][] = [];
|
|
20
24
|
for (let index = 0; index < items.length; index++) {
|
|
21
25
|
if (typeof items[index] === "object") {
|
|
22
|
-
const elementWithActions = await
|
|
26
|
+
const elementWithActions = await builder(items[index]);
|
|
23
27
|
if (elementWithActions) {
|
|
24
28
|
populatedItems.push(elementWithActions);
|
|
25
29
|
}
|
|
26
30
|
}
|
|
27
31
|
}
|
|
28
32
|
itemActions.value = populatedItems;
|
|
33
|
+
} else {
|
|
34
|
+
itemActions.value = [];
|
|
29
35
|
}
|
|
30
36
|
}
|
|
31
37
|
|
|
@@ -40,7 +46,6 @@ export function useTableActions<T extends TableItem | string>(options: UseTableA
|
|
|
40
46
|
}
|
|
41
47
|
|
|
42
48
|
function handleSwipe(id: string) {
|
|
43
|
-
console.log("handleSwipe", id);
|
|
44
49
|
mobileSwipeItem.value = id;
|
|
45
50
|
}
|
|
46
51
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div
|
|
3
|
-
v-loading:49="
|
|
3
|
+
v-loading:49="loading || columnsInit"
|
|
4
4
|
class="vc-table"
|
|
5
5
|
>
|
|
6
6
|
<VcTableSelectAll
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
ref="scrollContainer"
|
|
50
50
|
:no-padding="true"
|
|
51
51
|
class="vc-table__scroll-container"
|
|
52
|
-
:use-ptr="selection
|
|
52
|
+
:use-ptr="selection?.length === 0 ? pullToReload : undefined"
|
|
53
53
|
@scroll:ptr="$emit('scroll:ptr')"
|
|
54
54
|
>
|
|
55
55
|
<!-- Mobile table view -->
|
|
@@ -110,7 +110,6 @@
|
|
|
110
110
|
:selected-item-id="selectedItemId"
|
|
111
111
|
:reorderable-rows="reorderableRows"
|
|
112
112
|
:enable-item-actions="enableItemActions"
|
|
113
|
-
:item-action-builder="itemActionBuilder"
|
|
114
113
|
:item-actions="itemActions"
|
|
115
114
|
:selected-row-index="selectedRowIndex"
|
|
116
115
|
:has-click-listener="hasClickListener"
|
|
@@ -254,6 +253,7 @@ const props = withDefaults(
|
|
|
254
253
|
reorderableColumns: true,
|
|
255
254
|
paginationVariant: "default",
|
|
256
255
|
columnSelector: "auto",
|
|
256
|
+
stateKey: "FALLBACK_STATE_KEY",
|
|
257
257
|
},
|
|
258
258
|
);
|
|
259
259
|
|
|
@@ -273,7 +273,7 @@ const emit = defineEmits<{
|
|
|
273
273
|
|
|
274
274
|
const instance = getCurrentInstance();
|
|
275
275
|
|
|
276
|
-
const { items, columns, stateKey, columnSelector, expanded, selectionItems } = toRefs(props);
|
|
276
|
+
const { items, columns, stateKey, columnSelector, expanded, selectionItems, enableItemActions, itemActionBuilder } = toRefs(props);
|
|
277
277
|
|
|
278
278
|
// template refs
|
|
279
279
|
const tableBody = ref<HTMLElement | null>();
|
|
@@ -301,8 +301,8 @@ const {
|
|
|
301
301
|
});
|
|
302
302
|
|
|
303
303
|
const { itemActions, selectedRowIndex, calculateActions, showActions, closeActions } = useTableActions<T>({
|
|
304
|
-
enableItemActions
|
|
305
|
-
itemActionBuilder
|
|
304
|
+
enableItemActions,
|
|
305
|
+
itemActionBuilder,
|
|
306
306
|
});
|
|
307
307
|
|
|
308
308
|
const isHeaderHover = ref(false);
|