carbon-react 155.5.2 → 155.5.4
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/esm/components/action-popover/__internal__/action-popover.context.d.ts +2 -0
- package/esm/components/action-popover/action-popover-item/action-popover-item.component.js +1 -1
- package/esm/components/action-popover/action-popover.component.js +1 -1
- package/esm/components/button/button.component.d.ts +1 -1
- package/esm/components/icon-button/icon-button.component.d.ts +1 -1
- package/esm/components/icon-button/icon-button.component.js +1 -1
- package/esm/components/link/link.component.d.ts +1 -1
- package/lib/components/action-popover/__internal__/action-popover.context.d.ts +2 -0
- package/lib/components/action-popover/action-popover-item/action-popover-item.component.js +1 -1
- package/lib/components/action-popover/action-popover.component.js +1 -1
- package/lib/components/button/button.component.d.ts +1 -1
- package/lib/components/icon-button/icon-button.component.d.ts +1 -1
- package/lib/components/icon-button/icon-button.component.js +1 -1
- package/lib/components/link/link.component.d.ts +1 -1
- package/package.json +1 -1
|
@@ -4,6 +4,8 @@ type ActionPopoverContextType = {
|
|
|
4
4
|
focusButton: () => void;
|
|
5
5
|
horizontalAlignment: Alignment;
|
|
6
6
|
submenuPosition: Alignment;
|
|
7
|
+
selectedSubmenuRef: HTMLUListElement | null;
|
|
8
|
+
setSelectedSubmenuRef: (ref: HTMLUListElement | null) => void;
|
|
7
9
|
};
|
|
8
10
|
export declare const ActionPopoverProvider: import("react").Provider<ActionPopoverContextType | null>;
|
|
9
11
|
export declare const useActionPopoverContext: () => ActionPopoverContextType;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsxs as e,jsx as t}from"react/jsx-runtime";import
|
|
1
|
+
import{jsxs as e,jsx as t}from"react/jsx-runtime";import r,{useState as n,useRef as o,useCallback as i,useEffect as u}from"react";import c from"invariant";import{StyledMenuItemWrapper as l,StyledMenuItem as a,SubMenuItemIcon as s,MenuItemIcon as p,StyledMenuItemInnerText as f}from"../action-popover.style.js";import m from"../../../__internal__/utils/helpers/events/events.js";import d from"../../../__internal__/utils/helpers/guid/index.js";import{useActionPopoverContext as v}from"../__internal__/action-popover.context.js";import b from"../action-popover-menu/action-popover-menu.component.js";function y(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function h(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter((function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable})))),n.forEach((function(t){y(e,t,r[t])}))}return e}function P(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t}(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))})),e}function g(e){return Boolean(e&&e.current)}const O=y=>{var{children:O,icon:j,disabled:w=!1,onClick:_,submenu:S,focusItem:D,download:E,href:x,currentSubmenuPosition:I,setCurrentSubmenuPosition:k}=y,K=function(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},i=Object.keys(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}(y,["children","icon","disabled","onClick","submenu","focusItem","download","href","currentSubmenuPosition","setCurrentSubmenuPosition"]);c(!r.isValidElement(S)||S.type===b,"ActionPopoverItem only accepts submenu of type `ActionPopoverMenu`");const{setOpenPopover:C,focusButton:T,submenuPosition:A,selectedSubmenuRef:L,setSelectedSubmenuRef:M}=v(),R=!!x,[B,W]=n(void 0),[$]=n(d()),[V,z]=n(!1),[F,N]=n(0),q=o(null),G=o(null),H=o(null),J=o(null),Q=i((()=>{const e=function(e,t,r,n){if(!e.current||!t.current)return n||r;const{left:o,right:i}=e.current.getBoundingClientRect(),{offsetWidth:u}=t.current,c=document.body.clientWidth;return"left"===r?o>=u?"left":"right":c>=i+u?"right":"left"}(G,q,A,I);return null==k||k(e),g(G)&&g(q)&&S}),[S,k,A,I]);u((()=>{!w&&q.current&&z(L===q.current)}),[w,L]),u((()=>{W((()=>{if(!G.current||!q.current)return;const{offsetWidth:e}=q.current,t="left"===I;return{left:t?-e:"auto",right:t?"auto":-e}}))}),[S,I]),u((()=>{S&&Q()}),[Q,S]),u((()=>{D&&setTimeout((()=>{var e;null===(e=G.current)||void 0===e||e.focus()}),0)}),[D]),u((()=>function(){H.current&&clearTimeout(H.current),J.current&&clearTimeout(J.current)}),[]),u((()=>{const e="resize";return window.addEventListener(e,Q),function(){window.removeEventListener(e,Q)}}),[Q]);const U=i((e=>{var t;e.stopPropagation(),w?(null===(t=G.current)||void 0===t||t.focus(),e.preventDefault()):(C(!1),T(),_&&_(e))}),[w,T,_,C]),X=i((e=>{if(m.isSpaceKey(e))e.preventDefault(),e.stopPropagation();else if(w)m.isEnterKey(e)&&e.stopPropagation();else if(S){var t;if("left"===I){if(m.isLeftKey(e)||m.isEnterKey(e))M(q.current),z(!0),N(0),e.stopPropagation();else if(m.isRightKey(e)){var r;z(!1),null===(r=G.current)||void 0===r||r.focus(),e.stopPropagation()}}else(m.isRightKey(e)||m.isEnterKey(e))&&(z(!0),N(0),e.stopPropagation()),m.isLeftKey(e)&&(z(!1),null===(t=G.current)||void 0===t||t.focus(),e.stopPropagation());e.preventDefault()}else if(m.isEnterKey(e)){var n;R&&E&&(null===(n=G.current)||void 0===n||n.click()),e.preventDefault(),U(e)}}),[w,S,I,M,R,E,U]),Y=P(h({},!w&&{onClick:e=>{var t;M(q.current),z(!0),null===(t=G.current)||void 0===t||t.focus(),e.preventDefault(),e.stopPropagation()}}),{"aria-haspopup":"true","aria-controls":`ActionPopoverMenu_${$}`,"aria-expanded":V}),Z=h({},!w&&{onMouseEnter:e=>{H.current&&clearTimeout(H.current),N(-1),H.current=setTimeout((()=>{z(!0),M(q.current)}),150),e.stopPropagation()},onMouseLeave:e=>{J.current&&clearTimeout(J.current),J.current=setTimeout((()=>{z(!1)}),150),e.stopPropagation()}});return e(l,P(h({onKeyDown:X},S&&Z),{children:[e(a,P(h(P(h({},K),{ref:G,onClick:U,type:"button",tabIndex:0,isDisabled:w}),w&&{"aria-disabled":!0},R&&{as:"a",download:E,href:x},S&&Y),{children:[S&&g(G)&&t(s,{"aria-hidden":!0,"data-element":"action-popover-menu-item-chevron","data-role":"chevron-icon",type:"left"===I?"chevron_left_thick":"chevron_right_thick"}),j&&t(p,{"aria-hidden":!0,type:j,"data-element":"action-popover-menu-item-icon","data-role":"item-icon"}),t(f,{"data-element":"action-popover-menu-item-inner-text",children:O})]})),r.isValidElement(S)?r.cloneElement(S,{parentID:`ActionPopoverItem_${$}`,menuID:`ActionPopoverMenu_${$}`,"data-element":"action-popover-submenu",isOpen:V,ref:q,style:B,setOpen:z,setFocusIndex:N,focusIndex:F}):null]}))};O.displayName="ActionPopoverItem";export{O as ActionPopoverItem,O as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsxs as e,jsx as t}from"react/jsx-runtime";import o,{forwardRef as r,useState as n,useRef as a,useContext as i,useMemo as l,useCallback as p,useImperativeHandle as c,useEffect as s}from"react";import u from"invariant";import d from"../../__internal__/utils/helpers/tags/tags.js";import{MenuItemDivider as b,MenuButton as m,StyledButtonIcon as f,ButtonIcon as v}from"./action-popover.style.js";import y from"../../__internal__/utils/helpers/events/events.js";import _ from"../../__internal__/popover/popover.component.js";import O from"../../__internal__/utils/helpers/guid/index.js";import j from"../../hooks/__internal__/useLocale/useLocale.js";import g from"./action-popover-menu/action-popover-menu.component.js";import{ActionPopoverItem as h}from"./action-popover-item/action-popover-item.component.js";import"./action-popover-divider/action-popover-divider.component.js";import{ActionPopoverProvider as P}from"./__internal__/action-popover.context.js";import x from"../../hooks/__internal__/useModalManager/useModalManager.js";import{getItems as w,findFirstFocusableItem as A,findLastFocusableItem as
|
|
1
|
+
import{jsxs as e,jsx as t}from"react/jsx-runtime";import o,{forwardRef as r,useState as n,useRef as a,useContext as i,useMemo as l,useCallback as p,useImperativeHandle as c,useEffect as s}from"react";import u from"invariant";import d from"../../__internal__/utils/helpers/tags/tags.js";import{MenuItemDivider as b,MenuButton as m,StyledButtonIcon as f,ButtonIcon as v}from"./action-popover.style.js";import y from"../../__internal__/utils/helpers/events/events.js";import _ from"../../__internal__/popover/popover.component.js";import O from"../../__internal__/utils/helpers/guid/index.js";import j from"../../hooks/__internal__/useLocale/useLocale.js";import g from"./action-popover-menu/action-popover-menu.component.js";import{ActionPopoverItem as h}from"./action-popover-item/action-popover-item.component.js";import"./action-popover-divider/action-popover-divider.component.js";import{ActionPopoverProvider as P}from"./__internal__/action-popover.context.js";import x from"../../hooks/__internal__/useModalManager/useModalManager.js";import{getItems as w,findFirstFocusableItem as A,findLastFocusableItem as S,checkChildrenForString as D}from"./__internal__/action-popover.utils.js";import I from"../flat-table/__internal__/flat-table.context.js";function k(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}const E=()=>{},M=()=>{},L=r(((r,L)=>{var{children:B,id:K,onOpen:$=E,onClose:C=M,rightAlignMenu:z,renderButton:R,placement:F="bottom",horizontalAlignment:N="left",submenuPosition:U="left","aria-label":q,"aria-labelledby":T,"aria-describedby":V}=r,G=function(e,t){if(null==e)return{};var o,r,n=function(e,t){if(null==e)return{};var o,r,n={},a=Object.keys(e);for(r=0;r<a.length;r++)o=a[r],t.indexOf(o)>=0||(n[o]=e[o]);return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)o=a[r],t.indexOf(o)>=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}(r,["children","id","onOpen","onClose","rightAlignMenu","renderButton","placement","horizontalAlignment","submenuPosition","aria-label","aria-labelledby","aria-describedby"]);const H=j(),[J,Q]=n(!1),[W,X]=n(0),[Y]=n(O()),Z=a(null),ee=a(null),{isInFlatTable:te}=i(I),[oe,re]=n(null),ne=l((()=>!o.Children.toArray(B).find((e=>!o.isValidElement(e)||e.type!==h&&e.type!==b))),[B]),ae=l((()=>w(B)),[B]),ie=A(ae),le=S(ae);u(ne,`ActionPopover only accepts children of type \`${h.displayName}\` and \`${b.displayName}\`.`);const pe=l((()=>"top"!==F||z?"top"===F&&z?"top-start":"bottom"===F&&z?"bottom-start":"bottom-end":"top-end"),[F,z]),ce=p((e=>{e&&!J&&$(),!e&&J&&C(),Q(e)}),[J,$,C]),se=p((()=>{var e;const t=null===(e=Z.current)||void 0===e?void 0:e.querySelector("[data-element='action-popover-button']");null==t||t.focus()}),[]);c(L,(()=>({focusButton(){se()}})),[se]);const ue=p((e=>{e.stopPropagation();const t=!J;X(ie),ce(t),t||se()}),[J,ie,ce,se]),de=p((e=>{y.isSpaceKey(e)||y.isDownKey(e)||y.isEnterKey(e)?(e.preventDefault(),e.stopPropagation(),X(ie),ce(!0)):y.isUpKey(e)&&(e.preventDefault(),e.stopPropagation(),X(le),ce(!0))}),[ie,le,ce]),be=p((e=>{y.isEscKey(e)&&(ce(!1),se())}),[ce,se]);x({open:J,closeModal:be,modalRef:Z}),s((()=>{const e=({target:e})=>{var t,o;const r=null==ee||null===(t=ee.current)||void 0===t?void 0:t.contains(e),n=null==Z||null===(o=Z.current)||void 0===o?void 0:o.contains(e);r||n||ce(!1)},t="click";return document.addEventListener(t,e,{capture:!0}),function(){document.removeEventListener(t,e,{capture:!0})}}),[ce]);const me=K||`ActionPopoverButton_${Y}`,fe=`ActionPopoverMenu_${Y}`;return e(m,(ve=function(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{},r=Object.keys(o);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(o).filter((function(e){return Object.getOwnPropertyDescriptor(o,e).enumerable})))),r.forEach((function(t){k(e,t,o[t])}))}return e}({id:me,onKeyDown:de,onClick:ue,isOpen:J,ref:Z},G,d("action-popover-wrapper",G)),ye=null!=(ye={children:[(e=>{if(R){const t=R({tabIndex:J?-1:0,"data-element":"action-popover-button",ariaAttributes:{"aria-haspopup":"true","aria-label":q||H.actionPopover.ariaLabel(),"aria-labelledby":T,"aria-describedby":V,"aria-controls":e,"aria-expanded":`${J}`}}),o=D(t);return R({tabIndex:J?-1:0,"data-element":"action-popover-button",ariaAttributes:{"aria-haspopup":"true","aria-label":o?void 0:q||H.actionPopover.ariaLabel(),"aria-labelledby":T,"aria-describedby":V,"aria-controls":e,"aria-expanded":`${J}`}})}return t(f,{role:"button","aria-haspopup":"true","aria-label":q||H.actionPopover.ariaLabel(),"aria-labelledby":T,"aria-describedby":V,"aria-controls":e,"aria-expanded":J,tabIndex:J?-1:0,"data-element":"action-popover-button",children:t(v,{type:"ellipsis_vertical"})})})(fe),t(P,{value:{setOpenPopover:ce,focusButton:se,submenuPosition:U,horizontalAlignment:N,selectedSubmenuRef:oe,setSelectedSubmenuRef:re},children:J&&t(_,{placement:pe,reference:Z,disableBackgroundUI:te,children:t(g,{"data-component":"action-popover",ref:ee,parentID:me,menuID:fe,focusIndex:W,setFocusIndex:X,isOpen:J,setOpen:ce,placement:F,children:B})})})]})?ye:{},Object.getOwnPropertyDescriptors?Object.defineProperties(ve,Object.getOwnPropertyDescriptors(ye)):function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t.push.apply(t,o)}return t}(Object(ye)).forEach((function(e){Object.defineProperty(ve,e,Object.getOwnPropertyDescriptor(ye,e))})),ve));var ve,ye}));export{L as ActionPopover,L as default};
|
|
@@ -53,7 +53,7 @@ export interface ButtonProps extends SpaceProps, TagProps {
|
|
|
53
53
|
/** Specify a callback triggered on keyDown */
|
|
54
54
|
onKeyDown?: (ev: React.KeyboardEvent<HTMLButtonElement | HTMLAnchorElement>) => void;
|
|
55
55
|
/** onClick handler */
|
|
56
|
-
onClick?: (
|
|
56
|
+
onClick?: (ev: React.MouseEvent<HTMLAnchorElement> | React.MouseEvent<HTMLButtonElement>) => void;
|
|
57
57
|
/** Assigns a size to the button: "small" | "medium" | "large" */
|
|
58
58
|
size?: SizeOptions;
|
|
59
59
|
/** Second text child, renders under main text, only when size is "large" */
|
|
@@ -18,7 +18,7 @@ export interface IconButtonProps extends SpaceProps, TagProps {
|
|
|
18
18
|
/** Set the button to disabled */
|
|
19
19
|
disabled?: boolean;
|
|
20
20
|
/** Callback triggered on click */
|
|
21
|
-
onClick?: (e: React.
|
|
21
|
+
onClick?: (e: React.MouseEvent<HTMLButtonElement>) => void;
|
|
22
22
|
/** @private @internal @ignore */
|
|
23
23
|
"data-component"?: string;
|
|
24
24
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as e}from"react/jsx-runtime";import t,{useContext as r,useState as n,useCallback as o}from"react";import l from"../../__internal__/utils/helpers/tags/tags.js";import
|
|
1
|
+
import{jsx as e}from"react/jsx-runtime";import t,{useContext as r,useState as n,useCallback as o}from"react";import l from"../../__internal__/utils/helpers/tags/tags.js";import c from"./icon-button.style.js";import{TooltipProvider as i}from"../../__internal__/tooltip-provider/index.js";import a from"../batch-selection/__internal__/batch-selection.context.js";function u(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function b(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter((function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable})))),n.forEach((function(t){u(e,t,r[t])}))}return e}function p(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t}(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))})),e}const f=t.forwardRef(((t,u)=>{var f,{"aria-label":s,onClick:y,children:O,disabled:d=!1}=t,m=function(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},l=Object.keys(e);for(n=0;n<l.length;n++)r=l[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(n=0;n<l.length;n++)r=l[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}(t,["aria-label","onClick","children","disabled"]);const{batchSelectionDisabled:j}=r(a),g=d||j,[v,h]=n(),P=s||(null==v||null===(f=v.querySelector("[data-component='icon']"))||void 0===f?void 0:f.getAttribute("type"))||"",w=o((e=>{h(e),u&&("object"==typeof u&&(u.current=e),"function"==typeof u&&u(e))}),[u]);var _;return e(c,p(b(p(b({p:0},m),{"aria-label":P,onClick:e=>{null==v||v.focus({preventScroll:!0}),null==y||y(e)},ref:w,disabled:g}),l(null!==(_=m["data-component"])&&void 0!==_?_:"icon-button",m)),{children:e(i,{disabled:g,focusable:!1,target:v,children:O})}))}));f.displayName="IconButton";export{f as default};
|
|
@@ -8,7 +8,7 @@ export interface LinkProps extends StyledLinkProps, React.AriaAttributes, TagPro
|
|
|
8
8
|
/** An icon to display next to the link. */
|
|
9
9
|
icon?: IconType;
|
|
10
10
|
/** Function called when the mouse is clicked. */
|
|
11
|
-
onClick?: (ev: React.MouseEvent<HTMLAnchorElement> | React.MouseEvent<HTMLButtonElement>
|
|
11
|
+
onClick?: (ev: React.MouseEvent<HTMLAnchorElement> | React.MouseEvent<HTMLButtonElement>) => void;
|
|
12
12
|
/** Function called when a key is pressed. */
|
|
13
13
|
onKeyDown?: (ev: React.KeyboardEvent<HTMLAnchorElement> | React.KeyboardEvent<HTMLButtonElement>) => void;
|
|
14
14
|
/** Function called when a mouse down event triggers. */
|
|
@@ -4,6 +4,8 @@ type ActionPopoverContextType = {
|
|
|
4
4
|
focusButton: () => void;
|
|
5
5
|
horizontalAlignment: Alignment;
|
|
6
6
|
submenuPosition: Alignment;
|
|
7
|
+
selectedSubmenuRef: HTMLUListElement | null;
|
|
8
|
+
setSelectedSubmenuRef: (ref: HTMLUListElement | null) => void;
|
|
7
9
|
};
|
|
8
10
|
export declare const ActionPopoverProvider: import("react").Provider<ActionPopoverContextType | null>;
|
|
9
11
|
export declare const useActionPopoverContext: () => ActionPopoverContextType;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),t=require("react"),n=require("invariant"),r=require("../action-popover.style.js"),o=require("../../../__internal__/utils/helpers/events/events.js"),u=require("../../../__internal__/utils/helpers/guid/index.js"),i=require("../__internal__/action-popover.context.js"),c=require("../action-popover-menu/action-popover-menu.component.js");function
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),t=require("react"),n=require("invariant"),r=require("../action-popover.style.js"),o=require("../../../__internal__/utils/helpers/events/events.js"),u=require("../../../__internal__/utils/helpers/guid/index.js"),i=require("../__internal__/action-popover.context.js"),c=require("../action-popover-menu/action-popover-menu.component.js");function l(e){return e&&e.__esModule?e:{default:e}}var a=l(t),s=l(n);function f(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function p(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter((function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable})))),r.forEach((function(t){f(e,t,n[t])}))}return e}function d(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t.push.apply(t,n)}return t}(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))})),e}function m(e){return Boolean(e&&e.current)}const v=n=>{var{children:l,icon:f,disabled:v=!1,onClick:b,submenu:y,focusItem:P,download:h,href:g,currentSubmenuPosition:O,setCurrentSubmenuPosition:j}=n,_=function(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},u=Object.keys(e);for(r=0;r<u.length;r++)n=u[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(e);for(r=0;r<u.length;r++)n=u[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(n,["children","icon","disabled","onClick","submenu","focusItem","download","href","currentSubmenuPosition","setCurrentSubmenuPosition"]);s.default(!a.default.isValidElement(y)||y.type===c.default,"ActionPopoverItem only accepts submenu of type `ActionPopoverMenu`");const{setOpenPopover:S,focusButton:x,submenuPosition:I,selectedSubmenuRef:w,setSelectedSubmenuRef:E}=i.useActionPopoverContext(),k=!!g,[D,M]=t.useState(void 0),[C]=t.useState(u.default()),[K,R]=t.useState(!1),[q,A]=t.useState(0),T=t.useRef(null),L=t.useRef(null),W=t.useRef(null),B=t.useRef(null),$=t.useCallback((()=>{const e=function(e,t,n,r){if(!e.current||!t.current)return r||n;const{left:o,right:u}=e.current.getBoundingClientRect(),{offsetWidth:i}=t.current,c=document.body.clientWidth;return"left"===n?o>=i?"left":"right":c>=u+i?"right":"left"}(L,T,I,O);return null==j||j(e),m(L)&&m(T)&&y}),[y,j,I,O]);t.useEffect((()=>{!v&&T.current&&R(w===T.current)}),[v,w]),t.useEffect((()=>{M((()=>{if(!L.current||!T.current)return;const{offsetWidth:e}=T.current,t="left"===O;return{left:t?-e:"auto",right:t?"auto":-e}}))}),[y,O]),t.useEffect((()=>{y&&$()}),[$,y]),t.useEffect((()=>{P&&setTimeout((()=>{var e;null===(e=L.current)||void 0===e||e.focus()}),0)}),[P]),t.useEffect((()=>function(){W.current&&clearTimeout(W.current),B.current&&clearTimeout(B.current)}),[]),t.useEffect((()=>{const e="resize";return window.addEventListener(e,$),function(){window.removeEventListener(e,$)}}),[$]);const V=t.useCallback((e=>{var t;e.stopPropagation(),v?(null===(t=L.current)||void 0===t||t.focus(),e.preventDefault()):(S(!1),x(),b&&b(e))}),[v,x,b,S]),z=t.useCallback((e=>{if(o.default.isSpaceKey(e))e.preventDefault(),e.stopPropagation();else if(v)o.default.isEnterKey(e)&&e.stopPropagation();else if(y){var t;if("left"===O){if(o.default.isLeftKey(e)||o.default.isEnterKey(e))E(T.current),R(!0),A(0),e.stopPropagation();else if(o.default.isRightKey(e)){var n;R(!1),null===(n=L.current)||void 0===n||n.focus(),e.stopPropagation()}}else(o.default.isRightKey(e)||o.default.isEnterKey(e))&&(R(!0),A(0),e.stopPropagation()),o.default.isLeftKey(e)&&(R(!1),null===(t=L.current)||void 0===t||t.focus(),e.stopPropagation());e.preventDefault()}else if(o.default.isEnterKey(e)){var r;k&&h&&(null===(r=L.current)||void 0===r||r.click()),e.preventDefault(),V(e)}}),[v,y,O,E,k,h,V]),F=d(p({},!v&&{onClick:e=>{var t;E(T.current),R(!0),null===(t=L.current)||void 0===t||t.focus(),e.preventDefault(),e.stopPropagation()}}),{"aria-haspopup":"true","aria-controls":`ActionPopoverMenu_${C}`,"aria-expanded":K}),N=p({},!v&&{onMouseEnter:e=>{W.current&&clearTimeout(W.current),A(-1),W.current=setTimeout((()=>{R(!0),E(T.current)}),150),e.stopPropagation()},onMouseLeave:e=>{B.current&&clearTimeout(B.current),B.current=setTimeout((()=>{R(!1)}),150),e.stopPropagation()}});return e.jsxs(r.StyledMenuItemWrapper,d(p({onKeyDown:z},y&&N),{children:[e.jsxs(r.StyledMenuItem,d(p(d(p({},_),{ref:L,onClick:V,type:"button",tabIndex:0,isDisabled:v}),v&&{"aria-disabled":!0},k&&{as:"a",download:h,href:g},y&&F),{children:[y&&m(L)&&e.jsx(r.SubMenuItemIcon,{"aria-hidden":!0,"data-element":"action-popover-menu-item-chevron","data-role":"chevron-icon",type:"left"===O?"chevron_left_thick":"chevron_right_thick"}),f&&e.jsx(r.MenuItemIcon,{"aria-hidden":!0,type:f,"data-element":"action-popover-menu-item-icon","data-role":"item-icon"}),e.jsx(r.StyledMenuItemInnerText,{"data-element":"action-popover-menu-item-inner-text",children:l})]})),a.default.isValidElement(y)?a.default.cloneElement(y,{parentID:`ActionPopoverItem_${C}`,menuID:`ActionPopoverMenu_${C}`,"data-element":"action-popover-submenu",isOpen:K,ref:T,style:D,setOpen:R,setFocusIndex:A,focusIndex:q}):null]}))};v.displayName="ActionPopoverItem",exports.ActionPopoverItem=v,exports.default=v;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),t=require("react"),r=require("invariant"),n=require("../../__internal__/utils/helpers/tags/tags.js"),o=require("./action-popover.style.js"),a=require("../../__internal__/utils/helpers/events/events.js"),i=require("../../__internal__/popover/popover.component.js"),l=require("../../__internal__/utils/helpers/guid/index.js"),u=require("../../hooks/__internal__/useLocale/useLocale.js"),s=require("./action-popover-menu/action-popover-menu.component.js"),c=require("./action-popover-item/action-popover-item.component.js");require("./action-popover-divider/action-popover-divider.component.js");var p=require("./__internal__/action-popover.context.js"),d=require("../../hooks/__internal__/useModalManager/useModalManager.js"),b=require("./__internal__/action-popover.utils.js"),f=require("../flat-table/__internal__/flat-table.context.js");function v(e){return e&&e.__esModule?e:{default:e}}var m=v(t),y=v(r);function _(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}const j=()=>{},O=()=>{},g=t.forwardRef(((r,v)=>{var{children:g,id:P,onOpen:h=j,onClose:x=O,rightAlignMenu:I,renderButton:q,placement:
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),t=require("react"),r=require("invariant"),n=require("../../__internal__/utils/helpers/tags/tags.js"),o=require("./action-popover.style.js"),a=require("../../__internal__/utils/helpers/events/events.js"),i=require("../../__internal__/popover/popover.component.js"),l=require("../../__internal__/utils/helpers/guid/index.js"),u=require("../../hooks/__internal__/useLocale/useLocale.js"),s=require("./action-popover-menu/action-popover-menu.component.js"),c=require("./action-popover-item/action-popover-item.component.js");require("./action-popover-divider/action-popover-divider.component.js");var p=require("./__internal__/action-popover.context.js"),d=require("../../hooks/__internal__/useModalManager/useModalManager.js"),b=require("./__internal__/action-popover.utils.js"),f=require("../flat-table/__internal__/flat-table.context.js");function v(e){return e&&e.__esModule?e:{default:e}}var m=v(t),y=v(r);function _(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}const j=()=>{},O=()=>{},g=t.forwardRef(((r,v)=>{var{children:g,id:P,onOpen:h=j,onClose:x=O,rightAlignMenu:I,renderButton:q,placement:S="bottom",horizontalAlignment:M="left",submenuPosition:w="left","aria-label":A,"aria-labelledby":k,"aria-describedby":D}=r,C=function(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}(r,["children","id","onOpen","onClose","rightAlignMenu","renderButton","placement","horizontalAlignment","submenuPosition","aria-label","aria-labelledby","aria-describedby"]);const B=u.default(),[E,L]=t.useState(!1),[F,K]=t.useState(0),[R]=t.useState(l.default()),$=t.useRef(null),z=t.useRef(null),{isInFlatTable:N}=t.useContext(f.default),[U,H]=t.useState(null),T=t.useMemo((()=>!m.default.Children.toArray(g).find((e=>!m.default.isValidElement(e)||e.type!==c.ActionPopoverItem&&e.type!==o.MenuItemDivider))),[g]),V=t.useMemo((()=>b.getItems(g)),[g]),G=b.findFirstFocusableItem(V),J=b.findLastFocusableItem(V);y.default(T,`ActionPopover only accepts children of type \`${c.ActionPopoverItem.displayName}\` and \`${o.MenuItemDivider.displayName}\`.`);const Q=t.useMemo((()=>"top"!==S||I?"top"===S&&I?"top-start":"bottom"===S&&I?"bottom-start":"bottom-end":"top-end"),[S,I]),W=t.useCallback((e=>{e&&!E&&h(),!e&&E&&x(),L(e)}),[E,h,x]),X=t.useCallback((()=>{var e;const t=null===(e=$.current)||void 0===e?void 0:e.querySelector("[data-element='action-popover-button']");null==t||t.focus()}),[]);t.useImperativeHandle(v,(()=>({focusButton(){X()}})),[X]);const Y=t.useCallback((e=>{e.stopPropagation();const t=!E;K(G),W(t),t||X()}),[E,G,W,X]),Z=t.useCallback((e=>{a.default.isSpaceKey(e)||a.default.isDownKey(e)||a.default.isEnterKey(e)?(e.preventDefault(),e.stopPropagation(),K(G),W(!0)):a.default.isUpKey(e)&&(e.preventDefault(),e.stopPropagation(),K(J),W(!0))}),[G,J,W]),ee=t.useCallback((e=>{a.default.isEscKey(e)&&(W(!1),X())}),[W,X]);d.default({open:E,closeModal:ee,modalRef:$}),t.useEffect((()=>{const e=({target:e})=>{var t,r;const n=null==z||null===(t=z.current)||void 0===t?void 0:t.contains(e),o=null==$||null===(r=$.current)||void 0===r?void 0:r.contains(e);n||o||W(!1)},t="click";return document.addEventListener(t,e,{capture:!0}),function(){document.removeEventListener(t,e,{capture:!0})}}),[W]);const te=P||`ActionPopoverButton_${R}`,re=`ActionPopoverMenu_${R}`;return e.jsxs(o.MenuButton,(ne=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter((function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable})))),n.forEach((function(t){_(e,t,r[t])}))}return e}({id:te,onKeyDown:Z,onClick:Y,isOpen:E,ref:$},C,n.default("action-popover-wrapper",C)),oe=null!=(oe={children:[(t=>{if(q){const e=q({tabIndex:E?-1:0,"data-element":"action-popover-button",ariaAttributes:{"aria-haspopup":"true","aria-label":A||B.actionPopover.ariaLabel(),"aria-labelledby":k,"aria-describedby":D,"aria-controls":t,"aria-expanded":`${E}`}}),r=b.checkChildrenForString(e);return q({tabIndex:E?-1:0,"data-element":"action-popover-button",ariaAttributes:{"aria-haspopup":"true","aria-label":r?void 0:A||B.actionPopover.ariaLabel(),"aria-labelledby":k,"aria-describedby":D,"aria-controls":t,"aria-expanded":`${E}`}})}return e.jsx(o.StyledButtonIcon,{role:"button","aria-haspopup":"true","aria-label":A||B.actionPopover.ariaLabel(),"aria-labelledby":k,"aria-describedby":D,"aria-controls":t,"aria-expanded":E,tabIndex:E?-1:0,"data-element":"action-popover-button",children:e.jsx(o.ButtonIcon,{type:"ellipsis_vertical"})})})(re),e.jsx(p.ActionPopoverProvider,{value:{setOpenPopover:W,focusButton:X,submenuPosition:w,horizontalAlignment:M,selectedSubmenuRef:U,setSelectedSubmenuRef:H},children:E&&e.jsx(i.default,{placement:Q,reference:$,disableBackgroundUI:N,children:e.jsx(s.default,{"data-component":"action-popover",ref:z,parentID:te,menuID:re,focusIndex:F,setFocusIndex:K,isOpen:E,setOpen:W,placement:S,children:g})})})]})?oe:{},Object.getOwnPropertyDescriptors?Object.defineProperties(ne,Object.getOwnPropertyDescriptors(oe)):function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t}(Object(oe)).forEach((function(e){Object.defineProperty(ne,e,Object.getOwnPropertyDescriptor(oe,e))})),ne));var ne,oe}));exports.ActionPopover=g,exports.default=g;
|
|
@@ -53,7 +53,7 @@ export interface ButtonProps extends SpaceProps, TagProps {
|
|
|
53
53
|
/** Specify a callback triggered on keyDown */
|
|
54
54
|
onKeyDown?: (ev: React.KeyboardEvent<HTMLButtonElement | HTMLAnchorElement>) => void;
|
|
55
55
|
/** onClick handler */
|
|
56
|
-
onClick?: (
|
|
56
|
+
onClick?: (ev: React.MouseEvent<HTMLAnchorElement> | React.MouseEvent<HTMLButtonElement>) => void;
|
|
57
57
|
/** Assigns a size to the button: "small" | "medium" | "large" */
|
|
58
58
|
size?: SizeOptions;
|
|
59
59
|
/** Second text child, renders under main text, only when size is "large" */
|
|
@@ -18,7 +18,7 @@ export interface IconButtonProps extends SpaceProps, TagProps {
|
|
|
18
18
|
/** Set the button to disabled */
|
|
19
19
|
disabled?: boolean;
|
|
20
20
|
/** Callback triggered on click */
|
|
21
|
-
onClick?: (e: React.
|
|
21
|
+
onClick?: (e: React.MouseEvent<HTMLButtonElement>) => void;
|
|
22
22
|
/** @private @internal @ignore */
|
|
23
23
|
"data-component"?: string;
|
|
24
24
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),t=require("react"),r=require("../../__internal__/utils/helpers/tags/tags.js"),n=require("
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),t=require("react"),r=require("../../__internal__/utils/helpers/tags/tags.js"),n=require("./icon-button.style.js"),o=require("../../__internal__/tooltip-provider/index.js"),l=require("../batch-selection/__internal__/batch-selection.context.js");function i(e){return e&&e.__esModule?e:{default:e}}function c(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function u(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter((function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable})))),n.forEach((function(t){c(e,t,r[t])}))}return e}function a(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t}(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))})),e}const s=i(t).default.forwardRef(((i,c)=>{var s,{"aria-label":b,onClick:f,children:p,disabled:d=!1}=i,y=function(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},l=Object.keys(e);for(n=0;n<l.length;n++)r=l[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(n=0;n<l.length;n++)r=l[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}(i,["aria-label","onClick","children","disabled"]);const{batchSelectionDisabled:O}=t.useContext(l.default),j=d||O,[g,v]=t.useState(),_=b||(null==g||null===(s=g.querySelector("[data-component='icon']"))||void 0===s?void 0:s.getAttribute("type"))||"",P=t.useCallback((e=>{v(e),c&&("object"==typeof c&&(c.current=e),"function"==typeof c&&c(e))}),[c]);var h;return e.jsx(n.default,a(u(a(u({p:0},y),{"aria-label":_,onClick:e=>{null==g||g.focus({preventScroll:!0}),null==f||f(e)},ref:P,disabled:j}),r.default(null!==(h=y["data-component"])&&void 0!==h?h:"icon-button",y)),{children:e.jsx(o.TooltipProvider,{disabled:j,focusable:!1,target:g,children:p})}))}));s.displayName="IconButton",exports.default=s;
|
|
@@ -8,7 +8,7 @@ export interface LinkProps extends StyledLinkProps, React.AriaAttributes, TagPro
|
|
|
8
8
|
/** An icon to display next to the link. */
|
|
9
9
|
icon?: IconType;
|
|
10
10
|
/** Function called when the mouse is clicked. */
|
|
11
|
-
onClick?: (ev: React.MouseEvent<HTMLAnchorElement> | React.MouseEvent<HTMLButtonElement>
|
|
11
|
+
onClick?: (ev: React.MouseEvent<HTMLAnchorElement> | React.MouseEvent<HTMLButtonElement>) => void;
|
|
12
12
|
/** Function called when a key is pressed. */
|
|
13
13
|
onKeyDown?: (ev: React.KeyboardEvent<HTMLAnchorElement> | React.KeyboardEvent<HTMLButtonElement>) => void;
|
|
14
14
|
/** Function called when a mouse down event triggers. */
|