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,851 +1,254 @@
1
1
  <template>
2
- <div class="mono-datepicker-wrapper" :class="datepickerWrapperClasses">
3
- <div class="mono-datepicker-block">
4
- <t-datepicker
5
- :id="id"
6
- ref="datepicker"
7
- v-model="selectedDate"
8
- :user-format="customUserFormat || defaultUserFormat"
9
- :week-start="1"
10
- :locale="locale"
11
- :placeholder="placeholder"
12
- :disabled="disabled"
13
- :min-date="minDate"
14
- :max-date="maxDate"
15
- class="mono-datepicker"
16
- :clearable="false"
17
- :classes="datepickerClasses"
18
- :data-cy="dataCy"
19
- :timepicker="timepicker"
20
- :date-format="customDateFormat || defaultDateFormat"
21
- @shown="onShowCalendar"
22
- @hidden="onHideCalendar"
23
- >
24
- <template #day="{ isSelected, dayFormatted, day }">
25
- <span
26
- v-if="isSelected"
27
- class="mono-datepicker-day"
28
- :data-cy="`${dataCy}-clear`"
29
- @click.prevent.stop="onClickDay({ day, isSelected })"
30
- >
31
- {{ dayFormatted }}
32
- </span>
33
-
34
- <span v-else class="mono-datepicker-day" @click="onClickDay({ day })">
35
- {{ dayFormatted }}
36
- </span>
37
- </template>
38
- </t-datepicker>
39
- <label :for="id">
40
- <!-- @slot Use it to add icon. -->
41
- <slot name="icon" />
42
- </label>
43
-
44
- <label v-if="isShownRightSlot" :for="id" class="right-slot-label">
45
- <!-- @slot Use it to add something right. -->
2
+ <div class="relative">
3
+ <UInput
4
+ :id="id"
5
+ :key="isShownCalendar"
6
+ v-model="userFormatDate"
7
+ :config="inputAttrs.config"
8
+ :label="label"
9
+ :placeholder="placeholder"
10
+ :error="error"
11
+ :description="description"
12
+ readonly
13
+ :disabled="disabled"
14
+ :size="size"
15
+ v-bind="inputAttrs"
16
+ @focus="activate"
17
+ >
18
+ <template #left>
19
+ <slot name="left" />
20
+ </template>
21
+
22
+ <template #right-icon>
23
+ <slot name="right-icon" />
24
+ </template>
25
+
26
+ <template #right>
46
27
  <slot name="right" />
47
- </label>
48
- </div>
49
-
50
- <label class="label" :class="labelClass" :for="id">
51
- {{ label }}
52
- </label>
53
-
54
- <p v-if="error" class="error-message" :data-cy="`${dataCy}-error-message`">
55
- {{ error }}
56
- </p>
57
-
58
- <p v-if="description && !error" class="description">
59
- {{ description }}
60
- </p>
28
+ </template>
29
+ </UInput>
30
+
31
+ <Transition v-bind="config.calendarTransition">
32
+ <UCalendar
33
+ v-show="isShownCalendar"
34
+ ref="calendarRef"
35
+ v-model="localValue"
36
+ v-model:view="customView"
37
+ tabindex="-1"
38
+ :timepicker="timepicker"
39
+ :date-format="dateFormat"
40
+ :user-format="userFormat"
41
+ :max-date="maxDate"
42
+ :min-date="minDate"
43
+ v-bind="calendarAttrs"
44
+ @keydown.esc="deactivate"
45
+ @userDateChange="onUserFormatDateChange"
46
+ @formattedDateChange="onFormattedDateChange"
47
+ @input="onInput"
48
+ @blur="onBlur"
49
+ @submit="onSubmit"
50
+ />
51
+ </Transition>
61
52
  </div>
62
53
  </template>
63
54
 
64
- <script>
65
- import I18nServiceDefault from "vueless/service.i18n";
66
- import { fromUnixTime, getUnixTime, setHours, setMinutes, parse } from "date-fns";
67
- import DateService from "vueless/service.date";
68
- import { getRandomId } from "vueless/service.ui";
55
+ <script setup>
56
+ import { computed, nextTick, ref } from "vue";
57
+ import UIService, { getRandomId } from "vueless/service.ui";
69
58
 
70
- import TDatepicker from "vueless/library.vue-tailwind-3/TDatepicker";
59
+ import useAttrs from "./composables/attrs.composable";
71
60
 
