From 05fc770feed6e4f15c434e49326fb80f91a69967 Mon Sep 17 00:00:00 2001 From: Harman-singh-waraich Date: Mon, 5 May 2025 17:03:59 +0530 Subject: [PATCH 1/3] chore: bug-fixes --- src/lib/accordion/custom.tsx | 8 ++++++-- src/lib/accordion/index.tsx | 6 ++++-- src/lib/form/bignumber-field/index.tsx | 4 ++++ src/lib/form/bignumber-field/useBigNumberField.tsx | 2 -- src/lib/index.ts | 1 + 5 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/lib/accordion/custom.tsx b/src/lib/accordion/custom.tsx index 6cd1bd2..3a5d75c 100644 --- a/src/lib/accordion/custom.tsx +++ b/src/lib/accordion/custom.tsx @@ -1,6 +1,6 @@ import React, { ReactNode, useState } from "react"; import AccordionItem from "./accordion-item"; -import { cn } from "../../utils"; +import { cn, isUndefined } from "../../utils"; interface AccordionItem { title: ReactNode; @@ -10,14 +10,18 @@ interface AccordionItem { interface AccordionProps { items: AccordionItem[]; className?: string; + defaultExpanded?: number; } const CustomAccordion: React.FC = ({ items, className, + defaultExpanded, ...props }) => { - const [expanded, setExpanded] = useState(-1); + const [expanded, setExpanded] = useState( + !isUndefined(defaultExpanded) ? defaultExpanded : -1, + ); return (
= ({ className, ...props }) => { - const [expanded, setExpanded] = useState(defaultExpanded ?? -1); + const [expanded, setExpanded] = useState( + !isUndefined(defaultExpanded) ? defaultExpanded : -1, + ); return (
>; className?: string; + /** The name of the input element, used when submitting an HTML form.*/ + name?: string; } /** A number field that handles big numbers. @@ -29,6 +31,7 @@ function BigNumberField({ isDisabled, id: propId, isReadOnly, + name, ...props }: Readonly) { // Generate an ID if one is not provided @@ -65,6 +68,7 @@ function BigNumberField({ <> Date: Mon, 5 May 2025 17:19:06 +0530 Subject: [PATCH 2/3] feat(draggable-list): add-flags-to-disable-drag-and-deletion --- src/lib/draggable-list/index.tsx | 14 +++++++++++--- src/stories/draggable-list.stories.tsx | 24 ++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 3 deletions(-) diff --git a/src/lib/draggable-list/index.tsx b/src/lib/draggable-list/index.tsx index b9bdb92..5d4b9a4 100644 --- a/src/lib/draggable-list/index.tsx +++ b/src/lib/draggable-list/index.tsx @@ -30,6 +30,10 @@ interface IDraggableList | "onSelectionChange" > { items: ListItem[]; + /** Flag to disable drag operations in list. */ + dragDisabled?: boolean; + /** Flag to disable delete operations in list. */ + deletionDisabled?: boolean; /** Returns the updated list after a delete or move operation. */ updateCallback?: (updatedItems: ListItem[]) => void; /** Returns the selected item. */ @@ -45,6 +49,8 @@ function DraggableList({ selectionCallback, className, renderDragPreview, + dragDisabled = false, + deletionDisabled = false, ...props }: Readonly) { const list = useListData({ @@ -76,7 +82,7 @@ function DraggableList({ aria-label={props["aria-label"] ?? "Reorderable list"} selectionMode="single" items={list.items} - dragAndDropHooks={dragAndDropHooks} + dragAndDropHooks={dragDisabled ? undefined : dragAndDropHooks} onSelectionChange={(keys) => { const keyArr = Array.from(keys); const selectedItem = list.getItem(keyArr[0]); @@ -106,11 +112,13 @@ function DraggableList({ > {({ isHovered }) => ( <> - + {dragDisabled ? null : ( + + )} {item.name} - {isHovered ? ( + {isHovered && !deletionDisabled ? (