@sankhyalabs/sankhyablocks 0.0.0-bugfix-dev-KB-74406.1 → 0.0.0-bugfix-dev-KB-81596.0

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 (72) hide show
  1. package/dist/cjs/{ClientSideExporterProvider-6b781452.js → ClientSideExporterProvider-2f5f350c.js} +1 -1
  2. package/dist/cjs/{dataunit-fetcher-8291ac21.js → dataunit-fetcher-449d51a3.js} +11 -161
  3. package/dist/cjs/loader.cjs.js +1 -1
  4. package/dist/cjs/pesquisa-grid_2.cjs.entry.js +1 -1
  5. package/dist/cjs/sankhyablocks.cjs.js +1 -1
  6. package/dist/cjs/snk-actions-button_5.cjs.entry.js +1 -1
  7. package/dist/cjs/snk-application.cjs.entry.js +1 -1
  8. package/dist/cjs/snk-attach.cjs.entry.js +2 -2
  9. package/dist/cjs/snk-crud.cjs.entry.js +3 -2
  10. package/dist/cjs/snk-data-exporter.cjs.entry.js +2 -2
  11. package/dist/cjs/{snk-data-unit-d75e6220.js → snk-data-unit-bbd384bf.js} +4 -2
  12. package/dist/cjs/snk-data-unit.cjs.entry.js +2 -2
  13. package/dist/cjs/snk-detail-view.cjs.entry.js +2 -2
  14. package/dist/cjs/snk-grid.cjs.entry.js +2 -2
  15. package/dist/cjs/{snk-guides-viewer-a029ff50.js → snk-guides-viewer-5396062f.js} +1 -1
  16. package/dist/cjs/snk-guides-viewer.cjs.entry.js +2 -2
  17. package/dist/cjs/snk-pesquisa.cjs.entry.js +1 -1
  18. package/dist/cjs/snk-simple-crud.cjs.entry.js +2 -2
  19. package/dist/collection/components/snk-attach/structure/fetcher/factory/attach-fetcher-data-unit.factory.js +2 -3
  20. package/dist/collection/components/snk-crud/snk-crud.js +26 -1
  21. package/dist/collection/components/snk-data-unit/snk-data-unit.js +3 -1
  22. package/dist/collection/lib/dataUnit/InMemoryLoader.js +12 -101
  23. package/dist/collection/lib/dataUnit/dataUnitInMemoryUtils.js +7 -53
  24. package/dist/components/dataunit-fetcher.js +30 -179
  25. package/dist/components/snk-attach2.js +3 -3
  26. package/dist/components/snk-crud.js +4 -2
  27. package/dist/components/snk-data-unit2.js +3 -1
  28. package/dist/esm/{ClientSideExporterProvider-ff89c7e9.js → ClientSideExporterProvider-3537805a.js} +1 -1
  29. package/dist/esm/{dataunit-fetcher-5247a708.js → dataunit-fetcher-91b094f2.js} +13 -162
  30. package/dist/esm/loader.js +1 -1
  31. package/dist/esm/pesquisa-grid_2.entry.js +1 -1
  32. package/dist/esm/sankhyablocks.js +1 -1
  33. package/dist/esm/snk-actions-button_5.entry.js +1 -1
  34. package/dist/esm/snk-application.entry.js +1 -1
  35. package/dist/esm/snk-attach.entry.js +3 -3
  36. package/dist/esm/snk-crud.entry.js +4 -3
  37. package/dist/esm/snk-data-exporter.entry.js +2 -2
  38. package/dist/esm/{snk-data-unit-bfd10c71.js → snk-data-unit-b03bb5cf.js} +4 -2
  39. package/dist/esm/snk-data-unit.entry.js +2 -2
  40. package/dist/esm/snk-detail-view.entry.js +2 -2
  41. package/dist/esm/snk-grid.entry.js +2 -2
  42. package/dist/esm/{snk-guides-viewer-fa45714d.js → snk-guides-viewer-749d027c.js} +1 -1
  43. package/dist/esm/snk-guides-viewer.entry.js +2 -2
  44. package/dist/esm/snk-pesquisa.entry.js +1 -1
  45. package/dist/esm/snk-simple-crud.entry.js +2 -2
  46. package/dist/sankhyablocks/{p-b0ff53b7.entry.js → p-13391b3d.entry.js} +1 -1
  47. package/dist/sankhyablocks/p-23b47a92.js +1 -0
  48. package/dist/sankhyablocks/p-3653374d.js +60 -0
  49. package/dist/sankhyablocks/{p-c82deea7.entry.js → p-389ba782.entry.js} +1 -1
  50. package/dist/sankhyablocks/{p-f8db6795.entry.js → p-44efbeed.entry.js} +1 -1
  51. package/dist/sankhyablocks/{p-0b00d69c.entry.js → p-4be6e0e7.entry.js} +1 -1
  52. package/dist/sankhyablocks/p-4d87cd45.entry.js +1 -0
  53. package/dist/sankhyablocks/{p-e36f89d1.entry.js → p-4fa79d68.entry.js} +1 -1
  54. package/dist/sankhyablocks/{p-40e323f9.js → p-5dd7f4c7.js} +1 -1
  55. package/dist/sankhyablocks/{p-aa1a0f3e.entry.js → p-6234bda8.entry.js} +1 -1
  56. package/dist/sankhyablocks/{p-e10faff0.entry.js → p-647f9830.entry.js} +1 -1
  57. package/dist/sankhyablocks/{p-de9da2f2.js → p-7b87d1a8.js} +1 -1
  58. package/dist/sankhyablocks/{p-d2d0535f.entry.js → p-ad5e4f9d.entry.js} +1 -1
  59. package/dist/sankhyablocks/{p-172848d4.entry.js → p-b2de1bcc.entry.js} +1 -1
  60. package/dist/sankhyablocks/p-ca316523.entry.js +1 -0
  61. package/dist/sankhyablocks/{p-700a4cc3.entry.js → p-ee53b000.entry.js} +1 -1
  62. package/dist/sankhyablocks/sankhyablocks.esm.js +1 -1
  63. package/dist/types/components/snk-crud/snk-crud.d.ts +5 -0
  64. package/dist/types/components.d.ts +9 -1
  65. package/dist/types/lib/dataUnit/InMemoryLoader.d.ts +4 -11
  66. package/dist/types/lib/dataUnit/dataUnitInMemoryUtils.d.ts +3 -6
  67. package/dist/types/lib/dataUnit/interfaces/InMemoryLoaderConfig.d.ts +2 -2
  68. package/package.json +1 -1
  69. package/dist/sankhyablocks/p-29d08446.entry.js +0 -1
  70. package/dist/sankhyablocks/p-38179225.js +0 -60
  71. package/dist/sankhyablocks/p-655bdd60.js +0 -1
  72. package/dist/sankhyablocks/p-b02e58fd.entry.js +0 -1
