vueless 0.0.1 → 0.0.3

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 (1083) hide show
  1. package/_readme/README.md +5 -75
  2. package/_readme/UNotify.md +1 -1
  3. package/_readme/UTopLoader.md +2 -2
  4. package/_readme/customization.md +347 -0
  5. package/_readme/installation.md +139 -0
  6. package/_readme/storybook-pages/Customisation.mdx +6 -0
  7. package/_readme/storybook-pages/Installation.mdx +7 -0
  8. package/composable.ui/index.js +341 -30
  9. package/library.vue-tailwind-3/index.js +0 -5
  10. package/library.web-types-gen/lib/build.js +35 -9
  11. package/library.web-types-gen/lib/config.js +10 -4
  12. package/package.json +37 -4
  13. package/plugin.vite/index.js +59 -0
  14. package/plugin.vite/services/iconResolver.service.js +291 -0
  15. package/plugin.vite/services/svgLoader.service.js +76 -0
  16. package/plugin.vite/services/tailwindSafelist.service.js +197 -0
  17. package/plugin.vite/services/unpluginComponentsResolver.js +172 -0
  18. package/service.storybook/index.js +53 -80
  19. package/service.tailwind/index.js +112 -0
  20. package/service.ui/index.js +69 -50
  21. package/ui.button/Docs.mdx +16 -0
  22. package/ui.button/composables/attrs.composable.js +41 -0
  23. package/ui.button/configs/default.config.js +164 -0
  24. package/ui.button/constants/index.js +5 -0
  25. package/ui.button/index.stories.js +8 -7
  26. package/ui.button/index.vue +116 -981
  27. package/ui.button-link/Docs.mdx +16 -0
  28. package/ui.button-link/composables/attrs.composable.js +99 -0
  29. package/ui.button-link/configs/default.config.js +80 -0
  30. package/ui.button-link/constants/index.js +5 -0
  31. package/ui.button-link/index.stories.js +56 -19
  32. package/ui.button-link/index.vue +178 -493
  33. package/ui.button-toggle/Docs.mdx +16 -0
  34. package/ui.button-toggle/composables/attrs.composable.js +16 -0
  35. package/ui.button-toggle/configs/default.config.js +12 -0
  36. package/ui.button-toggle/constants/index.js +7 -0
  37. package/ui.button-toggle/index.stories.js +155 -0
  38. package/ui.button-toggle/index.vue +128 -0
  39. package/ui.button-toggle-item/Docs.mdx +16 -0
  40. package/ui.button-toggle-item/composables/attrs.composable.js +53 -0
  41. package/ui.button-toggle-item/configs/default.config.js +58 -0
  42. package/ui.button-toggle-item/constants/index.js +5 -0
  43. package/ui.button-toggle-item/index.stories.js +77 -0
  44. package/ui.button-toggle-item/index.vue +147 -0
  45. package/ui.container-accordion/composables/attrs.composable.js +45 -0
  46. package/ui.container-accordion/configs/default.config.js +32 -0
  47. package/ui.container-accordion/constants/index.js +5 -0
  48. package/ui.container-accordion/index.stories.js +3 -2
  49. package/ui.container-accordion/index.vue +71 -143
  50. package/ui.container-card/Docs.mdx +16 -0
  51. package/ui.container-card/composable/attrs.composable.js +56 -0
  52. package/ui.container-card/configs/default.config.js +31 -0
  53. package/ui.container-card/constants/index.js +5 -0
  54. package/ui.container-card/index.stories.js +51 -9
  55. package/ui.container-card/index.vue +108 -169
  56. package/ui.container-divider/Docs.mdx +16 -0
  57. package/ui.container-divider/composables/attrs.composable.js +65 -0
  58. package/ui.container-divider/configs/default.config.js +79 -0
  59. package/ui.container-divider/constants/index.js +5 -0
  60. package/ui.container-divider/index.stories.js +41 -8
  61. package/ui.container-divider/index.vue +126 -189
  62. package/ui.container-group/Docs.mdx +16 -0
  63. package/ui.container-group/composables/attrs.composable.js +44 -0
  64. package/ui.container-group/configs/default.config.js +29 -0
  65. package/ui.container-group/constants/index.js +5 -0
  66. package/ui.container-group/index.stories.js +7 -6
  67. package/ui.container-group/index.vue +76 -142
  68. package/ui.container-groups/Docs.mdx +16 -0
  69. package/ui.container-groups/composables/attrs.composable.js +12 -0
  70. package/ui.container-groups/configs/default.config.js +3 -0
  71. package/ui.container-groups/index.stories.js +4 -3
  72. package/ui.container-groups/index.vue +26 -11
  73. package/ui.container-modal/Docs.mdx +16 -0
  74. package/ui.container-modal/composables/attrs.composable.js +90 -0
  75. package/ui.container-modal/configs/default.config.js +69 -0
  76. package/ui.container-modal/constants/index.js +5 -0
  77. package/ui.container-modal/index.stories.js +8 -7
  78. package/ui.container-modal/index.vue +289 -370
  79. package/ui.container-modal-confirm/Docs.mdx +16 -0
  80. package/ui.container-modal-confirm/composable/attrs.composable.js +19 -0
  81. package/ui.container-modal-confirm/configs/default.config.js +12 -0
  82. package/ui.container-modal-confirm/constants/index.js +5 -0
  83. package/ui.container-modal-confirm/index.stories.js +66 -7
  84. package/ui.container-modal-confirm/index.vue +126 -116
  85. package/ui.container-page/Docs.mdx +16 -0
  86. package/ui.container-page/composables/attrs.composable.js +96 -0
  87. package/ui.container-page/configs/default.config.js +71 -0
  88. package/ui.container-page/constants/index.js +5 -0
  89. package/ui.container-page/index.stories.js +7 -34
  90. package/ui.container-page/index.vue +193 -408
  91. package/ui.container-row/Docs.mdx +16 -0
  92. package/ui.container-row/composables/attrs.composable.js +23 -0
  93. package/ui.container-row/configs/default.config.js +14 -0
  94. package/ui.container-row/constants/index.js +5 -0
  95. package/ui.container-row/index.stories.js +10 -0
  96. package/ui.container-row/index.vue +32 -39
  97. package/ui.data-list/composables/attrs.composable.js +45 -0
  98. package/ui.data-list/configs/default.config.js +32 -0
  99. package/ui.data-list/constants/index.js +5 -0
  100. package/ui.data-list/index.stories.js +1 -0
  101. package/ui.data-list/index.vue +156 -265
  102. package/ui.data-table/Docs.mdx +16 -0
  103. package/ui.data-table/composables/attrs.composable.js +188 -0
  104. package/ui.data-table/configs/default.config.js +82 -0
  105. package/ui.data-table/constants/index.js +5 -0
  106. package/ui.data-table/index.stories.js +73 -43
  107. package/ui.data-table/index.vue +600 -961
  108. package/ui.data-table/services/table.service.js +15 -0
  109. package/ui.data-table-cell/composables/attrs.composable.js +24 -0
  110. package/ui.data-table-cell/configs/default.config.js +19 -0
  111. package/ui.data-table-cell/constants/index.js +5 -0
  112. package/ui.data-table-cell/index.vue +44 -0
  113. package/ui.dropdown-badge/Docs.mdx +16 -0
  114. package/ui.dropdown-badge/composables/attrs.composable.js +63 -0
  115. package/ui.dropdown-badge/configs/default.config.js +34 -0
  116. package/ui.dropdown-badge/constants/index.js +5 -0
  117. package/ui.dropdown-badge/index.stories.js +126 -0
  118. package/ui.dropdown-badge/index.vue +233 -0
  119. package/ui.dropdown-button/Docs.mdx +16 -0
  120. package/ui.dropdown-button/composables/attrs.composable.js +63 -0
  121. package/ui.dropdown-button/configs/default.config.js +37 -0
  122. package/ui.dropdown-button/constants/index.js +14 -0
  123. package/ui.dropdown-button/index.stories.js +12 -11
  124. package/ui.dropdown-button/index.vue +231 -291
  125. package/ui.dropdown-item/Docs.mdx +16 -0
  126. package/ui.dropdown-item/composables/attrs.composable.js +13 -0
  127. package/ui.dropdown-item/configs/default.config.js +16 -0
  128. package/ui.dropdown-item/index.stories.js +2 -1
  129. package/ui.dropdown-item/index.vue +38 -55
  130. package/ui.dropdown-link/Docs.mdx +16 -0
  131. package/ui.dropdown-link/composables/attrs.composable.js +65 -0
  132. package/ui.dropdown-link/configs/default.config.js +37 -0
  133. package/ui.dropdown-link/constants/index.js +5 -0
  134. package/ui.dropdown-link/index.stories.js +11 -11
  135. package/ui.dropdown-link/index.vue +217 -287
  136. package/ui.dropdown-list/Docs.mdx +16 -0
  137. package/ui.dropdown-list/composables/attrs.composable.js +91 -0
  138. package/ui.dropdown-list/composables/usePointer.js +77 -0
  139. package/ui.dropdown-list/configs/default.config.js +68 -0
  140. package/ui.dropdown-list/constants/index.js +5 -0
  141. package/ui.dropdown-list/index.stories.js +33 -3
  142. package/ui.dropdown-list/index.vue +271 -112
  143. package/ui.form-calendar/Docs.mdx +52 -0
  144. package/ui.form-calendar/components/DayView.vue +230 -0
  145. package/ui.form-calendar/components/MonthView.vue +114 -0
  146. package/ui.form-calendar/components/YearView.vue +118 -0
  147. package/ui.form-calendar/composables/attrs.composable.js +87 -0
  148. package/ui.form-calendar/configs/default.config.js +115 -0
  149. package/ui.form-calendar/constants/index.js +69 -0
  150. package/ui.form-calendar/index.stories.js +50 -0
  151. package/ui.form-calendar/index.vue +628 -0
  152. package/ui.form-calendar/services/calendar.service.js +201 -0
  153. package/ui.form-calendar/services/date.service.js +121 -0
  154. package/ui.form-calendar/services/formatting.service.js +180 -0
  155. package/ui.form-checkbox/Docs.mdx +16 -0
  156. package/ui.form-checkbox/composables/attrs.composable.js +57 -0
  157. package/ui.form-checkbox/configs/default.config.js +69 -0
  158. package/ui.form-checkbox/constants/index.js +5 -0
  159. package/ui.form-checkbox/index.stories.js +75 -26
  160. package/ui.form-checkbox/index.vue +201 -261
  161. package/ui.form-checkbox-group/Docs.mdx +16 -0
  162. package/ui.form-checkbox-group/composables/attrs.composable.js +17 -0
  163. package/ui.form-checkbox-group/configs/default.config.js +5 -0
  164. package/ui.form-checkbox-group/constants/index.js +5 -0
  165. package/ui.form-checkbox-group/index.stories.js +7 -1
  166. package/ui.form-checkbox-group/index.vue +104 -177
  167. package/ui.form-checkbox-multi-state/Docs.mdx +16 -0
  168. package/ui.form-checkbox-multi-state/composables/attrs.composable.js +24 -0
  169. package/ui.form-checkbox-multi-state/configs/default.config.js +9 -0
  170. package/ui.form-checkbox-multi-state/constants/index.js +5 -0
  171. package/ui.form-checkbox-multi-state/index.stories.js +8 -11
  172. package/ui.form-checkbox-multi-state/index.vue +109 -220
  173. package/ui.form-color-picker/composables/attrs.composable.js +44 -0
  174. package/ui.form-color-picker/configs/default.config.js +52 -0
  175. package/ui.form-color-picker/constants/index.js +5 -0
  176. package/ui.form-color-picker/index.stories.js +63 -0
  177. package/ui.form-color-picker/index.vue +147 -329
  178. package/ui.form-date-picker/Docs.mdx +52 -0
  179. package/ui.form-date-picker/composables/attrs.composable.js +22 -0
  180. package/ui.form-date-picker/configs/default.config.js +27 -0
  181. package/ui.form-date-picker/constants/index.js +5 -0
  182. package/ui.form-date-picker/index.stories.js +21 -8
  183. package/ui.form-date-picker/index.vue +205 -802
  184. package/ui.form-input/Docs.mdx +16 -0
  185. package/ui.form-input/composables/attrs.composable.js +66 -0
  186. package/ui.form-input/configs/default.config.js +72 -0
  187. package/ui.form-input/constants/index.js +5 -0
  188. package/ui.form-input/index.stories.js +46 -12
  189. package/ui.form-input/index.vue +320 -459
  190. package/ui.form-input-file/composables/attrs.composable.js +82 -0
  191. package/ui.form-input-file/configs/default.config.js +51 -0
  192. package/ui.form-input-file/constants/index.js +5 -0
  193. package/ui.form-input-file/index.stories.js +3 -2
  194. package/ui.form-input-file/index.vue +332 -498
  195. package/ui.form-input-money/Docs.mdx +16 -0
  196. package/ui.form-input-money/composables/attrs.composable.js +13 -0
  197. package/ui.form-input-money/composables/useFormatCurrency.js +82 -0
  198. package/ui.form-input-money/configs/default.config.js +16 -0
  199. package/ui.form-input-money/constants/index.js +5 -0
  200. package/ui.form-input-money/index.stories.js +71 -43
  201. package/ui.form-input-money/index.vue +241 -237
  202. package/ui.form-input-money/services/format.service.js +72 -0
  203. package/ui.form-input-number/Docs.mdx +16 -0
  204. package/ui.form-input-number/composables/attrs.composable.js +47 -0
  205. package/ui.form-input-number/configs/default.config.js +33 -0
  206. package/ui.form-input-number/constants/index.js +5 -0
  207. package/ui.form-input-number/index.stories.js +73 -3
  208. package/ui.form-input-number/index.vue +138 -106
  209. package/ui.form-input-rating/composables/attrs.composable.js +34 -0
  210. package/ui.form-input-rating/configs/default.config.js +25 -0
  211. package/ui.form-input-rating/constants/index.js +5 -0
  212. package/ui.form-input-rating/index.stories.js +3 -2
  213. package/ui.form-input-rating/index.vue +152 -209
  214. package/ui.form-input-search/composables/attrs.composable.js +21 -0
  215. package/ui.form-input-search/configs/default.config.js +20 -0
  216. package/ui.form-input-search/constants/index.js +5 -0
  217. package/ui.form-input-search/index.stories.js +8 -4
  218. package/ui.form-input-search/index.vue +192 -189
  219. package/ui.form-label/Docs.mdx +16 -0
  220. package/ui.form-label/composables/attrs.composable.js +65 -0
  221. package/ui.form-label/configs/default.config.js +95 -0
  222. package/ui.form-label/constants/index.js +13 -0
  223. package/ui.form-label/index.stories.js +107 -0
  224. package/ui.form-label/index.vue +170 -0
  225. package/ui.form-radio/Docs.mdx +16 -0
  226. package/ui.form-radio/composables/attrs.composable.js +34 -0
  227. package/ui.form-radio/configs/default.config.js +47 -0
  228. package/ui.form-radio/constants/index.js +5 -0
  229. package/ui.form-radio/index.stories.js +12 -10
  230. package/ui.form-radio/index.vue +141 -148
  231. package/ui.form-radio-card/Docs.mdx +16 -0
  232. package/ui.form-radio-card/composables/attrs.composable.js +30 -0
  233. package/ui.form-radio-card/configs/default.config.js +25 -0
  234. package/ui.form-radio-card/constants/index.js +5 -0
  235. package/ui.form-radio-card/index.stories.js +19 -10
  236. package/ui.form-radio-card/index.vue +132 -146
  237. package/ui.form-radio-card/services/variant.service.js +15 -0
  238. package/ui.form-radio-group/Docs.mdx +16 -0
  239. package/ui.form-radio-group/composables/attrs.composable.js +27 -0
  240. package/ui.form-radio-group/configs/default.config.js +18 -0
  241. package/ui.form-radio-group/constants/index.js +5 -0
  242. package/ui.form-radio-group/index.stories.js +1 -0
  243. package/ui.form-radio-group/index.vue +114 -85
  244. package/ui.form-select/Docs.mdx +16 -0
  245. package/ui.form-select/composables/attrs.composable.js +172 -0
  246. package/ui.form-select/configs/default.config.js +131 -0
  247. package/ui.form-select/constants/index.js +19 -0
  248. package/ui.form-select/index.stories.js +194 -38
  249. package/ui.form-select/index.vue +638 -910
  250. package/ui.form-select/services/select.service.js +98 -0
  251. package/ui.form-switch/composables/attrs.composable.js +77 -0
  252. package/ui.form-switch/configs/default.config.js +72 -0
  253. package/ui.form-switch/constants/index.js +5 -0
  254. package/ui.form-switch/index.stories.js +9 -42
  255. package/ui.form-switch/index.vue +177 -632
  256. package/ui.form-switch/services/variant.service.js +31 -0
  257. package/ui.form-textarea/Docs.mdx +16 -0
  258. package/ui.form-textarea/composables/attrs.composable.js +52 -0
  259. package/ui.form-textarea/configs/default.config.js +68 -0
  260. package/ui.form-textarea/constants/index.js +5 -0
  261. package/ui.form-textarea/index.stories.js +47 -5
  262. package/ui.form-textarea/index.vue +238 -353
  263. package/ui.image-avatar/composables/attrs.composable.js +34 -0
  264. package/ui.image-avatar/configs/default.config.js +42 -0
  265. package/ui.image-avatar/constants/index.js +5 -0
  266. package/ui.image-avatar/index.stories.js +7 -6
  267. package/ui.image-avatar/index.vue +94 -226
  268. package/ui.image-icon/Docs.mdx +16 -0
  269. package/ui.image-icon/composables/attrs.composable.js +65 -0
  270. package/ui.image-icon/configs/default.config.js +90 -0
  271. package/ui.image-icon/constants/index.js +5 -0
  272. package/ui.image-icon/index.stories.js +16 -35
  273. package/ui.image-icon/index.vue +165 -453
  274. package/ui.image-logo/composables/attrs.composable.js +41 -0
  275. package/ui.image-logo/configs/default.config.js +38 -0
  276. package/ui.image-logo/constants/index.js +5 -0
  277. package/ui.image-logo/index.stories.js +8 -8
  278. package/ui.image-logo/index.vue +80 -166
  279. package/ui.navigation-pagination/composables/attrs.composable.js +41 -0
  280. package/ui.navigation-pagination/configs/default.config.js +24 -0
  281. package/ui.navigation-pagination/constants/index.js +8 -0
  282. package/ui.navigation-pagination/index.stories.js +23 -6
  283. package/ui.navigation-pagination/index.vue +262 -102
  284. package/ui.navigation-stepper/composables/attrs.composable.js +25 -0
  285. package/ui.navigation-stepper/configs/default.config.js +13 -0
  286. package/ui.navigation-stepper/constants/index.js +5 -0
  287. package/ui.navigation-stepper/index.stories.js +1 -0
  288. package/ui.navigation-stepper/index.vue +87 -88
  289. package/ui.navigation-tab/composables/attrs.composable.js +30 -0
  290. package/ui.navigation-tab/configs/default.config.js +22 -0
  291. package/ui.navigation-tab/constants/index.js +5 -0
  292. package/ui.navigation-tab/index.stories.js +7 -11
  293. package/ui.navigation-tab/index.vue +58 -85
  294. package/ui.navigation-tabs/composables/attrs.composable.js +24 -0
  295. package/ui.navigation-tabs/configs/default.config.js +14 -0
  296. package/ui.navigation-tabs/constants/index.js +5 -0
  297. package/ui.navigation-tabs/index.stories.js +7 -11
  298. package/ui.navigation-tabs/index.vue +68 -88
  299. package/ui.other-dot/composables/attrs.composable.js +32 -0
  300. package/ui.other-dot/configs/default.config.js +21 -0
  301. package/ui.other-dot/constants/index.js +5 -0
  302. package/ui.other-dot/index.stories.js +5 -5
  303. package/ui.other-dot/index.vue +41 -89
  304. package/ui.other-loader/composables/attrs.composable.js +51 -0
  305. package/ui.other-loader/configs/default.config.js +47 -0
  306. package/ui.other-loader/constants/index.js +5 -0
  307. package/ui.other-loader/index.stories.js +14 -13
  308. package/ui.other-loader/index.vue +58 -107
  309. package/ui.text-alert/composables/attrs.composable.js +48 -0
  310. package/ui.text-alert/configs/default.config.js +51 -0
  311. package/ui.text-alert/constatns/index.js +5 -0
  312. package/ui.text-alert/index.stories.js +39 -6
  313. package/ui.text-alert/index.vue +95 -210
  314. package/ui.text-badge/Docs.mdx +16 -0
  315. package/ui.text-badge/composables/attrs.composable.js +49 -0
  316. package/ui.text-badge/configs/default.config.js +51 -0
  317. package/ui.text-badge/constants/index.js +5 -0
  318. package/ui.text-badge/index.stories.js +190 -0
  319. package/ui.text-badge/index.vue +120 -0
  320. package/ui.text-block/composables/attrs.composable.js +31 -0
  321. package/ui.text-block/configs/default.config.js +35 -0
  322. package/ui.text-block/constatns/index.js +5 -0
  323. package/ui.text-block/index.stories.js +2 -1
  324. package/ui.text-block/index.vue +55 -116
  325. package/ui.text-empty/Docs.mdx +16 -0
  326. package/ui.text-empty/composables/attrs.composable.js +43 -0
  327. package/ui.text-empty/configs/default.config.js +4 -2
  328. package/ui.text-empty/constants/index.js +5 -0
  329. package/ui.text-empty/index.stories.js +3 -3
  330. package/ui.text-empty/index.vue +13 -14
  331. package/ui.text-file/composables/attrs.composable.js +37 -0
  332. package/ui.text-file/configs/default.config.js +15 -0
  333. package/ui.text-file/index.stories.js +2 -1
  334. package/ui.text-file/index.vue +63 -72
  335. package/ui.text-files/composables/attrs.composable.js +19 -0
  336. package/ui.text-files/configs/default.config.js +9 -0
  337. package/ui.text-files/constants/index.js +5 -0
  338. package/ui.text-files/index.stories.js +1 -0
  339. package/ui.text-files/index.vue +73 -50
  340. package/ui.text-header/Docs.mdx +16 -0
  341. package/ui.text-header/composables/attrs.composable.js +34 -0
  342. package/ui.text-header/configs/default.config.js +45 -0
  343. package/ui.text-header/constants/index.js +5 -0
  344. package/ui.text-header/index.stories.js +34 -38
  345. package/ui.text-header/index.vue +67 -221
  346. package/ui.text-money/Docs.mdx +16 -0
  347. package/ui.text-money/composables/attrs.composable.js +65 -0
  348. package/ui.text-money/configs/default.config.js +69 -0
  349. package/ui.text-money/constants/index.js +7 -0
  350. package/ui.text-money/index.stories.js +24 -22
  351. package/ui.text-money/index.vue +187 -506
  352. package/ui.text-money/services/money.services.js +24 -0
  353. package/_readme/layoutAdmin.md +0 -703
  354. package/_readme/layoutApp.md +0 -153
  355. package/_readme/layoutAuth.md +0 -190
  356. package/config.rollup-plugin-visualizer/index.js +0 -11
  357. package/config.unplugin-vue-i18n/index.js +0 -9
  358. package/config.vite-plugin-pwa/index.js +0 -132
  359. package/config.vite-svg-loader/index.js +0 -22
  360. package/constant.component-names/index.js +0 -6
  361. package/index.js +0 -151
  362. package/layout-ui.loader/index.vue +0 -61
  363. package/layout-ui.loader/store/index.js +0 -17
  364. package/layout-ui.loader-top/components/TopProgress.vue +0 -277
  365. package/layout-ui.loader-top/index.vue +0 -218
  366. package/layout-ui.loader-top/store/index.js +0 -55
  367. package/layout-ui.notify/index.stories.js +0 -102
  368. package/layout-ui.notify/index.vue +0 -254
  369. package/layout-ui.viewport/index.vue +0 -78
  370. package/layout-ui.viewport/store/index.js +0 -47
  371. package/layout.admin/AsideBlock.vue +0 -534
  372. package/layout.admin/AsideInfoBlock.vue +0 -85
  373. package/layout.admin/BrandBlock.vue +0 -380
  374. package/layout.admin/ChangeThemeModal.vue +0 -179
  375. package/layout.admin/HelperBlock.vue +0 -132
  376. package/layout.admin/MainMenu.vue +0 -234
  377. package/layout.admin/MainSubMenu.vue +0 -196
  378. package/layout.admin/MobileMainMenu.vue +0 -197
  379. package/layout.admin/MobileSubBlock.vue +0 -171
  380. package/layout.admin/RightInfoBlock.vue +0 -166
  381. package/layout.admin/UserBlock.vue +0 -290
  382. package/layout.admin/images/abstract-01.jpg +0 -0
  383. package/layout.admin/images/abstract-01_preview.jpg +0 -0
  384. package/layout.admin/index.vue +0 -544
  385. package/layout.admin/mixins/index.js +0 -54
  386. package/layout.admin/store/index.js +0 -167
  387. package/layout.auth/FeaturesBlock.vue +0 -57
  388. package/layout.auth/FooterMenu.vue +0 -90
  389. package/layout.auth/LanguageSwitcher.vue +0 -90
  390. package/layout.auth/index.vue +0 -237
  391. package/library.vue-tailwind-3/t-input.js +0 -68
  392. package/library.vue-tailwind-3/t-modal.js +0 -409
  393. package/library.vue-tailwind-3/t-pagination.js +0 -309
  394. package/library.vue-tailwind-3/t-table.js +0 -362
  395. package/library.vue-tailwind-3/t-textarea.js +0 -84
  396. package/resolver.unplugin-vue-components/index.js +0 -94
  397. package/service.api/index.js +0 -275
  398. package/service.data/index.js +0 -75
  399. package/service.date/index.js +0 -222
  400. package/service.i18n/index.js +0 -145
  401. package/service.idb-keyval/index.js +0 -37
  402. package/service.jwt/index.js +0 -27
  403. package/service.money/index.js +0 -86
  404. package/service.notify/index.js +0 -87
  405. package/service.redirect/index.js +0 -20
  406. package/service.validation/index.js +0 -55
  407. package/service.worker/index.js +0 -26
  408. package/ui.button-expand/index.stories.js +0 -44
  409. package/ui.button-expand/index.vue +0 -22
  410. package/ui.button-expand-item/index.stories.js +0 -69
  411. package/ui.button-expand-item/index.vue +0 -154
  412. package/ui.button-group/index.stories.js +0 -104
  413. package/ui.button-group/index.vue +0 -165
  414. package/ui.button-group-item/index.stories.js +0 -74
  415. package/ui.button-group-item/index.vue +0 -283
  416. package/ui.container-modal/components/ArrowLink.vue +0 -87
  417. package/ui.container-page/components/ArrowLink.vue +0 -87
  418. package/ui.data-table/components/DateSeparator.vue +0 -99
  419. package/ui.data-table/components/EmptyTableMsg.vue +0 -46
  420. package/ui.data-table/components/TableCheckbox.vue +0 -109
  421. package/ui.dropdown-tag/index.stories.js +0 -125
  422. package/ui.dropdown-tag/index.vue +0 -285
  423. package/ui.form-date-picker-range/components/VariantButton.vue +0 -136
  424. package/ui.form-date-picker-range/components/VariantInput.vue +0 -101
  425. package/ui.form-date-picker-range/index.stories.js +0 -93
  426. package/ui.form-date-picker-range/index.vue +0 -1537
  427. package/ui.form-date-picker-range/services/dateRange.service.js +0 -178
  428. package/ui.form-input-money/_components/ConvertibleInput.vue +0 -773
  429. package/ui.form-input-money/_components/RangeInput.vue +0 -356
  430. package/ui.form-input-money/_components/SingleInput.vue +0 -378
  431. package/ui.form-select-multi/index.stories.js +0 -131
  432. package/ui.form-select-multi/index.vue +0 -882
  433. package/ui.icons-metronic/ATM.svg +0 -8
  434. package/ui.icons-metronic/Active-call.svg +0 -8
  435. package/ui.icons-metronic/Add-music.svg +0 -8
  436. package/ui.icons-metronic/Add-user.svg +0 -8
  437. package/ui.icons-metronic/Address-card.svg +0 -7
  438. package/ui.icons-metronic/Adjust.svg +0 -7
  439. package/ui.icons-metronic/Adress-book1.svg +0 -8
  440. package/ui.icons-metronic/Adress-book2.svg +0 -8
  441. package/ui.icons-metronic/Air-ballon.svg +0 -8
  442. package/ui.icons-metronic/Air-conditioning.svg +0 -8
  443. package/ui.icons-metronic/Airplay-video.svg +0 -8
  444. package/ui.icons-metronic/Airplay.svg +0 -8
  445. package/ui.icons-metronic/Airpods.svg +0 -10
  446. package/ui.icons-metronic/Alarm-clock.svg +0 -9
  447. package/ui.icons-metronic/Align-auto.svg +0 -8
  448. package/ui.icons-metronic/Align-center.svg +0 -8
  449. package/ui.icons-metronic/Align-justify.svg +0 -8
  450. package/ui.icons-metronic/Align-left.svg +0 -9
  451. package/ui.icons-metronic/Align-right.svg +0 -8
  452. package/ui.icons-metronic/Anchor-center-down.svg +0 -11
  453. package/ui.icons-metronic/Anchor-center-up.svg +0 -11
  454. package/ui.icons-metronic/Anchor-center.svg +0 -8
  455. package/ui.icons-metronic/Anchor-left-down.svg +0 -11
  456. package/ui.icons-metronic/Anchor-left-up.svg +0 -11
  457. package/ui.icons-metronic/Anchor-left.svg +0 -11
  458. package/ui.icons-metronic/Anchor-right-down.svg +0 -11
  459. package/ui.icons-metronic/Anchor-right-up.svg +0 -11
  460. package/ui.icons-metronic/Anchor-right.svg +0 -11
  461. package/ui.icons-metronic/Android.svg +0 -8
  462. package/ui.icons-metronic/Angle Grinder.svg +0 -9
  463. package/ui.icons-metronic/Angle-double-down.svg +0 -8
  464. package/ui.icons-metronic/Angle-double-left.svg +0 -8
  465. package/ui.icons-metronic/Angle-double-right.svg +0 -8
  466. package/ui.icons-metronic/Angle-double-up.svg +0 -8
  467. package/ui.icons-metronic/Angle-down.svg +0 -7
  468. package/ui.icons-metronic/Angle-left.svg +0 -7
  469. package/ui.icons-metronic/Angle-right.svg +0 -7
  470. package/ui.icons-metronic/Angle-up.svg +0 -7
  471. package/ui.icons-metronic/Apple-Watch.svg +0 -8
  472. package/ui.icons-metronic/Archive.svg +0 -7
  473. package/ui.icons-metronic/Armchair.svg +0 -8
  474. package/ui.icons-metronic/Arrow-down.svg +0 -8
  475. package/ui.icons-metronic/Arrow-from-bottom.svg +0 -9
  476. package/ui.icons-metronic/Arrow-from-left.svg +0 -9
  477. package/ui.icons-metronic/Arrow-from-right.svg +0 -9
  478. package/ui.icons-metronic/Arrow-from-top.svg +0 -9
  479. package/ui.icons-metronic/Arrow-left.svg +0 -8
  480. package/ui.icons-metronic/Arrow-right.svg +0 -8
  481. package/ui.icons-metronic/Arrow-to-bottom.svg +0 -9
  482. package/ui.icons-metronic/Arrow-to-left.svg +0 -9
  483. package/ui.icons-metronic/Arrow-to-right.svg +0 -9
  484. package/ui.icons-metronic/Arrow-to-up.svg +0 -9
  485. package/ui.icons-metronic/Arrow-up.svg +0 -8
  486. package/ui.icons-metronic/Arrows-h.svg +0 -9
  487. package/ui.icons-metronic/Arrows-v.svg +0 -9
  488. package/ui.icons-metronic/Arrows.svg +0 -8
  489. package/ui.icons-metronic/Article.svg +0 -8
  490. package/ui.icons-metronic/Attachment1.svg +0 -8
  491. package/ui.icons-metronic/Attachment2.svg +0 -10
  492. package/ui.icons-metronic/Axe.svg +0 -8
  493. package/ui.icons-metronic/Back.svg +0 -8
  494. package/ui.icons-metronic/Backspace.svg +0 -8
  495. package/ui.icons-metronic/Backward.svg +0 -8
  496. package/ui.icons-metronic/Bag-chair.svg +0 -8
  497. package/ui.icons-metronic/Bag1.svg +0 -8
  498. package/ui.icons-metronic/Bag2.svg +0 -8
  499. package/ui.icons-metronic/Baking-glove.svg +0 -8
  500. package/ui.icons-metronic/Barcode-read.svg +0 -8
  501. package/ui.icons-metronic/Barcode-scan.svg +0 -9
  502. package/ui.icons-metronic/Barcode.svg +0 -8
  503. package/ui.icons-metronic/Bath.svg +0 -8
  504. package/ui.icons-metronic/Battery-charging.svg +0 -9
  505. package/ui.icons-metronic/Battery-empty.svg +0 -8
  506. package/ui.icons-metronic/Battery-full.svg +0 -8
  507. package/ui.icons-metronic/Battery-half.svg +0 -8
  508. package/ui.icons-metronic/Bed.svg +0 -9
  509. package/ui.icons-metronic/Beer.svg +0 -11
  510. package/ui.icons-metronic/Bezier-curve.svg +0 -8
  511. package/ui.icons-metronic/Binocular.svg +0 -7
  512. package/ui.icons-metronic/Bitcoin.svg +0 -9
  513. package/ui.icons-metronic/Blender.svg +0 -7
  514. package/ui.icons-metronic/Bluetooth.svg +0 -8
  515. package/ui.icons-metronic/Bold.svg +0 -7
  516. package/ui.icons-metronic/Book-open.svg +0 -8
  517. package/ui.icons-metronic/Book.svg +0 -13
  518. package/ui.icons-metronic/Bookmark.svg +0 -7
  519. package/ui.icons-metronic/Border.svg +0 -7
  520. package/ui.icons-metronic/Bottle1.svg +0 -8
  521. package/ui.icons-metronic/Bottle2.svg +0 -8
  522. package/ui.icons-metronic/Bowl.svg +0 -8
  523. package/ui.icons-metronic/Box.svg +0 -8
  524. package/ui.icons-metronic/Box1.svg +0 -8
  525. package/ui.icons-metronic/Box2.svg +0 -8
  526. package/ui.icons-metronic/Box3.svg +0 -8
  527. package/ui.icons-metronic/Brassiere.svg +0 -7
  528. package/ui.icons-metronic/Bread.svg +0 -8
  529. package/ui.icons-metronic/Briefcase.svg +0 -8
  530. package/ui.icons-metronic/Broom.svg +0 -8
  531. package/ui.icons-metronic/Brush.svg +0 -8
  532. package/ui.icons-metronic/Brush2.svg +0 -8
  533. package/ui.icons-metronic/Bucket.svg +0 -8
  534. package/ui.icons-metronic/Bucket2.svg +0 -8
  535. package/ui.icons-metronic/Building.svg +0 -9
  536. package/ui.icons-metronic/Bulb1.svg +0 -10
  537. package/ui.icons-metronic/Bulb2.svg +0 -10
  538. package/ui.icons-metronic/Bullet-list.svg +0 -8
  539. package/ui.icons-metronic/Burger.svg +0 -9
  540. package/ui.icons-metronic/CD.svg +0 -8
  541. package/ui.icons-metronic/CMD.svg +0 -7
  542. package/ui.icons-metronic/CPU1.svg +0 -14
  543. package/ui.icons-metronic/CPU2.svg +0 -20
  544. package/ui.icons-metronic/Cake.svg +0 -9
  545. package/ui.icons-metronic/Calculator.svg +0 -8
  546. package/ui.icons-metronic/Call#1.svg +0 -7
  547. package/ui.icons-metronic/Call.svg +0 -7
  548. package/ui.icons-metronic/Camera.svg +0 -9
  549. package/ui.icons-metronic/Cap-1.svg +0 -8
  550. package/ui.icons-metronic/Cap-2.svg +0 -7
  551. package/ui.icons-metronic/Cap-3.svg +0 -8
  552. package/ui.icons-metronic/Cap.svg +0 -8
  553. package/ui.icons-metronic/Cardboard-vr.svg +0 -8
  554. package/ui.icons-metronic/Carrot.svg +0 -10
  555. package/ui.icons-metronic/Cart1.svg +0 -8
  556. package/ui.icons-metronic/Cart2.svg +0 -8
  557. package/ui.icons-metronic/Cart3.svg +0 -8
  558. package/ui.icons-metronic/Cassete.svg +0 -9
  559. package/ui.icons-metronic/Celcium.svg +0 -8
  560. package/ui.icons-metronic/Chair1.svg +0 -8
  561. package/ui.icons-metronic/Chair2.svg +0 -8
  562. package/ui.icons-metronic/Chart-bar1.svg +0 -10
  563. package/ui.icons-metronic/Chart-bar2.svg +0 -10
  564. package/ui.icons-metronic/Chart-bar3.svg +0 -10
  565. package/ui.icons-metronic/Chart-line1.svg +0 -8
  566. package/ui.icons-metronic/Chart-line2.svg +0 -8
  567. package/ui.icons-metronic/Chart-pie.svg +0 -8
  568. package/ui.icons-metronic/Chat-check.svg +0 -8
  569. package/ui.icons-metronic/Chat-error.svg +0 -8
  570. package/ui.icons-metronic/Chat-locked.svg +0 -8
  571. package/ui.icons-metronic/Chat-smile.svg +0 -8
  572. package/ui.icons-metronic/Chat1.svg +0 -8
  573. package/ui.icons-metronic/Chat2.svg +0 -8
  574. package/ui.icons-metronic/Chat4.svg +0 -7
  575. package/ui.icons-metronic/Chat5.svg +0 -8
  576. package/ui.icons-metronic/Chat6.svg +0 -8
  577. package/ui.icons-metronic/Check.svg +0 -7
  578. package/ui.icons-metronic/Cheese.svg +0 -8
  579. package/ui.icons-metronic/Chef.svg +0 -8
  580. package/ui.icons-metronic/Chicken.svg +0 -10
  581. package/ui.icons-metronic/Circle.svg +0 -7
  582. package/ui.icons-metronic/Clip.svg +0 -7
  583. package/ui.icons-metronic/Clipboard-check.svg +0 -9
  584. package/ui.icons-metronic/Clipboard-list.svg +0 -14
  585. package/ui.icons-metronic/Clipboard.svg +0 -10
  586. package/ui.icons-metronic/Clock.svg +0 -8
  587. package/ui.icons-metronic/Close.svg +0 -9
  588. package/ui.icons-metronic/Cloud-download.svg +0 -8
  589. package/ui.icons-metronic/Cloud-fog.svg +0 -8
  590. package/ui.icons-metronic/Cloud-sun.svg +0 -8
  591. package/ui.icons-metronic/Cloud-upload.svg +0 -8
  592. package/ui.icons-metronic/Cloud-wind.svg +0 -9
  593. package/ui.icons-metronic/Cloud1.svg +0 -7
  594. package/ui.icons-metronic/Cloud2.svg +0 -8
  595. package/ui.icons-metronic/Cloudy-night.svg +0 -8
  596. package/ui.icons-metronic/Cloudy.svg +0 -8
  597. package/ui.icons-metronic/Code.svg +0 -8
  598. package/ui.icons-metronic/Code2.svg +0 -7
  599. package/ui.icons-metronic/Coffee1.svg +0 -11
  600. package/ui.icons-metronic/Coffee2.svg +0 -9
  601. package/ui.icons-metronic/Color-profile.svg +0 -8
  602. package/ui.icons-metronic/Color.svg +0 -7
  603. package/ui.icons-metronic/Commit.svg +0 -8
  604. package/ui.icons-metronic/Commode1.svg +0 -8
  605. package/ui.icons-metronic/Commode2.svg +0 -8
  606. package/ui.icons-metronic/Compass.svg +0 -7
  607. package/ui.icons-metronic/Compass2.svg +0 -8
  608. package/ui.icons-metronic/Compilation.svg +0 -11
  609. package/ui.icons-metronic/Compiled-file.svg +0 -11
  610. package/ui.icons-metronic/Compiling.svg +0 -8
  611. package/ui.icons-metronic/Component.svg +0 -7
  612. package/ui.icons-metronic/Contact1.svg +0 -8
  613. package/ui.icons-metronic/Control.svg +0 -7
  614. package/ui.icons-metronic/Cookie.svg +0 -10
  615. package/ui.icons-metronic/Cooking-book.svg +0 -14
  616. package/ui.icons-metronic/Cooking-pot.svg +0 -8
  617. package/ui.icons-metronic/Couch.svg +0 -8
  618. package/ui.icons-metronic/Credit-card.svg +0 -9
  619. package/ui.icons-metronic/Crop.svg +0 -8
  620. package/ui.icons-metronic/Crown.svg +0 -8
  621. package/ui.icons-metronic/Cupboard.svg +0 -8
  622. package/ui.icons-metronic/Cursor.svg +0 -7
  623. package/ui.icons-metronic/Curtains.svg +0 -8
  624. package/ui.icons-metronic/Cutting board.svg +0 -8
  625. package/ui.icons-metronic/DVD.svg +0 -8
  626. package/ui.icons-metronic/Day-rain.svg +0 -8
  627. package/ui.icons-metronic/Deer.svg +0 -8
  628. package/ui.icons-metronic/Delete-user.svg +0 -8
  629. package/ui.icons-metronic/Deleted-file.svg +0 -8
  630. package/ui.icons-metronic/Deleted-folder.svg +0 -8
  631. package/ui.icons-metronic/Diagnostics.svg +0 -9
  632. package/ui.icons-metronic/Dial-numbers.svg +0 -15
  633. package/ui.icons-metronic/Difference.svg +0 -8
  634. package/ui.icons-metronic/Dinner.svg +0 -11
  635. package/ui.icons-metronic/Dinner2.svg +0 -8
  636. package/ui.icons-metronic/Direction1.svg +0 -7
  637. package/ui.icons-metronic/Direction2.svg +0 -7
  638. package/ui.icons-metronic/Dish.svg +0 -8
  639. package/ui.icons-metronic/Dishes.svg +0 -8
  640. package/ui.icons-metronic/Dislike.svg +0 -8
  641. package/ui.icons-metronic/Display1.svg +0 -8
  642. package/ui.icons-metronic/Display2.svg +0 -9
  643. package/ui.icons-metronic/Display3.svg +0 -9
  644. package/ui.icons-metronic/Dollar.svg +0 -9
  645. package/ui.icons-metronic/Done-circle.svg +0 -8
  646. package/ui.icons-metronic/Door-open.svg +0 -8
  647. package/ui.icons-metronic/Double-check.svg +0 -8
  648. package/ui.icons-metronic/Down-2.svg +0 -8
  649. package/ui.icons-metronic/Down-left.svg +0 -8
  650. package/ui.icons-metronic/Down-right.svg +0 -8
  651. package/ui.icons-metronic/Download.svg +0 -9
  652. package/ui.icons-metronic/DownloadedFile.svg +0 -8
  653. package/ui.icons-metronic/Downloads-folder.svg +0 -8
  654. package/ui.icons-metronic/Dress.svg +0 -8
  655. package/ui.icons-metronic/Duplicate.svg +0 -8
  656. package/ui.icons-metronic/Earth.svg +0 -8
  657. package/ui.icons-metronic/Edit-text.svg +0 -8
  658. package/ui.icons-metronic/Edit.svg +0 -8
  659. package/ui.icons-metronic/Edit2.svg +0 -7
  660. package/ui.icons-metronic/Eject.svg +0 -8
  661. package/ui.icons-metronic/Equalizer.svg +0 -10
  662. package/ui.icons-metronic/Eraser.svg +0 -7
  663. package/ui.icons-metronic/Error-circle.svg +0 -8
  664. package/ui.icons-metronic/Euro.svg +0 -8
  665. package/ui.icons-metronic/Exchange.svg +0 -10
  666. package/ui.icons-metronic/Expand-arrows.svg +0 -8
  667. package/ui.icons-metronic/Export.svg +0 -9
  668. package/ui.icons-metronic/Fahrenheit.svg +0 -8
  669. package/ui.icons-metronic/Fan.svg +0 -9
  670. package/ui.icons-metronic/File-cloud.svg +0 -8
  671. package/ui.icons-metronic/File-done.svg +0 -8
  672. package/ui.icons-metronic/File-minus.svg +0 -8
  673. package/ui.icons-metronic/File-plus.svg +0 -8
  674. package/ui.icons-metronic/File.svg +0 -9
  675. package/ui.icons-metronic/Filter.svg +0 -7
  676. package/ui.icons-metronic/Fire.svg +0 -7
  677. package/ui.icons-metronic/Fireplace.svg +0 -8
  678. package/ui.icons-metronic/Fish.svg +0 -8
  679. package/ui.icons-metronic/Flag.svg +0 -8
  680. package/ui.icons-metronic/Flashlight.svg +0 -8
  681. package/ui.icons-metronic/Flatten.svg +0 -8
  682. package/ui.icons-metronic/Flip-horizontal.svg +0 -9
  683. package/ui.icons-metronic/Flip-vertical.svg +0 -9
  684. package/ui.icons-metronic/Flower1.svg +0 -10
  685. package/ui.icons-metronic/Flower2.svg +0 -11
  686. package/ui.icons-metronic/Flower3.svg +0 -9
  687. package/ui.icons-metronic/Fog.svg +0 -12
  688. package/ui.icons-metronic/Folder-check.svg +0 -8
  689. package/ui.icons-metronic/Folder-cloud.svg +0 -8
  690. package/ui.icons-metronic/Folder-error.svg +0 -8
  691. package/ui.icons-metronic/Folder-heart.svg +0 -8
  692. package/ui.icons-metronic/Folder-minus.svg +0 -8
  693. package/ui.icons-metronic/Folder-plus.svg +0 -8
  694. package/ui.icons-metronic/Folder-solid.svg +0 -7
  695. package/ui.icons-metronic/Folder-star.svg +0 -8
  696. package/ui.icons-metronic/Folder-thunder.svg +0 -8
  697. package/ui.icons-metronic/Folder.svg +0 -7
  698. package/ui.icons-metronic/Folder2.svg +0 -7
  699. package/ui.icons-metronic/Font.svg +0 -8
  700. package/ui.icons-metronic/Fork-spoon-knife.svg +0 -12
  701. package/ui.icons-metronic/Fork-spoon.svg +0 -10
  702. package/ui.icons-metronic/Fork.svg +0 -8
  703. package/ui.icons-metronic/Forward.svg +0 -7
  704. package/ui.icons-metronic/Forward2.svg +0 -8
  705. package/ui.icons-metronic/French Bread.svg +0 -7
  706. package/ui.icons-metronic/Fridge.svg +0 -7
  707. package/ui.icons-metronic/Frying-pan.svg +0 -8
  708. package/ui.icons-metronic/Gameboy.svg +0 -8
  709. package/ui.icons-metronic/Gamepad1.svg +0 -8
  710. package/ui.icons-metronic/Gamepad2.svg +0 -8
  711. package/ui.icons-metronic/Gas-stove.svg +0 -8
  712. package/ui.icons-metronic/Generator.svg +0 -10
  713. package/ui.icons-metronic/Gift.svg +0 -8
  714. package/ui.icons-metronic/Git1.svg +0 -9
  715. package/ui.icons-metronic/Git2.svg +0 -12
  716. package/ui.icons-metronic/Git3.svg +0 -10
  717. package/ui.icons-metronic/Git4.svg +0 -10
  718. package/ui.icons-metronic/Github.svg +0 -8
  719. package/ui.icons-metronic/Glass-martini.svg +0 -8
  720. package/ui.icons-metronic/Globe.svg +0 -8
  721. package/ui.icons-metronic/Grater.svg +0 -8
  722. package/ui.icons-metronic/Group-chat.svg +0 -8
  723. package/ui.icons-metronic/Group-folders.svg +0 -8
  724. package/ui.icons-metronic/Group.svg +0 -8
  725. package/ui.icons-metronic/H1.svg +0 -8
  726. package/ui.icons-metronic/H2.svg +0 -8
  727. package/ui.icons-metronic/Half-heart.svg +0 -8
  728. package/ui.icons-metronic/Half-star.svg +0 -8
  729. package/ui.icons-metronic/Hanger.svg +0 -7
  730. package/ui.icons-metronic/Hard-drive.svg +0 -8
  731. package/ui.icons-metronic/Hat.svg +0 -8
  732. package/ui.icons-metronic/Headphones.svg +0 -8
  733. package/ui.icons-metronic/Heart.svg +0 -7
  734. package/ui.icons-metronic/Hidden.svg +0 -9
  735. package/ui.icons-metronic/Highvoltage.svg +0 -7
  736. package/ui.icons-metronic/Home-heart.svg +0 -8
  737. package/ui.icons-metronic/Home.svg +0 -7
  738. package/ui.icons-metronic/Homepod.svg +0 -8
  739. package/ui.icons-metronic/Horizontal.svg +0 -8
  740. package/ui.icons-metronic/Hummer.svg +0 -8
  741. package/ui.icons-metronic/Hummer2.svg +0 -9
  742. package/ui.icons-metronic/Ice-cream1.svg +0 -8
  743. package/ui.icons-metronic/Ice-cream2.svg +0 -8
  744. package/ui.icons-metronic/Image.svg +0 -7
  745. package/ui.icons-metronic/Import.svg +0 -9
  746. package/ui.icons-metronic/Incoming-box.svg +0 -9
  747. package/ui.icons-metronic/Incoming-call.svg +0 -8
  748. package/ui.icons-metronic/Incoming-mail.svg +0 -8
  749. package/ui.icons-metronic/Info-circle.svg +0 -9
  750. package/ui.icons-metronic/Interselect.svg +0 -8
  751. package/ui.icons-metronic/Iron.svg +0 -8
  752. package/ui.icons-metronic/Itallic.svg +0 -7
  753. package/ui.icons-metronic/Join-1.svg +0 -8
  754. package/ui.icons-metronic/Join-2.svg +0 -8
  755. package/ui.icons-metronic/Join-3.svg +0 -8
  756. package/ui.icons-metronic/Kettle.svg +0 -8
  757. package/ui.icons-metronic/Key.svg +0 -8
  758. package/ui.icons-metronic/Keyboard.svg +0 -8
  759. package/ui.icons-metronic/Kitchen-scale.svg +0 -8
  760. package/ui.icons-metronic/Knife1.svg +0 -8
  761. package/ui.icons-metronic/Knife2.svg +0 -8
  762. package/ui.icons-metronic/KnifeAndFork1.svg +0 -10
  763. package/ui.icons-metronic/KnifeAndFork2.svg +0 -10
  764. package/ui.icons-metronic/LTE1.svg +0 -8
  765. package/ui.icons-metronic/LTE2.svg +0 -8
  766. package/ui.icons-metronic/Ladder.svg +0 -8
  767. package/ui.icons-metronic/Ladle.svg +0 -8
  768. package/ui.icons-metronic/Lamp1.svg +0 -10
  769. package/ui.icons-metronic/Lamp2.svg +0 -9
  770. package/ui.icons-metronic/Laptop-macbook.svg +0 -8
  771. package/ui.icons-metronic/Laptop.svg +0 -8
  772. package/ui.icons-metronic/Layers.svg +0 -8
  773. package/ui.icons-metronic/Layout-3d.svg +0 -8
  774. package/ui.icons-metronic/Layout-4-blocks.svg +0 -8
  775. package/ui.icons-metronic/Layout-arrange.svg +0 -8
  776. package/ui.icons-metronic/Layout-grid.svg +0 -8
  777. package/ui.icons-metronic/Layout-horizontal.svg +0 -8
  778. package/ui.icons-metronic/Layout-left-panel-1.svg +0 -8
  779. package/ui.icons-metronic/Layout-left-panel-2.svg +0 -8
  780. package/ui.icons-metronic/Layout-right-panel-1.svg +0 -8
  781. package/ui.icons-metronic/Layout-right-panel-2.svg +0 -8
  782. package/ui.icons-metronic/Layout-top-panel-1.svg +0 -8
  783. package/ui.icons-metronic/Layout-top-panel-2.svg +0 -8
  784. package/ui.icons-metronic/Layout-top-panel-3.svg +0 -8
  785. package/ui.icons-metronic/Layout-top-panel-4.svg +0 -8
  786. package/ui.icons-metronic/Layout-top-panel-5.svg +0 -8
  787. package/ui.icons-metronic/Layout-top-panel-6.svg +0 -8
  788. package/ui.icons-metronic/Layout-vertical.svg +0 -8
  789. package/ui.icons-metronic/Left 3.svg +0 -8
  790. package/ui.icons-metronic/Left-2.svg +0 -8
  791. package/ui.icons-metronic/Left-circle.svg +0 -8
  792. package/ui.icons-metronic/Library.svg +0 -8
  793. package/ui.icons-metronic/Like.svg +0 -8
  794. package/ui.icons-metronic/Line.svg +0 -9
  795. package/ui.icons-metronic/Loader.svg +0 -9
  796. package/ui.icons-metronic/Loading.svg +0 -9
  797. package/ui.icons-metronic/Location-arrow.svg +0 -7
  798. package/ui.icons-metronic/Lock-circle.svg +0 -8
  799. package/ui.icons-metronic/Lock-overturning.svg +0 -8
  800. package/ui.icons-metronic/Lock.svg +0 -13
  801. package/ui.icons-metronic/Locked-folder.svg +0 -8
  802. package/ui.icons-metronic/MC.svg +0 -8
  803. package/ui.icons-metronic/Magic.svg +0 -8
  804. package/ui.icons-metronic/Mail-at.svg +0 -7
  805. package/ui.icons-metronic/Mail-attachment.svg +0 -8
  806. package/ui.icons-metronic/Mail-box.svg +0 -8
  807. package/ui.icons-metronic/Mail-error.svg +0 -8
  808. package/ui.icons-metronic/Mail-heart.svg +0 -8
  809. package/ui.icons-metronic/Mail-locked.svg +0 -8
  810. package/ui.icons-metronic/Mail-notification.svg +0 -8
  811. package/ui.icons-metronic/Mail-opened.svg +0 -8
  812. package/ui.icons-metronic/Mail-unocked.svg +0 -8
  813. package/ui.icons-metronic/Mail.svg +0 -7
  814. package/ui.icons-metronic/Mailbox.svg +0 -8
  815. package/ui.icons-metronic/Marker1.svg +0 -7
  816. package/ui.icons-metronic/Marker2.svg +0 -7
  817. package/ui.icons-metronic/Mask.svg +0 -8
  818. package/ui.icons-metronic/Media-folder.svg +0 -8
  819. package/ui.icons-metronic/Media-library1.svg +0 -10
  820. package/ui.icons-metronic/Media-library2.svg +0 -8
  821. package/ui.icons-metronic/Media-library3.svg +0 -14
  822. package/ui.icons-metronic/Media.svg +0 -8
  823. package/ui.icons-metronic/Menu.svg +0 -8
  824. package/ui.icons-metronic/Menu2.svg +0 -4
  825. package/ui.icons-metronic/Mic.svg +0 -8
  826. package/ui.icons-metronic/Midi.svg +0 -13
  827. package/ui.icons-metronic/Minus.svg +0 -8
  828. package/ui.icons-metronic/Minus2.svg +0 -6
  829. package/ui.icons-metronic/Mirror.svg +0 -8
  830. package/ui.icons-metronic/Miso-soup.svg +0 -8
  831. package/ui.icons-metronic/Missed-call.svg +0 -8
  832. package/ui.icons-metronic/Mixer.svg +0 -8
  833. package/ui.icons-metronic/Money.svg +0 -8
  834. package/ui.icons-metronic/Moon.svg +0 -7
  835. package/ui.icons-metronic/Mouse.svg +0 -9
  836. package/ui.icons-metronic/Movie-Lane2.svg +0 -8
  837. package/ui.icons-metronic/Movie-lane1.svg +0 -8
  838. package/ui.icons-metronic/Music-cloud.svg +0 -8
  839. package/ui.icons-metronic/Music-note.svg +0 -7
  840. package/ui.icons-metronic/Music.svg +0 -8
  841. package/ui.icons-metronic/Music2.svg +0 -7
  842. package/ui.icons-metronic/Mute.svg +0 -8
  843. package/ui.icons-metronic/Next.svg +0 -8
  844. package/ui.icons-metronic/Night-fog.svg +0 -8
  845. package/ui.icons-metronic/Night-rain.svg +0 -8
  846. package/ui.icons-metronic/Notification2.svg +0 -8
  847. package/ui.icons-metronic/Notifications1.svg +0 -7
  848. package/ui.icons-metronic/Option.svg +0 -8
  849. package/ui.icons-metronic/Orange.svg +0 -8
  850. package/ui.icons-metronic/Other1.svg +0 -9
  851. package/ui.icons-metronic/Other2.svg +0 -9
  852. package/ui.icons-metronic/Outgoing-box.svg +0 -9
  853. package/ui.icons-metronic/Outgoing-call.svg +0 -8
  854. package/ui.icons-metronic/Outgoing-mail.svg +0 -8
  855. package/ui.icons-metronic/Outlet.svg +0 -8
  856. package/ui.icons-metronic/Panties.svg +0 -7
  857. package/ui.icons-metronic/Pantone.svg +0 -9
  858. package/ui.icons-metronic/Paragraph.svg +0 -7
  859. package/ui.icons-metronic/Patch.svg +0 -9
  860. package/ui.icons-metronic/Pause.svg +0 -7
  861. package/ui.icons-metronic/Pen-tool-vector.svg +0 -8
  862. package/ui.icons-metronic/PenAndRuller.svg +0 -8
  863. package/ui.icons-metronic/Pencil.svg +0 -8
  864. package/ui.icons-metronic/Phone.svg +0 -9
  865. package/ui.icons-metronic/Picker.svg +0 -8
  866. package/ui.icons-metronic/Picture.svg +0 -10
  867. package/ui.icons-metronic/Pictures1.svg +0 -10
  868. package/ui.icons-metronic/Pictures2.svg +0 -12
  869. package/ui.icons-metronic/Pixels.svg +0 -12
  870. package/ui.icons-metronic/Pizza.svg +0 -10
  871. package/ui.icons-metronic/Play.svg +0 -7
  872. package/ui.icons-metronic/Playlist1.svg +0 -8
  873. package/ui.icons-metronic/Playlist2.svg +0 -8
  874. package/ui.icons-metronic/Plus.svg +0 -8
  875. package/ui.icons-metronic/Plus2.svg +0 -7
  876. package/ui.icons-metronic/Polygon.svg +0 -7
  877. package/ui.icons-metronic/Position.svg +0 -7
  878. package/ui.icons-metronic/Position2.svg +0 -9
  879. package/ui.icons-metronic/Pound.svg +0 -8
  880. package/ui.icons-metronic/Price1.svg +0 -7
  881. package/ui.icons-metronic/Price2.svg +0 -11
  882. package/ui.icons-metronic/Printer.svg +0 -8
  883. package/ui.icons-metronic/Protected-file.svg +0 -8
  884. package/ui.icons-metronic/Puzzle.svg +0 -7
  885. package/ui.icons-metronic/Question-circle.svg +0 -8
  886. package/ui.icons-metronic/Quote1.svg +0 -8
  887. package/ui.icons-metronic/Quote2.svg +0 -8
  888. package/ui.icons-metronic/RSS.svg +0 -9
  889. package/ui.icons-metronic/Radio.svg +0 -11
  890. package/ui.icons-metronic/Rain1.svg +0 -8
  891. package/ui.icons-metronic/Rain2.svg +0 -8
  892. package/ui.icons-metronic/Rain5.svg +0 -8
  893. package/ui.icons-metronic/Rainbow.svg +0 -9
  894. package/ui.icons-metronic/Range-hood.svg +0 -8
  895. package/ui.icons-metronic/Readed-mail.svg +0 -8
  896. package/ui.icons-metronic/Rec.svg +0 -7
  897. package/ui.icons-metronic/Rectangle.svg +0 -7
  898. package/ui.icons-metronic/Redo.svg +0 -7
  899. package/ui.icons-metronic/Repeat-one.svg +0 -8
  900. package/ui.icons-metronic/Repeat.svg +0 -8
  901. package/ui.icons-metronic/Reply-all.svg +0 -8
  902. package/ui.icons-metronic/Reply.svg +0 -7
  903. package/ui.icons-metronic/Right 3.svg +0 -8
  904. package/ui.icons-metronic/Right-2.svg +0 -8
  905. package/ui.icons-metronic/Right-circle.svg +0 -8
  906. package/ui.icons-metronic/Right.svg +0 -7
  907. package/ui.icons-metronic/Road-Cone.svg +0 -8
  908. package/ui.icons-metronic/Roller.svg +0 -9
  909. package/ui.icons-metronic/Rolling-pin.svg +0 -8
  910. package/ui.icons-metronic/Rouble.svg +0 -8
  911. package/ui.icons-metronic/Roulette.svg +0 -8
  912. package/ui.icons-metronic/Route.svg +0 -9
  913. package/ui.icons-metronic/Router1.svg +0 -8
  914. package/ui.icons-metronic/Router2.svg +0 -8
  915. package/ui.icons-metronic/Ruller.svg +0 -7
  916. package/ui.icons-metronic/SD-card.svg +0 -7
  917. package/ui.icons-metronic/Sad.svg +0 -8
  918. package/ui.icons-metronic/Safe-chat.svg +0 -8
  919. package/ui.icons-metronic/Safe.svg +0 -8
  920. package/ui.icons-metronic/Sale1.svg +0 -8
  921. package/ui.icons-metronic/Sale2.svg +0 -10
  922. package/ui.icons-metronic/Saturation.svg +0 -8
  923. package/ui.icons-metronic/Saucepan.svg +0 -8
  924. package/ui.icons-metronic/Save.svg +0 -8
  925. package/ui.icons-metronic/Scale.svg +0 -8
  926. package/ui.icons-metronic/Scissors.svg +0 -8
  927. package/ui.icons-metronic/Screwdriver.svg +0 -8
  928. package/ui.icons-metronic/Search.svg +0 -8
  929. package/ui.icons-metronic/Select.svg +0 -8
  930. package/ui.icons-metronic/Selected-file.svg +0 -8
  931. package/ui.icons-metronic/Send.svg +0 -7
  932. package/ui.icons-metronic/Sending mail.svg +0 -8
  933. package/ui.icons-metronic/Sending.svg +0 -8
  934. package/ui.icons-metronic/Server.svg +0 -9
  935. package/ui.icons-metronic/Settings#3.svg +0 -8
  936. package/ui.icons-metronic/Settings-1.svg +0 -8
  937. package/ui.icons-metronic/Settings-2.svg +0 -7
  938. package/ui.icons-metronic/Settings.svg +0 -8
  939. package/ui.icons-metronic/Settings4.svg +0 -8
  940. package/ui.icons-metronic/Share.svg +0 -8
  941. package/ui.icons-metronic/Share2.svg +0 -10
  942. package/ui.icons-metronic/Shield-check.svg +0 -8
  943. package/ui.icons-metronic/Shield-disabled.svg +0 -8
  944. package/ui.icons-metronic/Shield-protected.svg +0 -8
  945. package/ui.icons-metronic/Shield-thunder.svg +0 -8
  946. package/ui.icons-metronic/Shield-user.svg +0 -9
  947. package/ui.icons-metronic/Shift.svg +0 -7
  948. package/ui.icons-metronic/Shirt.svg +0 -8
  949. package/ui.icons-metronic/Shoes.svg +0 -8
  950. package/ui.icons-metronic/Shorts.svg +0 -7
  951. package/ui.icons-metronic/Shovel.svg +0 -8
  952. package/ui.icons-metronic/Shovel2.svg +0 -8
  953. package/ui.icons-metronic/Shuffle.svg +0 -8
  954. package/ui.icons-metronic/Shutdown.svg +0 -8
  955. package/ui.icons-metronic/Sieve.svg +0 -8
  956. package/ui.icons-metronic/Sign-in.svg +0 -9
  957. package/ui.icons-metronic/Sign-out.svg +0 -9
  958. package/ui.icons-metronic/Size.svg +0 -8
  959. package/ui.icons-metronic/Sketch.svg +0 -8
  960. package/ui.icons-metronic/Smile.svg +0 -8
  961. package/ui.icons-metronic/Sneakers.svg +0 -8
  962. package/ui.icons-metronic/Snoozed-mail.svg +0 -8
  963. package/ui.icons-metronic/Snow.svg +0 -8
  964. package/ui.icons-metronic/Snow1.svg +0 -8
  965. package/ui.icons-metronic/Snow2.svg +0 -8
  966. package/ui.icons-metronic/Snow3.svg +0 -8
  967. package/ui.icons-metronic/Socket-eu.svg +0 -7
  968. package/ui.icons-metronic/Socket-us.svg +0 -7
  969. package/ui.icons-metronic/Socks.svg +0 -8
  970. package/ui.icons-metronic/Sort1.svg +0 -8
  971. package/ui.icons-metronic/Sort2.svg +0 -7
  972. package/ui.icons-metronic/Sort3.svg +0 -7
  973. package/ui.icons-metronic/Spam.svg +0 -7
  974. package/ui.icons-metronic/Spatula.svg +0 -8
  975. package/ui.icons-metronic/Speaker.svg +0 -8
  976. package/ui.icons-metronic/Spoon.svg +0 -9
  977. package/ui.icons-metronic/Spy.svg +0 -8
  978. package/ui.icons-metronic/Stairs.svg +0 -7
  979. package/ui.icons-metronic/Stamp.svg +0 -8
  980. package/ui.icons-metronic/Star-outlined.svg +0 -6
  981. package/ui.icons-metronic/Star.svg +0 -7
  982. package/ui.icons-metronic/Stop.svg +0 -7
  983. package/ui.icons-metronic/Storm.svg +0 -8
  984. package/ui.icons-metronic/Strikethrough.svg +0 -8
  985. package/ui.icons-metronic/Substract.svg +0 -8
  986. package/ui.icons-metronic/Sun-fog.svg +0 -8
  987. package/ui.icons-metronic/Sun-glasses.svg +0 -8
  988. package/ui.icons-metronic/Sun.svg +0 -8
  989. package/ui.icons-metronic/Suset1.svg +0 -8
  990. package/ui.icons-metronic/Suset2.svg +0 -8
  991. package/ui.icons-metronic/Sushi.svg +0 -8
  992. package/ui.icons-metronic/Swiss-knife.svg +0 -8
  993. package/ui.icons-metronic/T-Shirt.svg +0 -7
  994. package/ui.icons-metronic/TV1.svg +0 -9
  995. package/ui.icons-metronic/TV2.svg +0 -8
  996. package/ui.icons-metronic/Tablet.svg +0 -8
  997. package/ui.icons-metronic/Target.svg +0 -8
  998. package/ui.icons-metronic/Temperature-empty.svg +0 -7
  999. package/ui.icons-metronic/Temperature-full.svg +0 -7
  1000. package/ui.icons-metronic/Temperature-half.svg +0 -7
  1001. package/ui.icons-metronic/Terminal.svg +0 -8
  1002. package/ui.icons-metronic/Text-height.svg +0 -8
  1003. package/ui.icons-metronic/Text-width.svg +0 -8
  1004. package/ui.icons-metronic/Text.svg +0 -7
  1005. package/ui.icons-metronic/Thumbtack.svg +0 -8
  1006. package/ui.icons-metronic/Thunder-circle.svg +0 -8
  1007. package/ui.icons-metronic/Thunder-move.svg +0 -8
  1008. package/ui.icons-metronic/Thunder-night.svg +0 -8
  1009. package/ui.icons-metronic/Thunder.svg +0 -7
  1010. package/ui.icons-metronic/Thunder2.svg +0 -8
  1011. package/ui.icons-metronic/Ticket.svg +0 -7
  1012. package/ui.icons-metronic/Tie.svg +0 -8
  1013. package/ui.icons-metronic/Time-schedule.svg +0 -8
  1014. package/ui.icons-metronic/Timer.svg +0 -10
  1015. package/ui.icons-metronic/Toilet.svg +0 -8
  1016. package/ui.icons-metronic/Tools.svg +0 -8
  1017. package/ui.icons-metronic/Towel.svg +0 -7
  1018. package/ui.icons-metronic/Trash.svg +0 -8
  1019. package/ui.icons-metronic/Trash2.svg +0 -8
  1020. package/ui.icons-metronic/Triangle.svg +0 -7
  1021. package/ui.icons-metronic/Two-bottles.svg +0 -8
  1022. package/ui.icons-metronic/USB.svg +0 -9
  1023. package/ui.icons-metronic/Umbrella.svg +0 -8
  1024. package/ui.icons-metronic/Underline.svg +0 -8
  1025. package/ui.icons-metronic/Undo.svg +0 -7
  1026. package/ui.icons-metronic/Union.svg +0 -7
  1027. package/ui.icons-metronic/Unlock.svg +0 -13
  1028. package/ui.icons-metronic/Up-2.svg +0 -8
  1029. package/ui.icons-metronic/Up-down.svg +0 -10
  1030. package/ui.icons-metronic/Up-left.svg +0 -8
  1031. package/ui.icons-metronic/Up-right.svg +0 -8
  1032. package/ui.icons-metronic/Update.svg +0 -7
  1033. package/ui.icons-metronic/Upload-folder.svg +0 -8
  1034. package/ui.icons-metronic/Upload.svg +0 -9
  1035. package/ui.icons-metronic/Uploaded-file.svg +0 -8
  1036. package/ui.icons-metronic/Urgent-mail.svg +0 -8
  1037. package/ui.icons-metronic/Usb-storage.svg +0 -8
  1038. package/ui.icons-metronic/User-folder.svg +0 -9
  1039. package/ui.icons-metronic/User.svg +0 -8
  1040. package/ui.icons-metronic/Vertical.svg +0 -8
  1041. package/ui.icons-metronic/Video-camera.svg +0 -8
  1042. package/ui.icons-metronic/Visible.svg +0 -8
  1043. package/ui.icons-metronic/Volume-down.svg +0 -8
  1044. package/ui.icons-metronic/Volume-full.svg +0 -8
  1045. package/ui.icons-metronic/Volume-half.svg +0 -8
  1046. package/ui.icons-metronic/Volume-up.svg +0 -8
  1047. package/ui.icons-metronic/Vynil.svg +0 -8
  1048. package/ui.icons-metronic/Waiting.svg +0 -7
  1049. package/ui.icons-metronic/Wallet.svg +0 -9
  1050. package/ui.icons-metronic/Wallet2.svg +0 -8
  1051. package/ui.icons-metronic/Wallet3.svg +0 -9
  1052. package/ui.icons-metronic/Warning-1-circle.svg +0 -9
  1053. package/ui.icons-metronic/Warning-2.svg +0 -9
  1054. package/ui.icons-metronic/Washer.svg +0 -8
  1055. package/ui.icons-metronic/Watch1.svg +0 -10
  1056. package/ui.icons-metronic/Watch2.svg +0 -10
  1057. package/ui.icons-metronic/Water-mixer.svg +0 -9
  1058. package/ui.icons-metronic/Weight1.svg +0 -8
  1059. package/ui.icons-metronic/Weight2.svg +0 -8
  1060. package/ui.icons-metronic/Wi-fi.svg +0 -8
  1061. package/ui.icons-metronic/Wind.svg +0 -8
  1062. package/ui.icons-metronic/Wine.svg +0 -8
  1063. package/ui.icons-metronic/Wood-horse.svg +0 -7
  1064. package/ui.icons-metronic/Wood1.svg +0 -8
  1065. package/ui.icons-metronic/Wood2.svg +0 -8
  1066. package/ui.icons-metronic/Write.svg +0 -8
  1067. package/ui.icons-metronic/Youtube.svg +0 -8
  1068. package/ui.icons-metronic/ZoomMinus.svg +0 -9
  1069. package/ui.icons-metronic/ZoomPlus.svg +0 -9
  1070. package/ui.icons-metronic/air-dryer.svg +0 -8
  1071. package/ui.icons-metronic/iMac.svg +0 -9
  1072. package/ui.icons-metronic/iPhone-X.svg +0 -8
  1073. package/ui.icons-metronic/iPhone-back.svg +0 -7
  1074. package/ui.icons-metronic/iPhone-x-back.svg +0 -7
  1075. package/ui.icons-metronic/index.js +0 -4
  1076. package/ui.image-icon/cli.mjs +0 -159
  1077. package/ui.text-empty/services/variant.service.js +0 -22
  1078. package/ui.text-field/index.stories.js +0 -60
  1079. package/ui.text-field/index.vue +0 -109
  1080. package/ui.text-tag/index.stories.js +0 -90
  1081. package/ui.text-tag/index.vue +0 -178
  1082. package/web-types.json +0 -6320
  1083. /package/ui.form-input/{text-security-disc.woff → assets/fonts/text-security-disc.woff} +0 -0
