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/date-picker/DatePicker.tsx"],"names":["React","defineMessages","injectIntl","FormattedMessage","classNames","Pikaday","noop","range","uniqueId","RESIN_TAG_TARGET","IconAlert","IconCalendar","IconClear","ButtonType","Label","PlainButton","Tooltip","TooltipPosition","TooltipTheme","convertDateToUnixMidnightTime","messages","previousMonth","nextMonth","iconAlertText","dateClearButton","chooseDate","TOGGLE_DELAY_MS","ENTER_KEY","ESCAPE_KEY","TAB_KEY","DateFormat","convertUTCToLocal","date","dateString","toUTCString","dateStringWithoutTimeZone","slice","Date","getFormattedDate","format","utcDate","ISO_STRING_DATE_FORMAT","toISOString","UTC_TIME_DATE_FORMAT","UTC_ISO_STRING_DATE_FORMAT","getTime","localesWhereWeekStartsOnSunday","DatePicker","onChange","props","formattedDate","formatValue","dateInputEl","focus","event","isKeyboardInputAllowed","isTextInputAllowed","datePicker","isVisible","stopPropagation","key","preventDefault","hide","onBlur","nextActiveElement","relatedTarget","document","activeElement","datePickerButtonEl","shouldStayClosed","setTimeout","inputDate","value","getDate","onSelectHandler","focusDatePicker","displayFormat","intl","formatDate","dateFormat","setDate","customInput","isAlwaysVisible","maxDate","minDate","yearRange","formatMessage","defaultValue","year","getFullYear","i18n","months","map","month","weekdays","weekday","weekdaysShort","bound","blurFieldOnSelect","setDefaultDate","defaultDate","undefined","field","firstDay","includes","locale","position","showDaysInNextAndPreviousMonths","onSelect","toString","formatDisplay","updateDateInputValue","show","nextProps","nextValue","nextMinDate","nextMaxDate","selectedDate","setMinDate","gotoDate","setMaxDate","destroy","className","description","error","errorTooltipPosition","hideLabel","hideOptionalLabel","inputProps","isClearable","isDisabled","isRequired","label","name","onFocus","placeholder","resinTarget","classes","hasError","ariaAttrs","errorMessageID","descriptionID","resinTargetAttr","valueAttr","onChangeAttr","ERROR","cloneElement","disabled","ref","required","handleInputBlur","handleInputKeyDown","clearDate","BUTTON","handleButtonClick","Component","UNIX_TIME_DATE_FORMAT","BOTTOM_LEFT","DatePickerBase"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { defineMessages, injectIntl, FormattedMessage, WrappedComponentProps } from 'react-intl';\n\nimport classNames from 'classnames';\nimport Pikaday from 'pikaday';\nimport noop from 'lodash/noop';\nimport range from 'lodash/range';\nimport uniqueId from 'lodash/uniqueId';\n\n// @ts-ignore flow import\nimport { RESIN_TAG_TARGET } from '../../common/variables';\nimport IconAlert from '../../icons/general/IconAlert';\nimport IconCalendar from '../../icons/general/IconCalendar';\nimport IconClear from '../../icons/general/IconClear';\n\nimport { ButtonType } from '../button';\nimport Label from '../label';\nimport PlainButton from '../plain-button';\nimport Tooltip, { TooltipPosition, TooltipTheme } from '../tooltip';\n\n// @ts-ignore flow import\nimport { convertDateToUnixMidnightTime } from '../../utils/datetime';\n\nimport './DatePicker.scss';\n\nconst messages = defineMessages({\n previousMonth: {\n defaultMessage: 'Previous Month',\n description: 'Previous month button for a date picker calendar',\n id: 'boxui.base.previousMonth',\n },\n nextMonth: {\n defaultMessage: 'Next Month',\n description: 'Next month button for a date picker calendar',\n id: 'boxui.base.nextMonth',\n },\n iconAlertText: {\n defaultMessage: 'Invalid Date',\n description: 'Date entered is invalid',\n id: 'boxui.datePicker.iconAlertText',\n },\n dateClearButton: {\n defaultMessage: 'Clear Date',\n description: 'Button for clearing date picker',\n id: 'boxui.datePicker.dateClearButton',\n },\n chooseDate: {\n defaultMessage: 'Choose Date',\n description: 'Button for opening date picker',\n id: 'boxui.datePicker.chooseDate',\n },\n});\n\nconst TOGGLE_DELAY_MS = 300;\nconst ENTER_KEY = 'Enter';\nconst ESCAPE_KEY = 'Escape';\nconst TAB_KEY = 'Tab';\n\nexport enum DateFormat {\n ISO_STRING_DATE_FORMAT = 'isoString',\n UTC_TIME_DATE_FORMAT = 'utcTime',\n UNIX_TIME_DATE_FORMAT = 'unixTime',\n UTC_ISO_STRING_DATE_FORMAT = 'utcISOString',\n}\n\n/**\n * Converts date from being relative to GMT, to being relative to browser\n * timezone. E.g., Thu Jun 29 2017 00:00:00 GMT =>\n * Thu Jun 29 2017 00:00:00 GMT-0700 (PDT)\n * @param {Date} date UTC date\n * @returns {Date} date Local date\n */\nfunction convertUTCToLocal(date: Date) {\n const dateString = date.toUTCString();\n // Remove ` GMT` from the timestamp string\n const dateStringWithoutTimeZone = dateString.slice(0, -4);\n return new Date(dateStringWithoutTimeZone);\n}\n\nfunction getFormattedDate(date: Date | null, format: DateFormat) {\n if (!date) {\n return '';\n }\n\n let utcDate;\n\n switch (format) {\n case DateFormat.ISO_STRING_DATE_FORMAT:\n return date.toISOString();\n case DateFormat.UTC_TIME_DATE_FORMAT:\n return convertDateToUnixMidnightTime(date);\n case DateFormat.UTC_ISO_STRING_DATE_FORMAT:\n utcDate = new Date(convertDateToUnixMidnightTime(date));\n return utcDate.toISOString();\n default:\n return date.getTime();\n }\n}\n\nconst localesWhereWeekStartsOnSunday = ['en-US', 'en-CA', 'jp-JP'];\n\nexport interface DatePickerProps extends WrappedComponentProps {\n /** Add a css class to the component */\n className?: string;\n /** Custom input field */\n customInput?: React.ReactElement;\n /** The format of the date value for form submit */\n dateFormat?: DateFormat;\n /** Some optional description */\n description?: React.ReactNode;\n /** The format of the date displayed in the input field */\n displayFormat?: Object;\n /** Error message */\n error?: React.ReactNode;\n /** Position of error message tooltip */\n errorTooltipPosition?: TooltipPosition;\n /** Whether to show or hide the field's label */\n hideLabel?: boolean;\n /** Whether show or hide the 'Optional' label */\n hideOptionalLabel?: boolean;\n /** Props that will be applied on the input element */\n inputProps?: Object;\n /** Is the calendar always visible */\n isAlwaysVisible?: boolean;\n /** Is input clearable */\n isClearable?: boolean;\n /** Is input disabled */\n isDisabled?: boolean;\n /** Is input required */\n isRequired?: boolean;\n /** Enables pikaday's default keyboard input support */\n isKeyboardInputAllowed?: boolean;\n /** Is user allowed to manually input a value (WARNING: this doesn't work with internationalization) */\n isTextInputAllowed?: boolean;\n /** Label displayed for the text input */\n label: React.ReactNode;\n /** The maximum date allowed to be selected */\n maxDate?: Date;\n /** The minimum date allowed to be selected */\n minDate?: Date;\n /** Name of the text input */\n name?: string;\n /** Called when input loses focus */\n onBlur?: ((event: React.FocusEvent<HTMLInputElement>) => void) | undefined;\n /** Called when input is changed, passed the selected Date */\n onChange?: Function;\n /** Called when input receives focus */\n onFocus?: ((event: React.FocusEvent<HTMLInputElement>) => void) | undefined;\n /** Placeholder for the text input */\n placeholder?: string;\n /** Resin tag */\n resinTarget?: string;\n /** Date to set the input */\n value?: Date | null;\n /** Number of years, or an array containing an upper and lower range */\n yearRange?: number | Array<number>;\n}\n\nclass DatePicker extends React.Component<DatePickerProps> {\n static defaultProps = {\n className: '',\n dateFormat: DateFormat.UNIX_TIME_DATE_FORMAT,\n displayFormat: {},\n error: '',\n errorTooltipPosition: TooltipPosition.BOTTOM_LEFT,\n inputProps: {},\n isClearable: true,\n isKeyboardInputAllowed: false,\n isTextInputAllowed: false,\n yearRange: 10,\n };\n\n errorMessageID = uniqueId('errorMessage');\n\n descriptionID = uniqueId('description');\n\n componentDidMount() {\n const {\n customInput,\n dateFormat,\n intl,\n isAlwaysVisible,\n isTextInputAllowed,\n maxDate,\n minDate,\n value,\n yearRange,\n } = this.props;\n const { formatDate, formatMessage } = intl;\n const { nextMonth, previousMonth } = messages;\n let defaultValue = value;\n // When date format is utcTime, initial date needs to be converted from being relative to GMT to being\n // relative to browser timezone\n if (dateFormat === DateFormat.UTC_TIME_DATE_FORMAT && value) {\n defaultValue = convertUTCToLocal(value);\n }\n // Make sure the DST detection algorithm in browsers is up-to-date\n const year = new Date().getFullYear();\n\n const i18n = {\n previousMonth: formatMessage(previousMonth),\n nextMonth: formatMessage(nextMonth),\n months: range(12).map(month => formatDate(new Date(year, month, 15), { month: 'long' })),\n // weekdays must start with Sunday, so array of dates below is May 1st-8th, 2016\n weekdays: range(1, 8).map(date => formatDate(new Date(2016, 4, date), { weekday: 'long' })),\n weekdaysShort: range(1, 8).map(date => formatDate(new Date(2016, 4, date), { weekday: 'narrow' })),\n };\n\n // If \"bound\" is true (default), the DatePicker will be appended at the end of the document, with absolute positioning\n // If \"bound\" is false, the DatePicker will be appended to the DOM right after the input, with relative positioning\n this.datePicker = new Pikaday({\n bound: !customInput,\n blurFieldOnSelect: false, // Available in pikaday > 1.5.1\n setDefaultDate: true,\n defaultDate: defaultValue === null ? undefined : defaultValue,\n field: this.dateInputEl,\n firstDay: localesWhereWeekStartsOnSunday.includes(intl.locale) ? 0 : 1,\n maxDate,\n minDate,\n position: 'bottom left',\n i18n,\n showDaysInNextAndPreviousMonths: true,\n onSelect: this.onSelectHandler,\n yearRange,\n toString: this.formatDisplay,\n });\n\n if (isTextInputAllowed) {\n this.updateDateInputValue(this.formatDisplay(defaultValue));\n }\n\n if (isAlwaysVisible) {\n this.datePicker.show();\n this.datePicker.hide = noop;\n }\n }\n\n // eslint-disable-next-line camelcase\n UNSAFE_componentWillReceiveProps(nextProps: DatePickerProps) {\n if (!this.datePicker) return;\n\n const { value: nextValue = null, minDate: nextMinDate = null, maxDate: nextMaxDate = null } = nextProps;\n const { value, minDate, maxDate, isTextInputAllowed } = this.props;\n const selectedDate = this.datePicker && this.datePicker.getDate();\n\n // only set date when props change\n if (\n (nextValue && !value) ||\n (!nextValue && value) ||\n (nextValue && value && nextValue.getTime() !== value.getTime())\n ) {\n this.datePicker.setDate(nextValue);\n }\n // If text input is allowed the dateInputEl will act as an uncontrolled input and\n // we need to set formatted value manually.\n if (isTextInputAllowed) {\n this.updateDateInputValue(this.formatDisplay(nextValue));\n }\n if (\n (nextMinDate && !minDate) ||\n (nextMinDate && minDate) ||\n (nextMinDate && minDate && nextMinDate.getTime() !== minDate.getTime())\n ) {\n this.datePicker.setMinDate(nextMinDate);\n\n if (selectedDate && selectedDate < nextMinDate) {\n this.datePicker.gotoDate(nextMinDate);\n }\n }\n if (\n (nextMaxDate && !maxDate) ||\n (!nextMaxDate && maxDate) ||\n (nextMaxDate && maxDate && nextMaxDate.getTime() !== maxDate.getTime())\n ) {\n this.datePicker.setMaxDate(nextMaxDate);\n\n if (selectedDate && nextMaxDate && selectedDate > nextMaxDate) {\n this.datePicker.gotoDate(nextMaxDate);\n }\n }\n }\n\n componentWillUnmount() {\n if (this.datePicker) {\n this.datePicker.destroy();\n }\n }\n\n onSelectHandler = (date: Date | null = null) => {\n const { onChange } = this.props;\n if (onChange) {\n const formattedDate = this.formatValue(date);\n onChange(date, formattedDate);\n }\n };\n\n updateDateInputValue(value: string) {\n if (this.dateInputEl) {\n this.dateInputEl.value = value;\n }\n }\n\n dateInputEl: HTMLInputElement | null | undefined;\n\n datePicker: Pikaday | null = null;\n\n datePickerButtonEl: HTMLButtonElement | null | undefined;\n\n // Used to prevent bad sequences of hide/show when toggling the datepicker button\n shouldStayClosed = false;\n\n focusDatePicker = () => {\n // By default, this will open the datepicker too\n if (this.dateInputEl) {\n this.dateInputEl.focus();\n }\n };\n\n handleInputKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n const { isKeyboardInputAllowed, isTextInputAllowed } = this.props;\n\n if (!isKeyboardInputAllowed && this.datePicker && this.datePicker.isVisible()) {\n event.stopPropagation();\n }\n\n // Stops up/down arrow & spacebar from moving page scroll position since pikaday does not preventDefault correctly\n if (!isTextInputAllowed && event.key !== TAB_KEY) {\n event.preventDefault();\n }\n\n if (isTextInputAllowed && event.key === ENTER_KEY) {\n event.preventDefault();\n }\n\n if (event.key === ENTER_KEY || event.key === ESCAPE_KEY || event.key === ' ') {\n // Since pikaday auto-selects when you move the select box, enter/space don't do anything but close the date picker\n if (this.datePicker && this.datePicker.isVisible()) {\n this.datePicker.hide();\n }\n }\n };\n\n handleInputBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n const { onBlur, isTextInputAllowed } = this.props;\n\n const nextActiveElement = event.relatedTarget || document.activeElement;\n\n // This is mostly here to cancel out the pikaday hide() on blur\n if (\n this.datePicker &&\n this.datePicker.isVisible() &&\n nextActiveElement &&\n nextActiveElement === this.datePickerButtonEl\n ) {\n this.shouldStayClosed = true;\n setTimeout(() => {\n this.shouldStayClosed = false;\n }, TOGGLE_DELAY_MS);\n }\n\n if (onBlur) {\n onBlur(event);\n }\n\n // Since we Fire parent onChange event if isTextInputAllowed\n // fire it on blur if the user typed a correct date format\n let inputDate: Date | null | undefined = null;\n\n if (this.dateInputEl) {\n inputDate = new Date(this.dateInputEl.value);\n }\n\n if (isTextInputAllowed && inputDate && inputDate.getDate()) {\n this.onSelectHandler(inputDate);\n }\n };\n\n handleButtonClick = (event: React.SyntheticEvent<HTMLButtonElement>) => {\n event.preventDefault();\n event.stopPropagation();\n\n if (!this.shouldStayClosed) {\n this.focusDatePicker();\n }\n };\n\n formatDisplay = (date?: Date | null): string => {\n const { displayFormat, intl } = this.props;\n return date ? intl.formatDate(date, displayFormat) : '';\n };\n\n formatValue = (date: Date | null): string | number => {\n const { dateFormat } = this.props;\n return dateFormat ? getFormattedDate(date, dateFormat) : '';\n };\n\n clearDate = (event: React.SyntheticEvent<HTMLButtonElement>) => {\n event.preventDefault(); // so datepicker doesn't open after clearing\n if (this.datePicker) {\n this.datePicker.setDate(null);\n }\n this.onSelectHandler(null);\n };\n\n render() {\n const {\n className,\n customInput,\n description,\n error,\n errorTooltipPosition,\n hideLabel,\n hideOptionalLabel,\n inputProps,\n intl,\n isAlwaysVisible,\n isClearable,\n isDisabled,\n isRequired,\n isTextInputAllowed,\n label,\n name,\n onFocus,\n placeholder,\n resinTarget,\n value,\n } = this.props;\n\n const { formatMessage } = intl;\n const classes = classNames(className, 'date-picker-wrapper', {\n 'show-clear-btn': !!value,\n 'show-error': !!error,\n });\n\n const hasError = !!error;\n\n const ariaAttrs = {\n 'aria-invalid': hasError,\n 'aria-required': isRequired,\n 'aria-errormessage': this.errorMessageID,\n 'aria-describedby': description ? this.descriptionID : undefined,\n };\n\n const resinTargetAttr = resinTarget ? { [RESIN_TAG_TARGET]: resinTarget } : {};\n\n const valueAttr = isTextInputAllowed\n ? { defaultValue: this.formatDisplay(value) }\n : { value: this.formatDisplay(value) };\n\n const onChangeAttr = isTextInputAllowed\n ? {}\n : {\n onChange: noop,\n };\n /* fixes proptype error about readonly field (not adding readonly so constraint validation works) */\n\n return (\n <div className={classes}>\n <span className=\"date-picker-icon-holder\">\n <Label hideLabel={hideLabel} showOptionalText={!hideOptionalLabel && !isRequired} text={label}>\n <>\n {!!description && (\n <div id={this.descriptionID} className=\"date-picker-description\">\n {description}\n </div>\n )}\n <Tooltip\n className=\"date-picker-error-tooltip\"\n isShown={!!error}\n position={errorTooltipPosition}\n text={error || ''}\n theme={TooltipTheme.ERROR}\n >\n {customInput ? (\n React.cloneElement(customInput, {\n disabled: isDisabled,\n ref: (ref: HTMLInputElement) => {\n this.dateInputEl = ref;\n },\n required: isRequired,\n ...resinTargetAttr,\n ...ariaAttrs,\n })\n ) : (\n <input\n ref={ref => {\n this.dateInputEl = ref;\n }}\n className=\"date-picker-input\"\n disabled={isDisabled}\n onBlur={this.handleInputBlur}\n placeholder={placeholder || formatMessage(messages.chooseDate)}\n required={isRequired}\n type=\"text\"\n {...onChangeAttr}\n onFocus={onFocus}\n onKeyDown={this.handleInputKeyDown}\n {...resinTargetAttr}\n {...ariaAttrs}\n {...inputProps}\n {...valueAttr}\n />\n )}\n </Tooltip>\n <span id={this.errorMessageID} className=\"accessibility-hidden\" role=\"alert\">\n {error}\n </span>\n </>\n </Label>\n {isClearable && !!value && !isDisabled ? (\n <PlainButton\n aria-label={formatMessage(messages.dateClearButton)}\n className=\"date-picker-clear-btn\"\n onClick={this.clearDate}\n type={ButtonType.BUTTON}\n >\n <IconClear height={12} width={12} />\n </PlainButton>\n ) : null}\n {error ? (\n <IconAlert\n className=\"date-picker-icon-alert\"\n height={13}\n title={<FormattedMessage {...messages.iconAlertText} />}\n width={13}\n />\n ) : null}\n {!isAlwaysVisible && (\n <PlainButton\n aria-label={formatMessage(messages.chooseDate)}\n className=\"date-picker-open-btn\"\n getDOMRef={ref => {\n this.datePickerButtonEl = ref;\n }}\n isDisabled={isDisabled}\n onClick={this.handleButtonClick}\n type={ButtonType.BUTTON}\n >\n <IconCalendar height={17} width={16} />\n </PlainButton>\n )}\n <input\n className=\"date-picker-unix-time-input\"\n name={name}\n readOnly\n type=\"hidden\"\n value={value ? this.formatValue(value) : ''}\n />\n </span>\n </div>\n );\n }\n}\n\nexport { DatePicker as DatePickerBase };\nexport default injectIntl(DatePicker);\n"],"file":"DatePicker.js"}
1
+ {"version":3,"sources":["../../../src/components/date-picker/DatePicker.tsx"],"names":["React","defineMessages","injectIntl","FormattedMessage","classNames","noop","range","uniqueId","RESIN_TAG_TARGET","Alert16","Calendar16","ClearBadge16","AccessiblePikaday","ButtonType","Label","PlainButton","Tooltip","TooltipPosition","TooltipTheme","convertDateToUnixMidnightTime","messages","previousMonth","nextMonth","iconAlertText","dateClearButton","chooseDate","dateInputRangeError","dateInputMaxError","dateInputMinError","TOGGLE_DELAY_MS","ENTER_KEY","ESCAPE_KEY","TAB_KEY","ISO_DATE_FORMAT_PATTERN","DateFormat","convertUTCToLocal","date","dateString","toUTCString","dateStringWithoutTimeZone","slice","Date","getFormattedDate","format","utcDate","ISO_STRING_DATE_FORMAT","toISOString","LOCALE_DATE_STRING_DATE_FORMAT","toLocaleDateString","UTC_TIME_DATE_FORMAT","UTC_ISO_STRING_DATE_FORMAT","getTime","localesWhereWeekStartsOnSunday","DatePicker","isDateInputInvalid","showDateInputError","props","onChange","isAccessible","state","formattedDate","formatValue","dateInputEl","datePicker","value","toString","isVisible","hide","focusDatePicker","setState","focus","intl","maxDate","minDate","formatMessage","dateInputError","maxLocaleDate","minLocaleDate","event","isKeyboardInputAllowed","isTextInputAllowed","stopPropagation","key","preventDefault","canUseDateInputType","target","parsedDate","parseDisplayDateType","setDate","onBlur","nextActiveElement","relatedTarget","document","activeElement","datePickerButtonEl","shouldStayClosed","setTimeout","inputDate","dateInputElVal","getDate","onSelectHandler","isDisabled","show","displayFormat","formatDate","test","dateFormat","createElement","type","e","isAlwaysVisible","accessibleAttrs","tabIndex","ref","handleButtonClick","BUTTON","customInput","yearRange","defaultValue","shouldUseAccessibleFallback","year","getFullYear","timeZone","i18n","months","map","month","weekdays","weekday","weekdaysShort","datePickerConfig","bound","blurFieldOnSelect","setDefaultDate","defaultDate","undefined","field","firstDay","includes","locale","position","showDaysInNextAndPreviousMonths","onSelect","formatDisplay","trigger","accessibleFieldEl","parse","formatDisplayDateType","keyboardInput","updateDateInputValue","nextProps","nextValue","nextMinDate","nextMaxDate","selectedDate","setMinDate","gotoDate","setMaxDate","destroy","className","description","error","errorTooltipPosition","hideLabel","hideOptionalLabel","inputProps","isClearable","isRequired","label","name","onFocus","placeholder","resinTarget","errorMessage","getDateInputError","hasError","hasValue","classes","ariaAttrs","errorMessageID","descriptionID","resinTargetAttr","valueAttr","onChangeAttr","handleOnChange","additionalAttrs","max","min","pattern","source","title","ERROR","cloneElement","disabled","required","handleInputBlur","handleOnClick","handleInputKeyDown","clearDate","renderCalendarButton","Component","UNIX_TIME_DATE_FORMAT","BOTTOM_LEFT","DatePickerBase"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { defineMessages, injectIntl, FormattedMessage, WrappedComponentProps } from 'react-intl';\n\nimport classNames from 'classnames';\nimport noop from 'lodash/noop';\nimport range from 'lodash/range';\nimport uniqueId from 'lodash/uniqueId';\n\n// @ts-ignore flow import\nimport { RESIN_TAG_TARGET } from '../../common/variables';\nimport Alert16 from '../../icon/fill/Alert16';\nimport Calendar16 from '../../icon/fill/Calendar16';\nimport ClearBadge16 from '../../icon/fill/ClearBadge16';\n\nimport AccessiblePikaday, { AccessiblePikadayOptions } from './AccessiblePikaday';\nimport { ButtonType } from '../button';\nimport Label from '../label';\nimport PlainButton from '../plain-button';\nimport Tooltip, { TooltipPosition, TooltipTheme } from '../tooltip';\n\n// @ts-ignore flow import\nimport { convertDateToUnixMidnightTime } from '../../utils/datetime';\n\nimport './DatePicker.scss';\n\nconst messages = defineMessages({\n previousMonth: {\n defaultMessage: 'Previous Month',\n description: 'Previous month button for a date picker calendar',\n id: 'boxui.base.previousMonth',\n },\n nextMonth: {\n defaultMessage: 'Next Month',\n description: 'Next month button for a date picker calendar',\n id: 'boxui.base.nextMonth',\n },\n iconAlertText: {\n defaultMessage: 'Invalid Date',\n description: 'Date entered is invalid',\n id: 'boxui.datePicker.iconAlertText',\n },\n dateClearButton: {\n defaultMessage: 'Clear Date',\n description: 'Button for clearing date picker',\n id: 'boxui.datePicker.dateClearButton',\n },\n chooseDate: {\n defaultMessage: 'Choose Date',\n description: 'Button for opening date picker',\n id: 'boxui.datePicker.chooseDate',\n },\n dateInputRangeError: {\n defaultMessage: 'Please enter a date between {minLocaleDate} and {maxLocaleDate}',\n description: 'Error message when date is out of the minimum and maximum range',\n id: 'boxui.datePicker.dateInputRangeError',\n },\n dateInputMaxError: {\n defaultMessage: 'Please enter a date before {maxLocaleDate}',\n description: 'Error message when date is later than the maximum date',\n id: 'boxui.datePicker.dateInputMaxError',\n },\n dateInputMinError: {\n defaultMessage: 'Please enter a date after {minLocaleDate}',\n description: 'Error message when date is earlier than the minimum date',\n id: 'boxui.datePicker.dateInputMinError',\n },\n});\n\nconst TOGGLE_DELAY_MS = 300;\nconst ENTER_KEY = 'Enter';\nconst ESCAPE_KEY = 'Escape';\nconst TAB_KEY = 'Tab';\n\nconst ISO_DATE_FORMAT_PATTERN = /^\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$/;\n\nexport enum DateFormat {\n ISO_STRING_DATE_FORMAT = 'isoString',\n LOCALE_DATE_STRING_DATE_FORMAT = 'localeDateString',\n UTC_TIME_DATE_FORMAT = 'utcTime',\n UNIX_TIME_DATE_FORMAT = 'unixTime',\n UTC_ISO_STRING_DATE_FORMAT = 'utcISOString',\n}\n\n/**\n * Converts date from being relative to GMT, to being relative to browser\n * timezone. E.g., Thu Jun 29 2017 00:00:00 GMT =>\n * Thu Jun 29 2017 00:00:00 GMT-0700 (PDT)\n * @param {Date} date UTC date\n * @returns {Date} date Local date\n */\nfunction convertUTCToLocal(date: Date) {\n const dateString = date.toUTCString();\n // Remove ` GMT` from the timestamp string\n const dateStringWithoutTimeZone = dateString.slice(0, -4);\n return new Date(dateStringWithoutTimeZone);\n}\n\nfunction getFormattedDate(date: Date | null, format: DateFormat) {\n if (!date) {\n return '';\n }\n\n let utcDate;\n\n switch (format) {\n case DateFormat.ISO_STRING_DATE_FORMAT:\n return date.toISOString();\n case DateFormat.LOCALE_DATE_STRING_DATE_FORMAT:\n return date.toLocaleDateString();\n case DateFormat.UTC_TIME_DATE_FORMAT:\n return convertDateToUnixMidnightTime(date);\n case DateFormat.UTC_ISO_STRING_DATE_FORMAT:\n utcDate = new Date(convertDateToUnixMidnightTime(date));\n return utcDate.toISOString();\n default:\n return date.getTime();\n }\n}\n\nconst localesWhereWeekStartsOnSunday = ['en-US', 'en-CA', 'jp-JP'];\n\nexport interface DatePickerProps extends WrappedComponentProps {\n /** Add a css class to the component */\n className?: string;\n /** Custom input field */\n customInput?: React.ReactElement;\n /** The format of the date value for form submit */\n dateFormat?: DateFormat;\n /** Some optional description */\n description?: React.ReactNode;\n /**\n * The format of the date displayed in the input field\n * @deprecated, will no longer be supported with accessible mode enabled (isAccessible = true)\n */\n displayFormat?: {\n [key: string]: string;\n };\n /** Error message */\n error?: React.ReactNode;\n /** Position of error message tooltip */\n errorTooltipPosition?: TooltipPosition;\n /** Whether to show or hide the field's label */\n hideLabel?: boolean;\n /** Whether show or hide the 'Optional' label */\n hideOptionalLabel?: boolean;\n /** Props that will be applied on the input element */\n inputProps?: Object;\n /** Does the date input meet accessibility standards */\n isAccessible?: boolean;\n /** Is the calendar always visible */\n isAlwaysVisible?: boolean;\n /** Is input clearable */\n isClearable?: boolean;\n /** Is input disabled */\n isDisabled?: boolean;\n /** Is input required */\n isRequired?: boolean;\n /** Enables pikaday's default keyboard input support */\n isKeyboardInputAllowed?: boolean;\n /** Is user allowed to manually input a value (WARNING: this doesn't work with internationalization) */\n isTextInputAllowed?: boolean;\n /** Label displayed for the text input */\n label: React.ReactNode;\n /** The maximum date allowed to be selected */\n maxDate?: Date;\n /** The minimum date allowed to be selected */\n minDate?: Date;\n /** Name of the text input */\n name?: string;\n /** Called when input loses focus */\n onBlur?: ((event: React.FocusEvent<HTMLInputElement>) => void) | undefined;\n /** Called when input is changed, passed the selected Date */\n onChange?: Function;\n /** Called when input receives focus */\n onFocus?: ((event: React.FocusEvent<HTMLInputElement>) => void) | undefined;\n /** Placeholder for the text input */\n placeholder?: string;\n /** Resin tag */\n resinTarget?: string;\n /** Date to set the input */\n value?: Date | null;\n /** Number of years, or an array containing an upper and lower range */\n yearRange?: number | Array<number>;\n}\n\ninterface DatePickerState {\n /** Is the date input invalid */\n isDateInputInvalid: boolean;\n /** Shows error message tooltip for invalid date input */\n showDateInputError: boolean;\n}\n\nclass DatePicker extends React.Component<DatePickerProps, DatePickerState> {\n static defaultProps = {\n className: '',\n dateFormat: DateFormat.UNIX_TIME_DATE_FORMAT,\n displayFormat: {},\n error: '',\n errorTooltipPosition: TooltipPosition.BOTTOM_LEFT,\n inputProps: {},\n isClearable: true,\n isKeyboardInputAllowed: false,\n isTextInputAllowed: false,\n yearRange: 10,\n };\n\n state = {\n isDateInputInvalid: false,\n showDateInputError: false,\n };\n\n errorMessageID = uniqueId('errorMessage');\n\n descriptionID = uniqueId('description');\n\n componentDidMount() {\n const {\n customInput,\n dateFormat,\n displayFormat,\n intl,\n isAccessible,\n isAlwaysVisible,\n isTextInputAllowed,\n maxDate,\n minDate,\n onChange,\n value,\n yearRange,\n } = this.props;\n const { formatDate, formatMessage } = intl;\n const { nextMonth, previousMonth } = messages;\n let defaultValue = value;\n\n if (isAccessible && this.shouldUseAccessibleFallback()) {\n this.canUseDateInputType = false;\n }\n\n // When date format is utcTime, initial date needs to be converted from being relative to GMT to being\n // relative to browser timezone\n if (dateFormat === DateFormat.UTC_TIME_DATE_FORMAT && value) {\n defaultValue = convertUTCToLocal(value);\n\n if (onChange) {\n const formattedDate = this.formatValue(defaultValue);\n onChange(defaultValue, formattedDate);\n }\n }\n // Make sure the DST detection algorithm in browsers is up-to-date\n const year = new Date().getFullYear();\n const { timeZone } = displayFormat || {};\n const i18n = {\n previousMonth: formatMessage(previousMonth),\n nextMonth: formatMessage(nextMonth),\n months: range(12).map(month =>\n formatDate(new Date(year, month, 15), {\n month: 'long',\n timeZone,\n }),\n ),\n // weekdays must start with Sunday, so array of dates below is May 1st-8th, 2016\n weekdays: range(1, 8).map(date =>\n formatDate(new Date(2016, 4, date), {\n weekday: 'long',\n timeZone,\n }),\n ),\n weekdaysShort: range(1, 8).map(date =>\n formatDate(new Date(2016, 4, date), {\n weekday: 'narrow',\n timeZone,\n }),\n ),\n };\n\n // If \"bound\" is true (default), the DatePicker will be appended at the end of the document, with absolute positioning\n // If \"bound\" is false, the DatePicker will be appended to the DOM right after the input, with relative positioning\n const datePickerConfig: AccessiblePikadayOptions = {\n bound: !customInput,\n blurFieldOnSelect: false, // Available in pikaday > 1.5.1\n setDefaultDate: true,\n defaultDate: defaultValue === null ? undefined : defaultValue,\n field: this.dateInputEl,\n firstDay: localesWhereWeekStartsOnSunday.includes(intl.locale) ? 0 : 1,\n maxDate,\n minDate,\n position: 'bottom left',\n i18n,\n showDaysInNextAndPreviousMonths: true,\n onSelect: this.onSelectHandler,\n yearRange,\n toString: this.formatDisplay,\n };\n\n if (isAccessible) {\n if (this.canUseDateInputType) {\n delete datePickerConfig.field;\n datePickerConfig.trigger = this.dateInputEl;\n datePickerConfig.accessibleFieldEl = this.dateInputEl;\n datePickerConfig.datePickerButtonEl = this.datePickerButtonEl;\n }\n\n datePickerConfig.parse = this.parseDisplayDateType;\n datePickerConfig.toString = this.formatDisplayDateType;\n datePickerConfig.keyboardInput = false;\n }\n\n this.datePicker = new AccessiblePikaday(datePickerConfig);\n\n if (isTextInputAllowed) {\n this.updateDateInputValue(this.formatDisplay(defaultValue));\n }\n\n if (isAlwaysVisible) {\n this.datePicker.show();\n this.datePicker.hide = noop;\n }\n }\n\n // eslint-disable-next-line camelcase\n UNSAFE_componentWillReceiveProps(nextProps: DatePickerProps) {\n if (!this.datePicker) return;\n\n const { value: nextValue = null, minDate: nextMinDate = null, maxDate: nextMaxDate = null } = nextProps;\n const { value, minDate, maxDate, isTextInputAllowed } = this.props;\n const selectedDate = this.datePicker && this.datePicker.getDate();\n\n // only set date when props change\n if (\n (nextValue && !value) ||\n (!nextValue && value) ||\n (nextValue && value && nextValue.getTime() !== value.getTime())\n ) {\n this.datePicker.setDate(nextValue);\n }\n // If text input is allowed the dateInputEl will act as an uncontrolled input and\n // we need to set formatted value manually.\n if (isTextInputAllowed) {\n this.updateDateInputValue(this.formatDisplay(nextValue));\n }\n if (\n (nextMinDate && !minDate) ||\n (nextMinDate && minDate) ||\n (nextMinDate && minDate && nextMinDate.getTime() !== minDate.getTime())\n ) {\n this.datePicker.setMinDate(nextMinDate);\n\n if (selectedDate && selectedDate < nextMinDate) {\n this.datePicker.gotoDate(nextMinDate);\n }\n }\n if (\n (nextMaxDate && !maxDate) ||\n (!nextMaxDate && maxDate) ||\n (nextMaxDate && maxDate && nextMaxDate.getTime() !== maxDate.getTime())\n ) {\n this.datePicker.setMaxDate(nextMaxDate);\n\n if (selectedDate && nextMaxDate && selectedDate > nextMaxDate) {\n this.datePicker.gotoDate(nextMaxDate);\n }\n }\n }\n\n componentWillUnmount() {\n if (this.datePicker) {\n this.datePicker.destroy();\n }\n }\n\n onSelectHandler = (date: Date | null = null) => {\n const { onChange, isAccessible } = this.props;\n const { isDateInputInvalid } = this.state;\n\n if (onChange) {\n const formattedDate = this.formatValue(date);\n onChange(date, formattedDate);\n }\n\n if (isAccessible) {\n if (this.dateInputEl && this.datePicker) {\n // Required because Pikaday instance is unbound\n // See https://github.com/Pikaday/Pikaday#usage\n this.dateInputEl.value = this.datePicker.toString();\n }\n if (this.datePicker && this.datePicker.isVisible()) {\n this.datePicker.hide();\n this.focusDatePicker();\n }\n }\n\n if (isDateInputInvalid) {\n this.setState({ isDateInputInvalid: false, showDateInputError: false });\n }\n };\n\n updateDateInputValue(value: string) {\n if (this.dateInputEl) {\n this.dateInputEl.value = value;\n }\n }\n\n dateInputEl: HTMLInputElement | null | undefined;\n\n datePicker: Pikaday | null = null;\n\n datePickerButtonEl: HTMLButtonElement | HTMLDivElement | null | undefined;\n\n // Used to detect when a fallback is necessary when isAccessible is enabled\n canUseDateInputType = true;\n\n // Used to prevent bad sequences of hide/show when toggling the datepicker button\n shouldStayClosed = false;\n\n focusDatePicker = () => {\n // This also opens the date picker when isAccessible is disabled\n if (this.dateInputEl) {\n this.dateInputEl.focus();\n }\n };\n\n getDateInputError = () => {\n const { intl, maxDate = null, minDate = null } = this.props;\n const { showDateInputError } = this.state;\n const { formatMessage } = intl;\n\n if (!showDateInputError) return '';\n\n let dateInputError = '';\n const maxLocaleDate = getFormattedDate(maxDate, DateFormat.LOCALE_DATE_STRING_DATE_FORMAT);\n const minLocaleDate = getFormattedDate(minDate, DateFormat.LOCALE_DATE_STRING_DATE_FORMAT);\n\n if (maxLocaleDate && minLocaleDate) {\n dateInputError = formatMessage(messages.dateInputRangeError, { maxLocaleDate, minLocaleDate });\n } else if (maxLocaleDate) {\n dateInputError = formatMessage(messages.dateInputMaxError, { maxLocaleDate });\n } else if (minLocaleDate) {\n dateInputError = formatMessage(messages.dateInputMinError, { minLocaleDate });\n }\n\n return dateInputError;\n };\n\n handleInputKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n const { isKeyboardInputAllowed, isTextInputAllowed, isAccessible } = this.props;\n\n if (!isKeyboardInputAllowed && this.datePicker && this.datePicker.isVisible()) {\n event.stopPropagation();\n }\n\n // Stops up/down arrow & spacebar from moving page scroll position since pikaday does not preventDefault correctly\n if (!(isTextInputAllowed || isAccessible) && event.key !== TAB_KEY) {\n event.preventDefault();\n }\n\n if ((isTextInputAllowed || (isAccessible && !this.canUseDateInputType)) && event.key === ENTER_KEY) {\n event.preventDefault();\n }\n\n // Stops enter & spacebar from opening up the browser's default date picker\n if (isAccessible && (event.key === ENTER_KEY || event.key === ' ')) {\n event.preventDefault();\n }\n\n if (event.key === ENTER_KEY || event.key === ESCAPE_KEY || event.key === ' ') {\n // Since pikaday auto-selects when you move the select box, enter/space don't do anything but close the date picker\n if (this.datePicker && this.datePicker.isVisible()) {\n this.datePicker.hide();\n }\n }\n };\n\n handleOnChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const { isAccessible, maxDate, minDate, onChange } = this.props;\n const { isDateInputInvalid } = this.state;\n\n if (!isAccessible || !this.canUseDateInputType) {\n return;\n }\n\n if (this.datePicker && this.datePicker.isVisible()) {\n event.stopPropagation();\n }\n\n const { value } = event.target;\n if (this.datePicker && value) {\n const parsedDate = this.parseDisplayDateType(value);\n\n if (parsedDate) {\n if ((minDate && parsedDate < minDate) || (maxDate && parsedDate > maxDate)) {\n this.datePicker.setDate(null);\n this.setState({ isDateInputInvalid: true });\n return;\n }\n // Reset the error styling on valid date input\n if (isDateInputInvalid) {\n this.setState({ isDateInputInvalid: false, showDateInputError: false });\n }\n } else {\n this.setState({ isDateInputInvalid: true });\n }\n\n // Set date so Pikaday date picker value stays in sync with input\n this.datePicker.setDate(parsedDate, true);\n\n if (onChange) {\n const formattedDate = this.formatValue(parsedDate);\n onChange(parsedDate, formattedDate);\n }\n } else if (isDateInputInvalid) {\n this.setState({ isDateInputInvalid: false, showDateInputError: false });\n }\n };\n\n handleInputBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n const { isAccessible, isTextInputAllowed, onBlur } = this.props;\n const { isDateInputInvalid } = this.state;\n const nextActiveElement = event.relatedTarget || document.activeElement;\n\n // This is mostly here to cancel out the pikaday hide() on blur\n if (\n this.datePicker &&\n this.datePicker.isVisible() &&\n nextActiveElement &&\n nextActiveElement === this.datePickerButtonEl\n ) {\n this.shouldStayClosed = true;\n setTimeout(() => {\n this.shouldStayClosed = false;\n }, TOGGLE_DELAY_MS);\n }\n\n if (onBlur) {\n onBlur(event);\n }\n\n // Since we fire parent onChange event if isTextInputAllowed,\n // fire it on blur if the user typed a correct date format\n let inputDate: Date | null | undefined = null;\n\n if (this.dateInputEl) {\n let dateInputElVal = null;\n if (isAccessible && !this.canUseDateInputType) {\n dateInputElVal = this.parseDisplayDateType(this.dateInputEl.value);\n }\n inputDate = new Date(dateInputElVal || this.dateInputEl.value);\n }\n\n if ((isTextInputAllowed || (isAccessible && !this.canUseDateInputType)) && inputDate && inputDate.getDate()) {\n this.onSelectHandler(inputDate);\n }\n\n if (isAccessible && isDateInputInvalid) this.setState({ showDateInputError: true });\n };\n\n handleButtonClick = (event: React.SyntheticEvent<HTMLButtonElement>) => {\n event.preventDefault();\n event.stopPropagation();\n const { isAccessible, isDisabled } = this.props;\n\n if (isAccessible) {\n if (isDisabled || !this.datePicker) {\n return;\n }\n\n if (this.datePicker.isVisible()) {\n this.datePicker.hide();\n this.focusDatePicker();\n } else {\n this.datePicker.show();\n }\n return;\n }\n\n if (!this.shouldStayClosed) {\n this.focusDatePicker();\n }\n };\n\n handleOnClick = (event: React.SyntheticEvent<HTMLInputElement>) => {\n const { isAccessible } = this.props;\n\n if (isAccessible) {\n // Suppress Firefox default behavior: clicking on input type \"date\"\n // opens the browser date picker.\n event.preventDefault();\n event.stopPropagation();\n }\n };\n\n formatDisplay = (date?: Date | null): string => {\n const { displayFormat, intl } = this.props;\n return date ? intl.formatDate(date, displayFormat) : '';\n };\n\n formatDisplayDateType = (date?: Date | null): string => {\n // Input type \"date\" only accepts the format YYYY-MM-DD\n return date ? getFormattedDate(date, DateFormat.UTC_ISO_STRING_DATE_FORMAT).slice(0, 10) : '';\n };\n\n parseDisplayDateType = (dateString?: string | null): Date | null => {\n if (dateString && ISO_DATE_FORMAT_PATTERN.test(dateString)) {\n // Calling new Date('YYYY-MM-DD') without 'T00:00:00' yields undesired results:\n // E.g. new Date('2017-06-01') => May 31 2017\n // E.g. new Date('2017-06-01T00:00:00') => June 01 2017\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/Date#parameters\n return new Date(`${dateString}T00:00:00`);\n }\n return null;\n };\n\n formatValue = (date: Date | null): string | number => {\n const { dateFormat } = this.props;\n return dateFormat ? getFormattedDate(date, dateFormat) : '';\n };\n\n clearDate = (event: React.SyntheticEvent<HTMLButtonElement>) => {\n // Prevents the date picker from opening after clearing\n event.preventDefault();\n const { isAccessible } = this.props;\n\n if (this.datePicker) {\n this.datePicker.setDate(null);\n }\n this.onSelectHandler(null);\n\n if (isAccessible) {\n this.focusDatePicker();\n }\n };\n\n /** Determines whether a new date input falls back to a text input or not */\n shouldUseAccessibleFallback = (): boolean => {\n const test = document.createElement('input');\n\n try {\n test.type = 'date';\n } catch (e) {\n // no-op\n }\n\n // If date input falls back to text input, show the fallback\n return test.type === 'text';\n };\n\n renderCalendarButton = () => {\n const { intl, isAccessible, isAlwaysVisible, isDisabled } = this.props;\n const { formatMessage } = intl;\n\n if (isAlwaysVisible) {\n return null;\n }\n\n // De-emphasizing the Pikaday date picker because it does not meet accessibility standards\n // Screenreaders & navigating via keyboard will no longer pick up on this element\n const accessibleAttrs = isAccessible ? { 'aria-hidden': true, tabIndex: -1 } : {};\n\n return (\n <PlainButton\n aria-label={formatMessage(messages.chooseDate)}\n className=\"date-picker-open-btn\"\n getDOMRef={ref => {\n this.datePickerButtonEl = ref;\n }}\n isDisabled={isDisabled}\n onClick={this.handleButtonClick}\n type={ButtonType.BUTTON}\n {...accessibleAttrs}\n >\n <Calendar16 />\n </PlainButton>\n );\n };\n\n render() {\n const {\n className,\n customInput,\n description,\n error,\n errorTooltipPosition,\n hideLabel,\n hideOptionalLabel,\n inputProps,\n intl,\n isAccessible,\n isClearable,\n isDisabled,\n isRequired,\n isTextInputAllowed,\n label,\n maxDate,\n minDate,\n name,\n onFocus,\n placeholder,\n resinTarget,\n value,\n } = this.props;\n const { isDateInputInvalid } = this.state;\n const { formatMessage } = intl;\n\n const errorMessage = error || this.getDateInputError();\n const hasError = !!errorMessage || isDateInputInvalid;\n const hasValue = !!value || isDateInputInvalid;\n\n const classes = classNames(className, 'date-picker-wrapper', {\n 'show-clear-btn': isClearable && hasValue && !isDisabled,\n 'show-error': hasError,\n });\n\n const ariaAttrs = {\n 'aria-invalid': hasError,\n 'aria-required': isRequired,\n 'aria-errormessage': this.errorMessageID,\n 'aria-describedby': description ? this.descriptionID : undefined,\n };\n\n const resinTargetAttr = resinTarget ? { [RESIN_TAG_TARGET]: resinTarget } : {};\n\n let valueAttr;\n if (isAccessible) {\n valueAttr = { defaultValue: this.formatDisplayDateType(value) };\n } else if (isTextInputAllowed) {\n valueAttr = { defaultValue: this.formatDisplay(value) };\n } else {\n valueAttr = { value: this.formatDisplay(value) };\n }\n\n let onChangeAttr;\n if (isAccessible && this.canUseDateInputType) {\n onChangeAttr = { onChange: this.handleOnChange };\n } else if (isTextInputAllowed || (isAccessible && !this.canUseDateInputType)) {\n onChangeAttr = {};\n } else {\n // Fixes prop type error about read-only field\n // Not adding readOnly so constraint validation works\n onChangeAttr = { onChange: noop };\n }\n\n let additionalAttrs;\n if (isAccessible && this.canUseDateInputType) {\n additionalAttrs = {\n max: this.formatDisplayDateType(maxDate) || '9999-12-31',\n min: this.formatDisplayDateType(minDate) || '0001-01-01',\n };\n } else if (isAccessible && !this.canUseDateInputType) {\n // \"name\" prop is required for pattern validation to be surfaced on form submit. See components/form-elements/form/Form.js\n // \"title\" prop is shown during constraint validation as a description of the pattern\n // See https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern#usability\n additionalAttrs = { name, pattern: ISO_DATE_FORMAT_PATTERN.source, title: 'YYYY-MM-DD' };\n } else {\n additionalAttrs = {};\n }\n\n return (\n <div className={classes}>\n <span className=\"date-picker-icon-holder\">\n <Label hideLabel={hideLabel} showOptionalText={!hideOptionalLabel && !isRequired} text={label}>\n <>\n {!!description && (\n <div id={this.descriptionID} className=\"date-picker-description\">\n {description}\n </div>\n )}\n <Tooltip\n className=\"date-picker-error-tooltip\"\n isShown={!!errorMessage}\n position={errorTooltipPosition}\n text={errorMessage || ''}\n theme={TooltipTheme.ERROR}\n >\n {customInput ? (\n React.cloneElement(customInput, {\n disabled: isDisabled,\n ref: (ref: HTMLInputElement) => {\n this.dateInputEl = ref;\n },\n required: isRequired,\n ...resinTargetAttr,\n ...ariaAttrs,\n })\n ) : (\n <input\n ref={ref => {\n this.dateInputEl = ref;\n }}\n className=\"date-picker-input\"\n disabled={isDisabled}\n onBlur={this.handleInputBlur}\n onClick={this.handleOnClick}\n placeholder={placeholder || formatMessage(messages.chooseDate)}\n required={isRequired}\n type={isAccessible && this.canUseDateInputType ? 'date' : 'text'}\n {...onChangeAttr}\n onFocus={onFocus}\n onKeyDown={this.handleInputKeyDown}\n {...resinTargetAttr}\n {...ariaAttrs}\n {...inputProps}\n {...valueAttr}\n {...additionalAttrs}\n />\n )}\n </Tooltip>\n <span id={this.errorMessageID} className=\"accessibility-hidden\" role=\"alert\">\n {errorMessage}\n </span>\n </>\n </Label>\n {isClearable && hasValue && !isDisabled ? (\n <PlainButton\n aria-label={formatMessage(messages.dateClearButton)}\n className=\"date-picker-clear-btn\"\n onClick={this.clearDate}\n type={ButtonType.BUTTON}\n >\n <ClearBadge16 />\n </PlainButton>\n ) : null}\n {hasError ? (\n <Alert16\n className=\"date-picker-icon-alert\"\n title={<FormattedMessage {...messages.iconAlertText} />}\n />\n ) : null}\n {this.renderCalendarButton()}\n <input\n className=\"date-picker-unix-time-input\"\n name={name}\n readOnly\n type=\"hidden\"\n value={value ? this.formatValue(value) : ''}\n />\n </span>\n </div>\n );\n }\n}\n\nexport { DatePicker as DatePickerBase };\nexport default injectIntl(DatePicker);\n"],"file":"DatePicker.js"}
@@ -23,10 +23,16 @@
23
23
  }
24
24
 
25
25
  .date-picker-input {
26
+ min-width: 160px;
27
+ height: 32px;
26
28
  margin-top: 5px;
27
29
  margin-bottom: 0;
28
- padding-right: 30px;
30
+ padding-right: 6px;
29
31
  text-overflow: ellipsis;
32
+
33
+ &::-webkit-calendar-picker-indicator {
34
+ display: none;
35
+ }
30
36
  }
31
37
 
32
38
  .date-picker-input:focus ~ .tooltip,
@@ -38,33 +44,27 @@
38
44
  .date-picker-open-btn {
39
45
  position: absolute;
40
46
  right: 7px;
41
- bottom: 10px;
42
- display: inline-block;
43
- height: 17px;
47
+ bottom: 8px;
48
+ display: inline-flex;
49
+ background-color: $white;
50
+ }
51
+
52
+ .date-picker-open-btn:hover {
53
+ cursor: pointer;
44
54
  }
45
55
 
46
56
  .date-picker-clear-btn,
47
57
  .date-picker-icon-alert {
48
58
  position: absolute;
49
59
  right: 30px;
50
- bottom: 10px;
51
- display: inline-block;
60
+ bottom: 8px;
61
+ display: inline-flex;
52
62
 
53
63
  span {
54
64
  display: inline-block;
55
65
  }
56
66
  }
57
67
 
58
- .date-picker-clear-btn,
59
- .date-picker-clear-btn:active,
60
- .date-picker-clear-btn:focus,
61
- .date-picker-clear-btn:hover,
62
- .date-picker-clear-btn:active:focus,
63
- .date-picker-clear-btn:active:hover,
64
- .date-picker-clear-btn span {
65
- height: 14px;
66
- }
67
-
68
68
  .date-picker-clear-btn {
69
69
  path {
70
70
  transition: fill linear .1s;
@@ -76,7 +76,6 @@
76
76
  > .date-picker-clear-btn:focus {
77
77
  path {
78
78
  fill: $bdl-gray-80;
79
- path: $bdl-gray-80;
80
79
  }
81
80
  }
82
81
 
@@ -91,21 +90,32 @@
91
90
  }
92
91
  }
93
92
 
93
+ .date-picker-clear-btn:focus,
94
+ .date-picker-open-btn:focus {
95
+ margin: -1px;
96
+ border: 1px solid $bdl-box-blue;
97
+ border-radius: $bdl-border-radius-size;
98
+ }
99
+
94
100
  .date-picker-icon-alert {
95
101
  path {
96
102
  fill: $bdl-watermelon-red;
97
103
  }
98
104
  }
99
105
 
106
+ &.show-error {
107
+ .date-picker-input {
108
+ border-color: $bdl-watermelon-red;
109
+ }
110
+ }
111
+
100
112
  &.show-clear-btn.show-error {
101
- .date-picker-clear-btn,
102
- .date-picker-clear-btn:hover,
103
- .date-picker-clear-btn:active {
113
+ .date-picker-clear-btn {
104
114
  right: 25px;
105
115
  }
106
116
 
107
- .date-picker-input {
108
- padding-right: 50px;
117
+ .date-picker-icon-alert {
118
+ right: 42px;
109
119
  }
110
120
  }
111
121
  }
@@ -93,6 +93,16 @@ export var manuallyEditable = function manuallyEditable() {
93
93
  value: new Date('September 27, 2019')
94
94
  }));
