@vc-shell/framework 1.0.290 → 1.0.291

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 (175) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/core/composables/index.ts +1 -0
  3. package/core/composables/useTheme/index.ts +60 -0
  4. package/core/directives/loading/styles.css +6 -1
  5. package/dist/core/composables/index.d.ts +1 -0
  6. package/dist/core/composables/index.d.ts.map +1 -1
  7. package/dist/core/composables/useTheme/index.d.ts +11 -0
  8. package/dist/core/composables/useTheme/index.d.ts.map +1 -0
  9. package/dist/framework.js +27885 -27365
  10. package/dist/index.css +1 -1
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/locales/en.json +6 -0
  13. package/dist/shared/components/app-bar-button/app-bar-button.vue.d.ts +56 -0
  14. package/dist/shared/components/app-bar-button/app-bar-button.vue.d.ts.map +1 -0
  15. package/dist/shared/components/app-bar-button/index.d.ts +2 -0
  16. package/dist/shared/components/app-bar-button/index.d.ts.map +1 -0
  17. package/dist/shared/components/app-switcher/components/vc-app-switcher/vc-app-switcher.vue.d.ts.map +1 -1
  18. package/dist/shared/components/blade-navigation/composables/useBladeNavigation/index.d.ts.map +1 -1
  19. package/dist/shared/components/index.d.ts +3 -0
  20. package/dist/shared/components/index.d.ts.map +1 -1
  21. package/dist/shared/components/language-selector/language-selector.vue.d.ts.map +1 -1
  22. package/dist/shared/components/notification-dropdown/notification-dropdown.vue.d.ts.map +1 -1
  23. package/dist/shared/components/notification-template/notification-template.vue.d.ts.map +1 -1
  24. package/dist/shared/components/sidebar/index.d.ts +2 -0
  25. package/dist/shared/components/sidebar/index.d.ts.map +1 -0
  26. package/dist/shared/components/sidebar/sidebar.vue.d.ts +49 -0
  27. package/dist/shared/components/sidebar/sidebar.vue.d.ts.map +1 -0
  28. package/dist/shared/components/theme-selector/index.d.ts +2 -0
  29. package/dist/shared/components/theme-selector/index.d.ts.map +1 -0
  30. package/dist/shared/components/theme-selector/theme-selector.vue.d.ts +3 -0
  31. package/dist/shared/components/theme-selector/theme-selector.vue.d.ts.map +1 -0
  32. package/dist/shared/components/user-dropdown-button/user-dropdown-button.vue.d.ts.map +1 -1
  33. package/dist/shared/modules/dynamic/pages/dynamic-blade-list.vue.d.ts.map +1 -1
  34. package/dist/shared/modules/dynamic/types/index.d.ts +3 -0
  35. package/dist/shared/modules/dynamic/types/index.d.ts.map +1 -1
  36. package/dist/shared/pages/ChangePasswordPage/components/change-password/ChangePassword.vue.d.ts +16 -3
  37. package/dist/shared/pages/ChangePasswordPage/components/change-password/ChangePassword.vue.d.ts.map +1 -1
  38. package/dist/shared/pages/ChangePasswordPage/components/change-password/index.d.ts +7 -7
  39. package/dist/shared/pages/ChangePasswordPage/components/change-password/index.d.ts.map +1 -1
  40. package/dist/shared/pages/InvitePage/components/invite/Invite.vue.d.ts +24 -3
  41. package/dist/shared/pages/InvitePage/components/invite/Invite.vue.d.ts.map +1 -1
  42. package/dist/shared/pages/InvitePage/components/invite/index.d.ts +24 -1
  43. package/dist/shared/pages/InvitePage/components/invite/index.d.ts.map +1 -1
  44. package/dist/shared/pages/ResetPasswordPage/components/reset-password/ResetPassword.vue.d.ts +24 -3
  45. package/dist/shared/pages/ResetPasswordPage/components/reset-password/ResetPassword.vue.d.ts.map +1 -1
  46. package/dist/shared/pages/ResetPasswordPage/components/reset-password/index.d.ts +24 -1
  47. package/dist/shared/pages/ResetPasswordPage/components/reset-password/index.d.ts.map +1 -1
  48. package/dist/tailwind.config.d.ts +42 -15
  49. package/dist/tailwind.config.d.ts.map +1 -1
  50. package/dist/tsconfig.tsbuildinfo +1 -1
  51. package/dist/ui/components/atoms/vc-badge/vc-badge.vue.d.ts.map +1 -1
  52. package/dist/ui/components/atoms/vc-link/vc-link.vue.d.ts.map +1 -1
  53. package/dist/ui/components/atoms/vc-progress/vc-progress.vue.d.ts.map +1 -1
  54. package/dist/ui/components/atoms/vc-status/vc-status.vue.d.ts.map +1 -1
  55. package/dist/ui/components/atoms/vc-tooltip/vc-tooltip.vue.d.ts.map +1 -1
  56. package/dist/ui/components/atoms/vc-video/vc-video.vue.d.ts.map +1 -1
  57. package/dist/ui/components/molecules/vc-breadcrumbs/vc-breadcrumbs.vue.d.ts.map +1 -1
  58. package/dist/ui/components/molecules/vc-checkbox/vc-checkbox.vue.d.ts.map +1 -1
  59. package/dist/ui/components/molecules/vc-field/_internal/vc-field-type/vc-field-type.vue.d.ts.map +1 -1
  60. package/dist/ui/components/molecules/vc-field/vc-field.vue.d.ts.map +1 -1
  61. package/dist/ui/components/molecules/vc-file-upload/vc-file-upload.vue.d.ts.map +1 -1
  62. package/dist/ui/components/molecules/vc-input/vc-input.vue.d.ts.map +1 -1
  63. package/dist/ui/components/molecules/vc-slider/vc-slider.vue.d.ts.map +1 -1
  64. package/dist/ui/components/organisms/vc-app/_internal/vc-app-menu/_internal/vc-app-menu-item/_internal/vc-app-menu-link.vue.d.ts.map +1 -1
  65. package/dist/ui/components/organisms/vc-app/_internal/vc-app-menu/vc-app-menu.vue.d.ts.map +1 -1
  66. package/dist/ui/components/organisms/vc-app/vc-app.stories.d.ts +2 -0
  67. package/dist/ui/components/organisms/vc-app/vc-app.stories.d.ts.map +1 -1
  68. package/dist/ui/components/organisms/vc-app/vc-app.vue.d.ts +2 -0
  69. package/dist/ui/components/organisms/vc-app/vc-app.vue.d.ts.map +1 -1
  70. package/dist/ui/components/organisms/vc-blade/_internal/vc-blade-header/vc-blade-header.vue.d.ts.map +1 -1
  71. package/dist/ui/components/organisms/vc-blade/_internal/vc-blade-toolbar/_internal/vc-blade-toolbar-button/vc-blade-toolbar-button.vue.d.ts.map +1 -1
  72. package/dist/ui/components/organisms/vc-blade/_internal/vc-blade-toolbar/vc-blade-toolbar.vue.d.ts.map +1 -1
  73. package/dist/ui/components/organisms/vc-gallery/_internal/vc-gallery-preview/vc-gallery-preview.vue.d.ts.map +1 -1
  74. package/dist/ui/components/organisms/vc-table/_internal/vc-table-add-new/vc-table-add-new.vue.d.ts.map +1 -1
  75. package/dist/ui/components/organisms/vc-table/_internal/vc-table-base-header/vc-table-base-header.vue.d.ts +1 -0
  76. package/dist/ui/components/organisms/vc-table/_internal/vc-table-base-header/vc-table-base-header.vue.d.ts.map +1 -1
  77. package/dist/ui/components/organisms/vc-table/_internal/vc-table-cell/vc-table-cell.vue.d.ts.map +1 -1
  78. package/dist/ui/components/organisms/vc-table/_internal/vc-table-empty/vc-table-empty.vue.d.ts.map +1 -1
  79. package/dist/ui/components/organisms/vc-table/_internal/vc-table-filter/vc-table-filter.vue.d.ts +1 -0
  80. package/dist/ui/components/organisms/vc-table/_internal/vc-table-filter/vc-table-filter.vue.d.ts.map +1 -1
  81. package/dist/ui/components/organisms/vc-table/_internal/vc-table-mobile-item/vc-table-mobile-item.vue.d.ts.map +1 -1
  82. package/dist/ui/components/organisms/vc-table/vc-table.stories.d.ts +15 -0
  83. package/dist/ui/components/organisms/vc-table/vc-table.stories.d.ts.map +1 -1
  84. package/dist/ui/components/organisms/vc-table/vc-table.vue.d.ts +3 -0
  85. package/dist/ui/components/organisms/vc-table/vc-table.vue.d.ts.map +1 -1
  86. package/package.json +4 -4
  87. package/shared/components/app-bar-button/app-bar-button.vue +169 -0
  88. package/shared/components/app-bar-button/index.ts +1 -0
  89. package/shared/components/app-switcher/components/vc-app-switcher/vc-app-switcher.vue +138 -38
  90. package/shared/components/blade-navigation/components/vc-blade-navigation/vc-blade-navigation.vue +10 -1
  91. package/shared/components/blade-navigation/composables/useBladeNavigation/index.ts +55 -30
  92. package/shared/components/change-password/change-password.vue +7 -1
  93. package/shared/components/common/popup/vc-popup-error.vue +1 -1
  94. package/shared/components/common/popup/vc-popup-warning.vue +1 -1
  95. package/shared/components/index.ts +3 -0
  96. package/shared/components/language-selector/language-selector.vue +55 -39
  97. package/shared/components/notification-dropdown/_internal/notification/notification.vue +7 -1
  98. package/shared/components/notification-dropdown/notification-dropdown.vue +96 -83
  99. package/shared/components/notification-template/notification-template.vue +66 -22
  100. package/shared/components/notifications/styles/index.scss +1 -0
  101. package/shared/components/sidebar/index.ts +1 -0
  102. package/shared/components/sidebar/sidebar.vue +96 -0
  103. package/shared/components/theme-selector/index.ts +1 -0
  104. package/shared/components/theme-selector/theme-selector.vue +95 -0
  105. package/shared/components/user-dropdown-button/user-dropdown-button.vue +139 -86
  106. package/shared/modules/assets/components/assets-details/assets-details.vue +9 -2
  107. package/shared/modules/assets-manager/components/assets-manager/assets-manager.vue +16 -6
  108. package/shared/modules/dynamic/composables/useFilterBuilder/index.ts +1 -1
  109. package/shared/modules/dynamic/helpers/nodeBuilder.ts +1 -1
  110. package/shared/modules/dynamic/pages/dynamic-blade-form.vue +6 -2
  111. package/shared/modules/dynamic/pages/dynamic-blade-list.vue +16 -2
  112. package/shared/modules/dynamic/types/index.ts +3 -0
  113. package/shared/pages/ChangePasswordPage/components/change-password/ChangePassword.vue +14 -9
  114. package/shared/pages/InvitePage/components/invite/Invite.vue +59 -15
  115. package/shared/pages/LoginPage/components/login/Login.vue +78 -22
  116. package/shared/pages/ResetPasswordPage/components/reset-password/ResetPassword.vue +67 -15
  117. package/tailwind.config.ts +281 -15
  118. package/ui/components/atoms/vc-badge/vc-badge.vue +38 -23
  119. package/ui/components/atoms/vc-button/vc-button.vue +37 -34
  120. package/ui/components/atoms/vc-card/vc-card.vue +17 -11
  121. package/ui/components/atoms/vc-col/vc-col.vue +4 -6
  122. package/ui/components/atoms/vc-container/vc-container.vue +26 -8
  123. package/ui/components/atoms/vc-hint/vc-hint.vue +8 -2
  124. package/ui/components/atoms/vc-icon/vc-icon.vue +3 -3
  125. package/ui/components/atoms/vc-image/vc-image.vue +33 -9
  126. package/ui/components/atoms/vc-label/vc-label.vue +38 -9
  127. package/ui/components/atoms/vc-link/vc-link.vue +15 -8
  128. package/ui/components/atoms/vc-loading/vc-loading.vue +37 -8
  129. package/ui/components/atoms/vc-progress/vc-progress.vue +29 -21
  130. package/ui/components/atoms/vc-row/vc-row.vue +4 -2
  131. package/ui/components/atoms/vc-status/vc-status.vue +29 -20
  132. package/ui/components/atoms/vc-status-icon/vc-status-icon.vue +20 -3
  133. package/ui/components/atoms/vc-switch/vc-switch.vue +41 -17
  134. package/ui/components/atoms/vc-tooltip/vc-tooltip.vue +35 -9
  135. package/ui/components/atoms/vc-video/vc-video.vue +28 -6
  136. package/ui/components/atoms/vc-widget/vc-widget.vue +59 -28
  137. package/ui/components/molecules/vc-breadcrumbs/_internal/vc-breadcrumbs-item/vc-breadcrumbs-item.vue +29 -27
  138. package/ui/components/molecules/vc-breadcrumbs/vc-breadcrumbs.vue +34 -11
  139. package/ui/components/molecules/vc-checkbox/vc-checkbox.vue +43 -21
  140. package/ui/components/molecules/vc-editor/vc-editor.vue +70 -32
  141. package/ui/components/molecules/vc-field/_internal/vc-field-type/vc-field-type.vue +32 -16
  142. package/ui/components/molecules/vc-field/vc-field.vue +36 -13
  143. package/ui/components/molecules/vc-file-upload/vc-file-upload.vue +75 -25
  144. package/ui/components/molecules/vc-input/vc-input.vue +279 -218
  145. package/ui/components/molecules/vc-input-currency/vc-input-currency.vue +24 -2
  146. package/ui/components/molecules/vc-multivalue/vc-multivalue.vue +102 -64
  147. package/ui/components/molecules/vc-notification/vc-notification.vue +40 -15
  148. package/ui/components/molecules/vc-pagination/vc-pagination.vue +19 -15
  149. package/ui/components/molecules/vc-radio-button/vc-radio-button.vue +18 -23
  150. package/ui/components/molecules/vc-rating/vc-rating.vue +9 -5
  151. package/ui/components/molecules/vc-select/vc-select.vue +211 -65
  152. package/ui/components/molecules/vc-slider/vc-slider.vue +32 -13
  153. package/ui/components/molecules/vc-textarea/vc-textarea.vue +17 -12
  154. package/ui/components/organisms/vc-app/_internal/vc-app-bar/vc-app-bar.vue +68 -14
  155. package/ui/components/organisms/vc-app/_internal/vc-app-menu/_internal/vc-app-menu-item/_internal/vc-app-menu-link.vue +112 -122
  156. package/ui/components/organisms/vc-app/_internal/vc-app-menu/vc-app-menu.vue +213 -96
  157. package/ui/components/organisms/vc-app/vc-app.vue +41 -15
  158. package/ui/components/organisms/vc-blade/_internal/vc-blade-header/vc-blade-header.vue +78 -30
  159. package/ui/components/organisms/vc-blade/_internal/vc-blade-toolbar/_internal/vc-blade-toolbar-button/vc-blade-toolbar-button.vue +81 -59
  160. package/ui/components/organisms/vc-blade/_internal/vc-blade-toolbar/vc-blade-toolbar.vue +27 -13
  161. package/ui/components/organisms/vc-blade/vc-blade.vue +177 -46
  162. package/ui/components/organisms/vc-gallery/_internal/vc-gallery-item/vc-gallery-item.vue +40 -11
  163. package/ui/components/organisms/vc-gallery/_internal/vc-gallery-preview/vc-gallery-preview.vue +52 -18
  164. package/ui/components/organisms/vc-gallery/vc-gallery.vue +38 -6
  165. package/ui/components/organisms/vc-login-form/vc-login-form.vue +40 -14
  166. package/ui/components/organisms/vc-popup/vc-popup.vue +186 -44
  167. package/ui/components/organisms/vc-table/_internal/vc-table-add-new/vc-table-add-new.vue +25 -6
  168. package/ui/components/organisms/vc-table/_internal/vc-table-base-header/vc-table-base-header.vue +48 -12
  169. package/ui/components/organisms/vc-table/_internal/vc-table-cell/vc-table-cell.vue +130 -60
  170. package/ui/components/organisms/vc-table/_internal/vc-table-column-switcher/vc-table-column-switcher.vue +55 -7
  171. package/ui/components/organisms/vc-table/_internal/vc-table-counter/vc-table-counter.vue +17 -5
  172. package/ui/components/organisms/vc-table/_internal/vc-table-empty/vc-table-empty.vue +38 -6
  173. package/ui/components/organisms/vc-table/_internal/vc-table-filter/vc-table-filter.vue +111 -62
  174. package/ui/components/organisms/vc-table/_internal/vc-table-mobile-item/vc-table-mobile-item.vue +139 -46
  175. package/ui/components/organisms/vc-table/vc-table.vue +370 -128
