@nexdom/uimed-vue 2.0.0-beta.8 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (222) hide show
  1. package/README.md +1 -1
  2. package/dist/_virtual/_rolldown/runtime.js +7 -0
  3. package/dist/components/app-bar/app-bar.js +5 -0
  4. package/dist/components/app-bar/app-bar.vue_vue_type_script_setup_true_lang.js +286 -0
  5. package/dist/components/app-bar/types.d.ts +96 -0
  6. package/dist/components/button/button.js +5 -0
  7. package/dist/components/button/button.vue.d.ts +31 -0
  8. package/dist/components/button/button.vue_vue_type_script_setup_true_lang.js +97 -0
  9. package/dist/components/button/types.d.ts +65 -0
  10. package/dist/components/data-sets/data-set/data-set.js +5 -0
  11. package/dist/components/data-sets/data-set/data-set.vue.d.ts +47 -0
  12. package/dist/components/data-sets/data-set/data-set.vue_vue_type_script_setup_true_lang.js +157 -0
  13. package/dist/components/data-sets/data-set/types.d.ts +93 -0
  14. package/dist/components/data-sets/data-set-bar.js +5 -0
  15. package/dist/components/data-sets/data-set-bar.vue_vue_type_script_setup_true_lang.js +99 -0
  16. package/dist/components/data-sets/data-set-item/data-set-item.js +5 -0
  17. package/dist/components/data-sets/data-set-item/data-set-item.vue.d.ts +35 -0
  18. package/dist/components/data-sets/data-set-item/data-set-item.vue_vue_type_script_setup_true_lang.js +57 -0
  19. package/dist/components/data-sets/data-set-item/types.d.ts +42 -0
  20. package/dist/components/details/details.js +5 -0
  21. package/dist/components/details/details.vue.d.ts +28 -0
  22. package/dist/components/details/details.vue_vue_type_script_setup_true_lang.js +56 -0
  23. package/dist/components/details/types.d.ts +29 -0
  24. package/dist/components/dialogs/dialog/dialog-host-key.js +10 -0
  25. package/dist/components/dialogs/dialog/dialog.js +5 -0
  26. package/dist/components/dialogs/dialog/dialog.vue.d.ts +36 -0
  27. package/dist/components/dialogs/dialog/dialog.vue_vue_type_script_setup_true_lang.js +112 -0
  28. package/dist/components/dialogs/dialog/types.d.ts +47 -0
  29. package/dist/components/dialogs/dialog-host.js +5 -0
  30. package/dist/components/dialogs/dialog-host.vue_vue_type_script_setup_true_lang.js +81 -0
  31. package/dist/components/dialogs/toast.js +5 -0
  32. package/dist/components/dialogs/toast.vue_vue_type_script_setup_true_lang.js +35 -0
  33. package/dist/components/footer/footer.js +5 -0
  34. package/dist/components/footer/footer.vue_vue_type_script_setup_true_lang.js +31 -0
  35. package/dist/components/footer/types.d.ts +16 -0
  36. package/dist/components/form/form.js +5 -0
  37. package/dist/components/form/form.vue.d.ts +32 -0
  38. package/dist/components/form/form.vue_vue_type_script_setup_true_lang.js +37 -0
  39. package/dist/components/form/types.d.ts +15 -0
  40. package/dist/components/grid/column/column.js +5 -0
  41. package/dist/components/grid/column/column.vue.d.ts +33 -0
  42. package/dist/components/grid/column/column.vue_vue_type_script_setup_true_lang.js +45 -0
  43. package/dist/components/grid/column/types.d.ts +27 -0
  44. package/dist/components/grid/container/container.js +5 -0
  45. package/dist/components/grid/container/container.vue.d.ts +27 -0
  46. package/dist/components/grid/container/container.vue_vue_type_script_setup_true_lang.js +33 -0
  47. package/dist/components/grid/container/types.d.ts +17 -0
  48. package/dist/components/grid/row/row.js +5 -0
  49. package/dist/components/grid/row/row.vue.d.ts +29 -0
  50. package/dist/components/grid/row/row.vue_vue_type_script_setup_true_lang.js +61 -0
  51. package/dist/components/grid/row/types.d.ts +63 -0
  52. package/dist/components/icon-button/icon-button.js +5 -0
  53. package/dist/components/icon-button/icon-button.vue.d.ts +23 -0
  54. package/dist/components/icon-button/icon-button.vue_vue_type_script_setup_true_lang.js +51 -0
  55. package/dist/components/icon-button/types.d.ts +32 -0
  56. package/dist/components/img/img.js +5 -0
  57. package/dist/components/img/img.vue.d.ts +23 -0
  58. package/dist/components/img/img.vue_vue_type_script_setup_true_lang.js +61 -0
  59. package/dist/components/img/types.d.ts +43 -0
  60. package/dist/components/inputs/autocomplete-field/autocomplete-field.js +5 -0
  61. package/dist/components/inputs/autocomplete-field/autocomplete-field.vue.d.ts +33 -0
  62. package/dist/components/inputs/autocomplete-field/autocomplete-field.vue_vue_type_script_setup_true_lang.js +161 -0
  63. package/dist/components/inputs/autocomplete-field/types.d.ts +84 -0
  64. package/dist/components/inputs/checkbox/checkbox.js +5 -0
  65. package/dist/components/inputs/checkbox/checkbox.vue.d.ts +33 -0
  66. package/dist/components/inputs/checkbox/checkbox.vue_vue_type_script_setup_true_lang.js +71 -0
  67. package/dist/components/inputs/checkbox/types.d.ts +35 -0
  68. package/dist/components/inputs/date-time-field/date-time-field.js +5 -0
  69. package/dist/components/inputs/date-time-field/date-time-field.vue.d.ts +32 -0
  70. package/dist/components/inputs/date-time-field/date-time-field.vue_vue_type_script_setup_true_lang.js +205 -0
  71. package/dist/components/inputs/date-time-field/types.d.ts +84 -0
  72. package/dist/components/inputs/field-loader.js +5 -0
  73. package/dist/components/inputs/field-loader.vue_vue_type_script_setup_true_lang.js +30 -0
  74. package/dist/components/inputs/mask-field/mask-field.js +5 -0
  75. package/dist/components/inputs/mask-field/mask-field.vue.d.ts +32 -0
  76. package/dist/components/inputs/mask-field/mask-field.vue_vue_type_script_setup_true_lang.js +120 -0
  77. package/dist/components/inputs/mask-field/types.d.ts +118 -0
  78. package/dist/components/inputs/text-field/text-field.js +5 -0
  79. package/dist/components/inputs/text-field/text-field.vue.d.ts +30 -0
  80. package/dist/components/inputs/text-field/text-field.vue_vue_type_script_setup_true_lang.js +119 -0
  81. package/dist/components/inputs/text-field/types.d.ts +70 -0
  82. package/dist/components/link/link.js +5 -0
  83. package/dist/components/link/link.vue.d.ts +27 -0
  84. package/dist/components/link/link.vue_vue_type_script_setup_true_lang.js +32 -0
  85. package/dist/components/link/types.d.ts +18 -0
  86. package/dist/components/main/main.js +5 -0
  87. package/dist/components/main/main.vue.d.ts +33 -0
  88. package/dist/components/main/main.vue_vue_type_script_setup_true_lang.js +104 -0
  89. package/dist/components/main/types.d.ts +75 -0
  90. package/dist/components/navigation-menu/navigation-menu.js +5 -0
  91. package/dist/components/navigation-menu/navigation-menu.vue_vue_type_script_setup_true_lang.js +207 -0
  92. package/dist/components/navigation-menu/types.d.ts +62 -0
  93. package/dist/components/page-transition/page-transition.js +5 -0
  94. package/dist/components/page-transition/page-transition.vue.d.ts +40 -0
  95. package/dist/components/page-transition/page-transition.vue_vue_type_script_setup_true_lang.js +27 -0
  96. package/dist/components/page-transition/types.d.ts +18 -0
  97. package/dist/components/sections/section/section.js +5 -0
  98. package/dist/components/sections/section/section.vue.d.ts +28 -0
  99. package/dist/components/sections/section/section.vue_vue_type_script_setup_true_lang.js +108 -0
  100. package/dist/components/sections/section/types.d.ts +80 -0
  101. package/dist/components/sections/section-content/section-content.js +5 -0
  102. package/dist/components/sections/section-content/section-content.vue.d.ts +27 -0
  103. package/dist/components/sections/section-content/section-content.vue_vue_type_script_setup_true_lang.js +16 -0
  104. package/dist/components/skeleton-loader/skeleton-loader.js +5 -0
  105. package/dist/components/skeleton-loader/skeleton-loader.vue_vue_type_script_setup_true_lang.js +65 -0
  106. package/dist/components/table/table.js +5 -0
  107. package/dist/components/table/table.vue.d.ts +19 -0
  108. package/dist/components/table/table.vue_vue_type_script_setup_true_lang.js +84 -0
  109. package/dist/components/table/types.d.ts +51 -0
  110. package/dist/components.d.ts +23 -940
  111. package/dist/components.js +23 -1254
  112. package/dist/composables/alignment/alignment.js +41 -0
  113. package/dist/composables/alignment/types.d.ts +12 -0
  114. package/dist/composables/button/button.js +54 -0
  115. package/dist/composables/colors/constants.js +27 -0
  116. package/dist/composables/colors/types.d.ts +4 -0
  117. package/dist/composables/colors/use-vuetify-background-color.js +16 -0
  118. package/dist/composables/colors/use-vuetify-color.js +11 -0
  119. package/dist/composables/colors/use-vuetify-text-color.js +12 -0
  120. package/dist/composables/data-set/data-set.js +128 -0
  121. package/dist/composables/dialogs/types.d.ts +88 -0
  122. package/dist/composables/dialogs/use-confirm.d.ts +21 -0
  123. package/dist/composables/dialogs/use-confirm.js +55 -0
  124. package/dist/composables/dialogs/use-decorative-timer.js +25 -0
  125. package/dist/composables/dialogs/use-dialog-focus.js +64 -0
  126. package/dist/composables/dialogs/use-dialog-loading.js +13 -0
  127. package/dist/composables/dialogs/use-dialog.d.ts +36 -0
  128. package/dist/composables/dialogs/use-dialog.js +73 -0
  129. package/dist/composables/dialogs/use-run-or-toast.d.ts +27 -0
  130. package/dist/composables/dialogs/use-run-or-toast.js +65 -0
  131. package/dist/composables/dialogs/use-toast.d.ts +25 -0
  132. package/dist/composables/dialogs/use-toast.js +39 -0
  133. package/dist/composables/dimensions/dimensions.js +18 -0
  134. package/dist/composables/inputs/autocomplete-field.js +39 -0
  135. package/dist/composables/inputs/date-time-field.js +109 -0
  136. package/dist/composables/inputs/fields.js +28 -0
  137. package/dist/composables/inputs/mask-field.js +133 -0
  138. package/dist/composables/inputs/rules.js +16 -0
  139. package/dist/composables/inputs/text-field.js +81 -0
  140. package/dist/composables/navigation/types.d.ts +54 -0
  141. package/dist/composables/navigation/use-navigation-rail.js +163 -0
  142. package/dist/composables/navigation/use-navigation-search-shortcut.js +96 -0
  143. package/dist/composables/navigation/use-route-props.js +21 -0
  144. package/dist/composables/navigation/use-unsaved-changes.d.ts +35 -0
  145. package/dist/composables/navigation/use-unsaved-changes.js +88 -0
  146. package/dist/composables/section/section.js +34 -0
  147. package/dist/composables.d.ts +6 -67
  148. package/dist/composables.js +6 -65
  149. package/dist/consts/icons.d.ts +67 -0
  150. package/dist/consts/icons.js +69 -0
  151. package/dist/consts/locale.js +12 -0
  152. package/dist/consts/types.d.ts +12 -0
  153. package/dist/index.d.ts +1 -13
  154. package/dist/index.js +39 -14
  155. package/dist/plugins.d.ts +15 -4
  156. package/dist/plugins.js +54 -3
  157. package/dist/styles/fonts/UnimedSlab-Regular.woff2 +0 -0
  158. package/dist/styles/fonts/fonts.css +5 -0
  159. package/dist/styles/settings.scss +155 -0
  160. package/dist/unit-test.js +11 -7
  161. package/package.json +11 -11
  162. package/skills/uimed-vue/SKILL.md +113 -0
  163. package/skills/uimed-vue/references/api/components/autocomplete-field.md +45 -0
  164. package/skills/uimed-vue/references/api/components/button.md +48 -0
  165. package/skills/uimed-vue/references/api/components/checkbox.md +36 -0
  166. package/skills/uimed-vue/references/api/components/data-sets/data-set-item.md +61 -0
  167. package/skills/uimed-vue/references/api/components/data-sets/data-set.md +67 -0
  168. package/skills/uimed-vue/references/api/components/date-time-field.md +44 -0
  169. package/skills/uimed-vue/references/api/components/details.md +33 -0
  170. package/skills/uimed-vue/references/api/components/dialog.md +70 -0
  171. package/skills/uimed-vue/references/api/components/form.md +43 -0
  172. package/skills/uimed-vue/references/api/components/grid/column.md +41 -0
  173. package/skills/uimed-vue/references/api/components/grid/container.md +32 -0
  174. package/skills/uimed-vue/references/api/components/grid/row.md +37 -0
  175. package/skills/uimed-vue/references/api/components/icon-button.md +37 -0
  176. package/skills/uimed-vue/references/api/components/img.md +34 -0
  177. package/skills/uimed-vue/references/api/components/link.md +31 -0
  178. package/skills/uimed-vue/references/api/components/main.md +174 -0
  179. package/skills/uimed-vue/references/api/components/mask-field.md +60 -0
  180. package/skills/uimed-vue/references/api/components/page-transition.md +37 -0
  181. package/skills/uimed-vue/references/api/components/sections/section-content.md +23 -0
  182. package/skills/uimed-vue/references/api/components/sections/section.md +61 -0
  183. package/skills/uimed-vue/references/api/components/table.md +35 -0
  184. package/skills/uimed-vue/references/api/components/text-field.md +42 -0
  185. package/skills/uimed-vue/references/api/composables/use-confirm.md +96 -0
  186. package/skills/uimed-vue/references/api/composables/use-dialog.md +95 -0
  187. package/skills/uimed-vue/references/api/composables/use-run-or-toast.md +58 -0
  188. package/skills/uimed-vue/references/api/composables/use-toast.md +48 -0
  189. package/skills/uimed-vue/references/api/composables/use-unsaved-changes.md +106 -0
  190. package/skills/uimed-vue/references/api/index.md +1 -0
  191. package/skills/uimed-vue/references/guide/components/autocomplete-field.md +256 -0
  192. package/skills/uimed-vue/references/guide/components/button.md +155 -0
  193. package/skills/uimed-vue/references/guide/components/checkbox.md +113 -0
  194. package/skills/uimed-vue/references/guide/components/data-set.md +370 -0
  195. package/skills/uimed-vue/references/guide/components/date-time-field.md +202 -0
  196. package/skills/uimed-vue/references/guide/components/details.md +76 -0
  197. package/skills/uimed-vue/references/guide/components/dialog.md +269 -0
  198. package/skills/uimed-vue/references/guide/components/form.md +96 -0
  199. package/skills/uimed-vue/references/guide/components/icon-button.md +76 -0
  200. package/skills/uimed-vue/references/guide/components/img.md +128 -0
  201. package/skills/uimed-vue/references/guide/components/layout.md +323 -0
  202. package/skills/uimed-vue/references/guide/components/link.md +47 -0
  203. package/skills/uimed-vue/references/guide/components/main.md +435 -0
  204. package/skills/uimed-vue/references/guide/components/mask-field.md +256 -0
  205. package/skills/uimed-vue/references/guide/components/page-transition.md +111 -0
  206. package/skills/uimed-vue/references/guide/components/section.md +232 -0
  207. package/skills/uimed-vue/references/guide/components/table.md +102 -0
  208. package/skills/uimed-vue/references/guide/components/text-field.md +172 -0
  209. package/skills/uimed-vue/references/guide/composables/use-confirm.md +123 -0
  210. package/skills/uimed-vue/references/guide/composables/use-dialog.md +102 -0
  211. package/skills/uimed-vue/references/guide/composables/use-run-or-toast.md +55 -0
  212. package/skills/uimed-vue/references/guide/composables/use-toast.md +57 -0
  213. package/skills/uimed-vue/references/guide/composables/use-unsaved-changes.md +129 -0
  214. package/skills/uimed-vue/references/guide/getting-started.md +135 -0
  215. package/skills/uimed-vue/references/guide/icons.md +71 -0
  216. package/skills/uimed-vue/references/guide/index.md +51 -0
  217. package/skills/uimed-vue/references/guide/migration-v1-to-v2.md +191 -0
  218. package/skills/uimed-vue/references/guide/unit-testing.md +85 -0
  219. package/AGENTS.md +0 -160
  220. package/CLAUDE.md +0 -1
  221. package/dist/types-BPXXtbmW.d.ts +0 -5
  222. package/dist/use-toast-CACuYhK_.js +0 -53
