@cloudscape-design/components-themeable 3.0.1361 → 3.0.1363

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.
Files changed (77) hide show
  1. package/lib/internal/manifest.json +1 -1
  2. package/lib/internal/scss/internal/generated/custom-css-properties/index.scss +1 -1
  3. package/lib/internal/template/action-card/internal.d.ts.map +1 -1
  4. package/lib/internal/template/action-card/internal.js +5 -2
  5. package/lib/internal/template/action-card/internal.js.map +1 -1
  6. package/lib/internal/template/app-layout/toggles/index.d.ts.map +1 -1
  7. package/lib/internal/template/app-layout/toggles/index.js +1 -1
  8. package/lib/internal/template/app-layout/toggles/index.js.map +1 -1
  9. package/lib/internal/template/app-layout/visual-refresh/trigger-button.d.ts.map +1 -1
  10. package/lib/internal/template/app-layout/visual-refresh/trigger-button.js +1 -1
  11. package/lib/internal/template/app-layout/visual-refresh/trigger-button.js.map +1 -1
  12. package/lib/internal/template/app-layout/visual-refresh-toolbar/toolbar/trigger-button/index.d.ts.map +1 -1
  13. package/lib/internal/template/app-layout/visual-refresh-toolbar/toolbar/trigger-button/index.js +1 -1
  14. package/lib/internal/template/app-layout/visual-refresh-toolbar/toolbar/trigger-button/index.js.map +1 -1
  15. package/lib/internal/template/breadcrumb-group/all-items-dropdown.js +2 -2
  16. package/lib/internal/template/breadcrumb-group/all-items-dropdown.js.map +1 -1
  17. package/lib/internal/template/button/internal.d.ts.map +1 -1
  18. package/lib/internal/template/button/internal.js +2 -0
  19. package/lib/internal/template/button/internal.js.map +1 -1
  20. package/lib/internal/template/button-dropdown/category-elements/expandable-category-element.d.ts.map +1 -1
  21. package/lib/internal/template/button-dropdown/category-elements/expandable-category-element.js +2 -2
  22. package/lib/internal/template/button-dropdown/category-elements/expandable-category-element.js.map +1 -1
  23. package/lib/internal/template/button-dropdown/item-element/index.d.ts.map +1 -1
  24. package/lib/internal/template/button-dropdown/item-element/index.js +2 -2
  25. package/lib/internal/template/button-dropdown/item-element/index.js.map +1 -1
  26. package/lib/internal/template/code-editor/tab-button.d.ts.map +1 -1
  27. package/lib/internal/template/code-editor/tab-button.js +1 -1
  28. package/lib/internal/template/code-editor/tab-button.js.map +1 -1
  29. package/lib/internal/template/expandable-section/expandable-section-header.d.ts.map +1 -1
  30. package/lib/internal/template/expandable-section/expandable-section-header.js +13 -7
  31. package/lib/internal/template/expandable-section/expandable-section-header.js.map +1 -1
  32. package/lib/internal/template/flashbar/collapsible-flashbar.d.ts.map +1 -1
  33. package/lib/internal/template/flashbar/collapsible-flashbar.js +3 -3
  34. package/lib/internal/template/flashbar/collapsible-flashbar.js.map +1 -1
  35. package/lib/internal/template/internal/base-component/styles.scoped.css +1 -1
  36. package/lib/internal/template/internal/components/button-trigger/index.d.ts.map +1 -1
  37. package/lib/internal/template/internal/components/button-trigger/index.js +2 -2
  38. package/lib/internal/template/internal/components/button-trigger/index.js.map +1 -1
  39. package/lib/internal/template/internal/components/drag-handle/button.d.ts.map +1 -1
  40. package/lib/internal/template/internal/components/drag-handle/button.js +3 -1
  41. package/lib/internal/template/internal/components/drag-handle/button.js.map +1 -1
  42. package/lib/internal/template/internal/components/expand-toggle-button/index.d.ts.map +1 -1
  43. package/lib/internal/template/internal/components/expand-toggle-button/index.js +1 -1
  44. package/lib/internal/template/internal/components/expand-toggle-button/index.js.map +1 -1
  45. package/lib/internal/template/internal/components/menu-dropdown/index.d.ts.map +1 -1
  46. package/lib/internal/template/internal/components/menu-dropdown/index.js +1 -1
  47. package/lib/internal/template/internal/components/menu-dropdown/index.js.map +1 -1
  48. package/lib/internal/template/internal/components/token-list/token-limit-toggle.d.ts.map +1 -1
  49. package/lib/internal/template/internal/components/token-list/token-limit-toggle.js +2 -2
  50. package/lib/internal/template/internal/components/token-list/token-limit-toggle.js.map +1 -1
  51. package/lib/internal/template/internal/environment.js +2 -2
  52. package/lib/internal/template/internal/environment.json +2 -2
  53. package/lib/internal/template/link/internal.d.ts.map +1 -1
  54. package/lib/internal/template/link/internal.js +2 -0
  55. package/lib/internal/template/link/internal.js.map +1 -1
  56. package/lib/internal/template/pagination/internal.d.ts.map +1 -1
  57. package/lib/internal/template/pagination/internal.js +3 -3
  58. package/lib/internal/template/pagination/internal.js.map +1 -1
  59. package/lib/internal/template/property-filter/filtering-token/index.js +4 -4
  60. package/lib/internal/template/property-filter/filtering-token/index.js.map +1 -1
  61. package/lib/internal/template/segmented-control/segment.d.ts.map +1 -1
  62. package/lib/internal/template/segmented-control/segment.js +1 -1
  63. package/lib/internal/template/segmented-control/segment.js.map +1 -1
  64. package/lib/internal/template/side-navigation/parts.js +3 -3
  65. package/lib/internal/template/side-navigation/parts.js.map +1 -1
  66. package/lib/internal/template/table/header-cell/index.d.ts.map +1 -1
  67. package/lib/internal/template/table/header-cell/index.js +2 -1
  68. package/lib/internal/template/table/header-cell/index.js.map +1 -1
  69. package/lib/internal/template/tabs/tab-header-bar.d.ts.map +1 -1
  70. package/lib/internal/template/tabs/tab-header-bar.js +1 -1
  71. package/lib/internal/template/tabs/tab-header-bar.js.map +1 -1
  72. package/lib/internal/template/token/dismiss-button.js +2 -2
  73. package/lib/internal/template/token/dismiss-button.js.map +1 -1
  74. package/lib/internal/template/top-navigation/parts/overflow-menu/menu-item.d.ts.map +1 -1
  75. package/lib/internal/template/top-navigation/parts/overflow-menu/menu-item.js +5 -5
  76. package/lib/internal/template/top-navigation/parts/overflow-menu/menu-item.js.map +1 -1
  77. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"expandable-category-element.js","sourceRoot":"","sources":["../../../../src/button-dropdown/category-elements/expandable-category-element.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useEffect, useRef } from 'react';\nimport clsx from 'clsx';\n\nimport { isThemeActive, Theme } from '@cloudscape-design/component-toolkit/internal';\nimport { getAnalyticsMetadataAttribute } from '@cloudscape-design/component-toolkit/internal/analytics-metadata';\n\nimport Dropdown from '../../dropdown/internal';\nimport InternalIcon from '../../icon/internal';\nimport useHiddenDescription from '../../internal/hooks/use-hidden-description';\nimport { useVisualRefresh } from '../../internal/hooks/use-visual-mode';\nimport {\n GeneratedAnalyticsMetadataButtonDropdownCollapse,\n GeneratedAnalyticsMetadataButtonDropdownExpand,\n} from '../analytics-metadata/interfaces.js';\nimport { ButtonDropdownProps } from '../interfaces';\nimport { CategoryProps } from '../internal-interfaces';\nimport ItemsList from '../items-list';\nimport Tooltip from '../tooltip.js';\nimport { getMenuItemProps } from '../utils/menu-item';\n\nimport styles from './styles.css.js';\n\nconst ExpandableCategoryElement = ({\n index,\n item,\n onItemActivate,\n onGroupToggle,\n targetItem,\n isHighlighted,\n isKeyboardHighlight,\n isExpanded,\n lastInDropdown,\n highlightItem,\n disabled,\n expandToViewport,\n variant,\n position,\n renderItem,\n filteringText,\n filteringEnabled,\n menuId,\n filteringDescriptionId,\n}: CategoryProps) => {\n const highlighted = isHighlighted(item);\n const expanded = isExpanded(item);\n const isKeyboardHighlighted = isKeyboardHighlight(item);\n const triggerRef = React.useRef<HTMLSpanElement>(null);\n const ref = useRef<HTMLLIElement>(null);\n\n useEffect(() => {\n if (triggerRef.current && highlighted && !expanded && !filteringEnabled) {\n triggerRef.current.focus();\n }\n }, [expanded, highlighted, filteringEnabled]);\n\n const onClick: React.MouseEventHandler = event => {\n if (!disabled) {\n event.preventDefault();\n onGroupToggle(item, event);\n if (!filteringEnabled) {\n triggerRef.current?.focus();\n }\n }\n };\n\n const onMouseDown: React.MouseEventHandler = event => {\n // Ensure that focus remains on the filtering input at all times.\n if (filteringEnabled) {\n event.preventDefault();\n }\n };\n\n const onHover = () => {\n highlightItem(item);\n };\n\n const isVisualRefresh = useVisualRefresh();\n const isOneTheme = isThemeActive(Theme.OneTheme);\n\n const isDisabledWithReason = !!item.disabledReason && item.disabled;\n const { targetProps, descriptionEl } = useHiddenDescription(item.disabledReason);\n\n const groupProps: ButtonDropdownProps.GroupRenderItem = {\n index: index ?? 0,\n type: 'group',\n option: item as ButtonDropdownProps.ItemGroup,\n disabled: !!disabled,\n highlighted: !!highlighted,\n expanded: expanded,\n expandDirection: 'horizontal',\n };\n const renderResult = renderItem?.({ item: groupProps, filterText: filteringText }) ?? null;\n\n const trigger = item.text && (\n <span\n id={menuId && item.id ? `${menuId}-${item.id}` : undefined}\n className={clsx(styles.header, styles['expandable-header'], styles[`variant-${variant}`], {\n [styles.disabled]: disabled,\n [styles.highlighted]: highlighted,\n [styles['no-content-styling']]: !!renderResult,\n [styles['is-focused']]: isKeyboardHighlighted,\n [styles['visual-refresh']]: isVisualRefresh,\n })}\n // When filtering is enabled, we use aria-activedescendant on the filter input and provide\n // the `id` of the item to select it. When filtering is disabled, we are using the roving\n // tabindex technique to manage the focus state of the dropdown. The current element will\n // have tabindex=0 which means that it can be tabbed to, while all other items have\n // tabindex=-1 so we can focus them when necessary.\n tabIndex={filteringEnabled ? -1 : highlighted ? 0 : -1}\n ref={triggerRef}\n {...getMenuItemProps({ parent: true, expanded, disabled })}\n {...(isDisabledWithReason ? targetProps : {})}\n {...getAnalyticsMetadataAttribute(\n disabled\n ? {}\n : ({\n action: !expanded ? 'expand' : 'collapse',\n detail: {\n position: position || '0',\n label: { root: 'self' },\n id: item.id || '',\n },\n } as GeneratedAnalyticsMetadataButtonDropdownExpand | GeneratedAnalyticsMetadataButtonDropdownCollapse)\n )}\n >\n {renderResult ? (\n renderResult\n ) : (\n <>\n {(item.iconName || item.iconUrl || item.iconSvg) && (\n <span className={styles['icon-wrapper']}>\n <InternalIcon name={item.iconName} url={item.iconUrl} svg={item.iconSvg} alt={item.iconAlt} />\n </span>\n )}\n <span>{item.text}</span>\n <span className={clsx(styles['expand-icon'], styles['expand-icon-right'])}>\n <InternalIcon\n name={isOneTheme ? 'angle-down' : 'caret-down-filled'}\n size={isOneTheme ? 'x-small' : 'normal'}\n />\n </span>\n </>\n )}\n </span>\n );\n\n let content: React.ReactNode;\n // If the category element is disabled, we do not render a dropdown.\n // Screenreaders are confused by additional sections\n if (isDisabledWithReason) {\n content = (\n <Tooltip content={item.disabledReason}>\n {trigger}\n {descriptionEl}\n </Tooltip>\n );\n } else if (disabled) {\n content = trigger;\n } else {\n content = (\n <Dropdown\n open={expanded}\n interior={true}\n hideBlockBorder={false}\n expandToViewport={expandToViewport}\n trigger={trigger}\n content={\n item.items && expanded ? (\n <ul\n role=\"menu\"\n aria-label={item.text}\n className={clsx(styles['items-list-container'], styles['in-dropdown'])}\n >\n <ItemsList\n items={item.items}\n onItemActivate={onItemActivate}\n onGroupToggle={onGroupToggle}\n targetItem={targetItem}\n isHighlighted={isHighlighted}\n isKeyboardHighlight={isKeyboardHighlight}\n isExpanded={isExpanded}\n lastInDropdown={lastInDropdown}\n highlightItem={highlightItem}\n variant={variant}\n position={position}\n renderItem={renderItem}\n parentProps={groupProps}\n filteringText={filteringText}\n filteringEnabled={filteringEnabled}\n menuId={menuId}\n filteringDescriptionId={filteringDescriptionId}\n />\n </ul>\n ) : undefined\n }\n />\n );\n }\n\n return (\n <li\n className={clsx(styles.category, styles[`variant-${variant}`], styles.expandable, {\n [styles.expanded]: expanded,\n [styles.disabled]: disabled,\n [styles.highlighted]: highlighted,\n })}\n role=\"presentation\"\n data-testid={item.id}\n ref={ref}\n onClick={onClick}\n onMouseDown={onMouseDown}\n onMouseEnter={onHover}\n onTouchStart={onHover}\n >\n {content}\n </li>\n );\n};\n\nexport default ExpandableCategoryElement;\n"]}
