@vc-shell/framework 1.0.197 → 1.0.198

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.
Files changed (59) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/core/composables/useBreadcrumbs/index.ts +15 -9
  3. package/core/plugins/modularity/index.ts +1 -1
  4. package/dist/core/composables/useBreadcrumbs/index.d.ts +1 -6
  5. package/dist/core/composables/useBreadcrumbs/index.d.ts.map +1 -1
  6. package/dist/framework.js +26216 -26025
  7. package/dist/index.css +1 -1
  8. package/dist/shared/components/blade-navigation/components/vc-blade-navigation/vc-blade-navigation.vue.d.ts.map +1 -1
  9. package/dist/shared/components/blade-navigation/components/vc-blade-view/vc-blade-view.d.ts.map +1 -1
  10. package/dist/shared/components/blade-navigation/composables/useBladeNavigation/index.d.ts +1 -2
  11. package/dist/shared/components/blade-navigation/composables/useBladeNavigation/index.d.ts.map +1 -1
  12. package/dist/shared/components/blade-navigation/types/index.d.ts +1 -1
  13. package/dist/shared/components/blade-navigation/types/index.d.ts.map +1 -1
  14. package/dist/shared/modules/dynamic/composables/index.d.ts +1 -0
  15. package/dist/shared/modules/dynamic/composables/index.d.ts.map +1 -1
  16. package/dist/shared/modules/dynamic/composables/useDynamicViewsUtils/index.d.ts +10 -0
  17. package/dist/shared/modules/dynamic/composables/useDynamicViewsUtils/index.d.ts.map +1 -0
  18. package/dist/shared/modules/dynamic/factories/types/index.d.ts +13 -1
  19. package/dist/shared/modules/dynamic/factories/types/index.d.ts.map +1 -1
  20. package/dist/shared/modules/dynamic/index.d.ts +2 -3
  21. package/dist/shared/modules/dynamic/index.d.ts.map +1 -1
  22. package/dist/shared/modules/dynamic/pages/dynamic-blade-form.vue.d.ts +1 -0
  23. package/dist/shared/modules/dynamic/pages/dynamic-blade-form.vue.d.ts.map +1 -1
  24. package/dist/shared/modules/dynamic/pages/dynamic-blade-list.vue.d.ts +2 -0
  25. package/dist/shared/modules/dynamic/pages/dynamic-blade-list.vue.d.ts.map +1 -1
  26. package/dist/tsconfig.tsbuildinfo +1 -1
  27. package/dist/ui/components/molecules/vc-breadcrumbs/_internal/vc-breadcrumbs-item/vc-breadcrumbs-item.vue.d.ts +1 -0
  28. package/dist/ui/components/molecules/vc-breadcrumbs/_internal/vc-breadcrumbs-item/vc-breadcrumbs-item.vue.d.ts.map +1 -1
  29. package/dist/ui/components/molecules/vc-breadcrumbs/index.d.ts +1 -13
  30. package/dist/ui/components/molecules/vc-breadcrumbs/index.d.ts.map +1 -1
  31. package/dist/ui/components/molecules/vc-breadcrumbs/vc-breadcrumbs.stories.d.ts +33 -0
  32. package/dist/ui/components/molecules/vc-breadcrumbs/vc-breadcrumbs.stories.d.ts.map +1 -1
  33. package/dist/ui/components/molecules/vc-breadcrumbs/vc-breadcrumbs.vue.d.ts +14 -0
  34. package/dist/ui/components/molecules/vc-breadcrumbs/vc-breadcrumbs.vue.d.ts.map +1 -1
  35. package/dist/ui/components/organisms/vc-app/_internal/vc-app-bar/vc-app-bar.vue.d.ts.map +1 -1
  36. package/dist/ui/components/organisms/vc-blade/_internal/vc-blade-header/vc-blade-header.vue.d.ts +1 -1
  37. package/dist/ui/components/organisms/vc-dynamic-property/vc-dynamic-property.vue.d.ts.map +1 -1
  38. package/dist/ui/types/index.d.ts +3 -2
  39. package/dist/ui/types/index.d.ts.map +1 -1
  40. package/package.json +4 -4
  41. package/shared/components/blade-navigation/components/vc-blade-navigation/vc-blade-navigation.vue +84 -38
  42. package/shared/components/blade-navigation/components/vc-blade-view/vc-blade-view.ts +11 -4
  43. package/shared/components/blade-navigation/composables/useBladeNavigation/index.ts +37 -54
  44. package/shared/components/blade-navigation/types/index.ts +1 -1
  45. package/shared/modules/assets-manager/components/assets-manager/assets-manager.vue +2 -2
  46. package/shared/modules/dynamic/components/fields/GalleryField.ts +1 -1
  47. package/shared/modules/dynamic/composables/index.ts +1 -0
  48. package/shared/modules/dynamic/composables/useDynamicViewsUtils/index.ts +46 -0
  49. package/shared/modules/dynamic/factories/types/index.ts +16 -1
  50. package/shared/modules/dynamic/index.ts +2 -3
  51. package/shared/modules/dynamic/pages/dynamic-blade-form.vue +1 -0
  52. package/shared/modules/dynamic/pages/dynamic-blade-list.vue +7 -1
  53. package/ui/components/molecules/vc-breadcrumbs/_internal/vc-breadcrumbs-item/vc-breadcrumbs-item.vue +3 -0
  54. package/ui/components/molecules/vc-breadcrumbs/index.ts +1 -3
  55. package/ui/components/molecules/vc-breadcrumbs/vc-breadcrumbs.vue +123 -5
  56. package/ui/components/organisms/vc-app/_internal/vc-app-bar/vc-app-bar.vue +10 -14
  57. package/ui/components/organisms/vc-dynamic-property/vc-dynamic-property.vue +5 -1
  58. package/ui/components/organisms/vc-table/_internal/vc-table-cell/vc-table-cell.vue +1 -1
  59. package/ui/types/index.ts +3 -2
