@weni/unnnic-system 3.3.1-alpha.3 → 3.3.2

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 (203) hide show
  1. package/CHANGELOG.md +9 -1
  2. package/dist/components/Accordion/Accordion.vue.d.ts +1 -1
  3. package/dist/components/Alert/Alert.vue.d.ts +119 -18
  4. package/dist/components/Alert/Alert.vue.d.ts.map +1 -1
  5. package/dist/components/Alert/Version1dot1.vue.d.ts +38 -2
  6. package/dist/components/Alert/Version1dot1.vue.d.ts.map +1 -1
  7. package/dist/components/AudioRecorder/AudioHandler.vue.d.ts +2 -2
  8. package/dist/components/AudioRecorder/AudioPlayer.vue.d.ts +1 -1
  9. package/dist/components/AudioRecorder/AudioRecorder.vue.d.ts +5 -5
  10. package/dist/components/AvatarIcon/AvatarIcon.vue.d.ts +2 -2
  11. package/dist/components/Banner/Banner.vue.d.ts +1 -1
  12. package/dist/components/Banner/InfoBanner.vue.d.ts +1 -1
  13. package/dist/components/Breadcrumb/Breadcrumb.vue.d.ts +1 -1
  14. package/dist/components/Button/Button.vue.d.ts +2 -2
  15. package/dist/components/Button/Button.vue.d.ts.map +1 -1
  16. package/dist/components/Button/ButtonIcon.vue.d.ts +1 -1
  17. package/dist/components/Button/types.d.ts +1 -1
  18. package/dist/components/Button/types.d.ts.map +1 -1
  19. package/dist/components/Card/AccountCard.vue.d.ts +3 -3
  20. package/dist/components/Card/BlankCard.vue.d.ts +1 -1
  21. package/dist/components/Card/Card.vue.d.ts +21 -21
  22. package/dist/components/Card/CardCompany.vue.d.ts +8 -8
  23. package/dist/components/Card/CardData.vue.d.ts +1 -1
  24. package/dist/components/Card/CardStatusesContainer.vue.d.ts +4 -4
  25. package/dist/components/Card/ContentCard.vue.d.ts +2 -2
  26. package/dist/components/Card/DashCard.vue.d.ts +4 -4
  27. package/dist/components/Card/DefaultCard.vue.d.ts +1 -1
  28. package/dist/components/Card/MarketplaceCard.vue.d.ts +2 -2
  29. package/dist/components/Card/SimpleCard.vue.d.ts +3 -3
  30. package/dist/components/Card/StatusCard.vue.d.ts +2 -2
  31. package/dist/components/Card/TitleCard.vue.d.ts +2 -2
  32. package/dist/components/CardImage/CardImage.vue.d.ts +8 -8
  33. package/dist/components/CardInformation/CardInformation.vue.d.ts +4 -4
  34. package/dist/components/CardProject/CardProject.vue.d.ts +3 -3
  35. package/dist/components/Carousel/Carousel.vue.d.ts +11 -11
  36. package/dist/components/Carousel/TagCarousel.vue.d.ts +9 -9
  37. package/dist/components/ChartBar/ChartBar.vue.d.ts +8 -8
  38. package/dist/components/ChartLine/ChartLine.vue.d.ts +1 -1
  39. package/dist/components/ChatText/ChatText.vue.d.ts +2 -2
  40. package/dist/components/ChatsContact/ChatsContact.vue.d.ts +15 -15
  41. package/dist/components/ChatsDashboardTagLive/ChatsDashboardTagLive.vue.d.ts +1 -1
  42. package/dist/components/ChatsHeader/ChatsHeader.vue.d.ts +1 -1
  43. package/dist/components/ChatsHeader/ChatsHeader.vue.d.ts.map +1 -1
  44. package/dist/components/ChatsMessage/ChatsMessage.vue.d.ts +5 -5
  45. package/dist/components/ChatsMessage/ChatsMessageStatusBackdrop.vue.d.ts +2 -2
  46. package/dist/components/ChatsNavbar/ChatsNavbar.vue.d.ts +1 -1
  47. package/dist/components/ChatsUserAvatar/ChatsUserAvatar.vue.d.ts +2 -2
  48. package/dist/components/Checkbox/Checkbox.vue.d.ts +3 -3
  49. package/dist/components/Comment/Comment.vue.d.ts +1 -1
  50. package/dist/components/DataArea/DataArea.vue.d.ts +2 -2
  51. package/dist/components/DataTable/index.vue.d.ts +1 -1
  52. package/dist/components/DataTable/index.vue.d.ts.map +1 -1
  53. package/dist/components/DateFilter/DateFilter.vue.d.ts +29 -176
  54. package/dist/components/DatePicker/DatePicker.vue.d.ts +8 -8
  55. package/dist/components/Drawer/Drawer.vue.d.ts +7 -7
  56. package/dist/components/Dropdown/Dropdown.vue.d.ts +1 -1
  57. package/dist/components/Dropdown/LanguageSelect.vue.d.ts +3 -3
  58. package/dist/components/Flag.vue.d.ts +2 -2
  59. package/dist/components/FormElement/FormElement.vue.d.ts +32 -38
  60. package/dist/components/FormElement/FormElement.vue.d.ts.map +1 -1
  61. package/dist/components/Icon.vue.d.ts +1 -1
  62. package/dist/components/IconLoading/IconLoading.vue.d.ts +1 -1
  63. package/dist/components/ImportCard/ImportCard.vue.d.ts +7 -7
  64. package/dist/components/Input/BaseInput.vue.d.ts +1 -32
  65. package/dist/components/Input/BaseInput.vue.d.ts.map +1 -1
  66. package/dist/components/Input/Input.vue.d.ts +29 -176
  67. package/dist/components/Input/Input.vue.d.ts.map +1 -1
  68. package/dist/components/Input/TextInput.vue.d.ts +14 -83
  69. package/dist/components/Input/TextInput.vue.d.ts.map +1 -1
  70. package/dist/components/InputDatePicker/InputDatePicker.vue.d.ts +39 -186
  71. package/dist/components/InputNext/InputNext.vue.d.ts +4 -4
  72. package/dist/components/Label/Label.vue.d.ts +15 -9
  73. package/dist/components/Label/Label.vue.d.ts.map +1 -1
  74. package/dist/components/Modal/Modal.vue.d.ts +2 -2
  75. package/dist/components/ModalDialog/ModalDialog.vue.d.ts +9 -9
  76. package/dist/components/ModalDialog/ModalDialog.vue.d.ts.map +1 -1
  77. package/dist/components/ModalNext/ModalNext.vue.d.ts +37 -184
  78. package/dist/components/ModalUpload/ModalUpload.vue.d.ts +14 -14
  79. package/dist/components/MoodRating/MoodRating.vue.d.ts +1 -1
  80. package/dist/components/MultiSelect/MultiSelect.vue.d.ts +14 -20
  81. package/dist/components/Pagination/Pagination.vue.d.ts +6 -6
  82. package/dist/components/ProgressBar/ProgressBar.vue.d.ts +1 -1
  83. package/dist/components/Radio/Radio.vue.d.ts +6 -8
  84. package/dist/components/Radio/Radio.vue.d.ts.map +1 -1
  85. package/dist/components/SelectSmart/SelectSmart.vue.d.ts +28 -97
  86. package/dist/components/SelectSmart/SelectSmartMultipleHeader.vue.d.ts +8 -8
  87. package/dist/components/SelectSmart/SelectSmartOption.vue.d.ts +4 -4
  88. package/dist/components/SelectTime/index.vue.d.ts +14 -83
  89. package/dist/components/SkeletonLoading/skeletonTheme.vue.d.ts +1 -1
  90. package/dist/components/Slider/Slider.vue.d.ts +2 -2
  91. package/dist/components/StarRating/StarRating.vue.d.ts +1 -1
  92. package/dist/components/Switch/Switch.vue.d.ts +2 -2
  93. package/dist/components/Tab/Tab.vue.d.ts +2 -13
  94. package/dist/components/TableNext/TableBodyCell.vue.d.ts +2 -2
  95. package/dist/components/TableNext/TablePagination.vue.d.ts +6 -6
  96. package/dist/components/TabsExpanded/TabsExpanded.vue.d.ts +1 -1
  97. package/dist/components/Tag/BrandTag.vue.d.ts +2 -2
  98. package/dist/components/Tag/DefaultTag.vue.d.ts +2 -2
  99. package/dist/components/Tag/IndicatorTag.vue.d.ts +2 -2
  100. package/dist/components/Tag/Tag.vue.d.ts +8 -8
  101. package/dist/components/TextArea/TextArea.vue.d.ts +32 -38
  102. package/dist/components/TextArea/TextArea.vue.d.ts.map +1 -1
  103. package/dist/components/ToolTip/ToolTip.vue.d.ts +1 -1
  104. package/dist/components/Tour/Tour.vue.d.ts +6 -6
  105. package/dist/components/Tour/TourPopover.vue.d.ts +6 -6
  106. package/dist/components/UploadArea/UploadArea.vue.d.ts +7 -7
  107. package/dist/components/index.d.ts +1110 -2132
  108. package/dist/components/index.d.ts.map +1 -1
  109. package/dist/{es-94ab560e.mjs → es-54ddaf5a.mjs} +1 -1
  110. package/dist/{index-5caf403e.mjs → index-a34da30f.mjs} +8094 -8447
  111. package/dist/locales/en.json.d.ts +1 -2
  112. package/dist/locales/es.json.d.ts +1 -2
  113. package/dist/locales/pt_br.json.d.ts +1 -2
  114. package/dist/{pt-br-3002df05.mjs → pt-br-ff00f945.mjs} +1 -1
  115. package/dist/style.css +1 -1
  116. package/dist/unnnic.mjs +120 -126
  117. package/dist/unnnic.umd.js +41 -42
  118. package/dist/utils/call.d.ts +1 -2
  119. package/dist/utils/call.d.ts.map +1 -1
  120. package/package.json +2 -2
  121. package/src/assets/scss/scheme-colors.scss +238 -115
  122. package/src/components/Alert/Alert.vue +135 -26
  123. package/src/components/Alert/AlertBanner.vue +182 -0
  124. package/src/components/Alert/AlertCaller.vue +49 -0
  125. package/src/components/Alert/Version1dot1.vue +36 -0
  126. package/src/components/Alert/__tests__/AlertBanner.spec.js +89 -0
  127. package/src/components/Alert/__tests__/AlertCaller.spec.js +98 -0
  128. package/src/components/Alert/__tests__/__snapshots__/Alert.spec.js.snap +7 -11
  129. package/src/components/Alert/__tests__/__snapshots__/Version1dot1.spec.js.snap +2 -2
  130. package/src/components/Button/Button.vue +108 -60
  131. package/src/components/Button/types.ts +1 -0
  132. package/src/components/FormElement/FormElement.vue +91 -51
  133. package/src/components/Input/BaseInput.vue +14 -31
  134. package/src/components/Input/Input.scss +21 -19
  135. package/src/components/Input/Input.vue +30 -94
  136. package/src/components/Input/TextInput.vue +58 -82
  137. package/src/components/Input/__test__/TextInput.spec.js +5 -5
  138. package/src/components/Input/__test__/__snapshots__/Input.spec.js.snap +3 -16
  139. package/src/components/Input/__test__/__snapshots__/TextInput.spec.js.snap +1 -7
  140. package/src/components/Label/Label.vue +21 -52
  141. package/src/components/Label/__tests__/Label.spec.js +1 -1
  142. package/src/components/Label/__tests__/__snapshots__/Label.spec.js.snap +1 -1
  143. package/src/components/ModalDialog/ModalDialog.vue +0 -1
  144. package/src/components/ModalDialog/__tests__/__snapshots__/ModalDialog.spec.js.snap +1 -1
  145. package/src/components/Radio/Radio.vue +67 -80
  146. package/src/components/Radio/__test__/Radio.spec.js +20 -14
  147. package/src/components/Radio/__test__/__snapshots__/Radio.spec.js.snap +3 -3
  148. package/src/components/Tab/Tab.vue +23 -37
  149. package/src/components/Tab/__test__/__snapshots__/Tab.spec.js.snap +1 -1
  150. package/src/components/TableNext/__test__/__snapshots__/TableNext.spec.js.snap +2 -2
  151. package/src/components/TableNext/__test__/__snapshots__/TablePagination.spec.js.snap +2 -2
  152. package/src/components/TextArea/TextArea.vue +9 -13
  153. package/src/components/TextArea/__test__/__snapshots__/TextArea.spec.js.snap +2 -7
  154. package/src/components/index.ts +4 -18
  155. package/src/locales/en.json +1 -2
  156. package/src/locales/es.json +1 -2
  157. package/src/locales/pt_br.json +1 -2
  158. package/src/stories/Alert.stories.js +67 -6
  159. package/src/stories/Button.stories.js +17 -2
  160. package/src/stories/Input.stories.js +3 -22
  161. package/src/stories/Label.stories.js +0 -7
  162. package/src/stories/Tab.stories.js +4 -11
  163. package/src/types/scheme-colors.d.ts +0 -1
  164. package/src/utils/call.js +18 -46
  165. package/dist/components/TemplatePreview/TemplatePreview.vue.d.ts +0 -9
  166. package/dist/components/TemplatePreview/TemplatePreview.vue.d.ts.map +0 -1
  167. package/dist/components/TemplatePreview/TemplatePreviewModal.vue.d.ts +0 -15
  168. package/dist/components/TemplatePreview/TemplatePreviewModal.vue.d.ts.map +0 -1
  169. package/dist/components/Toast/Toast.vue.d.ts +0 -16
  170. package/dist/components/Toast/Toast.vue.d.ts.map +0 -1
  171. package/dist/components/Toast/ToastManager.d.ts +0 -14
  172. package/dist/components/Toast/ToastManager.d.ts.map +0 -1
  173. package/dist/components/Toast/types.d.ts +0 -35
  174. package/dist/components/Toast/types.d.ts.map +0 -1
  175. package/src/assets/icons/radio-checked.svg +0 -3
  176. package/src/assets/img/previews/doc-preview.png +0 -0
  177. package/src/assets/img/previews/image-preview.png +0 -0
  178. package/src/assets/img/previews/video-preview.png +0 -0
  179. package/src/components/Popover/__tests__/Popover.spec.js +0 -147
  180. package/src/components/Popover/__tests__/__snapshots__/Popover.spec.js.snap +0 -8
  181. package/src/components/Popover/index.vue +0 -146
  182. package/src/components/RadioGroup/RadioGroup.vue +0 -110
  183. package/src/components/Select/SelectOption.vue +0 -65
  184. package/src/components/Select/__tests__/Select.spec.js +0 -412
  185. package/src/components/Select/__tests__/SelectItem.spec.js +0 -330
  186. package/src/components/Select/__tests__/SelectOption.spec.js +0 -174
  187. package/src/components/Select/__tests__/__snapshots__/Select.spec.js.snap +0 -97
  188. package/src/components/Select/__tests__/__snapshots__/SelectItem.spec.js.snap +0 -15
  189. package/src/components/Select/__tests__/__snapshots__/SelectOption.spec.js.snap +0 -25
  190. package/src/components/Select/index.vue +0 -245
  191. package/src/components/TemplatePreview/TemplatePreview.vue +0 -252
  192. package/src/components/TemplatePreview/TemplatePreviewModal.vue +0 -51
  193. package/src/components/TemplatePreview/types.d.ts +0 -16
  194. package/src/components/Toast/Toast.vue +0 -236
  195. package/src/components/Toast/ToastManager.ts +0 -110
  196. package/src/components/Toast/types.ts +0 -57
  197. package/src/stories/Popover.stories.js +0 -39
  198. package/src/stories/RadioGroup.stories.js +0 -139
  199. package/src/stories/Select.stories.js +0 -158
  200. package/src/stories/TemplatePreview.stories.js +0 -94
  201. package/src/stories/TemplatePreviewModal.stories.js +0 -110
  202. package/src/stories/Toast.mdx +0 -123
  203. package/src/stories/Toast.stories.js +0 -126
