@weni/unnnic-system 3.7.1-alpha.2 → 3.7.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 (259) hide show
  1. package/CHANGELOG.md +7 -1
  2. package/dist/components/Accordion/Accordion.vue.d.ts +1 -1
  3. package/dist/components/Alert/Alert.vue.d.ts +116 -17
  4. package/dist/components/Alert/Alert.vue.d.ts.map +1 -1
  5. package/dist/components/Alert/Version1dot1.vue.d.ts +38 -2
  6. package/dist/components/Alert/Version1dot1.vue.d.ts.map +1 -1
  7. package/dist/components/AudioRecorder/AudioHandler.vue.d.ts +2 -2
  8. package/dist/components/AudioRecorder/AudioPlayer.vue.d.ts +1 -1
  9. package/dist/components/AudioRecorder/AudioRecorder.vue.d.ts +5 -5
  10. package/dist/components/AvatarIcon/AvatarIcon.vue.d.ts +3 -3
  11. package/dist/components/Banner/Banner.vue.d.ts +1 -1
  12. package/dist/components/Banner/InfoBanner.vue.d.ts +1 -1
  13. package/dist/components/Breadcrumb/Breadcrumb.vue.d.ts +1 -1
  14. package/dist/components/Button/Button.vue.d.ts +1 -1
  15. package/dist/components/Button/Button.vue.d.ts.map +1 -1
  16. package/dist/components/Button/ButtonIcon.vue.d.ts +1 -1
  17. package/dist/components/Button/types.d.ts +1 -1
  18. package/dist/components/Button/types.d.ts.map +1 -1
  19. package/dist/components/Card/AccountCard.vue.d.ts +5 -5
  20. package/dist/components/Card/BlankCard.vue.d.ts +1 -1
  21. package/dist/components/Card/Card.vue.d.ts +27 -27
  22. package/dist/components/Card/CardCompany.vue.d.ts +5 -5
  23. package/dist/components/Card/CardData.vue.d.ts +1 -1
  24. package/dist/components/Card/CardStatusesContainer.vue.d.ts +5 -5
  25. package/dist/components/Card/ContentCard.vue.d.ts +3 -3
  26. package/dist/components/Card/DashCard.vue.d.ts +5 -5
  27. package/dist/components/Card/DefaultCard.vue.d.ts +1 -1
  28. package/dist/components/Card/MarketplaceCard.vue.d.ts +2 -2
  29. package/dist/components/Card/SimpleCard.vue.d.ts +3 -3
  30. package/dist/components/Card/StatusCard.vue.d.ts +2 -2
  31. package/dist/components/Card/TitleCard.vue.d.ts +3 -3
  32. package/dist/components/CardImage/CardImage.vue.d.ts +31 -24
  33. package/dist/components/CardInformation/CardInformation.vue.d.ts +5 -5
  34. package/dist/components/CardProject/CardProject.vue.d.ts +3 -3
  35. package/dist/components/Carousel/Carousel.vue.d.ts +7 -7
  36. package/dist/components/Carousel/TagCarousel.vue.d.ts +6 -6
  37. package/dist/components/ChartBar/ChartBar.vue.d.ts +5 -5
  38. package/dist/components/ChartLine/ChartLine.vue.d.ts +1 -1
  39. package/dist/components/ChatText/ChatText.vue.d.ts +2 -2
  40. package/dist/components/ChatsContact/ChatsContact.vue.d.ts +34 -27
  41. package/dist/components/ChatsDashboardTagLive/ChatsDashboardTagLive.vue.d.ts +1 -1
  42. package/dist/components/ChatsHeader/ChatsHeader.vue.d.ts +1 -1
  43. package/dist/components/ChatsHeader/ChatsHeader.vue.d.ts.map +1 -1
  44. package/dist/components/ChatsMessage/ChatsMessage.vue.d.ts +5 -5
  45. package/dist/components/ChatsMessage/ChatsMessageStatusBackdrop.vue.d.ts +2 -2
  46. package/dist/components/ChatsNavbar/ChatsNavbar.vue.d.ts +1 -1
  47. package/dist/components/ChatsUserAvatar/ChatsUserAvatar.vue.d.ts +2 -2
  48. package/dist/components/Checkbox/Checkbox.vue.d.ts +26 -19
  49. package/dist/components/Checkbox/Checkbox.vue.d.ts.map +1 -1
  50. package/dist/components/Comment/Comment.vue.d.ts +1 -1
  51. package/dist/components/DataArea/DataArea.vue.d.ts +2 -2
  52. package/dist/components/DataTable/index.vue.d.ts +1 -1
  53. package/dist/components/DataTable/index.vue.d.ts.map +1 -1
  54. package/dist/components/DateFilter/DateFilter.vue.d.ts +41 -251
  55. package/dist/components/DatePicker/DatePicker.vue.d.ts +4 -4
  56. package/dist/components/Drawer/Drawer.vue.d.ts +4 -4
  57. package/dist/components/Dropdown/Dropdown.vue.d.ts +1 -1
  58. package/dist/components/Dropdown/LanguageSelect.vue.d.ts +3 -3
  59. package/dist/components/Flag.vue.d.ts +2 -2
  60. package/dist/components/FormElement/FormElement.vue.d.ts +28 -51
  61. package/dist/components/FormElement/FormElement.vue.d.ts.map +1 -1
  62. package/dist/components/Icon.vue.d.ts +1 -1
  63. package/dist/components/Icon.vue.d.ts.map +1 -1
  64. package/dist/components/IconLoading/IconLoading.vue.d.ts +1 -1
  65. package/dist/components/ImportCard/ImportCard.vue.d.ts +4 -4
  66. package/dist/components/Input/BaseInput.vue.d.ts +2 -33
  67. package/dist/components/Input/BaseInput.vue.d.ts.map +1 -1
  68. package/dist/components/Input/Input.vue.d.ts +41 -251
  69. package/dist/components/Input/Input.vue.d.ts.map +1 -1
  70. package/dist/components/Input/TextInput.vue.d.ts +25 -85
  71. package/dist/components/Input/TextInput.vue.d.ts.map +1 -1
  72. package/dist/components/InputDatePicker/InputDatePicker.vue.d.ts +47 -257
  73. package/dist/components/InputNext/InputNext.vue.d.ts +5 -5
  74. package/dist/components/Label/Label.vue.d.ts +15 -9
  75. package/dist/components/Label/Label.vue.d.ts.map +1 -1
  76. package/dist/components/Modal/Modal.vue.d.ts +2 -2
  77. package/dist/components/ModalDialog/ModalDialog.vue.d.ts +34 -199
  78. package/dist/components/ModalDialog/ModalDialog.vue.d.ts.map +1 -1
  79. package/dist/components/ModalNext/ModalNext.vue.d.ts +46 -256
  80. package/dist/components/ModalUpload/ModalUpload.vue.d.ts +8 -8
  81. package/dist/components/MoodRating/MoodRating.vue.d.ts +1 -1
  82. package/dist/components/MultiSelect/MultiSelect.vue.d.ts +14 -20
  83. package/dist/components/Pagination/Pagination.vue.d.ts +3 -3
  84. package/dist/components/ProgressBar/ProgressBar.vue.d.ts +1 -1
  85. package/dist/components/Radio/Radio.vue.d.ts +6 -8
  86. package/dist/components/Radio/Radio.vue.d.ts.map +1 -1
  87. package/dist/components/SelectSmart/SelectSmart.vue.d.ts +60 -113
  88. package/dist/components/SelectSmart/SelectSmartMultipleHeader.vue.d.ts +5 -5
  89. package/dist/components/SelectSmart/SelectSmartOption.vue.d.ts +28 -21
  90. package/dist/components/SelectSmart/SelectSmartOption.vue.d.ts.map +1 -1
  91. package/dist/components/SelectTime/index.vue.d.ts +25 -85
  92. package/dist/components/SkeletonLoading/skeletonTheme.vue.d.ts +1 -1
  93. package/dist/components/Slider/Slider.vue.d.ts +2 -2
  94. package/dist/components/StarRating/StarRating.vue.d.ts +1 -1
  95. package/dist/components/Switch/Switch.vue.d.ts +21 -55
  96. package/dist/components/Switch/Switch.vue.d.ts.map +1 -1
  97. package/dist/components/Tab/Tab.vue.d.ts +2 -13
  98. package/dist/components/TableNext/TableBodyCell.vue.d.ts +2 -2
  99. package/dist/components/TableNext/TablePagination.vue.d.ts +3 -3
  100. package/dist/components/TabsExpanded/TabsExpanded.vue.d.ts +1 -1
  101. package/dist/components/Tag/BrandTag.vue.d.ts +1 -1
  102. package/dist/components/Tag/DefaultTag.vue.d.ts +1 -1
  103. package/dist/components/Tag/IndicatorTag.vue.d.ts +2 -2
  104. package/dist/components/Tag/Tag.vue.d.ts +5 -5
  105. package/dist/components/TextArea/TextArea.vue.d.ts +30 -66
  106. package/dist/components/TextArea/TextArea.vue.d.ts.map +1 -1
  107. package/dist/components/ToolTip/ToolTip.vue.d.ts +1 -1
  108. package/dist/components/Tour/Tour.vue.d.ts +3 -3
  109. package/dist/components/Tour/TourPopover.vue.d.ts +3 -3
  110. package/dist/components/UploadArea/UploadArea.vue.d.ts +4 -4
  111. package/dist/components/index.d.ts +1363 -4078
  112. package/dist/components/index.d.ts.map +1 -1
  113. package/dist/{es-5807a261.mjs → es-484b4c46.mjs} +1 -1
  114. package/dist/{index-5d6e1c42.mjs → index-dc007393.mjs} +11927 -18885
  115. package/dist/locales/en.json.d.ts +1 -2
  116. package/dist/locales/es.json.d.ts +1 -2
  117. package/dist/locales/pt_br.json.d.ts +1 -2
  118. package/dist/{pt-br-61671668.mjs → pt-br-f73c4b3a.mjs} +1 -1
  119. package/dist/style.css +1 -1
  120. package/dist/unnnic.mjs +172 -195
  121. package/dist/unnnic.umd.js +50 -56
  122. package/dist/utils/call.d.ts +1 -2
  123. package/dist/utils/call.d.ts.map +1 -1
  124. package/package.json +2 -3
  125. package/src/assets/scss/tailwind.scss +0 -8
  126. package/src/components/Alert/Alert.vue +135 -26
  127. package/src/components/Alert/AlertBanner.vue +182 -0
  128. package/src/components/Alert/AlertCaller.vue +49 -0
  129. package/src/components/Alert/Version1dot1.vue +36 -0
  130. package/src/components/Alert/__tests__/Alert.spec.js +45 -2
  131. package/src/components/Alert/__tests__/AlertBanner.spec.js +89 -0
  132. package/src/components/Alert/__tests__/AlertCaller.spec.js +98 -0
  133. package/src/components/Alert/__tests__/Version1dot1.spec.js +21 -0
  134. package/src/components/Alert/__tests__/__snapshots__/Alert.spec.js.snap +7 -11
  135. package/src/components/Alert/__tests__/__snapshots__/Version1dot1.spec.js.snap +2 -2
  136. package/src/components/Button/Button.vue +117 -68
  137. package/src/components/Button/types.ts +1 -0
  138. package/src/components/Checkbox/Checkbox.vue +64 -98
  139. package/src/components/Checkbox/__tests__/Checkbox.spec.js +21 -6
  140. package/src/components/FormElement/FormElement.vue +93 -63
  141. package/src/components/Icon.vue +0 -3
  142. package/src/components/Input/BaseInput.vue +14 -33
  143. package/src/components/Input/Input.scss +21 -20
  144. package/src/components/Input/Input.vue +56 -77
  145. package/src/components/Input/TextInput.vue +68 -80
  146. package/src/components/Input/__test__/TextInput.spec.js +8 -6
  147. package/src/components/Input/__test__/__snapshots__/Input.spec.js.snap +5 -14
  148. package/src/components/Input/__test__/__snapshots__/TextInput.spec.js.snap +1 -1
  149. package/src/components/Label/Label.vue +21 -52
  150. package/src/components/Label/__tests__/Label.spec.js +1 -1
  151. package/src/components/Label/__tests__/__snapshots__/Label.spec.js.snap +1 -1
  152. package/src/components/ModalDialog/ModalDialog.vue +146 -60
  153. package/src/components/ModalDialog/__tests__/__snapshots__/ModalDialog.spec.js.snap +22 -1
  154. package/src/components/Radio/Radio.vue +67 -80
  155. package/src/components/Radio/__test__/Radio.spec.js +20 -14
  156. package/src/components/Radio/__test__/__snapshots__/Radio.spec.js.snap +3 -3
  157. package/src/components/SelectSmart/SelectSmart.vue +3 -4
  158. package/src/components/Switch/Switch.vue +96 -123
  159. package/src/components/Switch/__tests__/Switch.spec.js +75 -8
  160. package/src/components/Switch/__tests__/__snapshots__/Switch.spec.js.snap +6 -5
  161. package/src/components/Tab/Tab.vue +23 -37
  162. package/src/components/Tab/__test__/__snapshots__/Tab.spec.js.snap +1 -1
  163. package/src/components/TableNext/__test__/__snapshots__/TableNext.spec.js.snap +2 -2
  164. package/src/components/TableNext/__test__/__snapshots__/TablePagination.spec.js.snap +2 -2
  165. package/src/components/TextArea/TextArea.vue +11 -34
  166. package/src/components/TextArea/__test__/__snapshots__/TextArea.spec.js.snap +3 -11
  167. package/src/components/index.ts +9 -58
  168. package/src/locales/en.json +1 -2
  169. package/src/locales/es.json +1 -2
  170. package/src/locales/pt_br.json +1 -2
  171. package/src/stories/Alert.stories.js +67 -6
  172. package/src/stories/Button.stories.js +39 -29
  173. package/src/stories/Checkbox.stories.js +4 -11
  174. package/src/stories/Input.stories.js +76 -71
  175. package/src/stories/Label.stories.js +0 -7
  176. package/src/stories/ModalDialog.mdx +0 -3
  177. package/src/stories/ModalDialog.stories.js +1 -1
  178. package/src/stories/Switch.stories.js +5 -10
  179. package/src/stories/Tab.stories.js +4 -11
  180. package/src/stories/TextArea.stories.js +2 -13
  181. package/src/types/scheme-colors.d.ts +0 -1
  182. package/src/utils/call.js +18 -46
  183. package/dist/components/CheckboxGroup/CheckboxGroup.vue.d.ts +0 -28
  184. package/dist/components/CheckboxGroup/CheckboxGroup.vue.d.ts.map +0 -1
  185. package/dist/components/Toast/Toast.vue.d.ts +0 -16
  186. package/dist/components/Toast/Toast.vue.d.ts.map +0 -1
  187. package/dist/components/Toast/ToastManager.d.ts +0 -14
  188. package/dist/components/Toast/ToastManager.d.ts.map +0 -1
  189. package/dist/components/Toast/types.d.ts +0 -35
  190. package/dist/components/Toast/types.d.ts.map +0 -1
  191. package/dist/components/ui/dialog/Dialog.vue.d.ts +0 -23
  192. package/dist/components/ui/dialog/Dialog.vue.d.ts.map +0 -1
  193. package/dist/components/ui/dialog/DialogClose.vue.d.ts +0 -19
  194. package/dist/components/ui/dialog/DialogClose.vue.d.ts.map +0 -1
  195. package/dist/components/ui/dialog/DialogContent.vue.d.ts +0 -40
  196. package/dist/components/ui/dialog/DialogContent.vue.d.ts.map +0 -1
  197. package/dist/components/ui/dialog/DialogFooter.vue.d.ts +0 -25
  198. package/dist/components/ui/dialog/DialogFooter.vue.d.ts.map +0 -1
  199. package/dist/components/ui/dialog/DialogHeader.vue.d.ts +0 -29
  200. package/dist/components/ui/dialog/DialogHeader.vue.d.ts.map +0 -1
  201. package/dist/components/ui/dialog/DialogTitle.vue.d.ts +0 -23
  202. package/dist/components/ui/dialog/DialogTitle.vue.d.ts.map +0 -1
  203. package/dist/components/ui/dialog/DialogTrigger.vue.d.ts +0 -19
  204. package/dist/components/ui/dialog/DialogTrigger.vue.d.ts.map +0 -1
  205. package/dist/components/ui/dialog/index.d.ts +0 -8
  206. package/dist/components/ui/dialog/index.d.ts.map +0 -1
  207. package/dist/components/ui/popover/Popover.vue.d.ts +0 -23
  208. package/dist/components/ui/popover/Popover.vue.d.ts.map +0 -1
  209. package/dist/components/ui/popover/PopoverContent.vue.d.ts +0 -43
  210. package/dist/components/ui/popover/PopoverContent.vue.d.ts.map +0 -1
  211. package/dist/components/ui/popover/PopoverTrigger.vue.d.ts +0 -19
  212. package/dist/components/ui/popover/PopoverTrigger.vue.d.ts.map +0 -1
  213. package/dist/components/ui/popover/index.d.ts +0 -5
  214. package/dist/components/ui/popover/index.d.ts.map +0 -1
  215. package/src/assets/icons/checkbox-checked-disabled.svg +0 -3
  216. package/src/assets/icons/checkbox-checked.svg +0 -3
  217. package/src/assets/icons/checkbox-less-disabled.svg +0 -3
  218. package/src/assets/icons/checkbox-less.svg +0 -3
  219. package/src/assets/icons/radio-checked.svg +0 -3
  220. package/src/assets/icons/switch-checked-disabled.svg +0 -3
  221. package/src/assets/icons/switch-checked.svg +0 -3
  222. package/src/components/Alert/SIMPLE_MIGRATION_GUIDE.md +0 -152
  223. package/src/components/CheckboxGroup/CheckboxGroup.vue +0 -96
  224. package/src/components/Popover/__tests__/Popover.spec.js +0 -147
  225. package/src/components/Popover/__tests__/__snapshots__/Popover.spec.js.snap +0 -8
  226. package/src/components/Popover/index.vue +0 -146
  227. package/src/components/RadioGroup/RadioGroup.vue +0 -142
  228. package/src/components/Select/SelectOption.vue +0 -65
  229. package/src/components/Select/__tests__/Select.spec.js +0 -412
  230. package/src/components/Select/__tests__/SelectItem.spec.js +0 -330
  231. package/src/components/Select/__tests__/SelectOption.spec.js +0 -174
  232. package/src/components/Select/__tests__/__snapshots__/Select.spec.js.snap +0 -97
  233. package/src/components/Select/__tests__/__snapshots__/SelectItem.spec.js.snap +0 -15
  234. package/src/components/Select/__tests__/__snapshots__/SelectOption.spec.js.snap +0 -25
  235. package/src/components/Select/index.vue +0 -245
  236. package/src/components/Toast/Toast.vue +0 -246
  237. package/src/components/Toast/ToastManager.ts +0 -110
  238. package/src/components/Toast/__tests__/Toast.spec.js +0 -284
  239. package/src/components/Toast/__tests__/ToastManager.spec.js +0 -294
  240. package/src/components/Toast/types.ts +0 -57
  241. package/src/components/ui/dialog/Dialog.vue +0 -15
  242. package/src/components/ui/dialog/DialogClose.vue +0 -25
  243. package/src/components/ui/dialog/DialogContent.vue +0 -114
  244. package/src/components/ui/dialog/DialogFooter.vue +0 -46
  245. package/src/components/ui/dialog/DialogHeader.vue +0 -78
  246. package/src/components/ui/dialog/DialogTitle.vue +0 -34
  247. package/src/components/ui/dialog/DialogTrigger.vue +0 -12
  248. package/src/components/ui/dialog/index.ts +0 -7
  249. package/src/components/ui/popover/Popover.vue +0 -19
  250. package/src/components/ui/popover/PopoverContent.vue +0 -98
  251. package/src/components/ui/popover/PopoverTrigger.vue +0 -23
  252. package/src/components/ui/popover/index.ts +0 -4
  253. package/src/stories/CheckboxGroup.stories.js +0 -105
  254. package/src/stories/Dialog.stories.js +0 -832
  255. package/src/stories/Popover.stories.js +0 -306
  256. package/src/stories/RadioGroup.stories.js +0 -144
  257. package/src/stories/Select.stories.js +0 -158
  258. package/src/stories/Toast.mdx +0 -123
  259. package/src/stories/Toast.stories.js +0 -126
