vueless 0.0.4 → 0.0.5

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 (318) hide show
  1. package/package.json +1 -1
  2. package/src/library.web-types-gen/index.js +17 -0
  3. package/src/library.web-types-gen/lib/build.js +252 -0
  4. package/src/library.web-types-gen/lib/config.js +32 -0
  5. package/src/library.web-types-gen/package.json +3 -0
  6. package/src/plugin.vite/index.js +59 -0
  7. package/src/plugin.vite/services/iconResolver.service.js +291 -0
  8. package/src/plugin.vite/services/svgLoader.service.js +76 -0
  9. package/src/plugin.vite/services/tailwindSafelist.service.js +195 -0
  10. package/src/plugin.vite/services/unpluginComponentsResolver.js +172 -0
  11. package/src/service.storybook/index.js +91 -0
  12. package/src/ui.button/Docs.mdx +16 -0
  13. package/src/ui.button/composables/attrs.composable.js +41 -0
  14. package/src/ui.button/configs/default.config.js +165 -0
  15. package/src/ui.button/constants/index.js +5 -0
  16. package/src/ui.button/index.stories.js +166 -0
  17. package/src/ui.button/index.vue +152 -0
  18. package/src/ui.button-link/Docs.mdx +16 -0
  19. package/src/ui.button-link/composables/attrs.composable.js +99 -0
  20. package/src/ui.button-link/configs/default.config.js +80 -0
  21. package/src/ui.button-link/constants/index.js +5 -0
  22. package/src/ui.button-link/index.stories.js +158 -0
  23. package/src/ui.button-link/index.vue +226 -0
  24. package/src/ui.button-toggle/Docs.mdx +16 -0
  25. package/src/ui.button-toggle/composables/attrs.composable.js +16 -0
  26. package/src/ui.button-toggle/configs/default.config.js +12 -0
  27. package/src/ui.button-toggle/constants/index.js +7 -0
  28. package/src/ui.button-toggle/index.stories.js +155 -0
  29. package/src/ui.button-toggle/index.vue +128 -0
  30. package/src/ui.button-toggle-item/Docs.mdx +16 -0
  31. package/src/ui.button-toggle-item/composables/attrs.composable.js +53 -0
  32. package/src/ui.button-toggle-item/configs/default.config.js +58 -0
  33. package/src/ui.button-toggle-item/constants/index.js +5 -0
  34. package/src/ui.button-toggle-item/index.stories.js +77 -0
  35. package/src/ui.button-toggle-item/index.vue +147 -0
  36. package/src/ui.container-accordion/composables/attrs.composable.js +45 -0
  37. package/src/ui.container-accordion/configs/default.config.js +32 -0
  38. package/src/ui.container-accordion/constants/index.js +5 -0
  39. package/src/ui.container-accordion/index.stories.js +89 -0
  40. package/src/ui.container-accordion/index.vue +95 -0
  41. package/src/ui.container-card/Docs.mdx +16 -0
  42. package/src/ui.container-card/composable/attrs.composable.js +56 -0
  43. package/src/ui.container-card/configs/default.config.js +31 -0
  44. package/src/ui.container-card/constants/index.js +5 -0
  45. package/src/ui.container-card/index.stories.js +170 -0
  46. package/src/ui.container-card/index.vue +146 -0
  47. package/src/ui.container-divider/Docs.mdx +16 -0
  48. package/src/ui.container-divider/configs/default.config.js +79 -0
  49. package/src/ui.container-divider/index.stories.js +124 -0
  50. package/src/ui.container-group/Docs.mdx +16 -0
  51. package/src/ui.container-group/composables/attrs.composable.js +44 -0
  52. package/src/ui.container-group/configs/default.config.js +29 -0
  53. package/src/ui.container-group/constants/index.js +5 -0
  54. package/src/ui.container-group/index.stories.js +88 -0
  55. package/src/ui.container-group/index.vue +106 -0
  56. package/src/ui.container-groups/Docs.mdx +16 -0
  57. package/src/ui.container-groups/composables/attrs.composable.js +12 -0
  58. package/src/ui.container-groups/configs/default.config.js +3 -0
  59. package/src/ui.container-groups/index.stories.js +45 -0
  60. package/src/ui.container-groups/index.vue +33 -0
  61. package/src/ui.container-modal/Docs.mdx +16 -0
  62. package/src/ui.container-modal/composables/attrs.composable.js +90 -0
  63. package/src/ui.container-modal/configs/default.config.js +69 -0
  64. package/src/ui.container-modal/constants/index.js +5 -0
  65. package/src/ui.container-modal/index.stories.js +170 -0
  66. package/src/ui.container-modal/index.vue +335 -0
  67. package/src/ui.container-modal-confirm/Docs.mdx +16 -0
  68. package/src/ui.container-modal-confirm/composable/attrs.composable.js +20 -0
  69. package/src/ui.container-modal-confirm/configs/default.config.js +15 -0
  70. package/src/ui.container-modal-confirm/constants/index.js +5 -0
  71. package/src/ui.container-modal-confirm/index.stories.js +209 -0
  72. package/src/ui.container-modal-confirm/index.vue +182 -0
  73. package/src/ui.container-page/Docs.mdx +16 -0
  74. package/src/ui.container-page/composables/attrs.composable.js +96 -0
  75. package/src/ui.container-page/configs/default.config.js +71 -0
  76. package/src/ui.container-page/constants/index.js +5 -0
  77. package/src/ui.container-page/index.stories.js +147 -0
  78. package/src/ui.container-page/index.vue +271 -0
  79. package/src/ui.container-row/Docs.mdx +16 -0
  80. package/src/ui.container-row/composables/attrs.composable.js +23 -0
  81. package/src/ui.container-row/configs/default.config.js +14 -0
  82. package/src/ui.container-row/constants/index.js +5 -0
  83. package/src/ui.container-row/index.stories.js +81 -0
  84. package/src/ui.container-row/index.vue +45 -0
  85. package/src/ui.data-list/composables/attrs.composable.js +45 -0
  86. package/src/ui.data-list/configs/default.config.js +32 -0
  87. package/src/ui.data-list/constants/index.js +5 -0
  88. package/src/ui.data-list/index.stories.js +91 -0
  89. package/src/ui.data-list/index.vue +258 -0
  90. package/src/ui.data-table/Docs.mdx +16 -0
  91. package/src/ui.data-table-cell/configs/default.config.js +19 -0
  92. package/src/ui.dropdown-badge/Docs.mdx +16 -0
  93. package/src/ui.dropdown-badge/composables/attrs.composable.js +63 -0
  94. package/src/ui.dropdown-badge/configs/default.config.js +34 -0
  95. package/src/ui.dropdown-badge/constants/index.js +5 -0
  96. package/src/ui.dropdown-badge/index.stories.js +126 -0
  97. package/src/ui.dropdown-badge/index.vue +233 -0
  98. package/src/ui.dropdown-button/Docs.mdx +16 -0
  99. package/src/ui.dropdown-button/composables/attrs.composable.js +63 -0
  100. package/src/ui.dropdown-button/configs/default.config.js +37 -0
  101. package/src/ui.dropdown-button/constants/index.js +14 -0
  102. package/src/ui.dropdown-button/index.stories.js +158 -0
  103. package/src/ui.dropdown-button/index.vue +271 -0
  104. package/src/ui.dropdown-item/Docs.mdx +16 -0
  105. package/src/ui.dropdown-item/composables/attrs.composable.js +13 -0
  106. package/src/ui.dropdown-item/configs/default.config.js +16 -0
  107. package/src/ui.dropdown-item/index.stories.js +30 -0
  108. package/src/ui.dropdown-item/index.vue +53 -0
  109. package/src/ui.dropdown-link/Docs.mdx +16 -0
  110. package/src/ui.dropdown-link/composables/attrs.composable.js +65 -0
  111. package/src/ui.dropdown-link/configs/default.config.js +37 -0
  112. package/src/ui.dropdown-link/constants/index.js +5 -0
  113. package/src/ui.dropdown-link/index.stories.js +127 -0
  114. package/src/ui.dropdown-link/index.vue +260 -0
  115. package/src/ui.dropdown-list/Docs.mdx +16 -0
  116. package/src/ui.dropdown-list/composables/attrs.composable.js +93 -0
  117. package/src/ui.dropdown-list/composables/usePointer.js +77 -0
  118. package/src/ui.dropdown-list/configs/default.config.js +74 -0
  119. package/src/ui.dropdown-list/constants/index.js +5 -0
  120. package/src/ui.dropdown-list/index.stories.js +76 -0
  121. package/src/ui.dropdown-list/index.vue +282 -0
  122. package/src/ui.form-calendar/Docs.mdx +52 -0
  123. package/src/ui.form-calendar/components/DayView.vue +268 -0
  124. package/src/ui.form-calendar/components/MonthView.vue +114 -0
  125. package/src/ui.form-calendar/components/YearView.vue +118 -0
  126. package/src/ui.form-calendar/constants/index.js +71 -0
  127. package/src/ui.form-calendar/index.stories.js +59 -0
  128. package/src/ui.form-calendar/index.vue +738 -0
  129. package/src/ui.form-calendar/services/calendar.service.js +189 -0
  130. package/src/ui.form-calendar/services/formatting.service.js +180 -0
  131. package/src/ui.form-checkbox/Docs.mdx +16 -0
  132. package/src/ui.form-checkbox/configs/default.config.js +69 -0
  133. package/src/ui.form-checkbox/index.stories.js +147 -0
  134. package/src/ui.form-checkbox-group/Docs.mdx +16 -0
  135. package/src/ui.form-checkbox-group/composables/attrs.composable.js +17 -0
  136. package/src/ui.form-checkbox-group/configs/default.config.js +5 -0
  137. package/src/ui.form-checkbox-group/constants/index.js +5 -0
  138. package/src/ui.form-checkbox-group/index.stories.js +45 -0
  139. package/src/ui.form-checkbox-group/index.vue +143 -0
  140. package/src/ui.form-checkbox-multi-state/Docs.mdx +16 -0
  141. package/src/ui.form-checkbox-multi-state/composables/attrs.composable.js +24 -0
  142. package/src/ui.form-checkbox-multi-state/configs/default.config.js +9 -0
  143. package/src/ui.form-checkbox-multi-state/constants/index.js +5 -0
  144. package/src/ui.form-checkbox-multi-state/index.stories.js +59 -0
  145. package/src/ui.form-checkbox-multi-state/index.vue +133 -0
  146. package/src/ui.form-color-picker/composables/attrs.composable.js +44 -0
  147. package/src/ui.form-color-picker/configs/default.config.js +52 -0
  148. package/src/ui.form-color-picker/constants/index.js +5 -0
  149. package/src/ui.form-color-picker/index.stories.js +63 -0
  150. package/src/ui.form-color-picker/index.vue +168 -0
  151. package/src/ui.form-date-picker/Docs.mdx +52 -0
  152. package/src/ui.form-date-picker/composables/attrs.composable.js +22 -0
  153. package/src/ui.form-date-picker/configs/default.config.js +26 -0
  154. package/src/ui.form-date-picker/constants/index.js +5 -0
  155. package/src/ui.form-date-picker/index.stories.js +132 -0
  156. package/src/ui.form-date-picker/index.vue +253 -0
  157. package/src/ui.form-date-picker-range/constants/index.js +23 -0
  158. package/src/ui.form-date-picker-range/index.stories.js +135 -0
  159. package/src/ui.form-date-picker-range/index.vue +929 -0
  160. package/src/ui.form-date-picker-range/services/dateRange.service.js +116 -0
  161. package/src/ui.form-input/Docs.mdx +16 -0
  162. package/src/ui.form-input/assets/fonts/text-security-disc.woff +0 -0
  163. package/src/ui.form-input/composables/attrs.composable.js +66 -0
  164. package/src/ui.form-input/configs/default.config.js +72 -0
  165. package/src/ui.form-input/constants/index.js +5 -0
  166. package/src/ui.form-input/index.stories.js +166 -0
  167. package/src/ui.form-input/index.vue +385 -0
  168. package/src/ui.form-input-file/composables/attrs.composable.js +82 -0
  169. package/src/ui.form-input-file/configs/default.config.js +59 -0
  170. package/src/ui.form-input-file/constants/index.js +5 -0
  171. package/src/ui.form-input-file/index.stories.js +86 -0
  172. package/src/ui.form-input-file/index.vue +385 -0
  173. package/src/ui.form-input-money/Docs.mdx +16 -0
  174. package/src/ui.form-input-money/composables/attrs.composable.js +13 -0
  175. package/src/ui.form-input-money/composables/useFormatCurrency.js +82 -0
  176. package/src/ui.form-input-money/configs/default.config.js +16 -0
  177. package/src/ui.form-input-money/constants/index.js +5 -0
  178. package/src/ui.form-input-money/index.stories.js +126 -0
  179. package/src/ui.form-input-money/index.vue +264 -0
  180. package/src/ui.form-input-money/services/format.service.js +72 -0
  181. package/src/ui.form-input-number/Docs.mdx +16 -0
  182. package/src/ui.form-input-number/composables/attrs.composable.js +47 -0
  183. package/src/ui.form-input-number/configs/default.config.js +33 -0
  184. package/src/ui.form-input-number/constants/index.js +5 -0
  185. package/src/ui.form-input-number/index.stories.js +103 -0
  186. package/src/ui.form-input-number/index.vue +159 -0
  187. package/src/ui.form-input-rating/composables/attrs.composable.js +34 -0
  188. package/src/ui.form-input-rating/constants/index.js +5 -0
  189. package/src/ui.form-input-search/composables/attrs.composable.js +21 -0
  190. package/src/ui.form-input-search/configs/default.config.js +20 -0
  191. package/src/ui.form-input-search/constants/index.js +5 -0
  192. package/src/ui.form-input-search/index.stories.js +90 -0
  193. package/src/ui.form-input-search/index.vue +212 -0
  194. package/src/ui.form-label/Docs.mdx +16 -0
  195. package/src/ui.form-label/composables/attrs.composable.js +65 -0
  196. package/src/ui.form-label/configs/default.config.js +95 -0
  197. package/src/ui.form-label/constants/index.js +13 -0
  198. package/src/ui.form-label/index.stories.js +107 -0
  199. package/src/ui.form-label/index.vue +170 -0
  200. package/src/ui.form-radio/Docs.mdx +16 -0
  201. package/src/ui.form-radio/composables/attrs.composable.js +34 -0
  202. package/src/ui.form-radio/configs/default.config.js +47 -0
  203. package/src/ui.form-radio/constants/index.js +5 -0
  204. package/src/ui.form-radio/index.stories.js +71 -0
  205. package/src/ui.form-radio/index.vue +169 -0
  206. package/src/ui.form-radio-card/Docs.mdx +16 -0
  207. package/src/ui.form-radio-card/constants/index.js +5 -0
  208. package/src/ui.form-radio-card/index.stories.js +149 -0
  209. package/src/ui.form-radio-card/services/variant.service.js +15 -0
  210. package/src/ui.form-radio-group/Docs.mdx +16 -0
  211. package/src/ui.form-radio-group/composables/attrs.composable.js +27 -0
  212. package/src/ui.form-radio-group/configs/default.config.js +18 -0
  213. package/src/ui.form-radio-group/constants/index.js +5 -0
  214. package/src/ui.form-radio-group/index.stories.js +42 -0
  215. package/src/ui.form-radio-group/index.vue +127 -0
  216. package/src/ui.form-select/Docs.mdx +16 -0
  217. package/src/ui.form-select/composables/attrs.composable.js +172 -0
  218. package/src/ui.form-select/configs/default.config.js +138 -0
  219. package/src/ui.form-select/constants/index.js +19 -0
  220. package/src/ui.form-select/index.stories.js +339 -0
  221. package/src/ui.form-select/index.vue +719 -0
  222. package/src/ui.form-select/services/select.service.js +98 -0
  223. package/src/ui.form-switch/composables/attrs.composable.js +77 -0
  224. package/src/ui.form-switch/configs/default.config.js +76 -0
  225. package/src/ui.form-switch/constants/index.js +5 -0
  226. package/src/ui.form-switch/index.stories.js +93 -0
  227. package/src/ui.form-switch/index.vue +198 -0
  228. package/src/ui.form-switch/services/variant.service.js +31 -0
  229. package/src/ui.form-textarea/Docs.mdx +16 -0
  230. package/src/ui.form-textarea/composables/attrs.composable.js +52 -0
  231. package/src/ui.form-textarea/configs/default.config.js +68 -0
  232. package/src/ui.form-textarea/constants/index.js +5 -0
  233. package/src/ui.form-textarea/index.stories.js +151 -0
  234. package/src/ui.form-textarea/index.vue +284 -0
  235. package/src/ui.image-avatar/composables/attrs.composable.js +34 -0
  236. package/src/ui.image-avatar/configs/default.config.js +42 -0
  237. package/src/ui.image-avatar/constants/index.js +5 -0
  238. package/src/ui.image-avatar/default-avatar.png +0 -0
  239. package/src/ui.image-avatar/index.stories.js +107 -0
  240. package/src/ui.image-avatar/index.vue +121 -0
  241. package/src/ui.image-icon/Docs.mdx +16 -0
  242. package/src/ui.image-icon/index.stories.js +110 -0
  243. package/src/ui.image-logo/configs/default.config.js +38 -0
  244. package/src/ui.image-logo/index.stories.js +84 -0
  245. package/src/ui.loader-top/components/TopProgress.vue +277 -0
  246. package/src/ui.navigation-pagination/composables/attrs.composable.js +41 -0
  247. package/src/ui.navigation-pagination/configs/default.config.js +24 -0
  248. package/src/ui.navigation-pagination/constants/index.js +8 -0
  249. package/src/ui.navigation-pagination/index.stories.js +52 -0
  250. package/src/ui.navigation-pagination/index.vue +275 -0
  251. package/src/ui.navigation-stepper/composables/attrs.composable.js +25 -0
  252. package/src/ui.navigation-stepper/configs/default.config.js +13 -0
  253. package/src/ui.navigation-stepper/constants/index.js +5 -0
  254. package/src/ui.navigation-stepper/index.stories.js +30 -0
  255. package/src/ui.navigation-stepper/index.vue +128 -0
  256. package/src/ui.navigation-tab/composables/attrs.composable.js +30 -0
  257. package/src/ui.navigation-tab/configs/default.config.js +22 -0
  258. package/src/ui.navigation-tab/constants/index.js +5 -0
  259. package/src/ui.navigation-tab/index.stories.js +57 -0
  260. package/src/ui.navigation-tab/index.vue +85 -0
  261. package/src/ui.navigation-tabs/composables/attrs.composable.js +24 -0
  262. package/src/ui.navigation-tabs/configs/default.config.js +14 -0
  263. package/src/ui.navigation-tabs/constants/index.js +5 -0
  264. package/src/ui.navigation-tabs/index.stories.js +69 -0
  265. package/src/ui.navigation-tabs/index.vue +99 -0
  266. package/src/ui.notify/index.stories.js +102 -0
  267. package/src/ui.other-dot/composables/attrs.composable.js +32 -0
  268. package/src/ui.other-dot/configs/default.config.js +21 -0
  269. package/src/ui.other-dot/constants/index.js +5 -0
  270. package/src/ui.other-dot/index.stories.js +77 -0
  271. package/src/ui.other-dot/index.vue +52 -0
  272. package/src/ui.other-loader/composables/attrs.composable.js +51 -0
  273. package/src/ui.other-loader/configs/default.config.js +47 -0
  274. package/src/ui.other-loader/constants/index.js +5 -0
  275. package/src/ui.other-loader/index.stories.js +78 -0
  276. package/src/ui.other-loader/index.vue +136 -0
  277. package/src/ui.text-alert/composables/attrs.composable.js +48 -0
  278. package/src/ui.text-alert/configs/default.config.js +51 -0
  279. package/src/ui.text-alert/constatns/index.js +5 -0
  280. package/src/ui.text-alert/index.stories.js +157 -0
  281. package/src/ui.text-alert/index.vue +121 -0
  282. package/src/ui.text-badge/Docs.mdx +16 -0
  283. package/src/ui.text-badge/composables/attrs.composable.js +49 -0
  284. package/src/ui.text-badge/configs/default.config.js +51 -0
  285. package/src/ui.text-badge/constants/index.js +5 -0
  286. package/src/ui.text-badge/index.stories.js +190 -0
  287. package/src/ui.text-badge/index.vue +120 -0
  288. package/src/ui.text-block/composables/attrs.composable.js +31 -0
  289. package/src/ui.text-block/configs/default.config.js +35 -0
  290. package/src/ui.text-block/constatns/index.js +5 -0
  291. package/src/ui.text-block/index.stories.js +112 -0
  292. package/src/ui.text-block/index.vue +76 -0
  293. package/src/ui.text-empty/Docs.mdx +16 -0
  294. package/src/ui.text-empty/configs/default.config.js +30 -0
  295. package/src/ui.text-empty/index.stories.js +106 -0
  296. package/src/ui.text-file/composables/attrs.composable.js +37 -0
  297. package/src/ui.text-file/configs/default.config.js +15 -0
  298. package/src/ui.text-file/index.stories.js +29 -0
  299. package/src/ui.text-file/index.vue +93 -0
  300. package/src/ui.text-files/composables/attrs.composable.js +19 -0
  301. package/src/ui.text-files/configs/default.config.js +9 -0
  302. package/src/ui.text-files/constants/index.js +5 -0
  303. package/src/ui.text-files/index.stories.js +32 -0
  304. package/src/ui.text-files/index.vue +87 -0
  305. package/src/ui.text-header/Docs.mdx +16 -0
  306. package/src/ui.text-header/composables/attrs.composable.js +34 -0
  307. package/src/ui.text-header/constants/index.js +5 -0
  308. package/src/ui.text-header/index.stories.js +106 -0
  309. package/src/ui.text-header/index.vue +83 -0
  310. package/src/ui.text-money/Docs.mdx +16 -0
  311. package/src/ui.text-money/assets/credit.svg +7 -0
  312. package/src/ui.text-money/assets/debit.svg +12 -0
  313. package/src/ui.text-money/composables/attrs.composable.js +65 -0
  314. package/src/ui.text-money/constants/index.js +7 -0
  315. package/src/ui.text-money/index.stories.js +265 -0
  316. package/src/ui.text-money/index.vue +204 -0
  317. package/src/ui.text-money/services/money.services.js +24 -0
  318. package/src/ui.viewport/index.vue +78 -0
