@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.
Files changed (2) hide show
  1. package/README.md +249 -0
  2. 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.11",
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.6.1",
21
- "handsontable": "14.6.1",
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",