@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,204 +1,204 @@
1
- <template>
2
- <component :is="computedTag" :to="to" :href="href" :type="type" :class="computedClasses" :disabled="disabled"
3
- @click="handleClick" v-bind="$attrs">
4
- <!-- <div :class="computedWaveClasses" :key="waveTimerId"></div>-->
5
- <div :class="computedBorderClasses"></div>
6
- <div :class="computedBorderStateClasses"></div>
7
- <span v-if="hasIconLeft" :class="iconLeft">
8
- <slot name="icon-left"/>
9
- </span>
10
- <span>
11
- <slot/>
12
- </span>
13
- <span v-if="hasIconRight" :class="iconRight">
14
- <slot name="icon-right"/>
15
- </span>
16
- </component>
17
- </template>
18
-
19
- <script lang="ts">
20
- import type {PropType} from "vue";
21
- import {computed, defineComponent, inject, onBeforeUnmount, onMounted, ref, toRef} from "vue";
22
- import type {Size, Variant} from "../../types/props";
23
- import * as style from "./style";
24
- import {BUTTON_GROUP_STATE} from "../buttongroup/symbol";
25
- import {FORM_STATE} from "../form/symbol";
26
-
27
- export default defineComponent({
28
- name: "MButton",
29
- props: {
30
- type: {
31
- type: String,
32
- default: 'button',
33
- },
34
- variant: {
35
- type: String as PropType<Variant>,
36
- default: 'default'
37
- },
38
- size: {
39
- type: String as PropType<Size>,
40
- default: 'md'
41
- },
42
- rounded: {
43
- type: Boolean,
44
- default: false
45
- },
46
- disabled: {
47
- type: Boolean,
48
- default: false
49
- },
50
- loading: {
51
- type: Boolean,
52
- default: false
53
- },
54
- block: {
55
- type: Boolean,
56
- default: false
57
- },
58
- secondary: {
59
- type: Boolean,
60
- default: false
61
- },
62
- to: {
63
- type: [String, Object],
64
- default: null
65
- },
66
- href: {
67
- type: String,
68
- default: '',
69
- },
70
- link: {
71
- type: Boolean,
72
- default: false
73
- },
74
- icon: {
75
- type: Boolean,
76
- default: false
77
- },
78
- onClick: {
79
- type: Function as PropType<(e: MouseEvent) => void>,
80
- default: () => {
81
- }
82
- }
83
- },
84
- setup(props, {slots}) {
85
- const group = inject(BUTTON_GROUP_STATE, null);
86
- const form = inject(FORM_STATE, null);
87
- const state = inject("dropdown", null);
88
-
89
- const sizeValue = ref<Size>('md');
90
- const waveActive = ref<boolean>(false);
91
- const waveTimerId = ref<number | null>(0);
92
- const loading = toRef(props, 'loading');
93
-
94
- const dropdownOpen = computed(() => {
95
- // @ts-ignore
96
- return state?.isOpen.value;
97
- });
98
-
99
- const groupSize = computed(() => {
100
- return group?.size;
101
- });
102
-
103
- const size = computed<Size>(() => {
104
- return groupSize.value || props.size;
105
- })
106
-
107
- const hasIconLeft = computed(() => !!(slots['icon-left']));
108
- const hasIconRight = computed(() => !!(slots['icon-right']));
109
-
110
- const computedClasses = computed(() => {
111
- // TODO: We can use dropdownOpen (T or F) to style the open button :)
112
- return [
113
- style.base,
114
- [style.size[size.value]],
115
- style.variant[props.variant],
116
- {
117
- [style.rounded]: props.rounded,
118
- [style.secondary[props.variant]]: props.secondary,
119
- [style.block]: props.block,
120
- [style.link[props.variant]]: props.link,
121
- [style.iconButton]: props.icon,
122
- [style.loading]: form?.loading || loading.value,
123
- }
124
- ]
125
- });
126
-
127
- const computedWaveClasses = computed(() => {
128
- return [
129
- style.wave,
130
- {
131
- [style.waveActive]: waveActive.value
132
- }
133
- ]
134
- });
135
-
136
- const computedBorderClasses = computed(() => {
137
- return [
138
- style.border
139
- ]
140
- });
141
-
142
- const computedBorderStateClasses = computed(() => {
143
- return [
144
- style.borderState
145
- ]
146
- });
147
-
148
- const computedTag = computed(() => (props.to ? 'nuxt-link' : props.href ? 'a' : 'button'));
149
-
150
- onMounted(() => {
151
- sizeValue.value = groupSize.value || props.size;
152
- });
153
-
154
- onBeforeUnmount(() => {
155
- if (waveTimerId.value) {
156
- clearTimeout(waveTimerId.value);
157
- }
158
- });
159
-
160
- // const playWave = () => {
161
- // if (props.disabled || props.secondary) {
162
- // return;
163
- // }
164
- // if (waveTimerId.value) {
165
- // clearTimeout(waveTimerId.value);
166
- // waveActive.value = false;
167
- // waveTimerId.value = null;
168
- // }
169
- // nextTick(() => {
170
- // waveActive.value = true;
171
- // waveTimerId.value = setTimeout(() => {
172
- // waveActive.value = false;
173
- // waveTimerId.value = null;
174
- // }, 800);
175
- // })
176
- // }
177
-
178
- const handleClick = (e: MouseEvent): void => {
179
- if (props.disabled) {
180
- e.preventDefault();
181
- return;
182
- }
183
- // playWave();
184
- props.onClick(e);
185
- };
186
-
187
- return {
188
- dropdownOpen,
189
- computedClasses,
190
- computedWaveClasses,
191
- computedBorderClasses,
192
- computedBorderStateClasses,
193
- computedTag,
194
- hasIconLeft,
195
- hasIconRight,
196
- handleClick,
197
- waveTimerId,
198
- iconLeft: style.iconLeft,
199
- iconRight: style.iconRight,
200
- }
201
- }
202
- })
203
- </script>
1
+ <template>
2
+ <component :is="computedTag" :to="to" :href="href" :type="type" :class="computedClasses" :disabled="disabled"
3
+ @click="handleClick" v-bind="$attrs">
4
+ <!-- <div :class="computedWaveClasses" :key="waveTimerId"></div>-->
5
+ <div :class="computedBorderClasses"></div>
6
+ <div :class="computedBorderStateClasses"></div>
7
+ <span v-if="hasIconLeft" :class="iconLeft">
8
+ <slot name="icon-left"/>
9
+ </span>
10
+ <span>
11
+ <slot/>
12
+ </span>
13
+ <span v-if="hasIconRight" :class="iconRight">
14
+ <slot name="icon-right"/>
15
+ </span>
16
+ </component>
17
+ </template>
18
+
19
+ <script lang="ts">
20
+ import type {PropType} from "vue";
21
+ import {computed, defineComponent, inject, onBeforeUnmount, onMounted, ref, toRef} from "vue";
22
+ import type {Size, Variant} from "../../types/props";
23
+ import * as style from "./style";
24
+ import {BUTTON_GROUP_STATE} from "../buttongroup/symbol";
25
+ import {FORM_STATE} from "../form/symbol";
26
+
27
+ export default defineComponent({
28
+ name: "MButton",
29
+ props: {
30
+ type: {
31
+ type: String,
32
+ default: 'button',
33
+ },
34
+ variant: {
35
+ type: String as PropType<Variant>,
36
+ default: 'default'
37
+ },
38
+ size: {
39
+ type: String as PropType<Size>,
40
+ default: 'md'
41
+ },
42
+ rounded: {
43
+ type: Boolean,
44
+ default: false
45
+ },
46
+ disabled: {
47
+ type: Boolean,
48
+ default: false
49
+ },
50
+ loading: {
51
+ type: Boolean,
52
+ default: false
53
+ },
54
+ block: {
55
+ type: Boolean,
56
+ default: false
57
+ },
58
+ secondary: {
59
+ type: Boolean,
60
+ default: false
61
+ },
62
+ to: {
63
+ type: [String, Object],
64
+ default: null
65
+ },
66
+ href: {
67
+ type: String,
68
+ default: '',
69
+ },
70
+ link: {
71
+ type: Boolean,
72
+ default: false
73
+ },
74
+ icon: {
75
+ type: Boolean,
76
+ default: false
77
+ },
78
+ onClick: {
79
+ type: Function as PropType<(e: MouseEvent) => void>,
80
+ default: () => {
81
+ }
82
+ }
83
+ },
84
+ setup(props, {slots}) {
85
+ const group = inject(BUTTON_GROUP_STATE, null);
86
+ const form = inject(FORM_STATE, null);
87
+ const state = inject("dropdown", null);
88
+
89
+ const sizeValue = ref<Size>('md');
90
+ const waveActive = ref<boolean>(false);
91
+ const waveTimerId = ref<number | null>(0);
92
+ const loading = toRef(props, 'loading');
93
+
94
+ const dropdownOpen = computed(() => {
95
+ // @ts-ignore
96
+ return state?.isOpen.value;
97
+ });
98
+
99
+ const groupSize = computed(() => {
100
+ return group?.size;
101
+ });
102
+
103
+ const size = computed<Size>(() => {
104
+ return groupSize.value || props.size;
105
+ })
106
+
107
+ const hasIconLeft = computed(() => !!(slots['icon-left']));
108
+ const hasIconRight = computed(() => !!(slots['icon-right']));
109
+
110
+ const computedClasses = computed(() => {
111
+ // TODO: We can use dropdownOpen (T or F) to style the open button :)
112
+ return [
113
+ style.base,
114
+ [style.size[size.value]],
115
+ style.variant[props.variant],
116
+ {
117
+ [style.rounded]: props.rounded,
118
+ [style.secondary[props.variant]]: props.secondary,
119
+ [style.block]: props.block,
120
+ [style.link[props.variant]]: props.link,
121
+ [style.iconButton]: props.icon,
122
+ [style.loading]: form?.loading || loading.value,
123
+ }
124
+ ]
125
+ });
126
+
127
+ const computedWaveClasses = computed(() => {
128
+ return [
129
+ style.wave,
130
+ {
131
+ [style.waveActive]: waveActive.value
132
+ }
133
+ ]
134
+ });
135
+
136
+ const computedBorderClasses = computed(() => {
137
+ return [
138
+ style.border
139
+ ]
140
+ });
141
+
142
+ const computedBorderStateClasses = computed(() => {
143
+ return [
144
+ style.borderState
145
+ ]
146
+ });
147
+
148
+ const computedTag = computed(() => (props.to ? 'nuxt-link' : props.href ? 'a' : 'button'));
149
+
150
+ onMounted(() => {
151
+ sizeValue.value = groupSize.value || props.size;
152
+ });
153
+
154
+ onBeforeUnmount(() => {
155
+ if (waveTimerId.value) {
156
+ clearTimeout(waveTimerId.value);
157
+ }
158
+ });
159
+
160
+ // const playWave = () => {
161
+ // if (props.disabled || props.secondary) {
162
+ // return;
163
+ // }
164
+ // if (waveTimerId.value) {
165
+ // clearTimeout(waveTimerId.value);
166
+ // waveActive.value = false;
167
+ // waveTimerId.value = null;
168
+ // }
169
+ // nextTick(() => {
170
+ // waveActive.value = true;
171
+ // waveTimerId.value = setTimeout(() => {
172
+ // waveActive.value = false;
173
+ // waveTimerId.value = null;
174
+ // }, 800);
175
+ // })
176
+ // }
177
+
178
+ const handleClick = (e: MouseEvent): void => {
179
+ if (props.disabled) {
180
+ e.preventDefault();
181
+ return;
182
+ }
183
+ // playWave();
184
+ props.onClick(e);
185
+ };
186
+
187
+ return {
188
+ dropdownOpen,
189
+ computedClasses,
190
+ computedWaveClasses,
191
+ computedBorderClasses,
192
+ computedBorderStateClasses,
193
+ computedTag,
194
+ hasIconLeft,
195
+ hasIconRight,
196
+ handleClick,
197
+ waveTimerId,
198
+ iconLeft: style.iconLeft,
199
+ iconRight: style.iconRight,
200
+ }
201
+ }
202
+ })
203
+ </script>
204
204
 