@@ -1,54 +1,51 @@
1
1
  <template>
2
- <UnnnicFormElement
3
- :label="label || $slots.label"
4
- :size="size"
5
- :disabled="disabled"
6
- :message="message"
7
- :tooltip="tooltip"
8
- :error="computedError"
9
- >
2
+ <div :class="['unnnic-form', size]">
3
+ <p
4
+ v-if="hasLabelSlot"
5
+ class="unnnic-form__label"
6
+ >
7
+ <slot name="label" />
8
+ </p>
9
+
10
+ <p
11
+ v-else-if="label"
12
+ class="unnnic-form__label"
13
+ >
14
+ {{ fullySanitize(label) }}
15
+ </p>
16
+
10
17
  <TextInput
11
18
  v-bind="$attrs"
12
19
  v-model="val"
13
20
  class="unnnic-form-input"
14
- :forceActiveStatus="forceActiveStatus"
15
21
  :placeholder="placeholder"
16
22
  :iconLeft="iconLeft"
17
23
  :iconRight="iconRight"
18
- :type="errors.length > 0 && !disabled ? 'error' : type"
24
+ :type="type"
19
25
  :iconLeftClickable="iconLeftClickable"
20
26
  :iconRightClickable="iconRightClickable"
21
27
  :hasCloudyColor="hasCloudyColor"
