@weni/unnnic-system 3.12.3-alpha.4 → 3.12.3

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 +10 -0
  2. package/dist/components/Alert/Alert.vue.d.ts +3 -3
  3. package/dist/components/Alert/Version1dot1.vue.d.ts +1 -1
  4. package/dist/components/AudioRecorder/AudioHandler.vue.d.ts +18 -92
  5. package/dist/components/AudioRecorder/AudioRecorder.vue.d.ts +36 -184
  6. package/dist/components/AvatarIcon/AvatarIcon.vue.d.ts +1 -1
  7. package/dist/components/Button/Button.vue.d.ts +2 -2
  8. package/dist/components/Card/AccountCard.vue.d.ts +2 -2
  9. package/dist/components/Card/Card.vue.d.ts +29 -103
  10. package/dist/components/Card/CardCompany.vue.d.ts +2 -2
  11. package/dist/components/Card/CardStatusesContainer.vue.d.ts +19 -93
  12. package/dist/components/Card/ContentCard.vue.d.ts +1 -1
  13. package/dist/components/Card/DashCard.vue.d.ts +2 -2
  14. package/dist/components/Card/DefaultCard.vue.d.ts +1 -1
  15. package/dist/components/Card/MarketplaceCard.vue.d.ts +1 -1
  16. package/dist/components/Card/SimpleCard.vue.d.ts +18 -92
  17. package/dist/components/Card/StatusCard.vue.d.ts +1 -1
  18. package/dist/components/Card/TitleCard.vue.d.ts +18 -92
  19. package/dist/components/CardImage/CardImage.vue.d.ts +5 -5
  20. package/dist/components/CardInformation/CardInformation.vue.d.ts +19 -93
  21. package/dist/components/CardProject/CardProject.vue.d.ts +2 -2
  22. package/dist/components/Carousel/Carousel.vue.d.ts +2 -2
  23. package/dist/components/Carousel/TagCarousel.vue.d.ts +2 -2
  24. package/dist/components/ChartBar/ChartBar.vue.d.ts +24 -98
  25. package/dist/components/ChartLine/ChartLine.vue.d.ts +18 -92
  26. package/dist/components/ChatText/ChatText.vue.d.ts +18 -92
  27. package/dist/components/ChatsContact/ChatsContact.vue.d.ts +6 -6
  28. package/dist/components/ChatsMessage/ChatsMessage.vue.d.ts +18 -92
  29. package/dist/components/ChatsUserAvatar/ChatsUserAvatar.vue.d.ts +1 -1
  30. package/dist/components/Checkbox/Checkbox.vue.d.ts +3 -3
  31. package/dist/components/DataArea/DataArea.vue.d.ts +18 -92
  32. package/dist/components/DataTable/index.vue.d.ts +1 -1
  33. package/dist/components/DataTable/index.vue.d.ts.map +1 -1
  34. package/dist/components/DateFilter/DateFilter.vue.d.ts +15 -94
  35. package/dist/components/Disclaimer/Disclaimer.vue.d.ts +3 -6
  36. package/dist/components/Disclaimer/Disclaimer.vue.d.ts.map +1 -1
  37. package/dist/components/Disclaimer/DisclaimerV2.vue.d.ts +8 -0
  38. package/dist/components/Disclaimer/DisclaimerV2.vue.d.ts.map +1 -0
  39. package/dist/components/Disclaimer/types-v2.d.ts +7 -0
  40. package/dist/components/Disclaimer/types-v2.d.ts.map +1 -0
  41. package/dist/components/Disclaimer/types.d.ts +3 -6
  42. package/dist/components/Disclaimer/types.d.ts.map +1 -1
  43. package/dist/components/Drawer/Drawer.vue.d.ts +207 -37
  44. package/dist/components/Drawer/Drawer.vue.d.ts.map +1 -1
  45. package/dist/components/Dropdown/Dropdown.vue.d.ts +1 -1
  46. package/dist/components/FormElement/FormElement.vue.d.ts +6 -6
  47. package/dist/components/ImportCard/ImportCard.vue.d.ts +6 -6
  48. package/dist/components/Input/BaseInput.vue.d.ts +0 -22
  49. package/dist/components/Input/BaseInput.vue.d.ts.map +1 -1
  50. package/dist/components/Input/Input.vue.d.ts +14 -93
  51. package/dist/components/Input/Input.vue.d.ts.map +1 -1
  52. package/dist/components/Input/TextInput.vue.d.ts +3 -54
  53. package/dist/components/Input/TextInput.vue.d.ts.map +1 -1
  54. package/dist/components/InputNext/InputNext.vue.d.ts +4 -4
  55. package/dist/components/Label/Label.vue.d.ts +1 -1
  56. package/dist/components/Label/Label.vue.d.ts.map +1 -1
  57. package/dist/components/Modal/Modal.vue.d.ts +1 -1
  58. package/dist/components/ModalDialog/ModalDialog.vue.d.ts +35 -209
  59. package/dist/components/ModalDialog/ModalDialog.vue.d.ts.map +1 -1
  60. package/dist/components/ModalNext/ModalNext.vue.d.ts +20 -99
  61. package/dist/components/ModalUpload/ModalUpload.vue.d.ts +12 -12
  62. package/dist/components/MoodRating/MoodRating.vue.d.ts +18 -92
  63. package/dist/components/MultiSelect/MultiSelect.vue.d.ts +163 -0
  64. package/dist/components/MultiSelect/MultiSelect.vue.d.ts.map +1 -0
  65. package/dist/components/Pagination/Pagination.vue.d.ts +6 -6
  66. package/dist/components/Radio/Radio.vue.d.ts +6 -6
  67. package/dist/components/SelectSmart/SelectSmart.vue.d.ts +12 -63
  68. package/dist/components/SelectSmart/SelectSmartMultipleHeader.vue.d.ts +2 -2
  69. package/dist/components/SelectSmart/SelectSmartOption.vue.d.ts +5 -5
  70. package/dist/components/SelectTime/index.vue.d.ts +4 -55
  71. package/dist/components/Slider/Slider.vue.d.ts +18 -92
  72. package/dist/components/Switch/Switch.vue.d.ts +3 -3
  73. package/dist/components/Tab/Tab.vue.d.ts +18 -92
  74. package/dist/components/TableNext/TableBodyCell.vue.d.ts +2 -2
  75. package/dist/components/TableNext/TablePagination.vue.d.ts +6 -6
  76. package/dist/components/Tag/DefaultTag.vue.d.ts +1 -1
  77. package/dist/components/Tag/Tag.vue.d.ts +2 -2
  78. package/dist/components/TextArea/TextArea.vue.d.ts +8 -8
  79. package/dist/components/Toast/Toast.vue.d.ts +1 -1
  80. package/dist/components/Toast/Toast.vue.d.ts.map +1 -1
  81. package/dist/components/ToolTip/ToolTip.vue.d.ts +18 -92
  82. package/dist/components/ToolTip/ToolTip.vue.d.ts.map +1 -1
  83. package/dist/components/Tour/Tour.vue.d.ts +6 -6
  84. package/dist/components/Tour/TourPopover.vue.d.ts +6 -6
  85. package/dist/components/UploadArea/UploadArea.vue.d.ts +6 -6
  86. package/dist/components/ui/popover/PopoverContent.vue.d.ts +2 -2
  87. package/dist/components/ui/popover/PopoverContent.vue.d.ts.map +1 -1
  88. package/dist/components/ui/popover/PopoverOption.vue.d.ts +1 -1
  89. package/dist/components/ui/popover/PopoverOption.vue.d.ts.map +1 -1
  90. package/dist/components/ui/popover/PopoverTrigger.vue.d.ts.map +1 -1
  91. package/dist/{es-e4e4f53d.mjs → es-c19444c0.mjs} +1 -1
  92. package/dist/{index-492e2532.mjs → index-93b45359.mjs} +51889 -54730
  93. package/dist/locales/en.json.d.ts +1 -3
  94. package/dist/locales/es.json.d.ts +1 -3
  95. package/dist/locales/pt_br.json.d.ts +1 -3
  96. package/dist/{pt-br-ac2463c3.mjs → pt-br-23dc9ca6.mjs} +1 -1
  97. package/dist/style.css +1 -1
  98. package/dist/unnnic.mjs +206 -234
  99. package/dist/unnnic.umd.js +44 -48
  100. package/package.json +2 -3
  101. package/src/assets/scss/scheme-colors.scss +223 -223
  102. package/src/assets/scss/tailwind.scss +0 -8
  103. package/src/components/Alert/__tests__/__snapshots__/Alert.spec.js.snap +1 -1
  104. package/src/components/Checkbox/Checkbox.vue +1 -1
  105. package/src/components/Disclaimer/Disclaimer.vue +42 -136
  106. package/src/components/Disclaimer/DisclaimerV2.vue +171 -0
  107. package/src/components/Disclaimer/__tests__/Disclaimer.spec.js +45 -70
  108. package/src/components/Disclaimer/__tests__/DisclaimerV2.spec.js +68 -0
  109. package/src/components/Disclaimer/types-v2.ts +12 -0
  110. package/src/components/Disclaimer/types.ts +3 -12
  111. package/src/components/Drawer/Drawer.vue +269 -190
  112. package/src/components/Drawer/__tests__/Drawer.spec.js +46 -37
  113. package/src/components/Drawer/__tests__/__snapshots__/Drawer.spec.js.snap +19 -18
  114. package/src/components/Input/BaseInput.vue +2 -21
  115. package/src/components/Input/Input.scss +3 -2
  116. package/src/components/Input/Input.vue +1 -19
  117. package/src/components/Input/TextInput.vue +22 -58
  118. package/src/components/Input/__test__/__snapshots__/Input.spec.js.snap +1 -5
  119. package/src/components/Input/__test__/__snapshots__/TextInput.spec.js.snap +1 -7
  120. package/src/components/ModalDialog/ModalDialog.vue +148 -64
  121. package/src/components/ModalDialog/__tests__/ModalDialog.spec.js +221 -11
  122. package/src/components/ModalDialog/__tests__/__snapshots__/ModalDialog.spec.js.snap +22 -1
  123. package/src/components/MultiSelect/MultiSelect.vue +297 -0
  124. package/src/components/Tab/__test__/__snapshots__/Tab.spec.js.snap +1 -3
  125. package/src/components/Toast/Toast.vue +9 -16
  126. package/src/components/ToolTip/ToolTip.vue +177 -25
  127. package/src/components/ToolTip/__tests__/ToolTip.spec.js +61 -339
  128. package/src/components/index.ts +11 -63
  129. package/src/components/ui/popover/PopoverContent.vue +2 -19
  130. package/src/components/ui/popover/PopoverOption.vue +0 -4
  131. package/src/components/ui/popover/PopoverTrigger.vue +1 -5
  132. package/src/locales/en.json +1 -3
  133. package/src/locales/es.json +1 -3
  134. package/src/locales/pt_br.json +1 -3
  135. package/src/stories/Disclaimer.stories.js +12 -53
  136. package/src/stories/DisclaimerV2.stories.js +51 -0
  137. package/src/stories/Drawer.stories.js +1 -1
  138. package/src/stories/ModalDialog.mdx +0 -3
  139. package/src/stories/ModalDialog.stories.js +1 -1
  140. package/src/stories/MultiSelect.stories.js +46 -142
  141. package/dist/components/MultiSelect/MultSelectOption.vue.d.ts +0 -17
  142. package/dist/components/MultiSelect/MultSelectOption.vue.d.ts.map +0 -1
  143. package/dist/components/MultiSelect/index.vue.d.ts +0 -44
  144. package/dist/components/MultiSelect/index.vue.d.ts.map +0 -1
  145. package/dist/components/Select/index.vue.d.ts +0 -44
  146. package/dist/components/Select/index.vue.d.ts.map +0 -1
  147. package/dist/components/index.d.ts +0 -23750
  148. package/dist/components/index.d.ts.map +0 -1
  149. package/dist/components/ui/dialog/Dialog.vue.d.ts +0 -23
  150. package/dist/components/ui/dialog/Dialog.vue.d.ts.map +0 -1
  151. package/dist/components/ui/dialog/DialogClose.vue.d.ts +0 -21
  152. package/dist/components/ui/dialog/DialogClose.vue.d.ts.map +0 -1
  153. package/dist/components/ui/dialog/DialogContent.vue.d.ts +0 -43
  154. package/dist/components/ui/dialog/DialogContent.vue.d.ts.map +0 -1
  155. package/dist/components/ui/dialog/DialogFooter.vue.d.ts +0 -25
  156. package/dist/components/ui/dialog/DialogFooter.vue.d.ts.map +0 -1
  157. package/dist/components/ui/dialog/DialogHeader.vue.d.ts +0 -29
  158. package/dist/components/ui/dialog/DialogHeader.vue.d.ts.map +0 -1
  159. package/dist/components/ui/dialog/DialogTitle.vue.d.ts +0 -23
  160. package/dist/components/ui/dialog/DialogTitle.vue.d.ts.map +0 -1
  161. package/dist/components/ui/dialog/DialogTrigger.vue.d.ts +0 -19
  162. package/dist/components/ui/dialog/DialogTrigger.vue.d.ts.map +0 -1
  163. package/dist/components/ui/dialog/index.d.ts +0 -8
  164. package/dist/components/ui/dialog/index.d.ts.map +0 -1
  165. package/dist/components/ui/drawer/Drawer.vue.d.ts +0 -35
  166. package/dist/components/ui/drawer/Drawer.vue.d.ts.map +0 -1
  167. package/dist/components/ui/drawer/DrawerClose.vue.d.ts +0 -21
  168. package/dist/components/ui/drawer/DrawerClose.vue.d.ts.map +0 -1
  169. package/dist/components/ui/drawer/DrawerContent.vue.d.ts +0 -43
  170. package/dist/components/ui/drawer/DrawerContent.vue.d.ts.map +0 -1
  171. package/dist/components/ui/drawer/DrawerDescription.vue.d.ts +0 -23
  172. package/dist/components/ui/drawer/DrawerDescription.vue.d.ts.map +0 -1
  173. package/dist/components/ui/drawer/DrawerFooter.vue.d.ts +0 -22
  174. package/dist/components/ui/drawer/DrawerFooter.vue.d.ts.map +0 -1
  175. package/dist/components/ui/drawer/DrawerHeader.vue.d.ts +0 -25
  176. package/dist/components/ui/drawer/DrawerHeader.vue.d.ts.map +0 -1
  177. package/dist/components/ui/drawer/DrawerOverlay.vue.d.ts +0 -8
  178. package/dist/components/ui/drawer/DrawerOverlay.vue.d.ts.map +0 -1
  179. package/dist/components/ui/drawer/DrawerTitle.vue.d.ts +0 -23
  180. package/dist/components/ui/drawer/DrawerTitle.vue.d.ts.map +0 -1
  181. package/dist/components/ui/drawer/DrawerTrigger.vue.d.ts +0 -19
  182. package/dist/components/ui/drawer/DrawerTrigger.vue.d.ts.map +0 -1
  183. package/dist/components/ui/drawer/index.d.ts +0 -11
  184. package/dist/components/ui/drawer/index.d.ts.map +0 -1
  185. package/dist/components/ui/tooltip/Tooltip.vue.d.ts +0 -23
  186. package/dist/components/ui/tooltip/Tooltip.vue.d.ts.map +0 -1
  187. package/dist/components/ui/tooltip/TooltipContent.vue.d.ts +0 -31
  188. package/dist/components/ui/tooltip/TooltipContent.vue.d.ts.map +0 -1
  189. package/dist/components/ui/tooltip/TooltipTrigger.vue.d.ts +0 -19
  190. package/dist/components/ui/tooltip/TooltipTrigger.vue.d.ts.map +0 -1
  191. package/dist/components/ui/tooltip/index.d.ts +0 -4
  192. package/dist/components/ui/tooltip/index.d.ts.map +0 -1
  193. package/dist/lib/layer-manager.d.ts +0 -16
  194. package/dist/lib/layer-manager.d.ts.map +0 -1
  195. package/src/components/MultiSelect/MultSelectOption.vue +0 -49
  196. package/src/components/MultiSelect/__tests__/MultiSelect.spec.js +0 -556
  197. package/src/components/MultiSelect/__tests__/MultiSelectOption.spec.js +0 -229
  198. package/src/components/MultiSelect/__tests__/__snapshots__/MultiSelect.spec.js.snap +0 -87
  199. package/src/components/MultiSelect/__tests__/__snapshots__/MultiSelectOption.spec.js.snap +0 -51
  200. package/src/components/MultiSelect/index.vue +0 -224
  201. package/src/components/Select/__tests__/Select.spec.js +0 -422
  202. package/src/components/Select/__tests__/SelectItem.spec.js +0 -330
  203. package/src/components/Select/__tests__/__snapshots__/Popover.spec.js.snap +0 -8
  204. package/src/components/Select/__tests__/__snapshots__/Select.spec.js.snap +0 -71
  205. package/src/components/Select/__tests__/__snapshots__/SelectItem.spec.js.snap +0 -15
  206. package/src/components/Select/__tests__/__snapshots__/SelectOption.spec.js.snap +0 -25
  207. package/src/components/Select/__tests__/__snapshots__/SelectPopover.spec.js.snap +0 -8
  208. package/src/components/Select/index.vue +0 -297
  209. package/src/components/ui/dialog/Dialog.vue +0 -19
  210. package/src/components/ui/dialog/DialogClose.vue +0 -29
  211. package/src/components/ui/dialog/DialogContent.vue +0 -140
  212. package/src/components/ui/dialog/DialogFooter.vue +0 -50
  213. package/src/components/ui/dialog/DialogHeader.vue +0 -83
  214. package/src/components/ui/dialog/DialogTitle.vue +0 -38
  215. package/src/components/ui/dialog/DialogTrigger.vue +0 -16
  216. package/src/components/ui/dialog/index.ts +0 -7
  217. package/src/components/ui/drawer/Drawer.vue +0 -27
  218. package/src/components/ui/drawer/DrawerClose.vue +0 -31
  219. package/src/components/ui/drawer/DrawerContent.vue +0 -111
  220. package/src/components/ui/drawer/DrawerDescription.vue +0 -40
  221. package/src/components/ui/drawer/DrawerFooter.vue +0 -38
  222. package/src/components/ui/drawer/DrawerHeader.vue +0 -57
  223. package/src/components/ui/drawer/DrawerOverlay.vue +0 -33
  224. package/src/components/ui/drawer/DrawerTitle.vue +0 -37
  225. package/src/components/ui/drawer/DrawerTrigger.vue +0 -31
  226. package/src/components/ui/drawer/index.ts +0 -10
  227. package/src/components/ui/tooltip/Tooltip.vue +0 -21
  228. package/src/components/ui/tooltip/TooltipContent.vue +0 -74
  229. package/src/components/ui/tooltip/TooltipTrigger.vue +0 -26
  230. package/src/components/ui/tooltip/index.ts +0 -3
  231. package/src/lib/layer-manager.ts +0 -92
  232. package/src/stories/Dialog.stories.js +0 -832
  233. package/src/stories/DrawerNext.stories.js +0 -611
  234. package/src/stories/LayerManager.docs.mdx +0 -40
  235. package/src/stories/LayerManager.stories.js +0 -364
  236. package/src/stories/Select.stories.js +0 -158
