vueless 0.0.10 → 0.0.12

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 (359) hide show
  1. package/composable.ui/index.js +395 -0
  2. package/package.json +2 -2
  3. package/service.storybook/index.js +91 -0
  4. package/service.tailwind/index.js +103 -0
  5. package/service.ui/index.js +193 -0
  6. package/ui.button/Docs.mdx +16 -0
  7. package/ui.button/composables/attrs.composable.js +41 -0
  8. package/ui.button/configs/default.config.js +165 -0
  9. package/ui.button/constants/index.js +5 -0
  10. package/ui.button/index.stories.js +166 -0
  11. package/ui.button/index.vue +151 -0
  12. package/ui.button-link/Docs.mdx +16 -0
  13. package/ui.button-link/composables/attrs.composable.js +99 -0
  14. package/ui.button-link/configs/default.config.js +80 -0
  15. package/ui.button-link/constants/index.js +5 -0
  16. package/ui.button-link/index.stories.js +158 -0
  17. package/ui.button-link/index.vue +226 -0
  18. package/ui.button-toggle/Docs.mdx +16 -0
  19. package/ui.button-toggle/composables/attrs.composable.js +16 -0
  20. package/ui.button-toggle/configs/default.config.js +12 -0
  21. package/ui.button-toggle/constants/index.js +7 -0
  22. package/ui.button-toggle/index.stories.js +155 -0
  23. package/ui.button-toggle/index.vue +128 -0
  24. package/ui.button-toggle-item/Docs.mdx +16 -0
  25. package/ui.button-toggle-item/composables/attrs.composable.js +53 -0
  26. package/ui.button-toggle-item/configs/default.config.js +58 -0
  27. package/ui.button-toggle-item/constants/index.js +5 -0
  28. package/ui.button-toggle-item/index.stories.js +77 -0
  29. package/ui.button-toggle-item/index.vue +147 -0
  30. package/ui.container-accordion/composables/attrs.composable.js +45 -0
  31. package/ui.container-accordion/configs/default.config.js +32 -0
  32. package/ui.container-accordion/constants/index.js +5 -0
  33. package/ui.container-accordion/index.stories.js +89 -0
  34. package/ui.container-accordion/index.vue +95 -0
  35. package/ui.container-card/Docs.mdx +16 -0
  36. package/ui.container-card/composable/attrs.composable.js +56 -0
  37. package/ui.container-card/configs/default.config.js +31 -0
  38. package/ui.container-card/constants/index.js +5 -0
  39. package/ui.container-card/index.stories.js +170 -0
  40. package/ui.container-card/index.vue +146 -0
  41. package/ui.container-divider/Docs.mdx +16 -0
  42. package/ui.container-divider/composables/attrs.composable.js +65 -0
  43. package/ui.container-divider/configs/default.config.js +79 -0
  44. package/ui.container-divider/constants/index.js +5 -0
  45. package/ui.container-divider/index.stories.js +124 -0
  46. package/ui.container-divider/index.vue +138 -0
  47. package/ui.container-group/Docs.mdx +16 -0
  48. package/ui.container-group/composables/attrs.composable.js +44 -0
  49. package/ui.container-group/configs/default.config.js +29 -0
  50. package/ui.container-group/constants/index.js +5 -0
  51. package/ui.container-group/index.stories.js +88 -0
  52. package/ui.container-group/index.vue +106 -0
  53. package/ui.container-groups/Docs.mdx +16 -0
  54. package/ui.container-groups/composables/attrs.composable.js +12 -0
  55. package/ui.container-groups/configs/default.config.js +3 -0
  56. package/ui.container-groups/index.stories.js +45 -0
  57. package/ui.container-groups/index.vue +33 -0
  58. package/ui.container-modal/Docs.mdx +16 -0
  59. package/ui.container-modal/composables/attrs.composable.js +90 -0
  60. package/ui.container-modal/configs/default.config.js +69 -0
  61. package/ui.container-modal/constants/index.js +5 -0
  62. package/ui.container-modal/index.stories.js +170 -0
  63. package/ui.container-modal/index.vue +336 -0
  64. package/ui.container-modal-confirm/Docs.mdx +16 -0
  65. package/ui.container-modal-confirm/composable/attrs.composable.js +20 -0
  66. package/ui.container-modal-confirm/configs/default.config.js +15 -0
  67. package/ui.container-modal-confirm/constants/index.js +5 -0
  68. package/ui.container-modal-confirm/index.stories.js +209 -0
  69. package/ui.container-modal-confirm/index.vue +182 -0
  70. package/ui.container-page/Docs.mdx +16 -0
  71. package/ui.container-page/composables/attrs.composable.js +96 -0
  72. package/ui.container-page/configs/default.config.js +71 -0
  73. package/ui.container-page/constants/index.js +5 -0
  74. package/ui.container-page/index.stories.js +147 -0
  75. package/ui.container-page/index.vue +275 -0
  76. package/ui.container-row/Docs.mdx +16 -0
  77. package/ui.container-row/composables/attrs.composable.js +23 -0
  78. package/ui.container-row/configs/default.config.js +14 -0
  79. package/ui.container-row/constants/index.js +5 -0
  80. package/ui.container-row/index.stories.js +81 -0
  81. package/ui.container-row/index.vue +45 -0
  82. package/ui.data-list/composables/attrs.composable.js +45 -0
  83. package/ui.data-list/configs/default.config.js +32 -0
  84. package/ui.data-list/constants/index.js +5 -0
  85. package/ui.data-list/index.stories.js +91 -0
  86. package/ui.data-list/index.vue +259 -0
  87. package/ui.data-table/Docs.mdx +16 -0
  88. package/ui.data-table/composables/attrs.composable.js +188 -0
  89. package/ui.data-table/configs/default.config.js +88 -0
  90. package/ui.data-table/constants/index.js +5 -0
  91. package/ui.data-table/index.stories.js +261 -0
  92. package/ui.data-table/index.vue +730 -0
  93. package/ui.data-table/services/table.service.js +15 -0
  94. package/ui.data-table-cell/composables/attrs.composable.js +24 -0
  95. package/ui.data-table-cell/configs/default.config.js +19 -0
  96. package/ui.data-table-cell/constants/index.js +5 -0
  97. package/ui.data-table-cell/index.vue +44 -0
  98. package/ui.dropdown-badge/Docs.mdx +16 -0
  99. package/ui.dropdown-badge/composables/attrs.composable.js +63 -0
  100. package/ui.dropdown-badge/configs/default.config.js +34 -0
  101. package/ui.dropdown-badge/constants/index.js +5 -0
  102. package/ui.dropdown-badge/index.stories.js +126 -0
  103. package/ui.dropdown-badge/index.vue +234 -0
  104. package/ui.dropdown-button/Docs.mdx +16 -0
  105. package/ui.dropdown-button/composables/attrs.composable.js +63 -0
  106. package/ui.dropdown-button/configs/default.config.js +37 -0
  107. package/ui.dropdown-button/constants/index.js +14 -0
  108. package/ui.dropdown-button/index.stories.js +158 -0
  109. package/ui.dropdown-button/index.vue +271 -0
  110. package/ui.dropdown-item/Docs.mdx +16 -0
  111. package/ui.dropdown-item/composables/attrs.composable.js +13 -0
  112. package/ui.dropdown-item/configs/default.config.js +16 -0
  113. package/ui.dropdown-item/index.stories.js +30 -0
  114. package/ui.dropdown-item/index.vue +53 -0
  115. package/ui.dropdown-link/Docs.mdx +16 -0
  116. package/ui.dropdown-link/composables/attrs.composable.js +65 -0
  117. package/ui.dropdown-link/configs/default.config.js +37 -0
  118. package/ui.dropdown-link/constants/index.js +5 -0
  119. package/ui.dropdown-link/index.stories.js +127 -0
  120. package/ui.dropdown-link/index.vue +261 -0
  121. package/ui.dropdown-list/Docs.mdx +16 -0
  122. package/ui.dropdown-list/composables/attrs.composable.js +93 -0
  123. package/ui.dropdown-list/composables/usePointer.js +77 -0
  124. package/ui.dropdown-list/configs/default.config.js +74 -0
  125. package/ui.dropdown-list/constants/index.js +5 -0
  126. package/ui.dropdown-list/index.stories.js +76 -0
  127. package/ui.dropdown-list/index.vue +284 -0
  128. package/ui.form-calendar/Docs.mdx +52 -0
  129. package/ui.form-calendar/components/DayView.vue +268 -0
  130. package/ui.form-calendar/components/MonthView.vue +114 -0
  131. package/ui.form-calendar/components/YearView.vue +118 -0
  132. package/ui.form-calendar/composables/attrs.composable.js +106 -0
  133. package/ui.form-calendar/configs/default.config.js +125 -0
  134. package/ui.form-calendar/constants/index.js +71 -0
  135. package/ui.form-calendar/index.stories.js +59 -0
  136. package/ui.form-calendar/index.vue +743 -0
  137. package/ui.form-calendar/services/calendar.service.js +189 -0
  138. package/ui.form-calendar/services/date.service.js +282 -0
  139. package/ui.form-calendar/services/formatting.service.js +180 -0
  140. package/ui.form-checkbox/Docs.mdx +16 -0
  141. package/ui.form-checkbox/composables/attrs.composable.js +57 -0
  142. package/ui.form-checkbox/configs/default.config.js +69 -0
  143. package/ui.form-checkbox/constants/index.js +5 -0
  144. package/ui.form-checkbox/index.stories.js +147 -0
  145. package/ui.form-checkbox/index.vue +242 -0
  146. package/ui.form-checkbox-group/Docs.mdx +16 -0
  147. package/ui.form-checkbox-group/composables/attrs.composable.js +17 -0
  148. package/ui.form-checkbox-group/configs/default.config.js +5 -0
  149. package/ui.form-checkbox-group/constants/index.js +5 -0
  150. package/ui.form-checkbox-group/index.stories.js +45 -0
  151. package/ui.form-checkbox-group/index.vue +145 -0
  152. package/ui.form-checkbox-multi-state/Docs.mdx +16 -0
  153. package/ui.form-checkbox-multi-state/composables/attrs.composable.js +24 -0
  154. package/ui.form-checkbox-multi-state/configs/default.config.js +9 -0
  155. package/ui.form-checkbox-multi-state/constants/index.js +5 -0
  156. package/ui.form-checkbox-multi-state/index.stories.js +59 -0
  157. package/ui.form-checkbox-multi-state/index.vue +134 -0
  158. package/ui.form-color-picker/composables/attrs.composable.js +44 -0
  159. package/ui.form-color-picker/configs/default.config.js +52 -0
  160. package/ui.form-color-picker/constants/index.js +5 -0
  161. package/ui.form-color-picker/index.stories.js +63 -0
  162. package/ui.form-color-picker/index.vue +171 -0
  163. package/ui.form-date-picker/Docs.mdx +52 -0
  164. package/ui.form-date-picker/composables/attrs.composable.js +22 -0
  165. package/ui.form-date-picker/configs/default.config.js +26 -0
  166. package/ui.form-date-picker/constants/index.js +5 -0
  167. package/ui.form-date-picker/index.stories.js +132 -0
  168. package/ui.form-date-picker/index.vue +256 -0
  169. package/ui.form-date-picker-range/composables/attrs.composable.js +100 -0
  170. package/ui.form-date-picker-range/configs/default.config.js +172 -0
  171. package/ui.form-date-picker-range/constants/index.js +23 -0
  172. package/ui.form-date-picker-range/index.stories.js +135 -0
  173. package/ui.form-date-picker-range/index.vue +937 -0
  174. package/ui.form-date-picker-range/services/dateRange.service.js +116 -0
  175. package/ui.form-date-picker-range/services/validation.service.js +22 -0
  176. package/ui.form-input/Docs.mdx +16 -0
  177. package/ui.form-input/assets/fonts/text-security-disc.woff +0 -0
  178. package/ui.form-input/composables/attrs.composable.js +66 -0
  179. package/ui.form-input/configs/default.config.js +72 -0
  180. package/ui.form-input/constants/index.js +5 -0
  181. package/ui.form-input/index.stories.js +166 -0
  182. package/ui.form-input/index.vue +388 -0
  183. package/ui.form-input-file/composables/attrs.composable.js +82 -0
  184. package/ui.form-input-file/configs/default.config.js +59 -0
  185. package/ui.form-input-file/constants/index.js +5 -0
  186. package/ui.form-input-file/index.stories.js +86 -0
  187. package/ui.form-input-file/index.vue +387 -0
  188. package/ui.form-input-money/Docs.mdx +16 -0
  189. package/ui.form-input-money/composables/attrs.composable.js +13 -0
  190. package/ui.form-input-money/composables/useFormatCurrency.js +82 -0
  191. package/ui.form-input-money/configs/default.config.js +16 -0
  192. package/ui.form-input-money/constants/index.js +5 -0
  193. package/ui.form-input-money/index.stories.js +126 -0
  194. package/ui.form-input-money/index.vue +263 -0
  195. package/ui.form-input-money/services/format.service.js +72 -0
  196. package/ui.form-input-number/Docs.mdx +16 -0
  197. package/ui.form-input-number/composables/attrs.composable.js +47 -0
  198. package/ui.form-input-number/configs/default.config.js +33 -0
  199. package/ui.form-input-number/constants/index.js +5 -0
  200. package/ui.form-input-number/index.stories.js +103 -0
  201. package/ui.form-input-number/index.vue +162 -0
  202. package/ui.form-input-rating/composables/attrs.composable.js +34 -0
  203. package/ui.form-input-rating/configs/default.config.js +25 -0
  204. package/ui.form-input-rating/constants/index.js +5 -0
  205. package/ui.form-input-rating/index.stories.js +108 -0
  206. package/ui.form-input-rating/index.vue +186 -0
  207. package/ui.form-input-search/composables/attrs.composable.js +21 -0
  208. package/ui.form-input-search/configs/default.config.js +20 -0
  209. package/ui.form-input-search/constants/index.js +5 -0
  210. package/ui.form-input-search/index.stories.js +90 -0
  211. package/ui.form-input-search/index.vue +215 -0
  212. package/ui.form-label/Docs.mdx +16 -0
  213. package/ui.form-label/composables/attrs.composable.js +65 -0
  214. package/ui.form-label/configs/default.config.js +95 -0
  215. package/ui.form-label/constants/index.js +13 -0
  216. package/ui.form-label/index.stories.js +107 -0
  217. package/ui.form-label/index.vue +170 -0
  218. package/ui.form-radio/Docs.mdx +16 -0
  219. package/ui.form-radio/composables/attrs.composable.js +34 -0
  220. package/ui.form-radio/configs/default.config.js +47 -0
  221. package/ui.form-radio/constants/index.js +5 -0
  222. package/ui.form-radio/index.stories.js +71 -0
  223. package/ui.form-radio/index.vue +170 -0
  224. package/ui.form-radio-card/Docs.mdx +16 -0
  225. package/ui.form-radio-card/composables/attrs.composable.js +35 -0
  226. package/ui.form-radio-card/configs/default.config.js +25 -0
  227. package/ui.form-radio-card/constants/index.js +5 -0
  228. package/ui.form-radio-card/index.stories.js +149 -0
  229. package/ui.form-radio-card/index.vue +160 -0
  230. package/ui.form-radio-card/services/variant.service.js +15 -0
  231. package/ui.form-radio-group/Docs.mdx +16 -0
  232. package/ui.form-radio-group/composables/attrs.composable.js +27 -0
  233. package/ui.form-radio-group/configs/default.config.js +18 -0
  234. package/ui.form-radio-group/constants/index.js +5 -0
  235. package/ui.form-radio-group/index.stories.js +42 -0
  236. package/ui.form-radio-group/index.vue +128 -0
  237. package/ui.form-select/Docs.mdx +16 -0
  238. package/ui.form-select/composables/attrs.composable.js +172 -0
  239. package/ui.form-select/configs/default.config.js +138 -0
  240. package/ui.form-select/constants/index.js +19 -0
  241. package/ui.form-select/index.stories.js +339 -0
  242. package/ui.form-select/index.vue +722 -0
  243. package/ui.form-select/services/select.service.js +98 -0
  244. package/ui.form-switch/composables/attrs.composable.js +77 -0
  245. package/ui.form-switch/configs/default.config.js +76 -0
  246. package/ui.form-switch/constants/index.js +5 -0
  247. package/ui.form-switch/index.stories.js +93 -0
  248. package/ui.form-switch/index.vue +199 -0
  249. package/ui.form-switch/services/variant.service.js +31 -0
  250. package/ui.form-textarea/Docs.mdx +16 -0
  251. package/ui.form-textarea/composables/attrs.composable.js +52 -0
  252. package/ui.form-textarea/configs/default.config.js +68 -0
  253. package/ui.form-textarea/constants/index.js +5 -0
  254. package/ui.form-textarea/index.stories.js +151 -0
  255. package/ui.form-textarea/index.vue +284 -0
  256. package/ui.image-avatar/composables/attrs.composable.js +34 -0
  257. package/ui.image-avatar/configs/default.config.js +42 -0
  258. package/ui.image-avatar/constants/index.js +5 -0
  259. package/ui.image-avatar/default-avatar.png +0 -0
  260. package/ui.image-avatar/index.stories.js +107 -0
  261. package/ui.image-avatar/index.vue +121 -0
  262. package/ui.image-icon/Docs.mdx +16 -0
  263. package/ui.image-icon/composables/attrs.composable.js +65 -0
  264. package/ui.image-icon/configs/default.config.js +90 -0
  265. package/ui.image-icon/constants/index.js +5 -0
  266. package/ui.image-icon/index.stories.js +110 -0
  267. package/ui.image-icon/index.vue +233 -0
  268. package/ui.image-logo/composables/attrs.composable.js +41 -0
  269. package/ui.image-logo/configs/default.config.js +38 -0
  270. package/ui.image-logo/constants/index.js +5 -0
  271. package/ui.image-logo/index.stories.js +84 -0
  272. package/ui.image-logo/index.vue +98 -0
  273. package/ui.loader-rendering/index.vue +72 -0
  274. package/ui.loader-rendering/store/index.js +17 -0
  275. package/ui.loader-top/components/TopProgress.vue +277 -0
  276. package/ui.loader-top/index.vue +221 -0
  277. package/ui.loader-top/store/index.js +59 -0
  278. package/ui.navigation-pagination/composables/attrs.composable.js +41 -0
  279. package/ui.navigation-pagination/configs/default.config.js +24 -0
  280. package/ui.navigation-pagination/constants/index.js +8 -0
  281. package/ui.navigation-pagination/index.stories.js +52 -0
  282. package/ui.navigation-pagination/index.vue +276 -0
  283. package/ui.navigation-stepper/composables/attrs.composable.js +25 -0
  284. package/ui.navigation-stepper/configs/default.config.js +13 -0
  285. package/ui.navigation-stepper/constants/index.js +5 -0
  286. package/ui.navigation-stepper/index.stories.js +30 -0
  287. package/ui.navigation-stepper/index.vue +126 -0
  288. package/ui.navigation-tab/composables/attrs.composable.js +30 -0
  289. package/ui.navigation-tab/configs/default.config.js +22 -0
  290. package/ui.navigation-tab/constants/index.js +5 -0
  291. package/ui.navigation-tab/index.stories.js +57 -0
  292. package/ui.navigation-tab/index.vue +85 -0
  293. package/ui.navigation-tabs/composables/attrs.composable.js +24 -0
  294. package/ui.navigation-tabs/configs/default.config.js +14 -0
  295. package/ui.navigation-tabs/constants/index.js +5 -0
  296. package/ui.navigation-tabs/index.stories.js +69 -0
  297. package/ui.navigation-tabs/index.vue +99 -0
  298. package/ui.notify/index.sto_ries.js +102 -0
  299. package/ui.notify/index.vue +248 -0
  300. package/ui.notify/services/index.js +87 -0
  301. package/ui.other-dot/composables/attrs.composable.js +32 -0
  302. package/ui.other-dot/configs/default.config.js +21 -0
  303. package/ui.other-dot/constants/index.js +5 -0
  304. package/ui.other-dot/index.stories.js +77 -0
  305. package/ui.other-dot/index.vue +52 -0
  306. package/ui.other-loader/composables/attrs.composable.js +51 -0
  307. package/ui.other-loader/configs/default.config.js +47 -0
  308. package/ui.other-loader/constants/index.js +5 -0
  309. package/ui.other-loader/index.stories.js +78 -0
  310. package/ui.other-loader/index.vue +136 -0
  311. package/ui.text-alert/composables/attrs.composable.js +48 -0
  312. package/ui.text-alert/configs/default.config.js +51 -0
  313. package/ui.text-alert/constatns/index.js +5 -0
  314. package/ui.text-alert/index.stories.js +157 -0
  315. package/ui.text-alert/index.vue +122 -0
  316. package/ui.text-badge/Docs.mdx +16 -0
  317. package/ui.text-badge/composables/attrs.composable.js +49 -0
  318. package/ui.text-badge/configs/default.config.js +51 -0
  319. package/ui.text-badge/constants/index.js +5 -0
  320. package/ui.text-badge/index.stories.js +190 -0
  321. package/ui.text-badge/index.vue +120 -0
  322. package/ui.text-block/composables/attrs.composable.js +31 -0
  323. package/ui.text-block/configs/default.config.js +35 -0
  324. package/ui.text-block/constatns/index.js +5 -0
  325. package/ui.text-block/index.stories.js +112 -0
  326. package/ui.text-block/index.vue +76 -0
  327. package/ui.text-empty/Docs.mdx +16 -0
  328. package/ui.text-empty/composables/attrs.composable.js +43 -0
  329. package/ui.text-empty/configs/default.config.js +30 -0
  330. package/ui.text-empty/constants/index.js +5 -0
  331. package/ui.text-empty/index.stories.js +106 -0
  332. package/ui.text-empty/index.vue +95 -0
  333. package/ui.text-file/composables/attrs.composable.js +37 -0
  334. package/ui.text-file/configs/default.config.js +15 -0
  335. package/ui.text-file/index.stories.js +29 -0
  336. package/ui.text-file/index.vue +93 -0
  337. package/ui.text-files/composables/attrs.composable.js +19 -0
  338. package/ui.text-files/configs/default.config.js +9 -0
  339. package/ui.text-files/constants/index.js +5 -0
  340. package/ui.text-files/index.stories.js +32 -0
  341. package/ui.text-files/index.vue +87 -0
  342. package/ui.text-header/Docs.mdx +16 -0
  343. package/ui.text-header/composables/attrs.composable.js +34 -0
  344. package/ui.text-header/configs/default.config.js +45 -0
  345. package/ui.text-header/constants/index.js +5 -0
  346. package/ui.text-header/index.stories.js +106 -0
  347. package/ui.text-header/index.vue +83 -0
  348. package/ui.text-money/Docs.mdx +16 -0
  349. package/ui.text-money/assets/credit.svg +7 -0
  350. package/ui.text-money/assets/debit.svg +12 -0
  351. package/ui.text-money/composables/attrs.composable.js +65 -0
  352. package/ui.text-money/configs/default.config.js +69 -0
  353. package/ui.text-money/constants/index.js +7 -0
  354. package/ui.text-money/index.stories.js +265 -0
  355. package/ui.text-money/index.vue +204 -0
  356. package/ui.text-money/services/money.services.js +24 -0
  357. package/ui.viewport/index.vue +78 -0
  358. package/ui.viewport/store/index.js +47 -0
  359. package/web-types.json +7187 -0
