@coorpacademy/components 11.32.30 → 11.32.32
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/es/atom/button-link-icon/index.js +2 -2
- package/es/atom/button-link-icon/index.js.map +1 -1
- package/es/molecule/bullet-point-menu-button/index.d.ts.map +1 -1
- package/es/molecule/bullet-point-menu-button/index.js +17 -4
- package/es/molecule/bullet-point-menu-button/index.js.map +1 -1
- package/es/molecule/bullet-point-menu-button/style.css +2 -15
- package/lib/atom/button-link-icon/index.js +1 -1
- package/lib/atom/button-link-icon/index.js.map +1 -1
- package/lib/molecule/bullet-point-menu-button/index.d.ts.map +1 -1
- package/lib/molecule/bullet-point-menu-button/index.js +19 -5
- package/lib/molecule/bullet-point-menu-button/index.js.map +1 -1
- package/lib/molecule/bullet-point-menu-button/style.css +2 -15
- package/package.json +3 -3
|
@@ -3,7 +3,7 @@ import _getOr from "lodash/fp/getOr";
|
|
|
3
3
|
|
|
4
4
|
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
5
5
|
|
|
6
|
-
import React, {
|
|
6
|
+
import React, { useState, useCallback, useRef } from 'react';
|
|
7
7
|
import PropTypes from 'prop-types';
|
|
8
8
|
import classnames from 'classnames';
|
|
9
9
|
import { ICONS } from '../../util/button-icons';
|
|
@@ -61,7 +61,7 @@ const ButtonLinkIcon = props => {
|
|
|
61
61
|
const timer = useRef();
|
|
62
62
|
const contentView = getButtonContent(icon, faIcon);
|
|
63
63
|
const styleButton = classnames(getSizeStyle(size), link && style.link, disabled && style.disabled, className);
|
|
64
|
-
const handleOnClick =
|
|
64
|
+
const handleOnClick = useCallback(() => onClick(), [onClick]);
|
|
65
65
|
const handleMouseOver = useCallback(() => {
|
|
66
66
|
timer.current && clearTimeout(timer.current);
|
|
67
67
|
timer.current = setTimeout(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["React","
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","useState","useCallback","useRef","PropTypes","classnames","ICONS","FaIcon","Link","ToolTip","style","getButtonContent","icon","faIcon","Icon","buttonContent","getSizeStyle","size","small","responsive","default","ButtonLinkIcon","props","disabled","dataName","ariaLabel","link","onClick","className","tooltipPlacement","toolTipIsVisible","setToolTipIsVisible","timer","contentView","styleButton","handleOnClick","handleMouseOver","current","clearTimeout","setTimeout","undefined","handleMouseLeave","TooltipContent","tooltipContentWrapper","Button","propTypes","oneOf","string","func","shape","href","download","bool","target"],"sources":["../../../src/atom/button-link-icon/index.js"],"sourcesContent":["import React, {useState, useCallback, useRef} from 'react';\nimport PropTypes from 'prop-types';\nimport {getOr, keys} from 'lodash/fp';\nimport classnames from 'classnames';\nimport {ICONS} from '../../util/button-icons';\nimport FaIcon from '../icon';\nimport Link from '../link';\nimport ToolTip from '../tooltip';\n// eslint-disable-next-line css-modules/no-unused-class\nimport style from './style.css';\n\nconst getButtonContent = (icon, faIcon) => {\n const Icon = getOr(null, icon, ICONS);\n\n if (!Icon && !faIcon) {\n return <div className={style.buttonContent} />;\n }\n\n return (\n <div className={style.buttonContent}>\n {faIcon ? <FaIcon iconName={faIcon} /> : <Icon className={style.icon} />}\n </div>\n );\n};\n\nconst getSizeStyle = size => {\n switch (size) {\n case 'small':\n return style.small;\n case 'responsive':\n return style.responsive;\n default:\n return style.default;\n }\n};\n\nconst ButtonLinkIcon = props => {\n const {\n size = 'default',\n disabled,\n icon,\n faIcon,\n 'data-name': dataName,\n 'aria-label': ariaLabel,\n link,\n onClick,\n className,\n tooltipPlacement = 'left'\n } = props;\n const [toolTipIsVisible, setToolTipIsVisible] = useState(false);\n const timer = useRef();\n\n const contentView = getButtonContent(icon, faIcon);\n const styleButton = classnames(\n getSizeStyle(size),\n link && style.link,\n disabled && style.disabled,\n className\n );\n\n const handleOnClick = useCallback(() => onClick(), [onClick]);\n\n const handleMouseOver = useCallback(() => {\n timer.current && clearTimeout(timer.current);\n timer.current = setTimeout(() => {\n setToolTipIsVisible(true);\n timer.current = undefined;\n }, 300);\n }, [timer, setToolTipIsVisible]);\n\n const handleMouseLeave = useCallback(() => {\n timer.current && clearTimeout(timer.current);\n setToolTipIsVisible(false);\n }, [timer, setToolTipIsVisible]);\n\n const TooltipContent = useCallback(\n () => <span className={style.tooltipContentWrapper}>{ariaLabel}</span>,\n [ariaLabel]\n );\n\n const Button = useCallback(\n () =>\n link ? (\n <Link\n {...link}\n {...(ariaLabel\n ? {\n 'data-for': 'button-icon',\n 'data-tip': toolTipIsVisible\n }\n : {})}\n className={styleButton}\n data-name={dataName}\n aria-label={ariaLabel}\n onMouseLeave={handleMouseLeave}\n onMouseOver={handleMouseOver}\n >\n {contentView}\n </Link>\n ) : (\n <button\n {...(ariaLabel\n ? {\n 'data-for': 'button-icon',\n 'data-tip': toolTipIsVisible\n }\n : {})}\n type=\"button\"\n aria-label={ariaLabel}\n data-name={dataName}\n data-testid={`button-${dataName}-${className}`}\n className={styleButton}\n onClick={handleOnClick}\n onMouseLeave={handleMouseLeave}\n onMouseOver={handleMouseOver}\n disabled={disabled}\n >\n {contentView}\n </button>\n ),\n [\n link,\n ariaLabel,\n className,\n contentView,\n dataName,\n disabled,\n handleMouseLeave,\n handleMouseOver,\n handleOnClick,\n styleButton,\n toolTipIsVisible\n ]\n );\n\n return (\n <>\n <Button />\n {ariaLabel ? (\n <ToolTip\n fontSize={12}\n anchorId=\"button-icon\"\n toolTipIsVisible={toolTipIsVisible}\n placement={tooltipPlacement}\n TooltipContent={TooltipContent}\n closeToolTipInformationTextAriaLabel={ariaLabel}\n />\n ) : null}\n </>\n );\n};\n\nButtonLinkIcon.propTypes = {\n size: PropTypes.oneOf(['default', 'small', 'responsive']),\n 'aria-label': PropTypes.string,\n 'data-name': PropTypes.string,\n icon: PropTypes.oneOf(keys(ICONS)),\n faIcon: PropTypes.string,\n onClick: PropTypes.func,\n link: PropTypes.shape({\n href: PropTypes.string,\n download: PropTypes.bool,\n target: PropTypes.oneOf(['_self', '_blank', '_parent', '_top'])\n }),\n disabled: PropTypes.bool,\n className: PropTypes.string,\n tooltipPlacement: PropTypes.oneOf(['left', 'right', 'top', 'bottom'])\n};\n\nexport default ButtonLinkIcon;\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/molecule/bullet-point-menu-button/index.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/molecule/bullet-point-menu-button/index.tsx"],"names":[],"mappings":";AAKA,OAAkB,EAAC,0BAA0B,EAAC,MAAM,SAAS,CAAC;AAG9D,QAAA,MAAM,qBAAqB;YAAW,0BAA0B;;;;;;;;;;;;;;;;CA2D/D,CAAC;AAIF,eAAe,qBAAqB,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import _noop from "lodash/fp/noop";
|
|
2
|
+
import React, { useCallback, useState, useEffect } from 'react';
|
|
2
3
|
import classnames from 'classnames';
|
|
3
4
|
import ButtonLinkIcon from '../../atom/button-link-icon';
|
|
4
5
|
import ButtonMenu from '../../atom/button-menu';
|
|
@@ -10,18 +11,30 @@ const BulletPointMenuButton = props => {
|
|
|
10
11
|
disabled = false,
|
|
11
12
|
buttonAriaLabel,
|
|
12
13
|
menuAriaLabel,
|
|
13
|
-
onClick,
|
|
14
|
+
onClick = _noop,
|
|
14
15
|
buttons,
|
|
15
16
|
menuButtonClassName,
|
|
16
17
|
isBulkMenu
|
|
17
18
|
} = props;
|
|
18
|
-
const
|
|
19
|
+
const [visible, setVisible] = useState(false);
|
|
20
|
+
const handleOnClick = useCallback(() => {
|
|
21
|
+
onClick();
|
|
22
|
+
setVisible(true);
|
|
23
|
+
}, [onClick]);
|
|
24
|
+
useEffect(() => {
|
|
25
|
+
const handleMouseDown = () => setVisible(false);
|
|
26
|
+
|
|
27
|
+
document.addEventListener('mousedown', handleMouseDown);
|
|
28
|
+
return () => {
|
|
29
|
+
document.removeEventListener('mousedown', handleMouseDown);
|
|
30
|
+
};
|
|
31
|
+
}, []);
|
|
19
32
|
const menuProps = {
|
|
20
33
|
'data-name': 'button-menu',
|
|
21
34
|
buttons
|
|
22
35
|
};
|
|
23
36
|
const menu = /*#__PURE__*/React.createElement("div", {
|
|
24
|
-
className: classnames(style.bulletPointMenu, isBulkMenu && style.bulkBulletPointMenu),
|
|
37
|
+
className: classnames(style.bulletPointMenu, isBulkMenu && style.bulkBulletPointMenu, visible && style.visible),
|
|
25
38
|
"data-name": "menu-wrapper",
|
|
26
39
|
"aria-label": menuAriaLabel
|
|
27
40
|
}, /*#__PURE__*/React.createElement(ButtonMenu, menuProps));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["React","useCallback","classnames","ButtonLinkIcon","ButtonMenu","propTypes","style","BulletPointMenuButton","props","disabled","buttonAriaLabel","menuAriaLabel","onClick","buttons","menuButtonClassName","isBulkMenu","handleOnClick","menuProps","menu","bulletPointMenu","bulkBulletPointMenu","bulletPointButtonProps","size","icon","className","bulletPointWrapper"],"sources":["../../../src/molecule/bullet-point-menu-button/index.tsx"],"sourcesContent":["import React, {useCallback} from 'react';\nimport classnames from 'classnames';\nimport ButtonLinkIcon from '../../atom/button-link-icon';\nimport ButtonMenu from '../../atom/button-menu';\nimport propTypes, {BulletPointMenuButtonProps} from './types';\nimport style from './style.css';\n\nconst BulletPointMenuButton = (props: BulletPointMenuButtonProps) => {\n const {\n disabled = false,\n buttonAriaLabel,\n menuAriaLabel,\n onClick,\n buttons,\n menuButtonClassName,\n isBulkMenu\n } = props;\n const handleOnClick = useCallback(() => onClick(), [onClick]);\n\n const menuProps = {\n 'data-name': 'button-menu',\n buttons\n };\n\n const menu = (\n <div\n className={classnames(style.bulletPointMenu
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","useCallback","useState","useEffect","classnames","ButtonLinkIcon","ButtonMenu","propTypes","style","BulletPointMenuButton","props","disabled","buttonAriaLabel","menuAriaLabel","onClick","buttons","menuButtonClassName","isBulkMenu","visible","setVisible","handleOnClick","handleMouseDown","document","addEventListener","removeEventListener","menuProps","menu","bulletPointMenu","bulkBulletPointMenu","bulletPointButtonProps","size","icon","className","bulletPointWrapper"],"sources":["../../../src/molecule/bullet-point-menu-button/index.tsx"],"sourcesContent":["import React, {useCallback, useState, useEffect} from 'react';\nimport classnames from 'classnames';\nimport {noop} from 'lodash/fp';\nimport ButtonLinkIcon from '../../atom/button-link-icon';\nimport ButtonMenu from '../../atom/button-menu';\nimport propTypes, {BulletPointMenuButtonProps} from './types';\nimport style from './style.css';\n\nconst BulletPointMenuButton = (props: BulletPointMenuButtonProps) => {\n const {\n disabled = false,\n buttonAriaLabel,\n menuAriaLabel,\n onClick = noop,\n buttons,\n menuButtonClassName,\n isBulkMenu\n } = props;\n const [visible, setVisible] = useState(false);\n\n const handleOnClick = useCallback(() => {\n onClick();\n setVisible(true);\n }, [onClick]);\n\n useEffect(() => {\n const handleMouseDown = () => setVisible(false);\n document.addEventListener('mousedown', handleMouseDown);\n return () => {\n document.removeEventListener('mousedown', handleMouseDown);\n };\n }, []);\n\n const menuProps = {\n 'data-name': 'button-menu',\n buttons\n };\n\n const menu = (\n <div\n className={classnames(\n style.bulletPointMenu,\n isBulkMenu && style.bulkBulletPointMenu,\n visible && style.visible\n )}\n data-name=\"menu-wrapper\"\n aria-label={menuAriaLabel}\n >\n <ButtonMenu {...menuProps} />\n </div>\n );\n const bulletPointButtonProps = {\n size: 'default',\n 'aria-label': buttonAriaLabel,\n 'data-name': 'bullet-point-button',\n icon: 'bullet-point',\n onClick: handleOnClick,\n disabled,\n className: menuButtonClassName\n };\n\n return (\n <div className={style.bulletPointWrapper} data-name=\"bullet-point-wrapper\">\n <ButtonLinkIcon {...bulletPointButtonProps} />\n {menu}\n </div>\n );\n};\n\nBulletPointMenuButton.propTypes = propTypes;\n\nexport default BulletPointMenuButton;\n"],"mappings":";AAAA,OAAOA,KAAP,IAAeC,WAAf,EAA4BC,QAA5B,EAAsCC,SAAtC,QAAsD,OAAtD;AACA,OAAOC,UAAP,MAAuB,YAAvB;AAEA,OAAOC,cAAP,MAA2B,6BAA3B;AACA,OAAOC,UAAP,MAAuB,wBAAvB;AACA,OAAOC,SAAP,MAAoD,SAApD;AACA,OAAOC,KAAP,MAAkB,aAAlB;;AAEA,MAAMC,qBAAqB,GAAIC,KAAD,IAAuC;EACnE,MAAM;IACJC,QAAQ,GAAG,KADP;IAEJC,eAFI;IAGJC,aAHI;IAIJC,OAAO,QAJH;IAKJC,OALI;IAMJC,mBANI;IAOJC;EAPI,IAQFP,KARJ;EASA,MAAM,CAACQ,OAAD,EAAUC,UAAV,IAAwBjB,QAAQ,CAAC,KAAD,CAAtC;EAEA,MAAMkB,aAAa,GAAGnB,WAAW,CAAC,MAAM;IACtCa,OAAO;IACPK,UAAU,CAAC,IAAD,CAAV;EACD,CAHgC,EAG9B,CAACL,OAAD,CAH8B,CAAjC;EAKAX,SAAS,CAAC,MAAM;IACd,MAAMkB,eAAe,GAAG,MAAMF,UAAU,CAAC,KAAD,CAAxC;;IACAG,QAAQ,CAACC,gBAAT,CAA0B,WAA1B,EAAuCF,eAAvC;IACA,OAAO,MAAM;MACXC,QAAQ,CAACE,mBAAT,CAA6B,WAA7B,EAA0CH,eAA1C;IACD,CAFD;EAGD,CANQ,EAMN,EANM,CAAT;EAQA,MAAMI,SAAS,GAAG;IAChB,aAAa,aADG;IAEhBV;EAFgB,CAAlB;EAKA,MAAMW,IAAI,gBACR;IACE,SAAS,EAAEtB,UAAU,CACnBI,KAAK,CAACmB,eADa,EAEnBV,UAAU,IAAIT,KAAK,CAACoB,mBAFD,EAGnBV,OAAO,IAAIV,KAAK,CAACU,OAHE,CADvB;IAME,aAAU,cANZ;IAOE,cAAYL;EAPd,gBASE,oBAAC,UAAD,EAAgBY,SAAhB,CATF,CADF;EAaA,MAAMI,sBAAsB,GAAG;IAC7BC,IAAI,EAAE,SADuB;IAE7B,cAAclB,eAFe;IAG7B,aAAa,qBAHgB;IAI7BmB,IAAI,EAAE,cAJuB;IAK7BjB,OAAO,EAAEM,aALoB;IAM7BT,QAN6B;IAO7BqB,SAAS,EAAEhB;EAPkB,CAA/B;EAUA,oBACE;IAAK,SAAS,EAAER,KAAK,CAACyB,kBAAtB;IAA0C,aAAU;EAApD,gBACE,oBAAC,cAAD,EAAoBJ,sBAApB,CADF,EAEGH,IAFH,CADF;AAMD,CA3DD;;AA6DAjB,qBAAqB,CAACF,SAAtB,2CAAkCA,SAAlC;AAEA,eAAeE,qBAAf"}
|
|
@@ -29,31 +29,18 @@
|
|
|
29
29
|
border-radius: 7px;
|
|
30
30
|
overflow: hidden;
|
|
31
31
|
background-color: cm_grey_100;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
/* Fade-in - Fade-out, does target button class but bulletPointMenu only */
|
|
35
|
-
button + .bulletPointMenu {
|
|
36
|
-
/* fade out combo */
|
|
37
32
|
visibility: hidden;
|
|
38
33
|
opacity:0;
|
|
39
34
|
transition:visibility 0.5s ease,opacity 0.5s ease;
|
|
40
35
|
}
|
|
41
36
|
|
|
42
|
-
|
|
43
|
-
button:focus + .bulletPointMenu {
|
|
37
|
+
.visible {
|
|
44
38
|
/* fade in combo */
|
|
45
39
|
max-height: max-content;
|
|
46
|
-
visibility:visible;
|
|
40
|
+
visibility: visible;
|
|
47
41
|
opacity:1;
|
|
48
42
|
}
|
|
49
43
|
|
|
50
|
-
/*
|
|
51
|
-
Recover - unset pointer-events,
|
|
52
|
-
to be able to click on the button when the menu is open to close it
|
|
53
|
-
*/
|
|
54
|
-
.bulletPointWrapper > button:focus { pointer-events: none; }
|
|
55
|
-
.bulletPointWrapper > button:not(:focus) { pointer-events: auto; }
|
|
56
|
-
|
|
57
44
|
/*
|
|
58
45
|
bulk theme
|
|
59
46
|
*/
|
|
@@ -79,7 +79,7 @@ const ButtonLinkIcon = props => {
|
|
|
79
79
|
const timer = (0, _react.useRef)();
|
|
80
80
|
const contentView = getButtonContent(icon, faIcon);
|
|
81
81
|
const styleButton = (0, _classnames.default)(getSizeStyle(size), link && _style.default.link, disabled && _style.default.disabled, className);
|
|
82
|
-
const handleOnClick = (0, _react.
|
|
82
|
+
const handleOnClick = (0, _react.useCallback)(() => onClick(), [onClick]);
|
|
83
83
|
const handleMouseOver = (0, _react.useCallback)(() => {
|
|
84
84
|
timer.current && clearTimeout(timer.current);
|
|
85
85
|
timer.current = setTimeout(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["getButtonContent","icon","faIcon","Icon","ICONS","style","buttonContent","getSizeStyle","size","small","responsive","default","ButtonLinkIcon","props","disabled","dataName","ariaLabel","link","onClick","className","tooltipPlacement","toolTipIsVisible","setToolTipIsVisible","useState","timer","useRef","contentView","styleButton","classnames","handleOnClick","
|
|
1
|
+
{"version":3,"file":"index.js","names":["getButtonContent","icon","faIcon","Icon","ICONS","style","buttonContent","getSizeStyle","size","small","responsive","default","ButtonLinkIcon","props","disabled","dataName","ariaLabel","link","onClick","className","tooltipPlacement","toolTipIsVisible","setToolTipIsVisible","useState","timer","useRef","contentView","styleButton","classnames","handleOnClick","useCallback","handleMouseOver","current","clearTimeout","setTimeout","undefined","handleMouseLeave","TooltipContent","tooltipContentWrapper","Button","propTypes","PropTypes","oneOf","string","func","shape","href","download","bool","target"],"sources":["../../../src/atom/button-link-icon/index.js"],"sourcesContent":["import React, {useState, useCallback, useRef} from 'react';\nimport PropTypes from 'prop-types';\nimport {getOr, keys} from 'lodash/fp';\nimport classnames from 'classnames';\nimport {ICONS} from '../../util/button-icons';\nimport FaIcon from '../icon';\nimport Link from '../link';\nimport ToolTip from '../tooltip';\n// eslint-disable-next-line css-modules/no-unused-class\nimport style from './style.css';\n\nconst getButtonContent = (icon, faIcon) => {\n const Icon = getOr(null, icon, ICONS);\n\n if (!Icon && !faIcon) {\n return <div className={style.buttonContent} />;\n }\n\n return (\n <div className={style.buttonContent}>\n {faIcon ? <FaIcon iconName={faIcon} /> : <Icon className={style.icon} />}\n </div>\n );\n};\n\nconst getSizeStyle = size => {\n switch (size) {\n case 'small':\n return style.small;\n case 'responsive':\n return style.responsive;\n default:\n return style.default;\n }\n};\n\nconst ButtonLinkIcon = props => {\n const {\n size = 'default',\n disabled,\n icon,\n faIcon,\n 'data-name': dataName,\n 'aria-label': ariaLabel,\n link,\n onClick,\n className,\n tooltipPlacement = 'left'\n } = props;\n const [toolTipIsVisible, setToolTipIsVisible] = useState(false);\n const timer = useRef();\n\n const contentView = getButtonContent(icon, faIcon);\n const styleButton = classnames(\n getSizeStyle(size),\n link && style.link,\n disabled && style.disabled,\n className\n );\n\n const handleOnClick = useCallback(() => onClick(), [onClick]);\n\n const handleMouseOver = useCallback(() => {\n timer.current && clearTimeout(timer.current);\n timer.current = setTimeout(() => {\n setToolTipIsVisible(true);\n timer.current = undefined;\n }, 300);\n }, [timer, setToolTipIsVisible]);\n\n const handleMouseLeave = useCallback(() => {\n timer.current && clearTimeout(timer.current);\n setToolTipIsVisible(false);\n }, [timer, setToolTipIsVisible]);\n\n const TooltipContent = useCallback(\n () => <span className={style.tooltipContentWrapper}>{ariaLabel}</span>,\n [ariaLabel]\n );\n\n const Button = useCallback(\n () =>\n link ? (\n <Link\n {...link}\n {...(ariaLabel\n ? {\n 'data-for': 'button-icon',\n 'data-tip': toolTipIsVisible\n }\n : {})}\n className={styleButton}\n data-name={dataName}\n aria-label={ariaLabel}\n onMouseLeave={handleMouseLeave}\n onMouseOver={handleMouseOver}\n >\n {contentView}\n </Link>\n ) : (\n <button\n {...(ariaLabel\n ? {\n 'data-for': 'button-icon',\n 'data-tip': toolTipIsVisible\n }\n : {})}\n type=\"button\"\n aria-label={ariaLabel}\n data-name={dataName}\n data-testid={`button-${dataName}-${className}`}\n className={styleButton}\n onClick={handleOnClick}\n onMouseLeave={handleMouseLeave}\n onMouseOver={handleMouseOver}\n disabled={disabled}\n >\n {contentView}\n </button>\n ),\n [\n link,\n ariaLabel,\n className,\n contentView,\n dataName,\n disabled,\n handleMouseLeave,\n handleMouseOver,\n handleOnClick,\n styleButton,\n toolTipIsVisible\n ]\n );\n\n return (\n <>\n <Button />\n {ariaLabel ? (\n <ToolTip\n fontSize={12}\n anchorId=\"button-icon\"\n toolTipIsVisible={toolTipIsVisible}\n placement={tooltipPlacement}\n TooltipContent={TooltipContent}\n closeToolTipInformationTextAriaLabel={ariaLabel}\n />\n ) : null}\n </>\n );\n};\n\nButtonLinkIcon.propTypes = {\n size: PropTypes.oneOf(['default', 'small', 'responsive']),\n 'aria-label': PropTypes.string,\n 'data-name': PropTypes.string,\n icon: PropTypes.oneOf(keys(ICONS)),\n faIcon: PropTypes.string,\n onClick: PropTypes.func,\n link: PropTypes.shape({\n href: PropTypes.string,\n download: PropTypes.bool,\n target: PropTypes.oneOf(['_self', '_blank', '_parent', '_top'])\n }),\n disabled: PropTypes.bool,\n className: PropTypes.string,\n tooltipPlacement: PropTypes.oneOf(['left', 'right', 'top', 'bottom'])\n};\n\nexport default ButtonLinkIcon;\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/molecule/bullet-point-menu-button/index.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/molecule/bullet-point-menu-button/index.tsx"],"names":[],"mappings":";AAKA,OAAkB,EAAC,0BAA0B,EAAC,MAAM,SAAS,CAAC;AAG9D,QAAA,MAAM,qBAAqB;YAAW,0BAA0B;;;;;;;;;;;;;;;;CA2D/D,CAAC;AAIF,eAAe,qBAAqB,CAAC"}
|
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
exports.__esModule = true;
|
|
4
4
|
exports.default = void 0;
|
|
5
5
|
|
|
6
|
+
var _noop2 = _interopRequireDefault(require("lodash/fp/noop"));
|
|
7
|
+
|
|
6
8
|
var _react = _interopRequireWildcard(require("react"));
|
|
7
9
|
|
|
8
10
|
var _classnames = _interopRequireDefault(require("classnames"));
|
|
@@ -15,30 +17,42 @@ var _types = _interopRequireDefault(require("./types"));
|
|
|
15
17
|
|
|
16
18
|
var _style = _interopRequireDefault(require("./style.css"));
|
|
17
19
|
|
|
18
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
19
|
-
|
|
20
20
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
21
21
|
|
|
22
22
|
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; }
|
|
23
23
|
|
|
24
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
25
|
+
|
|
24
26
|
const BulletPointMenuButton = props => {
|
|
25
27
|
const {
|
|
26
28
|
disabled = false,
|
|
27
29
|
buttonAriaLabel,
|
|
28
30
|
menuAriaLabel,
|
|
29
|
-
onClick,
|
|
31
|
+
onClick = _noop2.default,
|
|
30
32
|
buttons,
|
|
31
33
|
menuButtonClassName,
|
|
32
34
|
isBulkMenu
|
|
33
35
|
} = props;
|
|
34
|
-
const
|
|
36
|
+
const [visible, setVisible] = (0, _react.useState)(false);
|
|
37
|
+
const handleOnClick = (0, _react.useCallback)(() => {
|
|
38
|
+
onClick();
|
|
39
|
+
setVisible(true);
|
|
40
|
+
}, [onClick]);
|
|
41
|
+
(0, _react.useEffect)(() => {
|
|
42
|
+
const handleMouseDown = () => setVisible(false);
|
|
43
|
+
|
|
44
|
+
document.addEventListener('mousedown', handleMouseDown);
|
|
45
|
+
return () => {
|
|
46
|
+
document.removeEventListener('mousedown', handleMouseDown);
|
|
47
|
+
};
|
|
48
|
+
}, []);
|
|
35
49
|
const menuProps = {
|
|
36
50
|
'data-name': 'button-menu',
|
|
37
51
|
buttons
|
|
38
52
|
};
|
|
39
53
|
|
|
40
54
|
const menu = /*#__PURE__*/_react.default.createElement("div", {
|
|
41
|
-
className: (0, _classnames.default)(_style.default.bulletPointMenu, isBulkMenu && _style.default.bulkBulletPointMenu),
|
|
55
|
+
className: (0, _classnames.default)(_style.default.bulletPointMenu, isBulkMenu && _style.default.bulkBulletPointMenu, visible && _style.default.visible),
|
|
42
56
|
"data-name": "menu-wrapper",
|
|
43
57
|
"aria-label": menuAriaLabel
|
|
44
58
|
}, /*#__PURE__*/_react.default.createElement(_buttonMenu.default, menuProps));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["BulletPointMenuButton","props","disabled","buttonAriaLabel","menuAriaLabel","onClick","buttons","menuButtonClassName","isBulkMenu","handleOnClick","useCallback","menuProps","menu","classnames","style","bulletPointMenu","bulkBulletPointMenu","bulletPointButtonProps","size","icon","className","bulletPointWrapper","propTypes"],"sources":["../../../src/molecule/bullet-point-menu-button/index.tsx"],"sourcesContent":["import React, {useCallback} from 'react';\nimport classnames from 'classnames';\nimport ButtonLinkIcon from '../../atom/button-link-icon';\nimport ButtonMenu from '../../atom/button-menu';\nimport propTypes, {BulletPointMenuButtonProps} from './types';\nimport style from './style.css';\n\nconst BulletPointMenuButton = (props: BulletPointMenuButtonProps) => {\n const {\n disabled = false,\n buttonAriaLabel,\n menuAriaLabel,\n onClick,\n buttons,\n menuButtonClassName,\n isBulkMenu\n } = props;\n const handleOnClick = useCallback(() => onClick(), [onClick]);\n\n const menuProps = {\n 'data-name': 'button-menu',\n buttons\n };\n\n const menu = (\n <div\n className={classnames(style.bulletPointMenu
|
|
1
|
+
{"version":3,"file":"index.js","names":["BulletPointMenuButton","props","disabled","buttonAriaLabel","menuAriaLabel","onClick","buttons","menuButtonClassName","isBulkMenu","visible","setVisible","useState","handleOnClick","useCallback","useEffect","handleMouseDown","document","addEventListener","removeEventListener","menuProps","menu","classnames","style","bulletPointMenu","bulkBulletPointMenu","bulletPointButtonProps","size","icon","className","bulletPointWrapper","propTypes"],"sources":["../../../src/molecule/bullet-point-menu-button/index.tsx"],"sourcesContent":["import React, {useCallback, useState, useEffect} from 'react';\nimport classnames from 'classnames';\nimport {noop} from 'lodash/fp';\nimport ButtonLinkIcon from '../../atom/button-link-icon';\nimport ButtonMenu from '../../atom/button-menu';\nimport propTypes, {BulletPointMenuButtonProps} from './types';\nimport style from './style.css';\n\nconst BulletPointMenuButton = (props: BulletPointMenuButtonProps) => {\n const {\n disabled = false,\n buttonAriaLabel,\n menuAriaLabel,\n onClick = noop,\n buttons,\n menuButtonClassName,\n isBulkMenu\n } = props;\n const [visible, setVisible] = useState(false);\n\n const handleOnClick = useCallback(() => {\n onClick();\n setVisible(true);\n }, [onClick]);\n\n useEffect(() => {\n const handleMouseDown = () => setVisible(false);\n document.addEventListener('mousedown', handleMouseDown);\n return () => {\n document.removeEventListener('mousedown', handleMouseDown);\n };\n }, []);\n\n const menuProps = {\n 'data-name': 'button-menu',\n buttons\n };\n\n const menu = (\n <div\n className={classnames(\n style.bulletPointMenu,\n isBulkMenu && style.bulkBulletPointMenu,\n visible && style.visible\n )}\n data-name=\"menu-wrapper\"\n aria-label={menuAriaLabel}\n >\n <ButtonMenu {...menuProps} />\n </div>\n );\n const bulletPointButtonProps = {\n size: 'default',\n 'aria-label': buttonAriaLabel,\n 'data-name': 'bullet-point-button',\n icon: 'bullet-point',\n onClick: handleOnClick,\n disabled,\n className: menuButtonClassName\n };\n\n return (\n <div className={style.bulletPointWrapper} data-name=\"bullet-point-wrapper\">\n <ButtonLinkIcon {...bulletPointButtonProps} />\n {menu}\n </div>\n );\n};\n\nBulletPointMenuButton.propTypes = propTypes;\n\nexport default BulletPointMenuButton;\n"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;AACA;;AACA;;AACA;;;;;;;;AAEA,MAAMA,qBAAqB,GAAIC,KAAD,IAAuC;EACnE,MAAM;IACJC,QAAQ,GAAG,KADP;IAEJC,eAFI;IAGJC,aAHI;IAIJC,OAAO,iBAJH;IAKJC,OALI;IAMJC,mBANI;IAOJC;EAPI,IAQFP,KARJ;EASA,MAAM,CAACQ,OAAD,EAAUC,UAAV,IAAwB,IAAAC,eAAA,EAAS,KAAT,CAA9B;EAEA,MAAMC,aAAa,GAAG,IAAAC,kBAAA,EAAY,MAAM;IACtCR,OAAO;IACPK,UAAU,CAAC,IAAD,CAAV;EACD,CAHqB,EAGnB,CAACL,OAAD,CAHmB,CAAtB;EAKA,IAAAS,gBAAA,EAAU,MAAM;IACd,MAAMC,eAAe,GAAG,MAAML,UAAU,CAAC,KAAD,CAAxC;;IACAM,QAAQ,CAACC,gBAAT,CAA0B,WAA1B,EAAuCF,eAAvC;IACA,OAAO,MAAM;MACXC,QAAQ,CAACE,mBAAT,CAA6B,WAA7B,EAA0CH,eAA1C;IACD,CAFD;EAGD,CAND,EAMG,EANH;EAQA,MAAMI,SAAS,GAAG;IAChB,aAAa,aADG;IAEhBb;EAFgB,CAAlB;;EAKA,MAAMc,IAAI,gBACR;IACE,SAAS,EAAE,IAAAC,mBAAA,EACTC,cAAA,CAAMC,eADG,EAETf,UAAU,IAAIc,cAAA,CAAME,mBAFX,EAGTf,OAAO,IAAIa,cAAA,CAAMb,OAHR,CADb;IAME,aAAU,cANZ;IAOE,cAAYL;EAPd,gBASE,6BAAC,mBAAD,EAAgBe,SAAhB,CATF,CADF;;EAaA,MAAMM,sBAAsB,GAAG;IAC7BC,IAAI,EAAE,SADuB;IAE7B,cAAcvB,eAFe;IAG7B,aAAa,qBAHgB;IAI7BwB,IAAI,EAAE,cAJuB;IAK7BtB,OAAO,EAAEO,aALoB;IAM7BV,QAN6B;IAO7B0B,SAAS,EAAErB;EAPkB,CAA/B;EAUA,oBACE;IAAK,SAAS,EAAEe,cAAA,CAAMO,kBAAtB;IAA0C,aAAU;EAApD,gBACE,6BAAC,uBAAD,EAAoBJ,sBAApB,CADF,EAEGL,IAFH,CADF;AAMD,CA3DD;;AA6DApB,qBAAqB,CAAC8B,SAAtB,2CAAkCA,cAAlC;eAEe9B,qB"}
|
|
@@ -29,31 +29,18 @@
|
|
|
29
29
|
border-radius: 7px;
|
|
30
30
|
overflow: hidden;
|
|
31
31
|
background-color: cm_grey_100;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
/* Fade-in - Fade-out, does target button class but bulletPointMenu only */
|
|
35
|
-
button + .bulletPointMenu {
|
|
36
|
-
/* fade out combo */
|
|
37
32
|
visibility: hidden;
|
|
38
33
|
opacity:0;
|
|
39
34
|
transition:visibility 0.5s ease,opacity 0.5s ease;
|
|
40
35
|
}
|
|
41
36
|
|
|
42
|
-
|
|
43
|
-
button:focus + .bulletPointMenu {
|
|
37
|
+
.visible {
|
|
44
38
|
/* fade in combo */
|
|
45
39
|
max-height: max-content;
|
|
46
|
-
visibility:visible;
|
|
40
|
+
visibility: visible;
|
|
47
41
|
opacity:1;
|
|
48
42
|
}
|
|
49
43
|
|
|
50
|
-
/*
|
|
51
|
-
Recover - unset pointer-events,
|
|
52
|
-
to be able to click on the button when the menu is open to close it
|
|
53
|
-
*/
|
|
54
|
-
.bulletPointWrapper > button:focus { pointer-events: none; }
|
|
55
|
-
.bulletPointWrapper > button:not(:focus) { pointer-events: auto; }
|
|
56
|
-
|
|
57
44
|
/*
|
|
58
45
|
bulk theme
|
|
59
46
|
*/
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@coorpacademy/components",
|
|
3
|
-
"version": "11.32.
|
|
3
|
+
"version": "11.32.32",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"module": "es/index.js",
|
|
@@ -114,7 +114,7 @@
|
|
|
114
114
|
"@coorpacademy/eslint-plugin-coorpacademy": "^10.0.0",
|
|
115
115
|
"@coorpacademy/react-native-mock-render": "^0.2.9",
|
|
116
116
|
"@coorpacademy/react-native-slider": "^0.11.1",
|
|
117
|
-
"@coorpacademy/translate": "6.2.
|
|
117
|
+
"@coorpacademy/translate": "6.2.1",
|
|
118
118
|
"@coorpacademy/webpack-config": "13.0.0",
|
|
119
119
|
"@react-native-community/blur": "^4.2.0",
|
|
120
120
|
"@storybook/addon-actions": "^6.5.12",
|
|
@@ -177,5 +177,5 @@
|
|
|
177
177
|
"last 2 versions",
|
|
178
178
|
"IE 11"
|
|
179
179
|
],
|
|
180
|
-
"gitHead": "
|
|
180
|
+
"gitHead": "4771daf0fb930ab8a5aea4c9491560a15e4196e2"
|
|
181
181
|
}
|