@@ -1,6 +1,7 @@
1
1
  import { Breadcrumbs } from "../../../../../types";
2
2
  export interface Props extends Breadcrumbs {
3
3
  current: boolean;
4
+ variant?: "default" | "light";
4
5
  }
5
6
  export interface Emits {
6
7
  (event: "click"): void;
@@ -1 +1 @@
1
- {"version":3,"file":"vc-breadcrumbs-item.vue.d.ts","sourceRoot":"","sources":["../../../../../../../ui/components/molecules/vc-breadcrumbs/_internal/vc-breadcrumbs-item/vc-breadcrumbs-item.vue.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGnD,MAAM,WAAW,KAAM,SAAQ,WAAW;IACxC,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,KAAK;IACpB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;CACxB;;;;;;AAgGD,wBAOG;AACH,KAAK,sBAAsB,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC;AACjE,KAAK,6BAA6B,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG;QAAE,IAAI,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;KAAE,GAAG;QAAE,IAAI,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAAC,QAAQ,EAAE,IAAI,CAAA;KAAE;CAAE,CAAC"}
1
+ {"version":3,"file":"vc-breadcrumbs-item.vue.d.ts","sourceRoot":"","sources":["../../../../../../../ui/components/molecules/vc-breadcrumbs/_internal/vc-breadcrumbs-item/vc-breadcrumbs-item.vue.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGnD,MAAM,WAAW,KAAM,SAAQ,WAAW;IACxC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,KAAK;IACpB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;CACxB;;;;;;AAiGD,wBAOG;AACH,KAAK,sBAAsB,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC;AACjE,KAAK,6BAA6B,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG;QAAE,IAAI,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;KAAE,GAAG;QAAE,IAAI,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAAC,QAAQ,EAAE,IAAI,CAAA;KAAE;CAAE,CAAC"}
@@ -1,14 +1,2 @@
1
- export declare const VcBreadcrumbs: import("vue").DefineComponent<{
2
- items: {
3
- type: import("vue").PropType<import("../../../types").Breadcrumbs[]>;
4
- default: () => never[];
5
- };
6
- }, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
7
- items: {
8
- type: import("vue").PropType<import("../../../types").Breadcrumbs[]>;
9
- default: () => never[];
10
- };
11
- }>>, {
12
- items: import("../../../types").Breadcrumbs[];
13
- }, {}>;
1
+ export { default as VcBreadcrumbs } from "./vc-breadcrumbs.vue";
14
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../ui/components/molecules/vc-breadcrumbs/index.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,aAAa;;;;;;;;;;;;MAAsC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../ui/components/molecules/vc-breadcrumbs/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,sBAAsB,CAAC"}
@@ -3,17 +3,50 @@ import { VcBreadcrumbs } from "./";
3
3
  declare const _default: {
4
4
  title: string;
5
5
  component: import("vue").DefineComponent<{
6
+ variant: {
7
+ type: import("vue").PropType<"default" | "light">;
8
+ default: string;
9
+ };
6
10
  items: {
7
11
  type: import("vue").PropType<import("../../../types").Breadcrumbs[]>;
8
12
  default: () => never[];
9
13
  };
14
+ withArrow: {
15
+ type: import("vue").PropType<boolean>;
16
+ };
17
+ arrowIcon: {
18
+ type: import("vue").PropType<string>;
19
+ default: string;
20
+ };
21
+ arrowSize: {
22
+ type: import("vue").PropType<"s" | "xs" | "m" | "l" | "xl" | "xxl" | "xxxl">;
23
+ default: string;
24
+ };
10
25
  }, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
26
+ variant: {
27
+ type: import("vue").PropType<"default" | "light">;
28
+ default: string;
29
+ };
11
30
  items: {
12
31
  type: import("vue").PropType<import("../../../types").Breadcrumbs[]>;
13
32
  default: () => never[];
14
33
  };
34
+ withArrow: {
35
+ type: import("vue").PropType<boolean>;
36
+ };
37
+ arrowIcon: {
38
+ type: import("vue").PropType<string>;
39
+ default: string;
40
+ };
41
+ arrowSize: {
42
+ type: import("vue").PropType<"s" | "xs" | "m" | "l" | "xl" | "xxl" | "xxxl">;
43
+ default: string;
44
+ };
15
45
  }>>, {
46
+ variant: "default" | "light";
16
47
  items: import("../../../types").Breadcrumbs[];
48
+ arrowIcon: string;
49
+ arrowSize: "s" | "xs" | "m" | "l" | "xl" | "xxl" | "xxxl";
17
50
  }, {}>;
18
51
  args: {
19
52
  items: ({
@@ -1 +1 @@
1
- {"version":3,"file":"vc-breadcrumbs.stories.d.ts","sourceRoot":"","sources":["../../../../../ui/components/molecules/vc-breadcrumbs/vc-breadcrumbs.stories.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEnC,wBA+BuC;AAEvC,eAAO,MAAM,OAAO,EAAE,OAAO,CAAC,OAAO,aAAa,CAMhD,CAAC"}
1
+ {"version":3,"file":"vc-breadcrumbs.stories.d.ts","sourceRoot":"","sources":["../../../../../ui/components/molecules/vc-breadcrumbs/vc-breadcrumbs.stories.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEnC,wBA+BuC;AAEvC,eAAO,MAAM,OAAO,EAAE,OAAO,CAAC,OAAO,aAAa,CAMhD,CAAC"}
@@ -1,13 +1,27 @@
1
1
  import { Breadcrumbs } from "../../../types";
2
+ import { VcIcon } from "./../../atoms/vc-icon";
2
3
  export interface Props {
3
4
  items?: Breadcrumbs[];
5
+ variant?: "default" | "light";
6
+ withArrow?: boolean;
7
+ arrowIcon?: string;
8
+ arrowSize?: InstanceType<typeof VcIcon>["$props"]["size"];
4
9
  }
5
10
  declare const _default: import("vue").DefineComponent<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<Props>, {
6
11
  items: () => never[];
12
+ variant: string;
13
+ arrowIcon: string;
14
+ arrowSize: string;
7
15
  }>, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<Props>, {
8
16
  items: () => never[];
17
+ variant: string;
18
+ arrowIcon: string;
19
+ arrowSize: string;
9
20
  }>>>, {
21
+ variant: "default" | "light";
10
22
  items: Breadcrumbs[];
23
+ arrowIcon: string;
24
+ arrowSize: "s" | "xs" | "m" | "l" | "xl" | "xxl" | "xxxl";
11
25
  }, {}>;
12
26
  export default _default;
13
27
  type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
@@ -1 +1 @@
1
- {"version":3,"file":"vc-breadcrumbs.vue.d.ts","sourceRoot":"","sources":["../../../../../ui/components/molecules/vc-breadcrumbs/vc-breadcrumbs.vue.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C,MAAM,WAAW,KAAK;IACpB,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC;CACvB;;;;;;;;AAwED,wBAMG;AACH,KAAK,sBAAsB,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC;AACjE,KAAK,6BAA6B,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG;QAAE,IAAI,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;KAAE,GAAG;QAAE,IAAI,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAAC,QAAQ,EAAE,IAAI,CAAA;KAAE;CAAE,CAAC;AAC9M,KAAK,kBAAkB,CAAC,CAAC,EAAE,CAAC,IAAI;KAE1B,CAAC,IAAI,MAAM,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,MAAM,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;QACxE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;KACb,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACT,CAAC;AACN,KAAK,cAAc,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAG,GAAG,EAAE,CAAC"}
1
+ {"version":3,"file":"vc-breadcrumbs.vue.d.ts","sourceRoot":"","sources":["../../../../../ui/components/molecules/vc-breadcrumbs/vc-breadcrumbs.vue.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAK/C,MAAM,WAAW,KAAK;IACpB,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC;IACtB,OAAO,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,YAAY,CAAC,OAAO,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;CAC3D;;;;;;;;;;;;;;;;;AA8ND,wBAMG;AACH,KAAK,sBAAsB,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC;AACjE,KAAK,6BAA6B,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG;QAAE,IAAI,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;KAAE,GAAG;QAAE,IAAI,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAAC,QAAQ,EAAE,IAAI,CAAA;KAAE;CAAE,CAAC;AAC9M,KAAK,kBAAkB,CAAC,CAAC,EAAE,CAAC,IAAI;KAE1B,CAAC,IAAI,MAAM,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,MAAM,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;QACxE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;KACb,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACT,CAAC;AACN,KAAK,cAAc,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAG,GAAG,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"vc-app-bar.vue.d.ts","sourceRoot":"","sources":["../../../../../../../ui/components/organisms/vc-app/_internal/vc-app-bar/vc-app-bar.vue.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAI/D,MAAM,WAAW,KAAK;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,KAAK;IACpB,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;IAC5B,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAChC,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAClC,CAAC,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,aAAa,GAAG,IAAI,CAAC;CACpD;;;;;;;;;;;;;;;AA6PD,wBAAwG;AACxG,KAAK,sBAAsB,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC;AACjE,KAAK,6BAA6B,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG;QAAE,IAAI,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;KAAE,GAAG;QAAE,IAAI,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAAC,QAAQ,EAAE,IAAI,CAAA;KAAE;CAAE,CAAC;AAC9M,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAAE,QAAO;QAClD,MAAM,EAAE,CAAC,CAAC;KACT,CAAA;CAAE,CAAC"}
1
+ {"version":3,"file":"vc-app-bar.vue.d.ts","sourceRoot":"","sources":["../../../../../../../ui/components/organisms/vc-app/_internal/vc-app-bar/vc-app-bar.vue.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAK/D,MAAM,WAAW,KAAK;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,KAAK;IACpB,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;IAC5B,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAChC,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAClC,CAAC,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,aAAa,GAAG,IAAI,CAAC;CACpD;;;;;;;;;;;;;;;AAwPD,wBAAwG;AACxG,KAAK,sBAAsB,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC;AACjE,KAAK,6BAA6B,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG;QAAE,IAAI,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;KAAE,GAAG;QAAE,IAAI,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAAC,QAAQ,EAAE,IAAI,CAAA;KAAE;CAAE,CAAC;AAC9M,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAAE,QAAO;QAClD,MAAM,EAAE,CAAC,CAAC;KACT,CAAA;CAAE,CAAC"}
@@ -7,8 +7,8 @@ export interface Props {
7
7
  icon?: string;
8
8
  }
9
9
  declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<__VLS_TypePropsToRuntimeProps<Props>, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
10
- close: (...args: any[]) => void;
11
10
  expand: (...args: any[]) => void;
11
+ close: (...args: any[]) => void;
12
12
  collapse: (...args: any[]) => void;
13
13
  }, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_TypePropsToRuntimeProps<Props>>> & {
14
14
  onClose?: ((...args: any[]) => any) | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"vc-dynamic-property.vue.d.ts","sourceRoot":"","sources":["../../../../../ui/components/organisms/vc-dynamic-property/vc-dynamic-property.vue.ts"],"names":[],"mappings":";;;;;UA6ZU,MAAM;gBARA,GAAG;cAEL,OAAO;;;;;;;;;;;;wBA/V6B,GAAG;;;;;2CA8VV,MAAM,WAAW,MAAM,KAAK,QAAQ,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,GAAG,SAAS;eAK1F,MAAM;;;;;;;;;WAuBd,GAAG;;;;wBA1XwC,GAAG;;;;yCAyXrC,OAAO,KAAK,EAAE,gBAAgB,CAAC,EAAE,CAAC,KAAG,IAAI;;;cApB/C,MAAM;oBARA,GAAG;kBAEL,OAAO;;;;;;;;;;;;4BA/V6B,GAAG;;;;;+CA8VV,MAAM,WAAW,MAAM,KAAK,QAAQ,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,GAAG,SAAS;mBAK1F,MAAM;;;;;;;;;oBAsBL,OAAO,KAAK,EAAE,gBAAgB,CAAC,EAAE,CAAC,GAAG,IAAI;WAClD,GAAG;;;;wBA1XwC,GAAG;;;;;;;;;;kBAqW3C,MAAM;wBARA,GAAG;sBAEL,OAAO;;;;;;;;;;;;gCA/V6B,GAAG;;;;;mDA8VV,MAAM,WAAW,MAAM,KAAK,QAAQ,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,GAAG,SAAS;uBAK1F,MAAM;;;;;;;;;wBAsBL,OAAO,KAAK,EAAE,gBAAgB,CAAC,EAAE,CAAC,GAAG,IAAI;eAClD,GAAG;;;;4BA1XwC,GAAG;;;;;;AAhDrD,wBA+a2E;AAQ3E,KAAK,cAAc,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAG,GAAG,EAAE,CAAC"}
1
+ {"version":3,"file":"vc-dynamic-property.vue.d.ts","sourceRoot":"","sources":["../../../../../ui/components/organisms/vc-dynamic-property/vc-dynamic-property.vue.ts"],"names":[],"mappings":";;;;;UAiaU,MAAM;gBARA,GAAG;cAEL,OAAO;;;;;;;;;;;;wBAnW6B,GAAG;;;;;2CAkWV,MAAM,WAAW,MAAM,KAAK,QAAQ,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,GAAG,SAAS;eAK1F,MAAM;;;;;;;;;WAuBd,GAAG;;;;wBA9XwC,GAAG;;;;yCA6XrC,OAAO,KAAK,EAAE,gBAAgB,CAAC,EAAE,CAAC,KAAG,IAAI;;;cApB/C,MAAM;oBARA,GAAG;kBAEL,OAAO;;;;;;;;;;;;4BAnW6B,GAAG;;;;;+CAkWV,MAAM,WAAW,MAAM,KAAK,QAAQ,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,GAAG,SAAS;mBAK1F,MAAM;;;;;;;;;oBAsBL,OAAO,KAAK,EAAE,gBAAgB,CAAC,EAAE,CAAC,GAAG,IAAI;WAClD,GAAG;;;;wBA9XwC,GAAG;;;;;;;;;;kBAyW3C,MAAM;wBARA,GAAG;sBAEL,OAAO;;;;;;;;;;;;gCAnW6B,GAAG;;;;;mDAkWV,MAAM,WAAW,MAAM,KAAK,QAAQ,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,GAAG,SAAS;uBAK1F,MAAM;;;;;;;;;wBAsBL,OAAO,KAAK,EAAE,gBAAgB,CAAC,EAAE,CAAC,GAAG,IAAI;eAClD,GAAG;;;;4BA9XwC,GAAG;;;;;;AAhDrD,wBAmb2E;AAQ3E,KAAK,cAAc,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAG,GAAG,EAAE,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { MaybeRef } from "vue";
1
2
  import * as components from "./../components";
2
3
  type TGlobalComponents<T> = {
3
4
  [x in keyof T]: T[x];
@@ -8,8 +9,8 @@ declare module "vue" {
8
9
  }
9
10
  export interface Breadcrumbs {
10
11
  icon?: string;
11
- title: string;
12
- clickHandler?: (id: string) => void | Promise<void>;
12
+ title: MaybeRef<string | undefined>;
13
+ clickHandler?: (id: string) => void | boolean | Promise<void | boolean>;
13
14
  id: string;
14
15
  }
15
16
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../ui/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAC;AAI9C,KAAK,iBAAiB,CAAC,CAAC,IAAI;KACzB,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACrB,CAAC;AACF,OAAO,QAAQ,KAAK,CAAC;IAEnB,UAAiB,gBAAiB,SAAQ,iBAAiB,CAAC,OAAO,UAAU,CAAC;KAAG;CAClF;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,EAAE,EAAE,MAAM,CAAC;CACZ"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../ui/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAC/B,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAC;AAI9C,KAAK,iBAAiB,CAAC,CAAC,IAAI;KACzB,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACrB,CAAC;AACF,OAAO,QAAQ,KAAK,CAAC;IAEnB,UAAiB,gBAAiB,SAAQ,iBAAiB,CAAC,OAAO,UAAU,CAAC;KAAG;CAClF;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,QAAQ,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACpC,YAAY,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,GAAG,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC;IACxE,EAAE,EAAE,MAAM,CAAC;CACZ"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vc-shell/framework",
3
- "version": "1.0.197",
3
+ "version": "1.0.198",
4
4
  "type": "module",
5
5
  "main": "./dist/framework.js",
6
6
  "types": "./dist/index.d.ts",
@@ -59,9 +59,9 @@
59
59
  "devDependencies": {
60
60
  "@types/dompurify": "^3.0.5",
61
61
  "@types/quill": "^2.0.14",
62
- "@vc-shell/api-client-generator": "^1.0.197",
63
- "@vc-shell/config-generator": "^1.0.197",
64
- "@vc-shell/ts-config": "^1.0.197",
62
+ "@vc-shell/api-client-generator": "^1.0.198",
63
+ "@vc-shell/config-generator": "^1.0.198",
64
+ "@vc-shell/ts-config": "^1.0.198",
65
65
  "@vitejs/plugin-vue": "^5.0.3",
66
66
  "sass": "^1.69.6",
67
67
  "shx": "^0.3.4",
@@ -1,17 +1,34 @@
1
1
  <template>
2
- <div class="tw-w-full tw-overflow-hidden tw-flex tw-grow tw-basis-0 tw-relative">
2
+ <div class="tw-w-full tw-flex tw-flex-col tw-grow tw-basis-0">
3
+ <VcBreadcrumbs
4
+ v-if="blades && blades.length > 2"
5
+ :items="breadcrumbs"
6
+ class="tw-bg-white tw-p-2 tw-shadow-[2px_2px_8px_rgba(54,84,117,0.14)] tw-rounded-[var(--blade-border-radius)]"
7
+ :class="[
8
+ {
9
+ 'tw-mt-4 tw-mx-2': !$isMobile.value,
10
+ 'tw-p-4': $isMobile.value,
11
+ },
12
+ ]"
13
+ variant="light"
14
+ with-arrow
15
+ />
3
16
  <render></render>
4
17
  </div>
5
18
  </template>
6
19
 
7
20
  <script lang="ts" setup>
8
- import { Ref, computed, inject, withDirectives, h, vShow } from "vue";
21
+ import { Ref, computed, inject, withDirectives, h, vShow, toRef } from "vue";
9
22
  import { RouterView } from "vue-router";
10
23
  import { BladeVNode, IParentCallArgs, useBladeNavigation } from "./../../../../../shared";
11
24
  import { ErrorInterceptor } from "./../../../error-interceptor";
25
+ import VcBreadcrumbs from "./../../../../../ui/components/molecules/vc-breadcrumbs/vc-breadcrumbs.vue";
26
+ import { useBreadcrumbs } from "./../../../../../core/composables/useBreadcrumbs";
12
27
  import { VcBladeView } from "./../vc-blade-view/vc-blade-view";
28
+ import { watchDebounced } from "@vueuse/core";
13
29
 
14
30
  const { blades, closeBlade, onParentCall } = useBladeNavigation();
31
+ const { breadcrumbs, push, remove } = useBreadcrumbs();
15
32
 
16
33
  const quantity = computed(() => {
17
34
  return blades.value.length || 0;
@@ -19,48 +36,77 @@ const quantity = computed(() => {
19
36
 
20
37
  const isMobile = inject("isMobile") as Ref<boolean>;
21
38
 
39
+ watchDebounced(
40
+ blades,
41
+ (newVal) => {
42
+ breadcrumbs.value.forEach((breadcrumb) => breadcrumb && remove([breadcrumb.id]));
43
+
44
+ newVal.forEach((blade) => {
45
+ push({
46
+ id: blade.props.navigation.idx.toString(),
47
+ title: toRef(blade.props.navigation.instance ?? { title: "" }, "title"),
48
+ clickHandler: async (id) => {
49
+ const isPrevented = await closeBlade(parseInt(id) + 1);
50
+ return !isPrevented;
51
+ },
52
+ });
53
+ });
54
+ },
55
+ {
56
+ deep: true,
57
+ immediate: true,
58
+ flush: "post",
59
+ debounce: 10,
60
+ },
61
+ );
62
+
22
63
  const render = () => {
23
64
  if (!blades.value.length) {
24
65
  return h(RouterView);
25
66
  }
26
- return blades.value.map((bladeVNode, index) => {
27
- if (bladeVNode.type.isBlade) {
28
- return h(
29
- ErrorInterceptor,
30
- {
31
- key: index,
32
- capture: true,
33
- },
34
- {
35
- default: ({ error, reset }: Parameters<InstanceType<typeof ErrorInterceptor>["$slots"]["default"]>["0"]) => {
36
- return withDirectives(
37
- h(
38
- VcBladeView,
39
- { key: `${bladeVNode.type?.name}_${index}` || `blade_${index}`, blade: bladeVNode },
40
- {
41
- default: ({ Component }: { Component: BladeVNode }) => {
42
- return h(Component, {
43
- error,
44
- closable: index >= 1,
45
- expandable: quantity.value > 1,
46
- expanded: index === quantity.value - 1,
47
- "onClose:blade": () => closeBlade(index),
48
- "onParent:call": (args: IParentCallArgs) => {
49
- const instance = blades.value?.[index - 1]?.props?.navigation?.instance.value;
50
- if (instance) onParentCall(instance, args);
51
- },
52
- onVnodeUnmounted: reset,
53
- });
67
+ return h("div", { class: "tw-w-full tw-overflow-hidden tw-flex tw-grow tw-basis-0 tw-relative" }, [
68
+ blades.value.map((bladeVNode, index) => {
69
+ if (bladeVNode.type.isBlade) {
70
+ return h(
71
+ ErrorInterceptor,
72
+ {
73
+ key: index,
74
+ capture: true,
75
+ },
76
+ {
77
+ default: ({
78
+ error,
79
+ reset,
80
+ }: Parameters<InstanceType<typeof ErrorInterceptor>["$slots"]["default"]>["0"]) => {
81
+ return withDirectives(
82
+ h(
83
+ VcBladeView,
84
+ { key: `${bladeVNode.type?.name}_${index}` || `blade_${index}`, blade: bladeVNode },
85
+ {
86
+ default: ({ Component }: { Component: BladeVNode }) => {
87
+ return h(Component, {
88
+ error,
89
+ closable: index >= 1,
90
+ expandable: quantity.value > 1,
91
+ expanded: index === quantity.value - 1,
92
+ "onClose:blade": () => closeBlade(index),
93
+ "onParent:call": (args: IParentCallArgs) => {
94
+ const instance = blades.value?.[index - 1]?.props?.navigation?.instance;
95
+ if (instance) onParentCall(instance, args);
96
+ },
97
+ onVnodeUnmounted: reset,
98
+ });
99
+ },
54
100
  },
55
- },
56
- ),
101
+ ),
57
102
 
58
- [[vShow, index >= quantity.value - (isMobile.value ? 1 : 2)]],
59
- );
103
+ [[vShow, index >= quantity.value - (isMobile.value ? 1 : 2)]],
104
+ );
105
+ },
60
106
  },
61
- },
62
- );
63
- }
64
- });
107
+ );
108
+ }
109
+ }),
110
+ ]);
65
111
  };
66
112
  </script>
@@ -1,4 +1,4 @@
1
- import { Slot, defineComponent, h, provide, ref, VNode, PropType, Component, watch } from "vue";
1
+ import { Slot, defineComponent, h, provide, ref, VNode, PropType, Component, watch, reactive } from "vue";
2
2
  import { navigationViewLocation } from "./../../injectionKeys";
3
3
  import { BladeVNode, CoreBladeExposed } from "../../types";
4
4
  import { toRef } from "@vueuse/core";
@@ -19,11 +19,18 @@ export const VcBladeView = defineComponent({
19
19
  watch(
20
20
  () => [viewRef.value, bl.value] as const,
21
21
  ([instance, blade]) => {
22
- if (blade && blade.props?.navigation) {
23
- blade.props.navigation.instance = toRef(instance);
22
+ if (instance && blade && blade.props?.navigation) {
23
+ Object.assign(
24
+ blade.props.navigation,
25
+ reactive({
26
+ get instance() {
27
+ return instance;
28
+ },
29
+ }),
30
+ );
24
31
  }
25
32
  },
26
- { flush: "post" },
33
+ { flush: "sync" },
27
34
  );
28
35
 
29
36
  provide(navigationViewLocation, bl.value!);
@@ -1,17 +1,4 @@
1
- import {
2
- markRaw,
3
- computed,
4
- getCurrentInstance,
5
- inject,
6
- warn,
7
- Component,
8
- isVNode,
9
- h,
10
- shallowRef,
11
- ComputedRef,
12
- mergeProps,
13
- reactive,
14
- } from "vue";
1
+ import { computed, getCurrentInstance, inject, warn, Component, isVNode, h, shallowRef, ComputedRef, watch } from "vue";
15
2
  /* eslint-disable @typescript-eslint/no-explicit-any */
16
3
  import { createSharedComposable, reactiveComputed, watchDebounced } from "@vueuse/core";
17
4
  import * as _ from "lodash-es";
@@ -62,9 +49,8 @@ interface IUseBladeNavigation {
62
49
  | undefined
63
50
  >
64
51
  | undefined;
65
- getCurrentBlade: () => BladeVNode;
66
52
  setNavigationQuery: (query: Record<string, string | number>) => void;
67
- getNavigationQuery: () => Record<string, string | number>;
53
+ getNavigationQuery: () => Record<string, string | number> | undefined;
68
54
  }
69
55
 
70
56
  const activeWorkspace = shallowRef<BladeVNode>();
@@ -143,7 +129,7 @@ const useBladeNavigationSingleton = createSharedComposable(() => {
143
129
 
144
130
  const { parseUrl, parseWorkspaceUrl, getURLQuery } = utils(router);
145
131
 
146
- watchDebounced(
132
+ watch(
147
133
  () => route.path,
148
134
  async (newVal, oldVal) => {
149
135
  const workspaceUrl = parseWorkspaceUrl(newVal);
@@ -336,12 +322,13 @@ export function useBladeNavigation(): IUseBladeNavigation {
336
322
  try {
337
323
  const instanceComponent = navigationView || activeWorkspace.value;
338
324
 
339
- if (!instanceComponent) {
325
+ if (!(isVNode(instanceComponent) || activeWorkspace.value)) {
340
326
  throw new Error("No workspace found");
341
327
  }
342
328
 
343
329
  const instanceComponentIndex = findInstanceComponentIndex(instanceComponent);
344
- const instanceComponentChild = navigationInstance.blades.value[instanceComponentIndex + 1];
330
+ const instanceComponentChild =
331
+ instanceComponentIndex >= 0 ? navigationInstance.blades.value[instanceComponentIndex + 1] : undefined;
345
332
 
346
333
  let isPrevented = false;
347
334
 
@@ -366,7 +353,8 @@ export function useBladeNavigation(): IUseBladeNavigation {
366
353
  }
367
354
 
368
355
  function findInstanceComponentIndex(instanceComponent: BladeVNode) {
369
- return navigationInstance.blades.value.findIndex((x) => _.isEqual(x.type, instanceComponent.type));
356
+ return navigationInstance.blades.value /* @ts-expect-error - findLastIndex is not parsed correctly by ts */
357
+ .findLastIndex((x) => _.isEqual(x.type, instanceComponent.type));
370
358
  }
371
359
 
372
360
  function createBladeNode<Blade extends Component>(args: {
@@ -522,14 +510,6 @@ export function useBladeNavigation(): IUseBladeNavigation {
522
510
  return { name: mainRouteAlias?.name, params: route.params };
523
511
  }
524
512
 
525
- /**
526
- * The function getCurrentBlade returns the current BladeVNode instance's vnode.
527
- * @returns the `vnode` property of the `instance` object, which is of type `BladeVNode`.
528
- */
529
- function getCurrentBlade(): BladeVNode {
530
- return instance.vnode;
531
- }
532
-
533
513
  const currentBladeNavigationData = computed(() => navigationView?.props?.navigation ?? undefined);
534
514
 
535
515
  function onBeforeClose(cb: () => Promise<boolean | undefined>) {
@@ -543,40 +523,44 @@ export function useBladeNavigation(): IUseBladeNavigation {
543
523
  }
544
524
 
545
525
  function setNavigationQuery(query: Record<string, string | number>) {
546
- // add blade name to query keys
547
- const namedQuery = _.mapKeys(
548
- _.mapValues(query, (value) => value?.toString()),
549
- (value, key) => instance.vnode.type.name.toLowerCase() + "_" + key,
550
- );
551
- const cleanQuery = _.omitBy(namedQuery, _.isNil);
526
+ if (instance.vnode.props.navigation.idx === 0) {
527
+ // add blade name to query keys
528
+ const namedQuery = _.mapKeys(
529
+ _.mapValues(query, (value) => value?.toString()),
530
+ (value, key) => instance.vnode.type.name.toLowerCase() + "_" + key,
531
+ );
532
+ const cleanQuery = _.omitBy(namedQuery, _.isNil);
552
533
 
553
- router.options.history.replace(
554
- decodeURIComponent(
555
- `${window.location.hash.substring(1).split("?")[0]}?${new URLSearchParams(cleanQuery).toString()}`,
556
- ),
557
- );
534
+ router.options.history.replace(
535
+ decodeURIComponent(
536
+ `${window.location.hash.substring(1).split("?")[0]}?${new URLSearchParams(cleanQuery).toString()}`,
537
+ ),
538
+ );
539
+ }
558
540
  }
559
541
 
560
542
  function getNavigationQuery() {
561
- const queryKeys = Array.from(Object.keys(route.query));
562
- const bladeQueryKeys = queryKeys.filter((key) => key.startsWith(instance.vnode.type.name.toLowerCase()));
543
+ if (instance.vnode.props.navigation.idx === 0) {
544
+ const queryKeys = Array.from(Object.keys(route.query));
545
+ const bladeQueryKeys = queryKeys.filter((key) => key.startsWith(instance.vnode.type.name.toLowerCase()));
563
546
 
564
- const namedQuery = _.mapKeys(_.pick(route.query, bladeQueryKeys), (value, key) =>
565
- key.replace(instance.vnode.type.name.toLowerCase() + "_", ""),
566
- ) as Record<string, string | number>;
547
+ const namedQuery = _.mapKeys(_.pick(route.query, bladeQueryKeys), (value, key) =>
548
+ key.replace(instance.vnode.type.name.toLowerCase() + "_", ""),
549
+ ) as Record<string, string | number>;
567
550
 
568
- const obj: typeof namedQuery = {};
569
- for (const [key, value] of Object.entries(namedQuery)) {
570
- const numValue = Number(value);
551
+ const obj: typeof namedQuery = {};
552
+ for (const [key, value] of Object.entries(namedQuery)) {
553
+ const numValue = Number(value);
571
554
 
572
- if (!isNaN(numValue)) {
573
- obj[key] = numValue;
574
- } else {
575
- obj[key] = value;
555
+ if (!isNaN(numValue)) {
556
+ obj[key] = numValue;
557
+ } else {
558
+ obj[key] = value;
559
+ }
576
560
  }
577
- }
578
561
 
579
- return obj;
562
+ return obj;
563
+ }
580
564
  }
581
565
 
582
566
  return {
@@ -586,7 +570,6 @@ export function useBladeNavigation(): IUseBladeNavigation {
586
570
  onParentCall,
587
571
  resolveBladeByName,
588
572
  routeResolver,
589
- getCurrentBlade,
590
573
  currentBladeNavigationData,
591
574
  onBeforeClose,
592
575
  setNavigationQuery,
@@ -94,7 +94,7 @@ export interface BladeVNode extends VNode {
94
94
  onOpen?: () => void;
95
95
  onClose?: () => void;
96
96
  onBeforeClose?: () => Promise<boolean | undefined>;
97
- instance: Ref<CoreBladeExposed | undefined | null>;
97
+ instance: CoreBladeExposed | undefined | null;
98
98
  idx: number;
99
99
  };
100
100
  onVnodeUnmounted?: VNodeMountHook | VNodeMountHook[];
@@ -40,13 +40,13 @@
40
40
  icon="fas fa-cloud-upload-alt"
41
41
  class="tw-text-[100px] tw-text-[#41afe6]"
42
42
  ></VcIcon>
43
- <div class="tw-m-4 tw-text-xl tw-font-medium">
43
+ <div class="tw-m-4 tw-text-xl tw-font-medium tw-text-center">
44
44
  {{ t("ASSETS_MANAGER.EMPTY.UPLOAD_ASSETS") }}
45
45
  </div>
46
46
  <VcButton @click="toggleUploader">{{ t("ASSETS_MANAGER.EMPTY.UPLOAD") }}</VcButton>
47
47
  </template>
48
48
  <template v-else>
49
- <div class="tw-m-4 tw-text-xl tw-font-medium">
49
+ <div class="tw-m-4 tw-text-xl tw-font-medium tw-text-center">
50
50
  {{ t("ASSETS_MANAGER.EMPTY.NO_ASSETS") }}
51
51
  </div>
52
52
  </template>
@@ -83,7 +83,7 @@ export default {
83
83
  t(
84
84
  `${props.bladeContext?.settings?.localizationPrefix
85
85
  .trim()
86
- .toUpperCase()}.PAGES.DETAILS.ALERTS.DELETE_CONFIRMATION`,
86
+ .toUpperCase()}.PAGES.ALERTS.IMAGE_DELETE_CONFIRMATION`,
87
87
  ),
88
88
  ),
89
89
  )
@@ -1,3 +1,4 @@
1
1
  export { default as useFilterBuilder } from "./useFilterBuilder";
2
2
  export { useTableTemplates } from "./useTableTemplates";
3
3
  export { useToolbarReducer } from "./useToolbarReducer";
4
+ export { default as useDynamicViewsUtils } from "./useDynamicViewsUtils";
@@ -0,0 +1,46 @@
1
+ import { ref, WatchStopHandle, watch, onMounted, onUnmounted, getCurrentInstance, Ref } from "vue";
2
+ import { ListBaseBladeScope, DetailsBaseBladeScope, DetailsBladeExposed, ListBladeExposed } from "../..";
3
+
4
+ export interface IUseDynamicViewsUtils {
5
+ getBladeExposedData: <BladeScope extends ListBaseBladeScope | DetailsBaseBladeScope>(
6
+ scope: BladeScope,
7
+ ) => BladeScope extends ListBaseBladeScope ? Ref<ListBladeExposed<BladeScope>> : Ref<DetailsBladeExposed<BladeScope>>;
8
+ }
9
+
10
+ export default () => {
11
+ const instance = getCurrentInstance();
12
+
13
+ function getBladeExposedData<BladeScope extends ListBaseBladeScope | DetailsBaseBladeScope>() {
14
+ const reactiveBlade = ref<BladeScope | null>(null);
15
+
16
+ const blade = ref(instance?.vnode);
17
+
18
+ let unwatch: WatchStopHandle | null = null;
19
+
20
+ const updateReactiveBlade = () => {
21
+ if (blade.value && blade.value.props?.navigation?.instance) {
22
+ reactiveBlade.value = blade.value.props.navigation.instance;
23
+ }
24
+ };
25
+
26
+ unwatch = watch(blade, updateReactiveBlade, { immediate: true, deep: true });
27
+
28
+ onMounted(() => {
29
+ updateReactiveBlade();
30
+ });
31
+
32
+ onUnmounted(() => {
33
+ if (unwatch) {
34
+ unwatch();
35
+ }
36
+ });
37
+
38
+ return reactiveBlade as unknown as BladeScope extends ListBaseBladeScope
39
+ ? Ref<ListBladeExposed<BladeScope>>
40
+ : Ref<DetailsBladeExposed<BladeScope>>;
41
+ }
42
+
43
+ return {
44
+ getBladeExposedData,
45
+ };
46
+ };