@vc-shell/framework 1.0.289 → 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 (178) hide show
  1. package/CHANGELOG.md +18 -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 +27889 -27362
  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/index.d.ts +6 -0
  33. package/dist/shared/components/user-dropdown-button/index.d.ts.map +1 -1
  34. package/dist/shared/components/user-dropdown-button/user-dropdown-button.vue.d.ts +1 -0
  35. package/dist/shared/components/user-dropdown-button/user-dropdown-button.vue.d.ts.map +1 -1
  36. package/dist/shared/modules/dynamic/pages/dynamic-blade-list.vue.d.ts.map +1 -1
  37. package/dist/shared/modules/dynamic/types/index.d.ts +3 -0
  38. package/dist/shared/modules/dynamic/types/index.d.ts.map +1 -1
  39. package/dist/shared/pages/ChangePasswordPage/components/change-password/ChangePassword.vue.d.ts +16 -3
  40. package/dist/shared/pages/ChangePasswordPage/components/change-password/ChangePassword.vue.d.ts.map +1 -1
  41. package/dist/shared/pages/ChangePasswordPage/components/change-password/index.d.ts +7 -7
  42. package/dist/shared/pages/ChangePasswordPage/components/change-password/index.d.ts.map +1 -1
  43. package/dist/shared/pages/InvitePage/components/invite/Invite.vue.d.ts +24 -3
  44. package/dist/shared/pages/InvitePage/components/invite/Invite.vue.d.ts.map +1 -1
  45. package/dist/shared/pages/InvitePage/components/invite/index.d.ts +24 -1
  46. package/dist/shared/pages/InvitePage/components/invite/index.d.ts.map +1 -1
  47. package/dist/shared/pages/ResetPasswordPage/components/reset-password/ResetPassword.vue.d.ts +24 -3
  48. package/dist/shared/pages/ResetPasswordPage/components/reset-password/ResetPassword.vue.d.ts.map +1 -1
  49. package/dist/shared/pages/ResetPasswordPage/components/reset-password/index.d.ts +24 -1
  50. package/dist/shared/pages/ResetPasswordPage/components/reset-password/index.d.ts.map +1 -1
  51. package/dist/tailwind.config.d.ts +42 -15
  52. package/dist/tailwind.config.d.ts.map +1 -1
  53. package/dist/tsconfig.tsbuildinfo +1 -1
  54. package/dist/ui/components/atoms/vc-badge/vc-badge.vue.d.ts.map +1 -1
  55. package/dist/ui/components/atoms/vc-link/vc-link.vue.d.ts.map +1 -1
  56. package/dist/ui/components/atoms/vc-progress/vc-progress.vue.d.ts.map +1 -1
  57. package/dist/ui/components/atoms/vc-status/vc-status.vue.d.ts.map +1 -1
  58. package/dist/ui/components/atoms/vc-tooltip/vc-tooltip.vue.d.ts.map +1 -1
  59. package/dist/ui/components/atoms/vc-video/vc-video.vue.d.ts.map +1 -1
  60. package/dist/ui/components/molecules/vc-breadcrumbs/vc-breadcrumbs.vue.d.ts.map +1 -1
  61. package/dist/ui/components/molecules/vc-checkbox/vc-checkbox.vue.d.ts.map +1 -1
  62. package/dist/ui/components/molecules/vc-field/_internal/vc-field-type/vc-field-type.vue.d.ts.map +1 -1
  63. package/dist/ui/components/molecules/vc-field/vc-field.vue.d.ts.map +1 -1
  64. package/dist/ui/components/molecules/vc-file-upload/vc-file-upload.vue.d.ts.map +1 -1
  65. package/dist/ui/components/molecules/vc-input/vc-input.vue.d.ts.map +1 -1
  66. package/dist/ui/components/molecules/vc-slider/vc-slider.vue.d.ts.map +1 -1
  67. 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
  68. package/dist/ui/components/organisms/vc-app/_internal/vc-app-menu/vc-app-menu.vue.d.ts.map +1 -1
  69. package/dist/ui/components/organisms/vc-app/vc-app.stories.d.ts +26 -0
  70. package/dist/ui/components/organisms/vc-app/vc-app.stories.d.ts.map +1 -1
  71. package/dist/ui/components/organisms/vc-app/vc-app.vue.d.ts +26 -0
  72. package/dist/ui/components/organisms/vc-app/vc-app.vue.d.ts.map +1 -1
  73. package/dist/ui/components/organisms/vc-blade/_internal/vc-blade-header/vc-blade-header.vue.d.ts.map +1 -1
  74. 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
  75. package/dist/ui/components/organisms/vc-blade/_internal/vc-blade-toolbar/vc-blade-toolbar.vue.d.ts.map +1 -1
  76. package/dist/ui/components/organisms/vc-gallery/_internal/vc-gallery-preview/vc-gallery-preview.vue.d.ts.map +1 -1
  77. package/dist/ui/components/organisms/vc-table/_internal/vc-table-add-new/vc-table-add-new.vue.d.ts.map +1 -1
  78. package/dist/ui/components/organisms/vc-table/_internal/vc-table-base-header/vc-table-base-header.vue.d.ts +1 -0
  79. package/dist/ui/components/organisms/vc-table/_internal/vc-table-base-header/vc-table-base-header.vue.d.ts.map +1 -1
  80. package/dist/ui/components/organisms/vc-table/_internal/vc-table-cell/vc-table-cell.vue.d.ts.map +1 -1
  81. package/dist/ui/components/organisms/vc-table/_internal/vc-table-empty/vc-table-empty.vue.d.ts.map +1 -1
  82. package/dist/ui/components/organisms/vc-table/_internal/vc-table-filter/vc-table-filter.vue.d.ts +1 -0
  83. package/dist/ui/components/organisms/vc-table/_internal/vc-table-filter/vc-table-filter.vue.d.ts.map +1 -1
  84. package/dist/ui/components/organisms/vc-table/_internal/vc-table-mobile-item/vc-table-mobile-item.vue.d.ts.map +1 -1
  85. package/dist/ui/components/organisms/vc-table/vc-table.stories.d.ts +15 -0
  86. package/dist/ui/components/organisms/vc-table/vc-table.stories.d.ts.map +1 -1
  87. package/dist/ui/components/organisms/vc-table/vc-table.vue.d.ts +3 -0
  88. package/dist/ui/components/organisms/vc-table/vc-table.vue.d.ts.map +1 -1
  89. package/package.json +4 -4
  90. package/shared/components/app-bar-button/app-bar-button.vue +169 -0
  91. package/shared/components/app-bar-button/index.ts +1 -0
  92. package/shared/components/app-switcher/components/vc-app-switcher/vc-app-switcher.vue +138 -38
  93. package/shared/components/blade-navigation/components/vc-blade-navigation/vc-blade-navigation.vue +10 -1
  94. package/shared/components/blade-navigation/composables/useBladeNavigation/index.ts +55 -30
  95. package/shared/components/change-password/change-password.vue +7 -1
  96. package/shared/components/common/popup/vc-popup-error.vue +1 -1
  97. package/shared/components/common/popup/vc-popup-warning.vue +1 -1
  98. package/shared/components/index.ts +3 -0
  99. package/shared/components/language-selector/language-selector.vue +55 -39
  100. package/shared/components/notification-dropdown/_internal/notification/notification.vue +7 -1
  101. package/shared/components/notification-dropdown/notification-dropdown.vue +96 -83
  102. package/shared/components/notification-template/notification-template.vue +66 -22
  103. package/shared/components/notifications/styles/index.scss +1 -0
  104. package/shared/components/sidebar/index.ts +1 -0
  105. package/shared/components/sidebar/sidebar.vue +96 -0
  106. package/shared/components/theme-selector/index.ts +1 -0
  107. package/shared/components/theme-selector/theme-selector.vue +95 -0
  108. package/shared/components/user-dropdown-button/user-dropdown-button.vue +155 -86
  109. package/shared/modules/assets/components/assets-details/assets-details.vue +9 -2
  110. package/shared/modules/assets-manager/components/assets-manager/assets-manager.vue +16 -6
  111. package/shared/modules/dynamic/composables/useFilterBuilder/index.ts +1 -1
  112. package/shared/modules/dynamic/helpers/nodeBuilder.ts +1 -1
  113. package/shared/modules/dynamic/pages/dynamic-blade-form.vue +6 -2
  114. package/shared/modules/dynamic/pages/dynamic-blade-list.vue +16 -2
  115. package/shared/modules/dynamic/types/index.ts +3 -0
  116. package/shared/pages/ChangePasswordPage/components/change-password/ChangePassword.vue +14 -9
  117. package/shared/pages/InvitePage/components/invite/Invite.vue +59 -15
  118. package/shared/pages/LoginPage/components/login/Login.vue +78 -22
  119. package/shared/pages/ResetPasswordPage/components/reset-password/ResetPassword.vue +67 -15
  120. package/tailwind.config.ts +281 -15
  121. package/ui/components/atoms/vc-badge/vc-badge.vue +38 -23
  122. package/ui/components/atoms/vc-button/vc-button.vue +37 -34
  123. package/ui/components/atoms/vc-card/vc-card.vue +17 -11
  124. package/ui/components/atoms/vc-col/vc-col.vue +4 -6
  125. package/ui/components/atoms/vc-container/vc-container.vue +26 -8
  126. package/ui/components/atoms/vc-hint/vc-hint.vue +8 -2
  127. package/ui/components/atoms/vc-icon/vc-icon.vue +3 -3
  128. package/ui/components/atoms/vc-image/vc-image.vue +33 -9
  129. package/ui/components/atoms/vc-label/vc-label.vue +38 -9
  130. package/ui/components/atoms/vc-link/vc-link.vue +15 -8
  131. package/ui/components/atoms/vc-loading/vc-loading.vue +37 -8
  132. package/ui/components/atoms/vc-progress/vc-progress.vue +29 -21
  133. package/ui/components/atoms/vc-row/vc-row.vue +4 -2
  134. package/ui/components/atoms/vc-status/vc-status.vue +29 -20
  135. package/ui/components/atoms/vc-status-icon/vc-status-icon.vue +20 -3
  136. package/ui/components/atoms/vc-switch/vc-switch.vue +41 -17
  137. package/ui/components/atoms/vc-tooltip/vc-tooltip.vue +35 -9
  138. package/ui/components/atoms/vc-video/vc-video.vue +28 -6
  139. package/ui/components/atoms/vc-widget/vc-widget.vue +59 -28
  140. package/ui/components/molecules/vc-breadcrumbs/_internal/vc-breadcrumbs-item/vc-breadcrumbs-item.vue +29 -27
  141. package/ui/components/molecules/vc-breadcrumbs/vc-breadcrumbs.vue +34 -11
  142. package/ui/components/molecules/vc-checkbox/vc-checkbox.vue +43 -21
  143. package/ui/components/molecules/vc-editor/vc-editor.vue +70 -32
  144. package/ui/components/molecules/vc-field/_internal/vc-field-type/vc-field-type.vue +32 -16
  145. package/ui/components/molecules/vc-field/vc-field.vue +36 -13
  146. package/ui/components/molecules/vc-file-upload/vc-file-upload.vue +75 -25
  147. package/ui/components/molecules/vc-input/vc-input.vue +279 -218
  148. package/ui/components/molecules/vc-input-currency/vc-input-currency.vue +24 -2
  149. package/ui/components/molecules/vc-multivalue/vc-multivalue.vue +102 -64
  150. package/ui/components/molecules/vc-notification/vc-notification.vue +40 -15
  151. package/ui/components/molecules/vc-pagination/vc-pagination.vue +19 -15
  152. package/ui/components/molecules/vc-radio-button/vc-radio-button.vue +18 -23
  153. package/ui/components/molecules/vc-rating/vc-rating.vue +9 -5
  154. package/ui/components/molecules/vc-select/vc-select.vue +211 -65
  155. package/ui/components/molecules/vc-slider/vc-slider.vue +32 -13
  156. package/ui/components/molecules/vc-textarea/vc-textarea.vue +17 -12
  157. package/ui/components/organisms/vc-app/_internal/vc-app-bar/vc-app-bar.vue +68 -14
  158. package/ui/components/organisms/vc-app/_internal/vc-app-menu/_internal/vc-app-menu-item/_internal/vc-app-menu-link.vue +112 -122
  159. package/ui/components/organisms/vc-app/_internal/vc-app-menu/vc-app-menu.vue +213 -96
  160. package/ui/components/organisms/vc-app/vc-app.vue +41 -15
  161. package/ui/components/organisms/vc-blade/_internal/vc-blade-header/vc-blade-header.vue +78 -30
  162. package/ui/components/organisms/vc-blade/_internal/vc-blade-toolbar/_internal/vc-blade-toolbar-button/vc-blade-toolbar-button.vue +81 -59
  163. package/ui/components/organisms/vc-blade/_internal/vc-blade-toolbar/vc-blade-toolbar.vue +27 -13
  164. package/ui/components/organisms/vc-blade/vc-blade.vue +177 -46
  165. package/ui/components/organisms/vc-gallery/_internal/vc-gallery-item/vc-gallery-item.vue +40 -11
  166. package/ui/components/organisms/vc-gallery/_internal/vc-gallery-preview/vc-gallery-preview.vue +52 -18
  167. package/ui/components/organisms/vc-gallery/vc-gallery.vue +38 -6
  168. package/ui/components/organisms/vc-login-form/vc-login-form.vue +40 -14
  169. package/ui/components/organisms/vc-popup/vc-popup.vue +186 -44
  170. package/ui/components/organisms/vc-table/_internal/vc-table-add-new/vc-table-add-new.vue +25 -6
  171. package/ui/components/organisms/vc-table/_internal/vc-table-base-header/vc-table-base-header.vue +48 -12
  172. package/ui/components/organisms/vc-table/_internal/vc-table-cell/vc-table-cell.vue +130 -60
  173. package/ui/components/organisms/vc-table/_internal/vc-table-column-switcher/vc-table-column-switcher.vue +55 -7
  174. package/ui/components/organisms/vc-table/_internal/vc-table-counter/vc-table-counter.vue +17 -5
  175. package/ui/components/organisms/vc-table/_internal/vc-table-empty/vc-table-empty.vue +38 -6
  176. package/ui/components/organisms/vc-table/_internal/vc-table-filter/vc-table-filter.vue +111 -62
  177. package/ui/components/organisms/vc-table/_internal/vc-table-mobile-item/vc-table-mobile-item.vue +139 -46
  178. package/ui/components/organisms/vc-table/vc-table.vue +370 -128