@@ -1,72 +1,83 @@
1
1
  <template>
2
- <div
3
- v-on-click-outside="onClose"
4
- class="user-dropdown-button"
5
- :class="{
6
- 'user-dropdown-button_active': accountMenuVisible,
7
- 'tw-w-auto': disabled,
8
- }"
9
- @click.stop="toggleAccountMenuVisible"
2
+ <AppBarButtonTemplate
3
+ position="bottom-start"
4
+ :before-open="beforeOpen"
10
5
  >
11
- <div class="user-dropdown-button__wrap tw-flex tw-justify-between tw-items-center tw-flex-auto">
6
+ <template #button="{ opened }">
12
7
  <div
13
- v-if="avatarUrl"
14
- class="user-dropdown-button__avatar"
15
- :style="imageHandler"
16
- ></div>
17
- <VcIcon
18
- v-else
19
- icon="fas fa-user-circle"
20
- size="xxl"
21
- class="tw-text-[color:var(--app-bar-button-color)]"
22
- />
23
- <div class="tw-grow tw-basis-0 tw-ml-3 tw-overflow-hidden">
24
- <div class="user-dropdown-button__name tw-truncate">
25
- {{ name || user?.userName }}
26
- </div>
27
- <div class="user-dropdown-button__role">
28
- {{
29
- (role && $t(`SHELL.USER.ROLE.${role}`)) ||
30
- (user?.isAdministrator ? $t("SHELL.USER.ROLE.ADMINISTRATOR") : "")
31
- }}
32
- </div>
33
- </div>
34
- <div
35
- v-if="!disabled && menu && menu.length"
36
- class="user-dropdown-button__chevron"
8
+ class="vc-user-dropdown-button"
9
+ :class="{
10
+ 'vc-user-dropdown-button--active': opened,
11
+ 'vc-user-dropdown-button--auto-width': disabled,
12
+ }"
37
13
  >
