@cloudscape-design/components-themeable 3.0.1191 → 3.0.1193

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 (123) hide show
  1. package/lib/internal/manifest.json +1 -1
  2. package/lib/internal/scss/button-dropdown/category-elements/styles.scss +14 -0
  3. package/lib/internal/scss/button-dropdown/item-element/styles.scss +15 -0
  4. package/lib/internal/scss/internal/generated/custom-css-properties/index.scss +1 -1
  5. package/lib/internal/scss/tooltip/test-classes/styles.scss +8 -0
  6. package/lib/internal/template/app-layout/visual-refresh-toolbar/toolbar/trigger-button/index.js +2 -2
  7. package/lib/internal/template/app-layout/visual-refresh-toolbar/toolbar/trigger-button/index.js.map +1 -1
  8. package/lib/internal/template/breadcrumb-group/item/item.js +2 -2
  9. package/lib/internal/template/breadcrumb-group/item/item.js.map +1 -1
  10. package/lib/internal/template/button/internal.d.ts.map +1 -1
  11. package/lib/internal/template/button/internal.js +2 -2
  12. package/lib/internal/template/button/internal.js.map +1 -1
  13. package/lib/internal/template/button-dropdown/category-elements/category-element.d.ts +1 -1
  14. package/lib/internal/template/button-dropdown/category-elements/category-element.d.ts.map +1 -1
  15. package/lib/internal/template/button-dropdown/category-elements/category-element.js +21 -7
  16. package/lib/internal/template/button-dropdown/category-elements/category-element.js.map +1 -1
  17. package/lib/internal/template/button-dropdown/category-elements/expandable-category-element.d.ts +1 -1
  18. package/lib/internal/template/button-dropdown/category-elements/expandable-category-element.d.ts.map +1 -1
  19. package/lib/internal/template/button-dropdown/category-elements/expandable-category-element.js +16 -4
  20. package/lib/internal/template/button-dropdown/category-elements/expandable-category-element.js.map +1 -1
  21. package/lib/internal/template/button-dropdown/category-elements/mobile-expandable-category-element.d.ts +1 -1
  22. package/lib/internal/template/button-dropdown/category-elements/mobile-expandable-category-element.d.ts.map +1 -1
  23. package/lib/internal/template/button-dropdown/category-elements/mobile-expandable-category-element.js +16 -4
  24. package/lib/internal/template/button-dropdown/category-elements/mobile-expandable-category-element.js.map +1 -1
  25. package/lib/internal/template/button-dropdown/category-elements/styles.css.js +18 -17
  26. package/lib/internal/template/button-dropdown/category-elements/styles.scoped.css +37 -26
  27. package/lib/internal/template/button-dropdown/category-elements/styles.selectors.js +18 -17
  28. package/lib/internal/template/button-dropdown/index.d.ts.map +1 -1
  29. package/lib/internal/template/button-dropdown/index.js +2 -2
  30. package/lib/internal/template/button-dropdown/index.js.map +1 -1
  31. package/lib/internal/template/button-dropdown/interfaces.d.ts +81 -1
  32. package/lib/internal/template/button-dropdown/interfaces.d.ts.map +1 -1
  33. package/lib/internal/template/button-dropdown/interfaces.js.map +1 -1
  34. package/lib/internal/template/button-dropdown/internal.d.ts.map +1 -1
  35. package/lib/internal/template/button-dropdown/internal.js +2 -2
  36. package/lib/internal/template/button-dropdown/internal.js.map +1 -1
  37. package/lib/internal/template/button-dropdown/item-element/index.d.ts +1 -1
  38. package/lib/internal/template/button-dropdown/item-element/index.d.ts.map +1 -1
  39. package/lib/internal/template/button-dropdown/item-element/index.js +33 -7
  40. package/lib/internal/template/button-dropdown/item-element/index.js.map +1 -1
  41. package/lib/internal/template/button-dropdown/item-element/styles.css.js +21 -20
  42. package/lib/internal/template/button-dropdown/item-element/styles.scoped.css +44 -31
  43. package/lib/internal/template/button-dropdown/item-element/styles.selectors.js +21 -20
  44. package/lib/internal/template/button-dropdown/items-list.d.ts +1 -1
  45. package/lib/internal/template/button-dropdown/items-list.d.ts.map +1 -1
  46. package/lib/internal/template/button-dropdown/items-list.js +4 -4
  47. package/lib/internal/template/button-dropdown/items-list.js.map +1 -1
  48. package/lib/internal/template/button-group/file-input-item.d.ts.map +1 -1
  49. package/lib/internal/template/button-group/file-input-item.js +3 -4
  50. package/lib/internal/template/button-group/file-input-item.js.map +1 -1
  51. package/lib/internal/template/button-group/icon-button-item.d.ts.map +1 -1
  52. package/lib/internal/template/button-group/icon-button-item.js +3 -3
  53. package/lib/internal/template/button-group/icon-button-item.js.map +1 -1
  54. package/lib/internal/template/button-group/icon-toggle-button-item.d.ts.map +1 -1
  55. package/lib/internal/template/button-group/icon-toggle-button-item.js +2 -2
  56. package/lib/internal/template/button-group/icon-toggle-button-item.js.map +1 -1
  57. package/lib/internal/template/button-group/menu-dropdown-item.d.ts.map +1 -1
  58. package/lib/internal/template/button-group/menu-dropdown-item.js +2 -2
  59. package/lib/internal/template/button-group/menu-dropdown-item.js.map +1 -1
  60. package/lib/internal/template/calendar/grid/index.js +2 -2
  61. package/lib/internal/template/calendar/grid/index.js.map +1 -1
  62. package/lib/internal/template/date-range-picker/calendar/grids/grid-cell.js +2 -2
  63. package/lib/internal/template/date-range-picker/calendar/grids/grid-cell.js.map +1 -1
  64. package/lib/internal/template/file-token-group/file-token.d.ts.map +1 -1
  65. package/lib/internal/template/file-token-group/file-token.js +2 -2
  66. package/lib/internal/template/file-token-group/file-token.js.map +1 -1
  67. package/lib/internal/template/index.d.ts +1 -0
  68. package/lib/internal/template/index.d.ts.map +1 -1
  69. package/lib/internal/template/index.js +1 -0
  70. package/lib/internal/template/index.js.map +1 -1
  71. package/lib/internal/template/internal/base-component/styles.scoped.css +1 -1
  72. package/lib/internal/template/internal/components/tooltip/index.d.ts +5 -0
  73. package/lib/internal/template/internal/components/tooltip/index.d.ts.map +1 -1
  74. package/lib/internal/template/internal/components/tooltip/index.js +2 -1
  75. package/lib/internal/template/internal/components/tooltip/index.js.map +1 -1
  76. package/lib/internal/template/internal/environment.js +2 -2
  77. package/lib/internal/template/internal/environment.json +2 -2
  78. package/lib/internal/template/package.json +1 -0
  79. package/lib/internal/template/segmented-control/segment.js +2 -2
  80. package/lib/internal/template/segmented-control/segment.js.map +1 -1
  81. package/lib/internal/template/select/parts/item.d.ts +1 -1
  82. package/lib/internal/template/select/parts/item.d.ts.map +1 -1
  83. package/lib/internal/template/select/parts/item.js +2 -2
  84. package/lib/internal/template/select/parts/item.js.map +1 -1
  85. package/lib/internal/template/select/parts/multiselect-item.d.ts.map +1 -1
  86. package/lib/internal/template/select/parts/multiselect-item.js +2 -2
  87. package/lib/internal/template/select/parts/multiselect-item.js.map +1 -1
  88. package/lib/internal/template/slider/internal.d.ts.map +1 -1
  89. package/lib/internal/template/slider/internal.js +2 -2
  90. package/lib/internal/template/slider/internal.js.map +1 -1
  91. package/lib/internal/template/tabs/tab-header-bar.js +2 -2
  92. package/lib/internal/template/tabs/tab-header-bar.js.map +1 -1
  93. package/lib/internal/template/test-utils/dom/index.d.ts +20 -0
  94. package/lib/internal/template/test-utils/dom/index.js +15 -1
  95. package/lib/internal/template/test-utils/dom/index.js.map +1 -1
  96. package/lib/internal/template/test-utils/dom/tooltip/index.d.ts +9 -0
  97. package/lib/internal/template/test-utils/dom/tooltip/index.js +19 -0
  98. package/lib/internal/template/test-utils/dom/tooltip/index.js.map +1 -0
  99. package/lib/internal/template/test-utils/selectors/index.d.ts +18 -0
  100. package/lib/internal/template/test-utils/selectors/index.js +15 -1
  101. package/lib/internal/template/test-utils/selectors/index.js.map +1 -1
  102. package/lib/internal/template/test-utils/selectors/tooltip/index.d.ts +9 -0
  103. package/lib/internal/template/test-utils/selectors/tooltip/index.js +19 -0
  104. package/lib/internal/template/test-utils/selectors/tooltip/index.js.map +1 -0
  105. package/lib/internal/template/token/internal.d.ts.map +1 -1
  106. package/lib/internal/template/token/internal.js +3 -3
  107. package/lib/internal/template/token/internal.js.map +1 -1
  108. package/lib/internal/template/tooltip/index.d.ts +7 -0
  109. package/lib/internal/template/tooltip/index.d.ts.map +1 -0
  110. package/lib/internal/template/tooltip/index.js +20 -0
  111. package/lib/internal/template/tooltip/index.js.map +1 -0
  112. package/lib/internal/template/tooltip/interfaces.d.ts +38 -0
  113. package/lib/internal/template/tooltip/interfaces.d.ts.map +1 -0
  114. package/lib/internal/template/tooltip/interfaces.js +2 -0
  115. package/lib/internal/template/tooltip/interfaces.js.map +1 -0
  116. package/lib/internal/template/tooltip/internal.d.ts +6 -0
  117. package/lib/internal/template/tooltip/internal.d.ts.map +1 -0
  118. package/lib/internal/template/tooltip/internal.js +45 -0
  119. package/lib/internal/template/tooltip/internal.js.map +1 -0
  120. package/lib/internal/template/tooltip/test-classes/styles.css.js +6 -0
  121. package/lib/internal/template/tooltip/test-classes/styles.scoped.css +7 -0
  122. package/lib/internal/template/tooltip/test-classes/styles.selectors.js +7 -0
  123. 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 { getAnalyticsMetadataAttribute } from '@cloudscape-design/component-toolkit/internal/analytics-metadata';\n\nimport InternalIcon from '../../icon/internal';\nimport Dropdown from '../../internal/components/dropdown';\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 { CategoryProps } from '../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 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}: 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) {\n triggerRef.current.focus();\n }\n }, [expanded, highlighted]);\n\n const onClick: React.MouseEventHandler = event => {\n if (!disabled) {\n event.preventDefault();\n onGroupToggle(item, event);\n triggerRef.current?.focus();\n }\n };\n\n const onHover = () => {\n highlightItem(item);\n };\n\n const isVisualRefresh = useVisualRefresh();\n\n const isDisabledWithReason = !!item.disabledReason && item.disabled;\n const { targetProps, descriptionEl } = useHiddenDescription(item.disabledReason);\n const trigger = item.text && (\n <span\n className={clsx(styles.header, styles['expandable-header'], styles[`variant-${variant}`], {\n [styles.disabled]: disabled,\n [styles.highlighted]: highlighted,\n [styles['is-focused']]: isKeyboardHighlighted,\n [styles['visual-refresh']]: isVisualRefresh,\n })}\n // We are using the roving tabindex technique to manage the focus state of the dropdown.\n // The current element will always have tabindex=0 which means that it can be tabbed to,\n // while all other items have tabindex=-1 so we can focus them when necessary.\n tabIndex={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 {(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 {item.text}\n <span className={clsx(styles['expand-icon'], styles['expand-icon-right'])}>\n <InternalIcon name=\"caret-down-filled\" />\n </span>\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 stretchWidth={false}\n interior={true}\n expandToViewport={expandToViewport}\n trigger={trigger}\n >\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 />\n </ul>\n )}\n </Dropdown>\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 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":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AACjD,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,6BAA6B,EAAE,MAAM,kEAAkE,CAAC;AAEjH,OAAO,YAAY,MAAM,qBAAqB,CAAC;AAC/C,OAAO,QAAQ,MAAM,oCAAoC,CAAC;AAC1D,OAAO,oBAAoB,MAAM,6CAA6C,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAMxE,OAAO,SAAS,MAAM,eAAe,CAAC;AACtC,OAAO,OAAO,MAAM,eAAe,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,MAAM,MAAM,iBAAiB,CAAC;AAErC,MAAM,yBAAyB,GAAG,CAAC,EACjC,KAAK,EACL,IAAI,EACJ,cAAc,EACd,aAAa,EACb,UAAU,EACV,aAAa,EACb,mBAAmB,EACnB,UAAU,EACV,cAAc,EACd,aAAa,EACb,QAAQ,EACR,gBAAgB,EAChB,OAAO,EACP,QAAQ,EACR,UAAU,GACI,EAAE,EAAE;;IAClB,MAAM,WAAW,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,qBAAqB,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;IACxD,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAkB,IAAI,CAAC,CAAC;IACvD,MAAM,GAAG,GAAG,MAAM,CAAgB,IAAI,CAAC,CAAC;IAExC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,UAAU,CAAC,OAAO,IAAI,WAAW,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnD,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAC7B,CAAC;IACH,CAAC,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC;IAE5B,MAAM,OAAO,GAA4B,KAAK,CAAC,EAAE;;QAC/C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAC3B,MAAA,UAAU,CAAC,OAAO,0CAAE,KAAK,EAAE,CAAC;QAC9B,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,aAAa,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC,CAAC;IAEF,MAAM,eAAe,GAAG,gBAAgB,EAAE,CAAC;IAE3C,MAAM,oBAAoB,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,QAAQ,CAAC;IACpE,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAEjF,MAAM,UAAU,GAAwC;QACtD,KAAK,EAAE,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,CAAC;QACjB,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,IAAqC;QAC7C,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,WAAW,EAAE,CAAC,CAAC,WAAW;QAC1B,QAAQ,EAAE,QAAQ;QAClB,eAAe,EAAE,YAAY;KAC9B,CAAC;IACF,MAAM,YAAY,GAAG,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAG,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,mCAAI,IAAI,CAAC;IAEhE,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,IAAI,CAC3B,8BACE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC,WAAW,OAAO,EAAE,CAAC,EAAE;YACxF,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,QAAQ;YAC3B,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,WAAW;YACjC,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,YAAY;YAC9C,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,qBAAqB;YAC7C,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,EAAE,eAAe;SAC5C,CAAC;QACF,wFAAwF;QACxF,wFAAwF;QACxF,8EAA8E;QAC9E,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAC9B,GAAG,EAAE,UAAU,KACX,gBAAgB,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,KACtD,CAAC,oBAAoB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,KACzC,6BAA6B,CAC/B,QAAQ;YACN,CAAC,CAAC,EAAE;YACJ,CAAC,CAAE;gBACC,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU;gBACzC,MAAM,EAAE;oBACN,QAAQ,EAAE,QAAQ,IAAI,GAAG;oBACzB,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;oBACvB,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE;iBAClB;aACoG,CAC5G,IAEA,YAAY,CAAC,CAAC,CAAC,CACd,YAAY,CACb,CAAC,CAAC,CAAC,CACF;QACG,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAClD,8BAAM,SAAS,EAAE,MAAM,CAAC,cAAc,CAAC;YACrC,oBAAC,YAAY,IAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,GAAI,CACzF,CACR;QACA,IAAI,CAAC,IAAI;QACV,8BAAM,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC,mBAAmB,CAAC,CAAC;YACvE,oBAAC,YAAY,IAAC,IAAI,EAAC,mBAAmB,GAAG,CACpC,CACN,CACJ,CACI,CACR,CAAC;IAEF,IAAI,OAAwB,CAAC;IAC7B,oEAAoE;IACpE,oDAAoD;IACpD,IAAI,oBAAoB,EAAE,CAAC;QACzB,OAAO,GAAG,CACR,oBAAC,OAAO,IAAC,OAAO,EAAE,IAAI,CAAC,cAAc;YAClC,OAAO;YACP,aAAa,CACN,CACX,CAAC;IACJ,CAAC;SAAM,IAAI,QAAQ,EAAE,CAAC;QACpB,OAAO,GAAG,OAAO,CAAC;IACpB,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,CACR,oBAAC,QAAQ,IACP,IAAI,EAAE,QAAQ,EACd,YAAY,EAAE,KAAK,EACnB,QAAQ,EAAE,IAAI,EACd,gBAAgB,EAAE,gBAAgB,EAClC,OAAO,EAAE,OAAO,IAEf,IAAI,CAAC,KAAK,IAAI,QAAQ,IAAI,CACzB,4BACE,IAAI,EAAC,MAAM,gBACC,IAAI,CAAC,IAAI,EACrB,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;YAEtE,oBAAC,SAAS,IACR,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,cAAc,EAAE,cAAc,EAC9B,aAAa,EAAE,aAAa,EAC5B,UAAU,EAAE,UAAU,EACtB,aAAa,EAAE,aAAa,EAC5B,mBAAmB,EAAE,mBAAmB,EACxC,UAAU,EAAE,UAAU,EACtB,cAAc,EAAE,cAAc,EAC9B,aAAa,EAAE,aAAa,EAC5B,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE,UAAU,GACvB,CACC,CACN,CACQ,CACZ,CAAC;IACJ,CAAC;IAED,OAAO,CACL,4BACE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,WAAW,OAAO,EAAE,CAAC,EAAE,MAAM,CAAC,UAAU,EAAE;YAChF,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,QAAQ;YAC3B,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,QAAQ;YAC3B,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,WAAW;SAClC,CAAC,EACF,IAAI,EAAC,cAAc,iBACN,IAAI,CAAC,EAAE,EACpB,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,OAAO,EACrB,YAAY,EAAE,OAAO,IAEpB,OAAO,CACL,CACN,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,yBAAyB,CAAC","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 { getAnalyticsMetadataAttribute } from '@cloudscape-design/component-toolkit/internal/analytics-metadata';\n\nimport InternalIcon from '../../icon/internal';\nimport Dropdown from '../../internal/components/dropdown';\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, CategoryProps } from '../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}: 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) {\n triggerRef.current.focus();\n }\n }, [expanded, highlighted]);\n\n const onClick: React.MouseEventHandler = event => {\n if (!disabled) {\n event.preventDefault();\n onGroupToggle(item, event);\n triggerRef.current?.focus();\n }\n };\n\n const onHover = () => {\n highlightItem(item);\n };\n\n const isVisualRefresh = useVisualRefresh();\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 }) ?? null;\n\n const trigger = item.text && (\n <span\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 // We are using the roving tabindex technique to manage the focus state of the dropdown.\n // The current element will always have tabindex=0 which means that it can be tabbed to,\n // while all other items have tabindex=-1 so we can focus them when necessary.\n tabIndex={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 {item.text}\n <span className={clsx(styles['expand-icon'], styles['expand-icon-right'])}>\n <InternalIcon name=\"caret-down-filled\" />\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 stretchWidth={false}\n interior={true}\n expandToViewport={expandToViewport}\n trigger={trigger}\n >\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 />\n </ul>\n )}\n </Dropdown>\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 onMouseEnter={onHover}\n onTouchStart={onHover}\n >\n {content}\n </li>\n );\n};\n\nexport default ExpandableCategoryElement;\n"]}
@@ -1,4 +1,4 @@
1
1
  import { CategoryProps } from '../interfaces';
2
- declare const MobileExpandableCategoryElement: ({ item, onItemActivate, onGroupToggle, targetItem, isHighlighted, isKeyboardHighlight, isExpanded, lastInDropdown, highlightItem, disabled, variant, position, }: CategoryProps) => JSX.Element;
2
+ declare const MobileExpandableCategoryElement: ({ index, item, onItemActivate, onGroupToggle, targetItem, isHighlighted, isKeyboardHighlight, isExpanded, lastInDropdown, highlightItem, disabled, variant, position, renderItem, }: CategoryProps) => JSX.Element;
3
3
  export default MobileExpandableCategoryElement;
4
4
  //# sourceMappingURL=mobile-expandable-category-element.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mobile-expandable-category-element.d.ts","sourceRoot":"","sources":["../../../../src/button-dropdown/category-elements/mobile-expandable-category-element.tsx"],"names":[],"mappings":"AAUA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAQ9C,QAAA,MAAM,+BAA+B,GAAI,kKAatC,aAAa,gBA2Hf,CAAC;AAEF,eAAe,+BAA+B,CAAC"}
1
+ {"version":3,"file":"mobile-expandable-category-element.d.ts","sourceRoot":"","sources":["../../../../src/button-dropdown/category-elements/mobile-expandable-category-element.tsx"],"names":[],"mappings":"AAUA,OAAO,EAAuB,aAAa,EAAE,MAAM,eAAe,CAAC;AAQnE,QAAA,MAAM,+BAA+B,GAAI,qLAetC,aAAa,gBAgJf,CAAC;AAEF,eAAe,+BAA+B,CAAC"}
@@ -10,7 +10,8 @@ import MobileExpandableGroup from '../mobile-expandable-group/mobile-expandable-
10
10
  import Tooltip from '../tooltip.js';
11
11
  import { getMenuItemProps } from '../utils/menu-item.js';
12
12
  import styles from './styles.css.js';
13
- const MobileExpandableCategoryElement = ({ item, onItemActivate, onGroupToggle, targetItem, isHighlighted, isKeyboardHighlight, isExpanded, lastInDropdown, highlightItem, disabled, variant, position, }) => {
13
+ const MobileExpandableCategoryElement = ({ index, item, onItemActivate, onGroupToggle, targetItem, isHighlighted, isKeyboardHighlight, isExpanded, lastInDropdown, highlightItem, disabled, variant, position, renderItem, }) => {
14
+ var _a;
14
15
  const highlighted = isHighlighted(item);
15
16
  const expanded = isExpanded(item);
16
17
  const isKeyboardHighlighted = isKeyboardHighlight(item);
@@ -31,9 +32,20 @@ const MobileExpandableCategoryElement = ({ item, onItemActivate, onGroupToggle,
31
32
  };
32
33
  const isDisabledWithReason = !!item.disabledReason && item.disabled;
33
34
  const { targetProps, descriptionEl } = useHiddenDescription(item.disabledReason);
35
+ const groupProps = {
36
+ index: index !== null && index !== void 0 ? index : 0,
37
+ type: 'group',
38
+ option: item,
39
+ disabled: !!disabled,
40
+ highlighted: !!highlighted,
41
+ expanded: expanded,
42
+ expandDirection: 'vertical',
43
+ };
44
+ const renderResult = (_a = renderItem === null || renderItem === void 0 ? void 0 : renderItem({ item: groupProps })) !== null && _a !== void 0 ? _a : null;
34
45
  const trigger = item.text && (React.createElement("span", { className: clsx(styles.header, styles['expandable-header'], styles[`variant-${variant}`], {
35
46
  [styles.highlighted]: highlighted,
36
47
  [styles['rolled-down']]: expanded,
48
+ [styles['no-content-styling']]: !!renderResult,
37
49
  [styles.disabled]: disabled,
38
50
  [styles['is-focused']]: isKeyboardHighlighted,
39
51
  }),
@@ -50,14 +62,14 @@ const MobileExpandableCategoryElement = ({ item, onItemActivate, onGroupToggle,
50
62
  id: item.id || '',
51
63
  expanded: `${!expanded}`,
52
64
  },
53
- }) },
65
+ }) }, renderResult ? (renderResult) : (React.createElement(React.Fragment, null,
54
66
  (item.iconName || item.iconUrl || item.iconSvg) && (React.createElement("span", { className: styles['icon-wrapper'] },
55
67
  React.createElement(InternalIcon, { name: item.iconName, url: item.iconUrl, svg: item.iconSvg, alt: item.iconAlt }))),
56
68
  item.text,
57
69
  React.createElement("span", { className: clsx(styles['expand-icon'], {
58
70
  [styles['expand-icon-up']]: expanded,
59
71
  }) },
60
- React.createElement(InternalIcon, { name: "caret-down-filled" }))));
72
+ React.createElement(InternalIcon, { name: "caret-down-filled" }))))));
61
73
  let content;
