@vc-shell/framework 1.0.149 → 1.0.151

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 (24) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/dist/framework.js +2867 -2853
  3. package/dist/shared/components/blade-navigation/components/vc-blade-navigation/vc-blade-navigation.vue.d.ts.map +1 -1
  4. package/dist/shared/components/blade-navigation/composables/useBladeNavigation/index.d.ts.map +1 -1
  5. package/dist/shared/components/blade-navigation/types/index.d.ts +1 -0
  6. package/dist/shared/components/blade-navigation/types/index.d.ts.map +1 -1
  7. package/dist/shared/components/error-interceptor/interceptor.d.ts.map +1 -1
  8. package/dist/shared/components/user-dropdown-button/index.d.ts +6 -0
  9. package/dist/shared/components/user-dropdown-button/index.d.ts.map +1 -1
  10. package/dist/shared/components/user-dropdown-button/user-dropdown-button.vue.d.ts +1 -0
  11. package/dist/shared/components/user-dropdown-button/user-dropdown-button.vue.d.ts.map +1 -1
  12. package/dist/ui/components/organisms/vc-app/_internal/vc-app-bar/vc-app-bar.vue.d.ts +1 -0
  13. package/dist/ui/components/organisms/vc-app/_internal/vc-app-bar/vc-app-bar.vue.d.ts.map +1 -1
  14. package/dist/ui/components/organisms/vc-app/vc-app.vue.d.ts +13 -2
  15. package/dist/ui/components/organisms/vc-app/vc-app.vue.d.ts.map +1 -1
  16. package/package.json +4 -4
  17. package/shared/components/blade-navigation/components/vc-blade-navigation/vc-blade-navigation.vue +52 -29
  18. package/shared/components/blade-navigation/composables/useBladeNavigation/index.ts +65 -14
  19. package/shared/components/blade-navigation/types/index.ts +1 -0
  20. package/shared/components/error-interceptor/interceptor.ts +1 -0
  21. package/shared/components/user-dropdown-button/user-dropdown-button.vue +3 -2
  22. package/shared/modules/dynamic/components/fields/Card.ts +1 -1
  23. package/ui/components/organisms/vc-app/_internal/vc-app-bar/vc-app-bar.vue +2 -1
  24. package/ui/components/organisms/vc-app/vc-app.vue +22 -15
