@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,111 @@
|
|
|
1
|
+
# Transição de páginas
|
|
2
|
+
|
|
3
|
+
O componente para animar a troca entre as páginas da aplicação se chama `PageTransition`. A página atual desaparece aos poucos e, só depois que ela sai, a nova página aparece da mesma forma.
|
|
4
|
+
|
|
5
|
+
> [!Warning]
|
|
6
|
+
> Feito para envolver a página renderizada pelo `<router-view>` do [Vue Router](https://router.vuejs.org/).
|
|
7
|
+
|
|
8
|
+
## Uso
|
|
9
|
+
|
|
10
|
+
Coloque o `<router-view>` dentro do [Componente base](./main.md) e envolva a página da rota atual com o `PageTransition`.
|
|
11
|
+
|
|
12
|
+
Só a troca de páginas é animada. A primeira página aparece sem animação quando a aplicação é montada depois que o roteador carrega a primeira rota (com `await router.isReady()` antes do `app.mount`). Se a aplicação for montada antes, a área de conteúdo começa vazia e a primeira página aparece com a animação, como na demonstração abaixo.
|
|
13
|
+
|
|
14
|
+
Navegue entre as páginas da demonstração.
|
|
15
|
+
|
|
16
|
+
A demonstração tem duas páginas com um roteador próprio. Por isso, a navegação entre elas não altera o endereço do navegador. A página "Pacientes" é uma section, e a página "Agenda" centraliza a sua section na altura da tela, com um container e uma linha com `full-height` (veja [Altura total](./layout.md#altura-total)).
|
|
17
|
+
|
|
18
|
+
```vue
|
|
19
|
+
<!-- App.vue -->
|
|
20
|
+
<template>
|
|
21
|
+
<u-main>
|
|
22
|
+
<router-view v-slot="{ Component }">
|
|
23
|
+
<u-page-transition>
|
|
24
|
+
<component :is="Component" />
|
|
25
|
+
</u-page-transition>
|
|
26
|
+
</router-view>
|
|
27
|
+
</u-main>
|
|
28
|
+
</template>
|
|
29
|
+
|
|
30
|
+
<script lang="ts" setup>
|
|
31
|
+
import { UMain, UPageTransition } from "@nexdom/uimed-vue/components";
|
|
32
|
+
</script>
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### Elemento em volta da página
|
|
36
|
+
|
|
37
|
+
O `PageTransition` coloca a página dentro de um `<div>`, e é esse elemento que aparece e desaparece. Assim, qualquer página é animada, seja qual for o seu conteúdo: uma section, mais de um elemento (por exemplo, o conteúdo e uma [janela modal](./dialog.md) ao lado dele) ou comentários fora do elemento principal.
|
|
38
|
+
|
|
39
|
+
```vue
|
|
40
|
+
<!-- PatientList.vue, página renderizada pelo <router-view> -->
|
|
41
|
+
<template>
|
|
42
|
+
<u-section title="Pacientes" :actions>
|
|
43
|
+
<u-section-content>Lista de pacientes cadastrados.</u-section-content>
|
|
44
|
+
</u-section>
|
|
45
|
+
<u-dialog v-model="open" title="Novo paciente">...</u-dialog>
|
|
46
|
+
</template>
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
O `<div>` ocupa toda a altura do elemento em que está. Por isso, containers e linhas com `full-height` continuam ocupando a altura da área de conteúdo do [Componente base](./main.md), como na página "Agenda" da demonstração.
|
|
50
|
+
|
|
51
|
+
Atributos informados no `PageTransition`, como `class` e `style`, não são repassados ao `<div>` nem à página.
|
|
52
|
+
|
|
53
|
+
### Movimento reduzido
|
|
54
|
+
|
|
55
|
+
Quando o sistema operacional pede movimento reduzido (por exemplo, com a opção "Reduzir movimento" ou "Efeitos de animação" desligada), as páginas trocam sem animação. Nenhuma configuração é necessária, e a mudança da preferência com a aplicação aberta vale a partir da troca seguinte.
|
|
56
|
+
|
|
57
|
+
### Quando a troca é animada
|
|
58
|
+
|
|
59
|
+
A troca é animada sempre que a prop `transitionKey` muda. Por padrão, ela é o endereço completo da rota atual (`route.fullPath`), então toda navegação é animada, inclusive quando só mudam os parâmetros (de `/pacientes/1` para `/pacientes/2`), a consulta (de `/pacientes?pagina=1` para `/pacientes?pagina=2`) ou o fragmento (um link para uma âncora da mesma página, como `#consultas`). Nesses casos, a página é criada de novo, e o estado dela (como campos preenchidos) não é mantido.
|
|
60
|
+
|
|
61
|
+
Para escolher quais navegações são animadas, informe outro valor. Com o caminho da rota (`route.path`), por exemplo, mudanças só na consulta ou no fragmento, como a troca de página de uma lista, acontecem sem animação e mantêm a página:
|
|
62
|
+
|
|
63
|
+
```vue
|
|
64
|
+
<template>
|
|
65
|
+
<u-main>
|
|
66
|
+
<router-view v-slot="{ Component, route }">
|
|
67
|
+
<u-page-transition :transition-key="route.path">
|
|
68
|
+
<component :is="Component" />
|
|
69
|
+
</u-page-transition>
|
|
70
|
+
</router-view>
|
|
71
|
+
</u-main>
|
|
72
|
+
</template>
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
#### Rotas aninhadas
|
|
76
|
+
|
|
77
|
+
Com rotas aninhadas, o endereço completo também muda quando só a rota filha muda. Com o valor padrão, navegar entre rotas filhas (de `/pacientes/1` para `/pacientes/2`) anima a página pai inteira, que sai com a filha anterior e é criada de novo com a nova, sem manter o seu estado.
|
|
78
|
+
|
|
79
|
+
Para animar só a troca da rota filha, informe no `PageTransition` de cima uma `transitionKey` que identifique apenas a rota pai, como o caminho dela (`route.matched[0]?.path`), e envolva o `<router-view>` da página pai com outro `PageTransition`:
|
|
80
|
+
|
|
81
|
+
```vue
|
|
82
|
+
<!-- App.vue -->
|
|
83
|
+
<template>
|
|
84
|
+
<u-main>
|
|
85
|
+
<router-view v-slot="{ Component, route }">
|
|
86
|
+
<u-page-transition :transition-key="route.matched[0]?.path">
|
|
87
|
+
<component :is="Component" />
|
|
88
|
+
</u-page-transition>
|
|
89
|
+
</router-view>
|
|
90
|
+
</u-main>
|
|
91
|
+
</template>
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
```vue
|
|
95
|
+
<!-- PatientLayout.vue, página pai das rotas /pacientes/:id -->
|
|
96
|
+
<template>
|
|
97
|
+
<router-view v-slot="{ Component }">
|
|
98
|
+
<u-page-transition>
|
|
99
|
+
<component :is="Component" />
|
|
100
|
+
</u-page-transition>
|
|
101
|
+
</router-view>
|
|
102
|
+
</template>
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### Páginas mantidas em memória
|
|
106
|
+
|
|
107
|
+
Com um `<keep-alive>` dentro do `PageTransition`, a troca é animada, mas as páginas não são mantidas: o `<div>` em volta da página é criado de novo a cada troca, e o `<keep-alive>` dentro dele também. Para manter as páginas, informe uma `transitionKey` fixa (por exemplo, `transition-key="paginas"`). Nesse caso, a troca de páginas acontece sem animação.
|
|
108
|
+
|
|
109
|
+
## Ver também
|
|
110
|
+
|
|
111
|
+
Consulte a referência de [API do UPageTransition](../../api/components/page-transition.md) para mais informações.
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
# Agrupador de Conteúdo
|
|
2
|
+
|
|
3
|
+
O componente padrão para agrupar conteúdo relacionado se chama `Section`.
|
|
4
|
+
|
|
5
|
+
> [!Warning]
|
|
6
|
+
> Deve ser utilizado no lugar do `<section>` nativo.
|
|
7
|
+
|
|
8
|
+
Dentro do mesmo também podemos adicionar o [`SectionContent`](#componente-sectioncontent).
|
|
9
|
+
|
|
10
|
+
## Propriedades
|
|
11
|
+
|
|
12
|
+
### Variantes
|
|
13
|
+
|
|
14
|
+
A prop `variant` define a variação de estilo aplicada ao agrupador de conteúdo. O padrão é `primary`.
|
|
15
|
+
|
|
16
|
+
```vue
|
|
17
|
+
<template>
|
|
18
|
+
<u-section variant="primary" title="Primary">Conteúdo do agrupador primary</u-section>
|
|
19
|
+
<u-section variant="secondary" title="Secondary">Conteúdo do agrupador secondary</u-section>
|
|
20
|
+
</template>
|
|
21
|
+
|
|
22
|
+
<script lang="ts" setup>
|
|
23
|
+
import { USection } from "@nexdom/uimed-vue/components";
|
|
24
|
+
</script>
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
### Título e Subtítulo
|
|
28
|
+
|
|
29
|
+
As props `title` e `subtitle` definem o título e o subtítulo exibidos no topo do agrupador.
|
|
30
|
+
|
|
31
|
+
```vue
|
|
32
|
+
<template>
|
|
33
|
+
<u-section title="Título do Agrupador" subtitle="Subtítulo descritivo">
|
|
34
|
+
Conteúdo do agrupador com título e subtítulo
|
|
35
|
+
</u-section>
|
|
36
|
+
</template>
|
|
37
|
+
|
|
38
|
+
<script lang="ts" setup>
|
|
39
|
+
import { USection } from "@nexdom/uimed-vue/components";
|
|
40
|
+
</script>
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### Alinhamento
|
|
44
|
+
|
|
45
|
+
A prop `textAlign` define o alinhamento horizontal do título, do subtítulo, do conteúdo e das ações do agrupador. O padrão é `start`.
|
|
46
|
+
|
|
47
|
+
- `start`: alinha o texto ao início, mantendo as ações no fim;
|
|
48
|
+
- `center`: centraliza o texto e as ações;
|
|
49
|
+
- `end`: alinha o texto e as ações ao fim.
|
|
50
|
+
|
|
51
|
+
Os valores `start` e `end` seguem a direção do texto, então se invertem em idiomas escritos da direita para a esquerda.
|
|
52
|
+
|
|
53
|
+
```vue
|
|
54
|
+
<template>
|
|
55
|
+
<u-section text-align="start" title="Início" subtitle="Alinhamento padrão" :actions="actions">
|
|
56
|
+
<u-section-content>Conteúdo alinhado ao início, com as ações no fim</u-section-content>
|
|
57
|
+
</u-section>
|
|
58
|
+
<u-section
|
|
59
|
+
text-align="center"
|
|
60
|
+
title="Página não encontrada"
|
|
61
|
+
subtitle="Erro 404"
|
|
62
|
+
:actions="notFoundActions"
|
|
63
|
+
>
|
|
64
|
+
<u-section-content>
|
|
65
|
+
O endereço que você tentou abrir não existe ou foi removido.
|
|
66
|
+
</u-section-content>
|
|
67
|
+
</u-section>
|
|
68
|
+
<u-section text-align="end" title="Fim" subtitle="Alinhado ao fim" :actions="actions">
|
|
69
|
+
<u-section-content>Conteúdo alinhado ao fim, assim como as ações</u-section-content>
|
|
70
|
+
</u-section>
|
|
71
|
+
</template>
|
|
72
|
+
|
|
73
|
+
<script lang="ts" setup>
|
|
74
|
+
import { ref } from "vue";
|
|
75
|
+
import { USection, USectionContent } from "@nexdom/uimed-vue/components";
|
|
76
|
+
|
|
77
|
+
const actions = ref([
|
|
78
|
+
{
|
|
79
|
+
label: "Cancelar",
|
|
80
|
+
variant: "ghost",
|
|
81
|
+
onClick: () => alert("Cancelar clicado"),
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
label: "Salvar",
|
|
85
|
+
color: "positive",
|
|
86
|
+
onClick: () => alert("Salvar clicado"),
|
|
87
|
+
},
|
|
88
|
+
]);
|
|
89
|
+
|
|
90
|
+
const notFoundActions = ref([
|
|
91
|
+
{
|
|
92
|
+
label: "Voltar para o Início",
|
|
93
|
+
variant: "ghost",
|
|
94
|
+
onClick: () => alert("Voltar para o Início clicado"),
|
|
95
|
+
},
|
|
96
|
+
]);
|
|
97
|
+
</script>
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
O alinhamento vale para todo o conteúdo do agrupador, inclusive para os textos e componentes dentro dele, exceto os que definem o próprio alinhamento. Por isso, os valores `center` e `end` são pensados para conteúdos curtos, como estados vazios e mensagens.
|
|
101
|
+
|
|
102
|
+
Um agrupador dentro de outro mantém o próprio alinhamento, que também é `start` por padrão:
|
|
103
|
+
|
|
104
|
+
```vue
|
|
105
|
+
<template>
|
|
106
|
+
<u-section text-align="center" title="Agrupador centralizado" full-width>
|
|
107
|
+
<u-section-content>
|
|
108
|
+
<p>Conteúdo centralizado</p>
|
|
109
|
+
<u-section variant="secondary" title="Agrupador interno" full-width>
|
|
110
|
+
<u-section-content>Conteúdo alinhado ao início</u-section-content>
|
|
111
|
+
</u-section>
|
|
112
|
+
</u-section-content>
|
|
113
|
+
</u-section>
|
|
114
|
+
</template>
|
|
115
|
+
|
|
116
|
+
<script lang="ts" setup>
|
|
117
|
+
import { USection, USectionContent } from "@nexdom/uimed-vue/components";
|
|
118
|
+
</script>
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
### Dimensões
|
|
122
|
+
|
|
123
|
+
#### Largura Total
|
|
124
|
+
|
|
125
|
+
Utilize a prop `fullWidth` para fazer o agrupador ocupar 100% da largura do seu container.
|
|
126
|
+
|
|
127
|
+
```vue
|
|
128
|
+
<template>
|
|
129
|
+
<u-section title="Agrupador com 100% de largura" full-width>
|
|
130
|
+
Conteúdo preenchendo toda a largura disponível
|
|
131
|
+
</u-section>
|
|
132
|
+
</template>
|
|
133
|
+
|
|
134
|
+
<script lang="ts" setup>
|
|
135
|
+
import { USection } from "@nexdom/uimed-vue/components";
|
|
136
|
+
</script>
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
#### Altura Total
|
|
140
|
+
|
|
141
|
+
Utilize a prop `fullHeight` para fazer o agrupador ocupar 100% da altura do seu container.
|
|
142
|
+
|
|
143
|
+
Quando o agrupador estiver dentro de uma [`URow`](./layout.md#alinhamento-vertical-das-colunas), utilize `align-y="stretch"` na linha para que ele acompanhe a altura da coluna mais alta. Para que a linha ocupe toda a altura da tela, veja [Altura total](./layout.md#altura-total).
|
|
144
|
+
|
|
145
|
+
```vue
|
|
146
|
+
<template>
|
|
147
|
+
<div style="height: 300px;">
|
|
148
|
+
<u-section title="Agrupador com 100% de altura" full-height>
|
|
149
|
+
Conteúdo preenchendo toda a altura disponível
|
|
150
|
+
</u-section>
|
|
151
|
+
</div>
|
|
152
|
+
</template>
|
|
153
|
+
|
|
154
|
+
<script lang="ts" setup>
|
|
155
|
+
import { USection } from "@nexdom/uimed-vue/components";
|
|
156
|
+
</script>
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
### Ações
|
|
160
|
+
|
|
161
|
+
A prop `actions` define uma lista de botões exibidos na área de ações (rodapé) do agrupador, alinhados ao fim (veja [Alinhamento](#alinhamento)), nesta ordem. Coloque a ação principal por último. Cada ação aceita as props do [Button](./button.md), como `variant`, `color`, `disabled` e `route`, que faz a ação navegar para uma rota (veja [Navegação](./button.md#navegacao)).
|
|
162
|
+
|
|
163
|
+
Coloque o conteúdo dentro do [`SectionContent`](#componente-sectioncontent) para que ele fique espaçado das bordas do agrupador e dos botões de ação.
|
|
164
|
+
|
|
165
|
+
```vue
|
|
166
|
+
<template>
|
|
167
|
+
<div style="height: 300px;">
|
|
168
|
+
<u-section title="Agrupador com Ações" :actions="actions" full-height>
|
|
169
|
+
<u-section-content>Conteúdo com ações disponíveis no rodapé</u-section-content>
|
|
170
|
+
</u-section>
|
|
171
|
+
</div>
|
|
172
|
+
</template>
|
|
173
|
+
|
|
174
|
+
<script lang="ts" setup>
|
|
175
|
+
import { ref } from "vue";
|
|
176
|
+
import { USection, USectionContent } from "@nexdom/uimed-vue/components";
|
|
177
|
+
|
|
178
|
+
const actions = ref([
|
|
179
|
+
{
|
|
180
|
+
label: "Cancelar",
|
|
181
|
+
variant: "ghost",
|
|
182
|
+
onClick: () => alert("Cancelar clicado"),
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
label: "Salvar",
|
|
186
|
+
color: "positive",
|
|
187
|
+
onClick: () => alert("Salvar clicado"),
|
|
188
|
+
},
|
|
189
|
+
]);
|
|
190
|
+
</script>
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
### Carregamento
|
|
194
|
+
|
|
195
|
+
A prop `loading` exibe um skeleton loader no lugar do conteúdo enquanto uma operação está em andamento.
|
|
196
|
+
|
|
197
|
+
```vue
|
|
198
|
+
<template>
|
|
199
|
+
<u-section title="Carregando..." loading> Conteúdo do agrupador </u-section>
|
|
200
|
+
<u-section title="Carregando com actions..." :actions="[{ label: 'Salvar' }]" loading>
|
|
201
|
+
<u-section-content>Conteúdo do agrupador com actions</u-section-content>
|
|
202
|
+
</u-section>
|
|
203
|
+
</template>
|
|
204
|
+
|
|
205
|
+
<script lang="ts" setup>
|
|
206
|
+
import { USection, USectionContent } from "@nexdom/uimed-vue/components";
|
|
207
|
+
</script>
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
## Componente SectionContent
|
|
211
|
+
|
|
212
|
+
O componente `SectionContent` é utilizado para estruturar o conteúdo exibido dentro do `Section`.
|
|
213
|
+
|
|
214
|
+
```vue
|
|
215
|
+
<template>
|
|
216
|
+
<u-section title="Título do Agrupador">
|
|
217
|
+
<u-section-content>Conteúdo estruturado com o componente SectionContent</u-section-content>
|
|
218
|
+
</u-section>
|
|
219
|
+
</template>
|
|
220
|
+
|
|
221
|
+
<script lang="ts" setup>
|
|
222
|
+
import { USectionContent, USection } from "@nexdom/uimed-vue/components";
|
|
223
|
+
</script>
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
## Playground
|
|
227
|
+
|
|
228
|
+
Experimente as combinações de props do componente.
|
|
229
|
+
|
|
230
|
+
## Ver também
|
|
231
|
+
|
|
232
|
+
Consulte a referência de [API do USection](../../api/components/sections/section.md) e da [API do USectionContent](../../api/components/sections/section-content.md) para a lista completa de props, slots e eventos.
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
# Tabela
|
|
2
|
+
|
|
3
|
+
O componente `Table` é usado para apresentar dados em tabelas, de forma clara e organizada.
|
|
4
|
+
|
|
5
|
+
> [!Warning]
|
|
6
|
+
> Deve ser utilizado no lugar do `<table>` nativo.
|
|
7
|
+
|
|
8
|
+
## Propriedades
|
|
9
|
+
|
|
10
|
+
### Layout
|
|
11
|
+
|
|
12
|
+
A prop `vertical` define o layout da tabela.
|
|
13
|
+
|
|
14
|
+
#### Horizontal (Padrão)
|
|
15
|
+
|
|
16
|
+
Por padrão, a tabela será exibida em layout horizontal com cabeçalhos no topo.
|
|
17
|
+
|
|
18
|
+
```vue
|
|
19
|
+
<template>
|
|
20
|
+
<u-table
|
|
21
|
+
:headers="['Nome', 'Idade', 'Cidade']"
|
|
22
|
+
:items="[
|
|
23
|
+
['Ana', '30', 'São Paulo'],
|
|
24
|
+
['Bruno', '25', 'Rio de Janeiro'],
|
|
25
|
+
]"
|
|
26
|
+
/>
|
|
27
|
+
</template>
|
|
28
|
+
|
|
29
|
+
<script lang="ts" setup>
|
|
30
|
+
import { UTable } from "@nexdom/uimed-vue/components";
|
|
31
|
+
</script>
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
#### Vertical
|
|
35
|
+
|
|
36
|
+
Utilize a prop `vertical` para renderizar uma tabela separada para cada item, exibindo cada linha com um cabeçalho na coluna esquerda.
|
|
37
|
+
|
|
38
|
+
```vue
|
|
39
|
+
<template>
|
|
40
|
+
<u-table
|
|
41
|
+
:headers="['Nome', 'Idade', 'Cidade']"
|
|
42
|
+
:items="[
|
|
43
|
+
['Ana', '30', 'São Paulo'],
|
|
44
|
+
['Bruno', '25', 'Rio de Janeiro'],
|
|
45
|
+
]"
|
|
46
|
+
vertical
|
|
47
|
+
/>
|
|
48
|
+
</template>
|
|
49
|
+
|
|
50
|
+
<script lang="ts" setup>
|
|
51
|
+
import { UTable } from "@nexdom/uimed-vue/components";
|
|
52
|
+
</script>
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Caso `headers` seja um array vazio, o layout vertical ainda pode ser utilizado, mas as linhas serão exibidas sem um cabeçalho na coluna esquerda.
|
|
56
|
+
|
|
57
|
+
```vue
|
|
58
|
+
<template>
|
|
59
|
+
<u-table
|
|
60
|
+
:items="[
|
|
61
|
+
['Ana', '30', 'São Paulo'],
|
|
62
|
+
['Bruno', '25', 'Rio de Janeiro'],
|
|
63
|
+
]"
|
|
64
|
+
vertical
|
|
65
|
+
/>
|
|
66
|
+
</template>
|
|
67
|
+
|
|
68
|
+
<script lang="ts" setup>
|
|
69
|
+
import { UTable } from "@nexdom/uimed-vue/components";
|
|
70
|
+
</script>
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### Carregamento
|
|
74
|
+
|
|
75
|
+
A prop `loading` exibe um skeleton loader no lugar da tabela.
|
|
76
|
+
|
|
77
|
+
Esse é um ótimo recurso de feedback para o usuário, enquanto uma operação está em andamento.
|
|
78
|
+
|
|
79
|
+
```vue
|
|
80
|
+
<template>
|
|
81
|
+
<u-table
|
|
82
|
+
:headers="['Nome', 'Idade', 'Cidade']"
|
|
83
|
+
:items="[
|
|
84
|
+
['Ana', '30', 'São Paulo'],
|
|
85
|
+
['Bruno', '25', 'Rio de Janeiro'],
|
|
86
|
+
]"
|
|
87
|
+
loading
|
|
88
|
+
/>
|
|
89
|
+
</template>
|
|
90
|
+
|
|
91
|
+
<script lang="ts" setup>
|
|
92
|
+
import { UTable } from "@nexdom/uimed-vue/components";
|
|
93
|
+
</script>
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## Playground
|
|
97
|
+
|
|
98
|
+
Experimente as combinações de props do componente.
|
|
99
|
+
|
|
100
|
+
## Ver também
|
|
101
|
+
|
|
102
|
+
Consulte a referência de [API do UTable](../../api/components/table.md) para a lista completa de props.
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
# Campos de texto
|
|
2
|
+
|
|
3
|
+
O componente para campos de texto se chama `TextField`.
|
|
4
|
+
|
|
5
|
+
> [!Warning]
|
|
6
|
+
> Deve ser utilizado no lugar do `<input>` nativo.
|
|
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-text-field label="Primary" variant="primary" />
|
|
17
|
+
<u-text-field label="Secondary" variant="secondary" />
|
|
18
|
+
</template>
|
|
19
|
+
|
|
20
|
+
<script lang="ts" setup>
|
|
21
|
+
import { UTextField } from "@nexdom/uimed-vue/components";
|
|
22
|
+
</script>
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
### Labels
|
|
26
|
+
|
|
27
|
+
A prop `label` aceita um texto que identifica a informação a ser preenchida no campo.
|
|
28
|
+
|
|
29
|
+
```vue
|
|
30
|
+
<template>
|
|
31
|
+
<u-text-field label="Primeiro nome" />
|
|
32
|
+
<u-text-field label="Sobrenome" />
|
|
33
|
+
</template>
|
|
34
|
+
|
|
35
|
+
<script lang="ts" setup>
|
|
36
|
+
import { UTextField } from "@nexdom/uimed-vue/components";
|
|
37
|
+
</script>
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### Placeholders
|
|
41
|
+
|
|
42
|
+
A prop `placeholder` aceita um texto que fornece um exemplo ou instrução sobre o formato do dado que pode ser preenchido no campo.
|
|
43
|
+
|
|
44
|
+
```vue
|
|
45
|
+
<template>
|
|
46
|
+
<u-text-field label="E-mail" type="email" placeholder="me.nexdom@gmail.com" />
|
|
47
|
+
</template>
|
|
48
|
+
|
|
49
|
+
<script lang="ts" setup>
|
|
50
|
+
import { UTextField } from "@nexdom/uimed-vue/components";
|
|
51
|
+
</script>
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### Mensagens
|
|
55
|
+
|
|
56
|
+
A prop `hint` recebe um texto que será apresentado como uma dica para oferecer mais instruções ao usuário que virá a preencher o campo.
|
|
57
|
+
|
|
58
|
+
```vue
|
|
59
|
+
<template>
|
|
60
|
+
<u-text-field label="URL" type="url" hint="https://google.com ou http://localhost:8080" />
|
|
61
|
+
</template>
|
|
62
|
+
|
|
63
|
+
<script lang="ts" setup>
|
|
64
|
+
import { UTextField } from "@nexdom/uimed-vue/components";
|
|
65
|
+
</script>
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### Senha
|
|
69
|
+
|
|
70
|
+
Com `type="password"`, o campo oculta o valor digitado e exibe um ícone de olho, anunciado pelos leitores de tela como o botão "Mostrar senha", que alterna entre mostrar e ocultar a senha. O ícone também pode ser acessado pelo teclado: a partir do campo, pressione `Tab` para focá-lo e `Espaço` ou `Enter` para alternar. A senha volta a ficar oculta ao pressionar o ícone novamente ou quando o `type` muda.
|
|
71
|
+
|
|
72
|
+
```vue
|
|
73
|
+
<template>
|
|
74
|
+
<u-text-field label="Senha" type="password" />
|
|
75
|
+
</template>
|
|
76
|
+
|
|
77
|
+
<script lang="ts" setup>
|
|
78
|
+
import { UTextField } from "@nexdom/uimed-vue/components";
|
|
79
|
+
</script>
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### Pesquisa
|
|
83
|
+
|
|
84
|
+
Com `type="search"`, o campo exibe um ícone de lupa e, por padrão, o recurso para limpar o valor digitado (`clearable`). A lupa é apenas visual: não é anunciada pelos leitores de tela e não recebe foco ao pressionar `Tab`.
|
|
85
|
+
|
|
86
|
+
```vue
|
|
87
|
+
<template>
|
|
88
|
+
<u-text-field label="Pesquisar" type="search" />
|
|
89
|
+
</template>
|
|
90
|
+
|
|
91
|
+
<script lang="ts" setup>
|
|
92
|
+
import { UTextField } from "@nexdom/uimed-vue/components";
|
|
93
|
+
</script>
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### Estados
|
|
97
|
+
|
|
98
|
+
#### Desabilitado
|
|
99
|
+
|
|
100
|
+
Utilize a prop `disabled` para indicar ao usuário que não há possibilidade de interação com o campo.
|
|
101
|
+
|
|
102
|
+
```vue
|
|
103
|
+
<template>
|
|
104
|
+
<u-text-field label="Desabilitado" disabled />
|
|
105
|
+
</template>
|
|
106
|
+
|
|
107
|
+
<script lang="ts" setup>
|
|
108
|
+
import { UTextField } from "@nexdom/uimed-vue/components";
|
|
109
|
+
</script>
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
#### Somente leitura
|
|
113
|
+
|
|
114
|
+
Utilize a prop `readonly` para evitar que o valor presente em um campo seja alterado.
|
|
115
|
+
|
|
116
|
+
```vue
|
|
117
|
+
<template>
|
|
118
|
+
<u-text-field modelValue="Valor inicial" label="Somente leitura" readonly />
|
|
119
|
+
</template>
|
|
120
|
+
|
|
121
|
+
<script lang="ts" setup>
|
|
122
|
+
import { UTextField } from "@nexdom/uimed-vue/components";
|
|
123
|
+
</script>
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
#### Carregamento
|
|
127
|
+
|
|
128
|
+
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.
|
|
129
|
+
|
|
130
|
+
```vue
|
|
131
|
+
<template>
|
|
132
|
+
<u-text-field label="Carregando" loading />
|
|
133
|
+
</template>
|
|
134
|
+
|
|
135
|
+
<script lang="ts" setup>
|
|
136
|
+
import { UTextField } from "@nexdom/uimed-vue/components";
|
|
137
|
+
</script>
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
## Eventos
|
|
141
|
+
|
|
142
|
+
### Atualização
|
|
143
|
+
|
|
144
|
+
O evento `update:modelValue` será emitido toda vez que o valor do campo for alterado pelo usuário, repassando o novo valor como uma `string`.
|
|
145
|
+
|
|
146
|
+
```vue
|
|
147
|
+
<template>
|
|
148
|
+
<u-text-field label="Texto" :model-value :hint @update:modelValue="onUpdateValue" />
|
|
149
|
+
</template>
|
|
150
|
+
|
|
151
|
+
<script lang="ts" setup>
|
|
152
|
+
import { ref, computed } from "vue";
|
|
153
|
+
import { UTextField } from "@nexdom/uimed-vue/components";
|
|
154
|
+
|
|
155
|
+
const modelValue = ref("Me altere!");
|
|
156
|
+
const changes = ref(0);
|
|
157
|
+
const hint = computed(() => `${changes.value} alteração(ões)`);
|
|
158
|
+
|
|
159
|
+
function onUpdateValue(newValue: string) {
|
|
160
|
+
modelValue.value = newValue;
|
|
161
|
+
changes.value++;
|
|
162
|
+
}
|
|
163
|
+
</script>
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
## Playground
|
|
167
|
+
|
|
168
|
+
Experimente as combinações de props do componente.
|
|
169
|
+
|
|
170
|
+
## Ver também
|
|
171
|
+
|
|
172
|
+
Consulte a referência de [API do UTextField](../../api/components/text-field.md) para a lista completa de props, slots e eventos.
|