@cloudscape-design/components 3.0.1269 → 3.0.1271

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 (203) hide show
  1. package/app-layout/visual-refresh-toolbar/state/use-feature-notifications.d.ts.map +1 -1
  2. package/app-layout/visual-refresh-toolbar/state/use-feature-notifications.js +13 -0
  3. package/app-layout/visual-refresh-toolbar/state/use-feature-notifications.js.map +1 -1
  4. package/app-layout/visual-refresh-toolbar/toolbar/index.js +1 -1
  5. package/app-layout/visual-refresh-toolbar/toolbar/index.js.map +1 -1
  6. package/app-layout/visual-refresh-toolbar/toolbar/trigger-button/index.d.ts +1 -1
  7. package/app-layout/visual-refresh-toolbar/toolbar/trigger-button/index.d.ts.map +1 -1
  8. package/app-layout/visual-refresh-toolbar/toolbar/trigger-button/index.js +1 -2
  9. package/app-layout/visual-refresh-toolbar/toolbar/trigger-button/index.js.map +1 -1
  10. package/app-layout/visual-refresh-toolbar/toolbar/trigger-button/styles.css.js +6 -7
  11. package/app-layout/visual-refresh-toolbar/toolbar/trigger-button/styles.scoped.css +20 -26
  12. package/app-layout/visual-refresh-toolbar/toolbar/trigger-button/styles.selectors.js +6 -7
  13. package/button/styles.css.js +22 -22
  14. package/button/styles.scoped.css +78 -78
  15. package/button/styles.selectors.js +22 -22
  16. package/date-input/internal.d.ts.map +1 -1
  17. package/date-input/internal.js +7 -5
  18. package/date-input/internal.js.map +1 -1
  19. package/help-panel/styles.css.js +6 -6
  20. package/help-panel/styles.scoped.css +70 -70
  21. package/help-panel/styles.selectors.js +6 -6
  22. package/i18n/messages/all.all.js +1 -1
  23. package/i18n/messages/all.all.json +1 -1
  24. package/i18n/messages/all.ar.js +1 -1
  25. package/i18n/messages/all.ar.json +1 -1
  26. package/i18n/messages/all.de.js +1 -1
  27. package/i18n/messages/all.de.json +1 -1
  28. package/i18n/messages/all.en-GB.js +1 -1
  29. package/i18n/messages/all.en-GB.json +1 -1
  30. package/i18n/messages/all.en.js +1 -1
  31. package/i18n/messages/all.en.json +1 -1
  32. package/i18n/messages/all.es.js +1 -1
  33. package/i18n/messages/all.es.json +1 -1
  34. package/i18n/messages/all.fr.js +1 -1
  35. package/i18n/messages/all.fr.json +1 -1
  36. package/i18n/messages/all.id.js +1 -1
  37. package/i18n/messages/all.id.json +1 -1
  38. package/i18n/messages/all.it.js +1 -1
  39. package/i18n/messages/all.it.json +1 -1
  40. package/i18n/messages/all.ja.js +1 -1
  41. package/i18n/messages/all.ja.json +1 -1
  42. package/i18n/messages/all.ko.js +1 -1
  43. package/i18n/messages/all.ko.json +1 -1
  44. package/i18n/messages/all.pt-BR.js +1 -1
  45. package/i18n/messages/all.pt-BR.json +1 -1
  46. package/i18n/messages/all.tr.js +1 -1
  47. package/i18n/messages/all.tr.json +1 -1
  48. package/i18n/messages/all.zh-CN.js +1 -1
  49. package/i18n/messages/all.zh-CN.json +1 -1
  50. package/i18n/messages/all.zh-TW.js +1 -1
  51. package/i18n/messages/all.zh-TW.json +1 -1
  52. package/i18n/messages-types.d.ts +18 -0
  53. package/i18n/messages-types.d.ts.map +1 -1
  54. package/i18n/messages-types.js.map +1 -1
  55. package/internal/base-component/styles.scoped.css +63 -4
  56. package/internal/components/token-list/styles.css.js +10 -10
  57. package/internal/components/token-list/styles.scoped.css +25 -25
  58. package/internal/components/token-list/styles.selectors.js +10 -10
  59. package/internal/context/reset-contexts-for-modal.d.ts.map +1 -1
  60. package/internal/context/reset-contexts-for-modal.js +3 -1
  61. package/internal/context/reset-contexts-for-modal.js.map +1 -1
  62. package/internal/context/token-inline-context.d.ts +6 -0
  63. package/internal/context/token-inline-context.d.ts.map +1 -0
  64. package/internal/context/token-inline-context.js +11 -0
  65. package/internal/context/token-inline-context.js.map +1 -0
  66. package/internal/environment.js +2 -2
  67. package/internal/environment.json +2 -2
  68. package/internal/generated/styles/tokens.d.ts +17 -3
  69. package/internal/generated/styles/tokens.js +17 -3
  70. package/internal/generated/theming/index.cjs +417 -9
  71. package/internal/generated/theming/index.cjs.d.ts +189 -0
  72. package/internal/generated/theming/index.d.ts +189 -0
  73. package/internal/generated/theming/index.js +417 -9
  74. package/internal/keycode.d.ts +3 -1
  75. package/internal/keycode.d.ts.map +1 -1
  76. package/internal/keycode.js +5 -0
  77. package/internal/keycode.js.map +1 -1
  78. package/internal/manifest.json +1 -1
  79. package/internal/utils/handle-key.d.ts +22 -1
  80. package/internal/utils/handle-key.d.ts.map +1 -1
  81. package/internal/utils/handle-key.js +62 -4
  82. package/internal/utils/handle-key.js.map +1 -1
  83. package/link/internal.d.ts.map +1 -1
  84. package/link/internal.js +3 -1
  85. package/link/internal.js.map +1 -1
  86. package/link/styles.css.js +21 -20
  87. package/link/styles.scoped.css +83 -80
  88. package/link/styles.selectors.js +21 -20
  89. package/package.json +1 -1
  90. package/popover/internal.d.ts.map +1 -1
  91. package/popover/internal.js +3 -1
  92. package/popover/internal.js.map +1 -1
  93. package/popover/styles.css.js +58 -57
  94. package/popover/styles.scoped.css +92 -89
  95. package/popover/styles.selectors.js +58 -57
  96. package/prompt-input/components/menu-dropdown.d.ts +33 -0
  97. package/prompt-input/components/menu-dropdown.d.ts.map +1 -0
  98. package/prompt-input/components/menu-dropdown.js +48 -0
  99. package/prompt-input/components/menu-dropdown.js.map +1 -0
  100. package/prompt-input/components/textarea-mode.d.ts +15 -0
  101. package/prompt-input/components/textarea-mode.d.ts.map +1 -0
  102. package/prompt-input/components/textarea-mode.js +8 -0
  103. package/prompt-input/components/textarea-mode.js.map +1 -0
  104. package/prompt-input/components/token-mode.d.ts +61 -0
  105. package/prompt-input/components/token-mode.d.ts.map +1 -0
  106. package/prompt-input/components/token-mode.js +37 -0
  107. package/prompt-input/components/token-mode.js.map +1 -0
  108. package/prompt-input/core/caret-controller.d.ts +73 -0
  109. package/prompt-input/core/caret-controller.d.ts.map +1 -0
  110. package/prompt-input/core/caret-controller.js +396 -0
  111. package/prompt-input/core/caret-controller.js.map +1 -0
  112. package/prompt-input/core/caret-spot-utils.d.ts +6 -0
  113. package/prompt-input/core/caret-spot-utils.d.ts.map +1 -0
  114. package/prompt-input/core/caret-spot-utils.js +52 -0
  115. package/prompt-input/core/caret-spot-utils.js.map +1 -0
  116. package/prompt-input/core/caret-utils.d.ts +25 -0
  117. package/prompt-input/core/caret-utils.d.ts.map +1 -0
  118. package/prompt-input/core/caret-utils.js +183 -0
  119. package/prompt-input/core/caret-utils.js.map +1 -0
  120. package/prompt-input/core/constants.d.ts +14 -0
  121. package/prompt-input/core/constants.d.ts.map +1 -0
  122. package/prompt-input/core/constants.js +18 -0
  123. package/prompt-input/core/constants.js.map +1 -0
  124. package/prompt-input/core/dom-utils.d.ts +60 -0
  125. package/prompt-input/core/dom-utils.d.ts.map +1 -0
  126. package/prompt-input/core/dom-utils.js +252 -0
  127. package/prompt-input/core/dom-utils.js.map +1 -0
  128. package/prompt-input/core/event-handlers.d.ts +68 -0
  129. package/prompt-input/core/event-handlers.d.ts.map +1 -0
  130. package/prompt-input/core/event-handlers.js +678 -0
  131. package/prompt-input/core/event-handlers.js.map +1 -0
  132. package/prompt-input/core/menu-state.d.ts +62 -0
  133. package/prompt-input/core/menu-state.d.ts.map +1 -0
  134. package/prompt-input/core/menu-state.js +168 -0
  135. package/prompt-input/core/menu-state.js.map +1 -0
  136. package/prompt-input/core/token-operations.d.ts +21 -0
  137. package/prompt-input/core/token-operations.d.ts.map +1 -0
  138. package/prompt-input/core/token-operations.js +273 -0
  139. package/prompt-input/core/token-operations.js.map +1 -0
  140. package/prompt-input/core/token-renderer.d.ts +26 -0
  141. package/prompt-input/core/token-renderer.d.ts.map +1 -0
  142. package/prompt-input/core/token-renderer.js +230 -0
  143. package/prompt-input/core/token-renderer.js.map +1 -0
  144. package/prompt-input/core/token-utils.d.ts +22 -0
  145. package/prompt-input/core/token-utils.d.ts.map +1 -0
  146. package/prompt-input/core/token-utils.js +262 -0
  147. package/prompt-input/core/token-utils.js.map +1 -0
  148. package/prompt-input/core/trigger-utils.d.ts +18 -0
  149. package/prompt-input/core/trigger-utils.d.ts.map +1 -0
  150. package/prompt-input/core/trigger-utils.js +174 -0
  151. package/prompt-input/core/trigger-utils.js.map +1 -0
  152. package/prompt-input/core/type-guards.d.ts +13 -0
  153. package/prompt-input/core/type-guards.d.ts.map +1 -0
  154. package/prompt-input/core/type-guards.js +36 -0
  155. package/prompt-input/core/type-guards.js.map +1 -0
  156. package/prompt-input/index.d.ts +1 -1
  157. package/prompt-input/index.d.ts.map +1 -1
  158. package/prompt-input/index.js.map +1 -1
  159. package/prompt-input/interfaces.d.ts +356 -7
  160. package/prompt-input/interfaces.d.ts.map +1 -1
  161. package/prompt-input/interfaces.js.map +1 -1
  162. package/prompt-input/internal.d.ts +1 -1
  163. package/prompt-input/internal.d.ts.map +1 -1
  164. package/prompt-input/internal.js +195 -61
  165. package/prompt-input/internal.js.map +1 -1
  166. package/prompt-input/styles.css.js +26 -17
  167. package/prompt-input/styles.scoped.css +152 -39
  168. package/prompt-input/styles.selectors.js +26 -17
  169. package/prompt-input/test-classes/styles.css.js +7 -6
  170. package/prompt-input/test-classes/styles.scoped.css +10 -6
  171. package/prompt-input/test-classes/styles.selectors.js +7 -6
  172. package/prompt-input/tokens/use-shortcuts.d.ts +37 -0
  173. package/prompt-input/tokens/use-shortcuts.d.ts.map +1 -0
  174. package/prompt-input/tokens/use-shortcuts.js +89 -0
  175. package/prompt-input/tokens/use-shortcuts.js.map +1 -0
  176. package/prompt-input/tokens/use-token-mode.d.ts +78 -0
  177. package/prompt-input/tokens/use-token-mode.d.ts.map +1 -0
  178. package/prompt-input/tokens/use-token-mode.js +817 -0
  179. package/prompt-input/tokens/use-token-mode.js.map +1 -0
  180. package/prompt-input/utils/insert-text-content-editable.d.ts +10 -0
  181. package/prompt-input/utils/insert-text-content-editable.d.ts.map +1 -0
  182. package/prompt-input/utils/insert-text-content-editable.js +133 -0
  183. package/prompt-input/utils/insert-text-content-editable.js.map +1 -0
  184. package/tabs/styles.css.js +30 -30
  185. package/tabs/styles.scoped.css +55 -55
  186. package/tabs/styles.selectors.js +30 -30
  187. package/test-utils/dom/hotspot/index.js +1 -2
  188. package/test-utils/dom/hotspot/index.js.map +1 -1
  189. package/test-utils/dom/prompt-input/index.d.ts +53 -1
  190. package/test-utils/dom/prompt-input/index.js +121 -13
  191. package/test-utils/dom/prompt-input/index.js.map +1 -1
  192. package/test-utils/dom/s3-resource-selector/index.js +2 -3
  193. package/test-utils/dom/s3-resource-selector/index.js.map +1 -1
  194. package/test-utils/selectors/hotspot/index.js +1 -2
  195. package/test-utils/selectors/hotspot/index.js.map +1 -1
  196. package/test-utils/selectors/prompt-input/index.d.ts +30 -0
  197. package/test-utils/selectors/prompt-input/index.js +53 -7
  198. package/test-utils/selectors/prompt-input/index.js.map +1 -1
  199. package/test-utils/selectors/s3-resource-selector/index.js +2 -3
  200. package/test-utils/selectors/s3-resource-selector/index.js.map +1 -1
  201. package/token/internal.d.ts.map +1 -1
  202. package/token/internal.js +17 -15
  203. package/token/internal.js.map +1 -1