1
+ {"version":3,"file":"expandable-category-element.js","sourceRoot":"","sources":["../../../../src/button-dropdown/category-elements/expandable-category-element.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useEffect, useRef } from 'react';\nimport clsx from 'clsx';\n\nimport { isThemeActive, Theme } from '@cloudscape-design/component-toolkit/internal';\nimport { getAnalyticsMetadataAttribute } from '@cloudscape-design/component-toolkit/internal/analytics-metadata';\n\nimport Dropdown from '../../dropdown/internal';\nimport InternalIcon from '../../icon/internal';\nimport useHiddenDescription from '../../internal/hooks/use-hidden-description';\nimport { useVisualRefresh } from '../../internal/hooks/use-visual-mode';\nimport {\n GeneratedAnalyticsMetadataButtonDropdownCollapse,\n GeneratedAnalyticsMetadataButtonDropdownExpand,\n} from '../analytics-metadata/interfaces.js';\nimport { ButtonDropdownProps } from '../interfaces';\nimport { CategoryProps } from '../internal-interfaces';\nimport ItemsList from '../items-list';\nimport Tooltip from '../tooltip.js';\nimport { getMenuItemProps } from '../utils/menu-item';\n\nimport styles from './styles.css.js';\n\nconst ExpandableCategoryElement = ({\n index,\n item,\n onItemActivate,\n onGroupToggle,\n targetItem,\n isHighlighted,\n isKeyboardHighlight,\n isExpanded,\n lastInDropdown,\n highlightItem,\n disabled,\n expandToViewport,\n variant,\n position,\n renderItem,\n filteringText,\n filteringEnabled,\n menuId,\n filteringDescriptionId,\n}: CategoryProps) => {\n const highlighted = isHighlighted(item);\n const expanded = isExpanded(item);\n const isKeyboardHighlighted = isKeyboardHighlight(item);\n const triggerRef = React.useRef<HTMLSpanElement>(null);\n const ref = useRef<HTMLLIElement>(null);\n\n useEffect(() => {\n if (triggerRef.current && highlighted && !expanded && !filteringEnabled) {\n triggerRef.current.focus();\n }\n }, [expanded, highlighted, filteringEnabled]);\n\n const onClick: React.MouseEventHandler = event => {\n if (!disabled) {\n event.preventDefault();\n onGroupToggle(item, event);\n if (!filteringEnabled) {\n triggerRef.current?.focus();\n }\n }\n };\n\n const onMouseDown: React.MouseEventHandler = event => {\n // Ensure that focus remains on the filtering input at all times.\n if (filteringEnabled) {\n event.preventDefault();\n }\n };\n\n const onHover = () => {\n highlightItem(item);\n };\n\n const isVisualRefresh = useVisualRefresh();\n const isOneTheme = isThemeActive(Theme.OneTheme);\n\n const isDisabledWithReason = !!item.disabledReason && item.disabled;\n const { targetProps, descriptionEl } = useHiddenDescription(item.disabledReason);\n\n const groupProps: ButtonDropdownProps.GroupRenderItem = {\n index: index ?? 0,\n type: 'group',\n option: item as ButtonDropdownProps.ItemGroup,\n disabled: !!disabled,\n highlighted: !!highlighted,\n expanded: expanded,\n expandDirection: 'horizontal',\n };\n const renderResult = renderItem?.({ item: groupProps, filterText: filteringText }) ?? null;\n\n const trigger = item.text && (\n <span\n id={menuId && item.id ? `${menuId}-${item.id}` : undefined}\n className={clsx(styles.header, styles['expandable-header'], styles[`variant-${variant}`], {\n [styles.disabled]: disabled,\n [styles.highlighted]: highlighted,\n [styles['no-content-styling']]: !!renderResult,\n [styles['is-focused']]: isKeyboardHighlighted,\n [styles['visual-refresh']]: isVisualRefresh,\n })}\n // When filtering is enabled, we use aria-activedescendant on the filter input and provide\n // the `id` of the item to select it. When filtering is disabled, we are using the roving\n // tabindex technique to manage the focus state of the dropdown. The current element will\n // have tabindex=0 which means that it can be tabbed to, while all other items have\n // tabindex=-1 so we can focus them when necessary.\n tabIndex={filteringEnabled ? -1 : highlighted ? 0 : -1}\n ref={triggerRef}\n data-awsui-motion-trigger=\"hover\"\n {...getMenuItemProps({ parent: true, expanded, disabled })}\n {...(isDisabledWithReason ? targetProps : {})}\n {...getAnalyticsMetadataAttribute(\n disabled\n ? {}\n : ({\n action: !expanded ? 'expand' : 'collapse',\n detail: {\n position: position || '0',\n label: { root: 'self' },\n id: item.id || '',\n },\n } as GeneratedAnalyticsMetadataButtonDropdownExpand | GeneratedAnalyticsMetadataButtonDropdownCollapse)\n )}\n >\n {renderResult ? (\n renderResult\n ) : (\n <>\n {(item.iconName || item.iconUrl || item.iconSvg) && (\n <span className={styles['icon-wrapper']}>\n <InternalIcon name={item.iconName} url={item.iconUrl} svg={item.iconSvg} alt={item.iconAlt} />\n </span>\n )}\n <span>{item.text}</span>\n <span className={clsx(styles['expand-icon'], styles['expand-icon-right'])}>\n <InternalIcon\n name={isOneTheme ? 'angle-down' : 'caret-down-filled'}\n size={isOneTheme ? 'x-small' : 'normal'}\n nativeAttributes={{ 'data-awsui-motion-target': '' }}\n />\n </span>\n </>\n )}\n </span>\n );\n\n let content: React.ReactNode;\n // If the category element is disabled, we do not render a dropdown.\n // Screenreaders are confused by additional sections\n if (isDisabledWithReason) {\n content = (\n <Tooltip content={item.disabledReason}>\n {trigger}\n {descriptionEl}\n </Tooltip>\n );\n } else if (disabled) {\n content = trigger;\n } else {\n content = (\n <Dropdown\n open={expanded}\n interior={true}\n hideBlockBorder={false}\n expandToViewport={expandToViewport}\n trigger={trigger}\n content={\n item.items && expanded ? (\n <ul\n role=\"menu\"\n aria-label={item.text}\n className={clsx(styles['items-list-container'], styles['in-dropdown'])}\n >\n <ItemsList\n items={item.items}\n onItemActivate={onItemActivate}\n onGroupToggle={onGroupToggle}\n targetItem={targetItem}\n isHighlighted={isHighlighted}\n isKeyboardHighlight={isKeyboardHighlight}\n isExpanded={isExpanded}\n lastInDropdown={lastInDropdown}\n highlightItem={highlightItem}\n variant={variant}\n position={position}\n renderItem={renderItem}\n parentProps={groupProps}\n filteringText={filteringText}\n filteringEnabled={filteringEnabled}\n menuId={menuId}\n filteringDescriptionId={filteringDescriptionId}\n />\n </ul>\n ) : undefined\n }\n />\n );\n }\n\n return (\n <li\n className={clsx(styles.category, styles[`variant-${variant}`], styles.expandable, {\n [styles.expanded]: expanded,\n [styles.disabled]: disabled,\n [styles.highlighted]: highlighted,\n })}\n role=\"presentation\"\n data-testid={item.id}\n ref={ref}\n onClick={onClick}\n onMouseDown={onMouseDown}\n onMouseEnter={onHover}\n onTouchStart={onHover}\n >\n {content}\n </li>\n );\n};\n\nexport default ExpandableCategoryElement;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/button-dropdown/item-element/index.tsx"],"names":[],"mappings":"AAoBA,OAAO,EAAsC,SAAS,EAAE,MAAM,wBAAwB,CAAC;AASvF,QAAA,MAAM,WAAW,GAAI,qRAoBlB,SAAS,gBAoEX,CAAC;AAqOF,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/button-dropdown/item-element/index.tsx"],"names":[],"mappings":"AAoBA,OAAO,EAAsC,SAAS,EAAE,MAAM,wBAAwB,CAAC;AASvF,QAAA,MAAM,WAAW,GAAI,qRAoBlB,SAAS,gBAoEX,CAAC;AA4OF,eAAe,WAAW,CAAC"}
@@ -122,7 +122,7 @@ function MenuItem({ index, item, disabled, highlighted, linkStyle, renderItem, p
122
122
  tabIndex: filteringEnabled ? -1 : highlighted ? 0 : -1,
123
123
  ...(isCheckbox ? getMenuItemCheckboxProps({ disabled, checked: item.checked }) : getMenuItemProps({ disabled })),
124
124
  };
125
- const menuItem = isLinkItem(item) ? (React.createElement("a", { ...menuItemProps, href: !disabled ? item.href : undefined, download: !disabled && item.download ? item.download : undefined, target: getItemTarget(item), rel: item.external ? 'noopener noreferrer' : undefined }, renderResult ? (renderResult) : (React.createElement(MenuItemContent, { item: item, disabled: disabled, highlighted: highlighted, filteringText: filteringText })))) : (React.createElement("span", { ...menuItemProps }, renderResult ? (renderResult) : (React.createElement(MenuItemContent, { item: item, disabled: disabled, highlighted: highlighted, filteringText: filteringText }))));
125
+ const menuItem = isLinkItem(item) ? (React.createElement("a", { ...menuItemProps, href: !disabled ? item.href : undefined, download: !disabled && item.download ? item.download : undefined, target: getItemTarget(item), rel: item.external ? 'noopener noreferrer' : undefined, "data-awsui-motion-trigger": "hover" }, renderResult ? (renderResult) : (React.createElement(MenuItemContent, { item: item, disabled: disabled, highlighted: highlighted, filteringText: filteringText })))) : (React.createElement("span", { ...menuItemProps }, renderResult ? (renderResult) : (React.createElement(MenuItemContent, { item: item, disabled: disabled, highlighted: highlighted, filteringText: filteringText }))));
126
126
  const { position } = useDropdownContext();
127
127
  const tooltipPosition = position === 'bottom-left' || position === 'top-left' ? 'left' : 'right';
128
128
  return isDisabledWithReason ? (React.createElement(Tooltip, { content: item.disabledReason, position: tooltipPosition, className: styles['item-tooltip-wrapper'], controlledOpen: filteringEnabled ? highlighted : undefined },
@@ -156,7 +156,7 @@ const MenuItemCheckmark = ({ disabled, checked }) => {
156
156
  return (React.createElement("span", { className: clsx(styles.icon, styles.checkmark, { [styles.disabled]: disabled }), "aria-hidden": "true", style: { visibility: checked ? 'visible' : 'hidden' } }, checkmark));
157
157
  };
158
158
  const ExternalIcon = ({ disabled, ariaLabel }) => {
159
- const icon = React.createElement(InternalIcon, { variant: disabled ? 'disabled' : 'normal', name: "external" });
159
+ const icon = (React.createElement(InternalIcon, { variant: disabled ? 'disabled' : 'normal', name: "external", nativeAttributes: { 'data-awsui-motion-target': '' } }));
160
160
  return (React.createElement("span", { className: styles['external-icon'], role: ariaLabel ? 'img' : undefined, "aria-label": ariaLabel }, icon));
161
161
  };
162
162
  export default ItemElement;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/button-dropdown/item-element/index.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useEffect, useRef } from 'react';\nimport clsx from 'clsx';\n\nimport {\n GeneratedAnalyticsMetadataFragment,\n getAnalyticsMetadataAttribute,\n} from '@cloudscape-design/component-toolkit/internal/analytics-metadata';\n\nimport { useDropdownContext } from '../../dropdown/context';\nimport InternalIcon, { InternalIconProps } from '../../icon/internal';\nimport HighlightMatch from '../../internal/components/option/highlight-match';\nimport useHiddenDescription from '../../internal/hooks/use-hidden-description';\nimport { useVisualRefresh } from '../../internal/hooks/use-visual-mode';\nimport { getDataAttributes } from '../../internal/utils/data-attributes';\nimport { scrollElementIntoView } from '../../internal/utils/scrollable-containers';\nimport { joinStrings } from '../../internal/utils/strings';\nimport { GeneratedAnalyticsMetadataButtonDropdownClick } from '../analytics-metadata/interfaces';\nimport { ButtonDropdownProps, LinkItem } from '../interfaces';\nimport { InternalCheckboxItem, InternalItem, ItemProps } from '../internal-interfaces';\nimport Tooltip from '../tooltip';\nimport { getMenuItemCheckboxProps, getMenuItemProps } from '../utils/menu-item';\nimport { isCheckboxItem, isLinkItem } from '../utils/utils';\nimport { getItemTarget } from '../utils/utils';\n\nimport analyticsLabels from '../analytics-metadata/styles.css.js';\nimport styles from './styles.css.js';\n\nconst ItemElement = ({\n position = '1',\n index,\n item,\n disabled,\n onItemActivate,\n highlighted,\n highlightItem,\n showDivider,\n hasCategoryHeader,\n isKeyboardHighlighted = false,\n analyticsMetadataTransformer = (metadata: GeneratedAnalyticsMetadataFragment) => metadata,\n variant = 'normal',\n linkStyle,\n renderItem,\n parentProps,\n filteringText,\n filteringEnabled,\n menuId,\n filteringDescriptionId,\n}: ItemProps) => {\n const isLink = isLinkItem(item);\n const isCheckbox = isCheckboxItem(item);\n const onClick = (event: React.MouseEvent) => {\n // Stop propagation to parent node and handle event exclusively in here. This ensures\n // that no group will interfere with the default behavior of links\n event.stopPropagation();\n if (!isLink) {\n event.preventDefault();\n }\n if (!disabled) {\n onItemActivate(item, event);\n }\n };\n\n const onHover = () => {\n highlightItem(item);\n };\n\n const isVisualRefresh = useVisualRefresh();\n\n return (\n <li\n className={clsx(styles['item-element'], styles[`variant-${variant}`], {\n [styles.highlighted]: highlighted,\n [styles.disabled]: disabled,\n [styles['has-category-header']]: hasCategoryHeader,\n [styles['has-checkmark']]: isCheckbox,\n [styles['show-divider']]: showDivider,\n [styles['is-focused']]: isKeyboardHighlighted,\n [styles['visual-refresh']]: isVisualRefresh,\n })}\n role=\"presentation\"\n data-testid={item.id}\n data-description={item.description}\n {...getDataAttributes(item.dataAttributes, ['testid'])}\n onClick={onClick}\n onMouseEnter={onHover}\n onTouchStart={onHover}\n {...getAnalyticsMetadataAttribute(\n disabled\n ? {}\n : (analyticsMetadataTransformer!({\n action: 'click',\n detail: {\n position,\n id: item.id,\n label: `.${analyticsLabels['menu-item']}`,\n href: (item as LinkItem).href || '',\n },\n }) as GeneratedAnalyticsMetadataButtonDropdownClick)\n )}\n >\n <MenuItem\n index={index}\n item={item}\n disabled={disabled}\n highlighted={highlighted}\n linkStyle={linkStyle}\n renderItem={renderItem}\n parentProps={parentProps}\n filteringText={filteringText}\n filteringEnabled={filteringEnabled}\n menuId={menuId}\n filteringDescriptionId={filteringDescriptionId}\n />\n </li>\n );\n};\n\ninterface MenuItemProps {\n index?: number;\n item: InternalItem | InternalCheckboxItem;\n disabled: boolean;\n highlighted: boolean;\n linkStyle?: boolean;\n renderItem?: ButtonDropdownProps.ItemRenderer;\n parentProps?: ButtonDropdownProps.GroupRenderItem;\n filteringText?: string;\n filteringEnabled?: boolean;\n menuId?: string;\n filteringDescriptionId?: string;\n}\n\nfunction MenuItem({\n index,\n item,\n disabled,\n highlighted,\n linkStyle,\n renderItem,\n parentProps,\n filteringText,\n filteringEnabled,\n menuId,\n filteringDescriptionId,\n}: MenuItemProps) {\n const menuItemRef = useRef<(HTMLSpanElement & HTMLAnchorElement) | null>(null);\n const isCheckbox = isCheckboxItem(item);\n const isCurrentBreadcrumb = !isCheckbox && item.isCurrentBreadcrumb;\n\n useEffect(() => {\n if (highlighted && menuItemRef.current) {\n if (filteringEnabled) {\n // In filtering mode focus stays on the filter input, so we scroll the\n // highlighted item into view manually instead of relying on focus().\n scrollElementIntoView(menuItemRef.current);\n } else {\n menuItemRef.current.focus();\n }\n }\n }, [highlighted, filteringEnabled]);\n\n let itemProps: { item: ButtonDropdownProps.RenderItem; filterText?: string };\n\n if (isCheckbox) {\n itemProps = {\n item: {\n index: index ?? 0,\n type: 'checkbox',\n option: item as ButtonDropdownProps.CheckboxItem,\n disabled: disabled,\n highlighted: highlighted,\n checked: item.checked,\n parent: parentProps ?? null,\n },\n filterText: filteringText,\n };\n } else {\n itemProps = {\n item: {\n index: index ?? 0,\n type: 'action',\n option: item as ButtonDropdownProps.Item,\n disabled: disabled,\n highlighted: highlighted,\n parent: parentProps ?? null,\n },\n filterText: filteringText,\n };\n }\n\n const renderResult = renderItem?.(itemProps) ?? null;\n\n const isDisabledWithReason = disabled && item.disabledReason;\n const { targetProps, descriptionEl } = useHiddenDescription(item.disabledReason);\n const itemDomId = menuId && item.id ? `${menuId}-${item.id}` : undefined;\n const ariaDescribedby = joinStrings(\n isDisabledWithReason ? targetProps['aria-describedby'] : undefined,\n filteringDescriptionId\n );\n const menuItemProps: React.HTMLAttributes<HTMLSpanElement & HTMLAnchorElement> = {\n id: itemDomId,\n 'aria-label': item.ariaLabel,\n 'aria-describedby': ariaDescribedby,\n className: clsx(\n styles['menu-item'],\n !!renderResult && styles['no-content-styling'],\n analyticsLabels['menu-item'],\n linkStyle && styles['link-style'],\n linkStyle && highlighted && styles['link-style-highlighted'],\n isCurrentBreadcrumb && styles['current-breadcrumb']\n ),\n 'aria-current': isCurrentBreadcrumb,\n lang: item.lang,\n ref: menuItemRef,\n // When filtering is enabled, we use aria-activedescendant on the filter input and provide\n // the `id` of the item to select it. When filtering is disabled, we are using the roving\n // tabindex technique to manage the focus state of the dropdown. The current element will\n // have tabindex=0 which means that it can be tabbed to, while all other items have\n // tabindex=-1 so we can focus them when necessary.\n tabIndex: filteringEnabled ? -1 : highlighted ? 0 : -1,\n ...(isCheckbox ? getMenuItemCheckboxProps({ disabled, checked: item.checked }) : getMenuItemProps({ disabled })),\n };\n\n const menuItem = isLinkItem(item) ? (\n <a\n {...menuItemProps}\n href={!disabled ? item.href : undefined}\n download={!disabled && item.download ? item.download : undefined}\n target={getItemTarget(item)}\n rel={item.external ? 'noopener noreferrer' : undefined}\n >\n {renderResult ? (\n renderResult\n ) : (\n <MenuItemContent item={item} disabled={disabled} highlighted={highlighted} filteringText={filteringText} />\n )}\n </a>\n ) : (\n <span {...menuItemProps}>\n {renderResult ? (\n renderResult\n ) : (\n <MenuItemContent item={item} disabled={disabled} highlighted={highlighted} filteringText={filteringText} />\n )}\n </span>\n );\n\n const { position } = useDropdownContext();\n const tooltipPosition = position === 'bottom-left' || position === 'top-left' ? 'left' : 'right';\n return isDisabledWithReason ? (\n <Tooltip\n content={item.disabledReason}\n position={tooltipPosition}\n className={styles['item-tooltip-wrapper']}\n controlledOpen={filteringEnabled ? highlighted : undefined}\n >\n {menuItem}\n {descriptionEl}\n </Tooltip>\n ) : (\n menuItem\n );\n}\n\nconst MenuItemContent = ({\n item,\n disabled,\n highlighted,\n filteringText,\n}: {\n item: InternalItem | InternalCheckboxItem;\n disabled: boolean;\n highlighted: boolean;\n filteringText?: string;\n}) => {\n const hasIcon = !!(item.iconName || item.iconUrl || item.iconSvg);\n const hasExternal = isLinkItem(item) && item.external;\n const isCheckbox = isCheckboxItem(item);\n return (\n <>\n {isCheckbox && <MenuItemCheckmark checked={item.checked} disabled={disabled} />}\n {hasIcon && (\n <MenuItemIcon\n name={item.iconName}\n url={item.iconUrl}\n svg={item.iconSvg}\n alt={item.iconAlt}\n badge={item.badge}\n />\n )}\n <div className={styles['content-wrapper']}>\n <div className={styles['main-row']}>\n <div>\n <HighlightMatch str={item.text} highlightText={filteringText} />\n {hasExternal && <ExternalIcon disabled={disabled} ariaLabel={item.externalIconAriaLabel} />}\n </div>\n {item.labelTag && (\n <div className={clsx(styles['label-tag'], disabled && styles.disabled)}>\n <HighlightMatch str={item.labelTag} highlightText={filteringText} />\n </div>\n )}\n </div>\n {item.secondaryText && (\n <div\n className={clsx(styles['secondary-text'], highlighted && styles.highlighted, disabled && styles.disabled)}\n >\n <HighlightMatch str={item.secondaryText} highlightText={filteringText} />\n </div>\n )}\n </div>\n </>\n );\n};\n\nconst MenuItemIcon = (props: InternalIconProps) => (\n <span className={styles.icon}>\n <InternalIcon {...props} />\n </span>\n);\n\n// Toggle has aria-hidden set because it's just used as a graphical element,\n// a11y attributes for the checkmark are communicated through the role and aria-checked state\n// of the menu element item.\nconst MenuItemCheckmark = ({ disabled, checked }: { disabled: boolean; checked: boolean }) => {\n const checkmark = <InternalIcon variant={disabled ? 'disabled' : 'normal'} name=\"check\" />;\n return (\n <span\n className={clsx(styles.icon, styles.checkmark, { [styles.disabled]: disabled })}\n aria-hidden=\"true\"\n style={{ visibility: checked ? 'visible' : 'hidden' }}\n >\n {checkmark}\n </span>\n );\n};\n\nconst ExternalIcon = ({ disabled, ariaLabel }: { disabled: boolean; ariaLabel?: string }) => {\n const icon = <InternalIcon variant={disabled ? 'disabled' : 'normal'} name=\"external\" />;\n return (\n <span className={styles['external-icon']} role={ariaLabel ? 'img' : undefined} aria-label={ariaLabel}>\n {icon}\n </span>\n );\n};\n\nexport default ItemElement;\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/button-dropdown/item-element/index.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useEffect, useRef } from 'react';\nimport clsx from 'clsx';\n\nimport {\n GeneratedAnalyticsMetadataFragment,\n getAnalyticsMetadataAttribute,\n} from '@cloudscape-design/component-toolkit/internal/analytics-metadata';\n\nimport { useDropdownContext } from '../../dropdown/context';\nimport InternalIcon, { InternalIconProps } from '../../icon/internal';\nimport HighlightMatch from '../../internal/components/option/highlight-match';\nimport useHiddenDescription from '../../internal/hooks/use-hidden-description';\nimport { useVisualRefresh } from '../../internal/hooks/use-visual-mode';\nimport { getDataAttributes } from '../../internal/utils/data-attributes';\nimport { scrollElementIntoView } from '../../internal/utils/scrollable-containers';\nimport { joinStrings } from '../../internal/utils/strings';\nimport { GeneratedAnalyticsMetadataButtonDropdownClick } from '../analytics-metadata/interfaces';\nimport { ButtonDropdownProps, LinkItem } from '../interfaces';\nimport { InternalCheckboxItem, InternalItem, ItemProps } from '../internal-interfaces';\nimport Tooltip from '../tooltip';\nimport { getMenuItemCheckboxProps, getMenuItemProps } from '../utils/menu-item';\nimport { isCheckboxItem, isLinkItem } from '../utils/utils';\nimport { getItemTarget } from '../utils/utils';\n\nimport analyticsLabels from '../analytics-metadata/styles.css.js';\nimport styles from './styles.css.js';\n\nconst ItemElement = ({\n position = '1',\n index,\n item,\n disabled,\n onItemActivate,\n highlighted,\n highlightItem,\n showDivider,\n hasCategoryHeader,\n isKeyboardHighlighted = false,\n analyticsMetadataTransformer = (metadata: GeneratedAnalyticsMetadataFragment) => metadata,\n variant = 'normal',\n linkStyle,\n renderItem,\n parentProps,\n filteringText,\n filteringEnabled,\n menuId,\n filteringDescriptionId,\n}: ItemProps) => {\n const isLink = isLinkItem(item);\n const isCheckbox = isCheckboxItem(item);\n const onClick = (event: React.MouseEvent) => {\n // Stop propagation to parent node and handle event exclusively in here. This ensures\n // that no group will interfere with the default behavior of links\n event.stopPropagation();\n if (!isLink) {\n event.preventDefault();\n }\n if (!disabled) {\n onItemActivate(item, event);\n }\n };\n\n const onHover = () => {\n highlightItem(item);\n };\n\n const isVisualRefresh = useVisualRefresh();\n\n return (\n <li\n className={clsx(styles['item-element'], styles[`variant-${variant}`], {\n [styles.highlighted]: highlighted,\n [styles.disabled]: disabled,\n [styles['has-category-header']]: hasCategoryHeader,\n [styles['has-checkmark']]: isCheckbox,\n [styles['show-divider']]: showDivider,\n [styles['is-focused']]: isKeyboardHighlighted,\n [styles['visual-refresh']]: isVisualRefresh,\n })}\n role=\"presentation\"\n data-testid={item.id}\n data-description={item.description}\n {...getDataAttributes(item.dataAttributes, ['testid'])}\n onClick={onClick}\n onMouseEnter={onHover}\n onTouchStart={onHover}\n {...getAnalyticsMetadataAttribute(\n disabled\n ? {}\n : (analyticsMetadataTransformer!({\n action: 'click',\n detail: {\n position,\n id: item.id,\n label: `.${analyticsLabels['menu-item']}`,\n href: (item as LinkItem).href || '',\n },\n }) as GeneratedAnalyticsMetadataButtonDropdownClick)\n )}\n >\n <MenuItem\n index={index}\n item={item}\n disabled={disabled}\n highlighted={highlighted}\n linkStyle={linkStyle}\n renderItem={renderItem}\n parentProps={parentProps}\n filteringText={filteringText}\n filteringEnabled={filteringEnabled}\n menuId={menuId}\n filteringDescriptionId={filteringDescriptionId}\n />\n </li>\n );\n};\n\ninterface MenuItemProps {\n index?: number;\n item: InternalItem | InternalCheckboxItem;\n disabled: boolean;\n highlighted: boolean;\n linkStyle?: boolean;\n renderItem?: ButtonDropdownProps.ItemRenderer;\n parentProps?: ButtonDropdownProps.GroupRenderItem;\n filteringText?: string;\n filteringEnabled?: boolean;\n menuId?: string;\n filteringDescriptionId?: string;\n}\n\nfunction MenuItem({\n index,\n item,\n disabled,\n highlighted,\n linkStyle,\n renderItem,\n parentProps,\n filteringText,\n filteringEnabled,\n menuId,\n filteringDescriptionId,\n}: MenuItemProps) {\n const menuItemRef = useRef<(HTMLSpanElement & HTMLAnchorElement) | null>(null);\n const isCheckbox = isCheckboxItem(item);\n const isCurrentBreadcrumb = !isCheckbox && item.isCurrentBreadcrumb;\n\n useEffect(() => {\n if (highlighted && menuItemRef.current) {\n if (filteringEnabled) {\n // In filtering mode focus stays on the filter input, so we scroll the\n // highlighted item into view manually instead of relying on focus().\n scrollElementIntoView(menuItemRef.current);\n } else {\n menuItemRef.current.focus();\n }\n }\n }, [highlighted, filteringEnabled]);\n\n let itemProps: { item: ButtonDropdownProps.RenderItem; filterText?: string };\n\n if (isCheckbox) {\n itemProps = {\n item: {\n index: index ?? 0,\n type: 'checkbox',\n option: item as ButtonDropdownProps.CheckboxItem,\n disabled: disabled,\n highlighted: highlighted,\n checked: item.checked,\n parent: parentProps ?? null,\n },\n filterText: filteringText,\n };\n } else {\n itemProps = {\n item: {\n index: index ?? 0,\n type: 'action',\n option: item as ButtonDropdownProps.Item,\n disabled: disabled,\n highlighted: highlighted,\n parent: parentProps ?? null,\n },\n filterText: filteringText,\n };\n }\n\n const renderResult = renderItem?.(itemProps) ?? null;\n\n const isDisabledWithReason = disabled && item.disabledReason;\n const { targetProps, descriptionEl } = useHiddenDescription(item.disabledReason);\n const itemDomId = menuId && item.id ? `${menuId}-${item.id}` : undefined;\n const ariaDescribedby = joinStrings(\n isDisabledWithReason ? targetProps['aria-describedby'] : undefined,\n filteringDescriptionId\n );\n const menuItemProps: React.HTMLAttributes<HTMLSpanElement & HTMLAnchorElement> = {\n id: itemDomId,\n 'aria-label': item.ariaLabel,\n 'aria-describedby': ariaDescribedby,\n className: clsx(\n styles['menu-item'],\n !!renderResult && styles['no-content-styling'],\n analyticsLabels['menu-item'],\n linkStyle && styles['link-style'],\n linkStyle && highlighted && styles['link-style-highlighted'],\n isCurrentBreadcrumb && styles['current-breadcrumb']\n ),\n 'aria-current': isCurrentBreadcrumb,\n lang: item.lang,\n ref: menuItemRef,\n // When filtering is enabled, we use aria-activedescendant on the filter input and provide\n // the `id` of the item to select it. When filtering is disabled, we are using the roving\n // tabindex technique to manage the focus state of the dropdown. The current element will\n // have tabindex=0 which means that it can be tabbed to, while all other items have\n // tabindex=-1 so we can focus them when necessary.\n tabIndex: filteringEnabled ? -1 : highlighted ? 0 : -1,\n ...(isCheckbox ? getMenuItemCheckboxProps({ disabled, checked: item.checked }) : getMenuItemProps({ disabled })),\n };\n\n const menuItem = isLinkItem(item) ? (\n <a\n {...menuItemProps}\n href={!disabled ? item.href : undefined}\n download={!disabled && item.download ? item.download : undefined}\n target={getItemTarget(item)}\n rel={item.external ? 'noopener noreferrer' : undefined}\n data-awsui-motion-trigger=\"hover\"\n >\n {renderResult ? (\n renderResult\n ) : (\n <MenuItemContent item={item} disabled={disabled} highlighted={highlighted} filteringText={filteringText} />\n )}\n </a>\n ) : (\n <span {...menuItemProps}>\n {renderResult ? (\n renderResult\n ) : (\n <MenuItemContent item={item} disabled={disabled} highlighted={highlighted} filteringText={filteringText} />\n )}\n </span>\n );\n\n const { position } = useDropdownContext();\n const tooltipPosition = position === 'bottom-left' || position === 'top-left' ? 'left' : 'right';\n return isDisabledWithReason ? (\n <Tooltip\n content={item.disabledReason}\n position={tooltipPosition}\n className={styles['item-tooltip-wrapper']}\n controlledOpen={filteringEnabled ? highlighted : undefined}\n >\n {menuItem}\n {descriptionEl}\n </Tooltip>\n ) : (\n menuItem\n );\n}\n\nconst MenuItemContent = ({\n item,\n disabled,\n highlighted,\n filteringText,\n}: {\n item: InternalItem | InternalCheckboxItem;\n disabled: boolean;\n highlighted: boolean;\n filteringText?: string;\n}) => {\n const hasIcon = !!(item.iconName || item.iconUrl || item.iconSvg);\n const hasExternal = isLinkItem(item) && item.external;\n const isCheckbox = isCheckboxItem(item);\n return (\n <>\n {isCheckbox && <MenuItemCheckmark checked={item.checked} disabled={disabled} />}\n {hasIcon && (\n <MenuItemIcon\n name={item.iconName}\n url={item.iconUrl}\n svg={item.iconSvg}\n alt={item.iconAlt}\n badge={item.badge}\n />\n )}\n <div className={styles['content-wrapper']}>\n <div className={styles['main-row']}>\n <div>\n <HighlightMatch str={item.text} highlightText={filteringText} />\n {hasExternal && <ExternalIcon disabled={disabled} ariaLabel={item.externalIconAriaLabel} />}\n </div>\n {item.labelTag && (\n <div className={clsx(styles['label-tag'], disabled && styles.disabled)}>\n <HighlightMatch str={item.labelTag} highlightText={filteringText} />\n </div>\n )}\n </div>\n {item.secondaryText && (\n <div\n className={clsx(styles['secondary-text'], highlighted && styles.highlighted, disabled && styles.disabled)}\n >\n <HighlightMatch str={item.secondaryText} highlightText={filteringText} />\n </div>\n )}\n </div>\n </>\n );\n};\n\nconst MenuItemIcon = (props: InternalIconProps) => (\n <span className={styles.icon}>\n <InternalIcon {...props} />\n </span>\n);\n\n// Toggle has aria-hidden set because it's just used as a graphical element,\n// a11y attributes for the checkmark are communicated through the role and aria-checked state\n// of the menu element item.\nconst MenuItemCheckmark = ({ disabled, checked }: { disabled: boolean; checked: boolean }) => {\n const checkmark = <InternalIcon variant={disabled ? 'disabled' : 'normal'} name=\"check\" />;\n return (\n <span\n className={clsx(styles.icon, styles.checkmark, { [styles.disabled]: disabled })}\n aria-hidden=\"true\"\n style={{ visibility: checked ? 'visible' : 'hidden' }}\n >\n {checkmark}\n </span>\n );\n};\n\nconst ExternalIcon = ({ disabled, ariaLabel }: { disabled: boolean; ariaLabel?: string }) => {\n const icon = (\n <InternalIcon\n variant={disabled ? 'disabled' : 'normal'}\n name=\"external\"\n nativeAttributes={{ 'data-awsui-motion-target': '' }}\n />\n );\n return (\n <span className={styles['external-icon']} role={ariaLabel ? 'img' : undefined} aria-label={ariaLabel}>\n {icon}\n </span>\n );\n};\n\nexport default ItemElement;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"tab-button.d.ts","sourceRoot":"","sources":["../../../src/code-editor/tab-button.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAK/C,UAAU,cAAc;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,SAAS,CAAC,IAAI,CAAC;IACzB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IAEnB,SAAS,EAAE,MAAM,CAAC;IAClB,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IACrD,MAAM,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;CACrD;AAED,eAAO,MAAM,SAAS,0FAgDrB,CAAC"}
1
+ {"version":3,"file":"tab-button.d.ts","sourceRoot":"","sources":["../../../src/code-editor/tab-button.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAK/C,UAAU,cAAc;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,SAAS,CAAC,IAAI,CAAC;IACzB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IAEnB,SAAS,EAAE,MAAM,CAAC;IAClB,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IACrD,MAAM,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;CACrD;AAED,eAAO,MAAM,SAAS,0FAkDrB,CAAC"}
@@ -9,7 +9,7 @@ export const TabButton = React.forwardRef(({ active, disabled, iconName, onClick
9
9
  [styles['tab-button--active']]: active,
10
10
  [styles['tab-button--disabled']]: disabled,
11
11
  [styles['tab-button--refresh']]: isRefresh,
12
- }), id: id, type: "button", onClick: onClick, onFocus: onFocus, onBlur: onBlur, disabled: disabled, ref: ref, tabIndex: tabIndex, role: "tab", "aria-selected": active, "aria-controls": paneId, "aria-hidden": ariaHidden, "aria-label": ariaLabel },
12
+ }), id: id, type: "button", onClick: onClick, onFocus: onFocus, onBlur: onBlur, disabled: disabled, ref: ref, tabIndex: tabIndex, role: "tab", "aria-selected": active, "aria-controls": paneId, "aria-hidden": ariaHidden, "aria-label": ariaLabel, "data-awsui-motion-trigger": "hover", "data-awsui-motion-target": "" },
13
13
  React.createElement(InternalIcon, { name: iconName }),
14
14
  React.createElement("span", { className: styles.count }, count),
15
15
  React.createElement("span", { className: styles.text }, text)));
