vueless 0.0.4 → 0.0.6

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 (321) hide show
  1. package/.eslintrc.js +7 -0
  2. package/package.json +3 -2
  3. package/postcss.config.js +1 -1
  4. package/src/service.storybook/index.js +91 -0
  5. package/src/service.tailwind/index.js +1 -1
  6. package/src/service.ui/index.js +1 -1
  7. package/src/ui.button/Docs.mdx +16 -0
  8. package/src/ui.button/composables/attrs.composable.js +41 -0
  9. package/src/ui.button/configs/default.config.js +165 -0
  10. package/src/ui.button/constants/index.js +5 -0
  11. package/src/ui.button/index.stories.js +166 -0
  12. package/src/ui.button/index.vue +151 -0
  13. package/src/ui.button-link/Docs.mdx +16 -0
  14. package/src/ui.button-link/composables/attrs.composable.js +99 -0
  15. package/src/ui.button-link/configs/default.config.js +80 -0
  16. package/src/ui.button-link/constants/index.js +5 -0
  17. package/src/ui.button-link/index.stories.js +158 -0
  18. package/src/ui.button-link/index.vue +226 -0
  19. package/src/ui.button-toggle/Docs.mdx +16 -0
  20. package/src/ui.button-toggle/composables/attrs.composable.js +16 -0
  21. package/src/ui.button-toggle/configs/default.config.js +12 -0
  22. package/src/ui.button-toggle/constants/index.js +7 -0
  23. package/src/ui.button-toggle/index.stories.js +155 -0
  24. package/src/ui.button-toggle/index.vue +128 -0
  25. package/src/ui.button-toggle-item/Docs.mdx +16 -0
  26. package/src/ui.button-toggle-item/composables/attrs.composable.js +53 -0
  27. package/src/ui.button-toggle-item/configs/default.config.js +58 -0
  28. package/src/ui.button-toggle-item/constants/index.js +5 -0
  29. package/src/ui.button-toggle-item/index.stories.js +77 -0
  30. package/src/ui.button-toggle-item/index.vue +147 -0
  31. package/src/ui.container-accordion/composables/attrs.composable.js +45 -0
  32. package/src/ui.container-accordion/configs/default.config.js +32 -0
  33. package/src/ui.container-accordion/constants/index.js +5 -0
  34. package/src/ui.container-accordion/index.stories.js +89 -0
  35. package/src/ui.container-accordion/index.vue +95 -0
  36. package/src/ui.container-card/Docs.mdx +16 -0
  37. package/src/ui.container-card/composable/attrs.composable.js +56 -0
  38. package/src/ui.container-card/configs/default.config.js +31 -0
  39. package/src/ui.container-card/constants/index.js +5 -0
  40. package/src/ui.container-card/index.stories.js +170 -0
  41. package/src/ui.container-card/index.vue +146 -0
  42. package/src/ui.container-divider/Docs.mdx +16 -0
  43. package/src/ui.container-divider/configs/default.config.js +79 -0
  44. package/src/ui.container-divider/index.stories.js +124 -0
  45. package/src/ui.container-group/Docs.mdx +16 -0
  46. package/src/ui.container-group/composables/attrs.composable.js +44 -0
  47. package/src/ui.container-group/configs/default.config.js +29 -0
  48. package/src/ui.container-group/constants/index.js +5 -0
  49. package/src/ui.container-group/index.stories.js +88 -0
  50. package/src/ui.container-group/index.vue +106 -0
  51. package/src/ui.container-groups/Docs.mdx +16 -0
  52. package/src/ui.container-groups/composables/attrs.composable.js +12 -0
  53. package/src/ui.container-groups/configs/default.config.js +3 -0
  54. package/src/ui.container-groups/index.stories.js +45 -0
  55. package/src/ui.container-groups/index.vue +33 -0
  56. package/src/ui.container-modal/Docs.mdx +16 -0
  57. package/src/ui.container-modal/composables/attrs.composable.js +90 -0
  58. package/src/ui.container-modal/configs/default.config.js +69 -0
  59. package/src/ui.container-modal/constants/index.js +5 -0
  60. package/src/ui.container-modal/index.stories.js +170 -0
  61. package/src/ui.container-modal/index.vue +336 -0
  62. package/src/ui.container-modal-confirm/Docs.mdx +16 -0
  63. package/src/ui.container-modal-confirm/composable/attrs.composable.js +20 -0
  64. package/src/ui.container-modal-confirm/configs/default.config.js +15 -0
  65. package/src/ui.container-modal-confirm/constants/index.js +5 -0
  66. package/src/ui.container-modal-confirm/index.stories.js +209 -0
  67. package/src/ui.container-modal-confirm/index.vue +182 -0
  68. package/src/ui.container-page/Docs.mdx +16 -0
  69. package/src/ui.container-page/composables/attrs.composable.js +96 -0
  70. package/src/ui.container-page/configs/default.config.js +71 -0
  71. package/src/ui.container-page/constants/index.js +5 -0
  72. package/src/ui.container-page/index.stories.js +147 -0
  73. package/src/ui.container-page/index.vue +275 -0
  74. package/src/ui.container-row/Docs.mdx +16 -0
  75. package/src/ui.container-row/composables/attrs.composable.js +23 -0
  76. package/src/ui.container-row/configs/default.config.js +14 -0
  77. package/src/ui.container-row/constants/index.js +5 -0
  78. package/src/ui.container-row/index.stories.js +81 -0
  79. package/src/ui.container-row/index.vue +45 -0
  80. package/src/ui.data-list/composables/attrs.composable.js +45 -0
  81. package/src/ui.data-list/configs/default.config.js +32 -0
  82. package/src/ui.data-list/constants/index.js +5 -0
  83. package/src/ui.data-list/index.stories.js +91 -0
  84. package/src/ui.data-list/index.vue +259 -0
  85. package/src/ui.data-table/Docs.mdx +16 -0
  86. package/src/ui.data-table/index.vue +5 -0
  87. package/src/ui.data-table-cell/configs/default.config.js +19 -0
  88. package/src/ui.dropdown-badge/Docs.mdx +16 -0
  89. package/src/ui.dropdown-badge/composables/attrs.composable.js +63 -0
  90. package/src/ui.dropdown-badge/configs/default.config.js +34 -0
  91. package/src/ui.dropdown-badge/constants/index.js +5 -0
  92. package/src/ui.dropdown-badge/index.stories.js +126 -0
  93. package/src/ui.dropdown-badge/index.vue +234 -0
  94. package/src/ui.dropdown-button/Docs.mdx +16 -0
  95. package/src/ui.dropdown-button/composables/attrs.composable.js +63 -0
  96. package/src/ui.dropdown-button/configs/default.config.js +37 -0
  97. package/src/ui.dropdown-button/constants/index.js +14 -0
  98. package/src/ui.dropdown-button/index.stories.js +158 -0
  99. package/src/ui.dropdown-button/index.vue +271 -0
  100. package/src/ui.dropdown-item/Docs.mdx +16 -0
  101. package/src/ui.dropdown-item/composables/attrs.composable.js +13 -0
  102. package/src/ui.dropdown-item/configs/default.config.js +16 -0
  103. package/src/ui.dropdown-item/index.stories.js +30 -0
  104. package/src/ui.dropdown-item/index.vue +53 -0
  105. package/src/ui.dropdown-link/Docs.mdx +16 -0
  106. package/src/ui.dropdown-link/composables/attrs.composable.js +65 -0
  107. package/src/ui.dropdown-link/configs/default.config.js +37 -0
  108. package/src/ui.dropdown-link/constants/index.js +5 -0
  109. package/src/ui.dropdown-link/index.stories.js +127 -0
  110. package/src/ui.dropdown-link/index.vue +261 -0
  111. package/src/ui.dropdown-list/Docs.mdx +16 -0
  112. package/src/ui.dropdown-list/composables/attrs.composable.js +93 -0
  113. package/src/ui.dropdown-list/composables/usePointer.js +77 -0
  114. package/src/ui.dropdown-list/configs/default.config.js +74 -0
  115. package/src/ui.dropdown-list/constants/index.js +5 -0
  116. package/src/ui.dropdown-list/index.stories.js +76 -0
  117. package/src/ui.dropdown-list/index.vue +284 -0
  118. package/src/ui.form-calendar/Docs.mdx +52 -0
  119. package/src/ui.form-calendar/components/DayView.vue +268 -0
  120. package/src/ui.form-calendar/components/MonthView.vue +114 -0
  121. package/src/ui.form-calendar/components/YearView.vue +118 -0
  122. package/src/ui.form-calendar/constants/index.js +71 -0
  123. package/src/ui.form-calendar/index.stories.js +59 -0
  124. package/src/ui.form-calendar/index.vue +743 -0
  125. package/src/ui.form-calendar/services/calendar.service.js +189 -0
  126. package/src/ui.form-calendar/services/formatting.service.js +180 -0
  127. package/src/ui.form-checkbox/Docs.mdx +16 -0
  128. package/src/ui.form-checkbox/configs/default.config.js +69 -0
  129. package/src/ui.form-checkbox/index.stories.js +147 -0
  130. package/src/ui.form-checkbox/index.vue +3 -2
  131. package/src/ui.form-checkbox-group/Docs.mdx +16 -0
  132. package/src/ui.form-checkbox-group/composables/attrs.composable.js +17 -0
  133. package/src/ui.form-checkbox-group/configs/default.config.js +5 -0
  134. package/src/ui.form-checkbox-group/constants/index.js +5 -0
  135. package/src/ui.form-checkbox-group/index.stories.js +45 -0
  136. package/src/ui.form-checkbox-group/index.vue +145 -0
  137. package/src/ui.form-checkbox-multi-state/Docs.mdx +16 -0
  138. package/src/ui.form-checkbox-multi-state/composables/attrs.composable.js +24 -0
  139. package/src/ui.form-checkbox-multi-state/configs/default.config.js +9 -0
  140. package/src/ui.form-checkbox-multi-state/constants/index.js +5 -0
  141. package/src/ui.form-checkbox-multi-state/index.stories.js +59 -0
  142. package/src/ui.form-checkbox-multi-state/index.vue +134 -0
  143. package/src/ui.form-color-picker/composables/attrs.composable.js +44 -0
  144. package/src/ui.form-color-picker/configs/default.config.js +52 -0
  145. package/src/ui.form-color-picker/constants/index.js +5 -0
  146. package/src/ui.form-color-picker/index.stories.js +63 -0
  147. package/src/ui.form-color-picker/index.vue +171 -0
  148. package/src/ui.form-date-picker/Docs.mdx +52 -0
  149. package/src/ui.form-date-picker/composables/attrs.composable.js +22 -0
  150. package/src/ui.form-date-picker/configs/default.config.js +26 -0
  151. package/src/ui.form-date-picker/constants/index.js +5 -0
  152. package/src/ui.form-date-picker/index.stories.js +132 -0
  153. package/src/ui.form-date-picker/index.vue +256 -0
  154. package/src/ui.form-date-picker-range/constants/index.js +23 -0
  155. package/src/ui.form-date-picker-range/index.stories.js +135 -0
  156. package/src/ui.form-date-picker-range/index.vue +937 -0
  157. package/src/ui.form-date-picker-range/services/dateRange.service.js +116 -0
  158. package/src/ui.form-input/Docs.mdx +16 -0
  159. package/src/ui.form-input/assets/fonts/text-security-disc.woff +0 -0
  160. package/src/ui.form-input/composables/attrs.composable.js +66 -0
  161. package/src/ui.form-input/configs/default.config.js +72 -0
  162. package/src/ui.form-input/constants/index.js +5 -0
  163. package/src/ui.form-input/index.stories.js +166 -0
  164. package/src/ui.form-input/index.vue +388 -0
  165. package/src/ui.form-input-file/composables/attrs.composable.js +82 -0
  166. package/src/ui.form-input-file/configs/default.config.js +59 -0
  167. package/src/ui.form-input-file/constants/index.js +5 -0
  168. package/src/ui.form-input-file/index.stories.js +86 -0
  169. package/src/ui.form-input-file/index.vue +387 -0
  170. package/src/ui.form-input-money/Docs.mdx +16 -0
  171. package/src/ui.form-input-money/composables/attrs.composable.js +13 -0
  172. package/src/ui.form-input-money/composables/useFormatCurrency.js +82 -0
  173. package/src/ui.form-input-money/configs/default.config.js +16 -0
  174. package/src/ui.form-input-money/constants/index.js +5 -0
  175. package/src/ui.form-input-money/index.stories.js +126 -0
  176. package/src/ui.form-input-money/index.vue +263 -0
  177. package/src/ui.form-input-money/services/format.service.js +72 -0
  178. package/src/ui.form-input-number/Docs.mdx +16 -0
  179. package/src/ui.form-input-number/composables/attrs.composable.js +47 -0
  180. package/src/ui.form-input-number/configs/default.config.js +33 -0
  181. package/src/ui.form-input-number/constants/index.js +5 -0
  182. package/src/ui.form-input-number/index.stories.js +103 -0
  183. package/src/ui.form-input-number/index.vue +162 -0
  184. package/src/ui.form-input-rating/composables/attrs.composable.js +34 -0
  185. package/src/ui.form-input-rating/constants/index.js +5 -0
  186. package/src/ui.form-input-rating/index.vue +1 -0
  187. package/src/ui.form-input-search/composables/attrs.composable.js +21 -0
  188. package/src/ui.form-input-search/configs/default.config.js +20 -0
  189. package/src/ui.form-input-search/constants/index.js +5 -0
  190. package/src/ui.form-input-search/index.stories.js +90 -0
  191. package/src/ui.form-input-search/index.vue +215 -0
  192. package/src/ui.form-label/Docs.mdx +16 -0
  193. package/src/ui.form-label/composables/attrs.composable.js +65 -0
  194. package/src/ui.form-label/configs/default.config.js +95 -0
  195. package/src/ui.form-label/constants/index.js +13 -0
  196. package/src/ui.form-label/index.stories.js +107 -0
  197. package/src/ui.form-label/index.vue +170 -0
  198. package/src/ui.form-radio/Docs.mdx +16 -0
  199. package/src/ui.form-radio/composables/attrs.composable.js +34 -0
  200. package/src/ui.form-radio/configs/default.config.js +47 -0
  201. package/src/ui.form-radio/constants/index.js +5 -0
  202. package/src/ui.form-radio/index.stories.js +71 -0
  203. package/src/ui.form-radio/index.vue +170 -0
  204. package/src/ui.form-radio-card/Docs.mdx +16 -0
  205. package/src/ui.form-radio-card/constants/index.js +5 -0
  206. package/src/ui.form-radio-card/index.stories.js +149 -0
  207. package/src/ui.form-radio-card/index.vue +1 -0
  208. package/src/ui.form-radio-card/services/variant.service.js +15 -0
  209. package/src/ui.form-radio-group/Docs.mdx +16 -0
  210. package/src/ui.form-radio-group/composables/attrs.composable.js +27 -0
  211. package/src/ui.form-radio-group/configs/default.config.js +18 -0
  212. package/src/ui.form-radio-group/constants/index.js +5 -0
  213. package/src/ui.form-radio-group/index.stories.js +42 -0
  214. package/src/ui.form-radio-group/index.vue +127 -0
  215. package/src/ui.form-select/Docs.mdx +16 -0
  216. package/src/ui.form-select/composables/attrs.composable.js +172 -0
  217. package/src/ui.form-select/configs/default.config.js +138 -0
  218. package/src/ui.form-select/constants/index.js +19 -0
  219. package/src/ui.form-select/index.stories.js +339 -0
  220. package/src/ui.form-select/index.vue +722 -0
  221. package/src/ui.form-select/services/select.service.js +98 -0
  222. package/src/ui.form-switch/composables/attrs.composable.js +77 -0
  223. package/src/ui.form-switch/configs/default.config.js +76 -0
  224. package/src/ui.form-switch/constants/index.js +5 -0
  225. package/src/ui.form-switch/index.stories.js +93 -0
  226. package/src/ui.form-switch/index.vue +199 -0
  227. package/src/ui.form-switch/services/variant.service.js +31 -0
  228. package/src/ui.form-textarea/Docs.mdx +16 -0
  229. package/src/ui.form-textarea/composables/attrs.composable.js +52 -0
  230. package/src/ui.form-textarea/configs/default.config.js +68 -0
  231. package/src/ui.form-textarea/constants/index.js +5 -0
  232. package/src/ui.form-textarea/index.stories.js +151 -0
  233. package/src/ui.form-textarea/index.vue +284 -0
  234. package/src/ui.image-avatar/composables/attrs.composable.js +34 -0
  235. package/src/ui.image-avatar/configs/default.config.js +42 -0
  236. package/src/ui.image-avatar/constants/index.js +5 -0
  237. package/src/ui.image-avatar/default-avatar.png +0 -0
  238. package/src/ui.image-avatar/index.stories.js +107 -0
  239. package/src/ui.image-avatar/index.vue +121 -0
  240. package/src/ui.image-icon/Docs.mdx +16 -0
  241. package/src/ui.image-icon/index.stories.js +110 -0
  242. package/src/ui.image-logo/configs/default.config.js +38 -0
  243. package/src/ui.image-logo/index.stories.js +84 -0
  244. package/src/ui.loader-top/components/TopProgress.vue +277 -0
  245. package/src/ui.navigation-pagination/composables/attrs.composable.js +41 -0
  246. package/src/ui.navigation-pagination/configs/default.config.js +24 -0
  247. package/src/ui.navigation-pagination/constants/index.js +8 -0
  248. package/src/ui.navigation-pagination/index.stories.js +52 -0
  249. package/src/ui.navigation-pagination/index.vue +276 -0
  250. package/src/ui.navigation-stepper/composables/attrs.composable.js +25 -0
  251. package/src/ui.navigation-stepper/configs/default.config.js +13 -0
  252. package/src/ui.navigation-stepper/constants/index.js +5 -0
  253. package/src/ui.navigation-stepper/index.stories.js +30 -0
  254. package/src/ui.navigation-stepper/index.vue +126 -0
  255. package/src/ui.navigation-tab/composables/attrs.composable.js +30 -0
  256. package/src/ui.navigation-tab/configs/default.config.js +22 -0
  257. package/src/ui.navigation-tab/constants/index.js +5 -0
  258. package/src/ui.navigation-tab/index.stories.js +57 -0
  259. package/src/ui.navigation-tab/index.vue +85 -0
  260. package/src/ui.navigation-tabs/composables/attrs.composable.js +24 -0
  261. package/src/ui.navigation-tabs/configs/default.config.js +14 -0
  262. package/src/ui.navigation-tabs/constants/index.js +5 -0
  263. package/src/ui.navigation-tabs/index.stories.js +69 -0
  264. package/src/ui.navigation-tabs/index.vue +99 -0
  265. package/src/ui.notify/index.stories.js +102 -0
  266. package/src/ui.other-dot/composables/attrs.composable.js +32 -0
  267. package/src/ui.other-dot/configs/default.config.js +21 -0
  268. package/src/ui.other-dot/constants/index.js +5 -0
  269. package/src/ui.other-dot/index.stories.js +77 -0
  270. package/src/ui.other-dot/index.vue +52 -0
  271. package/src/ui.other-loader/composables/attrs.composable.js +51 -0
  272. package/src/ui.other-loader/configs/default.config.js +47 -0
  273. package/src/ui.other-loader/constants/index.js +5 -0
  274. package/src/ui.other-loader/index.stories.js +78 -0
  275. package/src/ui.other-loader/index.vue +136 -0
  276. package/src/ui.text-alert/composables/attrs.composable.js +48 -0
  277. package/src/ui.text-alert/configs/default.config.js +51 -0
  278. package/src/ui.text-alert/constatns/index.js +5 -0
  279. package/src/ui.text-alert/index.stories.js +157 -0
  280. package/src/ui.text-alert/index.vue +122 -0
  281. package/src/ui.text-badge/Docs.mdx +16 -0
  282. package/src/ui.text-badge/composables/attrs.composable.js +49 -0
  283. package/src/ui.text-badge/configs/default.config.js +51 -0
  284. package/src/ui.text-badge/constants/index.js +5 -0
  285. package/src/ui.text-badge/index.stories.js +190 -0
  286. package/src/ui.text-badge/index.vue +120 -0
  287. package/src/ui.text-block/composables/attrs.composable.js +31 -0
  288. package/src/ui.text-block/configs/default.config.js +35 -0
  289. package/src/ui.text-block/constatns/index.js +5 -0
  290. package/src/ui.text-block/index.stories.js +112 -0
  291. package/src/ui.text-block/index.vue +76 -0
  292. package/src/ui.text-empty/Docs.mdx +16 -0
  293. package/src/ui.text-empty/configs/default.config.js +30 -0
  294. package/src/ui.text-empty/index.stories.js +106 -0
  295. package/src/ui.text-empty/index.vue +1 -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
  319. package/vite.config.mjs +5 -4
  320. package/web-types.json +1 -1
  321. package/.web-types-gen/package.json +0 -3
