diff --git a/lerna.json b/lerna.json index 621b01195..e50e7114c 100644 --- a/lerna.json +++ b/lerna.json @@ -2,7 +2,7 @@ "packages": ["packages/*"], "npmClient": "yarn", "useWorkspaces": true, - "version": "0.11.9", + "version": "0.13.0-alpha.1", "command": { "version": { "message": "chore(release): publish %s" diff --git a/packages/apsara-icons/package.json b/packages/apsara-icons/package.json index 5e715f4bb..395f80b76 100644 --- a/packages/apsara-icons/package.json +++ b/packages/apsara-icons/package.json @@ -1,6 +1,6 @@ { "name": "@goto-company/icons", - "version": "0.11.9", + "version": "0.13.0-alpha.1", "description": "Apsara icons", "scripts": { "build": "node scripts/build.js", diff --git a/packages/apsara-ui/package.json b/packages/apsara-ui/package.json index 7ca5002f7..0bb4272c6 100644 --- a/packages/apsara-ui/package.json +++ b/packages/apsara-ui/package.json @@ -1,6 +1,6 @@ { "name": "@goto-company/apsara", - "version": "0.11.9", + "version": "0.13.0-alpha.1", "description": "A list of base components for apsara", "author": "Praveen Yadav ", "license": "Apache-2.0", diff --git a/packages/apsara-ui/src/DynamicList/DynamicList.stories.tsx b/packages/apsara-ui/src/DynamicList/DynamicList.stories.tsx index f93894221..dc1c6626f 100644 --- a/packages/apsara-ui/src/DynamicList/DynamicList.stories.tsx +++ b/packages/apsara-ui/src/DynamicList/DynamicList.stories.tsx @@ -1,4 +1,4 @@ -import React, { FC, useEffect } from "react"; +import React, { FC } from "react"; import DynamicList from "./index"; import FormBuilder from "../FormBuilder"; import Button from "../Button"; @@ -23,9 +23,7 @@ export const Form: FC = () => { const meta = { name: ["policies"], - disabled: (index: number) => { - return index === 0 || index === 2; - }, + disabled: () => true, fields: [ { key: "account_type", @@ -72,21 +70,13 @@ export const Form: FC = () => { ], }; - const [updateDisable, setUpdateDisable] = React.useState(false); - - useEffect(() => { - setTimeout(() => { - setUpdateDisable(true); - }, 3000); - }, []); - const DynamicListContent = ({ form, meta }: any) => { return (
console.log("Remove clicked") }} addBtnText="Add another role" />
diff --git a/packages/apsara-ui/src/DynamicList/DynamicList.styles.tsx b/packages/apsara-ui/src/DynamicList/DynamicList.styles.tsx index 5e99fc56f..fe84a2d65 100644 --- a/packages/apsara-ui/src/DynamicList/DynamicList.styles.tsx +++ b/packages/apsara-ui/src/DynamicList/DynamicList.styles.tsx @@ -28,8 +28,15 @@ export const DynamicListContainer = styled.div` } .form-dynamic-list__btn-remove { + background: none; + border: none; + padding: 0; + display: inline-flex; color: red; margin-left: 20px; ${baseButtonStyles} + :disabled { + opacity: 0.6; + } } `; diff --git a/packages/apsara-ui/src/DynamicList/index.tsx b/packages/apsara-ui/src/DynamicList/index.tsx index 244a76e94..bf94adf8d 100644 --- a/packages/apsara-ui/src/DynamicList/index.tsx +++ b/packages/apsara-ui/src/DynamicList/index.tsx @@ -6,6 +6,15 @@ import { List } from "rc-field-form"; import { Field, getFormListItemFields } from "./helper"; import { DynamicListContainer } from "./DynamicList.styles"; +interface RemoveBtnOnClick { + event?: React.MouseEvent; + index?: number; +} + +type RemoveBtnProps = Omit, "onClick"> & { + onClick?: (props?: RemoveBtnOnClick) => void; +}; + interface FormItemDynamicListProps { form: any; meta: any; @@ -14,6 +23,7 @@ interface FormItemDynamicListProps { add: () => void; addBtnText: string; addBtnProps?: ButtonHTMLAttributes; + removeBtnProps?: RemoveBtnProps; } interface DynamicListProps { @@ -21,6 +31,7 @@ interface DynamicListProps { meta: any; addBtnText?: string; addBtnProps?: ButtonHTMLAttributes; + removeBtnProps?: RemoveBtnProps; } const FormItemDynamicList = ({ @@ -31,6 +42,7 @@ const FormItemDynamicList = ({ formListfields, addBtnText, addBtnProps, + removeBtnProps, }: FormItemDynamicListProps) => { // ? We need to do this because we can't set value and initialValue for form.list items from config useEffect(() => { @@ -69,25 +81,42 @@ const FormItemDynamicList = ({ return (
- !isDisabled && remove(field.name)} - /> + disabled={isDisabled || removeBtnProps?.disabled} + {...removeBtnProps} + onClick={(e) => { + if (!isDisabled && !removeBtnProps?.disabled) { + remove(field.name); + if (removeBtnProps?.onClick) { + removeBtnProps.onClick({ event: e, index }); + } + } + }} + > + +
); })}