@vc-shell/framework 1.0.222 → 1.0.224

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 (196) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/core/types/index.ts +2 -1
  3. package/dist/core/plugins/modularity/index.d.ts +3 -3
  4. package/dist/core/plugins/modularity/index.d.ts.map +1 -1
  5. package/dist/core/types/index.d.ts +2 -1
  6. package/dist/core/types/index.d.ts.map +1 -1
  7. package/dist/framework.js +22280 -22124
  8. package/dist/index.css +1 -1
  9. package/dist/index.d.ts +0 -1
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/locales/en.json +2 -1
  12. package/dist/shared/components/blade-navigation/components/vc-blade-navigation/vc-blade-navigation.vue.d.ts.map +1 -1
  13. package/dist/shared/components/blade-navigation/composables/useBladeNavigation/index.d.ts.map +1 -1
  14. package/dist/shared/components/error-interceptor/index.d.ts.map +1 -1
  15. package/dist/shared/components/notifications/components/notification-container/index.d.ts.map +1 -1
  16. package/dist/shared/modules/dynamic/components/SchemaRender.d.ts +6 -0
  17. package/dist/shared/modules/dynamic/components/SchemaRender.d.ts.map +1 -1
  18. package/dist/shared/modules/dynamic/components/fields/Button.d.ts +2 -0
  19. package/dist/shared/modules/dynamic/components/fields/Button.d.ts.map +1 -1
  20. package/dist/shared/modules/dynamic/components/fields/Card.d.ts +2 -0
  21. package/dist/shared/modules/dynamic/components/fields/Card.d.ts.map +1 -1
  22. package/dist/shared/modules/dynamic/components/fields/Checkbox.d.ts +2 -0
  23. package/dist/shared/modules/dynamic/components/fields/Checkbox.d.ts.map +1 -1
  24. package/dist/shared/modules/dynamic/components/fields/ContentField.d.ts +2 -0
  25. package/dist/shared/modules/dynamic/components/fields/ContentField.d.ts.map +1 -1
  26. package/dist/shared/modules/dynamic/components/fields/CustomComponent.d.ts +2 -0
  27. package/dist/shared/modules/dynamic/components/fields/CustomComponent.d.ts.map +1 -1
  28. package/dist/shared/modules/dynamic/components/fields/DynamicProperty.d.ts +2 -0
  29. package/dist/shared/modules/dynamic/components/fields/DynamicProperty.d.ts.map +1 -1
  30. package/dist/shared/modules/dynamic/components/fields/EditorField.d.ts +2 -0
  31. package/dist/shared/modules/dynamic/components/fields/EditorField.d.ts.map +1 -1
  32. package/dist/shared/modules/dynamic/components/fields/Fieldset.d.ts +2 -0
  33. package/dist/shared/modules/dynamic/components/fields/Fieldset.d.ts.map +1 -1
  34. package/dist/shared/modules/dynamic/components/fields/GalleryField.d.ts +2 -0
  35. package/dist/shared/modules/dynamic/components/fields/GalleryField.d.ts.map +1 -1
  36. package/dist/shared/modules/dynamic/components/fields/ImageField.d.ts +2 -0
  37. package/dist/shared/modules/dynamic/components/fields/ImageField.d.ts.map +1 -1
  38. package/dist/shared/modules/dynamic/components/fields/InputCurrency.d.ts +2 -0
  39. package/dist/shared/modules/dynamic/components/fields/InputCurrency.d.ts.map +1 -1
  40. package/dist/shared/modules/dynamic/components/fields/InputField.d.ts +2 -0
  41. package/dist/shared/modules/dynamic/components/fields/InputField.d.ts.map +1 -1
  42. package/dist/shared/modules/dynamic/components/fields/MultivalueField.d.ts +2 -0
  43. package/dist/shared/modules/dynamic/components/fields/MultivalueField.d.ts.map +1 -1
  44. package/dist/shared/modules/dynamic/components/fields/RadioButtonGroup.d.ts +2 -0
  45. package/dist/shared/modules/dynamic/components/fields/RadioButtonGroup.d.ts.map +1 -1
  46. package/dist/shared/modules/dynamic/components/fields/RatingField.d.ts +2 -0
  47. package/dist/shared/modules/dynamic/components/fields/RatingField.d.ts.map +1 -1
  48. package/dist/shared/modules/dynamic/components/fields/SelectField.d.ts +2 -0
  49. package/dist/shared/modules/dynamic/components/fields/SelectField.d.ts.map +1 -1
  50. package/dist/shared/modules/dynamic/components/fields/StatusField.d.ts +2 -0
  51. package/dist/shared/modules/dynamic/components/fields/StatusField.d.ts.map +1 -1
  52. package/dist/shared/modules/dynamic/components/fields/SwitchField.d.ts +2 -0
  53. package/dist/shared/modules/dynamic/components/fields/SwitchField.d.ts.map +1 -1
  54. package/dist/shared/modules/dynamic/components/fields/Table.d.ts +10 -8
  55. package/dist/shared/modules/dynamic/components/fields/Table.d.ts.map +1 -1
  56. package/dist/shared/modules/dynamic/components/fields/TextareaField.d.ts +2 -0
  57. package/dist/shared/modules/dynamic/components/fields/TextareaField.d.ts.map +1 -1
  58. package/dist/shared/modules/dynamic/components/fields/VideoField.d.ts +2 -0
  59. package/dist/shared/modules/dynamic/components/fields/VideoField.d.ts.map +1 -1
  60. package/dist/shared/modules/dynamic/components/fields/props.d.ts +2 -0
  61. package/dist/shared/modules/dynamic/components/fields/props.d.ts.map +1 -1
  62. package/dist/shared/modules/dynamic/components/fields/storybook/Button.stories.d.ts +15 -9
  63. package/dist/shared/modules/dynamic/components/fields/storybook/Button.stories.d.ts.map +1 -1
  64. package/dist/shared/modules/dynamic/components/fields/storybook/Card.stories.d.ts +19 -3
  65. package/dist/shared/modules/dynamic/components/fields/storybook/Card.stories.d.ts.map +1 -1
  66. package/dist/shared/modules/dynamic/components/fields/storybook/Checkbox.stories.d.ts +6 -0
  67. package/dist/shared/modules/dynamic/components/fields/storybook/Checkbox.stories.d.ts.map +1 -1
  68. package/dist/shared/modules/dynamic/components/fields/storybook/ContentField.stories.d.ts +10 -4
  69. package/dist/shared/modules/dynamic/components/fields/storybook/ContentField.stories.d.ts.map +1 -1
  70. package/dist/shared/modules/dynamic/components/fields/storybook/EditorField.stories.d.ts +7 -1
  71. package/dist/shared/modules/dynamic/components/fields/storybook/EditorField.stories.d.ts.map +1 -1
  72. package/dist/shared/modules/dynamic/components/fields/storybook/Fieldset.stories.d.ts +9 -3
  73. package/dist/shared/modules/dynamic/components/fields/storybook/Fieldset.stories.d.ts.map +1 -1
  74. package/dist/shared/modules/dynamic/components/fields/storybook/GalleryField.stories.d.ts +8 -2
  75. package/dist/shared/modules/dynamic/components/fields/storybook/GalleryField.stories.d.ts.map +1 -1
  76. package/dist/shared/modules/dynamic/components/fields/storybook/ImageField.stories.d.ts +11 -5
  77. package/dist/shared/modules/dynamic/components/fields/storybook/ImageField.stories.d.ts.map +1 -1
  78. package/dist/shared/modules/dynamic/components/fields/storybook/InputCurrency.stories.d.ts +6 -0
  79. package/dist/shared/modules/dynamic/components/fields/storybook/InputCurrency.stories.d.ts.map +1 -1
  80. package/dist/shared/modules/dynamic/components/fields/storybook/InputField.stories.d.ts +9 -3
  81. package/dist/shared/modules/dynamic/components/fields/storybook/InputField.stories.d.ts.map +1 -1
  82. package/dist/shared/modules/dynamic/components/fields/storybook/MultivalueField.stories.d.ts +10 -4
  83. package/dist/shared/modules/dynamic/components/fields/storybook/MultivalueField.stories.d.ts.map +1 -1
  84. package/dist/shared/modules/dynamic/components/fields/storybook/RadioButtonGroup.stories.d.ts +6 -0
  85. package/dist/shared/modules/dynamic/components/fields/storybook/RadioButtonGroup.stories.d.ts.map +1 -1
  86. package/dist/shared/modules/dynamic/components/fields/storybook/RatingField.stories.d.ts +8 -2
  87. package/dist/shared/modules/dynamic/components/fields/storybook/RatingField.stories.d.ts.map +1 -1
  88. package/dist/shared/modules/dynamic/components/fields/storybook/SelectField.stories.d.ts +13 -7
  89. package/dist/shared/modules/dynamic/components/fields/storybook/SelectField.stories.d.ts.map +1 -1
  90. package/dist/shared/modules/dynamic/components/fields/storybook/StatusField.stories.d.ts +9 -3
  91. package/dist/shared/modules/dynamic/components/fields/storybook/StatusField.stories.d.ts.map +1 -1
  92. package/dist/shared/modules/dynamic/components/fields/storybook/TextareaField.stories.d.ts +7 -1
  93. package/dist/shared/modules/dynamic/components/fields/storybook/TextareaField.stories.d.ts.map +1 -1
  94. package/dist/shared/modules/dynamic/components/fields/storybook/VideoField.stories.d.ts +6 -0
  95. package/dist/shared/modules/dynamic/components/fields/storybook/VideoField.stories.d.ts.map +1 -1
  96. package/dist/shared/modules/dynamic/components/fields/storybook/pages/DynamicRender.d.ts +6 -0
  97. package/dist/shared/modules/dynamic/components/fields/storybook/pages/DynamicRender.d.ts.map +1 -1
  98. package/dist/shared/modules/dynamic/composables/useFilterBuilder/index.d.ts +1 -1
  99. package/dist/shared/modules/dynamic/composables/useFilterBuilder/index.d.ts.map +1 -1
  100. package/dist/shared/modules/dynamic/composables/useToolbarReducer/index.d.ts +0 -1
  101. package/dist/shared/modules/dynamic/composables/useToolbarReducer/index.d.ts.map +1 -1
  102. package/dist/shared/modules/dynamic/factories/base/useDetailsFactory.d.ts +3 -1
  103. package/dist/shared/modules/dynamic/factories/base/useDetailsFactory.d.ts.map +1 -1
  104. package/dist/shared/modules/dynamic/factories/base/useListFactory.d.ts +1 -1
  105. package/dist/shared/modules/dynamic/factories/base/useListFactory.d.ts.map +1 -1
  106. package/dist/shared/modules/dynamic/factories/types/index.d.ts +14 -2
  107. package/dist/shared/modules/dynamic/factories/types/index.d.ts.map +1 -1
  108. package/dist/shared/modules/dynamic/helpers/nodeBuilder.d.ts.map +1 -1
  109. package/dist/shared/modules/dynamic/helpers/override.d.ts.map +1 -1
  110. package/dist/shared/modules/dynamic/helpers/visibilityHandler.d.ts.map +1 -1
  111. package/dist/shared/modules/dynamic/index.d.ts +4 -4
  112. package/dist/shared/modules/dynamic/index.d.ts.map +1 -1
  113. package/dist/shared/modules/dynamic/pages/dynamic-blade-form.vue.d.ts +2 -0
  114. package/dist/shared/modules/dynamic/pages/dynamic-blade-form.vue.d.ts.map +1 -1
  115. package/dist/shared/modules/dynamic/pages/dynamic-blade-list.vue.d.ts.map +1 -1
  116. package/dist/shared/modules/dynamic/types/index.d.ts +6 -17
  117. package/dist/shared/modules/dynamic/types/index.d.ts.map +1 -1
  118. package/dist/tsconfig.tsbuildinfo +1 -1
  119. package/dist/ui/components/atoms/vc-badge/vc-badge.stories.d.ts +4 -4
  120. package/dist/ui/components/atoms/vc-button/vc-button.stories.d.ts +11 -11
  121. package/dist/ui/components/atoms/vc-card/vc-card.stories.d.ts +7 -7
  122. package/dist/ui/components/atoms/vc-container/vc-container.vue.d.ts.map +1 -1
  123. package/dist/ui/components/atoms/vc-hint/vc-hint.stories.d.ts +1 -1
  124. package/dist/ui/components/atoms/vc-icon/vc-icon.stories.d.ts +3 -3
  125. package/dist/ui/components/atoms/vc-image/vc-image.stories.d.ts +3 -3
  126. package/dist/ui/components/atoms/vc-label/vc-label.stories.d.ts +2 -2
  127. package/dist/ui/components/atoms/vc-link/vc-link.stories.d.ts +1 -1
  128. package/dist/ui/components/atoms/vc-progress/vc-progress.stories.d.ts +2 -2
  129. package/dist/ui/components/atoms/vc-status/vc-status.stories.d.ts +4 -4
  130. package/dist/ui/components/atoms/vc-switch/vc-switch.stories.d.ts +1 -1
  131. package/dist/ui/components/molecules/vc-breadcrumbs/vc-breadcrumbs.stories.d.ts +1 -1
  132. package/dist/ui/components/molecules/vc-checkbox/vc-checkbox.stories.d.ts +10 -10
  133. package/dist/ui/components/molecules/vc-editor/vc-editor.stories.d.ts +1 -1
  134. package/dist/ui/components/molecules/vc-editor/vc-editor.vue.d.ts.map +1 -1
  135. package/dist/ui/components/molecules/vc-field/vc-field.stories.d.ts +95 -2
  136. package/dist/ui/components/molecules/vc-field/vc-field.stories.d.ts.map +1 -1
  137. package/dist/ui/components/molecules/vc-file-upload/vc-file-upload.stories.d.ts +2 -2
  138. package/dist/ui/components/molecules/vc-input/vc-input.stories.d.ts +2 -2
  139. package/dist/ui/components/molecules/vc-input-currency/vc-input-currency.stories.d.ts +2 -2
  140. package/dist/ui/components/molecules/vc-multivalue/vc-multivalue.vue.d.ts.map +1 -1
  141. package/dist/ui/components/molecules/vc-radio-button/vc-radio-button.stories.d.ts +8 -8
  142. package/dist/ui/components/molecules/vc-rating/vc-rating.stories.d.ts +1 -1
  143. package/dist/ui/components/molecules/vc-select/vc-select.vue.d.ts.map +1 -1
  144. package/dist/ui/components/molecules/vc-slider/index.d.ts.map +1 -1
  145. package/dist/ui/components/molecules/vc-slider/vc-slider.stories.d.ts +3 -3
  146. package/dist/ui/components/organisms/vc-dynamic-property/vc-dynamic-property.vue.d.ts.map +1 -1
  147. package/dist/ui/components/organisms/vc-gallery/vc-gallery.stories.d.ts +1 -1
  148. package/dist/ui/components/organisms/vc-table/_internal/vc-table-add-new/vc-table-add-new.vue.d.ts.map +1 -1
  149. package/dist/ui/components/organisms/vc-table/_internal/vc-table-cell/vc-table-cell.vue.d.ts.map +1 -1
  150. package/dist/ui/components/organisms/vc-table/_internal/vc-table-column-switcher/vc-table-column-switcher.vue.d.ts +1 -0
  151. package/dist/ui/components/organisms/vc-table/_internal/vc-table-column-switcher/vc-table-column-switcher.vue.d.ts.map +1 -1
  152. package/dist/ui/components/organisms/vc-table/_internal/vc-table-empty/vc-table-empty.vue.d.ts +42 -0
  153. package/dist/ui/components/organisms/vc-table/_internal/vc-table-empty/vc-table-empty.vue.d.ts.map +1 -0
  154. package/dist/ui/components/organisms/vc-table/_internal/vc-table-mobile-item/vc-table-mobile-item.vue.d.ts.map +1 -1
  155. package/dist/ui/components/organisms/vc-table/vc-table.stories.d.ts +15 -105
  156. package/dist/ui/components/organisms/vc-table/vc-table.stories.d.ts.map +1 -1
  157. package/dist/ui/components/organisms/vc-table/vc-table.vue.d.ts +3 -21
  158. package/dist/ui/components/organisms/vc-table/vc-table.vue.d.ts.map +1 -1
  159. package/package.json +4 -4
  160. package/shared/components/blade-navigation/components/vc-blade-navigation/vc-blade-navigation.vue +1 -0
  161. package/shared/components/blade-navigation/composables/useBladeNavigation/index.ts +20 -9
  162. package/shared/modules/dynamic/components/fields/Card.ts +1 -0
  163. package/shared/modules/dynamic/components/fields/GalleryField.ts +3 -2
  164. package/shared/modules/dynamic/components/fields/InputCurrency.ts +1 -4
  165. package/shared/modules/dynamic/components/fields/InputField.ts +1 -5
  166. package/shared/modules/dynamic/components/fields/MultivalueField.ts +1 -4
  167. package/shared/modules/dynamic/components/fields/SelectField.ts +1 -4
  168. package/shared/modules/dynamic/components/fields/Table.ts +61 -21
  169. package/shared/modules/dynamic/components/fields/storybook/Card.stories.ts +10 -0
  170. package/shared/modules/dynamic/components/fields/storybook/ContentField.stories.ts +1 -1
  171. package/shared/modules/dynamic/components/fields/storybook/Fieldset.stories.ts +1 -1
  172. package/shared/modules/dynamic/components/fields/storybook/InputField.stories.ts +1 -1
  173. package/shared/modules/dynamic/components/fields/storybook/SelectField.stories.ts +4 -4
  174. package/shared/modules/dynamic/composables/useFilterBuilder/index.ts +1 -1
  175. package/shared/modules/dynamic/composables/useToolbarReducer/index.ts +0 -14
  176. package/shared/modules/dynamic/factories/base/useDetailsFactory.ts +12 -1
  177. package/shared/modules/dynamic/factories/types/index.ts +20 -2
  178. package/shared/modules/dynamic/helpers/nodeBuilder.ts +11 -3
  179. package/shared/modules/dynamic/pages/dynamic-blade-form.vue +16 -11
  180. package/shared/modules/dynamic/pages/dynamic-blade-list.vue +37 -29
  181. package/shared/modules/dynamic/types/index.ts +6 -16
  182. package/ui/components/atoms/vc-card/vc-card.vue +2 -2
  183. package/ui/components/atoms/vc-container/vc-container.vue +71 -128
  184. package/ui/components/atoms/vc-progress/vc-progress.stories.ts +1 -1
  185. package/ui/components/atoms/vc-status/vc-status.stories.ts +1 -1
  186. package/ui/components/molecules/vc-editor/vc-editor.vue +3 -0
  187. package/ui/components/molecules/vc-field/vc-field.stories.ts +2 -2
  188. package/ui/components/molecules/vc-input/vc-input.stories.ts +1 -1
  189. package/ui/components/molecules/vc-select/vc-select.vue +3 -3
  190. package/ui/components/organisms/vc-app/vc-app.vue +2 -2
  191. package/ui/components/organisms/vc-table/_internal/vc-table-add-new/vc-table-add-new.vue +18 -20
  192. package/ui/components/organisms/vc-table/_internal/vc-table-cell/vc-table-cell.vue +23 -16
  193. package/ui/components/organisms/vc-table/_internal/vc-table-column-switcher/vc-table-column-switcher.vue +8 -1
  194. package/ui/components/organisms/vc-table/_internal/vc-table-empty/vc-table-empty.vue +76 -0
  195. package/ui/components/organisms/vc-table/_internal/vc-table-mobile-item/vc-table-mobile-item.vue +9 -7
  196. package/ui/components/organisms/vc-table/vc-table.vue +188 -358
