@vc-shell/framework 1.0.53 → 1.0.54

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 (354) hide show
  1. package/core/composables/index.ts +0 -1
  2. package/core/composables/useApiClient/index.ts +1 -4
  3. package/core/composables/useAsync/index.ts +2 -6
  4. package/core/composables/useAutosave/index.ts +1 -3
  5. package/core/composables/useFunctions/debounce.ts +1 -4
  6. package/core/composables/useFunctions/delay.ts +1 -4
  7. package/core/composables/useFunctions/once.ts +1 -3
  8. package/core/composables/useFunctions/throttle.ts +1 -4
  9. package/core/composables/useI18n/index.ts +3 -24
  10. package/core/composables/useLoading/index.ts +1 -3
  11. package/core/composables/useNotifications/index.ts +5 -12
  12. package/core/composables/useSettings/index.ts +2 -3
  13. package/core/composables/useUser/index.ts +25 -64
  14. package/core/plugins/i18n/index.ts +8 -0
  15. package/core/plugins/index.ts +3 -1
  16. package/core/plugins/modularity/index.ts +32 -0
  17. package/core/plugins/moment/humanize.ts +1 -4
  18. package/core/plugins/validation/index.ts +11 -1
  19. package/core/plugins/validation/rules.ts +48 -170
  20. package/core/types/index.ts +3 -5
  21. package/dist/core/composables/index.d.ts +0 -1
  22. package/dist/core/composables/index.d.ts.map +1 -1
  23. package/dist/core/composables/useApiClient/index.d.ts.map +1 -1
  24. package/dist/core/composables/useAsync/index.d.ts.map +1 -1
  25. package/dist/core/composables/useAutosave/index.d.ts.map +1 -1
  26. package/dist/core/composables/useFunctions/debounce.d.ts.map +1 -1
  27. package/dist/core/composables/useFunctions/delay.d.ts.map +1 -1
  28. package/dist/core/composables/useFunctions/once.d.ts.map +1 -1
  29. package/dist/core/composables/useFunctions/throttle.d.ts.map +1 -1
  30. package/dist/core/composables/useI18n/index.d.ts +2 -4
  31. package/dist/core/composables/useI18n/index.d.ts.map +1 -1
  32. package/dist/core/composables/useLoading/index.d.ts.map +1 -1
  33. package/dist/core/composables/useNotifications/index.d.ts.map +1 -1
  34. package/dist/core/composables/useSettings/index.d.ts.map +1 -1
  35. package/dist/core/composables/useUser/index.d.ts.map +1 -1
  36. package/dist/core/plugins/i18n/index.d.ts +3 -0
  37. package/dist/core/plugins/i18n/index.d.ts.map +1 -0
  38. package/dist/core/plugins/index.d.ts +3 -1
  39. package/dist/core/plugins/index.d.ts.map +1 -1
  40. package/dist/core/plugins/modularity/index.d.ts +8 -0
  41. package/dist/core/plugins/modularity/index.d.ts.map +1 -0
  42. package/dist/core/plugins/moment/humanize.d.ts.map +1 -1
  43. package/dist/core/plugins/validation/index.d.ts +3 -1
  44. package/dist/core/plugins/validation/index.d.ts.map +1 -1
  45. package/dist/core/plugins/validation/rules.d.ts +32 -11
  46. package/dist/core/plugins/validation/rules.d.ts.map +1 -1
  47. package/dist/core/types/index.d.ts +0 -1
  48. package/dist/core/types/index.d.ts.map +1 -1
  49. package/dist/framework.esm.js +42553 -0
  50. package/dist/framework.js +77 -75
  51. package/dist/index.d.ts.map +1 -1
  52. package/dist/shared/app-switcher/composables/useAppSwitcher/index.d.ts.map +1 -1
  53. package/dist/shared/app-switcher/index.d.ts +2 -3
  54. package/dist/shared/app-switcher/index.d.ts.map +1 -1
  55. package/dist/shared/assets/components/index.d.ts +1 -1
  56. package/dist/shared/assets/components/index.d.ts.map +1 -1
  57. package/dist/shared/assets/index.d.ts +2 -3
  58. package/dist/shared/assets/index.d.ts.map +1 -1
  59. package/dist/shared/blade-navigation/composables/index.d.ts +1 -1
  60. package/dist/shared/blade-navigation/composables/index.d.ts.map +1 -1
  61. package/dist/shared/blade-navigation/composables/useBladeNavigation/index.d.ts +1 -1
  62. package/dist/shared/blade-navigation/composables/useBladeNavigation/index.d.ts.map +1 -1
  63. package/dist/shared/blade-navigation/index.d.ts +2 -3
  64. package/dist/shared/blade-navigation/index.d.ts.map +1 -1
  65. package/dist/shared/index.d.ts +4 -1
  66. package/dist/shared/index.d.ts.map +1 -1
  67. package/dist/style.css +1 -1
  68. package/dist/tsconfig.tsbuildinfo +1 -1
  69. package/dist/ui/components/atoms/vc-badge/index.d.ts +2 -2
  70. package/dist/ui/components/atoms/vc-badge/index.d.ts.map +1 -1
  71. package/dist/ui/components/atoms/vc-badge/vc-badge-model.d.ts +20 -15
  72. package/dist/ui/components/atoms/vc-badge/vc-badge-model.d.ts.map +1 -1
  73. package/dist/ui/components/atoms/vc-button/index.d.ts +2 -2
  74. package/dist/ui/components/atoms/vc-button/index.d.ts.map +1 -1
  75. package/dist/ui/components/atoms/vc-button/vc-button-model.d.ts +30 -10
  76. package/dist/ui/components/atoms/vc-button/vc-button-model.d.ts.map +1 -1
  77. package/dist/ui/components/atoms/vc-card/index.d.ts +2 -2
  78. package/dist/ui/components/atoms/vc-card/index.d.ts.map +1 -1
  79. package/dist/ui/components/atoms/vc-card/vc-card-model.d.ts +28 -11
  80. package/dist/ui/components/atoms/vc-card/vc-card-model.d.ts.map +1 -1
  81. package/dist/ui/components/atoms/vc-checkbox/index.d.ts +2 -2
  82. package/dist/ui/components/atoms/vc-checkbox/index.d.ts.map +1 -1
  83. package/dist/ui/components/atoms/vc-checkbox/vc-checkbox-model.d.ts +25 -8
  84. package/dist/ui/components/atoms/vc-checkbox/vc-checkbox-model.d.ts.map +1 -1
  85. package/dist/ui/components/atoms/vc-col/index.d.ts.map +1 -1
  86. package/dist/ui/components/atoms/vc-col/vc-col-model.d.ts +8 -3
  87. package/dist/ui/components/atoms/vc-col/vc-col-model.d.ts.map +1 -1
  88. package/dist/ui/components/atoms/vc-container/index.d.ts +2 -2
  89. package/dist/ui/components/atoms/vc-container/index.d.ts.map +1 -1
  90. package/dist/ui/components/atoms/vc-container/vc-container-model.d.ts +20 -6
  91. package/dist/ui/components/atoms/vc-container/vc-container-model.d.ts.map +1 -1
  92. package/dist/ui/components/atoms/vc-hint/vc-hint-model.d.ts +5 -0
  93. package/dist/ui/components/atoms/vc-hint/vc-hint-model.d.ts.map +1 -0
  94. package/dist/ui/components/atoms/vc-icon/index.d.ts.map +1 -1
  95. package/dist/ui/components/atoms/vc-icon/vc-icon-model.d.ts +13 -5
  96. package/dist/ui/components/atoms/vc-icon/vc-icon-model.d.ts.map +1 -1
  97. package/dist/ui/components/atoms/vc-image/index.d.ts +2 -2
  98. package/dist/ui/components/atoms/vc-image/index.d.ts.map +1 -1
  99. package/dist/ui/components/atoms/vc-image/vc-image-model.d.ts +34 -11
  100. package/dist/ui/components/atoms/vc-image/vc-image-model.d.ts.map +1 -1
  101. package/dist/ui/components/atoms/vc-image/vc-image.stories.d.ts.map +1 -1
  102. package/dist/ui/components/atoms/vc-info-row/index.d.ts.map +1 -1
  103. package/dist/ui/components/atoms/vc-info-row/vc-info-row-model.d.ts +21 -7
  104. package/dist/ui/components/atoms/vc-info-row/vc-info-row-model.d.ts.map +1 -1
  105. package/dist/ui/components/atoms/vc-label/index.d.ts.map +1 -1
  106. package/dist/ui/components/atoms/vc-label/vc-label-model.d.ts +12 -4
  107. package/dist/ui/components/atoms/vc-label/vc-label-model.d.ts.map +1 -1
  108. package/dist/ui/components/atoms/vc-link/index.d.ts +2 -2
  109. package/dist/ui/components/atoms/vc-link/index.d.ts.map +1 -1
  110. package/dist/ui/components/atoms/vc-link/vc-link-model.d.ts +16 -5
  111. package/dist/ui/components/atoms/vc-link/vc-link-model.d.ts.map +1 -1
  112. package/dist/ui/components/atoms/vc-loading/index.d.ts.map +1 -1
  113. package/dist/ui/components/atoms/vc-loading/vc-loading-model.d.ts +8 -3
  114. package/dist/ui/components/atoms/vc-loading/vc-loading-model.d.ts.map +1 -1
  115. package/dist/ui/components/atoms/vc-progress/index.d.ts.map +1 -1
  116. package/dist/ui/components/atoms/vc-progress/vc-progress-model.d.ts +13 -5
  117. package/dist/ui/components/atoms/vc-progress/vc-progress-model.d.ts.map +1 -1
  118. package/dist/ui/components/atoms/vc-status/index.d.ts.map +1 -1
  119. package/dist/ui/components/atoms/vc-status/vc-status-model.d.ts +17 -6
  120. package/dist/ui/components/atoms/vc-status/vc-status-model.d.ts.map +1 -1
  121. package/dist/ui/components/atoms/vc-status-icon/index.d.ts.map +1 -1
  122. package/dist/ui/components/atoms/vc-status-icon/vc-status-icon-model.d.ts +8 -3
  123. package/dist/ui/components/atoms/vc-status-icon/vc-status-icon-model.d.ts.map +1 -1
  124. package/dist/ui/components/atoms/vc-switch/index.d.ts +2 -2
  125. package/dist/ui/components/atoms/vc-switch/index.d.ts.map +1 -1
  126. package/dist/ui/components/atoms/vc-switch/vc-switch-model.d.ts +25 -8
  127. package/dist/ui/components/atoms/vc-switch/vc-switch-model.d.ts.map +1 -1
  128. package/dist/ui/components/atoms/vc-widget/index.d.ts +2 -2
  129. package/dist/ui/components/atoms/vc-widget/index.d.ts.map +1 -1
  130. package/dist/ui/components/atoms/vc-widget/vc-widget-model.d.ts +15 -7
  131. package/dist/ui/components/atoms/vc-widget/vc-widget-model.d.ts.map +1 -1
  132. package/dist/ui/components/index.d.ts.map +1 -1
  133. package/dist/ui/components/molecules/vc-breadcrumbs/index.d.ts.map +1 -1
  134. package/dist/ui/components/molecules/vc-breadcrumbs/vc-breadcrumbs-model.d.ts +15 -10
  135. package/dist/ui/components/molecules/vc-breadcrumbs/vc-breadcrumbs-model.d.ts.map +1 -1
  136. package/dist/ui/components/molecules/vc-editor/index.d.ts +2 -2
  137. package/dist/ui/components/molecules/vc-editor/index.d.ts.map +1 -1
  138. package/dist/ui/components/molecules/vc-editor/vc-editor-model.d.ts +28 -11
  139. package/dist/ui/components/molecules/vc-editor/vc-editor-model.d.ts.map +1 -1
  140. package/dist/ui/components/molecules/vc-file-upload/index.d.ts +2 -2
  141. package/dist/ui/components/molecules/vc-file-upload/index.d.ts.map +1 -1
  142. package/dist/ui/components/molecules/vc-file-upload/vc-file-upload-model.d.ts +30 -10
  143. package/dist/ui/components/molecules/vc-file-upload/vc-file-upload-model.d.ts.map +1 -1
  144. package/dist/ui/components/molecules/vc-form/vc-form-model.d.ts +5 -0
  145. package/dist/ui/components/molecules/vc-form/vc-form-model.d.ts.map +1 -0
  146. package/dist/ui/components/molecules/vc-input/index.d.ts +2 -2
  147. package/dist/ui/components/molecules/vc-input/index.d.ts.map +1 -1
  148. package/dist/ui/components/molecules/vc-input/vc-input-model.d.ts +48 -25
  149. package/dist/ui/components/molecules/vc-input/vc-input-model.d.ts.map +1 -1
  150. package/dist/ui/components/molecules/vc-input-currency/index.d.ts +2 -2
  151. package/dist/ui/components/molecules/vc-input-currency/index.d.ts.map +1 -1
  152. package/dist/ui/components/molecules/vc-input-currency/vc-input-currency-model.d.ts +36 -28
  153. package/dist/ui/components/molecules/vc-input-currency/vc-input-currency-model.d.ts.map +1 -1
  154. package/dist/ui/components/molecules/vc-notification/index.d.ts +2 -2
  155. package/dist/ui/components/molecules/vc-notification/index.d.ts.map +1 -1
  156. package/dist/ui/components/molecules/vc-notification/vc-notification-model.d.ts +13 -5
  157. package/dist/ui/components/molecules/vc-notification/vc-notification-model.d.ts.map +1 -1
  158. package/dist/ui/components/molecules/vc-pagination/index.d.ts +2 -2
  159. package/dist/ui/components/molecules/vc-pagination/index.d.ts.map +1 -1
  160. package/dist/ui/components/molecules/vc-pagination/vc-pagination-model.d.ts +20 -6
  161. package/dist/ui/components/molecules/vc-pagination/vc-pagination-model.d.ts.map +1 -1
  162. package/dist/ui/components/molecules/vc-rating/index.d.ts.map +1 -1
  163. package/dist/ui/components/molecules/vc-rating/vc-rating-model.d.ts +17 -9
  164. package/dist/ui/components/molecules/vc-rating/vc-rating-model.d.ts.map +1 -1
  165. package/dist/ui/components/molecules/vc-select/index.d.ts +2 -2
  166. package/dist/ui/components/molecules/vc-select/index.d.ts.map +1 -1
  167. package/dist/ui/components/molecules/vc-select/vc-select-model.d.ts +67 -32
  168. package/dist/ui/components/molecules/vc-select/vc-select-model.d.ts.map +1 -1
  169. package/dist/ui/components/molecules/vc-slider/index.d.ts.map +1 -1
  170. package/dist/ui/components/molecules/vc-slider/vc-slider-model.d.ts +25 -8
  171. package/dist/ui/components/molecules/vc-slider/vc-slider-model.d.ts.map +1 -1
  172. package/dist/ui/components/molecules/vc-textarea/index.d.ts +2 -2
  173. package/dist/ui/components/molecules/vc-textarea/index.d.ts.map +1 -1
  174. package/dist/ui/components/molecules/vc-textarea/vc-textarea-model.d.ts +32 -12
  175. package/dist/ui/components/molecules/vc-textarea/vc-textarea-model.d.ts.map +1 -1
  176. package/dist/ui/components/organisms/vc-app/index.d.ts +2 -2
  177. package/dist/ui/components/organisms/vc-app/index.d.ts.map +1 -1
  178. package/dist/ui/components/organisms/vc-app/vc-app-model.d.ts +52 -17
  179. package/dist/ui/components/organisms/vc-app/vc-app-model.d.ts.map +1 -1
  180. package/dist/ui/components/organisms/vc-blade/index.d.ts +2 -2
  181. package/dist/ui/components/organisms/vc-blade/index.d.ts.map +1 -1
  182. package/dist/ui/components/organisms/vc-blade/vc-blade-model.d.ts +28 -11
  183. package/dist/ui/components/organisms/vc-blade/vc-blade-model.d.ts.map +1 -1
  184. package/dist/ui/components/organisms/vc-blade/vc-blade.stories.d.ts.map +1 -1
  185. package/dist/ui/components/organisms/vc-dynamic-property/index.d.ts.map +1 -1
  186. package/dist/ui/components/organisms/vc-dynamic-property/vc-dynamic-property-model.d.ts +39 -10
  187. package/dist/ui/components/organisms/vc-dynamic-property/vc-dynamic-property-model.d.ts.map +1 -1
  188. package/dist/ui/components/organisms/vc-gallery/index.d.ts +2 -2
  189. package/dist/ui/components/organisms/vc-gallery/index.d.ts.map +1 -1
  190. package/dist/ui/components/organisms/vc-gallery/vc-gallery-model.d.ts +69 -27
  191. package/dist/ui/components/organisms/vc-gallery/vc-gallery-model.d.ts.map +1 -1
  192. package/dist/ui/components/organisms/vc-login-form/index.d.ts.map +1 -1
  193. package/dist/ui/components/organisms/vc-login-form/vc-login-form-model.d.ts +10 -5
  194. package/dist/ui/components/organisms/vc-login-form/vc-login-form-model.d.ts.map +1 -1
  195. package/dist/ui/components/organisms/vc-popup/index.d.ts +2 -2
  196. package/dist/ui/components/organisms/vc-popup/index.d.ts.map +1 -1
  197. package/dist/ui/components/organisms/vc-popup/vc-popup-model.d.ts +18 -7
  198. package/dist/ui/components/organisms/vc-popup/vc-popup-model.d.ts.map +1 -1
  199. package/dist/ui/components/organisms/vc-table/index.d.ts +2 -2
  200. package/dist/ui/components/organisms/vc-table/index.d.ts.map +1 -1
  201. package/dist/ui/components/organisms/vc-table/vc-table-model.d.ts +103 -34
  202. package/dist/ui/components/organisms/vc-table/vc-table-model.d.ts.map +1 -1
  203. package/dist/ui/types/index.d.ts +48 -46
  204. package/dist/ui/types/index.d.ts.map +1 -1
  205. package/dist/ui/types/ts-helpers.d.ts +14 -4
  206. package/dist/ui/types/ts-helpers.d.ts.map +1 -1
  207. package/dist/ui/utils/index.d.ts +2 -0
  208. package/dist/ui/utils/index.d.ts.map +1 -0
  209. package/dist/ui/utils/types.d.ts +3 -0
  210. package/dist/ui/utils/types.d.ts.map +1 -0
  211. package/dist/vite.config.d.ts +1 -1
  212. package/dist/vite.config.d.ts.map +1 -1
  213. package/package.json +8 -11
  214. package/shared/app-switcher/components/vc-app-switcher/vc-app-switcher.vue +2 -5
  215. package/shared/app-switcher/composables/useAppSwitcher/index.ts +2 -7
  216. package/shared/app-switcher/index.ts +3 -10
  217. package/shared/assets/components/assets-details/assets-details.vue +7 -28
  218. package/shared/assets/components/index.ts +1 -1
  219. package/shared/assets/index.ts +3 -15
  220. package/shared/blade-navigation/components/vc-blade-navigation/vc-blade-navigation.vue +2 -7
  221. package/shared/blade-navigation/composables/index.ts +1 -1
  222. package/shared/blade-navigation/composables/useBladeNavigation/index.ts +7 -36
  223. package/shared/blade-navigation/index.ts +3 -10
  224. package/shared/index.ts +9 -11
  225. package/ui/components/atoms/vc-badge/index.ts +4 -4
  226. package/ui/components/atoms/vc-badge/vc-badge-model.ts +22 -15
  227. package/ui/components/atoms/vc-badge/vc-badge.vue +5 -10
  228. package/ui/components/atoms/vc-button/index.ts +4 -4
  229. package/ui/components/atoms/vc-button/vc-button-model.ts +32 -17
  230. package/ui/components/atoms/vc-button/vc-button.vue +8 -13
  231. package/ui/components/atoms/vc-card/index.ts +3 -4
  232. package/ui/components/atoms/vc-card/vc-card-model.ts +31 -11
  233. package/ui/components/atoms/vc-card/vc-card.vue +20 -11
  234. package/ui/components/atoms/vc-checkbox/index.ts +3 -2
  235. package/ui/components/atoms/vc-checkbox/vc-checkbox-model.ts +28 -8
  236. package/ui/components/atoms/vc-checkbox/vc-checkbox.vue +15 -11
  237. package/ui/components/atoms/vc-col/index.ts +1 -2
  238. package/ui/components/atoms/vc-col/vc-col-model.ts +9 -3
  239. package/ui/components/atoms/vc-col/vc-col.vue +2 -4
  240. package/ui/components/atoms/vc-container/index.ts +3 -2
  241. package/ui/components/atoms/vc-container/vc-container-model.ts +24 -8
  242. package/ui/components/atoms/vc-container/vc-container.vue +6 -14
  243. package/ui/components/atoms/vc-hint/vc-hint-model.ts +5 -0
  244. package/ui/components/atoms/vc-icon/index.ts +1 -3
  245. package/ui/components/atoms/vc-icon/vc-icon-model.ts +15 -6
  246. package/ui/components/atoms/vc-icon/vc-icon.vue +2 -5
  247. package/ui/components/atoms/vc-image/index.ts +4 -4
  248. package/ui/components/atoms/vc-image/vc-image-model.ts +36 -22
  249. package/ui/components/atoms/vc-image/vc-image.stories.ts +1 -2
  250. package/ui/components/atoms/vc-image/vc-image.vue +13 -17
  251. package/ui/components/atoms/vc-info-row/index.ts +1 -3
  252. package/ui/components/atoms/vc-info-row/vc-info-row-model.ts +22 -7
  253. package/ui/components/atoms/vc-info-row/vc-info-row.vue +13 -9
  254. package/ui/components/atoms/vc-label/index.ts +1 -3
  255. package/ui/components/atoms/vc-label/vc-label-model.ts +13 -4
  256. package/ui/components/atoms/vc-label/vc-label.vue +6 -6
  257. package/ui/components/atoms/vc-link/index.ts +3 -4
  258. package/ui/components/atoms/vc-link/vc-link-model.ts +18 -5
  259. package/ui/components/atoms/vc-link/vc-link.vue +4 -6
  260. package/ui/components/atoms/vc-loading/index.ts +1 -3
  261. package/ui/components/atoms/vc-loading/vc-loading-model.ts +9 -3
  262. package/ui/components/atoms/vc-loading/vc-loading.vue +4 -9
  263. package/ui/components/atoms/vc-progress/index.ts +1 -3
  264. package/ui/components/atoms/vc-progress/vc-progress-model.ts +14 -5
  265. package/ui/components/atoms/vc-progress/vc-progress.vue +4 -13
  266. package/ui/components/atoms/vc-status/index.ts +1 -3
  267. package/ui/components/atoms/vc-status/vc-status-model.ts +18 -12
  268. package/ui/components/atoms/vc-status/vc-status.vue +3 -11
  269. package/ui/components/atoms/vc-status-icon/index.ts +1 -3
  270. package/ui/components/atoms/vc-status-icon/vc-status-icon-model.ts +9 -3
  271. package/ui/components/atoms/vc-status-icon/vc-status-icon.vue +2 -4
  272. package/ui/components/atoms/vc-switch/index.ts +4 -4
  273. package/ui/components/atoms/vc-switch/vc-switch-model.ts +28 -8
  274. package/ui/components/atoms/vc-switch/vc-switch.vue +12 -10
  275. package/ui/components/atoms/vc-widget/index.ts +4 -4
  276. package/ui/components/atoms/vc-widget/vc-widget-model.ts +17 -7
  277. package/ui/components/atoms/vc-widget/vc-widget.vue +16 -7
  278. package/ui/components/index.ts +1 -1
  279. package/ui/components/molecules/vc-breadcrumbs/index.ts +1 -3
  280. package/ui/components/molecules/vc-breadcrumbs/vc-breadcrumbs-model.ts +18 -10
  281. package/ui/components/molecules/vc-breadcrumbs/vc-breadcrumbs.vue +6 -5
  282. package/ui/components/molecules/vc-editor/index.ts +4 -4
  283. package/ui/components/molecules/vc-editor/vc-editor-model.ts +31 -11
  284. package/ui/components/molecules/vc-editor/vc-editor.vue +17 -11
  285. package/ui/components/molecules/vc-file-upload/index.ts +3 -2
  286. package/ui/components/molecules/vc-file-upload/vc-file-upload-model.ts +33 -11
  287. package/ui/components/molecules/vc-file-upload/vc-file-upload.vue +10 -14
  288. package/ui/components/molecules/vc-form/vc-form-model.ts +5 -0
  289. package/ui/components/molecules/vc-input/index.ts +4 -5
  290. package/ui/components/molecules/vc-input/vc-input-model.ts +53 -35
  291. package/ui/components/molecules/vc-input/vc-input.vue +41 -29
  292. package/ui/components/molecules/vc-input-currency/index.ts +3 -2
  293. package/ui/components/molecules/vc-input-currency/vc-input-currency-model.ts +42 -32
  294. package/ui/components/molecules/vc-input-currency/vc-input-currency.vue +12 -7
  295. package/ui/components/molecules/vc-notification/index.ts +4 -3
  296. package/ui/components/molecules/vc-notification/vc-notification-model.ts +15 -5
  297. package/ui/components/molecules/vc-notification/vc-notification.vue +3 -5
  298. package/ui/components/molecules/vc-pagination/index.ts +4 -3
  299. package/ui/components/molecules/vc-pagination/vc-pagination-model.ts +23 -6
  300. package/ui/components/molecules/vc-pagination/vc-pagination.vue +19 -11
  301. package/ui/components/molecules/vc-rating/index.ts +2 -4
  302. package/ui/components/molecules/vc-rating/vc-rating-model.ts +18 -9
  303. package/ui/components/molecules/vc-rating/vc-rating.vue +10 -4
  304. package/ui/components/molecules/vc-select/index.ts +5 -5
  305. package/ui/components/molecules/vc-select/vc-select-model.ts +74 -44
  306. package/ui/components/molecules/vc-select/vc-select.vue +126 -171
  307. package/ui/components/molecules/vc-slider/index.ts +2 -4
  308. package/ui/components/molecules/vc-slider/vc-slider-model.ts +30 -11
  309. package/ui/components/molecules/vc-slider/vc-slider.vue +2 -8
  310. package/ui/components/molecules/vc-textarea/index.ts +4 -3
  311. package/ui/components/molecules/vc-textarea/vc-textarea-model.ts +35 -12
  312. package/ui/components/molecules/vc-textarea/vc-textarea.vue +16 -12
  313. package/ui/components/organisms/vc-app/_internal/vc-app-bar/vc-app-bar.vue +13 -9
  314. package/ui/components/organisms/vc-app/_internal/vc-app-menu/_internal/vc-app-menu-item/_internal/vc-app-menu-link.vue +12 -3
  315. package/ui/components/organisms/vc-app/_internal/vc-app-menu/_internal/vc-app-menu-item/vc-app-menu-item.vue +18 -16
  316. package/ui/components/organisms/vc-app/_internal/vc-app-menu/vc-app-menu.vue +8 -2
  317. package/ui/components/organisms/vc-app/index.ts +4 -4
  318. package/ui/components/organisms/vc-app/vc-app-model.ts +55 -17
  319. package/ui/components/organisms/vc-app/vc-app.vue +8 -25
  320. package/ui/components/organisms/vc-blade/_internal/vc-blade-header/vc-blade-header.vue +22 -7
  321. package/ui/components/organisms/vc-blade/_internal/vc-blade-toolbar/_internal/vc-blade-toolbar-button/vc-blade-toolbar-button.vue +19 -13
  322. package/ui/components/organisms/vc-blade/_internal/vc-blade-toolbar/vc-blade-toolbar.vue +13 -11
  323. package/ui/components/organisms/vc-blade/index.ts +5 -5
  324. package/ui/components/organisms/vc-blade/vc-blade-model.ts +30 -11
  325. package/ui/components/organisms/vc-blade/vc-blade.stories.ts +1 -2
  326. package/ui/components/organisms/vc-blade/vc-blade.vue +12 -14
  327. package/ui/components/organisms/vc-dynamic-property/index.ts +2 -4
  328. package/ui/components/organisms/vc-dynamic-property/vc-dynamic-property-model.ts +53 -20
  329. package/ui/components/organisms/vc-dynamic-property/vc-dynamic-property.vue +41 -37
  330. package/ui/components/organisms/vc-gallery/_internal/vc-gallery-item/vc-gallery-item.vue +9 -2
  331. package/ui/components/organisms/vc-gallery/_internal/vc-gallery-preview/vc-gallery-preview.vue +14 -9
  332. package/ui/components/organisms/vc-gallery/index.ts +4 -3
  333. package/ui/components/organisms/vc-gallery/vc-gallery-model.ts +72 -27
  334. package/ui/components/organisms/vc-gallery/vc-gallery.vue +7 -20
  335. package/ui/components/organisms/vc-login-form/index.ts +2 -4
  336. package/ui/components/organisms/vc-login-form/vc-login-form-model.ts +10 -5
  337. package/ui/components/organisms/vc-login-form/vc-login-form.vue +2 -4
  338. package/ui/components/organisms/vc-popup/index.ts +5 -5
  339. package/ui/components/organisms/vc-popup/vc-popup-model.ts +20 -7
  340. package/ui/components/organisms/vc-popup/vc-popup.vue +7 -7
  341. package/ui/components/organisms/vc-table/_internal/vc-table-cell/vc-table-cell.vue +19 -25
  342. package/ui/components/organisms/vc-table/_internal/vc-table-counter/vc-table-counter.vue +2 -6
  343. package/ui/components/organisms/vc-table/_internal/vc-table-filter/vc-table-filter.vue +8 -2
  344. package/ui/components/organisms/vc-table/_internal/vc-table-mobile-item/vc-table-mobile-item.vue +27 -39
  345. package/ui/components/organisms/vc-table/index.ts +5 -5
  346. package/ui/components/organisms/vc-table/vc-table-model.ts +98 -38
  347. package/ui/components/organisms/vc-table/vc-table.vue +105 -103
  348. package/ui/types/index.ts +64 -160
  349. package/ui/types/ts-helpers.ts +23 -3
  350. package/ui/utils/index.ts +1 -0
  351. package/ui/utils/types.ts +2 -0
  352. package/core/composables/useLogger/index.ts +0 -24
  353. package/dist/core/composables/useLogger/index.d.ts +0 -5
  354. package/dist/core/composables/useLogger/index.d.ts.map +0 -1