@@ -1,69 +1,80 @@
1
1
  <template>
2
- <div class="tw-relative tw-overflow-visible">
3
- <!-- Filter button -->
4
- <div
5
- ref="filterToggle"
6
- class="tw-rounded-[3px] tw-bg-[#43b0e6] tw-flex tw-items-center tw-px-[10px] tw-text-white tw-h-[38px] tw-box-border tw-cursor-pointer"
7
- @click="openPanel"
2
+ <!-- Filter button -->
3
+ <VcButton
4
+ ref="filterToggle"
5
+ icon="fas fa-filter"
6
+ icon-size="m"
7
+ class="vc-table-filter__button"
8
+ :disabled="disabled"
9
+ @click="openPanel"
10
+ >
11
+ <template
12
+ v-if="title || counter"
13
+ #default
8
14
  >
9
- <VcIcon
10
- icon="fas fa-filter"
11
- size="m"
12
- />
13
- <span
14
- v-if="title"
15
- class="tw-ml-[10px] tw-font-medium"
16
- >
17
- {{ title }}
18
- </span>
19
- <div
20
- v-if="counter"
21
- class="tw-ml-[10px] tw-rounded-[10px] tw-bg-white tw-text-[#43b0e6] tw-h-[20px] tw-min-w-[20px] tw-leading-[20px] tw-text-center tw-font-medium"
22
- >
23
- {{ counter }}
24
- </div>
25
- </div>
26
-
27
- <!-- Filter panel -->
28
- <teleport to="body">
29
- <div
30
- v-if="isPanelVisible"
31
- ref="filterPanel"
32
- :class="{
33
- 'vc-table-filter__panel_mobile tw-fixed tw-left-0 tw-top-0 tw-w-full tw-bottom-0 tw-z-[100] tw-bg-[rgba(128,140,153,0.6)] tw-shadow-none tw-rounded-none tw-max-h-full tw-max-w-full tw-min-w-full':
34
- $isMobile.value,
35
- 'vc-table-filter__panel tw-absolute tw-max-w-[800px] tw-min-w-[400px] tw-w-0 tw-z-[100] tw-shadow-[1px_1px_11px_rgba(141,152,163,0.6)] tw-rounded-[3px] tw-overflow-hidden':
36
- !$isMobile.value,
37
- }"
38
- :style="filterStyle"
39
- @click.self="closePanel"
40
- >
15
+ <div class="vc-table-filter__button-content">
16
+ <span
17
+ v-if="title"
18
+ class="vc-table-filter__button-title"
19
+ >
20
+ {{ title }}
21
+ </span>
41
22
  <div