@@ -164,11 +164,11 @@
164
164
  <!-- Select chevron-->
165
165
  <div
166
166
  v-if="!disabled"
167
- class="tw-flex tw-items-center tw-flex-nowrap tw-pl-3"
167
+ class="tw-flex tw-items-center tw-flex-nowrap tw-pl-3 tw-cursor-pointer"
168
+ @click.stop="toggleDropdown"
168
169
  >
169
170
  <div
170
- class="vc-select__chevron tw-cursor-pointer tw-flex-nowrap tw-text-[color:var(--select-chevron-color)] hover:tw-text-[color:var(--select-chevron-color-hover)]"
171
- @click.stop="toggleDropdown"
171
+ class="vc-select__chevron tw-flex-nowrap tw-text-[color:var(--select-chevron-color)] hover:tw-text-[color:var(--select-chevron-color-hover)]"
172
172
  >
173
173
  <VcIcon
174
174
  size="s"
@@ -173,7 +173,7 @@ const onMenuItemClick = function (item: MenuItem) {
173
173
  if (typeof menuRoute === "undefined") {
174
174
  openRoot();
175
175
  } else {
176
- router.replace({ name: menuRoute?.name, params: route.params });
176
+ router.push({ name: menuRoute?.name, params: route.params });
177
177
  }
178
178
  }
