@mozaic-ds/vue 1.0.0-rc.3 → 2.2.0

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 (224) hide show
  1. package/LICENSE +51 -0
  2. package/README.md +76 -77
  3. package/dist/mozaic-vue.css +1 -1
  4. package/dist/mozaic-vue.d.ts +1718 -0
  5. package/dist/mozaic-vue.js +1971 -0
  6. package/dist/mozaic-vue.js.map +1 -0
  7. package/dist/mozaic-vue.umd.cjs +2 -0
  8. package/dist/mozaic-vue.umd.cjs.map +1 -0
  9. package/env.d.ts +1 -0
  10. package/package.json +78 -51
  11. package/src/components/Contributing.mdx +118 -0
  12. package/src/components/GettingStarted.mdx +45 -0
  13. package/src/components/Introduction.mdx +100 -0
  14. package/src/components/Support.mdx +18 -0
  15. package/src/components/breadcrumb/MBreadcrumb.spec.ts +105 -0
  16. package/src/components/breadcrumb/MBreadcrumb.stories.ts +82 -0
  17. package/src/components/breadcrumb/MBreadcrumb.vue +52 -55
  18. package/src/components/button/MButton.spec.ts +191 -0
  19. package/src/components/button/MButton.stories.ts +59 -0
  20. package/src/components/button/MButton.vue +98 -154
  21. package/src/components/checkbox/MCheckbox.spec.ts +104 -0
  22. package/src/components/checkbox/MCheckbox.stories.ts +83 -0
  23. package/src/components/checkbox/MCheckbox.vue +60 -101
  24. package/src/components/checkboxgroup/MCheckboxGroup.spec.ts +78 -0
  25. package/src/components/checkboxgroup/MCheckboxGroup.stories.ts +61 -0
  26. package/src/components/checkboxgroup/MCheckboxGroup.vue +97 -0
  27. package/src/components/datepicker/MDatepicker.spec.ts +95 -0
  28. package/src/components/datepicker/MDatepicker.stories.ts +75 -0
  29. package/src/components/datepicker/MDatepicker.vue +114 -0
  30. package/src/components/divider/MDivider.spec.ts +57 -0
  31. package/src/components/divider/MDivider.stories.ts +64 -0
  32. package/src/components/divider/MDivider.vue +56 -0
  33. package/src/components/drawer/MDrawer.spec.ts +100 -0
  34. package/src/components/drawer/MDrawer.stories.ts +128 -0
  35. package/src/components/drawer/MDrawer.vue +140 -0
  36. package/src/components/field/MField.spec.ts +166 -0
  37. package/src/components/field/MField.stories.ts +369 -0
  38. package/src/components/field/MField.vue +78 -61
  39. package/src/components/fieldgroup/MFieldGroup.spec.ts +165 -0
  40. package/src/components/fieldgroup/MFieldGroup.stories.ts +416 -0
  41. package/src/components/fieldgroup/MFieldGroup.vue +79 -0
  42. package/src/components/flag/MFlag.spec.ts +46 -0
  43. package/src/components/flag/MFlag.stories.ts +46 -0
  44. package/src/components/flag/MFlag.vue +28 -39
  45. package/src/components/iconbutton/MIconButton.spec.ts +108 -0
  46. package/src/components/iconbutton/MIconButton.stories.ts +74 -0
  47. package/src/components/iconbutton/MIconButton.vue +73 -0
  48. package/src/components/link/MLink.spec.ts +154 -0
  49. package/src/components/link/MLink.stories.ts +89 -0
  50. package/src/components/link/MLink.vue +86 -120
  51. package/src/components/loader/MLoader.spec.ts +104 -0
  52. package/src/components/loader/MLoader.stories.ts +43 -0
  53. package/src/components/loader/MLoader.vue +66 -55
  54. package/src/components/loadingoverlay/MLoadingOverlay.spec.ts +37 -0
  55. package/src/components/loadingoverlay/MLoadingOverlay.stories.ts +40 -0
  56. package/src/components/loadingoverlay/MLoadingOverlay.vue +28 -0
  57. package/src/components/modal/MModal.spec.ts +103 -0
  58. package/src/components/modal/MModal.stories.ts +127 -0
  59. package/src/components/modal/MModal.vue +111 -159
  60. package/src/components/numberbadge/MNumberBadge.spec.ts +56 -0
  61. package/src/components/numberbadge/MNumberBadge.stories.ts +48 -0
  62. package/src/components/numberbadge/MNumberBadge.vue +45 -0
  63. package/src/components/overlay/MOverlay.spec.ts +51 -0
  64. package/src/components/overlay/MOverlay.stories.ts +35 -0
  65. package/src/components/overlay/MOverlay.vue +27 -19
  66. package/src/components/pagination/MPagination.spec.ts +123 -0
  67. package/src/components/pagination/MPagination.stories.ts +83 -0
  68. package/src/components/pagination/MPagination.vue +120 -140
  69. package/src/components/passwordinput/MPasswordInput.spec.ts +104 -0
  70. package/src/components/passwordinput/MPasswordInput.stories.ts +75 -0
  71. package/src/components/passwordinput/MPasswordInput.vue +126 -77
  72. package/src/components/pincode/MPincode.spec.ts +126 -0
  73. package/src/components/pincode/MPincode.stories.ts +68 -0
  74. package/src/components/pincode/MPincode.vue +148 -0
  75. package/src/components/quantityselector/MQuantitySelector.spec.ts +262 -0
  76. package/src/components/quantityselector/MQuantitySelector.stories.ts +89 -0
  77. package/src/components/quantityselector/MQuantitySelector.vue +159 -148
  78. package/src/components/radio/MRadio.spec.ts +104 -0
  79. package/src/components/radio/MRadio.stories.ts +68 -0
  80. package/src/components/radio/MRadio.vue +56 -39
  81. package/src/components/radiogroup/MRadioGroup.spec.ts +54 -0
  82. package/src/components/radiogroup/MRadioGroup.stories.ts +61 -0
  83. package/src/components/radiogroup/MRadioGroup.vue +79 -0
  84. package/src/components/select/MSelect.spec.ts +114 -0
  85. package/src/components/select/MSelect.stories.ts +101 -0
  86. package/src/components/select/MSelect.vue +77 -119
  87. package/src/components/statusbadge/MStatusBadge.stories.ts +45 -0
  88. package/src/components/statusbadge/MStatusBadge.vue +40 -0
  89. package/src/components/statusbadge/MstatusBadge.spec.ts +16 -0
  90. package/src/components/statusdot/MStatusDot.spec.ts +51 -0
  91. package/src/components/statusdot/MStatusDot.stories.ts +48 -0
  92. package/src/components/statusdot/MStatusDot.vue +36 -0
  93. package/src/components/statusnotification/MStatusNotification.spec.ts +103 -0
  94. package/src/components/statusnotification/MStatusNotification.stories.ts +89 -0
  95. package/src/components/statusnotification/MStatusNotification.vue +106 -0
  96. package/src/components/tabs/MTabs.stories.ts +104 -0
  97. package/src/components/tabs/MTabs.vue +113 -0
  98. package/src/components/tabs/Mtabs.spec.ts +149 -0
  99. package/src/components/tag/MTag.spec.ts +107 -0
  100. package/src/components/tag/MTag.stories.ts +75 -0
  101. package/src/components/tag/MTag.vue +151 -0
  102. package/src/components/textarea/MTextArea.spec.ts +112 -0
  103. package/src/components/textarea/MTextArea.stories.ts +67 -0
  104. package/src/components/textarea/MTextArea.vue +81 -43
  105. package/src/components/textinput/MTextInput.spec.ts +121 -0
  106. package/src/components/textinput/MTextInput.stories.ts +107 -0
  107. package/src/components/textinput/MTextInput.vue +127 -47
  108. package/src/components/toggle/MToggle.spec.ts +99 -0
  109. package/src/components/toggle/MToggle.stories.ts +68 -0
  110. package/src/components/toggle/MToggle.vue +63 -103
  111. package/src/components/togglegroup/MToggleGroup.spec.ts +78 -0
  112. package/src/components/togglegroup/MToggleGroup.stories.ts +61 -0
  113. package/src/components/togglegroup/MToggleGroup.vue +97 -0
  114. package/src/components/tooltip/MTooltip.spec.ts +47 -0
  115. package/src/components/tooltip/MTooltip.stories.ts +59 -0
  116. package/src/components/tooltip/MTooltip.vue +49 -32
  117. package/src/components/usingIcons.mdx +35 -0
  118. package/src/components/usingPresets.mdx +128 -0
  119. package/src/main.ts +33 -0
  120. package/dist/demo.html +0 -1
  121. package/dist/mozaic-vue.adeo.css +0 -47
  122. package/dist/mozaic-vue.adeo.umd.js +0 -31341
  123. package/dist/mozaic-vue.common.js +0 -31331
  124. package/dist/mozaic-vue.common.js.map +0 -1
  125. package/dist/mozaic-vue.umd.js +0 -31342
  126. package/dist/mozaic-vue.umd.js.map +0 -1
  127. package/dist/mozaic-vue.umd.min.js +0 -4
  128. package/dist/mozaic-vue.umd.min.js.map +0 -1
  129. package/postinstall.js +0 -3
  130. package/src/components/accordion/MAccordion.vue +0 -128
  131. package/src/components/accordion/index.js +0 -7
  132. package/src/components/autocomplete/MAutocomplete.vue +0 -380
  133. package/src/components/autocomplete/index.js +0 -7
  134. package/src/components/badge/MBadge.vue +0 -43
  135. package/src/components/badge/index.js +0 -7
  136. package/src/components/breadcrumb/index.js +0 -7
  137. package/src/components/button/index.js +0 -7
  138. package/src/components/card/MCard.vue +0 -78
  139. package/src/components/card/index.js +0 -7
  140. package/src/components/checkbox/MCheckboxGroup.vue +0 -163
  141. package/src/components/checkbox/index.js +0 -12
  142. package/src/components/container/MContainer.vue +0 -33
  143. package/src/components/container/index.js +0 -7
  144. package/src/components/datatable/MDataTable.vue +0 -651
  145. package/src/components/datatable/MDataTableHeader.vue +0 -55
  146. package/src/components/datatable/MDataTableTop.vue +0 -35
  147. package/src/components/datatable/helpers.js +0 -132
  148. package/src/components/datatable/index.js +0 -12
  149. package/src/components/dropdown/MDropdown.vue +0 -317
  150. package/src/components/dropdown/index.js +0 -7
  151. package/src/components/field/index.js +0 -7
  152. package/src/components/fileuploader/MFileResult.vue +0 -149
  153. package/src/components/fileuploader/MFileUploader.vue +0 -142
  154. package/src/components/fileuploader/index.js +0 -7
  155. package/src/components/flag/index.js +0 -7
  156. package/src/components/heading/MHeading.vue +0 -75
  157. package/src/components/heading/index.js +0 -7
  158. package/src/components/hero/MHero.vue +0 -93
  159. package/src/components/hero/index.js +0 -7
  160. package/src/components/icon/MIcon.vue +0 -136
  161. package/src/components/icon/index.js +0 -7
  162. package/src/components/index.js +0 -44
  163. package/src/components/layer/MLayer.vue +0 -208
  164. package/src/components/layer/index.js +0 -7
  165. package/src/components/link/index.js +0 -7
  166. package/src/components/listbox/MListBox.vue +0 -146
  167. package/src/components/listbox/MListBoxActions.vue +0 -251
  168. package/src/components/listbox/index.js +0 -12
  169. package/src/components/loader/index.js +0 -7
  170. package/src/components/modal/index.js +0 -7
  171. package/src/components/notification/MNotification.vue +0 -110
  172. package/src/components/notification/index.js +0 -7
  173. package/src/components/optionbutton/MOptionButton.vue +0 -67
  174. package/src/components/optionbutton/index.js +0 -7
  175. package/src/components/optioncard/MOptionCard.vue +0 -132
  176. package/src/components/optioncard/index.js +0 -7
  177. package/src/components/optiongroup/MOptionGroup.vue +0 -18
  178. package/src/components/optiongroup/index.js +0 -7
  179. package/src/components/overlay/MOverlayLoader.vue +0 -43
  180. package/src/components/overlay/index.js +0 -12
  181. package/src/components/pagination/index.js +0 -7
  182. package/src/components/passwordinput/index.js +0 -7
  183. package/src/components/phonenumber/MPhoneNumber.vue +0 -398
  184. package/src/components/phonenumber/index.js +0 -7
  185. package/src/components/progressbar/MProgress.vue +0 -102
  186. package/src/components/progressbar/index.js +0 -7
  187. package/src/components/quantityselector/index.js +0 -7
  188. package/src/components/radio/MRadioGroup.vue +0 -111
  189. package/src/components/radio/index.js +0 -12
  190. package/src/components/ratingstars/MStarsInput.vue +0 -119
  191. package/src/components/ratingstars/MStarsResult.vue +0 -89
  192. package/src/components/ratingstars/index.js +0 -12
  193. package/src/components/select/index.js +0 -7
  194. package/src/components/stepper/MStepper.vue +0 -111
  195. package/src/components/stepper/index.js +0 -7
  196. package/src/components/tabs/MTab.vue +0 -204
  197. package/src/components/tabs/index.js +0 -7
  198. package/src/components/tags/MTag.vue +0 -175
  199. package/src/components/tags/index.js +0 -7
  200. package/src/components/textarea/index.js +0 -7
  201. package/src/components/textinput/MTextInputField.vue +0 -105
  202. package/src/components/textinput/MTextInputIcon.vue +0 -42
  203. package/src/components/textinput/index.js +0 -7
  204. package/src/components/toggle/index.js +0 -7
  205. package/src/components/tooltip/index.js +0 -7
  206. package/src/index.js +0 -63
  207. package/src/shims-tsx.d.ts +0 -13
  208. package/src/shims.vue.d.ts +0 -4
  209. package/src/tokens/adeo/android/colors.xml +0 -452
  210. package/src/tokens/adeo/android/font_dimens.xml +0 -18
  211. package/src/tokens/adeo/css/_variables.scss +0 -446
  212. package/src/tokens/adeo/css/root.scss +0 -448
  213. package/src/tokens/adeo/ios/StyleDictionaryColor.h +0 -460
  214. package/src/tokens/adeo/ios/StyleDictionaryColor.m +0 -472
  215. package/src/tokens/adeo/ios/StyleDictionaryColor.swift +0 -455
  216. package/src/tokens/adeo/ios/StyleDictionarySize.h +0 -69
  217. package/src/tokens/adeo/ios/StyleDictionarySize.m +0 -70
  218. package/src/tokens/adeo/ios/StyleDictionarySize.swift +0 -71
  219. package/src/tokens/adeo/js/tokens.js +0 -544
  220. package/src/tokens/adeo/js/tokensObject.js +0 -11733
  221. package/src/tokens/adeo/scss/_tokens.scss +0 -1522
  222. package/src/utils/mozaicClasses.js +0 -16
  223. package/src/utils/theme.validator.js +0 -19
  224. package/types/index.d.ts +0 -104
