@teammodlr/ui-kit 2.1.41 → 2.1.44

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 (326) hide show
  1. package/env.d.ts +1 -1
  2. package/lib/components/avatar/Avatar.vue.d.ts +1 -1
  3. package/lib/components/avatargroup/AvatarGroup.vue.d.ts +1 -1
  4. package/lib/components/badge/Badge.vue.d.ts +1 -1
  5. package/lib/components/breadcrumb/Breadcrumb.vue.d.ts +1 -1
  6. package/lib/components/breadcrumb/BreadcrumbItem.vue.d.ts +1 -1
  7. package/lib/components/button/Button.vue.d.ts +1 -1
  8. package/lib/components/buttongroup/ButtonGroup.vue.d.ts +1 -1
  9. package/lib/components/checkbox/Checkbox.vue.d.ts +4 -3
  10. package/lib/components/checkbox/style/Checkbox.css.d.ts +1 -0
  11. package/lib/components/colorpicker/ColorPicker.vue.d.ts +1 -1
  12. package/lib/components/configprovider/ConfigProvider.vue.d.ts +35 -0
  13. package/lib/components/configprovider/types.d.ts +3 -0
  14. package/lib/components/confirm/Confirm.vue.d.ts +1 -1
  15. package/lib/components/confirm/ConfirmProvider.vue.d.ts +1 -1
  16. package/lib/components/dialog/Dialog.vue.d.ts +1 -1
  17. package/lib/components/dropdown/Dropdown.vue.d.ts +1 -1
  18. package/lib/components/dropdown/DropdownHeading.vue.d.ts +1 -1
  19. package/lib/components/dropdown/DropdownItem.vue.d.ts +1 -1
  20. package/lib/components/dropdown/DropdownList.vue.d.ts +1 -1
  21. package/lib/components/dropdown/DropdownSeperator.vue.d.ts +1 -1
  22. package/lib/components/dropdown/DropdownWrapper.vue.d.ts +1 -1
  23. package/lib/components/form/Form.vue.d.ts +1 -1
  24. package/lib/components/image/Image.vue.d.ts +1 -1
  25. package/lib/components/index.d.ts +1 -0
  26. package/lib/components/input/Input.vue.d.ts +2 -2
  27. package/lib/components/link/Link.vue.d.ts +1 -1
  28. package/lib/components/messageprovider/Message.vue.d.ts +1 -1
  29. package/lib/components/messageprovider/MessageProvider.vue.d.ts +1 -1
  30. package/lib/components/modal/Modal.vue.d.ts +1 -1
  31. package/lib/components/pagination/Pagination.vue.d.ts +1 -1
  32. package/lib/components/radio/Radio.vue.d.ts +3 -3
  33. package/lib/components/radiobutton/RadioButton.vue.d.ts +1 -1
  34. package/lib/components/radiobuttongroup/RadioButtonGroup.vue.d.ts +1 -1
  35. package/lib/components/renderer/examlpes/basic.vue.d.ts +1 -1
  36. package/lib/components/renderer/renderer.d.ts +1 -1
  37. package/lib/components/select/Select.vue.d.ts +2 -2
  38. package/lib/components/skeleton/Skeleton.vue.d.ts +1 -1
  39. package/lib/components/slider/Slider.vue.d.ts +1 -1
  40. package/lib/components/switch/Switch.vue.d.ts +3 -3
  41. package/lib/components/tab/Tab.vue.d.ts +1 -1
  42. package/lib/components/tab/TabGroup.vue.d.ts +1 -1
  43. package/lib/components/table/Table.vue.d.ts +1 -1
  44. package/lib/components/table/TableBody.vue.d.ts +1 -1
  45. package/lib/components/table/TableCell.vue.d.ts +1 -1
  46. package/lib/components/table/TableHead.vue.d.ts +1 -1
  47. package/lib/components/table/TableHeadRow.vue.d.ts +1 -1
  48. package/lib/components/table/TableRow.vue.d.ts +1 -1
  49. package/lib/components/tag/Tag.vue.d.ts +1 -1
  50. package/lib/components/textarea/Textarea.vue.d.ts +2 -2
  51. package/lib/components/tooltip/Tooltip.vue.d.ts +1 -1
  52. package/lib/components/transfer/Transfer.vue.d.ts +1 -1
  53. package/lib/components/tree/Tree.vue.d.ts +1 -1
  54. package/lib/components/tree/TreeNode.vue.d.ts +1 -1
  55. package/lib/components/tree/TreeNodeToggle.vue.d.ts +1 -1
  56. package/lib/components/virtualscroll/VirtualScroll.vue.d.ts +1 -1
  57. package/lib/composables/useCachedUid.d.ts +1 -13
  58. package/lib/composables/useInput.d.ts +3 -3
  59. package/lib/index.cjs.js +10 -10
  60. package/lib/index.es.js +1347 -1338
  61. package/lib/nuxt.js +35 -35
  62. package/lib/nuxt.plugin.js +8 -8
  63. package/lib/style.css +1 -1
  64. package/lib/styles/theme.css.d.ts +1 -1
  65. package/package.json +89 -89
  66. package/src/__storybook__/argTypes.ts +53 -53
  67. package/src/__storybook__/createStory.ts +15 -15
  68. package/src/__storybook__/index.ts +2 -2
  69. package/src/call.ts +34 -34
  70. package/src/components/avatar/Avatar.vue +110 -110
  71. package/src/components/avatar/examples/basic.vue +6 -6
  72. package/src/components/avatar/examples/custom-size.vue +7 -7
  73. package/src/components/avatar/examples/index.ts +5 -5
  74. package/src/components/avatar/examples/sizes.vue +33 -33
  75. package/src/components/avatar/examples/slots.vue +8 -8
  76. package/src/components/avatar/examples/variants.vue +18 -18
  77. package/src/components/avatar/style/Avatar.css.ts +92 -92
  78. package/src/components/avatar/style/index.ts +1 -1
  79. package/src/components/avatargroup/AvatarGroup.vue +72 -72
  80. package/src/components/avatargroup/examples/basic.vue +37 -37
  81. package/src/components/avatargroup/examples/index.ts +1 -1
  82. package/src/components/avatargroup/style/AvatarGroup.css.ts +26 -26
  83. package/src/components/avatargroup/style/index.ts +1 -1
  84. package/src/components/avatargroup/symbol.ts +17 -17
  85. package/src/components/badge/Badge.vue +43 -43
  86. package/src/components/badge/examples/basic.vue +10 -10
  87. package/src/components/badge/examples/index.ts +1 -1
  88. package/src/components/badge/style/Badge.css.ts +135 -135
  89. package/src/components/badge/style/index.ts +1 -1
  90. package/src/components/breadcrumb/Breadcrumb.vue +54 -54
  91. package/src/components/breadcrumb/BreadcrumbItem.vue +72 -72
  92. package/src/components/breadcrumb/examples/basic.vue +7 -7
  93. package/src/components/breadcrumb/examples/index.ts +1 -1
  94. package/src/components/breadcrumb/style/Breadcrumb.css.ts +40 -40
  95. package/src/components/breadcrumb/style/index.ts +1 -1
  96. package/src/components/breadcrumb/symbol.ts +18 -18
  97. package/src/components/button/Button.vue +203 -203
  98. package/src/components/button/examples/basic.vue +3 -3
  99. package/src/components/button/examples/disabled.vue +3 -3
  100. package/src/components/button/examples/icon-left.vue +12 -12
  101. package/src/components/button/examples/icon.vue +9 -9
  102. package/src/components/button/examples/index.ts +9 -9
  103. package/src/components/button/examples/link.vue +3 -3
  104. package/src/components/button/examples/rounded.vue +7 -7
  105. package/src/components/button/examples/size.vue +7 -7
  106. package/src/components/button/examples/variants-secondary.vue +10 -10
  107. package/src/components/button/examples/variants.vue +10 -10
  108. package/src/components/button/style/Button.css.ts +695 -695
  109. package/src/components/button/style/index.ts +1 -1
  110. package/src/components/buttongroup/ButtonGroup.vue +36 -36
  111. package/src/components/buttongroup/examples/basic.vue +9 -9
  112. package/src/components/buttongroup/examples/icon-group.vue +21 -21
  113. package/src/components/buttongroup/examples/index.ts +2 -2
  114. package/src/components/buttongroup/style/ButtonGroup.css.ts +42 -42
  115. package/src/components/buttongroup/style/index.ts +1 -1
  116. package/src/components/buttongroup/symbol.ts +9 -9
  117. package/src/components/checkbox/Checkbox.vue +149 -145
  118. package/src/components/checkbox/examples/basic.vue +9 -9
  119. package/src/components/checkbox/examples/index.ts +2 -2
  120. package/src/components/checkbox/examples/slot.vue +14 -11
  121. package/src/components/checkbox/style/Checkbox.css.ts +178 -161
  122. package/src/components/checkbox/style/index.ts +1 -1
  123. package/src/components/colorpicker/ColorPicker.vue +333 -333
  124. package/src/components/colorpicker/examples/basic.vue +2 -2
  125. package/src/components/colorpicker/examples/index.ts +1 -1
  126. package/src/components/colorpicker/style/ColorPicker.css.ts +127 -127
  127. package/src/components/colorpicker/style/index.ts +1 -1
  128. package/src/components/colorpicker/utils.ts +206 -206
  129. package/src/components/configprovider/ConfigProvider.vue +26 -0
  130. package/src/components/configprovider/types.ts +3 -0
  131. package/src/components/confirm/Confirm.vue +65 -65
  132. package/src/components/confirm/ConfirmProvider.vue +83 -83
  133. package/src/components/confirm/examples/basic.vue +48 -48
  134. package/src/components/confirm/examples/index.ts +1 -1
  135. package/src/components/confirm/examples/wrapper.vue +9 -9
  136. package/src/components/confirm/props.ts +24 -24
  137. package/src/components/confirm/providerProps.ts +10 -10
  138. package/src/components/confirm/types.ts +33 -33
  139. package/src/components/confirm/useConfirm.ts +14 -14
  140. package/src/components/dialog/Dialog.vue +118 -118
  141. package/src/components/dialog/examples/basic.vue +16 -16
  142. package/src/components/dialog/examples/index.ts +1 -1
  143. package/src/components/dialog/style/Dialog.css.ts +100 -100
  144. package/src/components/dialog/style/index.ts +1 -1
  145. package/src/components/dropdown/Dropdown.vue +308 -308
  146. package/src/components/dropdown/DropdownHeading.vue +23 -23
  147. package/src/components/dropdown/DropdownItem.vue +151 -151
  148. package/src/components/dropdown/DropdownList.vue +20 -20
  149. package/src/components/dropdown/DropdownSeperator.vue +22 -22
  150. package/src/components/dropdown/DropdownWrapper.vue +18 -18
  151. package/src/components/dropdown/examples/basic.vue +119 -119
  152. package/src/components/dropdown/examples/context.vue +71 -71
  153. package/src/components/dropdown/examples/index.ts +3 -3
  154. package/src/components/dropdown/hooks.ts +30 -30
  155. package/src/components/dropdown/style/Dropdown.css.ts +158 -158
  156. package/src/components/dropdown/style/index.ts +1 -1
  157. package/src/components/dropdown/symbol.ts +9 -9
  158. package/src/components/form/Form.vue +153 -153
  159. package/src/components/form/examples/basic.vue +75 -75
  160. package/src/components/form/examples/index.ts +1 -1
  161. package/src/components/form/style/Form.css.ts +28 -28
  162. package/src/components/form/style/index.ts +2 -2
  163. package/src/components/form/symbol.ts +16 -16
  164. package/src/components/image/Image.vue +71 -71
  165. package/src/components/image/examples/basic.vue +5 -5
  166. package/src/components/image/examples/index.ts +1 -1
  167. package/src/components/index.ts +48 -47
  168. package/src/components/input/Input.vue +233 -233
  169. package/src/components/input/examples/basic.vue +21 -21
  170. package/src/components/input/examples/index.ts +6 -6
  171. package/src/components/input/examples/left-icon.vue +9 -9
  172. package/src/components/input/examples/prefix.vue +5 -5
  173. package/src/components/input/examples/right-icon.vue +9 -9
  174. package/src/components/input/examples/sizes.vue +9 -9
  175. package/src/components/input/examples/suffix.vue +7 -7
  176. package/src/components/input/style/Input.css.ts +294 -294
  177. package/src/components/input/style/index.ts +1 -1
  178. package/src/components/link/Link.vue +53 -53
  179. package/src/components/link/examples/basic.vue +3 -3
  180. package/src/components/link/examples/index.ts +1 -1
  181. package/src/components/messageprovider/Message.vue +135 -135
  182. package/src/components/messageprovider/MessageProvider.vue +156 -156
  183. package/src/components/messageprovider/examples/basic.vue +70 -70
  184. package/src/components/messageprovider/examples/index.ts +2 -2
  185. package/src/components/messageprovider/examples/update.vue +34 -34
  186. package/src/components/messageprovider/examples/wrapper.vue +9 -9
  187. package/src/components/messageprovider/style/Message.css.ts +111 -111
  188. package/src/components/messageprovider/style/index.ts +1 -1
  189. package/src/components/messageprovider/types.ts +56 -56
  190. package/src/components/messageprovider/useMessage.ts +14 -14
  191. package/src/components/modal/Modal.vue +310 -310
  192. package/src/components/modal/examples/basic.vue +80 -80
  193. package/src/components/modal/examples/index.ts +3 -3
  194. package/src/components/modal/examples/modal-form.vue +99 -99
  195. package/src/components/modal/examples/sidebar.vue +79 -79
  196. package/src/components/modal/style/Modal.css.ts +318 -318
  197. package/src/components/modal/style/index.ts +1 -1
  198. package/src/components/pagination/Pagination.vue +296 -296
  199. package/src/components/pagination/examples/basic.vue +17 -17
  200. package/src/components/pagination/examples/index.ts +1 -1
  201. package/src/components/pagination/style/Pagination.css.ts +93 -93
  202. package/src/components/pagination/style/index.ts +1 -1
  203. package/src/components/radio/Radio.vue +136 -136
  204. package/src/components/radio/examples/basic.vue +8 -8
  205. package/src/components/radio/examples/group.vue +15 -15
  206. package/src/components/radio/examples/index.ts +2 -2
  207. package/src/components/radio/style/Checkbox.css.ts +130 -130
  208. package/src/components/radio/style/index.ts +1 -1
  209. package/src/components/radiobutton/RadioButton.vue +131 -131
  210. package/src/components/radiobutton/style/RadioButton.css.ts +189 -189
  211. package/src/components/radiobutton/style/index.ts +1 -1
  212. package/src/components/radiobuttongroup/RadioButtonGroup.vue +74 -74
  213. package/src/components/radiobuttongroup/examples/basic.vue +16 -16
  214. package/src/components/radiobuttongroup/examples/index.ts +1 -1
  215. package/src/components/radiobuttongroup/style/RadioButtonGroup.css.ts +37 -37
  216. package/src/components/radiobuttongroup/style/index.ts +1 -1
  217. package/src/components/radiobuttongroup/symbol.ts +12 -12
  218. package/src/components/renderer/examlpes/basic.vue +23 -23
  219. package/src/components/renderer/examlpes/index.ts +1 -1
  220. package/src/components/renderer/props.ts +14 -14
  221. package/src/components/renderer/renderer.ts +16 -16
  222. package/src/components/select/Select.vue +781 -781
  223. package/src/components/select/examples/basic.vue +21 -21
  224. package/src/components/select/examples/index.ts +3 -3
  225. package/src/components/select/examples/multiple.vue +21 -21
  226. package/src/components/select/examples/searchable.vue +20 -20
  227. package/src/components/select/style/Select.css.ts +368 -368
  228. package/src/components/select/style/index.ts +1 -1
  229. package/src/components/skeleton/Skeleton.vue +55 -55
  230. package/src/components/skeleton/examples/basic.vue +3 -3
  231. package/src/components/skeleton/examples/index.ts +2 -2
  232. package/src/components/skeleton/examples/post.vue +8 -8
  233. package/src/components/skeleton/style/Skeleton.css.ts +72 -72
  234. package/src/components/skeleton/style/index.ts +2 -2
  235. package/src/components/slider/Slider.vue +76 -76
  236. package/src/components/slider/style/Slider.css.ts +50 -50
  237. package/src/components/slider/style/index.ts +1 -1
  238. package/src/components/switch/Switch.vue +132 -132
  239. package/src/components/switch/examples/basic.vue +9 -9
  240. package/src/components/switch/examples/index.ts +2 -2
  241. package/src/components/switch/examples/slot.vue +11 -11
  242. package/src/components/switch/style/Switch.css.ts +135 -135
  243. package/src/components/switch/style/index.ts +1 -1
  244. package/src/components/tab/Tab.css +113 -113
  245. package/src/components/tab/Tab.vue +98 -98
  246. package/src/components/tab/TabGroup.vue +90 -90
  247. package/src/components/tab/examples/basic.vue +19 -19
  248. package/src/components/tab/examples/index.ts +2 -2
  249. package/src/components/tab/examples/vertical.vue +19 -19
  250. package/src/components/table/Table.vue +198 -198
  251. package/src/components/table/TableBody.vue +13 -13
  252. package/src/components/table/TableCell.vue +13 -13
  253. package/src/components/table/TableHead.vue +46 -46
  254. package/src/components/table/TableHeadRow.vue +15 -15
  255. package/src/components/table/TableRow.vue +19 -19
  256. package/src/components/table/examples/basic.vue +61 -61
  257. package/src/components/table/examples/empty.vue +44 -44
  258. package/src/components/table/examples/index.ts +3 -3
  259. package/src/components/table/examples/selected.vue +68 -68
  260. package/src/components/table/style/Table.css.ts +62 -62
  261. package/src/components/table/style/index.ts +1 -1
  262. package/src/components/table/types/index.ts +6 -6
  263. package/src/components/tag/Tag.vue +72 -72
  264. package/src/components/tag/examples/basic.vue +5 -5
  265. package/src/components/tag/examples/index.ts +1 -1
  266. package/src/components/tag/style/Tag.css.ts +83 -83
  267. package/src/components/tag/style/index.ts +1 -1
  268. package/src/components/textarea/Textarea.vue +180 -180
  269. package/src/components/textarea/examples/basic.vue +8 -8
  270. package/src/components/textarea/examples/index.ts +1 -1
  271. package/src/components/textarea/style/Textarea.css.ts +191 -191
  272. package/src/components/textarea/style/index.ts +1 -1
  273. package/src/components/tooltip/Tooltip.vue +196 -196
  274. package/src/components/tooltip/examples/basic.vue +5 -5
  275. package/src/components/tooltip/examples/index.ts +2 -2
  276. package/src/components/tooltip/examples/placement.vue +9 -9
  277. package/src/components/tooltip/style/Tooltip.css.ts +90 -90
  278. package/src/components/tooltip/style/index.ts +1 -1
  279. package/src/components/transfer/Transfer.vue +145 -145
  280. package/src/components/transfer/examples/basic.vue +21 -21
  281. package/src/components/transfer/examples/index.ts +1 -1
  282. package/src/components/transfer/style/Transfer.css.ts +81 -81
  283. package/src/components/transfer/style/index.ts +1 -1
  284. package/src/components/tree/Tree.vue +138 -138
  285. package/src/components/tree/TreeNode.vue +109 -109
  286. package/src/components/tree/TreeNodeToggle.vue +48 -48
  287. package/src/components/tree/examples/basic.vue +458 -458
  288. package/src/components/tree/examples/index.ts +1 -1
  289. package/src/components/tree/props.ts +97 -97
  290. package/src/components/tree/style/Tree.css.ts +75 -75
  291. package/src/components/tree/style/index.ts +1 -1
  292. package/src/components/tree/types.ts +103 -103
  293. package/src/components/virtualscroll/VirtualScroll.css +13 -13
  294. package/src/components/virtualscroll/VirtualScroll.vue +166 -166
  295. package/src/components/virtualscroll/examples/basic.vue +31 -31
  296. package/src/components/virtualscroll/examples/index.ts +1 -1
  297. package/src/components/virtualscroll/style/VirtualScroll.css.ts +17 -17
  298. package/src/components/virtualscroll/style/index.ts +1 -1
  299. package/src/composables/element.ts +13 -13
  300. package/src/composables/index.ts +4 -4
  301. package/src/composables/useCachedUid.ts +17 -49
  302. package/src/composables/useEventListener.ts +19 -19
  303. package/src/composables/useInput.ts +151 -151
  304. package/src/composables/useInteractive.ts +19 -19
  305. package/src/composables/useIsServer.ts +7 -7
  306. package/src/composables/useMergedState.ts +18 -18
  307. package/src/composables/useMount.ts +43 -43
  308. package/src/composables/usePopper.ts +215 -215
  309. package/src/composables/useZIndex.ts +33 -33
  310. package/src/create.ts +38 -38
  311. package/src/css/components.css +16 -16
  312. package/src/css/index.css +4 -4
  313. package/src/css/transitions.css +40 -40
  314. package/src/css/variables.css +80 -80
  315. package/src/examples/cards/sidebar.vue +262 -262
  316. package/src/examples/modal/modal.vue +52 -52
  317. package/src/exports/nuxt.js +35 -35
  318. package/src/exports/nuxt.plugin.js +8 -8
  319. package/src/index.ts +5 -5
  320. package/src/install.ts +8 -8
  321. package/src/shims-vue.d.ts +6 -6
  322. package/src/styles/theme.css.ts +181 -181
  323. package/src/styles/transitions.css.ts +97 -97
  324. package/src/types/props.ts +19 -19
  325. package/src/utils/injection.ts +5 -5
  326. package/volar.d.ts +16 -16
