@weni/unnnic-system 3.9.4 → 3.11.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 (236) hide show
  1. package/CHANGELOG.md +94 -0
  2. package/dist/assets/tokens/colors.json.d.ts +376 -0
  3. package/dist/components/Accordion/Accordion.vue.d.ts +1 -1
  4. package/dist/components/Alert/Alert.vue.d.ts +17 -116
  5. package/dist/components/Alert/Alert.vue.d.ts.map +1 -1
  6. package/dist/components/Alert/Version1dot1.vue.d.ts +2 -38
  7. package/dist/components/Alert/Version1dot1.vue.d.ts.map +1 -1
  8. package/dist/components/AudioRecorder/AudioHandler.vue.d.ts +2 -2
  9. package/dist/components/AudioRecorder/AudioPlayer.vue.d.ts +1 -1
  10. package/dist/components/AudioRecorder/AudioRecorder.vue.d.ts +5 -5
  11. package/dist/components/AvatarIcon/AvatarIcon.vue.d.ts +3 -3
  12. package/dist/components/Banner/Banner.vue.d.ts +1 -1
  13. package/dist/components/Banner/InfoBanner.vue.d.ts +1 -1
  14. package/dist/components/Breadcrumb/Breadcrumb.vue.d.ts +1 -1
  15. package/dist/components/Button/Button.vue.d.ts +1 -1
  16. package/dist/components/Button/Button.vue.d.ts.map +1 -1
  17. package/dist/components/Button/ButtonIcon.vue.d.ts +1 -1
  18. package/dist/components/Button/types.d.ts +1 -1
  19. package/dist/components/Button/types.d.ts.map +1 -1
  20. package/dist/components/Card/AccountCard.vue.d.ts +5 -5
  21. package/dist/components/Card/BlankCard.vue.d.ts +1 -1
  22. package/dist/components/Card/Card.vue.d.ts +27 -27
  23. package/dist/components/Card/CardCompany.vue.d.ts +11 -414
  24. package/dist/components/Card/CardData.vue.d.ts +1 -1
  25. package/dist/components/Card/CardStatusesContainer.vue.d.ts +5 -5
  26. package/dist/components/Card/ContentCard.vue.d.ts +3 -3
  27. package/dist/components/Card/DashCard.vue.d.ts +5 -5
  28. package/dist/components/Card/DefaultCard.vue.d.ts +1 -1
  29. package/dist/components/Card/MarketplaceCard.vue.d.ts +2 -2
  30. package/dist/components/Card/MarketplaceCard.vue.d.ts.map +1 -1
  31. package/dist/components/Card/SimpleCard.vue.d.ts +3 -3
  32. package/dist/components/Card/StatusCard.vue.d.ts +2 -2
  33. package/dist/components/Card/TitleCard.vue.d.ts +3 -3
  34. package/dist/components/CardImage/CardImage.vue.d.ts +24 -31
  35. package/dist/components/CardInformation/CardInformation.vue.d.ts +5 -5
  36. package/dist/components/CardProject/CardProject.vue.d.ts +3 -3
  37. package/dist/components/Carousel/Carousel.vue.d.ts +13 -416
  38. package/dist/components/Carousel/TagCarousel.vue.d.ts +12 -415
  39. package/dist/components/ChartBar/ChartBar.vue.d.ts +5 -5
  40. package/dist/components/ChartLine/ChartLine.vue.d.ts +1 -1
  41. package/dist/components/ChatText/ChatText.vue.d.ts +2 -2
  42. package/dist/components/ChatsContact/ChatsContact.vue.d.ts +21 -446
  43. package/dist/components/ChatsDashboardTagLive/ChatsDashboardTagLive.vue.d.ts +1 -1
  44. package/dist/components/ChatsHeader/ChatsHeader.vue.d.ts +1 -1
  45. package/dist/components/ChatsHeader/ChatsHeader.vue.d.ts.map +1 -1
  46. package/dist/components/ChatsMessage/ChatsMessage.vue.d.ts +5 -5
  47. package/dist/components/ChatsMessage/ChatsMessageStatusBackdrop.vue.d.ts +2 -2
  48. package/dist/components/ChatsNavbar/ChatsNavbar.vue.d.ts +1 -1
  49. package/dist/components/ChatsUserAvatar/ChatsUserAvatar.vue.d.ts +2 -2
  50. package/dist/components/Checkbox/Checkbox.vue.d.ts +19 -26
  51. package/dist/components/Checkbox/Checkbox.vue.d.ts.map +1 -1
  52. package/dist/components/CheckboxGroup/CheckboxGroup.vue.d.ts +28 -0
  53. package/dist/components/CheckboxGroup/CheckboxGroup.vue.d.ts.map +1 -0
  54. package/dist/components/Comment/Comment.vue.d.ts +1 -1
  55. package/dist/components/DataArea/DataArea.vue.d.ts +2 -2
  56. package/dist/components/DataTable/index.vue.d.ts +1 -1
  57. package/dist/components/DataTable/index.vue.d.ts.map +1 -1
  58. package/dist/components/DateFilter/DateFilter.vue.d.ts +170 -39
  59. package/dist/components/DatePicker/DatePicker.vue.d.ts +4 -4
  60. package/dist/components/Drawer/Drawer.vue.d.ts +4 -4
  61. package/dist/components/Dropdown/Dropdown.vue.d.ts +1 -1
  62. package/dist/components/Dropdown/LanguageSelect.vue.d.ts +3 -3
  63. package/dist/components/Flag.vue.d.ts +2 -2
  64. package/dist/components/FormElement/FormElement.vue.d.ts +51 -28
  65. package/dist/components/FormElement/FormElement.vue.d.ts.map +1 -1
  66. package/dist/components/Icon.vue.d.ts +1 -1
  67. package/dist/components/Icon.vue.d.ts.map +1 -1
  68. package/dist/components/IconLoading/IconLoading.vue.d.ts +1 -1
  69. package/dist/components/ImportCard/ImportCard.vue.d.ts +4 -4
  70. package/dist/components/Input/BaseInput.vue.d.ts +11 -2
  71. package/dist/components/Input/BaseInput.vue.d.ts.map +1 -1
  72. package/dist/components/Input/Input.vue.d.ts +170 -39
  73. package/dist/components/Input/Input.vue.d.ts.map +1 -1
  74. package/dist/components/Input/TextInput.vue.d.ts +33 -24
  75. package/dist/components/Input/TextInput.vue.d.ts.map +1 -1
  76. package/dist/components/InputDatePicker/InputDatePicker.vue.d.ts +175 -44
  77. package/dist/components/InputNext/InputNext.vue.d.ts +4 -4
  78. package/dist/components/Label/Label.vue.d.ts +9 -15
  79. package/dist/components/Label/Label.vue.d.ts.map +1 -1
  80. package/dist/components/Modal/Modal.vue.d.ts +2 -2
  81. package/dist/components/ModalDialog/ModalDialog.vue.d.ts +6 -6
  82. package/dist/components/ModalNext/ModalNext.vue.d.ts +175 -44
  83. package/dist/components/ModalUpload/ModalUpload.vue.d.ts +9 -9
  84. package/dist/components/MoodRating/MoodRating.vue.d.ts +1 -1
  85. package/dist/components/MultiSelect/MultiSelect.vue.d.ts +26 -14
  86. package/dist/components/PageHeader/PageHeader.vue.d.ts +28 -0
  87. package/dist/components/PageHeader/PageHeader.vue.d.ts.map +1 -0
  88. package/dist/components/PageHeader/index.d.ts +3 -0
  89. package/dist/components/PageHeader/index.d.ts.map +1 -0
  90. package/dist/components/PageHeader/types.d.ts +9 -0
  91. package/dist/components/PageHeader/types.d.ts.map +1 -0
  92. package/dist/components/Pagination/Pagination.vue.d.ts +3 -3
  93. package/dist/components/ProgressBar/ProgressBar.vue.d.ts +1 -1
  94. package/dist/components/Radio/Radio.vue.d.ts +10 -6
  95. package/dist/components/Radio/Radio.vue.d.ts.map +1 -1
  96. package/dist/components/SelectSmart/SelectSmart.vue.d.ts +68 -469
  97. package/dist/components/SelectSmart/SelectSmartMultipleHeader.vue.d.ts +11 -414
  98. package/dist/components/SelectSmart/SelectSmartOption.vue.d.ts +21 -28
  99. package/dist/components/SelectSmart/SelectSmartOption.vue.d.ts.map +1 -1
  100. package/dist/components/SelectTime/index.vue.d.ts +33 -24
  101. package/dist/components/SkeletonLoading/skeletonTheme.vue.d.ts +1 -1
  102. package/dist/components/Slider/Slider.vue.d.ts +2 -2
  103. package/dist/components/StarRating/StarRating.vue.d.ts +1 -1
  104. package/dist/components/Switch/Switch.vue.d.ts +55 -21
  105. package/dist/components/Switch/Switch.vue.d.ts.map +1 -1
  106. package/dist/components/Tab/Tab.vue.d.ts +13 -2
  107. package/dist/components/TableNext/TableBodyCell.vue.d.ts +2 -2
  108. package/dist/components/TableNext/TablePagination.vue.d.ts +3 -3
  109. package/dist/components/TabsExpanded/TabsExpanded.vue.d.ts +1 -1
  110. package/dist/components/Tag/DefaultTag.vue.d.ts +4 -83
  111. package/dist/components/Tag/DefaultTag.vue.d.ts.map +1 -1
  112. package/dist/components/Tag/Tag.vue.d.ts +12 -414
  113. package/dist/components/Tag/Tag.vue.d.ts.map +1 -1
  114. package/dist/components/Tag/types.d.ts +18 -0
  115. package/dist/components/Tag/types.d.ts.map +1 -0
  116. package/dist/components/TextArea/TextArea.vue.d.ts +78 -33
  117. package/dist/components/TextArea/TextArea.vue.d.ts.map +1 -1
  118. package/dist/components/Toast/Toast.vue.d.ts +16 -0
  119. package/dist/components/Toast/Toast.vue.d.ts.map +1 -0
  120. package/dist/components/Toast/ToastManager.d.ts +14 -0
  121. package/dist/components/Toast/ToastManager.d.ts.map +1 -0
  122. package/dist/components/Toast/types.d.ts +35 -0
  123. package/dist/components/Toast/types.d.ts.map +1 -0
  124. package/dist/components/ToolTip/ToolTip.vue.d.ts +1 -1
  125. package/dist/components/Tour/Tour.vue.d.ts +3 -3
  126. package/dist/components/Tour/TourPopover.vue.d.ts +3 -3
  127. package/dist/components/UploadArea/UploadArea.vue.d.ts +4 -4
  128. package/dist/components/index.d.ts +8910 -10904
  129. package/dist/components/index.d.ts.map +1 -1
  130. package/dist/components/ui/popover/PopoverContent.vue.d.ts +1 -1
  131. package/dist/components/ui/popover/PopoverContent.vue.d.ts.map +1 -1
  132. package/dist/{es-8146fb1b.mjs → es-e3248052.mjs} +1 -1
  133. package/dist/{index-724ed422.mjs → index-f67d5b30.mjs} +9292 -8808
  134. package/dist/{pt-br-af294ec9.mjs → pt-br-f6f53acd.mjs} +1 -1
  135. package/dist/style.css +1 -1
  136. package/dist/unnnic.mjs +181 -173
  137. package/dist/unnnic.umd.js +35 -36
  138. package/dist/utils/call.d.ts +2 -1
  139. package/dist/utils/call.d.ts.map +1 -1
  140. package/package.json +2 -2
  141. package/src/assets/fonts/material-symbols-rounded.woff2 +0 -0
  142. package/src/assets/icons/checkbox-checked-disabled.svg +3 -0
  143. package/src/assets/icons/checkbox-checked.svg +3 -0
  144. package/src/assets/icons/checkbox-less-disabled.svg +3 -0
  145. package/src/assets/icons/checkbox-less.svg +3 -0
  146. package/src/assets/icons/radio-checked.svg +3 -0
  147. package/src/assets/icons/switch-checked-disabled.svg +3 -0
  148. package/src/assets/icons/switch-checked.svg +3 -0
  149. package/src/components/Alert/Alert.vue +26 -135
  150. package/src/components/Alert/Version1dot1.vue +0 -36
  151. package/src/components/Alert/__tests__/Alert.spec.js +2 -45
  152. package/src/components/Alert/__tests__/Version1dot1.spec.js +0 -21
  153. package/src/components/Alert/__tests__/__snapshots__/Alert.spec.js.snap +11 -7
  154. package/src/components/Alert/__tests__/__snapshots__/AlertBanner.spec.js.snap +2 -2
  155. package/src/components/Alert/__tests__/__snapshots__/Version1dot1.spec.js.snap +1 -1
  156. package/src/components/Button/Button.vue +67 -117
  157. package/src/components/Button/types.ts +0 -1
  158. package/src/components/Card/MarketplaceCard.vue +1 -0
  159. package/src/components/ChatsContact/ChatsContact.vue +10 -6
  160. package/src/components/Checkbox/Checkbox.vue +117 -65
  161. package/src/components/Checkbox/__tests__/Checkbox.spec.js +6 -21
  162. package/src/components/CheckboxGroup/CheckboxGroup.vue +96 -0
  163. package/src/components/Collapse/Collapse.vue +1 -1
  164. package/src/components/Collapse/__tests__/__snapshots__/Collapse.spec.js.snap +1 -1
  165. package/src/components/FormElement/FormElement.vue +63 -93
  166. package/src/components/Icon.vue +4 -10
  167. package/src/components/Input/BaseInput.vue +12 -12
  168. package/src/components/Input/Input.scss +19 -20
  169. package/src/components/Input/Input.vue +60 -55
  170. package/src/components/Input/TextInput.vue +25 -54
  171. package/src/components/Input/__test__/Input.spec.js +13 -33
  172. package/src/components/Input/__test__/TextInput.spec.js +6 -8
  173. package/src/components/Input/__test__/__snapshots__/Input.spec.js.snap +14 -5
  174. package/src/components/Input/__test__/__snapshots__/TextInput.spec.js.snap +1 -1
  175. package/src/components/Label/Label.vue +52 -21
  176. package/src/components/Label/__tests__/Label.spec.js +1 -1
  177. package/src/components/Label/__tests__/__snapshots__/Label.spec.js.snap +1 -1
  178. package/src/components/PageHeader/PageHeader.vue +148 -0
  179. package/src/components/PageHeader/index.ts +2 -0
  180. package/src/components/PageHeader/types.ts +10 -0
  181. package/src/components/Radio/Radio.vue +118 -66
  182. package/src/components/Radio/__test__/Radio.spec.js +14 -20
  183. package/src/components/Radio/__test__/__snapshots__/Radio.spec.js.snap +4 -3
  184. package/src/components/RadioGroup/RadioGroup.vue +142 -0
  185. package/src/components/SelectSmart/SelectSmart.vue +4 -3
  186. package/src/components/Switch/Switch.vue +132 -91
  187. package/src/components/Switch/__tests__/Switch.spec.js +8 -75
  188. package/src/components/Switch/__tests__/__snapshots__/Switch.spec.js.snap +5 -6
  189. package/src/components/Tab/Tab.vue +37 -23
  190. package/src/components/Tab/__test__/__snapshots__/Tab.spec.js.snap +1 -1
  191. package/src/components/TableNext/__test__/__snapshots__/TableNext.spec.js.snap +2 -2
  192. package/src/components/TableNext/__test__/__snapshots__/TablePagination.spec.js.snap +2 -2
  193. package/src/components/Tag/DefaultTag.vue +51 -107
  194. package/src/components/Tag/Tag.vue +32 -79
  195. package/src/components/Tag/types.ts +19 -0
  196. package/src/components/TextArea/TextArea.vue +41 -12
  197. package/src/components/TextArea/__test__/__snapshots__/TextArea.spec.js.snap +11 -3
  198. package/src/components/Toast/Toast.vue +246 -0
  199. package/src/components/Toast/ToastManager.ts +110 -0
  200. package/src/components/Toast/__tests__/Toast.spec.js +291 -0
  201. package/src/components/Toast/__tests__/ToastManager.spec.js +294 -0
  202. package/src/components/Toast/types.ts +57 -0
  203. package/src/components/index.ts +33 -17
  204. package/src/stories/Alert.stories.js +6 -67
  205. package/src/stories/Button.stories.js +29 -39
  206. package/src/stories/Checkbox.stories.js +11 -4
  207. package/src/stories/CheckboxGroup.stories.js +105 -0
  208. package/src/stories/Icon.stories.js +2 -0
  209. package/src/stories/Input.stories.js +71 -76
  210. package/src/stories/Label.stories.js +7 -0
  211. package/src/stories/PageHeader.stories.js +330 -0
  212. package/src/stories/Radio.stories.js +28 -1
  213. package/src/stories/RadioGroup.stories.js +144 -0
  214. package/src/stories/Switch.stories.js +10 -5
  215. package/src/stories/Tab.stories.js +11 -4
  216. package/src/stories/Tag.stories.js +24 -43
  217. package/src/stories/TextArea.stories.js +14 -2
  218. package/src/stories/Toast.mdx +123 -0
  219. package/src/stories/Toast.stories.js +126 -0
  220. package/src/types/scheme-colors.d.ts +1 -0
  221. package/src/utils/call.js +46 -18
  222. package/dist/components/Tag/BrandTag.vue.d.ts +0 -51
  223. package/dist/components/Tag/BrandTag.vue.d.ts.map +0 -1
  224. package/dist/components/Tag/IndicatorTag.vue.d.ts +0 -151
  225. package/dist/components/Tag/IndicatorTag.vue.d.ts.map +0 -1
  226. package/dist/components/Tag/TagNext.vue.d.ts +0 -24
  227. package/dist/components/Tag/TagNext.vue.d.ts.map +0 -1
  228. package/src/assets/fonts/Material Symbols Rounded Filled.woff2 +0 -0
  229. package/src/assets/fonts/Material Symbols Rounded.woff2 +0 -0
  230. package/src/components/Alert/AlertBanner.vue +0 -182
  231. package/src/components/Alert/AlertCaller.vue +0 -49
  232. package/src/components/Alert/__tests__/AlertBanner.spec.js +0 -89
  233. package/src/components/Alert/__tests__/AlertCaller.spec.js +0 -98
  234. package/src/components/Tag/BrandTag.vue +0 -96
  235. package/src/components/Tag/IndicatorTag.vue +0 -107
  236. package/src/components/Tag/TagNext.vue +0 -60