@@ -1,142 +0,0 @@
1
- <template>
2
- <div class="mc-fileuploader" :class="cssFieldElementClass">
3
- <input
4
- :id="id"
5
- ref="fileUpload"
6
- type="file"
7
- class="mc-fileuploader__input"
8
- :accept="accept"
9
- :multiple="multiple"
10
- :disabled="disabled"
11
- @change="onChange"
12
- />
13
- <label :for="id" class="mc-fileuploader__label">
14
- <span class="mc-fileuploader__label--center">
15
- {{ label }}
16
- </span>
17
- </label>
18
- <m-file-result
19
- v-if="displayFilesList && files.length > 0"
20
- :files="files"
21
- :allowed-extensions="allowedExtensions"
22
- :max-size="maxSize"
23
- :remove-label="removeLabel"
24
- @file-removed="deleteFile"
25
- @has-invalid-files="hasInvalidFiles"
26
- >
27
- <template v-for="(index, name) in $slots" #[name]>
28
- <slot :name="name" />
29
- </template>
30
- </m-file-result>
31
- <m-file-result
32
- v-if="uploadedFiles.length > 0"
33
- :files="uploadedFiles"
34
- :allowed-extensions="allowedExtensions"
35
- :remove-label="removeLabel"
36
- :disabled="disabled"
37
- @file-removed="deleteRemoteFile"
38
- />
39
- </div>
40
- </template>
41
-
42
- <script>
43
- import MFileResult from './MFileResult.vue';
44
- export default {
45
- name: 'MFileUploader',
46
- components: {
47
- MFileResult,
48
- },
49
- inject: {
50
- cssFieldElementClass: {
51
- default: '',
52
- },
53
- },
54
- inheritAttrs: false,
55
- props: {
56
- id: {
57
- type: String,
58
- default: 'mc-fileuploader',
59
- },
60
- label: {
61
- type: String,
62
- required: true,
63
- },
64
- accept: {
65
- type: String,
66
- default: null,
67
- },
68
- multiple: {
69
- type: Boolean,
70
- default: false,
71
- },
72
- allowedExtensions: {
73
- type: Array,
74
- default: function () {
75
- return [];
76
- },
77
- },
78
- maxSize: {
79
- type: Number,
80
- default: null,
81
- },
82
- displayFilesList: {
83
- type: Boolean,
84
- default: true,
85
- },
86
- uploadedFiles: {
87
- type: [Array, Object],
88
- default: function () {
89
- return [];
90
- },
91
- },
92
- disabled: {
93
- type: Boolean,
94
- default: false,
95
- },
96
- removeLabel: {
97
- type: String,
98
- default: 'Remove',
99
- },
100
- },
101
- data() {
102
- return {
103
- files: [],
104
- };
105
- },
106
- methods: {
107
- onChange(e) {
108
- this.files = [...e.target.files];
109
- this.$emit('file-added', this.files);
110
- e.target.value = '';
111
- },
112
- removeFromArray(fileList, value) {
113
- const array = Array.from(fileList);
114
- const idx = array.indexOf(value);
115
- if (idx !== -1) {
116
- array.splice(idx, 1);
117
- }
118
- return array;
119
- },
120
- deleteFile(file) {
121
- this.files = this.removeFromArray(this.files, file);
122
- this.$emit('file-removed', file);
123
- },
124
- deleteRemoteFile(file) {
125
- this.$emit('remote-file-removed', file);
126
- },
127
- hasInvalidFiles(payload) {
128
- this.$emit('has-invalid-files', payload);
129
- },
130
- reset() {
131
- this.$emit('file-removed', [...this.files]);
132
- this.files = [];
133
- this.$refs.fileUpload.value = '';
134
- },
135
- },
136
- };
137
- </script>
138
-
139
- <style lang="scss">
140
- @import 'settings-tools/_all-settings';
141
- @import 'components/_c.file-uploader';
142
- </style>
@@ -1,7 +0,0 @@
1
- import MFileUploader from './MFileUploader.vue';
2
-
3
- MFileUploader.install = function (Vue) {
4
- Vue.component(MFileUploader.name, MFileUploader);
5
- };
6
-
7
- export { MFileUploader };
@@ -1,7 +0,0 @@
1
- import MFlag from './MFlag.vue';
2
-
3
- MFlag.install = function (Vue) {
4
- Vue.component(MFlag.name, MFlag);
5
- };
6
-
7
- export { MFlag };
@@ -1,75 +0,0 @@
1
- <template>
2
- <component :is="hn" class="mt-heading" :class="classes">
3
- <slot />
4
- </component>
5
- </template>
6
-
7
- <script>
8
- export default {
9
- name: 'MHeading',
10
-
11
- props: {
12
- level: {
13
- type: String,
14
- default: '1',
15
- validator: (value) => ['1', '2', '3', '4'].includes(value),
16
- },
17
- size: {
18
- type: String,
19
- default: 'm',
20
- validator: (value) => ['s', 'm', 'l'].includes(value),
21
- },
22
- weight: {
23
- type: String,
24
- default: null,
25
- validator: (value) => ['light', 'semi-bold'].includes(value),
26
- },
27
- underline: {
28
- type: Boolean,
29
- default: false,
30
- },
31
- underlineColor: {
32
- type: String,
33
- default: null,
34
- validator: (value) =>
35
- ['primary-01-200', 'primary-02-600', 'primary-02-200'].includes(value),
36
- },
37
- lightest: {
38
- type: Boolean,
39
- default: false,
40
- },
41
- align: {
42
- type: String,
43
- default: 'left',
44
- validator: (value) => ['left', 'center', 'right'].includes(value),
45
- },
46
- lineHeightXS: {
47
- type: Boolean,
48
- default: false,
49
- },
50
- },
51
-
52
- computed: {
53
- hn() {
54
- return `h${this.level}`;
55
- },
56
- classes() {
57
- return {
58
- ['mt-heading--' + this.size]: this.size,
59
- ['mt-heading--' + this.weight]:
60
- this.weight === 'light' || this.weight === 'semi-bold',
61
- 'mt-heading--lightest': this.lightest,
62
- 'mt-heading--underline': this.underline,
63
- ['mt-heading--line-' + this.underlineColor]: this.underlineColor,
64
- ['mt-heading--' + this.align]: this.align,
65
- 'mt-heading--line-height-xs': this.lineHeightXS,
66
- };
67
- },
68
- },
69
- };
70
- </script>
71
-
72
- <style lang="scss">
73
- @import 'settings-tools/_all-settings';
74
- @import 'typography/_t.headings';
75
- </style>
@@ -1,7 +0,0 @@
1
- import MHeading from './MHeading.vue';
2
-
3
- MHeading.install = function (Vue) {
4
- Vue.component(MHeading.name, MHeading);
5
- };
6
-
7
- export { MHeading };
@@ -1,93 +0,0 @@
1
- <template>
2
- <div
3
- class="mc-hero"
4
- :class="{
5
- 'mc-hero--center': center,
6
- 'mc-hero--with-content': $slots.default,
7
- 'mc-hero--with-boxed': $slots.boxed,
8
- }"
9
- >
10
- <div :class="{ 'ml-container': true, 'ml-container--fluid': !fixed }">
11
- <div class="ml-flexy ml-flexy--gutter">
12
- <div class="mc-hero__main ml-flexy__col">
13
- <picture class="mc-hero__cover">
14
- <source
15
- v-for="(src, index) in srcSet"
16
- :key="index"
17
- :srcset="src.url"
18
- :media="`(max-width: ${src.width}px)`"
19
- />
20
- <img class="mc-hero__visual" :src="imgSrc" :alt="imgAlt" />
21
- </picture>
22
- <div class="mc-hero__header">
23
- <component
24
- :is="titleTag"
25
- class="
26
- mc-hero__title
27
- mt-heading
28
- mt-heading--lightest
29
- mt-heading--s
30
- mt-heading--underline
31
- "
32
- :class="{ 'mt-heading--center': center }"
33
- >
34
- {{ title }}
35
- </component>
36
- </div>
37
- <div v-if="$slots.default" class="mc-hero__content mt-body-m">
38
- <slot />
39
- </div>
40
- </div>
41
- <div v-if="$slots.boxed" class="mc-hero__boxed ml-flexy__col">
42
- <slot name="boxed" />
43
- </div>
44
- </div>
45
- </div>
46
- </div>
47
- </template>
48
-
49
- <script>
50
- export default {
51
- name: 'MHero',
52
- props: {
53
- title: {
54
- type: String,
55
- required: true,
56
- },
57
- imgSrc: {
58
- type: String,
59
- required: true,
60
- },
61
- titleTag: {
62
- type: String,
63
- default: 'h1',
64
- validator: (value) =>
65
- ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'].includes(value),
66
- },
67
- imgAlt: {
68
- type: String,
69
- default: '',
70
- },
71
- fixed: {
72
- type: Boolean,
73
- default: false,
74
- },
75
- center: {
76
- type: Boolean,
77
- default: false,
78
- },
79
- srcSet: {
80
- type: Array,
81
- default: null,
82
- },
83
- },
84
- };
85
- </script>
86
-
87
- <style lang="scss">
88
- @import 'settings-tools/_all-settings';
89
- @import 'typography/_t.all-base-typography';
90
- @import 'layouts/_l.container';
91
- @import 'layouts/_l.flexy';
92
- @import 'components/_c.hero';
93
- </style>
@@ -1,7 +0,0 @@
1
- import MHero from './MHero.vue';
2
-
3
- MHero.install = function (Vue) {
4
- Vue.component(MHero.name, MHero);
5
- };
6
-
7
- export { MHero };
@@ -1,136 +0,0 @@
1
- <script>
2
- export default {
3
- name: 'MIcon',
4
-
5
- props: {
6
- /**
7
- * Icon name
8
- */
9
- name: {
10
- type: String,
11
- required: true,
12
- },
13
- /**
14
- * Icon color
15
- */
16
- color: {
17
- type: String,
18
- default: 'currentColor',
19
- },
20
- },
21
-
22
- data() {
23
- return {
24
- id: null,
25
- viewbox: null,
26
- size: null,
27
- paths: null,
28
- type: null,
29
- };
30
- },
31
-
32
- computed: {
33
- loadIcons() {
34
- if (!this.name) {
35
- return null;
36
- }
37
-
38
- return () =>
39
- import(
40
- /* webpackMode: 'eager' */
41
- '@mozaic-ds/icons/js/icons.js'
42
- );
43
- },
44
-
45
- getIconName() {
46
- if (!this.name) {
47
- return null;
48
- }
49
-
50
- return this.name;
51
- },
52
- },
53
-
54
- watch: {
55
- name() {
56
- this.setIconElement();
57
- },
58
- },
59
-
60
- created() {
61
- this.id = this._uid;
62
- },
63
-
64
- mounted() {
65
- this.setIconElement();
66
- },
67
-
68
- methods: {
69
- setIconElement() {
70
- this.loadIcons().then((icons) => {
71
- const iconName = this.getIconName;
72
- const selectedIcon = icons[iconName];
73
-
74
- if (!selectedIcon) {
75
- throw new Error(
76
- 'The icon you are trying to display does not exist. Maybe the name is incorrect. => (See all available icons: http://mozaic.adeo.cloud/Foundations/Icons/catalog/)'
77
- );
78
- }
79
-
80
- this.viewbox = selectedIcon.viewBox;
81
- this.size = selectedIcon.size;
82
- this.paths = selectedIcon.paths;
83
- this.type = selectedIcon.type;
84
- });
85
- },
86
- setSizeFromViewbox(viewbox) {
87
- const viewboxSizes = viewbox.split(' ').filter((size) => size > 0);
88
-
89
- return {
90
- width: `${viewboxSizes[0]}px`,
91
- height: `${viewboxSizes[1]}px`,
92
- };
93
- },
94
- },
95
-
96
- render: function (createElement) {
97
- const paths = this.paths;
98
- const svgAttrs = {
99
- id: `MIcon-${this.name}-${this.id}`,
100
- viewBox: this.viewbox,
101
- height:
102
- this.type !== 'logotypes'
103
- ? this.size
104
- : this.setSizeFromViewbox(this.viewbox).height,
105
- width:
106
- this.type !== 'logotypes'
107
- ? this.size
108
- : this.setSizeFromViewbox(this.viewbox).width,
109
- fill: this.color,
110
- 'aria-hidden': 'true',
111
- };
112
-
113
- function generatePaths(paths) {
114
- return paths.map(function (path) {
115
- const children = path.children;
116
-
117
- if (children) {
118
- return createElement(
119
- path.tagName,
120
- { attrs: path.attrs },
121
- generatePaths(children)
122
- );
123
- }
124
-
125
- return createElement(path.tagName, { attrs: path.attrs });
126
- });
127
- }
128
-
129
- if (paths) {
130
- return createElement('svg', { attrs: svgAttrs }, generatePaths(paths));
131
- }
132
-
133
- return createElement('svg', { attrs: svgAttrs });
134
- },
135
- };
136
- </script>
@@ -1,7 +0,0 @@
1
- import MIcon from './MIcon.vue';
2
-
3
- MIcon.install = function (Vue) {
4
- Vue.component(MIcon.name, MIcon);
5
- };
6
-
7
- export { MIcon };
@@ -1,44 +0,0 @@
1
- // import/export individual components
2
- // Foundations
3
- export { MContainer } from './container';
4
- export { MHeading } from './heading';
5
- // Components
6
- export { MAccordion } from './accordion';
7
- export { MAutocomplete } from './autocomplete';
8
- export { MBadge } from './badge';
9
- export { MBreadcrumb } from './breadcrumb';
10
- export { MButton } from './button';
11
- export { MCard } from './card';
12
- export { MCheckbox, MCheckboxGroup } from './checkbox';
13
- export { MDataTable, MDataTableHeader } from './datatable';
14
- export { MField } from './field';
15
- export { MDropdown } from './dropdown';
16
- export { MFileUploader } from './fileuploader';
17
- export { MFlag } from './flag';
18
- export { MHero } from './hero';
19
- export { MIcon } from './icon';
20
- export { MLayer } from './layer';
21
- export { MLink } from './link';
22
- export { MListBox, MListBoxActions } from './listbox';
23
- export { MLoader } from './loader';
24
- export { MModal } from './modal';
25
- export { MNotification } from './notification';
26
- export { MOptionButton } from './optionbutton';
27
- export { MOptionCard } from './optioncard';
28
- export { MOptionGroup } from './optiongroup';
29
- export { MOverlay, MOverlayLoader } from './overlay';
30
- export { MPagination } from './pagination';
31
- export { MPasswordInput } from './passwordinput';
32
- export { MPhoneNumber } from './phonenumber';
33
- export { MProgress } from './progressbar';
34
- export { MQuantitySelector } from './quantityselector';
35
- export { MRadio, MRadioGroup } from './radio';
36
- export { MStarsInput, MStarsResult } from './ratingstars';
37
- export { MSelect } from './select';
38
- export { MStepper } from './stepper';
39
- export { MTab } from './tabs';
40
- export { MTag } from './tags';
41
- export { MTextArea } from './textarea';
42
- export { MTextInput } from './textinput';
43
- export { MToggle } from './toggle';
44
- export { MTooltip } from './tooltip';