@@ -0,0 +1,168 @@
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 UIService, { getRandomId } from "../service.ui";
56
+
57
+ import { UColorPicker } from "./constants";
58
+ import defaultConfig from "./configs/default.config";
59
+ import { useAttrs } from "./composables/attrs.composable";
60
+
61
+ /* Should be a string for correct web-types gen */
62
+ defineOptions({ name: "UColorPicker", inheritAttrs: false });
63
+
64
+ const props = defineProps({
65
+ /**
66
+ * Color picker selected value.
67
+ */
68
+ modelValue: {
69
+ type: String,
70
+ default: "",
71
+ },
72
+
73
+ /**
74
+ * Color picker colors.
75
+ */
76
+ colorOptions: {
77
+ type: Array,
78
+ default: () => UIService.get(defaultConfig, UColorPicker).default.colorOptions,
79
+ },
80
+
81
+ /**
82
+ * Color picker label.
83
+ */
84
+ label: {
85
+ type: String,
86
+ default: "",
87
+ },
88
+
89
+ /**
90
+ * Color picker description.
91
+ */
92
+ description: {
93
+ type: String,
94
+ default: "",
95
+ },
96
+
97
+ /**
98
+ * Error message.
99
+ */
100
+ error: {
101
+ type: String,
102
+ default: "",
103
+ },
104
+
105
+ /**
106
+ * Color picker size.
107
+ * @values sm, md, lg
108
+ */
109
+ size: {
110
+ type: String,
111
+ default: UIService.get(defaultConfig, UColorPicker).default.size,
112
+ },
113
+
114
+ /**
115
+ * Color picker name.
116
+ */
117
+ name: {
118
+ type: String,
119
+ default: () => getRandomId(),
120
+ },
121
+
122
+ /**
123
+ * Set color picker disabled.
124
+ */
125
+ disabled: {
126
+ type: Boolean,
127
+ default: UIService.get(defaultConfig, UColorPicker).default.disabled,
128
+ },
129
+
130
+ /**
131
+ * Component ui config object.
132
+ */
133
+ config: {
134
+ type: Object,
135
+ default: () => ({}),
136
+ },
137
+
138
+ /**
139
+ * Data-cy attribute for automated testing.
140
+ */
141
+ dataCy: {
142
+ type: String,
143
+ default: "radio",
144
+ },
145
+ });
146
+
147
+ const emit = defineEmits(["update:modelValue"]);
148
+
149
+ const {
150
+ config,
151
+ wrapperAttrs,
152
+ listAttrs,
153
+ labelAttrs,
154
+ radioAttrs,
155
+ iconAttrs,
156
+ uncoloredAttrs,
157
+ uncoloredRadioAttrs,
158
+ } = useAttrs(props);
159
+
160
+ const selectedItem = computed({
161
+ get: () => props.modelValue,
162
+ set: (value) => emit("update:modelValue", value),
163
+ });
164
+
165
+ function onInputRadio(value) {
166
+ selectedItem.value = value;
167
+ }
168
+ </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,253 @@
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
+ import UIService, { getRandomId } from "../service.ui";
57
+
58
+ import useAttrs from "./composables/attrs.composable";
59
+
60
+ import defaultConfig from "./configs/default.config";
61
+ import { UDatePicker } from "./constants";
62
+
63
+ import { VIEW } from "../ui.form-calendar/constants";
64
+
65
+ defineOptions({ name: "UDatePicker" });
66
+
67
+ const props = defineProps({
68
+ /**
69
+ * Datepicker label.
70
+ */
71
+ label: {
72
+ type: String,
73
+ default: "",
74
+ },
75
+
76
+ /**
77
+ * Datepicker placeholder.
78
+ */
79
+ placeholder: {
80
+ type: String,
81
+ default: "",
82
+ },
83
+
84
+ /**
85
+ * Datepicker value (timestamp).
86
+ */
87
+ modelValue: {
88
+ type: Number,
89
+ default: null,
90
+ },
91
+
92
+ /**
93
+ * Min date in format date string or Date.
94
+ */
95
+ minDate: {
96
+ type: [String, Date],
97
+ default: UIService.get(defaultConfig, UDatePicker).default.minDate,
98
+ },
99
+
100
+ /**
101
+ * Max date in format date string or Date.
102
+ */
103
+ maxDate: {
104
+ type: [String, Date],
105
+ default: UIService.get(defaultConfig, UDatePicker).default.maxDate,
106
+ },
107
+
108
+ /**
109
+ * Disable component.
110
+ */
111
+ disabled: {
112
+ type: Boolean,
113
+ default: UIService.get(defaultConfig, UDatePicker).default.disabled,
114
+ },
115
+
116
+ /**
117
+ * Enable timepicker.
118
+ */
119
+ timepicker: {
120
+ type: Boolean,
121
+ default: UIService.get(defaultConfig, UDatePicker).default.timepicker,
122
+ },
123
+
124
+ /**
125
+ * Error message.
126
+ */
127
+ error: {
128
+ type: String,
129
+ default: "",
130
+ },
131
+
132
+ /**
133
+ * Datepicker description.
134
+ */
135
+ description: {
136
+ type: String,
137
+ default: "",
138
+ },
139
+
140
+ /**
141
+ * Datepicker size.
142
+ * @values sm, md, lg
143
+ */
144
+ size: {
145
+ type: String,
146
+ default: UIService.get(defaultConfig, UDatePicker).default.size,
147
+ },
148
+
149
+ /**
150
+ * Date format.
151
+ */
152
+ dateFormat: {
153
+ type: String,
154
+ default: UIService.get(defaultConfig, UDatePicker).default.dateFormat,
155
+ },
156
+
157
+ /**
158
+ * User friendly date format.
159
+ */
160
+ userFormat: {
161
+ type: String,
162
+ default: UIService.get(defaultConfig, UDatePicker).default.userFormat,
163
+ },
164
+
165
+ /**
166
+ * Unique element id.
167
+ * @ignore
168
+ */
169
+ id: {
170
+ type: String,
171
+ default: () => getRandomId(),
172
+ },
173
+
174
+ /**
175
+ * Component ui config object.
176
+ */
177
+ config: {
178
+ type: Object,
179
+ default: () => ({}),
180
+ },
181
+
182
+ /**
183
+ * Data-cy attribute for automated testing.
184
+ */
185
+ dataCy: {
186
+ type: String,
187
+ default: "",
188
+ },
189
+ });
190
+
191
+ const emit = defineEmits(["update:modelValue", "input"]);
192
+
193
+ const isShownCalendar = ref(false);
194
+ const userFormatDate = ref("");
195
+ const formattedDate = ref("");
196
+ const customView = ref(VIEW.day);
197
+
198
+ const calendarRef = ref(null);
199
+
200
+ defineExpose({
201
+ calendarRef,
202
+ userFormatDate,
203
+ formattedDate,
204
+ });
205
+
206
+ const localValue = computed({
207
+ get: () => props.modelValue,
208
+ set: (value) => emit("update:modelValue", value),
209
+ });
210
+
211
+ const { config, inputAttrs, calendarAttrs } = useAttrs(props, { isShownCalendar });
212
+
213
+ function activate() {
214
+ isShownCalendar.value = true;
215
+
216
+ nextTick(() => calendarRef.value.wrapperRef.focus());
217
+ }
218
+
219
+ function deactivate() {
220
+ isShownCalendar.value = false;
221
+
222
+ customView.value = VIEW.day;
223
+ }
224
+
225
+ function onUserFormatDateChange(value) {
226
+ userFormatDate.value = value || "";
227
+ }
228
+
229
+ function onFormattedDateChange(value) {
230
+ formattedDate.value = value || "";
231
+ }
232
+
233
+ function onSubmit() {
234
+ deactivate();
235
+ }
236
+
237
+ function onBlur(event) {
238
+ const { relatedTarget } = event;
239
+
240
+ if (!calendarRef.value.wrapperRef.contains(relatedTarget)) deactivate();
241
+ }
242
+
243
+ function onInput() {
244
+ nextTick(() => {
245
+ calendarRef.value.wrapperRef.blur();
246
+ emit("input", {
247
+ userFormatDate: userFormatDate.value,
248
+ value: localValue.value,
249
+ formattedDate: formattedDate.value,
250
+ });
251
+ });
252
+ }
253
+ </script>
@@ -0,0 +1,23 @@
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 UDatePickerRange = "UDatePickerRange";
6
+
7
+ export const DATE_PICKER_BUTTON_TYPE = "button";
8
+ export const DATE_PICKER_INPUT_TYPE = "input";
9
+ export const RANGE_INPUT_FORMAT = "d.m.Y";
10
+
11
+ export const INPUT_RANGE_TYPE = {
12
+ start: "start",
13
+ end: "end",
14
+ };
15
+
16
+ export const PERIOD = {
17
+ week: "week",
18
+ month: "month",
19
+ quarter: "quarter",
20
+ year: "year",
21
+ ownRange: "ownRange",
22
+ lastThirtyDays: "lastThirtyDays",
23
+ };