42
- class="vc-table-filter__panel-inner tw-bg-white tw-box-border tw-p-5 tw-flex tw-flex-col"
43
- @click.stop
23
+ v-if="counter"
24
+ class="vc-table-filter__counter"
44
25
  >
45
- <VcIcon
46
- class="vc-table-filter__panel-close tw-text-[#43b0e6] tw-cursor-pointer tw-self-end tw-shrink-0"
47
- icon="fas fa-times"
48
- size="xl"
49
- @click="closePanel"
50
- />
51
-
52
- <slot :close-panel="closePanel"></slot>
26
+ {{ counter }}
53
27
  </div>
54
28
  </div>
55
- </teleport>
56
- </div>
29
+ </template>
30
+ </VcButton>
31
+ <Sidebar
32
+ :is-expanded="$isMobile.value ? isPanelVisible : false"
33
+ position="left"
34
+ render="mobile"
35
+ @close="closePanel"
36
+ >
37
+ <template #content>
38
+ <div class="vc-table-filter">
39
+ <!-- Filter panel -->
40
+ <teleport to="body">
41
+ <div
42
+ v-if="isPanelVisible"
43
+ ref="filterPanel"
44
+ :class="panelClass"
45
+ :style="filterStyle"
46
+ @click.self="closePanel"
47
+ >
48
+ <div
49
+ class="vc-table-filter__panel-inner"
50
+ @click.stop
51
+ >
52
+ <VcIcon
53
+ class="vc-table-filter__panel-close"
54
+ icon="fas fa-times"
55
+ size="xl"
56
+ @click="closePanel"
57
+ />
58
+ <slot :close-panel="closePanel"></slot>
59
+ </div>
60
+ </div>
61
+ </teleport>
62
+ </div>
63
+ </template>
64
+ </Sidebar>
57
65
  </template>
