Skip to content

Commit e598466

Browse files
authored
Merge pull request #78 from kleros/chore/bug-fixes
Chore/bug fixes
2 parents d0d97b7 + eeba3c4 commit e598466

File tree

8 files changed

+51
-10
lines changed

8 files changed

+51
-10
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@kleros/ui-components-library",
3-
"version": "3.2.3",
3+
"version": "3.3.4",
44
"description": "UI components library which implements the Kleros design system.",
55
"source": "./src/lib/index.ts",
66
"main": "./dist/index.js",

src/lib/accordion/custom.tsx

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import React, { ReactNode, useState } from "react";
22
import AccordionItem from "./accordion-item";
3-
import { cn } from "../../utils";
3+
import { cn, isUndefined } from "../../utils";
44

55
interface AccordionItem {
66
title: ReactNode;
@@ -10,14 +10,18 @@ interface AccordionItem {
1010
interface AccordionProps {
1111
items: AccordionItem[];
1212
className?: string;
13+
defaultExpanded?: number;
1314
}
1415

1516
const CustomAccordion: React.FC<AccordionProps> = ({
1617
items,
1718
className,
19+
defaultExpanded,
1820
...props
1921
}) => {
20-
const [expanded, setExpanded] = useState(-1);
22+
const [expanded, setExpanded] = useState(
23+
!isUndefined(defaultExpanded) ? defaultExpanded : -1,
24+
);
2125
return (
2226
<div
2327
className={cn("box-border flex w-[1000px] flex-col", className)}

src/lib/accordion/index.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import React, { ReactNode, useState } from "react";
22
import AccordionItem from "./accordion-item";
3-
import { cn } from "../../utils";
3+
import { cn, isUndefined } from "../../utils";
44

55
interface AccordionItem {
66
title: string;
@@ -28,7 +28,9 @@ const Accordion: React.FC<AccordionProps> = ({
2828
className,
2929
...props
3030
}) => {
31-
const [expanded, setExpanded] = useState(defaultExpanded ?? -1);
31+
const [expanded, setExpanded] = useState(
32+
!isUndefined(defaultExpanded) ? defaultExpanded : -1,
33+
);
3234
return (
3335
<div
3436
className={cn("box-border flex w-[1000px] flex-col", className)}

src/lib/draggable-list/index.tsx

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,10 @@ interface IDraggableList
3030
| "onSelectionChange"
3131
> {
3232
items: ListItem[];
33+
/** Flag to disable drag operations in list. */
34+
dragDisabled?: boolean;
35+
/** Flag to disable delete operations in list. */
36+
deletionDisabled?: boolean;
3337
/** Returns the updated list after a delete or move operation. */
3438
updateCallback?: (updatedItems: ListItem[]) => void;
3539
/** Returns the selected item. */
@@ -45,6 +49,8 @@ function DraggableList({
4549
selectionCallback,
4650
className,
4751
renderDragPreview,
52+
dragDisabled = false,
53+
deletionDisabled = false,
4854
...props
4955
}: Readonly<IDraggableList>) {
5056
const list = useListData({
@@ -76,7 +82,7 @@ function DraggableList({
7682
aria-label={props["aria-label"] ?? "Reorderable list"}
7783
selectionMode="single"
7884
items={list.items}
79-
dragAndDropHooks={dragAndDropHooks}
85+
dragAndDropHooks={dragDisabled ? undefined : dragAndDropHooks}
8086
onSelectionChange={(keys) => {
8187
const keyArr = Array.from(keys);
8288
const selectedItem = list.getItem(keyArr[0]);
@@ -106,11 +112,13 @@ function DraggableList({
106112
>
107113
{({ isHovered }) => (
108114
<>
109-
<DragAndDropIcon className="size-4 cursor-grab" />
115+
{dragDisabled ? null : (
116+
<DragAndDropIcon className="size-4 cursor-grab" />
117+
)}
110118
<span className="text-klerosUIComponentsPrimaryText flex-1 text-base">
111119
{item.name}
112120
</span>
113-
{isHovered ? (
121+
{isHovered && !deletionDisabled ? (
114122
<Button
115123
className={"cursor-pointer hover:scale-105"}
116124
onPress={() => {

src/lib/form/bignumber-field/index.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ interface BigNumberFieldComponentProps extends BigNumberFieldProps {
1515
message?: string;
1616
Icon?: React.FC<React.SVGAttributes<SVGElement>>;
1717
className?: string;
18+
/** The name of the input element, used when submitting an HTML form.*/
19+
name?: string;
1820
}
1921

2022
/** A number field that handles big numbers.
@@ -29,6 +31,7 @@ function BigNumberField({
2931
isDisabled,
3032
id: propId,
3133
isReadOnly,
34+
name,
3235
...props
3336
}: Readonly<BigNumberFieldComponentProps>) {
3437
// Generate an ID if one is not provided
@@ -65,6 +68,7 @@ function BigNumberField({
6568
<>
6669
<Input
6770
{...inputProps}
71+
name={name}
6872
className={cn(
6973
"hover-short-transition bg-klerosUIComponentsWhiteBackground size-full",
7074
"rounded-base border-klerosUIComponentsStroke text-klerosUIComponentsPrimaryText border text-base",

src/lib/form/bignumber-field/useBigNumberField.tsx

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -566,7 +566,6 @@ export function useBigNumberField(props: BigNumberFieldProps) {
566566
type: "button" as const,
567567
"aria-label": "Increment",
568568
"aria-controls": id,
569-
slot: "increment",
570569
isDisabled: !canIncrement(),
571570
onPress: increment,
572571
});
@@ -576,7 +575,6 @@ export function useBigNumberField(props: BigNumberFieldProps) {
576575
type: "button" as const,
577576
"aria-label": "Decrement",
578577
"aria-controls": id,
579-
slot: "decrement",
580578
isDisabled: !canDecrement(),
581579
onPress: decrement,
582580
});

src/lib/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ export { default as DisplaySmall } from "./display/small";
1515
export { default as DropdownSelect } from "./dropdown/select";
1616
export { default as DropdownCascader } from "./dropdown/cascader";
1717

18+
export { default as Form } from "./form/index";
1819
export { default as NumberField } from "./form/number-field";
1920
export { default as BigNumberField } from "./form/bignumber-field";
2021
export { default as TextField } from "./form/text-field";

src/stories/draggable-list.stories.tsx

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,14 @@ const meta = {
99
component: DraggableList,
1010
title: "Draggable List",
1111
tags: ["autodocs"],
12+
argTypes: {
13+
dragDisabled: {
14+
control: "boolean",
15+
},
16+
deletionDisabled: {
17+
control: "boolean",
18+
},
19+
},
1220
} satisfies Meta<typeof DraggableList>;
1321

1422
export default meta;
@@ -30,6 +38,22 @@ export const Default: Story = {
3038
},
3139
};
3240

41+
/** Drag operations can be disabled with `dragDisabled ` */
42+
export const DragDisabled: Story = {
43+
args: {
44+
...Default.args,
45+
dragDisabled: true,
46+
},
47+
};
48+
49+
/** Delete operation can be disabled with `deletionDisabled ` */
50+
export const DeletionDisabled: Story = {
51+
args: {
52+
...Default.args,
53+
deletionDisabled: true,
54+
},
55+
};
56+
3357
export const CustomDragPreview: Story = {
3458
args: {
3559
themeUI: "light",

0 commit comments

Comments
 (0)