@sankhyalabs/sankhyablocks 2.8.0 → 2.10.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 (52) hide show
  1. package/dist/cjs/{ConfigStorage-91953f29.js → ConfigStorage-8b5e3261.js} +1 -1
  2. package/dist/cjs/snk-application.cjs.entry.js +20 -9
  3. package/dist/cjs/snk-config-options.cjs.entry.js +2 -6
  4. package/dist/cjs/snk-configurator_3.cjs.entry.js +1 -1
  5. package/dist/cjs/snk-data-exporter_8.cjs.entry.js +1 -1
  6. package/dist/cjs/snk-data-unit.cjs.entry.js +49 -10
  7. package/dist/cjs/snk-form-config.cjs.entry.js +1 -1
  8. package/dist/cjs/snk-form.cjs.entry.js +1 -1
  9. package/dist/collection/components/snk-application/snk-application.js +16 -10
  10. package/dist/collection/components/snk-crud/snk-crud.js +1 -1
  11. package/dist/collection/components/snk-data-unit/snk-data-unit.js +49 -10
  12. package/dist/collection/components/snk-form/snk-form.js +1 -1
  13. package/dist/collection/components/snk-form/subcomponents/snk-config-options/snk-config-options.js +3 -7
  14. package/dist/collection/components/snk-form/subcomponents/snk-field-config/snk-field-config.js +1 -1
  15. package/dist/collection/components/snk-form/subcomponents/snk-form-config/snk-form-config.js +2 -2
  16. package/dist/collection/lib/http/data-fetcher/fetchers/dataunit-fetcher.js +15 -4
  17. package/dist/collection/lib/http/data-fetcher/fetchers/form-config-fetcher.js +1 -1
  18. package/dist/components/ConfigStorage.js +1 -1
  19. package/dist/components/snk-application2.js +19 -8
  20. package/dist/components/snk-config-options2.js +2 -6
  21. package/dist/components/snk-data-unit.js +49 -10
  22. package/dist/esm/{ConfigStorage-b59461d8.js → ConfigStorage-4654f57b.js} +1 -1
  23. package/dist/esm/snk-application.entry.js +20 -9
  24. package/dist/esm/snk-config-options.entry.js +2 -6
  25. package/dist/esm/snk-configurator_3.entry.js +1 -1
  26. package/dist/esm/snk-data-exporter_8.entry.js +1 -1
  27. package/dist/esm/snk-data-unit.entry.js +49 -10
  28. package/dist/esm/snk-form-config.entry.js +1 -1
  29. package/dist/esm/snk-form.entry.js +1 -1
  30. package/dist/sankhyablocks/{p-1a2533d0.entry.js → p-3cb9f3ad.entry.js} +1 -1
  31. package/dist/sankhyablocks/{p-772f1c44.entry.js → p-4ca32c86.entry.js} +1 -1
  32. package/dist/sankhyablocks/{p-68fcc226.entry.js → p-6617d349.entry.js} +1 -1
  33. package/dist/sankhyablocks/{p-395b45a7.js → p-93d8ea09.js} +1 -1
  34. package/dist/sankhyablocks/{p-f5246cd6.entry.js → p-9d474bc0.entry.js} +1 -1
  35. package/dist/sankhyablocks/p-b84c7c61.entry.js +90 -0
  36. package/dist/sankhyablocks/p-c32cfc29.entry.js +1 -0
  37. package/dist/sankhyablocks/{p-48d7ba04.entry.js → p-fc77347c.entry.js} +1 -1
  38. package/dist/sankhyablocks/sankhyablocks.esm.js +1 -1
  39. package/dist/types/components/snk-application/snk-application.d.ts +3 -3
  40. package/dist/types/components/snk-crud/snk-crud.d.ts +1 -1
  41. package/dist/types/components/snk-data-unit/snk-data-unit.d.ts +6 -0
  42. package/dist/types/components/snk-form/snk-form.d.ts +1 -1
  43. package/dist/types/components/snk-form/subcomponents/snk-config-options/snk-config-options.d.ts +1 -1
  44. package/dist/types/components/snk-form/subcomponents/snk-field-config/snk-field-config.d.ts +1 -1
  45. package/dist/types/components/snk-form/subcomponents/snk-form-config/snk-form-config.d.ts +1 -1
  46. package/dist/types/components.d.ts +3 -3
  47. package/dist/types/lib/configs/ConfigStorage.d.ts +1 -1
  48. package/dist/types/lib/http/data-fetcher/fetchers/dataunit-fetcher.d.ts +1 -1
  49. package/dist/types/lib/http/data-fetcher/fetchers/form-config-fetcher.d.ts +1 -1
  50. package/package.json +1 -1
  51. package/dist/sankhyablocks/p-3480f2fa.entry.js +0 -1
  52. package/dist/sankhyablocks/p-43eff4d3.entry.js +0 -83
@@ -6797,7 +6797,7 @@ class FormConfigFetcher extends ResourceFetcher {
6797
6797
  }
