@znap/components-vue2 1.0.10 → 1.0.11

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,257 +1,359 @@
1
- # @znap/components-vue2
2
1
 
3
- ### ⚡ Inicio Rapido
4
2
 
5
- Utilizando [pnpm](https://pnpm.io/)
6
- ```bash
7
- pnpm install @znap/components-vue2
8
- ```
3
+ ## Utilização da Classe Auxiliar **CrudViewConfigs**
9
4
 
10
- Utilizando [npm](https://npmjs.com/)
11
- ```bash
12
- npm install @znap/components-vue2
13
- ```
5
+ O intuito dessa classe é fornecer ao desenvolvedor uma interface padronizada de criação de telas, tornando o processo padronizado e de fácil aprendizado.
14
6
 
15
- No arquivo **main.js** do Vue.
7
+ 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.
16
8
 
17
- ```javascript
18
- import Vue from "vue";
19
- import * as ZnapComponents from '@znap/components-vue2';
9
+ ### Objeto de Estado (viewConfigs):
10
+ ```typescript
11
+ type AvalibleFilterComponents = "v-autocomplete" | "v-checkbox" | "date-picker"
12
+ type AvalibleFormOptionHooks = "afterChange" | "beforeChange"
13
+ type AvalibleFilterOptionHooks = "afterChange"
14
+ type AvalibleFormHooks = "beforeSetItem" | "afterSetItem"
15
+ type Endpoint = [string, {[key: string]: any}]
16
+ type ComponentProps = {
17
+ required?: boolean
18
+ multiple?: boolean
19
+ label: string
20
+ range?: string
21
+ [key: string] : any
22
+ }
20
23
 
21
- // -- Configuraçoes do Hands on Table (Opicional)
22
- import { registerAllModules } from "handsontable/registry";
23
- import { registerLanguageDictionary, ptBR } from "handsontable/i18n";
24
- import numbro from "numbro";
25
- import numbroptBR from "numbro/dist/languages/pt-BR.min.js";
24
+ interface FiltersInterface {
25
+ column: string
26
+ filterComponent: AvalibleFilterComponents
27
+ itemsArray: any[]
28
+ initialValue: any
29
+ endpoint: Endpoint
30
+ componentProps: ComponentProps
31
+ hooks: AvalibleFilterOptionHooks
32
+ dependsOn: string
33
+ ignoreOnFetchFunction: boolean
34
+ }
26
35
 
27
- numbro.registerLanguage(numbroptBR);
28
- numbro.setLanguage("pt-BR");
29
- registerAllModules();
30
- registerLanguageDictionary(ptBR);
31
- // -- Fim
36
+ interface TableOptionsInterface {
37
+ column: string
38
+ itemsArray: any[]
39
+ endpoint: Endpoint
40
+ formatter: (value: any) => any
41
+ filterFunction: () => any[]
42
+ ignoreOnFetchFunction: boolean
43
+ }
32
44
 
33
- Vue.use(ZnapComponents.plugin, {
34
- licenseKey: HOT_TABLE_LICENSE_KEY // CHAVE DE UTILIZAÇAO DO HANDS ON TABLE
35
- })
36
- ```
45
+ interface FormOptionsInterface {
46
+ column: string
47
+ itemsArray: any[]
48
+ dependsOn: any
49
+ endpoint: Endpoint
50
+ hooks: AvalibleFormOptionHooks
51
+ ignoreOnFetchFunction: boolean
52
+ }
37
53
 
38
- ### Estrutura de importaçao da lib:
54
+ const viewConfigs = {
55
+ tableName: string,
56
+ tableIcon: string,
57
+ headers: [],
58
+ columns: [],
59
+ apiData: any[],
60
+ useServerSidePagination: boolean,
61
+ useServerSideSearch: boolean,
62
+ paginationSettings: {
63
+ page: number,
64
+ itemsPerPage: number,
65
+ itemsPerPageOptions: number[],
66
+ serverItemsLength: number | null
67
+ },
68
+ searchColums: string[],
69
+ primaryKey: string,
70
+ loading: boolean,
71
+ rowsChanged: Set<number>,
72
+ filters: {
73
+ primary: FiltersInterface[]
74
+ secondary: FiltersInterface[]
75
+ search: ''
76
+ },
77
+ currentFilters: {
78
+ primary: any[]
79
+ secondary: any[]
80
+ search: ''
81
+ },
82
+ tableOptions: TableOptionsInterface[],
83
+ formSettings: {
84
+ baseModel: {
85
+ [string]: any
86
+ },
87
+ formOptions: FormOptionsInterface[],
88
+ hooks: {
89
+ beforeSetItem: (item: any) => any | Promise<any>,
90
+ afterSetItem: (item: any) => any | Promise<any>,
91
+ },
92
+ loading: false,
93
+ },
94
+ endpoint: Endpoint,
95
+ hasFetch: boolean,
96
+ }
97
+ ```
39
98
 
40
- ```javascript
41
- import * as ZnapComponents from '@znap/components-vue2';
99
+ - **tableName**: O texto que será exibido como título da página.
42
100
 
43
- // ZnapComponents.plugin: Plugin de instalaçao global de todos com componentes para utilizaçao sem importaçao no template vue.
101
+ - **tableIcon**: O ícone que será exibido ao lado do título da página.
44
102
 
45
- // ZnapComponents.components: Retorna todos os componentes exportados pela lib
103
+ - **headers**: Array de headers que é retornado do back-end.
104
+
105
+ - **columns**: Array de colunas retornado do back-end.
106
+
107
+ - **apiData**: Array de dados que será exibido na tabela.
46
108
 
47
- // ZnapComponents.utils: Retorna todas as funçoes uteis exportadas pela lib
48
- ```
109
+ - **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.
110
+
111
+ - **hasFetch**: Booleano que indica que já ocorreu o fetch de dados da página.
112
+
113
+ - **useServerSidePagination**: Booleano para controlar a paginação do lado servidor.
49
114
 
50
- ### Utilizaçao do ZnapBaseCrudView
51
-
52
- ```javascript
53
- <template>
54
- <ZnapBaseCrudView
55
- v-if="viewSettings"
56
- ref="baseCrudViewRef"
57
- v-bind="viewSettings"
58
- :onReload="onReload"
59
- :onExport="onExportFile"
60
- :onImport="onImportFile"
61
- :onSave="onSave"
62
- :onDelete="onDelete"
63
- @update:rows-changed="updateRowsChanged"
64
- @update:row="updateRow"
65
- >
66
- <template v-slot:footer-prepend>
67
- Slot para adicionar elementos do lado esquerdo dos componentes de paginaçao.
68
- </template>
69
- </ZnapBaseCrudView>
70
- </template>
71
-
72
- <script>
73
- import Vue from "vue";
74
- import { utils as ZnapUtils } from "@znap/components-vue2";
75
-
76
- export default {
77
- data: () => ({
78
- viewSettings: null,
79
- viewMethods: null,
80
- }),
81
-
82
- async created() {
83
- const { CrudViewConfigs } = ZnapUtils; // Importar a classe CrudViewConfigs da utils para gerar o template de dados da tela
84
-
85
- const crudViewConfigs = new CrudViewConfigs({
86
- viewTitle: "Titulo da pagina",
87
- viewIcon: "icone_da_pagina",
88
- primaryKey: "chave_primaria_da_tela",
89
- endpoint: CrudViewConfigs.generateEndpoint(
90
- "URL", {} // parametros
91
- ),
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
94
- });
95
-
96
- crudViewConfigs
97
- .addPrimaryFilter({
98
- 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
102
- endpoint?: CrudViewConfigs.generateEndpoint(
103
- "URL", {} // parametros
104
- ),
105
- componentProps: {
106
- label: "Grupo empresarial",
107
- 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
110
- 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
113
- hooks?: {
114
- afterChange: () => {
115
- // Hook que sera disparado apos a mudança do valor
116
-
117
- // * Pode ser utilizado para alterar os dados de outros filtros, ou entao realizar chamadas asincronas para atualizar o array de dados.
118
- }
119
- }
120
- })
121
-
122
- crudViewConfigs
123
- .addSecondaryFilter({
124
- 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
128
- endpoint?: CrudViewConfigs.generateEndpoint(
129
- "URL", {} // parametros
130
- ),
131
- componentProps: {
132
- label: "Empresa",
133
- clearable?: true,
134
- multiple?: false // Se for um v-autocomplete permite selecionar varios items
135
- range?: false // Se for um date-picker permite selecionar um range de data.
136
- }, // Props que sera passada para o componente
137
- dependsOn?: '' // Filtro secundario que possui dependencia
138
- hooks?: {
139
- afterChange: () => {
140
- // Hook que sera disparado apos a mudança do valor
141
-
142
- // * Pode ser utilizado para alterar os dados de outros filtros, ou entao realizar chamadas asincronas para atualizar o array de dados.
143
- }
144
- }
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
- // parametros
154
- }
155
- ),
156
- formatter?: (value) => {
157
- // Logica para formatar o dado quando for exibir na tabela, sem alterar o dado original
158
- }
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.
161
-
162
- // Deve sempre retornar um array
163
- }
164
- })
165
-
166
-
167
- crudViewConfigs
168
- .addFormOption({
169
- column: "chave_que_recebera_as_options",
170
- dependsOn?: 'chave_que_dependa_que_tenha_valor'
171
- itemsArray?: [] // Array de itens iniciais
172
- endpoint?: CrudViewConfigs.generateEndpoint(
173
- "URL", {} // parametros
174
- ),
175
- hooks?: {
176
- afterChange: (item) =>{
177
- // Logica que ira disparar apos o valor ser alterado
178
-
179
- // * Pode ser utilizado para alterar os dados ou entao realizar chamadas asincronas para atualizar o array de dados.
180
- }
181
- beforeChange: (item) => {
182
- // Logica que ira disparar antes do valor ser alterado
183
-
184
- // * Pode ser utilizado para alterar os dados ou entao realizar chamadas asincronas para atualizar o array de dados.
185
- }
186
- }
187
- })
188
-
189
- crudViewConfigs.setFormModel({
190
- // Modelo inicial do formulario
191
- });
192
-
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.
115
+ - **useServerSideSearch**: Booleano para controlar a busca do lado servidor. **Se
116
+ useServerSidePagination for True, essa opção deve ser True também.**
117
+
118
+ - **paginationSettings**: Objeto de configuração de paginação.
119
+ - **page**: Pagina atual.
120
+ - **itemsPerPage**: Quantidade de itens por pagina.
121
+ - **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.**
122
+ - **itemsPerPageOptions**: Array com as opções de itemsPerPage: Para ter a opçao **Todos** o valor **-1 deve ser atribuído no Array**.
195
123
 
124
+ - **searchColums**: Array com as colunas que serão utilizadas na busca por texto.
196
125
 
197
- // Pode usar os metodos das classe CrudViewConfigs ou entao criar os proprios de acordo com a necessidade.
198
- await Promise.all([
199
- this.viewMethods.fetchFiltersData(this.viewSettings.filters, this.$http),
200
- this.viewMethods.fetchTableOptionsData(
201
- this.viewSettings.tableOptions,
202
- this.$http
203
- ),
204
- this.viewMethods.fetchFormOptionsData(
205
- this.viewSettings.formSettings.formOptions,
206
- this.$http
207
- ),
208
- ]);
209
-
210
- this.fetchData()
211
- },
212
- methods: {
213
- updateRowsChanged() {
214
- 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
- }
216
- updateRow() {
217
- this.$set(this.viewSettings.apiData, rowIndex, data); // Importante para o vue detectar que teve alteraçao no elemento da tabela.
218
- }
219
- async onReload() {
220
- // Logica de como sera tratado o evento de reload.
221
- }
222
- async onExportFile() {
223
- // Logica de como sera tratado o evento de exportaçao de arquivo.
224
- }
225
- async onImportFile(
226
- event // evento contendo o elemento do input de arquivo
227
- ) {
228
- // Logica de como sera tratado o evento de importaçao de arquivo.
229
- }
230
- 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
- }) {
234
- // Logica de como sera tratado o evento de salvamento de registro(s)
235
- }
236
- async onDelete(
237
- rows // Array com as linhas que devem ser excluidas
238
- ) {
239
- // Logica de como sera tratado o evento de exclusao de registro(s)
240
- }
241
- async fetchData() {
242
- // Logica de busca de dados principais
243
- }
244
- }
126
+ - **primaryKey**: Chave primária da tela.
127
+
128
+ - **loading**: Booleano que controla o estado de loading da tela.
129
+
130
+ - **rowsChanged**: Set contendo os **índices físicos** das linhas que foram alterados.
131
+
132
+ - **filters**: Objeto de filtros.
133
+ - **primary**: Array contendo todos os filtros primários
134
+ - **secondary**: Array contendo todos os filtros secundários
135
+ - **search**: String que será utilizada em busca por texto.
136
+
137
+ - **currentFilters**: Objeto contendo os filtros que realmente estão selecionados após o fetch de dados.
138
+ - **primary**: Array contendo os valores selecionados nos filtros primários.
139
+ - **secondary**: Array contendo os valores selecionados nos filtros secundários.
140
+ - **search**: String contendo o filtro de texto selecionado.
141
+
142
+ - **tableOptions**: Array contendo as opções das colunas da tabela.
143
+
144
+ - **formSettings**: Objeto de configurações do formulário:
145
+ - **baseModel**: Objeto contendo a estrutura inicial do objeto do item a ser criado/editado.
146
+ - **formOptions**: Array contendo as opçoes dos campos do formulário.
147
+ - **hooks**: Objeto contendo as funçoes de hooks do formulário:
148
+ - **beforeSetItem**: Função a ser executada antes do item ser atribuído ao formulário.
149
+ - **afterSetItem**: Função a ser executada após o item ser atribuído ao formulário.
150
+
151
+ ### Objeto de métodos (viewMethods)
152
+ ```typescript
153
+ type KeysToValidate = 'search' | 'primary' | 'secondary'
154
+ type FetcherReturn = {data: {rows: any[]}, [key: string]: any}
155
+ type HttpFetcher = {
156
+ post: (url: string, params: {[key: string] : any}) => Promise<FetcherReturn>,
157
+ get: (url: string) => Promise<FetcherReturn>,
158
+ delete: (url: string) => Promise<FetcherReturn>,
245
159
  }
246
- </script>
247
160
 
161
+ const viewMethods = {
162
+ getFilters: (filters, searchColums) => void,
163
+ fetchTableOptionsData: (tableOptions, httpFetcher: HttpFetcher) => void,
164
+ fetchFormOptionsData: (formOptions, httpFetcher: HttpFetcher) => void,
165
+ fetchFiltersData: (filters, httpFetcher: HttpFetcher) => void,
166
+ setCurrentFilters: (filters) => void,
167
+ validateFiltersKeyHaveChange: (filters, currentFilters, keysToValidate: KeysToValidate[] ) => boolean,
168
+ }
248
169
  ```
249
-
250
-
251
- ### Utilizaçao da Classe Auxiliar **CrudViewConfigs**
252
-
253
- O intuito dessa classe é fornecer ao desenvolvedor uma interface padronizada de criaçao de telas, tornando o processo padronizado e de facil aprendizado.
254
-
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.
256
-
257
-
170
+ - **getFilters**: função responsável por retornar o array de condições de todos os filtros de maneira formatada para atribuir aos endpoints.
171
+ - Parâmetros:
172
+ - Objeto de filtros.
173
+ - Array de searchColums
174
+
175
+ - **fetchTableOptionsData**: função genérica responsável por realizar o fetch de todos os dados do Array de tableOptions.
176
+
177
+ - **fetchFormOptionsData**: função genérica responsável por realizar o fetch de todos os dados do Array de formOptions.
178
+
179
+ - **fetchFiltersData**: função genérica responsável por realizar o fetch de todos os dados do Array de filtros.
180
+
181
+ - **setCurrentFilters**: função que retorna os valores dos filtros selecionados.
182
+ - Parâmetros:
183
+ - Array de filtros.
184
+
185
+ - **validateFiltersKeyHaveChange**: função para validar se os filtros selecionados na tela possuem diferença com os filtros que de fato estão selecionados.
186
+ - Parâmetros:
187
+ - Objeto de filtros.
188
+ - Objeto de currentFilters
189
+ - Array com as chaves dos filtros que deseja comparar.
190
+
191
+ ### Métodos de geração do Estado inicial:
192
+ 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.
193
+
194
+ - Métodos Estáticos:
195
+ - **generateEndpoint**: Retorna o Array/Tupla de endpoint.
196
+ ```javascript
197
+ CrudViewConfigs.generateEndpoint(url: string, parâmetros?: {}): [string, {}]
198
+ ```
199
+
200
+ - Métodos da instância:
201
+ - **addPrimaryFilter**: Adiciona um filtro primário no array de filtros.
202
+ ```javascript
203
+ crudViewConfigs.addPrimaryFilter({
204
+ column: string,
205
+ filterComponent: "v-autocomplete" | "v-checkbox" | "date-picker",
206
+ itemsArray?: any[],
207
+ initialValue?: any | null,
208
+ endpoint?: [string, {}],
209
+ componentProps: {
210
+ label: string,
211
+ required?: boolean,
212
+ [string]: any
213
+ },
214
+ dependsOn?: string,
215
+ ignoreOnFetchFunction?: boolean
216
+ }): this
217
+ ```
218
+
219
+ - **setPrimaryFilters**: Permite atribuir de maneira manual todo o Array de filtros primários.
220
+ ```javascript
221
+ crudViewConfigs.setPrimaryFilters([
222
+ {
223
+ column: string,
224
+ filterComponent: "v-autocomplete" | "v-checkbox" | "date-picker",
225
+ itemsArray?: any[],
226
+ initialValue?: any | null,
227
+ endpoint?: [string, {}],
228
+ componentProps: {
229
+ label: string,
230
+ required?: boolean,
231
+ multiple?: boolean,
232
+ range?: boolean,
233
+ [string]: any
234
+ },
235
+ dependsOn?: string,
236
+ ignoreOnFetchFunction?: boolean
237
+ }...
238
+ ]): this
239
+ ```
240
+
241
+ - **addSecondaryFilter**: Adiciona um filtro secundário no array de filtro secundário.
242
+ ```javascript
243
+ crudViewConfigs.addSecondaryFilter({
244
+ column: string,
245
+ filterComponent: "v-autocomplete" | "v-checkbox" | "date-picker",
246
+ itemsArray?: any[],
247
+ initialValue?: any | null,
248
+ endpoint?: [string, {}],
249
+ componentProps: {
250
+ label: string,
251
+ [string]: any
252
+ },
253
+ dependsOn?: string,
254
+ ignoreOnFetchFunction?: boolean
255
+ }): this
256
+ ```
257
+
258
+ - **setSecondaryFilters**: Permite atribuir de maneira manual todo o Array de filtro secundário.
259
+ ```javascript
260
+ crudViewConfigs.setSecondaryFilters([
261
+ {
262
+ column: string,
263
+ filterComponent: "v-autocomplete" | "v-checkbox" | "date-picker",
264
+ itemsArray?: any[],
265
+ initialValue?: any | null,
266
+ endpoint?: [string, {}],
267
+ componentProps: {
268
+ label: string,
269
+ [string]: any
270
+ },
271
+ dependsOn?: string,
272
+ ignoreOnFetchFunction?: boolean
273
+ }...
274
+ ]) : this
275
+ ```
276
+
277
+ - **addTableOption**: Adiciona uma opção referente a uma coluna na tabela principal no Array de tableOptions.
278
+ ```javascript
279
+ crudViewConfigs.addTableOption({
280
+ column: string,
281
+ itemsArray?: any[],
282
+ endpoint?: [string, {}],
283
+ formatter?: (value: any) => any
284
+ filterFunction?: () => any[]
285
+ ignoreOnFetchFunction?: boolean
286
+ }): this
287
+ ```
288
+
289
+ - **setTableOptions**: Permite atribuir de maneira manual todo o Array de tableOptions.
290
+ ```javascript
291
+ crudViewConfigs.setTableOptions([
292
+ {
293
+ column: string,
294
+ itemsArray?: any[],
295
+ endpoint?: [string, {}],
296
+ formatter?: (value: any) => any
297
+ filterFunction?: () => any[]
298
+ ignoreOnFetchFunction?: boolean
299
+ }...
300
+ ]): this
301
+ ```
302
+
303
+ - **setFormModel**: Adiciona o modelo base de dados do formulário.
304
+ ```javascript
305
+ crudViewConfigs.setFormModel(any{}): this
306
+ ```
307
+
308
+ - **addFormOption**: Adiciona uma opção referente a uma coluna do formulario no Array de formOptions.
309
+ ```javascript
310
+ crudViewConfigs.addFormOption({
311
+ column: string,
312
+ itemsArray?: any[],
313
+ dependsOn?: string,
314
+ endpoint?: [string, {}],
315
+ ignoreOnFetchFunction?: boolean,
316
+ hooks?: {
317
+ afterChange?: (item: any) => any
318
+ beforeChange?: (item: any) => any
319
+ }
320
+ }): this
321
+ ```
322
+
323
+ - **setFormOptions**: Permite atribuir de maneira manual todo o Array de formOptions.
324
+ ```javascript
325
+ crudViewConfigs.setFormOptions([{
326
+ column: string,
327
+ itemsArray?: any[],
328
+ dependsOn?: string,
329
+ endpoint?: [string, {}],
330
+ ignoreOnFetchFunction?: boolean,
331
+ hooks?: {
332
+ afterChange?: (item) => any,
333
+ beforeChange?: (item) => any
334
+ }}]): this
335
+ ```
336
+
337
+ - **setFormHooks**: Permite atribuir de maneira manual todos os hooks do formulário.
338
+ ```javascript
339
+ crudViewConfigs.setFormHooks({
340
+ beforeSetItem?: (item: any) => any | Promise<any>,
341
+ afterSetItem?: (item: any) => any | Promise<any>
342
+ }): this
343
+ ```
344
+
345
+ - **addFormHook**: Permite atribuir de maneira manual todos os hooks do formulário.
346
+ ```javascript
347
+ crudViewConfigs.addFormHook(key: 'beforeSetItem' | 'afterSetItem', (item: any) => any | Promise<any> ): this
348
+ ```
349
+
350
+ - **setPaginationSettings**: Permite atribuir de maneira manual o objeto paginationSettings.
351
+ ```javascript
352
+ crudViewConfigs.setPaginationSettings({
353
+ page: number,
354
+ itemsPerPage: number,
355
+ itemsPerPageOption?: number[],
356
+ serverItemsLength?: number | null,
357
+ }): this
358
+ ```
359
+
@@ -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,