95
95
  };
96
+ export var manuallyEditableAndAccessible = function manuallyEditableAndAccessible() {
97
+ return React.createElement(IntlProvider, {
98
+ locale: "en-US"
99
+ }, React.createElement(DatePicker, {
100
+ isAccessible: true,
101
+ placeholder: "Date",
102
+ label: "Date Picker",
103
+ value: new Date('August 10, 2021')
104
+ }));
105
+ };
96
106
  export var withLimitedDateRange = function withLimitedDateRange() {
97
107
  var maxDate = new Date('February 25, 2021');
98
108
  var sixDays = 1000 * 60 * 60 * 24 * 6;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/date-picker/DatePicker.stories.tsx"],"names":["React","IntlProvider","State","Store","TooltipPosition","DatePicker","notes","bdlGray10","basic","MIN_TIME","Date","TODAY","yearRange","getFullYear","componentStore","date","fromDate","toDate","state","day","month","year","set","basicWithKeyboardInput","withDescription","manuallyEditable","withLimitedDateRange","maxDate","sixDays","minDate","valueOf","alwaysVisibleWithCustomInputField","customInput","display","justifyContent","margin","width","position","left","top","zIndex","background","border","borderRadius","padding","height","outline","textAlign","toDateString","disabledWithErrorMessage","customErrorTooltipPosition","MIDDLE_RIGHT","withRange","MAX_TIME","withRangeAndKeyboardInput","title","component","parameters"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { IntlProvider } from 'react-intl';\nimport { State, Store } from '@sambego/storybook-state';\n\nimport { TooltipPosition } from '../tooltip';\nimport DatePicker from './DatePicker';\nimport notes from './DatePicker.stories.md';\n\nimport { bdlGray10 } from '../../styles/variables';\n\nexport const basic = () => {\n const MIN_TIME = new Date(0);\n const TODAY = new Date('July 18, 2018');\n const yearRange = [MIN_TIME.getFullYear(), TODAY.getFullYear()];\n const componentStore = new Store({\n date: new Date('July 9, 2018'),\n fromDate: null,\n toDate: null,\n });\n return (\n <State store={componentStore}>\n {state => (\n <IntlProvider locale=\"en-US\">\n <DatePicker\n className=\"date-picker-example\"\n displayFormat={{\n day: 'numeric',\n month: 'long',\n year: 'numeric',\n }}\n label=\"Date\"\n name=\"datepicker\"\n onChange={(date: Date) => {\n componentStore.set({ date });\n }}\n placeholder=\"Date\"\n value={state.date}\n yearRange={yearRange}\n />\n </IntlProvider>\n )}\n </State>\n );\n};\n\nexport const basicWithKeyboardInput = () => {\n const MIN_TIME = new Date(0);\n const TODAY = new Date('July 18, 2018');\n const yearRange = [MIN_TIME.getFullYear(), TODAY.getFullYear()];\n const componentStore = new Store({\n date: new Date('July 9, 2018'),\n fromDate: null,\n toDate: null,\n });\n return (\n <State store={componentStore}>\n {state => (\n <IntlProvider locale=\"en-US\">\n <DatePicker\n className=\"date-picker-example\"\n displayFormat={{\n day: 'numeric',\n month: 'long',\n year: 'numeric',\n }}\n isKeyboardInputAllowed\n label=\"Date\"\n name=\"datepicker\"\n onChange={(date: Date) => {\n componentStore.set({ date });\n }}\n placeholder=\"Date\"\n value={state.date}\n yearRange={yearRange}\n />\n </IntlProvider>\n )}\n </State>\n );\n};\n\nexport const withDescription = () => (\n <IntlProvider locale=\"en-US\">\n <DatePicker placeholder=\"Date\" description=\"Date of your birth\" label=\"Date Picker\" />\n </IntlProvider>\n);\n\nexport const manuallyEditable = () => (\n <IntlProvider locale=\"en-US\">\n <DatePicker isTextInputAllowed placeholder=\"Date\" label=\"Date Picker\" value={new Date('September 27, 2019')} />\n </IntlProvider>\n);\n\nexport const withLimitedDateRange = () => {\n const maxDate = new Date('February 25, 2021');\n const sixDays = 1000 * 60 * 60 * 24 * 6;\n const minDate = new Date(maxDate.valueOf() - sixDays);\n const componentStore = new Store({\n date: maxDate,\n fromDate: null,\n toDate: null,\n });\n return (\n <State store={componentStore}>\n {state => (\n <IntlProvider locale=\"en-US\">\n <DatePicker\n isTextInputAllowed\n placeholder=\"Date\"\n label=\"Date Picker\"\n minDate={minDate}\n maxDate={maxDate}\n value={state.date}\n />\n </IntlProvider>\n )}\n </State>\n );\n};\n\nexport const alwaysVisibleWithCustomInputField = () => {\n const componentStore = new Store({\n date: new Date('February 26, 2021'),\n fromDate: null,\n toDate: null,\n });\n\n return (\n <State store={componentStore}>\n {state => {\n const customInput = (\n <input\n style={{\n display: 'none',\n }}\n />\n );\n\n return (\n <IntlProvider locale=\"en-US\">\n <div\n style={{\n display: 'flex',\n justifyContent: 'center',\n }}\n >\n <DatePicker\n className=\"date-picker-example\"\n customInput={customInput}\n displayFormat={{\n day: 'numeric',\n month: 'short',\n year: 'numeric',\n }}\n hideLabel\n isAlwaysVisible\n isClearable={false}\n label=\"Date\"\n name=\"datepicker\"\n onChange={(date: Date) => {\n componentStore.set({ date });\n }}\n placeholder=\"Date\"\n value={state.date}\n />\n <div\n style={{\n margin: '20px 30px',\n width: '400px',\n }}\n >\n <p>\n In this example, the DatePicker is bound to a custom hidden input field. The right\n panel retains the same state as the DatePicker, but is not contained within the\n DatePicker component.\n </p>\n <div\n style={{\n position: 'relative',\n }}\n >\n <label\n htmlFor=\"date-picker-custom-input\"\n style={{\n position: 'absolute',\n left: '10px',\n top: '6px',\n zIndex: 100,\n }}\n >\n Start Date\n </label>\n <input\n disabled\n name=\"date-picker-custom-input\"\n style={{\n background: bdlGray10,\n border: 0,\n borderRadius: '4px',\n padding: '.5em .8em',\n width: '19em',\n height: '2.5em',\n top: 0,\n outline: 'none',\n textAlign: 'right',\n }}\n value={state.date.toDateString()}\n />\n </div>\n </div>\n </div>\n </IntlProvider>\n );\n }}\n </State>\n );\n};\n\nexport const disabledWithErrorMessage = () => (\n <IntlProvider locale=\"en-US\">\n <DatePicker\n isDisabled\n error=\"Error Message\"\n placeholder=\"Date\"\n name=\"datepicker\"\n label=\"Disabled Date Picker\"\n />\n </IntlProvider>\n);\n\nexport const customErrorTooltipPosition = () => (\n <IntlProvider locale=\"en-US\">\n <DatePicker\n error=\"Error Message\"\n errorTooltipPosition={TooltipPosition.MIDDLE_RIGHT}\n placeholder=\"Date\"\n name=\"datepicker\"\n label=\"Disabled Date Picker\"\n />\n </IntlProvider>\n);\n\nexport const withRange = () => {\n const MAX_TIME = new Date('3000-01-01T00:00:00.000Z');\n const MIN_TIME = new Date(0);\n const TODAY = new Date();\n const componentStore: Store<{ date: Date; fromDate: Date | null; toDate: Date | null }> = new Store({\n date: new Date(),\n fromDate: null,\n toDate: null,\n });\n return (\n <State store={componentStore}>\n {state => (\n <IntlProvider locale=\"en-US\">\n <div>\n <DatePicker\n className=\"date-picker-example\"\n displayFormat={{\n day: 'numeric',\n month: 'long',\n year: 'numeric',\n }}\n hideOptionalLabel\n label=\"From Date\"\n maxDate={state.toDate || MAX_TIME}\n name=\"datepicker-from\"\n onChange={(date: Date) => {\n componentStore.set({ fromDate: date });\n }}\n placeholder=\"Choose a Date\"\n value={state.fromDate}\n />\n <DatePicker\n className=\"date-picker-example\"\n displayFormat={{\n day: 'numeric',\n month: 'long',\n year: 'numeric',\n }}\n hideOptionalLabel\n label=\"To Date\"\n minDate={state.fromDate || MIN_TIME}\n maxDate={TODAY}\n name=\"datepicker-to\"\n onChange={(date: Date) => {\n componentStore.set({ toDate: date });\n }}\n placeholder=\"Choose a Date\"\n value={state.toDate}\n />\n </div>\n </IntlProvider>\n )}\n </State>\n );\n};\n\nexport const withRangeAndKeyboardInput = () => {\n const MAX_TIME = new Date('3000-01-01T00:00:00.000Z');\n const MIN_TIME = new Date(0);\n const TODAY = new Date();\n const componentStore: Store<{ date: Date; fromDate: Date | null; toDate: Date | null }> = new Store({\n date: new Date(),\n fromDate: null,\n toDate: null,\n });\n return (\n <State store={componentStore}>\n {state => (\n <IntlProvider locale=\"en-US\">\n <div>\n <DatePicker\n className=\"date-picker-example\"\n displayFormat={{\n day: 'numeric',\n month: 'long',\n year: 'numeric',\n }}\n hideOptionalLabel\n isKeyboardInputAllowed\n label=\"From Date\"\n maxDate={state.toDate || MAX_TIME}\n name=\"datepicker-from\"\n onChange={(date: Date) => {\n componentStore.set({ fromDate: date });\n }}\n placeholder=\"Choose a Date\"\n value={state.fromDate}\n />\n <DatePicker\n className=\"date-picker-example\"\n displayFormat={{\n day: 'numeric',\n month: 'long',\n year: 'numeric',\n }}\n hideOptionalLabel\n isKeyboardInputAllowed\n label=\"To Date\"\n minDate={state.fromDate || MIN_TIME}\n maxDate={TODAY}\n name=\"datepicker-to\"\n onChange={(date: Date) => {\n componentStore.set({ toDate: date });\n }}\n placeholder=\"Choose a Date\"\n value={state.toDate}\n />\n </div>\n </IntlProvider>\n )}\n </State>\n );\n};\n\nexport default {\n title: 'Components|DatePicker',\n component: DatePicker,\n parameters: {\n notes,\n },\n};\n"],"file":"DatePicker.stories.js"}