@@ -1,1101 +1,740 @@
1
1
  <template>
2
- <div class="mono-table-wrapper" :data-cy="dataCy">
2
+ <div :data-cy="dataCy" v-bind="wrapperAttrs">
3
3
  <div
4
- v-show="isShownFixedOrActionsHeader"
5
- ref="headerFixedRow"
6
- class="mono-table-custom-header"
7
- :class="[headerClasses.actionsHeader, headerClasses.fixedHeader, headerClasses.compact]"
4
+ v-show="isShownStickyOrActionsHeader"
5
+ ref="headerStickyRow"
8
6
  :style="tableRowWidthStyle"
7
+ v-bind="customHeaderAttrs"
9
8
  >
10
9
  <UCheckbox
11
10
  v-if="selectable"
12
11
  v-model="selectAll"
13
- :partial="!isSelectedAllRows"
14
- class="mono-table-custom-header-item"
15
12
  size="sm"
13
+ :partial="!isSelectedAllRows"
14
+ :data-cy="`${dataCy}-select-all`"
15
+ v-bind="selectAllCheckboxAttrs"
16
16
  />
17
17
 
18
- <template v-if="selectedRowsLength">
19
- <div class="selected-rows-count">
20
- {{ selectedRowsLength }}
21
- </div>
18
+ <template v-if="selectedRows.length">
19
+ <div v-bind="selectedRowsCountAttrs" v-text="selectedRows.length" />
22
20
 
