box-ui-elements 15.0.0-beta.7 → 15.0.0

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 (508) hide show
  1. package/CONTRIBUTING.md +3 -1
  2. package/dist/explorer.css +1 -1
  3. package/dist/explorer.js +58 -26
  4. package/dist/openwith.css +1 -1
  5. package/dist/openwith.js +10 -17
  6. package/dist/picker.css +1 -1
  7. package/dist/picker.js +12 -19
  8. package/dist/preview.css +1 -1
  9. package/dist/preview.js +56 -24
  10. package/dist/sharing.css +1 -1
  11. package/dist/sharing.js +54 -22
  12. package/dist/sidebar.css +1 -1
  13. package/dist/sidebar.js +56 -24
  14. package/dist/uploader.css +1 -1
  15. package/dist/uploader.js +12 -19
  16. package/es/api/uploads/UploadsReachability.js.flow +2 -2
  17. package/es/api/uploads/UploadsReachability.js.map +1 -1
  18. package/es/common/messages.js +4 -0
  19. package/es/common/messages.js.flow +5 -0
  20. package/es/common/messages.js.map +1 -1
  21. package/es/common/types/core.js.flow +2 -0
  22. package/es/common/types/core.js.map +1 -1
  23. package/es/components/avatar/UnknownUserAvatar.js +6 -9
  24. package/es/components/avatar/UnknownUserAvatar.js.map +1 -1
  25. package/es/components/close-button/CloseButton.js +24 -0
  26. package/es/components/close-button/CloseButton.js.flow +26 -0
  27. package/es/components/close-button/CloseButton.js.map +1 -0
  28. package/es/components/close-button/CloseButton.scss +10 -0
  29. package/es/components/close-button/CloseButton.stories.js +14 -0
  30. package/es/components/close-button/CloseButton.stories.js.map +1 -0
  31. package/es/components/close-button/index.js +2 -0
  32. package/es/components/close-button/index.js.flow +2 -0
  33. package/es/components/close-button/index.js.map +1 -0
  34. package/es/components/date-picker/AccessiblePikaday.js +113 -0
  35. package/es/components/date-picker/AccessiblePikaday.js.map +1 -0
  36. package/es/components/date-picker/DatePicker.js +426 -106
  37. package/es/components/date-picker/DatePicker.js.map +1 -1
  38. package/es/components/date-picker/DatePicker.scss +32 -22
  39. package/es/components/date-picker/DatePicker.stories.js +10 -0
  40. package/es/components/date-picker/DatePicker.stories.js.map +1 -1
  41. package/es/components/date-picker/_pikaday.scss +8 -2
  42. package/es/components/flyout/Flyout.js +13 -3
  43. package/es/components/flyout/Flyout.js.flow +14 -3
  44. package/es/components/flyout/Flyout.js.map +1 -1
  45. package/es/components/flyout/Flyout.scss +40 -0
  46. package/es/components/flyout/FlyoutContext.js +6 -0
  47. package/es/components/flyout/FlyoutContext.js.flow +9 -0
  48. package/es/components/flyout/FlyoutContext.js.map +1 -0
  49. package/es/components/flyout/OverlayHeader.js +33 -0
  50. package/es/components/flyout/OverlayHeader.js.map +1 -0
  51. package/es/components/flyout/OverlayHeader.scss +9 -0
  52. package/es/components/flyout/_variables.scss +1 -0
  53. package/es/components/flyout/index.js +2 -0
  54. package/es/components/flyout/index.js.flow +2 -0
  55. package/es/components/flyout/index.js.map +1 -1
  56. package/es/components/image-tooltip/ImageTooltip.js +1 -2
  57. package/es/components/image-tooltip/ImageTooltip.js.map +1 -1
  58. package/es/components/media-query/constants.js +26 -0
  59. package/es/components/media-query/constants.js.flow +32 -0
  60. package/es/components/media-query/constants.js.map +1 -0
  61. package/es/components/media-query/index.js +3 -0
  62. package/es/components/media-query/index.js.flow +4 -0
  63. package/es/components/media-query/index.js.map +1 -0
  64. package/es/components/media-query/stories/MediaQuery.stories.js +37 -0
  65. package/es/components/media-query/stories/MediaQuery.stories.js.flow +80 -0
  66. package/es/components/media-query/stories/MediaQuery.stories.js.map +1 -0
  67. package/es/components/media-query/types.js +2 -0
  68. package/es/components/media-query/types.js.flow +29 -0
  69. package/es/components/media-query/types.js.map +1 -0
  70. package/es/components/media-query/useMediaQuery.js +91 -0
  71. package/es/components/media-query/useMediaQuery.js.flow +97 -0
  72. package/es/components/media-query/useMediaQuery.js.map +1 -0
  73. package/es/components/media-query/withMediaQuery.js +21 -0
  74. package/es/components/media-query/withMediaQuery.js.flow +23 -0
  75. package/es/components/media-query/withMediaQuery.js.map +1 -0
  76. package/es/components/modal/Modal.scss +27 -0
  77. package/es/components/preview/previewIcons.js +4 -0
  78. package/es/components/preview/previewIcons.js.map +1 -1
  79. package/es/components/search-form/SearchForm.scss +0 -5
  80. package/es/components/selector-dropdown/SelectorDropdown.js +5 -3
  81. package/es/components/selector-dropdown/SelectorDropdown.js.flow +3 -3
  82. package/es/components/selector-dropdown/SelectorDropdown.js.map +1 -1
  83. package/es/components/tab-view/Tabs.scss +0 -4
  84. package/es/components/tooltip/Tooltip.js +21 -4
  85. package/es/components/tooltip/Tooltip.js.map +1 -1
  86. package/es/constants.js +1 -0
  87. package/es/constants.js.flow +1 -0
  88. package/es/constants.js.map +1 -1
  89. package/es/elements/content-open-with/IconFileMap.js +0 -2
  90. package/es/elements/content-open-with/IconFileMap.js.flow +0 -2
  91. package/es/elements/content-open-with/IconFileMap.js.map +1 -1
  92. package/es/elements/content-sidebar/Sidebar.js +2 -1
  93. package/es/elements/content-sidebar/Sidebar.js.flow +1 -1
  94. package/es/elements/content-sidebar/Sidebar.js.map +1 -1
  95. package/es/elements/content-sidebar/activity-feed/common/delete-confirmation/DeleteConfirmation.scss +3 -3
  96. package/es/elements/content-sidebar/activity-feed/task-form/TaskForm.js +14 -4
  97. package/es/elements/content-sidebar/activity-feed/task-form/TaskForm.js.flow +18 -5
  98. package/es/elements/content-sidebar/activity-feed/task-form/TaskForm.js.map +1 -1
  99. package/es/elements/content-sidebar/versions/StaticVersionSidebar.js +78 -0
  100. package/es/elements/content-sidebar/versions/StaticVersionSidebar.js.flow +97 -0
  101. package/es/elements/content-sidebar/versions/StaticVersionSidebar.js.map +1 -0
  102. package/es/elements/content-sidebar/versions/StaticVersionsSidebar.scss +67 -0
  103. package/es/elements/content-sidebar/versions/VersionsSidebar.js +12 -4
  104. package/es/elements/content-sidebar/versions/VersionsSidebar.js.flow +16 -3
  105. package/es/elements/content-sidebar/versions/VersionsSidebar.js.map +1 -1
  106. package/es/elements/content-sidebar/versions/VersionsSidebar.scss +5 -0
  107. package/es/elements/content-sidebar/versions/VersionsSidebarContainer.js +42 -10
  108. package/es/elements/content-sidebar/versions/VersionsSidebarContainer.js.flow +42 -7
  109. package/es/elements/content-sidebar/versions/VersionsSidebarContainer.js.map +1 -1
  110. package/es/elements/content-sidebar/versions/flowTypes.js.flow +1 -0
  111. package/es/elements/content-sidebar/versions/messages.js +20 -0
  112. package/es/elements/content-sidebar/versions/messages.js.flow +28 -0
  113. package/es/elements/content-sidebar/versions/messages.js.map +1 -1
  114. package/es/features/classification/constants.js +2 -1
  115. package/es/features/classification/constants.js.flow +2 -0
  116. package/es/features/classification/constants.js.map +1 -1
  117. package/es/features/classification/flowTypes.js +1 -0
  118. package/es/features/classification/flowTypes.js.flow +7 -1
  119. package/es/features/classification/flowTypes.js.map +1 -1
  120. package/es/features/classification/security-controls/SecurityControls.js +3 -4
  121. package/es/features/classification/security-controls/SecurityControls.js.flow +3 -4
  122. package/es/features/classification/security-controls/SecurityControls.js.map +1 -1
  123. package/es/features/classification/security-controls/SecurityControlsItem.js +1 -1
  124. package/es/features/classification/security-controls/SecurityControlsItem.js.flow +20 -17
  125. package/es/features/classification/security-controls/SecurityControlsItem.js.map +1 -1
  126. package/es/features/classification/security-controls/SecurityControlsItem.scss +4 -0
  127. package/es/features/classification/security-controls/SecurityControlsModal.js +2 -2
  128. package/es/features/classification/security-controls/SecurityControlsModal.js.flow +2 -2
  129. package/es/features/classification/security-controls/SecurityControlsModal.js.map +1 -1
  130. package/es/features/classification/security-controls/messages.js +4 -0
  131. package/es/features/classification/security-controls/messages.js.flow +5 -0
  132. package/es/features/classification/security-controls/messages.js.map +1 -1
  133. package/es/features/classification/security-controls/utils.js +56 -35
  134. package/es/features/classification/security-controls/utils.js.flow +51 -27
  135. package/es/features/classification/security-controls/utils.js.map +1 -1
  136. package/es/features/collapsible-sidebar/CollapsibleSidebar.js +9 -3
  137. package/es/features/collapsible-sidebar/CollapsibleSidebar.js.flow +13 -5
  138. package/es/features/collapsible-sidebar/CollapsibleSidebar.js.map +1 -1
  139. package/es/features/collapsible-sidebar/CollapsibleSidebar.scss +35 -3
  140. package/es/features/content-explorer/content-explorer/ContentExplorer.scss +1 -1
  141. package/es/features/content-explorer/item-list/ItemList.js +1 -0
  142. package/es/features/content-explorer/item-list/ItemList.js.flow +1 -0
  143. package/es/features/content-explorer/item-list/ItemList.js.map +1 -1
  144. package/es/features/content-explorer/item-list/ItemListName.js +13 -2
  145. package/es/features/content-explorer/item-list/ItemListName.js.flow +3 -2
  146. package/es/features/content-explorer/item-list/ItemListName.js.map +1 -1
  147. package/es/features/header-flyout/HeaderFlyout.js +8 -10
  148. package/es/features/header-flyout/HeaderFlyout.js.flow +4 -8
  149. package/es/features/header-flyout/HeaderFlyout.js.map +1 -1
  150. package/es/features/header-flyout/styles/HeaderFlyout.scss +54 -15
  151. package/es/features/header-flyout/styles/_variables.scss +4 -0
  152. package/es/features/message-center/components/message-center-modal/MessageCenterModal.js +1 -0
  153. package/es/features/message-center/components/message-center-modal/MessageCenterModal.js.flow +1 -0
  154. package/es/features/message-center/components/message-center-modal/MessageCenterModal.js.map +1 -1
  155. package/es/features/presence/PresenceCollaborator.js +90 -0
  156. package/es/features/presence/PresenceCollaborator.js.flow +81 -0
  157. package/es/features/presence/PresenceCollaborator.js.map +1 -0
  158. package/es/features/presence/PresenceCollaborator.scss +28 -0
  159. package/es/features/presence/PresenceCollaboratorsList.js +9 -57
  160. package/es/features/presence/PresenceCollaboratorsList.js.flow +7 -58
  161. package/es/features/presence/PresenceCollaboratorsList.js.map +1 -1
  162. package/es/features/presence/PresenceCollaboratorsList.scss +8 -35
  163. package/es/features/quick-search/QuickSearch.js +4 -2
  164. package/es/features/quick-search/QuickSearch.js.flow +13 -1
  165. package/es/features/quick-search/QuickSearch.js.map +1 -1
  166. package/es/features/unified-share-modal/SharedLinkSection.js +9 -20
  167. package/es/features/unified-share-modal/SharedLinkSection.js.flow +6 -27
  168. package/es/features/unified-share-modal/SharedLinkSection.js.map +1 -1
  169. package/es/features/unified-share-modal/UnifiedShareForm.js +95 -53
  170. package/es/features/unified-share-modal/UnifiedShareForm.js.flow +70 -14
  171. package/es/features/unified-share-modal/UnifiedShareForm.js.map +1 -1
  172. package/es/features/unified-share-modal/UnifiedShareModal.scss +3 -0
  173. package/es/features/unified-share-modal/flowTypes.js.flow +6 -0
  174. package/es/features/unified-share-modal/flowTypes.js.map +1 -1
  175. package/es/features/unified-share-modal/messages.js +8 -0
  176. package/es/features/unified-share-modal/messages.js.flow +10 -0
  177. package/es/features/unified-share-modal/messages.js.map +1 -1
  178. package/es/features/unified-share-modal/utils/mergeContacts.js +13 -10
  179. package/es/features/unified-share-modal/utils/mergeContacts.js.flow +4 -2
  180. package/es/features/unified-share-modal/utils/mergeContacts.js.map +1 -1
  181. package/es/icon/content/FileXbd32.js +39 -0
  182. package/es/icon/content/FileXbd32.js.flow +38 -0
  183. package/es/icon/content/FileXbd32.js.map +1 -0
  184. package/es/icon/content/FileXbd32.stories.js +13 -0
  185. package/es/icon/content/FileXbd32.stories.js.map +1 -0
  186. package/es/icon/content/FileXdw32.js +39 -0
  187. package/es/icon/content/FileXdw32.js.flow +38 -0
  188. package/es/icon/content/FileXdw32.js.map +1 -0
  189. package/es/icon/content/FileXdw32.stories.js +13 -0
  190. package/es/icon/content/FileXdw32.stories.js.map +1 -0
  191. package/es/icon/content/RetentionPolicyModifiable32.js +36 -0
  192. package/es/icon/content/RetentionPolicyModifiable32.js.flow +31 -0
  193. package/es/icon/content/RetentionPolicyModifiable32.js.map +1 -0
  194. package/es/icon/content/RetentionPolicyModifiable32.stories.js +13 -0
  195. package/es/icon/content/RetentionPolicyModifiable32.stories.js.map +1 -0
  196. package/es/icon/content/RetentionPolicyNonModifiable32.js +36 -0
  197. package/es/icon/content/RetentionPolicyNonModifiable32.js.flow +31 -0
  198. package/es/icon/content/RetentionPolicyNonModifiable32.js.map +1 -0
  199. package/es/icon/content/RetentionPolicyNonModifiable32.stories.js +13 -0
  200. package/es/icon/content/RetentionPolicyNonModifiable32.stories.js.map +1 -0
  201. package/es/icons/avatars/UnknownUserAvatar.js +10 -34
  202. package/es/icons/avatars/UnknownUserAvatar.js.map +1 -1
  203. package/es/icons/file-icon/FileIcon.js +8 -2
  204. package/es/icons/file-icon/FileIcon.js.flow +2 -2
  205. package/es/icons/file-icon/FileIcon.js.map +1 -1
  206. package/es/icons/general/IconSearch.js +1 -1
  207. package/es/icons/general/IconSearch.js.flow +1 -1
  208. package/es/icons/general/IconSearch.js.map +1 -1
  209. package/es/icons/general/IconSearchJuicy.js +30 -0
  210. package/es/icons/general/IconSearchJuicy.js.flow +26 -0
  211. package/es/icons/general/IconSearchJuicy.js.map +1 -0
  212. package/es/icons/google-docs/IconGoogle.js +89 -0
  213. package/es/icons/google-docs/IconGoogle.js.flow +57 -0
  214. package/es/icons/google-docs/IconGoogle.js.map +1 -0
  215. package/es/icons/item-icon/ItemIcon.js +4 -0
  216. package/es/icons/item-icon/ItemIcon.js.map +1 -1
  217. package/es/icons/microsoft-office/IconOffice.js +80 -0
  218. package/es/icons/microsoft-office/IconOffice.js.flow +45 -0
  219. package/es/icons/microsoft-office/IconOffice.js.map +1 -0
  220. package/es/illustration/EmailVerification140.js +111 -0
  221. package/es/illustration/EmailVerification140.js.flow +102 -0
  222. package/es/illustration/EmailVerification140.js.map +1 -0
  223. package/es/illustration/EmailVerification140.stories.js +13 -0
  224. package/es/illustration/EmailVerification140.stories.js.map +1 -0
  225. package/es/src/components/close-button/CloseButton.d.ts +9 -0
  226. package/es/src/components/close-button/CloseButton.stories.d.ts +9 -0
  227. package/es/src/components/close-button/__tests__/CloseButton.stories.test.d.ts +0 -0
  228. package/es/src/components/close-button/__tests__/CloseButton.test.d.ts +1 -0
  229. package/es/src/components/close-button/index.d.ts +1 -0
  230. package/es/src/components/date-picker/AccessiblePikaday.d.ts +16 -0
  231. package/es/src/components/date-picker/DatePicker.d.ts +33 -6
  232. package/es/src/components/date-picker/DatePicker.stories.d.ts +2 -1
  233. package/es/src/components/flyout/OverlayHeader.d.ts +10 -0
  234. package/es/src/components/tooltip/Tooltip.d.ts +4 -3
  235. package/es/src/icon/content/FileXbd32.d.ts +13 -0
  236. package/es/src/icon/content/FileXbd32.stories.d.ts +9 -0
  237. package/es/src/icon/content/FileXdw32.d.ts +13 -0
  238. package/es/src/icon/content/FileXdw32.stories.d.ts +9 -0
  239. package/es/src/icon/content/RetentionPolicyModifiable32.d.ts +13 -0
  240. package/es/src/icon/content/RetentionPolicyModifiable32.stories.d.ts +9 -0
  241. package/es/src/icon/content/RetentionPolicyNonModifiable32.d.ts +13 -0
  242. package/es/src/icon/content/RetentionPolicyNonModifiable32.stories.d.ts +9 -0
  243. package/es/src/icons/avatars/UnknownUserAvatar.d.ts +0 -1
  244. package/es/src/icons/general/IconSearchJuicy.d.ts +3 -0
  245. package/es/src/icons/general/__tests__/IconSearchJuicy.test.d.ts +1 -0
  246. package/es/src/icons/google-docs/IconGoogle.d.ts +12 -0
  247. package/es/src/icons/google-docs/__tests__/IconGoogle.test.d.ts +1 -0
  248. package/es/src/icons/item-icon/ItemIcon.d.ts +2 -0
  249. package/es/src/icons/microsoft-office/IconOffice.d.ts +12 -0
  250. package/es/src/icons/microsoft-office/__tests__/IconOffice.test.d.ts +1 -0
  251. package/es/src/illustration/EmailVerification140.d.ts +13 -0
  252. package/es/src/illustration/EmailVerification140.stories.d.ts +9 -0
  253. package/es/src/styles/variables.d.ts +9 -0
  254. package/es/styles/_variables.scss +1 -0
  255. package/es/styles/common/_forms.scss +6 -0
  256. package/es/styles/constants/_layout.scss +3 -0
  257. package/es/styles/constants/_media-queries.scss +15 -0
  258. package/es/styles/variables.js +18 -0
  259. package/es/styles/variables.js.flow +10 -1
  260. package/es/styles/variables.js.map +1 -1
  261. package/es/utils/Browser.js +12 -0
  262. package/es/utils/Browser.js.flow +10 -0
  263. package/es/utils/Browser.js.map +1 -1
  264. package/es/utils/validators.js +26 -4
  265. package/es/utils/validators.js.flow +25 -3
  266. package/es/utils/validators.js.map +1 -1
  267. package/i18n/bn-IN.js +12 -0
  268. package/i18n/bn-IN.properties +24 -0
  269. package/i18n/da-DK.js +12 -0
  270. package/i18n/da-DK.properties +24 -0
  271. package/i18n/de-DE.js +12 -0
  272. package/i18n/de-DE.properties +24 -0
  273. package/i18n/en-AU.js +12 -0
  274. package/i18n/en-AU.properties +24 -0
  275. package/i18n/en-CA.js +12 -0
  276. package/i18n/en-CA.properties +24 -0
  277. package/i18n/en-GB.js +12 -0
  278. package/i18n/en-GB.properties +24 -0
  279. package/i18n/en-US.js +12 -0
  280. package/i18n/en-US.properties +24 -0
  281. package/i18n/en-x-pseudo.js +12 -0
  282. package/i18n/es-419.js +12 -0
  283. package/i18n/es-419.properties +24 -0
  284. package/i18n/es-ES.js +12 -0
  285. package/i18n/es-ES.properties +24 -0
  286. package/i18n/fi-FI.js +12 -0
  287. package/i18n/fi-FI.properties +24 -0
  288. package/i18n/fr-CA.js +12 -0
  289. package/i18n/fr-CA.properties +24 -0
  290. package/i18n/fr-FR.js +12 -0
  291. package/i18n/fr-FR.properties +24 -0
  292. package/i18n/hi-IN.js +12 -0
  293. package/i18n/hi-IN.properties +24 -0
  294. package/i18n/it-IT.js +12 -0
  295. package/i18n/it-IT.properties +24 -0
  296. package/i18n/ja-JP.js +25 -13
  297. package/i18n/ja-JP.properties +37 -13
  298. package/i18n/ko-KR.js +12 -0
  299. package/i18n/ko-KR.properties +24 -0
  300. package/i18n/nb-NO.js +12 -0
  301. package/i18n/nb-NO.properties +24 -0
  302. package/i18n/nl-NL.js +12 -0
  303. package/i18n/nl-NL.properties +24 -0
  304. package/i18n/pl-PL.js +12 -0
  305. package/i18n/pl-PL.properties +24 -0
  306. package/i18n/pt-BR.js +12 -0
  307. package/i18n/pt-BR.properties +24 -0
  308. package/i18n/ru-RU.js +12 -0
  309. package/i18n/ru-RU.properties +24 -0
  310. package/i18n/sv-SE.js +12 -0
  311. package/i18n/sv-SE.properties +24 -0
  312. package/i18n/tr-TR.js +12 -0
  313. package/i18n/tr-TR.properties +24 -0
  314. package/i18n/zh-CN.js +12 -0
  315. package/i18n/zh-CN.properties +24 -0
  316. package/i18n/zh-TW.js +12 -0
  317. package/i18n/zh-TW.properties +24 -0
  318. package/package.json +8 -5
  319. package/src/__mocks__/pikaday.js +1 -0
  320. package/src/api/__tests__/MockOpenWithData.json +2 -25
  321. package/src/api/uploads/UploadsReachability.js +2 -2
  322. package/src/common/messages.js +5 -0
  323. package/src/common/types/core.js +2 -0
  324. package/src/components/avatar/UnknownUserAvatar.tsx +5 -4
  325. package/src/components/close-button/CloseButton.js.flow +26 -0
  326. package/src/components/close-button/CloseButton.scss +10 -0
  327. package/src/components/close-button/CloseButton.stories.md +1 -0
  328. package/src/components/close-button/CloseButton.stories.tsx +14 -0
  329. package/src/components/close-button/CloseButton.tsx +30 -0
  330. package/src/components/close-button/__tests__/CloseButton.stories.test.tsx +6 -0
  331. package/src/components/close-button/__tests__/CloseButton.test.tsx +40 -0
  332. package/src/components/close-button/__tests__/__image_snapshots__/close-button-stories-test-tsx-components-close-button-close-button-looks-visually-correct-when-using-story-components-buttons-closebutton-regular-1-snap.png +0 -0
  333. package/src/components/close-button/index.js.flow +2 -0
  334. package/src/components/close-button/index.ts +1 -0
  335. package/src/components/date-picker/AccessiblePikaday.ts +79 -0
  336. package/src/components/date-picker/DatePicker.scss +32 -22
  337. package/src/components/date-picker/DatePicker.stories.tsx +6 -0
  338. package/src/components/date-picker/DatePicker.tsx +350 -64
  339. package/src/components/date-picker/__tests__/DatePicker.test.tsx +44 -2
  340. package/src/components/date-picker/__tests__/__image_snapshots__/date-picker-stories-test-tsx-components-date-picker-date-picker-allows-editing-in-story-components-datepicker-manually-editable-1-snap.png +0 -0
  341. package/src/components/date-picker/__tests__/__image_snapshots__/date-picker-stories-test-tsx-components-date-picker-date-picker-allows-keyboard-selection-in-components-datepicker-always-visible-with-custom-input-field-1-snap.png +0 -0
  342. package/src/components/date-picker/__tests__/__image_snapshots__/date-picker-stories-test-tsx-components-date-picker-date-picker-closes-calendar-and-clears-date-for-components-datepicker-basic-1-snap.png +0 -0
  343. package/src/components/date-picker/__tests__/__image_snapshots__/date-picker-stories-test-tsx-components-date-picker-date-picker-looks-visually-correct-when-using-story-components-datepicker-always-visible-with-custom-input-field-1-snap.png +0 -0
  344. package/src/components/date-picker/__tests__/__image_snapshots__/date-picker-stories-test-tsx-components-date-picker-date-picker-looks-visually-correct-when-using-story-components-datepicker-basic-1-snap.png +0 -0
  345. package/src/components/date-picker/__tests__/__image_snapshots__/date-picker-stories-test-tsx-components-date-picker-date-picker-looks-visually-correct-when-using-story-components-datepicker-custom-error-tooltip-position-1-snap.png +0 -0
  346. package/src/components/date-picker/__tests__/__image_snapshots__/date-picker-stories-test-tsx-components-date-picker-date-picker-looks-visually-correct-when-using-story-components-datepicker-disabled-with-error-message-1-snap.png +0 -0
  347. package/src/components/date-picker/__tests__/__image_snapshots__/date-picker-stories-test-tsx-components-date-picker-date-picker-looks-visually-correct-when-using-story-components-datepicker-manually-editable-1-snap.png +0 -0
  348. package/src/components/date-picker/__tests__/__image_snapshots__/date-picker-stories-test-tsx-components-date-picker-date-picker-looks-visually-correct-when-using-story-components-datepicker-with-description-1-snap.png +0 -0
  349. package/src/components/date-picker/__tests__/__image_snapshots__/date-picker-stories-test-tsx-components-date-picker-date-picker-looks-visually-correct-when-using-story-components-datepicker-with-limited-date-range-1-snap.png +0 -0
  350. package/src/components/date-picker/__tests__/__image_snapshots__/date-picker-stories-test-tsx-components-date-picker-date-picker-looks-visually-correct-when-using-story-components-datepicker-with-range-1-snap.png +0 -0
  351. package/src/components/date-picker/__tests__/__image_snapshots__/date-picker-stories-test-tsx-components-date-picker-date-picker-reflects-changes-in-components-datepicker-always-visible-with-custom-input-field-1-snap.png +0 -0
  352. package/src/components/date-picker/__tests__/__image_snapshots__/date-picker-stories-test-tsx-components-date-picker-date-picker-shows-calendar-and-date-for-components-datepicker-basic-1-snap.png +0 -0
  353. package/src/components/date-picker/__tests__/__image_snapshots__/date-picker-stories-test-tsx-components-date-picker-date-picker-shows-limited-range-in-components-datepicker-with-limited-date-range-1-snap.png +0 -0
  354. package/src/components/date-picker/_pikaday.scss +8 -2
  355. package/src/components/flyout/Flyout.js +14 -3
  356. package/src/components/flyout/Flyout.scss +40 -0
  357. package/src/components/flyout/FlyoutContext.js +9 -0
  358. package/src/components/flyout/OverlayHeader.scss +9 -0
  359. package/src/components/flyout/OverlayHeader.tsx +38 -0
  360. package/src/components/flyout/__tests__/Flyout.test.js +15 -0
  361. package/src/components/flyout/__tests__/OverlayHeader.test.js +56 -0
  362. package/src/components/flyout/_variables.scss +1 -0
  363. package/src/components/flyout/index.js +2 -0
  364. package/src/components/image-tooltip/ImageTooltip.tsx +1 -2
  365. package/src/components/media-query/__tests__/useMediaQuery.test.js +48 -0
  366. package/src/components/media-query/__tests__/withMediaQuery.test.js +29 -0
  367. package/src/components/media-query/constants.js +32 -0
  368. package/src/components/media-query/index.js +4 -0
  369. package/src/components/media-query/stories/MediaQuery.stories.js +80 -0
  370. package/src/components/media-query/stories/MediaQuery.stories.md +29 -0
  371. package/src/components/media-query/types.js +29 -0
  372. package/src/components/media-query/useMediaQuery.js +97 -0
  373. package/src/components/media-query/withMediaQuery.js +23 -0
  374. package/src/components/modal/Modal.scss +27 -0
  375. package/src/components/modal/__tests__/Modal.stories.test.js +10 -0
  376. package/src/components/modal/__tests__/__image_snapshots__/modal-stories-test-js-components-modal-modal-looks-visually-correct-for-small-screens-when-button-is-clicked-in-story-components-modal-basic-1-snap.png +0 -0
  377. package/src/components/modal/__tests__/__image_snapshots__/modal-stories-test-js-components-modal-modal-looks-visually-correct-for-small-screens-when-button-is-clicked-in-story-components-modal-with-custom-backdrop-click-handler-1-snap.png +0 -0
  378. package/src/components/preview/previewIcons.ts +4 -0
  379. package/src/components/search-form/SearchForm.scss +0 -5
  380. package/src/components/selector-dropdown/SelectorDropdown.js +3 -3
  381. package/src/components/selector-dropdown/__tests__/SelectorDropdown.test.js +5 -1
  382. package/src/components/sidebar-toggle-button/__tests__/__snapshots__/SidebarToggleButton.test.js.snap +0 -8
  383. package/src/components/tab-view/Tabs.scss +0 -4
  384. package/src/components/tooltip/Tooltip.tsx +20 -5
  385. package/src/components/tooltip/__tests__/Tooltip.test.tsx +17 -4
  386. package/src/components/tooltip/__tests__/__snapshots__/Tooltip.test.tsx.snap +0 -2
  387. package/src/constants.js +1 -0
  388. package/src/elements/content-open-with/IconFileMap.js +0 -2
  389. package/src/elements/content-open-with/__tests__/ContentOpenWith.test.js +13 -13
  390. package/src/elements/content-open-with/__tests__/OpenWithButton.test.js +1 -1
  391. package/src/elements/content-open-with/__tests__/OpenWithDropdownMenu.test.js +1 -5
  392. package/src/elements/content-open-with/__tests__/OpenWithDropdownMenuItem.test.js +2 -2
  393. package/src/elements/content-open-with/__tests__/__snapshots__/ContentOpenWith.test.js.snap +5 -5
  394. package/src/elements/content-open-with/__tests__/__snapshots__/OpenWithButton.test.js.snap +1 -1
  395. package/src/elements/content-open-with/__tests__/__snapshots__/OpenWithDropdownMenu.test.js.snap +1 -11
  396. package/src/elements/content-open-with/__tests__/__snapshots__/OpenWithDropdownMenuItem.test.js.snap +4 -3
  397. package/src/elements/content-sidebar/Sidebar.js +1 -1
  398. package/src/elements/content-sidebar/__tests__/AddTaskButton.test.js +15 -0
  399. package/src/elements/content-sidebar/activity-feed/common/delete-confirmation/DeleteConfirmation.scss +3 -3
  400. package/src/elements/content-sidebar/activity-feed/task-form/TaskForm.js +18 -5
  401. package/src/elements/content-sidebar/versions/StaticVersionSidebar.js +97 -0
  402. package/src/elements/content-sidebar/versions/StaticVersionsSidebar.scss +67 -0
  403. package/src/elements/content-sidebar/versions/VersionsSidebar.js +16 -3
  404. package/src/elements/content-sidebar/versions/VersionsSidebar.scss +5 -0
  405. package/src/elements/content-sidebar/versions/VersionsSidebarContainer.js +42 -7
  406. package/src/elements/content-sidebar/versions/__tests__/VersionsSidebar.test.js +18 -1
  407. package/src/elements/content-sidebar/versions/__tests__/VersionsSidebarContainer.test.js +51 -2
  408. package/src/elements/content-sidebar/versions/__tests__/__snapshots__/VersionsSidebarContainer.test.js.snap +75 -0
  409. package/src/elements/content-sidebar/versions/flowTypes.js +1 -0
  410. package/src/elements/content-sidebar/versions/messages.js +28 -0
  411. package/src/features/classification/constants.js +2 -0
  412. package/src/features/classification/flowTypes.js +7 -1
  413. package/src/features/classification/security-controls/SecurityControls.js +3 -4
  414. package/src/features/classification/security-controls/SecurityControlsItem.js +20 -17
  415. package/src/features/classification/security-controls/SecurityControlsItem.scss +4 -0
  416. package/src/features/classification/security-controls/SecurityControlsModal.js +2 -2
  417. package/src/features/classification/security-controls/__tests__/SecurityControlsItem.test.js +10 -0
  418. package/src/features/classification/security-controls/__tests__/__snapshots__/SecurityControls.test.js.snap +6 -6
  419. package/src/features/classification/security-controls/__tests__/__snapshots__/SecurityControlsItem.test.js.snap +35 -0
  420. package/src/features/classification/security-controls/__tests__/__snapshots__/SecurityControlsModal.test.js.snap +2 -2
  421. package/src/features/classification/security-controls/__tests__/__snapshots__/utils.test.js.snap +20 -0
  422. package/src/features/classification/security-controls/__tests__/utils.test.js +38 -18
  423. package/src/features/classification/security-controls/messages.js +5 -0
  424. package/src/features/classification/security-controls/utils.js +51 -27
  425. package/src/features/collapsible-sidebar/CollapsibleSidebar.js +13 -5
  426. package/src/features/collapsible-sidebar/CollapsibleSidebar.scss +35 -3
  427. package/src/features/collapsible-sidebar/__tests__/CollapsibleSidebar.test.js +35 -0
  428. package/src/features/collapsible-sidebar/__tests__/__snapshots__/CollapsibleSidebar.test.js.snap +1 -0
  429. package/src/features/content-explorer/content-explorer/ContentExplorer.scss +1 -1
  430. package/src/features/content-explorer/item-list/ItemList.js +1 -0
  431. package/src/features/content-explorer/item-list/ItemListName.js +3 -2
  432. package/src/features/content-explorer/item-list/__tests__/ItemListName.test.js +16 -2
  433. package/src/features/header-flyout/HeaderFlyout.js +4 -8
  434. package/src/features/header-flyout/__tests__/__snapshots__/HeaderFlyout.test.js.snap +14 -11
  435. package/src/features/header-flyout/styles/HeaderFlyout.scss +54 -15
  436. package/src/features/header-flyout/styles/_variables.scss +4 -0
  437. package/src/features/message-center/components/message-center-modal/MessageCenterModal.js +1 -0
  438. package/src/features/metadata-instance-editor/__tests__/__snapshots__/TemplateDropdown.test.js.snap +7 -0
  439. package/src/features/pagination/__tests__/__snapshots__/MarkerBasedPagination.test.js.snap +0 -8
  440. package/src/features/pagination/__tests__/__snapshots__/OffsetBasedPagination.test.js.snap +0 -16
  441. package/src/features/presence/PresenceCollaborator.js +81 -0
  442. package/src/features/presence/PresenceCollaborator.scss +28 -0
  443. package/src/features/presence/PresenceCollaboratorsList.js +7 -58
  444. package/src/features/presence/PresenceCollaboratorsList.scss +8 -35
  445. package/src/features/presence/__tests__/PresenceCollaborator.test.js +36 -0
  446. package/src/features/presence/__tests__/PresenceCollaboratorsList.test.js +13 -57
  447. package/src/features/presence/__tests__/__snapshots__/Presence.test.js.snap +5 -0
  448. package/src/features/presence/__tests__/__snapshots__/PresenceLink.test.js.snap +3 -0
  449. package/src/features/query-bar/__tests__/__snapshots__/ColumnButton.test.js.snap +3 -0
  450. package/src/features/quick-search/QuickSearch.js +13 -1
  451. package/src/features/quick-search/__tests__/QuickSearch.test.js +17 -0
  452. package/src/features/unified-share-modal/SharedLinkSection.js +6 -27
  453. package/src/features/unified-share-modal/UnifiedShareForm.js +70 -14
  454. package/src/features/unified-share-modal/UnifiedShareModal.scss +3 -0
  455. package/src/features/unified-share-modal/__tests__/EmailForm.test.js +9 -0
  456. package/src/features/unified-share-modal/__tests__/SharedLinkSection.test.js +14 -4
  457. package/src/features/unified-share-modal/__tests__/UnifiedShareForm.test.js +53 -4
  458. package/src/features/unified-share-modal/__tests__/__snapshots__/SharedLinkSection.test.js.snap +9 -0
  459. package/src/features/unified-share-modal/__tests__/__snapshots__/UnifiedShareForm.test.js.snap +0 -159
  460. package/src/features/unified-share-modal/flowTypes.js +6 -0
  461. package/src/features/unified-share-modal/messages.js +10 -0
  462. package/src/features/unified-share-modal/utils/__tests__/mergeContacts.test.js +23 -0
  463. package/src/features/unified-share-modal/utils/mergeContacts.js +4 -2
  464. package/src/icon/content/FileXbd32.js.flow +38 -0
  465. package/src/icon/content/FileXbd32.stories.tsx +13 -0
  466. package/src/icon/content/FileXbd32.tsx +37 -0
  467. package/src/icon/content/FileXdw32.js.flow +38 -0
  468. package/src/icon/content/FileXdw32.stories.tsx +13 -0
  469. package/src/icon/content/FileXdw32.tsx +37 -0
  470. package/src/icon/content/RetentionPolicyModifiable32.js.flow +31 -0
  471. package/src/icon/content/RetentionPolicyModifiable32.stories.tsx +14 -0
  472. package/src/icon/content/RetentionPolicyModifiable32.tsx +29 -0
  473. package/src/icon/content/RetentionPolicyNonModifiable32.js.flow +31 -0
  474. package/src/icon/content/RetentionPolicyNonModifiable32.stories.tsx +14 -0
  475. package/src/icon/content/RetentionPolicyNonModifiable32.tsx +29 -0
  476. package/src/icons/adobe-sign/README.md +1 -1
  477. package/src/icons/avatars/UnknownUserAvatar.tsx +7 -15
  478. package/src/icons/file-icon/FileIcon.js.flow +2 -2
  479. package/src/icons/file-icon/FileIcon.tsx +8 -2
  480. package/src/icons/file-icon/__tests__/FileIcon.test.tsx +28 -69
  481. package/src/icons/file-icon/__tests__/__snapshots__/FileIcon.test.tsx.snap +48 -34
  482. package/src/icons/general/IconSearch.js.flow +1 -1
  483. package/src/icons/general/IconSearch.tsx +1 -1
  484. package/src/icons/general/IconSearchJuicy.js.flow +26 -0
  485. package/src/icons/general/IconSearchJuicy.tsx +25 -0
  486. package/src/icons/general/README.md +5 -0
  487. package/src/icons/general/__tests__/IconSearchJuicy.test.tsx +38 -0
  488. package/src/icons/google-docs/IconGoogle.js.flow +57 -0
  489. package/src/icons/google-docs/IconGoogle.tsx +50 -0
  490. package/src/icons/google-docs/__tests__/IconGoogle.test.tsx +44 -0
  491. package/src/icons/item-icon/ItemIcon.tsx +4 -0
  492. package/src/icons/item-icon/__tests__/ItemIcon.test.tsx +47 -115
  493. package/src/icons/item-icon/__tests__/__snapshots__/ItemIcon.test.tsx.snap +229 -229
  494. package/src/icons/microsoft-office/IconOffice.js.flow +45 -0
  495. package/src/icons/microsoft-office/IconOffice.tsx +38 -0
  496. package/src/icons/microsoft-office/__tests__/IconOffice.test.tsx +44 -0
  497. package/src/illustration/EmailVerification140.js.flow +102 -0
  498. package/src/illustration/EmailVerification140.stories.tsx +13 -0
  499. package/src/illustration/EmailVerification140.tsx +100 -0
  500. package/src/styles/_variables.scss +1 -0
  501. package/src/styles/common/_forms.scss +6 -0
  502. package/src/styles/constants/_layout.scss +3 -0
  503. package/src/styles/constants/_media-queries.scss +15 -0
  504. package/src/styles/variables.js +10 -1
  505. package/src/styles/variables.json +10 -1
  506. package/src/styles/variables.ts +9 -0
  507. package/src/utils/Browser.js +10 -0
  508. package/src/utils/validators.js +25 -3
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/flyout/Flyout.js"],"names":["React","TetherComponent","uniqueId","KEYS","BOTTOM_CENTER","BOTTOM_LEFT","BOTTOM_RIGHT","MIDDLE_LEFT","MIDDLE_RIGHT","TOP_CENTER","TOP_LEFT","TOP_RIGHT","positions","attachment","targetAttachment","hasClickableAncestor","rootNode","targetNode","currentNode","Node","parentNode","nodeName","toUpperCase","hasClassAncestor","targetEl","className","el","HTMLElement","classList","contains","Flyout","props","event","overlayNode","document","getElementById","overlayID","closeOnClick","closeOnClickPredicate","target","handleOverlayClose","isVisible","state","closeOverlay","openOverlay","isButtonClicked","isTrusted","setState","preventDefault","openOnHover","openOnHoverDelayTimeout","clearTimeout","hoverDelay","setTimeout","enter","focusButton","onOpen","onClose","buttonEl","overlayButtonID","focus","portaledClasses","closeOnClickOutside","closeOnWindowBlur","buttonNode","isInsideToggleButton","isInsideOverlay","isInside","some","isVisibleByDefault","prevProps","prevState","addEventListener","handleDocumentClickOrWindowBlur","window","removeEventListener","children","constrainToScrollParent","constrainToWindow","offset","position","shouldDefaultFocus","elements","Children","toArray","tetherPosition","length","Error","overlayButton","overlayContent","overlayButtonProps","id","key","onClick","handleButtonClick","onKeyPress","handleKeyPress","onMouseEnter","handleButtonHover","onMouseLeave","handleButtonHoverLeave","role","tabindex","overlayProps","handleOverlayClick","constraints","push","to","tetherProps","classPrefix","enabled","classes","element","cloneElement","Component"],"mappings":"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","sourcesContent":["// @flow\nimport * as React from 'react';\nimport TetherComponent from 'react-tether';\nimport uniqueId from 'lodash/uniqueId';\nimport { KEYS } from '../../constants';\n\nimport './Flyout.scss';\n\nconst BOTTOM_CENTER = 'bottom-center';\nconst BOTTOM_LEFT = 'bottom-left';\nconst BOTTOM_RIGHT = 'bottom-right';\nconst MIDDLE_LEFT = 'middle-left';\nconst MIDDLE_RIGHT = 'middle-right';\nconst TOP_CENTER = 'top-center';\nconst TOP_LEFT = 'top-left';\nconst TOP_RIGHT = 'top-right';\n\nconst positions = {\n [BOTTOM_CENTER]: {\n attachment: 'top center',\n targetAttachment: 'bottom center',\n },\n [BOTTOM_LEFT]: {\n attachment: 'top right',\n targetAttachment: 'bottom right',\n },\n [BOTTOM_RIGHT]: {\n attachment: 'top left',\n targetAttachment: 'bottom left',\n },\n [MIDDLE_LEFT]: {\n attachment: 'middle right',\n targetAttachment: 'middle left',\n },\n [MIDDLE_RIGHT]: {\n attachment: 'middle left',\n targetAttachment: 'middle right',\n },\n [TOP_CENTER]: {\n attachment: 'bottom center',\n targetAttachment: 'top center',\n },\n [TOP_LEFT]: {\n attachment: 'bottom right',\n targetAttachment: 'top right',\n },\n [TOP_RIGHT]: {\n attachment: 'bottom left',\n targetAttachment: 'top left',\n },\n};\n\n/**\n * Checks if there is a clickable ancestor or self\n * @param {Node} rootNode The base node we should stop at\n * @param {Node} targetNode The target node of the event\n * @returns {boolean}\n */\nconst hasClickableAncestor = (rootNode, targetNode) => {\n // Check if the element or any of the ancestors are click-able (stopping at the component boundary)\n let currentNode = targetNode;\n while (currentNode && currentNode instanceof Node && currentNode.parentNode && currentNode !== rootNode) {\n const nodeName = currentNode.nodeName.toUpperCase();\n if (nodeName === 'A' || nodeName === 'BUTTON') {\n return true;\n }\n currentNode = currentNode.parentNode;\n }\n return false;\n};\n\n/**\n * Checks if the target element is inside an element with the given CSS class.\n * @param {HTMLElement} targetEl The target element\n * @param {string} className A CSS class on the element to check for\n */\nconst hasClassAncestor = (targetEl, className) => {\n let el = targetEl;\n while (el && el instanceof HTMLElement) {\n if (el.classList.contains(className)) {\n return true;\n }\n el = el.parentNode;\n }\n return false;\n};\n\nexport type FlyoutProps = {\n children: React.Node,\n /**\n * Set className to the overlay wrapper\n */\n className?: string,\n /**\n * If set to true, closes the overlay on clicking buttons/links inside\n * of it\n */\n closeOnClick?: boolean,\n /**\n * If set to true, closes the overlay on clicking outside of it\n */\n closeOnClickOutside?: boolean,\n /**\n * Function that will interrogate the click event to determine whether or not to close the overlay if closeOnClick is enabled\n */\n closeOnClickPredicate?: Function,\n /**\n * If set to true, closes the overlay when window loses focus\n */\n closeOnWindowBlur?: boolean,\n /**\n * Sets tether constrain to scrollParent\n */\n constrainToScrollParent?: boolean,\n /**\n * Sets tether constrain to window\n */\n constrainToWindow?: boolean,\n /**\n * Whether overlay should be visible by default\n */\n isVisibleByDefault: boolean,\n /**\n * Will fire this callback when the flyout should open\n */\n offset?: string,\n /**\n * Will fire this callback when the flyout should close\n */\n onClose?: Function,\n /**\n * Adjusts placement of the overlay (SEE http://tether.io/#options)\n */\n onOpen?: Function,\n /**\n * Whether overlay should open on hover\n */\n openOnHover?: boolean,\n /**\n * Time in milliseconds that the button should wait before opening and closing the flyout\n */\n openOnHoverDelayTimeout?: number,\n /** An array of CSS classes for portaled elements in the overlay, used to check whether a click is inside the overlay */\n portaledClasses: Array<string>,\n /**\n * Position of the overlay\n */\n position:\n | 'bottom-center'\n | 'bottom-left'\n | 'bottom-right'\n | 'middle-left'\n | 'middle-right'\n | 'top-center'\n | 'top-left'\n | 'top-right',\n /**\n * Prop whether to focus first focusable element or not\n */\n shouldDefaultFocus?: boolean,\n};\n\ntype State = {\n isButtonClicked: boolean,\n isVisible: boolean,\n};\n\ntype Props = FlyoutProps;\n\nclass Flyout extends React.Component<Props, State> {\n static defaultProps = {\n className: '',\n closeOnClick: true,\n closeOnClickOutside: true,\n closeOnWindowBlur: false,\n constrainToScrollParent: true,\n constrainToWindow: false,\n isVisibleByDefault: false,\n openOnHover: false,\n openOnHoverDelayTimeout: 300,\n portaledClasses: [],\n position: BOTTOM_RIGHT,\n };\n\n constructor(props: Props) {\n super(props);\n\n this.overlayID = uniqueId('overlay');\n this.overlayButtonID = uniqueId('flyoutbutton');\n this.state = {\n isVisible: props.isVisibleByDefault,\n isButtonClicked: false,\n };\n }\n\n componentDidUpdate(prevProps: Props, prevState: State) {\n if (!prevState.isVisible && this.state.isVisible) {\n const { closeOnClickOutside, closeOnWindowBlur } = this.props;\n // When overlay is being opened\n if (closeOnClickOutside) {\n document.addEventListener('click', this.handleDocumentClickOrWindowBlur, true);\n document.addEventListener('contextmenu', this.handleDocumentClickOrWindowBlur, true);\n }\n if (closeOnWindowBlur) {\n window.addEventListener('blur', this.handleDocumentClickOrWindowBlur, true);\n }\n } else if (prevState.isVisible && !this.state.isVisible) {\n // When overlay is being closed\n document.removeEventListener('contextmenu', this.handleDocumentClickOrWindowBlur, true);\n document.removeEventListener('click', this.handleDocumentClickOrWindowBlur, true);\n window.removeEventListener('blur', this.handleDocumentClickOrWindowBlur, true);\n }\n }\n\n componentWillUnmount() {\n if (this.state.isVisible) {\n // Clean-up global click handlers\n document.removeEventListener('contextmenu', this.handleDocumentClickOrWindowBlur, true);\n document.removeEventListener('click', this.handleDocumentClickOrWindowBlur, true);\n window.removeEventListener('blur', this.handleDocumentClickOrWindowBlur, true);\n }\n\n if (this.props.openOnHover && this.hoverDelay) {\n clearTimeout(this.hoverDelay);\n }\n }\n\n overlayButtonID: string;\n\n overlayID: string;\n\n handleOverlayClick = (event: SyntheticEvent<>) => {\n const overlayNode = document.getElementById(this.overlayID);\n const { closeOnClick, closeOnClickPredicate } = this.props;\n if (!closeOnClick || !hasClickableAncestor(overlayNode, event.target)) {\n return;\n }\n if (closeOnClickPredicate && !closeOnClickPredicate(event)) {\n return;\n }\n\n this.handleOverlayClose();\n };\n\n handleButtonClick = (event: SyntheticUIEvent<>) => {\n const { isVisible } = this.state;\n if (isVisible) {\n this.closeOverlay();\n } else {\n this.openOverlay();\n }\n\n // In at least one place, .click() is called programmatically\n // src/features/presence/Presence.js\n // In the programmatic case, the event is not supposed to trigger\n // autofocus of the content (TBD if this is truly correct behavior).\n // This line was using \"event.detail > 0\"\n // to detect if a click event was from a user, but that made keyboard\n // triggers of the button click behave differently than the mouse.\n // So, we use \"isTrusted\" instead. Note: React polyfills for IE11.\n // https://developer.mozilla.org/en-US/docs/Web/API/Event/isTrusted\n // https://reactjs.org/docs/events.html\n\n const isButtonClicked = event.isTrusted;\n\n this.setState({ isButtonClicked });\n\n event.preventDefault();\n };\n\n hoverDelay: TimeoutID | void;\n\n handleButtonHover = () => {\n const { openOnHover, openOnHoverDelayTimeout } = this.props;\n if (openOnHover) {\n clearTimeout(this.hoverDelay);\n this.hoverDelay = setTimeout(() => {\n this.openOverlay();\n }, openOnHoverDelayTimeout);\n }\n };\n\n handleButtonHoverLeave = () => {\n const { openOnHover, openOnHoverDelayTimeout } = this.props;\n if (openOnHover) {\n clearTimeout(this.hoverDelay);\n\n this.hoverDelay = setTimeout(() => {\n this.closeOverlay();\n }, openOnHoverDelayTimeout);\n }\n };\n\n handleKeyPress = () => {\n if (KEYS.enter) {\n this.openOverlay();\n this.focusButton();\n }\n };\n\n openOverlay = () => {\n this.setState({\n isVisible: true,\n });\n\n const { onOpen } = this.props;\n if (onOpen) {\n onOpen();\n }\n };\n\n closeOverlay = () => {\n this.setState({\n isVisible: false,\n });\n\n const { onClose } = this.props;\n if (onClose) {\n onClose();\n }\n };\n\n focusButton = () => {\n const buttonEl = document.getElementById(this.overlayButtonID);\n if (buttonEl) {\n buttonEl.focus();\n }\n };\n\n handleOverlayClose = () => {\n this.focusButton();\n this.closeOverlay();\n };\n\n handleDocumentClickOrWindowBlur = (event: MouseEvent | FocusEvent) => {\n const { portaledClasses, closeOnClickOutside, closeOnWindowBlur } = this.props;\n const { isVisible } = this.state;\n\n if (!isVisible || !(closeOnClickOutside || closeOnWindowBlur)) {\n return;\n }\n\n const overlayNode = document.getElementById(this.overlayID);\n const buttonNode = document.getElementById(this.overlayButtonID);\n\n const isInsideToggleButton =\n (buttonNode && event.target instanceof Node && buttonNode.contains(event.target)) ||\n buttonNode === event.target;\n const isInsideOverlay =\n (overlayNode && event.target instanceof Node && overlayNode.contains(event.target)) ||\n overlayNode === event.target;\n const isInside = isInsideToggleButton || isInsideOverlay;\n\n if (isInside || portaledClasses.some(className => hasClassAncestor(event.target, className))) {\n return;\n }\n\n // Only close overlay when the click is outside of the flyout or window loses focus\n this.closeOverlay();\n };\n\n render() {\n const {\n children,\n className = '',\n constrainToScrollParent,\n constrainToWindow,\n offset,\n openOnHover,\n position,\n shouldDefaultFocus,\n } = this.props;\n const { isButtonClicked, isVisible } = this.state;\n const elements = React.Children.toArray(children);\n const tetherPosition = positions[position];\n\n if (elements.length !== 2) {\n throw new Error('Flyout must have exactly two children: A button component and a <Overlay>');\n }\n\n const overlayButton = elements[0];\n const overlayContent = elements[1];\n\n const overlayButtonProps: Object = {\n id: this.overlayButtonID,\n key: this.overlayButtonID,\n onClick: this.handleButtonClick,\n onKeyPress: this.handleKeyPress,\n onMouseEnter: this.handleButtonHover,\n onMouseLeave: this.handleButtonHoverLeave,\n role: 'button',\n tabindex: '0',\n 'aria-haspopup': 'true',\n 'aria-expanded': isVisible ? 'true' : 'false',\n };\n\n if (isVisible) {\n overlayButtonProps['aria-controls'] = this.overlayID;\n }\n\n const overlayProps = {\n id: this.overlayID,\n key: this.overlayID,\n role: 'dialog',\n onClick: this.handleOverlayClick,\n onClose: this.handleOverlayClose,\n onMouseEnter: this.handleButtonHover,\n onMouseLeave: this.handleButtonHoverLeave,\n shouldDefaultFocus: shouldDefaultFocus || (!isButtonClicked && !openOnHover),\n 'aria-labelledby': this.overlayButtonID,\n };\n\n const constraints = [];\n\n if (constrainToScrollParent) {\n constraints.push({\n to: 'scrollParent',\n attachment: 'together',\n });\n }\n\n if (constrainToWindow) {\n constraints.push({\n to: 'window',\n attachment: 'together',\n });\n }\n\n const tetherProps: Object = {\n classPrefix: 'flyout-overlay',\n attachment: tetherPosition.attachment,\n targetAttachment: tetherPosition.targetAttachment,\n enabled: isVisible,\n classes: {\n element: `flyout-overlay ${className}`,\n },\n constraints,\n };\n\n if (offset) {\n tetherProps.offset = offset;\n } else {\n switch (position) {\n case BOTTOM_CENTER:\n case BOTTOM_LEFT:\n case BOTTOM_RIGHT:\n tetherProps.offset = '-10px 0';\n break;\n case TOP_CENTER:\n case TOP_LEFT:\n case TOP_RIGHT:\n tetherProps.offset = '10px 0';\n break;\n case MIDDLE_LEFT:\n tetherProps.offset = '0 10px';\n break;\n case MIDDLE_RIGHT:\n tetherProps.offset = '0 -10px';\n break;\n default:\n // no default\n }\n }\n\n return (\n <TetherComponent {...tetherProps}>\n {React.cloneElement(overlayButton, overlayButtonProps)}\n {isVisible ? React.cloneElement(overlayContent, overlayProps) : null}\n </TetherComponent>\n );\n }\n}\n\nexport default Flyout;\n"],"file":"Flyout.js"}
1
+ {"version":3,"sources":["../../../src/components/flyout/Flyout.js"],"names":["React","classNames","TetherComponent","uniqueId","KEYS","FlyoutContext","BOTTOM_CENTER","BOTTOM_LEFT","BOTTOM_RIGHT","MIDDLE_LEFT","MIDDLE_RIGHT","TOP_CENTER","TOP_LEFT","TOP_RIGHT","positions","attachment","targetAttachment","hasClickableAncestor","rootNode","targetNode","currentNode","Node","parentNode","nodeName","toUpperCase","hasClassAncestor","targetEl","className","el","HTMLElement","classList","contains","Flyout","props","event","overlayNode","document","getElementById","overlayID","closeOnClick","closeOnClickPredicate","target","handleOverlayClose","isVisible","state","closeOverlay","openOverlay","isButtonClicked","isTrusted","setState","preventDefault","openOnHover","openOnHoverDelayTimeout","clearTimeout","hoverDelay","setTimeout","enter","focusButton","onOpen","onClose","buttonEl","overlayButtonID","focus","portaledClasses","closeOnClickOutside","closeOnWindowBlur","buttonNode","isInsideToggleButton","isInsideOverlay","isInside","some","isVisibleByDefault","prevProps","prevState","addEventListener","handleDocumentClickOrWindowBlur","window","removeEventListener","children","constrainToScrollParent","constrainToWindow","isResponsive","offset","position","shouldDefaultFocus","elements","Children","toArray","tetherPosition","length","Error","overlayButton","overlayContent","overlayButtonProps","id","key","onClick","handleButtonClick","onKeyPress","handleKeyPress","onMouseEnter","handleButtonHover","onMouseLeave","handleButtonHoverLeave","role","tabIndex","overlayProps","handleOverlayClick","constraints","push","to","tetherProps","classPrefix","enabled","classes","element","cloneElement","Component"],"mappings":"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","sourcesContent":["// @flow\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport TetherComponent from 'react-tether';\nimport uniqueId from 'lodash/uniqueId';\nimport { KEYS } from '../../constants';\n\nimport FlyoutContext from './FlyoutContext';\n\nimport './Flyout.scss';\n\nconst BOTTOM_CENTER = 'bottom-center';\nconst BOTTOM_LEFT = 'bottom-left';\nconst BOTTOM_RIGHT = 'bottom-right';\nconst MIDDLE_LEFT = 'middle-left';\nconst MIDDLE_RIGHT = 'middle-right';\nconst TOP_CENTER = 'top-center';\nconst TOP_LEFT = 'top-left';\nconst TOP_RIGHT = 'top-right';\n\nconst positions = {\n [BOTTOM_CENTER]: {\n attachment: 'top center',\n targetAttachment: 'bottom center',\n },\n [BOTTOM_LEFT]: {\n attachment: 'top right',\n targetAttachment: 'bottom right',\n },\n [BOTTOM_RIGHT]: {\n attachment: 'top left',\n targetAttachment: 'bottom left',\n },\n [MIDDLE_LEFT]: {\n attachment: 'middle right',\n targetAttachment: 'middle left',\n },\n [MIDDLE_RIGHT]: {\n attachment: 'middle left',\n targetAttachment: 'middle right',\n },\n [TOP_CENTER]: {\n attachment: 'bottom center',\n targetAttachment: 'top center',\n },\n [TOP_LEFT]: {\n attachment: 'bottom right',\n targetAttachment: 'top right',\n },\n [TOP_RIGHT]: {\n attachment: 'bottom left',\n targetAttachment: 'top left',\n },\n};\n\n/**\n * Checks if there is a clickable ancestor or self\n * @param {Node} rootNode The base node we should stop at\n * @param {Node} targetNode The target node of the event\n * @returns {boolean}\n */\nconst hasClickableAncestor = (rootNode, targetNode) => {\n // Check if the element or any of the ancestors are click-able (stopping at the component boundary)\n let currentNode = targetNode;\n while (currentNode && currentNode instanceof Node && currentNode.parentNode && currentNode !== rootNode) {\n const nodeName = currentNode.nodeName.toUpperCase();\n if (nodeName === 'A' || nodeName === 'BUTTON') {\n return true;\n }\n currentNode = currentNode.parentNode;\n }\n return false;\n};\n\n/**\n * Checks if the target element is inside an element with the given CSS class.\n * @param {HTMLElement} targetEl The target element\n * @param {string} className A CSS class on the element to check for\n */\nconst hasClassAncestor = (targetEl, className) => {\n let el = targetEl;\n while (el && el instanceof HTMLElement) {\n if (el.classList.contains(className)) {\n return true;\n }\n el = el.parentNode;\n }\n return false;\n};\n\nexport type FlyoutProps = {\n children: React.Node,\n /**\n * Set className to the overlay wrapper\n */\n className?: string,\n /**\n * If set to true, closes the overlay on clicking buttons/links inside\n * of it\n */\n closeOnClick?: boolean,\n /**\n * If set to true, closes the overlay on clicking outside of it\n */\n closeOnClickOutside?: boolean,\n /**\n * Function that will interrogate the click event to determine whether or not to close the overlay if closeOnClick is enabled\n */\n closeOnClickPredicate?: Function,\n /**\n * If set to true, closes the overlay when window loses focus\n */\n closeOnWindowBlur?: boolean,\n /**\n * Sets tether constrain to scrollParent\n */\n constrainToScrollParent?: boolean,\n /**\n * Sets tether constrain to window\n */\n constrainToWindow?: boolean,\n /**\n * Toggles responsive behavior\n */\n isResponsive?: boolean,\n /**\n * Whether overlay should be visible by default\n */\n isVisibleByDefault: boolean,\n /**\n * Will fire this callback when the flyout should open\n */\n offset?: string,\n /**\n * Will fire this callback when the flyout should close\n */\n onClose?: Function,\n /**\n * Adjusts placement of the overlay (SEE http://tether.io/#options)\n */\n onOpen?: Function,\n /**\n * Whether overlay should open on hover\n */\n openOnHover?: boolean,\n /**\n * Time in milliseconds that the button should wait before opening and closing the flyout\n */\n openOnHoverDelayTimeout?: number,\n /** An array of CSS classes for portaled elements in the overlay, used to check whether a click is inside the overlay */\n portaledClasses: Array<string>,\n /**\n * Position of the overlay\n */\n position:\n | 'bottom-center'\n | 'bottom-left'\n | 'bottom-right'\n | 'middle-left'\n | 'middle-right'\n | 'top-center'\n | 'top-left'\n | 'top-right',\n /**\n * Prop whether to focus first focusable element or not\n */\n shouldDefaultFocus?: boolean,\n};\n\ntype State = {\n isButtonClicked: boolean,\n isVisible: boolean,\n};\n\ntype Props = FlyoutProps;\n\nclass Flyout extends React.Component<Props, State> {\n static defaultProps = {\n className: '',\n closeOnClick: true,\n closeOnClickOutside: true,\n closeOnWindowBlur: false,\n constrainToScrollParent: true,\n constrainToWindow: false,\n isResponsive: false,\n isVisibleByDefault: false,\n openOnHover: false,\n openOnHoverDelayTimeout: 300,\n portaledClasses: [],\n position: BOTTOM_RIGHT,\n };\n\n constructor(props: Props) {\n super(props);\n\n this.overlayID = uniqueId('overlay');\n this.overlayButtonID = uniqueId('flyoutbutton');\n this.state = {\n isVisible: props.isVisibleByDefault,\n isButtonClicked: false,\n };\n }\n\n componentDidUpdate(prevProps: Props, prevState: State) {\n if (!prevState.isVisible && this.state.isVisible) {\n const { closeOnClickOutside, closeOnWindowBlur } = this.props;\n // When overlay is being opened\n if (closeOnClickOutside) {\n document.addEventListener('click', this.handleDocumentClickOrWindowBlur, true);\n document.addEventListener('contextmenu', this.handleDocumentClickOrWindowBlur, true);\n }\n if (closeOnWindowBlur) {\n window.addEventListener('blur', this.handleDocumentClickOrWindowBlur, true);\n }\n } else if (prevState.isVisible && !this.state.isVisible) {\n // When overlay is being closed\n document.removeEventListener('contextmenu', this.handleDocumentClickOrWindowBlur, true);\n document.removeEventListener('click', this.handleDocumentClickOrWindowBlur, true);\n window.removeEventListener('blur', this.handleDocumentClickOrWindowBlur, true);\n }\n }\n\n componentWillUnmount() {\n if (this.state.isVisible) {\n // Clean-up global click handlers\n document.removeEventListener('contextmenu', this.handleDocumentClickOrWindowBlur, true);\n document.removeEventListener('click', this.handleDocumentClickOrWindowBlur, true);\n window.removeEventListener('blur', this.handleDocumentClickOrWindowBlur, true);\n }\n\n if (this.props.openOnHover && this.hoverDelay) {\n clearTimeout(this.hoverDelay);\n }\n }\n\n overlayButtonID: string;\n\n overlayID: string;\n\n handleOverlayClick = (event: SyntheticEvent<>) => {\n const overlayNode = document.getElementById(this.overlayID);\n const { closeOnClick, closeOnClickPredicate } = this.props;\n if (!closeOnClick || !hasClickableAncestor(overlayNode, event.target)) {\n return;\n }\n if (closeOnClickPredicate && !closeOnClickPredicate(event)) {\n return;\n }\n\n this.handleOverlayClose();\n };\n\n handleButtonClick = (event: SyntheticUIEvent<>) => {\n const { isVisible } = this.state;\n if (isVisible) {\n this.closeOverlay();\n } else {\n this.openOverlay();\n }\n\n // In at least one place, .click() is called programmatically\n // src/features/presence/Presence.js\n // In the programmatic case, the event is not supposed to trigger\n // autofocus of the content (TBD if this is truly correct behavior).\n // This line was using \"event.detail > 0\"\n // to detect if a click event was from a user, but that made keyboard\n // triggers of the button click behave differently than the mouse.\n // So, we use \"isTrusted\" instead. Note: React polyfills for IE11.\n // https://developer.mozilla.org/en-US/docs/Web/API/Event/isTrusted\n // https://reactjs.org/docs/events.html\n\n const isButtonClicked = event.isTrusted;\n\n this.setState({ isButtonClicked });\n\n event.preventDefault();\n };\n\n hoverDelay: TimeoutID | void;\n\n handleButtonHover = () => {\n const { openOnHover, openOnHoverDelayTimeout } = this.props;\n if (openOnHover) {\n clearTimeout(this.hoverDelay);\n this.hoverDelay = setTimeout(() => {\n this.openOverlay();\n }, openOnHoverDelayTimeout);\n }\n };\n\n handleButtonHoverLeave = () => {\n const { openOnHover, openOnHoverDelayTimeout } = this.props;\n if (openOnHover) {\n clearTimeout(this.hoverDelay);\n\n this.hoverDelay = setTimeout(() => {\n this.closeOverlay();\n }, openOnHoverDelayTimeout);\n }\n };\n\n handleKeyPress = () => {\n if (KEYS.enter) {\n this.openOverlay();\n this.focusButton();\n }\n };\n\n openOverlay = () => {\n this.setState({\n isVisible: true,\n });\n\n const { onOpen } = this.props;\n if (onOpen) {\n onOpen();\n }\n };\n\n closeOverlay = () => {\n this.setState({\n isVisible: false,\n });\n\n const { onClose } = this.props;\n if (onClose) {\n onClose();\n }\n };\n\n focusButton = () => {\n const buttonEl = document.getElementById(this.overlayButtonID);\n if (buttonEl) {\n buttonEl.focus();\n }\n };\n\n handleOverlayClose = () => {\n this.focusButton();\n this.closeOverlay();\n };\n\n handleDocumentClickOrWindowBlur = (event: MouseEvent | FocusEvent) => {\n const { portaledClasses, closeOnClickOutside, closeOnWindowBlur } = this.props;\n const { isVisible } = this.state;\n\n if (!isVisible || !(closeOnClickOutside || closeOnWindowBlur)) {\n return;\n }\n\n const overlayNode = document.getElementById(this.overlayID);\n const buttonNode = document.getElementById(this.overlayButtonID);\n\n const isInsideToggleButton =\n (buttonNode && event.target instanceof Node && buttonNode.contains(event.target)) ||\n buttonNode === event.target;\n const isInsideOverlay =\n (overlayNode && event.target instanceof Node && overlayNode.contains(event.target)) ||\n overlayNode === event.target;\n const isInside = isInsideToggleButton || isInsideOverlay;\n\n if (isInside || portaledClasses.some(className => hasClassAncestor(event.target, className))) {\n return;\n }\n\n // Only close overlay when the click is outside of the flyout or window loses focus\n this.closeOverlay();\n };\n\n render() {\n const {\n children,\n className = '',\n constrainToScrollParent,\n constrainToWindow,\n isResponsive,\n offset,\n openOnHover,\n position,\n shouldDefaultFocus,\n } = this.props;\n const { isButtonClicked, isVisible } = this.state;\n const elements = React.Children.toArray(children);\n const tetherPosition = positions[position];\n\n if (elements.length !== 2) {\n throw new Error('Flyout must have exactly two children: A button component and a <Overlay>');\n }\n\n const overlayButton = elements[0];\n const overlayContent = elements[1];\n\n const overlayButtonProps: Object = {\n id: this.overlayButtonID,\n key: this.overlayButtonID,\n onClick: this.handleButtonClick,\n onKeyPress: this.handleKeyPress,\n onMouseEnter: this.handleButtonHover,\n onMouseLeave: this.handleButtonHoverLeave,\n role: 'button',\n tabIndex: '0',\n 'aria-haspopup': 'true',\n 'aria-expanded': isVisible ? 'true' : 'false',\n };\n\n if (isVisible) {\n overlayButtonProps['aria-controls'] = this.overlayID;\n }\n\n const overlayProps = {\n id: this.overlayID,\n key: this.overlayID,\n role: 'dialog',\n onClick: this.handleOverlayClick,\n onClose: this.handleOverlayClose,\n onMouseEnter: this.handleButtonHover,\n onMouseLeave: this.handleButtonHoverLeave,\n shouldDefaultFocus: shouldDefaultFocus || (!isButtonClicked && !openOnHover),\n 'aria-labelledby': this.overlayButtonID,\n };\n\n const constraints = [];\n\n if (constrainToScrollParent) {\n constraints.push({\n to: 'scrollParent',\n attachment: 'together',\n });\n }\n\n if (constrainToWindow) {\n constraints.push({\n to: 'window',\n attachment: 'together',\n });\n }\n\n const tetherProps: Object = {\n classPrefix: 'flyout-overlay',\n attachment: tetherPosition.attachment,\n targetAttachment: tetherPosition.targetAttachment,\n enabled: isVisible,\n classes: {\n element: classNames('flyout-overlay', { 'bdl-Flyout--responsive': isResponsive }, className),\n },\n constraints,\n };\n\n if (offset) {\n tetherProps.offset = offset;\n } else {\n switch (position) {\n case BOTTOM_CENTER:\n case BOTTOM_LEFT:\n case BOTTOM_RIGHT:\n tetherProps.offset = '-10px 0';\n break;\n case TOP_CENTER:\n case TOP_LEFT:\n case TOP_RIGHT:\n tetherProps.offset = '10px 0';\n break;\n case MIDDLE_LEFT:\n tetherProps.offset = '0 10px';\n break;\n case MIDDLE_RIGHT:\n tetherProps.offset = '0 -10px';\n break;\n default:\n // no default\n }\n }\n\n return (\n <TetherComponent {...tetherProps}>\n {React.cloneElement(overlayButton, overlayButtonProps)}\n <FlyoutContext.Provider value={{ closeOverlay: this.closeOverlay }}>\n {isVisible ? React.cloneElement(overlayContent, overlayProps) : null}\n </FlyoutContext.Provider>\n </TetherComponent>\n );\n }\n}\n\nexport default Flyout;\n"],"file":"Flyout.js"}
@@ -1,4 +1,5 @@
1
1
  @import '../../styles/variables';
