@cloudscape-design/components 3.0.19 → 3.0.22

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 (134) hide show
  1. package/annotation-context/annotation/styles.css.js +24 -24
  2. package/annotation-context/annotation/styles.scoped.css +30 -30
  3. package/annotation-context/annotation/styles.selectors.js +24 -24
  4. package/app-layout/toggles/styles.css.js +3 -3
  5. package/app-layout/toggles/styles.scoped.css +12 -12
  6. package/app-layout/toggles/styles.selectors.js +3 -3
  7. package/app-layout/visual-refresh/styles.css.js +59 -59
  8. package/app-layout/visual-refresh/styles.scoped.css +152 -152
  9. package/app-layout/visual-refresh/styles.selectors.js +59 -59
  10. package/autosuggest/internal.d.ts.map +1 -1
  11. package/autosuggest/internal.js +2 -7
  12. package/autosuggest/internal.js.map +1 -1
  13. package/breadcrumb-group/item/styles.css.js +7 -7
  14. package/breadcrumb-group/item/styles.scoped.css +16 -16
  15. package/breadcrumb-group/item/styles.selectors.js +7 -7
  16. package/button/styles.css.js +18 -18
  17. package/button/styles.scoped.css +163 -163
  18. package/button/styles.selectors.js +18 -18
  19. package/checkbox/styles.css.js +3 -3
  20. package/checkbox/styles.scoped.css +7 -7
  21. package/checkbox/styles.selectors.js +3 -3
  22. package/code-editor/styles.css.js +33 -33
  23. package/code-editor/styles.scoped.css +115 -115
  24. package/code-editor/styles.selectors.js +33 -33
  25. package/date-range-picker/calendar/index.d.ts +1 -1
  26. package/date-range-picker/calendar/index.d.ts.map +1 -1
  27. package/date-range-picker/calendar/index.js +3 -1
  28. package/date-range-picker/calendar/index.js.map +1 -1
  29. package/date-range-picker/dropdown.d.ts +1 -2
  30. package/date-range-picker/dropdown.d.ts.map +1 -1
  31. package/date-range-picker/dropdown.js.map +1 -1
  32. package/date-range-picker/index.d.ts.map +1 -1
  33. package/date-range-picker/index.js +1 -3
  34. package/date-range-picker/index.js.map +1 -1
  35. package/expandable-section/styles.css.js +20 -20
  36. package/expandable-section/styles.scoped.css +42 -42
  37. package/expandable-section/styles.selectors.js +20 -20
  38. package/help-panel/styles.css.js +4 -4
  39. package/help-panel/styles.scoped.css +59 -59
  40. package/help-panel/styles.selectors.js +4 -4
  41. package/input/styles.css.js +13 -13
  42. package/input/styles.scoped.css +35 -35
  43. package/input/styles.selectors.js +13 -13
  44. package/internal/base-component/styles.scoped.css +5 -3
  45. package/internal/components/button-trigger/styles.css.js +9 -9
  46. package/internal/components/button-trigger/styles.scoped.css +26 -26
  47. package/internal/components/button-trigger/styles.selectors.js +9 -9
  48. package/internal/components/chart-legend/styles.css.js +7 -7
  49. package/internal/components/chart-legend/styles.scoped.css +16 -16
  50. package/internal/components/chart-legend/styles.selectors.js +7 -7
  51. package/internal/components/dropdown/index.d.ts +1 -1
  52. package/internal/components/dropdown/index.d.ts.map +1 -1
  53. package/internal/components/dropdown/index.js +9 -3
  54. package/internal/components/dropdown/index.js.map +1 -1
  55. package/internal/components/dropdown/interfaces.d.ts +4 -0
  56. package/internal/components/dropdown/interfaces.d.ts.map +1 -1
  57. package/internal/components/dropdown/interfaces.js.map +1 -1
  58. package/internal/components/filtering-token/styles.css.js +7 -7
  59. package/internal/components/filtering-token/styles.scoped.css +15 -15
  60. package/internal/components/filtering-token/styles.selectors.js +7 -7
  61. package/internal/components/menu-dropdown/styles.css.js +7 -7
  62. package/internal/components/menu-dropdown/styles.scoped.css +14 -14
  63. package/internal/components/menu-dropdown/styles.selectors.js +7 -7
  64. package/internal/environment.js +1 -1
  65. package/internal/generated/theming/index.cjs +18 -12
  66. package/internal/generated/theming/index.js +18 -12
  67. package/link/styles.css.js +18 -18
  68. package/link/styles.scoped.css +70 -70
  69. package/link/styles.selectors.js +18 -18
  70. package/package.json +1 -1
  71. package/pagination/styles.css.js +9 -9
  72. package/pagination/styles.scoped.css +24 -24
  73. package/pagination/styles.selectors.js +9 -9
  74. package/popover/styles.css.js +48 -48
  75. package/popover/styles.scoped.css +63 -63
  76. package/popover/styles.selectors.js +48 -48
  77. package/property-filter/controller.d.ts +1 -1
  78. package/property-filter/controller.d.ts.map +1 -1
  79. package/property-filter/controller.js +16 -26
  80. package/property-filter/controller.js.map +1 -1
  81. package/property-filter/interfaces.d.ts +1 -1
  82. package/property-filter/interfaces.js.map +1 -1
  83. package/property-filter/utils.d.ts +7 -0
  84. package/property-filter/utils.d.ts.map +1 -0
  85. package/property-filter/utils.js +62 -0
  86. package/property-filter/utils.js.map +1 -0
  87. package/radio-group/styles.css.js +9 -9
  88. package/radio-group/styles.scoped.css +17 -17
  89. package/radio-group/styles.selectors.js +9 -9
  90. package/segmented-control/styles.css.js +14 -14
  91. package/segmented-control/styles.scoped.css +34 -34
  92. package/segmented-control/styles.selectors.js +14 -14
  93. package/side-navigation/styles.css.js +22 -22
  94. package/side-navigation/styles.scoped.css +33 -33
  95. package/side-navigation/styles.selectors.js +22 -22
  96. package/split-panel/styles.css.js +58 -58
  97. package/split-panel/styles.scoped.css +81 -81
  98. package/split-panel/styles.selectors.js +58 -58
  99. package/table/header-cell/styles.css.js +14 -14
  100. package/table/header-cell/styles.scoped.css +26 -26
  101. package/table/header-cell/styles.selectors.js +14 -14
  102. package/tabs/styles.css.js +21 -21
  103. package/tabs/styles.scoped.css +38 -38
  104. package/tabs/styles.selectors.js +21 -21
  105. package/tag-editor/styles.css.js +3 -3
  106. package/tag-editor/styles.scoped.css +11 -11
  107. package/tag-editor/styles.selectors.js +3 -3
  108. package/text-content/styles.css.js +1 -1
  109. package/text-content/styles.scoped.css +61 -61
  110. package/text-content/styles.selectors.js +1 -1
  111. package/textarea/styles.css.js +4 -4
  112. package/textarea/styles.scoped.css +14 -14
  113. package/textarea/styles.selectors.js +4 -4
  114. package/tiles/styles.css.js +28 -28
  115. package/tiles/styles.scoped.css +69 -69
  116. package/tiles/styles.selectors.js +28 -28
  117. package/toggle/styles.css.js +8 -8
  118. package/toggle/styles.scoped.css +15 -15
  119. package/toggle/styles.selectors.js +8 -8
  120. package/token-group/styles.css.js +7 -7
  121. package/token-group/styles.scoped.css +25 -25
  122. package/token-group/styles.selectors.js +7 -7
  123. package/top-navigation/1.0-beta/styles.css.js +25 -25
  124. package/top-navigation/1.0-beta/styles.scoped.css +43 -43
  125. package/top-navigation/1.0-beta/styles.selectors.js +25 -25
  126. package/top-navigation/styles.css.js +47 -47
  127. package/top-navigation/styles.scoped.css +68 -68
  128. package/top-navigation/styles.selectors.js +47 -47
  129. package/tutorial-panel/components/tutorial-list/styles.css.js +18 -18
  130. package/tutorial-panel/components/tutorial-list/styles.scoped.css +29 -29
  131. package/tutorial-panel/components/tutorial-list/styles.selectors.js +18 -18
  132. package/wizard/styles.css.js +31 -31
  133. package/wizard/styles.scoped.css +59 -59
  134. package/wizard/styles.selectors.js +31 -31
@@ -13,6 +13,8 @@ import { useVisualRefresh } from '../../hooks/use-visual-mode';
13
13
  import { usePortalModeClasses } from '../../hooks/use-portal-mode-classes';
14
14
  import { DropdownContextProvider } from './context';
15
15
  import { useMobile } from '../../hooks/use-mobile';
16
+ import TabTrap from '../tab-trap/index.js';
17
+ import { getFirstFocusable, getLastFocusable } from '../focus-lock/utils.js';
16
18
  var DropdownContainer = function (_a) {
17
19
  var children = _a.children, _b = _a.renderWithPortal, renderWithPortal = _b === void 0 ? false : _b, id = _a.id, open = _a.open;
18
20
  if (renderWithPortal) {
@@ -49,7 +51,7 @@ var TransitionContent = function (_a) {
49
51
  footer))))));