179
179
  };
@@ -185,7 +185,7 @@ const openRoot = async () => {
185
185
  const mainRoute = routes.find((route) => route.meta?.root);
186
186
  const mainRouteAlias = routes.find((route) => route.aliasOf?.path === mainRoute?.path) ?? mainRoute;
187
187
 
188
- router.replace({ name: mainRouteAlias?.name, params: route.params });
188
+ router.push({ name: mainRouteAlias?.name, params: route.params });
189
189
  }
190
190
  };
191
191
 
@@ -1,25 +1,23 @@
1
1
  o
2
2
  <template>
3
- <tr v-if="editing && addNewRowButton">
4
- <td>
5
- <div class="tw-p-3">
6
- <VcButton
7
- v-if="addNewRowButton.show"
8
- text
9
- @click="$emit('onAddNewRow')"
10
- >
11
- <div class="tw-flex tw-flex-row tw-gap-2 tw-items-center">
12
- <VcIcon
13
- icon="fas fa-plus"
14
- size="m"
15
- class="tw-text-[#41afe6]"
16
- />
17
- {{ unref(addNewRowButton.title) }}
18
- </div>
19
- </VcButton>
20
- </div>
21
- </td>
22
- </tr>
3
+ <div v-if="editing && addNewRowButton">
4
+ <div class="tw-p-3">
5
+ <VcButton
6
+ v-if="addNewRowButton.show"
7
+ text
8
+ @click="$emit('onAddNewRow')"
9
+ >
10
+ <div class="tw-flex tw-flex-row tw-gap-2 tw-items-center">
11
+ <VcIcon
12
+ icon="fas fa-plus"
13
+ size="m"
14
+ class="tw-text-[#41afe6]"
15
+ />
16
+ {{ unref(addNewRowButton.title) }}
17
+ </div>
18
+ </VcButton>
19
+ </div>
20
+ </div>
23
21
  </template>