@@ -0,0 +1,171 @@
1
+ <template>
2
+ <div v-bind="wrapperAttrs">
3
+ <ULabel
4
+ :label="label"
5
+ :description="description"
6
+ :disabled="disabled"
7
+ :error="error"
8
+ :size="size"
9
+ placement="topWithDesc"
10
+ :data-cy="dataCy"
11
+ v-bind="labelAttrs"
12
+ >
13
+ <div v-bind="listAttrs">
14
+ <div v-bind="uncoloredAttrs">
15
+ <URadio
16
+ key="uncolored"
17
+ name="uncolored"
18
+ :checked="selectedItem === ''"
19
+ :disabled="disabled"
20
+ :size="size"
21
+ color="grayscale"
22
+ v-bind="uncoloredRadioAttrs"
23
+ @update:value="onInputRadio('')"
24
+ />
25
+
26
+ <UIcon
27
+ v-if="selectedItem === ''"
28
+ :name="config.iconName"
29
+ color="gray"
30
+ v-bind="iconAttrs"
31
+ size="sm"
32
+ />
33
+ </div>
34
+
35
+ <URadio
36
+ v-for="(color, index) in colorOptions"
37
+ :key="index"
38
+ :name="name"
39
+ :value="color"
40
+ :checked="selectedItem === color"
41
+ :color="color"
42
+ :disabled="disabled"
43
+ :size="size"
44
+ v-bind="radioAttrs"
45
+ @update:value="onInputRadio(color)"
46
+ />
47
+ </div>
48
+ </ULabel>
49
+ </div>
50
+ </template>
51
+
52
+ <script setup>
53
+ import { computed } from "vue";
54
+
55
+ import UIcon from "../ui.image-icon";
56
+ import URadio from "../ui.form-radio";
57
+ import ULabel from "../ui.form-label";
58
+ import UIService, { getRandomId } from "../service.ui";
59
+
60
+ import { UColorPicker } from "./constants";
61
+ import defaultConfig from "./configs/default.config";
62
+ import { useAttrs } from "./composables/attrs.composable";
63
+
64
+ /* Should be a string for correct web-types gen */
65
+ defineOptions({ name: "UColorPicker", inheritAttrs: false });
66
+
67
+ const props = defineProps({
68
+ /**
69
+ * Color picker selected value.
70
+ */
71
+ modelValue: {
72
+ type: String,
73
+ default: "",
74
+ },
75
+
76
+ /**
77
+ * Color picker colors.
78
+ */
79
+ colorOptions: {
80
+ type: Array,
81
+ default: () => UIService.get(defaultConfig, UColorPicker).default.colorOptions,
82
+ },
83
+
84
+ /**
85
+ * Color picker label.
86
+ */
87
+ label: {
88
+ type: String,
89
+ default: "",
90
+ },
91
+
92
+ /**
93
+ * Color picker description.
94
+ */
95
+ description: {
96
+ type: String,
97
+ default: "",
98
+ },
99
+
100
+ /**
101
+ * Error message.
102
+ */
103
+ error: {
104
+ type: String,
105
+ default: "",
106
+ },
107
+
108
+ /**
109
+ * Color picker size.
110
+ * @values sm, md, lg
111
+ */
112
+ size: {
113
+ type: String,
114
+ default: UIService.get(defaultConfig, UColorPicker).default.size,
115
+ },
116
+
117
+ /**
118
+ * Color picker name.
119
+ */
120
+ name: {
121
+ type: String,
122
+ default: () => getRandomId(),
123
+ },
124
+
125
+ /**
126
+ * Set color picker disabled.
127
+ */
128
+ disabled: {
129
+ type: Boolean,
130
+ default: UIService.get(defaultConfig, UColorPicker).default.disabled,
131
+ },
132
+
133
+ /**
134
+ * Component ui config object.
135
+ */
136
+ config: {
137
+ type: Object,
138
+ default: () => ({}),
139
+ },
140
+
141
+ /**
142
+ * Data-cy attribute for automated testing.
143
+ */
144
+ dataCy: {
145
+ type: String,
146
+ default: "radio",
147
+ },
148
+ });
149
+
150
+ const emit = defineEmits(["update:modelValue"]);
151
+
152
+ const {
153
+ config,
154
+ wrapperAttrs,
155
+ listAttrs,
156
+ labelAttrs,
157
+ radioAttrs,
158
+ iconAttrs,
159
+ uncoloredAttrs,
160
+ uncoloredRadioAttrs,
161
+ } = useAttrs(props);
162
+
163
+ const selectedItem = computed({
164
+ get: () => props.modelValue,
165
+ set: (value) => emit("update:modelValue", value),
166
+ });
167
+
168
+ function onInputRadio(value) {
169
+ selectedItem.value = value;
170
+ }
171
+ </script>
@@ -0,0 +1,52 @@
1
+ import { Meta, Title, Subtitle, Description, Primary, Controls, Stories, Source, Markdown } from "@storybook/blocks";
2
+ import { getSource } from "../service.storybook";
3
+
4
+ import * as stories from "./index.stories";
5
+ import defaultConfig from "./configs/default.config?raw"
6
+
7
+ <Meta of={stories} />
8
+ <Title of={stories} />
9
+ <Subtitle of={stories} />
10
+ <Description of={stories} />
11
+ <Primary of={stories} />
12
+ <Controls of={stories.Default} />
13
+ <Stories of={stories} />
14
+
15
+ ## **Default config**
16
+ <Source code={getSource(defaultConfig)} language="jsx" dark />
17
+
18
+ ## Formatting tokens
19
+ Each character in the table below can be used in `dateFormat` and `userFormat` options to achieve the format you need.
20
+
21
+ <Markdown>
22
+ {`
23
+ | Token | Description | Example |
24
+ | ----- | --------------------------------------------------------- | ------------------------------------------------------------- |
25
+ | d | Day of the month, 2 digits with leading zeros | 01 to 31 |
26
+ | D | A textual representation of a day | Mon through Sun |
27
+ | l | A full textual representation of the day of the week | Sunday through Saturday |
28
+ | j | Day of the month without leading zeros | 1 to 31 |
29
+ | J | Day of the month without leading zeros and ordinal suffix | 1st, 2nd, to 31st |
30
+ | w | Numeric representation of the day of the week | 0 (for Sunday) through 6 (for Saturday) |
31
+ | W | Numeric representation of the week | 0 (first week of the year) through 52 (last week of the year) |
32
+ | F | A full textual representation of a month | January through December |
33
+ | m | Numeric representation of a month, with leading zero | 01 through 12 |
34
+ | n | Numeric representation of a month, without leading zeros | 1 through 12 |
35
+ | M | A short textual representation of a month | Jan through Dec |
36
+ | U | A short textual representation of a month | 1413704993 |
37
+ | y | A two-digit representation of a year | 99 or 03 |
38
+ | Y | A full numeric representation of a year, 4 digits | 1999 or 2003 |
39
+ | Z | ISO Date format | 2017-03-04T01:23:43.000Z |
40
+ | H | Hours (24 hours) | 00 to 23 |
41
+ | h | Hours | 1 to 12 |
42
+ | G | Hours, 2 digits with leading zeros | 1 to 12 |
43
+ | i | Minutes | 00 to 59 |
44
+ | S | Seconds, 2 digits | 00 to 59 |
45
+ | s | Seconds | 0, 1 to 59 |
46
+ `}
47
+ </Markdown>
48
+
49
+ ## Escaping Formatting Tokens
50
+ You may escape formatting tokens using \\\\.
51
+
52
+ <Source code={`dateFormat: "Y-m-d\\Z", // Displays: 2017-01-22Z`} language="jsx" dark />
@@ -0,0 +1,22 @@
1
+ import useUI from "../../composable.ui";
2
+
3
+ import defaultConfig from "../configs/default.config";
4
+ import { computed } from "vue";
5
+
6
+ export default function useAttrs(props, { isShownCalendar }) {
7
+ const { config, getAttrs } = useUI(defaultConfig, () => props.config);
8
+
9
+ const calendarAttrs = getAttrs("calendar");
10
+ const inputBlurAttrs = getAttrs("input");
11
+ const inputActiveAttrs = getAttrs("inputActive");
12
+
13
+ const inputAttrs = computed(() => {
14
+ return isShownCalendar.value ? inputActiveAttrs.value : inputBlurAttrs.value;
15
+ });
16
+
17
+ return {
18
+ config,
19
+ calendarAttrs,
20
+ inputAttrs,
21
+ };
22
+ }
@@ -0,0 +1,26 @@
1
+ export default /*tw*/ {
2
+ input: "",
3
+ inputActive: {
4
+ block: {
5
+ base: "ring-4 ring-gray-600/[.15] border-gray-500 hover:border-gray-500",
6
+ },
7
+ },
8
+ calendar: "absolute z-40 mt-2",
9
+ calendarTransition: {
10
+ enterFromClass: "opacity-0 scale-95",
11
+ enterActiveClass: "transition transform ease-out duration-100",
12
+ enterToClass: "opacity-100 scale-100",
13
+ leaveFromClass: "opacity-100 scale-100",
14
+ leaveActiveClass: "transition transform ease-in duration-75",
15
+ leaveToClass: "opacity-0 scale-95",
16
+ },
17
+ defaultVariants: {
18
+ dateFormat: "Y-m-d",
19
+ userFormat: "F j, Y",
20
+ size: "md",
21
+ timepicker: false,
22
+ disabled: false,
23
+ maxDate: undefined,
24
+ minDate: undefined,
25
+ },
26
+ };
@@ -0,0 +1,5 @@
1
+ /*
2
+ This const is needed to prevent the issue in script setup:
3
+ `defineProps` is referencing locally declared variables. (vue/valid-define-props)
4
+ */
5
+ export const UDatePicker = "UDatePicker";
@@ -0,0 +1,132 @@
1
+ import { getArgTypes, getSlotNames } from "../service.storybook";
2
+
3
+ import UDatePicker from "../ui.form-date-picker";
4
+ import UIcon from "../ui.image-icon";
5
+ import URow from "../ui.container-row";
6
+
7
+ export default {
8
+ id: "3170",
9
+ title: "Form Inputs & Controls / Date Picker",
10
+ component: UDatePicker,
11
+ args: {
12
+ label: "Label",
13
+ },
14
+ argTypes: {
15
+ ...getArgTypes(UDatePicker.name),
16
+ },
17
+ parameters: {
18
+ docs: {
19
+ story: {
20
+ height: "380px",
21
+ },
22
+ },
23
+ },
24
+ };
25
+
26
+ const DefaultTemplate = (args) => ({
27
+ components: { UDatePicker },
28
+ setup() {
29
+ const slots = getSlotNames(UDatePicker.name);
30
+
31
+ return { args, slots };
32
+ },
33
+ template: `
34
+ <UDatePicker v-bind="args" v-model="args.date">
35
+ <template v-for="(slot, index) of slots" :key="index" v-slot:[slot]>
36
+ <template v-if="args[slot]">{{ args[slot] }}</template>
37
+ </template>
38
+ </UDatePicker>
39
+ `,
40
+ });
41
+
42
+ const SizesTemplate = (args, { argTypes } = {}) => ({
43
+ components: { UDatePicker, URow },
44
+ setup() {
45
+ return {
46
+ args,
47
+ sizes: argTypes.size.options,
48
+ };
49
+ },
50
+ template: `
51
+ <URow>
52
+ <UDatePicker
53
+ v-for="(size, index) in sizes"
54
+ :size="size"
55
+ :label="size"
56
+ v-bind="args"
57
+ :key="index"
58
+ >
59
+ </UDatePicker>
60
+ </URow>
61
+ `,
62
+ });
63
+
64
+ const SlotTemplate = (args) => ({
65
+ components: { UDatePicker, UIcon },
66
+ setup() {
67
+ return { args };
68
+ },
69
+ template: `
70
+ <UDatePicker v-bind="args">
71
+ ${args.slotTemplate}
72
+ </UDatePicker>
73
+ `,
74
+ });
75
+
76
+ export const Default = DefaultTemplate.bind({});
77
+ Default.args = { date: 1645653600 };
78
+
79
+ export const sizes = SizesTemplate.bind({});
80
+ sizes.args = { label: "" };
81
+
82
+ export const description = DefaultTemplate.bind({});
83
+ description.args = { description: "some description" };
84
+
85
+ export const disabled = DefaultTemplate.bind({});
86
+ disabled.args = { disabled: true };
87
+
88
+ export const error = DefaultTemplate.bind({});
89
+ error.args = { error: "some error" };
90
+
91
+ export const placeholder = DefaultTemplate.bind({});
92
+ placeholder.args = { placeholder: "some placeholder" };
93
+
94
+ export const DateFormat = DefaultTemplate.bind({});
95
+ DateFormat.args = { dateFormat: "d.m.Y", userFormat: "d.m.Y", date: 1645653600 };
96
+
97
+ export const Timepicker = DefaultTemplate.bind({});
98
+ Timepicker.args = { timepicker: true, date: 1645653600 };
99
+
100
+ export const MinMax = DefaultTemplate.bind({});
101
+ MinMax.args = { minDate: "2022-02-22", maxDate: "2022-02-26", date: 1645653600 };
102
+
103
+ export const slotIcon = SlotTemplate.bind({});
104
+ slotIcon.args = {
105
+ slotTemplate: `
106
+ <template #right-icon>
107
+ <UIcon
108
+ name="star"
109
+ color="black"
110
+ size="md"
111
+ />
112
+ </template>
113
+ `,
114
+ };
115
+
116
+ export const slotRight = SlotTemplate.bind({});
117
+ slotRight.args = {
118
+ slotTemplate: `
119
+ <template #right>
120
+ 🤘🤘🤘
121
+ </template>
122
+ `,
123
+ };
124
+
125
+ export const slotLeft = SlotTemplate.bind({});
126
+ slotRight.args = {
127
+ slotTemplate: `
128
+ <template #left>
129
+ 🤘🤘🤘
130
+ </template>
131
+ `,
132
+ };
@@ -0,0 +1,256 @@
1
+ <template>
2
+ <div class="relative">
3
+ <UInput
4
+ :id="id"
5
+ :key="isShownCalendar"
6
+ v-model="userFormatDate"
7
+ :label="label"
8
+ :placeholder="placeholder"
9
+ :error="error"
10
+ :description="description"
11
+ readonly
12
+ :disabled="disabled"
13
+ :size="size"
14
+ v-bind="inputAttrs"
15
+ @focus="activate"
16
+ >
17
+ <template #left>
18
+ <slot name="left" />
19
+ </template>
20
+
21
+ <template #right-icon>
22
+ <slot name="right-icon" />
23
+ </template>
24
+
25
+ <template #right>
26
+ <slot name="right" />
27
+ </template>
28
+ </UInput>
29
+
30
+ <Transition v-bind="config.calendarTransition">
31
+ <UCalendar
32
+ v-show="isShownCalendar"
33
+ ref="calendarRef"
34
+ v-model="localValue"
35
+ v-model:view="customView"
36
+ tabindex="-1"
37
+ :timepicker="timepicker"
38
+ :date-format="dateFormat"
39
+ :user-format="userFormat"
40
+ :max-date="maxDate"
41
+ :min-date="minDate"
42
+ v-bind="calendarAttrs"
43
+ @keydown.esc="deactivate"
44
+ @userDateChange="onUserFormatDateChange"
45
+ @formattedDateChange="onFormattedDateChange"
46
+ @input="onInput"
47
+ @blur="onBlur"
48
+ @submit="onSubmit"
49
+ />
50
+ </Transition>
51
+ </div>
52
+ </template>
53
+
54
+ <script setup>
55
+ import { computed, nextTick, ref } from "vue";
56
+
57
+ import UInput from "../ui.form-input";
58
+ import UCalendar from "../ui.form-calendar";
59
+ import { VIEW } from "../ui.form-calendar/constants";
60
+
61
+ import UIService, { getRandomId } from "../service.ui";
62
+
63
+ import useAttrs from "./composables/attrs.composable";
64
+ import defaultConfig from "./configs/default.config";
65
+ import { UDatePicker } from "./constants";
66
+
67
+ /* Should be a string for correct web-types gen */
68
+ defineOptions({ name: "UDatePicker", inheritAttrs: false });
69
+
70
+ const props = defineProps({
71
+ /**
72
+ * Datepicker label.
73
+ */
74
+ label: {
75
+ type: String,
76
+ default: "",
77
+ },
78
+
79
+ /**
80
+ * Datepicker placeholder.
81
+ */
82
+ placeholder: {
83
+ type: String,
84
+ default: "",
85
+ },
86
+
87
+ /**
88
+ * Datepicker value (timestamp).
89
+ */
90
+ modelValue: {
91
+ type: Number,
92
+ default: null,
93
+ },
94
+
95
+ /**
96
+ * Min date in format date string or Date.
97
+ */
98
+ minDate: {
99
+ type: [String, Date],
100
+ default: UIService.get(defaultConfig, UDatePicker).default.minDate,
101
+ },
102
+
103
+ /**
104
+ * Max date in format date string or Date.
105
+ */
106
+ maxDate: {
107
+ type: [String, Date],
108
+ default: UIService.get(defaultConfig, UDatePicker).default.maxDate,
109
+ },
110
+
111
+ /**
112
+ * Disable component.
113
+ */
114
+ disabled: {
115
+ type: Boolean,
116
+ default: UIService.get(defaultConfig, UDatePicker).default.disabled,
117
+ },
118
+
119
+ /**
120
+ * Enable timepicker.
121
+ */
122
+ timepicker: {
123
+ type: Boolean,
124
+ default: UIService.get(defaultConfig, UDatePicker).default.timepicker,
125
+ },
126
+
127
+ /**
128
+ * Error message.
129
+ */
130
+ error: {
131
+ type: String,
132
+ default: "",
133
+ },
134
+
135
+ /**
136
+ * Datepicker description.
137
+ */
138
+ description: {
139
+ type: String,
140
+ default: "",
141
+ },
142
+
143
+ /**
144
+ * Datepicker size.
145
+ * @values sm, md, lg
146
+ */
147
+ size: {
148
+ type: String,
149
+ default: UIService.get(defaultConfig, UDatePicker).default.size,
150
+ },
151
+
152
+ /**
153
+ * Date format.
154
+ */
155
+ dateFormat: {
156
+ type: String,
157
+ default: UIService.get(defaultConfig, UDatePicker).default.dateFormat,
158
+ },
159
+
160
+ /**
161
+ * User friendly date format.
162
+ */
163
+ userFormat: {
164
+ type: String,
165
+ default: UIService.get(defaultConfig, UDatePicker).default.userFormat,
166
+ },
167
+
168
+ /**
169
+ * Unique element id.
170
+ * @ignore
171
+ */
172
+ id: {
173
+ type: String,
174
+ default: () => getRandomId(),
175
+ },
176
+
177
+ /**
178
+ * Component ui config object.
179
+ */
180
+ config: {
181
+ type: Object,
182
+ default: () => ({}),
183
+ },
184
+
185
+ /**
186
+ * Data-cy attribute for automated testing.
187
+ */
188
+ dataCy: {
189
+ type: String,
190
+ default: "",
191
+ },
192
+ });
193
+
194
+ const emit = defineEmits(["update:modelValue", "input"]);
195
+
196
+ const isShownCalendar = ref(false);
197
+ const userFormatDate = ref("");
198
+ const formattedDate = ref("");
199
+ const customView = ref(VIEW.day);
200
+
201
+ const calendarRef = ref(null);
202
+
203
+ defineExpose({
204
+ calendarRef,
205
+ userFormatDate,
206
+ formattedDate,
207
+ });
208
+
209
+ const localValue = computed({
210
+ get: () => props.modelValue,
211
+ set: (value) => emit("update:modelValue", value),
212
+ });
213
+
214
+ const { config, inputAttrs, calendarAttrs } = useAttrs(props, { isShownCalendar });
215
+
216
+ function activate() {
217
+ isShownCalendar.value = true;
218
+
219
+ nextTick(() => calendarRef.value.wrapperRef.focus());
220
+ }
221
+
222
+ function deactivate() {
223
+ isShownCalendar.value = false;
224
+
225
+ customView.value = VIEW.day;
226
+ }
227
+
228
+ function onUserFormatDateChange(value) {
229
+ userFormatDate.value = value || "";
230
+ }
231
+
232
+ function onFormattedDateChange(value) {
233
+ formattedDate.value = value || "";
234
+ }
235
+
236
+ function onSubmit() {
237
+ deactivate();
238
+ }
239
+
240
+ function onBlur(event) {
241
+ const { relatedTarget } = event;
242
+
243
+ if (!calendarRef.value.wrapperRef.contains(relatedTarget)) deactivate();
244
+ }
245
+
246
+ function onInput() {
247
+ nextTick(() => {
248
+ calendarRef.value.wrapperRef.blur();
249
+ emit("input", {
250
+ userFormatDate: userFormatDate.value,
251
+ value: localValue.value,
252
+ formattedDate: formattedDate.value,
253
+ });
254
+ });
255
+ }
256
+ </script>