@@ -32,8 +32,14 @@
32
32
  </div>
33
33
 
34
34
  <!-- Show back link when more than one blade is opened -->
35
- <VcLink v-else-if="blades.length > 1" @click="$emit('backlink:click')">
36
- <VcIcon icon="fas fa-chevron-left" size="s"></VcIcon>
35
+ <VcLink
36
+ v-else-if="blades.length > 1"
37
+ @click="$emit('backlink:click')"
38
+ >
39
+ <VcIcon
40
+ icon="fas fa-chevron-left"
41
+ size="s"
42
+ ></VcIcon>
37
43
  <span class="tw-ml-2 tw-text-lg">{{ $t("Back") }}</span>
38
44
  </VcLink>
39
45
  </template>
@@ -43,7 +49,10 @@
43
49
 
44
50
  <!-- Toolbar container -->
45
51
  <div class="tw-flex tw-h-full tw-box-border">
46
- <template v-for="(item, index) in buttons" :key="index">
52
+ <template
53
+ v-for="(item, index) in buttons"
54
+ :key="index"
55
+ >
47
56
  <template v-if="item.isVisible === undefined || item.isVisible">
48
57
  <!-- Draw custom component is it is passed -->
49
58
  <component
@@ -99,12 +108,7 @@ withDefaults(defineProps<Props>(), {
99
108
  buttons: () => [],
100
109
  });