2
+ @import './variables';
2
3
 
3
4
  .flyout-overlay {
4
5
  @include common-typography;
@@ -23,3 +24,42 @@
23
24
  }
24
25
  }
25
26
  }
27
+
28
+ @include breakpoint($medium-screen) {
29
+ .flyout-overlay.bdl-Flyout--responsive {
30
+ &.flyout-overlay-enabled {
31
+ // cancels out the tether inline styling without having to set enabled=false
32
+ transform: none !important;
33
+ }
34
+
35
+ .overlay {
36
+ position: fixed;
37
+ top: 0;
38
+ right: 0;
39
+ bottom: 0;
40
+ left: 0;
41
+ margin: 0;
42
+ padding: 0;
43
+ background-color: $white;
44
+ border: none;
45
+ border-radius: 0;
46
+ box-shadow: none;
47
+ }
48
+
49
+ .bdl-OverlayHeader {
50
+ position: relative;
51
+ z-index: 1;
52
+ display: flex;
53
+ align-items: center;
54
+ justify-content: space-between;
55
+ height: $bdl-OverlayHeader-height;
56
+ padding: ($bdl-grid-unit * 3) ($bdl-grid-unit * 4);
57
+ background-color: $white;
58
+ box-shadow: $bdl-header-box-shadow;
59
+
60
+ .bdl-CloseButton {
61
+ display: block;
62
+ }
63
+ }
64
+ }
65
+ }
@@ -0,0 +1,6 @@
1
+ import * as React from 'react';
2
+ import noop from 'lodash/noop';
3
+ export default React.createContext({
4
+ closeOverlay: noop
5
+ });
6
+ //# sourceMappingURL=FlyoutContext.js.map
@@ -0,0 +1,9 @@
1
+ // @flow
2
+ import * as React from 'react';
3
+ import noop from 'lodash/noop';
4
+
5
+ type FlyoutContextValues = {
6
+ closeOverlay: Function,
7
+ };
8
+
9
+ export default React.createContext<FlyoutContextValues>({ closeOverlay: noop });
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/flyout/FlyoutContext.js"],"names":["React","noop","createContext","closeOverlay"],"mappings":"AACA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,OAAOC,IAAP,MAAiB,aAAjB;AAMA,eAAeD,KAAK,CAACE,aAAN,CAAyC;AAAEC,EAAAA,YAAY,EAAEF;AAAhB,CAAzC,CAAf","sourcesContent":["// @flow\nimport * as React from 'react';\nimport noop from 'lodash/noop';\n\ntype FlyoutContextValues = {\n closeOverlay: Function,\n};\n\nexport default React.createContext<FlyoutContextValues>({ closeOverlay: noop });\n"],"file":"FlyoutContext.js"}
@@ -0,0 +1,33 @@
1
+ import * as React from 'react';
2
+ import classNames from 'classnames';
3
+ import CloseButton from '../close-button/CloseButton'; // @ts-ignore flow
4
+
5
+ import FlyoutContext from './FlyoutContext';
6
+ import './OverlayHeader.scss';
7
+
8
+ var OverlayHeader = function OverlayHeader(_ref) {
9
+ var children = _ref.children,
10
+ className = _ref.className;
11
+
12
+ var handleClick = function handleClick(event) {
13
+ event.preventDefault();
14
+ event.stopPropagation();
15
+ };
16
+
17
+ var _React$useContext = React.useContext(FlyoutContext),
18
+ closeOverlay = _React$useContext.closeOverlay;
19
+
20
+ return React.createElement("div", {
21
+ className: classNames('bdl-OverlayHeader', className),
22
+ "data-testid": "bdl-OverlayHeader",
23
+ onClick: handleClick,
24
+ role: "presentation"
25
+ }, React.createElement("div", {
26
+ className: "bdl-OverlayHeader-content"
27
+ }, children), React.createElement(CloseButton, {
28
+ onClick: closeOverlay
29
+ }));
30
+ };
31
+
32
+ export default OverlayHeader;
33
+ //# sourceMappingURL=OverlayHeader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/flyout/OverlayHeader.tsx"],"names":["React","classNames","CloseButton","FlyoutContext","OverlayHeader","children","className","handleClick","event","preventDefault","stopPropagation","useContext","closeOverlay"],"mappings":"AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AAEA,OAAOC,UAAP,MAAuB,YAAvB;AACA,OAAOC,WAAP,MAAwB,6BAAxB,C,CACA;;AACA,OAAOC,aAAP,MAA0B,iBAA1B;AAEA,OAAO,sBAAP;;AASA,IAAMC,aAAa,GAAG,SAAhBA,aAAgB,OAAiD;AAAA,MAA9CC,QAA8C,QAA9CA,QAA8C;AAAA,MAApCC,SAAoC,QAApCA,SAAoC;;AACnE,MAAMC,WAAW,GAAG,SAAdA,WAAc,CAACC,KAAD,EAAuD;AACvEA,IAAAA,KAAK,CAACC,cAAN;AACAD,IAAAA,KAAK,CAACE,eAAN;AACH,GAHD;;AADmE,0BAM1CV,KAAK,CAACW,UAAN,CAAiBR,aAAjB,CAN0C;AAAA,MAM3DS,YAN2D,qBAM3DA,YAN2D;;AAQnE,SACI;AACI,IAAA,SAAS,EAAEX,UAAU,CAAC,mBAAD,EAAsBK,SAAtB,CADzB;AAEI,mBAAY,mBAFhB;AAGI,IAAA,OAAO,EAAEC,WAHb;AAII,IAAA,IAAI,EAAC;AAJT,KAMI;AAAK,IAAA,SAAS,EAAC;AAAf,KAA4CF,QAA5C,CANJ,EAOI,oBAAC,WAAD;AAAa,IAAA,OAAO,EAAEO;AAAtB,IAPJ,CADJ;AAWH,CAnBD;;AAqBA,eAAeR,aAAf","sourcesContent":["import * as React from 'react';\n\nimport classNames from 'classnames';\nimport CloseButton from '../close-button/CloseButton';\n// @ts-ignore flow\nimport FlyoutContext from './FlyoutContext';\n\nimport './OverlayHeader.scss';\n\nexport interface OverlayHeaderProps {\n /** Components to render in the header */\n children?: React.ReactNode;\n /** Set className to the overlay header */\n className?: string;\n}\n\nconst OverlayHeader = ({ children, className }: OverlayHeaderProps) => {\n const handleClick = (event: React.SyntheticEvent<HTMLDivElement>): void => {\n event.preventDefault();\n event.stopPropagation();\n };\n\n const { closeOverlay } = React.useContext(FlyoutContext);\n\n return (\n <div\n className={classNames('bdl-OverlayHeader', className)}\n data-testid=\"bdl-OverlayHeader\"\n onClick={handleClick}\n role=\"presentation\"\n >\n <div className=\"bdl-OverlayHeader-content\">{children}</div>\n <CloseButton onClick={closeOverlay} />\n </div>\n );\n};\n\nexport default OverlayHeader;\n"],"file":"OverlayHeader.js"}
@@ -0,0 +1,9 @@
1
+ .bdl-OverlayHeader {
2
+ .bdl-CloseButton {
3
+ display: none;
4
+ }
5
+ }
6
+
7
+ .bdl-OverlayHeader-content {
8
+ flex-grow: 1;
9
+ }
@@ -0,0 +1 @@
1
+ $bdl-OverlayHeader-height: 64px;
@@ -1,3 +1,5 @@
1
1
  export { default as Flyout } from './Flyout';