@@ -4,7 +4,7 @@ const index = require('./index-f9e81701.js');
4
4
  const core = require('@sankhyalabs/core');
5
5
  const utils = require('@sankhyalabs/ezui/dist/collection/utils');
6
6
  const SnkMessageBuilder = require('./SnkMessageBuilder-bae64d0d.js');
7
- const dataunitFetcher = require('./dataunit-fetcher-8291ac21.js');
7
+ const dataunitFetcher = require('./dataunit-fetcher-449d51a3.js');
8
8
  const DataType = require('@sankhyalabs/core/dist/dataunit/metadata/DataType');
9
9
  const GetSelectedRecordsIDsInfo = require('./GetSelectedRecordsIDsInfo-bd50caf1.js');
10
10
 
@@ -258,7 +258,9 @@ const SnkDataUnit = class {
258
258
  return new core.DataUnitAction(core.Action.RECORDS_COPIED, this.handleRecordsCopied(action.payload));
259
259
  }
260
260
  async interceptDataChange(action) {
261
- if (this.isAllowed("UPDATE")) {
261
+ var _a;
262
+ const recordId = (_a = this.dataUnit.getSelectedRecord()) === null || _a === void 0 ? void 0 : _a.__record__id__;
263
+ if (this.isAllowed("UPDATE") || this.dataUnit.isNewRecord(recordId)) {
262
264
  return action;
263
265
  }
264
266
  if (this._openedAlert) {
@@ -2,12 +2,12 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- const snkDataUnit = require('./snk-data-unit-d75e6220.js');
5
+ const snkDataUnit = require('./snk-data-unit-bbd384bf.js');
6
6
  require('./index-f9e81701.js');
7
7
  require('@sankhyalabs/core');
8
8
  require('@sankhyalabs/ezui/dist/collection/utils');
9
9
  require('./SnkMessageBuilder-bae64d0d.js');
10
- require('./dataunit-fetcher-8291ac21.js');
10
+ require('./dataunit-fetcher-449d51a3.js');
11
11
  require('./DataFetcher-65879b2c.js');
12
12
  require('./PrintUtils-bcaeb82f.js');
13
13
  require('@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata');
@@ -12,12 +12,12 @@ const index$1 = require('./index-e3e39724.js');
12
12
  require('./ISave-e91b70a7.js');
13
13
  require('@sankhyalabs/ezui/dist/collection/utils/constants');
14
14
  require('@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata');
15
- require('./dataunit-fetcher-8291ac21.js');
15
+ require('./dataunit-fetcher-449d51a3.js');
16
16
  require('./filter-item-type.enum-a7ffdaa6.js');
17
17
  require('./form-config-fetcher-90126e4c.js');
18
18
  const constants = require('./constants-241934b3.js');
19
19
  const taskbarElements = require('./taskbar-elements-7e19882d.js');
20
- const snkGuidesViewer = require('./snk-guides-viewer-a029ff50.js');
20
+ const snkGuidesViewer = require('./snk-guides-viewer-5396062f.js');
21
21
  const SnkMessageBuilder = require('./SnkMessageBuilder-bae64d0d.js');
22
22
  require('./ConfigStorage-d024aec8.js');
23
23
  require('./PrintUtils-bcaeb82f.js');
@@ -9,14 +9,14 @@ const ConfigStorage = require('./ConfigStorage-d024aec8.js');
9
9
  const index$1 = require('./index-e3e39724.js');
10
10
  const fieldSearch = require('./field-search-68e34bf4.js');
11
11
  const index$2 = require('./index-102ba62d.js');
12
- const ClientSideExporterProvider = require('./ClientSideExporterProvider-6b781452.js');
12
+ const ClientSideExporterProvider = require('./ClientSideExporterProvider-2f5f350c.js');
13
13
  const DataUnit = require('@sankhyalabs/core/dist/dataunit/DataUnit');
14
14
  require('./DataFetcher-65879b2c.js');
15
15
  require('./pesquisa-fetcher-5c583c93.js');
16
16
  require('./ISave-e91b70a7.js');
17
17
  require('@sankhyalabs/ezui/dist/collection/utils/constants');
18
18
  require('@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata');
19
- require('./dataunit-fetcher-8291ac21.js');
19
+ require('./dataunit-fetcher-449d51a3.js');
20
20
  require('./filter-item-type.enum-a7ffdaa6.js');
21
21
  require('./form-config-fetcher-90126e4c.js');
22
22
  require('./constants-241934b3.js');
@@ -13,7 +13,7 @@ const index$1 = require('./index-e3e39724.js');
13
13
  require('./ISave-e91b70a7.js');
14
14
  require('@sankhyalabs/ezui/dist/collection/utils/constants');
15
15
  require('@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata');
16
- require('./dataunit-fetcher-8291ac21.js');
16
+ require('./dataunit-fetcher-449d51a3.js');
17
17
  require('./filter-item-type.enum-a7ffdaa6.js');
18
18
  require('./form-config-fetcher-90126e4c.js');
19
19
  const DataUnit = require('@sankhyalabs/core/dist/dataunit/DataUnit');
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- const snkGuidesViewer = require('./snk-guides-viewer-a029ff50.js');
5
+ const snkGuidesViewer = require('./snk-guides-viewer-5396062f.js');
6
6
  require('./index-f9e81701.js');
7
7
  require('@sankhyalabs/core');
8
8
  require('./SnkFormConfigManager-c11d8468.js');
@@ -21,7 +21,7 @@ require('./index-102ba62d.js');
21
21
  require('./pesquisa-fetcher-5c583c93.js');
22
22
  require('./ISave-e91b70a7.js');
23
23
  require('@sankhyalabs/ezui/dist/collection/utils/constants');
24
- require('./dataunit-fetcher-8291ac21.js');
24
+ require('./dataunit-fetcher-449d51a3.js');
25
25
  require('@sankhyalabs/ezui/dist/collection/components/ez-grid/utils');
26
26
  require('@sankhyalabs/core/dist/utils/SortingUtils');
27
27
  require('./ResourceIDUtils-5ff86aa7.js');
@@ -10,7 +10,7 @@ require('./index-e3e39724.js');
10
10
  require('./ISave-e91b70a7.js');
11
11
  require('@sankhyalabs/ezui/dist/collection/utils/constants');
12
12
  require('@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata');
13
- require('./dataunit-fetcher-8291ac21.js');
13
+ require('./dataunit-fetcher-449d51a3.js');
14
14
  require('./filter-item-type.enum-a7ffdaa6.js');
15
15
  require('./form-config-fetcher-90126e4c.js');
16
16
  require('./constants-241934b3.js');
@@ -9,12 +9,12 @@ const constants = require('./constants-241934b3.js');
9
9
  const taskbarElements = require('./taskbar-elements-7e19882d.js');
10
10
  require('./DataFetcher-65879b2c.js');
11
11
  require('./pesquisa-fetcher-5c583c93.js');
12
- const ClientSideExporterProvider = require('./ClientSideExporterProvider-6b781452.js');
12
+ const ClientSideExporterProvider = require('./ClientSideExporterProvider-2f5f350c.js');
13
13
  const index$1 = require('./index-e3e39724.js');
14
14
  require('./ISave-e91b70a7.js');
15
15
  require('@sankhyalabs/ezui/dist/collection/utils/constants');
16
16
  require('@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata');
17
- const dataunitFetcher = require('./dataunit-fetcher-8291ac21.js');
17
+ const dataunitFetcher = require('./dataunit-fetcher-449d51a3.js');
18
18
  require('./filter-item-type.enum-a7ffdaa6.js');
19
19
  const formConfigFetcher = require('./form-config-fetcher-90126e4c.js');
20
20
  const fieldSearch = require('./field-search-68e34bf4.js');
@@ -1,9 +1,8 @@
1
- import { Action, ApplicationContext, StringUtils, } from '@sankhyalabs/core';
1
+ import { Action, ApplicationContext, DataUnitLoaderUtils, StringUtils, } from '@sankhyalabs/core';
2
2
  import { SaveErrorsEnum } from '../../../../../lib/http/data-fetcher/fetchers/AttachFetcher/interfaces';
3
3
  import { AutorizationType } from '../../../../../lib/http/data-fetcher/fetchers/auth-fetcher';
4
4
  import { attachFetcherMetadataBuilder } from '../../builder/attach-crud-config.builder';
5
5
  import { VIEW_MODE } from '../../../../../lib/utils/constants';
6
- import { buildLoadDataResponse } from '../../../../../lib/dataUnit/dataUnitInMemoryUtils';
7
6
  const SERVICE_LOAD = "Attach.load";
8
7
  export class AttachFetcherDataUnitFactory {
9
8
  constructor(getMessage) {
@@ -49,7 +48,7 @@ export class AttachFetcherDataUnitFactory {
49
48
  });
50
49
  this._records = records;
51
50
  }
52
- return buildLoadDataResponse(this._records, dataUnit, request);
51
+ return DataUnitLoaderUtils.buildLoadDataResponse(this._records, dataUnit, request);
53
52
  }
54
53
  saveLoader(changes, fetcher) {
55
54
  return new Promise((resolve) => {
@@ -4,6 +4,7 @@ import { TaskbarElement } from '../snk-taskbar/elements/taskbar-elements';
4
4
  import { PresentationMode } from '../../lib';
5
5
  import { VIEW_MODE } from '../../lib/utils/constants';
6
6
  import { AutorizationType } from '../../lib/http/data-fetcher/fetchers/auth-fetcher';
7
+ import { ExporterStrategy } from '../../lib/@types';
7
8
  /**
8
9
  * É possível customizar as mensagens dos blocos de construção através de um pequeno modulo na estrutura da aplicação:
9
10
  * - Criar um arquivo no seguinte caminho: /messages/appmessages.msg.js.
@@ -45,6 +46,7 @@ export class SnkCrud {
45
46
  this.domainMessagesBuilder = undefined;
46
47
  this.ignoreReadOnlyFormFields = undefined;
47
48
  this.setCustomFormTitle = undefined;
49
+ this.strategyExporter = ExporterStrategy.SERVER_SIDE;
48
50
  this.customContainerId = `SNK-CRUD-CUSTOM-CONTAINER-${StringUtils.generateUUID()}`;
49
51
  }
50
52
  /**
@@ -380,7 +382,7 @@ export class SnkCrud {
380
382
  return;
381
383
  }
382
384
  this._snkDataUnit.ignoreSaveMessage = (this._currentViewMode === VIEW_MODE.GRID && !this.enableGridInsert);
383
- return (h(Host, null, h("ez-view-stack", { ref: (ref) => this._viewStack = ref, "data-element-id": "crud" }, h("stack-item", { class: 'ez-flex ez-flex--column ez-size-height--full ez-size-width--full ez-padding--medium' }, h("snk-grid", { ref: (ref) => this._snkGrid = ref, class: 'ez-flex ez-flex--column ez-size-height--full ez-size-width--full', filterBarTitle: this.filterBarTitle, "data-element-id": "crud_grid", configName: this.configName, onGridDoubleClick: () => this.gridToForm(true), taskbarManager: this.taskbarManager, onActionClick: evt => this.executeAction(evt.detail), messagesBuilder: this.messagesBuilder, actionsList: this.actionsList, statusResolver: this.statusResolver, multipleSelection: this.multipleSelection, presentationMode: this.presentationMode, recordsValidator: this.recordsValidator, selectionToastConfig: this.selectionToastConfig, useEnterLikeTab: this.useEnterLikeTab, canEdit: this._canEdit, resourceID: this._resourceID, disablePersonalizedFilter: this.disablePersonalizedFilter, gridLegacyConfigName: this.gridLegacyConfigName, filterBarLegacyConfigName: this.filterBarLegacyConfigName, autoLoad: this.autoLoad, autoFocus: this.autoFocus, enableGridInsert: this.enableGridInsert, enableLockManagerTaskbarClick: this.enableLockManagerTaskbarClick, enableLockManagerLoadingComp: this.enableLockManagerLoadingComp }, h("slot", { name: "GRID_TASKBAR_CUSTOM_ELEMENTS" }), h("slot", { name: "GRID_HEADER_CUSTOM_ELEMENTS" }), h("slot", { name: "SnkGridHeader" }), h("slot", { name: "SnkGridFooter" }), h("slot", { name: "SnkGridTaskBar" }))), h("stack-item", null, h("snk-guides-viewer", { ref: ref => this._guidesViewer = ref, entityPath: this._snkDataUnit.entityName, messagesBuilder: this.messagesBuilder, onExit: () => this.setViewMode(VIEW_MODE.GRID), dataState: this._dataState, dataUnit: this._dataUnit, actionsList: this.actionsList, taskbarManager: this.taskbarManager, configName: this.configName, onActionClick: evt => this.executeAction(evt.detail), presentationMode: this.presentationMode, "data-element-id": "crud_form", canEdit: this._canEdit, recordsValidator: this.recordsValidator, resourceID: this._resourceID, detailTaskbarCustomContainerId: this.customContainerId, formLegacyConfigName: this.formLegacyConfigName, enableGridInsert: this.enableGridInsert, getCustomTitle: this.setCustomFormTitle, ignoreReadOnlyFormFields: this.ignoreReadOnlyFormFields }, h("slot", { name: "GUIDES_VIEWER_TASKBAR_CUSTOM_ELEMENTS" }), h("slot", { name: "SnkFormTaskBar" }))), h("stack-item", null, h("snk-attach", { registerKey: this.attachmentRegisterKey, messagesBuilder: this.messagesBuilder, entityName: this._snkDataUnit.entityName, onBack: this.backView.bind(this) })), h("snk-configurator", { ref: (ref) => this._snkConfigurator = ref, viewMode: this._currentViewMode, messagesBuilder: this.messagesBuilder, onConfigSelected: (evt) => this.setViewMode(evt.detail), onOpenConfig: (evt) => this.openConfig(evt.detail), showActionButtons: this.showActionButtons, onSave: evt => this.handleConfiguratorEvent(evt, 'SAVE'), onCancel: evt => this.handleConfiguratorEvent(evt, 'CANCEL'), resourceID: this._resourceID, customContainerId: this.customContainerId })), h("div", { id: `${this.customContainerId}` }, h("slot", { name: "SnkConfigContainerSlot" }), h("slot", { name: "DETAIL_GRID_HEADER_CUSTOM_ELEMENTS" }), h("slot", { name: "DETAIL_GRID_TASKBAR_CUSTOM_ELEMENTS" }), h("slot", { name: "DETAIL_TASKBAR_CUSTOM_ELEMENTS" }))));
385
+ return (h(Host, null, h("ez-view-stack", { ref: (ref) => this._viewStack = ref, "data-element-id": "crud" }, h("stack-item", { class: 'ez-flex ez-flex--column ez-size-height--full ez-size-width--full ez-padding--medium' }, h("snk-grid", { ref: (ref) => this._snkGrid = ref, class: 'ez-flex ez-flex--column ez-size-height--full ez-size-width--full', filterBarTitle: this.filterBarTitle, "data-element-id": "crud_grid", configName: this.configName, onGridDoubleClick: () => this.gridToForm(true), taskbarManager: this.taskbarManager, onActionClick: evt => this.executeAction(evt.detail), messagesBuilder: this.messagesBuilder, actionsList: this.actionsList, statusResolver: this.statusResolver, multipleSelection: this.multipleSelection, presentationMode: this.presentationMode, recordsValidator: this.recordsValidator, selectionToastConfig: this.selectionToastConfig, useEnterLikeTab: this.useEnterLikeTab, canEdit: this._canEdit, resourceID: this._resourceID, disablePersonalizedFilter: this.disablePersonalizedFilter, gridLegacyConfigName: this.gridLegacyConfigName, filterBarLegacyConfigName: this.filterBarLegacyConfigName, autoLoad: this.autoLoad, autoFocus: this.autoFocus, enableGridInsert: this.enableGridInsert, enableLockManagerTaskbarClick: this.enableLockManagerTaskbarClick, enableLockManagerLoadingComp: this.enableLockManagerLoadingComp, strategyExporter: this.strategyExporter }, h("slot", { name: "GRID_TASKBAR_CUSTOM_ELEMENTS" }), h("slot", { name: "GRID_HEADER_CUSTOM_ELEMENTS" }), h("slot", { name: "SnkGridHeader" }), h("slot", { name: "SnkGridFooter" }), h("slot", { name: "SnkGridTaskBar" }))), h("stack-item", null, h("snk-guides-viewer", { ref: ref => this._guidesViewer = ref, entityPath: this._snkDataUnit.entityName, messagesBuilder: this.messagesBuilder, onExit: () => this.setViewMode(VIEW_MODE.GRID), dataState: this._dataState, dataUnit: this._dataUnit, actionsList: this.actionsList, taskbarManager: this.taskbarManager, configName: this.configName, onActionClick: evt => this.executeAction(evt.detail), presentationMode: this.presentationMode, "data-element-id": "crud_form", canEdit: this._canEdit, recordsValidator: this.recordsValidator, resourceID: this._resourceID, detailTaskbarCustomContainerId: this.customContainerId, formLegacyConfigName: this.formLegacyConfigName, enableGridInsert: this.enableGridInsert, getCustomTitle: this.setCustomFormTitle, ignoreReadOnlyFormFields: this.ignoreReadOnlyFormFields }, h("slot", { name: "GUIDES_VIEWER_TASKBAR_CUSTOM_ELEMENTS" }), h("slot", { name: "SnkFormTaskBar" }))), h("stack-item", null, h("snk-attach", { registerKey: this.attachmentRegisterKey, messagesBuilder: this.messagesBuilder, entityName: this._snkDataUnit.entityName, onBack: this.backView.bind(this) })), h("snk-configurator", { ref: (ref) => this._snkConfigurator = ref, viewMode: this._currentViewMode, messagesBuilder: this.messagesBuilder, onConfigSelected: (evt) => this.setViewMode(evt.detail), onOpenConfig: (evt) => this.openConfig(evt.detail), showActionButtons: this.showActionButtons, onSave: evt => this.handleConfiguratorEvent(evt, 'SAVE'), onCancel: evt => this.handleConfiguratorEvent(evt, 'CANCEL'), resourceID: this._resourceID, customContainerId: this.customContainerId })), h("div", { id: `${this.customContainerId}` }, h("slot", { name: "SnkConfigContainerSlot" }), h("slot", { name: "DETAIL_GRID_HEADER_CUSTOM_ELEMENTS" }), h("slot", { name: "DETAIL_GRID_TASKBAR_CUSTOM_ELEMENTS" }), h("slot", { name: "DETAIL_TASKBAR_CUSTOM_ELEMENTS" }))));
384
386
  }
385
387
  static get is() { return "snk-crud"; }
386
388
  static get encapsulation() { return "scoped"; }
@@ -839,6 +841,29 @@ export class SnkCrud {
839
841
  "tags": [],
840
842
  "text": "Define uma fun\u00E7\u00E3o para configurar um t\u00EDtulo cusotmizado no modo formul\u00E1rio."
841
843
  }
844
+ },
845
+ "strategyExporter": {
846
+ "type": "string",
847
+ "mutable": true,
848
+ "complexType": {
849
+ "original": "IExporterStrategyMode",
850
+ "resolved": "\"ClientSideExporterStrategy\" | \"ServerSideExporterStrategy\"",
851
+ "references": {
852
+ "IExporterStrategyMode": {
853
+ "location": "import",
854
+ "path": "../snk-data-exporter/interfaces/IRecordID"
855
+ }
856
+ }
857
+ },
858
+ "required": false,
859
+ "optional": false,
860
+ "docs": {
861
+ "tags": [],
862
+ "text": "Modo de exporta\u00E7\u00E3o dos dados."
863
+ },
864
+ "attribute": "strategy-exporter",
865
+ "reflect": false,
866
+ "defaultValue": "ExporterStrategy.SERVER_SIDE"
842
867
  }
843
868
  };
844
869
  }
@@ -251,7 +251,9 @@ export class SnkDataUnit {
251
251
  return new DataUnitAction(Action.RECORDS_COPIED, this.handleRecordsCopied(action.payload));
252
252
  }
253
253
  async interceptDataChange(action) {
254
- if (this.isAllowed("UPDATE")) {
254
+ var _a;
255
+ const recordId = (_a = this.dataUnit.getSelectedRecord()) === null || _a === void 0 ? void 0 : _a.__record__id__;
256
+ if (this.isAllowed("UPDATE") || this.dataUnit.isNewRecord(recordId)) {
255
257
  return action;
256
258
  }
257
259
  if (this._openedAlert) {
@@ -1,117 +1,28 @@
1
- import { ChangeOperation, DataType, DataUnit, DateUtils, StringUtils, } from '@sankhyalabs/core';
2
- import { buildLoadDataResponse } from './dataUnitInMemoryUtils';
1
+ import { DataUnitInMemoryLoader } from '@sankhyalabs/core';
3
2
  export default class InMemoryLoader {
4
3
  constructor(metadata, records, config) {
5
- this.metadata = metadata;
6
- this.records = records;
7
- this._dataUnit = new DataUnit(InMemoryLoader.IN_MEMORY_DATA_UNIT_NAME);
8
- this._dataUnit.pageSize = 150;
9
- this._dataUnit.metadataLoader = () => this.metadaLoader();
10
- this._dataUnit.dataLoader = (dataUnit, request) => this.inMemoryLoader(dataUnit, request, this.getRecordsToLoad());
11
- this._dataUnit.saveLoader = (_dataUnit, changes) => this.saveLoader(_dataUnit, changes);
12
- this._dataUnit.removeLoader = (_dataUnit, recordIds) => this.removeLoader(_dataUnit, recordIds);
13
- this.dataUnit.loadMetadata().then(() => {
14
- if ((config === null || config === void 0 ? void 0 : config.autoLoad) !== false) {
15
- this.dataUnit.loadData();
16
- }
17
- });
18
- }
19
- getRecordsToLoad() {
20
- if (this._initialRecords == undefined && this.dataUnit.records.length > 0) {
21
- this._initialRecords = this.dataUnit.records;
22
- }
23
- const addedRecords = this.dataUnit.getAddedRecords();
24
- if (addedRecords) {
25
- return [...this._initialRecords, ...addedRecords];
26
- }
27
- return this._initialRecords;
4
+ this._dataUnitInMemoryLoader = new DataUnitInMemoryLoader(metadata, records, config);
28
5
  }
29
6
  get dataUnit() {
30
- return this._dataUnit;
7
+ return this._dataUnitInMemoryLoader.dataUnit;
31
8
  }
32
9
  get records() {
33
- return this.dataUnit.records;
34
- }
35
- static getConvertedValue(descriptor, strValue) {
36
- if (descriptor.dataType === DataType.BOOLEAN) {
37
- return strValue === "S";
38
- }
39
- if (descriptor.dataType === DataType.NUMBER) {
40
- return Number(strValue);
41
- }
42
- if (descriptor.dataType === DataType.DATE) {
43
- return DateUtils.strToDate(strValue, true);
44
- }
45
- if (descriptor.dataType === DataType.OBJECT) {
46
- return JSON.parse(strValue);
47
- }
48
- return strValue;
10
+ return this._dataUnitInMemoryLoader.records;
49
11
  }
50
12
  set records(records) {
51
- const columns = this._metadata ? new Map(this._metadata.fields.map(descriptor => [descriptor.name, descriptor])) : undefined;
52
- const newRecords = records === null || records === void 0 ? void 0 : records.map(record => {
53
- if (!record["__record__id__"]) {
54
- record["__record__id__"] = this.generateUniqueId();
55
- }
56
- if (columns != undefined) {
57
- for (const name in record) {
58
- const value = record[name];
59
- if (typeof value === "string" && columns.has(name)) {
60
- record[name] = InMemoryLoader.getConvertedValue(columns.get(name), value);
61
- }
62
- }
63
- }
64
- return record;
65
- });
66
- this._initialRecords = newRecords;
67
- if (this._dataUnit) {
68
- //Isso força o refresh internamente no datunit
69
- this._dataUnit.loadData();
70
- }
13
+ this._dataUnitInMemoryLoader.records = records;
71
14
  }
72
15
  get metadata() {
73
- return this._metadata;
16
+ return this._dataUnitInMemoryLoader.metadata;
74
17
  }
75
18
  set metadata(metadata) {
76
- this._metadata = metadata;
77
- if (this._dataUnit) {
78
- this._dataUnit.metadata = this._metadata;
79
- }
80
- }
81
- generateUniqueId() {
82
- return StringUtils.generateUUID();
83
- }
84
- inMemoryLoader(dataUnit, request, recordsIn) {
85
- return buildLoadDataResponse(recordsIn, dataUnit, request);
86
- }
87
- metadaLoader() {
88
- return Promise.resolve(this._metadata);
89
- }
90
- saveLoader(_dataUnit, changes) {
91
- return new Promise((resolve) => {
92
- let dataUnitRecords = [];
93
- changes.forEach(change => {
94
- let { record, updatingFields, operation } = change;
95
- const changedRecord = Object.assign(Object.assign({}, record), updatingFields);
96
- if (operation === ChangeOperation.INSERT ||
97
- operation === ChangeOperation.COPY) {
98
- changedRecord["__old__id__"] = record["__record__id__"];
99
- changedRecord["__record__id__"] = this.generateUniqueId();
100
- this.records.push(changedRecord);
101
- }
102
- else {
103
- const recordIndex = this.records.findIndex(r => r["__record__id__"] == changedRecord["__record__id__"]);
104
- this.records[recordIndex] = changedRecord;
105
- }
106
- dataUnitRecords.push(changedRecord);
107
- });
108
- resolve(dataUnitRecords);
109
- });
19
+ this._dataUnitInMemoryLoader.metadata = metadata;
110
20
  }
111
21
  removeLoader(_dataUnit, recordIds) {
112
- return new Promise((resolve) => {
113
- resolve(recordIds);
114
- });
22
+ return this._dataUnitInMemoryLoader.removeLoader(_dataUnit, recordIds);
23
+ }
24
+ static getConvertedValue(descriptor, strValue, dateFormat) {
25
+ return DataUnitInMemoryLoader.getConvertedValue(descriptor, strValue, dateFormat);
115
26
  }
116
27
  }
117
- InMemoryLoader.IN_MEMORY_DATA_UNIT_NAME = "InMemoryDataUnit";
28
+ InMemoryLoader.IN_MEMORY_DATA_UNIT_NAME = DataUnitInMemoryLoader.IN_MEMORY_DATA_UNIT_NAME;
@@ -1,62 +1,16 @@
1
- import { ColumnFilterManager } from '@sankhyalabs/ezui/dist/collection/components/ez-grid/utils';
2
- import PreloadManager from '../http/data-fetcher/fetchers/data-unit/cache/PreloadManager';
1
+ import { DataUnitLoaderUtils, } from '@sankhyalabs/core';
3
2
  export function applyFilter(records, dataUnit, filters) {
4
- const columnFilters = ColumnFilterManager.getColumnFilters(filters, "");
5
- if (!(columnFilters === null || columnFilters === void 0 ? void 0 : columnFilters.size)) {
6
- return records;
7
- }
8
- const filterFunction = ColumnFilterManager.getFilterFunction(dataUnit, Array.from(columnFilters.values()));
9
- if (filterFunction == undefined) {
10
- return records;
11
- }
12
- return records.filter(filterFunction);
3
+ return DataUnitLoaderUtils.applyFilter(records, dataUnit, filters);
13
4
  }
14
5
  export function buildLoadDataResponse(recordsIn, dataUnit, request) {
15
- let records = recordsIn ? [...recordsIn] : [];
16
- records = applyFilter(records, dataUnit, request.filters);
17
- records = applySorting(records, dataUnit, request.sort);
18
- const { offset, limit } = request;
19
- const paginationInfoBuilderParams = {
20
- recordsLength: records.length,
21
- offset,
22
- recordsPerPage: limit,
23
- };
24
- return Promise.resolve({
25
- records: getPagesByRecords(records, offset, limit),
26
- paginationInfo: dataUnit.pageSize ? buildPaginationInfo(paginationInfoBuilderParams) : undefined,
27
- });
6
+ return DataUnitLoaderUtils.buildLoadDataResponse(recordsIn, dataUnit, request);
28
7
  }
29
8
  export function applySorting(records, dataUnit, sorting) {
30
- if (sorting == undefined || sorting.length == 0) {
31
- return records;
32
- }
33
- const sortingFunction = PreloadManager.getSortingFunction(dataUnit, sorting);
34
- if (sortingFunction == undefined) {
35
- return records;
36
- }
37
- return records.sort(sortingFunction);
38
- }
39
- function hasValidLimitAndOffset(offset, limit) {
40
- return offset >= 0 && limit >= 0;
9
+ return DataUnitLoaderUtils.applySorting(records, dataUnit, sorting);
41
10
  }
42
11
  export function getPagesByRecords(records, offset = 0, limit = 0) {
43
- if (!records || !records.length || !hasValidLimitAndOffset(offset, limit))
44
- return [];
45
- if (limit === 0 && offset === 0)
46
- return records;
47
- return records.slice(offset, offset + limit);
12
+ return DataUnitLoaderUtils.getPagesByRecords(records, offset, limit);
48
13
  }
49
- export function buildPaginationInfo({ recordsLength = 0, offset = 0, recordsPerPage = 0 }) {
50
- if (!recordsLength) {
51
- return { currentPage: 0, firstRecord: 0, lastRecord: 0, total: 0, hasMore: false };
52
- }
53
- const lastRecordIndex = offset + recordsPerPage;
54
- const lastRecord = lastRecordIndex ? Math.min(lastRecordIndex, recordsLength) : recordsLength;
55
- return {
56
- currentPage: recordsPerPage === 0 ? 0 : Math.ceil(offset / recordsPerPage),
57
- firstRecord: offset + 1,
58
- lastRecord: lastRecord,
59
- total: recordsLength,
60
- hasMore: lastRecord < recordsLength,
61
- };
14
+ export function buildPaginationInfo({ recordsLength = 0, offset = 0, recordsPerPage = 0, }) {
15
+ return DataUnitLoaderUtils.buildPaginationInfo({ recordsLength, offset, recordsPerPage });
62
16
  }
@@ -1,4 +1,4 @@
1
- import { ObjectUtils, DataUnit, DataType, DateUtils, StringUtils, ChangeOperation, ApplicationContext, UserInterface, DataUnitStorage } from '@sankhyalabs/core';
1
+ import { DataUnitInMemoryLoader, ObjectUtils, DataUnit, ApplicationContext, StringUtils, UserInterface, DataUnitStorage, DataType, ChangeOperation } from '@sankhyalabs/core';
2
2
  import { D as DataFetcher, d as dist } from './DataFetcher.js';
3
3
  import { DISTINCT_FILTER_NAME_PREFIX } from '@sankhyalabs/ezui/dist/collection/utils/constants';
4
4
  import { DataUnitTransient } from '@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata';
@@ -6,6 +6,34 @@ import { ColumnFilterManager } from '@sankhyalabs/ezui/dist/collection/component
6
6
  import SortingUtils from '@sankhyalabs/core/dist/utils/SortingUtils';
7
7
  import { R as ResourceIDUtils } from './ResourceIDUtils.js';
8
8
 
9
+ class InMemoryLoader {
10
+ constructor(metadata, records, config) {
11
+ this._dataUnitInMemoryLoader = new DataUnitInMemoryLoader(metadata, records, config);
12
+ }
13
+ get dataUnit() {
14
+ return this._dataUnitInMemoryLoader.dataUnit;
15
+ }
16
+ get records() {
17
+ return this._dataUnitInMemoryLoader.records;
18
+ }
19
+ set records(records) {
20
+ this._dataUnitInMemoryLoader.records = records;
21
+ }
22
+ get metadata() {
23
+ return this._dataUnitInMemoryLoader.metadata;
24
+ }
25
+ set metadata(metadata) {
26
+ this._dataUnitInMemoryLoader.metadata = metadata;
27
+ }
28
+ removeLoader(_dataUnit, recordIds) {
29
+ return this._dataUnitInMemoryLoader.removeLoader(_dataUnit, recordIds);
30
+ }
31
+ static getConvertedValue(descriptor, strValue, dateFormat) {
32
+ return DataUnitInMemoryLoader.getConvertedValue(descriptor, strValue, dateFormat);
33
+ }
34
+ }
35
+ InMemoryLoader.IN_MEMORY_DATA_UNIT_NAME = DataUnitInMemoryLoader.IN_MEMORY_DATA_UNIT_NAME;
36
+
9
37
  class ArrayRepository {
10
38
  constructor(equalsFunction) {
11
39
  this._list = [];
@@ -238,183 +266,6 @@ class PreloadManager {
238
266
  PreloadManager._repositories = new Map();
239
267
  PreloadManager._loadingStatus = new Map();
240
268
 
241
- function applyFilter(records, dataUnit, filters) {
242
- const columnFilters = ColumnFilterManager.getColumnFilters(filters, "");
243
- if (!(columnFilters === null || columnFilters === void 0 ? void 0 : columnFilters.size)) {
244
- return records;
245
- }
246
- const filterFunction = ColumnFilterManager.getFilterFunction(dataUnit, Array.from(columnFilters.values()));
247
- if (filterFunction == undefined) {
248
- return records;
249
- }
250
- return records.filter(filterFunction);
251
- }
252
- function buildLoadDataResponse(recordsIn, dataUnit, request) {
253
- let records = recordsIn ? [...recordsIn] : [];
254
- records = applyFilter(records, dataUnit, request.filters);
255
- records = applySorting(records, dataUnit, request.sort);
256
- const { offset, limit } = request;
257
- const paginationInfoBuilderParams = {
258
- recordsLength: records.length,
259
- offset,
260
- recordsPerPage: limit,
261
- };
262
- return Promise.resolve({
263
- records: getPagesByRecords(records, offset, limit),
264
- paginationInfo: dataUnit.pageSize ? buildPaginationInfo(paginationInfoBuilderParams) : undefined,
265
- });
266
- }
267
- function applySorting(records, dataUnit, sorting) {
268
- if (sorting == undefined || sorting.length == 0) {
269
- return records;
270
- }
271
- const sortingFunction = PreloadManager.getSortingFunction(dataUnit, sorting);
272
- if (sortingFunction == undefined) {
273
- return records;
274
- }
275
- return records.sort(sortingFunction);
276
- }
277
- function hasValidLimitAndOffset(offset, limit) {
278
- return offset >= 0 && limit >= 0;
279
- }
280
- function getPagesByRecords(records, offset = 0, limit = 0) {
281
- if (!records || !records.length || !hasValidLimitAndOffset(offset, limit))
282
- return [];
283
- if (limit === 0 && offset === 0)
284
- return records;
285
- return records.slice(offset, offset + limit);
286
- }
287
- function buildPaginationInfo({ recordsLength = 0, offset = 0, recordsPerPage = 0 }) {
288
- if (!recordsLength) {
289
- return { currentPage: 0, firstRecord: 0, lastRecord: 0, total: 0, hasMore: false };
290
- }
291
- const lastRecordIndex = offset + recordsPerPage;
292
- const lastRecord = lastRecordIndex ? Math.min(lastRecordIndex, recordsLength) : recordsLength;
293
- return {
294
- currentPage: recordsPerPage === 0 ? 0 : Math.ceil(offset / recordsPerPage),
295
- firstRecord: offset + 1,
296
- lastRecord: lastRecord,
297
- total: recordsLength,
298
- hasMore: lastRecord < recordsLength,
299
- };
300
- }
301
-
302
- class InMemoryLoader {
303
- constructor(metadata, records, config) {
304
- this.metadata = metadata;
305
- this.records = records;
306
- this._dataUnit = new DataUnit(InMemoryLoader.IN_MEMORY_DATA_UNIT_NAME);
307
- this._dataUnit.pageSize = 150;
308
- this._dataUnit.metadataLoader = () => this.metadaLoader();
309
- this._dataUnit.dataLoader = (dataUnit, request) => this.inMemoryLoader(dataUnit, request, this.getRecordsToLoad());
310
- this._dataUnit.saveLoader = (_dataUnit, changes) => this.saveLoader(_dataUnit, changes);
311
- this._dataUnit.removeLoader = (_dataUnit, recordIds) => this.removeLoader(_dataUnit, recordIds);
312
- this.dataUnit.loadMetadata().then(() => {
313
- if ((config === null || config === void 0 ? void 0 : config.autoLoad) !== false) {
314
- this.dataUnit.loadData();
315
- }
316
- });
317
- }
318
- getRecordsToLoad() {
319
- if (this._initialRecords == undefined && this.dataUnit.records.length > 0) {
320
- this._initialRecords = this.dataUnit.records;
321
- }
322
- const addedRecords = this.dataUnit.getAddedRecords();
323
- if (addedRecords) {
324
- return [...this._initialRecords, ...addedRecords];
325
- }
326
- return this._initialRecords;
327
- }
328
- get dataUnit() {
329
- return this._dataUnit;
330
- }
331
- get records() {
332
- return this.dataUnit.records;
333
- }
334
- static getConvertedValue(descriptor, strValue) {
335
- if (descriptor.dataType === DataType.BOOLEAN) {
336
- return strValue === "S";
337
- }
338
- if (descriptor.dataType === DataType.NUMBER) {
339
- return Number(strValue);
340
- }
341
- if (descriptor.dataType === DataType.DATE) {
342
- return DateUtils.strToDate(strValue, true);
343
- }
344
- if (descriptor.dataType === DataType.OBJECT) {
345
- return JSON.parse(strValue);
346
- }
347
- return strValue;
348
- }
349
- set records(records) {
350
- const columns = this._metadata ? new Map(this._metadata.fields.map(descriptor => [descriptor.name, descriptor])) : undefined;
351
- const newRecords = records === null || records === void 0 ? void 0 : records.map(record => {
352
- if (!record["__record__id__"]) {
353
- record["__record__id__"] = this.generateUniqueId();
354
- }
355
- if (columns != undefined) {
356
- for (const name in record) {
357
- const value = record[name];
358
- if (typeof value === "string" && columns.has(name)) {
359
- record[name] = InMemoryLoader.getConvertedValue(columns.get(name), value);
360
- }
361
- }
362
- }
363
- return record;
364
- });
365
- this._initialRecords = newRecords;
366
- if (this._dataUnit) {
367
- //Isso força o refresh internamente no datunit
368
- this._dataUnit.loadData();
369
- }
370
- }
371
- get metadata() {
372
- return this._metadata;
373
- }
374
- set metadata(metadata) {
375
- this._metadata = metadata;
376
- if (this._dataUnit) {
377
- this._dataUnit.metadata = this._metadata;
378
- }
379
- }
380
- generateUniqueId() {
381
- return StringUtils.generateUUID();
382
- }
383
- inMemoryLoader(dataUnit, request, recordsIn) {
384
- return buildLoadDataResponse(recordsIn, dataUnit, request);
385
- }
386
- metadaLoader() {
387
- return Promise.resolve(this._metadata);
388
- }
389
- saveLoader(_dataUnit, changes) {
390
- return new Promise((resolve) => {
391
- let dataUnitRecords = [];
392
- changes.forEach(change => {
393
- let { record, updatingFields, operation } = change;
394
- const changedRecord = Object.assign(Object.assign({}, record), updatingFields);
395
- if (operation === ChangeOperation.INSERT ||
396
- operation === ChangeOperation.COPY) {
397
- changedRecord["__old__id__"] = record["__record__id__"];
398
- changedRecord["__record__id__"] = this.generateUniqueId();
399
- this.records.push(changedRecord);
400
- }
401
- else {
402
- const recordIndex = this.records.findIndex(r => r["__record__id__"] == changedRecord["__record__id__"]);
403
- this.records[recordIndex] = changedRecord;
404
- }
405
- dataUnitRecords.push(changedRecord);
406
- });
407
- resolve(dataUnitRecords);
408
- });
409
- }
410
- removeLoader(_dataUnit, recordIds) {
411
- return new Promise((resolve) => {
412
- resolve(recordIds);
413
- });
414
- }
415
- }
416
- InMemoryLoader.IN_MEMORY_DATA_UNIT_NAME = "InMemoryDataUnit";
417
-
418
269
  function getRecordValue(record, fieldName) {
419
270
  var _a, _b;
420
271
  return ((_a = record[fieldName]) === null || _a === void 0 ? void 0 : _a.value) !== undefined ? (_b = record[fieldName]) === null || _b === void 0 ? void 0 : _b.value : record[fieldName];
@@ -1250,4 +1101,4 @@ class DataUnitFetcher {
1250
1101
  }
1251
1102
  }
1252
1103
 
1253
- export { DataUnitFetcher as D, InMemoryLoader as I, PreloadManager as P, DatasetStrategy as a, buildLoadDataResponse as b, getRecordValue as g };
1104
+ export { DataUnitFetcher as D, InMemoryLoader as I, PreloadManager as P, DatasetStrategy as a, getRecordValue as g };