@vc-shell/framework 1.0.148 → 1.0.150

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 (93) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/core/composables/index.ts +1 -1
  3. package/core/composables/useLanguages/index.ts +52 -0
  4. package/core/plugins/i18n/index.ts +1 -1
  5. package/core/plugins/modularity/index.ts +10 -1
  6. package/core/plugins/validation/index.ts +0 -11
  7. package/core/plugins/validation/rules.ts +7 -6
  8. package/dist/core/composables/index.d.ts +1 -1
  9. package/dist/core/composables/index.d.ts.map +1 -1
  10. package/dist/core/composables/useLanguages/index.d.ts +12 -0
  11. package/dist/core/composables/useLanguages/index.d.ts.map +1 -0
  12. package/dist/core/plugins/modularity/index.d.ts.map +1 -1
  13. package/dist/core/plugins/validation/index.d.ts +0 -3
  14. package/dist/core/plugins/validation/index.d.ts.map +1 -1
  15. package/dist/core/plugins/validation/rules.d.ts +1 -1
  16. package/dist/core/plugins/validation/rules.d.ts.map +1 -1
  17. package/dist/framework.js +11703 -10961
  18. package/dist/index.css +1 -1
  19. package/dist/index.d.ts +5 -0
  20. package/dist/index.d.ts.map +1 -1
  21. package/dist/shared/components/app-switcher/composables/useAppSwitcher/index.d.ts.map +1 -1
  22. package/dist/shared/components/blade-navigation/components/vc-blade-navigation/vc-blade-navigation.vue.d.ts.map +1 -1
  23. package/dist/shared/components/blade-navigation/components/vc-blade-view/vc-blade-view.d.ts +0 -12
  24. package/dist/shared/components/blade-navigation/components/vc-blade-view/vc-blade-view.d.ts.map +1 -1
  25. package/dist/shared/components/blade-navigation/composables/useBladeNavigation/index.d.ts +6 -3
  26. package/dist/shared/components/blade-navigation/composables/useBladeNavigation/index.d.ts.map +1 -1
  27. package/dist/shared/components/blade-navigation/plugin.d.ts.map +1 -1
  28. package/dist/shared/components/blade-navigation/types/index.d.ts +6 -8
  29. package/dist/shared/components/blade-navigation/types/index.d.ts.map +1 -1
  30. package/dist/shared/components/language-selector/language-selector.vue.d.ts.map +1 -1
  31. package/dist/shared/components/user-dropdown-button/index.d.ts +6 -0
  32. package/dist/shared/components/user-dropdown-button/index.d.ts.map +1 -1
  33. package/dist/shared/components/user-dropdown-button/user-dropdown-button.vue.d.ts +1 -0
  34. package/dist/shared/components/user-dropdown-button/user-dropdown-button.vue.d.ts.map +1 -1
  35. package/dist/shared/modules/dynamic/components/SchemaRender.d.ts +3 -3
  36. package/dist/shared/modules/dynamic/components/fields/Button.d.ts +1 -1
  37. package/dist/shared/modules/dynamic/components/fields/Card.d.ts +1 -1
  38. package/dist/shared/modules/dynamic/components/fields/Checkbox.d.ts +1 -1
  39. package/dist/shared/modules/dynamic/components/fields/ContentField.d.ts +1 -1
  40. package/dist/shared/modules/dynamic/components/fields/DynamicProperty.d.ts +1 -1
  41. package/dist/shared/modules/dynamic/components/fields/EditorField.d.ts +1 -1
  42. package/dist/shared/modules/dynamic/components/fields/Fieldset.d.ts +1 -1
  43. package/dist/shared/modules/dynamic/components/fields/GalleryField.d.ts +1 -1
  44. package/dist/shared/modules/dynamic/components/fields/ImageField.d.ts +1 -1
  45. package/dist/shared/modules/dynamic/components/fields/InputCurrency.d.ts +1 -1
  46. package/dist/shared/modules/dynamic/components/fields/InputField.d.ts +1 -1
  47. package/dist/shared/modules/dynamic/components/fields/MultivalueField.d.ts +1 -1
  48. package/dist/shared/modules/dynamic/components/fields/SelectField.d.ts +1 -1
  49. package/dist/shared/modules/dynamic/components/fields/StatusField.d.ts +1 -1
  50. package/dist/shared/modules/dynamic/components/fields/TextareaField.d.ts +1 -1
  51. package/dist/shared/modules/dynamic/components/fields/VideoField.d.ts +1 -1
  52. package/dist/shared/modules/dynamic/components/fields/props.d.ts +1 -1
  53. package/dist/shared/modules/dynamic/factories/types/index.d.ts +1 -1
  54. package/dist/shared/modules/dynamic/factories/types/index.d.ts.map +1 -1
  55. package/dist/shared/modules/dynamic/helpers/nodeBuilder.d.ts.map +1 -1
  56. package/dist/shared/modules/dynamic/helpers/override.d.ts.map +1 -1
  57. package/dist/shared/modules/dynamic/index.d.ts.map +1 -1
  58. package/dist/shared/modules/dynamic/pages/dynamic-blade-form.vue.d.ts +3 -1
  59. package/dist/shared/modules/dynamic/pages/dynamic-blade-form.vue.d.ts.map +1 -1
  60. package/dist/shared/modules/dynamic/pages/dynamic-blade-list.vue.d.ts +2 -0
  61. package/dist/shared/modules/dynamic/pages/dynamic-blade-list.vue.d.ts.map +1 -1
  62. package/dist/shared/modules/dynamic/types/index.d.ts +13 -4
  63. package/dist/shared/modules/dynamic/types/index.d.ts.map +1 -1
  64. package/dist/tsconfig.tsbuildinfo +1 -1
  65. package/dist/ui/components/organisms/vc-app/_internal/vc-app-bar/vc-app-bar.vue.d.ts +1 -0
  66. package/dist/ui/components/organisms/vc-app/_internal/vc-app-bar/vc-app-bar.vue.d.ts.map +1 -1
  67. package/dist/ui/components/organisms/vc-app/vc-app.vue.d.ts +13 -2
  68. package/dist/ui/components/organisms/vc-app/vc-app.vue.d.ts.map +1 -1
  69. package/package.json +6 -5
  70. package/shared/components/app-switcher/composables/useAppSwitcher/index.ts +2 -1
  71. package/shared/components/blade-navigation/components/vc-blade-navigation/vc-blade-navigation.vue +12 -26
  72. package/shared/components/blade-navigation/components/vc-blade-view/vc-blade-view.ts +18 -11
  73. package/shared/components/blade-navigation/composables/useBladeNavigation/index.ts +231 -337
  74. package/shared/components/blade-navigation/plugin.ts +2 -1
  75. package/shared/components/blade-navigation/types/index.ts +5 -11
  76. package/shared/components/language-selector/language-selector.vue +12 -10
  77. package/shared/components/notification-dropdown/notification-dropdown.vue +1 -1
  78. package/shared/components/user-dropdown-button/user-dropdown-button.vue +57 -41
  79. package/shared/modules/dynamic/factories/types/index.ts +1 -1
  80. package/shared/modules/dynamic/helpers/nodeBuilder.ts +6 -3
  81. package/shared/modules/dynamic/helpers/override.ts +29 -11
  82. package/shared/modules/dynamic/index.ts +1 -0
  83. package/shared/modules/dynamic/pages/dynamic-blade-form.vue +47 -17
  84. package/shared/modules/dynamic/pages/dynamic-blade-list.vue +11 -1
  85. package/shared/modules/dynamic/types/index.ts +13 -4
  86. package/ui/components/atoms/vc-label/vc-label.vue +18 -19
  87. package/ui/components/molecules/vc-multivalue/vc-multivalue.vue +1 -0
  88. package/ui/components/organisms/vc-app/_internal/vc-app-bar/vc-app-bar.vue +7 -20
  89. package/ui/components/organisms/vc-app/_internal/vc-app-menu/vc-app-menu.vue +1 -1
  90. package/ui/components/organisms/vc-app/vc-app.vue +16 -22
  91. package/core/composables/useI18n/index.ts +0 -7
  92. package/dist/core/composables/useI18n/index.d.ts +0 -3
  93. package/dist/core/composables/useI18n/index.d.ts.map +0 -1
