@weni/unnnic-system 3.12.0 → 3.12.1-alpha.1

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 (180) hide show
  1. package/dist/components/Alert/Alert.vue.d.ts +3 -3
  2. package/dist/components/Alert/Version1dot1.vue.d.ts +1 -1
  3. package/dist/components/AudioRecorder/AudioHandler.vue.d.ts +92 -18
  4. package/dist/components/AudioRecorder/AudioRecorder.vue.d.ts +184 -36
  5. package/dist/components/AvatarIcon/AvatarIcon.vue.d.ts +1 -1
  6. package/dist/components/Button/Button.vue.d.ts +2 -2
  7. package/dist/components/Card/AccountCard.vue.d.ts +2 -2
  8. package/dist/components/Card/Card.vue.d.ts +103 -29
  9. package/dist/components/Card/CardCompany.vue.d.ts +2 -2
  10. package/dist/components/Card/CardStatusesContainer.vue.d.ts +93 -19
  11. package/dist/components/Card/ContentCard.vue.d.ts +1 -1
  12. package/dist/components/Card/DashCard.vue.d.ts +2 -2
  13. package/dist/components/Card/DefaultCard.vue.d.ts +1 -1
  14. package/dist/components/Card/MarketplaceCard.vue.d.ts +1 -1
  15. package/dist/components/Card/SimpleCard.vue.d.ts +92 -18
  16. package/dist/components/Card/StatusCard.vue.d.ts +1 -1
  17. package/dist/components/Card/TitleCard.vue.d.ts +92 -18
  18. package/dist/components/CardImage/CardImage.vue.d.ts +5 -5
  19. package/dist/components/CardInformation/CardInformation.vue.d.ts +93 -19
  20. package/dist/components/CardProject/CardProject.vue.d.ts +2 -2
  21. package/dist/components/Carousel/Carousel.vue.d.ts +2 -2
  22. package/dist/components/Carousel/TagCarousel.vue.d.ts +2 -2
  23. package/dist/components/ChartBar/ChartBar.vue.d.ts +98 -24
  24. package/dist/components/ChartLine/ChartLine.vue.d.ts +92 -18
  25. package/dist/components/ChatText/ChatText.vue.d.ts +92 -18
  26. package/dist/components/ChatsContact/ChatsContact.vue.d.ts +6 -6
  27. package/dist/components/ChatsMessage/ChatsMessage.vue.d.ts +92 -18
  28. package/dist/components/ChatsUserAvatar/ChatsUserAvatar.vue.d.ts +1 -1
  29. package/dist/components/Checkbox/Checkbox.vue.d.ts +3 -3
  30. package/dist/components/DataArea/DataArea.vue.d.ts +92 -18
  31. package/dist/components/DataTable/index.vue.d.ts +1 -1
  32. package/dist/components/DataTable/index.vue.d.ts.map +1 -1
  33. package/dist/components/DateFilter/DateFilter.vue.d.ts +13 -13
  34. package/dist/components/Drawer/Drawer.vue.d.ts +37 -207
  35. package/dist/components/Drawer/Drawer.vue.d.ts.map +1 -1
  36. package/dist/components/Dropdown/Dropdown.vue.d.ts +1 -1
  37. package/dist/components/FormElement/FormElement.vue.d.ts +6 -6
  38. package/dist/components/ImportCard/ImportCard.vue.d.ts +6 -6
  39. package/dist/components/Input/Input.vue.d.ts +12 -12
  40. package/dist/components/Input/TextInput.vue.d.ts +2 -2
  41. package/dist/components/InputNext/InputNext.vue.d.ts +3 -3
  42. package/dist/components/Label/Label.vue.d.ts +1 -1
  43. package/dist/components/Label/Label.vue.d.ts.map +1 -1
  44. package/dist/components/Modal/Modal.vue.d.ts +1 -1
  45. package/dist/components/ModalDialog/ModalDialog.vue.d.ts +209 -35
  46. package/dist/components/ModalDialog/ModalDialog.vue.d.ts.map +1 -1
  47. package/dist/components/ModalNext/ModalNext.vue.d.ts +18 -18
  48. package/dist/components/ModalUpload/ModalUpload.vue.d.ts +12 -12
  49. package/dist/components/MoodRating/MoodRating.vue.d.ts +92 -18
  50. package/dist/components/MultiSelect/MultiSelect.vue.d.ts +18 -18
  51. package/dist/components/Pagination/Pagination.vue.d.ts +6 -6
  52. package/dist/components/Radio/Radio.vue.d.ts +6 -6
  53. package/dist/components/SelectSmart/SelectSmart.vue.d.ts +11 -11
  54. package/dist/components/SelectSmart/SelectSmartMultipleHeader.vue.d.ts +2 -2
  55. package/dist/components/SelectSmart/SelectSmartOption.vue.d.ts +5 -5
  56. package/dist/components/SelectTime/index.vue.d.ts +3 -3
  57. package/dist/components/Slider/Slider.vue.d.ts +92 -18
  58. package/dist/components/Switch/Switch.vue.d.ts +3 -3
  59. package/dist/components/Tab/Tab.vue.d.ts +92 -18
  60. package/dist/components/TableNext/TableBodyCell.vue.d.ts +2 -2
  61. package/dist/components/TableNext/TablePagination.vue.d.ts +6 -6
  62. package/dist/components/Tag/DefaultTag.vue.d.ts +1 -1
  63. package/dist/components/Tag/Tag.vue.d.ts +2 -2
  64. package/dist/components/TextArea/TextArea.vue.d.ts +8 -8
  65. package/dist/components/Toast/Toast.vue.d.ts +1 -1
  66. package/dist/components/Toast/Toast.vue.d.ts.map +1 -1
  67. package/dist/components/ToolTip/ToolTip.vue.d.ts +92 -18
  68. package/dist/components/ToolTip/ToolTip.vue.d.ts.map +1 -1
  69. package/dist/components/Tour/Tour.vue.d.ts +6 -6
  70. package/dist/components/Tour/TourPopover.vue.d.ts +6 -6
  71. package/dist/components/UploadArea/UploadArea.vue.d.ts +6 -6
  72. package/dist/components/ui/dialog/Dialog.vue.d.ts +23 -0
  73. package/dist/components/ui/dialog/Dialog.vue.d.ts.map +1 -0
  74. package/dist/components/ui/dialog/DialogClose.vue.d.ts +19 -0
  75. package/dist/components/ui/dialog/DialogClose.vue.d.ts.map +1 -0
  76. package/dist/components/ui/dialog/DialogContent.vue.d.ts +43 -0
  77. package/dist/components/ui/dialog/DialogContent.vue.d.ts.map +1 -0
  78. package/dist/components/ui/dialog/DialogFooter.vue.d.ts +25 -0
  79. package/dist/components/ui/dialog/DialogFooter.vue.d.ts.map +1 -0
  80. package/dist/components/ui/dialog/DialogHeader.vue.d.ts +29 -0
  81. package/dist/components/ui/dialog/DialogHeader.vue.d.ts.map +1 -0
  82. package/dist/components/ui/dialog/DialogTitle.vue.d.ts +23 -0
  83. package/dist/components/ui/dialog/DialogTitle.vue.d.ts.map +1 -0
  84. package/dist/components/ui/dialog/DialogTrigger.vue.d.ts +19 -0
  85. package/dist/components/ui/dialog/DialogTrigger.vue.d.ts.map +1 -0
  86. package/dist/components/ui/dialog/index.d.ts +8 -0
  87. package/dist/components/ui/dialog/index.d.ts.map +1 -0
  88. package/dist/components/ui/drawer/Drawer.vue.d.ts +35 -0
  89. package/dist/components/ui/drawer/Drawer.vue.d.ts.map +1 -0
  90. package/dist/components/ui/drawer/DrawerClose.vue.d.ts +19 -0
  91. package/dist/components/ui/drawer/DrawerClose.vue.d.ts.map +1 -0
  92. package/dist/components/ui/drawer/DrawerContent.vue.d.ts +43 -0
  93. package/dist/components/ui/drawer/DrawerContent.vue.d.ts.map +1 -0
  94. package/dist/components/ui/drawer/DrawerDescription.vue.d.ts +23 -0
  95. package/dist/components/ui/drawer/DrawerDescription.vue.d.ts.map +1 -0
  96. package/dist/components/ui/drawer/DrawerFooter.vue.d.ts +22 -0
  97. package/dist/components/ui/drawer/DrawerFooter.vue.d.ts.map +1 -0
  98. package/dist/components/ui/drawer/DrawerHeader.vue.d.ts +25 -0
  99. package/dist/components/ui/drawer/DrawerHeader.vue.d.ts.map +1 -0
  100. package/dist/components/ui/drawer/DrawerOverlay.vue.d.ts +8 -0
  101. package/dist/components/ui/drawer/DrawerOverlay.vue.d.ts.map +1 -0
  102. package/dist/components/ui/drawer/DrawerTitle.vue.d.ts +23 -0
  103. package/dist/components/ui/drawer/DrawerTitle.vue.d.ts.map +1 -0
  104. package/dist/components/ui/drawer/DrawerTrigger.vue.d.ts +19 -0
  105. package/dist/components/ui/drawer/DrawerTrigger.vue.d.ts.map +1 -0
  106. package/dist/components/ui/drawer/index.d.ts +11 -0
  107. package/dist/components/ui/drawer/index.d.ts.map +1 -0
  108. package/dist/components/ui/popover/PopoverContent.vue.d.ts +2 -2
  109. package/dist/components/ui/popover/PopoverContent.vue.d.ts.map +1 -1
  110. package/dist/components/ui/popover/PopoverOption.vue.d.ts +18 -0
  111. package/dist/components/ui/popover/PopoverOption.vue.d.ts.map +1 -0
  112. package/dist/components/ui/popover/PopoverTrigger.vue.d.ts.map +1 -1
  113. package/dist/components/ui/popover/index.d.ts +1 -0
  114. package/dist/components/ui/popover/index.d.ts.map +1 -1
  115. package/dist/components/ui/tooltip/Tooltip.vue.d.ts +23 -0
  116. package/dist/components/ui/tooltip/Tooltip.vue.d.ts.map +1 -0
  117. package/dist/components/ui/tooltip/TooltipContent.vue.d.ts +31 -0
  118. package/dist/components/ui/tooltip/TooltipContent.vue.d.ts.map +1 -0
  119. package/dist/components/ui/tooltip/TooltipTrigger.vue.d.ts +19 -0
  120. package/dist/components/ui/tooltip/TooltipTrigger.vue.d.ts.map +1 -0
  121. package/dist/components/ui/tooltip/index.d.ts +4 -0
  122. package/dist/components/ui/tooltip/index.d.ts.map +1 -0
  123. package/dist/{es-9756db6d.mjs → es-38bd0c9c.mjs} +1 -1
  124. package/dist/{index-ab280280.mjs → index-561a4027.mjs} +99548 -96695
  125. package/dist/lib/layer-manager.d.ts +16 -0
  126. package/dist/lib/layer-manager.d.ts.map +1 -0
  127. package/dist/{pt-br-55135cbc.mjs → pt-br-14a3c647.mjs} +1 -1
  128. package/dist/style.css +1 -1
  129. package/dist/unnnic.mjs +231 -203
  130. package/dist/unnnic.umd.js +48 -44
  131. package/package.json +2 -1
  132. package/src/assets/scss/tailwind.scss +8 -0
  133. package/src/components/Alert/__tests__/__snapshots__/Alert.spec.js.snap +1 -1
  134. package/src/components/Drawer/Drawer.vue +190 -269
  135. package/src/components/Drawer/__tests__/Drawer.spec.js +37 -46
  136. package/src/components/Drawer/__tests__/__snapshots__/Drawer.spec.js.snap +18 -19
  137. package/src/components/ModalDialog/ModalDialog.vue +64 -148
  138. package/src/components/ModalDialog/__tests__/ModalDialog.spec.js +11 -221
  139. package/src/components/ModalDialog/__tests__/__snapshots__/ModalDialog.spec.js.snap +1 -22
  140. package/src/components/Tab/__test__/__snapshots__/Tab.spec.js.snap +3 -1
  141. package/src/components/Toast/Toast.vue +16 -9
  142. package/src/components/ToolTip/ToolTip.vue +25 -177
  143. package/src/components/ToolTip/__tests__/ToolTip.spec.js +339 -61
  144. package/src/components/index.ts +56 -0
  145. package/src/components/ui/dialog/Dialog.vue +19 -0
  146. package/src/components/ui/dialog/DialogClose.vue +29 -0
  147. package/src/components/ui/dialog/DialogContent.vue +140 -0
  148. package/src/components/ui/dialog/DialogFooter.vue +50 -0
  149. package/src/components/ui/dialog/DialogHeader.vue +83 -0
  150. package/src/components/ui/dialog/DialogTitle.vue +38 -0
  151. package/src/components/ui/dialog/DialogTrigger.vue +16 -0
  152. package/src/components/ui/dialog/index.ts +7 -0
  153. package/src/components/ui/drawer/Drawer.vue +27 -0
  154. package/src/components/ui/drawer/DrawerClose.vue +37 -0
  155. package/src/components/ui/drawer/DrawerContent.vue +111 -0
  156. package/src/components/ui/drawer/DrawerDescription.vue +40 -0
  157. package/src/components/ui/drawer/DrawerFooter.vue +38 -0
  158. package/src/components/ui/drawer/DrawerHeader.vue +57 -0
  159. package/src/components/ui/drawer/DrawerOverlay.vue +33 -0
  160. package/src/components/ui/drawer/DrawerTitle.vue +37 -0
  161. package/src/components/ui/drawer/DrawerTrigger.vue +31 -0
  162. package/src/components/ui/drawer/index.ts +10 -0
  163. package/src/components/ui/popover/PopoverContent.vue +4 -2
  164. package/src/components/ui/popover/PopoverOption.vue +116 -0
  165. package/src/components/ui/popover/PopoverTrigger.vue +5 -1
  166. package/src/components/ui/popover/index.ts +1 -0
  167. package/src/components/ui/tooltip/Tooltip.vue +21 -0
  168. package/src/components/ui/tooltip/TooltipContent.vue +74 -0
  169. package/src/components/ui/tooltip/TooltipTrigger.vue +26 -0
  170. package/src/components/ui/tooltip/index.ts +3 -0
  171. package/src/lib/layer-manager.ts +84 -0
  172. package/src/stories/Dialog.stories.js +832 -0
  173. package/src/stories/Drawer.stories.js +1 -1
  174. package/src/stories/DrawerNext.stories.js +611 -0
  175. package/src/stories/LayerManager.docs.mdx +40 -0
  176. package/src/stories/LayerManager.stories.js +364 -0
  177. package/src/stories/ModalDialog.mdx +3 -0
  178. package/src/stories/ModalDialog.stories.js +1 -1
  179. package/src/stories/Popover.stories.js +56 -0
  180. package/src/stories/PopoverOption.stories.js +74 -0