@@ -0,0 +1,182 @@
1
+ <template>
2
+ <section
3
+ :class="[
4
+ 'banner-alert',
5
+ {
6
+ 'banner-alert--banner-danger': type === 'danger',
7
+ 'banner-alert--banner-warning': type === 'warning',
8
+ },
9
+ ]"
10
+ >
11
+ <header
12
+ v-show="text"
13
+ class="banner-alert__container-text"
14
+ >
15
+ <UnnnicIcon
16
+ v-show="isShowTextIcon(type)"
17
+ class="banner-alert__textIcon"
18
+ :icon="getIconType(type)"
19
+ size="sm"
20
+ scheme="neutral-white"
21
+ data-test="unnnic-icon"
22
+ />
23
+ <p class="text">{{ text }}</p>
24
+ <a
25
+ v-if="linkHref"
26
+ class="banner-alert__link"
27
+ :href="linkHref"
28
+ :target="linkTarget"
29
+ >
30
+ {{ linkText }}
31
+ </a>
32
+ </header>
33
+
34
+ <div
35
+ v-show="showCloseButton"
36
+ class="banner-alert__close"
37
+ @click="emitClose"
38
+ >
39
+ <UnnnicIcon
40
+ icon="close"
41
+ size="sm"
42
+ scheme="neutral-white"
43
+ data-test="unnnic-close-icon"
44
+ />
45
+ </div>
46
+ </section>
47
+ </template>
48
+
49
+ <script>
50
+ import UnnnicIcon from '../Icon.vue';
51
+
52
+ export default {
53
+ components: {
54
+ UnnnicIcon,
55
+ },
56
+ props: {
57
+ text: {
58
+ type: String,
59
+ default: null,
60
+ },
61
+ onClose: {
62
+ type: Function,
63
+ default: () => {},
64
+ },
65
+ showCloseButton: {
66
+ type: Boolean,
67
+ default: false,
68
+ },
69
+ linkHref: {
70
+ type: String,
71
+ default: '',
72
+ },
73
+ linkTarget: {
74
+ type: String,
75
+ default: '_blank',
76
+ },
77
+ linkText: {
78
+ type: String,
79
+ default: 'Learn more',
80
+ },
81
+ type: {
82
+ type: String,
83
+ default: 'info',
84
+ },
85
+ },
86
+ methods: {
87
+ getIconType(type) {
88
+ if (type === 'danger') return 'block';
89
+ if (!type.trim()) return 'info'; // check if type is empty or whitespace
90
+ return type;
91
+ },
92
+ isShowTextIcon(type) {
93
+ return ['danger', 'warning', 'info', ''].includes(type);
94
+ },
95
+ emitClose() {
96
+ this.onClose();
97
+
98
+ this.$emit('close');
99
+ },
100
+ },
101
+ };
102
+ </script>
103
+
104
+ <style lang="scss" scoped>
105
+ @use '@/assets/scss/unnnic' as *;
106
+
107
+ .banner-alert {
108
+ display: grid;
109
+ grid-template-columns: 1fr auto;
110
+ text-align: center;
111
+ margin-bottom: $unnnic-spacing-sm;
112
+
113
+ color: $unnnic-color-neutral-white;
114
+ font-family: $unnnic-font-family-secondary;
115
+ font-size: $unnnic-font-size-body-gt;
116
+ line-height: $unnnic-font-size-body-gt + $unnnic-line-height-md;
117
+ font-weight: $unnnic-font-weight-regular;
118
+ background-color: $unnnic-color-aux-blue-500;
119
+
120
+ &__container-text {
121
+ display: flex;
122
+ justify-content: center;
123
+ align-items: center;
124
+ padding: $unnnic-spacing-xs $unnnic-spacing-sm;
125
+ flex-grow: 1;
126
+
127
+ .text {
128
+ margin: 0 $unnnic-spacing-nano 0 0;
129
+ }
130
+ }
131
+
132
+ &__textIcon {
133
+ margin-right: $unnnic-spacing-xs;
134
+ }
135
+
136
+ &__link {
137
+ color: inherit;
138
+ display: block;
139
+ font-weight: $unnnic-font-weight-bold;
140
+ text-decoration: underline;
141
+ text-underline-position: under;
142
+ }
143
+
144
+ &__close {
145
+ display: flex;
146
+ align-items: center;
147
+ max-height: 38px;
148
+ padding: 0 $unnnic-spacing-sm;
149
+ cursor: pointer;
150
+ user-select: none;
151
+ border-left: $unnnic-border-width-thinner solid $unnnic-color-aux-blue-300;
152
+ &:hover {
153
+ background-color: $unnnic-color-aux-blue-300;
154
+ }
155
+ }
156
+
157
+ &--banner-warning {
158
+ background-color: $unnnic-color-aux-orange-500;
159
+
160
+ .banner-alert__close {
161
+ border-left: $unnnic-border-width-thinner solid
162
+ $unnnic-color-aux-orange-300;
163
+
164
+ &:hover {
165
+ background-color: $unnnic-color-aux-orange-300;
166
+ }
167
+ }
168
+ }
169
+
170
+ &--banner-danger {
171
+ background-color: $unnnic-color-aux-red-500;
172
+
173
+ .banner-alert__close {
174
+ border-left: $unnnic-border-width-thinner solid $unnnic-color-aux-red-300;
175
+
176
+ &:hover {
177
+ background-color: $unnnic-color-aux-red-300;
178
+ }
179
+ }
180
+ }
181
+ }
182
+ </style>
@@ -0,0 +1,49 @@
1
+ <template>
2
+ <button @click="callAlert">Launch alert</button>
3
+ </template>
4
+
5
+ <script>
6
+ import alert from '../../utils/call';
7
+
8
+ export default {
9
+ props: {
10
+ title: {
11
+ type: String,
12
+ default: null,
13
+ },
14
+ text: {
15
+ type: String,
16
+ default: null,
17
+ },
18
+ icon: {
19
+ type: String,
20
+ default: null,
21
+ },
22
+ enabled: {
23
+ type: Boolean,
24
+ default: true,
25
+ },
26
+ scheme: {
27
+ type: String,
28
+ default: null,
29
+ },
30
+ seconds: {
31
+ type: Number,
32
+ default: 3,
33
+ },
34
+ closeText: {
35
+ type: String,
36
+ default: null,
37
+ },
38
+ position: {
39
+ type: String,
40
+ default: 'top-right',
41
+ },
42
+ },
43
+ methods: {
44
+ callAlert() {
45
+ alert.callAlert({ props: this.$props, seconds: this.seconds });
46
+ },
47
+ },
48
+ };
49
+ </script>
@@ -27,6 +27,15 @@
27
27
  {{ text }}
