@transferwise/components 0.0.0-experimental-d2bc8ee → 0.0.0-experimental-2b5b7ab

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 (211) hide show
  1. package/build/common/closeButton/CloseButton.messages.js +2 -2
  2. package/build/common/closeButton/CloseButton.messages.js.map +1 -1
  3. package/build/common/closeButton/CloseButton.messages.mjs +2 -2
  4. package/build/common/closeButton/CloseButton.messages.mjs.map +1 -1
  5. package/build/common/closeButton/CloseButton.mjs +2 -2
  6. package/build/common/closeButton/CloseButton.mjs.map +1 -1
  7. package/build/drawer/Drawer.js +18 -9
  8. package/build/drawer/Drawer.js.map +1 -1
  9. package/build/drawer/Drawer.mjs +18 -9
  10. package/build/drawer/Drawer.mjs.map +1 -1
  11. package/build/main.css +649 -510
  12. package/build/mocks.js +7 -0
  13. package/build/mocks.js.map +1 -1
  14. package/build/mocks.mjs +7 -1
  15. package/build/mocks.mjs.map +1 -1
  16. package/build/modal/Modal.js +20 -21
  17. package/build/modal/Modal.js.map +1 -1
  18. package/build/modal/Modal.mjs +20 -21
  19. package/build/modal/Modal.mjs.map +1 -1
  20. package/build/select/Select.js +2 -1
  21. package/build/select/Select.js.map +1 -1
  22. package/build/select/Select.mjs +2 -1
  23. package/build/select/Select.mjs.map +1 -1
  24. package/build/sentimentSurface/classMap.js +17 -0
  25. package/build/sentimentSurface/classMap.js.map +1 -0
  26. package/build/sentimentSurface/classMap.mjs +14 -0
  27. package/build/sentimentSurface/classMap.mjs.map +1 -0
  28. package/build/statusIcon/StatusIcon.js +4 -1
  29. package/build/statusIcon/StatusIcon.js.map +1 -1
  30. package/build/statusIcon/StatusIcon.mjs +4 -1
  31. package/build/statusIcon/StatusIcon.mjs.map +1 -1
  32. package/build/styles/accordion/Accordion.css +6 -2
  33. package/build/styles/actionButton/ActionButton.css +4 -12
  34. package/build/styles/avatar/Avatar.css +10 -13
  35. package/build/styles/avatarView/AvatarView.css +3 -5
  36. package/build/styles/avatarView/Dot.css +1 -2
  37. package/build/styles/button/Button.css +0 -1
  38. package/build/styles/card/Card.css +2 -2
  39. package/build/styles/carousel/Carousel.css +2 -5
  40. package/build/styles/checkboxButton/CheckboxButton.css +1 -0
  41. package/build/styles/chips/Chip.css +12 -31
  42. package/build/styles/circularButton/CircularButton.css +0 -6
  43. package/build/styles/common/Option/Option.css +2 -2
  44. package/build/styles/common/RadioButton/RadioButton.css +1 -1
  45. package/build/styles/common/bottomSheet/BottomSheet.css +1 -1
  46. package/build/styles/common/card/Card.css +1 -1
  47. package/build/styles/common/closeButton/CloseButton.css +2 -7
  48. package/build/styles/criticalBanner/CriticalCommsBanner.css +0 -4
  49. package/build/styles/dateLookup/DateLookup.css +3 -5
  50. package/build/styles/definitionList/DefinitionList.css +1 -1
  51. package/build/styles/divider/Divider.css +1 -1
  52. package/build/styles/drawer/Drawer.css +11 -58
  53. package/build/styles/emphasis/Emphasis.css +5 -4
  54. package/build/styles/expressiveMoneyInput/ExpressiveMoneyInput.css +0 -2
  55. package/build/styles/expressiveMoneyInput/amountInput/AmountInput.css +0 -1
  56. package/build/styles/expressiveMoneyInput/chevron/Chevron.css +0 -1
  57. package/build/styles/flowNavigation/FlowNavigation.css +1 -2
  58. package/build/styles/header/Header.css +2 -2
  59. package/build/styles/iconButton/IconButton.css +4 -27
  60. package/build/styles/inputs/Input.css +5 -5
  61. package/build/styles/inputs/InputGroup.css +2 -3
  62. package/build/styles/inputs/SelectInput.css +13 -14
  63. package/build/styles/inputs/TextArea.css +5 -5
  64. package/build/styles/instructionsList/InstructionsList.css +0 -2
  65. package/build/styles/listItem/ListItem.css +8 -22
  66. package/build/styles/logo/Logo.css +0 -2
  67. package/build/styles/main.css +649 -510
  68. package/build/styles/modal/Modal.css +6 -68
  69. package/build/styles/moneyInput/MoneyInput.css +2 -2
  70. package/build/styles/navigationOption/NavigationOption.css +3 -1
  71. package/build/styles/nudge/Nudge.css +1 -1
  72. package/build/styles/overlayHeader/OverlayHeader.css +1 -2
  73. package/build/styles/popover/Popover.css +2 -2
  74. package/build/styles/progress/Progress.css +3 -3
  75. package/build/styles/progressBar/ProgressBar.css +2 -2
  76. package/build/styles/promoCard/PromoCard.css +3 -3
  77. package/build/styles/prompt/InlinePrompt/InlinePrompt.css +3 -39
  78. package/build/styles/segmentedControl/SegmentedControl.css +2 -6
  79. package/build/styles/select/Select.css +41 -25
  80. package/build/styles/sentimentSurface/SentimentSurface.css +424 -0
  81. package/build/styles/slidingPanel/SlidingPanel.css +4 -4
  82. package/build/styles/snackbar/Snackbar.css +4 -4
  83. package/build/styles/statusIcon/StatusIcon.css +4 -44
  84. package/build/styles/stepper/Stepper.css +4 -4
  85. package/build/styles/summary/Summary.css +2 -5
  86. package/build/styles/switch/Switch.css +2 -3
  87. package/build/styles/table/Table.css +5 -13
  88. package/build/styles/tabs/Tabs.css +9 -10
  89. package/build/styles/tile/Tile.css +5 -8
  90. package/build/styles/typeahead/Typeahead.css +1 -2
  91. package/build/styles/typeahead/typeaheadOption/TypeaheadOption.css +4 -1
  92. package/build/styles/upload/Upload.css +1 -1
  93. package/build/styles/uploadInput/uploadButton/UploadButton.css +2 -4
  94. package/build/styles/uploadInput/uploadItem/UploadItem.css +4 -8
  95. package/build/types/drawer/Drawer.d.ts.map +1 -1
  96. package/build/types/mocks.d.ts +1 -0
  97. package/build/types/mocks.d.ts.map +1 -1
  98. package/build/types/modal/Modal.d.ts.map +1 -1
  99. package/build/types/select/Select.d.ts +1 -1
  100. package/build/types/select/Select.d.ts.map +1 -1
  101. package/build/types/sentimentSurface/SentimentSurface.d.ts +30 -0
  102. package/build/types/sentimentSurface/SentimentSurface.d.ts.map +1 -0
  103. package/build/types/sentimentSurface/SentimentSurface.types.d.ts +80 -0
  104. package/build/types/sentimentSurface/SentimentSurface.types.d.ts.map +1 -0
  105. package/build/types/sentimentSurface/classMap.d.ts +4 -0
  106. package/build/types/sentimentSurface/classMap.d.ts.map +1 -0
  107. package/build/types/sentimentSurface/index.d.ts +3 -0
  108. package/build/types/sentimentSurface/index.d.ts.map +1 -0
  109. package/build/types/statusIcon/StatusIcon.d.ts.map +1 -1
  110. package/build/types/test-utils/window-mock.d.ts +1 -0
  111. package/build/types/test-utils/window-mock.d.ts.map +1 -1
  112. package/package.json +5 -10
  113. package/src/accordion/Accordion.css +6 -2
  114. package/src/accordion/Accordion.less +7 -0
  115. package/src/accordion/Accordion.story.tsx +1 -1
  116. package/src/actionButton/ActionButton.css +4 -12
  117. package/src/avatar/Avatar.css +10 -13
  118. package/src/avatarLayout/AvatarLayout.story.tsx +1 -0
  119. package/src/avatarView/AvatarView.css +3 -5
  120. package/src/avatarView/AvatarView.story.tsx +1 -0
  121. package/src/avatarView/Dot.css +1 -2
  122. package/src/button/Button.css +0 -1
  123. package/src/card/Card.css +2 -2
  124. package/src/carousel/Carousel.css +2 -5
  125. package/src/checkboxButton/CheckboxButton.css +1 -0
  126. package/src/chips/Chip.css +12 -31
  127. package/src/circularButton/CircularButton.css +0 -6
  128. package/src/common/Option/Option.css +2 -2
  129. package/src/common/RadioButton/RadioButton.css +1 -1
  130. package/src/common/bottomSheet/BottomSheet.css +1 -1
  131. package/src/common/card/Card.css +1 -1
  132. package/src/common/closeButton/CloseButton.css +2 -7
  133. package/src/criticalBanner/CriticalCommsBanner.css +0 -4
  134. package/src/dateLookup/DateLookup.css +3 -5
  135. package/src/definitionList/DefinitionList.css +1 -1
  136. package/src/display/Display.story.tsx +1 -0
  137. package/src/divider/Divider.css +1 -1
  138. package/src/drawer/Drawer.css +11 -58
  139. package/src/drawer/Drawer.less +14 -70
  140. package/src/drawer/Drawer.story.tsx +158 -100
  141. package/src/drawer/Drawer.tsx +26 -7
  142. package/src/emphasis/Emphasis.css +5 -4
  143. package/src/expressiveMoneyInput/ExpressiveMoneyInput.css +0 -2
  144. package/src/expressiveMoneyInput/ExpressiveMoneyInput.spec.tsx +229 -0
  145. package/src/expressiveMoneyInput/amountInput/AmountInput.css +0 -1
  146. package/src/expressiveMoneyInput/amountInput/AmountInput.spec.tsx +282 -0
  147. package/src/expressiveMoneyInput/chevron/Chevron.css +0 -1
  148. package/src/expressiveMoneyInput/currencySelector/CurrencySelector.spec.tsx +160 -0
  149. package/src/flowNavigation/FlowNavigation.css +1 -2
  150. package/src/header/Header.css +2 -2
  151. package/src/iconButton/IconButton.css +4 -27
  152. package/src/iconButton/IconButton.story.tsx +1 -0
  153. package/src/inputs/Input.css +5 -5
  154. package/src/inputs/InputGroup.css +2 -3
  155. package/src/inputs/SelectInput.css +13 -14
  156. package/src/inputs/SelectInput.spec.tsx +7 -1
  157. package/src/inputs/TextArea.css +5 -5
  158. package/src/instructionsList/InstructionsList.css +0 -2
  159. package/src/listItem/ListItem.css +8 -22
  160. package/src/logo/Logo.css +0 -2
  161. package/src/main.css +649 -510
  162. package/src/main.less +2 -0
  163. package/src/mocks.ts +7 -0
  164. package/src/modal/Modal.css +6 -68
  165. package/src/modal/Modal.less +6 -76
  166. package/src/modal/Modal.tsx +23 -23
  167. package/src/moneyInput/MoneyInput.css +2 -2
  168. package/src/moneyInput/MoneyInput.spec.tsx +9 -1
  169. package/src/navigationOption/NavigationOption.css +3 -1
  170. package/src/nudge/Nudge.css +1 -1
  171. package/src/overlayHeader/OverlayHeader.css +1 -2
  172. package/src/popover/Popover.css +2 -2
  173. package/src/progress/Progress.css +3 -3
  174. package/src/progressBar/ProgressBar.css +2 -2
  175. package/src/promoCard/PromoCard.css +3 -3
  176. package/src/prompt/InlinePrompt/InlinePrompt.css +3 -39
  177. package/src/provider/theme/ThemeProvider.story.tsx +78 -11
  178. package/src/segmentedControl/SegmentedControl.css +2 -6
  179. package/src/select/Select.css +41 -25
  180. package/src/select/Select.less +25 -0
  181. package/src/select/Select.tsx +6 -1
  182. package/src/sentimentSurface/SentimentSurface.css +424 -0
  183. package/src/sentimentSurface/SentimentSurface.docs.mdx +527 -0
  184. package/src/sentimentSurface/SentimentSurface.less +296 -0
  185. package/src/sentimentSurface/SentimentSurface.spec.tsx +140 -0
  186. package/src/sentimentSurface/SentimentSurface.story.tsx +340 -0
  187. package/src/sentimentSurface/SentimentSurface.tests.story.tsx +123 -0
  188. package/src/sentimentSurface/SentimentSurface.tsx +72 -0
  189. package/src/sentimentSurface/SentimentSurface.types.ts +104 -0
  190. package/src/sentimentSurface/classMap.ts +15 -0
  191. package/src/sentimentSurface/index.ts +8 -0
  192. package/src/slidingPanel/SlidingPanel.css +4 -4
  193. package/src/snackbar/Snackbar.css +4 -4
  194. package/src/snackbar/Snackbar.less +4 -2
  195. package/src/statusIcon/StatusIcon.css +4 -44
  196. package/src/statusIcon/StatusIcon.less +2 -40
  197. package/src/statusIcon/StatusIcon.tsx +10 -1
  198. package/src/stepper/Stepper.css +4 -4
  199. package/src/summary/Summary.css +2 -5
  200. package/src/switch/Switch.css +2 -3
  201. package/src/table/Table.css +5 -13
  202. package/src/tabs/Tabs.css +9 -10
  203. package/src/test-utils/jest.setup.ts +0 -5
  204. package/src/test-utils/window-mock.ts +5 -0
  205. package/src/tile/Tile.css +5 -8
  206. package/src/typeahead/Typeahead.css +1 -2
  207. package/src/typeahead/typeaheadOption/TypeaheadOption.css +4 -1
  208. package/src/typeahead/typeaheadOption/TypeaheadOption.less +6 -0
  209. package/src/upload/Upload.css +1 -1
  210. package/src/uploadInput/uploadButton/UploadButton.css +2 -4
  211. package/src/uploadInput/uploadItem/UploadItem.css +4 -8