6798
6798
  config.fields = fields === null || fields === void 0 ? void 0 : fields.map((field) => {
6799
6799
  if ("readonly" in field) {
6800
- const readOnly = field['readonly'];
6800
+ const readOnly = field['readonly'] === true;
6801
6801
  delete field['readonly'];
6802
6802
  field.readOnly = readOnly;
6803
6803
  }
@@ -4,7 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  const index = require('./index-2cd6f753.js');
6
6
  const core = require('@sankhyalabs/core');
7
- const ConfigStorage = require('./ConfigStorage-91953f29.js');
7
+ const ConfigStorage = require('./ConfigStorage-8b5e3261.js');
8
8
  const utils = require('@sankhyalabs/ezui/dist/collection/utils');
9
9
  const SnkMessageBuilder = require('./SnkMessageBuilder-248b5105.js');
10
10
  require('./_commonjsHelpers-537d719a.js');
@@ -241,6 +241,13 @@ class DataUnitFetcher {
241
241
  type
242
242
  expression
243
243
  }
244
+ },
245
+ children{
246
+ name
247
+ links{
248
+ source
249
+ target
250
+ }
244
251
  }
245
252
  children{
246
253
  name
@@ -251,9 +258,9 @@ class DataUnitFetcher {
251
258
  }
252
259
  }
253
260
  }`);
254
- this.templateByQuery.set("fetchData", ConfigStorage.dist.gql `query($dataunit: String! $limit: Int $offset:Int $filters: [InputFilter!] $sort: [InputSort!]) {
261
+ this.templateByQuery.set("fetchData", ConfigStorage.dist.gql `query($dataunit: String! $limit: Int $offset:Int $filters: [InputFilter!] $sort: [InputSort!] $parentRecordId: String) {
255
262
  $queryAlias$: fetchDataUnit(name: $dataunit){
256
- data(limit: $limit offset: $offset filters: $filters sort: $sort){
263
+ data(limit: $limit offset: $offset filters: $filters sort: $sort parentRecordId: $parentRecordId){
257
264
  limit
258
265
  offset
259
266
  total
@@ -290,8 +297,8 @@ class DataUnitFetcher {
290
297
  }
291
298
  }`);
292
299
  }