38
- <VcIcon
39
- icon="fas fa-chevron-down"
40
- size="xl"
41
- ></VcIcon>
14
+ <div
15
+ class="vc-user-dropdown-button__wrap"
16
+ :class="{
17
+ 'vc-user-dropdown-button__wrap--active': opened,
18
+ }"
19
+ >
20
+ <div
21
+ v-if="avatarUrl"
22
+ class="vc-user-dropdown-button__avatar"
23
+ :style="imageHandler"
24
+ ></div>
25
+ <VcIcon
26
+ v-else
27
+ icon="fas fa-user-circle"
28
+ size="xxl"
29
+ class="vc-user-dropdown-button__icon"
30
+ />
31
+ <div class="vc-user-dropdown-button__info">
32
+ <div class="vc-user-dropdown-button__name">
33
+ {{ name || user?.userName }}
34
+ </div>
35
+ <div class="vc-user-dropdown-button__role">
36
+ {{
37
+ (role && $t(`SHELL.USER.ROLE.${role}`)) ||
38
+ (user?.isAdministrator ? $t("SHELL.USER.ROLE.ADMINISTRATOR") : "")
39
+ }}
40
+ </div>
41
+ </div>
42
+ <div
43
+ v-if="!disabled && menu && menu.length"
44
+ class="vc-user-dropdown-button__chevron"
45
+ >
46
+ <VcIcon
47
+ icon="fas fa-chevron-down"
48
+ size="xl"
49
+ ></VcIcon>
50
+ </div>
51
+ </div>
42
52
  </div>
