vueless 0.0.2 → 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 (436) 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-group → ui.button-toggle}/index.stories.js +79 -28
  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-group-item → ui.button-toggle-item}/index.stories.js +16 -13
  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-tag → ui.dropdown-badge}/index.stories.js +26 -25
  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/{constant.component-names → ui.form-input/constants}/index.js +1 -2
  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/index.js +0 -151
  361. package/layout-ui.loader/index.vue +0 -61
  362. package/layout-ui.loader/store/index.js +0 -17
  363. package/layout-ui.loader-top/components/TopProgress.vue +0 -277
  364. package/layout-ui.loader-top/index.vue +0 -218
  365. package/layout-ui.loader-top/store/index.js +0 -55
  366. package/layout-ui.notify/index.stories.js +0 -102
  367. package/layout-ui.notify/index.vue +0 -254
  368. package/layout-ui.viewport/index.vue +0 -78
  369. package/layout-ui.viewport/store/index.js +0 -47
  370. package/layout.admin/AsideBlock.vue +0 -534
  371. package/layout.admin/AsideInfoBlock.vue +0 -85
  372. package/layout.admin/BrandBlock.vue +0 -380
  373. package/layout.admin/ChangeThemeModal.vue +0 -179
  374. package/layout.admin/HelperBlock.vue +0 -132
  375. package/layout.admin/MainMenu.vue +0 -234
  376. package/layout.admin/MainSubMenu.vue +0 -196
  377. package/layout.admin/MobileMainMenu.vue +0 -197
  378. package/layout.admin/MobileSubBlock.vue +0 -171
  379. package/layout.admin/RightInfoBlock.vue +0 -166
  380. package/layout.admin/UserBlock.vue +0 -290
  381. package/layout.admin/images/abstract-01.jpg +0 -0
  382. package/layout.admin/images/abstract-01_preview.jpg +0 -0
  383. package/layout.admin/index.vue +0 -544
  384. package/layout.admin/mixins/index.js +0 -54
  385. package/layout.admin/store/index.js +0 -167
  386. package/layout.auth/FeaturesBlock.vue +0 -57
  387. package/layout.auth/FooterMenu.vue +0 -90
  388. package/layout.auth/LanguageSwitcher.vue +0 -90
  389. package/layout.auth/index.vue +0 -237
  390. package/library.vue-tailwind-3/t-input.js +0 -68
  391. package/library.vue-tailwind-3/t-modal.js +0 -409
  392. package/library.vue-tailwind-3/t-pagination.js +0 -309
  393. package/library.vue-tailwind-3/t-table.js +0 -362
  394. package/library.vue-tailwind-3/t-textarea.js +0 -84
  395. package/resolver.unplugin-vue-components/index.js +0 -94
  396. package/service.api/index.js +0 -275
  397. package/service.data/index.js +0 -75
  398. package/service.date/index.js +0 -222
  399. package/service.i18n/index.js +0 -145
  400. package/service.idb-keyval/index.js +0 -37
  401. package/service.jwt/index.js +0 -27
  402. package/service.money/index.js +0 -86
  403. package/service.notify/index.js +0 -87
  404. package/service.redirect/index.js +0 -20
  405. package/service.validation/index.js +0 -55
  406. package/service.worker/index.js +0 -26
  407. package/ui.button-expand/index.stories.js +0 -44
  408. package/ui.button-expand/index.vue +0 -22
  409. package/ui.button-expand-item/index.stories.js +0 -69
  410. package/ui.button-expand-item/index.vue +0 -154
  411. package/ui.button-group/index.vue +0 -165
  412. package/ui.button-group-item/index.vue +0 -283
  413. package/ui.container-modal/components/ArrowLink.vue +0 -87
  414. package/ui.container-page/components/ArrowLink.vue +0 -87
  415. package/ui.data-table/components/DateSeparator.vue +0 -99
  416. package/ui.data-table/components/EmptyTableMsg.vue +0 -46
  417. package/ui.data-table/components/TableCheckbox.vue +0 -109
  418. package/ui.dropdown-tag/index.vue +0 -285
  419. package/ui.form-date-picker-range/components/VariantButton.vue +0 -136
  420. package/ui.form-date-picker-range/components/VariantInput.vue +0 -101
  421. package/ui.form-date-picker-range/index.stories.js +0 -93
  422. package/ui.form-date-picker-range/index.vue +0 -1537
  423. package/ui.form-date-picker-range/services/dateRange.service.js +0 -178
  424. package/ui.form-input-money/_components/ConvertibleInput.vue +0 -773
  425. package/ui.form-input-money/_components/RangeInput.vue +0 -356
  426. package/ui.form-input-money/_components/SingleInput.vue +0 -378
  427. package/ui.form-select-multi/index.stories.js +0 -131
  428. package/ui.form-select-multi/index.vue +0 -882
  429. package/ui.image-icon/cli.mjs +0 -159
  430. package/ui.text-empty/services/variant.service.js +0 -22
  431. package/ui.text-field/index.stories.js +0 -60
  432. package/ui.text-field/index.vue +0 -109
  433. package/ui.text-tag/index.stories.js +0 -90
  434. package/ui.text-tag/index.vue +0 -178
  435. package/web-types.json +0 -6320
  436. /package/ui.form-input/{text-security-disc.woff → assets/fonts/text-security-disc.woff} +0 -0
