@activecollab/components 1.0.317 → 1.0.318
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/cjs/components/Menu/Menu.js +4 -2
- package/dist/cjs/components/Menu/Menu.js.map +1 -1
- package/dist/cjs/components/Popper/Popper.js +10 -3
- package/dist/cjs/components/Popper/Popper.js.map +1 -1
- package/dist/cjs/components/Select/Select.js +5 -2
- package/dist/cjs/components/Select/Select.js.map +1 -1
- package/dist/esm/components/Menu/Menu.d.ts +2 -0
- package/dist/esm/components/Menu/Menu.d.ts.map +1 -1
- package/dist/esm/components/Menu/Menu.js +4 -2
- package/dist/esm/components/Menu/Menu.js.map +1 -1
- package/dist/esm/components/Popper/Popper.d.ts +2 -0
- package/dist/esm/components/Popper/Popper.d.ts.map +1 -1
- package/dist/esm/components/Popper/Popper.js +10 -3
- package/dist/esm/components/Popper/Popper.js.map +1 -1
- package/dist/esm/components/Select/Select.d.ts.map +1 -1
- package/dist/esm/components/Select/Select.js +5 -2
- package/dist/esm/components/Select/Select.js.map +1 -1
- package/dist/index.js +19 -7
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +1 -1
- package/package.json +1 -1
|
@@ -44,7 +44,8 @@ var Menu = function Menu(_ref) {
|
|
|
44
44
|
popperClassName = _ref.popperClassName,
|
|
45
45
|
backgroundElementClass = _ref.backgroundElementClass,
|
|
46
46
|
_ref$windowAbsolutely = _ref.windowAbsolutelyPositioned,
|
|
47
|
-
windowAbsolutelyPositioned = _ref$windowAbsolutely === void 0 ? false : _ref$windowAbsolutely
|
|
47
|
+
windowAbsolutelyPositioned = _ref$windowAbsolutely === void 0 ? false : _ref$windowAbsolutely,
|
|
48
|
+
onPopperOpen = _ref.onPopperOpen;
|
|
48
49
|
var _useState = (0, _react.useState)(defaultOpen),
|
|
49
50
|
_useState2 = _slicedToArray(_useState, 2),
|
|
50
51
|
open = _useState2[0],
|
|
@@ -109,7 +110,8 @@ var Menu = function Menu(_ref) {
|
|
|
109
110
|
open: childNode ? open : false,
|
|
110
111
|
placement: position,
|
|
111
112
|
className: popperClassName,
|
|
112
|
-
tabIndex: -1
|
|
113
|
+
tabIndex: -1,
|
|
114
|
+
afterWrite: onPopperOpen
|
|
113
115
|
}, /*#__PURE__*/_react.default.createElement(_Styles.StyledMenu, {
|
|
114
116
|
className: (0, _classnames.default)("c-simple-menu__paper", "c-simple-menu__".concat(mode), menuClassName, className),
|
|
115
117
|
$mode: mode,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Menu.js","names":["Menu","children","disableFocusLock","onMenuClick","handleScroll","mode","open","defaultOpen","onOpen","onClose","onBeforeClose","position","target","className","menuClassName","popperClassName","backgroundElementClass","windowAbsolutelyPositioned","useState","setOpen","childNode","setChildNode","elementRef","useRef","isOpenAtLeastOnce","useEffect","handleRefRef","useForkRef","ref","undefined","handleRef","handleOpen","useCallback","event","preventDefault","stopPropagation","props","onClick","handleClose","childProps","forceClose","targetProps","current","focus","React","cloneElement","classnames","displayName"],"sources":["../../../../src/components/Menu/Menu.tsx"],"sourcesContent":["import React, {\n useRef,\n FC,\n ReactNode,\n MouseEvent,\n useState,\n useCallback,\n useEffect,\n ReactElement,\n Ref,\n} from \"react\";\nimport classnames from \"classnames\";\nimport { Popper } from \"../Popper\";\nimport useForkRef from \"../../utils/useForkRef\";\nimport { Overlay } from \"../Overlay\";\nimport { Window } from \"../Window\";\nimport { Placement } from \"@popperjs/core\";\nimport { MenuContextProvider } from \"./context\";\nimport { StyledMenu } from \"./Styles\";\n\ninterface ElementWithRef<T> extends ReactElement {\n ref?: Ref<T>;\n}\n\nexport type MenuMode = \"normal\" | \"wider\" | \"tiny\";\n\nexport interface IMenu {\n /** Menu content */\n children: ReactNode;\n /** On menu element click */\n onMenuClick?: (event: MouseEvent<HTMLElement>) => void;\n /** Handle scroll bar */\n handleScroll?: boolean;\n /** Disable Focus Lock */\n disableFocusLock?: boolean;\n /** Menu width mode */\n mode?: MenuMode;\n /** Should menu be open when it's mounted */\n open?: boolean;\n /** Callback triggered when modal has been opened */\n onOpen?: () => void;\n /** Callback triggered when modal has been closed */\n onClose?: () => void;\n /** Before close callback */\n onBeforeClose?: () => boolean;\n /** Position Menu */\n position?: Placement;\n /** Target element */\n target?: ElementWithRef<Element>;\n className?: string;\n /** Menu classes */\n menuClassName?: string;\n /** Popper class name*/\n popperClassName?: string;\n /** Background style for clickable element after the menu is open (opacity, color, etc...) */\n backgroundElementClass?: string;\n /** Should Window be positioned absolutely */\n windowAbsolutelyPositioned?: boolean;\n}\n\nexport const Menu: FC<IMenu> = ({\n children,\n disableFocusLock = false,\n onMenuClick,\n handleScroll = true,\n mode = \"normal\",\n open: defaultOpen = false,\n onOpen,\n onClose,\n onBeforeClose,\n position = \"bottom-start\",\n target,\n className,\n menuClassName,\n popperClassName,\n backgroundElementClass,\n windowAbsolutelyPositioned = false,\n}) => {\n const [open, setOpen] = useState(defaultOpen);\n const [childNode, setChildNode] = useState<Element | null>();\n const elementRef = useRef<HTMLElement | null>(null);\n const isOpenAtLeastOnce = useRef(false);\n\n useEffect(() => {\n setOpen(defaultOpen);\n }, [defaultOpen]);\n\n const handleRefRef = useForkRef(\n target ? target.ref : undefined,\n setChildNode\n );\n const handleRef = useForkRef(handleRefRef, elementRef);\n\n const handleOpen = useCallback(\n (\n event: Pick<MouseEvent<Element>, \"preventDefault\" | \"stopPropagation\">\n ) => {\n event?.preventDefault();\n event?.stopPropagation();\n setOpen(true);\n typeof onOpen === \"function\" && onOpen();\n typeof target?.props?.onClick === \"function\" &&\n target.props.onClick(event);\n },\n [onOpen, target?.props]\n );\n\n const handleClose = useCallback(() => {\n if (typeof onBeforeClose === \"function\" && !onBeforeClose()) {\n return;\n }\n setOpen(false);\n typeof onClose === \"function\" && onClose();\n }, [onClose, onBeforeClose]);\n\n const childProps = {\n forceClose: handleClose,\n };\n\n const targetProps = {\n open,\n ref: handleRef,\n onClick: handleOpen,\n };\n\n useEffect(() => {\n if (open) {\n isOpenAtLeastOnce.current = true;\n } else if (!open && isOpenAtLeastOnce.current) {\n elementRef.current?.focus();\n isOpenAtLeastOnce.current = false;\n }\n }, [open]);\n\n return (\n <>\n {target && React.cloneElement(target, targetProps)}\n {open ? (\n <Window\n onClose={handleClose}\n disableScrollLock={!handleScroll}\n disableFocusLock={disableFocusLock}\n style={{\n position: windowAbsolutelyPositioned ? \"absolute\" : \"fixed\",\n }}\n >\n <Overlay\n className={backgroundElementClass}\n onClick={handleClose}\n tabIndex={-1}\n disableBackgroundColor\n />\n <Popper\n anchorEl={childNode}\n open={childNode ? open : false}\n placement={position}\n className={popperClassName}\n tabIndex={-1}\n >\n <StyledMenu\n className={classnames(\n \"c-simple-menu__paper\",\n `c-simple-menu__${mode}`,\n menuClassName,\n className\n )}\n $mode={mode}\n onMouseDown={onMenuClick}\n >\n <MenuContextProvider value={{ open, setOpen }}>\n {typeof children === \"function\"\n ? children(childProps)\n : children}\n </MenuContextProvider>\n </StyledMenu>\n </Popper>\n </Window>\n ) : null}\n </>\n );\n};\n\nMenu.displayName = \"Menu\";\n"],"mappings":";;;;;;;AAAA;AAWA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAsC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;
|
|
1
|
+
{"version":3,"file":"Menu.js","names":["Menu","children","disableFocusLock","onMenuClick","handleScroll","mode","open","defaultOpen","onOpen","onClose","onBeforeClose","position","target","className","menuClassName","popperClassName","backgroundElementClass","windowAbsolutelyPositioned","onPopperOpen","useState","setOpen","childNode","setChildNode","elementRef","useRef","isOpenAtLeastOnce","useEffect","handleRefRef","useForkRef","ref","undefined","handleRef","handleOpen","useCallback","event","preventDefault","stopPropagation","props","onClick","handleClose","childProps","forceClose","targetProps","current","focus","React","cloneElement","classnames","displayName"],"sources":["../../../../src/components/Menu/Menu.tsx"],"sourcesContent":["import React, {\n useRef,\n FC,\n ReactNode,\n MouseEvent,\n useState,\n useCallback,\n useEffect,\n ReactElement,\n Ref,\n} from \"react\";\nimport classnames from \"classnames\";\nimport { Popper } from \"../Popper\";\nimport useForkRef from \"../../utils/useForkRef\";\nimport { Overlay } from \"../Overlay\";\nimport { Window } from \"../Window\";\nimport { Placement } from \"@popperjs/core\";\nimport { MenuContextProvider } from \"./context\";\nimport { StyledMenu } from \"./Styles\";\n\ninterface ElementWithRef<T> extends ReactElement {\n ref?: Ref<T>;\n}\n\nexport type MenuMode = \"normal\" | \"wider\" | \"tiny\";\n\nexport interface IMenu {\n /** Menu content */\n children: ReactNode;\n /** On menu element click */\n onMenuClick?: (event: MouseEvent<HTMLElement>) => void;\n /** Handle scroll bar */\n handleScroll?: boolean;\n /** Disable Focus Lock */\n disableFocusLock?: boolean;\n /** Menu width mode */\n mode?: MenuMode;\n /** Should menu be open when it's mounted */\n open?: boolean;\n /** Callback triggered when modal has been opened */\n onOpen?: () => void;\n /** Callback triggered when modal has been closed */\n onClose?: () => void;\n /** Before close callback */\n onBeforeClose?: () => boolean;\n /** Position Menu */\n position?: Placement;\n /** Target element */\n target?: ElementWithRef<Element>;\n className?: string;\n /** Menu classes */\n menuClassName?: string;\n /** Popper class name*/\n popperClassName?: string;\n /** Background style for clickable element after the menu is open (opacity, color, etc...) */\n backgroundElementClass?: string;\n /** Should Window be positioned absolutely */\n windowAbsolutelyPositioned?: boolean;\n /** Popper on open */\n onPopperOpen?: (...args) => void;\n}\n\nexport const Menu: FC<IMenu> = ({\n children,\n disableFocusLock = false,\n onMenuClick,\n handleScroll = true,\n mode = \"normal\",\n open: defaultOpen = false,\n onOpen,\n onClose,\n onBeforeClose,\n position = \"bottom-start\",\n target,\n className,\n menuClassName,\n popperClassName,\n backgroundElementClass,\n windowAbsolutelyPositioned = false,\n onPopperOpen,\n}) => {\n const [open, setOpen] = useState(defaultOpen);\n const [childNode, setChildNode] = useState<Element | null>();\n const elementRef = useRef<HTMLElement | null>(null);\n const isOpenAtLeastOnce = useRef(false);\n\n useEffect(() => {\n setOpen(defaultOpen);\n }, [defaultOpen]);\n\n const handleRefRef = useForkRef(\n target ? target.ref : undefined,\n setChildNode\n );\n const handleRef = useForkRef(handleRefRef, elementRef);\n\n const handleOpen = useCallback(\n (\n event: Pick<MouseEvent<Element>, \"preventDefault\" | \"stopPropagation\">\n ) => {\n event?.preventDefault();\n event?.stopPropagation();\n setOpen(true);\n typeof onOpen === \"function\" && onOpen();\n typeof target?.props?.onClick === \"function\" &&\n target.props.onClick(event);\n },\n [onOpen, target?.props]\n );\n\n const handleClose = useCallback(() => {\n if (typeof onBeforeClose === \"function\" && !onBeforeClose()) {\n return;\n }\n setOpen(false);\n typeof onClose === \"function\" && onClose();\n }, [onClose, onBeforeClose]);\n\n const childProps = {\n forceClose: handleClose,\n };\n\n const targetProps = {\n open,\n ref: handleRef,\n onClick: handleOpen,\n };\n\n useEffect(() => {\n if (open) {\n isOpenAtLeastOnce.current = true;\n } else if (!open && isOpenAtLeastOnce.current) {\n elementRef.current?.focus();\n isOpenAtLeastOnce.current = false;\n }\n }, [open]);\n\n return (\n <>\n {target && React.cloneElement(target, targetProps)}\n {open ? (\n <Window\n onClose={handleClose}\n disableScrollLock={!handleScroll}\n disableFocusLock={disableFocusLock}\n style={{\n position: windowAbsolutelyPositioned ? \"absolute\" : \"fixed\",\n }}\n >\n <Overlay\n className={backgroundElementClass}\n onClick={handleClose}\n tabIndex={-1}\n disableBackgroundColor\n />\n <Popper\n anchorEl={childNode}\n open={childNode ? open : false}\n placement={position}\n className={popperClassName}\n tabIndex={-1}\n afterWrite={onPopperOpen}\n >\n <StyledMenu\n className={classnames(\n \"c-simple-menu__paper\",\n `c-simple-menu__${mode}`,\n menuClassName,\n className\n )}\n $mode={mode}\n onMouseDown={onMenuClick}\n >\n <MenuContextProvider value={{ open, setOpen }}>\n {typeof children === \"function\"\n ? children(childProps)\n : children}\n </MenuContextProvider>\n </StyledMenu>\n </Popper>\n </Window>\n ) : null}\n </>\n );\n};\n\nMenu.displayName = \"Menu\";\n"],"mappings":"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"}
|
|
@@ -8,7 +8,7 @@ exports.Popper = void 0;
|
|
|
8
8
|
var _react = _interopRequireWildcard(require("react"));
|
|
9
9
|
var _core = require("@popperjs/core");
|
|
10
10
|
var _useForkRef = _interopRequireDefault(require("../../utils/useForkRef"));
|
|
11
|
-
var _excluded = ["children", "anchorEl", "open", "style", "transition", "placement", "strategy"];
|
|
11
|
+
var _excluded = ["children", "anchorEl", "open", "style", "transition", "placement", "strategy", "afterWrite"];
|
|
12
12
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
13
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
14
14
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
@@ -36,6 +36,7 @@ var Popper = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
|
|
36
36
|
initialPlacement = _ref$placement === void 0 ? "bottom" : _ref$placement,
|
|
37
37
|
_ref$strategy = _ref.strategy,
|
|
38
38
|
strategy = _ref$strategy === void 0 ? "absolute" : _ref$strategy,
|
|
39
|
+
afterWrite = _ref.afterWrite,
|
|
39
40
|
rest = _objectWithoutProperties(_ref, _excluded);
|
|
40
41
|
var _useState = (0, _react.useState)(true),
|
|
41
42
|
_useState2 = _slicedToArray(_useState, 2),
|
|
@@ -61,9 +62,15 @@ var Popper = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
|
|
61
62
|
popperRef.current = (0, _core.createPopper)(anchorEl, ownRef.current, {
|
|
62
63
|
placement: placement,
|
|
63
64
|
onFirstUpdate: handlePopperUpdate,
|
|
64
|
-
strategy: strategy
|
|
65
|
+
strategy: strategy,
|
|
66
|
+
modifiers: [{
|
|
67
|
+
phase: "afterWrite",
|
|
68
|
+
enabled: typeof afterWrite === "function",
|
|
69
|
+
name: "popper-after-write",
|
|
70
|
+
fn: afterWrite
|
|
71
|
+
}]
|
|
65
72
|
});
|
|
66
|
-
}, [anchorEl, open, placement, strategy]);
|
|
73
|
+
}, [afterWrite, anchorEl, open, placement, strategy]);
|
|
67
74
|
var handleClose = function handleClose() {
|
|
68
75
|
if (!popperRef.current) {
|
|
69
76
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Popper.js","names":["Popper","forwardRef","ref","children","anchorEl","open","style","transition","placement","initialPlacement","strategy","rest","useState","exited","setExited","setPlacement","ownRef","useRef","popperRef","handleInnerRef","useForkRef","handlePopperUpdate","data","handleOpen","useCallback","current","destroy","createPopper","onFirstUpdate","handleClose","handleRef","node","handleEnter","handleExited","useEffect","update","childProps","transitionProps","in","onEnter","onExited","displayName"],"sources":["../../../../src/components/Popper/Popper.tsx"],"sourcesContent":["import React, {\n forwardRef,\n useCallback,\n useRef,\n useEffect,\n useState,\n CSSProperties,\n HTMLAttributes,\n} from \"react\";\nimport {\n createPopper,\n Instance,\n PositioningStrategy,\n State,\n} from \"@popperjs/core\";\nimport { Placement } from \".\";\nimport useForkRef from \"../../utils/useForkRef\";\n\ninterface TransitionProps {\n in: boolean;\n onEnter: () => void;\n onExited: () => void;\n}\ninterface IChildProps {\n placement: Placement;\n transitionProps: Partial<TransitionProps>;\n}\n\ninterface PopperProps {\n /** Anchor Element. */\n anchorEl?: Element | null;\n /** Open */\n open?: boolean;\n /** Inline style */\n style?: CSSProperties;\n /** Child with transition */\n transition?: boolean;\n /** Placement */\n placement?: Placement;\n /** Strategy */\n strategy?: PositioningStrategy;\n}\n\nexport const Popper = forwardRef<\n HTMLDivElement,\n PopperProps & HTMLAttributes<HTMLDivElement>\n>(\n (\n {\n children,\n anchorEl,\n open = false,\n style,\n transition = false,\n placement: initialPlacement = \"bottom\",\n strategy = \"absolute\",\n ...rest\n },\n ref\n ) => {\n const [exited, setExited] = useState(true);\n const [placement, setPlacement] = useState(initialPlacement);\n const ownRef = useRef<HTMLDivElement | null>(null);\n const popperRef = useRef<Instance>();\n\n const handleInnerRef = useForkRef(ownRef, ref);\n\n const handlePopperUpdate = (data: Partial<State>): void => {\n setPlacement(data.placement || \"bottom\");\n };\n\n const handleOpen = useCallback(() => {\n if (!ownRef.current || !anchorEl || !open) {\n return;\n }\n\n if (popperRef.current) {\n popperRef.current.destroy();\n }\n\n popperRef.current = createPopper(anchorEl, ownRef.current, {\n placement,\n onFirstUpdate: handlePopperUpdate,\n strategy,\n });\n }, [anchorEl, open, placement, strategy]);\n\n const handleClose = (): void => {\n if (!popperRef.current) {\n return;\n }\n\n popperRef.current.destroy();\n };\n\n const handleRef = useCallback(\n (node: HTMLDivElement) => {\n handleInnerRef(node);\n handleOpen();\n },\n [handleOpen, handleInnerRef]\n );\n\n const handleEnter = (): void => {\n setExited(false);\n };\n\n const handleExited = (): void => {\n setExited(true);\n handleClose();\n };\n\n useEffect(() => {\n return (): void => {\n handleClose();\n };\n }, []);\n\n useEffect(() => {\n if (!open && !transition) {\n handleClose();\n }\n }, [open, transition]);\n\n useEffect(() => {\n if (popperRef.current) {\n popperRef.current.update();\n }\n });\n\n if (!open && (!transition || exited)) {\n return null;\n }\n\n const childProps: Partial<IChildProps> = { placement };\n\n if (transition) {\n childProps.transitionProps = {\n in: open,\n onEnter: handleEnter,\n onExited: handleExited,\n };\n }\n\n return (\n <div\n ref={handleRef}\n {...rest}\n style={{\n ...style,\n }}\n >\n {typeof children === \"function\" ? children(childProps) : children}\n </div>\n );\n }\n);\n\nPopper.displayName = \"Popper\";\n"],"mappings":";;;;;;;AAAA;AASA;AAOA;AAAgD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;
|
|
1
|
+
{"version":3,"file":"Popper.js","names":["Popper","forwardRef","ref","children","anchorEl","open","style","transition","placement","initialPlacement","strategy","afterWrite","rest","useState","exited","setExited","setPlacement","ownRef","useRef","popperRef","handleInnerRef","useForkRef","handlePopperUpdate","data","handleOpen","useCallback","current","destroy","createPopper","onFirstUpdate","modifiers","phase","enabled","name","fn","handleClose","handleRef","node","handleEnter","handleExited","useEffect","update","childProps","transitionProps","in","onEnter","onExited","displayName"],"sources":["../../../../src/components/Popper/Popper.tsx"],"sourcesContent":["import React, {\n forwardRef,\n useCallback,\n useRef,\n useEffect,\n useState,\n CSSProperties,\n HTMLAttributes,\n} from \"react\";\nimport {\n createPopper,\n Instance,\n PositioningStrategy,\n State,\n} from \"@popperjs/core\";\nimport { Placement } from \".\";\nimport useForkRef from \"../../utils/useForkRef\";\n\ninterface TransitionProps {\n in: boolean;\n onEnter: () => void;\n onExited: () => void;\n}\ninterface IChildProps {\n placement: Placement;\n transitionProps: Partial<TransitionProps>;\n}\n\ninterface PopperProps {\n /** Anchor Element. */\n anchorEl?: Element | null;\n /** Open */\n open?: boolean;\n /** Inline style */\n style?: CSSProperties;\n /** Child with transition */\n transition?: boolean;\n /** Placement */\n placement?: Placement;\n /** Strategy */\n strategy?: PositioningStrategy;\n /** After Write callback */\n afterWrite?: (...args) => void;\n}\n\nexport const Popper = forwardRef<\n HTMLDivElement,\n PopperProps & HTMLAttributes<HTMLDivElement>\n>(\n (\n {\n children,\n anchorEl,\n open = false,\n style,\n transition = false,\n placement: initialPlacement = \"bottom\",\n strategy = \"absolute\",\n afterWrite,\n ...rest\n },\n ref\n ) => {\n const [exited, setExited] = useState(true);\n const [placement, setPlacement] = useState(initialPlacement);\n const ownRef = useRef<HTMLDivElement | null>(null);\n const popperRef = useRef<Instance>();\n\n const handleInnerRef = useForkRef(ownRef, ref);\n\n const handlePopperUpdate = (data: Partial<State>): void => {\n setPlacement(data.placement || \"bottom\");\n };\n\n const handleOpen = useCallback(() => {\n if (!ownRef.current || !anchorEl || !open) {\n return;\n }\n\n if (popperRef.current) {\n popperRef.current.destroy();\n }\n\n popperRef.current = createPopper(anchorEl, ownRef.current, {\n placement,\n onFirstUpdate: handlePopperUpdate,\n strategy,\n modifiers: [\n {\n phase: \"afterWrite\",\n enabled: typeof afterWrite === \"function\",\n name: \"popper-after-write\",\n fn: afterWrite,\n },\n ],\n });\n }, [afterWrite, anchorEl, open, placement, strategy]);\n\n const handleClose = (): void => {\n if (!popperRef.current) {\n return;\n }\n\n popperRef.current.destroy();\n };\n\n const handleRef = useCallback(\n (node: HTMLDivElement) => {\n handleInnerRef(node);\n handleOpen();\n },\n [handleOpen, handleInnerRef]\n );\n\n const handleEnter = (): void => {\n setExited(false);\n };\n\n const handleExited = (): void => {\n setExited(true);\n handleClose();\n };\n\n useEffect(() => {\n return (): void => {\n handleClose();\n };\n }, []);\n\n useEffect(() => {\n if (!open && !transition) {\n handleClose();\n }\n }, [open, transition]);\n\n useEffect(() => {\n if (popperRef.current) {\n popperRef.current.update();\n }\n });\n\n if (!open && (!transition || exited)) {\n return null;\n }\n\n const childProps: Partial<IChildProps> = { placement };\n\n if (transition) {\n childProps.transitionProps = {\n in: open,\n onEnter: handleEnter,\n onExited: handleExited,\n };\n }\n\n return (\n <div\n ref={handleRef}\n {...rest}\n style={{\n ...style,\n }}\n >\n {typeof children === \"function\" ? children(childProps) : children}\n </div>\n );\n }\n);\n\nPopper.displayName = \"Popper\";\n"],"mappings":"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"}
|
|
@@ -132,7 +132,11 @@ var Select = function Select(_ref) {
|
|
|
132
132
|
target: target,
|
|
133
133
|
mode: mode,
|
|
134
134
|
open: open,
|
|
135
|
-
position: position
|
|
135
|
+
position: position,
|
|
136
|
+
onPopperOpen: function onPopperOpen() {
|
|
137
|
+
var _elementRef$current;
|
|
138
|
+
return elementRef === null || elementRef === void 0 ? void 0 : (_elementRef$current = elementRef.current) === null || _elementRef$current === void 0 ? void 0 : _elementRef$current.focus();
|
|
139
|
+
}
|
|
136
140
|
};
|
|
137
141
|
}
|
|
138
142
|
return {
|
|
@@ -193,7 +197,6 @@ var Select = function Select(_ref) {
|
|
|
193
197
|
ref: formRef
|
|
194
198
|
}, /*#__PURE__*/_react.default.createElement(_Styles.StyledSelectInput, {
|
|
195
199
|
ref: handleRef,
|
|
196
|
-
autoFocus: true,
|
|
197
200
|
placeholder: placeholder
|
|
198
201
|
}), actionIcon && actionLabel && /*#__PURE__*/_react.default.createElement(_Tooltip.Tooltip, {
|
|
199
202
|
popperTooltipStyle: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Select.js","names":["Select","type","mode","target","options","selected","position","onChange","actionIcon","actionLabel","placeholder","emptyAction","disableSearch","forceCloseMenu","selectClassName","keepSameOptionsOrder","onSelectOpen","onSelectClose","renderOption","handleDefaultOptionChange","preselectDefaultValue","prop","childNode","useRef","elementRef","handleRef","useForkRef","Tag","Menu","formRef","useState","open","setOpen","selectedOptions","useMemo","Array","selectOptions","allOptionValues","reduce","acc","option","isOptionGroup","id","allGroupOptions","map","isAllOptionsChecked","every","includes","useEffect","current","focus","handleChange","useCallback","selectedValue","onClose","onOpen","props","menuClassName","classNames","className","handleEmptyAction","value","reset","handleDefaultOptionChangeCallback","length","handleRenderOption","image","color","textColor","name","additionalInfo","zIndex","displayName"],"sources":["../../../../src/components/Select/Select.tsx"],"sourcesContent":["import React, {\n FC,\n useCallback,\n useState,\n ReactElement,\n useMemo,\n useEffect,\n useRef,\n Ref,\n} from \"react\";\nimport { Autocomplete, isOptionGroup } from \"../Autocomplete\";\nimport { Tooltip } from \"../Tooltip\";\nimport { Menu } from \"../Menu/Menu\";\nimport { IOptionItemProps } from \"../Select/Option\";\nimport { IOptionGroupProps } from \"../Select/OptionGroup\";\nimport classNames from \"classnames\";\nimport { Placement } from \"@popperjs/core\";\nimport { IAutocompleteProps } from \"../Autocomplete/Autocomplete\";\nimport useForkRef from \"../../utils/useForkRef\";\nimport {\n StyledSelectForm,\n StyledSelectInput,\n StyledCheckbox,\n StyledRadioButton,\n} from \"./Styles\";\nimport { OptionContent } from \"./OptionContent/OptionContent\";\n\ninterface ElementWithRef<T> extends ReactElement {\n ref?: Ref<T>;\n}\n\nexport interface ISelectProps\n extends Omit<\n IAutocompleteProps,\n \"handleChange\" | \"inputEl\" | \"handleEmptyAction\" | \"clearInputOnSelect\"\n > {\n /** Menu width mode */\n mode?: \"normal\" | \"wider\" | \"tiny\";\n /** Set select target element */\n target?: ElementWithRef<Element>;\n /** Set Select position */\n position?: Placement;\n /** onChange callback */\n onChange?: (e: (string | number)[] | string | number) => void;\n /** Set action icon in select */\n actionIcon?: ReactElement;\n /** Set label for action icon */\n actionLabel?: string;\n /** Placeholder for Select input */\n placeholder?: string;\n /** Function that triggers when empty is clicked */\n emptyAction?: (e: string | undefined) => void;\n /** Removes input from Select */\n disableSearch?: boolean;\n /** Close menu on select */\n forceCloseMenu?: boolean;\n /** Set select classNames */\n selectClassName?: string;\n /** Callback called when the Select menu is opened */\n onSelectOpen?: () => void;\n /** Callback called when the Select menu is closed */\n onSelectClose?: () => void;\n}\n\nexport const Select: FC<ISelectProps> = ({\n type = \"single\",\n mode,\n target,\n options,\n selected = [],\n position = \"bottom-start\",\n onChange = () => null,\n actionIcon,\n actionLabel,\n placeholder,\n emptyAction = (): null => null,\n disableSearch = false,\n forceCloseMenu,\n selectClassName,\n keepSameOptionsOrder = false,\n onSelectOpen,\n onSelectClose,\n renderOption,\n handleDefaultOptionChange,\n preselectDefaultValue = type === \"single\",\n ...prop\n}) => {\n const childNode = useRef<HTMLInputElement | null>();\n const elementRef = useRef<HTMLInputElement | null>(null);\n\n const handleRef = useForkRef(childNode, elementRef);\n\n const Tag = !target ? \"div\" : Menu;\n const formRef = useRef<HTMLFormElement | null>(null);\n\n const [open, setOpen] = useState(false);\n\n const selectedOptions = useMemo(\n () => (selected instanceof Array ? selected : [selected]),\n [selected]\n );\n\n const selectOptions = useMemo(() => {\n if (!options) {\n return [];\n }\n return options;\n }, [options]);\n\n const allOptionValues = useMemo(() => {\n return selectOptions.reduce(\n (\n acc: (string | number)[],\n option: IOptionGroupProps | IOptionItemProps\n ) => {\n if (!isOptionGroup(option)) {\n return [...acc, option.id];\n }\n const allGroupOptions = option.options.map((option) => option.id);\n return [...acc, ...allGroupOptions];\n },\n []\n );\n }, [selectOptions]);\n\n const isAllOptionsChecked = useMemo(\n () => allOptionValues.every((option) => selectedOptions.includes(option)),\n [allOptionValues, selectedOptions]\n );\n\n useEffect(() => {\n open && childNode?.current?.focus();\n }, [childNode, open]);\n\n const handleChange = useCallback(\n (selectedValue) => {\n if (forceCloseMenu) {\n if (typeof onSelectClose === \"function\") onSelectClose();\n setOpen(false);\n }\n if (selectedValue !== selected) {\n onChange(selectedValue);\n }\n },\n [forceCloseMenu, selected, onSelectClose, onChange]\n );\n\n const onClose = useCallback(() => {\n setOpen(false);\n if (onSelectClose) {\n onSelectClose();\n }\n }, [onSelectClose]);\n\n const onOpen = useCallback(() => {\n setOpen(true);\n if (onSelectOpen) {\n onSelectOpen();\n }\n }, [onSelectOpen]);\n\n const props = useMemo(() => {\n if (target) {\n return {\n menuClassName: classNames(\"c-select\", selectClassName),\n onClose,\n onOpen,\n target,\n mode,\n open,\n position,\n };\n }\n return { className: classNames(\"c-select\", selectClassName) };\n }, [target, selectClassName, onClose, onOpen, mode, open, position]);\n\n const handleEmptyAction = useCallback(\n (value) => {\n emptyAction(value);\n if (forceCloseMenu) {\n setOpen(false);\n }\n formRef.current?.reset();\n },\n [emptyAction, forceCloseMenu]\n );\n\n const handleDefaultOptionChangeCallback = useCallback(() => {\n if (type === \"multiple\") {\n if (selectedOptions.length === allOptionValues.length) {\n if (typeof handleDefaultOptionChange === \"function\") {\n handleDefaultOptionChange();\n } else {\n onChange([]);\n }\n } else {\n if (typeof handleDefaultOptionChange === \"function\") {\n handleDefaultOptionChange();\n } else {\n onChange(allOptionValues);\n }\n }\n } else {\n if (typeof handleDefaultOptionChange === \"function\") {\n handleDefaultOptionChange();\n } else {\n onChange(\"\");\n }\n }\n if (forceCloseMenu) {\n setOpen(false);\n }\n }, [\n onChange,\n type,\n forceCloseMenu,\n selectedOptions.length,\n allOptionValues,\n handleDefaultOptionChange,\n ]);\n\n const handleRenderOption = useCallback(\n (option, props) => {\n if (typeof renderOption === \"function\") {\n return renderOption(option, props);\n }\n return (\n <>\n <OptionContent\n imageUrl={option.image}\n color={option.color}\n textColor={option.textColor}\n name={option.name}\n additionalInfo={option.additionalInfo}\n />\n {option.id === null ? (\n type === \"multiple\" ? (\n <StyledCheckbox checked={isAllOptionsChecked} {...props} />\n ) : (\n <StyledRadioButton\n checked={selectedOptions.length < 1 || !selectedOptions[0]}\n {...props}\n />\n )\n ) : type === \"multiple\" ? (\n <StyledCheckbox {...props} />\n ) : (\n <StyledRadioButton {...props} />\n )}\n </>\n );\n },\n [isAllOptionsChecked, renderOption, selectedOptions, type]\n );\n\n return (\n <Tag {...props}>\n <div>\n {!disableSearch ? (\n <StyledSelectForm ref={formRef}>\n <StyledSelectInput\n ref={handleRef}\n autoFocus\n placeholder={placeholder}\n />\n {actionIcon && actionLabel && (\n <Tooltip\n popperTooltipStyle={{ zIndex: 1301 }}\n title={actionLabel}\n >\n <div>{actionIcon}</div>\n </Tooltip>\n )}\n {actionIcon && !actionLabel && actionIcon}\n </StyledSelectForm>\n ) : null}\n <Autocomplete\n {...prop}\n clearInputOnSelect\n inputEl={childNode}\n handleEmptyAction={handleEmptyAction}\n selected={selected}\n handleChange={handleChange}\n renderOption={handleRenderOption}\n options={options}\n handleDefaultOptionChange={handleDefaultOptionChangeCallback}\n type={type}\n preselectDefaultValue={preselectDefaultValue}\n keepSameOptionsOrder={keepSameOptionsOrder}\n />\n </div>\n </Tag>\n );\n};\n\nSelect.displayName = \"Select\";\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Select.js","names":["Select","type","mode","target","options","selected","position","onChange","actionIcon","actionLabel","placeholder","emptyAction","disableSearch","forceCloseMenu","selectClassName","keepSameOptionsOrder","onSelectOpen","onSelectClose","renderOption","handleDefaultOptionChange","preselectDefaultValue","prop","childNode","useRef","elementRef","handleRef","useForkRef","Tag","Menu","formRef","useState","open","setOpen","selectedOptions","useMemo","Array","selectOptions","allOptionValues","reduce","acc","option","isOptionGroup","id","allGroupOptions","map","isAllOptionsChecked","every","includes","useEffect","current","focus","handleChange","useCallback","selectedValue","onClose","onOpen","props","menuClassName","classNames","onPopperOpen","className","handleEmptyAction","value","reset","handleDefaultOptionChangeCallback","length","handleRenderOption","image","color","textColor","name","additionalInfo","zIndex","displayName"],"sources":["../../../../src/components/Select/Select.tsx"],"sourcesContent":["import React, {\n FC,\n useCallback,\n useState,\n ReactElement,\n useMemo,\n useEffect,\n useRef,\n Ref,\n} from \"react\";\nimport { Autocomplete, isOptionGroup } from \"../Autocomplete\";\nimport { Tooltip } from \"../Tooltip\";\nimport { Menu } from \"../Menu/Menu\";\nimport { IOptionItemProps } from \"../Select/Option\";\nimport { IOptionGroupProps } from \"../Select/OptionGroup\";\nimport classNames from \"classnames\";\nimport { Placement } from \"@popperjs/core\";\nimport { IAutocompleteProps } from \"../Autocomplete/Autocomplete\";\nimport useForkRef from \"../../utils/useForkRef\";\nimport {\n StyledSelectForm,\n StyledSelectInput,\n StyledCheckbox,\n StyledRadioButton,\n} from \"./Styles\";\nimport { OptionContent } from \"./OptionContent/OptionContent\";\n\ninterface ElementWithRef<T> extends ReactElement {\n ref?: Ref<T>;\n}\n\nexport interface ISelectProps\n extends Omit<\n IAutocompleteProps,\n \"handleChange\" | \"inputEl\" | \"handleEmptyAction\" | \"clearInputOnSelect\"\n > {\n /** Menu width mode */\n mode?: \"normal\" | \"wider\" | \"tiny\";\n /** Set select target element */\n target?: ElementWithRef<Element>;\n /** Set Select position */\n position?: Placement;\n /** onChange callback */\n onChange?: (e: (string | number)[] | string | number) => void;\n /** Set action icon in select */\n actionIcon?: ReactElement;\n /** Set label for action icon */\n actionLabel?: string;\n /** Placeholder for Select input */\n placeholder?: string;\n /** Function that triggers when empty is clicked */\n emptyAction?: (e: string | undefined) => void;\n /** Removes input from Select */\n disableSearch?: boolean;\n /** Close menu on select */\n forceCloseMenu?: boolean;\n /** Set select classNames */\n selectClassName?: string;\n /** Callback called when the Select menu is opened */\n onSelectOpen?: () => void;\n /** Callback called when the Select menu is closed */\n onSelectClose?: () => void;\n}\n\nexport const Select: FC<ISelectProps> = ({\n type = \"single\",\n mode,\n target,\n options,\n selected = [],\n position = \"bottom-start\",\n onChange = () => null,\n actionIcon,\n actionLabel,\n placeholder,\n emptyAction = (): null => null,\n disableSearch = false,\n forceCloseMenu,\n selectClassName,\n keepSameOptionsOrder = false,\n onSelectOpen,\n onSelectClose,\n renderOption,\n handleDefaultOptionChange,\n preselectDefaultValue = type === \"single\",\n ...prop\n}) => {\n const childNode = useRef<HTMLInputElement | null>();\n const elementRef = useRef<HTMLInputElement | null>(null);\n\n const handleRef = useForkRef(childNode, elementRef);\n\n const Tag = !target ? \"div\" : Menu;\n const formRef = useRef<HTMLFormElement | null>(null);\n\n const [open, setOpen] = useState(false);\n\n const selectedOptions = useMemo(\n () => (selected instanceof Array ? selected : [selected]),\n [selected]\n );\n\n const selectOptions = useMemo(() => {\n if (!options) {\n return [];\n }\n return options;\n }, [options]);\n\n const allOptionValues = useMemo(() => {\n return selectOptions.reduce(\n (\n acc: (string | number)[],\n option: IOptionGroupProps | IOptionItemProps\n ) => {\n if (!isOptionGroup(option)) {\n return [...acc, option.id];\n }\n const allGroupOptions = option.options.map((option) => option.id);\n return [...acc, ...allGroupOptions];\n },\n []\n );\n }, [selectOptions]);\n\n const isAllOptionsChecked = useMemo(\n () => allOptionValues.every((option) => selectedOptions.includes(option)),\n [allOptionValues, selectedOptions]\n );\n\n useEffect(() => {\n open && childNode?.current?.focus();\n }, [childNode, open]);\n\n const handleChange = useCallback(\n (selectedValue) => {\n if (forceCloseMenu) {\n if (typeof onSelectClose === \"function\") onSelectClose();\n setOpen(false);\n }\n if (selectedValue !== selected) {\n onChange(selectedValue);\n }\n },\n [forceCloseMenu, selected, onSelectClose, onChange]\n );\n\n const onClose = useCallback(() => {\n setOpen(false);\n if (onSelectClose) {\n onSelectClose();\n }\n }, [onSelectClose]);\n\n const onOpen = useCallback(() => {\n setOpen(true);\n if (onSelectOpen) {\n onSelectOpen();\n }\n }, [onSelectOpen]);\n\n const props = useMemo(() => {\n if (target) {\n return {\n menuClassName: classNames(\"c-select\", selectClassName),\n onClose,\n onOpen,\n target,\n mode,\n open,\n position,\n onPopperOpen: () => elementRef?.current?.focus(),\n };\n }\n return { className: classNames(\"c-select\", selectClassName) };\n }, [target, selectClassName, onClose, onOpen, mode, open, position]);\n\n const handleEmptyAction = useCallback(\n (value) => {\n emptyAction(value);\n if (forceCloseMenu) {\n setOpen(false);\n }\n formRef.current?.reset();\n },\n [emptyAction, forceCloseMenu]\n );\n\n const handleDefaultOptionChangeCallback = useCallback(() => {\n if (type === \"multiple\") {\n if (selectedOptions.length === allOptionValues.length) {\n if (typeof handleDefaultOptionChange === \"function\") {\n handleDefaultOptionChange();\n } else {\n onChange([]);\n }\n } else {\n if (typeof handleDefaultOptionChange === \"function\") {\n handleDefaultOptionChange();\n } else {\n onChange(allOptionValues);\n }\n }\n } else {\n if (typeof handleDefaultOptionChange === \"function\") {\n handleDefaultOptionChange();\n } else {\n onChange(\"\");\n }\n }\n if (forceCloseMenu) {\n setOpen(false);\n }\n }, [\n onChange,\n type,\n forceCloseMenu,\n selectedOptions.length,\n allOptionValues,\n handleDefaultOptionChange,\n ]);\n\n const handleRenderOption = useCallback(\n (option, props) => {\n if (typeof renderOption === \"function\") {\n return renderOption(option, props);\n }\n return (\n <>\n <OptionContent\n imageUrl={option.image}\n color={option.color}\n textColor={option.textColor}\n name={option.name}\n additionalInfo={option.additionalInfo}\n />\n {option.id === null ? (\n type === \"multiple\" ? (\n <StyledCheckbox checked={isAllOptionsChecked} {...props} />\n ) : (\n <StyledRadioButton\n checked={selectedOptions.length < 1 || !selectedOptions[0]}\n {...props}\n />\n )\n ) : type === \"multiple\" ? (\n <StyledCheckbox {...props} />\n ) : (\n <StyledRadioButton {...props} />\n )}\n </>\n );\n },\n [isAllOptionsChecked, renderOption, selectedOptions, type]\n );\n\n return (\n <Tag {...props}>\n <div>\n {!disableSearch ? (\n <StyledSelectForm ref={formRef}>\n <StyledSelectInput ref={handleRef} placeholder={placeholder} />\n {actionIcon && actionLabel && (\n <Tooltip\n popperTooltipStyle={{ zIndex: 1301 }}\n title={actionLabel}\n >\n <div>{actionIcon}</div>\n </Tooltip>\n )}\n {actionIcon && !actionLabel && actionIcon}\n </StyledSelectForm>\n ) : null}\n <Autocomplete\n {...prop}\n clearInputOnSelect\n inputEl={childNode}\n handleEmptyAction={handleEmptyAction}\n selected={selected}\n handleChange={handleChange}\n renderOption={handleRenderOption}\n options={options}\n handleDefaultOptionChange={handleDefaultOptionChangeCallback}\n type={type}\n preselectDefaultValue={preselectDefaultValue}\n keepSameOptionsOrder={keepSameOptionsOrder}\n />\n </div>\n </Tag>\n );\n};\n\nSelect.displayName = \"Select\";\n"],"mappings":"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"}
|
|
@@ -36,6 +36,8 @@ export interface IMenu {
|
|
|
36
36
|
backgroundElementClass?: string;
|
|
37
37
|
/** Should Window be positioned absolutely */
|
|
38
38
|
windowAbsolutelyPositioned?: boolean;
|
|
39
|
+
/** Popper on open */
|
|
40
|
+
onPopperOpen?: (...args: any[]) => void;
|
|
39
41
|
}
|
|
40
42
|
export declare const Menu: FC<IMenu>;
|
|
41
43
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Menu.d.ts","sourceRoot":"","sources":["../../../../src/components/Menu/Menu.tsx"],"names":[],"mappings":"AAAA,OAAc,EAEZ,EAAE,EACF,SAAS,EACT,UAAU,EAIV,YAAY,EACZ,GAAG,EACJ,MAAM,OAAO,CAAC;AAMf,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAI3C,UAAU,cAAc,CAAC,CAAC,CAAE,SAAQ,YAAY;IAC9C,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;CACd;AAED,oBAAY,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;AAEnD,MAAM,WAAW,KAAK;IACpB,mBAAmB;IACnB,QAAQ,EAAE,SAAS,CAAC;IACpB,4BAA4B;IAC5B,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IACvD,wBAAwB;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,yBAAyB;IACzB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,sBAAsB;IACtB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,4CAA4C;IAC5C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,oDAAoD;IACpD,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,oDAAoD;IACpD,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,4BAA4B;IAC5B,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC;IAC9B,oBAAoB;IACpB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,qBAAqB;IACrB,MAAM,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mBAAmB;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,uBAAuB;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,6FAA6F;IAC7F,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,6CAA6C;IAC7C,0BAA0B,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"Menu.d.ts","sourceRoot":"","sources":["../../../../src/components/Menu/Menu.tsx"],"names":[],"mappings":"AAAA,OAAc,EAEZ,EAAE,EACF,SAAS,EACT,UAAU,EAIV,YAAY,EACZ,GAAG,EACJ,MAAM,OAAO,CAAC;AAMf,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAI3C,UAAU,cAAc,CAAC,CAAC,CAAE,SAAQ,YAAY;IAC9C,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;CACd;AAED,oBAAY,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;AAEnD,MAAM,WAAW,KAAK;IACpB,mBAAmB;IACnB,QAAQ,EAAE,SAAS,CAAC;IACpB,4BAA4B;IAC5B,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IACvD,wBAAwB;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,yBAAyB;IACzB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,sBAAsB;IACtB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,4CAA4C;IAC5C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,oDAAoD;IACpD,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,oDAAoD;IACpD,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,4BAA4B;IAC5B,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC;IAC9B,oBAAoB;IACpB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,qBAAqB;IACrB,MAAM,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mBAAmB;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,uBAAuB;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,6FAA6F;IAC7F,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,6CAA6C;IAC7C,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,qBAAqB;IACrB,YAAY,CAAC,EAAE,CAAC,GAAG,IAAI,OAAA,KAAK,IAAI,CAAC;CAClC;AAED,eAAO,MAAM,IAAI,EAAE,EAAE,CAAC,KAAK,CA0H1B,CAAC"}
|
|
@@ -28,7 +28,8 @@ export var Menu = function Menu(_ref) {
|
|
|
28
28
|
popperClassName = _ref.popperClassName,
|
|
29
29
|
backgroundElementClass = _ref.backgroundElementClass,
|
|
30
30
|
_ref$windowAbsolutely = _ref.windowAbsolutelyPositioned,
|
|
31
|
-
windowAbsolutelyPositioned = _ref$windowAbsolutely === void 0 ? false : _ref$windowAbsolutely
|
|
31
|
+
windowAbsolutelyPositioned = _ref$windowAbsolutely === void 0 ? false : _ref$windowAbsolutely,
|
|
32
|
+
onPopperOpen = _ref.onPopperOpen;
|
|
32
33
|
var _useState = useState(defaultOpen),
|
|
33
34
|
open = _useState[0],
|
|
34
35
|
setOpen = _useState[1];
|
|
@@ -91,7 +92,8 @@ export var Menu = function Menu(_ref) {
|
|
|
91
92
|
open: childNode ? open : false,
|
|
92
93
|
placement: position,
|
|
93
94
|
className: popperClassName,
|
|
94
|
-
tabIndex: -1
|
|
95
|
+
tabIndex: -1,
|
|
96
|
+
afterWrite: onPopperOpen
|
|
95
97
|
}, /*#__PURE__*/React.createElement(StyledMenu, {
|
|
96
98
|
className: classnames("c-simple-menu__paper", "c-simple-menu__" + mode, menuClassName, className),
|
|
97
99
|
$mode: mode,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Menu.js","names":["React","useRef","useState","useCallback","useEffect","classnames","Popper","useForkRef","Overlay","Window","MenuContextProvider","StyledMenu","Menu","children","disableFocusLock","onMenuClick","handleScroll","mode","open","defaultOpen","onOpen","onClose","onBeforeClose","position","target","className","menuClassName","popperClassName","backgroundElementClass","windowAbsolutelyPositioned","setOpen","childNode","setChildNode","elementRef","isOpenAtLeastOnce","handleRefRef","ref","undefined","handleRef","handleOpen","event","preventDefault","stopPropagation","props","onClick","handleClose","childProps","forceClose","targetProps","current","focus","cloneElement","displayName"],"sources":["../../../../src/components/Menu/Menu.tsx"],"sourcesContent":["import React, {\n useRef,\n FC,\n ReactNode,\n MouseEvent,\n useState,\n useCallback,\n useEffect,\n ReactElement,\n Ref,\n} from \"react\";\nimport classnames from \"classnames\";\nimport { Popper } from \"../Popper\";\nimport useForkRef from \"../../utils/useForkRef\";\nimport { Overlay } from \"../Overlay\";\nimport { Window } from \"../Window\";\nimport { Placement } from \"@popperjs/core\";\nimport { MenuContextProvider } from \"./context\";\nimport { StyledMenu } from \"./Styles\";\n\ninterface ElementWithRef<T> extends ReactElement {\n ref?: Ref<T>;\n}\n\nexport type MenuMode = \"normal\" | \"wider\" | \"tiny\";\n\nexport interface IMenu {\n /** Menu content */\n children: ReactNode;\n /** On menu element click */\n onMenuClick?: (event: MouseEvent<HTMLElement>) => void;\n /** Handle scroll bar */\n handleScroll?: boolean;\n /** Disable Focus Lock */\n disableFocusLock?: boolean;\n /** Menu width mode */\n mode?: MenuMode;\n /** Should menu be open when it's mounted */\n open?: boolean;\n /** Callback triggered when modal has been opened */\n onOpen?: () => void;\n /** Callback triggered when modal has been closed */\n onClose?: () => void;\n /** Before close callback */\n onBeforeClose?: () => boolean;\n /** Position Menu */\n position?: Placement;\n /** Target element */\n target?: ElementWithRef<Element>;\n className?: string;\n /** Menu classes */\n menuClassName?: string;\n /** Popper class name*/\n popperClassName?: string;\n /** Background style for clickable element after the menu is open (opacity, color, etc...) */\n backgroundElementClass?: string;\n /** Should Window be positioned absolutely */\n windowAbsolutelyPositioned?: boolean;\n}\n\nexport const Menu: FC<IMenu> = ({\n children,\n disableFocusLock = false,\n onMenuClick,\n handleScroll = true,\n mode = \"normal\",\n open: defaultOpen = false,\n onOpen,\n onClose,\n onBeforeClose,\n position = \"bottom-start\",\n target,\n className,\n menuClassName,\n popperClassName,\n backgroundElementClass,\n windowAbsolutelyPositioned = false,\n}) => {\n const [open, setOpen] = useState(defaultOpen);\n const [childNode, setChildNode] = useState<Element | null>();\n const elementRef = useRef<HTMLElement | null>(null);\n const isOpenAtLeastOnce = useRef(false);\n\n useEffect(() => {\n setOpen(defaultOpen);\n }, [defaultOpen]);\n\n const handleRefRef = useForkRef(\n target ? target.ref : undefined,\n setChildNode\n );\n const handleRef = useForkRef(handleRefRef, elementRef);\n\n const handleOpen = useCallback(\n (\n event: Pick<MouseEvent<Element>, \"preventDefault\" | \"stopPropagation\">\n ) => {\n event?.preventDefault();\n event?.stopPropagation();\n setOpen(true);\n typeof onOpen === \"function\" && onOpen();\n typeof target?.props?.onClick === \"function\" &&\n target.props.onClick(event);\n },\n [onOpen, target?.props]\n );\n\n const handleClose = useCallback(() => {\n if (typeof onBeforeClose === \"function\" && !onBeforeClose()) {\n return;\n }\n setOpen(false);\n typeof onClose === \"function\" && onClose();\n }, [onClose, onBeforeClose]);\n\n const childProps = {\n forceClose: handleClose,\n };\n\n const targetProps = {\n open,\n ref: handleRef,\n onClick: handleOpen,\n };\n\n useEffect(() => {\n if (open) {\n isOpenAtLeastOnce.current = true;\n } else if (!open && isOpenAtLeastOnce.current) {\n elementRef.current?.focus();\n isOpenAtLeastOnce.current = false;\n }\n }, [open]);\n\n return (\n <>\n {target && React.cloneElement(target, targetProps)}\n {open ? (\n <Window\n onClose={handleClose}\n disableScrollLock={!handleScroll}\n disableFocusLock={disableFocusLock}\n style={{\n position: windowAbsolutelyPositioned ? \"absolute\" : \"fixed\",\n }}\n >\n <Overlay\n className={backgroundElementClass}\n onClick={handleClose}\n tabIndex={-1}\n disableBackgroundColor\n />\n <Popper\n anchorEl={childNode}\n open={childNode ? open : false}\n placement={position}\n className={popperClassName}\n tabIndex={-1}\n >\n <StyledMenu\n className={classnames(\n \"c-simple-menu__paper\",\n `c-simple-menu__${mode}`,\n menuClassName,\n className\n )}\n $mode={mode}\n onMouseDown={onMenuClick}\n >\n <MenuContextProvider value={{ open, setOpen }}>\n {typeof children === \"function\"\n ? children(childProps)\n : children}\n </MenuContextProvider>\n </StyledMenu>\n </Popper>\n </Window>\n ) : null}\n </>\n );\n};\n\nMenu.displayName = \"Menu\";\n"],"mappings":"AAAA,OAAOA,KAAK,IACVC,MAAM,EAINC,QAAQ,EACRC,WAAW,EACXC,SAAS,QAGJ,OAAO;AACd,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,MAAM,QAAQ,WAAW;AAClC,OAAOC,UAAU,MAAM,wBAAwB;AAC/C,SAASC,OAAO,QAAQ,YAAY;AACpC,SAASC,MAAM,QAAQ,WAAW;AAElC,SAASC,mBAAmB,QAAQ,WAAW;AAC/C,SAASC,UAAU,QAAQ,UAAU;
|
|
1
|
+
{"version":3,"file":"Menu.js","names":["React","useRef","useState","useCallback","useEffect","classnames","Popper","useForkRef","Overlay","Window","MenuContextProvider","StyledMenu","Menu","children","disableFocusLock","onMenuClick","handleScroll","mode","open","defaultOpen","onOpen","onClose","onBeforeClose","position","target","className","menuClassName","popperClassName","backgroundElementClass","windowAbsolutelyPositioned","onPopperOpen","setOpen","childNode","setChildNode","elementRef","isOpenAtLeastOnce","handleRefRef","ref","undefined","handleRef","handleOpen","event","preventDefault","stopPropagation","props","onClick","handleClose","childProps","forceClose","targetProps","current","focus","cloneElement","displayName"],"sources":["../../../../src/components/Menu/Menu.tsx"],"sourcesContent":["import React, {\n useRef,\n FC,\n ReactNode,\n MouseEvent,\n useState,\n useCallback,\n useEffect,\n ReactElement,\n Ref,\n} from \"react\";\nimport classnames from \"classnames\";\nimport { Popper } from \"../Popper\";\nimport useForkRef from \"../../utils/useForkRef\";\nimport { Overlay } from \"../Overlay\";\nimport { Window } from \"../Window\";\nimport { Placement } from \"@popperjs/core\";\nimport { MenuContextProvider } from \"./context\";\nimport { StyledMenu } from \"./Styles\";\n\ninterface ElementWithRef<T> extends ReactElement {\n ref?: Ref<T>;\n}\n\nexport type MenuMode = \"normal\" | \"wider\" | \"tiny\";\n\nexport interface IMenu {\n /** Menu content */\n children: ReactNode;\n /** On menu element click */\n onMenuClick?: (event: MouseEvent<HTMLElement>) => void;\n /** Handle scroll bar */\n handleScroll?: boolean;\n /** Disable Focus Lock */\n disableFocusLock?: boolean;\n /** Menu width mode */\n mode?: MenuMode;\n /** Should menu be open when it's mounted */\n open?: boolean;\n /** Callback triggered when modal has been opened */\n onOpen?: () => void;\n /** Callback triggered when modal has been closed */\n onClose?: () => void;\n /** Before close callback */\n onBeforeClose?: () => boolean;\n /** Position Menu */\n position?: Placement;\n /** Target element */\n target?: ElementWithRef<Element>;\n className?: string;\n /** Menu classes */\n menuClassName?: string;\n /** Popper class name*/\n popperClassName?: string;\n /** Background style for clickable element after the menu is open (opacity, color, etc...) */\n backgroundElementClass?: string;\n /** Should Window be positioned absolutely */\n windowAbsolutelyPositioned?: boolean;\n /** Popper on open */\n onPopperOpen?: (...args) => void;\n}\n\nexport const Menu: FC<IMenu> = ({\n children,\n disableFocusLock = false,\n onMenuClick,\n handleScroll = true,\n mode = \"normal\",\n open: defaultOpen = false,\n onOpen,\n onClose,\n onBeforeClose,\n position = \"bottom-start\",\n target,\n className,\n menuClassName,\n popperClassName,\n backgroundElementClass,\n windowAbsolutelyPositioned = false,\n onPopperOpen,\n}) => {\n const [open, setOpen] = useState(defaultOpen);\n const [childNode, setChildNode] = useState<Element | null>();\n const elementRef = useRef<HTMLElement | null>(null);\n const isOpenAtLeastOnce = useRef(false);\n\n useEffect(() => {\n setOpen(defaultOpen);\n }, [defaultOpen]);\n\n const handleRefRef = useForkRef(\n target ? target.ref : undefined,\n setChildNode\n );\n const handleRef = useForkRef(handleRefRef, elementRef);\n\n const handleOpen = useCallback(\n (\n event: Pick<MouseEvent<Element>, \"preventDefault\" | \"stopPropagation\">\n ) => {\n event?.preventDefault();\n event?.stopPropagation();\n setOpen(true);\n typeof onOpen === \"function\" && onOpen();\n typeof target?.props?.onClick === \"function\" &&\n target.props.onClick(event);\n },\n [onOpen, target?.props]\n );\n\n const handleClose = useCallback(() => {\n if (typeof onBeforeClose === \"function\" && !onBeforeClose()) {\n return;\n }\n setOpen(false);\n typeof onClose === \"function\" && onClose();\n }, [onClose, onBeforeClose]);\n\n const childProps = {\n forceClose: handleClose,\n };\n\n const targetProps = {\n open,\n ref: handleRef,\n onClick: handleOpen,\n };\n\n useEffect(() => {\n if (open) {\n isOpenAtLeastOnce.current = true;\n } else if (!open && isOpenAtLeastOnce.current) {\n elementRef.current?.focus();\n isOpenAtLeastOnce.current = false;\n }\n }, [open]);\n\n return (\n <>\n {target && React.cloneElement(target, targetProps)}\n {open ? (\n <Window\n onClose={handleClose}\n disableScrollLock={!handleScroll}\n disableFocusLock={disableFocusLock}\n style={{\n position: windowAbsolutelyPositioned ? \"absolute\" : \"fixed\",\n }}\n >\n <Overlay\n className={backgroundElementClass}\n onClick={handleClose}\n tabIndex={-1}\n disableBackgroundColor\n />\n <Popper\n anchorEl={childNode}\n open={childNode ? open : false}\n placement={position}\n className={popperClassName}\n tabIndex={-1}\n afterWrite={onPopperOpen}\n >\n <StyledMenu\n className={classnames(\n \"c-simple-menu__paper\",\n `c-simple-menu__${mode}`,\n menuClassName,\n className\n )}\n $mode={mode}\n onMouseDown={onMenuClick}\n >\n <MenuContextProvider value={{ open, setOpen }}>\n {typeof children === \"function\"\n ? children(childProps)\n : children}\n </MenuContextProvider>\n </StyledMenu>\n </Popper>\n </Window>\n ) : null}\n </>\n );\n};\n\nMenu.displayName = \"Menu\";\n"],"mappings":"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"}
|
|
@@ -14,6 +14,8 @@ interface PopperProps {
|
|
|
14
14
|
placement?: Placement;
|
|
15
15
|
/** Strategy */
|
|
16
16
|
strategy?: PositioningStrategy;
|
|
17
|
+
/** After Write callback */
|
|
18
|
+
afterWrite?: (...args: any[]) => void;
|
|
17
19
|
}
|
|
18
20
|
export declare const Popper: React.ForwardRefExoticComponent<PopperProps & React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
|
|
19
21
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Popper.d.ts","sourceRoot":"","sources":["../../../../src/components/Popper/Popper.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAMZ,aAAa,EAEd,MAAM,OAAO,CAAC;AACf,OAAO,EAGL,mBAAmB,EAEpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,CAAC;AAa9B,UAAU,WAAW;IACnB,sBAAsB;IACtB,QAAQ,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC1B,WAAW;IACX,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,mBAAmB;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,4BAA4B;IAC5B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,gBAAgB;IAChB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,eAAe;IACf,QAAQ,CAAC,EAAE,mBAAmB,CAAC;CAChC;AAED,eAAO,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"Popper.d.ts","sourceRoot":"","sources":["../../../../src/components/Popper/Popper.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAMZ,aAAa,EAEd,MAAM,OAAO,CAAC;AACf,OAAO,EAGL,mBAAmB,EAEpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,CAAC;AAa9B,UAAU,WAAW;IACnB,sBAAsB;IACtB,QAAQ,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC1B,WAAW;IACX,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,mBAAmB;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,4BAA4B;IAC5B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,gBAAgB;IAChB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,eAAe;IACf,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAC/B,2BAA2B;IAC3B,UAAU,CAAC,EAAE,CAAC,GAAG,IAAI,OAAA,KAAK,IAAI,CAAC;CAChC;AAED,eAAO,MAAM,MAAM,2HA0HlB,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
3
|
-
var _excluded = ["children", "anchorEl", "open", "style", "transition", "placement", "strategy"];
|
|
3
|
+
var _excluded = ["children", "anchorEl", "open", "style", "transition", "placement", "strategy", "afterWrite"];
|
|
4
4
|
import React, { forwardRef, useCallback, useRef, useEffect, useState } from "react";
|
|
5
5
|
import { createPopper } from "@popperjs/core";
|
|
6
6
|
import useForkRef from "../../utils/useForkRef";
|
|
@@ -16,6 +16,7 @@ export var Popper = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
|
16
16
|
initialPlacement = _ref$placement === void 0 ? "bottom" : _ref$placement,
|
|
17
17
|
_ref$strategy = _ref.strategy,
|
|
18
18
|
strategy = _ref$strategy === void 0 ? "absolute" : _ref$strategy,
|
|
19
|
+
afterWrite = _ref.afterWrite,
|
|
19
20
|
rest = _objectWithoutPropertiesLoose(_ref, _excluded);
|
|
20
21
|
var _useState = useState(true),
|
|
21
22
|
exited = _useState[0],
|
|
@@ -39,9 +40,15 @@ export var Popper = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
|
39
40
|
popperRef.current = createPopper(anchorEl, ownRef.current, {
|
|
40
41
|
placement: placement,
|
|
41
42
|
onFirstUpdate: handlePopperUpdate,
|
|
42
|
-
strategy: strategy
|
|
43
|
+
strategy: strategy,
|
|
44
|
+
modifiers: [{
|
|
45
|
+
phase: "afterWrite",
|
|
46
|
+
enabled: typeof afterWrite === "function",
|
|
47
|
+
name: "popper-after-write",
|
|
48
|
+
fn: afterWrite
|
|
49
|
+
}]
|
|
43
50
|
});
|
|
44
|
-
}, [anchorEl, open, placement, strategy]);
|
|
51
|
+
}, [afterWrite, anchorEl, open, placement, strategy]);
|
|
45
52
|
var handleClose = function handleClose() {
|
|
46
53
|
if (!popperRef.current) {
|
|
47
54
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Popper.js","names":["React","forwardRef","useCallback","useRef","useEffect","useState","createPopper","useForkRef","Popper","ref","children","anchorEl","open","style","transition","placement","initialPlacement","strategy","rest","exited","setExited","setPlacement","ownRef","popperRef","handleInnerRef","handlePopperUpdate","data","handleOpen","current","destroy","onFirstUpdate","handleClose","handleRef","node","handleEnter","handleExited","update","childProps","transitionProps","in","onEnter","onExited","displayName"],"sources":["../../../../src/components/Popper/Popper.tsx"],"sourcesContent":["import React, {\n forwardRef,\n useCallback,\n useRef,\n useEffect,\n useState,\n CSSProperties,\n HTMLAttributes,\n} from \"react\";\nimport {\n createPopper,\n Instance,\n PositioningStrategy,\n State,\n} from \"@popperjs/core\";\nimport { Placement } from \".\";\nimport useForkRef from \"../../utils/useForkRef\";\n\ninterface TransitionProps {\n in: boolean;\n onEnter: () => void;\n onExited: () => void;\n}\ninterface IChildProps {\n placement: Placement;\n transitionProps: Partial<TransitionProps>;\n}\n\ninterface PopperProps {\n /** Anchor Element. */\n anchorEl?: Element | null;\n /** Open */\n open?: boolean;\n /** Inline style */\n style?: CSSProperties;\n /** Child with transition */\n transition?: boolean;\n /** Placement */\n placement?: Placement;\n /** Strategy */\n strategy?: PositioningStrategy;\n}\n\nexport const Popper = forwardRef<\n HTMLDivElement,\n PopperProps & HTMLAttributes<HTMLDivElement>\n>(\n (\n {\n children,\n anchorEl,\n open = false,\n style,\n transition = false,\n placement: initialPlacement = \"bottom\",\n strategy = \"absolute\",\n ...rest\n },\n ref\n ) => {\n const [exited, setExited] = useState(true);\n const [placement, setPlacement] = useState(initialPlacement);\n const ownRef = useRef<HTMLDivElement | null>(null);\n const popperRef = useRef<Instance>();\n\n const handleInnerRef = useForkRef(ownRef, ref);\n\n const handlePopperUpdate = (data: Partial<State>): void => {\n setPlacement(data.placement || \"bottom\");\n };\n\n const handleOpen = useCallback(() => {\n if (!ownRef.current || !anchorEl || !open) {\n return;\n }\n\n if (popperRef.current) {\n popperRef.current.destroy();\n }\n\n popperRef.current = createPopper(anchorEl, ownRef.current, {\n placement,\n onFirstUpdate: handlePopperUpdate,\n strategy,\n });\n }, [anchorEl, open, placement, strategy]);\n\n const handleClose = (): void => {\n if (!popperRef.current) {\n return;\n }\n\n popperRef.current.destroy();\n };\n\n const handleRef = useCallback(\n (node: HTMLDivElement) => {\n handleInnerRef(node);\n handleOpen();\n },\n [handleOpen, handleInnerRef]\n );\n\n const handleEnter = (): void => {\n setExited(false);\n };\n\n const handleExited = (): void => {\n setExited(true);\n handleClose();\n };\n\n useEffect(() => {\n return (): void => {\n handleClose();\n };\n }, []);\n\n useEffect(() => {\n if (!open && !transition) {\n handleClose();\n }\n }, [open, transition]);\n\n useEffect(() => {\n if (popperRef.current) {\n popperRef.current.update();\n }\n });\n\n if (!open && (!transition || exited)) {\n return null;\n }\n\n const childProps: Partial<IChildProps> = { placement };\n\n if (transition) {\n childProps.transitionProps = {\n in: open,\n onEnter: handleEnter,\n onExited: handleExited,\n };\n }\n\n return (\n <div\n ref={handleRef}\n {...rest}\n style={{\n ...style,\n }}\n >\n {typeof children === \"function\" ? children(childProps) : children}\n </div>\n );\n }\n);\n\nPopper.displayName = \"Popper\";\n"],"mappings":";;;AAAA,OAAOA,KAAK,IACVC,UAAU,EACVC,WAAW,EACXC,MAAM,EACNC,SAAS,EACTC,QAAQ,QAGH,OAAO;AACd,SACEC,YAAY,QAIP,gBAAgB;AAEvB,OAAOC,UAAU,MAAM,wBAAwB;
|
|
1
|
+
{"version":3,"file":"Popper.js","names":["React","forwardRef","useCallback","useRef","useEffect","useState","createPopper","useForkRef","Popper","ref","children","anchorEl","open","style","transition","placement","initialPlacement","strategy","afterWrite","rest","exited","setExited","setPlacement","ownRef","popperRef","handleInnerRef","handlePopperUpdate","data","handleOpen","current","destroy","onFirstUpdate","modifiers","phase","enabled","name","fn","handleClose","handleRef","node","handleEnter","handleExited","update","childProps","transitionProps","in","onEnter","onExited","displayName"],"sources":["../../../../src/components/Popper/Popper.tsx"],"sourcesContent":["import React, {\n forwardRef,\n useCallback,\n useRef,\n useEffect,\n useState,\n CSSProperties,\n HTMLAttributes,\n} from \"react\";\nimport {\n createPopper,\n Instance,\n PositioningStrategy,\n State,\n} from \"@popperjs/core\";\nimport { Placement } from \".\";\nimport useForkRef from \"../../utils/useForkRef\";\n\ninterface TransitionProps {\n in: boolean;\n onEnter: () => void;\n onExited: () => void;\n}\ninterface IChildProps {\n placement: Placement;\n transitionProps: Partial<TransitionProps>;\n}\n\ninterface PopperProps {\n /** Anchor Element. */\n anchorEl?: Element | null;\n /** Open */\n open?: boolean;\n /** Inline style */\n style?: CSSProperties;\n /** Child with transition */\n transition?: boolean;\n /** Placement */\n placement?: Placement;\n /** Strategy */\n strategy?: PositioningStrategy;\n /** After Write callback */\n afterWrite?: (...args) => void;\n}\n\nexport const Popper = forwardRef<\n HTMLDivElement,\n PopperProps & HTMLAttributes<HTMLDivElement>\n>(\n (\n {\n children,\n anchorEl,\n open = false,\n style,\n transition = false,\n placement: initialPlacement = \"bottom\",\n strategy = \"absolute\",\n afterWrite,\n ...rest\n },\n ref\n ) => {\n const [exited, setExited] = useState(true);\n const [placement, setPlacement] = useState(initialPlacement);\n const ownRef = useRef<HTMLDivElement | null>(null);\n const popperRef = useRef<Instance>();\n\n const handleInnerRef = useForkRef(ownRef, ref);\n\n const handlePopperUpdate = (data: Partial<State>): void => {\n setPlacement(data.placement || \"bottom\");\n };\n\n const handleOpen = useCallback(() => {\n if (!ownRef.current || !anchorEl || !open) {\n return;\n }\n\n if (popperRef.current) {\n popperRef.current.destroy();\n }\n\n popperRef.current = createPopper(anchorEl, ownRef.current, {\n placement,\n onFirstUpdate: handlePopperUpdate,\n strategy,\n modifiers: [\n {\n phase: \"afterWrite\",\n enabled: typeof afterWrite === \"function\",\n name: \"popper-after-write\",\n fn: afterWrite,\n },\n ],\n });\n }, [afterWrite, anchorEl, open, placement, strategy]);\n\n const handleClose = (): void => {\n if (!popperRef.current) {\n return;\n }\n\n popperRef.current.destroy();\n };\n\n const handleRef = useCallback(\n (node: HTMLDivElement) => {\n handleInnerRef(node);\n handleOpen();\n },\n [handleOpen, handleInnerRef]\n );\n\n const handleEnter = (): void => {\n setExited(false);\n };\n\n const handleExited = (): void => {\n setExited(true);\n handleClose();\n };\n\n useEffect(() => {\n return (): void => {\n handleClose();\n };\n }, []);\n\n useEffect(() => {\n if (!open && !transition) {\n handleClose();\n }\n }, [open, transition]);\n\n useEffect(() => {\n if (popperRef.current) {\n popperRef.current.update();\n }\n });\n\n if (!open && (!transition || exited)) {\n return null;\n }\n\n const childProps: Partial<IChildProps> = { placement };\n\n if (transition) {\n childProps.transitionProps = {\n in: open,\n onEnter: handleEnter,\n onExited: handleExited,\n };\n }\n\n return (\n <div\n ref={handleRef}\n {...rest}\n style={{\n ...style,\n }}\n >\n {typeof children === \"function\" ? children(childProps) : children}\n </div>\n );\n }\n);\n\nPopper.displayName = \"Popper\";\n"],"mappings":";;;AAAA,OAAOA,KAAK,IACVC,UAAU,EACVC,WAAW,EACXC,MAAM,EACNC,SAAS,EACTC,QAAQ,QAGH,OAAO;AACd,SACEC,YAAY,QAIP,gBAAgB;AAEvB,OAAOC,UAAU,MAAM,wBAAwB;AA6B/C,OAAO,IAAMC,MAAM,gBAAGP,UAAU,CAI9B,gBAYEQ,GAAG,EACA;EAAA,IAXDC,QAAQ,QAARA,QAAQ;IACRC,QAAQ,QAARA,QAAQ;IAAA,iBACRC,IAAI;IAAJA,IAAI,0BAAG,KAAK;IACZC,KAAK,QAALA,KAAK;IAAA,uBACLC,UAAU;IAAVA,UAAU,gCAAG,KAAK;IAAA,sBAClBC,SAAS;IAAEC,gBAAgB,+BAAG,QAAQ;IAAA,qBACtCC,QAAQ;IAARA,QAAQ,8BAAG,UAAU;IACrBC,UAAU,QAAVA,UAAU;IACPC,IAAI;EAIT,gBAA4Bd,QAAQ,CAAC,IAAI,CAAC;IAAnCe,MAAM;IAAEC,SAAS;EACxB,iBAAkChB,QAAQ,CAACW,gBAAgB,CAAC;IAArDD,SAAS;IAAEO,YAAY;EAC9B,IAAMC,MAAM,GAAGpB,MAAM,CAAwB,IAAI,CAAC;EAClD,IAAMqB,SAAS,GAAGrB,MAAM,EAAY;EAEpC,IAAMsB,cAAc,GAAGlB,UAAU,CAACgB,MAAM,EAAEd,GAAG,CAAC;EAE9C,IAAMiB,kBAAkB,GAAG,SAArBA,kBAAkB,CAAIC,IAAoB,EAAW;IACzDL,YAAY,CAACK,IAAI,CAACZ,SAAS,IAAI,QAAQ,CAAC;EAC1C,CAAC;EAED,IAAMa,UAAU,GAAG1B,WAAW,CAAC,YAAM;IACnC,IAAI,CAACqB,MAAM,CAACM,OAAO,IAAI,CAAClB,QAAQ,IAAI,CAACC,IAAI,EAAE;MACzC;IACF;IAEA,IAAIY,SAAS,CAACK,OAAO,EAAE;MACrBL,SAAS,CAACK,OAAO,CAACC,OAAO,EAAE;IAC7B;IAEAN,SAAS,CAACK,OAAO,GAAGvB,YAAY,CAACK,QAAQ,EAAEY,MAAM,CAACM,OAAO,EAAE;MACzDd,SAAS,EAATA,SAAS;MACTgB,aAAa,EAAEL,kBAAkB;MACjCT,QAAQ,EAARA,QAAQ;MACRe,SAAS,EAAE,CACT;QACEC,KAAK,EAAE,YAAY;QACnBC,OAAO,EAAE,OAAOhB,UAAU,KAAK,UAAU;QACzCiB,IAAI,EAAE,oBAAoB;QAC1BC,EAAE,EAAElB;MACN,CAAC;IAEL,CAAC,CAAC;EACJ,CAAC,EAAE,CAACA,UAAU,EAAEP,QAAQ,EAAEC,IAAI,EAAEG,SAAS,EAAEE,QAAQ,CAAC,CAAC;EAErD,IAAMoB,WAAW,GAAG,SAAdA,WAAW,GAAe;IAC9B,IAAI,CAACb,SAAS,CAACK,OAAO,EAAE;MACtB;IACF;IAEAL,SAAS,CAACK,OAAO,CAACC,OAAO,EAAE;EAC7B,CAAC;EAED,IAAMQ,SAAS,GAAGpC,WAAW,CAC3B,UAACqC,IAAoB,EAAK;IACxBd,cAAc,CAACc,IAAI,CAAC;IACpBX,UAAU,EAAE;EACd,CAAC,EACD,CAACA,UAAU,EAAEH,cAAc,CAAC,CAC7B;EAED,IAAMe,WAAW,GAAG,SAAdA,WAAW,GAAe;IAC9BnB,SAAS,CAAC,KAAK,CAAC;EAClB,CAAC;EAED,IAAMoB,YAAY,GAAG,SAAfA,YAAY,GAAe;IAC/BpB,SAAS,CAAC,IAAI,CAAC;IACfgB,WAAW,EAAE;EACf,CAAC;EAEDjC,SAAS,CAAC,YAAM;IACd,OAAO,YAAY;MACjBiC,WAAW,EAAE;IACf,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;EAENjC,SAAS,CAAC,YAAM;IACd,IAAI,CAACQ,IAAI,IAAI,CAACE,UAAU,EAAE;MACxBuB,WAAW,EAAE;IACf;EACF,CAAC,EAAE,CAACzB,IAAI,EAAEE,UAAU,CAAC,CAAC;EAEtBV,SAAS,CAAC,YAAM;IACd,IAAIoB,SAAS,CAACK,OAAO,EAAE;MACrBL,SAAS,CAACK,OAAO,CAACa,MAAM,EAAE;IAC5B;EACF,CAAC,CAAC;EAEF,IAAI,CAAC9B,IAAI,KAAK,CAACE,UAAU,IAAIM,MAAM,CAAC,EAAE;IACpC,OAAO,IAAI;EACb;EAEA,IAAMuB,UAAgC,GAAG;IAAE5B,SAAS,EAATA;EAAU,CAAC;EAEtD,IAAID,UAAU,EAAE;IACd6B,UAAU,CAACC,eAAe,GAAG;MAC3BC,EAAE,EAAEjC,IAAI;MACRkC,OAAO,EAAEN,WAAW;MACpBO,QAAQ,EAAEN;IACZ,CAAC;EACH;EAEA,oBACE;IACE,GAAG,EAAEH;EAAU,GACXnB,IAAI;IACR,KAAK,eACAN,KAAK;EACR,IAED,OAAOH,QAAQ,KAAK,UAAU,GAAGA,QAAQ,CAACiC,UAAU,CAAC,GAAGjC,QAAQ,CAC7D;AAEV,CAAC,CACF;AAEDF,MAAM,CAACwC,WAAW,GAAG,QAAQ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Select.d.ts","sourceRoot":"","sources":["../../../../src/components/Select/Select.tsx"],"names":[],"mappings":"AAAA,OAAc,EACZ,EAAE,EAGF,YAAY,EAIZ,GAAG,EACJ,MAAM,OAAO,CAAC;AAOf,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAUlE,UAAU,cAAc,CAAC,CAAC,CAAE,SAAQ,YAAY;IAC9C,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;CACd;AAED,MAAM,WAAW,YACf,SAAQ,IAAI,CACV,kBAAkB,EAClB,cAAc,GAAG,SAAS,GAAG,mBAAmB,GAAG,oBAAoB,CACxE;IACD,sBAAsB;IACtB,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;IACnC,gCAAgC;IAChC,MAAM,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;IACjC,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,wBAAwB;IACxB,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,MAAM,GAAG,MAAM,KAAK,IAAI,CAAC;IAC9D,gCAAgC;IAChC,UAAU,CAAC,EAAE,YAAY,CAAC;IAC1B,gCAAgC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mCAAmC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mDAAmD;IACnD,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;IAC9C,gCAAgC;IAChC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,2BAA2B;IAC3B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,4BAA4B;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,qDAAqD;IACrD,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,qDAAqD;IACrD,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;CAC5B;AAED,eAAO,MAAM,MAAM,EAAE,EAAE,CAAC,YAAY,
|
|
1
|
+
{"version":3,"file":"Select.d.ts","sourceRoot":"","sources":["../../../../src/components/Select/Select.tsx"],"names":[],"mappings":"AAAA,OAAc,EACZ,EAAE,EAGF,YAAY,EAIZ,GAAG,EACJ,MAAM,OAAO,CAAC;AAOf,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAUlE,UAAU,cAAc,CAAC,CAAC,CAAE,SAAQ,YAAY;IAC9C,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;CACd;AAED,MAAM,WAAW,YACf,SAAQ,IAAI,CACV,kBAAkB,EAClB,cAAc,GAAG,SAAS,GAAG,mBAAmB,GAAG,oBAAoB,CACxE;IACD,sBAAsB;IACtB,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;IACnC,gCAAgC;IAChC,MAAM,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;IACjC,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,wBAAwB;IACxB,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,MAAM,GAAG,MAAM,KAAK,IAAI,CAAC;IAC9D,gCAAgC;IAChC,UAAU,CAAC,EAAE,YAAY,CAAC;IAC1B,gCAAgC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mCAAmC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mDAAmD;IACnD,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;IAC9C,gCAAgC;IAChC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,2BAA2B;IAC3B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,4BAA4B;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,qDAAqD;IACrD,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,qDAAqD;IACrD,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;CAC5B;AAED,eAAO,MAAM,MAAM,EAAE,EAAE,CAAC,YAAY,CAkOnC,CAAC"}
|
|
@@ -110,7 +110,11 @@ export var Select = function Select(_ref) {
|
|
|
110
110
|
target: target,
|
|
111
111
|
mode: mode,
|
|
112
112
|
open: open,
|
|
113
|
-
position: position
|
|
113
|
+
position: position,
|
|
114
|
+
onPopperOpen: function onPopperOpen() {
|
|
115
|
+
var _elementRef$current;
|
|
116
|
+
return elementRef == null ? void 0 : (_elementRef$current = elementRef.current) == null ? void 0 : _elementRef$current.focus();
|
|
117
|
+
}
|
|
114
118
|
};
|
|
115
119
|
}
|
|
116
120
|
return {
|
|
@@ -171,7 +175,6 @@ export var Select = function Select(_ref) {
|
|
|
171
175
|
ref: formRef
|
|
172
176
|
}, /*#__PURE__*/React.createElement(StyledSelectInput, {
|
|
173
177
|
ref: handleRef,
|
|
174
|
-
autoFocus: true,
|
|
175
178
|
placeholder: placeholder
|
|
176
179
|
}), actionIcon && actionLabel && /*#__PURE__*/React.createElement(Tooltip, {
|
|
177
180
|
popperTooltipStyle: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Select.js","names":["React","useCallback","useState","useMemo","useEffect","useRef","Autocomplete","isOptionGroup","Tooltip","Menu","classNames","useForkRef","StyledSelectForm","StyledSelectInput","StyledCheckbox","StyledRadioButton","OptionContent","Select","type","mode","target","options","selected","position","onChange","actionIcon","actionLabel","placeholder","emptyAction","disableSearch","forceCloseMenu","selectClassName","keepSameOptionsOrder","onSelectOpen","onSelectClose","renderOption","handleDefaultOptionChange","preselectDefaultValue","prop","childNode","elementRef","handleRef","Tag","formRef","open","setOpen","selectedOptions","Array","selectOptions","allOptionValues","reduce","acc","option","id","allGroupOptions","map","isAllOptionsChecked","every","includes","current","focus","handleChange","selectedValue","onClose","onOpen","props","menuClassName","className","handleEmptyAction","value","reset","handleDefaultOptionChangeCallback","length","handleRenderOption","image","color","textColor","name","additionalInfo","zIndex","displayName"],"sources":["../../../../src/components/Select/Select.tsx"],"sourcesContent":["import React, {\n FC,\n useCallback,\n useState,\n ReactElement,\n useMemo,\n useEffect,\n useRef,\n Ref,\n} from \"react\";\nimport { Autocomplete, isOptionGroup } from \"../Autocomplete\";\nimport { Tooltip } from \"../Tooltip\";\nimport { Menu } from \"../Menu/Menu\";\nimport { IOptionItemProps } from \"../Select/Option\";\nimport { IOptionGroupProps } from \"../Select/OptionGroup\";\nimport classNames from \"classnames\";\nimport { Placement } from \"@popperjs/core\";\nimport { IAutocompleteProps } from \"../Autocomplete/Autocomplete\";\nimport useForkRef from \"../../utils/useForkRef\";\nimport {\n StyledSelectForm,\n StyledSelectInput,\n StyledCheckbox,\n StyledRadioButton,\n} from \"./Styles\";\nimport { OptionContent } from \"./OptionContent/OptionContent\";\n\ninterface ElementWithRef<T> extends ReactElement {\n ref?: Ref<T>;\n}\n\nexport interface ISelectProps\n extends Omit<\n IAutocompleteProps,\n \"handleChange\" | \"inputEl\" | \"handleEmptyAction\" | \"clearInputOnSelect\"\n > {\n /** Menu width mode */\n mode?: \"normal\" | \"wider\" | \"tiny\";\n /** Set select target element */\n target?: ElementWithRef<Element>;\n /** Set Select position */\n position?: Placement;\n /** onChange callback */\n onChange?: (e: (string | number)[] | string | number) => void;\n /** Set action icon in select */\n actionIcon?: ReactElement;\n /** Set label for action icon */\n actionLabel?: string;\n /** Placeholder for Select input */\n placeholder?: string;\n /** Function that triggers when empty is clicked */\n emptyAction?: (e: string | undefined) => void;\n /** Removes input from Select */\n disableSearch?: boolean;\n /** Close menu on select */\n forceCloseMenu?: boolean;\n /** Set select classNames */\n selectClassName?: string;\n /** Callback called when the Select menu is opened */\n onSelectOpen?: () => void;\n /** Callback called when the Select menu is closed */\n onSelectClose?: () => void;\n}\n\nexport const Select: FC<ISelectProps> = ({\n type = \"single\",\n mode,\n target,\n options,\n selected = [],\n position = \"bottom-start\",\n onChange = () => null,\n actionIcon,\n actionLabel,\n placeholder,\n emptyAction = (): null => null,\n disableSearch = false,\n forceCloseMenu,\n selectClassName,\n keepSameOptionsOrder = false,\n onSelectOpen,\n onSelectClose,\n renderOption,\n handleDefaultOptionChange,\n preselectDefaultValue = type === \"single\",\n ...prop\n}) => {\n const childNode = useRef<HTMLInputElement | null>();\n const elementRef = useRef<HTMLInputElement | null>(null);\n\n const handleRef = useForkRef(childNode, elementRef);\n\n const Tag = !target ? \"div\" : Menu;\n const formRef = useRef<HTMLFormElement | null>(null);\n\n const [open, setOpen] = useState(false);\n\n const selectedOptions = useMemo(\n () => (selected instanceof Array ? selected : [selected]),\n [selected]\n );\n\n const selectOptions = useMemo(() => {\n if (!options) {\n return [];\n }\n return options;\n }, [options]);\n\n const allOptionValues = useMemo(() => {\n return selectOptions.reduce(\n (\n acc: (string | number)[],\n option: IOptionGroupProps | IOptionItemProps\n ) => {\n if (!isOptionGroup(option)) {\n return [...acc, option.id];\n }\n const allGroupOptions = option.options.map((option) => option.id);\n return [...acc, ...allGroupOptions];\n },\n []\n );\n }, [selectOptions]);\n\n const isAllOptionsChecked = useMemo(\n () => allOptionValues.every((option) => selectedOptions.includes(option)),\n [allOptionValues, selectedOptions]\n );\n\n useEffect(() => {\n open && childNode?.current?.focus();\n }, [childNode, open]);\n\n const handleChange = useCallback(\n (selectedValue) => {\n if (forceCloseMenu) {\n if (typeof onSelectClose === \"function\") onSelectClose();\n setOpen(false);\n }\n if (selectedValue !== selected) {\n onChange(selectedValue);\n }\n },\n [forceCloseMenu, selected, onSelectClose, onChange]\n );\n\n const onClose = useCallback(() => {\n setOpen(false);\n if (onSelectClose) {\n onSelectClose();\n }\n }, [onSelectClose]);\n\n const onOpen = useCallback(() => {\n setOpen(true);\n if (onSelectOpen) {\n onSelectOpen();\n }\n }, [onSelectOpen]);\n\n const props = useMemo(() => {\n if (target) {\n return {\n menuClassName: classNames(\"c-select\", selectClassName),\n onClose,\n onOpen,\n target,\n mode,\n open,\n position,\n };\n }\n return { className: classNames(\"c-select\", selectClassName) };\n }, [target, selectClassName, onClose, onOpen, mode, open, position]);\n\n const handleEmptyAction = useCallback(\n (value) => {\n emptyAction(value);\n if (forceCloseMenu) {\n setOpen(false);\n }\n formRef.current?.reset();\n },\n [emptyAction, forceCloseMenu]\n );\n\n const handleDefaultOptionChangeCallback = useCallback(() => {\n if (type === \"multiple\") {\n if (selectedOptions.length === allOptionValues.length) {\n if (typeof handleDefaultOptionChange === \"function\") {\n handleDefaultOptionChange();\n } else {\n onChange([]);\n }\n } else {\n if (typeof handleDefaultOptionChange === \"function\") {\n handleDefaultOptionChange();\n } else {\n onChange(allOptionValues);\n }\n }\n } else {\n if (typeof handleDefaultOptionChange === \"function\") {\n handleDefaultOptionChange();\n } else {\n onChange(\"\");\n }\n }\n if (forceCloseMenu) {\n setOpen(false);\n }\n }, [\n onChange,\n type,\n forceCloseMenu,\n selectedOptions.length,\n allOptionValues,\n handleDefaultOptionChange,\n ]);\n\n const handleRenderOption = useCallback(\n (option, props) => {\n if (typeof renderOption === \"function\") {\n return renderOption(option, props);\n }\n return (\n <>\n <OptionContent\n imageUrl={option.image}\n color={option.color}\n textColor={option.textColor}\n name={option.name}\n additionalInfo={option.additionalInfo}\n />\n {option.id === null ? (\n type === \"multiple\" ? (\n <StyledCheckbox checked={isAllOptionsChecked} {...props} />\n ) : (\n <StyledRadioButton\n checked={selectedOptions.length < 1 || !selectedOptions[0]}\n {...props}\n />\n )\n ) : type === \"multiple\" ? (\n <StyledCheckbox {...props} />\n ) : (\n <StyledRadioButton {...props} />\n )}\n </>\n );\n },\n [isAllOptionsChecked, renderOption, selectedOptions, type]\n );\n\n return (\n <Tag {...props}>\n <div>\n {!disableSearch ? (\n <StyledSelectForm ref={formRef}>\n <StyledSelectInput\n ref={handleRef}\n autoFocus\n placeholder={placeholder}\n />\n {actionIcon && actionLabel && (\n <Tooltip\n popperTooltipStyle={{ zIndex: 1301 }}\n title={actionLabel}\n >\n <div>{actionIcon}</div>\n </Tooltip>\n )}\n {actionIcon && !actionLabel && actionIcon}\n </StyledSelectForm>\n ) : null}\n <Autocomplete\n {...prop}\n clearInputOnSelect\n inputEl={childNode}\n handleEmptyAction={handleEmptyAction}\n selected={selected}\n handleChange={handleChange}\n renderOption={handleRenderOption}\n options={options}\n handleDefaultOptionChange={handleDefaultOptionChangeCallback}\n type={type}\n preselectDefaultValue={preselectDefaultValue}\n keepSameOptionsOrder={keepSameOptionsOrder}\n />\n </div>\n </Tag>\n );\n};\n\nSelect.displayName = \"Select\";\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Select.js","names":["React","useCallback","useState","useMemo","useEffect","useRef","Autocomplete","isOptionGroup","Tooltip","Menu","classNames","useForkRef","StyledSelectForm","StyledSelectInput","StyledCheckbox","StyledRadioButton","OptionContent","Select","type","mode","target","options","selected","position","onChange","actionIcon","actionLabel","placeholder","emptyAction","disableSearch","forceCloseMenu","selectClassName","keepSameOptionsOrder","onSelectOpen","onSelectClose","renderOption","handleDefaultOptionChange","preselectDefaultValue","prop","childNode","elementRef","handleRef","Tag","formRef","open","setOpen","selectedOptions","Array","selectOptions","allOptionValues","reduce","acc","option","id","allGroupOptions","map","isAllOptionsChecked","every","includes","current","focus","handleChange","selectedValue","onClose","onOpen","props","menuClassName","onPopperOpen","className","handleEmptyAction","value","reset","handleDefaultOptionChangeCallback","length","handleRenderOption","image","color","textColor","name","additionalInfo","zIndex","displayName"],"sources":["../../../../src/components/Select/Select.tsx"],"sourcesContent":["import React, {\n FC,\n useCallback,\n useState,\n ReactElement,\n useMemo,\n useEffect,\n useRef,\n Ref,\n} from \"react\";\nimport { Autocomplete, isOptionGroup } from \"../Autocomplete\";\nimport { Tooltip } from \"../Tooltip\";\nimport { Menu } from \"../Menu/Menu\";\nimport { IOptionItemProps } from \"../Select/Option\";\nimport { IOptionGroupProps } from \"../Select/OptionGroup\";\nimport classNames from \"classnames\";\nimport { Placement } from \"@popperjs/core\";\nimport { IAutocompleteProps } from \"../Autocomplete/Autocomplete\";\nimport useForkRef from \"../../utils/useForkRef\";\nimport {\n StyledSelectForm,\n StyledSelectInput,\n StyledCheckbox,\n StyledRadioButton,\n} from \"./Styles\";\nimport { OptionContent } from \"./OptionContent/OptionContent\";\n\ninterface ElementWithRef<T> extends ReactElement {\n ref?: Ref<T>;\n}\n\nexport interface ISelectProps\n extends Omit<\n IAutocompleteProps,\n \"handleChange\" | \"inputEl\" | \"handleEmptyAction\" | \"clearInputOnSelect\"\n > {\n /** Menu width mode */\n mode?: \"normal\" | \"wider\" | \"tiny\";\n /** Set select target element */\n target?: ElementWithRef<Element>;\n /** Set Select position */\n position?: Placement;\n /** onChange callback */\n onChange?: (e: (string | number)[] | string | number) => void;\n /** Set action icon in select */\n actionIcon?: ReactElement;\n /** Set label for action icon */\n actionLabel?: string;\n /** Placeholder for Select input */\n placeholder?: string;\n /** Function that triggers when empty is clicked */\n emptyAction?: (e: string | undefined) => void;\n /** Removes input from Select */\n disableSearch?: boolean;\n /** Close menu on select */\n forceCloseMenu?: boolean;\n /** Set select classNames */\n selectClassName?: string;\n /** Callback called when the Select menu is opened */\n onSelectOpen?: () => void;\n /** Callback called when the Select menu is closed */\n onSelectClose?: () => void;\n}\n\nexport const Select: FC<ISelectProps> = ({\n type = \"single\",\n mode,\n target,\n options,\n selected = [],\n position = \"bottom-start\",\n onChange = () => null,\n actionIcon,\n actionLabel,\n placeholder,\n emptyAction = (): null => null,\n disableSearch = false,\n forceCloseMenu,\n selectClassName,\n keepSameOptionsOrder = false,\n onSelectOpen,\n onSelectClose,\n renderOption,\n handleDefaultOptionChange,\n preselectDefaultValue = type === \"single\",\n ...prop\n}) => {\n const childNode = useRef<HTMLInputElement | null>();\n const elementRef = useRef<HTMLInputElement | null>(null);\n\n const handleRef = useForkRef(childNode, elementRef);\n\n const Tag = !target ? \"div\" : Menu;\n const formRef = useRef<HTMLFormElement | null>(null);\n\n const [open, setOpen] = useState(false);\n\n const selectedOptions = useMemo(\n () => (selected instanceof Array ? selected : [selected]),\n [selected]\n );\n\n const selectOptions = useMemo(() => {\n if (!options) {\n return [];\n }\n return options;\n }, [options]);\n\n const allOptionValues = useMemo(() => {\n return selectOptions.reduce(\n (\n acc: (string | number)[],\n option: IOptionGroupProps | IOptionItemProps\n ) => {\n if (!isOptionGroup(option)) {\n return [...acc, option.id];\n }\n const allGroupOptions = option.options.map((option) => option.id);\n return [...acc, ...allGroupOptions];\n },\n []\n );\n }, [selectOptions]);\n\n const isAllOptionsChecked = useMemo(\n () => allOptionValues.every((option) => selectedOptions.includes(option)),\n [allOptionValues, selectedOptions]\n );\n\n useEffect(() => {\n open && childNode?.current?.focus();\n }, [childNode, open]);\n\n const handleChange = useCallback(\n (selectedValue) => {\n if (forceCloseMenu) {\n if (typeof onSelectClose === \"function\") onSelectClose();\n setOpen(false);\n }\n if (selectedValue !== selected) {\n onChange(selectedValue);\n }\n },\n [forceCloseMenu, selected, onSelectClose, onChange]\n );\n\n const onClose = useCallback(() => {\n setOpen(false);\n if (onSelectClose) {\n onSelectClose();\n }\n }, [onSelectClose]);\n\n const onOpen = useCallback(() => {\n setOpen(true);\n if (onSelectOpen) {\n onSelectOpen();\n }\n }, [onSelectOpen]);\n\n const props = useMemo(() => {\n if (target) {\n return {\n menuClassName: classNames(\"c-select\", selectClassName),\n onClose,\n onOpen,\n target,\n mode,\n open,\n position,\n onPopperOpen: () => elementRef?.current?.focus(),\n };\n }\n return { className: classNames(\"c-select\", selectClassName) };\n }, [target, selectClassName, onClose, onOpen, mode, open, position]);\n\n const handleEmptyAction = useCallback(\n (value) => {\n emptyAction(value);\n if (forceCloseMenu) {\n setOpen(false);\n }\n formRef.current?.reset();\n },\n [emptyAction, forceCloseMenu]\n );\n\n const handleDefaultOptionChangeCallback = useCallback(() => {\n if (type === \"multiple\") {\n if (selectedOptions.length === allOptionValues.length) {\n if (typeof handleDefaultOptionChange === \"function\") {\n handleDefaultOptionChange();\n } else {\n onChange([]);\n }\n } else {\n if (typeof handleDefaultOptionChange === \"function\") {\n handleDefaultOptionChange();\n } else {\n onChange(allOptionValues);\n }\n }\n } else {\n if (typeof handleDefaultOptionChange === \"function\") {\n handleDefaultOptionChange();\n } else {\n onChange(\"\");\n }\n }\n if (forceCloseMenu) {\n setOpen(false);\n }\n }, [\n onChange,\n type,\n forceCloseMenu,\n selectedOptions.length,\n allOptionValues,\n handleDefaultOptionChange,\n ]);\n\n const handleRenderOption = useCallback(\n (option, props) => {\n if (typeof renderOption === \"function\") {\n return renderOption(option, props);\n }\n return (\n <>\n <OptionContent\n imageUrl={option.image}\n color={option.color}\n textColor={option.textColor}\n name={option.name}\n additionalInfo={option.additionalInfo}\n />\n {option.id === null ? (\n type === \"multiple\" ? (\n <StyledCheckbox checked={isAllOptionsChecked} {...props} />\n ) : (\n <StyledRadioButton\n checked={selectedOptions.length < 1 || !selectedOptions[0]}\n {...props}\n />\n )\n ) : type === \"multiple\" ? (\n <StyledCheckbox {...props} />\n ) : (\n <StyledRadioButton {...props} />\n )}\n </>\n );\n },\n [isAllOptionsChecked, renderOption, selectedOptions, type]\n );\n\n return (\n <Tag {...props}>\n <div>\n {!disableSearch ? (\n <StyledSelectForm ref={formRef}>\n <StyledSelectInput ref={handleRef} placeholder={placeholder} />\n {actionIcon && actionLabel && (\n <Tooltip\n popperTooltipStyle={{ zIndex: 1301 }}\n title={actionLabel}\n >\n <div>{actionIcon}</div>\n </Tooltip>\n )}\n {actionIcon && !actionLabel && actionIcon}\n </StyledSelectForm>\n ) : null}\n <Autocomplete\n {...prop}\n clearInputOnSelect\n inputEl={childNode}\n handleEmptyAction={handleEmptyAction}\n selected={selected}\n handleChange={handleChange}\n renderOption={handleRenderOption}\n options={options}\n handleDefaultOptionChange={handleDefaultOptionChangeCallback}\n type={type}\n preselectDefaultValue={preselectDefaultValue}\n keepSameOptionsOrder={keepSameOptionsOrder}\n />\n </div>\n </Tag>\n );\n};\n\nSelect.displayName = \"Select\";\n"],"mappings":"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"}
|