@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.
- package/README.md +1 -1
- package/dist/_virtual/_rolldown/runtime.js +7 -0
- package/dist/components/app-bar/app-bar.js +5 -0
- package/dist/components/app-bar/app-bar.vue_vue_type_script_setup_true_lang.js +286 -0
- package/dist/components/app-bar/types.d.ts +96 -0
- package/dist/components/button/button.js +5 -0
- package/dist/components/button/button.vue.d.ts +31 -0
- package/dist/components/button/button.vue_vue_type_script_setup_true_lang.js +97 -0
- package/dist/components/button/types.d.ts +65 -0
- package/dist/components/data-sets/data-set/data-set.js +5 -0
- package/dist/components/data-sets/data-set/data-set.vue.d.ts +47 -0
- package/dist/components/data-sets/data-set/data-set.vue_vue_type_script_setup_true_lang.js +157 -0
- package/dist/components/data-sets/data-set/types.d.ts +93 -0
- package/dist/components/data-sets/data-set-bar.js +5 -0
- package/dist/components/data-sets/data-set-bar.vue_vue_type_script_setup_true_lang.js +99 -0
- package/dist/components/data-sets/data-set-item/data-set-item.js +5 -0
- package/dist/components/data-sets/data-set-item/data-set-item.vue.d.ts +35 -0
- package/dist/components/data-sets/data-set-item/data-set-item.vue_vue_type_script_setup_true_lang.js +57 -0
- package/dist/components/data-sets/data-set-item/types.d.ts +42 -0
- package/dist/components/details/details.js +5 -0
- package/dist/components/details/details.vue.d.ts +28 -0
- package/dist/components/details/details.vue_vue_type_script_setup_true_lang.js +56 -0
- package/dist/components/details/types.d.ts +29 -0
- package/dist/components/dialogs/dialog/dialog-host-key.js +10 -0
- package/dist/components/dialogs/dialog/dialog.js +5 -0
- package/dist/components/dialogs/dialog/dialog.vue.d.ts +36 -0
- package/dist/components/dialogs/dialog/dialog.vue_vue_type_script_setup_true_lang.js +112 -0
- package/dist/components/dialogs/dialog/types.d.ts +47 -0
- package/dist/components/dialogs/dialog-host.js +5 -0
- package/dist/components/dialogs/dialog-host.vue_vue_type_script_setup_true_lang.js +81 -0
- package/dist/components/dialogs/toast.js +5 -0
- package/dist/components/dialogs/toast.vue_vue_type_script_setup_true_lang.js +35 -0
- package/dist/components/footer/footer.js +5 -0
- package/dist/components/footer/footer.vue_vue_type_script_setup_true_lang.js +31 -0
- package/dist/components/footer/types.d.ts +16 -0
- package/dist/components/form/form.js +5 -0
- package/dist/components/form/form.vue.d.ts +32 -0
- package/dist/components/form/form.vue_vue_type_script_setup_true_lang.js +37 -0
- package/dist/components/form/types.d.ts +15 -0
- package/dist/components/grid/column/column.js +5 -0
- package/dist/components/grid/column/column.vue.d.ts +33 -0
- package/dist/components/grid/column/column.vue_vue_type_script_setup_true_lang.js +45 -0
- package/dist/components/grid/column/types.d.ts +27 -0
- package/dist/components/grid/container/container.js +5 -0
- package/dist/components/grid/container/container.vue.d.ts +27 -0
- package/dist/components/grid/container/container.vue_vue_type_script_setup_true_lang.js +33 -0
- package/dist/components/grid/container/types.d.ts +17 -0
- package/dist/components/grid/row/row.js +5 -0
- package/dist/components/grid/row/row.vue.d.ts +29 -0
- package/dist/components/grid/row/row.vue_vue_type_script_setup_true_lang.js +61 -0
- package/dist/components/grid/row/types.d.ts +63 -0
- package/dist/components/icon-button/icon-button.js +5 -0
- package/dist/components/icon-button/icon-button.vue.d.ts +23 -0
- package/dist/components/icon-button/icon-button.vue_vue_type_script_setup_true_lang.js +51 -0
- package/dist/components/icon-button/types.d.ts +32 -0
- package/dist/components/img/img.js +5 -0
- package/dist/components/img/img.vue.d.ts +23 -0
- package/dist/components/img/img.vue_vue_type_script_setup_true_lang.js +61 -0
- package/dist/components/img/types.d.ts +43 -0
- package/dist/components/inputs/autocomplete-field/autocomplete-field.js +5 -0
- package/dist/components/inputs/autocomplete-field/autocomplete-field.vue.d.ts +33 -0
- package/dist/components/inputs/autocomplete-field/autocomplete-field.vue_vue_type_script_setup_true_lang.js +161 -0
- package/dist/components/inputs/autocomplete-field/types.d.ts +84 -0
- package/dist/components/inputs/checkbox/checkbox.js +5 -0
- package/dist/components/inputs/checkbox/checkbox.vue.d.ts +33 -0
- package/dist/components/inputs/checkbox/checkbox.vue_vue_type_script_setup_true_lang.js +71 -0
- package/dist/components/inputs/checkbox/types.d.ts +35 -0
- package/dist/components/inputs/date-time-field/date-time-field.js +5 -0
- package/dist/components/inputs/date-time-field/date-time-field.vue.d.ts +32 -0
- package/dist/components/inputs/date-time-field/date-time-field.vue_vue_type_script_setup_true_lang.js +205 -0
- package/dist/components/inputs/date-time-field/types.d.ts +84 -0
- package/dist/components/inputs/field-loader.js +5 -0
- package/dist/components/inputs/field-loader.vue_vue_type_script_setup_true_lang.js +30 -0
- package/dist/components/inputs/mask-field/mask-field.js +5 -0
- package/dist/components/inputs/mask-field/mask-field.vue.d.ts +32 -0
- package/dist/components/inputs/mask-field/mask-field.vue_vue_type_script_setup_true_lang.js +120 -0
- package/dist/components/inputs/mask-field/types.d.ts +118 -0
- package/dist/components/inputs/text-field/text-field.js +5 -0
- package/dist/components/inputs/text-field/text-field.vue.d.ts +30 -0
- package/dist/components/inputs/text-field/text-field.vue_vue_type_script_setup_true_lang.js +119 -0
- package/dist/components/inputs/text-field/types.d.ts +70 -0
- package/dist/components/link/link.js +5 -0
- package/dist/components/link/link.vue.d.ts +27 -0
- package/dist/components/link/link.vue_vue_type_script_setup_true_lang.js +32 -0
- package/dist/components/link/types.d.ts +18 -0
- package/dist/components/main/main.js +5 -0
- package/dist/components/main/main.vue.d.ts +33 -0
- package/dist/components/main/main.vue_vue_type_script_setup_true_lang.js +104 -0
- package/dist/components/main/types.d.ts +75 -0
- package/dist/components/navigation-menu/navigation-menu.js +5 -0
- package/dist/components/navigation-menu/navigation-menu.vue_vue_type_script_setup_true_lang.js +207 -0
- package/dist/components/navigation-menu/types.d.ts +62 -0
- package/dist/components/page-transition/page-transition.js +5 -0
- package/dist/components/page-transition/page-transition.vue.d.ts +40 -0
- package/dist/components/page-transition/page-transition.vue_vue_type_script_setup_true_lang.js +27 -0
- package/dist/components/page-transition/types.d.ts +18 -0
- package/dist/components/sections/section/section.js +5 -0
- package/dist/components/sections/section/section.vue.d.ts +28 -0
- package/dist/components/sections/section/section.vue_vue_type_script_setup_true_lang.js +108 -0
- package/dist/components/sections/section/types.d.ts +80 -0
- package/dist/components/sections/section-content/section-content.js +5 -0
- package/dist/components/sections/section-content/section-content.vue.d.ts +27 -0
- package/dist/components/sections/section-content/section-content.vue_vue_type_script_setup_true_lang.js +16 -0
- package/dist/components/skeleton-loader/skeleton-loader.js +5 -0
- package/dist/components/skeleton-loader/skeleton-loader.vue_vue_type_script_setup_true_lang.js +65 -0
- package/dist/components/table/table.js +5 -0
- package/dist/components/table/table.vue.d.ts +19 -0
- package/dist/components/table/table.vue_vue_type_script_setup_true_lang.js +84 -0
- package/dist/components/table/types.d.ts +51 -0
- package/dist/components.d.ts +23 -940
- package/dist/components.js +23 -1254
- package/dist/composables/alignment/alignment.js +41 -0
- package/dist/composables/alignment/types.d.ts +12 -0
- package/dist/composables/button/button.js +54 -0
- package/dist/composables/colors/constants.js +27 -0
- package/dist/composables/colors/types.d.ts +4 -0
- package/dist/composables/colors/use-vuetify-background-color.js +16 -0
- package/dist/composables/colors/use-vuetify-color.js +11 -0
- package/dist/composables/colors/use-vuetify-text-color.js +12 -0
- package/dist/composables/data-set/data-set.js +128 -0
- package/dist/composables/dialogs/types.d.ts +88 -0
- package/dist/composables/dialogs/use-confirm.d.ts +21 -0
- package/dist/composables/dialogs/use-confirm.js +55 -0
- package/dist/composables/dialogs/use-decorative-timer.js +25 -0
- package/dist/composables/dialogs/use-dialog-focus.js +64 -0
- package/dist/composables/dialogs/use-dialog-loading.js +13 -0
- package/dist/composables/dialogs/use-dialog.d.ts +36 -0
- package/dist/composables/dialogs/use-dialog.js +73 -0
- package/dist/composables/dialogs/use-run-or-toast.d.ts +27 -0
- package/dist/composables/dialogs/use-run-or-toast.js +65 -0
- package/dist/composables/dialogs/use-toast.d.ts +25 -0
- package/dist/composables/dialogs/use-toast.js +39 -0
- package/dist/composables/dimensions/dimensions.js +18 -0
- package/dist/composables/inputs/autocomplete-field.js +39 -0
- package/dist/composables/inputs/date-time-field.js +109 -0
- package/dist/composables/inputs/fields.js +28 -0
- package/dist/composables/inputs/mask-field.js +133 -0
- package/dist/composables/inputs/rules.js +16 -0
- package/dist/composables/inputs/text-field.js +81 -0
- package/dist/composables/navigation/types.d.ts +54 -0
- package/dist/composables/navigation/use-navigation-rail.js +163 -0
- package/dist/composables/navigation/use-navigation-search-shortcut.js +96 -0
- package/dist/composables/navigation/use-route-props.js +21 -0
- package/dist/composables/navigation/use-unsaved-changes.d.ts +35 -0
- package/dist/composables/navigation/use-unsaved-changes.js +88 -0
- package/dist/composables/section/section.js +34 -0
- package/dist/composables.d.ts +6 -67
- package/dist/composables.js +6 -65
- package/dist/consts/icons.d.ts +67 -0
- package/dist/consts/icons.js +69 -0
- package/dist/consts/locale.js +12 -0
- package/dist/consts/types.d.ts +12 -0
- package/dist/index.d.ts +1 -13
- package/dist/index.js +39 -14
- package/dist/plugins.d.ts +15 -4
- package/dist/plugins.js +54 -3
- package/dist/styles/fonts/UnimedSlab-Regular.woff2 +0 -0
- package/dist/styles/fonts/fonts.css +5 -0
- package/dist/styles/settings.scss +155 -0
- package/dist/unit-test.js +11 -7
- package/package.json +11 -11
- package/skills/uimed-vue/SKILL.md +113 -0
- package/skills/uimed-vue/references/api/components/autocomplete-field.md +45 -0
- package/skills/uimed-vue/references/api/components/button.md +48 -0
- package/skills/uimed-vue/references/api/components/checkbox.md +36 -0
- package/skills/uimed-vue/references/api/components/data-sets/data-set-item.md +61 -0
- package/skills/uimed-vue/references/api/components/data-sets/data-set.md +67 -0
- package/skills/uimed-vue/references/api/components/date-time-field.md +44 -0
- package/skills/uimed-vue/references/api/components/details.md +33 -0
- package/skills/uimed-vue/references/api/components/dialog.md +70 -0
- package/skills/uimed-vue/references/api/components/form.md +43 -0
- package/skills/uimed-vue/references/api/components/grid/column.md +41 -0
- package/skills/uimed-vue/references/api/components/grid/container.md +32 -0
- package/skills/uimed-vue/references/api/components/grid/row.md +37 -0
- package/skills/uimed-vue/references/api/components/icon-button.md +37 -0
- package/skills/uimed-vue/references/api/components/img.md +34 -0
- package/skills/uimed-vue/references/api/components/link.md +31 -0
- package/skills/uimed-vue/references/api/components/main.md +174 -0
- package/skills/uimed-vue/references/api/components/mask-field.md +60 -0
- package/skills/uimed-vue/references/api/components/page-transition.md +37 -0
- package/skills/uimed-vue/references/api/components/sections/section-content.md +23 -0
- package/skills/uimed-vue/references/api/components/sections/section.md +61 -0
- package/skills/uimed-vue/references/api/components/table.md +35 -0
- package/skills/uimed-vue/references/api/components/text-field.md +42 -0
- package/skills/uimed-vue/references/api/composables/use-confirm.md +96 -0
- package/skills/uimed-vue/references/api/composables/use-dialog.md +95 -0
- package/skills/uimed-vue/references/api/composables/use-run-or-toast.md +58 -0
- package/skills/uimed-vue/references/api/composables/use-toast.md +48 -0
- package/skills/uimed-vue/references/api/composables/use-unsaved-changes.md +106 -0
- package/skills/uimed-vue/references/api/index.md +1 -0
- package/skills/uimed-vue/references/guide/components/autocomplete-field.md +256 -0
- package/skills/uimed-vue/references/guide/components/button.md +155 -0
- package/skills/uimed-vue/references/guide/components/checkbox.md +113 -0
- package/skills/uimed-vue/references/guide/components/data-set.md +370 -0
- package/skills/uimed-vue/references/guide/components/date-time-field.md +202 -0
- package/skills/uimed-vue/references/guide/components/details.md +76 -0
- package/skills/uimed-vue/references/guide/components/dialog.md +269 -0
- package/skills/uimed-vue/references/guide/components/form.md +96 -0
- package/skills/uimed-vue/references/guide/components/icon-button.md +76 -0
- package/skills/uimed-vue/references/guide/components/img.md +128 -0
- package/skills/uimed-vue/references/guide/components/layout.md +323 -0
- package/skills/uimed-vue/references/guide/components/link.md +47 -0
- package/skills/uimed-vue/references/guide/components/main.md +435 -0
- package/skills/uimed-vue/references/guide/components/mask-field.md +256 -0
- package/skills/uimed-vue/references/guide/components/page-transition.md +111 -0
- package/skills/uimed-vue/references/guide/components/section.md +232 -0
- package/skills/uimed-vue/references/guide/components/table.md +102 -0
- package/skills/uimed-vue/references/guide/components/text-field.md +172 -0
- package/skills/uimed-vue/references/guide/composables/use-confirm.md +123 -0
- package/skills/uimed-vue/references/guide/composables/use-dialog.md +102 -0
- package/skills/uimed-vue/references/guide/composables/use-run-or-toast.md +55 -0
- package/skills/uimed-vue/references/guide/composables/use-toast.md +57 -0
- package/skills/uimed-vue/references/guide/composables/use-unsaved-changes.md +129 -0
- package/skills/uimed-vue/references/guide/getting-started.md +135 -0
- package/skills/uimed-vue/references/guide/icons.md +71 -0
- package/skills/uimed-vue/references/guide/index.md +51 -0
- package/skills/uimed-vue/references/guide/migration-v1-to-v2.md +191 -0
- package/skills/uimed-vue/references/guide/unit-testing.md +85 -0
- package/AGENTS.md +0 -160
- package/CLAUDE.md +0 -1
- package/dist/types-BPXXtbmW.d.ts +0 -5
- 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.
|