@@ -1,275 +0,0 @@
1
- import axios from "axios";
2
- import JwtServiceDefault from "vueless/service.jwt";
3
- import NotifyServiceDefault from "vueless/service.notify";
4
- import I18nServiceDefault from "vueless/service.i18n";
5
-
6
- export default class ApiServiceDefault {
7
- #notify = new NotifyServiceDefault();
8
-
9
- constructor() {
10
- this.pendingRequests = [];
11
- }
12
-
13
- addPendingRequest(request) {
14
- this.pendingRequests.push(request);
15
- }
16
-
17
- removePendingRequest(request) {
18
- const index = this.pendingRequests.indexOf(request);
19
-
20
- if (index !== -1) {
21
- this.pendingRequests.splice(index, 1);
22
- }
23
- }
24
-
25
- cancelPendingRequests() {
26
- this.pendingRequests.forEach((request) => {
27
- request.cancel();
28
- });
29
- this.pendingRequests = [];
30
- }
31
-
32
- /**
33
- * Inits axios
34
- */
35
- init() {
36
- const restApiPrefix = import.meta.env.VITE_REST_API_PREFIX;
37
- let apiBaseUrl = import.meta.env.VITE_API_DOMAIN;
38
-
39
- axios.defaults.baseURL = apiBaseUrl + restApiPrefix;
40
-
41
- this.setAxiosInterceptors(axios);
42
- }
43
-
44
- /**
45
- * Set axios interceptors
46
- * @param { Object } $axios
47
- */
48
- setAxiosInterceptors($axios) {
49
- $axios.interceptors.response.use(
50
- (response) => {
51
- this.loader("off", response.config.url);
52
-
53
- return response;
54
- },
55
- (error) => {
56
- const { config, response, message } = error;
57
- const apiMessage = this.getResponseMessage(response);
58
-
59
- this.loader("off", error.config.url);
60
-
61
- // show error notification if it isn't disabled in partiular api request
62
- if (!config?.disableErrorNotify) {
63
- if (message === "Network Error") {
64
- this.#notify.error("networkError");
65
- } else {
66
- Array.isArray(apiMessage) && apiMessage.length
67
- ? apiMessage.forEach((code) => this.#notify.error(code))
68
- : this.#notify.error(apiMessage);
69
- }
70
- }
71
-
72
- return Promise.reject(error);
73
- },
74
- );
75
- }
76
-
77
- /**
78
- * Set the default HTTP request headers
79
- */
80
- setHeaders(withLanguage = true) {
81
- const authToken = new JwtServiceDefault().getAuthToken();
82
- const activeLanguage = new I18nServiceDefault().getActiveLanguage();
83
-
84
- axios.defaults.headers.common["Authorization"] = `Bearer ${authToken}`;
85
-
86
- if (withLanguage) axios.defaults.headers.common["Language"] = activeLanguage;
87
- }
88
-
89
- /**
90
- * Get message code for global notification
91
- * @param { Object } response
92
- * @returns String
93
- */
94
- getResponseMessage(response) {
95
- return response?.data?.message;
96
- }
97
-
98
- /**
99
- * Show success notify or set type and message in local storage for display with delay
100
- * @param { String } message
101
- * @param { Boolean } withDelay
102
- */
103
- showSuccessNotify(message, withDelay) {
104
- const type = "success";
105
-
106
- withDelay ? this.#notify.setDelayed(type, message) : this.#notify.success(message);
107
- }
108
-
109
- /**
110
- * Change loaders state (on | off): redeclare this method
111
- * @param { String } state
112
- * @param { String } resource
113
- */
114
- loader(state, resource) {
115
- // eslint-disable-next-line no-console
116
- if (state === "on") console.log(state, resource);
117
- // eslint-disable-next-line no-console
118
- if (state === "off") console.log(state, resource);
119
- }
120
-
121
- /**
122
- * Get axios request config (method for redeclaration)
123
- * @param { Object } settings
124
- * @returns { Object }
125
- */
126
- getRequestConfig(settings) {
127
- const { allowMultipleRequests = false, disableErrorNotify = false } = settings;
128
-
129
- const config = {};
130
-
131
- if (allowMultipleRequests) {
132
- config.allowMultipleRequests = allowMultipleRequests;
133
- }
134
-
135
- if (disableErrorNotify) {
136
- config.disableErrorNotify = disableErrorNotify;
137
- }
138
-
139
- return config;
140
- }
141
-
142
- /**
143
- * Send the GET HTTP request
144
- * @param { String } resource
145
- * @param { Object } settings
146
- * @returns { IDBRequest<IDBValidKey> | Promise<void> }
147
- */
148
- get(resource, settings = {}) {
149
- const config = this.getRequestConfig(settings);
150
- const { withLoader = true, withNotify = false, delaySuccessNotify = false } = settings;
151
-
152
- if (withLoader) {
153
- this.loader("on", resource);
154
- }
155
-
156
- config.cancelToken = new axios.CancelToken((cancel) => {
157
- this.addPendingRequest({ cancel });
158
- });
159
-
160
- return axios.get(resource, config).then((response) => {
161
- this.removePendingRequest(config.cancelToken);
162
-
163
- if (withNotify) {
164
- const message = this.getResponseMessage(response);
165
-
166
- this.showSuccessNotify(message, delaySuccessNotify);
167
- }
168
-
169
- return response;
170
- });
171
- }
172
-
173
- /**
174
- * Set the POST HTTP request
175
- * @param { String } resource
176
- * @param params
177
- * @param { Object } settings
178
- * @returns { IDBRequest<IDBValidKey> | Promise<void> }
179
- */
180
- post(resource, params = null, settings = {}) {
181
- const config = this.getRequestConfig(settings);
182
- const { withLoader = true, withNotify = false, delaySuccessNotify = false } = settings;
183
-
184
- if (withLoader) {
185
- this.loader("on", resource);
186
- }
187
-
188
- return axios.post(resource, params, config).then((response) => {
189
- if (withNotify) {
190
- const message = this.getResponseMessage(response);
191
-
192
- this.showSuccessNotify(message, delaySuccessNotify);
193
- }
194
-
195
- return response;
196
- });
197
- }
198
-
199
- /**
200
- * Send the PUT HTTP request
201
- * @param { String } resource
202
- * @param params
203
- * @param { Object } settings
204
- * @returns {IDBRequest<IDBValidKey> | Promise<void>}
205
- */
206
- put(resource, params = null, settings = {}) {
207
- const config = this.getRequestConfig(settings);
208
- const { withLoader = true, withNotify = false, delaySuccessNotify = false } = settings;
209
-
210
- if (withLoader) {
211
- this.loader("on", resource);
212
- }
213
-
214
- return axios.put(resource, params, config).then((response) => {
215
- if (withNotify) {
216
- const message = this.getResponseMessage(response);
217
-
218
- this.showSuccessNotify(message, delaySuccessNotify);
219
- }
220
-
221
- return response;
222
- });
223
- }
224
-
225
- /**
226
- * Send the PATCH HTTP request
227
- * @param { String } resource
228
- * @param params
229
- * @param { Object } settings
230
- * @returns { IDBRequest<IDBValidKey> | Promise<void> }
231
- */
232
- patch(resource, params = null, settings = {}) {
233
- const config = this.getRequestConfig(settings);
234
- const { withLoader = true, withNotify = false, delaySuccessNotify = false } = settings;
235
-
236
- if (withLoader) {
237
- this.loader("on", resource);
238
- }
239
-
240
- return axios.patch(resource, params, config).then((response) => {
241
- if (withNotify) {
242
- const message = this.getResponseMessage(response);
243
-
244
- this.showSuccessNotify(message, delaySuccessNotify);
245
- }
246
-
247
- return response;
248
- });
249
- }
250
-
251
- /**
252
- * Send the DELETE HTTP request
253
- * @param { String } resource
254
- * @param { Object } settings
255
- * @returns { IDBRequest<IDBValidKey> | Promise<void> }
256
- */
257
- delete(resource, settings = {}) {
258
- const config = this.getRequestConfig(settings);
259
- const { withLoader = true, withNotify = false, delaySuccessNotify = false } = settings;
260
-
261
- if (withLoader) {
262
- this.loader("on", resource);
263
- }
264
-
265
- return axios.delete(resource, config).then((response) => {
266
- if (withNotify) {
267
- const message = this.getResponseMessage(response);
268
-
269
- this.showSuccessNotify(message, delaySuccessNotify);
270
- }
271
-
272
- return response;
273
- });
274
- }
275
- }
@@ -1,75 +0,0 @@
1
- import { isProxy, isReactive, isRef, toRaw } from "vue";
2
-
3
- export default class DataServiceDefault {
4
- compareValues(key, order = "asc") {
5
- return function innerSort(a, b) {
6
- const isPropExistInObjA = Object.prototype.hasOwnProperty.call(a, key);
7
- const isPropExistInObjB = Object.prototype.hasOwnProperty.call(b, key);
8
-
9
- if (!isPropExistInObjA || !isPropExistInObjB) {
10
- return 0;
11
- }
12
-
13
- const varA = typeof a[key] === "string" ? a[key].toUpperCase() : a[key];
14
- const varB = typeof b[key] === "string" ? b[key].toUpperCase() : b[key];
15
- let comparison = 0;
16
-
17
- if (!varA) return 1;
18
-
19
- if (!varB) return -1;
20
-
21
- if (varA > varB) {
22
- comparison = 1;
23
- }
24
-
25
- if (varA < varB) {
26
- comparison = -1;
27
- }
28
-
29
- return order === "desc" ? comparison * -1 : comparison;
30
- };
31
- }
32
-
33
- createFormData(form = {}) {
34
- const formData = new FormData();
35
-
36
- for (let key in form) {
37
- if (Array.isArray(form[key])) {
38
- form[key].forEach((item, index) => formData.append(`${key}[${index}]`, item));
39
- } else if (typeof form[key] === "boolean") {
40
- formData.append(key, Number(form[key]));
41
- } else {
42
- formData.append(key, form[key]);
43
- }
44
- }
45
-
46
- return formData;
47
- }
48
-
49
- updateArray(oldArray, newArray) {
50
- newArray = new Map(newArray.map((item) => [item.id, item]));
51
-
52
- const updatedArray = oldArray.map((item) => {
53
- if (newArray.has(item.id)) {
54
- item = newArray.get(item.id);
55
- newArray.delete(item.id);
56
- }
57
-
58
- return item;
59
- });
60
-
61
- return [...updatedArray, ...newArray.values()];
62
- }
63
-
64
- getRawValue = (value) => {
65
- if (Array.isArray(value)) {
66
- return value.map((item) => this.getRawValue(item));
67
- }
68
-
69
- if (isRef(value) || isReactive(value) || isProxy(value)) {
70
- return this.getRawValue(toRaw(value));
71
- }
72
-
73
- return value;
74
- };
75
- }
@@ -1,222 +0,0 @@
1
- import I18nServiceDefault from "vueless/service.i18n";
2
- import { enGB, ru, uk } from "date-fns/locale";
3
- import {
4
- addDays,
5
- addMonths,
6
- endOfDay,
7
- endOfMonth,
8
- endOfTomorrow,
9
- format,
10
- getUnixTime,
11
- isToday,
12
- isTomorrow,
13
- isYesterday,
14
- minutesToSeconds,
15
- startOfDay,
16
- subMonths,
17
- startOfYear,
18
- endOfYear,
19
- startOfMonth,
20
- subDays,
21
- secondsToMilliseconds,
22
- getDaysInMonth,
23
- } from "date-fns";
24
- import { zonedTimeToUtc } from "date-fns-tz";
25
- import { format as TimeagoFormat, register as TimeagoRegister } from "timeago.js";
26
- import { uk as locale_UA, ru as locale_RU } from "timeago.js/lib/lang";
27
-
28
- const { getActiveLanguage } = new I18nServiceDefault();
29
-
30
- export default class DateServiceDefault {
31
- #languages = {
32
- en: enGB,
33
- ru: ru,
34
- ua: uk,
35
- };
36
-
37
- #settings = {
38
- yearFormat: "y",
39
- monthFormat: "MMMM",
40
- dayFormat: "EEEE",
41
- dateNumberFormat: "dd",
42
- hourFormat: "HH",
43
- minuteFormat: "mm",
44
- secondFormat: "ss",
45
- };
46
-
47
- TOMORROW_TIMESTAMP = getUnixTime(endOfTomorrow());
48
-
49
- constructor(languages = null) {
50
- this.#languages = languages || this.#languages;
51
- }
52
-
53
- getDifferenceBetweenTimeZone(date) {
54
- const diffInMinutesFrom = Math.abs(startOfDay(Number(date?.from)).getTimezoneOffset());
55
- const diffInMinutesTo = Math.abs(endOfDay(Number(date?.to)).getTimezoneOffset());
56
-
57
- return {
58
- from: minutesToSeconds(diffInMinutesFrom),
59
- to: minutesToSeconds(diffInMinutesTo),
60
- };
61
- }
62
-
63
- formatDate(date, settings) {
64
- const mergedSettings = {
65
- ...this.#settings,
66
- ...settings,
67
- };
68
- const {
69
- dayFormat,
70
- monthFormat,
71
- yearFormat,
72
- dateNumberFormat,
73
- hourFormat,
74
- minuteFormat,
75
- i18n,
76
- withTime,
77
- } = mergedSettings;
78
- const locale = this.#languages[getActiveLanguage()];
79
-
80
- const day = format(date, dayFormat, { locale });
81
- const month = format(date, monthFormat, { locale }).split(".").join(""); //Removes dot from Ukr and Rus localization;
82
- const year = format(date, yearFormat);
83
- const dateNumber = format(date, dateNumberFormat);
84
- const hours = format(date, hourFormat);
85
- const minutes = format(date, minuteFormat);
86
-
87
- let formattedDate = `${day}, ${dateNumber} ${month} ${year}`;
88
-
89
- if (isYesterday(date)) {
90
- formattedDate = `${i18n.yesterday}, ${dateNumber} ${month} ${year}`;
91
- }
92
-
93
- if (isToday(date)) {
94
- formattedDate = `${i18n.today}, ${dateNumber} ${month} ${year}`;
95
- }
96
-
97
- if (isTomorrow(date)) {
98
- formattedDate = `${i18n.tomorrow}, ${dateNumber} ${month} ${year}`;
99
- }
100
-
101
- if (withTime) {
102
- formattedDate = `${formattedDate} – ${hours}:${minutes}`;
103
- }
104
-
105
- return formattedDate;
106
- }
107
-
108
- dateConverter(timestamp, type = "date") {
109
- const locale = this.#languages[getActiveLanguage()];
110
- const date = new Date(timestamp * 1000);
111
- let options = "";
112
-
113
- if (type.includes("date")) {
114
- options = "dd.MM.yyyy";
115
- }
116
-
117
- if (type.includes("time")) {
118
- options = "HH:mm:ss";
119
- }
120
-
121
- if (type.includes("datetime")) {
122
- options = "HH:mm dd.MM.yyyy";
123
- }
124
-
125
- if (type.includes("dateWithFullMonth")) {
126
- options = "dd MMMM yyyy";
127
- }
128
-
129
- if (type.includes("dateWithFullMonthAndTime")) {
130
- options = "dd MMMM yyyy HH:mm";
131
- }
132
-
133
- return format(date, options, { locale });
134
- }
135
-
136
- thirtyDaysAgo() {
137
- const date = new Date();
138
- const thirtyDaysAgo = subDays(date, getDaysInMonth(date));
139
- const diffInSeconds = this.getDifferenceBetweenTimeZone({ from: startOfDay(thirtyDaysAgo) });
140
-
141
- return getUnixTime(startOfDay(thirtyDaysAgo)) + diffInSeconds.from;
142
- }
143
-
144
- nextTwoWeek() {
145
- const date = new Date();
146
- const nextTwoWeek = addDays(date, 14);
147
- const diffInSeconds = this.getDifferenceBetweenTimeZone({ to: nextTwoWeek });
148
-
149
- return getUnixTime(endOfDay(nextTwoWeek)) + diffInSeconds.to;
150
- }
151
-
152
- sixMonthsAgo() {
153
- const currentDate = new Date();
154
- const startOfFiveMonthsAgoInSeconds = getUnixTime(startOfMonth(subMonths(currentDate, 5)));
155
- const endOfCurrentMonthInSeconds = getUnixTime(endOfMonth(currentDate));
156
- const diffInSeconds = this.getDifferenceBetweenTimeZone({
157
- from: startOfMonth(subMonths(currentDate, 5)),
158
- to: endOfMonth(currentDate),
159
- });
160
-
161
- return {
162
- from: startOfFiveMonthsAgoInSeconds + diffInSeconds.from,
163
- to: endOfCurrentMonthInSeconds + diffInSeconds.to,
164
- };
165
- }
166
-
167
- currentMonth() {
168
- const currentDate = new Date();
169
- const startOfMonthInSeconds = getUnixTime(startOfMonth(currentDate));
170
- const endOfMonthInSeconds = getUnixTime(endOfMonth(currentDate));
171
- const diffInSeconds = this.getDifferenceBetweenTimeZone({
172
- from: startOfMonth(currentDate),
173
- to: endOfMonth(currentDate),
174
- });
175
-
176
- return {
177
- from: startOfMonthInSeconds + diffInSeconds.from,
178
- to: endOfMonthInSeconds + diffInSeconds.to,
179
- };
180
- }
181
-
182
- currentYear() {
183
- const currentDate = new Date();
184
- const startOfYearInSeconds = getUnixTime(startOfYear(currentDate));
185
- const endOfYearInSeconds = getUnixTime(endOfYear(currentDate));
186
- const diffInSeconds = this.getDifferenceBetweenTimeZone({
187
- from: startOfYear(currentDate),
188
- to: endOfYear(currentDate),
189
- });
190
-
191
- return {
192
- from: startOfYearInSeconds + diffInSeconds.from,
193
- to: endOfYearInSeconds + diffInSeconds.to,
194
- };
195
- }
196
-
197
- nextMonth() {
198
- const nextMonth = addMonths(new Date(), 1);
199
-
200
- const firstDayOfMonth = getUnixTime(startOfMonth(nextMonth));
201
- const lastDayOfMonth = getUnixTime(endOfMonth(nextMonth));
202
-
203
- return { firstDayOfMonth, lastDayOfMonth };
204
- }
205
-
206
- startOfSelectedDay(timestamp) {
207
- const localTimeZone = "Etc/GMT";
208
-
209
- const localStartOfDay = zonedTimeToUtc(startOfDay(timestamp), localTimeZone);
210
-
211
- return getUnixTime(localStartOfDay);
212
- }
213
-
214
- getTimeAgo(date) {
215
- TimeagoRegister("ua", locale_UA);
216
- TimeagoRegister("ru", locale_RU);
217
-
218
- const activeLanguage = getActiveLanguage();
219
-
220
- return TimeagoFormat(secondsToMilliseconds(date), activeLanguage);
221
- }
222
- }
@@ -1,145 +0,0 @@
1
- import { getCurrentInstance } from "vue";
2
- import { createI18n, useI18n } from "vue-i18n";
3
- import merge from "lodash.merge";
4
- import { fallbackLocale } from "vueless/service.ui";
5
-
6
- export default class I18nServiceDefault {
7
- static FALLBACK_LOCALE = "en";
8
- static LOCALE_KEY = "language";
9
-
10
- #globalMessages = {};
11
- #moduleMessages = {};
12
-
13
- constructor() {
14
- this._fallbackLocale = fallbackLocale || I18nServiceDefault.FALLBACK_LOCALE;
15
-
16
- this.createI18nInstance();
17
- }
18
-
19
- createI18nInstance() {
20
- this.i18nInstance = createI18n({
21
- legacy: false,
22
- messages: {},
23
- locale: this.getActiveLanguage(),
24
- fallbackLocale: this._fallbackLocale,
25
- missing: this.missing,
26
- warnHtmlMessage: false, // TODO: Think how to manage this later
27
- pluralRules: {
28
- ru: this.pluralizationRules,
29
- ua: this.pluralizationRules,
30
- },
31
- });
32
- }
33
-
34
- async init() {
35
- // Auto import global translations.
36
- const global = import.meta.glob("@/i18n/**/*.yaml");
37
-
38
- for (const path in global) {
39
- const locales = await global[path]();
40
- const lang = path.split(".").shift().split("/").pop();
41
-
42
- this.#globalMessages[lang] = locales.default;
43
- }
44
-
45
- // Auto import translations from the modules.
46
- const modules = import.meta.glob("@/modules/**/*.yaml");
47
-
48
- for (const path in modules) {
49
- const locales = await modules[path]();
50
- const lang = path.split(".").shift().split("/").pop();
51
- const module = path.split("modules").pop().split("/").at(1);
52
-
53
- this.#moduleMessages[lang] = {
54
- ...this.#moduleMessages[lang],
55
- [module]: locales.default,
56
- };
57
- }
58
-
59
- this.setMessages();
60
- }
61
-
62
- setMessages(module) {
63
- const lang = this.getActiveLanguage();
64
-
65
- const messages = this.#moduleMessages[lang]
66
- ? merge(this.#moduleMessages[lang][module], this.#globalMessages[lang])
67
- : this.#globalMessages[lang];
68
-
69
- this.i18nInstance.global.setLocaleMessage(lang, messages);
70
- }
71
-
72
- // eslint-disable-next-line no-unused-vars
73
- missing(locale, key) {
74
- // Handle issues here by Honeybadger.io or similar error tracking app.
75
- }
76
-
77
- pluralizationRules(value, plurals) {
78
- let pluralIndex = 0;
79
-
80
- if (value) {
81
- const remainder = value % 10;
82
- const teen = value > 10 && value < 20;
83
- const endsWithOne = remainder === 1;
84
-
85
- if (plurals < 4) {
86
- pluralIndex = !teen && endsWithOne ? 1 : 2;
87
- } else {
88
- pluralIndex = 3;
89
- if (!teen && endsWithOne) pluralIndex = 1;
90
- if (!teen && remainder >= 2 && remainder <= 4) pluralIndex = 2;
91
- }
92
- }
93
-
94
- return pluralIndex;
95
- }
96
-
97
- /**
98
- * Get translation from global or local scopes
99
- * @param localPath {string}
100
- * @param params {$ObjMap}
101
- * @returns {string}
102
- */
103
- getTranslation(localPath, params = {}) {
104
- const { t, tm } = useI18n({ useScope: "local" });
105
- const { t: tGlobal, tm: tmGlobal, te: teGlobal } = useI18n({ useScope: "global" });
106
-
107
- const componentName = getCurrentInstance().type.name;
108
- const globalPath = `${componentName}.${localPath}`;
109
-
110
- let translation;
111
-
112
- if (!localPath || !componentName) {
113
- translation = "";
114
- } else if (params?.isNested) {
115
- translation = teGlobal(globalPath) ? tmGlobal(globalPath) : tm(localPath);
116
- } else {
117
- translation = teGlobal(globalPath) ? tGlobal(globalPath) : t(localPath);
118
- }
119
-
120
- return translation;
121
- }
122
-
123
- /**
124
- * Save the active language to the localStorage
125
- * @param lang
126
- */
127
- setActiveLanguage = (lang) => {
128
- const localeKey = I18nServiceDefault.LOCALE_KEY;
129
-
130
- this.i18nInstance.global.locale.value = lang;
131
- localStorage.setItem(localeKey, lang);
132
-
133
- this.setMessages();
134
- };
135
-
136
- /**
137
- * Get the current active language from localStorage or set default if non exist
138
- * @returns {string | string}
139
- */
140
- getActiveLanguage = () => {
141
- const localeKey = I18nServiceDefault.LOCALE_KEY;
142
-
143
- return localStorage.getItem(localeKey) || this._fallbackLocale;
144
- };
145
- }