@teammodlr/ui-kit 2.1.39 → 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 +10 -10
  5. package/lib/index.es.js +1950 -1932
  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,19 +1,19 @@
1
- <template>
2
- <MTabGroup v-model="active" vertical>
3
- <MTab value="one" label="One">
4
- Hello Worlddsd
5
- </MTab>
6
- <MTab value="two" label="Two" disabled>
7
- Hello World Two
8
- </MTab>
9
- <MTab value="three" label="Third">
10
- Hello World Two dfndjfn
11
- </MTab>
12
- </MTabGroup>
13
- </template>
14
-
15
- <script lang="ts" setup>
16
- import { ref } from "vue";
17
-
18
- const active = ref("one");
19
- </script>
1
+ <template>
2
+ <MTabGroup v-model="active" vertical>
3
+ <MTab value="one" label="One">
4
+ Hello Worlddsd
5
+ </MTab>
6
+ <MTab value="two" label="Two" disabled>
7
+ Hello World Two
8
+ </MTab>
9
+ <MTab value="three" label="Third">
10
+ Hello World Two dfndjfn
11
+ </MTab>
12
+ </MTabGroup>
13
+ </template>
14
+
15
+ <script lang="ts" setup>
16
+ import { ref } from "vue";
17
+
18
+ const active = ref("one");
19
+ </script>
@@ -1,198 +1,198 @@
1
- <template>
2
- <div
3
- :class="wrapperComputedClasses"
4
- >
5
- <table
6
- :class="tableComputedClasses"
7
- >
8
- <TableHeadRow>
9
- <TableHead
10
- v-if="modelValue"
11
- scope="col"
12
- :width="20"
13
- >
14
- <MCheckbox
15
- :checked="indeterminate || selected.length === items.length"
16
- :indeterminate="indeterminate"
17
- @change="onChange"
18
- />
19
- </TableHead>
20
- <TableHead
21
- v-for="(header, index) in headers"
22
- :key="index"
23
- :width="header.width"
24
- :style="{textAlign: header.align}"
25
- >
26
- <slot :name="`${header.key}-header`">
27
- {{ header.name }}
28
- </slot>
29
- </TableHead>
30
- </TableHeadRow>
31
- <TableBody>
32
- <TableRow
33
- v-for="(item, index) in items"
34
- v-if="items.length > 0"
35
- :key="index"
36
- #default="{ onHover }"
37
- >
38
- <TableCell
39
- v-if="modelValue"
40
- >
41
- <MCheckbox
42
- v-model="selected"
43
- :value="item"
44
- @click.stop
45
- />
46
- </TableCell>
47
- <TableCell
48
- v-for="(header, index) in headers"
49
- :key="index"
50
- :style="{ textAlign: header.align}"
51
- >
52
- <slot :name="header.key" :item="item" :onHover="onHover">
53
- {{//@ts-ignore
54
- item[header.key] }}
55
- </slot>
56
- </TableCell>
57
- </TableRow>
58
- <tr v-if="items.length === 0">
59
- <td :colspan="headers.length">
60
- <slot name="empty" />
61
- </td>
62
- </tr>
63
- </TableBody>
64
- </table>
65
- </div>
66
- </template>
67
-
68
- <script lang="ts">
69
- import { computed, defineComponent, type PropType, toRaw } from 'vue';
70
- import type { TableHeadItem } from './types';
71
- import TableHeadRow from './TableHeadRow.vue';
72
- import TableHead from './TableHead.vue';
73
- import TableBody from './TableBody.vue';
74
- import TableRow from './TableRow.vue';
75
- import TableCell from './TableCell.vue';
76
- import MCheckbox from '../checkbox/Checkbox.vue';
77
-
78
- import * as style from "./style";
79
- import { indeterminate } from '../checkbox/style';
80
-
81
- export default defineComponent({
82
- name: "Table",
83
- components: {
84
- TableHeadRow,
85
- TableHead,
86
- TableBody,
87
- TableRow,
88
- TableCell,
89
- MCheckbox
90
- },
91
- emits: [
92
- 'update:modelValue',
93
- ],
94
- props: {
95
- modelValue: {
96
- type: Array,
97
- default: null
98
- },
99
- headers: {
100
- type: Array as PropType<Array<TableHeadItem>>,
101
- default: () => [],
102
- },
103
- items: {
104
- type: Array,
105
- default: () => []
106
- },
107
- loading: {
108
- type: Boolean,
109
- default: false
110
- },
111
- striped: {
112
- type: Boolean,
113
- default: false
114
- },
115
- hover: {
116
- type: Boolean,
117
- default: false
118
- },
119
- },
120
- setup(props, { emit, attrs }) {
121
-
122
- const wrapperComputedClasses = computed(() => {
123
- return [
124
- style.wrapper,
125
- 'm-table__wrapper',
126
- {
127
- 'm-table__wrapper--loading': props.loading
128
- }
129
- ]
130
- });
131
-
132
- const tableComputedClasses = computed(() => {
133
- return [
134
- style.table,
135
- {
136
- [style.hoverable]: props.hover,
137
- [style.striped]: props.striped,
138
- }
139
- ]
140
- });
141
-
142
- const selected = computed({
143
- get() {
144
- return props.modelValue;
145
- },
146
- set(value) {
147
- emit('update:modelValue', value);
148
- }
149
- });
150
-
151
- const indeterminate = computed(() => {
152
- return selected.value && selected.value.length > 0 && selected.value.length < props.items.length;
153
- });
154
-
155
- function compare (a: any, z: any) {
156
- return a === z;
157
- }
158
-
159
- function onSelect (row: any) {
160
-
161
- if (!attrs.onSelect) {
162
- selected.value.push(row);
163
- return;
164
- }
165
-
166
- // @ts-ignore
167
- attrs.onSelect(row);
168
- }
169
-
170
- function selectAllRows() {
171
- props.items.forEach((row: any) => {
172
- if (selected.value.some((item) => compare(toRaw(item), toRaw(row)))) {
173
- return
174
- }
175
-
176
- onSelect(row);
177
- });
178
- }
179
-
180
- function onChange (event: any) {
181
- if (event.target.checked) {
182
- selectAllRows();
183
- } else {
184
- selected.value = [];
185
- }
186
- }
187
-
188
- return {
189
- wrapperComputedClasses,
190
- tableComputedClasses,
191
- selected,
192
- indeterminate,
193
- onChange,
194
- onSelect
195
- }
196
- }
197
- })
198
- </script>
1
+ <template>
2
+ <div
3
+ :class="wrapperComputedClasses"
4
+ >
5
+ <table
6
+ :class="tableComputedClasses"
7
+ >
8
+ <TableHeadRow>
9
+ <TableHead
10
+ v-if="modelValue"
11
+ scope="col"
12
+ :width="20"
13
+ >
14
+ <MCheckbox
15
+ :checked="indeterminate || selected.length === items.length"
16
+ :indeterminate="indeterminate"
17
+ @change="onChange"
18
+ />
19
+ </TableHead>
20
+ <TableHead
21
+ v-for="(header, index) in headers"
22
+ :key="index"
23
+ :width="header.width"
24
+ :style="{textAlign: header.align}"
25
+ >
26
+ <slot :name="`${header.key}-header`">
27
+ {{ header.name }}
28
+ </slot>
29
+ </TableHead>
30
+ </TableHeadRow>
31
+ <TableBody>
32
+ <TableRow
33
+ v-for="(item, index) in items"
34
+ v-if="items.length > 0"
35
+ :key="index"
36
+ #default="{ onHover }"
37
+ >
38
+ <TableCell
39
+ v-if="modelValue"
40
+ >
41
+ <MCheckbox
42
+ v-model="selected"
43
+ :value="item"
44
+ @click.stop
45
+ />
46
+ </TableCell>
47
+ <TableCell
48
+ v-for="(header, index) in headers"
49
+ :key="index"
50
+ :style="{ textAlign: header.align}"
51
+ >
52
+ <slot :name="header.key" :item="item" :onHover="onHover">
53
+ {{//@ts-ignore
54
+ item[header.key] }}
55
+ </slot>
56
+ </TableCell>
57
+ </TableRow>
58
+ <tr v-if="items.length === 0">
59
+ <td :colspan="headers.length">
60
+ <slot name="empty" />
61
+ </td>
62
+ </tr>
63
+ </TableBody>
64
+ </table>
65
+ </div>
66
+ </template>
67
+
68
+ <script lang="ts">
69
+ import { computed, defineComponent, type PropType, toRaw } from 'vue';
70
+ import type { TableHeadItem } from './types';
71
+ import TableHeadRow from './TableHeadRow.vue';
72
+ import TableHead from './TableHead.vue';
73
+ import TableBody from './TableBody.vue';
74
+ import TableRow from './TableRow.vue';
75
+ import TableCell from './TableCell.vue';
76
+ import MCheckbox from '../checkbox/Checkbox.vue';
77
+
78
+ import * as style from "./style";
79
+ import { indeterminate } from '../checkbox/style';
80
+
81
+ export default defineComponent({
82
+ name: "Table",
83
+ components: {
84
+ TableHeadRow,
85
+ TableHead,
86
+ TableBody,
87
+ TableRow,
88
+ TableCell,
89
+ MCheckbox
90
+ },
91
+ emits: [
92
+ 'update:modelValue',
93
+ ],
94
+ props: {
95
+ modelValue: {
96
+ type: Array,
97
+ default: null
98
+ },
99
+ headers: {
100
+ type: Array as PropType<Array<TableHeadItem>>,
101
+ default: () => [],
102
+ },
103
+ items: {
104
+ type: Array,
105
+ default: () => []
106
+ },
107
+ loading: {
108
+ type: Boolean,
109
+ default: false
110
+ },
111
+ striped: {
112
+ type: Boolean,
113
+ default: false
114
+ },
115
+ hover: {
116
+ type: Boolean,
117
+ default: false
118
+ },
119
+ },
120
+ setup(props, { emit, attrs }) {
121
+
122
+ const wrapperComputedClasses = computed(() => {
123
+ return [
124
+ style.wrapper,
125
+ 'm-table__wrapper',
126
+ {
127
+ 'm-table__wrapper--loading': props.loading
128
+ }
129
+ ]
130
+ });
131
+
132
+ const tableComputedClasses = computed(() => {
133
+ return [
134
+ style.table,
135
+ {
136
+ [style.hoverable]: props.hover,
137
+ [style.striped]: props.striped,
138
+ }
139
+ ]
140
+ });
141
+
142
+ const selected = computed({
143
+ get() {
144
+ return props.modelValue;
145
+ },
146
+ set(value) {
147
+ emit('update:modelValue', value);
148
+ }
149
+ });
150
+
151
+ const indeterminate = computed(() => {
152
+ return selected.value && selected.value.length > 0 && selected.value.length < props.items.length;
153
+ });
154
+
155
+ function compare (a: any, z: any) {
156
+ return a === z;
157
+ }
158
+
159
+ function onSelect (row: any) {
160
+
161
+ if (!attrs.onSelect) {
162
+ selected.value.push(row);
163
+ return;
164
+ }
165
+
166
+ // @ts-ignore
167
+ attrs.onSelect(row);
168
+ }
169
+
170
+ function selectAllRows() {
171
+ props.items.forEach((row: any) => {
172
+ if (selected.value.some((item) => compare(toRaw(item), toRaw(row)))) {
173
+ return
174
+ }
175
+
176
+ onSelect(row);
177
+ });
178
+ }
179
+
180
+ function onChange (event: any) {
181
+ if (event.target.checked) {
182
+ selectAllRows();
183
+ } else {
184
+ selected.value = [];
185
+ }
186
+ }
187
+
188
+ return {
189
+ wrapperComputedClasses,
190
+ tableComputedClasses,
191
+ selected,
192
+ indeterminate,
193
+ onChange,
194
+ onSelect
195
+ }
196
+ }
197
+ })
198
+ </script>
@@ -1,13 +1,13 @@
1
- <template>
2
- <tbody>
3
- <slot />
4
- </tbody>
5
- </template>
6
-
7
- <script lang="ts">
8
- import { defineComponent } from "vue";
9
-
10
- export default defineComponent({
11
- name: "TableBody"
12
- });
13
- </script>
1
+ <template>
2
+ <tbody>
3
+ <slot />
4
+ </tbody>
5
+ </template>
6
+
7
+ <script lang="ts">
8
+ import { defineComponent } from "vue";
9
+
10
+ export default defineComponent({
11
+ name: "TableBody"
12
+ });
13
+ </script>
@@ -1,13 +1,13 @@
1
- <template>
2
- <td >
3
- <slot />
4
- </td>
5
- </template>
6
-
7
- <script lang="ts">
8
- import { defineComponent } from "vue";
9
-
10
- export default defineComponent({
11
- name: "TableCell"
12
- });
13
- </script>
1
+ <template>
2
+ <td >
3
+ <slot />
4
+ </td>
5
+ </template>
6
+
7
+ <script lang="ts">
8
+ import { defineComponent } from "vue";
9
+
10
+ export default defineComponent({
11
+ name: "TableCell"
12
+ });
13
+ </script>
@@ -1,46 +1,46 @@
1
- <template>
2
- <th :style="computedStyles">
3
- <slot />
4
- </th>
5
- </template>
6
-
7
- <script lang="ts">
8
- import { computed, defineComponent } from "vue";
9
-
10
- export default defineComponent({
11
- name: "TableHead",
12
- props: {
13
- sort: {
14
- type: Number
15
- },
16
- sortable: {
17
- type: Boolean,
18
- default: false
19
- },
20
- width: {
21
- type: [Number, String]
22
- },
23
- },
24
- setup(props) {
25
-
26
- const computedWidth = computed(() => {
27
- if (isNaN(Number(props.width))) {
28
- return props.width;
29
- }
30
-
31
- return `${props.width}px`;
32
- });
33
-
34
- const computedStyles = computed(() => {
35
- // if string is passed, return it
36
- return {
37
- width: computedWidth.value
38
- }
39
- });
40
-
41
- return {
42
- computedStyles
43
- }
44
- }
45
- });
46
- </script>
1
+ <template>
2
+ <th :style="computedStyles">
3
+ <slot />
4
+ </th>
5
+ </template>
6
+
7
+ <script lang="ts">
8
+ import { computed, defineComponent } from "vue";
9
+
10
+ export default defineComponent({
11
+ name: "TableHead",
12
+ props: {
13
+ sort: {
14
+ type: Number
15
+ },
16
+ sortable: {
17
+ type: Boolean,
18
+ default: false
19
+ },
20
+ width: {
21
+ type: [Number, String]
22
+ },
23
+ },
24
+ setup(props) {
25
+
26
+ const computedWidth = computed(() => {
27
+ if (isNaN(Number(props.width))) {
28
+ return props.width;
29
+ }
30
+
31
+ return `${props.width}px`;
32
+ });
33
+
34
+ const computedStyles = computed(() => {
35
+ // if string is passed, return it
36
+ return {
37
+ width: computedWidth.value
38
+ }
39
+ });
40
+
41
+ return {
42
+ computedStyles
43
+ }
44
+ }
45
+ });
46
+ </script>
@@ -1,15 +1,15 @@
1
- <template>
2
- <thead>
3
- <tr>
4
- <slot />
5
- </tr>
6
- </thead>
7
- </template>
8
-
9
- <script lang="ts">
10
- import { defineComponent } from "vue";
11
-
12
- export default defineComponent({
13
- name: "TableHeadRow"
14
- });
15
- </script>
1
+ <template>
2
+ <thead>
3
+ <tr>
4
+ <slot />
5
+ </tr>
6
+ </thead>
7
+ </template>
8
+
9
+ <script lang="ts">
10
+ import { defineComponent } from "vue";
11
+
12
+ export default defineComponent({
13
+ name: "TableHeadRow"
14
+ });
15
+ </script>
@@ -1,19 +1,19 @@
1
- <template>
2
- <tr @mouseenter="hover = true" @mouseleave="hover = false">
3
- <slot :onHover="hover" />
4
- </tr>
5
- </template>
6
-
7
- <script lang="ts">
8
- import { defineComponent, ref } from "vue";
9
-
10
- export default defineComponent({
11
- name: "TableRow",
12
- setup(props) {
13
- const hover = ref(false);
14
- return {
15
- hover
16
- }
17
- }
18
- });
19
- </script>
1
+ <template>
2
+ <tr @mouseenter="hover = true" @mouseleave="hover = false">
3
+ <slot :onHover="hover" />
4
+ </tr>
5
+ </template>
6
+
7
+ <script lang="ts">
8
+ import { defineComponent, ref } from "vue";
9
+
10
+ export default defineComponent({
11
+ name: "TableRow",
12
+ setup(props) {
13
+ const hover = ref(false);
14
+ return {
15
+ hover
16
+ }
17
+ }
18
+ });
19
+ </script>