2
+ export { default as FlyoutContext } from './FlyoutContext';
2
3
  export { default as Overlay } from './Overlay';
4
+ export { default as OverlayHeader } from './OverlayHeader';
3
5
  //# sourceMappingURL=index.js.map
@@ -1,3 +1,5 @@
1
1
  // @flow
2
2
  export { default as Flyout } from './Flyout';
3
+ export { default as FlyoutContext } from './FlyoutContext';
3
4
  export { default as Overlay } from './Overlay';
5
+ export { default as OverlayHeader } from './OverlayHeader';
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/flyout/index.js"],"names":["default","Flyout","Overlay"],"mappings":"AACA,SAASA,OAAO,IAAIC,MAApB,QAAkC,UAAlC;AACA,SAASD,OAAO,IAAIE,OAApB,QAAmC,WAAnC","sourcesContent":["// @flow\nexport { default as Flyout } from './Flyout';\nexport { default as Overlay } from './Overlay';\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../../src/components/flyout/index.js"],"names":["default","Flyout","FlyoutContext","Overlay","OverlayHeader"],"mappings":"AACA,SAASA,OAAO,IAAIC,MAApB,QAAkC,UAAlC;AACA,SAASD,OAAO,IAAIE,aAApB,QAAyC,iBAAzC;AACA,SAASF,OAAO,IAAIG,OAApB,QAAmC,WAAnC;AACA,SAASH,OAAO,IAAII,aAApB,QAAyC,iBAAzC","sourcesContent":["// @flow\nexport { default as Flyout } from './Flyout';\nexport { default as FlyoutContext } from './FlyoutContext';\nexport { default as Overlay } from './Overlay';\nexport { default as OverlayHeader } from './OverlayHeader';\n"],"file":"index.js"}
@@ -40,8 +40,7 @@ var ImageTooltip = function ImageTooltip(_ref) {
40
40
  },
