vueless 0.0.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (436) hide show
  1. package/_readme/README.md +5 -75
  2. package/_readme/UNotify.md +1 -1
  3. package/_readme/UTopLoader.md +2 -2
  4. package/_readme/customization.md +347 -0
  5. package/_readme/installation.md +139 -0
  6. package/_readme/storybook-pages/Customisation.mdx +6 -0
  7. package/_readme/storybook-pages/Installation.mdx +7 -0
  8. package/composable.ui/index.js +341 -30
  9. package/library.vue-tailwind-3/index.js +0 -5
  10. package/library.web-types-gen/lib/build.js +35 -9
  11. package/library.web-types-gen/lib/config.js +10 -4
  12. package/package.json +37 -4
  13. package/plugin.vite/index.js +59 -0
  14. package/plugin.vite/services/iconResolver.service.js +291 -0
  15. package/plugin.vite/services/svgLoader.service.js +76 -0
  16. package/plugin.vite/services/tailwindSafelist.service.js +197 -0
  17. package/plugin.vite/services/unpluginComponentsResolver.js +172 -0
  18. package/service.storybook/index.js +53 -80
  19. package/service.tailwind/index.js +112 -0
  20. package/service.ui/index.js +69 -50
  21. package/ui.button/Docs.mdx +16 -0
  22. package/ui.button/composables/attrs.composable.js +41 -0
  23. package/ui.button/configs/default.config.js +164 -0
  24. package/ui.button/constants/index.js +5 -0
  25. package/ui.button/index.stories.js +8 -7
  26. package/ui.button/index.vue +116 -981
  27. package/ui.button-link/Docs.mdx +16 -0
  28. package/ui.button-link/composables/attrs.composable.js +99 -0
  29. package/ui.button-link/configs/default.config.js +80 -0
  30. package/ui.button-link/constants/index.js +5 -0
  31. package/ui.button-link/index.stories.js +56 -19
  32. package/ui.button-link/index.vue +178 -493
  33. package/ui.button-toggle/Docs.mdx +16 -0
  34. package/ui.button-toggle/composables/attrs.composable.js +16 -0
  35. package/ui.button-toggle/configs/default.config.js +12 -0
  36. package/ui.button-toggle/constants/index.js +7 -0
  37. package/{ui.button-group → ui.button-toggle}/index.stories.js +79 -28
  38. package/ui.button-toggle/index.vue +128 -0
  39. package/ui.button-toggle-item/Docs.mdx +16 -0
  40. package/ui.button-toggle-item/composables/attrs.composable.js +53 -0
  41. package/ui.button-toggle-item/configs/default.config.js +58 -0
  42. package/ui.button-toggle-item/constants/index.js +5 -0
  43. package/{ui.button-group-item → ui.button-toggle-item}/index.stories.js +16 -13
  44. package/ui.button-toggle-item/index.vue +147 -0
  45. package/ui.container-accordion/composables/attrs.composable.js +45 -0
  46. package/ui.container-accordion/configs/default.config.js +32 -0
  47. package/ui.container-accordion/constants/index.js +5 -0
  48. package/ui.container-accordion/index.stories.js +3 -2
  49. package/ui.container-accordion/index.vue +71 -143
  50. package/ui.container-card/Docs.mdx +16 -0
  51. package/ui.container-card/composable/attrs.composable.js +56 -0
  52. package/ui.container-card/configs/default.config.js +31 -0
  53. package/ui.container-card/constants/index.js +5 -0
  54. package/ui.container-card/index.stories.js +51 -9
  55. package/ui.container-card/index.vue +108 -169
  56. package/ui.container-divider/Docs.mdx +16 -0
  57. package/ui.container-divider/composables/attrs.composable.js +65 -0
  58. package/ui.container-divider/configs/default.config.js +79 -0
  59. package/ui.container-divider/constants/index.js +5 -0
  60. package/ui.container-divider/index.stories.js +41 -8
  61. package/ui.container-divider/index.vue +126 -189
  62. package/ui.container-group/Docs.mdx +16 -0
  63. package/ui.container-group/composables/attrs.composable.js +44 -0
  64. package/ui.container-group/configs/default.config.js +29 -0
  65. package/ui.container-group/constants/index.js +5 -0
  66. package/ui.container-group/index.stories.js +7 -6
  67. package/ui.container-group/index.vue +76 -142
  68. package/ui.container-groups/Docs.mdx +16 -0
  69. package/ui.container-groups/composables/attrs.composable.js +12 -0
  70. package/ui.container-groups/configs/default.config.js +3 -0
  71. package/ui.container-groups/index.stories.js +4 -3
  72. package/ui.container-groups/index.vue +26 -11
  73. package/ui.container-modal/Docs.mdx +16 -0
  74. package/ui.container-modal/composables/attrs.composable.js +90 -0
  75. package/ui.container-modal/configs/default.config.js +69 -0
  76. package/ui.container-modal/constants/index.js +5 -0
  77. package/ui.container-modal/index.stories.js +8 -7
  78. package/ui.container-modal/index.vue +289 -370
  79. package/ui.container-modal-confirm/Docs.mdx +16 -0
  80. package/ui.container-modal-confirm/composable/attrs.composable.js +19 -0
  81. package/ui.container-modal-confirm/configs/default.config.js +12 -0
  82. package/ui.container-modal-confirm/constants/index.js +5 -0
  83. package/ui.container-modal-confirm/index.stories.js +66 -7
  84. package/ui.container-modal-confirm/index.vue +126 -116
  85. package/ui.container-page/Docs.mdx +16 -0
  86. package/ui.container-page/composables/attrs.composable.js +96 -0
  87. package/ui.container-page/configs/default.config.js +71 -0
  88. package/ui.container-page/constants/index.js +5 -0
  89. package/ui.container-page/index.stories.js +7 -34
  90. package/ui.container-page/index.vue +193 -408
  91. package/ui.container-row/Docs.mdx +16 -0
  92. package/ui.container-row/composables/attrs.composable.js +23 -0
  93. package/ui.container-row/configs/default.config.js +14 -0
  94. package/ui.container-row/constants/index.js +5 -0
  95. package/ui.container-row/index.stories.js +10 -0
  96. package/ui.container-row/index.vue +32 -39
  97. package/ui.data-list/composables/attrs.composable.js +45 -0
  98. package/ui.data-list/configs/default.config.js +32 -0
  99. package/ui.data-list/constants/index.js +5 -0
  100. package/ui.data-list/index.stories.js +1 -0
  101. package/ui.data-list/index.vue +156 -265
  102. package/ui.data-table/Docs.mdx +16 -0
  103. package/ui.data-table/composables/attrs.composable.js +188 -0
  104. package/ui.data-table/configs/default.config.js +82 -0
  105. package/ui.data-table/constants/index.js +5 -0
  106. package/ui.data-table/index.stories.js +73 -43
  107. package/ui.data-table/index.vue +600 -961
  108. package/ui.data-table/services/table.service.js +15 -0
  109. package/ui.data-table-cell/composables/attrs.composable.js +24 -0
  110. package/ui.data-table-cell/configs/default.config.js +19 -0
  111. package/ui.data-table-cell/constants/index.js +5 -0
  112. package/ui.data-table-cell/index.vue +44 -0
  113. package/ui.dropdown-badge/Docs.mdx +16 -0
  114. package/ui.dropdown-badge/composables/attrs.composable.js +63 -0
  115. package/ui.dropdown-badge/configs/default.config.js +34 -0
  116. package/ui.dropdown-badge/constants/index.js +5 -0
  117. package/{ui.dropdown-tag → ui.dropdown-badge}/index.stories.js +26 -25
  118. package/ui.dropdown-badge/index.vue +233 -0
  119. package/ui.dropdown-button/Docs.mdx +16 -0
  120. package/ui.dropdown-button/composables/attrs.composable.js +63 -0
  121. package/ui.dropdown-button/configs/default.config.js +37 -0
  122. package/ui.dropdown-button/constants/index.js +14 -0
  123. package/ui.dropdown-button/index.stories.js +12 -11
  124. package/ui.dropdown-button/index.vue +231 -291
  125. package/ui.dropdown-item/Docs.mdx +16 -0
  126. package/ui.dropdown-item/composables/attrs.composable.js +13 -0
  127. package/ui.dropdown-item/configs/default.config.js +16 -0
  128. package/ui.dropdown-item/index.stories.js +2 -1
  129. package/ui.dropdown-item/index.vue +38 -55
  130. package/ui.dropdown-link/Docs.mdx +16 -0
  131. package/ui.dropdown-link/composables/attrs.composable.js +65 -0
  132. package/ui.dropdown-link/configs/default.config.js +37 -0
  133. package/ui.dropdown-link/constants/index.js +5 -0
  134. package/ui.dropdown-link/index.stories.js +11 -11
  135. package/ui.dropdown-link/index.vue +217 -287
  136. package/ui.dropdown-list/Docs.mdx +16 -0
  137. package/ui.dropdown-list/composables/attrs.composable.js +91 -0
  138. package/ui.dropdown-list/composables/usePointer.js +77 -0
  139. package/ui.dropdown-list/configs/default.config.js +68 -0
  140. package/ui.dropdown-list/constants/index.js +5 -0
  141. package/ui.dropdown-list/index.stories.js +33 -3
  142. package/ui.dropdown-list/index.vue +271 -112
  143. package/ui.form-calendar/Docs.mdx +52 -0
  144. package/ui.form-calendar/components/DayView.vue +230 -0
  145. package/ui.form-calendar/components/MonthView.vue +114 -0
  146. package/ui.form-calendar/components/YearView.vue +118 -0
  147. package/ui.form-calendar/composables/attrs.composable.js +87 -0
  148. package/ui.form-calendar/configs/default.config.js +115 -0
  149. package/ui.form-calendar/constants/index.js +69 -0
  150. package/ui.form-calendar/index.stories.js +50 -0
  151. package/ui.form-calendar/index.vue +628 -0
  152. package/ui.form-calendar/services/calendar.service.js +201 -0
  153. package/ui.form-calendar/services/date.service.js +121 -0
  154. package/ui.form-calendar/services/formatting.service.js +180 -0
  155. package/ui.form-checkbox/Docs.mdx +16 -0
  156. package/ui.form-checkbox/composables/attrs.composable.js +57 -0
  157. package/ui.form-checkbox/configs/default.config.js +69 -0
  158. package/ui.form-checkbox/constants/index.js +5 -0
  159. package/ui.form-checkbox/index.stories.js +75 -26
  160. package/ui.form-checkbox/index.vue +201 -261
  161. package/ui.form-checkbox-group/Docs.mdx +16 -0
  162. package/ui.form-checkbox-group/composables/attrs.composable.js +17 -0
  163. package/ui.form-checkbox-group/configs/default.config.js +5 -0
  164. package/ui.form-checkbox-group/constants/index.js +5 -0
  165. package/ui.form-checkbox-group/index.stories.js +7 -1
  166. package/ui.form-checkbox-group/index.vue +104 -177
  167. package/ui.form-checkbox-multi-state/Docs.mdx +16 -0
  168. package/ui.form-checkbox-multi-state/composables/attrs.composable.js +24 -0
  169. package/ui.form-checkbox-multi-state/configs/default.config.js +9 -0
  170. package/ui.form-checkbox-multi-state/constants/index.js +5 -0
  171. package/ui.form-checkbox-multi-state/index.stories.js +8 -11
  172. package/ui.form-checkbox-multi-state/index.vue +109 -220
  173. package/ui.form-color-picker/composables/attrs.composable.js +44 -0
  174. package/ui.form-color-picker/configs/default.config.js +52 -0
  175. package/ui.form-color-picker/constants/index.js +5 -0
  176. package/ui.form-color-picker/index.stories.js +63 -0
  177. package/ui.form-color-picker/index.vue +147 -329
  178. package/ui.form-date-picker/Docs.mdx +52 -0
  179. package/ui.form-date-picker/composables/attrs.composable.js +22 -0
  180. package/ui.form-date-picker/configs/default.config.js +27 -0
  181. package/ui.form-date-picker/constants/index.js +5 -0
  182. package/ui.form-date-picker/index.stories.js +21 -8
  183. package/ui.form-date-picker/index.vue +205 -802
  184. package/ui.form-input/Docs.mdx +16 -0
  185. package/ui.form-input/composables/attrs.composable.js +66 -0
  186. package/ui.form-input/configs/default.config.js +72 -0
  187. package/{constant.component-names → ui.form-input/constants}/index.js +1 -2
  188. package/ui.form-input/index.stories.js +46 -12
  189. package/ui.form-input/index.vue +320 -459
  190. package/ui.form-input-file/composables/attrs.composable.js +82 -0
  191. package/ui.form-input-file/configs/default.config.js +51 -0
  192. package/ui.form-input-file/constants/index.js +5 -0
  193. package/ui.form-input-file/index.stories.js +3 -2
  194. package/ui.form-input-file/index.vue +332 -498
  195. package/ui.form-input-money/Docs.mdx +16 -0
  196. package/ui.form-input-money/composables/attrs.composable.js +13 -0
  197. package/ui.form-input-money/composables/useFormatCurrency.js +82 -0
  198. package/ui.form-input-money/configs/default.config.js +16 -0
  199. package/ui.form-input-money/constants/index.js +5 -0
  200. package/ui.form-input-money/index.stories.js +71 -43
  201. package/ui.form-input-money/index.vue +241 -237
  202. package/ui.form-input-money/services/format.service.js +72 -0
  203. package/ui.form-input-number/Docs.mdx +16 -0
  204. package/ui.form-input-number/composables/attrs.composable.js +47 -0
  205. package/ui.form-input-number/configs/default.config.js +33 -0
  206. package/ui.form-input-number/constants/index.js +5 -0
  207. package/ui.form-input-number/index.stories.js +73 -3
  208. package/ui.form-input-number/index.vue +138 -106
  209. package/ui.form-input-rating/composables/attrs.composable.js +34 -0
  210. package/ui.form-input-rating/configs/default.config.js +25 -0
  211. package/ui.form-input-rating/constants/index.js +5 -0
  212. package/ui.form-input-rating/index.stories.js +3 -2
  213. package/ui.form-input-rating/index.vue +152 -209
  214. package/ui.form-input-search/composables/attrs.composable.js +21 -0
  215. package/ui.form-input-search/configs/default.config.js +20 -0
  216. package/ui.form-input-search/constants/index.js +5 -0
  217. package/ui.form-input-search/index.stories.js +8 -4
  218. package/ui.form-input-search/index.vue +192 -189
  219. package/ui.form-label/Docs.mdx +16 -0
  220. package/ui.form-label/composables/attrs.composable.js +65 -0
  221. package/ui.form-label/configs/default.config.js +95 -0
  222. package/ui.form-label/constants/index.js +13 -0
  223. package/ui.form-label/index.stories.js +107 -0
  224. package/ui.form-label/index.vue +170 -0
  225. package/ui.form-radio/Docs.mdx +16 -0
  226. package/ui.form-radio/composables/attrs.composable.js +34 -0
  227. package/ui.form-radio/configs/default.config.js +47 -0
  228. package/ui.form-radio/constants/index.js +5 -0
  229. package/ui.form-radio/index.stories.js +12 -10
  230. package/ui.form-radio/index.vue +141 -148
  231. package/ui.form-radio-card/Docs.mdx +16 -0
  232. package/ui.form-radio-card/composables/attrs.composable.js +30 -0
  233. package/ui.form-radio-card/configs/default.config.js +25 -0
  234. package/ui.form-radio-card/constants/index.js +5 -0
  235. package/ui.form-radio-card/index.stories.js +19 -10
  236. package/ui.form-radio-card/index.vue +132 -146
  237. package/ui.form-radio-card/services/variant.service.js +15 -0
  238. package/ui.form-radio-group/Docs.mdx +16 -0
  239. package/ui.form-radio-group/composables/attrs.composable.js +27 -0
  240. package/ui.form-radio-group/configs/default.config.js +18 -0
  241. package/ui.form-radio-group/constants/index.js +5 -0
  242. package/ui.form-radio-group/index.stories.js +1 -0
  243. package/ui.form-radio-group/index.vue +114 -85
  244. package/ui.form-select/Docs.mdx +16 -0
  245. package/ui.form-select/composables/attrs.composable.js +172 -0
  246. package/ui.form-select/configs/default.config.js +131 -0
  247. package/ui.form-select/constants/index.js +19 -0
  248. package/ui.form-select/index.stories.js +194 -38
  249. package/ui.form-select/index.vue +638 -910
  250. package/ui.form-select/services/select.service.js +98 -0
  251. package/ui.form-switch/composables/attrs.composable.js +77 -0
  252. package/ui.form-switch/configs/default.config.js +72 -0
  253. package/ui.form-switch/constants/index.js +5 -0
  254. package/ui.form-switch/index.stories.js +9 -42
  255. package/ui.form-switch/index.vue +177 -632
  256. package/ui.form-switch/services/variant.service.js +31 -0
  257. package/ui.form-textarea/Docs.mdx +16 -0
  258. package/ui.form-textarea/composables/attrs.composable.js +52 -0
  259. package/ui.form-textarea/configs/default.config.js +68 -0
  260. package/ui.form-textarea/constants/index.js +5 -0
  261. package/ui.form-textarea/index.stories.js +47 -5
  262. package/ui.form-textarea/index.vue +238 -353
  263. package/ui.image-avatar/composables/attrs.composable.js +34 -0
  264. package/ui.image-avatar/configs/default.config.js +42 -0
  265. package/ui.image-avatar/constants/index.js +5 -0
  266. package/ui.image-avatar/index.stories.js +7 -6
  267. package/ui.image-avatar/index.vue +94 -226
  268. package/ui.image-icon/Docs.mdx +16 -0
  269. package/ui.image-icon/composables/attrs.composable.js +65 -0
  270. package/ui.image-icon/configs/default.config.js +90 -0
  271. package/ui.image-icon/constants/index.js +5 -0
  272. package/ui.image-icon/index.stories.js +16 -35
  273. package/ui.image-icon/index.vue +165 -453
  274. package/ui.image-logo/composables/attrs.composable.js +41 -0
  275. package/ui.image-logo/configs/default.config.js +38 -0
  276. package/ui.image-logo/constants/index.js +5 -0
  277. package/ui.image-logo/index.stories.js +8 -8
  278. package/ui.image-logo/index.vue +80 -166
  279. package/ui.navigation-pagination/composables/attrs.composable.js +41 -0
  280. package/ui.navigation-pagination/configs/default.config.js +24 -0
  281. package/ui.navigation-pagination/constants/index.js +8 -0
  282. package/ui.navigation-pagination/index.stories.js +23 -6
  283. package/ui.navigation-pagination/index.vue +262 -102
  284. package/ui.navigation-stepper/composables/attrs.composable.js +25 -0
  285. package/ui.navigation-stepper/configs/default.config.js +13 -0
  286. package/ui.navigation-stepper/constants/index.js +5 -0
  287. package/ui.navigation-stepper/index.stories.js +1 -0
  288. package/ui.navigation-stepper/index.vue +87 -88
  289. package/ui.navigation-tab/composables/attrs.composable.js +30 -0
  290. package/ui.navigation-tab/configs/default.config.js +22 -0
  291. package/ui.navigation-tab/constants/index.js +5 -0
  292. package/ui.navigation-tab/index.stories.js +7 -11
  293. package/ui.navigation-tab/index.vue +58 -85
  294. package/ui.navigation-tabs/composables/attrs.composable.js +24 -0
  295. package/ui.navigation-tabs/configs/default.config.js +14 -0
  296. package/ui.navigation-tabs/constants/index.js +5 -0
  297. package/ui.navigation-tabs/index.stories.js +7 -11
  298. package/ui.navigation-tabs/index.vue +68 -88
  299. package/ui.other-dot/composables/attrs.composable.js +32 -0
  300. package/ui.other-dot/configs/default.config.js +21 -0
  301. package/ui.other-dot/constants/index.js +5 -0
  302. package/ui.other-dot/index.stories.js +5 -5
  303. package/ui.other-dot/index.vue +41 -89
  304. package/ui.other-loader/composables/attrs.composable.js +51 -0
  305. package/ui.other-loader/configs/default.config.js +47 -0
  306. package/ui.other-loader/constants/index.js +5 -0
  307. package/ui.other-loader/index.stories.js +14 -13
  308. package/ui.other-loader/index.vue +58 -107
  309. package/ui.text-alert/composables/attrs.composable.js +48 -0
  310. package/ui.text-alert/configs/default.config.js +51 -0
  311. package/ui.text-alert/constatns/index.js +5 -0
  312. package/ui.text-alert/index.stories.js +39 -6
  313. package/ui.text-alert/index.vue +95 -210
  314. package/ui.text-badge/Docs.mdx +16 -0
  315. package/ui.text-badge/composables/attrs.composable.js +49 -0
  316. package/ui.text-badge/configs/default.config.js +51 -0
  317. package/ui.text-badge/constants/index.js +5 -0
  318. package/ui.text-badge/index.stories.js +190 -0
  319. package/ui.text-badge/index.vue +120 -0
  320. package/ui.text-block/composables/attrs.composable.js +31 -0
  321. package/ui.text-block/configs/default.config.js +35 -0
  322. package/ui.text-block/constatns/index.js +5 -0
  323. package/ui.text-block/index.stories.js +2 -1
  324. package/ui.text-block/index.vue +55 -116
  325. package/ui.text-empty/Docs.mdx +16 -0
  326. package/ui.text-empty/composables/attrs.composable.js +43 -0
  327. package/ui.text-empty/configs/default.config.js +4 -2
  328. package/ui.text-empty/constants/index.js +5 -0
  329. package/ui.text-empty/index.stories.js +3 -3
  330. package/ui.text-empty/index.vue +13 -14
  331. package/ui.text-file/composables/attrs.composable.js +37 -0
  332. package/ui.text-file/configs/default.config.js +15 -0
  333. package/ui.text-file/index.stories.js +2 -1
  334. package/ui.text-file/index.vue +63 -72
  335. package/ui.text-files/composables/attrs.composable.js +19 -0
  336. package/ui.text-files/configs/default.config.js +9 -0
  337. package/ui.text-files/constants/index.js +5 -0
  338. package/ui.text-files/index.stories.js +1 -0
  339. package/ui.text-files/index.vue +73 -50
  340. package/ui.text-header/Docs.mdx +16 -0
  341. package/ui.text-header/composables/attrs.composable.js +34 -0
  342. package/ui.text-header/configs/default.config.js +45 -0
  343. package/ui.text-header/constants/index.js +5 -0
  344. package/ui.text-header/index.stories.js +34 -38
  345. package/ui.text-header/index.vue +67 -221
  346. package/ui.text-money/Docs.mdx +16 -0
  347. package/ui.text-money/composables/attrs.composable.js +65 -0
  348. package/ui.text-money/configs/default.config.js +69 -0
  349. package/ui.text-money/constants/index.js +7 -0
  350. package/ui.text-money/index.stories.js +24 -22
  351. package/ui.text-money/index.vue +187 -506
  352. package/ui.text-money/services/money.services.js +24 -0
  353. package/_readme/layoutAdmin.md +0 -703
  354. package/_readme/layoutApp.md +0 -153
  355. package/_readme/layoutAuth.md +0 -190
  356. package/config.rollup-plugin-visualizer/index.js +0 -11
  357. package/config.unplugin-vue-i18n/index.js +0 -9
  358. package/config.vite-plugin-pwa/index.js +0 -132
  359. package/config.vite-svg-loader/index.js +0 -22
  360. package/index.js +0 -151
  361. package/layout-ui.loader/index.vue +0 -61
  362. package/layout-ui.loader/store/index.js +0 -17
  363. package/layout-ui.loader-top/components/TopProgress.vue +0 -277
  364. package/layout-ui.loader-top/index.vue +0 -218
  365. package/layout-ui.loader-top/store/index.js +0 -55
  366. package/layout-ui.notify/index.stories.js +0 -102
  367. package/layout-ui.notify/index.vue +0 -254
  368. package/layout-ui.viewport/index.vue +0 -78
  369. package/layout-ui.viewport/store/index.js +0 -47
  370. package/layout.admin/AsideBlock.vue +0 -534
  371. package/layout.admin/AsideInfoBlock.vue +0 -85
  372. package/layout.admin/BrandBlock.vue +0 -380
  373. package/layout.admin/ChangeThemeModal.vue +0 -179
  374. package/layout.admin/HelperBlock.vue +0 -132
  375. package/layout.admin/MainMenu.vue +0 -234
  376. package/layout.admin/MainSubMenu.vue +0 -196
  377. package/layout.admin/MobileMainMenu.vue +0 -197
  378. package/layout.admin/MobileSubBlock.vue +0 -171
  379. package/layout.admin/RightInfoBlock.vue +0 -166
  380. package/layout.admin/UserBlock.vue +0 -290
  381. package/layout.admin/images/abstract-01.jpg +0 -0
  382. package/layout.admin/images/abstract-01_preview.jpg +0 -0
  383. package/layout.admin/index.vue +0 -544
  384. package/layout.admin/mixins/index.js +0 -54
  385. package/layout.admin/store/index.js +0 -167
  386. package/layout.auth/FeaturesBlock.vue +0 -57
  387. package/layout.auth/FooterMenu.vue +0 -90
  388. package/layout.auth/LanguageSwitcher.vue +0 -90
  389. package/layout.auth/index.vue +0 -237
  390. package/library.vue-tailwind-3/t-input.js +0 -68
  391. package/library.vue-tailwind-3/t-modal.js +0 -409
  392. package/library.vue-tailwind-3/t-pagination.js +0 -309
  393. package/library.vue-tailwind-3/t-table.js +0 -362
  394. package/library.vue-tailwind-3/t-textarea.js +0 -84
  395. package/resolver.unplugin-vue-components/index.js +0 -94
  396. package/service.api/index.js +0 -275
  397. package/service.data/index.js +0 -75
  398. package/service.date/index.js +0 -222
  399. package/service.i18n/index.js +0 -145
  400. package/service.idb-keyval/index.js +0 -37
  401. package/service.jwt/index.js +0 -27
  402. package/service.money/index.js +0 -86
  403. package/service.notify/index.js +0 -87
  404. package/service.redirect/index.js +0 -20
  405. package/service.validation/index.js +0 -55
  406. package/service.worker/index.js +0 -26
  407. package/ui.button-expand/index.stories.js +0 -44
  408. package/ui.button-expand/index.vue +0 -22
  409. package/ui.button-expand-item/index.stories.js +0 -69
  410. package/ui.button-expand-item/index.vue +0 -154
  411. package/ui.button-group/index.vue +0 -165
  412. package/ui.button-group-item/index.vue +0 -283
  413. package/ui.container-modal/components/ArrowLink.vue +0 -87
  414. package/ui.container-page/components/ArrowLink.vue +0 -87
  415. package/ui.data-table/components/DateSeparator.vue +0 -99
  416. package/ui.data-table/components/EmptyTableMsg.vue +0 -46
  417. package/ui.data-table/components/TableCheckbox.vue +0 -109
  418. package/ui.dropdown-tag/index.vue +0 -285
  419. package/ui.form-date-picker-range/components/VariantButton.vue +0 -136
  420. package/ui.form-date-picker-range/components/VariantInput.vue +0 -101
  421. package/ui.form-date-picker-range/index.stories.js +0 -93
  422. package/ui.form-date-picker-range/index.vue +0 -1537
  423. package/ui.form-date-picker-range/services/dateRange.service.js +0 -178
  424. package/ui.form-input-money/_components/ConvertibleInput.vue +0 -773
  425. package/ui.form-input-money/_components/RangeInput.vue +0 -356
  426. package/ui.form-input-money/_components/SingleInput.vue +0 -378
  427. package/ui.form-select-multi/index.stories.js +0 -131
  428. package/ui.form-select-multi/index.vue +0 -882
  429. package/ui.image-icon/cli.mjs +0 -159
  430. package/ui.text-empty/services/variant.service.js +0 -22
  431. package/ui.text-field/index.stories.js +0 -60
  432. package/ui.text-field/index.vue +0 -109
  433. package/ui.text-tag/index.stories.js +0 -90
  434. package/ui.text-tag/index.vue +0 -178
  435. package/web-types.json +0 -6320
  436. /package/ui.form-input/{text-security-disc.woff → assets/fonts/text-security-disc.woff} +0 -0
