@cloudscape-design/components 3.0.127 → 3.0.128

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 (198) hide show
  1. package/annotation-context/annotation/annotation-popover.d.ts.map +1 -1
  2. package/annotation-context/annotation/annotation-popover.js +2 -8
  3. package/annotation-context/annotation/annotation-popover.js.map +1 -1
  4. package/annotation-context/annotation/annotation-trigger.d.ts +0 -2
  5. package/annotation-context/annotation/annotation-trigger.d.ts.map +1 -1
  6. package/annotation-context/annotation/annotation-trigger.js +2 -2
  7. package/annotation-context/annotation/annotation-trigger.js.map +1 -1
  8. package/annotation-context/annotation/closed-annotation.d.ts +1 -3
  9. package/annotation-context/annotation/closed-annotation.d.ts.map +1 -1
  10. package/annotation-context/annotation/closed-annotation.js +2 -2
  11. package/annotation-context/annotation/closed-annotation.js.map +1 -1
  12. package/annotation-context/annotation/open-annotation.d.ts.map +1 -1
  13. package/annotation-context/annotation/open-annotation.js +1 -1
  14. package/annotation-context/annotation/open-annotation.js.map +1 -1
  15. package/annotation-context/annotation/styles.css.js +24 -24
  16. package/annotation-context/annotation/styles.scoped.css +30 -30
  17. package/annotation-context/annotation/styles.selectors.js +24 -24
  18. package/annotation-context/index.d.ts.map +1 -1
  19. package/annotation-context/index.js +1 -3
  20. package/annotation-context/index.js.map +1 -1
  21. package/annotation-context/interfaces.d.ts +1 -1
  22. package/annotation-context/interfaces.d.ts.map +1 -1
  23. package/annotation-context/interfaces.js.map +1 -1
  24. package/app-layout/visual-refresh/main.d.ts.map +1 -1
  25. package/app-layout/visual-refresh/main.js +3 -8
  26. package/app-layout/visual-refresh/main.js.map +1 -1
  27. package/app-layout/visual-refresh/styles.css.js +60 -60
  28. package/app-layout/visual-refresh/styles.scoped.css +237 -255
  29. package/app-layout/visual-refresh/styles.selectors.js +60 -60
  30. package/area-chart/internal.d.ts.map +1 -1
  31. package/area-chart/internal.js +0 -5
  32. package/area-chart/internal.js.map +1 -1
  33. package/area-chart/model/index.d.ts +0 -1
  34. package/area-chart/model/index.d.ts.map +1 -1
  35. package/area-chart/model/index.js.map +1 -1
  36. package/area-chart/model/use-chart-model.d.ts.map +1 -1
  37. package/area-chart/model/use-chart-model.js +1 -8
  38. package/area-chart/model/use-chart-model.js.map +1 -1
  39. package/attribute-editor/row.d.ts.map +1 -1
  40. package/attribute-editor/row.js +3 -4
  41. package/attribute-editor/row.js.map +1 -1
  42. package/attribute-editor/styles.css.js +12 -13
  43. package/attribute-editor/styles.scoped.css +23 -27
  44. package/attribute-editor/styles.selectors.js +12 -13
  45. package/breadcrumb-group/interfaces.d.ts +0 -1
  46. package/breadcrumb-group/interfaces.d.ts.map +1 -1
  47. package/breadcrumb-group/interfaces.js.map +1 -1
  48. package/breadcrumb-group/internal.d.ts.map +1 -1
  49. package/breadcrumb-group/internal.js +1 -1
  50. package/breadcrumb-group/internal.js.map +1 -1
  51. package/breadcrumb-group/item/item.d.ts +1 -1
  52. package/breadcrumb-group/item/item.d.ts.map +1 -1
  53. package/breadcrumb-group/item/item.js +8 -68
  54. package/breadcrumb-group/item/item.js.map +1 -1
  55. package/breadcrumb-group/item/styles.css.js +7 -9
  56. package/breadcrumb-group/item/styles.scoped.css +16 -26
  57. package/breadcrumb-group/item/styles.selectors.js +7 -9
  58. package/code-editor/index.d.ts.map +1 -1
  59. package/code-editor/index.js +16 -11
  60. package/code-editor/index.js.map +1 -1
  61. package/code-editor/interfaces.d.ts +1 -12
  62. package/code-editor/interfaces.d.ts.map +1 -1
  63. package/code-editor/interfaces.js.map +1 -1
  64. package/code-editor/status-bar.d.ts.map +1 -1
  65. package/code-editor/status-bar.js +1 -7
  66. package/code-editor/status-bar.js.map +1 -1
  67. package/code-editor/util.js +1 -1
  68. package/code-editor/util.js.map +1 -1
  69. package/container/internal.d.ts.map +1 -1
  70. package/container/internal.js +4 -7
  71. package/container/internal.js.map +1 -1
  72. package/date-range-picker/calendar/grids/index.d.ts +1 -0
  73. package/date-range-picker/calendar/grids/index.d.ts.map +1 -1
  74. package/date-range-picker/calendar/grids/index.js +14 -2
  75. package/date-range-picker/calendar/grids/index.js.map +1 -1
  76. package/date-range-picker/calendar/index.d.ts +4 -6
  77. package/date-range-picker/calendar/index.d.ts.map +1 -1
  78. package/date-range-picker/calendar/index.js +123 -111
  79. package/date-range-picker/calendar/index.js.map +1 -1
  80. package/date-range-picker/calendar/use-date-time.d.ts +9 -0
  81. package/date-range-picker/calendar/use-date-time.d.ts.map +1 -0
  82. package/date-range-picker/calendar/use-date-time.js +16 -0
  83. package/date-range-picker/calendar/use-date-time.js.map +1 -0
  84. package/date-range-picker/dropdown.d.ts +1 -2
  85. package/date-range-picker/dropdown.d.ts.map +1 -1
  86. package/date-range-picker/dropdown.js +6 -8
  87. package/date-range-picker/dropdown.js.map +1 -1
  88. package/date-range-picker/index.d.ts.map +1 -1
  89. package/date-range-picker/index.js +2 -2
  90. package/date-range-picker/index.js.map +1 -1
  91. package/date-range-picker/interfaces.d.ts +4 -14
  92. package/date-range-picker/interfaces.d.ts.map +1 -1
  93. package/date-range-picker/interfaces.js.map +1 -1
  94. package/date-range-picker/styles.css.js +38 -38
  95. package/date-range-picker/styles.scoped.css +50 -45
  96. package/date-range-picker/styles.selectors.js +38 -38
  97. package/date-range-picker/utils.d.ts +8 -2
  98. package/date-range-picker/utils.d.ts.map +1 -1
  99. package/date-range-picker/utils.js +12 -17
  100. package/date-range-picker/utils.js.map +1 -1
  101. package/flashbar/styles.css.js +33 -33
  102. package/flashbar/styles.scoped.css +121 -121
  103. package/flashbar/styles.selectors.js +33 -33
  104. package/internal/components/dropdown/index.d.ts.map +1 -1
  105. package/internal/components/dropdown/index.js +9 -2
  106. package/internal/components/dropdown/index.js.map +1 -1
  107. package/internal/components/dropdown-status/index.d.ts +4 -1
  108. package/internal/components/dropdown-status/index.d.ts.map +1 -1
  109. package/internal/components/dropdown-status/index.js +5 -3
  110. package/internal/components/dropdown-status/index.js.map +1 -1
  111. package/internal/components/filtering-token/index.d.ts +1 -2
  112. package/internal/components/filtering-token/index.d.ts.map +1 -1
  113. package/internal/components/filtering-token/index.js +2 -2
  114. package/internal/components/filtering-token/index.js.map +1 -1
  115. package/internal/components/option/index.js +4 -4
  116. package/internal/components/option/index.js.map +1 -1
  117. package/internal/environment.js +1 -1
  118. package/internal/generated/custom-css-properties/index.d.ts.map +1 -1
  119. package/internal/generated/custom-css-properties/index.js +26 -27
  120. package/internal/generated/custom-css-properties/index.js.map +1 -1
  121. package/internal/manifest.json +1 -1
  122. package/internal/utils/date-time/index.d.ts +1 -2
  123. package/internal/utils/date-time/index.d.ts.map +1 -1
  124. package/internal/utils/date-time/index.js +1 -2
  125. package/internal/utils/date-time/index.js.map +1 -1
  126. package/internal/utils/date-time/join-date-time.d.ts +0 -4
  127. package/internal/utils/date-time/join-date-time.d.ts.map +1 -1
  128. package/internal/utils/date-time/join-date-time.js +0 -4
  129. package/internal/utils/date-time/join-date-time.js.map +1 -1
  130. package/mixed-line-bar-chart/chart-container.d.ts.map +1 -1
  131. package/mixed-line-bar-chart/chart-container.js +5 -14
  132. package/mixed-line-bar-chart/chart-container.js.map +1 -1
  133. package/package.json +1 -1
  134. package/pie-chart/pie-chart.d.ts.map +1 -1
  135. package/pie-chart/pie-chart.js +1 -10
  136. package/pie-chart/pie-chart.js.map +1 -1
  137. package/popover/body.d.ts +1 -2
  138. package/popover/body.d.ts.map +1 -1
  139. package/popover/body.js +2 -2
  140. package/popover/body.js.map +1 -1
  141. package/property-filter/interfaces.d.ts +0 -1
  142. package/property-filter/interfaces.d.ts.map +1 -1
  143. package/property-filter/interfaces.js.map +1 -1
  144. package/property-filter/token.d.ts.map +1 -1
  145. package/property-filter/token.js +1 -1
  146. package/property-filter/token.js.map +1 -1
  147. package/select/parts/filter.d.ts +1 -1
  148. package/select/utils/use-select.d.ts +7 -1
  149. package/select/utils/use-select.d.ts.map +1 -1
  150. package/select/utils/use-select.js +1 -1
  151. package/select/utils/use-select.js.map +1 -1
  152. package/table/styles.css.js +34 -34
  153. package/table/styles.scoped.css +40 -42
  154. package/table/styles.selectors.js +34 -34
  155. package/tabs/index.d.ts.map +1 -1
  156. package/tabs/index.js +11 -9
  157. package/tabs/index.js.map +1 -1
  158. package/tabs/styles.css.js +21 -21
  159. package/tabs/styles.scoped.css +41 -48
  160. package/tabs/styles.selectors.js +21 -21
  161. package/tabs/tab-header-bar.d.ts +0 -4
  162. package/tabs/tab-header-bar.d.ts.map +1 -1
  163. package/tabs/tab-header-bar.js +1 -5
  164. package/tabs/tab-header-bar.js.map +1 -1
  165. package/tag-editor/internal.d.ts.map +1 -1
  166. package/tag-editor/internal.js +7 -6
  167. package/tag-editor/internal.js.map +1 -1
  168. package/test-utils/tsconfig.tsbuildinfo +1 -1
  169. package/tutorial-panel/components/tutorial-detail-view/index.d.ts.map +1 -1
  170. package/tutorial-panel/components/tutorial-detail-view/index.js +1 -3
  171. package/tutorial-panel/components/tutorial-detail-view/index.js.map +1 -1
  172. package/tutorial-panel/components/tutorial-detail-view/task.d.ts.map +1 -1
  173. package/tutorial-panel/components/tutorial-detail-view/task.js +1 -2
  174. package/tutorial-panel/components/tutorial-detail-view/task.js.map +1 -1
  175. package/tutorial-panel/components/tutorial-list/index.d.ts.map +1 -1
  176. package/tutorial-panel/components/tutorial-list/index.js +2 -2
  177. package/tutorial-panel/components/tutorial-list/index.js.map +1 -1
  178. package/tutorial-panel/interfaces.d.ts +0 -2
  179. package/tutorial-panel/interfaces.d.ts.map +1 -1
  180. package/tutorial-panel/interfaces.js.map +1 -1
  181. package/wizard/index.d.ts.map +1 -1
  182. package/wizard/index.js +5 -9
  183. package/wizard/index.js.map +1 -1
  184. package/wizard/wizard-form.d.ts.map +1 -1
  185. package/wizard/wizard-form.js +2 -7
  186. package/wizard/wizard-form.js.map +1 -1
  187. package/date-range-picker/calendar/utils.d.ts +0 -4
  188. package/date-range-picker/calendar/utils.d.ts.map +0 -1
  189. package/date-range-picker/calendar/utils.js +0 -31
  190. package/date-range-picker/calendar/utils.js.map +0 -1
  191. package/internal/hooks/use-analytics/index.d.ts +0 -2
  192. package/internal/hooks/use-analytics/index.d.ts.map +0 -1
  193. package/internal/hooks/use-analytics/index.js +0 -16
  194. package/internal/hooks/use-analytics/index.js.map +0 -1
  195. package/internal/utils/date-time/format-date-time.d.ts +0 -2
  196. package/internal/utils/date-time/format-date-time.d.ts.map +0 -1
  197. package/internal/utils/date-time/format-date-time.js +0 -8
  198. package/internal/utils/date-time/format-date-time.js.map +0 -1