41
41
  title: title
42
42
  }, React.Children.only(image));
43
- var imageTooltipClasses = classNames('bdl-ImageTooltip', {
44
- className: className,
43
+ var imageTooltipClasses = classNames('bdl-ImageTooltip', className, {
45
44
  'bdl-is-image-loaded': isImageLoaded
46
45
  });
47
46
  return React.createElement(Tooltip, _extends({
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/image-tooltip/ImageTooltip.tsx"],"names":["React","classNames","Tooltip","TooltipTheme","ImageTooltipContent","ImageTooltip","children","className","content","image","title","otherTooltipProps","useState","isImageLoaded","setIsImageLoaded","tooltipContent","Children","only","imageTooltipClasses","CALLOUT"],"mappings":";;;;;;;;;;;;;;AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,OAAOC,UAAP,MAAuB,YAAvB,C,CAEA;;AACA,OAAOC,OAAP,IAAgCC,YAAhC,QAAoD,YAApD;AACA,OAAOC,mBAAP,MAAgC,uBAAhC;AAEA,OAAO,qBAAP,C,CAEA;;AAcA,IAAMC,YAAY,GAAG,SAAfA,YAAe,OAA6F;AAAA,MAA1FC,QAA0F,QAA1FA,QAA0F;AAAA,MAAhFC,SAAgF,QAAhFA,SAAgF;AAAA,MAArEC,OAAqE,QAArEA,OAAqE;AAAA,MAA5DC,KAA4D,QAA5DA,KAA4D;AAAA,MAArDC,KAAqD,QAArDA,KAAqD;AAAA,MAA3CC,iBAA2C;;AAC9G;AAD8G,wBAEpEX,KAAK,CAACY,QAAN,CAAe,KAAf,CAFoE;AAAA;AAAA,MAEvGC,aAFuG;AAAA,MAExFC,gBAFwF;;AAI9G,MAAMC,cAAc,GAChB,oBAAC,mBAAD;AAAqB,IAAA,OAAO,EAAEP,OAA9B;AAAuC,IAAA,WAAW,EAAE;AAAA,aAAMM,gBAAgB,CAAC,IAAD,CAAtB;AAAA,KAApD;AAAkF,IAAA,KAAK,EAAEJ;AAAzF,KACKV,KAAK,CAACgB,QAAN,CAAeC,IAAf,CAAoBR,KAApB,CADL,CADJ;AAMA,MAAMS,mBAAmB,GAAGjB,UAAU,CAAC,kBAAD,EAAqB;AACvDM,IAAAA,SAAS,EAATA,SADuD;AAEvD,2BAAuBM;AAFgC,GAArB,CAAtC;AAKA,SACI,oBAAC,OAAD;AACI,IAAA,SAAS,EAAEK,mBADf;AAEI,IAAA,eAAe,MAFnB;AAGI,IAAA,KAAK,EAAEf,YAAY,CAACgB;AAHxB,KAIQR,iBAJR;AAKI,IAAA,IAAI,EAAEI;AALV,MAOKT,QAPL,CADJ;AAWH,CA1BD;;AA4BA,eAAeD,YAAf","sourcesContent":["import * as React from 'react';\nimport classNames from 'classnames';\n\n// @ts-ignore flow import\nimport Tooltip, { TooltipProps, TooltipTheme } from '../tooltip';\nimport ImageTooltipContent from './ImageTooltipContent';\n\nimport './ImageTooltip.scss';\n\n// We manually set \"text\" with our specific visual tooltip content.\ntype OtherTooltipProps = Omit<TooltipProps, 'text'>;\n\nexport type ImageTooltipProps = {\n /** A React element to put the tooltip on */\n children: React.ReactChild;\n /** A string to be used in the tooltip's paragraph content */\n content: string;\n /** A React component representing the image used in the visual tooltip */\n image: React.ReactElement;\n /** A string to be used in the tooltip's title heading */\n title: string;\n} & OtherTooltipProps;\n\nconst ImageTooltip = ({ children, className, content, image, title, ...otherTooltipProps }: ImageTooltipProps) => {\n // State to track if the image has been loaded before displaying the tooltip\n const [isImageLoaded, setIsImageLoaded] = React.useState(false);\n\n const tooltipContent = (\n <ImageTooltipContent content={content} onImageLoad={() => setIsImageLoaded(true)} title={title}>\n {React.Children.only(image)}\n </ImageTooltipContent>\n );\n\n const imageTooltipClasses = classNames('bdl-ImageTooltip', {\n className,\n 'bdl-is-image-loaded': isImageLoaded,\n });\n\n return (\n <Tooltip\n className={imageTooltipClasses}\n showCloseButton\n theme={TooltipTheme.CALLOUT}\n {...otherTooltipProps}\n text={tooltipContent}\n >\n {children}\n </Tooltip>\n );\n};\n\nexport default ImageTooltip;\n"],"file":"ImageTooltip.js"}
1
+ {"version":3,"sources":["../../../src/components/image-tooltip/ImageTooltip.tsx"],"names":["React","classNames","Tooltip","TooltipTheme","ImageTooltipContent","ImageTooltip","children","className","content","image","title","otherTooltipProps","useState","isImageLoaded","setIsImageLoaded","tooltipContent","Children","only","imageTooltipClasses","CALLOUT"],"mappings":";;;;;;;;;;;;;;AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,OAAOC,UAAP,MAAuB,YAAvB,C,CAEA;;AACA,OAAOC,OAAP,IAAgCC,YAAhC,QAAoD,YAApD;AACA,OAAOC,mBAAP,MAAgC,uBAAhC;AAEA,OAAO,qBAAP,C,CAEA;;AAcA,IAAMC,YAAY,GAAG,SAAfA,YAAe,OAA6F;AAAA,MAA1FC,QAA0F,QAA1FA,QAA0F;AAAA,MAAhFC,SAAgF,QAAhFA,SAAgF;AAAA,MAArEC,OAAqE,QAArEA,OAAqE;AAAA,MAA5DC,KAA4D,QAA5DA,KAA4D;AAAA,MAArDC,KAAqD,QAArDA,KAAqD;AAAA,MAA3CC,iBAA2C;;AAC9G;AAD8G,wBAEpEX,KAAK,CAACY,QAAN,CAAe,KAAf,CAFoE;AAAA;AAAA,MAEvGC,aAFuG;AAAA,MAExFC,gBAFwF;;AAI9G,MAAMC,cAAc,GAChB,oBAAC,mBAAD;AAAqB,IAAA,OAAO,EAAEP,OAA9B;AAAuC,IAAA,WAAW,EAAE;AAAA,aAAMM,gBAAgB,CAAC,IAAD,CAAtB;AAAA,KAApD;AAAkF,IAAA,KAAK,EAAEJ;AAAzF,KACKV,KAAK,CAACgB,QAAN,CAAeC,IAAf,CAAoBR,KAApB,CADL,CADJ;AAMA,MAAMS,mBAAmB,GAAGjB,UAAU,CAAC,kBAAD,EAAqBM,SAArB,EAAgC;AAClE,2BAAuBM;AAD2C,GAAhC,CAAtC;AAIA,SACI,oBAAC,OAAD;AACI,IAAA,SAAS,EAAEK,mBADf;AAEI,IAAA,eAAe,MAFnB;AAGI,IAAA,KAAK,EAAEf,YAAY,CAACgB;AAHxB,KAIQR,iBAJR;AAKI,IAAA,IAAI,EAAEI;AALV,MAOKT,QAPL,CADJ;AAWH,CAzBD;;AA2BA,eAAeD,YAAf","sourcesContent":["import * as React from 'react';\nimport classNames from 'classnames';\n\n// @ts-ignore flow import\nimport Tooltip, { TooltipProps, TooltipTheme } from '../tooltip';\nimport ImageTooltipContent from './ImageTooltipContent';\n\nimport './ImageTooltip.scss';\n\n// We manually set \"text\" with our specific visual tooltip content.\ntype OtherTooltipProps = Omit<TooltipProps, 'text'>;\n\nexport type ImageTooltipProps = {\n /** A React element to put the tooltip on */\n children: React.ReactChild;\n /** A string to be used in the tooltip's paragraph content */\n content: string;\n /** A React component representing the image used in the visual tooltip */\n image: React.ReactElement;\n /** A string to be used in the tooltip's title heading */\n title: string;\n} & OtherTooltipProps;\n\nconst ImageTooltip = ({ children, className, content, image, title, ...otherTooltipProps }: ImageTooltipProps) => {\n // State to track if the image has been loaded before displaying the tooltip\n const [isImageLoaded, setIsImageLoaded] = React.useState(false);\n\n const tooltipContent = (\n <ImageTooltipContent content={content} onImageLoad={() => setIsImageLoaded(true)} title={title}>\n {React.Children.only(image)}\n </ImageTooltipContent>\n );\n\n const imageTooltipClasses = classNames('bdl-ImageTooltip', className, {\n 'bdl-is-image-loaded': isImageLoaded,\n });\n\n return (\n <Tooltip\n className={imageTooltipClasses}\n showCloseButton\n theme={TooltipTheme.CALLOUT}\n {...otherTooltipProps}\n text={tooltipContent}\n >\n {children}\n </Tooltip>\n );\n};\n\nexport default ImageTooltip;\n"],"file":"ImageTooltip.js"}
@@ -0,0 +1,26 @@
1
+ import { smallScreen, mediumScreen, largeScreen } from '../../styles/variables';
2
+ export var SIZE_SMALL = smallScreen;
3
+ export var SIZE_MEDIUM = mediumScreen;
4
+ export var SIZE_LARGE = largeScreen;
5
+ export var HOVER = '(hover: hover)';
6
+ export var ANY_HOVER = '(any-hover: hover)';
7
+ export var POINTER_FINE = '(pointer: fine)';
8
+ export var POINTER_COARSE = '(pointer: coarse)';
9
+ export var ANY_POINTER_FINE = '(any-pointer: fine)';
10
+ export var ANY_POINTER_COARSE = '(any-pointer: coarse)';
11
+ export var POINTER_TYPE = {
12
+ fine: 'fine',
13
+ coarse: 'coarse',
14
+ none: 'none'
15
+ };
16
+ export var HOVER_TYPE = {
17
+ hover: 'hover',
18
+ none: 'none'
19
+ };
20
+ export var VIEW_SIZE_TYPE = {
21
+ small: 'small',
22
+ medium: 'medium',
23
+ large: 'large',
24
+ xlarge: 'x-large'
25
+ };
26
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1,32 @@
1
+ import { smallScreen, mediumScreen, largeScreen } from '../../styles/variables';
2
+
3
+ export const SIZE_SMALL = smallScreen;
4
+ export const SIZE_MEDIUM = mediumScreen;
5
+ export const SIZE_LARGE = largeScreen;
6
+
7
+ export const HOVER = '(hover: hover)';
8
+ export const ANY_HOVER = '(any-hover: hover)';
9
+
10
+ export const POINTER_FINE = '(pointer: fine)';
11
+ export const POINTER_COARSE = '(pointer: coarse)';
12
+
13
+ export const ANY_POINTER_FINE = '(any-pointer: fine)';
14
+ export const ANY_POINTER_COARSE = '(any-pointer: coarse)';
15
+
16
+ export const POINTER_TYPE = {
17
+ fine: 'fine',
18
+ coarse: 'coarse',
19
+ none: 'none',
20
+ };
21
+
22
+ export const HOVER_TYPE = {
23
+ hover: 'hover',
24
+ none: 'none',
25
+ };
26
+
27
+ export const VIEW_SIZE_TYPE = {
28
+ small: 'small',
29
+ medium: 'medium',
30
+ large: 'large',
31
+ xlarge: 'x-large',
32
+ };
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/media-query/constants.js"],"names":["smallScreen","mediumScreen","largeScreen","SIZE_SMALL","SIZE_MEDIUM","SIZE_LARGE","HOVER","ANY_HOVER","POINTER_FINE","POINTER_COARSE","ANY_POINTER_FINE","ANY_POINTER_COARSE","POINTER_TYPE","fine","coarse","none","HOVER_TYPE","hover","VIEW_SIZE_TYPE","small","medium","large","xlarge"],"mappings":"AAAA,SAASA,WAAT,EAAsBC,YAAtB,EAAoCC,WAApC,QAAuD,wBAAvD;AAEA,OAAO,IAAMC,UAAU,GAAGH,WAAnB;AACP,OAAO,IAAMI,WAAW,GAAGH,YAApB;AACP,OAAO,IAAMI,UAAU,GAAGH,WAAnB;AAEP,OAAO,IAAMI,KAAK,GAAG,gBAAd;AACP,OAAO,IAAMC,SAAS,GAAG,oBAAlB;AAEP,OAAO,IAAMC,YAAY,GAAG,iBAArB;AACP,OAAO,IAAMC,cAAc,GAAG,mBAAvB;AAEP,OAAO,IAAMC,gBAAgB,GAAG,qBAAzB;AACP,OAAO,IAAMC,kBAAkB,GAAG,uBAA3B;AAEP,OAAO,IAAMC,YAAY,GAAG;AACxBC,EAAAA,IAAI,EAAE,MADkB;AAExBC,EAAAA,MAAM,EAAE,QAFgB;AAGxBC,EAAAA,IAAI,EAAE;AAHkB,CAArB;AAMP,OAAO,IAAMC,UAAU,GAAG;AACtBC,EAAAA,KAAK,EAAE,OADe;AAEtBF,EAAAA,IAAI,EAAE;AAFgB,CAAnB;AAKP,OAAO,IAAMG,cAAc,GAAG;AAC1BC,EAAAA,KAAK,EAAE,OADmB;AAE1BC,EAAAA,MAAM,EAAE,QAFkB;AAG1BC,EAAAA,KAAK,EAAE,OAHmB;AAI1BC,EAAAA,MAAM,EAAE;AAJkB,CAAvB","sourcesContent":["import { smallScreen, mediumScreen, largeScreen } from '../../styles/variables';\n\nexport const SIZE_SMALL = smallScreen;\nexport const SIZE_MEDIUM = mediumScreen;\nexport const SIZE_LARGE = largeScreen;\n\nexport const HOVER = '(hover: hover)';\nexport const ANY_HOVER = '(any-hover: hover)';\n\nexport const POINTER_FINE = '(pointer: fine)';\nexport const POINTER_COARSE = '(pointer: coarse)';\n\nexport const ANY_POINTER_FINE = '(any-pointer: fine)';\nexport const ANY_POINTER_COARSE = '(any-pointer: coarse)';\n\nexport const POINTER_TYPE = {\n fine: 'fine',\n coarse: 'coarse',\n none: 'none',\n};\n\nexport const HOVER_TYPE = {\n hover: 'hover',\n none: 'none',\n};\n\nexport const VIEW_SIZE_TYPE = {\n small: 'small',\n medium: 'medium',\n large: 'large',\n xlarge: 'x-large',\n};\n"],"file":"constants.js"}
@@ -0,0 +1,3 @@
1
+ export { default as useMediaQuery } from './useMediaQuery';
2
+ export { default as withMediaQuery } from './withMediaQuery';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,4 @@
1
+ // @flow
2
+
3
+ export { default as useMediaQuery } from './useMediaQuery';
4
+ export { default as withMediaQuery } from './withMediaQuery';
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/media-query/index.js"],"names":["default","useMediaQuery","withMediaQuery"],"mappings":"AAEA,SAASA,OAAO,IAAIC,aAApB,QAAyC,iBAAzC;AACA,SAASD,OAAO,IAAIE,cAApB,QAA0C,kBAA1C","sourcesContent":["// @flow\n\nexport { default as useMediaQuery } from './useMediaQuery';\nexport { default as withMediaQuery } from './withMediaQuery';\n"],"file":"index.js"}
@@ -0,0 +1,37 @@
1
+ import * as React from 'react';
2
+ import { VIEW_SIZE_TYPE } from '../constants';
3
+ import notes from './MediaQuery.stories.md';
4
+ import useMediaQuery from '../useMediaQuery';
5
+ import withMediaQuery from '../withMediaQuery';
6
+ export var CustomHook = function CustomHook() {
7
+ var _useMediaQuery = useMediaQuery(),
8
+ hover = _useMediaQuery.hover,
9
+ pointer = _useMediaQuery.pointer,
10
+ size = _useMediaQuery.size,
11
+ viewWidth = _useMediaQuery.viewWidth,
12
+ viewHeight = _useMediaQuery.viewHeight;
13
+
14
+ return React.createElement("div", null, React.createElement("p", null, React.createElement("b", null, "Hover:"), React.createElement("span", null, " ".concat(hover))), React.createElement("p", null, React.createElement("b", null, "Pointer:"), React.createElement("span", null, " ".concat(pointer))), React.createElement("p", null, React.createElement("b", null, "View Dimensions:"), React.createElement("span", null, " ".concat(viewWidth, "px (w) x ").concat(viewHeight, "px (h)"))), size === VIEW_SIZE_TYPE.small && React.createElement("h4", null, "This view is small"), size === VIEW_SIZE_TYPE.medium && React.createElement("h3", null, "This view is medium"), size === VIEW_SIZE_TYPE.large && React.createElement("h2", null, "This view is large"), size === VIEW_SIZE_TYPE.xlarge && React.createElement("h1", null, "This view is xlarge"));
15
+ };
16
+
17
+ var DemoComponent = function DemoComponent(props) {
18
+ var hover = props.hover,
19
+ pointer = props.pointer,
20
+ size = props.size,
21
+ viewWidth = props.viewWidth,
22
+ viewHeight = props.viewHeight;
23
+ return React.createElement("div", null, React.createElement("p", null, React.createElement("b", null, "Hover:"), React.createElement("span", null, " ".concat(hover))), React.createElement("p", null, React.createElement("b", null, "Pointer:"), React.createElement("span", null, " ".concat(pointer))), React.createElement("p", null, React.createElement("b", null, "View Dimensions:"), React.createElement("span", null, " ".concat(viewWidth, "px (w) x ").concat(viewHeight, "px (h)"))), size === 'small' && React.createElement("h4", null, "This view is small"), size === 'medium' && React.createElement("h3", null, "This view is medium"), size === 'large' && React.createElement("h2", null, "This view is large"), size === 'x-large' && React.createElement("h1", null, "This view is xlarge"));
24
+ };
25
+
26
+ export var HigherOrderComponent = withMediaQuery(DemoComponent);
27
+ export default {
28
+ title: 'Components|MediaQuery',
29
+ component: useMediaQuery,
30
+ parameters: {
31
+ notes: notes,
32
+ viewport: {
33
+ defaultViewport: 'tablet'
34
+ }
35
+ }
36
+ };
37
+ //# sourceMappingURL=MediaQuery.stories.js.map
@@ -0,0 +1,80 @@
1
+ // @flow
2
+
3
+ import * as React from 'react';
4
+
5
+ import { VIEW_SIZE_TYPE } from '../constants';
6
+ import notes from './MediaQuery.stories.md';
7
+ import useMediaQuery from '../useMediaQuery';
8
+ import withMediaQuery from '../withMediaQuery';
9
+
10
+ export const CustomHook = () => {
11
+ const { hover, pointer, size, viewWidth, viewHeight } = useMediaQuery();
12
+
13
+ return (
14
+ <div>
15
+ <p>
16
+ <b>Hover:</b>
17
+ <span>{` ${hover}`}</span>
18
+ </p>
19
+ <p>
20
+ <b>Pointer:</b>
21
+ <span>{` ${pointer}`}</span>
22
+ </p>
23
+ <p>
24
+ <b>View Dimensions:</b>
25
+ <span>{` ${viewWidth}px (w) x ${viewHeight}px (h)`}</span>
26
+ </p>
27
+ {size === VIEW_SIZE_TYPE.small && <h4>This view is small</h4>}
28
+ {size === VIEW_SIZE_TYPE.medium && <h3>This view is medium</h3>}
29
+ {size === VIEW_SIZE_TYPE.large && <h2>This view is large</h2>}
30
+ {size === VIEW_SIZE_TYPE.xlarge && <h1>This view is xlarge</h1>}
31
+ </div>
32
+ );
33
+ };
34
+
35
+ type Props = {
36
+ children?: any,
37
+ hover: string,
38
+ pointer: string,
39
+ size: string,
40
+ viewHeight: number,
41
+ viewWidth: number,
42
+ };
43
+
44
+ const DemoComponent = (props: Props) => {
45
+ const { hover, pointer, size, viewWidth, viewHeight } = props;
46
+
47
+ return (
48
+ <div>
49
+ <p>
50
+ <b>Hover:</b>
51
+ <span>{` ${hover}`}</span>
52
+ </p>
53
+ <p>
54
+ <b>Pointer:</b>
55
+ <span>{` ${pointer}`}</span>
56
+ </p>
57
+ <p>
58
+ <b>View Dimensions:</b>
59
+ <span>{` ${viewWidth}px (w) x ${viewHeight}px (h)`}</span>
60
+ </p>
61
+ {size === 'small' && <h4>This view is small</h4>}
62
+ {size === 'medium' && <h3>This view is medium</h3>}
63
+ {size === 'large' && <h2>This view is large</h2>}
64
+ {size === 'x-large' && <h1>This view is xlarge</h1>}
65
+ </div>
66
+ );
67
+ };
68
+
69
+ export const HigherOrderComponent = withMediaQuery(DemoComponent);
70
+
71
+ export default {
72
+ title: 'Components|MediaQuery',
73
+ component: useMediaQuery,
74
+ parameters: {
75
+ notes,
76
+ viewport: {
77
+ defaultViewport: 'tablet',
78
+ },
79
+ },
80
+ };
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/components/media-query/stories/MediaQuery.stories.js"],"names":["React","VIEW_SIZE_TYPE","notes","useMediaQuery","withMediaQuery","CustomHook","hover","pointer","size","viewWidth","viewHeight","small","medium","large","xlarge","DemoComponent","props","HigherOrderComponent","title","component","parameters","viewport","defaultViewport"],"mappings":"AAEA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AAEA,SAASC,cAAT,QAA+B,cAA/B;AACA,OAAOC,KAAP,MAAkB,yBAAlB;AACA,OAAOC,aAAP,MAA0B,kBAA1B;AACA,OAAOC,cAAP,MAA2B,mBAA3B;AAEA,OAAO,IAAMC,UAAU,GAAG,SAAbA,UAAa,GAAM;AAAA,uBAC4BF,aAAa,EADzC;AAAA,MACpBG,KADoB,kBACpBA,KADoB;AAAA,MACbC,OADa,kBACbA,OADa;AAAA,MACJC,IADI,kBACJA,IADI;AAAA,MACEC,SADF,kBACEA,SADF;AAAA,MACaC,UADb,kBACaA,UADb;;AAG5B,SACI,iCACI,+BACI,wCADJ,EAEI,6CAAWJ,KAAX,EAFJ,CADJ,EAKI,+BACI,0CADJ,EAEI,6CAAWC,OAAX,EAFJ,CALJ,EASI,+BACI,kDADJ,EAEI,6CAAWE,SAAX,sBAAgCC,UAAhC,YAFJ,CATJ,EAaKF,IAAI,KAAKP,cAAc,CAACU,KAAxB,IAAiC,qDAbtC,EAcKH,IAAI,KAAKP,cAAc,CAACW,MAAxB,IAAkC,sDAdvC,EAeKJ,IAAI,KAAKP,cAAc,CAACY,KAAxB,IAAiC,qDAftC,EAgBKL,IAAI,KAAKP,cAAc,CAACa,MAAxB,IAAkC,sDAhBvC,CADJ;AAoBH,CAvBM;;AAkCP,IAAMC,aAAa,GAAG,SAAhBA,aAAgB,CAACC,KAAD,EAAkB;AAAA,MAC5BV,KAD4B,GACoBU,KADpB,CAC5BV,KAD4B;AAAA,MACrBC,OADqB,GACoBS,KADpB,CACrBT,OADqB;AAAA,MACZC,IADY,GACoBQ,KADpB,CACZR,IADY;AAAA,MACNC,SADM,GACoBO,KADpB,CACNP,SADM;AAAA,MACKC,UADL,GACoBM,KADpB,CACKN,UADL;AAGpC,SACI,iCACI,+BACI,wCADJ,EAEI,6CAAWJ,KAAX,EAFJ,CADJ,EAKI,+BACI,0CADJ,EAEI,6CAAWC,OAAX,EAFJ,CALJ,EASI,+BACI,kDADJ,EAEI,6CAAWE,SAAX,sBAAgCC,UAAhC,YAFJ,CATJ,EAaKF,IAAI,KAAK,OAAT,IAAoB,qDAbzB,EAcKA,IAAI,KAAK,QAAT,IAAqB,sDAd1B,EAeKA,IAAI,KAAK,OAAT,IAAoB,qDAfzB,EAgBKA,IAAI,KAAK,SAAT,IAAsB,sDAhB3B,CADJ;AAoBH,CAvBD;;AAyBA,OAAO,IAAMS,oBAAoB,GAAGb,cAAc,CAACW,aAAD,CAA3C;AAEP,eAAe;AACXG,EAAAA,KAAK,EAAE,uBADI;AAEXC,EAAAA,SAAS,EAAEhB,aAFA;AAGXiB,EAAAA,UAAU,EAAE;AACRlB,IAAAA,KAAK,EAALA,KADQ;AAERmB,IAAAA,QAAQ,EAAE;AACNC,MAAAA,eAAe,EAAE;AADX;AAFF;AAHD,CAAf","sourcesContent":["// @flow\n\nimport * as React from 'react';\n\nimport { VIEW_SIZE_TYPE } from '../constants';\nimport notes from './MediaQuery.stories.md';\nimport useMediaQuery from '../useMediaQuery';\nimport withMediaQuery from '../withMediaQuery';\n\nexport const CustomHook = () => {\n const { hover, pointer, size, viewWidth, viewHeight } = useMediaQuery();\n\n return (\n <div>\n <p>\n <b>Hover:</b>\n <span>{` ${hover}`}</span>\n </p>\n <p>\n <b>Pointer:</b>\n <span>{` ${pointer}`}</span>\n </p>\n <p>\n <b>View Dimensions:</b>\n <span>{` ${viewWidth}px (w) x ${viewHeight}px (h)`}</span>\n </p>\n {size === VIEW_SIZE_TYPE.small && <h4>This view is small</h4>}\n {size === VIEW_SIZE_TYPE.medium && <h3>This view is medium</h3>}\n {size === VIEW_SIZE_TYPE.large && <h2>This view is large</h2>}\n {size === VIEW_SIZE_TYPE.xlarge && <h1>This view is xlarge</h1>}\n </div>\n );\n};\n\ntype Props = {\n children?: any,\n hover: string,\n pointer: string,\n size: string,\n viewHeight: number,\n viewWidth: number,\n};\n\nconst DemoComponent = (props: Props) => {\n const { hover, pointer, size, viewWidth, viewHeight } = props;\n\n return (\n <div>\n <p>\n <b>Hover:</b>\n <span>{` ${hover}`}</span>\n </p>\n <p>\n <b>Pointer:</b>\n <span>{` ${pointer}`}</span>\n </p>\n <p>\n <b>View Dimensions:</b>\n <span>{` ${viewWidth}px (w) x ${viewHeight}px (h)`}</span>\n </p>\n {size === 'small' && <h4>This view is small</h4>}\n {size === 'medium' && <h3>This view is medium</h3>}\n {size === 'large' && <h2>This view is large</h2>}\n {size === 'x-large' && <h1>This view is xlarge</h1>}\n </div>\n );\n};\n\nexport const HigherOrderComponent = withMediaQuery(DemoComponent);\n\nexport default {\n title: 'Components|MediaQuery',\n component: useMediaQuery,\n parameters: {\n notes,\n viewport: {\n defaultViewport: 'tablet',\n },\n },\n};\n"],"file":"MediaQuery.stories.js"}
@@ -0,0 +1,2 @@
1
+ import { POINTER_TYPE, HOVER_TYPE } from './constants';
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1,29 @@
1
+ // @flow
2
+
3
+ import { POINTER_TYPE, HOVER_TYPE } from './constants';
4
+
5
+ export type MediaPointerType = POINTER_TYPE.none | POINTER_TYPE.coarse | POINTER_TYPE.fine;
6
+ export type MediaHoverType = HOVER_TYPE.none | HOVER_TYPE.hover;
7
+
8
+ export type MediaFeatures = {
9
+ anyHover?: MediaHoverType,
10
+ anyPointer?: MediaPointerType,
11
+ hover?: MediaHoverType,
12
+ maxHeight?: number,
13
+ maxWidth?: number,
14
+ minHeight?: number,
15
+ minWidth?: number,
16
+ pointer?: MediaPointerType,
17
+ };
18
+
19
+ export type MediaShape = {
20
+ anyHover: MediaHoverType,
21
+ anyPointer: MediaPointerType,
22
+ hover: MediaHoverType,
23
+ pointer: MediaPointerType,
24
+ size: boolean,
25
+ viewHeight: number,
26
+ viewWidth: number,
27
+ };
28
+
29
+ export type MediaQuery = string | MediaFeatures;
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/media-query/types.js"],"names":["POINTER_TYPE","HOVER_TYPE"],"mappings":"AAEA,SAASA,YAAT,EAAuBC,UAAvB,QAAyC,aAAzC","sourcesContent":["// @flow\n\nimport { POINTER_TYPE, HOVER_TYPE } from './constants';\n\nexport type MediaPointerType = POINTER_TYPE.none | POINTER_TYPE.coarse | POINTER_TYPE.fine;\nexport type MediaHoverType = HOVER_TYPE.none | HOVER_TYPE.hover;\n\nexport type MediaFeatures = {\n anyHover?: MediaHoverType,\n anyPointer?: MediaPointerType,\n hover?: MediaHoverType,\n maxHeight?: number,\n maxWidth?: number,\n minHeight?: number,\n minWidth?: number,\n pointer?: MediaPointerType,\n};\n\nexport type MediaShape = {\n anyHover: MediaHoverType,\n anyPointer: MediaPointerType,\n hover: MediaHoverType,\n pointer: MediaPointerType,\n size: boolean,\n viewHeight: number,\n viewWidth: number,\n};\n\nexport type MediaQuery = string | MediaFeatures;\n"],"file":"types.js"}