@znap/components-vue2 1.0.10 → 1.0.12

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 CHANGED
@@ -1,6 +1,4 @@
1
- # @znap/components-vue2
2
-
3
- ### ⚡ Inicio Rapido
1
+ ## ⚡ Instalação
4
2
 
5
3
  Utilizando [pnpm](https://pnpm.io/)
6
4
  ```bash
@@ -18,7 +16,7 @@ No arquivo **main.js** do Vue.
18
16
  import Vue from "vue";
19
17
  import * as ZnapComponents from '@znap/components-vue2';
20
18
 
21
- // -- Configuraçoes do Hands on Table (Opicional)
19
+ // -- Configuraçoes do Hands on Table (Opcional)
22
20
  import { registerAllModules } from "handsontable/registry";
23
21
  import { registerLanguageDictionary, ptBR } from "handsontable/i18n";
24
22
  import numbro from "numbro";
@@ -35,19 +33,19 @@ Vue.use(ZnapComponents.plugin, {
35
33
  })
36
34
  ```
37
35
 
38
- ### Estrutura de importaçao da lib:
36
+ ## Estrutura de importação da lib:
39
37
 
40
38
  ```javascript
41
39
  import * as ZnapComponents from '@znap/components-vue2';
42
40
 
43
- // ZnapComponents.plugin: Plugin de instalaçao global de todos com componentes para utilizaçao sem importaçao no template vue.
41
+ ZnapComponents.plugin: Plugin de instalaçao global de todos com componentes para utilizaçao sem importaçao no template vue.
44
42
 
45
- // ZnapComponents.components: Retorna todos os componentes exportados pela lib
43
+ ZnapComponents.components: Retorna todos os componentes exportados pela lib
46
44
 
47
- // ZnapComponents.utils: Retorna todas as funçoes uteis exportadas pela lib
45
+ ZnapComponents.utils: Retorna todas as funçoes uteis exportadas pela lib
48
46
  ```
49
47
 
50
- ### Utilizaçao do ZnapBaseCrudView
48
+ ## Utilização do ZnapBaseCrudView
51
49
 
52
50
  ```javascript
53
51
  <template>
@@ -64,7 +62,7 @@ import * as ZnapComponents from '@znap/components-vue2';
64
62
  @update:row="updateRow"
65
63
  >
66
64
  <template v-slot:footer-prepend>
67
- Slot para adicionar elementos do lado esquerdo dos componentes de paginaçao.
65
+ Slot para adicionar elementos do lado esquerdo dos componentes de paginação.
68
66
  </template>
69
67
  </ZnapBaseCrudView>
70
68
  </template>
@@ -80,87 +78,90 @@ export default {
80
78
  }),
81
79
 
82
80
  async created() {
83
- const { CrudViewConfigs } = ZnapUtils; // Importar a classe CrudViewConfigs da utils para gerar o template de dados da tela
81
+ const { CrudViewConfigs } = ZnapUtils; // Importar a classe CrudViewConfigs da utils para gerar o template de dados da tela.
84
82
 
85
83
  const crudViewConfigs = new CrudViewConfigs({
86
- viewTitle: "Titulo da pagina",
84
+ viewTitle: "Titulo da página",
87
85
  viewIcon: "icone_da_pagina",
88
86
  primaryKey: "chave_primaria_da_tela",
89
87
  endpoint: CrudViewConfigs.generateEndpoint(
90
88
  "URL", {} // parametros
91
89
  ),
92
- useServerSidePagination?: false, // Habilita a paginaçao do lado do servidor por padrao vem desabilitado. (Se habilitado a busca tambem passa a acontecer do lado do servidor)
93
- useServerSideSearch?: false, // Habilita busca do lado do servidor por padrao vem desabilitado
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.
94
92
  });
95
93
 
96
94
  crudViewConfigs
97
95
  .addPrimaryFilter({
98
96
  column: "coluna_que_ira_buscar",
99
- filterComponent: "v-autocomplete", // componentes disponiveis: v-autocomplete, v-checkbox, date-picker
100
- itemsArray?: [] // Array de dados iniciais
101
- initialValue?: null // Valor inicial
97
+ filterComponent: "v-autocomplete", // componentes disponíveis: v-autocomplete, v-checkbox, date-picker
98
+ itemsArray?: [] // Array de dados iniciais.
99
+ initialValue?: null // Valor inicial.
102
100
  endpoint?: CrudViewConfigs.generateEndpoint(
103
- "URL", {} // parametros
101
+ "URL", {} // parâmetros
104
102
  ),
105
103
  componentProps: {
106
104
  label: "Grupo empresarial",
107
105
  clearable?: true,
108
- required?: true // Se o valor for true, ele devera ser preenchido e se caso nao for preenchido ira exibir mensagem na tela
109
- multiple?: false // Se for um v-autocomplete permite selecionar varios items
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
110
108
  range?: false // Se for um date-picker permite selecionar um range de data.
111
- }, // Props que sera passada para o componente
112
- dependsOn?: '' // Filtro primario que possui dependencia
109
+ }, // Props que será passada para o componente.
110
+ dependsOn?: '' // Filtro primário que possui dependência
113
111
  hooks?: {
114
112
  afterChange: () => {
115
- // Hook que sera disparado apos a mudança do valor
113
+ // Hook que será disparado após a mudança do valor.
116
114
 
117
- // * Pode ser utilizado para alterar os dados de outros filtros, ou entao realizar chamadas asincronas para atualizar o array de dados.
115
+ // * Pode ser utilizado para alterar os dados de outros filtros, ou então realizar chamadas assíncronas para atualizar o array de dados.
118
116
  }
119
- }
117
+ },
118
+ ignoreOnFetchFunction?: false // Se o valor for true, será ignorado na função de fetch genérica, por padrão o valor é false.
120
119
  })
121
120
 
122
121
  crudViewConfigs
123
122
  .addSecondaryFilter({
124
123
  column: "coluna_que_ira_buscar",
125
- filterComponent: "v-autocomplete", // componentes disponiveis: v-autocomplete, v-checkbox, date-picker
126
- itemsArray?: [] // Array de dados iniciais
127
- initialValue?: null // Valor inicial
124
+ filterComponent: "v-autocomplete", // componentes disponíveis: v-autocomplete, v-checkbox, date-picker
125
+ itemsArray?: [] // Array de dados iniciais.
126
+ initialValue?: null // Valor inicial.
128
127
  endpoint?: CrudViewConfigs.generateEndpoint(
129
128
  "URL", {} // parametros
130
129
  ),
131
130
  componentProps: {
132
131
  label: "Empresa",
133
132
  clearable?: true,
134
- multiple?: false // Se for um v-autocomplete permite selecionar varios items
133
+ multiple?: false // Se for um v-autocomplete permite selecionar vários itens.
135
134
  range?: false // Se for um date-picker permite selecionar um range de data.
136
135
  }, // Props que sera passada para o componente
137
136
  dependsOn?: '' // Filtro secundario que possui dependencia
138
137
  hooks?: {
139
138
  afterChange: () => {
140
- // Hook que sera disparado apos a mudança do valor
139
+ // Hook que será disparado após a mudança do valor.
141
140
 
142
- // * Pode ser utilizado para alterar os dados de outros filtros, ou entao realizar chamadas asincronas para atualizar o array de dados.
141
+ // * Pode ser utilizado para alterar os dados de outros filtros, ou então realizar chamadas assíncronas para atualizar o array de dados.
143
142
  }
144
- }
143
+ },
144
+ ignoreOnFetchFunction?: false // Se o valor for true, será ignorado na funçao de fetch generica, por padrao o valor é false.
145
145
  })
146
146
 
147
147
  crudViewConfigs
148
148
  .addTableOption({
149
149
  column: "chave_que_recebera_as_options",
150
- itemsArray?: [] // Array com dados iniciais
150
+ itemsArray?: [] // Array com dados iniciais.
151
151
  endpoint?: CrudViewConfigs.generateEndpoint(
152
152
  "URL", {
153
- // parametros
153
+ // parâmetros
154
154
  }
155
155
  ),
156
156
  formatter?: (value) => {
157
- // Logica para formatar o dado quando for exibir na tabela, sem alterar o dado original
157
+ // Logica para formatar o dado quando for exibido na tabela, sem alterar o dado original.
158
158
  }
159
159
  filterFunction?: () => {
160
- // Logica parar filtrar os dados que serao exibidos, se for passado uma filterFunction o array de items sera ignorado e o retorno sera o retorno da 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
161
 
162
162
  // Deve sempre retornar um array
163
- }
163
+ },
164
+ ignoreOnFetchFunction?: false // Se o valor for true, será ignorado na função de fetch genérica, por padrão o valor é false.
164
165
  })
165
166
 
166
167
 
@@ -168,33 +169,34 @@ export default {
168
169
  .addFormOption({
169
170
  column: "chave_que_recebera_as_options",
170
171
  dependsOn?: 'chave_que_dependa_que_tenha_valor'
171
- itemsArray?: [] // Array de itens iniciais
172
+ itemsArray?: [] // Array de itens iniciais.
172
173
  endpoint?: CrudViewConfigs.generateEndpoint(
173
- "URL", {} // parametros
174
+ "URL", {} // parâmetros
174
175
  ),
175
176
  hooks?: {
176
177
  afterChange: (item) =>{
177
- // Logica que ira disparar apos o valor ser alterado
178
+ // Logica que irá disparar após o valor ser alterado.
178
179
 
179
- // * Pode ser utilizado para alterar os dados ou entao realizar chamadas asincronas para atualizar o array de dados.
180
+ // * Pode ser utilizado para alterar os dados ou então realizar chamadas assíncronas para atualizar o array de dados.
180
181
  }
181
182
  beforeChange: (item) => {
182
- // Logica que ira disparar antes do valor ser alterado
183
+ // Logica que irá disparar antes do valor ser alterado.
183
184
 
184
- // * Pode ser utilizado para alterar os dados ou entao realizar chamadas asincronas para atualizar o array de dados.
185
+ // * Pode ser utilizado para alterar os dados ou então realizar chamadas assíncronas para atualizar o array de dados.
185
186
  }
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.
187
189
  })
188
190
 
189
191
  crudViewConfigs.setFormModel({
190
- // Modelo inicial do formulario
192
+ // Modelo inicial do formulário.
191
193
  });
192
194
 
193
- this.viewSettings = crudViewConfigs.viewConfigs; // Retorna o objeto de configuraçoes da classe (Se tornara o state do componente)
194
- this.viewMethods = crudViewConfigs.viewMethods; // Retorna os metodos pre prontos disponiveis da classe.
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.
195
197
 
196
198
 
197
- // Pode usar os metodos das classe CrudViewConfigs ou entao criar os proprios de acordo com a necessidade.
199
+ // Pode usar os métodos das classe CrudViewConfigs ou então criar os próprios conforme a necessidade.
198
200
  await Promise.all([
199
201
  this.viewMethods.fetchFiltersData(this.viewSettings.filters, this.$http),
200
202
  this.viewMethods.fetchTableOptionsData(
@@ -214,32 +216,32 @@ export default {
214
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.
215
217
  }
216
218
  updateRow() {
217
- this.$set(this.viewSettings.apiData, rowIndex, data); // Importante para o vue detectar que teve alteraçao no elemento da tabela.
219
+ this.$set(this.viewSettings.apiData, rowIndex, data); // Importante para o vue detectar que teve alteração no elemento da tabela.
218
220
  }
219
221
  async onReload() {
220
- // Logica de como sera tratado o evento de reload.
222
+ // Logica de como será tratado o evento de reload.
221
223
  }
222
224
  async onExportFile() {
223
- // Logica de como sera tratado o evento de exportaçao de arquivo.
225
+ // Logica de como será tratado o evento de exportação de arquivo.
224
226
  }
225
227
  async onImportFile(
226
- event // evento contendo o elemento do input de arquivo
228
+ event // evento contendo o elemento do input de arquivo.
227
229
  ) {
228
- // Logica de como sera tratado o evento de importaçao de arquivo.
230
+ // Logica de como será tratado o evento de importação de arquivo.
229
231
  }
230
232
  async onSave({
231
- reload = true, // variavel retornada do comoponente para verificar se deve ou nao realizar o reload (Fica a cargo do desenvolvedor)
232
- itemData = null // Se for um item proveniente da modal (Criaçao/Ediçao) os dados virão aqui
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.
233
235
  }) {
234
- // Logica de como sera tratado o evento de salvamento de registro(s)
236
+ // Logica de como será tratado o evento de salvamento de registro(s)
235
237
  }
236
238
  async onDelete(
237
- rows // Array com as linhas que devem ser excluidas
239
+ rows // Array com as linhas que devem ser excluídas.
238
240
  ) {
239
- // Logica de como sera tratado o evento de exclusao de registro(s)
241
+ // Logica de como será tratado o evento de exclusão de registro(s)
240
242
  }
241
243
  async fetchData() {
242
- // Logica de busca de dados principais
244
+ // Logica de busca de dados principais.
243
245
  }
244
246
  }
245
247
  }
@@ -247,11 +249,360 @@ export default {
247
249
 
248
250
  ```
249
251
 
252
+ ## Utilização da Classe Auxiliar **CrudViewConfigs**
253
+
254
+ O intuito dessa classe é fornecer ao desenvolvedor uma interface padronizada de criação de telas, tornando o processo padronizado e de fácil aprendizado.
255
+
256
+ A classe retorna métodos e um objeto padrão de estado para ser utilizado para manipular o componente **ZnapBaseCrudView** por meio dos getters **viewConfigs** e **viewMethods**, além disso, possui diversos métodos/interfaces para o desenvolvedor adicionar elementos na tela de maneira padronizada evitando refazer a roda toda vez que for construir uma nova tela.
257
+
258
+ ### Objeto de Estado (viewConfigs):
259
+ ```typescript
260
+ type AvalibleFilterComponents = "v-autocomplete" | "v-checkbox" | "date-picker"
261
+ type AvalibleFormOptionHooks = "afterChange" | "beforeChange"
262
+ type AvalibleFilterOptionHooks = "afterChange"
263
+ type AvalibleFormHooks = "beforeSetItem" | "afterSetItem"
264
+ type Endpoint = [string, {[key: string]: any}]
265
+ type ComponentProps = {
266
+ required?: boolean
267
+ multiple?: boolean
268
+ label: string
269
+ range?: string
270
+ [key: string] : any
271
+ }
272
+
273
+ interface FiltersInterface {
274
+ column: string
275
+ filterComponent: AvalibleFilterComponents
276
+ itemsArray: any[]
277
+ initialValue: any
278
+ endpoint: Endpoint
279
+ componentProps: ComponentProps
280
+ hooks: AvalibleFilterOptionHooks
281
+ dependsOn: string
282
+ ignoreOnFetchFunction: boolean
283
+ }
284
+
285
+ interface TableOptionsInterface {
286
+ column: string
287
+ itemsArray: any[]
288
+ endpoint: Endpoint
289
+ formatter: (value: any) => any
290
+ filterFunction: () => any[]
291
+ ignoreOnFetchFunction: boolean
292
+ }
293
+
294
+ interface FormOptionsInterface {
295
+ column: string
296
+ itemsArray: any[]
297
+ dependsOn: any
298
+ endpoint: Endpoint
299
+ hooks: AvalibleFormOptionHooks
300
+ ignoreOnFetchFunction: boolean
301
+ }
302
+
303
+ const viewConfigs = {
304
+ tableName: string,
305
+ tableIcon: string,
306
+ headers: [],
307
+ columns: [],
308
+ apiData: any[],
309
+ useServerSidePagination: boolean,
310
+ useServerSideSearch: boolean,
311
+ paginationSettings: {
312
+ page: number,
313
+ itemsPerPage: number,
314
+ itemsPerPageOptions: number[],
315
+ serverItemsLength: number | null
316
+ },
317
+ searchColums: string[],
318
+ primaryKey: string,
319
+ loading: boolean,
320
+ rowsChanged: Set<number>,
321
+ filters: {
322
+ primary: FiltersInterface[]
323
+ secondary: FiltersInterface[]
324
+ search: ''
325
+ },
326
+ currentFilters: {
327
+ primary: any[]
328
+ secondary: any[]
329
+ search: ''
330
+ },
331
+ tableOptions: TableOptionsInterface[],
332
+ formSettings: {
333
+ baseModel: {
334
+ [string]: any
335
+ },
336
+ formOptions: FormOptionsInterface[],
337
+ hooks: {
338
+ beforeSetItem: (item: any) => any | Promise<any>,
339
+ afterSetItem: (item: any) => any | Promise<any>,
340
+ },
341
+ loading: false,
342
+ },
343
+ endpoint: Endpoint,
344
+ hasFetch: boolean,
345
+ }
346
+ ```
347
+
348
+ - **tableName**: O texto que será exibido como título da página.
349
+
350
+ - **tableIcon**: O ícone que será exibido ao lado do título da página.
351
+
352
+ - **headers**: Array de headers que é retornado do back-end.
353
+
354
+ - **columns**: Array de colunas retornado do back-end.
355
+
356
+ - **apiData**: Array de dados que será exibido na tabela.
250
357
 
251
- ### Utilizaçao da Classe Auxiliar **CrudViewConfigs**
358
+ - **endpoint**: Tupla/Array de 2 posições onde a primeira é a URL do endpoint principal da página e a segunda os parâmetros que serão passados para esse endpoint.
359
+
360
+ - **hasFetch**: Booleano que indica que já ocorreu o fetch de dados da página.
361
+
362
+ - **useServerSidePagination**: Booleano para controlar a paginação do lado servidor.
252
363
 
253
- O intuito dessa classe é fornecer ao desenvolvedor uma interface padronizada de criaçao de telas, tornando o processo padronizado e de facil aprendizado.
364
+ - **useServerSideSearch**: Booleano para controlar a busca do lado servidor. **Se
365
+ useServerSidePagination for True, essa opção deve ser True também.**
254
366
 
255
- A classe retorna metodos e um objeto padrao de estado para ser utilizado para manipular o componente **ZnapBaseCrudView** por meio dos getters **viewConfigs** e **viewMethods**, alem disso, pussui diversos metodos/interfaces para o desenvolvedor adicionar elementos na tela de maneira padronizada evitando refazer a roda toda vez que for construir uma nova tela.
367
+ - **paginationSettings**: Objeto de configuração de paginação.
368
+ - **page**: Pagina atual.
369
+ - **itemsPerPage**: Quantidade de itens por pagina.
370
+ - **serverItemsLength**: Quantidade total de itens para paginar **Se estiver utilizando paginação do lado servidor, essa informação deve ser atribuída, caso contrario, a paginação irá quebrar.**
371
+ - **itemsPerPageOptions**: Array com as opções de itemsPerPage: Para ter a opçao **Todos** o valor **-1 deve ser atribuído no Array**.
256
372
 
373
+ - **searchColums**: Array com as colunas que serão utilizadas na busca por texto.
374
+
375
+ - **primaryKey**: Chave primária da tela.
376
+
377
+ - **loading**: Booleano que controla o estado de loading da tela.
378
+
379
+ - **rowsChanged**: Set contendo os **índices físicos** das linhas que foram alterados.
380
+
381
+ - **filters**: Objeto de filtros.
382
+ - **primary**: Array contendo todos os filtros primários
383
+ - **secondary**: Array contendo todos os filtros secundários
384
+ - **search**: String que será utilizada em busca por texto.
385
+
386
+ - **currentFilters**: Objeto contendo os filtros que realmente estão selecionados após o fetch de dados.
387
+ - **primary**: Array contendo os valores selecionados nos filtros primários.
388
+ - **secondary**: Array contendo os valores selecionados nos filtros secundários.
389
+ - **search**: String contendo o filtro de texto selecionado.
390
+
391
+ - **tableOptions**: Array contendo as opções das colunas da tabela.
392
+
393
+ - **formSettings**: Objeto de configurações do formulário:
394
+ - **baseModel**: Objeto contendo a estrutura inicial do objeto do item a ser criado/editado.
395
+ - **formOptions**: Array contendo as opçoes dos campos do formulário.
396
+ - **hooks**: Objeto contendo as funçoes de hooks do formulário:
397
+ - **beforeSetItem**: Função a ser executada antes do item ser atribuído ao formulário.
398
+ - **afterSetItem**: Função a ser executada após o item ser atribuído ao formulário.
399
+
400
+ ### Objeto de métodos (viewMethods)
401
+ ```typescript
402
+ type KeysToValidate = 'search' | 'primary' | 'secondary'
403
+ type FetcherReturn = {data: {rows: any[]}, [key: string]: any}
404
+ type HttpFetcher = {
405
+ post: (url: string, params: {[key: string] : any}) => Promise<FetcherReturn>,
406
+ get: (url: string) => Promise<FetcherReturn>,
407
+ delete: (url: string) => Promise<FetcherReturn>,
408
+ }
257
409
 
410
+ const viewMethods = {
411
+ getFilters: (filters, searchColums) => void,
412
+ fetchTableOptionsData: (tableOptions, httpFetcher: HttpFetcher) => void,
413
+ fetchFormOptionsData: (formOptions, httpFetcher: HttpFetcher) => void,
414
+ fetchFiltersData: (filters, httpFetcher: HttpFetcher) => void,
415
+ setCurrentFilters: (filters) => void,
416
+ validateFiltersKeyHaveChange: (filters, currentFilters, keysToValidate: KeysToValidate[] ) => boolean,
417
+ }
418
+ ```
419
+ - **getFilters**: função responsável por retornar o array de condições de todos os filtros de maneira formatada para atribuir aos endpoints.
420
+ - Parâmetros:
421
+ - Objeto de filtros.
422
+ - Array de searchColums
423
+
424
+ - **fetchTableOptionsData**: função genérica responsável por realizar o fetch de todos os dados do Array de tableOptions.
425
+
426
+ - **fetchFormOptionsData**: função genérica responsável por realizar o fetch de todos os dados do Array de formOptions.
427
+
428
+ - **fetchFiltersData**: função genérica responsável por realizar o fetch de todos os dados do Array de filtros.
429
+
430
+ - **setCurrentFilters**: função que retorna os valores dos filtros selecionados.
431
+ - Parâmetros:
432
+ - Array de filtros.
433
+
434
+ - **validateFiltersKeyHaveChange**: função para validar se os filtros selecionados na tela possuem diferença com os filtros que de fato estão selecionados.
435
+ - Parâmetros:
436
+ - Objeto de filtros.
437
+ - Objeto de currentFilters
438
+ - Array com as chaves dos filtros que deseja comparar.
439
+
440
+ ### Métodos de geração do Estado inicial:
441
+ A classe possui diversos métodos para gerar o objeto inicial de estado (viewConfigs), esses métodos são interfaces padrões para facilitar e padronizar a estrutura de dados que será passada para o componente.
442
+
443
+ - Métodos Estáticos:
444
+ - **generateEndpoint**: Retorna o Array/Tupla de endpoint.
445
+ ```javascript
446
+ CrudViewConfigs.generateEndpoint(url: string, parâmetros?: {}): [string, {}]
447
+ ```
448
+
449
+ - Métodos da instância:
450
+ - **addPrimaryFilter**: Adiciona um filtro primário no array de filtros.
451
+ ```javascript
452
+ crudViewConfigs.addPrimaryFilter({
453
+ column: string,
454
+ filterComponent: "v-autocomplete" | "v-checkbox" | "date-picker",
455
+ itemsArray?: any[],
456
+ initialValue?: any | null,
457
+ endpoint?: [string, {}],
458
+ componentProps: {
459
+ label: string,
460
+ required?: boolean,
461
+ [string]: any
462
+ },
463
+ dependsOn?: string,
464
+ ignoreOnFetchFunction?: boolean
465
+ }): this
466
+ ```
467
+
468
+ - **setPrimaryFilters**: Permite atribuir de maneira manual todo o Array de filtros primários.
469
+ ```javascript
470
+ crudViewConfigs.setPrimaryFilters([
471
+ {
472
+ column: string,
473
+ filterComponent: "v-autocomplete" | "v-checkbox" | "date-picker",
474
+ itemsArray?: any[],
475
+ initialValue?: any | null,
476
+ endpoint?: [string, {}],
477
+ componentProps: {
478
+ label: string,
479
+ required?: boolean,
480
+ multiple?: boolean,
481
+ range?: boolean,
482
+ [string]: any
483
+ },
484
+ dependsOn?: string,
485
+ ignoreOnFetchFunction?: boolean
486
+ }...
487
+ ]): this
488
+ ```
489
+
490
+ - **addSecondaryFilter**: Adiciona um filtro secundário no array de filtro secundário.
491
+ ```javascript
492
+ crudViewConfigs.addSecondaryFilter({
493
+ column: string,
494
+ filterComponent: "v-autocomplete" | "v-checkbox" | "date-picker",
495
+ itemsArray?: any[],
496
+ initialValue?: any | null,
497
+ endpoint?: [string, {}],
498
+ componentProps: {
499
+ label: string,
500
+ [string]: any
501
+ },
502
+ dependsOn?: string,
503
+ ignoreOnFetchFunction?: boolean
504
+ }): this
505
+ ```
506
+
507
+ - **setSecondaryFilters**: Permite atribuir de maneira manual todo o Array de filtro secundário.
508
+ ```javascript
509
+ crudViewConfigs.setSecondaryFilters([
510
+ {
511
+ column: string,
512
+ filterComponent: "v-autocomplete" | "v-checkbox" | "date-picker",
513
+ itemsArray?: any[],
514
+ initialValue?: any | null,
515
+ endpoint?: [string, {}],
516
+ componentProps: {
517
+ label: string,
518
+ [string]: any
519
+ },
520
+ dependsOn?: string,
521
+ ignoreOnFetchFunction?: boolean
522
+ }...
523
+ ]) : this
524
+ ```
525
+
526
+ - **addTableOption**: Adiciona uma opção referente a uma coluna na tabela principal no Array de tableOptions.
527
+ ```javascript
528
+ crudViewConfigs.addTableOption({
529
+ column: string,
530
+ itemsArray?: any[],
531
+ endpoint?: [string, {}],
532
+ formatter?: (value: any) => any
533
+ filterFunction?: () => any[]
534
+ ignoreOnFetchFunction?: boolean
535
+ }): this
536
+ ```
537
+
538
+ - **setTableOptions**: Permite atribuir de maneira manual todo o Array de tableOptions.
539
+ ```javascript
540
+ crudViewConfigs.setTableOptions([
541
+ {
542
+ column: string,
543
+ itemsArray?: any[],
544
+ endpoint?: [string, {}],
545
+ formatter?: (value: any) => any
546
+ filterFunction?: () => any[]
547
+ ignoreOnFetchFunction?: boolean
548
+ }...
549
+ ]): this
550
+ ```
551
+
552
+ - **setFormModel**: Adiciona o modelo base de dados do formulário.
553
+ ```javascript
554
+ crudViewConfigs.setFormModel(any{}): this
555
+ ```
556
+
557
+ - **addFormOption**: Adiciona uma opção referente a uma coluna do formulario no Array de formOptions.
558
+ ```javascript
559
+ crudViewConfigs.addFormOption({
560
+ column: string,
561
+ itemsArray?: any[],
562
+ dependsOn?: string,
563
+ endpoint?: [string, {}],
564
+ ignoreOnFetchFunction?: boolean,
565
+ hooks?: {
566
+ afterChange?: (item: any) => any
567
+ beforeChange?: (item: any) => any
568
+ }
569
+ }): this
570
+ ```
571
+
572
+ - **setFormOptions**: Permite atribuir de maneira manual todo o Array de formOptions.
573
+ ```javascript
574
+ crudViewConfigs.setFormOptions([{
575
+ column: string,
576
+ itemsArray?: any[],
577
+ dependsOn?: string,
578
+ endpoint?: [string, {}],
579
+ ignoreOnFetchFunction?: boolean,
580
+ hooks?: {
581
+ afterChange?: (item) => any,
582
+ beforeChange?: (item) => any
583
+ }}]): this
584
+ ```
585
+
586
+ - **setFormHooks**: Permite atribuir de maneira manual todos os hooks do formulário.
587
+ ```javascript
588
+ crudViewConfigs.setFormHooks({
589
+ beforeSetItem?: (item: any) => any | Promise<any>,
590
+ afterSetItem?: (item: any) => any | Promise<any>
591
+ }): this
592
+ ```
593
+
594
+ - **addFormHook**: Permite atribuir de maneira manual todos os hooks do formulário.
595
+ ```javascript
596
+ crudViewConfigs.addFormHook(key: 'beforeSetItem' | 'afterSetItem', (item: any) => any | Promise<any> ): this
597
+ ```
598
+
599
+ - **setPaginationSettings**: Permite atribuir de maneira manual o objeto paginationSettings.
600
+ ```javascript
601
+ crudViewConfigs.setPaginationSettings({
602
+ page: number,
603
+ itemsPerPage: number,
604
+ itemsPerPageOption?: number[],
605
+ serverItemsLength?: number | null,
606
+ }): this
607
+ ```
608
+
@@ -49024,7 +49024,7 @@ class CrudViewConfigs {
49024
49024
  _defineProperty(this, "paginationSettings", {
49025
49025
  page: 1,
49026
49026
  itemsPerPage: 15,
49027
- serverItemsLength: 0,
49027
+ serverItemsLength: null,
49028
49028
  sortBy: [],
49029
49029
  sortDesc: [],
49030
49030
  itemsPerPageOptions: [5, 10, 15, 25, 50, 100, -1]
@@ -49399,7 +49399,8 @@ class CrudViewConfigs {
49399
49399
  itemsArray = [],
49400
49400
  dependsOn = "",
49401
49401
  endpoint = [],
49402
- hooks = {}
49402
+ hooks = {},
49403
+ ignoreOnFetchFunction = false
49403
49404
  } = {}) {
49404
49405
  const hooksKeys = Object.keys(hooks);
49405
49406
  for (const hookKey of hooksKeys) {
@@ -49412,7 +49413,8 @@ class CrudViewConfigs {
49412
49413
  loading: false,
49413
49414
  endpoint: this.isValidEndpoint(endpoint) ? endpoint : CrudViewConfigs.generateEndpoint(),
49414
49415
  dependsOn,
49415
- hooks
49416
+ hooks,
49417
+ ignoreOnFetchFunction
49416
49418
  });
49417
49419
  return this;
49418
49420
  }
@@ -49423,10 +49425,12 @@ class CrudViewConfigs {
49423
49425
  throw new Error(`O hook ${hookKey}, não esta disponivel como form hook!`);
49424
49426
  }
49425
49427
  this.formSettings.hooks = hooks;
49428
+ return this;
49426
49429
  }
49427
49430
  addFormHook(key = "", hookFunction) {
49428
49431
  if (!this.avalibleFormHooks.has(key)) throw new Error(`O hook ${key}, não esta disponivel como form hook!`);
49429
49432
  this.formSettings.hooks[key] = hookFunction;
49433
+ return this;
49430
49434
  }
49431
49435
  setPaginationSettings({
49432
49436
  page = 1,