diff --git a/docs/styles.md b/docs/styles.md
index 6ad63ba3..782edea2 100644
--- a/docs/styles.md
+++ b/docs/styles.md
@@ -191,11 +191,12 @@ Variables for customizing the Toggler Card component:
Variables for the Array Base input component:
-| Variable | Default Value | Description |
-| :--------------------------------------------- | :------------: | :---------------------------------------------- |
-| `--df-array-base-items-primitive-min-width` | `100%` | Minimum width for primitive array items |
-| `--df-array-base-item-prefix-margin` | `-8px 0px 8px` | Margin for the item prefix (top, right, bottom) |
-| `--df-array-base-add-button-right-margin-left` | `4px` | Left margin for the "Add" button on the right |
+| Variable | Default Value | Description |
+| :----------------------------------------------------- | :------------: | :----------------------------------------------------------------------- |
+| `--df-array-base-items-primitive-min-width` | `100%` | Minimum width for primitive array items |
+| `--df-array-base-item-prefix-margin` | `-8px 0px 8px` | Margin for the item prefix (top, right, bottom) |
+| `--df-array-base-add-button-right-margin-left` | `4px` | Left margin for the "Add" button on the right |
+| `--df-array-base-add-button-right-error-margin-bottom` | `18px` | Bottom margin for the "Add" button on the right for last item error case |
---
diff --git a/src/lib/kit/components/Inputs/ArrayBase/ArrayBase.scss b/src/lib/kit/components/Inputs/ArrayBase/ArrayBase.scss
index 1fc4f8bd..a968649a 100644
--- a/src/lib/kit/components/Inputs/ArrayBase/ArrayBase.scss
+++ b/src/lib/kit/components/Inputs/ArrayBase/ArrayBase.scss
@@ -36,4 +36,14 @@
margin-left: var(--df-array-base-add-button-right-margin-left, var(--g-spacing-1));
}
}
+
+ &_add-button-right {
+ > div:last-child {
+ transition: margin-bottom 0.2s ease-in-out;
+ }
+ }
+
+ &_add-button-right_error {
+ margin-bottom: var(--df-array-base-add-button-right-error-margin-bottom, 18px);
+ }
}
diff --git a/src/lib/kit/components/Inputs/ArrayBase/ArrayBase.tsx b/src/lib/kit/components/Inputs/ArrayBase/ArrayBase.tsx
index c5668025..d92a0372 100644
--- a/src/lib/kit/components/Inputs/ArrayBase/ArrayBase.tsx
+++ b/src/lib/kit/components/Inputs/ArrayBase/ArrayBase.tsx
@@ -28,7 +28,7 @@ import './ArrayBase.scss';
const b = block('array-base');
-export const ArrayBase: ArrayInput = ({spec, name, arrayInput, input}) => {
+export const ArrayBase: ArrayInput = ({spec, name, arrayInput, input, meta}) => {
const keys = React.useMemo(
() =>
Object.keys(arrayInput.value || {})
@@ -150,6 +150,15 @@ export const ArrayBase: ArrayInput = ({spec, name, arrayInput, input}) => {
],
);
+ const hasErrorInLastItem = React.useMemo(() => {
+ if (keys.length === 0) {
+ return false;
+ }
+ const lastKey = keys[keys.length - 1];
+ const lastItemName = `${name}.<${lastKey}>`;
+ return Boolean(meta.childErrors[lastItemName]);
+ }, [keys, name, meta.childErrors]);
+
if (!itemSpecCorrect) {
return null;
}
@@ -165,7 +174,14 @@ export const ArrayBase: ArrayInput = ({spec, name, arrayInput, input}) => {
>
{items}
-