@alfresco/adf-core 8.4.0-19170451716 → 8.4.0-19262179724

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.
@@ -20539,6 +20539,10 @@ class FormFieldModel extends FormWidgetModel {
20539
20539
  }
20540
20540
  set readOnly(readOnly) {
20541
20541
  this._readOnly = readOnly;
20542
+ if (this.type === FormFieldTypes.REPEATABLE_SECTION) {
20543
+ this.updateRepeatableSectionReadOnlyState(readOnly);
20544
+ return;
20545
+ }
20542
20546
  this.updateForm();
20543
20547
  }
20544
20548
  get required() {
@@ -20717,7 +20721,7 @@ class FormFieldModel extends FormWidgetModel {
20717
20721
  return;
20718
20722
  }
20719
20723
  const col = new ContainerColumnModel();
20720
- col.fields = (fields[currentField] || []).map((field) => new FormFieldModel(form, field));
20724
+ col.fields = (fields[currentField] || []).map((field) => new FormFieldModel(form, field, this.setupParentConfig(field)));
20721
20725
  col.rowspan = fields[currentField].length;
20722
20726
  if (!FormFieldTypes.isSectionType(this.type)) {
20723
20727
  this.updateContainerColspan(col.fields);
@@ -20726,6 +20730,16 @@ class FormFieldModel extends FormWidgetModel {
20726
20730
  this.columns.push(col);
20727
20731
  });
20728
20732
  }