@@ -12,4 +12,6 @@ export declare enum KeyCode {
12
12
  escape = 27,
13
13
  enter = 13,
14
14
  tab = 9,
15
- }
15
+ }
16
+ export declare const KeyCodeDelete = 46;
17
+ export declare const KeyCodeA = 65;
@@ -1 +1 @@
1
- {"version":3,"file":"keycode.d.ts","sourceRoot":"","sources":["../../../src/internal/keycode.ts"],"names":[],"mappings":"AAKA,oBAAY,OAAO;IACjB,MAAM,KAAK;IACX,QAAQ,KAAK;IACb,GAAG,KAAK;IACR,IAAI,KAAK;IACT,SAAS,IAAI;IACb,KAAK,KAAK;IACV,IAAI,KAAK;IACT,IAAI,KAAK;IACT,KAAK,KAAK;IACV,EAAE,KAAK;IACP,MAAM,KAAK;IACX,KAAK,KAAK;IACV,GAAG,IAAI;CACR"}
1
+ {"version":3,"file":"keycode.d.ts","sourceRoot":"","sources":["../../../src/internal/keycode.ts"],"names":[],"mappings":"AAKA,oBAAY,OAAO;IACjB,MAAM,KAAK;IACX,QAAQ,KAAK;IACb,GAAG,KAAK;IACR,IAAI,KAAK;IACT,SAAS,IAAI;IACb,KAAK,KAAK;IACV,IAAI,KAAK;IACT,IAAI,KAAK;IACT,KAAK,KAAK;IACV,EAAE,KAAK;IACP,MAAM,KAAK;IACX,KAAK,KAAK;IACV,GAAG,IAAI;CACR;AAKD,eAAO,MAAM,aAAa,KAAK,CAAC;AAChC,eAAO,MAAM,QAAQ,KAAK,CAAC"}
@@ -19,4 +19,9 @@ export var KeyCode;
19
19
  KeyCode[KeyCode["enter"] = 13] = "enter";
20
20
  KeyCode[KeyCode["tab"] = 9] = "tab";
21
21
  })(KeyCode || (KeyCode = {}));