@@ -5,7 +5,7 @@
5
5
  >
6
6
  <slot name="app-switcher"></slot>
7
7
 
8
- <template v-if="!$isMobile.value || quantity === 0">
8
+ <template v-if="!$isMobile.value || blades.length === 0">
9
9
  <!-- Logo -->
10
10
  <img
11
11
  class="tw-h-1/2 tw-cursor-pointer tw-mx-3"
@@ -26,15 +26,15 @@
26
26
  <template v-if="$isMobile.value">
27
27
  <!-- Show blades name when at least one blade is opened -->
28
28
  <div
29
- v-if="quantity === 1"
29
+ v-if="blades.length === 1"
30
30
  class="tw-overflow-ellipsis tw-overflow-hidden tw-whitespace-nowrap tw-text-2xl tw-leading-header tw-ml-2"
31
31
  >
32
- {{ viewTitle || "" }}
32
+ {{ toValue(blades[blades.length - 1]?.props?.navigation?.instance)?.title || "" }}
33
33
  </div>
34
34
 
35
35
  <!-- Show back link when more than one blade is opened -->
36
36
  <VcLink
37
- v-else-if="quantity > 1"
37
+ v-else-if="blades.length > 1"
38
38
  class="tw-ml-3"
39
39
  @click="$emit('backlink:click')"
40
40
  >
@@ -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
  >
@@ -70,11 +70,12 @@ import { useI18n } from "vue-i18n";
70
70
  import { VcIcon, VcLink } from "./../../../../";
