@axa-fr/design-system-look-and-feel-react 0.2.0-beta.306
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/Accordion/Accordion.d.ts +8 -0
- package/dist/Accordion/Accordion.js +7 -0
- package/dist/Accordion/Accordion.stories.d.ts +8 -0
- package/dist/Accordion/Accordion.stories.js +24 -0
- package/dist/Accordion/AccordionItem.d.ts +6 -0
- package/dist/Accordion/AccordionItem.js +10 -0
- package/dist/Alert/Alert.d.ts +12 -0
- package/dist/Alert/Alert.js +26 -0
- package/dist/Alert/Alert.stories.d.ts +5 -0
- package/dist/Alert/Alert.stories.js +26 -0
- package/dist/Button/Button.d.ts +17 -0
- package/dist/Button/Button.js +15 -0
- package/dist/Button/Button.stories.d.ts +22 -0
- package/dist/Button/Button.stories.js +99 -0
- package/dist/Card/Card.d.ts +6 -0
- package/dist/Card/Card.js +9 -0
- package/dist/Card/Card.stories.d.ts +6 -0
- package/dist/Card/Card.stories.js +40 -0
- package/dist/Card/__tests__/Card.test.d.ts +1 -0
- package/dist/Card/__tests__/Card.test.js +27 -0
- package/dist/Card/index.d.ts +2 -0
- package/dist/Card/index.js +2 -0
- package/dist/Form/Checkbox/Checkbox.d.ts +7 -0
- package/dist/Form/Checkbox/Checkbox.js +15 -0
- package/dist/Form/Checkbox/Checkbox.stories.d.ts +6 -0
- package/dist/Form/Checkbox/Checkbox.stories.js +38 -0
- package/dist/Form/Checkbox/CheckboxSelect.d.ts +15 -0
- package/dist/Form/Checkbox/CheckboxSelect.js +7 -0
- package/dist/Form/Checkbox/CheckboxSelect.stories.d.ts +6 -0
- package/dist/Form/Checkbox/CheckboxSelect.stories.js +55 -0
- package/dist/Form/Checkbox/index.d.ts +2 -0
- package/dist/Form/Checkbox/index.js +2 -0
- package/dist/Form/FileUpload/FIleUpload.stories.d.ts +6 -0
- package/dist/Form/FileUpload/FIleUpload.stories.js +54 -0
- package/dist/Form/FileUpload/FileUpload.d.ts +32 -0
- package/dist/Form/FileUpload/FileUpload.js +51 -0
- package/dist/Form/FileUpload/index.d.ts +1 -0
- package/dist/Form/FileUpload/index.js +1 -0
- package/dist/Form/InputError/InputError.d.ts +7 -0
- package/dist/Form/InputError/InputError.js +5 -0
- package/dist/Form/InputError/InputError.stories.d.ts +5 -0
- package/dist/Form/InputError/InputError.stories.js +12 -0
- package/dist/Form/InputError/index.d.ts +1 -0
- package/dist/Form/InputError/index.js +1 -0
- package/dist/Form/Radio/Radio.d.ts +7 -0
- package/dist/Form/Radio/Radio.js +14 -0
- package/dist/Form/Radio/Radio.stories.d.ts +6 -0
- package/dist/Form/Radio/Radio.stories.js +38 -0
- package/dist/Form/Radio/RadioSelect.d.ts +18 -0
- package/dist/Form/Radio/RadioSelect.js +16 -0
- package/dist/Form/Radio/RadioSelect.stories.d.ts +7 -0
- package/dist/Form/Radio/RadioSelect.stories.js +90 -0
- package/dist/Form/Radio/index.d.ts +2 -0
- package/dist/Form/Radio/index.js +2 -0
- package/dist/Form/Select/CustomOption.d.ts +4 -0
- package/dist/Form/Select/CustomOption.js +8 -0
- package/dist/Form/Select/DropdownIndicator.d.ts +4 -0
- package/dist/Form/Select/DropdownIndicator.js +11 -0
- package/dist/Form/Select/Select.d.ts +27 -0
- package/dist/Form/Select/Select.js +27 -0
- package/dist/Form/Select/Select.stories.d.ts +10 -0
- package/dist/Form/Select/Select.stories.js +31 -0
- package/dist/Form/Select/index.d.ts +1 -0
- package/dist/Form/Select/index.js +1 -0
- package/dist/Form/Text/Text.d.ts +12 -0
- package/dist/Form/Text/Text.js +12 -0
- package/dist/Form/Text/Text.stories.d.ts +8 -0
- package/dist/Form/Text/Text.stories.js +46 -0
- package/dist/Form/Text/index.d.ts +1 -0
- package/dist/Form/Text/index.js +1 -0
- package/dist/Form/core/Field.d.ts +16 -0
- package/dist/Form/core/Field.js +12 -0
- package/dist/Form/core/FieldError.d.ts +7 -0
- package/dist/Form/core/FieldError.js +8 -0
- package/dist/Form/core/FieldForm.d.ts +59 -0
- package/dist/Form/core/FieldForm.js +151 -0
- package/dist/Form/core/FieldInput.d.ts +9 -0
- package/dist/Form/core/FieldInput.js +9 -0
- package/dist/Form/core/FormClassManager.d.ts +7 -0
- package/dist/Form/core/FormClassManager.js +33 -0
- package/dist/Form/core/HelpMessage.d.ts +7 -0
- package/dist/Form/core/HelpMessage.js +2 -0
- package/dist/Form/core/InputList.d.ts +8 -0
- package/dist/Form/core/InputList.js +4 -0
- package/dist/Form/core/MessageTypes.d.ts +5 -0
- package/dist/Form/core/MessageTypes.js +6 -0
- package/dist/Form/core/getComponentClassName.d.ts +1 -0
- package/dist/Form/core/getComponentClassName.js +27 -0
- package/dist/Form/core/getFirstId.d.ts +2 -0
- package/dist/Form/core/getFirstId.js +1 -0
- package/dist/Form/core/getOptionClassName.d.ts +1 -0
- package/dist/Form/core/getOptionClassName.js +10 -0
- package/dist/Form/core/index.d.ts +31 -0
- package/dist/Form/core/index.js +13 -0
- package/dist/Form/core/useInputClassModifier.d.ts +4 -0
- package/dist/Form/core/useInputClassModifier.js +12 -0
- package/dist/Form/core/useOptionsWithId.d.ts +2 -0
- package/dist/Form/core/useOptionsWithId.js +13 -0
- package/dist/IconBg/IconBg.d.ts +9 -0
- package/dist/IconBg/IconBg.js +13 -0
- package/dist/IconBg/IconBg.stories.d.ts +5 -0
- package/dist/IconBg/IconBg.stories.js +23 -0
- package/dist/IconBg/__tests__/IconBg.test.d.ts +1 -0
- package/dist/IconBg/__tests__/IconBg.test.js +22 -0
- package/dist/IconBg/index.d.ts +2 -0
- package/dist/IconBg/index.js +2 -0
- package/dist/Layout/Footer/DynamicIcons.d.ts +4 -0
- package/dist/Layout/Footer/DynamicIcons.js +20 -0
- package/dist/Layout/Footer/Footer.d.ts +14 -0
- package/dist/Layout/Footer/Footer.js +16 -0
- package/dist/Layout/Footer/Footer.stories.d.ts +14 -0
- package/dist/Layout/Footer/Footer.stories.js +48 -0
- package/dist/Layout/Footer/MenuIcons.d.ts +9 -0
- package/dist/Layout/Footer/MenuIcons.js +8 -0
- package/dist/Layout/Footer/MenuLink.d.ts +11 -0
- package/dist/Layout/Footer/MenuLink.js +11 -0
- package/dist/Layout/Header/Header.d.ts +9 -0
- package/dist/Layout/Header/Header.js +11 -0
- package/dist/Layout/Header/Header.stories.d.ts +10 -0
- package/dist/Layout/Header/Header.stories.js +52 -0
- package/dist/Layout/Header/NavBar/NavBar.d.ts +8 -0
- package/dist/Layout/Header/NavBar/NavBar.js +13 -0
- package/dist/Layout/Header/NavBar/NavBar.stories.d.ts +8 -0
- package/dist/Layout/Header/NavBar/NavBar.stories.js +17 -0
- package/dist/Layout/Header/NavBar/index.d.ts +1 -0
- package/dist/Layout/Header/NavBar/index.js +1 -0
- package/dist/Layout/Header/PreviousLink/PreviousLink.d.ts +7 -0
- package/dist/Layout/Header/PreviousLink/PreviousLink.js +14 -0
- package/dist/Layout/Header/PreviousLink/PreviousLink.stories.d.ts +8 -0
- package/dist/Layout/Header/PreviousLink/PreviousLink.stories.js +16 -0
- package/dist/Layout/Header/PreviousLink/index.d.ts +1 -0
- package/dist/Layout/Header/PreviousLink/index.js +1 -0
- package/dist/Layout/Header/index.d.ts +1 -0
- package/dist/Layout/Header/index.js +1 -0
- package/dist/Link/Link.d.ts +7 -0
- package/dist/Link/Link.js +11 -0
- package/dist/Link/Link.stories.d.ts +5 -0
- package/dist/Link/Link.stories.js +14 -0
- package/dist/List/ClickList/ClickList.d.ts +11 -0
- package/dist/List/ClickList/ClickList.js +6 -0
- package/dist/List/ClickList/ClickList.stories.d.ts +6 -0
- package/dist/List/ClickList/ClickList.stories.js +60 -0
- package/dist/List/ClickList/__tests__/ClickList.client.test.d.ts +1 -0
- package/dist/List/ClickList/__tests__/ClickList.client.test.js +18 -0
- package/dist/List/ClickList/index.d.ts +1 -0
- package/dist/List/ClickList/index.js +1 -0
- package/dist/List/ContentItemDuo/ContentItemDuo.d.ts +13 -0
- package/dist/List/ContentItemDuo/ContentItemDuo.js +18 -0
- package/dist/List/ContentItemDuo/ContentItemDuo.stories.d.ts +28 -0
- package/dist/List/ContentItemDuo/ContentItemDuo.stories.js +86 -0
- package/dist/List/ContentItemDuo/__tests__/ContentItemDuo.test.d.ts +1 -0
- package/dist/List/ContentItemDuo/__tests__/ContentItemDuo.test.js +40 -0
- package/dist/List/ContentItemDuo/index.d.ts +2 -0
- package/dist/List/ContentItemDuo/index.js +2 -0
- package/dist/List/ContentItemMono/ContentItemMono.d.ts +16 -0
- package/dist/List/ContentItemMono/ContentItemMono.js +16 -0
- package/dist/List/ContentItemMono/ContentItemMono.stories.d.ts +16 -0
- package/dist/List/ContentItemMono/ContentItemMono.stories.js +99 -0
- package/dist/List/ContentItemMono/__tests__/ContentItemMono.test.d.ts +1 -0
- package/dist/List/ContentItemMono/__tests__/ContentItemMono.test.js +45 -0
- package/dist/List/ContentItemMono/constants.d.ts +4 -0
- package/dist/List/ContentItemMono/constants.js +5 -0
- package/dist/List/ContentItemMono/index.d.ts +3 -0
- package/dist/List/ContentItemMono/index.js +3 -0
- package/dist/List/ContentTabList/ContentTabItem/ContentTabItem.d.ts +6 -0
- package/dist/List/ContentTabList/ContentTabItem/ContentTabItem.js +6 -0
- package/dist/List/ContentTabList/ContentTabItem/__tests__/ContentTabItem.test.d.ts +1 -0
- package/dist/List/ContentTabList/ContentTabItem/__tests__/ContentTabItem.test.js +100 -0
- package/dist/List/ContentTabList/ContentTabItem/index.d.ts +2 -0
- package/dist/List/ContentTabList/ContentTabItem/index.js +1 -0
- package/dist/List/ContentTabList/ContentTabList.d.ts +8 -0
- package/dist/List/ContentTabList/ContentTabList.js +10 -0
- package/dist/List/ContentTabList/ContentTabList.stories.d.ts +7 -0
- package/dist/List/ContentTabList/ContentTabList.stories.js +78 -0
- package/dist/List/ContentTabList/__tests__/ContentTabList.test.d.ts +1 -0
- package/dist/List/ContentTabList/__tests__/ContentTabList.test.js +57 -0
- package/dist/List/ContentTabList/index.d.ts +1 -0
- package/dist/List/ContentTabList/index.js +1 -0
- package/dist/List/List.d.ts +6 -0
- package/dist/List/List.js +9 -0
- package/dist/List/List.stories.d.ts +8 -0
- package/dist/List/List.stories.js +56 -0
- package/dist/List/__tests__/List.test.d.ts +1 -0
- package/dist/List/__tests__/List.test.js +30 -0
- package/dist/List/index.d.ts +1 -0
- package/dist/List/index.js +1 -0
- package/dist/Loader/Loader.d.ts +11 -0
- package/dist/Loader/Loader.js +10 -0
- package/dist/Loader/Loader.stories.d.ts +6 -0
- package/dist/Loader/Loader.stories.js +15 -0
- package/dist/Loader/index.d.ts +1 -0
- package/dist/Loader/index.js +1 -0
- package/dist/ModalClient/Modal.d.ts +23 -0
- package/dist/ModalClient/Modal.js +44 -0
- package/dist/ModalClient/Modal.stories.d.ts +20 -0
- package/dist/ModalClient/Modal.stories.js +37 -0
- package/dist/Pagination/Pagination.d.ts +9 -0
- package/dist/Pagination/Pagination.js +15 -0
- package/dist/Pagination/Pagination.stories.d.ts +11 -0
- package/dist/Pagination/Pagination.stories.js +19 -0
- package/dist/Pagination/PaginationDesktop.d.ts +9 -0
- package/dist/Pagination/PaginationDesktop.js +31 -0
- package/dist/Pagination/PaginationMobile.d.ts +9 -0
- package/dist/Pagination/PaginationMobile.js +10 -0
- package/dist/Stepper/Stepper.d.ts +12 -0
- package/dist/Stepper/Stepper.js +22 -0
- package/dist/Stepper/Stepper.stories.d.ts +16 -0
- package/dist/Stepper/Stepper.stories.js +23 -0
- package/dist/Svg/Svg.d.ts +7 -0
- package/dist/Svg/Svg.js +47 -0
- package/dist/Svg/Svg.stories.d.ts +7 -0
- package/dist/Svg/Svg.stories.js +40 -0
- package/dist/Svg/__tests__/Svg.test.d.ts +1 -0
- package/dist/Svg/__tests__/Svg.test.js +38 -0
- package/dist/Svg/index.d.ts +1 -0
- package/dist/Svg/index.js +1 -0
- package/dist/Svg/svgInjector.d.ts +12 -0
- package/dist/Svg/svgInjector.js +28 -0
- package/dist/Tabs/Tabs.d.ts +16 -0
- package/dist/Tabs/Tabs.js +48 -0
- package/dist/Tabs/Tabs.stories.d.ts +17 -0
- package/dist/Tabs/Tabs.stories.js +89 -0
- package/dist/Tag/Tag.d.ts +6 -0
- package/dist/Tag/Tag.js +7 -0
- package/dist/Tag/Tag.stories.d.ts +5 -0
- package/dist/Tag/Tag.stories.js +22 -0
- package/dist/Tag/__test__/Tag.test.d.ts +1 -0
- package/dist/Tag/__test__/Tag.test.js +18 -0
- package/dist/Tag/index.d.ts +2 -0
- package/dist/Tag/index.js +2 -0
- package/dist/Title/Title.d.ts +13 -0
- package/dist/Title/Title.js +11 -0
- package/dist/Title/Title.stories.d.ts +6 -0
- package/dist/Title/Title.stories.js +45 -0
- package/dist/Title/TitleWithSubtitles.d.ts +8 -0
- package/dist/Title/TitleWithSubtitles.js +2 -0
- package/dist/Title/__tests__/Title.test.d.ts +1 -0
- package/dist/Title/__tests__/Title.test.js +28 -0
- package/dist/Title/__tests__/TitleWithSubtitles.test.d.ts +1 -0
- package/dist/Title/__tests__/TitleWithSubtitles.test.js +14 -0
- package/dist/Title/constants.d.ts +4 -0
- package/dist/Title/constants.js +5 -0
- package/dist/Title/index.d.ts +3 -0
- package/dist/Title/index.js +3 -0
- package/dist/assets/svg/facebook.svg +1 -0
- package/dist/assets/svg/linkedin.svg +1 -0
- package/dist/assets/svg/twitterx.svg +1 -0
- package/dist/assets/svg/youtube.svg +1 -0
- package/dist/index.d.ts +29 -0
- package/dist/index.js +27 -0
- package/dist/utilities/helpers/getComponentClassName.d.ts +1 -0
- package/dist/utilities/helpers/getComponentClassName.js +27 -0
- package/dist/utilities/hooks/useIsSmallScreen.d.ts +1 -0
- package/dist/utilities/hooks/useIsSmallScreen.js +14 -0
- package/dist/utilities.d.ts +2 -0
- package/dist/utilities.js +2 -0
- package/package.json +119 -0
@@ -0,0 +1,8 @@
|
|
1
|
+
import "@axa-fr/design-system-look-and-feel-css/dist/Accordion/Accordion.scss";
|
2
|
+
export declare const Accordion: {
|
3
|
+
({ children }: React.PropsWithChildren): import("react/jsx-runtime").JSX.Element;
|
4
|
+
Item: ({ title, children }: {
|
5
|
+
title: string;
|
6
|
+
children: React.ReactNode;
|
7
|
+
}) => import("react/jsx-runtime").JSX.Element;
|
8
|
+
};
|
@@ -0,0 +1,7 @@
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
2
|
+
import "@axa-fr/design-system-look-and-feel-css/dist/Accordion/Accordion.scss";
|
3
|
+
import { AccordionItem } from "./AccordionItem";
|
4
|
+
export const Accordion = ({ children }) => {
|
5
|
+
return _jsx("div", { className: "af-accordion-client", children: children });
|
6
|
+
};
|
7
|
+
Accordion.Item = AccordionItem;
|
@@ -0,0 +1,8 @@
|
|
1
|
+
import { Meta, StoryObj } from "@storybook/react";
|
2
|
+
import { Accordion } from "./Accordion";
|
3
|
+
declare const meta: Meta<typeof Accordion>;
|
4
|
+
export default meta;
|
5
|
+
type StoryProps = {
|
6
|
+
numberOfItems: number;
|
7
|
+
};
|
8
|
+
export declare const AccordionStory: StoryObj<StoryProps>;
|
@@ -0,0 +1,24 @@
|
|
1
|
+
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
2
|
+
import { Accordion } from "./Accordion";
|
3
|
+
const meta = {
|
4
|
+
component: Accordion,
|
5
|
+
title: "Components/Accordion",
|
6
|
+
parameters: {
|
7
|
+
layout: "fullscreen",
|
8
|
+
},
|
9
|
+
};
|
10
|
+
export default meta;
|
11
|
+
export const AccordionStory = {
|
12
|
+
name: "Accordion",
|
13
|
+
render: ({ numberOfItems }) => {
|
14
|
+
return (_jsx(Accordion, { children: Array.from({ length: numberOfItems }, (_, i) => (_jsxs(Accordion.Item, { title: `Title ${i + 1}`, children: ["Content ", i + 1] }, i))) }));
|
15
|
+
},
|
16
|
+
args: {
|
17
|
+
numberOfItems: 3,
|
18
|
+
},
|
19
|
+
argTypes: {
|
20
|
+
numberOfItems: {
|
21
|
+
control: { type: "range", min: 1, max: 10 },
|
22
|
+
},
|
23
|
+
},
|
24
|
+
};
|
@@ -0,0 +1,10 @@
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
2
|
+
import { useId, useState } from "react";
|
3
|
+
export const AccordionItem = ({ title, children }) => {
|
4
|
+
const [isOpen, setIsOpen] = useState(false);
|
5
|
+
const id = useId();
|
6
|
+
const onClick = () => {
|
7
|
+
setIsOpen(!isOpen);
|
8
|
+
};
|
9
|
+
return (_jsxs("div", { className: "af-accordion-client__item", children: [_jsx("h3", { children: _jsx("button", { type: "button", "aria-expanded": isOpen, "aria-controls": `accordion-section-${id}`, id: `accordion-title-${id}`, onClick: onClick, children: title }) }), _jsx("div", { role: "region", "aria-labelledby": `accordion-title-${id}`, id: `accordion-section-${id}`, hidden: !isOpen, children: children })] }));
|
10
|
+
};
|
@@ -0,0 +1,12 @@
|
|
1
|
+
import { ComponentPropsWithoutRef, PropsWithChildren, ReactElement } from "react";
|
2
|
+
import "@axa-fr/design-system-look-and-feel-css/dist/Alert/Alert.scss";
|
3
|
+
import { Link } from "../Link/Link";
|
4
|
+
export type AlertType = "validation" | "error" | "warning" | "information" | "neutral";
|
5
|
+
type AlertProps = {
|
6
|
+
type: AlertType;
|
7
|
+
title?: string;
|
8
|
+
link?: ReactElement<typeof Link>;
|
9
|
+
iconSize?: number;
|
10
|
+
} & ComponentPropsWithoutRef<"div">;
|
11
|
+
export declare const Alert: ({ type, title, children, link, iconSize, }: PropsWithChildren<AlertProps>) => import("react/jsx-runtime").JSX.Element;
|
12
|
+
export {};
|
@@ -0,0 +1,26 @@
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
2
|
+
import { useMemo, } from "react";
|
3
|
+
import wbIncandescentOutlined from "@material-symbols/svg-400/outlined/wb_incandescent.svg";
|
4
|
+
import errorIcon from "@material-symbols/svg-400/outlined/emergency_home.svg";
|
5
|
+
import errorOutline from "@material-symbols/svg-400/outlined/error.svg";
|
6
|
+
import checkCircleOutline from "@material-symbols/svg-400/outlined/check_circle.svg";
|
7
|
+
import "@axa-fr/design-system-look-and-feel-css/dist/Alert/Alert.scss";
|
8
|
+
import { Svg } from "../Svg";
|
9
|
+
function getIconFromType(type) {
|
10
|
+
switch (type) {
|
11
|
+
case "error":
|
12
|
+
return errorIcon;
|
13
|
+
case "validation":
|
14
|
+
return checkCircleOutline;
|
15
|
+
case "neutral":
|
16
|
+
case "warning":
|
17
|
+
return errorOutline;
|
18
|
+
case "information":
|
19
|
+
default:
|
20
|
+
return wbIncandescentOutlined;
|
21
|
+
}
|
22
|
+
}
|
23
|
+
export const Alert = ({ type = "information", title, children, link, iconSize = 24, }) => {
|
24
|
+
const icon = useMemo(() => getIconFromType(type), [type]);
|
25
|
+
return (_jsxs("div", { className: `af-alert af-alert--${type}`, children: [_jsx(Svg, { src: icon, width: iconSize, height: iconSize, className: "af-alert__icon" }), _jsxs("div", { className: "af-alert-client__content", children: [title && _jsx("p", { className: "af-alert__title", children: title }), children, link && _jsx("p", { className: "af-alert__link", children: link })] })] }));
|
26
|
+
};
|
@@ -0,0 +1,26 @@
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
2
|
+
import { Alert } from "./Alert";
|
3
|
+
import { Link } from "../Link/Link";
|
4
|
+
const MODIFIERS = ["information", "neutral", "error", "validation", "warning"];
|
5
|
+
const meta = {
|
6
|
+
title: "Components/Alert",
|
7
|
+
component: Alert,
|
8
|
+
};
|
9
|
+
export default meta;
|
10
|
+
export const Default = {
|
11
|
+
name: "Default",
|
12
|
+
args: {
|
13
|
+
title: "My Alert title",
|
14
|
+
type: "information",
|
15
|
+
children: "Vestibulum nunc neque, sodales non luctus in, dictum vitae nisl. Curabitur vitae massa non nisl lacinia tempus. Pellentesque id nulla tortor.",
|
16
|
+
link: (_jsx(Link, { openInNewTab: true, href: "https://fakelink.com", children: "Plus de d\u00E9tails" })),
|
17
|
+
iconSize: 24,
|
18
|
+
},
|
19
|
+
argTypes: {
|
20
|
+
type: {
|
21
|
+
options: MODIFIERS,
|
22
|
+
control: { type: "select" },
|
23
|
+
defaultValue: "information",
|
24
|
+
},
|
25
|
+
},
|
26
|
+
};
|
@@ -0,0 +1,17 @@
|
|
1
|
+
import "@axa-fr/design-system-look-and-feel-css/dist/Button/Button.scss";
|
2
|
+
import { ComponentPropsWithoutRef, PropsWithChildren, ReactNode } from "react";
|
3
|
+
export declare enum Variants {
|
4
|
+
primary = "primary",
|
5
|
+
business = "primary-business",
|
6
|
+
secondary = "secondary",
|
7
|
+
secondaryError = "secondary-error",
|
8
|
+
tertiary = "tertiary",
|
9
|
+
ghost = "ghost"
|
10
|
+
}
|
11
|
+
type ButtonProps = {
|
12
|
+
variant?: Variants;
|
13
|
+
iconLeft?: ReactNode;
|
14
|
+
iconRight?: ReactNode;
|
15
|
+
} & ComponentPropsWithoutRef<"button">;
|
16
|
+
export declare const ButtonClient: ({ children, className, disabled, variant, iconLeft, iconRight, ...args }: PropsWithChildren<ButtonProps>) => import("react/jsx-runtime").JSX.Element;
|
17
|
+
export {};
|
@@ -0,0 +1,15 @@
|
|
1
|
+
import { jsxs as _jsxs } from "react/jsx-runtime";
|
2
|
+
import "@axa-fr/design-system-look-and-feel-css/dist/Button/Button.scss";
|
3
|
+
import classNames from "classnames";
|
4
|
+
export var Variants;
|
5
|
+
(function (Variants) {
|
6
|
+
Variants["primary"] = "primary";
|
7
|
+
Variants["business"] = "primary-business";
|
8
|
+
Variants["secondary"] = "secondary";
|
9
|
+
Variants["secondaryError"] = "secondary-error";
|
10
|
+
Variants["tertiary"] = "tertiary";
|
11
|
+
Variants["ghost"] = "ghost";
|
12
|
+
})(Variants || (Variants = {}));
|
13
|
+
export const ButtonClient = ({ children, className, disabled, variant, iconLeft, iconRight, ...args }) => {
|
14
|
+
return (_jsxs("button", { className: classNames("af-btn-client", variant && `af-btn-client--${variant.toString()}`, className), disabled: disabled, type: "button", ...args, children: [iconLeft, children, iconRight] }));
|
15
|
+
};
|
@@ -0,0 +1,22 @@
|
|
1
|
+
import type { Meta, StoryObj } from "@storybook/react";
|
2
|
+
import { ReactNode } from "react";
|
3
|
+
import { ButtonClient, Variants } from "./Button";
|
4
|
+
declare const meta: Meta<typeof ButtonClient>;
|
5
|
+
export default meta;
|
6
|
+
type StoryProps = Omit<React.ComponentProps<typeof ButtonClient>, "children" | "variant" | "disabled" | "iconLeft" | "iconRight"> & {
|
7
|
+
children: string;
|
8
|
+
variant: Variants;
|
9
|
+
disabled: boolean;
|
10
|
+
iconLeft: ReactNode;
|
11
|
+
iconRight: ReactNode;
|
12
|
+
};
|
13
|
+
type Story = StoryObj<StoryProps>;
|
14
|
+
export declare const Playground: Story;
|
15
|
+
export declare const Business: StoryObj<typeof ButtonClient>;
|
16
|
+
export declare const Secondary: StoryObj<typeof ButtonClient>;
|
17
|
+
export declare const SecondaryError: StoryObj<typeof ButtonClient>;
|
18
|
+
export declare const Tertiary: StoryObj<typeof ButtonClient>;
|
19
|
+
export declare const Ghost: StoryObj<typeof ButtonClient>;
|
20
|
+
export declare const MultiExamples: StoryObj<typeof ButtonClient>;
|
21
|
+
export declare const WithIconRight: StoryObj<typeof ButtonClient>;
|
22
|
+
export declare const WithIconLeft: StoryObj<typeof ButtonClient>;
|
@@ -0,0 +1,99 @@
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
2
|
+
import accountBalance from "@material-symbols/svg-400/outlined/account_balance.svg";
|
3
|
+
import arrowBack from "@material-symbols/svg-400/outlined/arrow_back.svg";
|
4
|
+
import biotech from "@material-symbols/svg-400/outlined/biotech.svg";
|
5
|
+
import code from "@material-symbols/svg-400/outlined/code.svg";
|
6
|
+
import fireExtinguisher from "@material-symbols/svg-400/outlined/fire_extinguisher.svg";
|
7
|
+
import heartBroken from "@material-symbols/svg-400/outlined/heart_broken.svg";
|
8
|
+
import { ButtonClient, Variants } from "./Button";
|
9
|
+
import { Svg } from "../Svg";
|
10
|
+
const meta = {
|
11
|
+
component: ButtonClient,
|
12
|
+
title: "Components/Button",
|
13
|
+
parameters: {
|
14
|
+
layout: "centered",
|
15
|
+
},
|
16
|
+
argTypes: { onClick: { action: "clicked" } },
|
17
|
+
};
|
18
|
+
export default meta;
|
19
|
+
export const Playground = {
|
20
|
+
name: "Button",
|
21
|
+
render: ({ children: text, variant, disabled, iconLeft, iconRight, onClick, ...args }) => (_jsx(ButtonClient, { variant: variant, iconLeft: iconLeft, iconRight: iconRight, disabled: disabled, onClick: onClick, ...args, children: text })),
|
22
|
+
args: {
|
23
|
+
children: "Button",
|
24
|
+
},
|
25
|
+
argTypes: {
|
26
|
+
variant: {
|
27
|
+
options: Variants,
|
28
|
+
control: { type: "multi-select" },
|
29
|
+
},
|
30
|
+
iconLeft: {
|
31
|
+
control: { type: "input" },
|
32
|
+
},
|
33
|
+
iconRight: {
|
34
|
+
control: { type: "input" },
|
35
|
+
},
|
36
|
+
},
|
37
|
+
};
|
38
|
+
export const Business = {
|
39
|
+
name: "Button business",
|
40
|
+
args: {
|
41
|
+
children: "Button Business",
|
42
|
+
variant: Variants.business,
|
43
|
+
},
|
44
|
+
};
|
45
|
+
export const Secondary = {
|
46
|
+
name: "Button secondary",
|
47
|
+
args: {
|
48
|
+
children: "Button Secondary",
|
49
|
+
variant: Variants.secondary,
|
50
|
+
},
|
51
|
+
};
|
52
|
+
export const SecondaryError = {
|
53
|
+
name: "Button secondary error",
|
54
|
+
args: {
|
55
|
+
children: "Button Secondary Error",
|
56
|
+
variant: Variants.secondaryError,
|
57
|
+
},
|
58
|
+
};
|
59
|
+
export const Tertiary = {
|
60
|
+
name: "Button tertiary",
|
61
|
+
args: {
|
62
|
+
children: "Button Tertiary",
|
63
|
+
variant: Variants.tertiary,
|
64
|
+
},
|
65
|
+
};
|
66
|
+
export const Ghost = {
|
67
|
+
name: "Button ghost",
|
68
|
+
args: {
|
69
|
+
children: "Button Ghost",
|
70
|
+
variant: Variants.ghost,
|
71
|
+
},
|
72
|
+
};
|
73
|
+
export const MultiExamples = {
|
74
|
+
name: "Button examples",
|
75
|
+
render: () => {
|
76
|
+
return (_jsxs("div", { style: {
|
77
|
+
display: "flex",
|
78
|
+
justifyContent: "space-evenly",
|
79
|
+
alignItems: "center",
|
80
|
+
padding: "2rem",
|
81
|
+
flexWrap: "wrap",
|
82
|
+
gap: "2rem",
|
83
|
+
}, children: [_jsx(ButtonClient, { children: "Button Default" }), _jsx(ButtonClient, { disabled: true, children: "Button Disabled" }), _jsx(ButtonClient, { variant: Variants.business, children: "Button Business" }), _jsx(ButtonClient, { variant: Variants.business, disabled: true, children: "Button Business Disabled" }), _jsx(ButtonClient, { variant: Variants.secondary, children: "Button Secondary" }), _jsx(ButtonClient, { variant: Variants.secondary, disabled: true, children: "Button Secondary Disabled" }), _jsx(ButtonClient, { variant: Variants.secondaryError, children: "Button Secondary Error" }), _jsx(ButtonClient, { variant: Variants.secondaryError, disabled: true, children: "Button Secondary Error Disabled" }), _jsx(ButtonClient, { variant: Variants.tertiary, children: "Button Tertiary" }), _jsx(ButtonClient, { variant: Variants.tertiary, disabled: true, children: "Button Tertiary Disabled" }), _jsx(ButtonClient, { variant: Variants.ghost, children: "Button Ghost" }), _jsx(ButtonClient, { iconRight: _jsx(Svg, { src: arrowBack, fill: "white" }), children: "test" }), _jsx(ButtonClient, { variant: Variants.secondary, iconRight: _jsx(Svg, { src: code, fill: "#00008F" }), children: "With icon" }), _jsx(ButtonClient, { variant: Variants.tertiary, iconLeft: _jsx(Svg, { src: fireExtinguisher, fill: "#00008F" }), children: "With icon" }), _jsx(ButtonClient, { variant: Variants.business, iconRight: _jsx(Svg, { src: biotech, fill: "white" }), children: "With icon" }), _jsx(ButtonClient, { variant: Variants.ghost, iconLeft: _jsx(Svg, { src: accountBalance, fill: "#00008F" }), iconRight: _jsx(Svg, { src: heartBroken, fill: "#00008F" }), children: "With icon MULTI" })] }));
|
84
|
+
},
|
85
|
+
};
|
86
|
+
export const WithIconRight = {
|
87
|
+
name: "Button with right icon",
|
88
|
+
args: {
|
89
|
+
children: "With icon",
|
90
|
+
iconRight: _jsx(Svg, { src: heartBroken }),
|
91
|
+
},
|
92
|
+
};
|
93
|
+
export const WithIconLeft = {
|
94
|
+
name: "Button with left icon",
|
95
|
+
args: {
|
96
|
+
children: "With icon",
|
97
|
+
iconLeft: _jsx(Svg, { src: heartBroken }),
|
98
|
+
},
|
99
|
+
};
|
@@ -0,0 +1,6 @@
|
|
1
|
+
import { type ComponentProps } from "react";
|
2
|
+
type CardProps = ComponentProps<"section"> & ComponentProps<"button"> & {
|
3
|
+
classModifier?: string;
|
4
|
+
};
|
5
|
+
export declare const Card: ({ children, className, classModifier, onClick, ...otherProps }: CardProps) => import("react/jsx-runtime").JSX.Element;
|
6
|
+
export {};
|
@@ -0,0 +1,9 @@
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
2
|
+
import { useMemo } from "react";
|
3
|
+
import { getComponentClassName } from "../utilities";
|
4
|
+
export const Card = ({ children, className, classModifier, onClick, ...otherProps }) => {
|
5
|
+
const componentClassName = useMemo(() => getComponentClassName(className, classModifier, "af-card"), [className, classModifier]);
|
6
|
+
const Component = useMemo(() => (onClick ? "button" : "section"), [onClick]);
|
7
|
+
const componentProps = useMemo(() => (onClick ? { type: "button", onClick } : { tabIndex: 0 }), [onClick]);
|
8
|
+
return (_jsx(Component, { className: componentClassName, ...componentProps, ...otherProps, children: children }));
|
9
|
+
};
|
@@ -0,0 +1,40 @@
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
2
|
+
import { Card } from ".";
|
3
|
+
const MODIFIERS = [" ", "elevation-2"];
|
4
|
+
const CUSTOM_CHILDREN = (_jsxs(_Fragment, { children: [_jsx("h1", { className: "af-card__title", children: "My card title" }), _jsx("p", { children: "My card content" })] }));
|
5
|
+
const meta = {
|
6
|
+
title: "Components/Card",
|
7
|
+
component: Card,
|
8
|
+
};
|
9
|
+
export default meta;
|
10
|
+
export const Default = {
|
11
|
+
name: "Card",
|
12
|
+
render: (args) => _jsx(Card, { ...args }),
|
13
|
+
args: {
|
14
|
+
children: CUSTOM_CHILDREN,
|
15
|
+
classModifier: " ",
|
16
|
+
},
|
17
|
+
argTypes: {
|
18
|
+
classModifier: {
|
19
|
+
options: MODIFIERS,
|
20
|
+
control: { type: "select" },
|
21
|
+
defaultValue: " ",
|
22
|
+
},
|
23
|
+
},
|
24
|
+
};
|
25
|
+
export const ButtonCard = {
|
26
|
+
name: "Button Card",
|
27
|
+
render: (args) => _jsx(Card, { ...args }),
|
28
|
+
args: {
|
29
|
+
children: CUSTOM_CHILDREN,
|
30
|
+
classModifier: " ",
|
31
|
+
},
|
32
|
+
argTypes: {
|
33
|
+
classModifier: {
|
34
|
+
options: MODIFIERS,
|
35
|
+
control: { type: "select" },
|
36
|
+
defaultValue: " ",
|
37
|
+
},
|
38
|
+
onClick: { action: "onClick" },
|
39
|
+
},
|
40
|
+
};
|
@@ -0,0 +1 @@
|
|
1
|
+
export {};
|
@@ -0,0 +1,27 @@
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
2
|
+
import { render, screen, waitFor } from "@testing-library/react";
|
3
|
+
import userEvent from "@testing-library/user-event";
|
4
|
+
import { Card } from "../Card";
|
5
|
+
describe("Card", () => {
|
6
|
+
it("should render children", () => {
|
7
|
+
render(_jsx(Card, { children: "A card" }));
|
8
|
+
const card = screen.getByText("A card");
|
9
|
+
expect(card).toHaveClass("af-card");
|
10
|
+
});
|
11
|
+
it("should have custom class", () => {
|
12
|
+
render(_jsx(Card, { className: "custom-class", children: "A card" }));
|
13
|
+
expect(screen.getByText("A card")).toHaveClass("custom-class");
|
14
|
+
});
|
15
|
+
it("should have custom class with modifier", () => {
|
16
|
+
render(_jsx(Card, { className: "custom-class", classModifier: "modifier", children: "A card" }));
|
17
|
+
expect(screen.getByText("A card")).toHaveClass("custom-class custom-class--modifier");
|
18
|
+
});
|
19
|
+
it("should call onClick when card button clicked", async () => {
|
20
|
+
const onClick = vi.fn();
|
21
|
+
render(_jsx(Card, { onClick: onClick, children: "A card" }));
|
22
|
+
userEvent.click(screen.getByRole("button", { name: "A card" }));
|
23
|
+
await waitFor(() => {
|
24
|
+
expect(onClick).toHaveBeenCalled();
|
25
|
+
});
|
26
|
+
});
|
27
|
+
});
|
@@ -0,0 +1,7 @@
|
|
1
|
+
import "@axa-fr/design-system-look-and-feel-css/dist/Form/Checkbox/Checkbox.scss";
|
2
|
+
import React, { ReactNode } from "react";
|
3
|
+
declare const Checkbox: React.ForwardRefExoticComponent<{
|
4
|
+
label: string | ReactNode;
|
5
|
+
errorMessage?: string;
|
6
|
+
} & Omit<React.InputHTMLAttributes<HTMLInputElement>, "label"> & React.RefAttributes<HTMLInputElement>>;
|
7
|
+
export { Checkbox };
|
@@ -0,0 +1,15 @@
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
2
|
+
import "@axa-fr/design-system-look-and-feel-css/dist/Form/Checkbox/Checkbox.scss";
|
3
|
+
import checkBoxIcon from "@material-symbols/svg-400/outlined/check_box-fill.svg";
|
4
|
+
import checkBoxOutlineBlankIcon from "@material-symbols/svg-400/outlined/check_box_outline_blank.svg";
|
5
|
+
import errorOutline from "@material-symbols/svg-400/outlined/error.svg";
|
6
|
+
import { forwardRef, useId } from "react";
|
7
|
+
import classNames from "classnames";
|
8
|
+
import { Svg } from "../../Svg";
|
9
|
+
const Checkbox = forwardRef(({ label, errorMessage, className, ...inputProps }, ref) => {
|
10
|
+
let inputId = useId();
|
11
|
+
inputId = inputProps.id || inputId;
|
12
|
+
return (_jsxs(_Fragment, { children: [_jsx("div", { className: classNames("af-checkbox", className), children: _jsxs("label", { htmlFor: inputId, children: [_jsx("input", { ref: ref, ...inputProps, type: "checkbox", id: inputId, "aria-invalid": !!errorMessage }), _jsxs("div", { className: "af-checkbox__icons", children: [_jsx(Svg, { src: checkBoxOutlineBlankIcon, className: "af-checkbox__unchecked" }), _jsx(Svg, { src: checkBoxIcon, className: "af-checkbox__checked" })] }), label] }, inputProps.name) }), errorMessage && (_jsxs("div", { className: "af-checkbox__error", "aria-live": "assertive", children: [_jsx(Svg, { src: errorOutline }), errorMessage] }))] }));
|
13
|
+
});
|
14
|
+
Checkbox.displayName = "Checkbox";
|
15
|
+
export { Checkbox };
|
@@ -0,0 +1,38 @@
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
2
|
+
import { Checkbox } from "./Checkbox";
|
3
|
+
const meta = {
|
4
|
+
title: "Components/Form/Input/Checkbox",
|
5
|
+
component: Checkbox,
|
6
|
+
argTypes: {},
|
7
|
+
};
|
8
|
+
export default meta;
|
9
|
+
export const CheckboxStory = {
|
10
|
+
name: "Basic",
|
11
|
+
render: ({ ...args }) => _jsx(Checkbox, { ...args }),
|
12
|
+
args: {
|
13
|
+
label: "J'accepte de fournir à AXA mes coordonnées ainsi que les données relatives à mon projet et ma situation. Ces dernières seront transmises à mon conseiller AXA qui pourra me contacter pour m'accompagner.",
|
14
|
+
name: "option1",
|
15
|
+
value: "option1",
|
16
|
+
},
|
17
|
+
argTypes: {
|
18
|
+
label: {
|
19
|
+
control: { type: "text" },
|
20
|
+
},
|
21
|
+
name: {
|
22
|
+
control: { type: "text" },
|
23
|
+
},
|
24
|
+
value: {
|
25
|
+
control: { type: "text" },
|
26
|
+
},
|
27
|
+
errorMessage: {
|
28
|
+
control: { type: "text" },
|
29
|
+
},
|
30
|
+
disabled: {
|
31
|
+
control: { type: "boolean" },
|
32
|
+
},
|
33
|
+
checked: {
|
34
|
+
control: { type: "boolean" },
|
35
|
+
},
|
36
|
+
onChange: { action: "onChange" },
|
37
|
+
},
|
38
|
+
};
|
@@ -0,0 +1,15 @@
|
|
1
|
+
import "@axa-fr/design-system-look-and-feel-css/dist/Form/Checkbox/Checkbox.scss";
|
2
|
+
import React, { ReactNode } from "react";
|
3
|
+
type CheckboxProps = {
|
4
|
+
type: "vertical" | "horizontal";
|
5
|
+
options: ({
|
6
|
+
label: ReactNode;
|
7
|
+
subtitle?: ReactNode;
|
8
|
+
description?: ReactNode;
|
9
|
+
icon?: ReactNode;
|
10
|
+
} & React.InputHTMLAttributes<HTMLInputElement>)[];
|
11
|
+
errorMessage?: string;
|
12
|
+
onChange?: React.ChangeEventHandler;
|
13
|
+
};
|
14
|
+
export declare const CheckboxSelect: ({ options, errorMessage, onChange, type, }: CheckboxProps) => import("react/jsx-runtime").JSX.Element;
|
15
|
+
export {};
|
@@ -0,0 +1,7 @@
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
2
|
+
import "@axa-fr/design-system-look-and-feel-css/dist/Form/Checkbox/Checkbox.scss";
|
3
|
+
import checkBoxIcon from "@material-symbols/svg-400/outlined/check_box-fill.svg";
|
4
|
+
import checkBoxOutlineBlankIcon from "@material-symbols/svg-400/outlined/check_box_outline_blank.svg";
|
5
|
+
import errorOutline from "@material-symbols/svg-400/outlined/error.svg";
|
6
|
+
import { Svg } from "../../Svg";
|
7
|
+
export const CheckboxSelect = ({ options, errorMessage, onChange, type = "vertical", }) => (_jsxs(_Fragment, { children: [_jsx("div", { role: "group", className: `af-checkbox af-checkbox-select af-checkbox-select--${type}`, children: options.map(({ label, description, subtitle, icon, ...inputProps }) => (_jsxs("label", { htmlFor: `id-${inputProps.name}`, children: [_jsx("input", { type: "checkbox", ...inputProps, id: `id-${inputProps.name}`, onChange: onChange, "aria-invalid": Boolean(errorMessage) && !inputProps.disabled }), _jsxs("div", { className: "af-checkbox__icons", children: [_jsx(Svg, { src: checkBoxOutlineBlankIcon, className: "af-checkbox__unchecked" }), _jsx(Svg, { src: checkBoxIcon, className: "af-checkbox__checked" })] }), _jsxs("div", { className: "af-checkbox__content", children: [icon, _jsxs("div", { className: "af-checkbox__content-description", children: [_jsx("span", { children: label }), description && _jsx("span", { children: description }), subtitle && _jsx("span", { children: subtitle })] })] })] }, inputProps.name))) }), errorMessage && (_jsxs("div", { className: "af-checkbox__error", "aria-live": "assertive", children: [_jsx(Svg, { src: errorOutline }), errorMessage] }))] }));
|
@@ -0,0 +1,6 @@
|
|
1
|
+
import { Meta, StoryObj } from "@storybook/react";
|
2
|
+
import { ComponentProps } from "react";
|
3
|
+
import { CheckboxSelect } from "./CheckboxSelect";
|
4
|
+
declare const meta: Meta;
|
5
|
+
export default meta;
|
6
|
+
export declare const CheckboxSelectStory: StoryObj<ComponentProps<typeof CheckboxSelect>>;
|
@@ -0,0 +1,55 @@
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
2
|
+
import home from "@material-symbols/svg-400/outlined/home.svg";
|
3
|
+
import { Svg } from "../../Svg";
|
4
|
+
import { CheckboxSelect } from "./CheckboxSelect";
|
5
|
+
const meta = {
|
6
|
+
title: "Components/Form/Input/Checkbox/Select",
|
7
|
+
component: CheckboxSelect,
|
8
|
+
argTypes: {},
|
9
|
+
};
|
10
|
+
export default meta;
|
11
|
+
export const CheckboxSelectStory = {
|
12
|
+
name: "Select",
|
13
|
+
render: ({ ...args }) => _jsx(CheckboxSelect, { ...args }),
|
14
|
+
args: {
|
15
|
+
type: "vertical",
|
16
|
+
options: [
|
17
|
+
{
|
18
|
+
label: "Paris",
|
19
|
+
description: "Capitale de la France",
|
20
|
+
subtitle: "Nord",
|
21
|
+
name: "paris",
|
22
|
+
value: "paris",
|
23
|
+
icon: _jsx(Svg, { src: home }),
|
24
|
+
},
|
25
|
+
{
|
26
|
+
label: "Bruxelles",
|
27
|
+
description: "Capitale de la Belgique",
|
28
|
+
name: "bruxelles",
|
29
|
+
value: "bruxelles",
|
30
|
+
icon: _jsx(Svg, { src: home }),
|
31
|
+
},
|
32
|
+
{
|
33
|
+
label: "Lille",
|
34
|
+
name: "lille",
|
35
|
+
value: "lille",
|
36
|
+
icon: _jsx(Svg, { src: home }),
|
37
|
+
disabled: true,
|
38
|
+
checked: true,
|
39
|
+
},
|
40
|
+
],
|
41
|
+
},
|
42
|
+
argTypes: {
|
43
|
+
type: {
|
44
|
+
control: { type: "inline-radio" },
|
45
|
+
options: ["vertical", "horizontal"],
|
46
|
+
},
|
47
|
+
options: {
|
48
|
+
control: { type: "object" },
|
49
|
+
},
|
50
|
+
errorMessage: {
|
51
|
+
control: { type: "text" },
|
52
|
+
},
|
53
|
+
onChange: { action: "onChange" },
|
54
|
+
},
|
55
|
+
};
|