@@ -5,6 +5,19 @@ import Drawer from '../Drawer.vue';
5
5
  describe('Drawer.vue', () => {
6
6
  let wrapper;
7
7
 
8
+ const templateSlot = { template: `<div><slot /></div>` };
9
+ const globalStubs = {
10
+ UnnnicIcon: true,
11
+ UnnnicButton: true,
12
+ Teleport: templateSlot,
13
+ UnnnicDrawerNext: templateSlot,
14
+ UnnnicDrawerContent: templateSlot,
15
+ UnnnicDrawerFooter: templateSlot,
16
+ UnnnicDrawerClose: templateSlot,
17
+ UnnnicDrawerTitle: templateSlot,
18
+ UnnnicDrawerDescription: templateSlot,
19
+ };
20
+
8
21
  beforeEach(() => {
9
22
  wrapper = mount(Drawer, {
10
23
  props: {
@@ -15,15 +28,14 @@ describe('Drawer.vue', () => {
15
28
  secondaryButtonText: 'Secondary Action',
16
29
  },
17
30
  global: {
18
- stubs: ['UnnnicIcon', 'UnnnicButton'],
31
+ stubs: globalStubs,
19
32
  },
20
33
  });
21
34
  });
22
35
 
23
36
  const element = (id) => wrapper.find(`[data-testid="${id}"]`);
24
37
  const component = (id) => wrapper.findComponent(`[data-testid="${id}"]`);
25
- const drawer = () => element('drawer');
26
- const overlay = () => element('overlay');
38
+ const drawerRoot = () => wrapper.findComponent({ name: 'UnnnicDrawerNext' });
27
39
  const title = () => element('drawer-title');
28
40
  const description = () => element('drawer-description');
29
41
  const primaryButton = () => component('primary-button');
@@ -31,6 +43,8 @@ describe('Drawer.vue', () => {
31
43
  const footer = () => element('footer');
32
44
  const closeIcon = () => component('close-icon');
33
45
  const drawerContainer = () => element('drawer-container');
46
+ const drawerContentComponent = () =>
47
+ wrapper.findComponent({ name: 'UnnnicDrawerContent' });
34
48
 
35
49
  describe('Component Rendering', () => {
36
50
  describe('Component Rendering', () => {
@@ -39,21 +53,21 @@ describe('Drawer.vue', () => {
39
53
  });
40
54
 
41
55
  it('should render the drawer when modelValue is true', () => {
42
- expect(drawer().exists()).toBe(true);
56
+ expect(drawerRoot().props('open')).toBe(true);
43
57
  });
44
58
 
45
59
  it('should not render the drawer when modelValue is false', async () => {
46
60
  await wrapper.setProps({ modelValue: false });
47
- expect(drawer().exists()).toBe(false);
61
+ expect(drawerRoot().props('open')).toBe(false);
48
62
  });
49
63
 
50
64
  it('should render the overlay when withoutOverlay is false', () => {
51
- expect(overlay().exists()).toBe(true);
65
+ expect(drawerContentComponent().props('showOverlay')).toBe(true);
52
66
  });
53
67
 
54
68
  it('should not render the overlay when withoutOverlay is true', async () => {
55
69
  await wrapper.setProps({ withoutOverlay: true });
56
- expect(overlay().exists()).toBe(false);
70
+ expect(drawerContentComponent().props('showOverlay')).toBe(false);
57
71
  });
58
72
 
59
73
  it('should display the title and description correctly', () => {
@@ -75,7 +89,11 @@ describe('Drawer.vue', () => {
75
89
  slots: {
76
90
  content: '<div data-testid="slot-content">Slot Content</div>',
77
91
  },
92
+ global: {
93
+ stubs: globalStubs,
94
+ },
78
95
  });
96
+
79
97
  expect(wrapper.find('[data-testid="slot-content"]').exists()).toBe(
80
98
  true,
81
99
  );
@@ -93,6 +111,9 @@ describe('Drawer.vue', () => {
93
111
  slots: {
94
112
  title: '<h2 data-testid="custom-title">Custom Title Content</h2>',
95
113
  },
114
+ global: {
115
+ stubs: globalStubs,
116
+ },
96
117
  });
97
118
 
98
119
  expect(title().exists()).toBe(false);
@@ -113,6 +134,9 @@ describe('Drawer.vue', () => {
113
134
  slots: {
114
135
  title: '<div data-testid="custom-title">Slot Title</div>',
115
136
  },
137
+ global: {
138
+ stubs: globalStubs,
139
+ },
116
140
  });
117
141
 
118
142
  expect(title().exists()).toBe(false);
@@ -164,7 +188,7 @@ describe('Drawer.vue', () => {
164
188
  });
165
189
  });
166
190
 
167
- describe('Interactions and Transitions', () => {
191
+ describe('Interactions', () => {
168
192
  beforeEach(() => {
169
193
  vi.useFakeTimers();
170
194
  });
@@ -174,9 +198,6 @@ describe('Drawer.vue', () => {
174
198
 
175
199
  it('should close the drawer when the close icon is clicked', async () => {
176
200
  await closeIcon().trigger('click');
177
-
178
- vi.advanceTimersByTime(200);
179
-
180
201
  expect(wrapper.emitted('close')).toBeTruthy();
181
202
  });
182
203
 
@@ -184,8 +205,6 @@ describe('Drawer.vue', () => {
184
205
  await wrapper.setProps({ distinctCloseBack: true });
185
206
  await closeIcon().trigger('click');
186
207
 
187
- vi.advanceTimersByTime(200);
188
-
189
208
  expect(wrapper.emitted('back')).toBeTruthy();
190
209
  });
191
210
 
@@ -193,49 +212,21 @@ describe('Drawer.vue', () => {
193
212
  await closeIcon().trigger('click');
194
213
  expect(wrapper.emitted('back')).toBeUndefined();
195
214
  });
196
-
197
- it('should correctly handle transitions when closing the drawer', async () => {
198
- await wrapper.vm.close();
199
- expect(wrapper.vm.showDrawer).toBe(false);
200
-
201
- setTimeout(() => {
202
- expect(drawer().exists()).toBe(false);
203
- }, 200);
204
- });
205
-
206
- it('should handle overlay clicks to close the drawer when withoutOverlay is false', async () => {
207
- expect(overlay().exists()).toBe(true);
208
- await overlay().trigger('click');
209
-
210
- vi.advanceTimersByTime(200);
211
-
212
- expect(wrapper.emitted('close')).toBeTruthy();
213
- });
214
-
215
- it('should execute the callback after 200ms timeout and reset showDrawer', async () => {
216
- const callbackMock = vi.fn();
217
- wrapper.vm.transitionClose(callbackMock);
218
-
219
- expect(wrapper.vm.showDrawer).toBe(false);
220
-
221
- vi.advanceTimersByTime(200);
222
-
223
- expect(callbackMock).toHaveBeenCalled();
224
- expect(wrapper.vm.showDrawer).toBe(true);
225
- });
226
215
  });
227
216
 
228
217
  describe('Props and Computed Properties', () => {
229
218
  it('should render the correct size class based on size prop', async () => {
230
219
  await wrapper.setProps({ size: 'lg' });
231
- expect(drawerContainer().classes()).toContain(
220
+ expect(drawerContentComponent().props('class')).toContain(
232
221
  'unnnic-drawer__container--lg',
233
222
  );
223
+ expect(drawerContentComponent().props('size')).toBe('large');
234
224
 
235
225
  await wrapper.setProps({ size: 'xl' });
236
- expect(drawerContainer().classes()).toContain(
226
+ expect(drawerContentComponent().props('class')).toContain(
237
227
  'unnnic-drawer__container--xl',
238
228
  );
229
+ expect(drawerContentComponent().props('size')).toBe('extra-large');
239
230
  });
240
231
 
241
232
  it('should display footer if either primaryButtonText or secondaryButtonText is provided', async () => {
@@ -275,7 +266,7 @@ describe('Drawer.vue', () => {
275
266
 
276
267
  it('should use correct icon for close button based on closeIcon prop', async () => {
277
268
  await wrapper.setProps({ closeIcon: 'custom_close_icon' });
278
- expect(closeIcon().props('icon')).toBe('custom_close_icon');
269
+ expect(closeIcon().props('iconCenter')).toBe('custom_close_icon');
279
270
  });
280
271
 
281
272
  it('should validate all size prop values correctly', () => {
@@ -1,23 +1,22 @@
1
1
  // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2
2
 
3
3
  exports[`Drawer.vue > Component Rendering > Component Rendering > matches the snapshot 1`] = `
4
- "<aside data-v-196de012="" class="unnnic-drawer" data-testid="drawer">
5
- <section data-v-196de012="" class="unnnic-drawer__overlay" data-testid="overlay"></section>
6
- <transition-stub data-v-196de012="" name="drawer" appear="true" persisted="false" css="true">
7
- <section data-v-196de012="" data-testid="drawer-container" class="unnnic-drawer__container unnnic-drawer__container--md">
8
- <header data-v-196de012="" class="unnnic-drawer__header">
9
- <section data-v-196de012="" class="unnnic-drawer__title-container">
10
- <h1 data-v-196de012="" class="unnnic-drawer__title" data-testid="drawer-title">Test Title</h1>
11
- <p data-v-196de012="" class="unnnic-drawer__description" data-testid="drawer-description">Test Description</p>
12
- </section>
13
- <unnnic-icon-stub data-v-196de012="" filled="false" icon="arrow_back" clickable="true" size="avatar-nano" scheme="neutral-darkest" class="unnnic-drawer__close" data-testid="close-icon"></unnnic-icon-stub>
14
- </header>
15
- <section data-v-196de012="" class="unnnic-drawer__content"></section>
16
- <footer data-v-196de012="" class="unnnic-drawer__footer" data-testid="footer">
17
- <unnnic-button-stub data-v-196de012="" size="large" text="Secondary Action" type="tertiary" float="false" iconleft="" iconright="" iconcenter="" iconsfilled="false" disabled="false" loading="false" data-testid="secondary-button"></unnnic-button-stub>
18
- <unnnic-button-stub data-v-196de012="" size="large" text="Primary Action" type="primary" float="false" iconleft="" iconright="" iconcenter="" iconsfilled="false" disabled="false" loading="false" data-testid="primary-button"></unnnic-button-stub>
19
- </footer>
20
- </section>
21
- </transition-stub>
22
- </aside>"
4
+ "<div data-v-e761d31f="" data-v-196de012="" disabled="false" defer="false" forcemount="false" data-testid="drawer-container">
5
+ <div data-v-7f241b30="" data-v-e761d31f="" data-state="open" style="pointer-events: auto;" data-vaul-overlay="" data-vaul-snap-points="false" data-vaul-snap-points-overlay="true" class="unnnic-drawer__overlay"></div>
6
+ <div data-v-e761d31f="" data-dismissable-layer="" style="--snap-point-height: 0; --initial-transform: calc(100% + 8px); pointer-events: auto;" tabindex="-1" data-vaul-drawer="" data-vaul-drawer-direction="right" data-vaul-delayed-snap-points="false" data-vaul-snap-points="false" size="medium" showoverlay="true" class="unnnic-drawer__content unnnic-drawer__content--medium unnnic-drawer__container unnnic-drawer__container--md" id="" role="dialog" aria-describedby="reka-dialog-description-v-1" aria-labelledby="reka-dialog-title-v-0" data-state="open">
7
+ <header data-v-39d0dfb8="" data-v-196de012="" class="unnnic-drawer__header unnnic-drawer__header">
8
+ <section data-v-196de012="" class="unnnic-drawer__title-container">
9
+ <h2 data-v-97709962="" data-v-196de012="" id="reka-dialog-title-v-0" class="unnnic-drawer__title unnnic-drawer__title" data-testid="drawer-title">Test Title</h2>
10
+ <p data-v-750ea255="" data-v-196de012="" id="reka-dialog-description-v-1" class="unnnic-drawer__description unnnic-drawer__description" data-testid="drawer-description">Test Description</p>
11
+ </section><button data-v-4a771f40="" data-v-196de012="" type="button" class="unnnic-drawer__close">
12
+ <unnnic-button-stub data-v-196de012="" size="small" text="" type="tertiary" float="false" iconleft="" iconright="" iconcenter="arrow_forward" iconsfilled="false" disabled="false" loading="false" class="unnnic-drawer__close-icon" data-testid="close-icon"></unnnic-button-stub>
13
+ </button>
14
+ </header>
15
+ <section data-v-196de012="" class="unnnic-drawer__content"></section>
16
+ <footer data-v-02ebc5b4="" data-v-196de012="" class="unnnic-drawer__footer unnnic-drawer__footer" data-testid="footer">
17
+ <unnnic-button-stub data-v-196de012="" size="large" text="Secondary Action" type="tertiary" float="false" iconleft="" iconright="" iconcenter="" iconsfilled="false" disabled="false" loading="false" data-testid="secondary-button"></unnnic-button-stub>
18
+ <unnnic-button-stub data-v-196de012="" size="large" text="Primary Action" type="primary" float="false" iconleft="" iconright="" iconcenter="" iconsfilled="false" disabled="false" loading="false" data-testid="primary-button"></unnnic-button-stub>
19
+ </footer>
20
+ </div>
21
+ </div>"
23
22
  `;
@@ -1,64 +1,47 @@
1
1
  <template>
2
- <section
3
- v-if="modelValue"
4
- class="unnnic-modal-dialog"
5
- data-testid="modal-dialog"
2
+ <UnnnicDialog
3
+ :open="modelValue"
4
+ @update:open="$emit('update:modelValue', $event)"
6
5
  >
7
- <section
8
- class="unnnic-modal-dialog__overlay"
9
- data-testid="modal-overlay"
10
- @click.stop="!persistent && close()"
11
- />
12
- <section
13
- :class="[
14
- 'unnnic-modal-dialog__container',
15
- `unnnic-modal-dialog__container--${size}`,
16
- ]"
17
- data-testid="modal-container"
6
+ <UnnnicDialogContent
7
+ v-bind="$attrs"
8
+ :size="size === 'sm' ? 'small' : size === 'lg' ? 'large' : 'medium'"
9
+ :parentClass="['unnnic-modal-dialog', $attrs.class]"
10
+ class="unnnic-modal-dialog__container"
11
+ data-testid="modal-dialog"
12
+ @escape-key-down="persistentHandler"
13
+ @pointer-down-outside="persistentHandler"
18
14
  >
19
15
  <section
20
- v-if="$slots.leftSidebar"
21
- class="unnnic-modal-dialog__container__left-sidebar"
16
+ :class="[
17
+ 'unnnic-modal-dialog__container__body',
18
+ {
19
+ 'unnnic-modal-dialog__container__body--left-sidebar':
20
+ $slots.leftSidebar,
21
+ },
22
+ ]"
22
23
  >
23
- <slot name="leftSidebar" />
24
- </section>
25
-
26
- <section class="unnnic-modal-dialog__container__body">
27
- <header
24
+ <section
25
+ v-if="$slots.leftSidebar"
26
+ class="unnnic-modal-dialog__container__left-sidebar"
27
+ >
28
+ <slot name="leftSidebar" />
29
+ </section>
30
+ <UnnnicDialogHeader
28
31
  v-if="title"
29
- class="unnnic-modal-dialog__container__header"
32
+ :closeButton="showCloseIcon"
33
+ :type="type"
30
34
  >
31
- <section class="unnnic-modal-dialog__container__title-container">
32
- <UnnnicIcon
33
- v-if="icon || type"
34
- data-testid="title-icon"
35
- class="unnnic-modal-dialog__container__title-icon"
36
- :icon="icon || iconsMapper[type]?.icon"
37
- :scheme="iconScheme || iconsMapper[type]?.scheme"
38
- size="md"
39
- />
40
- <h1
41
- class="unnnic-modal-dialog__container__title-text"
42
- data-testid="title-text"
43
- >
44
- {{ title }}
45
- </h1>
46
- </section>
47
- <UnnnicIcon
48
- v-if="showCloseIcon"
49
- data-testid="close-icon"
50
- icon="close"
51
- clickable
52
- scheme="neutral-cloudy"
53
- @click="close()"
54
- />
55
- </header>
35
+ <UnnnicDialogTitle>
36
+ {{ title }}
37
+ </UnnnicDialogTitle>
38
+ </UnnnicDialogHeader>
56
39
  <section class="unnnic-modal-dialog__container__content">
57
40
  <slot></slot>
58
41
  </section>
59
- <section
42
+
43
+ <UnnnicDialogFooter
60
44
  v-if="primaryButtonProps.text"
61
- data-testid="actions-section"
62
45
  :class="[
63
46
  'unnnic-modal-dialog__container__actions',
64
47
  {
@@ -66,6 +49,8 @@
66
49
  showActionsDivider,
67
50
  },
68
51
  ]"
52
+ :divider="showActionsDivider"
53
+ data-testid="actions-section"
69
54
  >
70
55
  <UnnnicButton
71
56
  v-if="!hideSecondaryButton"
@@ -92,23 +77,32 @@
92
77
  class="unnnic-modal-dialog__container__actions__primary-button"
93
78
  @click.stop="$emit('primaryButtonClick')"
94
79
  />
95
- </section>
80
+ </UnnnicDialogFooter>
96
81
  </section>
97
- </section>
98
- </section>
82
+ </UnnnicDialogContent>
83
+ </UnnnicDialog>
99
84
  </template>
100
85
 
101
86
  <script>
102
- import UnnnicIcon from '../Icon.vue';
103
87
  import UnnnicButton from '../Button/Button.vue';
104
88
  import UnnnicI18n from '../../mixins/i18n';
89
+ import UnnnicDialog from '../ui/dialog/Dialog.vue';
90
+ import UnnnicDialogContent from '../ui/dialog/DialogContent.vue';
91
+ import UnnnicDialogHeader from '../ui/dialog/DialogHeader.vue';
92
+ import UnnnicDialogTitle from '../ui/dialog/DialogTitle.vue';
93
+ import UnnnicDialogFooter from '../ui/dialog/DialogFooter.vue';
105
94
 
106
95
  export default {
107
96
  name: 'UnnnicModalDialog',
108
97
  components: {
109
- UnnnicIcon,
110
98
  UnnnicButton,
99
+ UnnnicDialog,
100
+ UnnnicDialogContent,
101
+ UnnnicDialogHeader,
102
+ UnnnicDialogTitle,
103
+ UnnnicDialogFooter,
111
104
  },
105
+ inheritAttrs: false,
112
106
  mixins: [UnnnicI18n],
113
107
  props: {
114
108
  modelValue: {
@@ -177,11 +171,6 @@ export default {
177
171
  es: 'Cancelar',
178
172
  },
179
173
  },
180
- iconsMapper: {
181
- success: { icon: 'check_circle', scheme: 'aux-green-500' },
182
- warning: { icon: 'warning', scheme: 'aux-red-500' },
183
- attention: { icon: 'error', scheme: 'aux-yellow-500' },
184
- },
185
174
  primaryButtonTypeMapper: {
186
175
  success: 'primary',
187
176
  warning: 'warning',
@@ -201,91 +190,39 @@ export default {
201
190
  updateBodyOverflow(isHidden) {
202
191
  document.body.style.overflow = isHidden ? 'hidden' : '';
203
192
  },
193
+ persistentHandler(event) {
194
+ if (this.persistent) {
195
+ event.preventDefault();
196
+ }
197
+ },
204
198
  },
205
199
  };
206
200
  </script>
207
201
 
208
202
  <style lang="scss" scoped>
209
203
  @use '@/assets/scss/unnnic' as *;
210
- * {
211
- margin: 0;
212
- padding: 0;
213
- box-sizing: border-box;
214
- }
215
- .unnnic-modal-dialog {
216
- width: 100vw;
217
- height: 100vh;
218
- position: fixed;
219
- left: 0;
220
- top: 0;
221
- display: flex;
222
- justify-content: center;
223
- align-items: center;
224
- z-index: 9999;
225
-
226
- &__overlay {
227
- position: absolute;
228
- width: 100%;
229
- height: 100%;
230
- background-color: rgba(0, 0, 0, 0.4);
231
- }
232
- }
233
-
234
204
  .unnnic-modal-dialog__container {
235
- display: flex;
236
- background: $unnnic-color-neutral-white;
237
- border-radius: $unnnic-spacing-xs;
238
- box-shadow: $unnnic-shadow-level-near;
239
- position: fixed;
240
- max-height: calc(100vh - $unnnic-spacing-giant);
241
- overflow: hidden;
242
-
243
- &--sm {
244
- width: 400px;
245
- }
246
- &--md {
247
- width: 600px;
248
- }
249
- &--lg {
250
- width: 800px;
251
- }
252
-
253
205
  &__left-sidebar {
254
206
  background-color: $unnnic-color-neutral-black;
255
207
  color: $unnnic-color-neutral-white;
208
+
209
+ grid-area: left-sidebar;
210
+ grid-row: span 3;
256
211
  }
257
212
 
258
213
  &__body {
259
214
  flex: 1;
260
215
  display: flex;
261
216
  flex-direction: column;
262
- }
263
-
264
- &__header {
265
- display: flex;
266
- justify-content: space-between;
267
- align-items: center;
268
- border-bottom: 1px solid $unnnic-color-neutral-soft;
269
- padding: $unnnic-spacing-md;
270
- flex-shrink: 0;
271
- }
272
217
 
273
- &__title-container {
274
- display: flex;
275
- align-items: center;
276
- gap: $unnnic-spacing-ant;
277
- }
278
-
279
- &__title-icon {
280
- font-size: 28px;
281
- }
218
+ overflow-y: auto;
282
219
 
283
- &__title-text {
284
- font-family: $unnnic-font-family-secondary;
285
- font-size: $unnnic-font-size-title-sm;
286
- font-weight: $unnnic-font-weight-black;
287
- line-height: 28px;
288
- color: $unnnic-color-neutral-darkest;
220
+ &--left-sidebar {
221
+ border-radius: $unnnic-radius-4 0 0 $unnnic-radius-4;
222
+ display: grid;
223
+ grid-template-columns: auto 1fr;
224
+ grid-template-areas: 'left-sidebar content';
225
+ }
289
226
  }
290
227
 
291
228
  &__content {
@@ -309,26 +246,5 @@ export default {
309
246
  border-radius: $unnnic-border-radius-pill;
310
247
  }
311
248
  }
312
-
313
- &__actions {
314
- display: grid;
315
- grid-template-columns: 1fr 1fr;
316
- grid-template-areas: 'secondary-button primary-button';
317
- gap: $unnnic-spacing-sm;
318
- padding: $unnnic-spacing-md;
319
- flex-shrink: 0;
320
-
321
- &--divider {
322
- border-top: 1px solid $unnnic-color-neutral-soft;
323
- }
324
-
325
- &__secondary-button {
326
- grid-area: secondary-button;
327
- }
328
-
329
- &__primary-button {
330
- grid-area: primary-button;
331
- }
332
- }
333
249
  }
334
250
  </style>