71
71
  import { IBladeToolbar } from "./../../../../../../core/types";
72
72
  import { useBladeNavigation } from "./../../../../../../shared";
73
- import { ref, watch, nextTick } from "vue";
73
+ import { toValue } from "vue";
74
74
 
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 {
@@ -91,20 +92,6 @@ defineEmits<Emits>();
91
92
  const { t } = useI18n({ useScope: "global" });
92
93
 
93
94
  const { blades } = useBladeNavigation();
94
-
95
- const viewTitle = ref();
96
- const quantity = ref();
97
-
98
- watch(
99
- () => blades,
100
- async (newVal) => {
101
- await nextTick(() => {
102
- viewTitle.value = Object.values(newVal.value?.instances || {})[0]?.title;
103
- quantity.value = Object.values(newVal.value?.components || {}).length;
104
- });
105
- },
106
- { deep: true, immediate: true, flush: "post" },
107
- );
108
95
  </script>
109
96
 
110
97
  <style lang="scss">
@@ -18,7 +18,7 @@
18
18
  <!-- Show menu close handler on mobile devices -->
19
19
  <div
20
20
  v-if="$isMobile.value"
21
- class="tw-text-[#319ed4] tw-flex tw-justify-end tw-items-center tw-p-4"
21
+ class="tw-text-[#319ed4] tw-flex tw-justify-end tw-items-center tw-p-4 tw-cursor-pointer"
22
22
  >
23
23
  <VcIcon
24
24
  icon="fas fa-times"
@@ -21,8 +21,9 @@
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
- @backlink:click="closeBlade(Object.keys(blades?.components || {}).length - 1)"
26
+ @backlink:click="closeBlade(blades.length - 1)"
26
27
  @logo:click="openRoot"
27
28
  >
28
29
  <template #app-switcher>
@@ -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
@@ -107,7 +107,6 @@ import {
107
107
  NotificationDropdown,
108
108
  BladeRoutesRecord,
109
109
  } from "./../../../../shared/components";
110
- import { useI18n } from "vue-i18n";
111
110
  import { useNotifications, useUser } from "../../../../core/composables";
112
111
  import { useRoute, useRouter } from "vue-router";
113
112
  import { watchOnce } from "@vueuse/core";
@@ -119,6 +118,7 @@ export interface Props {
119
118
  version?: string;
120
119
  theme?: "light" | "dark";
121
120
  title?: string;
121
+ disableMenu?: boolean;
122
122
  }
123
123
 
124
124
  defineOptions({
@@ -128,7 +128,6 @@ defineOptions({
128
128
  defineSlots<{
129
129
  "app-switcher": void;
130
130
  toolbar: void;
131
- "navigation-menu": void;
132
131
  "toolbar:prepend": void;
133
132
  "toolbar:language-selector": void;
134
133
  "toolbar:notifications-dropdown": void;
@@ -145,7 +144,7 @@ const router = useRouter();
145
144
 
146
145
  const { openBlade, closeBlade, resolveBladeByName, blades } = useBladeNavigation();
147
146
  const { appsList, switchApp, getApps } = useAppSwitcher();
148
- const { locale: currentLocale } = useI18n({ useScope: "global" });
147
+
149
148
  const { loadFromHistory } = useNotifications();
150
149
  const route = useRoute();
151
150
  const { isAuthenticated } = useUser();
@@ -165,10 +164,6 @@ const onMenuItemClick = function (item: MenuItem) {
165
164
  }
166
165
  };
167
166
 
168
- function langInit() {
169
- currentLocale.value = localStorage.getItem("VC_LANGUAGE_SETTINGS") ?? "en";
170
- }
171
-
172
167
  const openRoot = async () => {
173
168
  router.push("/");
174
169
  };
@@ -177,7 +172,6 @@ watchOnce(
177
172
  () => props.isReady,
178
173
  async (newVal) => {
179
174
  if (isAuthenticated.value && newVal) {
180
- langInit();
181
175
  await loadFromHistory();
182
176
  await getApps();
183
177
  }
@@ -1,7 +0,0 @@
1
- import { useI18n as VueUseI18n } from "vue-i18n";
2
-
3
- /** @deprecated use `useI18n({ useScope: "global" })` directly from `vue-i18n` */
4
- export function useI18n() {
5
- console.debug(`[@vc-shell/framework#useI18n] - Entry point`);
6
- return VueUseI18n({ useScope: "global" });
7
- }
@@ -1,3 +0,0 @@
1
- /** @deprecated use `useI18n({ useScope: "global" })` directly from `vue-i18n` */
2
- export declare function useI18n(): import("vue-i18n").Composer<{}, {}, {}, string, never, string>;
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../core/composables/useI18n/index.ts"],"names":[],"mappings":"AAEA,iFAAiF;AACjF,wBAAgB,OAAO,mEAGtB"}