43
- </div>
44
- <div
45
- v-if="menu && accountMenuVisible"
46
- class="user-dropdown-button__menu"
47
- @click.stop="accountMenuVisible = false"
48
- >
53
+ </template>
54
+ <template #dropdown-content="{ opened, toggle }">
49
55
  <div
50
- v-for="(item, i) in menu"
51
- :key="`menu_item_${i}`"
52
- class="user-dropdown-button__menu-item tw-group"
53
- @click="item.hasOwnProperty('clickHandler') ? item.clickHandler?.() : null"
56
+ v-if="menu && opened"
57
+ class="vc-user-dropdown-button__menu"
58
+ @click.stop="toggle"
54
59
  >
55
- <VcIcon
56
- v-if="item.icon"
57
- :icon="item.icon"
58
- size="l"
59
- class="tw-mr-3 tw-text-[color:var(--app-bar-button-color)] group-hover:tw-text-[color:var(--app-bar-button-color-hover)]"
60
- ></VcIcon>
61
- <p>{{ item.title }}</p>
60
+ <div
61
+ v-for="(item, i) in menu"
62
+ :key="`menu_item_${i}`"
63
+ class="vc-user-dropdown-button__menu-item"
64
+ @click="item.hasOwnProperty('clickHandler') ? item.clickHandler?.() : null"
65
+ >
66
+ <VcIcon
67
+ v-if="item.icon"
68
+ :icon="item.icon"
69
+ size="l"
70
+ class="vc-user-dropdown-button__menu-icon"
71
+ ></VcIcon>
72
+ <p>{{ item.title }}</p>
73
+ </div>
62
74
  </div>
