@activecollab/components 1.0.149 → 1.0.150

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.
@@ -84,10 +84,18 @@ var Menu = function Menu(_ref) {
84
84
  var handleRefRef = (0, _useForkRef.default)(target ? target.ref : undefined, setChildNode);
85
85
  var handleRef = (0, _useForkRef.default)(handleRefRef, elementRef);
86
86
  var handleOpen = (0, _react.useCallback)(function (event) {
87
+ var _target$props;
88
+
87
89
  event && event.preventDefault();
90
+
91
+ if (preventClickEventBubbling) {
92
+ event === null || event === void 0 ? void 0 : event.stopPropagation();
93
+ }
94
+
88
95
  setOpen(true);
89
96
  typeof onOpen === "function" && onOpen();
90
- }, [onOpen]);
97
+ typeof (target === null || target === void 0 ? void 0 : (_target$props = target.props) === null || _target$props === void 0 ? void 0 : _target$props.onClick) === "function" && target.props.onClick(event);
98
+ }, [onOpen, preventClickEventBubbling, target === null || target === void 0 ? void 0 : target.props]);
91
99
  var handleClose = (0, _react.useCallback)(function () {
92
100
  if (typeof onBeforeClose === "function" && !onBeforeClose()) {
93
101
  return;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/Menu/Menu.tsx"],"names":["Menu","children","disableFocusLock","onMenuClick","handleScroll","mode","open","defaultOpen","onOpen","onClose","onBeforeClose","position","target","className","menuClassName","popperClassName","backgroundElementClass","windowAbsolutelyPositioned","preventClickEventBubbling","setOpen","childNode","setChildNode","elementRef","handleRefRef","ref","undefined","handleRef","handleOpen","event","preventDefault","handleClose","childProps","forceClose","targetProps","onClick","React","cloneElement","displayName"],"mappings":"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","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 /** Prevents click event from bubbling to parent elements */\n preventClickEventBubbling?: 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 preventClickEventBubbling = false,\n}) => {\n const [open, setOpen] = useState(defaultOpen);\n const [childNode, setChildNode] = useState<Element | null>();\n const elementRef = useRef<Element | null>(null);\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 (event: Pick<MouseEvent<Element>, \"preventDefault\">) => {\n event && event.preventDefault();\n setOpen(true);\n typeof onOpen === \"function\" && onOpen();\n },\n [onOpen]\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 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 preventClickEventBubbling={preventClickEventBubbling}\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"],"file":"Menu.js"}
1
+ {"version":3,"sources":["../../../../src/components/Menu/Menu.tsx"],"names":["Menu","children","disableFocusLock","onMenuClick","handleScroll","mode","open","defaultOpen","onOpen","onClose","onBeforeClose","position","target","className","menuClassName","popperClassName","backgroundElementClass","windowAbsolutelyPositioned","preventClickEventBubbling","setOpen","childNode","setChildNode","elementRef","handleRefRef","ref","undefined","handleRef","handleOpen","event","preventDefault","stopPropagation","props","onClick","handleClose","childProps","forceClose","targetProps","React","cloneElement","displayName"],"mappings":";;;;;;;;;AAAA;;AAWA;;AACA;;AACA;;AACA;;AACA;;AAEA;;AACA;;;;;;;;;;;;;;;;;;;;AA4CO,IAAMA,IAAe,GAAG,SAAlBA,IAAkB,OAkBzB;AAAA,MAjBJC,QAiBI,QAjBJA,QAiBI;AAAA,mCAhBJC,gBAgBI;AAAA,MAhBJA,gBAgBI,sCAhBe,KAgBf;AAAA,MAfJC,WAeI,QAfJA,WAeI;AAAA,+BAdJC,YAcI;AAAA,MAdJA,YAcI,kCAdW,IAcX;AAAA,uBAbJC,IAaI;AAAA,MAbJA,IAaI,0BAbG,QAaH;AAAA,uBAZJC,IAYI;AAAA,MAZEC,WAYF,0BAZgB,KAYhB;AAAA,MAXJC,MAWI,QAXJA,MAWI;AAAA,MAVJC,OAUI,QAVJA,OAUI;AAAA,MATJC,aASI,QATJA,aASI;AAAA,2BARJC,QAQI;AAAA,MARJA,QAQI,8BARO,cAQP;AAAA,MAPJC,MAOI,QAPJA,MAOI;AAAA,MANJC,SAMI,QANJA,SAMI;AAAA,MALJC,aAKI,QALJA,aAKI;AAAA,MAJJC,eAII,QAJJA,eAII;AAAA,MAHJC,sBAGI,QAHJA,sBAGI;AAAA,mCAFJC,0BAEI;AAAA,MAFJA,0BAEI,sCAFyB,KAEzB;AAAA,mCADJC,yBACI;AAAA,MADJA,yBACI,sCADwB,KACxB;;AACJ,kBAAwB,qBAASX,WAAT,CAAxB;AAAA;AAAA,MAAOD,IAAP;AAAA,MAAaa,OAAb;;AACA,mBAAkC,sBAAlC;AAAA;AAAA,MAAOC,SAAP;AAAA,MAAkBC,YAAlB;;AACA,MAAMC,UAAU,GAAG,mBAAuB,IAAvB,CAAnB;AAEA,wBAAU,YAAM;AACdH,IAAAA,OAAO,CAACZ,WAAD,CAAP;AACD,GAFD,EAEG,CAACA,WAAD,CAFH;AAIA,MAAMgB,YAAY,GAAG,yBACnBX,MAAM,GAAGA,MAAM,CAACY,GAAV,GAAgBC,SADH,EAEnBJ,YAFmB,CAArB;AAIA,MAAMK,SAAS,GAAG,yBAAWH,YAAX,EAAyBD,UAAzB,CAAlB;AAEA,MAAMK,UAAU,GAAG,wBACjB,UACEC,KADF,EAEK;AAAA;;AACHA,IAAAA,KAAK,IAAIA,KAAK,CAACC,cAAN,EAAT;;AACA,QAAIX,yBAAJ,EAA+B;AAC7BU,MAAAA,KAAK,SAAL,IAAAA,KAAK,WAAL,YAAAA,KAAK,CAAEE,eAAP;AACD;;AACDX,IAAAA,OAAO,CAAC,IAAD,CAAP;AACA,WAAOX,MAAP,KAAkB,UAAlB,IAAgCA,MAAM,EAAtC;AACA,YAAOI,MAAP,aAAOA,MAAP,wCAAOA,MAAM,CAAEmB,KAAf,kDAAO,cAAeC,OAAtB,MAAkC,UAAlC,IACEpB,MAAM,CAACmB,KAAP,CAAaC,OAAb,CAAqBJ,KAArB,CADF;AAED,GAZgB,EAajB,CAACpB,MAAD,EAASU,yBAAT,EAAoCN,MAApC,aAAoCA,MAApC,uBAAoCA,MAAM,CAAEmB,KAA5C,CAbiB,CAAnB;AAgBA,MAAME,WAAW,GAAG,wBAAY,YAAM;AACpC,QAAI,OAAOvB,aAAP,KAAyB,UAAzB,IAAuC,CAACA,aAAa,EAAzD,EAA6D;AAC3D;AACD;;AACDS,IAAAA,OAAO,CAAC,KAAD,CAAP;AACA,WAAOV,OAAP,KAAmB,UAAnB,IAAiCA,OAAO,EAAxC;AACD,GANmB,EAMjB,CAACA,OAAD,EAAUC,aAAV,CANiB,CAApB;AAQA,MAAMwB,UAAU,GAAG;AACjBC,IAAAA,UAAU,EAAEF;AADK,GAAnB;AAIA,MAAMG,WAAW,GAAG;AAClB9B,IAAAA,IAAI,EAAJA,IADkB;AAElBkB,IAAAA,GAAG,EAAEE,SAFa;AAGlBM,IAAAA,OAAO,EAAEL;AAHS,GAApB;AAMA,sBACE,4DACGf,MAAM,iBAAIyB,eAAMC,YAAN,CAAmB1B,MAAnB,EAA2BwB,WAA3B,CADb,EAEG9B,IAAI,gBACH,6BAAC,cAAD;AACE,IAAA,OAAO,EAAE2B,WADX;AAEE,IAAA,iBAAiB,EAAE,CAAC7B,YAFtB;AAGE,IAAA,gBAAgB,EAAEF,gBAHpB;AAIE,IAAA,KAAK,EAAE;AACLS,MAAAA,QAAQ,EAAEM,0BAA0B,GAAG,UAAH,GAAgB;AAD/C,KAJT;AAOE,IAAA,yBAAyB,EAAEC;AAP7B,kBASE,6BAAC,gBAAD;AACE,IAAA,SAAS,EAAEF,sBADb;AAEE,IAAA,OAAO,EAAEiB,WAFX;AAGE,IAAA,QAAQ,EAAE,CAAC,CAHb;AAIE,IAAA,sBAAsB;AAJxB,IATF,eAeE,6BAAC,cAAD;AACE,IAAA,QAAQ,EAAEb,SADZ;AAEE,IAAA,IAAI,EAAEA,SAAS,GAAGd,IAAH,GAAU,KAF3B;AAGE,IAAA,SAAS,EAAEK,QAHb;AAIE,IAAA,SAAS,EAAEI,eAJb;AAKE,IAAA,QAAQ,EAAE,CAAC;AALb,kBAOE,6BAAC,kBAAD;AACE,IAAA,SAAS,EAAE,yBACT,sBADS,2BAESV,IAFT,GAGTS,aAHS,EAITD,SAJS,CADb;AAOE,IAAA,KAAK,EAAER,IAPT;AAQE,IAAA,WAAW,EAAEF;AARf,kBAUE,6BAAC,4BAAD;AAAqB,IAAA,KAAK,EAAE;AAAEG,MAAAA,IAAI,EAAJA,IAAF;AAAQa,MAAAA,OAAO,EAAPA;AAAR;AAA5B,KACG,OAAOlB,QAAP,KAAoB,UAApB,GACGA,QAAQ,CAACiC,UAAD,CADX,GAEGjC,QAHN,CAVF,CAPF,CAfF,CADG,GAyCD,IA3CN,CADF;AA+CD,CAlHM;;;AAoHPD,IAAI,CAACuC,WAAL,GAAmB,MAAnB","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 /** Prevents click event from bubbling to parent elements */\n preventClickEventBubbling?: 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 preventClickEventBubbling = false,\n}) => {\n const [open, setOpen] = useState(defaultOpen);\n const [childNode, setChildNode] = useState<Element | null>();\n const elementRef = useRef<Element | null>(null);\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 && event.preventDefault();\n if (preventClickEventBubbling) {\n event?.stopPropagation();\n }\n setOpen(true);\n typeof onOpen === \"function\" && onOpen();\n typeof target?.props?.onClick === \"function\" &&\n target.props.onClick(event);\n },\n [onOpen, preventClickEventBubbling, 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 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 preventClickEventBubbling={preventClickEventBubbling}\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"],"file":"Menu.js"}
@@ -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;IAEpB,QAAQ,EAAE,SAAS,CAAC;IAEpB,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IAEvD,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B,IAAI,CAAC,EAAE,QAAQ,CAAC;IAEhB,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IAEpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAErB,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC;IAE9B,QAAQ,CAAC,EAAE,SAAS,CAAC;IAErB,MAAM,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAEhC,0BAA0B,CAAC,EAAE,OAAO,CAAC;IAErC,yBAAyB,CAAC,EAAE,OAAO,CAAC;CACrC;AAED,eAAO,MAAM,IAAI,EAAE,EAAE,CAAC,KAAK,CA2G1B,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;IAEpB,QAAQ,EAAE,SAAS,CAAC;IAEpB,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IAEvD,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B,IAAI,CAAC,EAAE,QAAQ,CAAC;IAEhB,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IAEpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAErB,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC;IAE9B,QAAQ,CAAC,EAAE,SAAS,CAAC;IAErB,MAAM,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAEhC,0BAA0B,CAAC,EAAE,OAAO,CAAC;IAErC,yBAAyB,CAAC,EAAE,OAAO,CAAC;CACrC;AAED,eAAO,MAAM,IAAI,EAAE,EAAE,CAAC,KAAK,CAkH1B,CAAC"}
@@ -47,10 +47,18 @@ export var Menu = function Menu(_ref) {
47
47
  var handleRefRef = useForkRef(target ? target.ref : undefined, setChildNode);
48
48
  var handleRef = useForkRef(handleRefRef, elementRef);
49
49
  var handleOpen = useCallback(function (event) {
50
+ var _target$props;
51
+
50
52
  event && event.preventDefault();
53
+
54
+ if (preventClickEventBubbling) {
55
+ event == null ? void 0 : event.stopPropagation();
56
+ }
57
+
51
58
  setOpen(true);
52
59
  typeof onOpen === "function" && onOpen();
53
- }, [onOpen]);
60
+ typeof (target == null ? void 0 : (_target$props = target.props) == null ? void 0 : _target$props.onClick) === "function" && target.props.onClick(event);
61
+ }, [onOpen, preventClickEventBubbling, target == null ? void 0 : target.props]);
54
62
  var handleClose = useCallback(function () {
55
63
  if (typeof onBeforeClose === "function" && !onBeforeClose()) {
56
64
  return;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/Menu/Menu.tsx"],"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","preventClickEventBubbling","setOpen","childNode","setChildNode","elementRef","handleRefRef","ref","undefined","handleRef","handleOpen","event","preventDefault","handleClose","childProps","forceClose","targetProps","onClick","cloneElement","displayName"],"mappings":"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","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 /** Prevents click event from bubbling to parent elements */\n preventClickEventBubbling?: 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 preventClickEventBubbling = false,\n}) => {\n const [open, setOpen] = useState(defaultOpen);\n const [childNode, setChildNode] = useState<Element | null>();\n const elementRef = useRef<Element | null>(null);\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 (event: Pick<MouseEvent<Element>, \"preventDefault\">) => {\n event && event.preventDefault();\n setOpen(true);\n typeof onOpen === \"function\" && onOpen();\n },\n [onOpen]\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 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 preventClickEventBubbling={preventClickEventBubbling}\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"],"file":"Menu.js"}
1
+ {"version":3,"sources":["../../../../src/components/Menu/Menu.tsx"],"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","preventClickEventBubbling","setOpen","childNode","setChildNode","elementRef","handleRefRef","ref","undefined","handleRef","handleOpen","event","preventDefault","stopPropagation","props","onClick","handleClose","childProps","forceClose","targetProps","cloneElement","displayName"],"mappings":"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","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 /** Prevents click event from bubbling to parent elements */\n preventClickEventBubbling?: 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 preventClickEventBubbling = false,\n}) => {\n const [open, setOpen] = useState(defaultOpen);\n const [childNode, setChildNode] = useState<Element | null>();\n const elementRef = useRef<Element | null>(null);\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 && event.preventDefault();\n if (preventClickEventBubbling) {\n event?.stopPropagation();\n }\n setOpen(true);\n typeof onOpen === \"function\" && onOpen();\n typeof target?.props?.onClick === \"function\" &&\n target.props.onClick(event);\n },\n [onOpen, preventClickEventBubbling, 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 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 preventClickEventBubbling={preventClickEventBubbling}\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"],"file":"Menu.js"}
package/dist/index.js CHANGED
@@ -848,10 +848,18 @@
848
848
  var handleRefRef = useForkRef(target ? target.ref : undefined, setChildNode);
849
849
  var handleRef = useForkRef(handleRefRef, elementRef);
850
850
  var handleOpen = React.useCallback(function (event) {
851
+ var _target$props;
852
+
851
853
  event && event.preventDefault();
854
+
855
+ if (preventClickEventBubbling) {
856
+ event === null || event === void 0 ? void 0 : event.stopPropagation();
857
+ }
858
+
852
859
  setOpen(true);
853
860
  typeof onOpen === "function" && onOpen();
854
- }, [onOpen]);
861
+ typeof (target === null || target === void 0 ? void 0 : (_target$props = target.props) === null || _target$props === void 0 ? void 0 : _target$props.onClick) === "function" && target.props.onClick(event);
862
+ }, [onOpen, preventClickEventBubbling, target === null || target === void 0 ? void 0 : target.props]);
855
863
  var handleClose = React.useCallback(function () {
856
864
  if (typeof onBeforeClose === "function" && !onBeforeClose()) {
857
865
  return;