@@ -1,297 +0,0 @@
1
- <template>
2
- <div
3
- class="unnnic-select"
4
- @keydown="handleKeyDown"
5
- >
6
- <Popover
7
- :open="openPopover"
8
- @update:open="openPopover = $event"
9
- >
10
- <PopoverTrigger>
11
- <UnnnicInput
12
- :modelValue="inputValue"
13
- class="unnnic-select__input"
14
- readonly
15
- :forceActiveStatus="openPopover"
16
- :size="props.size"
17
- :placeholder="props.placeholder"
18
- :label="props.label"
19
- :errors="props.errors"
20
- :message="props.message"
21
- :iconRight="openPopover ? 'keyboard_arrow_up' : 'keyboard_arrow_down'"
22
- :disabled="props.disabled"
23
- :showClear="!!selectedItem"
24
- @clear="emit('update:modelValue', '')"
25
- />
26
- </PopoverTrigger>
27
- <PopoverContent
28
- align="start"
29
- :class="'h-full'"
30
- :style="popoverContentCustomStyles"
31
- >
32
- <div class="unnnic-select__content">
33
- <UnnnicInput
34
- v-if="props.enableSearch"
35
- class="unnnic-select__input-search"
36
- :modelValue="props.search"
37
- :placeholder="$t('search')"
38
- iconLeft="search"
39
- @update:model-value="handleSearch"
40
- />
41
- <p
42
- v-if="filteredOptions.length === 0"
43
- class="unnnic-select__content-no-results"
44
- >
45
- {{ $t('without_results') }}
46
- </p>
47
- <PopoverOption
48
- v-for="(option, index) in filteredOptions"
49
- v-else
50
- :key="option[props.itemValue]"
51
- :data-option-index="index"
52
- data-testid="select-option"
53
- :label="option[props.itemLabel]"
54
- :active="
55
- option[props.itemValue] === selectedItem?.[props.itemValue]
56
- "
57
- :focused="focusedOptionIndex === index"
58
- :disabled="option.disabled"
59
- @click="handleSelectOption(option)"
60
- />
61
- </div>
62
- </PopoverContent>
63
- </Popover>
64
- </div>
65
- </template>
66
-
67
- <script setup lang="ts">
68
- import { computed, ref, watch, nextTick } from 'vue';
69
- import UnnnicInput from '../Input/Input.vue';
70
-
71
- import {
72
- Popover,
73
- PopoverTrigger,
74
- PopoverContent,
75
- PopoverOption,
76
- } from '../ui/popover/index';
77
-
78
- import UnnnicI18n from '../../mixins/i18n';
79
-
80
- defineOptions({
81
- name: 'UnnnicSelect',
82
- mixins: [UnnnicI18n],
83
- });
84
-
85
- interface SelectProps {
86
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
87
- options: Array<{ [key: string]: any }>;
88
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
89
- modelValue: any;
90
- returnObject?: boolean;
91
- itemLabel?: string;
92
- itemValue?: string;
93
- placeholder?: string;
94
- label?: string;
95
- type?: 'normal' | 'error';
96
- errors?: string | Array<string>;
97
- message?: string;
98
- size?: 'sm' | 'md';
99
- optionsLines?: number;
100
- enableSearch?: boolean;
101
- search?: string;
102
- locale?: string;
103
- disabled?: boolean;
104
- }
105
-
106
- const props = withDefaults(defineProps<SelectProps>(), {
107
- size: 'md',
108
- type: 'normal',
109
- placeholder: '',
110
- optionsLines: 5,
111
- returnObject: false,
112
- itemLabel: 'label',
113
- itemValue: 'value',
114
- locale: 'en',
115
- enableSearch: false,
116
- disabled: false,
117
- label: '',
118
- errors: '',
119
- message: '',
120
- search: '',
121
- });
122
-
123
- const emit = defineEmits<{
124
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
125
- 'update:modelValue': [value: any];
126
- 'update:search': [value: string];
127
- }>();
128
-
129
- const openPopover = ref(false);
130
-
131
- watch(openPopover, () => {
132
- if (!openPopover.value) {
133
- handleSearch('');
134
- } else {
135
- focusedOptionIndex.value = -1;
136
- }
137
-
138
- if (openPopover.value && props.modelValue) {
139
- const selectedOptionIndex = props.options.findIndex(
140
- (option) =>
141
- option[props.itemValue] === selectedItem.value?.[props.itemValue],
142
- );
143
- scrollToOption(selectedOptionIndex, 'instant', 'center');
144
- }
145
- });
146
-
147
- const handleKeyDown = (event) => {
148
- const { key } = event;
149
- const validKeys = ['ArrowUp', 'ArrowDown', 'Enter'];
150
-
151
- if (validKeys.includes(key)) {
152
- event.preventDefault();
153
- if (key === 'ArrowUp') {
154
- if (focusedOptionIndex.value === 0) return;
155
- focusedOptionIndex.value--;
156
- scrollToOption(focusedOptionIndex.value);
157
- }
158
- if (key === 'ArrowDown') {
159
- if (focusedOptionIndex.value === filteredOptions.value.length - 1) return;
160
- focusedOptionIndex.value++;
161
- scrollToOption(focusedOptionIndex.value);
162
- }
163
- if (key === 'Enter' && focusedOptionIndex.value !== -1) {
164
- handleSelectOption(filteredOptions.value[focusedOptionIndex.value]);
165
- }
166
- }
167
- };
168
-
169
- const focusedOptionIndex = ref<number>(-1);
170
-
171
- const scrollToOption = (
172
- index: number,
173
- behavior: 'smooth' | 'instant' = 'smooth',
174
- block: 'center' | 'start' | 'end' | 'nearest' = 'center',
175
- ) => {
176
- nextTick(() => {
177
- const option = document.querySelector(`[data-option-index="${index}"]`);
178
- if (option) {
179
- option.scrollIntoView?.({ behavior, block });
180
- }
181
- });
182
- };
183
-
184
- const calculatedPopoverHeight = computed(() => {
185
- if (!props.options || props.options.length === 0) return 'unset';
186
- const popoverPadding = 32;
187
- const popoverGap = 4;
188
- // 37 = 21px (height) + 16px (padding)
189
- const fieldsHeight = 37 * props.optionsLines;
190
- const gapsCompensation = props.enableSearch ? 1 : 2;
191
-
192
- const size =
193
- fieldsHeight +
194
- popoverPadding +
195
- (popoverGap * props.optionsLines - gapsCompensation);
196
-
197
- return `${props.enableSearch ? size + 45 + 1 : size}px`;
198
- });
199
-
200
- const popoverContentCustomStyles = computed(() => {
201
- const emptyFilteredOptions = filteredOptions.value?.length === 0;
202
- return {
203
- overflow: 'auto',
204
- display: 'flex',
205
- flexDirection: 'column',
206
- minHeight: calculatedPopoverHeight.value,
207
- maxHeight: emptyFilteredOptions ? 'unset' : calculatedPopoverHeight.value,
208
- height: emptyFilteredOptions ? calculatedPopoverHeight.value : 'unset',
209
- };
210
- });
211
-
212
- const selectedItem = computed(() => {
213
- if (props.returnObject) return props.modelValue;
214
-
215
- return props.options.find(
216
- (option) => option[props.itemValue] === props.modelValue,
217
- );
218
- });
219
-
220
- const inputValue = computed(() => {
221
- return selectedItem.value?.[props.itemLabel];
222
- });
223
-
224
- const handleSelectOption = (option) => {
225
- if (
226
- option[props.itemValue] === selectedItem.value?.[props.itemValue] ||
227
- option.disabled
228
- )
229
- return;
230
-
231
- emit(
232
- 'update:modelValue',
233
- props.returnObject ? option : option[props.itemValue],
234
- );
235
- openPopover.value = false;
236
- };
237
-
238
- const handleSearch = (value: string) => {
239
- emit('update:search', value);
240
- };
241
-
242
- const filteredOptions = computed(() => {
243
- if (!props.enableSearch || !props.search) return props.options;
244
-
245
- return props.options.filter(
246
- (option) =>
247
- option[props.itemLabel]
248
- .toLowerCase()
249
- .includes(props.search?.toLowerCase()) ||
250
- option[props.itemValue]
251
- .toLowerCase()
252
- .includes(props.search?.toLowerCase()),
253
- );
254
- });
255
- </script>
256
-
257
- <style lang="scss" scoped>
258
- @use '@/assets/scss/unnnic' as *;
259
-
260
- :deep(.unnnic-select__input) {
261
- cursor: pointer;
262
- }
263
-
264
- :deep(.unnnic-select__input-search) {
265
- > .icon-left {
266
- color: $unnnic-color-fg-base;
267
- }
268
- }
269
-
270
- :deep(.unnnic-select__input) {
271
- > .icon-right {
272
- color: $unnnic-color-fg-base;
273
- }
274
- }
275
-
276
- .unnnic-select {
277
- &__content {
278
- display: flex;
279
- flex-direction: column;
280
- padding: 0;
281
- margin: 0;
282
- gap: $unnnic-space-1;
283
-
284
- height: -webkit-fill-available;
285
-
286
- &-no-results {
287
- margin: 0;
288
- display: flex;
289
- align-items: center;
290
- justify-content: center;
291
- height: 100%;
292
- font: $unnnic-font-emphasis;
293
- color: $unnnic-color-fg-muted;
294
- }
295
- }
296
- }
297
- </style>
@@ -1,19 +0,0 @@
1
- <script setup lang="ts">
2
- import type { DialogRootEmits, DialogRootProps } from 'reka-ui';
3
- import { DialogRoot, useForwardPropsEmits } from 'reka-ui';
4
-
5
- defineOptions({
6
- name: 'UnnnicDialog',
7
- });
8
-
9
- const props = defineProps<DialogRootProps>();
10
- const emits = defineEmits<DialogRootEmits>();
11
-
12
- const forwarded = useForwardPropsEmits(props, emits);
13
- </script>
14
-
15
- <template>
16
- <DialogRoot v-bind="forwarded">
17
- <slot />
18
- </DialogRoot>
19
- </template>
@@ -1,29 +0,0 @@
1
- <script setup lang="ts">
2
- import type { DialogCloseProps } from 'reka-ui';
3
- import { DialogClose } from 'reka-ui';
4
-
5
- defineOptions({
6
- name: 'UnnnicDialogClose',
7
- });
8
-
9
- const props = withDefaults(defineProps<DialogCloseProps>(), {
10
- asChild: true,
11
- });
12
- </script>
13
-
14
- <template>
15
- <DialogClose
16
- class="unnnic-dialog-close"
17
- v-bind="props"
18
- >
19
- <slot />
20
- </DialogClose>
21
- </template>
22
-
23
- <style lang="scss" scoped>
24
- .unnnic-dialog-close {
25
- > * {
26
- width: 100%;
27
- }
28
- }
29
- </style>
@@ -1,140 +0,0 @@
1
- <script setup lang="ts">
2
- import type { DialogContentEmits, DialogContentProps } from 'reka-ui';
3
- import type { HTMLAttributes, Component } from 'vue';
4
- import { computed, h } from 'vue';
5
- import { reactiveOmit } from '@vueuse/core';
6
- import {
7
- DialogContent,
8
- DialogOverlay,
9
- DialogPortal,
10
- useForwardPropsEmits,
11
- } from 'reka-ui';
12
- import { cn } from '@/lib/utils';
13
- import { useLayerZIndex } from '@/lib/layer-manager';
14
-
15
- defineOptions({
16
- name: 'UnnnicDialogContent',
17
- });
18
-
19
- const props = withDefaults(
20
- defineProps<
21
- DialogContentProps & {
22
- parentClass?: HTMLAttributes['class'];
23
- class?: HTMLAttributes['class'];
24
- size?: 'small' | 'medium' | 'large';
25
- }
26
- >(),
27
- {
28
- size: 'medium',
29
- parentClass: '', // This class should be temporary, to be discontinued with the ModalDialog component
30
- class: '',
31
- },
32
- );
33
- const emits = defineEmits<DialogContentEmits>();
34
-
35
- const delegatedProps = reactiveOmit(props, 'class', 'parentClass');
36
-
37
- const forwarded = useForwardPropsEmits(delegatedProps, emits);
38
-
39
- const overlayZIndex = useLayerZIndex('modal', { offset: -2 });
40
- const modalZIndex = useLayerZIndex('modal');
41
-
42
- const contentClasses = computed(() =>
43
- cn(
44
- 'unnnic-dialog-content',
45
- `unnnic-dialog-content--size-${props.size}`,
46
- 'duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%]',
47
- props.class,
48
- ),
49
- );
50
-
51
- // This component is used to wrap the DialogContent component in a section if the parentClass is provided
52
- // This is a temporary solution, to be discontinued with the ModalDialog component
53
- const ConditionalWrapper: Component = (_, { slots }) => {
54
- const content = slots.default?.();
55
- return props.parentClass
56
- ? h('section', { class: props.parentClass }, content)
57
- : content;
58
- };
59
- </script>
60
-
61
- <template>
62
- <DialogPortal>
63
- <DialogOverlay
64
- class="unnnic-dialog-overlay data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0"
65
- :style="{ zIndex: overlayZIndex }"
66
- />
67
-
68
- <ConditionalWrapper>
69
- <DialogContent
70
- v-bind="forwarded"
71
- :class="contentClasses"
72
- :style="{ zIndex: modalZIndex }"
73
- >
74
- <slot />
75
- </DialogContent>
76
- </ConditionalWrapper>
77
- </DialogPortal>
78
- </template>
79
-
80
- <style lang="scss" scoped>
81
- @use '@/assets/scss/unnnic' as *;
82
-
83
- .unnnic-dialog-overlay {
84
- position: fixed;
85
- top: 0;
86
- left: 0;
87
-
88
- width: 100vw;
89
- height: 100vh;
90
- background: rgba(53, 57, 69, 0.5);
91
- }
92
-
93
- .unnnic-dialog-content {
94
- position: fixed;
95
- top: 50%;
96
- left: 50%;
97
-
98
- overflow: hidden;
99
-
100
- transform: translate(-50%, -50%);
101
-
102
- width: 100%;
103
- max-height: calc(100% - $unnnic-space-20);
104
-
105
- display: flex;
106
- flex-direction: column;
107
-
108
- box-shadow: $unnnic-shadow-2;
109
- border-radius: $unnnic-radius-4;
110
- background-color: $unnnic-color-bg-base;
111
-
112
- &--size-small {
113
- max-width: 360px;
114
- }
115
-
116
- &--size-medium {
117
- max-width: 560px;
118
- }
119
-
120
- &--size-large {
121
- max-width: 800px;
122
- }
123
-
124
- > * {
125
- &::-webkit-scrollbar {
126
- width: $unnnic-spacing-inline-nano;
127
- }
128
-
129
- &::-webkit-scrollbar-thumb {
130
- background: $unnnic-color-neutral-cleanest;
131
- border-radius: $unnnic-border-radius-pill;
132
- }
133
-
134
- &::-webkit-scrollbar-track {
135
- background: $unnnic-color-neutral-soft;
136
- border-radius: $unnnic-border-radius-pill;
137
- }
138
- }
139
- }
140
- </style>
@@ -1,50 +0,0 @@
1
- <script setup lang="ts">
2
- import type { HTMLAttributes } from 'vue';
3
- import { cn } from '@/lib/utils';
4
-
5
- defineOptions({
6
- name: 'UnnnicDialogFooter',
7
- });
8
-
9
- const props = withDefaults(
10
- defineProps<{ class?: HTMLAttributes['class']; divider?: boolean }>(),
11
- {
12
- divider: true,
13
- },
14
- );
15
- </script>
16
-
17
- <template>
18
- <footer
19
- :class="
20
- cn(
21
- 'unnnic-dialog-footer',
22
- { 'unnnic-dialog-footer--with-divider': props.divider },
23
- props.class,
24
- )
25
- "
26
- >
27
- <slot />
28
- </footer>
29
- </template>
30
-
31
- <style lang="scss" scoped>
32
- @use '@/assets/scss/unnnic' as *;
33
-
34
- .unnnic-dialog-footer {
35
- display: flex;
36
- justify-content: center;
37
- align-items: center;
38
- gap: $unnnic-space-2;
39
-
40
- padding: $unnnic-space-6;
41
-
42
- &--with-divider {
43
- border-top: 1px solid $unnnic-color-border-soft;
44
- }
45
-
46
- > * {
47
- width: 100%;
48
- }
49
- }
50
- </style>
@@ -1,83 +0,0 @@
1
- <script setup lang="ts">
2
- import type { HTMLAttributes } from 'vue';
3
- import { cn } from '@/lib/utils';
4
- import UnnnicButton from '@/components/Button/Button.vue';
5
- import DialogClose from './DialogClose.vue';
6
- import UnnnicIcon, { SchemeColor } from '@/components/Icon.vue';
7
-
8
- defineOptions({
9
- name: 'UnnnicDialogHeader',
10
- });
11
-
12
- const props = withDefaults(
13
- defineProps<{
14
- class?: HTMLAttributes['class'];
15
- divider?: boolean;
16
- type?: 'default' | 'success' | 'warning' | 'attention';
17
- closeButton?: boolean;
18
- }>(),
19
- {
20
- divider: true,
21
- closeButton: true,
22
- type: 'default',
23
- },
24
- );
25
-
26
- const iconsMapper = {
27
- default: { icon: '', scheme: '' as SchemeColor },
28
- success: { icon: 'check_circle', scheme: 'aux-green-500' as SchemeColor },
29
- warning: { icon: 'warning', scheme: 'aux-red-500' as SchemeColor },
30
- attention: { icon: 'error', scheme: 'aux-yellow-500' as SchemeColor },
31
- };
32
- </script>
33
-
34
- <template>
35
- <header
36
- :class="
37
- cn(
38
- 'unnnic-dialog-header',
39
- { 'unnnic-dialog-header--with-divider': props.divider },
40
- props.class,
41
- )
42
- "
43
- >
44
- <UnnnicIcon
45
- v-if="iconsMapper[props.type]?.icon"
46
- :icon="iconsMapper[props.type]?.icon"
47
- :scheme="iconsMapper[props.type]?.scheme"
48
- size="md"
49
- />
50
- <slot />
51
-
52
- <DialogClose
53
- v-if="props.closeButton"
54
- class="unnnic-dialog-header__close"
55
- >
56
- <UnnnicButton
57
- type="tertiary"
58
- iconCenter="close"
59
- size="small"
60
- />
61
- </DialogClose>
62
- </header>
63
- </template>
64
-
65
- <style lang="scss" scoped>
66
- @use '@/assets/scss/unnnic' as *;
67
-
68
- .unnnic-dialog-header {
69
- display: flex;
70
- align-items: center;
71
- gap: $unnnic-space-2;
72
-
73
- padding: $unnnic-space-6;
74
-
75
- &--with-divider {
76
- border-bottom: 1px solid $unnnic-color-border-soft;
77
- }
78
-
79
- &__close {
80
- margin-left: auto;
81
- }
82
- }
83
- </style>
@@ -1,38 +0,0 @@
1
- <script setup lang="ts">
2
- import type { DialogTitleProps } from 'reka-ui';
3
- import type { HTMLAttributes } from 'vue';
4
- import { reactiveOmit } from '@vueuse/core';
5
- import { DialogTitle, useForwardProps } from 'reka-ui';
6
- import { cn } from '@/lib/utils';
7
-
8
- defineOptions({
9
- name: 'UnnnicDialogTitle',
10
- });
11
-
12
- const props = defineProps<
13
- DialogTitleProps & { class?: HTMLAttributes['class'] }
14
- >();
15
-
16
- const delegatedProps = reactiveOmit(props, 'class');
17
-
18
- const forwardedProps = useForwardProps(delegatedProps);
19
- </script>
20
-
21
- <template>
22
- <DialogTitle
23
- v-bind="forwardedProps"
24
- :class="cn('unnnic-dialog-title', props.class)"
25
- >
26
- <slot />
27
- </DialogTitle>
28
- </template>
29
-
30
- <style lang="scss" scoped>
31
- @use '@/assets/scss/unnnic' as *;
32
-
33
- .unnnic-dialog-title {
34
- font: $unnnic-font-display-2;
35
- color: $unnnic-color-fg-emphasized;
36
- margin: 0;
37
- }
38
- </style>
@@ -1,16 +0,0 @@
1
- <script setup lang="ts">
2
- import type { DialogTriggerProps } from 'reka-ui';
3
- import { DialogTrigger } from 'reka-ui';
4
-
5
- defineOptions({
6
- name: 'UnnnicDialogTrigger',
7
- });
8
-
9
- const props = defineProps<DialogTriggerProps>();
10
- </script>
11
-
12
- <template>
13
- <DialogTrigger v-bind="props">
14
- <slot />
15
- </DialogTrigger>
16
- </template>
@@ -1,7 +0,0 @@
1
- export { default as Dialog } from './Dialog.vue';
2
- export { default as DialogClose } from './DialogClose.vue';
3
- export { default as DialogContent } from './DialogContent.vue';
4
- export { default as DialogFooter } from './DialogFooter.vue';
5
- export { default as DialogHeader } from './DialogHeader.vue';
6
- export { default as DialogTitle } from './DialogTitle.vue';
7
- export { default as DialogTrigger } from './DialogTrigger.vue';