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
@@ -0,0 +1,77 @@
1
+ import { ref, computed } from "vue";
2
+
3
+ export default function usePointer(options, optionHeight, listWrapperElement) {
4
+ const pointer = ref(null);
5
+ const pointerDirty = ref(false);
6
+
7
+ const pointerPosition = computed(() => {
8
+ return pointer.value * optionHeight || 0;
9
+ });
10
+
11
+ function scrollWrapperToElement() {
12
+ const visibleElements = listWrapperElement.value.getBoundingClientRect().height / optionHeight;
13
+ const currentElement = visibleElements - 1;
14
+ const currentPointerPosition = pointerPosition.value - currentElement * optionHeight;
15
+
16
+ if (listWrapperElement.value.scrollTop <= currentPointerPosition) {
17
+ listWrapperElement.value.scrollTop = currentPointerPosition;
18
+ }
19
+ }
20
+
21
+ function pointerForward() {
22
+ if (pointer.value < options.length - 1) {
23
+ pointer.value++;
24
+
25
+ const isGroup =
26
+ options[pointer.value].$isLabel ||
27
+ options[pointer.value].isSubGroup ||
28
+ options[pointer.value].$groupLabel;
29
+
30
+ if (listWrapperElement) scrollWrapperToElement();
31
+
32
+ if (options[pointer.value] && isGroup) {
33
+ pointerForward();
34
+ }
35
+ }
36
+
37
+ pointerDirty.value = true;
38
+ }
39
+
40
+ function pointerBackward() {
41
+ if (pointer.value > 0) {
42
+ pointer.value--;
43
+
44
+ const isGroup =
45
+ options[pointer.value].$isLabel ||
46
+ options[pointer.value].isSubGroup ||
47
+ options[pointer.value].$groupLabel;
48
+
49
+ if (listWrapperElement && listWrapperElement.value.scrollTop >= pointerPosition.value) {
50
+ listWrapperElement.value.scrollTop = pointerPosition.value;
51
+ }
52
+
53
+ if (options[pointer.value] && isGroup) {
54
+ pointerBackward();
55
+ }
56
+ } else {
57
+ if (options[pointer.value] && options[0].$isLabel) {
58
+ pointerForward();
59
+ }
60
+ }
61
+
62
+ pointerDirty.value = true;
63
+ }
64
+
65
+ function pointerSet(index) {
66
+ pointer.value = index;
67
+ pointerDirty.value = true;
68
+ }
69
+
70
+ function pointerReset() {
71
+ pointer.value = 0;
72
+
73
+ if (listWrapperElement) listWrapperElement.value.scrollTop = 0;
74
+ }
75
+
76
+ return { pointer, pointerDirty, pointerSet, pointerReset, pointerBackward, pointerForward };
77
+ }
@@ -0,0 +1,68 @@
1
+ export default /*tw*/ {
2
+ wrapper: `
3
+ my-2 flex w-full absolute right-0 z-50
4
+ rounded-lg border border-gray-300 bg-white shadow
5
+ overflow-auto [-webkit-overflow-scrolling:touch]
6
+ focus:outline-none
7
+ `,
8
+ list: `
9
+ inline-block list-none align-top m-0 min-w-full p-0
10
+ hover:transition hover:duration-100 hover:ease-in-out bg-white opacity-1
11
+ `,
12
+ subGroupLabel: {
13
+ base: "pointer-events-none bg-transparent !font-medium leading-none !uppercase !text-gray-500/[85] pt-1",
14
+ variants: {
15
+ size: {
16
+ sm: "text-2xs",
17
+ md: "text-xs",
18
+ lg: "text-sm",
19
+ },
20
+ },
21
+ },
22
+ groupLabel: {
23
+ base: "pointer-events-none bg-transparent !font-medium leading-none !uppercase !text-gray-500/[85] pt-6 group-first/item:pt-2",
24
+ variants: {
25
+ size: {
26
+ sm: "text-2xs pb-1 mt-4",
27
+ md: "text-xs pb-1",
28
+ lg: "text-sm pb-1 mt-4",
29
+ },
30
+ },
31
+ },
32
+ option: {
33
+ base: `
34
+ p-3 flex items-center align-middle whitespace-nowrap cursor-pointer
35
+ font-normal !leading-none normal-case text-gray-900
36
+ hover:bg-gray-100 active:bg-gray-200 active:font-medium
37
+ `,
38
+ variants: {
39
+ size: {
40
+ sm: "text-sm",
41
+ md: "text-base",
42
+ lg: "text-lg",
43
+ },
44
+ disabled: {
45
+ true: "pointer-events-none",
46
+ },
47
+ },
48
+ },
49
+ optionHighlight: "bg-gray-100",
50
+ optionSelected: "bg-gray-200 font-medium",
51
+ optionItem: "group/item block",
52
+ addTitleWrapper: `
53
+ flex items-center justify-between cursor-pointer p-3 hover:bg-gray-100
54
+ active:bg-gray-200 active:font-medium -mb-6
55
+ `,
56
+ addTitle: "text-sm font-medium text-gray-900",
57
+ addTitleHotkey: "text-gray-500",
58
+ buttonAdd: "sticky left-[calc(100%-2.3rem)] bottom-2.5 p-1",
59
+ iconAddName: "add",
60
+ iconAdd: "bg-transparent",
61
+ defaultVariants: {
62
+ size: "md",
63
+ optionHeight: 40,
64
+ maxHeight: undefined,
65
+ disabled: false,
66
+ addOption: false,
67
+ },
68
+ };
@@ -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 UDropdownList = "UDropdownList";
@@ -1,15 +1,17 @@
1
1
  import { getArgTypes } from "vueless/service.storybook";