@@ -1,3 +1,3 @@
1
- <template>
2
- <MButton>Hello World</MButton>
3
- </template>
1
+ <template>
2
+ <MButton>Hello World</MButton>
3
+ </template>
@@ -1,3 +1,3 @@
1
- <template>
2
- <MButton disabled>You can't click me</MButton>
3
- </template>
1
+ <template>
2
+ <MButton disabled>You can't click me</MButton>
3
+ </template>
@@ -1,12 +1,12 @@
1
- <template>
2
- <MButton>
3
- <template #icon-left>
4
- <svg width="24" height="24" viewBox="0 0 24 24" role="presentation">
5
- <path
6
- d="M12.072 17.284l-3.905 2.053a1 1 0 01-1.451-1.054l.745-4.349-3.159-3.08a1 1 0 01.554-1.705l4.366-.635 1.953-3.956a1 1 0 011.794 0l1.952 3.956 4.366.635a1 1 0 01.555 1.705l-3.16 3.08.746 4.349a1 1 0 01-1.45 1.054l-3.906-2.053z"
7
- fill="currentColor" fill-rule="evenodd"></path>
8
- </svg>
9
- </template>
10
- Hello World
11
- </MButton>
12
- </template>
1
+ <template>
2
+ <MButton>
3
+ <template #icon-left>
4
+ <svg width="24" height="24" viewBox="0 0 24 24" role="presentation">
5
+ <path
6
+ d="M12.072 17.284l-3.905 2.053a1 1 0 01-1.451-1.054l.745-4.349-3.159-3.08a1 1 0 01.554-1.705l4.366-.635 1.953-3.956a1 1 0 011.794 0l1.952 3.956 4.366.635a1 1 0 01.555 1.705l-3.16 3.08.746 4.349a1 1 0 01-1.45 1.054l-3.906-2.053z"
7
+ fill="currentColor" fill-rule="evenodd"></path>
8
+ </svg>
9
+ </template>
10
+ Hello World
11
+ </MButton>
12
+ </template>
@@ -1,9 +1,9 @@
1
- <template>
2
- <MButton icon>
3
- <svg width="24" height="24" viewBox="0 0 24 24" role="presentation">
4
- <path
5
- d="M12.072 17.284l-3.905 2.053a1 1 0 01-1.451-1.054l.745-4.349-3.159-3.08a1 1 0 01.554-1.705l4.366-.635 1.953-3.956a1 1 0 011.794 0l1.952 3.956 4.366.635a1 1 0 01.555 1.705l-3.16 3.08.746 4.349a1 1 0 01-1.45 1.054l-3.906-2.053z"
6
- fill="currentColor" fill-rule="evenodd"></path>
7
- </svg>
8
- </MButton>
9
- </template>
1
+ <template>
2
+ <MButton icon>
3
+ <svg width="24" height="24" viewBox="0 0 24 24" role="presentation">
4
+ <path
5
+ d="M12.072 17.284l-3.905 2.053a1 1 0 01-1.451-1.054l.745-4.349-3.159-3.08a1 1 0 01.554-1.705l4.366-.635 1.953-3.956a1 1 0 011.794 0l1.952 3.956 4.366.635a1 1 0 01.555 1.705l-3.16 3.08.746 4.349a1 1 0 01-1.45 1.054l-3.906-2.053z"
6
+ fill="currentColor" fill-rule="evenodd"></path>
7
+ </svg>
8
+ </MButton>
9
+ </template>
@@ -1,9 +1,9 @@
1
- export { default as MButtonBasic } from './basic.vue';
2
- export { default as MButtonSize } from './size.vue';
3
- export { default as MButtonRounded } from './rounded.vue';
4
- export { default as MButtonVariant } from './variants.vue';
5
- export { default as MButtonVariantSecondary } from './variants-secondary.vue';
6
- export { default as MButtonDisabled } from './disabled.vue';
7
- export { default as MButtonIconLeft } from './icon-left.vue';
8
- export { default as MButtonIcon } from './icon.vue';
9
- export { default as MButtonLink } from './link.vue';
1
+ export { default as MButtonBasic } from './basic.vue';
2
+ export { default as MButtonSize } from './size.vue';
3
+ export { default as MButtonRounded } from './rounded.vue';
4
+ export { default as MButtonVariant } from './variants.vue';
5
+ export { default as MButtonVariantSecondary } from './variants-secondary.vue';
6
+ export { default as MButtonDisabled } from './disabled.vue';
7
+ export { default as MButtonIconLeft } from './icon-left.vue';
8
+ export { default as MButtonIcon } from './icon.vue';
9
+ export { default as MButtonLink } from './link.vue';
@@ -1,3 +1,3 @@
1
- <template>
2
- <MButton variant="primary" href="http://google.com">Default</MButton>
3
- </template>
1
+ <template>
2
+ <MButton variant="primary" href="http://google.com">Default</MButton>
3
+ </template>
@@ -1,7 +1,7 @@
1
- <template>
2
- <MButton size="xs" rounded>Extra Small</MButton><br/><br/>
3
- <MButton size="sm" rounded>Small</MButton><br/><br/>
4
- <MButton size="md" rounded>Default</MButton><br/><br/>
5
- <MButton size="lg" rounded>Large</MButton><br/><br/>
6
- <MButton size="xl" rounded>Extra Large</MButton><br/><br/>
7
- </template>
1
+ <template>
2
+ <MButton size="xs" rounded>Extra Small</MButton><br/><br/>
3
+ <MButton size="sm" rounded>Small</MButton><br/><br/>
4
+ <MButton size="md" rounded>Default</MButton><br/><br/>
5
+ <MButton size="lg" rounded>Large</MButton><br/><br/>
6
+ <MButton size="xl" rounded>Extra Large</MButton><br/><br/>
7
+ </template>
@@ -1,7 +1,7 @@
1
- <template>
2
- <MButton size="xs">Extra Small</MButton><br/><br/>
3
- <MButton size="sm">Small</MButton><br/><br/>
4
- <MButton size="md">Default</MButton><br/><br/>
5
- <MButton size="lg">Large</MButton><br/><br/>
6
- <MButton size="xl">Extra Large</MButton><br/><br/>
7
- </template>
1
+ <template>
2
+ <MButton size="xs">Extra Small</MButton><br/><br/>
3
+ <MButton size="sm">Small</MButton><br/><br/>
4
+ <MButton size="md">Default</MButton><br/><br/>
5
+ <MButton size="lg">Large</MButton><br/><br/>
6
+ <MButton size="xl">Extra Large</MButton><br/><br/>
7
+ </template>
@@ -1,11 +1,11 @@
1
- <template>
2
- <MButton secondary>Default</MButton><br/><br/>
3
- <MButton secondary variant="tertiary">Tertiary</MButton><br/><br/>
4
- <MButton secondary variant="primary">Primary</MButton><br/><br/>
5
- <MButton secondary variant="dark">Dark</MButton><br/><br/>
6
- <MButton secondary variant="success">Success</MButton><br/><br/>
7
- <MButton secondary variant="warning">Warning</MButton><br/><br/>
8
- <MButton secondary variant="error">Error</MButton><br/><br/>
9
- </template>
10
- <script setup lang="ts">
1
+ <template>
2
+ <MButton secondary>Default</MButton><br/><br/>
3
+ <MButton secondary variant="tertiary">Tertiary</MButton><br/><br/>
4
+ <MButton secondary variant="primary">Primary</MButton><br/><br/>
5
+ <MButton secondary variant="dark">Dark</MButton><br/><br/>
6
+ <MButton secondary variant="success">Success</MButton><br/><br/>
7
+ <MButton secondary variant="warning">Warning</MButton><br/><br/>
8
+ <MButton secondary variant="error">Error</MButton><br/><br/>
9
+ </template>
10
+ <script setup lang="ts">
11
11
  </script>
@@ -1,11 +1,11 @@
1
- <template>
2
- <MButton>Default</MButton><br/><br/>
3
- <MButton variant="tertiary">Tertiary</MButton><br/><br/>
4
- <MButton variant="primary">Primary</MButton><br/><br/>
5
- <MButton variant="dark">Dark</MButton><br/><br/>
6
- <MButton variant="success">Success</MButton><br/><br/>
7
- <MButton variant="warning">Warning</MButton><br/><br/>
8
- <MButton variant="error">Error</MButton><br/><br/>
9
- </template>
10
- <script setup lang="ts">
1
+ <template>
2
+ <MButton>Default</MButton><br/><br/>
3
+ <MButton variant="tertiary">Tertiary</MButton><br/><br/>
4
+ <MButton variant="primary">Primary</MButton><br/><br/>
5
+ <MButton variant="dark">Dark</MButton><br/><br/>
6
+ <MButton variant="success">Success</MButton><br/><br/>
7
+ <MButton variant="warning">Warning</MButton><br/><br/>
8
+ <MButton variant="error">Error</MButton><br/><br/>
9
+ </template>
10
+ <script setup lang="ts">
11
11
  </script>