63
- </div>
64
- </div>
75
+ </template>
76
+ </AppBarButtonTemplate>
65
77
  </template>
66
78
 
67
79
  <script lang="ts" setup>
68
80
  import { computed, ref } from "vue";
69
- import { vOnClickOutside } from "@vueuse/components";
70
81
  import { useUser } from "../../../core/composables";
71
82
  import { useRouter } from "vue-router";
72
83
  import { useI18n } from "vue-i18n";
@@ -75,6 +86,7 @@ import { BladeMenu } from "../../../core/types";
75
86
  import { usePopup } from "../popup-handler/composables/usePopup";
76
87
  import { ChangePassword } from "../change-password";
77
88
  import { useBladeNavigation } from "..";
89
+ import { AppBarButtonTemplate } from "./../app-bar-button";
78
90
 
79
91
  export interface Props {
80
92
  avatarUrl?: string | undefined;
@@ -96,7 +108,7 @@ const { open } = usePopup({
96
108
  component: ChangePassword,
97
109
  });
98
110
  const { closeBlade } = useBladeNavigation();
99
- const accountMenuVisible = ref(false);
111
+
100
112
  const defaultMenuItems = ref([
101
113
  {
102
114
  title: t("SHELL.ACCOUNT.CHANGE_PASSWORD"),
@@ -135,15 +147,9 @@ function handleDefaultMenuItems() {
135
147
  return defaultMenuItems.value;
136
148
  }
137
149
 
138
- const toggleAccountMenuVisible = () => {
139
- if (!props.disabled && menu.value && menu.value.length) {
140
- accountMenuVisible.value = !accountMenuVisible.value;
141
- }
142
- };
143
-
144
- const onClose = () => {
145
- accountMenuVisible.value = false;
146
- };
150
+ function beforeOpen() {
151
+ return !props.disabled && menu.value?.length > 0;
152
+ }
147
153
 
148
154
  const imageHandler = computed(() => {
149
155
  if (props.avatarUrl) {
@@ -154,53 +160,96 @@ const imageHandler = computed(() => {
154
160
  </script>
155
161
 
156
162
  <style lang="scss">
157
- .user-dropdown-button {
158
- @apply tw-w-[240px] tw-border-l tw-border-solid tw-border-l-[color:var(--app-bar-divider-color)] tw-px-4 tw-cursor-pointer
159
- tw-relative tw-flex tw-h-full tw-flex-col tw-select-none;
163
+ :root {
164
+ --user-dropdown-account-info-name-color: var(--base-text-color, var(--neutrals-950));
165
+ --user-dropdown-account-info-role-color: var(--secondary-600);
166
+ --user-dropdown-divider-color: var(--base-border-color, var(--neutrals-200));
167
+ --user-dropdown-border-color: var(--app-bar-divider-color);
168
+ --user-dropdown-button-color: var(--primary-500);
169
+ --user-dropdown-button-color-hover: var(--primary-700);
170
+ --user-dropdown-menu-item-bg-hover: var(--primary-50);
171
+ --user-dropdown-menu-item-bg: var(--additional-50);
172
+ --user-dropdown-menu-text-color: var(--additional-950);
173
+ --user-dropdown-chevron-color: var(--secondary-600);
174
+ --user-dropdown-chevron-color-hover: var(--secondary-700);
175
+ --user-dropdown-wrap-bg: var(--additional-50);
176
+ }
177
+
178
+ .vc-user-dropdown-button {
179
+ @apply tw-w-[240px] tw-border-l tw-border-solid tw-border-l-[color:var(--user-dropdown-border-color)] tw-cursor-pointer
180
+ tw-relative tw-flex tw-h-full tw-flex-col tw-select-none;
181
+
182
+ .vc-app_mobile & {
183
+ @apply tw-w-full #{!important};
184
+ }
185
+
186
+ &--auto-width {
187
+ @apply tw-w-auto;
188
+ }
160
189
 
161
- &:hover,
162
- &_active {
163
- @apply tw-bg-[color:var(--app-bar-toolbar-icon-background-hover)];
190
+ &__wrap {
191
+ @apply tw-flex tw-justify-between tw-items-center tw-flex-auto tw-px-4 tw-bg-[--user-dropdown-wrap-bg];
164
192
  }
165
193
 
166
194
  &__avatar {
167
- @apply tw-rounded-full tw-overflow-hidden tw-w-[34px] tw-h-[34px] tw-bg-[color:var(--app-bar-account-info-role-color)]
168
- tw-bg-cover tw-bg-center tw-shrink-0;
195
+ @apply tw-rounded-full tw-overflow-hidden tw-w-[34px] tw-h-[34px] tw-bg-[color:var(--user-dropdown-account-info-role-color)]
196
+ tw-bg-cover tw-bg-center tw-shrink-0;
197
+ }
198
+
199
+ &__icon {
200
+ @apply tw-text-[color:var(--user-dropdown-button-color)];
201
+ }
202
+
203
+ &__info {
204
+ @apply tw-grow tw-basis-0 tw-ml-3 tw-overflow-hidden;
169
205
  }
170
206
 
171
207
  &__name {
172
- @apply tw-text-base tw-text-[color:var(--app-bar-account-info-name-color)];
208
+ @apply tw-text-sm tw-text-[color:var(--user-dropdown-account-info-name-color)] tw-truncate;
173
209
  }
174
210
 
175
211
  &__role {
176
- @apply tw-text-base tw-text-[color:var(--app-bar-account-info-role-color)];
212
+ @apply tw-text-sm tw-text-[color:var(--user-dropdown-account-info-role-color)];
177
213
  }
178
214
 
179
215
  &__chevron {
180
- @apply tw-text-[#7e8e9d] [transition:color_0.2s_ease];
216
+ @apply tw-text-[color:var(--user-dropdown-chevron-color)] tw-transition-colors tw-duration-200;
181
217
  }
182
218
 
183
219
  &:hover &__chevron {
184
- @apply tw-text-[color:#34414f];
220
+ @apply tw-text-[color:var(--user-dropdown-chevron-color-hover)];
185
221
  }
186
222
 
187
- &_active &__chevron {
223
+ &--active &__chevron {
188
224
  @apply -tw-scale-y-100;
189
225
  }
190
226
 
191
227
  &__menu {
192
- @apply tw-absolute -tw-left-px tw-right-0 tw-top-[var(--app-bar-height)] tw-bg-white tw-z-[10000] tw-shadow-[0_-6px_6px_white,1px_1px_22px_rgba(126,142,157,0.2)];
228
+ @apply tw-w-full;
193
229
 
194
230
  &-item {
195
- @apply tw-p-3 tw-text-lg tw-text-black tw-border-l tw-border-solid tw-border-l-[#eef0f2] tw-border-b tw-border-b-[#eef0f2] tw-bg-white hover:tw-bg-[#eff7fc] tw-flex tw-flex-row tw-items-center;
231
+ @apply tw-p-3 tw-text-sm tw-text-[color:var(--user-dropdown-menu-text-color)] tw-border-solid tw-border-b tw-border-b-[color:var(--user-dropdown-divider-color)] tw-bg-[color:var(--user-dropdown-menu-item-bg)] tw-flex tw-flex-row tw-items-center tw-cursor-pointer;
232
+ transition: background-color 0.2s;
233
+
234
+ &:hover {
235
+ @apply tw-bg-[color:var(--user-dropdown-menu-item-bg-hover)];
236
+
237
+ .vc-user-dropdown-button__menu-icon {
238
+ @apply tw-text-[color:var(--user-dropdown-button-color-hover)];
239
+ }
240
+ }
241
+
242
+ &:last-of-type {
243
+ @apply tw-border-b-0;
244
+ }
196
245
  }
197
246
  }
198
247
 
199
- .vc-app_mobile & {
200
- &__wrap {
201
- height: var(--app-bar-height);
202
- }
248
+ &__menu-icon {
249
+ @apply tw-mr-3 tw-text-[color:var(--user-dropdown-button-color)];
250
+ }
203
251
 
252
+ .vc-app_mobile & {
204
253
  &__menu {
205
254
  @apply tw-static tw-shadow-none #{!important};
206
255
  }
@@ -208,6 +257,10 @@ const imageHandler = computed(() => {
208
257
  &__menu-item {
209
258
  @apply tw-border-none #{!important};
210
259
  }
260
+
261
+ &__wrap--active {
262
+ @apply tw-shadow-none;
263
+ }
211
264
  }
212
265
  }
213
266
  </style>
@@ -10,7 +10,7 @@
10
10
  @collapse="$emit('collapse:blade')"
11
11
  >
12
12
  <!-- Blade contents -->
13
- <div class="tw-flex tw-grow-1 tw-border-t tw-border-solid tw-border-t-[#eaedf3]">
13
+ <div class="tw-flex tw-grow-1 tw-border-t tw-border-solid tw-border-t-[--assets-details-border]">
14
14
  <div class="assets-details__content tw-grow tw-basis-0 tw-w-full">
15
15
  <VcContainer :no-padding="true">
16
16
  <div class="tw-p-4">
@@ -27,7 +27,7 @@
27
27
  <template v-else>
28
28
  <VcIcon
29
29
  :icon="getFileThumbnail(defaultAsset.name)"
30
- class="tw-text-[#a9bfd2] tw-text-[128px] tw-shrink-0"
30
+ class="tw-text-[color:var(--assets-details-thumbnail-color)] tw-text-[128px] tw-shrink-0"
31
31
  ></VcIcon>
32
32
  </template>
33
33
  <VcCol class="tw-ml-6">
@@ -217,3 +217,10 @@ function openLink(link: string | undefined) {
217
217
  location.href = link;
218
218
  }
219
219
  </script>
220
+
221
+ <style lang="scss">
222
+ :root {
223
+ --assets-details-border: var(--base-border-color, var(--neutrals-200));
224
+ --assets-details-thumbnail-color: var(--secondary-500);
225
+ }
226
+ </style>
@@ -38,15 +38,15 @@
38
38
  <template v-if="!readonly">
39
39
  <VcIcon
40
40
  icon="fas fa-cloud-upload-alt"
41
- class="tw-text-[100px] tw-text-[#41afe6]"
41
+ class="tw-text-[100px] tw-text-[color:var(--assets-manager-empty-icon-color)]"
42
42
  ></VcIcon>
43
- <div class="tw-m-4 tw-text-xl tw-font-medium tw-text-center">
43
+ <div class="tw-m-4 tw-text-l 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 tw-text-center">
49
+ <div class="tw-m-4 tw-text-l tw-font-medium tw-text-center">
50
50
  {{ t("ASSETS_MANAGER.EMPTY.NO_ASSETS") }}
51
51
  </div>
52
52
  </template>
@@ -75,7 +75,7 @@
75
75
  <template v-else>
76
76
  <VcIcon
77
77
  :icon="getFileThumbnail(item.name ?? '')"
78
- class="tw-text-[#a9bfd2] tw-text-[38px]"
78
+ class="tw-text-[color:var(--assets-manager-thumbnail-color)] tw-text-[38px]"
79
79
  ></VcIcon>
80
80
  </template>
81
81
  </div>
@@ -90,7 +90,9 @@
90
90
 
91
91
  <!-- Mobile -->
92
92
  <template #mobile-item="{ item }">
93
- <div class="tw-border-b tw-border-solid tw-border-b-[#e3e7ec] tw-p-3 tw-flex tw-flex-nowrap">
93
+ <div
94
+ class="tw-border-b tw-border-solid tw-border-b-[--assets-manager-mobile-border] tw-p-3 tw-flex tw-flex-nowrap"
95
+ >
94
96
  <template v-if="isImage(item.name ?? '')">
95
97
  <VcImage
96
98
  :bordered="true"
@@ -104,7 +106,7 @@
104
106
  <div class="tw-w-12 tw-flex tw-items-center tw-justify-center">
105
107
  <VcIcon
106
108
  :icon="getFileThumbnail(item.name ?? '')"
107
- class="tw-text-[#a9bfd2] tw-w-12 tw-text-[48px]"
109
+ class="tw-text-[color:var(--assets-manager-thumbnail-color)] tw-w-12 tw-text-[48px]"
108
110
  ></VcIcon>
109
111
  </div>
110
112
  </template>
@@ -404,3 +406,11 @@ defineExpose({
404
406
  title: t("ASSETS_MANAGER.TITLE"),
405
407
  });
406
408
  </script>
409
+
410
+ <style lang="scss">
411
+ :root {
412
+ --assets-manager-empty-icon-color: var(--primary-400);
413
+ --assets-manager-thumbnail-color: var(--secondary-500);
414
+ --assets-manager-mobile-border: var(--info-100);
415
+ }
416
+ </style>
@@ -349,7 +349,7 @@ export default <Query>(args: {
349
349
  title
350
350
  ? h(
351
351
  "div",
352
- { class: "tw-mb-4 tw-text-[#a1c0d4] tw-font-bold tw-text-[17px]" },
352
+ { class: "tw-mb-4 tw-text-[color:var(--secondary-500)] tw-font-bold tw-text-[17px]" },
353
353
  unref(computed(() => t(title))),
354
354
  )
355
355
  : undefined,
@@ -147,7 +147,7 @@ function nodeBuilder<
147
147
  "data-test-id": controlSchema.id,
148
148
  classNames:
149
149
  "horizontalSeparator" in controlSchema && controlSchema.horizontalSeparator
150
- ? "tw-border-b tw-border-solid tw-border-b-[#e5e5e5] tw-mb-[5px] tw-pb-[21px]"
150
+ ? "tw-border-b tw-border-solid tw-border-b-[var(--base-border-color, var(--neutrals-200))] tw-mb-[5px] tw-pb-[21px]"
151
151
  : "",
152
152
  });
153
153
 
@@ -382,6 +382,10 @@ defineExpose({
382
382
  </script>
383
383
 
384
384
  <style lang="scss">
385
+ :root {
386
+ --dynamic-form-decline-color: var(--danger-500);
387
+ --dynamic-form-mobile-border: var(--primary-100);
388
+ }
385
389
  .item-details {
386
390
  &__inner {
387
391
  @apply tw-overflow-hidden tw-min-h-full tw-flex tw-grow tw-basis-0;
@@ -392,7 +396,7 @@ defineExpose({
392
396
  }
393
397
 
394
398
  &__decline-icon {
395
- @apply tw-text-[#ff4a4a] tw-mr-3;
399
+ @apply tw-text-[color:var(--dynamic-form-decline-color)] tw-mr-3;
396
400
  }
397
401
 
398
402
  .vc-app_mobile &__inner {
@@ -400,7 +404,7 @@ defineExpose({
400
404
  }
401
405
 
402
406
  .vc-app_mobile &__content {
403
- @apply tw-border-r-0 tw-border-b tw-border-solid tw-border-b-[#eaedf3] tw-overflow-visible;
407
+ @apply tw-border-r-0 tw-border-b tw-border-solid tw-border-b-[--dynamic-form-mobile-border] tw-overflow-visible;
404
408
  }
405
409
  }
406
410
  </style>
@@ -26,7 +26,7 @@
26
26
  </template>
27
27
  <template v-else>
28
28
  <div
29
- v-if="!isWidgetView && scope?.breadcrumbs"
29
+ v-if="!isWidgetView && toValue(scope?.breadcrumbs)?.length"
30
30
  :class="[
31
31
  {
32
32
  '-tw-mb-4': typeof tableData?.header === 'undefined' || tableData.header,
@@ -46,9 +46,10 @@
46
46
  :expanded="expanded"
47
47
  :total-label="$t(`${localizationPrefix}.PAGES.LIST.TABLE.TOTALS`)"
48
48
  :active-filter-count="activeFilterCount"
49
+ :disable-filter="filterDisable"
49
50
  >
50
51
  <template
51
- v-if="isFilterVisible"
52
+ v-if="isFilterVisible && bladeOptions.tableData?.filter"
52
53
  #filters="{ closePanel }"
53
54
  >
54
55
  <filterComponent :close="closePanel" />
@@ -302,6 +303,19 @@ sort.value = query.value.sort ?? "createdDate:DESC";
302
303
 
303
304
  const unreffedScope = reactiveComputed(() => toValue(scope) ?? {});
304
305
 
306
+ const filterDisable = computed(() => {
307
+ if (tableData?.value?.filter?.disabled?.method) {
308
+ const disableFilterMethod = toValue(unreffedScope)?.[tableData?.value?.filter?.disabled.method];
309
+
310
+ if (disableFilterMethod && typeof disableFilterMethod === "function") {
311
+ return disableFilterMethod();
312
+ } else {
313
+ return toValue(disableFilterMethod);
314
+ }
315
+ }
316
+ return false;
317
+ });
318
+
305
319
  const { tableTemplates } = useTableTemplates(tableData);
306
320
 
307
321
  const calculateColumns = (columns: ListContentSchema["columns"]) => {
@@ -1103,6 +1103,9 @@ export type ControlSchema =
1103
1103
  | RadioButtonSchema;
1104
1104
 
1105
1105
  export interface FilterBase {
1106
+ disabled?: {
1107
+ method: string;
1108
+ };
1106
1109
  columns: {
1107
1110
  /**
1108
1111
  * @deprecated use 'label' in 'controls' instead
@@ -1,31 +1,36 @@
1
1
  <template>
2
2
  <div
3
- class="tw-w-full tw-h-full tw-box-border tw-flex tw-flex-col tw-items-center tw-justify-center"
3
+ class="vc-change-password"
4
4
  :style="backgroundImageHandler"
5
5
  >
6
- <ChangePassComponent :forced="forced"> </ChangePassComponent>
6
+ <ChangePassComponent :forced="forced" />
7
7
  </div>
8
8
  </template>
9
9
 
10
10
  <script lang="ts" setup>
11
11
  import { computed } from "vue";
12
12
  import { useRouter } from "vue-router";
13
+ import { ChangePassword as ChangePassComponent } from "../../../../components/change-password";
13
14
 
14
15
  const router = useRouter();
15
16
 
16
17
  const forced = router.currentRoute.value.meta?.forced as boolean | undefined;
17
- const bgimage = router.currentRoute.value.meta?.bgimage;
18
-
19
- import { ChangePassword as ChangePassComponent } from "../../../../components/change-password";
20
18
 
21
19
  export interface Props {
22
- background?: string;
23
- userName?: string;
20
+ background: string;
24
21
  }
25
22
 
26
- const props = defineProps<Props>();
23
+ const props = withDefaults(defineProps<Props>(), {
24
+ background: "/assets/background.jpg",
25
+ });
27
26
 
28
27
  const backgroundImageHandler = computed(() => {
29
- return `background: url(${bgimage}) center / cover no-repeat`;
28
+ return `background: url(${props.background}) center / cover no-repeat`;
30
29
  });
31
30
  </script>
31
+
32
+ <style lang="scss">
33
+ .vc-change-password {
34
+ @apply tw-w-full tw-h-full tw-box-border tw-flex tw-flex-col tw-items-center tw-justify-center;
35
+ }
36
+ </style>