293
- getDataUnit(entityName, resourceID) {
294
- const dataUnit = new core.DataUnit(`dd://${entityName}/${resourceID}`);
300
+ getDataUnit(entityName, resourceID, parentDataUnit) {
301
+ const dataUnit = parentDataUnit != undefined ? parentDataUnit.getChildDataunit(`dd://${entityName}/${resourceID}`) : new core.DataUnit(`dd://${entityName}/${resourceID}`);
295
302
  dataUnit.metadataLoader = (dataUnit) => this.loadMetadata(dataUnit);
296
303
  dataUnit.dataLoader = (dataUnit, request) => this.loadData(dataUnit, request);
297
304
  dataUnit.saveLoader = (dataUnit, changes) => this.saveData(dataUnit, changes);
@@ -354,6 +361,7 @@ class DataUnitFetcher {
354
361
  const variables = { dataunit: dataUnit.name, sort, filters };
355
362
  variables.limit = limit;
356
363
  variables.offset = offset;
364
+ variables.parentRecordId = request.parentRecordId;
357
365
  if (!core.StringUtils.isEmpty(quickFilter === null || quickFilter === void 0 ? void 0 : quickFilter.term)) {
358
366
  if (variables.filter === undefined) {
359
367
  variables.filter = [];
@@ -421,6 +429,9 @@ class DataUnitFetcher {
421
429
  if (change.sourceId) {
422
430
  reqChange.sourceId = change.sourceId;
423
431
  }
432
+ if (record.__parent__record__id__) {
433
+ reqChange.parentRecordId = record.__parent__record__id__;
434
+ }
424
435
  return reqChange;
425
436
  });
426
437
  return new Promise((resolve, reject) => {
@@ -918,13 +929,13 @@ const SnkApplication = class {
918
929
  * Cria o DataUnit a partir do nome da entidade. É possível armazená-lo no cache
919
930
  * passando o dataUnitName, assim, se mais de uma chamada for feita, o mesmo DataUnit será usado.
920
931
  */
921
- async createDataunit(entityName, dataUnitName) {
932
+ async createDataunit(entityName, dataUnitName, parentDataUnit) {
922
933
  return new Promise((resolve, reject) => {
923
934
  const duPromisses = this.getDuPromissesStack(dataUnitName);
924
935
  const waitingDu = duPromisses.length > 0;
925
936
  duPromisses.push(new PendingPromise(resolve, reject));
926
937
  if (!waitingDu) {
927
- const dataUnit = this.dataUnitFetcher.getDataUnit(entityName, this.resourceID);
938
+ const dataUnit = this.dataUnitFetcher.getDataUnit(entityName, this.resourceID, parentDataUnit);
928
939
  dataUnit.loadMetadata().then(() => {
929
940
  if (dataUnitName) {
930
941
  this._duCache.set(dataUnitName, dataUnit);
@@ -943,14 +954,14 @@ const SnkApplication = class {
943
954
  /**
944
955
  * Obtem um DataUnit do cache ou cria um caso ainda não tenha sido criado.
945
956
  */
946
- async getDataUnit(entityName, dataUnitName) {
957
+ async getDataUnit(entityName, dataUnitName, parentDataUnit) {
947
958
  return new Promise((resolve, reject) => {
948
959
  const dataUnit = this._duCache.get(dataUnitName);
949
960
  if (dataUnit) {
950
961
  resolve(dataUnit);
951
962
  }
952
963
  else {
953
- this.createDataunit(entityName, dataUnitName).then(dataUnit => {
964
+ this.createDataunit(entityName, dataUnitName, parentDataUnit).then(dataUnit => {
954
965
  resolve(dataUnit);
955
966
  }).catch(reason => reject(reason));
956
967
  }
@@ -185,8 +185,7 @@ const SnkConfigOptions = class {
185
185
  return this._application.executeSearch(searchArgument, this.fieldConfig.name, this.dataUnit);
186
186
  }
187
187
  }
188
- buildField(field) {
189
- const { config, descriptor } = field;
188
+ buildField(descriptor, config) {
190
189
  const { name, label, readOnly, required, defaultValue } = config;
191
190
  const { userInterface, properties } = descriptor;
192
191
  const allowDefault = properties === null || properties === void 0 ? void 0 : properties.allowDefault;
@@ -229,10 +228,7 @@ const SnkConfigOptions = class {
229
228
  index.h("ez-combo-box", { label: this.getMessage("snkConfigOptions.label.valueDefault"), enabled: this.isAllowDefault(), onEzChange: (evt) => { var _a; this.fieldConfig.defaultValue.value = (_a = evt.detail) === null || _a === void 0 ? void 0 : _a.value; this.configOptionsChanged.emit(this.fieldConfig); }, value: this.fieldConfig.defaultValue.value, options: this.buildOptions() })
230
229
  :
231
230
  ((_b = this._fieldProperties) === null || _b === void 0 ? void 0 : _b.userInterface) &&
232
- this.buildField({
233
- descriptor: this._fieldProperties,
234
- config: this.fieldConfig
235
- }))), index.h("div", { class: "ez-row ez-padding--medium config-options__switch-row" }, index.h("div", { class: "ez-col ez-col--sd-12 ez-col--tb-4 ez-padding--small" }, index.h("ez-check", { mode: utils.CheckMode.SWITCH, label: this.getMessage("snkConfigOptions.label.clearDuplicate"), value: this.fieldConfig.cleanOnCopy, onEzChange: (evt) => { this.fieldConfig.cleanOnCopy = evt.detail; this.configOptionsChanged.emit(this.fieldConfig); } })), index.h("div", { class: "ez-col ez-col--sd-12 ez-col--tb-4 ez-padding--small" }, index.h("ez-check", { mode: utils.CheckMode.SWITCH, label: this.getMessage("snkConfigOptions.label.requiredField"), enabled: this.getEnabledByProperty("required"), value: this.getValueByProperty("required"), onEzChange: (evt) => { this.fieldConfig.required = evt.detail; this.configOptionsChanged.emit(this.fieldConfig); } })), index.h("div", { class: "ez-col ez-col--sd-12 ez-col--tb-4 ez-padding--small" }, index.h("ez-check", { mode: utils.CheckMode.SWITCH, label: this.getMessage("snkConfigOptions.label.protectedField"), enabled: this.getEnabledByProperty("readOnly"), value: this.getValueByProperty("readOnly"), onEzChange: (evt) => { this.fieldConfig.readOnly = evt.detail; this.configOptionsChanged.emit(this.fieldConfig); } }))))));
231
+ this.buildField(this._fieldProperties, this.fieldConfig))), index.h("div", { class: "ez-row ez-padding--medium config-options__switch-row" }, index.h("div", { class: "ez-col ez-col--sd-12 ez-col--tb-4 ez-padding--small" }, index.h("ez-check", { mode: utils.CheckMode.SWITCH, label: this.getMessage("snkConfigOptions.label.clearDuplicate"), value: this.fieldConfig.cleanOnCopy, onEzChange: (evt) => { this.fieldConfig.cleanOnCopy = evt.detail; this.configOptionsChanged.emit(this.fieldConfig); } })), index.h("div", { class: "ez-col ez-col--sd-12 ez-col--tb-4 ez-padding--small" }, index.h("ez-check", { mode: utils.CheckMode.SWITCH, label: this.getMessage("snkConfigOptions.label.requiredField"), enabled: this.getEnabledByProperty("required"), value: this.getValueByProperty("required"), onEzChange: (evt) => { this.fieldConfig.required = evt.detail; this.configOptionsChanged.emit(this.fieldConfig); } })), index.h("div", { class: "ez-col ez-col--sd-12 ez-col--tb-4 ez-padding--small" }, index.h("ez-check", { mode: utils.CheckMode.SWITCH, label: this.getMessage("snkConfigOptions.label.protectedField"), enabled: this.getEnabledByProperty("readOnly"), value: this.getValueByProperty("readOnly"), onEzChange: (evt) => { this.fieldConfig.readOnly = evt.detail; this.configOptionsChanged.emit(this.fieldConfig); } }))))));
236
232
  }
237
233
  get _element() { return index.getElement(this); }
238
234
  };
@@ -8,7 +8,7 @@ const constants = require('./constants-a47a5190.js');
8
8
  const AuthorizationConfig = require('./AuthorizationConfig-79ffae4b.js');
9
9
  const UnitMetadata = require('@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata');
10
10
  const taskbarProcessor = require('./taskbar-processor-6f3d2a75.js');
11
- const ConfigStorage = require('./ConfigStorage-91953f29.js');
11
+ const ConfigStorage = require('./ConfigStorage-8b5e3261.js');
12
12
  const index$1 = require('./index-696b5c3b.js');
13
13
  require('./_commonjsHelpers-537d719a.js');
14
14
 
@@ -5,7 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  const index = require('./index-2cd6f753.js');
6
6
  const core = require('@sankhyalabs/core');
7
7
  const utils = require('@sankhyalabs/ezui/dist/collection/utils');
8
- const ConfigStorage = require('./ConfigStorage-91953f29.js');
8
+ const ConfigStorage = require('./ConfigStorage-8b5e3261.js');
9
9
  const filterItemType_enum = require('./filter-item-type.enum-3daf58d3.js');
10
10
  const ezModalContainer = require('@sankhyalabs/ezui/dist/collection/components/ez-modal-container');
11
11
  const DataType = require('@sankhyalabs/core/dist/dataunit/metadata/DataType');
@@ -12,10 +12,10 @@ const snkDataUnitCss = ".sc-snk-data-unit-h{display:flex;flex-direction:column;h
12
12
  const SnkDataUnit = class {
13
13
  constructor(hostRef) {
14
14
  index.registerInstance(this, hostRef);
15
- this.dataStateChange = index.createEvent(this, "dataStateChange", 7);
16
- this.dataUnitReady = index.createEvent(this, "dataUnitReady", 7);
17
- this.insertionMode = index.createEvent(this, "insertionMode", 7);
18
- this.cancelEdition = index.createEvent(this, "cancelEdition", 7);
15
+ this.dataStateChange = index.createEvent(this, "dataStateChange", 3);
16
+ this.dataUnitReady = index.createEvent(this, "dataUnitReady", 3);
17
+ this.insertionMode = index.createEvent(this, "insertionMode", 3);
18
+ this.cancelEdition = index.createEvent(this, "cancelEdition", 3);
19
19
  this._onDataUnitResolve = [];
20
20
  /**
21
21
  * Determina quantas linhas são retornadas por página.
@@ -29,12 +29,13 @@ const SnkDataUnit = class {
29
29
  copyMode: false,
30
30
  isDirty: this.dataUnit.isDirty(),
31
31
  hasDirtyRecords: this.dataUnit.hasDirtyRecords(),
32
- selectedRecords: this.dataUnit.getSelectedRecords()
32
+ selectedRecords: this.dataUnit.getSelectedRecords(),
33
+ selectedRecord: this.dataUnit.getSelectedRecord()
33
34
  };
34
- this.dataUnit.records.forEach(r => {
35
- if (r.__record__id__.startsWith('NEW_')) {
35
+ this.dataUnit.records.forEach(record => {
36
+ if (record.__record__id__.startsWith('NEW_')) {
36
37
  duState.insertionMode = true;
37
- duState.copyMode || (duState.copyMode = r['__record__source__id__'] != undefined);
38
+ duState.copyMode || (duState.copyMode = record['__record__source__id__'] != undefined);
38
39
  }
39
40
  });
40
41
  this.dataState = duState;
@@ -88,6 +89,7 @@ const SnkDataUnit = class {
88
89
  }
89
90
  }
90
91
  observeDataUnit() {
92
+ this.handlerLinkFields();
91
93
  this.dataUnitReady.emit(this.dataUnit);
92
94
  }
93
95
  /**
@@ -233,11 +235,21 @@ const SnkDataUnit = class {
233
235
  }
234
236
  return SnkMessageBuilder.OperationMap.CLEAN;
235
237
  }
238
+ async getDataUnitParentOrChild() {
239
+ var _a;
240
+ const cacheName = this.dataUnitName ? this.dataUnitName : this.entityName;
241
+ if (this._parentSnkDataUnit) {
242
+ this._parentDataUnit = await ((_a = this._parentSnkDataUnit) === null || _a === void 0 ? void 0 : _a.getDataUnit());
243
+ return await this._application.getDataUnit(this.entityName, undefined, this._parentDataUnit);
244
+ }
245
+ else {
246
+ return await this._application.getDataUnit(this.entityName, cacheName);
247
+ }
248
+ }
236
249
  async loadDataUnit() {
237
250
  if (!this.dataUnit) {
238
251
  if (this._application && this.entityName) {
239
- const cacheName = this.dataUnitName ? this.dataUnitName : this.entityName;
240
- this.dataUnit = await this._application.getDataUnit(this.entityName, cacheName);
252
+ this.dataUnit = await this.getDataUnitParentOrChild();
241
253
  this.dataUnit.pageSize = this.pageSize;
242
254
  this.dataUnit.unsubscribe(this._dataUnitObserver);
243
255
  this.dataUnit.addInterceptor(this);
@@ -249,12 +261,39 @@ const SnkDataUnit = class {
249
261
  }
250
262
  }
251
263
  }
264
+ getParentSnkDataUnit() {
265
+ let currentElement = this.element;
266
+ while (currentElement.parentNode) {
267
+ if (currentElement.parentNode.nodeName === 'SNK-DATA-UNIT') {
268
+ return currentElement.parentNode;
269
+ }
270
+ currentElement = currentElement.parentNode;
271
+ }
272
+ return;
273
+ }
274
+ handlerLinkFields() {
275
+ var _a, _b;
276
+ const metadata = Object.assign({}, this.dataUnit.metadata);
277
+ if (!this._parentDataUnit)
278
+ return;
279
+ const child = this._parentDataUnit.getChildInfo(this.entityName);
280
+ if (!child)
281
+ return;
282
+ const fieldsLink = (_a = child === null || child === void 0 ? void 0 : child.links) === null || _a === void 0 ? void 0 : _a.map(link => link.target);
283
+ (_b = metadata === null || metadata === void 0 ? void 0 : metadata.fields) === null || _b === void 0 ? void 0 : _b.forEach(field => {
284
+ if (fieldsLink === null || fieldsLink === void 0 ? void 0 : fieldsLink.includes(field.name)) {
285
+ field.visible = false;
286
+ }
287
+ });
288
+ this.dataUnit.metadata = metadata;
289
+ }
252
290
  //---------------------------------------------
253
291
  // Lifecycle web component
254
292
  //---------------------------------------------
255
293
  componentWillLoad() {
256
294
  this._application = core.ApplicationContext.getContextValue("__SNK__APPLICATION__");
257
295
  this._application.getAllAccess().then(access => this._permissions = access);
296
+ this._parentSnkDataUnit = this.getParentSnkDataUnit();
258
297
  }
259
298
  componentDidLoad() {
260
299
  this.loadDataUnit();
@@ -7,7 +7,7 @@ const draggable_bundle = require('./draggable.bundle-82a25c06.js');
7
7
  const core = require('@sankhyalabs/core');
8
8
  const utils = require('@sankhyalabs/ezui/dist/collection/utils');
9
9
  const constants = require('./constants-a47a5190.js');
10
- const ConfigStorage = require('./ConfigStorage-91953f29.js');
10
+ const ConfigStorage = require('./ConfigStorage-8b5e3261.js');
11
11
  require('./_commonjsHelpers-537d719a.js');
12
12
 
13
13
  const snkFormConfigCss = ".sc-snk-form-config-h{--snk-form-config__title--font-pattern:var(--font-pattern, \"Roboto\");--snk-form-config__title--weight--large:var(--text-weight--large, 600);display:flex;flex-direction:column;position:absolute;top:0;left:0;width:100%;height:100%;z-index:var(--more-visible, 2);background-color:var(--background--xlight)}.form-config__title.sc-snk-form-config{display:flex;margin:0;line-height:1.3;font-family:var(--snk-form-config__title--font-pattern);font-weight:var(--snk-form-config__title--weight--large)}.form-config__header-container.sc-snk-form-config{display:flex}.form-config__field-container.sc-snk-form-config{width:32%;padding:6px}.form-config__hide-content.sc-snk-form-config{display:none}ez-icon.sc-snk-form-config .left-icon.sc-snk-form-config{--ez-icon--color:var(--text--disable)}.ez-box__label-counter.sc-snk-form-config{font-weight:var(--text-weight--extra-small);margin-top:-7px}.form-config__btn-options.sc-snk-form-config{--ez-button--min-width:300px;--ez-button--background-color:#FFFFFF}[data-draggable-parent].sc-snk-form-config{position:relative}.form-config__field-config--selected.sc-snk-form-config{position:static}.form-config__field-config--dragged.sc-snk-form-config .draggable-mirror.sc-snk-form-config{z-index:var(--more-visible, 2)}.form-config__config-options.sc-snk-form-config{position:relative;margin-top:-3px;min-width:100%;z-index:1}.form-config__tab-container.sc-snk-form-config,.form-config__fields-available.sc-snk-form-config{position:relative;height:100%;max-height:calc(100vh - 92px)}.form-config__tab-container.sc-snk-form-config .ez-box__container.sc-snk-form-config,.form-config__fields-available.sc-snk-form-config .ez-box__container.sc-snk-form-config{align-content:flex-start;height:100%}.form-config__fields-available.sc-snk-form-config [data-draggable-parent].sc-snk-form-config{align-content:flex-start;overflow-y:auto;height:100%;max-height:calc(100% - 122px)}.form-config__tab-content.sc-snk-form-config{align-content:flex-start;overflow-y:auto;height:auto;max-height:calc(100% - 128px)}[data-draggable-element].sc-snk-form-config{cursor:grab}.form-config__actions-button.sc-snk-form-config{--ez-actions-button__btn-action--min-width:235px}.form-config__add-group.sc-snk-form-config{position:relative;min-height:120px;margin-bottom:10px}.form-config__add-group-container.sc-snk-form-config{position:absolute;display:flex;flex-wrap:wrap;width:100%;box-sizing:border-box;border-radius:var(--border--radius-medium, 12px);background-color:var(--background--medium, #d2dce9);padding:var(--space--small, 6px)}.form-config__add-group-content.sc-snk-form-config{width:100%;display:flex;flex-wrap:wrap;justify-content:center;align-items:center;box-sizing:border-box;border:2px dashed var(--color-strokes, #DCE0E8);border-radius:var(--border--radius-small, 6px)}.form-config__add-group-label.sc-snk-form-config{display:flex;justify-content:center;box-sizing:border-box;padding:var(--space--large, 24px)}.form-config__btn-add-group.sc-snk-form-config{position:relative;padding:var(--space--large, 24px) var(--space--medium, 12px) 0}.form-config__btn-add-group-container.sc-snk-form-config{padding:var(--space--medium, 12px);border-radius:var(--border--radius-medium, 12px);border:2px solid var(--color-strokes, #DCE0E8);background-color:var(--background--body, #fafcff)}.form-config__left-icon--eye-off.sc-snk-form-config{padding-top:var(--space--medium, 8px)}ez-collapsible-box.draggable-mirror.sc-snk-form-config{display:table;background-color:#FFFFFF}ez-collapsible-box.sc-snk-form-config{margin-bottom:10px}@media screen and (min-width: 480px){.form-config__field-config--selected.sc-snk-form-config .ez-flex.form-config__config-options.sc-snk-form-config{min-width:calc(300% + 12px)}.form-config__field-config--selected.sc-snk-form-config:nth-child(3n+2) .ez-flex.form-config__config-options.sc-snk-form-config{transform:translate(calc(100% / 3 * -1))}.form-config__field-config--selected.sc-snk-form-config:nth-child(3n+3) .ez-flex.form-config__config-options.sc-snk-form-config{transform:translate(calc(100% / 3 * -2))}}";
@@ -5,7 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  const index = require('./index-2cd6f753.js');
6
6
  const core = require('@sankhyalabs/core');
7
7
  const taskbarProcessor = require('./taskbar-processor-6f3d2a75.js');
8
- const ConfigStorage = require('./ConfigStorage-91953f29.js');
8
+ const ConfigStorage = require('./ConfigStorage-8b5e3261.js');
9
9
  require('./_commonjsHelpers-537d719a.js');
10
10
 
11
11
  const snkFormCss = ".sc-snk-form-h{display:block}.snk-form.sc-snk-form{position:relative;padding:var(--space--large);padding-top:var(--space--medium)}.snk-form__header.sc-snk-form{position:relative;padding-top:var(--space--medium);padding-bottom:var(--space--medium);margin-bottom:var(--space--medium)}.snk-form__header--fixed.sc-snk-form{position:sticky;top:0;background:var(--background--body);z-index:var(--more-visible, 2);padding-left:var(--space--large);padding-right:var(--space--large);margin-left:calc(var(--space--large) * -1);margin-right:calc(var(--space--large) * -1);width:calc(100% + (var(--space--large) * 2))}.snk-form__form--hidden.sc-snk-form{display:none}";
@@ -270,13 +270,13 @@ export class SnkApplication {
270
270
  * Cria o DataUnit a partir do nome da entidade. É possível armazená-lo no cache
271
271
  * passando o dataUnitName, assim, se mais de uma chamada for feita, o mesmo DataUnit será usado.
272
272
  */
273
- async createDataunit(entityName, dataUnitName) {
273
+ async createDataunit(entityName, dataUnitName, parentDataUnit) {
274
274
  return new Promise((resolve, reject) => {
275
275
  const duPromisses = this.getDuPromissesStack(dataUnitName);
276
276
  const waitingDu = duPromisses.length > 0;
277
277
  duPromisses.push(new PendingPromise(resolve, reject));
278
278
  if (!waitingDu) {
279
- const dataUnit = this.dataUnitFetcher.getDataUnit(entityName, this.resourceID);
279
+ const dataUnit = this.dataUnitFetcher.getDataUnit(entityName, this.resourceID, parentDataUnit);
280
280
  dataUnit.loadMetadata().then(() => {
281
281
  if (dataUnitName) {
282
282
  this._duCache.set(dataUnitName, dataUnit);
@@ -295,14 +295,14 @@ export class SnkApplication {
295
295
  /**
296
296
  * Obtem um DataUnit do cache ou cria um caso ainda não tenha sido criado.
297
297
  */
298
- async getDataUnit(entityName, dataUnitName) {
298
+ async getDataUnit(entityName, dataUnitName, parentDataUnit) {
299
299
  return new Promise((resolve, reject) => {
300
300
  const dataUnit = this._duCache.get(dataUnitName);
301
301
  if (dataUnit) {
302
302
  resolve(dataUnit);
303
303
  }
304
304
  else {
305
- this.createDataunit(entityName, dataUnitName).then(dataUnit => {
305
+ this.createDataunit(entityName, dataUnitName, parentDataUnit).then(dataUnit => {
306
306
  resolve(dataUnit);
307
307
  }).catch(reason => reject(reason));
308
308
  }
@@ -1075,13 +1075,16 @@ export class SnkApplication {
1075
1075
  },
1076
1076
  "createDataunit": {
1077
1077
  "complexType": {
1078
- "signature": "(entityName: string, dataUnitName?: string) => Promise<DataUnit>",
1078
+ "signature": "(entityName: string, dataUnitName?: string, parentDataUnit?: DataUnit) => Promise<DataUnit>",
1079
1079
  "parameters": [{
1080
1080
  "tags": [],
1081
1081
  "text": ""
1082
1082
  }, {
1083
1083
  "tags": [],
1084
1084
  "text": ""
1085
+ }, {
1086
+ "tags": [],
1087
+ "text": ""
1085
1088
  }],
1086
1089
  "references": {
1087
1090
  "Promise": {
@@ -1101,13 +1104,16 @@ export class SnkApplication {
1101
1104
  },
1102
1105
  "getDataUnit": {
1103
1106
  "complexType": {
1104
- "signature": "(entityName: string, dataUnitName: string) => Promise<DataUnit>",
1107
+ "signature": "(entityName: string, dataUnitName: string, parentDataUnit?: DataUnit) => Promise<DataUnit>",
1105
1108
  "parameters": [{
1106
1109
  "tags": [],
1107
1110
  "text": ""
1108
1111
  }, {
1109
1112
  "tags": [],
1110
1113
  "text": ""
1114
+ }, {
1115
+ "tags": [],
1116
+ "text": ""
1111
1117
  }],
1112
1118
  "references": {
1113
1119
  "Promise": {
@@ -1363,7 +1369,7 @@ export class SnkApplication {
1363
1369
  },
1364
1370
  "IFormConfig": {
1365
1371
  "location": "import",
1366
- "path": "@sankhyalabs/ezui/dist/types/components/ez-form/ez-form"
1372
+ "path": "@sankhyalabs/ezui/dist/types/components/ez-form/interfaces"
1367
1373
  }
1368
1374
  },
1369
1375
  "return": "Promise<IFormConfig>"
@@ -1435,7 +1441,7 @@ export class SnkApplication {
1435
1441
  },
1436
1442
  "IFormConfig": {
1437
1443
  "location": "import",
1438
- "path": "@sankhyalabs/ezui/dist/types/components/ez-form/ez-form"
1444
+ "path": "@sankhyalabs/ezui/dist/types/components/ez-form/interfaces"
1439
1445
  }
1440
1446
  },
1441
1447
  "return": "Promise<IFormConfig>"
@@ -1458,7 +1464,7 @@ export class SnkApplication {
1458
1464
  },
1459
1465
  "IFormConfig": {
1460
1466
  "location": "import",
1461
- "path": "@sankhyalabs/ezui/dist/types/components/ez-form/ez-form"
1467
+ "path": "@sankhyalabs/ezui/dist/types/components/ez-form/interfaces"
1462
1468
  }
1463
1469
  },
1464
1470
  "return": "Promise<IFormConfig>"
@@ -1597,7 +1603,7 @@ export class SnkApplication {
1597
1603
  },
1598
1604
  "IFormConfig": {
1599
1605
  "location": "import",
1600
- "path": "@sankhyalabs/ezui/dist/types/components/ez-form/ez-form"
1606
+ "path": "@sankhyalabs/ezui/dist/types/components/ez-form/interfaces"
1601
1607
  }
1602
1608
  },
1603
1609
  "return": "Promise<boolean>"
@@ -183,7 +183,7 @@ export class SnkCrud {
183
183
  "references": {
184
184
  "IRecordValidator": {
185
185
  "location": "import",
186
- "path": "@sankhyalabs/ezui/dist/types/components/ez-form/ez-form"
186
+ "path": "@sankhyalabs/ezui/dist/types/components/ez-form/interfaces"
187
187
  }
188
188
  }
189
189
  },
@@ -17,12 +17,13 @@ export class SnkDataUnit {
17
17
  copyMode: false,
18
18
  isDirty: this.dataUnit.isDirty(),
19
19
  hasDirtyRecords: this.dataUnit.hasDirtyRecords(),
20
- selectedRecords: this.dataUnit.getSelectedRecords()
20
+ selectedRecords: this.dataUnit.getSelectedRecords(),
21
+ selectedRecord: this.dataUnit.getSelectedRecord()
21
22
  };
22
- this.dataUnit.records.forEach(r => {
23
- if (r.__record__id__.startsWith('NEW_')) {
23
+ this.dataUnit.records.forEach(record => {
24
+ if (record.__record__id__.startsWith('NEW_')) {
24
25
  duState.insertionMode = true;
25
- duState.copyMode || (duState.copyMode = r['__record__source__id__'] != undefined);
26
+ duState.copyMode || (duState.copyMode = record['__record__source__id__'] != undefined);
26
27
  }
27
28
  });
28
29
  this.dataState = duState;
@@ -76,6 +77,7 @@ export class SnkDataUnit {
76
77
  }
77
78
  }
78
79
  observeDataUnit() {
80
+ this.handlerLinkFields();
79
81
  this.dataUnitReady.emit(this.dataUnit);
80
82
  }
81
83
  /**
@@ -221,11 +223,21 @@ export class SnkDataUnit {
221
223
  }
222
224
  return OperationMap.CLEAN;
223
225
  }
226
+ async getDataUnitParentOrChild() {
227
+ var _a;
228
+ const cacheName = this.dataUnitName ? this.dataUnitName : this.entityName;
229
+ if (this._parentSnkDataUnit) {
230
+ this._parentDataUnit = await ((_a = this._parentSnkDataUnit) === null || _a === void 0 ? void 0 : _a.getDataUnit());
231
+ return await this._application.getDataUnit(this.entityName, undefined, this._parentDataUnit);
232
+ }
233
+ else {
234
+ return await this._application.getDataUnit(this.entityName, cacheName);
235
+ }
236
+ }
224
237
  async loadDataUnit() {
225
238
  if (!this.dataUnit) {
226
239
  if (this._application && this.entityName) {
227
- const cacheName = this.dataUnitName ? this.dataUnitName : this.entityName;
228
- this.dataUnit = await this._application.getDataUnit(this.entityName, cacheName);
240
+ this.dataUnit = await this.getDataUnitParentOrChild();
229
241
  this.dataUnit.pageSize = this.pageSize;
230
242
  this.dataUnit.unsubscribe(this._dataUnitObserver);
231
243
  this.dataUnit.addInterceptor(this);
@@ -237,12 +249,39 @@ export class SnkDataUnit {
237
249
  }
238
250
  }
239
251
  }
252
+ getParentSnkDataUnit() {
253
+ let currentElement = this.element;
254
+ while (currentElement.parentNode) {
255
+ if (currentElement.parentNode.nodeName === 'SNK-DATA-UNIT') {
256
+ return currentElement.parentNode;
257
+ }
258
+ currentElement = currentElement.parentNode;
259
+ }
260
+ return;
261
+ }
262
+ handlerLinkFields() {
263
+ var _a, _b;
264
+ const metadata = Object.assign({}, this.dataUnit.metadata);
265
+ if (!this._parentDataUnit)
266
+ return;
267
+ const child = this._parentDataUnit.getChildInfo(this.entityName);
268
+ if (!child)
269
+ return;
270
+ const fieldsLink = (_a = child === null || child === void 0 ? void 0 : child.links) === null || _a === void 0 ? void 0 : _a.map(link => link.target);
271
+ (_b = metadata === null || metadata === void 0 ? void 0 : metadata.fields) === null || _b === void 0 ? void 0 : _b.forEach(field => {
272
+ if (fieldsLink === null || fieldsLink === void 0 ? void 0 : fieldsLink.includes(field.name)) {
273
+ field.visible = false;
274
+ }
275
+ });
276
+ this.dataUnit.metadata = metadata;
277
+ }
240
278
  //---------------------------------------------
241
279
  // Lifecycle web component
242
280
  //---------------------------------------------
243
281
  componentWillLoad() {
244
282
  this._application = ApplicationContext.getContextValue("__SNK__APPLICATION__");
245
283
  this._application.getAllAccess().then(access => this._permissions = access);
284
+ this._parentSnkDataUnit = this.getParentSnkDataUnit();
246
285
  }
247
286
  componentDidLoad() {
248
287
  this.loadDataUnit();
@@ -404,7 +443,7 @@ export class SnkDataUnit {
404
443
  return [{
405
444
  "method": "dataStateChange",
406
445
  "name": "dataStateChange",
407
- "bubbles": true,
446
+ "bubbles": false,
408
447
  "cancelable": true,
409
448
  "composed": true,
410
449
  "docs": {
@@ -423,7 +462,7 @@ export class SnkDataUnit {
423
462
  }, {
424
463
  "method": "dataUnitReady",
425
464
  "name": "dataUnitReady",
426
- "bubbles": true,
465
+ "bubbles": false,
427
466
  "cancelable": true,
428
467
  "composed": true,
429
468
  "docs": {
@@ -443,7 +482,7 @@ export class SnkDataUnit {
443
482
  }, {
444
483
  "method": "insertionMode",
445
484
  "name": "insertionMode",
446
- "bubbles": true,
485
+ "bubbles": false,
447
486
  "cancelable": true,
448
487
  "composed": true,
449
488
  "docs": {
@@ -458,7 +497,7 @@ export class SnkDataUnit {
458
497
  }, {
459
498
  "method": "cancelEdition",
460
499
  "name": "cancelEdition",
461
- "bubbles": true,
500
+ "bubbles": false,
462
501
  "cancelable": true,
463
502
  "composed": true,
464
503
  "docs": {
@@ -229,7 +229,7 @@ export class SnkForm {
229
229
  "references": {
230
230
  "IRecordValidator": {
231
231
  "location": "import",
232
- "path": "@sankhyalabs/ezui/dist/types/components/ez-form/ez-form"
232
+ "path": "@sankhyalabs/ezui/dist/types/components/ez-form/interfaces"
233
233
  }
234
234
  }
235
235
  },
@@ -176,8 +176,7 @@ export class SnkConfigOptions {
176
176
  return this._application.executeSearch(searchArgument, this.fieldConfig.name, this.dataUnit);
177
177
  }
178
178
  }
179
- buildField(field) {
180
- const { config, descriptor } = field;
179
+ buildField(descriptor, config) {
181
180
  const { name, label, readOnly, required, defaultValue } = config;
182
181
  const { userInterface, properties } = descriptor;
183
182
  const allowDefault = properties === null || properties === void 0 ? void 0 : properties.allowDefault;
@@ -220,10 +219,7 @@ export class SnkConfigOptions {
220
219
  h("ez-combo-box", { label: this.getMessage("snkConfigOptions.label.valueDefault"), enabled: this.isAllowDefault(), onEzChange: (evt) => { var _a; this.fieldConfig.defaultValue.value = (_a = evt.detail) === null || _a === void 0 ? void 0 : _a.value; this.configOptionsChanged.emit(this.fieldConfig); }, value: this.fieldConfig.defaultValue.value, options: this.buildOptions() })
221
220
  :
222
221
  ((_b = this._fieldProperties) === null || _b === void 0 ? void 0 : _b.userInterface) &&
223
- this.buildField({
224
- descriptor: this._fieldProperties,
225
- config: this.fieldConfig
226
- }))), h("div", { class: "ez-row ez-padding--medium config-options__switch-row" }, h("div", { class: "ez-col ez-col--sd-12 ez-col--tb-4 ez-padding--small" }, h("ez-check", { mode: CheckMode.SWITCH, label: this.getMessage("snkConfigOptions.label.clearDuplicate"), value: this.fieldConfig.cleanOnCopy, onEzChange: (evt) => { this.fieldConfig.cleanOnCopy = evt.detail; this.configOptionsChanged.emit(this.fieldConfig); } })), h("div", { class: "ez-col ez-col--sd-12 ez-col--tb-4 ez-padding--small" }, h("ez-check", { mode: CheckMode.SWITCH, label: this.getMessage("snkConfigOptions.label.requiredField"), enabled: this.getEnabledByProperty("required"), value: this.getValueByProperty("required"), onEzChange: (evt) => { this.fieldConfig.required = evt.detail; this.configOptionsChanged.emit(this.fieldConfig); } })), h("div", { class: "ez-col ez-col--sd-12 ez-col--tb-4 ez-padding--small" }, h("ez-check", { mode: CheckMode.SWITCH, label: this.getMessage("snkConfigOptions.label.protectedField"), enabled: this.getEnabledByProperty("readOnly"), value: this.getValueByProperty("readOnly"), onEzChange: (evt) => { this.fieldConfig.readOnly = evt.detail; this.configOptionsChanged.emit(this.fieldConfig); } }))))));
222
+ this.buildField(this._fieldProperties, this.fieldConfig))), h("div", { class: "ez-row ez-padding--medium config-options__switch-row" }, h("div", { class: "ez-col ez-col--sd-12 ez-col--tb-4 ez-padding--small" }, h("ez-check", { mode: CheckMode.SWITCH, label: this.getMessage("snkConfigOptions.label.clearDuplicate"), value: this.fieldConfig.cleanOnCopy, onEzChange: (evt) => { this.fieldConfig.cleanOnCopy = evt.detail; this.configOptionsChanged.emit(this.fieldConfig); } })), h("div", { class: "ez-col ez-col--sd-12 ez-col--tb-4 ez-padding--small" }, h("ez-check", { mode: CheckMode.SWITCH, label: this.getMessage("snkConfigOptions.label.requiredField"), enabled: this.getEnabledByProperty("required"), value: this.getValueByProperty("required"), onEzChange: (evt) => { this.fieldConfig.required = evt.detail; this.configOptionsChanged.emit(this.fieldConfig); } })), h("div", { class: "ez-col ez-col--sd-12 ez-col--tb-4 ez-padding--small" }, h("ez-check", { mode: CheckMode.SWITCH, label: this.getMessage("snkConfigOptions.label.protectedField"), enabled: this.getEnabledByProperty("readOnly"), value: this.getValueByProperty("readOnly"), onEzChange: (evt) => { this.fieldConfig.readOnly = evt.detail; this.configOptionsChanged.emit(this.fieldConfig); } }))))));
227
223
  }
228
224
  static get is() { return "snk-config-options"; }
229
225
  static get encapsulation() { return "scoped"; }
@@ -248,7 +244,7 @@ export class SnkConfigOptions {
248
244
  "references": {
249
245
  "IFieldConfig": {
250
246
  "location": "import",
251
- "path": "@sankhyalabs/ezui/dist/types/components/ez-form/ez-form"
247
+ "path": "@sankhyalabs/ezui/dist/types/components/ez-form/interfaces"
252
248
  }
253
249
  }
254
250
  },
@@ -92,7 +92,7 @@ export class SnkFieldConfig {
92
92
  "references": {
93
93
  "IFieldConfig": {
94
94
  "location": "import",
95
- "path": "@sankhyalabs/ezui/dist/types/components/ez-form/ez-form"
95
+ "path": "@sankhyalabs/ezui/dist/types/components/ez-form/interfaces"
96
96
  }
97
97
  }
98
98
  },
@@ -1009,7 +1009,7 @@ export class SnkFormConfig {
1009
1009
  "references": {
1010
1010
  "IFormConfig": {
1011
1011
  "location": "import",
1012
- "path": "@sankhyalabs/ezui/dist/types/components/ez-form/ez-form"
1012
+ "path": "@sankhyalabs/ezui/dist/types/components/ez-form/interfaces"
1013
1013
  }
1014
1014
  }
1015
1015
  },
@@ -1070,7 +1070,7 @@ export class SnkFormConfig {
1070
1070
  "references": {
1071
1071
  "IFormConfig": {
1072
1072
  "location": "import",
1073
- "path": "@sankhyalabs/ezui/dist/types/components/ez-form/ez-form"
1073
+ "path": "@sankhyalabs/ezui/dist/types/components/ez-form/interfaces"
1074
1074
  }
1075
1075
  }
1076
1076
  }