package/build/mocks.js CHANGED
@@ -37,7 +37,14 @@ function mockResizeObserver({
37
37
  disconnect: fn()
38
38
  })));
39
39
  }
40
+ function mockRequestAnimationFrame() {
41
+ global.requestAnimationFrame = callback => {
42
+ callback(performance.now());
43
+ return 0;
44
+ };
45
+ }
40
46
 
41
47
  exports.mockMatchMedia = mockMatchMedia;
48
+ exports.mockRequestAnimationFrame = mockRequestAnimationFrame;
42
49
  exports.mockResizeObserver = mockResizeObserver;
43
50
  //# sourceMappingURL=mocks.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mocks.js","sources":["../src/mocks.ts"],"sourcesContent":["type StubGlobal = (name: PropertyKey, value: unknown) => void;\n\ninterface GlobalMockParams {\n fn: <T extends (...args: never[]) => unknown>(implementation?: T) => T;\n stubGlobal?: StubGlobal;\n}\n\nconst defaultStubGlobal: StubGlobal = (name, value) => {\n Object.defineProperty(globalThis, name, {\n value,\n writable: true,\n enumerable: true,\n configurable: true,\n });\n};\n\nexport function mockMatchMedia({ fn, stubGlobal = defaultStubGlobal }: GlobalMockParams) {\n stubGlobal(\n 'matchMedia',\n fn<Window['matchMedia']>((query) => {\n const matches = /^\\(min-width: (\\d+)px\\)$/u.exec(query);\n const minWidth = matches != null ? Number(matches[1]) : undefined;\n return {\n matches: minWidth != null ? window.innerWidth >= minWidth : false,\n media: query,\n onchange: null,\n addListener: fn(),\n removeListener: fn(),\n addEventListener: fn(),\n removeEventListener: fn(),\n dispatchEvent: fn(),\n };\n }),\n );\n}\n\nexport function mockResizeObserver({ fn, stubGlobal = defaultStubGlobal }: GlobalMockParams) {\n stubGlobal(\n 'ResizeObserver',\n fn(\n (): ResizeObserver => ({\n observe: fn(),\n unobserve: fn(),\n disconnect: fn(),\n }),\n ),\n );\n}\n"],"names":["defaultStubGlobal","name","value","Object","defineProperty","globalThis","writable","enumerable","configurable","mockMatchMedia","fn","stubGlobal","query","matches","exec","minWidth","Number","undefined","window","innerWidth","media","onchange","addListener","removeListener","addEventListener","removeEventListener","dispatchEvent","mockResizeObserver","observe","unobserve","disconnect"],"mappings":";;AAOA,MAAMA,iBAAiB,GAAeA,CAACC,IAAI,EAAEC,KAAK,KAAI;AACpDC,EAAAA,MAAM,CAACC,cAAc,CAACC,UAAU,EAAEJ,IAAI,EAAE;IACtCC,KAAK;AACLI,IAAAA,QAAQ,EAAE,IAAI;AACdC,IAAAA,UAAU,EAAE,IAAI;AAChBC,IAAAA,YAAY,EAAE;AACf,GAAA,CAAC;AACJ,CAAC;AAEK,SAAUC,cAAcA,CAAC;EAAEC,EAAE;AAAEC,EAAAA,UAAU,GAAGX;AAAiB,CAAoB,EAAA;AACrFW,EAAAA,UAAU,CACR,YAAY,EACZD,EAAE,CAAwBE,KAAK,IAAI;AACjC,IAAA,MAAMC,OAAO,GAAG,2BAA2B,CAACC,IAAI,CAACF,KAAK,CAAC;AACvD,IAAA,MAAMG,QAAQ,GAAGF,OAAO,IAAI,IAAI,GAAGG,MAAM,CAACH,OAAO,CAAC,CAAC,CAAC,CAAC,GAAGI,SAAS;IACjE,OAAO;MACLJ,OAAO,EAAEE,QAAQ,IAAI,IAAI,GAAGG,MAAM,CAACC,UAAU,IAAIJ,QAAQ,GAAG,KAAK;AACjEK,MAAAA,KAAK,EAAER,KAAK;AACZS,MAAAA,QAAQ,EAAE,IAAI;MACdC,WAAW,EAAEZ,EAAE,EAAE;MACjBa,cAAc,EAAEb,EAAE,EAAE;MACpBc,gBAAgB,EAAEd,EAAE,EAAE;MACtBe,mBAAmB,EAAEf,EAAE,EAAE;MACzBgB,aAAa,EAAEhB,EAAE;KAClB;AACH,EAAA,CAAC,CAAC,CACH;AACH;AAEM,SAAUiB,kBAAkBA,CAAC;EAAEjB,EAAE;AAAEC,EAAAA,UAAU,GAAGX;AAAiB,CAAoB,EAAA;AACzFW,EAAAA,UAAU,CACR,gBAAgB,EAChBD,EAAE,CACA,OAAuB;IACrBkB,OAAO,EAAElB,EAAE,EAAE;IACbmB,SAAS,EAAEnB,EAAE,EAAE;IACfoB,UAAU,EAAEpB,EAAE;GACf,CAAC,CACH,CACF;AACH;;;;;"}
1
+ {"version":3,"file":"mocks.js","sources":["../src/mocks.ts"],"sourcesContent":["type StubGlobal = (name: PropertyKey, value: unknown) => void;\n\ninterface GlobalMockParams {\n fn: <T extends (...args: never[]) => unknown>(implementation?: T) => T;\n stubGlobal?: StubGlobal;\n}\n\nconst defaultStubGlobal: StubGlobal = (name, value) => {\n Object.defineProperty(globalThis, name, {\n value,\n writable: true,\n enumerable: true,\n configurable: true,\n });\n};\n\nexport function mockMatchMedia({ fn, stubGlobal = defaultStubGlobal }: GlobalMockParams) {\n stubGlobal(\n 'matchMedia',\n fn<Window['matchMedia']>((query) => {\n const matches = /^\\(min-width: (\\d+)px\\)$/u.exec(query);\n const minWidth = matches != null ? Number(matches[1]) : undefined;\n return {\n matches: minWidth != null ? window.innerWidth >= minWidth : false,\n media: query,\n onchange: null,\n addListener: fn(),\n removeListener: fn(),\n addEventListener: fn(),\n removeEventListener: fn(),\n dispatchEvent: fn(),\n };\n }),\n );\n}\n\nexport function mockResizeObserver({ fn, stubGlobal = defaultStubGlobal }: GlobalMockParams) {\n stubGlobal(\n 'ResizeObserver',\n fn(\n (): ResizeObserver => ({\n observe: fn(),\n unobserve: fn(),\n disconnect: fn(),\n }),\n ),\n );\n}\n\nexport function mockRequestAnimationFrame() {\n global.requestAnimationFrame = (callback: (time: number) => void): number => {\n callback(performance.now());\n return 0;\n };\n}\n"],"names":["defaultStubGlobal","name","value","Object","defineProperty","globalThis","writable","enumerable","configurable","mockMatchMedia","fn","stubGlobal","query","matches","exec","minWidth","Number","undefined","window","innerWidth","media","onchange","addListener","removeListener","addEventListener","removeEventListener","dispatchEvent","mockResizeObserver","observe","unobserve","disconnect","mockRequestAnimationFrame","global","requestAnimationFrame","callback","performance","now"],"mappings":";;AAOA,MAAMA,iBAAiB,GAAeA,CAACC,IAAI,EAAEC,KAAK,KAAI;AACpDC,EAAAA,MAAM,CAACC,cAAc,CAACC,UAAU,EAAEJ,IAAI,EAAE;IACtCC,KAAK;AACLI,IAAAA,QAAQ,EAAE,IAAI;AACdC,IAAAA,UAAU,EAAE,IAAI;AAChBC,IAAAA,YAAY,EAAE;AACf,GAAA,CAAC;AACJ,CAAC;AAEK,SAAUC,cAAcA,CAAC;EAAEC,EAAE;AAAEC,EAAAA,UAAU,GAAGX;AAAiB,CAAoB,EAAA;AACrFW,EAAAA,UAAU,CACR,YAAY,EACZD,EAAE,CAAwBE,KAAK,IAAI;AACjC,IAAA,MAAMC,OAAO,GAAG,2BAA2B,CAACC,IAAI,CAACF,KAAK,CAAC;AACvD,IAAA,MAAMG,QAAQ,GAAGF,OAAO,IAAI,IAAI,GAAGG,MAAM,CAACH,OAAO,CAAC,CAAC,CAAC,CAAC,GAAGI,SAAS;IACjE,OAAO;MACLJ,OAAO,EAAEE,QAAQ,IAAI,IAAI,GAAGG,MAAM,CAACC,UAAU,IAAIJ,QAAQ,GAAG,KAAK;AACjEK,MAAAA,KAAK,EAAER,KAAK;AACZS,MAAAA,QAAQ,EAAE,IAAI;MACdC,WAAW,EAAEZ,EAAE,EAAE;MACjBa,cAAc,EAAEb,EAAE,EAAE;MACpBc,gBAAgB,EAAEd,EAAE,EAAE;MACtBe,mBAAmB,EAAEf,EAAE,EAAE;MACzBgB,aAAa,EAAEhB,EAAE;KAClB;AACH,EAAA,CAAC,CAAC,CACH;AACH;AAEM,SAAUiB,kBAAkBA,CAAC;EAAEjB,EAAE;AAAEC,EAAAA,UAAU,GAAGX;AAAiB,CAAoB,EAAA;AACzFW,EAAAA,UAAU,CACR,gBAAgB,EAChBD,EAAE,CACA,OAAuB;IACrBkB,OAAO,EAAElB,EAAE,EAAE;IACbmB,SAAS,EAAEnB,EAAE,EAAE;IACfoB,UAAU,EAAEpB,EAAE;GACf,CAAC,CACH,CACF;AACH;SAEgBqB,yBAAyBA,GAAA;AACvCC,EAAAA,MAAM,CAACC,qBAAqB,GAAIC,QAAgC,IAAY;AAC1EA,IAAAA,QAAQ,CAACC,WAAW,CAACC,GAAG,EAAE,CAAC;AAC3B,IAAA,OAAO,CAAC;EACV,CAAC;AACH;;;;;;"}
package/build/mocks.mjs CHANGED
@@ -35,6 +35,12 @@ function mockResizeObserver({
35
35
  disconnect: fn()
36
36
  })));
37
37
  }
38
+ function mockRequestAnimationFrame() {
39
+ global.requestAnimationFrame = callback => {
40
+ callback(performance.now());
41
+ return 0;
42
+ };
43
+ }
38
44
 
39
- export { mockMatchMedia, mockResizeObserver };
45
+ export { mockMatchMedia, mockRequestAnimationFrame, mockResizeObserver };
40
46
  //# sourceMappingURL=mocks.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"mocks.mjs","sources":["../src/mocks.ts"],"sourcesContent":["type StubGlobal = (name: PropertyKey, value: unknown) => void;\n\ninterface GlobalMockParams {\n fn: <T extends (...args: never[]) => unknown>(implementation?: T) => T;\n stubGlobal?: StubGlobal;\n}\n\nconst defaultStubGlobal: StubGlobal = (name, value) => {\n Object.defineProperty(globalThis, name, {\n value,\n writable: true,\n enumerable: true,\n configurable: true,\n });\n};\n\nexport function mockMatchMedia({ fn, stubGlobal = defaultStubGlobal }: GlobalMockParams) {\n stubGlobal(\n 'matchMedia',\n fn<Window['matchMedia']>((query) => {\n const matches = /^\\(min-width: (\\d+)px\\)$/u.exec(query);\n const minWidth = matches != null ? Number(matches[1]) : undefined;\n return {\n matches: minWidth != null ? window.innerWidth >= minWidth : false,\n media: query,\n onchange: null,\n addListener: fn(),\n removeListener: fn(),\n addEventListener: fn(),\n removeEventListener: fn(),\n dispatchEvent: fn(),\n };\n }),\n );\n}\n\nexport function mockResizeObserver({ fn, stubGlobal = defaultStubGlobal }: GlobalMockParams) {\n stubGlobal(\n 'ResizeObserver',\n fn(\n (): ResizeObserver => ({\n observe: fn(),\n unobserve: fn(),\n disconnect: fn(),\n }),\n ),\n );\n}\n"],"names":["defaultStubGlobal","name","value","Object","defineProperty","globalThis","writable","enumerable","configurable","mockMatchMedia","fn","stubGlobal","query","matches","exec","minWidth","Number","undefined","window","innerWidth","media","onchange","addListener","removeListener","addEventListener","removeEventListener","dispatchEvent","mockResizeObserver","observe","unobserve","disconnect"],"mappings":"AAOA,MAAMA,iBAAiB,GAAeA,CAACC,IAAI,EAAEC,KAAK,KAAI;AACpDC,EAAAA,MAAM,CAACC,cAAc,CAACC,UAAU,EAAEJ,IAAI,EAAE;IACtCC,KAAK;AACLI,IAAAA,QAAQ,EAAE,IAAI;AACdC,IAAAA,UAAU,EAAE,IAAI;AAChBC,IAAAA,YAAY,EAAE;AACf,GAAA,CAAC;AACJ,CAAC;AAEK,SAAUC,cAAcA,CAAC;EAAEC,EAAE;AAAEC,EAAAA,UAAU,GAAGX;AAAiB,CAAoB,EAAA;AACrFW,EAAAA,UAAU,CACR,YAAY,EACZD,EAAE,CAAwBE,KAAK,IAAI;AACjC,IAAA,MAAMC,OAAO,GAAG,2BAA2B,CAACC,IAAI,CAACF,KAAK,CAAC;AACvD,IAAA,MAAMG,QAAQ,GAAGF,OAAO,IAAI,IAAI,GAAGG,MAAM,CAACH,OAAO,CAAC,CAAC,CAAC,CAAC,GAAGI,SAAS;IACjE,OAAO;MACLJ,OAAO,EAAEE,QAAQ,IAAI,IAAI,GAAGG,MAAM,CAACC,UAAU,IAAIJ,QAAQ,GAAG,KAAK;AACjEK,MAAAA,KAAK,EAAER,KAAK;AACZS,MAAAA,QAAQ,EAAE,IAAI;MACdC,WAAW,EAAEZ,EAAE,EAAE;MACjBa,cAAc,EAAEb,EAAE,EAAE;MACpBc,gBAAgB,EAAEd,EAAE,EAAE;MACtBe,mBAAmB,EAAEf,EAAE,EAAE;MACzBgB,aAAa,EAAEhB,EAAE;KAClB;AACH,EAAA,CAAC,CAAC,CACH;AACH;AAEM,SAAUiB,kBAAkBA,CAAC;EAAEjB,EAAE;AAAEC,EAAAA,UAAU,GAAGX;AAAiB,CAAoB,EAAA;AACzFW,EAAAA,UAAU,CACR,gBAAgB,EAChBD,EAAE,CACA,OAAuB;IACrBkB,OAAO,EAAElB,EAAE,EAAE;IACbmB,SAAS,EAAEnB,EAAE,EAAE;IACfoB,UAAU,EAAEpB,EAAE;GACf,CAAC,CACH,CACF;AACH;;;;"}