24
22
 
25
23
  <script lang="ts" setup>
@@ -2,8 +2,16 @@
2
2
  <div>
3
3
  <!-- Money cell -->
4
4
  <template v-if="cell.type === 'money'">
5
+ <template v-if="!isEditable && (typeof value === 'undefined' || Number(value) === 0)">
6
+ <div
7
+ class="tw-truncate"
8
+ :class="cell.class"
9
+ >
10
+ {{ $t("COMPONENTS.ORGANISMS.VC_TABLE.NOT_SET") }}
11
+ </div>
12
+ </template>
5
13
  <div
6
- v-if="typeof Number(value) === 'number'"
14
+ v-else-if="typeof Number(value) === 'number'"
7
15
  class="tw-truncate"
8
16
  :class="cell.class"
9
17
  >
@@ -22,11 +30,12 @@
22
30
  currency-display="symbol"
23
31
  class="tw-w-full"
24
32
  :error="errors.length > 0"
33
+ :error-message="$isMobile.value ? errorMessage : undefined"
25
34
  @update:model-value="$emit('update', { field: cell.id, value: $event })"
26
35
  @blur="onBlur({ row: index, field: cell.id, errors })"
27
36
  >
28
37
  <template
29
- v-if="errors.length > 0"
38
+ v-if="$isDesktop.value && errors.length > 0"
30
39
  #append-inner