23
- <!-- @slot Use it to add actions instead table head (it appears when you select items in table). -->
21
+ <!-- @slot Use it to add actions instead table head (it appears when you select rows in table). -->
24
22
  <slot name="thead-actions" :selected-rows="selectedRows" />
25
23
  </template>
26
24
 
27
25
  <template v-else>
28
26
  <div
29
- v-for="(item, index) in headers"
27
+ v-for="(column, index) in columns"
30
28
  :key="index"
31
- class="mono-table-custom-header-item"
32
- :class="item.thClass"
29
+ v-bind="customHeaderItemAttrs(column.thClass)"
33
30
  >
34
- <template v-if="isExistSlot(`thead-${item.value}`)">
35
- <!-- @slot Use it to customise table header item. -->
36
- <slot :name="`thead-${item.value}`" :text="item.text" />
31
+ <template v-if="hasSlotContent($slots[`thead-${column.key}`])">
32
+ <!-- @slot Use it to customise table column. -->
33
+ <slot :name="`thead-${column.key}`" :label="column.label" />
37
34
  </template>
38
35
 
39
36
  <template v-else>
40
- {{ item.text }}
37
+ {{ column.label }}
41
38
  </template>
39
+
40
+ <!-- @slot Use it to add content after table column. -->
41
+ <slot :name="`thead-${column.key}-after`" />
42
42
  </div>
