+
@if (!isEditor) {
- @let shouldDisplayAddRowButton = !element.field.params.newRowsLimit || (element.field.params.newRowsLimit > getAddedRowsCount());
+ @let shouldDisplayAddRowButton = !element.field.params.maxNumberOfRows || (element.field.params.maxNumberOfRows > element.field.rows.length);
@if (shouldDisplayAddRowButton) {
} @else {
- @let rowLimit = element.field.params.initialNumberOfRows + (element.field.params.newRowsLimit ?? 0);
- {{ 'FORM.FIELD.REPEATABLE_SECTION.ROW_LIMIT_REACHED' | translate: { limit: rowLimit } }}
+ {{ 'FORM.FIELD.REPEATABLE_SECTION.ROW_LIMIT_REACHED' | translate: { limit: element.field.params.maxNumberOfRows } }}
}
}
diff --git a/lib/core/src/lib/form/components/widgets/repeat/repeat.widget.scss b/lib/core/src/lib/form/components/widgets/repeat/repeat.widget.scss
index 777d30e7c7..95c2b6382e 100644
--- a/lib/core/src/lib/form/components/widgets/repeat/repeat.widget.scss
+++ b/lib/core/src/lib/form/components/widgets/repeat/repeat.widget.scss
@@ -8,10 +8,6 @@
font-weight: var(--adf-header-font-weight);
color: var(--adf-header-color);
line-height: normal;
-
- &.adf-collapsible {
- cursor: pointer;
- }
}
&-row-action {
@@ -23,3 +19,18 @@
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;
+ }
+
+ &-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;
+ }
+ }
+}
diff --git a/lib/core/src/lib/form/components/widgets/repeat/repeat.widget.spec.ts b/lib/core/src/lib/form/components/widgets/repeat/repeat.widget.spec.ts
index dcbccdfede..1041dde171 100644
--- a/lib/core/src/lib/form/components/widgets/repeat/repeat.widget.spec.ts
+++ b/lib/core/src/lib/form/components/widgets/repeat/repeat.widget.spec.ts
@@ -30,11 +30,11 @@ describe('RepeatWidgetComponent', () => {
/**
*
* @param initialNumberOfRows initial number of rows
- * @param newRowsLimit limit for additional rows
+ * @param maxNumberOfRows maximum number of rows
* @param allowInitialRowsDelete should allow deleting rows
* @returns repeatable section json based on params
*/
- function getFormFieldJson(initialNumberOfRows: number = 2, newRowsLimit?: number, allowInitialRowsDelete: boolean = true) {
+ function getFormFieldJson(initialNumberOfRows: number = 2, maxNumberOfRows?: number, allowInitialRowsDelete: boolean = true) {
return {
id: 'RepeatableSection0tbw2y',
name: 'Repeatable Section',
@@ -43,7 +43,7 @@ describe('RepeatWidgetComponent', () => {
params: {
initialNumberOfRows,
allowInitialRowsDelete,
- newRowsLimit
+ maxNumberOfRows
},
numberOfColumns: 2,
fields: {
@@ -126,7 +126,7 @@ describe('RepeatWidgetComponent', () => {
});
it('should display add row button if limit is defined but not reached', () => {
- component.element = new ContainerModel(new FormFieldModel(new FormModel(), getFormFieldJson(2, 1)));
+ component.element = new ContainerModel(new FormFieldModel(new FormModel(), getFormFieldJson(2, 3)));
fixture.detectChanges();
@@ -135,8 +135,7 @@ describe('RepeatWidgetComponent', () => {
});
it('should NOT display add row button if limit is defined and reached', () => {
- component.element = new ContainerModel(new FormFieldModel(new FormModel(), getFormFieldJson(2, 1)));
- spyOn(component, 'getAddedRowsCount').and.returnValue(1);
+ component.element = new ContainerModel(new FormFieldModel(new FormModel(), getFormFieldJson(2, 2)));
fixture.detectChanges();
@@ -145,8 +144,7 @@ describe('RepeatWidgetComponent', () => {
});
it('should display row limit if limit has been reached', () => {
- component.element = new ContainerModel(new FormFieldModel(new FormModel(), getFormFieldJson(2, 1)));
- spyOn(component, 'getAddedRowsCount').and.returnValue(1);
+ component.element = new ContainerModel(new FormFieldModel(new FormModel(), getFormFieldJson(2, 2)));
fixture.detectChanges();
@@ -165,31 +163,5 @@ describe('RepeatWidgetComponent', () => {
testingUtils.clickByCSS('button.adf-container-widget-row-action');
expect(component.addRow).toHaveBeenCalled();
});
-
- describe('getAddedRowsCount', () => {
- it('should get correct rows count if initial rows are allowed to be deleted', () => {
- component.element = new ContainerModel(new FormFieldModel(new FormModel(), getFormFieldJson(2, 1)));
-
- fixture.detectChanges();
-
- expect(component.getAddedRowsCount()).toBe(0);
-
- component.addRow();
-
- fixture.detectChanges();
-
- expect(component.getAddedRowsCount()).toBe(1);
- });
-
- it('should get correct rows count if initial rows are NOT allowed to be deleted', () => {
- component.element = new ContainerModel(new FormFieldModel(new FormModel(), getFormFieldJson(2, 1, false)));
-
- expect(component.getAddedRowsCount()).toBe(0);
-
- component.addRow();
-
- expect(component.getAddedRowsCount()).toBe(1);
- });
- });
});
});
diff --git a/lib/core/src/lib/form/components/widgets/repeat/repeat.widget.ts b/lib/core/src/lib/form/components/widgets/repeat/repeat.widget.ts
index c30159ce19..c0437d86c0 100644
--- a/lib/core/src/lib/form/components/widgets/repeat/repeat.widget.ts
+++ b/lib/core/src/lib/form/components/widgets/repeat/repeat.widget.ts
@@ -36,10 +36,4 @@ export class RepeatWidgetComponent {
addRow() {
this.element.field.addRow(this.element.json.fields, this.element.form);
}
-
- getAddedRowsCount(): number {
- return this.element.json.params.allowInitialRowsDelete
- ? this.element.field.rows.length - this.element.json.params.initialNumberOfRows
- : this.element.field.rows.filter((row) => !row.isInitial).length;
- }
}
diff --git a/lib/core/src/lib/i18n/en.json b/lib/core/src/lib/i18n/en.json
index 1386fb140d..86d8661b24 100644
--- a/lib/core/src/lib/i18n/en.json
+++ b/lib/core/src/lib/i18n/en.json
@@ -78,6 +78,7 @@
"FORM_RENDERER": {
"NAMELESS_TASK": "Nameless task",
"ROW_LABEL": "Row {{ number }}",
+ "DELETE_ROW": "Delete row",
"REMOVE_ROW_DIALOG": {
"TITLE": "Delete the row",
"MESSAGE": "Are you sure you want to delete this row?",