@teammodlr/ui-kit 2.1.41 → 2.1.43

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 (268) hide show
  1. package/env.d.ts +1 -1
  2. package/lib/components/checkbox/Checkbox.vue.d.ts +1 -0
  3. package/lib/components/checkbox/style/Checkbox.css.d.ts +1 -0
  4. package/lib/index.cjs.js +8 -8
  5. package/lib/index.es.js +1352 -1342
  6. package/lib/nuxt.js +35 -35
  7. package/lib/nuxt.plugin.js +8 -8
  8. package/lib/style.css +1 -1
  9. package/package.json +89 -89
  10. package/src/__storybook__/argTypes.ts +53 -53
  11. package/src/__storybook__/createStory.ts +15 -15
  12. package/src/__storybook__/index.ts +2 -2
  13. package/src/call.ts +34 -34
  14. package/src/components/avatar/Avatar.vue +110 -110
  15. package/src/components/avatar/examples/basic.vue +6 -6
  16. package/src/components/avatar/examples/custom-size.vue +7 -7
  17. package/src/components/avatar/examples/index.ts +5 -5
  18. package/src/components/avatar/examples/sizes.vue +33 -33
  19. package/src/components/avatar/examples/slots.vue +8 -8
  20. package/src/components/avatar/examples/variants.vue +18 -18
  21. package/src/components/avatar/style/Avatar.css.ts +92 -92
  22. package/src/components/avatar/style/index.ts +1 -1
  23. package/src/components/avatargroup/AvatarGroup.vue +72 -72
  24. package/src/components/avatargroup/examples/basic.vue +37 -37
  25. package/src/components/avatargroup/examples/index.ts +1 -1
  26. package/src/components/avatargroup/style/AvatarGroup.css.ts +26 -26
  27. package/src/components/avatargroup/style/index.ts +1 -1
  28. package/src/components/avatargroup/symbol.ts +17 -17
  29. package/src/components/badge/Badge.vue +43 -43
  30. package/src/components/badge/examples/basic.vue +10 -10
  31. package/src/components/badge/examples/index.ts +1 -1
  32. package/src/components/badge/style/Badge.css.ts +135 -135
  33. package/src/components/badge/style/index.ts +1 -1
  34. package/src/components/breadcrumb/Breadcrumb.vue +54 -54
  35. package/src/components/breadcrumb/BreadcrumbItem.vue +72 -72
  36. package/src/components/breadcrumb/examples/basic.vue +7 -7
  37. package/src/components/breadcrumb/examples/index.ts +1 -1
  38. package/src/components/breadcrumb/style/Breadcrumb.css.ts +40 -40
  39. package/src/components/breadcrumb/style/index.ts +1 -1
  40. package/src/components/breadcrumb/symbol.ts +18 -18
  41. package/src/components/button/Button.vue +203 -203
  42. package/src/components/button/examples/basic.vue +3 -3
  43. package/src/components/button/examples/disabled.vue +3 -3
  44. package/src/components/button/examples/icon-left.vue +12 -12
  45. package/src/components/button/examples/icon.vue +9 -9
  46. package/src/components/button/examples/index.ts +9 -9
  47. package/src/components/button/examples/link.vue +3 -3
  48. package/src/components/button/examples/rounded.vue +7 -7
  49. package/src/components/button/examples/size.vue +7 -7
  50. package/src/components/button/examples/variants-secondary.vue +10 -10
  51. package/src/components/button/examples/variants.vue +10 -10
  52. package/src/components/button/style/Button.css.ts +695 -695
  53. package/src/components/button/style/index.ts +1 -1
  54. package/src/components/buttongroup/ButtonGroup.vue +36 -36
  55. package/src/components/buttongroup/examples/basic.vue +9 -9
  56. package/src/components/buttongroup/examples/icon-group.vue +21 -21
  57. package/src/components/buttongroup/examples/index.ts +2 -2
  58. package/src/components/buttongroup/style/ButtonGroup.css.ts +42 -42
  59. package/src/components/buttongroup/style/index.ts +1 -1
  60. package/src/components/buttongroup/symbol.ts +9 -9
  61. package/src/components/checkbox/Checkbox.vue +149 -145
  62. package/src/components/checkbox/examples/basic.vue +9 -9
  63. package/src/components/checkbox/examples/index.ts +2 -2
  64. package/src/components/checkbox/examples/slot.vue +14 -11
  65. package/src/components/checkbox/style/Checkbox.css.ts +178 -161
  66. package/src/components/checkbox/style/index.ts +1 -1
  67. package/src/components/colorpicker/ColorPicker.vue +333 -333
  68. package/src/components/colorpicker/examples/basic.vue +2 -2
  69. package/src/components/colorpicker/examples/index.ts +1 -1
  70. package/src/components/colorpicker/style/ColorPicker.css.ts +127 -127
  71. package/src/components/colorpicker/style/index.ts +1 -1
  72. package/src/components/colorpicker/utils.ts +206 -206
  73. package/src/components/confirm/Confirm.vue +65 -65
  74. package/src/components/confirm/ConfirmProvider.vue +83 -83
  75. package/src/components/confirm/examples/basic.vue +48 -48
  76. package/src/components/confirm/examples/index.ts +1 -1
  77. package/src/components/confirm/examples/wrapper.vue +9 -9
  78. package/src/components/confirm/props.ts +24 -24
  79. package/src/components/confirm/providerProps.ts +10 -10
  80. package/src/components/confirm/types.ts +33 -33
  81. package/src/components/confirm/useConfirm.ts +14 -14
  82. package/src/components/dialog/Dialog.vue +118 -118
  83. package/src/components/dialog/examples/basic.vue +16 -16
  84. package/src/components/dialog/examples/index.ts +1 -1
  85. package/src/components/dialog/style/Dialog.css.ts +100 -100
  86. package/src/components/dialog/style/index.ts +1 -1
  87. package/src/components/dropdown/Dropdown.vue +308 -308
  88. package/src/components/dropdown/DropdownHeading.vue +23 -23
  89. package/src/components/dropdown/DropdownItem.vue +151 -151
  90. package/src/components/dropdown/DropdownList.vue +20 -20
  91. package/src/components/dropdown/DropdownSeperator.vue +22 -22
  92. package/src/components/dropdown/DropdownWrapper.vue +18 -18
  93. package/src/components/dropdown/examples/basic.vue +119 -119
  94. package/src/components/dropdown/examples/context.vue +71 -71
  95. package/src/components/dropdown/examples/index.ts +3 -3
  96. package/src/components/dropdown/hooks.ts +30 -30
  97. package/src/components/dropdown/style/Dropdown.css.ts +158 -158
  98. package/src/components/dropdown/style/index.ts +1 -1
  99. package/src/components/dropdown/symbol.ts +9 -9
  100. package/src/components/form/Form.vue +153 -153
  101. package/src/components/form/examples/basic.vue +75 -75
  102. package/src/components/form/examples/index.ts +1 -1
  103. package/src/components/form/style/Form.css.ts +28 -28
  104. package/src/components/form/style/index.ts +2 -2
  105. package/src/components/form/symbol.ts +16 -16
  106. package/src/components/image/Image.vue +71 -71
  107. package/src/components/image/examples/basic.vue +5 -5
  108. package/src/components/image/examples/index.ts +1 -1
  109. package/src/components/index.ts +47 -47
  110. package/src/components/input/Input.vue +233 -233
  111. package/src/components/input/examples/basic.vue +21 -21
  112. package/src/components/input/examples/index.ts +6 -6
  113. package/src/components/input/examples/left-icon.vue +9 -9
  114. package/src/components/input/examples/prefix.vue +5 -5
  115. package/src/components/input/examples/right-icon.vue +9 -9
  116. package/src/components/input/examples/sizes.vue +9 -9
  117. package/src/components/input/examples/suffix.vue +7 -7
  118. package/src/components/input/style/Input.css.ts +294 -294
  119. package/src/components/input/style/index.ts +1 -1
  120. package/src/components/link/Link.vue +53 -53
  121. package/src/components/link/examples/basic.vue +3 -3
  122. package/src/components/link/examples/index.ts +1 -1
  123. package/src/components/messageprovider/Message.vue +135 -135
  124. package/src/components/messageprovider/MessageProvider.vue +156 -156
  125. package/src/components/messageprovider/examples/basic.vue +70 -70
  126. package/src/components/messageprovider/examples/index.ts +2 -2
  127. package/src/components/messageprovider/examples/update.vue +34 -34
  128. package/src/components/messageprovider/examples/wrapper.vue +9 -9
  129. package/src/components/messageprovider/style/Message.css.ts +111 -111
  130. package/src/components/messageprovider/style/index.ts +1 -1
  131. package/src/components/messageprovider/types.ts +56 -56
  132. package/src/components/messageprovider/useMessage.ts +14 -14
  133. package/src/components/modal/Modal.vue +310 -310
  134. package/src/components/modal/examples/basic.vue +80 -80
  135. package/src/components/modal/examples/index.ts +3 -3
  136. package/src/components/modal/examples/modal-form.vue +99 -99
  137. package/src/components/modal/examples/sidebar.vue +79 -79
  138. package/src/components/modal/style/Modal.css.ts +318 -318
  139. package/src/components/modal/style/index.ts +1 -1
  140. package/src/components/pagination/Pagination.vue +296 -296
  141. package/src/components/pagination/examples/basic.vue +17 -17
  142. package/src/components/pagination/examples/index.ts +1 -1
  143. package/src/components/pagination/style/Pagination.css.ts +93 -93
  144. package/src/components/pagination/style/index.ts +1 -1
  145. package/src/components/radio/Radio.vue +136 -136
  146. package/src/components/radio/examples/basic.vue +8 -8
  147. package/src/components/radio/examples/group.vue +15 -15
  148. package/src/components/radio/examples/index.ts +2 -2
  149. package/src/components/radio/style/Checkbox.css.ts +130 -130
  150. package/src/components/radio/style/index.ts +1 -1
  151. package/src/components/radiobutton/RadioButton.vue +131 -131
  152. package/src/components/radiobutton/style/RadioButton.css.ts +189 -189
  153. package/src/components/radiobutton/style/index.ts +1 -1
  154. package/src/components/radiobuttongroup/RadioButtonGroup.vue +74 -74
  155. package/src/components/radiobuttongroup/examples/basic.vue +16 -16
  156. package/src/components/radiobuttongroup/examples/index.ts +1 -1
  157. package/src/components/radiobuttongroup/style/RadioButtonGroup.css.ts +37 -37
  158. package/src/components/radiobuttongroup/style/index.ts +1 -1
  159. package/src/components/radiobuttongroup/symbol.ts +12 -12
  160. package/src/components/renderer/examlpes/basic.vue +23 -23
  161. package/src/components/renderer/examlpes/index.ts +1 -1
  162. package/src/components/renderer/props.ts +14 -14
  163. package/src/components/renderer/renderer.ts +16 -16
  164. package/src/components/select/Select.vue +781 -781
  165. package/src/components/select/examples/basic.vue +21 -21
  166. package/src/components/select/examples/index.ts +3 -3
  167. package/src/components/select/examples/multiple.vue +21 -21
  168. package/src/components/select/examples/searchable.vue +20 -20
  169. package/src/components/select/style/Select.css.ts +368 -368
  170. package/src/components/select/style/index.ts +1 -1
  171. package/src/components/skeleton/Skeleton.vue +55 -55
  172. package/src/components/skeleton/examples/basic.vue +3 -3
  173. package/src/components/skeleton/examples/index.ts +2 -2
  174. package/src/components/skeleton/examples/post.vue +8 -8
  175. package/src/components/skeleton/style/Skeleton.css.ts +72 -72
  176. package/src/components/skeleton/style/index.ts +2 -2
  177. package/src/components/slider/Slider.vue +76 -76
  178. package/src/components/slider/style/Slider.css.ts +50 -50
  179. package/src/components/slider/style/index.ts +1 -1
  180. package/src/components/switch/Switch.vue +132 -132
  181. package/src/components/switch/examples/basic.vue +9 -9
  182. package/src/components/switch/examples/index.ts +2 -2
  183. package/src/components/switch/examples/slot.vue +11 -11
  184. package/src/components/switch/style/Switch.css.ts +135 -135
  185. package/src/components/switch/style/index.ts +1 -1
  186. package/src/components/tab/Tab.css +113 -113
  187. package/src/components/tab/Tab.vue +98 -98
  188. package/src/components/tab/TabGroup.vue +90 -90
  189. package/src/components/tab/examples/basic.vue +19 -19
  190. package/src/components/tab/examples/index.ts +2 -2
  191. package/src/components/tab/examples/vertical.vue +19 -19
  192. package/src/components/table/Table.vue +198 -198
  193. package/src/components/table/TableBody.vue +13 -13
  194. package/src/components/table/TableCell.vue +13 -13
  195. package/src/components/table/TableHead.vue +46 -46
  196. package/src/components/table/TableHeadRow.vue +15 -15
  197. package/src/components/table/TableRow.vue +19 -19
  198. package/src/components/table/examples/basic.vue +61 -61
  199. package/src/components/table/examples/empty.vue +44 -44
  200. package/src/components/table/examples/index.ts +3 -3
  201. package/src/components/table/examples/selected.vue +68 -68
  202. package/src/components/table/style/Table.css.ts +62 -62
  203. package/src/components/table/style/index.ts +1 -1
  204. package/src/components/table/types/index.ts +6 -6
  205. package/src/components/tag/Tag.vue +72 -72
  206. package/src/components/tag/examples/basic.vue +5 -5
  207. package/src/components/tag/examples/index.ts +1 -1
  208. package/src/components/tag/style/Tag.css.ts +83 -83
  209. package/src/components/tag/style/index.ts +1 -1
  210. package/src/components/textarea/Textarea.vue +180 -180
  211. package/src/components/textarea/examples/basic.vue +8 -8
  212. package/src/components/textarea/examples/index.ts +1 -1
  213. package/src/components/textarea/style/Textarea.css.ts +191 -191
  214. package/src/components/textarea/style/index.ts +1 -1
  215. package/src/components/tooltip/Tooltip.vue +196 -196
  216. package/src/components/tooltip/examples/basic.vue +5 -5
  217. package/src/components/tooltip/examples/index.ts +2 -2
  218. package/src/components/tooltip/examples/placement.vue +9 -9
  219. package/src/components/tooltip/style/Tooltip.css.ts +90 -90
  220. package/src/components/tooltip/style/index.ts +1 -1
  221. package/src/components/transfer/Transfer.vue +145 -145
  222. package/src/components/transfer/examples/basic.vue +21 -21
  223. package/src/components/transfer/examples/index.ts +1 -1
  224. package/src/components/transfer/style/Transfer.css.ts +81 -81
  225. package/src/components/transfer/style/index.ts +1 -1
  226. package/src/components/tree/Tree.vue +138 -138
  227. package/src/components/tree/TreeNode.vue +109 -109
  228. package/src/components/tree/TreeNodeToggle.vue +48 -48
  229. package/src/components/tree/examples/basic.vue +458 -458
  230. package/src/components/tree/examples/index.ts +1 -1
  231. package/src/components/tree/props.ts +97 -97
  232. package/src/components/tree/style/Tree.css.ts +75 -75
  233. package/src/components/tree/style/index.ts +1 -1
  234. package/src/components/tree/types.ts +103 -103
  235. package/src/components/virtualscroll/VirtualScroll.css +13 -13
  236. package/src/components/virtualscroll/VirtualScroll.vue +166 -166
  237. package/src/components/virtualscroll/examples/basic.vue +31 -31
  238. package/src/components/virtualscroll/examples/index.ts +1 -1
  239. package/src/components/virtualscroll/style/VirtualScroll.css.ts +17 -17
  240. package/src/components/virtualscroll/style/index.ts +1 -1
  241. package/src/composables/element.ts +13 -13
  242. package/src/composables/index.ts +4 -4
  243. package/src/composables/useCachedUid.ts +49 -49
  244. package/src/composables/useEventListener.ts +19 -19
  245. package/src/composables/useInput.ts +151 -151
  246. package/src/composables/useInteractive.ts +19 -19
  247. package/src/composables/useIsServer.ts +7 -7
  248. package/src/composables/useMergedState.ts +18 -18
  249. package/src/composables/useMount.ts +43 -43
  250. package/src/composables/usePopper.ts +215 -215
  251. package/src/composables/useZIndex.ts +33 -33
  252. package/src/create.ts +38 -38
  253. package/src/css/components.css +16 -16
  254. package/src/css/index.css +4 -4
  255. package/src/css/transitions.css +40 -40
  256. package/src/css/variables.css +80 -80
  257. package/src/examples/cards/sidebar.vue +262 -262
  258. package/src/examples/modal/modal.vue +52 -52
  259. package/src/exports/nuxt.js +35 -35
  260. package/src/exports/nuxt.plugin.js +8 -8
  261. package/src/index.ts +5 -5
  262. package/src/install.ts +8 -8
  263. package/src/shims-vue.d.ts +6 -6
  264. package/src/styles/theme.css.ts +181 -181
  265. package/src/styles/transitions.css.ts +97 -97
  266. package/src/types/props.ts +19 -19
  267. package/src/utils/injection.ts +5 -5
  268. 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>