2
2
 
3
3
  import UDropdownList from "vueless/ui.dropdown-list";
4
+ import URow from "vueless/ui.container-row";
4
5
 
5
6
  export default {
7
+ id: "2050",
6
8
  title: "Dropdowns / Dropdown List",
7
9
  component: UDropdownList,
8
10
  args: {
9
11
  options: [
10
- { label: "option 1", value: "1" },
11
- { label: "option 2", value: "2" },
12
- { label: "option 3", value: "3" },
12
+ { label: "option 1", id: "1" },
13
+ { label: "option 2", id: "2" },
14
+ { label: "option 3", id: "3" },
13
15
  ],
14
16
  },
15
17
  argTypes: {
@@ -39,8 +41,36 @@ const DefaultTemplate = (args) => ({
39
41
  `,
40
42
  });
41
43
 
44
+ const SizesTemplate = (args, { argTypes } = {}) => ({
45
+ components: { UDropdownList, URow },
46
+ setup() {
47
+ return {
48
+ args,
49
+ sizes: argTypes.size.options,
50
+ };
51
+ },
52
+ template: `
53
+ <div class="flex flex-col gap-6">
54
+ <URow>
55
+ <UDropdownList
56
+ v-for="(size, index) in sizes"
57
+ :key="index"
58
+ v-bind="args"
59
+ :size="size"
60
+ />
61
+ </URow>
62
+ </div>
63
+ `,
64
+ });
65
+
42
66
  export const Default = DefaultTemplate.bind({});
43
67
  Default.args = {};
44
68
 
69
+ export const sizes = SizesTemplate.bind({});
70
+ sizes.args = {};
71
+
72
+ export const maxHeight = DefaultTemplate.bind({});
73
+ maxHeight.args = { maxHeight: 80 };
74
+
45
75
  export const withoutOptions = DefaultTemplate.bind({});
46
76
  withoutOptions.args = { options: [] };
@@ -1,139 +1,298 @@
1
1
  <template>
2
- <div class="mono-dropdown-list">
3
- <template v-if="options.length">
4
- <div
5
- v-for="(option, key) of options"
6
- :key="key"
7
- class="mono-dropdown-list-option"
8
- :class="selectedOptionClass(option[valueKey])"
9
- @click="onClickOption(option[valueKey])"
2
+ <div
3
+ ref="wrapperRef"
4
+ tabindex="1"
5
+ :style="{ maxHeight: wrapperHeight }"
6
+ v-bind="wrapperAttrs"
7
+ @keydown.self.down.prevent="pointerForward"
8
+ @keydown.self.up.prevent="pointerBackward"
9
+ @keydown.enter.tab.stop.self="addPointerElement"
10
+ >
11
+ <ul :id="`listbox-${id}`" v-bind="listAttrs" role="listbox">
12
+ <li
13
+ v-for="(option, index) of options"
14
+ :id="`${id}-${index}`"
15
+ :key="index"
16
+ :role="!(option && (option.$isLabel || option.$isDisabled)) ? 'option' : null"
17
+ v-bind="optionItemAttrs"
10
18
  >
11
- {{ option[itemLabel] }}
12
- </div>
13
- </template>
14
- <div v-else class="mono-dropdown-list-plug">{{ i18n.noDataToShow }}</div>
19
+ <!-- option title -->
20
+ <span
21
+ v-if="
22
+ !(option && (option.$isLabel || option.$isDisabled || option.isSubGroup)) &&
23
+ !option.isHidden
24
+ "
25
+ v-bind="optionAttrs(optionHighlight(index, option))"
26
+ @click.stop="select(option)"
27
+ @mouseenter.self="pointerSet(index)"
28
+ >
29
+ <!-- @slot Use it to add something before option. -->
30
+ <slot :option="option" name="before-option" />
31
+
32
+ <slot name="option" :option="option" :index="index">
33
+ <span :style="getMarginForSubCategory(option.level)" v-text="option[labelKey]" />
34
+ </slot>
35
+
36
+ <!-- @slot Use it to add something after option. -->
37
+ <slot :option="option" name="after-option" />
38
+ </span>
39
+
40
+ <!-- group title -->
41
+ <div
42
+ v-if="
43
+ option &&
44
+ (option.$isLabel || option.$isDisabled || option.isSubGroup) &&
45
+ !option.isHidden
46
+ "
47
+ >
48
+ <div v-if="option.$groupLabel" v-bind="groupLabelAttrs" v-text="option.$groupLabel" />
49
+
50
+ <div
51
+ v-else-if="option.isSubGroup"
52
+ :style="getMarginForSubCategory(option.level)"
53
+ v-bind="subGroupLabelAttrs"
54
+ v-text="option[labelKey]"
55
+ />
56
+ </div>
57
+ </li>
58
+ <slot
59
+ v-if="hasSlotContent($slots['empty']) || options.length === 0"
60
+ name="empty"
61
+ :empty-styles="optionClasses"
62
+ >
63
+ <span v-bind="optionAttrs()">
64
+ <span>{{ i18n.noDataToShow }}</span>
65
+ </span>
66
+ </slot>
67
+
68
+ <!-- Add button -->
69
+ <template v-if="addOption">
70
+ <div v-bind="addTitleWrapperAttrs" @click="onClickAddOption">
71
+ <div v-bind="addTitleAttrs">
72
+ {{ i18n.add }}
73
+ <span v-bind="addTitleHotkeyAttrs" v-text="addOptionKeyCombination" />
74
+ </div>
75
+ </div>
76
+ <UButton pill square v-bind="buttonAddAttrs" @click="onClickAddOption">
77
+ <UIcon color="white" size="xs" :name="config.iconAddName" v-bind="iconAddAttrs" />
78
+ </UButton>
79
+ </template>
80
+ </ul>
15
81
  </div>
16
82
  </template>
17
83
 
18
- <script>
19
- import I18nServiceDefault from "vueless/service.i18n";
20
-
21
- export default {
22
- name: "UDropdownList",
23
-
24
- props: {
25
- /**
26
- * Set input select value.
27
- */
28
- modelValue: {
29
- type: [String, Number],
30
- default: "",
31
- },
32
-
33
- /**
34
- * Set options for component.
35
- */
36
- options: {
37
- type: Array,
38
- default: () => [],
39
- },
40
-
41
- /**
42
- * Label from option Object, that will be visible in the dropdown.
43
- */
44
- itemLabel: {
45
- type: String,
46
- default: "label",
47
- },
48
-
49
- /**
50
- * Set track value key.
51
- */
52
- valueKey: {
53
- type: String,
54
- default: "id",
55
- },
84
+ <script setup>
85
+ import { computed, ref } from "vue";
86
+
87
+ import usePointer from "./composables/usePointer";
88
+ import useAttrs from "./composables/attrs.composable";
89
+
90
+ import I18nServiceDefault from "@vueless/services/i18n";
91
+ import UIService, { getRandomId, isMac } from "vueless/service.ui";
92
+
93
+ import defaultConfig from "./configs/default.config.js";
94
+
95
+ /* Should be a string for correct web-types gen */
96
+ defineOptions({ name: "UDropdownList", inheritAttrs: false });
97
+
98
+ import { UDropdownList } from "./constants";
99
+
100
+ const modelValue = defineModel({ type: [String, Number, Object], default: "" });
101
+
102
+ const props = defineProps({
103
+ /**
104
+ * Set options list.
105
+ */
106
+ options: {
107
+ type: Array,
108
+ default: () => [],
56
109
  },
57
110
 
58
- emits: ["update:modelValue"],
111
+ /**
112
+ * Label key in the item object of options.
113
+ */
114
+ labelKey: {
115
+ type: String,
116
+ default: "label",
117
+ },
59
118
 
60
- setup() {
61
- const { getTranslation } = new I18nServiceDefault();
119
+ /**
120
+ * Value key in the item object of options.
121
+ */
122
+ valueKey: {
123
+ type: String,
124
+ default: "id",
125
+ },
62
126
 
63
- return { getTranslation };
127
+ /**
128
+ * Set a name of the property containing the group label.
129
+ */
130
+ groupLabel: {
131
+ type: String,
132
+ default: "label",
64
133
  },
65
134
 
66
- computed: {
67
- selectValue: {
68
- get() {
69
- return this.modelValue;
70
- },
71
- set(value) {
72
- this.$emit("update:modelValue", value);
73
- },
74
- },
75
-
76
- i18n() {
77
- return {
78
- noDataToShow: this.getTranslation("noDataToShow"),
79
- };
80
- },
135
+ /**
136
+ * Set a name of the property containing the group values.
137
+ */
138
+ groupValues: {
139
+ type: String,
140
+ default: "",
81
141
  },
82
142
 
83
- methods: {
84
- selectedOptionClass(value) {
85
- return this.selectValue === value ? "selected" : "";
86
- },
143
+ /**
144
+ * Show add new option button to the list.
145
+ */
146
+ addOption: {
147
+ type: Boolean,
148
+ default: false,
149
+ },
87
150
 
88
- onClickOption(value) {
89
- this.selectValue = value;
90
- },
151
+ /**
152
+ * Disables the select.
153
+ */
154
+ disabled: {
155
+ type: Boolean,
156
+ default: UIService.get(defaultConfig, UDropdownList).default.disabled,
91
157
  },
92
- };
93
- </script>
94
158
 
95
- <i18n>
96
- en:
97
- noDataToShow: "No data to show."
98
- ru:
99
- noDataToShow: "Нет данных."
100
- ua:
101
- noDataToShow: "Дані відсутні."
102
- </i18n>
159
+ /**
160
+ * Set size.
161
+ * @values sm, md, lg
162
+ */
163
+ size: {
164
+ type: String,
165
+ default: UIService.get(defaultConfig, UDropdownList).default.size,
166
+ },
167
+
168
+ /**
169
+ * List max height in pixels.
170
+ */
171
+ maxHeight: {
172
+ type: [Number, String],
173
+ default: UIService.get(defaultConfig, UDropdownList).default.maxHeight,
174
+ },
175
+
176
+ /**
177
+ * List option height in pixels.
178
+ */
179
+ optionHeight: {
180
+ type: Number,
181
+ default: UIService.get(defaultConfig, UDropdownList).default.optionHeight,
182
+ },
183
+
184
+ /**
185
+ * Generates unique element id.
186
+ * @ignore
187
+ */
188
+ id: {
189
+ type: String,
190
+ default: () => getRandomId(),
191
+ },
192
+
193
+ /**
194
+ * Sets component ui config object.
195
+ */
196
+ config: {
197
+ type: Object,
198
+ default: () => ({}),
199
+ },
200
+ });
201
+
202
+ const emit = defineEmits(["update:modelValue", "addOption"]);
203
+
204
+ const wrapperRef = ref(null);
205
+
206
+ const { pointer, pointerDirty, pointerSet, pointerBackward, pointerForward, pointerReset } =
207
+ usePointer(props.options, props.optionHeight, wrapperRef);
208
+ const { getTranslation } = new I18nServiceDefault();
209
+
210
+ const {
211
+ config,
212
+ hasSlotContent,
213
+ wrapperAttrs,
214
+ listAttrs,
215
+ optionItemAttrs,
216
+ addTitleWrapperAttrs,
217
+ addTitleAttrs,
218
+ addTitleHotkeyAttrs,
219
+ buttonAddAttrs,
220
+ iconAddAttrs,
221
+ optionAttrs,
222
+ subGroupLabelAttrs,
223
+ groupLabelAttrs,
224
+ optionClasses,
225
+ } = useAttrs(props);
226
+
227
+ defineExpose({ pointerSet, pointerBackward, pointerForward, pointerReset, addPointerElement });
103
228
 
104
- <style lang="postcss" scoped>
105
- .mono-dropdown-list {
106
- &:hover {
107
- @apply transition duration-100 ease-in-out;
229
+ const i18n = computed(() => {
230
+ return {
231
+ noDataToShow: getTranslation("noDataToShow"),
232
+ add: getTranslation("add"),
233
+ };
234
+ });
235
+
236
+ const addOptionKeyCombination = computed(() => {
237
+ return isMac ? "(⌘ + Enter)" : "(Ctrl + Enter)";
238
+ });
239
+
240
+ const wrapperHeight = computed(() =>
241
+ props.maxHeight === undefined ? "auto" : `${props.maxHeight}px`,
242
+ );
243
+
244
+ function onClickAddOption() {
245
+ emit("addOption");
246
+ }
247
+
248
+ function select(option, key) {
249
+ if (props.disabled || option.$isDisabled || option.$isLabel) {
250
+ return;
108
251
  }
109
252
 
110
- &-option {
111
- @apply whitespace-nowrap text-base font-normal normal-case text-gray-900 no-underline;
112
- @apply min-h-full cursor-pointer align-middle;
113
- @apply px-3 py-2;
253
+ if (key === "Tab" && !pointerDirty.value) return;
114
254
 
115
- &:first-child {
116
- @apply rounded-t-lg;
117
- }
255
+ modelValue.value = option[props.valueKey];
256
+ }
118
257
 
119
- &:last-child {
120
- @apply rounded-b-lg;
121
- }
258
+ function isSelectedOption(option) {
259
+ return modelValue.value === option[props.valueKey];
260
+ }
122
261
 
123
- &:hover {
124
- @apply bg-gray-100;
125
- }
262
+ function getMarginForSubCategory(level) {
263
+ const baseMargin = 1;
126
264
 
127
- &:active,
128
- &.selected {
129
- @apply !bg-gray-200 font-medium;
130
- }
265
+ if (level > 1) {
266
+ return `margin-left: ${baseMargin * (level - 1)}rem`;
131
267
  }
268
+ }
132
269
 
133
- &-plug {
134
- @apply whitespace-nowrap text-base font-normal normal-case text-gray-900 no-underline;
135
- @apply relative block min-h-full cursor-pointer align-middle;
136
- @apply px-3 py-2;
270
+ function optionHighlight(index, option) {
271
+ const classes = [];
272
+
273
+ if (index === pointer.value) classes.push(config.value.optionHighlight);
274
+ if (isSelectedOption(option)) classes.push(config.value.optionSelected);
275
+
276
+ return classes;
277
+ }
278
+
279
+ function addPointerElement({ key } = "Enter") {
280
+ if (props.options.length > 0) {
281
+ select(props.options[pointer.value], key);
137
282
  }
283
+
284
+ pointerReset();
138
285
  }
139
- </style>
286
+ </script>
287
+
288
+ <i18n>
289
+ en:
290
+ noDataToShow: "No data to show."
291
+ add: Add
292
+ ru:
293
+ noDataToShow: "Нет данных."
294
+ add: Добавить
295
+ ua:
296
+ noDataToShow: "Дані відсутні."
297
+ add: Додати
298
+ </i18n>
@@ -0,0 +1,52 @@
1
+ import { Meta, Title, Subtitle, Description, Primary, Controls, Stories, Source, Markdown } from "@storybook/blocks";
2
+ import { getSource } from "vueless/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 />