@vc-shell/framework 1.0.223 → 1.0.224
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 +20 -0
- package/core/types/index.ts +2 -1
- package/dist/core/plugins/modularity/index.d.ts +3 -3
- package/dist/core/plugins/modularity/index.d.ts.map +1 -1
- package/dist/core/types/index.d.ts +2 -1
- package/dist/core/types/index.d.ts.map +1 -1
- package/dist/framework.js +20957 -20792
- package/dist/index.css +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/locales/en.json +2 -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/composables/useBladeNavigation/index.d.ts.map +1 -1
- package/dist/shared/components/error-interceptor/index.d.ts.map +1 -1
- package/dist/shared/components/notifications/components/notification-container/index.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/components/SchemaRender.d.ts +6 -0
- package/dist/shared/modules/dynamic/components/SchemaRender.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/components/fields/Button.d.ts +2 -0
- package/dist/shared/modules/dynamic/components/fields/Button.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/components/fields/Card.d.ts +2 -0
- package/dist/shared/modules/dynamic/components/fields/Card.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/components/fields/Checkbox.d.ts +2 -0
- package/dist/shared/modules/dynamic/components/fields/Checkbox.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/components/fields/ContentField.d.ts +2 -0
- package/dist/shared/modules/dynamic/components/fields/ContentField.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/components/fields/CustomComponent.d.ts +2 -0
- package/dist/shared/modules/dynamic/components/fields/CustomComponent.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/components/fields/DynamicProperty.d.ts +2 -0
- package/dist/shared/modules/dynamic/components/fields/DynamicProperty.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/components/fields/EditorField.d.ts +2 -0
- package/dist/shared/modules/dynamic/components/fields/EditorField.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/components/fields/Fieldset.d.ts +2 -0
- package/dist/shared/modules/dynamic/components/fields/Fieldset.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/components/fields/GalleryField.d.ts +2 -0
- package/dist/shared/modules/dynamic/components/fields/GalleryField.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/components/fields/ImageField.d.ts +2 -0
- package/dist/shared/modules/dynamic/components/fields/ImageField.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/components/fields/InputCurrency.d.ts +2 -0
- package/dist/shared/modules/dynamic/components/fields/InputCurrency.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/components/fields/InputField.d.ts +2 -0
- package/dist/shared/modules/dynamic/components/fields/InputField.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/components/fields/MultivalueField.d.ts +2 -0
- package/dist/shared/modules/dynamic/components/fields/MultivalueField.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/components/fields/RadioButtonGroup.d.ts +2 -0
- package/dist/shared/modules/dynamic/components/fields/RadioButtonGroup.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/components/fields/RatingField.d.ts +2 -0
- package/dist/shared/modules/dynamic/components/fields/RatingField.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/components/fields/SelectField.d.ts +2 -0
- package/dist/shared/modules/dynamic/components/fields/SelectField.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/components/fields/StatusField.d.ts +2 -0
- package/dist/shared/modules/dynamic/components/fields/StatusField.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/components/fields/SwitchField.d.ts +2 -0
- package/dist/shared/modules/dynamic/components/fields/SwitchField.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/components/fields/Table.d.ts +10 -8
- package/dist/shared/modules/dynamic/components/fields/Table.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/components/fields/TextareaField.d.ts +2 -0
- package/dist/shared/modules/dynamic/components/fields/TextareaField.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/components/fields/VideoField.d.ts +2 -0
- package/dist/shared/modules/dynamic/components/fields/VideoField.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/components/fields/props.d.ts +2 -0
- package/dist/shared/modules/dynamic/components/fields/props.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/components/fields/storybook/Button.stories.d.ts +15 -9
- package/dist/shared/modules/dynamic/components/fields/storybook/Button.stories.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/components/fields/storybook/Card.stories.d.ts +19 -3
- package/dist/shared/modules/dynamic/components/fields/storybook/Card.stories.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/components/fields/storybook/Checkbox.stories.d.ts +6 -0
- package/dist/shared/modules/dynamic/components/fields/storybook/Checkbox.stories.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/components/fields/storybook/ContentField.stories.d.ts +10 -4
- package/dist/shared/modules/dynamic/components/fields/storybook/ContentField.stories.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/components/fields/storybook/EditorField.stories.d.ts +7 -1
- package/dist/shared/modules/dynamic/components/fields/storybook/EditorField.stories.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/components/fields/storybook/Fieldset.stories.d.ts +9 -3
- package/dist/shared/modules/dynamic/components/fields/storybook/Fieldset.stories.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/components/fields/storybook/GalleryField.stories.d.ts +8 -2
- package/dist/shared/modules/dynamic/components/fields/storybook/GalleryField.stories.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/components/fields/storybook/ImageField.stories.d.ts +11 -5
- package/dist/shared/modules/dynamic/components/fields/storybook/ImageField.stories.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/components/fields/storybook/InputCurrency.stories.d.ts +6 -0
- package/dist/shared/modules/dynamic/components/fields/storybook/InputCurrency.stories.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/components/fields/storybook/InputField.stories.d.ts +9 -3
- package/dist/shared/modules/dynamic/components/fields/storybook/InputField.stories.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/components/fields/storybook/MultivalueField.stories.d.ts +10 -4
- package/dist/shared/modules/dynamic/components/fields/storybook/MultivalueField.stories.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/components/fields/storybook/RadioButtonGroup.stories.d.ts +6 -0
- package/dist/shared/modules/dynamic/components/fields/storybook/RadioButtonGroup.stories.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/components/fields/storybook/RatingField.stories.d.ts +8 -2
- package/dist/shared/modules/dynamic/components/fields/storybook/RatingField.stories.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/components/fields/storybook/SelectField.stories.d.ts +13 -7
- package/dist/shared/modules/dynamic/components/fields/storybook/SelectField.stories.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/components/fields/storybook/StatusField.stories.d.ts +9 -3
- package/dist/shared/modules/dynamic/components/fields/storybook/StatusField.stories.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/components/fields/storybook/TextareaField.stories.d.ts +7 -1
- package/dist/shared/modules/dynamic/components/fields/storybook/TextareaField.stories.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/components/fields/storybook/VideoField.stories.d.ts +6 -0
- package/dist/shared/modules/dynamic/components/fields/storybook/VideoField.stories.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/components/fields/storybook/pages/DynamicRender.d.ts +6 -0
- package/dist/shared/modules/dynamic/components/fields/storybook/pages/DynamicRender.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/composables/useFilterBuilder/index.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/factories/base/useDetailsFactory.d.ts +3 -1
- package/dist/shared/modules/dynamic/factories/base/useDetailsFactory.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/factories/base/useListFactory.d.ts +1 -1
- package/dist/shared/modules/dynamic/factories/base/useListFactory.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/factories/types/index.d.ts +1 -0
- package/dist/shared/modules/dynamic/factories/types/index.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/helpers/override.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/helpers/visibilityHandler.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/index.d.ts +4 -4
- package/dist/shared/modules/dynamic/index.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/pages/dynamic-blade-form.vue.d.ts +2 -0
- package/dist/shared/modules/dynamic/pages/dynamic-blade-form.vue.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/pages/dynamic-blade-list.vue.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/types/index.d.ts +6 -17
- package/dist/shared/modules/dynamic/types/index.d.ts.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/ui/components/atoms/vc-badge/vc-badge.stories.d.ts +4 -4
- package/dist/ui/components/atoms/vc-button/vc-button.stories.d.ts +11 -11
- package/dist/ui/components/atoms/vc-card/vc-card.stories.d.ts +7 -7
- package/dist/ui/components/atoms/vc-container/vc-container.vue.d.ts.map +1 -1
- package/dist/ui/components/atoms/vc-hint/vc-hint.stories.d.ts +1 -1
- package/dist/ui/components/atoms/vc-icon/vc-icon.stories.d.ts +3 -3
- package/dist/ui/components/atoms/vc-image/vc-image.stories.d.ts +3 -3
- package/dist/ui/components/atoms/vc-label/vc-label.stories.d.ts +2 -2
- package/dist/ui/components/atoms/vc-link/vc-link.stories.d.ts +1 -1
- package/dist/ui/components/atoms/vc-progress/vc-progress.stories.d.ts +2 -2
- package/dist/ui/components/atoms/vc-status/vc-status.stories.d.ts +4 -4
- package/dist/ui/components/atoms/vc-switch/vc-switch.stories.d.ts +1 -1
- package/dist/ui/components/molecules/vc-breadcrumbs/vc-breadcrumbs.stories.d.ts +1 -1
- package/dist/ui/components/molecules/vc-checkbox/vc-checkbox.stories.d.ts +10 -10
- package/dist/ui/components/molecules/vc-editor/vc-editor.stories.d.ts +1 -1
- package/dist/ui/components/molecules/vc-editor/vc-editor.vue.d.ts.map +1 -1
- package/dist/ui/components/molecules/vc-field/vc-field.stories.d.ts +95 -2
- package/dist/ui/components/molecules/vc-field/vc-field.stories.d.ts.map +1 -1
- package/dist/ui/components/molecules/vc-file-upload/vc-file-upload.stories.d.ts +2 -2
- package/dist/ui/components/molecules/vc-input/vc-input.stories.d.ts +2 -2
- package/dist/ui/components/molecules/vc-input-currency/vc-input-currency.stories.d.ts +2 -2
- package/dist/ui/components/molecules/vc-multivalue/vc-multivalue.vue.d.ts.map +1 -1
- package/dist/ui/components/molecules/vc-radio-button/vc-radio-button.stories.d.ts +8 -8
- package/dist/ui/components/molecules/vc-rating/vc-rating.stories.d.ts +1 -1
- package/dist/ui/components/molecules/vc-select/vc-select.vue.d.ts.map +1 -1
- package/dist/ui/components/molecules/vc-slider/index.d.ts.map +1 -1
- package/dist/ui/components/molecules/vc-slider/vc-slider.stories.d.ts +3 -3
- package/dist/ui/components/organisms/vc-dynamic-property/vc-dynamic-property.vue.d.ts.map +1 -1
- package/dist/ui/components/organisms/vc-gallery/vc-gallery.stories.d.ts +1 -1
- package/dist/ui/components/organisms/vc-table/_internal/vc-table-add-new/vc-table-add-new.vue.d.ts.map +1 -1
- package/dist/ui/components/organisms/vc-table/_internal/vc-table-cell/vc-table-cell.vue.d.ts.map +1 -1
- package/dist/ui/components/organisms/vc-table/_internal/vc-table-column-switcher/vc-table-column-switcher.vue.d.ts +1 -0
- package/dist/ui/components/organisms/vc-table/_internal/vc-table-column-switcher/vc-table-column-switcher.vue.d.ts.map +1 -1
- package/dist/ui/components/organisms/vc-table/_internal/vc-table-empty/vc-table-empty.vue.d.ts +42 -0
- package/dist/ui/components/organisms/vc-table/_internal/vc-table-empty/vc-table-empty.vue.d.ts.map +1 -0
- package/dist/ui/components/organisms/vc-table/_internal/vc-table-mobile-item/vc-table-mobile-item.vue.d.ts.map +1 -1
- package/dist/ui/components/organisms/vc-table/vc-table.stories.d.ts +15 -105
- package/dist/ui/components/organisms/vc-table/vc-table.stories.d.ts.map +1 -1
- package/dist/ui/components/organisms/vc-table/vc-table.vue.d.ts +3 -21
- 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 +1 -0
- package/shared/components/blade-navigation/composables/useBladeNavigation/index.ts +20 -9
- package/shared/modules/dynamic/components/fields/Card.ts +1 -0
- package/shared/modules/dynamic/components/fields/GalleryField.ts +3 -2
- package/shared/modules/dynamic/components/fields/Table.ts +61 -21
- package/shared/modules/dynamic/components/fields/storybook/Card.stories.ts +10 -0
- package/shared/modules/dynamic/components/fields/storybook/ContentField.stories.ts +1 -1
- package/shared/modules/dynamic/components/fields/storybook/Fieldset.stories.ts +1 -1
- package/shared/modules/dynamic/components/fields/storybook/InputField.stories.ts +1 -1
- package/shared/modules/dynamic/components/fields/storybook/SelectField.stories.ts +4 -4
- package/shared/modules/dynamic/factories/base/useDetailsFactory.ts +12 -1
- package/shared/modules/dynamic/factories/types/index.ts +1 -0
- package/shared/modules/dynamic/helpers/nodeBuilder.ts +6 -6
- package/shared/modules/dynamic/pages/dynamic-blade-list.vue +5 -2
- package/shared/modules/dynamic/types/index.ts +6 -16
- package/ui/components/atoms/vc-card/vc-card.vue +2 -2
- package/ui/components/atoms/vc-container/vc-container.vue +71 -128
- package/ui/components/atoms/vc-progress/vc-progress.stories.ts +1 -1
- package/ui/components/atoms/vc-status/vc-status.stories.ts +1 -1
- package/ui/components/molecules/vc-editor/vc-editor.vue +3 -0
- package/ui/components/molecules/vc-field/vc-field.stories.ts +2 -2
- package/ui/components/molecules/vc-input/vc-input.stories.ts +1 -1
- package/ui/components/molecules/vc-select/vc-select.vue +3 -3
- package/ui/components/organisms/vc-app/vc-app.vue +2 -2
- package/ui/components/organisms/vc-table/_internal/vc-table-add-new/vc-table-add-new.vue +18 -20
- package/ui/components/organisms/vc-table/_internal/vc-table-cell/vc-table-cell.vue +23 -16
- package/ui/components/organisms/vc-table/_internal/vc-table-column-switcher/vc-table-column-switcher.vue +8 -1
- package/ui/components/organisms/vc-table/_internal/vc-table-empty/vc-table-empty.vue +76 -0
- package/ui/components/organisms/vc-table/_internal/vc-table-mobile-item/vc-table-mobile-item.vue +9 -7
- package/ui/components/organisms/vc-table/vc-table.vue +188 -358
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vc-shell/framework",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.224",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/framework.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -60,9 +60,9 @@
|
|
|
60
60
|
"devDependencies": {
|
|
61
61
|
"@types/dompurify": "^3.0.5",
|
|
62
62
|
"@types/quill": "^2.0.14",
|
|
63
|
-
"@vc-shell/api-client-generator": "^1.0.
|
|
64
|
-
"@vc-shell/config-generator": "^1.0.
|
|
65
|
-
"@vc-shell/ts-config": "^1.0.
|
|
63
|
+
"@vc-shell/api-client-generator": "^1.0.224",
|
|
64
|
+
"@vc-shell/config-generator": "^1.0.224",
|
|
65
|
+
"@vc-shell/ts-config": "^1.0.224",
|
|
66
66
|
"@vitejs/plugin-vue": "^5.0.3",
|
|
67
67
|
"sass": "^1.69.6",
|
|
68
68
|
"shx": "^0.3.4",
|
package/shared/components/blade-navigation/components/vc-blade-navigation/vc-blade-navigation.vue
CHANGED
|
@@ -103,6 +103,7 @@ const render = () => {
|
|
|
103
103
|
expandable: quantity.value > 1,
|
|
104
104
|
expanded: index - hiddenQuantity === quantity.value - 1,
|
|
105
105
|
"onClose:blade": () => {
|
|
106
|
+
if (index === 0) return;
|
|
106
107
|
closeBlade(index);
|
|
107
108
|
},
|
|
108
109
|
"onParent:call": async (args: IParentCallArgs) => {
|
|
@@ -167,7 +167,7 @@ const useBladeNavigationSingleton = createSharedComposable(() => {
|
|
|
167
167
|
navigationInstance.blades.value = [];
|
|
168
168
|
activeWorkspace.value = undefined;
|
|
169
169
|
} else {
|
|
170
|
-
if (oldVal) router.
|
|
170
|
+
if (oldVal) router.push({ path: oldVal });
|
|
171
171
|
}
|
|
172
172
|
}
|
|
173
173
|
|
|
@@ -175,6 +175,7 @@ const useBladeNavigationSingleton = createSharedComposable(() => {
|
|
|
175
175
|
wsRouteComponent.props.navigation.idx = 0;
|
|
176
176
|
navigationInstance.blades.value[0] = wsRouteComponent;
|
|
177
177
|
activeWorkspace.value = wsRouteComponent;
|
|
178
|
+
closeBlade(1);
|
|
178
179
|
}
|
|
179
180
|
|
|
180
181
|
function getWorkspaceRouteComponent(workspaceUrl: string) {
|
|
@@ -290,6 +291,7 @@ export function useBladeNavigation(): IUseBladeNavigation {
|
|
|
290
291
|
{ blade, param, options }: IBladeEvent<Blade>,
|
|
291
292
|
query: LocationQuery | undefined = undefined,
|
|
292
293
|
params: RouteParams = {},
|
|
294
|
+
replace = false,
|
|
293
295
|
) {
|
|
294
296
|
const createdComponent = h(
|
|
295
297
|
blade,
|
|
@@ -327,7 +329,7 @@ export function useBladeNavigation(): IUseBladeNavigation {
|
|
|
327
329
|
if (wsroute && wsroute.components) {
|
|
328
330
|
wsroute.components.default = createdComponent;
|
|
329
331
|
}
|
|
330
|
-
return await router.
|
|
332
|
+
return await router.push({ name: wsroute?.name, params: { ...params, ...route.params }, query, replace });
|
|
331
333
|
} else
|
|
332
334
|
notification.error(i18n.global.t("PERMISSION_MESSAGES.ACCESS_RESTRICTED"), {
|
|
333
335
|
timeout: 3000,
|
|
@@ -502,9 +504,14 @@ export function useBladeNavigation(): IUseBladeNavigation {
|
|
|
502
504
|
|
|
503
505
|
// Open the workspace component or workspace route.
|
|
504
506
|
if (registeredRouteComponent?.type.isWorkspace) {
|
|
505
|
-
await openWorkspace(
|
|
506
|
-
|
|
507
|
-
|
|
507
|
+
await openWorkspace(
|
|
508
|
+
{
|
|
509
|
+
blade: registeredRouteComponent as unknown as BladeInstanceConstructor,
|
|
510
|
+
},
|
|
511
|
+
undefined,
|
|
512
|
+
undefined,
|
|
513
|
+
true,
|
|
514
|
+
);
|
|
508
515
|
return { name: registeredRouteComponent?.type.name, params };
|
|
509
516
|
}
|
|
510
517
|
|
|
@@ -525,10 +532,14 @@ export function useBladeNavigation(): IUseBladeNavigation {
|
|
|
525
532
|
}),
|
|
526
533
|
getURLQuery().obj,
|
|
527
534
|
params,
|
|
535
|
+
true,
|
|
528
536
|
);
|
|
529
537
|
|
|
530
538
|
// Open the route if it's routable.
|
|
531
|
-
if (
|
|
539
|
+
if (
|
|
540
|
+
registeredRouteComponent?.type.routable &&
|
|
541
|
+
registeredWorkspaceComponent.type.moduleUid === registeredRouteComponent.type.moduleUid
|
|
542
|
+
) {
|
|
532
543
|
await openBlade({
|
|
533
544
|
blade: registeredRouteComponent as unknown as BladeInstanceConstructor,
|
|
534
545
|
param: param,
|
|
@@ -565,7 +576,7 @@ export function useBladeNavigation(): IUseBladeNavigation {
|
|
|
565
576
|
// add blade name to query keys
|
|
566
577
|
const namedQuery = _.mapKeys(
|
|
567
578
|
_.mapValues(query, (value) => value?.toString()),
|
|
568
|
-
(value, key) => instance.vnode.type.name
|
|
579
|
+
(value, key) => instance.vnode.type.name?.toLowerCase() + "_" + key,
|
|
569
580
|
);
|
|
570
581
|
const cleanQuery = _.omitBy(namedQuery, _.isNil);
|
|
571
582
|
|
|
@@ -580,10 +591,10 @@ export function useBladeNavigation(): IUseBladeNavigation {
|
|
|
580
591
|
function getNavigationQuery() {
|
|
581
592
|
if (instance.vnode.props.navigation.idx === 0) {
|
|
582
593
|
const queryKeys = Array.from(Object.keys(route.query));
|
|
583
|
-
const bladeQueryKeys = queryKeys.filter((key) => key.startsWith(instance.vnode.type.name
|
|
594
|
+
const bladeQueryKeys = queryKeys.filter((key) => key.startsWith(instance.vnode.type.name?.toLowerCase() ?? ""));
|
|
584
595
|
|
|
585
596
|
const namedQuery = _.mapKeys(_.pick(route.query, bladeQueryKeys), (value, key) =>
|
|
586
|
-
key.replace(instance.vnode.type.name
|
|
597
|
+
key.replace(instance.vnode.type.name?.toLowerCase() + "_", ""),
|
|
587
598
|
) as Record<string, string | number>;
|
|
588
599
|
|
|
589
600
|
const obj: typeof namedQuery = {};
|
|
@@ -78,7 +78,8 @@ export default {
|
|
|
78
78
|
async remove(image: ICommonAsset) {
|
|
79
79
|
if (!imagesHandler.remove?.value) throw new Error("Remove handler is not provided");
|
|
80
80
|
if (
|
|
81
|
-
|
|
81
|
+
imagesHandler.noRemoveConfirmation ||
|
|
82
|
+
(await showConfirmation(
|
|
82
83
|
computed(() =>
|
|
83
84
|
t(
|
|
84
85
|
`${props.bladeContext?.settings?.localizationPrefix
|
|
@@ -86,7 +87,7 @@ export default {
|
|
|
86
87
|
.toUpperCase()}.PAGES.ALERTS.IMAGE_DELETE_CONFIRMATION`,
|
|
87
88
|
),
|
|
88
89
|
),
|
|
89
|
-
)
|
|
90
|
+
))
|
|
90
91
|
) {
|
|
91
92
|
const edited = await imagesHandler.remove?.value?.([image]);
|
|
92
93
|
await editImages(edited);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
2
|
import { useTableTemplates } from "./../../composables";
|
|
3
|
-
import { Component, ExtractPropTypes, computed, h, inject, unref } from "vue";
|
|
3
|
+
import { Component, ExtractPropTypes, computed, h, inject, isRef, nextTick, toValue, unref } from "vue";
|
|
4
4
|
import { Table } from "../factories";
|
|
5
5
|
import componentProps from "./props";
|
|
6
6
|
import { TableSchema } from "../../types";
|
|
@@ -8,8 +8,14 @@ import { useI18n } from "vue-i18n";
|
|
|
8
8
|
import { unrefNested } from "../../helpers/unrefNested";
|
|
9
9
|
import { setModel } from "../../helpers/setters";
|
|
10
10
|
import { safeIn } from "../../helpers/safeIn";
|
|
11
|
+
import { IActionBuilderResult, ITableColumns } from "../../../../../core/types";
|
|
11
12
|
|
|
12
|
-
type TableItemData =
|
|
13
|
+
type TableItemData<T> = {
|
|
14
|
+
name: string;
|
|
15
|
+
item: T;
|
|
16
|
+
cell: ITableColumns;
|
|
17
|
+
index: number;
|
|
18
|
+
};
|
|
13
19
|
|
|
14
20
|
export default {
|
|
15
21
|
name: "TableEl",
|
|
@@ -19,13 +25,48 @@ export default {
|
|
|
19
25
|
const { t } = useI18n({ useScope: "global" });
|
|
20
26
|
const enableEdit = inject("isBladeEditable", false);
|
|
21
27
|
const enableEditComputed = computed(() => unref(enableEdit));
|
|
28
|
+
const items = (unrefNested(props.baseProps).modelValue ?? []) as any[];
|
|
29
|
+
|
|
30
|
+
function disabledActionHandler(disabled: { method?: string } | boolean, item: (typeof items)[number]): boolean {
|
|
31
|
+
if (!disabled) return false;
|
|
32
|
+
if (typeof disabled === "boolean") return disabled;
|
|
33
|
+
else if (disabled.method && typeof toValue(props.bladeContext.scope)?.[disabled.method] === "function")
|
|
34
|
+
return toValue(props.bladeContext.scope)?.[disabled.method]({ item });
|
|
35
|
+
else if (disabled.method && toValue(props.bladeContext.scope)?.[disabled.method])
|
|
36
|
+
return toValue(props.bladeContext.scope)?.[disabled.method];
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
function actionBuilder(item: (typeof items)[number]): IActionBuilderResult[] | undefined {
|
|
41
|
+
const result = props.element?.actions?.reduce((arr, action) => {
|
|
42
|
+
const isDisabled = disabledActionHandler(action?.disabled ?? false, item);
|
|
43
|
+
|
|
44
|
+
if (!toValue(isDisabled)) {
|
|
45
|
+
arr.push({
|
|
46
|
+
icon: action.icon,
|
|
47
|
+
title: computed(() => t(action.title)),
|
|
48
|
+
type: action.type,
|
|
49
|
+
position: action.position,
|
|
50
|
+
clickHandler: async (itemVal: (typeof items)[number], index: number) => {
|
|
51
|
+
try {
|
|
52
|
+
await toValue(props.bladeContext.scope)?.[action.method]?.(itemVal, index);
|
|
53
|
+
} catch (error) {
|
|
54
|
+
throw new Error(`Method ${action.method} is not defined in scope or toolbarOverrides`);
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
return arr;
|
|
60
|
+
}, [] as IActionBuilderResult[]);
|
|
61
|
+
|
|
62
|
+
return result;
|
|
63
|
+
}
|
|
22
64
|
|
|
23
65
|
return () => {
|
|
24
66
|
const field = Table({
|
|
25
67
|
props: Object.assign(
|
|
26
68
|
{},
|
|
27
69
|
{
|
|
28
|
-
removeRowButton: props.element.removeRowButton?.show,
|
|
29
70
|
addNewRowButton: props.element.addNewRowButton
|
|
30
71
|
? {
|
|
31
72
|
title: computed(() => t(props.element.addNewRowButton?.title ?? "")),
|
|
@@ -40,7 +81,9 @@ export default {
|
|
|
40
81
|
stateKey: props.element.id,
|
|
41
82
|
class: `!tw-flex-auto ${unrefNested(props.baseProps).classNames ?? ""}`,
|
|
42
83
|
editing: enableEditComputed.value,
|
|
43
|
-
|
|
84
|
+
enableItemActions: !!props.element.actions,
|
|
85
|
+
itemActionBuilder: actionBuilder,
|
|
86
|
+
onOnEditComplete: (data: { event: { field: string; value: any }; index: number }) => {
|
|
44
87
|
if (props.fieldContext) {
|
|
45
88
|
setModel({
|
|
46
89
|
context: props.fieldContext,
|
|
@@ -49,15 +92,6 @@ export default {
|
|
|
49
92
|
});
|
|
50
93
|
}
|
|
51
94
|
},
|
|
52
|
-
onOnRowRemove: (data: { index: number }) => {
|
|
53
|
-
if (
|
|
54
|
-
props.element.removeRowButton?.method &&
|
|
55
|
-
props.bladeContext.scope?.[props.element.removeRowButton?.method] &&
|
|
56
|
-
typeof props.bladeContext.scope?.[props.element.removeRowButton?.method] === "function"
|
|
57
|
-
) {
|
|
58
|
-
props.bladeContext.scope?.[props.element.removeRowButton?.method]?.(data.index);
|
|
59
|
-
}
|
|
60
|
-
},
|
|
61
95
|
onOnAddNewRow: () => {
|
|
62
96
|
if (
|
|
63
97
|
props.element.addNewRowButton?.method &&
|
|
@@ -86,12 +120,21 @@ export default {
|
|
|
86
120
|
slots: {
|
|
87
121
|
...Object.entries(tableTemplates.templateOverrideComponents).reduce(
|
|
88
122
|
(obj, [key, value], index) => {
|
|
89
|
-
obj[`item_${key}`] = (itemData: TableItemData) => {
|
|
123
|
+
obj[`item_${key}`] = (itemData: TableItemData<(typeof items)[number]>) => {
|
|
90
124
|
return h(unref(value), {
|
|
91
125
|
index: itemData.index,
|
|
92
126
|
context: itemData,
|
|
93
127
|
key: `template_override_${props.element.id}_${index}`,
|
|
94
128
|
bladeContext: props.bladeContext,
|
|
129
|
+
onEditComplete: (data: any) => {
|
|
130
|
+
if (props.fieldContext) {
|
|
131
|
+
setModel({
|
|
132
|
+
context: props.fieldContext,
|
|
133
|
+
property: `${props.element.property}.${itemData.index}.${key}`,
|
|
134
|
+
value: data,
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
},
|
|
95
138
|
});
|
|
96
139
|
};
|
|
97
140
|
|
|
@@ -100,20 +143,17 @@ export default {
|
|
|
100
143
|
{} as Record<`item_${string}`, any>,
|
|
101
144
|
),
|
|
102
145
|
notfound: tableTemplates?.notFound
|
|
103
|
-
? (
|
|
104
|
-
h(tableTemplates.notFound as Component, { context: itemData, bladeContext: props.bladeContext })
|
|
146
|
+
? () => h(tableTemplates.notFound as Component, { context: props.bladeContext })
|
|
105
147
|
: undefined,
|
|
106
148
|
"mobile-item": tableTemplates?.mobileView
|
|
107
|
-
? (itemData:
|
|
149
|
+
? (itemData: (typeof items)[number]) =>
|
|
108
150
|
h(tableTemplates.mobileView as Component, { context: itemData, bladeContext: props.bladeContext })
|
|
109
151
|
: undefined,
|
|
110
152
|
empty: tableTemplates?.empty
|
|
111
|
-
? (
|
|
112
|
-
h(tableTemplates.empty as Component, { context: itemData, bladeContext: props.bladeContext })
|
|
153
|
+
? () => h(tableTemplates.empty as Component, { context: props.bladeContext })
|
|
113
154
|
: undefined,
|
|
114
155
|
footer: tableTemplates?.footer
|
|
115
|
-
? (
|
|
116
|
-
h(tableTemplates.footer as Component, { context: itemData, bladeContext: props.bladeContext })
|
|
156
|
+
? () => h(tableTemplates.footer as Component, { context: props.bladeContext })
|
|
117
157
|
: undefined,
|
|
118
158
|
},
|
|
119
159
|
});
|
|
@@ -87,6 +87,16 @@ export default {
|
|
|
87
87
|
},
|
|
88
88
|
},
|
|
89
89
|
},
|
|
90
|
+
variant: {
|
|
91
|
+
description: "Card variant.",
|
|
92
|
+
control: "radio",
|
|
93
|
+
options: ["default", "success", "danger"],
|
|
94
|
+
table: {
|
|
95
|
+
type: {
|
|
96
|
+
summary: "default | success | danger",
|
|
97
|
+
},
|
|
98
|
+
},
|
|
99
|
+
},
|
|
90
100
|
},
|
|
91
101
|
parameters: {
|
|
92
102
|
docs: {
|
|
@@ -131,7 +131,7 @@ export default {
|
|
|
131
131
|
summary: "boolean",
|
|
132
132
|
},
|
|
133
133
|
defaultValue: {
|
|
134
|
-
summary: false,
|
|
134
|
+
summary: "false",
|
|
135
135
|
},
|
|
136
136
|
},
|
|
137
137
|
},
|
|
@@ -156,7 +156,7 @@ export default {
|
|
|
156
156
|
summary: "boolean",
|
|
157
157
|
},
|
|
158
158
|
defaultValue: {
|
|
159
|
-
summary: false,
|
|
159
|
+
summary: "false",
|
|
160
160
|
},
|
|
161
161
|
},
|
|
162
162
|
},
|
|
@@ -167,7 +167,7 @@ export default {
|
|
|
167
167
|
summary: "boolean",
|
|
168
168
|
},
|
|
169
169
|
defaultValue: {
|
|
170
|
-
summary: false,
|
|
170
|
+
summary: "false",
|
|
171
171
|
},
|
|
172
172
|
},
|
|
173
173
|
},
|
|
@@ -179,7 +179,7 @@ export default {
|
|
|
179
179
|
summary: "boolean",
|
|
180
180
|
},
|
|
181
181
|
defaultValue: {
|
|
182
|
-
summary: true,
|
|
182
|
+
summary: "true",
|
|
183
183
|
},
|
|
184
184
|
},
|
|
185
185
|
},
|
|
@@ -11,7 +11,7 @@ export interface UseDetailsFactoryParams<Item> {
|
|
|
11
11
|
remove?: (args: ItemId) => Promise<void> | void;
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
-
export const useDetailsFactory = <Item>(factoryParams: UseDetailsFactoryParams<Item>) => {
|
|
14
|
+
export const useDetailsFactory = <Item extends { id?: string }>(factoryParams: UseDetailsFactoryParams<Item>) => {
|
|
15
15
|
return function useDetails(): UseDetails<Item> {
|
|
16
16
|
const { setFieldError, setErrors, validate, setFieldValue, setValues, errorBag } = useForm({
|
|
17
17
|
validateOnMount: false,
|
|
@@ -34,6 +34,12 @@ export const useDetailsFactory = <Item>(factoryParams: UseDetailsFactoryParams<I
|
|
|
34
34
|
isModified.value = false;
|
|
35
35
|
isDirty = ref(false);
|
|
36
36
|
|
|
37
|
+
const id = item?.id ?? res?.id;
|
|
38
|
+
|
|
39
|
+
if (id) {
|
|
40
|
+
await load({ id });
|
|
41
|
+
}
|
|
42
|
+
|
|
37
43
|
if (res) return res;
|
|
38
44
|
} else throw new Error("Form is not valid");
|
|
39
45
|
});
|
|
@@ -58,6 +64,7 @@ export const useDetailsFactory = <Item>(factoryParams: UseDetailsFactoryParams<I
|
|
|
58
64
|
setFieldValue,
|
|
59
65
|
setValues,
|
|
60
66
|
resetModified,
|
|
67
|
+
resetDirty,
|
|
61
68
|
validate,
|
|
62
69
|
}),
|
|
63
70
|
);
|
|
@@ -78,6 +85,10 @@ export const useDetailsFactory = <Item>(factoryParams: UseDetailsFactoryParams<I
|
|
|
78
85
|
itemTemp.value = _.cloneDeep(data);
|
|
79
86
|
}) as (data: MaybeRef<Item | undefined> | ComputedRef<Item | undefined>, updateInitial?: MaybeRef<boolean>) => void;
|
|
80
87
|
|
|
88
|
+
const resetDirty = () => {
|
|
89
|
+
isDirty = ref(false);
|
|
90
|
+
};
|
|
91
|
+
|
|
81
92
|
return {
|
|
82
93
|
load,
|
|
83
94
|
saveChanges,
|
|
@@ -32,6 +32,7 @@ export interface IValidationState<Item> {
|
|
|
32
32
|
data: MaybeRef<Item | undefined> | ComputedRef<Item | undefined>,
|
|
33
33
|
updateInitial?: MaybeRef<boolean>,
|
|
34
34
|
) => void;
|
|
35
|
+
resetDirty: () => void;
|
|
35
36
|
validate: FormContext["validate"];
|
|
36
37
|
errorBag: Partial<Record<string, string[]>>;
|
|
37
38
|
}
|
|
@@ -76,8 +76,8 @@ function nodeBuilder<
|
|
|
76
76
|
|
|
77
77
|
const hint =
|
|
78
78
|
safeIn("hint", controlSchema) && controlSchema.hint
|
|
79
|
-
? unref(unwrapInterpolation(controlSchema.hint,
|
|
80
|
-
|
|
79
|
+
? (bladeContext.scope && unref(unwrapInterpolation(controlSchema.hint, bladeContext.scope))) ??
|
|
80
|
+
unref(unwrapInterpolation(controlSchema.hint, internalContext)) ??
|
|
81
81
|
undefined
|
|
82
82
|
: undefined;
|
|
83
83
|
|
|
@@ -115,16 +115,16 @@ function nodeBuilder<
|
|
|
115
115
|
|
|
116
116
|
const baseProps: IControlBaseProps = reactive({
|
|
117
117
|
key: `${parentId}`,
|
|
118
|
-
label: computed(() => (label ? t(label) : undefined)),
|
|
119
|
-
hint: computed(() => (hint ? t(hint) : undefined)),
|
|
118
|
+
label: computed(() => (typeof label !== "undefined" ? t(label) : undefined)),
|
|
119
|
+
hint: computed(() => (typeof hint !== "undefined" ? t(hint) : undefined)),
|
|
120
120
|
disabled,
|
|
121
121
|
name,
|
|
122
122
|
rules,
|
|
123
|
-
placeholder: computed(() => (placeholder ? t(placeholder) : undefined)),
|
|
123
|
+
placeholder: computed(() => (typeof placeholder !== "undefined" ? t(placeholder) : undefined)),
|
|
124
124
|
required,
|
|
125
125
|
modelValue,
|
|
126
126
|
"onUpdate:modelValue": onUpdateModelValue,
|
|
127
|
-
tooltip: computed(() => (tooltip ? t(tooltip) : undefined)),
|
|
127
|
+
tooltip: computed(() => (typeof tooltip !== "undefined" ? t(tooltip) : undefined)),
|
|
128
128
|
multilanguage,
|
|
129
129
|
classNames:
|
|
130
130
|
"horizontalSeparator" in controlSchema && controlSchema.horizontalSeparator
|
|
@@ -63,7 +63,6 @@
|
|
|
63
63
|
@pagination-click="onPaginationClick"
|
|
64
64
|
@selection-changed="onSelectionChanged"
|
|
65
65
|
@header-click="onHeaderClick"
|
|
66
|
-
@load:change="onSearchList"
|
|
67
66
|
@scroll:ptr="reload"
|
|
68
67
|
@search:change="onSearchList"
|
|
69
68
|
@row:reorder="sortRows"
|
|
@@ -129,6 +128,7 @@
|
|
|
129
128
|
<component
|
|
130
129
|
:is="component"
|
|
131
130
|
:context="itemData"
|
|
131
|
+
:blade-context="bladeContext"
|
|
132
132
|
/>
|
|
133
133
|
</template>
|
|
134
134
|
|
|
@@ -141,6 +141,7 @@
|
|
|
141
141
|
<component
|
|
142
142
|
:is="tableTemplates.mobileView"
|
|
143
143
|
:context="itemData"
|
|
144
|
+
:blade-context="bladeContext"
|
|
144
145
|
></component>
|
|
145
146
|
</template>
|
|
146
147
|
</VcTable>
|
|
@@ -215,7 +216,7 @@ const title = computed(() => t(settings.value?.titleTemplate as string));
|
|
|
215
216
|
const allSelected = ref(false);
|
|
216
217
|
const searchValue = ref();
|
|
217
218
|
const selectedItemId = shallowRef();
|
|
218
|
-
const sort = shallowRef(
|
|
219
|
+
const sort = shallowRef();
|
|
219
220
|
const selectedIds = shallowRef<string[]>([]);
|
|
220
221
|
const itemsProxy = ref<Record<string, any>[]>();
|
|
221
222
|
|
|
@@ -288,6 +289,8 @@ if (props.isWidgetView) {
|
|
|
288
289
|
query.value.take = 5;
|
|
289
290
|
}
|
|
290
291
|
|
|
292
|
+
sort.value = query.value.sort ?? "createdDate:DESC";
|
|
293
|
+
|
|
291
294
|
const unreffedScope = reactiveComputed(() => toValue(scope) ?? {});
|
|
292
295
|
|
|
293
296
|
const { tableTemplates } = useTableTemplates(tableData);
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
VcButton,
|
|
3
|
+
VcCard,
|
|
3
4
|
VcField,
|
|
4
5
|
VcGallery,
|
|
5
6
|
VcIcon,
|
|
@@ -768,6 +769,11 @@ export interface CardSchema extends RequiredBy<Pick<SchemaBase, "id" | "label" |
|
|
|
768
769
|
* @default false
|
|
769
770
|
*/
|
|
770
771
|
removePadding?: boolean;
|
|
772
|
+
/**
|
|
773
|
+
* Card variant.
|
|
774
|
+
* @type {default | success | danger}
|
|
775
|
+
*/
|
|
776
|
+
variant?: ComponentProps<typeof VcCard>["variant"];
|
|
771
777
|
}
|
|
772
778
|
|
|
773
779
|
export interface WidgetsSchema extends Pick<SchemaBase, "id" | "horizontalSeparator"> {
|
|
@@ -883,22 +889,6 @@ export interface SwitchSchema extends Omit<SchemaBase, "placeholder" | "multilan
|
|
|
883
889
|
|
|
884
890
|
export type TableSchema = Omit<ListContentSchema, "filter"> &
|
|
885
891
|
Pick<SchemaBase, "id" | "property" | "visibility"> & {
|
|
886
|
-
/**
|
|
887
|
-
* Shows button to remove table row.
|
|
888
|
-
* Used when table is in editing mode.
|
|
889
|
-
*/
|
|
890
|
-
removeRowButton?: {
|
|
891
|
-
/**
|
|
892
|
-
* Determines whether the button should be shown or hidden.
|
|
893
|
-
*/
|
|
894
|
-
show: boolean;
|
|
895
|
-
/**
|
|
896
|
-
* Method to be called when the button is clicked.
|
|
897
|
-
* @description Method should be defined in the blade `scope`.
|
|
898
|
-
* @type {string}
|
|
899
|
-
*/
|
|
900
|
-
method: string;
|
|
901
|
-
};
|
|
902
892
|
/**
|
|
903
893
|
* Configuration for the add new row button in the table.
|
|
904
894
|
* Used when table is in editing mode.
|
|
@@ -127,7 +127,7 @@ $variants: success, danger;
|
|
|
127
127
|
&__title {
|
|
128
128
|
@apply tw-uppercase tw-flex-grow
|
|
129
129
|
tw-text-[color:var(--card-header-color)]
|
|
130
|
-
tw-text-base tw-font-bold
|
|
130
|
+
tw-text-base tw-font-bold;
|
|
131
131
|
}
|
|
132
132
|
|
|
133
133
|
&__icon {
|
|
@@ -139,7 +139,7 @@ $variants: success, danger;
|
|
|
139
139
|
}
|
|
140
140
|
|
|
141
141
|
&__body {
|
|
142
|
-
@apply tw-flex-grow tw-box-border;
|
|
142
|
+
@apply tw-flex-grow tw-box-border tw-flex-col;
|
|
143
143
|
}
|
|
144
144
|
|
|
145
145
|
@each $variant in $variants {
|