@bloomreach/react-banana-ui 1.21.1 → 1.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bloomreach-react-banana-ui.es.js +7411 -6438
- package/dist/bloomreach-react-banana-ui.es.js.map +1 -1
- package/dist/bloomreach-react-banana-ui.umd.js +19 -19
- package/dist/bloomreach-react-banana-ui.umd.js.map +1 -1
- package/dist/components/index.d.ts +1 -0
- package/dist/components/inputs/radio-group/radio-group.types.d.ts +1 -1
- package/dist/components/surfaces/accordion/accordion/accordion.d.ts +32 -0
- package/dist/components/surfaces/accordion/accordion/accordion.types.d.ts +15 -0
- package/dist/components/surfaces/accordion/accordion/index.d.ts +2 -0
- package/dist/components/surfaces/accordion/accordion-content/accordion-content.d.ts +31 -0
- package/dist/components/surfaces/accordion/accordion-content/accordion-content.types.d.ts +16 -0
- package/dist/components/surfaces/accordion/accordion-content/index.d.ts +2 -0
- package/dist/components/surfaces/accordion/accordion-filter-header/accordion-filter-header.d.ts +33 -0
- package/dist/components/surfaces/accordion/accordion-filter-header/accordion-filter-header.types.d.ts +15 -0
- package/dist/components/surfaces/accordion/accordion-filter-header/index.d.ts +2 -0
- package/dist/components/surfaces/accordion/accordion-group/accordion-group-context.d.ts +5 -0
- package/dist/components/surfaces/accordion/accordion-group/accordion-group.d.ts +4 -0
- package/dist/components/surfaces/accordion/accordion-group/accordion-group.types.d.ts +60 -0
- package/dist/components/surfaces/accordion/accordion-group/index.d.ts +2 -0
- package/dist/components/surfaces/accordion/accordion-header/accordion-header.d.ts +31 -0
- package/dist/components/surfaces/accordion/accordion-header/accordion-header.types.d.ts +16 -0
- package/dist/components/surfaces/accordion/accordion-header/index.d.ts +2 -0
- package/dist/components/surfaces/accordion/accordion.qa.stories.d.ts +5 -0
- package/dist/components/surfaces/accordion/accordion.stories.d.ts +14 -0
- package/dist/components/surfaces/accordion/index.d.ts +5 -0
- package/dist/components/surfaces/index.d.ts +1 -0
- package/dist/style.css +1 -1
- package/package.json +2 -1
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import type { AccordionProps } from './accordion.types';
|
|
3
|
+
import './accordion.scss';
|
|
4
|
+
/**
|
|
5
|
+
* The `Accordion` component represents an individual accordion item.
|
|
6
|
+
* It contains `AccordionHeader` and `AccordionContent` components to define the
|
|
7
|
+
* header and the content of the accordion.
|
|
8
|
+
*
|
|
9
|
+
* ### Usage
|
|
10
|
+
* Use the `Accordion` component to create a collapsible section with a header and content.
|
|
11
|
+
*
|
|
12
|
+
* ```tsx
|
|
13
|
+
* import { AccordionGroup, Accordion, AccordionHeader, AccordionContent } from '@bloomreach/react-banana-ui';
|
|
14
|
+
*
|
|
15
|
+
* export default function MyCustomComponent() {
|
|
16
|
+
* return (
|
|
17
|
+
* <AccordionGroup>
|
|
18
|
+
* <Accordion value="banana-facts">
|
|
19
|
+
* <AccordionHeader>Banana facts</AccordionHeader>
|
|
20
|
+
* <AccordionContent>
|
|
21
|
+
* Bananas are a great source of potassium and can help replenish electrolytes after exercise.
|
|
22
|
+
* </AccordionContent>
|
|
23
|
+
* </Accordion>
|
|
24
|
+
* <Accordion>...</Accordion>
|
|
25
|
+
* <Accordion>...</Accordion>
|
|
26
|
+
* </AccordionGroup>
|
|
27
|
+
* );
|
|
28
|
+
* }
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
declare const Accordion: import("react").ForwardRefExoticComponent<AccordionProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
32
|
+
export default Accordion;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
export interface AccordionProps {
|
|
3
|
+
/**
|
|
4
|
+
* Custom class name for the container of the component.
|
|
5
|
+
*/
|
|
6
|
+
className?: string;
|
|
7
|
+
/**
|
|
8
|
+
* The content of the component.
|
|
9
|
+
*/
|
|
10
|
+
children?: ReactNode;
|
|
11
|
+
/**
|
|
12
|
+
* A unique value for the item.
|
|
13
|
+
*/
|
|
14
|
+
value?: string;
|
|
15
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import type { AccordionContentProps } from './accordion-content.types';
|
|
3
|
+
import './accordion-content.scss';
|
|
4
|
+
/**
|
|
5
|
+
* The `AccordionContent` component contains the content that is revealed or hidden when the `AccordionHeader`
|
|
6
|
+
* is clicked. It is typically used to display detailed information related to the header.
|
|
7
|
+
*
|
|
8
|
+
* ### Usage
|
|
9
|
+
* Place the `AccordionContent` component inside an `Accordion` component to define the content of the accordion.
|
|
10
|
+
*
|
|
11
|
+
* ```tsx
|
|
12
|
+
* import { AccordionGroup, Accordion, AccordionHeader, AccordionContent } from '@bloomreach/react-banana-ui';
|
|
13
|
+
*
|
|
14
|
+
* export default function MyCustomComponent() {
|
|
15
|
+
* return (
|
|
16
|
+
* <AccordionGroup>
|
|
17
|
+
* <Accordion value="banana-facts">
|
|
18
|
+
* <AccordionHeader>Banana facts</AccordionHeader>
|
|
19
|
+
* <AccordionContent>
|
|
20
|
+
* Bananas are a great source of potassium and can help replenish electrolytes after exercise.
|
|
21
|
+
* </AccordionContent>
|
|
22
|
+
* </Accordion>
|
|
23
|
+
* <Accordion>...</Accordion>
|
|
24
|
+
* <Accordion>...</Accordion>
|
|
25
|
+
* </AccordionGroup>
|
|
26
|
+
* );
|
|
27
|
+
* }
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
declare const AccordionContent: import("react").ForwardRefExoticComponent<AccordionContentProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
31
|
+
export default AccordionContent;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
export interface AccordionContentProps {
|
|
3
|
+
/**
|
|
4
|
+
* Custom class name for the container of the component.
|
|
5
|
+
*/
|
|
6
|
+
className?: string;
|
|
7
|
+
/**
|
|
8
|
+
* The content of the component.
|
|
9
|
+
*/
|
|
10
|
+
children?: ReactNode;
|
|
11
|
+
/**
|
|
12
|
+
* Used to force mounting when more control is needed.
|
|
13
|
+
* @default false
|
|
14
|
+
*/
|
|
15
|
+
keepMounted?: boolean;
|
|
16
|
+
}
|
package/dist/components/surfaces/accordion/accordion-filter-header/accordion-filter-header.d.ts
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import type { AccordionFilterHeaderProps } from './accordion-filter-header.types';
|
|
3
|
+
import './accordion-filter-header.scss';
|
|
4
|
+
/**
|
|
5
|
+
* The `AccordionFilterHeader` component is a wrapper around `AccordionHeader`.
|
|
6
|
+
* It has added functionality to support `Reset` button. Ideally should only be used with `plain` styling.
|
|
7
|
+
*
|
|
8
|
+
* ### Usage
|
|
9
|
+
* Place the `AccordionFilterHeader` component inside an `Accordion` component to define the header of the accordion.
|
|
10
|
+
*
|
|
11
|
+
* ```tsx
|
|
12
|
+
* import { AccordionGroup, Accordion, AccordionFilterHeader, AccordionContent } from '@bloomreach/react-banana-ui';
|
|
13
|
+
*
|
|
14
|
+
* export default function MyCustomComponent() {
|
|
15
|
+
* return (
|
|
16
|
+
* <AccordionGroup>
|
|
17
|
+
* <Accordion value="banana-facts">
|
|
18
|
+
* <AccordionFilterHeader showReset onResetClick={(e) => handleResetClick(e)}>
|
|
19
|
+
* Banana facts
|
|
20
|
+
* </AccordionFilterHeader>
|
|
21
|
+
* <AccordionContent>
|
|
22
|
+
* Bananas are a great source of potassium and can help replenish electrolytes after exercise.
|
|
23
|
+
* </AccordionContent>
|
|
24
|
+
* </Accordion>
|
|
25
|
+
* <Accordion>...</Accordion>
|
|
26
|
+
* <Accordion>...</Accordion>
|
|
27
|
+
* </AccordionGroup>
|
|
28
|
+
* );
|
|
29
|
+
* }
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
declare const AccordionFilterHeader: import("react").ForwardRefExoticComponent<AccordionFilterHeaderProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
33
|
+
export default AccordionFilterHeader;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { MouseEventHandler } from 'react';
|
|
2
|
+
import type { AccordionHeaderProps } from '../accordion-header';
|
|
3
|
+
export interface AccordionFilterHeaderProps extends AccordionHeaderProps {
|
|
4
|
+
/**
|
|
5
|
+
* If `true`, the reset button will be displayed on the side.
|
|
6
|
+
* @default false
|
|
7
|
+
*/
|
|
8
|
+
showReset?: boolean;
|
|
9
|
+
/**
|
|
10
|
+
* Callback fired when `Reset` button is clicked.
|
|
11
|
+
* When this function is `undefined`, the `Reset` button will not be rendered.
|
|
12
|
+
* Ideally to be used only on `plain` styling.
|
|
13
|
+
*/
|
|
14
|
+
onResetClick?: MouseEventHandler<HTMLButtonElement>;
|
|
15
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import type { AccordionGroupContextProps } from './accordion-group.types';
|
|
3
|
+
declare const AccordionGroupContext: import("react").Context<AccordionGroupContextProps | null>;
|
|
4
|
+
export declare function useAccordionGroupContext(): AccordionGroupContextProps | null;
|
|
5
|
+
export default AccordionGroupContext;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { ForwardedRef, ReactElement, ReactNode } from 'react';
|
|
2
|
+
export type AccordionValue<Multiple> = Multiple extends true ? string[] : string;
|
|
3
|
+
export type AccordionStyling = 'plain' | 'styled';
|
|
4
|
+
export type AccordionGroupProps<Multiple extends boolean> = {
|
|
5
|
+
/**
|
|
6
|
+
* Custom class name for the container of the component.
|
|
7
|
+
*/
|
|
8
|
+
className?: string;
|
|
9
|
+
/**
|
|
10
|
+
* The content of the component.
|
|
11
|
+
*/
|
|
12
|
+
children?: ReactNode;
|
|
13
|
+
/**
|
|
14
|
+
* Determines whether one or multiple items can be opened at the same time.
|
|
15
|
+
* @default 'false'
|
|
16
|
+
*/
|
|
17
|
+
multiple?: Multiple;
|
|
18
|
+
/**
|
|
19
|
+
* The controlled stateful value of the accordion item whose content is expanded.
|
|
20
|
+
*/
|
|
21
|
+
value?: AccordionValue<Multiple>;
|
|
22
|
+
/**
|
|
23
|
+
* The value of the item whose content is expanded when the accordion is initially rendered.
|
|
24
|
+
* Use `defaultValue` if you do not need to control the state of an accordion.
|
|
25
|
+
*/
|
|
26
|
+
defaultValue?: AccordionValue<Multiple>;
|
|
27
|
+
/**
|
|
28
|
+
* The callback that fires when the state of the accordion changes.
|
|
29
|
+
*/
|
|
30
|
+
onValueChange?: (value: AccordionValue<Multiple>) => void;
|
|
31
|
+
/**
|
|
32
|
+
* Whether an accordion item cannot be collapsed after it has been opened.
|
|
33
|
+
* Only applicable for `single` accordion type.
|
|
34
|
+
* @default false
|
|
35
|
+
*/
|
|
36
|
+
nonCollapsible?: boolean;
|
|
37
|
+
/**
|
|
38
|
+
* If `true`, the divider between accordions will be hidden.
|
|
39
|
+
* Only applicable for `plain` accordion styling.
|
|
40
|
+
*/
|
|
41
|
+
disableDivider?: boolean;
|
|
42
|
+
/**
|
|
43
|
+
* Styling of the accordion.
|
|
44
|
+
* @default 'plain'
|
|
45
|
+
*/
|
|
46
|
+
styling?: AccordionStyling;
|
|
47
|
+
};
|
|
48
|
+
export interface AccordionGroupContextProps {
|
|
49
|
+
styling: AccordionStyling;
|
|
50
|
+
disableDivider?: boolean;
|
|
51
|
+
}
|
|
52
|
+
export interface AccordionMetadata {
|
|
53
|
+
ref: React.RefObject<HTMLElement>;
|
|
54
|
+
}
|
|
55
|
+
export interface AccordionGroupComponentType {
|
|
56
|
+
<Multiple extends boolean = false>(props: AccordionGroupProps<Multiple> & {
|
|
57
|
+
ref?: ForwardedRef<HTMLDivElement>;
|
|
58
|
+
}): ReactElement | null;
|
|
59
|
+
displayName?: string | undefined;
|
|
60
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import type { AccordionHeaderProps } from './accordion-header.types';
|
|
3
|
+
import './accordion-header.scss';
|
|
4
|
+
/**
|
|
5
|
+
* The `AccordionHeader` component defines the clickable header of the accordion.
|
|
6
|
+
* When clicked, it toggles the visibility of the `AccordionContent`.
|
|
7
|
+
*
|
|
8
|
+
* ### Usage
|
|
9
|
+
* Place the `AccordionHeader` component inside an `Accordion` component to define the header of the accordion.
|
|
10
|
+
*
|
|
11
|
+
* ```tsx
|
|
12
|
+
* import { AccordionGroup, Accordion, AccordionHeader, AccordionContent } from '@bloomreach/react-banana-ui';
|
|
13
|
+
*
|
|
14
|
+
* export default function MyCustomComponent() {
|
|
15
|
+
* return (
|
|
16
|
+
* <AccordionGroup>
|
|
17
|
+
* <Accordion value="banana-facts">
|
|
18
|
+
* <AccordionHeader>Banana facts</AccordionHeader>
|
|
19
|
+
* <AccordionContent>
|
|
20
|
+
* Bananas are a great source of potassium and can help replenish electrolytes after exercise.
|
|
21
|
+
* </AccordionContent>
|
|
22
|
+
* </Accordion>
|
|
23
|
+
* <Accordion>...</Accordion>
|
|
24
|
+
* <Accordion>...</Accordion>
|
|
25
|
+
* </AccordionGroup>
|
|
26
|
+
* );
|
|
27
|
+
* }
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
declare const AccordionHeader: import("react").ForwardRefExoticComponent<AccordionHeaderProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
31
|
+
export default AccordionHeader;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
export interface AccordionHeaderProps {
|
|
3
|
+
/**
|
|
4
|
+
* Custom class name for the container of the component.
|
|
5
|
+
*/
|
|
6
|
+
className?: string;
|
|
7
|
+
/**
|
|
8
|
+
* The title content of the component.
|
|
9
|
+
*/
|
|
10
|
+
children?: ReactNode;
|
|
11
|
+
/**
|
|
12
|
+
* Description of the accordion.
|
|
13
|
+
* Ideally to be used only on `styled` styling.
|
|
14
|
+
*/
|
|
15
|
+
description?: string;
|
|
16
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Meta, StoryObj } from '@storybook/react';
|
|
2
|
+
import { AccordionGroup, AccordionGroupProps } from './accordion-group';
|
|
3
|
+
declare const meta: Meta<typeof AccordionGroup>;
|
|
4
|
+
export default meta;
|
|
5
|
+
export type Story = StoryObj<typeof AccordionGroup<false>>;
|
|
6
|
+
export declare const Basic: Story;
|
|
7
|
+
export declare const Controlled: Story;
|
|
8
|
+
export declare const Multiple: StoryObj<AccordionGroupProps<true>>;
|
|
9
|
+
export declare const MultipleControlled: StoryObj<AccordionGroupProps<true>>;
|
|
10
|
+
export declare const NonCollapsible: Story;
|
|
11
|
+
export declare const WithoutDivider: Story;
|
|
12
|
+
export declare const KeepMounted: Story;
|
|
13
|
+
export declare const FiltersAndReset: Story;
|
|
14
|
+
export declare const Styled: StoryObj<AccordionGroupProps<true>>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './accordion';
|