62
74
  if (isDisabledWithReason) {
63
75
  content = (React.createElement(React.Fragment, null,
@@ -69,7 +81,7 @@ const MobileExpandableCategoryElement = ({ item, onItemActivate, onGroupToggle,
69
81
  }
70
82
  else {
71
83
  content = (React.createElement(MobileExpandableGroup, { open: expanded, trigger: trigger }, item.items && expanded && (React.createElement("ul", { role: "menu", "aria-label": item.text, className: styles['items-list-container'] },
72
- React.createElement(ItemsList, { items: item.items, onItemActivate: onItemActivate, onGroupToggle: onGroupToggle, targetItem: targetItem, isHighlighted: isHighlighted, isKeyboardHighlight: isKeyboardHighlight, isExpanded: isExpanded, lastInDropdown: lastInDropdown, highlightItem: highlightItem, hasCategoryHeader: true, variant: variant, position: position })))));
84
+ React.createElement(ItemsList, { items: item.items, onItemActivate: onItemActivate, onGroupToggle: onGroupToggle, targetItem: targetItem, isHighlighted: isHighlighted, isKeyboardHighlight: isKeyboardHighlight, isExpanded: isExpanded, lastInDropdown: lastInDropdown, highlightItem: highlightItem, hasCategoryHeader: true, variant: variant, position: position, renderItem: renderItem, parentProps: groupProps })))));
73
85
  }
