@vc-shell/framework 1.0.228 → 1.0.229
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 +9 -0
- package/core/types/index.ts +1 -0
- package/dist/core/types/index.d.ts +1 -0
- package/dist/core/types/index.d.ts.map +1 -1
- package/dist/framework.js +6148 -6148
- package/dist/shared/modules/dynamic/components/SchemaRender.d.ts +15 -12
- package/dist/shared/modules/dynamic/components/SchemaRender.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/components/fields/Button.d.ts +1 -0
- package/dist/shared/modules/dynamic/components/fields/Button.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/components/fields/Card.d.ts +1 -0
- package/dist/shared/modules/dynamic/components/fields/Card.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/components/fields/Checkbox.d.ts +1 -0
- package/dist/shared/modules/dynamic/components/fields/Checkbox.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/components/fields/ContentField.d.ts +1 -0
- package/dist/shared/modules/dynamic/components/fields/ContentField.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/components/fields/CustomComponent.d.ts +1 -0
- package/dist/shared/modules/dynamic/components/fields/CustomComponent.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/components/fields/DynamicProperty.d.ts +1 -0
- package/dist/shared/modules/dynamic/components/fields/DynamicProperty.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/components/fields/EditorField.d.ts +1 -0
- package/dist/shared/modules/dynamic/components/fields/EditorField.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/components/fields/Fieldset.d.ts +1 -0
- package/dist/shared/modules/dynamic/components/fields/Fieldset.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/components/fields/GalleryField.d.ts +1 -0
- package/dist/shared/modules/dynamic/components/fields/GalleryField.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/components/fields/ImageField.d.ts +1 -0
- package/dist/shared/modules/dynamic/components/fields/ImageField.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/components/fields/InputCurrency.d.ts +1 -0
- package/dist/shared/modules/dynamic/components/fields/InputCurrency.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/components/fields/InputField.d.ts +1 -0
- package/dist/shared/modules/dynamic/components/fields/InputField.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/components/fields/MultivalueField.d.ts +1 -0
- package/dist/shared/modules/dynamic/components/fields/MultivalueField.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/components/fields/RadioButtonGroup.d.ts +1 -0
- package/dist/shared/modules/dynamic/components/fields/RadioButtonGroup.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/components/fields/RatingField.d.ts +1 -0
- package/dist/shared/modules/dynamic/components/fields/RatingField.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/components/fields/SelectField.d.ts +1 -0
- package/dist/shared/modules/dynamic/components/fields/SelectField.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/components/fields/StatusField.d.ts +1 -0
- package/dist/shared/modules/dynamic/components/fields/StatusField.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/components/fields/SwitchField.d.ts +1 -0
- package/dist/shared/modules/dynamic/components/fields/SwitchField.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/components/fields/Table.d.ts +1 -0
- package/dist/shared/modules/dynamic/components/fields/Table.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/components/fields/TextareaField.d.ts +1 -0
- package/dist/shared/modules/dynamic/components/fields/TextareaField.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/components/fields/VideoField.d.ts +1 -0
- package/dist/shared/modules/dynamic/components/fields/VideoField.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/components/fields/props.d.ts +1 -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 +3 -0
- 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 +3 -0
- 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 +3 -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 +3 -0
- 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 +3 -0
- 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 +3 -0
- 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 +3 -0
- 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 +3 -0
- 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 +3 -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 +3 -0
- 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 +3 -0
- 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 +3 -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 +3 -0
- 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 +3 -0
- 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 +3 -0
- 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 +3 -0
- 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 +3 -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 +3 -0
- package/dist/shared/modules/dynamic/components/fields/storybook/pages/DynamicRender.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/helpers/nodeBuilder.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/pages/dynamic-blade-form.vue.d.ts +1 -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 +1 -0
- package/dist/shared/modules/dynamic/pages/dynamic-blade-list.vue.d.ts.map +1 -1
- package/dist/shared/modules/dynamic/types/index.d.ts +22 -12
- package/dist/shared/modules/dynamic/types/index.d.ts.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -4
- package/shared/modules/dynamic/components/SchemaRender.ts +8 -0
- package/shared/modules/dynamic/helpers/nodeBuilder.ts +11 -0
- package/shared/modules/dynamic/types/index.ts +27 -12
- package/ui/components/organisms/vc-blade/_internal/vc-blade-toolbar/vc-blade-toolbar.vue +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vc-shell/framework",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.229",
|
|
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.229",
|
|
64
|
+
"@vc-shell/config-generator": "^1.0.229",
|
|
65
|
+
"@vc-shell/ts-config": "^1.0.229",
|
|
66
66
|
"@vitejs/plugin-vue": "^5.0.3",
|
|
67
67
|
"sass": "^1.69.6",
|
|
68
68
|
"shx": "^0.3.4",
|
|
@@ -19,6 +19,7 @@ import { visibilityHandler } from "../helpers/visibilityHandler";
|
|
|
19
19
|
import { toValue } from "@vueuse/core";
|
|
20
20
|
import { safeIn } from "../helpers/safeIn";
|
|
21
21
|
import { unrefNested } from "../helpers/unrefNested";
|
|
22
|
+
import { usePermissions } from "../../../../core/composables";
|
|
22
23
|
|
|
23
24
|
const schemeRenderProps = {
|
|
24
25
|
context: {
|
|
@@ -48,6 +49,7 @@ export default defineComponent({
|
|
|
48
49
|
setup(props: ExtractPropTypes<typeof schemeRenderProps>, ctx) {
|
|
49
50
|
const { currentLocale } = toRefs(props);
|
|
50
51
|
const internalFormData = reactive({});
|
|
52
|
+
const { hasAccess } = usePermissions();
|
|
51
53
|
|
|
52
54
|
watch(
|
|
53
55
|
() => props.modelValue,
|
|
@@ -70,6 +72,12 @@ export default defineComponent({
|
|
|
70
72
|
"div",
|
|
71
73
|
{ class: "tw-flex tw-flex-col tw-gap-4" },
|
|
72
74
|
props.uiSchema.reduce((arr, field): VNode[] => {
|
|
75
|
+
console.log(field.id, field.permissions, hasAccess(field.permissions));
|
|
76
|
+
|
|
77
|
+
if (safeIn("permissions", field) && !hasAccess(field.permissions)) {
|
|
78
|
+
return arr;
|
|
79
|
+
}
|
|
80
|
+
|
|
73
81
|
if (
|
|
74
82
|
safeIn("visibility", field) &&
|
|
75
83
|
field.visibility?.method &&
|
|
@@ -12,6 +12,9 @@ import { i18n } from "./../../../../core/plugins/i18n";
|
|
|
12
12
|
import { visibilityHandler } from "./visibilityHandler";
|
|
13
13
|
import { toRefs } from "@vueuse/core";
|
|
14
14
|
import { unrefNested } from "./unrefNested";
|
|
15
|
+
import { usePermissions } from "../../../../core/composables";
|
|
16
|
+
|
|
17
|
+
const { hasAccess } = usePermissions();
|
|
15
18
|
|
|
16
19
|
function disabledHandler(
|
|
17
20
|
disabled: { method?: string } | boolean,
|
|
@@ -165,6 +168,10 @@ function nodeBuilder<
|
|
|
165
168
|
if (toValue(model) && Array.isArray(toValue(model))) {
|
|
166
169
|
return toValue(model).map((modelItem: ToRefs<{ [x: string]: unknown; id: string }>) => {
|
|
167
170
|
return controlSchema.fields.reduce((arr, fieldItem) => {
|
|
171
|
+
if (safeIn("permissions", fieldItem) && !hasAccess(fieldItem.permissions)) {
|
|
172
|
+
return arr;
|
|
173
|
+
}
|
|
174
|
+
|
|
168
175
|
if (
|
|
169
176
|
safeIn("visibility", fieldItem) &&
|
|
170
177
|
fieldItem.visibility?.method &&
|
|
@@ -190,6 +197,10 @@ function nodeBuilder<
|
|
|
190
197
|
|
|
191
198
|
return [
|
|
192
199
|
controlSchema.fields.reduce((arr, field) => {
|
|
200
|
+
if (safeIn("permissions", field) && !hasAccess(field.permissions)) {
|
|
201
|
+
return arr;
|
|
202
|
+
}
|
|
203
|
+
|
|
193
204
|
if (
|
|
194
205
|
safeIn("visibility", field) &&
|
|
195
206
|
field.visibility?.method &&
|
|
@@ -65,6 +65,11 @@ export type ToolbarSchema = {
|
|
|
65
65
|
title?: string;
|
|
66
66
|
icon?: string;
|
|
67
67
|
method: string;
|
|
68
|
+
/**
|
|
69
|
+
* Permissions for the toolbar button. If the user does not have the required permissions, the toolbar button will not be displayed.
|
|
70
|
+
* @type {string | string[]}
|
|
71
|
+
*/
|
|
72
|
+
permissions?: string | string[];
|
|
68
73
|
};
|
|
69
74
|
|
|
70
75
|
export interface SettingsBase {
|
|
@@ -277,6 +282,11 @@ export interface SchemaBase {
|
|
|
277
282
|
* Adds horizontal separator after component.
|
|
278
283
|
*/
|
|
279
284
|
horizontalSeparator?: boolean;
|
|
285
|
+
/**
|
|
286
|
+
* Permissions for the component. If the user does not have the required permissions, the component will not be displayed.
|
|
287
|
+
* @type {string | string[]}
|
|
288
|
+
*/
|
|
289
|
+
permissions?: string | string[];
|
|
280
290
|
}
|
|
281
291
|
|
|
282
292
|
/**
|
|
@@ -477,7 +487,8 @@ export interface InputSchema extends SchemaBase {
|
|
|
477
487
|
* Video schema interface.
|
|
478
488
|
* @interface
|
|
479
489
|
*/
|
|
480
|
-
export interface VideoSchema
|
|
490
|
+
export interface VideoSchema
|
|
491
|
+
extends Pick<SchemaBase, "id" | "property" | "label" | "visibility" | "tooltip" | "permissions"> {
|
|
481
492
|
/**
|
|
482
493
|
* Component type for video.
|
|
483
494
|
* @type {"vc-video"}
|
|
@@ -490,7 +501,10 @@ export interface VideoSchema extends Pick<SchemaBase, "id" | "property" | "label
|
|
|
490
501
|
* @interface
|
|
491
502
|
*/
|
|
492
503
|
export interface FieldSchema
|
|
493
|
-
extends Pick<
|
|
504
|
+
extends Pick<
|
|
505
|
+
SchemaBase,
|
|
506
|
+
"id" | "property" | "label" | "visibility" | "tooltip" | "horizontalSeparator" | "permissions"
|
|
507
|
+
> {
|
|
494
508
|
/**
|
|
495
509
|
* Component type for field.
|
|
496
510
|
* @type {"vc-field"}
|
|
@@ -525,7 +539,7 @@ export interface FieldSchema
|
|
|
525
539
|
* Image schema interface.
|
|
526
540
|
* @interface
|
|
527
541
|
*/
|
|
528
|
-
export interface ImageSchema extends Pick<SchemaBase, "id" | "property" | "visibility"> {
|
|
542
|
+
export interface ImageSchema extends Pick<SchemaBase, "id" | "property" | "visibility" | "permissions"> {
|
|
529
543
|
/**
|
|
530
544
|
* Component type for image.
|
|
531
545
|
* @type {"vc-image"}
|
|
@@ -562,7 +576,7 @@ export interface ImageSchema extends Pick<SchemaBase, "id" | "property" | "visib
|
|
|
562
576
|
* Status schema interface.
|
|
563
577
|
* @interface
|
|
564
578
|
*/
|
|
565
|
-
export interface StatusSchema extends Pick<SchemaBase, "id" | "visibility" | "horizontalSeparator"> {
|
|
579
|
+
export interface StatusSchema extends Pick<SchemaBase, "id" | "visibility" | "horizontalSeparator" | "permissions"> {
|
|
566
580
|
/**
|
|
567
581
|
* Component type for status.
|
|
568
582
|
* @type {"vc-status"}
|
|
@@ -686,7 +700,7 @@ export interface EditorSchema extends Omit<SchemaBase, "onBlur"> {
|
|
|
686
700
|
* @interface
|
|
687
701
|
*/
|
|
688
702
|
export interface DynamicPropertiesSchema
|
|
689
|
-
extends Pick<SchemaBase, "id" | "disabled" | "property" | "visibility" | "horizontalSeparator"> {
|
|
703
|
+
extends Pick<SchemaBase, "id" | "disabled" | "property" | "visibility" | "horizontalSeparator" | "permissions"> {
|
|
690
704
|
/**
|
|
691
705
|
* The component type for dynamic properties.
|
|
692
706
|
* @type {"vc-dynamic-properties"}
|
|
@@ -745,7 +759,8 @@ export interface GallerySchema
|
|
|
745
759
|
* Interface for a card schema.
|
|
746
760
|
* @interface
|
|
747
761
|
*/
|
|
748
|
-
export interface CardSchema
|
|
762
|
+
export interface CardSchema
|
|
763
|
+
extends RequiredBy<Pick<SchemaBase, "id" | "label" | "visibility" | "permissions">, "label"> {
|
|
749
764
|
/**
|
|
750
765
|
* Component type for the card.
|
|
751
766
|
* @type {"vc-card"}
|
|
@@ -784,7 +799,7 @@ export interface CardSchema extends RequiredBy<Pick<SchemaBase, "id" | "label" |
|
|
|
784
799
|
variant?: ComponentProps<typeof VcCard>["variant"];
|
|
785
800
|
}
|
|
786
801
|
|
|
787
|
-
export interface WidgetsSchema extends Pick<SchemaBase, "id" | "horizontalSeparator"> {
|
|
802
|
+
export interface WidgetsSchema extends Pick<SchemaBase, "id" | "horizontalSeparator" | "permissions"> {
|
|
788
803
|
component: "vc-widgets";
|
|
789
804
|
children: string[];
|
|
790
805
|
}
|
|
@@ -842,7 +857,7 @@ export interface RadioButtonSchema extends Omit<SchemaBase, "multilanguage" | "p
|
|
|
842
857
|
* Fieldset schema interface.
|
|
843
858
|
* @interface
|
|
844
859
|
*/
|
|
845
|
-
export interface FieldsetSchema extends Pick<SchemaBase, "id" | "visibility" | "horizontalSeparator"> {
|
|
860
|
+
export interface FieldsetSchema extends Pick<SchemaBase, "id" | "visibility" | "horizontalSeparator" | "permissions"> {
|
|
846
861
|
/**
|
|
847
862
|
* Component type for the fieldset.
|
|
848
863
|
* @type {"vc-fieldset"}
|
|
@@ -896,7 +911,7 @@ export interface SwitchSchema extends Omit<SchemaBase, "placeholder" | "multilan
|
|
|
896
911
|
}
|
|
897
912
|
|
|
898
913
|
export type TableSchema = Omit<ListContentSchema, "filter"> &
|
|
899
|
-
Pick<SchemaBase, "id" | "property" | "visibility"> & {
|
|
914
|
+
Pick<SchemaBase, "id" | "property" | "visibility" | "permissions"> & {
|
|
900
915
|
/**
|
|
901
916
|
* Configuration for the add new row button in the table.
|
|
902
917
|
* Used when table is in editing mode.
|
|
@@ -923,7 +938,7 @@ export type TableSchema = Omit<ListContentSchema, "filter"> &
|
|
|
923
938
|
* Button schema interface.
|
|
924
939
|
* @interface
|
|
925
940
|
*/
|
|
926
|
-
export interface ButtonSchema extends Pick<SchemaBase, "id" | "disabled" | "visibility"> {
|
|
941
|
+
export interface ButtonSchema extends Pick<SchemaBase, "id" | "disabled" | "visibility" | "permissions"> {
|
|
927
942
|
/**
|
|
928
943
|
* Component type.
|
|
929
944
|
* @type {"vc-button"}
|
|
@@ -981,7 +996,7 @@ export interface ButtonSchema extends Pick<SchemaBase, "id" | "disabled" | "visi
|
|
|
981
996
|
* Custom component schema interface.
|
|
982
997
|
* @interface
|
|
983
998
|
*/
|
|
984
|
-
export interface CustomComponentSchema extends Pick<SchemaBase, "id" | "visibility"> {
|
|
999
|
+
export interface CustomComponentSchema extends Pick<SchemaBase, "id" | "visibility" | "permissions"> {
|
|
985
1000
|
/**
|
|
986
1001
|
* Component type for custom component.
|
|
987
1002
|
* @type {vc-custom}
|
|
@@ -1000,7 +1015,7 @@ export interface CustomComponentSchema extends Pick<SchemaBase, "id" | "visibili
|
|
|
1000
1015
|
export interface RatingSchema
|
|
1001
1016
|
extends Pick<
|
|
1002
1017
|
SchemaBase,
|
|
1003
|
-
"id" | "visibility" | "label" | "property" | "tooltip" | "horizontalSeparator" | "placeholder"
|
|
1018
|
+
"id" | "visibility" | "label" | "property" | "tooltip" | "horizontalSeparator" | "placeholder" | "permissions"
|
|
1004
1019
|
> {
|
|
1005
1020
|
/**
|
|
1006
1021
|
* Component type for rating.
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
:key="item.id"
|
|
11
11
|
>
|
|
12
12
|
<VcBladeToolbarButton
|
|
13
|
-
v-if="item.isVisible === undefined || item.isVisible"
|
|
13
|
+
v-if="$hasAccess(item.permissions) && (item.isVisible === undefined || item.isVisible)"
|
|
14
14
|
:is-expanded="isExpanded"
|
|
15
15
|
:icon="item.icon"
|
|
16
16
|
:title="unref(item.title)"
|