22
28
  :size="size"
23
29
  :mask="mask"
24
30
  :nativeType="nativeType"
25
- :maxlength="maxlength"
26
- :disabled="disabled"
27
- :readonly="readonly"
28
- :showClear="showClear"
29
- @clear="$emit('clear')"
30
31
  />
31
32
 
32
- <template
33
- v-if="maxlength && showMaxlengthCounter"
34
- #rightMessage
33
+ <p
34
+ v-if="message"
35
+ class="unnnic-form__message"
35
36
  >
36
- {{ (val || '').length }} / {{ maxlength }}
37
- </template>
38
- </UnnnicFormElement>
37
+ {{ fullySanitize(message) }}
38
+ </p>
39
+ </div>
39
40
  </template>
40
41
 
41
42
  <script>
42
43
  import { fullySanitize } from '../../utils/sanitize';
43
44
  import TextInput from './TextInput.vue';
44
- import UnnnicFormElement from '../FormElement/FormElement.vue';
45
45
 
46
46
  export default {
47
47
  name: 'UnnnicInput',
48
- components: {
49
- TextInput,
50
- UnnnicFormElement,
51
- },
48
+ components: { TextInput },
52
49
  props: {
53
50
  placeholder: {
54
51
  type: String,
@@ -71,23 +68,19 @@ export default {
71
68
  },
72
69
  message: {
73
70
  type: String,
74
- default: '',
75
- },
76
- errors: {
77
- type: [String, Array],
78
- default: '',
71
+ default: null,
79
72
  },
80
73
  label: {
81
74
  type: String,
82
- default: '',
75
+ default: null,
83
76
  },
84
77
  iconLeft: {
85
78
  type: String,
86
- default: '',
79
+ default: null,
87
80
  },
88
81
  iconRight: {
89
82
  type: String,
90
- default: '',
83
+ default: null,
91
84
  },
92
85
  allowTogglePassword: {
93
86
  type: Boolean,
@@ -95,11 +88,11 @@ export default {
95
88
  },
96
89
  iconLeftClickable: {
97
90
  type: Boolean,
98
- default: false,
91
+ default: null,
99
92
  },
100
93
  iconRightClickable: {
101
94
  type: Boolean,
102
- default: false,
95
+ default: null,
103
96
  },
104
97
  hasCloudyColor: {
105
98
  type: Boolean,
@@ -113,50 +106,16 @@ export default {
113
106
  type: [String, Array],
114
107
  default: '',
115
108
  },
116
- tooltip: {
117
- type: String,
118
- default: '',
119
- },
120
- maxlength: {
121
- type: [Number, null],
122
- default: null,
123
- },
124
- showMaxlengthCounter: {
125
- type: Boolean,
126
- default: false,
127
- },
128
- disabled: {
129
- type: Boolean,
130
- default: false,
131
- },
132
- readonly: {
133
- type: Boolean,
134
- default: false,
135
- },
136
- forceActiveStatus: {
137
- type: Boolean,
138
- default: false,
139
- },
140
- showClear: {
141
- type: Boolean,
142
- default: false,
143
- },
144
109
  },
145
-
146
- emits: ['update:modelValue', 'clear'],
147
-
110
+ emits: ['update:modelValue'],
148
111
  data() {
149
112
  return {
150
113
  val: this.modelValue,
151
114
  };
152
115
  },
153
116
  computed: {
154
- computedError() {
155
- if (Array.isArray(this.errors)) {
156
- return this.errors.join(', ') || this.type === 'error';
157
- }
158
-
159
- return this.errors || this.type === 'error';
117
+ hasLabelSlot() {
118
+ return !!this.$slots.label;
160
119
  },
161
120
  },
162
121
  watch: {
@@ -177,9 +136,29 @@ export default {
177
136
  </script>
178
137
 
179
138
  <style lang="scss" scoped>
180
- * {
181
- margin: 0;
182
- padding: 0;
183
- box-sizing: border-box;
139
+ @use '@/assets/scss/unnnic' as *;
140
+
141
+ .unnnic-form {
142
+ font-family: $unnnic-font-family-secondary;
143
+ position: relative;
144
+
145
+ &__message {
146
+ font-size: $unnnic-font-size-body-md;
147
+ margin: $unnnic-spacing-stack-nano 0;
148
+ color: $unnnic-color-feedback-red;
149
+ }
150
+
151
+ &__label {
152
+ font-weight: $unnnic-font-weight-regular;
153
+ line-height: $unnnic-font-size-body-gt + $unnnic-line-height-medium;
154
+ font-size: $unnnic-font-size-body-gt;
155
+ color: $unnnic-color-neutral-cloudy;
156
+ margin: $unnnic-spacing-stack-xs 0;
157
+ }
158
+
159
+ &.sm &__label {
160
+ font-size: $unnnic-font-size-body-md;
161
+ line-height: $unnnic-font-size-body-md + $unnnic-line-height-medium;
162
+ }
184
163
  }
185
164
  </style>
@@ -1,5 +1,11 @@
1
1
  <template>
2
- <div :class="['text-input', `size--${size}`]">
2
+ <div
3
+ :class="[
4
+ 'text-input',
5
+ `size--${size}`,
6
+ `text-input--icon-right-size-${iconRightSize}`,
7
+ ]"
8
+ >
3
9
  <BaseInput
4
10
  v-bind="attributes"
5
11
  ref="base-input"
@@ -12,10 +18,6 @@
12
18
  class="input-itself"
13
19
  :hasIconLeft="!!iconLeft"
14
20
  :hasIconRight="!!iconRight || allowTogglePassword"
15
- :hasClearIcon="showClear"
16
- :maxlength="maxlength"
17
- :readonly="readonly"
18
- :forceActiveStatus="forceActiveStatus"
19
21
  @focus="onFocus"
20
22
  @blur="onBlur"
21
23
  />
@@ -24,34 +26,24 @@
24
26
  v-if="iconLeft"
25
27
  :scheme="iconScheme"
26
28
  :icon="iconLeft"
27
- size="ant"
29
+ size="sm"
28
30
  :clickable="iconLeftClickable"
29
31
  :class="['icon-left', { clickable: iconLeftClickable }]"
30
32
  @click="onIconLeftClick"
31
33
  />
32
34
 
33
- <section class="icon-right-container">
34
- <UnnnicIcon
35
- v-if="showClear"
36
- class="icon-clear"
37
- :scheme="iconScheme"
38
- icon="close"
39
- size="ant"
40
- clickable
41
- @click.stop="onClearClick"
42
- />
43
-
44
- <UnnnicIcon
45
- v-if="iconRightSvg"
46
- :scheme="iconScheme"
47
- :icon="iconRightSvg"
48
- size="ant"
49
- :clickable="iconRightClickable || allowTogglePassword"
50
- class="icon-right"
51
- :class="{ clickable: iconRightClickable || allowTogglePassword }"
52
- @click="onIconRightClick"
53
- />
54
- </section>
35
+ <UnnnicIcon
36
+ v-if="iconRightSvg"
37
+ :scheme="iconScheme"
38
+ :icon="iconRightSvg"
39
+ :size="iconRightSize"
40
+ :clickable="iconRightClickable || allowTogglePassword"
41
+ :class="[
42
+ 'icon-right',
43
+ { clickable: iconRightClickable || allowTogglePassword },
44
+ ]"
45
+ @click="onIconRightClick"
46
+ />
55
47
  </div>
56
48
  </template>
57
49
 
@@ -100,36 +92,24 @@ export default {
100
92
  type: Boolean,
101
93
  default: null,
102
94
  },
95
+ iconRightSize: {
96
+ type: String,
97
+ default: 'sm',
98
+ },
103
99
  allowTogglePassword: {
104
100
  type: Boolean,
105
101
  default: null,
106
102
  },
103
+ hasCloudyColor: {
104
+ type: Boolean,
105
+ default: null,
106
+ },
107
107
  size: {
108
108
  type: String,
109
109
  default: 'md',
110
110
  },
111
- maxlength: {
112
- type: Number,
113
- default: null,
114
- },
115
- disabled: {
116
- type: Boolean,
117
- default: false,
118
- },
119
- readonly: {
120
- type: Boolean,
121
- default: false,
122
- },
123
- forceActiveStatus: {
124
- type: Boolean,
125
- default: false,
126
- },
127
- showClear: {
128
- type: Boolean,
129
- default: false,
130
- },
131
111
  },
132
- emits: ['icon-left-click', 'icon-right-click', 'clear'],
112
+ emits: ['icon-left-click', 'icon-right-click'],
133
113
  data() {
134
114
  return {
135
115
  isFocused: false,
@@ -138,7 +118,7 @@ export default {
138
118
  },
139
119
  computed: {
140
120
  isDisabled() {
141
- return this.$attrs.disabled || this.disabled;
121
+ return this.$attrs.disabled;
142
122
  },
143
123
 
144
124
  iconRightSvg() {
@@ -150,15 +130,23 @@ export default {
150
130
  },
151
131
 
152
132
  iconScheme() {
133
+ if (this.type === 'error') {
134
+ return 'aux-red-500';
135
+ }
136
+
153
137
  if (this.isDisabled) {
154
- return 'fg-muted';
138
+ return 'neutral-cleanest';
139
+ }
140
+
141
+ if (this.modelValue || this.isFocused) {
142
+ return 'neutral-dark';
155
143
  }
156
144
 
157
- if (this.forceActiveStatus) {
158
- return 'color-gray-700';
145
+ if (this.hasCloudyColor) {
146
+ return 'neutral-cloudy';
159
147
  }
160
148
 
161
- return 'fg-base';
149
+ return 'neutral-cloudy';
162
150
  },
163
151
 
164
152
  attributes() {
@@ -183,10 +171,6 @@ export default {
183
171
  if (this.iconLeftClickable) this.$emit('icon-left-click');
184
172
  },
185
173
 
186
- onClearClick() {
187
- this.$emit('clear');
188
- },
189
-
190
174
  onIconRightClick() {
191
175
  if (this.attributes.disabled) return;
192
176
  if (this.allowTogglePassword) this.showPassword = !this.showPassword;
@@ -199,38 +183,42 @@ export default {
199
183
  <style lang="scss" scoped>
200
184
  @use '@/assets/scss/unnnic' as *;
201
185
 
202
- .text-input {
203
- position: relative;
204
- }
205
-
206
186
  .icon {
207
- &-left {
208
- position: absolute;
209
- top: 50%;
210
- transform: translateY(-50%);
211
- left: $unnnic-space-4;
212
-
187
+ &-left,
188
+ &-right {
213
189
  &:not(.clickable) {
214
190
  pointer-events: none;
215
191
  }
216
192
  }
217
193
 
218
- &-right-container {
194
+ &-left {
219
195
  position: absolute;
220
- top: 50%;
221
- transform: translateY(-50%);
222
- right: $unnnic-space-4;
196
+ top: $unnnic-spacing-ant + 0.1875 * $unnnic-font-size;
197
+ left: $unnnic-inline-sm - $unnnic-border-width-thinner;
198
+ }
223
199
 
224
- display: flex;
225
- align-items: center;
226
- gap: $unnnic-space-2;
200
+ &-right {
201
+ position: absolute;
202
+ top: $unnnic-spacing-ant + 0.1875 * $unnnic-font-size;
203
+ right: $unnnic-inline-sm - $unnnic-border-width-thinner;
204
+ }
205
+ }
206
+ .text-input {
207
+ position: relative;
227
208
 
228
- .icon-clear {
229
- cursor: pointer;
230
- }
231
- .icon-right:not(.clickable) {
232
- pointer-events: none;
209
+ &.size--sm {
210
+ .icon-left,
211
+ .icon-right {
212
+ top: $unnnic-spacing-xs + 0.125 * $unnnic-font-size;
233
213
  }
234
214
  }
215
+
216
+ &.size--sm.text-input--icon-right-size-ant .icon-right {
217
+ top: 0.5625 * $unnnic-font-size;
218
+ }
219
+
220
+ &.size--md.text-input--icon-right-size-ant .icon-right {
221
+ top: 0.8125 * $unnnic-font-size;
222
+ }
235
223
  }
236
224
  </style>
@@ -19,6 +19,7 @@ describe('TextInput.vue', () => {
19
19
  iconLeftClickable: true,
20
20
  iconRightClickable: true,
21
21
  allowTogglePassword: false,
22
+ hasCloudyColor: false,
22
23
  size: 'md',
23
24
  },
24
25
  global: {
@@ -73,21 +74,22 @@ describe('TextInput.vue', () => {
73
74
 
74
75
  test('computes the correct iconScheme based on various states', async () => {
75
76
  await wrapper.setProps({ type: 'error' });
76
- expect(wrapper.vm.iconScheme).toBe('fg-base');
77
+ expect(wrapper.vm.iconScheme).toBe('aux-red-500');
77
78
 
78
79
  await wrapper.setProps({ type: 'normal' });
79
80
  await wrapper.setData({ isDisabled: true });
80
- expect(wrapper.vm.iconScheme).toBe('fg-base');
81
+ expect(wrapper.vm.iconScheme).toBe('neutral-cloudy');
81
82
 
82
83
  await wrapper.setData({ isDisabled: false });
83
84
  await wrapper.setProps({ modelValue: 'text' });
84
- expect(wrapper.vm.iconScheme).toBe('fg-base');
85
+ expect(wrapper.vm.iconScheme).toBe('neutral-dark');
85
86
 
86
87
  await wrapper.setData({ isFocused: true });
87
- expect(wrapper.vm.iconScheme).toBe('fg-base');
88
+ expect(wrapper.vm.iconScheme).toBe('neutral-dark');
88
89
 
89
- await wrapper.setProps({ disabled: true });
90
- expect(wrapper.vm.iconScheme).toBe('fg-muted');
90
+ await wrapper.setProps({ hasCloudyColor: true, modelValue: '' });
91
+ await wrapper.setData({ isFocused: false });
92
+ expect(wrapper.vm.iconScheme).toBe('neutral-cloudy');
91
93
  });
92
94
 
93
95
  test('attributes computed property returns combined attributes and props', () => {
@@ -1,18 +1,9 @@
1
1
  // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2
2
 
3
3
  exports[`Input.vue > matches the snapshot 1`] = `
4
- "<section data-v-9f8d6c86="" data-v-d890ad85="" class="unnnic-form-element">
5
- <section data-v-7f222291="" data-v-9f8d6c86="" class="unnnic-label unnnic-form-element__label">
6
- <p data-v-7f222291="" class="unnnic-label__label">Sample Label</p>
7
- <!--v-if-->
8
- </section>
9
- <div data-v-a0d36167="" data-v-d890ad85="" class="text-input size--md unnnic-form-input" hascloudycolor="false" mask="####-####"><input data-v-86533b41="" data-v-a0d36167="" class="unnnic-form-input input-itself input size-md normal input--has-icon-left input--has-icon-right unnnic-form-input input-itself" hascloudycolor="false" placeholder="Enter text" iconleft="search" iconright="clear" iconleftclickable="true" iconrightclickable="true" type="text" value=""><span data-v-26446d8e="" data-v-a0d36167="" class="unnnic-icon material-symbols-rounded unnnic-icon-scheme--fg-base unnnic-icon-size--ant unnnic-icon__size--ant unnnic--clickable icon-left clickable" data-testid="material-icon" translate="no">search</span><span data-v-26446d8e="" data-v-a0d36167="" class="unnnic-icon material-symbols-rounded unnnic-icon-scheme--fg-base unnnic-icon-size--ant unnnic-icon__size--ant unnnic--clickable icon-right clickable" data-testid="material-icon" translate="no">clear</span></div>
10
- <section data-v-9f8d6c86="" class="unnnic-form-element__hints-container">
11
- <section data-v-9f8d6c86="" class="unnnic-form-element__message-container">
12
- <p data-v-9f8d6c86="" class="unnnic-form-element__message">Error message</p>
13
- <!--v-if-->
14
- </section>
15
- <!--v-if-->
16
- </section>
17
- </section>"
4
+ "<div data-v-d890ad85="" class="unnnic-form md">
5
+ <p data-v-d890ad85="" class="unnnic-form__label">Sample Label</p>
6
+ <div data-v-a0d36167="" data-v-d890ad85="" class="text-input size--md text-input--icon-right-size-sm unnnic-form-input" mask="####-####"><input data-v-86533b41="" data-v-a0d36167="" class="unnnic-form-input input-itself input size-md normal input--has-icon-left input--has-icon-right unnnic-form-input input-itself" placeholder="Enter text" iconleft="search" iconright="clear" iconleftclickable="true" iconrightclickable="true" iconrightsize="sm" hascloudycolor="false" type="text" value=""><span data-v-26446d8e="" data-v-a0d36167="" class="unnnic-icon material-symbols-rounded unnnic-icon-scheme--neutral-cloudy unnnic-icon-size--sm unnnic-icon__size--sm unnnic--clickable icon-left clickable" data-testid="material-icon" translate="no">search</span><span data-v-26446d8e="" data-v-a0d36167="" class="unnnic-icon material-symbols-rounded unnnic-icon-scheme--neutral-cloudy unnnic-icon-size--sm unnnic-icon__size--sm unnnic--clickable icon-right clickable" data-testid="material-icon" translate="no">clear</span></div>
7
+ <p data-v-d890ad85="" class="unnnic-form__message">Error message</p>
8
+ </div>"
18
9
  `;
@@ -1,3 +1,3 @@
1
1
  // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2
2
 
3
- exports[`TextInput.vue > matches the snapshot 1`] = `"<div data-v-a0d36167="" class="text-input size--md"><input data-v-86533b41="" data-v-a0d36167="" placeholder="Enter text" iconleft="search" iconright="clear" iconleftclickable="true" iconrightclickable="true" allowtogglepassword="false" class="input-itself input size-md normal input--has-icon-left input--has-icon-right input-itself" type="text" value=""><span data-v-26446d8e="" data-v-a0d36167="" class="unnnic-icon material-symbols-rounded unnnic-icon-scheme--fg-base unnnic-icon-size--ant unnnic-icon__size--ant unnnic--clickable icon-left clickable" data-testid="material-icon" translate="no">search</span><span data-v-26446d8e="" data-v-a0d36167="" class="unnnic-icon material-symbols-rounded unnnic-icon-scheme--fg-base unnnic-icon-size--ant unnnic-icon__size--ant unnnic--clickable icon-right clickable" data-testid="material-icon" translate="no">clear</span></div>"`;
3
+ exports[`TextInput.vue > matches the snapshot 1`] = `"<div data-v-a0d36167="" class="text-input size--md text-input--icon-right-size-sm"><input data-v-86533b41="" data-v-a0d36167="" placeholder="Enter text" iconleft="search" iconright="clear" iconleftclickable="true" iconrightclickable="true" iconrightsize="sm" allowtogglepassword="false" hascloudycolor="false" class="input-itself input size-md normal input--has-icon-left input--has-icon-right input-itself" type="text" value=""><span data-v-26446d8e="" data-v-a0d36167="" class="unnnic-icon material-symbols-rounded unnnic-icon-scheme--neutral-cloudy unnnic-icon-size--sm unnnic-icon__size--sm unnnic--clickable icon-left clickable" data-testid="material-icon" translate="no">search</span><span data-v-26446d8e="" data-v-a0d36167="" class="unnnic-icon material-symbols-rounded unnnic-icon-scheme--neutral-cloudy unnnic-icon-size--sm unnnic-icon__size--sm unnnic--clickable icon-right clickable" data-testid="material-icon" translate="no">clear</span></div>"`;
@@ -1,65 +1,34 @@
1
1
  <template>
2
- <section class="unnnic-label">
3
- <p class="unnnic-label__label">{{ fullySanitize(props.label) }}</p>
4
- <UnnnicToolTip
5
- v-if="tooltip"
6
- enabled
7
- :text="tooltip"
8
- :enableHtml="props.useHtmlTooltip"
9
- >
10
- <UnnnicIcon
11
- icon="help"
12
- size="sm"
13
- scheme="fg-base"
14
- />
15
- </UnnnicToolTip>
16
- </section>
2
+ <p class="unnnic-label__label">{{ fullySanitize(label) }}</p>
17
3
  </template>
18
4
 
19
- <script setup lang="ts">
20
- import { fullySanitize } from '@/utils/sanitize';
21
-
22
- import UnnnicToolTip from '../ToolTip/ToolTip.vue';
23
- import UnnnicIcon from '../Icon.vue';
24
-
25
- defineOptions({
5
+ <script>
6
+ import { fullySanitize } from '../../utils/sanitize';
7
+ export default {
26
8
  name: 'UnnnicLabel',
27
- });
28
-
29
- export interface LabelProps {
30
- label?: string;
31
- tooltip?: string;
32
- useHtmlTooltip?: boolean;
33
- }
34
-
35
- const props = withDefaults(defineProps<LabelProps>(), {
36
- label: '',
37
- tooltip: '',
38
- useHtmlTooltip: false,
39
- });
9
+ props: {
10
+ label: {
11
+ type: String,
12
+ default: null,
13
+ },
14
+ },
15
+ methods: {
16
+ fullySanitize,
17
+ },
18
+ };
40
19
  </script>
41
20
 
42
- <style lang="scss" scoped>
21
+ <style lang="scss">
43
22
  @use '@/assets/scss/unnnic' as *;
44
23
 
45
- * {
46
- box-sizing: border-box;
47
- padding: $unnnic-space-0;
48
- margin: $unnnic-space-0;
49
- }
50
-
51
24
  .unnnic-label {
52
- display: flex;
53
- align-items: center;
54
- gap: $unnnic-space-2;
55
- color: $unnnic-color-fg-base;
56
-
57
25
  &__label {
58
- font: $unnnic-font-body;
59
- }
60
-
61
- :deep(.unnnic-tooltip) {
62
- display: flex;
26
+ font-family: $unnnic-font-family-secondary;
27
+ font-weight: $unnnic-font-weight-regular;
28
+ line-height: $unnnic-font-size-body-gt + $unnnic-line-height-medium;
29
+ font-size: $unnnic-font-size-body-gt;
30
+ color: $unnnic-color-neutral-cloudy;
31
+ margin: $unnnic-spacing-stack-xs 0;
63
32
  }
64
33
  }
65
34
  </style>
@@ -24,7 +24,7 @@ describe('Label', () => {
24
24
  });
25
25
 
26
26
  it('applies the correct classes and styles', () => {
27
- const label = wrapper.find('.unnnic-label__label');
27
+ const label = wrapper.findComponent('.unnnic-label__label');
28
28
  expect(label.html()).toMatchSnapshot();
29
29
  });
30
30
  });
@@ -1,3 +1,3 @@
1
1
  // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2
2
 
3
- exports[`Label > applies the correct classes and styles 1`] = `"<p data-v-7f222291="" class="unnnic-label__label">Label Test</p>"`;
3
+ exports[`Label > applies the correct classes and styles 1`] = `"<p class="unnnic-label__label">Label Test</p>"`;