101
110
 
102
- defineEmits([
103
- "logo:click",
104
- "backlink:click",
105
- "toolbarbutton:click",
106
- "menubutton:click",
107
- ]);
111
+ defineEmits(["logo:click", "backlink:click", "toolbarbutton:click", "menubutton:click"]);
108
112
  </script>
109
113
 
110
114
  <style lang="scss">
@@ -11,10 +11,19 @@
11
11
  class="vc-app-menu-item__handler"
12
12
  :class="{ 'vc-app-menu-item__handler_enabled': !sticky }"
13
13
  >
14
- <VcIcon icon="fas fa-ellipsis-v" size="m" />
14
+ <VcIcon
15
+ icon="fas fa-ellipsis-v"
16
+ size="m"
17
+ />
15
18
  </div>
16
- <div v-if="icon" class="vc-app-menu-item__icon">
17
- <VcIcon :icon="icon" size="m" />
19
+ <div
20
+ v-if="icon"
21
+ class="vc-app-menu-item__icon"
22
+ >
23
+ <VcIcon
24
+ :icon="icon"
25
+ size="m"
26
+ />
18
27
  </div>
19
28
  <div class="vc-app-menu-item__title">
20
29
  {{ title }}
@@ -1,7 +1,11 @@
1
1
  <template>
