@weni/unnnic-system 3.7.1-alpha.1 → 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 (261) 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 +15 -10
  81. package/dist/components/ModalUpload/ModalUpload.vue.d.ts.map +1 -1
  82. package/dist/components/MoodRating/MoodRating.vue.d.ts +1 -1
  83. package/dist/components/MultiSelect/MultiSelect.vue.d.ts +14 -20
  84. package/dist/components/Pagination/Pagination.vue.d.ts +3 -3
  85. package/dist/components/ProgressBar/ProgressBar.vue.d.ts +1 -1
  86. package/dist/components/Radio/Radio.vue.d.ts +6 -8
  87. package/dist/components/Radio/Radio.vue.d.ts.map +1 -1
  88. package/dist/components/SelectSmart/SelectSmart.vue.d.ts +60 -113
  89. package/dist/components/SelectSmart/SelectSmartMultipleHeader.vue.d.ts +5 -5
  90. package/dist/components/SelectSmart/SelectSmartOption.vue.d.ts +28 -21
  91. package/dist/components/SelectSmart/SelectSmartOption.vue.d.ts.map +1 -1
  92. package/dist/components/SelectTime/index.vue.d.ts +25 -85
  93. package/dist/components/SkeletonLoading/skeletonTheme.vue.d.ts +1 -1
  94. package/dist/components/Slider/Slider.vue.d.ts +2 -2
  95. package/dist/components/StarRating/StarRating.vue.d.ts +1 -1
  96. package/dist/components/Switch/Switch.vue.d.ts +21 -55
  97. package/dist/components/Switch/Switch.vue.d.ts.map +1 -1
  98. package/dist/components/Tab/Tab.vue.d.ts +2 -13
  99. package/dist/components/TableNext/TableBodyCell.vue.d.ts +2 -2
  100. package/dist/components/TableNext/TablePagination.vue.d.ts +3 -3
  101. package/dist/components/TabsExpanded/TabsExpanded.vue.d.ts +1 -1
  102. package/dist/components/Tag/BrandTag.vue.d.ts +1 -1
  103. package/dist/components/Tag/DefaultTag.vue.d.ts +1 -1
  104. package/dist/components/Tag/IndicatorTag.vue.d.ts +2 -2
  105. package/dist/components/Tag/Tag.vue.d.ts +5 -5
  106. package/dist/components/TextArea/TextArea.vue.d.ts +30 -66
  107. package/dist/components/TextArea/TextArea.vue.d.ts.map +1 -1
  108. package/dist/components/ToolTip/ToolTip.vue.d.ts +1 -1
  109. package/dist/components/Tour/Tour.vue.d.ts +3 -3
  110. package/dist/components/Tour/TourPopover.vue.d.ts +3 -3
  111. package/dist/components/UploadArea/UploadArea.vue.d.ts +4 -4
  112. package/dist/components/index.d.ts +1352 -4057
  113. package/dist/components/index.d.ts.map +1 -1
  114. package/dist/{es-0331f100.mjs → es-484b4c46.mjs} +1 -1
  115. package/dist/{index-5e29f949.mjs → index-dc007393.mjs} +11929 -18885
  116. package/dist/locales/en.json.d.ts +1 -2
  117. package/dist/locales/es.json.d.ts +1 -2
  118. package/dist/locales/pt_br.json.d.ts +1 -2
  119. package/dist/{pt-br-cbd34d50.mjs → pt-br-f73c4b3a.mjs} +1 -1
  120. package/dist/style.css +1 -1
  121. package/dist/unnnic.mjs +172 -195
  122. package/dist/unnnic.umd.js +50 -56
  123. package/dist/utils/call.d.ts +1 -2
  124. package/dist/utils/call.d.ts.map +1 -1
  125. package/package.json +2 -3
  126. package/src/assets/scss/tailwind.scss +0 -8
  127. package/src/components/Alert/Alert.vue +135 -26
  128. package/src/components/Alert/AlertBanner.vue +182 -0
  129. package/src/components/Alert/AlertCaller.vue +49 -0
  130. package/src/components/Alert/Version1dot1.vue +36 -0
  131. package/src/components/Alert/__tests__/Alert.spec.js +45 -2
  132. package/src/components/Alert/__tests__/AlertBanner.spec.js +89 -0
  133. package/src/components/Alert/__tests__/AlertCaller.spec.js +98 -0
  134. package/src/components/Alert/__tests__/Version1dot1.spec.js +21 -0
  135. package/src/components/Alert/__tests__/__snapshots__/Alert.spec.js.snap +7 -11
  136. package/src/components/Alert/__tests__/__snapshots__/Version1dot1.spec.js.snap +2 -2
  137. package/src/components/Button/Button.vue +117 -68
  138. package/src/components/Button/types.ts +1 -0
  139. package/src/components/Checkbox/Checkbox.vue +64 -98
  140. package/src/components/Checkbox/__tests__/Checkbox.spec.js +21 -6
  141. package/src/components/FormElement/FormElement.vue +93 -63
  142. package/src/components/Icon.vue +0 -3
  143. package/src/components/Input/BaseInput.vue +14 -33
  144. package/src/components/Input/Input.scss +21 -20
  145. package/src/components/Input/Input.vue +56 -77
  146. package/src/components/Input/TextInput.vue +68 -80
  147. package/src/components/Input/__test__/TextInput.spec.js +8 -6
  148. package/src/components/Input/__test__/__snapshots__/Input.spec.js.snap +5 -14
  149. package/src/components/Input/__test__/__snapshots__/TextInput.spec.js.snap +1 -1
  150. package/src/components/Label/Label.vue +21 -52
  151. package/src/components/Label/__tests__/Label.spec.js +1 -1
  152. package/src/components/Label/__tests__/__snapshots__/Label.spec.js.snap +1 -1
  153. package/src/components/ModalDialog/ModalDialog.vue +146 -60
  154. package/src/components/ModalDialog/__tests__/__snapshots__/ModalDialog.spec.js.snap +22 -1
  155. package/src/components/ModalUpload/ModalUpload.vue +2 -0
  156. package/src/components/Radio/Radio.vue +67 -80
  157. package/src/components/Radio/__test__/Radio.spec.js +20 -14
  158. package/src/components/Radio/__test__/__snapshots__/Radio.spec.js.snap +3 -3
  159. package/src/components/SelectSmart/SelectSmart.vue +3 -4
  160. package/src/components/Switch/Switch.vue +96 -123
  161. package/src/components/Switch/__tests__/Switch.spec.js +75 -8
  162. package/src/components/Switch/__tests__/__snapshots__/Switch.spec.js.snap +6 -5
  163. package/src/components/Tab/Tab.vue +23 -37
  164. package/src/components/Tab/__test__/__snapshots__/Tab.spec.js.snap +1 -1
  165. package/src/components/TableNext/__test__/__snapshots__/TableNext.spec.js.snap +2 -2
  166. package/src/components/TableNext/__test__/__snapshots__/TablePagination.spec.js.snap +2 -2
  167. package/src/components/TextArea/TextArea.vue +11 -34
  168. package/src/components/TextArea/__test__/__snapshots__/TextArea.spec.js.snap +3 -11
  169. package/src/components/index.ts +9 -58
  170. package/src/locales/en.json +1 -2
  171. package/src/locales/es.json +1 -2
  172. package/src/locales/pt_br.json +1 -2
  173. package/src/stories/Alert.stories.js +67 -6
  174. package/src/stories/Button.stories.js +39 -29
  175. package/src/stories/Checkbox.stories.js +4 -11
  176. package/src/stories/Input.stories.js +76 -71
  177. package/src/stories/Label.stories.js +0 -7
  178. package/src/stories/ModalDialog.mdx +0 -3
  179. package/src/stories/ModalDialog.stories.js +1 -1
  180. package/src/stories/Switch.stories.js +5 -10
  181. package/src/stories/Tab.stories.js +4 -11
  182. package/src/stories/TextArea.stories.js +2 -13
  183. package/src/types/scheme-colors.d.ts +0 -1
  184. package/src/utils/call.js +18 -46
  185. package/dist/components/CheckboxGroup/CheckboxGroup.vue.d.ts +0 -28
  186. package/dist/components/CheckboxGroup/CheckboxGroup.vue.d.ts.map +0 -1
  187. package/dist/components/Toast/Toast.vue.d.ts +0 -16
  188. package/dist/components/Toast/Toast.vue.d.ts.map +0 -1
  189. package/dist/components/Toast/ToastManager.d.ts +0 -14
  190. package/dist/components/Toast/ToastManager.d.ts.map +0 -1
  191. package/dist/components/Toast/types.d.ts +0 -35
  192. package/dist/components/Toast/types.d.ts.map +0 -1
  193. package/dist/components/ui/dialog/Dialog.vue.d.ts +0 -23
  194. package/dist/components/ui/dialog/Dialog.vue.d.ts.map +0 -1
  195. package/dist/components/ui/dialog/DialogClose.vue.d.ts +0 -19
  196. package/dist/components/ui/dialog/DialogClose.vue.d.ts.map +0 -1
  197. package/dist/components/ui/dialog/DialogContent.vue.d.ts +0 -40
  198. package/dist/components/ui/dialog/DialogContent.vue.d.ts.map +0 -1
  199. package/dist/components/ui/dialog/DialogFooter.vue.d.ts +0 -25
  200. package/dist/components/ui/dialog/DialogFooter.vue.d.ts.map +0 -1
  201. package/dist/components/ui/dialog/DialogHeader.vue.d.ts +0 -29
  202. package/dist/components/ui/dialog/DialogHeader.vue.d.ts.map +0 -1
  203. package/dist/components/ui/dialog/DialogTitle.vue.d.ts +0 -23
  204. package/dist/components/ui/dialog/DialogTitle.vue.d.ts.map +0 -1
  205. package/dist/components/ui/dialog/DialogTrigger.vue.d.ts +0 -19
  206. package/dist/components/ui/dialog/DialogTrigger.vue.d.ts.map +0 -1
  207. package/dist/components/ui/dialog/index.d.ts +0 -8
  208. package/dist/components/ui/dialog/index.d.ts.map +0 -1
  209. package/dist/components/ui/popover/Popover.vue.d.ts +0 -23
  210. package/dist/components/ui/popover/Popover.vue.d.ts.map +0 -1
  211. package/dist/components/ui/popover/PopoverContent.vue.d.ts +0 -43
  212. package/dist/components/ui/popover/PopoverContent.vue.d.ts.map +0 -1
  213. package/dist/components/ui/popover/PopoverTrigger.vue.d.ts +0 -19
  214. package/dist/components/ui/popover/PopoverTrigger.vue.d.ts.map +0 -1
  215. package/dist/components/ui/popover/index.d.ts +0 -5
  216. package/dist/components/ui/popover/index.d.ts.map +0 -1
  217. package/src/assets/icons/checkbox-checked-disabled.svg +0 -3
  218. package/src/assets/icons/checkbox-checked.svg +0 -3
  219. package/src/assets/icons/checkbox-less-disabled.svg +0 -3
  220. package/src/assets/icons/checkbox-less.svg +0 -3
  221. package/src/assets/icons/radio-checked.svg +0 -3
  222. package/src/assets/icons/switch-checked-disabled.svg +0 -3
  223. package/src/assets/icons/switch-checked.svg +0 -3
  224. package/src/components/Alert/SIMPLE_MIGRATION_GUIDE.md +0 -152
  225. package/src/components/CheckboxGroup/CheckboxGroup.vue +0 -96
  226. package/src/components/Popover/__tests__/Popover.spec.js +0 -147
  227. package/src/components/Popover/__tests__/__snapshots__/Popover.spec.js.snap +0 -8
  228. package/src/components/Popover/index.vue +0 -146
  229. package/src/components/RadioGroup/RadioGroup.vue +0 -142
  230. package/src/components/Select/SelectOption.vue +0 -65
  231. package/src/components/Select/__tests__/Select.spec.js +0 -412
  232. package/src/components/Select/__tests__/SelectItem.spec.js +0 -330
  233. package/src/components/Select/__tests__/SelectOption.spec.js +0 -174
  234. package/src/components/Select/__tests__/__snapshots__/Select.spec.js.snap +0 -97
  235. package/src/components/Select/__tests__/__snapshots__/SelectItem.spec.js.snap +0 -15
  236. package/src/components/Select/__tests__/__snapshots__/SelectOption.spec.js.snap +0 -25
  237. package/src/components/Select/index.vue +0 -245
  238. package/src/components/Toast/Toast.vue +0 -246
  239. package/src/components/Toast/ToastManager.ts +0 -110
  240. package/src/components/Toast/__tests__/Toast.spec.js +0 -284
  241. package/src/components/Toast/__tests__/ToastManager.spec.js +0 -294
  242. package/src/components/Toast/types.ts +0 -57
  243. package/src/components/ui/dialog/Dialog.vue +0 -15
  244. package/src/components/ui/dialog/DialogClose.vue +0 -25
  245. package/src/components/ui/dialog/DialogContent.vue +0 -114
  246. package/src/components/ui/dialog/DialogFooter.vue +0 -46
  247. package/src/components/ui/dialog/DialogHeader.vue +0 -78
  248. package/src/components/ui/dialog/DialogTitle.vue +0 -34
  249. package/src/components/ui/dialog/DialogTrigger.vue +0 -12
  250. package/src/components/ui/dialog/index.ts +0 -7
  251. package/src/components/ui/popover/Popover.vue +0 -19
  252. package/src/components/ui/popover/PopoverContent.vue +0 -98
  253. package/src/components/ui/popover/PopoverTrigger.vue +0 -23
  254. package/src/components/ui/popover/index.ts +0 -4
  255. package/src/stories/CheckboxGroup.stories.js +0 -105
  256. package/src/stories/Dialog.stories.js +0 -832
  257. package/src/stories/Popover.stories.js +0 -306
  258. package/src/stories/RadioGroup.stories.js +0 -144
  259. package/src/stories/Select.stories.js +0 -158
  260. package/src/stories/Toast.mdx +0 -123
  261. 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>"`;