@cloudscape-design/components 3.0.684 → 3.0.686

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 (216) hide show
  1. package/annotation-context/annotation/styles.css.js +24 -24
  2. package/annotation-context/annotation/styles.scoped.css +31 -31
  3. package/annotation-context/annotation/styles.selectors.js +24 -24
  4. package/app-layout/notifications/styles.css.js +3 -3
  5. package/app-layout/notifications/styles.scoped.css +7 -7
  6. package/app-layout/notifications/styles.selectors.js +3 -3
  7. package/app-layout/visual-refresh/styles.css.js +82 -82
  8. package/app-layout/visual-refresh/styles.scoped.css +255 -255
  9. package/app-layout/visual-refresh/styles.selectors.js +82 -82
  10. package/app-layout/visual-refresh-toolbar/navigation/styles.css.js +6 -6
  11. package/app-layout/visual-refresh-toolbar/navigation/styles.scoped.css +13 -13
  12. package/app-layout/visual-refresh-toolbar/navigation/styles.selectors.js +6 -6
  13. package/app-layout/visual-refresh-toolbar/skeleton/styles.css.js +16 -16
  14. package/app-layout/visual-refresh-toolbar/skeleton/styles.scoped.css +37 -37
  15. package/app-layout/visual-refresh-toolbar/skeleton/styles.selectors.js +16 -16
  16. package/area-chart/model/use-chart-model.d.ts.map +1 -1
  17. package/area-chart/model/use-chart-model.js +2 -1
  18. package/area-chart/model/use-chart-model.js.map +1 -1
  19. package/area-chart/model/utils.d.ts +0 -1
  20. package/area-chart/model/utils.d.ts.map +1 -1
  21. package/area-chart/model/utils.js +0 -10
  22. package/area-chart/model/utils.js.map +1 -1
  23. package/button/interfaces.d.ts +1 -1
  24. package/button/interfaces.js.map +1 -1
  25. package/button-dropdown/item-element/index.js +1 -1
  26. package/button-dropdown/item-element/index.js.map +1 -1
  27. package/button-dropdown/item-element/styles.css.js +12 -11
  28. package/button-dropdown/item-element/styles.scoped.css +14 -14
  29. package/button-dropdown/item-element/styles.selectors.js +12 -11
  30. package/button-dropdown/tooltip.d.ts +2 -1
  31. package/button-dropdown/tooltip.d.ts.map +1 -1
  32. package/button-dropdown/tooltip.js +2 -2
  33. package/button-dropdown/tooltip.js.map +1 -1
  34. package/content-layout/styles.css.js +14 -14
  35. package/content-layout/styles.scoped.css +27 -27
  36. package/content-layout/styles.selectors.js +14 -14
  37. package/copy-to-clipboard/index.d.ts +1 -1
  38. package/copy-to-clipboard/index.d.ts.map +1 -1
  39. package/copy-to-clipboard/index.js +2 -2
  40. package/copy-to-clipboard/index.js.map +1 -1
  41. package/copy-to-clipboard/interfaces.d.ts +8 -0
  42. package/copy-to-clipboard/interfaces.d.ts.map +1 -1
  43. package/copy-to-clipboard/interfaces.js.map +1 -1
  44. package/copy-to-clipboard/internal.d.ts +1 -1
  45. package/copy-to-clipboard/internal.d.ts.map +1 -1
  46. package/copy-to-clipboard/internal.js +2 -2
  47. package/copy-to-clipboard/internal.js.map +1 -1
  48. package/flashbar/styles.css.js +47 -47
  49. package/flashbar/styles.scoped.css +171 -171
  50. package/flashbar/styles.selectors.js +47 -47
  51. package/i18n/dynamic.js +2 -0
  52. package/i18n/messages/all.all.js +1 -1
  53. package/i18n/messages/all.all.json +1 -1
  54. package/i18n/messages/all.ar.d.ts +3 -0
  55. package/i18n/messages/all.ar.js +1 -0
  56. package/i18n/messages/all.ar.json +1 -0
  57. package/i18n/messages/all.de.js +1 -1
  58. package/i18n/messages/all.de.json +1 -1
  59. package/i18n/messages/all.en-GB.js +1 -1
  60. package/i18n/messages/all.en-GB.json +1 -1
  61. package/i18n/messages/all.en.js +1 -1
  62. package/i18n/messages/all.en.json +1 -1
  63. package/i18n/messages/all.es.js +1 -1
  64. package/i18n/messages/all.es.json +1 -1
  65. package/i18n/messages/all.fr.js +1 -1
  66. package/i18n/messages/all.fr.json +1 -1
  67. package/i18n/messages/all.id.js +1 -1
  68. package/i18n/messages/all.id.json +1 -1
  69. package/i18n/messages/all.it.js +1 -1
  70. package/i18n/messages/all.it.json +1 -1
  71. package/i18n/messages/all.ja.js +1 -1
  72. package/i18n/messages/all.ja.json +1 -1
  73. package/i18n/messages/all.ko.js +1 -1
  74. package/i18n/messages/all.ko.json +1 -1
  75. package/i18n/messages/all.pt-BR.js +1 -1
  76. package/i18n/messages/all.pt-BR.json +1 -1
  77. package/i18n/messages/all.tr.js +1 -1
  78. package/i18n/messages/all.tr.json +1 -1
  79. package/i18n/messages/all.zh-CN.js +1 -1
  80. package/i18n/messages/all.zh-CN.json +1 -1
  81. package/i18n/messages/all.zh-TW.js +1 -1
  82. package/i18n/messages/all.zh-TW.json +1 -1
  83. package/i18n/messages-types.d.ts +12 -0
  84. package/i18n/messages-types.d.ts.map +1 -1
  85. package/i18n/messages-types.js.map +1 -1
  86. package/icon/styles.css.js +38 -37
  87. package/icon/styles.scoped.css +82 -80
  88. package/icon/styles.selectors.js +38 -37
  89. package/index.d.ts +1 -0
  90. package/index.d.ts.map +1 -1
  91. package/index.js +1 -0
  92. package/index.js.map +1 -1
  93. package/internal/components/chart-plot/focus-outline.js +1 -1
  94. package/internal/components/chart-plot/focus-outline.js.map +1 -1
  95. package/internal/components/dropdown/styles.css.js +20 -20
  96. package/internal/components/dropdown/styles.scoped.css +40 -40
  97. package/internal/components/dropdown/styles.selectors.js +20 -20
  98. package/internal/environment.js +1 -1
  99. package/internal/environment.json +1 -1
  100. package/internal/generated/custom-css-properties/index.d.ts +2 -0
  101. package/internal/generated/custom-css-properties/index.d.ts.map +1 -1
  102. package/internal/generated/custom-css-properties/index.js +57 -55
  103. package/internal/generated/custom-css-properties/index.js.map +1 -1
  104. package/internal/hooks/use-base-component/index.d.ts.map +1 -1
  105. package/internal/hooks/use-base-component/index.js +1 -2
  106. package/internal/hooks/use-base-component/index.js.map +1 -1
  107. package/internal/manifest.json +1 -1
  108. package/internal/utils/circle-index.d.ts +2 -0
  109. package/internal/utils/circle-index.d.ts.map +1 -0
  110. package/internal/utils/circle-index.js +13 -0
  111. package/internal/utils/circle-index.js.map +1 -0
  112. package/key-value-pairs/index.d.ts +1 -1
  113. package/key-value-pairs/index.d.ts.map +1 -1
  114. package/key-value-pairs/index.js +2 -2
  115. package/key-value-pairs/index.js.map +1 -1
  116. package/key-value-pairs/interfaces.d.ts +11 -0
  117. package/key-value-pairs/interfaces.d.ts.map +1 -1
  118. package/key-value-pairs/interfaces.js.map +1 -1
  119. package/key-value-pairs/internal.d.ts.map +1 -1
  120. package/key-value-pairs/internal.js +2 -2
  121. package/key-value-pairs/internal.js.map +1 -1
  122. package/mixed-line-bar-chart/hooks/use-navigation.d.ts.map +1 -1
  123. package/mixed-line-bar-chart/hooks/use-navigation.js +1 -10
  124. package/mixed-line-bar-chart/hooks/use-navigation.js.map +1 -1
  125. package/package.json +4 -1
  126. package/prompt-input/index.d.ts +6 -0
  127. package/prompt-input/index.d.ts.map +1 -0
  128. package/prompt-input/index.js +27 -0
  129. package/prompt-input/index.js.map +1 -0
  130. package/prompt-input/interfaces.d.ts +82 -0
  131. package/prompt-input/interfaces.d.ts.map +1 -0
  132. package/prompt-input/interfaces.js +2 -0
  133. package/prompt-input/interfaces.js.map +1 -0
  134. package/prompt-input/internal.d.ts +8 -0
  135. package/prompt-input/internal.d.ts.map +1 -0
  136. package/prompt-input/internal.js +109 -0
  137. package/prompt-input/internal.js.map +1 -0
  138. package/prompt-input/styles.css.js +13 -0
  139. package/prompt-input/styles.scoped.css +248 -0
  140. package/prompt-input/styles.selectors.js +14 -0
  141. package/prompt-input/test-classes/styles.css.js +8 -0
  142. package/prompt-input/test-classes/styles.scoped.css +15 -0
  143. package/prompt-input/test-classes/styles.selectors.js +9 -0
  144. package/property-filter/filtering-token/index.d.ts.map +1 -0
  145. package/{internal/components → property-filter}/filtering-token/index.js +7 -6
  146. package/property-filter/filtering-token/index.js.map +1 -0
  147. package/property-filter/filtering-token/styles.css.js +12 -0
  148. package/{internal/components → property-filter}/filtering-token/styles.scoped.css +15 -15
  149. package/property-filter/filtering-token/styles.selectors.js +13 -0
  150. package/property-filter/test-classes/styles.css.js +14 -0
  151. package/property-filter/test-classes/styles.scoped.css +39 -0
  152. package/property-filter/test-classes/styles.selectors.js +15 -0
  153. package/property-filter/token-editor.d.ts.map +1 -1
  154. package/property-filter/token-editor.js +7 -5
  155. package/property-filter/token-editor.js.map +1 -1
  156. package/property-filter/token.js +1 -1
  157. package/property-filter/token.js.map +1 -1
  158. package/select/parts/filter.d.ts +1 -1
  159. package/slider/styles.css.js +26 -27
  160. package/slider/styles.scoped.css +90 -90
  161. package/slider/styles.selectors.js +26 -27
  162. package/spinner/styles.css.js +13 -13
  163. package/spinner/styles.scoped.css +39 -39
  164. package/spinner/styles.selectors.js +13 -13
  165. package/table/body-cell/styles.css.js +46 -46
  166. package/table/body-cell/styles.scoped.css +525 -274
  167. package/table/body-cell/styles.selectors.js +46 -46
  168. package/table/body-cell/td-element.d.ts.map +1 -1
  169. package/table/body-cell/td-element.js +3 -4
  170. package/table/body-cell/td-element.js.map +1 -1
  171. package/tabs/styles.css.js +28 -28
  172. package/tabs/styles.scoped.css +53 -53
  173. package/tabs/styles.selectors.js +28 -28
  174. package/tabs/tab-header-bar.d.ts.map +1 -1
  175. package/tabs/tab-header-bar.js +1 -9
  176. package/tabs/tab-header-bar.js.map +1 -1
  177. package/test-utils/dom/copy-to-clipboard/index.d.ts +3 -1
  178. package/test-utils/dom/copy-to-clipboard/index.js +2 -2
  179. package/test-utils/dom/copy-to-clipboard/index.js.map +1 -1
  180. package/test-utils/dom/index.d.ts +3 -0
  181. package/test-utils/dom/index.js +10 -2
  182. package/test-utils/dom/index.js.map +1 -1
  183. package/test-utils/dom/prompt-input/index.d.ts +18 -0
  184. package/test-utils/dom/prompt-input/index.js +49 -0
  185. package/test-utils/dom/prompt-input/index.js.map +1 -0
  186. package/test-utils/dom/property-filter/index.d.ts +25 -2
  187. package/test-utils/dom/property-filter/index.js +59 -6
  188. package/test-utils/dom/property-filter/index.js.map +1 -1
  189. package/test-utils/selectors/copy-to-clipboard/index.d.ts +3 -1
  190. package/test-utils/selectors/copy-to-clipboard/index.js +4 -2
  191. package/test-utils/selectors/copy-to-clipboard/index.js.map +1 -1
  192. package/test-utils/selectors/index.d.ts +3 -0
  193. package/test-utils/selectors/index.js +10 -2
  194. package/test-utils/selectors/index.js.map +1 -1
  195. package/test-utils/selectors/prompt-input/index.d.ts +6 -0
  196. package/test-utils/selectors/prompt-input/index.js +15 -0
  197. package/test-utils/selectors/prompt-input/index.js.map +1 -0
  198. package/test-utils/selectors/property-filter/index.d.ts +25 -2
  199. package/test-utils/selectors/property-filter/index.js +61 -6
  200. package/test-utils/selectors/property-filter/index.js.map +1 -1
  201. package/test-utils/tsconfig.tsbuildinfo +1 -1
  202. package/internal/components/filtering-token/index.d.ts.map +0 -1
  203. package/internal/components/filtering-token/index.js.map +0 -1
  204. package/internal/components/filtering-token/styles.css.js +0 -12
  205. package/internal/components/filtering-token/styles.selectors.js +0 -13
  206. package/internal/hooks/focus-visible/index.d.ts +0 -3
  207. package/internal/hooks/focus-visible/index.d.ts.map +0 -1
  208. package/internal/hooks/focus-visible/index.js +0 -49
  209. package/internal/hooks/focus-visible/index.js.map +0 -1
  210. package/test-utils/dom/internal/filtering-token.d.ts +0 -8
  211. package/test-utils/dom/internal/filtering-token.js +0 -21
  212. package/test-utils/dom/internal/filtering-token.js.map +0 -1
  213. package/test-utils/selectors/internal/filtering-token.d.ts +0 -8
  214. package/test-utils/selectors/internal/filtering-token.js +0 -21
  215. package/test-utils/selectors/internal/filtering-token.js.map +0 -1
  216. /package/{internal/components → property-filter}/filtering-token/index.d.ts +0 -0