2
2
  <div>
3
3
  <template v-if="component && component.url">
4
- <router-link :to="component.url" custom v-slot="{ isActive, navigate }">
4
+ <router-link
5
+ :to="component.url"
6
+ custom
7
+ v-slot="{ isActive, navigate }"
8
+ >
5
9
  <vc-app-menu-link
6
10
  :isActive="isActive"
7
11
  :children="children"
@@ -23,8 +27,14 @@
23
27
  />
24
28
 
25
29
  <!-- Nested menu items -->
26
- <div class="vc-app-menu-item__child" v-if="isOpened">
27
- <template v-for="(nested, i) in children" :key="i">
30
+ <div
31
+ class="vc-app-menu-item__child"
32
+ v-if="isOpened"
33
+ >
34
+ <template
35
+ v-for="(nested, i) in children"
36
+ :key="i"
37
+ >
28
38
  <router-link
29
39
  :to="nested.component.url"
30
40
  custom
@@ -39,9 +49,7 @@
39
49
  ]"
40
50
  v-if="nested.isVisible === undefined || nested.isVisible"
41
51
  :key="i"
42
- @click="
43
- $emit('child:click', { item: nested, navigationCb: navigate })
44
- "
52
+ @click="$emit('child:click', { item: nested, navigationCb: navigate })"
45
53
  >
