@muraldevkit/ui-toolkit 4.71.0 → 4.72.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/cjs/components/button/MrlButton/MrlButton.js +8 -1
- package/dist/cjs/components/button/MrlButton/MrlButton.js.map +1 -1
- package/dist/cjs/components/button/MrlIconButton/MrlIconButton.js +1 -4
- package/dist/cjs/components/button/MrlIconButton/MrlIconButton.js.map +1 -1
- package/dist/cjs/components/table/MrlSmartTable/MrlSmartTable.js +0 -1
- package/dist/cjs/components/table/MrlSmartTable/MrlSmartTable.js.map +1 -1
- package/dist/cjs/components/toolbar/MrlToolbarButton/MrlToolbarButton.js.map +1 -1
- package/dist/cjs/components/tooltip/MrlTooltip/MrlTooltip.js +1 -4
- package/dist/cjs/components/tooltip/MrlTooltip/MrlTooltip.js.map +1 -1
- package/dist/cjs/components/tooltip/MrlTooltipContent/MrlTooltipContent.js +1 -3
- package/dist/cjs/components/tooltip/MrlTooltipContent/MrlTooltipContent.js.map +1 -1
- package/dist/cjs/components/tooltip/constants.js.map +1 -1
- package/dist/cjs/contexts/MrlAnalyticsContext/MrlAnalyticsContext.js +61 -0
- package/dist/cjs/contexts/MrlAnalyticsContext/MrlAnalyticsContext.js.map +1 -0
- package/dist/cjs/hooks/useMrlAnalytics/useMrlAnalytics.js +68 -0
- package/dist/cjs/hooks/useMrlAnalytics/useMrlAnalytics.js.map +1 -0
- package/dist/cjs/index.js +6 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/version.js +6 -0
- package/dist/cjs/version.js.map +1 -0
- package/dist/components/button/MrlButton/MrlButton.d.ts +5 -0
- package/dist/components/button/MrlIconButton/MrlIconButton.d.ts +1 -3
- package/dist/components/toolbar/MrlToolbarButton/MrlToolbarButton.d.ts +0 -1
- package/dist/components/tooltip/MrlTooltip/MrlTooltip.d.ts +1 -3
- package/dist/components/tooltip/MrlTooltipContent/MrlTooltipContent.d.ts +1 -3
- package/dist/components/tooltip/constants.d.ts +0 -1
- package/dist/contexts/MrlAnalyticsContext/MrlAnalyticsContext.d.ts +25 -0
- package/dist/contexts/MrlAnalyticsContext/index.d.ts +2 -0
- package/dist/contexts/MrlAnalyticsContext/types.d.ts +22 -0
- package/dist/contexts/index.d.ts +1 -0
- package/dist/esm/components/button/MrlButton/MrlButton.js +8 -1
- package/dist/esm/components/button/MrlButton/MrlButton.js.map +1 -1
- package/dist/esm/components/button/MrlIconButton/MrlIconButton.js +1 -4
- package/dist/esm/components/button/MrlIconButton/MrlIconButton.js.map +1 -1
- package/dist/esm/components/table/MrlSmartTable/MrlSmartTable.js +0 -1
- package/dist/esm/components/table/MrlSmartTable/MrlSmartTable.js.map +1 -1
- package/dist/esm/components/toolbar/MrlToolbarButton/MrlToolbarButton.js.map +1 -1
- package/dist/esm/components/tooltip/MrlTooltip/MrlTooltip.js +1 -4
- package/dist/esm/components/tooltip/MrlTooltip/MrlTooltip.js.map +1 -1
- package/dist/esm/components/tooltip/MrlTooltipContent/MrlTooltipContent.js +1 -3
- package/dist/esm/components/tooltip/MrlTooltipContent/MrlTooltipContent.js.map +1 -1
- package/dist/esm/components/tooltip/constants.js.map +1 -1
- package/dist/esm/contexts/MrlAnalyticsContext/MrlAnalyticsContext.js +39 -0
- package/dist/esm/contexts/MrlAnalyticsContext/MrlAnalyticsContext.js.map +1 -0
- package/dist/esm/hooks/useMrlAnalytics/useMrlAnalytics.js +45 -0
- package/dist/esm/hooks/useMrlAnalytics/useMrlAnalytics.js.map +1 -0
- package/dist/esm/index.js +2 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/version.js +4 -0
- package/dist/esm/version.js.map +1 -0
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/useMrlAnalytics/index.d.ts +1 -0
- package/dist/hooks/useMrlAnalytics/useMrlAnalytics.d.ts +21 -0
- package/dist/hooks/useMrlAnalytics/useMrlAnalyticsDemo.d.ts +8 -0
- package/dist/styles/MrlTooltipContent/variables.scss +0 -4
- package/dist/styles.css +1 -1
- package/dist/types/components/button/MrlButton/MrlButton.d.ts +5 -0
- package/dist/types/components/button/MrlIconButton/MrlIconButton.d.ts +1 -3
- package/dist/types/components/toolbar/MrlToolbarButton/MrlToolbarButton.d.ts +0 -1
- package/dist/types/components/tooltip/MrlTooltip/MrlTooltip.d.ts +1 -3
- package/dist/types/components/tooltip/MrlTooltipContent/MrlTooltipContent.d.ts +1 -3
- package/dist/types/components/tooltip/constants.d.ts +0 -1
- package/dist/types/contexts/MrlAnalyticsContext/MrlAnalyticsContext.d.ts +25 -0
- package/dist/types/contexts/MrlAnalyticsContext/index.d.ts +2 -0
- package/dist/types/contexts/MrlAnalyticsContext/types.d.ts +22 -0
- package/dist/types/contexts/index.d.ts +1 -0
- package/dist/types/hooks/index.d.ts +1 -0
- package/dist/types/hooks/useMrlAnalytics/index.d.ts +1 -0
- package/dist/types/hooks/useMrlAnalytics/useMrlAnalytics.d.ts +21 -0
- package/dist/types/hooks/useMrlAnalytics/useMrlAnalyticsDemo.d.ts +8 -0
- package/dist/types/version.d.ts +1 -0
- package/dist/version.d.ts +1 -0
- package/package.json +2 -1
|
@@ -6,6 +6,7 @@ var classnames = require('classnames');
|
|
|
6
6
|
var constants$1 = require('../constants.js');
|
|
7
7
|
var helpers = require('../helpers.js');
|
|
8
8
|
var constants = require('../../loader/constants.js');
|
|
9
|
+
var useMrlAnalytics = require('../../../hooks/useMrlAnalytics/useMrlAnalytics.js');
|
|
9
10
|
var setAttributes = require('../../../utils/setAttributes/setAttributes.js');
|
|
10
11
|
var MrlTooltip = require('../../tooltip/MrlTooltip/MrlTooltip.js');
|
|
11
12
|
var MrlSpinner = require('../../loader/MrlSpinner/MrlSpinner.js');
|
|
@@ -33,7 +34,7 @@ function _interopNamespace(e) {
|
|
|
33
34
|
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
34
35
|
var classnames__default = /*#__PURE__*/_interopDefault(classnames);
|
|
35
36
|
|
|
36
|
-
var _excluded = ["attrs", "badge", "className", "disabled", "disableEvents", "icon", "iconPos", "kind", "loading", "loadingText", "onClick", "toggleAria", "toggleStyle", "text", "size", "state", "tooltip"];
|
|
37
|
+
var _excluded = ["attrs", "badge", "className", "disabled", "disableEvents", "icon", "iconPos", "kind", "loading", "loadingText", "onClick", "toggleAria", "toggleStyle", "text", "trackingId", "size", "state", "tooltip"];
|
|
37
38
|
var MrlButton = /*#__PURE__*/React__namespace.forwardRef(function MrlButton(_ref, ref) {
|
|
38
39
|
var attrs = _ref.attrs,
|
|
39
40
|
badge = _ref.badge,
|
|
@@ -56,6 +57,7 @@ var MrlButton = /*#__PURE__*/React__namespace.forwardRef(function MrlButton(_ref
|
|
|
56
57
|
toggleAria = _ref$toggleAria === void 0 ? constants$1.buttonDefaults.toggleAria : _ref$toggleAria,
|
|
57
58
|
toggleStyle = _ref.toggleStyle,
|
|
58
59
|
text = _ref.text,
|
|
60
|
+
trackingId = _ref.trackingId,
|
|
59
61
|
_ref$size = _ref.size,
|
|
60
62
|
size = _ref$size === void 0 ? constants$1.buttonDefaults.size : _ref$size,
|
|
61
63
|
_ref$state = _ref.state,
|
|
@@ -66,6 +68,7 @@ var MrlButton = /*#__PURE__*/React__namespace.forwardRef(function MrlButton(_ref
|
|
|
66
68
|
_React$useState2 = _rollupPluginBabelHelpers.slicedToArray(_React$useState, 2),
|
|
67
69
|
isSelected = _React$useState2[0],
|
|
68
70
|
setIsSelected = _React$useState2[1];
|
|
71
|
+
var trackInteraction = useMrlAnalytics.useMrlTrackInteraction('MrlButton', trackingId);
|
|
69
72
|
|
|
70
73
|
/**
|
|
71
74
|
* MrlButton could behave as a toggle button if toggleStyle is 'default' or 'secondary'
|
|
@@ -92,6 +95,10 @@ var MrlButton = /*#__PURE__*/React__namespace.forwardRef(function MrlButton(_ref
|
|
|
92
95
|
if (helpers._isDisabled(state, loading) || disabled || disableEvents) {
|
|
93
96
|
return;
|
|
94
97
|
}
|
|
98
|
+
trackInteraction({
|
|
99
|
+
action: 'click',
|
|
100
|
+
variant: kind
|
|
101
|
+
});
|
|
95
102
|
if (isToggleButton) {
|
|
96
103
|
setIsSelected(prevIsSelected => !prevIsSelected);
|
|
97
104
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MrlButton.js","sources":["../../../../../src/components/button/MrlButton/MrlButton.tsx"],"sourcesContent":["import * as React from 'react';\nimport classnames from 'classnames';\nimport {\n\tallowedButtonValues,\n\tbuttonDefaults,\n\tMrlButtonKind,\n\tMrlButtonSize,\n\tToggleAria,\n\tIconPosition\n} from '../constants';\nimport { _isDisabled, _isSelected, _spinnerProps } from '../helpers';\nimport { MrlSpinner, MrlTooltipAnchor, MrlTooltipPosition, MrlTooltip } from '../../';\nimport { spinnerDefaults } from '../../loader/constants';\nimport { AttrsObject, MrlComponentProps, setAttributes } from '../../../utils';\n\nimport './MrlButton.global.scss';\n\nexport type MrlButtonState = (typeof allowedButtonValues.states)[number];\nexport type ToggleStyle = (typeof allowedButtonValues.toggleStyles)[number];\n\nexport interface TooltipConfig {\n\t/**\n\t * The text to display in the tooltip\n\t */\n\ttext: string;\n\t/**\n\t * The position of the tooltip relative to the button\n\t */\n\tposition?: MrlTooltipPosition;\n\n\t/**\n\t * The anchor of the tooltip relative to the button\n\t */\n\tanchor?: MrlTooltipAnchor;\n\n\t/**\n\t * The data-qa attribute for the tooltip\n\t */\n\tdataQa?: string;\n}\n\nexport interface MrlButtonProps\n\textends Omit<MrlComponentProps, 'style'>,\n\t\tReact.ComponentProps<'button'> {\n\t/**\n\t * Applies additional HTML attributes to the button element.\n\t *\n\t * @deprecated\n\t */\n\tattrs?: AttrsObject;\n\t/**\n\t * Allow developers to add badge to buttons.\n\t */\n\tbadge?: React.ReactElement;\n\n\t/**\n\t * @deprecated - Use state=\"disabled\" or \"selected-disabled\" or \"skeleton\" instead.\n\t * Allow developers to change the disabled state based on user interactions.\n\t */\n\tdisabled?: boolean;\n\t/**\n\t * Allows developers the ability to disable built in event listeners so they can manage user\n\t * interactions from the application.\n\t */\n\tdisableEvents?: boolean;\n\t/**\n\t * Allow developers to add icon to buttons.\n\t */\n\ticon?: React.ReactElement;\n\t/**\n\t * Allows developers to right-align an icon within a button.\n\t */\n\ticonPos?: IconPosition;\n\t/**\n\t * Changes the visual emphasis of the button.\n\t */\n\tkind?: MrlButtonKind;\n\t/**\n\t * Displays a spinner in the button to indicate some action is in progress.\n\t */\n\tloading?: boolean;\n\t/**\n\t * Text for the spinner when the button is in a loading state.\n\t */\n\tloadingText?: string;\n\t/**\n\t * onClick event for the button.\n\t */\n\tonClick?: (e: React.SyntheticEvent<HTMLButtonElement>) => void;\n\t/**\n\t * Changes the size of the button so it can scale with its surrounding context.\n\t */\n\tsize?: MrlButtonSize;\n\t/**\n\t * Changes the state of the button based on user permissions or actions.\n\t */\n\tstate?: MrlButtonState;\n\t/**\n\t * The textual label describing the button's purpose/action.\n\t * Icon buttons require a text label to ensure accessibility.\n\t */\n\ttext: string;\n\t/**\n\t * Determines which aria setup to use for various toggle/selected styles.\n\t * pressed - use for an traditional “toggle button”\n\t * selected - use for tabs and custom select options\n\t * expanded - use for menus, panels, and popovers\n\t * checked - use for custom [radiobutton](https://www.w3.org/WAI/ARIA/apg/patterns/radiobutton/#wai-aria-roles-states-and-properties-16)\n\t * \t\tor [checkbox](https://www.w3.org/WAI/ARIA/apg/patterns/checkbox/#wai-aria-roles-states-and-properties-5) inputs\n\t */\n\ttoggleAria?: ToggleAria;\n\n\t/**\n\t * Tooltip configuration for the button\n\t */\n\ttooltip?: TooltipConfig;\n\n\t/**\n\t * Selected state variant when the button is a Toggle Button. The visual styles\n\t * are also impacted by the \"kind\" prop. Toggle buttons are only supported\n\t * when \"kind\" is set to either \"ghost\" or \"ghost-inverse\". Setting this prop\n\t * informs the component that this is a toggle button and to add that functionality\n\t */\n\ttoggleStyle?: ToggleStyle;\n}\n\nexport const MrlButton = React.forwardRef<HTMLButtonElement, MrlButtonProps>(function MrlButton(\n\t{\n\t\tattrs,\n\t\tbadge,\n\t\tclassName,\n\t\tdisabled = buttonDefaults.disabled,\n\t\tdisableEvents = false,\n\t\ticon,\n\t\ticonPos = buttonDefaults.iconPos,\n\t\tkind = buttonDefaults.kind,\n\t\tloading = false,\n\t\tloadingText = spinnerDefaults.text,\n\t\tonClick,\n\t\ttoggleAria = buttonDefaults.toggleAria,\n\t\ttoggleStyle,\n\t\ttext,\n\t\tsize = buttonDefaults.size,\n\t\tstate = buttonDefaults.state,\n\t\ttooltip,\n\t\t...remainingProps\n\t}: MrlButtonProps,\n\tref\n) {\n\tconst [isSelected, setIsSelected] = React.useState(() => _isSelected(state));\n\n\t/**\n\t * MrlButton could behave as a toggle button if toggleStyle is 'default' or 'secondary'\n\t */\n\tconst isToggleButton = toggleStyle && allowedButtonValues.toggleStyles.includes(toggleStyle);\n\n\t/**\n\t * We need to watch the value of state to keep in sync\n\t * the value of state passed as props and the internal\n\t * isSelected piece of state.\n\t */\n\tReact.useEffect(() => {\n\t\t// allows consumers to set the 'selected' or 'selected-disabled' state from a parent component.\n\t\tsetIsSelected(_isSelected(state));\n\t}, [state]);\n\n\t/**\n\t * Handle onClick events\n\t *\n\t * @param {React.MouseEvent<HTMLButtonElement>} e - mouse event\n\t */\n\tfunction handleOnClick(e: React.MouseEvent<HTMLButtonElement>) {\n\t\te.stopPropagation();\n\n\t\tif (_isDisabled(state, loading) || disabled || disableEvents) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (isToggleButton) {\n\t\t\tsetIsSelected((prevIsSelected) => !prevIsSelected);\n\t\t}\n\n\t\tif (onClick && typeof onClick === 'function') {\n\t\t\tonClick(e);\n\t\t}\n\t}\n\n\tconst classNames = classnames(\n\t\t'mrlButton',\n\t\t`mrlButton--${size}`,\n\t\t`mrlButton--${kind}`,\n\t\tstate === 'skeleton' && `mrlButton--skeleton`,\n\t\t!icon && loading && `mrlButton--loading`,\n\t\tisToggleButton && `toggleStyle--${toggleStyle}`,\n\t\ticon && `mrlButton--icon-${iconPos}`,\n\t\tclassName,\n\t\tattrs?.class || attrs?.className\n\t);\n\n\tif (attrs && attrs.class) delete attrs.class;\n\tif (attrs && attrs.className) delete attrs.className;\n\n\tconst spinnerProps = _spinnerProps(kind, size);\n\tconst spinner = (\n\t\t<MrlSpinner kind={spinnerProps.kind} role=\"none\" size={spinnerProps.size} text={loadingText} />\n\t);\n\n\tconst attributes = setAttributes(attrs || {}, {\n\t\t'aria-disabled': _isDisabled(state, loading) || disabled,\n\t\t...(isToggleButton && { [`aria-${toggleAria}`]: isSelected || false }),\n\t\trole: 'button',\n\t\ttype: 'button'\n\t});\n\n\tconst renderButton = () => (\n\t\t<button\n\t\t\t{...attributes}\n\t\t\t{...remainingProps}\n\t\t\tclassName={classNames}\n\t\t\tref={ref}\n\t\t\tonClick={handleOnClick}\n\t\t>\n\t\t\t{loading ? spinner : icon}\n\t\t\t<span className=\"mrlButton-text\">{text}</span>\n\t\t\t{badge}\n\t\t</button>\n\t);\n\n\treturn !tooltip ? (\n\t\trenderButton()\n\t) : (\n\t\t<MrlTooltip\n\t\t\tposition={tooltip.position || 'bottom'}\n\t\t\tanchor={tooltip.anchor || 'center'}\n\t\t\ttext={tooltip.text}\n\t\t\tdataQa={tooltip.dataQa}\n\t\t>\n\t\t\t{renderButton()}\n\t\t</MrlTooltip>\n\t);\n});\n"],"names":["MrlButton","React","forwardRef","_ref","ref","attrs","badge","className","_ref$disabled","disabled","buttonDefaults","_ref$disableEvents","disableEvents","icon","_ref$iconPos","iconPos","_ref$kind","kind","_ref$loading","loading","_ref$loadingText","loadingText","spinnerDefaults","text","onClick","_ref$toggleAria","toggleAria","toggleStyle","_ref$size","size","_ref$state","state","tooltip","remainingProps","_objectWithoutProperties","_excluded","_React$useState","useState","_isSelected","_React$useState2","_slicedToArray","isSelected","setIsSelected","isToggleButton","allowedButtonValues","toggleStyles","includes","useEffect","handleOnClick","e","stopPropagation","_isDisabled","prevIsSelected","classNames","classnames","concat","class","spinnerProps","_spinnerProps","spinner","createElement","MrlSpinner","role","attributes","setAttributes","_objectSpread","type","renderButton","_extends","MrlTooltip","position","anchor","dataQa"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MrlButton.js","sources":["../../../../../src/components/button/MrlButton/MrlButton.tsx"],"sourcesContent":["import * as React from 'react';\nimport classnames from 'classnames';\nimport {\n\tallowedButtonValues,\n\tbuttonDefaults,\n\tMrlButtonKind,\n\tMrlButtonSize,\n\tToggleAria,\n\tIconPosition\n} from '../constants';\nimport { _isDisabled, _isSelected, _spinnerProps } from '../helpers';\nimport { MrlSpinner, MrlTooltipAnchor, MrlTooltipPosition, MrlTooltip } from '../../';\nimport { spinnerDefaults } from '../../loader/constants';\nimport { AttrsObject, MrlComponentProps, setAttributes } from '../../../utils';\nimport { useMrlTrackInteraction } from '../../../hooks/useMrlAnalytics';\n\nimport './MrlButton.global.scss';\n\nexport type MrlButtonState = (typeof allowedButtonValues.states)[number];\nexport type ToggleStyle = (typeof allowedButtonValues.toggleStyles)[number];\n\nexport interface TooltipConfig {\n\t/**\n\t * The text to display in the tooltip\n\t */\n\ttext: string;\n\t/**\n\t * The position of the tooltip relative to the button\n\t */\n\tposition?: MrlTooltipPosition;\n\n\t/**\n\t * The anchor of the tooltip relative to the button\n\t */\n\tanchor?: MrlTooltipAnchor;\n\n\t/**\n\t * The data-qa attribute for the tooltip\n\t */\n\tdataQa?: string;\n}\n\nexport interface MrlButtonProps\n\textends Omit<MrlComponentProps, 'style'>,\n\t\tReact.ComponentProps<'button'> {\n\t/**\n\t * Applies additional HTML attributes to the button element.\n\t *\n\t * @deprecated\n\t */\n\tattrs?: AttrsObject;\n\t/**\n\t * Allow developers to add badge to buttons.\n\t */\n\tbadge?: React.ReactElement;\n\n\t/**\n\t * @deprecated - Use state=\"disabled\" or \"selected-disabled\" or \"skeleton\" instead.\n\t * Allow developers to change the disabled state based on user interactions.\n\t */\n\tdisabled?: boolean;\n\t/**\n\t * Allows developers the ability to disable built in event listeners so they can manage user\n\t * interactions from the application.\n\t */\n\tdisableEvents?: boolean;\n\t/**\n\t * Allow developers to add icon to buttons.\n\t */\n\ticon?: React.ReactElement;\n\t/**\n\t * Allows developers to right-align an icon within a button.\n\t */\n\ticonPos?: IconPosition;\n\t/**\n\t * Changes the visual emphasis of the button.\n\t */\n\tkind?: MrlButtonKind;\n\t/**\n\t * Displays a spinner in the button to indicate some action is in progress.\n\t */\n\tloading?: boolean;\n\t/**\n\t * Text for the spinner when the button is in a loading state.\n\t */\n\tloadingText?: string;\n\t/**\n\t * onClick event for the button.\n\t */\n\tonClick?: (e: React.SyntheticEvent<HTMLButtonElement>) => void;\n\t/**\n\t * Changes the size of the button so it can scale with its surrounding context.\n\t */\n\tsize?: MrlButtonSize;\n\t/**\n\t * Changes the state of the button based on user permissions or actions.\n\t */\n\tstate?: MrlButtonState;\n\t/**\n\t * The textual label describing the button's purpose/action.\n\t * Icon buttons require a text label to ensure accessibility.\n\t */\n\ttext: string;\n\t/**\n\t * Enables interaction tracking for this button. Provide a stable, non-PII id\n\t * (e.g. 'board-share-cta'). When omitted, the button emits no analytics.\n\t */\n\ttrackingId?: string;\n\t/**\n\t * Determines which aria setup to use for various toggle/selected styles.\n\t * pressed - use for an traditional “toggle button”\n\t * selected - use for tabs and custom select options\n\t * expanded - use for menus, panels, and popovers\n\t * checked - use for custom [radiobutton](https://www.w3.org/WAI/ARIA/apg/patterns/radiobutton/#wai-aria-roles-states-and-properties-16)\n\t * \t\tor [checkbox](https://www.w3.org/WAI/ARIA/apg/patterns/checkbox/#wai-aria-roles-states-and-properties-5) inputs\n\t */\n\ttoggleAria?: ToggleAria;\n\n\t/**\n\t * Tooltip configuration for the button\n\t */\n\ttooltip?: TooltipConfig;\n\n\t/**\n\t * Selected state variant when the button is a Toggle Button. The visual styles\n\t * are also impacted by the \"kind\" prop. Toggle buttons are only supported\n\t * when \"kind\" is set to either \"ghost\" or \"ghost-inverse\". Setting this prop\n\t * informs the component that this is a toggle button and to add that functionality\n\t */\n\ttoggleStyle?: ToggleStyle;\n}\n\nexport const MrlButton = React.forwardRef<HTMLButtonElement, MrlButtonProps>(function MrlButton(\n\t{\n\t\tattrs,\n\t\tbadge,\n\t\tclassName,\n\t\tdisabled = buttonDefaults.disabled,\n\t\tdisableEvents = false,\n\t\ticon,\n\t\ticonPos = buttonDefaults.iconPos,\n\t\tkind = buttonDefaults.kind,\n\t\tloading = false,\n\t\tloadingText = spinnerDefaults.text,\n\t\tonClick,\n\t\ttoggleAria = buttonDefaults.toggleAria,\n\t\ttoggleStyle,\n\t\ttext,\n\t\ttrackingId,\n\t\tsize = buttonDefaults.size,\n\t\tstate = buttonDefaults.state,\n\t\ttooltip,\n\t\t...remainingProps\n\t}: MrlButtonProps,\n\tref\n) {\n\tconst [isSelected, setIsSelected] = React.useState(() => _isSelected(state));\n\n\tconst trackInteraction = useMrlTrackInteraction('MrlButton', trackingId);\n\n\t/**\n\t * MrlButton could behave as a toggle button if toggleStyle is 'default' or 'secondary'\n\t */\n\tconst isToggleButton = toggleStyle && allowedButtonValues.toggleStyles.includes(toggleStyle);\n\n\t/**\n\t * We need to watch the value of state to keep in sync\n\t * the value of state passed as props and the internal\n\t * isSelected piece of state.\n\t */\n\tReact.useEffect(() => {\n\t\t// allows consumers to set the 'selected' or 'selected-disabled' state from a parent component.\n\t\tsetIsSelected(_isSelected(state));\n\t}, [state]);\n\n\t/**\n\t * Handle onClick events\n\t *\n\t * @param {React.MouseEvent<HTMLButtonElement>} e - mouse event\n\t */\n\tfunction handleOnClick(e: React.MouseEvent<HTMLButtonElement>) {\n\t\te.stopPropagation();\n\n\t\tif (_isDisabled(state, loading) || disabled || disableEvents) {\n\t\t\treturn;\n\t\t}\n\n\t\ttrackInteraction({ action: 'click', variant: kind });\n\n\t\tif (isToggleButton) {\n\t\t\tsetIsSelected((prevIsSelected) => !prevIsSelected);\n\t\t}\n\n\t\tif (onClick && typeof onClick === 'function') {\n\t\t\tonClick(e);\n\t\t}\n\t}\n\n\tconst classNames = classnames(\n\t\t'mrlButton',\n\t\t`mrlButton--${size}`,\n\t\t`mrlButton--${kind}`,\n\t\tstate === 'skeleton' && `mrlButton--skeleton`,\n\t\t!icon && loading && `mrlButton--loading`,\n\t\tisToggleButton && `toggleStyle--${toggleStyle}`,\n\t\ticon && `mrlButton--icon-${iconPos}`,\n\t\tclassName,\n\t\tattrs?.class || attrs?.className\n\t);\n\n\tif (attrs && attrs.class) delete attrs.class;\n\tif (attrs && attrs.className) delete attrs.className;\n\n\tconst spinnerProps = _spinnerProps(kind, size);\n\tconst spinner = (\n\t\t<MrlSpinner kind={spinnerProps.kind} role=\"none\" size={spinnerProps.size} text={loadingText} />\n\t);\n\n\tconst attributes = setAttributes(attrs || {}, {\n\t\t'aria-disabled': _isDisabled(state, loading) || disabled,\n\t\t...(isToggleButton && { [`aria-${toggleAria}`]: isSelected || false }),\n\t\trole: 'button',\n\t\ttype: 'button'\n\t});\n\n\tconst renderButton = () => (\n\t\t<button\n\t\t\t{...attributes}\n\t\t\t{...remainingProps}\n\t\t\tclassName={classNames}\n\t\t\tref={ref}\n\t\t\tonClick={handleOnClick}\n\t\t>\n\t\t\t{loading ? spinner : icon}\n\t\t\t<span className=\"mrlButton-text\">{text}</span>\n\t\t\t{badge}\n\t\t</button>\n\t);\n\n\treturn !tooltip ? (\n\t\trenderButton()\n\t) : (\n\t\t<MrlTooltip\n\t\t\tposition={tooltip.position || 'bottom'}\n\t\t\tanchor={tooltip.anchor || 'center'}\n\t\t\ttext={tooltip.text}\n\t\t\tdataQa={tooltip.dataQa}\n\t\t>\n\t\t\t{renderButton()}\n\t\t</MrlTooltip>\n\t);\n});\n"],"names":["MrlButton","React","forwardRef","_ref","ref","attrs","badge","className","_ref$disabled","disabled","buttonDefaults","_ref$disableEvents","disableEvents","icon","_ref$iconPos","iconPos","_ref$kind","kind","_ref$loading","loading","_ref$loadingText","loadingText","spinnerDefaults","text","onClick","_ref$toggleAria","toggleAria","toggleStyle","trackingId","_ref$size","size","_ref$state","state","tooltip","remainingProps","_objectWithoutProperties","_excluded","_React$useState","useState","_isSelected","_React$useState2","_slicedToArray","isSelected","setIsSelected","trackInteraction","useMrlTrackInteraction","isToggleButton","allowedButtonValues","toggleStyles","includes","useEffect","handleOnClick","e","stopPropagation","_isDisabled","action","variant","prevIsSelected","classNames","classnames","concat","class","spinnerProps","_spinnerProps","spinner","createElement","MrlSpinner","role","attributes","setAttributes","_objectSpread","type","renderButton","_extends","MrlTooltip","position","anchor","dataQa"],"mappings":"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"}
|
|
@@ -34,7 +34,7 @@ function _interopNamespace(e) {
|
|
|
34
34
|
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
35
35
|
var classnames__default = /*#__PURE__*/_interopDefault(classnames);
|
|
36
36
|
|
|
37
|
-
var _excluded = ["aria-label", "attrs", "badge", "className", "disableEvents", "disableTooltipHover", "icon", "kind", "loading", "loadingText", "onClick", "onKeyUp", "onMouseUp", "position", "toggleAria", "toggleStyle", "text", "tipAnchor", "
|
|
37
|
+
var _excluded = ["aria-label", "attrs", "badge", "className", "disableEvents", "disableTooltipHover", "icon", "kind", "loading", "loadingText", "onClick", "onKeyUp", "onMouseUp", "position", "toggleAria", "toggleStyle", "text", "tipAnchor", "size", "state", "wrapperClassName", "controlledState"];
|
|
38
38
|
var MrlIconButton = /*#__PURE__*/React__namespace.forwardRef(function MrlIconButton(_ref, ref) {
|
|
39
39
|
var ariaLabel = _ref['aria-label'],
|
|
40
40
|
_ref$attrs = _ref.attrs,
|
|
@@ -63,8 +63,6 @@ var MrlIconButton = /*#__PURE__*/React__namespace.forwardRef(function MrlIconBut
|
|
|
63
63
|
text = _ref.text,
|
|
64
64
|
_ref$tipAnchor = _ref.tipAnchor,
|
|
65
65
|
tipAnchor = _ref$tipAnchor === void 0 ? constants$1.MrlTooltipDefaults.anchor : _ref$tipAnchor,
|
|
66
|
-
_ref$tooltipKind = _ref.tooltipKind,
|
|
67
|
-
tooltipKind = _ref$tooltipKind === void 0 ? 'default' : _ref$tooltipKind,
|
|
68
66
|
_ref$size = _ref.size,
|
|
69
67
|
size = _ref$size === void 0 ? constants$2.buttonDefaults.size : _ref$size,
|
|
70
68
|
_ref$state = _ref.state,
|
|
@@ -158,7 +156,6 @@ var MrlIconButton = /*#__PURE__*/React__namespace.forwardRef(function MrlIconBut
|
|
|
158
156
|
return /*#__PURE__*/React__namespace.createElement(MrlTooltip.MrlTooltip, {
|
|
159
157
|
anchor: tipAnchor,
|
|
160
158
|
dataQa: tooltipQa,
|
|
161
|
-
kind: tooltipKind,
|
|
162
159
|
position: position,
|
|
163
160
|
text: text,
|
|
164
161
|
tooltipClass: classnames__default.default('mrlIconButton-wrapper', wrapperClassName),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MrlIconButton.js","sources":["../../../../../src/components/button/MrlIconButton/MrlIconButton.tsx"],"sourcesContent":["import * as React from 'react';\nimport classnames from 'classnames';\nimport {\n\tbuttonDefaults,\n\tMrlButtonKind,\n\tMrlButtonSize,\n\tMrlGhostIconButtonSize,\n\tToggleAria\n} from '../constants';\nimport { _isDisabled, _isSelected, _isToggleButton, _spinnerProps } from '../helpers';\nimport { AttrsObject, MrlComponentProps, setAttributes, getUniqueId } from '../../../utils';\nimport {\n\tMrlTooltipAnchor,\n\tMrlTooltipDefaults,\n\tMrlTooltipPosition,\n\tMrlTooltipVariant\n} from '../../tooltip/constants';\nimport { MrlButtonState, MrlSpinner, MrlTooltip, ToggleStyle } from '../../';\nimport { spinnerDefaults } from '../../loader/constants';\nimport './MrlIconButton.scss';\n\nexport interface MrlIconButtonProps\n\textends Omit<MrlComponentProps, 'style'>,\n\t\tReact.ComponentProps<'button'> {\n\t/**\n\t * Applies additional HTML attributes to the button element.\n\t * @deprecated\n\t */\n\tattrs?: AttrsObject;\n\t/**\n\t * Allow developers to add badge to buttons.\n\t */\n\tbadge?: React.ReactElement;\n\t/** Additional class to add to the button */\n\tclassName?: string;\n\t/**\n\t * Allows developers the ability to disable built in event listeners so they can manage user\n\t * interactions from the application.\n\t */\n\tdisableEvents?: boolean;\n\n\t/** Whether to disable the tooltip hover action that keeps it open */\n\tdisableTooltipHover?: boolean;\n\n\t/**\n\t * The icon that will be rendered.\n\t */\n\ticon: React.ReactElement;\n\t/**\n\t * Changes the visual emphasis of the button.\n\t *\n\t * Note: size=\"xsmall\" should ONLY be used with a kind of `ghost` or `ghost-inverse`.\n\t */\n\tkind?: MrlButtonKind;\n\t/**\n\t * Displays a spinner in the button to indicate some action is in progress.\n\t */\n\tloading?: boolean;\n\t/**\n\t * Text for the spinner when the button is in a loading state.\n\t */\n\tloadingText?: string;\n\n\t/**\n\t * onClick event for the button.\n\t */\n\tonClick?: (e: React.MouseEvent<HTMLButtonElement>) => void;\n\n\t/**\n\t * onKeyDown event for the button.\n\t */\n\tonKeyUp?: (e: React.KeyboardEvent<HTMLButtonElement>) => void;\n\n\t/**\n\t * onMouseUp event for the button.\n\t */\n\tonMouseUp?: (e: React.MouseEvent<HTMLButtonElement>) => void;\n\n\t/**\n\t * The placement of the tooltip in relation to the button.\n\t */\n\tposition?: MrlTooltipPosition;\n\t/**\n\t * Changes the size of the button so it can scale with its surrounding context.\n\t *\n\t * Note: size=\"xsmall\" should ONLY be used with a kind of `ghost` or `ghost-inverse`.\n\t */\n\tsize?: MrlButtonSize | MrlGhostIconButtonSize;\n\t/**\n\t * Changes the state of the button based on user permissions or actions.\n\t *\n\t * Note: The Basic Button does not fully support state=\"disabled\", use\n\t * the 'disabled' prop instead. Since it does not support state=\"disabled\",\n\t * it also doesn't not support state=\"selected-disabled\".\n\t */\n\tstate?: MrlButtonState;\n\t/**\n\t * The textual label describing the button's purpose/action.\n\t * Icon buttons require a text label to ensure accessibility.\n\t */\n\ttext: string;\n\t/**\n\t * The arrow position of the tooltip in relation to the button.\n\t */\n\ttipAnchor?: MrlTooltipAnchor;\n\n\t/**\n\t * Determines which aria setup to use for various toggle/selected styles.\n\t * pressed - use for an traditional “toggle button”\n\t * selected - use for tabs and custom select options\n\t * expanded - use for menus, panels, and popovers\n\t * checked - use for custom [radiobutton](https://www.w3.org/WAI/ARIA/apg/patterns/radiobutton/#wai-aria-roles-states-and-properties-16)\n\t * \t\tor [checkbox](https://www.w3.org/WAI/ARIA/apg/patterns/checkbox/#wai-aria-roles-states-and-properties-5) inputs\n\t */\n\ttoggleAria?: ToggleAria;\n\t/**\n\t * Selected state variant when the button is a Toggle Button. The visual styles\n\t * are also impacted by the \"kind\" prop. Toggle buttons are only supported\n\t * when \"kind\" is set to either \"ghost\" or \"ghost-inverse\". Setting this prop\n\t * informs the component that this is a toggle button and to add that functionality\n\t */\n\ttoggleStyle?: ToggleStyle;\n\n\t/** tooltip varient kind */\n\ttooltipKind?: MrlTooltipVariant;\n\n\t/**\n\t * An optional class name to add to the tooltip wrapper.\n\t */\n\twrapperClassName?: string;\n\n\t/**\n\t * Controlled state that overrides the internal state management.\n\t * When provided, this takes precedence over the `state` prop and allows\n\t * the parent component to fully control the icon button's state.\n\t */\n\tcontrolledState?: MrlButtonState;\n}\n\nexport const MrlIconButton = React.forwardRef<HTMLButtonElement, MrlIconButtonProps>(\n\tfunction MrlIconButton(\n\t\t{\n\t\t\t['aria-label']: ariaLabel,\n\t\t\tattrs = {},\n\t\t\tbadge,\n\t\t\tclassName,\n\t\t\tdisableEvents = false,\n\t\t\tdisableTooltipHover = false,\n\t\t\ticon,\n\t\t\t// We intentionally deviate from the basic button for icon-buttons since the vast\n\t\t\t// majority of icon buttons are ghost buttons. The proptype remains\n\t\t\t// consistent with the basic button however to keep our code DRY.\n\t\t\tkind = 'ghost',\n\t\t\tloading = false,\n\t\t\tloadingText = spinnerDefaults.text,\n\t\t\tonClick,\n\t\t\tonKeyUp,\n\t\t\tonMouseUp,\n\t\t\tposition = MrlTooltipDefaults.position,\n\t\t\ttoggleAria = buttonDefaults.toggleAria,\n\t\t\ttoggleStyle,\n\t\t\ttext,\n\t\t\ttipAnchor = MrlTooltipDefaults.anchor,\n\t\t\ttooltipKind = 'default',\n\t\t\tsize = buttonDefaults.size,\n\t\t\tstate = buttonDefaults.state,\n\t\t\twrapperClassName,\n\t\t\tcontrolledState,\n\t\t\t...remainingProps\n\t\t}: MrlIconButtonProps,\n\t\tref\n\t) {\n\t\t/**\n\t\t * Determine the effective button state.\n\t\t * Uses controlledState if provided (controlled mode),\n\t\t * otherwise falls back to the state prop (uncontrolled mode).\n\t\t * This allows the component to work in both controlled and uncontrolled scenarios.\n\t\t */\n\t\tconst effectiveButtonState = controlledState ?? state;\n\n\t\tconst [isSelected, setIsSelected] = React.useState(() => _isSelected(effectiveButtonState));\n\n\t\tconst buttonRef = React.useRef<HTMLButtonElement>(null);\n\t\tReact.useImperativeHandle<HTMLButtonElement | null, HTMLButtonElement | null>(\n\t\t\tref,\n\t\t\t() => buttonRef.current\n\t\t);\n\n\t\t/**\n\t\t * MrlIconButton could behave as a toggle button if toggleStyle is 'default' or 'secondary'\n\t\t */\n\t\tconst isToggleButton = toggleStyle && _isToggleButton(toggleStyle);\n\n\t\t/**\n\t\t * We need to watch the value of state to keep in sync\n\t\t * the value of state passed as props and the internal\n\t\t * isSelected piece of state.\n\t\t */\n\t\tReact.useEffect(() => {\n\t\t\t// allows consumers to set the 'selected' or 'selected-disabled' state from a parent component.\n\t\t\tsetIsSelected(_isSelected(effectiveButtonState));\n\t\t}, [effectiveButtonState]);\n\n\t\t/**\n\t\t * Handle onClick events\n\t\t * @param {React.MouseEvent<HTMLButtonElement>} e - mouse event\n\t\t */\n\t\tfunction handleOnClick(e: React.MouseEvent<HTMLButtonElement>) {\n\t\t\te.stopPropagation();\n\n\t\t\tif (_isDisabled(effectiveButtonState, loading) || disableEvents) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (isToggleButton && !controlledState) {\n\t\t\t\tsetIsSelected((prevIsSelected) => !prevIsSelected);\n\t\t\t}\n\n\t\t\tif (onClick && typeof onClick === 'function') {\n\t\t\t\tonClick(e);\n\t\t\t}\n\t\t}\n\n\t\tconst classNames = classnames(\n\t\t\t'mrlIconButton',\n\t\t\t`mrlIconButton--${size}`,\n\t\t\t`mrlIconButton--${kind}`,\n\t\t\tisToggleButton && toggleStyle && `toggleStyle--${toggleStyle}`,\n\t\t\tattrs.class || attrs.className,\n\t\t\tclassName\n\t\t);\n\n\t\tdelete attrs.class;\n\t\tdelete attrs.className;\n\n\t\tconst getAriaLabel = (): string => {\n\t\t\t// Set loading text if loading\n\t\t\tif (loading) return `${loadingText} ${text}`;\n\n\t\t\t// Only set aria-label if we have actual content\n\t\t\tconst hasAriaLabel = ariaLabel && ariaLabel.trim() !== '';\n\n\t\t\t// If we have a custom ariaLabel, override the default text\n\t\t\tif (hasAriaLabel) return ariaLabel;\n\n\t\t\t// Fallback to icon button text\n\t\t\treturn text;\n\t\t};\n\n\t\tconst ariaLabelValue = getAriaLabel();\n\n\t\tconst attributes = setAttributes(attrs, {\n\t\t\t'aria-disabled': _isDisabled(effectiveButtonState, loading),\n\t\t\t'aria-label': ariaLabelValue,\n\t\t\t...(isToggleButton && { [`aria-${toggleAria}`]: isSelected || false }),\n\t\t\ttype: 'button'\n\t\t});\n\n\t\t// MrlSvg should always have size=\"auto\"\n\t\tconst iconWithSizeAuto = React.useMemo(\n\t\t\t() =>\n\t\t\t\tReact.cloneElement(icon, {\n\t\t\t\t\tsize: 'auto'\n\t\t\t\t}),\n\t\t\t[icon]\n\t\t);\n\n\t\tconst spinnerProps = _spinnerProps(kind, size);\n\t\tconst spinner = <MrlSpinner kind={spinnerProps.kind} size={spinnerProps.size} />;\n\n\t\tconst dataQaProp = (remainingProps as { 'data-qa'?: string })['data-qa'];\n\t\tconst tooltipQa = dataQaProp ? `${dataQaProp}-tooltip` : getUniqueId('tooltip');\n\t\tconst tooltipContentClass =\n\t\t\tsize === 'xsmall' || size === 'small' ? `mrlIconButton--${size}-wrapper` : undefined;\n\n\t\treturn (\n\t\t\t<MrlTooltip\n\t\t\t\tanchor={tipAnchor}\n\t\t\t\tdataQa={tooltipQa}\n\t\t\t\tkind={tooltipKind}\n\t\t\t\tposition={position}\n\t\t\t\ttext={text}\n\t\t\t\ttooltipClass={classnames('mrlIconButton-wrapper', wrapperClassName)}\n\t\t\t\ttooltipContentClass={tooltipContentClass}\n\t\t\t\tdisableTooltipHover={disableTooltipHover}\n\t\t\t\tsrAnnouncement={false}\n\t\t\t>\n\t\t\t\t<button\n\t\t\t\t\t{...attributes}\n\t\t\t\t\t{...remainingProps}\n\t\t\t\t\tclassName={classNames}\n\t\t\t\t\tref={buttonRef}\n\t\t\t\t\tonClick={handleOnClick}\n\t\t\t\t\tonKeyUp={onKeyUp}\n\t\t\t\t\tonMouseUp={onMouseUp}\n\t\t\t\t>\n\t\t\t\t\t{loading ? spinner : iconWithSizeAuto}\n\t\t\t\t\t{badge}\n\t\t\t\t</button>\n\t\t\t</MrlTooltip>\n\t\t);\n\t}\n);\n"],"names":["MrlIconButton","React","forwardRef","_ref","ref","ariaLabel","_ref$attrs","attrs","badge","className","_ref$disableEvents","disableEvents","_ref$disableTooltipHo","disableTooltipHover","icon","_ref$kind","kind","_ref$loading","loading","_ref$loadingText","loadingText","spinnerDefaults","text","onClick","onKeyUp","onMouseUp","_ref$position","position","MrlTooltipDefaults","_ref$toggleAria","toggleAria","buttonDefaults","toggleStyle","_ref$tipAnchor","tipAnchor","anchor","_ref$tooltipKind","tooltipKind","_ref$size","size","_ref$state","state","wrapperClassName","controlledState","remainingProps","_objectWithoutProperties","_excluded","effectiveButtonState","_React$useState","useState","_isSelected","_React$useState2","_slicedToArray","isSelected","setIsSelected","buttonRef","useRef","useImperativeHandle","current","isToggleButton","_isToggleButton","useEffect","handleOnClick","e","stopPropagation","_isDisabled","prevIsSelected","classNames","classnames","concat","class","getAriaLabel","hasAriaLabel","trim","ariaLabelValue","attributes","setAttributes","_objectSpread","type","iconWithSizeAuto","useMemo","cloneElement","spinnerProps","_spinnerProps","spinner","createElement","MrlSpinner","dataQaProp","tooltipQa","getUniqueId","tooltipContentClass","undefined","MrlTooltip","dataQa","tooltipClass","srAnnouncement","_extends"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MrlIconButton.js","sources":["../../../../../src/components/button/MrlIconButton/MrlIconButton.tsx"],"sourcesContent":["import * as React from 'react';\nimport classnames from 'classnames';\nimport {\n\tbuttonDefaults,\n\tMrlButtonKind,\n\tMrlButtonSize,\n\tMrlGhostIconButtonSize,\n\tToggleAria\n} from '../constants';\nimport { _isDisabled, _isSelected, _isToggleButton, _spinnerProps } from '../helpers';\nimport { AttrsObject, MrlComponentProps, setAttributes, getUniqueId } from '../../../utils';\nimport { MrlTooltipAnchor, MrlTooltipDefaults, MrlTooltipPosition } from '../../tooltip/constants';\nimport { MrlButtonState, MrlSpinner, MrlTooltip, ToggleStyle } from '../../';\nimport { spinnerDefaults } from '../../loader/constants';\nimport './MrlIconButton.scss';\n\nexport interface MrlIconButtonProps\n\textends Omit<MrlComponentProps, 'style'>,\n\t\tReact.ComponentProps<'button'> {\n\t/**\n\t * Applies additional HTML attributes to the button element.\n\t * @deprecated\n\t */\n\tattrs?: AttrsObject;\n\t/**\n\t * Allow developers to add badge to buttons.\n\t */\n\tbadge?: React.ReactElement;\n\t/** Additional class to add to the button */\n\tclassName?: string;\n\t/**\n\t * Allows developers the ability to disable built in event listeners so they can manage user\n\t * interactions from the application.\n\t */\n\tdisableEvents?: boolean;\n\n\t/** Whether to disable the tooltip hover action that keeps it open */\n\tdisableTooltipHover?: boolean;\n\n\t/**\n\t * The icon that will be rendered.\n\t */\n\ticon: React.ReactElement;\n\t/**\n\t * Changes the visual emphasis of the button.\n\t *\n\t * Note: size=\"xsmall\" should ONLY be used with a kind of `ghost` or `ghost-inverse`.\n\t */\n\tkind?: MrlButtonKind;\n\t/**\n\t * Displays a spinner in the button to indicate some action is in progress.\n\t */\n\tloading?: boolean;\n\t/**\n\t * Text for the spinner when the button is in a loading state.\n\t */\n\tloadingText?: string;\n\n\t/**\n\t * onClick event for the button.\n\t */\n\tonClick?: (e: React.MouseEvent<HTMLButtonElement>) => void;\n\n\t/**\n\t * onKeyDown event for the button.\n\t */\n\tonKeyUp?: (e: React.KeyboardEvent<HTMLButtonElement>) => void;\n\n\t/**\n\t * onMouseUp event for the button.\n\t */\n\tonMouseUp?: (e: React.MouseEvent<HTMLButtonElement>) => void;\n\n\t/**\n\t * The placement of the tooltip in relation to the button.\n\t */\n\tposition?: MrlTooltipPosition;\n\t/**\n\t * Changes the size of the button so it can scale with its surrounding context.\n\t *\n\t * Note: size=\"xsmall\" should ONLY be used with a kind of `ghost` or `ghost-inverse`.\n\t */\n\tsize?: MrlButtonSize | MrlGhostIconButtonSize;\n\t/**\n\t * Changes the state of the button based on user permissions or actions.\n\t *\n\t * Note: The Basic Button does not fully support state=\"disabled\", use\n\t * the 'disabled' prop instead. Since it does not support state=\"disabled\",\n\t * it also doesn't not support state=\"selected-disabled\".\n\t */\n\tstate?: MrlButtonState;\n\t/**\n\t * The textual label describing the button's purpose/action.\n\t * Icon buttons require a text label to ensure accessibility.\n\t */\n\ttext: string;\n\t/**\n\t * The arrow position of the tooltip in relation to the button.\n\t */\n\ttipAnchor?: MrlTooltipAnchor;\n\n\t/**\n\t * Determines which aria setup to use for various toggle/selected styles.\n\t * pressed - use for an traditional “toggle button”\n\t * selected - use for tabs and custom select options\n\t * expanded - use for menus, panels, and popovers\n\t * checked - use for custom [radiobutton](https://www.w3.org/WAI/ARIA/apg/patterns/radiobutton/#wai-aria-roles-states-and-properties-16)\n\t * \t\tor [checkbox](https://www.w3.org/WAI/ARIA/apg/patterns/checkbox/#wai-aria-roles-states-and-properties-5) inputs\n\t */\n\ttoggleAria?: ToggleAria;\n\t/**\n\t * Selected state variant when the button is a Toggle Button. The visual styles\n\t * are also impacted by the \"kind\" prop. Toggle buttons are only supported\n\t * when \"kind\" is set to either \"ghost\" or \"ghost-inverse\". Setting this prop\n\t * informs the component that this is a toggle button and to add that functionality\n\t */\n\ttoggleStyle?: ToggleStyle;\n\n\t/**\n\t * An optional class name to add to the tooltip wrapper.\n\t */\n\twrapperClassName?: string;\n\n\t/**\n\t * Controlled state that overrides the internal state management.\n\t * When provided, this takes precedence over the `state` prop and allows\n\t * the parent component to fully control the icon button's state.\n\t */\n\tcontrolledState?: MrlButtonState;\n}\n\nexport const MrlIconButton = React.forwardRef<HTMLButtonElement, MrlIconButtonProps>(\n\tfunction MrlIconButton(\n\t\t{\n\t\t\t['aria-label']: ariaLabel,\n\t\t\tattrs = {},\n\t\t\tbadge,\n\t\t\tclassName,\n\t\t\tdisableEvents = false,\n\t\t\tdisableTooltipHover = false,\n\t\t\ticon,\n\t\t\t// We intentionally deviate from the basic button for icon-buttons since the vast\n\t\t\t// majority of icon buttons are ghost buttons. The proptype remains\n\t\t\t// consistent with the basic button however to keep our code DRY.\n\t\t\tkind = 'ghost',\n\t\t\tloading = false,\n\t\t\tloadingText = spinnerDefaults.text,\n\t\t\tonClick,\n\t\t\tonKeyUp,\n\t\t\tonMouseUp,\n\t\t\tposition = MrlTooltipDefaults.position,\n\t\t\ttoggleAria = buttonDefaults.toggleAria,\n\t\t\ttoggleStyle,\n\t\t\ttext,\n\t\t\ttipAnchor = MrlTooltipDefaults.anchor,\n\t\t\tsize = buttonDefaults.size,\n\t\t\tstate = buttonDefaults.state,\n\t\t\twrapperClassName,\n\t\t\tcontrolledState,\n\t\t\t...remainingProps\n\t\t}: MrlIconButtonProps,\n\t\tref\n\t) {\n\t\t/**\n\t\t * Determine the effective button state.\n\t\t * Uses controlledState if provided (controlled mode),\n\t\t * otherwise falls back to the state prop (uncontrolled mode).\n\t\t * This allows the component to work in both controlled and uncontrolled scenarios.\n\t\t */\n\t\tconst effectiveButtonState = controlledState ?? state;\n\n\t\tconst [isSelected, setIsSelected] = React.useState(() => _isSelected(effectiveButtonState));\n\n\t\tconst buttonRef = React.useRef<HTMLButtonElement>(null);\n\t\tReact.useImperativeHandle<HTMLButtonElement | null, HTMLButtonElement | null>(\n\t\t\tref,\n\t\t\t() => buttonRef.current\n\t\t);\n\n\t\t/**\n\t\t * MrlIconButton could behave as a toggle button if toggleStyle is 'default' or 'secondary'\n\t\t */\n\t\tconst isToggleButton = toggleStyle && _isToggleButton(toggleStyle);\n\n\t\t/**\n\t\t * We need to watch the value of state to keep in sync\n\t\t * the value of state passed as props and the internal\n\t\t * isSelected piece of state.\n\t\t */\n\t\tReact.useEffect(() => {\n\t\t\t// allows consumers to set the 'selected' or 'selected-disabled' state from a parent component.\n\t\t\tsetIsSelected(_isSelected(effectiveButtonState));\n\t\t}, [effectiveButtonState]);\n\n\t\t/**\n\t\t * Handle onClick events\n\t\t * @param {React.MouseEvent<HTMLButtonElement>} e - mouse event\n\t\t */\n\t\tfunction handleOnClick(e: React.MouseEvent<HTMLButtonElement>) {\n\t\t\te.stopPropagation();\n\n\t\t\tif (_isDisabled(effectiveButtonState, loading) || disableEvents) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (isToggleButton && !controlledState) {\n\t\t\t\tsetIsSelected((prevIsSelected) => !prevIsSelected);\n\t\t\t}\n\n\t\t\tif (onClick && typeof onClick === 'function') {\n\t\t\t\tonClick(e);\n\t\t\t}\n\t\t}\n\n\t\tconst classNames = classnames(\n\t\t\t'mrlIconButton',\n\t\t\t`mrlIconButton--${size}`,\n\t\t\t`mrlIconButton--${kind}`,\n\t\t\tisToggleButton && toggleStyle && `toggleStyle--${toggleStyle}`,\n\t\t\tattrs.class || attrs.className,\n\t\t\tclassName\n\t\t);\n\n\t\tdelete attrs.class;\n\t\tdelete attrs.className;\n\n\t\tconst getAriaLabel = (): string => {\n\t\t\t// Set loading text if loading\n\t\t\tif (loading) return `${loadingText} ${text}`;\n\n\t\t\t// Only set aria-label if we have actual content\n\t\t\tconst hasAriaLabel = ariaLabel && ariaLabel.trim() !== '';\n\n\t\t\t// If we have a custom ariaLabel, override the default text\n\t\t\tif (hasAriaLabel) return ariaLabel;\n\n\t\t\t// Fallback to icon button text\n\t\t\treturn text;\n\t\t};\n\n\t\tconst ariaLabelValue = getAriaLabel();\n\n\t\tconst attributes = setAttributes(attrs, {\n\t\t\t'aria-disabled': _isDisabled(effectiveButtonState, loading),\n\t\t\t'aria-label': ariaLabelValue,\n\t\t\t...(isToggleButton && { [`aria-${toggleAria}`]: isSelected || false }),\n\t\t\ttype: 'button'\n\t\t});\n\n\t\t// MrlSvg should always have size=\"auto\"\n\t\tconst iconWithSizeAuto = React.useMemo(\n\t\t\t() =>\n\t\t\t\tReact.cloneElement(icon, {\n\t\t\t\t\tsize: 'auto'\n\t\t\t\t}),\n\t\t\t[icon]\n\t\t);\n\n\t\tconst spinnerProps = _spinnerProps(kind, size);\n\t\tconst spinner = <MrlSpinner kind={spinnerProps.kind} size={spinnerProps.size} />;\n\n\t\tconst dataQaProp = (remainingProps as { 'data-qa'?: string })['data-qa'];\n\t\tconst tooltipQa = dataQaProp ? `${dataQaProp}-tooltip` : getUniqueId('tooltip');\n\t\tconst tooltipContentClass =\n\t\t\tsize === 'xsmall' || size === 'small' ? `mrlIconButton--${size}-wrapper` : undefined;\n\n\t\treturn (\n\t\t\t<MrlTooltip\n\t\t\t\tanchor={tipAnchor}\n\t\t\t\tdataQa={tooltipQa}\n\t\t\t\tposition={position}\n\t\t\t\ttext={text}\n\t\t\t\ttooltipClass={classnames('mrlIconButton-wrapper', wrapperClassName)}\n\t\t\t\ttooltipContentClass={tooltipContentClass}\n\t\t\t\tdisableTooltipHover={disableTooltipHover}\n\t\t\t\tsrAnnouncement={false}\n\t\t\t>\n\t\t\t\t<button\n\t\t\t\t\t{...attributes}\n\t\t\t\t\t{...remainingProps}\n\t\t\t\t\tclassName={classNames}\n\t\t\t\t\tref={buttonRef}\n\t\t\t\t\tonClick={handleOnClick}\n\t\t\t\t\tonKeyUp={onKeyUp}\n\t\t\t\t\tonMouseUp={onMouseUp}\n\t\t\t\t>\n\t\t\t\t\t{loading ? spinner : iconWithSizeAuto}\n\t\t\t\t\t{badge}\n\t\t\t\t</button>\n\t\t\t</MrlTooltip>\n\t\t);\n\t}\n);\n"],"names":["MrlIconButton","React","forwardRef","_ref","ref","ariaLabel","_ref$attrs","attrs","badge","className","_ref$disableEvents","disableEvents","_ref$disableTooltipHo","disableTooltipHover","icon","_ref$kind","kind","_ref$loading","loading","_ref$loadingText","loadingText","spinnerDefaults","text","onClick","onKeyUp","onMouseUp","_ref$position","position","MrlTooltipDefaults","_ref$toggleAria","toggleAria","buttonDefaults","toggleStyle","_ref$tipAnchor","tipAnchor","anchor","_ref$size","size","_ref$state","state","wrapperClassName","controlledState","remainingProps","_objectWithoutProperties","_excluded","effectiveButtonState","_React$useState","useState","_isSelected","_React$useState2","_slicedToArray","isSelected","setIsSelected","buttonRef","useRef","useImperativeHandle","current","isToggleButton","_isToggleButton","useEffect","handleOnClick","e","stopPropagation","_isDisabled","prevIsSelected","classNames","classnames","concat","class","getAriaLabel","hasAriaLabel","trim","ariaLabelValue","attributes","setAttributes","_objectSpread","type","iconWithSizeAuto","useMemo","cloneElement","spinnerProps","_spinnerProps","spinner","createElement","MrlSpinner","dataQaProp","tooltipQa","getUniqueId","tooltipContentClass","undefined","MrlTooltip","dataQa","tooltipClass","srAnnouncement","_extends"],"mappings":"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"}
|
|
@@ -117,7 +117,6 @@ var DefaultColumnContent = _ref2 => {
|
|
|
117
117
|
var memoizedTooltip = React__namespace.useMemo(() => /*#__PURE__*/React__namespace.createElement(MrlTooltip.MrlTooltip, {
|
|
118
118
|
anchor: "center",
|
|
119
119
|
dataQa: "".concat(dataQa, "-tooltip"),
|
|
120
|
-
kind: "default",
|
|
121
120
|
position: "bottom",
|
|
122
121
|
text: tooltip || ''
|
|
123
122
|
}, /*#__PURE__*/React__namespace.createElement("span", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MrlSmartTable.js","sources":["../../../../../src/components/table/MrlSmartTable/MrlSmartTable.tsx"],"sourcesContent":["import * as React from 'react';\nimport classNames from 'classnames';\nimport debounce from 'lodash.debounce';\nimport { useVirtualizer } from '@tanstack/react-virtual';\nimport {\n\tMrlCheckboxStandalone,\n\tMrlLiveRegion,\n\tMrlSvg,\n\tMrlTable,\n\tMrlTableBody,\n\tMrlTableCell,\n\tMrlTableColumn,\n\tMrlTableHeader,\n\tMrlTableRow,\n\tMrlTooltip\n} from '../../';\nimport { MrlTableProps } from '../MrlTable';\nimport { MrlTableEmptyState } from '../MrlTableEmptyState';\nimport {\n\tMrlSortDirection,\n\tMrlTableCellHorizontalAlign,\n\tMrlTableColumnId,\n\tMrlTableColumnSortDescriptor,\n\tMrlTableItemId,\n\tMrlTableSelectionMode\n} from '../constants';\nimport { getUniqueId } from '../../../utils';\nimport {\n\tkeyFor,\n\tnextSortDirection,\n\tsortAlphabeticallyAsCoercedStrings,\n\tsortIcon,\n\tsortText\n} from '../utils';\nimport { info } from '@muraldevkit/ds-icons';\n\nimport styles from './MrlSmartTable.module.scss';\nimport { getScrollableContainer } from '../../../utils/getScrollableContainer/getScrollableContainer';\nimport { hasHorizontalScroll } from '../../../utils/hasHorizontalScroll/hasHorizontalScroll';\nimport { MemoizedDefaultCellContent } from './components/DefaultCellContent';\n\nconst ROW_HEIGHT_PX = 48;\n\nconst sortItems = (\n\tcolumns: MrlSmartTableColumn[],\n\titems: MrlTableItem[],\n\tsortDescriptor: MrlTableColumnSortDescriptor\n): MrlTableItem[] => {\n\tconst sortColumn = columns.find((col) => col.id === sortDescriptor.column);\n\tif (!sortColumn) {\n\t\tconsole.error(`No column found for sort descriptor key: ${sortDescriptor.column}`);\n\t\treturn items;\n\t}\n\n\tconst { sortByRowContext, sortBy } = sortColumn;\n\n\tif (sortByRowContext) {\n\t\treturn [...items].sort((a, b) => sortByRowContext(a, b) * sortDescriptor.direction);\n\t}\n\n\tconst sortComparator = sortBy || sortAlphabeticallyAsCoercedStrings;\n\n\treturn [...items].sort((a, b) => {\n\t\tconst aSortValue = a[sortColumn.id];\n\t\tconst bSortValue = b[sortColumn.id];\n\t\treturn sortComparator(aSortValue, bSortValue) * sortDescriptor.direction;\n\t});\n};\n\nfunction EmptyStateWrapper({\n\tchildren,\n\tvisibleColumnCount\n}: {\n\tchildren: React.ReactNode;\n\tvisibleColumnCount: number;\n}): JSX.Element {\n\treturn (\n\t\t<tr role=\"row\">\n\t\t\t<td role=\"gridcell\" colSpan={visibleColumnCount}>\n\t\t\t\t{children}\n\t\t\t</td>\n\t\t</tr>\n\t);\n}\n\ninterface VisuallyHiddenAccessibleButtonProps extends React.HTMLProps<HTMLButtonElement> {\n\thorizontalAlign?: MrlTableCellHorizontalAlign;\n}\n\nconst VisuallyHiddenAccessibleButton = (props: VisuallyHiddenAccessibleButtonProps) => {\n\tconst { horizontalAlign, ...rest } = props;\n\n\treturn (\n\t\t<button\n\t\t\t{...rest}\n\t\t\ttype=\"button\"\n\t\t\tclassName={classNames(styles['MrlSmartTable--accessible-visually-hidden-button'], {\n\t\t\t\t[styles['align-right']]: horizontalAlign === 'right'\n\t\t\t})}\n\t\t/>\n\t);\n};\n\nexport interface MrlSmartColumnRendererProps {\n\t/**\n\t * The column being rendered.\n\t */\n\tcolumn: MrlSmartTableColumn;\n\t/**\n\t * A function to change current sort descriptor.\n\t */\n\thandleSortClick: ({\n\t\tcolumn,\n\t\tdirection,\n\t\tname\n\t}: {\n\t\tcolumn: MrlSmartTableColumn['id'];\n\t\tdirection: MrlSortDirection;\n\t\tname: string;\n\t}) => void;\n\t/**\n\t * The element id of the table.\n\t */\n\ttableElementId: string;\n\t/**\n\t * The data-qa prefix of the table.\n\t */\n\tdataQaPrefix: string;\n\t/**\n\t * The current sort descriptor.\n\t */\n\tsortDescriptor?: MrlTableColumnSortDescriptor;\n\thasScrollShadowLeft: boolean;\n\thasScrollShadowRight: boolean;\n\thorizontalAlign?: MrlTableCellHorizontalAlign;\n}\n\nexport interface MrlSmartCellRendererProps {\n\t/**\n\t * The item for the cell being rendered.\n\t */\n\titem: MrlTableItem;\n\t/**\n\t * The column for the cell being rendered.\n\t */\n\tcolumn: MrlSmartTableColumn;\n\t/**\n\t * The element id of the table.\n\t */\n\ttableElementId: string;\n\t/**\n\t * The data-qa prefix of the table.\n\t */\n\tdataQaPrefix: string;\n\thasScrollShadowLeft: boolean;\n\thasScrollShadowRight: boolean;\n}\n\nconst DefaultColumnContent = ({\n\tcolumn,\n\tdataQaPrefix,\n\ttableElementId,\n\thandleSortClick,\n\tsortDescriptor,\n\thasScrollShadowLeft,\n\thasScrollShadowRight\n}: MrlSmartColumnRendererProps) => {\n\tconst { allowsSorting, horizontalAlign, id, name, sticky, tooltip } = column;\n\tconst elementId = keyFor(tableElementId, 'column', id);\n\tconst dataQa = keyFor(dataQaPrefix, 'column', id);\n\tconst columnProps = {\n\t\t'data-qa': dataQa,\n\t\thasScrollShadowLeft,\n\t\thasScrollShadowRight,\n\t\thorizontalAlign,\n\t\tid: elementId,\n\t\tscope: 'col',\n\t\tsticky\n\t};\n\n\tconst memoizedTooltip = React.useMemo(\n\t\t() => (\n\t\t\t<MrlTooltip\n\t\t\t\tanchor=\"center\"\n\t\t\t\tdataQa={`${dataQa}-tooltip`}\n\t\t\t\tkind=\"default\"\n\t\t\t\tposition=\"bottom\"\n\t\t\t\ttext={tooltip || ''}\n\t\t\t>\n\t\t\t\t{/* eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex */}\n\t\t\t\t<span data-qa={`${dataQa}-tooltip-trigger`} tabIndex={0}>\n\t\t\t\t\t<MrlSvg className=\"MrlTableColumn--tooltip\" svg={info} size=\"small\" />\n\t\t\t\t</span>\n\t\t\t</MrlTooltip>\n\t\t),\n\t\t[dataQa, tooltip]\n\t);\n\n\tconst tooltipContent = tooltip ? memoizedTooltip : undefined;\n\n\tif (!allowsSorting) {\n\t\treturn (\n\t\t\t<MrlTableColumn {...columnProps}>\n\t\t\t\t{name}\n\t\t\t\t{tooltipContent}\n\t\t\t</MrlTableColumn>\n\t\t);\n\t}\n\n\tconst currentDirection = sortDescriptor?.column === id ? sortDescriptor.direction : undefined;\n\tconst nextDirection = nextSortDirection(currentDirection);\n\tconst onSortClick = () => {\n\t\thandleSortClick({ column: id, direction: nextDirection, name: name });\n\t};\n\n\treturn (\n\t\t<MrlTableColumn onClick={onSortClick} {...columnProps}>\n\t\t\t<VisuallyHiddenAccessibleButton\n\t\t\t\taria-label={`Sort ${sortText(nextDirection)} by ${name}`}\n\t\t\t\thorizontalAlign={horizontalAlign}\n\t\t\t\tonClick={onSortClick}\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tclassName={classNames(styles['allowsSorting'], {\n\t\t\t\t\t\t[styles['align-right']]: horizontalAlign === 'right',\n\t\t\t\t\t\t[styles['noSortSelected']]: horizontalAlign === 'right' && !currentDirection\n\t\t\t\t\t})}\n\t\t\t\t>\n\t\t\t\t\t{name}\n\t\t\t\t\t{tooltipContent}\n\t\t\t\t\t{currentDirection ? (\n\t\t\t\t\t\t<MrlSvg\n\t\t\t\t\t\t\tclassName=\"MrlTableColumn--sort-indicator\"\n\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\tsvg={sortIcon(currentDirection)}\n\t\t\t\t\t\t/>\n\t\t\t\t\t) : (\n\t\t\t\t\t\thorizontalAlign !== 'right' && <span className={styles['empty-icon-space']}></span>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</VisuallyHiddenAccessibleButton>\n\t\t</MrlTableColumn>\n\t);\n};\n\nexport interface MrlTableItem extends Record<string, unknown> {\n\t/**\n\t * A unique identifier for the row item.\n\t */\n\tid: MrlTableItemId;\n\t/**\n\t * This makes the row item not selectable.\n\t */\n\tisSelectable?: boolean;\n\t/**\n\t * This makes the row item visually disabled.\n\t */\n\tisDisabled?: boolean;\n\t/**\n\t * A ref to the table row element\n\t * The ref is an object where the key is the item id and the value is the table row element\n\t */\n\trowRef?: React.MutableRefObject<Record<MrlTableItemId, HTMLTableRowElement>>;\n}\n\nexport type MrlTableColumnSticky = 'left' | 'right';\n\nexport interface MrlSmartTableColumn {\n\t/**\n\t * The key used to retrieve the cell value from the item object,\n\t * e.g. `item[key]`.\n\t */\n\tid: MrlTableColumnId;\n\t/**\n\t * The display name of the column.\n\t */\n\tname: string;\n\t/**\n\t * The horizontal alignment of the column content.\n\t * If not provided, the default alignment is left.\n\t */\n\thorizontalAlign?: MrlTableCellHorizontalAlign;\n\t/**\n\t * A component used to override rendering for each column cell. The\n\t * component is expected to render a MrlTableColumn.\n\t */\n\trenderColumn?: (props: MrlSmartColumnRendererProps) => JSX.Element;\n\t/**\n\t * A component used to override rendering for each row cell. The\n\t * component is expected to render a MrlTableCell.\n\t */\n\trenderCell?: (props: MrlSmartCellRendererProps) => JSX.Element;\n\t/**\n\t * Whether the column allows sorting.\n\t */\n\tallowsSorting?: boolean;\n\t/**\n\t * A sort comparator function for the column.\n\t *\n\t * @default sortAlphabeticallyAsCoercedStrings\n\t */\n\tsortBy?: (aValue: unknown, bValue: unknown) => number;\n\t/**\n\t * A sort comparator function for the column that receives the entire\n\t * row context. Will override the `sortBy` function (if provided).\n\t *\n\t * @param aValue\n\t * @param bValue\n\t * @returns number\n\t */\n\tsortByRowContext?: (aValue: unknown, bValue: unknown) => number;\n\t/**\n\t * Whether the column is sticky\n\t * the sticky effect will only work on the first or last column.\n\t * Set to 'left' for the first column and 'right' for the last column\n\t *\n\t * @example The container of the table will need overflow:scroll/auto\n\t * and the width will need to be constrained in order for\n\t * the columns to be 'sticky'\n\t */\n\tsticky?: MrlTableColumnSticky;\n\t/**\n\t * A tooltip to display on the column header.\n\t */\n\ttooltip?: string;\n}\n\n/**\n * A set of item ids.\n */\nexport type MrlTableSelection = Set<MrlTableItemId>;\n\nexport interface MrlSmartTableSelectionOptions {\n\t/**\n\t * The type of selection that is allowed in the collection.\n\t *\n\t * @default none\n\t */\n\tmode: MrlTableSelectionMode;\n\t/**\n\t * The currently selected keys in the collection (controlled).\n\t */\n\tselectedKeys: MrlTableSelection;\n\t/**\n\t * Handler that is called when the selection changes.\n\t */\n\tonSelectionChange: (keys: MrlTableSelection) => void;\n}\n\nexport interface MrlTableColumnSortOptions {\n\t/**\n\t * The column to sort by.\n\t */\n\tsortColumn: MrlSmartTableColumn;\n\t/**\n\t * The details of the sort.\n\t */\n\tsortDescriptor: MrlTableColumnSortDescriptor;\n}\n\nexport interface MrlSmartTableProps\n\textends Partial<\n\t\tPick<MrlTableProps, 'aria-label' | 'aria-labelledby' | 'aria-describedby' | 'aria-details'>\n\t> {\n\t/**\n\t * A list of table columns.\n\t */\n\tcolumns: MrlSmartTableColumn[];\n\t/**\n\t * A list of items to populate the table.\n\t */\n\titems: MrlTableItem[];\n\t/**\n\t * When provided, enables and controls table selection.\n\t */\n\tselectionOptions?: MrlSmartTableSelectionOptions;\n\t/**\n\t * A prefix applied to each data-qa element within the table.\n\t *\n\t * @default \"mrl-smart-table\"\n\t */\n\tdataQaPrefix?: string;\n\t/**\n\t * Text to be displayed when there are no rows in the table.\n\t * Will be ignored if `emptyState` is provided.\n\t *\n\t * @default \"There's no data available to be displayed in this table.\"\n\t */\n\temptyStateText?: string;\n\t/**\n\t * Provides content to display when there are no rows in the table.\n\t *\n\t * @default MrlTableEmptyState\n\t */\n\temptyState?: JSX.Element;\n\t/**\n\t * An element id (and if not provided, a unique value decorated\n\t * to prevent conflict with aria controls will be generated).\n\t *\n\t * @default ${id}-mrl-smart-table\n\t */\n\tid?: string;\n\t/**\n\t * A function to override the default sort items when a sort descriptor is set.\n\t */\n\tcustomSortItems?: ({ sortColumn, sortDescriptor }: MrlTableColumnSortOptions) => void;\n\t/**\n\t * Provides information on how the table should be sorted on initialization.\n\t */\n\tdefaultSortDescriptor?: MrlTableColumnSortDescriptor;\n\t/**\n\t * Enables row virtualization using @tanstack/react-virtual. The table must live\n\t * inside a container with a fixed height and vertical scroll for virtualization\n\t * to function correctly.\n\t *\n\t * @default false\n\t */\n\tenableVirtualization?: boolean;\n}\n\n/**\n * MrlSmartTable Component\n *\n * @param {MrlSmartTableProps} props - MrlSmartTable component props\n * @returns a table\n */\nexport function MrlSmartTable(props: MrlSmartTableProps): JSX.Element {\n\tconst {\n\t\tcolumns,\n\t\tdataQaPrefix = 'mrl-smart-table',\n\t\temptyStateText,\n\t\temptyState = <MrlTableEmptyState text={emptyStateText} />,\n\t\tid,\n\t\titems,\n\t\tselectionOptions,\n\t\tdefaultSortDescriptor,\n\t\tcustomSortItems,\n\t\tenableVirtualization = false,\n\t\t...ariaProps\n\t} = props;\n\tconst idRef = React.useRef<string>(id || getUniqueId('mrl-smart-table'));\n\tconst tableRef = React.useRef<HTMLTableElement>(null);\n\tconst [scrollContainer, setScrollContainer] = React.useState<HTMLElement | null>(null);\n\tconst tableElementId = idRef.current;\n\tconst [srContent, setSrContent] = React.useState<string>('');\n\tconst [scrollShadowLeft, setScrollShadowLeft] = React.useState<boolean>(false);\n\tconst [scrollShadowRight, setScrollShadowRight] = React.useState<boolean>(false);\n\n\tconst hasStickyLeftColumn = React.useMemo(\n\t\t() => columns.some((col) => col.sticky === 'left'),\n\t\t[columns]\n\t);\n\n\tconst hasStickyRightColumn = React.useMemo(\n\t\t() => columns.some((col) => col.sticky === 'right'),\n\t\t[columns]\n\t);\n\n\tReact.useLayoutEffect(() => {\n\t\tif (!tableRef.current) return;\n\t\tconst container = getScrollableContainer(tableRef.current);\n\t\tsetScrollContainer(container);\n\t}, []);\n\n\tReact.useLayoutEffect(() => {\n\t\tif (!tableRef.current || !scrollContainer) return;\n\t\tif (!hasStickyLeftColumn && !hasStickyRightColumn) return;\n\n\t\tfunction scrollHandler() {\n\t\t\tif (!tableRef.current || !scrollContainer) return;\n\t\t\tconst { hasScrollLeft, hasScrollRight } = hasHorizontalScroll(scrollContainer);\n\t\t\tsetScrollShadowLeft(hasScrollLeft);\n\t\t\tsetScrollShadowRight(hasScrollRight);\n\t\t}\n\t\tconst debouncedScrollHandler = debounce(scrollHandler, 25);\n\n\t\tconst observer = new ResizeObserver(scrollHandler);\n\t\tobserver.observe(tableRef.current);\n\n\t\tdocument.addEventListener('scroll', debouncedScrollHandler, true);\n\t\treturn () => {\n\t\t\tdocument.removeEventListener('scroll', debouncedScrollHandler, true);\n\t\t\tobserver.disconnect();\n\t\t};\n\t}, [hasStickyLeftColumn, hasStickyRightColumn, scrollContainer]);\n\n\tconst visibleColumnCount = columns.length + (selectionOptions ? 1 : 0);\n\tconst [sortDescriptor, setSortDescriptor] = React.useState<\n\t\tMrlTableColumnSortDescriptor | undefined\n\t>(defaultSortDescriptor);\n\n\tconst handleSortClick = (sortDescriptor: MrlTableColumnSortDescriptor) => {\n\t\tconst { direction, name, column } = sortDescriptor;\n\n\t\tif (customSortItems) {\n\t\t\tconst sortColumn = columns.find((col) => col.id === column);\n\t\t\tif (!sortColumn) {\n\t\t\t\tconsole.error(`No column found for sort descriptor key: ${column}`);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcustomSortItems({ sortColumn, sortDescriptor });\n\t\t}\n\t\tsetSortDescriptor(sortDescriptor);\n\n\t\tconst announcement = `Now sorting ${sortText(direction)} by ${name}`;\n\t\tsetSrContent(announcement);\n\t};\n\n\tconst memoizedItems = React.useMemo(() => {\n\t\t// sort items if sort descriptor is set and custom sort items functions is not provided\n\t\treturn !customSortItems && sortDescriptor ? sortItems(columns, items, sortDescriptor) : items;\n\t}, [columns, customSortItems, items, sortDescriptor]);\n\n\tconst rowVirtualizer = useVirtualizer({\n\t\tcount: memoizedItems.length,\n\t\tenabled: enableVirtualization,\n\t\testimateSize: () => ROW_HEIGHT_PX,\n\t\tgetItemKey: React.useCallback(\n\t\t\t(index: number) => {\n\t\t\t\treturn keyFor(tableElementId, 'row', memoizedItems[index].id);\n\t\t\t},\n\t\t\t[tableElementId, memoizedItems]\n\t\t),\n\t\tgetScrollElement: () => scrollContainer,\n\t\toverscan: 6,\n\t\tuseAnimationFrameWithResizeObserver: true\n\t});\n\n\tlet tableHeaderSelectionColumn: JSX.Element | undefined;\n\tlet rowItemSelectionCell: ((item: MrlTableItem) => JSX.Element) | undefined;\n\n\tif (selectionOptions) {\n\t\tconst { mode, onSelectionChange, selectedKeys } = selectionOptions;\n\t\tconst isAnySelected = memoizedItems.length > 0 && selectedKeys.size > 0;\n\t\tconst isAllSelected = isAnySelected && selectedKeys.size === memoizedItems.length;\n\n\t\tconst selectionColumnStickyValue = hasStickyLeftColumn ? 'left' : undefined;\n\t\tconst selectNone = () => onSelectionChange(new Set());\n\t\tconst selectAll = () =>\n\t\t\tonSelectionChange(\n\t\t\t\tnew Set(memoizedItems.filter((item) => item.isSelectable !== false).map((item) => item.id))\n\t\t\t);\n\t\tconst selectOne = (itemId: MrlTableItemId) => onSelectionChange(new Set([itemId]));\n\t\tconst selectAdd = (itemId: MrlTableItemId) =>\n\t\t\tonSelectionChange(new Set([...selectedKeys, itemId]));\n\t\tconst selectRemove = (itemId: MrlTableItemId) => {\n\t\t\tconst keys = new Set(selectedKeys);\n\t\t\tkeys.delete(itemId);\n\t\t\tonSelectionChange(keys);\n\t\t};\n\n\t\tconst onSelectAllClick = (): void => (isAnySelected ? selectNone() : selectAll());\n\t\tconst onSelectClick = (itemId: MrlTableItemId): void => {\n\t\t\tif (mode === 'multiple') {\n\t\t\t\tselectedKeys.has(itemId) ? selectRemove(itemId) : selectAdd(itemId);\n\t\t\t} else if (mode === 'single') {\n\t\t\t\tselectedKeys.has(itemId) ? selectNone() : selectOne(itemId);\n\t\t\t}\n\t\t};\n\n\t\ttableHeaderSelectionColumn = (\n\t\t\t<MrlTableColumn\n\t\t\t\tid={keyFor(tableElementId, 'column', 'selection')}\n\t\t\t\tdata-qa={keyFor(dataQaPrefix, 'column', 'selection')}\n\t\t\t\tkey={keyFor(tableElementId, 'column', 'selection')}\n\t\t\t\tclassName=\"selection\"\n\t\t\t\tscope=\"col\"\n\t\t\t\tsticky={selectionColumnStickyValue}\n\t\t\t\thasScrollShadowLeft={scrollShadowLeft}\n\t\t\t\thasScrollShadowRight={scrollShadowRight}\n\t\t\t>\n\t\t\t\t{selectionOptions.mode === 'multiple' && (\n\t\t\t\t\t<MrlCheckboxStandalone\n\t\t\t\t\t\tattrs={{\n\t\t\t\t\t\t\t'aria-label': 'Select all rows',\n\t\t\t\t\t\t\tid: keyFor(tableElementId, 'column', 'selection-select-all-checkbox'),\n\t\t\t\t\t\t\tonChange: onSelectAllClick\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tdata-qa={keyFor(dataQaPrefix, 'column', 'selection-select-all-checkbox')}\n\t\t\t\t\t\tkey={keyFor(tableElementId, 'column', 'selection-select-all-checkbox')}\n\t\t\t\t\t\tselected={isAllSelected ? 'checked' : isAnySelected ? 'indeterminate' : 'default'}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</MrlTableColumn>\n\t\t);\n\t\trowItemSelectionCell = ({ id, isSelectable = true }: MrlTableItem) => (\n\t\t\t<MrlTableCell\n\t\t\t\tid={keyFor(tableElementId, 'row-cell', 'selection', id)}\n\t\t\t\tdata-qa={keyFor(dataQaPrefix, 'row-cell', 'selection', id)}\n\t\t\t\tkey={keyFor(tableElementId, 'row-cell', 'selection', id)}\n\t\t\t\tclassName=\"selection\"\n\t\t\t\tsticky={selectionColumnStickyValue}\n\t\t\t>\n\t\t\t\t{isSelectable ? (\n\t\t\t\t\t<MrlCheckboxStandalone\n\t\t\t\t\t\tattrs={{\n\t\t\t\t\t\t\t'aria-label': `Select row with id: ${id}`,\n\t\t\t\t\t\t\t'data-qa': keyFor(dataQaPrefix, 'row-cell', 'selection', id, 'checkbox'),\n\t\t\t\t\t\t\tid: keyFor(tableElementId, 'row-cell', 'selection', id, 'checkbox'),\n\t\t\t\t\t\t\tonChange: () => onSelectClick(id)\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tkey={keyFor(tableElementId, 'row-cell', 'selection', id, 'checkbox')}\n\t\t\t\t\t\tselected={selectionOptions.selectedKeys.has(id) ? 'checked' : 'default'}\n\t\t\t\t\t/>\n\t\t\t\t) : undefined}\n\t\t\t</MrlTableCell>\n\t\t);\n\t}\n\n\tconst tableHeaderContent = (\n\t\t<>\n\t\t\t{tableHeaderSelectionColumn}\n\t\t\t{columns.map((column: MrlSmartTableColumn) => {\n\t\t\t\tconst { id, renderColumn } = column;\n\t\t\t\tconst ColumnContent = renderColumn ? renderColumn : DefaultColumnContent;\n\t\t\t\treturn (\n\t\t\t\t\t<ColumnContent\n\t\t\t\t\t\tcolumn={column}\n\t\t\t\t\t\tdataQaPrefix={dataQaPrefix}\n\t\t\t\t\t\tkey={keyFor(tableElementId, 'column', id)}\n\t\t\t\t\t\ttableElementId={tableElementId}\n\t\t\t\t\t\thandleSortClick={handleSortClick}\n\t\t\t\t\t\tsortDescriptor={sortDescriptor}\n\t\t\t\t\t\thasScrollShadowLeft={scrollShadowLeft}\n\t\t\t\t\t\thasScrollShadowRight={scrollShadowRight}\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t})}\n\t\t</>\n\t);\n\n\tlet tableBodyContent: React.JSX.Element | React.JSX.Element[];\n\n\tif (enableVirtualization) {\n\t\tconst virtualRows = rowVirtualizer.getVirtualItems();\n\t\tconst paddingTop = virtualRows.length > 0 ? virtualRows[0].start : 0;\n\t\tconst paddingBottom =\n\t\t\tvirtualRows.length > 0\n\t\t\t\t? rowVirtualizer.getTotalSize() - virtualRows[virtualRows.length - 1].end\n\t\t\t\t: 0;\n\n\t\ttableBodyContent = (\n\t\t\t<>\n\t\t\t\t{paddingTop > 0 && (\n\t\t\t\t\t<tr aria-hidden>\n\t\t\t\t\t\t<td colSpan={visibleColumnCount} style={{ height: paddingTop }} />\n\t\t\t\t\t</tr>\n\t\t\t\t)}\n\t\t\t\t{virtualRows.map((virtualRow) => {\n\t\t\t\t\tconst item = memoizedItems[virtualRow.index];\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<MrlTableRow\n\t\t\t\t\t\t\tclassName={classNames({\n\t\t\t\t\t\t\t\t[styles['MrlTableRow--selected']]: selectionOptions?.selectedKeys.has(item.id),\n\t\t\t\t\t\t\t\t'MrlTableRow--selected': selectionOptions?.selectedKeys.has(item.id),\n\t\t\t\t\t\t\t\t[styles['MrlTableRow--disabled']]: item.isDisabled\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\tid={keyFor(tableElementId, 'row', item.id)}\n\t\t\t\t\t\t\titemId={item.id}\n\t\t\t\t\t\t\tdata-qa={keyFor(dataQaPrefix, 'row', item.id)}\n\t\t\t\t\t\t\tkey={virtualRow.key}\n\t\t\t\t\t\t\tstyle={{ height: virtualRow.size }}\n\t\t\t\t\t\t\tref={item.rowRef}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{rowItemSelectionCell?.(item)}\n\t\t\t\t\t\t\t{columns.map((column: MrlSmartTableColumn) => {\n\t\t\t\t\t\t\t\tconst CellContent = column.renderCell\n\t\t\t\t\t\t\t\t\t? column.renderCell\n\t\t\t\t\t\t\t\t\t: MemoizedDefaultCellContent;\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<CellContent\n\t\t\t\t\t\t\t\t\t\tcolumn={column}\n\t\t\t\t\t\t\t\t\t\tdataQaPrefix={dataQaPrefix}\n\t\t\t\t\t\t\t\t\t\titem={item}\n\t\t\t\t\t\t\t\t\t\tkey={keyFor(tableElementId, 'row-cell', item.id, column.id)}\n\t\t\t\t\t\t\t\t\t\ttableElementId={tableElementId}\n\t\t\t\t\t\t\t\t\t\thasScrollShadowLeft={scrollShadowLeft}\n\t\t\t\t\t\t\t\t\t\thasScrollShadowRight={scrollShadowRight}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t</MrlTableRow>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t\t{paddingBottom > 0 && (\n\t\t\t\t\t<tr aria-hidden>\n\t\t\t\t\t\t<td colSpan={visibleColumnCount} style={{ height: paddingBottom }} />\n\t\t\t\t\t</tr>\n\t\t\t\t)}\n\t\t\t</>\n\t\t);\n\t} else {\n\t\ttableBodyContent = memoizedItems.map((item) => (\n\t\t\t<MrlTableRow\n\t\t\t\tclassName={classNames({\n\t\t\t\t\t[styles['MrlTableRow--selected']]: selectionOptions?.selectedKeys.has(item.id),\n\t\t\t\t\t'MrlTableRow--selected': selectionOptions?.selectedKeys.has(item.id),\n\t\t\t\t\t[styles['MrlTableRow--disabled']]: item.isDisabled\n\t\t\t\t})}\n\t\t\t\tid={keyFor(tableElementId, 'row', item.id)}\n\t\t\t\titemId={item.id}\n\t\t\t\tdata-qa={keyFor(dataQaPrefix, 'row', item.id)}\n\t\t\t\tkey={keyFor(tableElementId, 'row', item.id)}\n\t\t\t\tref={item.rowRef}\n\t\t\t>\n\t\t\t\t{rowItemSelectionCell?.(item)}\n\t\t\t\t{columns.map((column: MrlSmartTableColumn) => {\n\t\t\t\t\tconst CellContent = column.renderCell ? column.renderCell : MemoizedDefaultCellContent;\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<CellContent\n\t\t\t\t\t\t\tcolumn={column}\n\t\t\t\t\t\t\tdataQaPrefix={dataQaPrefix}\n\t\t\t\t\t\t\titem={item}\n\t\t\t\t\t\t\tkey={keyFor(tableElementId, 'row-cell', item.id, column.id)}\n\t\t\t\t\t\t\ttableElementId={tableElementId}\n\t\t\t\t\t\t\thasScrollShadowLeft={scrollShadowLeft}\n\t\t\t\t\t\t\thasScrollShadowRight={scrollShadowRight}\n\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</MrlTableRow>\n\t\t));\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<MrlTable data-qa={dataQaPrefix} id={tableElementId} ref={tableRef} {...ariaProps}>\n\t\t\t\t<MrlTableHeader\n\t\t\t\t\tdata-qa={keyFor(dataQaPrefix, 'header')}\n\t\t\t\t\tid={keyFor(tableElementId, 'header')}\n\t\t\t\t>\n\t\t\t\t\t{tableHeaderContent}\n\t\t\t\t</MrlTableHeader>\n\t\t\t\t<MrlTableBody data-qa={keyFor(dataQaPrefix, 'body')} id={keyFor(tableElementId, 'body')}>\n\t\t\t\t\t{memoizedItems.length === 0 ? (\n\t\t\t\t\t\t<EmptyStateWrapper visibleColumnCount={visibleColumnCount}>\n\t\t\t\t\t\t\t{emptyState}\n\t\t\t\t\t\t</EmptyStateWrapper>\n\t\t\t\t\t) : (\n\t\t\t\t\t\ttableBodyContent\n\t\t\t\t\t)}\n\t\t\t\t</MrlTableBody>\n\t\t\t</MrlTable>\n\t\t\t<MrlLiveRegion\n\t\t\t\tariaLive=\"assertive\"\n\t\t\t\tvisible={false}\n\t\t\t\tsrContent={srContent}\n\t\t\t\tshouldClearContent={true}\n\t\t\t/>\n\t\t</>\n\t);\n}\n"],"names":["ROW_HEIGHT_PX","sortItems","columns","items","sortDescriptor","sortColumn","find","col","id","column","console","error","concat","sortByRowContext","sortBy","sort","a","b","direction","sortComparator","sortAlphabeticallyAsCoercedStrings","aSortValue","bSortValue","EmptyStateWrapper","_ref","children","visibleColumnCount","React","createElement","role","colSpan","VisuallyHiddenAccessibleButton","props","horizontalAlign","rest","_objectWithoutProperties","_excluded","_extends","type","className","classNames","styles","DefaultColumnContent","_ref2","dataQaPrefix","tableElementId","handleSortClick","hasScrollShadowLeft","hasScrollShadowRight","allowsSorting","name","sticky","tooltip","elementId","keyFor","dataQa","columnProps","scope","memoizedTooltip","useMemo","MrlTooltip","anchor","kind","position","text","tabIndex","MrlSvg","svg","info","size","tooltipContent","undefined","MrlTableColumn","currentDirection","nextDirection","nextSortDirection","onSortClick","onClick","sortText","sortIcon","MrlSmartTable","_props$dataQaPrefix","emptyStateText","_props$emptyState","emptyState","MrlTableEmptyState","selectionOptions","defaultSortDescriptor","customSortItems","_props$enableVirtuali","enableVirtualization","ariaProps","_excluded2","idRef","useRef","getUniqueId","tableRef","_React$useState","useState","_React$useState2","_slicedToArray","scrollContainer","setScrollContainer","current","_React$useState3","_React$useState4","srContent","setSrContent","_React$useState5","_React$useState6","scrollShadowLeft","setScrollShadowLeft","_React$useState7","_React$useState8","scrollShadowRight","setScrollShadowRight","hasStickyLeftColumn","some","hasStickyRightColumn","useLayoutEffect","container","getScrollableContainer","scrollHandler","_hasHorizontalScroll","hasHorizontalScroll","hasScrollLeft","hasScrollRight","debouncedScrollHandler","debounce","observer","ResizeObserver","observe","document","addEventListener","removeEventListener","disconnect","length","_React$useState9","_React$useState0","setSortDescriptor","announcement","memoizedItems","rowVirtualizer","useVirtualizer","count","enabled","estimateSize","getItemKey","useCallback","index","getScrollElement","overscan","useAnimationFrameWithResizeObserver","tableHeaderSelectionColumn","rowItemSelectionCell","mode","onSelectionChange","selectedKeys","isAnySelected","isAllSelected","selectionColumnStickyValue","selectNone","Set","selectAll","filter","item","isSelectable","map","selectOne","itemId","selectAdd","selectRemove","keys","delete","onSelectAllClick","onSelectClick","has","key","MrlCheckboxStandalone","attrs","onChange","selected","_ref3","_ref3$isSelectable","MrlTableCell","tableHeaderContent","Fragment","renderColumn","ColumnContent","tableBodyContent","virtualRows","getVirtualItems","paddingTop","start","paddingBottom","getTotalSize","end","style","height","virtualRow","_rowItemSelectionCell","MrlTableRow","isDisabled","ref","rowRef","CellContent","renderCell","MemoizedDefaultCellContent","_rowItemSelectionCell2","MrlTable","MrlTableHeader","MrlTableBody","MrlLiveRegion","ariaLive","visible","shouldClearContent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MrlSmartTable.js","sources":["../../../../../src/components/table/MrlSmartTable/MrlSmartTable.tsx"],"sourcesContent":["import * as React from 'react';\nimport classNames from 'classnames';\nimport debounce from 'lodash.debounce';\nimport { useVirtualizer } from '@tanstack/react-virtual';\nimport {\n\tMrlCheckboxStandalone,\n\tMrlLiveRegion,\n\tMrlSvg,\n\tMrlTable,\n\tMrlTableBody,\n\tMrlTableCell,\n\tMrlTableColumn,\n\tMrlTableHeader,\n\tMrlTableRow,\n\tMrlTooltip\n} from '../../';\nimport { MrlTableProps } from '../MrlTable';\nimport { MrlTableEmptyState } from '../MrlTableEmptyState';\nimport {\n\tMrlSortDirection,\n\tMrlTableCellHorizontalAlign,\n\tMrlTableColumnId,\n\tMrlTableColumnSortDescriptor,\n\tMrlTableItemId,\n\tMrlTableSelectionMode\n} from '../constants';\nimport { getUniqueId } from '../../../utils';\nimport {\n\tkeyFor,\n\tnextSortDirection,\n\tsortAlphabeticallyAsCoercedStrings,\n\tsortIcon,\n\tsortText\n} from '../utils';\nimport { info } from '@muraldevkit/ds-icons';\n\nimport styles from './MrlSmartTable.module.scss';\nimport { getScrollableContainer } from '../../../utils/getScrollableContainer/getScrollableContainer';\nimport { hasHorizontalScroll } from '../../../utils/hasHorizontalScroll/hasHorizontalScroll';\nimport { MemoizedDefaultCellContent } from './components/DefaultCellContent';\n\nconst ROW_HEIGHT_PX = 48;\n\nconst sortItems = (\n\tcolumns: MrlSmartTableColumn[],\n\titems: MrlTableItem[],\n\tsortDescriptor: MrlTableColumnSortDescriptor\n): MrlTableItem[] => {\n\tconst sortColumn = columns.find((col) => col.id === sortDescriptor.column);\n\tif (!sortColumn) {\n\t\tconsole.error(`No column found for sort descriptor key: ${sortDescriptor.column}`);\n\t\treturn items;\n\t}\n\n\tconst { sortByRowContext, sortBy } = sortColumn;\n\n\tif (sortByRowContext) {\n\t\treturn [...items].sort((a, b) => sortByRowContext(a, b) * sortDescriptor.direction);\n\t}\n\n\tconst sortComparator = sortBy || sortAlphabeticallyAsCoercedStrings;\n\n\treturn [...items].sort((a, b) => {\n\t\tconst aSortValue = a[sortColumn.id];\n\t\tconst bSortValue = b[sortColumn.id];\n\t\treturn sortComparator(aSortValue, bSortValue) * sortDescriptor.direction;\n\t});\n};\n\nfunction EmptyStateWrapper({\n\tchildren,\n\tvisibleColumnCount\n}: {\n\tchildren: React.ReactNode;\n\tvisibleColumnCount: number;\n}): JSX.Element {\n\treturn (\n\t\t<tr role=\"row\">\n\t\t\t<td role=\"gridcell\" colSpan={visibleColumnCount}>\n\t\t\t\t{children}\n\t\t\t</td>\n\t\t</tr>\n\t);\n}\n\ninterface VisuallyHiddenAccessibleButtonProps extends React.HTMLProps<HTMLButtonElement> {\n\thorizontalAlign?: MrlTableCellHorizontalAlign;\n}\n\nconst VisuallyHiddenAccessibleButton = (props: VisuallyHiddenAccessibleButtonProps) => {\n\tconst { horizontalAlign, ...rest } = props;\n\n\treturn (\n\t\t<button\n\t\t\t{...rest}\n\t\t\ttype=\"button\"\n\t\t\tclassName={classNames(styles['MrlSmartTable--accessible-visually-hidden-button'], {\n\t\t\t\t[styles['align-right']]: horizontalAlign === 'right'\n\t\t\t})}\n\t\t/>\n\t);\n};\n\nexport interface MrlSmartColumnRendererProps {\n\t/**\n\t * The column being rendered.\n\t */\n\tcolumn: MrlSmartTableColumn;\n\t/**\n\t * A function to change current sort descriptor.\n\t */\n\thandleSortClick: ({\n\t\tcolumn,\n\t\tdirection,\n\t\tname\n\t}: {\n\t\tcolumn: MrlSmartTableColumn['id'];\n\t\tdirection: MrlSortDirection;\n\t\tname: string;\n\t}) => void;\n\t/**\n\t * The element id of the table.\n\t */\n\ttableElementId: string;\n\t/**\n\t * The data-qa prefix of the table.\n\t */\n\tdataQaPrefix: string;\n\t/**\n\t * The current sort descriptor.\n\t */\n\tsortDescriptor?: MrlTableColumnSortDescriptor;\n\thasScrollShadowLeft: boolean;\n\thasScrollShadowRight: boolean;\n\thorizontalAlign?: MrlTableCellHorizontalAlign;\n}\n\nexport interface MrlSmartCellRendererProps {\n\t/**\n\t * The item for the cell being rendered.\n\t */\n\titem: MrlTableItem;\n\t/**\n\t * The column for the cell being rendered.\n\t */\n\tcolumn: MrlSmartTableColumn;\n\t/**\n\t * The element id of the table.\n\t */\n\ttableElementId: string;\n\t/**\n\t * The data-qa prefix of the table.\n\t */\n\tdataQaPrefix: string;\n\thasScrollShadowLeft: boolean;\n\thasScrollShadowRight: boolean;\n}\n\nconst DefaultColumnContent = ({\n\tcolumn,\n\tdataQaPrefix,\n\ttableElementId,\n\thandleSortClick,\n\tsortDescriptor,\n\thasScrollShadowLeft,\n\thasScrollShadowRight\n}: MrlSmartColumnRendererProps) => {\n\tconst { allowsSorting, horizontalAlign, id, name, sticky, tooltip } = column;\n\tconst elementId = keyFor(tableElementId, 'column', id);\n\tconst dataQa = keyFor(dataQaPrefix, 'column', id);\n\tconst columnProps = {\n\t\t'data-qa': dataQa,\n\t\thasScrollShadowLeft,\n\t\thasScrollShadowRight,\n\t\thorizontalAlign,\n\t\tid: elementId,\n\t\tscope: 'col',\n\t\tsticky\n\t};\n\n\tconst memoizedTooltip = React.useMemo(\n\t\t() => (\n\t\t\t<MrlTooltip\n\t\t\t\tanchor=\"center\"\n\t\t\t\tdataQa={`${dataQa}-tooltip`}\n\t\t\t\tposition=\"bottom\"\n\t\t\t\ttext={tooltip || ''}\n\t\t\t>\n\t\t\t\t{/* eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex */}\n\t\t\t\t<span data-qa={`${dataQa}-tooltip-trigger`} tabIndex={0}>\n\t\t\t\t\t<MrlSvg className=\"MrlTableColumn--tooltip\" svg={info} size=\"small\" />\n\t\t\t\t</span>\n\t\t\t</MrlTooltip>\n\t\t),\n\t\t[dataQa, tooltip]\n\t);\n\n\tconst tooltipContent = tooltip ? memoizedTooltip : undefined;\n\n\tif (!allowsSorting) {\n\t\treturn (\n\t\t\t<MrlTableColumn {...columnProps}>\n\t\t\t\t{name}\n\t\t\t\t{tooltipContent}\n\t\t\t</MrlTableColumn>\n\t\t);\n\t}\n\n\tconst currentDirection = sortDescriptor?.column === id ? sortDescriptor.direction : undefined;\n\tconst nextDirection = nextSortDirection(currentDirection);\n\tconst onSortClick = () => {\n\t\thandleSortClick({ column: id, direction: nextDirection, name: name });\n\t};\n\n\treturn (\n\t\t<MrlTableColumn onClick={onSortClick} {...columnProps}>\n\t\t\t<VisuallyHiddenAccessibleButton\n\t\t\t\taria-label={`Sort ${sortText(nextDirection)} by ${name}`}\n\t\t\t\thorizontalAlign={horizontalAlign}\n\t\t\t\tonClick={onSortClick}\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tclassName={classNames(styles['allowsSorting'], {\n\t\t\t\t\t\t[styles['align-right']]: horizontalAlign === 'right',\n\t\t\t\t\t\t[styles['noSortSelected']]: horizontalAlign === 'right' && !currentDirection\n\t\t\t\t\t})}\n\t\t\t\t>\n\t\t\t\t\t{name}\n\t\t\t\t\t{tooltipContent}\n\t\t\t\t\t{currentDirection ? (\n\t\t\t\t\t\t<MrlSvg\n\t\t\t\t\t\t\tclassName=\"MrlTableColumn--sort-indicator\"\n\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\tsvg={sortIcon(currentDirection)}\n\t\t\t\t\t\t/>\n\t\t\t\t\t) : (\n\t\t\t\t\t\thorizontalAlign !== 'right' && <span className={styles['empty-icon-space']}></span>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</VisuallyHiddenAccessibleButton>\n\t\t</MrlTableColumn>\n\t);\n};\n\nexport interface MrlTableItem extends Record<string, unknown> {\n\t/**\n\t * A unique identifier for the row item.\n\t */\n\tid: MrlTableItemId;\n\t/**\n\t * This makes the row item not selectable.\n\t */\n\tisSelectable?: boolean;\n\t/**\n\t * This makes the row item visually disabled.\n\t */\n\tisDisabled?: boolean;\n\t/**\n\t * A ref to the table row element\n\t * The ref is an object where the key is the item id and the value is the table row element\n\t */\n\trowRef?: React.MutableRefObject<Record<MrlTableItemId, HTMLTableRowElement>>;\n}\n\nexport type MrlTableColumnSticky = 'left' | 'right';\n\nexport interface MrlSmartTableColumn {\n\t/**\n\t * The key used to retrieve the cell value from the item object,\n\t * e.g. `item[key]`.\n\t */\n\tid: MrlTableColumnId;\n\t/**\n\t * The display name of the column.\n\t */\n\tname: string;\n\t/**\n\t * The horizontal alignment of the column content.\n\t * If not provided, the default alignment is left.\n\t */\n\thorizontalAlign?: MrlTableCellHorizontalAlign;\n\t/**\n\t * A component used to override rendering for each column cell. The\n\t * component is expected to render a MrlTableColumn.\n\t */\n\trenderColumn?: (props: MrlSmartColumnRendererProps) => JSX.Element;\n\t/**\n\t * A component used to override rendering for each row cell. The\n\t * component is expected to render a MrlTableCell.\n\t */\n\trenderCell?: (props: MrlSmartCellRendererProps) => JSX.Element;\n\t/**\n\t * Whether the column allows sorting.\n\t */\n\tallowsSorting?: boolean;\n\t/**\n\t * A sort comparator function for the column.\n\t *\n\t * @default sortAlphabeticallyAsCoercedStrings\n\t */\n\tsortBy?: (aValue: unknown, bValue: unknown) => number;\n\t/**\n\t * A sort comparator function for the column that receives the entire\n\t * row context. Will override the `sortBy` function (if provided).\n\t *\n\t * @param aValue\n\t * @param bValue\n\t * @returns number\n\t */\n\tsortByRowContext?: (aValue: unknown, bValue: unknown) => number;\n\t/**\n\t * Whether the column is sticky\n\t * the sticky effect will only work on the first or last column.\n\t * Set to 'left' for the first column and 'right' for the last column\n\t *\n\t * @example The container of the table will need overflow:scroll/auto\n\t * and the width will need to be constrained in order for\n\t * the columns to be 'sticky'\n\t */\n\tsticky?: MrlTableColumnSticky;\n\t/**\n\t * A tooltip to display on the column header.\n\t */\n\ttooltip?: string;\n}\n\n/**\n * A set of item ids.\n */\nexport type MrlTableSelection = Set<MrlTableItemId>;\n\nexport interface MrlSmartTableSelectionOptions {\n\t/**\n\t * The type of selection that is allowed in the collection.\n\t *\n\t * @default none\n\t */\n\tmode: MrlTableSelectionMode;\n\t/**\n\t * The currently selected keys in the collection (controlled).\n\t */\n\tselectedKeys: MrlTableSelection;\n\t/**\n\t * Handler that is called when the selection changes.\n\t */\n\tonSelectionChange: (keys: MrlTableSelection) => void;\n}\n\nexport interface MrlTableColumnSortOptions {\n\t/**\n\t * The column to sort by.\n\t */\n\tsortColumn: MrlSmartTableColumn;\n\t/**\n\t * The details of the sort.\n\t */\n\tsortDescriptor: MrlTableColumnSortDescriptor;\n}\n\nexport interface MrlSmartTableProps\n\textends Partial<\n\t\tPick<MrlTableProps, 'aria-label' | 'aria-labelledby' | 'aria-describedby' | 'aria-details'>\n\t> {\n\t/**\n\t * A list of table columns.\n\t */\n\tcolumns: MrlSmartTableColumn[];\n\t/**\n\t * A list of items to populate the table.\n\t */\n\titems: MrlTableItem[];\n\t/**\n\t * When provided, enables and controls table selection.\n\t */\n\tselectionOptions?: MrlSmartTableSelectionOptions;\n\t/**\n\t * A prefix applied to each data-qa element within the table.\n\t *\n\t * @default \"mrl-smart-table\"\n\t */\n\tdataQaPrefix?: string;\n\t/**\n\t * Text to be displayed when there are no rows in the table.\n\t * Will be ignored if `emptyState` is provided.\n\t *\n\t * @default \"There's no data available to be displayed in this table.\"\n\t */\n\temptyStateText?: string;\n\t/**\n\t * Provides content to display when there are no rows in the table.\n\t *\n\t * @default MrlTableEmptyState\n\t */\n\temptyState?: JSX.Element;\n\t/**\n\t * An element id (and if not provided, a unique value decorated\n\t * to prevent conflict with aria controls will be generated).\n\t *\n\t * @default ${id}-mrl-smart-table\n\t */\n\tid?: string;\n\t/**\n\t * A function to override the default sort items when a sort descriptor is set.\n\t */\n\tcustomSortItems?: ({ sortColumn, sortDescriptor }: MrlTableColumnSortOptions) => void;\n\t/**\n\t * Provides information on how the table should be sorted on initialization.\n\t */\n\tdefaultSortDescriptor?: MrlTableColumnSortDescriptor;\n\t/**\n\t * Enables row virtualization using @tanstack/react-virtual. The table must live\n\t * inside a container with a fixed height and vertical scroll for virtualization\n\t * to function correctly.\n\t *\n\t * @default false\n\t */\n\tenableVirtualization?: boolean;\n}\n\n/**\n * MrlSmartTable Component\n *\n * @param {MrlSmartTableProps} props - MrlSmartTable component props\n * @returns a table\n */\nexport function MrlSmartTable(props: MrlSmartTableProps): JSX.Element {\n\tconst {\n\t\tcolumns,\n\t\tdataQaPrefix = 'mrl-smart-table',\n\t\temptyStateText,\n\t\temptyState = <MrlTableEmptyState text={emptyStateText} />,\n\t\tid,\n\t\titems,\n\t\tselectionOptions,\n\t\tdefaultSortDescriptor,\n\t\tcustomSortItems,\n\t\tenableVirtualization = false,\n\t\t...ariaProps\n\t} = props;\n\tconst idRef = React.useRef<string>(id || getUniqueId('mrl-smart-table'));\n\tconst tableRef = React.useRef<HTMLTableElement>(null);\n\tconst [scrollContainer, setScrollContainer] = React.useState<HTMLElement | null>(null);\n\tconst tableElementId = idRef.current;\n\tconst [srContent, setSrContent] = React.useState<string>('');\n\tconst [scrollShadowLeft, setScrollShadowLeft] = React.useState<boolean>(false);\n\tconst [scrollShadowRight, setScrollShadowRight] = React.useState<boolean>(false);\n\n\tconst hasStickyLeftColumn = React.useMemo(\n\t\t() => columns.some((col) => col.sticky === 'left'),\n\t\t[columns]\n\t);\n\n\tconst hasStickyRightColumn = React.useMemo(\n\t\t() => columns.some((col) => col.sticky === 'right'),\n\t\t[columns]\n\t);\n\n\tReact.useLayoutEffect(() => {\n\t\tif (!tableRef.current) return;\n\t\tconst container = getScrollableContainer(tableRef.current);\n\t\tsetScrollContainer(container);\n\t}, []);\n\n\tReact.useLayoutEffect(() => {\n\t\tif (!tableRef.current || !scrollContainer) return;\n\t\tif (!hasStickyLeftColumn && !hasStickyRightColumn) return;\n\n\t\tfunction scrollHandler() {\n\t\t\tif (!tableRef.current || !scrollContainer) return;\n\t\t\tconst { hasScrollLeft, hasScrollRight } = hasHorizontalScroll(scrollContainer);\n\t\t\tsetScrollShadowLeft(hasScrollLeft);\n\t\t\tsetScrollShadowRight(hasScrollRight);\n\t\t}\n\t\tconst debouncedScrollHandler = debounce(scrollHandler, 25);\n\n\t\tconst observer = new ResizeObserver(scrollHandler);\n\t\tobserver.observe(tableRef.current);\n\n\t\tdocument.addEventListener('scroll', debouncedScrollHandler, true);\n\t\treturn () => {\n\t\t\tdocument.removeEventListener('scroll', debouncedScrollHandler, true);\n\t\t\tobserver.disconnect();\n\t\t};\n\t}, [hasStickyLeftColumn, hasStickyRightColumn, scrollContainer]);\n\n\tconst visibleColumnCount = columns.length + (selectionOptions ? 1 : 0);\n\tconst [sortDescriptor, setSortDescriptor] = React.useState<\n\t\tMrlTableColumnSortDescriptor | undefined\n\t>(defaultSortDescriptor);\n\n\tconst handleSortClick = (sortDescriptor: MrlTableColumnSortDescriptor) => {\n\t\tconst { direction, name, column } = sortDescriptor;\n\n\t\tif (customSortItems) {\n\t\t\tconst sortColumn = columns.find((col) => col.id === column);\n\t\t\tif (!sortColumn) {\n\t\t\t\tconsole.error(`No column found for sort descriptor key: ${column}`);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcustomSortItems({ sortColumn, sortDescriptor });\n\t\t}\n\t\tsetSortDescriptor(sortDescriptor);\n\n\t\tconst announcement = `Now sorting ${sortText(direction)} by ${name}`;\n\t\tsetSrContent(announcement);\n\t};\n\n\tconst memoizedItems = React.useMemo(() => {\n\t\t// sort items if sort descriptor is set and custom sort items functions is not provided\n\t\treturn !customSortItems && sortDescriptor ? sortItems(columns, items, sortDescriptor) : items;\n\t}, [columns, customSortItems, items, sortDescriptor]);\n\n\tconst rowVirtualizer = useVirtualizer({\n\t\tcount: memoizedItems.length,\n\t\tenabled: enableVirtualization,\n\t\testimateSize: () => ROW_HEIGHT_PX,\n\t\tgetItemKey: React.useCallback(\n\t\t\t(index: number) => {\n\t\t\t\treturn keyFor(tableElementId, 'row', memoizedItems[index].id);\n\t\t\t},\n\t\t\t[tableElementId, memoizedItems]\n\t\t),\n\t\tgetScrollElement: () => scrollContainer,\n\t\toverscan: 6,\n\t\tuseAnimationFrameWithResizeObserver: true\n\t});\n\n\tlet tableHeaderSelectionColumn: JSX.Element | undefined;\n\tlet rowItemSelectionCell: ((item: MrlTableItem) => JSX.Element) | undefined;\n\n\tif (selectionOptions) {\n\t\tconst { mode, onSelectionChange, selectedKeys } = selectionOptions;\n\t\tconst isAnySelected = memoizedItems.length > 0 && selectedKeys.size > 0;\n\t\tconst isAllSelected = isAnySelected && selectedKeys.size === memoizedItems.length;\n\n\t\tconst selectionColumnStickyValue = hasStickyLeftColumn ? 'left' : undefined;\n\t\tconst selectNone = () => onSelectionChange(new Set());\n\t\tconst selectAll = () =>\n\t\t\tonSelectionChange(\n\t\t\t\tnew Set(memoizedItems.filter((item) => item.isSelectable !== false).map((item) => item.id))\n\t\t\t);\n\t\tconst selectOne = (itemId: MrlTableItemId) => onSelectionChange(new Set([itemId]));\n\t\tconst selectAdd = (itemId: MrlTableItemId) =>\n\t\t\tonSelectionChange(new Set([...selectedKeys, itemId]));\n\t\tconst selectRemove = (itemId: MrlTableItemId) => {\n\t\t\tconst keys = new Set(selectedKeys);\n\t\t\tkeys.delete(itemId);\n\t\t\tonSelectionChange(keys);\n\t\t};\n\n\t\tconst onSelectAllClick = (): void => (isAnySelected ? selectNone() : selectAll());\n\t\tconst onSelectClick = (itemId: MrlTableItemId): void => {\n\t\t\tif (mode === 'multiple') {\n\t\t\t\tselectedKeys.has(itemId) ? selectRemove(itemId) : selectAdd(itemId);\n\t\t\t} else if (mode === 'single') {\n\t\t\t\tselectedKeys.has(itemId) ? selectNone() : selectOne(itemId);\n\t\t\t}\n\t\t};\n\n\t\ttableHeaderSelectionColumn = (\n\t\t\t<MrlTableColumn\n\t\t\t\tid={keyFor(tableElementId, 'column', 'selection')}\n\t\t\t\tdata-qa={keyFor(dataQaPrefix, 'column', 'selection')}\n\t\t\t\tkey={keyFor(tableElementId, 'column', 'selection')}\n\t\t\t\tclassName=\"selection\"\n\t\t\t\tscope=\"col\"\n\t\t\t\tsticky={selectionColumnStickyValue}\n\t\t\t\thasScrollShadowLeft={scrollShadowLeft}\n\t\t\t\thasScrollShadowRight={scrollShadowRight}\n\t\t\t>\n\t\t\t\t{selectionOptions.mode === 'multiple' && (\n\t\t\t\t\t<MrlCheckboxStandalone\n\t\t\t\t\t\tattrs={{\n\t\t\t\t\t\t\t'aria-label': 'Select all rows',\n\t\t\t\t\t\t\tid: keyFor(tableElementId, 'column', 'selection-select-all-checkbox'),\n\t\t\t\t\t\t\tonChange: onSelectAllClick\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tdata-qa={keyFor(dataQaPrefix, 'column', 'selection-select-all-checkbox')}\n\t\t\t\t\t\tkey={keyFor(tableElementId, 'column', 'selection-select-all-checkbox')}\n\t\t\t\t\t\tselected={isAllSelected ? 'checked' : isAnySelected ? 'indeterminate' : 'default'}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</MrlTableColumn>\n\t\t);\n\t\trowItemSelectionCell = ({ id, isSelectable = true }: MrlTableItem) => (\n\t\t\t<MrlTableCell\n\t\t\t\tid={keyFor(tableElementId, 'row-cell', 'selection', id)}\n\t\t\t\tdata-qa={keyFor(dataQaPrefix, 'row-cell', 'selection', id)}\n\t\t\t\tkey={keyFor(tableElementId, 'row-cell', 'selection', id)}\n\t\t\t\tclassName=\"selection\"\n\t\t\t\tsticky={selectionColumnStickyValue}\n\t\t\t>\n\t\t\t\t{isSelectable ? (\n\t\t\t\t\t<MrlCheckboxStandalone\n\t\t\t\t\t\tattrs={{\n\t\t\t\t\t\t\t'aria-label': `Select row with id: ${id}`,\n\t\t\t\t\t\t\t'data-qa': keyFor(dataQaPrefix, 'row-cell', 'selection', id, 'checkbox'),\n\t\t\t\t\t\t\tid: keyFor(tableElementId, 'row-cell', 'selection', id, 'checkbox'),\n\t\t\t\t\t\t\tonChange: () => onSelectClick(id)\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tkey={keyFor(tableElementId, 'row-cell', 'selection', id, 'checkbox')}\n\t\t\t\t\t\tselected={selectionOptions.selectedKeys.has(id) ? 'checked' : 'default'}\n\t\t\t\t\t/>\n\t\t\t\t) : undefined}\n\t\t\t</MrlTableCell>\n\t\t);\n\t}\n\n\tconst tableHeaderContent = (\n\t\t<>\n\t\t\t{tableHeaderSelectionColumn}\n\t\t\t{columns.map((column: MrlSmartTableColumn) => {\n\t\t\t\tconst { id, renderColumn } = column;\n\t\t\t\tconst ColumnContent = renderColumn ? renderColumn : DefaultColumnContent;\n\t\t\t\treturn (\n\t\t\t\t\t<ColumnContent\n\t\t\t\t\t\tcolumn={column}\n\t\t\t\t\t\tdataQaPrefix={dataQaPrefix}\n\t\t\t\t\t\tkey={keyFor(tableElementId, 'column', id)}\n\t\t\t\t\t\ttableElementId={tableElementId}\n\t\t\t\t\t\thandleSortClick={handleSortClick}\n\t\t\t\t\t\tsortDescriptor={sortDescriptor}\n\t\t\t\t\t\thasScrollShadowLeft={scrollShadowLeft}\n\t\t\t\t\t\thasScrollShadowRight={scrollShadowRight}\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t})}\n\t\t</>\n\t);\n\n\tlet tableBodyContent: React.JSX.Element | React.JSX.Element[];\n\n\tif (enableVirtualization) {\n\t\tconst virtualRows = rowVirtualizer.getVirtualItems();\n\t\tconst paddingTop = virtualRows.length > 0 ? virtualRows[0].start : 0;\n\t\tconst paddingBottom =\n\t\t\tvirtualRows.length > 0\n\t\t\t\t? rowVirtualizer.getTotalSize() - virtualRows[virtualRows.length - 1].end\n\t\t\t\t: 0;\n\n\t\ttableBodyContent = (\n\t\t\t<>\n\t\t\t\t{paddingTop > 0 && (\n\t\t\t\t\t<tr aria-hidden>\n\t\t\t\t\t\t<td colSpan={visibleColumnCount} style={{ height: paddingTop }} />\n\t\t\t\t\t</tr>\n\t\t\t\t)}\n\t\t\t\t{virtualRows.map((virtualRow) => {\n\t\t\t\t\tconst item = memoizedItems[virtualRow.index];\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<MrlTableRow\n\t\t\t\t\t\t\tclassName={classNames({\n\t\t\t\t\t\t\t\t[styles['MrlTableRow--selected']]: selectionOptions?.selectedKeys.has(item.id),\n\t\t\t\t\t\t\t\t'MrlTableRow--selected': selectionOptions?.selectedKeys.has(item.id),\n\t\t\t\t\t\t\t\t[styles['MrlTableRow--disabled']]: item.isDisabled\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\tid={keyFor(tableElementId, 'row', item.id)}\n\t\t\t\t\t\t\titemId={item.id}\n\t\t\t\t\t\t\tdata-qa={keyFor(dataQaPrefix, 'row', item.id)}\n\t\t\t\t\t\t\tkey={virtualRow.key}\n\t\t\t\t\t\t\tstyle={{ height: virtualRow.size }}\n\t\t\t\t\t\t\tref={item.rowRef}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{rowItemSelectionCell?.(item)}\n\t\t\t\t\t\t\t{columns.map((column: MrlSmartTableColumn) => {\n\t\t\t\t\t\t\t\tconst CellContent = column.renderCell\n\t\t\t\t\t\t\t\t\t? column.renderCell\n\t\t\t\t\t\t\t\t\t: MemoizedDefaultCellContent;\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<CellContent\n\t\t\t\t\t\t\t\t\t\tcolumn={column}\n\t\t\t\t\t\t\t\t\t\tdataQaPrefix={dataQaPrefix}\n\t\t\t\t\t\t\t\t\t\titem={item}\n\t\t\t\t\t\t\t\t\t\tkey={keyFor(tableElementId, 'row-cell', item.id, column.id)}\n\t\t\t\t\t\t\t\t\t\ttableElementId={tableElementId}\n\t\t\t\t\t\t\t\t\t\thasScrollShadowLeft={scrollShadowLeft}\n\t\t\t\t\t\t\t\t\t\thasScrollShadowRight={scrollShadowRight}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t</MrlTableRow>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t\t{paddingBottom > 0 && (\n\t\t\t\t\t<tr aria-hidden>\n\t\t\t\t\t\t<td colSpan={visibleColumnCount} style={{ height: paddingBottom }} />\n\t\t\t\t\t</tr>\n\t\t\t\t)}\n\t\t\t</>\n\t\t);\n\t} else {\n\t\ttableBodyContent = memoizedItems.map((item) => (\n\t\t\t<MrlTableRow\n\t\t\t\tclassName={classNames({\n\t\t\t\t\t[styles['MrlTableRow--selected']]: selectionOptions?.selectedKeys.has(item.id),\n\t\t\t\t\t'MrlTableRow--selected': selectionOptions?.selectedKeys.has(item.id),\n\t\t\t\t\t[styles['MrlTableRow--disabled']]: item.isDisabled\n\t\t\t\t})}\n\t\t\t\tid={keyFor(tableElementId, 'row', item.id)}\n\t\t\t\titemId={item.id}\n\t\t\t\tdata-qa={keyFor(dataQaPrefix, 'row', item.id)}\n\t\t\t\tkey={keyFor(tableElementId, 'row', item.id)}\n\t\t\t\tref={item.rowRef}\n\t\t\t>\n\t\t\t\t{rowItemSelectionCell?.(item)}\n\t\t\t\t{columns.map((column: MrlSmartTableColumn) => {\n\t\t\t\t\tconst CellContent = column.renderCell ? column.renderCell : MemoizedDefaultCellContent;\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<CellContent\n\t\t\t\t\t\t\tcolumn={column}\n\t\t\t\t\t\t\tdataQaPrefix={dataQaPrefix}\n\t\t\t\t\t\t\titem={item}\n\t\t\t\t\t\t\tkey={keyFor(tableElementId, 'row-cell', item.id, column.id)}\n\t\t\t\t\t\t\ttableElementId={tableElementId}\n\t\t\t\t\t\t\thasScrollShadowLeft={scrollShadowLeft}\n\t\t\t\t\t\t\thasScrollShadowRight={scrollShadowRight}\n\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</MrlTableRow>\n\t\t));\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<MrlTable data-qa={dataQaPrefix} id={tableElementId} ref={tableRef} {...ariaProps}>\n\t\t\t\t<MrlTableHeader\n\t\t\t\t\tdata-qa={keyFor(dataQaPrefix, 'header')}\n\t\t\t\t\tid={keyFor(tableElementId, 'header')}\n\t\t\t\t>\n\t\t\t\t\t{tableHeaderContent}\n\t\t\t\t</MrlTableHeader>\n\t\t\t\t<MrlTableBody data-qa={keyFor(dataQaPrefix, 'body')} id={keyFor(tableElementId, 'body')}>\n\t\t\t\t\t{memoizedItems.length === 0 ? (\n\t\t\t\t\t\t<EmptyStateWrapper visibleColumnCount={visibleColumnCount}>\n\t\t\t\t\t\t\t{emptyState}\n\t\t\t\t\t\t</EmptyStateWrapper>\n\t\t\t\t\t) : (\n\t\t\t\t\t\ttableBodyContent\n\t\t\t\t\t)}\n\t\t\t\t</MrlTableBody>\n\t\t\t</MrlTable>\n\t\t\t<MrlLiveRegion\n\t\t\t\tariaLive=\"assertive\"\n\t\t\t\tvisible={false}\n\t\t\t\tsrContent={srContent}\n\t\t\t\tshouldClearContent={true}\n\t\t\t/>\n\t\t</>\n\t);\n}\n"],"names":["ROW_HEIGHT_PX","sortItems","columns","items","sortDescriptor","sortColumn","find","col","id","column","console","error","concat","sortByRowContext","sortBy","sort","a","b","direction","sortComparator","sortAlphabeticallyAsCoercedStrings","aSortValue","bSortValue","EmptyStateWrapper","_ref","children","visibleColumnCount","React","createElement","role","colSpan","VisuallyHiddenAccessibleButton","props","horizontalAlign","rest","_objectWithoutProperties","_excluded","_extends","type","className","classNames","styles","DefaultColumnContent","_ref2","dataQaPrefix","tableElementId","handleSortClick","hasScrollShadowLeft","hasScrollShadowRight","allowsSorting","name","sticky","tooltip","elementId","keyFor","dataQa","columnProps","scope","memoizedTooltip","useMemo","MrlTooltip","anchor","position","text","tabIndex","MrlSvg","svg","info","size","tooltipContent","undefined","MrlTableColumn","currentDirection","nextDirection","nextSortDirection","onSortClick","onClick","sortText","sortIcon","MrlSmartTable","_props$dataQaPrefix","emptyStateText","_props$emptyState","emptyState","MrlTableEmptyState","selectionOptions","defaultSortDescriptor","customSortItems","_props$enableVirtuali","enableVirtualization","ariaProps","_excluded2","idRef","useRef","getUniqueId","tableRef","_React$useState","useState","_React$useState2","_slicedToArray","scrollContainer","setScrollContainer","current","_React$useState3","_React$useState4","srContent","setSrContent","_React$useState5","_React$useState6","scrollShadowLeft","setScrollShadowLeft","_React$useState7","_React$useState8","scrollShadowRight","setScrollShadowRight","hasStickyLeftColumn","some","hasStickyRightColumn","useLayoutEffect","container","getScrollableContainer","scrollHandler","_hasHorizontalScroll","hasHorizontalScroll","hasScrollLeft","hasScrollRight","debouncedScrollHandler","debounce","observer","ResizeObserver","observe","document","addEventListener","removeEventListener","disconnect","length","_React$useState9","_React$useState0","setSortDescriptor","announcement","memoizedItems","rowVirtualizer","useVirtualizer","count","enabled","estimateSize","getItemKey","useCallback","index","getScrollElement","overscan","useAnimationFrameWithResizeObserver","tableHeaderSelectionColumn","rowItemSelectionCell","mode","onSelectionChange","selectedKeys","isAnySelected","isAllSelected","selectionColumnStickyValue","selectNone","Set","selectAll","filter","item","isSelectable","map","selectOne","itemId","selectAdd","selectRemove","keys","delete","onSelectAllClick","onSelectClick","has","key","MrlCheckboxStandalone","attrs","onChange","selected","_ref3","_ref3$isSelectable","MrlTableCell","tableHeaderContent","Fragment","renderColumn","ColumnContent","tableBodyContent","virtualRows","getVirtualItems","paddingTop","start","paddingBottom","getTotalSize","end","style","height","virtualRow","_rowItemSelectionCell","MrlTableRow","isDisabled","ref","rowRef","CellContent","renderCell","MemoizedDefaultCellContent","_rowItemSelectionCell2","MrlTable","MrlTableHeader","MrlTableBody","MrlLiveRegion","ariaLive","visible","shouldClearContent"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MrlToolbarButton.js","sources":["../../../../../src/components/toolbar/MrlToolbarButton/MrlToolbarButton.tsx"],"sourcesContent":["import * as React from 'react';\nimport { MrlIconButton, MrlIconButtonProps, MrlMenuItem, MrlMenuItemProps } from '../../../';\n\nimport styles from './MrlToolbarButton.module.scss';\nimport classnames from 'classnames';\n\n/**\n * Props for the MrlToolbarButton component.\n */\nexport interface MrlToolbarButtonProps {\n\t/** Additional class to add to the Toolbar button */\n\tclassName?: string;\n\t/**\n\t * The icon that will be rendered.\n\t */\n\ticon: React.ReactElement;\n\tincludeInRoving?: boolean;\n\t/**\n\t * A prop used to set a toolbar button to never move into the menu.\n\t */\n\tlockedInToolbar?: boolean;\n\t/**\n\t * onClick event for the button.\n\t */\n\tonClick?: (e?: React.MouseEvent<HTMLButtonElement>) => void;\n\t/**\n\t * Props used to control the display of the button in the menu.\n\t */\n\tmenuItemProps?: Omit<MrlMenuItemProps, 'onClick'>;\n\tqa?: string;\n\t/**\n\t * A prop used to render the item in the menu instead of the toolbar.\n\t */\n\trenderInMenu?: boolean;\n\ttext: string;\n\t/**\n\t * Props used to control the display of the button in the toolbar.\n\t */\n\ttoolbarButtonProps?: {\n\t\tbadge?: MrlIconButtonProps['badge'];\n\t\tdisableEvents?: MrlIconButtonProps['disableEvents'];\n\t\tkind?: MrlIconButtonProps['kind'];\n\t\tloading?: MrlIconButtonProps['loading'];\n\t\tloadingText?: MrlIconButtonProps['loadingText'];\n\t\tonKeyUp?: MrlIconButtonProps['onKeyUp'];\n\t\tonMouseUp?: MrlIconButtonProps['onMouseUp'];\n\t\tposition?: MrlIconButtonProps['position'];\n\t\tsize?: MrlIconButtonProps['size'];\n\t\tstate?: MrlIconButtonProps['state'];\n\t\ttipAnchor?: MrlIconButtonProps['tipAnchor'];\n\t\ttoggleAria?: MrlIconButtonProps['toggleAria'];\n\t\ttoggleStyle?: MrlIconButtonProps['toggleStyle'];\n\t
|
|
1
|
+
{"version":3,"file":"MrlToolbarButton.js","sources":["../../../../../src/components/toolbar/MrlToolbarButton/MrlToolbarButton.tsx"],"sourcesContent":["import * as React from 'react';\nimport { MrlIconButton, MrlIconButtonProps, MrlMenuItem, MrlMenuItemProps } from '../../../';\n\nimport styles from './MrlToolbarButton.module.scss';\nimport classnames from 'classnames';\n\n/**\n * Props for the MrlToolbarButton component.\n */\nexport interface MrlToolbarButtonProps {\n\t/** Additional class to add to the Toolbar button */\n\tclassName?: string;\n\t/**\n\t * The icon that will be rendered.\n\t */\n\ticon: React.ReactElement;\n\tincludeInRoving?: boolean;\n\t/**\n\t * A prop used to set a toolbar button to never move into the menu.\n\t */\n\tlockedInToolbar?: boolean;\n\t/**\n\t * onClick event for the button.\n\t */\n\tonClick?: (e?: React.MouseEvent<HTMLButtonElement>) => void;\n\t/**\n\t * Props used to control the display of the button in the menu.\n\t */\n\tmenuItemProps?: Omit<MrlMenuItemProps, 'onClick'>;\n\tqa?: string;\n\t/**\n\t * A prop used to render the item in the menu instead of the toolbar.\n\t */\n\trenderInMenu?: boolean;\n\ttext: string;\n\t/**\n\t * Props used to control the display of the button in the toolbar.\n\t */\n\ttoolbarButtonProps?: {\n\t\tbadge?: MrlIconButtonProps['badge'];\n\t\tdisableEvents?: MrlIconButtonProps['disableEvents'];\n\t\tkind?: MrlIconButtonProps['kind'];\n\t\tloading?: MrlIconButtonProps['loading'];\n\t\tloadingText?: MrlIconButtonProps['loadingText'];\n\t\tonKeyUp?: MrlIconButtonProps['onKeyUp'];\n\t\tonMouseUp?: MrlIconButtonProps['onMouseUp'];\n\t\tposition?: MrlIconButtonProps['position'];\n\t\tsize?: MrlIconButtonProps['size'];\n\t\tstate?: MrlIconButtonProps['state'];\n\t\ttipAnchor?: MrlIconButtonProps['tipAnchor'];\n\t\ttoggleAria?: MrlIconButtonProps['toggleAria'];\n\t\ttoggleStyle?: MrlIconButtonProps['toggleStyle'];\n\t};\n}\n\n/**\n * MrlToolbarButton component.\n * @param props The MrlToolbarButton component properties.\n * @returns The MrlToolbarButton component.\n */\nexport const MrlToolbarButton = React.forwardRef<HTMLButtonElement, MrlToolbarButtonProps>(\n\tfunction MrlToolbarButton(props, ref): JSX.Element {\n\t\tconst {\n\t\t\tclassName,\n\t\t\ticon,\n\t\t\tincludeInRoving = false,\n\t\t\tmenuItemProps,\n\t\t\tonClick,\n\t\t\tqa,\n\t\t\trenderInMenu,\n\t\t\ttext,\n\t\t\ttoolbarButtonProps = {\n\t\t\t\tposition: 'bottom',\n\t\t\t\tsize: 'small',\n\t\t\t\tstate: 'default'\n\t\t\t},\n\t\t\t...rest\n\t\t} = props;\n\t\tconst classes = classnames('MrlToolbarButton', className);\n\n\t\tif (renderInMenu) {\n\t\t\treturn (\n\t\t\t\t<MrlMenuItem {...menuItemProps} className={classes} data-qa={qa} onClick={onClick}>\n\t\t\t\t\t<span className={styles.MrlToolbarButtonIcon}>{icon}</span>\n\t\t\t\t\t{text}\n\t\t\t\t</MrlMenuItem>\n\t\t\t);\n\t\t}\n\n\t\treturn (\n\t\t\t<MrlIconButton\n\t\t\t\t{...rest}\n\t\t\t\t{...toolbarButtonProps}\n\t\t\t\tclassName={classes}\n\t\t\t\tdata-qa={qa}\n\t\t\t\tdata-roving={includeInRoving ? 'true' : undefined}\n\t\t\t\ticon={icon}\n\t\t\t\tonClick={onClick}\n\t\t\t\tref={ref}\n\t\t\t\ttext={text}\n\t\t\t/>\n\t\t);\n\t}\n);\n"],"names":["MrlToolbarButton","React","forwardRef","props","ref","className","icon","_props$includeInRovin","includeInRoving","menuItemProps","onClick","qa","renderInMenu","text","_props$toolbarButtonP","toolbarButtonProps","position","size","state","rest","_objectWithoutProperties","_excluded","classes","classnames","createElement","MrlMenuItem","_extends","styles","MrlToolbarButtonIcon","MrlIconButton","undefined"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA;AACA;AACA;;AA+CA;AACA;AACA;AACA;AACA;AACO,IAAMA,gBAAgB,gBAAGC,gBAAK,CAACC,UAAU,CAC/C,SAASF,gBAAgBA,CAACG,KAAK,EAAEC,GAAG,EAAe;AAClD,EAAA,IACCC,SAAS,GAcNF,KAAK,CAdRE,SAAS;IACTC,IAAI,GAaDH,KAAK,CAbRG,IAAI;IAAAC,qBAAA,GAaDJ,KAAK,CAZRK,eAAe;AAAfA,IAAAA,eAAe,GAAAD,qBAAA,KAAA,MAAA,GAAG,KAAK,GAAAA,qBAAA;IACvBE,aAAa,GAWVN,KAAK,CAXRM,aAAa;IACbC,OAAO,GAUJP,KAAK,CAVRO,OAAO;IACPC,EAAE,GASCR,KAAK,CATRQ,EAAE;IACFC,YAAY,GAQTT,KAAK,CARRS,YAAY;IACZC,IAAI,GAODV,KAAK,CAPRU,IAAI;IAAAC,qBAAA,GAODX,KAAK,CANRY,kBAAkB;IAAlBA,kBAAkB,GAAAD,qBAAA,KAAA,MAAA,GAAG;AACpBE,MAAAA,QAAQ,EAAE,QAAQ;AAClBC,MAAAA,IAAI,EAAE,OAAO;AACbC,MAAAA,KAAK,EAAE;AACR,KAAC,GAAAJ,qBAAA;AACEK,IAAAA,IAAI,GAAAC,iDAAA,CACJjB,KAAK,EAAAkB,SAAA,CAAA;AACT,EAAA,IAAMC,OAAO,GAAGC,2BAAU,CAAC,kBAAkB,EAAElB,SAAS,CAAC;AAEzD,EAAA,IAAIO,YAAY,EAAE;IACjB,oBACCX,gBAAA,CAAAuB,aAAA,CAACC,uBAAW,EAAAC,iCAAA,KAAKjB,aAAa,EAAA;AAAEJ,MAAAA,SAAS,EAAEiB,OAAQ;AAAC,MAAA,SAAA,EAASX,EAAG;AAACD,MAAAA,OAAO,EAAEA;KAAQ,CAAA,eACjFT,gBAAA,CAAAuB,aAAA,CAAA,MAAA,EAAA;MAAMnB,SAAS,EAAEsB,+BAAM,CAACC;AAAqB,KAAA,EAAEtB,IAAW,CAAC,EAC1DO,IACW,CAAC;AAEhB,EAAA;EAEA,oBACCZ,gBAAA,CAAAuB,aAAA,CAACK,2BAAa,EAAAH,iCAAA,CAAA,EAAA,EACTP,IAAI,EACJJ,kBAAkB,EAAA;AACtBV,IAAAA,SAAS,EAAEiB,OAAQ;AACnB,IAAA,SAAA,EAASX,EAAG;AACZ,IAAA,aAAA,EAAaH,eAAe,GAAG,MAAM,GAAGsB,SAAU;AAClDxB,IAAAA,IAAI,EAAEA,IAAK;AACXI,IAAAA,OAAO,EAAEA,OAAQ;AACjBN,IAAAA,GAAG,EAAEA,GAAI;AACTS,IAAAA,IAAI,EAAEA;AAAK,GAAA,CACX,CAAC;AAEJ,CACD;;;;"}
|
|
@@ -35,7 +35,7 @@ function _interopNamespace(e) {
|
|
|
35
35
|
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
36
36
|
var classnames__default = /*#__PURE__*/_interopDefault(classnames);
|
|
37
37
|
|
|
38
|
-
var _excluded = ["children", "clickToClose", "disableTooltipHover", "display", "text", "attrs", "dataQa", "
|
|
38
|
+
var _excluded = ["children", "clickToClose", "disableTooltipHover", "display", "text", "attrs", "dataQa", "position", "anchor", "srAnnouncement", "tooltipClass", "tooltipContentClass"],
|
|
39
39
|
_excluded2 = ["className", "onBlur", "onFocus", "onKeyDown", "onMouseOver", "onMouseOut", "onMouseUp", "children"];
|
|
40
40
|
/**
|
|
41
41
|
* MrlTooltip Component
|
|
@@ -57,8 +57,6 @@ var MrlTooltip = /*#__PURE__*/React__namespace.memo(props => {
|
|
|
57
57
|
_props$attrs = props.attrs,
|
|
58
58
|
attrs = _props$attrs === void 0 ? {} : _props$attrs,
|
|
59
59
|
dataQa = props.dataQa,
|
|
60
|
-
_props$kind = props.kind,
|
|
61
|
-
kind = _props$kind === void 0 ? 'default' : _props$kind,
|
|
62
60
|
_props$position = props.position,
|
|
63
61
|
position = _props$position === void 0 ? constants.MrlTooltipDefaults.position || 'top' : _props$position,
|
|
64
62
|
_props$anchor = props.anchor,
|
|
@@ -232,7 +230,6 @@ var MrlTooltip = /*#__PURE__*/React__namespace.memo(props => {
|
|
|
232
230
|
attrs: attrs,
|
|
233
231
|
anchor: anchor,
|
|
234
232
|
dataQa: dataQa,
|
|
235
|
-
kind: kind,
|
|
236
233
|
id: id,
|
|
237
234
|
position: position,
|
|
238
235
|
text: text,
|