@@ -1,524 +1,385 @@
1
1
  <template>
2
- <div class="mono-input-wrapper">
3
- <label :for="id" :class="inputBlockClass" class="mono-input-block">
4
- <t-input
5
- :id="id"
6
- ref="input"
7
- class="mono-input"
8
- :model-value="modelValue"
9
- :placeholder="placeholder"
10
- :type="inputType"
11
- :class="inputClass"
12
- :readonly="readonly"
13
- :disabled="disabled"
14
- :maxlength="maxLength"
15
- :inputmode="inputMode"
16
- :data-cy="dataCy"
17
- @focus="onFocus"
18
- @blur="onBlur"
19
- @update:modelValue="onInput"
20
- @change="onChange"
21
- @mousedown="onMousedown"
22
- @click="onClick"
23
- />
24
-
25
- <label v-if="isTypePassword" class="icon-label" :for="id">
26
- <UIcon
27
- color="gray"
28
- class="icon-label-password"
29
- :name="isShownPassword ? 'visibility' : 'visibility_off'"
30
- :data-cy="`${dataCy}-show-password`"
31
- @click="onClickShowPassword"
32
- />
2
+ <div v-bind="wrapperAttrs">
3
+ <ULabel
4
+ ref="labelComponent"
5
+ :for="id"
6
+ :label="label"
7
+ :description="description"
8
+ :disabled="disabled"
9
+ :error="error"
10
+ :size="size"
11
+ :align="labelAlign"
12
+ v-bind="labelAttrs"
13
+ >
14
+ <label :for="id" v-bind="blockAttrs">
15
+ <span v-if="hasSlotContent($slots['left'])" ref="leftSlotWrapper" v-bind="leftSlotAttrs">
16
+ <!-- @slot Use it to add some component before text. -->
17
+ <slot name="left" />
18
+ </span>
19
+
20
+ <span v-bind="inputWrapperAttrs">
21
+ <input
22
+ :id="id"
23
+ ref="input"
24
+ v-model="inputValue"
25
+ :placeholder="placeholder"
26
+ :type="inputType"
27
+ :readonly="readonly"
28
+ :disabled="disabled"
29
+ :maxlength="maxLength"
30
+ :inputmode="inputMode"
31
+ :data-cy="dataCy"
32
+ v-bind="inputAttrs"
33
+ @focus="onFocus"
34
+ @blur="onBlur"
35
+ @input="onInput"
36
+ @change="onChange"
37
+ @mousedown="onMousedown"
38
+ @click="onClick"
39
+ />
40
+ </span>
41
+
42
+ <label
43
+ v-if="hasSlotContent($slots['right-icon']) || isTypePassword"
44
+ v-bind="rightSlotAttrs"
45
+ :for="id"
46
+ >
47
+ <!-- @slot Use it to add icon after text. -->
48
+ <slot name="right-icon">
49
+ <UIcon
50
+ v-if="isTypePassword"
51
+ :name="passwordIconName"
52
+ color="gray"
53
+ interactive
54
+ fill
55
+ :data-cy="`${dataCy}-show-password`"
56
+ v-bind="passwordIconAttrs"
57
+ @click="onClickShowPassword"
58
+ />
59
+ </slot>
60
+ </label>
61
+
62
+ <span v-if="hasSlotContent($slots['right'])" v-bind="rightSlotAttrs">
63
+ <!-- @slot Use it to add some component after text. -->
64
+
65
+ <slot name="right" />
66
+ </span>
33
67
  </label>