@@ -1,182 +0,0 @@
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>
@@ -1,49 +0,0 @@
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>
@@ -1,89 +0,0 @@
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
- });
@@ -1,98 +0,0 @@
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,96 +0,0 @@
1
- <template>
2
- <div
3
- :class="{
4
- 'unnnic-brand-tag': true,
5
- 'unnnic-brand-tag--disabled': !disabled,
6
- 'unnnic-brand-tag--clickable': clickable,
7
- }"
8
- >
9
- <span class="unnnic-brand-tag__label">{{ text }}</span>
10
- <UnnnicIcon
11
- :icon="disabled ? 'close-1' : 'add-1'"
12
- :scheme="disabled ? 'neutral-snow' : 'brand-weni-dark'"
13
- class="unnnic-brand-tag__icon"
14
- size="xs"
15
- />
16
- </div>
17
- </template>
18
-
19
- <script>
20
- import UnnnicIcon from '../Icon.vue';
21
-
22
- export default {
23
- name: 'UnnnicBrandTag',
24
- components: {
25
- UnnnicIcon,
26
- },
27
- props: {
28
- text: {
29
- type: String,
30
- default: null,
31
- },
32
- clickable: {
33
- type: Boolean,
34
- default: false,
35
- },
36
- disabled: {
37
- type: Boolean,
38
- default: false,
39
- },
40
- },
41
- methods: {
42
- closeClicked() {
43
- if (!this.closeClicked) return;
44
- this.$emit('close-click');
45
- },
46
- },
47
- };
48
- </script>
49
-
50
- <style lang="scss" scoped>
51
- @use '@/assets/scss/unnnic' as *;
52
-
53
- .unnnic-brand-tag {
54
- display: flex;
55
- align-items: center;
56
- justify-content: center;
57
- border-radius: $unnnic-border-radius-pill;
58
- border: 1px solid $unnnic-color-brand-weni-soft;
59
- height: 1.875 * $unnnic-font-size;
60
- white-space: nowrap;
61
- transition: 0.2s;
62
-
63
- color: $unnnic-color-neutral-snow;
64
- background-color: $unnnic-color-brand-weni-dark;
65
- &:hover {
66
- background-color: $unnnic-color-brand-weni-soft;
67
- }
68
-
69
- &--disabled {
70
- color: $unnnic-color-brand-weni-dark;
71
- background-color: $unnnic-color-background-snow;
72
- &:hover {
73
- background-color: rgba(
74
- $unnnic-color-brand-weni,
75
- $unnnic-opacity-level-extra-light
76
- );
77
- }
78
- }
79
- &--clickable {
80
- cursor: pointer;
81
- }
82
-
83
- &__label {
84
- font-family: $unnnic-font-family-secondary;
85
- font-size: $unnnic-font-size-body-md;
86
- font-weight: $unnnic-font-weight-regular;
87
- line-height: ($unnnic-font-size-body-md + $unnnic-line-height-medium);
88
- padding: $unnnic-spacing-stack-nano $unnnic-inline-ant;
89
- }
90
-
91
- &__icon {
92
- margin-right: $unnnic-inline-ant;
93
- cursor: pointer;
94
- }
95
- }
96
- </style>
@@ -1,107 +0,0 @@
1
- <template>
2
- <div
3
- :class="`unnnic-tag
4
- ${clickable ? 'unnnic-tag--clickable' : ''}`"
5
- >
6
- <ToolTip
7
- :enabled="enableTooltip"
8
- :text="tooltipText"
9
- side="bottom"
10
- >
11
- <span class="unnnic-tag__count">{{ count }}</span>
12
- </ToolTip>
13
- <span class="unnnic-tag__label">{{ text }}</span>
14
- <UnnnicIcon
15
- v-if="hasBackButton"
16
- icon="arrow-right-1-1"
17
- class="unnnic-tag__icon"
18
- scheme="neutral-darkest"
19
- size="xs"
20
- />
21
- </div>
22
- </template>
23
-
24
- <script>
25
- import UnnnicIcon from '../Icon.vue';
26
- import ToolTip from '../ToolTip/ToolTip.vue';
27
-
28
- export default {
29
- name: 'UnnnicTag',
30
- components: {
31
- UnnnicIcon,
32
- ToolTip,
33
- },
34
- props: {
35
- text: {
36
- type: String,
37
- default: null,
38
- },
39
- tooltipText: {
40
- type: String,
41
- default: null,
42
- },
43
- count: {
44
- type: Number,
45
- default: 0,
46
- },
47
- clickable: {
48
- type: Boolean,
49
- default: false,
50
- },
51
- hasBackButton: {
52
- type: Boolean,
53
- default: false,
54
- },
55
- enableTooltip: {
56
- type: Boolean,
57
- default: false,
58
- },
59
- },
60
- };
61
- </script>
62
-
63
- <style lang="scss" scoped>
64
- @use '@/assets/scss/unnnic' as *;
65
-
66
- .unnnic-tag {
67
- display: flex;
68
- align-items: center;
69
- justify-content: center;
70
- border-radius: $unnnic-border-radius-sm;
71
- background-color: $unnnic-color-background-sky;
72
- padding: $unnnic-inset-nano;
73
- border: $unnnic-border-width-thinner solid $unnnic-color-background-sky;
74
-
75
- &:hover {
76
- border: $unnnic-border-width-thinner solid $unnnic-color-neutral-cleanest;
77
- }
78
-
79
- &--clickable {
80
- cursor: pointer;
81
- }
82
-
83
- &__count {
84
- background-color: $unnnic-color-neutral-soft;
85
- border-radius: $unnnic-border-radius-sm;
86
- padding: $unnnic-inline-nano;
87
- font-family: $unnnic-font-family-secondary;
88
- font-size: $unnnic-font-size-body-md;
89
- font-weight: $unnnic-font-weight-regular;
90
- line-height: ($unnnic-font-size-body-md + $unnnic-line-height-medium);
91
- color: $unnnic-color-neutral-darkest;
92
- }
93
-
94
- &__label {
95
- padding: 0 $unnnic-inline-xs;
96
- font-family: $unnnic-font-family-secondary;
97
- font-size: $unnnic-font-size-body-md;
98
- font-weight: $unnnic-font-weight-regular;
99
- line-height: ($unnnic-font-size-body-md + $unnnic-line-height-medium);
100
- color: $unnnic-color-neutral-darkest;
101
- }
102
-
103
- &__icon {
104
- margin-right: $unnnic-inline-ant;
105
- }
106
- }
107
- </style>
@@ -1,60 +0,0 @@
1
- <template>
2
- <section :class="['unnnic-tag-next', `unnnic-tag-next--${scheme}`]">
3
- <p class="unnnic-tag-next__text">
4
- {{ text }}
5
- </p>
6
- </section>
7
- </template>
8
-
9
- <script>
10
- export default {
11
- name: 'TagNext',
12
- props: {
13
- text: {
14
- type: String,
15
- default: null,
16
- },
17
- scheme: {
18
- type: String,
19
- default: 'weni',
20
- },
21
- },
22
- };
23
- </script>
24
-
25
- <style lang="scss" scoped>
26
- @use '@/assets/scss/unnnic' as *;
27
-
28
- .unnnic-tag-next {
29
- display: flex;
30
- align-items: center;
31
- justify-content: center;
32
- width: auto;
33
-
34
- border-radius: $unnnic-border-radius-pill;
35
- padding: 0 $unnnic-spacing-xs;
36
-
37
- font-family: $unnnic-font-family-secondary;
38
- font-size: $unnnic-font-size-body-md;
39
- font-weight: $unnnic-font-weight-regular;
40
- line-height: ($unnnic-font-size-body-md + $unnnic-line-height-medium);
41
-
42
- &__text {
43
- margin: 0;
44
-
45
- overflow: hidden;
46
- white-space: nowrap;
47
- text-overflow: ellipsis;
48
- }
49
-
50
- &--aux-purple {
51
- background-color: $unnnic-color-aux-purple-100;
52
- color: $unnnic-color-aux-purple-500;
53
- }
54
-
55
- &--weni {
56
- background-color: $unnnic-color-weni-100;
57
- color: $unnnic-color-weni-600;
58
- }
59
- }
60
- </style>