74
86
  return (React.createElement("li", { className: clsx(styles.category, styles[`variant-${variant}`], styles.expandable, {
75
87
  [styles.expanded]: expanded,
@@ -1 +1 @@
1
- {"version":3,"file":"mobile-expandable-category-element.js","sourceRoot":"","sources":["../../../../src/button-dropdown/category-elements/mobile-expandable-category-element.tsx"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACzC,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,6BAA6B,EAAE,MAAM,kEAAkE,CAAC;AAEjH,OAAO,YAAY,MAAM,qBAAqB,CAAC;AAC/C,OAAO,oBAAoB,MAAM,6CAA6C,CAAC;AAG/E,OAAO,SAAS,MAAM,eAAe,CAAC;AACtC,OAAO,qBAAqB,MAAM,oDAAoD,CAAC;AACvF,OAAO,OAAO,MAAM,eAAe,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,MAAM,MAAM,iBAAiB,CAAC;AAErC,MAAM,+BAA+B,GAAG,CAAC,EACvC,IAAI,EACJ,cAAc,EACd,aAAa,EACb,UAAU,EACV,aAAa,EACb,mBAAmB,EACnB,UAAU,EACV,cAAc,EACd,aAAa,EACb,QAAQ,EACR,OAAO,EACP,QAAQ,GACM,EAAE,EAAE;IAClB,MAAM,WAAW,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,qBAAqB,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;IACxD,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAkB,IAAI,CAAC,CAAC;IAEvD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,UAAU,CAAC,OAAO,IAAI,WAAW,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnD,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAC7B,CAAC;IACH,CAAC,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC;IAE5B,MAAM,OAAO,GAAG,CAAC,CAAmB,EAAE,EAAE;QACtC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACzB,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,aAAa,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC,CAAC;IAEF,MAAM,oBAAoB,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,QAAQ,CAAC;IACpE,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACjF,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,IAAI,CAC3B,8BACE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC,WAAW,OAAO,EAAE,CAAC,EAAE;YACxF,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,WAAW;YACjC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,EAAE,QAAQ;YACjC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,QAAQ;YAC3B,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,qBAAqB;SAC9C,CAAC;QACF,wFAAwF;QACxF,wFAAwF;QACxF,8EAA8E;QAC9E,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAC9B,GAAG,EAAE,UAAU,KACX,gBAAgB,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,KACtD,CAAC,oBAAoB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,KACzC,6BAA6B,CAC/B,QAAQ;YACN,CAAC,CAAC,EAAE;YACJ,CAAC,CAAE;gBACC,MAAM,EAAE,QAAQ;gBAChB,MAAM,EAAE;oBACN,QAAQ,EAAE,QAAQ,IAAI,GAAG;oBACzB,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;oBACvB,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE;oBACjB,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE;iBACzB;aACiD,CACzD;QAEA,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAClD,8BAAM,SAAS,EAAE,MAAM,CAAC,cAAc,CAAC;YACrC,oBAAC,YAAY,IAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,GAAI,CACzF,CACR;QACA,IAAI,CAAC,IAAI;QACV,8BACE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE;gBACrC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,EAAE,QAAQ;aACrC,CAAC;YAEF,oBAAC,YAAY,IAAC,IAAI,EAAC,mBAAmB,GAAG,CACpC,CACF,CACR,CAAC;IAEF,IAAI,OAAwB,CAAC;IAE7B,IAAI,oBAAoB,EAAE,CAAC;QACzB,OAAO,GAAG,CACR;YACG,aAAa;YACd,oBAAC,OAAO,IAAC,OAAO,EAAE,IAAI,CAAC,cAAc,IAAG,OAAO,CAAW,CACzD,CACJ,CAAC;IACJ,CAAC;SAAM,IAAI,QAAQ,EAAE,CAAC;QACpB,OAAO,GAAG,OAAO,CAAC;IACpB,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,CACR,oBAAC,qBAAqB,IAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,IACpD,IAAI,CAAC,KAAK,IAAI,QAAQ,IAAI,CACzB,4BAAI,IAAI,EAAC,MAAM,gBAAa,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,sBAAsB,CAAC;YAC9E,oBAAC,SAAS,IACR,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,cAAc,EAAE,cAAc,EAC9B,aAAa,EAAE,aAAa,EAC5B,UAAU,EAAE,UAAU,EACtB,aAAa,EAAE,aAAa,EAC5B,mBAAmB,EAAE,mBAAmB,EACxC,UAAU,EAAE,UAAU,EACtB,cAAc,EAAE,cAAc,EAC9B,aAAa,EAAE,aAAa,EAC5B,iBAAiB,EAAE,IAAI,EACvB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,GAClB,CACC,CACN,CACqB,CACzB,CAAC;IACJ,CAAC;IAED,OAAO,CACL,4BACE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,WAAW,OAAO,EAAE,CAAC,EAAE,MAAM,CAAC,UAAU,EAAE;YAChF,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,QAAQ;YAC3B,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,QAAQ;YAC3B,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,WAAW,IAAI,QAAQ;YAC7C,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,IAAI;SAC1B,CAAC,EACF,IAAI,EAAC,cAAc,EACnB,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,OAAO,EACrB,YAAY,EAAE,OAAO,iBACR,IAAI,CAAC,EAAE,IAEnB,OAAO,CACL,CACN,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,+BAA+B,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useEffect } from 'react';\nimport clsx from 'clsx';\n\nimport { getAnalyticsMetadataAttribute } from '@cloudscape-design/component-toolkit/internal/analytics-metadata';\n\nimport InternalIcon from '../../icon/internal';\nimport useHiddenDescription from '../../internal/hooks/use-hidden-description';\nimport { GeneratedAnalyticsMetadataButtonDropdownExpand } from '../analytics-metadata/interfaces.js';\nimport { CategoryProps } from '../interfaces';\nimport ItemsList from '../items-list';\nimport MobileExpandableGroup from '../mobile-expandable-group/mobile-expandable-group';\nimport Tooltip from '../tooltip.js';\nimport { getMenuItemProps } from '../utils/menu-item.js';\n\nimport styles from './styles.css.js';\n\nconst MobileExpandableCategoryElement = ({\n item,\n onItemActivate,\n onGroupToggle,\n targetItem,\n isHighlighted,\n isKeyboardHighlight,\n isExpanded,\n lastInDropdown,\n highlightItem,\n disabled,\n variant,\n position,\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\n useEffect(() => {\n if (triggerRef.current && highlighted && !expanded) {\n triggerRef.current.focus();\n }\n }, [expanded, highlighted]);\n\n const onClick = (e: React.MouseEvent) => {\n if (!disabled) {\n e.preventDefault();\n onGroupToggle(item, e);\n }\n };\n\n const onHover = () => {\n highlightItem(item);\n };\n\n const isDisabledWithReason = !!item.disabledReason && item.disabled;\n const { targetProps, descriptionEl } = useHiddenDescription(item.disabledReason);\n const trigger = item.text && (\n <span\n className={clsx(styles.header, styles['expandable-header'], styles[`variant-${variant}`], {\n [styles.highlighted]: highlighted,\n [styles['rolled-down']]: expanded,\n [styles.disabled]: disabled,\n [styles['is-focused']]: isKeyboardHighlighted,\n })}\n // We are using the roving tabindex technique to manage the focus state of the dropdown.\n // The current element will always have tabindex=0 which means that it can be tabbed to,\n // while all other items have tabindex=-1 so we can focus them when necessary.\n tabIndex={highlighted ? 0 : -1}\n ref={triggerRef}\n {...getMenuItemProps({ parent: true, disabled, expanded })}\n {...(isDisabledWithReason ? targetProps : {})}\n {...getAnalyticsMetadataAttribute(\n disabled\n ? {}\n : ({\n action: 'expand',\n detail: {\n position: position || '0',\n label: { root: 'self' },\n id: item.id || '',\n expanded: `${!expanded}`,\n },\n } as GeneratedAnalyticsMetadataButtonDropdownExpand)\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 {item.text}\n <span\n className={clsx(styles['expand-icon'], {\n [styles['expand-icon-up']]: expanded,\n })}\n >\n <InternalIcon name=\"caret-down-filled\" />\n </span>\n </span>\n );\n\n let content: React.ReactNode;\n\n if (isDisabledWithReason) {\n content = (\n <>\n {descriptionEl}\n <Tooltip content={item.disabledReason}>{trigger}</Tooltip>\n </>\n );\n } else if (disabled) {\n content = trigger;\n } else {\n content = (\n <MobileExpandableGroup open={expanded} trigger={trigger}>\n {item.items && expanded && (\n <ul role=\"menu\" aria-label={item.text} className={styles['items-list-container']}>\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 hasCategoryHeader={true}\n variant={variant}\n position={position}\n />\n </ul>\n )}\n </MobileExpandableGroup>\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 || expanded,\n [styles.expandable]: true,\n })}\n role=\"presentation\"\n onClick={onClick}\n onMouseEnter={onHover}\n onTouchStart={onHover}\n data-testid={item.id}\n >\n {content}\n </li>\n );\n};\n\nexport default MobileExpandableCategoryElement;\n"]}
1
+ {"version":3,"file":"mobile-expandable-category-element.js","sourceRoot":"","sources":["../../../../src/button-dropdown/category-elements/mobile-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 } from 'react';\nimport clsx from 'clsx';\n\nimport { getAnalyticsMetadataAttribute } from '@cloudscape-design/component-toolkit/internal/analytics-metadata';\n\nimport InternalIcon from '../../icon/internal';\nimport useHiddenDescription from '../../internal/hooks/use-hidden-description';\nimport { GeneratedAnalyticsMetadataButtonDropdownExpand } from '../analytics-metadata/interfaces.js';\nimport { ButtonDropdownProps, CategoryProps } from '../interfaces';\nimport ItemsList from '../items-list';\nimport MobileExpandableGroup from '../mobile-expandable-group/mobile-expandable-group';\nimport Tooltip from '../tooltip.js';\nimport { getMenuItemProps } from '../utils/menu-item.js';\n\nimport styles from './styles.css.js';\n\nconst MobileExpandableCategoryElement = ({\n index,\n item,\n onItemActivate,\n onGroupToggle,\n targetItem,\n isHighlighted,\n isKeyboardHighlight,\n isExpanded,\n lastInDropdown,\n highlightItem,\n disabled,\n variant,\n position,\n renderItem,\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\n useEffect(() => {\n if (triggerRef.current && highlighted && !expanded) {\n triggerRef.current.focus();\n }\n }, [expanded, highlighted]);\n\n const onClick = (e: React.MouseEvent) => {\n if (!disabled) {\n e.preventDefault();\n onGroupToggle(item, e);\n }\n };\n\n const onHover = () => {\n highlightItem(item);\n };\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: 'vertical',\n };\n const renderResult = renderItem?.({ item: groupProps }) ?? null;\n\n const trigger = item.text && (\n <span\n className={clsx(styles.header, styles['expandable-header'], styles[`variant-${variant}`], {\n [styles.highlighted]: highlighted,\n [styles['rolled-down']]: expanded,\n [styles['no-content-styling']]: !!renderResult,\n [styles.disabled]: disabled,\n [styles['is-focused']]: isKeyboardHighlighted,\n })}\n // We are using the roving tabindex technique to manage the focus state of the dropdown.\n // The current element will always have tabindex=0 which means that it can be tabbed to,\n // while all other items have tabindex=-1 so we can focus them when necessary.\n tabIndex={highlighted ? 0 : -1}\n ref={triggerRef}\n {...getMenuItemProps({ parent: true, disabled, expanded })}\n {...(isDisabledWithReason ? targetProps : {})}\n {...getAnalyticsMetadataAttribute(\n disabled\n ? {}\n : ({\n action: 'expand',\n detail: {\n position: position || '0',\n label: { root: 'self' },\n id: item.id || '',\n expanded: `${!expanded}`,\n },\n } as GeneratedAnalyticsMetadataButtonDropdownExpand)\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 {item.text}\n <span\n className={clsx(styles['expand-icon'], {\n [styles['expand-icon-up']]: expanded,\n })}\n >\n <InternalIcon name=\"caret-down-filled\" />\n </span>\n </>\n )}\n </span>\n );\n\n let content: React.ReactNode;\n\n if (isDisabledWithReason) {\n content = (\n <>\n {descriptionEl}\n <Tooltip content={item.disabledReason}>{trigger}</Tooltip>\n </>\n );\n } else if (disabled) {\n content = trigger;\n } else {\n content = (\n <MobileExpandableGroup open={expanded} trigger={trigger}>\n {item.items && expanded && (\n <ul role=\"menu\" aria-label={item.text} className={styles['items-list-container']}>\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 hasCategoryHeader={true}\n variant={variant}\n position={position}\n renderItem={renderItem}\n parentProps={groupProps}\n />\n </ul>\n )}\n </MobileExpandableGroup>\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 || expanded,\n [styles.expandable]: true,\n })}\n role=\"presentation\"\n onClick={onClick}\n onMouseEnter={onHover}\n onTouchStart={onHover}\n data-testid={item.id}\n >\n {content}\n </li>\n );\n};\n\nexport default MobileExpandableCategoryElement;\n"]}
@@ -1,22 +1,23 @@
1
1
 
2
2
  import './styles.scoped.css';
3
3
  export default {
4
- "header": "awsui_header_16mm3_1u4y0_145",
5
- "disabled": "awsui_disabled_16mm3_1u4y0_161",
6
- "expandable-header": "awsui_expandable-header_16mm3_1u4y0_165",
7
- "rolled-down": "awsui_rolled-down_16mm3_1u4y0_176",
8
- "highlighted": "awsui_highlighted_16mm3_1u4y0_179",
9
- "is-focused": "awsui_is-focused_16mm3_1u4y0_197",
10
- "visual-refresh": "awsui_visual-refresh_16mm3_1u4y0_200",
11
- "category": "awsui_category_16mm3_1u4y0_204",
12
- "expandable": "awsui_expandable_16mm3_1u4y0_165",
13
- "variant-navigation": "awsui_variant-navigation_16mm3_1u4y0_219",
14
- "expand-icon": "awsui_expand-icon_16mm3_1u4y0_226",
15
- "expand-icon-up": "awsui_expand-icon-up_16mm3_1u4y0_244",
16
- "expand-icon-right": "awsui_expand-icon-right_16mm3_1u4y0_247",
17
- "items-list-container": "awsui_items-list-container_16mm3_1u4y0_255",
18
- "in-dropdown": "awsui_in-dropdown_16mm3_1u4y0_264",
19
- "icon-wrapper": "awsui_icon-wrapper_16mm3_1u4y0_268",
20
- "header-content": "awsui_header-content_16mm3_1u4y0_272"
4
+ "header": "awsui_header_16mm3_1qp0c_145",
5
+ "disabled": "awsui_disabled_16mm3_1qp0c_161",
6
+ "no-content-styling": "awsui_no-content-styling_16mm3_1qp0c_165",
7
+ "expandable-header": "awsui_expandable-header_16mm3_1qp0c_171",
8
+ "rolled-down": "awsui_rolled-down_16mm3_1qp0c_182",
9
+ "highlighted": "awsui_highlighted_16mm3_1qp0c_185",
10
+ "is-focused": "awsui_is-focused_16mm3_1qp0c_208",
11
+ "visual-refresh": "awsui_visual-refresh_16mm3_1qp0c_211",
12
+ "category": "awsui_category_16mm3_1qp0c_215",
13
+ "expandable": "awsui_expandable_16mm3_1qp0c_171",
14
+ "variant-navigation": "awsui_variant-navigation_16mm3_1qp0c_230",
15
+ "expand-icon": "awsui_expand-icon_16mm3_1qp0c_237",
16
+ "expand-icon-up": "awsui_expand-icon-up_16mm3_1qp0c_255",
17
+ "expand-icon-right": "awsui_expand-icon-right_16mm3_1qp0c_258",
18
+ "items-list-container": "awsui_items-list-container_16mm3_1qp0c_266",
19
+ "in-dropdown": "awsui_in-dropdown_16mm3_1qp0c_275",
20
+ "icon-wrapper": "awsui_icon-wrapper_16mm3_1qp0c_279",
21
+ "header-content": "awsui_header-content_16mm3_1qp0c_283"
21
22
  };
22
23
 
@@ -142,7 +142,7 @@
142
142
  */
143
143
  /* Style used for links in slots/components that are text heavy, to help links stand out among
144
144
  surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F73#description */
145
- .awsui_header_16mm3_1u4y0_145:not(#\9) {
145
+ .awsui_header_16mm3_1qp0c_145:not(#\9) {
146
146
  position: relative;
147
147
  margin-block: 0;
148
148
  margin-inline: 0;
@@ -158,25 +158,31 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
158
158
  padding-inline: calc(var(--space-button-horizontal-v8ywmo, 20px) + var(--border-item-width-acvlhx, 1px));
159
159
  z-index: 1;
160
160
  }
161
- .awsui_header_16mm3_1u4y0_145.awsui_disabled_16mm3_1u4y0_161:not(#\9) {
161
+ .awsui_header_16mm3_1qp0c_145.awsui_disabled_16mm3_1qp0c_161:not(#\9) {
162
162
  color: var(--color-text-dropdown-item-disabled-oysy8n, #aab7b8);
163
163
  cursor: default;
164
164
  }
165
- .awsui_header_16mm3_1u4y0_145.awsui_expandable-header_16mm3_1u4y0_165:not(#\9) {
165
+ .awsui_header_16mm3_1qp0c_145.awsui_no-content-styling_16mm3_1qp0c_165:not(#\9) {
166
+ padding-block: calc(var(--border-item-width-acvlhx, 1px) - var(--border-divider-list-width-8ggz94, 1px));
167
+ padding-inline: var(--border-item-width-acvlhx, 1px);
168
+ font-weight: normal;
169
+ color: inherit;
170
+ }
171
+ .awsui_header_16mm3_1qp0c_145.awsui_expandable-header_16mm3_1qp0c_171:not(#\9) {
166
172
  border-block-start-color: var(--color-border-dropdown-group-dg9zg5, #eaeded);
167
173
  border-block-end-color: var(--color-border-dropdown-group-dg9zg5, #eaeded);
168
174
  cursor: pointer;
169
175
  }
170
- .awsui_header_16mm3_1u4y0_145.awsui_expandable-header_16mm3_1u4y0_165.awsui_disabled_16mm3_1u4y0_161:not(#\9) {
176
+ .awsui_header_16mm3_1qp0c_145.awsui_expandable-header_16mm3_1qp0c_171.awsui_disabled_16mm3_1qp0c_161:not(#\9) {
171
177
  cursor: default;
172
178
  }
173
- .awsui_header_16mm3_1u4y0_145.awsui_expandable-header_16mm3_1u4y0_165:not(#\9):focus {
179
+ .awsui_header_16mm3_1qp0c_145.awsui_expandable-header_16mm3_1qp0c_171:not(#\9):focus {
174
180
  outline: none;
175
181
  }
176
- .awsui_header_16mm3_1u4y0_145.awsui_expandable-header_16mm3_1u4y0_165.awsui_rolled-down_16mm3_1u4y0_176:not(#\9) {
182
+ .awsui_header_16mm3_1qp0c_145.awsui_expandable-header_16mm3_1qp0c_171.awsui_rolled-down_16mm3_1qp0c_182:not(#\9) {
177
183
  border-block-end-color: transparent;
178
184
  }
179
- .awsui_header_16mm3_1u4y0_145.awsui_expandable-header_16mm3_1u4y0_165.awsui_highlighted_16mm3_1u4y0_179:not(#\9) {
185
+ .awsui_header_16mm3_1qp0c_145.awsui_expandable-header_16mm3_1qp0c_171.awsui_highlighted_16mm3_1qp0c_185:not(#\9) {
180
186
  background-color: var(--color-background-dropdown-item-hover-353r6f, #f2f3f3);
181
187
  color: var(--color-text-dropdown-item-highlighted-bchk26, #16191f);
182
188
  padding-block: var(--space-xxs-jnczic, 4px);
@@ -189,41 +195,46 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
189
195
  border-end-end-radius: var(--border-radius-item-xggxkd, 0px);
190
196
  z-index: 2;
191
197
  }
192
- .awsui_header_16mm3_1u4y0_145.awsui_expandable-header_16mm3_1u4y0_165.awsui_highlighted_16mm3_1u4y0_179.awsui_disabled_16mm3_1u4y0_161:not(#\9) {
198
+ .awsui_header_16mm3_1qp0c_145.awsui_expandable-header_16mm3_1qp0c_171.awsui_highlighted_16mm3_1qp0c_185.awsui_no-content-styling_16mm3_1qp0c_165:not(#\9) {
199
+ padding-block: 0;
200
+ padding-inline: 0;
201
+ color: inherit;
202
+ }
203
+ .awsui_header_16mm3_1qp0c_145.awsui_expandable-header_16mm3_1qp0c_171.awsui_highlighted_16mm3_1qp0c_185.awsui_disabled_16mm3_1qp0c_161:not(#\9) {
193
204
  background-color: var(--color-background-dropdown-item-dimmed-2hwvu9, transparent);
194
205
  border-color: var(--color-border-dropdown-item-dimmed-hover-twsd8z, #879596);
195
206
  color: var(--color-text-dropdown-item-dimmed-0xf8v3, #aab7b8);
196
207
  }
197
- .awsui_header_16mm3_1u4y0_145.awsui_expandable-header_16mm3_1u4y0_165.awsui_highlighted_16mm3_1u4y0_179.awsui_is-focused_16mm3_1u4y0_197:not(#\9) {
208
+ .awsui_header_16mm3_1qp0c_145.awsui_expandable-header_16mm3_1qp0c_171.awsui_highlighted_16mm3_1qp0c_185.awsui_is-focused_16mm3_1qp0c_208:not(#\9) {
198
209
  border-color: var(--color-border-dropdown-item-focused-xty1zx, #0073bb);
199
210
  }
200
- .awsui_header_16mm3_1u4y0_145.awsui_expandable-header_16mm3_1u4y0_165.awsui_highlighted_16mm3_1u4y0_179.awsui_is-focused_16mm3_1u4y0_197:not(#\9):not(.awsui_visual-refresh_16mm3_1u4y0_200) {
211
+ .awsui_header_16mm3_1qp0c_145.awsui_expandable-header_16mm3_1qp0c_171.awsui_highlighted_16mm3_1qp0c_185.awsui_is-focused_16mm3_1qp0c_208:not(#\9):not(.awsui_visual-refresh_16mm3_1qp0c_211) {
201
212
  box-shadow: inset 0 0 0 var(--border-control-focus-ring-shadow-spread-ql2vj7, 1px) var(--color-border-item-focused-r5f6xl, #0073bb);
202
213
  }
203
214
 
204
- .awsui_category_16mm3_1u4y0_204:not(#\9) {
215
+ .awsui_category_16mm3_1qp0c_215:not(#\9) {
205
216
  list-style: none;
206
217
  margin-block-start: calc(-1 * var(--border-divider-list-width-8ggz94, 1px));
207
218
  padding-block: 0;
208
219
  padding-inline: 0;
209
220
  }
210
- .awsui_category_16mm3_1u4y0_204:not(#\9):first-child {
221
+ .awsui_category_16mm3_1qp0c_215:not(#\9):first-child {
211
222
  margin-block-start: 0;
212
223
  }
213
- .awsui_category_16mm3_1u4y0_204.awsui_expandable_16mm3_1u4y0_165:not(#\9) {
224
+ .awsui_category_16mm3_1qp0c_215.awsui_expandable_16mm3_1qp0c_171:not(#\9) {
214
225
  border-block-start: 0;
215
226
  }
216
- .awsui_category_16mm3_1u4y0_204:not(#\9):last-child {
227
+ .awsui_category_16mm3_1qp0c_215:not(#\9):last-child {
217
228
  border-block-end: none;
218
229
  }
219
- .awsui_category_16mm3_1u4y0_204.awsui_variant-navigation_16mm3_1u4y0_219:not(#\9) {
230
+ .awsui_category_16mm3_1qp0c_215.awsui_variant-navigation_16mm3_1qp0c_230:not(#\9) {
220
231
  padding-block-start: var(--space-xxs-jnczic, 4px);
221
232
  }
222
- .awsui_category_16mm3_1u4y0_204.awsui_variant-navigation_16mm3_1u4y0_219.awsui_expandable_16mm3_1u4y0_165:not(#\9) {
233
+ .awsui_category_16mm3_1qp0c_215.awsui_variant-navigation_16mm3_1qp0c_230.awsui_expandable_16mm3_1qp0c_171:not(#\9) {
223
234
  padding-block-start: 0;
224
235
  }
225
236
 
226
- .awsui_expand-icon_16mm3_1u4y0_226:not(#\9) {
237
+ .awsui_expand-icon_16mm3_1qp0c_237:not(#\9) {
227
238
  position: relative;
228
239
  inset-inline-end: calc(-1 * var(--space-s-4a5hs8, 12px));
229
240
  inline-size: var(--space-m-n2lypl, 16px);
@@ -232,27 +243,27 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
232
243
  transition: transform var(--motion-duration-rotate-180-4er9qu, 135ms) var(--motion-easing-rotate-180-xlspcm, cubic-bezier(0.165, 0.84, 0.44, 1));
233
244
  }
234
245
  @media (prefers-reduced-motion: reduce) {
235
- .awsui_expand-icon_16mm3_1u4y0_226:not(#\9) {
246
+ .awsui_expand-icon_16mm3_1qp0c_237:not(#\9) {
236
247
  animation: none;
237
248
  transition: none;
238
249
  }
239
250
  }
240
- .awsui-motion-disabled .awsui_expand-icon_16mm3_1u4y0_226:not(#\9), .awsui-mode-entering .awsui_expand-icon_16mm3_1u4y0_226:not(#\9) {
251
+ .awsui-motion-disabled .awsui_expand-icon_16mm3_1qp0c_237:not(#\9), .awsui-mode-entering .awsui_expand-icon_16mm3_1qp0c_237:not(#\9) {
241
252
  animation: none;
242
253
  transition: none;
243
254
  }
244
- .awsui_expand-icon-up_16mm3_1u4y0_244:not(#\9) {
255
+ .awsui_expand-icon-up_16mm3_1qp0c_255:not(#\9) {
245
256
  transform: rotate(-180deg);
246
257
  }
247
- .awsui_expand-icon-right_16mm3_1u4y0_247:not(#\9) {
258
+ .awsui_expand-icon-right_16mm3_1qp0c_258:not(#\9) {
248
259
  transform: rotate(-90deg);
249
260
  /* stylelint-disable-next-line plugin/no-unsupported-browser-features */
250
261
  }
251
- .awsui_expand-icon-right_16mm3_1u4y0_247:not(#\9):dir(rtl) {
262
+ .awsui_expand-icon-right_16mm3_1qp0c_258:not(#\9):dir(rtl) {
252
263
  transform: rotate(90deg);
253
264
  }
254
265
 
255
- .awsui_items-list-container_16mm3_1u4y0_255:not(#\9) {
266
+ .awsui_items-list-container_16mm3_1qp0c_266:not(#\9) {
256
267
  padding-block: 0;
257
268
  padding-inline: 0;
258
269
  margin-block-start: -1px;
@@ -261,15 +272,15 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
261
272
  overflow-y: auto;
262
273
  }
263
274
 
264
- .awsui_in-dropdown_16mm3_1u4y0_264:not(#\9) {
275
+ .awsui_in-dropdown_16mm3_1qp0c_275:not(#\9) {
265
276
  margin-block-end: -1px;
266
277
  }
267
278
 
268
- .awsui_icon-wrapper_16mm3_1u4y0_268:not(#\9) {
279
+ .awsui_icon-wrapper_16mm3_1qp0c_279:not(#\9) {
269
280
  margin-inline-end: var(--space-xxs-jnczic, 4px);
270
281
  }
271
282
 
272
- .awsui_header-content_16mm3_1u4y0_272:not(#\9) {
283
+ .awsui_header-content_16mm3_1qp0c_283:not(#\9) {
273
284
  display: flex;
274
285
  align-items: center;
275
286
  }
@@ -2,22 +2,23 @@
2
2
  // es-module interop with Babel and Typescript
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  module.exports.default = {
5
- "header": "awsui_header_16mm3_1u4y0_145",
6
- "disabled": "awsui_disabled_16mm3_1u4y0_161",
7
- "expandable-header": "awsui_expandable-header_16mm3_1u4y0_165",
8
- "rolled-down": "awsui_rolled-down_16mm3_1u4y0_176",
9
- "highlighted": "awsui_highlighted_16mm3_1u4y0_179",
10
- "is-focused": "awsui_is-focused_16mm3_1u4y0_197",
11
- "visual-refresh": "awsui_visual-refresh_16mm3_1u4y0_200",
12
- "category": "awsui_category_16mm3_1u4y0_204",
13
- "expandable": "awsui_expandable_16mm3_1u4y0_165",
14
- "variant-navigation": "awsui_variant-navigation_16mm3_1u4y0_219",
15
- "expand-icon": "awsui_expand-icon_16mm3_1u4y0_226",
16
- "expand-icon-up": "awsui_expand-icon-up_16mm3_1u4y0_244",
17
- "expand-icon-right": "awsui_expand-icon-right_16mm3_1u4y0_247",
18
- "items-list-container": "awsui_items-list-container_16mm3_1u4y0_255",
19
- "in-dropdown": "awsui_in-dropdown_16mm3_1u4y0_264",
20
- "icon-wrapper": "awsui_icon-wrapper_16mm3_1u4y0_268",
21
- "header-content": "awsui_header-content_16mm3_1u4y0_272"
5
+ "header": "awsui_header_16mm3_1qp0c_145",
6
+ "disabled": "awsui_disabled_16mm3_1qp0c_161",
7
+ "no-content-styling": "awsui_no-content-styling_16mm3_1qp0c_165",
8
+ "expandable-header": "awsui_expandable-header_16mm3_1qp0c_171",
9
+ "rolled-down": "awsui_rolled-down_16mm3_1qp0c_182",
10
+ "highlighted": "awsui_highlighted_16mm3_1qp0c_185",
11
+ "is-focused": "awsui_is-focused_16mm3_1qp0c_208",
12
+ "visual-refresh": "awsui_visual-refresh_16mm3_1qp0c_211",
13
+ "category": "awsui_category_16mm3_1qp0c_215",
14
+ "expandable": "awsui_expandable_16mm3_1qp0c_171",
15
+ "variant-navigation": "awsui_variant-navigation_16mm3_1qp0c_230",
16
+ "expand-icon": "awsui_expand-icon_16mm3_1qp0c_237",
17
+ "expand-icon-up": "awsui_expand-icon-up_16mm3_1qp0c_255",
18
+ "expand-icon-right": "awsui_expand-icon-right_16mm3_1qp0c_258",
19
+ "items-list-container": "awsui_items-list-container_16mm3_1qp0c_266",
20
+ "in-dropdown": "awsui_in-dropdown_16mm3_1qp0c_275",
21
+ "icon-wrapper": "awsui_icon-wrapper_16mm3_1qp0c_279",
22
+ "header-content": "awsui_header-content_16mm3_1qp0c_283"
22
23
  };
23
24
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/button-dropdown/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,OAAO,CAAC;AAQ1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAMnD,OAAO,EAAE,mBAAmB,EAAE,CAAC;AAE/B,QAAA,MAAM,cAAc,qGAoEnB,CAAC;AAGF,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/button-dropdown/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,OAAO,CAAC;AAQ1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAMnD,OAAO,EAAE,mBAAmB,EAAE,CAAC;AAE/B,QAAA,MAAM,cAAc,qGAsEnB,CAAC;AAGF,eAAe,cAAc,CAAC"}
@@ -9,7 +9,7 @@ import { applyDisplayName } from '../internal/utils/apply-display-name';
9
9
  import InternalButtonDropdown from './internal';
10
10
  import { hasCheckboxItems, hasDisabledReasonItems } from './utils/utils';
11
11
  import analyticsSelectors from './analytics-metadata/styles.css.js';
12
- const ButtonDropdown = React.forwardRef(({ items, variant = 'normal', loading = false, loadingText, disabled = false, disabledReason, expandableGroups = false, expandToViewport = false, ariaLabel, children, onItemClick, onItemFollow, mainAction, fullWidth, nativeMainActionAttributes, nativeTriggerAttributes, ...props }, ref) => {
12
+ const ButtonDropdown = React.forwardRef(({ items, variant = 'normal', loading = false, loadingText, disabled = false, disabledReason, expandableGroups = false, expandToViewport = false, ariaLabel, children, onItemClick, onItemFollow, mainAction, fullWidth, nativeMainActionAttributes, nativeTriggerAttributes, renderItem, ...props }, ref) => {
13
13
  const baseComponentProps = useBaseComponent('ButtonDropdown', {
14
14
  props: { expandToViewport, expandableGroups, variant },
15
15
  metadata: {
@@ -25,7 +25,7 @@ const ButtonDropdown = React.forwardRef(({ items, variant = 'normal', loading =
25
25
  label: `.${analyticsSelectors['trigger-label']}`,
26
26
  properties: { variant, disabled: `${disabled}` },
27
27
  };
28
- return (React.createElement(InternalButtonDropdown, { ...baseProps, ...baseComponentProps, ref: ref, items: items, variant: variant, loading: loading, loadingText: loadingText, disabled: disabled, disabledReason: disabledReason, expandableGroups: expandableGroups, expandToViewport: expandToViewport, ariaLabel: ariaLabel, onItemClick: onItemClick, onItemFollow: onItemFollow, mainAction: mainAction, fullWidth: fullWidth, nativeMainActionAttributes: nativeMainActionAttributes, nativeTriggerAttributes: nativeTriggerAttributes, ...getAnalyticsMetadataAttribute({
28
+ return (React.createElement(InternalButtonDropdown, { ...baseProps, ...baseComponentProps, renderItem: renderItem, ref: ref, items: items, variant: variant, loading: loading, loadingText: loadingText, disabled: disabled, disabledReason: disabledReason, expandableGroups: expandableGroups, expandToViewport: expandToViewport, ariaLabel: ariaLabel, onItemClick: onItemClick, onItemFollow: onItemFollow, mainAction: mainAction, fullWidth: fullWidth, nativeMainActionAttributes: nativeMainActionAttributes, nativeTriggerAttributes: nativeTriggerAttributes, ...getAnalyticsMetadataAttribute({
29
29
  component: analyticsComponentMetadata,
30
30
  }) }, children));
31
31
  });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/button-dropdown/index.tsx"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,YAAY,CAAC;AACb,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,6BAA6B,EAAE,MAAM,kEAAkE,CAAC;AAEjH,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,gBAAgB,MAAM,sCAAsC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAGxE,OAAO,sBAAsB,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAEzE,OAAO,kBAAkB,MAAM,oCAAoC,CAAC;AAIpE,MAAM,cAAc,GAAG,KAAK,CAAC,UAAU,CACrC,CACE,EACE,KAAK,EACL,OAAO,GAAG,QAAQ,EAClB,OAAO,GAAG,KAAK,EACf,WAAW,EACX,QAAQ,GAAG,KAAK,EAChB,cAAc,EACd,gBAAgB,GAAG,KAAK,EACxB,gBAAgB,GAAG,KAAK,EACxB,SAAS,EACT,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,UAAU,EACV,SAAS,EACT,0BAA0B,EAC1B,uBAAuB,EACvB,GAAG,KAAK,EACY,EACtB,GAAuC,EACvC,EAAE;IACF,MAAM,kBAAkB,GAAG,gBAAgB,CAAC,gBAAgB,EAAE;QAC5D,KAAK,EAAE,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,OAAO,EAAE;QACtD,QAAQ,EAAE;YACR,UAAU,EAAE,CAAC,CAAC,UAAU;YACxB,aAAa,EAAE,gBAAgB,CAAC,KAAK,CAAC;YACtC,iBAAiB,EAAE,OAAO,CAAC,cAAc,CAAC;YAC1C,kBAAkB,EAAE,sBAAsB,CAAC,KAAK,CAAC;SAClD;KACF,CAAC,CAAC;IACH,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IAEtC,MAAM,0BAA0B,GAAsD;QACpF,IAAI,EAAE,sBAAsB;QAC5B,KAAK,EAAE,IAAI,kBAAkB,CAAC,eAAe,CAAC,EAAE;QAChD,UAAU,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,QAAQ,EAAE,EAAE;KACjD,CAAC;IAEF,OAAO,CACL,oBAAC,sBAAsB,OACjB,SAAS,KACT,kBAAkB,EACtB,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,QAAQ,EAClB,cAAc,EAAE,cAAc,EAC9B,gBAAgB,EAAE,gBAAgB,EAClC,gBAAgB,EAAE,gBAAgB,EAClC,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,YAAY,EAC1B,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,SAAS,EACpB,0BAA0B,EAAE,0BAA0B,EACtD,uBAAuB,EAAE,uBAAuB,KAC5C,6BAA6B,CAAC;YAChC,SAAS,EAAE,0BAA0B;SACtC,CAAC,IAED,QAAQ,CACc,CAC1B,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,gBAAgB,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC;AACnD,eAAe,cAAc,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n'use client';\nimport React from 'react';\n\nimport { getAnalyticsMetadataAttribute } from '@cloudscape-design/component-toolkit/internal/analytics-metadata';\n\nimport { getBaseProps } from '../internal/base-component';\nimport useBaseComponent from '../internal/hooks/use-base-component';\nimport { applyDisplayName } from '../internal/utils/apply-display-name';\nimport { GeneratedAnalyticsMetadataButtonDropdownComponent } from './analytics-metadata/interfaces';\nimport { ButtonDropdownProps } from './interfaces';\nimport InternalButtonDropdown from './internal';\nimport { hasCheckboxItems, hasDisabledReasonItems } from './utils/utils';\n\nimport analyticsSelectors from './analytics-metadata/styles.css.js';\n\nexport { ButtonDropdownProps };\n\nconst ButtonDropdown = React.forwardRef(\n (\n {\n items,\n variant = 'normal',\n loading = false,\n loadingText,\n disabled = false,\n disabledReason,\n expandableGroups = false,\n expandToViewport = false,\n ariaLabel,\n children,\n onItemClick,\n onItemFollow,\n mainAction,\n fullWidth,\n nativeMainActionAttributes,\n nativeTriggerAttributes,\n ...props\n }: ButtonDropdownProps,\n ref: React.Ref<ButtonDropdownProps.Ref>\n ) => {\n const baseComponentProps = useBaseComponent('ButtonDropdown', {\n props: { expandToViewport, expandableGroups, variant },\n metadata: {\n mainAction: !!mainAction,\n checkboxItems: hasCheckboxItems(items),\n hasDisabledReason: Boolean(disabledReason),\n hasDisabledReasons: hasDisabledReasonItems(items),\n },\n });\n const baseProps = getBaseProps(props);\n\n const analyticsComponentMetadata: GeneratedAnalyticsMetadataButtonDropdownComponent = {\n name: 'awsui.ButtonDropdown',\n label: `.${analyticsSelectors['trigger-label']}`,\n properties: { variant, disabled: `${disabled}` },\n };\n\n return (\n <InternalButtonDropdown\n {...baseProps}\n {...baseComponentProps}\n ref={ref}\n items={items}\n variant={variant}\n loading={loading}\n loadingText={loadingText}\n disabled={disabled}\n disabledReason={disabledReason}\n expandableGroups={expandableGroups}\n expandToViewport={expandToViewport}\n ariaLabel={ariaLabel}\n onItemClick={onItemClick}\n onItemFollow={onItemFollow}\n mainAction={mainAction}\n fullWidth={fullWidth}\n nativeMainActionAttributes={nativeMainActionAttributes}\n nativeTriggerAttributes={nativeTriggerAttributes}\n {...getAnalyticsMetadataAttribute({\n component: analyticsComponentMetadata,\n })}\n >\n {children}\n </InternalButtonDropdown>\n );\n }\n);\n\napplyDisplayName(ButtonDropdown, 'ButtonDropdown');\nexport default ButtonDropdown;\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/button-dropdown/index.tsx"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,YAAY,CAAC;AACb,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,6BAA6B,EAAE,MAAM,kEAAkE,CAAC;AAEjH,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,gBAAgB,MAAM,sCAAsC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAGxE,OAAO,sBAAsB,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAEzE,OAAO,kBAAkB,MAAM,oCAAoC,CAAC;AAIpE,MAAM,cAAc,GAAG,KAAK,CAAC,UAAU,CACrC,CACE,EACE,KAAK,EACL,OAAO,GAAG,QAAQ,EAClB,OAAO,GAAG,KAAK,EACf,WAAW,EACX,QAAQ,GAAG,KAAK,EAChB,cAAc,EACd,gBAAgB,GAAG,KAAK,EACxB,gBAAgB,GAAG,KAAK,EACxB,SAAS,EACT,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,UAAU,EACV,SAAS,EACT,0BAA0B,EAC1B,uBAAuB,EACvB,UAAU,EACV,GAAG,KAAK,EACY,EACtB,GAAuC,EACvC,EAAE;IACF,MAAM,kBAAkB,GAAG,gBAAgB,CAAC,gBAAgB,EAAE;QAC5D,KAAK,EAAE,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,OAAO,EAAE;QACtD,QAAQ,EAAE;YACR,UAAU,EAAE,CAAC,CAAC,UAAU;YACxB,aAAa,EAAE,gBAAgB,CAAC,KAAK,CAAC;YACtC,iBAAiB,EAAE,OAAO,CAAC,cAAc,CAAC;YAC1C,kBAAkB,EAAE,sBAAsB,CAAC,KAAK,CAAC;SAClD;KACF,CAAC,CAAC;IACH,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IAEtC,MAAM,0BAA0B,GAAsD;QACpF,IAAI,EAAE,sBAAsB;QAC5B,KAAK,EAAE,IAAI,kBAAkB,CAAC,eAAe,CAAC,EAAE;QAChD,UAAU,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,QAAQ,EAAE,EAAE;KACjD,CAAC;IAEF,OAAO,CACL,oBAAC,sBAAsB,OACjB,SAAS,KACT,kBAAkB,EACtB,UAAU,EAAE,UAAU,EACtB,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,QAAQ,EAClB,cAAc,EAAE,cAAc,EAC9B,gBAAgB,EAAE,gBAAgB,EAClC,gBAAgB,EAAE,gBAAgB,EAClC,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,YAAY,EAC1B,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,SAAS,EACpB,0BAA0B,EAAE,0BAA0B,EACtD,uBAAuB,EAAE,uBAAuB,KAC5C,6BAA6B,CAAC;YAChC,SAAS,EAAE,0BAA0B;SACtC,CAAC,IAED,QAAQ,CACc,CAC1B,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,gBAAgB,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC;AACnD,eAAe,cAAc,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n'use client';\nimport React from 'react';\n\nimport { getAnalyticsMetadataAttribute } from '@cloudscape-design/component-toolkit/internal/analytics-metadata';\n\nimport { getBaseProps } from '../internal/base-component';\nimport useBaseComponent from '../internal/hooks/use-base-component';\nimport { applyDisplayName } from '../internal/utils/apply-display-name';\nimport { GeneratedAnalyticsMetadataButtonDropdownComponent } from './analytics-metadata/interfaces';\nimport { ButtonDropdownProps } from './interfaces';\nimport InternalButtonDropdown from './internal';\nimport { hasCheckboxItems, hasDisabledReasonItems } from './utils/utils';\n\nimport analyticsSelectors from './analytics-metadata/styles.css.js';\n\nexport { ButtonDropdownProps };\n\nconst ButtonDropdown = React.forwardRef(\n (\n {\n items,\n variant = 'normal',\n loading = false,\n loadingText,\n disabled = false,\n disabledReason,\n expandableGroups = false,\n expandToViewport = false,\n ariaLabel,\n children,\n onItemClick,\n onItemFollow,\n mainAction,\n fullWidth,\n nativeMainActionAttributes,\n nativeTriggerAttributes,\n renderItem,\n ...props\n }: ButtonDropdownProps,\n ref: React.Ref<ButtonDropdownProps.Ref>\n ) => {\n const baseComponentProps = useBaseComponent('ButtonDropdown', {\n props: { expandToViewport, expandableGroups, variant },\n metadata: {\n mainAction: !!mainAction,\n checkboxItems: hasCheckboxItems(items),\n hasDisabledReason: Boolean(disabledReason),\n hasDisabledReasons: hasDisabledReasonItems(items),\n },\n });\n const baseProps = getBaseProps(props);\n\n const analyticsComponentMetadata: GeneratedAnalyticsMetadataButtonDropdownComponent = {\n name: 'awsui.ButtonDropdown',\n label: `.${analyticsSelectors['trigger-label']}`,\n properties: { variant, disabled: `${disabled}` },\n };\n\n return (\n <InternalButtonDropdown\n {...baseProps}\n {...baseComponentProps}\n renderItem={renderItem}\n ref={ref}\n items={items}\n variant={variant}\n loading={loading}\n loadingText={loadingText}\n disabled={disabled}\n disabledReason={disabledReason}\n expandableGroups={expandableGroups}\n expandToViewport={expandToViewport}\n ariaLabel={ariaLabel}\n onItemClick={onItemClick}\n onItemFollow={onItemFollow}\n mainAction={mainAction}\n fullWidth={fullWidth}\n nativeMainActionAttributes={nativeMainActionAttributes}\n nativeTriggerAttributes={nativeTriggerAttributes}\n {...getAnalyticsMetadataAttribute({\n component: analyticsComponentMetadata,\n })}\n >\n {children}\n </InternalButtonDropdown>\n );\n }\n);\n\napplyDisplayName(ButtonDropdown, 'ButtonDropdown');\nexport default ButtonDropdown;\n"]}
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import React, { ReactNode } from 'react';
2
2
  import { GeneratedAnalyticsMetadataFragment } from '@cloudscape-design/component-toolkit/internal/analytics-metadata';
3
3
  import { ButtonProps } from '../button/interfaces';
4
4
  import { IconProps } from '../icon/interfaces';
@@ -57,6 +57,49 @@ export interface ButtonDropdownProps extends BaseComponentProps, ExpandToViewpor
57
57
  *
58
58
  */
59
59
  items: ReadonlyArray<ButtonDropdownProps.ItemOrGroup>;
60
+ /**
61
+ * Specifies a render function to render custom options in the dropdown menu.
62
+ *
63
+ * The item inside the props has a different shape depending on its type:
64
+ *
65
+ *
66
+ * ### action
67
+ *
68
+ * - `type` ('action') - The item type.
69
+ * - `index` (number) - The item's position relative to its parent.
70
+ * - `option` (Item) - The original item configuration.
71
+ * - `highlighted` (boolean) - Whether the item is currently highlighted.
72
+ * - `disabled` (boolean) - Whether the item is disabled.
73
+ * - `parent` (GroupRenderItem | null) - The parent group item, if any.
74
+ *
75
+ * ### checkbox
76
+ *
77
+ * - `type` ('checkbox') - The item type.
78
+ * - `index` (number) - The item's position relative to its parent.
79
+ * - `option` (CheckboxItem) - The original item configuration.
80
+ * - `disabled` (boolean) - Whether the item is disabled.
81
+ * - `highlighted` (boolean) - Whether the item is currently highlighted.
82
+ * - `checked` (boolean) - Controls the state of the checkbox item.
83
+ * - `parent` (GroupRenderItem | null) - The parent group item, if any.
84
+ *
85
+ * ### group
86
+ *
87
+ * - `type` ('group') - The item type.
88
+ * - `index` (number) - The item's position in the list.
89
+ * - `option` (ItemGroup) - The original item configuration.
90
+ * - `disabled` (boolean) - Whether the item is disabled.
91
+ * - `highlighted` (boolean) - Whether the item is currently highlighted.
92
+ * - `expanded` (boolean) - Whether the group is expanded.
93
+ * - `expandDirection` ('vertical' | 'horizontal') - The direction in which the group expands.
94
+ *
95
+ * When providing a custom `renderItem` implementation, it fully replaces the default visual rendering and content for that item.
96
+ * The component still manages focus, keyboard interactions, and selection state, but it no longer applies its default item layout or typography.
97
+ *
98
+ * When returning `null`, the default styling will be applied.
99
+ *
100
+ * @awsuiSystem core
101
+ */
102
+ renderItem?: ButtonDropdownProps.ItemRenderer;
60
103
  /**
61
104
  * Determines whether the button dropdown is disabled. Users cannot interact with the control if it's disabled.
62
105
  */
@@ -154,6 +197,36 @@ export interface ButtonDropdownProps extends BaseComponentProps, ExpandToViewpor
154
197
  export declare namespace ButtonDropdownProps {
155
198
  type Variant = 'normal' | 'primary' | 'icon' | 'inline-icon';
156
199
  type ItemType = 'action' | 'group';
200
+ interface ActionRenderItem {
201
+ type: 'action';
202
+ index: number;
203
+ option: Item;
204
+ highlighted: boolean;
205
+ disabled: boolean;
206
+ parent: GroupRenderItem | null;
207
+ }
208
+ interface CheckboxRenderItem {
209
+ type: 'checkbox';
210
+ index: number;
211
+ option: CheckboxItem;
212
+ disabled: boolean;
213
+ highlighted: boolean;
214
+ checked: boolean;
215
+ parent: GroupRenderItem | null;
216
+ }
217
+ interface GroupRenderItem {
218
+ type: 'group';
219
+ index: number;
220
+ option: ItemGroup;
221
+ disabled: boolean;
222
+ highlighted: boolean;
223
+ expanded: boolean;
224
+ expandDirection: 'vertical' | 'horizontal';
225
+ }
226
+ type RenderItem = ActionRenderItem | CheckboxRenderItem | GroupRenderItem;
227
+ type ItemRenderer = (props: {
228
+ item: ButtonDropdownProps.RenderItem;
229
+ }) => ReactNode | null;
157
230
  interface MainAction {
158
231
  text?: string;
159
232
  ariaLabel?: string;
@@ -238,6 +311,7 @@ export interface HighlightProps {
238
311
  export type GroupToggle = (item: ButtonDropdownProps.ItemGroup, event: React.SyntheticEvent) => void;
239
312
  export type ItemActivate = (item: ButtonDropdownProps.Item | ButtonDropdownProps.CheckboxItem, event: React.MouseEvent | React.KeyboardEvent) => void;
240
313
  export interface CategoryProps extends HighlightProps {
314
+ index?: number;
241
315
  item: ButtonDropdownProps.ItemGroup;
242
316
  onGroupToggle: GroupToggle;
243
317
  onItemActivate: ItemActivate;
@@ -246,6 +320,7 @@ export interface CategoryProps extends HighlightProps {
246
320
  expandToViewport?: boolean;
247
321
  variant?: ItemListProps['variant'];
248
322
  position?: string;
323
+ renderItem?: ButtonDropdownProps.ItemRenderer;
249
324
  }
250
325
  export interface ItemListProps extends HighlightProps {
251
326
  items: ButtonDropdownProps.Items;
@@ -260,11 +335,14 @@ export interface ItemListProps extends HighlightProps {
260
335
  position?: string;
261
336
  analyticsMetadataTransformer?: InternalButtonDropdownProps['analyticsMetadataTransformer'];
262
337
  linkStyle?: boolean;
338
+ renderItem?: ButtonDropdownProps.ItemRenderer;
339
+ parentProps?: ButtonDropdownProps.GroupRenderItem;
263
340
  }
264
341
  export interface LinkItem extends ButtonDropdownProps.Item {
265
342
  href: string;
266
343
  }
267
344
  export interface ItemProps {
345
+ index?: number;
268
346
  item: ButtonDropdownProps.Item | ButtonDropdownProps.CheckboxItem | LinkItem;
269
347
  disabled: boolean;
270
348
  highlighted: boolean;
@@ -277,6 +355,8 @@ export interface ItemProps {
277
355
  position?: string;
278
356
  analyticsMetadataTransformer?: InternalButtonDropdownProps['analyticsMetadataTransformer'];
279
357
  linkStyle?: boolean;
358
+ renderItem?: ButtonDropdownProps.ItemRenderer;
359
+ parentProps?: ButtonDropdownProps.GroupRenderItem;
280
360
  }
281
361
  export interface InternalItem extends ButtonDropdownProps.Item {
282
362
  badge?: boolean;