1
+ {"version":3,"file":"mocks.mjs","sources":["../src/mocks.ts"],"sourcesContent":["type StubGlobal = (name: PropertyKey, value: unknown) => void;\n\ninterface GlobalMockParams {\n fn: <T extends (...args: never[]) => unknown>(implementation?: T) => T;\n stubGlobal?: StubGlobal;\n}\n\nconst defaultStubGlobal: StubGlobal = (name, value) => {\n Object.defineProperty(globalThis, name, {\n value,\n writable: true,\n enumerable: true,\n configurable: true,\n });\n};\n\nexport function mockMatchMedia({ fn, stubGlobal = defaultStubGlobal }: GlobalMockParams) {\n stubGlobal(\n 'matchMedia',\n fn<Window['matchMedia']>((query) => {\n const matches = /^\\(min-width: (\\d+)px\\)$/u.exec(query);\n const minWidth = matches != null ? Number(matches[1]) : undefined;\n return {\n matches: minWidth != null ? window.innerWidth >= minWidth : false,\n media: query,\n onchange: null,\n addListener: fn(),\n removeListener: fn(),\n addEventListener: fn(),\n removeEventListener: fn(),\n dispatchEvent: fn(),\n };\n }),\n );\n}\n\nexport function mockResizeObserver({ fn, stubGlobal = defaultStubGlobal }: GlobalMockParams) {\n stubGlobal(\n 'ResizeObserver',\n fn(\n (): ResizeObserver => ({\n observe: fn(),\n unobserve: fn(),\n disconnect: fn(),\n }),\n ),\n );\n}\n\nexport function mockRequestAnimationFrame() {\n global.requestAnimationFrame = (callback: (time: number) => void): number => {\n callback(performance.now());\n return 0;\n };\n}\n"],"names":["defaultStubGlobal","name","value","Object","defineProperty","globalThis","writable","enumerable","configurable","mockMatchMedia","fn","stubGlobal","query","matches","exec","minWidth","Number","undefined","window","innerWidth","media","onchange","addListener","removeListener","addEventListener","removeEventListener","dispatchEvent","mockResizeObserver","observe","unobserve","disconnect","mockRequestAnimationFrame","global","requestAnimationFrame","callback","performance","now"],"mappings":"AAOA,MAAMA,iBAAiB,GAAeA,CAACC,IAAI,EAAEC,KAAK,KAAI;AACpDC,EAAAA,MAAM,CAACC,cAAc,CAACC,UAAU,EAAEJ,IAAI,EAAE;IACtCC,KAAK;AACLI,IAAAA,QAAQ,EAAE,IAAI;AACdC,IAAAA,UAAU,EAAE,IAAI;AAChBC,IAAAA,YAAY,EAAE;AACf,GAAA,CAAC;AACJ,CAAC;AAEK,SAAUC,cAAcA,CAAC;EAAEC,EAAE;AAAEC,EAAAA,UAAU,GAAGX;AAAiB,CAAoB,EAAA;AACrFW,EAAAA,UAAU,CACR,YAAY,EACZD,EAAE,CAAwBE,KAAK,IAAI;AACjC,IAAA,MAAMC,OAAO,GAAG,2BAA2B,CAACC,IAAI,CAACF,KAAK,CAAC;AACvD,IAAA,MAAMG,QAAQ,GAAGF,OAAO,IAAI,IAAI,GAAGG,MAAM,CAACH,OAAO,CAAC,CAAC,CAAC,CAAC,GAAGI,SAAS;IACjE,OAAO;MACLJ,OAAO,EAAEE,QAAQ,IAAI,IAAI,GAAGG,MAAM,CAACC,UAAU,IAAIJ,QAAQ,GAAG,KAAK;AACjEK,MAAAA,KAAK,EAAER,KAAK;AACZS,MAAAA,QAAQ,EAAE,IAAI;MACdC,WAAW,EAAEZ,EAAE,EAAE;MACjBa,cAAc,EAAEb,EAAE,EAAE;MACpBc,gBAAgB,EAAEd,EAAE,EAAE;MACtBe,mBAAmB,EAAEf,EAAE,EAAE;MACzBgB,aAAa,EAAEhB,EAAE;KAClB;AACH,EAAA,CAAC,CAAC,CACH;AACH;AAEM,SAAUiB,kBAAkBA,CAAC;EAAEjB,EAAE;AAAEC,EAAAA,UAAU,GAAGX;AAAiB,CAAoB,EAAA;AACzFW,EAAAA,UAAU,CACR,gBAAgB,EAChBD,EAAE,CACA,OAAuB;IACrBkB,OAAO,EAAElB,EAAE,EAAE;IACbmB,SAAS,EAAEnB,EAAE,EAAE;IACfoB,UAAU,EAAEpB,EAAE;GACf,CAAC,CACH,CACF;AACH;SAEgBqB,yBAAyBA,GAAA;AACvCC,EAAAA,MAAM,CAACC,qBAAqB,GAAIC,QAAgC,IAAY;AAC1EA,IAAAA,QAAQ,CAACC,WAAW,CAACC,GAAG,EAAE,CAAC;AAC3B,IAAA,OAAO,CAAC;EACV,CAAC;AACH;;;;"}
@@ -5,6 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var clsx = require('clsx');
6
6
  var React = require('react');
7
7
  var reactTransitionGroup = require('react-transition-group');
8
+ var reactIntl = require('react-intl');
8
9
  require('../common/theme.js');
9
10
  require('../common/direction.js');
10
11
  require('../common/propsValues/control.js');
@@ -24,7 +25,9 @@ require('../common/propsValues/variant.js');
24
25
  var scroll = require('../common/propsValues/scroll.js');
25
26
  require('../common/propsValues/markdownNodeType.js');
26
27
  require('../common/fileType.js');
27
- var CloseButton = require('../common/closeButton/CloseButton.js');
28
+ var icons = require('@transferwise/icons');
29
+ var CloseButton_messages = require('../common/closeButton/CloseButton.messages.js');
30
+ var jsxRuntime = require('react/jsx-runtime');
28
31
  require('@transferwise/neptune-validation');
29
32
  require('../provider/direction/DirectionProvider.js');
30
33
  var useLayout = require('../common/hooks/useLayout/useLayout.js');
@@ -32,7 +35,7 @@ var Dimmer = require('../dimmer/Dimmer.js');
32
35
  var Drawer = require('../drawer/Drawer.js');
33
36
  var OverlayIdProvider = require('../provider/overlay/OverlayIdProvider.js');
34
37
  var Title = require('../title/Title.js');
35
- var jsxRuntime = require('react/jsx-runtime');
38
+ var IconButton = require('../iconButton/IconButton.js');
36
39
 
37
40
  const TRANSITION_DURATION_IN_MILLISECONDS = 150;