22
+ // Additional keycodes used by prompt-input that are not part of the
23
+ // test-utils-core KeyCode enum. Defined separately to keep the enum
24
+ // compatible with the external type used by ElementWrapper.keydown().
25
+ export const KeyCodeDelete = 46;
26
+ export const KeyCodeA = 65;
22
27
  //# sourceMappingURL=keycode.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"keycode.js","sourceRoot":"","sources":["../../../src/internal/keycode.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,oDAAoD;AACpD,6CAA6C;AAC7C,8BAA8B;AAC9B,MAAM,CAAN,IAAY,OAcX;AAdD,WAAY,OAAO;IACjB,0CAAW,CAAA;IACX,8CAAa,CAAA;IACb,oCAAQ,CAAA;IACR,sCAAS,CAAA;IACT,+CAAa,CAAA;IACb,wCAAU,CAAA;IACV,sCAAS,CAAA;IACT,sCAAS,CAAA;IACT,wCAAU,CAAA;IACV,kCAAO,CAAA;IACP,0CAAW,CAAA;IACX,wCAAU,CAAA;IACV,mCAAO,CAAA;AACT,CAAC,EAdW,OAAO,KAAP,OAAO,QAclB","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n// When updating the list of key codes, don't forget\n// to modify corresponding list in test-utils\n// to avoid failing unit tests\nexport enum KeyCode {\n pageUp = 33,\n pageDown = 34,\n end = 35,\n home = 36,\n backspace = 8,\n space = 32,\n down = 40,\n left = 37,\n right = 39,\n up = 38,\n escape = 27,\n enter = 13,\n tab = 9,\n}\n"]}
1
+ {"version":3,"file":"keycode.js","sourceRoot":"","sources":["../../../src/internal/keycode.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,oDAAoD;AACpD,6CAA6C;AAC7C,8BAA8B;AAC9B,MAAM,CAAN,IAAY,OAcX;AAdD,WAAY,OAAO;IACjB,0CAAW,CAAA;IACX,8CAAa,CAAA;IACb,oCAAQ,CAAA;IACR,sCAAS,CAAA;IACT,+CAAa,CAAA;IACb,wCAAU,CAAA;IACV,sCAAS,CAAA;IACT,sCAAS,CAAA;IACT,wCAAU,CAAA;IACV,kCAAO,CAAA;IACP,0CAAW,CAAA;IACX,wCAAU,CAAA;IACV,mCAAO,CAAA;AACT,CAAC,EAdW,OAAO,KAAP,OAAO,QAclB;AAED,oEAAoE;AACpE,oEAAoE;AACpE,sEAAsE;AACtE,MAAM,CAAC,MAAM,aAAa,GAAG,EAAE,CAAC;AAChC,MAAM,CAAC,MAAM,QAAQ,GAAG,EAAE,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n// When updating the list of key codes, don't forget\n// to modify corresponding list in test-utils\n// to avoid failing unit tests\nexport enum KeyCode {\n pageUp = 33,\n pageDown = 34,\n end = 35,\n home = 36,\n backspace = 8,\n space = 32,\n down = 40,\n left = 37,\n right = 39,\n up = 38,\n escape = 27,\n enter = 13,\n tab = 9,\n}\n\n// Additional keycodes used by prompt-input that are not part of the\n// test-utils-core KeyCode enum. Defined separately to keep the enum\n// compatible with the external type used by ElementWrapper.keydown().\nexport const KeyCodeDelete = 46;\nexport const KeyCodeA = 65;\n"]}
@@ -1,3 +1,3 @@
1
1
  {
2
- "commit": "59a24c5f35ad7e5d85a2b682b6a4e185f2e76abf"
2
+ "commit": "3ac30b938164033b23b6a1550e5e14f9f1c85e29"
3
3
  }
@@ -1,30 +1,51 @@
1
1
  export declare function isEventLike(event: any): event is EventLike;
2
2
  export interface EventLike {
3
3
  keyCode: number;
4
+ shiftKey?: boolean;
5
+ ctrlKey?: boolean;
6
+ metaKey?: boolean;
4
7
  currentTarget: HTMLElement | SVGElement;
5
8
  }
6
9
  export default function handleKey(event: EventLike, {
7
10
  onActivate,
11
+ onBackspace,
8
12
  onBlockEnd,
9
13
  onBlockStart,
10
14
  onDefault,
15
+ onDelete,
11
16
  onEnd,
17
+ onEnter,
12
18
  onEscape,
13
19
  onHome,
14
20
  onInlineEnd,
15
21
  onInlineStart,
16
22
  onPageDown,
17
- onPageUp
23
+ onPageUp,
24
+ onSelectAll,
25
+ onShiftEnter,
26
+ onShiftInlineEnd,
27
+ onShiftInlineStart,
28
+ onSpace,
29
+ onTab
18
30
  }: {
19
31
  onActivate?: () => void;
32
+ onBackspace?: () => void;
20
33
  onBlockEnd?: () => void;
21
34
  onBlockStart?: () => void;
22
35
  onDefault?: () => void;
36
+ onDelete?: () => void;
23
37
  onEnd?: () => void;
38
+ onEnter?: () => void;
24
39
  onEscape?: () => void;
25
40
  onHome?: () => void;
26
41
  onInlineEnd?: () => void;
27
42
  onInlineStart?: () => void;
28
43
  onPageDown?: () => void;
29
44
  onPageUp?: () => void;
45
+ onSelectAll?: () => void;
46
+ onShiftEnter?: () => void;
47
+ onShiftInlineEnd?: () => void;
48
+ onShiftInlineStart?: () => void;
49
+ onSpace?: () => void;
50
+ onTab?: () => void;
30
51
  }): void;
@@ -1 +1 @@
1
- {"version":3,"file":"handle-key.d.ts","sourceRoot":"","sources":["../../../../src/internal/utils/handle-key.ts"],"names":[],"mappings":"AAOA,wBAAgB,WAAW,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,SAAS,CAE1D;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,WAAW,GAAG,UAAU,CAAC;CACzC;AAED,MAAM,CAAC,OAAO,UAAU,SAAS,CAC/B,KAAK,EAAE,SAAS,EAChB,EACE,UAAU,EACV,UAAU,EACV,YAAY,EACZ,SAAS,EACT,KAAK,EACL,QAAQ,EACR,MAAM,EACN,WAAW,EACX,aAAa,EACb,UAAU,EACV,QAAQ,GACT,EAAE;IACD,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB,QAsCF"}
1
+ {"version":3,"file":"handle-key.d.ts","sourceRoot":"","sources":["../../../../src/internal/utils/handle-key.ts"],"names":[],"mappings":"AAOA,wBAAgB,WAAW,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,SAAS,CAE1D;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,aAAa,EAAE,WAAW,GAAG,UAAU,CAAC;CACzC;AAED,MAAM,CAAC,OAAO,UAAU,SAAS,CAC/B,KAAK,EAAE,SAAS,EAChB,EACE,UAAU,EACV,WAAW,EACX,UAAU,EACV,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,KAAK,EACL,OAAO,EACP,QAAQ,EACR,MAAM,EACN,WAAW,EACX,aAAa,EACb,UAAU,EACV,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,OAAO,EACP,KAAK,GACN,EAAE;IACD,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC9B,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;CACpB,QAyFF"}
@@ -1,13 +1,39 @@
1
1
  // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
  import { getIsRtl } from '@cloudscape-design/component-toolkit/internal';
4
- import { KeyCode } from '../keycode';
4
+ import { KeyCode, KeyCodeA, KeyCodeDelete } from '../keycode';
5
5
  import { isHTMLElement, isSVGElement } from './dom';
6
6
  export function isEventLike(event) {
7
7
  return isHTMLElement(event.currentTarget) || isSVGElement(event.currentTarget);
8
8
  }