package/tabs/index.js CHANGED
@@ -7,12 +7,11 @@ import { fireNonCancelableEvent } from '../internal/events';
7
7
  import InternalContainer from '../container/internal';
8
8
  import clsx from 'clsx';
9
9
  import styles from './styles.css.js';
10
- import { getTabElementId, TabHeaderBar } from './tab-header-bar';
10
+ import { TabHeaderBar } from './tab-header-bar';
11
11
  import { useControllable } from '../internal/hooks/use-controllable';
12
12
  import { applyDisplayName } from '../internal/utils/apply-display-name';
13
13
  import useBaseComponent from '../internal/hooks/use-base-component';
14
14
  import { checkSafeUrl } from '../internal/utils/check-safe-url';
15
- import useFocusVisible from '../internal/hooks/focus-visible';
16
15
  var lastGeneratedId = 0;
17
16
  export var nextGeneratedId = function () { return "awsui-tabs-".concat(lastGeneratedId++, "-").concat(Math.round(Math.random() * 10000)); };
18
17
  function firstEnabledTab(tabs) {
@@ -37,20 +36,23 @@ export default function Tabs(_a) {
37
36
  changeHandler: 'onChange'
38
37
  }), activeTabId = _f[0], setActiveTabId = _f[1];
39
38
  var baseProps = getBaseProps(rest);