50
52
  };
51
53
  var Dropdown = function (_a) {
52
- var children = _a.children, trigger = _a.trigger, open = _a.open, onDropdownClose = _a.onDropdownClose, onMouseDown = _a.onMouseDown, header = _a.header, footer = _a.footer, dropdownId = _a.dropdownId, _b = _a.stretchTriggerHeight, stretchTriggerHeight = _b === void 0 ? false : _b, _c = _a.stretchWidth, stretchWidth = _c === void 0 ? true : _c, _d = _a.stretchHeight, stretchHeight = _d === void 0 ? false : _d, _e = _a.stretchToTriggerWidth, stretchToTriggerWidth = _e === void 0 ? true : _e, _f = _a.expandToViewport, expandToViewport = _f === void 0 ? false : _f, _g = _a.preferCenter, preferCenter = _g === void 0 ? false : _g, _h = _a.interior, interior = _h === void 0 ? false : _h, minWidth = _a.minWidth, _j = _a.hasContent, hasContent = _j === void 0 ? true : _j, _k = _a.scrollable, scrollable = _k === void 0 ? true : _k;
54
+ var children = _a.children, trigger = _a.trigger, open = _a.open, onDropdownClose = _a.onDropdownClose, onMouseDown = _a.onMouseDown, header = _a.header, footer = _a.footer, dropdownId = _a.dropdownId, _b = _a.stretchTriggerHeight, stretchTriggerHeight = _b === void 0 ? false : _b, _c = _a.stretchWidth, stretchWidth = _c === void 0 ? true : _c, _d = _a.stretchHeight, stretchHeight = _d === void 0 ? false : _d, _e = _a.stretchToTriggerWidth, stretchToTriggerWidth = _e === void 0 ? true : _e, _f = _a.expandToViewport, expandToViewport = _f === void 0 ? false : _f, _g = _a.preferCenter, preferCenter = _g === void 0 ? false : _g, _h = _a.interior, interior = _h === void 0 ? false : _h, minWidth = _a.minWidth, _j = _a.hasContent, hasContent = _j === void 0 ? true : _j, _k = _a.scrollable, scrollable = _k === void 0 ? true : _k, _l = _a.trapFocus, trapFocus = _l === void 0 ? false : _l;
53
55
  var triggerRef = useRef(null);
54
56
  var dropdownRef = useRef(null);
55
57
  // This container is only needed to apply max-height to. We can't move max-height to it's parent
@@ -59,7 +61,7 @@ var Dropdown = function (_a) {
59
61
  var fixedPosition = useRef(null);
60
62
  var isRefresh = useVisualRefresh(triggerRef);
61
63
  var dropdownClasses = usePortalModeClasses(triggerRef);
62
- var _l = useState('bottom-right'), position = _l[0], setPosition = _l[1];
64
+ var _m = useState('bottom-right'), position = _m[0], setPosition = _m[1];
63
65
  var isMobile = useMobile();
64
66
  var setDropdownPosition = function (position, triggerBox, target, verticalContainer) {
65
67
  var entireWidth = !interior && stretchWidth;
@@ -226,8 +228,12 @@ var Dropdown = function (_a) {
226
228
  }, [open, expandToViewport]);
227
229
  return (React.createElement("div", { className: clsx(styles.root, interior && styles.interior, stretchTriggerHeight && styles['stretch-trigger-height']) },
228
230
  React.createElement("div", { className: clsx(stretchTriggerHeight && styles['stretch-trigger-height']), ref: triggerRef }, trigger),
231
+ React.createElement(TabTrap, { focusNextCallback: function () { var _a; return dropdownRef.current && ((_a = getFirstFocusable(dropdownRef.current)) === null || _a === void 0 ? void 0 : _a.focus()); }, disabled: !open || !trapFocus }),
229
232
  React.createElement(DropdownContainer, { renderWithPortal: expandToViewport && !interior, id: dropdownId, open: open },
230
- React.createElement(Transition, { "in": open !== null && open !== void 0 ? open : false, exit: false }, function (state, ref) { return (React.createElement(TransitionContent, { state: state, transitionRef: ref, dropdownClasses: dropdownClasses, open: open, stretchWidth: stretchWidth, interior: interior, header: header, hasContent: hasContent, expandToViewport: expandToViewport, footer: footer, onMouseDown: onMouseDown, isRefresh: isRefresh, dropdownRef: dropdownRef, verticalContainerRef: verticalContainerRef, position: position }, children)); }))));
233
+ React.createElement(Transition, { "in": open !== null && open !== void 0 ? open : false, exit: false }, function (state, ref) { return (React.createElement("div", { onBlur: function (event) { return trapFocus && event.stopPropagation(); } },
234
+ React.createElement(TabTrap, { focusNextCallback: function () { var _a; return triggerRef.current && ((_a = getLastFocusable(triggerRef.current)) === null || _a === void 0 ? void 0 : _a.focus()); }, disabled: !open || !trapFocus }),
235
+ React.createElement(TransitionContent, { state: state, transitionRef: ref, dropdownClasses: dropdownClasses, open: open, stretchWidth: stretchWidth, interior: interior, header: header, hasContent: hasContent, expandToViewport: expandToViewport, footer: footer, onMouseDown: onMouseDown, isRefresh: isRefresh, dropdownRef: dropdownRef, verticalContainerRef: verticalContainerRef, position: position }, children),
236
+ React.createElement(TabTrap, { focusNextCallback: function () { var _a; return triggerRef.current && ((_a = getFirstFocusable(triggerRef.current)) === null || _a === void 0 ? void 0 : _a.focus()); }, disabled: !open || !trapFocus }))); }))));
231
237
  };
232
238
  var isInteriorPosition = function (position) { return position.bottom !== undefined; };
