@vibe/core 3.53.0-alpha-528cd.0 → 3.53.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/Accordion/index.d.ts +2 -2
- package/dist/components/AlertBanner/index.d.ts +4 -4
- package/dist/components/AttentionBox/index.d.ts +2 -2
- package/dist/components/Avatar/index.d.ts +1 -1
- package/dist/components/AvatarGroup/index.d.ts +1 -1
- package/dist/components/Badge/index.d.ts +1 -1
- package/dist/components/Box/index.d.ts +1 -1
- package/dist/components/BreadcrumbsBar/index.d.ts +4 -4
- package/dist/components/Button/index.d.ts +1 -1
- package/dist/components/ButtonGroup/index.d.ts +1 -1
- package/dist/components/Checkbox/index.d.ts +1 -1
- package/dist/components/Chips/index.d.ts +1 -1
- package/dist/components/Clickable/index.d.ts +1 -1
- package/dist/components/ColorPicker/index.d.ts +2 -2
- package/dist/components/Combobox/index.d.ts +1 -1
- package/dist/components/Counter/index.d.ts +1 -1
- package/dist/components/DatePicker/index.d.ts +1 -1
- package/dist/components/Dialog/Dialog.d.ts +4 -0
- package/dist/components/Dialog/index.d.ts +1 -1
- package/dist/components/DialogContentContainer/index.d.ts +1 -1
- package/dist/components/Divider/index.d.ts +1 -1
- package/dist/components/EditableHeading/index.d.ts +1 -1
- package/dist/components/EditableText/index.d.ts +1 -1
- package/dist/components/ExpandCollapse/index.d.ts +1 -1
- package/dist/components/FieldLabel/FieldLabel.d.ts +4 -0
- package/dist/components/Flex/index.d.ts +1 -1
- package/dist/components/FormattedNumber/index.d.ts +1 -1
- package/dist/components/Heading/index.d.ts +1 -1
- package/dist/components/HiddenText/index.d.ts +1 -1
- package/dist/components/Icon/index.d.ts +2 -2
- package/dist/components/IconButton/index.d.ts +1 -1
- package/dist/components/Label/index.d.ts +1 -1
- package/dist/components/LayerProvider/index.d.ts +1 -1
- package/dist/components/LegacyModal/index.d.ts +5 -5
- package/dist/components/Link/index.d.ts +1 -1
- package/dist/components/List/index.d.ts +1 -1
- package/dist/components/ListItem/index.d.ts +1 -1
- package/dist/components/ListItemAvatar/index.d.ts +1 -1
- package/dist/components/ListItemIcon/index.d.ts +1 -1
- package/dist/components/ListTitle/index.d.ts +1 -1
- package/dist/components/Loader/index.d.ts +1 -1
- package/dist/components/Menu/index.d.ts +6 -6
- package/dist/components/MenuButton/index.d.ts +1 -1
- package/dist/components/Modal/Modal/index.d.ts +1 -1
- package/dist/components/Modal/ModalContent/index.d.ts +1 -1
- package/dist/components/Modal/ModalHeader/index.d.ts +1 -1
- package/dist/components/Modal/ModalMedia/index.d.ts +1 -1
- package/dist/components/Modal/footers/index.d.ts +2 -2
- package/dist/components/Modal/layouts/index.d.ts +3 -3
- package/dist/components/MultiStepIndicator/index.d.ts +1 -1
- package/dist/components/ProgressBars/index.d.ts +1 -1
- package/dist/components/RadioButton/index.d.ts +1 -1
- package/dist/components/Refable/Refable.d.ts +4 -0
- package/dist/components/Skeleton/index.d.ts +1 -1
- package/dist/components/Slider/index.d.ts +1 -1
- package/dist/components/SplitButton/index.d.ts +2 -2
- package/dist/components/Steps/index.d.ts +1 -1
- package/dist/components/Table/index.d.ts +7 -7
- package/dist/components/Tabs/index.d.ts +5 -5
- package/dist/components/Text/index.d.ts +1 -1
- package/dist/components/TextField/index.d.ts +1 -1
- package/dist/components/TextWithHighlight/index.d.ts +1 -1
- package/dist/components/ThemeProvider/index.d.ts +1 -1
- package/dist/components/Tipseen/index.d.ts +5 -5
- package/dist/components/Toast/Toast.d.ts +2 -2
- package/dist/components/Toast/index.d.ts +3 -3
- package/dist/components/Toggle/index.d.ts +1 -1
- package/dist/components/Tooltip/index.d.ts +1 -1
- package/dist/components/VirtualizedGrid/index.d.ts +1 -1
- package/dist/components/VirtualizedList/VirtualizedList.types.d.ts +1 -1
- package/dist/components/VirtualizedList/index.d.ts +1 -1
- package/dist/metadata.json +147 -115
- package/dist/mocked_classnames/components/Accordion/index.d.ts +2 -2
- package/dist/mocked_classnames/components/AlertBanner/index.d.ts +4 -4
- package/dist/mocked_classnames/components/AttentionBox/index.d.ts +2 -2
- package/dist/mocked_classnames/components/Avatar/index.d.ts +1 -1
- package/dist/mocked_classnames/components/AvatarGroup/index.d.ts +1 -1
- package/dist/mocked_classnames/components/Badge/index.d.ts +1 -1
- package/dist/mocked_classnames/components/Box/index.d.ts +1 -1
- package/dist/mocked_classnames/components/BreadcrumbsBar/index.d.ts +4 -4
- package/dist/mocked_classnames/components/Button/index.d.ts +1 -1
- package/dist/mocked_classnames/components/ButtonGroup/index.d.ts +1 -1
- package/dist/mocked_classnames/components/Checkbox/index.d.ts +1 -1
- package/dist/mocked_classnames/components/Chips/index.d.ts +1 -1
- package/dist/mocked_classnames/components/Clickable/index.d.ts +1 -1
- package/dist/mocked_classnames/components/ColorPicker/index.d.ts +2 -2
- package/dist/mocked_classnames/components/Combobox/index.d.ts +1 -1
- package/dist/mocked_classnames/components/Counter/index.d.ts +1 -1
- package/dist/mocked_classnames/components/DatePicker/index.d.ts +1 -1
- package/dist/mocked_classnames/components/Dialog/Dialog.d.ts +4 -0
- package/dist/mocked_classnames/components/Dialog/index.d.ts +1 -1
- package/dist/mocked_classnames/components/DialogContentContainer/index.d.ts +1 -1
- package/dist/mocked_classnames/components/Divider/index.d.ts +1 -1
- package/dist/mocked_classnames/components/EditableHeading/index.d.ts +1 -1
- package/dist/mocked_classnames/components/EditableText/index.d.ts +1 -1
- package/dist/mocked_classnames/components/ExpandCollapse/index.d.ts +1 -1
- package/dist/mocked_classnames/components/FieldLabel/FieldLabel.d.ts +4 -0
- package/dist/mocked_classnames/components/Flex/index.d.ts +1 -1
- package/dist/mocked_classnames/components/FormattedNumber/index.d.ts +1 -1
- package/dist/mocked_classnames/components/Heading/index.d.ts +1 -1
- package/dist/mocked_classnames/components/HiddenText/index.d.ts +1 -1
- package/dist/mocked_classnames/components/Icon/index.d.ts +2 -2
- package/dist/mocked_classnames/components/IconButton/index.d.ts +1 -1
- package/dist/mocked_classnames/components/Label/index.d.ts +1 -1
- package/dist/mocked_classnames/components/LayerProvider/index.d.ts +1 -1
- package/dist/mocked_classnames/components/LegacyModal/index.d.ts +5 -5
- package/dist/mocked_classnames/components/Link/index.d.ts +1 -1
- package/dist/mocked_classnames/components/List/index.d.ts +1 -1
- package/dist/mocked_classnames/components/ListItem/index.d.ts +1 -1
- package/dist/mocked_classnames/components/ListItemAvatar/index.d.ts +1 -1
- package/dist/mocked_classnames/components/ListItemIcon/index.d.ts +1 -1
- package/dist/mocked_classnames/components/ListTitle/index.d.ts +1 -1
- package/dist/mocked_classnames/components/Loader/index.d.ts +1 -1
- package/dist/mocked_classnames/components/Menu/index.d.ts +6 -6
- package/dist/mocked_classnames/components/MenuButton/index.d.ts +1 -1
- package/dist/mocked_classnames/components/Modal/Modal/index.d.ts +1 -1
- package/dist/mocked_classnames/components/Modal/ModalContent/index.d.ts +1 -1
- package/dist/mocked_classnames/components/Modal/ModalHeader/index.d.ts +1 -1
- package/dist/mocked_classnames/components/Modal/ModalMedia/index.d.ts +1 -1
- package/dist/mocked_classnames/components/Modal/footers/index.d.ts +2 -2
- package/dist/mocked_classnames/components/Modal/layouts/index.d.ts +3 -3
- package/dist/mocked_classnames/components/MultiStepIndicator/index.d.ts +1 -1
- package/dist/mocked_classnames/components/ProgressBars/index.d.ts +1 -1
- package/dist/mocked_classnames/components/RadioButton/index.d.ts +1 -1
- package/dist/mocked_classnames/components/Refable/Refable.d.ts +4 -0
- package/dist/mocked_classnames/components/Skeleton/index.d.ts +1 -1
- package/dist/mocked_classnames/components/Slider/index.d.ts +1 -1
- package/dist/mocked_classnames/components/SplitButton/index.d.ts +2 -2
- package/dist/mocked_classnames/components/Steps/index.d.ts +1 -1
- package/dist/mocked_classnames/components/Table/index.d.ts +7 -7
- package/dist/mocked_classnames/components/Tabs/index.d.ts +5 -5
- package/dist/mocked_classnames/components/Text/index.d.ts +1 -1
- package/dist/mocked_classnames/components/TextField/index.d.ts +1 -1
- package/dist/mocked_classnames/components/TextWithHighlight/index.d.ts +1 -1
- package/dist/mocked_classnames/components/ThemeProvider/index.d.ts +1 -1
- package/dist/mocked_classnames/components/Tipseen/index.d.ts +5 -5
- package/dist/mocked_classnames/components/Toast/Toast.d.ts +2 -2
- package/dist/mocked_classnames/components/Toast/index.d.ts +3 -3
- package/dist/mocked_classnames/components/Toggle/index.d.ts +1 -1
- package/dist/mocked_classnames/components/Tooltip/index.d.ts +1 -1
- package/dist/mocked_classnames/components/VirtualizedGrid/index.d.ts +1 -1
- package/dist/mocked_classnames/components/VirtualizedList/VirtualizedList.types.d.ts +1 -1
- package/dist/mocked_classnames/components/VirtualizedList/index.d.ts +1 -1
- package/dist/mocked_classnames/src/components/AlertBanner/AlertBannerButton/AlertBannerButton.js +1 -1
- package/dist/mocked_classnames/src/components/AlertBanner/AlertBannerButton/AlertBannerButton.js.map +1 -1
- package/dist/mocked_classnames/src/components/Button/Button.js +1 -1
- package/dist/mocked_classnames/src/components/Button/Button.js.map +1 -1
- package/dist/mocked_classnames/src/components/Counter/Counter.js +1 -1
- package/dist/mocked_classnames/src/components/Counter/Counter.js.map +1 -1
- package/dist/mocked_classnames/src/components/Dialog/Dialog.js +1 -1
- package/dist/mocked_classnames/src/components/Dialog/Dialog.js.map +1 -1
- package/dist/mocked_classnames/src/components/Dialog/DialogContent/DialogContent.js +1 -1
- package/dist/mocked_classnames/src/components/Dialog/DialogContent/DialogContent.js.map +1 -1
- package/dist/mocked_classnames/src/components/FieldLabel/FieldLabel.js +1 -1
- package/dist/mocked_classnames/src/components/FieldLabel/FieldLabel.js.map +1 -1
- package/dist/mocked_classnames/src/components/Refable/Refable.js +1 -1
- package/dist/mocked_classnames/src/components/Refable/Refable.js.map +1 -1
- package/dist/mocked_classnames/src/components/SplitButton/SplitButton.js +1 -1
- package/dist/mocked_classnames/src/components/SplitButton/SplitButton.js.map +1 -1
- package/dist/mocked_classnames/src/components/Toast/Toast.js +1 -1
- package/dist/mocked_classnames/src/components/Toast/Toast.js.map +1 -1
- package/dist/mocked_classnames/src/components/Toast/ToastButton/ToastButton.js +1 -1
- package/dist/mocked_classnames/src/components/Toast/ToastButton/ToastButton.js.map +1 -1
- package/dist/mocked_classnames/src/tests/interactionsTests.js +1 -1
- package/dist/mocked_classnames/src/tests/interactionsTests.js.map +1 -1
- package/dist/mocked_classnames/tests/interactions-utils.d.ts +1 -1
- package/dist/mocked_classnames/types/index.d.ts +2 -2
- package/dist/src/components/AlertBanner/AlertBannerButton/AlertBannerButton.js +1 -1
- package/dist/src/components/AlertBanner/AlertBannerButton/AlertBannerButton.js.map +1 -1
- package/dist/src/components/Button/Button.js +1 -1
- package/dist/src/components/Button/Button.js.map +1 -1
- package/dist/src/components/Counter/Counter.js +1 -1
- package/dist/src/components/Counter/Counter.js.map +1 -1
- package/dist/src/components/Dialog/Dialog.js +1 -1
- package/dist/src/components/Dialog/Dialog.js.map +1 -1
- package/dist/src/components/Dialog/DialogContent/DialogContent.js +1 -1
- package/dist/src/components/Dialog/DialogContent/DialogContent.js.map +1 -1
- package/dist/src/components/FieldLabel/FieldLabel.js +1 -1
- package/dist/src/components/FieldLabel/FieldLabel.js.map +1 -1
- package/dist/src/components/Refable/Refable.js +1 -1
- package/dist/src/components/Refable/Refable.js.map +1 -1
- package/dist/src/components/SplitButton/SplitButton.js +1 -1
- package/dist/src/components/SplitButton/SplitButton.js.map +1 -1
- package/dist/src/components/Toast/Toast.js +1 -1
- package/dist/src/components/Toast/Toast.js.map +1 -1
- package/dist/src/components/Toast/ToastButton/ToastButton.js +1 -1
- package/dist/src/components/Toast/ToastButton/ToastButton.js.map +1 -1
- package/dist/src/tests/interactionsTests.js +1 -1
- package/dist/src/tests/interactionsTests.js.map +1 -1
- package/dist/tests/interactions-utils.d.ts +1 -1
- package/dist/types/index.d.ts +2 -2
- package/package.json +34 -28
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{slicedToArray as o,defineProperty as e,toConsumableArray as t}from"../../../_virtual/_rollupPluginBabelHelpers.js";import{__rest as i}from"../../../_virtual/_tslib.js";import{camelCase as n}from"lodash-es";import{getStyle as a}from"../../helpers/typesciptCssModulesHelper.js";import{getTestId as r,ComponentDefaultTestId as s}from"../../tests/testIds.js";import l from"classnames";import d,{useState as c,useRef as m,useCallback as u,useMemo as
|
|
1
|
+
import{slicedToArray as o,defineProperty as e,toConsumableArray as t}from"../../../_virtual/_rollupPluginBabelHelpers.js";import{__rest as i}from"../../../_virtual/_tslib.js";import{camelCase as n}from"lodash-es";import{getStyle as a}from"../../helpers/typesciptCssModulesHelper.js";import{getTestId as r,ComponentDefaultTestId as s}from"../../tests/testIds.js";import l from"classnames";import d,{useState as c,useRef as m,useCallback as u,useMemo as g}from"react";import{SplitButtonSecondaryContentPosition as p,ENTER_KEYS as f,DEFAULT_DIALOG_SHOW_TRIGGER as D,DEFAULT_DIALOG_HIDE_TRIGGER as v,DIALOG_MOVE_BY as y,SECONDARY_BUTTON_ARIA_LABEL as C,SECONDARY_BUTTON_WRAPPER_CLASSNAME as T}from"./SplitButtonConstants.js";import{withStaticPropsWithoutForwardRef as S}from"../../types/withStaticProps.js";import"../../utils/colors-vars-map.js";import{HideShowEvent as N,AnimationType as b}from"../Dialog/DialogConstants.js";import{NOOP as h}from"../../utils/function-utils.js";import{isInsideClass as k}from"../../utils/dom-utils.js";import P from"../../hooks/useKeyEvent/index.js";import j from"../../hooks/useEventListener/index.js";import I from"../Button/Button.js";import B from"../Dialog/Dialog.js";import O from"../DialogContentContainer/DialogContentContainer.js";import E from"./SplitButton.module.scss.js";import{ComponentVibeId as _}from"../../tests/constants.js";import z from"../../../icons/dist/react/DropdownChevronDown.js";var w=function(p){var S=p.secondaryDialogContent,w=p.onSecondaryDialogDidShow,L=void 0===w?h:w,A=p.onSecondaryDialogDidHide,x=void 0===A?h:A,R=p.shouldCloseOnClickInsideDialog,H=p.zIndex,U=void 0===H?null:H,M=p.secondaryDialogClassName,F=p.secondaryDialogPosition,K=void 0===F?"bottom-start":F,W=p.dialogContainerSelector,Y=p.dialogPaddingSize,V=void 0===Y?"medium":Y,X=p.disabled,q=p.loading,G=p.kind,J=p.color,Q=p.className,Z=p.leftIcon,$=p.rightIcon,oo=p.onClick,eo=p.children,to=p.marginLeft,io=p.marginRight,no=p.active,ao=p.id,ro=p["data-testid"],so=i(p,["secondaryDialogContent","onSecondaryDialogDidShow","onSecondaryDialogDidHide","shouldCloseOnClickInsideDialog","zIndex","secondaryDialogClassName","secondaryDialogPosition","dialogContainerSelector","dialogPaddingSize","disabled","success","loading","kind","color","className","leftIcon","rightIcon","onClick","children","marginLeft","marginRight","active","id","data-testid"]),lo=c(!1),co=o(lo,2),mo=co[0],uo=co[1],go=c(!1),po=o(go,2),fo=po[0],Do=po[1],vo=c(!1),yo=o(vo,2),Co=yo[0],To=yo[1],So=m(null),No=m(null),bo=u((function(){return Do(!0)}),[Do]),ho=u((function(){return Do(!1)}),[Do]),ko=u((function(o){return!X&&!k(o.target,T)}),[X]),Po=u((function(o){ko(o)&&To(!0)}),[To,ko]),jo=u((function(){return To(!1)}),[To]),Io=u((function(o){ko(o)&&To(!0)}),[To,ko]),Bo=u((function(){uo(!0),L()}),[uo,L]),Oo=u((function(o,e){uo(!1),x(),"esckey"===e&&No.current.focus()}),[uo,x]);j({eventName:"mouseenter",callback:bo,ref:So}),j({eventName:"mouseleave",callback:ho,ref:So}),j({eventName:"mousedown",callback:Po,ref:So}),j({eventName:"mouseup",callback:jo,ref:So}),j({eventName:"transitionend",callback:jo,ref:So}),P({keys:f,ref:So,callback:Io});var Eo=g((function(){return l(E.button,a(E,n("kind-"+G)),a(E,n("color-"+J)),e(e(e(e(e({},E.mainActive,no),E.active,Co),E.splitContentOpen,mo),E.hovered,fo),E.disabled,X),Q)}),[Q,G,J,no,Co,mo,fo,X]),_o=g((function(){return X?[]:D}),[X]),zo=g((function(){return R?[].concat(t(v),[N.CONTENT_CLICK]):v}),[R]),wo=u((function(){var o="function"==typeof S?S():S;return d.createElement(O,{type:O.types.POPOVER,size:V},o)}),[S,V]),Lo=g((function(){return"bottom"===K?"":"bottom-start"===K?"bottom":"top"}),[K]);return d.createElement("div",{className:Eo,ref:So,id:ao,"data-testid":ro||r(s.SPLIT_BUTTON,ao),"data-vibe":_.SPLIT_BUTTON},d.createElement(I,Object.assign({},so,{preventClickAnimation:!0,leftIcon:Z,rightIcon:$,rightFlat:!0,color:J,kind:G,active:no,onClick:oo,className:E.mainButton,marginLeft:to,onFocus:bo,onBlur:ho,disabled:X,loading:q,"data-testid":r(s.SPLIT_BUTTON_PRIMARY_BUTTON,ao)}),eo),d.createElement("div",{className:E.secondaryButtonWrapper},d.createElement(B,{wrapperClassName:M,zIndex:U,content:wo,position:K,containerSelector:W,startingEdge:Lo,animationType:b.EXPAND,moveBy:y,onDialogDidShow:Bo,onDialogDidHide:Oo,showTrigger:_o,hideTrigger:zo},d.createElement(I,Object.assign({},so,{ref:No,preventClickAnimation:!0,leftFlat:!0,noSidePadding:!0,color:J,kind:G,className:E.secondaryButton,active:mo,marginRight:io,onFocus:bo,onBlur:ho,disabled:X,ariaLabel:C,ariaHasPopup:!0,ariaExpanded:mo,"data-testid":r(s.SPLIT_BUTTON_SECONDARY_BUTTON,ao)}),d.createElement("div",{className:E.secondaryButtonIconWrapper},d.createElement(z,{"aria-hidden":"true"}))))))};w.defaultProps=Object.assign(Object.assign({},I.defaultProps),{onSecondaryDialogDidShow:h,onSecondaryDialogDidHide:h,zIndex:null,secondaryDialogClassName:"",secondaryDialogPosition:p.BOTTOM_START,dialogPaddingSize:O.sizes.MEDIUM});var L=S(w,{secondaryPositions:p,secondaryDialogPositions:p,sizes:I.sizes,colors:I.colors,kinds:I.kinds,inputTags:I.inputTags,dialogPaddingSizes:O.sizes});export{L as default};
|
|
2
2
|
//# sourceMappingURL=SplitButton.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SplitButton.js","sources":["../../../../../src/components/SplitButton/SplitButton.tsx"],"sourcesContent":["/* eslint-disable react/jsx-props-no-spreading */\nimport { camelCase } from \"lodash-es\";\nimport { getStyle } from \"../../helpers/typesciptCssModulesHelper\";\nimport { ComponentDefaultTestId, getTestId } from \"../../tests/test-ids-utils\";\nimport cx from \"classnames\";\n// Libraries import\nimport React, { ReactElement, useCallback, useMemo, useRef, useState } from \"react\";\n// Constants import\nimport {\n DEFAULT_DIALOG_HIDE_TRIGGER,\n DEFAULT_DIALOG_SHOW_TRIGGER,\n DIALOG_MOVE_BY,\n ENTER_KEYS,\n SECONDARY_BUTTON_ARIA_LABEL,\n SECONDARY_BUTTON_WRAPPER_CLASSNAME,\n SplitButtonSecondaryContentPosition,\n SplitButtonSecondaryContentPositionType\n} from \"./SplitButtonConstants\";\nimport { withStaticPropsWithoutForwardRef } from \"../../types\";\nimport { AnimationType, DialogPosition, HideShowEvent } from \"../Dialog/DialogConstants\";\n// Utils import\nimport { NOOP } from \"../../utils/function-utils\";\nimport { isInsideClass } from \"../../utils/dom-utils\";\n// Hooks import\nimport useKeyEvent from \"../../hooks/useKeyEvent\";\nimport useEventListener from \"../../hooks/useEventListener\";\n// Components import\nimport Button, { ButtonProps } from \"../Button/Button\";\nimport Dialog, { DialogEvent } from \"../Dialog/Dialog\";\nimport { DropdownChevronDown } from \"@vibe/icons\";\nimport DialogContentContainer from \"../DialogContentContainer/DialogContentContainer\";\nimport styles from \"./SplitButton.module.scss\";\nimport { DialogSize, DialogTriggerEvent } from \"../Dialog\";\nimport { ComponentVibeId } from \"../../tests/constants\";\n\nexport interface SplitButtonProps extends ButtonProps {\n /**\n * The element or renderer that is displayed inside the dialog opened by clicking the secondary button.\n */\n secondaryDialogContent?: ReactElement | (() => string | ReactElement);\n /**\n * Callback fired when the secondary dialog is shown.\n */\n onSecondaryDialogDidShow?: () => void;\n /**\n * Callback fired when the secondary dialog is hidden.\n */\n onSecondaryDialogDidHide?: () => void;\n /**\n * The z-index applied to the secondary dialog.\n */\n zIndex?: number;\n /**\n * Class name applied to the wrapper of the secondary dialog.\n */\n secondaryDialogClassName?: string;\n /**\n * The position of the secondary dialog.\n */\n secondaryDialogPosition?: SplitButtonSecondaryContentPositionType;\n /**\n * The padding size inside the secondary dialog.\n */\n dialogPaddingSize?: DialogSize;\n /**\n * The CSS selector of the container where the dialog should be rendered.\n */\n dialogContainerSelector?: string;\n /**\n * If true, clicking inside the dialog will close it.\n */\n shouldCloseOnClickInsideDialog?: boolean;\n}\n\nconst SplitButton = ({\n secondaryDialogContent,\n onSecondaryDialogDidShow = NOOP,\n onSecondaryDialogDidHide = NOOP,\n shouldCloseOnClickInsideDialog,\n zIndex = null,\n secondaryDialogClassName = \"\",\n secondaryDialogPosition = \"bottom-start\",\n dialogContainerSelector,\n dialogPaddingSize = \"medium\",\n disabled,\n // success mode not working right now, need to fix it in different pr\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n success,\n loading,\n kind = \"primary\",\n color = \"primary\",\n className,\n leftIcon,\n rightIcon,\n onClick,\n children,\n marginLeft,\n marginRight,\n active,\n id,\n \"data-testid\": dataTestId,\n ...buttonProps\n}: SplitButtonProps) => {\n // State //\n const [isDialogOpen, setDialogOpen] = useState(false);\n const [isHovered, setIsHover] = useState(false);\n const [isActive, setIsActive] = useState(false);\n\n // Refs //\n const ref = useRef(null);\n const secondaryButtonRef = useRef(null);\n\n // Callbacks //\n const setHovered = useCallback(() => setIsHover(true), [setIsHover]);\n const setNotHovered = useCallback(() => setIsHover(false), [setIsHover]);\n\n const shouldSetActive = useCallback(\n (e: React.KeyboardEvent<HTMLElement>) => {\n if (disabled) return false;\n return !isInsideClass(e.target as HTMLElement, SECONDARY_BUTTON_WRAPPER_CLASSNAME);\n },\n [disabled]\n );\n\n const setActive = useCallback(\n (e: React.KeyboardEvent<HTMLElement>) => {\n if (!shouldSetActive(e)) return;\n setIsActive(true);\n },\n [setIsActive, shouldSetActive]\n );\n const setNotActive = useCallback(() => setIsActive(false), [setIsActive]);\n const setActiveOnEnter = useCallback(\n (e: React.KeyboardEvent<HTMLElement>) => {\n if (!shouldSetActive(e)) return;\n setIsActive(true);\n },\n [setIsActive, shouldSetActive]\n );\n\n const showDialog = useCallback(() => {\n setDialogOpen(true);\n onSecondaryDialogDidShow();\n }, [setDialogOpen, onSecondaryDialogDidShow]);\n\n const hideDialog = useCallback(\n (_: DialogEvent, eventName: DialogTriggerEvent) => {\n setDialogOpen(false);\n onSecondaryDialogDidHide();\n if (eventName === \"esckey\") {\n secondaryButtonRef.current.focus();\n }\n },\n [setDialogOpen, onSecondaryDialogDidHide]\n );\n\n // Event listeners //\n\n // Used to set both buttons as hovered no matter what button was hovered\n useEventListener({ eventName: \"mouseenter\", callback: setHovered, ref });\n useEventListener({ eventName: \"mouseleave\", callback: setNotHovered, ref });\n\n useEventListener({ eventName: \"mousedown\", callback: setActive, ref });\n useEventListener({ eventName: \"mouseup\", callback: setNotActive, ref });\n\n // Used to finish active transition if clicked on enter\n useEventListener({ eventName: \"transitionend\", callback: setNotActive, ref });\n\n // Key events\n useKeyEvent({ keys: ENTER_KEYS, ref, callback: setActiveOnEnter });\n\n const classNames = useMemo(\n () =>\n cx(\n styles.button,\n getStyle(styles, camelCase(\"kind-\" + kind)),\n getStyle(styles, camelCase(\"color-\" + color)),\n {\n [styles.mainActive]: active,\n [styles.active]: isActive,\n [styles.splitContentOpen]: isDialogOpen,\n [styles.hovered]: isHovered,\n [styles.disabled]: disabled\n },\n className\n ),\n [className, kind, color, active, isActive, isDialogOpen, isHovered, disabled]\n );\n\n const dialogShowTrigger = useMemo(() => (disabled ? [] : DEFAULT_DIALOG_SHOW_TRIGGER), [disabled]);\n\n const dialogHideTrigger = useMemo(() => {\n if (shouldCloseOnClickInsideDialog) return [...DEFAULT_DIALOG_HIDE_TRIGGER, HideShowEvent.CONTENT_CLICK];\n return DEFAULT_DIALOG_HIDE_TRIGGER;\n }, [shouldCloseOnClickInsideDialog]);\n\n const actionsContent = useCallback(() => {\n const content = typeof secondaryDialogContent === \"function\" ? secondaryDialogContent() : secondaryDialogContent;\n return (\n <DialogContentContainer type={DialogContentContainer.types.POPOVER} size={dialogPaddingSize}>\n {content}\n </DialogContentContainer>\n );\n }, [secondaryDialogContent, dialogPaddingSize]);\n\n const animationEdgePosition = useMemo(() => {\n if (secondaryDialogPosition === \"bottom\") {\n return \"\";\n }\n if (secondaryDialogPosition === \"bottom-start\") {\n return \"bottom\";\n }\n\n return \"top\";\n }, [secondaryDialogPosition]);\n\n return (\n <div\n className={classNames}\n ref={ref}\n id={id}\n data-testid={dataTestId || getTestId(ComponentDefaultTestId.SPLIT_BUTTON, id)}\n data-vibe={ComponentVibeId.SPLIT_BUTTON}\n >\n <Button\n {\n ...buttonProps /* We are enriching button with other props so we must use spreading */\n }\n preventClickAnimation\n leftIcon={leftIcon}\n rightIcon={rightIcon}\n rightFlat\n color={color}\n kind={kind}\n active={active}\n onClick={onClick}\n className={styles.mainButton}\n marginLeft={marginLeft}\n onFocus={setHovered}\n onBlur={setNotHovered}\n disabled={disabled}\n loading={loading}\n data-testid={getTestId(ComponentDefaultTestId.SPLIT_BUTTON_PRIMARY_BUTTON, id)}\n >\n {children}\n </Button>\n <div className={styles.secondaryButtonWrapper}>\n <Dialog\n wrapperClassName={secondaryDialogClassName}\n zIndex={zIndex}\n content={actionsContent}\n position={secondaryDialogPosition as DialogPosition}\n containerSelector={dialogContainerSelector}\n startingEdge={animationEdgePosition}\n animationType={AnimationType.EXPAND}\n moveBy={DIALOG_MOVE_BY}\n onDialogDidShow={showDialog}\n onDialogDidHide={hideDialog}\n showTrigger={dialogShowTrigger}\n hideTrigger={dialogHideTrigger}\n >\n <Button\n {...buttonProps}\n ref={secondaryButtonRef}\n preventClickAnimation\n leftFlat\n noSidePadding\n color={color}\n kind={kind}\n className={styles.secondaryButton}\n active={isDialogOpen}\n marginRight={marginRight}\n onFocus={setHovered}\n onBlur={setNotHovered}\n disabled={disabled}\n ariaLabel={SECONDARY_BUTTON_ARIA_LABEL}\n ariaHasPopup\n ariaExpanded={isDialogOpen}\n data-testid={getTestId(ComponentDefaultTestId.SPLIT_BUTTON_SECONDARY_BUTTON, id)}\n >\n <div className={styles.secondaryButtonIconWrapper}>\n <DropdownChevronDown aria-hidden=\"true\" />\n </div>\n </Button>\n </Dialog>\n </div>\n </div>\n );\n};\n\ninterface SplitButtonStaticProps {\n secondaryPositions: typeof SplitButtonSecondaryContentPosition;\n secondaryDialogPositions: typeof SplitButtonSecondaryContentPosition;\n sizes: typeof Button.sizes;\n colors: typeof Button.colors;\n kinds: typeof Button.kinds;\n inputTags: typeof Button.inputTags;\n dialogPaddingSizes: typeof DialogContentContainer.sizes;\n}\n\nexport default withStaticPropsWithoutForwardRef<SplitButtonProps, SplitButtonStaticProps>(SplitButton, {\n secondaryPositions: SplitButtonSecondaryContentPosition,\n secondaryDialogPositions: SplitButtonSecondaryContentPosition,\n sizes: Button.sizes,\n colors: Button.colors,\n kinds: Button.kinds,\n inputTags: Button.inputTags,\n dialogPaddingSizes: DialogContentContainer.sizes\n});\n"],"names":["withStaticPropsWithoutForwardRef","_a","secondaryDialogContent","_a$onSecondaryDialogD","onSecondaryDialogDidShow","NOOP","_a$onSecondaryDialogD2","onSecondaryDialogDidHide","shouldCloseOnClickInsideDialog","_a$zIndex","zIndex","_a$secondaryDialogCla","secondaryDialogClassName","_a$secondaryDialogPos","secondaryDialogPosition","dialogContainerSelector","_a$dialogPaddingSize","dialogPaddingSize","disabled","loading","_a$kind","kind","_a$color","color","className","leftIcon","rightIcon","onClick","children","marginLeft","marginRight","active","id","dataTestId","buttonProps","__rest","_useState","useState","_useState2","_slicedToArray","isDialogOpen","setDialogOpen","_useState3","_useState4","isHovered","setIsHover","_useState5","_useState6","isActive","setIsActive","ref","useRef","secondaryButtonRef","setHovered","useCallback","setNotHovered","shouldSetActive","e","isInsideClass","target","SECONDARY_BUTTON_WRAPPER_CLASSNAME","setActive","setNotActive","setActiveOnEnter","showDialog","hideDialog","_","eventName","current","focus","useEventListener","callback","useKeyEvent","keys","ENTER_KEYS","classNames","useMemo","cx","styles","button","getStyle","camelCase","_defineProperty","mainActive","splitContentOpen","hovered","dialogShowTrigger","DEFAULT_DIALOG_SHOW_TRIGGER","dialogHideTrigger","concat","_toConsumableArray","DEFAULT_DIALOG_HIDE_TRIGGER","HideShowEvent","CONTENT_CLICK","actionsContent","content","React","createElement","DialogContentContainer","type","types","POPOVER","size","animationEdgePosition","getTestId","ComponentDefaultTestId","SPLIT_BUTTON","ComponentVibeId","Button","Object","assign","preventClickAnimation","rightFlat","mainButton","onFocus","onBlur","SPLIT_BUTTON_PRIMARY_BUTTON","secondaryButtonWrapper","Dialog","wrapperClassName","position","containerSelector","startingEdge","animationType","AnimationType","EXPAND","moveBy","DIALOG_MOVE_BY","onDialogDidShow","onDialogDidHide","showTrigger","hideTrigger","leftFlat","noSidePadding","secondaryButton","ariaLabel","SECONDARY_BUTTON_ARIA_LABEL","ariaHasPopup","ariaExpanded","SPLIT_BUTTON_SECONDARY_BUTTON","secondaryButtonIconWrapper","DropdownChevronDown","secondaryPositions","SplitButtonSecondaryContentPosition","secondaryDialogPositions","sizes","colors","kinds","inputTags","dialogPaddingSizes"],"mappings":"65CA0EA,IAkOeA,EAAAA,GAlOK,SAACC,GAAA,IACnBC,EAyByBD,EAzBzBC,uBAAsBC,EAyBGF,EAxBzBG,yBAAAA,OAA2BC,IAAHF,EAAGE,EAAIF,EAAAG,EAwBNL,EAvBzBM,yBAAAA,OAA2BF,IAAHC,EAAGD,EAAIC,EAC/BE,EAsByBP,EAtBzBO,+BAA8BC,EAsBLR,EArBzBS,OAAAA,OAAS,IAAHD,EAAG,KAAIA,EAAAE,EAqBYV,EApBzBW,yBAAAA,OAA2B,IAAHD,EAAG,GAAEA,EAAAE,EAoBJZ,EAnBzBa,wBAAAA,OAA0B,IAAHD,EAAG,eAAcA,EACxCE,EAkByBd,EAlBzBc,wBAAuBC,EAkBEf,EAjBzBgB,kBAAAA,OAAoB,IAAHD,EAAG,SAAQA,EAC5BE,EAgByBjB,EAhBzBiB,SAIAC,EAYyBlB,EAZzBkB,QAAOC,EAYkBnB,EAXzBoB,KAAAA,OAAO,IAAHD,EAAG,UAASA,EAAAE,EAWSrB,EAVzBsB,MAAAA,OAAQ,IAAHD,EAAG,UAASA,EACjBE,GASyBvB,EATzBuB,UACAC,GAQyBxB,EARzBwB,SACAC,GAOyBzB,EAPzByB,UACAC,GAMyB1B,EANzB0B,QACAC,GAKyB3B,EALzB2B,SACAC,GAIyB5B,EAJzB4B,WACAC,GAGyB7B,EAHzB6B,YACAC,GAEyB9B,EAFzB8B,OACAC,GACyB/B,EADzB+B,GACeC,GAAUhC,EAAzB,eACGiC,GAAWC,EAAAlC,EA3BK,4XA8BnBmC,GAAsCC,GAAS,GAAMC,GAAAC,EAAAH,GAAA,GAA9CI,GAAYF,GAAA,GAAEG,GAAaH,GAAA,GAClCI,GAAgCL,GAAS,GAAMM,GAAAJ,EAAAG,GAAA,GAAxCE,GAASD,GAAA,GAAEE,GAAUF,GAAA,GAC5BG,GAAgCT,GAAS,GAAMU,GAAAR,EAAAO,GAAA,GAAxCE,GAAQD,GAAA,GAAEE,GAAWF,GAAA,GAGtBG,GAAMC,EAAO,MACbC,GAAqBD,EAAO,MAG5BE,GAAaC,GAAY,WAAA,OAAMT,IAAW,KAAO,CAACA,KAClDU,GAAgBD,GAAY,WAAA,OAAMT,IAAW,KAAQ,CAACA,KAEtDW,GAAkBF,GACtB,SAACG,GACC,OAAIvC,IACIwC,EAAcD,EAAEE,OAAuBC,EACjD,GACA,CAAC1C,IAGG2C,GAAYP,GAChB,SAACG,GACMD,GAAgBC,IACrBR,IAAY,EACd,GACA,CAACA,GAAaO,KAEVM,GAAeR,GAAY,WAAA,OAAML,IAAY,KAAQ,CAACA,KACtDc,GAAmBT,GACvB,SAACG,GACMD,GAAgBC,IACrBR,IAAY,EACd,GACA,CAACA,GAAaO,KAGVQ,GAAaV,GAAY,WAC7Bb,IAAc,GACdrC,GACF,GAAG,CAACqC,GAAerC,IAEb6D,GAAaX,GACjB,SAACY,EAAgBC,GACf1B,IAAc,GACdlC,IACkB,WAAd4D,GACFf,GAAmBgB,QAAQC,OAE/B,GACA,CAAC5B,GAAelC,IAMlB+D,EAAiB,CAAEH,UAAW,aAAcI,SAAUlB,GAAYH,IAAAA,KAClEoB,EAAiB,CAAEH,UAAW,aAAcI,SAAUhB,GAAeL,IAAAA,KAErEoB,EAAiB,CAAEH,UAAW,YAAaI,SAAUV,GAAWX,IAAAA,KAChEoB,EAAiB,CAAEH,UAAW,UAAWI,SAAUT,GAAcZ,IAAAA,KAGjEoB,EAAiB,CAAEH,UAAW,gBAAiBI,SAAUT,GAAcZ,IAAAA,KAGvEsB,EAAY,CAAEC,KAAMC,EAAYxB,IAAAA,GAAKqB,SAAUR,KAE/C,IAAMY,GAAaC,GACjB,WAAA,OACEC,EACEC,EAAOC,OACPC,EAASF,EAAQG,EAAU,QAAU5D,IACrC2D,EAASF,EAAQG,EAAU,SAAW1D,IAAO2D,EAAAA,EAAAA,EAAAA,EAAAA,EAE1CJ,CAAAA,EAAAA,EAAOK,WAAapD,IACpB+C,EAAO/C,OAASiB,IAChB8B,EAAOM,iBAAmB5C,IAC1BsC,EAAOO,QAAUzC,IACjBkC,EAAO5D,SAAWA,GAErBM,GACD,GACH,CAACA,GAAWH,EAAME,EAAOQ,GAAQiB,GAAUR,GAAcI,GAAW1B,IAGhEoE,GAAoBV,GAAQ,WAAA,OAAO1D,EAAW,GAAKqE,CAA2B,GAAG,CAACrE,IAElFsE,GAAoBZ,GAAQ,WAChC,OAAIpE,EAAgC,GAAAiF,OAAAC,EAAWC,GAA2B,CAAEC,EAAcC,gBACnFF,CACT,GAAG,CAACnF,IAEEsF,GAAiBxC,GAAY,WACjC,IAAMyC,EAA4C,mBAA3B7F,EAAwCA,IAA2BA,EAC1F,OACE8F,EAACC,cAAAC,GAAuBC,KAAMD,EAAuBE,MAAMC,QAASC,KAAMrF,GACvE8E,EAGP,GAAG,CAAC7F,EAAwBe,IAEtBsF,GAAwB3B,GAAQ,WACpC,MAAgC,WAA5B9D,EACK,GAEuB,iBAA5BA,EACK,SAGF,KACT,GAAG,CAACA,IAEJ,OACEkF,EACEC,cAAA,MAAA,CAAAzE,UAAWmD,GACXzB,IAAKA,GACLlB,GAAIA,GACS,cAAAC,IAAcuE,EAAUC,EAAuBC,aAAc1E,IAAG,YAClE2E,EAAgBD,cAE3BV,EAAAC,cAACW,EAAMC,OAAAC,OAAA,CAAA,EAEA5E,GAEL,CAAA6E,uBACA,EAAAtF,SAAUA,GACVC,UAAWA,GACXsF,WAAS,EACTzF,MAAOA,EACPF,KAAMA,EACNU,OAAQA,GACRJ,QAASA,GACTH,UAAWsD,EAAOmC,WAClBpF,WAAYA,GACZqF,QAAS7D,GACT8D,OAAQ5D,GACRrC,SAAUA,EACVC,QAASA,gBACIqF,EAAUC,EAAuBW,4BAA6BpF,MAE1EJ,IAEHoE,EAAAC,cAAA,MAAA,CAAKzE,UAAWsD,EAAOuC,wBACrBrB,EAACC,cAAAqB,GACCC,iBAAkB3G,EAClBF,OAAQA,EACRqF,QAASD,GACT0B,SAAU1G,EACV2G,kBAAmB1G,EACnB2G,aAAcnB,GACdoB,cAAeC,EAAcC,OAC7BC,OAAQC,EACRC,gBAAiBhE,GACjBiE,gBAAiBhE,GACjBiE,YAAa5C,GACb6C,YAAa3C,IAEbQ,EAAAC,cAACW,EAAMC,OAAAC,OAAA,CAAA,EACD5E,GAAW,CACfgB,IAAKE,GACL2D,uBAAqB,EACrBqB,UAAQ,EACRC,eACA,EAAA9G,MAAOA,EACPF,KAAMA,EACNG,UAAWsD,EAAOwD,gBAClBvG,OAAQS,GACRV,YAAaA,GACboF,QAAS7D,GACT8D,OAAQ5D,GACRrC,SAAUA,EACVqH,UAAWC,EACXC,cACA,EAAAC,aAAclG,GAAY,cACbgE,EAAUC,EAAuBkC,8BAA+B3G,MAE7EgE,EAAAC,cAAA,MAAA,CAAKzE,UAAWsD,EAAO8D,4BACrB5C,EAACC,cAAA4C,EAAgC,CAAA,cAAA,aAO/C,GAYuG,CACrGC,mBAAoBC,EACpBC,yBAA0BD,EAC1BE,MAAOrC,EAAOqC,MACdC,OAAQtC,EAAOsC,OACfC,MAAOvC,EAAOuC,MACdC,UAAWxC,EAAOwC,UAClBC,mBAAoBnD,EAAuB+C"}
|
|
1
|
+
{"version":3,"file":"SplitButton.js","sources":["../../../../../src/components/SplitButton/SplitButton.tsx"],"sourcesContent":["/* eslint-disable react/jsx-props-no-spreading */\nimport { camelCase } from \"lodash-es\";\nimport { getStyle } from \"../../helpers/typesciptCssModulesHelper\";\nimport { ComponentDefaultTestId, getTestId } from \"../../tests/test-ids-utils\";\nimport cx from \"classnames\";\n// Libraries import\nimport React, { ReactElement, useCallback, useMemo, useRef, useState } from \"react\";\n// Constants import\nimport {\n DEFAULT_DIALOG_HIDE_TRIGGER,\n DEFAULT_DIALOG_SHOW_TRIGGER,\n DIALOG_MOVE_BY,\n ENTER_KEYS,\n SECONDARY_BUTTON_ARIA_LABEL,\n SECONDARY_BUTTON_WRAPPER_CLASSNAME,\n SplitButtonSecondaryContentPosition,\n SplitButtonSecondaryContentPositionType\n} from \"./SplitButtonConstants\";\nimport { withStaticPropsWithoutForwardRef } from \"../../types\";\nimport { AnimationType, DialogPosition, HideShowEvent } from \"../Dialog/DialogConstants\";\n// Utils import\nimport { NOOP } from \"../../utils/function-utils\";\nimport { isInsideClass } from \"../../utils/dom-utils\";\n// Hooks import\nimport useKeyEvent from \"../../hooks/useKeyEvent\";\nimport useEventListener from \"../../hooks/useEventListener\";\n// Components import\nimport Button, { ButtonProps } from \"../Button/Button\";\nimport Dialog, { DialogEvent } from \"../Dialog/Dialog\";\nimport { DropdownChevronDown } from \"@vibe/icons\";\nimport DialogContentContainer from \"../DialogContentContainer/DialogContentContainer\";\nimport styles from \"./SplitButton.module.scss\";\nimport { DialogSize, DialogTriggerEvent } from \"../Dialog\";\nimport { ComponentVibeId } from \"../../tests/constants\";\n\nexport interface SplitButtonProps extends ButtonProps {\n /**\n * The element or renderer that is displayed inside the dialog opened by clicking the secondary button.\n */\n secondaryDialogContent?: ReactElement | (() => string | ReactElement);\n /**\n * Callback fired when the secondary dialog is shown.\n */\n onSecondaryDialogDidShow?: () => void;\n /**\n * Callback fired when the secondary dialog is hidden.\n */\n onSecondaryDialogDidHide?: () => void;\n /**\n * The z-index applied to the secondary dialog.\n */\n zIndex?: number;\n /**\n * Class name applied to the wrapper of the secondary dialog.\n */\n secondaryDialogClassName?: string;\n /**\n * The position of the secondary dialog.\n */\n secondaryDialogPosition?: SplitButtonSecondaryContentPositionType;\n /**\n * The padding size inside the secondary dialog.\n */\n dialogPaddingSize?: DialogSize;\n /**\n * The CSS selector of the container where the dialog should be rendered.\n */\n dialogContainerSelector?: string;\n /**\n * If true, clicking inside the dialog will close it.\n */\n shouldCloseOnClickInsideDialog?: boolean;\n}\n\nconst SplitButton = ({\n secondaryDialogContent,\n onSecondaryDialogDidShow = NOOP,\n onSecondaryDialogDidHide = NOOP,\n shouldCloseOnClickInsideDialog,\n zIndex = null,\n secondaryDialogClassName,\n secondaryDialogPosition = \"bottom-start\",\n dialogContainerSelector,\n dialogPaddingSize = \"medium\",\n disabled,\n // success mode not working right now, need to fix it in different pr\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n success,\n loading,\n kind,\n color,\n className,\n leftIcon,\n rightIcon,\n onClick,\n children,\n marginLeft,\n marginRight,\n active,\n id,\n \"data-testid\": dataTestId,\n ...buttonProps\n}: SplitButtonProps) => {\n // State //\n const [isDialogOpen, setDialogOpen] = useState(false);\n const [isHovered, setIsHover] = useState(false);\n const [isActive, setIsActive] = useState(false);\n\n // Refs //\n const ref = useRef(null);\n const secondaryButtonRef = useRef(null);\n\n // Callbacks //\n const setHovered = useCallback(() => setIsHover(true), [setIsHover]);\n const setNotHovered = useCallback(() => setIsHover(false), [setIsHover]);\n\n const shouldSetActive = useCallback(\n (e: React.KeyboardEvent<HTMLElement>) => {\n if (disabled) return false;\n return !isInsideClass(e.target as HTMLElement, SECONDARY_BUTTON_WRAPPER_CLASSNAME);\n },\n [disabled]\n );\n\n const setActive = useCallback(\n (e: React.KeyboardEvent<HTMLElement>) => {\n if (!shouldSetActive(e)) return;\n setIsActive(true);\n },\n [setIsActive, shouldSetActive]\n );\n const setNotActive = useCallback(() => setIsActive(false), [setIsActive]);\n const setActiveOnEnter = useCallback(\n (e: React.KeyboardEvent<HTMLElement>) => {\n if (!shouldSetActive(e)) return;\n setIsActive(true);\n },\n [setIsActive, shouldSetActive]\n );\n\n const showDialog = useCallback(() => {\n setDialogOpen(true);\n onSecondaryDialogDidShow();\n }, [setDialogOpen, onSecondaryDialogDidShow]);\n\n const hideDialog = useCallback(\n (_: DialogEvent, eventName: DialogTriggerEvent) => {\n setDialogOpen(false);\n onSecondaryDialogDidHide();\n if (eventName === \"esckey\") {\n secondaryButtonRef.current.focus();\n }\n },\n [setDialogOpen, onSecondaryDialogDidHide]\n );\n\n // Event listeners //\n\n // Used to set both buttons as hovered no matter what button was hovered\n useEventListener({ eventName: \"mouseenter\", callback: setHovered, ref });\n useEventListener({ eventName: \"mouseleave\", callback: setNotHovered, ref });\n\n useEventListener({ eventName: \"mousedown\", callback: setActive, ref });\n useEventListener({ eventName: \"mouseup\", callback: setNotActive, ref });\n\n // Used to finish active transition if clicked on enter\n useEventListener({ eventName: \"transitionend\", callback: setNotActive, ref });\n\n // Key events\n useKeyEvent({ keys: ENTER_KEYS, ref, callback: setActiveOnEnter });\n\n const classNames = useMemo(\n () =>\n cx(\n styles.button,\n getStyle(styles, camelCase(\"kind-\" + kind)),\n getStyle(styles, camelCase(\"color-\" + color)),\n {\n [styles.mainActive]: active,\n [styles.active]: isActive,\n [styles.splitContentOpen]: isDialogOpen,\n [styles.hovered]: isHovered,\n [styles.disabled]: disabled\n },\n className\n ),\n [className, kind, color, active, isActive, isDialogOpen, isHovered, disabled]\n );\n\n const dialogShowTrigger = useMemo(() => (disabled ? [] : DEFAULT_DIALOG_SHOW_TRIGGER), [disabled]);\n\n const dialogHideTrigger = useMemo(() => {\n if (shouldCloseOnClickInsideDialog) return [...DEFAULT_DIALOG_HIDE_TRIGGER, HideShowEvent.CONTENT_CLICK];\n return DEFAULT_DIALOG_HIDE_TRIGGER;\n }, [shouldCloseOnClickInsideDialog]);\n\n const actionsContent = useCallback(() => {\n const content = typeof secondaryDialogContent === \"function\" ? secondaryDialogContent() : secondaryDialogContent;\n return (\n <DialogContentContainer type={DialogContentContainer.types.POPOVER} size={dialogPaddingSize}>\n {content}\n </DialogContentContainer>\n );\n }, [secondaryDialogContent, dialogPaddingSize]);\n\n const animationEdgePosition = useMemo(() => {\n if (secondaryDialogPosition === \"bottom\") {\n return \"\";\n }\n if (secondaryDialogPosition === \"bottom-start\") {\n return \"bottom\";\n }\n\n return \"top\";\n }, [secondaryDialogPosition]);\n\n return (\n <div\n className={classNames}\n ref={ref}\n id={id}\n data-testid={dataTestId || getTestId(ComponentDefaultTestId.SPLIT_BUTTON, id)}\n data-vibe={ComponentVibeId.SPLIT_BUTTON}\n >\n <Button\n {\n ...buttonProps /* We are enriching button with other props so we must use spreading */\n }\n preventClickAnimation\n leftIcon={leftIcon}\n rightIcon={rightIcon}\n rightFlat\n color={color}\n kind={kind}\n active={active}\n onClick={onClick}\n className={styles.mainButton}\n marginLeft={marginLeft}\n onFocus={setHovered}\n onBlur={setNotHovered}\n disabled={disabled}\n loading={loading}\n data-testid={getTestId(ComponentDefaultTestId.SPLIT_BUTTON_PRIMARY_BUTTON, id)}\n >\n {children}\n </Button>\n <div className={styles.secondaryButtonWrapper}>\n <Dialog\n wrapperClassName={secondaryDialogClassName}\n zIndex={zIndex}\n content={actionsContent}\n position={secondaryDialogPosition as DialogPosition}\n containerSelector={dialogContainerSelector}\n startingEdge={animationEdgePosition}\n animationType={AnimationType.EXPAND}\n moveBy={DIALOG_MOVE_BY}\n onDialogDidShow={showDialog}\n onDialogDidHide={hideDialog}\n showTrigger={dialogShowTrigger}\n hideTrigger={dialogHideTrigger}\n >\n <Button\n {...buttonProps}\n ref={secondaryButtonRef}\n preventClickAnimation\n leftFlat\n noSidePadding\n color={color}\n kind={kind}\n className={styles.secondaryButton}\n active={isDialogOpen}\n marginRight={marginRight}\n onFocus={setHovered}\n onBlur={setNotHovered}\n disabled={disabled}\n ariaLabel={SECONDARY_BUTTON_ARIA_LABEL}\n ariaHasPopup\n ariaExpanded={isDialogOpen}\n data-testid={getTestId(ComponentDefaultTestId.SPLIT_BUTTON_SECONDARY_BUTTON, id)}\n >\n <div className={styles.secondaryButtonIconWrapper}>\n <DropdownChevronDown aria-hidden=\"true\" />\n </div>\n </Button>\n </Dialog>\n </div>\n </div>\n );\n};\n\nSplitButton.defaultProps = {\n ...Button.defaultProps,\n onSecondaryDialogDidShow: NOOP,\n onSecondaryDialogDidHide: NOOP,\n zIndex: null,\n secondaryDialogClassName: \"\",\n secondaryDialogPosition: SplitButtonSecondaryContentPosition.BOTTOM_START,\n dialogPaddingSize: DialogContentContainer.sizes.MEDIUM\n};\n\ninterface SplitButtonStaticProps {\n secondaryPositions: typeof SplitButtonSecondaryContentPosition;\n secondaryDialogPositions: typeof SplitButtonSecondaryContentPosition;\n sizes: typeof Button.sizes;\n colors: typeof Button.colors;\n kinds: typeof Button.kinds;\n inputTags: typeof Button.inputTags;\n dialogPaddingSizes: typeof DialogContentContainer.sizes;\n}\n\nexport default withStaticPropsWithoutForwardRef<SplitButtonProps, SplitButtonStaticProps>(SplitButton, {\n secondaryPositions: SplitButtonSecondaryContentPosition,\n secondaryDialogPositions: SplitButtonSecondaryContentPosition,\n sizes: Button.sizes,\n colors: Button.colors,\n kinds: Button.kinds,\n inputTags: Button.inputTags,\n dialogPaddingSizes: DialogContentContainer.sizes\n});\n"],"names":["SplitButton","_a","secondaryDialogContent","_a$onSecondaryDialogD","onSecondaryDialogDidShow","NOOP","_a$onSecondaryDialogD2","onSecondaryDialogDidHide","shouldCloseOnClickInsideDialog","_a$zIndex","zIndex","secondaryDialogClassName","_a$secondaryDialogPos","secondaryDialogPosition","dialogContainerSelector","_a$dialogPaddingSize","dialogPaddingSize","disabled","loading","kind","color","className","leftIcon","rightIcon","onClick","children","marginLeft","marginRight","active","id","dataTestId","buttonProps","__rest","_useState","useState","_useState2","_slicedToArray","isDialogOpen","setDialogOpen","_useState3","_useState4","isHovered","setIsHover","_useState5","_useState6","isActive","setIsActive","ref","useRef","secondaryButtonRef","setHovered","useCallback","setNotHovered","shouldSetActive","e","isInsideClass","target","SECONDARY_BUTTON_WRAPPER_CLASSNAME","setActive","setNotActive","setActiveOnEnter","showDialog","hideDialog","_","eventName","current","focus","useEventListener","callback","useKeyEvent","keys","ENTER_KEYS","classNames","useMemo","cx","styles","button","getStyle","camelCase","_defineProperty","mainActive","splitContentOpen","hovered","dialogShowTrigger","DEFAULT_DIALOG_SHOW_TRIGGER","dialogHideTrigger","concat","_toConsumableArray","DEFAULT_DIALOG_HIDE_TRIGGER","HideShowEvent","CONTENT_CLICK","actionsContent","content","React","createElement","DialogContentContainer","type","types","POPOVER","size","animationEdgePosition","getTestId","ComponentDefaultTestId","SPLIT_BUTTON","ComponentVibeId","Button","Object","assign","preventClickAnimation","rightFlat","mainButton","onFocus","onBlur","SPLIT_BUTTON_PRIMARY_BUTTON","secondaryButtonWrapper","Dialog","wrapperClassName","position","containerSelector","startingEdge","animationType","AnimationType","EXPAND","moveBy","DIALOG_MOVE_BY","onDialogDidShow","onDialogDidHide","showTrigger","hideTrigger","leftFlat","noSidePadding","secondaryButton","ariaLabel","SECONDARY_BUTTON_ARIA_LABEL","ariaHasPopup","ariaExpanded","SPLIT_BUTTON_SECONDARY_BUTTON","secondaryButtonIconWrapper","DropdownChevronDown","defaultProps","SplitButtonSecondaryContentPosition","BOTTOM_START","sizes","MEDIUM","withStaticPropsWithoutForwardRef","secondaryPositions","secondaryDialogPositions","colors","kinds","inputTags","dialogPaddingSizes"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{defineProperty as t}from"../../../_virtual/_rollupPluginBabelHelpers.js";import{__rest as e}from"../../../_virtual/_tslib.js";import{camelCase as o}from"lodash-es";import{getTestId as
|
|
1
|
+
import{defineProperty as t}from"../../../_virtual/_rollupPluginBabelHelpers.js";import{__rest as e}from"../../../_virtual/_tslib.js";import{camelCase as o}from"lodash-es";import{getTestId as r,ComponentDefaultTestId as i}from"../../tests/testIds.js";import n from"classnames";import s,{useRef as a,useMemo as l,useCallback as c,useEffect as m}from"react";import{CSSTransition as u}from"react-transition-group";import p from"../Text/Text.js";import d from"../Loader/Loader.js";import f from"../Flex/Flex.js";import v from"./ToastLink/ToastLink.js";import T from"./ToastButton/ToastButton.js";import{ToastType as j,ToastActionType as y}from"./ToastConstants.js";import{getIcon as h}from"./ToastHelpers.js";import{NOOP as g}from"../../utils/function-utils.js";import{getStyle as x}from"../../helpers/typesciptCssModulesHelper.js";import{withStaticPropsWithoutForwardRef as E}from"../../types/withStaticProps.js";import"../../utils/colors-vars-map.js";import N from"./Toast.module.scss.js";import C from"../IconButton/IconButton.js";import b from"../../hooks/usePrevious/index.js";import k from"../../../icons/dist/react/CloseSmall.js";var B=E((function(j){var y=j.open,E=void 0!==y&&y,B=j.loading,L=void 0!==B&&B,O=j.autoHideDuration,A=void 0===O?null:O,w=j.type,S=void 0===w?"normal":w,_=j.icon,H=j.hideIcon,I=void 0!==H&&H,P=j.action,z=j.actions,F=j.children,D=j.closeable,M=void 0===D||D,U=j.onClose,q=void 0===U?g:U,G=j.className,J=j.id,K=j.closeButtonAriaLabel,Q=void 0===K?"Close":K,R=j["data-testid"],V=a(null),W=b(null==z?void 0:z.length),X=l((function(){return z?z.filter((function(t){return"link"===t.type})).map((function(t){var o=e(t,["type"]);return s.createElement(v,Object.assign({key:o.href,className:N.actionLink},o))})):null}),[z]),Y=l((function(){return void 0!==W&&(null==z?void 0:z.length)!==W}),[z,W]),Z=l((function(){return z?z.filter((function(t){return"button"===t.type})).map((function(o,r){var i=o.content,a=e(o,["type","content"]);return s.createElement(T,Object.assign({key:"alert-button-".concat(r),className:n(N.actionButton,t({},N.withTransition,Y))},a),i)})):null}),[z,Y]),$=l((function(){return n(N.toast,x(N,o("type-"+S)),G)}),[S,G]),tt=c((function(){q&&q()}),[q]),et=a(),ot=c((function(t){q&&null!=t&&(clearTimeout(et.current),et.current=setTimeout((function(){tt()}),t))}),[tt,q]);m((function(){return E&&A>0&&ot(A),function(){clearTimeout(et.current)}}),[E,A,ot]);var rt=!I&&h(S,_),it=c((function(t){var e=t.style.width;t.style.width="auto";var o=getComputedStyle(t).width;t.style.width=e,t.style.width=o}),[]);return m((function(){V.current&&it(V.current)}),[F,it]),s.createElement(u,{in:E,classNames:{enterActive:N.enterActive,exitActive:N.exitActive},timeout:400,unmountOnExit:!0},s.createElement(p,{id:J,"data-testid":R||r(i.TOAST,J),type:"text2",element:"div",color:"fixedLight",className:$,role:"alert","aria-live":"polite",ref:V},rt&&s.createElement("div",{className:n(N.icon)},rt),s.createElement(f,{align:"center",gap:"large",className:N.content},s.createElement(f,{gap:"medium","data-testid":r(i.TOAST_CONTENT),className:N.textContent},s.createElement("span",null,F),X),(Z||P)&&(Z||P),L&&s.createElement(d,{size:"xs"})),M&&s.createElement(C,{className:n(N.closeButton),onClick:tt,size:"small",kind:"tertiary",color:"fixed-light",ariaLabel:Q,"data-testid":r(i.TOAST_CLOSE_BUTTON),icon:k,hideTooltip:!0})))}),{types:j,actionTypes:y});export{B as default};
|
|
2
2
|
//# sourceMappingURL=Toast.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Toast.js","sources":["../../../../../src/components/Toast/Toast.tsx"],"sourcesContent":["import { camelCase } from \"lodash-es\";\nimport { ComponentDefaultTestId, getTestId } from \"../../tests/test-ids-utils\";\nimport cx from \"classnames\";\nimport React, { ReactElement, useCallback, useEffect, useMemo, useRef, type JSX } from \"react\";\nimport { CSSTransition } from \"react-transition-group\";\nimport { IconSubComponentProps } from \"../Icon/Icon\";\nimport Text from \"../Text/Text\";\nimport Loader from \"../Loader/Loader\";\nimport Flex from \"../Flex/Flex\";\nimport { CloseSmall } from \"@vibe/icons\";\nimport ToastLink from \"./ToastLink/ToastLink\";\nimport ToastButton from \"./ToastButton/ToastButton\";\nimport { ToastActionType as ToastActionTypeEnum, ToastType as ToastTypeEnum } from \"./ToastConstants\";\nimport { ToastType, ToastAction } from \"./Toast.types\";\nimport { getIcon } from \"./ToastHelpers\";\nimport { NOOP } from \"../../utils/function-utils\";\nimport { getStyle } from \"../../helpers/typesciptCssModulesHelper\";\nimport { VibeComponentProps, withStaticPropsWithoutForwardRef } from \"../../types\";\nimport styles from \"./Toast.module.scss\";\nimport IconButton from \"../IconButton/IconButton\";\nimport usePrevious from \"../../hooks/usePrevious\";\n\nexport interface ToastProps extends VibeComponentProps {\n /**\n * The actions available in the toast.\n */\n actions?: ToastAction[];\n /**\n * If true, the toast is open (visible).\n */\n open?: boolean;\n /**\n * If true, displays a loading indicator inside the toast.\n */\n loading?: boolean;\n /**\n * The type of toast.\n */\n type?: ToastType;\n /**\n * The icon displayed in the toast.\n */\n icon?: string | React.FC<IconSubComponentProps> | null;\n /**\n * If true, hides the toast icon.\n */\n hideIcon?: boolean;\n /**\n * The action element displayed in the toast.\n */\n action?: JSX.Element;\n /**\n * If false, hides the close button.\n */\n closeable?: boolean;\n /**\n * Callback fired when the toast is closed.\n */\n onClose?: () => void;\n /**\n * The number of milliseconds before the toast automatically closes.\n * (0 or null disables auto-close behavior).\n */\n autoHideDuration?: number;\n /**\n * The content displayed inside the toast.\n */\n children?: ReactElement<any> | ReactElement<any>[] | string;\n /**\n * The aria-label for the close button.\n */\n closeButtonAriaLabel?: string;\n}\n\nconst Toast = ({\n open = false,\n loading = false,\n autoHideDuration = null,\n type = \"normal\",\n icon,\n hideIcon = false,\n action: deprecatedAction,\n actions,\n children,\n closeable = true,\n onClose = NOOP,\n className,\n id,\n closeButtonAriaLabel = \"Close\",\n \"data-testid\": dataTestId\n}: ToastProps) => {\n const ref = useRef(null);\n const nodeRef = useRef<HTMLDivElement>(null);\n const prevActions = usePrevious(actions?.length);\n const toastLinks = useMemo(() => {\n return actions\n ? actions\n .filter(action => action.type === \"link\")\n .map(({ type: _type, ...otherProps }) => (\n <ToastLink key={otherProps.href} className={styles.actionLink} {...otherProps} />\n ))\n : null;\n }, [actions]);\n\n const shouldShowButtonTransition = useMemo(() => {\n return prevActions !== undefined && actions?.length !== prevActions;\n }, [actions, prevActions]);\n\n const toastButtons: JSX.Element[] | null = useMemo(() => {\n return actions\n ? actions\n .filter(action => action.type === \"button\")\n .map(({ type: _type, content, ...otherProps }, index) => (\n <ToastButton\n key={`alert-button-${index}`}\n className={cx(styles.actionButton, { [styles.withTransition]: shouldShowButtonTransition })}\n {...otherProps}\n >\n {content}\n </ToastButton>\n ))\n : null;\n }, [actions, shouldShowButtonTransition]);\n\n const classNames = useMemo(\n () => cx(styles.toast, getStyle(styles, camelCase(\"type-\" + type)), className),\n [type, className]\n );\n\n const handleClose = useCallback(() => {\n if (onClose) {\n onClose();\n }\n }, [onClose]);\n\n /* Timer */\n const timerAutoHide = useRef<NodeJS.Timeout>(undefined);\n const setAutoHideTimer = useCallback(\n (duration: number) => {\n if (!onClose || duration == null) {\n return;\n }\n\n clearTimeout(timerAutoHide.current);\n timerAutoHide.current = setTimeout(() => {\n handleClose();\n }, duration);\n },\n [handleClose, onClose]\n );\n\n useEffect(() => {\n if (open && autoHideDuration > 0) {\n setAutoHideTimer(autoHideDuration);\n }\n\n return () => {\n clearTimeout(timerAutoHide.current);\n };\n }, [open, autoHideDuration, setAutoHideTimer]);\n\n const iconElement = !hideIcon && getIcon(type, icon);\n\n // https://n12v.com/css-transition-to-from-auto/\n const recalculateElementWidth = useCallback((element: HTMLElement) => {\n const prevWidth = element.style.width;\n element.style.width = \"auto\";\n const endWidth = getComputedStyle(element).width;\n element.style.width = prevWidth;\n element.offsetWidth; // force repaint\n element.style.width = endWidth;\n }, []);\n\n useEffect(() => {\n if (ref.current) {\n recalculateElementWidth(ref.current);\n }\n }, [children, recalculateElementWidth]);\n\n return (\n <CSSTransition\n in={open}\n nodeRef={nodeRef}\n classNames={{ enterActive: styles.enterActive, exitActive: styles.exitActive }}\n timeout={400}\n unmountOnExit\n >\n <Text\n ref={nodeRef}\n id={id}\n data-testid={dataTestId || getTestId(ComponentDefaultTestId.TOAST, id)}\n type=\"text2\"\n element=\"div\"\n color=\"fixedLight\"\n className={classNames}\n role=\"alert\"\n aria-live=\"polite\"\n >\n {iconElement && <div className={cx(styles.icon)}>{iconElement}</div>}\n <Flex align=\"center\" gap=\"large\" className={styles.content}>\n <Flex\n gap=\"medium\"\n data-testid={getTestId(ComponentDefaultTestId.TOAST_CONTENT)}\n className={styles.textContent}\n >\n <span>{children}</span>\n {toastLinks}\n </Flex>\n {(toastButtons || deprecatedAction) && (toastButtons || deprecatedAction)}\n {loading && <Loader size=\"xs\" />}\n </Flex>\n {closeable && (\n <IconButton\n className={cx(styles.closeButton)}\n onClick={handleClose}\n size=\"small\"\n kind=\"tertiary\"\n color=\"fixed-light\"\n ariaLabel={closeButtonAriaLabel}\n data-testid={getTestId(ComponentDefaultTestId.TOAST_CLOSE_BUTTON)}\n icon={CloseSmall}\n hideTooltip\n />\n )}\n </Text>\n </CSSTransition>\n );\n};\n\ninterface ToastStaticProps {\n types: typeof ToastTypeEnum;\n actionTypes: typeof ToastActionTypeEnum;\n}\n\nexport default withStaticPropsWithoutForwardRef<ToastProps, ToastStaticProps>(Toast, {\n types: ToastTypeEnum,\n actionTypes: ToastActionTypeEnum\n});\n"],"names":["withStaticPropsWithoutForwardRef","_ref","_ref$open","open","_ref$loading","loading","_ref$autoHideDuration","autoHideDuration","_ref$type","type","icon","_ref$hideIcon","hideIcon","deprecatedAction","action","actions","children","_ref$closeable","closeable","_ref$onClose","onClose","NOOP","className","id","_ref$closeButtonAriaL","closeButtonAriaLabel","dataTestId","ref","useRef","nodeRef","prevActions","usePrevious","length","toastLinks","useMemo","filter","map","_a","otherProps","__rest","React","createElement","ToastLink","key","href","styles","actionLink","shouldShowButtonTransition","undefined","toastButtons","index","content","ToastButton","Object","assign","concat","cx","actionButton","_defineProperty","withTransition","classNames","toast","getStyle","camelCase","handleClose","useCallback","timerAutoHide","setAutoHideTimer","duration","clearTimeout","current","setTimeout","useEffect","iconElement","getIcon","recalculateElementWidth","element","prevWidth","style","width","endWidth","getComputedStyle","CSSTransition","in","enterActive","exitActive","timeout","unmountOnExit","Text","getTestId","ComponentDefaultTestId","TOAST","color","role","Flex","align","gap","TOAST_CONTENT","textContent","Loader","size","IconButton","closeButton","onClick","kind","ariaLabel","TOAST_CLOSE_BUTTON","CloseSmall","hideTooltip","types","ToastTypeEnum","actionTypes","ToastActionTypeEnum"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Toast.js","sources":["../../../../../src/components/Toast/Toast.tsx"],"sourcesContent":["import { camelCase } from \"lodash-es\";\nimport { ComponentDefaultTestId, getTestId } from \"../../tests/test-ids-utils\";\nimport cx from \"classnames\";\nimport React, { ReactElement, useCallback, useEffect, useMemo, useRef } from \"react\";\nimport { CSSTransition } from \"react-transition-group\";\nimport { IconSubComponentProps } from \"../Icon/Icon\";\nimport Text from \"../Text/Text\";\nimport Loader from \"../Loader/Loader\";\nimport Flex from \"../Flex/Flex\";\nimport { CloseSmall } from \"@vibe/icons\";\nimport ToastLink from \"./ToastLink/ToastLink\";\nimport ToastButton from \"./ToastButton/ToastButton\";\nimport { ToastActionType as ToastActionTypeEnum, ToastType as ToastTypeEnum } from \"./ToastConstants\";\nimport { ToastType, ToastAction } from \"./Toast.types\";\nimport { getIcon } from \"./ToastHelpers\";\nimport { NOOP } from \"../../utils/function-utils\";\nimport { getStyle } from \"../../helpers/typesciptCssModulesHelper\";\nimport { VibeComponentProps, withStaticPropsWithoutForwardRef } from \"../../types\";\nimport styles from \"./Toast.module.scss\";\nimport IconButton from \"../IconButton/IconButton\";\nimport usePrevious from \"../../hooks/usePrevious\";\n\nexport interface ToastProps extends VibeComponentProps {\n /**\n * The actions available in the toast.\n */\n actions?: ToastAction[];\n /**\n * If true, the toast is open (visible).\n */\n open?: boolean;\n /**\n * If true, displays a loading indicator inside the toast.\n */\n loading?: boolean;\n /**\n * The type of toast.\n */\n type?: ToastType;\n /**\n * The icon displayed in the toast.\n */\n icon?: string | React.FC<IconSubComponentProps> | null;\n /**\n * If true, hides the toast icon.\n */\n hideIcon?: boolean;\n /**\n * The action element displayed in the toast.\n */\n action?: JSX.Element;\n /**\n * If false, hides the close button.\n */\n closeable?: boolean;\n /**\n * Callback fired when the toast is closed.\n */\n onClose?: () => void;\n /**\n * The number of milliseconds before the toast automatically closes.\n * (0 or null disables auto-close behavior).\n */\n autoHideDuration?: number;\n /**\n * The content displayed inside the toast.\n */\n children?: ReactElement | ReactElement[] | string;\n /**\n * The aria-label for the close button.\n */\n closeButtonAriaLabel?: string;\n}\n\nconst Toast = ({\n open = false,\n loading = false,\n autoHideDuration = null,\n type = \"normal\",\n icon,\n hideIcon = false,\n action: deprecatedAction,\n actions,\n children,\n closeable = true,\n onClose = NOOP,\n className,\n id,\n closeButtonAriaLabel = \"Close\",\n \"data-testid\": dataTestId\n}: ToastProps) => {\n const ref = useRef(null);\n const prevActions = usePrevious(actions?.length);\n const toastLinks = useMemo(() => {\n return actions\n ? actions\n .filter(action => action.type === \"link\")\n .map(({ type: _type, ...otherProps }) => (\n <ToastLink key={otherProps.href} className={styles.actionLink} {...otherProps} />\n ))\n : null;\n }, [actions]);\n\n const shouldShowButtonTransition = useMemo(() => {\n return prevActions !== undefined && actions?.length !== prevActions;\n }, [actions, prevActions]);\n\n const toastButtons: JSX.Element[] | null = useMemo(() => {\n return actions\n ? actions\n .filter(action => action.type === \"button\")\n .map(({ type: _type, content, ...otherProps }, index) => (\n <ToastButton\n key={`alert-button-${index}`}\n className={cx(styles.actionButton, { [styles.withTransition]: shouldShowButtonTransition })}\n {...otherProps}\n >\n {content}\n </ToastButton>\n ))\n : null;\n }, [actions, shouldShowButtonTransition]);\n\n const classNames = useMemo(\n () => cx(styles.toast, getStyle(styles, camelCase(\"type-\" + type)), className),\n [type, className]\n );\n\n const handleClose = useCallback(() => {\n if (onClose) {\n onClose();\n }\n }, [onClose]);\n\n /* Timer */\n const timerAutoHide = useRef<NodeJS.Timeout>();\n const setAutoHideTimer = useCallback(\n (duration: number) => {\n if (!onClose || duration == null) {\n return;\n }\n\n clearTimeout(timerAutoHide.current);\n timerAutoHide.current = setTimeout(() => {\n handleClose();\n }, duration);\n },\n [handleClose, onClose]\n );\n\n useEffect(() => {\n if (open && autoHideDuration > 0) {\n setAutoHideTimer(autoHideDuration);\n }\n\n return () => {\n clearTimeout(timerAutoHide.current);\n };\n }, [open, autoHideDuration, setAutoHideTimer]);\n\n const iconElement = !hideIcon && getIcon(type, icon);\n\n // https://n12v.com/css-transition-to-from-auto/\n const recalculateElementWidth = useCallback((element: HTMLElement) => {\n const prevWidth = element.style.width;\n element.style.width = \"auto\";\n const endWidth = getComputedStyle(element).width;\n element.style.width = prevWidth;\n element.offsetWidth; // force repaint\n element.style.width = endWidth;\n }, []);\n\n useEffect(() => {\n if (ref.current) {\n recalculateElementWidth(ref.current);\n }\n }, [children, recalculateElementWidth]);\n\n return (\n <CSSTransition\n in={open}\n classNames={{ enterActive: styles.enterActive, exitActive: styles.exitActive }}\n timeout={400}\n unmountOnExit\n >\n <Text\n id={id}\n data-testid={dataTestId || getTestId(ComponentDefaultTestId.TOAST, id)}\n type=\"text2\"\n element=\"div\"\n color=\"fixedLight\"\n className={classNames}\n role=\"alert\"\n aria-live=\"polite\"\n ref={ref}\n >\n {iconElement && <div className={cx(styles.icon)}>{iconElement}</div>}\n <Flex align=\"center\" gap=\"large\" className={styles.content}>\n <Flex\n gap=\"medium\"\n data-testid={getTestId(ComponentDefaultTestId.TOAST_CONTENT)}\n className={styles.textContent}\n >\n <span>{children}</span>\n {toastLinks}\n </Flex>\n {(toastButtons || deprecatedAction) && (toastButtons || deprecatedAction)}\n {loading && <Loader size=\"xs\" />}\n </Flex>\n {closeable && (\n <IconButton\n className={cx(styles.closeButton)}\n onClick={handleClose}\n size=\"small\"\n kind=\"tertiary\"\n color=\"fixed-light\"\n ariaLabel={closeButtonAriaLabel}\n data-testid={getTestId(ComponentDefaultTestId.TOAST_CLOSE_BUTTON)}\n icon={CloseSmall}\n hideTooltip\n />\n )}\n </Text>\n </CSSTransition>\n );\n};\n\ninterface ToastStaticProps {\n types: typeof ToastTypeEnum;\n actionTypes: typeof ToastActionTypeEnum;\n}\n\nexport default withStaticPropsWithoutForwardRef<ToastProps, ToastStaticProps>(Toast, {\n types: ToastTypeEnum,\n actionTypes: ToastActionTypeEnum\n});\n"],"names":["withStaticPropsWithoutForwardRef","_ref","_ref$open","open","_ref$loading","loading","_ref$autoHideDuration","autoHideDuration","_ref$type","type","icon","_ref$hideIcon","hideIcon","deprecatedAction","action","actions","children","_ref$closeable","closeable","_ref$onClose","onClose","NOOP","className","id","_ref$closeButtonAriaL","closeButtonAriaLabel","dataTestId","ref","useRef","prevActions","usePrevious","length","toastLinks","useMemo","filter","map","_a","otherProps","__rest","React","createElement","ToastLink","key","href","styles","actionLink","shouldShowButtonTransition","undefined","toastButtons","index","content","ToastButton","Object","assign","concat","cx","actionButton","_defineProperty","withTransition","classNames","toast","getStyle","camelCase","handleClose","useCallback","timerAutoHide","setAutoHideTimer","duration","clearTimeout","current","setTimeout","useEffect","iconElement","getIcon","recalculateElementWidth","element","prevWidth","style","width","endWidth","getComputedStyle","CSSTransition","in","enterActive","exitActive","timeout","unmountOnExit","Text","getTestId","ComponentDefaultTestId","TOAST","color","role","Flex","align","gap","TOAST_CONTENT","textContent","Loader","size","IconButton","closeButton","onClick","kind","ariaLabel","TOAST_CLOSE_BUTTON","CloseSmall","hideTooltip","types","ToastTypeEnum","actionTypes","ToastActionTypeEnum"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{__rest as t}from"../../../../_virtual/_tslib.js";import s from"../../Button/Button.js";import a from"react";import{ComponentDefaultTestId as e}from"../../../tests/constants.js";import{getTestId as
|
|
1
|
+
import{__rest as t}from"../../../../_virtual/_tslib.js";import s from"../../Button/Button.js";import a from"react";import{ComponentDefaultTestId as e}from"../../../tests/constants.js";import{getTestId as i}from"../../../tests/testIds.js";var r=function(r){var o=r.className,m=r.id,d=r["data-testid"],n=t(r,["className","id","data-testid"]),c=Object.assign(Object.assign(Object.assign({},s.defaultProps),{kind:"secondary",marginLeft:!1}),n);return a.createElement(s,Object.assign({},c,{id:m,"data-testid":d||i(e.TOAST_BUTTON,m),className:o,size:"small",color:"fixed-light"}))};export{r as default};
|
|
2
2
|
//# sourceMappingURL=ToastButton.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToastButton.js","sources":["../../../../../../src/components/Toast/ToastButton/ToastButton.tsx"],"sourcesContent":["import Button, { ButtonProps } from \"../../Button/Button\";\nimport React, { FC } from \"react\";\nimport { ComponentDefaultTestId } from \"../../../tests/constants\";\nimport { getTestId } from \"../../../tests/test-ids-utils\";\n\nexport type ToastButtonProps = ButtonProps;\n\nconst ToastButton: FC<ToastButtonProps> = ({\n className,\n id,\n \"data-testid\": dataTestId,\n ...buttonProps\n}: ToastButtonProps) => {\n return (\n <Button\n {...
|
|
1
|
+
{"version":3,"file":"ToastButton.js","sources":["../../../../../../src/components/Toast/ToastButton/ToastButton.tsx"],"sourcesContent":["import Button, { ButtonProps } from \"../../Button/Button\";\nimport React, { FC } from \"react\";\nimport { ComponentDefaultTestId } from \"../../../tests/constants\";\nimport { getTestId } from \"../../../tests/test-ids-utils\";\nimport { ButtonType } from \"../../Button\";\n\nexport type ToastButtonProps = ButtonProps;\n\nconst ToastButton: FC<ToastButtonProps> = ({\n className,\n id,\n \"data-testid\": dataTestId,\n ...buttonProps\n}: ToastButtonProps) => {\n const overrideButtonProps = {\n ...Button.defaultProps,\n kind: \"secondary\" as ButtonType,\n marginLeft: false,\n ...buttonProps\n };\n\n return (\n <Button\n {...overrideButtonProps}\n id={id}\n data-testid={dataTestId || getTestId(ComponentDefaultTestId.TOAST_BUTTON, id)}\n className={className}\n size=\"small\"\n color=\"fixed-light\"\n />\n );\n};\n\nexport default ToastButton;\n"],"names":["ToastButton","_a","className","id","dataTestId","buttonProps","__rest","overrideButtonProps","Object","assign","Button","defaultProps","kind","marginLeft","React","createElement","getTestId","ComponentDefaultTestId","TOAST_BUTTON","size","color"],"mappings":"8OAQA,IAAMA,EAAoC,SAACC,GAAA,IACzCC,EAEyBD,EAFzBC,UACAC,EACyBF,EADzBE,GACeC,EAAUH,EAAzB,eACGI,EAJsCC,EAAAL,EAAA,CAAA,YAAA,KAAA,gBAMnCM,EACDC,OAAAC,OAAAD,OAAAC,OAAAD,OAAAC,OAAA,CAAA,EAAAC,EAAOC,eACVC,KAAM,YACNC,YAAY,IACTR,GAGL,OACES,EAAAC,cAACL,EAAMF,OAAAC,OAAA,CAAA,EACDF,EACJ,CAAAJ,GAAIA,gBACSC,GAAcY,EAAUC,EAAuBC,aAAcf,GAC1ED,UAAWA,EACXiB,KAAK,QACLC,MAAM,gBAGZ"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{regeneratorRuntime as e,createForOfIteratorHelper as t}from"../../_virtual/_rollupPluginBabelHelpers.js";import{__awaiter as n}from"../../_virtual/_tslib.js";import{userEvent as r,within as o,fireEvent as a}from"@storybook/
|
|
1
|
+
import{regeneratorRuntime as e,createForOfIteratorHelper as t}from"../../_virtual/_rollupPluginBabelHelpers.js";import{__awaiter as n}from"../../_virtual/_tslib.js";import{userEvent as r,within as o,fireEvent as a}from"@storybook/testing-library";import{waitFor as i}from"@testing-library/react";import{NavigationCommand as c}from"./constants.js";import{expect as u}from"@storybook/jest";var s=function(t){return function(r){var o=r.canvasElement,a=r.args;return n(void 0,void 0,void 0,e().mark((function n(){var r;return e().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=p(o),e.abrupt("return",t(r,a));case 2:case"end":return e.stop()}}),n)})))}},v=function(t){return n(void 0,void 0,void 0,e().mark((function n(){return e().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:r.clear(t);case 1:case"end":return e.stop()}}),n)})))};function f(e){u(" ➡️ ".concat(e)).toBeDefined()}function l(e){var t=e.getBoundingClientRect();return{x:t.left+t.width/2,y:t.top+t.height/2}}var d=function(e){var t=e.toElm,n=e.toCoords,r=e.delta,o=e.from;return n?Object.assign(Object.assign({},o),n):t?l(t):r?{x:o.x+r.x,y:o.y+r.y}:{x:o.x+10,y:o.y+0}};function p(e){if(e instanceof HTMLElement){var t=o(e);if(t instanceof Error)throw t;return t}if(e.getByRole)return e}var x=c,m=function(r){var o=r.beforeEach,a=void 0===o?null:o,i=r.beforeAll,c=void 0===i?null:i,u=r.skip,v=void 0!==u&&u,l=r.tests,d=r.afterEach,p=void 0===d?null:d,x=r.afterAll,m=void 0===x?null:x;return function(r){var o=r.canvasElement,i=r.args;return n(void 0,void 0,void 0,e().mark((function n(){var r,u,d,x;return e().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!v){e.next=2;break}return e.abrupt("return");case 2:if(!c){e.next=6;break}return f("Before all:"),e.next=6,s(c)({canvasElement:o,args:i});case 6:r=t(l),e.prev=7,r.s();case 9:if((u=r.n()).done){e.next=25;break}if(x=(d=u.value).name,!a){e.next=16;break}return f("Before: ".concat(x)),e.next=16,s(a)({canvasElement:o,args:i});case 16:return f("Running : ".concat(x)),e.next=19,s(d)({canvasElement:o,args:i});case 19:if(!p){e.next=23;break}return f("After: ".concat(x)),e.next=23,s(p)({canvasElement:o,args:i});case 23:e.next=9;break;case 25:e.next=30;break;case 27:e.prev=27,e.t0=e.catch(7),r.e(e.t0);case 30:return e.prev=30,r.f(),e.finish(30);case 33:if(!m){e.next=37;break}return f("After all:"),e.next=37,s(m)({canvasElement:o,args:i});case 37:case"end":return e.stop()}}),n,null,[[7,27,30,33]])})))}},g=function(e,t){return p(e).getByTestId(t)},y=function(e,t){return p(e).getAllByTestId(t)},b=function(e,t){return p(e).getByPlaceholderText(t)},h=function(e,t){return p(e).getAllByPlaceholderText(t)},k=function(e){return document.getElementsByClassName(e)},w=function(e){return document.getElementsByClassName(e)[0]},B=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return p(e).getByRole(t,n)},E=function(e,t){return p(e).getAllByRole(t)},T=function(e,t){return p(e).getByLabelText(t)},A=function(e,t){return p(e).getAllByLabelText(t)},C=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return p(e).getByText(t,n)},R=function(e,t){return p(e).getAllByText(t)},j=function(e){return r.click(e)},H=function(e){return r.hover(e)},P=function(t,o){var a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:250;return n(void 0,void 0,void 0,e().mark((function n(){var i,c;return e().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=r.type(t,o,{delay:50}),e.next=3,i;case 3:return c=e.sent,e.next=6,L(a);case 6:return e.abrupt("return",c);case 7:case"end":return e.stop()}}),n)})))},O=function(e){u(document.activeElement).toHaveTextContent(RegExp("^".concat(e,"$")))},_=function(e){u(document.activeElement).toHaveTextContent(e)},I=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:c.TAB,o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return n(void 0,void 0,void 0,e().mark((function n(){var a,i;return e().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a=t===c.TAB?r.tab():r.keyboard(t),e.next=3,a;case 3:return i=e.sent,e.next=6,L(o);case 6:return e.abrupt("return",i);case 7:case"end":return e.stop()}}),n)})))};function L(e){return new Promise((function(t){if(!e)return t(void 0);setTimeout(t,e)}))}var M=function(t){return new Promise((function(r){var o;i((function(){return n(void 0,void 0,void 0,e().mark((function n(){return e().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t();case 2:u(o=e.sent).toBeVisible();case 4:case"end":return e.stop()}}),n)})))})).then((function(){r(o)}))}))},N=function(t,o){var a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{delay:70};return n(void 0,void 0,void 0,e().mark((function n(){return e().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=t.repeat(o),e.next=3,r.keyboard(t,a);case 3:case"end":return e.stop()}}),n)})))};function D(t,o){var i=o.delta,c=void 0===i?void 0:i,u=o.toCoords,s=void 0===u?void 0:u,v=o.toElm,f=void 0===v?void 0:v,p=o.steps,x=void 0===p?20:p,m=o.duration,g=void 0===m?100:m;return n(this,void 0,void 0,e().mark((function n(){var o,i,u,v,p;return e().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:o=l(t),i=d({toElm:f,toCoords:s,delta:c,from:o}),u={x:(i.x-o.x)/x,y:(i.y-o.y)/x},v={clientX:o.x,clientY:o.y},r.hover(t),a.pointerEnter(t,v),a.pointerOver(t,v),a.pointerMove(t,v),a.pointerDown(t,v),p=0;case 10:if(x<=p){e.next=19;break}return v.clientX+=u.x,v.clientY+=u.y,e.next=15,L(g/x);case 15:a.pointerMove(t,v);case 16:p++,e.next=10;break;case 19:a.pointerUp(t,v);case 20:case"end":return e.stop()}}),n)})))}export{x as NavigationCommand,v as clearText,j as clickElement,L as delay,D as drag,O as expectActiveElementToHaveExactText,_ as expectActiveElementToHavePartialText,A as getAllByLabelText,h as getAllByPlaceholderText,E as getAllByRole,y as getAllByTestId,R as getAllByText,k as getByClassName,T as getByLabelText,b as getByPlaceholderText,B as getByRole,g as getByTestId,C as getByText,w as getFirstByClassName,H as hoverElement,m as interactionSuite,I as pressNavigationKey,s as testFunctionWrapper,N as typeMultipleTimes,P as typeText,M as waitForElementVisible};
|
|
2
2
|
//# sourceMappingURL=interactionsTests.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interactionsTests.js","sources":["../../../../src/tests/interactions-utils.ts"],"sourcesContent":["import { fireEvent, queries, userEvent, within } from \"@storybook/test\";\nimport { BoundFunctions, Screen, SelectorMatcherOptions, waitFor } from \"@testing-library/react\";\nimport { NavigationCommand as NavigationCommandType } from \"./constants\";\nimport { expect } from \"@storybook/jest\";\n\nexport type Canvas = HTMLElement | BoundFunctions<typeof queries>;\nexport type TestFunction = (canvas: Canvas, args: Record<string, any>) => unknown;\nexport type Coordinates = { x: number; y: number };\n\n// Internal functions\nexport const testFunctionWrapper = (testFunc: TestFunction) => {\n return async ({ canvasElement, args }: { canvasElement: Screen; args: Record<string, any> }) => {\n // Starts querying the component from its root element\n const canvas = getWithin(canvasElement);\n return testFunc(canvas, args);\n };\n};\n\nexport const clearText = async (element: HTMLElement) => {\n userEvent.clear(element);\n};\n\nfunction logFunctionStart(name: string) {\n expect(` ➡️ ${name}`).toBeDefined();\n}\n\nfunction getElementClientCenter(element: HTMLElement) {\n const { left, top, width, height } = element.getBoundingClientRect();\n return {\n x: left + width / 2,\n y: top + height / 2\n };\n}\n\nconst getCoords = ({\n toElm,\n toCoords,\n delta,\n from\n}: {\n toElm: HTMLElement;\n toCoords: Coordinates;\n delta: Coordinates;\n from: Coordinates;\n}) => {\n if (toCoords) {\n return { ...from, ...toCoords };\n }\n if (toElm) {\n return getElementClientCenter(toElm);\n }\n if (delta) {\n return {\n x: from.x + delta.x,\n y: from.y + delta.y\n };\n }\n return {\n x: from.x + 10,\n y: from.y + 0\n };\n};\n\nfunction getWithin(canvasOrValidTestElement: HTMLElement | BoundFunctions<typeof queries>) {\n if (canvasOrValidTestElement instanceof HTMLElement) {\n const result = within(canvasOrValidTestElement);\n if (result instanceof Error) {\n throw result;\n }\n return result;\n } else if (canvasOrValidTestElement.getByRole) return canvasOrValidTestElement;\n}\n\n// External constants\nexport const NavigationCommand = NavigationCommandType;\n\n// External functions\nexport const interactionSuite =\n ({\n beforeEach = null,\n beforeAll = null,\n skip = false,\n tests,\n afterEach = null,\n afterAll = null\n }: {\n beforeEach?: TestFunction;\n beforeAll?: TestFunction;\n skip?: boolean;\n tests: Array<TestFunction>;\n afterAll?: TestFunction;\n afterEach?: TestFunction;\n }): (({ canvasElement, args }: { canvasElement: Screen; args: Record<string, any> }) => Promise<void>) =>\n async ({ canvasElement, args }) => {\n if (skip) return;\n\n if (beforeAll) {\n logFunctionStart(\"Before all:\");\n await testFunctionWrapper(beforeAll)({ canvasElement, args });\n }\n\n for (const test of tests) {\n const fnName = test.name;\n if (beforeEach) {\n logFunctionStart(`Before: ${fnName}`);\n await testFunctionWrapper(beforeEach)({ canvasElement, args });\n }\n\n logFunctionStart(`Running : ${fnName}`);\n await testFunctionWrapper(test)({ canvasElement, args });\n\n if (afterEach) {\n logFunctionStart(`After: ${fnName}`);\n await testFunctionWrapper(afterEach)({ canvasElement, args });\n }\n }\n\n if (afterAll) {\n logFunctionStart(\"After all:\");\n await testFunctionWrapper(afterAll)({ canvasElement, args });\n }\n };\n\nexport const getByTestId = (rootElement: HTMLElement | BoundFunctions<typeof queries>, dataTestId: string) => {\n return getWithin(rootElement).getByTestId(dataTestId);\n};\n\nexport const getAllByTestId = (rootElement: HTMLElement | BoundFunctions<typeof queries>, dataTestId: string) => {\n return getWithin(rootElement).getAllByTestId(dataTestId);\n};\n\nexport const getByPlaceholderText = (rootElement: HTMLElement | BoundFunctions<typeof queries>, text: string) => {\n return getWithin(rootElement).getByPlaceholderText(text);\n};\n\nexport const getAllByPlaceholderText = (rootElement: HTMLElement | BoundFunctions<typeof queries>, text: string) => {\n return getWithin(rootElement).getAllByPlaceholderText(text);\n};\n\nexport const getByClassName = (className: string) => {\n return document.getElementsByClassName(className);\n};\n\nexport const getFirstByClassName = (className: string) => {\n return document.getElementsByClassName(className)[0];\n};\n\nexport const getByRole = (rootElement: HTMLElement | BoundFunctions<typeof queries>, role: string, options = {}) => {\n return getWithin(rootElement).getByRole(role, options);\n};\n\nexport const getAllByRole = (rootElement: HTMLElement | BoundFunctions<typeof queries>, role: string) => {\n return getWithin(rootElement).getAllByRole(role);\n};\n\nexport const getByLabelText = (rootElement: HTMLElement | BoundFunctions<typeof queries>, text: string) => {\n return getWithin(rootElement).getByLabelText(text);\n};\n\nexport const getAllByLabelText = (rootElement: HTMLElement, text: string) => {\n return getWithin(rootElement).getAllByLabelText(text);\n};\n\nexport const getByText = (\n rootElement: HTMLElement | BoundFunctions<typeof queries>,\n text: string,\n options: SelectorMatcherOptions = {}\n) => {\n return getWithin(rootElement).getByText(text, options);\n};\n\nexport const getAllByText = (rootElement: HTMLElement | BoundFunctions<typeof queries>, text: string) => {\n return getWithin(rootElement).getAllByText(text);\n};\n\nexport const clickElement = (element: HTMLElement) => {\n return userEvent.click(element);\n};\n\nexport const hoverElement = (element: HTMLElement) => {\n return userEvent.hover(element);\n};\n\nexport const typeText = async (element: HTMLElement, text: string, waitForDebounceMs = 250) => {\n const promise = userEvent.type(element, text, {\n delay: 50\n });\n const result = await promise;\n await delay(waitForDebounceMs);\n return result;\n};\n\nexport const expectActiveElementToHaveExactText = (text: string) => {\n expect(document.activeElement).toHaveTextContent(new RegExp(`^${text}$`));\n};\n\nexport const expectActiveElementToHavePartialText = (text: string) => {\n expect(document.activeElement).toHaveTextContent(text);\n};\n\nexport const pressNavigationKey = async (command = NavigationCommandType.TAB, waitForDebounceMs = 0): Promise<any> => {\n const promise = command === NavigationCommandType.TAB ? userEvent.tab() : userEvent.keyboard(command);\n const result = await promise;\n await delay(waitForDebounceMs);\n return result;\n};\n\nexport function delay(timeout: number) {\n return new Promise((resolve: (value: unknown) => void) => {\n if (!timeout) return resolve(undefined);\n setTimeout(resolve, timeout);\n });\n}\n\nexport const waitForElementVisible = (getterFunc: () => HTMLElement) => {\n return new Promise(resolve => {\n let element: HTMLElement;\n waitFor(async () => {\n element = await getterFunc();\n expect(element).toBeVisible();\n }).then(() => {\n resolve(element);\n });\n });\n};\n\nexport const typeMultipleTimes = async (text: string, count: number, options = { delay: 70 }) => {\n text = text.repeat(count);\n await userEvent.keyboard(text, options);\n};\n\nexport async function drag(\n element: HTMLElement,\n {\n delta = undefined,\n toCoords = undefined,\n toElm = undefined,\n steps = 20,\n duration = 100\n }: { delta: Coordinates; toCoords: Coordinates; toElm: HTMLElement; steps: number; duration: number }\n) {\n const from = getElementClientCenter(element);\n const to = getCoords({ toElm, toCoords, delta, from });\n const step = {\n x: (to.x - from.x) / steps,\n y: (to.y - from.y) / steps\n };\n const current = {\n clientX: from.x,\n clientY: from.y\n };\n userEvent.hover(element);\n fireEvent.pointerEnter(element, current);\n fireEvent.pointerOver(element, current);\n fireEvent.pointerMove(element, current);\n fireEvent.pointerDown(element, current);\n for (let i = 0; i < steps; i++) {\n current.clientX += step.x;\n current.clientY += step.y;\n await delay(duration / steps);\n fireEvent.pointerMove(element, current);\n }\n fireEvent.pointerUp(element, current);\n}\n"],"names":["testFunctionWrapper","testFunc","_ref","canvasElement","args","__awaiter","_regeneratorRuntime","mark","_callee","canvas","wrap","_context","prev","next","getWithin","abrupt","stop","clearText","element","_callee2","_context2","userEvent","clear","logFunctionStart","name","expect","concat","toBeDefined","getElementClientCenter","_element$getBoundingC","getBoundingClientRect","x","left","width","y","top","height","getCoords","_ref2","toElm","toCoords","delta","from","Object","assign","canvasOrValidTestElement","HTMLElement","result","within","Error","getByRole","NavigationCommand","NavigationCommandType","interactionSuite","_ref3","_ref3$beforeEach","beforeEach","_ref3$beforeAll","beforeAll","_ref3$skip","skip","tests","_ref3$afterEach","afterEach","_ref3$afterAll","afterAll","_ref4","_callee3","_iterator","_step","test","fnName","_context3","_createForOfIteratorHelper","s","n","done","value","t0","e","f","finish","getByTestId","rootElement","dataTestId","getAllByTestId","getByPlaceholderText","text","getAllByPlaceholderText","getByClassName","className","document","getElementsByClassName","getFirstByClassName","role","options","arguments","length","undefined","getAllByRole","getByLabelText","getAllByLabelText","getByText","getAllByText","clickElement","click","hoverElement","hover","typeText","waitForDebounceMs","_callee4","promise","_context4","type","delay","sent","expectActiveElementToHaveExactText","activeElement","toHaveTextContent","RegExp","expectActiveElementToHavePartialText","pressNavigationKey","command","TAB","_callee5","_context5","tab","keyboard","timeout","Promise","resolve","setTimeout","waitForElementVisible","getterFunc","waitFor","_callee6","_context6","toBeVisible","then","typeMultipleTimes","count","_callee7","_context7","repeat","drag","_ref5","_ref5$delta","_ref5$toCoords","_ref5$toElm","_ref5$steps","steps","_ref5$duration","duration","to","step","current","clientX","clientY","fireEvent","pointerEnter","pointerOver","pointerMove","pointerDown","i","_context8","pointerUp","_callee8"],"mappings":"6XAUaA,EAAsB,SAACC,GAClC,OAAO,SAAAC,GAAA,IAASC,EAAaD,EAAbC,cAAeC,EAAIF,EAAJE,KAAI,OAA4DC,OAAA,OAAA,OAAA,EAAAC,IAAAC,MAAA,SAAAC,IAAA,IAAAC,EAAA,OAAAH,IAAAI,MAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,KAAA,EAEtD,OAAjCJ,EAASK,EAAUX,GAAcQ,EAAAI,OAAA,SAChCd,EAASQ,EAAQL,IAAK,KAAA,EAAA,IAAA,MAAA,OAAAO,EAAAK,OAAA,GAAAR,EAC9B,IAAA,CACH,EAEaS,EAAY,SAAOC,GAAoB,OAAIb,OAAA,OAAA,OAAA,EAAAC,IAAAC,MAAA,SAAAY,IAAA,OAAAb,IAAAI,MAAA,SAAAU,GAAA,cAAAA,EAAAR,KAAAQ,EAAAP,MAAA,KAAA,EACtDQ,EAAUC,MAAMJ,GAAS,KAAA,EAAA,IAAA,MAAA,OAAAE,EAAAJ,OAAA,GAAAG,EAC1B,IAAA,EAED,SAASI,EAAiBC,GACxBC,EAAM,OAAAC,OAAQF,IAAQG,aACxB,CAEA,SAASC,EAAuBV,GAC9B,IAAAW,EAAqCX,EAAQY,wBAC7C,MAAO,CACLC,EAFUF,EAAJG,KAAgBH,EAALI,MAEC,EAClBC,EAHeL,EAAHM,IAAkBN,EAANO,OAGN,EAEtB,CAEA,IAAMC,EAAY,SAAHC,GAUV,IATHC,EAAKD,EAALC,MACAC,EAAQF,EAARE,SACAC,EAAKH,EAALG,MACAC,EAAIJ,EAAJI,KAOA,OAAIF,EACUG,OAAAC,OAAAD,OAAAC,OAAA,CAAA,EAAAF,GAASF,GAEnBD,EACKX,EAAuBW,GAE5BE,EACK,CACLV,EAAGW,EAAKX,EAAIU,EAAMV,EAClBG,EAAGQ,EAAKR,EAAIO,EAAMP,GAGf,CACLH,EAAGW,EAAKX,EAAI,GACZG,EAAGQ,EAAKR,EAAI,EAEhB,EAEA,SAASpB,EAAU+B,GACjB,GAAIA,aAAoCC,YAAa,CACnD,IAAMC,EAASC,EAAOH,GACtB,GAAIE,aAAkBE,MACpB,MAAMF,EAER,OAAOA,CACR,CAAM,GAAIF,EAAyBK,UAAW,OAAOL,CACxD,CAGO,IAAMM,EAAoBC,EAGpBC,EACX,SAD2BC,GAAA,IAAAC,EAAAD,EAEzBE,WAAAA,OAAa,IAAHD,EAAG,KAAIA,EAAAE,EAAAH,EACjBI,UAAAA,OAAY,IAAHD,EAAG,KAAIA,EAAAE,EAAAL,EAChBM,KAAAA,OAAO,IAAHD,GAAQA,EACZE,EAAKP,EAALO,MAAKC,EAAAR,EACLS,UAAAA,OAAY,IAAHD,EAAG,KAAIA,EAAAE,EAAAV,EAChBW,SAAAA,OAAW,IAAHD,EAAG,KAAIA,EAAA,OASjB,SAAAE,GAAA,IAAS/D,EAAa+D,EAAb/D,cAAeC,EAAI8D,EAAJ9D,KAAI,OAAMC,OAAA,OAAA,OAAA,EAAAC,IAAAC,MAAA,SAAA4D,IAAA,IAAAC,EAAAC,EAAAC,EAAAC,EAAA,OAAAjE,IAAAI,MAAA,SAAA8D,GAAA,cAAAA,EAAA5D,KAAA4D,EAAA3D,MAAA,KAAA,EAAA,IAC5B+C,EAAI,CAAAY,EAAA3D,KAAA,EAAA,KAAA,CAAA,OAAA2D,EAAAzD,OAAA,UAAA,KAAA,EAAA,IAEJ2C,EAAS,CAAAc,EAAA3D,KAAA,EAAA,KAAA,CAEX,OADAU,EAAiB,eAAeiD,EAAA3D,KAAA,EAC1Bb,EAAoB0D,EAApB1D,CAA+B,CAAEG,cAAAA,EAAeC,KAAAA,IAAO,KAAA,EAAAgE,EAAAK,EAG5CZ,GAAKW,EAAA5D,KAAA,EAAAwD,EAAAM,IAAA,KAAA,EAAA,IAAAL,EAAAD,EAAAO,KAAAC,KAAA,CAAAJ,EAAA3D,KAAA,GAAA,KAAA,CACE,GAAlB0D,GADGD,EAAID,EAAAQ,OACOrD,MAChBgC,EAAU,CAAAgB,EAAA3D,KAAA,GAAA,KAAA,CAEZ,OADAU,EAAgBG,WAAAA,OAAY6C,IAAUC,EAAA3D,KAAA,GAChCb,EAAoBwD,EAApBxD,CAAgC,CAAEG,cAAAA,EAAeC,KAAAA,IAAO,KAAA,GAIhE,OADAmB,EAAgBG,aAAAA,OAAc6C,IAAUC,EAAA3D,KAAA,GAClCb,EAAoBsE,EAApBtE,CAA0B,CAAEG,cAAAA,EAAeC,KAAAA,IAAO,KAAA,GAAA,IAEpD2D,EAAS,CAAAS,EAAA3D,KAAA,GAAA,KAAA,CAEX,OADAU,EAAgBG,UAAAA,OAAW6C,IAAUC,EAAA3D,KAAA,GAC/Bb,EAAoB+D,EAApB/D,CAA+B,CAAEG,cAAAA,EAAeC,KAAAA,IAAO,KAAA,GAAAoE,EAAA3D,KAAA,EAAA,MAAA,KAAA,GAAA2D,EAAA3D,KAAA,GAAA,MAAA,KAAA,GAAA2D,EAAA5D,KAAA,GAAA4D,EAAAM,GAAAN,EAAA,MAAA,GAAAJ,EAAAW,EAAAP,EAAAM,IAAA,KAAA,GAAA,OAAAN,EAAA5D,KAAA,GAAAwD,EAAAY,IAAAR,EAAAS,OAAA,IAAA,KAAA,GAAA,IAI7DhB,EAAQ,CAAAO,EAAA3D,KAAA,GAAA,KAAA,CAEV,OADAU,EAAiB,cAAciD,EAAA3D,KAAA,GACzBb,EAAoBiE,EAApBjE,CAA8B,CAAEG,cAAAA,EAAeC,KAAAA,IAAO,KAAA,GAAA,IAAA,MAAA,OAAAoE,EAAAxD,OAAA,GAAAmD,EAAA,KAAA,CAAA,CAAA,EAAA,GAAA,GAAA,KAE/D,IAAA,CAAA,EAEUe,EAAc,SAACC,EAA2DC,GACrF,OAAOtE,EAAUqE,GAAaD,YAAYE,EAC5C,EAEaC,EAAiB,SAACF,EAA2DC,GACxF,OAAOtE,EAAUqE,GAAaE,eAAeD,EAC/C,EAEaE,EAAuB,SAACH,EAA2DI,GAC9F,OAAOzE,EAAUqE,GAAaG,qBAAqBC,EACrD,EAEaC,EAA0B,SAACL,EAA2DI,GACjG,OAAOzE,EAAUqE,GAAaK,wBAAwBD,EACxD,EAEaE,EAAiB,SAACC,GAC7B,OAAOC,SAASC,uBAAuBF,EACzC,EAEaG,EAAsB,SAACH,GAClC,OAAOC,SAASC,uBAAuBF,GAAW,EACpD,EAEaxC,EAAY,SAACiC,EAA2DW,GAA8B,IAAhBC,EAAOC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,CAAA,EAC3G,OAAOlF,EAAUqE,GAAajC,UAAU4C,EAAMC,EAChD,EAEaI,EAAe,SAAChB,EAA2DW,GACtF,OAAOhF,EAAUqE,GAAagB,aAAaL,EAC7C,EAEaM,EAAiB,SAACjB,EAA2DI,GACxF,OAAOzE,EAAUqE,GAAaiB,eAAeb,EAC/C,EAEac,EAAoB,SAAClB,EAA0BI,GAC1D,OAAOzE,EAAUqE,GAAakB,kBAAkBd,EAClD,EAEae,EAAY,SACvBnB,EACAI,GAEE,IADFQ,EAAAC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAkC,CAAA,EAElC,OAAOlF,EAAUqE,GAAamB,UAAUf,EAAMQ,EAChD,EAEaQ,EAAe,SAACpB,EAA2DI,GACtF,OAAOzE,EAAUqE,GAAaoB,aAAahB,EAC7C,EAEaiB,EAAe,SAACtF,GAC3B,OAAOG,EAAUoF,MAAMvF,EACzB,EAEawF,EAAe,SAACxF,GAC3B,OAAOG,EAAUsF,MAAMzF,EACzB,EAEa0F,EAAW,SAAO1F,EAAsBqE,GAAY,IAAEsB,EAAiBb,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,IAAG,OAAI3F,OAAA,OAAA,OAAA,EAAAC,IAAAC,MAAA,SAAAuG,IAAA,IAAAC,EAAAhE,EAAA,OAAAzC,IAAAI,MAAA,SAAAsG,GAAA,cAAAA,EAAApG,KAAAoG,EAAAnG,MAAA,KAAA,EAI7E,OAHTkG,EAAU1F,EAAU4F,KAAK/F,EAASqE,EAAM,CAC5C2B,MAAO,KACPF,EAAAnG,KAAA,EACmBkG,EAAO,KAAA,EAC5B,OADMhE,EAAMiE,EAAAG,KAAAH,EAAAnG,KAAA,EACNqG,EAAML,GAAkB,KAAA,EAAA,OAAAG,EAAAjG,OAAA,SACvBgC,GAAM,KAAA,EAAA,IAAA,MAAA,OAAAiE,EAAAhG,OAAA,GAAA8F,EACd,IAAA,EAEYM,EAAqC,SAAC7B,GACjD9D,EAAOkE,SAAS0B,eAAeC,kBAAsBC,WAAM7F,OAAK6D,EAAI,MACtE,EAEaiC,EAAuC,SAACjC,GACnD9D,EAAOkE,SAAS0B,eAAeC,kBAAkB/B,EACnD,EAEakC,EAAqB,WAAH,IAAUC,EAAO1B,UAAAC,OAAAD,QAAAE,IAAAF,UAAAE,GAAAF,UAAG5C,GAAAA,EAAsBuE,IAAKd,EAAiBb,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,EAAC,OAAkB3F,OAAA,OAAA,OAAA,EAAAC,IAAAC,MAAA,SAAAqH,IAAA,IAAAb,EAAAhE,EAAA,OAAAzC,IAAAI,MAAA,SAAAmH,GAAA,cAAAA,EAAAjH,KAAAiH,EAAAhH,MAAA,KAAA,EAEpG,OADTkG,EAAUW,IAAYtE,EAAsBuE,IAAMtG,EAAUyG,MAAQzG,EAAU0G,SAASL,GAAQG,EAAAhH,KAAA,EAChFkG,EAAO,KAAA,EAC5B,OADMhE,EAAM8E,EAAAV,KAAAU,EAAAhH,KAAA,EACNqG,EAAML,GAAkB,KAAA,EAAA,OAAAgB,EAAA9G,OAAA,SACvBgC,GAAM,KAAA,EAAA,IAAA,MAAA,OAAA8E,EAAA7G,OAAA,GAAA4G,EACd,IAAA,EAEK,SAAUV,EAAMc,GACpB,OAAO,IAAIC,SAAQ,SAACC,GAClB,IAAKF,EAAS,OAAOE,OAAQhC,GAC7BiC,WAAWD,EAASF,EACtB,GACF,KAEaI,EAAwB,SAACC,GACpC,OAAO,IAAIJ,SAAQ,SAAAC,GACjB,IAAIhH,EACJoH,GAAQ,WAAA,OAAWjI,OAAA,OAAA,OAAA,EAAAC,IAAAC,MAAA,SAAAgI,IAAA,OAAAjI,IAAAI,MAAA,SAAA8H,GAAA,cAAAA,EAAA5H,KAAA4H,EAAA3H,MAAA,KAAA,EACP,OADO2H,EAAA3H,KAAA,EACDwH,IAAY,KAAA,EAC5B5G,EADAP,EAAOsH,EAAArB,MACSsB,cAAc,KAAA,EAAA,IAAA,MAAA,OAAAD,EAAAxH,OAAA,GAAAuH,EAC/B,QAAEG,MAAK,WACNR,EAAQhH,EACV,GACF,GACF,EAEayH,EAAoB,SAAOpD,EAAcqD,GAAa,IAAE7C,EAAOC,UAAAC,OAAAD,QAAAE,IAAAF,UAAAE,GAAAF,UAAG,GAAA,CAAEkB,MAAO,IAAI,OAAI7G,OAAA,OAAA,OAAA,EAAAC,IAAAC,MAAA,SAAAsI,IAAA,OAAAvI,IAAAI,MAAA,SAAAoI,GAAA,cAAAA,EAAAlI,KAAAkI,EAAAjI,MAAA,KAAA,EAE9F,OADA0E,EAAOA,EAAKwD,OAAOH,GAAOE,EAAAjI,KAAA,EACpBQ,EAAU0G,SAASxC,EAAMQ,GAAQ,KAAA,EAAA,IAAA,MAAA,OAAA+C,EAAA9H,OAAA,GAAA6H,EACxC,IAAA,EAEK,SAAgBG,EACpB9H,EAAoB+H,GAOiF,IAAAC,EAAAD,EALnGxG,MAAAA,OAAQyD,IAAHgD,OAAGhD,EAASgD,EAAAC,EAAAF,EACjBzG,SAAAA,OAAW0D,IAAHiD,OAAGjD,EAASiD,EAAAC,EAAAH,EACpB1G,MAAAA,OAAQ2D,IAAHkD,OAAGlD,EAASkD,EAAAC,EAAAJ,EACjBK,MAAAA,OAAQ,IAAHD,EAAG,GAAEA,EAAAE,EAAAN,EACVO,SAAAA,OAAW,IAAHD,EAAG,IAAGA,oIAGV7G,EAAOd,EAAuBV,GAC9BuI,EAAKpH,EAAU,CAAEE,MAAAA,EAAOC,SAAAA,EAAUC,MAAAA,EAAOC,KAAAA,IACzCgH,EAAO,CACX3H,GAAI0H,EAAG1H,EAAIW,EAAKX,GAAKuH,EACrBpH,GAAIuH,EAAGvH,EAAIQ,EAAKR,GAAKoH,GAEjBK,EAAU,CACdC,QAASlH,EAAKX,EACd8H,QAASnH,EAAKR,GAEhBb,EAAUsF,MAAMzF,GAChB4I,EAAUC,aAAa7I,EAASyI,GAChCG,EAAUE,YAAY9I,EAASyI,GAC/BG,EAAUG,YAAY/I,EAASyI,GAC/BG,EAAUI,YAAYhJ,EAASyI,GACtBQ,EAAI,EAAC,KAAA,GAAA,GAAMb,GAAJa,EAAS,CAAAC,EAAAvJ,KAAA,GAAA,KAAA,CAGvB,OAFA8I,EAAQC,SAAWF,EAAK3H,EACxB4H,EAAQE,SAAWH,EAAKxH,EAAEkI,EAAAvJ,KAAA,GACpBqG,EAAMsC,EAAWF,GAAM,KAAA,GAC7BQ,EAAUG,YAAY/I,EAASyI,GAAS,KAAA,GAJfQ,IAAGC,EAAAvJ,KAAA,GAAA,MAAA,KAAA,GAM9BiJ,EAAUO,UAAUnJ,EAASyI,GAAS,KAAA,GAAA,IAAA,MAAA,OAAAS,EAAApJ,OAAA,GAAAsJ,EACvC,IAAA"}
|
|
1
|
+
{"version":3,"file":"interactionsTests.js","sources":["../../../../src/tests/interactions-utils.ts"],"sourcesContent":["import { fireEvent, queries, userEvent, within } from \"@storybook/testing-library\";\nimport { BoundFunctions, Screen, SelectorMatcherOptions, waitFor } from \"@testing-library/react\";\nimport { NavigationCommand as NavigationCommandType } from \"./constants\";\nimport { expect } from \"@storybook/jest\";\n\nexport type Canvas = HTMLElement | BoundFunctions<typeof queries>;\nexport type TestFunction = (canvas: Canvas, args: Record<string, any>) => unknown;\nexport type Coordinates = { x: number; y: number };\n\n// Internal functions\nexport const testFunctionWrapper = (testFunc: TestFunction) => {\n return async ({ canvasElement, args }: { canvasElement: Screen; args: Record<string, any> }) => {\n // Starts querying the component from its root element\n const canvas = getWithin(canvasElement);\n return testFunc(canvas, args);\n };\n};\n\nexport const clearText = async (element: HTMLElement) => {\n userEvent.clear(element);\n};\n\nfunction logFunctionStart(name: string) {\n expect(` ➡️ ${name}`).toBeDefined();\n}\n\nfunction getElementClientCenter(element: HTMLElement) {\n const { left, top, width, height } = element.getBoundingClientRect();\n return {\n x: left + width / 2,\n y: top + height / 2\n };\n}\n\nconst getCoords = ({\n toElm,\n toCoords,\n delta,\n from\n}: {\n toElm: HTMLElement;\n toCoords: Coordinates;\n delta: Coordinates;\n from: Coordinates;\n}) => {\n if (toCoords) {\n return { ...from, ...toCoords };\n }\n if (toElm) {\n return getElementClientCenter(toElm);\n }\n if (delta) {\n return {\n x: from.x + delta.x,\n y: from.y + delta.y\n };\n }\n return {\n x: from.x + 10,\n y: from.y + 0\n };\n};\n\nfunction getWithin(canvasOrValidTestElement: HTMLElement | BoundFunctions<typeof queries>) {\n if (canvasOrValidTestElement instanceof HTMLElement) {\n const result = within(canvasOrValidTestElement);\n if (result instanceof Error) {\n throw result;\n }\n return result;\n } else if (canvasOrValidTestElement.getByRole) return canvasOrValidTestElement;\n}\n\n// External constants\nexport const NavigationCommand = NavigationCommandType;\n\n// External functions\nexport const interactionSuite =\n ({\n beforeEach = null,\n beforeAll = null,\n skip = false,\n tests,\n afterEach = null,\n afterAll = null\n }: {\n beforeEach?: TestFunction;\n beforeAll?: TestFunction;\n skip?: boolean;\n tests: Array<TestFunction>;\n afterAll?: TestFunction;\n afterEach?: TestFunction;\n }): (({ canvasElement, args }: { canvasElement: Screen; args: Record<string, any> }) => Promise<void>) =>\n async ({ canvasElement, args }) => {\n if (skip) return;\n\n if (beforeAll) {\n logFunctionStart(\"Before all:\");\n await testFunctionWrapper(beforeAll)({ canvasElement, args });\n }\n\n for (const test of tests) {\n const fnName = test.name;\n if (beforeEach) {\n logFunctionStart(`Before: ${fnName}`);\n await testFunctionWrapper(beforeEach)({ canvasElement, args });\n }\n\n logFunctionStart(`Running : ${fnName}`);\n await testFunctionWrapper(test)({ canvasElement, args });\n\n if (afterEach) {\n logFunctionStart(`After: ${fnName}`);\n await testFunctionWrapper(afterEach)({ canvasElement, args });\n }\n }\n\n if (afterAll) {\n logFunctionStart(\"After all:\");\n await testFunctionWrapper(afterAll)({ canvasElement, args });\n }\n };\n\nexport const getByTestId = (rootElement: HTMLElement | BoundFunctions<typeof queries>, dataTestId: string) => {\n return getWithin(rootElement).getByTestId(dataTestId);\n};\n\nexport const getAllByTestId = (rootElement: HTMLElement | BoundFunctions<typeof queries>, dataTestId: string) => {\n return getWithin(rootElement).getAllByTestId(dataTestId);\n};\n\nexport const getByPlaceholderText = (rootElement: HTMLElement | BoundFunctions<typeof queries>, text: string) => {\n return getWithin(rootElement).getByPlaceholderText(text);\n};\n\nexport const getAllByPlaceholderText = (rootElement: HTMLElement | BoundFunctions<typeof queries>, text: string) => {\n return getWithin(rootElement).getAllByPlaceholderText(text);\n};\n\nexport const getByClassName = (className: string) => {\n return document.getElementsByClassName(className);\n};\n\nexport const getFirstByClassName = (className: string) => {\n return document.getElementsByClassName(className)[0];\n};\n\nexport const getByRole = (rootElement: HTMLElement | BoundFunctions<typeof queries>, role: string, options = {}) => {\n return getWithin(rootElement).getByRole(role, options);\n};\n\nexport const getAllByRole = (rootElement: HTMLElement | BoundFunctions<typeof queries>, role: string) => {\n return getWithin(rootElement).getAllByRole(role);\n};\n\nexport const getByLabelText = (rootElement: HTMLElement | BoundFunctions<typeof queries>, text: string) => {\n return getWithin(rootElement).getByLabelText(text);\n};\n\nexport const getAllByLabelText = (rootElement: HTMLElement, text: string) => {\n return getWithin(rootElement).getAllByLabelText(text);\n};\n\nexport const getByText = (\n rootElement: HTMLElement | BoundFunctions<typeof queries>,\n text: string,\n options: SelectorMatcherOptions = {}\n) => {\n return getWithin(rootElement).getByText(text, options);\n};\n\nexport const getAllByText = (rootElement: HTMLElement | BoundFunctions<typeof queries>, text: string) => {\n return getWithin(rootElement).getAllByText(text);\n};\n\nexport const clickElement = (element: HTMLElement) => {\n return userEvent.click(element);\n};\n\nexport const hoverElement = (element: HTMLElement) => {\n return userEvent.hover(element);\n};\n\nexport const typeText = async (element: HTMLElement, text: string, waitForDebounceMs = 250) => {\n const promise = userEvent.type(element, text, {\n delay: 50\n });\n const result = await promise;\n await delay(waitForDebounceMs);\n return result;\n};\n\nexport const expectActiveElementToHaveExactText = (text: string) => {\n expect(document.activeElement).toHaveTextContent(new RegExp(`^${text}$`));\n};\n\nexport const expectActiveElementToHavePartialText = (text: string) => {\n expect(document.activeElement).toHaveTextContent(text);\n};\n\nexport const pressNavigationKey = async (command = NavigationCommandType.TAB, waitForDebounceMs = 0): Promise<any> => {\n const promise = command === NavigationCommandType.TAB ? userEvent.tab() : userEvent.keyboard(command);\n const result = await promise;\n await delay(waitForDebounceMs);\n return result;\n};\n\nexport function delay(timeout: number) {\n return new Promise((resolve: (value: unknown) => void) => {\n if (!timeout) return resolve(undefined);\n setTimeout(resolve, timeout);\n });\n}\n\nexport const waitForElementVisible = (getterFunc: () => HTMLElement) => {\n return new Promise(resolve => {\n let element: HTMLElement;\n waitFor(async () => {\n element = await getterFunc();\n expect(element).toBeVisible();\n }).then(() => {\n resolve(element);\n });\n });\n};\n\nexport const typeMultipleTimes = async (text: string, count: number, options = { delay: 70 }) => {\n text = text.repeat(count);\n await userEvent.keyboard(text, options);\n};\n\nexport async function drag(\n element: HTMLElement,\n {\n delta = undefined,\n toCoords = undefined,\n toElm = undefined,\n steps = 20,\n duration = 100\n }: { delta: Coordinates; toCoords: Coordinates; toElm: HTMLElement; steps: number; duration: number }\n) {\n const from = getElementClientCenter(element);\n const to = getCoords({ toElm, toCoords, delta, from });\n const step = {\n x: (to.x - from.x) / steps,\n y: (to.y - from.y) / steps\n };\n const current = {\n clientX: from.x,\n clientY: from.y\n };\n userEvent.hover(element);\n fireEvent.pointerEnter(element, current);\n fireEvent.pointerOver(element, current);\n fireEvent.pointerMove(element, current);\n fireEvent.pointerDown(element, current);\n for (let i = 0; i < steps; i++) {\n current.clientX += step.x;\n current.clientY += step.y;\n await delay(duration / steps);\n fireEvent.pointerMove(element, current);\n }\n fireEvent.pointerUp(element, current);\n}\n"],"names":["testFunctionWrapper","testFunc","_ref","canvasElement","args","__awaiter","_regeneratorRuntime","mark","_callee","canvas","wrap","_context","prev","next","getWithin","abrupt","stop","clearText","element","_callee2","_context2","userEvent","clear","logFunctionStart","name","expect","concat","toBeDefined","getElementClientCenter","_element$getBoundingC","getBoundingClientRect","x","left","width","y","top","height","getCoords","_ref2","toElm","toCoords","delta","from","Object","assign","canvasOrValidTestElement","HTMLElement","result","within","Error","getByRole","NavigationCommand","NavigationCommandType","interactionSuite","_ref3","_ref3$beforeEach","beforeEach","_ref3$beforeAll","beforeAll","_ref3$skip","skip","tests","_ref3$afterEach","afterEach","_ref3$afterAll","afterAll","_ref4","_callee3","_iterator","_step","test","fnName","_context3","_createForOfIteratorHelper","s","n","done","value","t0","e","f","finish","getByTestId","rootElement","dataTestId","getAllByTestId","getByPlaceholderText","text","getAllByPlaceholderText","getByClassName","className","document","getElementsByClassName","getFirstByClassName","role","options","arguments","length","undefined","getAllByRole","getByLabelText","getAllByLabelText","getByText","getAllByText","clickElement","click","hoverElement","hover","typeText","waitForDebounceMs","_callee4","promise","_context4","type","delay","sent","expectActiveElementToHaveExactText","activeElement","toHaveTextContent","RegExp","expectActiveElementToHavePartialText","pressNavigationKey","command","TAB","_callee5","_context5","tab","keyboard","timeout","Promise","resolve","setTimeout","waitForElementVisible","getterFunc","waitFor","_callee6","_context6","toBeVisible","then","typeMultipleTimes","count","_callee7","_context7","repeat","drag","_ref5","_ref5$delta","_ref5$toCoords","_ref5$toElm","_ref5$steps","steps","_ref5$duration","duration","to","step","current","clientX","clientY","fireEvent","pointerEnter","pointerOver","pointerMove","pointerDown","i","_context8","pointerUp","_callee8"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { queries } from "@storybook/
|
|
1
|
+
import { queries } from "@storybook/testing-library";
|
|
2
2
|
import { BoundFunctions, Screen, SelectorMatcherOptions } from "@testing-library/react";
|
|
3
3
|
import { NavigationCommand as NavigationCommandType } from "./constants";
|
|
4
4
|
export type Canvas = HTMLElement | BoundFunctions<typeof queries>;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export * from "./events";
|
|
2
2
|
export * from "./SubIcon";
|
|
3
|
-
export
|
|
4
|
-
export
|
|
3
|
+
export { default as VibeComponent } from "./VibeComponent";
|
|
4
|
+
export { default as VibeComponentProps } from "./VibeComponentProps";
|
|
5
5
|
export * from "./withStaticProps";
|
|
6
6
|
export * from "./ArrayLastElement";
|
|
7
7
|
export * from "./SplitString";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{defineProperty as t}from"../../../../_virtual/_rollupPluginBabelHelpers.js";import{__rest as r}from"../../../../_virtual/_tslib.js";import{getTestId as a,ComponentDefaultTestId as e}from"../../../tests/testIds.js";import s from"classnames";import
|
|
1
|
+
import{defineProperty as t}from"../../../../_virtual/_rollupPluginBabelHelpers.js";import{__rest as r}from"../../../../_virtual/_tslib.js";import{getTestId as a,ComponentDefaultTestId as e}from"../../../tests/testIds.js";import s from"classnames";import i from"../../Button/Button.js";import o from"react";import n from"./AlertBannerButton.module.scss.js";var m=function(m){var l=m.marginLeft,d=void 0!==l&&l,c=m.isDarkBackground,u=void 0!==c&&c,f=m.id,p=m["data-testid"],B=r(m,["marginLeft","isDarkBackground","id","data-testid"]),g=Object.assign(Object.assign({},i.defaultProps),B),j=s(t(t({},n.marginLeft,d),n.darkBackground,u));return o.createElement("div",{className:j,"data-testid":p||a(e.ALERT_BANNER_BUTTON,f),id:f},o.createElement(i,Object.assign({},g,{size:"small",className:s(n.bannerButton),color:"on-primary-color"})))};Object.assign(m,{isAlertBannerItem:!0});export{m as default};
|
|
2
2
|
//# sourceMappingURL=AlertBannerButton.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AlertBannerButton.js","sources":["../../../../../src/components/AlertBanner/AlertBannerButton/AlertBannerButton.tsx"],"sourcesContent":["import { ComponentDefaultTestId, getTestId } from \"../../../tests/test-ids-utils\";\nimport cx from \"classnames\";\nimport Button, { ButtonProps } from \"../../Button/Button\";\nimport React, { FC } from \"react\";\nimport styles from \"./AlertBannerButton.module.scss\";\n\nexport interface AlertBannerButtonProps extends ButtonProps {\n /**\n * If true, the button is displayed on a dark background.\n */\n isDarkBackground?: boolean;\n}\n\nconst AlertBannerButton: FC<AlertBannerButtonProps> = ({\n marginLeft = false,\n isDarkBackground = false,\n id,\n \"data-testid\": dataTestId,\n ...buttonProps\n}) => {\n const classNames = cx({\n [styles.marginLeft]: marginLeft,\n [styles.darkBackground]: isDarkBackground\n });\n\n return (\n <div\n className={classNames}\n data-testid={dataTestId || getTestId(ComponentDefaultTestId.ALERT_BANNER_BUTTON, id)}\n id={id}\n >\n <Button {...
|
|
1
|
+
{"version":3,"file":"AlertBannerButton.js","sources":["../../../../../src/components/AlertBanner/AlertBannerButton/AlertBannerButton.tsx"],"sourcesContent":["import { ComponentDefaultTestId, getTestId } from \"../../../tests/test-ids-utils\";\nimport cx from \"classnames\";\nimport Button, { ButtonProps } from \"../../Button/Button\";\nimport React, { FC } from \"react\";\nimport styles from \"./AlertBannerButton.module.scss\";\n\nexport interface AlertBannerButtonProps extends ButtonProps {\n /**\n * If true, the button is displayed on a dark background.\n */\n isDarkBackground?: boolean;\n}\n\nconst AlertBannerButton: FC<AlertBannerButtonProps> = ({\n marginLeft = false,\n isDarkBackground = false,\n id,\n \"data-testid\": dataTestId,\n ...buttonProps\n}) => {\n const overrideButtonProps = { ...Button.defaultProps, ...buttonProps };\n\n const classNames = cx({\n [styles.marginLeft]: marginLeft,\n [styles.darkBackground]: isDarkBackground\n });\n\n return (\n <div\n className={classNames}\n data-testid={dataTestId || getTestId(ComponentDefaultTestId.ALERT_BANNER_BUTTON, id)}\n id={id}\n >\n <Button {...overrideButtonProps} size=\"small\" className={cx(styles.bannerButton)} color=\"on-primary-color\" />\n </div>\n );\n};\n\nObject.assign(AlertBannerButton, {\n isAlertBannerItem: true\n});\n\nexport default AlertBannerButton;\n"],"names":["AlertBannerButton","_a","_a$marginLeft","marginLeft","_a$isDarkBackground","isDarkBackground","id","dataTestId","buttonProps","__rest","overrideButtonProps","Button","defaultProps","classNames","cx","_defineProperty","styles","darkBackground","React","createElement","className","getTestId","ComponentDefaultTestId","ALERT_BANNER_BUTTON","size","bannerButton","color","Object","assign","isAlertBannerItem"],"mappings":"oWAaA,IAAMA,EAAgD,SAACC,GAAA,IAAAC,EAI5BD,EAHzBE,WAAAA,OAAa,IAAHD,GAAQA,EAAAE,EAGOH,EAFzBI,iBAAAA,OAAmB,IAAHD,GAAQA,EACxBE,EACyBL,EADzBK,GACeC,EAAUN,EAAzB,eACGO,EAAWC,EAAAR,EALuC,sDAO/CS,iCAA2BC,EAAOC,cAAiBJ,GAEnDK,EAAaC,EAAEC,EAAAA,KAClBC,EAAOb,WAAaA,GACpBa,EAAOC,eAAiBZ,IAG3B,OACEa,EACEC,cAAA,MAAA,CAAAC,UAAWP,EAAU,cACRN,GAAcc,EAAUC,EAAuBC,oBAAqBjB,GACjFA,GAAIA,GAEJY,EAACC,cAAAR,mBAAWD,EAAmB,CAAEc,KAAK,QAAQJ,UAAWN,EAAGE,EAAOS,cAAeC,MAAM,sBAG9F,EAEAC,OAAOC,OAAO5B,EAAmB,CAC/B6B,mBAAmB"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{defineProperty as e}from"../../../_virtual/_rollupPluginBabelHelpers.js";import
|
|
1
|
+
import{defineProperty as e}from"../../../_virtual/_rollupPluginBabelHelpers.js";import t,{forwardRef as a,useRef as o,useEffect as n,useCallback as r,useMemo as i}from"react";import{camelCase as s}from"lodash-es";import l from"classnames";import{SIZES as c}from"../../constants/sizes.js";import u from"../../hooks/useMergeRef.js";import{NOOP as d}from"../../utils/function-utils.js";import m from"../Icon/Icon.js";import p from"../Loader/Loader.js";import{BUTTON_ICON_SIZE as f,SMALL_BUTTON_ICON_SIZE as g,ButtonColor as y,ButtonType as b,ButtonInputType as v}from"./ButtonConstants.js";import{TRANSPARENT_COLOR as h,getParentBackgroundColorNotTransparent as C}from"./helper/dom-helpers.js";import{getTestId as j}from"../../tests/testIds.js";import{withStaticProps as x}from"../../types/withStaticProps.js";import"../../utils/colors-vars-map.js";import{getStyle as F}from"../../helpers/typesciptCssModulesHelper.js";import{ComponentDefaultTestId as N,ComponentVibeId as k}from"../../tests/constants.js";import E from"./Button.module.scss.js";import{useButtonLoading as I}from"./helper/useButtonLoading.js";var B=a((function(a,c){var d=a.className,y=a.children,b=a.kind,v=a.onClick,h=a.name,x=a.size,B=a.color,P=a.disabled,S=a.rightIcon,T=a.leftIcon,L=a.success,O=a.successText,z=a.successIcon,M=a.style,w=a.loading,D=a.loaderClassName,U=a.active,A=a.activeButtonClassName,H=a.id,R=a.marginRight,_=a.marginLeft,q=a.type,G=a.onMouseDown,J=a.ariaLabel,K=a.rightFlat,Q=a.leftFlat,V=a.preventClickAnimation,W=a.noSidePadding,X=a.onFocus,Y=a.onBlur,Z=a.ariaLabeledBy,$=a.defaultTextColorOnPrimaryColor,ee=a.ariaHasPopup,te=a.ariaExpanded,ae=a.ariaControls,oe=a["aria-describedby"],ne=a["aria-hidden"],re=a["aria-pressed"],ie=a.blurOnMouseUp,se=a["data-testid"],le=a.insetFocus,ce=a.tabIndex,ue=o(null),de=u(c,ue),me=I({isLoading:w}).loading;n((function(){if(("on-primary-color"===B||"fixed-light"===B)&&"primary"===b&&ue.current){var e=ue.current;e.style.color=C(e,$)}}),[b,ue,B,$]);var pe=r((function(){var e=ue.current;!P&&e&&ie&&e.blur()}),[P,ue,ie]),fe=r((function(e){P||me||L?e.preventDefault():v&&v(e)}),[v,P,me,L]),ge=r((function(e){P||me||L?e.preventDefault():G&&G(e)}),[G,P,me,L]),ye=i((function(){var t,a=L?"positive":B;return l(d,E.button,F(E,s("size-"+x)),F(E,s("kind-"+b)),F(E,s("color-"+a)),(e(e(e(e(e(e(e(e(e(e(t={},E.success,L),F(E,s("color-"+a+"-active")),U),A,U),E.marginRight,R),E.marginLeft,_),E.rightFlat,K),E.leftFlat,Q),E.preventClickAnimation,V),E.noSidePadding,W),E.disabled,P),e(t,E.insetFocusStyle,le)))}),[L,B,d,x,b,U,A,R,_,K,Q,V,W,P,le]),be=i((function(){return{ref:de,type:q,className:ye,name:h,onMouseUp:pe,style:M,onClick:fe,id:H,onFocus:X,onBlur:Y,tabIndex:P||ne?-1:ce,"data-testid":se||j(N.BUTTON,H),"data-vibe":k.BUTTON,onMouseDown:ge,"aria-disabled":P,"aria-busy":me,"aria-labelledby":Z,"aria-label":J,"aria-haspopup":ee,"aria-expanded":te,"aria-controls":ae,"aria-describedby":oe,"aria-hidden":ne,"aria-pressed":re}}),[de,q,ye,h,pe,M,fe,H,X,Y,ce,se,ge,P,me,Z,J,ee,te,ae,oe,ne,re]),ve=r((function(e){if("function"==typeof e)switch(x){case"xxs":case"xs":return g;default:return f}}),[x]),he=i((function(){return t.Children.toArray(y).some(Boolean)}),[y]),Ce=i((function(){return t.createElement(t.Fragment,null,T?t.createElement(m,{iconType:"font",icon:T,iconSize:ve(T),className:l(e({},E.leftIcon,he)),ignoreFocusStyle:!0}):null,y,S?t.createElement(m,{iconType:"font",icon:S,iconSize:ve(S),className:l(e({},E.rightIcon,he)),ignoreFocusStyle:!0}):null)}),[y,he,ve,T,S]);return me?t.createElement("button",Object.assign({},be,{key:"".concat(H,"-loading")}),t.createElement("span",{className:l(E.loader,D)},t.createElement(p,{className:E.loaderSvg}),t.createElement("span",{"aria-hidden":!0,className:E.textPlaceholder},Ce))):L?t.createElement("button",Object.assign({},be,{key:"".concat(H,"-success")}),t.createElement("span",{className:E.successContent},z?t.createElement(m,{iconType:"font",icon:z,iconSize:ve(z),className:l(e({},E.leftIcon,!!O)),ignoreFocusStyle:!0}):null,O),t.createElement("span",{"aria-hidden":"true",className:E.textPlaceholder},Ce)):t.createElement("button",Object.assign({},be,{key:"".concat(H,"-button")}),Ce)}));B.defaultProps={name:void 0,style:void 0,kind:"primary",onClick:d,size:"medium",color:"primary",disabled:!1,rightIcon:null,leftIcon:null,success:!1,successText:"",successIcon:null,loading:!1,loaderClassName:void 0,active:!1,marginRight:!1,marginLeft:!1,type:"button",onMouseDown:d,rightFlat:!1,leftFlat:!1,preventClickAnimation:!1,noSidePadding:!1,onFocus:d,onBlur:d,defaultTextColorOnPrimaryColor:h,ariaHasPopup:void 0,blurOnMouseUp:!0,ariaExpanded:void 0,ariaControls:void 0,ariaLabel:void 0,ariaLabeledBy:void 0,insetFocus:!1};var P=x(B,{sizes:c,colors:y,kinds:b,types:v,inputTags:v});export{P as default};
|
|
2
2
|
//# sourceMappingURL=Button.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Button.js","sources":["../../../../src/components/Button/Button.tsx"],"sourcesContent":["/* eslint-disable react/button-has-type */\nimport React, { AriaAttributes, forwardRef, useCallback, useEffect, useMemo, useRef } from \"react\";\nimport { camelCase } from \"lodash-es\";\nimport cx from \"classnames\";\nimport { SIZES } from \"../../constants\";\nimport useMergeRef from \"../../hooks/useMergeRef\";\nimport { NOOP } from \"../../utils/function-utils\";\nimport Icon from \"../../components/Icon/Icon\";\nimport Loader from \"../../components/Loader/Loader\";\nimport {\n BUTTON_ICON_SIZE,\n ButtonColor as ButtonColorEnum,\n ButtonInputType as ButtonInputTypeEnum,\n ButtonType as ButtonTypeEnum,\n SMALL_BUTTON_ICON_SIZE\n} from \"./ButtonConstants\";\nimport { ButtonColor, ButtonInputType, ButtonType, ButtonSize } from \"./Button.types\";\nimport { getParentBackgroundColorNotTransparent, TRANSPARENT_COLOR } from \"./helper/dom-helpers\";\nimport { getTestId } from \"../../tests/test-ids-utils\";\nimport { SubIcon, VibeComponentProps, withStaticProps } from \"../../types\";\nimport { getStyle } from \"../../helpers/typesciptCssModulesHelper\";\nimport { ComponentDefaultTestId, ComponentVibeId } from \"../../tests/constants\";\nimport styles from \"./Button.module.scss\";\nimport { useButtonLoading } from \"./helper/useButtonLoading\";\n\nexport interface ButtonProps extends VibeComponentProps {\n children: React.ReactNode;\n /** Custom class names to pass to the component */\n className?: string;\n activeButtonClassName?: string;\n /** The button's kind */\n kind?: ButtonType;\n /** Callback function to run when the button is clicked */\n onClick?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n onMouseDown?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n /** Blur on button click */\n blurOnMouseUp?: boolean;\n /** Name of the button - for form submit usages */\n name?: string;\n /** The button's size */\n size?: ButtonSize;\n /** The button's color */\n color?: ButtonColor;\n /** The button's type */\n type?: ButtonInputType;\n /** Whether the button should be disabled or not */\n disabled?: boolean;\n /** Icon to place on the right */\n rightIcon?: SubIcon;\n /** Icon to place on the left */\n leftIcon?: SubIcon;\n /** the success props are used when you have async action and wants to display a success message */\n success?: boolean;\n /** Success icon name */\n successIcon?: SubIcon;\n /** Success text */\n successText?: string;\n /** loading boolean which switches the text to a loader */\n loading?: boolean;\n /** className which is applied to loader container **/\n loaderClassName?: string;\n style?: React.CSSProperties;\n /** displays the active state */\n active?: boolean;\n /** id to pass to the button */\n id?: string;\n /** adds 8px margin to the right */\n marginRight?: boolean;\n /** adds 8px margin to the left */\n marginLeft?: boolean;\n /** element id to describe the button accordingly */\n ariaLabeledBy?: string;\n /** aria label to provide important when providing only Icon */\n ariaLabel?: string;\n /** aria for a button popup */\n ariaHasPopup?: React.HTMLProps<HTMLButtonElement>[\"aria-haspopup\"];\n /** aria to be set if the popup is open */\n ariaExpanded?: boolean;\n /** aria controls - receives id for the controlled region */\n ariaControls?: string;\n \"aria-describedby\"?: AriaAttributes[\"aria-describedby\"];\n /**\n * aria to be used for screen reader to know if the button is hidden\n */\n \"aria-hidden\"?: AriaAttributes[\"aria-hidden\"];\n /**\n * Indicates the current \"pressed\" state of toggle buttons\n */\n \"aria-pressed\"?: AriaAttributes[\"aria-pressed\"];\n /** On Button Focus callback */\n onFocus?: (event: React.FocusEvent<HTMLButtonElement>) => void;\n /** On Button Blur callback */\n onBlur?: (event: React.FocusEvent<HTMLButtonElement>) => void;\n rightFlat?: boolean;\n leftFlat?: boolean;\n preventClickAnimation?: boolean;\n noSidePadding?: boolean;\n /** default color for text color in ON_PRIMARY_COLOR kind (should be any type of css color (rbg, var, hex...) */\n defaultTextColorOnPrimaryColor?: string;\n \"data-testid\"?: string;\n /** Change the focus indicator from around the button to within it */\n insetFocus?: boolean;\n /** Specifies the tab order of an element */\n tabIndex?: number;\n}\n\nconst Button = forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n className,\n children,\n kind = \"primary\",\n onClick = NOOP,\n name,\n size = \"medium\",\n color = \"primary\",\n disabled = false,\n rightIcon = null,\n leftIcon = null,\n success = false,\n successText = \"\",\n successIcon = null,\n style,\n loading: isLoading = false,\n loaderClassName,\n active = false,\n activeButtonClassName,\n id,\n marginRight = false,\n marginLeft = false,\n type = \"button\",\n onMouseDown = NOOP,\n ariaLabel,\n rightFlat = false,\n leftFlat = false,\n preventClickAnimation = false,\n noSidePadding = false,\n onFocus = NOOP,\n onBlur = NOOP,\n ariaLabeledBy,\n defaultTextColorOnPrimaryColor = TRANSPARENT_COLOR,\n ariaHasPopup,\n ariaExpanded,\n ariaControls,\n \"aria-describedby\": ariaDescribedBy,\n \"aria-hidden\": ariaHidden,\n \"aria-pressed\": ariaPressed,\n blurOnMouseUp = true,\n \"data-testid\": dataTestId,\n insetFocus = false,\n tabIndex\n }: ButtonProps,\n ref\n ) => {\n const buttonRef = useRef<HTMLButtonElement>(null);\n const mergedRef = useMergeRef(ref, buttonRef);\n\n const { loading } = useButtonLoading({ isLoading });\n\n useEffect(() => {\n if (color !== \"on-primary-color\" && color !== \"fixed-light\") return;\n if (kind !== \"primary\") return;\n if (!buttonRef.current) return;\n\n const buttonElement = buttonRef.current;\n buttonElement.style.color = getParentBackgroundColorNotTransparent(buttonElement, defaultTextColorOnPrimaryColor);\n }, [kind, buttonRef, color, defaultTextColorOnPrimaryColor]);\n\n const onMouseUp = useCallback(() => {\n const button = buttonRef.current;\n if (disabled || !button) {\n return;\n }\n if (blurOnMouseUp) {\n button.blur();\n }\n }, [disabled, buttonRef, blurOnMouseUp]);\n\n const onButtonClicked = useCallback(\n (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {\n if (disabled || loading || success) {\n event.preventDefault();\n return;\n }\n\n if (onClick) {\n onClick(event);\n }\n },\n [onClick, disabled, loading, success]\n );\n\n const onMouseDownClicked = useCallback(\n (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {\n if (disabled || loading || success) {\n event.preventDefault();\n return;\n }\n\n if (onMouseDown) {\n onMouseDown(event);\n }\n },\n [onMouseDown, disabled, loading, success]\n );\n\n const classNames = useMemo(() => {\n const calculatedColor = success ? \"positive\" : color;\n return cx(\n className,\n styles.button,\n getStyle(styles, camelCase(\"size-\" + size)),\n getStyle(styles, camelCase(\"kind-\" + kind)),\n getStyle(styles, camelCase(\"color-\" + calculatedColor)),\n {\n [styles.success]: success,\n [getStyle(styles, camelCase(\"color-\" + calculatedColor + \"-active\"))]: active,\n [activeButtonClassName]: active,\n [styles.marginRight]: marginRight,\n [styles.marginLeft]: marginLeft,\n [styles.rightFlat]: rightFlat,\n [styles.leftFlat]: leftFlat,\n [styles.preventClickAnimation]: preventClickAnimation,\n [styles.noSidePadding]: noSidePadding,\n [styles.disabled]: disabled,\n [styles.insetFocusStyle]: insetFocus\n }\n );\n }, [\n success,\n color,\n className,\n size,\n kind,\n active,\n activeButtonClassName,\n marginRight,\n marginLeft,\n rightFlat,\n leftFlat,\n preventClickAnimation,\n noSidePadding,\n disabled,\n insetFocus\n ]);\n\n const buttonProps = useMemo(() => {\n const props: Record<string, unknown> = {\n ref: mergedRef,\n type,\n className: classNames,\n name,\n onMouseUp,\n style,\n onClick: onButtonClicked,\n id,\n onFocus,\n onBlur,\n tabIndex: disabled || ariaHidden ? -1 : tabIndex,\n \"data-testid\": dataTestId || getTestId(ComponentDefaultTestId.BUTTON, id),\n \"data-vibe\": ComponentVibeId.BUTTON,\n onMouseDown: onMouseDownClicked,\n \"aria-disabled\": disabled,\n \"aria-busy\": loading,\n \"aria-labelledby\": ariaLabeledBy,\n \"aria-label\": ariaLabel,\n \"aria-haspopup\": ariaHasPopup,\n \"aria-expanded\": ariaExpanded,\n \"aria-controls\": ariaControls,\n \"aria-describedby\": ariaDescribedBy,\n \"aria-hidden\": ariaHidden,\n \"aria-pressed\": ariaPressed\n };\n return props;\n }, [\n mergedRef,\n type,\n classNames,\n name,\n onMouseUp,\n style,\n onButtonClicked,\n id,\n onFocus,\n onBlur,\n tabIndex,\n dataTestId,\n onMouseDownClicked,\n disabled,\n loading,\n ariaLabeledBy,\n ariaLabel,\n ariaHasPopup,\n ariaExpanded,\n ariaControls,\n ariaDescribedBy,\n ariaHidden,\n ariaPressed\n ]);\n\n const iconSize = useCallback(\n (icon: SubIcon) => {\n if (typeof icon !== \"function\") return;\n switch (size) {\n case \"xxs\":\n case \"xs\":\n return SMALL_BUTTON_ICON_SIZE;\n default:\n return BUTTON_ICON_SIZE;\n }\n },\n [size]\n );\n\n const hasRenderableChildren = useMemo(() => React.Children.toArray(children).some(Boolean), [children]);\n\n const buttonContent = useMemo(\n () => (\n <>\n {leftIcon ? (\n <Icon\n iconType=\"font\"\n icon={leftIcon}\n iconSize={iconSize(leftIcon)}\n className={cx({\n [styles.leftIcon]: hasRenderableChildren\n })}\n ignoreFocusStyle\n />\n ) : null}\n {children}\n {rightIcon ? (\n <Icon\n iconType=\"font\"\n icon={rightIcon}\n iconSize={iconSize(rightIcon)}\n className={cx({\n [styles.rightIcon]: hasRenderableChildren\n })}\n ignoreFocusStyle\n />\n ) : null}\n </>\n ),\n [children, hasRenderableChildren, iconSize, leftIcon, rightIcon]\n );\n\n if (loading) {\n return (\n <button {...buttonProps} key={`${id}-loading`}>\n <span className={cx(styles.loader, loaderClassName)}>\n <Loader className={styles.loaderSvg} />\n <span aria-hidden className={styles.textPlaceholder}>\n {buttonContent}\n </span>\n </span>\n </button>\n );\n }\n\n if (success) {\n return (\n <button {...buttonProps} key={`${id}-success`}>\n <span className={styles.successContent}>\n {successIcon ? (\n <Icon\n iconType=\"font\"\n icon={successIcon}\n iconSize={iconSize(successIcon)}\n className={cx({\n [styles.leftIcon]: !!successText\n })}\n ignoreFocusStyle\n />\n ) : null}\n {successText}\n </span>\n <span aria-hidden=\"true\" className={styles.textPlaceholder}>\n {buttonContent}\n </span>\n </button>\n );\n }\n\n return (\n <button {...buttonProps} key={`${id}-button`}>\n {buttonContent}\n </button>\n );\n }\n);\n\ninterface ButtonStaticProps {\n sizes: typeof SIZES;\n colors: typeof ButtonColorEnum;\n kinds: typeof ButtonTypeEnum;\n types: typeof ButtonInputTypeEnum;\n inputTags: typeof ButtonInputTypeEnum;\n}\n\nexport default withStaticProps<ButtonProps, ButtonStaticProps>(Button, {\n sizes: SIZES,\n colors: ButtonColorEnum,\n kinds: ButtonTypeEnum,\n types: ButtonInputTypeEnum,\n inputTags: ButtonInputTypeEnum\n});\n"],"names":["withStaticProps","forwardRef","_ref","ref","className","children","_ref$kind","kind","_ref$onClick","onClick","NOOP","name","_ref$size","size","_ref$color","color","_ref$disabled","disabled","_ref$rightIcon","rightIcon","_ref$leftIcon","leftIcon","_ref$success","success","_ref$successText","successText","_ref$successIcon","successIcon","style","_ref$loading","loading","isLoading","loaderClassName","_ref$active","active","activeButtonClassName","id","_ref$marginRight","marginRight","_ref$marginLeft","marginLeft","_ref$type","type","_ref$onMouseDown","onMouseDown","ariaLabel","_ref$rightFlat","rightFlat","_ref$leftFlat","leftFlat","_ref$preventClickAnim","preventClickAnimation","_ref$noSidePadding","noSidePadding","_ref$onFocus","onFocus","_ref$onBlur","onBlur","ariaLabeledBy","_ref$defaultTextColor","defaultTextColorOnPrimaryColor","TRANSPARENT_COLOR","ariaHasPopup","ariaExpanded","ariaControls","ariaDescribedBy","ariaHidden","ariaPressed","_ref$blurOnMouseUp","blurOnMouseUp","dataTestId","_ref$insetFocus","insetFocus","tabIndex","buttonRef","useRef","mergedRef","useMergeRef","useButtonLoading","useEffect","current","buttonElement","getParentBackgroundColorNotTransparent","onMouseUp","useCallback","button","blur","onButtonClicked","event","preventDefault","onMouseDownClicked","classNames","useMemo","_cx","calculatedColor","cx","styles","getStyle","camelCase","_defineProperty","insetFocusStyle","buttonProps","getTestId","ComponentDefaultTestId","BUTTON","ComponentVibeId","iconSize","icon","SMALL_BUTTON_ICON_SIZE","BUTTON_ICON_SIZE","hasRenderableChildren","React","Children","toArray","some","Boolean","buttonContent","createElement","Fragment","Icon","iconType","ignoreFocusStyle","key","concat","loader","Loader","loaderSvg","textPlaceholder","successContent","Object","assign","sizes","SIZES","colors","ButtonColorEnum","kinds","ButtonTypeEnum","types","ButtonInputTypeEnum","inputTags"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Button.js","sources":["../../../../src/components/Button/Button.tsx"],"sourcesContent":["/* eslint-disable react/button-has-type */\nimport React, { AriaAttributes, forwardRef, useCallback, useEffect, useMemo, useRef } from \"react\";\nimport { camelCase } from \"lodash-es\";\nimport cx from \"classnames\";\nimport { SIZES } from \"../../constants\";\nimport useMergeRef from \"../../hooks/useMergeRef\";\nimport { NOOP } from \"../../utils/function-utils\";\nimport Icon from \"../../components/Icon/Icon\";\nimport Loader from \"../../components/Loader/Loader\";\nimport {\n BUTTON_ICON_SIZE,\n ButtonColor as ButtonColorEnum,\n ButtonInputType as ButtonInputTypeEnum,\n ButtonType as ButtonTypeEnum,\n SMALL_BUTTON_ICON_SIZE\n} from \"./ButtonConstants\";\nimport { ButtonColor, ButtonInputType, ButtonType, ButtonSize } from \"./Button.types\";\nimport { getParentBackgroundColorNotTransparent, TRANSPARENT_COLOR } from \"./helper/dom-helpers\";\nimport { getTestId } from \"../../tests/test-ids-utils\";\nimport { SubIcon, VibeComponentProps, withStaticProps } from \"../../types\";\nimport { getStyle } from \"../../helpers/typesciptCssModulesHelper\";\nimport { ComponentDefaultTestId, ComponentVibeId } from \"../../tests/constants\";\nimport styles from \"./Button.module.scss\";\nimport { useButtonLoading } from \"./helper/useButtonLoading\";\n\nexport interface ButtonProps extends VibeComponentProps {\n children: React.ReactNode;\n /** Custom class names to pass to the component */\n className?: string;\n activeButtonClassName?: string;\n /** The button's kind */\n kind?: ButtonType;\n /** Callback function to run when the button is clicked */\n onClick?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n onMouseDown?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n /** Blur on button click */\n blurOnMouseUp?: boolean;\n /** Name of the button - for form submit usages */\n name?: string;\n /** The button's size */\n size?: ButtonSize;\n /** The button's color */\n color?: ButtonColor;\n /** The button's type */\n type?: ButtonInputType;\n /** Whether the button should be disabled or not */\n disabled?: boolean;\n /** Icon to place on the right */\n rightIcon?: SubIcon;\n /** Icon to place on the left */\n leftIcon?: SubIcon;\n /** the success props are used when you have async action and wants to display a success message */\n success?: boolean;\n /** Success icon name */\n successIcon?: SubIcon;\n /** Success text */\n successText?: string;\n /** loading boolean which switches the text to a loader */\n loading?: boolean;\n /** className which is applied to loader container **/\n loaderClassName?: string;\n style?: React.CSSProperties;\n /** displays the active state */\n active?: boolean;\n /** id to pass to the button */\n id?: string;\n /** adds 8px margin to the right */\n marginRight?: boolean;\n /** adds 8px margin to the left */\n marginLeft?: boolean;\n /** element id to describe the button accordingly */\n ariaLabeledBy?: string;\n /** aria label to provide important when providing only Icon */\n ariaLabel?: string;\n /** aria for a button popup */\n ariaHasPopup?: React.HTMLProps<HTMLButtonElement>[\"aria-haspopup\"];\n /** aria to be set if the popup is open */\n ariaExpanded?: boolean;\n /** aria controls - receives id for the controlled region */\n ariaControls?: string;\n \"aria-describedby\"?: AriaAttributes[\"aria-describedby\"];\n /**\n * aria to be used for screen reader to know if the button is hidden\n */\n \"aria-hidden\"?: AriaAttributes[\"aria-hidden\"];\n /**\n * Indicates the current \"pressed\" state of toggle buttons\n */\n \"aria-pressed\"?: AriaAttributes[\"aria-pressed\"];\n /** On Button Focus callback */\n onFocus?: (event: React.FocusEvent<HTMLButtonElement>) => void;\n /** On Button Blur callback */\n onBlur?: (event: React.FocusEvent<HTMLButtonElement>) => void;\n rightFlat?: boolean;\n leftFlat?: boolean;\n preventClickAnimation?: boolean;\n noSidePadding?: boolean;\n /** default color for text color in ON_PRIMARY_COLOR kind (should be any type of css color (rbg, var, hex...) */\n defaultTextColorOnPrimaryColor?: string;\n \"data-testid\"?: string;\n /** Change the focus indicator from around the button to within it */\n insetFocus?: boolean;\n /** Specifies the tab order of an element */\n tabIndex?: number;\n}\n\nconst Button = forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n className,\n children,\n kind,\n onClick,\n name,\n size,\n color,\n disabled,\n rightIcon,\n leftIcon,\n success,\n successText,\n successIcon,\n style,\n loading: isLoading,\n loaderClassName,\n active,\n activeButtonClassName,\n id,\n marginRight,\n marginLeft,\n type,\n onMouseDown,\n ariaLabel,\n rightFlat,\n leftFlat,\n preventClickAnimation,\n noSidePadding,\n onFocus,\n onBlur,\n ariaLabeledBy,\n defaultTextColorOnPrimaryColor,\n ariaHasPopup,\n ariaExpanded,\n ariaControls,\n \"aria-describedby\": ariaDescribedBy,\n \"aria-hidden\": ariaHidden,\n \"aria-pressed\": ariaPressed,\n blurOnMouseUp,\n \"data-testid\": dataTestId,\n insetFocus,\n tabIndex\n }: ButtonProps,\n ref\n ) => {\n const buttonRef = useRef<HTMLButtonElement>(null);\n const mergedRef = useMergeRef(ref, buttonRef);\n\n const { loading } = useButtonLoading({ isLoading });\n\n useEffect(() => {\n if (color !== \"on-primary-color\" && color !== \"fixed-light\") return;\n if (kind !== \"primary\") return;\n if (!buttonRef.current) return;\n\n const buttonElement = buttonRef.current;\n buttonElement.style.color = getParentBackgroundColorNotTransparent(buttonElement, defaultTextColorOnPrimaryColor);\n }, [kind, buttonRef, color, defaultTextColorOnPrimaryColor]);\n\n const onMouseUp = useCallback(() => {\n const button = buttonRef.current;\n if (disabled || !button) {\n return;\n }\n if (blurOnMouseUp) {\n button.blur();\n }\n }, [disabled, buttonRef, blurOnMouseUp]);\n\n const onButtonClicked = useCallback(\n (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {\n if (disabled || loading || success) {\n event.preventDefault();\n return;\n }\n\n if (onClick) {\n onClick(event);\n }\n },\n [onClick, disabled, loading, success]\n );\n\n const onMouseDownClicked = useCallback(\n (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {\n if (disabled || loading || success) {\n event.preventDefault();\n return;\n }\n\n if (onMouseDown) {\n onMouseDown(event);\n }\n },\n [onMouseDown, disabled, loading, success]\n );\n\n const classNames = useMemo(() => {\n const calculatedColor = success ? \"positive\" : color;\n return cx(\n className,\n styles.button,\n getStyle(styles, camelCase(\"size-\" + size)),\n getStyle(styles, camelCase(\"kind-\" + kind)),\n getStyle(styles, camelCase(\"color-\" + calculatedColor)),\n {\n [styles.success]: success,\n [getStyle(styles, camelCase(\"color-\" + calculatedColor + \"-active\"))]: active,\n [activeButtonClassName]: active,\n [styles.marginRight]: marginRight,\n [styles.marginLeft]: marginLeft,\n [styles.rightFlat]: rightFlat,\n [styles.leftFlat]: leftFlat,\n [styles.preventClickAnimation]: preventClickAnimation,\n [styles.noSidePadding]: noSidePadding,\n [styles.disabled]: disabled,\n [styles.insetFocusStyle]: insetFocus\n }\n );\n }, [\n success,\n color,\n className,\n size,\n kind,\n active,\n activeButtonClassName,\n marginRight,\n marginLeft,\n rightFlat,\n leftFlat,\n preventClickAnimation,\n noSidePadding,\n disabled,\n insetFocus\n ]);\n\n const buttonProps = useMemo(() => {\n const props: Record<string, unknown> = {\n ref: mergedRef,\n type,\n className: classNames,\n name,\n onMouseUp,\n style,\n onClick: onButtonClicked,\n id,\n onFocus,\n onBlur,\n tabIndex: disabled || ariaHidden ? -1 : tabIndex,\n \"data-testid\": dataTestId || getTestId(ComponentDefaultTestId.BUTTON, id),\n \"data-vibe\": ComponentVibeId.BUTTON,\n onMouseDown: onMouseDownClicked,\n \"aria-disabled\": disabled,\n \"aria-busy\": loading,\n \"aria-labelledby\": ariaLabeledBy,\n \"aria-label\": ariaLabel,\n \"aria-haspopup\": ariaHasPopup,\n \"aria-expanded\": ariaExpanded,\n \"aria-controls\": ariaControls,\n \"aria-describedby\": ariaDescribedBy,\n \"aria-hidden\": ariaHidden,\n \"aria-pressed\": ariaPressed\n };\n return props;\n }, [\n mergedRef,\n type,\n classNames,\n name,\n onMouseUp,\n style,\n onButtonClicked,\n id,\n onFocus,\n onBlur,\n tabIndex,\n dataTestId,\n onMouseDownClicked,\n disabled,\n loading,\n ariaLabeledBy,\n ariaLabel,\n ariaHasPopup,\n ariaExpanded,\n ariaControls,\n ariaDescribedBy,\n ariaHidden,\n ariaPressed\n ]);\n\n const iconSize = useCallback(\n (icon: SubIcon) => {\n if (typeof icon !== \"function\") return;\n switch (size) {\n case \"xxs\":\n case \"xs\":\n return SMALL_BUTTON_ICON_SIZE;\n default:\n return BUTTON_ICON_SIZE;\n }\n },\n [size]\n );\n\n const hasRenderableChildren = useMemo(() => React.Children.toArray(children).some(Boolean), [children]);\n\n const buttonContent = useMemo(\n () => (\n <>\n {leftIcon ? (\n <Icon\n iconType=\"font\"\n icon={leftIcon}\n iconSize={iconSize(leftIcon)}\n className={cx({\n [styles.leftIcon]: hasRenderableChildren\n })}\n ignoreFocusStyle\n />\n ) : null}\n {children}\n {rightIcon ? (\n <Icon\n iconType=\"font\"\n icon={rightIcon}\n iconSize={iconSize(rightIcon)}\n className={cx({\n [styles.rightIcon]: hasRenderableChildren\n })}\n ignoreFocusStyle\n />\n ) : null}\n </>\n ),\n [children, hasRenderableChildren, iconSize, leftIcon, rightIcon]\n );\n\n if (loading) {\n return (\n <button {...buttonProps} key={`${id}-loading`}>\n <span className={cx(styles.loader, loaderClassName)}>\n <Loader className={styles.loaderSvg} />\n <span aria-hidden className={styles.textPlaceholder}>\n {buttonContent}\n </span>\n </span>\n </button>\n );\n }\n\n if (success) {\n return (\n <button {...buttonProps} key={`${id}-success`}>\n <span className={styles.successContent}>\n {successIcon ? (\n <Icon\n iconType=\"font\"\n icon={successIcon}\n iconSize={iconSize(successIcon)}\n className={cx({\n [styles.leftIcon]: !!successText\n })}\n ignoreFocusStyle\n />\n ) : null}\n {successText}\n </span>\n <span aria-hidden=\"true\" className={styles.textPlaceholder}>\n {buttonContent}\n </span>\n </button>\n );\n }\n\n return (\n <button {...buttonProps} key={`${id}-button`}>\n {buttonContent}\n </button>\n );\n }\n);\n\nButton.defaultProps = {\n name: undefined,\n style: undefined,\n kind: \"primary\",\n onClick: NOOP,\n size: \"medium\",\n color: \"primary\",\n disabled: false,\n rightIcon: null,\n leftIcon: null,\n success: false,\n successText: \"\",\n successIcon: null,\n loading: false,\n loaderClassName: undefined,\n active: false,\n marginRight: false,\n marginLeft: false,\n type: \"button\",\n onMouseDown: NOOP,\n rightFlat: false,\n leftFlat: false,\n preventClickAnimation: false,\n noSidePadding: false,\n onFocus: NOOP,\n onBlur: NOOP,\n defaultTextColorOnPrimaryColor: TRANSPARENT_COLOR,\n ariaHasPopup: undefined,\n blurOnMouseUp: true,\n ariaExpanded: undefined,\n ariaControls: undefined,\n ariaLabel: undefined,\n ariaLabeledBy: undefined,\n insetFocus: false\n};\n\ninterface ButtonStaticProps {\n sizes: typeof SIZES;\n colors: typeof ButtonColorEnum;\n kinds: typeof ButtonTypeEnum;\n types: typeof ButtonInputTypeEnum;\n inputTags: typeof ButtonInputTypeEnum;\n}\n\nexport default withStaticProps<ButtonProps, ButtonStaticProps>(Button, {\n sizes: SIZES,\n colors: ButtonColorEnum,\n kinds: ButtonTypeEnum,\n types: ButtonInputTypeEnum,\n inputTags: ButtonInputTypeEnum\n});\n"],"names":["Button","forwardRef","_ref","ref","className","children","kind","onClick","name","size","color","disabled","rightIcon","leftIcon","success","successText","successIcon","style","isLoading","loading","loaderClassName","active","activeButtonClassName","id","marginRight","marginLeft","type","onMouseDown","ariaLabel","rightFlat","leftFlat","preventClickAnimation","noSidePadding","onFocus","onBlur","ariaLabeledBy","defaultTextColorOnPrimaryColor","ariaHasPopup","ariaExpanded","ariaControls","ariaDescribedBy","ariaHidden","ariaPressed","blurOnMouseUp","dataTestId","insetFocus","tabIndex","buttonRef","useRef","mergedRef","useMergeRef","useButtonLoading","useEffect","current","buttonElement","getParentBackgroundColorNotTransparent","onMouseUp","useCallback","button","blur","onButtonClicked","event","preventDefault","onMouseDownClicked","classNames","useMemo","_cx","calculatedColor","cx","styles","getStyle","camelCase","_defineProperty","insetFocusStyle","buttonProps","getTestId","ComponentDefaultTestId","BUTTON","ComponentVibeId","iconSize","icon","SMALL_BUTTON_ICON_SIZE","BUTTON_ICON_SIZE","hasRenderableChildren","React","Children","toArray","some","Boolean","buttonContent","createElement","Fragment","Icon","iconType","ignoreFocusStyle","key","concat","loader","Loader","loaderSvg","textPlaceholder","successContent","Object","assign","defaultProps","undefined","NOOP","TRANSPARENT_COLOR","withStaticProps","sizes","SIZES","colors","ButtonColorEnum","kinds","ButtonTypeEnum","types","ButtonInputTypeEnum","inputTags"],"mappings":"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"}
|