@@ -0,0 +1,275 @@
1
+ <template>
2
+ <div :data-cy="dataCy" v-bind="wrapperAttrs">
3
+ <div v-bind="pageAttrs">
4
+ <div v-if="isShownHeader" v-bind="headerAttrs">
5
+ <div v-bind="headerLeftAttrs">
6
+ <!-- @slot Use it to add something before left side of the header. -->
7
+ <slot name="header-left-before" />
8
+
9
+ <!-- @slot Use it to customise left side of the header. -->
10
+ <slot name="header-left">
11
+ <div v-bind="headerLeftFallbackAttrs">
12
+ <ULink
13
+ v-if="isShownArrowButton"
14
+ size="xs"
15
+ color="gray"
16
+ :route="backRoute"
17
+ v-bind="backLinkAttrs"
18
+ >
19
+ <UIcon
20
+ :name="config.backLinkIconName"
21
+ size="xs"
22
+ color="gray"
23
+ v-bind="backLinkIconAttrs"
24
+ />
25
+ {{ backRoute.title }}
26
+ </ULink>
27
+
28
+ <UHeader :label="title" :size="titleSize" v-bind="titleAttrs" />
29
+ <div v-if="description" v-bind="descriptionAttrs" v-text="description" />
30
+ </div>
31
+ </slot>
32
+
33
+ <!-- @slot Use it to add something after left side of the header. -->
34
+ <slot name="header-left-after" />
35
+ </div>
36
+
37
+ <div v-bind="headerRightAttrs">
38
+ <!-- @slot Use it to customise right side of the header. -->
39
+ <slot name="header-right" />
40
+ </div>
41
+ </div>
42
+
43
+ <div>
44
+ <!-- @slot Use it to add main content. -->
45
+ <slot />
46
+ </div>
47
+
48
+ <div v-if="isShownFooterSlot" class="vueless-page-footer" v-bind="footerAttrs">
49
+ <div class="vueless-page-footer-left" v-bind="footerLeftAttrs">
50
+ <!-- @slot Use it to add something to the left side of the footer. -->
51
+ <slot name="footer-left" />
52
+ </div>
53
+
54
+ <div class="vueless-page-footer-right" v-bind="footerRightAttrs">
55
+ <!-- @slot Use it to add something to the right side of the footer. -->
56
+ <slot name="footer-right" />
57
+ </div>
58
+ </div>
59
+ </div>
60
+
61
+ <div v-if="fixedRounding && !isMobileDevice" v-bind="rightRoundingWrapperAttrs">
62
+ <div v-bind="rightRoundingAttrs" />
63
+ </div>
64
+ </div>
65
+ </template>
66
+
67
+ <script setup>
68
+ import { computed, useSlots, onMounted } from "vue";
69
+ import { useStore } from "vuex";
70
+
71
+ import ULink from "../ui.button-link/index.vue";
72
+ import UIcon from "../ui.image-icon/index.vue";
73
+ import UHeader from "../ui.text-header/index.vue";
74
+
75
+ import UIService from "../service.ui";
76
+
77
+ import defaultConfig from "./configs/default.config";
78
+ import { UPage } from "./constants";
79
+ import { useAttrs } from "./composables/attrs.composable";
80
+
81
+ const slots = useSlots();
82
+ const store = useStore();
83
+
84
+ /* Should be a string for correct web-types gen */
85
+ defineOptions({ name: "UPage", inheritAttrs: false });
86
+
87
+ const props = defineProps({
88
+ /**
89
+ * The width of the page.
90
+ * @values xs, sm, md, lg, xl, 2xl, 3xl, 4xl, 5xl, wide
91
+ */
92
+ width: {
93
+ type: String,
94
+ default: UIService.get(defaultConfig, UPage).default.width,
95
+ },
96
+
97
+ /**
98
+ * Set page title.
99
+ */
100
+ title: {
101
+ type: String,
102
+ default: "",
103
+ },
104
+
105
+ /**
106
+ * Set page title size.
107
+ * @values xs, sm, md, lg, xl, 2xl
108
+ */
109
+ titleSize: {
110
+ type: String,
111
+ default: UIService.get(defaultConfig, UPage).default.titleSize,
112
+ },
113
+
114
+ /**
115
+ * Set page description.
116
+ */
117
+ description: {
118
+ type: String,
119
+ default: "",
120
+ },
121
+
122
+ /**
123
+ * Set Vue router route params for back arrow.
124
+ */
125
+ backRoute: {
126
+ type: Object,
127
+ default: () => ({}),
128
+ },
129
+
130
+ /**
131
+ * Set gray background color.
132
+ */
133
+ gray: {
134
+ type: Boolean,
135
+ default: UIService.get(defaultConfig, UPage).default.gray,
136
+ },
137
+
138
+ /**
139
+ * Reverse left and right footer blocks (in a mobile version only).
140
+ */
141
+ mobileFooterReverse: {
142
+ type: Boolean,
143
+ default: UIService.get(defaultConfig, UPage).default.mobileFooterReverse,
144
+ },
145
+
146
+ /**
147
+ * Stick right page rounding.
148
+ */
149
+ fixedRounding: {
150
+ type: Boolean,
151
+ default: UIService.get(defaultConfig, UPage).default.fixedRounding,
152
+ },
153
+
154
+ /**
155
+ * Sets component ui config object.
156
+ */
157
+ config: {
158
+ type: Object,
159
+ default: () => ({}),
160
+ },
161
+
162
+ /**
163
+ * Sets data-cy attribute for automated testing.
164
+ */
165
+ dataCy: {
166
+ type: String,
167
+ default: "",
168
+ },
169
+ });
170
+
171
+ const isMobileDevice = computed(() => {
172
+ return store.getters["breakpoint/isMobileDevice"];
173
+ });
174
+
175
+ const {
176
+ config,
177
+ wrapperAttrs,
178
+ pageAttrs,
179
+ rightRoundingAttrs,
180
+ titleAttrs,
181
+ backLinkAttrs,
182
+ backLinkIconAttrs,
183
+ headerAttrs,
184
+ headerLeftFallbackAttrs,
185
+ descriptionAttrs,
186
+ headerLeftAttrs,
187
+ headerRightAttrs,
188
+ footerAttrs,
189
+ footerLeftAttrs,
190
+ footerRightAttrs,
191
+ rightRoundingWrapperAttrs,
192
+ hasSlotContent,
193
+ } = useAttrs(props, { isMobileDevice });
194
+
195
+ const isShownHeader = computed(() => {
196
+ const isHeaderLeftSlot = hasSlotContent(slots["header-left"]);
197
+ const isHeaderRightSlot = hasSlotContent(slots["header-left"]);
198
+
199
+ return props.title || isHeaderLeftSlot || isHeaderRightSlot;
200
+ });
201
+
202
+ const isShownFooterSlot = computed(() => {
203
+ return hasSlotContent(slots["footer-left"]) || hasSlotContent(slots["footer-right"]);
204
+ });
205
+
206
+ const isShownArrowButton = computed(() => {
207
+ return Boolean(Object.keys(props.backRoute).length);
208
+ });
209
+
210
+ onMounted(() => {
211
+ const classes = props.gray
212
+ ? config.value.htmlBody.split(" ").filter((item) => Boolean(item))
213
+ : "";
214
+
215
+ document.querySelector("body").classList.add(...classes);
216
+ });
217
+ </script>
218
+
219
+ <style lang="postcss" scoped>
220
+ /**
221
+ * TODO: Move this styles to global vueless config using tailwind group class and remove footer classes
222
+ */
223
+ .vueless-page {
224
+ &-footer {
225
+ &-left:deep(.vueless-dropdown-button) {
226
+ @apply !block;
227
+ }
228
+
229
+ &-right,
230
+ &-left {
231
+ :deep(.vueless-dropdown-button) {
232
+ .dropdown-block,
233
+ .vueless-dropdown-button-list {
234
+ @apply max-md:w-full;
235
+ }
236
+
237
+ .vueless-dropdown-item {
238
+ @apply max-md:text-center;
239
+ }
240
+
241
+ .dropdown-list {
242
+ @apply mb-[calc(theme("spacing.mobile-menu-height")+3rem)];
243
+ }
244
+ }
245
+
246
+ &:deep(.vueless-dropdown-tag, .vueless-dropdown-link, .vueless-dropdown-button) {
247
+ @apply w-full md:w-auto;
248
+
249
+ .dropdown-list {
250
+ }
251
+
252
+ .dropdown-wrapper-list {
253
+ @apply mb-2 md:mb-0;
254
+ }
255
+
256
+ .dropdown-block {
257
+ @apply relative md:absolute;
258
+ }
259
+
260
+ .dropdown-list-right {
261
+ @apply w-full text-center;
262
+ }
263
+
264
+ .dropdown-wrapper {
265
+ @apply block w-full;
266
+
267
+ .vueless-svg-icon {
268
+ @apply right-auto;
269
+ }
270
+ }
271
+ }
272
+ }
273
+ }
274
+ }
275
+ </style>
@@ -0,0 +1,16 @@
1
+ import { Meta, Title, Subtitle, Description, Primary, Controls, Stories, Source } 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 />
@@ -0,0 +1,23 @@
1
+ import useUI from "../../composable.ui";
2
+ import defaultConfig from "../configs/default.config";
3
+ import { cva } from "../../service.ui";
4
+ import { computed } from "vue";
5
+
6
+ export function useAttrs(props) {
7
+ const { config, getAttrs } = useUI(defaultConfig, () => props.config);
8
+ const { wrapper } = config.value;
9
+
10
+ const cvaWrapper = cva({
11
+ base: wrapper.base,
12
+ variants: wrapper.variants,
13
+ compoundVariants: wrapper.compoundVariants,
14
+ });
15
+
16
+ const wrapperClasses = computed(() => cvaWrapper({ noMobile: props.noMobile }));
17
+
18
+ const wrapperAttrs = getAttrs("wrapper", { classes: wrapperClasses });
19
+
20
+ return {
21
+ wrapperAttrs,
22
+ };
23
+ }
@@ -0,0 +1,14 @@
1
+ export default /*tw*/ {
2
+ wrapper: {
3
+ base: "flex items-start w-full",
4
+ variants: {
5
+ noMobile: {
6
+ true: "flex-row space-x-4",
7
+ false: "flex-col md:flex-row space-y-4 md:space-y-0 md:space-x-4",
8
+ },
9
+ },
10
+ },
11
+ defaultVariants: {
12
+ noMobile: false,
13
+ },
14
+ };
@@ -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 URow = "URow";
@@ -0,0 +1,81 @@
1
+ import { getArgTypes } from "../service.storybook";
2
+
3
+ import URow from "../ui.container-row";
4
+ import UInput from "../ui.form-input";
5
+
6
+ export default {
7
+ id: "5020",
8
+ title: "Containers / Row",
9
+ component: URow,
10
+ argTypes: {
11
+ ...getArgTypes(URow.name),
12
+ },
13
+ };
14
+
15
+ const DefaultTemplate = (args) => ({
16
+ components: { URow, UInput },
17
+ setup() {
18
+ return { args };
19
+ },
20
+ template: `
21
+ <URow v-bind="args">
22
+ ${args.slotTemplate}
23
+ </URow>
24
+ `,
25
+ });
26
+
27
+ export const Default = DefaultTemplate.bind({});
28
+ Default.args = {
29
+ slotTemplate: `
30
+ <UInput label="Name" />
31
+ <UInput label="Lastname" />
32
+ `,
33
+ };
34
+
35
+ export const noMobile = DefaultTemplate.bind({});
36
+ noMobile.args = {
37
+ noMobile: true,
38
+ slotTemplate: `
39
+ <UInput label="Name" />
40
+ <UInput label="Lastname" />
41
+ `,
42
+ };
43
+
44
+ export const nestedRows = DefaultTemplate.bind({});
45
+ nestedRows.args = {
46
+ slotTemplate: `
47
+ <UInput label="Name" />
48
+
49
+ <URow>
50
+ <UInput label="Lastname" />
51
+ <UInput label="Age"/>
52
+ </URow>
53
+ `,
54
+ };
55
+
56
+ export const textBlocks = DefaultTemplate.bind({});
57
+ textBlocks.args = {
58
+ slotTemplate: `
59
+ <p>
60
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit,
61
+ sed do eiusmod tempor incididunt ut labore et dolore magna
62
+ aliqua. Ut enim ad minim veniam, quis nostrud exercitation
63
+ ullamco laboris nisi ut aliquip ex ea commodo consequat.
64
+ Duis aute irure dolor in reprehenderit in voluptate velit
65
+ esse cillum dolore eu fugiat nulla pariatur. Excepteur sint
66
+ occaecat cupidatat non proident, sunt in culpa qui officia
67
+ deserunt mollit anim id est laborum.
68
+ </p>
69
+
70
+ <p>
71
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit,
72
+ sed do eiusmod tempor incididunt ut labore et dolore magna
73
+ aliqua. Ut enim ad minim veniam, quis nostrud exercitation
74
+ ullamco laboris nisi ut aliquip ex ea commodo consequat.
75
+ Duis aute irure dolor in reprehenderit in voluptate velit
76
+ esse cillum dolore eu fugiat nulla pariatur. Excepteur sint
77
+ occaecat cupidatat non proident, sunt in culpa qui officia
78
+ deserunt mollit anim id est laborum.
79
+ </p>
80
+ `,
81
+ };
@@ -0,0 +1,45 @@
1
+ <template>
2
+ <div :data-cy="dataCy" v-bind="wrapperAttrs">
3
+ <!-- @slot Use it to add something inside. -->
4
+ <slot />
5
+ </div>
6
+ </template>
7
+
8
+ <script setup>
9
+ import UIService from "../service.ui";
10
+
11
+ import { URow } from "./constants";
12
+ import defaultConfig from "./configs/default.config";
13
+ import { useAttrs } from "./composables/attrs.composable";
14
+
15
+ /* Should be a string for correct web-types gen */
16
+ defineOptions({ name: "URow", inheritAttrs: false });
17
+
18
+ const props = defineProps({
19
+ /**
20
+ * Disables mobile adaptivity.
21
+ */
22
+ noMobile: {
23
+ type: Boolean,
24
+ default: UIService.get(defaultConfig, URow).default.noMobile,
25
+ },
26
+
27
+ /**
28
+ * Sets component ui config object.
29
+ */
30
+ config: {
31
+ type: Object,
32
+ default: () => ({}),
33
+ },
34
+
35
+ /**
36
+ * Sets data-cy attribute for automated testing.
37
+ */
38
+ dataCy: {
39
+ type: String,
40
+ default: "",
41
+ },
42
+ });
43
+
44
+ const { wrapperAttrs } = useAttrs(props);
45
+ </script>
@@ -0,0 +1,45 @@
1
+ import useUI from "../../composable.ui";
2
+ import defaultConfig from "../configs/default.config";
3
+ import { computed } from "vue";
4
+ import { cx } from "../../service.ui";
5
+
6
+ export function useAttrs(props) {
7
+ const { config, getAttrs, hasSlotContent } = useUI(defaultConfig, () => props.config);
8
+ const { titleCrossed } = config.value;
9
+
10
+ const wrapperAttrs = getAttrs("wrapper");
11
+ const dividerAttrs = getAttrs("divider", { isComponent: true });
12
+ const emptyAttrs = getAttrs("empty", { isComponent: true });
13
+ const draggableAttrs = getAttrs("draggable");
14
+ const itemWrapperAttrs = getAttrs("itemWrapper");
15
+ const itemAttrs = getAttrs("item");
16
+ const customActionsAttrs = getAttrs("customActions");
17
+ const iconDeleteAttrs = getAttrs("iconDelete", { isComponent: true });
18
+ const iconEditAttrs = getAttrs("iconEdit", { isComponent: true });
19
+ const iconDragAttrs = getAttrs("iconDrag", { isComponent: true });
20
+ const nestedAttrs = getAttrs("nested", { isComponent: true });
21
+
22
+ const titleRaw = getAttrs("title");
23
+
24
+ const titleAttrs = computed(() => (isActive) => ({
25
+ ...titleRaw,
26
+ class: cx([titleRaw.value.class, isActive !== undefined && !isActive ? titleCrossed : ""]),
27
+ }));
28
+
29
+ return {
30
+ config,
31
+ wrapperAttrs,
32
+ dividerAttrs,
33
+ emptyAttrs,
34
+ draggableAttrs,
35
+ nestedAttrs,
36
+ itemWrapperAttrs,
37
+ itemAttrs,
38
+ iconDragAttrs,
39
+ titleAttrs,
40
+ customActionsAttrs,
41
+ iconDeleteAttrs,
42
+ iconEditAttrs,
43
+ hasSlotContent,
44
+ };
45
+ }
@@ -0,0 +1,32 @@
1
+ export default /*tw*/ {
2
+ wrapper: "",
3
+ draggable: "",
4
+ draggableDrag: "bg-gray-100",
5
+ draggableGhost: "bg-opacity-50",
6
+ itemWrapper: "group/item-wrapper",
7
+ item: `
8
+ group/item
9
+ border-b border-gray-100
10
+ group-last/item-wrapper:border-b-0 group-[]/nested:group-last/item-wrapper:border-b
11
+ py-4 space-x-4 flex flex-auto items-center justify-between
12
+ `,
13
+ iconDrag: "icon-drag cursor-move opacity-100 fill-gray-400 md:fill-gray-500",
14
+ iconDragName: "drag_indicator",
15
+ title: "text-base font-normal text-gray-900 flex-auto pt-px",
16
+ titleCrossed: "line-through",
17
+ customActions: `
18
+ space-x-5 opacity-50 md:flex md:items-center md:opacity-0
19
+ group-hover/item:md:block group-hover/item:opacity-100
20
+ `,
21
+ iconDelete: "hidden md:block md:opacity-0 group-hover/item:md:opacity-100",
22
+ iconDeleteName: "delete",
23
+ iconEdit: "fill-gray-500 opacity-50",
24
+ iconEditName: "edit_note",
25
+ nested: "group/nested ml-6",
26
+ defaultVariants: {
27
+ animationDuration: 200,
28
+ nesting: false,
29
+ upperlined: false,
30
+ hideEmptyStateForNesting: false,
31
+ },
32
+ };
@@ -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 UDataListName = "UDataList";
@@ -0,0 +1,91 @@
1
+ import { getArgTypes, getSlotNames } from "../service.storybook";
2
+
3
+ import UDataList from "../ui.data-list";
4
+ import UIcon from "../ui.image-icon";
5
+
6
+ export default {
7
+ id: "7020",
8
+ title: "Data / Data List",
9
+ component: UDataList,
10
+ args: {
11
+ list: [
12
+ {
13
+ name: "name 1",
14
+ id: 1,
15
+ children: [
16
+ { name: "name 1.1", id: 1.1 },
17
+ { name: "name 1.2", id: 1.2 },
18
+ { name: "name 1.3", id: 1.3 },
19
+ ],
20
+ },
21
+ {
22
+ name: "name 2",
23
+ id: 2,
24
+ children: [
25
+ { name: "name 2.1", id: 2.1 },
26
+ { name: "name 2.2", id: 2.2 },
27
+ ],
28
+ },
29
+ {
30
+ name: "name 3",
31
+ id: 3,
32
+ },
33
+ ],
34
+ },
35
+ argTypes: {
36
+ ...getArgTypes(UDataList.name),
37
+ },
38
+ };
39
+
40
+ const DefaultTemplate = (args) => ({
41
+ components: { UDataList },
42
+ setup() {
43
+ const slots = getSlotNames(UDataList.name);
44
+
45
+ return { args, slots };
46
+ },
47
+ template: `
48
+ <UDataList v-bind="args" @dragSort="onDragSort"/>
49
+ `,
50
+ methods: {
51
+ onDragSort(value) {
52
+ this.list = value;
53
+ },
54
+ },
55
+ });
56
+
57
+ const SlotTemplate = (args) => ({
58
+ components: { UDataList, UIcon },
59
+ setup() {
60
+ return { args };
61
+ },
62
+ template: `
63
+ <UDataList v-bind="args" @dragSort="onDragSort">
64
+ ${args.slotTemplate}
65
+ </UDataList>
66
+ `,
67
+ methods: {
68
+ onDragSort(value) {
69
+ this.list = value;
70
+ },
71
+ },
72
+ });
73
+
74
+ export const Default = DefaultTemplate.bind({});
75
+ Default.args = {};
76
+
77
+ export const nesting = DefaultTemplate.bind({});
78
+ nesting.args = { nesting: true };
79
+
80
+ export const slotIcons = SlotTemplate.bind({});
81
+ slotIcons.args = {
82
+ slotTemplate: `
83
+ <template #icons>
84
+ <UIcon
85
+ name="star"
86
+ color="red"
87
+ size="md"
88
+ />
89
+ </template>
90
+ `,
91
+ };