31
40
  >
32
41
  <VcTooltip placement="bottom-end">
@@ -43,14 +52,6 @@
43
52
  <span class="tw-truncate">{{ intlMoney(Number(value)) }}</span>
44
53
  </template>
45
54
  </div>
46
- <template v-else-if="!isEditable">
47
- <div
48
- class="tw-truncate"
49
- :class="cell.class"
50
- >
51
- N/A
52
- </div>
53
- </template>
54
55
  </template>
55
56
 
56
57
  <!-- Date ago cell -->
@@ -70,7 +71,7 @@
70
71
  v-else
71
72
  class="tw-truncate"
72
73
  >
73
- N/A
74
+ {{ $t("COMPONENTS.ORGANISMS.VC_TABLE.NOT_SET") }}
74
75
  </div>
75
76
  </span>
76
77
 
@@ -112,7 +113,7 @@
112
113
  v-else
113
114
  class="tw-truncate"
114
115
  >
115
- N/A
116
+ {{ $t("COMPONENTS.ORGANISMS.VC_TABLE.NOT_SET") }}
116
117
  </div>
117
118
  </div>
118
119
 
@@ -144,7 +145,7 @@
144
145
  <!-- Number cell -->
145
146
  <div
146
147
  v-else-if="cell.type === 'number'"