43
43
  </template>
44
44
 
45
- <UTopLoader
46
- v-if="loaderResourceName && isFixedHeader"
47
- class="table-fixed-loader"
48
- :resource-names="loaderResourceName"
45
+ <!-- TODO: Change to loaders config after laoader refactoring -->
46
+ <ULoaderTop
47
+ v-if="resource && isHeaderSticky"
48
+ :resource-names="resource"
49
49
  position="absolute"
50
+ v-bind="headerStickyLoaderAttrs"
50
51
  />
51
52
  </div>
52
53
 
53
- <div ref="tableWrapper" class="mono-table-inner-wrapper" :class="tableWrapClass">
54
- <t-table class="mono-table" :data="tableItems" :headers="headers" :class="tableClasses">
55
- <template #thead="{ thClass, data }">
56
- <thead>
57
- <tr ref="headerRow" :class="headerClasses.hideHeader">
58
- <th v-if="selectable" class="table-checkbox">
59
- <UCheckbox
60
- v-model="selectAll"
61
- size="sm"
62
- :show-partial-icon="!isSelectedAllRows"
63
- partial
64
- :data-cy="`${dataCy}-select-all`"
65
- />
66
- </th>
67
-
68
- <th v-for="(item, index) in data" :key="index" :class="[thClass, item.thClass]">
69
- <template v-if="isExistSlot(`thead-${item.value}`)">
70
- <!-- @slot Use it to customise table header item. -->
71
- <slot :name="`thead-${item.value}`" :text="item.text" />
72
- </template>
73
-
74
- <template v-else>
75
- {{ item.text }}
76
- </template>
77
- </th>
78
- </tr>
79
- <UTopLoader
80
- v-if="loaderResourceName"
81
- class="table-loader"
82
- :resource-names="loaderResourceName"
83
- position="absolute"
84
- />
85
- </thead>
86
- </template>
87
-
88
- <template #row="{ row, rowIndex }">
89
- <tr
90
- v-if="rowIndex === firstRow && isShownSlot.beforeFirstRow"
91
- class="more-row"
92
- :class="beforeFirstRowClass"
93
- >
94
- <td v-if="isShownSlot.beforeFirstRow" :colspan="colsCount" :class="firstRowClass">
95
- <!-- @slot Use it to add something before first row. -->
96
- <slot name="before-first-row" />
97
- </td>
98
-
99
- <td v-else class="first-row" />
54
+ <div ref="tableWrapper" v-bind="tableWrapperAttrs">
55
+ <table v-bind="tableAttrs">
56
+ <thead v-bind="headerAttrs" :style="tableRowWidthStyle">
57
+ <tr v-if="hasSlotContent($slots['before-header-row'])" v-bind="headerRowAttrs">
58
+ <slot name="before-header-row" />
100
59
  </tr>
