@sankhyalabs/sankhyablocks 8.16.0-dev.63 → 8.16.0-dev.65

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 (124) hide show
  1. package/dist/cjs/{ContinuousInsertUtils-414b772c.js → ContinuousInsertUtils-a6139f3d.js} +2 -2
  2. package/dist/cjs/{dataunit-fetcher-228016f4.js → dataunit-fetcher-0121621c.js} +1 -1
  3. package/dist/cjs/index-f9e81701.js +4 -0
  4. package/dist/cjs/loader.cjs.js +1 -1
  5. package/dist/cjs/{pesquisa-fetcher-2ec4811b.js → pesquisa-fetcher-a85d6935.js} +175 -0
  6. package/dist/cjs/pesquisa-grid_2.cjs.entry.js +127 -0
  7. package/dist/cjs/sankhyablocks.cjs.js +1 -1
  8. package/dist/cjs/snk-actions-button_5.cjs.entry.js +2 -2
  9. package/dist/cjs/snk-application.cjs.entry.js +140 -17
  10. package/dist/cjs/snk-attach.cjs.entry.js +2 -2
  11. package/dist/cjs/snk-crud.cjs.entry.js +5 -4
  12. package/dist/cjs/snk-data-exporter.cjs.entry.js +3 -3
  13. package/dist/cjs/{snk-data-unit-3d9b6ed4.js → snk-data-unit-c699179d.js} +1 -1
  14. package/dist/cjs/snk-data-unit.cjs.entry.js +2 -2
  15. package/dist/cjs/snk-detail-view.cjs.entry.js +3 -3
  16. package/dist/cjs/snk-filter-bar_4.cjs.entry.js +21 -7
  17. package/dist/cjs/snk-grid.cjs.entry.js +6 -5
  18. package/dist/cjs/{snk-guides-viewer-421555af.js → snk-guides-viewer-575596a2.js} +2 -2
  19. package/dist/cjs/snk-guides-viewer.cjs.entry.js +3 -3
  20. package/dist/cjs/snk-pesquisa.cjs.entry.js +105 -31
  21. package/dist/cjs/snk-simple-crud.cjs.entry.js +6 -5
  22. package/dist/collection/collection-manifest.json +2 -0
  23. package/dist/collection/components/snk-application/request-listener/DebouncedRequestListener.js +4 -3
  24. package/dist/collection/components/snk-application/snk-application.css +34 -0
  25. package/dist/collection/components/snk-application/snk-application.js +197 -14
  26. package/dist/collection/components/snk-crud/snk-crud.js +39 -20
  27. package/dist/collection/components/snk-filter-bar/snk-filter-bar.js +40 -8
  28. package/dist/collection/components/snk-grid/snk-grid.js +39 -20
  29. package/dist/collection/components/snk-pesquisa/pesquisa-grid/pesquisa-grid.css +10 -0
  30. package/dist/collection/components/snk-pesquisa/pesquisa-grid/pesquisa-grid.js +190 -0
  31. package/dist/collection/components/snk-pesquisa/pesquisa-tree/pesquisa-tree.css +25 -0
  32. package/dist/collection/components/snk-pesquisa/pesquisa-tree/pesquisa-tree.js +173 -0
  33. package/dist/collection/components/snk-pesquisa/pesquisaHelper.js +89 -0
  34. package/dist/collection/components/snk-pesquisa/snk-pesquisa.css +24 -5
  35. package/dist/collection/components/snk-pesquisa/snk-pesquisa.js +168 -32
  36. package/dist/collection/components/snk-simple-crud/snk-simple-crud.js +39 -20
  37. package/dist/collection/lib/dataUnit/dataUnitInMemoryUtils.js +1 -1
  38. package/dist/collection/lib/http/data-fetcher/fetchers/pesquisa-fetcher.js +89 -3
  39. package/dist/components/ContinuousInsertUtils.js +1 -2
  40. package/dist/components/ISave.js +346 -1
  41. package/dist/components/dataunit-fetcher.js +1 -1
  42. package/dist/components/index.d.ts +2 -0
  43. package/dist/components/index.js +2 -0
  44. package/dist/components/pesquisa-grid.d.ts +11 -0
  45. package/dist/components/pesquisa-grid.js +6 -0
  46. package/dist/components/pesquisa-grid2.js +86 -0
  47. package/dist/components/pesquisa-tree.d.ts +11 -0
  48. package/dist/components/pesquisa-tree.js +6 -0
  49. package/dist/components/pesquisa-tree2.js +76 -0
  50. package/dist/components/snk-actions-button2.js +0 -1
  51. package/dist/components/snk-application2.js +159 -20
  52. package/dist/components/snk-attach2.js +0 -1
  53. package/dist/components/snk-crud.js +5 -4
  54. package/dist/components/snk-data-exporter2.js +1 -2
  55. package/dist/components/snk-detail-view2.js +0 -1
  56. package/dist/components/snk-filter-bar2.js +23 -8
  57. package/dist/components/snk-grid2.js +5 -4
  58. package/dist/components/snk-pesquisa2.js +118 -33
  59. package/dist/components/snk-simple-crud2.js +6 -5
  60. package/dist/components/snk-simple-form-config2.js +1 -2
  61. package/dist/components/teste-pesquisa.js +13 -1
  62. package/dist/esm/{ContinuousInsertUtils-bab45060.js → ContinuousInsertUtils-15b5f1da.js} +2 -2
  63. package/dist/esm/{dataunit-fetcher-56cb648b.js → dataunit-fetcher-481e159d.js} +1 -1
  64. package/dist/esm/index-a7d3d3f1.js +4 -0
  65. package/dist/esm/loader.js +1 -1
  66. package/dist/esm/{pesquisa-fetcher-24e5bba0.js → pesquisa-fetcher-c437c9b1.js} +176 -2
  67. package/dist/esm/pesquisa-grid_2.entry.js +122 -0
  68. package/dist/esm/sankhyablocks.js +1 -1
  69. package/dist/esm/snk-actions-button_5.entry.js +2 -2
  70. package/dist/esm/snk-application.entry.js +142 -19
  71. package/dist/esm/snk-attach.entry.js +2 -2
  72. package/dist/esm/snk-crud.entry.js +5 -4
  73. package/dist/esm/snk-data-exporter.entry.js +3 -3
  74. package/dist/esm/{snk-data-unit-9fa7d2b9.js → snk-data-unit-d4ba54d7.js} +1 -1
  75. package/dist/esm/snk-data-unit.entry.js +2 -2
  76. package/dist/esm/snk-detail-view.entry.js +3 -3
  77. package/dist/esm/snk-filter-bar_4.entry.js +22 -8
  78. package/dist/esm/snk-grid.entry.js +6 -5
  79. package/dist/esm/{snk-guides-viewer-b740a1fe.js → snk-guides-viewer-3043422d.js} +2 -2
  80. package/dist/esm/snk-guides-viewer.entry.js +3 -3
  81. package/dist/esm/snk-pesquisa.entry.js +105 -31
  82. package/dist/esm/snk-simple-crud.entry.js +6 -5
  83. package/dist/sankhyablocks/{p-c629c07a.entry.js → p-08242e3f.entry.js} +1 -1
  84. package/dist/sankhyablocks/{p-342eeb3b.js → p-0f3b2a32.js} +1 -1
  85. package/dist/sankhyablocks/{p-72a451c8.js → p-229c3615.js} +1 -1
  86. package/dist/sankhyablocks/p-22d04eac.entry.js +1 -0
  87. package/dist/sankhyablocks/{p-b619ee23.js → p-36598f95.js} +1 -1
  88. package/dist/sankhyablocks/p-4895f6e4.entry.js +1 -0
  89. package/dist/sankhyablocks/p-4be4cdac.js +6 -0
  90. package/dist/sankhyablocks/{p-47d24ac8.js → p-58fd3017.js} +1 -1
  91. package/dist/sankhyablocks/p-70cb4e36.entry.js +11 -0
  92. package/dist/sankhyablocks/{p-64ff0fb6.entry.js → p-73fc8ec5.entry.js} +1 -1
  93. package/dist/sankhyablocks/{p-50306605.entry.js → p-7d09f66c.entry.js} +1 -1
  94. package/dist/sankhyablocks/{p-53ae0296.entry.js → p-a33e803a.entry.js} +1 -1
  95. package/dist/sankhyablocks/{p-89da2953.entry.js → p-b299dc14.entry.js} +1 -1
  96. package/dist/sankhyablocks/p-badbd2ca.entry.js +1 -0
  97. package/dist/sankhyablocks/p-c9bd54e6.entry.js +1 -0
  98. package/dist/sankhyablocks/{p-0d2a2e9e.entry.js → p-e2bd42c0.entry.js} +1 -1
  99. package/dist/sankhyablocks/p-e8512d4b.entry.js +1 -0
  100. package/dist/sankhyablocks/p-f71d043b.entry.js +1 -0
  101. package/dist/sankhyablocks/sankhyablocks.esm.js +1 -1
  102. package/dist/types/components/snk-application/snk-application.d.ts +22 -4
  103. package/dist/types/components/snk-crud/snk-crud.d.ts +8 -4
  104. package/dist/types/components/snk-filter-bar/snk-filter-bar.d.ts +6 -1
  105. package/dist/types/components/snk-grid/snk-grid.d.ts +8 -4
  106. package/dist/types/components/snk-pesquisa/pesquisa-grid/pesquisa-grid.d.ts +38 -0
  107. package/dist/types/components/snk-pesquisa/pesquisa-tree/pesquisa-tree.d.ts +28 -0
  108. package/dist/types/components/snk-pesquisa/pesquisaHelper.d.ts +19 -0
  109. package/dist/types/components/snk-pesquisa/snk-pesquisa.d.ts +35 -1
  110. package/dist/types/components/snk-simple-crud/snk-simple-crud.d.ts +8 -1
  111. package/dist/types/components.d.ts +206 -23
  112. package/dist/types/lib/http/data-fetcher/fetchers/pesquisa-fetcher.d.ts +10 -1
  113. package/package.json +1 -1
  114. package/react/components.d.ts +2 -0
  115. package/react/components.js +2 -0
  116. package/react/components.js.map +1 -1
  117. package/dist/components/pesquisa-fetcher.js +0 -172
  118. package/dist/sankhyablocks/p-0c55538b.entry.js +0 -1
  119. package/dist/sankhyablocks/p-65650e05.entry.js +0 -1
  120. package/dist/sankhyablocks/p-690b4311.entry.js +0 -1
  121. package/dist/sankhyablocks/p-8cf0a9fe.entry.js +0 -1
  122. package/dist/sankhyablocks/p-d1791da2.entry.js +0 -1
  123. package/dist/sankhyablocks/p-e6683406.js +0 -6
  124. package/dist/sankhyablocks/p-eda55eef.entry.js +0 -11