@@ -21,9 +21,9 @@ const InternalKeyValuePairGroup = ({ label, value }) => (React.createElement(Rea
21
21
  label && React.createElement("dt", { className: styles['group-title'] }, label),
22
22
  React.createElement("dd", { className: styles.detail }, value)));
23
23
  const InternalKeyValuePairs = React.forwardRef((_a, ref) => {
24
- var { columns, items, className } = _a, rest = __rest(_a, ["columns", "items", "className"]);
24
+ var { columns, items, className, ariaLabel, ariaLabelledby } = _a, rest = __rest(_a, ["columns", "items", "className", "ariaLabel", "ariaLabelledby"]);
25
25
  return (React.createElement(LinkDefaultVariantContext.Provider, { value: { defaultVariant: 'primary' } },
26
- React.createElement("div", Object.assign({}, rest, { className: clsx(styles['key-value-pairs'], className), ref: ref }),
26
+ React.createElement("div", Object.assign({}, rest, { className: clsx(styles['key-value-pairs'], className), "aria-label": ariaLabel, "aria-labelledby": ariaLabelledby, ref: ref }),
27
27
  React.createElement(ColumnLayout, { __tagOverride: "dl", columns: Math.min(columns, 4), variant: "text-grid", minColumnWidth: 150 }, items.map((pair, index) => {
28
28
  if (pair.type === 'group') {
29
29
  return (
@@ -1 +1 @@
1
- {"version":3,"file":"internal.js","sourceRoot":"","sources":["../../../src/key-value-pairs/internal.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 from 'react';\nimport clsx from 'clsx';\nimport styles from './styles.css.js';\nimport { KeyValuePairsProps } from './interfaces';\nimport { InfoLinkLabelContext } from '../internal/context/info-link-label-context';\nimport ColumnLayout from '../column-layout/internal';\nimport { LinkDefaultVariantContext } from '../internal/context/link-default-variant-context';\nimport Box from '../box/internal';\nimport { useUniqueId } from '../internal/hooks/use-unique-id';\n\nconst InternalKeyValuePair = ({ label, info, value, id }: KeyValuePairsProps.Pair) => {\n const kvPairId = useUniqueId('kv-pair-');\n\n return (\n <>\n <dt className={styles.term}>\n <label className={styles['key-label']} id={id || kvPairId}>\n {label}\n </label>\n <InfoLinkLabelContext.Provider value={id || kvPairId}>\n {info && <span className={styles.info}>{info}</span>}\n </InfoLinkLabelContext.Provider>\n </dt>\n <dd className={styles.detail}>{value}</dd>\n </>\n );\n};\n\nconst InternalKeyValuePairGroup = ({ label, value }: { label?: React.ReactNode; value: React.ReactNode }) => (\n <>\n {label && <dt className={styles['group-title']}>{label}</dt>}\n <dd className={styles.detail}>{value}</dd>\n </>\n);\n\nconst InternalKeyValuePairs = React.forwardRef(\n (\n { columns, items, className, ...rest }: KeyValuePairsProps & Required<Pick<KeyValuePairsProps, 'columns'>>,\n ref: React.Ref<HTMLDivElement>\n ) => {\n return (\n <LinkDefaultVariantContext.Provider value={{ defaultVariant: 'primary' }}>\n <div {...rest} className={clsx(styles['key-value-pairs'], className)} ref={ref}>\n {/*\n minColumnWidth={150} is set to use FlexibleColumnLayout which has only 1 nested div wrapper for column items,\n otherwise GridColumnLayout will be used, which has 2 nested div, therefore it is not a11y compatible for dl -> dt/dd relationship\n */}\n <ColumnLayout __tagOverride=\"dl\" columns={Math.min(columns, 4)} variant=\"text-grid\" minColumnWidth={150}>\n {items.map((pair, index) => {\n if (pair.type === 'group') {\n return (\n /* InternalKeyValuePairGroup tells react to treat the dt-dd pair as an individual layout item.\n * Otherwise, without this component, they will be rendered as a list, which ruins the html structure.\n * InternalKeyValuePairGroup is not wrapped by div tag, because it ruins a11y compatibility for dl -> dt/dd\n * */\n <InternalKeyValuePairGroup\n key={index}\n label={\n pair.title && (\n <Box variant=\"h3\" padding=\"n\">\n {pair.title}\n </Box>\n )\n }\n value={\n <dl className={styles['group-list']}>\n {pair.items.map((item, itemIndex) => (\n <div key={itemIndex} className={styles['group-list-item']}>\n <InternalKeyValuePair {...item} />\n </div>\n ))}\n </dl>\n }\n />\n );\n }\n\n return <InternalKeyValuePair key={index} {...pair} />;\n })}\n </ColumnLayout>\n </div>\n </LinkDefaultVariantContext.Provider>\n );\n }\n);\n\nexport default InternalKeyValuePairs;\n"]}
1
+ {"version":3,"file":"internal.js","sourceRoot":"","sources":["../../../src/key-value-pairs/internal.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 from 'react';\nimport clsx from 'clsx';\nimport styles from './styles.css.js';\nimport { KeyValuePairsProps } from './interfaces';\nimport { InfoLinkLabelContext } from '../internal/context/info-link-label-context';\nimport ColumnLayout from '../column-layout/internal';\nimport { LinkDefaultVariantContext } from '../internal/context/link-default-variant-context';\nimport Box from '../box/internal';\nimport { useUniqueId } from '../internal/hooks/use-unique-id';\n\nconst InternalKeyValuePair = ({ label, info, value, id }: KeyValuePairsProps.Pair) => {\n const kvPairId = useUniqueId('kv-pair-');\n\n return (\n <>\n <dt className={styles.term}>\n <label className={styles['key-label']} id={id || kvPairId}>\n {label}\n </label>\n <InfoLinkLabelContext.Provider value={id || kvPairId}>\n {info && <span className={styles.info}>{info}</span>}\n </InfoLinkLabelContext.Provider>\n </dt>\n <dd className={styles.detail}>{value}</dd>\n </>\n );\n};\n\nconst InternalKeyValuePairGroup = ({ label, value }: { label?: React.ReactNode; value: React.ReactNode }) => (\n <>\n {label && <dt className={styles['group-title']}>{label}</dt>}\n <dd className={styles.detail}>{value}</dd>\n </>\n);\n\nconst InternalKeyValuePairs = React.forwardRef(\n (\n {\n columns,\n items,\n className,\n ariaLabel,\n ariaLabelledby,\n ...rest\n }: KeyValuePairsProps & Required<Pick<KeyValuePairsProps, 'columns'>>,\n ref: React.Ref<HTMLDivElement>\n ) => {\n return (\n <LinkDefaultVariantContext.Provider value={{ defaultVariant: 'primary' }}>\n <div\n {...rest}\n className={clsx(styles['key-value-pairs'], className)}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledby}\n ref={ref}\n >\n {/*\n minColumnWidth={150} is set to use FlexibleColumnLayout which has only 1 nested div wrapper for column items,\n otherwise GridColumnLayout will be used, which has 2 nested div, therefore it is not a11y compatible for dl -> dt/dd relationship\n */}\n <ColumnLayout __tagOverride=\"dl\" columns={Math.min(columns, 4)} variant=\"text-grid\" minColumnWidth={150}>\n {items.map((pair, index) => {\n if (pair.type === 'group') {\n return (\n /* InternalKeyValuePairGroup tells react to treat the dt-dd pair as an individual layout item.\n * Otherwise, without this component, they will be rendered as a list, which ruins the html structure.\n * InternalKeyValuePairGroup is not wrapped by div tag, because it ruins a11y compatibility for dl -> dt/dd\n * */\n <InternalKeyValuePairGroup\n key={index}\n label={\n pair.title && (\n <Box variant=\"h3\" padding=\"n\">\n {pair.title}\n </Box>\n )\n }\n value={\n <dl className={styles['group-list']}>\n {pair.items.map((item, itemIndex) => (\n <div key={itemIndex} className={styles['group-list-item']}>\n <InternalKeyValuePair {...item} />\n </div>\n ))}\n </dl>\n }\n />\n );\n }\n\n return <InternalKeyValuePair key={index} {...pair} />;\n })}\n </ColumnLayout>\n </div>\n </LinkDefaultVariantContext.Provider>\n );\n }\n);\n\nexport default InternalKeyValuePairs;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"use-navigation.d.ts","sourceRoot":"","sources":["../../../../src/mixed-line-bar-chart/hooks/use-navigation.ts"],"names":[],"mappings":"AAEA,OAAO,KAAyC,MAAM,OAAO,CAAC;AAE9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACxF,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,kDAAkD,CAAC;AAEjG,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE3D,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,cAAc,IAAI,IAAI,CAC7D,mBAAmB,CAAC,CAAC,CAAC,EACtB,mBAAmB,GAAG,QAAQ,GAAG,eAAe,CACjD,GAAG;IACF,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/B,YAAY,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IAE5C,gBAAgB,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACxC,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,kBAAkB,EAAE,OAAO,CAAC;IAE5B,UAAU,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACnC,eAAe,CAAC,MAAM,EAAE,sBAAsB,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;IAC5E,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,cAAc,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;IACnD,UAAU,EAAE,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC;IAChE,sBAAsB,IAAI,IAAI,CAAC;IAC/B,eAAe,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAE3C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,cAAc,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,wBAAgB,aAAa,CAAC,CAAC,SAAS,cAAc,EAAE,EACtD,MAAM,EACN,aAAa,EACb,YAAY,EACZ,SAAS,EACT,MAAM,EACN,MAAM,EACN,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,EACjB,kBAAkB,EAClB,UAAU,EACV,eAAe,EACf,cAAc,EACd,cAAc,EACd,UAAU,EACV,eAAe,EACf,KAAK,EACL,cAAc,GACf,EAAE,kBAAkB,CAAC,CAAC,CAAC;;;uBAmNZ,mBAAmB;;EA+B9B"}
1
+ {"version":3,"file":"use-navigation.d.ts","sourceRoot":"","sources":["../../../../src/mixed-line-bar-chart/hooks/use-navigation.ts"],"names":[],"mappings":"AAEA,OAAO,KAAyC,MAAM,OAAO,CAAC;AAE9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACxF,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,kDAAkD,CAAC;AAEjG,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAG3D,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,cAAc,IAAI,IAAI,CAC7D,mBAAmB,CAAC,CAAC,CAAC,EACtB,mBAAmB,GAAG,QAAQ,GAAG,eAAe,CACjD,GAAG;IACF,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/B,YAAY,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IAE5C,gBAAgB,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACxC,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,kBAAkB,EAAE,OAAO,CAAC;IAE5B,UAAU,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACnC,eAAe,CAAC,MAAM,EAAE,sBAAsB,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;IAC5E,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,cAAc,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;IACnD,UAAU,EAAE,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC;IAChE,sBAAsB,IAAI,IAAI,CAAC;IAC/B,eAAe,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAE3C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,cAAc,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,wBAAgB,aAAa,CAAC,CAAC,SAAS,cAAc,EAAE,EACtD,MAAM,EACN,aAAa,EACb,YAAY,EACZ,SAAS,EACT,MAAM,EACN,MAAM,EACN,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,EACjB,kBAAkB,EAClB,UAAU,EACV,eAAe,EACf,cAAc,EACd,cAAc,EACd,UAAU,EACV,eAAe,EACf,KAAK,EACL,cAAc,GACf,EAAE,kBAAkB,CAAC,CAAC,CAAC;;;uBAmNZ,mBAAmB;;EA+B9B"}
@@ -3,6 +3,7 @@
3
3
  import { useCallback, useMemo, useState } from 'react';
4
4
  import { KeyCode } from '../../internal/keycode';
5
5
  import { findNavigableSeries, isXThreshold, isYThreshold, nextValidDomainIndex } from '../utils';
6
+ import { circleIndex } from '../../internal/utils/circle-index';
6
7
  export function useNavigation({ series, visibleSeries, scaledSeries, barGroups, xScale, yScale, highlightedPoint, highlightedGroupIndex, highlightedSeries, isHandlersDisabled, pinPopover, highlightSeries, highlightGroup, highlightPoint, highlightX, verticalMarkerX, isRtl, horizontalBars, }) {
7
8
  const [targetX, setTargetX] = useState(null);
8
9
  const [xIndex, setXIndex] = useState(0);
@@ -214,14 +215,4 @@ export function useNavigation({ series, visibleSeries, scaledSeries, barGroups,
214
215
  }, [isHandlersDisabled, moveBetweenSeries, moveWithinXAxis, pinPopover]);
215
216
  return { isGroupNavigation, onFocus, onKeyDown, xIndex };
216
217
  }
217
- // Returns given index if it is in range or the opposite range boundary otherwise.
218
- function circleIndex(index, [from, to]) {
219
- if (index < from) {
220
- return to;
221
- }
222
- if (index > to) {
223
- return from;
224
- }
225
- return index;
226
- }
227
218
  //# sourceMappingURL=use-navigation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-navigation.js","sourceRoot":"","sources":["../../../../src/mixed-line-bar-chart/hooks/use-navigation.ts"],"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, { useCallback, useMemo, useState } from 'react';\nimport { KeyCode } from '../../internal/keycode';\nimport { ChartContainerProps } from '../chart-container';\nimport { ChartDataTypes, MixedLineBarChartProps, VerticalMarkerX } from '../interfaces';\nimport { ChartScale, NumericChartScale } from '../../internal/components/cartesian-chart/scales';\nimport { findNavigableSeries, isXThreshold, isYThreshold, nextValidDomainIndex } from '../utils';\nimport { ScaledPoint } from '../make-scaled-series';\nimport { ScaledBarGroup } from '../make-scaled-bar-groups';\n\nexport type UseNavigationProps<T extends ChartDataTypes> = Pick<\n ChartContainerProps<T>,\n 'highlightedSeries' | 'series' | 'visibleSeries'\n> & {\n xScale: ChartScale;\n yScale: NumericChartScale;\n barGroups: ScaledBarGroup<T>[];\n scaledSeries: ReadonlyArray<ScaledPoint<T>>;\n\n highlightedPoint: ScaledPoint<T> | null;\n highlightedGroupIndex: number | null;\n isHandlersDisabled: boolean;\n\n pinPopover(pinned?: boolean): void;\n highlightSeries(series: MixedLineBarChartProps.ChartSeries<T> | null): void;\n highlightGroup(groupIndex: number): void;\n highlightPoint(point: ScaledPoint<T> | null): void;\n highlightX: (verticalMarker: VerticalMarkerX<T> | null) => void;\n clearHighlightedSeries(): void;\n verticalMarkerX: VerticalMarkerX<T> | null;\n\n isRtl?: boolean;\n horizontalBars: boolean;\n};\n\nexport function useNavigation<T extends ChartDataTypes>({\n series,\n visibleSeries,\n scaledSeries,\n barGroups,\n xScale,\n yScale,\n highlightedPoint,\n highlightedGroupIndex,\n highlightedSeries,\n isHandlersDisabled,\n pinPopover,\n highlightSeries,\n highlightGroup,\n highlightPoint,\n highlightX,\n verticalMarkerX,\n isRtl,\n horizontalBars,\n}: UseNavigationProps<T>) {\n const [targetX, setTargetX] = useState<T | null>(null);\n const [xIndex, setXIndex] = useState(0);\n\n // There are two different types of navigation:\n // 1) Group navigation for any chart that contains a bar series\n // 2) Line navigation for any chart that only contains lines and thresholds\n const isGroupNavigation = useMemo(() => visibleSeries.some(({ series }) => series.type === 'bar'), [visibleSeries]);\n\n // Make a list of series that can be navigated between. Bar series are treated as one.\n const { navigableSeries } = useMemo(() => findNavigableSeries(visibleSeries), [visibleSeries]);\n const containsMultipleSeries = navigableSeries.length > 1;\n\n const onBarGroupFocus = () => {\n const groupIndex = highlightedGroupIndex ?? 0;\n setTargetX((xScale.domain as T[])[groupIndex]);\n highlightGroup(groupIndex);\n };\n\n const onLineFocus = () => {\n if (verticalMarkerX === null) {\n const index = !isRtl ? 0 : allUniqueX.length - 1;\n if (containsMultipleSeries) {\n moveToLineGroupIndex(index);\n } else {\n moveBetweenSeries(0, allUniqueX[index].datum?.x);\n }\n }\n };\n\n const onFocus = () => {\n if (isGroupNavigation) {\n onBarGroupFocus();\n } else {\n onLineFocus();\n }\n };\n\n // Returns all the unique X coordinates in scaledSeries.\n // Assumes scaledSeries is sorted by `x`.\n const allUniqueX = useMemo(() => {\n const result = [];\n for (let i = 0; i < scaledSeries.length; i += 1) {\n const point = scaledSeries[i];\n if (point !== undefined && (!result.length || result[result.length - 1].scaledX !== point.x)) {\n result.push({ scaledX: point.x, datum: point.datum });\n }\n }\n return result;\n }, [scaledSeries]);\n\n const moveBetweenSeries = useCallback(\n (direction: number, startFrom?: T) => {\n if (isGroupNavigation) {\n return;\n }\n\n const xOffset = xScale.isCategorical() ? Math.max(0, xScale.d3Scale.bandwidth() - 1) / 2 : 0;\n const MAX_SERIES_INDEX = navigableSeries.length - 1;\n\n // Find the index of the currently highlighted series (if any)\n let previousSeriesIndex = -1;\n if (highlightedSeries) {\n previousSeriesIndex = navigableSeries.indexOf(highlightedSeries);\n }\n\n // Move forwards or backwards to the new series\n // If index === -1, show all data points from all series at the given X instead of one single series\n const firstPossibleIndex = containsMultipleSeries ? -1 : 0;\n let nextSeriesIndex = 0;\n if (previousSeriesIndex !== null) {\n nextSeriesIndex = previousSeriesIndex + direction;\n if (nextSeriesIndex > MAX_SERIES_INDEX) {\n nextSeriesIndex = firstPossibleIndex;\n } else if (nextSeriesIndex < firstPossibleIndex) {\n nextSeriesIndex = MAX_SERIES_INDEX;\n }\n }\n if (nextSeriesIndex === -1) {\n highlightSeries(null);\n highlightPoint(null);\n return;\n }\n const nextSeries = navigableSeries[nextSeriesIndex];\n const nextInternalSeries = series.filter(({ series }) => series === nextSeries)[0];\n\n const actualTargetX = targetX ?? startFrom ?? null;\n\n // 2. Find point in the next series\n let targetXPoint = (xScale.d3Scale(actualTargetX as any) ?? NaN) + xOffset;\n if (!isFinite(targetXPoint)) {\n targetXPoint = 0;\n }\n\n if (nextSeries.type === 'line') {\n const nextScaledSeries = scaledSeries.filter(it => it.series === nextSeries);\n const closestNextSeriesPoint = nextScaledSeries.reduce(\n (prev, curr) => (Math.abs(curr.x - targetXPoint) < Math.abs(prev.x - targetXPoint) ? curr : prev),\n { x: -Infinity, y: -Infinity }\n );\n highlightPoint({ ...closestNextSeriesPoint, color: nextInternalSeries.color, series: nextSeries });\n } else if (isYThreshold(nextSeries)) {\n const scaledTargetIndex = scaledSeries.map(it => it.datum?.x || null).indexOf(actualTargetX);\n highlightPoint({\n x: targetXPoint,\n y: yScale.d3Scale(nextSeries.y) ?? NaN,\n color: nextInternalSeries.color,\n series: nextSeries,\n datum: scaledSeries[scaledTargetIndex]?.datum,\n });\n } else if (isXThreshold(nextSeries)) {\n highlightPoint({\n x: xScale.d3Scale(nextSeries.x as any) ?? NaN,\n y: yScale.d3Scale.range()[0],\n color: nextInternalSeries.color,\n series: nextSeries,\n datum: { x: nextSeries.x, y: NaN },\n });\n }\n },\n [\n isGroupNavigation,\n xScale,\n navigableSeries,\n highlightedSeries,\n containsMultipleSeries,\n highlightSeries,\n highlightPoint,\n series,\n targetX,\n scaledSeries,\n yScale,\n ]\n );\n\n const moveWithinSeries = useCallback(\n (direction: number) => {\n const series = highlightedSeries || visibleSeries[0].series;\n\n if (series.type === 'line' || isYThreshold(series)) {\n const targetScaledSeries = scaledSeries.filter(it => it.series === series);\n const previousPoint = highlightedPoint || targetScaledSeries[0];\n const indexOfPreviousPoint = targetScaledSeries.map(it => it.x).indexOf(previousPoint.x);\n const nextPointIndex = circleIndex(indexOfPreviousPoint + direction, [0, targetScaledSeries.length - 1]);\n const nextPoint = targetScaledSeries[nextPointIndex];\n\n setTargetX(nextPoint.datum?.x || null);\n setXIndex(nextPointIndex);\n highlightPoint(nextPoint);\n } else if (series.type === 'bar') {\n const xDomain = xScale.domain as T[];\n const MAX_GROUP_INDEX = xDomain.length - 1;\n\n let nextGroupIndex = 0;\n if (highlightedGroupIndex !== null) {\n if (isRtl && !horizontalBars) {\n direction = -direction;\n }\n\n // find next group\n nextGroupIndex = highlightedGroupIndex + direction;\n if (nextGroupIndex > MAX_GROUP_INDEX) {\n nextGroupIndex = 0;\n } else if (nextGroupIndex < 0) {\n nextGroupIndex = MAX_GROUP_INDEX;\n }\n }\n\n const nextDomainIndex = nextValidDomainIndex(nextGroupIndex, barGroups, direction);\n setTargetX(xDomain[nextDomainIndex]);\n highlightGroup(nextDomainIndex);\n }\n },\n [\n highlightedSeries,\n visibleSeries,\n scaledSeries,\n highlightedPoint,\n highlightPoint,\n xScale.domain,\n highlightedGroupIndex,\n barGroups,\n highlightGroup,\n isRtl,\n horizontalBars,\n ]\n );\n\n const moveToLineGroupIndex = useCallback(\n (index: number) => {\n const point = allUniqueX[index];\n setXIndex(index);\n setTargetX(point.datum?.x || null);\n highlightX({ scaledX: point?.scaledX ?? null, label: point.datum?.x ?? null });\n },\n [allUniqueX, highlightX]\n );\n\n const moveWithinXAxis = useCallback(\n (direction: number) => {\n if (highlightedSeries || isGroupNavigation) {\n moveWithinSeries(direction);\n } else {\n const nextPointGroupIndex = circleIndex(xIndex + direction, [0, allUniqueX.length - 1]);\n moveToLineGroupIndex(nextPointGroupIndex);\n }\n },\n [highlightedSeries, isGroupNavigation, moveWithinSeries, xIndex, allUniqueX.length, moveToLineGroupIndex]\n );\n\n const onKeyDown = useCallback(\n (event: React.KeyboardEvent) => {\n const keyCode = event.keyCode;\n if (\n keyCode !== KeyCode.up &&\n keyCode !== KeyCode.right &&\n keyCode !== KeyCode.down &&\n keyCode !== KeyCode.left &&\n keyCode !== KeyCode.space &&\n keyCode !== KeyCode.enter\n ) {\n return;\n }\n\n event.preventDefault();\n\n if (isHandlersDisabled) {\n return;\n }\n\n if (keyCode === KeyCode.down || keyCode === KeyCode.up) {\n moveBetweenSeries(keyCode === KeyCode.down ? 1 : -1);\n } else if (keyCode === KeyCode.left || keyCode === KeyCode.right) {\n moveWithinXAxis(keyCode === KeyCode.right ? 1 : -1);\n } else if (keyCode === KeyCode.enter || keyCode === KeyCode.space) {\n pinPopover();\n }\n },\n [isHandlersDisabled, moveBetweenSeries, moveWithinXAxis, pinPopover]\n );\n\n return { isGroupNavigation, onFocus, onKeyDown, xIndex };\n}\n\n// Returns given index if it is in range or the opposite range boundary otherwise.\nfunction circleIndex(index: number, [from, to]: [number, number]): number {\n if (index < from) {\n return to;\n }\n if (index > to) {\n return from;\n }\n return index;\n}\n"]}
1
+ {"version":3,"file":"use-navigation.js","sourceRoot":"","sources":["../../../../src/mixed-line-bar-chart/hooks/use-navigation.ts"],"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, { useCallback, useMemo, useState } from 'react';\nimport { KeyCode } from '../../internal/keycode';\nimport { ChartContainerProps } from '../chart-container';\nimport { ChartDataTypes, MixedLineBarChartProps, VerticalMarkerX } from '../interfaces';\nimport { ChartScale, NumericChartScale } from '../../internal/components/cartesian-chart/scales';\nimport { findNavigableSeries, isXThreshold, isYThreshold, nextValidDomainIndex } from '../utils';\nimport { ScaledPoint } from '../make-scaled-series';\nimport { ScaledBarGroup } from '../make-scaled-bar-groups';\nimport { circleIndex } from '../../internal/utils/circle-index';\n\nexport type UseNavigationProps<T extends ChartDataTypes> = Pick<\n ChartContainerProps<T>,\n 'highlightedSeries' | 'series' | 'visibleSeries'\n> & {\n xScale: ChartScale;\n yScale: NumericChartScale;\n barGroups: ScaledBarGroup<T>[];\n scaledSeries: ReadonlyArray<ScaledPoint<T>>;\n\n highlightedPoint: ScaledPoint<T> | null;\n highlightedGroupIndex: number | null;\n isHandlersDisabled: boolean;\n\n pinPopover(pinned?: boolean): void;\n highlightSeries(series: MixedLineBarChartProps.ChartSeries<T> | null): void;\n highlightGroup(groupIndex: number): void;\n highlightPoint(point: ScaledPoint<T> | null): void;\n highlightX: (verticalMarker: VerticalMarkerX<T> | null) => void;\n clearHighlightedSeries(): void;\n verticalMarkerX: VerticalMarkerX<T> | null;\n\n isRtl?: boolean;\n horizontalBars: boolean;\n};\n\nexport function useNavigation<T extends ChartDataTypes>({\n series,\n visibleSeries,\n scaledSeries,\n barGroups,\n xScale,\n yScale,\n highlightedPoint,\n highlightedGroupIndex,\n highlightedSeries,\n isHandlersDisabled,\n pinPopover,\n highlightSeries,\n highlightGroup,\n highlightPoint,\n highlightX,\n verticalMarkerX,\n isRtl,\n horizontalBars,\n}: UseNavigationProps<T>) {\n const [targetX, setTargetX] = useState<T | null>(null);\n const [xIndex, setXIndex] = useState(0);\n\n // There are two different types of navigation:\n // 1) Group navigation for any chart that contains a bar series\n // 2) Line navigation for any chart that only contains lines and thresholds\n const isGroupNavigation = useMemo(() => visibleSeries.some(({ series }) => series.type === 'bar'), [visibleSeries]);\n\n // Make a list of series that can be navigated between. Bar series are treated as one.\n const { navigableSeries } = useMemo(() => findNavigableSeries(visibleSeries), [visibleSeries]);\n const containsMultipleSeries = navigableSeries.length > 1;\n\n const onBarGroupFocus = () => {\n const groupIndex = highlightedGroupIndex ?? 0;\n setTargetX((xScale.domain as T[])[groupIndex]);\n highlightGroup(groupIndex);\n };\n\n const onLineFocus = () => {\n if (verticalMarkerX === null) {\n const index = !isRtl ? 0 : allUniqueX.length - 1;\n if (containsMultipleSeries) {\n moveToLineGroupIndex(index);\n } else {\n moveBetweenSeries(0, allUniqueX[index].datum?.x);\n }\n }\n };\n\n const onFocus = () => {\n if (isGroupNavigation) {\n onBarGroupFocus();\n } else {\n onLineFocus();\n }\n };\n\n // Returns all the unique X coordinates in scaledSeries.\n // Assumes scaledSeries is sorted by `x`.\n const allUniqueX = useMemo(() => {\n const result = [];\n for (let i = 0; i < scaledSeries.length; i += 1) {\n const point = scaledSeries[i];\n if (point !== undefined && (!result.length || result[result.length - 1].scaledX !== point.x)) {\n result.push({ scaledX: point.x, datum: point.datum });\n }\n }\n return result;\n }, [scaledSeries]);\n\n const moveBetweenSeries = useCallback(\n (direction: number, startFrom?: T) => {\n if (isGroupNavigation) {\n return;\n }\n\n const xOffset = xScale.isCategorical() ? Math.max(0, xScale.d3Scale.bandwidth() - 1) / 2 : 0;\n const MAX_SERIES_INDEX = navigableSeries.length - 1;\n\n // Find the index of the currently highlighted series (if any)\n let previousSeriesIndex = -1;\n if (highlightedSeries) {\n previousSeriesIndex = navigableSeries.indexOf(highlightedSeries);\n }\n\n // Move forwards or backwards to the new series\n // If index === -1, show all data points from all series at the given X instead of one single series\n const firstPossibleIndex = containsMultipleSeries ? -1 : 0;\n let nextSeriesIndex = 0;\n if (previousSeriesIndex !== null) {\n nextSeriesIndex = previousSeriesIndex + direction;\n if (nextSeriesIndex > MAX_SERIES_INDEX) {\n nextSeriesIndex = firstPossibleIndex;\n } else if (nextSeriesIndex < firstPossibleIndex) {\n nextSeriesIndex = MAX_SERIES_INDEX;\n }\n }\n if (nextSeriesIndex === -1) {\n highlightSeries(null);\n highlightPoint(null);\n return;\n }\n const nextSeries = navigableSeries[nextSeriesIndex];\n const nextInternalSeries = series.filter(({ series }) => series === nextSeries)[0];\n\n const actualTargetX = targetX ?? startFrom ?? null;\n\n // 2. Find point in the next series\n let targetXPoint = (xScale.d3Scale(actualTargetX as any) ?? NaN) + xOffset;\n if (!isFinite(targetXPoint)) {\n targetXPoint = 0;\n }\n\n if (nextSeries.type === 'line') {\n const nextScaledSeries = scaledSeries.filter(it => it.series === nextSeries);\n const closestNextSeriesPoint = nextScaledSeries.reduce(\n (prev, curr) => (Math.abs(curr.x - targetXPoint) < Math.abs(prev.x - targetXPoint) ? curr : prev),\n { x: -Infinity, y: -Infinity }\n );\n highlightPoint({ ...closestNextSeriesPoint, color: nextInternalSeries.color, series: nextSeries });\n } else if (isYThreshold(nextSeries)) {\n const scaledTargetIndex = scaledSeries.map(it => it.datum?.x || null).indexOf(actualTargetX);\n highlightPoint({\n x: targetXPoint,\n y: yScale.d3Scale(nextSeries.y) ?? NaN,\n color: nextInternalSeries.color,\n series: nextSeries,\n datum: scaledSeries[scaledTargetIndex]?.datum,\n });\n } else if (isXThreshold(nextSeries)) {\n highlightPoint({\n x: xScale.d3Scale(nextSeries.x as any) ?? NaN,\n y: yScale.d3Scale.range()[0],\n color: nextInternalSeries.color,\n series: nextSeries,\n datum: { x: nextSeries.x, y: NaN },\n });\n }\n },\n [\n isGroupNavigation,\n xScale,\n navigableSeries,\n highlightedSeries,\n containsMultipleSeries,\n highlightSeries,\n highlightPoint,\n series,\n targetX,\n scaledSeries,\n yScale,\n ]\n );\n\n const moveWithinSeries = useCallback(\n (direction: number) => {\n const series = highlightedSeries || visibleSeries[0].series;\n\n if (series.type === 'line' || isYThreshold(series)) {\n const targetScaledSeries = scaledSeries.filter(it => it.series === series);\n const previousPoint = highlightedPoint || targetScaledSeries[0];\n const indexOfPreviousPoint = targetScaledSeries.map(it => it.x).indexOf(previousPoint.x);\n const nextPointIndex = circleIndex(indexOfPreviousPoint + direction, [0, targetScaledSeries.length - 1]);\n const nextPoint = targetScaledSeries[nextPointIndex];\n\n setTargetX(nextPoint.datum?.x || null);\n setXIndex(nextPointIndex);\n highlightPoint(nextPoint);\n } else if (series.type === 'bar') {\n const xDomain = xScale.domain as T[];\n const MAX_GROUP_INDEX = xDomain.length - 1;\n\n let nextGroupIndex = 0;\n if (highlightedGroupIndex !== null) {\n if (isRtl && !horizontalBars) {\n direction = -direction;\n }\n\n // find next group\n nextGroupIndex = highlightedGroupIndex + direction;\n if (nextGroupIndex > MAX_GROUP_INDEX) {\n nextGroupIndex = 0;\n } else if (nextGroupIndex < 0) {\n nextGroupIndex = MAX_GROUP_INDEX;\n }\n }\n\n const nextDomainIndex = nextValidDomainIndex(nextGroupIndex, barGroups, direction);\n setTargetX(xDomain[nextDomainIndex]);\n highlightGroup(nextDomainIndex);\n }\n },\n [\n highlightedSeries,\n visibleSeries,\n scaledSeries,\n highlightedPoint,\n highlightPoint,\n xScale.domain,\n highlightedGroupIndex,\n barGroups,\n highlightGroup,\n isRtl,\n horizontalBars,\n ]\n );\n\n const moveToLineGroupIndex = useCallback(\n (index: number) => {\n const point = allUniqueX[index];\n setXIndex(index);\n setTargetX(point.datum?.x || null);\n highlightX({ scaledX: point?.scaledX ?? null, label: point.datum?.x ?? null });\n },\n [allUniqueX, highlightX]\n );\n\n const moveWithinXAxis = useCallback(\n (direction: number) => {\n if (highlightedSeries || isGroupNavigation) {\n moveWithinSeries(direction);\n } else {\n const nextPointGroupIndex = circleIndex(xIndex + direction, [0, allUniqueX.length - 1]);\n moveToLineGroupIndex(nextPointGroupIndex);\n }\n },\n [highlightedSeries, isGroupNavigation, moveWithinSeries, xIndex, allUniqueX.length, moveToLineGroupIndex]\n );\n\n const onKeyDown = useCallback(\n (event: React.KeyboardEvent) => {\n const keyCode = event.keyCode;\n if (\n keyCode !== KeyCode.up &&\n keyCode !== KeyCode.right &&\n keyCode !== KeyCode.down &&\n keyCode !== KeyCode.left &&\n keyCode !== KeyCode.space &&\n keyCode !== KeyCode.enter\n ) {\n return;\n }\n\n event.preventDefault();\n\n if (isHandlersDisabled) {\n return;\n }\n\n if (keyCode === KeyCode.down || keyCode === KeyCode.up) {\n moveBetweenSeries(keyCode === KeyCode.down ? 1 : -1);\n } else if (keyCode === KeyCode.left || keyCode === KeyCode.right) {\n moveWithinXAxis(keyCode === KeyCode.right ? 1 : -1);\n } else if (keyCode === KeyCode.enter || keyCode === KeyCode.space) {\n pinPopover();\n }\n },\n [isHandlersDisabled, moveBetweenSeries, moveWithinXAxis, pinPopover]\n );\n\n return { isGroupNavigation, onFocus, onKeyDown, xIndex };\n}\n"]}
package/package.json CHANGED
@@ -59,6 +59,7 @@
59
59
  "./pie-chart": "./pie-chart/index.js",
60
60
  "./popover": "./popover/index.js",
61
61
  "./progress-bar": "./progress-bar/index.js",
62
+ "./prompt-input": "./prompt-input/index.js",
62
63
  "./property-filter": "./property-filter/index.js",
63
64
  "./radio-group": "./radio-group/index.js",
64
65
  "./s3-resource-selector": "./s3-resource-selector/index.js",
@@ -87,6 +88,8 @@
87
88
  "./i18n": "./i18n/index.js",
88
89
  "./i18n/messages/all.all": "./i18n/messages/all.all.js",
89
90
  "./i18n/messages/all.all.json": "./i18n/messages/all.all.json",
91
+ "./i18n/messages/all.ar": "./i18n/messages/all.ar.js",
92
+ "./i18n/messages/all.ar.json": "./i18n/messages/all.ar.json",
90
93
  "./i18n/messages/all.de": "./i18n/messages/all.de.js",
91
94
  "./i18n/messages/all.de.json": "./i18n/messages/all.de.json",
92
95
  "./i18n/messages/all.en-GB": "./i18n/messages/all.en-GB.js",
@@ -121,7 +124,7 @@
121
124
  "./internal/base-component/index.js",
122
125
  "./internal/base-component/styles.css.js"
123
126
  ],
124
- "version": "3.0.684",
127
+ "version": "3.0.686",
125
128
  "repository": {
126
129
  "type": "git",
127
130
  "url": "https://github.com/cloudscape-design/components.git"
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ import { PromptInputProps } from './interfaces';
3
+ export { PromptInputProps };
4
+ declare const PromptInput: React.ForwardRefExoticComponent<PromptInputProps & React.RefAttributes<PromptInputProps.Ref>>;
5
+ export default PromptInput;
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/prompt-input/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAKhD,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAE5B,QAAA,MAAM,WAAW,+FA8ChB,CAAC;AAEF,eAAe,WAAW,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { __rest } from "tslib";
2
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
+ // SPDX-License-Identifier: Apache-2.0
4
+ import React from 'react';
5
+ import { applyDisplayName } from '../internal/utils/apply-display-name';
6
+ import InternalPromptInput from './internal';
7
+ import useBaseComponent from '../internal/hooks/use-base-component';
8
+ const PromptInput = React.forwardRef((_a, ref) => {
9
+ var { autoComplete, autoFocus, disableBrowserAutocorrect, disableActionButton, spellcheck, readOnly, actionButtonIconName, minRows, maxRows } = _a, props = __rest(_a, ["autoComplete", "autoFocus", "disableBrowserAutocorrect", "disableActionButton", "spellcheck", "readOnly", "actionButtonIconName", "minRows", "maxRows"]);
10
+ const baseComponentProps = useBaseComponent('PromptInput', {
11
+ props: {
12
+ readOnly,
13
+ autoComplete,
14
+ autoFocus,
15
+ disableBrowserAutocorrect,
16
+ disableActionButton,
17
+ spellcheck,
18
+ actionButtonIconName,
19
+ minRows,
20
+ maxRows,
21
+ },
22
+ });
23
+ return (React.createElement(InternalPromptInput, Object.assign({ readOnly: readOnly, autoComplete: autoComplete, autoFocus: autoFocus, disableBrowserAutocorrect: disableBrowserAutocorrect, disableActionButton: disableActionButton, spellcheck: spellcheck, actionButtonIconName: actionButtonIconName, minRows: minRows, maxRows: maxRows }, props, baseComponentProps, { ref: ref })));
24
+ });
25
+ applyDisplayName(PromptInput, 'PromptInput');
26
+ export default PromptInput;
27
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/prompt-input/index.tsx"],"names":[],"mappings":";AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AACxE,OAAO,mBAAmB,MAAM,YAAY,CAAC;AAC7C,OAAO,gBAAgB,MAAM,sCAAsC,CAAC;AAIpE,MAAM,WAAW,GAAG,KAAK,CAAC,UAAU,CAClC,CACE,EAWmB,EACnB,GAAoC,EACpC,EAAE;QAbF,EACE,YAAY,EACZ,SAAS,EACT,yBAAyB,EACzB,mBAAmB,EACnB,UAAU,EACV,QAAQ,EACR,oBAAoB,EACpB,OAAO,EACP,OAAO,OAEU,EADd,KAAK,cAVV,yJAWC,CADS;IAIV,MAAM,kBAAkB,GAAG,gBAAgB,CAAC,aAAa,EAAE;QACzD,KAAK,EAAE;YACL,QAAQ;YACR,YAAY;YACZ,SAAS;YACT,yBAAyB;YACzB,mBAAmB;YACnB,UAAU;YACV,oBAAoB;YACpB,OAAO;YACP,OAAO;SACR;KACF,CAAC,CAAC;IACH,OAAO,CACL,oBAAC,mBAAmB,kBAClB,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,SAAS,EACpB,yBAAyB,EAAE,yBAAyB,EACpD,mBAAmB,EAAE,mBAAmB,EACxC,UAAU,EAAE,UAAU,EACtB,oBAAoB,EAAE,oBAAoB,EAC1C,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,IACZ,KAAK,EACL,kBAAkB,IACtB,GAAG,EAAE,GAAG,IACR,CACH,CAAC;AACJ,CAAC,CACF,CAAC;AACF,gBAAgB,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;AAC7C,eAAe,WAAW,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport { PromptInputProps } from './interfaces';\nimport { applyDisplayName } from '../internal/utils/apply-display-name';\nimport InternalPromptInput from './internal';\nimport useBaseComponent from '../internal/hooks/use-base-component';\n\nexport { PromptInputProps };\n\nconst PromptInput = React.forwardRef(\n (\n {\n autoComplete,\n autoFocus,\n disableBrowserAutocorrect,\n disableActionButton,\n spellcheck,\n readOnly,\n actionButtonIconName,\n minRows,\n maxRows,\n ...props\n }: PromptInputProps,\n ref: React.Ref<PromptInputProps.Ref>\n ) => {\n const baseComponentProps = useBaseComponent('PromptInput', {\n props: {\n readOnly,\n autoComplete,\n autoFocus,\n disableBrowserAutocorrect,\n disableActionButton,\n spellcheck,\n actionButtonIconName,\n minRows,\n maxRows,\n },\n });\n return (\n <InternalPromptInput\n readOnly={readOnly}\n autoComplete={autoComplete}\n autoFocus={autoFocus}\n disableBrowserAutocorrect={disableBrowserAutocorrect}\n disableActionButton={disableActionButton}\n spellcheck={spellcheck}\n actionButtonIconName={actionButtonIconName}\n minRows={minRows}\n maxRows={maxRows}\n {...props}\n {...baseComponentProps}\n ref={ref}\n />\n );\n }\n);\napplyDisplayName(PromptInput, 'PromptInput');\nexport default PromptInput;\n"]}
@@ -0,0 +1,82 @@
1
+ /// <reference types="react" />
2
+ import { BaseComponentProps } from '../internal/base-component';
3
+ import { BaseKeyDetail, NonCancelableEventHandler } from '../internal/events';
4
+ import { BaseInputProps, InputAutoCorrect, InputAutoComplete, InputKeyEvents, InputSpellcheck, BaseChangeDetail } from '../input/interfaces';
5
+ import { FormFieldValidationControlProps } from '../internal/context/form-field-context';
6
+ import { IconProps } from '../icon/interfaces';
7
+ export interface PromptInputProps extends BaseInputProps, InputKeyEvents, InputAutoCorrect, InputAutoComplete, InputSpellcheck, BaseComponentProps, FormFieldValidationControlProps {
8
+ /**
9
+ * Called whenever a user clicks the action button or presses the "Enter" key.
10
+ * The event `detail` contains the current value of the field.
11
+ */
12
+ onAction?: NonCancelableEventHandler<PromptInputProps.ActionDetail>;
13
+ /**
14
+ * Determines what icon to display in the action button.
15
+ */
16
+ actionButtonIconName?: IconProps.Name;
17
+ /**
18
+ * Specifies the URL of a custom icon. Use this property if the icon you want isn't available.
19
+ *
20
+ * If you set both `actionButtonIconUrl` and `actionButtonIconSvg`, `actionButtonIconSvg` will take precedence.
21
+ */
22
+ actionButtonIconUrl?: string;
23
+ /**
24
+ * Specifies the SVG of a custom icon.
25
+ *
26
+ * Use this property if you want your custom icon to inherit colors dictated by variant or hover states.
27
+ * When this property is set, the component will be decorated with `aria-hidden="true"`. Ensure that the `svg` element:
28
+ * - has attribute `focusable="false"`.
29
+ * - has `viewBox="0 0 16 16"`.
30
+ *
31
+ * If you set the `svg` element as the root node of the slot, the component will automatically
32
+ * - set `stroke="currentColor"`, `fill="none"`, and `vertical-align="top"`.
33
+ * - set the stroke width based on the size of the icon.
34
+ * - set the width and height of the SVG element based on the size of the icon.
35
+ *
36
+ * If you don't want these styles to be automatically set, wrap the `svg` element into a `span`.
37
+ * You can still set the stroke to `currentColor` to inherit the color of the surrounding elements.
38
+ *
39
+ * If you set both `actionButtonIconUrl` and `actionButtonIconSvg`, `iconSvg` will take precedence.
40
+ *
41
+ * *Note:* Remember to remove any additional elements (for example: `defs`) and related CSS classes from SVG files exported from design software.
42
+ * In most cases, they aren't needed, as the `svg` element inherits styles from the icon component.
43
+ */
44
+ actionButtonIconSvg?: React.ReactNode;
45
+ /**
46
+ * Specifies alternate text for a custom icon. We recommend that you provide this for accessibility.
47
+ * This property is ignored if you use a predefined icon or if you set your custom icon using the `iconSvg` slot.
48
+ */
49
+ actionButtonIconAlt?: string;
50
+ /**
51
+ * Adds an aria-label to the action button.
52
+ * @i18n
53
+ */
54
+ actionButtonAriaLabel?: string;
55
+ /**
56
+ * Specifies whether to disable the action button.
57
+ */
58
+ disableActionButton?: boolean;
59
+ /**
60
+ * Specifies the minimum number of lines of text to set the height to.
61
+ */
62
+ minRows?: number;
63
+ /**
64
+ * Specifies the maximum number of lines of text the textarea will expand to.
65
+ */
66
+ maxRows?: number;
67
+ }
68
+ export declare namespace PromptInputProps {
69
+ type KeyDetail = BaseKeyDetail;
70
+ type ActionDetail = BaseChangeDetail;
71
+ interface Ref {
72
+ /**
73
+ * Sets input focus on the textarea control.
74
+ */
75
+ focus(): void;
76
+ /**
77
+ * Selects all text in the textarea control.
78
+ */
79
+ select(): void;
80
+ }
81
+ }
82
+ //# sourceMappingURL=interfaces.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../src/prompt-input/interfaces.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC9E,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,gBAAgB,EACjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,+BAA+B,EAAE,MAAM,wCAAwC,CAAC;AACzF,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,MAAM,WAAW,gBACf,SAAQ,cAAc,EACpB,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,kBAAkB,EAClB,+BAA+B;IACjC;;;OAGG;IACH,QAAQ,CAAC,EAAE,yBAAyB,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;IACpE;;OAEG;IACH,oBAAoB,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC;IACtC;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,mBAAmB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACtC;;;OAGG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B;;;OAGG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,yBAAiB,gBAAgB,CAAC;IAChC,KAAY,SAAS,GAAG,aAAa,CAAC;IACtC,KAAY,YAAY,GAAG,gBAAgB,CAAC;IAE5C,UAAiB,GAAG;QAClB;;WAEG;QACH,KAAK,IAAI,IAAI,CAAC;QAEd;;WAEG;QACH,MAAM,IAAI,IAAI,CAAC;KAChB;CACF"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=interfaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../src/prompt-input/interfaces.ts"],"names":[],"mappings":"","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { BaseComponentProps } from '../internal/base-component';\nimport { BaseKeyDetail, NonCancelableEventHandler } from '../internal/events';\nimport {\n BaseInputProps,\n InputAutoCorrect,\n InputAutoComplete,\n InputKeyEvents,\n InputSpellcheck,\n BaseChangeDetail,\n} from '../input/interfaces';\nimport { FormFieldValidationControlProps } from '../internal/context/form-field-context';\nimport { IconProps } from '../icon/interfaces';\n\nexport interface PromptInputProps\n extends BaseInputProps,\n InputKeyEvents,\n InputAutoCorrect,\n InputAutoComplete,\n InputSpellcheck,\n BaseComponentProps,\n FormFieldValidationControlProps {\n /**\n * Called whenever a user clicks the action button or presses the \"Enter\" key.\n * The event `detail` contains the current value of the field.\n */\n onAction?: NonCancelableEventHandler<PromptInputProps.ActionDetail>;\n /**\n * Determines what icon to display in the action button.\n */\n actionButtonIconName?: IconProps.Name;\n /**\n * Specifies the URL of a custom icon. Use this property if the icon you want isn't available.\n *\n * If you set both `actionButtonIconUrl` and `actionButtonIconSvg`, `actionButtonIconSvg` will take precedence.\n */\n actionButtonIconUrl?: string;\n /**\n * Specifies the SVG of a custom icon.\n *\n * Use this property if you want your custom icon to inherit colors dictated by variant or hover states.\n * When this property is set, the component will be decorated with `aria-hidden=\"true\"`. Ensure that the `svg` element:\n * - has attribute `focusable=\"false\"`.\n * - has `viewBox=\"0 0 16 16\"`.\n *\n * If you set the `svg` element as the root node of the slot, the component will automatically\n * - set `stroke=\"currentColor\"`, `fill=\"none\"`, and `vertical-align=\"top\"`.\n * - set the stroke width based on the size of the icon.\n * - set the width and height of the SVG element based on the size of the icon.\n *\n * If you don't want these styles to be automatically set, wrap the `svg` element into a `span`.\n * You can still set the stroke to `currentColor` to inherit the color of the surrounding elements.\n *\n * If you set both `actionButtonIconUrl` and `actionButtonIconSvg`, `iconSvg` will take precedence.\n *\n * *Note:* Remember to remove any additional elements (for example: `defs`) and related CSS classes from SVG files exported from design software.\n * In most cases, they aren't needed, as the `svg` element inherits styles from the icon component.\n */\n actionButtonIconSvg?: React.ReactNode;\n /**\n * Specifies alternate text for a custom icon. We recommend that you provide this for accessibility.\n * This property is ignored if you use a predefined icon or if you set your custom icon using the `iconSvg` slot.\n */\n actionButtonIconAlt?: string;\n /**\n * Adds an aria-label to the action button.\n * @i18n\n */\n actionButtonAriaLabel?: string;\n\n /**\n * Specifies whether to disable the action button.\n */\n disableActionButton?: boolean;\n\n /**\n * Specifies the minimum number of lines of text to set the height to.\n */\n minRows?: number;\n\n /**\n * Specifies the maximum number of lines of text the textarea will expand to.\n */\n maxRows?: number;\n}\n\nexport namespace PromptInputProps {\n export type KeyDetail = BaseKeyDetail;\n export type ActionDetail = BaseChangeDetail;\n\n export interface Ref {\n /**\n * Sets input focus on the textarea control.\n */\n focus(): void;\n\n /**\n * Selects all text in the textarea control.\n */\n select(): void;\n }\n}\n"]}
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ import { PromptInputProps } from './interfaces';
3
+ import { InternalBaseComponentProps } from '../internal/hooks/use-base-component';
4
+ export interface InternalPromptInputProps extends PromptInputProps, InternalBaseComponentProps {
5
+ }
6
+ declare const InternalPromptInput: React.ForwardRefExoticComponent<InternalPromptInputProps & React.RefAttributes<PromptInputProps.Ref>>;
7
+ export default InternalPromptInput;
8
+ //# sourceMappingURL=internal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../../../src/prompt-input/internal.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAmE,MAAM,OAAO,CAAC;AAIxF,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAKhD,OAAO,EAAE,0BAA0B,EAAE,MAAM,sCAAsC,CAAC;AAMlF,MAAM,WAAW,wBAAyB,SAAQ,gBAAgB,EAAE,0BAA0B;CAAG;AAEjG,QAAA,MAAM,mBAAmB,uGAkKxB,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
@@ -0,0 +1,109 @@
1
+ import { __rest } from "tslib";
2
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
+ // SPDX-License-Identifier: Apache-2.0
4
+ import React, { useCallback, useEffect, useImperativeHandle, useRef } from 'react';
5
+ import { getBaseProps } from '../internal/base-component';
6
+ import InternalButton from '../button/internal';
7
+ import { fireKeyboardEvent, fireNonCancelableEvent } from '../internal/events';
8
+ import { useFormFieldContext } from '../internal/context/form-field-context';
9
+ import clsx from 'clsx';
10
+ import styles from './styles.css.js';
11
+ import testutilStyles from './test-classes/styles.css.js';
12
+ import { convertAutoComplete } from '../input/utils';
13
+ import { useDensityMode } from '@cloudscape-design/component-toolkit/internal';
14
+ import * as tokens from '../internal/generated/styles/tokens';
15
+ import { useVisualRefresh } from '../internal/hooks/use-visual-mode';
16
+ const InternalPromptInput = React.forwardRef((_a, ref) => {
17
+ var { value, actionButtonAriaLabel, actionButtonIconName, actionButtonIconUrl, actionButtonIconSvg, actionButtonIconAlt, ariaLabel, autoComplete, autoFocus, disableActionButton, disableBrowserAutocorrect, disabled, maxRows = 3, minRows, name, onAction, onBlur, onChange, onFocus, onKeyDown, onKeyUp, placeholder, readOnly, spellcheck, __internalRootRef = null } = _a, rest = __rest(_a, ["value", "actionButtonAriaLabel", "actionButtonIconName", "actionButtonIconUrl", "actionButtonIconSvg", "actionButtonIconAlt", "ariaLabel", "autoComplete", "autoFocus", "disableActionButton", "disableBrowserAutocorrect", "disabled", "maxRows", "minRows", "name", "onAction", "onBlur", "onChange", "onFocus", "onKeyDown", "onKeyUp", "placeholder", "readOnly", "spellcheck", "__internalRootRef"]);
18
+ const { ariaLabelledby, ariaDescribedby, controlId, invalid, warning } = useFormFieldContext(rest);
19
+ const baseProps = getBaseProps(rest);
20
+ const textareaRef = useRef(null);
21
+ const isRefresh = useVisualRefresh();
22
+ const isCompactMode = useDensityMode(textareaRef) === 'compact';
23
+ const PADDING = isRefresh ? tokens.spaceXxs : tokens.spaceXxxs;
24
+ const LINE_HEIGHT = tokens.lineHeightBodyM;
25
+ useImperativeHandle(ref, () => ({
26
+ focus(...args) {
27
+ var _a;
28
+ (_a = textareaRef.current) === null || _a === void 0 ? void 0 : _a.focus(...args);
29
+ },
30
+ select() {
31
+ var _a;
32
+ (_a = textareaRef.current) === null || _a === void 0 ? void 0 : _a.select();
33
+ },
34
+ }), [textareaRef]);
35
+ const handleKeyDown = (event) => {
36
+ if (onKeyDown) {
37
+ fireKeyboardEvent(onKeyDown, event);
38
+ }
39
+ if (event.key === 'Enter' && !event.shiftKey) {
40
+ if ('form' in event.target && event.target.form !== null && !event.isDefaultPrevented()) {
41
+ event.target.form.requestSubmit();
42
+ }
43
+ event.preventDefault();
44
+ fireNonCancelableEvent(onAction, { value });
45
+ }
46
+ };
47
+ const handleChange = (event) => {
48
+ fireNonCancelableEvent(onChange, { value: event.target.value });
49
+ adjustTextareaHeight();
50
+ };
51
+ const adjustTextareaHeight = useCallback(() => {
52
+ if (textareaRef.current) {
53
+ textareaRef.current.style.height = 'auto';
54
+ const maxRowsHeight = `calc(${maxRows <= 0 ? 3 : maxRows} * (${LINE_HEIGHT} + ${PADDING} / 2) + ${PADDING})`;
55
+ const scrollHeight = `calc(${textareaRef.current.scrollHeight}px + ${PADDING})`;
56
+ textareaRef.current.style.height = `min(${scrollHeight}, ${maxRowsHeight})`;
57
+ }
58
+ }, [maxRows, LINE_HEIGHT, PADDING]);
59
+ useEffect(() => {
60
+ const handleResize = () => {
61
+ adjustTextareaHeight();
62
+ };
63
+ window.addEventListener('resize', handleResize);
64
+ return () => {
65
+ window.removeEventListener('resize', handleResize);
66
+ };
67
+ }, [adjustTextareaHeight]);
68
+ useEffect(() => {
69
+ adjustTextareaHeight();
70
+ }, [value, adjustTextareaHeight, maxRows, isCompactMode]);
71
+ const attributes = {
72
+ 'aria-label': ariaLabel,
73
+ 'aria-labelledby': ariaLabelledby,
74
+ 'aria-describedby': ariaDescribedby,
75
+ 'aria-invalid': invalid ? 'true' : undefined,
76
+ name,
77
+ placeholder,
78
+ autoFocus,
79
+ className: clsx(styles.textarea, testutilStyles.textarea, {
80
+ [styles['textarea-readonly']]: readOnly,
81
+ [styles['textarea-invalid']]: invalid,
82
+ [styles['textarea-warning']]: warning && !invalid,
83
+ [styles['textarea-with-button']]: actionButtonIconName,
84
+ }),
85
+ autoComplete: convertAutoComplete(autoComplete),
86
+ spellCheck: spellcheck,
87
+ disabled,
88
+ readOnly: readOnly ? true : undefined,
89
+ rows: minRows || 1,
90
+ onKeyDown: handleKeyDown,
91
+ onKeyUp: onKeyUp && (event => fireKeyboardEvent(onKeyUp, event)),
92
+ // We set a default value on the component in order to force it into the controlled mode.
93
+ value: value || '',
94
+ onChange: handleChange,
95
+ onBlur: onBlur && (() => fireNonCancelableEvent(onBlur)),
96
+ onFocus: onFocus && (() => fireNonCancelableEvent(onFocus)),
97
+ };
98
+ const hasActionButton = actionButtonIconName || actionButtonIconSvg || actionButtonIconUrl;
99
+ if (disableBrowserAutocorrect) {
100
+ attributes.autoCorrect = 'off';
101
+ attributes.autoCapitalize = 'off';
102
+ }
103
+ return (React.createElement("div", Object.assign({}, baseProps, { className: clsx(styles.root, testutilStyles.root, baseProps.className), ref: __internalRootRef }),
104
+ React.createElement("textarea", Object.assign({ ref: textareaRef, id: controlId }, attributes)),
105
+ hasActionButton && (React.createElement("div", { className: styles.button },
106
+ React.createElement(InternalButton, { className: clsx(styles['action-button'], testutilStyles['action-button']), ariaLabel: actionButtonAriaLabel, disabled: disabled || readOnly || disableActionButton, iconName: actionButtonIconName, iconUrl: actionButtonIconUrl, iconSvg: actionButtonIconSvg, iconAlt: actionButtonIconAlt, onClick: () => fireNonCancelableEvent(onAction, { value }), variant: "icon" })))));
107
+ });
108
+ export default InternalPromptInput;
109
+ //# sourceMappingURL=internal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"internal.js","sourceRoot":"","sources":["../../../src/prompt-input/internal.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, { Ref, useCallback, useEffect, useImperativeHandle, useRef } from 'react';\nimport { getBaseProps } from '../internal/base-component';\nimport InternalButton from '../button/internal';\nimport { fireKeyboardEvent, fireNonCancelableEvent } from '../internal/events';\nimport { PromptInputProps } from './interfaces';\nimport { useFormFieldContext } from '../internal/context/form-field-context';\nimport clsx from 'clsx';\nimport styles from './styles.css.js';\nimport testutilStyles from './test-classes/styles.css.js';\nimport { InternalBaseComponentProps } from '../internal/hooks/use-base-component';\nimport { convertAutoComplete } from '../input/utils';\nimport { useDensityMode } from '@cloudscape-design/component-toolkit/internal';\nimport * as tokens from '../internal/generated/styles/tokens';\nimport { useVisualRefresh } from '../internal/hooks/use-visual-mode';\n\nexport interface InternalPromptInputProps extends PromptInputProps, InternalBaseComponentProps {}\n\nconst InternalPromptInput = React.forwardRef(\n (\n {\n value,\n actionButtonAriaLabel,\n actionButtonIconName,\n actionButtonIconUrl,\n actionButtonIconSvg,\n actionButtonIconAlt,\n ariaLabel,\n autoComplete,\n autoFocus,\n disableActionButton,\n disableBrowserAutocorrect,\n disabled,\n maxRows = 3,\n minRows,\n name,\n onAction,\n onBlur,\n onChange,\n onFocus,\n onKeyDown,\n onKeyUp,\n placeholder,\n readOnly,\n spellcheck,\n __internalRootRef = null,\n ...rest\n }: InternalPromptInputProps,\n ref: Ref<PromptInputProps.Ref>\n ) => {\n const { ariaLabelledby, ariaDescribedby, controlId, invalid, warning } = useFormFieldContext(rest);\n\n const baseProps = getBaseProps(rest);\n\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n\n const isRefresh = useVisualRefresh();\n const isCompactMode = useDensityMode(textareaRef) === 'compact';\n\n const PADDING = isRefresh ? tokens.spaceXxs : tokens.spaceXxxs;\n const LINE_HEIGHT = tokens.lineHeightBodyM;\n\n useImperativeHandle(\n ref,\n () => ({\n focus(...args: Parameters<HTMLElement['focus']>) {\n textareaRef.current?.focus(...args);\n },\n select() {\n textareaRef.current?.select();\n },\n }),\n [textareaRef]\n );\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (onKeyDown) {\n fireKeyboardEvent(onKeyDown, event);\n }\n\n if (event.key === 'Enter' && !event.shiftKey) {\n if ('form' in event.target && event.target.form !== null && !event.isDefaultPrevented()) {\n (event.target.form as HTMLFormElement).requestSubmit();\n }\n\n event.preventDefault();\n fireNonCancelableEvent(onAction, { value });\n }\n };\n\n const handleChange = (event: React.ChangeEvent<HTMLTextAreaElement>) => {\n fireNonCancelableEvent(onChange, { value: event.target.value });\n adjustTextareaHeight();\n };\n\n const adjustTextareaHeight = useCallback(() => {\n if (textareaRef.current) {\n textareaRef.current.style.height = 'auto';\n const maxRowsHeight = `calc(${maxRows <= 0 ? 3 : maxRows} * (${LINE_HEIGHT} + ${PADDING} / 2) + ${PADDING})`;\n const scrollHeight = `calc(${textareaRef.current.scrollHeight}px + ${PADDING})`;\n textareaRef.current.style.height = `min(${scrollHeight}, ${maxRowsHeight})`;\n }\n }, [maxRows, LINE_HEIGHT, PADDING]);\n\n useEffect(() => {\n const handleResize = () => {\n adjustTextareaHeight();\n };\n\n window.addEventListener('resize', handleResize);\n\n return () => {\n window.removeEventListener('resize', handleResize);\n };\n }, [adjustTextareaHeight]);\n\n useEffect(() => {\n adjustTextareaHeight();\n }, [value, adjustTextareaHeight, maxRows, isCompactMode]);\n\n const attributes: React.TextareaHTMLAttributes<HTMLTextAreaElement> = {\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledby,\n 'aria-describedby': ariaDescribedby,\n 'aria-invalid': invalid ? 'true' : undefined,\n name,\n placeholder,\n autoFocus,\n className: clsx(styles.textarea, testutilStyles.textarea, {\n [styles['textarea-readonly']]: readOnly,\n [styles['textarea-invalid']]: invalid,\n [styles['textarea-warning']]: warning && !invalid,\n [styles['textarea-with-button']]: actionButtonIconName,\n }),\n autoComplete: convertAutoComplete(autoComplete),\n spellCheck: spellcheck,\n disabled,\n readOnly: readOnly ? true : undefined,\n rows: minRows || 1,\n onKeyDown: handleKeyDown,\n onKeyUp: onKeyUp && (event => fireKeyboardEvent(onKeyUp, event)),\n // We set a default value on the component in order to force it into the controlled mode.\n value: value || '',\n onChange: handleChange,\n onBlur: onBlur && (() => fireNonCancelableEvent(onBlur)),\n onFocus: onFocus && (() => fireNonCancelableEvent(onFocus)),\n };\n\n const hasActionButton = actionButtonIconName || actionButtonIconSvg || actionButtonIconUrl;\n\n if (disableBrowserAutocorrect) {\n attributes.autoCorrect = 'off';\n attributes.autoCapitalize = 'off';\n }\n\n return (\n <div\n {...baseProps}\n className={clsx(styles.root, testutilStyles.root, baseProps.className)}\n ref={__internalRootRef}\n >\n <textarea ref={textareaRef} id={controlId} {...attributes} />\n {hasActionButton && (\n <div className={styles.button}>\n <InternalButton\n className={clsx(styles['action-button'], testutilStyles['action-button'])}\n ariaLabel={actionButtonAriaLabel}\n disabled={disabled || readOnly || disableActionButton}\n iconName={actionButtonIconName}\n iconUrl={actionButtonIconUrl}\n iconSvg={actionButtonIconSvg}\n iconAlt={actionButtonIconAlt}\n onClick={() => fireNonCancelableEvent(onAction, { value })}\n variant=\"icon\"\n />\n </div>\n )}\n </div>\n );\n }\n);\n\nexport default InternalPromptInput;\n"]}
@@ -0,0 +1,13 @@
1
+
2
+ import './styles.scoped.css';
3
+ export default {
4
+ "root": "awsui_root_55fkh_v0e3_98",
5
+ "button": "awsui_button_55fkh_v0e3_101",
6
+ "action-button": "awsui_action-button_55fkh_v0e3_106",
7
+ "textarea": "awsui_textarea_55fkh_v0e3_128",
8
+ "textarea-readonly": "awsui_textarea-readonly_55fkh_v0e3_181",
9
+ "textarea-invalid": "awsui_textarea-invalid_55fkh_v0e3_223",
10
+ "textarea-warning": "awsui_textarea-warning_55fkh_v0e3_234",
11
+ "textarea-with-button": "awsui_textarea-with-button_55fkh_v0e3_245"
12
+ };
13
+