@znap/components-vue2 1.0.11 → 1.0.13
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 +249 -0
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -1,4 +1,253 @@
|
|
|
1
|
+
## ⚡ Instalação
|
|
1
2
|
|
|
3
|
+
Utilizando [pnpm](https://pnpm.io/)
|
|
4
|
+
```bash
|
|
5
|
+
pnpm install @znap/components-vue2
|
|
6
|
+
```
|
|
7
|
+
|
|
8
|
+
Utilizando [npm](https://npmjs.com/)
|
|
9
|
+
```bash
|
|
10
|
+
npm install @znap/components-vue2
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
No arquivo **main.js** do Vue.
|
|
14
|
+
|
|
15
|
+
```javascript
|
|
16
|
+
import Vue from "vue";
|
|
17
|
+
import * as ZnapComponents from '@znap/components-vue2';
|
|
18
|
+
|
|
19
|
+
// -- Configuraçoes do Hands on Table (Opcional)
|
|
20
|
+
import { registerAllModules } from "handsontable/registry";
|
|
21
|
+
import { registerLanguageDictionary, ptBR } from "handsontable/i18n";
|
|
22
|
+
import numbro from "numbro";
|
|
23
|
+
import numbroptBR from "numbro/dist/languages/pt-BR.min.js";
|
|
24
|
+
|
|
25
|
+
numbro.registerLanguage(numbroptBR);
|
|
26
|
+
numbro.setLanguage("pt-BR");
|
|
27
|
+
registerAllModules();
|
|
28
|
+
registerLanguageDictionary(ptBR);
|
|
29
|
+
// -- Fim
|
|
30
|
+
|
|
31
|
+
Vue.use(ZnapComponents.plugin, {
|
|
32
|
+
licenseKey: HOT_TABLE_LICENSE_KEY // CHAVE DE UTILIZAÇAO DO HANDS ON TABLE
|
|
33
|
+
})
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Estrutura de importação da lib:
|
|
37
|
+
|
|
38
|
+
```javascript
|
|
39
|
+
import * as ZnapComponents from '@znap/components-vue2';
|
|
40
|
+
|
|
41
|
+
ZnapComponents.plugin: Plugin de instalaçao global de todos com componentes para utilizaçao sem importaçao no template vue.
|
|
42
|
+
|
|
43
|
+
ZnapComponents.components: Retorna todos os componentes exportados pela lib
|
|
44
|
+
|
|
45
|
+
ZnapComponents.utils: Retorna todas as funçoes uteis exportadas pela lib
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## Utilização do ZnapBaseCrudView
|
|
49
|
+
|
|
50
|
+
```javascript
|
|
51
|
+
<template>
|
|
52
|
+
<ZnapBaseCrudView
|
|
53
|
+
v-if="viewSettings"
|
|
54
|
+
ref="baseCrudViewRef"
|
|
55
|
+
v-bind="viewSettings"
|
|
56
|
+
:onReload="onReload"
|
|
57
|
+
:onExport="onExportFile"
|
|
58
|
+
:onImport="onImportFile"
|
|
59
|
+
:onSave="onSave"
|
|
60
|
+
:onDelete="onDelete"
|
|
61
|
+
@update:rows-changed="updateRowsChanged"
|
|
62
|
+
@update:row="updateRow"
|
|
63
|
+
>
|
|
64
|
+
<template v-slot:footer-prepend>
|
|
65
|
+
Slot para adicionar elementos do lado esquerdo dos componentes de paginação.
|
|
66
|
+
</template>
|
|
67
|
+
</ZnapBaseCrudView>
|
|
68
|
+
</template>
|
|
69
|
+
|
|
70
|
+
<script>
|
|
71
|
+
import Vue from "vue";
|
|
72
|
+
import { utils as ZnapUtils } from "@znap/components-vue2";
|
|
73
|
+
|
|
74
|
+
export default {
|
|
75
|
+
data: () => ({
|
|
76
|
+
viewSettings: null,
|
|
77
|
+
viewMethods: null,
|
|
78
|
+
}),
|
|
79
|
+
|
|
80
|
+
async created() {
|
|
81
|
+
const { CrudViewConfigs } = ZnapUtils; // Importar a classe CrudViewConfigs da utils para gerar o template de dados da tela.
|
|
82
|
+
|
|
83
|
+
const crudViewConfigs = new CrudViewConfigs({
|
|
84
|
+
viewTitle: "Titulo da página",
|
|
85
|
+
viewIcon: "icone_da_pagina",
|
|
86
|
+
primaryKey: "chave_primaria_da_tela",
|
|
87
|
+
endpoint: CrudViewConfigs.generateEndpoint(
|
|
88
|
+
"URL", {} // parametros
|
|
89
|
+
),
|
|
90
|
+
useServerSidePagination?: false, // Habilita a paginação do lado do servidor, por padrão vem desabilitado. (Se habilitado, a busca também passa a acontecer do lado do servidor)
|
|
91
|
+
useServerSideSearch?: false, // Habilita busca do lado do servidor por padrão que vem desabilitado.
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
crudViewConfigs
|
|
95
|
+
.addPrimaryFilter({
|
|
96
|
+
column: "coluna_que_ira_buscar",
|
|
97
|
+
filterComponent: "v-autocomplete", // componentes disponíveis: v-autocomplete, v-checkbox, date-picker
|
|
98
|
+
itemsArray?: [] // Array de dados iniciais.
|
|
99
|
+
initialValue?: null // Valor inicial.
|
|
100
|
+
endpoint?: CrudViewConfigs.generateEndpoint(
|
|
101
|
+
"URL", {} // parâmetros
|
|
102
|
+
),
|
|
103
|
+
componentProps: {
|
|
104
|
+
label: "Grupo empresarial",
|
|
105
|
+
clearable?: true,
|
|
106
|
+
required?: true // Se o valor for true, ele devera ser preenchido e, caso não for preenchido, irá exibir mensagem na tela.
|
|
107
|
+
multiple?: false // Se for um v-autocomplete permite selecionar vários itens
|
|
108
|
+
range?: false // Se for um date-picker permite selecionar um range de data.
|
|
109
|
+
}, // Props que será passada para o componente.
|
|
110
|
+
dependsOn?: '' // Filtro primário que possui dependência
|
|
111
|
+
hooks?: {
|
|
112
|
+
afterChange: () => {
|
|
113
|
+
// Hook que será disparado após a mudança do valor.
|
|
114
|
+
|
|
115
|
+
// * Pode ser utilizado para alterar os dados de outros filtros, ou então realizar chamadas assíncronas para atualizar o array de dados.
|
|
116
|
+
}
|
|
117
|
+
},
|
|
118
|
+
ignoreOnFetchFunction?: false // Se o valor for true, será ignorado na função de fetch genérica, por padrão o valor é false.
|
|
119
|
+
})
|
|
120
|
+
|
|
121
|
+
crudViewConfigs
|
|
122
|
+
.addSecondaryFilter({
|
|
123
|
+
column: "coluna_que_ira_buscar",
|
|
124
|
+
filterComponent: "v-autocomplete", // componentes disponíveis: v-autocomplete, v-checkbox, date-picker
|
|
125
|
+
itemsArray?: [] // Array de dados iniciais.
|
|
126
|
+
initialValue?: null // Valor inicial.
|
|
127
|
+
endpoint?: CrudViewConfigs.generateEndpoint(
|
|
128
|
+
"URL", {} // parametros
|
|
129
|
+
),
|
|
130
|
+
componentProps: {
|
|
131
|
+
label: "Empresa",
|
|
132
|
+
clearable?: true,
|
|
133
|
+
multiple?: false // Se for um v-autocomplete permite selecionar vários itens.
|
|
134
|
+
range?: false // Se for um date-picker permite selecionar um range de data.
|
|
135
|
+
}, // Props que sera passada para o componente
|
|
136
|
+
dependsOn?: '' // Filtro secundario que possui dependencia
|
|
137
|
+
hooks?: {
|
|
138
|
+
afterChange: () => {
|
|
139
|
+
// Hook que será disparado após a mudança do valor.
|
|
140
|
+
|
|
141
|
+
// * Pode ser utilizado para alterar os dados de outros filtros, ou então realizar chamadas assíncronas para atualizar o array de dados.
|
|
142
|
+
}
|
|
143
|
+
},
|
|
144
|
+
ignoreOnFetchFunction?: false // Se o valor for true, será ignorado na funçao de fetch generica, por padrao o valor é false.
|
|
145
|
+
})
|
|
146
|
+
|
|
147
|
+
crudViewConfigs
|
|
148
|
+
.addTableOption({
|
|
149
|
+
column: "chave_que_recebera_as_options",
|
|
150
|
+
itemsArray?: [] // Array com dados iniciais.
|
|
151
|
+
endpoint?: CrudViewConfigs.generateEndpoint(
|
|
152
|
+
"URL", {
|
|
153
|
+
// parâmetros
|
|
154
|
+
}
|
|
155
|
+
),
|
|
156
|
+
formatter?: (value) => {
|
|
157
|
+
// Logica para formatar o dado quando for exibido na tabela, sem alterar o dado original.
|
|
158
|
+
}
|
|
159
|
+
filterFunction?: () => {
|
|
160
|
+
// Logica para filtrar os dados que serão exibidos, se for passada uma filterFunction o array de itens será ignorado e o retorno será o retorno da filterFunction.
|
|
161
|
+
|
|
162
|
+
// Deve sempre retornar um array
|
|
163
|
+
},
|
|
164
|
+
ignoreOnFetchFunction?: false // Se o valor for true, será ignorado na função de fetch genérica, por padrão o valor é false.
|
|
165
|
+
})
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
crudViewConfigs
|
|
169
|
+
.addFormOption({
|
|
170
|
+
column: "chave_que_recebera_as_options",
|
|
171
|
+
dependsOn?: 'chave_que_dependa_que_tenha_valor'
|
|
172
|
+
itemsArray?: [] // Array de itens iniciais.
|
|
173
|
+
endpoint?: CrudViewConfigs.generateEndpoint(
|
|
174
|
+
"URL", {} // parâmetros
|
|
175
|
+
),
|
|
176
|
+
hooks?: {
|
|
177
|
+
afterChange: (item) =>{
|
|
178
|
+
// Logica que irá disparar após o valor ser alterado.
|
|
179
|
+
|
|
180
|
+
// * Pode ser utilizado para alterar os dados ou então realizar chamadas assíncronas para atualizar o array de dados.
|
|
181
|
+
}
|
|
182
|
+
beforeChange: (item) => {
|
|
183
|
+
// Logica que irá disparar antes do valor ser alterado.
|
|
184
|
+
|
|
185
|
+
// * Pode ser utilizado para alterar os dados ou então realizar chamadas assíncronas para atualizar o array de dados.
|
|
186
|
+
}
|
|
187
|
+
},
|
|
188
|
+
ignoreOnFetchFunction?: false // Se o valor for true, será ignorado na função de fetch genérica, por padrão o valor é false.
|
|
189
|
+
})
|
|
190
|
+
|
|
191
|
+
crudViewConfigs.setFormModel({
|
|
192
|
+
// Modelo inicial do formulário.
|
|
193
|
+
});
|
|
194
|
+
|
|
195
|
+
this.viewSettings = crudViewConfigs.viewConfigs; // Retorna o objeto de configuraçoes da classe (Se tornará o state do componente)
|
|
196
|
+
this.viewMethods = crudViewConfigs.viewMethods; // Retorna os métodos pre prontos disponíveis da classe.
|
|
197
|
+
|
|
198
|
+
|
|
199
|
+
// Pode usar os métodos das classe CrudViewConfigs ou então criar os próprios conforme a necessidade.
|
|
200
|
+
await Promise.all([
|
|
201
|
+
this.viewMethods.fetchFiltersData(this.viewSettings.filters, this.$http),
|
|
202
|
+
this.viewMethods.fetchTableOptionsData(
|
|
203
|
+
this.viewSettings.tableOptions,
|
|
204
|
+
this.$http
|
|
205
|
+
),
|
|
206
|
+
this.viewMethods.fetchFormOptionsData(
|
|
207
|
+
this.viewSettings.formSettings.formOptions,
|
|
208
|
+
this.$http
|
|
209
|
+
),
|
|
210
|
+
]);
|
|
211
|
+
|
|
212
|
+
this.fetchData()
|
|
213
|
+
},
|
|
214
|
+
methods: {
|
|
215
|
+
updateRowsChanged() {
|
|
216
|
+
this.viewSettings.rowsChanged = new Set(this.viewSettings.rowsChanged); // Importante para o Vue detectar que o rowsChanged alterou e exibir o elemento em destaque na tabela.
|
|
217
|
+
}
|
|
218
|
+
updateRow() {
|
|
219
|
+
this.$set(this.viewSettings.apiData, rowIndex, data); // Importante para o vue detectar que teve alteração no elemento da tabela.
|
|
220
|
+
}
|
|
221
|
+
async onReload() {
|
|
222
|
+
// Logica de como será tratado o evento de reload.
|
|
223
|
+
}
|
|
224
|
+
async onExportFile() {
|
|
225
|
+
// Logica de como será tratado o evento de exportação de arquivo.
|
|
226
|
+
}
|
|
227
|
+
async onImportFile(
|
|
228
|
+
event // evento contendo o elemento do input de arquivo.
|
|
229
|
+
) {
|
|
230
|
+
// Logica de como será tratado o evento de importação de arquivo.
|
|
231
|
+
}
|
|
232
|
+
async onSave({
|
|
233
|
+
reload = true, // variável retornada do componente para verificar se deve ou não realizar o reload (Fica a cargo do desenvolvedor)
|
|
234
|
+
itemData = null // Se for um item proveniente da modal (Criação/Edição) os dados virão aqui.
|
|
235
|
+
}) {
|
|
236
|
+
// Logica de como será tratado o evento de salvamento de registro(s)
|
|
237
|
+
}
|
|
238
|
+
async onDelete(
|
|
239
|
+
rows // Array com as linhas que devem ser excluídas.
|
|
240
|
+
) {
|
|
241
|
+
// Logica de como será tratado o evento de exclusão de registro(s)
|
|
242
|
+
}
|
|
243
|
+
async fetchData() {
|
|
244
|
+
// Logica de busca de dados principais.
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
</script>
|
|
249
|
+
|
|
250
|
+
```
|
|
2
251
|
|
|
3
252
|
## Utilização da Classe Auxiliar **CrudViewConfigs**
|
|
4
253
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@znap/components-vue2",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.13",
|
|
4
4
|
"private": false,
|
|
5
5
|
"main": "./dist/index.common.js",
|
|
6
6
|
"module": "./dist/index.umd.js",
|
|
@@ -17,8 +17,8 @@
|
|
|
17
17
|
"prepublishOnly": "npm run build"
|
|
18
18
|
},
|
|
19
19
|
"peerDependencies": {
|
|
20
|
-
"@handsontable/vue": "14.
|
|
21
|
-
"handsontable": "14.
|
|
20
|
+
"@handsontable/vue": "14.5.0",
|
|
21
|
+
"handsontable": "14.5.0",
|
|
22
22
|
"hyperformula": "^2.7.0",
|
|
23
23
|
"moment": "^2.30.1",
|
|
24
24
|
"numbro": "2.1.2",
|