@@ -0,0 +1,256 @@
1
+ # Campos com preenchimento automático
2
+
3
+ O componente para campos com preenchimento automático (autocomplete) se chama `AutocompleteField`.
4
+
5
+ > [!Warning]
6
+ > Deve ser utilizado no lugar do `<select>` nativo ou da combinação `<input>` com lista de sugestões.
7
+
8
+ ## Propriedades
9
+
10
+ ### Variantes
11
+
12
+ A prop `variant` define a variação de estilo aplicada ao campo. O padrão é `primary`.
13
+
14
+ ```vue
15
+ <template>
16
+ <u-autocomplete-field
17
+ label="Primary"
18
+ variant="primary"
19
+ :items="['Brasil', 'Portugal', 'Moçambique']"
20
+ />
21
+ <u-autocomplete-field
22
+ label="Secondary"
23
+ variant="secondary"
24
+ :items="['Brasil', 'Portugal', 'Moçambique']"
25
+ />
26
+ </template>
27
+
28
+ <script lang="ts" setup>
29
+ import { UAutocompleteField } from "@nexdom/uimed-vue/components";
30
+ </script>
31
+ ```
32
+
33
+ ### Labels
34
+
35
+ A prop `label` aceita um texto que identifica a informação a ser preenchida no campo.
36
+
37
+ ```vue
38
+ <template>
39
+ <u-autocomplete-field label="País" :items="['Brasil', 'Portugal']" />
40
+ <u-autocomplete-field label="Cidade" :items="['São Paulo', 'Rio de Janeiro']" />
41
+ </template>
42
+
43
+ <script lang="ts" setup>
44
+ import { UAutocompleteField } from "@nexdom/uimed-vue/components";
45
+ </script>
46
+ ```
47
+
48
+ ### Placeholders
49
+
50
+ A prop `placeholder` aceita um texto que fornece um exemplo ou instrução sobre o dado que pode ser selecionado no campo.
51
+
52
+ ```vue
53
+ <template>
54
+ <u-autocomplete-field
55
+ label="Selecione um país"
56
+ placeholder="Ex: Brasil"
57
+ :items="['Brasil', 'Portugal', 'Moçambique']"
58
+ />
59
+ </template>
60
+
61
+ <script lang="ts" setup>
62
+ import { UAutocompleteField } from "@nexdom/uimed-vue/components";
63
+ </script>
64
+ ```
65
+
66
+ ### Mensagens
67
+
68
+ A prop `hint` recebe um texto que será apresentado como uma dica para oferecer mais instruções ao usuário.
69
+
70
+ ```vue
71
+ <template>
72
+ <u-autocomplete-field
73
+ label="País"
74
+ hint="Selecione um país da lista"
75
+ :items="['Brasil', 'Portugal', 'Moçambique']"
76
+ />
77
+ </template>
78
+
79
+ <script lang="ts" setup>
80
+ import { UAutocompleteField } from "@nexdom/uimed-vue/components";
81
+ </script>
82
+ ```
83
+
84
+ ### Estados
85
+
86
+ #### Desabilitado
87
+
88
+ Utilize a prop `disabled` para indicar ao usuário que não há possibilidade de interação com o campo.
89
+
90
+ ```vue
91
+ <template>
92
+ <u-autocomplete-field label="Desabilitado" disabled :items="['Brasil', 'Portugal']" />
93
+ </template>
94
+
95
+ <script lang="ts" setup>
96
+ import { UAutocompleteField } from "@nexdom/uimed-vue/components";
97
+ </script>
98
+ ```
99
+
100
+ #### Somente leitura
101
+
102
+ Utilize a prop `readonly` para evitar que o valor presente em um campo seja alterado.
103
+
104
+ ```vue
105
+ <template>
106
+ <u-autocomplete-field
107
+ modelValue="Brasil"
108
+ label="Somente leitura"
109
+ readonly
110
+ :items="['Brasil', 'Portugal']"
111
+ />
112
+ </template>
113
+
114
+ <script lang="ts" setup>
115
+ import { UAutocompleteField } from "@nexdom/uimed-vue/components";
116
+ </script>
117
+ ```
118
+
119
+ #### Carregamento
120
+
121
+ A prop `loading` exibe um indicador de carregamento no campo enquanto ativa. Nesse estado, o campo mantém o rótulo como nome acessível e fica marcado como ocupado, e leitores de tela ignoram o indicador.
122
+
123
+ ```vue
124
+ <template>
125
+ <u-autocomplete-field label="Carregando" loading :items="['Brasil', 'Portugal']" />
126
+ </template>
127
+
128
+ <script lang="ts" setup>
129
+ import { UAutocompleteField } from "@nexdom/uimed-vue/components";
130
+ </script>
131
+ ```
132
+
133
+ #### Limpável
134
+
135
+ A prop `clearable` exibe um recurso para limpar o campo.
136
+
137
+ ```vue
138
+ <template>
139
+ <u-autocomplete-field label="Limpável" clearable :items="['Brasil', 'Portugal']" />
140
+ </template>
141
+
142
+ <script lang="ts" setup>
143
+ import { UAutocompleteField } from "@nexdom/uimed-vue/components";
144
+ </script>
145
+ ```
146
+
147
+ ## Comportamentos específicos
148
+
149
+ ### Modo restrito vs digitação livre
150
+
151
+ A prop `strict` controla o comportamento do campo:
152
+
153
+ - Quando `strict` é `false` (padrão), permite digitar valores não presentes na lista
154
+ - Quando `strict` é `true`, força a seleção de itens da lista
155
+
156
+ ```vue
157
+ <template>
158
+ <u-autocomplete-field
159
+ label="Modo freeform"
160
+ :strict="false"
161
+ :items="['Brasil', 'Portugal', 'Moçambique']"
162
+ />
163
+ <u-autocomplete-field
164
+ label="Modo restrito"
165
+ :strict="true"
166
+ :items="['Brasil', 'Portugal', 'Moçambique']"
167
+ />
168
+ </template>
169
+
170
+ <script lang="ts" setup>
171
+ import { UAutocompleteField } from "@nexdom/uimed-vue/components";
172
+ </script>
173
+ ```
174
+
175
+ ### Seleção múltipla
176
+
177
+ A prop `multiple` permite a seleção de mais de um valor.
178
+
179
+ ```vue
180
+ <template>
181
+ <u-autocomplete-field
182
+ v-model="multipleValue"
183
+ label="Selecione países"
184
+ :multiple="true"
185
+ :items="['Brasil', 'Portugal', 'Moçambique']"
186
+ />
187
+ </template>
188
+
189
+ <script lang="ts" setup>
190
+ import { ref } from "vue";
191
+ import { UAutocompleteField } from "@nexdom/uimed-vue/components";
192
+
193
+ const multipleValue = ref<string[]>([]);
194
+ </script>
195
+ ```
196
+
197
+ ### Itens com label e value
198
+
199
+ Os itens podem ser objetos com `label` (texto exibido) e `value` (valor interno).
200
+
201
+ ```vue
202
+ <template>
203
+ <u-autocomplete-field label="País" :items="countryItems" />
204
+ </template>
205
+
206
+ <script lang="ts" setup>
207
+ import { UAutocompleteField } from "@nexdom/uimed-vue/components";
208
+
209
+ const countryItems = [
210
+ { label: "Brasil", value: "BR" },
211
+ { label: "Portugal", value: "PT" },
212
+ { label: "Moçambique", value: "MZ" },
213
+ ];
214
+ </script>
215
+ ```
216
+
217
+ ## Eventos
218
+
219
+ ### Atualização
220
+
221
+ O evento `update:modelValue` será emitido toda vez que o valor do campo for alterado pelo usuário.
222
+
223
+ ```vue
224
+ <template>
225
+ <u-autocomplete-field
226
+ label="País"
227
+ :model-value
228
+ :hint
229
+ :items="items"
230
+ @update:modelValue="onUpdateValue"
231
+ />
232
+ </template>
233
+
234
+ <script lang="ts" setup>
235
+ import { ref, computed } from "vue";
236
+ import { UAutocompleteField } from "@nexdom/uimed-vue/components";
237
+
238
+ const items = ["Brasil", "Portugal"];
239
+ const modelValue = ref("Brasil");
240
+ const changes = ref(0);
241
+ const hint = computed(() => `${changes.value} alteração(ões)`);
242
+
243
+ function onUpdateValue(newValue: string | undefined) {
244
+ modelValue.value = newValue ?? "";
245
+ changes.value++;
246
+ }
247
+ </script>
248
+ ```
249
+
250
+ ## Playground
251
+
252
+ Experimente as combinações de props do componente.
253
+
254
+ ## Ver também
255
+
256
+ Consulte a referência de [API do UAutocompleteField](../../api/components/autocomplete-field.md) para a lista completa de props, slots e eventos.
@@ -0,0 +1,155 @@
1
+ # Botões
2
+
3
+ O componente padrão para botões se chama `Button`.
4
+
5
+ > [!Warning]
6
+ > Deve ser utilizado no lugar do `<button>` nativo.
7
+
8
+ ## Propriedades
9
+
10
+ ### Variantes
11
+
12
+ A prop `variant` define a variação de estilo aplicada ao botão. O padrão é `primary`.
13
+
14
+ ```vue
15
+ <template>
16
+ <u-button variant="primary">Primary</u-button>
17
+ <u-button variant="secondary">Secondary</u-button>
18
+ <u-button variant="ghost">Ghost</u-button>
19
+ </template>
20
+
21
+ <script lang="ts" setup>
22
+ import { UButton } from "@nexdom/uimed-vue/components";
23
+ </script>
24
+ ```
25
+
26
+ ### Cores
27
+
28
+ A prop `color` aceita um dos valores da paleta do componente: `primary`, `secondary`, `positive`, `informative`, `caution` ou `danger`.
29
+
30
+ ```vue
31
+ <template>
32
+ <u-button color="primary">Primary</u-button>
33
+ <u-button color="secondary">Secondary</u-button>
34
+ <u-button color="positive">Positive</u-button>
35
+ <u-button color="informative">Informative</u-button>
36
+ <u-button color="caution">Caution</u-button>
37
+ <u-button color="danger">Danger</u-button>
38
+ </template>
39
+
40
+ <script lang="ts" setup>
41
+ import { UButton } from "@nexdom/uimed-vue/components";
42
+ </script>
43
+ ```
44
+
45
+ ### Estados
46
+
47
+ #### Desabilitado
48
+
49
+ Utilize a prop `disabled` para remover a possibilidade de clicar ou focar no botão.
50
+
51
+ ```vue
52
+ <template>
53
+ <u-button disabled>Desabilitado</u-button>
54
+ </template>
55
+
56
+ <script lang="ts" setup>
57
+ import { UButton } from "@nexdom/uimed-vue/components";
58
+ </script>
59
+ ```
60
+
61
+ #### Carregamento
62
+
63
+ A prop `loading` exibe um indicador de carregamento e desabilita o botão enquanto ativa, assim como a prop `disabled`: não é possível clicar ou focar no botão, o evento `click` não é disparado e o formulário do botão não é enviado. Nesse estado, o botão tem a aparência de desabilitado, com o indicador de carregamento, e, se estiver focado, perde o foco ao entrar em carregamento, como qualquer botão desabilitado. O botão mantém o texto como nome acessível e fica marcado como ocupado, e leitores de tela ignoram o indicador. Veja também o [envio com carregamento](./form.md#envio-com-carregamento) de formulários.
64
+
65
+ Clique no botão abaixo para simular uma ação de 1,5 segundo. Novos cliques são ignorados enquanto ela é executada.
66
+
67
+ ```vue
68
+ <template>
69
+ <u-button :loading="isSaving" @click="onSave">Salvar</u-button>
70
+ <span>{{ saves }} salvamento(s)</span>
71
+ </template>
72
+
73
+ <script lang="ts" setup>
74
+ import { ref } from "vue";
75
+ import { UButton } from "@nexdom/uimed-vue/components";
76
+
77
+ const saves = ref(0);
78
+ const isSaving = ref(false);
79
+
80
+ async function onSave() {
81
+ saves.value++;
82
+ isSaving.value = true;
83
+ await new Promise((resolve) => setTimeout(resolve, 1500));
84
+ isSaving.value = false;
85
+ }
86
+ </script>
87
+ ```
88
+
89
+ ### Largura total
90
+
91
+ Utilize a prop `fullWidth` (`full-width` no template) para fazer o botão ocupar 100% da largura do elemento em que está, como a única ação de um formulário em telas pequenas.
92
+
93
+ ```vue
94
+ <template>
95
+ <u-button full-width>Largura total</u-button>
96
+ </template>
97
+
98
+ <script lang="ts" setup>
99
+ import { UButton } from "@nexdom/uimed-vue/components";
100
+ </script>
101
+ ```
102
+
103
+ ### Navegação
104
+
105
+ A prop `route` faz o botão navegar ao ser clicado. Nesse caso, ele é exibido como um link, com a aparência de botão. Uma rota da aplicação, como `"/pacientes"` ou `{ name: "paciente", params: { id: 42 } }`, navega sem recarregar a página. Enquanto essa rota é a página atual, o botão mantém a aparência e é anunciado como a página atual pelos leitores de tela. Um endereço que começa com `http` navega pelo navegador, na mesma aba.
106
+
107
+ O evento `click` continua sendo disparado ao clicar no botão. As props `type` e `form` não se aplicam a links e são ignoradas. Enquanto `disabled` ou `loading`, o botão não navega: ele é exibido como um botão desabilitado, sem link.
108
+
109
+ > [!Warning]
110
+ > Rotas da aplicação só funcionam em aplicações que usam o [Vue Router](https://router.vuejs.org/).
111
+
112
+ ```vue
113
+ <template>
114
+ <u-button route="/pacientes">Pacientes</u-button>
115
+ <u-button :route="{ name: 'paciente' }">Paciente</u-button>
116
+ <u-button :route="sharedDocs">Documentação do Shared</u-button>
117
+ </template>
118
+
119
+ <script lang="ts" setup>
120
+ import { UButton } from "@nexdom/uimed-vue/components";
121
+
122
+ const sharedDocs = "https://nexdom-healthtech.github.io/shared/";
123
+ </script>
124
+ ```
125
+
126
+ ## Eventos
127
+
128
+ ### Clique
129
+
130
+ O evento `click` é emitido ao clicar no botão, repassando o `MouseEvent` nativo. Ele não é disparado quando o botão está `disabled` ou `loading`.
131
+
132
+ ```vue
133
+ <template>
134
+ <u-button @click="onClick">Me clique</u-button>
135
+ </template>
136
+
137
+ <script lang="ts" setup>
138
+ import { ref } from "vue";
139
+ import { UButton } from "@nexdom/uimed-vue/components";
140
+
141
+ const clicks = ref(0);
142
+
143
+ function onClick() {
144
+ clicks.value++;
145
+ }
146
+ </script>
147
+ ```
148
+
149
+ ## Playground
150
+
151
+ Experimente as combinações de props do componente.
152
+
153
+ ## Ver também
154
+
155
+ Consulte a referência de [API do UButton](../../api/components/button.md) para a lista completa de props, slots e eventos.
@@ -0,0 +1,113 @@
1
+ # Caixas de seleção
2
+
3
+ O componente para caixas de seleção se chama `Checkbox`.
4
+
5
+ > [!Warning]
6
+ > Deve ser utilizado no lugar do `<input>` nativo do tipo `checkbox`.
7
+
8
+ ## Propriedades
9
+
10
+ ### Labels
11
+
12
+ A prop `label` aceita um texto que identifica a informação a ser selecionada na caixa.
13
+
14
+ ```vue
15
+ <template>
16
+ <u-checkbox label="Aceito os termos de uso" />
17
+ <u-checkbox label="Concordo com a política de privacidade" />
18
+ </template>
19
+
20
+ <script lang="ts" setup>
21
+ import { UCheckbox } from "@nexdom/uimed-vue/components";
22
+ </script>
23
+ ```
24
+
25
+ ### Estados
26
+
27
+ #### Desabilitado
28
+
29
+ Utilize a prop `disabled` para indicar ao usuário que não há possibilidade de interação com a caixa de seleção.
30
+
31
+ ```vue
32
+ <template>
33
+ <u-checkbox label="Desabilitado" disabled />
34
+ </template>
35
+
36
+ <script lang="ts" setup>
37
+ import { UCheckbox } from "@nexdom/uimed-vue/components";
38
+ </script>
39
+ ```
40
+
41
+ #### Somente leitura
42
+
43
+ Utilize a prop `readonly` para evitar que o valor presente em uma caixa de seleção seja alterado.
44
+
45
+ ```vue
46
+ <template>
47
+ <u-checkbox :model-value="true" label="Somente leitura (marcado)" readonly />
48
+ </template>
49
+
50
+ <script lang="ts" setup>
51
+ import { UCheckbox } from "@nexdom/uimed-vue/components";
52
+ </script>
53
+ ```
54
+
55
+ ### Valores customizados
56
+
57
+ Por padrão, quando marcada, a caixa de seleção aplica o valor `true` ao modelo, e quando desmarcada, aplica `false`. É possível customizar esses valores utilizando as props `trueValue` e `falseValue`.
58
+
59
+ ```vue
60
+ <template>
61
+ <u-checkbox
62
+ v-model="customValuesCheckbox"
63
+ :label="customValuesCheckbox"
64
+ true-value="Ativado"
65
+ false-value="Desativado"
66
+ />
67
+ </template>
68
+
69
+ <script lang="ts" setup>
70
+ import { ref } from "vue";
71
+ import { UCheckbox } from "@nexdom/uimed-vue/components";
72
+
73
+ const customValuesCheckbox = ref("Ativado");
74
+ </script>
75
+ ```
76
+
77
+ ## Eventos
78
+
79
+ ### Atualização
80
+
81
+ O evento `update:modelValue` será emitido toda vez que o valor da caixa for alterado pelo usuário, repassando o novo valor.
82
+
83
+ ```vue
84
+ <template>
85
+ <u-checkbox
86
+ label="Marque para se cadastrar"
87
+ :model-value="modelValue"
88
+ @update:modelValue="onUpdateValue"
89
+ />
90
+ {{ changes }} alteração(ões)
91
+ </template>
92
+
93
+ <script lang="ts" setup>
94
+ import { ref } from "vue";
95
+ import { UCheckbox } from "@nexdom/uimed-vue/components";
96
+
97
+ const modelValue = ref(false);
98
+ const changes = ref(0);
99
+
100
+ function onUpdateValue(newValue: boolean | undefined) {
101
+ modelValue.value = newValue ?? false;
102
+ changes.value++;
103
+ }
104
+ </script>
105
+ ```
106
+
107
+ ## Playground
108
+
109
+ Experimente as combinações de props do componente.
110
+
111
+ ## Ver também
112
+
113
+ Consulte a referência de [API do UCheckbox](../../api/components/checkbox.md) para a lista completa de props, slots e eventos.