1
+ {"version":3,"sources":["../../../src/components/date-picker/DatePicker.stories.tsx"],"names":["React","IntlProvider","State","Store","TooltipPosition","DatePicker","notes","bdlGray10","basic","MIN_TIME","Date","TODAY","yearRange","getFullYear","componentStore","date","fromDate","toDate","state","day","month","year","set","basicWithKeyboardInput","withDescription","manuallyEditable","manuallyEditableAndAccessible","withLimitedDateRange","maxDate","sixDays","minDate","valueOf","alwaysVisibleWithCustomInputField","customInput","display","justifyContent","margin","width","position","left","top","zIndex","background","border","borderRadius","padding","height","outline","textAlign","toDateString","disabledWithErrorMessage","customErrorTooltipPosition","MIDDLE_RIGHT","withRange","MAX_TIME","withRangeAndKeyboardInput","title","component","parameters"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { IntlProvider } from 'react-intl';\nimport { State, Store } from '@sambego/storybook-state';\n\nimport { TooltipPosition } from '../tooltip';\nimport DatePicker from './DatePicker';\nimport notes from './DatePicker.stories.md';\n\nimport { bdlGray10 } from '../../styles/variables';\n\nexport const basic = () => {\n const MIN_TIME = new Date(0);\n const TODAY = new Date('July 18, 2018');\n const yearRange = [MIN_TIME.getFullYear(), TODAY.getFullYear()];\n const componentStore = new Store({\n date: new Date('July 9, 2018'),\n fromDate: null,\n toDate: null,\n });\n return (\n <State store={componentStore}>\n {state => (\n <IntlProvider locale=\"en-US\">\n <DatePicker\n className=\"date-picker-example\"\n displayFormat={{\n day: 'numeric',\n month: 'long',\n year: 'numeric',\n }}\n label=\"Date\"\n name=\"datepicker\"\n onChange={(date: Date) => {\n componentStore.set({ date });\n }}\n placeholder=\"Date\"\n value={state.date}\n yearRange={yearRange}\n />\n </IntlProvider>\n )}\n </State>\n );\n};\n\nexport const basicWithKeyboardInput = () => {\n const MIN_TIME = new Date(0);\n const TODAY = new Date('July 18, 2018');\n const yearRange = [MIN_TIME.getFullYear(), TODAY.getFullYear()];\n const componentStore = new Store({\n date: new Date('July 9, 2018'),\n fromDate: null,\n toDate: null,\n });\n return (\n <State store={componentStore}>\n {state => (\n <IntlProvider locale=\"en-US\">\n <DatePicker\n className=\"date-picker-example\"\n displayFormat={{\n day: 'numeric',\n month: 'long',\n year: 'numeric',\n }}\n isKeyboardInputAllowed\n label=\"Date\"\n name=\"datepicker\"\n onChange={(date: Date) => {\n componentStore.set({ date });\n }}\n placeholder=\"Date\"\n value={state.date}\n yearRange={yearRange}\n />\n </IntlProvider>\n )}\n </State>\n );\n};\n\nexport const withDescription = () => (\n <IntlProvider locale=\"en-US\">\n <DatePicker placeholder=\"Date\" description=\"Date of your birth\" label=\"Date Picker\" />\n </IntlProvider>\n);\n\nexport const manuallyEditable = () => (\n <IntlProvider locale=\"en-US\">\n <DatePicker isTextInputAllowed placeholder=\"Date\" label=\"Date Picker\" value={new Date('September 27, 2019')} />\n </IntlProvider>\n);\n\nexport const manuallyEditableAndAccessible = () => (\n <IntlProvider locale=\"en-US\">\n <DatePicker isAccessible placeholder=\"Date\" label=\"Date Picker\" value={new Date('August 10, 2021')} />\n </IntlProvider>\n);\n\nexport const withLimitedDateRange = () => {\n const maxDate = new Date('February 25, 2021');\n const sixDays = 1000 * 60 * 60 * 24 * 6;\n const minDate = new Date(maxDate.valueOf() - sixDays);\n const componentStore = new Store({\n date: maxDate,\n fromDate: null,\n toDate: null,\n });\n return (\n <State store={componentStore}>\n {state => (\n <IntlProvider locale=\"en-US\">\n <DatePicker\n isTextInputAllowed\n placeholder=\"Date\"\n label=\"Date Picker\"\n minDate={minDate}\n maxDate={maxDate}\n value={state.date}\n />\n </IntlProvider>\n )}\n </State>\n );\n};\n\nexport const alwaysVisibleWithCustomInputField = () => {\n const componentStore = new Store({\n date: new Date('February 26, 2021'),\n fromDate: null,\n toDate: null,\n });\n\n return (\n <State store={componentStore}>\n {state => {\n const customInput = (\n <input\n style={{\n display: 'none',\n }}\n />\n );\n\n return (\n <IntlProvider locale=\"en-US\">\n <div\n style={{\n display: 'flex',\n justifyContent: 'center',\n }}\n >\n <DatePicker\n className=\"date-picker-example\"\n customInput={customInput}\n displayFormat={{\n day: 'numeric',\n month: 'short',\n year: 'numeric',\n }}\n hideLabel\n isAlwaysVisible\n isClearable={false}\n label=\"Date\"\n name=\"datepicker\"\n onChange={(date: Date) => {\n componentStore.set({ date });\n }}\n placeholder=\"Date\"\n value={state.date}\n />\n <div\n style={{\n margin: '20px 30px',\n width: '400px',\n }}\n >\n <p>\n In this example, the DatePicker is bound to a custom hidden input field. The right\n panel retains the same state as the DatePicker, but is not contained within the\n DatePicker component.\n </p>\n <div\n style={{\n position: 'relative',\n }}\n >\n <label\n htmlFor=\"date-picker-custom-input\"\n style={{\n position: 'absolute',\n left: '10px',\n top: '6px',\n zIndex: 100,\n }}\n >\n Start Date\n </label>\n <input\n disabled\n name=\"date-picker-custom-input\"\n style={{\n background: bdlGray10,\n border: 0,\n borderRadius: '4px',\n padding: '.5em .8em',\n width: '19em',\n height: '2.5em',\n top: 0,\n outline: 'none',\n textAlign: 'right',\n }}\n value={state.date.toDateString()}\n />\n </div>\n </div>\n </div>\n </IntlProvider>\n );\n }}\n </State>\n );\n};\n\nexport const disabledWithErrorMessage = () => (\n <IntlProvider locale=\"en-US\">\n <DatePicker\n isDisabled\n error=\"Error Message\"\n placeholder=\"Date\"\n name=\"datepicker\"\n label=\"Disabled Date Picker\"\n />\n </IntlProvider>\n);\n\nexport const customErrorTooltipPosition = () => (\n <IntlProvider locale=\"en-US\">\n <DatePicker\n error=\"Error Message\"\n errorTooltipPosition={TooltipPosition.MIDDLE_RIGHT}\n placeholder=\"Date\"\n name=\"datepicker\"\n label=\"Disabled Date Picker\"\n />\n </IntlProvider>\n);\n\nexport const withRange = () => {\n const MAX_TIME = new Date('3000-01-01T00:00:00.000Z');\n const MIN_TIME = new Date(0);\n const TODAY = new Date();\n const componentStore: Store<{ date: Date; fromDate: Date | null; toDate: Date | null }> = new Store({\n date: new Date(),\n fromDate: null,\n toDate: null,\n });\n return (\n <State store={componentStore}>\n {state => (\n <IntlProvider locale=\"en-US\">\n <div>\n <DatePicker\n className=\"date-picker-example\"\n displayFormat={{\n day: 'numeric',\n month: 'long',\n year: 'numeric',\n }}\n hideOptionalLabel\n label=\"From Date\"\n maxDate={state.toDate || MAX_TIME}\n name=\"datepicker-from\"\n onChange={(date: Date) => {\n componentStore.set({ fromDate: date });\n }}\n placeholder=\"Choose a Date\"\n value={state.fromDate}\n />\n <DatePicker\n className=\"date-picker-example\"\n displayFormat={{\n day: 'numeric',\n month: 'long',\n year: 'numeric',\n }}\n hideOptionalLabel\n label=\"To Date\"\n minDate={state.fromDate || MIN_TIME}\n maxDate={TODAY}\n name=\"datepicker-to\"\n onChange={(date: Date) => {\n componentStore.set({ toDate: date });\n }}\n placeholder=\"Choose a Date\"\n value={state.toDate}\n />\n </div>\n </IntlProvider>\n )}\n </State>\n );\n};\n\nexport const withRangeAndKeyboardInput = () => {\n const MAX_TIME = new Date('3000-01-01T00:00:00.000Z');\n const MIN_TIME = new Date(0);\n const TODAY = new Date();\n const componentStore: Store<{ date: Date; fromDate: Date | null; toDate: Date | null }> = new Store({\n date: new Date(),\n fromDate: null,\n toDate: null,\n });\n return (\n <State store={componentStore}>\n {state => (\n <IntlProvider locale=\"en-US\">\n <div>\n <DatePicker\n className=\"date-picker-example\"\n displayFormat={{\n day: 'numeric',\n month: 'long',\n year: 'numeric',\n }}\n hideOptionalLabel\n isKeyboardInputAllowed\n label=\"From Date\"\n maxDate={state.toDate || MAX_TIME}\n name=\"datepicker-from\"\n onChange={(date: Date) => {\n componentStore.set({ fromDate: date });\n }}\n placeholder=\"Choose a Date\"\n value={state.fromDate}\n />\n <DatePicker\n className=\"date-picker-example\"\n displayFormat={{\n day: 'numeric',\n month: 'long',\n year: 'numeric',\n }}\n hideOptionalLabel\n isKeyboardInputAllowed\n label=\"To Date\"\n minDate={state.fromDate || MIN_TIME}\n maxDate={TODAY}\n name=\"datepicker-to\"\n onChange={(date: Date) => {\n componentStore.set({ toDate: date });\n }}\n placeholder=\"Choose a Date\"\n value={state.toDate}\n />\n </div>\n </IntlProvider>\n )}\n </State>\n );\n};\n\nexport default {\n title: 'Components|DatePicker',\n component: DatePicker,\n parameters: {\n notes,\n },\n};\n"],"file":"DatePicker.stories.js"}
@@ -8,7 +8,6 @@
8
8
  @include common-typography;
9
9
  @include box-sizing;
10
10
 
11
- position: relative;
12
11
  z-index: 9999;
13
12
  display: block;
14
13
  color: $bdl-gray-80;
@@ -23,8 +22,15 @@
23
22
 
24
23
  &.is-bound {
25
24
  position: absolute;
26
- margin-top: 5px;
27
25
  box-shadow: 0 2px 6px 0 rgba(0, 0, 0, .1);
26
+
27
+ &.bottom-aligned {
28
+ margin-top: 5px;
29
+ }
30
+
31
+ &.top-aligned {
32
+ margin-top: -5px;
33
+ }
28
34
  }
29
35
  }
30
36
 
@@ -21,9 +21,11 @@ function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || func
21
21
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
22
22
 
23
23
  import * as React from 'react';
24
+ import classNames from 'classnames';
24
25
  import TetherComponent from 'react-tether';
25
26
  import uniqueId from 'lodash/uniqueId';
26
27
  import { KEYS } from '../../constants';
28
+ import FlyoutContext from './FlyoutContext';
27
29
  import './Flyout.scss';
28
30
  var BOTTOM_CENTER = 'bottom-center';
29
31
  var BOTTOM_LEFT = 'bottom-left';
@@ -313,6 +315,7 @@ function (_React$Component) {
313
315
  className = _this$props6$classNam === void 0 ? '' : _this$props6$classNam,
314
316
  constrainToScrollParent = _this$props6.constrainToScrollParent,
315
317
  constrainToWindow = _this$props6.constrainToWindow,
318
+ isResponsive = _this$props6.isResponsive,
316
319
  offset = _this$props6.offset,
317
320
  openOnHover = _this$props6.openOnHover,
318
321
  position = _this$props6.position,
@@ -337,7 +340,7 @@ function (_React$Component) {
337
340
  onMouseEnter: this.handleButtonHover,
338
341
  onMouseLeave: this.handleButtonHoverLeave,
339
342
  role: 'button',
340
- tabindex: '0',
343
+ tabIndex: '0',
341
344
  'aria-haspopup': 'true',
342
345
  'aria-expanded': isVisible ? 'true' : 'false'
343
346
  };
@@ -379,7 +382,9 @@ function (_React$Component) {
379
382
  targetAttachment: tetherPosition.targetAttachment,
380
383
  enabled: isVisible,
381
384
  classes: {
382
- element: "flyout-overlay ".concat(className)
385
+ element: classNames('flyout-overlay', {
386
+ 'bdl-Flyout--responsive': isResponsive
387
+ }, className)
383
388
  },
384
389
  constraints: constraints
385
390
  };
@@ -413,7 +418,11 @@ function (_React$Component) {
413
418
  }
414
419
  }
415
420
 
416
- return React.createElement(TetherComponent, tetherProps, React.cloneElement(overlayButton, overlayButtonProps), isVisible ? React.cloneElement(overlayContent, overlayProps) : null);
421
+ return React.createElement(TetherComponent, tetherProps, React.cloneElement(overlayButton, overlayButtonProps), React.createElement(FlyoutContext.Provider, {
422
+ value: {
423
+ closeOverlay: this.closeOverlay
424
+ }
425
+ }, isVisible ? React.cloneElement(overlayContent, overlayProps) : null));
417
426
  }
418
427
  }]);