233
239
  export default Dropdown;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/internal/components/dropdown/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 styles from './styles.css.js';\nimport clsx from 'clsx';\nimport { useMergeRefs } from '../../hooks/use-merge-refs';\nimport React, { useEffect, useLayoutEffect, useRef, useState } from 'react';\nimport { createPortal } from 'react-dom';\nimport { fireNonCancelableEvent } from '../../events';\nimport { DropdownProps } from './interfaces';\nimport { DropdownPosition, InteriorDropdownPosition, calculatePosition } from './dropdown-fit-handler';\nimport { Transition, TransitionStatus } from '../transition';\nimport { useVisualRefresh } from '../../hooks/use-visual-mode';\nimport { usePortalModeClasses } from '../../hooks/use-portal-mode-classes';\nimport { DropdownContextProvider, DropdownContextProviderProps } from './context';\nimport { useMobile } from '../../hooks/use-mobile';\n\ninterface DropdownContainerProps {\n children?: React.ReactNode;\n renderWithPortal?: boolean;\n id?: string;\n open?: boolean;\n}\n\nconst DropdownContainer = ({ children, renderWithPortal = false, id, open }: DropdownContainerProps) => {\n if (renderWithPortal) {\n if (open) {\n return createPortal(<div id={id}>{children}</div>, document.body);\n } else {\n return null;\n }\n } else {\n return <>{children}</>;\n }\n};\n\ninterface TransitionContentProps {\n state: TransitionStatus;\n transitionRef: React.MutableRefObject<any>;\n dropdownClasses: string;\n stretchWidth: boolean;\n interior: boolean;\n hasContent: boolean;\n isRefresh: boolean;\n dropdownRef: React.RefObject<HTMLDivElement>;\n verticalContainerRef: React.RefObject<HTMLDivElement>;\n expandToViewport?: boolean;\n header?: React.ReactNode;\n children?: React.ReactNode;\n footer?: React.ReactNode;\n position?: DropdownContextProviderProps['position'];\n open?: boolean;\n onMouseDown?: React.MouseEventHandler<Element>;\n}\n\nconst TransitionContent = ({\n state,\n transitionRef,\n dropdownClasses,\n stretchWidth,\n interior,\n hasContent,\n isRefresh,\n dropdownRef,\n verticalContainerRef,\n expandToViewport,\n header,\n children,\n footer,\n position,\n open,\n onMouseDown,\n}: TransitionContentProps) => {\n const contentRef = useMergeRefs(dropdownRef, transitionRef);\n return (\n <div\n className={clsx(styles.dropdown, dropdownClasses, {\n [styles.open]: open,\n [styles['with-limited-width']]: !stretchWidth,\n [styles['hide-upper-border']]: stretchWidth,\n [styles.interior]: interior,\n [styles['is-empty']]: !header && !hasContent,\n [styles.refresh]: isRefresh,\n [styles['use-portal']]: expandToViewport && !interior,\n })}\n ref={contentRef}\n data-open={open}\n data-animating={state !== 'exited'}\n onMouseDown={onMouseDown}\n >\n <div className={clsx(styles['dropdown-content-wrapper'], isRefresh && styles.refresh)}>\n <div className={styles['ie11-wrapper']}>\n <div ref={verticalContainerRef} className={styles['dropdown-content']}>\n <DropdownContextProvider position={position}>\n {header}\n {children}\n {footer}\n </DropdownContextProvider>\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nconst Dropdown = ({\n children,\n trigger,\n open,\n onDropdownClose,\n onMouseDown,\n header,\n footer,\n dropdownId,\n stretchTriggerHeight = false,\n stretchWidth = true,\n stretchHeight = false,\n stretchToTriggerWidth = true,\n expandToViewport = false,\n preferCenter = false,\n interior = false,\n minWidth,\n hasContent = true,\n scrollable = true,\n}: DropdownProps) => {\n const triggerRef = useRef<HTMLDivElement>(null);\n const dropdownRef = useRef<HTMLDivElement>(null);\n // This container is only needed to apply max-height to. We can't move max-height to it's parent\n // because of an IE11 issue with flexbox. https://github.com/philipwalton/flexbugs/issues/216\n const verticalContainerRef = useRef<HTMLDivElement>(null);\n // To keep track of the initial position (drop up/down) which is kept the same during fixed repositioning\n const fixedPosition = useRef<DropdownPosition | null>(null);\n\n const isRefresh = useVisualRefresh(triggerRef);\n\n const dropdownClasses = usePortalModeClasses(triggerRef);\n const [position, setPosition] = useState<DropdownContextProviderProps['position']>('bottom-right');\n\n const isMobile = useMobile();\n\n const setDropdownPosition = (\n position: DropdownPosition | InteriorDropdownPosition,\n triggerBox: DOMRect,\n target: HTMLDivElement,\n verticalContainer: HTMLDivElement\n ) => {\n const entireWidth = !interior && stretchWidth;\n if (!stretchWidth) {\n // 1px offset for dropdowns where the dropdown itself needs a border, rather than on the items\n verticalContainer.style.maxHeight = `${parseInt(position.height) + 1}px`;\n } else {\n verticalContainer.style.maxHeight = position.height;\n }\n\n if (entireWidth && !expandToViewport) {\n if (stretchToTriggerWidth) {\n target.classList.add(styles['occupy-entire-width']);\n }\n } else {\n target.style.width = position.width;\n }\n // Using styles for main dropdown to adjust its position as preferred alternative\n if (position.dropUp && !interior) {\n target.classList.add(styles['dropdown-drop-up']);\n if (!expandToViewport) {\n target.style.bottom = '100%';\n }\n } else {\n target.classList.remove(styles['dropdown-drop-up']);\n }\n target.classList.add(position.dropLeft ? styles['dropdown-drop-left'] : styles['dropdown-drop-right']);\n\n if (position.left && position.left !== 'auto') {\n target.style.left = position.left;\n }\n\n // Position normal overflow dropdowns with fixed positioning relative to viewport\n if (expandToViewport && !interior) {\n target.style.position = 'fixed';\n if (position.dropUp) {\n target.style.bottom = `calc(100% - ${triggerBox.top}px)`;\n } else {\n target.style.top = `${triggerBox.bottom}px`;\n }\n if (position.dropLeft) {\n target.style.left = `calc(${triggerBox.right}px - ${position.width})`;\n } else {\n target.style.left = `${triggerBox.left}px`;\n }\n // Keep track of the initial dropdown position and direction.\n // Dropdown direction doesn't need to change as the user scrolls, just needs to stay attached to the trigger.\n fixedPosition.current = position;\n return;\n }\n\n // For an interior dropdown (the fly out) we need exact values for positioning\n // and classes are not enough\n // usage of relative position is impossible due to overwrite of overflow-x\n if (interior && isInteriorPosition(position)) {\n if (position.dropUp) {\n target.style.bottom = position.bottom;\n } else {\n target.style.top = position.top;\n }\n target.style.left = position.left;\n }\n\n if (position.dropUp && position.dropLeft) {\n setPosition('top-left');\n } else if (position.dropUp) {\n setPosition('top-right');\n } else if (position.dropLeft) {\n setPosition('bottom-left');\n } else {\n setPosition('bottom-right');\n }\n };\n\n useLayoutEffect(() => {\n const onDropdownOpen = () => {\n if (open && dropdownRef.current && triggerRef.current && verticalContainerRef.current) {\n // calculate scroll width only for dropdowns that has a scrollbar and ignore it for date picker components\n if (scrollable) {\n dropdownRef.current.classList.add(styles.nowrap);\n }\n setDropdownPosition(\n ...calculatePosition(\n dropdownRef.current,\n triggerRef.current,\n verticalContainerRef.current,\n interior,\n expandToViewport,\n preferCenter,\n stretchWidth,\n stretchHeight,\n isMobile,\n minWidth\n ),\n dropdownRef.current,\n verticalContainerRef.current\n );\n if (scrollable) {\n dropdownRef.current.classList.remove(styles.nowrap);\n }\n }\n };\n onDropdownOpen();\n\n if (open) {\n // window may scroll when dropdown opens, for example when soft keyboard shows up\n window.addEventListener('scroll', onDropdownOpen);\n // only listen to window scroll within very short time after the dropdown opens\n // do not want to interfere dropdown position on scroll afterwards\n const timeoutId = setTimeout(() => {\n window.removeEventListener('scroll', onDropdownOpen);\n }, 500);\n\n return () => {\n clearTimeout(timeoutId);\n window.removeEventListener('scroll', onDropdownOpen);\n };\n }\n // See AWSUI-13040\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [open, dropdownRef, triggerRef, verticalContainerRef, interior, stretchWidth, isMobile]);\n\n // subscribe to outside click\n useEffect(() => {\n if (!open) {\n return;\n }\n const clickListener = (e: MouseEvent) => {\n if (!dropdownRef.current?.contains(e.target as Node)) {\n fireNonCancelableEvent(onDropdownClose);\n }\n };\n\n /*\n * This small delay allows the event that opened the dropdown to\n * finish bubbling, so that it is not immediately captured here.\n */\n const timeout = setTimeout(() => {\n window.addEventListener('click', clickListener);\n }, 0);\n\n return () => {\n clearTimeout(timeout);\n window.removeEventListener('click', clickListener);\n };\n }, [open, onDropdownClose]);\n\n // sync dropdown position on scroll and resize\n useLayoutEffect(() => {\n if (!expandToViewport || !open) {\n return;\n }\n const updateDropdownPosition = () => {\n if (triggerRef.current && dropdownRef.current && verticalContainerRef.current) {\n const triggerRect = triggerRef.current.getBoundingClientRect();\n const target = dropdownRef.current;\n if (fixedPosition.current) {\n if (fixedPosition.current.dropUp) {\n dropdownRef.current.style.bottom = `calc(100% - ${triggerRect.top}px)`;\n } else {\n target.style.top = `${triggerRect.bottom}px`;\n }\n if (fixedPosition.current.dropLeft) {\n target.style.left = `calc(${triggerRect.right}px - ${fixedPosition.current.width})`;\n } else {\n target.style.left = `${triggerRect.left}px`;\n }\n }\n }\n };\n\n updateDropdownPosition();\n\n window.addEventListener('scroll', updateDropdownPosition, true);\n window.addEventListener('resize', updateDropdownPosition, true);\n return () => {\n window.removeEventListener('scroll', updateDropdownPosition, true);\n window.removeEventListener('resize', updateDropdownPosition, true);\n };\n }, [open, expandToViewport]);\n\n return (\n <div\n className={clsx(\n styles.root,\n interior && styles.interior,\n stretchTriggerHeight && styles['stretch-trigger-height']\n )}\n >\n <div className={clsx(stretchTriggerHeight && styles['stretch-trigger-height'])} ref={triggerRef}>\n {trigger}\n </div>\n <DropdownContainer renderWithPortal={expandToViewport && !interior} id={dropdownId} open={open}>\n <Transition in={open ?? false} exit={false}>\n {(state, ref) => (\n <TransitionContent\n state={state}\n transitionRef={ref}\n dropdownClasses={dropdownClasses}\n open={open}\n stretchWidth={stretchWidth}\n interior={interior}\n header={header}\n hasContent={hasContent}\n expandToViewport={expandToViewport}\n footer={footer}\n onMouseDown={onMouseDown}\n isRefresh={isRefresh}\n dropdownRef={dropdownRef}\n verticalContainerRef={verticalContainerRef}\n position={position}\n >\n {children}\n </TransitionContent>\n )}\n </Transition>\n </DropdownContainer>\n </div>\n );\n};\n\nconst isInteriorPosition = (\n position: DropdownPosition | InteriorDropdownPosition\n): position is InteriorDropdownPosition => (position as InteriorDropdownPosition).bottom !== undefined;\n\nexport default Dropdown;\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/internal/components/dropdown/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 styles from './styles.css.js';\nimport clsx from 'clsx';\nimport { useMergeRefs } from '../../hooks/use-merge-refs';\nimport React, { useEffect, useLayoutEffect, useRef, useState } from 'react';\nimport { createPortal } from 'react-dom';\nimport { fireNonCancelableEvent } from '../../events';\nimport { DropdownProps } from './interfaces';\nimport { DropdownPosition, InteriorDropdownPosition, calculatePosition } from './dropdown-fit-handler';\nimport { Transition, TransitionStatus } from '../transition';\nimport { useVisualRefresh } from '../../hooks/use-visual-mode';\nimport { usePortalModeClasses } from '../../hooks/use-portal-mode-classes';\nimport { DropdownContextProvider, DropdownContextProviderProps } from './context';\nimport { useMobile } from '../../hooks/use-mobile';\nimport TabTrap from '../tab-trap/index.js';\nimport { getFirstFocusable, getLastFocusable } from '../focus-lock/utils.js';\n\ninterface DropdownContainerProps {\n children?: React.ReactNode;\n renderWithPortal?: boolean;\n id?: string;\n open?: boolean;\n}\n\nconst DropdownContainer = ({ children, renderWithPortal = false, id, open }: DropdownContainerProps) => {\n if (renderWithPortal) {\n if (open) {\n return createPortal(<div id={id}>{children}</div>, document.body);\n } else {\n return null;\n }\n } else {\n return <>{children}</>;\n }\n};\n\ninterface TransitionContentProps {\n state: TransitionStatus;\n transitionRef: React.MutableRefObject<any>;\n dropdownClasses: string;\n stretchWidth: boolean;\n interior: boolean;\n hasContent: boolean;\n isRefresh: boolean;\n dropdownRef: React.RefObject<HTMLDivElement>;\n verticalContainerRef: React.RefObject<HTMLDivElement>;\n expandToViewport?: boolean;\n header?: React.ReactNode;\n children?: React.ReactNode;\n footer?: React.ReactNode;\n position?: DropdownContextProviderProps['position'];\n open?: boolean;\n onMouseDown?: React.MouseEventHandler<Element>;\n}\n\nconst TransitionContent = ({\n state,\n transitionRef,\n dropdownClasses,\n stretchWidth,\n interior,\n hasContent,\n isRefresh,\n dropdownRef,\n verticalContainerRef,\n expandToViewport,\n header,\n children,\n footer,\n position,\n open,\n onMouseDown,\n}: TransitionContentProps) => {\n const contentRef = useMergeRefs(dropdownRef, transitionRef);\n return (\n <div\n className={clsx(styles.dropdown, dropdownClasses, {\n [styles.open]: open,\n [styles['with-limited-width']]: !stretchWidth,\n [styles['hide-upper-border']]: stretchWidth,\n [styles.interior]: interior,\n [styles['is-empty']]: !header && !hasContent,\n [styles.refresh]: isRefresh,\n [styles['use-portal']]: expandToViewport && !interior,\n })}\n ref={contentRef}\n data-open={open}\n data-animating={state !== 'exited'}\n onMouseDown={onMouseDown}\n >\n <div className={clsx(styles['dropdown-content-wrapper'], isRefresh && styles.refresh)}>\n <div className={styles['ie11-wrapper']}>\n <div ref={verticalContainerRef} className={styles['dropdown-content']}>\n <DropdownContextProvider position={position}>\n {header}\n {children}\n {footer}\n </DropdownContextProvider>\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nconst Dropdown = ({\n children,\n trigger,\n open,\n onDropdownClose,\n onMouseDown,\n header,\n footer,\n dropdownId,\n stretchTriggerHeight = false,\n stretchWidth = true,\n stretchHeight = false,\n stretchToTriggerWidth = true,\n expandToViewport = false,\n preferCenter = false,\n interior = false,\n minWidth,\n hasContent = true,\n scrollable = true,\n trapFocus = false,\n}: DropdownProps) => {\n const triggerRef = useRef<HTMLDivElement>(null);\n const dropdownRef = useRef<HTMLDivElement>(null);\n // This container is only needed to apply max-height to. We can't move max-height to it's parent\n // because of an IE11 issue with flexbox. https://github.com/philipwalton/flexbugs/issues/216\n const verticalContainerRef = useRef<HTMLDivElement>(null);\n // To keep track of the initial position (drop up/down) which is kept the same during fixed repositioning\n const fixedPosition = useRef<DropdownPosition | null>(null);\n\n const isRefresh = useVisualRefresh(triggerRef);\n\n const dropdownClasses = usePortalModeClasses(triggerRef);\n const [position, setPosition] = useState<DropdownContextProviderProps['position']>('bottom-right');\n\n const isMobile = useMobile();\n\n const setDropdownPosition = (\n position: DropdownPosition | InteriorDropdownPosition,\n triggerBox: DOMRect,\n target: HTMLDivElement,\n verticalContainer: HTMLDivElement\n ) => {\n const entireWidth = !interior && stretchWidth;\n if (!stretchWidth) {\n // 1px offset for dropdowns where the dropdown itself needs a border, rather than on the items\n verticalContainer.style.maxHeight = `${parseInt(position.height) + 1}px`;\n } else {\n verticalContainer.style.maxHeight = position.height;\n }\n\n if (entireWidth && !expandToViewport) {\n if (stretchToTriggerWidth) {\n target.classList.add(styles['occupy-entire-width']);\n }\n } else {\n target.style.width = position.width;\n }\n // Using styles for main dropdown to adjust its position as preferred alternative\n if (position.dropUp && !interior) {\n target.classList.add(styles['dropdown-drop-up']);\n if (!expandToViewport) {\n target.style.bottom = '100%';\n }\n } else {\n target.classList.remove(styles['dropdown-drop-up']);\n }\n target.classList.add(position.dropLeft ? styles['dropdown-drop-left'] : styles['dropdown-drop-right']);\n\n if (position.left && position.left !== 'auto') {\n target.style.left = position.left;\n }\n\n // Position normal overflow dropdowns with fixed positioning relative to viewport\n if (expandToViewport && !interior) {\n target.style.position = 'fixed';\n if (position.dropUp) {\n target.style.bottom = `calc(100% - ${triggerBox.top}px)`;\n } else {\n target.style.top = `${triggerBox.bottom}px`;\n }\n if (position.dropLeft) {\n target.style.left = `calc(${triggerBox.right}px - ${position.width})`;\n } else {\n target.style.left = `${triggerBox.left}px`;\n }\n // Keep track of the initial dropdown position and direction.\n // Dropdown direction doesn't need to change as the user scrolls, just needs to stay attached to the trigger.\n fixedPosition.current = position;\n return;\n }\n\n // For an interior dropdown (the fly out) we need exact values for positioning\n // and classes are not enough\n // usage of relative position is impossible due to overwrite of overflow-x\n if (interior && isInteriorPosition(position)) {\n if (position.dropUp) {\n target.style.bottom = position.bottom;\n } else {\n target.style.top = position.top;\n }\n target.style.left = position.left;\n }\n\n if (position.dropUp && position.dropLeft) {\n setPosition('top-left');\n } else if (position.dropUp) {\n setPosition('top-right');\n } else if (position.dropLeft) {\n setPosition('bottom-left');\n } else {\n setPosition('bottom-right');\n }\n };\n\n useLayoutEffect(() => {\n const onDropdownOpen = () => {\n if (open && dropdownRef.current && triggerRef.current && verticalContainerRef.current) {\n // calculate scroll width only for dropdowns that has a scrollbar and ignore it for date picker components\n if (scrollable) {\n dropdownRef.current.classList.add(styles.nowrap);\n }\n setDropdownPosition(\n ...calculatePosition(\n dropdownRef.current,\n triggerRef.current,\n verticalContainerRef.current,\n interior,\n expandToViewport,\n preferCenter,\n stretchWidth,\n stretchHeight,\n isMobile,\n minWidth\n ),\n dropdownRef.current,\n verticalContainerRef.current\n );\n if (scrollable) {\n dropdownRef.current.classList.remove(styles.nowrap);\n }\n }\n };\n onDropdownOpen();\n\n if (open) {\n // window may scroll when dropdown opens, for example when soft keyboard shows up\n window.addEventListener('scroll', onDropdownOpen);\n // only listen to window scroll within very short time after the dropdown opens\n // do not want to interfere dropdown position on scroll afterwards\n const timeoutId = setTimeout(() => {\n window.removeEventListener('scroll', onDropdownOpen);\n }, 500);\n\n return () => {\n clearTimeout(timeoutId);\n window.removeEventListener('scroll', onDropdownOpen);\n };\n }\n // See AWSUI-13040\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [open, dropdownRef, triggerRef, verticalContainerRef, interior, stretchWidth, isMobile]);\n\n // subscribe to outside click\n useEffect(() => {\n if (!open) {\n return;\n }\n const clickListener = (e: MouseEvent) => {\n if (!dropdownRef.current?.contains(e.target as Node)) {\n fireNonCancelableEvent(onDropdownClose);\n }\n };\n\n /*\n * This small delay allows the event that opened the dropdown to\n * finish bubbling, so that it is not immediately captured here.\n */\n const timeout = setTimeout(() => {\n window.addEventListener('click', clickListener);\n }, 0);\n\n return () => {\n clearTimeout(timeout);\n window.removeEventListener('click', clickListener);\n };\n }, [open, onDropdownClose]);\n\n // sync dropdown position on scroll and resize\n useLayoutEffect(() => {\n if (!expandToViewport || !open) {\n return;\n }\n const updateDropdownPosition = () => {\n if (triggerRef.current && dropdownRef.current && verticalContainerRef.current) {\n const triggerRect = triggerRef.current.getBoundingClientRect();\n const target = dropdownRef.current;\n if (fixedPosition.current) {\n if (fixedPosition.current.dropUp) {\n dropdownRef.current.style.bottom = `calc(100% - ${triggerRect.top}px)`;\n } else {\n target.style.top = `${triggerRect.bottom}px`;\n }\n if (fixedPosition.current.dropLeft) {\n target.style.left = `calc(${triggerRect.right}px - ${fixedPosition.current.width})`;\n } else {\n target.style.left = `${triggerRect.left}px`;\n }\n }\n }\n };\n\n updateDropdownPosition();\n\n window.addEventListener('scroll', updateDropdownPosition, true);\n window.addEventListener('resize', updateDropdownPosition, true);\n return () => {\n window.removeEventListener('scroll', updateDropdownPosition, true);\n window.removeEventListener('resize', updateDropdownPosition, true);\n };\n }, [open, expandToViewport]);\n\n return (\n <div\n className={clsx(\n styles.root,\n interior && styles.interior,\n stretchTriggerHeight && styles['stretch-trigger-height']\n )}\n >\n <div className={clsx(stretchTriggerHeight && styles['stretch-trigger-height'])} ref={triggerRef}>\n {trigger}\n </div>\n\n <TabTrap\n focusNextCallback={() => dropdownRef.current && getFirstFocusable(dropdownRef.current)?.focus()}\n disabled={!open || !trapFocus}\n />\n\n <DropdownContainer renderWithPortal={expandToViewport && !interior} id={dropdownId} open={open}>\n <Transition in={open ?? false} exit={false}>\n {(state, ref) => (\n <div onBlur={event => trapFocus && event.stopPropagation()}>\n <TabTrap\n focusNextCallback={() => triggerRef.current && getLastFocusable(triggerRef.current)?.focus()}\n disabled={!open || !trapFocus}\n />\n\n <TransitionContent\n state={state}\n transitionRef={ref}\n dropdownClasses={dropdownClasses}\n open={open}\n stretchWidth={stretchWidth}\n interior={interior}\n header={header}\n hasContent={hasContent}\n expandToViewport={expandToViewport}\n footer={footer}\n onMouseDown={onMouseDown}\n isRefresh={isRefresh}\n dropdownRef={dropdownRef}\n verticalContainerRef={verticalContainerRef}\n position={position}\n >\n {children}\n </TransitionContent>\n\n <TabTrap\n focusNextCallback={() => triggerRef.current && getFirstFocusable(triggerRef.current)?.focus()}\n disabled={!open || !trapFocus}\n />\n </div>\n )}\n </Transition>\n </DropdownContainer>\n </div>\n );\n};\n\nconst isInteriorPosition = (\n position: DropdownPosition | InteriorDropdownPosition\n): position is InteriorDropdownPosition => (position as InteriorDropdownPosition).bottom !== undefined;\n\nexport default Dropdown;\n"]}
@@ -107,6 +107,10 @@ export interface DropdownProps extends ExpandToViewport {
107
107
  * Whether the dropdown will have a scrollbar or not
108
108
  */
109
109
  scrollable?: boolean;
110
+ /**
111
+ * Whether the dropdown will have a focus trap including trigger, header, content and footer.
112
+ */
113
+ trapFocus?: boolean;
110
114
  }
111
115
  export interface ExpandToViewport {
112
116
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../../../src/internal/components/dropdown/interfaces.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,oBAAY,oBAAoB,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;AAC9D,MAAM,WAAW,sBAAsB;IACrC,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,qBAAsB,SAAQ,gBAAgB;IAC7D;;;;;;;;;;OAUG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;;;;;;;;;;;QAaI;IACJ,WAAW,CAAC,EAAE,yBAAyB,CAAC,sBAAsB,CAAC,CAAC;CACjE;AAED,MAAM,WAAW,aAAc,SAAQ,gBAAgB;IACrD;;OAEG;IACH,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB;;OAEG;IACH,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB;;OAEG;IACH,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB;;OAEG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B;;OAEG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;OAEG;IACH,eAAe,CAAC,EAAE,yBAAyB,CAAC,IAAI,CAAC,CAAC;IAClD;;OAEG;IACH,WAAW,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC;IACtC;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;OAEG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAE/B;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAEhC;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B;;;;;;;OAOG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B"}
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../../../src/internal/components/dropdown/interfaces.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,oBAAY,oBAAoB,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;AAC9D,MAAM,WAAW,sBAAsB;IACrC,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,qBAAsB,SAAQ,gBAAgB;IAC7D;;;;;;;;;;OAUG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;;;;;;;;;;;QAaI;IACJ,WAAW,CAAC,EAAE,yBAAyB,CAAC,sBAAsB,CAAC,CAAC;CACjE;AAED,MAAM,WAAW,aAAc,SAAQ,gBAAgB;IACrD;;OAEG;IACH,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB;;OAEG;IACH,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB;;OAEG;IACH,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB;;OAEG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B;;OAEG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;OAEG;IACH,eAAe,CAAC,EAAE,yBAAyB,CAAC,IAAI,CAAC,CAAC;IAClD;;OAEG;IACH,WAAW,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC;IACtC;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;OAEG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAE/B;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAEhC;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B;;;;;;;OAOG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B"}
@@ -1 +1 @@
1
- {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../../../src/internal/components/dropdown/interfaces.ts"],"names":[],"mappings":"","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { NonCancelableEventHandler } from '../../events';\nimport React from 'react';\n\nexport type OptionsFilteringType = 'none' | 'auto' | 'manual';\nexport interface OptionsLoadItemsDetail {\n filteringText: string;\n firstPage: boolean;\n samePage: boolean;\n}\n\nexport interface BaseDropdownHostProps extends ExpandToViewport {\n /**\n * If you have more than 500 options, enable this flag to apply a performance optimization\n * that makes the filtering experience smoother. We don't recommend enabling the feature if you\n * have less than 500 options, because the improvements to performance are offset by a\n * visible scrolling lag.\n *\n * When you set this flag to `true`, it removes options that are not currently in view from the DOM.\n * If your test accesses such options, you need to first scroll the options container\n * to the correct offset, before performing any operations on them. Use the element returned\n * by the `findOptionsContainer` test utility for this.\n */\n virtualScroll?: boolean;\n\n /**\n * Use this event to implement the asynchronous behavior for the component.\n *\n * The event is called in the following situations:\n * * The user scrolls to the end of the list of options, if `statusType` is set to `pending`.\n * * The user clicks on the recovery button in the error state.\n * * The user types inside the input field.\n * * The user focuses the input field.\n *\n * The detail object contains the following properties:\n * * `filteringText` - The value that you need to use to fetch options.\n * * `firstPage` - Indicates that you should fetch the first page of options that match the `filteringText`.\n * * `samePage` - Indicates that you should fetch the same page that you have previously fetched (for example, when the user clicks on the recovery button).\n **/\n onLoadItems?: NonCancelableEventHandler<OptionsLoadItemsDetail>;\n}\n\nexport interface DropdownProps extends ExpandToViewport {\n /**\n * Trigger element.\n */\n trigger: React.ReactNode;\n /**\n * \"Sticky\" header of the dropdown content\n */\n header?: React.ReactNode;\n /**\n * Footer slot fixed at the bottom of the dropdown\n */\n footer?: React.ReactNode;\n /**\n * Dropdown content elements.\n */\n children?: React.ReactNode;\n /**\n * Open state of the dropdown.\n */\n open?: boolean;\n /**\n * Called when a user clicks outside of the dropdown content, when it is open.\n */\n onDropdownClose?: NonCancelableEventHandler<null>;\n /**\n * Called when a mouse button is pressed inside the dropdown content.\n */\n onMouseDown?: React.MouseEventHandler;\n /**\n * Dropdown id\n */\n dropdownId?: string;\n /**\n * Stretches dropdown to occupy entire width.\n */\n stretchWidth?: boolean;\n /**\n * Stretches dropdown to occupy entire height.\n */\n stretchHeight?: boolean;\n\n /**\n * Stretches the trigger to the height of the dropdown container.\n */\n stretchTriggerHeight?: boolean;\n\n /**\n * Whether the dropdown content should be at least as wide as the trigger.\n *\n * @defaultValue true\n */\n stretchToTriggerWidth?: boolean;\n\n /**\n * Determines that the dropdown should preferably be aligned to the center of the trigger\n * instead of dropping left or right.\n */\n preferCenter?: boolean;\n\n /**\n * Indicates if this dropdown lies within a parent dropdown and positions itself relative to it (as a fly out).\n */\n interior?: boolean;\n /**\n * Sets the min width of the dropdown (in px)\n */\n minWidth?: number;\n /**\n * Whether there are items in the dropdown vs. an empty list\n */\n hasContent?: boolean;\n /**\n * Whether the dropdown will have a scrollbar or not\n */\n scrollable?: boolean;\n}\n\nexport interface ExpandToViewport {\n /**\n * Enabling this property will allow the dropdown to extend beyond its parent by using fixed positioning and\n * [React Portals](https://reactjs.org/docs/portals.html).\n * If you want the dropdown to ignore the `overflow` CSS property of its parents,\n * such as in a split view layout, enable this property.\n * However, use discretion. If you don't need to, we recommend you don't enable this property because fixed positioning results\n * in a slight, visible lag when scrolling complex pages.\n */\n expandToViewport?: boolean;\n}\n"]}
1
+ {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../../../src/internal/components/dropdown/interfaces.ts"],"names":[],"mappings":"","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { NonCancelableEventHandler } from '../../events';\nimport React from 'react';\n\nexport type OptionsFilteringType = 'none' | 'auto' | 'manual';\nexport interface OptionsLoadItemsDetail {\n filteringText: string;\n firstPage: boolean;\n samePage: boolean;\n}\n\nexport interface BaseDropdownHostProps extends ExpandToViewport {\n /**\n * If you have more than 500 options, enable this flag to apply a performance optimization\n * that makes the filtering experience smoother. We don't recommend enabling the feature if you\n * have less than 500 options, because the improvements to performance are offset by a\n * visible scrolling lag.\n *\n * When you set this flag to `true`, it removes options that are not currently in view from the DOM.\n * If your test accesses such options, you need to first scroll the options container\n * to the correct offset, before performing any operations on them. Use the element returned\n * by the `findOptionsContainer` test utility for this.\n */\n virtualScroll?: boolean;\n\n /**\n * Use this event to implement the asynchronous behavior for the component.\n *\n * The event is called in the following situations:\n * * The user scrolls to the end of the list of options, if `statusType` is set to `pending`.\n * * The user clicks on the recovery button in the error state.\n * * The user types inside the input field.\n * * The user focuses the input field.\n *\n * The detail object contains the following properties:\n * * `filteringText` - The value that you need to use to fetch options.\n * * `firstPage` - Indicates that you should fetch the first page of options that match the `filteringText`.\n * * `samePage` - Indicates that you should fetch the same page that you have previously fetched (for example, when the user clicks on the recovery button).\n **/\n onLoadItems?: NonCancelableEventHandler<OptionsLoadItemsDetail>;\n}\n\nexport interface DropdownProps extends ExpandToViewport {\n /**\n * Trigger element.\n */\n trigger: React.ReactNode;\n /**\n * \"Sticky\" header of the dropdown content\n */\n header?: React.ReactNode;\n /**\n * Footer slot fixed at the bottom of the dropdown\n */\n footer?: React.ReactNode;\n /**\n * Dropdown content elements.\n */\n children?: React.ReactNode;\n /**\n * Open state of the dropdown.\n */\n open?: boolean;\n /**\n * Called when a user clicks outside of the dropdown content, when it is open.\n */\n onDropdownClose?: NonCancelableEventHandler<null>;\n /**\n * Called when a mouse button is pressed inside the dropdown content.\n */\n onMouseDown?: React.MouseEventHandler;\n /**\n * Dropdown id\n */\n dropdownId?: string;\n /**\n * Stretches dropdown to occupy entire width.\n */\n stretchWidth?: boolean;\n /**\n * Stretches dropdown to occupy entire height.\n */\n stretchHeight?: boolean;\n\n /**\n * Stretches the trigger to the height of the dropdown container.\n */\n stretchTriggerHeight?: boolean;\n\n /**\n * Whether the dropdown content should be at least as wide as the trigger.\n *\n * @defaultValue true\n */\n stretchToTriggerWidth?: boolean;\n\n /**\n * Determines that the dropdown should preferably be aligned to the center of the trigger\n * instead of dropping left or right.\n */\n preferCenter?: boolean;\n\n /**\n * Indicates if this dropdown lies within a parent dropdown and positions itself relative to it (as a fly out).\n */\n interior?: boolean;\n /**\n * Sets the min width of the dropdown (in px)\n */\n minWidth?: number;\n /**\n * Whether there are items in the dropdown vs. an empty list\n */\n hasContent?: boolean;\n /**\n * Whether the dropdown will have a scrollbar or not\n */\n scrollable?: boolean;\n /**\n * Whether the dropdown will have a focus trap including trigger, header, content and footer.\n */\n trapFocus?: boolean;\n}\n\nexport interface ExpandToViewport {\n /**\n * Enabling this property will allow the dropdown to extend beyond its parent by using fixed positioning and\n * [React Portals](https://reactjs.org/docs/portals.html).\n * If you want the dropdown to ignore the `overflow` CSS property of its parents,\n * such as in a split view layout, enable this property.\n * However, use discretion. If you don't need to, we recommend you don't enable this property because fixed positioning results\n * in a slight, visible lag when scrolling complex pages.\n */\n expandToViewport?: boolean;\n}\n"]}
@@ -1,12 +1,12 @@
1
1
 
2
2
  import './styles.scoped.css';
3
3
  export default {
4
- "root": "awsui_root_10m3l_11dnk_97",
5
- "token": "awsui_token_10m3l_11dnk_102",
6
- "show-operation": "awsui_show-operation_10m3l_11dnk_113",
7
- "select": "awsui_select_10m3l_11dnk_119",
8
- "token-content": "awsui_token-content_10m3l_11dnk_123",
9
- "dismiss-button": "awsui_dismiss-button_10m3l_11dnk_127",
10
- "token-disabled": "awsui_token-disabled_10m3l_11dnk_163"
4
+ "root": "awsui_root_10m3l_anb0r_97",
5
+ "token": "awsui_token_10m3l_anb0r_102",
6
+ "show-operation": "awsui_show-operation_10m3l_anb0r_113",
7
+ "select": "awsui_select_10m3l_anb0r_119",
8
+ "token-content": "awsui_token-content_10m3l_anb0r_123",
9
+ "dismiss-button": "awsui_dismiss-button_10m3l_anb0r_127",
10
+ "token-disabled": "awsui_token-disabled_10m3l_anb0r_163"
11
11
  };
12
12
 
@@ -94,12 +94,12 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
94
94
  Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
95
95
  SPDX-License-Identifier: Apache-2.0
96
96
  */
97
- .awsui_root_10m3l_11dnk_97:not(#\9) {
97
+ .awsui_root_10m3l_anb0r_97:not(#\9) {
98
98
  display: flex;
99
99
  align-content: stretch;
100
100
  }
101
101
 
102
- .awsui_token_10m3l_11dnk_102:not(#\9) {
102
+ .awsui_token_10m3l_anb0r_102:not(#\9) {
103
103
  border: 2px solid #0972d3;
104
104
  border: var(--border-field-width-idlekx, 2px) solid var(--color-border-item-selected-ppkssz, #0972d3);
105
105
  display: flex;
@@ -107,29 +107,29 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
107
107
  background: #f2f8fd;
108
108
  background: var(--color-background-item-selected-ebt4bi, #f2f8fd);
109
109
  border-radius: 8px;
110
- border-radius: var(--border-radius-control-xfq7an, 8px);
110
+ border-radius: var(--border-radius-token-wohc9e, 8px);
111
111
  color: #000716;
112
112
  color: var(--color-text-body-default-ajf1h5, #000716);
113
113
  height: 100%;
114
114
  box-sizing: border-box;
115
115
  }
116
116
 
117
- .awsui_show-operation_10m3l_11dnk_113:not(#\9) {
117
+ .awsui_show-operation_10m3l_anb0r_113:not(#\9) {
118
118
  border-left: none;
119
119
  border-top-left-radius: 0;
120
120
  border-bottom-left-radius: 0;
121
121
  }
122
122
 
123
- .awsui_select_10m3l_11dnk_119:not(#\9) {
123
+ .awsui_select_10m3l_anb0r_119:not(#\9) {
124
124
  /* used in test-utils */
125
125
  }
126
126
 
127
- .awsui_token-content_10m3l_11dnk_123:not(#\9) {
127
+ .awsui_token-content_10m3l_anb0r_123:not(#\9) {
128
128
  padding: 4px 12px;
129
129
  padding: var(--space-scaled-xxs-95dhkm, 4px) var(--space-field-horizontal-89h2yr, 12px);
130
130
  }
131
131
 
132
- .awsui_dismiss-button_10m3l_11dnk_127:not(#\9) {
132
+ .awsui_dismiss-button_10m3l_anb0r_127:not(#\9) {
133
133
  width: 30px;
134
134
  margin: 0;
135
135
  border: none;
@@ -141,15 +141,15 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
141
141
  border-left: 2px solid #0972d3;
142
142
  border-left: var(--border-field-width-idlekx, 2px) solid var(--color-border-item-selected-ppkssz, #0972d3);
143
143
  }
144
- .awsui_dismiss-button_10m3l_11dnk_127[data-awsui-focus-visible=true]:not(#\9):focus {
144
+ .awsui_dismiss-button_10m3l_anb0r_127[data-awsui-focus-visible=true]:not(#\9):focus {
145
145
  position: relative;
146
146
  }
147
- .awsui_dismiss-button_10m3l_11dnk_127[data-awsui-focus-visible=true]:not(#\9):focus {
147
+ .awsui_dismiss-button_10m3l_anb0r_127[data-awsui-focus-visible=true]:not(#\9):focus {
148
148
  outline: 2px dotted transparent;
149
149
  outline-offset: calc(-5px - 1px);
150
150
  outline-offset: calc(var(--space-filtering-token-dismiss-button-focus-outline-gutter-itb5fd, -5px) - 1px);
151
151
  }
152
- .awsui_dismiss-button_10m3l_11dnk_127[data-awsui-focus-visible=true]:not(#\9):focus::before {
152
+ .awsui_dismiss-button_10m3l_anb0r_127[data-awsui-focus-visible=true]:not(#\9):focus::before {
153
153
  content: " ";
154
154
  display: block;
155
155
  position: absolute;
@@ -162,21 +162,21 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
162
162
  height: calc(100% + 2 * -5px);
163
163
  height: calc(100% + 2 * var(--space-filtering-token-dismiss-button-focus-outline-gutter-itb5fd, -5px));
164
164
  border-radius: 4px;
165
- border-radius: var(--border-radius-control-focus-ring-default-jlgxet, 4px);
165
+ border-radius: var(--border-radius-control-default-focus-ring-7661kz, 4px);
166
166
  box-shadow: 0 0 0 2px #0972d3;
167
167
  box-shadow: 0 0 0 2px var(--color-border-item-focused-ap3b6s, #0972d3);
168
168
  }
169
- .awsui_dismiss-button_10m3l_11dnk_127:not(#\9):focus {
169
+ .awsui_dismiss-button_10m3l_anb0r_127:not(#\9):focus {
170
170
  outline: none;
171
171
  text-decoration: none;
172
172
  }
173
- .awsui_dismiss-button_10m3l_11dnk_127:not(#\9):hover {
173
+ .awsui_dismiss-button_10m3l_anb0r_127:not(#\9):hover {
174
174
  cursor: pointer;
175
175
  color: #000716;
176
176
  color: var(--color-text-interactive-hover-v3lasm, #000716);
177
177
  }
178
178
 
179
- .awsui_token-disabled_10m3l_11dnk_163:not(#\9) {
179
+ .awsui_token-disabled_10m3l_anb0r_163:not(#\9) {
180
180
  border-color: #d1d5db;
181
181
  border-color: var(--color-border-control-disabled-vx8bco, #d1d5db);
182
182
  background-color: #ffffff;
@@ -185,7 +185,7 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
185
185
  color: var(--color-text-disabled-a2nkh4, #9ba7b6);
186
186
  pointer-events: none;
187
187
  }
188
- .awsui_token-disabled_10m3l_11dnk_163 > .awsui_dismiss-button_10m3l_11dnk_127:not(#\9) {
188
+ .awsui_token-disabled_10m3l_anb0r_163 > .awsui_dismiss-button_10m3l_anb0r_127:not(#\9) {
189
189
  color: #9ba7b6;
190
190
  color: var(--color-text-interactive-disabled-3pbb07, #9ba7b6);
191
191
  border-color: #d1d5db;
@@ -2,12 +2,12 @@
2
2
  // es-module interop with Babel and Typescript
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  module.exports.default = {
5
- "root": "awsui_root_10m3l_11dnk_97",
6
- "token": "awsui_token_10m3l_11dnk_102",
7
- "show-operation": "awsui_show-operation_10m3l_11dnk_113",
8
- "select": "awsui_select_10m3l_11dnk_119",
9
- "token-content": "awsui_token-content_10m3l_11dnk_123",
10
- "dismiss-button": "awsui_dismiss-button_10m3l_11dnk_127",
11
- "token-disabled": "awsui_token-disabled_10m3l_11dnk_163"
5
+ "root": "awsui_root_10m3l_anb0r_97",
6
+ "token": "awsui_token_10m3l_anb0r_102",
7
+ "show-operation": "awsui_show-operation_10m3l_anb0r_113",
8
+ "select": "awsui_select_10m3l_anb0r_119",
9
+ "token-content": "awsui_token-content_10m3l_anb0r_123",
10
+ "dismiss-button": "awsui_dismiss-button_10m3l_anb0r_127",
11
+ "token-disabled": "awsui_token-disabled_10m3l_anb0r_163"
12
12
  };
13
13
 
@@ -1,12 +1,12 @@
1
1
 
2
2
  import './styles.scoped.css';
3
3
  export default {
4
- "button": "awsui_button_m5h9f_ogicx_93",
5
- "expanded": "awsui_expanded_m5h9f_ogicx_123",
6
- "offset-right-none": "awsui_offset-right-none_m5h9f_ogicx_134",
7
- "offset-right-l": "awsui_offset-right-l_m5h9f_ogicx_137",
8
- "offset-right-xxl": "awsui_offset-right-xxl_m5h9f_ogicx_140",
9
- "text": "awsui_text_m5h9f_ogicx_162",
10
- "icon": "awsui_icon_m5h9f_ogicx_166"
4
+ "button": "awsui_button_m5h9f_vm2i5_93",
5
+ "expanded": "awsui_expanded_m5h9f_vm2i5_123",
6
+ "offset-right-none": "awsui_offset-right-none_m5h9f_vm2i5_134",
7
+ "offset-right-l": "awsui_offset-right-l_m5h9f_vm2i5_137",
8
+ "offset-right-xxl": "awsui_offset-right-xxl_m5h9f_vm2i5_140",
9
+ "text": "awsui_text_m5h9f_vm2i5_162",
10
+ "icon": "awsui_icon_m5h9f_vm2i5_166"
11
11
  };
12
12
 
@@ -90,7 +90,7 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
90
90
  Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
91
91
  SPDX-License-Identifier: Apache-2.0
92
92
  */
93
- .awsui_button_m5h9f_ogicx_93:not(#\9) {
93
+ .awsui_button_m5h9f_vm2i5_93:not(#\9) {
94
94
  /* stylelint-disable-next-line plugin/no-unsupported-browser-features */
95
95
  border-collapse: separate;
96
96
  border-spacing: 0;
@@ -150,43 +150,43 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
150
150
  color: #414d5c;
151
151
  color: var(--color-text-interactive-default-eg5fsa, #414d5c);
152
152
  }
153
- .awsui_button_m5h9f_ogicx_93:not(#\9):hover {
153
+ .awsui_button_m5h9f_vm2i5_93:not(#\9):hover {
154
154
  color: #000716;
155
155
  color: var(--color-text-interactive-hover-v3lasm, #000716);
156
156
  text-decoration: none;
157
157
  }
158
- .awsui_button_m5h9f_ogicx_93:not(#\9):active, .awsui_button_m5h9f_ogicx_93.awsui_expanded_m5h9f_ogicx_123:not(#\9) {
158
+ .awsui_button_m5h9f_vm2i5_93:not(#\9):active, .awsui_button_m5h9f_vm2i5_93.awsui_expanded_m5h9f_vm2i5_123:not(#\9) {
159
159
  background: transparent;
160
160
  color: #000716;
161
161
  color: var(--color-text-interactive-active-vol84d, #000716);
162
162
  }
163
- .awsui_button_m5h9f_ogicx_93.awsui_expanded_m5h9f_ogicx_123:not(#\9) {
163
+ .awsui_button_m5h9f_vm2i5_93.awsui_expanded_m5h9f_vm2i5_123:not(#\9) {
164
164
  color: #0972d3;
165
165
  color: var(--color-text-accent-s1eqko, #0972d3);
166
166
  }
167
- .awsui_button_m5h9f_ogicx_93:not(#\9):focus {
167
+ .awsui_button_m5h9f_vm2i5_93:not(#\9):focus {
168
168
  outline: none;
169
169
  text-decoration: none;
170
170
  }
171
- .awsui_button_m5h9f_ogicx_93.awsui_offset-right-none_m5h9f_ogicx_134:not(#\9) {
171
+ .awsui_button_m5h9f_vm2i5_93.awsui_offset-right-none_m5h9f_vm2i5_134:not(#\9) {
172
172
  margin-right: 0;
173
173
  }
174
- .awsui_button_m5h9f_ogicx_93.awsui_offset-right-l_m5h9f_ogicx_137:not(#\9) {
174
+ .awsui_button_m5h9f_vm2i5_93.awsui_offset-right-l_m5h9f_vm2i5_137:not(#\9) {
175
175
  margin-right: 12px;
176
176
  margin-right: var(--space-s-hv8c1d, 12px);
177
177
  }
178
- .awsui_button_m5h9f_ogicx_93.awsui_offset-right-xxl_m5h9f_ogicx_140:not(#\9) {
178
+ .awsui_button_m5h9f_vm2i5_93.awsui_offset-right-xxl_m5h9f_vm2i5_140:not(#\9) {
179
179
  margin-right: 24px;
180
180
  margin-right: var(--space-xl-a39hup, 24px);
181
181
  }
182
- .awsui_button_m5h9f_ogicx_93[data-awsui-focus-visible=true]:not(#\9):focus {
182
+ .awsui_button_m5h9f_vm2i5_93[data-awsui-focus-visible=true]:not(#\9):focus {
183
183
  position: relative;
184
184
  }
185
- .awsui_button_m5h9f_ogicx_93[data-awsui-focus-visible=true]:not(#\9):focus {
185
+ .awsui_button_m5h9f_vm2i5_93[data-awsui-focus-visible=true]:not(#\9):focus {
186
186
  outline: 2px dotted transparent;
187
187
  outline-offset: calc(-1px - 1px);
188
188
  }
189
- .awsui_button_m5h9f_ogicx_93[data-awsui-focus-visible=true]:not(#\9):focus::before {
189
+ .awsui_button_m5h9f_vm2i5_93[data-awsui-focus-visible=true]:not(#\9):focus::before {
190
190
  content: " ";
191
191
  display: block;
192
192
  position: absolute;
@@ -195,17 +195,17 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
195
195
  width: calc(100% + 2 * -1px);
196
196
  height: calc(100% + 2 * -1px);
197
197
  border-radius: 4px;
198
- border-radius: var(--border-radius-control-focus-ring-default-jlgxet, 4px);
198
+ border-radius: var(--border-radius-control-default-focus-ring-7661kz, 4px);
199
199
  box-shadow: 0 0 0 2px #0972d3;
200
200
  box-shadow: 0 0 0 2px var(--color-border-item-focused-ap3b6s, #0972d3);
201
201
  }
202
202
 
203
- .awsui_text_m5h9f_ogicx_162:not(#\9) {
203
+ .awsui_text_m5h9f_vm2i5_162:not(#\9) {
204
204
  margin-right: 8px;
205
205
  margin-right: var(--space-xs-rsr2qu, 8px);
206
206
  }
207
207
 
208
- .awsui_icon_m5h9f_ogicx_166 + .awsui_text_m5h9f_ogicx_162:not(#\9) {
208
+ .awsui_icon_m5h9f_vm2i5_166 + .awsui_text_m5h9f_vm2i5_162:not(#\9) {
209
209
  margin-left: 8px;
210
210
  margin-left: var(--space-xs-rsr2qu, 8px);
211
211
  }
@@ -2,12 +2,12 @@
2
2
  // es-module interop with Babel and Typescript
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  module.exports.default = {
5
- "button": "awsui_button_m5h9f_ogicx_93",
6
- "expanded": "awsui_expanded_m5h9f_ogicx_123",
7
- "offset-right-none": "awsui_offset-right-none_m5h9f_ogicx_134",
8
- "offset-right-l": "awsui_offset-right-l_m5h9f_ogicx_137",
9
- "offset-right-xxl": "awsui_offset-right-xxl_m5h9f_ogicx_140",
10
- "text": "awsui_text_m5h9f_ogicx_162",
11
- "icon": "awsui_icon_m5h9f_ogicx_166"
5
+ "button": "awsui_button_m5h9f_vm2i5_93",
6
+ "expanded": "awsui_expanded_m5h9f_vm2i5_123",
7
+ "offset-right-none": "awsui_offset-right-none_m5h9f_vm2i5_134",
8
+ "offset-right-l": "awsui_offset-right-l_m5h9f_vm2i5_137",
9
+ "offset-right-xxl": "awsui_offset-right-xxl_m5h9f_vm2i5_140",
10
+ "text": "awsui_text_m5h9f_vm2i5_162",
11
+ "icon": "awsui_icon_m5h9f_vm2i5_166"
12
12
  };
13
13
 
@@ -1,5 +1,5 @@
1
1
 
2
- export var PACKAGE_VERSION = '3.0.0 (9ae4481)';
2
+ export var PACKAGE_VERSION = '3.0.0 (278ff3c)';
3
3
  export var THEME = 'open-source-visual-refresh';
4
4
  export var ALWAYS_VISUAL_REFRESH = true;
5
5
 
@@ -1612,17 +1612,19 @@ module.exports.preset = {
1612
1612
  "borderRadiusBadge": "4px",
1613
1613
  "borderRadiusButton": "20px",
1614
1614
  "borderRadiusCalendarDayFocusRing": "3px",
1615
- "borderRadiusCodeEditor": "{borderRadiusControl}",
1615
+ "borderRadiusCodeEditor": "{borderRadiusInput}",
1616
1616
  "borderRadiusContainer": "16px",
1617
- "borderRadiusControl": "8px",
1618
- "borderRadiusControlFocusRingCircle": "4px",
1619
- "borderRadiusControlFocusRingDefault": "4px",
1617
+ "borderRadiusControlCircularFocusRing": "4px",
1618
+ "borderRadiusControlDefaultFocusRing": "4px",
1620
1619
  "borderRadiusDropdown": "{borderRadiusItem}",
1621
1620
  "borderRadiusFlashbar": "12px",
1622
1621
  "borderRadiusItem": "8px",
1623
- "borderRadiusPopover": "{borderRadiusControl}",
1622
+ "borderRadiusInput": "8px",
1623
+ "borderRadiusPopover": "{borderRadiusInput}",
1624
1624
  "borderRadiusTabsFocusRing": "20px",
1625
- "borderRadiusTutorialPanelItem": "{borderRadiusControl}",
1625
+ "borderRadiusTiles": "{borderRadiusInput}",
1626
+ "borderRadiusToken": "{borderRadiusInput}",
1627
+ "borderRadiusTutorialPanelItem": "{borderRadiusInput}",
1626
1628
  "borderTableStickyWidth": "2px",
1627
1629
  "borderLinkFocusRingOutline": "0",
1628
1630
  "borderLinkFocusRingShadowSpread": "2px",
@@ -7071,14 +7073,16 @@ module.exports.preset = {
7071
7073
  "borderRadiusCalendarDayFocusRing": "border-radius-calendar-day-focus-ring",
7072
7074
  "borderRadiusCodeEditor": "border-radius-code-editor",
7073
7075
  "borderRadiusContainer": "border-radius-container",
7074
- "borderRadiusControl": "border-radius-control",
7075
- "borderRadiusControlFocusRingCircle": "border-radius-control-focus-ring-circle",
7076
- "borderRadiusControlFocusRingDefault": "border-radius-control-focus-ring-default",
7076
+ "borderRadiusControlCircularFocusRing": "border-radius-control-circular-focus-ring",
7077
+ "borderRadiusControlDefaultFocusRing": "border-radius-control-default-focus-ring",
7077
7078
  "borderRadiusDropdown": "border-radius-dropdown",
7078
7079
  "borderRadiusFlashbar": "border-radius-flashbar",
7079
7080
  "borderRadiusItem": "border-radius-item",
7081
+ "borderRadiusInput": "border-radius-input",
7080
7082
  "borderRadiusPopover": "border-radius-popover",
7081
7083
  "borderRadiusTabsFocusRing": "border-radius-tabs-focus-ring",
7084
+ "borderRadiusTiles": "border-radius-tiles",
7085
+ "borderRadiusToken": "border-radius-token",
7082
7086
  "borderRadiusTutorialPanelItem": "border-radius-tutorial-panel-item",
7083
7087
  "borderTableStickyWidth": "border-table-sticky-width",
7084
7088
  "borderLinkFocusRingOutline": "border-link-focus-ring-outline",
@@ -7712,14 +7716,16 @@ module.exports.preset = {
7712
7716
  "borderRadiusCalendarDayFocusRing": "--border-radius-calendar-day-focus-ring-a8mlqd",
7713
7717
  "borderRadiusCodeEditor": "--border-radius-code-editor-fuck6b",
7714
7718
  "borderRadiusContainer": "--border-radius-container-gh9ysk",
7715
- "borderRadiusControl": "--border-radius-control-xfq7an",
7716
- "borderRadiusControlFocusRingCircle": "--border-radius-control-focus-ring-circle-48k0xl",
7717
- "borderRadiusControlFocusRingDefault": "--border-radius-control-focus-ring-default-jlgxet",
7719
+ "borderRadiusControlCircularFocusRing": "--border-radius-control-circular-focus-ring-qawzn7",
7720
+ "borderRadiusControlDefaultFocusRing": "--border-radius-control-default-focus-ring-7661kz",
7718
7721
  "borderRadiusDropdown": "--border-radius-dropdown-ujknaf",
7719
7722
  "borderRadiusFlashbar": "--border-radius-flashbar-i7jm55",
7720
7723
  "borderRadiusItem": "--border-radius-item-u2ibpi",
7724
+ "borderRadiusInput": "--border-radius-input-txq8zy",
7721
7725
  "borderRadiusPopover": "--border-radius-popover-8g1bwn",
7722
7726
  "borderRadiusTabsFocusRing": "--border-radius-tabs-focus-ring-j968on",
7727
+ "borderRadiusTiles": "--border-radius-tiles-kl8mtb",
7728
+ "borderRadiusToken": "--border-radius-token-wohc9e",
7723
7729
  "borderRadiusTutorialPanelItem": "--border-radius-tutorial-panel-item-5wuccf",
7724
7730
  "borderTableStickyWidth": "--border-table-sticky-width-h1tlxy",
7725
7731
  "borderLinkFocusRingOutline": "--border-link-focus-ring-outline-k2wccv",