147
- class="tw-text-right tw-truncate"
148
+ class="tw-truncate"
148
149
  :class="cell.class"
149
150
  >
150
151
  <template v-if="isEditable">
@@ -160,11 +161,12 @@
160
161
  class="tw-w-full"
161
162
  type="number"
162
163
  :error="errors.length > 0"
164
+ :error-message="$isMobile.value ? errorMessage : undefined"
163
165
  @update:model-value="$emit('update', { field: cell.id, value: $event })"
164
166
  @blur="onBlur({ row: index, field: cell.id, errors })"
165
167
  >
166
168
  <template
167
- v-if="errors.length > 0"
169
+ v-if="$isDesktop.value && errors.length > 0"
168
170
  #append-inner
169
171
  >
170
172
  <VcTooltip placement="bottom-end">
@@ -178,7 +180,11 @@
178
180
  </Field>
179
181
  </template>
180
182
  <template v-else>
181
- {{ typeof Number(value) === "number" && Number(value) >= 0 ? Number(value).toFixed(0) : "N/A" }}
183
+ {{
184
+ typeof Number(value) === "number" && Number(value) >= 0
185
+ ? Number(value).toFixed(0)
186
+ : $t("COMPONENTS.ORGANISMS.VC_TABLE.NOT_SET")
187
+ }}
182
188
  </template>