46
54
  {{ nested.title }}
47
55
  </div>
@@ -54,10 +62,10 @@
54
62
 
55
63
  <script lang="ts" setup>
56
64
  import { onMounted, ref, computed } from "vue";
57
- import {IBladeToolbar, IMenuItems} from "./../../../../../../../../core/types";
65
+ import { IBladeToolbar, IMenuItems } from "./../../../../../../../../core/types";
58
66
  import VcAppMenuLink from "./_internal/vc-app-menu-link.vue";
59
67
  import { NavigationFailure, useRoute } from "vue-router";
60
- import {ExtendedComponent} from "./../../../../../../../../shared";
68
+ import { ExtendedComponent } from "./../../../../../../../../shared";
61
69
 
62
70
  export interface Props {
63
71
  sticky?: boolean;
@@ -104,18 +112,12 @@ const isOpened = ref(false);
104
112
  const isHomePage = computed(() => route.path === "/");
105
113
 
106
114
  onMounted(() => {
107
- if (
108
- props.children &&
109
- props.children.length &&
110
- props.children.find((x) => x.component?.url === route?.path)
111
- ) {
115
+ if (props.children && props.children.length && props.children.find((x) => x.component?.url === route?.path)) {
112
116
  isOpened.value = true;
113
117
  }
114
118
  });
115
119
 
116
- function onMenuItemClick(
117
- navigationCb?: () => Promise<void | NavigationFailure>
118
- ) {
120
+ function onMenuItemClick(navigationCb?: () => Promise<void | NavigationFailure>) {
119
121
  if (!props.children?.length) {
120
122
  emit("click", navigationCb);
121
123
  } else {
@@ -27,7 +27,10 @@
27
27
  </div>
28
28
 
29
29
  <!-- Show scrollable area with menu items -->
30
- <VcContainer :noPadding="true" class="tw-grow tw-basis-0">
30
+ <VcContainer
31
+ :noPadding="true"
32
+ class="tw-grow tw-basis-0"
33
+ >
31
34
  <div class="tw-gap-[5px] tw-flex tw-flex-col tw-px-4 tw-h-full">
32
35
  <template
33
36
  v-for="(item, index) in mobileMenuItems"
@@ -42,7 +45,10 @@
42
45
  ></component>
43
46
  </template>
44
47
  </template>
45
- <template v-for="(item, index) in items" :key="index">
48
+ <template
49
+ v-for="(item, index) in items"
50
+ :key="index"
51
+ >
46
52
  <VcAppMenuItem
47
53
  v-if="item.isVisible === undefined || item.isVisible"
48
54
  v-bind="item"
@@ -1,6 +1,6 @@
1
1
  import { ComponentPublicInstance } from "vue";
2
- import { VcAppProps } from "./vc-app-model";
3
- import { ComponentConstructor } from "./../../../types/ts-helpers"
2
+ import { VcAppEmits, VcAppProps } from "./vc-app-model";
3
+ import { ComponentConstructor } from "./../../../types/ts-helpers";
4
4
  import App from "./vc-app.vue";
5
- export const VcApp: ComponentConstructor<ComponentPublicInstance<VcAppProps>> =
6
- App;
5
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
6
+ export const VcApp: ComponentConstructor<ComponentPublicInstance<VcAppProps, any, any, any, any, VcAppEmits>> = App;
@@ -1,23 +1,61 @@
1
1
  import { ExtendedComponent, IBladeElement, IOpenBlade } from "./../../../../shared";
2
2
  import { IBladeToolbar, IMenuItems } from "./../../../../core/types";
3
- import { VNode } from "vue";
3
+ import { PropType, VNode } from "vue";
4
+ import { ExtractTypes } from "./../../../types/ts-helpers";
5
+ import { isObject, isNumber } from "./../../../utils";
4
6
 
5
- export interface VcAppProps {
6
- pages?: ExtendedComponent[] | undefined;
7
- menuItems?: IMenuItems[] | undefined;
8
- mobileMenuItems?: IMenuItems[] | undefined;
9
- toolbarItems?: IBladeToolbar[] | undefined;
10
- isReady?: boolean | undefined;
11
- isAuthorized?: boolean | undefined;
12
- logo?: string | undefined;
13
- version?: string | undefined;
14
- theme?: "light" | "dark" | undefined;
15
- bladesRefs?: IBladeElement[] | undefined;
16
- title?: string | undefined;
17
- onOpen?: (args: IOpenBlade) => void;
18
- onClose?: (index: number) => void;
19
- "onBacklink:click"?: (index: number) => void;
20
- }
7
+ export const appProps = {
8
+ pages: {
9
+ type: Array as PropType<ExtendedComponent[]>,
10
+ default: () => [],
11
+ },
12
+ menuItems: {
13
+ type: Array as PropType<IMenuItems[]>,
14
+ default: () => [],
15
+ },
16
+ mobileMenuItems: {
17
+ type: Array as PropType<IMenuItems[]>,
18
+ default: () => [],
19
+ },
20
+ toolbarItems: {
21
+ type: Array as PropType<IBladeToolbar[]>,
22
+ default: () => [],
23
+ },
24
+ isReady: {
25
+ type: Boolean,
26
+ default: false,
27
+ },
28
+ isAuthorized: {
29
+ type: Boolean,
30
+ default: false,
31
+ },
32
+ logo: {
33
+ type: String,
34
+ default: undefined,
35
+ },
36
+ version: {
37
+ type: String,
38
+ default: undefined,
39
+ },
40
+ theme: {
41
+ type: String as PropType<"light" | "dark">,
42
+ default: "light",
43
+ },
44
+ bladesRefs: {
45
+ type: Array as PropType<IBladeElement[]>,
46
+ default: () => [],
47
+ },
48
+ title: String,
49
+ };
50
+
51
+ export const appEmits = {
52
+ open: (args: IOpenBlade) => isObject(args),
53
+ close: (index: number) => isNumber(index),
54
+ "backlink:click": (index: number) => isNumber(index),
55
+ };
56
+
57
+ export type VcAppProps = ExtractTypes<typeof appProps>;
58
+ export type VcAppEmits = typeof appEmits;
21
59
 
22
60
  export interface VcAppSlots {
23
61
  appSwitcher: () => VNode[];
@@ -17,11 +17,7 @@
17
17
  :blades="bladesRefs"
18
18
  :buttons="toolbarItems"
19
19
  @toolbarbutton:click="onToolbarButtonClick"
20
- @menubutton:click="
21
- (
22
- $refs.menu as Record<'isMobileVisible', boolean>
23
- ).isMobileVisible = true
24
- "
20
+ @menubutton:click="($refs.menu as Record<'isMobileVisible', boolean>).isMobileVisible = true"
25
21
  @backlink:click="$emit('backlink:click', bladesRefs.length - 2)"
26
22
  @logo:click="openDashboard"
27
23
  :title="title"
@@ -43,9 +39,7 @@
43
39
  ></VcAppMenu>
44
40
 
45
41
  <!-- Workspace blades -->
46
- <div
47
- class="vc-app__workspace tw-px-2 tw-w-full tw-overflow-hidden !tw-flex tw-grow tw-basis-0"
48
- >
42
+ <div class="vc-app__workspace tw-px-2 tw-w-full tw-overflow-hidden !tw-flex tw-grow tw-basis-0">
49
43
  <slot name="bladeNavigation"></slot>
50
44
  </div>
51
45
 
@@ -74,22 +68,11 @@ import { useRouter } from "vue-router";
74
68
  import VcAppBar from "./_internal/vc-app-bar/vc-app-bar.vue";
75
69
  import VcAppMenu from "./_internal/vc-app-menu/vc-app-menu.vue";
76
70
  import { IMenuClickEvent } from "./../../../../shared";
77
- import { VcAppProps } from "./vc-app-model";
78
-
79
- withDefaults(defineProps<VcAppProps>(), {
80
- pages: () => [],
81
- menuItems: () => [],
82
- mobileMenuItems: () => [],
83
- toolbarItems: () => [],
84
- isReady: false,
85
- isAuthorized: false,
86
- logo: undefined,
87
- version: undefined,
88
- theme: "light",
89
- bladesRefs: () => [],
90
- });
71
+ import { appEmits, appProps } from "./vc-app-model";
72
+
73
+ defineProps(appProps);
91
74
 
92
- const emit = defineEmits(["open", "close", "backlink:click"]);
75
+ const emit = defineEmits(appEmits);
93
76
 
94
77
  console.debug("vc-app: Init vc-app");
95
78
 
@@ -132,8 +115,8 @@ defineExpose({
132
115
 
133
116
  <style lang="scss">
134
117
  :root {
135
- --app-background: linear-gradient(180deg, #e4f5fb 5.06%, #e8f3f2 100%),
136
- linear-gradient(0deg, #e8f2f3, #e8f2f3), #eef2f8;
118
+ --app-background: linear-gradient(180deg, #e4f5fb 5.06%, #e8f3f2 100%), linear-gradient(0deg, #e8f2f3, #e8f2f3),
119
+ #eef2f8;
137
120
  }
138
121
 
139
122
  .vc-app {
@@ -6,15 +6,17 @@
6
6
  v-if="icon"
7
7
  class="tw-text-[color:var(--blade-header-icon-color)] tw-mr-3"
8
8
  >
9
- <VcIcon :icon="icon" size="xxl"></VcIcon>
9
+ <VcIcon
10
+ :icon="icon"
11
+ size="xxl"
12
+ ></VcIcon>
10
13
  </div>
11
14
 
12
15
  <div class="tw-overflow-hidden tw-grow tw-basis-0">
13
16
  <div
14
17
  class="tw-text-[color:var(--blade-header-title-color)] tw-text-lg tw-truncate"
15
18
  :class="{
16
- '!tw-text-[length:var(--blade-header-title-font-size)] tw-font-medium':
17
- !subtitle,
19
+ '!tw-text-[length:var(--blade-header-title-font-size)] tw-font-medium': !subtitle,
18
20
  }"
19
21
  >
20
22
  {{ title }}
@@ -31,17 +33,30 @@
31
33
  <slot name="actions"></slot>
32
34
  </div>
33
35
 
34
- <div v-if="!$isMobile.value" class="tw-flex tw-items-center">
36
+ <div
37
+ v-if="!$isMobile.value"
38
+ class="tw-flex tw-items-center"
39
+ >
35
40
  <template v-if="expandable">
36
41
  <div
37
42
  v-if="expanded"
38
43
  class="tw-text-[color:var(--blade-header-button-color)] tw-ml-4 tw-cursor-pointer hover:tw-text-[color:var(--blade-header-button-color-hover)]"
39
44
  @click="onCollapse"
40
45
  >
41
- <VcIcon icon="fas fa-window-minimize" size="s"></VcIcon>
46
+ <VcIcon
47
+ icon="fas fa-window-minimize"
48
+ size="s"
49
+ ></VcIcon>
42
50
  </div>
43
- <div v-else class="vc-blade-header__button" @click="onExpand">
44
- <VcIcon icon="fas fa-window-maximize" size="s"></VcIcon>
51
+ <div
52
+ v-else
53
+ class="vc-blade-header__button"
54
+ @click="onExpand"
55
+ >
56
+ <VcIcon
57
+ icon="fas fa-window-maximize"
58
+ size="s"
59
+ ></VcIcon>
45
60
  </div>
46
61
  </template>
47
62
  <div
@@ -6,13 +6,19 @@
6
6
  :title="title as string"
7
7
  >
8
8
  <div ref="dropButtonRef">
9
- <div class="vc-blade-toolbar-button__wrap" ref="bladeDropToggle">
9
+ <div
10
+ class="vc-blade-toolbar-button__wrap"
11
+ ref="bladeDropToggle"
12
+ >
10
13
  <VcIcon
11
14
  class="vc-blade-toolbar-button__icon"
12
15
  :icon="icon as string"
13
16
  size="m"
14
17
  ></VcIcon>
15
- <div v-if="isExpanded" class="vc-blade-toolbar-button__title">
18
+ <div
19
+ v-if="isExpanded"
20
+ class="vc-blade-toolbar-button__title"
21
+ >
16
22
  {{ title }}
17
23
  </div>
18
24
  </div>
@@ -51,10 +57,16 @@ export default defineComponent({
51
57
  <script lang="ts" setup>
52
58
  import { VcIcon } from "./../../../../../../../components";
53
59
  import { createPopper, Instance } from "@popperjs/core";
54
- import { IBladeDropdownItem, IBladeToolbar } from "./../../../../../../../../core/types";
60
+ import { IBladeDropdownItem } from "./../../../../../../../../core/types";
55
61
 
56
- export interface Props extends IBladeToolbar {
62
+ export interface Props {
57
63
  isExpanded: boolean;
64
+ icon?: string | (() => string);
65
+ title?: string | unknown;
66
+ bladeOptions?: Record<string, unknown>;
67
+ disabled?: boolean;
68
+ dropdownItems?: { id: number; title: string; icon?: string; clickHandler?(): void }[];
69
+ clickHandler?(): void;
58
70
  }
59
71
 
60
72
  export interface Emits {
@@ -140,15 +152,9 @@ function handleDropItemClick(item: IBladeDropdownItem) {
140
152
  --blade-toolbar-button-icon-color-hover: #257fad;
141
153
  --blade-toolbar-button-icon-color-disabled: #d2d4d7;
142
154
 
143
- --blade-toolbar-button-background-color: var(
144
- --blade-toolbar-background-color
145
- );
146
- --blade-toolbar-button-background-color-hover: var(
147
- --blade-toolbar-background-color
148
- );
149
- --blade-toolbar-button-background-color-disabled: var(
150
- --blade-toolbar-background-color
151
- );
155
+ --blade-toolbar-button-background-color: var(--blade-toolbar-background-color);
156
+ --blade-toolbar-button-background-color-hover: var(--blade-toolbar-background-color);
157
+ --blade-toolbar-button-background-color-disabled: var(--blade-toolbar-background-color);
152
158
  }
153
159
 
154
160
  .vc-blade-toolbar-button {
@@ -4,14 +4,20 @@
4
4
  class="tw-h-[var(--blade-toolbar-height)] tw-bg-[color:var(--blade-toolbar-background-color)] tw-border-b-[color:#eaedf3] tw-border-solid tw-border-b tw-flex tw-box-border tw-w-full tw-content-center tw-items-stretch tw-shrink-0"
5
5
  :class="{ '!tw-h-[var(--blade-toolbar-height-expanded)]': isExpanded }"
6
6
  >
7
- <div
8
- class="tw-grow tw-basis-0 tw-flex tw-content-start tw-items-center tw-overflow-x-auto tw-px-2"
9
- >
10
- <template v-for="item in items" :key="item.id">
7
+ <div class="tw-grow tw-basis-0 tw-flex tw-content-start tw-items-center tw-overflow-x-auto tw-px-2">
8
+ <template
9
+ v-for="item in items"
10
+ :key="item.id"
11
+ >
11
12
  <VcBladeToolbarButton
12
13
  v-if="item.isVisible === undefined || item.isVisible"
13
- v-bind="item"
14
14
  :isExpanded="isExpanded"
15
+ :icon="item.icon"
16
+ :title="item.title"
17
+ :bladeOptions="item.bladeOptions"
18
+ :disabled="item.disabled as boolean"
19
+ :dropdownItems="item.dropdownItems"
20
+ :clickHandler="item.clickHandler"
15
21
  />
16
22
  </template>
17
23
  </div>
@@ -38,18 +44,14 @@ const props = withDefaults(defineProps<Props>(), {
38
44
 
39
45
  const isExpanded = ref(true);
40
46
  try {
41
- isExpanded.value =
42
- localStorage.getItem("VC_BLADE_TOOLBAR_IS_EXPANDED") === "true";
47
+ isExpanded.value = localStorage.getItem("VC_BLADE_TOOLBAR_IS_EXPANDED") === "true";
43
48
  } catch (err) {
44
49
  isExpanded.value = true;
45
50
  }
46
51
 
47
52
  function toggleToolbar() {
48
53
  isExpanded.value = !isExpanded.value;
49
- localStorage.setItem(
50
- "VC_BLADE_TOOLBAR_IS_EXPANDED",
51
- isExpanded.value.toString()
52
- );
54
+ localStorage.setItem("VC_BLADE_TOOLBAR_IS_EXPANDED", isExpanded.value.toString());
53
55
  }
54
56
 
55
57
  function isToolbarVisible() {
@@ -1,7 +1,7 @@
1
1
  import { ComponentPublicInstance } from "vue";
2
- import { VcBladeProps } from "./vc-blade-model";
3
- import { ComponentConstructor } from "./../../../types/ts-helpers"
2
+ import { VcBladeEmits, VcBladeProps } from "./vc-blade-model";
3
+ import { ComponentConstructor } from "./../../../types/ts-helpers";
4
4
  import Blade from "./vc-blade.vue";
5
- export const VcBlade: ComponentConstructor<
6
- ComponentPublicInstance<VcBladeProps>
7
- > = Blade;
5
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
6
+ export const VcBlade: ComponentConstructor<ComponentPublicInstance<VcBladeProps, any, any, any, any, VcBladeEmits>> =
7
+ Blade;
@@ -1,16 +1,35 @@
1
1
  import { IBladeToolbar } from "./../../../../core/types";
2
- import { VNode } from "vue";
2
+ import { PropType, VNode } from "vue";
3
+ import { ExtractTypes } from "./../../../types/ts-helpers";
3
4
 
4
- export interface VcBladeProps {
5
- icon?: string | undefined;
6
- title?: string | undefined;
7
- subtitle?: string | undefined;
8
- width?: number | string | undefined;
9
- expanded?: boolean | undefined;
10
- closable?: boolean | undefined;
11
- toolbarItems?: IBladeToolbar[] | undefined;
12
- onClose?: () => void;
13
- }
5
+ export const bladeProps = {
6
+ icon: String,
7
+ title: String,
8
+ subtitle: String,
9
+ width: {
10
+ type: [Number, String],
11
+ default: "30%",
12
+ },
13
+ expanded: {
14
+ type: Boolean,
15
+ default: false,
16
+ },
17
+ closable: {
18
+ type: Boolean,
19
+ default: true,
20
+ },
21
+ toolbarItems: {
22
+ type: Array as PropType<IBladeToolbar[]>,
23
+ default: () => [],
24
+ },
25
+ };
26
+
27
+ export const bladeEmits = {
28
+ close: () => true,
29
+ };
30
+
31
+ export type VcBladeProps = ExtractTypes<typeof bladeProps>;
32
+ export type VcBladeEmits = typeof bladeEmits;
14
33
 
15
34
  export interface VcBladeSlots {
16
35
  actions: () => VNode[];
@@ -19,8 +19,7 @@ const Template: Story = (args) => ({
19
19
  setup() {
20
20
  return { args };
21
21
  },
22
- template:
23
- '<vc-blade v-bind="args"><div class="p-4">Blade Contents</div></vc-blade>',
22
+ template: '<vc-blade v-bind="args"><div class="p-4">Blade Contents</div></vc-blade>',
24
23
  });
25
24
 
26
25
  export const Blade = Template.bind({});
@@ -2,10 +2,7 @@
2
2
  <div
3
3
  class="vc-blade tw-relative tw-flex tw-shrink-0 tw-flex-col tw-bg-[color:var(--blade-background-color)] tw-rounded-[var(--blade-border-radius)] tw-shadow-[2px_2px_8px_rgba(126,142,157,0.14)] tw-my-4 tw-mx-2 tw-overflow-hidden tw-transition-[width] tw-duration-200"
4
4
  :style="{ width: typeof width === 'number' ? `${width}px` : width }"
5
- :class="[
6
- $attrs.class,
7
- { '!tw-w-full !tw-shrink': $isMobile.value || expanded },
8
- ]"
5
+ :class="[$attrs.class, { '!tw-w-full !tw-shrink': $isMobile.value || expanded }]"
9
6
  >
10
7
  <!-- Init blade header -->
11
8
  <VcBladeHeader
@@ -18,13 +15,19 @@
18
15
  :subtitle="subtitle"
19
16
  @close="$emit('close')"
20
17
  >
21
- <template v-slot:actions v-if="$slots['actions']">
18
+ <template
19
+ v-slot:actions
20
+ v-if="$slots['actions']"
21
+ >
22
22
  <slot name="actions"></slot>
23
23
  </template>
24
24
  </VcBladeHeader>
25
25
 
26
26
  <!-- Set up blade toolbar -->
27
- <VcBladeToolbar class="tw-shrink-0" :items="toolbarItems"></VcBladeToolbar>
27
+ <VcBladeToolbar
28
+ class="tw-shrink-0"
29
+ :items="toolbarItems"
30
+ ></VcBladeToolbar>
28
31
 
29
32
  <slot></slot>
30
33
  </div>
@@ -41,16 +44,11 @@ export default defineComponent({
41
44
  <script lang="ts" setup>
42
45
  import VcBladeHeader from "./_internal/vc-blade-header/vc-blade-header.vue";
43
46
  import VcBladeToolbar from "./_internal/vc-blade-toolbar/vc-blade-toolbar.vue";
44
- import { VcBladeProps } from "./vc-blade-model";
47
+ import { bladeEmits, bladeProps } from "./vc-blade-model";
45
48
 
46
- withDefaults(defineProps<VcBladeProps>(), {
47
- width: "30%",
48
- expanded: false,
49
- closable: true,
50
- toolbarItems: () => [],
51
- });
49
+ defineProps(bladeProps);
52
50
 
53
- defineEmits(["close"]);
51
+ defineEmits(bladeEmits);
54
52
  </script>
55
53
 
56
54
  <style lang="scss">
@@ -1,7 +1,5 @@
1
1
  import { ComponentPublicInstance } from "vue";
2
2
  import { VcDynamicPropertyProps } from "./vc-dynamic-property-model";
3
- import { ComponentConstructor } from "./../../../types/ts-helpers"
3
+ import { ComponentConstructor } from "./../../../types/ts-helpers";
4
4
  import DynamicProperty from "./vc-dynamic-property.vue";
5
- export const VcDynamicProperty: ComponentConstructor<
6
- ComponentPublicInstance<VcDynamicPropertyProps>
7
- > = DynamicProperty;
5
+ export const VcDynamicProperty: ComponentConstructor<ComponentPublicInstance<VcDynamicPropertyProps>> = DynamicProperty;