101
60
 
102
- <DateSeparator
103
- v-if="isShownDateSeparator(rowIndex, row.date)"
104
- :class="dateSeparatorRowClass(rowIndex)"
105
- :date="row.date.primaryRow || row.date"
106
- :cols-count="colsCount"
107
- :i18n="i18n"
108
- />
109
-
110
- <tr
111
- v-if="!isShownRow(row)"
112
- class="table-row"
113
- :class="rowClass(row)"
114
- :data-cy="`${dataCy}-row`"
115
- @click="onClickRow(row)"
116
- >
117
- <td v-if="selectable" class="col-checkbox">
118
- <TableCheckbox
119
- v-model:values="selectedRows"
120
- :value="rowIndex"
121
- :data-cy="`${dataCy}-table-body-checkbox`"
122
- @click.stop="onClickSelectRow(rowIndex)"
61
+ <tr ref="headerRow" v-bind="headerRowCellAttrs">
62
+ <th v-if="selectable" v-bind="headerCellAttrs(config.headerCheckboxWrapper)">
63
+ <UCheckbox
64
+ v-model="selectAll"
65
+ size="sm"
66
+ :partial="!isSelectedAllRows"
67
+ :data-cy="`${dataCy}-select-all`"
68
+ v-bind="headerSelectAllCheckboxAttrs"
123
69
  />
124
- </td>
70
+ </th>
125
71
 
126
- <td
127
- v-for="(value, key, index) in getFilteredRow(row)"
72
+ <th
73
+ v-for="(column, index) in normalizedColumns"
128
74
  :key="index"
129
- :class="getTdClass(key)"
75
+ v-bind="headerCellAttrs(column.thClass)"
130
76
  >
131
- <template v-if="isExistSlot(`cell-${key}`)">
132
- <div
133
- :class="tableContainerClass(index)"
134
- :style="setLeftMargin(row.nestedLevel)"
135
- @click="onClickShowItem(row)"
136
- >
137
- <div v-if="isShownIcon({ index, row })" class="table-button">
138
- <UIcon
139
- v-if="row.isHidden"
140
- name="add"
141
- class="table-container-icon"
142
- size="xs"
143
- :color="isIconActive(row)"
144
- variant="light"
145
- interactive
146
- />
147
-
148
- <UIcon
149
- v-else
150
- name="remove"
151
- class="table-container-icon"
152
- size="xs"
153
- variant="light"
154
- interactive
155
- />
156
- </div>
157
- <!-- @slot Use it to customise table cell item (in whole column). -->
158
- <slot :name="`cell-${key}`" :value="value" />
159
- </div>
77
+ <template v-if="hasSlotContent($slots[`thead-${column.key}`])">
78
+ <!-- @slot Use it to customise table column. -->
79
+ <slot :name="`thead-${column.key}`" :label="column.label" />
160
80
  </template>
161
81
 
162
- <template v-else-if="isExistSlot('cell-other')">
163
- <slot name="cell-other" :value="value" />
82
+ <template v-else>
83
+ {{ column.label }}
164
84
  </template>
165
85
 
166
- <template v-else-if="key === 'date'">
167
- <div v-if="value.format">
168
- {{ dateConverter(value.timestamp, value.format) }}
169
- </div>
86
+ <!-- @slot Use it to add content after table column. -->
87
+ <slot :name="`thead-${column.key}-after`" />
88
+ </th>
89
+ </tr>
170
90
 
171
- <div v-else>
172
- {{ dateConverter(value) }}
173
- </div>
174
- </template>
91
+ <!-- TODO: Change to loaders config after laoader refactoring -->
92
+ <ULoaderTop
93
+ v-if="resource"
94
+ :resource-names="resource"
95
+ position="absolute"
96
+ v-bind="tableLoaderAttrs"
97
+ />
98
+ </thead>
99
+
100
+ <tbody v-if="tableRows.length" v-bind="bodyAttrs">
101
+ <template v-for="(row, rowIndex) in tableRows" :key="row.id">
102
+ <tr v-if="rowIndex === firstRow" v-bind="beforeFirstRowAttrs">
103
+ <UTableCell
104
+ v-if="hasSlotContent($slots['before-first-row'])"
105
+ :colspan="colsCount"
106
+ :compact="compact"
107
+ v-bind="beforeFirstRowCellAttrs"
108
+ >
109
+ <!-- @slot Use it to add something before first row. -->
110
+ <slot name="before-first-row" />
111
+ </UTableCell>
112
+
113
+ <td v-else :colspan="colsCount" v-bind="beforeFirstRowCellAttrs" />
114
+ </tr>
175
115
 