28
28
  </div>
29
29
 
30
+ <a
31
+ v-if="linkHref"
32
+ class="alert__link"
33
+ :href="linkHref"
34
+ :target="linkTarget"
35
+ >
36
+ {{ linkText }}
37
+ </a>
38
+
30
39
  <div
31
40
  class="alert__close"
32
41
  @click="emitClose"
@@ -49,6 +58,10 @@ export default {
49
58
  UnnnicIcon,
50
59
  },
51
60
  props: {
61
+ version: {
62
+ type: String,
63
+ default: '1.0',
64
+ },
52
65
  text: {
53
66
  type: String,
54
67
  default: null,
@@ -61,6 +74,18 @@ export default {
61
74
  type: Function,
62
75
  default: () => {},
63
76
  },
77
+ linkHref: {
78
+ type: String,
79
+ default: '',
80
+ },
81
+ linkTarget: {
82
+ type: String,
83
+ default: '_blank',
84
+ },
85
+ linkText: {
86
+ type: String,
87
+ default: 'Learn more',
88
+ },
64
89
  type: {
65
90
  type: String,
66
91
  default: 'default',
@@ -182,6 +207,7 @@ export default {
182
207
  padding: $unnnic-spacing-xs $unnnic-spacing-sm;
183
208
  }
184
209
 
210
+ &__link,
185
211
  &__close {
186
212
  border-left: $unnnic-border-width-thinner solid $unnnic-color-neutral-cloudy;
187
213
 
@@ -190,6 +216,14 @@ export default {
190
216
  }
191
217
  }
192
218
 
219
+ &__link {
220
+ padding: $unnnic-spacing-xs $unnnic-spacing-sm;
221
+ text-decoration: none;
222
+ color: inherit;
223
+ display: block;
224
+ font-weight: $unnnic-font-weight-bold;
225
+ }
226
+
193
227
  &__close {
194
228
  padding: $unnnic-spacing-xs $unnnic-spacing-sm;
195
229
  cursor: pointer;
@@ -203,6 +237,7 @@ export default {
203
237
  background-color: $unnnic-color-aux-green-700;
204
238
  }
205
239
 
240
+ .alert__link,
206
241
  .alert__close {
207
242
  border-left: $unnnic-border-width-thinner solid
208
243
  $unnnic-color-aux-green-300;
@@ -220,6 +255,7 @@ export default {
220
255
  background-color: $unnnic-color-aux-red-700;
221
256
  }
222
257
 
258
+ .alert__link,
223
259
  .alert__close {
224
260
  border-left: $unnnic-border-width-thinner solid $unnnic-color-aux-red-300;
225
261
 
@@ -0,0 +1,89 @@
1
+ import { mount } from '@vue/test-utils';
2
+ import { describe, test, expect, beforeEach, afterEach, vi } from 'vitest';
3
+ import AlertBanner from '@/components/Alert/AlertBanner.vue';
4
+
5
+ describe('AlertBanner.vue', () => {
6
+ let wrapper;
7
+
8
+ beforeEach(() => {
9
+ wrapper = mount(AlertBanner, {
10
+ props: {
11
+ text: 'This is a banner alert',
12
+ type: 'danger',
13
+ showCloseButton: true,
14
+ linkHref: 'https://example.com',
15
+ linkText: 'Learn more',
16
+ linkTarget: '_self',
17
+ onClose: vi.fn(),
18
+ },
19
+ });
20
+ });
21
+
22
+ afterEach(() => {
23
+ wrapper.unmount();
24
+ });
25
+
26
+ test('renders correctly', () => {
27
+ expect(wrapper.exists()).toBe(true);
28
+ });
29
+
30
+ test('renders the correct text and link', () => {
31
+ const textElement = wrapper.find('.text');
32
+ const linkElement = wrapper.find('.banner-alert__link');
33
+
34
+ expect(textElement.text()).toBe('This is a banner alert');
35
+ expect(linkElement.text()).toBe('Learn more');
36
+ expect(linkElement.attributes('href')).toBe('https://example.com');
37
+ expect(linkElement.attributes('target')).toBe('_self');
38
+ });
39
+
40
+ test('applies the correct class based on the type', () => {
41
+ expect(wrapper.classes()).toContain('banner-alert--banner-danger');
42
+ });
43
+
44
+ test('renders the correct icon based on the type', () => {
45
+ const icon = wrapper.findComponent('[data-test="unnnic-icon"]');
46
+ expect(icon.exists()).toBe(true);
47
+ expect(icon.props('icon')).toBe('block');
48
+ expect(icon.props('size')).toBe('sm');
49
+ expect(icon.props('scheme')).toBe('neutral-white');
50
+ });
51
+
52
+ test('does not render the icon when type is not danger, warning, or info', async () => {
53
+ await wrapper.setProps({ type: 'success' });
54
+ const icon = wrapper.findComponent('[data-test="unnnic-icon"]');
55
+ expect(icon.element.style.display).toBe('none');
56
+ });
57
+
58
+ test('calls emitClose and emits close event when close button is clicked', async () => {
59
+ const closeButton = wrapper.find('.banner-alert__close');
60
+ await closeButton.trigger('click');
61
+
62
+ expect(wrapper.emitted()).toHaveProperty('close');
63
+ expect(wrapper.props().onClose).toHaveBeenCalled();
64
+ });
65
+
66
+ test('does not render close button if showCloseButton is false', async () => {
67
+ await wrapper.setProps({ showCloseButton: false });
68
+ const closeButton = wrapper.find('.banner-alert__close');
69
+ expect(closeButton.element.style.display).toBe('none');
70
+ });
71
+
72
+ test('matches the snapshot', () => {
73
+ expect(wrapper.html()).toMatchSnapshot();
74
+ });
75
+
76
+ test('getIconType function returns the correct icon based on type', () => {
77
+ expect(wrapper.vm.getIconType('danger')).toBe('block');
78
+ expect(wrapper.vm.getIconType('info')).toBe('info');
79
+ expect(wrapper.vm.getIconType('')).toBe('info');
80
+ });
81
+
82
+ test('isShowTextIcon function returns true for danger, warning, and info types', () => {
83
+ expect(wrapper.vm.isShowTextIcon('danger')).toBe(true);
84
+ expect(wrapper.vm.isShowTextIcon('warning')).toBe(true);
85
+ expect(wrapper.vm.isShowTextIcon('info')).toBe(true);
86
+ expect(wrapper.vm.isShowTextIcon('')).toBe(true);
87
+ expect(wrapper.vm.isShowTextIcon('success')).toBe(false);
88
+ });
89
+ });
@@ -0,0 +1,98 @@
1
+ import { mount } from '@vue/test-utils';
2
+ import { describe, expect, test, vi, beforeEach, afterEach } from 'vitest';
3
+ import AlertCaller from '@/components/Alert/AlertCaller.vue';
4
+ import alert from '@/utils/call';
5
+
6
+ vi.mock('@/utils/call', () => ({
7
+ default: {
8
+ callAlert: vi.fn(),
9
+ },
10
+ }));
11
+
12
+ describe('AlertCaller.vue', () => {
13
+ let wrapper;
14
+
15
+ const defaultProps = {
16
+ title: 'Test Title',
17
+ text: 'Test Text',
18
+ icon: 'test-icon',
19
+ enabled: true,
20
+ scheme: 'primary',
21
+ seconds: 5,
22
+ closeText: 'Close',
23
+ position: 'top-right',
24
+ };
25
+
26
+ beforeEach(() => {
27
+ wrapper = mount(AlertCaller, {
28
+ props: defaultProps,
29
+ });
30
+ });
31
+
32
+ afterEach(() => {
33
+ wrapper.unmount();
34
+ vi.clearAllMocks();
35
+ });
36
+
37
+ test('renders correctly', () => {
38
+ expect(wrapper.exists()).toBe(true);
39
+ expect(wrapper.find('button').text()).toBe('Launch alert');
40
+ });
41
+
42
+ test('calls callAlert method when button is clicked', async () => {
43
+ const callAlertSpy = vi.spyOn(wrapper.vm, 'callAlert');
44
+ await wrapper.find('button').trigger('click');
45
+ expect(callAlertSpy).toHaveBeenCalledTimes(1);
46
+ });
47
+
48
+ test('callAlert method invokes alert.callAlert with correct props', async () => {
49
+ await wrapper.find('button').trigger('click');
50
+ expect(alert.callAlert).toHaveBeenCalledWith({
51
+ props: defaultProps,
52
+ seconds: defaultProps.seconds,
53
+ });
54
+ });
55
+
56
+ test.each([
57
+ ['title', 'New Title'],
58
+ ['text', 'New Text'],
59
+ ['icon', 'new-icon'],
60
+ ['enabled', false],
61
+ ['scheme', 'secondary'],
62
+ ['seconds', 10],
63
+ ['closeText', 'Dismiss'],
64
+ ['position', 'bottom-left'],
65
+ ])('updates %s prop correctly', async (propName, newValue) => {
66
+ await wrapper.setProps({ [propName]: newValue });
67
+ await wrapper.find('button').trigger('click');
68
+ const expectedProps = { ...defaultProps, [propName]: newValue };
69
+ expect(alert.callAlert).toHaveBeenCalledWith({
70
+ props: expectedProps,
71
+ seconds: expectedProps.seconds,
72
+ });
73
+ });
74
+
75
+ test('passes default values when props are not provided', async () => {
76
+ wrapper = mount(AlertCaller, {
77
+ props: {},
78
+ });
79
+ await wrapper.find('button').trigger('click');
80
+ expect(alert.callAlert).toHaveBeenCalledWith({
81
+ props: {
82
+ title: null,
83
+ text: null,
84
+ icon: null,
85
+ enabled: true,
86
+ scheme: null,
87
+ seconds: 3,
88
+ closeText: null,
89
+ position: 'top-right',
90
+ },
91
+ seconds: 3,
92
+ });
93
+ });
94
+
95
+ test('matches snapshot', () => {
96
+ expect(wrapper.html()).toMatchSnapshot();
97
+ });
98
+ });
@@ -1,15 +1,11 @@
1
1
  // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2
2
 
3
3
  exports[`UnnnicAlert.vue > matches the snapshot 1`] = `
4
- "<transition-stub data-v-c3231c18="" name="toast-slide" appear="true" persisted="false" css="true" icon="alert-icon" position="top-right" closetext="Close">
5
- <aside data-v-c3231c18="" class="unnnic-toast unnnic-toast--informational" role="status" aria-live="polite" data-testid="unnnic-toast">
6
- <section data-v-c3231c18="" class="unnnic-toast__content">
7
- <header data-v-c3231c18="" class="unnnic-toast__header"><span data-v-26446d8e="" data-v-c3231c18="" class="material-symbols-rounded unnnic-icon-scheme--blue-500 unnnic-icon-size--ant" data-testid="toast-type-icon" translate="no">info</span>
8
- <h3 data-v-c3231c18="" class="unnnic-toast__title">Test Alert</h3><span data-v-26446d8e="" data-v-c3231c18="" class="material-symbols-rounded unnnic-icon-scheme--neutral-dark unnnic-icon-size--ant unnnic--clickable unnnic-toast__close" data-testid="toast-close-button" translate="no">close</span>
9
- </header>
10
- <!--v-if-->
11
- </section>
12
- <!--v-if-->
13
- </aside>
14
- </transition-stub>"
4
+ "<div data-v-284427ba="" class="unnnic-alert unnnic-alert-position--top-right"><span data-v-26446d8e="" data-v-284427ba="" class="material-symbols-rounded unnnic-icon-scheme--primary unnnic-icon-size--sm" data-testid="material-icon" translate="no" data-test="unnnic-icon">alert-icon</span>
5
+ <div data-v-284427ba="" class="unnnic-alert__content">
6
+ <div data-v-284427ba="" class="unnnic-alert__title">TEST ALERT</div>
7
+ <div data-v-284427ba="" class="unnnic-alert__text">This is an alert message</div>
8
+ </div>
9
+ <div data-v-284427ba="" class="unnnic-alert__close-text unnnic--clickable">CLOSE</div>
10
+ </div>"
15
11
  `;
@@ -1,10 +1,10 @@
1
1
  // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2
2
 
3
3
  exports[`Alert.vue > matches snapshot 1`] = `
4
- "<div data-v-fb94f284="" class="alert-container" version="1.0" linkhref="https://example.com" linktarget="_blank" linktext="Learn more">
4
+ "<div data-v-fb94f284="" class="alert-container">
5
5
  <div data-v-fb94f284="" class="alert alert--scheme-aux-green">
6
6
  <div data-v-fb94f284="" class="alert__progress"></div>
7
- <div data-v-fb94f284="" class="alert__text">Test Alert</div>
7
+ <div data-v-fb94f284="" class="alert__text">Test Alert</div><a data-v-fb94f284="" class="alert__link" href="https://example.com" target="_blank">Learn more</a>
8
8
  <div data-v-fb94f284="" class="alert__close">
9
9
  <unnnic-icon-stub data-v-fb94f284="" filled="false" next="false" icon="close-1" clickable="false" size="sm" scheme="neutral-white"></unnnic-icon-stub>
10
10
  </div>