@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
@@ -0,0 +1,26 @@
1
+ <script lang="ts">
2
+ export interface ConfigProviderProps {
3
+ useId?: () => string
4
+ }
5
+ export default {
6
+ name: 'ConfigProvider',
7
+ }
8
+ </script>
9
+
10
+ <script setup lang="ts">
11
+ import {provide} from "vue";
12
+ import type {ConfigProviderInjection} from "./types";
13
+
14
+ const props = withDefaults(defineProps<ConfigProviderProps>(), {
15
+ useId: undefined
16
+ })
17
+
18
+ const api: ConfigProviderInjection = {
19
+ useId: props['useId'],
20
+ } as const;
21
+
22
+ provide('m-config', api);
23
+ </script>
24
+ <template>
25
+ <slot />
26
+ </template>
@@ -0,0 +1,3 @@
1
+ export interface ConfigProviderInjection {
2
+ useId?: () => string;
3
+ }
@@ -1,65 +1,65 @@
1
- <template>
2
- <div>
3
- <MModal
4
- ref="modal"
5
- :title="title"
6
- :canClickOutside="false"
7
- :onClose="onClose">
8
- <template #body>
9
- {{ content }}
10
- </template>
11
-
12
- <template #footer>
13
- <div style="display: flex; flex-grow: 1; justify-content: end">
14
- <MButton :variant="okVariant" @click="handleOk">
15
- {{ okText ?? 'Okay' }}
16
- </MButton>
17
- <MButton style="margin-left: 8px" @click="handleCancel">
18
- {{ cancelText ?? 'Cancel' }}
19
- </MButton>
20
- </div>
21
- </template>
22
- </MModal>
23
- </div>
24
- </template>
25
-
26
- <script lang="ts">
27
- import { defineComponent, onMounted, ref } from 'vue';
28
- import { useZIndex } from '../../composables/useZIndex';
29
- import { confirmProps } from './props';
30
- import MModal from '../modal/Modal.vue';
31
- import MButton from '../button/Button.vue';
32
-
33
- export default defineComponent({
34
- name: 'Confirm',
35
- props: confirmProps,
36
- setup(props, { slots }) {
37
- const modal = ref();
38
-
39
- const { nextZIndex } = useZIndex();
40
-
41
- async function handleCancel(event: MouseEvent) {
42
- modal.value?.close();
43
- if (props.onCancel) {
44
- await props.onCancel(event);
45
- }
46
- }
47
-
48
- async function handleOk(event: MouseEvent) {
49
- modal.value?.close();
50
- if (props.onOk) {
51
- props.onOk(event);
52
- }
53
- }
54
- onMounted(() => {
55
- modal.value?.open(null);
56
- });
57
- return {
58
- modal,
59
- handleOk,
60
- handleCancel
61
- };
62
- },
63
- components: { MModal, MButton }
64
- });
65
- </script>
1
+ <template>
2
+ <div>
3
+ <MModal
4
+ ref="modal"
5
+ :title="title"
6
+ :canClickOutside="false"
7
+ :onClose="onClose">
8
+ <template #body>
9
+ {{ content }}
10
+ </template>
11
+
12
+ <template #footer>
13
+ <div style="display: flex; flex-grow: 1; justify-content: end">
14
+ <MButton :variant="okVariant" @click="handleOk">
15
+ {{ okText ?? 'Okay' }}
16
+ </MButton>
17
+ <MButton style="margin-left: 8px" @click="handleCancel">
18
+ {{ cancelText ?? 'Cancel' }}
19
+ </MButton>
20
+ </div>
21
+ </template>
22
+ </MModal>
23
+ </div>
24
+ </template>
25
+
26
+ <script lang="ts">
27
+ import { defineComponent, onMounted, ref } from 'vue';
28
+ import { useZIndex } from '../../composables/useZIndex';
29
+ import { confirmProps } from './props';
30
+ import MModal from '../modal/Modal.vue';
31
+ import MButton from '../button/Button.vue';
32
+
33
+ export default defineComponent({
34
+ name: 'Confirm',
35
+ props: confirmProps,
36
+ setup(props, { slots }) {
37
+ const modal = ref();
38
+
39
+ const { nextZIndex } = useZIndex();
40
+
41
+ async function handleCancel(event: MouseEvent) {
42
+ modal.value?.close();
43
+ if (props.onCancel) {
44
+ await props.onCancel(event);
45
+ }
46
+ }
47
+
48
+ async function handleOk(event: MouseEvent) {
49
+ modal.value?.close();
50
+ if (props.onOk) {
51
+ props.onOk(event);
52
+ }
53
+ }
54
+ onMounted(() => {
55
+ modal.value?.open(null);
56
+ });
57
+ return {
58
+ modal,
59
+ handleOk,
60
+ handleCancel
61
+ };
62
+ },
63
+ components: { MModal, MButton }
64
+ });
65
+ </script>
@@ -1,83 +1,83 @@
1
- <template>
2
- <slot />
3
- <template v-if="dialogList.length > 0">
4
- <Teleport :to="teleportTo ?? 'body'">
5
- <MConfirm
6
- v-for="dialog in dialogList"
7
- :key="dialog.key"
8
- :internalKey="dialog.key"
9
- :title="dialog.title"
10
- :content="dialog.content"
11
- :okText="dialog.okText"
12
- :cancelText="dialog.cancelText"
13
- :on-ok="dialog.onOk"
14
- :on-cancel="dialog.onCancel"
15
- :ok-variant="dialog.okVariant"
16
- ref="dialogRefs" />
17
- </Teleport>
18
- </template>
19
- </template>
20
-
21
- <script lang="ts">
22
- import { defineComponent, provide, ref } from 'vue';
23
- import { useCachedUid } from '../../composables/useCachedUid';
24
- import { providerProps } from './providerProps';
25
- import type { Confirm, ConfirmApiInjection, ConfirmOptions } from './types';
26
- import MConfirm from './Confirm.vue';
27
-
28
- interface PrivateConfirm extends Confirm {
29
- key: string;
30
- }
31
-
32
- interface PrivateConfirmRef extends Confirm {
33
- key: string;
34
- hide: () => void;
35
- }
36
-
37
- export default defineComponent({
38
- name: 'ConfirmProvider',
39
- props: providerProps,
40
- components: {
41
- MConfirm
42
- },
43
- setup(props, { slots }) {
44
- const dialogListRef = ref<PrivateConfirm[]>([]);
45
- const dialogRefs: Record<string, PrivateConfirmRef> = {};
46
-
47
- function create(options: ConfirmOptions): Confirm {
48
- const { id } = useCachedUid('m-confirm');
49
- const key = id.value;
50
- const dialog: PrivateConfirm = {
51
- ...options,
52
- key,
53
- destroy: () => {
54
- dialogRefs[key].hide();
55
- }
56
- };
57
-
58
- dialogListRef.value.push(dialog);
59
- return dialog;
60
- }
61
-
62
- function destroyAll(): void {
63
- // @ts-ignore
64
- Object.values(dialogRefs.value).forEach(dialog => {
65
- dialog.hide();
66
- });
67
- }
68
-
69
- const api: ConfirmApiInjection = {
70
- create,
71
- destroyAll
72
- } as const;
73
-
74
- provide('m-confirm', api);
75
-
76
- return {
77
- ...api,
78
- dialogRefs,
79
- dialogList: dialogListRef
80
- };
81
- }
82
- });
83
- </script>
1
+ <template>
2
+ <slot />
3
+ <template v-if="dialogList.length > 0">
4
+ <Teleport :to="teleportTo ?? 'body'">
5
+ <MConfirm
6
+ v-for="dialog in dialogList"
7
+ :key="dialog.key"
8
+ :internalKey="dialog.key"
9
+ :title="dialog.title"
10
+ :content="dialog.content"
11
+ :okText="dialog.okText"
12
+ :cancelText="dialog.cancelText"
13
+ :on-ok="dialog.onOk"
14
+ :on-cancel="dialog.onCancel"
15
+ :ok-variant="dialog.okVariant"
16
+ ref="dialogRefs" />
17
+ </Teleport>
18
+ </template>
19
+ </template>
20
+
21
+ <script lang="ts">
22
+ import { defineComponent, provide, ref } from 'vue';
23
+ import { useId } from '../../composables/useCachedUid';
24
+ import { providerProps } from './providerProps';
25
+ import type { Confirm, ConfirmApiInjection, ConfirmOptions } from './types';
26
+ import MConfirm from './Confirm.vue';
27
+
28
+ interface PrivateConfirm extends Confirm {
29
+ key: string;
30
+ }
31
+
32
+ interface PrivateConfirmRef extends Confirm {
33
+ key: string;
34
+ hide: () => void;
35
+ }
36
+
37
+ export default defineComponent({
38
+ name: 'ConfirmProvider',
39
+ props: providerProps,
40
+ components: {
41
+ MConfirm
42
+ },
43
+ setup(props, { slots }) {
44
+ const dialogListRef = ref<PrivateConfirm[]>([]);
45
+ const dialogRefs: Record<string, PrivateConfirmRef> = {};
46
+
47
+ function create(options: ConfirmOptions): Confirm {
48
+ const id = useId(null, 'm-confirm');
49
+ const key = id;
50
+ const dialog: PrivateConfirm = {
51
+ ...options,
52
+ key,
53
+ destroy: () => {
54
+ dialogRefs[key].hide();
55
+ }
56
+ };
57
+
58
+ dialogListRef.value.push(dialog);
59
+ return dialog;
60
+ }
61
+
62
+ function destroyAll(): void {
63
+ // @ts-ignore
64
+ Object.values(dialogRefs.value).forEach(dialog => {
65
+ dialog.hide();
66
+ });
67
+ }
68
+
69
+ const api: ConfirmApiInjection = {
70
+ create,
71
+ destroyAll
72
+ } as const;
73
+
74
+ provide('m-confirm', api);
75
+
76
+ return {
77
+ ...api,
78
+ dialogRefs,
79
+ dialogList: dialogListRef
80
+ };
81
+ }
82
+ });
83
+ </script>
@@ -1,48 +1,48 @@
1
- <template>
2
- <div>
3
- <button @click="showBasicDialog">
4
- Show Basic</button>
5
-
6
- <button @click="showDangerDialog">
7
- Show Danger
8
- </button>
9
- </div>
10
- </template>
11
-
12
- <script lang="ts" setup>
13
- import { ref } from 'vue';
14
- import { useConfirm } from '../useConfirm';
15
-
16
- const confirm = useConfirm();
17
-
18
- async function showBasicDialog() {
19
- const result = confirm.create({
20
- title: 'Hello World',
21
- content: 'This is a dialog',
22
- okText: 'OK',
23
- cancelText: 'Cancel',
24
- onOk: () => {
25
- console.log('OK');
26
- },
27
- onCancel: () => {
28
- console.log('Cancel');
29
- }
30
- });
31
- }
32
-
33
- async function showDangerDialog() {
34
- const result = confirm.create({
35
- title: 'Hello World',
36
- content: 'This is a confirm',
37
- okText: 'Continue',
38
- okVariant: 'error',
39
- cancelText: 'Cancel',
40
- onOk: () => {
41
- showBasicDialog()
42
- },
43
- onCancel: () => {
44
- console.log('Cancel');
45
- }
46
- });
47
- }
48
- </script>
1
+ <template>
2
+ <div>
3
+ <button @click="showBasicDialog">
4
+ Show Basic</button>
5
+
6
+ <button @click="showDangerDialog">
7
+ Show Danger
8
+ </button>
9
+ </div>
10
+ </template>
11
+
12
+ <script lang="ts" setup>
13
+ import { ref } from 'vue';
14
+ import { useConfirm } from '../useConfirm';
15
+
16
+ const confirm = useConfirm();
17
+
18
+ async function showBasicDialog() {
19
+ const result = confirm.create({
20
+ title: 'Hello World',
21
+ content: 'This is a dialog',
22
+ okText: 'OK',
23
+ cancelText: 'Cancel',
24
+ onOk: () => {
25
+ console.log('OK');
26
+ },
27
+ onCancel: () => {
28
+ console.log('Cancel');
29
+ }
30
+ });
31
+ }
32
+
33
+ async function showDangerDialog() {
34
+ const result = confirm.create({
35
+ title: 'Hello World',
36
+ content: 'This is a confirm',
37
+ okText: 'Continue',
38
+ okVariant: 'error',
39
+ cancelText: 'Cancel',
40
+ onOk: () => {
41
+ showBasicDialog()
42
+ },
43
+ onCancel: () => {
44
+ console.log('Cancel');
45
+ }
46
+ });
47
+ }
48
+ </script>
@@ -1 +1 @@
1
- export { default as MConfirmProviderBasic } from './basic.vue';
1
+ export { default as MConfirmProviderBasic } from './basic.vue';
@@ -1,9 +1,9 @@
1
- <template>
2
- <m-message-provider placement="top-left">
3
- <slot />
4
- </m-message-provider>
5
- </template>
6
-
7
- <script lang="ts" setup>
8
- import MMessageProvider from '../MessageProvider.vue';
9
- </script>
1
+ <template>
2
+ <m-message-provider placement="top-left">
3
+ <slot />
4
+ </m-message-provider>
5
+ </template>
6
+
7
+ <script lang="ts" setup>
8
+ import MMessageProvider from '../MessageProvider.vue';
9
+ </script>
@@ -1,24 +1,24 @@
1
- import type { Variant } from '../../types/props';
2
- import type { ExtractPropTypes, PropType, VNodeChild } from 'vue';
3
-
4
- export const confirmProps = {
5
- title: String,
6
- closable: {
7
- type: Boolean,
8
- default: true
9
- },
10
- okText: String,
11
- cancelText: String,
12
- content: [String, Function] as PropType<string | (() => VNodeChild)>,
13
- action: Function as PropType<() => VNodeChild>,
14
- loading: Boolean,
15
- onOk: Function as PropType<(e: MouseEvent) => void>,
16
- onCancel: Function as PropType<(e: MouseEvent) => void>,
17
- onClose: Function as PropType<() => void>,
18
- okVariant: {
19
- type: String as PropType<Variant>,
20
- default: 'primary'
21
- }
22
- } as const;
23
-
24
- export type ConfirmProps = ExtractPropTypes<typeof confirmProps>;
1
+ import type { Variant } from '../../types/props';
2
+ import type { ExtractPropTypes, PropType, VNodeChild } from 'vue';
3
+
4
+ export const confirmProps = {
5
+ title: String,
6
+ closable: {
7
+ type: Boolean,
8
+ default: true
9
+ },
10
+ okText: String,
11
+ cancelText: String,
12
+ content: [String, Function] as PropType<string | (() => VNodeChild)>,
13
+ action: Function as PropType<() => VNodeChild>,
14
+ loading: Boolean,
15
+ onOk: Function as PropType<(e: MouseEvent) => void>,
16
+ onCancel: Function as PropType<(e: MouseEvent) => void>,
17
+ onClose: Function as PropType<() => void>,
18
+ okVariant: {
19
+ type: String as PropType<Variant>,
20
+ default: 'primary'
21
+ }
22
+ } as const;
23
+
24
+ export type ConfirmProps = ExtractPropTypes<typeof confirmProps>;
@@ -1,10 +1,10 @@
1
- import type { ExtractPropTypes, PropType } from 'vue';
2
-
3
- export const providerProps = {
4
- teleportTo: {
5
- type: String,
6
- default: 'body'
7
- }
8
- };
9
-
10
- export type ProviderProps = ExtractPropTypes<typeof providerProps>;
1
+ import type { ExtractPropTypes, PropType } from 'vue';
2
+
3
+ export const providerProps = {
4
+ teleportTo: {
5
+ type: String,
6
+ default: 'body'
7
+ }
8
+ };
9
+
10
+ export type ProviderProps = ExtractPropTypes<typeof providerProps>;
@@ -1,33 +1,33 @@
1
- import type { Variant } from '../../types/props';
2
- import type { VNodeChild } from 'vue';
3
-
4
- export type ConfirmContentType = string;
5
-
6
- export type ConfirmContentRender = (props: any) => VNodeChild;
7
-
8
- export interface ConfirmOptions {
9
- title?: string;
10
- render?: ConfirmContentRender;
11
- content: ConfirmContentType;
12
- onClose?: () => void;
13
- onOpen?: () => void;
14
- onOk?: () => void;
15
- onCancel?: () => void;
16
- okVariant?: Variant;
17
- okText?: ConfirmContentType;
18
- cancelText?: ConfirmContentType;
19
- }
20
-
21
- export interface ConfirmResponse {
22
- result: boolean;
23
- data: any;
24
- }
25
-
26
- export interface ConfirmApiInjection {
27
- create: (options: ConfirmOptions) => Confirm;
28
- destroyAll: () => void;
29
- }
30
-
31
- export interface Confirm extends ConfirmOptions {
32
- destroy: () => void;
33
- }
1
+ import type { Variant } from '../../types/props';
2
+ import type { VNodeChild } from 'vue';
3
+
4
+ export type ConfirmContentType = string;
5
+
6
+ export type ConfirmContentRender = (props: any) => VNodeChild;
7
+
8
+ export interface ConfirmOptions {
9
+ title?: string;
10
+ render?: ConfirmContentRender;
11
+ content: ConfirmContentType;
12
+ onClose?: () => void;
13
+ onOpen?: () => void;
14
+ onOk?: () => void;
15
+ onCancel?: () => void;
16
+ okVariant?: Variant;
17
+ okText?: ConfirmContentType;
18
+ cancelText?: ConfirmContentType;
19
+ }
20
+
21
+ export interface ConfirmResponse {
22
+ result: boolean;
23
+ data: any;
24
+ }
25
+
26
+ export interface ConfirmApiInjection {
27
+ create: (options: ConfirmOptions) => Confirm;
28
+ destroyAll: () => void;
29
+ }
30
+
31
+ export interface Confirm extends ConfirmOptions {
32
+ destroy: () => void;
33
+ }
@@ -1,14 +1,14 @@
1
- import { inject } from 'vue';
2
- import type { ConfirmApiInjection } from './types';
3
-
4
- export function useConfirm(): ConfirmApiInjection {
5
- const api = inject('m-confirm', null);
6
-
7
- if (api === null) {
8
- throw new Error(
9
- 'm-confirm api is not provided, ensure the component is wrapped in <m-confirm-provider />.'
10
- );
11
- }
12
-
13
- return api;
14
- }
1
+ import { inject } from 'vue';
2
+ import type { ConfirmApiInjection } from './types';
3
+
4
+ export function useConfirm(): ConfirmApiInjection {
5
+ const api = inject('m-confirm', null);
6
+
7
+ if (api === null) {
8
+ throw new Error(
9
+ 'm-confirm api is not provided, ensure the component is wrapped in <m-confirm-provider />.'
10
+ );
11
+ }
12
+
13
+ return api;
14
+ }