176
- <template v-else-if="key === 'email'">
177
- <div @click.stop>
178
- <ULink :text="value" :url="`mailto:${value}`" size="sm" />
179
- </div>
180
- </template>
116
+ <tr v-if="isShownDateSeparator(rowIndex) && row.date" v-bind="dateSeparatorRowAttrs">
117
+ <td :colspan="colsCount">
118
+ <UDivider
119
+ size="xs"
120
+ :label="getDateSeparatorLabel(row.date.separatorDate)"
121
+ v-bind="dateSeparatorAttrs"
122
+ />
123
+ </td>
124
+ </tr>
181
125
 
182
- <template v-else-if="key === 'link'">
183
- <ULink
184
- v-if="value.route"
185
- :data-cy="`${dataCy}-${key}-link`"
186
- :text="value.label"
187
- router-link
188
- :route="value.route"
126
+ <tr
127
+ v-if="!isShownRow(row)"
128
+ v-bind="bodyRowAttrs(rowClass(row))"
129
+ :data-cy="`${dataCy}-row`"
130
+ @click="onClickRow(row)"
131
+ >
132
+ <td v-if="selectable" :data-id="row.id" v-bind="checkboxBodyWrapperCellAttrs">
133
+ <UCheckbox
134
+ v-model="selectedRows"
135
+ :value="row.id"
189
136
  size="sm"
137
+ :data-cy="`${dataCy}-table-body-checkbox`"
138
+ v-bind="tableCheckboxAttrs"
139
+ @click.stop="onClickSelectRow(row.id)"
190
140
  />
141
+ </td>
142
+
143
+ <UTableCell
144
+ v-for="(value, key, index) in TableService.getFilteredRow(row, columns)"
145
+ :key="index"
146
+ :compact="compact"
147
+ v-bind="bodyCellAttrs(getTdClass(key))"
148
+ >
149
+ <template v-if="Boolean($slots[`cell-${key}`])">
150
+ <div
151
+ :style="setLeftMargin(row.nestedLevel)"
152
+ v-bind="toggleButtonWrapperAttrs(index)"
153
+ @click="onClickShowItem(row)"
154
+ >
155
+ <div v-if="isShownIcon({ index, row })" v-bind="toggleItemButtonAttrs">
156
+ <UIcon
157
+ v-if="row.isHidden"
158
+ :name="config.expandIconName"
159
+ interactive
160
+ size="xs"
161
+ :color="isIconActive(row)"
162
+ v-bind="expandIconAttrs"
163
+ />
164
+
165
+ <UIcon
166
+ v-else
167
+ :name="config.collapseIconName"
168
+ interactive
169
+ size="xs"
170
+ v-bind="collapseIconAttrs"
171
+ />
172
+ </div>
173
+ <!-- @slot Use it to customise table cell item (in whole column). -->
174
+ <slot :name="`cell-${key}`" :value="value" :row="row" />
175
+ </div>
176
+ </template>
191
177
 
192
- <span v-else>
193
- {{ value }}
194
- </span>
195
- </template>
196
-
197
- <template v-else-if="key === 'money'">
198
- <UMoney :sum="value.sum" :currency-symbol="value.currencySymbol" />
199
- </template>
178
+ <template v-else-if="Boolean($slots['cell-other'])">
179
+ <slot name="cell-other" :value="value" :row="row" />
180
+ </template>
200
181
 
201
- <template v-else-if="key === 'tags'">
202
- <div class="tags-cell">
203
- <UTag
204
- v-for="item in value.tags"
205
- :key="item"
206
- :text="item"
207
- :color="value.variant"
208
- />
209
- </div>
210
- </template>
182
+ <template v-else-if="value.hasOwnProperty('secondaryRow')">
183
+ <div :data-cy="`${dataCy}-${key}-cell`">
184
+ {{ value.primaryRow || HYPHEN_SYMBOL }}
185
+ </div>
211
186
 
212
- <template v-else-if="value.hasOwnProperty('secondaryRow')">
213
- <div :data-cy="`${dataCy}-${key}-cell`">
214
- {{ value.primaryRow || emptyItem }}
215
- </div>
216
-
217
- <div class="secondary-row">
218
- <template v-if="Array.isArray(value.secondaryRow)">
219
- <div v-for="(secondaryRow, idx) in value.secondaryRow" :key="idx">
220
- <span class="children-empty">
221
- {{ secondaryRow }}
222
- </span>
223
- </div>
224
- </template>
187
+ <div v-bind="secondaryRowAttrs">
188
+ <template v-if="Array.isArray(value.secondaryRow)">
189
+ <div v-for="(secondaryRow, idx) in value.secondaryRow" :key="idx">
190
+ <span v-bind="secondaryRowEmptyAttrs">
191
+ {{ secondaryRow }}
192
+ </span>
193
+ </div>
194
+ </template>
195
+
196
+ <template v-else>
197
+ {{ value.secondaryRow }}
198
+ </template>
199
+ </div>
200
+ </template>
225
201
 
226
- <template v-else>
227
- {{ value.secondaryRow }}
228
- </template>
229
- </div>
230
- </template>
202
+ <template v-else>
203
+ <div :data-cy="`${dataCy}-${key}-cell`">
204
+ {{ value || HYPHEN_SYMBOL }}
205
+ </div>
206
+ </template>
207
+ </UTableCell>
208
+ </tr>
231
209
 
232
- <template v-else>
233
- <div :data-cy="`${dataCy}-${key}-cell`">
234
- {{ value || emptyItem }}
235
- </div>
236
- </template>
237
- </td>
238
- </tr>
210
+ <tr v-if="rowIndex === lastRow" v-bind="afterLastRowAttrs">
211
+ <UTableCell
212
+ v-if="hasSlotContent(slots['after-last-row'])"
213
+ :compact="compact"
214
+ :colspan="colsCount"
215
+ v-bind="afterLastRowCellAttrs"
216
+ >
217
+ <!-- @slot Use it to add something after last row. -->
218
+ <slot name="after-last-row" />
219
+ </UTableCell>
220
+
221
+ <td v-else :colspan="colsCount" v-bind="afterLastRowCellAttrs" />
222
+ </tr>
223
+ </template>
224
+ </tbody>
239
225
 
240
- <tr v-if="rowIndex === lastRow" :class="afterLastRowClass">
241
- <td v-if="isShownSlot.afterLastRow" :colspan="colsCount">
242
- <!-- @slot Use it to add something after last row. -->
243
- <slot name="after-last-row" />
226
+ <tbody v-else>
227
+ <tr>
228
+ <td :colspan="colsCount">
229
+ <slot name="empty-table-msg">
230
+ <UEmpty
231
+ size="sm"
232
+ :description="emptyTableMsg"
233
+ :data-cy="`${dataCy}-empty`"
234
+ v-bind="emptyAttrs"
235
+ />
236
+ </slot>
244
237
  </td>
245
238
  </tr>
246
- </template>
239
+ </tbody>
247
240
 
248
- <template v-if="isExistSlot('tfoot')" #tfoot>
249
- <tfoot class="table-footer">
250
- <tr ref="footerRow" class="table-footer-row">
251
- <td v-if="selectable" />
241
+ <tfoot v-if="hasSlotContent($slots['tfoot'])" v-bind="footerClassesAttrs">
242
+ <tr ref="footerRow" v-bind="footerRowAttrs">
243
+ <UTableCell v-if="selectable" :compact="compact" v-bind="footerCellAttrs" />
252
244
 
253
- <!-- @slot Use it to add something in table footer. -->
254
- <slot name="tfoot" :cols-count="colsCount" />
255
- </tr>
245
+ <!-- @slot Use it to add something in table footer. -->
246
+ <slot name="tfoot" :cols-count="colsCount" />
247
+ </tr>
256
248
 
257
- <tr ref="footerFixedRow" class="table-footer-fixed-row" :style="tableRowWidthStyle">
258
- <td v-if="selectable" />
249
+ <tr ref="footerStickyRow" :style="tableRowWidthStyle" v-bind="footerStickyRowAttrs">
250
+ <UTableCell v-if="selectable" :compact="compact" v-bind="footerCellAttrs" />
259
251
 
260
- <!-- @slot Use it to add something in table footer. -->
261
- <slot name="tfoot" :cols-count="colsCount" />
262
- </tr>
263
- </tfoot>
264
- </template>
265
-
266
- <template v-if="!tableItems.length" #tbody>
267
- <EmptyTableMsg :colspan="colsCount" :filters="filters" :i18n="i18n">
268
- <slot name="empty-table-msg" />
269
- </EmptyTableMsg>
270
- </template>
271
- </t-table>
252
+ <!-- @slot Use it to add something in table footer. -->
253
+ <slot name="tfoot" :cols-count="colsCount" />
254
+ </tr>
255
+ </tfoot>
256
+ </table>
272
257
  </div>
273
258
  </div>
274
259
  </template>
275
260
 
276
- <script>
277
- import DateServiceDefault from "vueless/service.date";
261
+ <script setup>
262
+ import {
263
+ ref,
264
+ computed,
265
+ watch,
266
+ useSlots,
267
+ onMounted,
268
+ onUpdated,
269
+ nextTick,
270
+ onBeforeUnmount,
271
+ } from "vue";
278
272
 
279
- import { isSameDay, isValid, secondsToMilliseconds } from "date-fns";
280
-
281
- import UMoney from "vueless/ui.text-money";
282
- import UTag from "vueless/ui.text-tag";
283
- import ULink from "vueless/ui.button-link";
284
273
  import UCheckbox from "vueless/ui.form-checkbox";