38
41
  const Modal = ({
@@ -49,13 +52,10 @@ const Modal = ({
49
52
  disableDimmerClickToClose = false,
50
53
  ...otherProps
51
54
  }) => {
52
- const checkSpecialClasses = classToCheck => className?.split(' ').includes(classToCheck);
55
+ const intl = reactIntl.useIntl();
53
56
  const {
54
57
  isMedium
55
58
  } = useLayout.useLayout();
56
- // These should be replaced with props in breaking change.
57
- const isCompact = checkSpecialClasses('compact');
58
- const noDivider = checkSpecialClasses('no-divider');
59
59
  const contentReference = React.useRef(null);
60
60
  const titleId = React.useId();
61
61
  const overlayId = React.useContext(OverlayIdProvider.OverlayIdContext);
@@ -96,32 +96,31 @@ const Modal = ({
96
96
  [`tw-modal-${size$1}`]: size$1
97
97
  }),
98
98
  children: /*#__PURE__*/jsxRuntime.jsxs("div", {
99
- className: clsx.clsx('tw-modal-content', 'd-flex', 'flex-column', 'justify-content-between', {
100
- 'tw-modal-compact': isCompact,
101
- 'tw-modal-no-title': !title
102
- }),
99
+ className: clsx.clsx('tw-modal-content', 'd-flex', 'flex-column', 'justify-content-between'),
103
100
  children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
104
- className: clsx.clsx('tw-modal-header', 'd-flex', 'align-items-center', 'justify-content-between', 'flex-wrap', {
105
- 'modal--withoutborder': !title || noDivider
106
- }),
107
- children: [/*#__PURE__*/jsxRuntime.jsx(Title.default, {
101
+ className: clsx.clsx('tw-modal-header', 'd-flex', 'align-items-center', title ? 'justify-content-between' : 'justify-content-end', 'flex-wrap'),
102
+ children: [title && /*#__PURE__*/jsxRuntime.jsx(Title.default, {
108
103
  id: titleId,
109
- type: typography.Typography.TITLE_BODY,
104
+ type: typography.Typography.TITLE_SUBSECTION,
110
105
  className: "tw-modal-title",
111
106
  children: title
112
- }), /*#__PURE__*/jsxRuntime.jsx(CloseButton.CloseButton, {
113
- onClick: onClose
107
+ }), /*#__PURE__*/jsxRuntime.jsx(IconButton.default, {
108
+ size: 40,
109
+ priority: "tertiary",
110
+ "aria-label": intl.formatMessage(CloseButton_messages.default.ariaLabel),
111
+ onClick: onClose,
112
+ children: /*#__PURE__*/jsxRuntime.jsx(icons.Cross, {})
114
113
  })]
115
114
  }), /*#__PURE__*/jsxRuntime.jsx("div", {
116
115
  className: clsx.clsx('tw-modal-body', {
117
116
  'tw-modal-body--scrollable': scroll$1 === scroll.Scroll.CONTENT
118
117
  }),
119
118
  children: body
120
- }), footer && /*#__PURE__*/jsxRuntime.jsx("div", {
121
- className: clsx.clsx('tw-modal-footer', 'd-flex', 'align-items-center', 'flex-wrap', {
122
- 'modal--withoutborder': noDivider
123
- }),
119
+ }), footer ? /*#__PURE__*/jsxRuntime.jsx("div", {
120
+ className: clsx.clsx('tw-modal-footer', 'd-flex', 'align-items-center', 'flex-wrap'),
124
121
  children: footer
122
+ }) : /*#__PURE__*/jsxRuntime.jsx("div", {
123
+ className: "m-t-3"
125
124
  })]
126
125
  })
127
126
  })
@@ -1 +1 @@
1
- {"version":3,"file":"Modal.js","sources":["../../src/modal/Modal.tsx"],"sourcesContent":["import { clsx } from 'clsx';\nimport { ReactNode, useContext, useId, useRef } from 'react';\nimport { CSSTransition } from 'react-transition-group';\n\nimport {\n Size,\n Position,\n PositionTop,\n PositionCenter,\n Scroll,\n CommonProps,\n SizeSmall,\n SizeMedium,\n SizeLarge,\n SizeExtraLarge,\n ScrollContent,\n ScrollViewport,\n Typography,\n} from '../common';\nimport { CloseButton } from '../common/closeButton';\nimport { useLayout } from '../common/hooks';\nimport Dimmer from '../dimmer';\nimport Drawer from '../drawer';\nimport { OverlayIdContext } from '../provider/overlay/OverlayIdProvider';\nimport Title from '../title/Title';\n\nconst TRANSITION_DURATION_IN_MILLISECONDS = 150;\n\nexport type ModalProps = CommonProps & {\n title?: ReactNode;\n body: ReactNode;\n footer?: ReactNode;\n size?: SizeSmall | SizeMedium | SizeLarge | SizeExtraLarge;\n onClose: () => void;\n onUnmount?: () => void;\n open: boolean;\n scroll?: ScrollContent | ScrollViewport;\n position?: PositionTop | PositionCenter;\n disableDimmerClickToClose?: boolean;\n};\n\nconst Modal = ({\n title = null,\n body,\n footer = null,\n onClose,\n onUnmount,\n className,\n open,\n size = Size.MEDIUM,\n scroll = Scroll.VIEWPORT,\n position = Position.CENTER,\n disableDimmerClickToClose = false,\n ...otherProps\n}: ModalProps) => {\n const checkSpecialClasses = (classToCheck: string) =>\n className?.split(' ').includes(classToCheck);\n const { isMedium } = useLayout();\n\n // These should be replaced with props in breaking change.\n const isCompact = checkSpecialClasses('compact');\n const noDivider = checkSpecialClasses('no-divider');\n\n const contentReference = useRef<HTMLDivElement>(null);\n const titleId = useId();\n\n const overlayId = useContext(OverlayIdContext);\n\n return !isMedium ? (\n <Drawer\n open={open}\n headerTitle={title}\n footerContent={footer}\n position={Position.BOTTOM}\n onClose={onClose}\n onUnmount={onUnmount}\n >\n {body}\n </Drawer>\n ) : (\n <Dimmer\n open={open}\n scrollable={scroll === Scroll.VIEWPORT}\n contentPosition={position}\n disableClickToClose={disableDimmerClickToClose}\n onClose={onClose}\n onExited={onUnmount}\n >\n <CSSTransition\n nodeRef={contentReference}\n appear\n in={open}\n classNames={{ enterDone: 'in' }}\n timeout={TRANSITION_DURATION_IN_MILLISECONDS}\n unmountOnExit\n >\n <div\n ref={contentReference}\n className={clsx(\n 'tw-modal',\n 'd-flex',\n 'fade',\n 'outline-none',\n scroll === Scroll.CONTENT && 'tw-modal--scrollable',\n className,\n )}\n {...otherProps}\n >\n <div\n id={overlayId}\n role=\"dialog\"\n aria-modal\n aria-labelledby={titleId}\n className={clsx('tw-modal-dialog', 'd-flex', {\n [`tw-modal-${size}`]: size,\n })}\n >\n <div\n className={clsx(\n 'tw-modal-content',\n 'd-flex',\n 'flex-column',\n 'justify-content-between',\n {\n 'tw-modal-compact': isCompact,\n 'tw-modal-no-title': !title,\n },\n )}\n >\n <div\n className={clsx(\n 'tw-modal-header',\n 'd-flex',\n 'align-items-center',\n 'justify-content-between',\n 'flex-wrap',\n {\n 'modal--withoutborder': !title || noDivider,\n },\n )}\n >\n <Title id={titleId} type={Typography.TITLE_BODY} className=\"tw-modal-title\">\n {title}\n </Title>\n <CloseButton onClick={onClose} />\n </div>\n <div\n className={clsx('tw-modal-body', {\n 'tw-modal-body--scrollable': scroll === Scroll.CONTENT,\n })}\n >\n {body}\n </div>\n {footer && (\n <div\n className={clsx('tw-modal-footer', 'd-flex', 'align-items-center', 'flex-wrap', {\n 'modal--withoutborder': noDivider,\n })}\n >\n {footer}\n </div>\n )}\n </div>\n </div>\n </div>\n </CSSTransition>\n </Dimmer>\n );\n};\n\nexport default Modal;\n"],"names":["TRANSITION_DURATION_IN_MILLISECONDS","Modal","title","body","footer","onClose","onUnmount","className","open","size","Size","MEDIUM","scroll","Scroll","VIEWPORT","position","Position","CENTER","disableDimmerClickToClose","otherProps","checkSpecialClasses","classToCheck","split","includes","isMedium","useLayout","isCompact","noDivider","contentReference","useRef","titleId","useId","overlayId","useContext","OverlayIdContext","_jsx","Drawer","headerTitle","footerContent","BOTTOM","children","Dimmer","scrollable","contentPosition","disableClickToClose","onExited","CSSTransition","nodeRef","appear","in","classNames","enterDone","timeout","unmountOnExit","ref","clsx","CONTENT","id","role","_jsxs","Title","type","Typography","TITLE_BODY","CloseButton","onClick"],"mappings":"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"}
1
+ {"version":3,"file":"Modal.js","sources":["../../src/modal/Modal.tsx"],"sourcesContent":["import { clsx } from 'clsx';\nimport { ReactNode, useContext, useId, useRef } from 'react';\nimport { CSSTransition } from 'react-transition-group';\nimport { useIntl } from 'react-intl';\n\nimport {\n Size,\n Position,\n PositionTop,\n PositionCenter,\n Scroll,\n CommonProps,\n SizeSmall,\n SizeMedium,\n SizeLarge,\n SizeExtraLarge,\n ScrollContent,\n ScrollViewport,\n Typography,\n} from '../common';\nimport { useLayout } from '../common/hooks';\nimport Dimmer from '../dimmer';\nimport Drawer from '../drawer';\nimport { OverlayIdContext } from '../provider/overlay/OverlayIdProvider';\nimport Title from '../title/Title';\nimport { Cross } from '@transferwise/icons';\nimport IconButton from '../iconButton';\nimport closeBtnMessages from '../common/closeButton/CloseButton.messages';\n\nconst TRANSITION_DURATION_IN_MILLISECONDS = 150;\n\nexport type ModalProps = CommonProps & {\n title?: ReactNode;\n body: ReactNode;\n footer?: ReactNode;\n size?: SizeSmall | SizeMedium | SizeLarge | SizeExtraLarge;\n onClose: () => void;\n onUnmount?: () => void;\n open: boolean;\n scroll?: ScrollContent | ScrollViewport;\n position?: PositionTop | PositionCenter;\n disableDimmerClickToClose?: boolean;\n};\n\nconst Modal = ({\n title = null,\n body,\n footer = null,\n onClose,\n onUnmount,\n className,\n open,\n size = Size.MEDIUM,\n scroll = Scroll.VIEWPORT,\n position = Position.CENTER,\n disableDimmerClickToClose = false,\n ...otherProps\n}: ModalProps) => {\n const intl = useIntl();\n const { isMedium } = useLayout();\n\n const contentReference = useRef<HTMLDivElement>(null);\n const titleId = useId();\n\n const overlayId = useContext(OverlayIdContext);\n\n return !isMedium ? (\n <Drawer\n open={open}\n headerTitle={title}\n footerContent={footer}\n position={Position.BOTTOM}\n onClose={onClose}\n onUnmount={onUnmount}\n >\n {body}\n </Drawer>\n ) : (\n <Dimmer\n open={open}\n scrollable={scroll === Scroll.VIEWPORT}\n contentPosition={position}\n disableClickToClose={disableDimmerClickToClose}\n onClose={onClose}\n onExited={onUnmount}\n >\n <CSSTransition\n nodeRef={contentReference}\n appear\n in={open}\n classNames={{ enterDone: 'in' }}\n timeout={TRANSITION_DURATION_IN_MILLISECONDS}\n unmountOnExit\n >\n <div\n ref={contentReference}\n className={clsx(\n 'tw-modal',\n 'd-flex',\n 'fade',\n 'outline-none',\n scroll === Scroll.CONTENT && 'tw-modal--scrollable',\n className,\n )}\n {...otherProps}\n >\n <div\n id={overlayId}\n role=\"dialog\"\n aria-modal\n aria-labelledby={titleId}\n className={clsx('tw-modal-dialog', 'd-flex', {\n [`tw-modal-${size}`]: size,\n })}\n >\n <div\n className={clsx(\n 'tw-modal-content',\n 'd-flex',\n 'flex-column',\n 'justify-content-between',\n )}\n >\n <div\n className={clsx(\n 'tw-modal-header',\n 'd-flex',\n 'align-items-center',\n title ? 'justify-content-between' : 'justify-content-end',\n 'flex-wrap',\n )}\n >\n {title && (\n <Title id={titleId} type={Typography.TITLE_SUBSECTION} className=\"tw-modal-title\">\n {title}\n </Title>\n )}\n <IconButton\n size={40}\n priority=\"tertiary\"\n aria-label={intl.formatMessage(closeBtnMessages.ariaLabel)}\n onClick={onClose}\n >\n <Cross />\n </IconButton>\n </div>\n <div\n className={clsx('tw-modal-body', {\n 'tw-modal-body--scrollable': scroll === Scroll.CONTENT,\n })}\n >\n {body}\n </div>\n {footer ? (\n <div\n className={clsx('tw-modal-footer', 'd-flex', 'align-items-center', 'flex-wrap')}\n >\n {footer}\n </div>\n ) : (\n <div className=\"m-t-3\" />\n )}\n </div>\n </div>\n </div>\n </CSSTransition>\n </Dimmer>\n );\n};\n\nexport default Modal;\n"],"names":["TRANSITION_DURATION_IN_MILLISECONDS","Modal","title","body","footer","onClose","onUnmount","className","open","size","Size","MEDIUM","scroll","Scroll","VIEWPORT","position","Position","CENTER","disableDimmerClickToClose","otherProps","intl","useIntl","isMedium","useLayout","contentReference","useRef","titleId","useId","overlayId","useContext","OverlayIdContext","_jsx","Drawer","headerTitle","footerContent","BOTTOM","children","Dimmer","scrollable","contentPosition","disableClickToClose","onExited","CSSTransition","nodeRef","appear","in","classNames","enterDone","timeout","unmountOnExit","ref","clsx","CONTENT","id","role","_jsxs","Title","type","Typography","TITLE_SUBSECTION","IconButton","priority","formatMessage","closeBtnMessages","ariaLabel","onClick","Cross"],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { clsx } from 'clsx';
2
2
  import { useRef, useId, useContext } from 'react';
3
3
  import { CSSTransition } from 'react-transition-group';
4
+ import { useIntl } from 'react-intl';
4
5
  import '../common/theme.mjs';
5
6
  import '../common/direction.mjs';
6
7
  import '../common/propsValues/control.mjs';
@@ -20,7 +21,9 @@ import '../common/propsValues/variant.mjs';
20
21
  import { Scroll } from '../common/propsValues/scroll.mjs';
21
22
  import '../common/propsValues/markdownNodeType.mjs';
22
23
  import '../common/fileType.mjs';
23
- import { CloseButton } from '../common/closeButton/CloseButton.mjs';
24
+ import { Cross } from '@transferwise/icons';
25
+ import closeBtnMessages from '../common/closeButton/CloseButton.messages.mjs';
26
+ import { jsx, jsxs } from 'react/jsx-runtime';
24
27
  import '@transferwise/neptune-validation';
25
28
  import '../provider/direction/DirectionProvider.mjs';
26
29
  import { useLayout } from '../common/hooks/useLayout/useLayout.mjs';
@@ -28,7 +31,7 @@ import Dimmer from '../dimmer/Dimmer.mjs';
28
31
  import Drawer from '../drawer/Drawer.mjs';
29
32
  import { OverlayIdContext } from '../provider/overlay/OverlayIdProvider.mjs';
30
33
  import Title from '../title/Title.mjs';
31
- import { jsx, jsxs } from 'react/jsx-runtime';
34
+ import IconButton from '../iconButton/IconButton.mjs';
32
35
 
33
36
  const TRANSITION_DURATION_IN_MILLISECONDS = 150;
34
37
  const Modal = ({
@@ -45,13 +48,10 @@ const Modal = ({
45
48
  disableDimmerClickToClose = false,
46
49
  ...otherProps
47
50
  }) => {
48
- const checkSpecialClasses = classToCheck => className?.split(' ').includes(classToCheck);
51
+ const intl = useIntl();
49
52
  const {
50
53
  isMedium
51
54
  } = useLayout();
52
- // These should be replaced with props in breaking change.
53
- const isCompact = checkSpecialClasses('compact');
54
- const noDivider = checkSpecialClasses('no-divider');
55
55
  const contentReference = useRef(null);
56
56
  const titleId = useId();
57
57
  const overlayId = useContext(OverlayIdContext);
@@ -92,32 +92,31 @@ const Modal = ({
92
92
  [`tw-modal-${size}`]: size
93
93
  }),
94
94
  children: /*#__PURE__*/jsxs("div", {
95
- className: clsx('tw-modal-content', 'd-flex', 'flex-column', 'justify-content-between', {
96
- 'tw-modal-compact': isCompact,
97
- 'tw-modal-no-title': !title
98
- }),
95
+ className: clsx('tw-modal-content', 'd-flex', 'flex-column', 'justify-content-between'),
99
96
  children: [/*#__PURE__*/jsxs("div", {
100
- className: clsx('tw-modal-header', 'd-flex', 'align-items-center', 'justify-content-between', 'flex-wrap', {
101
- 'modal--withoutborder': !title || noDivider
102
- }),
103
- children: [/*#__PURE__*/jsx(Title, {
97
+ className: clsx('tw-modal-header', 'd-flex', 'align-items-center', title ? 'justify-content-between' : 'justify-content-end', 'flex-wrap'),
98
+ children: [title && /*#__PURE__*/jsx(Title, {
104
99
  id: titleId,
105
- type: Typography.TITLE_BODY,
100
+ type: Typography.TITLE_SUBSECTION,
106
101
  className: "tw-modal-title",
107
102
  children: title
108
- }), /*#__PURE__*/jsx(CloseButton, {
109
- onClick: onClose
103
+ }), /*#__PURE__*/jsx(IconButton, {
104
+ size: 40,
105
+ priority: "tertiary",
106
+ "aria-label": intl.formatMessage(closeBtnMessages.ariaLabel),
107
+ onClick: onClose,
108
+ children: /*#__PURE__*/jsx(Cross, {})
110
109
  })]
111
110
  }), /*#__PURE__*/jsx("div", {
112
111
  className: clsx('tw-modal-body', {
113
112
  'tw-modal-body--scrollable': scroll === Scroll.CONTENT
114
113
  }),
115
114
  children: body
116
- }), footer && /*#__PURE__*/jsx("div", {
117
- className: clsx('tw-modal-footer', 'd-flex', 'align-items-center', 'flex-wrap', {
118
- 'modal--withoutborder': noDivider
119
- }),
115
+ }), footer ? /*#__PURE__*/jsx("div", {
116
+ className: clsx('tw-modal-footer', 'd-flex', 'align-items-center', 'flex-wrap'),
120
117
  children: footer
118
+ }) : /*#__PURE__*/jsx("div", {
119
+ className: "m-t-3"
121
120
  })]
122
121
  })
123
122
  })
@@ -1 +1 @@
1
- {"version":3,"file":"Modal.mjs","sources":["../../src/modal/Modal.tsx"],"sourcesContent":["import { clsx } from 'clsx';\nimport { ReactNode, useContext, useId, useRef } from 'react';\nimport { CSSTransition } from 'react-transition-group';\n\nimport {\n Size,\n Position,\n PositionTop,\n PositionCenter,\n Scroll,\n CommonProps,\n SizeSmall,\n SizeMedium,\n SizeLarge,\n SizeExtraLarge,\n ScrollContent,\n ScrollViewport,\n Typography,\n} from '../common';\nimport { CloseButton } from '../common/closeButton';\nimport { useLayout } from '../common/hooks';\nimport Dimmer from '../dimmer';\nimport Drawer from '../drawer';\nimport { OverlayIdContext } from '../provider/overlay/OverlayIdProvider';\nimport Title from '../title/Title';\n\nconst TRANSITION_DURATION_IN_MILLISECONDS = 150;\n\nexport type ModalProps = CommonProps & {\n title?: ReactNode;\n body: ReactNode;\n footer?: ReactNode;\n size?: SizeSmall | SizeMedium | SizeLarge | SizeExtraLarge;\n onClose: () => void;\n onUnmount?: () => void;\n open: boolean;\n scroll?: ScrollContent | ScrollViewport;\n position?: PositionTop | PositionCenter;\n disableDimmerClickToClose?: boolean;\n};\n\nconst Modal = ({\n title = null,\n body,\n footer = null,\n onClose,\n onUnmount,\n className,\n open,\n size = Size.MEDIUM,\n scroll = Scroll.VIEWPORT,\n position = Position.CENTER,\n disableDimmerClickToClose = false,\n ...otherProps\n}: ModalProps) => {\n const checkSpecialClasses = (classToCheck: string) =>\n className?.split(' ').includes(classToCheck);\n const { isMedium } = useLayout();\n\n // These should be replaced with props in breaking change.\n const isCompact = checkSpecialClasses('compact');\n const noDivider = checkSpecialClasses('no-divider');\n\n const contentReference = useRef<HTMLDivElement>(null);\n const titleId = useId();\n\n const overlayId = useContext(OverlayIdContext);\n\n return !isMedium ? (\n <Drawer\n open={open}\n headerTitle={title}\n footerContent={footer}\n position={Position.BOTTOM}\n onClose={onClose}\n onUnmount={onUnmount}\n >\n {body}\n </Drawer>\n ) : (\n <Dimmer\n open={open}\n scrollable={scroll === Scroll.VIEWPORT}\n contentPosition={position}\n disableClickToClose={disableDimmerClickToClose}\n onClose={onClose}\n onExited={onUnmount}\n >\n <CSSTransition\n nodeRef={contentReference}\n appear\n in={open}\n classNames={{ enterDone: 'in' }}\n timeout={TRANSITION_DURATION_IN_MILLISECONDS}\n unmountOnExit\n >\n <div\n ref={contentReference}\n className={clsx(\n 'tw-modal',\n 'd-flex',\n 'fade',\n 'outline-none',\n scroll === Scroll.CONTENT && 'tw-modal--scrollable',\n className,\n )}\n {...otherProps}\n >\n <div\n id={overlayId}\n role=\"dialog\"\n aria-modal\n aria-labelledby={titleId}\n className={clsx('tw-modal-dialog', 'd-flex', {\n [`tw-modal-${size}`]: size,\n })}\n >\n <div\n className={clsx(\n 'tw-modal-content',\n 'd-flex',\n 'flex-column',\n 'justify-content-between',\n {\n 'tw-modal-compact': isCompact,\n 'tw-modal-no-title': !title,\n },\n )}\n >\n <div\n className={clsx(\n 'tw-modal-header',\n 'd-flex',\n 'align-items-center',\n 'justify-content-between',\n 'flex-wrap',\n {\n 'modal--withoutborder': !title || noDivider,\n },\n )}\n >\n <Title id={titleId} type={Typography.TITLE_BODY} className=\"tw-modal-title\">\n {title}\n </Title>\n <CloseButton onClick={onClose} />\n </div>\n <div\n className={clsx('tw-modal-body', {\n 'tw-modal-body--scrollable': scroll === Scroll.CONTENT,\n })}\n >\n {body}\n </div>\n {footer && (\n <div\n className={clsx('tw-modal-footer', 'd-flex', 'align-items-center', 'flex-wrap', {\n 'modal--withoutborder': noDivider,\n })}\n >\n {footer}\n </div>\n )}\n </div>\n </div>\n </div>\n </CSSTransition>\n </Dimmer>\n );\n};\n\nexport default Modal;\n"],"names":["TRANSITION_DURATION_IN_MILLISECONDS","Modal","title","body","footer","onClose","onUnmount","className","open","size","Size","MEDIUM","scroll","Scroll","VIEWPORT","position","Position","CENTER","disableDimmerClickToClose","otherProps","checkSpecialClasses","classToCheck","split","includes","isMedium","useLayout","isCompact","noDivider","contentReference","useRef","titleId","useId","overlayId","useContext","OverlayIdContext","_jsx","Drawer","headerTitle","footerContent","BOTTOM","children","Dimmer","scrollable","contentPosition","disableClickToClose","onExited","CSSTransition","nodeRef","appear","in","classNames","enterDone","timeout","unmountOnExit","ref","clsx","CONTENT","id","role","_jsxs","Title","type","Typography","TITLE_BODY","CloseButton","onClick"],"mappings":"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"}
1
+ {"version":3,"file":"Modal.mjs","sources":["../../src/modal/Modal.tsx"],"sourcesContent":["import { clsx } from 'clsx';\nimport { ReactNode, useContext, useId, useRef } from 'react';\nimport { CSSTransition } from 'react-transition-group';\nimport { useIntl } from 'react-intl';\n\nimport {\n Size,\n Position,\n PositionTop,\n PositionCenter,\n Scroll,\n CommonProps,\n SizeSmall,\n SizeMedium,\n SizeLarge,\n SizeExtraLarge,\n ScrollContent,\n ScrollViewport,\n Typography,\n} from '../common';\nimport { useLayout } from '../common/hooks';\nimport Dimmer from '../dimmer';\nimport Drawer from '../drawer';\nimport { OverlayIdContext } from '../provider/overlay/OverlayIdProvider';\nimport Title from '../title/Title';\nimport { Cross } from '@transferwise/icons';\nimport IconButton from '../iconButton';\nimport closeBtnMessages from '../common/closeButton/CloseButton.messages';\n\nconst TRANSITION_DURATION_IN_MILLISECONDS = 150;\n\nexport type ModalProps = CommonProps & {\n title?: ReactNode;\n body: ReactNode;\n footer?: ReactNode;\n size?: SizeSmall | SizeMedium | SizeLarge | SizeExtraLarge;\n onClose: () => void;\n onUnmount?: () => void;\n open: boolean;\n scroll?: ScrollContent | ScrollViewport;\n position?: PositionTop | PositionCenter;\n disableDimmerClickToClose?: boolean;\n};\n\nconst Modal = ({\n title = null,\n body,\n footer = null,\n onClose,\n onUnmount,\n className,\n open,\n size = Size.MEDIUM,\n scroll = Scroll.VIEWPORT,\n position = Position.CENTER,\n disableDimmerClickToClose = false,\n ...otherProps\n}: ModalProps) => {\n const intl = useIntl();\n const { isMedium } = useLayout();\n\n const contentReference = useRef<HTMLDivElement>(null);\n const titleId = useId();\n\n const overlayId = useContext(OverlayIdContext);\n\n return !isMedium ? (\n <Drawer\n open={open}\n headerTitle={title}\n footerContent={footer}\n position={Position.BOTTOM}\n onClose={onClose}\n onUnmount={onUnmount}\n >\n {body}\n </Drawer>\n ) : (\n <Dimmer\n open={open}\n scrollable={scroll === Scroll.VIEWPORT}\n contentPosition={position}\n disableClickToClose={disableDimmerClickToClose}\n onClose={onClose}\n onExited={onUnmount}\n >\n <CSSTransition\n nodeRef={contentReference}\n appear\n in={open}\n classNames={{ enterDone: 'in' }}\n timeout={TRANSITION_DURATION_IN_MILLISECONDS}\n unmountOnExit\n >\n <div\n ref={contentReference}\n className={clsx(\n 'tw-modal',\n 'd-flex',\n 'fade',\n 'outline-none',\n scroll === Scroll.CONTENT && 'tw-modal--scrollable',\n className,\n )}\n {...otherProps}\n >\n <div\n id={overlayId}\n role=\"dialog\"\n aria-modal\n aria-labelledby={titleId}\n className={clsx('tw-modal-dialog', 'd-flex', {\n [`tw-modal-${size}`]: size,\n })}\n >\n <div\n className={clsx(\n 'tw-modal-content',\n 'd-flex',\n 'flex-column',\n 'justify-content-between',\n )}\n >\n <div\n className={clsx(\n 'tw-modal-header',\n 'd-flex',\n 'align-items-center',\n title ? 'justify-content-between' : 'justify-content-end',\n 'flex-wrap',\n )}\n >\n {title && (\n <Title id={titleId} type={Typography.TITLE_SUBSECTION} className=\"tw-modal-title\">\n {title}\n </Title>\n )}\n <IconButton\n size={40}\n priority=\"tertiary\"\n aria-label={intl.formatMessage(closeBtnMessages.ariaLabel)}\n onClick={onClose}\n >\n <Cross />\n </IconButton>\n </div>\n <div\n className={clsx('tw-modal-body', {\n 'tw-modal-body--scrollable': scroll === Scroll.CONTENT,\n })}\n >\n {body}\n </div>\n {footer ? (\n <div\n className={clsx('tw-modal-footer', 'd-flex', 'align-items-center', 'flex-wrap')}\n >\n {footer}\n </div>\n ) : (\n <div className=\"m-t-3\" />\n )}\n </div>\n </div>\n </div>\n </CSSTransition>\n </Dimmer>\n );\n};\n\nexport default Modal;\n"],"names":["TRANSITION_DURATION_IN_MILLISECONDS","Modal","title","body","footer","onClose","onUnmount","className","open","size","Size","MEDIUM","scroll","Scroll","VIEWPORT","position","Position","CENTER","disableDimmerClickToClose","otherProps","intl","useIntl","isMedium","useLayout","contentReference","useRef","titleId","useId","overlayId","useContext","OverlayIdContext","_jsx","Drawer","headerTitle","footerContent","BOTTOM","children","Dimmer","scrollable","contentPosition","disableClickToClose","onExited","CSSTransition","nodeRef","appear","in","classNames","enterDone","timeout","unmountOnExit","ref","clsx","CONTENT","id","role","_jsxs","Title","type","Typography","TITLE_SUBSECTION","IconButton","priority","formatMessage","closeBtnMessages","ariaLabel","onClick","Cross"],"mappings":"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"}
@@ -97,6 +97,7 @@ function Select({
97
97
  id,
98
98
  required,
99
99
  disabled,
100
+ inverse,
100
101
  dropdownWidth,
101
102
  size = 'md',
102
103
  block = true,
@@ -450,7 +451,7 @@ function Select({
450
451
  block: block,
451
452
  size: size,
452
453
  htmlType: "button",
453
- className: clsx.clsx(s('np-dropdown-toggle'), s('np-text-body-large'))
454
+ className: clsx.clsx(s('np-dropdown-toggle'), s('np-text-body-large'), inverse ? s('np-dropdown-toggle-navy') : null)
454
455
  // reset Button's styles
455
456
  ,
456
457
  type: null,
@@ -1 +1 @@
1
- {"version":3,"file":"Select.js","sources":["../../src/select/Select.tsx"],"sourcesContent":["import { useTheme } from '@wise/components-theming';\nimport { clsx } from 'clsx';\nimport { useState, useEffect, useRef, useMemo, useId } from 'react';\nimport { useIntl } from 'react-intl';\n\nimport Button, { ButtonProps } from '../button';\nimport Chevron from '../chevron';\nimport { Position, Size } from '../common';\nimport BottomSheet from '../common/bottomSheet';\nimport { stopPropagation } from '../common/domHelpers';\nimport { useLayout } from '../common/hooks';\nimport Panel from '../common/panel';\nimport Drawer from '../drawer';\nimport { useInputAttributes } from '../inputs/contexts';\n\nimport messages from './Select.messages';\nimport Option from './option';\nimport SearchBox from './searchBox';\n\nconst DEFAULT_SEARCH_VALUE = '';\nconst DEFAULT_OPTIONS_PAGE_SIZE = 1000;\n\nconst includesString = (string1: string, string2: string) =>\n string1.toLowerCase().includes(string2.toLowerCase());\n\nexport interface SelectOptionItem {\n value: any;\n label?: React.ReactNode;\n icon?: React.ReactNode;\n currency?: string;\n note?: React.ReactNode;\n secondary?: React.ReactNode;\n}\n\nexport interface SelectItem extends Partial<SelectOptionItem> {\n header?: React.ReactNode;\n separator?: boolean;\n disabled?: boolean;\n searchStrings?: string[];\n}\n\nexport interface SelectItemWithPlaceholder extends SelectItem {\n placeholder?: string;\n}\n\nfunction defaultFilterFunction(option: SelectItemWithPlaceholder, searchValue: string) {\n if (isPlaceholderOption(option)) {\n return true;\n }\n const { label, note, secondary, currency, searchStrings } = option;\n return (\n (typeof label === 'string' && includesString(label, searchValue)) ||\n (typeof note === 'string' && includesString(note, searchValue)) ||\n (typeof secondary === 'string' && includesString(secondary, searchValue)) ||\n (!!currency && includesString(currency, searchValue)) ||\n (!!searchStrings && searchStrings.some((string) => includesString(string, searchValue)))\n );\n}\n\nfunction isActionableOption(option: SelectItem) {\n return !option.header && !option.separator && !option.disabled;\n}\n\nfunction isHeaderOption(option: SelectItem | null) {\n return option != null && 'header' in option;\n}\n\nfunction isSeparatorOption(option: SelectItem | null) {\n return option != null && 'separator' in option;\n}\n\nfunction clamp(from: number, to: number, value: number) {\n return Math.max(Math.min(to, value), from);\n}\n\n/**\n * No option or placeholder option is selected\n */\nconst DEFAULT_SELECTED_OPTION = null;\n\nfunction isPlaceholderOption(option: SelectItemWithPlaceholder | null) {\n return option === DEFAULT_SELECTED_OPTION || 'placeholder' in option;\n}\n\nfunction isSearchableOption(option: SelectItemWithPlaceholder | null) {\n return !isHeaderOption(option) && !isSeparatorOption(option) && !isPlaceholderOption(option);\n}\n\nconst getUniqueIdForOption = (parentId: string | undefined, option: SelectItem | null) => {\n if (option == null) {\n return undefined;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const uniqueOptionId =\n option.value || (typeof option.label === 'string' ? option.label.replace(/\\s/g, '') : '');\n\n return `option-${parentId ?? ''}-${uniqueOptionId}`;\n};\n\nexport interface SelectProps {\n placeholder?: string;\n id?: string;\n required?: boolean;\n disabled?: boolean;\n inverse?: boolean;\n dropdownRight?: `${Size.EXTRA_SMALL | Size.SMALL | Size.MEDIUM | Size.LARGE | Size.EXTRA_LARGE}`;\n dropdownWidth?: `${Size.SMALL | Size.MEDIUM | Size.LARGE}`;\n size?: `${Size.SMALL | Size.MEDIUM | Size.LARGE}`;\n block?: boolean;\n selected?: SelectOptionItem;\n /**\n * Search toggle\n * if `true` default search functionality being enabled (not case sensitive search in option labels & currency props)\n * if `function` you can define your own search function to implement custom search experience. This search function used while filtering the options array.\n */\n search?: boolean | ((option: SelectItemWithPlaceholder, searchValue: string) => boolean);\n options: SelectItem[];\n searchValue?: string;\n searchPlaceholder?: string;\n classNames?: Record<string, string>;\n dropdownUp?: boolean;\n buttonProps?: Extract<ButtonProps, { as?: 'button' }>;\n dropdownProps?: React.ComponentPropsWithoutRef<'ul'>;\n onChange: (value: SelectItem | typeof DEFAULT_SELECTED_OPTION) => void;\n onFocus?: React.FocusEventHandler<HTMLDivElement>;\n onBlur?: React.FocusEventHandler<HTMLDivElement>;\n /**\n * To have full control of your search value and response use `onSearchChange` function combined with `searchValue` and custom filtering on the options array.\n * DO NOT USE TOGETHER WITH `search` PROPERTY\n */\n onSearchChange?: (value: string) => void;\n}\n\nconst defaultClassNames = {};\n\n/**\n * @deprecated Use `SelectInput` instead (https://neptune.wise.design/blog/2023-11-28-adopting-our-new-selectinput)\n */\nexport default function Select({\n placeholder,\n id,\n required,\n disabled,\n dropdownWidth,\n size = 'md',\n block = true,\n selected,\n search,\n onChange,\n onFocus,\n onBlur,\n options: defaultOptions,\n onSearchChange,\n searchValue: initSearchValue = '',\n searchPlaceholder,\n classNames: classNamesProp = defaultClassNames,\n dropdownUp,\n dropdownProps,\n buttonProps,\n}: SelectProps) {\n const inputAttributes = useInputAttributes();\n\n const { formatMessage } = useIntl();\n const { isModern } = useTheme();\n const s = (className: string) => classNamesProp[className] || className;\n const [open, setOpen] = useState(false);\n const [searchValue, setSearchValue] = useState(DEFAULT_SEARCH_VALUE);\n const [keyboardFocusedOptionIndex, setKeyboardFocusedOptionIndex] = useState(-1);\n const keyboardFocusedReference = useRef<HTMLLIElement>(null);\n const previousKeyboardFocusedOptionIndex = useRef(-1);\n const [numberOfOptionsShown, setNumberOfOptionsShown] = useState(DEFAULT_OPTIONS_PAGE_SIZE);\n const searchBoxReference = useRef<HTMLInputElement>(null);\n const selectReference = useRef<HTMLDivElement>(null);\n const dropdownButtonReference = useRef<HTMLButtonElement>(null);\n const optionsListReference = useRef<HTMLUListElement>(null);\n const isSearchEnabled = !!onSearchChange || !!search;\n const isDropdownAutoWidth = dropdownWidth == null;\n\n const options = useMemo(() => {\n if (!search || !searchValue) {\n return defaultOptions;\n }\n\n return defaultOptions.filter(isSearchableOption).filter((option) => {\n if (typeof search === 'function') {\n return search(option, searchValue);\n }\n return defaultFilterFunction(option, searchValue);\n });\n }, [defaultOptions, search, searchValue]);\n\n const selectableOptions = useMemo(() => options.filter(isActionableOption), [options]);\n const focusedOption = selectableOptions[keyboardFocusedOptionIndex];\n\n const fallbackButtonId = useId();\n const computedId = id || inputAttributes.id || fallbackButtonId;\n const listboxId = `${computedId}-listbox`;\n const searchBoxId = `${computedId}-searchbox`;\n\n const { isMobile } = useLayout();\n\n useEffect(() => {\n let cancelled = false;\n\n if (keyboardFocusedOptionIndex >= 0) {\n requestAnimationFrame(() => {\n if (!cancelled) {\n if (isSearchEnabled) {\n keyboardFocusedReference.current?.scrollIntoView?.({ block: 'center' });\n } else {\n keyboardFocusedReference.current?.focus();\n }\n }\n });\n\n return () => {\n cancelled = true;\n };\n }\n }, [keyboardFocusedOptionIndex, isSearchEnabled]);\n\n const handleOnClick = () => {\n setOpen(true);\n };\n\n const handleTouchStart: React.TouchEventHandler<HTMLDivElement> = (event) => {\n if (event.currentTarget === event.target && open) {\n handleCloseOptions();\n }\n };\n\n const handleOnFocus: React.FocusEventHandler<HTMLDivElement> = (event) => {\n onFocus?.(event);\n };\n\n const handleOnBlur: React.FocusEventHandler<HTMLDivElement> = (event) => {\n const { nativeEvent } = event;\n if (nativeEvent) {\n const elementReceivingFocus = nativeEvent.relatedTarget;\n const select = event.currentTarget;\n if (\n select &&\n elementReceivingFocus instanceof Node &&\n select.contains(elementReceivingFocus)\n ) {\n return;\n }\n }\n\n onBlur?.(event);\n };\n\n const handleSearchChange: React.ChangeEventHandler<HTMLInputElement> = (event) => {\n setNumberOfOptionsShown(DEFAULT_OPTIONS_PAGE_SIZE);\n setSearchValue(event.target.value);\n onSearchChange?.(event.target.value);\n };\n\n const handleKeyDown: React.KeyboardEventHandler<HTMLDivElement> = (event) => {\n switch (event.key) {\n case 'ArrowUp':\n case 'ArrowDown':\n if (open) {\n moveFocusWithDifference(event.key === 'ArrowUp' ? -1 : 1);\n } else {\n setOpen(true);\n }\n stopPropagation(event);\n break;\n case ' ':\n if (event.target !== searchBoxReference.current) {\n if (open) {\n selectKeyboardFocusedOption();\n } else {\n setOpen(true);\n }\n stopPropagation(event);\n }\n break;\n case 'Enter':\n if (open) {\n selectKeyboardFocusedOption();\n } else {\n setOpen(true);\n }\n stopPropagation(event);\n break;\n case 'Escape':\n handleCloseOptions();\n stopPropagation(event);\n break;\n case 'Tab':\n if (open) {\n selectKeyboardFocusedOption();\n }\n break;\n default:\n break;\n }\n };\n\n function selectKeyboardFocusedOption() {\n if (keyboardFocusedOptionIndex >= 0 && selectableOptions.length > 0) {\n selectOption(selectableOptions[keyboardFocusedOptionIndex]);\n }\n }\n\n function moveFocusWithDifference(difference: number) {\n const selectedOptionIndex = selectableOptions.reduce((optionIndex, current, index) => {\n if (optionIndex >= 0) {\n return optionIndex;\n }\n if (isOptionSelected(selected, current)) {\n return index;\n }\n return -1;\n }, -1);\n const previousFocusedIndex = previousKeyboardFocusedOptionIndex.current;\n let indexToStartMovingFrom = previousFocusedIndex;\n if (previousFocusedIndex < 0) {\n if (selectedOptionIndex < 0) {\n setKeyboardFocusedOptionIndex(0);\n } else {\n indexToStartMovingFrom = selectedOptionIndex;\n }\n }\n\n const unClampedNewIndex = indexToStartMovingFrom + difference;\n const newIndex = clamp(0, selectableOptions.length - 1, unClampedNewIndex);\n\n setKeyboardFocusedOptionIndex(newIndex);\n }\n\n useEffect(() => {\n if (open) {\n if (!isMobile || searchValue) {\n if (isSearchEnabled && searchBoxReference.current) {\n searchBoxReference.current.focus();\n }\n if (\n !isSearchEnabled &&\n optionsListReference.current &&\n previousKeyboardFocusedOptionIndex.current < 0\n ) {\n optionsListReference.current.focus();\n }\n }\n\n previousKeyboardFocusedOptionIndex.current = keyboardFocusedOptionIndex;\n } else {\n previousKeyboardFocusedOptionIndex.current = -1;\n }\n }, [open, searchValue, isSearchEnabled, isMobile, keyboardFocusedOptionIndex]);\n\n const handleCloseOptions = () => {\n setOpen(false);\n setKeyboardFocusedOptionIndex(-1);\n if (dropdownButtonReference.current) {\n dropdownButtonReference.current.focus();\n }\n };\n\n function createSelectHandlerForOption(option: SelectItemWithPlaceholder) {\n return (event: React.SyntheticEvent) => {\n stopPropagation(event);\n selectOption(option);\n };\n }\n\n function selectOption(option: SelectItemWithPlaceholder) {\n onChange(isPlaceholderOption(option) ? DEFAULT_SELECTED_OPTION : option);\n handleCloseOptions();\n }\n\n function renderOptionsList({ className = '' } = {}) {\n const dropdownClass = clsx(\n s('np-dropdown-menu'),\n {\n [s('np-dropdown-menu-desktop')]: !isMobile,\n [s(`np-dropdown-menu-${dropdownWidth}`)]: !isMobile && !isDropdownAutoWidth,\n },\n s(className),\n );\n\n const showPlaceholder = !required && !isSearchEnabled && Boolean(placeholder);\n return (\n <ul\n ref={optionsListReference}\n id={listboxId}\n role=\"listbox\"\n aria-orientation=\"vertical\"\n aria-activedescendant={getUniqueIdForOption(id, selected ?? null)}\n tabIndex={-1}\n className={dropdownClass}\n {...dropdownProps}\n >\n {showPlaceholder && <PlaceHolderOption />}\n {isSearchEnabled && (\n <SearchBox\n ref={searchBoxReference}\n id={searchBoxId}\n classNames={classNamesProp}\n value={initSearchValue || searchValue}\n placeholder={searchPlaceholder || formatMessage(messages.searchPlaceholder)}\n focusedOptionId={getUniqueIdForOption(id, focusedOption)}\n onChange={handleSearchChange}\n onClick={stopPropagation}\n />\n )}\n {options.slice(0, numberOfOptionsShown).map(renderOption)}\n {numberOfOptionsShown < options.length && <ShowMoreOption />}\n </ul>\n );\n }\n\n function ShowMoreOption() {\n function handleOnClick(event: React.SyntheticEvent<HTMLLIElement>) {\n stopPropagation(event);\n setNumberOfOptionsShown(numberOfOptionsShown + DEFAULT_OPTIONS_PAGE_SIZE);\n }\n return (\n /* eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions */\n <li\n className={clsx(s('clickable'), s('border-bottom'), s('show-more'))}\n onClick={handleOnClick}\n onKeyPress={handleOnClick}\n >\n {/* eslint-disable-next-line jsx-a11y/anchor-is-valid */}\n <a>...</a>\n </li>\n );\n }\n\n function PlaceHolderOption() {\n const placeholderOption = { placeholder };\n return (\n /* eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions */\n <li\n className={clsx(s('clickable'), s('border-bottom'))}\n onClick={createSelectHandlerForOption(placeholderOption)}\n onKeyPress={createSelectHandlerForOption(placeholderOption)}\n >\n {/* eslint-disable-next-line jsx-a11y/anchor-is-valid */}\n <a>{placeholder}</a>\n </li>\n );\n }\n\n function SeparatorOption() {\n return <li className={s('np-separator')} aria-hidden />;\n }\n\n function HeaderOption({ children }: { children?: React.ReactNode }) {\n return (\n <li // eslint-disable-line jsx-a11y/no-noninteractive-element-interactions\n className={clsx(s('np-dropdown-header'), s('np-text-title-group'))}\n onClick={stopPropagation}\n onKeyPress={stopPropagation}\n >\n {children}\n </li>\n );\n }\n\n function isOptionSelected(selected: SelectOptionItem | undefined, option: SelectItem) {\n return selected?.value === option?.value;\n }\n\n const renderOption = (option: SelectItem, index: number) => {\n const separatorOption = option;\n if (isSeparatorOption(separatorOption) && separatorOption?.separator) {\n return <SeparatorOption key={index} />;\n }\n const headerOption = option;\n if (isHeaderOption(headerOption) && headerOption.header) {\n return <HeaderOption key={index}>{headerOption.header}</HeaderOption>;\n }\n\n const isActive = isOptionSelected(selected, option);\n const selectOption = option;\n const isFocusedWithKeyboard =\n !selectOption.disabled &&\n keyboardFocusedOptionIndex === getIndexWithoutHeadersForIndexWithHeaders(index);\n\n const className = clsx(\n s('np-dropdown-item'),\n selectOption.disabled ? [s('disabled')] : s('clickable'),\n {\n [s('active')]: isActive,\n [s('np-dropdown-item--focused')]: isFocusedWithKeyboard,\n },\n );\n\n const handleOnClick = selectOption.disabled\n ? stopPropagation\n : createSelectHandlerForOption(selectOption);\n\n return (\n <li\n ref={isFocusedWithKeyboard ? keyboardFocusedReference : undefined}\n key={index}\n id={getUniqueIdForOption(id, option)}\n aria-selected={isActive}\n aria-disabled={option.disabled}\n role=\"option\"\n tabIndex={-1}\n className={className}\n onClick={handleOnClick}\n onKeyPress={handleOnClick}\n >\n {/* @ts-expect-error options needs DOM refactoring */}\n <a disabled={selectOption.disabled}>\n <Option\n label={undefined}\n value={undefined}\n {...selectOption}\n classNames={classNamesProp}\n />\n </a>\n </li>\n );\n };\n\n function getIndexWithoutHeadersForIndexWithHeaders(index: number) {\n return options.reduce((sum, option, currentIndex) => {\n if (currentIndex < index && isActionableOption(option)) {\n return sum + 1;\n }\n return sum;\n }, 0);\n }\n\n const hasActiveOptions = !!defaultOptions.length;\n if (open && (initSearchValue || searchValue)) {\n if (hasActiveOptions && keyboardFocusedOptionIndex < 0) {\n setKeyboardFocusedOptionIndex(0);\n }\n if (!hasActiveOptions && keyboardFocusedOptionIndex >= 0) {\n setKeyboardFocusedOptionIndex(-1);\n }\n }\n\n return (\n <div // eslint-disable-line jsx-a11y/no-static-element-interactions\n ref={selectReference}\n className={clsx(s('np-select'), block ? s('btn-block') : null, s('btn-group'))}\n onKeyDown={handleKeyDown}\n onTouchMove={handleTouchStart}\n onFocus={handleOnFocus}\n onBlur={handleOnBlur}\n >\n <Button\n ref={dropdownButtonReference}\n {...inputAttributes}\n id={computedId}\n block={block}\n size={size}\n htmlType=\"button\"\n className={clsx(s('np-dropdown-toggle'), s('np-text-body-large'))}\n // reset Button's styles\n type={null}\n priority={null}\n disabled={disabled}\n aria-controls={listboxId}\n aria-expanded={open}\n onClick={handleOnClick}\n {...buttonProps}\n >\n {selected ? (\n <Option label={undefined} {...selected} classNames={classNamesProp} selected />\n ) : (\n <span className={s('form-control-placeholder')}>{placeholder}</span>\n )}\n <Chevron\n // disabled={disabled}\n className={clsx(\n s('tw-icon'),\n s('tw-chevron-up-icon'),\n s('tw-chevron'),\n s('bottom'),\n s('np-select-chevron'),\n )}\n />\n </Button>\n {isMobile ? (\n isSearchEnabled ? (\n <Drawer\n open={open}\n headerTitle={searchPlaceholder || formatMessage(messages.searchPlaceholder)}\n onClose={handleCloseOptions}\n >\n {renderOptionsList()}\n </Drawer>\n ) : (\n <BottomSheet open={open} onClose={handleCloseOptions}>\n {renderOptionsList({ className: isModern ? '' : 'p-a-1' })}\n </BottomSheet>\n )\n ) : (\n <Panel\n open={open}\n flip={false}\n altAxis\n anchorRef={selectReference}\n anchorWidth={isDropdownAutoWidth}\n position={dropdownUp ? Position.TOP : Position.BOTTOM}\n onClose={handleCloseOptions}\n >\n {renderOptionsList({ className: 'p-a-1' })}\n </Panel>\n )}\n </div>\n );\n}\n"],"names":["DEFAULT_SEARCH_VALUE","DEFAULT_OPTIONS_PAGE_SIZE","includesString","string1","string2","toLowerCase","includes","defaultFilterFunction","option","searchValue","isPlaceholderOption","label","note","secondary","currency","searchStrings","some","string","isActionableOption","header","separator","disabled","isHeaderOption","isSeparatorOption","clamp","from","to","value","Math","max","min","DEFAULT_SELECTED_OPTION","isSearchableOption","getUniqueIdForOption","parentId","undefined","uniqueOptionId","replace","defaultClassNames","Select","placeholder","id","required","dropdownWidth","size","block","selected","search","onChange","onFocus","onBlur","options","defaultOptions","onSearchChange","initSearchValue","searchPlaceholder","classNames","classNamesProp","dropdownUp","dropdownProps","buttonProps","inputAttributes","useInputAttributes","formatMessage","useIntl","isModern","useTheme","s","className","open","setOpen","useState","setSearchValue","keyboardFocusedOptionIndex","setKeyboardFocusedOptionIndex","keyboardFocusedReference","useRef","previousKeyboardFocusedOptionIndex","numberOfOptionsShown","setNumberOfOptionsShown","searchBoxReference","selectReference","dropdownButtonReference","optionsListReference","isSearchEnabled","isDropdownAutoWidth","useMemo","filter","selectableOptions","focusedOption","fallbackButtonId","useId","computedId","listboxId","searchBoxId","isMobile","useLayout","useEffect","cancelled","requestAnimationFrame","current","scrollIntoView","focus","handleOnClick","handleTouchStart","event","currentTarget","target","handleCloseOptions","handleOnFocus","handleOnBlur","nativeEvent","elementReceivingFocus","relatedTarget","select","Node","contains","handleSearchChange","handleKeyDown","key","moveFocusWithDifference","stopPropagation","selectKeyboardFocusedOption","length","selectOption","difference","selectedOptionIndex","reduce","optionIndex","index","isOptionSelected","previousFocusedIndex","indexToStartMovingFrom","unClampedNewIndex","newIndex","createSelectHandlerForOption","renderOptionsList","dropdownClass","clsx","showPlaceholder","Boolean","_jsxs","ref","role","tabIndex","children","_jsx","PlaceHolderOption","SearchBox","messages","focusedOptionId","onClick","slice","map","renderOption","ShowMoreOption","onKeyPress","placeholderOption","SeparatorOption","HeaderOption","separatorOption","headerOption","isActive","isFocusedWithKeyboard","getIndexWithoutHeadersForIndexWithHeaders","Option","sum","currentIndex","hasActiveOptions","onKeyDown","onTouchMove","Button","htmlType","type","priority","Chevron","Drawer","headerTitle","onClose","BottomSheet","Panel","flip","altAxis","anchorRef","anchorWidth","position","Position","TOP","BOTTOM"],"mappings":"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"}
1
+ {"version":3,"file":"Select.js","sources":["../../src/select/Select.tsx"],"sourcesContent":["import { useTheme } from '@wise/components-theming';\nimport { clsx } from 'clsx';\nimport { useState, useEffect, useRef, useMemo, useId } from 'react';\nimport { useIntl } from 'react-intl';\n\nimport Button, { ButtonProps } from '../button';\nimport Chevron from '../chevron';\nimport { Position, Size } from '../common';\nimport BottomSheet from '../common/bottomSheet';\nimport { stopPropagation } from '../common/domHelpers';\nimport { useLayout } from '../common/hooks';\nimport Panel from '../common/panel';\nimport Drawer from '../drawer';\nimport { useInputAttributes } from '../inputs/contexts';\n\nimport messages from './Select.messages';\nimport Option from './option';\nimport SearchBox from './searchBox';\n\nconst DEFAULT_SEARCH_VALUE = '';\nconst DEFAULT_OPTIONS_PAGE_SIZE = 1000;\n\nconst includesString = (string1: string, string2: string) =>\n string1.toLowerCase().includes(string2.toLowerCase());\n\nexport interface SelectOptionItem {\n value: any;\n label?: React.ReactNode;\n icon?: React.ReactNode;\n currency?: string;\n note?: React.ReactNode;\n secondary?: React.ReactNode;\n}\n\nexport interface SelectItem extends Partial<SelectOptionItem> {\n header?: React.ReactNode;\n separator?: boolean;\n disabled?: boolean;\n searchStrings?: string[];\n}\n\nexport interface SelectItemWithPlaceholder extends SelectItem {\n placeholder?: string;\n}\n\nfunction defaultFilterFunction(option: SelectItemWithPlaceholder, searchValue: string) {\n if (isPlaceholderOption(option)) {\n return true;\n }\n const { label, note, secondary, currency, searchStrings } = option;\n return (\n (typeof label === 'string' && includesString(label, searchValue)) ||\n (typeof note === 'string' && includesString(note, searchValue)) ||\n (typeof secondary === 'string' && includesString(secondary, searchValue)) ||\n (!!currency && includesString(currency, searchValue)) ||\n (!!searchStrings && searchStrings.some((string) => includesString(string, searchValue)))\n );\n}\n\nfunction isActionableOption(option: SelectItem) {\n return !option.header && !option.separator && !option.disabled;\n}\n\nfunction isHeaderOption(option: SelectItem | null) {\n return option != null && 'header' in option;\n}\n\nfunction isSeparatorOption(option: SelectItem | null) {\n return option != null && 'separator' in option;\n}\n\nfunction clamp(from: number, to: number, value: number) {\n return Math.max(Math.min(to, value), from);\n}\n\n/**\n * No option or placeholder option is selected\n */\nconst DEFAULT_SELECTED_OPTION = null;\n\nfunction isPlaceholderOption(option: SelectItemWithPlaceholder | null) {\n return option === DEFAULT_SELECTED_OPTION || 'placeholder' in option;\n}\n\nfunction isSearchableOption(option: SelectItemWithPlaceholder | null) {\n return !isHeaderOption(option) && !isSeparatorOption(option) && !isPlaceholderOption(option);\n}\n\nconst getUniqueIdForOption = (parentId: string | undefined, option: SelectItem | null) => {\n if (option == null) {\n return undefined;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const uniqueOptionId =\n option.value || (typeof option.label === 'string' ? option.label.replace(/\\s/g, '') : '');\n\n return `option-${parentId ?? ''}-${uniqueOptionId}`;\n};\n\nexport interface SelectProps {\n placeholder?: string;\n id?: string;\n required?: boolean;\n disabled?: boolean;\n inverse?: boolean;\n dropdownRight?: `${Size.EXTRA_SMALL | Size.SMALL | Size.MEDIUM | Size.LARGE | Size.EXTRA_LARGE}`;\n dropdownWidth?: `${Size.SMALL | Size.MEDIUM | Size.LARGE}`;\n size?: `${Size.SMALL | Size.MEDIUM | Size.LARGE}`;\n block?: boolean;\n selected?: SelectOptionItem;\n /**\n * Search toggle\n * if `true` default search functionality being enabled (not case sensitive search in option labels & currency props)\n * if `function` you can define your own search function to implement custom search experience. This search function used while filtering the options array.\n */\n search?: boolean | ((option: SelectItemWithPlaceholder, searchValue: string) => boolean);\n options: SelectItem[];\n searchValue?: string;\n searchPlaceholder?: string;\n classNames?: Record<string, string>;\n dropdownUp?: boolean;\n buttonProps?: Extract<ButtonProps, { as?: 'button' }>;\n dropdownProps?: React.ComponentPropsWithoutRef<'ul'>;\n onChange: (value: SelectItem | typeof DEFAULT_SELECTED_OPTION) => void;\n onFocus?: React.FocusEventHandler<HTMLDivElement>;\n onBlur?: React.FocusEventHandler<HTMLDivElement>;\n /**\n * To have full control of your search value and response use `onSearchChange` function combined with `searchValue` and custom filtering on the options array.\n * DO NOT USE TOGETHER WITH `search` PROPERTY\n */\n onSearchChange?: (value: string) => void;\n}\n\nconst defaultClassNames = {};\n\n/**\n * @deprecated Use `SelectInput` instead (https://neptune.wise.design/blog/2023-11-28-adopting-our-new-selectinput)\n */\nexport default function Select({\n placeholder,\n id,\n required,\n disabled,\n inverse,\n dropdownWidth,\n size = 'md',\n block = true,\n selected,\n search,\n onChange,\n onFocus,\n onBlur,\n options: defaultOptions,\n onSearchChange,\n searchValue: initSearchValue = '',\n searchPlaceholder,\n classNames: classNamesProp = defaultClassNames,\n dropdownUp,\n dropdownProps,\n buttonProps,\n}: SelectProps) {\n const inputAttributes = useInputAttributes();\n\n const { formatMessage } = useIntl();\n const { isModern } = useTheme();\n const s = (className: string) => classNamesProp[className] || className;\n const [open, setOpen] = useState(false);\n const [searchValue, setSearchValue] = useState(DEFAULT_SEARCH_VALUE);\n const [keyboardFocusedOptionIndex, setKeyboardFocusedOptionIndex] = useState(-1);\n const keyboardFocusedReference = useRef<HTMLLIElement>(null);\n const previousKeyboardFocusedOptionIndex = useRef(-1);\n const [numberOfOptionsShown, setNumberOfOptionsShown] = useState(DEFAULT_OPTIONS_PAGE_SIZE);\n const searchBoxReference = useRef<HTMLInputElement>(null);\n const selectReference = useRef<HTMLDivElement>(null);\n const dropdownButtonReference = useRef<HTMLButtonElement>(null);\n const optionsListReference = useRef<HTMLUListElement>(null);\n const isSearchEnabled = !!onSearchChange || !!search;\n const isDropdownAutoWidth = dropdownWidth == null;\n\n const options = useMemo(() => {\n if (!search || !searchValue) {\n return defaultOptions;\n }\n\n return defaultOptions.filter(isSearchableOption).filter((option) => {\n if (typeof search === 'function') {\n return search(option, searchValue);\n }\n return defaultFilterFunction(option, searchValue);\n });\n }, [defaultOptions, search, searchValue]);\n\n const selectableOptions = useMemo(() => options.filter(isActionableOption), [options]);\n const focusedOption = selectableOptions[keyboardFocusedOptionIndex];\n\n const fallbackButtonId = useId();\n const computedId = id || inputAttributes.id || fallbackButtonId;\n const listboxId = `${computedId}-listbox`;\n const searchBoxId = `${computedId}-searchbox`;\n\n const { isMobile } = useLayout();\n\n useEffect(() => {\n let cancelled = false;\n\n if (keyboardFocusedOptionIndex >= 0) {\n requestAnimationFrame(() => {\n if (!cancelled) {\n if (isSearchEnabled) {\n keyboardFocusedReference.current?.scrollIntoView?.({ block: 'center' });\n } else {\n keyboardFocusedReference.current?.focus();\n }\n }\n });\n\n return () => {\n cancelled = true;\n };\n }\n }, [keyboardFocusedOptionIndex, isSearchEnabled]);\n\n const handleOnClick = () => {\n setOpen(true);\n };\n\n const handleTouchStart: React.TouchEventHandler<HTMLDivElement> = (event) => {\n if (event.currentTarget === event.target && open) {\n handleCloseOptions();\n }\n };\n\n const handleOnFocus: React.FocusEventHandler<HTMLDivElement> = (event) => {\n onFocus?.(event);\n };\n\n const handleOnBlur: React.FocusEventHandler<HTMLDivElement> = (event) => {\n const { nativeEvent } = event;\n if (nativeEvent) {\n const elementReceivingFocus = nativeEvent.relatedTarget;\n const select = event.currentTarget;\n if (\n select &&\n elementReceivingFocus instanceof Node &&\n select.contains(elementReceivingFocus)\n ) {\n return;\n }\n }\n\n onBlur?.(event);\n };\n\n const handleSearchChange: React.ChangeEventHandler<HTMLInputElement> = (event) => {\n setNumberOfOptionsShown(DEFAULT_OPTIONS_PAGE_SIZE);\n setSearchValue(event.target.value);\n onSearchChange?.(event.target.value);\n };\n\n const handleKeyDown: React.KeyboardEventHandler<HTMLDivElement> = (event) => {\n switch (event.key) {\n case 'ArrowUp':\n case 'ArrowDown':\n if (open) {\n moveFocusWithDifference(event.key === 'ArrowUp' ? -1 : 1);\n } else {\n setOpen(true);\n }\n stopPropagation(event);\n break;\n case ' ':\n if (event.target !== searchBoxReference.current) {\n if (open) {\n selectKeyboardFocusedOption();\n } else {\n setOpen(true);\n }\n stopPropagation(event);\n }\n break;\n case 'Enter':\n if (open) {\n selectKeyboardFocusedOption();\n } else {\n setOpen(true);\n }\n stopPropagation(event);\n break;\n case 'Escape':\n handleCloseOptions();\n stopPropagation(event);\n break;\n case 'Tab':\n if (open) {\n selectKeyboardFocusedOption();\n }\n break;\n default:\n break;\n }\n };\n\n function selectKeyboardFocusedOption() {\n if (keyboardFocusedOptionIndex >= 0 && selectableOptions.length > 0) {\n selectOption(selectableOptions[keyboardFocusedOptionIndex]);\n }\n }\n\n function moveFocusWithDifference(difference: number) {\n const selectedOptionIndex = selectableOptions.reduce((optionIndex, current, index) => {\n if (optionIndex >= 0) {\n return optionIndex;\n }\n if (isOptionSelected(selected, current)) {\n return index;\n }\n return -1;\n }, -1);\n const previousFocusedIndex = previousKeyboardFocusedOptionIndex.current;\n let indexToStartMovingFrom = previousFocusedIndex;\n if (previousFocusedIndex < 0) {\n if (selectedOptionIndex < 0) {\n setKeyboardFocusedOptionIndex(0);\n } else {\n indexToStartMovingFrom = selectedOptionIndex;\n }\n }\n\n const unClampedNewIndex = indexToStartMovingFrom + difference;\n const newIndex = clamp(0, selectableOptions.length - 1, unClampedNewIndex);\n\n setKeyboardFocusedOptionIndex(newIndex);\n }\n\n useEffect(() => {\n if (open) {\n if (!isMobile || searchValue) {\n if (isSearchEnabled && searchBoxReference.current) {\n searchBoxReference.current.focus();\n }\n if (\n !isSearchEnabled &&\n optionsListReference.current &&\n previousKeyboardFocusedOptionIndex.current < 0\n ) {\n optionsListReference.current.focus();\n }\n }\n\n previousKeyboardFocusedOptionIndex.current = keyboardFocusedOptionIndex;\n } else {\n previousKeyboardFocusedOptionIndex.current = -1;\n }\n }, [open, searchValue, isSearchEnabled, isMobile, keyboardFocusedOptionIndex]);\n\n const handleCloseOptions = () => {\n setOpen(false);\n setKeyboardFocusedOptionIndex(-1);\n if (dropdownButtonReference.current) {\n dropdownButtonReference.current.focus();\n }\n };\n\n function createSelectHandlerForOption(option: SelectItemWithPlaceholder) {\n return (event: React.SyntheticEvent) => {\n stopPropagation(event);\n selectOption(option);\n };\n }\n\n function selectOption(option: SelectItemWithPlaceholder) {\n onChange(isPlaceholderOption(option) ? DEFAULT_SELECTED_OPTION : option);\n handleCloseOptions();\n }\n\n function renderOptionsList({ className = '' } = {}) {\n const dropdownClass = clsx(\n s('np-dropdown-menu'),\n {\n [s('np-dropdown-menu-desktop')]: !isMobile,\n [s(`np-dropdown-menu-${dropdownWidth}`)]: !isMobile && !isDropdownAutoWidth,\n },\n s(className),\n );\n\n const showPlaceholder = !required && !isSearchEnabled && Boolean(placeholder);\n return (\n <ul\n ref={optionsListReference}\n id={listboxId}\n role=\"listbox\"\n aria-orientation=\"vertical\"\n aria-activedescendant={getUniqueIdForOption(id, selected ?? null)}\n tabIndex={-1}\n className={dropdownClass}\n {...dropdownProps}\n >\n {showPlaceholder && <PlaceHolderOption />}\n {isSearchEnabled && (\n <SearchBox\n ref={searchBoxReference}\n id={searchBoxId}\n classNames={classNamesProp}\n value={initSearchValue || searchValue}\n placeholder={searchPlaceholder || formatMessage(messages.searchPlaceholder)}\n focusedOptionId={getUniqueIdForOption(id, focusedOption)}\n onChange={handleSearchChange}\n onClick={stopPropagation}\n />\n )}\n {options.slice(0, numberOfOptionsShown).map(renderOption)}\n {numberOfOptionsShown < options.length && <ShowMoreOption />}\n </ul>\n );\n }\n\n function ShowMoreOption() {\n function handleOnClick(event: React.SyntheticEvent<HTMLLIElement>) {\n stopPropagation(event);\n setNumberOfOptionsShown(numberOfOptionsShown + DEFAULT_OPTIONS_PAGE_SIZE);\n }\n return (\n /* eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions */\n <li\n className={clsx(s('clickable'), s('border-bottom'), s('show-more'))}\n onClick={handleOnClick}\n onKeyPress={handleOnClick}\n >\n {/* eslint-disable-next-line jsx-a11y/anchor-is-valid */}\n <a>...</a>\n </li>\n );\n }\n\n function PlaceHolderOption() {\n const placeholderOption = { placeholder };\n return (\n /* eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions */\n <li\n className={clsx(s('clickable'), s('border-bottom'))}\n onClick={createSelectHandlerForOption(placeholderOption)}\n onKeyPress={createSelectHandlerForOption(placeholderOption)}\n >\n {/* eslint-disable-next-line jsx-a11y/anchor-is-valid */}\n <a>{placeholder}</a>\n </li>\n );\n }\n\n function SeparatorOption() {\n return <li className={s('np-separator')} aria-hidden />;\n }\n\n function HeaderOption({ children }: { children?: React.ReactNode }) {\n return (\n <li // eslint-disable-line jsx-a11y/no-noninteractive-element-interactions\n className={clsx(s('np-dropdown-header'), s('np-text-title-group'))}\n onClick={stopPropagation}\n onKeyPress={stopPropagation}\n >\n {children}\n </li>\n );\n }\n\n function isOptionSelected(selected: SelectOptionItem | undefined, option: SelectItem) {\n return selected?.value === option?.value;\n }\n\n const renderOption = (option: SelectItem, index: number) => {\n const separatorOption = option;\n if (isSeparatorOption(separatorOption) && separatorOption?.separator) {\n return <SeparatorOption key={index} />;\n }\n const headerOption = option;\n if (isHeaderOption(headerOption) && headerOption.header) {\n return <HeaderOption key={index}>{headerOption.header}</HeaderOption>;\n }\n\n const isActive = isOptionSelected(selected, option);\n const selectOption = option;\n const isFocusedWithKeyboard =\n !selectOption.disabled &&\n keyboardFocusedOptionIndex === getIndexWithoutHeadersForIndexWithHeaders(index);\n\n const className = clsx(\n s('np-dropdown-item'),\n selectOption.disabled ? [s('disabled')] : s('clickable'),\n {\n [s('active')]: isActive,\n [s('np-dropdown-item--focused')]: isFocusedWithKeyboard,\n },\n );\n\n const handleOnClick = selectOption.disabled\n ? stopPropagation\n : createSelectHandlerForOption(selectOption);\n\n return (\n <li\n ref={isFocusedWithKeyboard ? keyboardFocusedReference : undefined}\n key={index}\n id={getUniqueIdForOption(id, option)}\n aria-selected={isActive}\n aria-disabled={option.disabled}\n role=\"option\"\n tabIndex={-1}\n className={className}\n onClick={handleOnClick}\n onKeyPress={handleOnClick}\n >\n {/* @ts-expect-error options needs DOM refactoring */}\n <a disabled={selectOption.disabled}>\n <Option\n label={undefined}\n value={undefined}\n {...selectOption}\n classNames={classNamesProp}\n />\n </a>\n </li>\n );\n };\n\n function getIndexWithoutHeadersForIndexWithHeaders(index: number) {\n return options.reduce((sum, option, currentIndex) => {\n if (currentIndex < index && isActionableOption(option)) {\n return sum + 1;\n }\n return sum;\n }, 0);\n }\n\n const hasActiveOptions = !!defaultOptions.length;\n if (open && (initSearchValue || searchValue)) {\n if (hasActiveOptions && keyboardFocusedOptionIndex < 0) {\n setKeyboardFocusedOptionIndex(0);\n }\n if (!hasActiveOptions && keyboardFocusedOptionIndex >= 0) {\n setKeyboardFocusedOptionIndex(-1);\n }\n }\n\n return (\n <div // eslint-disable-line jsx-a11y/no-static-element-interactions\n ref={selectReference}\n className={clsx(s('np-select'), block ? s('btn-block') : null, s('btn-group'))}\n onKeyDown={handleKeyDown}\n onTouchMove={handleTouchStart}\n onFocus={handleOnFocus}\n onBlur={handleOnBlur}\n >\n <Button\n ref={dropdownButtonReference}\n {...inputAttributes}\n id={computedId}\n block={block}\n size={size}\n htmlType=\"button\"\n className={clsx(\n s('np-dropdown-toggle'),\n s('np-text-body-large'),\n inverse ? s('np-dropdown-toggle-navy') : null,\n )}\n // reset Button's styles\n type={null}\n priority={null}\n disabled={disabled}\n aria-controls={listboxId}\n aria-expanded={open}\n onClick={handleOnClick}\n {...buttonProps}\n >\n {selected ? (\n <Option label={undefined} {...selected} classNames={classNamesProp} selected />\n ) : (\n <span className={s('form-control-placeholder')}>{placeholder}</span>\n )}\n <Chevron\n // disabled={disabled}\n className={clsx(\n s('tw-icon'),\n s('tw-chevron-up-icon'),\n s('tw-chevron'),\n s('bottom'),\n s('np-select-chevron'),\n )}\n />\n </Button>\n {isMobile ? (\n isSearchEnabled ? (\n <Drawer\n open={open}\n headerTitle={searchPlaceholder || formatMessage(messages.searchPlaceholder)}\n onClose={handleCloseOptions}\n >\n {renderOptionsList()}\n </Drawer>\n ) : (\n <BottomSheet open={open} onClose={handleCloseOptions}>\n {renderOptionsList({ className: isModern ? '' : 'p-a-1' })}\n </BottomSheet>\n )\n ) : (\n <Panel\n open={open}\n flip={false}\n altAxis\n anchorRef={selectReference}\n anchorWidth={isDropdownAutoWidth}\n position={dropdownUp ? Position.TOP : Position.BOTTOM}\n onClose={handleCloseOptions}\n >\n {renderOptionsList({ className: 'p-a-1' })}\n </Panel>\n )}\n </div>\n );\n}\n"],"names":["DEFAULT_SEARCH_VALUE","DEFAULT_OPTIONS_PAGE_SIZE","includesString","string1","string2","toLowerCase","includes","defaultFilterFunction","option","searchValue","isPlaceholderOption","label","note","secondary","currency","searchStrings","some","string","isActionableOption","header","separator","disabled","isHeaderOption","isSeparatorOption","clamp","from","to","value","Math","max","min","DEFAULT_SELECTED_OPTION","isSearchableOption","getUniqueIdForOption","parentId","undefined","uniqueOptionId","replace","defaultClassNames","Select","placeholder","id","required","inverse","dropdownWidth","size","block","selected","search","onChange","onFocus","onBlur","options","defaultOptions","onSearchChange","initSearchValue","searchPlaceholder","classNames","classNamesProp","dropdownUp","dropdownProps","buttonProps","inputAttributes","useInputAttributes","formatMessage","useIntl","isModern","useTheme","s","className","open","setOpen","useState","setSearchValue","keyboardFocusedOptionIndex","setKeyboardFocusedOptionIndex","keyboardFocusedReference","useRef","previousKeyboardFocusedOptionIndex","numberOfOptionsShown","setNumberOfOptionsShown","searchBoxReference","selectReference","dropdownButtonReference","optionsListReference","isSearchEnabled","isDropdownAutoWidth","useMemo","filter","selectableOptions","focusedOption","fallbackButtonId","useId","computedId","listboxId","searchBoxId","isMobile","useLayout","useEffect","cancelled","requestAnimationFrame","current","scrollIntoView","focus","handleOnClick","handleTouchStart","event","currentTarget","target","handleCloseOptions","handleOnFocus","handleOnBlur","nativeEvent","elementReceivingFocus","relatedTarget","select","Node","contains","handleSearchChange","handleKeyDown","key","moveFocusWithDifference","stopPropagation","selectKeyboardFocusedOption","length","selectOption","difference","selectedOptionIndex","reduce","optionIndex","index","isOptionSelected","previousFocusedIndex","indexToStartMovingFrom","unClampedNewIndex","newIndex","createSelectHandlerForOption","renderOptionsList","dropdownClass","clsx","showPlaceholder","Boolean","_jsxs","ref","role","tabIndex","children","_jsx","PlaceHolderOption","SearchBox","messages","focusedOptionId","onClick","slice","map","renderOption","ShowMoreOption","onKeyPress","placeholderOption","SeparatorOption","HeaderOption","separatorOption","headerOption","isActive","isFocusedWithKeyboard","getIndexWithoutHeadersForIndexWithHeaders","Option","sum","currentIndex","hasActiveOptions","onKeyDown","onTouchMove","Button","htmlType","type","priority","Chevron","Drawer","headerTitle","onClose","BottomSheet","Panel","flip","altAxis","anchorRef","anchorWidth","position","Position","TOP","BOTTOM"],"mappings":"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"}
@@ -93,6 +93,7 @@ function Select({
93
93
  id,
94
94
  required,
95
95
  disabled,
96
+ inverse,
96
97
  dropdownWidth,
97
98
  size = 'md',
98
99
  block = true,
@@ -446,7 +447,7 @@ function Select({
446
447
  block: block,
447
448
  size: size,
448
449
  htmlType: "button",
449
- className: clsx(s('np-dropdown-toggle'), s('np-text-body-large'))
450
+ className: clsx(s('np-dropdown-toggle'), s('np-text-body-large'), inverse ? s('np-dropdown-toggle-navy') : null)
450
451
  // reset Button's styles
451
452
  ,
452
453
  type: null,