40
- var focusVisible = useFocusVisible();
41
39
  var content = function () {
42
40
  var _a;
43
41
  var selectedTab = tabs.filter(function (tab) { return tab.id === activeTabId; })[0];
44
42
  var renderContent = function (tab) {
45
43
  var _a;
46
- var isTabSelected = tab === selectedTab;
44
+ var isContentActive = tab === selectedTab && !selectedTab.disabled && selectedTab.content;
47
45
  var classes = clsx((_a = {},
48
46
  _a[styles['tabs-content']] = true,
49
- _a[styles['tabs-content-active']] = isTabSelected,
47
+ _a[styles['tabs-content-active']] = isContentActive,
50
48
  _a));
51
- var contentAttributes = __assign(__assign({}, focusVisible), { className: classes, role: 'tabpanel', id: "".concat(idNamespace, "-").concat(tab.id, "-panel"), key: "".concat(idNamespace, "-").concat(tab.id, "-panel"), tabIndex: 0, 'aria-labelledby': getTabElementId({ namespace: idNamespace, tabId: tab.id }) });
52
- var isContentShown = isTabSelected && !selectedTab.disabled;
53
- return React.createElement("div", __assign({}, contentAttributes), isContentShown && selectedTab.content);
49
+ var contentAttributes = {
50
+ className: classes,
51
+ role: 'tabpanel',
52
+ id: "".concat(idNamespace, "-").concat(tab.id, "-panel"),
53
+ key: "".concat(idNamespace, "-").concat(tab.id, "-panel")
54
+ };
55
+ return React.createElement("div", __assign({}, contentAttributes), isContentActive && selectedTab.content);
54
56
  };
55
57
  return (React.createElement("div", { className: clsx(variant === 'container' ? styles['tabs-container-content-wrapper'] : styles['tabs-content-wrapper'], (_a = {},
56
58
  _a[styles['with-paddings']] = !disableContentPaddings,
@@ -61,7 +63,7 @@ export default function Tabs(_a) {
61
63
  fireNonCancelableEvent(onChange, changeDetail);
62
64
  } }));
63
65
  if (variant === 'container') {
64
- return (React.createElement(InternalContainer, __assign({ header: header, disableHeaderPaddings: true }, baseProps, { className: clsx(baseProps.className, styles.root), __internalRootRef: __internalRootRef, disableContentPaddings: true }), content()));
66
+ return (React.createElement(InternalContainer, __assign({ header: header, disableHeaderPaddings: true }, baseProps, { className: clsx(baseProps.className, styles.root), __internalRootRef: __internalRootRef, disableContentPaddings: disableContentPaddings }), content()));
65
67
  }
66
68
  return (React.createElement("div", __assign({}, baseProps, { className: clsx(baseProps.className, styles.root, styles.tabs), ref: __internalRootRef }),
67
69
  header,
package/tabs/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tabs/index.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useState } from 'react';\nimport { getBaseProps } from '../internal/base-component';\nimport { fireNonCancelableEvent } from '../internal/events';\nimport InternalContainer from '../container/internal';\nimport { TabsProps } from './interfaces';\nimport clsx from 'clsx';\nimport styles from './styles.css.js';\nimport { getTabElementId, TabHeaderBar } from './tab-header-bar';\nimport { useControllable } from '../internal/hooks/use-controllable';\nimport { applyDisplayName } from '../internal/utils/apply-display-name';\nimport useBaseComponent from '../internal/hooks/use-base-component';\nimport { checkSafeUrl } from '../internal/utils/check-safe-url';\nimport useFocusVisible from '../internal/hooks/focus-visible';\n\nexport { TabsProps };\n\nlet lastGeneratedId = 0;\nexport const nextGeneratedId = () => `awsui-tabs-${lastGeneratedId++}-${Math.round(Math.random() * 10000)}`;\n\nfunction firstEnabledTab(tabs: ReadonlyArray<TabsProps.Tab>) {\n const enabledTabs = tabs.filter(tab => !tab.disabled);\n if (enabledTabs.length > 0) {\n return enabledTabs[0];\n }\n return null;\n}\n\nexport default function Tabs({\n tabs,\n variant = 'default',\n onChange,\n activeTabId: controlledTabId,\n ariaLabel,\n ariaLabelledby,\n disableContentPaddings = false,\n ...rest\n}: TabsProps) {\n for (const tab of tabs) {\n checkSafeUrl('Tabs', tab.href);\n }\n const { __internalRootRef } = useBaseComponent('Tabs');\n const [idNamespace] = useState(() => nextGeneratedId());\n\n const [activeTabId, setActiveTabId] = useControllable(controlledTabId, onChange, firstEnabledTab(tabs)?.id ?? '', {\n componentName: 'Tabs',\n controlledProp: 'activeTabId',\n changeHandler: 'onChange',\n });\n\n const baseProps = getBaseProps(rest);\n\n const focusVisible = useFocusVisible();\n\n const content = () => {\n const selectedTab = tabs.filter(tab => tab.id === activeTabId)[0];\n const renderContent = (tab: TabsProps.Tab) => {\n const isTabSelected = tab === selectedTab;\n\n const classes = clsx({\n [styles['tabs-content']]: true,\n [styles['tabs-content-active']]: isTabSelected,\n });\n\n const contentAttributes: JSX.IntrinsicElements['div'] = {\n ...focusVisible,\n className: classes,\n role: 'tabpanel',\n id: `${idNamespace}-${tab.id}-panel`,\n key: `${idNamespace}-${tab.id}-panel`,\n tabIndex: 0,\n 'aria-labelledby': getTabElementId({ namespace: idNamespace, tabId: tab.id }),\n };\n\n const isContentShown = isTabSelected && !selectedTab.disabled;\n return <div {...contentAttributes}>{isContentShown && selectedTab.content}</div>;\n };\n\n return (\n <div\n className={clsx(\n variant === 'container' ? styles['tabs-container-content-wrapper'] : styles['tabs-content-wrapper'],\n {\n [styles['with-paddings']]: !disableContentPaddings,\n }\n )}\n >\n {tabs.map(renderContent)}\n </div>\n );\n };\n\n const header = (\n <TabHeaderBar\n activeTabId={activeTabId}\n variant={variant}\n idNamespace={idNamespace}\n ariaLabel={ariaLabel}\n ariaLabelledby={ariaLabelledby}\n tabs={tabs}\n onChange={changeDetail => {\n setActiveTabId(changeDetail.activeTabId);\n fireNonCancelableEvent(onChange, changeDetail);\n }}\n />\n );\n\n if (variant === 'container') {\n return (\n <InternalContainer\n header={header}\n disableHeaderPaddings={true}\n {...baseProps}\n className={clsx(baseProps.className, styles.root)}\n __internalRootRef={__internalRootRef}\n disableContentPaddings={true}\n >\n {content()}\n </InternalContainer>\n );\n }\n\n return (\n <div {...baseProps} className={clsx(baseProps.className, styles.root, styles.tabs)} ref={__internalRootRef}>\n {header}\n {content()}\n </div>\n );\n}\n\napplyDisplayName(Tabs, 'Tabs');\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tabs/index.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useState } from 'react';\nimport { getBaseProps } from '../internal/base-component';\nimport { fireNonCancelableEvent } from '../internal/events';\nimport InternalContainer from '../container/internal';\nimport { TabsProps } from './interfaces';\nimport clsx from 'clsx';\nimport styles from './styles.css.js';\nimport { TabHeaderBar } from './tab-header-bar';\nimport { useControllable } from '../internal/hooks/use-controllable';\nimport { applyDisplayName } from '../internal/utils/apply-display-name';\nimport useBaseComponent from '../internal/hooks/use-base-component';\nimport { checkSafeUrl } from '../internal/utils/check-safe-url';\n\nexport { TabsProps };\n\nlet lastGeneratedId = 0;\nexport const nextGeneratedId = () => `awsui-tabs-${lastGeneratedId++}-${Math.round(Math.random() * 10000)}`;\n\nfunction firstEnabledTab(tabs: ReadonlyArray<TabsProps.Tab>) {\n const enabledTabs = tabs.filter(tab => !tab.disabled);\n if (enabledTabs.length > 0) {\n return enabledTabs[0];\n }\n return null;\n}\n\nexport default function Tabs({\n tabs,\n variant = 'default',\n onChange,\n activeTabId: controlledTabId,\n ariaLabel,\n ariaLabelledby,\n disableContentPaddings = false,\n ...rest\n}: TabsProps) {\n for (const tab of tabs) {\n checkSafeUrl('Tabs', tab.href);\n }\n const { __internalRootRef } = useBaseComponent('Tabs');\n const [idNamespace] = useState(() => nextGeneratedId());\n\n const [activeTabId, setActiveTabId] = useControllable(controlledTabId, onChange, firstEnabledTab(tabs)?.id ?? '', {\n componentName: 'Tabs',\n controlledProp: 'activeTabId',\n changeHandler: 'onChange',\n });\n\n const baseProps = getBaseProps(rest);\n\n const content = () => {\n const selectedTab = tabs.filter(tab => tab.id === activeTabId)[0];\n const renderContent = (tab: TabsProps.Tab) => {\n const isContentActive = tab === selectedTab && !selectedTab.disabled && selectedTab.content;\n\n const classes = clsx({\n [styles['tabs-content']]: true,\n [styles['tabs-content-active']]: isContentActive,\n });\n\n const contentAttributes: JSX.IntrinsicElements['div'] = {\n className: classes,\n role: 'tabpanel',\n id: `${idNamespace}-${tab.id}-panel`,\n key: `${idNamespace}-${tab.id}-panel`,\n };\n\n return <div {...contentAttributes}>{isContentActive && selectedTab.content}</div>;\n };\n\n return (\n <div\n className={clsx(\n variant === 'container' ? styles['tabs-container-content-wrapper'] : styles['tabs-content-wrapper'],\n {\n [styles['with-paddings']]: !disableContentPaddings,\n }\n )}\n >\n {tabs.map(renderContent)}\n </div>\n );\n };\n\n const header = (\n <TabHeaderBar\n activeTabId={activeTabId}\n variant={variant}\n idNamespace={idNamespace}\n ariaLabel={ariaLabel}\n ariaLabelledby={ariaLabelledby}\n tabs={tabs}\n onChange={changeDetail => {\n setActiveTabId(changeDetail.activeTabId);\n fireNonCancelableEvent(onChange, changeDetail);\n }}\n />\n );\n\n if (variant === 'container') {\n return (\n <InternalContainer\n header={header}\n disableHeaderPaddings={true}\n {...baseProps}\n className={clsx(baseProps.className, styles.root)}\n __internalRootRef={__internalRootRef}\n disableContentPaddings={disableContentPaddings}\n >\n {content()}\n </InternalContainer>\n );\n }\n\n return (\n <div {...baseProps} className={clsx(baseProps.className, styles.root, styles.tabs)} ref={__internalRootRef}>\n {header}\n {content()}\n </div>\n );\n}\n\napplyDisplayName(Tabs, 'Tabs');\n"]}
@@ -1,26 +1,26 @@
1
1
 
2
2
  import './styles.scoped.css';
3
3
  export default {
4
- "tabs-header": "awsui_tabs-header_14rmt_17xev_186",
5
- "tabs-header-list": "awsui_tabs-header-list_14rmt_17xev_192",
6
- "pagination-button": "awsui_pagination-button_14rmt_17xev_207",
7
- "pagination-button-left": "awsui_pagination-button-left_14rmt_17xev_212",
8
- "pagination-button-left-scrollable": "awsui_pagination-button-left-scrollable_14rmt_17xev_215",
9
- "pagination-button-right": "awsui_pagination-button-right_14rmt_17xev_219",
10
- "pagination-button-right-scrollable": "awsui_pagination-button-right-scrollable_14rmt_17xev_222",
11
- "tabs-tab": "awsui_tabs-tab_14rmt_17xev_227",
12
- "tabs-tab-label": "awsui_tabs-tab-label_14rmt_17xev_238",
13
- "tabs-tab-link": "awsui_tabs-tab-link_14rmt_17xev_254",
14
- "tabs-tab-disabled": "awsui_tabs-tab-disabled_14rmt_17xev_311",
15
- "refresh": "awsui_refresh_14rmt_17xev_329",
16
- "tabs-tab-active": "awsui_tabs-tab-active_14rmt_17xev_343",
17
- "tabs-header-with-divider": "awsui_tabs-header-with-divider_14rmt_17xev_350",
18
- "root": "awsui_root_14rmt_17xev_354",
19
- "tabs": "awsui_tabs_14rmt_17xev_186",
20
- "tabs-content": "awsui_tabs-content_14rmt_17xev_371",
21
- "tabs-content-active": "awsui_tabs-content-active_14rmt_17xev_375",
22
- "tabs-content-wrapper": "awsui_tabs-content-wrapper_14rmt_17xev_385",
23
- "with-paddings": "awsui_with-paddings_14rmt_17xev_385",
24
- "tabs-container-content-wrapper": "awsui_tabs-container-content-wrapper_14rmt_17xev_389"
4
+ "tabs-header": "awsui_tabs-header_14rmt_12gj9_186",
5
+ "tabs-header-list": "awsui_tabs-header-list_14rmt_12gj9_192",
6
+ "pagination-button": "awsui_pagination-button_14rmt_12gj9_207",
7
+ "pagination-button-left": "awsui_pagination-button-left_14rmt_12gj9_212",
8
+ "pagination-button-left-scrollable": "awsui_pagination-button-left-scrollable_14rmt_12gj9_215",
9
+ "pagination-button-right": "awsui_pagination-button-right_14rmt_12gj9_219",
10
+ "pagination-button-right-scrollable": "awsui_pagination-button-right-scrollable_14rmt_12gj9_222",
11
+ "tabs-tab": "awsui_tabs-tab_14rmt_12gj9_227",
12
+ "tabs-tab-label": "awsui_tabs-tab-label_14rmt_12gj9_238",
13
+ "tabs-tab-link": "awsui_tabs-tab-link_14rmt_12gj9_254",
14
+ "tabs-tab-disabled": "awsui_tabs-tab-disabled_14rmt_12gj9_311",
15
+ "refresh": "awsui_refresh_14rmt_12gj9_328",
16
+ "tabs-tab-active": "awsui_tabs-tab-active_14rmt_12gj9_342",
17
+ "tabs-header-with-divider": "awsui_tabs-header-with-divider_14rmt_12gj9_349",
18
+ "root": "awsui_root_14rmt_12gj9_353",
19
+ "tabs": "awsui_tabs_14rmt_12gj9_186",
20
+ "tabs-content-wrapper": "awsui_tabs-content-wrapper_14rmt_12gj9_370",
21
+ "with-paddings": "awsui_with-paddings_14rmt_12gj9_370",
22
+ "tabs-container-content-wrapper": "awsui_tabs-container-content-wrapper_14rmt_12gj9_374",
23
+ "tabs-content": "awsui_tabs-content_14rmt_12gj9_370",
24
+ "tabs-content-active": "awsui_tabs-content-active_14rmt_12gj9_382"
25
25
  };
26
26
 
@@ -183,13 +183,13 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
183
183
  SPDX-License-Identifier: Apache-2.0
184
184
  */
185
185
  /* stylelint-disable selector-max-type */
186
- .awsui_tabs-header_14rmt_17xev_186:not(#\9) {
186
+ .awsui_tabs-header_14rmt_12gj9_186:not(#\9) {
187
187
  margin: 0;
188
188
  padding: 0;
189
189
  display: flex;
190
190
  }
191
191
 
192
- .awsui_tabs-header-list_14rmt_17xev_192:not(#\9) {
192
+ .awsui_tabs-header-list_14rmt_12gj9_192:not(#\9) {
193
193
  margin: 0;
194
194
  padding: 0;
195
195
  display: flex;
@@ -200,42 +200,42 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
200
200
  -ms-overflow-style: none; /* Internet Explorer 10+ */
201
201
  scrollbar-width: none; /* Firefox */
202
202
  }
203
- .awsui_tabs-header-list_14rmt_17xev_192:not(#\9)::-webkit-scrollbar {
203
+ .awsui_tabs-header-list_14rmt_12gj9_192:not(#\9)::-webkit-scrollbar {
204
204
  display: none; /* Safari and Chrome */
205
205
  }
206
206
 
207
- .awsui_pagination-button_14rmt_17xev_207:not(#\9) {
207
+ .awsui_pagination-button_14rmt_12gj9_207:not(#\9) {
208
208
  margin: var(--space-scaled-s-cu1hzn, 12px) 0;
209
209
  padding: 0 var(--space-xxs-ynfts5, 4px);
210
210
  display: flex;
211
211
  }
212
- .awsui_pagination-button-left_14rmt_17xev_212:not(#\9) {
212
+ .awsui_pagination-button-left_14rmt_12gj9_212:not(#\9) {
213
213
  border-right: var(--border-divider-section-width-4wm2it, 2px) solid var(--color-border-control-disabled-vx8bco, #d1d5db);
214
214
  }
215
- .awsui_pagination-button-left-scrollable_14rmt_17xev_215:not(#\9) {
215
+ .awsui_pagination-button-left-scrollable_14rmt_12gj9_215:not(#\9) {
216
216
  z-index: 1;
217
217
  box-shadow: 5px 0px 4px -3px var(--color-border-tabs-shadow-4lmh2z, rgba(0, 7, 22, 0.12)), 1px 0px 0px 0px var(--color-border-tabs-shadow-4lmh2z, rgba(0, 7, 22, 0.12));
218
218
  }
219
- .awsui_pagination-button-right_14rmt_17xev_219:not(#\9) {
219
+ .awsui_pagination-button-right_14rmt_12gj9_219:not(#\9) {
220
220
  border-left: var(--border-divider-section-width-4wm2it, 2px) solid var(--color-border-control-disabled-vx8bco, #d1d5db);
221
221
  }
222
- .awsui_pagination-button-right-scrollable_14rmt_17xev_222:not(#\9) {
222
+ .awsui_pagination-button-right-scrollable_14rmt_12gj9_222:not(#\9) {
223
223
  z-index: 1;
224
224
  box-shadow: -5px 0px 4px -3px var(--color-border-tabs-shadow-4lmh2z, rgba(0, 7, 22, 0.12)), -1px 0px 0px 0 var(--color-border-tabs-shadow-4lmh2z, rgba(0, 7, 22, 0.12));
225
225
  }
226
226
 
227
- .awsui_tabs-tab_14rmt_17xev_227:not(#\9) {
227
+ .awsui_tabs-tab_14rmt_12gj9_227:not(#\9) {
228
228
  list-style: none;
229
229
  padding: 0;
230
230
  flex-shrink: 0;
231
231
  display: flex;
232
232
  max-width: calc(90% - var(--space-l-4vl6xu, 20px));
233
233
  }
234
- .awsui_tabs-tab_14rmt_17xev_227 > button:not(#\9) {
234
+ .awsui_tabs-tab_14rmt_12gj9_227 > button:not(#\9) {
235
235
  background-color: transparent;
236
236
  }
237
237
 
238
- .awsui_tabs-tab-label_14rmt_17xev_238:not(#\9) {
238
+ .awsui_tabs-tab-label_14rmt_12gj9_238:not(#\9) {
239
239
  display: flex;
240
240
  align-items: center;
241
241
  padding: var(--space-scaled-2x-xxs-t5qzmf, 4px) var(--space-l-4vl6xu, 20px);
@@ -246,12 +246,12 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
246
246
  word-break: break-word;
247
247
  }
248
248
 
249
- .awsui_tabs-tab_14rmt_17xev_227:not(#\9):not(:last-child) > a > .awsui_tabs-tab-label_14rmt_17xev_238, .awsui_tabs-tab_14rmt_17xev_227:not(#\9):not(:last-child) > button > .awsui_tabs-tab-label_14rmt_17xev_238 {
249
+ .awsui_tabs-tab_14rmt_12gj9_227:not(#\9):not(:last-child) > a > .awsui_tabs-tab-label_14rmt_12gj9_238, .awsui_tabs-tab_14rmt_12gj9_227:not(#\9):not(:last-child) > button > .awsui_tabs-tab-label_14rmt_12gj9_238 {
250
250
  margin-right: calc(-1 * var(--border-divider-section-width-4wm2it, 2px));
251
251
  border-right: var(--border-divider-section-width-4wm2it, 2px) solid var(--color-border-tabs-divider-69fx5i, #e9ebed);
252
252
  }
253
253
 
254
- .awsui_tabs-tab-link_14rmt_17xev_254:not(#\9) {
254
+ .awsui_tabs-tab-link_14rmt_12gj9_254:not(#\9) {
255
255
  position: relative;
256
256
  display: flex;
257
257
  align-items: stretch;
@@ -265,21 +265,21 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
265
265
  font-weight: var(--font-wayfinding-link-active-weight-l3fid7, 800);
266
266
  color: var(--color-text-interactive-default-eg5fsa, #414d5c);
267
267
  }
268
- .awsui_tabs-tab-link_14rmt_17xev_254:not(#\9):hover {
268
+ .awsui_tabs-tab-link_14rmt_12gj9_254:not(#\9):hover {
269
269
  color: var(--color-text-accent-s1eqko, #0972d3);
270
270
  }
271
- .awsui_tabs-tab-link_14rmt_17xev_254:not(#\9):focus {
271
+ .awsui_tabs-tab-link_14rmt_12gj9_254:not(#\9):focus {
272
272
  outline: none;
273
273
  }
274
- .awsui_tabs-tab-link_14rmt_17xev_254[data-awsui-focus-visible=true]:not(#\9):focus {
274
+ .awsui_tabs-tab-link_14rmt_12gj9_254[data-awsui-focus-visible=true]:not(#\9):focus {
275
275
  z-index: 1;
276
276
  position: relative;
277
277
  }
278
- .awsui_tabs-tab-link_14rmt_17xev_254[data-awsui-focus-visible=true]:not(#\9):focus {
278
+ .awsui_tabs-tab-link_14rmt_12gj9_254[data-awsui-focus-visible=true]:not(#\9):focus {
279
279
  outline: 2px dotted transparent;
280
280
  outline-offset: calc(var(--space-tabs-focus-outline-gutter-64zu5e, -8px) - 1px);
281
281
  }
282
- .awsui_tabs-tab-link_14rmt_17xev_254[data-awsui-focus-visible=true]:not(#\9):focus::before {
282
+ .awsui_tabs-tab-link_14rmt_12gj9_254[data-awsui-focus-visible=true]:not(#\9):focus::before {
283
283
  content: " ";
284
284
  display: block;
285
285
  position: absolute;
@@ -290,32 +290,31 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
290
290
  border-radius: var(--border-radius-control-default-focus-ring-7661kz, 4px);
291
291
  box-shadow: 0 0 0 2px var(--color-border-item-focused-ap3b6s, #0972d3);
292
292
  }
293
- .awsui_tabs-tab-link_14rmt_17xev_254[data-awsui-focus-visible=true]:not(#\9):focus > a > .awsui_tabs-tab-label_14rmt_17xev_238, .awsui_tabs-tab-link_14rmt_17xev_254[data-awsui-focus-visible=true]:not(#\9):focus > button > .awsui_tabs-tab-label_14rmt_17xev_238 {
293
+ .awsui_tabs-tab-link_14rmt_12gj9_254[data-awsui-focus-visible=true]:not(#\9):focus > a > .awsui_tabs-tab-label_14rmt_12gj9_238, .awsui_tabs-tab-link_14rmt_12gj9_254[data-awsui-focus-visible=true]:not(#\9):focus > button > .awsui_tabs-tab-label_14rmt_12gj9_238 {
294
294
  border-right-color: transparent;
295
295
  }
296
296
 
297
- .awsui_tabs-tab_14rmt_17xev_227:not(#\9):first-child {
297
+ .awsui_tabs-tab_14rmt_12gj9_227:not(#\9):first-child {
298
298
  margin-left: 1px;
299
299
  }
300
- .awsui_tabs-tab_14rmt_17xev_227:not(#\9):first-child > a > .awsui_tabs-tab-label_14rmt_17xev_238, .awsui_tabs-tab_14rmt_17xev_227:not(#\9):first-child > button > .awsui_tabs-tab-label_14rmt_17xev_238 {
300
+ .awsui_tabs-tab_14rmt_12gj9_227:not(#\9):first-child > a > .awsui_tabs-tab-label_14rmt_12gj9_238, .awsui_tabs-tab_14rmt_12gj9_227:not(#\9):first-child > button > .awsui_tabs-tab-label_14rmt_12gj9_238 {
301
301
  padding-left: calc(var(--space-l-4vl6xu, 20px) - 1px);
302
302
  }
303
303
 
304
- .awsui_tabs-tab_14rmt_17xev_227:not(#\9):last-child {
304
+ .awsui_tabs-tab_14rmt_12gj9_227:not(#\9):last-child {
305
305
  margin-right: 1px;
306
306
  }
307
- .awsui_tabs-tab_14rmt_17xev_227:not(#\9):last-child > a > .awsui_tabs-tab-label_14rmt_17xev_238, .awsui_tabs-tab_14rmt_17xev_227:not(#\9):last-child > button > .awsui_tabs-tab-label_14rmt_17xev_238 {
307
+ .awsui_tabs-tab_14rmt_12gj9_227:not(#\9):last-child > a > .awsui_tabs-tab-label_14rmt_12gj9_238, .awsui_tabs-tab_14rmt_12gj9_227:not(#\9):last-child > button > .awsui_tabs-tab-label_14rmt_12gj9_238 {
308
308
  padding-right: calc(var(--space-l-4vl6xu, 20px) - 1px);
309
309
  }
310
310
 
311
- .awsui_tabs-tab-disabled_14rmt_17xev_311:not(#\9), .awsui_tabs-tab-disabled_14rmt_17xev_311:not(#\9):hover {
312
- pointer-events: none;
311
+ .awsui_tabs-tab-disabled_14rmt_12gj9_311:not(#\9), .awsui_tabs-tab-disabled_14rmt_12gj9_311:not(#\9):hover {
313
312
  cursor: default;
314
313
  color: var(--color-text-interactive-disabled-3pbb07, #9ba7b6);
315
314
  font-weight: var(--font-tabs-disabled-weight-imwq16, 800);
316
315
  }
317
316
 
318
- .awsui_tabs-tab-link_14rmt_17xev_254:not(#\9):not(.awsui_tabs-tab-disabled_14rmt_17xev_311):after {
317
+ .awsui_tabs-tab-link_14rmt_12gj9_254:not(#\9):not(.awsui_tabs-tab-disabled_14rmt_12gj9_311):after {
319
318
  content: "";
320
319
  position: absolute;
321
320
  left: 0;
@@ -326,36 +325,36 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
326
325
  background: var(--color-border-tabs-underline-9bcfzu, #0972d3);
327
326
  opacity: 0;
328
327
  }
329
- .awsui_tabs-tab-link_14rmt_17xev_254:not(#\9):not(.awsui_tabs-tab-disabled_14rmt_17xev_311).awsui_refresh_14rmt_17xev_329:after {
328
+ .awsui_tabs-tab-link_14rmt_12gj9_254:not(#\9):not(.awsui_tabs-tab-disabled_14rmt_12gj9_311).awsui_refresh_14rmt_12gj9_328:after {
330
329
  transition: opacity var(--motion-duration-refresh-only-medium-5flen2, 165ms) var(--motion-easing-refresh-only-c-ic6jr0, cubic-bezier(0.84, 0, 0.16, 1));
331
330
  }
332
331
  @media (prefers-reduced-motion: reduce) {
333
- .awsui_tabs-tab-link_14rmt_17xev_254:not(#\9):not(.awsui_tabs-tab-disabled_14rmt_17xev_311).awsui_refresh_14rmt_17xev_329:after {
332
+ .awsui_tabs-tab-link_14rmt_12gj9_254:not(#\9):not(.awsui_tabs-tab-disabled_14rmt_12gj9_311).awsui_refresh_14rmt_12gj9_328:after {
334
333
  animation: none;
335
334
  transition: none;
336
335
  }
337
336
  }
338
- .awsui-motion-disabled .awsui_tabs-tab-link_14rmt_17xev_254:not(#\9):not(.awsui_tabs-tab-disabled_14rmt_17xev_311).awsui_refresh_14rmt_17xev_329:after, .awsui-mode-entering .awsui_tabs-tab-link_14rmt_17xev_254:not(#\9):not(.awsui_tabs-tab-disabled_14rmt_17xev_311).awsui_refresh_14rmt_17xev_329:after {
337
+ .awsui-motion-disabled .awsui_tabs-tab-link_14rmt_12gj9_254:not(#\9):not(.awsui_tabs-tab-disabled_14rmt_12gj9_311).awsui_refresh_14rmt_12gj9_328:after, .awsui-mode-entering .awsui_tabs-tab-link_14rmt_12gj9_254:not(#\9):not(.awsui_tabs-tab-disabled_14rmt_12gj9_311).awsui_refresh_14rmt_12gj9_328:after {
339
338
  animation: none;
340
339
  transition: none;
341
340
  }
342
341
 
343
- .awsui_tabs-tab-active_14rmt_17xev_343:not(#\9):not(.awsui_tabs-tab-disabled_14rmt_17xev_311) {
342
+ .awsui_tabs-tab-active_14rmt_12gj9_342:not(#\9):not(.awsui_tabs-tab-disabled_14rmt_12gj9_311) {
344
343
  color: var(--color-text-accent-s1eqko, #0972d3);
345
344
  }
346
- .awsui_tabs-tab-active_14rmt_17xev_343:not(#\9):not(.awsui_tabs-tab-disabled_14rmt_17xev_311):after {
345
+ .awsui_tabs-tab-active_14rmt_12gj9_342:not(#\9):not(.awsui_tabs-tab-disabled_14rmt_12gj9_311):after {
347
346
  opacity: 1;
348
347
  }
349
348
 
350
- .awsui_tabs-header-with-divider_14rmt_17xev_350:not(#\9) {
349
+ .awsui_tabs-header-with-divider_14rmt_12gj9_349:not(#\9) {
351
350
  border-bottom: var(--border-divider-section-width-4wm2it, 2px) solid var(--color-border-tabs-divider-69fx5i, #e9ebed);
352
351
  }
353
352
 
354
- .awsui_root_14rmt_17xev_354:not(#\9) {
353
+ .awsui_root_14rmt_12gj9_353:not(#\9) {
355
354
  /* used in test-utils or tests */
356
355
  }
357
356
 
358
- .awsui_tabs_14rmt_17xev_186:not(#\9) {
357
+ .awsui_tabs_14rmt_12gj9_186:not(#\9) {
359
358
  /* stylelint-disable-next-line plugin/no-unsupported-browser-features */
360
359
  border-collapse: separate;
361
360
  border-spacing: 0;
@@ -394,24 +393,18 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
394
393
  width: 100%;
395
394
  }
396
395
 
397
- .awsui_tabs-content_14rmt_17xev_371:not(#\9) {
398
- display: none;
396
+ .awsui_tabs-content-wrapper_14rmt_12gj9_370.awsui_with-paddings_14rmt_12gj9_370:not(#\9) {
397
+ padding: var(--space-scaled-m-pv0fmt, 16px) 0;
399
398
  }
400
399
 
401
- .awsui_tabs-content-active_14rmt_17xev_375:not(#\9) {
402
- display: block;
403
- }
404
- .awsui_tabs-content-active_14rmt_17xev_375[data-awsui-focus-visible=true]:not(#\9):focus {
405
- outline: 2px dotted transparent;
406
- outline-offset: 2px;
407
- border-radius: var(--border-radius-container-gh9ysk, 16px);
408
- box-shadow: 0 0 0 2px var(--color-border-item-focused-ap3b6s, #0972d3);
400
+ .awsui_tabs-container-content-wrapper_14rmt_12gj9_374.awsui_with-paddings_14rmt_12gj9_370:not(#\9) {
401
+ padding-top: var(--space-tabs-content-top-mn4c9x, 12px);
409
402
  }
410
403
 
411
- .awsui_tabs-content-wrapper_14rmt_17xev_385.awsui_with-paddings_14rmt_17xev_385 > .awsui_tabs-content_14rmt_17xev_371:not(#\9) {
412
- padding: var(--space-scaled-m-pv0fmt, 16px) 0;
404
+ .awsui_tabs-content_14rmt_12gj9_370:not(#\9) {
405
+ display: none;
413
406
  }
414
407
 
415
- .awsui_tabs-container-content-wrapper_14rmt_17xev_389.awsui_with-paddings_14rmt_17xev_385 > .awsui_tabs-content_14rmt_17xev_371:not(#\9) {
416
- padding: var(--space-tabs-content-top-mn4c9x, 12px) var(--space-container-horizontal-ddrezg, 24px) var(--space-scaled-l-t03y3z, 20px);
408
+ .awsui_tabs-content-active_14rmt_12gj9_382:not(#\9) {
409
+ display: block;
417
410
  }
@@ -2,26 +2,26 @@
2
2
  // es-module interop with Babel and Typescript
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  module.exports.default = {
5
- "tabs-header": "awsui_tabs-header_14rmt_17xev_186",
6
- "tabs-header-list": "awsui_tabs-header-list_14rmt_17xev_192",
7
- "pagination-button": "awsui_pagination-button_14rmt_17xev_207",
8
- "pagination-button-left": "awsui_pagination-button-left_14rmt_17xev_212",
9
- "pagination-button-left-scrollable": "awsui_pagination-button-left-scrollable_14rmt_17xev_215",
10
- "pagination-button-right": "awsui_pagination-button-right_14rmt_17xev_219",
11
- "pagination-button-right-scrollable": "awsui_pagination-button-right-scrollable_14rmt_17xev_222",
12
- "tabs-tab": "awsui_tabs-tab_14rmt_17xev_227",
13
- "tabs-tab-label": "awsui_tabs-tab-label_14rmt_17xev_238",
14
- "tabs-tab-link": "awsui_tabs-tab-link_14rmt_17xev_254",
15
- "tabs-tab-disabled": "awsui_tabs-tab-disabled_14rmt_17xev_311",
16
- "refresh": "awsui_refresh_14rmt_17xev_329",
17
- "tabs-tab-active": "awsui_tabs-tab-active_14rmt_17xev_343",
18
- "tabs-header-with-divider": "awsui_tabs-header-with-divider_14rmt_17xev_350",
19
- "root": "awsui_root_14rmt_17xev_354",
20
- "tabs": "awsui_tabs_14rmt_17xev_186",
21
- "tabs-content": "awsui_tabs-content_14rmt_17xev_371",
22
- "tabs-content-active": "awsui_tabs-content-active_14rmt_17xev_375",
23
- "tabs-content-wrapper": "awsui_tabs-content-wrapper_14rmt_17xev_385",
24
- "with-paddings": "awsui_with-paddings_14rmt_17xev_385",
25
- "tabs-container-content-wrapper": "awsui_tabs-container-content-wrapper_14rmt_17xev_389"
5
+ "tabs-header": "awsui_tabs-header_14rmt_12gj9_186",
6
+ "tabs-header-list": "awsui_tabs-header-list_14rmt_12gj9_192",
7
+ "pagination-button": "awsui_pagination-button_14rmt_12gj9_207",
8
+ "pagination-button-left": "awsui_pagination-button-left_14rmt_12gj9_212",
9
+ "pagination-button-left-scrollable": "awsui_pagination-button-left-scrollable_14rmt_12gj9_215",
10
+ "pagination-button-right": "awsui_pagination-button-right_14rmt_12gj9_219",
11
+ "pagination-button-right-scrollable": "awsui_pagination-button-right-scrollable_14rmt_12gj9_222",
12
+ "tabs-tab": "awsui_tabs-tab_14rmt_12gj9_227",
13
+ "tabs-tab-label": "awsui_tabs-tab-label_14rmt_12gj9_238",
14
+ "tabs-tab-link": "awsui_tabs-tab-link_14rmt_12gj9_254",
15
+ "tabs-tab-disabled": "awsui_tabs-tab-disabled_14rmt_12gj9_311",
16
+ "refresh": "awsui_refresh_14rmt_12gj9_328",
17
+ "tabs-tab-active": "awsui_tabs-tab-active_14rmt_12gj9_342",
18
+ "tabs-header-with-divider": "awsui_tabs-header-with-divider_14rmt_12gj9_349",
19
+ "root": "awsui_root_14rmt_12gj9_353",
20
+ "tabs": "awsui_tabs_14rmt_12gj9_186",
21
+ "tabs-content-wrapper": "awsui_tabs-content-wrapper_14rmt_12gj9_370",
22
+ "with-paddings": "awsui_with-paddings_14rmt_12gj9_370",
23
+ "tabs-container-content-wrapper": "awsui_tabs-container-content-wrapper_14rmt_12gj9_374",
24
+ "tabs-content": "awsui_tabs-content_14rmt_12gj9_370",
25
+ "tabs-content-active": "awsui_tabs-content-active_14rmt_12gj9_382"
26
26
  };
27
27
 
@@ -9,8 +9,4 @@ export interface TabHeaderBarProps {
9
9
  ariaLabelledby?: string;
10
10
  }
11
11
  export declare function TabHeaderBar({ onChange, activeTabId, tabs, variant, idNamespace, ariaLabel, ariaLabelledby, }: TabHeaderBarProps): JSX.Element;
12
- export declare function getTabElementId({ namespace, tabId }: {
13
- namespace: string;
14
- tabId: string;
15
- }): string;
16
12
  //# sourceMappingURL=tab-header-bar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tab-header-bar.d.ts","sourceRoot":"","sources":["../../../src/tabs/tab-header-bar.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAiBzC,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,CAAC,YAAY,EAAE,SAAS,CAAC,YAAY,KAAK,IAAI,CAAC;IACzD,WAAW,EAAE,SAAS,CAAC,aAAa,CAAC,CAAC;IACtC,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IACxB,OAAO,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,WAAW,EACX,IAAI,EACJ,OAAO,EACP,WAAW,EACX,SAAS,EACT,cAAc,GACf,EAAE,iBAAiB,eAqRnB;AAED,wBAAgB,eAAe,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,UAEzF"}
1
+ {"version":3,"file":"tab-header-bar.d.ts","sourceRoot":"","sources":["../../../src/tabs/tab-header-bar.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAiBzC,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,CAAC,YAAY,EAAE,SAAS,CAAC,YAAY,KAAK,IAAI,CAAC;IACzD,WAAW,EAAE,SAAS,CAAC,aAAa,CAAC,CAAC;IACtC,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IACxB,OAAO,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,WAAW,EACX,IAAI,EACJ,OAAO,EACP,WAAW,EACX,SAAS,EACT,cAAc,GACf,EAAE,iBAAiB,eAoRnB"}
@@ -184,7 +184,7 @@ export function TabHeaderBar(_a) {
184
184
  _a[styles['tabs-tab-active']] = activeTabId === tab.id && !tab.disabled,
185
185
  _a[styles['tabs-tab-disabled']] = tab.disabled,
186
186
  _a));
187
- var commonProps = __assign(__assign({ className: classes }, focusVisible), { role: 'tab', 'aria-selected': tab.id === activeTabId, 'aria-controls': "".concat(idNamespace, "-").concat(tab.id, "-panel"), 'data-testid': tab.id, id: getTabElementId({ namespace: idNamespace, tabId: tab.id }), children: React.createElement("span", { className: styles['tabs-tab-label'] }, tab.label) });
187
+ var commonProps = __assign(__assign({ className: classes }, focusVisible), { role: 'tab', 'aria-selected': tab.id === activeTabId, 'aria-controls': "".concat(idNamespace, "-").concat(tab.id, "-panel"), 'data-testid': tab.id, children: React.createElement("span", { className: styles['tabs-tab-label'] }, tab.label) });
188
188
  if (tab.disabled) {
189
189
  commonProps['aria-disabled'] = 'true';
190
190
  }
@@ -216,8 +216,4 @@ export function TabHeaderBar(_a) {
216
216
  return (React.createElement("li", { ref: function (element) { return tabRefs.current.set(tab.id, element); }, className: styles['tabs-tab'], role: "presentation", key: tab.id }, trigger));
217
217
  }
218
218
  }
219
- export function getTabElementId(_a) {
220
- var namespace = _a.namespace, tabId = _a.tabId;
221
- return namespace + '-' + tabId;
222
- }
223
219
  //# sourceMappingURL=tab-header-bar.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tab-header-bar.js","sourceRoot":"","sources":["../../../src/tabs/tab-header-bar.tsx"],"names":[],"mappings":";AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAE3D,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,eAAe,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,eAAe,EACf,gBAAgB,EAChB,cAAc,GACf,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAYrE,MAAM,UAAU,YAAY,CAAC,EAQT;;QAPlB,QAAQ,cAAA,EACR,WAAW,iBAAA,EACX,IAAI,UAAA,EACJ,OAAO,aAAA,EACP,WAAW,iBAAA,EACX,SAAS,eAAA,EACT,cAAc,oBAAA;IAEd,IAAM,YAAY,GAAG,eAAe,EAAE,CAAC;IAEvC,IAAM,YAAY,GAAG,MAAM,CAAmB,IAAI,CAAC,CAAC;IACpD,IAAM,kBAAkB,GAAG,MAAM,CAAoB,IAAI,CAAC,CAAC;IAC3D,IAAM,kBAAkB,GAAG,MAAM,CAAc,IAAI,CAAC,CAAC;IAErD,IAAM,eAAe,GAAG,gBAAgB,EAAE,CAAC;IAErC,IAAA,KAA8B,iBAAiB,CAAS,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,KAAK,EAAV,CAAU,CAAC,EAA1E,WAAW,QAAA,EAAE,YAAY,QAAiD,CAAC;IAClF,IAAM,OAAO,GAAG,MAAM,CAA2B,IAAI,GAAG,EAAE,CAAC,CAAC;IACtD,IAAA,KAA8C,QAAQ,CAAC,KAAK,CAAC,EAA5D,kBAAkB,QAAA,EAAE,qBAAqB,QAAmB,CAAC;IAC9D,IAAA,KAAkC,QAAQ,CAAC,KAAK,CAAC,EAAhD,YAAY,QAAA,EAAE,eAAe,QAAmB,CAAC;IAClD,IAAA,KAAoC,QAAQ,CAAC,KAAK,CAAC,EAAlD,aAAa,QAAA,EAAE,gBAAgB,QAAmB,CAAC;IAE1D,SAAS,CAAC;QACR,IAAI,YAAY,CAAC,OAAO,EAAE;YACxB,qBAAqB,CAAC,qBAAqB,CAAC,YAAY,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC;YACvF,eAAe,CAAC,eAAe,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;YACvD,gBAAgB,CAAC,gBAAgB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;SAC1D;IACH,CAAC,EAAE,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC;IAExB,IAAM,wBAAwB,GAAG,UAAC,MAAe;QAC/C,IAAI,CAAC,WAAW,EAAE;YAChB,OAAO;SACR;QACD,IAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACtD,IAAI,YAAY,IAAI,YAAY,CAAC,OAAO,EAAE;YACxC,cAAc,CAAC,YAAY,EAAE,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;SAC5D;IACH,CAAC,CAAC;IAEF,SAAS,CAAC;QACR,uEAAuE;QACvE,yDAAyD;QACzD,gEAAgE;QAChE,qBAAqB,CAAC;YACpB,wBAAwB,CAAC,KAAK,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QACH,iEAAiE;QACjE,uDAAuD;IACzD,CAAC,EAAE,CAAC,kBAAkB,EAAE,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAEnD,SAAS,CAAC;QACR,wBAAwB,CAAC,IAAI,CAAC,CAAC;QAC/B,8DAA8D;QAC9D,uDAAuD;IACzD,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAElB,SAAS,CAAC;;QACR;;;UAGE;QACF,IAAI,MAAA,YAAY,CAAC,OAAO,0CAAE,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;YAC1D,IAAI,QAAQ,CAAC,aAAa,KAAK,kBAAkB,CAAC,OAAO,EAAE;gBACzD,MAAA,kBAAkB,CAAC,OAAO,0CAAE,KAAK,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;aAC5D;SACF;IACH,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAElB,IAAM,QAAQ,GAAG;QACf,IAAI,YAAY,CAAC,OAAO,EAAE;YACxB,eAAe,CAAC,eAAe,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;YACvD,gBAAgB,CAAC,gBAAgB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;SAC1D;IACH,CAAC,CAAC;IAEF,IAAM,OAAO,GAAG,IAAI;QAClB,GAAC,MAAM,CAAC,aAAa,CAAC,IAAG,IAAI;QAC7B,GAAC,MAAM,CAAC,0BAA0B,CAAC,IAAG,OAAO,KAAK,SAAS,IAAI,eAAe;YAC9E,CAAC;IAEH,IAAM,iBAAiB,GAAG,IAAI;QAC5B,GAAC,MAAM,CAAC,mBAAmB,CAAC,IAAG,IAAI;QACnC,GAAC,MAAM,CAAC,wBAAwB,CAAC,IAAG,IAAI;QACxC,GAAC,MAAM,CAAC,mCAAmC,CAAC,IAAG,YAAY;YAC3D,CAAC;IAEH,IAAM,kBAAkB,GAAG,IAAI;QAC7B,GAAC,MAAM,CAAC,mBAAmB,CAAC,IAAG,IAAI;QACnC,GAAC,MAAM,CAAC,yBAAyB,CAAC,IAAG,IAAI;QACzC,GAAC,MAAM,CAAC,oCAAoC,CAAC,IAAG,aAAa;YAC7D,CAAC;IAEH,IAAM,0BAA0B,GAAG;QACjC,aAAa,EAAE,IAAI;QACnB,QAAQ,EAAE,CAAC,CAAC;KACb,CAAC;IAEF,OAAO;IACL,iFAAiF;IACjF,6BAAK,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY;QACvC,kBAAkB,IAAI,CACrB,8BAAM,GAAG,EAAE,kBAAkB,EAAE,SAAS,EAAE,iBAAiB;YACzD,oBAAC,cAAc,IACb,UAAU,EAAC,MAAM,EACjB,OAAO,EAAC,MAAM,EACd,QAAQ,EAAC,YAAY,EACrB,kBAAkB,EAAE,0BAA0B,EAC9C,QAAQ,EAAE,CAAC,YAAY,EACvB,OAAO,EAAE,cAAM,OAAA,iBAAiB,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAnC,CAAmC,GAClD,CACG,CACR;QACD,4BACE,IAAI,EAAC,SAAS,EACd,SAAS,EAAE,MAAM,CAAC,kBAAkB,CAAC,gBACzB,SAAS,qBACJ,cAAc,EAC/B,GAAG,EAAE,YAAY,EACjB,QAAQ,EAAE,QAAQ,IAEjB,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,CACvB;QACJ,kBAAkB,IAAI,CACrB,8BAAM,SAAS,EAAE,kBAAkB;YACjC,oBAAC,cAAc,IACb,UAAU,EAAC,MAAM,EACjB,OAAO,EAAC,MAAM,EACd,QAAQ,EAAC,aAAa,EACtB,kBAAkB,EAAE,0BAA0B,EAC9C,QAAQ,EAAE,CAAC,aAAa,EACxB,OAAO,EAAE,cAAM,OAAA,iBAAiB,CAAC,YAAY,EAAE,CAAC,CAAC,EAAlC,CAAkC,GACjD,CACG,CACR,CACG,CACP,CAAC;IAEF,SAAS,eAAe,CAAC,GAAkB;;QACzC,IAAM,yBAAyB,GAAG,IAAI,CAAC,MAAM,CAAC,UAAA,GAAG,IAAI,OAAA,CAAC,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,EAAE,KAAK,WAAW,EAAvC,CAAuC,CAAC,CAAC;QAE9F,IAAM,YAAY,GAAG,UAAU,eAAuB;YACpD,IAAM,GAAG,GAAG,yBAAyB,CAAC,eAAe,CAAC,CAAC;YACvD,IAAI,GAAG,CAAC,EAAE,KAAK,WAAW,EAAE;gBAC1B,OAAO;aACR;YAED,QAAQ,CAAC,EAAE,WAAW,EAAE,GAAG,CAAC,EAAE,EAAE,aAAa,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;QAC7D,CAAC,CAAC;QAEF,IAAM,aAAa,GAAG,UACpB,KAAsF;YAE9E,IAAA,OAAO,GAAK,KAAK,QAAV,CAAW;YAC1B,IAAM,WAAW,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC/G,IAAI,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE;gBACvC,OAAO;aACR;YACD,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,IAAM,WAAW,GAAG,yBAAyB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC3D,QAAQ,OAAO,EAAE;gBACf,KAAK,OAAO,CAAC,KAAK;oBAChB,IAAI,WAAW,GAAG,CAAC,KAAK,yBAAyB,CAAC,MAAM,EAAE;wBACxD,YAAY,CAAC,CAAC,CAAC,CAAC;qBACjB;yBAAM;wBACL,YAAY,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;qBAC/B;oBACD,OAAO;gBACT,KAAK,OAAO,CAAC,IAAI;oBACf,IAAI,WAAW,KAAK,CAAC,EAAE;wBACrB,YAAY,CAAC,yBAAyB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;qBACpD;yBAAM;wBACL,YAAY,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;qBAC/B;oBACD,OAAO;gBACT,KAAK,OAAO,CAAC,GAAG;oBACd,YAAY,CAAC,yBAAyB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;oBACnD,OAAO;gBACT,KAAK,OAAO,CAAC,IAAI;oBACf,YAAY,CAAC,CAAC,CAAC,CAAC;oBAChB,OAAO;gBACT,KAAK,OAAO,CAAC,QAAQ;oBACnB,IAAI,aAAa,EAAE;wBACjB,iBAAiB,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;qBACpC;oBACD,OAAO;gBACT,KAAK,OAAO,CAAC,MAAM;oBACjB,IAAI,YAAY,EAAE;wBAChB,iBAAiB,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC;qBACrC;oBACD,OAAO;aACV;QACH,CAAC,CAAC;QAEF,IAAM,QAAQ,GAAG,UAAC,KAAuB;YACvC,IAAI,GAAG,CAAC,QAAQ,EAAE;gBAChB,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,OAAO;aACR;YAED,wGAAwG;YACxG,IAAM,UAAU,GAAG,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;YAC5C,IAAI,UAAU,IAAI,GAAG,CAAC,IAAI,EAAE;gBAC1B,OAAO;aACR;YAED,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,yDAAyD;YACzD,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;gBACb,IAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAClD,IAAI,aAAa,EAAE;oBACjB,IAAM,YAAY,GAAG,aAAa,CAAC,UAA+B,CAAC;oBACnE,IAAI,YAAY,IAAI,YAAY,KAAK,QAAQ,CAAC,aAAa,EAAE;wBAC3D,YAAY,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;qBAC7C;iBACF;aACF;YAED,IAAI,GAAG,CAAC,EAAE,KAAK,WAAW,EAAE;gBAC1B,OAAO;aACR;YAED,QAAQ,CAAC,EAAE,WAAW,EAAE,GAAG,CAAC,EAAE,EAAE,aAAa,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;QAC7D,CAAC,CAAC;QAEF,IAAM,OAAO,GAAG,IAAI;YAClB,GAAC,MAAM,CAAC,eAAe,CAAC,IAAG,IAAI;YAC/B,GAAC,MAAM,CAAC,OAAO,IAAG,eAAe;YACjC,GAAC,MAAM,CAAC,iBAAiB,CAAC,IAAG,WAAW,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ;YACpE,GAAC,MAAM,CAAC,mBAAmB,CAAC,IAAG,GAAG,CAAC,QAAQ;gBAC3C,CAAC;QAEH,IAAM,WAAW,uBACf,SAAS,EAAE,OAAO,IACf,YAAY,KACf,IAAI,EAAE,KAAK,EACX,eAAe,EAAE,GAAG,CAAC,EAAE,KAAK,WAAW,EACvC,eAAe,EAAE,UAAG,WAAW,cAAI,GAAG,CAAC,EAAE,WAAQ,EACjD,aAAa,EAAE,GAAG,CAAC,EAAE,EACrB,EAAE,EAAE,eAAe,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAC9D,QAAQ,EAAE,8BAAM,SAAS,EAAE,MAAM,CAAC,gBAAgB,CAAC,IAAG,GAAG,CAAC,KAAK,CAAQ,GACxE,CAAC;QAEF,IAAI,GAAG,CAAC,QAAQ,EAAE;YAChB,WAAW,CAAC,eAAe,CAAC,GAAG,MAAM,CAAC;SACvC;aAAM;YACL,WAAW,CAAC,OAAO,GAAG,QAAQ,CAAC;SAChC;QAED,IAAI,GAAG,CAAC,EAAE,KAAK,WAAW,EAAE;YAC1B,WAAW,CAAC,GAAG,GAAG,kBAAkB,CAAC;YACrC,WAAW,CAAC,QAAQ,GAAG,CAAC,CAAC;YACzB,WAAW,CAAC,SAAS,GAAG,UACtB,KAAsF,IACnF,OAAA,aAAa,CAAC,KAAK,CAAC,EAApB,CAAoB,CAAC;SAC3B;aAAM;YACL,WAAW,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;SAC3B;QAED,IAAI,OAAO,GAAG,IAAI,CAAC;QACnB,IAAI,GAAG,CAAC,IAAI,EAAE;YACZ,IAAM,WAAW,GAAG,WAAyC,CAAC;YAC9D,WAAW,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;YAC5B,OAAO,GAAG,sCAAO,WAAW,EAAI,CAAC;SAClC;aAAM;YACL,IAAM,WAAW,GAAG,WAA8C,CAAC;YACnE,WAAW,CAAC,IAAI,GAAG,QAAQ,CAAC;YAC5B,IAAI,GAAG,CAAC,QAAQ,EAAE;gBAChB,WAAW,CAAC,QAAQ,GAAG,IAAI,CAAC;aAC7B;YACD,OAAO,GAAG,2CAAY,WAAW,EAAI,CAAC;SACvC;QAED,OAAO,CACL,4BACE,GAAG,EAAE,UAAA,OAAO,IAAI,OAAA,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,OAAsB,CAAC,EAAnD,CAAmD,EACnE,SAAS,EAAE,MAAM,CAAC,UAAU,CAAC,EAC7B,IAAI,EAAC,cAAc,EACnB,GAAG,EAAE,GAAG,CAAC,EAAE,IAEV,OAAO,CACL,CACN,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,EAA0D;QAAxD,SAAS,eAAA,EAAE,KAAK,WAAA;IAChD,OAAO,SAAS,GAAG,GAAG,GAAG,KAAK,CAAC;AACjC,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useRef, useState, useEffect } from 'react';\nimport { TabsProps } from './interfaces';\nimport clsx from 'clsx';\nimport styles from './styles.css.js';\nimport { InternalButton } from '../button/internal';\nimport useFocusVisible from '../internal/hooks/focus-visible';\nimport { useContainerQuery } from '../internal/hooks/container-queries';\nimport { KeyCode } from '../internal/keycode';\nimport {\n onPaginationClick,\n hasHorizontalOverflow,\n hasLeftOverflow,\n hasRightOverflow,\n scrollIntoView,\n} from './scroll-utils';\nimport { isPlainLeftClick } from '../internal/events';\nimport { useVisualRefresh } from '../internal/hooks/use-visual-mode';\n\nexport interface TabHeaderBarProps {\n onChange: (changeDetail: TabsProps.ChangeDetail) => void;\n activeTabId: TabsProps['activeTabId'];\n tabs: TabsProps['tabs'];\n variant: TabsProps['variant'];\n idNamespace: string;\n ariaLabel?: string;\n ariaLabelledby?: string;\n}\n\nexport function TabHeaderBar({\n onChange,\n activeTabId,\n tabs,\n variant,\n idNamespace,\n ariaLabel,\n ariaLabelledby,\n}: TabHeaderBarProps) {\n const focusVisible = useFocusVisible();\n\n const headerBarRef = useRef<HTMLUListElement>(null);\n const activeTabHeaderRef = useRef<HTMLAnchorElement>(null);\n const leftOverflowButton = useRef<HTMLElement>(null);\n\n const isVisualRefresh = useVisualRefresh();\n\n const [widthChange, containerRef] = useContainerQuery<number>(rect => rect.width);\n const tabRefs = useRef<Map<string, HTMLElement>>(new Map());\n const [horizontalOverflow, setHorizontalOverflow] = useState(false);\n const [leftOverflow, setLeftOverflow] = useState(false);\n const [rightOverflow, setRightOverflow] = useState(false);\n\n useEffect(() => {\n if (headerBarRef.current) {\n setHorizontalOverflow(hasHorizontalOverflow(headerBarRef.current, leftOverflowButton));\n setLeftOverflow(hasLeftOverflow(headerBarRef.current));\n setRightOverflow(hasRightOverflow(headerBarRef.current));\n }\n }, [widthChange, tabs]);\n\n const scrollIntoViewIfPossible = (smooth: boolean) => {\n if (!activeTabId) {\n return;\n }\n const activeTabRef = tabRefs.current.get(activeTabId);\n if (activeTabRef && headerBarRef.current) {\n scrollIntoView(activeTabRef, headerBarRef.current, smooth);\n }\n };\n\n useEffect(() => {\n // Delay scrollIntoView as the position is depending on parent elements\n // (effects are called inside-out in the component tree).\n // Wait one frame to allow parents to complete it's calculation.\n requestAnimationFrame(() => {\n scrollIntoViewIfPossible(false);\n });\n // Non-smooth scrolling should not be called upon activeId change\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [horizontalOverflow, widthChange, tabs.length]);\n\n useEffect(() => {\n scrollIntoViewIfPossible(true);\n // Smooth scrolling should only be called upon activeId change\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [activeTabId]);\n\n useEffect(() => {\n /*\n When the selected tab changes and we are currently already focused on a tab,\n move the focus to the newly selected tab.\n */\n if (headerBarRef.current?.contains(document.activeElement)) {\n if (document.activeElement !== activeTabHeaderRef.current) {\n activeTabHeaderRef.current?.focus({ preventScroll: true });\n }\n }\n }, [activeTabId]);\n\n const onScroll = () => {\n if (headerBarRef.current) {\n setLeftOverflow(hasLeftOverflow(headerBarRef.current));\n setRightOverflow(hasRightOverflow(headerBarRef.current));\n }\n };\n\n const classes = clsx({\n [styles['tabs-header']]: true,\n [styles['tabs-header-with-divider']]: variant === 'default' || isVisualRefresh,\n });\n\n const leftButtonClasses = clsx({\n [styles['pagination-button']]: true,\n [styles['pagination-button-left']]: true,\n [styles['pagination-button-left-scrollable']]: leftOverflow,\n });\n\n const rightButtonClasses = clsx({\n [styles['pagination-button']]: true,\n [styles['pagination-button-right']]: true,\n [styles['pagination-button-right-scrollable']]: rightOverflow,\n });\n\n const paginationButtonAttributes = {\n 'aria-hidden': true,\n tabIndex: -1,\n };\n\n return (\n //converted span to div as list should not be a child of span for HTML validation\n <div className={classes} ref={containerRef}>\n {horizontalOverflow && (\n <span ref={leftOverflowButton} className={leftButtonClasses}>\n <InternalButton\n formAction=\"none\"\n variant=\"icon\"\n iconName=\"angle-left\"\n __nativeAttributes={paginationButtonAttributes}\n disabled={!leftOverflow}\n onClick={() => onPaginationClick(headerBarRef, -1)}\n />\n </span>\n )}\n <ul\n role=\"tablist\"\n className={styles['tabs-header-list']}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledby}\n ref={headerBarRef}\n onScroll={onScroll}\n >\n {tabs.map(renderTabHeader)}\n </ul>\n {horizontalOverflow && (\n <span className={rightButtonClasses}>\n <InternalButton\n formAction=\"none\"\n variant=\"icon\"\n iconName=\"angle-right\"\n __nativeAttributes={paginationButtonAttributes}\n disabled={!rightOverflow}\n onClick={() => onPaginationClick(headerBarRef, 1)}\n />\n </span>\n )}\n </div>\n );\n\n function renderTabHeader(tab: TabsProps.Tab) {\n const enabledTabsWithCurrentTab = tabs.filter(tab => !tab.disabled || tab.id === activeTabId);\n\n const highlightTab = function (enabledTabIndex: number) {\n const tab = enabledTabsWithCurrentTab[enabledTabIndex];\n if (tab.id === activeTabId) {\n return;\n }\n\n onChange({ activeTabId: tab.id, activeTabHref: tab.href });\n };\n\n const handleKeyDown = function (\n event: React.KeyboardEvent<HTMLAnchorElement> | React.KeyboardEvent<HTMLButtonElement>\n ) {\n const { keyCode } = event;\n const specialKeys = [KeyCode.right, KeyCode.left, KeyCode.end, KeyCode.home, KeyCode.pageUp, KeyCode.pageDown];\n if (specialKeys.indexOf(keyCode) === -1) {\n return;\n }\n event.preventDefault();\n const activeIndex = enabledTabsWithCurrentTab.indexOf(tab);\n switch (keyCode) {\n case KeyCode.right:\n if (activeIndex + 1 === enabledTabsWithCurrentTab.length) {\n highlightTab(0);\n } else {\n highlightTab(activeIndex + 1);\n }\n return;\n case KeyCode.left:\n if (activeIndex === 0) {\n highlightTab(enabledTabsWithCurrentTab.length - 1);\n } else {\n highlightTab(activeIndex - 1);\n }\n return;\n case KeyCode.end:\n highlightTab(enabledTabsWithCurrentTab.length - 1);\n return;\n case KeyCode.home:\n highlightTab(0);\n return;\n case KeyCode.pageDown:\n if (rightOverflow) {\n onPaginationClick(headerBarRef, 1);\n }\n return;\n case KeyCode.pageUp:\n if (leftOverflow) {\n onPaginationClick(headerBarRef, -1);\n }\n return;\n }\n };\n\n const clickTab = (event: React.MouseEvent) => {\n if (tab.disabled) {\n event.preventDefault();\n return;\n }\n\n // if the primary mouse button is clicked with a modifier key, the browser will handle opening a new tab\n const specialKey = !isPlainLeftClick(event);\n if (specialKey && tab.href) {\n return;\n }\n\n event.preventDefault();\n // for browsers that do not focus buttons on button click\n if (!tab.href) {\n const clickedTabRef = tabRefs.current.get(tab.id);\n if (clickedTabRef) {\n const childElement = clickedTabRef.firstChild as HTMLButtonElement;\n if (childElement && childElement !== document.activeElement) {\n childElement.focus({ preventScroll: true });\n }\n }\n }\n\n if (tab.id === activeTabId) {\n return;\n }\n\n onChange({ activeTabId: tab.id, activeTabHref: tab.href });\n };\n\n const classes = clsx({\n [styles['tabs-tab-link']]: true,\n [styles.refresh]: isVisualRefresh,\n [styles['tabs-tab-active']]: activeTabId === tab.id && !tab.disabled,\n [styles['tabs-tab-disabled']]: tab.disabled,\n });\n\n const commonProps: (JSX.IntrinsicElements['a'] | JSX.IntrinsicElements['button']) & { 'data-testid': string } = {\n className: classes,\n ...focusVisible,\n role: 'tab',\n 'aria-selected': tab.id === activeTabId,\n 'aria-controls': `${idNamespace}-${tab.id}-panel`,\n 'data-testid': tab.id,\n id: getTabElementId({ namespace: idNamespace, tabId: tab.id }),\n children: <span className={styles['tabs-tab-label']}>{tab.label}</span>,\n };\n\n if (tab.disabled) {\n commonProps['aria-disabled'] = 'true';\n } else {\n commonProps.onClick = clickTab;\n }\n\n if (tab.id === activeTabId) {\n commonProps.ref = activeTabHeaderRef;\n commonProps.tabIndex = 0;\n commonProps.onKeyDown = (\n event: React.KeyboardEvent<HTMLAnchorElement> | React.KeyboardEvent<HTMLButtonElement>\n ) => handleKeyDown(event);\n } else {\n commonProps.tabIndex = -1;\n }\n\n let trigger = null;\n if (tab.href) {\n const anchorProps = commonProps as JSX.IntrinsicElements['a'];\n anchorProps.href = tab.href;\n trigger = <a {...anchorProps} />;\n } else {\n const buttonProps = commonProps as JSX.IntrinsicElements['button'];\n buttonProps.type = 'button';\n if (tab.disabled) {\n buttonProps.disabled = true;\n }\n trigger = <button {...buttonProps} />;\n }\n\n return (\n <li\n ref={element => tabRefs.current.set(tab.id, element as HTMLElement)}\n className={styles['tabs-tab']}\n role=\"presentation\"\n key={tab.id}\n >\n {trigger}\n </li>\n );\n }\n}\n\nexport function getTabElementId({ namespace, tabId }: { namespace: string; tabId: string }) {\n return namespace + '-' + tabId;\n}\n"]}
1
+ {"version":3,"file":"tab-header-bar.js","sourceRoot":"","sources":["../../../src/tabs/tab-header-bar.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, { useRef, useState, useEffect } from 'react';\nimport { TabsProps } from './interfaces';\nimport clsx from 'clsx';\nimport styles from './styles.css.js';\nimport { InternalButton } from '../button/internal';\nimport useFocusVisible from '../internal/hooks/focus-visible';\nimport { useContainerQuery } from '../internal/hooks/container-queries';\nimport { KeyCode } from '../internal/keycode';\nimport {\n onPaginationClick,\n hasHorizontalOverflow,\n hasLeftOverflow,\n hasRightOverflow,\n scrollIntoView,\n} from './scroll-utils';\nimport { isPlainLeftClick } from '../internal/events';\nimport { useVisualRefresh } from '../internal/hooks/use-visual-mode';\n\nexport interface TabHeaderBarProps {\n onChange: (changeDetail: TabsProps.ChangeDetail) => void;\n activeTabId: TabsProps['activeTabId'];\n tabs: TabsProps['tabs'];\n variant: TabsProps['variant'];\n idNamespace: string;\n ariaLabel?: string;\n ariaLabelledby?: string;\n}\n\nexport function TabHeaderBar({\n onChange,\n activeTabId,\n tabs,\n variant,\n idNamespace,\n ariaLabel,\n ariaLabelledby,\n}: TabHeaderBarProps) {\n const focusVisible = useFocusVisible();\n\n const headerBarRef = useRef<HTMLUListElement>(null);\n const activeTabHeaderRef = useRef<HTMLAnchorElement>(null);\n const leftOverflowButton = useRef<HTMLElement>(null);\n\n const isVisualRefresh = useVisualRefresh();\n\n const [widthChange, containerRef] = useContainerQuery<number>(rect => rect.width);\n const tabRefs = useRef<Map<string, HTMLElement>>(new Map());\n const [horizontalOverflow, setHorizontalOverflow] = useState(false);\n const [leftOverflow, setLeftOverflow] = useState(false);\n const [rightOverflow, setRightOverflow] = useState(false);\n\n useEffect(() => {\n if (headerBarRef.current) {\n setHorizontalOverflow(hasHorizontalOverflow(headerBarRef.current, leftOverflowButton));\n setLeftOverflow(hasLeftOverflow(headerBarRef.current));\n setRightOverflow(hasRightOverflow(headerBarRef.current));\n }\n }, [widthChange, tabs]);\n\n const scrollIntoViewIfPossible = (smooth: boolean) => {\n if (!activeTabId) {\n return;\n }\n const activeTabRef = tabRefs.current.get(activeTabId);\n if (activeTabRef && headerBarRef.current) {\n scrollIntoView(activeTabRef, headerBarRef.current, smooth);\n }\n };\n\n useEffect(() => {\n // Delay scrollIntoView as the position is depending on parent elements\n // (effects are called inside-out in the component tree).\n // Wait one frame to allow parents to complete it's calculation.\n requestAnimationFrame(() => {\n scrollIntoViewIfPossible(false);\n });\n // Non-smooth scrolling should not be called upon activeId change\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [horizontalOverflow, widthChange, tabs.length]);\n\n useEffect(() => {\n scrollIntoViewIfPossible(true);\n // Smooth scrolling should only be called upon activeId change\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [activeTabId]);\n\n useEffect(() => {\n /*\n When the selected tab changes and we are currently already focused on a tab,\n move the focus to the newly selected tab.\n */\n if (headerBarRef.current?.contains(document.activeElement)) {\n if (document.activeElement !== activeTabHeaderRef.current) {\n activeTabHeaderRef.current?.focus({ preventScroll: true });\n }\n }\n }, [activeTabId]);\n\n const onScroll = () => {\n if (headerBarRef.current) {\n setLeftOverflow(hasLeftOverflow(headerBarRef.current));\n setRightOverflow(hasRightOverflow(headerBarRef.current));\n }\n };\n\n const classes = clsx({\n [styles['tabs-header']]: true,\n [styles['tabs-header-with-divider']]: variant === 'default' || isVisualRefresh,\n });\n\n const leftButtonClasses = clsx({\n [styles['pagination-button']]: true,\n [styles['pagination-button-left']]: true,\n [styles['pagination-button-left-scrollable']]: leftOverflow,\n });\n\n const rightButtonClasses = clsx({\n [styles['pagination-button']]: true,\n [styles['pagination-button-right']]: true,\n [styles['pagination-button-right-scrollable']]: rightOverflow,\n });\n\n const paginationButtonAttributes = {\n 'aria-hidden': true,\n tabIndex: -1,\n };\n\n return (\n //converted span to div as list should not be a child of span for HTML validation\n <div className={classes} ref={containerRef}>\n {horizontalOverflow && (\n <span ref={leftOverflowButton} className={leftButtonClasses}>\n <InternalButton\n formAction=\"none\"\n variant=\"icon\"\n iconName=\"angle-left\"\n __nativeAttributes={paginationButtonAttributes}\n disabled={!leftOverflow}\n onClick={() => onPaginationClick(headerBarRef, -1)}\n />\n </span>\n )}\n <ul\n role=\"tablist\"\n className={styles['tabs-header-list']}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledby}\n ref={headerBarRef}\n onScroll={onScroll}\n >\n {tabs.map(renderTabHeader)}\n </ul>\n {horizontalOverflow && (\n <span className={rightButtonClasses}>\n <InternalButton\n formAction=\"none\"\n variant=\"icon\"\n iconName=\"angle-right\"\n __nativeAttributes={paginationButtonAttributes}\n disabled={!rightOverflow}\n onClick={() => onPaginationClick(headerBarRef, 1)}\n />\n </span>\n )}\n </div>\n );\n\n function renderTabHeader(tab: TabsProps.Tab) {\n const enabledTabsWithCurrentTab = tabs.filter(tab => !tab.disabled || tab.id === activeTabId);\n\n const highlightTab = function (enabledTabIndex: number) {\n const tab = enabledTabsWithCurrentTab[enabledTabIndex];\n if (tab.id === activeTabId) {\n return;\n }\n\n onChange({ activeTabId: tab.id, activeTabHref: tab.href });\n };\n\n const handleKeyDown = function (\n event: React.KeyboardEvent<HTMLAnchorElement> | React.KeyboardEvent<HTMLButtonElement>\n ) {\n const { keyCode } = event;\n const specialKeys = [KeyCode.right, KeyCode.left, KeyCode.end, KeyCode.home, KeyCode.pageUp, KeyCode.pageDown];\n if (specialKeys.indexOf(keyCode) === -1) {\n return;\n }\n event.preventDefault();\n const activeIndex = enabledTabsWithCurrentTab.indexOf(tab);\n switch (keyCode) {\n case KeyCode.right:\n if (activeIndex + 1 === enabledTabsWithCurrentTab.length) {\n highlightTab(0);\n } else {\n highlightTab(activeIndex + 1);\n }\n return;\n case KeyCode.left:\n if (activeIndex === 0) {\n highlightTab(enabledTabsWithCurrentTab.length - 1);\n } else {\n highlightTab(activeIndex - 1);\n }\n return;\n case KeyCode.end:\n highlightTab(enabledTabsWithCurrentTab.length - 1);\n return;\n case KeyCode.home:\n highlightTab(0);\n return;\n case KeyCode.pageDown:\n if (rightOverflow) {\n onPaginationClick(headerBarRef, 1);\n }\n return;\n case KeyCode.pageUp:\n if (leftOverflow) {\n onPaginationClick(headerBarRef, -1);\n }\n return;\n }\n };\n\n const clickTab = (event: React.MouseEvent) => {\n if (tab.disabled) {\n event.preventDefault();\n return;\n }\n\n // if the primary mouse button is clicked with a modifier key, the browser will handle opening a new tab\n const specialKey = !isPlainLeftClick(event);\n if (specialKey && tab.href) {\n return;\n }\n\n event.preventDefault();\n // for browsers that do not focus buttons on button click\n if (!tab.href) {\n const clickedTabRef = tabRefs.current.get(tab.id);\n if (clickedTabRef) {\n const childElement = clickedTabRef.firstChild as HTMLButtonElement;\n if (childElement && childElement !== document.activeElement) {\n childElement.focus({ preventScroll: true });\n }\n }\n }\n\n if (tab.id === activeTabId) {\n return;\n }\n\n onChange({ activeTabId: tab.id, activeTabHref: tab.href });\n };\n\n const classes = clsx({\n [styles['tabs-tab-link']]: true,\n [styles.refresh]: isVisualRefresh,\n [styles['tabs-tab-active']]: activeTabId === tab.id && !tab.disabled,\n [styles['tabs-tab-disabled']]: tab.disabled,\n });\n\n const commonProps: (JSX.IntrinsicElements['a'] | JSX.IntrinsicElements['button']) & { 'data-testid': string } = {\n className: classes,\n ...focusVisible,\n role: 'tab',\n 'aria-selected': tab.id === activeTabId,\n 'aria-controls': `${idNamespace}-${tab.id}-panel`,\n 'data-testid': tab.id,\n children: <span className={styles['tabs-tab-label']}>{tab.label}</span>,\n };\n\n if (tab.disabled) {\n commonProps['aria-disabled'] = 'true';\n } else {\n commonProps.onClick = clickTab;\n }\n\n if (tab.id === activeTabId) {\n commonProps.ref = activeTabHeaderRef;\n commonProps.tabIndex = 0;\n commonProps.onKeyDown = (\n event: React.KeyboardEvent<HTMLAnchorElement> | React.KeyboardEvent<HTMLButtonElement>\n ) => handleKeyDown(event);\n } else {\n commonProps.tabIndex = -1;\n }\n\n let trigger = null;\n if (tab.href) {\n const anchorProps = commonProps as JSX.IntrinsicElements['a'];\n anchorProps.href = tab.href;\n trigger = <a {...anchorProps} />;\n } else {\n const buttonProps = commonProps as JSX.IntrinsicElements['button'];\n buttonProps.type = 'button';\n if (tab.disabled) {\n buttonProps.disabled = true;\n }\n trigger = <button {...buttonProps} />;\n }\n\n return (\n <li\n ref={element => tabRefs.current.set(tab.id, element as HTMLElement)}\n className={styles['tabs-tab']}\n role=\"presentation\"\n key={tab.id}\n >\n {trigger}\n </li>\n );\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../../../src/tag-editor/internal.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA2B,MAAM,OAAO,CAAC;AAEhD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAE7D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAajD,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,cAAc,EAAE,gBAAgB,CAAC,OAAO,CAAC;IACzC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAC5C,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAAC;IAE1D,iBAAiB,CAAC,EAAE,KAAK,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;CACtE;AAED,eAAO,MAAM,UAAU,wFA2FtB,CAAC;AAEF,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,eAAO,MAAM,UAAU,2FAgCtB,CAAC"}
1
+ {"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../../../src/tag-editor/internal.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAE3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAE7D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAajD,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,cAAc,EAAE,gBAAgB,CAAC,OAAO,CAAC;IACzC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAC5C,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAAC;IAE1D,iBAAiB,CAAC,EAAE,KAAK,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;CACtE;AAED,eAAO,MAAM,UAAU,wFA6FtB,CAAC;AAEF,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,eAAO,MAAM,UAAU,2FAgCtB,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import { __assign } from "tslib";
2
2
  // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
3
  // SPDX-License-Identifier: Apache-2.0
4
- import React, { useRef, useState } from 'react';
4
+ import React, { useEffect, useRef, useState } from 'react';
5
5
  import InternalAutosuggest from '../autosuggest/internal';
6
6
  import useFocusVisible from '../internal/hooks/focus-visible';
7
7
  import { KeyCode } from '../internal/keycode';
@@ -19,19 +19,20 @@ export var TagControl = React.forwardRef(function (_a, ref) {
19
19
  var isSameQuery = function (key, value) {
20
20
  return latestFilteringQuery.current.key === key && latestFilteringQuery.current.value === value;
21
21
  };
22
+ // Cancel any active promises on unmount.
23
+ useEffect(function () { return function () { return requestCancelFnRef.current.cancel(); }; }, []);
22
24
  var onLoadItems = function (filteringText) {
23
25
  if (!onRequest || isSameQuery(filteringKey, filteringText) || requestCancelFnRef.current.isCancelled()) {
24
26
  return;
25
27
  }
26
28
  requestCancelFnRef.current.cancel();
27
- if (latestFilteringQuery.current.key !== filteringKey) {
28
- // Reset suggestions for values if the key is different.
29
- setOptions([]);
30
- }
31
- else if (filteringText === '' && (initialOptionsRef === null || initialOptionsRef === void 0 ? void 0 : initialOptionsRef.current) && initialOptionsRef.current.length > 0) {
29
+ if (filteringText === '' && (initialOptionsRef === null || initialOptionsRef === void 0 ? void 0 : initialOptionsRef.current) && initialOptionsRef.current.length > 0) {
32
30
  // Load in the background, if the value is empty and we already have suggestions.
33
31
  setOptions(initialOptionsRef.current);
34
32
  }
33
+ if (latestFilteringQuery.current.key !== filteringKey) {
34
+ setOptions([]);
35
+ }
35
36
  setStatusType('loading');
36
37
  latestFilteringQuery.current = { key: filteringKey, value: filteringText };
37
38
  var _a = makeCancellable(onRequest(filteringText)), promise = _a.promise, cancel = _a.cancel, isCancelled = _a.isCancelled;