183
189
  </div>
184
190
 
@@ -218,11 +224,12 @@
218
224
  :model-value="value"
219
225
  class="tw-w-full"
220
226
  :error="errors.length > 0"
227
+ :error-message="$isMobile.value ? errorMessage : undefined"
221
228
  @update:model-value="$emit('update', { field: cell.id, value: $event })"
222
229
  @blur="onBlur({ row: index, field: cell.id, errors })"
223
230
  >
224
231
  <template
225
- v-if="errors.length > 0"
232
+ v-if="$isDesktop.value && errors.length > 0"
226
233
  #append-inner
227
234
  >
228
235
  <VcTooltip placement="bottom-end">
@@ -31,7 +31,13 @@
31
31
  size="s"
32
32
  class="tw-w-4"
33
33
  />
34
- <p class="tw-ml-2">{{ item.title }}</p>
34
+ <p class="tw-ml-2">
35
+ {{
36
+ $te(`COMPONENTS.ORGANISMS.VC_TABLE.${stateKey}.${item.id}`)
37
+ ? $t(`COMPONENTS.ORGANISMS.VC_TABLE.${stateKey}.${item.id}`)
38
+ : item.title
39
+ }}
40
+ </p>
35
41
  </div>
36
42
  </div>
37
43
  </VcContainer>
@@ -48,6 +54,7 @@ import { useFloating, flip, shift, autoUpdate } from "@floating-ui/vue";
48
54
 
49
55
  export interface Props {
50
56
  items: ITableColumns[];
57
+ stateKey: string;
51
58
  }
52
59
 