@@ -1,5 +1,8 @@
1
- import { ObjectUtils, StringUtils, ElementIDUtils } from '@sankhyalabs/core';
1
+ import { ElementIDUtils, ObjectUtils, StringUtils } from '@sankhyalabs/core';
2
2
  import { h, Host } from '@stencil/core';
3
+ import { buildGridMetadata } from './pesquisaHelper';
4
+ import { PesquisaFetcher } from '../../lib';
5
+ import { EzScrollDirection } from '@sankhyalabs/ezui/dist/collection/components/ez-scroller/EzScrollDirection';
3
6
  export class SnkPesquisa {
4
7
  constructor() {
5
8
  this._mdByName = {};
@@ -11,11 +14,18 @@ export class SnkPesquisa {
11
14
  this._changeDeboucingTimeout = null;
12
15
  this._limitCharsToSearch = 3;
13
16
  this._deboucingTime = 450;
17
+ this._gridDataSource = [];
18
+ this.pesquisaFetcher = new PesquisaFetcher();
14
19
  this._itemList = undefined;
15
20
  this._startLoading = false;
21
+ this._presentationMode = "list";
16
22
  this.searchLoader = undefined;
23
+ this.treeLoader = undefined;
17
24
  this.selectItem = undefined;
25
+ this.entityName = undefined;
18
26
  this.argument = undefined;
27
+ this.isHierarchyEntity = false;
28
+ this.allowsNonAnalytic = false;
19
29
  }
20
30
  observeArgument() {
21
31
  if (this._textInput) {
@@ -53,36 +63,42 @@ export class SnkPesquisa {
53
63
  this._startLoading = true;
54
64
  this.searchLoader(argument)
55
65
  .then((resp) => {
66
+ if (!resp)
67
+ return;
68
+ this.processSearchResponse(resp);
69
+ }).finally(() => {
56
70
  this._startLoading = false;
57
- if (resp) {
58
- resp = ObjectUtils.stringToObject(resp.json.$);
59
- let descriptionField = resp.descriptionField;
60
- let pkField = resp.pkField;
61
- if (pkField) {
62
- let newItemList = [];
63
- resp.data.forEach((item) => {
64
- var _a;
65
- let fieldsMetadata = this.filterFieldsMetadata(resp, item);
66
- let fields = this.buildFirstFields(item['__matchFields'], fieldsMetadata);
67
- let exibitionItem = {
68
- key: this.highlightValue(item['__matchFields'], (_a = item[pkField]) === null || _a === void 0 ? void 0 : _a.toString(), fields, true),
69
- title: descriptionField ? this.highlightValue(item['__matchFields'], item[descriptionField], fields, true) : "",
70
- details: this.buildDetails(fields, item)
71
- };
72
- newItemList.push(exibitionItem);
73
- });
74
- this._itemList = newItemList;
75
- }
76
- }
77
- }).catch((error) => {
78
- this._startLoading = false;
79
- this._itemList = [];
80
- console.warn(error);
81
71
  });
82
72
  }
83
73
  }
74
+ processSearchResponse(resp) {
75
+ resp = ObjectUtils.stringToObject(resp.json.$);
76
+ let descriptionField = resp.descriptionField;
77
+ let pkField = resp.pkField;
78
+ if (!pkField)
79
+ return;
80
+ this._gridMetadata = buildGridMetadata(resp);
81
+ this._gridDataSource = [...resp.data];
82
+ this._pkField = pkField;
83
+ this._descriptionField = descriptionField;
84
+ this._itemList = this.buildCardItemList(resp, pkField, descriptionField);
85
+ }
86
+ buildCardItemList(resp, pkField, descriptionField) {
87
+ var _a;
88
+ let newItemList = (_a = resp.data) === null || _a === void 0 ? void 0 : _a.map((item) => {
89
+ var _a;
90
+ let fieldsMetadata = this.filterFieldsMetadata(resp, item);
91
+ let fields = this.buildFirstFields(item['__matchFields'], fieldsMetadata);
92
+ return {
93
+ key: this.highlightValue(item['__matchFields'], (_a = item[pkField]) === null || _a === void 0 ? void 0 : _a.toString(), fields, true),
94
+ title: descriptionField ? this.highlightValue(item['__matchFields'], item[descriptionField], fields, true) : '',
95
+ details: this.buildDetails(fields, item),
96
+ };
97
+ });
98
+ return newItemList;
99
+ }
84
100
  filterFieldsMetadata(resp, item) {
85
- let fieldsMetadata = resp.fieldsMetadata.filter((field) => {
101
+ return resp.fieldsMetadata.filter((field) => {
86
102
  let accept = !StringUtils.isEmpty(item[field.fieldName]) &&
87
103
  field.visible !== false &&
88
104
  field.type !== 'B' &&
@@ -99,7 +115,6 @@ export class SnkPesquisa {
99
115
  }
100
116
  return accept;
101
117
  });
102
- return fieldsMetadata;
103
118
  }
104
119
  removeAtIndex(array, index) {
105
120
  if (index >= 0 && index < array.length) {
@@ -257,6 +272,7 @@ export class SnkPesquisa {
257
272
  this.selectItem(option);
258
273
  }
259
274
  onChangeValue(event) {
275
+ var _a;
260
276
  this.clearDeboucingTimeout();
261
277
  if (this._startLoading) {
262
278
  this._changeDeboucingTimeout = setTimeout(() => {
@@ -265,6 +281,10 @@ export class SnkPesquisa {
265
281
  return;
266
282
  }
267
283
  this.argument = (event.detail || "").trim();
284
+ if (this.isHierarchyEntity && this._presentationMode === 'list') {
285
+ (_a = this._pesquisaTree) === null || _a === void 0 ? void 0 : _a.applyFilter();
286
+ return;
287
+ }
268
288
  const argumentNumber = this.getArgumentNumber();
269
289
  if (this.argument && (!isNaN(argumentNumber) || this.argument.length >= this._limitCharsToSearch)) {
270
290
  this._changeDeboucingTimeout = setTimeout(() => {
@@ -295,16 +315,59 @@ export class SnkPesquisa {
295
315
  : 'Nenhum registro encontrado'
296
316
  : 'Os resultados de sua pesquisa aparecerão aqui...';
297
317
  }
298
- componentDidLoad() {
318
+ async componentWillLoad() {
319
+ const mode = await this.pesquisaFetcher.loadPresentationConfig(this.entityName);
320
+ this._presentationMode = mode === 'list' ? 'list' : 'table';
321
+ }
322
+ async componentDidLoad() {
299
323
  ElementIDUtils.addIDInfo(this._element);
300
324
  }
325
+ async onClickList() {
326
+ this._presentationMode = this._presentationMode === 'list' ? 'table' : 'list';
327
+ await this.pesquisaFetcher.savePresentationConfig(this.entityName, this._presentationMode);
328
+ }
329
+ enableListButton() {
330
+ var _a;
331
+ return ((_a = this._itemList) === null || _a === void 0 ? void 0 : _a.length) > 0;
332
+ }
333
+ //Os limites de exibição são diferentes para lista e grade
334
+ hideLimitMessage() {
335
+ if (!this._itemList)
336
+ return true;
337
+ if (this._presentationMode === "list") {
338
+ if (this.isHierarchyEntity)
339
+ return true;
340
+ return this._itemList.length <= 100;
341
+ }
342
+ return this._itemList.length <= 150;
343
+ }
344
+ hideRecordsMessage() {
345
+ return (this._presentationMode === "list" && this.isHierarchyEntity);
346
+ }
347
+ renderContent() {
348
+ if (!this._itemList)
349
+ return;
350
+ if (this._presentationMode === 'list') {
351
+ return this.isHierarchyEntity ? this.renderTree() : this.renderCards();
352
+ }
353
+ return this.renderPesquisaGrid();
354
+ }
355
+ renderTree() {
356
+ return h("ez-scroller", { direction: EzScrollDirection.VERTICAL }, h("pesquisa-tree", { ref: (element) => this._pesquisaTree = element, argument: this.argument, treeLoader: this.treeLoader, allowsNonAnalytic: this.allowsNonAnalytic, onPesquisaTreeSelectItem: ({ detail }) => this.selectItem(detail) }));
357
+ }
358
+ renderCards() {
359
+ return (h("ez-scroller", { direction: EzScrollDirection.VERTICAL }, h("div", { class: "snk-pesquisa__cards-container" }, this._itemList.map((item) => {
360
+ return (h("ez-card-item", { onEzClick: (event) => this.createOption(event.detail), item: item }));
361
+ }))));
362
+ }
363
+ renderPesquisaGrid() {
364
+ return h("pesquisa-grid", { metadata: this._gridMetadata, dataSource: this._gridDataSource, pkField: this._pkField, descriptionField: this._descriptionField, entityName: this.entityName, onPesquisaGridSelectItem: ({ detail }) => this.selectItem(detail) });
365
+ }
301
366
  render() {
302
367
  var _a;
303
368
  return (h(Host, null, h("div", { class: "snk-pesquisa" }, h("div", { class: "snk-pesquisa__input" }, h("ez-text-input", { label: "Buscar", class: "ez-margin-right--medium", canShowError: false, ref: (ref) => this._textInput = ref, onEzChange: (event) => this.onChangeValue(event), value: this.argument, "data-element-id": "searchInput" }, h("ez-icon", { slot: "leftIcon", iconName: "search" }), this.argument && ((_a = this._textInput) === null || _a === void 0 ? void 0 : _a.value)
304
369
  ? h("button", { slot: "rightIcon", class: "snk-pesquisa__btn", onClick: () => this.clearSearch() }, h("ez-icon", { iconName: "close" }))
305
- : undefined), h("ez-button", { class: "ez-button--primary", label: "Pesquisar", onClick: () => this.onClickSearch() })), h("label", { class: "snk-pesquisa__records" }, this.getMessageView()), h("div", { class: "snk-pesquisa__content" }, this._itemList && this._itemList.map((item) => {
306
- return (h("ez-card-item", { onEzClick: (event) => this.createOption(event.detail), item: item }));
307
- })))));
370
+ : undefined), h("ez-button", { class: "ez-button--primary", label: "Pesquisar", onClick: () => this.onClickSearch() }), h("ez-button", { class: "ez-margin-left--medium", mode: "icon", iconName: this._presentationMode === 'list' ? 'table' : 'list', title: this._presentationMode === 'list' ? 'Modo grade' : 'Modo lista', onClick: async () => await this.onClickList(), enabled: this.enableListButton() })), h("div", { class: "snk-pesquisa__records-label" }, h("label", { class: `snk-pesquisa__records ${this.hideRecordsMessage() ? "hidden" : ""}` }, this.getMessageView()), h("label", { class: `snk-pesquisa__records-limit ${this.hideLimitMessage() ? "hidden" : ""}` }, "Essa pesquisa foi limitada, existem mais resultados.")), h("div", { class: "snk-pesquisa__content" }, this.renderContent()))));
308
371
  }
309
372
  static get is() { return "snk-pesquisa"; }
310
373
  static get encapsulation() { return "scoped"; }
@@ -339,6 +402,25 @@ export class SnkPesquisa {
339
402
  "text": "Fun\u00E7\u00E3o respons\u00E1vel em carregar os itens do componente snk-pesquisa."
340
403
  }
341
404
  },
405
+ "treeLoader": {
406
+ "type": "unknown",
407
+ "mutable": false,
408
+ "complexType": {
409
+ "original": "(text: string) => Promise<any>",
410
+ "resolved": "(text: string) => Promise<any>",
411
+ "references": {
412
+ "Promise": {
413
+ "location": "global"
414
+ }
415
+ }
416
+ },
417
+ "required": false,
418
+ "optional": true,
419
+ "docs": {
420
+ "tags": [],
421
+ "text": "Fun\u00E7\u00E3o respons\u00E1vel por carregar a \u00E1rvore hier\u00E1rquica do componente"
422
+ }
423
+ },
342
424
  "selectItem": {
343
425
  "type": "unknown",
344
426
  "mutable": false,
@@ -359,6 +441,23 @@ export class SnkPesquisa {
359
441
  "text": "Fun\u00E7\u00E3o disparada ao selecionar um item."
360
442
  }
361
443
  },
444
+ "entityName": {
445
+ "type": "string",
446
+ "mutable": false,
447
+ "complexType": {
448
+ "original": "string",
449
+ "resolved": "string",
450
+ "references": {}
451
+ },
452
+ "required": false,
453
+ "optional": false,
454
+ "docs": {
455
+ "tags": [],
456
+ "text": "Nome da entidade onde a pesquisa \u00E9 aplicada."
457
+ },
458
+ "attribute": "entity-name",
459
+ "reflect": false
460
+ },
362
461
  "argument": {
363
462
  "type": "string",
364
463
  "mutable": true,
@@ -375,13 +474,50 @@ export class SnkPesquisa {
375
474
  },
376
475
  "attribute": "argument",
377
476
  "reflect": false
477
+ },
478
+ "isHierarchyEntity": {
479
+ "type": "boolean",
480
+ "mutable": false,
481
+ "complexType": {
482
+ "original": "boolean",
483
+ "resolved": "boolean",
484
+ "references": {}
485
+ },
486
+ "required": false,
487
+ "optional": false,
488
+ "docs": {
489
+ "tags": [],
490
+ "text": "Define se a popup de pesquisa possuir\u00E1 ou n\u00E3o modo Hierarquico."
491
+ },
492
+ "attribute": "is-hierarchy-entity",
493
+ "reflect": false,
494
+ "defaultValue": "false"
495
+ },
496
+ "allowsNonAnalytic": {
497
+ "type": "boolean",
498
+ "mutable": false,
499
+ "complexType": {
500
+ "original": "boolean",
501
+ "resolved": "boolean",
502
+ "references": {}
503
+ },
504
+ "required": false,
505
+ "optional": false,
506
+ "docs": {
507
+ "tags": [],
508
+ "text": "Define se permite sele\u00E7\u00E3o de items n\u00E3o anal\u00EDticos"
509
+ },
510
+ "attribute": "allows-non-analytic",
511
+ "reflect": false,
512
+ "defaultValue": "false"
378
513
  }
379
514
  };
380
515
  }
381
516
  static get states() {
382
517
  return {
383
518
  "_itemList": {},
384
- "_startLoading": {}
519
+ "_startLoading": {},
520
+ "_presentationMode": {}
385
521
  };
386
522
  }
387
523
  static get elementRef() { return "_element"; }
@@ -34,13 +34,14 @@ export class SnkSimpleCrud {
34
34
  this._config = undefined;
35
35
  this._fieldToGetFocus = undefined;
36
36
  this._customContainerId = `SNK-SIMPLE-CRUD-CUSTOM-CONTAINER-${StringUtils.generateUUID()}`;
37
+ this.enableLockManagerLoadingComp = false;
38
+ this.enableLockManagerTaskbarClick = false;
37
39
  this.dataState = undefined;
38
40
  this.dataUnit = undefined;
39
41
  this.entityName = undefined;
40
42
  this.mode = SIMPLE_CRUD_MODE.SERVER;
41
43
  this.gridConfig = undefined;
42
44
  this.formConfig = undefined;
43
- this.enableLockManger = false;
44
45
  this._formFields = [];
45
46
  this._fieldsProps = new Map();
46
47
  this._enableContinuousInsert = true;
@@ -752,7 +753,7 @@ export class SnkSimpleCrud {
752
753
  }
753
754
  return (h("snk-data-unit", { ref: ref => this._snkDataUnit = ref, class: "simple-crud__container", dataUnit: this.dataUnit, useCancelConfirm: this.useCancelConfirm, onDataStateChange: evt => this.onDataStateChange(evt), onCancelEdition: this.handleCancelEdit.bind(this), pageSize: this.getPageSize(), onInsertionMode: this.handleDataUnitOnInsertionMode.bind(this), onDataUnitReady: (evt) => this.dataUnitReady.emit(evt.detail), ignoreSaveMessage: this._currentViewMode === VIEW_MODE.GRID, onMessagesBuilderUpdated: evt => this.messagesBuilder = evt.detail, onDataUnitFieldsHidded: this.updateFormConfig.bind(this), domainMessagesBuilder: this.domainMessagesBuilder }, h("header", null, h("slot", { name: "snkSimpleCrudHeader" })), h("section", { class: `ez-box ${this.outlineMode ? 'ez-box--outline' : 'ez-box--shadow'} simple-crud__container-section` }, h("ez-view-stack", { ref: (ref) => this._viewStack = ref, "data-element-id": "simple-crud" }, h("stack-item", null, h("ez-grid", { class: "ez-margin-bottom--large", ref: ref => this._grid = ref, dataUnit: this.dataUnit, config: this.gridConfig, "no-header": true, multipleSelection: this.multipleSelection, onEzDoubleClick: () => this.goToView(VIEW_MODE.FORM), onConfigChange: evt => this.gridConfigChangeHandler(evt), columnfilterDataSource: this.dataUnit.name && this.dataUnit.name.includes(InMemoryLoader.IN_MEMORY_DATA_UNIT_NAME)
754
755
  ? undefined
755
- : this._multiSelectionListDataSource, useEnterLikeTab: this.useEnterLikeTab, autoFocus: this.autoFocus, enableGridInsert: this.enableGridInsert, enableContinuousInsert: this._enableContinuousInsert, enableLockManger: this.enableLockManger, outlineMode: this.outlineMode }, this.renderTaskbarContent(), h("div", { slot: "footer" }, h("slot", { name: "snkSimpleCrudFooter" })))), h("stack-item", null, this.renderTaskbarContent(), h("ez-form", { ref: (ref) => this._form = ref, class: `ez-margin-top--large`, dataUnit: this.dataUnit, config: this.getFormConfig(), fieldToFocus: this._fieldToGetFocus, onEzFormSetFields: (evt) => this.handleFormSetFields(evt.detail), onEzFormRequestClearFieldToFocus: this.clearFieldToFocusHandler.bind(this) }), h("snk-simple-form-config", { ref: (ref) => this._snkSimpleFormConfig = ref, dataUnit: this.dataUnit, onSnkConfigSaved: this.handleFormConfigSaved.bind(this), configName: (_a = this.formLegacyConfigName) !== null && _a !== void 0 ? _a : this.configName })), this.messagesBuilder && h("snk-configurator", { ref: (ref) => this._snkConfigurator = ref, viewMode: this._currentViewMode, messagesBuilder: this.messagesBuilder, onConfigSelected: (evt) => this.goToView(evt.detail), onOpenConfig: (evt) => this.openConfig(evt.detail), showActionButtons: this.showConfiguratorButtons, onSave: evt => this.handleConfiguratorEvent(evt, 'SAVE'), onCancel: evt => this.handleConfiguratorEvent(evt, 'CANCEL'), resourceID: this.resolveResourceID(), customContainerId: this._customContainerId })), h("div", { id: `${this._customContainerId}` }, h("slot", { name: "SnkConfigContainerSlot" }))), h("ez-modal", { modalSize: "small", closeEsc: false, closeOutsideClick: false, opened: this._showPopUpGridConfig, onEzCloseModal: () => this.closeGridConfig() }, h("snk-grid-config", { ref: ref => this._snkGridConfig = ref, config: this.gridConfig, "data-element-id": this._element.getAttribute(ElementIDUtils.DATA_ELEMENT_ID_ATTRIBUTE_NAME), selectedIndex: 0, configName: this.configName, onConfigChange: (evt) => this.modalConfigChangeHandler(evt), onConfigCancel: () => this.closeGridConfig(), resourceID: this.resolveResourceID() }))));
756
+ : this._multiSelectionListDataSource, useEnterLikeTab: this.useEnterLikeTab, autoFocus: this.autoFocus, enableGridInsert: this.enableGridInsert, enableContinuousInsert: this._enableContinuousInsert, enableLockManagerTaskbarClick: this.enableLockManagerTaskbarClick, enableLockManagerLoadingComp: this.enableLockManagerLoadingComp, outlineMode: this.outlineMode }, this.renderTaskbarContent(), h("div", { slot: "footer" }, h("slot", { name: "snkSimpleCrudFooter" })))), h("stack-item", null, this.renderTaskbarContent(), h("ez-form", { ref: (ref) => this._form = ref, class: `ez-margin-top--large`, dataUnit: this.dataUnit, config: this.getFormConfig(), fieldToFocus: this._fieldToGetFocus, onEzFormSetFields: (evt) => this.handleFormSetFields(evt.detail), onEzFormRequestClearFieldToFocus: this.clearFieldToFocusHandler.bind(this) }), h("snk-simple-form-config", { ref: (ref) => this._snkSimpleFormConfig = ref, dataUnit: this.dataUnit, onSnkConfigSaved: this.handleFormConfigSaved.bind(this), configName: (_a = this.formLegacyConfigName) !== null && _a !== void 0 ? _a : this.configName })), this.messagesBuilder && h("snk-configurator", { ref: (ref) => this._snkConfigurator = ref, viewMode: this._currentViewMode, messagesBuilder: this.messagesBuilder, onConfigSelected: (evt) => this.goToView(evt.detail), onOpenConfig: (evt) => this.openConfig(evt.detail), showActionButtons: this.showConfiguratorButtons, onSave: evt => this.handleConfiguratorEvent(evt, 'SAVE'), onCancel: evt => this.handleConfiguratorEvent(evt, 'CANCEL'), resourceID: this.resolveResourceID(), customContainerId: this._customContainerId })), h("div", { id: `${this._customContainerId}` }, h("slot", { name: "SnkConfigContainerSlot" }))), h("ez-modal", { modalSize: "small", closeEsc: false, closeOutsideClick: false, opened: this._showPopUpGridConfig, onEzCloseModal: () => this.closeGridConfig() }, h("snk-grid-config", { ref: ref => this._snkGridConfig = ref, config: this.gridConfig, "data-element-id": this._element.getAttribute(ElementIDUtils.DATA_ELEMENT_ID_ATTRIBUTE_NAME), selectedIndex: 0, configName: this.configName, onConfigChange: (evt) => this.modalConfigChangeHandler(evt), onConfigCancel: () => this.closeGridConfig(), resourceID: this.resolveResourceID() }))));
756
757
  }