34
-
35
- <label v-if="isShownSlot.icon" class="icon-label" :for="id">
36
- <!-- @slot Use it to add icon after text. -->
37
- <slot name="icon" />
38
- </label>
39
-
40
- <span v-else-if="isShownSlot.rightSlot" class="mono-input-right-slot">
41
- <!-- @slot Use it to add some component after text. -->
42
-
43
- <slot name="right" />
44
- </span>
45
- </label>
46
-
47
- <label class="label" :class="labelClass" :for="id">
48
- {{ label }}
49
- </label>
50
-
51
- <p v-if="error" class="error-message" :data-cy="`${dataCy}-error-message`">
52
- {{ error }}
53
- </p>
54
-
55
- <p v-if="description && !error" class="description">
56
- {{ description }}
57
- </p>
68
+ </ULabel>
58
69
  </div>
59
70
  </template>
60
71
 
61
72
  <script>
62
73
  import { getRandomId } from "vueless/service.ui";
63
- import ValidationServiceDefault from "vueless/service.validation";
64
74
 
65
- import UIcon from "vueless/ui.image-icon";
66
- import TInput from "vueless/library.vue-tailwind-3/t-input";
67
-
68
- const {
69
- NUMBER_REG_EXP,
70
- INTEGER_REG_EXP,
71
- LETTERS_REG_EXP,
72
- LETTERS_AND_SYMBOLS_REG_EXP,
73
- LETTERS_AND_NUMBERS_REG_EXP,
74
- } = new ValidationServiceDefault();
75
-
76
- const VALIDATION_RULES = {
77
- integer: INTEGER_REG_EXP,
78
- number: NUMBER_REG_EXP,
79
- string: LETTERS_REG_EXP,
80
- stringAndNumber: LETTERS_AND_NUMBERS_REG_EXP,
81
- symbol: LETTERS_AND_SYMBOLS_REG_EXP,
75
+ const VALIDATION_RULES_REG_EX = {
76
+ integer: /\d*/g,
77
+ number: /\d*\.?\d*/g,
78
+ string: /[a-zA-Z]+/g,
79
+ stringAndNumber: /[a-zA-Z0-9]+/g,
80
+ symbol: /\D/g,
82
81
  };
82
+ </script>
83
83
 
84
- export default {
85
- name: "UInput",
86
-
87
- components: {
88
- UIcon,
89
- TInput,
84
+ <script setup>
85
+ import { ref, computed, onMounted, useSlots } from "vue";
86
+ import UIService from "vueless/service.ui";
87
+
88
+ import defaultConfig from "./configs/default.config";
89
+ import { UInput } from "./constants";
90
+ import { useAttrs } from "./composables/attrs.composable";
91
+
92
+ /* Should be a string for correct web-types gen */
93
+ defineOptions({ name: "UInput", inheritAttrs: false });
94
+
95
+ const emit = defineEmits([
96
+ "update:modelValue",
97
+ "change",
98
+ "click",
99
+ "focus",
100
+ "mousedown",
101
+ "blur",
102
+ "input",
103
+ ]);
104
+
105
+ const props = defineProps({
106
+ /**
107
+ * Input value.
108
+ */
109
+ modelValue: {
110
+ type: [String, Number],
111
+ default: "",
90
112
  },
91
113
 
92
- props: {
93
- /**
94
- * Set input size.
95
- * @values sm, md, lg
96
- */
97
- size: {
98
- type: String,
99
- default: "md",
100
- },
101
-
102
- /**
103
- * Set input value.
104
- */
105
- modelValue: {
106
- type: [String, Number],
107
- default: "",
108
- },
109
-
110
- /**
111
- * Set input placeholder.
112
- */
113
- placeholder: {
114
- type: String,
115
- default: "",
116
- },
117
-
118
- /**
119
- * Set input label.
120
- */
121
- label: {
122
- type: String,
123
- default: "",
124
- },
125
-
126
- /**
127
- * Set description for input.
128
- */
129
- description: {
130
- type: String,
131
- default: "",
132
- },
133
-
134
- /**
135
- * Set the maximum length of the input value.
136
- */
137
- maxLength: {
138
- type: [String, Number],
139
- default: "",
140
- },
141
-
142
- /**
143
- * Make input read only.
144
- */
145
- readonly: {
146
- type: Boolean,
147
- default: false,
148
- },
149
-
150
- /**
151
- * Make input inactive.
152
- */
153
- disabled: {
154
- type: Boolean,
155
- default: false,
156
- },
157
-
158
- /**
159
- * Set input type.
160
- * @values text, number, email, tel, password, url
161
- */
162
- type: {
163
- type: String,
164
- default: "text",
165
- validator: (value) => !Object.keys(VALIDATION_RULES).includes(value),
166
- },
167
-
168
- /**
169
- * Set input mode.
170
- * @values none, text, decimal, numeric, tel, email, url
171
- */
172
- inputMode: {
173
- type: String,
174
- default: "text",
175
- },
176
-
177
- /**
178
- * Disable browsers autocomplete.
179
- */
180
- noAutocomplete: {
181
- type: Boolean,
182
- default: false,
183
- },
184
-
185
- /**
186
- * Set error message.
187
- */
188
- error: {
189
- type: String,
190
- default: "",
191
- },
192
-
193
- /**
194
- * Prevents inputting some characters (for ex. input numbers only).
195
- * You can use predefined values or your own RegExp.
196
- * @values symbol, string, stringAndNumber, number, integer
197
- */
198
- validationRule: {
199
- type: [String, RegExp],
200
- default: "",
201
- },
202
-
203
- /**
204
- * Generates unique element id.
205
- * @ignore
206
- */
207
- id: {
208
- type: String,
209
- default: () => getRandomId(),
210
- },
211
-
212
- /**
213
- * Sets data-cy attribute for automated testing.
214
- */
215
- dataCy: {
216
- type: String,
217
- default: "",
218
- },
114
+ /**
115
+ * Input label.
116
+ */
117
+ label: {
118
+ type: String,
119
+ default: "",
219
120
  },
220
121
 
221
- emits: ["update:modelValue", "change", "click", "focus", "mousedown", "blur", "input"],
222
-
223
- data: () => ({
224
- isShownPassword: false,
225
- }),
226
-
227
- computed: {
228
- inputClass() {
229
- return {
230
- "size-sm": this.size === "sm",
231
- "size-md": this.size === "md",
232
- "size-lg": this.size === "lg",
233
- "mono-input-with-icon-padding": this.isShownSlot.icon,
234
- "mono-input-password-emulation":
235
- this.isTypePassword && !this.isShownPassword && this.modelValue,
236
- "error-input": this.error,
237
- };
238
- },
239
-
240
- inputBlockClass() {
241
- return {
242
- disabled: this.disabled,
243
- "error-input": this.error,
244
- };
245
- },
246
-
247
- isShownSlot() {
248
- return {
249
- icon: !!this.$slots["icon"],
250
- rightSlot: !!this.$slots["right"],
251
- };
252
- },
253
-
254
- labelClass() {
255
- return {
256
- "error-label": this.error,
257
- "size-label-sm": this.size === "sm",
258
- "size-label-md": this.size === "md",
259
- "size-label-lg": this.size === "lg",
260
- };
261
- },
262
-
263
- isTypePassword() {
264
- return this.type === "password";
265
- },
266
-
267
- inputType() {
268
- return this.isShownPassword || this.noAutocomplete ? "text" : this.type;
269
- },
122
+ /**
123
+ * Show label outside the input block.
124
+ */
125
+ labelOutside: {
126
+ type: Boolean,
127
+ default: UIService.get(defaultConfig, UInput).default.labelOutside,
270
128
  },
271
129
 
272
- mounted() {
273
- this.toggleReadonlyToPreventAutocomplete(true);
130
+ /**
131
+ * Input placeholder.
132
+ */
133
+ placeholder: {
134
+ type: String,
135
+ default: "",
274
136
  },
275
137
 
276
- methods: {
277
- onInput(value) {
278
- if (this.validationRule) {
279
- const input = document.querySelector(`#${this.id}`);
280
-
281
- if (VALIDATION_RULES[this.validationRule]) {
282
- value = this.transformValue(value, VALIDATION_RULES[this.validationRule]);
283
- } else {
284
- value = this.transformValue(value, this.validationRule);
285
- }
286
-
287
- input.value = value;
288
- }
289
-
290
- this.$emit("update:modelValue", value);
291
- this.$emit("input", value);
292
- },
293
-
294
- onChange() {
295
- this.$emit("change");
296
- },
297
-
298
- onClick(event) {
299
- this.toggleReadonlyToPreventAutocomplete(false);
300
-
301
- this.$emit("click", event);
302
- },
303
-
304
- onFocus() {
305
- this.toggleReadonlyToPreventAutocomplete(false);
306
-
307
- this.$emit("focus");
308
- },
309
-
310
- onBlur() {
311
- this.toggleReadonlyToPreventAutocomplete(true);
312
-
313
- this.$emit("blur");
314
- },
315
-
316
- onMousedown() {
317
- this.toggleReadonlyToPreventAutocomplete(false);
138
+ /**
139
+ * Input description.
140
+ */
141
+ description: {
142
+ type: String,
143
+ default: "",
144
+ },
318
145
 
319
- this.$emit("mousedown");
320
- },
146
+ /**
147
+ * Error message.
148
+ */
149
+ error: {
150
+ type: String,
151
+ default: "",
152
+ },
321
153
 
322
- onClickShowPassword() {
323
- this.isShownPassword = !this.isShownPassword;
324
- },
154
+ /**
155
+ * Input size.
156
+ * @values sm, md, lg
157
+ */
158
+ size: {
159
+ type: String,
160
+ default: UIService.get(defaultConfig, UInput).default.size,
161
+ },
325
162
 
326
- /**
327
- * This trick prevents default browser autocomplete behaviour.
328
- * @param toggleState { boolean }
329
- */
330
- toggleReadonlyToPreventAutocomplete(toggleState) {
331
- if (this.noAutocomplete && !this.readonly) {
332
- const input = document.getElementById(this.id);
163
+ /**
164
+ * Maximum character length.
165
+ */
166
+ maxLength: {
167
+ type: [String, Number],
168
+ default: "",
169
+ },
333
170
 
334
- toggleState
335
- ? input.setAttribute("readonly", "readonly")
336
- : input.removeAttribute("readonly");
337
- }
338
- },
171
+ /**
172
+ * Prevents input some characters (for ex. input numbers only).
173
+ * You can use predefined values or your own RegExp.
174
+ * @values symbol, string, stringAndNumber, number, integer
175
+ */
176
+ validationRule: {
177
+ type: [String, RegExp],
178
+ default: "",
179
+ },
339
180
 
340
- transformValue(value, exp) {
341
- const regExp = new RegExp(exp, "ig");
342
- const matches = String(value).match(regExp);
181
+ /**
182
+ * Input type.
183
+ * @values text, number, email, tel, password, url
184
+ */
185
+ type: {
186
+ type: String,
187
+ default: "text",
188
+ validator: (value) => !Object.keys(VALIDATION_RULES_REG_EX).includes(value),
189
+ },
343
190
 
344
- return matches ? matches.join("") : "";
345
- },
191
+ /**
192
+ * Input mode (to show different mobile keyboard).
193
+ * @values none, text, decimal, numeric, tel, email, url
194
+ */
195
+ inputMode: {
196
+ type: String,
197
+ default: UIService.get(defaultConfig, UInput).default.inputMode,
346
198
  },
347
- };
348
- </script>
349
199
 
350
- <style lang="postcss" scoped>
351
- @font-face {
352
- font-family: text-security-disc;
353
- src: url("./text-security-disc.woff");
354
- }
200
+ /**
201
+ * Set input read-only.
202
+ */
203
+ readonly: {
204
+ type: Boolean,
205
+ default: UIService.get(defaultConfig, UInput).default.readonly,
206
+ },
355
207
 
356
- .mono-input {
357
- @apply font-normal text-gray-900;
358
- @apply rounded-lg border-none bg-white shadow-none;
359
- @apply w-full px-4;
208
+ /**
209
+ * Disable the input.
210
+ */
211
+ disabled: {
212
+ type: Boolean,
213
+ default: UIService.get(defaultConfig, UInput).default.disabled,
214
+ },
360
215
 
361
- &-wrapper {
362
- @apply relative w-full;
363
- }
216
+ /**
217
+ * Disable browsers autocomplete.
218
+ */
219
+ noAutocomplete: {
220
+ type: Boolean,
221
+ default: UIService.get(defaultConfig, UInput).default.noAutocomplete,
222
+ },
364
223
 
365
- &:focus {
366
- @apply ring-0;
367
- }
224
+ /**
225
+ * Unique element id.
226
+ * @ignore
227
+ */
228
+ id: {
229
+ type: String,
230
+ default: () => getRandomId(),
231
+ },
368
232
 
369
- &:read-only {
370
- @apply border-gray-300 ring-0;
371
- }
233
+ /**
234
+ * Component ui config object.
235
+ */
236
+ config: {
237
+ type: Object,
238
+ default: () => ({}),
239
+ },
372
240
 
373
- &::placeholder {
374
- @apply font-normal text-gray-400;
375
- }
241
+ /**
242
+ * Data-cy attribute for automated testing.
243
+ */
244
+ dataCy: {
245
+ type: String,
246
+ default: "",
247
+ },
248
+ });
376
249
 
377
- &:disabled {
378
- @apply text-gray-900;
379
- @apply border-gray-100 bg-gray-100 opacity-100;
380
- @apply cursor-default;
381
- }
250
+ const slots = useSlots();
382
251
 
383
- /* this trick replace characters to dots same as in input type="password" */
384
- &-password-emulation {
385
- @apply pr-11 leading-5 tracking-widest;
386
- font-family: text-security-disc, serif;
387
- -webkit-text-security: disc;
388
- }
252
+ const isShownPassword = ref(false);
253
+ const input = ref(null);
254
+ const labelComponent = ref(null);
255
+ const leftSlotWrapper = ref(null);
389
256
 
390
- &-block {
391
- @apply relative flex;
392
- @apply rounded-lg border border-solid border-gray-300 bg-white !opacity-100;
257
+ defineExpose({ input });
393
258
 
394
- &:hover {
395
- @apply border-gray-400;
396
- }
259
+ const isTypePassword = computed(() => props.type === "password");
397
260
 
398
- &:focus-within {
399
- @apply border-gray-500 ring-4 ring-gray-600 ring-opacity-15;
400
- }
401
- }
261
+ const inputValue = computed({
262
+ get: () => props.modelValue,
263
+ set: (value) => emit("update:modelValue", value),
264
+ });
402
265
 
403
- &-right-slot {
404
- @apply block;
405
- @apply flex w-full items-center justify-end;
406
- @apply whitespace-nowrap pr-4;
407
- }
266
+ const inputPasswordClasses = computed(() => {
267
+ return inputValue.value && !isShownPassword.value && isTypePassword.value
268
+ ? "tracking-widest [font-family:text-security-disc,serif] [-webkit-text-security:disc]"
269
+ : "";
270
+ });
408
271
 
409
- &-with-icon-padding {
410
- @apply pr-11;
272
+ const {
273
+ config,
274
+ inputAttrs,
275
+ blockAttrs,
276
+ wrapperAttrs,
277
+ labelAttrs,
278
+ passwordIconAttrs,
279
+ leftSlotAttrs,
280
+ inputWrapperAttrs,
281
+ rightSlotAttrs,
282
+ hasSlotContent,
283
+ } = useAttrs(props, { isTypePassword, inputPasswordClasses });
284
+
285
+ const labelAlign = computed(() => {
286
+ return props.labelOutside ? "top" : "topInside";
287
+ });
288
+
289
+ const passwordIconName = computed(() => {
290
+ return isShownPassword.value
291
+ ? config.value.passwordVisibleIconName
292
+ : config.value.passwordHiddenIconName;
293
+ });
294
+
295
+ const inputType = computed(() => {
296
+ return isShownPassword.value || props.noAutocomplete ? "text" : props.type;
297
+ });
298
+
299
+ onMounted(() => {
300
+ toggleReadonlyToPreventAutocomplete(true);
301
+ setLabelPosition();
302
+ });
303
+
304
+ function onInput(inputEvent) {
305
+ let value = inputEvent.target.value;
306
+
307
+ if (props.validationRule) {
308
+ const input = document.querySelector(`#${props.id}`);
309
+
310
+ value = VALIDATION_RULES_REG_EX[props.validationRule]
311
+ ? transformValue(value, VALIDATION_RULES_REG_EX[props.validationRule])
312
+ : transformValue(value, props.validationRule);
313
+
314
+ input.value = value;
411
315
  }
412
- }
413
316
 
414
- .label {
415
- @apply absolute font-normal text-gray-500;
317
+ emit("input", value);
416
318
  }
417
319
 
418
- .description {
419
- @apply text-xs font-normal text-gray-500/[85];
420
- @apply pl-4 pt-2;
320
+ function onChange(event) {
321
+ emit("change", event);
421
322
  }
422
323
 
423
- .disabled {
424
- @apply text-gray-900;
425
- @apply border-gray-100 bg-gray-100 opacity-100;
426
- @apply cursor-default;
324
+ function onClick(event) {
325
+ toggleReadonlyToPreventAutocomplete(false);
427
326
 
428
- &:hover {
429
- @apply border-gray-100;
430
- }
327
+ emit("click", event);
431
328
  }
432
329
 
433
- .error {
434
- &-message {
435
- @apply text-xs font-normal text-red-500;
436
- @apply mt-2 pl-4;
437
- }
330
+ function onFocus(event) {
331
+ toggleReadonlyToPreventAutocomplete(false);
438
332
 
439
- &-label {
440
- @apply text-red-500;
441
- }
333
+ emit("focus", event);
334
+ }
442
335
 
443
- &-input {
444
- @apply border-red-300;
336
+ function onBlur(event) {
337
+ toggleReadonlyToPreventAutocomplete(true);
445
338
 
446
- &:hover {
447
- @apply border-red-400;
448
- }
339
+ emit("blur", event);
340
+ }
449
341
 
450
- &:focus {
451
- @apply border-red-500 ring-red-100;
452
- }
342
+ function onMousedown(event) {
343
+ toggleReadonlyToPreventAutocomplete(false);
453
344
 
454
- &:focus-within {
455
- @apply border-red-500 ring-red-100;
456
- }
457
- }
345
+ emit("mousedown", event);
458
346
  }
459
347
 
460
- .icon {
461
- &-label {
462
- @apply flex items-center justify-center;
463
- @apply h-full w-11;
464
- @apply absolute right-0;
465
-
466
- &-password {
467
- @apply cursor-pointer;
468
-
469
- &:hover {
470
- :deep(g [fill]) {
471
- @apply transition duration-100 ease-in-out;
472
- @apply text-gray-500;
473
- }
474
- }
475
- }
476
- }
348
+ function onClickShowPassword() {
349
+ isShownPassword.value = !isShownPassword.value;
477
350
  }
478
351
 
479
- .size {
480
- &-sm {
481
- @apply text-sm;
482
- @apply pb-2 pt-6;
352
+ /**
353
+ * This trick prevents default browser autocomplete behavior.
354
+ * @param toggleState { boolean }
355
+ */
356
+ function toggleReadonlyToPreventAutocomplete(toggleState) {
357
+ if (props.noAutocomplete && !props.readonly) {
358
+ const input = document.getElementById(props.id);
483
359
 
484
- &::placeholder {
485
- @apply text-sm font-normal;
486
- }
360
+ toggleState ? input.setAttribute("readonly", "readonly") : input.removeAttribute("readonly");
487
361
  }
362
+ }
488
363
 
489
- &-md {
490
- @apply text-base;
491
- @apply pb-2.5 pt-7;
364
+ function transformValue(value, exp) {
365
+ const regExp = new RegExp(exp, "ig");
366
+ const matches = String(value).match(regExp);
492
367
 
493
- &::placeholder {
494
- @apply text-base font-normal;
495
- }
496
- }
368
+ return matches ? matches.join("") : "";
369
+ }
497
370
 
498
- &-lg {
499
- @apply text-lg;
500
- @apply pb-3 pt-8;
371
+ function setLabelPosition() {
372
+ if (props.labelOutside || !hasSlotContent(slots["left"])) return;
501
373
 
502
- &::placeholder {
503
- @apply text-lg font-normal;
504
- }
505
- }
374
+ const leftSlotWidth = leftSlotWrapper.value.getBoundingClientRect().width;
506
375
 
507
- &-label {
508
- &-sm {
509
- @apply text-xs;
510
- @apply left-4 top-2;
511
- }
512
-
513
- &-md {
514
- @apply text-sm;
515
- @apply left-4 top-2.5;
516
- }
517
-
518
- &-lg {
519
- @apply text-base;
520
- @apply left-4 top-3;
521
- }
522
- }
376
+ labelComponent.value.labelElement.style.left = `${leftSlotWidth}px`;
377
+ }
378
+ </script>
379
+
380
+ <style lang="postcss" scoped>
381
+ @font-face {
382
+ font-family: text-security-disc;
383
+ src: url("./assets/fonts/text-security-disc.woff");
523
384
  }
524
385
  </style>