@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
@@ -31,6 +31,13 @@ export default class DataUnitFetcher {
31
31
  type
32
32
  expression
33
33
  }
34
+ },
35
+ children{
36
+ name
37
+ links{
38
+ source
39
+ target
40
+ }
34
41
  }
35
42
  children{
36
43
  name
@@ -41,9 +48,9 @@ export default class DataUnitFetcher {
41
48
  }
42
49
  }
43
50
  }`);
44
- this.templateByQuery.set("fetchData", gql `query($dataunit: String! $limit: Int $offset:Int $filters: [InputFilter!] $sort: [InputSort!]) {
51
+ this.templateByQuery.set("fetchData", gql `query($dataunit: String! $limit: Int $offset:Int $filters: [InputFilter!] $sort: [InputSort!] $parentRecordId: String) {
45
52
  $queryAlias$: fetchDataUnit(name: $dataunit){
46
- data(limit: $limit offset: $offset filters: $filters sort: $sort){
53
+ data(limit: $limit offset: $offset filters: $filters sort: $sort parentRecordId: $parentRecordId){
47
54
  limit
48
55
  offset
49
56
  total
@@ -80,8 +87,8 @@ export default class DataUnitFetcher {
80
87
  }
81
88
  }`);
82
89
  }
83
- getDataUnit(entityName, resourceID) {
84
- const dataUnit = new DataUnit(`dd://${entityName}/${resourceID}`);
90
+ getDataUnit(entityName, resourceID, parentDataUnit) {
91
+ const dataUnit = parentDataUnit != undefined ? parentDataUnit.getChildDataunit(`dd://${entityName}/${resourceID}`) : new DataUnit(`dd://${entityName}/${resourceID}`);
85
92
  dataUnit.metadataLoader = (dataUnit) => this.loadMetadata(dataUnit);
86
93
  dataUnit.dataLoader = (dataUnit, request) => this.loadData(dataUnit, request);
87
94
  dataUnit.saveLoader = (dataUnit, changes) => this.saveData(dataUnit, changes);
@@ -144,6 +151,7 @@ export default class DataUnitFetcher {
144
151
  const variables = { dataunit: dataUnit.name, sort, filters };
145
152
  variables.limit = limit;
146
153
  variables.offset = offset;
154
+ variables.parentRecordId = request.parentRecordId;
147
155
  if (!StringUtils.isEmpty(quickFilter === null || quickFilter === void 0 ? void 0 : quickFilter.term)) {
148
156
  if (variables.filter === undefined) {
149
157
  variables.filter = [];
@@ -211,6 +219,9 @@ export default class DataUnitFetcher {
211
219
  if (change.sourceId) {
212
220
  reqChange.sourceId = change.sourceId;
213
221
  }
222
+ if (record.__parent__record__id__) {
223
+ reqChange.parentRecordId = record.__parent__record__id__;
224
+ }
214
225
  return reqChange;
215
226
  });
216
227
  return new Promise((resolve, reject) => {
@@ -42,7 +42,7 @@ export class FormConfigFetcher extends ResourceFetcher {
42
42
  }
43
43
  config.fields = fields === null || fields === void 0 ? void 0 : fields.map((field) => {
44
44
  if ("readonly" in field) {
45
- const readOnly = field['readonly'];
45
+ const readOnly = field['readonly'] === true;
46
46
  delete field['readonly'];
47
47
  field.readOnly = readOnly;
48
48
  }
@@ -104,7 +104,7 @@ class FormConfigFetcher extends ResourceFetcher {
104
104
  }
105
105
  config.fields = fields === null || fields === void 0 ? void 0 : fields.map((field) => {
106
106
  if ("readonly" in field) {
107
- const readOnly = field['readonly'];
107
+ const readOnly = field['readonly'] === true;
108
108
  delete field['readonly'];
109
109
  field.readOnly = readOnly;
110
110
  }
@@ -238,6 +238,13 @@ class DataUnitFetcher {
238
238
  type
239
239
  expression
240
240
  }
241
+ },
242
+ children{
243
+ name
244
+ links{
245
+ source
246
+ target
247
+ }
241
248
  }
242
249
  children{
243
250
  name
@@ -248,9 +255,9 @@ class DataUnitFetcher {
248
255
  }
249
256
  }
250
257
  }`);
251
- this.templateByQuery.set("fetchData", dist.gql `query($dataunit: String! $limit: Int $offset:Int $filters: [InputFilter!] $sort: [InputSort!]) {
258
+ this.templateByQuery.set("fetchData", dist.gql `query($dataunit: String! $limit: Int $offset:Int $filters: [InputFilter!] $sort: [InputSort!] $parentRecordId: String) {
252
259
  $queryAlias$: fetchDataUnit(name: $dataunit){
253
- data(limit: $limit offset: $offset filters: $filters sort: $sort){
260
+ data(limit: $limit offset: $offset filters: $filters sort: $sort parentRecordId: $parentRecordId){
254
261
  limit
255
262
  offset
256
263
  total
@@ -287,8 +294,8 @@ class DataUnitFetcher {
287
294
  }
288
295
  }`);
289
296
  }
290
- getDataUnit(entityName, resourceID) {
291
- const dataUnit = new DataUnit(`dd://${entityName}/${resourceID}`);
297
+ getDataUnit(entityName, resourceID, parentDataUnit) {
298
+ const dataUnit = parentDataUnit != undefined ? parentDataUnit.getChildDataunit(`dd://${entityName}/${resourceID}`) : new DataUnit(`dd://${entityName}/${resourceID}`);
292
299
  dataUnit.metadataLoader = (dataUnit) => this.loadMetadata(dataUnit);
293
300
  dataUnit.dataLoader = (dataUnit, request) => this.loadData(dataUnit, request);
294
301
  dataUnit.saveLoader = (dataUnit, changes) => this.saveData(dataUnit, changes);
@@ -351,6 +358,7 @@ class DataUnitFetcher {
351
358
  const variables = { dataunit: dataUnit.name, sort, filters };
352
359
  variables.limit = limit;
353
360
  variables.offset = offset;
361
+ variables.parentRecordId = request.parentRecordId;
354
362
  if (!StringUtils.isEmpty(quickFilter === null || quickFilter === void 0 ? void 0 : quickFilter.term)) {
355
363
  if (variables.filter === undefined) {
356
364
  variables.filter = [];
@@ -418,6 +426,9 @@ class DataUnitFetcher {
418
426
  if (change.sourceId) {
419
427
  reqChange.sourceId = change.sourceId;
420
428
  }
429
+ if (record.__parent__record__id__) {
430
+ reqChange.parentRecordId = record.__parent__record__id__;
431
+ }
421
432
  return reqChange;
422
433
  });
423
434
  return new Promise((resolve, reject) => {
@@ -916,13 +927,13 @@ const SnkApplication = /*@__PURE__*/ proxyCustomElement(class extends HTMLElemen
916
927
  * Cria o DataUnit a partir do nome da entidade. É possível armazená-lo no cache
917
928
  * passando o dataUnitName, assim, se mais de uma chamada for feita, o mesmo DataUnit será usado.
918
929
  */
919
- async createDataunit(entityName, dataUnitName) {
930
+ async createDataunit(entityName, dataUnitName, parentDataUnit) {
920
931
  return new Promise((resolve, reject) => {
921
932
  const duPromisses = this.getDuPromissesStack(dataUnitName);
922
933
  const waitingDu = duPromisses.length > 0;
923
934
  duPromisses.push(new PendingPromise(resolve, reject));
924
935
  if (!waitingDu) {
925
- const dataUnit = this.dataUnitFetcher.getDataUnit(entityName, this.resourceID);
936
+ const dataUnit = this.dataUnitFetcher.getDataUnit(entityName, this.resourceID, parentDataUnit);
926
937
  dataUnit.loadMetadata().then(() => {
927
938
  if (dataUnitName) {
928
939
  this._duCache.set(dataUnitName, dataUnit);
@@ -941,14 +952,14 @@ const SnkApplication = /*@__PURE__*/ proxyCustomElement(class extends HTMLElemen
941
952
  /**
942
953
  * Obtem um DataUnit do cache ou cria um caso ainda não tenha sido criado.
943
954
  */
944
- async getDataUnit(entityName, dataUnitName) {
955
+ async getDataUnit(entityName, dataUnitName, parentDataUnit) {
945
956
  return new Promise((resolve, reject) => {
946
957
  const dataUnit = this._duCache.get(dataUnitName);
947
958
  if (dataUnit) {
948
959
  resolve(dataUnit);
949
960
  }
950
961
  else {
951
- this.createDataunit(entityName, dataUnitName).then(dataUnit => {
962
+ this.createDataunit(entityName, dataUnitName, parentDataUnit).then(dataUnit => {
952
963
  resolve(dataUnit);
953
964
  }).catch(reason => reject(reason));
954
965
  }
@@ -182,8 +182,7 @@ const SnkConfigOptions = /*@__PURE__*/ proxyCustomElement(class extends HTMLElem
182
182
  return this._application.executeSearch(searchArgument, this.fieldConfig.name, this.dataUnit);
183
183
  }
184
184
  }
185
- buildField(field) {
186
- const { config, descriptor } = field;
185
+ buildField(descriptor, config) {
187
186
  const { name, label, readOnly, required, defaultValue } = config;
188
187
  const { userInterface, properties } = descriptor;
189
188
  const allowDefault = properties === null || properties === void 0 ? void 0 : properties.allowDefault;
@@ -226,10 +225,7 @@ const SnkConfigOptions = /*@__PURE__*/ proxyCustomElement(class extends HTMLElem
226
225
  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() })
227
226
  :
228
227
  ((_b = this._fieldProperties) === null || _b === void 0 ? void 0 : _b.userInterface) &&
229
- this.buildField({
230
- descriptor: this._fieldProperties,
231
- config: this.fieldConfig
232
- }))), 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); } }))))));
228
+ 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); } }))))));
233
229
  }
234
230
  get _element() { return this; }
235
231
  static get style() { return snkConfigOptionsCss; }
@@ -9,10 +9,10 @@ const SnkDataUnit$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement
9
9
  constructor() {
10
10
  super();
11
11
  this.__registerHost();
12
- this.dataStateChange = createEvent(this, "dataStateChange", 7);
13
- this.dataUnitReady = createEvent(this, "dataUnitReady", 7);
14
- this.insertionMode = createEvent(this, "insertionMode", 7);
15
- this.cancelEdition = createEvent(this, "cancelEdition", 7);
12
+ this.dataStateChange = createEvent(this, "dataStateChange", 3);
13
+ this.dataUnitReady = createEvent(this, "dataUnitReady", 3);
14
+ this.insertionMode = createEvent(this, "insertionMode", 3);
15
+ this.cancelEdition = createEvent(this, "cancelEdition", 3);
16
16
  this._onDataUnitResolve = [];
17
17
  /**
18
18
  * Determina quantas linhas são retornadas por página.
@@ -26,12 +26,13 @@ const SnkDataUnit$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement
26
26
  copyMode: false,
27
27
  isDirty: this.dataUnit.isDirty(),
28
28
  hasDirtyRecords: this.dataUnit.hasDirtyRecords(),
29
- selectedRecords: this.dataUnit.getSelectedRecords()
29
+ selectedRecords: this.dataUnit.getSelectedRecords(),
30
+ selectedRecord: this.dataUnit.getSelectedRecord()
30
31
  };
31
- this.dataUnit.records.forEach(r => {
32
- if (r.__record__id__.startsWith('NEW_')) {
32
+ this.dataUnit.records.forEach(record => {
33
+ if (record.__record__id__.startsWith('NEW_')) {
33
34
  duState.insertionMode = true;
34
- duState.copyMode || (duState.copyMode = r['__record__source__id__'] != undefined);
35
+ duState.copyMode || (duState.copyMode = record['__record__source__id__'] != undefined);
35
36
  }
36
37
  });
37
38
  this.dataState = duState;
@@ -85,6 +86,7 @@ const SnkDataUnit$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement
85
86
  }
86
87
  }
87
88
  observeDataUnit() {
89
+ this.handlerLinkFields();
88
90
  this.dataUnitReady.emit(this.dataUnit);
89
91
  }
90
92
  /**
@@ -230,11 +232,21 @@ const SnkDataUnit$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement
230
232
  }
231
233
  return OperationMap.CLEAN;
232
234
  }
235
+ async getDataUnitParentOrChild() {
236
+ var _a;
237
+ const cacheName = this.dataUnitName ? this.dataUnitName : this.entityName;
238
+ if (this._parentSnkDataUnit) {
239
+ this._parentDataUnit = await ((_a = this._parentSnkDataUnit) === null || _a === void 0 ? void 0 : _a.getDataUnit());
240
+ return await this._application.getDataUnit(this.entityName, undefined, this._parentDataUnit);
241
+ }
242
+ else {
243
+ return await this._application.getDataUnit(this.entityName, cacheName);
244
+ }
245
+ }
233
246
  async loadDataUnit() {
234
247
  if (!this.dataUnit) {
235
248
  if (this._application && this.entityName) {
236
- const cacheName = this.dataUnitName ? this.dataUnitName : this.entityName;
237
- this.dataUnit = await this._application.getDataUnit(this.entityName, cacheName);
249
+ this.dataUnit = await this.getDataUnitParentOrChild();
238
250
  this.dataUnit.pageSize = this.pageSize;
239
251
  this.dataUnit.unsubscribe(this._dataUnitObserver);
240
252
  this.dataUnit.addInterceptor(this);
@@ -246,12 +258,39 @@ const SnkDataUnit$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement
246
258
  }
247
259
  }
248
260
  }
261
+ getParentSnkDataUnit() {
262
+ let currentElement = this.element;
263
+ while (currentElement.parentNode) {
264
+ if (currentElement.parentNode.nodeName === 'SNK-DATA-UNIT') {
265
+ return currentElement.parentNode;
266
+ }
267
+ currentElement = currentElement.parentNode;
268
+ }
269
+ return;
270
+ }
271
+ handlerLinkFields() {
272
+ var _a, _b;
273
+ const metadata = Object.assign({}, this.dataUnit.metadata);
274
+ if (!this._parentDataUnit)
275
+ return;
276
+ const child = this._parentDataUnit.getChildInfo(this.entityName);
277
+ if (!child)
278
+ return;
279
+ const fieldsLink = (_a = child === null || child === void 0 ? void 0 : child.links) === null || _a === void 0 ? void 0 : _a.map(link => link.target);
280
+ (_b = metadata === null || metadata === void 0 ? void 0 : metadata.fields) === null || _b === void 0 ? void 0 : _b.forEach(field => {
281
+ if (fieldsLink === null || fieldsLink === void 0 ? void 0 : fieldsLink.includes(field.name)) {
282
+ field.visible = false;
283
+ }
284
+ });
285
+ this.dataUnit.metadata = metadata;
286
+ }
249
287
  //---------------------------------------------
250
288
  // Lifecycle web component
251
289
  //---------------------------------------------
252
290
  componentWillLoad() {
253
291
  this._application = ApplicationContext.getContextValue("__SNK__APPLICATION__");
254
292
  this._application.getAllAccess().then(access => this._permissions = access);
293
+ this._parentSnkDataUnit = this.getParentSnkDataUnit();
255
294
  }
256
295
  componentDidLoad() {
257
296
  this.loadDataUnit();
@@ -6795,7 +6795,7 @@ class FormConfigFetcher extends ResourceFetcher {
6795
6795
  }
6796
6796
  config.fields = fields === null || fields === void 0 ? void 0 : fields.map((field) => {
6797
6797
  if ("readonly" in field) {
6798
- const readOnly = field['readonly'];
6798
+ const readOnly = field['readonly'] === true;
6799
6799
  delete field['readonly'];
6800
6800
  field.readOnly = readOnly;
6801
6801
  }
@@ -1,6 +1,6 @@
1
1
  import { r as registerInstance, c as createEvent, h, g as getElement } from './index-a77b6f35.js';
2
2
  import { WaitingChangeException, WarningException, ErrorException, ObjectUtils, DataType, DataUnit, StringUtils, ChangeOperation, DateUtils, DependencyType, ElementIDUtils, ApplicationContext, ErrorTracking } from '@sankhyalabs/core';
3
- import { d as dist, D as DataFetcher, R as ResourceFetcher, U as UrlUtils, F as FormConfigFetcher, G as GridConfigFetcher, C as ConfigStorage } from './ConfigStorage-b59461d8.js';
3
+ import { d as dist, D as DataFetcher, R as ResourceFetcher, U as UrlUtils, F as FormConfigFetcher, G as GridConfigFetcher, C as ConfigStorage } from './ConfigStorage-4654f57b.js';
4
4
  import { ApplicationUtils } from '@sankhyalabs/ezui/dist/collection/utils';
5
5
  import { S as SnkMessageBuilder } from './SnkMessageBuilder-4a060599.js';
6
6
  import './_commonjsHelpers-9943807e.js';
@@ -237,6 +237,13 @@ class DataUnitFetcher {
237
237
  type
238
238
  expression
239
239
  }
240
+ },
241
+ children{
242
+ name
243
+ links{
244
+ source
245
+ target
246
+ }
240
247
  }
241
248
  children{
242
249
  name
@@ -247,9 +254,9 @@ class DataUnitFetcher {
247
254
  }
248
255
  }
249
256
  }`);
250
- this.templateByQuery.set("fetchData", dist.gql `query($dataunit: String! $limit: Int $offset:Int $filters: [InputFilter!] $sort: [InputSort!]) {
257
+ this.templateByQuery.set("fetchData", dist.gql `query($dataunit: String! $limit: Int $offset:Int $filters: [InputFilter!] $sort: [InputSort!] $parentRecordId: String) {
251
258
  $queryAlias$: fetchDataUnit(name: $dataunit){
252
- data(limit: $limit offset: $offset filters: $filters sort: $sort){
259
+ data(limit: $limit offset: $offset filters: $filters sort: $sort parentRecordId: $parentRecordId){
253
260
  limit
254
261
  offset
255
262
  total
@@ -286,8 +293,8 @@ class DataUnitFetcher {
286
293
  }
287
294
  }`);
288
295
  }
289
- getDataUnit(entityName, resourceID) {
290
- const dataUnit = new DataUnit(`dd://${entityName}/${resourceID}`);
296
+ getDataUnit(entityName, resourceID, parentDataUnit) {
297
+ const dataUnit = parentDataUnit != undefined ? parentDataUnit.getChildDataunit(`dd://${entityName}/${resourceID}`) : new DataUnit(`dd://${entityName}/${resourceID}`);
291
298
  dataUnit.metadataLoader = (dataUnit) => this.loadMetadata(dataUnit);
292
299
  dataUnit.dataLoader = (dataUnit, request) => this.loadData(dataUnit, request);
293
300
  dataUnit.saveLoader = (dataUnit, changes) => this.saveData(dataUnit, changes);
@@ -350,6 +357,7 @@ class DataUnitFetcher {
350
357
  const variables = { dataunit: dataUnit.name, sort, filters };
351
358
  variables.limit = limit;
352
359
  variables.offset = offset;
360
+ variables.parentRecordId = request.parentRecordId;
353
361
  if (!StringUtils.isEmpty(quickFilter === null || quickFilter === void 0 ? void 0 : quickFilter.term)) {
354
362
  if (variables.filter === undefined) {
355
363
  variables.filter = [];
@@ -417,6 +425,9 @@ class DataUnitFetcher {
417
425
  if (change.sourceId) {
418
426
  reqChange.sourceId = change.sourceId;
419
427
  }
428
+ if (record.__parent__record__id__) {
429
+ reqChange.parentRecordId = record.__parent__record__id__;
430
+ }
420
431
  return reqChange;
421
432
  });
422
433
  return new Promise((resolve, reject) => {
@@ -914,13 +925,13 @@ const SnkApplication = class {
914
925
  * Cria o DataUnit a partir do nome da entidade. É possível armazená-lo no cache
915
926
  * passando o dataUnitName, assim, se mais de uma chamada for feita, o mesmo DataUnit será usado.
916
927
  */
917
- async createDataunit(entityName, dataUnitName) {
928
+ async createDataunit(entityName, dataUnitName, parentDataUnit) {
918
929
  return new Promise((resolve, reject) => {
919
930
  const duPromisses = this.getDuPromissesStack(dataUnitName);
920
931
  const waitingDu = duPromisses.length > 0;
921
932
  duPromisses.push(new PendingPromise(resolve, reject));
922
933
  if (!waitingDu) {
923
- const dataUnit = this.dataUnitFetcher.getDataUnit(entityName, this.resourceID);
934
+ const dataUnit = this.dataUnitFetcher.getDataUnit(entityName, this.resourceID, parentDataUnit);
924
935
  dataUnit.loadMetadata().then(() => {
925
936
  if (dataUnitName) {
926
937
  this._duCache.set(dataUnitName, dataUnit);
@@ -939,14 +950,14 @@ const SnkApplication = class {
939
950
  /**
940
951
  * Obtem um DataUnit do cache ou cria um caso ainda não tenha sido criado.
941
952
  */
942
- async getDataUnit(entityName, dataUnitName) {
953
+ async getDataUnit(entityName, dataUnitName, parentDataUnit) {
943
954
  return new Promise((resolve, reject) => {
944
955
  const dataUnit = this._duCache.get(dataUnitName);
945
956
  if (dataUnit) {
946
957
  resolve(dataUnit);
947
958
  }
948
959
  else {
949
- this.createDataunit(entityName, dataUnitName).then(dataUnit => {
960
+ this.createDataunit(entityName, dataUnitName, parentDataUnit).then(dataUnit => {
950
961
  resolve(dataUnit);
951
962
  }).catch(reason => reject(reason));
952
963
  }
@@ -181,8 +181,7 @@ const SnkConfigOptions = class {
181
181
  return this._application.executeSearch(searchArgument, this.fieldConfig.name, this.dataUnit);
182
182
  }
183
183
  }
184
- buildField(field) {
185
- const { config, descriptor } = field;
184
+ buildField(descriptor, config) {
186
185
  const { name, label, readOnly, required, defaultValue } = config;
187
186
  const { userInterface, properties } = descriptor;
188
187
  const allowDefault = properties === null || properties === void 0 ? void 0 : properties.allowDefault;
@@ -225,10 +224,7 @@ const SnkConfigOptions = class {
225
224
  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() })
226
225
  :
227
226
  ((_b = this._fieldProperties) === null || _b === void 0 ? void 0 : _b.userInterface) &&
228
- this.buildField({
229
- descriptor: this._fieldProperties,
230
- config: this.fieldConfig
231
- }))), 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
+ 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); } }))))));
232
228
  }
233
229
  get _element() { return getElement(this); }
234
230
  };
@@ -4,7 +4,7 @@ import { c as VIEW_MODE, A as ACTION_CONFIG } from './constants-babe1a08.js';
4
4
  import { A as AuthorizationConfig } from './AuthorizationConfig-dcbd207a.js';
5
5
  import { UserInterface } from '@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata';
6
6
  import { T as TaskbarProcessor } from './taskbar-processor-c2a99aba.js';
7
- import { C as ConfigStorage } from './ConfigStorage-b59461d8.js';
7
+ import { C as ConfigStorage } from './ConfigStorage-4654f57b.js';
8
8
  import { s as store } from './index-d89e384f.js';
9
9
  import './_commonjsHelpers-9943807e.js';
10
10
 
@@ -1,7 +1,7 @@
1
1
  import { r as registerInstance, h, H as Host, g as getElement, c as createEvent } from './index-a77b6f35.js';
2
2
  import { ObjectUtils, ApplicationContext, ElementIDUtils, DataType, StringUtils, ErrorException, FloatingManager, ArrayUtils } from '@sankhyalabs/core';
3
3
  import { ApplicationUtils, CheckMode, DialogType } from '@sankhyalabs/ezui/dist/collection/utils';
4
- import { D as DataFetcher, C as ConfigStorage } from './ConfigStorage-b59461d8.js';
4
+ import { D as DataFetcher, C as ConfigStorage } from './ConfigStorage-4654f57b.js';
5
5
  import { F as FilterItemType } from './filter-item-type.enum-a79b2fa8.js';
6
6
  import { ModalAction, ModalButtonStatus } from '@sankhyalabs/ezui/dist/collection/components/ez-modal-container';
7
7
  import { toString } from '@sankhyalabs/core/dist/dataunit/metadata/DataType';
@@ -8,10 +8,10 @@ const snkDataUnitCss = ".sc-snk-data-unit-h{display:flex;flex-direction:column;h
8
8
  const SnkDataUnit = class {
9
9
  constructor(hostRef) {
10
10
  registerInstance(this, hostRef);
11
- this.dataStateChange = createEvent(this, "dataStateChange", 7);
12
- this.dataUnitReady = createEvent(this, "dataUnitReady", 7);
13
- this.insertionMode = createEvent(this, "insertionMode", 7);
14
- this.cancelEdition = createEvent(this, "cancelEdition", 7);
11
+ this.dataStateChange = createEvent(this, "dataStateChange", 3);
12
+ this.dataUnitReady = createEvent(this, "dataUnitReady", 3);
13
+ this.insertionMode = createEvent(this, "insertionMode", 3);
14
+ this.cancelEdition = createEvent(this, "cancelEdition", 3);
15
15
  this._onDataUnitResolve = [];
16
16
  /**
17
17
  * Determina quantas linhas são retornadas por página.
@@ -25,12 +25,13 @@ const SnkDataUnit = class {
25
25
  copyMode: false,
26
26
  isDirty: this.dataUnit.isDirty(),
27
27
  hasDirtyRecords: this.dataUnit.hasDirtyRecords(),
28
- selectedRecords: this.dataUnit.getSelectedRecords()
28
+ selectedRecords: this.dataUnit.getSelectedRecords(),
29
+ selectedRecord: this.dataUnit.getSelectedRecord()
29
30
  };
30
- this.dataUnit.records.forEach(r => {
31
- if (r.__record__id__.startsWith('NEW_')) {
31
+ this.dataUnit.records.forEach(record => {
32
+ if (record.__record__id__.startsWith('NEW_')) {
32
33
  duState.insertionMode = true;
33
- duState.copyMode || (duState.copyMode = r['__record__source__id__'] != undefined);
34
+ duState.copyMode || (duState.copyMode = record['__record__source__id__'] != undefined);
34
35
  }
35
36
  });
36
37
  this.dataState = duState;
@@ -84,6 +85,7 @@ const SnkDataUnit = class {
84
85
  }
85
86
  }
86
87
  observeDataUnit() {
88
+ this.handlerLinkFields();
87
89
  this.dataUnitReady.emit(this.dataUnit);
88
90
  }
89
91
  /**
@@ -229,11 +231,21 @@ const SnkDataUnit = class {
229
231
  }
230
232
  return OperationMap.CLEAN;
231
233
  }
234
+ async getDataUnitParentOrChild() {
235
+ var _a;
236
+ const cacheName = this.dataUnitName ? this.dataUnitName : this.entityName;
237
+ if (this._parentSnkDataUnit) {
238
+ this._parentDataUnit = await ((_a = this._parentSnkDataUnit) === null || _a === void 0 ? void 0 : _a.getDataUnit());
239
+ return await this._application.getDataUnit(this.entityName, undefined, this._parentDataUnit);
240
+ }
241
+ else {
242
+ return await this._application.getDataUnit(this.entityName, cacheName);
243
+ }
244
+ }
232
245
  async loadDataUnit() {
233
246
  if (!this.dataUnit) {
234
247
  if (this._application && this.entityName) {
235
- const cacheName = this.dataUnitName ? this.dataUnitName : this.entityName;
236
- this.dataUnit = await this._application.getDataUnit(this.entityName, cacheName);
248
+ this.dataUnit = await this.getDataUnitParentOrChild();
237
249
  this.dataUnit.pageSize = this.pageSize;
238
250
  this.dataUnit.unsubscribe(this._dataUnitObserver);
239
251
  this.dataUnit.addInterceptor(this);
@@ -245,12 +257,39 @@ const SnkDataUnit = class {
245
257
  }
246
258
  }
247
259
  }
260
+ getParentSnkDataUnit() {
261
+ let currentElement = this.element;
262
+ while (currentElement.parentNode) {
263
+ if (currentElement.parentNode.nodeName === 'SNK-DATA-UNIT') {
264
+ return currentElement.parentNode;
265
+ }
266
+ currentElement = currentElement.parentNode;
267
+ }
268
+ return;
269
+ }
270
+ handlerLinkFields() {
271
+ var _a, _b;
272
+ const metadata = Object.assign({}, this.dataUnit.metadata);
273
+ if (!this._parentDataUnit)
274
+ return;
275
+ const child = this._parentDataUnit.getChildInfo(this.entityName);
276
+ if (!child)
277
+ return;
278
+ const fieldsLink = (_a = child === null || child === void 0 ? void 0 : child.links) === null || _a === void 0 ? void 0 : _a.map(link => link.target);
279
+ (_b = metadata === null || metadata === void 0 ? void 0 : metadata.fields) === null || _b === void 0 ? void 0 : _b.forEach(field => {
280
+ if (fieldsLink === null || fieldsLink === void 0 ? void 0 : fieldsLink.includes(field.name)) {
281
+ field.visible = false;
282
+ }
283
+ });
284
+ this.dataUnit.metadata = metadata;
285
+ }
248
286
  //---------------------------------------------
249
287
  // Lifecycle web component
250
288
  //---------------------------------------------
251
289
  componentWillLoad() {
252
290
  this._application = ApplicationContext.getContextValue("__SNK__APPLICATION__");
253
291
  this._application.getAllAccess().then(access => this._permissions = access);
292
+ this._parentSnkDataUnit = this.getParentSnkDataUnit();
254
293
  }
255
294
  componentDidLoad() {
256
295
  this.loadDataUnit();
@@ -3,7 +3,7 @@ import { d as draggable_bundle } from './draggable.bundle-41d56f06.js';
3
3
  import { ObjectUtils, ElementIDUtils, ArrayUtils, ApplicationContext } from '@sankhyalabs/core';
4
4
  import { ApplicationUtils, DialogType } from '@sankhyalabs/ezui/dist/collection/utils';
5
5
  import { C as CONFIG_EVENTS, T as TAB_NAMES, A as ACTION_CONFIG, D as DEFAULT_TYPE } from './constants-babe1a08.js';
6
- import { a as UserConfigType, C as ConfigStorage } from './ConfigStorage-b59461d8.js';
6
+ import { a as UserConfigType, C as ConfigStorage } from './ConfigStorage-4654f57b.js';
7
7
  import './_commonjsHelpers-9943807e.js';
8
8
 
9
9
  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))}}";
@@ -1,7 +1,7 @@
1
1
  import { r as registerInstance, c as createEvent, h, g as getElement } from './index-a77b6f35.js';
2
2
  import { DateUtils, ObjectUtils, ElementIDUtils, ApplicationContext } from '@sankhyalabs/core';
3
3
  import { T as TaskbarProcessor } from './taskbar-processor-c2a99aba.js';
4
- import { C as ConfigStorage } from './ConfigStorage-b59461d8.js';
4
+ import { C as ConfigStorage } from './ConfigStorage-4654f57b.js';
5
5
  import './_commonjsHelpers-9943807e.js';
6
6
 
7
7
  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}";
@@ -1 +1 @@
1
- import{r as i,c as e,h as t,H as l,g as s}from"./p-a77dd79a.js";import{UserInterface as n,ObjectUtils as o,StringUtils as a,ApplicationContext as d,ElementIDUtils as r}from"@sankhyalabs/core";import{DataType as u,getConvertedValue as h}from"@sankhyalabs/core/dist/dataunit/metadata/DataType";import{CheckMode as c}from"@sankhyalabs/ezui/dist/collection/utils";import{V as v,D as p,a as b}from"./p-6673c77c.js";const g=class{constructor(t){i(this,t),this.configOptionsChanged=e(this,"configOptionsChanged",7),this.fieldConfig={}}onConfigDefault(i){null!=i&&(this._defaultType=i,this.fieldConfig.defaultValue={type:this._defaultType},this.configOptionsChanged.emit(this.fieldConfig))}buildOptions(){var i,e,t;let l=null===(t=null===(i=this.dataUnit)||void 0===i?void 0:i.getField(null===(e=this.fieldConfig)||void 0===e?void 0:e.name))||void 0===t?void 0:t.userInterface;return l===n.SEARCH&&(l=n.INTEGERNUMBER),v.UserInterface[l]}enabledValueDefault(){var i,e,t;const l=null===(i=this.dataUnit)||void 0===i?void 0:i.getField(null===(e=this.fieldConfig)||void 0===e?void 0:e.name),s=null===(t=null==l?void 0:l.properties)||void 0===t?void 0:t.allowDefault,o=v.UserInterface.hasOwnProperty(null==l?void 0:l.userInterface)||(null==l?void 0:l.userInterface)===n.SEARCH;return!(null!=s&&"true"!==s||!o)}isAllowDefault(){var i,e;const t=null===(e=null===(i=this._fieldProperties)||void 0===i?void 0:i.properties)||void 0===e?void 0:e.allowDefault;return null==t||"true"===t}loadDefaultValue(){var i;null==this.fieldConfig?(this._defaultType=p.fixed,this.fieldConfig={defaultValue:{type:this._defaultType}}):null==(null===(i=this.fieldConfig.defaultValue)||void 0===i?void 0:i.type)?(this._defaultType=p.fixed,this.fieldConfig.defaultValue={type:this._defaultType}):this._defaultType=this.fieldConfig.defaultValue.type}getFieldProperties(i){var e;if(null!=i)return null===(e=this.dataUnit)||void 0===e?void 0:e.getField(i)}getMessage(i,e){return this._application.messagesBuilder.getMessage(i,e)}getDefaultType(){var i;return null!==(i=this.fieldConfig.defaultValue.type)&&void 0!==i?i:p.fixed}getEnabledByProperty(i){const e=this._fieldProperties;return null==e||!0!==e[i]}getValueByProperty(i){const e=this._fieldProperties;return null!=e&&!0===e[i]||this.fieldConfig[i]}getValidatedValue(i){var e,t;if(null==i)return;const l=null===(e=this.dataUnit)||void 0===e?void 0:e.getField(null===(t=this.fieldConfig)||void 0===t?void 0:t.name),s=null==l?void 0:l.dataType;if(null==s)return;const n=null!=(null==i?void 0:i.waitmessage)?void 0:s!==u.OBJECT&&s!==u.DATE&&"object"==typeof i?i.value:i;return s===u.OBJECT?JSON.stringify(n):n}buildInputDefault({value:i,enabled:e,label:l,name:s,required:a,userInterface:d},r,u){let h,c=0,v=0;const p=null==d||null==b[d]?b.DEFAULT:b[d];if(d===n.OPTIONSELECTOR){const i=null==r?void 0:r.options;if("string"==typeof i){const e=o.stringToObject(i);h=Object.keys(e).map((i=>({value:i,label:e[i]})))}else h=i}else d===n.DECIMALNUMBER&&(c=Number((null==r?void 0:r.precision)||2),v=Number((null==r?void 0:r.prettyPrecision)||c));return t(p,Object.assign({value:i,enabled:e,label:l,"data-field-name":s,key:s,onEzChange:i=>this.onChange(null==i?void 0:i.detail)},this.getConditionalAttributes(d,a,h,c,v,u)))}getConditionalAttributes(i,e,t,l,s,o){switch(i){case n.SEARCH:return{suppressEmptyOption:e,optionLoader:i=>this.onSearch(i)};case n.OPTIONSELECTOR:return{suppressEmptyOption:e,options:t};case n.CHECKBOX:case n.SWITCH:return{mode:o};case n.INTEGERNUMBER:case n.DECIMALNUMBER:return{precision:l,prettyPrecision:s,onEzStartChange:i=>this.onChange(null==i?void 0:i.detail)};case n.DATE:case n.DATETIME:case n.TIME:return{onEzStartChange:i=>this.onChange(null==i?void 0:i.detail)};default:return{}}}onChange(i){this.fieldConfig.defaultValue.value=this.getValidatedValue(i),this.configOptionsChanged.emit(this.fieldConfig)}onSearch(i){if(null!=this._application&&null!=this.fieldConfig)return this._application.executeSearch(i,this.fieldConfig.name,this.dataUnit)}buildField(i){const{config:e,descriptor:t}=i,{name:l,label:s,readOnly:o,required:d,defaultValue:r}=e,{userInterface:u,properties:v}=t;let p,b=a.getBooleanValue(null==v?void 0:v.allowDefault,!o);u===n.FILE&&(b=!1),b&&(p=null==r?void 0:r.value,null!=p&&(p=h(null==t?void 0:t.dataType,p)));const g={value:p,enabled:b,label:s,name:l,required:d,userInterface:u};switch(u){case n.SWITCH:return this.buildInputDefault(g,void 0,c.SWITCH);case n.CHECKBOX:return this.buildInputDefault(g,void 0,c.REGULAR);case n.OPTIONSELECTOR:case n.DECIMALNUMBER:return this.buildInputDefault(g,v);default:return this.buildInputDefault(g)}}componentWillLoad(){var i;this.loadDefaultValue(),this._application=d.getContextValue("__SNK__APPLICATION__"),this._fieldProperties=this.getFieldProperties(null===(i=this.fieldConfig)||void 0===i?void 0:i.name)}componentDidLoad(){r.addIDInfo(this._element,this.fieldConfig.name)}render(){var i,e;return t(l,null,t("div",{id:this.idConfig},t("div",{class:"ez-row ez-padding--medium"},t("div",{class:"ez-col ez-col--sd-12 ez-col--tb-4 ez-padding--small"},t("ez-text-input",{label:this.getMessage("snkConfigOptions.label.nameField"),value:null===(i=this.fieldConfig)||void 0===i?void 0:i.label,onEzChange:i=>{this.fieldConfig.label=i.detail,this.configOptionsChanged.emit(this.fieldConfig)}})),t("div",{class:"ez-col ez-col--sd-12 ez-col--tb-4 ez-padding--small"},t("ez-combo-box",{label:this.getMessage("snkConfigOptions.label.typeValueDefault"),suppressEmptyOption:!0,enabled:this.enabledValueDefault(),onEzChange:i=>{var e;return this.onConfigDefault(null===(e=i.detail)||void 0===e?void 0:e.value)},value:this.getDefaultType()},t("option",{value:p.fixed},this.getMessage("snkConfigOptions.options.valueFixed")),t("option",{value:p.variable},this.getMessage("snkConfigOptions.options.variable")))),t("div",{class:"ez-col ez-col--sd-12 ez-col--tb-4 ez-padding--small"},this._defaultType===p.variable?t("ez-combo-box",{label:this.getMessage("snkConfigOptions.label.valueDefault"),enabled:this.isAllowDefault(),onEzChange:i=>{var e;this.fieldConfig.defaultValue.value=null===(e=i.detail)||void 0===e?void 0:e.value,this.configOptionsChanged.emit(this.fieldConfig)},value:this.fieldConfig.defaultValue.value,options:this.buildOptions()}):(null===(e=this._fieldProperties)||void 0===e?void 0:e.userInterface)&&this.buildField({descriptor:this._fieldProperties,config:this.fieldConfig}))),t("div",{class:"ez-row ez-padding--medium config-options__switch-row"},t("div",{class:"ez-col ez-col--sd-12 ez-col--tb-4 ez-padding--small"},t("ez-check",{mode:c.SWITCH,label:this.getMessage("snkConfigOptions.label.clearDuplicate"),value:this.fieldConfig.cleanOnCopy,onEzChange:i=>{this.fieldConfig.cleanOnCopy=i.detail,this.configOptionsChanged.emit(this.fieldConfig)}})),t("div",{class:"ez-col ez-col--sd-12 ez-col--tb-4 ez-padding--small"},t("ez-check",{mode:c.SWITCH,label:this.getMessage("snkConfigOptions.label.requiredField"),enabled:this.getEnabledByProperty("required"),value:this.getValueByProperty("required"),onEzChange:i=>{this.fieldConfig.required=i.detail,this.configOptionsChanged.emit(this.fieldConfig)}})),t("div",{class:"ez-col ez-col--sd-12 ez-col--tb-4 ez-padding--small"},t("ez-check",{mode:c.SWITCH,label:this.getMessage("snkConfigOptions.label.protectedField"),enabled:this.getEnabledByProperty("readOnly"),value:this.getValueByProperty("readOnly"),onEzChange:i=>{this.fieldConfig.readOnly=i.detail,this.configOptionsChanged.emit(this.fieldConfig)}})))))}get _element(){return s(this)}};g.style=".sc-snk-config-options-h{width:100%;border:2px solid var(--color--secondary-200);border-radius:15px}.config-options__switch-row.sc-snk-config-options{margin-top:-30px}";export{g as snk_config_options}
1
+ import{r as i,c as e,h as t,H as l,g as s}from"./p-a77dd79a.js";import{UserInterface as n,ObjectUtils as o,StringUtils as a,ApplicationContext as d,ElementIDUtils as r}from"@sankhyalabs/core";import{DataType as u,getConvertedValue as h}from"@sankhyalabs/core/dist/dataunit/metadata/DataType";import{CheckMode as c}from"@sankhyalabs/ezui/dist/collection/utils";import{V as v,D as p,a as b}from"./p-6673c77c.js";const g=class{constructor(t){i(this,t),this.configOptionsChanged=e(this,"configOptionsChanged",7),this.fieldConfig={}}onConfigDefault(i){null!=i&&(this._defaultType=i,this.fieldConfig.defaultValue={type:this._defaultType},this.configOptionsChanged.emit(this.fieldConfig))}buildOptions(){var i,e,t;let l=null===(t=null===(i=this.dataUnit)||void 0===i?void 0:i.getField(null===(e=this.fieldConfig)||void 0===e?void 0:e.name))||void 0===t?void 0:t.userInterface;return l===n.SEARCH&&(l=n.INTEGERNUMBER),v.UserInterface[l]}enabledValueDefault(){var i,e,t;const l=null===(i=this.dataUnit)||void 0===i?void 0:i.getField(null===(e=this.fieldConfig)||void 0===e?void 0:e.name),s=null===(t=null==l?void 0:l.properties)||void 0===t?void 0:t.allowDefault,o=v.UserInterface.hasOwnProperty(null==l?void 0:l.userInterface)||(null==l?void 0:l.userInterface)===n.SEARCH;return!(null!=s&&"true"!==s||!o)}isAllowDefault(){var i,e;const t=null===(e=null===(i=this._fieldProperties)||void 0===i?void 0:i.properties)||void 0===e?void 0:e.allowDefault;return null==t||"true"===t}loadDefaultValue(){var i;null==this.fieldConfig?(this._defaultType=p.fixed,this.fieldConfig={defaultValue:{type:this._defaultType}}):null==(null===(i=this.fieldConfig.defaultValue)||void 0===i?void 0:i.type)?(this._defaultType=p.fixed,this.fieldConfig.defaultValue={type:this._defaultType}):this._defaultType=this.fieldConfig.defaultValue.type}getFieldProperties(i){var e;if(null!=i)return null===(e=this.dataUnit)||void 0===e?void 0:e.getField(i)}getMessage(i,e){return this._application.messagesBuilder.getMessage(i,e)}getDefaultType(){var i;return null!==(i=this.fieldConfig.defaultValue.type)&&void 0!==i?i:p.fixed}getEnabledByProperty(i){const e=this._fieldProperties;return null==e||!0!==e[i]}getValueByProperty(i){const e=this._fieldProperties;return null!=e&&!0===e[i]||this.fieldConfig[i]}getValidatedValue(i){var e,t;if(null==i)return;const l=null===(e=this.dataUnit)||void 0===e?void 0:e.getField(null===(t=this.fieldConfig)||void 0===t?void 0:t.name),s=null==l?void 0:l.dataType;if(null==s)return;const n=null!=(null==i?void 0:i.waitmessage)?void 0:s!==u.OBJECT&&s!==u.DATE&&"object"==typeof i?i.value:i;return s===u.OBJECT?JSON.stringify(n):n}buildInputDefault({value:i,enabled:e,label:l,name:s,required:a,userInterface:d},r,u){let h,c=0,v=0;const p=null==d||null==b[d]?b.DEFAULT:b[d];if(d===n.OPTIONSELECTOR){const i=null==r?void 0:r.options;if("string"==typeof i){const e=o.stringToObject(i);h=Object.keys(e).map((i=>({value:i,label:e[i]})))}else h=i}else d===n.DECIMALNUMBER&&(c=Number((null==r?void 0:r.precision)||2),v=Number((null==r?void 0:r.prettyPrecision)||c));return t(p,Object.assign({value:i,enabled:e,label:l,"data-field-name":s,key:s,onEzChange:i=>this.onChange(null==i?void 0:i.detail)},this.getConditionalAttributes(d,a,h,c,v,u)))}getConditionalAttributes(i,e,t,l,s,o){switch(i){case n.SEARCH:return{suppressEmptyOption:e,optionLoader:i=>this.onSearch(i)};case n.OPTIONSELECTOR:return{suppressEmptyOption:e,options:t};case n.CHECKBOX:case n.SWITCH:return{mode:o};case n.INTEGERNUMBER:case n.DECIMALNUMBER:return{precision:l,prettyPrecision:s,onEzStartChange:i=>this.onChange(null==i?void 0:i.detail)};case n.DATE:case n.DATETIME:case n.TIME:return{onEzStartChange:i=>this.onChange(null==i?void 0:i.detail)};default:return{}}}onChange(i){this.fieldConfig.defaultValue.value=this.getValidatedValue(i),this.configOptionsChanged.emit(this.fieldConfig)}onSearch(i){if(null!=this._application&&null!=this.fieldConfig)return this._application.executeSearch(i,this.fieldConfig.name,this.dataUnit)}buildField(i,e){const{name:t,label:l,readOnly:s,required:o,defaultValue:d}=e,{userInterface:r,properties:u}=i;let v,p=a.getBooleanValue(null==u?void 0:u.allowDefault,!s);r===n.FILE&&(p=!1),p&&(v=null==d?void 0:d.value,null!=v&&(v=h(null==i?void 0:i.dataType,v)));const b={value:v,enabled:p,label:l,name:t,required:o,userInterface:r};switch(r){case n.SWITCH:return this.buildInputDefault(b,void 0,c.SWITCH);case n.CHECKBOX:return this.buildInputDefault(b,void 0,c.REGULAR);case n.OPTIONSELECTOR:case n.DECIMALNUMBER:return this.buildInputDefault(b,u);default:return this.buildInputDefault(b)}}componentWillLoad(){var i;this.loadDefaultValue(),this._application=d.getContextValue("__SNK__APPLICATION__"),this._fieldProperties=this.getFieldProperties(null===(i=this.fieldConfig)||void 0===i?void 0:i.name)}componentDidLoad(){r.addIDInfo(this._element,this.fieldConfig.name)}render(){var i,e;return t(l,null,t("div",{id:this.idConfig},t("div",{class:"ez-row ez-padding--medium"},t("div",{class:"ez-col ez-col--sd-12 ez-col--tb-4 ez-padding--small"},t("ez-text-input",{label:this.getMessage("snkConfigOptions.label.nameField"),value:null===(i=this.fieldConfig)||void 0===i?void 0:i.label,onEzChange:i=>{this.fieldConfig.label=i.detail,this.configOptionsChanged.emit(this.fieldConfig)}})),t("div",{class:"ez-col ez-col--sd-12 ez-col--tb-4 ez-padding--small"},t("ez-combo-box",{label:this.getMessage("snkConfigOptions.label.typeValueDefault"),suppressEmptyOption:!0,enabled:this.enabledValueDefault(),onEzChange:i=>{var e;return this.onConfigDefault(null===(e=i.detail)||void 0===e?void 0:e.value)},value:this.getDefaultType()},t("option",{value:p.fixed},this.getMessage("snkConfigOptions.options.valueFixed")),t("option",{value:p.variable},this.getMessage("snkConfigOptions.options.variable")))),t("div",{class:"ez-col ez-col--sd-12 ez-col--tb-4 ez-padding--small"},this._defaultType===p.variable?t("ez-combo-box",{label:this.getMessage("snkConfigOptions.label.valueDefault"),enabled:this.isAllowDefault(),onEzChange:i=>{var e;this.fieldConfig.defaultValue.value=null===(e=i.detail)||void 0===e?void 0:e.value,this.configOptionsChanged.emit(this.fieldConfig)},value:this.fieldConfig.defaultValue.value,options:this.buildOptions()}):(null===(e=this._fieldProperties)||void 0===e?void 0:e.userInterface)&&this.buildField(this._fieldProperties,this.fieldConfig))),t("div",{class:"ez-row ez-padding--medium config-options__switch-row"},t("div",{class:"ez-col ez-col--sd-12 ez-col--tb-4 ez-padding--small"},t("ez-check",{mode:c.SWITCH,label:this.getMessage("snkConfigOptions.label.clearDuplicate"),value:this.fieldConfig.cleanOnCopy,onEzChange:i=>{this.fieldConfig.cleanOnCopy=i.detail,this.configOptionsChanged.emit(this.fieldConfig)}})),t("div",{class:"ez-col ez-col--sd-12 ez-col--tb-4 ez-padding--small"},t("ez-check",{mode:c.SWITCH,label:this.getMessage("snkConfigOptions.label.requiredField"),enabled:this.getEnabledByProperty("required"),value:this.getValueByProperty("required"),onEzChange:i=>{this.fieldConfig.required=i.detail,this.configOptionsChanged.emit(this.fieldConfig)}})),t("div",{class:"ez-col ez-col--sd-12 ez-col--tb-4 ez-padding--small"},t("ez-check",{mode:c.SWITCH,label:this.getMessage("snkConfigOptions.label.protectedField"),enabled:this.getEnabledByProperty("readOnly"),value:this.getValueByProperty("readOnly"),onEzChange:i=>{this.fieldConfig.readOnly=i.detail,this.configOptionsChanged.emit(this.fieldConfig)}})))))}get _element(){return s(this)}};g.style=".sc-snk-config-options-h{width:100%;border:2px solid var(--color--secondary-200);border-radius:15px}.config-options__switch-row.sc-snk-config-options{margin-top:-30px}";export{g as snk_config_options}