58
66
 
59
67
  <script lang="ts" setup>
60
68
  import { ref, watch, computed, inject, Ref } from "vue";
61
69
  import { offset, autoUpdate, useFloating, UseFloatingReturn } from "@floating-ui/vue";
70
+ import { VcButton } from "./../../../../atoms/vc-button";
71
+ import { Sidebar } from "./../../../../../../shared/components";
62
72
 
63
73
  export interface Props {
64
74
  title?: string;
65
75
  counter: number;
66
76
  parentExpanded?: boolean;
77
+ disabled?: boolean;
67
78
  }
68
79
 
69
80
  defineOptions({
@@ -101,6 +112,10 @@ const filterStyle = computed(() => ({
101
112
  left: `${popper?.x.value ?? 0}px`,
102
113
  }));
103
114
 
115
+ const panelClass = computed(() => {
116
+ return isMobile.value ? "vc-table-filter__panel_mobile" : "vc-table-filter__panel";
117
+ });
118
+
104
119
  function openPanel() {
105
120
  isPanelVisible.value = !isPanelVisible.value;
106
121
  }
@@ -111,25 +126,59 @@ function closePanel() {
111
126
  </script>
112
127
 
113
128
  <style lang="scss">
129
+ :root {
130
+ --table-filter-counter-bg: var(--additional-50);
131
+ --table-filter-counter-text-color: var(--info-500);
132
+ --table-filter-mobile-panel-overlay: var(--neutral-500);
133
+ --table-filter-desktop-shadow-color: var(--additional-950);
134
+ --table-filter-desktop-shadow: 1px 1px 11px rgb(from var(--table-filter-desktop-shadow-color) r g b / 7%);
135
+ --table-filter-panel-bg: var(--additional-50);
136
+ --table-filter-close-icon-color: var(--info-500);
137
+ }
138
+
114
139
  .vc-table-filter {
115
140
  @apply tw-relative tw-overflow-visible;
116
141
 
117
- &__panel {
118
- &_mobile {
119
- .vc-table-filter__panel {
120
- &-inner {
121
- @apply tw-w-[280px] tw-h-full;
122
- }
123
-
124
- &-close {
125
- @apply tw-self-start;
126
- }
142
+ &__button-content {
143
+ @apply tw-flex tw-flex-row tw-items-center tw-gap-[10px];
144
+ }
145
+
146
+ &__button-title {
147
+ @apply tw-font-medium;
148
+ }
149
+
150
+ &__counter {
151
+ @apply tw-rounded-[10px] tw-bg-[--table-filter-counter-bg] tw-text-[var(--table-filter-counter-text-color)] tw-h-5 tw-min-w-5 tw-leading-5 tw-text-center tw-font-medium;
152
+ }
153
+
154
+ &__panel_mobile {
155
+ @apply tw-w-[300px];
156
+ .vc-table-filter__panel {
157
+ &-inner {
158
+ @apply tw-w-full tw-h-full;
127
159
  }
128
160
 
129
- .vc-row {
130
- @apply tw-block;
161
+ &-close {
162
+ @apply tw-self-start;
131
163
  }
132
164
  }
165
+
166
+ .vc-row {
167
+ @apply tw-block;
168
+ }
169
+ }
170
+
171
+ &__panel {
172
+ @apply tw-absolute tw-max-w-[800px] tw-min-w-[400px] tw-w-0 tw-z-[100] [box-shadow:var(--table-filter-desktop-shadow)] tw-rounded-[3px] tw-overflow-hidden;
173
+ }
174
+
175
+ &__panel-inner {
176
+ @apply tw-bg-[--table-filter-panel-bg] tw-box-border tw-p-5 tw-flex tw-flex-col;
177
+ box-shadow: var(--table-filter-desktop-shadow);
178
+ }
179
+
180
+ &__panel-close {
181
+ @apply tw-text-[var(--table-filter-close-icon-color)] tw-cursor-pointer tw-self-end tw-shrink-0;
133
182
  }
134
183
  }
135
184
  </style>
@@ -3,18 +3,18 @@
3
3
  ref="container"
4
4
  v-on-click-outside="reset"
5
5
  v-touch:hold="handleHold"
6
- class="vc-table-mobile tw-select-none tw-block tw-overflow-visible"
6
+ class="vc-table-mobile"
7
7
  @click="handleClick"
8
8
  @contextmenu.prevent
9
9
  >
10
10
  <div
11
11
  ref="target"
12
- class="tw-w-full tw-h-full tw-flex-shrink-0 tw-bg-white tw-flex tw-flex-row"
12
+ class="vc-table-mobile__item"
13
13
  :class="{ animated: !isSwiping, 'vc-table-mobile__item_selected': isSelected }"
14
14
  >
15
15
  <div
16
16
  v-if="anySelected"
17
- class="tw-pl-4 tw-flex tw-items-center tw-justify-center tw-border-b tw-border-solid tw-border-b-[#e3e7ec]"
17
+ class="vc-table-mobile__checkbox-container"
18
18
  >
19
19
  <VcCheckbox
20
20
  :model-value="unref(isSelected ?? false)"
@@ -22,28 +22,26 @@
22
22
  size="m"
23
23
  ></VcCheckbox>
24
24
  </div>
25
- <div class="tw-flex-auto tw-flex tw-flex-row tw-relative">
25
+ <div class="vc-table-mobile__content">
26
26
  <!-- Left swipe actions -->
27
27
  <div
28
28
  v-if="leftSwipeActions && leftSwipeActions.length && direction === 'right'"
29
- class="tw-flex-shrink-0 tw-flex tw-flex-col [justify-content:stretch] tw-bg-[#a9bfd2] tw-absolute tw-top-0 tw-bottom-0"
30
- :style="{
31
- width: actionsWidth,
32
- }"
29
+ class="vc-table-mobile__swipe-actions vc-table-mobile__swipe-actions_left"
30
+ :style="{ width: actionsWidth }"
33
31
  >
34
32
  <div
35
- class="tw-flex tw-grow tw-basis-[1] tw-flex-col tw-justify-center tw-items-center tw-text-white"
36
- :class="[`vc-table-mobile__item-action_${leftSwipeActions[0].type}`]"
33
+ class="vc-table-mobile__action"
34
+ :class="`vc-table-mobile__item-action_${leftSwipeActions[0].type}`"
37
35
  @click.stop="leftSwipeActions?.[0].clickHandler(items[index] as T, index)"
38
36
  >
39
37
  <VcIcon :icon="leftSwipeActions[0].icon" />
40
- <div class="tw-mt-1 tw-text-lg tw-text-center">
38
+ <div class="vc-table-mobile__action-title">
41
39
  {{ leftSwipeActions[0].title }}
42
40
  </div>
43
41
  </div>
44
42
  </div>
45
43
  <div
46
- class="tw-flex tw-flex-col tw-border-b tw-border-solid tw-border-b-[#e3e7ec] tw-grow"
44
+ class="vc-table-mobile__slot"
47
45
  :style="{ transform: `translateX(${left})` }"
48
46
  >
49
47
  <slot></slot>
@@ -51,20 +49,18 @@
51
49
  <!-- Item actions -->
52
50
  <div
53
51
  v-if="rightSwipeActions && rightSwipeActions.length && direction === 'left'"
54
- class="tw-flex-shrink-0 tw-flex tw-flex-col [justify-content:stretch] tw-bg-[#a9bfd2] tw-absolute tw-top-0 tw-bottom-0 tw-right-0"
55
- :style="{
56
- width: actionsWidth,
57
- }"
52
+ class="vc-table-mobile__swipe-actions vc-table-mobile__swipe-actions_right"
53
+ :style="{ width: actionsWidth }"
58
54
  >
59
55
  <div
60
- v-for="(action, index) in rightSwipeActions.slice(0, rightSwipeActions.length > 2 ? 1 : 2)"
61
- :key="`rightSwipeAction-${index}`"
62
- class="tw-flex tw-grow tw-basis-[1] tw-flex-col tw-justify-center tw-items-center tw-text-white"
63
- :class="[`vc-table-mobile__item-action_${action.type}`]"
56
+ v-for="(action, idx) in rightSwipeActions.slice(0, rightSwipeActions.length > 2 ? 1 : 2)"
57
+ :key="`rightSwipeAction-${idx}`"
58
+ class="vc-table-mobile__action"
59
+ :class="`vc-table-mobile__item-action_${action.type}`"
64
60
  @click.stop="action.clickHandler(items[index] as T, index)"
65
61
  >
66
62
  <VcIcon :icon="action.icon" />
67
- <div class="tw-mt-1 tw-text-lg tw-text-center">
63
+ <div class="vc-table-mobile__action-title">
68
64
  {{ action.title }}
69
65
  </div>
70
66
  </div>
@@ -72,11 +68,13 @@
72
68
  <!-- Other available actions -->
73
69
  <template v-if="rightSwipeActions.length > 2">
74
70
  <div
75
- class="tw-flex tw-grow tw-basis-[1] tw-flex-col tw-justify-center tw-items-center tw-text-white"
71
+ class="vc-table-mobile__action vc-table-mobile__action_more"
76
72
  @click.stop="isActionsPopupVisible = true"
77
73
  >
78
74
  <VcIcon icon="fas fa-ellipsis-h" />
79
- <div class="tw-mt-1 tw-text-lg">{{ $t("COMPONENTS.ORGANISMS.VC_TABLE.MORE") }}</div>
75
+ <div class="vc-table-mobile__action-title">
76
+ {{ $t("COMPONENTS.ORGANISMS.VC_TABLE.MORE") }}
77
+ </div>
80
78
  </div>
81
79
 
82
80
  <!-- Actions popup -->
@@ -84,36 +82,32 @@
84
82
  v-if="isActionsPopupVisible"
85
83
  to="body"
86
84
  >
87
- <div
88
- class="tw-absolute tw-left-0 tw-top-0 tw-right-0 tw-bottom-0 tw-bg-[rgba(107,121,135,0.15)] tw-flex tw-items-center tw-justify-center tw-z-[99]"
89
- >
90
- <div
91
- class="tw-bg-white tw-rounded-[6px] tw-overflow-hidden tw-p-5 tw-max-w-[80%] tw-w-[350px] tw-border tw-border-solid tw-border-[#eef0f2] tw-box-border tw-shadow-[1px_1px_22px_rgba(126,142,157,0.2)]"
92
- >
93
- <div class="tw-flex tw-w-full tw-items-center">
94
- <span class="tw-grow tw-text-[#2e3d4e] tw-text-[19px] tw-font-semibold tw-tracking-[-0.01em]">
85
+ <div class="vc-table-mobile__actions-popup-overlay">
86
+ <div class="vc-table-mobile__actions-popup">
87
+ <div class="vc-table-mobile__actions-popup-header">
88
+ <span class="vc-table-mobile__actions-popup-title">
95
89
  {{ t("COMPONENTS.ORGANISMS.VC_TABLE.ALL_ACTIONS") }}
96
90
  </span>
97
91
  <VcIcon
98
- class="tw-text-[#c2d7e4]"
92
+ class="vc-table-mobile__actions-popup-close"
99
93
  icon="fas fa-times-circle"
100
94
  size="xl"
101
95
  @click="isActionsPopupVisible = false"
102
96
  ></VcIcon>
103
97
  </div>
104
98
 
105
- <div class="tw-flex tw-flex-wrap tw-my-5 tw-justify-between">
99
+ <div class="vc-table-mobile__actions-popup-content">
106
100
  <div
107
101
  v-for="(itemAction, i) in itemActions"
108
102
  :key="i"
109
- class="tw-flex tw-grow tw-shrink-0 tw-flex-col tw-items-center tw-text-[#319ed4] tw-my-2 tw-box-border tw-p-1 tw-max-w-[80px]"
103
+ class="vc-table-mobile__actions-popup-action"
110
104
  @click="itemAction.clickHandler(items[index] as T, index)"
111
105
  >
112
106
  <VcIcon
113
107
  :icon="itemAction.icon"
114
108
  size="xl"
115
109
  ></VcIcon>
116
- <div class="tw-text-base tw-mt-2 tw-text-center">
110
+ <div class="vc-table-mobile__actions-popup-action-title">
117
111
  {{ itemAction.title }}
118
112
  </div>
119
113
  </div>
@@ -125,7 +119,7 @@
125
119
  </div>
126
120
  </div>
127
121
  </div>
128
- <div class="tw-flex tw-justify-between tw-flex-auto"></div>
122
+ <div class="vc-table-mobile__spacer"></div>
129
123
  </div>
130
124
  </template>
131
125
 
@@ -270,22 +264,121 @@ function handleClick() {
270
264
  </script>
271
265
 
272
266
  <style lang="scss">
267
+ :root {
268
+ --table-mobile-checkbox-border-color: var(--secondary-200);
269
+ --table-mobile-background-color: var(--additional-50);
270
+ --table-mobile-action-bg: var(--secondary-400);
271
+ --table-mobile-border-color: var(--secondary-200);
272
+ --table-mobile-action-text-color: var(--additional-50);
273
+ --table-mobile-action-popup-overlay: var(--neutrals-100);
274
+ --table-mobile-action-popup-bg: var(--additional-50);
275
+ --table-mobile-action-popup-shadow-color: var(--secondary-200);
276
+ --table-mobile-action-popup-shadow: 1px 1px 22px var(--table-mobile-action-popup-shadow-color);
277
+ --table-mobile-action-popup-border-color: var(--base-border-color, var(--neutrals-200));
278
+ --table-mobile-action-popup-title-color: var(--neutrals-700);
279
+ --table-mobile-action-popup-icon-color: var(--secondary-600);
280
+ --table-mobile-action-popup-action-text-color: var(--primary-500);
281
+ --table-mobile-action-success: var(--success-400);
282
+ --table-mobile-action-danger: var(--danger-500);
283
+ --table-mobile-action-selected: var(--secondary-100);
284
+ }
285
+
273
286
  .vc-table-mobile {
274
- // height: -webkit-fill-available;
287
+ @apply tw-select-none tw-block tw-overflow-visible;
288
+
275
289
  &__item {
276
- &-action {
277
- &_success {
278
- @apply tw-bg-[#87b563];
279
- }
290
+ @apply tw-w-full tw-h-full tw-flex-shrink-0 tw-bg-[--table-mobile-background-color] tw-flex tw-flex-row;
280
291
 
281
- &_danger {
282
- @apply tw-bg-[#ff4a4a];
283
- }
292
+ &.animated {
293
+ transition: transform 0.3s ease;
294
+ }
295
+
296
+ &.vc-table-mobile__item_selected {
297
+ @apply tw-bg-[--table-mobile-action-selected] #{!important};
298
+ }
299
+ }
300
+
301
+ &__checkbox-container {
302
+ @apply tw-pl-4 tw-flex tw-items-center tw-justify-center tw-border-b tw-border-solid tw-border-b-[color:var(--table-mobile-checkbox-border-color)];
303
+ }
304
+
305
+ &__content {
306
+ @apply tw-flex-auto tw-flex tw-flex-col tw-relative tw-w-full;
307
+ }
308
+
309
+ &__swipe-actions {
310
+ @apply tw-flex-shrink-0 tw-flex tw-flex-col [justify-content:stretch] tw-bg-[--table-mobile-action-bg] tw-absolute tw-top-0 tw-bottom-0;
311
+
312
+ &_left {
284
313
  }
285
314
 
286
- &_selected {
287
- @apply tw-bg-[#dfeef9] #{!important};
315
+ &_right {
316
+ @apply tw-right-0;
288
317
  }
289
318
  }
319
+
320
+ &__action {
321
+ @apply tw-flex tw-grow tw-basis-[1] tw-flex-col tw-justify-center tw-items-center tw-text-[color:var(--table-mobile-action-text-color)];
322
+ }
323
+
324
+ &__action-title {
325
+ @apply tw-mt-1 tw-text-lg tw-text-center;
326
+ }
327
+
328
+ &__item-action_success {
329
+ @apply tw-bg-[--table-mobile-action-success];
330
+ }
331
+
332
+ &__item-action_danger {
333
+ @apply tw-bg-[--table-mobile-action-danger];
334
+ }
335
+
336
+ &__item_selected {
337
+ @apply tw-bg-[--table-mobile-action-selected] #{!important};
338
+ }
339
+
340
+ &__slot {
341
+ @apply tw-flex tw-flex-col tw-border-b tw-border-solid tw-border-b-[color:var(--table-mobile-border-color)] tw-grow;
342
+ }
343
+
344
+ &__action_more {
345
+ @apply tw-text-[--table-mobile-action-text-color];
346
+ }
347
+
348
+ &__actions-popup-overlay {
349
+ @apply tw-absolute tw-left-0 tw-top-0 tw-right-0 tw-bottom-0 tw-bg-[--table-mobile-action-popup-overlay] tw-flex tw-items-center tw-justify-center tw-z-[99];
350
+ }
351
+
352
+ &__actions-popup {
353
+ @apply tw-bg-[--table-mobile-action-popup-bg] tw-rounded-[6px] tw-overflow-hidden tw-p-5 tw-max-w-[80%] tw-w-[350px] tw-border tw-border-solid tw-border-[--table-mobile-action-popup-border-color] tw-box-border [box-shadow:var(--table-mobile-action-popup-shadow)];
354
+ }
355
+
356
+ &__actions-popup-header {
357
+ @apply tw-flex tw-w-full tw-items-center;
358
+ }
359
+
360
+ &__actions-popup-title {
361
+ @apply tw-grow tw-text-[color:var(--table-mobile-action-popup-title-color)] tw-text-[19px] tw-font-semibold tw-tracking-[-0.01em];
362
+ }
363
+
364
+ &__actions-popup-close {
365
+ @apply tw-text-[color:var(--table-mobile-action-popup-icon-color)];
366
+ }
367
+
368
+ &__actions-popup-content {
369
+ @apply tw-flex tw-flex-wrap tw-my-5 tw-justify-between;
370
+ }
371
+
372
+ &__actions-popup-action {
373
+ @apply tw-flex tw-grow tw-shrink-0 tw-flex-col tw-items-center tw-text-[color:var(--table-mobile-action-popup-action-text-color)] tw-my-2 tw-box-border tw-p-1 tw-max-w-[80px];
374
+ }
375
+
376
+ &__actions-popup-action-title {
377
+ @apply tw-text-base tw-mt-2 tw-text-center;
378
+ }
379
+
380
+ &__spacer {
381
+ @apply tw-flex tw-justify-between tw-flex-auto;
382
+ }
290
383
  }
291
384
  </style>