419
428
 
@@ -427,6 +436,7 @@ _defineProperty(Flyout, "defaultProps", {
427
436
  closeOnWindowBlur: false,
428
437
  constrainToScrollParent: true,
429
438
  constrainToWindow: false,
439
+ isResponsive: false,
430
440
  isVisibleByDefault: false,
431
441
  openOnHover: false,
432
442
  openOnHoverDelayTimeout: 300,
@@ -1,9 +1,12 @@
1
1
  // @flow
2
2
  import * as React from 'react';
3
+ import classNames from 'classnames';
3
4
  import TetherComponent from 'react-tether';
4
5
  import uniqueId from 'lodash/uniqueId';
5
6
  import { KEYS } from '../../constants';
6
7
 
8
+ import FlyoutContext from './FlyoutContext';
9
+
7
10
  import './Flyout.scss';
8
11
 
9
12
  const BOTTOM_CENTER = 'bottom-center';
@@ -116,6 +119,10 @@ export type FlyoutProps = {
116
119
  * Sets tether constrain to window
117
120
  */
118
121
  constrainToWindow?: boolean,
122
+ /**
123
+ * Toggles responsive behavior
124
+ */
125
+ isResponsive?: boolean,
119
126
  /**
120
127
  * Whether overlay should be visible by default
121
128
  */
@@ -175,6 +182,7 @@ class Flyout extends React.Component<Props, State> {
175
182
  closeOnWindowBlur: false,
176
183
  constrainToScrollParent: true,
177
184
  constrainToWindow: false,
185
+ isResponsive: false,
178
186
  isVisibleByDefault: false,
179
187
  openOnHover: false,
180
188
  openOnHoverDelayTimeout: 300,
@@ -365,6 +373,7 @@ class Flyout extends React.Component<Props, State> {
365
373
  className = '',
366
374
  constrainToScrollParent,
367
375
  constrainToWindow,
376
+ isResponsive,
368
377
  offset,
369
378
  openOnHover,
370
379
  position,
@@ -389,7 +398,7 @@ class Flyout extends React.Component<Props, State> {
389
398
  onMouseEnter: this.handleButtonHover,
390
399
  onMouseLeave: this.handleButtonHoverLeave,
391
400
  role: 'button',
392
- tabindex: '0',
401
+ tabIndex: '0',
393
402
  'aria-haspopup': 'true',
394
403
  'aria-expanded': isVisible ? 'true' : 'false',
395
404
  };
@@ -432,7 +441,7 @@ class Flyout extends React.Component<Props, State> {
432
441
  targetAttachment: tetherPosition.targetAttachment,
433
442
  enabled: isVisible,
434
443
  classes: {
435
- element: `flyout-overlay ${className}`,
444
+ element: classNames('flyout-overlay', { 'bdl-Flyout--responsive': isResponsive }, className),
436
445
  },
437
446
  constraints,
438
447
  };
@@ -465,7 +474,9 @@ class Flyout extends React.Component<Props, State> {
465
474
  return (
466
475
  <TetherComponent {...tetherProps}>
467
476
  {React.cloneElement(overlayButton, overlayButtonProps)}
468
- {isVisible ? React.cloneElement(overlayContent, overlayProps) : null}
477
+ <FlyoutContext.Provider value={{ closeOverlay: this.closeOverlay }}>
478
+ {isVisible ? React.cloneElement(overlayContent, overlayProps) : null}
479
+ </FlyoutContext.Provider>
469
480
  </TetherComponent>
470
481
  );
471
482
  }