20733
+ setupParentConfig(field) {
20734
+ if (this.parent) {
20735
+ return {
20736
+ ...this.parent,
20737
+ uid: this.getUniqueId(field, this.parent.uid.split(ROW_ID_PREFIX)[1]),
20738
+ value: this.parent.value?.[field.id]
20739
+ };
20740
+ }
20741
+ return undefined;
20742
+ }
20729
20743
  repeatableSectionFactory(json, form) {
20730
20744
  const { numberOfColumns = 1, params, value, fields = {} } = json;
20731
20745
  this.numberOfColumns = numberOfColumns;
@@ -20733,20 +20747,20 @@ class FormFieldModel extends FormWidgetModel {
20733
20747
  this.rowspan = 1;
20734
20748
  this.colspan = 1;
20735
20749
  this.rows = [];
20736
- for (let i = 0; i < this.getNumberOfRows(params.initialNumberOfRows, params.newRowsLimit, value); i++) {
20750
+ for (let i = 0; i < this.getNumberOfRows(params.initialNumberOfRows, params.maxNumberOfRows, value); i++) {
20737
20751
  this.rows.push(this.createRow(fields, form, i, value?.[i], i < params?.initialNumberOfRows));
20738
20752
  }
20739
20753
  this.columns = this.rows[0].columns;
20740
20754
  }
20741
- getNumberOfRows(initialNrRows = 1, rowsLimit, value) {
20742
- return value?.length && !!rowsLimit ? Math.min(value?.length, initialNrRows + rowsLimit) : (value?.length ?? initialNrRows);
20755
+ getNumberOfRows(initialNrRows = 1, maxNrRows, value) {
20756
+ return value?.length ? (maxNrRows ? Math.min(value.length, maxNrRows) : value.length) : initialNrRows;
20743
20757
  }
20744
20758
  createRow(fields, form, index, value, isInitial = false) {
20745
20759
  const row = new ContainerRowModel(isInitial);
20746
- row.columns.push(...this.createColumns(fields, form, index, value));
20760
+ row.columns.push(...this.createColumns(fields, form, row.id, index, value));
20747
20761
  return row;
20748
20762
  }
20749
- createColumns(fields, form, index, value) {
20763
+ createColumns(fields, form, rowId, index, value) {
20750
20764
  const columns = [];
20751
20765
  Object.keys(fields).forEach((currentField) => {
20752
20766
  if (!Object.prototype.hasOwnProperty.call(fields, currentField)) {
@@ -20755,10 +20769,10 @@ class FormFieldModel extends FormWidgetModel {
20755
20769
  const col = new ContainerColumnModel();
20756
20770
  col.fields = (fields[currentField] || []).map((field) => new FormFieldModel(form, field, {
20757
20771
  id: this.id,
20758
- uid: this.getUniqueId(field),
20772
+ uid: this.getUniqueId(field, rowId),
20759
20773
  fields: this.fields,
20760
20774
  rowIndex: index ?? 0,
20761
- value: value?.[field.id]
20775
+ value: field.type === FormFieldTypes.SECTION ? value : value?.[field.id]
20762
20776
  }));
20763
20777
  col.rowspan = fields[currentField].length;
20764
20778
  if (!FormFieldTypes.isSectionType(this.type)) {
@@ -20769,8 +20783,30 @@ class FormFieldModel extends FormWidgetModel {
20769
20783
  });
20770
20784
  return columns;
20771
20785
  }
20772
- getUniqueId(field) {
20773
- return field.id + ROW_ID_PREFIX + window.crypto.getRandomValues(new Uint32Array(1))[0].toString();
20786
+ updateRepeatableSectionReadOnlyState(state) {
20787
+ for (const row of this.rows) {
20788
+ for (const column of row.columns) {
20789
+ for (const field of column.fields) {
20790
+ if (field.type === FormFieldTypes.SECTION) {
20791
+ this.updateInnerSectionReadOnlyState(field, state);
20792
+ }
20793
+ field.readOnly = this.getRepeatableSectionFieldReadOnlyState(field, state);
20794
+ }
20795
+ }
20796
+ }
20797
+ }
20798
+ updateInnerSectionReadOnlyState(section, state) {
20799
+ for (const column of section.columns) {
20800
+ for (const field of column.fields) {
20801
+ field.readOnly = this.getRepeatableSectionFieldReadOnlyState(field, state);
20802
+ }
20803
+ }
20804
+ }
20805
+ getRepeatableSectionFieldReadOnlyState(field, state) {
20806
+ return state || field.json.readOnly;
20807
+ }
20808
+ getUniqueId(field, rowId) {
20809
+ return field.id + ROW_ID_PREFIX + rowId;
20774
20810
  }
20775
20811
  updateChildrenFieldsRowIndex() {
20776
20812
  this.rows.forEach((row, index) => {
@@ -20783,10 +20819,19 @@ class FormFieldModel extends FormWidgetModel {
20783
20819
  }
20784
20820
  createInitialValue(fields) {
20785
20821
  return Object.keys(fields)
20786
- .map((currentField) => (fields[currentField] || []).map((field) => field.id))
20787
- .flat(1)
20822
+ .map((currentField) => (fields[currentField] || []).map((field) => this.getFieldId(field)))
20823
+ .flat(2)
20788
20824
  .reduce((acc, curr) => ((acc[curr] = null), acc), {});
20789
20825
  }
20826
+ getFieldId(field) {
20827
+ if (field.type === FormFieldTypes.SECTION) {
20828
+ const fields = field.fields;
20829
+ return Object.keys(fields)
20830
+ .map((currentField) => (fields[currentField] || []).map((e) => e.id))
20831
+ .flat(1);
20832
+ }
20833
+ return field.id;
20834
+ }
20790
20835
  updateContainerColspan(fields) {
20791
20836
  fields.forEach((colField) => {
20792
20837
  this.colspan = Math.max(this.colspan, colField.colspan);
@@ -20799,7 +20844,7 @@ class FormFieldModel extends FormWidgetModel {
20799
20844
  this.rows.push(this.createRow(fields, form, this.rows.length));
20800
20845
  }
20801
20846
  shouldAddRow() {
20802
- return !this.params.newRowsLimit || this.rows.length < this.params.initialNumberOfRows + this.params.newRowsLimit;
20847
+ return !this.params.maxNumberOfRows || this.rows.length < this.params.maxNumberOfRows;
20803
20848
  }
20804
20849
  removeRow(index) {
20805
20850
  if (!this.shouldRemoveRow(index)) {
@@ -20883,7 +20928,7 @@ class FormFieldModel extends FormWidgetModel {
20883
20928
  return value;
20884
20929
  }
20885
20930
  if (this.isCheckboxField(json)) {
20886
- return json.value === 'true' || json.value === true;
20931
+ return json.value === 'true' || json.value === true || initialValue === true || initialValue === 'true';
20887
20932
  }
20888
20933
  return value;
20889
20934
  }
@@ -20891,73 +20936,64 @@ class FormFieldModel extends FormWidgetModel {
20891
20936
  if (!this.form) {
20892
20937
  return;
20893
20938
  }
20939
+ const formValue = this.getFormValue();
20894
20940
  if (this.parent) {
20895
- this.updateRepeatableSectionValue();
20896
- return;
20941
+ this.updateRepeatableSectionValue(formValue);
20897
20942
  }
20943
+ else {
20944
+ this.updateValue(formValue);
20945
+ }
20946
+ this.form.onFormFieldChanged(this);
20947
+ }
20948
+ getFormValue() {
20898
20949
  switch (this.type) {
20899
20950
  case FormFieldTypes.DROPDOWN: {
20900
20951
  if (!this.value) {
20901
- this.form.values[this.id] = null;
20902
- break;
20952
+ return null;
20903
20953
  }
20904
20954
  /*
20905
20955
  This is needed due to Activiti reading dropdown values as string
20906
20956
  but saving back as object: { id: <id>, name: <name> }
20907
20957
  */
20908
20958
  if (Array.isArray(this.value)) {
20909
- this.form.values[this.id] = this.value;
20910
- break;
20959
+ return this.value;
20911
20960
  }
20912
20961
  if (typeof this.value === 'string') {
20913
20962
  if (this.value === 'empty' || this.value === '') {
20914
- this.form.values[this.id] = null;
20915
- break;
20963
+ return null;
20916
20964
  }
20917
20965
  const matchingOption = this.options.find((opt) => opt.id === this.value);
20918
- this.form.values[this.id] = matchingOption || null;
20966
+ return matchingOption || null;
20919
20967
  }
20920
20968
  if (typeof this.value === 'object') {
20921
20969
  if (this.value.id === 'empty' || this.value.id === '') {
20922
- this.form.values[this.id] = null;
20923
- break;
20970
+ return null;
20924
20971
  }
20925
20972
  const matchingOption = this.options.find((opt) => opt.id === this.value.id);
20926
- this.form.values[this.id] = matchingOption;
20973
+ return matchingOption;
20927
20974
  }
20928
- break;
20975
+ return null;
20929
20976
  }
20930
20977
  case FormFieldTypes.RADIO_BUTTONS: {
20931
20978
  const radioButton = this.options.find((opt) => opt.id === this.value);
20932
20979
  if (this.optionType === 'rest') {
20933
- this.form.values[this.id] = radioButton
20934
- ? { ...radioButton, options: this.options }
20935
- : { id: null, name: null, options: this.options };
20936
- }
20937
- else {
20938
- this.form.values[this.id] = radioButton ? { ...radioButton } : null;
20980
+ return radioButton ? { ...radioButton, options: this.options } : { id: null, name: null, options: this.options };
20939
20981
  }
20940
- break;
20982
+ return radioButton ? { ...radioButton } : null;
20941
20983
  }
20942
20984
  case FormFieldTypes.UPLOAD: {
20943
20985
  this.form.hasUpload = true;
20944
20986
  if (this.value && this.value.length > 0) {
20945
- this.form.values[this.id] = Array.isArray(this.value) ? this.value.map((elem) => elem.id).join(',') : [this.value];
20946
- }
20947
- else {
20948
- this.form.values[this.id] = null;
20987
+ return Array.isArray(this.value) ? this.value.map((elem) => elem.id).join(',') : [this.value];
20949
20988
  }
20950
- break;
20989
+ return null;
20951
20990
  }
20952
20991
  case FormFieldTypes.TYPEAHEAD: {
20953
20992
  const typeAheadEntry = this.options.filter((opt) => opt.id === this.value || opt.name === this.value);
20954
20993
  if (typeAheadEntry.length > 0) {
20955
- this.form.values[this.id] = typeAheadEntry[0];
20956
- }
20957
- else if (this.options.length > 0) {
20958
- this.form.values[this.id] = null;
20994
+ return typeAheadEntry[0];
20959
20995
  }
20960
- break;
20996
+ return null;
20961
20997
  }
20962
20998
  case FormFieldTypes.DATE: {
20963
20999
  if (typeof this.value === 'string' && this.value === 'today') {
@@ -20972,13 +21008,10 @@ class FormFieldModel extends FormWidgetModel {
20972
21008
  }
20973
21009
  if (isValid(dateValue)) {
20974
21010
  const datePart = DateFnsUtils.formatDate(dateValue, 'yyyy-MM-dd');
20975
- this.form.values[this.id] = `${datePart}T00:00:00.000Z`;
21011
+ return `${datePart}T00:00:00.000Z`;
20976
21012
  }
20977
- else {
20978
- this.form.values[this.id] = null;
20979
- this._value = this.value;
20980
- }
20981
- break;
21013
+ this._value = this.value;
21014
+ return null;
20982
21015
  }
20983
21016
  case FormFieldTypes.DATETIME: {
20984
21017
  if (typeof this.value === 'string' && this.value === 'now') {
@@ -20986,62 +21019,60 @@ class FormFieldModel extends FormWidgetModel {
20986
21019
  }
20987
21020
  const dateTimeValue = this.value !== null ? DateFnsUtils.getDate(this.value) : null;
20988
21021
  if (isValid(dateTimeValue)) {
20989
- this.form.values[this.id] = dateTimeValue.toISOString();
20990
- }
20991
- else {
20992
- this.form.values[this.id] = null;
20993
- this._value = this.value;
21022
+ return dateTimeValue.toISOString();
20994
21023
  }
20995
- break;
21024
+ this._value = this.value;
21025
+ return null;
20996
21026
  }
20997
21027
  case FormFieldTypes.NUMBER: {
20998
- this.form.values[this.id] = this.enableFractions ? parseFloat(this.value) : parseInt(this.value, 10);
20999
- break;
21028
+ return this.enableFractions ? parseFloat(this.value) : parseInt(this.value, 10);
21000
21029
  }
21001
21030
  case FormFieldTypes.AMOUNT: {
21002
- this.form.values[this.id] = this.enableFractions ? parseFloat(this.value) : parseInt(this.value, 10);
21003
- break;
21031
+ return this.enableFractions ? parseFloat(this.value) : parseInt(this.value, 10);
21004
21032
  }
21005
21033
  case FormFieldTypes.DECIMAL: {
21006
- this.form.values[this.id] = parseFloat(this.value);
21007
- break;
21034
+ return parseFloat(this.value);
21008
21035
  }
21009
21036
  case FormFieldTypes.BOOLEAN: {
21010
- this.form.values[this.id] = this.value !== null && this.value !== undefined ? this.value : false;
21011
- break;
21037
+ return this.value !== null && this.value !== undefined ? this.value : false;
21012
21038
  }
21013
21039
  case FormFieldTypes.PEOPLE: {
21014
- this.form.values[this.id] = this.value ? this.value : null;
21015
- break;
21040
+ return this.value ? this.value : null;
21016
21041
  }
21017
21042
  case FormFieldTypes.FUNCTIONAL_GROUP: {
21018
- this.form.values[this.id] = this.value ? this.value : null;
21019
- break;
21043
+ return this.value ? this.value : null;
21020
21044
  }
21021
21045
  case FormFieldTypes.REPEATABLE_SECTION: {
21022
- this.form.values[this.id] = this.value ? this.value : [];
21023
21046
  this.repeatableSectionFactory({
21024
21047
  ...this.json,
21025
21048
  value: this.value
21026
21049
  }, this.form);
21027
- break;
21050
+ return this.value ? this.value : this.form.values[this.id];
21028
21051
  }
21029
21052
  default:
21030
21053
  if (this.shouldUpdateFormValues(this.type)) {
21031
- this.form.values[this.id] = this.value;
21054
+ return this.value;
21032
21055
  }
21056
+ return undefined;
21033
21057
  }
21034
- this.form.onFormFieldChanged(this);
21035
21058
  }
21036
- updateRepeatableSectionValue() {
21059
+ updateValue(value) {
21060
+ if (value === undefined) {
21061
+ return;
21062
+ }
21063
+ this.form.values[this.id] = value;
21064
+ }
21065
+ updateRepeatableSectionValue(value) {
21066
+ if (this.type === FormFieldTypes.SECTION) {
21067
+ return;
21068
+ }
21037
21069
  if (!this.form.values[this.parent.id]) {
21038
21070
  this.form.values[this.parent.id] = [];
21039
21071
  }
21040
21072
  if (!this.form.values[this.parent.id][this.parent.rowIndex]) {
21041
21073
  this.form.values[this.parent.id][this.parent.rowIndex] = this.createInitialValue(this.parent.fields);
21042
21074
  }
21043
- this.form.values[this.parent.id][this.parent.rowIndex][this.id.split(ROW_ID_PREFIX)[0]] = this.value;
21044
- this.form.onFormFieldChanged(this);
21075
+ this.form.values[this.parent.id][this.parent.rowIndex][this.id.split(ROW_ID_PREFIX)[0]] = value;
21045
21076
  }
21046
21077
  /**
21047
21078
  * Check if the field type is invalid, requires a type to be a `container`
@@ -24146,17 +24177,12 @@ class RepeatWidgetComponent {
24146
24177
  addRow() {
24147
24178
  this.element.field.addRow(this.element.json.fields, this.element.form);
24148
24179
  }
24149
- getAddedRowsCount() {
24150
- return this.element.json.params.allowInitialRowsDelete
24151
- ? this.element.field.rows.length - this.element.json.params.initialNumberOfRows
24152
- : this.element.field.rows.filter((row) => !row.isInitial).length;
24153
- }
24154
24180
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: RepeatWidgetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
24155
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.6", type: RepeatWidgetComponent, isStandalone: true, selector: "adf-repeat-widget", inputs: { element: "element", isEditor: "isEditor" }, ngImport: i0, template: "<div [style]=\"element | adfFieldStyle\" class=\"adf-container-widget-repeat\">\n <h4\n id=\"container-repeat\"\n class=\"adf-container-widget-repeat__text\"\n >\n <span [id]=\"'container-repeat-label-' + element?.id\" role=\"button\" tabindex=\"0\">\n {{ element.name | translate }}\n </span>\n </h4>\n\n <ng-content />\n\n @if (!isEditor) {\n @let shouldDisplayAddRowButton = !element.field.params.newRowsLimit || (element.field.params.newRowsLimit > getAddedRowsCount());\n @if (shouldDisplayAddRowButton) {\n <button \n mat-button\n color=\"primary\"\n class=\"adf-container-widget-row-action\"\n (click)=\"addRow()\"\n >\n <mat-icon>add</mat-icon> {{ 'FORM.FIELD.REPEATABLE_SECTION.ADD_ROW' | translate }}\n </button>\n } @else {\n @let rowLimit = element.field.params.initialNumberOfRows + (element.field.params.newRowsLimit ?? 0);\n <span class=\"adf-container-widget-row-action adf-container-widget-row-limit\">{{ 'FORM.FIELD.REPEATABLE_SECTION.ROW_LIMIT_REACHED' | translate: { limit: rowLimit } }}</span>\n }\n }\n</div>\n", styles: [".adf-container-widget-repeat__text{border-bottom:1px solid rgba(0,0,0,.87);padding-bottom:10px;cursor:default;-webkit-user-select:none;user-select:none;font-size:var(--adf-header-font-size);font-weight:var(--adf-header-font-weight);color:var(--adf-header-color);line-height:normal}.adf-container-widget-repeat__text.adf-collapsible{cursor:pointer}.adf-container-widget-row-action{margin-left:10px}.adf-container-widget-row-limit{color:#000000ab;font-size:12px}\n"], dependencies: [{ kind: "pipe", type: FieldStylePipe, name: "adfFieldStyle" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1$3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2$2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
24181
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.6", type: RepeatWidgetComponent, isStandalone: true, selector: "adf-repeat-widget", inputs: { element: "element", isEditor: "isEditor" }, ngImport: i0, template: "<div [style]=\"element | adfFieldStyle\" class=\"adf-container-widget-repeat\" [class.adf-readonly]=\"element.field.readOnly\">\n <h4\n id=\"container-repeat\"\n class=\"adf-container-widget-repeat__text\"\n >\n <span [id]=\"'container-repeat-label-' + element?.id\" role=\"button\" tabindex=\"0\">\n {{ element.name | translate }}\n </span>\n </h4>\n\n <ng-content />\n\n @if (!isEditor) {\n @let shouldDisplayAddRowButton = !element.field.params.maxNumberOfRows || (element.field.params.maxNumberOfRows > element.field.rows.length);\n @if (shouldDisplayAddRowButton) {\n <button \n mat-button\n color=\"primary\"\n class=\"adf-container-widget-row-action\"\n [disabled]=\"element.field.readOnly\"\n (click)=\"addRow()\"\n >\n <mat-icon>add</mat-icon> {{ 'FORM.FIELD.REPEATABLE_SECTION.ADD_ROW' | translate }}\n </button>\n } @else {\n <span class=\"adf-container-widget-row-action adf-container-widget-row-limit\">{{ 'FORM.FIELD.REPEATABLE_SECTION.ROW_LIMIT_REACHED' | translate: { limit: element.field.params.maxNumberOfRows } }}</span>\n }\n }\n</div>\n", styles: [".adf-container-widget-repeat__text{border-bottom:1px solid rgba(0,0,0,.87);padding-bottom:10px;cursor:default;-webkit-user-select:none;user-select:none;font-size:var(--adf-header-font-size);font-weight:var(--adf-header-font-weight);color:var(--adf-header-color);line-height:normal}.adf-container-widget-row-action{margin-left:10px}.adf-container-widget-row-limit{color:#000000ab;font-size:12px}.adf-readonly .adf-container-widget-repeat__text{color:var(--mdc-text-button-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent));border-bottom:1px solid var(--mdc-text-button-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent));cursor:default}.adf-readonly .adf-container-widget-row-limit{color:var(--mdc-text-button-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent));font-size:12px}\n"], dependencies: [{ kind: "pipe", type: FieldStylePipe, name: "adfFieldStyle" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1$3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2$2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
24156
24182
  }
24157
24183
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: RepeatWidgetComponent, decorators: [{
24158
24184
  type: Component,
24159
- args: [{ selector: 'adf-repeat-widget', encapsulation: ViewEncapsulation.None, imports: [FieldStylePipe, MatIconModule, MatButtonModule, TranslatePipe], template: "<div [style]=\"element | adfFieldStyle\" class=\"adf-container-widget-repeat\">\n <h4\n id=\"container-repeat\"\n class=\"adf-container-widget-repeat__text\"\n >\n <span [id]=\"'container-repeat-label-' + element?.id\" role=\"button\" tabindex=\"0\">\n {{ element.name | translate }}\n </span>\n </h4>\n\n <ng-content />\n\n @if (!isEditor) {\n @let shouldDisplayAddRowButton = !element.field.params.newRowsLimit || (element.field.params.newRowsLimit > getAddedRowsCount());\n @if (shouldDisplayAddRowButton) {\n <button \n mat-button\n color=\"primary\"\n class=\"adf-container-widget-row-action\"\n (click)=\"addRow()\"\n >\n <mat-icon>add</mat-icon> {{ 'FORM.FIELD.REPEATABLE_SECTION.ADD_ROW' | translate }}\n </button>\n } @else {\n @let rowLimit = element.field.params.initialNumberOfRows + (element.field.params.newRowsLimit ?? 0);\n <span class=\"adf-container-widget-row-action adf-container-widget-row-limit\">{{ 'FORM.FIELD.REPEATABLE_SECTION.ROW_LIMIT_REACHED' | translate: { limit: rowLimit } }}</span>\n }\n }\n</div>\n", styles: [".adf-container-widget-repeat__text{border-bottom:1px solid rgba(0,0,0,.87);padding-bottom:10px;cursor:default;-webkit-user-select:none;user-select:none;font-size:var(--adf-header-font-size);font-weight:var(--adf-header-font-weight);color:var(--adf-header-color);line-height:normal}.adf-container-widget-repeat__text.adf-collapsible{cursor:pointer}.adf-container-widget-row-action{margin-left:10px}.adf-container-widget-row-limit{color:#000000ab;font-size:12px}\n"] }]
24185
+ args: [{ selector: 'adf-repeat-widget', encapsulation: ViewEncapsulation.None, imports: [FieldStylePipe, MatIconModule, MatButtonModule, TranslatePipe], template: "<div [style]=\"element | adfFieldStyle\" class=\"adf-container-widget-repeat\" [class.adf-readonly]=\"element.field.readOnly\">\n <h4\n id=\"container-repeat\"\n class=\"adf-container-widget-repeat__text\"\n >\n <span [id]=\"'container-repeat-label-' + element?.id\" role=\"button\" tabindex=\"0\">\n {{ element.name | translate }}\n </span>\n </h4>\n\n <ng-content />\n\n @if (!isEditor) {\n @let shouldDisplayAddRowButton = !element.field.params.maxNumberOfRows || (element.field.params.maxNumberOfRows > element.field.rows.length);\n @if (shouldDisplayAddRowButton) {\n <button \n mat-button\n color=\"primary\"\n class=\"adf-container-widget-row-action\"\n [disabled]=\"element.field.readOnly\"\n (click)=\"addRow()\"\n >\n <mat-icon>add</mat-icon> {{ 'FORM.FIELD.REPEATABLE_SECTION.ADD_ROW' | translate }}\n </button>\n } @else {\n <span class=\"adf-container-widget-row-action adf-container-widget-row-limit\">{{ 'FORM.FIELD.REPEATABLE_SECTION.ROW_LIMIT_REACHED' | translate: { limit: element.field.params.maxNumberOfRows } }}</span>\n }\n }\n</div>\n", styles: [".adf-container-widget-repeat__text{border-bottom:1px solid rgba(0,0,0,.87);padding-bottom:10px;cursor:default;-webkit-user-select:none;user-select:none;font-size:var(--adf-header-font-size);font-weight:var(--adf-header-font-weight);color:var(--adf-header-color);line-height:normal}.adf-container-widget-row-action{margin-left:10px}.adf-container-widget-row-limit{color:#000000ab;font-size:12px}.adf-readonly .adf-container-widget-repeat__text{color:var(--mdc-text-button-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent));border-bottom:1px solid var(--mdc-text-button-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent));cursor:default}.adf-readonly .adf-container-widget-row-limit{color:var(--mdc-text-button-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent));font-size:12px}\n"] }]
24160
24186
  }], propDecorators: { element: [{
24161
24187
  type: Input
24162
24188
  }], isEditor: [{
@@ -25339,7 +25365,7 @@ class FormRendererComponent {
25339
25365
  useClass: DecimalRenderMiddlewareService,
25340
25366
  multi: true
25341
25367
  }
25342
- ], ngImport: i0, template: "<div id=\"adf-form-renderer\" class=\"{{ formDefinition.className }} adf-form-renderer\"\n [ngClass]=\"{ 'adf-readonly-form': formDefinition.readOnly }\">\n <div *ngIf=\"formDefinition.hasTabs()\">\n <div *ngIf=\"hasTabs()\" class=\"alfresco-tabs-widget\">\n <mat-tab-group [preserveContent]=\"true\">\n <mat-tab *ngFor=\"let tab of visibleTabs()\" [label]=\"tab.title | translate \">\n <ng-template matTabContent>\n <div class=\"adf-form-tab-content\">\n <ng-template *ngTemplateOutlet=\"render; context: { fieldToRender: tab.fields }\" />\n </div>\n </ng-template>\n </mat-tab>\n </mat-tab-group>\n </div>\n </div>\n\n <div *ngIf=\"!formDefinition.hasTabs() && formDefinition.hasFields()\">\n <ng-template *ngTemplateOutlet=\"render; context: { fieldToRender: formDefinition.fields }\" />\n </div>\n</div>\n\n<ng-template #render let-fieldToRender=\"fieldToRender\">\n <div *ngFor=\"let currentRootElement of fieldToRender\">\n <div *ngIf=\"currentRootElement.type === 'section'\" [id]=\"'field-' + currentRootElement?.id + '-container'\" class=\"adf-container-widget\">\n <adf-form-section [field]=\"currentRootElement\" />\n </div>\n\n <div *ngIf=\"currentRootElement.type === 'container' || currentRootElement.type === 'group'\"\n [id]=\"'field-' + currentRootElement?.id + '-container'\"\n class=\"adf-container-widget\"\n [hidden]=\"!currentRootElement?.isVisible\">\n <adf-header-widget [element]=\"currentRootElement\" />\n <div *ngIf=\"currentRootElement?.form?.enableFixedSpace; else fixingTemplate\">\n <div class=\"adf-grid-list\"\n [ngStyle]=\"{ 'grid-template-columns': 'repeat(' + getNumberOfColumns(currentRootElement) + ', 1fr)' }\"\n *ngIf=\"currentRootElement?.isExpanded\">\n <div class=\"adf-grid-list-item\"\n *ngFor=\"let field of getContainerFields(currentRootElement)\"\n [ngStyle]=\"{ 'grid-area': 'auto / auto / span ' + (field?.rowspan || 1) + ' / span ' + (field?.colspan || 1) }\">\n <adf-form-field *ngIf=\"field\" [field]=\"field\" />\n </div>\n </div>\n </div>\n\n <ng-template #fixingTemplate>\n <section class=\"adf-grid-list-column-view\" *ngIf=\"currentRootElement?.isExpanded\">\n <div class=\"adf-grid-list-single-column\"\n *ngFor=\"let column of currentRootElement?.columns\"\n [style.width.%]=\"getColumnWidth(currentRootElement)\"\n >\n <ng-container *ngFor=\"let field of column?.fields\">\n <ng-container *ngIf=\"field.type === 'section'; else formField\">\n <adf-form-section [field]=\"field\"/>\n </ng-container>\n <ng-template #formField>\n <div class=\"adf-grid-list-column-view-item\">\n <adf-form-field [field]=\"field\"/>\n </div>\n </ng-template>\n </ng-container>\n </div>\n </section>\n </ng-template>\n\n <ng-template #columnViewItem let-column=\"column\">\n <div class=\"adf-grid-list-column-view-item\" *ngFor=\"let field of column?.fields\">\n <adf-form-field *ngIf=\"field\" [field]=\"field\" />\n </div>\n </ng-template>\n </div>\n\n @if (currentRootElement.type === 'repeatable-section') {\n <div \n [id]=\"'field-' + currentRootElement?.id + '-container'\"\n class=\"adf-container-widget\"\n [hidden]=\"!currentRootElement?.isVisible\"\n >\n <adf-repeat-widget [element]=\"currentRootElement\" [isEditor]=\"false\">\n @for (row of currentRootElement.field.rows; track row.id; let rowIndex = $index) {\n @let hasMultipleRows = currentRootElement.field.rows.length > 1;\n <div \n class=\"adf-grid-list-container\"\n [class.adf-grid-list-container-multiple]=\"hasMultipleRows\"\n >\n <h4 class=\"adf-grid-list-container-label\">{{ 'FORM.FORM_RENDERER.ROW_LABEL' | translate: {number: rowIndex + 1} }}</h4>\n <section class=\"adf-grid-list-column-view\">\n @for (column of row.columns; track $index) {\n <div \n class=\"adf-grid-list-single-column\"\n [style.width.%]=\"getColumnWidth(currentRootElement)\"\n >\n @for (field of column?.fields; track $index) {\n @if (field.type === 'section') {\n <adf-form-section [field]=\"field\"/>\n } @else {\n <div class=\"adf-grid-list-column-view-item\">\n <adf-form-field [field]=\"field\"/>\n </div>\n }\n }\n </div>\n }\n\n @let shouldDisplayRemoveRowButton = !currentRootElement.field.rows[rowIndex].isInitial || (currentRootElement.field.rows[rowIndex].isInitial && currentRootElement.field.params.allowInitialRowsDelete);\n @if (shouldDisplayRemoveRowButton) {\n <button \n mat-icon-button\n class=\"adf-grid-list-remove-row-button\"\n (click)=\"displayDialogToRemoveRow(currentRootElement.field, rowIndex)\"\n >\n <mat-icon>close</mat-icon>\n </button>\n }\n </section>\n </div>\n }\n </adf-repeat-widget>\n </div>\n }\n\n <div *ngIf=\"currentRootElement.type === 'dynamic-table'\" class=\"adf-container-widget\">\n <adf-form-field [field]=\"currentRootElement\" />\n </div>\n\n <div class=\"adf-container-widget\"\n *ngIf=\"currentRootElement.type === 'readonly' && currentRootElement.field.params.field.type === 'dynamic-table'\">\n <adf-form-field [field]=\"currentRootElement.field\"/>\n </div>\n </div>\n</ng-template>\n", styles: [".adf-hidden{display:none}.adf-field-list{padding:0;list-style-type:none;width:100%;height:100%}.adf-form-renderer .mat-mdc-form-field-infix{width:auto}.alfresco-tabs-widget{width:100%}.alfresco-tabs-widget .adf-form-tab-content{margin-top:1em}.alfresco-tabs-widget .adf-form-tab-group{width:100%}.alfresco-tabs-widget .mat-mdc-tab-body{margin-bottom:8em}@media (max-width: 959.9px){.alfresco-tabs-widget .mat-mdc-tab-body{margin-bottom:0}}.alfresco-tabs-widget .mat-mdc-tab-header{z-index:2;margin:0;background-color:#fff;position:absolute;width:98%;margin-left:0!important;margin-right:10px!important;top:0}.alfresco-tabs-widget .mat-mdc-tab-body-wrapper{padding-top:5%}.mat-mdc-card-content:first-child{padding-top:1em}.adf-container-widget .adf-grid-list{display:grid}.adf-container-widget .adf-grid-list-column-view{display:flex;margin-right:-1%;width:100%;gap:8px}@media (max-width: 959.9px){.adf-container-widget .adf-grid-list-column-view{display:flow}}.adf-container-widget .adf-grid-list-column-view-item{width:100%;box-sizing:border-box}.adf-container-widget .adf-grid-list-column-view .adf-radio-buttons-widget{padding-left:12px}.adf-container-widget .adf-grid-list-single-column{display:flex;flex-direction:column;flex:1 1 auto}.adf-container-widget .adf-grid-list-item{box-sizing:border-box;padding-left:3px;padding-right:3px}.adf-container-widget .adf-grid-list-remove-row-button{margin-top:20px}.adf-container-widget .adf-grid-list-remove-row-button .mat-icon{display:flex;justify-content:center;align-items:center;font-size:20px}.adf-container-widget .adf-grid-list-container{padding:0 10px}.adf-container-widget .adf-grid-list-container-label{margin:5px 0 5px -10px}.adf-container-widget .adf-grid-list-container-multiple{border-bottom:1px solid rgba(0,0,0,.54);margin-bottom:25px}@media (max-width: 959.9px){.adf-container-widget .adf-grid-list-item{flex:1 0 100%}.adf-container-widget .adf-grid-list--column-view{flex-direction:column}.adf-container-widget .adf-grid-list-single-column{display:block;width:90%!important}.adf-container-widget .adf-grid-list-column-view-item{flex:1 0 auto}}.adf-container-widget mat-input-placeholder{top:1.8em}.adf-container-widget .mat-focused{width:100%}.adf-container-widget .mat-focused .mdc-text-field--focused label{color:var(--theme-primary-color)}.adf-container-widget .mat-focused label{transition:transform .15s linear;background-color:.3s cubic-bezier(.55,0,.55,.2)}.adf-container-widget .mat-focused .mat-mdc-form-field-text-prefix{color:var(--theme-primary-color)}.adf-container-widget .mat-grid-tile{overflow:visible;width:80%}.adf-container-widget adf-form-field,.adf-container-widget mat-form-field{width:100%}.adf-form-container{max-width:100%;max-height:100%}.adf-form-container .mat-mdc-card{padding:16px 24px;overflow:hidden}.adf-form-container .mat-mdc-tab-header{position:fixed;z-index:1000}.adf-form-container .mat-mdc-card-header-text{margin:0}.adf-form-container .mat-mdc-card-content{overflow:hidden;padding-top:0}.adf-form-container mat-tab-label-text{font-size:var(--theme-subheading-2-font-size);line-height:var(--theme-headline-line-height);letter-spacing:-.4px;text-align:left;color:#0000008a;text-transform:uppercase}.adf-form-container .mdc-tab-indicator .mdc-tab-indicator__content--underline{border-top-width:4px}.adf-form-container .mat-mdc-text-field-wrapper{margin:0 12px 0 0}.adf-form-title{font-size:var(--theme-title-font-size);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.adf-form-reload-button{position:absolute;right:12px;top:30px}.adf-form-validation-button{position:absolute;right:50px;top:39px;color:var(--theme-accent-color)}.adf-form-validation-button .adf-invalid-color{color:var(--theme-warn-color)}.adf-form-hide-button{display:none}.adf-task-title{text-align:center}.adf-form-mat-card-actions{padding-bottom:25px;padding-right:25px}.adf-form-mat-card-actions .mat-mdc-button{height:36px;border-radius:5px;width:auto;padding:0 16px;margin:0 8px;white-space:nowrap}.adf-form-mat-card-actions .mdc-button__label{min-width:58px}.adf-left-label-input-container{display:flex}.adf-left-label-input-container div:nth-child(2){flex:1}.adf-left-label-input-container .mat-mdc-floating-label{top:auto;bottom:0}.adf-left-label{line-height:64px;margin-right:15px}.adf-error-messages-container{min-height:35px}.adf-error-messages-container-visible{visibility:visible}.adf-error-messages-container-hidden{visibility:hidden}form-field{width:100%}form-field .mat-mdc-input-element{font-size:var(--theme-body-2-font-size);padding-top:8px;line-height:normal}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatTabsModule }, { kind: "directive", type: i2$7.MatTabContent, selector: "[matTabContent]" }, { kind: "component", type: i2$7.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass", "id"], exportAs: ["matTab"] }, { kind: "component", type: i2$7.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "mat-align-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor", "aria-label", "aria-labelledby"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2$2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1$3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: FormFieldComponent, selector: "adf-form-field", inputs: ["field"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: HeaderWidgetComponent, selector: "adf-header-widget", inputs: ["element"] }, { kind: "component", type: FormSectionComponent, selector: "adf-form-section", inputs: ["field"] }, { kind: "component", type: RepeatWidgetComponent, selector: "adf-repeat-widget", inputs: ["element", "isEditor"] }], encapsulation: i0.ViewEncapsulation.None }); }
25368
+ ], ngImport: i0, template: "<div id=\"adf-form-renderer\" class=\"{{ formDefinition.className }} adf-form-renderer\"\n [ngClass]=\"{ 'adf-readonly-form': formDefinition.readOnly }\">\n <div *ngIf=\"formDefinition.hasTabs()\">\n <div *ngIf=\"hasTabs()\" class=\"alfresco-tabs-widget\">\n <mat-tab-group [preserveContent]=\"true\">\n <mat-tab *ngFor=\"let tab of visibleTabs()\" [label]=\"tab.title | translate \">\n <ng-template matTabContent>\n <div class=\"adf-form-tab-content\">\n <ng-template *ngTemplateOutlet=\"render; context: { fieldToRender: tab.fields }\" />\n </div>\n </ng-template>\n </mat-tab>\n </mat-tab-group>\n </div>\n </div>\n\n <div *ngIf=\"!formDefinition.hasTabs() && formDefinition.hasFields()\">\n <ng-template *ngTemplateOutlet=\"render; context: { fieldToRender: formDefinition.fields }\" />\n </div>\n</div>\n\n<ng-template #render let-fieldToRender=\"fieldToRender\">\n <div *ngFor=\"let currentRootElement of fieldToRender\">\n <div *ngIf=\"currentRootElement.type === 'section'\" [id]=\"'field-' + currentRootElement?.id + '-container'\" class=\"adf-container-widget\">\n <adf-form-section [field]=\"currentRootElement\" />\n </div>\n\n <div *ngIf=\"currentRootElement.type === 'container' || currentRootElement.type === 'group'\"\n [id]=\"'field-' + currentRootElement?.id + '-container'\"\n class=\"adf-container-widget\"\n [hidden]=\"!currentRootElement?.isVisible\">\n <adf-header-widget [element]=\"currentRootElement\" />\n <div *ngIf=\"currentRootElement?.form?.enableFixedSpace; else fixingTemplate\">\n <div class=\"adf-grid-list\"\n [ngStyle]=\"{ 'grid-template-columns': 'repeat(' + getNumberOfColumns(currentRootElement) + ', 1fr)' }\"\n *ngIf=\"currentRootElement?.isExpanded\">\n <div class=\"adf-grid-list-item\"\n *ngFor=\"let field of getContainerFields(currentRootElement)\"\n [ngStyle]=\"{ 'grid-area': 'auto / auto / span ' + (field?.rowspan || 1) + ' / span ' + (field?.colspan || 1) }\">\n <adf-form-field *ngIf=\"field\" [field]=\"field\" />\n </div>\n </div>\n </div>\n\n <ng-template #fixingTemplate>\n <section class=\"adf-grid-list-column-view\" *ngIf=\"currentRootElement?.isExpanded\">\n <div class=\"adf-grid-list-single-column\"\n *ngFor=\"let column of currentRootElement?.columns\"\n [style.width.%]=\"getColumnWidth(currentRootElement)\"\n >\n <ng-container *ngFor=\"let field of column?.fields\">\n <ng-container *ngIf=\"field.type === 'section'; else formField\">\n <adf-form-section [field]=\"field\"/>\n </ng-container>\n <ng-template #formField>\n <div class=\"adf-grid-list-column-view-item\">\n <adf-form-field [field]=\"field\"/>\n </div>\n </ng-template>\n </ng-container>\n </div>\n </section>\n </ng-template>\n\n <ng-template #columnViewItem let-column=\"column\">\n <div class=\"adf-grid-list-column-view-item\" *ngFor=\"let field of column?.fields\">\n <adf-form-field *ngIf=\"field\" [field]=\"field\" />\n </div>\n </ng-template>\n </div>\n\n @if (currentRootElement.type === 'repeatable-section') {\n <div \n [id]=\"'field-' + currentRootElement?.id + '-container'\"\n class=\"adf-container-widget\"\n [hidden]=\"!currentRootElement?.isVisible\"\n >\n <adf-repeat-widget [element]=\"currentRootElement\" [isEditor]=\"false\">\n @for (row of currentRootElement.field.rows; track row.id; let rowIndex = $index) {\n @let hasMultipleRows = currentRootElement.field.rows.length > 1;\n <div \n class=\"adf-grid-list-container\"\n [class.adf-grid-list-container-multiple]=\"hasMultipleRows\"\n [class.adf-grid-list-container-disabled]=\"currentRootElement.field.readOnly\"\n > \n <div class=\"adf-grid-list-row\">\n <span class=\"adf-grid-list-row-label\">{{ 'FORM.FORM_RENDERER.ROW_LABEL' | translate: {number: rowIndex + 1} }}</span>\n\n @let shouldDisplayRemoveRowButton = !currentRootElement.field.rows[rowIndex].isInitial || (currentRootElement.field.rows[rowIndex].isInitial && currentRootElement.field.params.allowInitialRowsDelete);\n @if (shouldDisplayRemoveRowButton) {\n <button \n mat-icon-button\n class=\"adf-grid-list-row-remove-button\"\n [disabled]=\"currentRootElement.field.readOnly\"\n [matTooltip]=\"'FORM.FORM_RENDERER.DELETE_ROW' | translate\"\n (click)=\"displayDialogToRemoveRow(currentRootElement.field, rowIndex)\"\n >\n <mat-icon>close</mat-icon>\n </button>\n }\n </div>\n <section class=\"adf-grid-list-column-view\">\n @for (column of row.columns; track $index) {\n <div \n class=\"adf-grid-list-single-column\"\n [style.width.%]=\"getColumnWidth(currentRootElement)\"\n >\n @for (field of column?.fields; track $index) {\n @if (field.type === 'section') {\n <adf-form-section [field]=\"field\"/>\n } @else {\n <div class=\"adf-grid-list-column-view-item\">\n <adf-form-field [field]=\"field\"/>\n </div>\n }\n }\n </div>\n }\n </section>\n </div>\n }\n </adf-repeat-widget>\n </div>\n }\n\n <div *ngIf=\"currentRootElement.type === 'dynamic-table'\" class=\"adf-container-widget\">\n <adf-form-field [field]=\"currentRootElement\" />\n </div>\n\n <div class=\"adf-container-widget\"\n *ngIf=\"currentRootElement.type === 'readonly' && currentRootElement.field.params.field.type === 'dynamic-table'\">\n <adf-form-field [field]=\"currentRootElement.field\"/>\n </div>\n </div>\n</ng-template>\n", styles: [".adf-hidden{display:none}.adf-field-list{padding:0;list-style-type:none;width:100%;height:100%}.adf-form-renderer .mat-mdc-form-field-infix{width:auto}.alfresco-tabs-widget{width:100%}.alfresco-tabs-widget .adf-form-tab-content{margin-top:1em}.alfresco-tabs-widget .adf-form-tab-group{width:100%}.alfresco-tabs-widget .mat-mdc-tab-body{margin-bottom:8em}@media (max-width: 959.9px){.alfresco-tabs-widget .mat-mdc-tab-body{margin-bottom:0}}.alfresco-tabs-widget .mat-mdc-tab-header{z-index:2;margin:0;background-color:#fff;position:absolute;width:98%;margin-left:0!important;margin-right:10px!important;top:0}.alfresco-tabs-widget .mat-mdc-tab-body-wrapper{padding-top:5%}.mat-mdc-card-content:first-child{padding-top:1em}.adf-container-widget .adf-grid-list{display:grid}.adf-container-widget .adf-grid-list-column-view{display:flex;margin-right:-1%;width:100%;gap:8px}@media (max-width: 959.9px){.adf-container-widget .adf-grid-list-column-view{display:flow}}.adf-container-widget .adf-grid-list-column-view-item{width:100%;box-sizing:border-box}.adf-container-widget .adf-grid-list-column-view .adf-radio-buttons-widget{padding-left:12px}.adf-container-widget .adf-grid-list-single-column{display:flex;flex-direction:column;flex:1 1 auto}.adf-container-widget .adf-grid-list-item{box-sizing:border-box;padding-left:3px;padding-right:3px}.adf-container-widget .adf-grid-list-row{display:flex;flex-direction:row;align-items:center;justify-content:space-between}.adf-container-widget .adf-grid-list-row-remove-button{padding:0;width:30px;height:30px;display:flex;align-items:center;justify-content:center}.adf-container-widget .adf-grid-list-row-remove-button .mat-icon{display:flex;justify-content:center;align-items:center;font-size:18px}.adf-container-widget .adf-grid-list-container{padding:0 15px}.adf-container-widget .adf-grid-list-container-multiple{border-bottom:1px solid rgba(0,0,0,.54);margin-bottom:25px}.adf-container-widget .adf-grid-list-container-disabled.adf-grid-list-container-multiple{border-bottom:1px solid var(--mdc-text-button-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.adf-container-widget .adf-grid-list-container-disabled .adf-grid-list-row-label{color:var(--mdc-text-button-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent));cursor:default}@media (max-width: 959.9px){.adf-container-widget .adf-grid-list-item{flex:1 0 100%}.adf-container-widget .adf-grid-list--column-view{flex-direction:column}.adf-container-widget .adf-grid-list-single-column{display:block;width:90%!important}.adf-container-widget .adf-grid-list-column-view-item{flex:1 0 auto}}.adf-container-widget mat-input-placeholder{top:1.8em}.adf-container-widget .mat-focused{width:100%}.adf-container-widget .mat-focused .mdc-text-field--focused label{color:var(--theme-primary-color)}.adf-container-widget .mat-focused label{transition:transform .15s linear;background-color:.3s cubic-bezier(.55,0,.55,.2)}.adf-container-widget .mat-focused .mat-mdc-form-field-text-prefix{color:var(--theme-primary-color)}.adf-container-widget .mat-grid-tile{overflow:visible;width:80%}.adf-container-widget adf-form-field,.adf-container-widget mat-form-field{width:100%}.adf-form-container{max-width:100%;max-height:100%}.adf-form-container .mat-mdc-card{padding:16px 24px;overflow:hidden}.adf-form-container .mat-mdc-tab-header{position:fixed;z-index:1000}.adf-form-container .mat-mdc-card-header-text{margin:0}.adf-form-container .mat-mdc-card-content{overflow:hidden;padding-top:0}.adf-form-container mat-tab-label-text{font-size:var(--theme-subheading-2-font-size);line-height:var(--theme-headline-line-height);letter-spacing:-.4px;text-align:left;color:#0000008a;text-transform:uppercase}.adf-form-container .mdc-tab-indicator .mdc-tab-indicator__content--underline{border-top-width:4px}.adf-form-container .mat-mdc-text-field-wrapper{margin:0 12px 0 0}.adf-form-title{font-size:var(--theme-title-font-size);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.adf-form-reload-button{position:absolute;right:12px;top:30px}.adf-form-validation-button{position:absolute;right:50px;top:39px;color:var(--theme-accent-color)}.adf-form-validation-button .adf-invalid-color{color:var(--theme-warn-color)}.adf-form-hide-button{display:none}.adf-task-title{text-align:center}.adf-form-mat-card-actions{padding-bottom:25px;padding-right:25px}.adf-form-mat-card-actions .mat-mdc-button{height:36px;border-radius:5px;width:auto;padding:0 16px;margin:0 8px;white-space:nowrap}.adf-form-mat-card-actions .mdc-button__label{min-width:58px}.adf-left-label-input-container{display:flex}.adf-left-label-input-container div:nth-child(2){flex:1}.adf-left-label-input-container .mat-mdc-floating-label{top:auto;bottom:0}.adf-left-label{line-height:64px;margin-right:15px}.adf-error-messages-container{min-height:35px}.adf-error-messages-container-visible{visibility:visible}.adf-error-messages-container-hidden{visibility:hidden}form-field{width:100%}form-field .mat-mdc-input-element{font-size:var(--theme-body-2-font-size);padding-top:8px;line-height:normal}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatTabsModule }, { kind: "directive", type: i2$7.MatTabContent, selector: "[matTabContent]" }, { kind: "component", type: i2$7.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass", "id"], exportAs: ["matTab"] }, { kind: "component", type: i2$7.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "mat-align-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor", "aria-label", "aria-labelledby"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2$2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1$3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: FormFieldComponent, selector: "adf-form-field", inputs: ["field"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: HeaderWidgetComponent, selector: "adf-header-widget", inputs: ["element"] }, { kind: "component", type: FormSectionComponent, selector: "adf-form-section", inputs: ["field"] }, { kind: "component", type: RepeatWidgetComponent, selector: "adf-repeat-widget", inputs: ["element", "isEditor"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i2$8.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }], encapsulation: i0.ViewEncapsulation.None }); }
25343
25369
  }
25344
25370
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: FormRendererComponent, decorators: [{
25345
25371
  type: Component,
@@ -25368,8 +25394,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImpor
25368
25394
  NgClass,
25369
25395
  HeaderWidgetComponent,
25370
25396
  FormSectionComponent,
25371
- RepeatWidgetComponent
25372
- ], encapsulation: ViewEncapsulation.None, template: "<div id=\"adf-form-renderer\" class=\"{{ formDefinition.className }} adf-form-renderer\"\n [ngClass]=\"{ 'adf-readonly-form': formDefinition.readOnly }\">\n <div *ngIf=\"formDefinition.hasTabs()\">\n <div *ngIf=\"hasTabs()\" class=\"alfresco-tabs-widget\">\n <mat-tab-group [preserveContent]=\"true\">\n <mat-tab *ngFor=\"let tab of visibleTabs()\" [label]=\"tab.title | translate \">\n <ng-template matTabContent>\n <div class=\"adf-form-tab-content\">\n <ng-template *ngTemplateOutlet=\"render; context: { fieldToRender: tab.fields }\" />\n </div>\n </ng-template>\n </mat-tab>\n </mat-tab-group>\n </div>\n </div>\n\n <div *ngIf=\"!formDefinition.hasTabs() && formDefinition.hasFields()\">\n <ng-template *ngTemplateOutlet=\"render; context: { fieldToRender: formDefinition.fields }\" />\n </div>\n</div>\n\n<ng-template #render let-fieldToRender=\"fieldToRender\">\n <div *ngFor=\"let currentRootElement of fieldToRender\">\n <div *ngIf=\"currentRootElement.type === 'section'\" [id]=\"'field-' + currentRootElement?.id + '-container'\" class=\"adf-container-widget\">\n <adf-form-section [field]=\"currentRootElement\" />\n </div>\n\n <div *ngIf=\"currentRootElement.type === 'container' || currentRootElement.type === 'group'\"\n [id]=\"'field-' + currentRootElement?.id + '-container'\"\n class=\"adf-container-widget\"\n [hidden]=\"!currentRootElement?.isVisible\">\n <adf-header-widget [element]=\"currentRootElement\" />\n <div *ngIf=\"currentRootElement?.form?.enableFixedSpace; else fixingTemplate\">\n <div class=\"adf-grid-list\"\n [ngStyle]=\"{ 'grid-template-columns': 'repeat(' + getNumberOfColumns(currentRootElement) + ', 1fr)' }\"\n *ngIf=\"currentRootElement?.isExpanded\">\n <div class=\"adf-grid-list-item\"\n *ngFor=\"let field of getContainerFields(currentRootElement)\"\n [ngStyle]=\"{ 'grid-area': 'auto / auto / span ' + (field?.rowspan || 1) + ' / span ' + (field?.colspan || 1) }\">\n <adf-form-field *ngIf=\"field\" [field]=\"field\" />\n </div>\n </div>\n </div>\n\n <ng-template #fixingTemplate>\n <section class=\"adf-grid-list-column-view\" *ngIf=\"currentRootElement?.isExpanded\">\n <div class=\"adf-grid-list-single-column\"\n *ngFor=\"let column of currentRootElement?.columns\"\n [style.width.%]=\"getColumnWidth(currentRootElement)\"\n >\n <ng-container *ngFor=\"let field of column?.fields\">\n <ng-container *ngIf=\"field.type === 'section'; else formField\">\n <adf-form-section [field]=\"field\"/>\n </ng-container>\n <ng-template #formField>\n <div class=\"adf-grid-list-column-view-item\">\n <adf-form-field [field]=\"field\"/>\n </div>\n </ng-template>\n </ng-container>\n </div>\n </section>\n </ng-template>\n\n <ng-template #columnViewItem let-column=\"column\">\n <div class=\"adf-grid-list-column-view-item\" *ngFor=\"let field of column?.fields\">\n <adf-form-field *ngIf=\"field\" [field]=\"field\" />\n </div>\n </ng-template>\n </div>\n\n @if (currentRootElement.type === 'repeatable-section') {\n <div \n [id]=\"'field-' + currentRootElement?.id + '-container'\"\n class=\"adf-container-widget\"\n [hidden]=\"!currentRootElement?.isVisible\"\n >\n <adf-repeat-widget [element]=\"currentRootElement\" [isEditor]=\"false\">\n @for (row of currentRootElement.field.rows; track row.id; let rowIndex = $index) {\n @let hasMultipleRows = currentRootElement.field.rows.length > 1;\n <div \n class=\"adf-grid-list-container\"\n [class.adf-grid-list-container-multiple]=\"hasMultipleRows\"\n >\n <h4 class=\"adf-grid-list-container-label\">{{ 'FORM.FORM_RENDERER.ROW_LABEL' | translate: {number: rowIndex + 1} }}</h4>\n <section class=\"adf-grid-list-column-view\">\n @for (column of row.columns; track $index) {\n <div \n class=\"adf-grid-list-single-column\"\n [style.width.%]=\"getColumnWidth(currentRootElement)\"\n >\n @for (field of column?.fields; track $index) {\n @if (field.type === 'section') {\n <adf-form-section [field]=\"field\"/>\n } @else {\n <div class=\"adf-grid-list-column-view-item\">\n <adf-form-field [field]=\"field\"/>\n </div>\n }\n }\n </div>\n }\n\n @let shouldDisplayRemoveRowButton = !currentRootElement.field.rows[rowIndex].isInitial || (currentRootElement.field.rows[rowIndex].isInitial && currentRootElement.field.params.allowInitialRowsDelete);\n @if (shouldDisplayRemoveRowButton) {\n <button \n mat-icon-button\n class=\"adf-grid-list-remove-row-button\"\n (click)=\"displayDialogToRemoveRow(currentRootElement.field, rowIndex)\"\n >\n <mat-icon>close</mat-icon>\n </button>\n }\n </section>\n </div>\n }\n </adf-repeat-widget>\n </div>\n }\n\n <div *ngIf=\"currentRootElement.type === 'dynamic-table'\" class=\"adf-container-widget\">\n <adf-form-field [field]=\"currentRootElement\" />\n </div>\n\n <div class=\"adf-container-widget\"\n *ngIf=\"currentRootElement.type === 'readonly' && currentRootElement.field.params.field.type === 'dynamic-table'\">\n <adf-form-field [field]=\"currentRootElement.field\"/>\n </div>\n </div>\n</ng-template>\n", styles: [".adf-hidden{display:none}.adf-field-list{padding:0;list-style-type:none;width:100%;height:100%}.adf-form-renderer .mat-mdc-form-field-infix{width:auto}.alfresco-tabs-widget{width:100%}.alfresco-tabs-widget .adf-form-tab-content{margin-top:1em}.alfresco-tabs-widget .adf-form-tab-group{width:100%}.alfresco-tabs-widget .mat-mdc-tab-body{margin-bottom:8em}@media (max-width: 959.9px){.alfresco-tabs-widget .mat-mdc-tab-body{margin-bottom:0}}.alfresco-tabs-widget .mat-mdc-tab-header{z-index:2;margin:0;background-color:#fff;position:absolute;width:98%;margin-left:0!important;margin-right:10px!important;top:0}.alfresco-tabs-widget .mat-mdc-tab-body-wrapper{padding-top:5%}.mat-mdc-card-content:first-child{padding-top:1em}.adf-container-widget .adf-grid-list{display:grid}.adf-container-widget .adf-grid-list-column-view{display:flex;margin-right:-1%;width:100%;gap:8px}@media (max-width: 959.9px){.adf-container-widget .adf-grid-list-column-view{display:flow}}.adf-container-widget .adf-grid-list-column-view-item{width:100%;box-sizing:border-box}.adf-container-widget .adf-grid-list-column-view .adf-radio-buttons-widget{padding-left:12px}.adf-container-widget .adf-grid-list-single-column{display:flex;flex-direction:column;flex:1 1 auto}.adf-container-widget .adf-grid-list-item{box-sizing:border-box;padding-left:3px;padding-right:3px}.adf-container-widget .adf-grid-list-remove-row-button{margin-top:20px}.adf-container-widget .adf-grid-list-remove-row-button .mat-icon{display:flex;justify-content:center;align-items:center;font-size:20px}.adf-container-widget .adf-grid-list-container{padding:0 10px}.adf-container-widget .adf-grid-list-container-label{margin:5px 0 5px -10px}.adf-container-widget .adf-grid-list-container-multiple{border-bottom:1px solid rgba(0,0,0,.54);margin-bottom:25px}@media (max-width: 959.9px){.adf-container-widget .adf-grid-list-item{flex:1 0 100%}.adf-container-widget .adf-grid-list--column-view{flex-direction:column}.adf-container-widget .adf-grid-list-single-column{display:block;width:90%!important}.adf-container-widget .adf-grid-list-column-view-item{flex:1 0 auto}}.adf-container-widget mat-input-placeholder{top:1.8em}.adf-container-widget .mat-focused{width:100%}.adf-container-widget .mat-focused .mdc-text-field--focused label{color:var(--theme-primary-color)}.adf-container-widget .mat-focused label{transition:transform .15s linear;background-color:.3s cubic-bezier(.55,0,.55,.2)}.adf-container-widget .mat-focused .mat-mdc-form-field-text-prefix{color:var(--theme-primary-color)}.adf-container-widget .mat-grid-tile{overflow:visible;width:80%}.adf-container-widget adf-form-field,.adf-container-widget mat-form-field{width:100%}.adf-form-container{max-width:100%;max-height:100%}.adf-form-container .mat-mdc-card{padding:16px 24px;overflow:hidden}.adf-form-container .mat-mdc-tab-header{position:fixed;z-index:1000}.adf-form-container .mat-mdc-card-header-text{margin:0}.adf-form-container .mat-mdc-card-content{overflow:hidden;padding-top:0}.adf-form-container mat-tab-label-text{font-size:var(--theme-subheading-2-font-size);line-height:var(--theme-headline-line-height);letter-spacing:-.4px;text-align:left;color:#0000008a;text-transform:uppercase}.adf-form-container .mdc-tab-indicator .mdc-tab-indicator__content--underline{border-top-width:4px}.adf-form-container .mat-mdc-text-field-wrapper{margin:0 12px 0 0}.adf-form-title{font-size:var(--theme-title-font-size);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.adf-form-reload-button{position:absolute;right:12px;top:30px}.adf-form-validation-button{position:absolute;right:50px;top:39px;color:var(--theme-accent-color)}.adf-form-validation-button .adf-invalid-color{color:var(--theme-warn-color)}.adf-form-hide-button{display:none}.adf-task-title{text-align:center}.adf-form-mat-card-actions{padding-bottom:25px;padding-right:25px}.adf-form-mat-card-actions .mat-mdc-button{height:36px;border-radius:5px;width:auto;padding:0 16px;margin:0 8px;white-space:nowrap}.adf-form-mat-card-actions .mdc-button__label{min-width:58px}.adf-left-label-input-container{display:flex}.adf-left-label-input-container div:nth-child(2){flex:1}.adf-left-label-input-container .mat-mdc-floating-label{top:auto;bottom:0}.adf-left-label{line-height:64px;margin-right:15px}.adf-error-messages-container{min-height:35px}.adf-error-messages-container-visible{visibility:visible}.adf-error-messages-container-hidden{visibility:hidden}form-field{width:100%}form-field .mat-mdc-input-element{font-size:var(--theme-body-2-font-size);padding-top:8px;line-height:normal}\n"] }]
25397
+ RepeatWidgetComponent,
25398
+ MatTooltipModule
25399
+ ], encapsulation: ViewEncapsulation.None, template: "<div id=\"adf-form-renderer\" class=\"{{ formDefinition.className }} adf-form-renderer\"\n [ngClass]=\"{ 'adf-readonly-form': formDefinition.readOnly }\">\n <div *ngIf=\"formDefinition.hasTabs()\">\n <div *ngIf=\"hasTabs()\" class=\"alfresco-tabs-widget\">\n <mat-tab-group [preserveContent]=\"true\">\n <mat-tab *ngFor=\"let tab of visibleTabs()\" [label]=\"tab.title | translate \">\n <ng-template matTabContent>\n <div class=\"adf-form-tab-content\">\n <ng-template *ngTemplateOutlet=\"render; context: { fieldToRender: tab.fields }\" />\n </div>\n </ng-template>\n </mat-tab>\n </mat-tab-group>\n </div>\n </div>\n\n <div *ngIf=\"!formDefinition.hasTabs() && formDefinition.hasFields()\">\n <ng-template *ngTemplateOutlet=\"render; context: { fieldToRender: formDefinition.fields }\" />\n </div>\n</div>\n\n<ng-template #render let-fieldToRender=\"fieldToRender\">\n <div *ngFor=\"let currentRootElement of fieldToRender\">\n <div *ngIf=\"currentRootElement.type === 'section'\" [id]=\"'field-' + currentRootElement?.id + '-container'\" class=\"adf-container-widget\">\n <adf-form-section [field]=\"currentRootElement\" />\n </div>\n\n <div *ngIf=\"currentRootElement.type === 'container' || currentRootElement.type === 'group'\"\n [id]=\"'field-' + currentRootElement?.id + '-container'\"\n class=\"adf-container-widget\"\n [hidden]=\"!currentRootElement?.isVisible\">\n <adf-header-widget [element]=\"currentRootElement\" />\n <div *ngIf=\"currentRootElement?.form?.enableFixedSpace; else fixingTemplate\">\n <div class=\"adf-grid-list\"\n [ngStyle]=\"{ 'grid-template-columns': 'repeat(' + getNumberOfColumns(currentRootElement) + ', 1fr)' }\"\n *ngIf=\"currentRootElement?.isExpanded\">\n <div class=\"adf-grid-list-item\"\n *ngFor=\"let field of getContainerFields(currentRootElement)\"\n [ngStyle]=\"{ 'grid-area': 'auto / auto / span ' + (field?.rowspan || 1) + ' / span ' + (field?.colspan || 1) }\">\n <adf-form-field *ngIf=\"field\" [field]=\"field\" />\n </div>\n </div>\n </div>\n\n <ng-template #fixingTemplate>\n <section class=\"adf-grid-list-column-view\" *ngIf=\"currentRootElement?.isExpanded\">\n <div class=\"adf-grid-list-single-column\"\n *ngFor=\"let column of currentRootElement?.columns\"\n [style.width.%]=\"getColumnWidth(currentRootElement)\"\n >\n <ng-container *ngFor=\"let field of column?.fields\">\n <ng-container *ngIf=\"field.type === 'section'; else formField\">\n <adf-form-section [field]=\"field\"/>\n </ng-container>\n <ng-template #formField>\n <div class=\"adf-grid-list-column-view-item\">\n <adf-form-field [field]=\"field\"/>\n </div>\n </ng-template>\n </ng-container>\n </div>\n </section>\n </ng-template>\n\n <ng-template #columnViewItem let-column=\"column\">\n <div class=\"adf-grid-list-column-view-item\" *ngFor=\"let field of column?.fields\">\n <adf-form-field *ngIf=\"field\" [field]=\"field\" />\n </div>\n </ng-template>\n </div>\n\n @if (currentRootElement.type === 'repeatable-section') {\n <div \n [id]=\"'field-' + currentRootElement?.id + '-container'\"\n class=\"adf-container-widget\"\n [hidden]=\"!currentRootElement?.isVisible\"\n >\n <adf-repeat-widget [element]=\"currentRootElement\" [isEditor]=\"false\">\n @for (row of currentRootElement.field.rows; track row.id; let rowIndex = $index) {\n @let hasMultipleRows = currentRootElement.field.rows.length > 1;\n <div \n class=\"adf-grid-list-container\"\n [class.adf-grid-list-container-multiple]=\"hasMultipleRows\"\n [class.adf-grid-list-container-disabled]=\"currentRootElement.field.readOnly\"\n > \n <div class=\"adf-grid-list-row\">\n <span class=\"adf-grid-list-row-label\">{{ 'FORM.FORM_RENDERER.ROW_LABEL' | translate: {number: rowIndex + 1} }}</span>\n\n @let shouldDisplayRemoveRowButton = !currentRootElement.field.rows[rowIndex].isInitial || (currentRootElement.field.rows[rowIndex].isInitial && currentRootElement.field.params.allowInitialRowsDelete);\n @if (shouldDisplayRemoveRowButton) {\n <button \n mat-icon-button\n class=\"adf-grid-list-row-remove-button\"\n [disabled]=\"currentRootElement.field.readOnly\"\n [matTooltip]=\"'FORM.FORM_RENDERER.DELETE_ROW' | translate\"\n (click)=\"displayDialogToRemoveRow(currentRootElement.field, rowIndex)\"\n >\n <mat-icon>close</mat-icon>\n </button>\n }\n </div>\n <section class=\"adf-grid-list-column-view\">\n @for (column of row.columns; track $index) {\n <div \n class=\"adf-grid-list-single-column\"\n [style.width.%]=\"getColumnWidth(currentRootElement)\"\n >\n @for (field of column?.fields; track $index) {\n @if (field.type === 'section') {\n <adf-form-section [field]=\"field\"/>\n } @else {\n <div class=\"adf-grid-list-column-view-item\">\n <adf-form-field [field]=\"field\"/>\n </div>\n }\n }\n </div>\n }\n </section>\n </div>\n }\n </adf-repeat-widget>\n </div>\n }\n\n <div *ngIf=\"currentRootElement.type === 'dynamic-table'\" class=\"adf-container-widget\">\n <adf-form-field [field]=\"currentRootElement\" />\n </div>\n\n <div class=\"adf-container-widget\"\n *ngIf=\"currentRootElement.type === 'readonly' && currentRootElement.field.params.field.type === 'dynamic-table'\">\n <adf-form-field [field]=\"currentRootElement.field\"/>\n </div>\n </div>\n</ng-template>\n", styles: [".adf-hidden{display:none}.adf-field-list{padding:0;list-style-type:none;width:100%;height:100%}.adf-form-renderer .mat-mdc-form-field-infix{width:auto}.alfresco-tabs-widget{width:100%}.alfresco-tabs-widget .adf-form-tab-content{margin-top:1em}.alfresco-tabs-widget .adf-form-tab-group{width:100%}.alfresco-tabs-widget .mat-mdc-tab-body{margin-bottom:8em}@media (max-width: 959.9px){.alfresco-tabs-widget .mat-mdc-tab-body{margin-bottom:0}}.alfresco-tabs-widget .mat-mdc-tab-header{z-index:2;margin:0;background-color:#fff;position:absolute;width:98%;margin-left:0!important;margin-right:10px!important;top:0}.alfresco-tabs-widget .mat-mdc-tab-body-wrapper{padding-top:5%}.mat-mdc-card-content:first-child{padding-top:1em}.adf-container-widget .adf-grid-list{display:grid}.adf-container-widget .adf-grid-list-column-view{display:flex;margin-right:-1%;width:100%;gap:8px}@media (max-width: 959.9px){.adf-container-widget .adf-grid-list-column-view{display:flow}}.adf-container-widget .adf-grid-list-column-view-item{width:100%;box-sizing:border-box}.adf-container-widget .adf-grid-list-column-view .adf-radio-buttons-widget{padding-left:12px}.adf-container-widget .adf-grid-list-single-column{display:flex;flex-direction:column;flex:1 1 auto}.adf-container-widget .adf-grid-list-item{box-sizing:border-box;padding-left:3px;padding-right:3px}.adf-container-widget .adf-grid-list-row{display:flex;flex-direction:row;align-items:center;justify-content:space-between}.adf-container-widget .adf-grid-list-row-remove-button{padding:0;width:30px;height:30px;display:flex;align-items:center;justify-content:center}.adf-container-widget .adf-grid-list-row-remove-button .mat-icon{display:flex;justify-content:center;align-items:center;font-size:18px}.adf-container-widget .adf-grid-list-container{padding:0 15px}.adf-container-widget .adf-grid-list-container-multiple{border-bottom:1px solid rgba(0,0,0,.54);margin-bottom:25px}.adf-container-widget .adf-grid-list-container-disabled.adf-grid-list-container-multiple{border-bottom:1px solid var(--mdc-text-button-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.adf-container-widget .adf-grid-list-container-disabled .adf-grid-list-row-label{color:var(--mdc-text-button-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent));cursor:default}@media (max-width: 959.9px){.adf-container-widget .adf-grid-list-item{flex:1 0 100%}.adf-container-widget .adf-grid-list--column-view{flex-direction:column}.adf-container-widget .adf-grid-list-single-column{display:block;width:90%!important}.adf-container-widget .adf-grid-list-column-view-item{flex:1 0 auto}}.adf-container-widget mat-input-placeholder{top:1.8em}.adf-container-widget .mat-focused{width:100%}.adf-container-widget .mat-focused .mdc-text-field--focused label{color:var(--theme-primary-color)}.adf-container-widget .mat-focused label{transition:transform .15s linear;background-color:.3s cubic-bezier(.55,0,.55,.2)}.adf-container-widget .mat-focused .mat-mdc-form-field-text-prefix{color:var(--theme-primary-color)}.adf-container-widget .mat-grid-tile{overflow:visible;width:80%}.adf-container-widget adf-form-field,.adf-container-widget mat-form-field{width:100%}.adf-form-container{max-width:100%;max-height:100%}.adf-form-container .mat-mdc-card{padding:16px 24px;overflow:hidden}.adf-form-container .mat-mdc-tab-header{position:fixed;z-index:1000}.adf-form-container .mat-mdc-card-header-text{margin:0}.adf-form-container .mat-mdc-card-content{overflow:hidden;padding-top:0}.adf-form-container mat-tab-label-text{font-size:var(--theme-subheading-2-font-size);line-height:var(--theme-headline-line-height);letter-spacing:-.4px;text-align:left;color:#0000008a;text-transform:uppercase}.adf-form-container .mdc-tab-indicator .mdc-tab-indicator__content--underline{border-top-width:4px}.adf-form-container .mat-mdc-text-field-wrapper{margin:0 12px 0 0}.adf-form-title{font-size:var(--theme-title-font-size);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.adf-form-reload-button{position:absolute;right:12px;top:30px}.adf-form-validation-button{position:absolute;right:50px;top:39px;color:var(--theme-accent-color)}.adf-form-validation-button .adf-invalid-color{color:var(--theme-warn-color)}.adf-form-hide-button{display:none}.adf-task-title{text-align:center}.adf-form-mat-card-actions{padding-bottom:25px;padding-right:25px}.adf-form-mat-card-actions .mat-mdc-button{height:36px;border-radius:5px;width:auto;padding:0 16px;margin:0 8px;white-space:nowrap}.adf-form-mat-card-actions .mdc-button__label{min-width:58px}.adf-left-label-input-container{display:flex}.adf-left-label-input-container div:nth-child(2){flex:1}.adf-left-label-input-container .mat-mdc-floating-label{top:auto;bottom:0}.adf-left-label{line-height:64px;margin-right:15px}.adf-error-messages-container{min-height:35px}.adf-error-messages-container-visible{visibility:visible}.adf-error-messages-container-hidden{visibility:hidden}form-field{width:100%}form-field .mat-mdc-input-element{font-size:var(--theme-body-2-font-size);padding-top:8px;line-height:normal}\n"] }]
25373
25400
  }], ctorParameters: () => [{ type: undefined, decorators: [{
25374
25401
  type: Optional
25375
25402
  }, {