@hazelcast/ui 3.0.13 → 4.0.1-canary.10
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/README.md +1 -29
- package/lib/components/Alert.js +2 -2
- package/lib/components/Alert.js.map +1 -1
- package/lib/components/AppHeader/AppHeaderMenu/AppHeaderMenu.js +1 -1
- package/lib/components/AppHeader/AppHeaderMenu/AppHeaderMenu.js.map +1 -1
- package/lib/components/AppHeader/SelectCluster/SelectCluster.js +1 -1
- package/lib/components/AppHeader/SelectCluster/SelectCluster.js.map +1 -1
- package/lib/components/AppSidebar/AppSidebar.js +1 -1
- package/lib/components/AppSidebar/AppSidebar.js.map +1 -1
- package/lib/components/AppSidebar/AppSidebarFavoriteButton/AppSidebarFavoriteButton.js +1 -1
- package/lib/components/AppSidebar/AppSidebarFavoriteButton/AppSidebarFavoriteButton.js.map +1 -1
- package/lib/components/AppSidebar/AppSidebarItem/AppSidebarItem.d.ts +1 -3
- package/lib/components/AppSidebar/AppSidebarItem/AppSidebarItem.js +11 -10
- package/lib/components/AppSidebar/AppSidebarItem/AppSidebarItem.js.map +1 -1
- package/lib/components/AutocompleteField.d.ts +1 -3
- package/lib/components/AutocompleteField.js +4 -5
- package/lib/components/AutocompleteField.js.map +1 -1
- package/lib/components/AutocompleteField.module.css +183 -0
- package/lib/components/Badge.d.ts +1 -2
- package/lib/components/Badge.js +3 -7
- package/lib/components/Badge.js.map +1 -1
- package/lib/components/Badge.module.scss +18 -29
- package/lib/components/Button.d.ts +10 -33
- package/lib/components/Button.js +31 -51
- package/lib/components/Button.js.map +1 -1
- package/lib/components/Button.module.css +188 -0
- package/lib/components/ButtonGroup.d.ts +10 -0
- package/lib/components/ButtonGroup.js +6 -0
- package/lib/components/ButtonGroup.js.map +1 -0
- package/lib/components/ButtonGroup.module.css +29 -0
- package/lib/components/Calendar/components/CalendarTime.js +1 -1
- package/lib/components/Calendar/components/CalendarTime.js.map +1 -1
- package/lib/components/Checkbox.js +1 -1
- package/lib/components/Checkbox.js.map +1 -1
- package/lib/components/Checkbox.module.css +97 -0
- package/lib/components/Dialog.js +1 -1
- package/lib/components/Dialog.js.map +1 -1
- package/lib/components/Error.d.ts +2 -2
- package/lib/components/Help.d.ts +2 -2
- package/lib/components/Help.js +3 -2
- package/lib/components/Help.js.map +1 -1
- package/lib/components/IconButton.d.ts +8 -8
- package/lib/components/IconButton.js +24 -13
- package/lib/components/IconButton.js.map +1 -1
- package/lib/components/IconButton.module.css +145 -0
- package/lib/components/InteractiveList.d.ts +1 -1
- package/lib/components/InteractiveList.js +5 -5
- package/lib/components/InteractiveList.js.map +1 -1
- package/lib/components/InteractiveList.module.css +59 -0
- package/lib/components/Modal.d.ts +19 -2
- package/lib/components/Modal.js +56 -25
- package/lib/components/Modal.js.map +1 -1
- package/lib/components/Modal.module.css +222 -0
- package/lib/components/NumberField.d.ts +2 -3
- package/lib/components/NumberField.js +7 -10
- package/lib/components/NumberField.js.map +1 -1
- package/lib/components/NumberField.module.css +73 -0
- package/lib/components/Pagination.js +7 -7
- package/lib/components/Pagination.js.map +1 -1
- package/lib/components/PasswordField.d.ts +1 -2
- package/lib/components/PasswordField.js +2 -2
- package/lib/components/PasswordField.js.map +1 -1
- package/lib/components/PasswordField.module.scss +3 -0
- package/lib/components/Select/CheckableSelectField.d.ts +0 -1
- package/lib/components/Select/CheckableSelectField.js +12 -6
- package/lib/components/Select/CheckableSelectField.js.map +1 -1
- package/lib/components/Select/CheckableSelectField.module.css +112 -0
- package/lib/components/Select/Common.js +3 -3
- package/lib/components/Select/Common.js.map +1 -1
- package/lib/components/Select/Common.module.css +35 -0
- package/lib/components/Select/MultiSelectField.d.ts +1 -1
- package/lib/components/Select/MultiSelectField.js +3 -5
- package/lib/components/Select/MultiSelectField.js.map +1 -1
- package/lib/components/Select/MultiSelectField.module.css +60 -0
- package/lib/components/Select/SelectField.d.ts +2 -3
- package/lib/components/Select/SelectField.js +4 -6
- package/lib/components/Select/SelectField.js.map +1 -1
- package/lib/components/Select/SelectField.module.css +202 -0
- package/lib/components/SimpleTable.d.ts +25 -6
- package/lib/components/SimpleTable.js +27 -12
- package/lib/components/SimpleTable.js.map +1 -1
- package/lib/components/SimpleTable.module.css +80 -0
- package/lib/components/Table/Cell.js +6 -7
- package/lib/components/Table/Cell.js.map +1 -1
- package/lib/components/Tabs/Tab.js +1 -1
- package/lib/components/Tabs/Tab.js.map +1 -1
- package/lib/components/Tabs/Tab.module.css +58 -0
- package/lib/components/Tabs/TabList.js +1 -1
- package/lib/components/Tabs/TabList.js.map +1 -1
- package/lib/components/Tabs/TabList.module.css +9 -0
- package/lib/components/Tabs/TabPanel.js +1 -1
- package/lib/components/Tabs/TabPanel.js.map +1 -1
- package/lib/components/Tabs/TabPanel.module.css +7 -0
- package/lib/components/TextArea.js +1 -1
- package/lib/components/TextArea.js.map +1 -1
- package/lib/components/TextArea.module.css +109 -0
- package/lib/components/TextField.d.ts +2 -2
- package/lib/components/TextField.js +2 -2
- package/lib/components/TextField.js.map +1 -1
- package/lib/components/TextField.module.css +195 -0
- package/lib/components/Toast/Toast.d.ts +12 -0
- package/lib/components/Toast/Toast.js +26 -0
- package/lib/components/Toast/Toast.js.map +1 -0
- package/lib/components/Toast/Toast.module.css +98 -0
- package/lib/components/Toast/index.d.ts +4 -0
- package/lib/components/Toast/index.js +5 -0
- package/lib/components/Toast/index.js.map +1 -0
- package/lib/components/Toggle.js +2 -3
- package/lib/components/Toggle.js.map +1 -1
- package/lib/components/Toggle.module.css +120 -0
- package/lib/components/Tooltip.d.ts +35 -22
- package/lib/components/Tooltip.js +22 -47
- package/lib/components/Tooltip.js.map +1 -1
- package/lib/components/Tooltip.module.css +128 -0
- package/lib/components/TruncatedText.d.ts +2 -2
- package/lib/components/TruncatedText.js +3 -3
- package/lib/components/TruncatedText.js.map +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.js.map +1 -1
- package/lib/old/AutocompleteField.d.ts +49 -0
- package/lib/old/AutocompleteField.js +166 -0
- package/lib/old/AutocompleteField.js.map +1 -0
- package/lib/old/AutocompleteFieldFormik.d.ts +9 -0
- package/lib/old/AutocompleteFieldFormik.js +19 -0
- package/lib/old/AutocompleteFieldFormik.js.map +1 -0
- package/lib/old/Button.d.ts +75 -0
- package/lib/old/Button.js +37 -0
- package/lib/old/Button.js.map +1 -0
- package/lib/{components/Button.module.scss → old/ButtonLegacy.module.scss} +2 -8
- package/lib/old/Checkbox.d.ts +35 -0
- package/lib/old/Checkbox.js +38 -0
- package/lib/old/Checkbox.js.map +1 -0
- package/lib/old/CheckboxFormik.d.ts +10 -0
- package/lib/old/CheckboxFormik.js +17 -0
- package/lib/old/CheckboxFormik.js.map +1 -0
- package/lib/old/IconButton.d.ts +49 -0
- package/lib/old/IconButton.js +25 -0
- package/lib/old/IconButton.js.map +1 -0
- package/lib/old/InteractiveList.d.ts +34 -0
- package/lib/old/InteractiveList.js +43 -0
- package/lib/old/InteractiveList.js.map +1 -0
- package/lib/old/InteractiveListFormik.d.ts +10 -0
- package/lib/old/InteractiveListFormik.js +75 -0
- package/lib/old/InteractiveListFormik.js.map +1 -0
- package/lib/old/Modal.d.ts +26 -0
- package/lib/old/Modal.js +41 -0
- package/lib/old/Modal.js.map +1 -0
- package/lib/old/NumberField.d.ts +33 -0
- package/lib/old/NumberField.js +141 -0
- package/lib/old/NumberField.js.map +1 -0
- package/lib/old/NumberFieldFormik.d.ts +10 -0
- package/lib/old/NumberFieldFormik.js +52 -0
- package/lib/old/NumberFieldFormik.js.map +1 -0
- package/lib/old/PasswordField.d.ts +29 -0
- package/lib/old/PasswordField.js +26 -0
- package/lib/old/PasswordField.js.map +1 -0
- package/lib/old/PasswordFieldFormik.d.ts +10 -0
- package/lib/old/PasswordFieldFormik.js +17 -0
- package/lib/old/PasswordFieldFormik.js.map +1 -0
- package/lib/old/PasswordFieldLegacy.module.scss +26 -0
- package/lib/old/Select/CheckableSelectField.d.ts +40 -0
- package/lib/old/Select/CheckableSelectField.js +77 -0
- package/lib/old/Select/CheckableSelectField.js.map +1 -0
- package/lib/old/Select/CheckableSelectFieldFormik.d.ts +10 -0
- package/lib/old/Select/CheckableSelectFieldFormik.js +19 -0
- package/lib/old/Select/CheckableSelectFieldFormik.js.map +1 -0
- package/lib/old/Select/Common.d.ts +5 -0
- package/lib/old/Select/Common.js +54 -0
- package/lib/old/Select/Common.js.map +1 -0
- package/lib/old/Select/MultiSelectField.d.ts +28 -0
- package/lib/old/Select/MultiSelectField.js +113 -0
- package/lib/old/Select/MultiSelectField.js.map +1 -0
- package/lib/old/Select/MultiSelectFieldFormik.d.ts +11 -0
- package/lib/old/Select/MultiSelectFieldFormik.js +19 -0
- package/lib/old/Select/MultiSelectFieldFormik.js.map +1 -0
- package/lib/old/Select/SelectField.d.ts +43 -0
- package/lib/old/Select/SelectField.js +103 -0
- package/lib/old/Select/SelectField.js.map +1 -0
- package/lib/old/Select/SelectFieldFormik.d.ts +10 -0
- package/lib/old/Select/SelectFieldFormik.js +19 -0
- package/lib/old/Select/SelectFieldFormik.js.map +1 -0
- package/lib/old/Select/helpers.d.ts +12 -0
- package/lib/old/Select/helpers.js +29 -0
- package/lib/old/Select/helpers.js.map +1 -0
- package/lib/old/SimpleTable.d.ts +11 -0
- package/lib/old/SimpleTable.js +26 -0
- package/lib/old/SimpleTable.js.map +1 -0
- package/lib/old/Tabs.d.ts +53 -0
- package/lib/old/Tabs.js +92 -0
- package/lib/old/Tabs.js.map +1 -0
- package/lib/{components/Tabs/Tab.module.scss → old/TabsLegacy.module.scss} +14 -6
- package/lib/old/TextArea.d.ts +19 -0
- package/lib/old/TextArea.js +25 -0
- package/lib/old/TextArea.js.map +1 -0
- package/lib/old/TextAreaFormik.d.ts +9 -0
- package/lib/old/TextAreaFormik.js +11 -0
- package/lib/old/TextAreaFormik.js.map +1 -0
- package/lib/old/TextField.d.ts +50 -0
- package/lib/old/TextField.js +65 -0
- package/lib/old/TextField.js.map +1 -0
- package/lib/old/TextFieldFormik.d.ts +11 -0
- package/lib/old/TextFieldFormik.js +23 -0
- package/lib/old/TextFieldFormik.js.map +1 -0
- package/lib/{components/TextField.module.scss → old/TextFieldLegacy.module.scss} +0 -1
- package/lib/{components → old}/Toast.js +2 -2
- package/lib/old/Toast.js.map +1 -0
- package/lib/old/Toggle.d.ts +21 -0
- package/lib/old/Toggle.js +22 -0
- package/lib/old/Toggle.js.map +1 -0
- package/lib/old/ToggleFormik.d.ts +9 -0
- package/lib/old/ToggleFormik.js +12 -0
- package/lib/old/ToggleFormik.js.map +1 -0
- package/lib/{components/Toggle.module.scss → old/ToggleLegacy.module.scss} +0 -2
- package/lib/old/Tooltip.d.ts +34 -0
- package/lib/old/Tooltip.js +57 -0
- package/lib/old/Tooltip.js.map +1 -0
- package/lib/old/Tooltip.module.scss +45 -0
- package/lib/old/index.d.ts +58 -0
- package/lib/old/index.js +34 -0
- package/lib/old/index.js.map +1 -0
- package/package.json +5 -11
- package/styles/constants/_colors.scss +18 -0
- package/styles/variables.css +162 -0
- package/lib/components/Tabs/TabList.module.scss +0 -3
- package/lib/components/Tabs/TabPanel.module.scss +0 -7
- package/lib/components/Toast.js.map +0 -1
- /package/lib/{components/AutocompleteField.module.scss → old/AutocompleteFieldLegacy.module.scss} +0 -0
- /package/lib/{components/Checkbox.module.scss → old/CheckboxLegacy.module.scss} +0 -0
- /package/lib/{components/IconButton.module.scss → old/IconButtonLegacy.module.scss} +0 -0
- /package/lib/{components/InteractiveList.module.scss → old/InteractiveListLegacy.module.scss} +0 -0
- /package/lib/{components/Modal.module.scss → old/ModalLegacy.module.scss} +0 -0
- /package/lib/{components/NumberField.module.scss → old/NumberFieldLegacy.module.scss} +0 -0
- /package/lib/{components/Select/CheckableSelectField.module.scss → old/Select/CheckableSelectFieldLegacy.module.scss} +0 -0
- /package/lib/{components/Select/Common.module.scss → old/Select/CommonLegacy.module.scss} +0 -0
- /package/lib/{components/Select/MultiSelectField.module.scss → old/Select/MultiSelectFieldLegacy.module.scss} +0 -0
- /package/lib/{components/Select/SelectField.module.scss → old/Select/SelectFieldLegacy.module.scss} +0 -0
- /package/lib/{components/SimpleTable.module.scss → old/SimpleTableLegacy.module.scss} +0 -0
- /package/lib/{components/TextArea.module.scss → old/TextAreaLegacy.module.scss} +0 -0
- /package/lib/{components → old}/Toast.d.ts +0 -0
- /package/lib/{components/Toast.module.scss → old/ToastLegacy.module.scss} +0 -0
|
@@ -1,34 +1,47 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
1
|
+
import React, { CSSProperties, ReactElement, ReactNode } from 'react';
|
|
2
|
+
export type TooltipSide = 'top' | 'right' | 'bottom' | 'left';
|
|
3
|
+
export type TooltipAlign = 'start' | 'center' | 'end';
|
|
3
4
|
export type TooltipProps = {
|
|
5
|
+
/** The trigger element */
|
|
6
|
+
children: ReactElement;
|
|
7
|
+
/** Content displayed inside the tooltip */
|
|
4
8
|
content: ReactNode;
|
|
5
|
-
|
|
6
|
-
|
|
9
|
+
/** Preferred side relative to the trigger */
|
|
10
|
+
side?: TooltipSide;
|
|
11
|
+
/** Alignment along the side axis */
|
|
12
|
+
align?: TooltipAlign;
|
|
13
|
+
/** Distance in pixels between trigger and tooltip */
|
|
14
|
+
sideOffset?: number;
|
|
15
|
+
/** Automatically shift to avoid viewport overflow */
|
|
16
|
+
avoidCollisions?: boolean;
|
|
17
|
+
/** Controlled open state */
|
|
18
|
+
open?: boolean;
|
|
19
|
+
/** Delay in ms before the tooltip opens (default: 300) */
|
|
20
|
+
delayDuration?: number;
|
|
21
|
+
/** Show the arrow pointer */
|
|
7
22
|
arrow?: boolean;
|
|
23
|
+
/** Color variant */
|
|
8
24
|
color?: 'dark' | 'secondary';
|
|
9
|
-
|
|
10
|
-
placement?: Placement;
|
|
11
|
-
visible?: boolean;
|
|
12
|
-
className?: string;
|
|
13
|
-
children: (ref: (node: ReferenceType | null) => void) => ReactElement;
|
|
25
|
+
/** CSS word-break override */
|
|
14
26
|
wordBreak?: CSSProperties['wordBreak'];
|
|
27
|
+
/** z-index for the tooltip portal */
|
|
15
28
|
zIndex?: number;
|
|
16
|
-
|
|
29
|
+
/** Additional className on the tooltip content */
|
|
30
|
+
className?: string;
|
|
31
|
+
/** ID for aria-labelledby */
|
|
32
|
+
id?: string;
|
|
17
33
|
};
|
|
18
34
|
/**
|
|
19
35
|
* ### Purpose
|
|
20
|
-
*
|
|
21
|
-
* A tooltip with this content is displayed when user hovers over a target element.
|
|
22
|
-
*
|
|
23
|
-
* ### General info
|
|
24
|
-
* - Tooltip automatically detects viewport overflow and changes placement to prevent it.
|
|
25
|
-
* - Offset (space between a target and tooltip elements) can be also configured via "offset" property.
|
|
26
|
-
* - If "content" property is undefined, tooltip element will be removed from DOM entirely.
|
|
27
|
-
* - It's required to set the "id" property which will be assigned to the tooltip. This id parameter can be then used as a value of "aria-labelledby" attribute.
|
|
28
|
-
* - Use `updateToken` prop to update the tooltip position.
|
|
29
|
-
* - Use `tooltipContainer` prop to change the tooltip portal container. Defaults to `body`.
|
|
36
|
+
* Displays additional information when hovering over a trigger element.
|
|
30
37
|
*
|
|
31
38
|
* ### Usage
|
|
32
|
-
*
|
|
39
|
+
* Pass the trigger element as `children` and the tooltip text/content via `content`.
|
|
40
|
+
*
|
|
41
|
+
* ```tsx
|
|
42
|
+
* <Tooltip content="Save changes">
|
|
43
|
+
* <button>Save</button>
|
|
44
|
+
* </Tooltip>
|
|
45
|
+
* ```
|
|
33
46
|
*/
|
|
34
|
-
export declare const Tooltip:
|
|
47
|
+
export declare const Tooltip: ({ children, content, side, align, sideOffset, avoidCollisions, open, delayDuration, arrow: showArrow, color, wordBreak, zIndex, className, id, }: TooltipProps) => React.JSX.Element;
|
|
@@ -1,56 +1,31 @@
|
|
|
1
|
-
import React
|
|
2
|
-
import
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import * as TooltipPrimitive from '@radix-ui/react-tooltip';
|
|
3
3
|
import cn from 'classnames';
|
|
4
|
-
import styles from './Tooltip.module.
|
|
5
|
-
import { canUseDOM } from '../utils/ssr';
|
|
4
|
+
import styles from './Tooltip.module.css';
|
|
6
5
|
/**
|
|
7
6
|
* ### Purpose
|
|
8
|
-
*
|
|
9
|
-
* A tooltip with this content is displayed when user hovers over a target element.
|
|
10
|
-
*
|
|
11
|
-
* ### General info
|
|
12
|
-
* - Tooltip automatically detects viewport overflow and changes placement to prevent it.
|
|
13
|
-
* - Offset (space between a target and tooltip elements) can be also configured via "offset" property.
|
|
14
|
-
* - If "content" property is undefined, tooltip element will be removed from DOM entirely.
|
|
15
|
-
* - It's required to set the "id" property which will be assigned to the tooltip. This id parameter can be then used as a value of "aria-labelledby" attribute.
|
|
16
|
-
* - Use `updateToken` prop to update the tooltip position.
|
|
17
|
-
* - Use `tooltipContainer` prop to change the tooltip portal container. Defaults to `body`.
|
|
7
|
+
* Displays additional information when hovering over a trigger element.
|
|
18
8
|
*
|
|
19
9
|
* ### Usage
|
|
20
|
-
*
|
|
10
|
+
* Pass the trigger element as `children` and the tooltip text/content via `content`.
|
|
11
|
+
*
|
|
12
|
+
* ```tsx
|
|
13
|
+
* <Tooltip content="Save changes">
|
|
14
|
+
* <button>Save</button>
|
|
15
|
+
* </Tooltip>
|
|
16
|
+
* ```
|
|
21
17
|
*/
|
|
22
|
-
export const Tooltip = ({
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
...(autoPlacement ? [autoPlacementMiddleware()] : []),
|
|
33
|
-
offset(offsetY),
|
|
34
|
-
...(showArrow
|
|
35
|
-
? [
|
|
36
|
-
arrow({
|
|
37
|
-
element: arrowRef,
|
|
38
|
-
padding,
|
|
39
|
-
}),
|
|
40
|
-
]
|
|
41
|
-
: []),
|
|
42
|
-
],
|
|
43
|
-
});
|
|
44
|
-
const hover = useHover(context, { handleClose: safePolygon() });
|
|
45
|
-
const { getReferenceProps, getFloatingProps } = useInteractions([hover]);
|
|
46
|
-
const isTooltipVisible = typeof visibilityOverride === 'boolean' ? visibilityOverride : isOpen;
|
|
47
|
-
return (React.createElement(React.Fragment, null,
|
|
48
|
-
cloneElement(children(refs.setReference), { ...getReferenceProps() }),
|
|
49
|
-
content !== undefined && isTooltipVisible && (React.createElement(React.Fragment, null,
|
|
50
|
-
React.createElement("span", { ...(id && { id }), className: cn(styles.tooltipSr, className), role: "tooltip", "data-test": "tooltip-sr" }, content),
|
|
51
|
-
React.createElement(FloatingPortal, { root: canUseDOM ? document.body : null },
|
|
52
|
-
React.createElement("span", { ref: refs.setFloating, className: cn(styles.overlay, color && [styles[color]], className), style: { ...floatingStyles, ...{ zIndex: context ? zIndex + 1 : zIndex }, wordBreak }, "data-test": "tooltip-overlay", ...getFloatingProps() },
|
|
18
|
+
export const Tooltip = ({ children, content, side = 'top', align = 'center', sideOffset = 10, avoidCollisions = true, open, delayDuration = 300, arrow: showArrow = true, color, wordBreak, zIndex = 20, className, id, }) => {
|
|
19
|
+
if (content === undefined) {
|
|
20
|
+
return React.createElement(React.Fragment, null, children);
|
|
21
|
+
}
|
|
22
|
+
const rootProps = typeof open === 'boolean' ? { open } : {};
|
|
23
|
+
return (React.createElement(TooltipPrimitive.Provider, { delayDuration: delayDuration },
|
|
24
|
+
React.createElement(TooltipPrimitive.Root, { ...rootProps },
|
|
25
|
+
React.createElement(TooltipPrimitive.Trigger, { asChild: true }, children),
|
|
26
|
+
React.createElement(TooltipPrimitive.Portal, null,
|
|
27
|
+
React.createElement(TooltipPrimitive.Content, { id: id, side: side, align: align, sideOffset: sideOffset, avoidCollisions: avoidCollisions, className: cn(styles.content, color && styles[color], className), style: { zIndex, wordBreak }, "data-test": "tooltip-overlay" },
|
|
53
28
|
content,
|
|
54
|
-
showArrow && React.createElement(
|
|
29
|
+
showArrow && React.createElement(TooltipPrimitive.Arrow, { className: styles.arrow }))))));
|
|
55
30
|
};
|
|
56
31
|
//# sourceMappingURL=Tooltip.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tooltip.js","sourceRoot":"","sources":["../../src/components/Tooltip.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"Tooltip.js","sourceRoot":"","sources":["../../src/components/Tooltip.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAiD,MAAM,OAAO,CAAA;AACrE,OAAO,KAAK,gBAAgB,MAAM,yBAAyB,CAAA;AAC3D,OAAO,EAAE,MAAM,YAAY,CAAA;AAE3B,OAAO,MAAM,MAAM,sBAAsB,CAAA;AAoCzC;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,EACtB,QAAQ,EACR,OAAO,EACP,IAAI,GAAG,KAAK,EACZ,KAAK,GAAG,QAAQ,EAChB,UAAU,GAAG,EAAE,EACf,eAAe,GAAG,IAAI,EACtB,IAAI,EACJ,aAAa,GAAG,GAAG,EACnB,KAAK,EAAE,SAAS,GAAG,IAAI,EACvB,KAAK,EACL,SAAS,EACT,MAAM,GAAG,EAAE,EACX,SAAS,EACT,EAAE,GACW,EAAE,EAAE;IACjB,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,0CAAG,QAAQ,CAAI,CAAA;IACxB,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IAE3D,OAAO,CACL,oBAAC,gBAAgB,CAAC,QAAQ,IAAC,aAAa,EAAE,aAAa;QACrD,oBAAC,gBAAgB,CAAC,IAAI,OAAK,SAAS;YAClC,oBAAC,gBAAgB,CAAC,OAAO,IAAC,OAAO,UAAE,QAAQ,CAA4B;YACvE,oBAAC,gBAAgB,CAAC,MAAM;gBACtB,oBAAC,gBAAgB,CAAC,OAAO,IACvB,EAAE,EAAE,EAAE,EACN,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,UAAU,EACtB,eAAe,EAAE,eAAe,EAChC,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,EAChE,KAAK,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,eAClB,iBAAiB;oBAE1B,OAAO;oBACP,SAAS,IAAI,oBAAC,gBAAgB,CAAC,KAAK,IAAC,SAAS,EAAE,MAAM,CAAC,KAAK,GAAI,CACxC,CACH,CACJ,CACE,CAC7B,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/* ── Keyframes ───────────────────────────────────────────────────── */
|
|
2
|
+
|
|
3
|
+
@keyframes hive-tooltip-fade-in-down {
|
|
4
|
+
from {
|
|
5
|
+
opacity: 0;
|
|
6
|
+
transform: translateY(-6px);
|
|
7
|
+
}
|
|
8
|
+
to {
|
|
9
|
+
opacity: 1;
|
|
10
|
+
transform: translateY(0);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
@keyframes hive-tooltip-fade-in-up {
|
|
15
|
+
from {
|
|
16
|
+
opacity: 0;
|
|
17
|
+
transform: translateY(6px);
|
|
18
|
+
}
|
|
19
|
+
to {
|
|
20
|
+
opacity: 1;
|
|
21
|
+
transform: translateY(0);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
@keyframes hive-tooltip-fade-in-right {
|
|
26
|
+
from {
|
|
27
|
+
opacity: 0;
|
|
28
|
+
transform: translateX(-6px);
|
|
29
|
+
}
|
|
30
|
+
to {
|
|
31
|
+
opacity: 1;
|
|
32
|
+
transform: translateX(0);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
@keyframes hive-tooltip-fade-in-left {
|
|
37
|
+
from {
|
|
38
|
+
opacity: 0;
|
|
39
|
+
transform: translateX(6px);
|
|
40
|
+
}
|
|
41
|
+
to {
|
|
42
|
+
opacity: 1;
|
|
43
|
+
transform: translateX(0);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
@keyframes hive-tooltip-fade-out {
|
|
48
|
+
from {
|
|
49
|
+
opacity: 1;
|
|
50
|
+
}
|
|
51
|
+
to {
|
|
52
|
+
opacity: 0;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/* ── Base ────────────────────────────────────────────────────────── */
|
|
57
|
+
|
|
58
|
+
.content {
|
|
59
|
+
font-family: var(--hive-font-family-text);
|
|
60
|
+
font-size: var(--hive-font-size-body-small);
|
|
61
|
+
font-weight: var(--hive-font-weight-text-regular);
|
|
62
|
+
letter-spacing: var(--hive-letter-spacing-body-small);
|
|
63
|
+
line-height: var(--hive-line-height-body-small);
|
|
64
|
+
|
|
65
|
+
position: relative;
|
|
66
|
+
max-width: var(--hive-tooltip-max-width);
|
|
67
|
+
padding: calc(var(--hive-grid) * 3);
|
|
68
|
+
background: var(--hive-color-neutral-lighter);
|
|
69
|
+
border: var(--hive-border-width) solid var(--hive-color-neutral-light);
|
|
70
|
+
border-radius: var(--hive-border-radius);
|
|
71
|
+
color: var(--hive-color-text);
|
|
72
|
+
word-break: break-word;
|
|
73
|
+
text-align: center;
|
|
74
|
+
|
|
75
|
+
/* Arrow color — overridden per variant */
|
|
76
|
+
--tooltip-arrow-fill: var(--hive-color-neutral-light);
|
|
77
|
+
|
|
78
|
+
/* Smooth in */
|
|
79
|
+
will-change: transform, opacity;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/* ── Enter animations (per side) ─────────────────────────────────── */
|
|
83
|
+
|
|
84
|
+
.content[data-state='delayed-open'][data-side='bottom'],
|
|
85
|
+
.content[data-state='instant-open'][data-side='bottom'] {
|
|
86
|
+
animation: hive-tooltip-fade-in-down 180ms cubic-bezier(0.16, 1, 0.3, 1);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
.content[data-state='delayed-open'][data-side='top'],
|
|
90
|
+
.content[data-state='instant-open'][data-side='top'] {
|
|
91
|
+
animation: hive-tooltip-fade-in-up 180ms cubic-bezier(0.16, 1, 0.3, 1);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
.content[data-state='delayed-open'][data-side='right'],
|
|
95
|
+
.content[data-state='instant-open'][data-side='right'] {
|
|
96
|
+
animation: hive-tooltip-fade-in-right 180ms cubic-bezier(0.16, 1, 0.3, 1);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
.content[data-state='delayed-open'][data-side='left'],
|
|
100
|
+
.content[data-state='instant-open'][data-side='left'] {
|
|
101
|
+
animation: hive-tooltip-fade-in-left 180ms cubic-bezier(0.16, 1, 0.3, 1);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/* ── Exit animation ──────────────────────────────────────────────── */
|
|
105
|
+
|
|
106
|
+
.content[data-state='closed'] {
|
|
107
|
+
animation: hive-tooltip-fade-out 120ms ease-out;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/* ── Color variants ──────────────────────────────────────────────── */
|
|
111
|
+
|
|
112
|
+
.content.secondary {
|
|
113
|
+
border: none;
|
|
114
|
+
color: var(--hive-color-neutral-white);
|
|
115
|
+
background-color: var(--hive-color-text-subdued);
|
|
116
|
+
--tooltip-arrow-fill: var(--hive-color-text-subdued);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
.content.dark {
|
|
120
|
+
border: none;
|
|
121
|
+
color: var(--hive-color-brand-text);
|
|
122
|
+
background-color: var(--hive-color-brand-accent);
|
|
123
|
+
--tooltip-arrow-fill: var(--hive-color-brand-accent);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
.arrow {
|
|
127
|
+
fill: var(--tooltip-arrow-fill);
|
|
128
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { FC, ReactNode } from 'react';
|
|
2
2
|
import { DataTestProp } from '../helpers/types';
|
|
3
|
-
import {
|
|
3
|
+
import { TooltipSide } from './Tooltip';
|
|
4
4
|
interface TruncatedTextProps extends DataTestProp {
|
|
5
5
|
text: ReactNode;
|
|
6
6
|
forceUpdateToken?: string | number | boolean;
|
|
@@ -8,7 +8,7 @@ interface TruncatedTextProps extends DataTestProp {
|
|
|
8
8
|
multiline?: boolean;
|
|
9
9
|
tooltipVisible?: boolean;
|
|
10
10
|
tooltipClassName?: string;
|
|
11
|
-
tooltipPlacement?:
|
|
11
|
+
tooltipPlacement?: TooltipSide;
|
|
12
12
|
}
|
|
13
13
|
export declare const TruncatedText: FC<TruncatedTextProps>;
|
|
14
14
|
export {};
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import React, { useRef, useState } from 'react';
|
|
2
|
-
import mergeRefs from 'react-merge-refs';
|
|
3
2
|
import cn from 'classnames';
|
|
4
3
|
import useIsomorphicLayoutEffect from 'react-use/lib/useIsomorphicLayoutEffect';
|
|
5
4
|
import { useUID } from 'react-uid';
|
|
@@ -17,7 +16,8 @@ export const TruncatedText = ({ text, forceUpdateToken, className, tooltipVisibl
|
|
|
17
16
|
// https://codepen.io/triple-j/pen/wadKQB
|
|
18
17
|
setTooltip(span.offsetWidth < span.scrollWidth || span.offsetHeight < span.scrollHeight ? text : undefined);
|
|
19
18
|
}, [text, forceUpdateToken]);
|
|
20
|
-
return (React.createElement(Tooltip, { id: idTooltip, content: tooltip,
|
|
21
|
-
React.createElement("
|
|
19
|
+
return (React.createElement(Tooltip, { id: idTooltip, content: tooltip, open: tooltipVisible, className: tooltipClassName, side: tooltipPlacement },
|
|
20
|
+
React.createElement("div", { ref: textRef, className: cn(styles.truncatedText, { [styles.multiline]: multiline }, className) },
|
|
21
|
+
React.createElement("span", { "data-test": dataTest, "aria-labelledby": tooltip ? idTooltip : undefined }, text))));
|
|
22
22
|
};
|
|
23
23
|
//# sourceMappingURL=TruncatedText.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TruncatedText.js","sourceRoot":"","sources":["../../src/components/TruncatedText.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAM,MAAM,EAAE,QAAQ,EAAa,MAAM,OAAO,CAAA;AAC9D,OAAO,
|
|
1
|
+
{"version":3,"file":"TruncatedText.js","sourceRoot":"","sources":["../../src/components/TruncatedText.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAM,MAAM,EAAE,QAAQ,EAAa,MAAM,OAAO,CAAA;AAC9D,OAAO,EAAE,MAAM,YAAY,CAAA;AAC3B,OAAO,yBAAyB,MAAM,yCAAyC,CAAA;AAC/E,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAGlC,OAAO,EAAE,OAAO,EAAe,MAAM,WAAW,CAAA;AAEhD,OAAO,MAAM,MAAM,6BAA6B,CAAA;AAahD,MAAM,CAAC,MAAM,aAAa,GAA2B,CAAC,EACpD,IAAI,EACJ,gBAAgB,EAChB,SAAS,EACT,cAAc,EACd,gBAAgB,GAAG,KAAK,EACxB,SAAS,EACT,gBAAgB,EAChB,WAAW,EAAE,QAAQ,GACtB,EAAE,EAAE;IACH,MAAM,OAAO,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAA;IAC5C,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,EAAyB,CAAA;IAC/D,MAAM,SAAS,GAAG,MAAM,EAAE,CAAA;IAE1B,yBAAyB,CAAC,GAAG,EAAE;QAC7B,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAA;QAE5B,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,OAAM;QACR,CAAC;QAED,yCAAyC;QACzC,UAAU,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;IAC7G,CAAC,EAAE,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAA;IAE5B,OAAO,CACL,oBAAC,OAAO,IAAC,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,SAAS,EAAE,gBAAgB,EAAE,IAAI,EAAE,gBAAgB;QACjH,6BAAK,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,aAAa,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,EAAE,SAAS,CAAC;YAClG,2CAAiB,QAAQ,qBAAmB,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,IACxE,IAAI,CACA,CACH,CACE,CACX,CAAA;AACH,CAAC,CAAA"}
|
package/lib/index.d.ts
CHANGED
|
@@ -47,6 +47,7 @@ export { TextAreaFormik } from './components/TextAreaFormik';
|
|
|
47
47
|
export { TextField } from './components/TextField';
|
|
48
48
|
export { TextFieldFormik } from './components/TextFieldFormik';
|
|
49
49
|
export { Toast } from './components/Toast';
|
|
50
|
+
export type { ToastProps, ToastVariant } from './components/Toast';
|
|
50
51
|
export { Toggle } from './components/Toggle';
|
|
51
52
|
export { ToggleFormik } from './components/ToggleFormik';
|
|
52
53
|
export { Tooltip } from './components/Tooltip';
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAA;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAA;AACnE,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AACpD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AACnD,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAA;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAA;AAC1E,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AACtE,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAA;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAA;AAC5E,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,EACtB,oBAAoB,EACpB,0BAA0B,GAC3B,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAA;AAChD,OAAO,EACL,UAAU,EACV,QAAQ,EACR,GAAG,EACH,OAAO,EACP,kBAAkB,EAClB,4BAA4B,EAC5B,UAAU,EACV,QAAQ,EACR,aAAa,EACb,sBAAsB,GACvB,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAC9D,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAA;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAA;AACnE,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AACpD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AACnD,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAA;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAA;AAC1E,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AACtE,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAA;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAA;AAC5E,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,EACtB,oBAAoB,EACpB,0BAA0B,GAC3B,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAA;AAChD,OAAO,EACL,UAAU,EACV,QAAQ,EACR,GAAG,EACH,OAAO,EACP,kBAAkB,EAClB,4BAA4B,EAC5B,UAAU,EACV,QAAQ,EACR,aAAa,EACb,sBAAsB,GACvB,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAC9D,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAE1C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,YAAY,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAE1G,QAAQ;AACR,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAEzC,WAAW;AACX,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAE7C,UAAU;AACV,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAE7C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAA"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import React, { FocusEvent, ReactNode } from 'react';
|
|
2
|
+
import { FormatOptionLabelMeta } from 'react-select';
|
|
3
|
+
import { HelpProps } from '../components/Help';
|
|
4
|
+
import { SelectFieldSize } from './Select/SelectField';
|
|
5
|
+
import { FieldHeaderProps } from '../components/FieldHeader';
|
|
6
|
+
export type AutocompleteFieldOption = {
|
|
7
|
+
label: string;
|
|
8
|
+
value: string;
|
|
9
|
+
};
|
|
10
|
+
export type RenderOptionFunction<O = AutocompleteFieldOption> = (highlightedLabelText: ReactNode, option: O extends AutocompleteFieldOption ? O : never, labelMeta: FormatOptionLabelMeta<AutocompleteFieldOption>) => ReactNode;
|
|
11
|
+
export type AutocompleteFieldProps = {
|
|
12
|
+
'data-test'?: string;
|
|
13
|
+
size?: SelectFieldSize;
|
|
14
|
+
className?: string;
|
|
15
|
+
disabled?: boolean;
|
|
16
|
+
error?: string;
|
|
17
|
+
errorClassName?: string;
|
|
18
|
+
isClearable?: boolean;
|
|
19
|
+
label?: string;
|
|
20
|
+
labelClassName?: string;
|
|
21
|
+
menuPortalTarget?: 'body' | 'self' | HTMLElement | null;
|
|
22
|
+
onChange?: (newValue: string) => void;
|
|
23
|
+
onInputChange?: (newInputValue: string) => void;
|
|
24
|
+
onBlur?: (e: FocusEvent<HTMLElement>) => void;
|
|
25
|
+
onFocus?: (e: FocusEvent<HTMLElement>) => void;
|
|
26
|
+
required?: boolean;
|
|
27
|
+
helperText?: HelpProps['helperText'];
|
|
28
|
+
renderOption?: RenderOptionFunction;
|
|
29
|
+
name: string;
|
|
30
|
+
options: AutocompleteFieldOption[];
|
|
31
|
+
value?: string | null;
|
|
32
|
+
placeholder?: string;
|
|
33
|
+
openMenuOnClick?: boolean;
|
|
34
|
+
} & Omit<FieldHeaderProps, 'id'>;
|
|
35
|
+
type GetSelectedOptionFromValueProps = {
|
|
36
|
+
value?: string | null;
|
|
37
|
+
optionsMap: {
|
|
38
|
+
[key: string]: AutocompleteFieldOption;
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
/**
|
|
42
|
+
* Transforms the value passed to the Autocomplete component so that it's in a format as underlying react-select expects
|
|
43
|
+
* @param value - single value or an array of values
|
|
44
|
+
* @param optionsMap - an object where option values are mapped to react-select expected objects
|
|
45
|
+
*/
|
|
46
|
+
export declare function getSelectedOptionFromValue({ value, optionsMap }: GetSelectedOptionFromValueProps): AutocompleteFieldOption | null;
|
|
47
|
+
export declare const highlightOptionText: (labelText: string, inputValue: string | undefined) => ReactNode;
|
|
48
|
+
export declare const AutocompleteField: React.FC<AutocompleteFieldProps>;
|
|
49
|
+
export {};
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import React, { useMemo, useState } from 'react';
|
|
2
|
+
import ReactSelect, { components } from 'react-select';
|
|
3
|
+
import { useUID } from 'react-uid';
|
|
4
|
+
import cn from 'classnames';
|
|
5
|
+
import { Search, X } from 'react-feather';
|
|
6
|
+
import useIsomorphicLayoutEffect from 'react-use/lib/useIsomorphicLayoutEffect';
|
|
7
|
+
import styles from './AutocompleteFieldLegacy.module.scss';
|
|
8
|
+
import { Error, errorId } from '../components/Error';
|
|
9
|
+
import { canUseDOM } from '../utils/ssr';
|
|
10
|
+
import { IconButton } from './IconButton';
|
|
11
|
+
import { FieldHeader } from '../components/FieldHeader';
|
|
12
|
+
/**
|
|
13
|
+
* Transforms the value passed to the Autocomplete component so that it's in a format as underlying react-select expects
|
|
14
|
+
* @param value - single value or an array of values
|
|
15
|
+
* @param optionsMap - an object where option values are mapped to react-select expected objects
|
|
16
|
+
*/
|
|
17
|
+
export function getSelectedOptionFromValue({ value, optionsMap }) {
|
|
18
|
+
var _a;
|
|
19
|
+
let option = null;
|
|
20
|
+
if (value) {
|
|
21
|
+
option = (_a = optionsMap[value]) !== null && _a !== void 0 ? _a : { value: value, label: value };
|
|
22
|
+
}
|
|
23
|
+
return option;
|
|
24
|
+
}
|
|
25
|
+
const Input = (innerProps) => {
|
|
26
|
+
// autoComplete='off' is hard-coded inside SelectField, but doesn't work in Chrome.
|
|
27
|
+
// Having an invalid value hard-coded disabled it in all browsers.
|
|
28
|
+
const props = {
|
|
29
|
+
...innerProps,
|
|
30
|
+
autoComplete: 'chrome-off',
|
|
31
|
+
};
|
|
32
|
+
return React.createElement(components.Input, { ...props });
|
|
33
|
+
};
|
|
34
|
+
const DropdownIndicator = (props) => {
|
|
35
|
+
return (React.createElement(components.DropdownIndicator, { ...props },
|
|
36
|
+
React.createElement(Search, { size: 20 })));
|
|
37
|
+
};
|
|
38
|
+
// innerProps set event handling
|
|
39
|
+
const ClearIndicator = ({ innerProps }) => {
|
|
40
|
+
// Visually impaired people will use the keyboard (backspace) to remove the value. We do not want to confuse them by allowing to focus this button.
|
|
41
|
+
// @ts-ignore
|
|
42
|
+
return React.createElement(IconButton, { ...innerProps, icon: X, ariaHidden: true, variant: "ghost", className: styles.clear, tabIndex: -1 });
|
|
43
|
+
};
|
|
44
|
+
export const highlightOptionText = (labelText, inputValue) => {
|
|
45
|
+
const separator = '<%>';
|
|
46
|
+
const query = inputValue || '';
|
|
47
|
+
return query
|
|
48
|
+
? labelText
|
|
49
|
+
.replace(new RegExp(query, 'ig'), `${separator}$&${separator}`)
|
|
50
|
+
.split(separator)
|
|
51
|
+
.filter((val) => val)
|
|
52
|
+
.map((val, i) => (React.createElement("span", { className: cn({
|
|
53
|
+
'hz-autocomplete-field__matched-option-text': val.toLowerCase() === query.toLowerCase(),
|
|
54
|
+
}), key: val + `${i}` }, val)))
|
|
55
|
+
: labelText;
|
|
56
|
+
};
|
|
57
|
+
export const AutocompleteField = ({ 'data-test': dataTest = 'autocomplete-field', className, disabled, error, errorClassName, isClearable, label, labelClassName, helperText, size = 'medium', menuPortalTarget = 'body', name, onChange, onFocus, onBlur, onInputChange, options, required, value, placeholder = 'Search...', showAriaLabel = false, renderOption, openMenuOnClick = true, ...rest }) => {
|
|
58
|
+
// when the user clicks on an input with the value, the value should disappear,
|
|
59
|
+
// but then it should appear after the user selects something or blurs the input
|
|
60
|
+
const [isValueHidden, setValueHidden] = useState(false);
|
|
61
|
+
const id = useUID();
|
|
62
|
+
useIsomorphicLayoutEffect(() => {
|
|
63
|
+
const menuContainer = getMenuContainer(menuPortalTarget);
|
|
64
|
+
if (menuContainer && !menuContainer.className.includes(styles.menuContainer)) {
|
|
65
|
+
menuContainer.className = `${menuContainer.className} ${styles.menuContainer}`;
|
|
66
|
+
}
|
|
67
|
+
}, [menuPortalTarget]);
|
|
68
|
+
const optionsMap = React.useMemo(() => options.reduce((acc, option) => {
|
|
69
|
+
acc[`${option.value}`] = option;
|
|
70
|
+
return acc;
|
|
71
|
+
}, {}), [options]);
|
|
72
|
+
const selectedOption = useMemo(() => getSelectedOptionFromValue({ value, optionsMap }), [optionsMap, value]);
|
|
73
|
+
const onChangeFn = React.useCallback((option) => {
|
|
74
|
+
setValueHidden(false);
|
|
75
|
+
onChange(option === null ? null : option.value);
|
|
76
|
+
}, [onChange]);
|
|
77
|
+
const onFocusFn = React.useCallback((e) => {
|
|
78
|
+
if (onFocus) {
|
|
79
|
+
onFocus(e);
|
|
80
|
+
}
|
|
81
|
+
if (!openMenuOnClick) {
|
|
82
|
+
setValueHidden(true);
|
|
83
|
+
}
|
|
84
|
+
}, [onFocus, openMenuOnClick]);
|
|
85
|
+
const onBlurFn = React.useCallback((e) => {
|
|
86
|
+
if (onBlur) {
|
|
87
|
+
onBlur(e);
|
|
88
|
+
}
|
|
89
|
+
setValueHidden(false);
|
|
90
|
+
}, [onBlur]);
|
|
91
|
+
const formatOptionLabelFn = React.useCallback((option, labelMeta) => {
|
|
92
|
+
const { inputValue } = labelMeta;
|
|
93
|
+
let optionText = option.label;
|
|
94
|
+
if (inputValue) {
|
|
95
|
+
optionText = highlightOptionText(option.label, inputValue);
|
|
96
|
+
}
|
|
97
|
+
return renderOption ? renderOption(optionText, option, labelMeta) : optionText;
|
|
98
|
+
}, [renderOption]);
|
|
99
|
+
const getMenuContainer = (menuPortalTarget) => {
|
|
100
|
+
if (menuPortalTarget == 'body') {
|
|
101
|
+
// There is no document is SSR environment
|
|
102
|
+
return canUseDOM ? document.body : undefined;
|
|
103
|
+
}
|
|
104
|
+
if (menuPortalTarget == 'self') {
|
|
105
|
+
return undefined;
|
|
106
|
+
}
|
|
107
|
+
return menuPortalTarget;
|
|
108
|
+
};
|
|
109
|
+
const props = {
|
|
110
|
+
inputId: id,
|
|
111
|
+
className: 'hz-autocomplete-field',
|
|
112
|
+
classNamePrefix: 'hz-autocomplete-field',
|
|
113
|
+
// https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/ARIA_Techniques/Using_the_aria-invalid_attribute
|
|
114
|
+
'aria-errormessage': error && errorId(id),
|
|
115
|
+
'aria-invalid': !!error,
|
|
116
|
+
// @ts-ignore
|
|
117
|
+
'aria-required': required,
|
|
118
|
+
error,
|
|
119
|
+
isClearable: isClearable !== null && isClearable !== void 0 ? isClearable : false,
|
|
120
|
+
isDisabled: disabled,
|
|
121
|
+
isSearchable: true,
|
|
122
|
+
isMulti: false,
|
|
123
|
+
name: name,
|
|
124
|
+
value: selectedOption,
|
|
125
|
+
placeholder,
|
|
126
|
+
options,
|
|
127
|
+
onChange: onChangeFn,
|
|
128
|
+
onFocus: onFocusFn,
|
|
129
|
+
onBlur: onBlurFn,
|
|
130
|
+
menuPortalTarget: getMenuContainer(menuPortalTarget),
|
|
131
|
+
components: {
|
|
132
|
+
DropdownIndicator,
|
|
133
|
+
ClearIndicator,
|
|
134
|
+
Input,
|
|
135
|
+
},
|
|
136
|
+
openMenuOnClick,
|
|
137
|
+
...rest,
|
|
138
|
+
};
|
|
139
|
+
return (React.createElement("div", { "data-test": dataTest, className: cn(styles.container, {
|
|
140
|
+
[styles.withError]: 'error' in props,
|
|
141
|
+
[styles.disabled]: disabled,
|
|
142
|
+
[styles.hasError]: error,
|
|
143
|
+
[styles.small]: size === 'small',
|
|
144
|
+
[styles.empty]: !value,
|
|
145
|
+
},
|
|
146
|
+
// Menu container is either this select itself or any other element
|
|
147
|
+
// We can always add this class to the select itself because even if the menu container is any parent it won't break it
|
|
148
|
+
// However, if it is the select itself, it will properly add necessary specificity level to the menu styles.
|
|
149
|
+
styles.menuContainer, className) },
|
|
150
|
+
React.createElement(FieldHeader, { label: label, id: id, size: size, "data-test": dataTest, helperText: helperText, showAriaLabel: showAriaLabel, labelClassName: labelClassName }),
|
|
151
|
+
React.createElement("div", { className: styles.selectBlock },
|
|
152
|
+
React.createElement(ReactSelect, { onInputChange: onInputChange, formatOptionLabel: formatOptionLabelFn, styles: {
|
|
153
|
+
...props.styles,
|
|
154
|
+
// @ts-ignore
|
|
155
|
+
singleValue: (base) => {
|
|
156
|
+
var _a;
|
|
157
|
+
return ({
|
|
158
|
+
...base,
|
|
159
|
+
...(_a = props.styles) === null || _a === void 0 ? void 0 : _a.singleValue,
|
|
160
|
+
visibility: isValueHidden ? 'hidden' : 'visible',
|
|
161
|
+
});
|
|
162
|
+
},
|
|
163
|
+
}, ...props })),
|
|
164
|
+
React.createElement(Error, { "data-test": `${dataTest}-error`, truncated: true, error: error, className: cn(styles.errorContainer, errorClassName), inputId: id })));
|
|
165
|
+
};
|
|
166
|
+
//# sourceMappingURL=AutocompleteField.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AutocompleteField.js","sourceRoot":"","sources":["../../src/old/AutocompleteField.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAwC,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACtF,OAAO,WAAW,EAAE,EAAc,UAAU,EAAmE,MAAM,cAAc,CAAA;AACnI,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAClC,OAAO,EAAE,MAAM,YAAY,CAAA;AAC3B,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,eAAe,CAAA;AACzC,OAAO,yBAAyB,MAAM,yCAAyC,CAAA;AAC/E,OAAO,MAAM,MAAM,uCAAuC,CAAA;AAC1D,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAEpD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC,OAAO,EAAE,WAAW,EAAoB,MAAM,2BAA2B,CAAA;AA2CzE;;;;GAIG;AACH,MAAM,UAAU,0BAA0B,CAAC,EAAE,KAAK,EAAE,UAAU,EAAmC;;IAC/F,IAAI,MAAM,GAAG,IAAI,CAAA;IACjB,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,GAAG,MAAA,UAAU,CAAC,KAAK,CAAC,mCAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA;IAC9D,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED,MAAM,KAAK,GAA4B,CAAC,UAAU,EAAE,EAAE;IACpD,mFAAmF;IACnF,kEAAkE;IAClE,MAAM,KAAK,GAAG;QACZ,GAAG,UAAU;QACb,YAAY,EAAE,YAAY;KAC3B,CAAA;IACD,OAAO,oBAAC,UAAU,CAAC,KAAK,OAAK,KAAK,GAAI,CAAA;AACxC,CAAC,CAAA;AAED,MAAM,iBAAiB,GAAwC,CAAC,KAAK,EAAE,EAAE;IACvE,OAAO,CACL,oBAAC,UAAU,CAAC,iBAAiB,OAAK,KAAK;QACrC,oBAAC,MAAM,IAAC,IAAI,EAAE,EAAE,GAAI,CACS,CAChC,CAAA;AACH,CAAC,CAAA;AAED,gCAAgC;AAChC,MAAM,cAAc,GAAqC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE;IAC1E,mJAAmJ;IAEnJ,aAAa;IACb,OAAO,oBAAC,UAAU,OAAK,UAAU,EAAE,IAAI,EAAE,CAAC,EAAE,UAAU,QAAC,OAAO,EAAC,OAAO,EAAC,SAAS,EAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,GAAI,CAAA;AAClH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,SAAiB,EAAE,UAA8B,EAAa,EAAE;IAClG,MAAM,SAAS,GAAG,KAAK,CAAA;IACvB,MAAM,KAAK,GAAG,UAAU,IAAI,EAAE,CAAA;IAC9B,OAAO,KAAK;QACV,CAAC,CAAC,SAAS;aACN,OAAO,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,GAAG,SAAS,KAAK,SAAS,EAAE,CAAC;aAC9D,KAAK,CAAC,SAAS,CAAC;aAChB,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC;aACpB,GAAG,CAAC,CAAC,GAAW,EAAE,CAAS,EAAE,EAAE,CAAC,CAC/B,8BACE,SAAS,EAAE,EAAE,CAAC;gBACZ,4CAA4C,EAAE,GAAG,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,WAAW,EAAE;aACxF,CAAC,EACF,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC,EAAE,IAEhB,GAAG,CACC,CACR,CAAC;QACN,CAAC,CAAC,SAAS,CAAA;AACf,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAqC,CAAC,EAClE,WAAW,EAAE,QAAQ,GAAG,oBAAoB,EAC5C,SAAS,EACT,QAAQ,EACR,KAAK,EACL,cAAc,EACd,WAAW,EACX,KAAK,EACL,cAAc,EACd,UAAU,EACV,IAAI,GAAG,QAAQ,EACf,gBAAgB,GAAG,MAAM,EACzB,IAAI,EACJ,QAAQ,EACR,OAAO,EACP,MAAM,EACN,aAAa,EACb,OAAO,EACP,QAAQ,EACR,KAAK,EACL,WAAW,GAAG,WAAW,EACzB,aAAa,GAAG,KAAK,EACrB,YAAY,EACZ,eAAe,GAAG,IAAI,EACtB,GAAG,IAAI,EACR,EAAE,EAAE;IACH,+EAA+E;IAC/E,gFAAgF;IAChF,MAAM,CAAC,aAAa,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACvD,MAAM,EAAE,GAAG,MAAM,EAAE,CAAA;IAEnB,yBAAyB,CAAC,GAAG,EAAE;QAC7B,MAAM,aAAa,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,CAAA;QAExD,IAAI,aAAa,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;YAC7E,aAAa,CAAC,SAAS,GAAG,GAAG,aAAa,CAAC,SAAS,IAAI,MAAM,CAAC,aAAa,EAAE,CAAA;QAChF,CAAC;IACH,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAA;IAEtB,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAC9B,GAAG,EAAE,CACH,OAAO,CAAC,MAAM,CACZ,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;QACd,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,MAAM,CAAA;QAC/B,OAAO,GAAG,CAAA;IACZ,CAAC,EACD,EAAgD,CACjD,EACH,CAAC,OAAO,CAAC,CACV,CAAA;IAED,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,0BAA0B,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAA;IAE5G,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,CAClC,CAAC,MAAsC,EAAE,EAAE;QACzC,cAAc,CAAC,KAAK,CAAC,CACpB;QAAC,QAA8C,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IACzF,CAAC,EACD,CAAC,QAAQ,CAAC,CACX,CAAA;IAED,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CACjC,CAAC,CAA0B,EAAE,EAAE;QAC7B,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,CAAC,CAAC,CAAA;QACZ,CAAC;QACD,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,cAAc,CAAC,IAAI,CAAC,CAAA;QACtB,CAAC;IACH,CAAC,EACD,CAAC,OAAO,EAAE,eAAe,CAAC,CAC3B,CAAA;IAED,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAChC,CAAC,CAA0B,EAAE,EAAE;QAC7B,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,CAAC,CAAC,CAAC,CAAA;QACX,CAAC;QACD,cAAc,CAAC,KAAK,CAAC,CAAA;IACvB,CAAC,EACD,CAAC,MAAM,CAAC,CACT,CAAA;IAED,MAAM,mBAAmB,GAAG,KAAK,CAAC,WAAW,CAC3C,CAAC,MAA+B,EAAE,SAAyD,EAAE,EAAE;QAC7F,MAAM,EAAE,UAAU,EAAE,GAAG,SAAS,CAAA;QAChC,IAAI,UAAU,GAAc,MAAM,CAAC,KAAK,CAAA;QACxC,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,GAAG,mBAAmB,CAAC,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,CAAA;QAC5D,CAAC;QACD,OAAO,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,CAAA;IAChF,CAAC,EACD,CAAC,YAAY,CAAC,CACf,CAAA;IAED,MAAM,gBAAgB,GAAG,CAAC,gBAAsD,EAAkC,EAAE;QAClH,IAAI,gBAAgB,IAAI,MAAM,EAAE,CAAC;YAC/B,0CAA0C;YAC1C,OAAO,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAA;QAC9C,CAAC;QACD,IAAI,gBAAgB,IAAI,MAAM,EAAE,CAAC;YAC/B,OAAO,SAAS,CAAA;QAClB,CAAC;QACD,OAAO,gBAAgB,CAAA;IACzB,CAAC,CAAA;IAED,MAAM,KAAK,GAAqD;QAC9D,OAAO,EAAE,EAAE;QACX,SAAS,EAAE,uBAAuB;QAClC,eAAe,EAAE,uBAAuB;QACxC,mHAAmH;QACnH,mBAAmB,EAAE,KAAK,IAAI,OAAO,CAAC,EAAE,CAAC;QACzC,cAAc,EAAE,CAAC,CAAC,KAAK;QAEvB,aAAa;QACb,eAAe,EAAE,QAAQ;QACzB,KAAK;QACL,WAAW,EAAE,WAAW,aAAX,WAAW,cAAX,WAAW,GAAI,KAAK;QACjC,UAAU,EAAE,QAAQ;QACpB,YAAY,EAAE,IAAI;QAClB,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,IAAI;QACV,KAAK,EAAE,cAAc;QACrB,WAAW;QACX,OAAO;QACP,QAAQ,EAAE,UAAyH;QACnI,OAAO,EAAE,SAAS;QAClB,MAAM,EAAE,QAAQ;QAChB,gBAAgB,EAAE,gBAAgB,CAAC,gBAAgB,CAAC;QACpD,UAAU,EAAE;YACV,iBAAiB;YACjB,cAAc;YACd,KAAK;SACN;QACD,eAAe;QACf,GAAG,IAAI;KACR,CAAA;IAED,OAAO,CACL,0CACa,QAAQ,EACnB,SAAS,EAAE,EAAE,CACX,MAAM,CAAC,SAAS,EAChB;YACE,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,OAAO,IAAI,KAAK;YACpC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,QAAQ;YAC3B,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,KAAK;YACxB,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,KAAK,OAAO;YAChC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK;SACvB;QACD,mEAAmE;QACnE,uHAAuH;QACvH,4GAA4G;QAC5G,MAAM,CAAC,aAAa,EACpB,SAAS,CACV;QAED,oBAAC,WAAW,IACV,KAAK,EAAE,KAAK,EACZ,EAAE,EAAE,EAAE,EACN,IAAI,EAAE,IAAI,eACC,QAAQ,EACnB,UAAU,EAAE,UAAU,EACtB,aAAa,EAAE,aAAa,EAC5B,cAAc,EAAE,cAAc,GAC9B;QACF,6BAAK,SAAS,EAAE,MAAM,CAAC,WAAW;YAChC,oBAAC,WAAW,IACV,aAAa,EAAE,aAAa,EAC5B,iBAAiB,EAAE,mBAAmB,EACtC,MAAM,EAAE;oBACN,GAAG,KAAK,CAAC,MAAM;oBAEf,aAAa;oBACb,WAAW,EAAE,CAAC,IAAmB,EAAE,EAAE;;wBAAC,OAAA,CAAC;4BACrC,GAAG,IAAI;4BACP,GAAG,MAAA,KAAK,CAAC,MAAM,0CAAE,WAAW;4BAC5B,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;yBACjD,CAAC,CAAA;qBAAA;iBACH,KACG,KAAK,GACT,CACE;QACN,oBAAC,KAAK,iBAAY,GAAG,QAAQ,QAAQ,EAAE,SAAS,QAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,cAAc,EAAE,cAAc,CAAC,EAAE,OAAO,EAAE,EAAE,GAAI,CAChI,CACP,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ReactElement } from 'react';
|
|
2
|
+
import { AutocompleteFieldProps } from './AutocompleteField';
|
|
3
|
+
import { FieldValidatorGeneric } from '../utils/formik';
|
|
4
|
+
type AutocompleteFieldFormikProps = AutocompleteFieldProps & {
|
|
5
|
+
validate?: FieldValidatorGeneric<string | null>;
|
|
6
|
+
onChange?: (value: string | null) => void;
|
|
7
|
+
};
|
|
8
|
+
export declare const AutocompleteFieldFormik: ({ name, validate, onChange, ...props }: AutocompleteFieldFormikProps) => ReactElement;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import React, { useCallback, useMemo } from 'react';
|
|
2
|
+
import { useField } from 'formik';
|
|
3
|
+
import { AutocompleteField } from './AutocompleteField';
|
|
4
|
+
import { formikTouchAndUpdate, getFieldError } from '../utils/formik';
|
|
5
|
+
export const AutocompleteFieldFormik = ({ name, validate, onChange, ...props }) => {
|
|
6
|
+
const [{ value, onBlur }, meta, { setValue, setTouched }] = useField({
|
|
7
|
+
name,
|
|
8
|
+
validate,
|
|
9
|
+
});
|
|
10
|
+
const setFormikValue = useMemo(() => formikTouchAndUpdate(setValue, setTouched), [setValue, setTouched]);
|
|
11
|
+
const handleChange = useCallback((newValue) => {
|
|
12
|
+
if (onChange) {
|
|
13
|
+
onChange(newValue);
|
|
14
|
+
}
|
|
15
|
+
setFormikValue(newValue);
|
|
16
|
+
}, [setFormikValue, onChange]);
|
|
17
|
+
return React.createElement(AutocompleteField, { ...props, value: value, onChange: handleChange, name: name, onBlur: onBlur, error: getFieldError(meta) });
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=AutocompleteFieldFormik.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AutocompleteFieldFormik.js","sourceRoot":"","sources":["../../src/old/AutocompleteFieldFormik.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAgB,WAAW,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAA;AAEjC,OAAO,EAAE,iBAAiB,EAA0B,MAAM,qBAAqB,CAAA;AAC/E,OAAO,EAAyB,oBAAoB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAO5F,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAgC,EAAgB,EAAE;IAC5H,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,GAAG,QAAQ,CAAgB;QAClF,IAAI;QACJ,QAAQ;KACT,CAAC,CAAA;IAEF,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,oBAAoB,CAAgB,QAAQ,EAAE,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAA;IACvH,MAAM,YAAY,GAAG,WAAW,CAC9B,CAAC,QAAgB,EAAE,EAAE;QACnB,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,QAAQ,CAAC,CAAA;QACpB,CAAC;QAED,cAAc,CAAC,QAAQ,CAAC,CAAA;IAC1B,CAAC,EACD,CAAC,cAAc,EAAE,QAAQ,CAAC,CAC3B,CAAA;IAED,OAAO,oBAAC,iBAAiB,OAAK,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,GAAI,CAAA;AACvI,CAAC,CAAA"}
|