@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 @@
|
|
1
|
+
export { Text } from "./Text";
|
@@ -0,0 +1,16 @@
|
|
1
|
+
import { ComponentPropsWithoutRef, ReactNode } from "react";
|
2
|
+
import { FieldForm } from "./FieldForm";
|
3
|
+
type FieldProps = Omit<ComponentPropsWithoutRef<typeof FieldForm>, "children"> & {
|
4
|
+
label: ReactNode;
|
5
|
+
children?: ReactNode;
|
6
|
+
id?: string;
|
7
|
+
classModifier?: string;
|
8
|
+
classNameContainerLabel?: string;
|
9
|
+
classNameContainerInput?: string;
|
10
|
+
isVisible?: boolean;
|
11
|
+
roleContainer?: string;
|
12
|
+
ariaLabelContainer?: string;
|
13
|
+
isLabelContainerLinkedToInput?: boolean;
|
14
|
+
};
|
15
|
+
export declare const Field: ({ id, message, messageType, label, children, forceDisplayMessage, classModifier, className, classNameContainerLabel, classNameContainerInput, isVisible, roleContainer, ariaLabelContainer, isLabelContainerLinkedToInput, }: FieldProps) => import("react/jsx-runtime").JSX.Element | null;
|
16
|
+
export {};
|
@@ -0,0 +1,12 @@
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
2
|
+
import { getComponentClassName } from "./getComponentClassName";
|
3
|
+
import { FieldError } from "./FieldError";
|
4
|
+
import { MessageTypes } from "./MessageTypes";
|
5
|
+
import { FieldForm } from "./FieldForm";
|
6
|
+
export const Field = ({ id = "", message = "", messageType = MessageTypes.error, label, children, forceDisplayMessage, classModifier = "", className, classNameContainerLabel = "col-md-2", classNameContainerInput = "col-md-10", isVisible = true, roleContainer, ariaLabelContainer, isLabelContainerLinkedToInput = true, }) => {
|
7
|
+
if (!isVisible) {
|
8
|
+
return null;
|
9
|
+
}
|
10
|
+
const componentClassName = getComponentClassName(className, classModifier, "row af-form__group");
|
11
|
+
return (_jsxs("div", { className: componentClassName, role: roleContainer, "aria-label": ariaLabelContainer, children: [_jsx("div", { className: classNameContainerLabel, children: _jsx("label", { className: "af-form__group-label", htmlFor: isLabelContainerLinkedToInput ? id : undefined, children: label }) }), _jsxs(FieldForm, { className: classNameContainerInput, message: message, messageType: messageType, forceDisplayMessage: forceDisplayMessage, children: [children, _jsx(FieldError, { message: message, messageType: messageType })] })] }));
|
12
|
+
};
|
@@ -0,0 +1,7 @@
|
|
1
|
+
import { MessageTypes } from "./MessageTypes";
|
2
|
+
type FieldProps = {
|
3
|
+
message?: string | null;
|
4
|
+
messageType?: MessageTypes;
|
5
|
+
};
|
6
|
+
export declare const FieldError: ({ message, messageType, }: FieldProps) => "" | import("react/jsx-runtime").JSX.Element | null;
|
7
|
+
export {};
|
@@ -0,0 +1,8 @@
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
2
|
+
import { getComponentClassName } from "./getComponentClassName";
|
3
|
+
import { MessageTypes } from "./MessageTypes";
|
4
|
+
const DEFAULT_CLASS_NAME = "af-form__message";
|
5
|
+
export const FieldError = ({ message = null, messageType = MessageTypes.error, }) => {
|
6
|
+
const className = getComponentClassName(DEFAULT_CLASS_NAME, messageType, DEFAULT_CLASS_NAME);
|
7
|
+
return (message && (_jsxs("small", { className: className, children: [_jsx("span", { className: "glyphicon glyphicon-exclamation-sign" }), _jsx("span", { className: `af-form__${messageType}-text`, children: message })] })));
|
8
|
+
};
|
@@ -0,0 +1,59 @@
|
|
1
|
+
import { BaseSyntheticEvent, ReactElement, ReactNode } from "react";
|
2
|
+
import { MessageTypes } from "./MessageTypes";
|
3
|
+
import { FormClassManager } from "./FormClassManager";
|
4
|
+
type Tmessage = {
|
5
|
+
message: string | null;
|
6
|
+
messageType: MessageTypes;
|
7
|
+
};
|
8
|
+
declare const INITIAL_STATE: {
|
9
|
+
hasLostFocusOnce: boolean;
|
10
|
+
hasFocus: boolean;
|
11
|
+
hasChange: boolean;
|
12
|
+
memory: Tmessage;
|
13
|
+
};
|
14
|
+
type EventFunction = {
|
15
|
+
onChange?: Function;
|
16
|
+
onBlur?: Function;
|
17
|
+
onFocus?: Function;
|
18
|
+
};
|
19
|
+
type FieldFormProps = Tmessage & {
|
20
|
+
className?: string;
|
21
|
+
classModifier?: string;
|
22
|
+
forceDisplayMessage?: boolean;
|
23
|
+
children: ReactNode;
|
24
|
+
setStateMemoryFn?: typeof setStateMemory;
|
25
|
+
onChangeByStateFn?: typeof onChangeByState;
|
26
|
+
setStateOnBlurFn?: typeof setStateOnBlur;
|
27
|
+
setStateOnFocusFn?: typeof setStateOnFocus;
|
28
|
+
initialState?: typeof INITIAL_STATE;
|
29
|
+
};
|
30
|
+
type SetState = (prevState: typeof INITIAL_STATE) => typeof INITIAL_STATE;
|
31
|
+
export declare const setStateMemory: ({ message, messageType }: Tmessage) => SetState;
|
32
|
+
export declare const setStateHasChange: () => SetState;
|
33
|
+
export declare const onChangeByState: (setState: Function, stateHasChange: boolean, setStateHasChangeFn?: () => SetState) => any;
|
34
|
+
export declare const setStateOnBlur: () => SetState;
|
35
|
+
export declare const setStateOnFocus: ({ message, messageType }: Tmessage) => SetState;
|
36
|
+
type GetMessageInfoProps = typeof INITIAL_STATE & Required<Pick<FieldFormProps, "message" | "messageType" | "forceDisplayMessage">>;
|
37
|
+
export declare const getMessageInfo: ({ forceDisplayMessage, hasLostFocusOnce, hasFocus, memory, hasChange, message, messageType, }: GetMessageInfoProps) => Pick<FieldFormProps, "message" | "messageType">;
|
38
|
+
type EventWrapperProps = {
|
39
|
+
props: EventFunction;
|
40
|
+
} & Pick<AddPropsClone, "wrapper">;
|
41
|
+
export declare const eventWrapper: ({ wrapper, props }: EventWrapperProps) => {
|
42
|
+
onChange: (ev: BaseSyntheticEvent) => void;
|
43
|
+
onBlur: (ev: BaseSyntheticEvent) => void;
|
44
|
+
onFocus: (ev: BaseSyntheticEvent) => void;
|
45
|
+
};
|
46
|
+
type AddPropsClone = Omit<RenderChildrenProps, "children"> & {
|
47
|
+
child: ReactElement;
|
48
|
+
classModifier: string;
|
49
|
+
name: string;
|
50
|
+
getMessageClassModifierFn?: typeof FormClassManager.getMessageClassModifier;
|
51
|
+
eventWrapperFn?: Function;
|
52
|
+
};
|
53
|
+
export declare const addPropsClone: ({ message, messageType, classModifier, wrapper, child, name, getMessageClassModifierFn, eventWrapperFn, ...rest }: AddPropsClone) => any;
|
54
|
+
type RenderChildrenProps = {
|
55
|
+
wrapper: EventFunction;
|
56
|
+
} & Partial<Pick<FieldFormProps, "children">> & ReturnType<typeof getMessageInfo>;
|
57
|
+
export declare const renderedChildren: ({ children, wrapper, message, messageType, }: RenderChildrenProps) => ReactNode;
|
58
|
+
export declare const FieldForm: ({ children, message, messageType, className, classModifier, forceDisplayMessage, setStateMemoryFn, onChangeByStateFn, setStateOnBlurFn, setStateOnFocusFn, initialState, }: FieldFormProps) => import("react/jsx-runtime").JSX.Element;
|
59
|
+
export {};
|
@@ -0,0 +1,151 @@
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
2
|
+
import { cloneElement, Children, useState, useRef, useEffect, isValidElement, } from "react";
|
3
|
+
import { getComponentClassName } from "./getComponentClassName";
|
4
|
+
import { MessageTypes } from "./MessageTypes";
|
5
|
+
import { FormClassManager } from "./FormClassManager";
|
6
|
+
const defaultClassName = "md-10";
|
7
|
+
const INITIAL_STATE = {
|
8
|
+
hasLostFocusOnce: false,
|
9
|
+
hasFocus: false,
|
10
|
+
hasChange: false,
|
11
|
+
memory: { message: "", messageType: MessageTypes.error },
|
12
|
+
};
|
13
|
+
export const setStateMemory = ({ message = null, messageType = MessageTypes.error }) => (prevState) => ({
|
14
|
+
...prevState,
|
15
|
+
memory: {
|
16
|
+
message,
|
17
|
+
messageType,
|
18
|
+
},
|
19
|
+
});
|
20
|
+
export const setStateHasChange = () => (prevState) => ({
|
21
|
+
...prevState,
|
22
|
+
hasChange: true,
|
23
|
+
});
|
24
|
+
export const onChangeByState = (setState, stateHasChange, setStateHasChangeFn = setStateHasChange) => !stateHasChange && setState(setStateHasChangeFn());
|
25
|
+
export const setStateOnBlur = () => (prevState) => ({
|
26
|
+
...prevState,
|
27
|
+
hasLostFocusOnce: true,
|
28
|
+
hasFocus: false,
|
29
|
+
});
|
30
|
+
export const setStateOnFocus = ({ message = null, messageType = MessageTypes.error }) => (prevState) => ({
|
31
|
+
...prevState,
|
32
|
+
hasFocus: true,
|
33
|
+
memory: { message, messageType },
|
34
|
+
});
|
35
|
+
export const getMessageInfo = ({ forceDisplayMessage, hasLostFocusOnce, hasFocus, memory, hasChange, message, messageType, }) => {
|
36
|
+
const isDisplayMessage = hasLostFocusOnce || forceDisplayMessage || (hasChange && !hasFocus);
|
37
|
+
if (!isDisplayMessage) {
|
38
|
+
return {
|
39
|
+
message: "",
|
40
|
+
messageType: "",
|
41
|
+
};
|
42
|
+
}
|
43
|
+
return hasFocus
|
44
|
+
? memory
|
45
|
+
: {
|
46
|
+
message,
|
47
|
+
messageType,
|
48
|
+
};
|
49
|
+
};
|
50
|
+
export const eventWrapper = ({ wrapper, props }) => ({
|
51
|
+
onChange: (ev) => {
|
52
|
+
wrapper?.onChange?.(ev);
|
53
|
+
if (props.onChange) {
|
54
|
+
props.onChange(ev);
|
55
|
+
}
|
56
|
+
},
|
57
|
+
onBlur: (ev) => {
|
58
|
+
wrapper?.onBlur?.(ev);
|
59
|
+
if (props.onBlur) {
|
60
|
+
props.onBlur(ev);
|
61
|
+
}
|
62
|
+
},
|
63
|
+
onFocus: (ev) => {
|
64
|
+
wrapper?.onFocus?.(ev);
|
65
|
+
if (props.onFocus) {
|
66
|
+
props.onFocus(ev);
|
67
|
+
}
|
68
|
+
},
|
69
|
+
});
|
70
|
+
export const addPropsClone = ({ message, messageType, classModifier, wrapper, child, name, getMessageClassModifierFn = FormClassManager.getMessageClassModifier, eventWrapperFn = eventWrapper, ...rest }) => {
|
71
|
+
const messageClassModifier = getMessageClassModifierFn(messageType, message, classModifier);
|
72
|
+
const type = { ...rest };
|
73
|
+
const displayName = type?.displayName ?? name;
|
74
|
+
switch (displayName) {
|
75
|
+
case "HelpMessage":
|
76
|
+
return { isVisible: !message };
|
77
|
+
case "FieldError":
|
78
|
+
return { message };
|
79
|
+
case "FieldInput":
|
80
|
+
return { classModifier: messageClassModifier };
|
81
|
+
case "EnhancedInputRadio":
|
82
|
+
case "EnhancedInputCheckbox":
|
83
|
+
return {
|
84
|
+
...eventWrapperFn({ wrapper, props: child.props }),
|
85
|
+
classModifier: messageClassModifier,
|
86
|
+
};
|
87
|
+
case "EnhancedInput":
|
88
|
+
return {
|
89
|
+
...eventWrapperFn({ wrapper, props: child.props }),
|
90
|
+
};
|
91
|
+
default:
|
92
|
+
return {};
|
93
|
+
}
|
94
|
+
};
|
95
|
+
export const renderedChildren = ({ children, wrapper, message, messageType, }) => Children.map(children, (child) => {
|
96
|
+
if (!isValidElement(child) || typeof child.type === "string") {
|
97
|
+
return child;
|
98
|
+
}
|
99
|
+
const props = {
|
100
|
+
...child.props,
|
101
|
+
};
|
102
|
+
if (child.props.children) {
|
103
|
+
const subChildren = renderedChildren({
|
104
|
+
children: child.props.children,
|
105
|
+
wrapper,
|
106
|
+
message,
|
107
|
+
messageType,
|
108
|
+
});
|
109
|
+
if (subChildren !== null) {
|
110
|
+
props.children = subChildren;
|
111
|
+
}
|
112
|
+
}
|
113
|
+
return cloneElement(child, {
|
114
|
+
...props,
|
115
|
+
...addPropsClone({
|
116
|
+
...child.type,
|
117
|
+
name: child.type.name,
|
118
|
+
message,
|
119
|
+
messageType,
|
120
|
+
classModifier: props.classModifier,
|
121
|
+
wrapper,
|
122
|
+
child,
|
123
|
+
}),
|
124
|
+
});
|
125
|
+
});
|
126
|
+
export const FieldForm = ({ children, message = null, messageType = MessageTypes.error, className = defaultClassName, classModifier = "", forceDisplayMessage = false, setStateMemoryFn = setStateMemory, onChangeByStateFn = onChangeByState, setStateOnBlurFn = setStateOnBlur, setStateOnFocusFn = setStateOnFocus, initialState = INITIAL_STATE, }) => {
|
127
|
+
const [state, setState] = useState(initialState);
|
128
|
+
const previousForceDisplayMessage = useRef(forceDisplayMessage);
|
129
|
+
useEffect(() => {
|
130
|
+
if (previousForceDisplayMessage.current !== forceDisplayMessage) {
|
131
|
+
setState(setStateMemoryFn({ message, messageType }));
|
132
|
+
}
|
133
|
+
}, [
|
134
|
+
forceDisplayMessage,
|
135
|
+
message,
|
136
|
+
messageType,
|
137
|
+
previousForceDisplayMessage,
|
138
|
+
setState,
|
139
|
+
setStateMemoryFn,
|
140
|
+
]);
|
141
|
+
const onChange = () => onChangeByStateFn(setState, state?.hasChange);
|
142
|
+
const onBlur = () => setState(setStateOnBlurFn());
|
143
|
+
const onFocus = () => setState(setStateOnFocusFn({ message, messageType }));
|
144
|
+
const childrenCloned = renderedChildren({
|
145
|
+
children,
|
146
|
+
wrapper: { onFocus, onChange, onBlur },
|
147
|
+
...getMessageInfo({ ...state, forceDisplayMessage, message, messageType }),
|
148
|
+
});
|
149
|
+
const subComponentClassName = getComponentClassName(className, classModifier, defaultClassName);
|
150
|
+
return _jsx("div", { className: subComponentClassName, children: childrenCloned });
|
151
|
+
};
|
@@ -0,0 +1,9 @@
|
|
1
|
+
import { ReactNode } from "react";
|
2
|
+
type FieldProps = {
|
3
|
+
isVisible?: boolean;
|
4
|
+
className?: string;
|
5
|
+
classModifier?: string;
|
6
|
+
children?: ReactNode;
|
7
|
+
};
|
8
|
+
export declare const FieldInput: ({ children, className, classModifier, isVisible, }: FieldProps) => import("react/jsx-runtime").JSX.Element | null;
|
9
|
+
export {};
|
@@ -0,0 +1,9 @@
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
2
|
+
import { getComponentClassName } from "./getComponentClassName";
|
3
|
+
export const FieldInput = ({ children, className = "", classModifier = "", isVisible = true, }) => {
|
4
|
+
if (!isVisible) {
|
5
|
+
return null;
|
6
|
+
}
|
7
|
+
const newClassName = getComponentClassName(className, classModifier, "");
|
8
|
+
return _jsx("div", { className: newClassName, children: children });
|
9
|
+
};
|
@@ -0,0 +1,7 @@
|
|
1
|
+
import { ReactNode } from "react";
|
2
|
+
export declare const FormClassManager: {
|
3
|
+
getFieldInputClassModifier: (modifier: string, disabled: boolean) => string;
|
4
|
+
getInputClassModifier: (modifier: string, children: ReactNode) => string;
|
5
|
+
getModifier: (messageType: string) => string;
|
6
|
+
getMessageClassModifier: (messageType: "error" | "success" | "warning", message?: string | null, modifier?: string) => string;
|
7
|
+
};
|
@@ -0,0 +1,33 @@
|
|
1
|
+
import { MessageTypes } from "./MessageTypes";
|
2
|
+
const getFieldInputClassModifier = (modifier, disabled) => disabled ? `${modifier} disabled` : modifier;
|
3
|
+
const getInputClassModifier = (modifier, children) => children ? `${modifier} hasinfobulle` : modifier;
|
4
|
+
const getModifier = (messageType) => {
|
5
|
+
let modifier = "error";
|
6
|
+
switch (messageType) {
|
7
|
+
case MessageTypes.success:
|
8
|
+
modifier = "success";
|
9
|
+
break;
|
10
|
+
case MessageTypes.warning:
|
11
|
+
modifier = "warning";
|
12
|
+
break;
|
13
|
+
default:
|
14
|
+
break;
|
15
|
+
}
|
16
|
+
return modifier;
|
17
|
+
};
|
18
|
+
const getMessageClassModifier = (messageType, message, modifier) => {
|
19
|
+
if (!message) {
|
20
|
+
return "";
|
21
|
+
}
|
22
|
+
const messageModifier = getModifier(messageType);
|
23
|
+
if (!messageModifier) {
|
24
|
+
return "";
|
25
|
+
}
|
26
|
+
return modifier ? `${modifier} ${messageModifier}` : messageModifier;
|
27
|
+
};
|
28
|
+
export const FormClassManager = {
|
29
|
+
getFieldInputClassModifier,
|
30
|
+
getInputClassModifier,
|
31
|
+
getModifier,
|
32
|
+
getMessageClassModifier,
|
33
|
+
};
|
@@ -0,0 +1 @@
|
|
1
|
+
export declare const getComponentClassName: (className?: string, classModifier?: string, defaultClassName?: string) => string;
|
@@ -0,0 +1,27 @@
|
|
1
|
+
import classNames from "classnames";
|
2
|
+
const getLastClassName = (classNameToUse) => {
|
3
|
+
if (!classNameToUse) {
|
4
|
+
return null;
|
5
|
+
}
|
6
|
+
return classNameToUse.split(" ").filter(Boolean).at(-1);
|
7
|
+
};
|
8
|
+
const listClassModifier = (classModifier) => {
|
9
|
+
if (!classModifier) {
|
10
|
+
return [];
|
11
|
+
}
|
12
|
+
return classModifier.split(" ");
|
13
|
+
};
|
14
|
+
export const getComponentClassName = (className, classModifier, defaultClassName) => {
|
15
|
+
const classNameToUse = className || defaultClassName;
|
16
|
+
if (!classNameToUse) {
|
17
|
+
return "";
|
18
|
+
}
|
19
|
+
const classWithoutModifier = getLastClassName(classNameToUse);
|
20
|
+
const modifiers = listClassModifier(classModifier);
|
21
|
+
const modifiersObject = modifiers
|
22
|
+
.filter((it) => /\S/.test(it))
|
23
|
+
.map((it) => {
|
24
|
+
return `${classWithoutModifier}--${it}`;
|
25
|
+
});
|
26
|
+
return classNames(classNameToUse, modifiersObject);
|
27
|
+
};
|
@@ -0,0 +1 @@
|
|
1
|
+
export const getFirstId = (options) => !options || options.length === 0 ? "" : options[0].id;
|
@@ -0,0 +1 @@
|
|
1
|
+
export declare function getOptionClassName(className: string, classModifier: string, defaultClassName: string, disabled: boolean): string;
|
@@ -0,0 +1,10 @@
|
|
1
|
+
import { getComponentClassName } from "./getComponentClassName";
|
2
|
+
export function getOptionClassName(className, classModifier, defaultClassName, disabled) {
|
3
|
+
const classModifierWithDisabled = [
|
4
|
+
classModifier,
|
5
|
+
disabled ? "disabled" : undefined,
|
6
|
+
]
|
7
|
+
.filter(Boolean)
|
8
|
+
.join(" ");
|
9
|
+
return getComponentClassName(className, classModifierWithDisabled, defaultClassName);
|
10
|
+
}
|
@@ -0,0 +1,31 @@
|
|
1
|
+
import { ReactNode } from "react";
|
2
|
+
export { Field } from "./Field";
|
3
|
+
export { FieldInput } from "./FieldInput";
|
4
|
+
export { MessageTypes } from "./MessageTypes";
|
5
|
+
export { FieldError } from "./FieldError";
|
6
|
+
export { FormClassManager } from "./FormClassManager";
|
7
|
+
export { FieldForm } from "./FieldForm";
|
8
|
+
export { HelpMessage } from "./HelpMessage";
|
9
|
+
export { InputList } from "./InputList";
|
10
|
+
export { useInputClassModifier } from "./useInputClassModifier";
|
11
|
+
export { getOptionClassName } from "./getOptionClassName";
|
12
|
+
export { useOptionsWithId } from "./useOptionsWithId";
|
13
|
+
export { getComponentClassName } from "./getComponentClassName";
|
14
|
+
export { getFirstId } from "./getFirstId";
|
15
|
+
export type Option = {
|
16
|
+
id?: string;
|
17
|
+
icon?: ReactNode;
|
18
|
+
label: ReactNode;
|
19
|
+
description?: ReactNode;
|
20
|
+
value: string;
|
21
|
+
disabled?: boolean;
|
22
|
+
} & React.InputHTMLAttributes<HTMLInputElement>;
|
23
|
+
type BaseFormEvent = {
|
24
|
+
id: string;
|
25
|
+
name: string;
|
26
|
+
};
|
27
|
+
export type FormEvent = (BaseFormEvent & {
|
28
|
+
value: string;
|
29
|
+
}) | (BaseFormEvent & {
|
30
|
+
values: string[];
|
31
|
+
});
|
@@ -0,0 +1,13 @@
|
|
1
|
+
export { Field } from "./Field";
|
2
|
+
export { FieldInput } from "./FieldInput";
|
3
|
+
export { MessageTypes } from "./MessageTypes";
|
4
|
+
export { FieldError } from "./FieldError";
|
5
|
+
export { FormClassManager } from "./FormClassManager";
|
6
|
+
export { FieldForm } from "./FieldForm";
|
7
|
+
export { HelpMessage } from "./HelpMessage";
|
8
|
+
export { InputList } from "./InputList";
|
9
|
+
export { useInputClassModifier } from "./useInputClassModifier";
|
10
|
+
export { getOptionClassName } from "./getOptionClassName";
|
11
|
+
export { useOptionsWithId } from "./useOptionsWithId";
|
12
|
+
export { getComponentClassName } from "./getComponentClassName";
|
13
|
+
export { getFirstId } from "./getFirstId";
|
@@ -0,0 +1,12 @@
|
|
1
|
+
export function useInputClassModifier(classModifier, disabled, hasChildren) {
|
2
|
+
return {
|
3
|
+
inputClassModifier: [
|
4
|
+
classModifier ?? "",
|
5
|
+
hasChildren ? "hasinfobulle" : "",
|
6
|
+
].join(" "),
|
7
|
+
inputFieldClassModifier: [
|
8
|
+
classModifier ?? "",
|
9
|
+
disabled ? "disabled" : "",
|
10
|
+
].join(" "),
|
11
|
+
};
|
12
|
+
}
|
@@ -0,0 +1,13 @@
|
|
1
|
+
import { useId } from "react";
|
2
|
+
export function useOptionsWithId(options, id) {
|
3
|
+
const reactId = useId();
|
4
|
+
if (!options) {
|
5
|
+
return [];
|
6
|
+
}
|
7
|
+
return options.map((option, index) => {
|
8
|
+
if (option.id) {
|
9
|
+
return option;
|
10
|
+
}
|
11
|
+
return { ...option, id: `${id ?? reactId}_${index}` };
|
12
|
+
});
|
13
|
+
}
|
@@ -0,0 +1,9 @@
|
|
1
|
+
import { type ReactNode } from "react";
|
2
|
+
type IconBgProps = {
|
3
|
+
isDisabled?: boolean;
|
4
|
+
className?: string;
|
5
|
+
classModifier?: string;
|
6
|
+
children: ReactNode;
|
7
|
+
};
|
8
|
+
export declare const IconBg: ({ children, className, classModifier, isDisabled, }: IconBgProps) => import("react/jsx-runtime").JSX.Element;
|
9
|
+
export {};
|
@@ -0,0 +1,13 @@
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
2
|
+
import { useMemo } from "react";
|
3
|
+
import { getComponentClassName } from "../utilities";
|
4
|
+
export const IconBg = ({ children, className, classModifier, isDisabled = false, }) => {
|
5
|
+
const componentClassName = useMemo(() => {
|
6
|
+
let newClassModifier = classModifier;
|
7
|
+
if (isDisabled) {
|
8
|
+
newClassModifier += " disabled";
|
9
|
+
}
|
10
|
+
return getComponentClassName(className, newClassModifier, "af-icon-bg");
|
11
|
+
}, [classModifier, isDisabled, className]);
|
12
|
+
return _jsx("div", { className: componentClassName, children: children });
|
13
|
+
};
|
@@ -0,0 +1,23 @@
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
2
|
+
import article from "@material-symbols/svg-400/outlined/article-fill.svg";
|
3
|
+
import { IconBg } from ".";
|
4
|
+
import { Svg } from "../Svg";
|
5
|
+
const meta = {
|
6
|
+
title: "Components/IconBg",
|
7
|
+
parameters: {
|
8
|
+
backgrounds: {
|
9
|
+
default: "dark",
|
10
|
+
},
|
11
|
+
},
|
12
|
+
component: IconBg,
|
13
|
+
};
|
14
|
+
export default meta;
|
15
|
+
export const Default = {
|
16
|
+
name: "IconBg",
|
17
|
+
render: (args) => _jsx(IconBg, { ...args }),
|
18
|
+
args: {
|
19
|
+
children: _jsx(Svg, { src: article }),
|
20
|
+
isDisabled: false,
|
21
|
+
classModifier: "secondary",
|
22
|
+
},
|
23
|
+
};
|
@@ -0,0 +1 @@
|
|
1
|
+
export {};
|
@@ -0,0 +1,22 @@
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
2
|
+
import { render, screen } from "@testing-library/react";
|
3
|
+
import { IconBg } from "..";
|
4
|
+
describe("IconBg", () => {
|
5
|
+
it("should render children", () => {
|
6
|
+
render(_jsx(IconBg, { children: "An IconBg" }));
|
7
|
+
const iconBg = screen.getByText("An IconBg");
|
8
|
+
expect(iconBg).toHaveClass("af-icon-bg");
|
9
|
+
});
|
10
|
+
it("should have custom class", () => {
|
11
|
+
render(_jsx(IconBg, { className: "custom-class", children: "An IconBg" }));
|
12
|
+
expect(screen.getByText("An IconBg")).toHaveClass("custom-class");
|
13
|
+
});
|
14
|
+
it("should have custom class with modifier", () => {
|
15
|
+
render(_jsx(IconBg, { className: "custom-class", classModifier: "modifier", children: "An IconBg" }));
|
16
|
+
expect(screen.getByText("An IconBg")).toHaveClass("custom-class custom-class--modifier");
|
17
|
+
});
|
18
|
+
it("should be disabled", () => {
|
19
|
+
render(_jsx(IconBg, { className: "custom-class", isDisabled: true, children: "An IconBg" }));
|
20
|
+
expect(screen.getByText("An IconBg")).toHaveClass("custom-class custom-class--disabled");
|
21
|
+
});
|
22
|
+
});
|
@@ -0,0 +1,20 @@
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
2
|
+
import facebook from "../../assets/svg/facebook.svg";
|
3
|
+
import linkedin from "../../assets/svg/linkedin.svg";
|
4
|
+
import twitterx from "../../assets/svg/twitterx.svg";
|
5
|
+
import youtube from "../../assets/svg/youtube.svg";
|
6
|
+
import { Svg } from "../../Svg";
|
7
|
+
export const DynamicIcon = ({ iconName, className, }) => {
|
8
|
+
switch (iconName) {
|
9
|
+
case "facebook":
|
10
|
+
return _jsx(Svg, { src: facebook, className: className });
|
11
|
+
case "twitter":
|
12
|
+
return _jsx(Svg, { src: twitterx, className: className });
|
13
|
+
case "youtube":
|
14
|
+
return _jsx(Svg, { src: youtube, className: className });
|
15
|
+
case "linkedin":
|
16
|
+
return _jsx(Svg, { src: linkedin, className: className });
|
17
|
+
default:
|
18
|
+
return iconName;
|
19
|
+
}
|
20
|
+
};
|
@@ -0,0 +1,14 @@
|
|
1
|
+
import "@axa-fr/design-system-look-and-feel-css/dist/common/reboot.scss";
|
2
|
+
import "@axa-fr/design-system-look-and-feel-css/dist/Layout/Footer/Footer.scss";
|
3
|
+
import { FC } from "react";
|
4
|
+
import { SocialMedia } from "./MenuIcons";
|
5
|
+
import { Link } from "./MenuLink";
|
6
|
+
type Props = {
|
7
|
+
links: Link[];
|
8
|
+
socialMedias?: SocialMedia[];
|
9
|
+
copyright: string;
|
10
|
+
expandLinkText: string;
|
11
|
+
id?: string;
|
12
|
+
};
|
13
|
+
export declare const Footer: FC<Props>;
|
14
|
+
export {};
|