72
- const HOURS_INPUT_SELECTOR = ".timepicker-input:first-child";
73
- const MINUTES_INPUT_SELECTOR = ".timepicker-input:last-child";
74
- const TIME_SELECTOR = ".timepicker-time-fields-wrapper";
61
+ import defaultConfig from "./configs/default.config";
62
+ import { UDatePicker } from "./constants";
75
63
 
76
- export default {
77
- name: "UDatePicker",
64
+ import { VIEW } from "vueless/ui.form-calendar/constants";
78
65
 
79
- components: {
80
- TDatepicker,
81
- },
66
+ defineOptions({ name: "UDatePicker" });
82
67
 
83
- props: {
84
- /**
85
- * Set date picker label.
86
- */
87
- label: {
88
- type: String,
89
- default: "",
90
- },
91
-
92
- /**
93
- * Set date picker placeholder.
94
- */
95
- placeholder: {
96
- type: String,
97
- default: "",
98
- },
99
-
100
- /**
101
- * Set date picker value (timestamp).
102
- */
103
- modelValue: {
104
- type: Number,
105
- default: 0,
106
- },
107
-
108
- /**
109
- * Set picker min date in format yyyy-MM-dd.
110
- */
111
- minDate: {
112
- type: String,
113
- default: "",
114
- },
115
-
116
- /**
117
- * Set picker max date in format yyyy-MM-dd.
118
- */
119
- maxDate: {
120
- type: String,
121
- default: "",
122
- },
123
-
124
- /**
125
- * Make component inactive.
126
- */
127
- disabled: {
128
- type: Boolean,
129
- default: false,
130
- },
131
-
132
- /**
133
- * Make timepicker input active.
134
- */
135
- timepicker: {
136
- type: Boolean,
137
- default: false,
138
- },
139
-
140
- /**
141
- * Set error text.
142
- */
143
- error: {
144
- type: String,
145
- default: "",
146
- },
147
-
148
- /**
149
- * Generates unique element id.
150
- * @ignore
151
- */
152
- id: {
153
- type: String,
154
- default: () => getRandomId(),
155
- },
156
-
157
- /**
158
- * Set description text.
159
- */
160
- description: {
161
- type: String,
162
- default: "",
163
- },
164
-
165
- /**
166
- * The size of the component.
167
- * @values sm, md, lg
168
- */
169
- size: {
170
- type: String,
171
- default: "md",
172
- },
173
-
174
- /**
175
- * Set custom date format.
176
- * [See all formats here.](https://www.vue-tailwind.com/docs/datepicker/)
177
- */
178
- customDateFormat: {
179
- type: String,
180
- default: "",
181
- },
182
-
183
- /**
184
- * Set custom user date format.
185
- * [See all formats here.](https://www.vue-tailwind.com/docs/datepicker/)
186
- */
187
- customUserFormat: {
188
- type: String,
189
- default: "",
190
- },
191
-
192
- /**
193
- * Sets data-cy attribute for automated testing.
194
- */
195
- dataCy: {
196
- type: String,
197
- default: "",
198
- },
68
+ const props = defineProps({
69
+ /**
70
+ * Datepicker label.
71
+ */
72
+ label: {
73
+ type: String,
74
+ default: "",
199
75
  },
200
76
 
201
- emits: ["update:modelValue"],
202
-
203
- setup() {
204
- const { getTranslation } = new I18nServiceDefault();
205
-
206
- return { getTranslation };
77
+ /**
78
+ * Datepicker placeholder.
79
+ */
80
+ placeholder: {
81
+ type: String,
82
+ default: "",
207
83
  },
208
84
 
209
- computed: {
210
- selectedDate: {
211
- get() {
212
- if (!this.modelValue) return;
213
-
214
- return fromUnixTime(this.modelValue);
215
- },
216
- set(value) {
217
- const timestamp = value ? getUnixTime(new Date(value)) : null;
218
-
219
- this.$emit("update:modelValue", timestamp);
220
- },
221
- },
222
-
223
- datepickerWrapperClasses() {
224
- return {
225
- "right-slot": this.isShownRightSlot,
226
- "size-sm": this.size === "sm",
227
- "size-md": this.size === "md",
228
- "size-lg": this.size === "lg",
229
- };
230
- },
231
-
232
- isShownRightSlot() {
233
- return !!this.$slots["right"];
234
- },
235
-
236
- i18n() {
237
- return {
238
- yesterday: this.getTranslation("yesterday"),
239
- today: this.getTranslation("today"),
240
- tomorrow: this.getTranslation("tomorrow"),
241
- timeLabel: this.getTranslation("timeLabel"),
242
- weekdays: {
243
- shorthand: {
244
- sunday: this.getTranslation("weekdays.shorthand.sunday"),
245
- monday: this.getTranslation("weekdays.shorthand.monday"),
246
- tuesday: this.getTranslation("weekdays.shorthand.tuesday"),
247
- wednesday: this.getTranslation("weekdays.shorthand.wednesday"),
248
- thursday: this.getTranslation("weekdays.shorthand.thursday"),
249
- friday: this.getTranslation("weekdays.shorthand.friday"),
250
- saturday: this.getTranslation("weekdays.shorthand.saturday"),
251
- },
252
- longhand: {
253
- sunday: this.getTranslation("weekdays.longhand.sunday"),
254
- monday: this.getTranslation("weekdays.longhand.monday"),
255
- tuesday: this.getTranslation("weekdays.longhand.tuesday"),
256
- wednesday: this.getTranslation("weekdays.longhand.wednesday"),
257
- thursday: this.getTranslation("weekdays.longhand.thursday"),
258
- friday: this.getTranslation("weekdays.longhand.friday"),
259
- saturday: this.getTranslation("weekdays.longhand.saturday"),
260
- },
261
- },
262
- months: {
263
- shorthand: {
264
- january: this.getTranslation("months.shorthand.january"),
265
- february: this.getTranslation("months.shorthand.february"),
266
- march: this.getTranslation("months.shorthand.march"),
267
- april: this.getTranslation("months.shorthand.april"),
268
- may: this.getTranslation("months.shorthand.may"),
269
- june: this.getTranslation("months.shorthand.june"),
270
- july: this.getTranslation("months.shorthand.july"),
271
- august: this.getTranslation("months.shorthand.august"),
272
- september: this.getTranslation("months.shorthand.september"),
273
- october: this.getTranslation("months.shorthand.october"),
274
- november: this.getTranslation("months.shorthand.november"),
275
- december: this.getTranslation("months.shorthand.december"),
276
- },
277
- longhand: {
278
- january: this.getTranslation("months.longhand.january"),
279
- february: this.getTranslation("months.longhand.february"),
280
- march: this.getTranslation("months.longhand.march"),
281
- april: this.getTranslation("months.longhand.april"),
282
- may: this.getTranslation("months.longhand.may"),
283
- june: this.getTranslation("months.longhand.june"),
284
- july: this.getTranslation("months.longhand.july"),
285
- august: this.getTranslation("months.longhand.august"),
286
- september: this.getTranslation("months.longhand.september"),
287
- october: this.getTranslation("months.longhand.october"),
288
- november: this.getTranslation("months.longhand.november"),
289
- december: this.getTranslation("months.longhand.december"),
290
- },
291
- },
292
- okLabel: this.getTranslation("okLabel"),
293
- };
294
- },
295
-
296
- locale() {
297
- return {
298
- weekdays: {
299
- shorthand: Object.values(this.i18n.weekdays.shorthand),
300
- longhand: Object.values(this.i18n.weekdays.longhand),
301
- },
302
- months: {
303
- shorthand: Object.values(this.i18n.months.shorthand),
304
- longhand: Object.values(this.i18n.months.longhand),
305
- },
306
- timeLabel: this.i18n.timeLabel,
307
- okLabel: this.i18n.okLabel,
308
- };
309
- },
310
-
311
- inputClass() {
312
- const classes = {
313
- disabled: this.disabled ? "disabled" : "",
314
- error: this.error ? "error-input" : "",
315
- };
316
-
317
- return `${classes.error} ${classes.disabled}}`;
318
- },
319
-
320
- labelClass() {
321
- return {
322
- "error-label": this.error,
323
- "label-sm": this.size === "sm",
324
- "label-md": this.size === "md",
325
- "label-lg": this.size === "lg",
326
- };
327
- },
328
-
329
- datepickerClasses() {
330
- return {
331
- wrapper: "flex flex-col",
332
- dropdownWrapper: "relative z-40",
333
- dropdown: `origin-top-left absolute rounded-lg shadow bg-white overflow-hidden mt-2 pl-1 pr-1 pb-4
334
- shadow border border-gray-300`,
335
- enterFromClass: "opacity-0 scale-95",
336
- enterActiveClass: "transition transform ease-out duration-100",
337
- enterToClass: "opacity-100 scale-100",
338
- leaveFromClass: "opacity-100 scale-100",
339
- leaveActiveClass: "transition transform ease-in duration-75",
340
- leaveToClass: "opacity-0 scale-95",
341
- inlineWrapper: "",
342
- inlineViews: "rounded bg-white border mt-1 inline-flex",
343
- inputWrapper: "",
344
- input: `input w-full ${this.inputClass}`,
345
- navigator: "pt-2 px-3 items-center",
346
- navigatorViewButton: `transition ease-in-out duration-100 inline-flex cursor-pointer rounded-full pr-1 pl-3
347
- py-1 -ml-1 hover:bg-gray-100`,
348
- navigatorViewButtonIcon: "fill-current text-gray-400",
349
- navigatorViewButtonBackIcon: "fill-current text-gray-400",
350
- navigatorViewButtonMonth: "text-gray-700 font-semibold",
351
- navigatorViewButtonYear: "text-gray-500 ml-1",
352
- navigatorViewButtonYearRange: "text-gray-500 ml-1",
353
- navigatorLabel: "py-1",
354
- navigatorLabelMonth: "text-gray-700 font-semibold",
355
- navigatorLabelYear: "text-gray-500 ml-1",
356
- navigatorPrevButton: `transition ease-in-out duration-100 inline-flex cursor-pointer
357
- hover:bg-gray-100 rounded-full p-1 ml-2 ml-auto disabled:opacity-50 disabled:cursor-not-allowed`,
358
- navigatorNextButton: `transition ease-in-out duration-100 inline-flex cursor-pointer hover:bg-gray-100
359
- rounded-full p-1 -mr-1 disabled:opacity-50 disabled:cursor-not-allowed`,
360
- navigatorPrevButtonIcon: "text-gray-400 navigation-btn-icon",
361
- navigatorNextButtonIcon: "text-gray-400 navigation-btn-icon",
362
- calendarWrapper: "px-3 pt-2",
363
- calendarHeaderWrapper: "",
364
- calendarHeaderWeekDay:
365
- "uppercase text-xs text-gray-500 w-8 h-8 flex items-center justify-center",
366
- calendarDaysWrapper: "",
367
- calendarDaysDayWrapper: "w-full h-8 flex shrink-0 items-center calendar-day-button",
368
- otherMonthDay: `text-sm rounded-lg w-8 h-8 mx-auto hover:bg-gray-100 text-gray-400 disabled:opacity-50
369
- disabled:cursor-not-allowed`,
370
- emptyDay: "",
371
- inRangeFirstDay: "text-sm bg-gray-900 text-white w-full h-8 rounded-l-full",
372
- inRangeLastDay: "text-sm bg-gray-900 text-white w-full h-8 rounded-r-full",
373
- inRangeDay:
374
- "text-sm bg-gray-200 w-full h-8 disabled:opacity-50 disabled:cursor-not-allowed",
375
- selectedDay:
376
- "text-sm rounded-lg w-8 h-8 mx-auto bg-gray-900 text-white disabled:opacity-50 disabled:cursor-not-allowed",
377
- activeDay:
378
- "text-sm rounded-lg bg-gray-100 w-8 h-8 mx-auto disabled:opacity-50 disabled:cursor-not-allowed",
379
- highlightedDay:
380
- "text-sm rounded-lg bg-gray-200 w-8 h-8 mx-auto disabled:opacity-50 disabled:cursor-not-allowed",
381
- day: "text-sm rounded-lg w-8 h-8 mx-auto hover:bg-gray-100 disabled:opacity-50 disabled:cursor-not-allowed",
382
- today: `text-sm rounded-lg w-8 h-8 mx-auto hover:bg-gray-100 disabled:opacity-50 disabled:cursor-not-allowed
383
- border-2 border-gray-900`,
384
- monthWrapper: "px-3 pt-2",
385
- selectedMonth: "text-sm rounded-lg w-full h-12 mx-auto bg-gray-900 text-white",
386
- activeMonth: "text-sm rounded-lg w-full h-12 mx-auto bg-gray-200",
387
- month: "text-sm rounded-lg w-full h-12 mx-auto hover:bg-gray-100",
388
- yearWrapper: "px-3 pt-2",
389
- year: "text-sm rounded-lg w-full h-12 mx-auto hover:bg-gray-100",
390
- selectedYear: "text-sm rounded-lg w-full h-12 mx-auto bg-gray-900 text-white",
391
- activeYear: "text-sm rounded-lg w-full h-12 mx-auto bg-gray-200",
392
- timepickerInput: `timepicker-input w-11 border-none text-sm text-center first:rounded-l-lg last:rounded-r-lg`,
393
- timepickerWrapper:
394
- "border-t border-gray-200 mx-2 pl-2 pr-1 mt-2 pt-3 -mb-1 flex items-center text-sm",
395
- timepickerTimeLabel: "flex mr-auto",
396
- timepickerOkButton: `block rounded-lg outline-none flex items-center justify-center px-2.5 py-1
397
- text-sm bg-gray-900/10 text-gray-900 ml-2`,
398
- timepickerTimeWrapper: "flex z-[100]",
399
- timepickerTimeFieldsWrapper:
400
- "timepicker-time-fields-wrapper rounded-lg border border-gray-300 flex items-center",
401
- };
402
- },
403
-
404
- defaultUserFormat() {
405
- if (!this.modelValue) return;
406
-
407
- const SPACE_BETWEEN_LETTER_REG_EXP = /./g;
408
-
409
- let date = new DateService()
410
- .formatDate(this.selectedDate, { withTime: this.timepicker, i18n: this.i18n })
411
- .toLowerCase();
412
-
413
- const separatedDate = date.match(SPACE_BETWEEN_LETTER_REG_EXP).join("\\");
414
-
415
- return "\\" + separatedDate.charAt(0).toUpperCase() + separatedDate.slice(1);
416
- },
417
-
418
- defaultDateFormat() {
419
- if (!this.modelValue) return;
420
-
421
- return "Y-m-d H:i\\";
422
- },
85
+ /**
86
+ * Datepicker value (timestamp).
87
+ */
88
+ modelValue: {
89
+ type: Number,
90
+ default: null,
423
91
  },
424
92
 
425
- methods: {
426
- onClickClearDate() {
427
- this.selectedDate = null;
428
-
429
- this.$refs.datepicker.$refs.dropdown.localShow = false;
430
- },
431
-
432
- onShowCalendar() {
433
- if (!this.timepicker) return;
434
-
435
- this.$nextTick(() => {
436
- const hoursInput = document.querySelector(HOURS_INPUT_SELECTOR);
437
- const minutesInput = document.querySelector(MINUTES_INPUT_SELECTOR);
438
- const timeBlock = document.querySelector(TIME_SELECTOR);
439
-
440
- hoursInput.addEventListener("input", this.setHours);
441
- hoursInput.addEventListener("blur", this.setHours);
442
-
443
- minutesInput.addEventListener("input", this.setMinutes);
444
- minutesInput.addEventListener("blur", this.setMinutes);
445
-
446
- timeBlock.addEventListener("blur", () => {
447
- this.setHoursAndMinutes();
448
- });
449
- });
450
- },
451
-
452
- setTime(type) {
453
- let selectedDate = this.selectedDate;
454
-
455
- if (type === "hours" || !type) {
456
- const hoursInput = document.querySelector(HOURS_INPUT_SELECTOR);
457
-
458
- selectedDate = setHours(selectedDate, Number(hoursInput.value));
459
- }
93
+ /**
94
+ * Min date in format date string or Date.
95
+ */
96
+ minDate: {
97
+ type: [String, Date],
98
+ default: UIService.get(defaultConfig, UDatePicker).default.minDate,
99
+ },
460
100
 
461
- if (type === "minutes" || !type) {
462
- const minutesInput = document.querySelector(MINUTES_INPUT_SELECTOR);
101
+ /**
102
+ * Max date in format date string or Date.
103
+ */
104
+ maxDate: {
105
+ type: [String, Date],
106
+ default: UIService.get(defaultConfig, UDatePicker).default.maxDate,
107
+ },
463
108
 
464
- selectedDate = setMinutes(selectedDate, Number(minutesInput.value));
465
- }
109
+ /**
110
+ * Disable component.
111
+ */
112
+ disabled: {
113
+ type: Boolean,
114
+ default: UIService.get(defaultConfig, UDatePicker).default.disabled,
115
+ },
466
116
 
467
- this.selectedDate = selectedDate;
468
- },
117
+ /**
118
+ * Enable timepicker.
119
+ */
120
+ timepicker: {
121
+ type: Boolean,
122
+ default: UIService.get(defaultConfig, UDatePicker).default.timepicker,
123
+ },
469
124
 
470
- setHoursAndMinutes() {
471
- this.setTime();
472
- },
125
+ /**
126
+ * Error message.
127
+ */
128
+ error: {
129
+ type: String,
130
+ default: "",
131
+ },
473
132
 
474
- setHours() {
475
- this.setTime("hours");
476
- },
133
+ /**
134
+ * Datepicker description.
135
+ */
136
+ description: {
137
+ type: String,
138
+ default: "",
139
+ },
477
140
 
478
- setMinutes() {
479
- this.setTime("minutes");
480
- },
141
+ /**
142
+ * Datepicker size.
143
+ * @values sm, md, lg
144
+ */
145
+ size: {
146
+ type: String,
147
+ default: UIService.get(defaultConfig, UDatePicker).default.size,
148
+ },
481
149
 
482
- onHideCalendar() {
483
- if (!this.timepicker) return;
150
+ /**
151
+ * Date format.
152
+ */
153
+ dateFormat: {
154
+ type: String,
155
+ default: UIService.get(defaultConfig, UDatePicker).default.dateFormat,
156
+ },
484
157
 
485
- const hoursInput = document.querySelector(HOURS_INPUT_SELECTOR);
486
- const minutesInput = document.querySelector(MINUTES_INPUT_SELECTOR);
487
- const timeBlock = document.querySelector(TIME_SELECTOR);
158
+ /**
159
+ * User friendly date format.
160
+ */
161
+ userFormat: {
162
+ type: String,
163
+ default: UIService.get(defaultConfig, UDatePicker).default.userFormat,
164
+ },
488
165
 
489
- hoursInput.removeEventListener("input", this.setHours);
490
- hoursInput.removeEventListener("blur", this.setHours);
166
+ /**
167
+ * Unique element id.
168
+ * @ignore
169
+ */
170
+ id: {
171
+ type: String,
172
+ default: () => getRandomId(),
173
+ },
491
174
 
492
- minutesInput.removeEventListener("input", this.setMinutes);
493
- minutesInput.removeEventListener("blur", this.setMinutes);
175
+ /**
176
+ * Component ui config object.
177
+ */
178
+ config: {
179
+ type: Object,
180
+ default: () => ({}),
181
+ },
494
182
 
495
- timeBlock.removeEventListener("blur", () => {
496
- this.setHoursAndMinutes();
497
- });
498
- },
183
+ /**
184
+ * Data-cy attribute for automated testing.
185
+ */
186
+ dataCy: {
187
+ type: String,
188
+ default: "",
189
+ },
190
+ });
499
191
 
500
- onClickDay({ day, isSelected }) {
501
- const selectedDateParse = new Date(day);
192
+ const emit = defineEmits(["update:modelValue", "input"]);
502
193
 
503
- const selectedDate = getUnixTime(selectedDateParse);
194
+ const isShownCalendar = ref(false);
195
+ const userFormatDate = ref("");
196
+ const formattedDate = ref("");
197
+ const customView = ref(VIEW.day);
504
198
 
505
- const maxDayParse = parse(this.maxDate, "yyyy-MM-dd", new Date());
506
- const minDayParse = parse(this.minDate, "yyyy-MM-dd", new Date());
507
- const maxDay = getUnixTime(maxDayParse);
508
- const minDay = getUnixTime(minDayParse);
199
+ const calendarRef = ref(null);
509
200
 
510
- if (selectedDate < minDay || selectedDate > maxDay) return;
201
+ defineExpose({
202
+ calendarRef,
203
+ userFormatDate,
204
+ formattedDate,
205
+ });
511
206
 
512
- this.selectedDate = day;
207
+ const localValue = computed({
208
+ get: () => props.modelValue,
209
+ set: (value) => emit("update:modelValue", value),
210
+ });
513
211
 
514
- this.$refs.datepicker.$refs.dropdown.localShow = false;
212
+ const { config, inputAttrs, calendarAttrs } = useAttrs(props, { isShownCalendar });
515
213
 
516
- if (isSelected) {
517
- this.selectedDate = null;
518
- }
519
- },
520
- },
521
- };
522
- </script>
214
+ function activate() {
215
+ isShownCalendar.value = true;
523
216
 
524
- <i18n>
525
- en:
526
- yesterday: Yesterday
527
- today: Today
528
- tomorrow: Tomorrow
529
- timeLabel: Time
530
- weekdays:
531
- shorthand:
532
- sunday: Sun
533
- monday: Mon
534
- tuesday: Tue
535
- wednesday: Wed
536
- thursday: Thu
537
- friday: Fri
538
- saturday: Sat
539
- longhand:
540
- sunday: Sunday
541
- monday: Monday
542
- tuesday: Tuesday
543
- wednesday: Wednesday
544
- thursday: Thursday
545
- friday: Friday
546
- saturday: Sat
547
- months:
548
- shorthand:
549
- january: Jan
550
- february: Feb
551
- march: Mar
552
- april: Apr
553
- may: May
554
- june: Jun
555
- july: Jul
556
- august: Aug
557
- september: Sep
558
- october: Oct
559
- november: Nov
560
- december: Dec
561
- longhand:
562
- january: January
563
- february: February
564
- march: March
565
- april: April
566
- may: May
567
- june: June
568
- july: July
569
- august: August
570
- september: September
571
- october: October
572
- november: November
573
- december: December
574
- okLabel: Ok
575
- ru:
576
- yesterday: Вчера
577
- today: Сегодня
578
- tomorrow: Завтра
579
- timeLabel: Время
580
- weekdays:
581
- shorthand:
582
- sunday: Вс
583
- monday: Пн
584
- tuesday: Вт
585
- wednesday: Ср
586
- thursday: Чт
587
- friday: Пт
588
- saturday: Сб
589
- longhand:
590
- sunday: Воскресенье
591
- monday: Понедельник
592
- tuesday: Вторник
593
- wednesday: Среда
594
- thursday: Четверг
595
- friday: Пятница
596
- saturday: Суббота
597
- months:
598
- shorthand:
599
- january: Янв
600
- february: Фев
601
- march: Мар
602
- april: Апр
603
- may: Май
604
- june: Июнь
605
- july: Июль
606
- august: Авг
607
- september: Сен
608
- october: Окт
609
- november: Ноя
610
- december: Дек
611
- longhand:
612
- january: Январь
613
- february: Февраль
614
- march: Март
615
- april: Апрель
616
- may: Май
617
- june: Июнь
618
- july: Июль
619
- august: Август
620
- september: Сентябрь
621
- october: Октябрь
622
- november: Ноябрь
623
- december: Декабрь
624
- okLabel: Oк
625
- ua:
626
- yesterday: Вчора
627
- today: Сьогодні
628
- tomorrow: Завтра
629
- timeLabel: Час
630
- weekdays:
631
- shorthand:
632
- sunday: Нд
633
- monday: Пн
634
- tuesday: Вт
635
- wednesday: Ср
636
- thursday: Чт
637
- friday: Пт
638
- saturday: Сб
639
- longhand:
640
- sunday: Неділя
641
- monday: Понеділок
642
- tuesday: Вівторок
643
- wednesday: Середа
644
- thursday: Четвер
645
- friday: П'ятниця
646
- saturday: Субота
647
- months:
648
- shorthand:
649
- january: Січ
650
- february: Лют
651
- march: Бер
652
- april: Кві
653
- may: Тра
654
- june: Чер
655
- july: Лип
656
- august: Сер
657
- september: Вер
658
- october: Жов
659
- november: Лис
660
- december: Гру
661
- longhand:
662
- january: Січень
663
- february: Лютий
664
- march: Березень
665
- april: Квітень
666
- may: Травень
667
- june: Червень
668
- july: Липень
669
- august: Серпень
670
- september: Вересень
671
- october: Жовтень
672
- november: Листопад
673
- december: Грудень
674
- okLabel: Oк
675
- </i18n>
676
-
677
- <style lang="postcss" scoped>
678
- .mono-datepicker {
679
- &-day {
680
- @apply flex items-center justify-center;
681
- @apply h-full w-full;
682
- }
217
+ nextTick(() => calendarRef.value.wrapperRef.focus());
683
218
  }
684
219
 
685
- .mono-datepicker-wrapper {
686
- @apply relative;
687
- @apply max-w-full;
220
+ function deactivate() {
221
+ isShownCalendar.value = false;
688
222
 
689
- .description {
690
- @apply text-xs font-normal text-gray-500/[85];
691
- @apply pl-4 pt-2;
692
- }
223
+ customView.value = VIEW.day;
693
224
  }
694
225
 
695
- .mono-datepicker-block {
696
- @apply relative;
697
-
698
- &:focus-within {
699
- :deep(.input) {
700
- @apply border-gray-500 ring-4 ring-gray-600 ring-opacity-15;
701
- }
702
-
703
- :deep(.error-input) {
704
- @apply border-red-500 ring-red-100 !important;
705
- }
706
- }
707
-
708
- :deep(.error-input) {
709
- @apply border-red-300 !important;
710
- }
711
-
712
- :deep(.navigation-btn-icon) {
713
- @apply h-4 !important;
714
- }
715
-
716
- .right-slot-label {
717
- @apply absolute left-4 md:left-auto md:right-4 md:top-4 !important;
718
- @apply pt-0.5;
719
- }
720
-
721
- :deep(.input) {
722
- @apply font-normal text-gray-900;
723
- @apply rounded-lg border border-solid border-gray-300 bg-white shadow-none;
724
- @apply pl-4 pr-4 md:pr-11;
725
-
726
- &:hover {
727
- @apply border-gray-400;
728
- }
729
-
730
- &:focus {
731
- @apply border-gray-500 ring-4 ring-gray-600 ring-opacity-15;
732
- }
733
-
734
- &::placeholder {
735
- @apply font-normal text-gray-400;
736
- }
737
-
738
- &:disabled {
739
- @apply text-gray-500;
740
- @apply border-gray-100 bg-gray-100;
741
- }
742
- }
743
-
744
- .error-input {
745
- @apply border-red-300 !important;
746
-
747
- &:hover {
748
- @apply border-red-400 !important;
749
- }
750
-
751
- &:focus {
752
- @apply border-red-500 ring-red-100 !important;
753
- }
754
- }
226
+ function onUserFormatDateChange(value) {
227
+ userFormatDate.value = value || "";
755
228
  }
756
229
 
757
- .label {
758
- @apply absolute font-normal text-gray-500;
759
-
760
- &-sm {
761
- @apply text-xs;
762
- @apply left-4 top-2;
763
- }
764
-
765
- &-md {
766
- @apply text-sm;
767
- @apply left-4 top-2.5;
768
- }
769
-
770
- &-lg {
771
- @apply text-base;
772
- @apply left-4 top-3;
773
- }
230
+ function onFormattedDateChange(value) {
231
+ formattedDate.value = value || "";
774
232
  }
775
233
 
776
- .error {
777
- &-message {
778
- @apply text-xs font-normal text-red-500;
779
- @apply mt-2 pl-4;
780
- }
781
-
782
- &-label {
783
- @apply text-red-500;
784
- }
234
+ function onSubmit() {
235
+ deactivate();
785
236
  }
786
237
 
787
- .size {
788
- &-sm {
789
- .right-slot-label {
790
- @apply top-[3.125rem];
791
- }
792
-
793
- &.right-slot:deep(.input) {
794
- @apply md:pb-2 !important;
795
- }
796
-
797
- &:deep(.input) {
798
- @apply text-xs;
799
- @apply pb-2 pt-8;
800
-
801
- &::placeholder {
802
- @apply text-xs font-normal;
803
- }
804
- }
805
- }
806
-
807
- &-md {
808
- .right-slot-label {
809
- @apply top-14;
810
- }
811
-
812
- &.right-slot:deep(.input) {
813
- @apply md:pb-2 !important;
814
- }
815
-
816
- &:deep(.input) {
817
- @apply text-base;
818
- @apply pb-2.5 pt-7;
819
-
820
- &::placeholder {
821
- @apply text-base font-normal;
822
- }
823
- }
824
- }
825
-
826
- &-lg {
827
- .right-slot-label {
828
- @apply top-[3.875rem];
829
- }
830
-
831
- &.right-slot:deep(.input) {
832
- @apply md:pb-3 !important;
833
- }
834
-
835
- &:deep(.input) {
836
- @apply text-lg;
837
- @apply pb-3 pt-8;
838
-
839
- &::placeholder {
840
- @apply text-lg font-normal;
841
- }
842
- }
843
- }
238
+ function onBlur(event) {
239
+ const { relatedTarget } = event;
240
+
241
+ if (!calendarRef.value.wrapperRef.contains(relatedTarget)) deactivate();
844
242
  }
845
243
 
846
- .right-slot {
847
- &:deep(.input) {
848
- @apply pb-11;
849
- }
244
+ function onInput() {
245
+ nextTick(() => {
246
+ calendarRef.value.wrapperRef.blur();
247
+ emit("input", {
248
+ userFormatDate: userFormatDate.value,
249
+ value: localValue.value,
250
+ formattedDate: formattedDate.value,
251
+ });
252
+ });
850
253
  }
851
- </style>
254
+ </script>