285
- import UTopLoader from "vueless/layout-ui.loader-top";
286
- import TTable from "vueless/library.vue-tailwind-3/t-table";
287
- import TableCheckbox from "./components/TableCheckbox.vue";
288
- import EmptyTableMsg from "./components/EmptyTableMsg.vue";
289
- import DateSeparator from "./components/DateSeparator.vue";
290
- import I18nServiceDefault from "vueless/service.i18n";
291
-
292
- const ONE_REM = 16;
293
- const ONE_AND_HALF_REM = 1.5;
294
-
295
- export default {
296
- name: "UTable",
297
- components: {
298
- UTag,
299
- ULink,
300
- UMoney,
301
- UCheckbox,
302
- UTopLoader,
303
- TTable,
304
- TableCheckbox,
305
- EmptyTableMsg,
306
- DateSeparator,
274
+ import ULoaderTop from "@vueless/layouts/ui.loader-top";
275
+
276
+ import I18nServiceDefault from "@vueless/services/i18n";
277
+ import UIService from "vueless/service.ui";
278
+ import defaultConfig from "./configs/default.config";
279
+ import TableService from "./services/table.service";
280
+
281
+ import { HYPHEN_SYMBOL, PX_IN_REM } from "vueless/service.ui";
282
+ import { UTable } from "./constants";
283
+ import { useAttrs } from "./composables/attrs.composable";
284
+
285
+ /* Should be a string for correct web-types gen */
286
+ defineOptions({ name: "UTable", inheritAttrs: false });
287
+
288
+ const props = defineProps({
289
+ /**
290
+ * Table columns.
291
+ */
292
+ columns: {
293
+ type: Array,
294
+ required: true,
307
295
  },
308
296
 
309
- props: {
310
- /**
311
- * Set items (rows) for table.
312
- */
313
- items: {
314
- type: Array,
315
- default: () => [],
316
- required: true,
317
- },
318
-
319
- /**
320
- * Set headers for table.
321
- */
322
- headers: {
323
- type: Array,
324
- default: () => [],
325
- required: true,
326
- },
327
-
328
- /**
329
- * Set filters for table.
330
- */
331
- filters: {
332
- type: Object,
333
- default: () => ({}),
334
- },
335
-
336
- /**
337
- * It allows selecting table rows.
338
- */
339
- selectable: {
340
- type: Boolean,
341
- default: false,
342
- },
343
-
344
- /**
345
- * Makes the table more narrow.
346
- */
347
- compact: {
348
- type: Boolean,
349
- default: false,
350
- },
351
-
352
- /**
353
- * Make footer fixed.
354
- */
355
- fixedFooter: {
356
- type: Boolean,
357
- default: false,
358
- },
359
-
360
- /**
361
- * Make header sticky.
362
- */
363
- stickyHeader: {
364
- type: Boolean,
365
- default: false,
366
- },
367
-
368
- /**
369
- * Set loader resource name to activate table top loader exact for that request.
370
- */
371
- loaderResourceName: {
372
- type: String,
373
- default: "",
374
- },
375
-
376
- /**
377
- * Enable or disable nesting.
378
- */
379
- nesting: {
380
- type: Boolean,
381
- default: false,
382
- },
383
-
384
- /**
385
- * Sets the nesting level from which folding button need to be shown.
386
- */
387
- nestingFromLevel: {
388
- type: Number,
389
- default: 0,
390
- },
391
-
392
- /**
393
- * Sets data-cy attribute for automated testing.
394
- */
395
- dataCy: {
396
- type: String,
397
- default: "",
398
- },
297
+ /**
298
+ * Table rows data.
299
+ */
300
+ rows: {
301
+ type: Array,
302
+ required: true,
399
303
  },
400
304
 
401
- emits: ["clickRow", "update:items"],
402
-
403
- setup() {
404
- const { getTranslation } = new I18nServiceDefault();
305
+ /**
306
+ * Show/hide date divider or set label for specific date.
307
+ */
308
+ dateDivider: {
309
+ type: [Array, Boolean],
310
+ default: false,
311
+ },
405
312
 
406
- return { getTranslation };
313
+ /**
314
+ * Enable selecting table rows.
315
+ */
316
+ selectable: {
317
+ type: Boolean,
318
+ default: UIService.get(defaultConfig, UTable).default.selectable,
407
319
  },
408
320
 
409
- data: () => ({
410
- selectAll: false,
411
- canSelectAll: true,
412
- selectedRows: [],
413
- tableItems: [],
414
- hiddenIds: [],
415
- firstRow: 0,
416
- emptyItem: "-",
417
- tableWidth: 0,
418
- tableHeight: 0,
419
- pagePositionY: 0,
420
- }),
421
-
422
- computed: {
423
- i18n() {
424
- return {
425
- noItems: this.getTranslation("noItems"),
426
- noResultsForFilters: this.getTranslation("noResultsForFilters"),
427
- yesterday: this.getTranslation("yesterday"),
428
- today: this.getTranslation("today"),
429
- tomorrow: this.getTranslation("tomorrow"),
430
- };
431
- },
432
-
433
- tableWrapClass() {
434
- const selected = this.selectedRowsLength ? "mono-table-inner-wrapper-selected" : "";
435
- const compact = this.compact ? "mono-table-inner-wrapper-compact" : "";
436
-
437
- return [selected, compact];
438
- },
439
-
440
- selectedRowsLength() {
441
- return this.selectedRows.length;
442
- },
443
-
444
- isSelectedAllRows() {
445
- return this.selectedRowsLength === this.tableItems.length;
446
- },
447
-
448
- colsCount() {
449
- return this.headers.length + 1;
450
- },
451
-
452
- lastRow() {
453
- return this.items.length - 1;
454
- },
455
-
456
- isShownSlot() {
457
- return {
458
- beforeFirstRow: !!this.$slots["before-first-row"],
459
- afterLastRow: !!this.$slots["after-last-row"],
460
- };
461
- },
462
-
463
- tableClasses() {
464
- return {
465
- "fixed-footer": this.isFixedFooter,
466
- };
467
- },
468
-
469
- headerClasses() {
470
- return {
471
- compact: this.compact ? "compact-header" : "",
472
- actionsHeader: this.selectedRowsLength ? "actions-header" : "",
473
- fixedHeader: this.isFixedHeader && this.stickyHeader ? "mono-table-fixed-header" : "",
474
- hideHeader: this.selectedRowsLength && !this.isFixedHeader ? "hide-header" : "",
475
- };
476
- },
477
-
478
- isShownFixedOrActionsHeader() {
479
- return this.isFixedHeader || this.selectedRowsLength;
480
- },
481
-
482
- isFixedFooter() {
483
- const windowHeight = window.innerHeight;
484
-
485
- return (
486
- windowHeight < this.tableHeight &&
487
- this.fixedFooter &&
488
- !this.isShownFooterPosition &&
489
- this.isCheckedMoreOneTableItems
490
- );
491
- },
492
-
493
- isFixedHeader() {
494
- return !this.isShownHeaderPosition;
495
- },
496
-
497
- isShownHeaderPosition() {
498
- const positionForFixHeader =
499
- this.$refs?.headerRow?.getBoundingClientRect().top + window.pageYOffset || 0;
500
-
501
- return positionForFixHeader >= this.pagePositionY;
502
- },
503
-
504
- isShownFooterPosition() {
505
- const windowHeight = window.innerHeight;
506
- const pageBottom = this.pagePositionY + windowHeight;
507
- const positionForFixFooter =
508
- this.$refs?.footerRow?.getBoundingClientRect().bottom + window.pageYOffset;
509
-
510
- return pageBottom >= positionForFixFooter;
511
- },
512
-
513
- isCheckedMoreOneTableItems() {
514
- const checkedTableItems = this.tableItems.filter((item) => item.isChecked);
515
-
516
- return checkedTableItems.length > 1;
517
- },
518
-
519
- tableRowWidthStyle() {
520
- return `width: ${this.tableWidth / ONE_REM}rem`;
521
- },
522
-
523
- beforeFirstRowClass() {
524
- return this.tableItems[0]?.isChecked ? "table-row-checked" : "";
525
- },
526
-
527
- firstRowClass() {
528
- return this.hasContentBeforeFirstRowSlot ? "" : "first-row";
529
- },
530
-
531
- afterLastRowClass() {
532
- return this.isSlotEmpty("after-last-row") ? "more-row-hide" : "more-row";
533
- },
534
-
535
- hasContentBeforeFirstRowSlot() {
536
- return this.isShownSlot.beforeFirstRow
537
- ? this.$slots["before-first-row"]()?.some((item) => !!item.type?.render)
538
- : false;
539
- },
321
+ /**
322
+ * Makes the table compact (fewer spacings).
323
+ */
324
+ compact: {
325
+ type: Boolean,
326
+ default: UIService.get(defaultConfig, UTable).default.compact,
540
327
  },
541
328
 
542
- watch: {
543
- selectAll: {
544
- handler: "onChangeSelectAll",
545
- deep: true,
546
- },
547
- selectedRows: {
548
- handler: "onChangeSelectedRows",
549
- deep: true,
550
- },
551
- tableItems: {
552
- handler: "onChangeTableItems",
553
- deep: true,
554
- },
555
- items: {
556
- handler: "onChangeItems",
557
- deep: true,
558
- },
559
- isFixedFooter: "onChangeFixedFooter",
560
- isFixedHeader: "onChangeFixedHeader",
329
+ /**
330
+ * Set header sticky.
331
+ */
332
+ stickyHeader: {
333
+ type: Boolean,
334
+ default: UIService.get(defaultConfig, UTable).default.stickyHeader,
561
335
  },
562
336
 
563
- created() {
564
- this.tableItems = this.items;
337
+ /**
338
+ * Set footer sticky.
339
+ */
340
+ stickyFooter: {
341
+ type: Boolean,
342
+ default: UIService.get(defaultConfig, UTable).default.stickyFooter,
343
+ },
565
344
 
566
- document.addEventListener("keyup", this.onKeyupClearCheckbox);
567
- document.addEventListener("scroll", this.onScrollGetPosition, { passive: true });
345
+ /**
346
+ * Enable nesting rows.
347
+ */
348
+ nesting: {
349
+ type: Boolean,
350
+ default: UIService.get(defaultConfig, UTable).default.nesting,
568
351
  },
569
352
 
570
- updated() {
571
- this.tableHeight = this.$refs.tableWrapper.offsetHeight;
572
- this.tableWidth = this.$refs.tableWrapper.offsetWidth;
353
+ /**
354
+ * Sets the nesting level from which folding button need to be shown.
355
+ */
356
+ nestingFrom: {
357
+ type: Number,
358
+ default: UIService.get(defaultConfig, UTable).default.nestingFrom,
573
359
  },
574
360
 
575
- beforeUnmount() {
576
- document.removeEventListener("keyup", this.onKeyupClearCheckbox);
577
- document.removeEventListener("scroll", this.onScrollGetPosition);
361
+ /**
362
+ * Indicate if filters applied.
363
+ */
364
+ filters: {
365
+ type: Boolean,
366
+ default: false,
578
367
  },
579
368
 
580
- methods: {
581
- isShownIcon({ index, row }) {
582
- const isChildren = row.childrenIds?.length > 0;
583
- const isWithinNestingLevel = row.nestedLevel >= this.nestingFromLevel;
584
-
585
- const isFirstRow = index === 0;
586
-
587
- return isFirstRow && (isChildren || row.isNestingRow) && this.nesting && isWithinNestingLevel;
588
- },
589
-
590
- isIconActive(row) {
591
- return !row.childrenIds?.length ? "gray" : "";
592
- },
593
-
594
- isSlotEmpty(slotName) {
595
- return Boolean(this.$slots[slotName]);
596
- },
597
-
598
- onClickShowItem(row) {
599
- if (!this.nesting || !row.childrenIds.length) return;
600
- const [firstElement] = row.childrenIds;
601
-
602
- row.isHidden = !row.isHidden;
603
-
604
- if (row.isHidden && row.childrenIds.length) {
605
- this.hiddenIds.push(...row.childrenIds);
606
- } else {
607
- this.hiddenIds =
608
- row.nestedLevel === this.nestingFromLevel
609
- ? row.childrenIds.filter((item) => !this.hiddenIds.includes(item))
610
- : this.hiddenIds.filter((item) => item !== firstElement);
611
- }
612
- },
613
-
614
- tableContainerClass(index) {
615
- return index === 0 && this.nesting ? "table-container" : "";
616
- },
617
-
618
- setLeftMargin(nestedLevel) {
619
- return `margin-left: ${nestedLevel * ONE_AND_HALF_REM}rem`;
620
- },
621
-
622
- isShownRow(row) {
623
- if (this.hiddenIds.includes(row.id)) {
624
- row.isHidden = true;
625
- }
626
-
627
- return this.hiddenIds.includes(row.id);
628
- },
629
-
630
- onChangeFixedFooter() {
631
- if (this.isFixedFooter) {
632
- this.$nextTick(() => {
633
- this.setFooterItemsWidth();
634
- });
635
- } else {
636
- this.setFooterItemsWidth(true);
637
- }
638
- },
639
-
640
- setFooterItemsWidth(setNullWidth) {
641
- const ZERO_WIDTH = 0;
642
-
643
- if (!this.fixedFooter) return;
644
-
645
- const [...mainFooterItems] = this.$refs.footerRow.children;
646
- const [...fixedFooterItems] = this.$refs.footerFixedRow.children;
647
-
648
- fixedFooterItems.forEach((item, index) => {
649
- item.style.width = setNullWidth
650
- ? `${ZERO_WIDTH}rem`
651
- : `${mainFooterItems[index].offsetWidth / ONE_REM}rem`;
652
- });
653
- },
654
-
655
- onChangeFixedHeader() {
656
- this.setHeaderItemsWidth();
657
- },
658
-
659
- setHeaderItemsWidth() {
660
- if (!this.selectedRowsLength) {
661
- const [...mainHeaderItems] = this.$refs.headerRow.children;
662
- const [...fixedHeaderItems] = this.$refs.headerFixedRow.children;
663
-
664
- fixedHeaderItems.forEach((item, index) => {
665
- item.style.width = `${mainHeaderItems[index]?.offsetWidth / ONE_REM}rem`;
666
- });
667
- }
668
- },
669
-
670
- onScrollGetPosition() {
671
- this.pagePositionY = window.pageYOffset;
672
- },
673
-
674
- onChangeTableItems(tableItems) {
675
- this.$emit("update:items", tableItems);
676
- },
677
-
678
- onKeyupClearCheckbox(event) {
679
- const escKeyCode = 27;
680
-
681
- if (event.keyCode === escKeyCode && this.selectable) {
682
- this.selectedRows = [];
683
- }
684
- },
685
-
686
- onChangeItems() {
687
- if (!this.items.length || this.tableItems.length !== this.items.length) {
688
- this.selectedRows = [];
689
- }
690
-
691
- const checkedTableItems = this.tableItems.filter((item) => item.isChecked);
692
-
693
- this.tableItems = this.items;
694
-
695
- this.tableItems.forEach((item) => {
696
- checkedTableItems.forEach((checkedItem) => {
697
- if (item.id === checkedItem.id) {
698
- item.isChecked = true;
699
- }
700
- });
701
-
702
- if (this.nesting && item.isHidden && item.childrenIds?.length) {
703
- this.hiddenIds.push(...item.childrenIds);
704
- }
705
- });
706
- },
707
-
708
- isShownDateSeparator(rowIndex, date) {
709
- const prevIndex = rowIndex ? rowIndex - 1 : rowIndex;
710
- const prevItem = this.tableItems[prevIndex];
711
- const prevDateInMilliseconds = secondsToMilliseconds(prevItem?.date?.primaryRow);
712
- const dateInMilliseconds = secondsToMilliseconds(date?.primaryRow);
713
- const isSameDate = isSameDay(dateInMilliseconds, prevDateInMilliseconds);
714
-
715
- if (rowIndex === 0) {
716
- return isValid(prevDateInMilliseconds) && this.hasContentBeforeFirstRowSlot;
717
- }
718
-
719
- return isValid(prevDateInMilliseconds) && !isSameDate;
720
- },
721
-
722
- rowClass(row) {
723
- return row.isChecked ? "table-row-checked" : "";
724
- },
725
-
726
- dateSeparatorRowClass(rowIndex) {
727
- const isCheckedRowBefore = this.tableItems[rowIndex - 1]?.isChecked;
728
- const isCheckedRowAfter = this.tableItems[rowIndex]?.isChecked;
729
-
730
- return (isCheckedRowBefore && isCheckedRowAfter) || (rowIndex === 0 && isCheckedRowAfter)
731
- ? "table-row-checked"
732
- : "";
733
- },
734
-
735
- onClickSelectRow(rowIndex) {
736
- const isRowChecked = this.tableItems[rowIndex].isChecked;
737
-
738
- this.tableItems[rowIndex].isChecked = !isRowChecked;
739
- },
740
-
741
- getFilteredRow(row) {
742
- const filteredRow = Object.entries(row).filter((col) => {
743
- const [key] = col;
744
- const isShownCol = this.headers.some((header) => header.value === key);
745
-
746
- if (isShownCol) return col;
747
- });
748
-
749
- return Object.fromEntries(filteredRow);
750
- },
751
-
752
- onClickRow(row) {
753
- this.$emit("clickRow", row);
754
- },
755
-
756
- isExistSlot(slotName) {
757
- return !!this.$slots[slotName];
758
- },
759
-
760
- getTdClass(key) {
761
- return this.headers.find((item) => item.value === key)?.tdClass;
762
- },
763
-
764
- onChangeSelectAll(selectAll) {
765
- if (selectAll && this.canSelectAll) {
766
- this.selectedRows = this.tableItems.map((item, index) => index);
767
-
768
- this.tableItems.forEach((item) => {
769
- item.isChecked = true;
770
- });
771
- } else if (!selectAll) {
772
- this.selectedRows = [];
773
-
774
- this.tableItems.forEach((item) => {
775
- item.isChecked = false;
776
- });
777
- }
778
-
779
- this.canSelectAll = true;
780
- },
781
-
782
- onChangeSelectedRows(selectedRows) {
783
- if (selectedRows.length) {
784
- this.canSelectAll = false;
785
-
786
- this.isCheckedMoreOneTableItems ? this.setFooterItemsWidth() : "";
787
- } else {
788
- this.$nextTick(() => {
789
- this.setHeaderItemsWidth();
790
- });
791
- }
792
-
793
- this.selectAll = !!selectedRows.length;
794
- },
795
-
796
- dateConverter(value, format) {
797
- return new DateServiceDefault().dateConverter(value, format);
798
- },
799
-
800
- clearSelectedItems() {
801
- this.selectedRows = [];
802
- },
369
+ /**
370
+ * Set loader resource name to activate table top loader exact for that resource.
371
+ */
372
+ resource: {
373
+ type: String,
374
+ default: "",
803
375
  },
804
- };
805
- </script>
806
376
 
807
- <i18n>
808
- en:
809
- noItems: There is no data in the table yet.
810
- noResultsForFilters: No results were found for the specified filters.
811
- yesterday: Yesterday
812
- today: Today
813
- tomorrow: Tomorrow
814
- ru:
815
- noItems: Пока что в таблице нет данных.
816
- noResultsForFilters: По заданным фильтрам ничего не найдено.
817
- yesterday: Вчера
818
- today: Сегодня
819
- tomorrow: Завтра
820
- ua:
821
- noItems: Поки що в таблиці немає даних.
822
- noResultsForFilters: За даними фільтрами нічого не знайдено.
823
- yesterday: Вчора
824
- today: Сьогодні
825
- tomorrow: Завтра
826
- </i18n>
377
+ /**
378
+ * Component ui config object.
379
+ */
380
+ config: {
381
+ type: Object,
382
+ default: () => ({}),
383
+ },
827
384
 
828
- <style lang="postcss" scoped>
829
- .mono-table-wrapper {
830
- @apply relative bg-white rounded-2xl;
385
+ /**
386
+ * Data-cy attribute for automated testing.
387
+ */
388
+ dataCy: {
389
+ type: String,
390
+ default: "",
391
+ },
392
+ });
393
+
394
+ const emit = defineEmits(["clickRow", "update:rows"]);
395
+
396
+ defineExpose({ clearSelectedItems });
397
+
398
+ const { getTranslation } = new I18nServiceDefault();
399
+ const slots = useSlots();
400
+
401
+ const selectAll = ref(false);
402
+ const canSelectAll = ref(true);
403
+ const selectedRows = ref([]);
404
+ const tableRows = ref([]);
405
+ const hiddenIds = ref([]);
406
+ const firstRow = ref(0);
407
+ const tableWidth = ref(0);
408
+ const tableHeight = ref(0);
409
+ const pagePositionY = ref(0);
410
+
411
+ const headerRow = ref(null);
412
+ const footerRow = ref(null);
413
+ const tableWrapper = ref(null);
414
+ const footerStickyRow = ref(null);
415
+ const headerStickyRow = ref(null);
416
+
417
+ const isHeaderSticky = computed(() => {
418
+ return !isShownHeaderPosition.value;
419
+ });
420
+
421
+ const isFooterSticky = computed(
422
+ () =>
423
+ window.innerHeight < tableHeight.value &&
424
+ props.stickyFooter &&
425
+ !isShownFooterPosition.value &&
426
+ isCheckedMoreOneTableItems.value,
427
+ );
428
+
429
+ const {
430
+ config,
431
+ wrapperAttrs,
432
+ customHeaderItemAttrs,
433
+ customHeaderAttrs,
434
+ tableWrapperAttrs,
435
+ headerRowCellAttrs,
436
+ afterLastRowAttrs,
437
+ afterLastRowCellAttrs,
438
+ beforeFirstRowAttrs,
439
+ beforeFirstRowCellAttrs,
440
+ bodyRowAttrs,
441
+ footerClassesAttrs,
442
+ dateSeparatorRowAttrs,
443
+ toggleButtonWrapperAttrs,
444
+ headerCellAttrs,
445
+ bodyCellAttrs,
446
+ checkboxBodyWrapperCellAttrs,
447
+ footerCellAttrs,
448
+ selectAllCheckboxAttrs,
449
+ headerSelectAllCheckboxAttrs,
450
+ tableCheckboxAttrs,
451
+ collapseIconAttrs,
452
+ expandIconAttrs,
453
+ emptyAttrs,
454
+ dateSeparatorAttrs,
455
+ selectedRowsCountAttrs,
456
+ headerStickyLoaderAttrs,
457
+ tableAttrs,
458
+ headerRowAttrs,
459
+ tableLoaderAttrs,
460
+ bodyAttrs,
461
+ toggleItemButtonAttrs,
462
+ secondaryRowAttrs,
463
+ secondaryRowEmptyAttrs,
464
+ footerRowAttrs,
465
+ footerStickyRowAttrs,
466
+ hasSlotContent,
467
+ headerAttrs,
468
+ } = useAttrs(props, { selectedRows, isHeaderSticky, tableRows, isFooterSticky });
469
+
470
+ const i18n = computed(() => ({
471
+ noItems: getTranslation("noItems"),
472
+ noResultsForFilters: getTranslation("noResultsForFilters"),
473
+ yesterday: getTranslation("yesterday"),
474
+ today: getTranslation("today"),
475
+ tomorrow: getTranslation("tomorrow"),
476
+ }));
477
+
478
+ const normalizedColumns = computed(() => TableService.normalizeColumns(props.columns));
479
+
480
+ const isSelectedAllRows = computed(() => {
481
+ return selectedRows.value.length === tableRows.value.length;
482
+ });
483
+
484
+ const colsCount = computed(() => {
485
+ return props.columns.length + 1;
486
+ });
487
+
488
+ const lastRow = computed(() => {
489
+ return props.rows.length - 1;
490
+ });
491
+
492
+ const isShownStickyOrActionsHeader = computed(() => {
493
+ return isHeaderSticky.value || selectedRows.value.length;
494
+ });
495
+
496
+ const isShownHeaderPosition = computed(() => {
497
+ const positionForFixHeader = headerRow.value?.getBoundingClientRect().top + window.scrollY || 0;
498
+
499
+ return positionForFixHeader >= pagePositionY.value;
500
+ });
501
+
502
+ const isShownFooterPosition = computed(() => {
503
+ const pageBottom = pagePositionY.value + window.innerHeight;
504
+ const positionForFixFooter = footerRow.value?.getBoundingClientRect().bottom + window.scrollY;
505
+
506
+ return pageBottom >= positionForFixFooter;
507
+ });
508
+
509
+ const isCheckedMoreOneTableItems = computed(() => {
510
+ return tableRows.value.filter((item) => item.isChecked).length > 1;
511
+ });
512
+
513
+ const tableRowWidthStyle = computed(() => ({ width: `${tableWidth.value / PX_IN_REM}rem` }));
514
+
515
+ const hasContentBeforeFirstRowSlot = computed(() => {
516
+ return hasSlotContent(slots["before-first-row"])
517
+ ? slots["before-first-row"]()?.some((item) => !!item.type?.render)
518
+ : false;
519
+ });
520
+
521
+ const emptyTableMsg = computed(() => {
522
+ return props.filters ? i18n.value.noResultsForFilters : i18n.value.noItems;
523
+ });
524
+
525
+ watch(selectAll, onChangeSelectAll, { deep: true });
526
+ watch(selectedRows, onChangeSelectedRows, { deep: true });
527
+ watch(tableRows, () => emit("update:rows", tableRows), { deep: true });
528
+ watch(() => tableRows.value.length, updateSelectedRows);
529
+ watch(() => props.rows, synchronizeTableItemsWithProps, { deep: true });
530
+ watch(isHeaderSticky, setHeaderItemsWidth);
531
+ watch(isFooterSticky, (newValue) =>
532
+ newValue ? nextTick(setFooterItemsWidth) : setFooterItemsWidth(true),
533
+ );
534
+
535
+ tableRows.value = props.rows;
536
+
537
+ onMounted(() => {
538
+ document.addEventListener("keyup", onKeyupClearCheckbox);
539
+ document.addEventListener("scroll", onScrollGetPosition, { passive: true });
540
+ window.addEventListener("resize", onWindowResizeSetWidth);
541
+ });
542
+
543
+ onUpdated(() => {
544
+ tableHeight.value = tableWrapper.value?.offsetHeight;
545
+ tableWidth.value = tableWrapper.value?.offsetWidth;
546
+ });
547
+
548
+ onBeforeUnmount(() => {
549
+ document.removeEventListener("keyup", onKeyupClearCheckbox);
550
+ document.removeEventListener("scroll", onScrollGetPosition);
551
+ window.removeEventListener("resize", onWindowResizeSetWidth);
552
+ });
553
+
554
+ function onWindowResizeSetWidth() {
555
+ tableWidth.value = tableWrapper.value.offsetWidth;
556
+
557
+ setHeaderItemsWidth();
558
+ setFooterItemsWidth();
831
559
  }
832
560
 
833
- .more-row {
834
- .first-row {
835
- @apply py-1 !important;
836
- }
837
-
838
- .last-row {
839
- @apply py-1 !important;
840
- }
841
-
842
- td {
843
- @apply px-0 py-4 !important;
561
+ function isShownIcon({ index, row }) {
562
+ const isChildren = row.childrenIds?.length > 0;
563
+ const isWithinNestingLevel = row.nestedLevel >= props.nestingFrom;
844
564
 
845
- & :deep(:first-child) {
846
- @apply mx-auto;
847
- }
848
- }
565
+ const isFirstRow = index === 0;
849
566
 
850
- &-hide {
851
- td {
852
- @apply !p-0;
853
- }
854
- }
567
+ return isFirstRow && (isChildren || row.isNestingRow) && props.nesting && isWithinNestingLevel;
855
568
  }
856
569
 
857
- .mono-table-fixed-header {
858
- @apply fixed top-0 border border-t-0 border-gray-200;
859
- @apply bg-white;
860
-
861
- &.actions-header {
862
- @apply rounded-t-none;
863
- }
570
+ function isIconActive(row) {
571
+ return !row.childrenIds?.length ? "grayscale" : "";
864
572
  }
865
573
 
866
- .actions-header {
867
- @apply rounded-t-lg border border-blue-200 bg-blue-50;
574
+ function onClickShowItem(row) {
575
+ if (!props.nesting || !row.childrenIds.length) return;
576
+ const [firstElement] = row.childrenIds;
868
577
 
869
- .selected-rows-count {
870
- @apply flex items-center pr-4;
871
- @apply font-medium text-gray-900;
578
+ row.isHidden = !row.isHidden;
579
+
580
+ if (row.isHidden && row.childrenIds.length) {
581
+ hiddenIds.value.push(...row.childrenIds);
582
+ } else {
583
+ hiddenIds.value =
584
+ row.nestedLevel === props.nestingFromLevel
585
+ ? row.childrenIds.filter((item) => !hiddenIds.value.includes(item))
586
+ : hiddenIds.value.filter((item) => item !== firstElement);
872
587
  }
873
588
  }
874
589
 
875
- .mono-table-custom-header {
876
- @apply flex items-center;
877
- @apply z-40;
878
-
879
- &-item {
880
- @apply flex-none;
881
- @apply text-sm font-normal text-gray-500;
882
- @apply px-[1.125rem] py-5;
883
-
884
- &:first-child {
885
- @apply p-5;
886
- }
590
+ function getDateSeparatorLabel(separatorDate) {
591
+ return Array.isArray(props.dateDivider)
592
+ ? props.dateDivider.find((dateItem) => dateItem.date === separatorDate)?.label || separatorDate
593
+ : separatorDate;
594
+ }
887
595
 
888
- &:nth-child(2) {
889
- @apply pl-0;
890
- }
596
+ function setLeftMargin(nestedLevel) {
597
+ return { marginLeft: `${nestedLevel * 1.5}rem` };
598
+ }
891
599
 
892
- &:last-child {
893
- @apply p-5;
894
- }
600
+ function isShownRow(row) {
601
+ if (hiddenIds.value.includes(row.id)) {
602
+ row.isHidden = true;
895
603
  }
896
604
 
897
- &.compact-header {
898
- .fixed-header-table-loader {
899
- @apply !top-[3.25rem];
900
- }
901
-
902
- .mono-table-custom-header-item {
903
- @apply p-4;
904
-
905
- &:nth-child(2) {
906
- @apply pl-0;
907
- }
908
- }
909
- }
605
+ return hiddenIds.value.includes(row.id);
910
606
  }
911
607
 
912
- .mono-table-inner-wrapper {
913
- @apply overflow-auto rounded-lg;
914
- @apply border border-gray-200;
915
-
916
- &-selected {
917
- @apply !rounded-t-none border-t-0;
918
- }
608
+ function setFooterItemsWidth(setNullWidth) {
609
+ const ZERO_WIDTH = 0;
919
610
 
920
- .mono-table {
921
- @apply min-w-full border-none bg-white text-sm;
922
- @apply w-full;
611
+ if (!props.stickyFooter) return;
923
612
 
924
- :deep(thead) {
925
- @apply border-b border-solid border-gray-200;
613
+ const mainFooterItems = [...footerRow.value.children];
614
+ const stickyFooterItems = [...footerStickyRow.value.children];
926
615
 
927
- tr {
928
- th {
929
- @apply bg-white px-[1.125rem] py-5;
930
- @apply text-sm font-normal text-gray-500;
616
+ stickyFooterItems.forEach((item, index) => {
617
+ item.style.width = setNullWidth
618
+ ? `${ZERO_WIDTH}rem`
619
+ : `${mainFooterItems[index].offsetWidth / PX_IN_REM}rem`;
620
+ });
621
+ }
931
622
 
932
- &:first-child,
933
- &:last-child {
934
- @apply p-5;
935
- }
623
+ function setHeaderItemsWidth() {
624
+ if (selectedRows.value.length) return;
936
625
 
937
- &:nth-child(2) {
938
- @apply pl-0;
939
- }
940
- }
941
- }
942
- }
626
+ const mainHeaderItems = [...(headerRow.value?.children || [])];
627
+ const stickyHeaderItems = [...(headerStickyRow.value?.children || [])];
943
628
 
944
- :deep(tbody) {
945
- @apply divide-none;
629
+ stickyHeaderItems.forEach((item, index) => {
630
+ item.style.width = `${mainHeaderItems[index]?.offsetWidth / PX_IN_REM}rem`;
631
+ });
632
+ }
946
633
 
947
- tr {
948
- td {
949
- @apply text-ellipsis whitespace-nowrap p-[1.125rem] py-5;
950
- @apply align-top;
634
+ function onScrollGetPosition() {
635
+ pagePositionY.value = window.scrollY;
636
+ }
951
637
 
952
- &:first-child,
953
- &:last-child {
954
- @apply p-5;
955
- }
638
+ function onKeyupClearCheckbox(event) {
639
+ const escKeyCode = 27;
956
640
 
957
- &:nth-child(2) {
958
- @apply pl-0;
959
- }
641
+ if (event.keyCode === escKeyCode && props.selectable) {
642
+ selectedRows.value = [];
643
+ }
644
+ }
960
645
 
961
- .tags-cell {
962
- @apply flex space-x-2;
963
- }
964
- }
965
- }
966
- }
646
+ function synchronizeTableItemsWithProps() {
647
+ if (!props.rows.length || props.rows.length !== tableRows.value.length) {
648
+ selectedRows.value = [];
649
+ }
967
650
 
968
- :deep(tfoot) {
969
- @apply border-t border-solid border-gray-200;
651
+ tableRows.value = props.rows;
970
652
 
971
- tr {
972
- td {
973
- @apply p-[1.125rem] py-5;
653
+ tableRows.value.forEach((item) => {
654
+ if (props.nesting && item.isHidden && item.childrenIds?.length) {
655
+ hiddenIds.value.push(...item.childrenIds);
656
+ }
657
+ });
658
+ }
974
659
 
975
- &:first-child {
976
- @apply p-5;
977
- }
660
+ function updateSelectedRows() {
661
+ selectedRows.value = tableRows.value.filter((row) => row.isChecked).map((row) => row.id);
662
+ }
978
663
 
979
- &:nth-child(2) {
980
- @apply pl-0;
981
- }
982
- }
983
- }
984
- }
664
+ function isShownDateSeparator(rowIndex) {
665
+ const prevIndex = rowIndex ? rowIndex - 1 : rowIndex;
666
+ const nextIndex = rowIndex ? rowIndex + 1 : rowIndex;
667
+ const prevItem = tableRows.value[prevIndex];
668
+ const nextItem = tableRows.value[nextIndex];
669
+ const currentItem = tableRows.value[rowIndex];
985
670
 
986
- :deep(.secondary-row) {
987
- @apply mt-1 text-xs text-gray-500;
988
- }
671
+ if (rowIndex === 0) {
672
+ return hasContentBeforeFirstRowSlot.value;
989
673
  }
990
674
 
991
- &-compact {
992
- .mono-table {
993
- :deep(thead) {
994
- tr {
995
- th {
996
- @apply bg-white p-4;
997
-
998
- &:first-child,
999
- &:last-child {
1000
- @apply p-4;
1001
- }
1002
- }
1003
- }
1004
- }
1005
-
1006
- :deep(tbody) {
1007
- tr {
1008
- td {
1009
- @apply px-4 py-3;
1010
-
1011
- &:first-child,
1012
- &:last-child {
1013
- @apply px-4 py-3;
1014
- }
1015
- }
1016
- }
1017
- }
1018
-
1019
- :deep(tfoot) {
1020
- tr {
1021
- td {
1022
- @apply p-4;
1023
-
1024
- &:first-child {
1025
- @apply p-4;
1026
- }
1027
- }
1028
- }
1029
- }
1030
- }
1031
- }
675
+ const isPrevSameDate = prevItem?.date?.primaryRow === currentItem?.date?.primaryRow;
676
+ const isNextSameDate = nextItem?.date?.primaryRow === currentItem?.date?.primaryRow;
677
+
678
+ return isPrevSameDate && !isNextSameDate && props.dateDivider;
1032
679
  }
1033
680
 
1034
- .col-checkbox {
1035
- @apply w-[3.75rem];
681
+ function rowClass(row) {
682
+ return selectedRows.value.includes(row.id) ? config.value.checkedRow : "";
1036
683
  }
1037
684
 
1038
- .table-row {
1039
- @apply transition duration-100;
1040
- @apply hover:bg-gray-50;
685
+ function onClickSelectRow(rowId) {
686
+ const targetRowIndex = tableRows.value.findIndex((row) => row.id === rowId);
1041
687
 
1042
- &-checked {
1043
- @apply transition duration-100;
1044
- @apply bg-gray-100;
1045
- }
688
+ tableRows.value[targetRowIndex].isChecked = !tableRows.value[targetRowIndex].isChecked;
1046
689
  }
1047
690
 
1048
- .table-button {
1049
- @apply flex relative -top-px;
691
+ function onClickRow(row) {
692
+ emit("clickRow", row);
1050
693
  }
1051
694
 
1052
- .children-empty {
1053
- @apply inline-block;
695
+ function getTdClass(key) {
696
+ return props.columns.find((column) => column.key === key)?.tdClass;
1054
697
  }
1055
698
 
1056
- .fixed-footer {
1057
- .table {
1058
- &-footer {
1059
- @apply relative;
699
+ function onChangeSelectAll(selectAll) {
700
+ if (selectAll && canSelectAll.value) {
701
+ selectedRows.value = tableRows.value.map((item) => item.id);
1060
702
 
1061
- &-fixed-row {
1062
- visibility: inherit;
1063
- }
1064
- }
703
+ tableRows.value.forEach((item) => (item.isChecked = true));
704
+ } else if (!selectAll) {
705
+ selectedRows.value = [];
706
+
707
+ tableRows.value.forEach((item) => (item.isChecked = false));
1065
708
  }
1066
- }
1067
709
 
1068
- .hide-header {
1069
- @apply relative -top-[3.75rem];
1070
- visibility: collapse;
710
+ canSelectAll.value = true;
1071
711
  }
1072
712
 
1073
- .table-footer-fixed-row {
1074
- @apply fixed bottom-0 -ml-px;
1075
- @apply border border-b-0 border-gray-200 bg-white;
1076
- visibility: collapse;
1077
- }
713
+ function onChangeSelectedRows(selectedRows) {
714
+ if (selectedRows.length) {
715
+ canSelectAll.value = false;
1078
716
 
1079
- .table-loader {
1080
- @apply !top-auto;
1081
- }
1082
-
1083
- .table-fixed-loader {
1084
- @apply !top-[3.25rem];
1085
- }
717
+ isCheckedMoreOneTableItems.value ? setFooterItemsWidth() : "";
718
+ } else {
719
+ nextTick(setHeaderItemsWidth);
720
+ }
1086
721
 
1087
- .fixed-header-table-loader {
1088
- @apply !top-[3.75rem];
722
+ selectAll.value = !!selectedRows.length;
1089
723
  }
1090
724
 
1091
- .table-checkbox {
1092
- @apply w-[3.75rem];
725
+ function clearSelectedItems() {
726
+ selectedRows.value = [];
1093
727
  }
1094
- .table-container {
1095
- @apply flex items-center;
728
+ </script>
1096
729
 
1097
- &-icon {
1098
- @apply mr-2 rounded-sm bg-gray-200;
1099
- }
1100
- }
1101
- </style>
730
+ <i18n>
731
+ en:
732
+ noItems: There is no data in the table yet.
733
+ noResultsForFilters: No results were found for the specified filters.
734
+ ru:
735
+ noItems: Пока что в таблице нет данных.
736
+ noResultsForFilters: По заданным фильтрам ничего не найдено.
737
+ ua:
738
+ noItems: Поки що в таблиці немає даних.
739
+ noResultsForFilters: За даними фільтрами нічого не знайдено.
740
+ </i18n>