757
758
  static get is() { return "snk-simple-crud"; }
758
759
  static get encapsulation() { return "scoped"; }
@@ -768,6 +769,42 @@ export class SnkSimpleCrud {
768
769
  }
769
770
  static get properties() {
770
771
  return {
772
+ "enableLockManagerLoadingComp": {
773
+ "type": "boolean",
774
+ "mutable": false,
775
+ "complexType": {
776
+ "original": "boolean",
777
+ "resolved": "boolean",
778
+ "references": {}
779
+ },
780
+ "required": false,
781
+ "optional": true,
782
+ "docs": {
783
+ "tags": [],
784
+ "text": "Define se o componente deve usar o LockManager para controle de carregamento da aplica\u00E7\u00E3o"
785
+ },
786
+ "attribute": "enable-lock-manager-loading-comp",
787
+ "reflect": false,
788
+ "defaultValue": "false"
789
+ },
790
+ "enableLockManagerTaskbarClick": {
791
+ "type": "boolean",
792
+ "mutable": false,
793
+ "complexType": {
794
+ "original": "boolean",
795
+ "resolved": "boolean",
796
+ "references": {}
797
+ },
798
+ "required": false,
799
+ "optional": true,
800
+ "docs": {
801
+ "tags": [],
802
+ "text": "Ativa o gerenciamento de locks na grade pela Taskbar."
803
+ },
804
+ "attribute": "enable-lock-manager-taskbar-click",
805
+ "reflect": false,
806
+ "defaultValue": "false"
807
+ },
771
808
  "dataState": {
772
809
  "type": "unknown",
773
810
  "mutable": false,
@@ -888,24 +925,6 @@ export class SnkSimpleCrud {
888
925
  "text": ""
889
926
  }
890
927
  },
891
- "enableLockManger": {
892
- "type": "boolean",
893
- "mutable": false,
894
- "complexType": {
895
- "original": "boolean",
896
- "resolved": "boolean",
897
- "references": {}
898
- },
899
- "required": false,
900
- "optional": true,
901
- "docs": {
902
- "tags": [],
903
- "text": ""
904
- },
905
- "attribute": "enable-lock-manger",
906
- "reflect": false,
907
- "defaultValue": "false"
908
- },
909
928
  "multipleSelection": {
910
929
  "type": "boolean",
911
930
  "mutable": false,
@@ -23,7 +23,7 @@ export function buildLoadDataResponse(recordsIn, dataUnit, request) {
23
23
  };
24
24
  return Promise.resolve({
25
25
  records: getPagesByRecords(records, offset, limit),
26
- paginationInfo: buildPaginationInfo(paginationInfoBuilderParams),
26
+ paginationInfo: dataUnit.pageSize ? buildPaginationInfo(paginationInfoBuilderParams) : undefined,
27
27
  });
28
28
  }
29
29
  export function applySorting(records, dataUnit, sorting) {
@@ -1,6 +1,7 @@
1
- import { ApplicationContext, DataType, ErrorException } from "@sankhyalabs/core";
2
- import { gql } from "graphql-request";
3
- import { DataFetcher } from "../DataFetcher";
1
+ import { parseGridConfig, parseLegacyTree } from '../../../../components/snk-pesquisa/pesquisaHelper';
2
+ import { ApplicationContext, DataType, ErrorException } from '@sankhyalabs/core';
3
+ import { gql } from 'graphql-request';
4
+ import { DataFetcher } from '../DataFetcher';
4
5
  export class PesquisaFetcher {
5
6
  constructor() {
6
7
  this._defaultPageSize = 100;
@@ -150,6 +151,91 @@ export class PesquisaFetcher {
150
151
  return;
151
152
  return listener[listenerType]({ argument, criteria, searchOptions });
152
153
  }
154
+ async loadPresentationConfig(entityName) {
155
+ var _a, _b;
156
+ let payload = buildLoadConfig(entityName);
157
+ const response = await DataFetcher.get().callServiceBroker("SystemUtilsSP.getConf", JSON.stringify(payload));
158
+ return (_b = (_a = response === null || response === void 0 ? void 0 : response.config) === null || _a === void 0 ? void 0 : _a.lastUsedMode) !== null && _b !== void 0 ? _b : 'list';
159
+ }
160
+ async savePresentationConfig(entityName, lastUsedMode) {
161
+ let payload = buildSaveConfig(entityName, lastUsedMode);
162
+ await DataFetcher.get().callServiceBroker("SystemUtilsSP.saveConf", JSON.stringify(payload));
163
+ }
164
+ async loadPesquisaGridConfig(entityName) {
165
+ const payload = buildLoadGridConfigPayload(entityName);
166
+ const response = await DataFetcher.get().callServiceBroker("GridConfig.getGridConfigFromJson", JSON.stringify(payload));
167
+ return parseGridConfig(response);
168
+ }
169
+ async savePesquisaGridConfig(entityName, columns) {
170
+ const payload = buildSaveGridConfigPayload(entityName, columns);
171
+ await DataFetcher.get().callServiceBroker("GridConfig.saveGridConfigFromJSON", JSON.stringify(payload));
172
+ }
173
+ async loadTree(entityName, argument, criteria, searchOptions) {
174
+ const requestBody = this.buildLoadTreeRequestBody(entityName, argument, criteria, searchOptions);
175
+ const response = await DataFetcher.get().callServiceBroker("Pesquisa.getStructuredData", JSON.stringify(requestBody));
176
+ return parseLegacyTree(response);
177
+ }
178
+ buildLoadTreeRequestBody(entityName, argument, criteria, searchOptions) {
179
+ var _a, _b, _c;
180
+ const listenerResult = this.applySearchListener(SearchListenerType.beforeSearch, entityName, argument, criteria, searchOptions);
181
+ console.log("criteria: ", criteria);
182
+ const incomeSearchOptions = (_a = listenerResult === null || listenerResult === void 0 ? void 0 : listenerResult.searchOptions) !== null && _a !== void 0 ? _a : searchOptions;
183
+ const rootEntity = incomeSearchOptions === null || incomeSearchOptions === void 0 ? void 0 : incomeSearchOptions.rootEntity;
184
+ const codeFieldName = incomeSearchOptions === null || incomeSearchOptions === void 0 ? void 0 : incomeSearchOptions.codeFieldName;
185
+ const expression = (_b = listenerResult === null || listenerResult === void 0 ? void 0 : listenerResult.criteria) === null || _b === void 0 ? void 0 : _b.expression;
186
+ const params = (_c = listenerResult === null || listenerResult === void 0 ? void 0 : listenerResult.criteria) === null || _c === void 0 ? void 0 : _c.params;
187
+ const instancia = {
188
+ 'nome': entityName,
189
+ 'nomeInstanciaLocal': rootEntity,
190
+ 'codeFieldName': codeFieldName,
191
+ };
192
+ if (expression) {
193
+ instancia['criterioLiteral'] = {
194
+ 'expressao': {
195
+ '$': expression,
196
+ },
197
+ 'parametro': params,
198
+ };
199
+ }
200
+ return {
201
+ 'instancia': instancia,
202
+ };
203
+ }
204
+ }
205
+ function buildLoadGridConfigPayload(entityName) {
206
+ return {
207
+ 'gridConfig': {
208
+ 'configName': `GrdCfgHtml5:grdcfg.dynaform.pesquisa.${entityName}`,
209
+ },
210
+ };
211
+ }
212
+ function buildSaveGridConfigPayload(entityName, columns) {
213
+ const field = {};
214
+ columns === null || columns === void 0 ? void 0 : columns.forEach((col, index) => field[`field${index}`] = col);
215
+ return {
216
+ 'gridConfig': {
217
+ 'compactMode': true,
218
+ 'configName': `GrdCfgHtml5:grdcfg.dynaform.pesquisa.${entityName}`,
219
+ field,
220
+ },
221
+ };
222
+ }
223
+ function buildLoadConfig(entityName) {
224
+ return {
225
+ 'config': {
226
+ 'chave': `PesquisaContent:${entityName}`,
227
+ 'tipo': 'T',
228
+ },
229
+ };
230
+ }
231
+ function buildSaveConfig(entityName, lastUsedMode) {
232
+ return {
233
+ 'config': {
234
+ lastUsedMode,
235
+ 'chave': `PesquisaContent:${entityName}`,
236
+ 'tipo': 'T',
237
+ }
238
+ };
153
239
  }
154
240
  function convertParamType(dataType) {
155
241
  //Alerta: Cuidado pra não contaminar o DataType com a implementação
@@ -1,7 +1,6 @@
1
1
  import { D as DataFetcher } from './DataFetcher.js';
2
- import './pesquisa-fetcher.js';
3
- import { SortMode, ApplicationContext, UserInterface, DateUtils, ObjectUtils, StringUtils, NumberUtils, DataType } from '@sankhyalabs/core';
4
2
  import './ISave.js';
3
+ import { SortMode, ApplicationContext, UserInterface, DateUtils, ObjectUtils, StringUtils, NumberUtils, DataType } from '@sankhyalabs/core';
5
4
  import '@sankhyalabs/ezui/dist/collection/utils/constants';
6
5
  import { UserInterface as UserInterface$1 } from '@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata';
7
6
  import { P as PreloadManager } from './dataunit-fetcher.js';