@@ -1 +1 @@
1
- {"version":3,"file":"vc-blade-navigation.vue.d.ts","sourceRoot":"","sources":["../../../../../../shared/components/blade-navigation/components/vc-blade-navigation/vc-blade-navigation.vue.ts"],"names":[],"mappings":";AAiJA,wBAKG"}
1
+ {"version":3,"file":"vc-blade-navigation.vue.d.ts","sourceRoot":"","sources":["../../../../../../shared/components/blade-navigation/components/vc-blade-navigation/vc-blade-navigation.vue.ts"],"names":[],"mappings":";AA2HA,wBAKG"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../shared/components/blade-navigation/composables/useBladeNavigation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,SAAS,EAKT,WAAW,EACZ,MAAM,KAAK,CAAC;AAIb,OAAO,EAAE,uBAAuB,EAAY,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAElF,OAAO,EAGL,UAAU,EACV,WAAW,EACX,eAAe,EACf,wBAAwB,EAEzB,MAAM,aAAa,CAAC;AAIrB,OAAO,gCAAgC,CAAC;AACxC,OAAO,sCAAsC,CAAC;AAG9C,UAAU,mBAAmB;IAC3B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,UAAU,EAAE,CAAC,CAAC;IAC3C,QAAQ,CAAC,0BAA0B,EAAE,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;IACpF,SAAS,EAAE,CAAC,KAAK,SAAS,SAAS,EACjC,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,WAAW,CAAC,KAAK,CAAC,EAC9D,WAAW,CAAC,EAAE,OAAO,KAClB,OAAO,CAAC,IAAI,GAAG,iBAAiB,CAAC,CAAC;IACvC,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAChD,YAAY,EAAE,CAAC,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,eAAe,KAAK,IAAI,CAAC;IACzF,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,KAAK,IAAI,CAAC;IAChE,kBAAkB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,wBAAwB,CAAC;IAC/D,aAAa,EAAE,CAAC,EAAE,EAAE,uBAAuB,KAAK,OAAO,CAAC,IAAI,GAAG,iBAAiB,GAAG,SAAS,CAAC,GAAG,SAAS,CAAC;IAC1G,eAAe,EAAE,MAAM,UAAU,CAAC;CACnC;AAkJD,wBAAgB,kBAAkB,IAAI,mBAAmB,CA+NxD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../shared/components/blade-navigation/composables/useBladeNavigation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,SAAS,EAKT,WAAW,EACZ,MAAM,KAAK,CAAC;AAIb,OAAO,EAAE,uBAAuB,EAAY,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAElF,OAAO,EAGL,UAAU,EACV,WAAW,EACX,eAAe,EACf,wBAAwB,EAEzB,MAAM,aAAa,CAAC;AAIrB,OAAO,gCAAgC,CAAC;AACxC,OAAO,sCAAsC,CAAC;AAG9C,UAAU,mBAAmB;IAC3B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,UAAU,EAAE,CAAC,CAAC;IAC3C,QAAQ,CAAC,0BAA0B,EAAE,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;IACpF,SAAS,EAAE,CAAC,KAAK,SAAS,SAAS,EACjC,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,WAAW,CAAC,KAAK,CAAC,EAC9D,WAAW,CAAC,EAAE,OAAO,KAClB,OAAO,CAAC,IAAI,GAAG,iBAAiB,CAAC,CAAC;IACvC,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAChD,YAAY,EAAE,CAAC,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,eAAe,KAAK,IAAI,CAAC;IACzF,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,KAAK,IAAI,CAAC;IAChE,kBAAkB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,wBAAwB,CAAC;IAC/D,aAAa,EAAE,CAAC,EAAE,EAAE,uBAAuB,KAAK,OAAO,CAAC,IAAI,GAAG,iBAAiB,GAAG,SAAS,CAAC,GAAG,SAAS,CAAC;IAC1G,eAAe,EAAE,MAAM,UAAU,CAAC;CACnC;AA2JD,wBAAgB,kBAAkB,IAAI,mBAAmB,CAyQxD"}
@@ -17,6 +17,7 @@ export type CoreBladeAdditionalSettings = {
17
17
  routable?: boolean;
18
18
  permissions?: string | string[];
19
19
  isWorkspace?: boolean;
20
+ isBlade?: boolean;
20
21
  name?: string;
21
22
  menuItem?: MenuItemConfig;
22
23
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../shared/components/blade-navigation/types/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../shared/components/blade-navigation/types/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"interceptor.d.ts","sourceRoot":"","sources":["../../../../shared/components/error-interceptor/interceptor.ts"],"names":[],"mappings":"AACA,OAAO,EAAmB,KAAK,EAAE,MAAM,KAAK,CAAC;AAE7C,MAAM,WAAW,KAAK;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,KAAK;IACpB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;CACxB;AAED,MAAM,MAAM,KAAK,GAAG;IAClB,KAAK,EAAE;QACL,OAAO,EAAE,CAAC,IAAI,EAAE;YAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;YAAC,KAAK,EAAE,MAAM,IAAI,CAAA;SAAE,KAAK,KAAK,EAAE,CAAC;KACzE,CAAC;CACH,CAAC;;;;;;;;;iBAUe,KAAK,GAAG,MAAM;;;;;;;;;;;;;AAR/B,wBAwBG"}
1
+ {"version":3,"file":"interceptor.d.ts","sourceRoot":"","sources":["../../../../shared/components/error-interceptor/interceptor.ts"],"names":[],"mappings":"AACA,OAAO,EAAmB,KAAK,EAAE,MAAM,KAAK,CAAC;AAE7C,MAAM,WAAW,KAAK;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,KAAK;IACpB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;CACxB;AAED,MAAM,MAAM,KAAK,GAAG;IAClB,KAAK,EAAE;QACL,OAAO,EAAE,CAAC,IAAI,EAAE;YAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;YAAC,KAAK,EAAE,MAAM,IAAI,CAAA;SAAE,KAAK,KAAK,EAAE,CAAC;KACzE,CAAC;CACH,CAAC;;;;;;;;;iBAWe,KAAK,GAAG,MAAM;;;;;;;;;;;;;AAT/B,wBAyBG"}
@@ -1,4 +1,7 @@
1
1
  export declare const UserDropdownButton: import("vue").DefineComponent<{
2
+ disabled: {
3
+ type: import("vue").PropType<boolean>;
4
+ };
2
5
  name: {
3
6
  type: import("vue").PropType<string>;
4
7
  };
@@ -13,6 +16,9 @@ export declare const UserDropdownButton: import("vue").DefineComponent<{
13
16
  default: () => never[];
14
17
  };
15
18
  }, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
19
+ disabled: {
20
+ type: import("vue").PropType<boolean>;
21
+ };
16
22
  name: {
17
23
  type: import("vue").PropType<string>;
18
24
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../shared/components/user-dropdown-button/index.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAAoD,CAAC;AAGpF,OAAO,QAAQ,mBAAmB,CAAC;IACjC,UAAiB,gBAAgB;QAC/B,kBAAkB,EAAE,OAAO,kBAAkB,CAAC;KAC/C;CACF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../shared/components/user-dropdown-button/index.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAAoD,CAAC;AAGpF,OAAO,QAAQ,mBAAmB,CAAC;IACjC,UAAiB,gBAAgB;QAC/B,kBAAkB,EAAE,OAAO,kBAAkB,CAAC;KAC/C;CACF"}
@@ -4,6 +4,7 @@ export interface Props {
4
4
  name?: string | undefined;
5
5
  role?: string | undefined;
6
6
  menuItems?: BladeMenu[];
7
+ disabled?: boolean;
7
8
  }
8
9
  declare const _default: import("vue").DefineComponent<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<Props>, {
9
10
  menuItems: () => never[];
@@ -1 +1 @@
1
- {"version":3,"file":"user-dropdown-button.vue.d.ts","sourceRoot":"","sources":["../../../../shared/components/user-dropdown-button/user-dropdown-button.vue.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAKhD,MAAM,WAAW,KAAK;IACpB,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,SAAS,EAAE,CAAC;CACzB;;;;;;;;AAkPD,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":"user-dropdown-button.vue.d.ts","sourceRoot":"","sources":["../../../../shared/components/user-dropdown-button/user-dropdown-button.vue.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAKhD,MAAM,WAAW,KAAK;IACpB,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,SAAS,EAAE,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;;;;;;;;AAkPD,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"}
@@ -2,6 +2,7 @@ import { IBladeToolbar } from "./../../../../../../core/types";
2
2
  export interface Props {
3
3
  logo?: string;
4
4
  title?: string;
5
+ disableMenu?: boolean;
5
6
  }
6
7
  export interface Emits {
7
8
  (event: "logo:click"): void;
@@ -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;CAChB;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;;;;;;;;;;;;;;;AA2OD,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;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;;;;;;;;;;;;;;;AA2OD,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"}
@@ -4,16 +4,19 @@ export interface Props {
4
4
  version?: string;
5
5
  theme?: "light" | "dark";
6
6
  title?: string;
7
+ disableMenu?: boolean;
7
8
  }
8
9
  declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<__VLS_TypePropsToRuntimeProps<Props>, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_TypePropsToRuntimeProps<Props>>>, {}, {}>, Readonly<{
9
10
  "app-switcher": void;
10
11
  toolbar: void;
11
- "navigation-menu": void;
12
12
  "toolbar:prepend": void;
13
13
  "toolbar:language-selector": void;
14
14
  "toolbar:notifications-dropdown": void;
15
15
  "toolbar:user-dropdown": (props: {
16
16
  userDropdown: import("vue").DefineComponent<{
17
+ disabled: {
18
+ type: import("vue").PropType<boolean>;
19
+ };
17
20
  name: {
18
21
  type: import("vue").PropType<string>;
19
22
  };
@@ -28,6 +31,9 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<__
28
31
  default: () => never[];
29
32
  };
30
33
  }, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
34
+ disabled: {
35
+ type: import("vue").PropType<boolean>;
36
+ };
31
37
  name: {
32
38
  type: import("vue").PropType<string>;
33
39
  };
@@ -49,12 +55,14 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<__
49
55
  }> & {
50
56
  "app-switcher": void;
51
57
  toolbar: void;
52
- "navigation-menu": void;
53
58
  "toolbar:prepend": void;
54
59
  "toolbar:language-selector": void;
55
60
  "toolbar:notifications-dropdown": void;
56
61
  "toolbar:user-dropdown": (props: {
57
62
  userDropdown: import("vue").DefineComponent<{
63
+ disabled: {
64
+ type: import("vue").PropType<boolean>;
65
+ };
58
66
  name: {
59
67
  type: import("vue").PropType<string>;
60
68
  };
@@ -69,6 +77,9 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<__
69
77
  default: () => never[];
70
78
  };
71
79
  }, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
80
+ disabled: {
81
+ type: import("vue").PropType<boolean>;
82
+ };
72
83
  name: {
73
84
  type: import("vue").PropType<string>;
74
85
  };
@@ -1 +1 @@
1
- {"version":3,"file":"vc-app.vue.d.ts","sourceRoot":"","sources":["../../../../../ui/components/organisms/vc-app/vc-app.vue.ts"],"names":[],"mappings":"AAmBA,MAAM,WAAW,KAAK;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4aD,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.vue.d.ts","sourceRoot":"","sources":["../../../../../ui/components/organisms/vc-app/vc-app.vue.ts"],"names":[],"mappings":"AAmBA,MAAM,WAAW,KAAK;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2aD,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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vc-shell/framework",
3
- "version": "1.0.149",
3
+ "version": "1.0.151",
4
4
  "type": "module",
5
5
  "main": "./dist/framework.js",
6
6
  "types": "./dist/index.d.ts",
@@ -53,9 +53,9 @@
53
53
  "whatwg-fetch": "^3.6.19"
54
54
  },
55
55
  "devDependencies": {
56
- "@vc-shell/api-client-generator": "^1.0.149",
57
- "@vc-shell/config-generator": "^1.0.149",
58
- "@vc-shell/ts-config": "^1.0.149",
56
+ "@vc-shell/api-client-generator": "^1.0.151",
57
+ "@vc-shell/config-generator": "^1.0.151",
58
+ "@vc-shell/ts-config": "^1.0.151",
59
59
  "@vitejs/plugin-vue": "^5.0.3",
60
60
  "sass": "^1.69.6",
61
61
  "typescript": "^5.3.3",
@@ -1,39 +1,13 @@
1
1
  <template>
2
2
  <div class="tw-w-full tw-overflow-hidden tw-flex tw-grow tw-basis-0 tw-relative">
3
- <ErrorInterceptor
4
- v-for="(bladeVNode, index) in blades"
5
- v-slot="{ error, reset }"
6
- :key="index"
7
- capture
8
- >
9
- <router-view v-show="index >= quantity - ($isMobile.value ? 1 : 2)">
10
- <VcBladeView
11
- v-slot="{ Component }"
12
- :key="bladeVNode.type?.name || `blade_${index}`"
13
- :blade="bladeVNode"
14
- >
15
- <component
16
- :is="Component"
17
- :ref="refs.set"
18
- :error="error"
19
- :closable="index >= 1"
20
- :expandable="quantity > 1"
21
- :expanded="index === quantity - 1"
22
- @close:blade="closeBlade(index)"
23
- @parent:call="onParentCall(refs[index - 1], $event)"
24
- @vue:before-unmount="reset"
25
- >
26
- </component>
27
- </VcBladeView>
28
- </router-view>
29
- </ErrorInterceptor>
3
+ <render></render>
30
4
  </div>
31
5
  </template>
32
6
 
33
7
  <script lang="ts" setup>
34
- import { computed } from "vue";
8
+ import { Ref, computed, inject, withDirectives, h, vShow } from "vue";
35
9
  import { RouterView } from "vue-router";
36
- import { useBladeNavigation } from "./../../../../../shared";
10
+ import { BladeVNode, IParentCallArgs, useBladeNavigation } from "./../../../../../shared";
37
11
  import { ErrorInterceptor } from "./../../../error-interceptor";
38
12
  import { VcBladeView } from "./../vc-blade-view/vc-blade-view";
39
13
  import { useTemplateRefsList } from "@vueuse/core";
@@ -44,5 +18,54 @@ const quantity = computed(() => {
44
18
  return blades.value.length || 0;
45
19
  });
46
20
 
21
+ const isMobile = inject("isMobile") as Ref<boolean>;
22
+
47
23
  const refs = useTemplateRefsList<HTMLDivElement>();
24
+
25
+ const render = () => {
26
+ if (!blades.value.length) {
27
+ return h(RouterView);
28
+ }
29
+ return blades.value.map((bladeVNode, index) => {
30
+ if (bladeVNode.type.isBlade) {
31
+ return h(
32
+ ErrorInterceptor,
33
+ {
34
+ key: index,
35
+ capture: true,
36
+ },
37
+ {
38
+ default: ({ error, reset }: Parameters<InstanceType<typeof ErrorInterceptor>["$slots"]["default"]>["0"]) => {
39
+ return withDirectives(
40
+ h(
41
+ VcBladeView,
42
+ { key: bladeVNode.type?.name || `blade_${index}`, blade: bladeVNode },
43
+ {
44
+ default: ({ Component }: { Component: BladeVNode }) =>
45
+ h(Component, {
46
+ ref: refs.value.set,
47
+ error,
48
+ closable: index >= 1,
49
+ expandable: quantity.value > 1,
50
+ expanded: index === quantity.value - 1,
51
+ "onUpdate:expanded": (value: boolean) => {
52
+ if (value) {
53
+ closeBlade(index + 1);
54
+ }
55
+ },
56
+ "onClose:blade": () => closeBlade(index),
57
+ "onParent:call": (args: IParentCallArgs) => onParentCall(refs.value[index - 1], args),
58
+ "onVue:before-unmount": reset,
59
+ }),
60
+ },
61
+ ),
62
+
63
+ [[vShow, index >= quantity.value - (isMobile.value ? 1 : 2)]],
64
+ );
65
+ },
66
+ },
67
+ );
68
+ }
69
+ });
70
+ };
48
71
  </script>
@@ -48,7 +48,7 @@ interface IUseBladeNavigation {
48
48
  }
49
49
 
50
50
  const activeWorkspace = shallowRef<BladeVNode>();
51
- const baseUrl = shallowRef<string>();
51
+ const mainRouteBaseParamURL = shallowRef<string>();
52
52
 
53
53
  function parseUrl(url: string) {
54
54
  const urlRegex = /^\/([a-zA-Z0-9_-]+)(?:\/([a-zA-Z0-9_-]+))?(?:\/([a-zA-Z0-9_-]+))?$/;
@@ -78,10 +78,12 @@ const useBladeNavigationSingleton = createSharedComposable(() => {
78
78
 
79
79
  function parseWorkspaceUrl(path: string): string {
80
80
  // Object.values(route.params)[0] will always be base path of the app
81
- if (!baseUrl.value) {
82
- baseUrl.value = "/" + (Object.values(route.params)?.[0] ?? "");
81
+ if (!mainRouteBaseParamURL.value) {
82
+ mainRouteBaseParamURL.value = "/" + (Object.values(route.params)?.[0] ?? "");
83
83
  }
84
- const pathWithoutBase = path.startsWith(baseUrl.value) ? path.slice(baseUrl.value.length) : path;
84
+ const pathWithoutBase = path.startsWith(mainRouteBaseParamURL.value)
85
+ ? path.slice(mainRouteBaseParamURL.value.length)
86
+ : path;
85
87
  const segments = pathWithoutBase.split("/").filter(Boolean);
86
88
  const workspaceUrl = segments.slice(0, 1).join("/");
87
89
  return "/" + workspaceUrl;
@@ -97,7 +99,8 @@ const useBladeNavigationSingleton = createSharedComposable(() => {
97
99
  (router.resolve({ path: workspaceUrl })?.matched?.[1]?.components?.default as BladeVNode);
98
100
 
99
101
  if (wsRouteComponent !== undefined) {
100
- if (isVNode(wsRouteComponent)) {
102
+ if (isVNode(wsRouteComponent) && wsRouteComponent.type.isBlade) {
103
+ //&& wsRouteComponent.type.isBlade
101
104
  navigationInstance.blades.value[0] = markRaw(wsRouteComponent);
102
105
  activeWorkspace.value = wsRouteComponent;
103
106
  } else {
@@ -106,7 +109,7 @@ const useBladeNavigationSingleton = createSharedComposable(() => {
106
109
  if (!isPrevented) {
107
110
  // add not blade page to blades array to show simple routes as
108
111
  // we use only one router-view for all routes
109
- navigationInstance.blades.value = [markRaw(wsRouteComponent)];
112
+ navigationInstance.blades.value = [];
110
113
  } else {
111
114
  if (oldVal) router.replace({ path: oldVal });
112
115
  }
@@ -149,7 +152,13 @@ const useBladeNavigationSingleton = createSharedComposable(() => {
149
152
  url = wsBladeUrl;
150
153
  }
151
154
 
152
- if (url) history.replaceState({}, "", "#" + url);
155
+ if (url) {
156
+ router.options.history.replace(
157
+ (mainRouteBaseParamURL.value && !url.startsWith(mainRouteBaseParamURL.value)
158
+ ? mainRouteBaseParamURL.value
159
+ : "") + url,
160
+ );
161
+ }
153
162
  }
154
163
  },
155
164
  { deep: true },
@@ -331,33 +340,73 @@ export function useBladeNavigation(): IUseBladeNavigation {
331
340
  return router.getRoutes().find((route) => route.path === to.path);
332
341
  }
333
342
 
343
+ /**
344
+ * Generates and handles navigation for dynamic routes based on the provided route information.
345
+ *
346
+ * Supports App component URLs with variable like '/:userId?'.
347
+ * @link https://router.vuejs.org/guide/essentials/dynamic-matching.html
348
+ *
349
+ * @param to - The target route.
350
+ * @param routes - The array of BladeRoutesRecord containing the registered routes.
351
+ */
334
352
  async function generateRoute(to: RouteLocationNormalized, routes: BladeRoutesRecord[]) {
335
- const parsedRoutes = parseUrl(to.path);
353
+ // Extract parameters excluding "pathMatch". This is necessary if a variable is used as the App component URL, for example, /:userId?
354
+ const params = Object.entries(to.params)
355
+ .filter(([key]) => key !== "pathMatch")
356
+ .reduce(
357
+ (acc, [key, value]) => {
358
+ acc[key] = value;
359
+ return acc;
360
+ },
361
+ {} as Record<string, string | string[]>,
362
+ );
363
+
364
+ // Get the raw path of the main route.
365
+ const parentRawPath = router.getRoutes().find((route) => route.name === mainRoute.name)!.path!;
366
+
367
+ // Determine the parent path based on the parameters.
368
+ const parentPath = parentRawPath.includes(Object.keys(params)?.[0] as string)
369
+ ? "/" + (Object.values(params)?.[0] ?? "")
370
+ : "";
371
+
372
+ // Set the base param value.
373
+ mainRouteBaseParamURL.value = parentPath;
374
+
375
+ // Check if the current path matches the parent path.
376
+ const isCorrectParentPath = parentRawPath !== "/" && to.path.startsWith(parentPath);
377
+
378
+ // Check if the current route is a parent route.
379
+ const isRouteParent = router.getRoutes().find((x) => x.path.endsWith(parentPath));
380
+
381
+ // Parse the URL to extract relevant route information.
382
+ const parsedRoutes = parseUrl(!isRouteParent ? to.path.slice(parentPath.length) : to.path);
336
383
 
337
384
  if (parsedRoutes) {
338
- // here we check if route is registered in bladeRoutes
385
+ // Find the registered route component.
339
386
  const registeredRouteComponent = routes.find((route) => route.route === "/" + parsedRoutes?.blade)?.component;
340
387
 
341
388
  if (registeredRouteComponent) {
342
389
  if (registeredRouteComponent.type?.isWorkspace) {
343
- // if route is workspace we just push it to router
390
+ // If the route is a workspace, navigate to it directly.
344
391
  router.replace({ path: registeredRouteComponent.type.url as string });
345
392
  } else {
346
- // if route is not workspace we need to add it to router and push
393
+ // If the route is not a workspace, add it to the router and navigate to it.
347
394
  const url =
395
+ (!isRouteParent ? parentPath : "") +
348
396
  "/" +
349
397
  parsedRoutes?.workspace +
350
398
  "/" +
351
399
  parsedRoutes.blade +
352
400
  (parsedRoutes.param ? "/" + parsedRoutes.param : "");
353
401
 
354
- // if route is not routable we will redirect to workspace
402
+ // If the route is not routable, redirect to the workspace.
355
403
  if (!parsedRoutes.param && !registeredRouteComponent.type?.routable) {
356
404
  return router.replace("/" + parsedRoutes?.workspace);
357
405
  } else {
406
+ // Add the route to the router.
358
407
  router.addRoute(mainRoute.name as string, {
359
408
  name: url,
360
- path: url,
409
+ path: parentRawPath !== "/" ? parentRawPath + url : "" + url,
361
410
  components: {
362
411
  default: _.merge({}, registeredRouteComponent, {
363
412
  props: {
@@ -374,10 +423,12 @@ export function useBladeNavigation(): IUseBladeNavigation {
374
423
  },
375
424
  });
376
425
 
377
- return router.replace(url);
426
+ // Navigate to the newly added route.
427
+ return router.replace({ name: url, params: isCorrectParentPath ? params : {} });
378
428
  }
379
429
  }
380
430
  } else {
431
+ // If the registered route component is not found, navigate to the main route.
381
432
  return router.replace({ name: mainRoute.name as string });
382
433
  }
383
434
  }
@@ -30,6 +30,7 @@ export type CoreBladeAdditionalSettings = {
30
30
  routable?: boolean;
31
31
  permissions?: string | string[];
32
32
  isWorkspace?: boolean;
33
+ isBlade?: boolean;
33
34
  name?: string;
34
35
  menuItem?: MenuItemConfig;
35
36
  };
@@ -17,6 +17,7 @@ export type Slots = {
17
17
  };
18
18
 
19
19
  export default defineComponent({
20
+ name: "ErrorInterceptor",
20
21
  props: {
21
22
  capture: {
22
23
  default: false,
@@ -31,7 +31,7 @@
31
31
  </div>
32
32
  </div>
33
33
  <div
34
- v-if="menu && menu.length"
34
+ v-if="!disabled && menu && menu.length"
35
35
  class="user-dropdown-button__chevron"
36
36
  >
37
37
  <VcIcon
@@ -74,6 +74,7 @@ export interface Props {
74
74
  name?: string | undefined;
75
75
  role?: string | undefined;
76
76
  menuItems?: BladeMenu[];
77
+ disabled?: boolean;
77
78
  }
78
79
  const props = withDefaults(defineProps<Props>(), {
79
80
  menuItems: () => [],
@@ -110,7 +111,7 @@ const menu = computed(() => [
110
111
  ]);
111
112
 
112
113
  const toggleAccountMenuVisible = () => {
113
- if (menu.value && menu.value.length) {
114
+ if (!props.disabled && menu.value && menu.value.length) {
114
115
  accountMenuVisible.value = !accountMenuVisible.value;
115
116
  }
116
117
  };
@@ -28,7 +28,7 @@ export default {
28
28
 
29
29
  if (component && typeof component === "object" && !Array.isArray(component)) {
30
30
  if (Array.isArray(component.children) && component.children.length > 0) {
31
- // Рекурсивная проверка для вложенных компонентов
31
+ // Recursive check for nested components
32
32
  return hasNoCommentNodes(component.children);
33
33
  }
34
34
 
@@ -56,7 +56,7 @@
56
56
 
57
57
  <!-- Show menu toggler on mobile devices -->
58
58
  <div
59
- v-if="$isMobile.value"
59
+ v-if="!disableMenu && $isMobile.value"
60
60
  class="tw-text-[#319ed4] tw-w-[var(--app-bar-button-width)] tw-flex tw-items-center tw-justify-center tw-h-full tw-box-border tw-cursor-pointer"
61
61
  @click="$emit('menubutton:click')"
62
62
  >
@@ -75,6 +75,7 @@ import { toValue } from "vue";
75
75
  export interface Props {
76
76
  logo?: string;
77
77
  title?: string;
78
+ disableMenu?: boolean;
78
79
  }
79
80
 
80
81
  export interface Emits {
@@ -21,6 +21,7 @@
21
21
  class="tw-shrink-0"
22
22
  :logo="logo"
23
23
  :title="title"
24
+ :disable-menu="disableMenu"
24
25
  @menubutton:click="($refs.menu as Record<'isMobileVisible', boolean>).isMobileVisible = true"
25
26
  @backlink:click="closeBlade(blades.length - 1)"
26
27
  @logo:click="openRoot"
@@ -64,19 +65,18 @@
64
65
  </VcAppBar>
65
66
 
66
67
  <div class="tw-overflow-hidden tw-flex tw-grow tw-basis-0">
67
- <slot name="navigation-menu">
68
- <!-- Init main menu -->
69
- <VcAppMenu
70
- ref="menu"
71
- class="tw-shrink-0"
72
- :version="version"
73
- @item:click="onMenuItemClick"
74
- >
75
- <template #mobile>
76
- <UserDropdownButton class="tw-p-0 tw-mb-2 tw-w-full tw-h-auto" />
77
- </template>
78
- </VcAppMenu>
79
- </slot>
68
+ <!-- Init main menu -->
69
+ <VcAppMenu
70
+ v-if="!disableMenu"
71
+ ref="menu"
72
+ class="tw-shrink-0"
73
+ :version="version"
74
+ @item:click="onMenuItemClick"
75
+ >
76
+ <template #mobile>
77
+ <UserDropdownButton class="tw-p-0 tw-mb-2 tw-w-full tw-h-auto" />
78
+ </template>
79
+ </VcAppMenu>
80
80
 
81
81
  <!-- Blade navigation -->
82
82
  <div
@@ -118,6 +118,7 @@ export interface Props {
118
118
  version?: string;
119
119
  theme?: "light" | "dark";
120
120
  title?: string;
121
+ disableMenu?: boolean;
121
122
  }
122
123
 
123
124
  defineOptions({
@@ -127,7 +128,6 @@ defineOptions({
127
128
  defineSlots<{
128
129
  "app-switcher": void;
129
130
  toolbar: void;
130
- "navigation-menu": void;
131
131
  "toolbar:prepend": void;
132
132
  "toolbar:language-selector": void;
133
133
  "toolbar:notifications-dropdown": void;
@@ -165,7 +165,14 @@ const onMenuItemClick = function (item: MenuItem) {
165
165
  };
166
166
 
167
167
  const openRoot = async () => {
168
- router.push("/");
168
+ const isPrevented = await closeBlade(1);
169
+
170
+ if (!isPrevented) {
171
+ const mainRoute = router.getRoutes().find((route) => route.meta?.root);
172
+ const mainRouteAlias = router.getRoutes().find((route) => route.aliasOf?.path === mainRoute?.path) ?? mainRoute;
173
+
174
+ router.replace({ name: mainRouteAlias?.name, params: route.params });
175
+ }
169
176
  };
170
177
 
171
178
  watchOnce(