@@ -1,233 +1,233 @@
1
- <template>
2
- <div ref="container" :class="computedContainerClasses">
3
- <label v-if="label" :for="id" :id="`${id}-label`" :class="style.label">
4
- {{ label }}
5
- </label>
6
- <div v-if="description" :class="style.description">
7
- {{ description }}
8
- </div>
9
-
10
- <div :class="wrapperComputedClasses">
11
- <div v-if="hasLeftIcon" :class="style.leftIcon">
12
- <slot name="icon-left" />
13
- </div>
14
- <div v-if="hasPrefix" :class="style.prefix">
15
- <slot name="prefix" />
16
- </div>
17
- <input
18
- ref="element"
19
- :id="id"
20
- :type="inputType"
21
- :placeholder="placeholder"
22
- :name="name"
23
- :value="modelValue || ''"
24
- :readonly="readonly"
25
- v-on="inputListeners"
26
- :class="inputComputedClasses"
27
- v-bind="$attrs"
28
- :disabled="disabled || loading"
29
- :aria-disabled="disabled ? 'true' : 'false'"
30
- :aria-labelledby="`${id}-label`"
31
- />
32
- <div v-if="hasSuffix" :class="style.suffix">
33
- <slot name="suffix" />
34
- </div>
35
- <div v-if="hasRightIcon" :class="style.rightIcon">
36
- <slot name="icon-right" />
37
- </div>
38
- </div>
39
- <div v-if="hasHelpMessage" :class="style.helpMessage">
40
- <slot name="help" />
41
- </div>
42
- <div v-if="inputError" :class="style.errorMessage">
43
- {{ inputError }}
44
- </div>
45
- </div>
46
- </template>
47
-
48
- <script lang="ts">
49
- import type { PropType } from "vue";
50
- import type { Size } from "../../types/props";
51
- import {
52
- defineComponent,
53
- ref,
54
- computed,
55
- toRef
56
- } from "vue";
57
- import { useInput } from "../../composables/useInput";
58
- import { useInteractive } from "../../composables/useInteractive";
59
- import * as style from './style';
60
-
61
- export default defineComponent({
62
- name: 'MInput',
63
- props: {
64
- ...useInput.props(),
65
- ...useInteractive.props(),
66
- label: {
67
- type: String
68
- },
69
- size: {
70
- type: String as PropType<Size>,
71
- default: 'md',
72
- },
73
- type: {
74
- type: String,
75
- default: 'text',
76
- validator: (value: string) => ['text', 'password', 'number', 'email', 'date', 'datetime'].includes(value)
77
- },
78
- placeholder: {
79
- type: String,
80
- default: ''
81
- },
82
- loading: {
83
- type: Boolean,
84
- default: false
85
- },
86
- readonly: {
87
- type: Boolean,
88
- default: false
89
- },
90
- disabled: {
91
- type: Boolean,
92
- default: false
93
- },
94
- description: {
95
- type: String,
96
- default: ''
97
- },
98
- block: {
99
- type: Boolean,
100
- default: false
101
- },
102
- error: {
103
- type: String,
104
- default: ''
105
- },
106
- },
107
- emits: useInput.emits(),
108
- setup(props, { slots, emit, expose }) {
109
- const element = ref<HTMLInputElement|null>(null);
110
- const { focus, blur } = useInteractive(element);
111
- const {
112
- id,
113
- insideForm,
114
- reset,
115
- inputListeners,
116
- validate,
117
- setError,
118
- formError,
119
- formDisabled,
120
- formLoading
121
- } = useInput(props, { focus, emit });
122
-
123
- const showPassword = ref(false);
124
- const name = toRef(props, 'name');
125
-
126
- const hasLeftIcon = computed(() => !!(slots['icon-left']));
127
- const hasRightIcon = computed(() => !!(slots['icon-right']));
128
- const hasPrefix = computed(() => !!(slots['prefix']));
129
- const hasSuffix = computed(() => !!(slots['suffix']));
130
- const hasHelpMessage = computed(() => !!(slots['help-message'] || slots['help']));
131
- const disabled = computed(() => formDisabled || props.disabled);
132
- const loading = computed(() => formLoading || props.loading);
133
-
134
- const inputType = computed(() => {
135
- const type = props.type;
136
- if (type === 'password') {
137
- return showPassword.value ? 'text' : 'password';
138
- }
139
-
140
- return type;
141
- });
142
-
143
- const readonly = computed(() => (props.loading || props.readonly));
144
-
145
- const computedContainerClasses = computed(() => {
146
- return [
147
- {
148
- [style.block]: props.block,
149
- }
150
- ]
151
- });
152
-
153
- const wrapperComputedClasses = computed(() => {
154
- return [
155
- style.wrapper,
156
- style.base,
157
- style.size[props.size],
158
- {
159
- [style.block]: props.block,
160
- [style.error]: inputError.value,
161
- }
162
- ]
163
- });
164
-
165
- const inputComputedClasses = computed(() => {
166
- return [
167
- style.input,
168
- {
169
- [style.block]: props.block,
170
- [style.disabled]: disabled.value || loading.value,
171
- [style.hasLeftIcon]: hasLeftIcon.value,
172
- [style.hasRightIcon]: hasRightIcon.value,
173
- }
174
- ];
175
-
176
- // return [
177
- // 'm-input',
178
- // `m-input--${props.size}`,
179
- // {
180
- // 'm-input--disabled': disabled.value || loading.value,
181
- // 'm-input--readonly': readonly.value,
182
- // 'm-input--focused': focused.value,
183
- // 'm-input--error': inputError.value,
184
- // 'm-input--icon-left': hasLeftIcon.value,
185
- // 'm-input--icon-right': hasRightIcon.value,
186
- // 'm-input--loading': props.loading,
187
- // 'm-input--password': props.type === 'password'
188
- // }
189
- // ]
190
- });
191
-
192
- const inputError = computed(() => {
193
- return formError.value || props.error;
194
- });
195
-
196
- const onClear = () => {
197
- emit('update:modelValue', '');
198
- };
199
-
200
- expose({
201
- focus,
202
- blur,
203
- })
204
-
205
- return {
206
- element,
207
- id,
208
- inputType,
209
- disabled,
210
- loading,
211
- readonly,
212
- inputComputedClasses,
213
- wrapperComputedClasses,
214
- computedContainerClasses,
215
- name,
216
- hasLeftIcon,
217
- hasRightIcon,
218
- hasSuffix,
219
- hasPrefix,
220
- hasHelpMessage,
221
- inputError,
222
- style,
223
-
224
- onClear,
225
- validate,
226
- setError,
227
- focus,
228
- blur,
229
- inputListeners
230
- }
231
- }
232
- })
233
- </script>
1
+ <template>
2
+ <div ref="container" :class="computedContainerClasses">
3
+ <label v-if="label" :for="id" :id="`${id}-label`" :class="style.label">
4
+ {{ label }}
5
+ </label>
6
+ <div v-if="description" :class="style.description">
7
+ {{ description }}
8
+ </div>
9
+
10
+ <div :class="wrapperComputedClasses">
11
+ <div v-if="hasLeftIcon" :class="style.leftIcon">
12
+ <slot name="icon-left" />
13
+ </div>
14
+ <div v-if="hasPrefix" :class="style.prefix">
15
+ <slot name="prefix" />
16
+ </div>
17
+ <input
18
+ ref="element"
19
+ :id="id"
20
+ :type="inputType"
21
+ :placeholder="placeholder"
22
+ :name="name"
23
+ :value="modelValue || ''"
24
+ :readonly="readonly"
25
+ v-on="inputListeners"
26
+ :class="inputComputedClasses"
27
+ v-bind="$attrs"
28
+ :disabled="disabled || loading"
29
+ :aria-disabled="disabled ? 'true' : 'false'"
30
+ :aria-labelledby="`${id}-label`"
31
+ />
32
+ <div v-if="hasSuffix" :class="style.suffix">
33
+ <slot name="suffix" />
34
+ </div>
35
+ <div v-if="hasRightIcon" :class="style.rightIcon">
36
+ <slot name="icon-right" />
37
+ </div>
38
+ </div>
39
+ <div v-if="hasHelpMessage" :class="style.helpMessage">
40
+ <slot name="help" />
41
+ </div>
42
+ <div v-if="inputError" :class="style.errorMessage">
43
+ {{ inputError }}
44
+ </div>
45
+ </div>
46
+ </template>
47
+
48
+ <script lang="ts">
49
+ import type { PropType } from "vue";
50
+ import type { Size } from "../../types/props";
51
+ import {
52
+ defineComponent,
53
+ ref,
54
+ computed,
55
+ toRef
56
+ } from "vue";
57
+ import { useInput } from "../../composables/useInput";
58
+ import { useInteractive } from "../../composables/useInteractive";
59
+ import * as style from './style';
60
+
61
+ export default defineComponent({
62
+ name: 'MInput',
63
+ props: {
64
+ ...useInput.props(),
65
+ ...useInteractive.props(),
66
+ label: {
67
+ type: String
68
+ },
69
+ size: {
70
+ type: String as PropType<Size>,
71
+ default: 'md',
72
+ },
73
+ type: {
74
+ type: String,
75
+ default: 'text',
76
+ validator: (value: string) => ['text', 'password', 'number', 'email', 'date', 'datetime'].includes(value)
77
+ },
78
+ placeholder: {
79
+ type: String,
80
+ default: ''
81
+ },
82
+ loading: {
83
+ type: Boolean,
84
+ default: false
85
+ },
86
+ readonly: {
87
+ type: Boolean,
88
+ default: false
89
+ },
90
+ disabled: {
91
+ type: Boolean,
92
+ default: false
93
+ },
94
+ description: {
95
+ type: String,
96
+ default: ''
97
+ },
98
+ block: {
99
+ type: Boolean,
100
+ default: false
101
+ },
102
+ error: {
103
+ type: String,
104
+ default: ''
105
+ },
106
+ },
107
+ emits: useInput.emits(),
108
+ setup(props, { slots, emit, expose }) {
109
+ const element = ref<HTMLInputElement|null>(null);
110
+ const { focus, blur } = useInteractive(element);
111
+ const {
112
+ id,
113
+ insideForm,
114
+ reset,
115
+ inputListeners,
116
+ validate,
117
+ setError,
118
+ formError,
119
+ formDisabled,
120
+ formLoading
121
+ } = useInput(props, { focus, emit });
122
+
123
+ const showPassword = ref(false);
124
+ const name = toRef(props, 'name');
125
+
126
+ const hasLeftIcon = computed(() => !!(slots['icon-left']));
127
+ const hasRightIcon = computed(() => !!(slots['icon-right']));
128
+ const hasPrefix = computed(() => !!(slots['prefix']));
129
+ const hasSuffix = computed(() => !!(slots['suffix']));
130
+ const hasHelpMessage = computed(() => !!(slots['help-message'] || slots['help']));
131
+ const disabled = computed(() => formDisabled || props.disabled);
132
+ const loading = computed(() => formLoading || props.loading);
133
+
134
+ const inputType = computed(() => {
135
+ const type = props.type;
136
+ if (type === 'password') {
137
+ return showPassword.value ? 'text' : 'password';
138
+ }
139
+
140
+ return type;
141
+ });
142
+
143
+ const readonly = computed(() => (props.loading || props.readonly));
144
+
145
+ const computedContainerClasses = computed(() => {
146
+ return [
147
+ {
148
+ [style.block]: props.block,
149
+ }
150
+ ]
151
+ });
152
+
153
+ const wrapperComputedClasses = computed(() => {
154
+ return [
155
+ style.wrapper,
156
+ style.base,
157
+ style.size[props.size],
158
+ {
159
+ [style.block]: props.block,
160
+ [style.error]: inputError.value,
161
+ }
162
+ ]
163
+ });
164
+
165
+ const inputComputedClasses = computed(() => {
166
+ return [
167
+ style.input,
168
+ {
169
+ [style.block]: props.block,
170
+ [style.disabled]: disabled.value || loading.value,
171
+ [style.hasLeftIcon]: hasLeftIcon.value,
172
+ [style.hasRightIcon]: hasRightIcon.value,
173
+ }
174
+ ];
175
+
176
+ // return [
177
+ // 'm-input',
178
+ // `m-input--${props.size}`,
179
+ // {
180
+ // 'm-input--disabled': disabled.value || loading.value,
181
+ // 'm-input--readonly': readonly.value,
182
+ // 'm-input--focused': focused.value,
183
+ // 'm-input--error': inputError.value,
184
+ // 'm-input--icon-left': hasLeftIcon.value,
185
+ // 'm-input--icon-right': hasRightIcon.value,
186
+ // 'm-input--loading': props.loading,
187
+ // 'm-input--password': props.type === 'password'
188
+ // }
189
+ // ]
190
+ });
191
+
192
+ const inputError = computed(() => {
193
+ return formError.value || props.error;
194
+ });
195
+
196
+ const onClear = () => {
197
+ emit('update:modelValue', '');
198
+ };
199
+
200
+ expose({
201
+ focus,
202
+ blur,
203
+ })
204
+
205
+ return {
206
+ element,
207
+ id,
208
+ inputType,
209
+ disabled,
210
+ loading,
211
+ readonly,
212
+ inputComputedClasses,
213
+ wrapperComputedClasses,
214
+ computedContainerClasses,
215
+ name,
216
+ hasLeftIcon,
217
+ hasRightIcon,
218
+ hasSuffix,
219
+ hasPrefix,
220
+ hasHelpMessage,
221
+ inputError,
222
+ style,
223
+
224
+ onClear,
225
+ validate,
226
+ setError,
227
+ focus,
228
+ blur,
229
+ inputListeners
230
+ }
231
+ }
232
+ })
233
+ </script>
@@ -1,21 +1,21 @@
1
- <template>
2
- <MInput
3
- label="Email"
4
- name="email"
5
- placeholder="Email Address"
6
- autofocus
7
- data-maska="#-#"
8
- v-model="value"
9
- >
10
-
11
- <template #help>
12
- Hello
13
- </template>
14
- </MInput>
15
- </template>
16
-
17
- <script setup lang="ts">
18
- import { ref } from 'vue';
19
-
20
- let value = ref('');
21
- </script>
1
+ <template>
2
+ <MInput
3
+ label="Email"
4
+ name="email"
5
+ placeholder="Email Address"
6
+ autofocus
7
+ data-maska="#-#"
8
+ v-model="value"
9
+ >
10
+
11
+ <template #help>
12
+ Hello
13
+ </template>
14
+ </MInput>
15
+ </template>
16
+
17
+ <script setup lang="ts">
18
+ import { ref } from 'vue';
19
+
20
+ let value = ref('');
21
+ </script>
@@ -1,6 +1,6 @@
1
- export { default as MInputBasic } from './basic.vue';
2
- export { default as MInputSuffix } from './suffix.vue';
3
- export { default as MInputPrefix } from './prefix.vue';
4
- export { default as MInputSizes } from './sizes.vue';
5
- export { default as MInputLeftIcon } from './left-icon.vue';
6
- export { default as MInputRightIcon } from './right-icon.vue';
1
+ export { default as MInputBasic } from './basic.vue';
2
+ export { default as MInputSuffix } from './suffix.vue';
3
+ export { default as MInputPrefix } from './prefix.vue';
4
+ export { default as MInputSizes } from './sizes.vue';
5
+ export { default as MInputLeftIcon } from './left-icon.vue';
6
+ export { default as MInputRightIcon } from './right-icon.vue';
@@ -1,9 +1,9 @@
1
- <template>
2
- <MInput placeholder="Brad Veryard" name="name">
3
- <template #icon-left>
4
- <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" style="width: 20px; height: 20px;">
5
- <path stroke-linecap="round" d="M16.5 12a4.5 4.5 0 11-9 0 4.5 4.5 0 019 0zm0 0c0 1.657 1.007 3 2.25 3S21 13.657 21 12a9 9 0 10-2.636 6.364M16.5 12V8.25" />
6
- </svg>
7
- </template>
8
- </MInput>
9
- </template>
1
+ <template>
2
+ <MInput placeholder="Brad Veryard" name="name">
3
+ <template #icon-left>
4
+ <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" style="width: 20px; height: 20px;">
5
+ <path stroke-linecap="round" d="M16.5 12a4.5 4.5 0 11-9 0 4.5 4.5 0 019 0zm0 0c0 1.657 1.007 3 2.25 3S21 13.657 21 12a9 9 0 10-2.636 6.364M16.5 12V8.25" />
6
+ </svg>
7
+ </template>
8
+ </MInput>
9
+ </template>
@@ -1,5 +1,5 @@
1
- <template>
2
- <MInput placeholder="Brad Veryard" name="name">
3
- <template #prefix> something-really-long-test/ </template>
4
- </MInput>
5
- </template>
1
+ <template>
2
+ <MInput placeholder="Brad Veryard" name="name">
3
+ <template #prefix> something-really-long-test/ </template>
4
+ </MInput>
5
+ </template>
@@ -1,9 +1,9 @@
1
- <template>
2
- <MInput placeholder="Brad Veryard" name="name">
3
- <template #icon-right>
4
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" style="width: 20px; height: 20px;">
5
- <path fill-rule="evenodd" d="M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z" clip-rule="evenodd" />
6
- </svg>
7
- </template>
8
- </MInput>
9
- </template>
1
+ <template>
2
+ <MInput placeholder="Brad Veryard" name="name">
3
+ <template #icon-right>
4
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" style="width: 20px; height: 20px;">
5
+ <path fill-rule="evenodd" d="M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z" clip-rule="evenodd" />
6
+ </svg>
7
+ </template>
8
+ </MInput>
9
+ </template>
@@ -1,9 +1,9 @@
1
- <template>
2
- <div>
3
- <MInput clearable name="field_one" size="xs" /><br /><br />
4
- <MInput clearable name="field_two" size="sm" /><br /><br />
5
- <MInput clearable name="field_three" /><br /><br />
6
- <MInput clearable name="field_four" size="lg" /><br /><br />
7
- <MInput clearable name="field_five" size="xl" /><br /><br />
8
- </div>
9
- </template>
1
+ <template>
2
+ <div>
3
+ <MInput clearable name="field_one" size="xs" /><br /><br />
4
+ <MInput clearable name="field_two" size="sm" /><br /><br />
5
+ <MInput clearable name="field_three" /><br /><br />
6
+ <MInput clearable name="field_four" size="lg" /><br /><br />
7
+ <MInput clearable name="field_five" size="xl" /><br /><br />
8
+ </div>
9
+ </template>
@@ -1,7 +1,7 @@
1
- <template>
2
- <MInput placeholder="Brad Veryard" name="name">
3
- <template #suffix>
4
- .com
5
- </template>
6
- </MInput>
7
- </template>
1
+ <template>
2
+ <MInput placeholder="Brad Veryard" name="name">
3
+ <template #suffix>
4
+ .com
5
+ </template>
6
+ </MInput>
7
+ </template>