@@ -1 +1 @@
1
- {"version":3,"file":"tab-button.js","sourceRoot":"","sources":["../../../src/code-editor/tab-button.tsx"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AAGxB,OAAO,YAAY,MAAM,kBAAkB,CAAC;AAE5C,OAAO,MAAM,MAAM,iBAAiB,CAAC;AAsBrC,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CACvC,CACE,EACE,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,OAAO,EACP,MAAM,EACN,QAAQ,EACR,UAAU,EACV,SAAS,EACT,MAAM,EACN,SAAS,EACT,KAAK,EACL,IAAI,EACJ,SAAS,EACT,EAAE,GACa,EACjB,GAAiC,EACjC,EAAE;IACF,OAAO,CACL,gCACE,SAAS,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,SAAS,CAAC,EAAE;YACjD,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,EAAE,MAAM;YACtC,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,EAAE,QAAQ;YAC1C,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,EAAE,SAAS;SAC3C,CAAC,EACF,EAAE,EAAE,EAAE,EACN,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,EAClB,GAAG,EAAE,GAAG,EACR,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAC,KAAK,mBACK,MAAM,mBACN,MAAM,iBACR,UAAU,gBACX,SAAS;QAErB,oBAAC,YAAY,IAAC,IAAI,EAAE,QAAQ,GAAI;QAChC,8BAAM,SAAS,EAAE,MAAM,CAAC,KAAK,IAAG,KAAK,CAAQ;QAC7C,8BAAM,SAAS,EAAE,MAAM,CAAC,IAAI,IAAG,IAAI,CAAQ,CACpC,CACV,CAAC;AACJ,CAAC,CACF,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport clsx from 'clsx';\n\nimport { IconProps } from '../icon/interfaces';\nimport InternalIcon from '../icon/internal';\n\nimport styles from './styles.css.js';\n\ninterface TabButtonProps {\n count: number;\n text: string;\n iconName: IconProps.Name;\n active: boolean;\n disabled: boolean;\n tabIndex?: number;\n ariaHidden?: boolean;\n ariaLabel?: string;\n paneId?: string;\n isRefresh: boolean;\n\n className: string;\n id?: string;\n\n onClick: () => void;\n onFocus?: React.FocusEventHandler<HTMLButtonElement>;\n onBlur?: React.FocusEventHandler<HTMLButtonElement>;\n}\n\nexport const TabButton = React.forwardRef(\n (\n {\n active,\n disabled,\n iconName,\n onClick,\n onFocus,\n onBlur,\n tabIndex,\n ariaHidden,\n ariaLabel,\n paneId,\n isRefresh,\n count,\n text,\n className,\n id,\n }: TabButtonProps,\n ref: React.Ref<HTMLButtonElement>\n ) => {\n return (\n <button\n className={clsx([styles['tab-button'], className], {\n [styles['tab-button--active']]: active,\n [styles['tab-button--disabled']]: disabled,\n [styles['tab-button--refresh']]: isRefresh,\n })}\n id={id}\n type=\"button\"\n onClick={onClick}\n onFocus={onFocus}\n onBlur={onBlur}\n disabled={disabled}\n ref={ref}\n tabIndex={tabIndex}\n role=\"tab\"\n aria-selected={active}\n aria-controls={paneId}\n aria-hidden={ariaHidden}\n aria-label={ariaLabel}\n >\n <InternalIcon name={iconName} />\n <span className={styles.count}>{count}</span>\n <span className={styles.text}>{text}</span>\n </button>\n );\n }\n);\n"]}
1
+ {"version":3,"file":"tab-button.js","sourceRoot":"","sources":["../../../src/code-editor/tab-button.tsx"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AAGxB,OAAO,YAAY,MAAM,kBAAkB,CAAC;AAE5C,OAAO,MAAM,MAAM,iBAAiB,CAAC;AAsBrC,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CACvC,CACE,EACE,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,OAAO,EACP,MAAM,EACN,QAAQ,EACR,UAAU,EACV,SAAS,EACT,MAAM,EACN,SAAS,EACT,KAAK,EACL,IAAI,EACJ,SAAS,EACT,EAAE,GACa,EACjB,GAAiC,EACjC,EAAE;IACF,OAAO,CACL,gCACE,SAAS,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,SAAS,CAAC,EAAE;YACjD,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,EAAE,MAAM;YACtC,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,EAAE,QAAQ;YAC1C,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,EAAE,SAAS;SAC3C,CAAC,EACF,EAAE,EAAE,EAAE,EACN,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,EAClB,GAAG,EAAE,GAAG,EACR,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAC,KAAK,mBACK,MAAM,mBACN,MAAM,iBACR,UAAU,gBACX,SAAS,+BACK,OAAO,8BACR,EAAE;QAE3B,oBAAC,YAAY,IAAC,IAAI,EAAE,QAAQ,GAAI;QAChC,8BAAM,SAAS,EAAE,MAAM,CAAC,KAAK,IAAG,KAAK,CAAQ;QAC7C,8BAAM,SAAS,EAAE,MAAM,CAAC,IAAI,IAAG,IAAI,CAAQ,CACpC,CACV,CAAC;AACJ,CAAC,CACF,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport clsx from 'clsx';\n\nimport { IconProps } from '../icon/interfaces';\nimport InternalIcon from '../icon/internal';\n\nimport styles from './styles.css.js';\n\ninterface TabButtonProps {\n count: number;\n text: string;\n iconName: IconProps.Name;\n active: boolean;\n disabled: boolean;\n tabIndex?: number;\n ariaHidden?: boolean;\n ariaLabel?: string;\n paneId?: string;\n isRefresh: boolean;\n\n className: string;\n id?: string;\n\n onClick: () => void;\n onFocus?: React.FocusEventHandler<HTMLButtonElement>;\n onBlur?: React.FocusEventHandler<HTMLButtonElement>;\n}\n\nexport const TabButton = React.forwardRef(\n (\n {\n active,\n disabled,\n iconName,\n onClick,\n onFocus,\n onBlur,\n tabIndex,\n ariaHidden,\n ariaLabel,\n paneId,\n isRefresh,\n count,\n text,\n className,\n id,\n }: TabButtonProps,\n ref: React.Ref<HTMLButtonElement>\n ) => {\n return (\n <button\n className={clsx([styles['tab-button'], className], {\n [styles['tab-button--active']]: active,\n [styles['tab-button--disabled']]: disabled,\n [styles['tab-button--refresh']]: isRefresh,\n })}\n id={id}\n type=\"button\"\n onClick={onClick}\n onFocus={onFocus}\n onBlur={onBlur}\n disabled={disabled}\n ref={ref}\n tabIndex={tabIndex}\n role=\"tab\"\n aria-selected={active}\n aria-controls={paneId}\n aria-hidden={ariaHidden}\n aria-label={ariaLabel}\n data-awsui-motion-trigger=\"hover\"\n data-awsui-motion-target=\"\"\n >\n <InternalIcon name={iconName} />\n <span className={styles.count}>{count}</span>\n <span className={styles.text}>{text}</span>\n </button>\n );\n }\n);\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"expandable-section-header.d.ts","sourceRoot":"","sources":["../../../src/expandable-section/expandable-section-header.tsx"],"names":[],"mappings":"AAEA,OAAc,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAalF,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAwExD,UAAU,4BAA4B;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,oBAAoB,CAAC;IAC9B,SAAS,EAAE,oBAAoB,CAAC;IAChC,OAAO,EAAE,iBAAiB,CAAC;IAC3B,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC;IAClB,OAAO,EAAE,eAAe,CAAC;IACzB,kBAAkB,EAAE,OAAO,GAAG,KAAK,CAAC;CACrC;AAeD,UAAU,4BAA6B,SAAQ,IAAI,CAAC,4BAA4B,EAAE,UAAU,GAAG,MAAM,CAAC;IACpG,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,iBAAiB,CAAC,EAAE,SAAS,CAAC;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,kBAAkB,CAAC,EAAE,sBAAsB,CAAC,UAAU,CAAC;IACvD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAmQD,eAAO,MAAM,uBAAuB,GAAI,qQAqBrC,4BAA4B,gBA8F9B,CAAC"}
1
+ {"version":3,"file":"expandable-section-header.d.ts","sourceRoot":"","sources":["../../../src/expandable-section/expandable-section-header.tsx"],"names":[],"mappings":"AAEA,OAAc,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAalF,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAyExD,UAAU,4BAA4B;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,oBAAoB,CAAC;IAC9B,SAAS,EAAE,oBAAoB,CAAC;IAChC,OAAO,EAAE,iBAAiB,CAAC;IAC3B,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC;IAClB,OAAO,EAAE,eAAe,CAAC;IACzB,kBAAkB,EAAE,OAAO,GAAG,KAAK,CAAC;CACrC;AAeD,UAAU,4BAA6B,SAAQ,IAAI,CAAC,4BAA4B,EAAE,UAAU,GAAG,MAAM,CAAC;IACpG,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,iBAAiB,CAAC,EAAE,SAAS,CAAC;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,kBAAkB,CAAC,EAAE,sBAAsB,CAAC,UAAU,CAAC;IACvD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AA+QD,eAAO,MAAM,uBAAuB,GAAI,qQAqBrC,4BAA4B,gBA+F9B,CAAC"}
@@ -25,7 +25,7 @@ const ExpandIconButton = ({ icon, ariaLabel, ariaLabelledBy, ariaControls, expan
25
25
  }
26
26
  }
27
27
  : undefined;
28
- return (React.createElement("button", { className: clsx(styles['icon-container'], styles['expand-button'], className), type: "button", "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, "aria-controls": ariaControls, "aria-expanded": expanded, onClick: stopPropagation
28
+ return (React.createElement("button", { className: clsx(styles['icon-container'], styles['expand-button'], className), type: "button", "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, "aria-controls": ariaControls, "aria-expanded": expanded, "data-awsui-motion-trigger": "hover", onClick: stopPropagation
29
29
  ? event => {
30
30
  event.stopPropagation();
31
31
  onClick(event);
@@ -42,13 +42,13 @@ const getExpandActionAnalyticsMetadataAttribute = (expanded) => {
42
42
  return getAnalyticsMetadataAttribute(metadata);
43
43
  };
44
44
  const ExpandableDeprecatedHeader = ({ id, className, onClick, ariaLabel, ariaControls, expanded, children, icon, onKeyUp, onKeyDown, variant, }) => {
45
- return (React.createElement("div", { id: id, role: "button", className: clsx(className, styles['expand-button'], styles['click-target'], styles['header-deprecated'], analyticsSelectors['header-label']), tabIndex: 0, onKeyUp: onKeyUp, onKeyDown: onKeyDown, onClick: onClick, "aria-label": ariaLabel, "aria-controls": ariaControls, "aria-expanded": expanded, ...getExpandActionAnalyticsMetadataAttribute(expanded) },
45
+ return (React.createElement("div", { id: id, role: "button", className: clsx(className, styles['expand-button'], styles['click-target'], styles['header-deprecated'], analyticsSelectors['header-label']), tabIndex: 0, onKeyUp: onKeyUp, onKeyDown: onKeyDown, onClick: onClick, "aria-label": ariaLabel, "aria-controls": ariaControls, "aria-expanded": expanded, "data-awsui-motion-trigger": "hover", ...getExpandActionAnalyticsMetadataAttribute(expanded) },
46
46
  React.createElement("div", { className: clsx(styles['icon-container'], styles[`icon-container-${variant}`]) }, icon),
47
47
  children));
48
48
  };
49
49
  const ExpandableNavigationHeader = ({ id, className, onClick, ariaLabelledBy, ariaLabel, ariaControls, expanded, children, icon, expandIconPosition, hideExpandIcon, }) => {
50
50
  const expandButton = hideExpandIcon ? null : (React.createElement(ExpandIconButton, { icon: icon, ariaLabelledBy: ariaLabelledBy, ariaLabel: ariaLabel, ariaControls: ariaControls, expanded: expanded, onClick: onClick, className: expandIconPosition === 'end' ? styles['icon-container-end'] : undefined }));
51
- return (React.createElement("div", { id: id, className: clsx(className, styles['click-target'], analyticsSelectors['header-label'], expandIconPosition === 'end' && styles['header-icon-end']) }, expandIconPosition === 'end' ? (React.createElement(React.Fragment, null,
51
+ return (React.createElement("div", { id: id, className: clsx(className, styles['click-target'], analyticsSelectors['header-label'], expandIconPosition === 'end' && styles['header-icon-end']), "data-awsui-motion-trigger": "hover" }, expandIconPosition === 'end' ? (React.createElement(React.Fragment, null,
52
52
  children,
53
53
  expandButton)) : (React.createElement(React.Fragment, null,
54
54
  expandButton,
@@ -76,6 +76,12 @@ const ExpandableHeaderTextWrapper = ({ id, descriptionId, className, onClick, ar
76
76
  const headingTagListeners = !headerButtonListeners && !isContainer && description ? listeners : undefined;
77
77
  // For all other cases, make the entire header clickable for backwards compatibility.
78
78
  const wrapperListeners = !headerButtonListeners && !headingTagListeners ? listeners : undefined;
79
+ // The hover-motion trigger follows whichever element actually owns the click handler above —
80
+ // that element is the real interactive surface, so it's also the sane hover boundary for the caret.
81
+ const motionTriggerAttribute = { 'data-awsui-motion-trigger': 'hover' };
82
+ const headerButtonMotionTrigger = headerButtonListeners ? motionTriggerAttribute : undefined;
83
+ const headingTagMotionTrigger = headingTagListeners ? motionTriggerAttribute : undefined;
84
+ const wrapperMotionTrigger = wrapperListeners ? motionTriggerAttribute : undefined;
79
85
  // Standalone caret button — used when the icon is rendered OUTSIDE the headerButton
80
86
  // (end-position with container or actions). Must be its own <button> for accessibility.
81
87
  const expandButton = (React.createElement(ExpandIconButton, { icon: icon, ariaLabel: ariaLabel, ariaLabelledBy: !ariaLabel ? id : undefined, ariaControls: ariaControls, expanded: expanded, onClick: onClick, stopPropagation: true, className: clsx(styles[`icon-container-${variant}`], styles['icon-container-end']) }));
@@ -84,23 +90,23 @@ const ExpandableHeaderTextWrapper = ({ id, descriptionId, className, onClick, ar
84
90
  const expandIcon = (React.createElement("span", { className: clsx(styles['icon-container'], styles[`icon-container-${variant}`], iconAtEnd && styles['icon-container-end']) }, icon));
85
91
  const outsideIcon = renderIconOutsideHeader ? expandButton : null;
86
92
  const textElement = (React.createElement("span", { id: id, className: clsx(styles['header-text'], analyticsSelectors['header-label']) }, children));
87
- const headerButton = (React.createElement("span", { className: clsx(styles['expand-button'], isContainer ? styles['header-container-button'] : styles['header-button'], iconAtEnd && styles['header-button-icon-end'], headerButtonListeners && styles['click-target']), role: "button", tabIndex: 0, "aria-label": ariaLabel, "aria-labelledby": !ariaLabel && description ? id : undefined, "aria-describedby": description ? descriptionId : undefined, "aria-controls": ariaControls, "aria-expanded": expanded, ...headerButtonListeners, ...(headerButtonListeners ? getExpandActionAnalyticsMetadataAttribute(expanded) : {}) }, renderIconOutsideHeader ? (textElement) : iconAtEnd ? (React.createElement(React.Fragment, null,
93
+ const headerButton = (React.createElement("span", { className: clsx(styles['expand-button'], isContainer ? styles['header-container-button'] : styles['header-button'], iconAtEnd && styles['header-button-icon-end'], headerButtonListeners && styles['click-target']), role: "button", tabIndex: 0, "aria-label": ariaLabel, "aria-labelledby": !ariaLabel && description ? id : undefined, "aria-describedby": description ? descriptionId : undefined, "aria-controls": ariaControls, "aria-expanded": expanded, ...headerButtonListeners, ...headerButtonMotionTrigger, ...(headerButtonListeners ? getExpandActionAnalyticsMetadataAttribute(expanded) : {}) }, renderIconOutsideHeader ? (textElement) : iconAtEnd ? (React.createElement(React.Fragment, null,
88
94
  textElement,
89
95
  expandIcon)) : (React.createElement(React.Fragment, null,
90
96
  expandIcon,
91
97
  textElement))));
92
- return (React.createElement("div", { className: clsx(className, wrapperListeners && styles['click-target'], iconAtEnd && styles['header-icon-end']), ...wrapperListeners, ...(wrapperListeners ? getExpandActionAnalyticsMetadataAttribute(expanded) : {}) }, isContainer ? (React.createElement(React.Fragment, null,
98
+ return (React.createElement("div", { className: clsx(className, wrapperListeners && styles['click-target'], iconAtEnd && styles['header-icon-end']), ...wrapperListeners, ...wrapperMotionTrigger, ...(wrapperListeners ? getExpandActionAnalyticsMetadataAttribute(expanded) : {}) }, isContainer ? (React.createElement(React.Fragment, null,
93
99
  React.createElement(InternalHeader, { variant: "h2", description: description, counter: headerCounter, info: headerInfo, actions: actions, headingTagOverride: headingTagOverride, __inExpandableSection: true }, headerButton),
94
100
  outsideIcon)) : (React.createElement(React.Fragment, null,
95
101
  React.createElement("div", { className: clsx(styles['header-content'], actions && styles['header-actions-wrapper']) },
96
- React.createElement(HeadingTag, { className: clsx(styles['header-wrapper'], headingTagListeners && styles['click-target']), ...headingTagListeners, ...(headingTagListeners ? getExpandActionAnalyticsMetadataAttribute(expanded) : {}) }, headerButton),
102
+ React.createElement(HeadingTag, { className: clsx(styles['header-wrapper'], headingTagListeners && styles['click-target']), ...headingTagListeners, ...headingTagMotionTrigger, ...(headingTagListeners ? getExpandActionAnalyticsMetadataAttribute(expanded) : {}) }, headerButton),
97
103
  actions),
98
104
  description && React.createElement(HeaderDescription, { variantOverride: "h3" }, description),
99
105
  outsideIcon))));
100
106
  };
101
107
  export const ExpandableSectionHeader = ({ id, descriptionId, className, variant, header, headerText, headerDescription, headerCounter, headerInfo, headerActions, headingTagOverride, expanded, ariaControls, ariaLabel, ariaLabelledBy, onKeyUp, onKeyDown, onClick, expandIconPosition, hideExpandIcon, }) => {
102
108
  const alwaysShowDivider = variantRequiresActionsDivider(variant) && headerActions;
103
- const icon = (React.createElement(InternalIcon, { size: isThemeActive(Theme.OneTheme) ? 'x-small' : variant === 'container' ? 'medium' : 'normal', className: clsx(styles.icon, expanded && styles.expanded), name: isThemeActive(Theme.OneTheme) ? 'angle-down' : 'caret-down-filled' }));
109
+ const icon = (React.createElement(InternalIcon, { size: isThemeActive(Theme.OneTheme) ? 'x-small' : variant === 'container' ? 'medium' : 'normal', className: clsx(styles.icon, expanded && styles.expanded), name: isThemeActive(Theme.OneTheme) ? 'angle-down' : 'caret-down-filled', nativeAttributes: { 'data-awsui-motion-target': '' } }));
104
110
  const defaultHeaderProps = {
105
111
  id: id,
106
112
  icon: icon,
@@ -1 +1 @@
1
- {"version":3,"file":"expandable-section-header.js","sourceRoot":"","sources":["../../../src/expandable-section/expandable-section-header.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { KeyboardEventHandler, MouseEventHandler, ReactNode } from 'react';\nimport clsx from 'clsx';\n\nimport { isThemeActive, Theme, warnOnce } from '@cloudscape-design/component-toolkit/internal';\nimport { getAnalyticsMetadataAttribute } from '@cloudscape-design/component-toolkit/internal/analytics-metadata';\n\nimport InternalHeader, { Description as HeaderDescription } from '../header/internal';\nimport InternalIcon from '../icon/internal';\nimport { isDevelopment } from '../internal/is-development';\nimport {\n GeneratedAnalyticsMetadataExpandableSectionCollapse,\n GeneratedAnalyticsMetadataExpandableSectionExpand,\n} from './analytics-metadata/interfaces';\nimport { ExpandableSectionProps } from './interfaces';\nimport { InternalVariant } from './internal-interfaces';\nimport {\n variantRequiresActionsDivider,\n variantSupportsActions,\n variantSupportsDescription,\n variantSupportsInfoLink,\n} from './utils';\n\nimport analyticsSelectors from './analytics-metadata/styles.css.js';\nimport styles from './styles.css.js';\n\nconst componentName = 'ExpandableSection';\n\ninterface ExpandIconButtonProps {\n icon: JSX.Element;\n ariaLabel?: string;\n ariaLabelledBy?: string;\n ariaControls: string;\n expanded: boolean;\n onClick: MouseEventHandler;\n stopPropagation?: boolean;\n className?: string;\n}\n\n/**\n * Standalone expand/collapse caret button used when the icon renders OUTSIDE\n * the main clickable header area (navigation variant) or outside the headerButton\n * (end-position with actions/container). This is always an independent interactive\n * element with its own ARIA attributes.\n */\nconst ExpandIconButton = ({\n icon,\n ariaLabel,\n ariaLabelledBy,\n ariaControls,\n expanded,\n onClick,\n stopPropagation,\n className,\n}: ExpandIconButtonProps) => {\n const stopKeyPropagation = stopPropagation\n ? (event: React.KeyboardEvent) => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.stopPropagation();\n }\n }\n : undefined;\n return (\n <button\n className={clsx(styles['icon-container'], styles['expand-button'], className)}\n type=\"button\"\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n aria-controls={ariaControls}\n aria-expanded={expanded}\n onClick={\n stopPropagation\n ? event => {\n event.stopPropagation();\n onClick(event);\n }\n : onClick\n }\n onKeyUp={stopKeyPropagation}\n onKeyDown={stopKeyPropagation}\n {...getExpandActionAnalyticsMetadataAttribute(expanded)}\n >\n {icon}\n </button>\n );\n};\n\ninterface ExpandableDefaultHeaderProps {\n id: string;\n descriptionId?: string;\n className?: string;\n children?: ReactNode;\n expanded: boolean;\n ariaControls: string;\n ariaLabel?: string;\n onKeyUp: KeyboardEventHandler;\n onKeyDown: KeyboardEventHandler;\n onClick: MouseEventHandler;\n icon: JSX.Element;\n variant: InternalVariant;\n expandIconPosition: 'start' | 'end';\n}\n\ninterface ExpandableNavigationHeaderProps extends Omit<ExpandableDefaultHeaderProps, 'onKeyUp' | 'onKeyDown'> {\n ariaLabelledBy?: string;\n hideExpandIcon?: boolean;\n}\n\ninterface ExpandableHeaderTextWrapperProps extends ExpandableDefaultHeaderProps {\n headerDescription?: ReactNode;\n headerCounter?: string;\n headerInfo?: ReactNode;\n headerActions?: ReactNode;\n headingTagOverride?: ExpandableSectionProps.HeadingTag;\n}\n\ninterface ExpandableSectionHeaderProps extends Omit<ExpandableDefaultHeaderProps, 'children' | 'icon'> {\n header?: ReactNode;\n headerText?: ReactNode;\n headerDescription?: ReactNode;\n headerCounter?: string;\n headerInfo?: ReactNode;\n headerActions?: ReactNode;\n headingTagOverride?: ExpandableSectionProps.HeadingTag;\n ariaLabelledBy?: string;\n hideExpandIcon?: boolean;\n}\n\nconst getExpandActionAnalyticsMetadataAttribute = (expanded: boolean) => {\n const metadata:\n | GeneratedAnalyticsMetadataExpandableSectionExpand\n | GeneratedAnalyticsMetadataExpandableSectionCollapse = {\n action: !expanded ? 'expand' : 'collapse',\n detail: {\n label: { rootSelector: `.${analyticsSelectors.root}` },\n },\n };\n return getAnalyticsMetadataAttribute(metadata);\n};\nconst ExpandableDeprecatedHeader = ({\n id,\n className,\n onClick,\n ariaLabel,\n ariaControls,\n expanded,\n children,\n icon,\n onKeyUp,\n onKeyDown,\n variant,\n}: ExpandableDefaultHeaderProps) => {\n return (\n <div\n id={id}\n role=\"button\"\n className={clsx(\n className,\n styles['expand-button'],\n styles['click-target'],\n styles['header-deprecated'],\n analyticsSelectors['header-label']\n )}\n tabIndex={0}\n onKeyUp={onKeyUp}\n onKeyDown={onKeyDown}\n onClick={onClick}\n aria-label={ariaLabel}\n aria-controls={ariaControls}\n aria-expanded={expanded}\n {...getExpandActionAnalyticsMetadataAttribute(expanded)}\n >\n <div className={clsx(styles['icon-container'], styles[`icon-container-${variant}`])}>{icon}</div>\n {children}\n </div>\n );\n};\n\nconst ExpandableNavigationHeader = ({\n id,\n className,\n onClick,\n ariaLabelledBy,\n ariaLabel,\n ariaControls,\n expanded,\n children,\n icon,\n expandIconPosition,\n hideExpandIcon,\n}: ExpandableNavigationHeaderProps) => {\n const expandButton = hideExpandIcon ? null : (\n <ExpandIconButton\n icon={icon}\n ariaLabelledBy={ariaLabelledBy}\n ariaLabel={ariaLabel}\n ariaControls={ariaControls}\n expanded={expanded}\n onClick={onClick}\n className={expandIconPosition === 'end' ? styles['icon-container-end'] : undefined}\n />\n );\n return (\n <div\n id={id}\n className={clsx(\n className,\n styles['click-target'],\n analyticsSelectors['header-label'],\n expandIconPosition === 'end' && styles['header-icon-end']\n )}\n >\n {expandIconPosition === 'end' ? (\n <>\n {children}\n {expandButton}\n </>\n ) : (\n <>\n {expandButton}\n {children}\n </>\n )}\n </div>\n );\n};\n\nconst ExpandableHeaderTextWrapper = ({\n id,\n descriptionId,\n className,\n onClick,\n ariaLabel,\n ariaControls,\n expanded,\n children,\n icon,\n headerDescription,\n headerCounter,\n headerInfo,\n headerActions,\n variant,\n headingTagOverride,\n onKeyUp,\n onKeyDown,\n expandIconPosition,\n}: ExpandableHeaderTextWrapperProps) => {\n const isContainer = variant === 'container';\n const HeadingTag = headingTagOverride || 'div';\n const supportsInteractiveElements = variantSupportsActions(variant);\n const restrictClickableArea = supportsInteractiveElements && (headerInfo || headerActions);\n const actions = supportsInteractiveElements && headerActions;\n const description = variantSupportsDescription(variant) && headerDescription && (\n <span id={descriptionId} className={styles[`description-${variant}`]}>\n {headerDescription}\n </span>\n );\n const listeners = { onClick, onKeyDown, onKeyUp };\n const iconAtEnd = expandIconPosition === 'end';\n // For the variants that allow actions, when end placement is active, the icon is rendered outside the\n // InternalHeader so it appears at the inline-end of the wrapper, past any header actions.\n // Other variants render the icon at the end of the headerButton itself.\n const renderIconOutsideHeader = iconAtEnd && (isContainer || !!actions);\n\n // If interactive elements are present, constrain the clickable area to only the icon and the header text\n // to prevent nesting interactive elements.\n const headerButtonListeners = restrictClickableArea ? listeners : undefined;\n // For the default and footer variants with description,\n // include also the immediate wrapper around it to include the entire row for backwards compatibility,\n // but exclude the description.\n const headingTagListeners = !headerButtonListeners && !isContainer && description ? listeners : undefined;\n // For all other cases, make the entire header clickable for backwards compatibility.\n const wrapperListeners = !headerButtonListeners && !headingTagListeners ? listeners : undefined;\n\n // Standalone caret button — used when the icon is rendered OUTSIDE the headerButton\n // (end-position with container or actions). Must be its own <button> for accessibility.\n const expandButton = (\n <ExpandIconButton\n icon={icon}\n ariaLabel={ariaLabel}\n ariaLabelledBy={!ariaLabel ? id : undefined}\n ariaControls={ariaControls}\n expanded={expanded}\n onClick={onClick}\n stopPropagation={true}\n className={clsx(styles[`icon-container-${variant}`], styles['icon-container-end'])}\n />\n );\n\n // Decorative inline icon — used when the caret is INSIDE the headerButton\n // (which itself is the interactive element). A nested <button> would be illegal.\n const expandIcon = (\n <span\n className={clsx(\n styles['icon-container'],\n styles[`icon-container-${variant}`],\n iconAtEnd && styles['icon-container-end']\n )}\n >\n {icon}\n </span>\n );\n\n const outsideIcon = renderIconOutsideHeader ? expandButton : null;\n\n const textElement = (\n <span id={id} className={clsx(styles['header-text'], analyticsSelectors['header-label'])}>\n {children}\n </span>\n );\n const headerButton = (\n <span\n className={clsx(\n styles['expand-button'],\n isContainer ? styles['header-container-button'] : styles['header-button'],\n iconAtEnd && styles['header-button-icon-end'],\n headerButtonListeners && styles['click-target']\n )}\n role=\"button\"\n tabIndex={0}\n aria-label={ariaLabel}\n aria-labelledby={!ariaLabel && description ? id : undefined}\n aria-describedby={description ? descriptionId : undefined}\n aria-controls={ariaControls}\n aria-expanded={expanded}\n {...headerButtonListeners}\n {...(headerButtonListeners ? getExpandActionAnalyticsMetadataAttribute(expanded) : {})}\n >\n {renderIconOutsideHeader ? (\n textElement\n ) : iconAtEnd ? (\n <>\n {textElement}\n {expandIcon}\n </>\n ) : (\n <>\n {expandIcon}\n {textElement}\n </>\n )}\n </span>\n );\n\n return (\n <div\n className={clsx(className, wrapperListeners && styles['click-target'], iconAtEnd && styles['header-icon-end'])}\n {...wrapperListeners}\n {...(wrapperListeners ? getExpandActionAnalyticsMetadataAttribute(expanded) : {})}\n >\n {isContainer ? (\n <>\n <InternalHeader\n variant=\"h2\"\n description={description}\n counter={headerCounter}\n info={headerInfo}\n actions={actions}\n headingTagOverride={headingTagOverride}\n __inExpandableSection={true}\n >\n {headerButton}\n </InternalHeader>\n {outsideIcon}\n </>\n ) : (\n <>\n <div className={clsx(styles['header-content'], actions && styles['header-actions-wrapper'])}>\n <HeadingTag\n className={clsx(styles['header-wrapper'], headingTagListeners && styles['click-target'])}\n {...headingTagListeners}\n {...(headingTagListeners ? getExpandActionAnalyticsMetadataAttribute(expanded) : {})}\n >\n {headerButton}\n </HeadingTag>\n {actions}\n </div>\n {description && <HeaderDescription variantOverride=\"h3\">{description}</HeaderDescription>}\n {outsideIcon}\n </>\n )}\n </div>\n );\n};\n\nexport const ExpandableSectionHeader = ({\n id,\n descriptionId,\n className,\n variant,\n header,\n headerText,\n headerDescription,\n headerCounter,\n headerInfo,\n headerActions,\n headingTagOverride,\n expanded,\n ariaControls,\n ariaLabel,\n ariaLabelledBy,\n onKeyUp,\n onKeyDown,\n onClick,\n expandIconPosition,\n hideExpandIcon,\n}: ExpandableSectionHeaderProps) => {\n const alwaysShowDivider = variantRequiresActionsDivider(variant) && headerActions;\n const icon = (\n <InternalIcon\n size={isThemeActive(Theme.OneTheme) ? 'x-small' : variant === 'container' ? 'medium' : 'normal'}\n className={clsx(styles.icon, expanded && styles.expanded)}\n name={isThemeActive(Theme.OneTheme) ? 'angle-down' : 'caret-down-filled'}\n />\n );\n const defaultHeaderProps = {\n id: id,\n icon: icon,\n expanded: expanded,\n ariaControls: ariaControls,\n ariaLabel: ariaLabel,\n onClick: onClick,\n variant,\n expandIconPosition,\n };\n\n if ((headerCounter || headerInfo) && !variantSupportsInfoLink(variant) && isDevelopment) {\n warnOnce(\n componentName,\n 'The `headerCounter` and `headerInfo` props are only supported for the \"container\" variant.'\n );\n }\n\n if (headerActions && !variantSupportsActions(variant) && isDevelopment) {\n warnOnce(componentName, `The \\`headerActions\\` prop is only supported for the \"container\" and \"default\" variants.`);\n }\n\n if (headerDescription && !variantSupportsDescription(variant) && isDevelopment) {\n warnOnce(componentName, `The \\`headerDescription\\` prop is not supported for the ${variant} variant.`);\n }\n\n const wrapperClassName = clsx(\n styles.wrapper,\n styles[`wrapper-${variant}`],\n (expanded || alwaysShowDivider) && styles['wrapper-expanded']\n );\n if (variant === 'navigation') {\n return (\n <ExpandableNavigationHeader\n className={clsx(className, wrapperClassName)}\n ariaLabelledBy={ariaLabelledBy}\n hideExpandIcon={hideExpandIcon}\n {...defaultHeaderProps}\n >\n <span className={styles['header-navigation-content']}>{headerText ?? header}</span>\n </ExpandableNavigationHeader>\n );\n }\n\n if (headerText || variant === 'inline') {\n if (!headerText && header && variant === 'inline') {\n warnOnce(componentName, 'Only `headerText` instead of `header` is supported for `inline` variant.');\n }\n return (\n <ExpandableHeaderTextWrapper\n className={clsx(\n className,\n wrapperClassName,\n expanded && styles.expanded,\n !expanded && (!headerActions || headerDescription) && styles['wrapper-not-expanded-without-actions']\n )}\n descriptionId={descriptionId}\n headerDescription={headerDescription}\n headerCounter={headerCounter}\n headerInfo={headerInfo}\n headerActions={headerActions}\n headingTagOverride={headingTagOverride}\n onKeyUp={onKeyUp}\n onKeyDown={onKeyDown}\n {...defaultHeaderProps}\n >\n {headerText}\n </ExpandableHeaderTextWrapper>\n );\n }\n\n if (variant === 'container' && header && isDevelopment) {\n warnOnce(componentName, 'Use `headerText` instead of `header` to provide the button within the heading for a11y.');\n }\n\n return (\n <ExpandableDeprecatedHeader\n className={clsx(className, wrapperClassName, styles.focusable, expanded && styles.expanded)}\n onKeyUp={onKeyUp}\n onKeyDown={onKeyDown}\n {...defaultHeaderProps}\n >\n {header}\n </ExpandableDeprecatedHeader>\n );\n};\n"]}
1
+ {"version":3,"file":"expandable-section-header.js","sourceRoot":"","sources":["../../../src/expandable-section/expandable-section-header.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { KeyboardEventHandler, MouseEventHandler, ReactNode } from 'react';\nimport clsx from 'clsx';\n\nimport { isThemeActive, Theme, warnOnce } from '@cloudscape-design/component-toolkit/internal';\nimport { getAnalyticsMetadataAttribute } from '@cloudscape-design/component-toolkit/internal/analytics-metadata';\n\nimport InternalHeader, { Description as HeaderDescription } from '../header/internal';\nimport InternalIcon from '../icon/internal';\nimport { isDevelopment } from '../internal/is-development';\nimport {\n GeneratedAnalyticsMetadataExpandableSectionCollapse,\n GeneratedAnalyticsMetadataExpandableSectionExpand,\n} from './analytics-metadata/interfaces';\nimport { ExpandableSectionProps } from './interfaces';\nimport { InternalVariant } from './internal-interfaces';\nimport {\n variantRequiresActionsDivider,\n variantSupportsActions,\n variantSupportsDescription,\n variantSupportsInfoLink,\n} from './utils';\n\nimport analyticsSelectors from './analytics-metadata/styles.css.js';\nimport styles from './styles.css.js';\n\nconst componentName = 'ExpandableSection';\n\ninterface ExpandIconButtonProps {\n icon: JSX.Element;\n ariaLabel?: string;\n ariaLabelledBy?: string;\n ariaControls: string;\n expanded: boolean;\n onClick: MouseEventHandler;\n stopPropagation?: boolean;\n className?: string;\n}\n\n/**\n * Standalone expand/collapse caret button used when the icon renders OUTSIDE\n * the main clickable header area (navigation variant) or outside the headerButton\n * (end-position with actions/container). This is always an independent interactive\n * element with its own ARIA attributes.\n */\nconst ExpandIconButton = ({\n icon,\n ariaLabel,\n ariaLabelledBy,\n ariaControls,\n expanded,\n onClick,\n stopPropagation,\n className,\n}: ExpandIconButtonProps) => {\n const stopKeyPropagation = stopPropagation\n ? (event: React.KeyboardEvent) => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.stopPropagation();\n }\n }\n : undefined;\n return (\n <button\n className={clsx(styles['icon-container'], styles['expand-button'], className)}\n type=\"button\"\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n aria-controls={ariaControls}\n aria-expanded={expanded}\n data-awsui-motion-trigger=\"hover\"\n onClick={\n stopPropagation\n ? event => {\n event.stopPropagation();\n onClick(event);\n }\n : onClick\n }\n onKeyUp={stopKeyPropagation}\n onKeyDown={stopKeyPropagation}\n {...getExpandActionAnalyticsMetadataAttribute(expanded)}\n >\n {icon}\n </button>\n );\n};\n\ninterface ExpandableDefaultHeaderProps {\n id: string;\n descriptionId?: string;\n className?: string;\n children?: ReactNode;\n expanded: boolean;\n ariaControls: string;\n ariaLabel?: string;\n onKeyUp: KeyboardEventHandler;\n onKeyDown: KeyboardEventHandler;\n onClick: MouseEventHandler;\n icon: JSX.Element;\n variant: InternalVariant;\n expandIconPosition: 'start' | 'end';\n}\n\ninterface ExpandableNavigationHeaderProps extends Omit<ExpandableDefaultHeaderProps, 'onKeyUp' | 'onKeyDown'> {\n ariaLabelledBy?: string;\n hideExpandIcon?: boolean;\n}\n\ninterface ExpandableHeaderTextWrapperProps extends ExpandableDefaultHeaderProps {\n headerDescription?: ReactNode;\n headerCounter?: string;\n headerInfo?: ReactNode;\n headerActions?: ReactNode;\n headingTagOverride?: ExpandableSectionProps.HeadingTag;\n}\n\ninterface ExpandableSectionHeaderProps extends Omit<ExpandableDefaultHeaderProps, 'children' | 'icon'> {\n header?: ReactNode;\n headerText?: ReactNode;\n headerDescription?: ReactNode;\n headerCounter?: string;\n headerInfo?: ReactNode;\n headerActions?: ReactNode;\n headingTagOverride?: ExpandableSectionProps.HeadingTag;\n ariaLabelledBy?: string;\n hideExpandIcon?: boolean;\n}\n\nconst getExpandActionAnalyticsMetadataAttribute = (expanded: boolean) => {\n const metadata:\n | GeneratedAnalyticsMetadataExpandableSectionExpand\n | GeneratedAnalyticsMetadataExpandableSectionCollapse = {\n action: !expanded ? 'expand' : 'collapse',\n detail: {\n label: { rootSelector: `.${analyticsSelectors.root}` },\n },\n };\n return getAnalyticsMetadataAttribute(metadata);\n};\nconst ExpandableDeprecatedHeader = ({\n id,\n className,\n onClick,\n ariaLabel,\n ariaControls,\n expanded,\n children,\n icon,\n onKeyUp,\n onKeyDown,\n variant,\n}: ExpandableDefaultHeaderProps) => {\n return (\n <div\n id={id}\n role=\"button\"\n className={clsx(\n className,\n styles['expand-button'],\n styles['click-target'],\n styles['header-deprecated'],\n analyticsSelectors['header-label']\n )}\n tabIndex={0}\n onKeyUp={onKeyUp}\n onKeyDown={onKeyDown}\n onClick={onClick}\n aria-label={ariaLabel}\n aria-controls={ariaControls}\n aria-expanded={expanded}\n data-awsui-motion-trigger=\"hover\"\n {...getExpandActionAnalyticsMetadataAttribute(expanded)}\n >\n <div className={clsx(styles['icon-container'], styles[`icon-container-${variant}`])}>{icon}</div>\n {children}\n </div>\n );\n};\n\nconst ExpandableNavigationHeader = ({\n id,\n className,\n onClick,\n ariaLabelledBy,\n ariaLabel,\n ariaControls,\n expanded,\n children,\n icon,\n expandIconPosition,\n hideExpandIcon,\n}: ExpandableNavigationHeaderProps) => {\n const expandButton = hideExpandIcon ? null : (\n <ExpandIconButton\n icon={icon}\n ariaLabelledBy={ariaLabelledBy}\n ariaLabel={ariaLabel}\n ariaControls={ariaControls}\n expanded={expanded}\n onClick={onClick}\n className={expandIconPosition === 'end' ? styles['icon-container-end'] : undefined}\n />\n );\n return (\n <div\n id={id}\n className={clsx(\n className,\n styles['click-target'],\n analyticsSelectors['header-label'],\n expandIconPosition === 'end' && styles['header-icon-end']\n )}\n data-awsui-motion-trigger=\"hover\"\n >\n {expandIconPosition === 'end' ? (\n <>\n {children}\n {expandButton}\n </>\n ) : (\n <>\n {expandButton}\n {children}\n </>\n )}\n </div>\n );\n};\n\nconst ExpandableHeaderTextWrapper = ({\n id,\n descriptionId,\n className,\n onClick,\n ariaLabel,\n ariaControls,\n expanded,\n children,\n icon,\n headerDescription,\n headerCounter,\n headerInfo,\n headerActions,\n variant,\n headingTagOverride,\n onKeyUp,\n onKeyDown,\n expandIconPosition,\n}: ExpandableHeaderTextWrapperProps) => {\n const isContainer = variant === 'container';\n const HeadingTag = headingTagOverride || 'div';\n const supportsInteractiveElements = variantSupportsActions(variant);\n const restrictClickableArea = supportsInteractiveElements && (headerInfo || headerActions);\n const actions = supportsInteractiveElements && headerActions;\n const description = variantSupportsDescription(variant) && headerDescription && (\n <span id={descriptionId} className={styles[`description-${variant}`]}>\n {headerDescription}\n </span>\n );\n const listeners = { onClick, onKeyDown, onKeyUp };\n const iconAtEnd = expandIconPosition === 'end';\n // For the variants that allow actions, when end placement is active, the icon is rendered outside the\n // InternalHeader so it appears at the inline-end of the wrapper, past any header actions.\n // Other variants render the icon at the end of the headerButton itself.\n const renderIconOutsideHeader = iconAtEnd && (isContainer || !!actions);\n\n // If interactive elements are present, constrain the clickable area to only the icon and the header text\n // to prevent nesting interactive elements.\n const headerButtonListeners = restrictClickableArea ? listeners : undefined;\n // For the default and footer variants with description,\n // include also the immediate wrapper around it to include the entire row for backwards compatibility,\n // but exclude the description.\n const headingTagListeners = !headerButtonListeners && !isContainer && description ? listeners : undefined;\n // For all other cases, make the entire header clickable for backwards compatibility.\n const wrapperListeners = !headerButtonListeners && !headingTagListeners ? listeners : undefined;\n\n // The hover-motion trigger follows whichever element actually owns the click handler above —\n // that element is the real interactive surface, so it's also the sane hover boundary for the caret.\n const motionTriggerAttribute = { 'data-awsui-motion-trigger': 'hover' } as const;\n const headerButtonMotionTrigger = headerButtonListeners ? motionTriggerAttribute : undefined;\n const headingTagMotionTrigger = headingTagListeners ? motionTriggerAttribute : undefined;\n const wrapperMotionTrigger = wrapperListeners ? motionTriggerAttribute : undefined;\n\n // Standalone caret button — used when the icon is rendered OUTSIDE the headerButton\n // (end-position with container or actions). Must be its own <button> for accessibility.\n const expandButton = (\n <ExpandIconButton\n icon={icon}\n ariaLabel={ariaLabel}\n ariaLabelledBy={!ariaLabel ? id : undefined}\n ariaControls={ariaControls}\n expanded={expanded}\n onClick={onClick}\n stopPropagation={true}\n className={clsx(styles[`icon-container-${variant}`], styles['icon-container-end'])}\n />\n );\n\n // Decorative inline icon — used when the caret is INSIDE the headerButton\n // (which itself is the interactive element). A nested <button> would be illegal.\n const expandIcon = (\n <span\n className={clsx(\n styles['icon-container'],\n styles[`icon-container-${variant}`],\n iconAtEnd && styles['icon-container-end']\n )}\n >\n {icon}\n </span>\n );\n\n const outsideIcon = renderIconOutsideHeader ? expandButton : null;\n\n const textElement = (\n <span id={id} className={clsx(styles['header-text'], analyticsSelectors['header-label'])}>\n {children}\n </span>\n );\n const headerButton = (\n <span\n className={clsx(\n styles['expand-button'],\n isContainer ? styles['header-container-button'] : styles['header-button'],\n iconAtEnd && styles['header-button-icon-end'],\n headerButtonListeners && styles['click-target']\n )}\n role=\"button\"\n tabIndex={0}\n aria-label={ariaLabel}\n aria-labelledby={!ariaLabel && description ? id : undefined}\n aria-describedby={description ? descriptionId : undefined}\n aria-controls={ariaControls}\n aria-expanded={expanded}\n {...headerButtonListeners}\n {...headerButtonMotionTrigger}\n {...(headerButtonListeners ? getExpandActionAnalyticsMetadataAttribute(expanded) : {})}\n >\n {renderIconOutsideHeader ? (\n textElement\n ) : iconAtEnd ? (\n <>\n {textElement}\n {expandIcon}\n </>\n ) : (\n <>\n {expandIcon}\n {textElement}\n </>\n )}\n </span>\n );\n\n return (\n <div\n className={clsx(className, wrapperListeners && styles['click-target'], iconAtEnd && styles['header-icon-end'])}\n {...wrapperListeners}\n {...wrapperMotionTrigger}\n {...(wrapperListeners ? getExpandActionAnalyticsMetadataAttribute(expanded) : {})}\n >\n {isContainer ? (\n <>\n <InternalHeader\n variant=\"h2\"\n description={description}\n counter={headerCounter}\n info={headerInfo}\n actions={actions}\n headingTagOverride={headingTagOverride}\n __inExpandableSection={true}\n >\n {headerButton}\n </InternalHeader>\n {outsideIcon}\n </>\n ) : (\n <>\n <div className={clsx(styles['header-content'], actions && styles['header-actions-wrapper'])}>\n <HeadingTag\n className={clsx(styles['header-wrapper'], headingTagListeners && styles['click-target'])}\n {...headingTagListeners}\n {...headingTagMotionTrigger}\n {...(headingTagListeners ? getExpandActionAnalyticsMetadataAttribute(expanded) : {})}\n >\n {headerButton}\n </HeadingTag>\n {actions}\n </div>\n {description && <HeaderDescription variantOverride=\"h3\">{description}</HeaderDescription>}\n {outsideIcon}\n </>\n )}\n </div>\n );\n};\n\nexport const ExpandableSectionHeader = ({\n id,\n descriptionId,\n className,\n variant,\n header,\n headerText,\n headerDescription,\n headerCounter,\n headerInfo,\n headerActions,\n headingTagOverride,\n expanded,\n ariaControls,\n ariaLabel,\n ariaLabelledBy,\n onKeyUp,\n onKeyDown,\n onClick,\n expandIconPosition,\n hideExpandIcon,\n}: ExpandableSectionHeaderProps) => {\n const alwaysShowDivider = variantRequiresActionsDivider(variant) && headerActions;\n const icon = (\n <InternalIcon\n size={isThemeActive(Theme.OneTheme) ? 'x-small' : variant === 'container' ? 'medium' : 'normal'}\n className={clsx(styles.icon, expanded && styles.expanded)}\n name={isThemeActive(Theme.OneTheme) ? 'angle-down' : 'caret-down-filled'}\n nativeAttributes={{ 'data-awsui-motion-target': '' }}\n />\n );\n const defaultHeaderProps = {\n id: id,\n icon: icon,\n expanded: expanded,\n ariaControls: ariaControls,\n ariaLabel: ariaLabel,\n onClick: onClick,\n variant,\n expandIconPosition,\n };\n\n if ((headerCounter || headerInfo) && !variantSupportsInfoLink(variant) && isDevelopment) {\n warnOnce(\n componentName,\n 'The `headerCounter` and `headerInfo` props are only supported for the \"container\" variant.'\n );\n }\n\n if (headerActions && !variantSupportsActions(variant) && isDevelopment) {\n warnOnce(componentName, `The \\`headerActions\\` prop is only supported for the \"container\" and \"default\" variants.`);\n }\n\n if (headerDescription && !variantSupportsDescription(variant) && isDevelopment) {\n warnOnce(componentName, `The \\`headerDescription\\` prop is not supported for the ${variant} variant.`);\n }\n\n const wrapperClassName = clsx(\n styles.wrapper,\n styles[`wrapper-${variant}`],\n (expanded || alwaysShowDivider) && styles['wrapper-expanded']\n );\n if (variant === 'navigation') {\n return (\n <ExpandableNavigationHeader\n className={clsx(className, wrapperClassName)}\n ariaLabelledBy={ariaLabelledBy}\n hideExpandIcon={hideExpandIcon}\n {...defaultHeaderProps}\n >\n <span className={styles['header-navigation-content']}>{headerText ?? header}</span>\n </ExpandableNavigationHeader>\n );\n }\n\n if (headerText || variant === 'inline') {\n if (!headerText && header && variant === 'inline') {\n warnOnce(componentName, 'Only `headerText` instead of `header` is supported for `inline` variant.');\n }\n return (\n <ExpandableHeaderTextWrapper\n className={clsx(\n className,\n wrapperClassName,\n expanded && styles.expanded,\n !expanded && (!headerActions || headerDescription) && styles['wrapper-not-expanded-without-actions']\n )}\n descriptionId={descriptionId}\n headerDescription={headerDescription}\n headerCounter={headerCounter}\n headerInfo={headerInfo}\n headerActions={headerActions}\n headingTagOverride={headingTagOverride}\n onKeyUp={onKeyUp}\n onKeyDown={onKeyDown}\n {...defaultHeaderProps}\n >\n {headerText}\n </ExpandableHeaderTextWrapper>\n );\n }\n\n if (variant === 'container' && header && isDevelopment) {\n warnOnce(componentName, 'Use `headerText` instead of `header` to provide the button within the heading for a11y.');\n }\n\n return (\n <ExpandableDeprecatedHeader\n className={clsx(className, wrapperClassName, styles.focusable, expanded && styles.expanded)}\n onKeyUp={onKeyUp}\n onKeyDown={onKeyDown}\n {...defaultHeaderProps}\n >\n {header}\n </ExpandableDeprecatedHeader>\n );\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"collapsible-flashbar.d.ts","sourceRoot":"","sources":["../../../src/flashbar/collapsible-flashbar.tsx"],"names":[],"mappings":"AA+BA,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAqB9D,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,SAAS,EAAE,EAAE,qBAAqB,eA2VhG"}
1
+ {"version":3,"file":"collapsible-flashbar.d.ts","sourceRoot":"","sources":["../../../src/flashbar/collapsible-flashbar.tsx"],"names":[],"mappings":"AA+BA,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAqB9D,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,SAAS,EAAE,EAAE,qBAAqB,eAkWhG"}
@@ -214,7 +214,7 @@ export default function CollapsibleFlashbar({ items, style, ...restProps }) {
214
214
  return (React.createElement("div", { ...baseProps, className: clsx(baseProps.className, styles.flashbar, styles.stack, isCollapsible && styles.collapsible, visibleItems.length === 2 && styles['short-list'], isFlashbarStackExpanded && styles.expanded, isVisualRefresh && styles['visual-refresh']), ref: mergedRef, ...getAnalyticsMetadataAttribute(getComponentsAnalyticsMetadata(visibleItems.length, true, isFlashbarStackExpanded)) },
215
215
  isFlashbarStackExpanded && renderList(),
216
216
  isCollapsible && (React.createElement("div", { className: clsx(styles['notification-bar'], isVisualRefresh && styles['visual-refresh'], isFlashbarStackExpanded ? styles.expanded : styles.collapsed, transitioning && styles['animation-running'], visibleItems.length === 2 && styles['short-list'], getVisualContextClassname('flashbar') // Visual context is needed for focus ring to be white
217
- ), onClick: toggleCollapseExpand, ref: notificationBarRef, style: getNotificationBarStyles(style), ...getAnalyticsMetadataAttribute({
217
+ ), onClick: toggleCollapseExpand, ref: notificationBarRef, style: getNotificationBarStyles(style), "data-awsui-motion-trigger": "hover", ...getAnalyticsMetadataAttribute({
218
218
  action: !isFlashbarStackExpanded ? 'expand' : 'collapse',
219
219
  detail: {
220
220
  label: 'h2',
@@ -227,8 +227,8 @@ export default function CollapsibleFlashbar({ items, style, ...restProps }) {
227
227
  notificationBarText,
228
228
  ...counterTypes.flatMap(({ type, labelName }) => [iconAriaLabels[labelName], `${countByType[type]}`]),
229
229
  ] }),
230
- React.createElement("button", { "aria-controls": flashbarElementId, "aria-describedby": itemCountElementId, "aria-expanded": isFlashbarStackExpanded, "aria-label": notificationBarAriaLabel, className: clsx(styles.button, isFlashbarStackExpanded && styles.expanded) },
231
- React.createElement(InternalIcon, { className: styles.icon, size: "normal", name: "angle-down" })))),
230
+ React.createElement("button", { "aria-controls": flashbarElementId, "aria-describedby": itemCountElementId, "aria-expanded": isFlashbarStackExpanded, "aria-label": notificationBarAriaLabel, className: clsx(styles.button, isFlashbarStackExpanded && styles.expanded), "data-awsui-motion-trigger": "focus" },
231
+ React.createElement(InternalIcon, { className: styles.icon, size: "normal", name: "angle-down", nativeAttributes: { 'data-awsui-motion-target': '' } })))),
232
232
  !isFlashbarStackExpanded && renderList()));
233
233
  }
234
234
  const NotificationTypeCount = ({ iconName, label, count, }) => {