9
- export default function handleKey(event, { onActivate, onBlockEnd, onBlockStart, onDefault, onEnd, onEscape, onHome, onInlineEnd, onInlineStart, onPageDown, onPageUp, }) {
9
+ export default function handleKey(event, { onActivate, onBackspace, onBlockEnd, onBlockStart, onDefault, onDelete, onEnd, onEnter, onEscape, onHome, onInlineEnd, onInlineStart, onPageDown, onPageUp, onSelectAll, onShiftEnter, onShiftInlineEnd, onShiftInlineStart, onSpace, onTab, }) {
10
10
  switch (event.keyCode) {
11
+ case KeyCodeA:
12
+ if ((event.ctrlKey || event.metaKey) && onSelectAll) {
13
+ onSelectAll();
14
+ }
15
+ else {
16
+ onDefault === null || onDefault === void 0 ? void 0 : onDefault();
17
+ }
18
+ break;
19
+ case KeyCode.backspace:
20
+ // TODO: Remove onDefault fallback once all callers handle backspace explicitly
21
+ if (onBackspace) {
22
+ onBackspace();
23
+ }
24
+ else {
25
+ onDefault === null || onDefault === void 0 ? void 0 : onDefault();
26
+ }
27
+ break;
28
+ case KeyCodeDelete:
29
+ // TODO: Remove onDefault fallback once all callers handle delete explicitly
30
+ if (onDelete) {
31
+ onDelete();
32
+ }
33
+ else {
34
+ onDefault === null || onDefault === void 0 ? void 0 : onDefault();
35
+ }
36
+ break;
11
37
  case KeyCode.down:
12
38
  onBlockEnd === null || onBlockEnd === void 0 ? void 0 : onBlockEnd();
13
39
  break;
@@ -15,8 +41,15 @@ export default function handleKey(event, { onActivate, onBlockEnd, onBlockStart,
15
41
  onEnd === null || onEnd === void 0 ? void 0 : onEnd();
16
42
  break;
17
43
  case KeyCode.enter:
18
- case KeyCode.space:
19
- onActivate === null || onActivate === void 0 ? void 0 : onActivate();
44
+ if (event.shiftKey && onShiftEnter) {
45
+ onShiftEnter();
46
+ }
47
+ else if (onEnter) {
48
+ onEnter();
49
+ }
50
+ else {
51
+ onActivate === null || onActivate === void 0 ? void 0 : onActivate();
52
+ }
20
53
  break;
21
54
  case KeyCode.escape:
22
55
  onEscape === null || onEscape === void 0 ? void 0 : onEscape();
@@ -25,6 +58,10 @@ export default function handleKey(event, { onActivate, onBlockEnd, onBlockStart,
25
58
  onHome === null || onHome === void 0 ? void 0 : onHome();
26
59
  break;
27
60
  case KeyCode.left:
61
+ if (event.shiftKey && (onShiftInlineStart || onShiftInlineEnd)) {
62
+ getIsRtl(event.currentTarget) ? onShiftInlineEnd === null || onShiftInlineEnd === void 0 ? void 0 : onShiftInlineEnd() : onShiftInlineStart === null || onShiftInlineStart === void 0 ? void 0 : onShiftInlineStart();
63
+ break;
64
+ }
28
65
  getIsRtl(event.currentTarget) ? onInlineEnd === null || onInlineEnd === void 0 ? void 0 : onInlineEnd() : onInlineStart === null || onInlineStart === void 0 ? void 0 : onInlineStart();
29
66
  break;
30
67
  case KeyCode.pageDown:
@@ -34,8 +71,29 @@ export default function handleKey(event, { onActivate, onBlockEnd, onBlockStart,
34
71
  onPageUp === null || onPageUp === void 0 ? void 0 : onPageUp();
35
72
  break;
36
73
  case KeyCode.right:
74
+ if (event.shiftKey && (onShiftInlineStart || onShiftInlineEnd)) {
75
+ getIsRtl(event.currentTarget) ? onShiftInlineStart === null || onShiftInlineStart === void 0 ? void 0 : onShiftInlineStart() : onShiftInlineEnd === null || onShiftInlineEnd === void 0 ? void 0 : onShiftInlineEnd();
76
+ break;
77
+ }
37
78
  getIsRtl(event.currentTarget) ? onInlineStart === null || onInlineStart === void 0 ? void 0 : onInlineStart() : onInlineEnd === null || onInlineEnd === void 0 ? void 0 : onInlineEnd();
38
79
  break;
80
+ case KeyCode.space:
81
+ if (onSpace) {
82
+ onSpace();
83
+ }
84
+ else {
85
+ onActivate === null || onActivate === void 0 ? void 0 : onActivate();
86
+ }
87
+ break;
88
+ case KeyCode.tab:
89
+ // TODO: Remove onDefault fallback once all callers handle tab explicitly
90
+ if (onTab) {
91
+ onTab();
92
+ }
93
+ else {
94
+ onDefault === null || onDefault === void 0 ? void 0 : onDefault();
95
+ }
96
+ break;
39
97
  case KeyCode.up:
40
98
  onBlockStart === null || onBlockStart === void 0 ? void 0 : onBlockStart();
41
99
  break;
@@ -1 +1 @@
1
- {"version":3,"file":"handle-key.js","sourceRoot":"","sources":["../../../../src/internal/utils/handle-key.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,+CAA+C,CAAC;AAEzE,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAEpD,MAAM,UAAU,WAAW,CAAC,KAAU;IACpC,OAAO,aAAa,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;AACjF,CAAC;AAOD,MAAM,CAAC,OAAO,UAAU,SAAS,CAC/B,KAAgB,EAChB,EACE,UAAU,EACV,UAAU,EACV,YAAY,EACZ,SAAS,EACT,KAAK,EACL,QAAQ,EACR,MAAM,EACN,WAAW,EACX,aAAa,EACb,UAAU,EACV,QAAQ,GAaT;IAED,QAAQ,KAAK,CAAC,OAAO,EAAE,CAAC;QACtB,KAAK,OAAO,CAAC,IAAI;YACf,UAAU,aAAV,UAAU,uBAAV,UAAU,EAAI,CAAC;YACf,MAAM;QACR,KAAK,OAAO,CAAC,GAAG;YACd,KAAK,aAAL,KAAK,uBAAL,KAAK,EAAI,CAAC;YACV,MAAM;QACR,KAAK,OAAO,CAAC,KAAK,CAAC;QACnB,KAAK,OAAO,CAAC,KAAK;YAChB,UAAU,aAAV,UAAU,uBAAV,UAAU,EAAI,CAAC;YACf,MAAM;QACR,KAAK,OAAO,CAAC,MAAM;YACjB,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,EAAI,CAAC;YACb,MAAM;QACR,KAAK,OAAO,CAAC,IAAI;YACf,MAAM,aAAN,MAAM,uBAAN,MAAM,EAAI,CAAC;YACX,MAAM;QACR,KAAK,OAAO,CAAC,IAAI;YACf,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,WAAW,aAAX,WAAW,uBAAX,WAAW,EAAI,CAAC,CAAC,CAAC,aAAa,aAAb,aAAa,uBAAb,aAAa,EAAI,CAAC;YACpE,MAAM;QACR,KAAK,OAAO,CAAC,QAAQ;YACnB,UAAU,aAAV,UAAU,uBAAV,UAAU,EAAI,CAAC;YACf,MAAM;QACR,KAAK,OAAO,CAAC,MAAM;YACjB,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,EAAI,CAAC;YACb,MAAM;QACR,KAAK,OAAO,CAAC,KAAK;YAChB,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,aAAb,aAAa,uBAAb,aAAa,EAAI,CAAC,CAAC,CAAC,WAAW,aAAX,WAAW,uBAAX,WAAW,EAAI,CAAC;YACpE,MAAM;QACR,KAAK,OAAO,CAAC,EAAE;YACb,YAAY,aAAZ,YAAY,uBAAZ,YAAY,EAAI,CAAC;YACjB,MAAM;QACR;YACE,SAAS,aAAT,SAAS,uBAAT,SAAS,EAAI,CAAC;YACd,MAAM;IACV,CAAC;AACH,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { getIsRtl } from '@cloudscape-design/component-toolkit/internal';\n\nimport { KeyCode } from '../keycode';\nimport { isHTMLElement, isSVGElement } from './dom';\n\nexport function isEventLike(event: any): event is EventLike {\n return isHTMLElement(event.currentTarget) || isSVGElement(event.currentTarget);\n}\n\nexport interface EventLike {\n keyCode: number;\n currentTarget: HTMLElement | SVGElement;\n}\n\nexport default function handleKey(\n event: EventLike,\n {\n onActivate,\n onBlockEnd,\n onBlockStart,\n onDefault,\n onEnd,\n onEscape,\n onHome,\n onInlineEnd,\n onInlineStart,\n onPageDown,\n onPageUp,\n }: {\n onActivate?: () => void;\n onBlockEnd?: () => void;\n onBlockStart?: () => void;\n onDefault?: () => void;\n onEnd?: () => void;\n onEscape?: () => void;\n onHome?: () => void;\n onInlineEnd?: () => void;\n onInlineStart?: () => void;\n onPageDown?: () => void;\n onPageUp?: () => void;\n }\n) {\n switch (event.keyCode) {\n case KeyCode.down:\n onBlockEnd?.();\n break;\n case KeyCode.end:\n onEnd?.();\n break;\n case KeyCode.enter:\n case KeyCode.space:\n onActivate?.();\n break;\n case KeyCode.escape:\n onEscape?.();\n break;\n case KeyCode.home:\n onHome?.();\n break;\n case KeyCode.left:\n getIsRtl(event.currentTarget) ? onInlineEnd?.() : onInlineStart?.();\n break;\n case KeyCode.pageDown:\n onPageDown?.();\n break;\n case KeyCode.pageUp:\n onPageUp?.();\n break;\n case KeyCode.right:\n getIsRtl(event.currentTarget) ? onInlineStart?.() : onInlineEnd?.();\n break;\n case KeyCode.up:\n onBlockStart?.();\n break;\n default:\n onDefault?.();\n break;\n }\n}\n"]}
1
+ {"version":3,"file":"handle-key.js","sourceRoot":"","sources":["../../../../src/internal/utils/handle-key.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 { getIsRtl } from '@cloudscape-design/component-toolkit/internal';\n\nimport { KeyCode, KeyCodeA, KeyCodeDelete } from '../keycode';\nimport { isHTMLElement, isSVGElement } from './dom';\n\nexport function isEventLike(event: any): event is EventLike {\n return isHTMLElement(event.currentTarget) || isSVGElement(event.currentTarget);\n}\n\nexport interface EventLike {\n keyCode: number;\n shiftKey?: boolean;\n ctrlKey?: boolean;\n metaKey?: boolean;\n currentTarget: HTMLElement | SVGElement;\n}\n\nexport default function handleKey(\n event: EventLike,\n {\n onActivate,\n onBackspace,\n onBlockEnd,\n onBlockStart,\n onDefault,\n onDelete,\n onEnd,\n onEnter,\n onEscape,\n onHome,\n onInlineEnd,\n onInlineStart,\n onPageDown,\n onPageUp,\n onSelectAll,\n onShiftEnter,\n onShiftInlineEnd,\n onShiftInlineStart,\n onSpace,\n onTab,\n }: {\n onActivate?: () => void;\n onBackspace?: () => void;\n onBlockEnd?: () => void;\n onBlockStart?: () => void;\n onDefault?: () => void;\n onDelete?: () => void;\n onEnd?: () => void;\n onEnter?: () => void;\n onEscape?: () => void;\n onHome?: () => void;\n onInlineEnd?: () => void;\n onInlineStart?: () => void;\n onPageDown?: () => void;\n onPageUp?: () => void;\n onSelectAll?: () => void;\n onShiftEnter?: () => void;\n onShiftInlineEnd?: () => void;\n onShiftInlineStart?: () => void;\n onSpace?: () => void;\n onTab?: () => void;\n }\n) {\n switch (event.keyCode) {\n case KeyCodeA:\n if ((event.ctrlKey || event.metaKey) && onSelectAll) {\n onSelectAll();\n } else {\n onDefault?.();\n }\n break;\n case KeyCode.backspace:\n // TODO: Remove onDefault fallback once all callers handle backspace explicitly\n if (onBackspace) {\n onBackspace();\n } else {\n onDefault?.();\n }\n break;\n case KeyCodeDelete:\n // TODO: Remove onDefault fallback once all callers handle delete explicitly\n if (onDelete) {\n onDelete();\n } else {\n onDefault?.();\n }\n break;\n case KeyCode.down:\n onBlockEnd?.();\n break;\n case KeyCode.end:\n onEnd?.();\n break;\n case KeyCode.enter:\n if (event.shiftKey && onShiftEnter) {\n onShiftEnter();\n } else if (onEnter) {\n onEnter();\n } else {\n onActivate?.();\n }\n break;\n case KeyCode.escape:\n onEscape?.();\n break;\n case KeyCode.home:\n onHome?.();\n break;\n case KeyCode.left:\n if (event.shiftKey && (onShiftInlineStart || onShiftInlineEnd)) {\n getIsRtl(event.currentTarget) ? onShiftInlineEnd?.() : onShiftInlineStart?.();\n break;\n }\n getIsRtl(event.currentTarget) ? onInlineEnd?.() : onInlineStart?.();\n break;\n case KeyCode.pageDown:\n onPageDown?.();\n break;\n case KeyCode.pageUp:\n onPageUp?.();\n break;\n case KeyCode.right:\n if (event.shiftKey && (onShiftInlineStart || onShiftInlineEnd)) {\n getIsRtl(event.currentTarget) ? onShiftInlineStart?.() : onShiftInlineEnd?.();\n break;\n }\n getIsRtl(event.currentTarget) ? onInlineStart?.() : onInlineEnd?.();\n break;\n case KeyCode.space:\n if (onSpace) {\n onSpace();\n } else {\n onActivate?.();\n }\n break;\n case KeyCode.tab:\n // TODO: Remove onDefault fallback once all callers handle tab explicitly\n if (onTab) {\n onTab();\n } else {\n onDefault?.();\n }\n break;\n case KeyCode.up:\n onBlockStart?.();\n break;\n default:\n onDefault?.();\n break;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../../../src/link/internal.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA6B,MAAM,OAAO,CAAC;AAqBlD,OAAO,EAAE,0BAA0B,EAAE,MAAM,sCAAsC,CAAC;AAKlF,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAUzC,QAAA,MAAM,YAAY;cAHJ,SAAS,CAAC,SAAS,CAAC,GAAG,gBAAgB,GAAG,MAAM,GAAG,UAAU;uCAmN1E,CAAC;AAqBF,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../../../src/link/internal.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA6B,MAAM,OAAO,CAAC;AAsBlD,OAAO,EAAE,0BAA0B,EAAE,MAAM,sCAAsC,CAAC;AAKlF,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAUzC,QAAA,MAAM,YAAY;cAHJ,SAAS,CAAC,SAAS,CAAC,GAAG,gBAAgB,GAAG,MAAM,GAAG,UAAU;uCAqN1E,CAAC;AAqBF,eAAe,YAAY,CAAC"}
package/link/internal.js CHANGED
@@ -12,6 +12,7 @@ import { DATA_ATTR_FUNNEL_VALUE, getFunnelValueSelector, getSubStepAllSelector,
12
12
  import { getBaseProps } from '../internal/base-component';
13
13
  import { InfoLinkLabelContext } from '../internal/context/info-link-label-context';
14
14
  import { LinkDefaultVariantContext } from '../internal/context/link-default-variant-context';
15
+ import { useTokenInlineContext } from '../internal/context/token-inline-context';
15
16
  import { fireCancelableEvent, fireNonCancelableEvent, isPlainLeftClick } from '../internal/events';
16
17
  import useForwardFocus from '../internal/hooks/forward-focus';
17
18
  import { useVisualRefresh } from '../internal/hooks/use-visual-mode';
@@ -109,6 +110,7 @@ const InternalLink = React.forwardRef(({ variant: providedVariant, fontSize = 'b
109
110
  };
110
111
  const linkRef = useRef(null);
111
112
  const isVisualRefresh = useVisualRefresh();
113
+ const { isInlineToken } = useTokenInlineContext();
112
114
  useForwardFocus(ref, linkRef);
113
115
  // Visual refresh should only add styles to buttons that don't already have unique styles (e.g. primary/secondary variants)
114
116
  const applyButtonStyles = isButton && isVisualRefresh && !hasSpecialStyle;
@@ -116,7 +118,7 @@ const InternalLink = React.forwardRef(({ variant: providedVariant, fontSize = 'b
116
118
  id: linkId,
117
119
  ...baseProps,
118
120
  ref: useMergeRefs(linkRef, __internalRootRef),
119
- className: clsx(styles.link, baseProps.className, applyButtonStyles ? styles.button : null, styles[getVariantStyle(variant)], styles[getFontSizeStyle(variant, fontSize)], styles[getColorStyle(variant, color)]),
121
+ className: clsx(styles.link, baseProps.className, applyButtonStyles ? styles.button : null, styles[getVariantStyle(variant)], styles[getFontSizeStyle(variant, fontSize)], styles[getColorStyle(variant, color)], isInlineToken && styles['in-inline-token']),
120
122
  style: getLinkStyles(style),
121
123
  'aria-label': ariaLabel,
122
124
  'aria-labelledby': undefined,
@@ -1 +1 @@
1
- {"version":3,"file":"internal.js","sourceRoot":"","sources":["../../../src/link/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, { useContext, useRef } from 'react';\nimport clsx from 'clsx';\n\nimport { useMergeRefs, useUniqueId } from '@cloudscape-design/component-toolkit/internal';\nimport { useSingleTabStopNavigation } from '@cloudscape-design/component-toolkit/internal';\n\nimport { useInternalI18n } from '../i18n/context';\nimport InternalIcon from '../icon/internal';\nimport { FunnelMetrics } from '../internal/analytics';\nimport { useFunnel, useFunnelStep, useFunnelSubStep } from '../internal/analytics/hooks/use-funnel';\nimport {\n DATA_ATTR_FUNNEL_VALUE,\n getFunnelValueSelector,\n getSubStepAllSelector,\n getTextFromSelector,\n} from '../internal/analytics/selectors';\nimport { getBaseProps } from '../internal/base-component';\nimport { InfoLinkLabelContext } from '../internal/context/info-link-label-context';\nimport { LinkDefaultVariantContext } from '../internal/context/link-default-variant-context';\nimport { fireCancelableEvent, fireNonCancelableEvent, isPlainLeftClick } from '../internal/events';\nimport useForwardFocus from '../internal/hooks/forward-focus';\nimport { InternalBaseComponentProps } from '../internal/hooks/use-base-component';\nimport { useVisualRefresh } from '../internal/hooks/use-visual-mode';\nimport { KeyCode } from '../internal/keycode';\nimport { checkSafeUrl } from '../internal/utils/check-safe-url';\nimport WithNativeAttributes from '../internal/utils/with-native-attributes';\nimport { LinkProps } from './interfaces';\nimport { getLinkStyles } from './style';\n\nimport styles from './styles.css.js';\n\ntype InternalLinkProps = InternalBaseComponentProps &\n Omit<LinkProps, 'variant'> & {\n variant?: LinkProps['variant'] | 'top-navigation' | 'link' | 'recovery';\n };\n\nconst InternalLink = React.forwardRef(\n (\n {\n variant: providedVariant,\n fontSize = 'body-m',\n color = 'normal',\n external = false,\n target,\n href,\n rel,\n ariaLabel,\n externalIconAriaLabel,\n onFollow,\n onClick,\n children,\n nativeAttributes,\n __internalRootRef,\n style,\n ...props\n }: InternalLinkProps,\n ref: React.Ref<LinkProps.Ref>\n ) => {\n checkSafeUrl('Link', href);\n const isButton = !href;\n const { defaultVariant } = useContext(LinkDefaultVariantContext);\n const variant = providedVariant || defaultVariant;\n const specialStyles = ['top-navigation', 'link', 'recovery'];\n const hasSpecialStyle = specialStyles.indexOf(variant) > -1;\n\n const i18n = useInternalI18n('link');\n const baseProps = getBaseProps(props);\n const anchorTarget = target ?? (external ? '_blank' : undefined);\n const anchorRel = rel ?? (anchorTarget === '_blank' ? 'noopener noreferrer' : undefined);\n const uniqueId = useUniqueId('link');\n const linkId = useUniqueId('link-self');\n const infoId = useUniqueId('link-info');\n\n const infoLinkLabelFromContext = useContext(InfoLinkLabelContext);\n\n const { funnelIdentifier, funnelInteractionId } = useFunnel();\n const { stepIdentifier, stepNumber, stepNameSelector } = useFunnelStep();\n const { subStepIdentifier, subStepSelector, subStepNameSelector } = useFunnelSubStep();\n\n const fireFunnelEvent = (funnelInteractionId: string) => {\n if (variant === 'info') {\n const stepName = getTextFromSelector(stepNameSelector);\n const subStepName = getTextFromSelector(subStepNameSelector);\n\n FunnelMetrics.helpPanelInteracted({\n funnelIdentifier,\n funnelInteractionId,\n stepIdentifier,\n stepNumber,\n stepName,\n subStepIdentifier,\n stepNameSelector,\n subStepSelector,\n subStepName,\n subStepNameSelector,\n elementSelector: getFunnelValueSelector(uniqueId),\n subStepAllSelector: getSubStepAllSelector(),\n });\n } else if (external) {\n const stepName = getTextFromSelector(stepNameSelector);\n const subStepName = getTextFromSelector(subStepNameSelector);\n\n FunnelMetrics.externalLinkInteracted({\n funnelIdentifier,\n funnelInteractionId,\n stepIdentifier,\n stepNumber,\n stepName,\n stepNameSelector,\n subStepIdentifier,\n subStepSelector,\n subStepName,\n subStepNameSelector,\n elementSelector: getFunnelValueSelector(uniqueId),\n subStepAllSelector: getSubStepAllSelector(),\n });\n }\n };\n\n const fireFollowEvent = (event: React.SyntheticEvent) => {\n if (funnelInteractionId) {\n fireFunnelEvent(funnelInteractionId);\n }\n\n fireCancelableEvent(onFollow, { href, external, target: anchorTarget }, event);\n };\n\n const fireClickEvent = (event: React.MouseEvent | React.KeyboardEvent) => {\n const { altKey, ctrlKey, metaKey, shiftKey } = event;\n // eslint-disable-next-line no-restricted-syntax -- MouseEvent vs KeyboardEvent discrimination\n const button = 'button' in event ? event.button : 0;\n // make onClick non-cancelable to prevent it from being used to block full page reload\n // for navigation use `onFollow` event instead\n fireNonCancelableEvent(onClick, { altKey, button, ctrlKey, metaKey, shiftKey });\n };\n\n const handleLinkClick = (event: React.MouseEvent) => {\n if (isPlainLeftClick(event)) {\n fireFollowEvent(event);\n }\n fireClickEvent(event);\n };\n\n const handleButtonClick = (event: React.MouseEvent) => {\n fireFollowEvent(event);\n fireClickEvent(event);\n };\n\n const handleButtonKeyDown = (event: React.KeyboardEvent) => {\n if (event.keyCode === KeyCode.space || event.keyCode === KeyCode.enter) {\n event.preventDefault();\n fireFollowEvent(event);\n fireClickEvent(event);\n }\n };\n\n const linkRef = useRef<HTMLElement>(null);\n const isVisualRefresh = useVisualRefresh();\n useForwardFocus(ref, linkRef);\n\n // Visual refresh should only add styles to buttons that don't already have unique styles (e.g. primary/secondary variants)\n const applyButtonStyles = isButton && isVisualRefresh && !hasSpecialStyle;\n\n const sharedProps = {\n id: linkId,\n ...baseProps,\n ref: useMergeRefs(linkRef, __internalRootRef),\n className: clsx(\n styles.link,\n baseProps.className,\n applyButtonStyles ? styles.button : null,\n styles[getVariantStyle(variant)],\n styles[getFontSizeStyle(variant, fontSize)],\n styles[getColorStyle(variant, color)]\n ),\n style: getLinkStyles(style),\n 'aria-label': ariaLabel,\n 'aria-labelledby': undefined as string | undefined,\n [DATA_ATTR_FUNNEL_VALUE]: uniqueId,\n };\n\n if (variant === 'info' && infoLinkLabelFromContext && !ariaLabel) {\n sharedProps['aria-labelledby'] = `${sharedProps.id} ${infoId} ${infoLinkLabelFromContext}`;\n }\n\n const renderedExternalIconAriaLabel = i18n('externalIconAriaLabel', externalIconAriaLabel);\n const content = (\n <>\n {children}\n {external && (\n <span className={styles['icon-wrapper']}>\n &nbsp;\n <span\n className={styles.icon}\n aria-label={renderedExternalIconAriaLabel}\n role={renderedExternalIconAriaLabel ? 'img' : undefined}\n >\n <InternalIcon name=\"external\" size=\"inherit\" />\n </span>\n </span>\n )}\n {variant === 'info' && (\n <span hidden={true} id={infoId}>\n :\n </span>\n )}\n </>\n );\n\n const { tabIndex } = useSingleTabStopNavigation(linkRef, { tabIndex: isButton ? 0 : undefined });\n\n if (isButton) {\n return (\n <WithNativeAttributes\n {...sharedProps}\n tag=\"a\"\n componentName=\"Link\"\n nativeAttributes={nativeAttributes}\n role=\"button\"\n tabIndex={tabIndex}\n onKeyDown={handleButtonKeyDown}\n onClick={handleButtonClick}\n >\n {content}\n </WithNativeAttributes>\n );\n }\n\n return (\n <WithNativeAttributes\n {...sharedProps}\n tag=\"a\"\n componentName=\"Link\"\n nativeAttributes={nativeAttributes}\n tabIndex={tabIndex}\n target={anchorTarget}\n rel={anchorRel}\n href={href}\n onClick={handleLinkClick}\n >\n {content}\n </WithNativeAttributes>\n );\n }\n);\n\nfunction getVariantStyle(variant: Exclude<InternalLinkProps['variant'], undefined>) {\n return `variant-${variant.replace(/^awsui-/, '')}`;\n}\n\nfunction getFontSizeStyle(variant: InternalLinkProps['variant'], fontSize: InternalLinkProps['fontSize']) {\n switch (variant) {\n case 'info':\n return 'font-size-body-s';\n case 'awsui-value-large':\n return 'font-size-display-l';\n default:\n return `font-size-${fontSize}`;\n }\n}\n\nfunction getColorStyle(variant: InternalLinkProps['variant'], color: InternalLinkProps['color']) {\n return `color-${variant === 'info' ? 'normal' : color}`;\n}\n\nexport default InternalLink;\n"]}
1
+ {"version":3,"file":"internal.js","sourceRoot":"","sources":["../../../src/link/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, { useContext, useRef } from 'react';\nimport clsx from 'clsx';\n\nimport { useMergeRefs, useUniqueId } from '@cloudscape-design/component-toolkit/internal';\nimport { useSingleTabStopNavigation } from '@cloudscape-design/component-toolkit/internal';\n\nimport { useInternalI18n } from '../i18n/context';\nimport InternalIcon from '../icon/internal';\nimport { FunnelMetrics } from '../internal/analytics';\nimport { useFunnel, useFunnelStep, useFunnelSubStep } from '../internal/analytics/hooks/use-funnel';\nimport {\n DATA_ATTR_FUNNEL_VALUE,\n getFunnelValueSelector,\n getSubStepAllSelector,\n getTextFromSelector,\n} from '../internal/analytics/selectors';\nimport { getBaseProps } from '../internal/base-component';\nimport { InfoLinkLabelContext } from '../internal/context/info-link-label-context';\nimport { LinkDefaultVariantContext } from '../internal/context/link-default-variant-context';\nimport { useTokenInlineContext } from '../internal/context/token-inline-context';\nimport { fireCancelableEvent, fireNonCancelableEvent, isPlainLeftClick } from '../internal/events';\nimport useForwardFocus from '../internal/hooks/forward-focus';\nimport { InternalBaseComponentProps } from '../internal/hooks/use-base-component';\nimport { useVisualRefresh } from '../internal/hooks/use-visual-mode';\nimport { KeyCode } from '../internal/keycode';\nimport { checkSafeUrl } from '../internal/utils/check-safe-url';\nimport WithNativeAttributes from '../internal/utils/with-native-attributes';\nimport { LinkProps } from './interfaces';\nimport { getLinkStyles } from './style';\n\nimport styles from './styles.css.js';\n\ntype InternalLinkProps = InternalBaseComponentProps &\n Omit<LinkProps, 'variant'> & {\n variant?: LinkProps['variant'] | 'top-navigation' | 'link' | 'recovery';\n };\n\nconst InternalLink = React.forwardRef(\n (\n {\n variant: providedVariant,\n fontSize = 'body-m',\n color = 'normal',\n external = false,\n target,\n href,\n rel,\n ariaLabel,\n externalIconAriaLabel,\n onFollow,\n onClick,\n children,\n nativeAttributes,\n __internalRootRef,\n style,\n ...props\n }: InternalLinkProps,\n ref: React.Ref<LinkProps.Ref>\n ) => {\n checkSafeUrl('Link', href);\n const isButton = !href;\n const { defaultVariant } = useContext(LinkDefaultVariantContext);\n const variant = providedVariant || defaultVariant;\n const specialStyles = ['top-navigation', 'link', 'recovery'];\n const hasSpecialStyle = specialStyles.indexOf(variant) > -1;\n\n const i18n = useInternalI18n('link');\n const baseProps = getBaseProps(props);\n const anchorTarget = target ?? (external ? '_blank' : undefined);\n const anchorRel = rel ?? (anchorTarget === '_blank' ? 'noopener noreferrer' : undefined);\n const uniqueId = useUniqueId('link');\n const linkId = useUniqueId('link-self');\n const infoId = useUniqueId('link-info');\n\n const infoLinkLabelFromContext = useContext(InfoLinkLabelContext);\n\n const { funnelIdentifier, funnelInteractionId } = useFunnel();\n const { stepIdentifier, stepNumber, stepNameSelector } = useFunnelStep();\n const { subStepIdentifier, subStepSelector, subStepNameSelector } = useFunnelSubStep();\n\n const fireFunnelEvent = (funnelInteractionId: string) => {\n if (variant === 'info') {\n const stepName = getTextFromSelector(stepNameSelector);\n const subStepName = getTextFromSelector(subStepNameSelector);\n\n FunnelMetrics.helpPanelInteracted({\n funnelIdentifier,\n funnelInteractionId,\n stepIdentifier,\n stepNumber,\n stepName,\n subStepIdentifier,\n stepNameSelector,\n subStepSelector,\n subStepName,\n subStepNameSelector,\n elementSelector: getFunnelValueSelector(uniqueId),\n subStepAllSelector: getSubStepAllSelector(),\n });\n } else if (external) {\n const stepName = getTextFromSelector(stepNameSelector);\n const subStepName = getTextFromSelector(subStepNameSelector);\n\n FunnelMetrics.externalLinkInteracted({\n funnelIdentifier,\n funnelInteractionId,\n stepIdentifier,\n stepNumber,\n stepName,\n stepNameSelector,\n subStepIdentifier,\n subStepSelector,\n subStepName,\n subStepNameSelector,\n elementSelector: getFunnelValueSelector(uniqueId),\n subStepAllSelector: getSubStepAllSelector(),\n });\n }\n };\n\n const fireFollowEvent = (event: React.SyntheticEvent) => {\n if (funnelInteractionId) {\n fireFunnelEvent(funnelInteractionId);\n }\n\n fireCancelableEvent(onFollow, { href, external, target: anchorTarget }, event);\n };\n\n const fireClickEvent = (event: React.MouseEvent | React.KeyboardEvent) => {\n const { altKey, ctrlKey, metaKey, shiftKey } = event;\n // eslint-disable-next-line no-restricted-syntax -- MouseEvent vs KeyboardEvent discrimination\n const button = 'button' in event ? event.button : 0;\n // make onClick non-cancelable to prevent it from being used to block full page reload\n // for navigation use `onFollow` event instead\n fireNonCancelableEvent(onClick, { altKey, button, ctrlKey, metaKey, shiftKey });\n };\n\n const handleLinkClick = (event: React.MouseEvent) => {\n if (isPlainLeftClick(event)) {\n fireFollowEvent(event);\n }\n fireClickEvent(event);\n };\n\n const handleButtonClick = (event: React.MouseEvent) => {\n fireFollowEvent(event);\n fireClickEvent(event);\n };\n\n const handleButtonKeyDown = (event: React.KeyboardEvent) => {\n if (event.keyCode === KeyCode.space || event.keyCode === KeyCode.enter) {\n event.preventDefault();\n fireFollowEvent(event);\n fireClickEvent(event);\n }\n };\n\n const linkRef = useRef<HTMLElement>(null);\n const isVisualRefresh = useVisualRefresh();\n const { isInlineToken } = useTokenInlineContext();\n useForwardFocus(ref, linkRef);\n\n // Visual refresh should only add styles to buttons that don't already have unique styles (e.g. primary/secondary variants)\n const applyButtonStyles = isButton && isVisualRefresh && !hasSpecialStyle;\n\n const sharedProps = {\n id: linkId,\n ...baseProps,\n ref: useMergeRefs(linkRef, __internalRootRef),\n className: clsx(\n styles.link,\n baseProps.className,\n applyButtonStyles ? styles.button : null,\n styles[getVariantStyle(variant)],\n styles[getFontSizeStyle(variant, fontSize)],\n styles[getColorStyle(variant, color)],\n isInlineToken && styles['in-inline-token']\n ),\n style: getLinkStyles(style),\n 'aria-label': ariaLabel,\n 'aria-labelledby': undefined as string | undefined,\n [DATA_ATTR_FUNNEL_VALUE]: uniqueId,\n };\n\n if (variant === 'info' && infoLinkLabelFromContext && !ariaLabel) {\n sharedProps['aria-labelledby'] = `${sharedProps.id} ${infoId} ${infoLinkLabelFromContext}`;\n }\n\n const renderedExternalIconAriaLabel = i18n('externalIconAriaLabel', externalIconAriaLabel);\n const content = (\n <>\n {children}\n {external && (\n <span className={styles['icon-wrapper']}>\n &nbsp;\n <span\n className={styles.icon}\n aria-label={renderedExternalIconAriaLabel}\n role={renderedExternalIconAriaLabel ? 'img' : undefined}\n >\n <InternalIcon name=\"external\" size=\"inherit\" />\n </span>\n </span>\n )}\n {variant === 'info' && (\n <span hidden={true} id={infoId}>\n :\n </span>\n )}\n </>\n );\n\n const { tabIndex } = useSingleTabStopNavigation(linkRef, { tabIndex: isButton ? 0 : undefined });\n\n if (isButton) {\n return (\n <WithNativeAttributes\n {...sharedProps}\n tag=\"a\"\n componentName=\"Link\"\n nativeAttributes={nativeAttributes}\n role=\"button\"\n tabIndex={tabIndex}\n onKeyDown={handleButtonKeyDown}\n onClick={handleButtonClick}\n >\n {content}\n </WithNativeAttributes>\n );\n }\n\n return (\n <WithNativeAttributes\n {...sharedProps}\n tag=\"a\"\n componentName=\"Link\"\n nativeAttributes={nativeAttributes}\n tabIndex={tabIndex}\n target={anchorTarget}\n rel={anchorRel}\n href={href}\n onClick={handleLinkClick}\n >\n {content}\n </WithNativeAttributes>\n );\n }\n);\n\nfunction getVariantStyle(variant: Exclude<InternalLinkProps['variant'], undefined>) {\n return `variant-${variant.replace(/^awsui-/, '')}`;\n}\n\nfunction getFontSizeStyle(variant: InternalLinkProps['variant'], fontSize: InternalLinkProps['fontSize']) {\n switch (variant) {\n case 'info':\n return 'font-size-body-s';\n case 'awsui-value-large':\n return 'font-size-display-l';\n default:\n return `font-size-${fontSize}`;\n }\n}\n\nfunction getColorStyle(variant: InternalLinkProps['variant'], color: InternalLinkProps['color']) {\n return `color-${variant === 'info' ? 'normal' : color}`;\n}\n\nexport default InternalLink;\n"]}
@@ -1,25 +1,26 @@
1
1
 
2
2
  import './styles.scoped.css';
3
3
  export default {
4
- "link": "awsui_link_4c84z_1awr6_145",
5
- "variant-secondary": "awsui_variant-secondary_4c84z_1awr6_212",
6
- "variant-primary": "awsui_variant-primary_4c84z_1awr6_247",
7
- "variant-info": "awsui_variant-info_4c84z_1awr6_280",
8
- "variant-value-large": "awsui_variant-value-large_4c84z_1awr6_315",
9
- "variant-top-navigation": "awsui_variant-top-navigation_4c84z_1awr6_347",
10
- "variant-recovery": "awsui_variant-recovery_4c84z_1awr6_382",
11
- "button": "awsui_button_4c84z_1awr6_415",
12
- "color-inverted": "awsui_color-inverted_4c84z_1awr6_450",
13
- "font-size-body-s": "awsui_font-size-body-s_4c84z_1awr6_471",
14
- "font-size-body-m": "awsui_font-size-body-m_4c84z_1awr6_478",
15
- "font-size-heading-xs": "awsui_font-size-heading-xs_4c84z_1awr6_484",
16
- "font-size-heading-s": "awsui_font-size-heading-s_4c84z_1awr6_491",
17
- "font-size-heading-m": "awsui_font-size-heading-m_4c84z_1awr6_498",
18
- "font-size-heading-l": "awsui_font-size-heading-l_4c84z_1awr6_505",
19
- "font-size-heading-xl": "awsui_font-size-heading-xl_4c84z_1awr6_512",
20
- "font-size-display-l": "awsui_font-size-display-l_4c84z_1awr6_519",
21
- "font-size-inherit": "awsui_font-size-inherit_4c84z_1awr6_526",
22
- "icon-wrapper": "awsui_icon-wrapper_4c84z_1awr6_534",
23
- "icon": "awsui_icon_4c84z_1awr6_534"
4
+ "link": "awsui_link_4c84z_82ubk_145",
5
+ "variant-secondary": "awsui_variant-secondary_4c84z_82ubk_212",
6
+ "variant-primary": "awsui_variant-primary_4c84z_82ubk_247",
7
+ "variant-info": "awsui_variant-info_4c84z_82ubk_280",
8
+ "variant-value-large": "awsui_variant-value-large_4c84z_82ubk_315",
9
+ "variant-top-navigation": "awsui_variant-top-navigation_4c84z_82ubk_347",
10
+ "variant-recovery": "awsui_variant-recovery_4c84z_82ubk_382",
11
+ "button": "awsui_button_4c84z_82ubk_415",
12
+ "color-inverted": "awsui_color-inverted_4c84z_82ubk_450",
13
+ "font-size-body-s": "awsui_font-size-body-s_4c84z_82ubk_471",
14
+ "font-size-body-m": "awsui_font-size-body-m_4c84z_82ubk_478",
15
+ "font-size-heading-xs": "awsui_font-size-heading-xs_4c84z_82ubk_484",
16
+ "font-size-heading-s": "awsui_font-size-heading-s_4c84z_82ubk_491",
17
+ "font-size-heading-m": "awsui_font-size-heading-m_4c84z_82ubk_498",
18
+ "font-size-heading-l": "awsui_font-size-heading-l_4c84z_82ubk_505",
19
+ "font-size-heading-xl": "awsui_font-size-heading-xl_4c84z_82ubk_512",
20
+ "font-size-display-l": "awsui_font-size-display-l_4c84z_82ubk_519",
21
+ "font-size-inherit": "awsui_font-size-inherit_4c84z_82ubk_526",
22
+ "in-inline-token": "awsui_in-inline-token_4c84z_82ubk_533",
23
+ "icon-wrapper": "awsui_icon-wrapper_4c84z_82ubk_537",
24
+ "icon": "awsui_icon_4c84z_82ubk_537"
24
25
  };
25
26