53
60
  export interface Emits {
@@ -0,0 +1,76 @@
1
+ <template>
2
+ <!-- Empty table view -->
3
+ <template v-if="!(items && items.length && !columnsInit)">
4
+ <slot
5
+ v-if="searchValue || searchValue === '' || activeFilterCount"
6
+ name="notfound"
7
+ >
8
+ <div class="tw-w-full tw-h-full tw-box-border tw-flex tw-flex-col tw-items-center tw-justify-center">
9
+ <img
10
+ v-if="notfound?.image"
11
+ :src="notfound.image"
12
+ />
13
+ <div class="tw-m-4 vc-table__empty-text">
14
+ {{ notfound?.text || $t("COMPONENTS.ORGANISMS.VC_TABLE.NOT_FOUND") }}
15
+ </div>
16
+ <VcButton
17
+ v-if="notfound?.action"
18
+ @click="notfound?.clickHandler"
19
+ >
20
+ {{ notfound.action }}
21
+ </VcButton>
22
+ </div>
23
+ </slot>
24
+ <slot
25
+ v-else
26
+ name="empty"
27
+ >
28
+ <div class="tw-w-full tw-h-full tw-box-border tw-flex tw-flex-col tw-items-center tw-justify-center">
29
+ <img
30
+ v-if="empty?.image"
31
+ :src="empty.image"
32
+ />
33
+ <div class="tw-m-4 tw-text-xl tw-font-medium">
34
+ {{ empty?.text || $t("COMPONENTS.ORGANISMS.VC_TABLE.EMPTY") }}
35
+ </div>
36
+ <VcButton
37
+ v-if="empty?.action"
38
+ @click="empty?.clickHandler"
39
+ >
40
+ {{ empty.action }}
41
+ </VcButton>
42
+ </div>
43
+ </slot>
44
+ </template>
45
+ </template>
46
+ <!-- eslint-disable @typescript-eslint/no-explicit-any -->
47
+ <script lang="ts" setup>
48
+ import { Ref } from "vue";
49
+
50
+ export interface Props {
51
+ items: any[];
52
+ columnsInit: boolean;
53
+ searchValue?: string;
54
+ activeFilterCount: number;
55
+ notfound?: {
56
+ image?: string;
57
+ text: string | Ref<string>;
58
+ action?: string;
59
+ clickHandler?: () => void;
60
+ };
61
+ empty?: {
62
+ image?: string;
63
+ text: string | Ref<string>;
64
+ action?: string;
65
+ clickHandler?: () => void;
66
+ };
67
+ }
68
+
69
+ defineProps<Props>();
70
+ defineSlots<{
71
+ notfound: void;
72
+ empty: void;
73
+ }>();
74
+ </script>
75
+
76
+ <style lang="scss" scoped></style>
@@ -28,7 +28,7 @@
28
28
  <div
29
29
  class="tw-flex tw-grow tw-basis-[1] tw-flex-col tw-justify-center tw-items-center tw-text-white"
30
30
  :class="[`vc-table-mobile__item-action_${leftSwipeActions[0].type}`]"
31
- @click.stop="leftSwipeActions[0].clickHandler(item as T)"
31
+ @click.stop="leftSwipeActions?.[0].clickHandler(item as T)"
32
32
  >
33
33
  <VcIcon :icon="leftSwipeActions[0].icon" />
34
34
  <div class="tw-mt-1 tw-text-lg tw-text-center">
@@ -191,15 +191,17 @@ const { isSwiping, lengthX } = useSwipe(target, {
191
191
 
192
192
  const rightSwipeActions = computed(
193
193
  () =>
194
- itemActions.value &&
195
- itemActions.value.length &&
196
- itemActions.value.filter((actions: IActionBuilderResult) => actions.position === "right"),
194
+ (itemActions.value &&
195
+ itemActions.value.length &&
196
+ itemActions.value.filter((actions: IActionBuilderResult) => actions.position === "right")) ||
197
+ undefined,
197
198
  );
198
199
  const leftSwipeActions = computed(
199
200
  () =>
200
- itemActions.value &&
201
- itemActions.value.length &&
202
- itemActions.value.filter((actions: IActionBuilderResult) => actions.position === "left"),
201
+ (itemActions.value &&
202
+ itemActions.value.length &&
203
+ itemActions.value.filter((actions: IActionBuilderResult) => actions.position === "left")) ||
204
+ undefined,
203
205
  );
204
206
 
205
207
  watch(