box-ui-elements 19.0.0 → 20.0.0-beta.1

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 (190) hide show
  1. package/dist/explorer.js +1 -1
  2. package/dist/openwith.js +1 -1
  3. package/dist/picker.js +1 -1
  4. package/dist/preview.js +1 -1
  5. package/dist/sharing.js +1 -1
  6. package/dist/sidebar.js +1 -1
  7. package/dist/uploader.js +1 -1
  8. package/es/components/breadcrumb/Breadcrumb.js.flow +3 -2
  9. package/es/components/breadcrumb/Breadcrumb.js.map +1 -1
  10. package/es/components/date-picker/DatePicker.js.flow +3 -2
  11. package/es/components/grid-view/GridViewSlider.js.flow +3 -2
  12. package/es/components/grid-view/GridViewSlider.js.map +1 -1
  13. package/es/components/i18n/FormattedCompMessage.js +1 -0
  14. package/es/components/i18n/FormattedCompMessage.js.flow +1 -0
  15. package/es/components/i18n/FormattedCompMessage.js.map +1 -1
  16. package/es/components/i18n/Plural.js +1 -1
  17. package/es/components/i18n/Plural.js.flow +1 -1
  18. package/es/components/i18n/Plural.js.map +1 -1
  19. package/es/components/i18n/index.js +1 -1
  20. package/es/components/i18n/index.js.flow +1 -1
  21. package/es/components/i18n/index.js.map +1 -1
  22. package/es/components/sidebar-toggle-button/SidebarToggleButton.js.flow +3 -2
  23. package/es/components/sidebar-toggle-button/SidebarToggleButton.js.map +1 -1
  24. package/es/components/time/ReadableTime.js +7 -8
  25. package/es/components/time/ReadableTime.js.flow +4 -8
  26. package/es/components/time/ReadableTime.js.map +1 -1
  27. package/es/elements/common/breadcrumbs/Breadcrumbs.js.flow +3 -2
  28. package/es/elements/common/breadcrumbs/Breadcrumbs.js.map +1 -1
  29. package/es/elements/common/create-folder-dialog/CreateFolderDialog.js.flow +3 -2
  30. package/es/elements/common/create-folder-dialog/CreateFolderDialog.js.map +1 -1
  31. package/es/elements/common/date/DateField.js.flow +3 -2
  32. package/es/elements/common/date/DateField.js.map +1 -1
  33. package/es/elements/common/share-access-select/ShareAccessSelect.js.flow +3 -2
  34. package/es/elements/common/share-access-select/ShareAccessSelect.js.map +1 -1
  35. package/es/elements/common/sub-header/SubHeaderLeft.js.flow +3 -2
  36. package/es/elements/common/sub-header/SubHeaderLeft.js.map +1 -1
  37. package/es/elements/common/sub-header/ViewModeChangeButton.js.flow +3 -2
  38. package/es/elements/common/sub-header/ViewModeChangeButton.js.map +1 -1
  39. package/es/elements/common/upload-dialog/UploadDialog.js.flow +3 -2
  40. package/es/elements/common/upload-dialog/UploadDialog.js.map +1 -1
  41. package/es/elements/content-explorer/DeleteConfirmationDialog.js.flow +3 -2
  42. package/es/elements/content-explorer/DeleteConfirmationDialog.js.map +1 -1
  43. package/es/elements/content-explorer/ItemList.js.flow +3 -2
  44. package/es/elements/content-explorer/ItemList.js.map +1 -1
  45. package/es/elements/content-explorer/PreviewDialog.js.flow +3 -2
  46. package/es/elements/content-explorer/PreviewDialog.js.map +1 -1
  47. package/es/elements/content-explorer/RenameDialog.js.flow +3 -2
  48. package/es/elements/content-explorer/RenameDialog.js.map +1 -1
  49. package/es/elements/content-explorer/ShareDialog.js.flow +3 -2
  50. package/es/elements/content-explorer/ShareDialog.js.map +1 -1
  51. package/es/elements/content-preview/PreviewNavigation.js.flow +3 -2
  52. package/es/elements/content-preview/PreviewNavigation.js.map +1 -1
  53. package/es/elements/content-preview/preview-header/PreviewHeader.js.flow +3 -2
  54. package/es/elements/content-preview/preview-header/PreviewHeader.js.map +1 -1
  55. package/es/elements/content-sidebar/SidebarAccessStats.js.flow +3 -2
  56. package/es/elements/content-sidebar/SidebarAccessStats.js.map +1 -1
  57. package/es/elements/content-sidebar/SidebarFileProperties.js.flow +3 -2
  58. package/es/elements/content-sidebar/SidebarFileProperties.js.map +1 -1
  59. package/es/elements/content-sidebar/SidebarNav.js.flow +3 -2
  60. package/es/elements/content-sidebar/SidebarNav.js.map +1 -1
  61. package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplyForm.js.flow +3 -2
  62. package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplyForm.js.map +1 -1
  63. package/es/elements/content-sidebar/activity-feed/comment-form/CommentForm.js.flow +3 -2
  64. package/es/elements/content-sidebar/activity-feed/comment-form/CommentForm.js.map +1 -1
  65. package/es/elements/content-sidebar/activity-feed/task-form/TaskForm.js.flow +2 -2
  66. package/es/elements/content-sidebar/activity-feed/task-form/TaskForm.js.map +1 -1
  67. package/es/elements/content-sidebar/activity-feed/version/CollapsedVersion.js.flow +3 -2
  68. package/es/elements/content-sidebar/activity-feed/version/CollapsedVersion.js.map +1 -1
  69. package/es/elements/content-sidebar/activity-feed/version/Version.js.flow +3 -2
  70. package/es/elements/content-sidebar/activity-feed/version/Version.js.map +1 -1
  71. package/es/elements/content-uploader/ItemAction.js.flow +3 -2
  72. package/es/elements/content-uploader/ItemAction.js.map +1 -1
  73. package/es/elements/content-uploader/ItemRemove.js.flow +3 -2
  74. package/es/elements/content-uploader/ItemRemove.js.map +1 -1
  75. package/es/features/classification/security-controls/messages.js +1 -1
  76. package/es/features/classification/security-controls/messages.js.flow +1 -1
  77. package/es/features/classification/security-controls/messages.js.map +1 -1
  78. package/es/features/collaborator-avatars/CollaboratorAvatarItem.js.flow +3 -2
  79. package/es/features/collaborator-avatars/CollaboratorAvatarItem.js.map +1 -1
  80. package/es/features/collapsible-sidebar/CollapsibleSidebarLogo.js.flow +4 -2
  81. package/es/features/collapsible-sidebar/CollapsibleSidebarLogo.js.map +1 -1
  82. package/es/features/content-explorer/content-explorer-modal/ContentExplorerModal.js +5 -3
  83. package/es/features/content-explorer/content-explorer-modal/ContentExplorerModal.js.flow +3 -0
  84. package/es/features/content-explorer/content-explorer-modal/ContentExplorerModal.js.map +1 -1
  85. package/es/features/content-explorer/content-explorer-modal-container/ContentExplorerModalContainer.js +10 -4
  86. package/es/features/content-explorer/content-explorer-modal-container/ContentExplorerModalContainer.js.flow +5 -0
  87. package/es/features/content-explorer/content-explorer-modal-container/ContentExplorerModalContainer.js.map +1 -1
  88. package/es/features/content-explorer/new-folder-modal/NewFolderModal.js +9 -3
  89. package/es/features/content-explorer/new-folder-modal/NewFolderModal.js.flow +5 -0
  90. package/es/features/content-explorer/new-folder-modal/NewFolderModal.js.map +1 -1
  91. package/es/features/message-center/components/message-center-modal/MessageCenterModal.js.flow +4 -2
  92. package/es/features/message-center/components/message-center-modal/MessageCenterModal.js.map +1 -1
  93. package/es/features/presence/PresenceAvatarTooltipContent.js +8 -10
  94. package/es/features/presence/PresenceAvatarTooltipContent.js.map +1 -1
  95. package/es/features/presence/PresenceCollaborator.js +6 -1
  96. package/es/features/presence/PresenceCollaborator.js.flow +3 -3
  97. package/es/features/presence/PresenceCollaborator.js.map +1 -1
  98. package/es/features/shared-link-modal/SharedLink.js.flow +3 -2
  99. package/es/features/shared-link-modal/SharedLink.js.map +1 -1
  100. package/es/features/unified-share-modal/ContactRestrictionNotice.js.flow +3 -2
  101. package/es/features/unified-share-modal/ContactRestrictionNotice.js.map +1 -1
  102. package/es/features/virtualized-table/VirtualizedTable.js.flow +2 -2
  103. package/es/features/virtualized-table/VirtualizedTable.js.map +1 -1
  104. package/es/features/virtualized-table-renderers/lastModifiedByCellRenderer.js +6 -11
  105. package/es/features/virtualized-table-renderers/lastModifiedByCellRenderer.js.flow +3 -8
  106. package/es/features/virtualized-table-renderers/lastModifiedByCellRenderer.js.map +1 -1
  107. package/es/src/components/avatar/Avatar.d.ts +1 -3
  108. package/es/src/components/avatar/Avatar.stories.d.ts +1 -3
  109. package/es/src/components/close-button/CloseButton.d.ts +1 -3
  110. package/es/src/components/close-button/CloseButton.stories.d.ts +1 -3
  111. package/es/src/components/date-picker/DatePicker.d.ts +1 -3
  112. package/es/src/components/date-picker/DatePicker.stories.d.ts +1 -3
  113. package/es/src/components/media/Media.d.ts +1 -3
  114. package/es/src/components/media/MediaMenu.d.ts +1 -3
  115. package/es/src/components/media/stories/Media.stories.d.ts +1 -3
  116. package/es/src/components/media/stories/MediaMenu.stories.d.ts +1 -3
  117. package/es/src/components/search-form/SearchActions.d.ts +2 -2
  118. package/es/src/components/time-input/TimeInput.d.ts +1 -3
  119. package/es/src/components/time-input/TimeInput.stories.d.ts +1 -3
  120. package/es/src/components/tooltip/CloseButton.d.ts +1 -3
  121. package/es/src/elements/content-sidebar/SidebarNavSignButton.d.ts +2 -4
  122. package/es/src/elements/content-sidebar/activity-feed/annotations/AnnotationActivityLink.d.ts +1 -3
  123. package/es/src/features/content-answers/ContentAnswersModalFooter.d.ts +1 -3
  124. package/es/src/features/content-answers/ContentAnswersOpenButton.d.ts +1 -3
  125. package/es/src/features/content-insights/CompactCount.d.ts +1 -3
  126. package/es/src/features/content-insights/GraphCardPreviewsSummary.d.ts +1 -3
  127. package/es/src/features/content-insights/MetricSummary.d.ts +1 -3
  128. package/es/src/features/content-insights/TrendPill.d.ts +1 -3
  129. package/es/src/features/presence/PresenceAvatarTooltipContent.d.ts +2 -4
  130. package/es/utils/relativeTime.js +54 -0
  131. package/es/utils/relativeTime.js.flow +31 -0
  132. package/es/utils/relativeTime.js.map +1 -0
  133. package/i18n/en-US.js +1 -1
  134. package/i18n/en-US.properties +1 -1
  135. package/package.json +4 -4
  136. package/src/components/breadcrumb/Breadcrumb.js +3 -2
  137. package/src/components/date-picker/DatePicker.js.flow +3 -2
  138. package/src/components/grid-view/GridViewSlider.js +3 -2
  139. package/src/components/i18n/FormattedCompMessage.js +1 -0
  140. package/src/components/i18n/Plural.js +1 -1
  141. package/src/components/i18n/README.md +4 -0
  142. package/src/components/i18n/index.js +1 -1
  143. package/src/components/sidebar-toggle-button/SidebarToggleButton.js +3 -2
  144. package/src/components/time/ReadableTime.js +4 -8
  145. package/src/components/time/__tests__/__snapshots__/ReadableTime.test.js.snap +7 -7
  146. package/src/elements/common/breadcrumbs/Breadcrumbs.js +3 -2
  147. package/src/elements/common/create-folder-dialog/CreateFolderDialog.js +3 -2
  148. package/src/elements/common/date/DateField.js +3 -2
  149. package/src/elements/common/share-access-select/ShareAccessSelect.js +3 -2
  150. package/src/elements/common/sub-header/SubHeaderLeft.js +3 -2
  151. package/src/elements/common/sub-header/ViewModeChangeButton.js +3 -2
  152. package/src/elements/common/upload-dialog/UploadDialog.js +3 -2
  153. package/src/elements/content-explorer/DeleteConfirmationDialog.js +3 -2
  154. package/src/elements/content-explorer/ItemList.js +3 -2
  155. package/src/elements/content-explorer/PreviewDialog.js +3 -2
  156. package/src/elements/content-explorer/RenameDialog.js +3 -2
  157. package/src/elements/content-explorer/ShareDialog.js +3 -2
  158. package/src/elements/content-preview/PreviewNavigation.js +3 -2
  159. package/src/elements/content-preview/preview-header/PreviewHeader.js +3 -2
  160. package/src/elements/content-sidebar/SidebarAccessStats.js +3 -2
  161. package/src/elements/content-sidebar/SidebarFileProperties.js +3 -2
  162. package/src/elements/content-sidebar/SidebarNav.js +3 -2
  163. package/src/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplyForm.js +3 -2
  164. package/src/elements/content-sidebar/activity-feed/comment-form/CommentForm.js +3 -2
  165. package/src/elements/content-sidebar/activity-feed/task-form/TaskForm.js +2 -2
  166. package/src/elements/content-sidebar/activity-feed/version/CollapsedVersion.js +3 -2
  167. package/src/elements/content-sidebar/activity-feed/version/Version.js +3 -2
  168. package/src/elements/content-uploader/ItemAction.js +3 -2
  169. package/src/elements/content-uploader/ItemRemove.js +3 -2
  170. package/src/features/classification/security-controls/__tests__/__snapshots__/SecurityControlsModal.test.js.snap +1 -1
  171. package/src/features/classification/security-controls/messages.js +1 -1
  172. package/src/features/collaborator-avatars/CollaboratorAvatarItem.js +3 -2
  173. package/src/features/collapsible-sidebar/CollapsibleSidebarLogo.js +4 -2
  174. package/src/features/content-explorer/content-explorer-modal/ContentExplorerModal.js +3 -0
  175. package/src/features/content-explorer/content-explorer-modal/__tests__/__snapshots__/ContentExplorerModal.test.js.snap +1 -0
  176. package/src/features/content-explorer/content-explorer-modal-container/ContentExplorerModalContainer.js +5 -0
  177. package/src/features/content-explorer/content-explorer-modal-container/__tests__/ContentExplorerModalContainer.test.js +16 -2
  178. package/src/features/content-explorer/new-folder-modal/NewFolderModal.js +5 -0
  179. package/src/features/message-center/components/message-center-modal/MessageCenterModal.js +4 -2
  180. package/src/features/presence/PresenceAvatarTooltipContent.tsx +4 -8
  181. package/src/features/presence/PresenceCollaborator.js +3 -3
  182. package/src/features/presence/__tests__/PresenceAvatarTooltipContent.test.tsx +2 -2
  183. package/src/features/shared-link-modal/SharedLink.js +3 -2
  184. package/src/features/unified-share-modal/ContactRestrictionNotice.js +3 -2
  185. package/src/features/virtualized-table/VirtualizedTable.js +2 -2
  186. package/src/features/virtualized-table-renderers/__tests__/__snapshots__/lastModifiedByCellRenderer.test.js.snap +1 -1
  187. package/src/features/virtualized-table-renderers/__tests__/lastModifiedByCellRenderer.test.js +14 -9
  188. package/src/features/virtualized-table-renderers/lastModifiedByCellRenderer.js +3 -8
  189. package/src/utils/__tests__/relativeTime.test.js +45 -0
  190. package/src/utils/relativeTime.js +31 -0
@@ -1,7 +1,7 @@
1
1
  // @flow
2
2
  import * as React from 'react';
3
3
  import { injectIntl } from 'react-intl';
4
- import type { InjectIntlProvidedProps } from 'react-intl';
4
+ import type { IntlShape } from 'react-intl';
5
5
  import classNames from 'classnames';
6
6
 
7
7
  import { MenuLinkItem } from '../menu';
@@ -18,6 +18,7 @@ export type BreadcrumbProps = {
18
18
  className?: string,
19
19
  /** Reverse default overflow breadcrumb ordering to highest to lowest depth */
20
20
  hasReverseOverflowOrder?: boolean,
21
+ intl: IntlShape,
21
22
  /** Show number of breadcrumb items before overflow. Default is 1 */
22
23
  numItemsBeforeOverflow?: number,
23
24
  /** Element to override default overflow menu button */
@@ -26,7 +27,7 @@ export type BreadcrumbProps = {
26
27
  threshold?: number,
27
28
  };
28
29
 
29
- type Props = BreadcrumbProps & InjectIntlProvidedProps;
30
+ type Props = BreadcrumbProps;
30
31
 
31
32
  const Breadcrumb = ({
32
33
  children,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/breadcrumb/Breadcrumb.js"],"names":["React","injectIntl","classNames","MenuLinkItem","EllipsisCrumb","Crumb","messages","Breadcrumb","children","className","hasReverseOverflowOrder","intl","numItemsBeforeOverflow","overflowMenuButton","threshold","breadcrumbs","Children","toArray","constructChildren","overflowItems","slice","length","dotDotDotItems","reverse","menuCrumbsItems","map","crumb","index","renderBreadcrumbs","newChildren","hasEllipsis","item","i","isLastCrumb","formatMessage","breadcrumbLabel","BreadcrumbBase"],"mappings":"AACA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,UAAT,QAA2B,YAA3B;AAEA,OAAOC,UAAP,MAAuB,YAAvB;AAEA,SAASC,YAAT,QAA6B,SAA7B;AACA,OAAOC,aAAP,MAA0B,iBAA1B;AACA,OAAOC,KAAP,MAAkB,SAAlB;AACA,OAAOC,QAAP,MAAqB,YAArB;AAEA,OAAO,mBAAP;;AAmBA,MAAMC,UAAU,GAAG,UAQN;AAAA,MARO;AAChBC,IAAAA,QADgB;AAEhBC,IAAAA,SAAS,GAAG,EAFI;AAGhBC,IAAAA,uBAAuB,GAAG,KAHV;AAIhBC,IAAAA,IAJgB;AAKhBC,IAAAA,sBAAsB,GAAG,CALT;AAMhBC,IAAAA,kBANgB;AAOhBC,IAAAA,SAAS,GAAG;AAPI,GAQP;AACT,QAAMC,WAAW,GAAGf,KAAK,CAACgB,QAAN,CAAeC,OAAf,CAAuBT,QAAvB,CAApB;;AAEA,QAAMU,iBAAiB,GAAG,MAAM;AAC5B,UAAMC,aAAa,GAAGJ,WAAW,CAACK,KAAZ,CAAkBR,sBAAlB,EAA0CG,WAAW,CAACM,MAAZ,GAAqB,CAArB,GAAyBP,SAAnE,CAAtB;AACA,UAAMQ,cAAc,GAAGZ,uBAAuB,GAAGS,aAAH,GAAmBA,aAAa,CAACI,OAAd,EAAjE;AAEA,UAAMC,eAAe,GACjB,oBAAC,aAAD;AAAe,MAAA,UAAU,EAAEX;AAA3B,OACKS,cAAc,CAACG,GAAf,CAAmB,CAACC,KAAD,EAAQC,KAAR,KAChB,oBAAC,YAAD;AAAc,MAAA,GAAG,EAAEA;AAAnB,OAA2BD,KAA3B,CADH,CADL,CADJ;AAOA,WAAO,CAAC,GAAGX,WAAW,CAACK,KAAZ,CAAkB,CAAlB,EAAqBR,sBAArB,CAAJ,EAAkDY,eAAlD,EAAmE,GAAGT,WAAW,CAACK,KAAZ,CAAkB,IAAIN,SAAtB,CAAtE,CAAP;AACH,GAZD;;AAcA,QAAMc,iBAAiB,GAAG,MAAM;AAC5B,QAAIC,WAAW,GAAGd,WAAlB;AACA,QAAI;AAAEM,MAAAA;AAAF,QAAaN,WAAjB;AACA,QAAIe,WAAW,GAAG,KAAlB;;AAEA,QAAIT,MAAM,GAAGP,SAAb,EAAwB;AACpBe,MAAAA,WAAW,GAAGX,iBAAiB,EAA/B;AACAG,MAAAA,MAAM,GAAGQ,WAAW,CAACR,MAArB;AACAS,MAAAA,WAAW,GAAG,IAAd;AACH;;AAED,WAAO9B,KAAK,CAACgB,QAAN,CAAeS,GAAf,CAAmBI,WAAnB,EAAgC,CAACE,IAAD,EAAOC,CAAP,KAAa;AAChD,YAAMC,WAAW,GAAGZ,MAAM,KAAK,CAAX,IAAgBW,CAAC,KAAKX,MAAM,GAAG,CAAnD;AACA,aACI,oBAAC,KAAD;AACI,QAAA,SAAS,EAAEnB,UAAU,CAAC;AAAE,uBAAa4B,WAAW,IAAIE,CAAC,KAAKpB;AAApC,SAAD,CADzB;AAEI,QAAA,WAAW,EAAEqB;AAFjB,SAIKF,IAJL,CADJ;AAQH,KAVM,CAAP;AAWH,GAtBD;;AAwBA,SACI;AAAK,kBAAYpB,IAAI,CAACuB,aAAL,CAAmB5B,QAAQ,CAAC6B,eAA5B,CAAjB;AAA+D,IAAA,SAAS,EAAEjC,UAAU,CAAC,aAAD,EAAgBO,SAAhB;AAApF,KACI,gCAAKmB,iBAAiB,EAAtB,CADJ,CADJ;AAKH,CAtDD;;AAwDA,SAASrB,UAAU,IAAI6B,cAAvB;AACA,eAAenC,UAAU,CAACM,UAAD,CAAzB","sourcesContent":["// @flow\nimport * as React from 'react';\nimport { injectIntl } from 'react-intl';\nimport type { InjectIntlProvidedProps } from 'react-intl';\nimport classNames from 'classnames';\n\nimport { MenuLinkItem } from '../menu';\nimport EllipsisCrumb from './EllipsisCrumb';\nimport Crumb from './Crumb';\nimport messages from './messages';\n\nimport './Breadcrumb.scss';\n\nexport type BreadcrumbProps = {\n /** Breadcrumb contents */\n children: React.Node,\n /** Class name for Breadcrumb */\n className?: string,\n /** Reverse default overflow breadcrumb ordering to highest to lowest depth */\n hasReverseOverflowOrder?: boolean,\n /** Show number of breadcrumb items before overflow. Default is 1 */\n numItemsBeforeOverflow?: number,\n /** Element to override default overflow menu button */\n overflowMenuButton?: React.Node,\n /** Number of crumbs to show before they collapse into an ellipsis */\n threshold?: number,\n};\n\ntype Props = BreadcrumbProps & InjectIntlProvidedProps;\n\nconst Breadcrumb = ({\n children,\n className = '',\n hasReverseOverflowOrder = false,\n intl,\n numItemsBeforeOverflow = 1,\n overflowMenuButton,\n threshold = 4,\n}: Props) => {\n const breadcrumbs = React.Children.toArray(children);\n\n const constructChildren = () => {\n const overflowItems = breadcrumbs.slice(numItemsBeforeOverflow, breadcrumbs.length + 1 - threshold);\n const dotDotDotItems = hasReverseOverflowOrder ? overflowItems : overflowItems.reverse();\n\n const menuCrumbsItems = (\n <EllipsisCrumb menuButton={overflowMenuButton}>\n {dotDotDotItems.map((crumb, index) => (\n <MenuLinkItem key={index}>{crumb}</MenuLinkItem>\n ))}\n </EllipsisCrumb>\n );\n return [...breadcrumbs.slice(0, numItemsBeforeOverflow), menuCrumbsItems, ...breadcrumbs.slice(1 - threshold)];\n };\n\n const renderBreadcrumbs = () => {\n let newChildren = breadcrumbs;\n let { length } = breadcrumbs;\n let hasEllipsis = false;\n\n if (length > threshold) {\n newChildren = constructChildren();\n length = newChildren.length;\n hasEllipsis = true;\n }\n\n return React.Children.map(newChildren, (item, i) => {\n const isLastCrumb = length === 0 || i === length - 1;\n return (\n <Crumb\n className={classNames({ 'no-shrink': hasEllipsis && i === numItemsBeforeOverflow })}\n isLastCrumb={isLastCrumb}\n >\n {item}\n </Crumb>\n );\n });\n };\n\n return (\n <nav aria-label={intl.formatMessage(messages.breadcrumbLabel)} className={classNames('breadcrumbs', className)}>\n <ol>{renderBreadcrumbs()}</ol>\n </nav>\n );\n};\n\nexport { Breadcrumb as BreadcrumbBase };\nexport default injectIntl(Breadcrumb);\n"],"file":"Breadcrumb.js"}
1
+ {"version":3,"sources":["../../../src/components/breadcrumb/Breadcrumb.js"],"names":["React","injectIntl","classNames","MenuLinkItem","EllipsisCrumb","Crumb","messages","Breadcrumb","children","className","hasReverseOverflowOrder","intl","numItemsBeforeOverflow","overflowMenuButton","threshold","breadcrumbs","Children","toArray","constructChildren","overflowItems","slice","length","dotDotDotItems","reverse","menuCrumbsItems","map","crumb","index","renderBreadcrumbs","newChildren","hasEllipsis","item","i","isLastCrumb","formatMessage","breadcrumbLabel","BreadcrumbBase"],"mappings":"AACA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,UAAT,QAA2B,YAA3B;AAEA,OAAOC,UAAP,MAAuB,YAAvB;AAEA,SAASC,YAAT,QAA6B,SAA7B;AACA,OAAOC,aAAP,MAA0B,iBAA1B;AACA,OAAOC,KAAP,MAAkB,SAAlB;AACA,OAAOC,QAAP,MAAqB,YAArB;AAEA,OAAO,mBAAP;;AAoBA,MAAMC,UAAU,GAAG,UAQN;AAAA,MARO;AAChBC,IAAAA,QADgB;AAEhBC,IAAAA,SAAS,GAAG,EAFI;AAGhBC,IAAAA,uBAAuB,GAAG,KAHV;AAIhBC,IAAAA,IAJgB;AAKhBC,IAAAA,sBAAsB,GAAG,CALT;AAMhBC,IAAAA,kBANgB;AAOhBC,IAAAA,SAAS,GAAG;AAPI,GAQP;AACT,QAAMC,WAAW,GAAGf,KAAK,CAACgB,QAAN,CAAeC,OAAf,CAAuBT,QAAvB,CAApB;;AAEA,QAAMU,iBAAiB,GAAG,MAAM;AAC5B,UAAMC,aAAa,GAAGJ,WAAW,CAACK,KAAZ,CAAkBR,sBAAlB,EAA0CG,WAAW,CAACM,MAAZ,GAAqB,CAArB,GAAyBP,SAAnE,CAAtB;AACA,UAAMQ,cAAc,GAAGZ,uBAAuB,GAAGS,aAAH,GAAmBA,aAAa,CAACI,OAAd,EAAjE;AAEA,UAAMC,eAAe,GACjB,oBAAC,aAAD;AAAe,MAAA,UAAU,EAAEX;AAA3B,OACKS,cAAc,CAACG,GAAf,CAAmB,CAACC,KAAD,EAAQC,KAAR,KAChB,oBAAC,YAAD;AAAc,MAAA,GAAG,EAAEA;AAAnB,OAA2BD,KAA3B,CADH,CADL,CADJ;AAOA,WAAO,CAAC,GAAGX,WAAW,CAACK,KAAZ,CAAkB,CAAlB,EAAqBR,sBAArB,CAAJ,EAAkDY,eAAlD,EAAmE,GAAGT,WAAW,CAACK,KAAZ,CAAkB,IAAIN,SAAtB,CAAtE,CAAP;AACH,GAZD;;AAcA,QAAMc,iBAAiB,GAAG,MAAM;AAC5B,QAAIC,WAAW,GAAGd,WAAlB;AACA,QAAI;AAAEM,MAAAA;AAAF,QAAaN,WAAjB;AACA,QAAIe,WAAW,GAAG,KAAlB;;AAEA,QAAIT,MAAM,GAAGP,SAAb,EAAwB;AACpBe,MAAAA,WAAW,GAAGX,iBAAiB,EAA/B;AACAG,MAAAA,MAAM,GAAGQ,WAAW,CAACR,MAArB;AACAS,MAAAA,WAAW,GAAG,IAAd;AACH;;AAED,WAAO9B,KAAK,CAACgB,QAAN,CAAeS,GAAf,CAAmBI,WAAnB,EAAgC,CAACE,IAAD,EAAOC,CAAP,KAAa;AAChD,YAAMC,WAAW,GAAGZ,MAAM,KAAK,CAAX,IAAgBW,CAAC,KAAKX,MAAM,GAAG,CAAnD;AACA,aACI,oBAAC,KAAD;AACI,QAAA,SAAS,EAAEnB,UAAU,CAAC;AAAE,uBAAa4B,WAAW,IAAIE,CAAC,KAAKpB;AAApC,SAAD,CADzB;AAEI,QAAA,WAAW,EAAEqB;AAFjB,SAIKF,IAJL,CADJ;AAQH,KAVM,CAAP;AAWH,GAtBD;;AAwBA,SACI;AAAK,kBAAYpB,IAAI,CAACuB,aAAL,CAAmB5B,QAAQ,CAAC6B,eAA5B,CAAjB;AAA+D,IAAA,SAAS,EAAEjC,UAAU,CAAC,aAAD,EAAgBO,SAAhB;AAApF,KACI,gCAAKmB,iBAAiB,EAAtB,CADJ,CADJ;AAKH,CAtDD;;AAwDA,SAASrB,UAAU,IAAI6B,cAAvB;AACA,eAAenC,UAAU,CAACM,UAAD,CAAzB","sourcesContent":["// @flow\nimport * as React from 'react';\nimport { injectIntl } from 'react-intl';\nimport type { IntlShape } from 'react-intl';\nimport classNames from 'classnames';\n\nimport { MenuLinkItem } from '../menu';\nimport EllipsisCrumb from './EllipsisCrumb';\nimport Crumb from './Crumb';\nimport messages from './messages';\n\nimport './Breadcrumb.scss';\n\nexport type BreadcrumbProps = {\n /** Breadcrumb contents */\n children: React.Node,\n /** Class name for Breadcrumb */\n className?: string,\n /** Reverse default overflow breadcrumb ordering to highest to lowest depth */\n hasReverseOverflowOrder?: boolean,\n intl: IntlShape,\n /** Show number of breadcrumb items before overflow. Default is 1 */\n numItemsBeforeOverflow?: number,\n /** Element to override default overflow menu button */\n overflowMenuButton?: React.Node,\n /** Number of crumbs to show before they collapse into an ellipsis */\n threshold?: number,\n};\n\ntype Props = BreadcrumbProps;\n\nconst Breadcrumb = ({\n children,\n className = '',\n hasReverseOverflowOrder = false,\n intl,\n numItemsBeforeOverflow = 1,\n overflowMenuButton,\n threshold = 4,\n}: Props) => {\n const breadcrumbs = React.Children.toArray(children);\n\n const constructChildren = () => {\n const overflowItems = breadcrumbs.slice(numItemsBeforeOverflow, breadcrumbs.length + 1 - threshold);\n const dotDotDotItems = hasReverseOverflowOrder ? overflowItems : overflowItems.reverse();\n\n const menuCrumbsItems = (\n <EllipsisCrumb menuButton={overflowMenuButton}>\n {dotDotDotItems.map((crumb, index) => (\n <MenuLinkItem key={index}>{crumb}</MenuLinkItem>\n ))}\n </EllipsisCrumb>\n );\n return [...breadcrumbs.slice(0, numItemsBeforeOverflow), menuCrumbsItems, ...breadcrumbs.slice(1 - threshold)];\n };\n\n const renderBreadcrumbs = () => {\n let newChildren = breadcrumbs;\n let { length } = breadcrumbs;\n let hasEllipsis = false;\n\n if (length > threshold) {\n newChildren = constructChildren();\n length = newChildren.length;\n hasEllipsis = true;\n }\n\n return React.Children.map(newChildren, (item, i) => {\n const isLastCrumb = length === 0 || i === length - 1;\n return (\n <Crumb\n className={classNames({ 'no-shrink': hasEllipsis && i === numItemsBeforeOverflow })}\n isLastCrumb={isLastCrumb}\n >\n {item}\n </Crumb>\n );\n });\n };\n\n return (\n <nav aria-label={intl.formatMessage(messages.breadcrumbLabel)} className={classNames('breadcrumbs', className)}>\n <ol>{renderBreadcrumbs()}</ol>\n </nav>\n );\n};\n\nexport { Breadcrumb as BreadcrumbBase };\nexport default injectIntl(Breadcrumb);\n"],"file":"Breadcrumb.js"}
@@ -1,7 +1,7 @@
1
1
  // @flow
2
2
  import * as React from 'react';
3
3
  import { defineMessages, injectIntl, FormattedMessage } from 'react-intl';
4
- import type { InjectIntlProvidedProps } from 'react-intl';
4
+ import type { IntlShape } from 'react-intl';
5
5
  import classNames from 'classnames';
6
6
  import Pikaday from 'pikaday';
7
7
  import range from 'lodash/range';
@@ -122,6 +122,7 @@ type Props = {
122
122
  hideOptionalLabel?: boolean,
123
123
  /** Props that will be applied on the input element */
124
124
  inputProps?: Object,
125
+ intl: IntlShape,
125
126
  /** Is input clearable */
126
127
  isClearable?: boolean,
127
128
  /** Is input disabled */
@@ -151,7 +152,7 @@ type Props = {
151
152
  /** Date to set the input */
152
153
  value?: Date,
153
154
  yearRange?: number | Array<number>,
154
- } & InjectIntlProvidedProps;
155
+ };
155
156
 
156
157
  class DatePicker extends React.Component<Props> {
157
158
  static defaultProps = {
@@ -1,7 +1,7 @@
1
1
  // @flow
2
2
  import * as React from 'react';
3
3
  import { injectIntl } from 'react-intl';
4
- import type { InjectIntlProvidedProps } from 'react-intl';
4
+ import type { IntlShape } from 'react-intl';
5
5
  import IconPlusThin from '../../icons/general/IconPlusThin';
6
6
  import IconMinusThin from '../../icons/general/IconMinusThin';
7
7
  import PlainButton from '../plain-button/PlainButton';
@@ -13,9 +13,10 @@ type Props = {
13
13
  columnCount: number,
14
14
  gridMaxColumns: number,
15
15
  gridMinColumns: number,
16
+ intl: IntlShape,
16
17
  maxColumnCount: number,
17
18
  onChange: (newSliderValue: number) => void,
18
- } & InjectIntlProvidedProps;
19
+ };
19
20
 
20
21
  const GridViewSlider = ({ columnCount, gridMaxColumns, gridMinColumns, intl, maxColumnCount, onChange }: Props) => {
21
22
  const { formatMessage } = intl;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/grid-view/GridViewSlider.js"],"names":["React","injectIntl","IconPlusThin","IconMinusThin","PlainButton","messages","bdlGray50","GridViewSlider","columnCount","gridMaxColumns","gridMinColumns","intl","maxColumnCount","onChange","formatMessage","RANGE_STEP","RANGE_MIN","RANGE_MAX","sliderValue","Math","max","gridViewDecreaseColumnSize","gridViewColumnSize","event","currentTarget","valueAsNumber","min","gridViewIncreaseColumnSize","GridViewSliderBase"],"mappings":"AACA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,UAAT,QAA2B,YAA3B;AAEA,OAAOC,YAAP,MAAyB,kCAAzB;AACA,OAAOC,aAAP,MAA0B,mCAA1B;AACA,OAAOC,WAAP,MAAwB,6BAAxB;AACA,OAAOC,QAAP,MAAqB,gCAArB;AACA,SAASC,SAAT,QAA0B,wBAA1B;AACA,OAAO,uBAAP;;AAUA,MAAMC,cAAc,GAAG,UAA4F;AAAA,MAA3F;AAAEC,IAAAA,WAAF;AAAeC,IAAAA,cAAf;AAA+BC,IAAAA,cAA/B;AAA+CC,IAAAA,IAA/C;AAAqDC,IAAAA,cAArD;AAAqEC,IAAAA,QAAQ,EAARA;AAArE,GAA2F;AAC/G,QAAM;AAAEC,IAAAA;AAAF,MAAoBH,IAA1B;AACA,QAAMI,UAAU,GAAG,CAAnB,CAF+G,CAI/G;AACA;;AACA,QAAMC,SAAS,GAAGP,cAAc,GAAGG,cAAjB,GAAkC,CAApD;AACA,QAAMK,SAAS,GAAGR,cAAc,GAAGC,cAAjB,GAAkC,CAApD;AACA,QAAMQ,WAAW,GAAGD,SAAS,GAAGT,WAAZ,GAA0B,CAA9C;AAEA,SACIE,cAAc,GAAGE,cAAjB,IACI;AAAK,IAAA,SAAS,EAAC;AAAf,KACI,oBAAC,WAAD;AACI,IAAA,SAAS,EAAC,2BADd;AAEI,IAAA,OAAO,EAAE,MAAM;AACXC,MAAAA,SAAQ,CAACM,IAAI,CAACC,GAAL,CAASJ,SAAT,EAAoBE,WAAW,GAAGH,UAAlC,CAAD,CAAR;AACH,KAJL;AAKI,IAAA,IAAI,EAAC,QALT;AAMI,kBAAYD,aAAa,CAACT,QAAQ,CAACgB,0BAAV;AAN7B,KAQI,oBAAC,aAAD;AAAe,IAAA,KAAK,EAAEf,SAAtB;AAAiC,IAAA,KAAK,EAAE,EAAxC;AAA4C,IAAA,MAAM,EAAE;AAApD,IARJ,CADJ,EAWI;AACI,kBAAYQ,aAAa,CAACT,QAAQ,CAACiB,kBAAV,CAD7B;AAEI,IAAA,SAAS,EAAC,0BAFd;AAGI,IAAA,GAAG,EAAEL,SAHT;AAII,IAAA,GAAG,EAAED,SAJT;AAKI,IAAA,QAAQ,EAAEO,KAAK,IAAI;AACfV,MAAAA,SAAQ,CAACU,KAAK,CAACC,aAAN,CAAoBC,aAArB,CAAR;AACH,KAPL;AAQI,IAAA,IAAI,EAAEV,UARV;AASI,IAAA,IAAI,EAAC,OATT;AAUI,IAAA,KAAK,EAAEG;AAVX,IAXJ,EAuBI,oBAAC,WAAD;AACI,IAAA,SAAS,EAAC,2BADd;AAEI,IAAA,OAAO,EAAE,MAAM;AACXL,MAAAA,SAAQ,CAACM,IAAI,CAACO,GAAL,CAAST,SAAT,EAAoBC,WAAW,GAAGH,UAAlC,CAAD,CAAR;AACH,KAJL;AAKI,IAAA,IAAI,EAAC,QALT;AAMI,kBAAYD,aAAa,CAACT,QAAQ,CAACsB,0BAAV;AAN7B,KAQI,oBAAC,YAAD;AAAc,IAAA,KAAK,EAAErB,SAArB;AAAgC,IAAA,KAAK,EAAE,EAAvC;AAA2C,IAAA,MAAM,EAAE;AAAnD,IARJ,CAvBJ,CAFR;AAsCH,CAhDD;;AAkDA,SAASC,cAAc,IAAIqB,kBAA3B;AACA,eAAe3B,UAAU,CAACM,cAAD,CAAzB","sourcesContent":["// @flow\nimport * as React from 'react';\nimport { injectIntl } from 'react-intl';\nimport type { InjectIntlProvidedProps } from 'react-intl';\nimport IconPlusThin from '../../icons/general/IconPlusThin';\nimport IconMinusThin from '../../icons/general/IconMinusThin';\nimport PlainButton from '../plain-button/PlainButton';\nimport messages from '../../elements/common/messages';\nimport { bdlGray50 } from '../../styles/variables';\nimport './GridViewSlider.scss';\n\ntype Props = {\n columnCount: number,\n gridMaxColumns: number,\n gridMinColumns: number,\n maxColumnCount: number,\n onChange: (newSliderValue: number) => void,\n} & InjectIntlProvidedProps;\n\nconst GridViewSlider = ({ columnCount, gridMaxColumns, gridMinColumns, intl, maxColumnCount, onChange }: Props) => {\n const { formatMessage } = intl;\n const RANGE_STEP = 1;\n\n // This math is necessary since the highest value of the slider should result in\n // the lowest number of columns\n const RANGE_MIN = gridMaxColumns - maxColumnCount + 1;\n const RANGE_MAX = gridMaxColumns - gridMinColumns + 1;\n const sliderValue = RANGE_MAX - columnCount + 1;\n\n return (\n gridMinColumns < maxColumnCount && (\n <div className=\"bdl-GridViewSlider\">\n <PlainButton\n className=\"bdl-GridViewSlider-button\"\n onClick={() => {\n onChange(Math.max(RANGE_MIN, sliderValue - RANGE_STEP));\n }}\n type=\"button\"\n aria-label={formatMessage(messages.gridViewDecreaseColumnSize)}\n >\n <IconMinusThin color={bdlGray50} width={14} height={14} />\n </PlainButton>\n <input\n aria-label={formatMessage(messages.gridViewColumnSize)}\n className=\"bdl-GridViewSlider-range\"\n max={RANGE_MAX}\n min={RANGE_MIN}\n onChange={event => {\n onChange(event.currentTarget.valueAsNumber);\n }}\n step={RANGE_STEP}\n type=\"range\"\n value={sliderValue}\n />\n <PlainButton\n className=\"bdl-GridViewSlider-button\"\n onClick={() => {\n onChange(Math.min(RANGE_MAX, sliderValue + RANGE_STEP));\n }}\n type=\"button\"\n aria-label={formatMessage(messages.gridViewIncreaseColumnSize)}\n >\n <IconPlusThin color={bdlGray50} width={14} height={14} />\n </PlainButton>\n </div>\n )\n );\n};\n\nexport { GridViewSlider as GridViewSliderBase };\nexport default injectIntl(GridViewSlider);\n"],"file":"GridViewSlider.js"}
1
+ {"version":3,"sources":["../../../src/components/grid-view/GridViewSlider.js"],"names":["React","injectIntl","IconPlusThin","IconMinusThin","PlainButton","messages","bdlGray50","GridViewSlider","columnCount","gridMaxColumns","gridMinColumns","intl","maxColumnCount","onChange","formatMessage","RANGE_STEP","RANGE_MIN","RANGE_MAX","sliderValue","Math","max","gridViewDecreaseColumnSize","gridViewColumnSize","event","currentTarget","valueAsNumber","min","gridViewIncreaseColumnSize","GridViewSliderBase"],"mappings":"AACA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,UAAT,QAA2B,YAA3B;AAEA,OAAOC,YAAP,MAAyB,kCAAzB;AACA,OAAOC,aAAP,MAA0B,mCAA1B;AACA,OAAOC,WAAP,MAAwB,6BAAxB;AACA,OAAOC,QAAP,MAAqB,gCAArB;AACA,SAASC,SAAT,QAA0B,wBAA1B;AACA,OAAO,uBAAP;;AAWA,MAAMC,cAAc,GAAG,UAA4F;AAAA,MAA3F;AAAEC,IAAAA,WAAF;AAAeC,IAAAA,cAAf;AAA+BC,IAAAA,cAA/B;AAA+CC,IAAAA,IAA/C;AAAqDC,IAAAA,cAArD;AAAqEC,IAAAA,QAAQ,EAARA;AAArE,GAA2F;AAC/G,QAAM;AAAEC,IAAAA;AAAF,MAAoBH,IAA1B;AACA,QAAMI,UAAU,GAAG,CAAnB,CAF+G,CAI/G;AACA;;AACA,QAAMC,SAAS,GAAGP,cAAc,GAAGG,cAAjB,GAAkC,CAApD;AACA,QAAMK,SAAS,GAAGR,cAAc,GAAGC,cAAjB,GAAkC,CAApD;AACA,QAAMQ,WAAW,GAAGD,SAAS,GAAGT,WAAZ,GAA0B,CAA9C;AAEA,SACIE,cAAc,GAAGE,cAAjB,IACI;AAAK,IAAA,SAAS,EAAC;AAAf,KACI,oBAAC,WAAD;AACI,IAAA,SAAS,EAAC,2BADd;AAEI,IAAA,OAAO,EAAE,MAAM;AACXC,MAAAA,SAAQ,CAACM,IAAI,CAACC,GAAL,CAASJ,SAAT,EAAoBE,WAAW,GAAGH,UAAlC,CAAD,CAAR;AACH,KAJL;AAKI,IAAA,IAAI,EAAC,QALT;AAMI,kBAAYD,aAAa,CAACT,QAAQ,CAACgB,0BAAV;AAN7B,KAQI,oBAAC,aAAD;AAAe,IAAA,KAAK,EAAEf,SAAtB;AAAiC,IAAA,KAAK,EAAE,EAAxC;AAA4C,IAAA,MAAM,EAAE;AAApD,IARJ,CADJ,EAWI;AACI,kBAAYQ,aAAa,CAACT,QAAQ,CAACiB,kBAAV,CAD7B;AAEI,IAAA,SAAS,EAAC,0BAFd;AAGI,IAAA,GAAG,EAAEL,SAHT;AAII,IAAA,GAAG,EAAED,SAJT;AAKI,IAAA,QAAQ,EAAEO,KAAK,IAAI;AACfV,MAAAA,SAAQ,CAACU,KAAK,CAACC,aAAN,CAAoBC,aAArB,CAAR;AACH,KAPL;AAQI,IAAA,IAAI,EAAEV,UARV;AASI,IAAA,IAAI,EAAC,OATT;AAUI,IAAA,KAAK,EAAEG;AAVX,IAXJ,EAuBI,oBAAC,WAAD;AACI,IAAA,SAAS,EAAC,2BADd;AAEI,IAAA,OAAO,EAAE,MAAM;AACXL,MAAAA,SAAQ,CAACM,IAAI,CAACO,GAAL,CAAST,SAAT,EAAoBC,WAAW,GAAGH,UAAlC,CAAD,CAAR;AACH,KAJL;AAKI,IAAA,IAAI,EAAC,QALT;AAMI,kBAAYD,aAAa,CAACT,QAAQ,CAACsB,0BAAV;AAN7B,KAQI,oBAAC,YAAD;AAAc,IAAA,KAAK,EAAErB,SAArB;AAAgC,IAAA,KAAK,EAAE,EAAvC;AAA2C,IAAA,MAAM,EAAE;AAAnD,IARJ,CAvBJ,CAFR;AAsCH,CAhDD;;AAkDA,SAASC,cAAc,IAAIqB,kBAA3B;AACA,eAAe3B,UAAU,CAACM,cAAD,CAAzB","sourcesContent":["// @flow\nimport * as React from 'react';\nimport { injectIntl } from 'react-intl';\nimport type { IntlShape } from 'react-intl';\nimport IconPlusThin from '../../icons/general/IconPlusThin';\nimport IconMinusThin from '../../icons/general/IconMinusThin';\nimport PlainButton from '../plain-button/PlainButton';\nimport messages from '../../elements/common/messages';\nimport { bdlGray50 } from '../../styles/variables';\nimport './GridViewSlider.scss';\n\ntype Props = {\n columnCount: number,\n gridMaxColumns: number,\n gridMinColumns: number,\n intl: IntlShape,\n maxColumnCount: number,\n onChange: (newSliderValue: number) => void,\n};\n\nconst GridViewSlider = ({ columnCount, gridMaxColumns, gridMinColumns, intl, maxColumnCount, onChange }: Props) => {\n const { formatMessage } = intl;\n const RANGE_STEP = 1;\n\n // This math is necessary since the highest value of the slider should result in\n // the lowest number of columns\n const RANGE_MIN = gridMaxColumns - maxColumnCount + 1;\n const RANGE_MAX = gridMaxColumns - gridMinColumns + 1;\n const sliderValue = RANGE_MAX - columnCount + 1;\n\n return (\n gridMinColumns < maxColumnCount && (\n <div className=\"bdl-GridViewSlider\">\n <PlainButton\n className=\"bdl-GridViewSlider-button\"\n onClick={() => {\n onChange(Math.max(RANGE_MIN, sliderValue - RANGE_STEP));\n }}\n type=\"button\"\n aria-label={formatMessage(messages.gridViewDecreaseColumnSize)}\n >\n <IconMinusThin color={bdlGray50} width={14} height={14} />\n </PlainButton>\n <input\n aria-label={formatMessage(messages.gridViewColumnSize)}\n className=\"bdl-GridViewSlider-range\"\n max={RANGE_MAX}\n min={RANGE_MIN}\n onChange={event => {\n onChange(event.currentTarget.valueAsNumber);\n }}\n step={RANGE_STEP}\n type=\"range\"\n value={sliderValue}\n />\n <PlainButton\n className=\"bdl-GridViewSlider-button\"\n onClick={() => {\n onChange(Math.min(RANGE_MAX, sliderValue + RANGE_STEP));\n }}\n type=\"button\"\n aria-label={formatMessage(messages.gridViewIncreaseColumnSize)}\n >\n <IconPlusThin color={bdlGray50} width={14} height={14} />\n </PlainButton>\n </div>\n )\n );\n};\n\nexport { GridViewSlider as GridViewSliderBase };\nexport default injectIntl(GridViewSlider);\n"],"file":"GridViewSlider.js"}
@@ -8,6 +8,7 @@ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) r
8
8
 
9
9
  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; }
10
10
 
11
+ // @deprecated, use FormattedMessage from react-intl v6 instead.
11
12
  import * as React from 'react';
12
13
  import { injectIntl } from 'react-intl';
13
14
  import isNaN from 'lodash/isNaN';
@@ -1,4 +1,5 @@
1
1
  // @flow
2
+ // @deprecated, use FormattedMessage from react-intl v6 instead.
2
3
  import * as React from 'react';
3
4
  import { injectIntl } from 'react-intl';
4
5
  import isNaN from 'lodash/isNaN';
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/i18n/FormattedCompMessage.js"],"names":["React","injectIntl","isNaN","isDevEnvironment","CATEGORY_ZERO","CATEGORY_ONE","CATEGORY_TWO","CATEGORY_FEW","CATEGORY_MANY","CATEGORY_OTHER","Composition","FormattedCompMessage","Component","constructor","props","console","warn","defaultMessage","count","children","sourceElements","composition","source","Number","composePluralString","Error","compose","state","categories","Children","forEach","child","isValidElement","type","name","childComposition","category","one","other","categoriesString","map","join","render","tagName","intl","description","id","rest","values","descriptor","translation","formatMessage","createElement","key","decompose"],"mappings":"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","sourcesContent":["// @flow\nimport * as React from 'react';\nimport { injectIntl } from 'react-intl';\nimport isNaN from 'lodash/isNaN';\n\nimport isDevEnvironment from '../../utils/env';\nimport { CATEGORY_ZERO, CATEGORY_ONE, CATEGORY_TWO, CATEGORY_FEW, CATEGORY_MANY, CATEGORY_OTHER } from './constants';\nimport Composition from './Composition';\n\ntype Props = {\n /**\n * The text to translate. This may be a string or JSX. The defaultMessage prop may be\n * given or the component may have children, but not both.\n */\n children?: React.Node,\n\n /**\n * Specify the pivot count to choose which plural form to use.\n * When specified, this FormattedCompMessage component will choose one of the\n * Plural elements in its children according to the value of this count\n * and the linguistic rules of the locale which determine which numbers\n * belong to which plural class.\n */\n count?: number,\n\n /**\n * The text to translate. This may be a string or JSX. This prop may be\n * given or the component may have children, but not both.\n */\n defaultMessage?: React.ElementType | string,\n\n /**\n * A description to send to the translators to explain the context of\n * this string.\n */\n description: string,\n\n /** The unique id of this string. */\n id: string,\n\n /**\n * The intl provider. This is injected into this component\n * via the injectIntl function from react-intl.\n */\n intl: Object,\n\n /**\n * Specify the name of the HTML tag you would like to use to wrap the\n * translations.\n */\n tagName: string,\n};\n\ntype State = {\n composition: Composition,\n source: string,\n};\n\n/**\n * Replace the text inside of this component with a translation. This\n * component is built on top of react-intl, so it works along with the\n * regular react-intl components and objects you are used to, and it gets\n * its translations from react intl as well. The FormattedCompMessage component can\n * be used wherever it is valid to put JSX text. In regular Javascript\n * code, you should continue to use the intl.formatMessage() call and\n * extract your strings into a message.js file.\n */\nclass FormattedCompMessage extends React.Component<Props, State> {\n composition: Composition;\n\n str: string;\n\n static defaultProps = {\n tagName: 'span',\n };\n\n constructor(props: Props) {\n super(props);\n\n /* eslint-disable no-console */\n console.warn(\n \"box-ui-elements: the FormattedCompMessage component is deprecated! Use react-intl's FormattedMessage instead.\",\n );\n /* eslint-enable no-console */\n\n // these parameters echo the ones in react-intl's FormattedMessage\n // component, plus a few extra\n const {\n defaultMessage, // The English string + HTML + components that you want translated\n count, // the pivot count to choose a plural form\n children, // the components within the body\n } = this.props;\n\n const sourceElements = defaultMessage || children;\n\n if (sourceElements) {\n const composition = new Composition(sourceElements);\n let source = '';\n\n if (!isNaN(Number(count))) {\n if (children) {\n source = this.composePluralString(children);\n } else if (isDevEnvironment()) {\n throw new Error('Cannot use count prop on a FormattedCompMessage component that has no children.');\n }\n } else {\n source = composition.compose();\n }\n\n this.state = {\n source,\n composition,\n };\n }\n }\n\n /**\n * Search for any Plural elements in the children, and\n * then construct the English source string in the correct\n * format for react-intl to use for pluralization\n * @param {React.Element} children the children of this node\n * @return {string} the composed plural string\n */\n composePluralString(children) {\n const categories = {};\n React.Children.forEach(children, child => {\n if (typeof child === 'object' && React.isValidElement(child) && child.type.name === 'Plural') {\n const childComposition = new Composition(child.props.children);\n categories[child.props.category] = childComposition.compose();\n }\n });\n if (!categories.one || !categories.other) {\n if (isDevEnvironment()) {\n throw new Error(\n 'Cannot use count prop on a FormattedCompMessage component without giving both a \"one\" and \"other\" Plural component in the children.',\n );\n }\n }\n // add these to the string in a particular order so that\n // we always end up with the same string regardless of\n // the order that the Plural elements were specified in\n // the source code\n const categoriesString = [\n CATEGORY_ZERO,\n CATEGORY_ONE,\n CATEGORY_TWO,\n CATEGORY_FEW,\n CATEGORY_MANY,\n CATEGORY_OTHER,\n ]\n .map(category => (categories[category] ? ` ${category} {${categories[category]}}` : ''))\n .join('');\n\n // see the intl-messageformat project for an explanation of this syntax\n return `{count, plural,${categoriesString}}`;\n }\n\n render() {\n const { count, tagName, intl, description, id, defaultMessage, ...rest } = this.props;\n const { composition, source } = this.state;\n const values = {};\n if (typeof count === 'number') {\n // make sure intl.formatMessage switches properly on the count\n values.count = count;\n }\n\n // react-intl will do the correct plurals if necessary\n const descriptor = {\n id,\n defaultMessage: source,\n description,\n };\n const translation = intl.formatMessage(descriptor, values);\n\n // always wrap the translated string in a tag to contain everything\n // and to give us a spot to record the id. The resource id is the\n // the id in mojito for the string. Having this attr has these advantages:\n // 1. When debugging i18n or translation problems, it is MUCH easier to find\n // the exact string to fix in Mojito rather than guessing. It might be useful\n // for general debugging as well to map from something you see in the UI to\n // the actual code that implements it.\n // 2. It can be used by an in-context linguistic review tool. The tool code\n // can contact mojito and retrieve the English for any translation errors that\n // the reviewer finds and submit translation tickets to Jira and/or fixed\n // translations directly back to Mojito.\n // 3. It can be used by the planned \"text experiment framework\" to identify\n // whole strings in the UI that can be A/B tested in various languages without\n // publishing new versions of the code.\n return React.createElement(\n tagName,\n {\n key: id,\n 'x-resource-id': id,\n ...rest,\n },\n composition.decompose(translation),\n );\n }\n}\n\nexport default injectIntl(FormattedCompMessage);\n"],"file":"FormattedCompMessage.js"}
1
+ {"version":3,"sources":["../../../src/components/i18n/FormattedCompMessage.js"],"names":["React","injectIntl","isNaN","isDevEnvironment","CATEGORY_ZERO","CATEGORY_ONE","CATEGORY_TWO","CATEGORY_FEW","CATEGORY_MANY","CATEGORY_OTHER","Composition","FormattedCompMessage","Component","constructor","props","console","warn","defaultMessage","count","children","sourceElements","composition","source","Number","composePluralString","Error","compose","state","categories","Children","forEach","child","isValidElement","type","name","childComposition","category","one","other","categoriesString","map","join","render","tagName","intl","description","id","rest","values","descriptor","translation","formatMessage","createElement","key","decompose"],"mappings":";;;;;;;;;;AACA;AACA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,UAAT,QAA2B,YAA3B;AACA,OAAOC,KAAP,MAAkB,cAAlB;AAEA,OAAOC,gBAAP,MAA6B,iBAA7B;AACA,SAASC,aAAT,EAAwBC,YAAxB,EAAsCC,YAAtC,EAAoDC,YAApD,EAAkEC,aAAlE,EAAiFC,cAAjF,QAAuG,aAAvG;AACA,OAAOC,WAAP,MAAwB,eAAxB;;AAmDA;;;;;;;;;AASA,MAAMC,oBAAN,SAAmCX,KAAK,CAACY,SAAzC,CAAiE;AAS7DC,EAAAA,WAAW,CAACC,KAAD,EAAe;AACtB,UAAMA,KAAN;AAEA;;AACAC,IAAAA,OAAO,CAACC,IAAR,CACI,+GADJ;AAGA;AAEA;AACA;;AACA,UAAM;AACFC,MAAAA,cADE;AACc;AAChBC,MAAAA,KAFE;AAEK;AACPC,MAAAA,QAHE,CAGQ;;AAHR,QAIF,KAAKL,KAJT;AAMA,UAAMM,cAAc,GAAGH,cAAc,IAAIE,QAAzC;;AAEA,QAAIC,cAAJ,EAAoB;AAChB,YAAMC,WAAW,GAAG,IAAIX,WAAJ,CAAgBU,cAAhB,CAApB;AACA,UAAIE,MAAM,GAAG,EAAb;;AAEA,UAAI,CAACpB,KAAK,CAACqB,MAAM,CAACL,KAAD,CAAP,CAAV,EAA2B;AACvB,YAAIC,QAAJ,EAAc;AACVG,UAAAA,MAAM,GAAG,KAAKE,mBAAL,CAAyBL,QAAzB,CAAT;AACH,SAFD,MAEO,IAAIhB,gBAAgB,EAApB,EAAwB;AAC3B,gBAAM,IAAIsB,KAAJ,CAAU,iFAAV,CAAN;AACH;AACJ,OAND,MAMO;AACHH,QAAAA,MAAM,GAAGD,WAAW,CAACK,OAAZ,EAAT;AACH;;AAED,WAAKC,KAAL,GAAa;AACTL,QAAAA,MADS;AAETD,QAAAA;AAFS,OAAb;AAIH;AACJ;AAED;;;;;;;;;AAOAG,EAAAA,mBAAmB,CAACL,QAAD,EAAW;AAC1B,UAAMS,UAAU,GAAG,EAAnB;AACA5B,IAAAA,KAAK,CAAC6B,QAAN,CAAeC,OAAf,CAAuBX,QAAvB,EAAiCY,KAAK,IAAI;AACtC,UAAI,OAAOA,KAAP,KAAiB,QAAjB,IAA6B/B,KAAK,CAACgC,cAAN,CAAqBD,KAArB,CAA7B,IAA4DA,KAAK,CAACE,IAAN,CAAWC,IAAX,KAAoB,QAApF,EAA8F;AAC1F,cAAMC,gBAAgB,GAAG,IAAIzB,WAAJ,CAAgBqB,KAAK,CAACjB,KAAN,CAAYK,QAA5B,CAAzB;AACAS,QAAAA,UAAU,CAACG,KAAK,CAACjB,KAAN,CAAYsB,QAAb,CAAV,GAAmCD,gBAAgB,CAACT,OAAjB,EAAnC;AACH;AACJ,KALD;;AAMA,QAAI,CAACE,UAAU,CAACS,GAAZ,IAAmB,CAACT,UAAU,CAACU,KAAnC,EAA0C;AACtC,UAAInC,gBAAgB,EAApB,EAAwB;AACpB,cAAM,IAAIsB,KAAJ,CACF,qIADE,CAAN;AAGH;AACJ,KAdyB,CAe1B;AACA;AACA;AACA;;;AACA,UAAMc,gBAAgB,GAAG,CACrBnC,aADqB,EAErBC,YAFqB,EAGrBC,YAHqB,EAIrBC,YAJqB,EAKrBC,aALqB,EAMrBC,cANqB,EAQpB+B,GARoB,CAQhBJ,QAAQ,IAAKR,UAAU,CAACQ,QAAD,CAAV,cAA2BA,QAA3B,eAAwCR,UAAU,CAACQ,QAAD,CAAlD,SAAkE,EAR/D,EASpBK,IAToB,CASf,EATe,CAAzB,CAnB0B,CA8B1B;;AACA,oCAAyBF,gBAAzB;AACH;;AAEDG,EAAAA,MAAM,GAAG;AACL,wBAA2E,KAAK5B,KAAhF;AAAA,UAAM;AAAEI,MAAAA,KAAF;AAASyB,MAAAA,OAAT;AAAkBC,MAAAA,IAAlB;AAAwBC,MAAAA,WAAxB;AAAqCC,MAAAA,EAArC;AAAyC7B,MAAAA;AAAzC,KAAN;AAAA,UAAkE8B,IAAlE;;AACA,UAAM;AAAE1B,MAAAA,WAAF;AAAeC,MAAAA;AAAf,QAA0B,KAAKK,KAArC;AACA,UAAMqB,MAAM,GAAG,EAAf;;AACA,QAAI,OAAO9B,KAAP,KAAiB,QAArB,EAA+B;AAC3B;AACA8B,MAAAA,MAAM,CAAC9B,KAAP,GAAeA,KAAf;AACH,KAPI,CASL;;;AACA,UAAM+B,UAAU,GAAG;AACfH,MAAAA,EADe;AAEf7B,MAAAA,cAAc,EAAEK,MAFD;AAGfuB,MAAAA;AAHe,KAAnB;AAKA,UAAMK,WAAW,GAAGN,IAAI,CAACO,aAAL,CAAmBF,UAAnB,EAA+BD,MAA/B,CAApB,CAfK,CAiBL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,WAAOhD,KAAK,CAACoD,aAAN,CACHT,OADG;AAGCU,MAAAA,GAAG,EAAEP,EAHN;AAIC,uBAAiBA;AAJlB,OAKIC,IALJ,GAOH1B,WAAW,CAACiC,SAAZ,CAAsBJ,WAAtB,CAPG,CAAP;AASH;;AAlI4D;;gBAA3DvC,oB,kBAKoB;AAClBgC,EAAAA,OAAO,EAAE;AADS,C;;AAgI1B,eAAe1C,UAAU,CAACU,oBAAD,CAAzB","sourcesContent":["// @flow\n// @deprecated, use FormattedMessage from react-intl v6 instead.\nimport * as React from 'react';\nimport { injectIntl } from 'react-intl';\nimport isNaN from 'lodash/isNaN';\n\nimport isDevEnvironment from '../../utils/env';\nimport { CATEGORY_ZERO, CATEGORY_ONE, CATEGORY_TWO, CATEGORY_FEW, CATEGORY_MANY, CATEGORY_OTHER } from './constants';\nimport Composition from './Composition';\n\ntype Props = {\n /**\n * The text to translate. This may be a string or JSX. The defaultMessage prop may be\n * given or the component may have children, but not both.\n */\n children?: React.Node,\n\n /**\n * Specify the pivot count to choose which plural form to use.\n * When specified, this FormattedCompMessage component will choose one of the\n * Plural elements in its children according to the value of this count\n * and the linguistic rules of the locale which determine which numbers\n * belong to which plural class.\n */\n count?: number,\n\n /**\n * The text to translate. This may be a string or JSX. This prop may be\n * given or the component may have children, but not both.\n */\n defaultMessage?: React.ElementType | string,\n\n /**\n * A description to send to the translators to explain the context of\n * this string.\n */\n description: string,\n\n /** The unique id of this string. */\n id: string,\n\n /**\n * The intl provider. This is injected into this component\n * via the injectIntl function from react-intl.\n */\n intl: Object,\n\n /**\n * Specify the name of the HTML tag you would like to use to wrap the\n * translations.\n */\n tagName: string,\n};\n\ntype State = {\n composition: Composition,\n source: string,\n};\n\n/**\n * Replace the text inside of this component with a translation. This\n * component is built on top of react-intl, so it works along with the\n * regular react-intl components and objects you are used to, and it gets\n * its translations from react intl as well. The FormattedCompMessage component can\n * be used wherever it is valid to put JSX text. In regular Javascript\n * code, you should continue to use the intl.formatMessage() call and\n * extract your strings into a message.js file.\n */\nclass FormattedCompMessage extends React.Component<Props, State> {\n composition: Composition;\n\n str: string;\n\n static defaultProps = {\n tagName: 'span',\n };\n\n constructor(props: Props) {\n super(props);\n\n /* eslint-disable no-console */\n console.warn(\n \"box-ui-elements: the FormattedCompMessage component is deprecated! Use react-intl's FormattedMessage instead.\",\n );\n /* eslint-enable no-console */\n\n // these parameters echo the ones in react-intl's FormattedMessage\n // component, plus a few extra\n const {\n defaultMessage, // The English string + HTML + components that you want translated\n count, // the pivot count to choose a plural form\n children, // the components within the body\n } = this.props;\n\n const sourceElements = defaultMessage || children;\n\n if (sourceElements) {\n const composition = new Composition(sourceElements);\n let source = '';\n\n if (!isNaN(Number(count))) {\n if (children) {\n source = this.composePluralString(children);\n } else if (isDevEnvironment()) {\n throw new Error('Cannot use count prop on a FormattedCompMessage component that has no children.');\n }\n } else {\n source = composition.compose();\n }\n\n this.state = {\n source,\n composition,\n };\n }\n }\n\n /**\n * Search for any Plural elements in the children, and\n * then construct the English source string in the correct\n * format for react-intl to use for pluralization\n * @param {React.Element} children the children of this node\n * @return {string} the composed plural string\n */\n composePluralString(children) {\n const categories = {};\n React.Children.forEach(children, child => {\n if (typeof child === 'object' && React.isValidElement(child) && child.type.name === 'Plural') {\n const childComposition = new Composition(child.props.children);\n categories[child.props.category] = childComposition.compose();\n }\n });\n if (!categories.one || !categories.other) {\n if (isDevEnvironment()) {\n throw new Error(\n 'Cannot use count prop on a FormattedCompMessage component without giving both a \"one\" and \"other\" Plural component in the children.',\n );\n }\n }\n // add these to the string in a particular order so that\n // we always end up with the same string regardless of\n // the order that the Plural elements were specified in\n // the source code\n const categoriesString = [\n CATEGORY_ZERO,\n CATEGORY_ONE,\n CATEGORY_TWO,\n CATEGORY_FEW,\n CATEGORY_MANY,\n CATEGORY_OTHER,\n ]\n .map(category => (categories[category] ? ` ${category} {${categories[category]}}` : ''))\n .join('');\n\n // see the intl-messageformat project for an explanation of this syntax\n return `{count, plural,${categoriesString}}`;\n }\n\n render() {\n const { count, tagName, intl, description, id, defaultMessage, ...rest } = this.props;\n const { composition, source } = this.state;\n const values = {};\n if (typeof count === 'number') {\n // make sure intl.formatMessage switches properly on the count\n values.count = count;\n }\n\n // react-intl will do the correct plurals if necessary\n const descriptor = {\n id,\n defaultMessage: source,\n description,\n };\n const translation = intl.formatMessage(descriptor, values);\n\n // always wrap the translated string in a tag to contain everything\n // and to give us a spot to record the id. The resource id is the\n // the id in mojito for the string. Having this attr has these advantages:\n // 1. When debugging i18n or translation problems, it is MUCH easier to find\n // the exact string to fix in Mojito rather than guessing. It might be useful\n // for general debugging as well to map from something you see in the UI to\n // the actual code that implements it.\n // 2. It can be used by an in-context linguistic review tool. The tool code\n // can contact mojito and retrieve the English for any translation errors that\n // the reviewer finds and submit translation tickets to Jira and/or fixed\n // translations directly back to Mojito.\n // 3. It can be used by the planned \"text experiment framework\" to identify\n // whole strings in the UI that can be A/B tested in various languages without\n // publishing new versions of the code.\n return React.createElement(\n tagName,\n {\n key: id,\n 'x-resource-id': id,\n ...rest,\n },\n composition.decompose(translation),\n );\n }\n}\n\nexport default injectIntl(FormattedCompMessage);\n"],"file":"FormattedCompMessage.js"}
@@ -1,4 +1,4 @@
1
- // @deprecated, use FormattedPlural from react-intl v3 instead
1
+ // @deprecated, use FormattedPlural from react-intl v6 instead.
2
2
  import * as React from 'react';
3
3
 
4
4
  /**
@@ -1,5 +1,5 @@
1
1
  // @flow
2
- // @deprecated, use FormattedPlural from react-intl v3 instead
2
+ // @deprecated, use FormattedPlural from react-intl v6 instead.
3
3
  import * as React from 'react';
4
4
 
5
5
  type Props = {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/i18n/Plural.js"],"names":["React","Plural","children","console","warn"],"mappings":"AACA;AACA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;;AAmCA;;;;;;;;;;;;AAYA,MAAMC,MAAM,GAAG,UAAyB;AAAA,MAAxB;AAAEC,IAAAA;AAAF,GAAwB;;AACpC;AACAC,EAAAA,OAAO,CAACC,IAAR,CAAa,gGAAb;AACA;;AAEA,SAAOF,QAAP;AACH,CAND;;AAQA,eAAeD,MAAf","sourcesContent":["// @flow\n// @deprecated, use FormattedPlural from react-intl v3 instead\nimport * as React from 'react';\n\ntype Props = {\n /** The plural category this string. (required) */\n category:\n | 'zero'\n | 'one'\n | 'two'\n | 'few'\n | 'many'\n | 'other'\n | '=0'\n | '=1'\n | '=2'\n | '=3'\n | '=4'\n | '=5'\n | '=6'\n | '=7'\n | '=8'\n | '=9'\n | '=10'\n | '=11'\n | '=12'\n | '=13'\n | '=14'\n | '=15'\n | '=16'\n | '=17'\n | '=18'\n | '=19',\n\n children: React.Node,\n};\n\n/**\n * @class Encloses a plural string for a particular plural category.\n *\n * The categories for English are \"one\" for singular and \"other\" for plural. Both are\n * required when writing plurals with the FormattedCompMessage component in source code.<p>\n *\n * This component does not add any functionality beyond its contents, and its only\n * purpose is to enclose some JSX to use for a particular plural category.\n *\n * See the [Unicode CLDR description of plural category\n * rules](http://cldr.unicode.org/index/cldr-spec/plural-rules) for more details.\n */\nconst Plural = ({ children }: Props) => {\n /* eslint-disable no-console */\n console.warn(\"box-ui-elements: the Plural component is deprecated! Use react-intl's FormattedPlural instead.\");\n /* eslint-enable no-console */\n\n return children;\n};\n\nexport default Plural;\n"],"file":"Plural.js"}
1
+ {"version":3,"sources":["../../../src/components/i18n/Plural.js"],"names":["React","Plural","children","console","warn"],"mappings":"AACA;AACA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;;AAmCA;;;;;;;;;;;;AAYA,MAAMC,MAAM,GAAG,UAAyB;AAAA,MAAxB;AAAEC,IAAAA;AAAF,GAAwB;;AACpC;AACAC,EAAAA,OAAO,CAACC,IAAR,CAAa,gGAAb;AACA;;AAEA,SAAOF,QAAP;AACH,CAND;;AAQA,eAAeD,MAAf","sourcesContent":["// @flow\n// @deprecated, use FormattedPlural from react-intl v6 instead.\nimport * as React from 'react';\n\ntype Props = {\n /** The plural category this string. (required) */\n category:\n | 'zero'\n | 'one'\n | 'two'\n | 'few'\n | 'many'\n | 'other'\n | '=0'\n | '=1'\n | '=2'\n | '=3'\n | '=4'\n | '=5'\n | '=6'\n | '=7'\n | '=8'\n | '=9'\n | '=10'\n | '=11'\n | '=12'\n | '=13'\n | '=14'\n | '=15'\n | '=16'\n | '=17'\n | '=18'\n | '=19',\n\n children: React.Node,\n};\n\n/**\n * @class Encloses a plural string for a particular plural category.\n *\n * The categories for English are \"one\" for singular and \"other\" for plural. Both are\n * required when writing plurals with the FormattedCompMessage component in source code.<p>\n *\n * This component does not add any functionality beyond its contents, and its only\n * purpose is to enclose some JSX to use for a particular plural category.\n *\n * See the [Unicode CLDR description of plural category\n * rules](http://cldr.unicode.org/index/cldr-spec/plural-rules) for more details.\n */\nconst Plural = ({ children }: Props) => {\n /* eslint-disable no-console */\n console.warn(\"box-ui-elements: the Plural component is deprecated! Use react-intl's FormattedPlural instead.\");\n /* eslint-enable no-console */\n\n return children;\n};\n\nexport default Plural;\n"],"file":"Plural.js"}
@@ -1,4 +1,4 @@
1
- // @deprecated, use FormattedPlural or FormattedMessage from react-intl v3 instead
1
+ // @deprecated, use FormattedPlural or FormattedMessage from react-intl v6 instead.
2
2
  export { default as Param } from './Param';
3
3
  export { default as Plural } from './Plural';
4
4
  export { default } from './FormattedCompMessage';
@@ -1,5 +1,5 @@
1
1
  // @flow
2
- // @deprecated, use FormattedPlural or FormattedMessage from react-intl v3 instead
2
+ // @deprecated, use FormattedPlural or FormattedMessage from react-intl v6 instead.
3
3
  export { default as Param } from './Param';
4
4
  export { default as Plural } from './Plural';
5
5
  export { default } from './FormattedCompMessage';
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/i18n/index.js"],"names":["default","Param","Plural"],"mappings":"AACA;AACA,SAASA,OAAO,IAAIC,KAApB,QAAiC,SAAjC;AACA,SAASD,OAAO,IAAIE,MAApB,QAAkC,UAAlC;AACA,SAASF,OAAT,QAAwB,wBAAxB","sourcesContent":["// @flow\n// @deprecated, use FormattedPlural or FormattedMessage from react-intl v3 instead\nexport { default as Param } from './Param';\nexport { default as Plural } from './Plural';\nexport { default } from './FormattedCompMessage';\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../../src/components/i18n/index.js"],"names":["default","Param","Plural"],"mappings":"AACA;AACA,SAASA,OAAO,IAAIC,KAApB,QAAiC,SAAjC;AACA,SAASD,OAAO,IAAIE,MAApB,QAAkC,UAAlC;AACA,SAASF,OAAT,QAAwB,wBAAxB","sourcesContent":["// @flow\n// @deprecated, use FormattedPlural or FormattedMessage from react-intl v6 instead.\nexport { default as Param } from './Param';\nexport { default as Plural } from './Plural';\nexport { default } from './FormattedCompMessage';\n"],"file":"index.js"}
@@ -2,7 +2,7 @@
2
2
  import * as React from 'react';
3
3
  import classNames from 'classnames';
4
4
  import { injectIntl } from 'react-intl';
5
- import type { InjectIntlProvidedProps } from 'react-intl';
5
+ import type { IntlShape } from 'react-intl';
6
6
 
7
7
  import IconHide from '../../icons/general/IconHide';
8
8
  import IconShow from '../../icons/general/IconShow';
@@ -19,9 +19,10 @@ const DIRECTION_RIGHT = 'right';
19
19
  type Props = {
20
20
  className?: string,
21
21
  direction?: string,
22
+ intl: IntlShape,
22
23
  isOpen: boolean,
23
24
  onClick?: Function,
24
- } & InjectIntlProvidedProps;
25
+ };
25
26
 
26
27
  const SidebarToggleButton = ({
27
28
  className = '',
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/sidebar-toggle-button/SidebarToggleButton.js"],"names":["React","classNames","injectIntl","IconHide","IconShow","PlainButton","Tooltip","messages","DIRECTION_LEFT","DIRECTION_RIGHT","SidebarToggleButton","className","direction","intl","isOpen","onClick","rest","isCollapsed","intlMessage","sidebarHide","sidebarShow","intlText","formatMessage","classes","tooltipPosition","renderButton"],"mappings":";;;;;;AACA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,OAAOC,UAAP,MAAuB,YAAvB;AACA,SAASC,UAAT,QAA2B,YAA3B;AAGA,OAAOC,QAAP,MAAqB,8BAArB;AACA,OAAOC,QAAP,MAAqB,8BAArB;AACA,OAAOC,WAAP,MAAwB,iBAAxB;AACA,OAAOC,OAAP,MAAoB,YAApB;AAEA,OAAOC,QAAP,MAAqB,gCAArB;AAEA,OAAO,4BAAP;AAEA,MAAMC,cAAc,GAAG,MAAvB;AACA,MAAMC,eAAe,GAAG,OAAxB;;AASA,MAAMC,mBAAmB,GAAG,UAOf;AAAA,MAPgB;AACzBC,IAAAA,SAAS,GAAG,EADa;AAEzBC,IAAAA,SAAS,GAAGH,eAFa;AAGzBI,IAAAA,IAHyB;AAIzBC,IAAAA,MAJyB;AAKzBC,IAAAA;AALyB,GAOhB;AAAA,MADNC,IACM;;AACT,QAAMC,WAAW,GAAG,CAACH,MAAD,GAAU,WAAV,GAAwB,EAA5C;AACA,QAAMI,WAAW,GAAGJ,MAAM,GAAGP,QAAQ,CAACY,WAAZ,GAA0BZ,QAAQ,CAACa,WAA7D;AACA,QAAMC,QAAQ,GAAGR,IAAI,CAACS,aAAL,CAAmBJ,WAAnB,CAAjB;AACA,QAAMK,OAAO,GAAGtB,UAAU,CAACU,SAAD,EAAY,yBAAZ,EAAuC;AAC7D,wBAAoBM;AADyC,GAAvC,CAA1B;AAGA,QAAMO,eAAe,GAAGZ,SAAS,KAAKJ,cAAd,GAA+B,cAA/B,GAAgD,aAAxE;;AAEA,QAAMiB,YAAY,GAAG,MAAM;AACvB,QAAIb,SAAS,KAAKJ,cAAlB,EAAkC;AAC9B,aAAOM,MAAM,GAAG,oBAAC,QAAD;AAAU,QAAA,MAAM,EAAE,EAAlB;AAAsB,QAAA,KAAK,EAAE;AAA7B,QAAH,GAAyC,oBAAC,QAAD;AAAU,QAAA,MAAM,EAAE,EAAlB;AAAsB,QAAA,KAAK,EAAE;AAA7B,QAAtD;AACH;;AACD,WAAOA,MAAM,GAAG,oBAAC,QAAD;AAAU,MAAA,MAAM,EAAE,EAAlB;AAAsB,MAAA,KAAK,EAAE;AAA7B,MAAH,GAAyC,oBAAC,QAAD;AAAU,MAAA,MAAM,EAAE,EAAlB;AAAsB,MAAA,KAAK,EAAE;AAA7B,MAAtD;AACH,GALD;;AAOA,SACI,oBAAC,OAAD;AAAS,IAAA,QAAQ,EAAEU,eAAnB;AAAoC,IAAA,IAAI,EAAEH;AAA1C,KACI,oBAAC,WAAD;AAAa,kBAAYA,QAAzB;AAAmC,IAAA,SAAS,EAAEE,OAA9C;AAAuD,IAAA,OAAO,EAAER,OAAhE;AAAyE,IAAA,IAAI,EAAC;AAA9E,KAA2FC,IAA3F,GACKS,YAAY,EADjB,CADJ,CADJ;AAOH,CA9BD;;AAgCA,eAAevB,UAAU,CAACQ,mBAAD,CAAzB","sourcesContent":["// @flow\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { injectIntl } from 'react-intl';\nimport type { InjectIntlProvidedProps } from 'react-intl';\n\nimport IconHide from '../../icons/general/IconHide';\nimport IconShow from '../../icons/general/IconShow';\nimport PlainButton from '../plain-button';\nimport Tooltip from '../tooltip';\n\nimport messages from '../../elements/common/messages';\n\nimport './SidebarToggleButton.scss';\n\nconst DIRECTION_LEFT = 'left';\nconst DIRECTION_RIGHT = 'right';\n\ntype Props = {\n className?: string,\n direction?: string,\n isOpen: boolean,\n onClick?: Function,\n} & InjectIntlProvidedProps;\n\nconst SidebarToggleButton = ({\n className = '',\n direction = DIRECTION_RIGHT,\n intl,\n isOpen,\n onClick,\n ...rest\n}: Props) => {\n const isCollapsed = !isOpen ? 'collapsed' : '';\n const intlMessage = isOpen ? messages.sidebarHide : messages.sidebarShow;\n const intlText = intl.formatMessage(intlMessage);\n const classes = classNames(className, 'bdl-SidebarToggleButton', {\n 'bdl-is-collapsed': isCollapsed,\n });\n const tooltipPosition = direction === DIRECTION_LEFT ? 'middle-right' : 'middle-left';\n\n const renderButton = () => {\n if (direction === DIRECTION_LEFT) {\n return isOpen ? <IconShow height={16} width={16} /> : <IconHide height={16} width={16} />;\n }\n return isOpen ? <IconHide height={16} width={16} /> : <IconShow height={16} width={16} />;\n };\n\n return (\n <Tooltip position={tooltipPosition} text={intlText}>\n <PlainButton aria-label={intlText} className={classes} onClick={onClick} type=\"button\" {...rest}>\n {renderButton()}\n </PlainButton>\n </Tooltip>\n );\n};\n\nexport default injectIntl(SidebarToggleButton);\n"],"file":"SidebarToggleButton.js"}
1
+ {"version":3,"sources":["../../../src/components/sidebar-toggle-button/SidebarToggleButton.js"],"names":["React","classNames","injectIntl","IconHide","IconShow","PlainButton","Tooltip","messages","DIRECTION_LEFT","DIRECTION_RIGHT","SidebarToggleButton","className","direction","intl","isOpen","onClick","rest","isCollapsed","intlMessage","sidebarHide","sidebarShow","intlText","formatMessage","classes","tooltipPosition","renderButton"],"mappings":";;;;;;AACA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,OAAOC,UAAP,MAAuB,YAAvB;AACA,SAASC,UAAT,QAA2B,YAA3B;AAGA,OAAOC,QAAP,MAAqB,8BAArB;AACA,OAAOC,QAAP,MAAqB,8BAArB;AACA,OAAOC,WAAP,MAAwB,iBAAxB;AACA,OAAOC,OAAP,MAAoB,YAApB;AAEA,OAAOC,QAAP,MAAqB,gCAArB;AAEA,OAAO,4BAAP;AAEA,MAAMC,cAAc,GAAG,MAAvB;AACA,MAAMC,eAAe,GAAG,OAAxB;;AAUA,MAAMC,mBAAmB,GAAG,UAOf;AAAA,MAPgB;AACzBC,IAAAA,SAAS,GAAG,EADa;AAEzBC,IAAAA,SAAS,GAAGH,eAFa;AAGzBI,IAAAA,IAHyB;AAIzBC,IAAAA,MAJyB;AAKzBC,IAAAA;AALyB,GAOhB;AAAA,MADNC,IACM;;AACT,QAAMC,WAAW,GAAG,CAACH,MAAD,GAAU,WAAV,GAAwB,EAA5C;AACA,QAAMI,WAAW,GAAGJ,MAAM,GAAGP,QAAQ,CAACY,WAAZ,GAA0BZ,QAAQ,CAACa,WAA7D;AACA,QAAMC,QAAQ,GAAGR,IAAI,CAACS,aAAL,CAAmBJ,WAAnB,CAAjB;AACA,QAAMK,OAAO,GAAGtB,UAAU,CAACU,SAAD,EAAY,yBAAZ,EAAuC;AAC7D,wBAAoBM;AADyC,GAAvC,CAA1B;AAGA,QAAMO,eAAe,GAAGZ,SAAS,KAAKJ,cAAd,GAA+B,cAA/B,GAAgD,aAAxE;;AAEA,QAAMiB,YAAY,GAAG,MAAM;AACvB,QAAIb,SAAS,KAAKJ,cAAlB,EAAkC;AAC9B,aAAOM,MAAM,GAAG,oBAAC,QAAD;AAAU,QAAA,MAAM,EAAE,EAAlB;AAAsB,QAAA,KAAK,EAAE;AAA7B,QAAH,GAAyC,oBAAC,QAAD;AAAU,QAAA,MAAM,EAAE,EAAlB;AAAsB,QAAA,KAAK,EAAE;AAA7B,QAAtD;AACH;;AACD,WAAOA,MAAM,GAAG,oBAAC,QAAD;AAAU,MAAA,MAAM,EAAE,EAAlB;AAAsB,MAAA,KAAK,EAAE;AAA7B,MAAH,GAAyC,oBAAC,QAAD;AAAU,MAAA,MAAM,EAAE,EAAlB;AAAsB,MAAA,KAAK,EAAE;AAA7B,MAAtD;AACH,GALD;;AAOA,SACI,oBAAC,OAAD;AAAS,IAAA,QAAQ,EAAEU,eAAnB;AAAoC,IAAA,IAAI,EAAEH;AAA1C,KACI,oBAAC,WAAD;AAAa,kBAAYA,QAAzB;AAAmC,IAAA,SAAS,EAAEE,OAA9C;AAAuD,IAAA,OAAO,EAAER,OAAhE;AAAyE,IAAA,IAAI,EAAC;AAA9E,KAA2FC,IAA3F,GACKS,YAAY,EADjB,CADJ,CADJ;AAOH,CA9BD;;AAgCA,eAAevB,UAAU,CAACQ,mBAAD,CAAzB","sourcesContent":["// @flow\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { injectIntl } from 'react-intl';\nimport type { IntlShape } from 'react-intl';\n\nimport IconHide from '../../icons/general/IconHide';\nimport IconShow from '../../icons/general/IconShow';\nimport PlainButton from '../plain-button';\nimport Tooltip from '../tooltip';\n\nimport messages from '../../elements/common/messages';\n\nimport './SidebarToggleButton.scss';\n\nconst DIRECTION_LEFT = 'left';\nconst DIRECTION_RIGHT = 'right';\n\ntype Props = {\n className?: string,\n direction?: string,\n intl: IntlShape,\n isOpen: boolean,\n onClick?: Function,\n};\n\nconst SidebarToggleButton = ({\n className = '',\n direction = DIRECTION_RIGHT,\n intl,\n isOpen,\n onClick,\n ...rest\n}: Props) => {\n const isCollapsed = !isOpen ? 'collapsed' : '';\n const intlMessage = isOpen ? messages.sidebarHide : messages.sidebarShow;\n const intlText = intl.formatMessage(intlMessage);\n const classes = classNames(className, 'bdl-SidebarToggleButton', {\n 'bdl-is-collapsed': isCollapsed,\n });\n const tooltipPosition = direction === DIRECTION_LEFT ? 'middle-right' : 'middle-left';\n\n const renderButton = () => {\n if (direction === DIRECTION_LEFT) {\n return isOpen ? <IconShow height={16} width={16} /> : <IconHide height={16} width={16} />;\n }\n return isOpen ? <IconHide height={16} width={16} /> : <IconShow height={16} width={16} />;\n };\n\n return (\n <Tooltip position={tooltipPosition} text={intlText}>\n <PlainButton aria-label={intlText} className={classes} onClick={onClick} type=\"button\" {...rest}>\n {renderButton()}\n </PlainButton>\n </Tooltip>\n );\n};\n\nexport default injectIntl(SidebarToggleButton);\n"],"file":"SidebarToggleButton.js"}
@@ -1,6 +1,7 @@
1
1
  import { injectIntl } from 'react-intl';
2
2
  import { ONE_HOUR_MS } from '../../constants';
3
- import { isToday, isYesterday, isCurrentYear } from '../../utils/datetime';
3
+ import { isCurrentYear, isToday, isYesterday } from '../../utils/datetime';
4
+ import timeFromNow from '../../utils/relativeTime';
4
5
  import messages from './messages';
5
6
  // exclude languages that do not have a grammar for uppercase (e.g. russian)
6
7
  const nonUppercaseLocales = ['ru'];
@@ -72,13 +73,11 @@ const ReadableTime = (_ref) => {
72
73
  const timeDiff = timestamp - Date.now();
73
74
 
74
75
  if (Math.abs(timeDiff) <= relativeThreshold) {
75
- if (intl.formatRelativeTime) {
76
- // react-intl v3
77
- output = intl.formatRelativeTime(timeDiff);
78
- } else {
79
- // react-intl v2
80
- output = intl.formatRelative(timestamp);
81
- }
76
+ const {
77
+ value,
78
+ unit
79
+ } = timeFromNow(timestamp);
80
+ output = intl.formatRelativeTime(value, unit);
82
81
  }
83
82
 
84
83
  return shouldUppercase ? output.toLocaleUpperCase(intl.locale) : output;
@@ -3,7 +3,8 @@
3
3
  import { injectIntl } from 'react-intl';
4
4
 
5
5
  import { ONE_HOUR_MS } from '../../constants';
6
- import { isToday, isYesterday, isCurrentYear } from '../../utils/datetime';
6
+ import { isCurrentYear, isToday, isYesterday } from '../../utils/datetime';
7
+ import timeFromNow from '../../utils/relativeTime';
7
8
 
8
9
  import messages from './messages';
9
10
 
@@ -78,13 +79,8 @@ const ReadableTime = ({
78
79
  // print the default time format
79
80
  const timeDiff = timestamp - Date.now();
80
81
  if (Math.abs(timeDiff) <= relativeThreshold) {
81
- if (intl.formatRelativeTime) {
82
- // react-intl v3
83
- output = intl.formatRelativeTime(timeDiff);
84
- } else {
85
- // react-intl v2
86
- output = intl.formatRelative(timestamp);
87
- }
82
+ const { value, unit } = timeFromNow(timestamp);
83
+ output = intl.formatRelativeTime(value, unit);
88
84
  }
89
85
 
90
86
  return shouldUppercase ? output.toLocaleUpperCase(intl.locale) : output;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/time/ReadableTime.js"],"names":["injectIntl","ONE_HOUR_MS","isToday","isYesterday","isCurrentYear","messages","nonUppercaseLocales","ReadableTime","intl","timestamp","relativeThreshold","allowFutureTimestamps","alwaysShowTime","showWeekday","uppercase","shouldUppercase","includes","locale","relativeIfNewerThanTs","Date","now","shouldShowYear","dateMessage","eventTime","date","weekday","output","eventTimeToday","eventTimeYesterday","eventTimeWeekdayLong","formatDate","eventTimeDate","eventTimeDateShort","month","day","toLocaleUpperCase","values","time","formatMessage","timeDiff","Math","abs","formatRelativeTime","formatRelative","ReadableTimeComponent"],"mappings":"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","sourcesContent":["// @flow\n\nimport { injectIntl } from 'react-intl';\n\nimport { ONE_HOUR_MS } from '../../constants';\nimport { isToday, isYesterday, isCurrentYear } from '../../utils/datetime';\n\nimport messages from './messages';\n\ntype Props = {\n /** A boolean that will cause future timestamps (usually due to incorrect computer time) to be corrected to the isToday message */\n allowFutureTimestamps?: boolean,\n /** A boolean that will include the time alongside the date, if the date is shown */\n alwaysShowTime?: boolean,\n /** intl object */\n intl: any,\n /** The number of milliseconds before now that a relative (vs. absolute) time should be displayed (Default: 1 hour) */\n relativeThreshold?: number,\n /** A boolean that will include the weekday alongside the date, if the date is shown */\n showWeekday?: boolean,\n /** The timestamp which should be used to display the date */\n timestamp: number,\n /** Whether to generate and make locale aware an uppercase version of the string */\n uppercase?: boolean,\n};\n\n// exclude languages that do not have a grammar for uppercase (e.g. russian)\nconst nonUppercaseLocales = ['ru'];\nconst ReadableTime = ({\n intl,\n timestamp,\n relativeThreshold = ONE_HOUR_MS,\n allowFutureTimestamps = true,\n alwaysShowTime = false,\n showWeekday = false,\n uppercase = false,\n}: Props): string => {\n const shouldUppercase = uppercase && !nonUppercaseLocales.includes(intl.locale);\n const relativeIfNewerThanTs = Date.now() - relativeThreshold;\n const shouldShowYear = !isCurrentYear(timestamp);\n\n if (!allowFutureTimestamps && timestamp > Date.now()) {\n // TODO: what is the reasoning behind this rule?\n timestamp = relativeIfNewerThanTs; // Default to 'Today' for timestamps that would show a future date\n }\n\n // e.g. Oct 5, 2018\n let dateMessage = messages.eventTime;\n let date = null;\n let weekday = null;\n let output;\n if (isToday(timestamp)) {\n // e.g. Today at 12:30 PM\n dateMessage = messages.eventTimeToday;\n } else if (isYesterday(timestamp)) {\n // e.g. Yesterday at 11:30 AM\n dateMessage = messages.eventTimeYesterday;\n } else if (showWeekday) {\n // e.g. Monday, Oct 5, 2018\n dateMessage = messages.eventTimeWeekdayLong;\n weekday = intl.formatDate(timestamp, { weekday: 'long' });\n } else if (shouldShowYear && alwaysShowTime) {\n // e.g. Oct 5, 2018 at 10:30 PM\n dateMessage = messages.eventTimeDate;\n } else if (!shouldShowYear && alwaysShowTime) {\n // e.g. Oct 5 at 10:30 PM\n dateMessage = messages.eventTimeDateShort;\n date = intl.formatDate(timestamp, { month: 'short', day: 'numeric' });\n } else if (!shouldShowYear && !alwaysShowTime) {\n // e.g. Oct 5\n output = intl.formatDate(timestamp, { month: 'short', day: 'numeric' });\n return shouldUppercase ? output.toLocaleUpperCase(intl.locale) : output;\n }\n const values = { time: timestamp, date, weekday };\n output = intl.formatMessage(dateMessage, values);\n\n // if the time stamp is within +/- the relative threshold for the current time,\n // print the default time format\n const timeDiff = timestamp - Date.now();\n if (Math.abs(timeDiff) <= relativeThreshold) {\n if (intl.formatRelativeTime) {\n // react-intl v3\n output = intl.formatRelativeTime(timeDiff);\n } else {\n // react-intl v2\n output = intl.formatRelative(timestamp);\n }\n }\n\n return shouldUppercase ? output.toLocaleUpperCase(intl.locale) : output;\n};\n\nexport { ReadableTime as ReadableTimeComponent };\nexport default injectIntl(ReadableTime);\n"],"file":"ReadableTime.js"}
1
+ {"version":3,"sources":["../../../src/components/time/ReadableTime.js"],"names":["injectIntl","ONE_HOUR_MS","isCurrentYear","isToday","isYesterday","timeFromNow","messages","nonUppercaseLocales","ReadableTime","intl","timestamp","relativeThreshold","allowFutureTimestamps","alwaysShowTime","showWeekday","uppercase","shouldUppercase","includes","locale","relativeIfNewerThanTs","Date","now","shouldShowYear","dateMessage","eventTime","date","weekday","output","eventTimeToday","eventTimeYesterday","eventTimeWeekdayLong","formatDate","eventTimeDate","eventTimeDateShort","month","day","toLocaleUpperCase","values","time","formatMessage","timeDiff","Math","abs","value","unit","formatRelativeTime","ReadableTimeComponent"],"mappings":"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","sourcesContent":["// @flow\n\nimport { injectIntl } from 'react-intl';\n\nimport { ONE_HOUR_MS } from '../../constants';\nimport { isCurrentYear, isToday, isYesterday } from '../../utils/datetime';\nimport timeFromNow from '../../utils/relativeTime';\n\nimport messages from './messages';\n\ntype Props = {\n /** A boolean that will cause future timestamps (usually due to incorrect computer time) to be corrected to the isToday message */\n allowFutureTimestamps?: boolean,\n /** A boolean that will include the time alongside the date, if the date is shown */\n alwaysShowTime?: boolean,\n /** intl object */\n intl: any,\n /** The number of milliseconds before now that a relative (vs. absolute) time should be displayed (Default: 1 hour) */\n relativeThreshold?: number,\n /** A boolean that will include the weekday alongside the date, if the date is shown */\n showWeekday?: boolean,\n /** The timestamp which should be used to display the date */\n timestamp: number,\n /** Whether to generate and make locale aware an uppercase version of the string */\n uppercase?: boolean,\n};\n\n// exclude languages that do not have a grammar for uppercase (e.g. russian)\nconst nonUppercaseLocales = ['ru'];\nconst ReadableTime = ({\n intl,\n timestamp,\n relativeThreshold = ONE_HOUR_MS,\n allowFutureTimestamps = true,\n alwaysShowTime = false,\n showWeekday = false,\n uppercase = false,\n}: Props): string => {\n const shouldUppercase = uppercase && !nonUppercaseLocales.includes(intl.locale);\n const relativeIfNewerThanTs = Date.now() - relativeThreshold;\n const shouldShowYear = !isCurrentYear(timestamp);\n\n if (!allowFutureTimestamps && timestamp > Date.now()) {\n // TODO: what is the reasoning behind this rule?\n timestamp = relativeIfNewerThanTs; // Default to 'Today' for timestamps that would show a future date\n }\n\n // e.g. Oct 5, 2018\n let dateMessage = messages.eventTime;\n let date = null;\n let weekday = null;\n let output;\n if (isToday(timestamp)) {\n // e.g. Today at 12:30 PM\n dateMessage = messages.eventTimeToday;\n } else if (isYesterday(timestamp)) {\n // e.g. Yesterday at 11:30 AM\n dateMessage = messages.eventTimeYesterday;\n } else if (showWeekday) {\n // e.g. Monday, Oct 5, 2018\n dateMessage = messages.eventTimeWeekdayLong;\n weekday = intl.formatDate(timestamp, { weekday: 'long' });\n } else if (shouldShowYear && alwaysShowTime) {\n // e.g. Oct 5, 2018 at 10:30 PM\n dateMessage = messages.eventTimeDate;\n } else if (!shouldShowYear && alwaysShowTime) {\n // e.g. Oct 5 at 10:30 PM\n dateMessage = messages.eventTimeDateShort;\n date = intl.formatDate(timestamp, { month: 'short', day: 'numeric' });\n } else if (!shouldShowYear && !alwaysShowTime) {\n // e.g. Oct 5\n output = intl.formatDate(timestamp, { month: 'short', day: 'numeric' });\n return shouldUppercase ? output.toLocaleUpperCase(intl.locale) : output;\n }\n const values = { time: timestamp, date, weekday };\n output = intl.formatMessage(dateMessage, values);\n\n // if the time stamp is within +/- the relative threshold for the current time,\n // print the default time format\n const timeDiff = timestamp - Date.now();\n if (Math.abs(timeDiff) <= relativeThreshold) {\n const { value, unit } = timeFromNow(timestamp);\n output = intl.formatRelativeTime(value, unit);\n }\n\n return shouldUppercase ? output.toLocaleUpperCase(intl.locale) : output;\n};\n\nexport { ReadableTime as ReadableTimeComponent };\nexport default injectIntl(ReadableTime);\n"],"file":"ReadableTime.js"}
@@ -6,7 +6,7 @@
6
6
 
7
7
  import React from 'react';
8
8
  import { injectIntl } from 'react-intl';
9
- import type { InjectIntlProvidedProps } from 'react-intl';
9
+ import type { IntlShape } from 'react-intl';
10
10
  import Breadcrumb from './Breadcrumb';
11
11
  import BreadcrumbDropdown from './BreadcrumbDropdown';
12
12
  import BreadcrumbDelimiter from './BreadcrumbDelimiter';
@@ -18,10 +18,11 @@ import './Breadcrumbs.scss';
18
18
  type Props = {
19
19
  crumbs: Crumb[],
20
20
  delimiter: Delimiter,
21
+ intl: IntlShape,
21
22
  isSmall?: boolean,
22
23
  onCrumbClick: Function,
23
24
  rootId: string,
24
- } & InjectIntlProvidedProps;
25
+ };
25
26
 
26
27
  /**
27
28
  * Filters out ancestors to root from the crumbs.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/elements/common/breadcrumbs/Breadcrumbs.js"],"names":["React","injectIntl","Breadcrumb","BreadcrumbDropdown","BreadcrumbDelimiter","DELIMITER_CARET","DEFAULT_ROOT","DELIMITER_SLASH","messages","filterCrumbs","rootId","crumbs","rootIndex","findIndex","crumb","id","slice","getBreadcrumb","isLast","onCrumbClick","delimiter","Array","isArray","condensed","name","Breadcrumbs","isSmall","intl","length","filteredCrumbs","defaultRootCrumb","find","formatMessage","rootBreadcrumb","onClick","undefined","lastBreadcrumb","secondLastBreadcrumb","moreBreadcrumbs","firstBreadcrumb","BreadcrumbsBase"],"mappings":"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","sourcesContent":["/**\n * @flow\n * @file Component that creates breadcumbs for both the header and name details\n * @author Box\n */\n\nimport React from 'react';\nimport { injectIntl } from 'react-intl';\nimport type { InjectIntlProvidedProps } from 'react-intl';\nimport Breadcrumb from './Breadcrumb';\nimport BreadcrumbDropdown from './BreadcrumbDropdown';\nimport BreadcrumbDelimiter from './BreadcrumbDelimiter';\nimport { DELIMITER_CARET, DEFAULT_ROOT, DELIMITER_SLASH } from '../../../constants';\nimport messages from '../messages';\nimport type { Delimiter, Crumb } from '../../../common/types/core';\nimport './Breadcrumbs.scss';\n\ntype Props = {\n crumbs: Crumb[],\n delimiter: Delimiter,\n isSmall?: boolean,\n onCrumbClick: Function,\n rootId: string,\n} & InjectIntlProvidedProps;\n\n/**\n * Filters out ancestors to root from the crumbs.\n * This is useful when the root is not All Files.\n *\n * @private\n * @param {string} rootId the root folder id\n * @param {Array} crumbs list of crumbs\n * @return {Array} crumbs\n */\nfunction filterCrumbs(rootId: string, crumbs: Crumb[]): Crumb[] {\n const rootIndex = crumbs.findIndex((crumb: Crumb) => crumb.id === rootId);\n return rootIndex === -1 ? crumbs : crumbs.slice(rootIndex);\n}\n\n/**\n * Creates an individual breadcrumb\n *\n * @private\n * @param {Object} crumb single crumb data\n * @param {boolean} isLast is this the last crumb\n * @return {Element}\n */\nfunction getBreadcrumb(crumbs: Crumb | Crumb[], isLast: boolean, onCrumbClick: Function, delimiter: Delimiter) {\n if (Array.isArray(crumbs)) {\n const condensed = delimiter !== DELIMITER_CARET;\n return (\n <span className=\"be-breadcrumb-more\">\n <BreadcrumbDropdown\n className={condensed ? 'be-breadcrumbs-condensed' : ''}\n crumbs={crumbs}\n onCrumbClick={onCrumbClick}\n />\n <BreadcrumbDelimiter delimiter={condensed ? DELIMITER_SLASH : DELIMITER_CARET} />\n </span>\n );\n }\n\n const { id, name } = crumbs;\n return <Breadcrumb delimiter={delimiter} isLast={isLast} name={name} onClick={() => onCrumbClick(id)} />;\n}\n\nconst Breadcrumbs = ({ rootId, crumbs, onCrumbClick, delimiter, isSmall = false, intl }: Props) => {\n if (!rootId || crumbs.length === 0) {\n return <span />;\n }\n\n // The crumbs given may have ancestors higher than the root. We need to filter them out.\n const filteredCrumbs = filterCrumbs(rootId, crumbs);\n\n // Make sure \"All Files\" crumb is localized\n const defaultRootCrumb = filteredCrumbs.find(({ id }) => id === DEFAULT_ROOT);\n if (defaultRootCrumb) {\n defaultRootCrumb.name = intl.formatMessage(messages.rootBreadcrumb);\n }\n\n const { length } = filteredCrumbs;\n\n // Always show the last/leaf breadcrumb.\n const crumb = filteredCrumbs[length - 1];\n const onClick = crumb.id ? () => onCrumbClick(crumb.id) : undefined;\n const lastBreadcrumb = <Breadcrumb isLast name={crumb.name} onClick={onClick} />;\n\n // Always show the second last/parent breadcrumb when there are at least 2 crumbs.\n const secondLastBreadcrumb =\n length > 1 ? getBreadcrumb(filteredCrumbs[length - 2], false, onCrumbClick, delimiter) : null;\n\n // Only show the more dropdown when there were at least 4 crumbs.\n const moreBreadcrumbs =\n length > 3 ? getBreadcrumb(filteredCrumbs.slice(1, length - 2), false, onCrumbClick, delimiter) : null;\n\n // Only show the root breadcrumb when there are at least 3 crumbs.\n const firstBreadcrumb = length > 2 ? getBreadcrumb(filteredCrumbs[0], false, onCrumbClick, delimiter) : null;\n\n return (\n <div className=\"be-breadcrumbs\">\n {isSmall ? null : firstBreadcrumb}\n {isSmall ? null : moreBreadcrumbs}\n {secondLastBreadcrumb}\n {lastBreadcrumb}\n </div>\n );\n};\n\nexport { Breadcrumbs as BreadcrumbsBase };\nexport default injectIntl(Breadcrumbs);\n"],"file":"Breadcrumbs.js"}
1
+ {"version":3,"sources":["../../../../src/elements/common/breadcrumbs/Breadcrumbs.js"],"names":["React","injectIntl","Breadcrumb","BreadcrumbDropdown","BreadcrumbDelimiter","DELIMITER_CARET","DEFAULT_ROOT","DELIMITER_SLASH","messages","filterCrumbs","rootId","crumbs","rootIndex","findIndex","crumb","id","slice","getBreadcrumb","isLast","onCrumbClick","delimiter","Array","isArray","condensed","name","Breadcrumbs","isSmall","intl","length","filteredCrumbs","defaultRootCrumb","find","formatMessage","rootBreadcrumb","onClick","undefined","lastBreadcrumb","secondLastBreadcrumb","moreBreadcrumbs","firstBreadcrumb","BreadcrumbsBase"],"mappings":"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","sourcesContent":["/**\n * @flow\n * @file Component that creates breadcumbs for both the header and name details\n * @author Box\n */\n\nimport React from 'react';\nimport { injectIntl } from 'react-intl';\nimport type { IntlShape } from 'react-intl';\nimport Breadcrumb from './Breadcrumb';\nimport BreadcrumbDropdown from './BreadcrumbDropdown';\nimport BreadcrumbDelimiter from './BreadcrumbDelimiter';\nimport { DELIMITER_CARET, DEFAULT_ROOT, DELIMITER_SLASH } from '../../../constants';\nimport messages from '../messages';\nimport type { Delimiter, Crumb } from '../../../common/types/core';\nimport './Breadcrumbs.scss';\n\ntype Props = {\n crumbs: Crumb[],\n delimiter: Delimiter,\n intl: IntlShape,\n isSmall?: boolean,\n onCrumbClick: Function,\n rootId: string,\n};\n\n/**\n * Filters out ancestors to root from the crumbs.\n * This is useful when the root is not All Files.\n *\n * @private\n * @param {string} rootId the root folder id\n * @param {Array} crumbs list of crumbs\n * @return {Array} crumbs\n */\nfunction filterCrumbs(rootId: string, crumbs: Crumb[]): Crumb[] {\n const rootIndex = crumbs.findIndex((crumb: Crumb) => crumb.id === rootId);\n return rootIndex === -1 ? crumbs : crumbs.slice(rootIndex);\n}\n\n/**\n * Creates an individual breadcrumb\n *\n * @private\n * @param {Object} crumb single crumb data\n * @param {boolean} isLast is this the last crumb\n * @return {Element}\n */\nfunction getBreadcrumb(crumbs: Crumb | Crumb[], isLast: boolean, onCrumbClick: Function, delimiter: Delimiter) {\n if (Array.isArray(crumbs)) {\n const condensed = delimiter !== DELIMITER_CARET;\n return (\n <span className=\"be-breadcrumb-more\">\n <BreadcrumbDropdown\n className={condensed ? 'be-breadcrumbs-condensed' : ''}\n crumbs={crumbs}\n onCrumbClick={onCrumbClick}\n />\n <BreadcrumbDelimiter delimiter={condensed ? DELIMITER_SLASH : DELIMITER_CARET} />\n </span>\n );\n }\n\n const { id, name } = crumbs;\n return <Breadcrumb delimiter={delimiter} isLast={isLast} name={name} onClick={() => onCrumbClick(id)} />;\n}\n\nconst Breadcrumbs = ({ rootId, crumbs, onCrumbClick, delimiter, isSmall = false, intl }: Props) => {\n if (!rootId || crumbs.length === 0) {\n return <span />;\n }\n\n // The crumbs given may have ancestors higher than the root. We need to filter them out.\n const filteredCrumbs = filterCrumbs(rootId, crumbs);\n\n // Make sure \"All Files\" crumb is localized\n const defaultRootCrumb = filteredCrumbs.find(({ id }) => id === DEFAULT_ROOT);\n if (defaultRootCrumb) {\n defaultRootCrumb.name = intl.formatMessage(messages.rootBreadcrumb);\n }\n\n const { length } = filteredCrumbs;\n\n // Always show the last/leaf breadcrumb.\n const crumb = filteredCrumbs[length - 1];\n const onClick = crumb.id ? () => onCrumbClick(crumb.id) : undefined;\n const lastBreadcrumb = <Breadcrumb isLast name={crumb.name} onClick={onClick} />;\n\n // Always show the second last/parent breadcrumb when there are at least 2 crumbs.\n const secondLastBreadcrumb =\n length > 1 ? getBreadcrumb(filteredCrumbs[length - 2], false, onCrumbClick, delimiter) : null;\n\n // Only show the more dropdown when there were at least 4 crumbs.\n const moreBreadcrumbs =\n length > 3 ? getBreadcrumb(filteredCrumbs.slice(1, length - 2), false, onCrumbClick, delimiter) : null;\n\n // Only show the root breadcrumb when there are at least 3 crumbs.\n const firstBreadcrumb = length > 2 ? getBreadcrumb(filteredCrumbs[0], false, onCrumbClick, delimiter) : null;\n\n return (\n <div className=\"be-breadcrumbs\">\n {isSmall ? null : firstBreadcrumb}\n {isSmall ? null : moreBreadcrumbs}\n {secondLastBreadcrumb}\n {lastBreadcrumb}\n </div>\n );\n};\n\nexport { Breadcrumbs as BreadcrumbsBase };\nexport default injectIntl(Breadcrumbs);\n"],"file":"Breadcrumbs.js"}
@@ -7,7 +7,7 @@
7
7
  import React from 'react';
8
8
  import Modal from 'react-modal';
9
9
  import { injectIntl, FormattedMessage } from 'react-intl';
10
- import type { InjectIntlProvidedProps } from 'react-intl';
10
+ import type { IntlShape } from 'react-intl';
11
11
  import PrimaryButton from '../../../components/primary-button/PrimaryButton';
12
12
  import Button from '../../../components/button/Button';
13
13
  import messages from '../messages';
@@ -22,12 +22,13 @@ import {
22
22
  type Props = {
23
23
  appElement: HTMLElement,
24
24
  errorCode: string,
25
+ intl: IntlShape,
25
26
  isLoading: boolean,
26
27
  isOpen: boolean,
27
28
  onCancel: Function,
28
29
  onCreate: Function,
29
30
  parentElement: HTMLElement,
30
- } & InjectIntlProvidedProps;
31
+ };
31
32
 
32
33
  /* eslint-disable jsx-a11y/label-has-for */
33
34
  const CreateFolderDialog = ({
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/elements/common/create-folder-dialog/CreateFolderDialog.js"],"names":["React","Modal","injectIntl","FormattedMessage","PrimaryButton","Button","messages","CLASS_MODAL_CONTENT","CLASS_MODAL_OVERLAY","CLASS_MODAL","ERROR_CODE_ITEM_NAME_TOO_LONG","ERROR_CODE_ITEM_NAME_IN_USE","CreateFolderDialog","isOpen","onCreate","onCancel","isLoading","errorCode","parentElement","appElement","intl","textInput","error","create","value","ref","input","HTMLInputElement","focus","select","onKeyDown","key","createDialogErrorInUse","createDialogErrorTooLong","createDialogErrorInvalid","formatMessage","createDialogLabel","createDialogText","cancel"],"mappings":"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","sourcesContent":["/**\n * @flow\n * @file Content Explorer Create Folder Dialog\n * @author Box\n */\n\nimport React from 'react';\nimport Modal from 'react-modal';\nimport { injectIntl, FormattedMessage } from 'react-intl';\nimport type { InjectIntlProvidedProps } from 'react-intl';\nimport PrimaryButton from '../../../components/primary-button/PrimaryButton';\nimport Button from '../../../components/button/Button';\nimport messages from '../messages';\nimport {\n CLASS_MODAL_CONTENT,\n CLASS_MODAL_OVERLAY,\n CLASS_MODAL,\n ERROR_CODE_ITEM_NAME_TOO_LONG,\n ERROR_CODE_ITEM_NAME_IN_USE,\n} from '../../../constants';\n\ntype Props = {\n appElement: HTMLElement,\n errorCode: string,\n isLoading: boolean,\n isOpen: boolean,\n onCancel: Function,\n onCreate: Function,\n parentElement: HTMLElement,\n} & InjectIntlProvidedProps;\n\n/* eslint-disable jsx-a11y/label-has-for */\nconst CreateFolderDialog = ({\n isOpen,\n onCreate,\n onCancel,\n isLoading,\n errorCode,\n parentElement,\n appElement,\n intl,\n}: Props) => {\n let textInput = null;\n let error;\n\n /**\n * Appends the extension and calls rename function\n */\n const create = () => {\n if (textInput && textInput.value) {\n onCreate(textInput.value);\n }\n };\n\n /**\n * Grabs reference to the input element\n */\n const ref = input => {\n textInput = input;\n if (textInput instanceof HTMLInputElement) {\n textInput.focus();\n textInput.select();\n }\n };\n\n /**\n * Handles enter key down\n */\n const onKeyDown = ({ key }) => {\n switch (key) {\n case 'Enter':\n create();\n break;\n default:\n break;\n }\n };\n\n switch (errorCode) {\n case ERROR_CODE_ITEM_NAME_IN_USE:\n error = messages.createDialogErrorInUse;\n break;\n case ERROR_CODE_ITEM_NAME_TOO_LONG:\n error = messages.createDialogErrorTooLong;\n break;\n default:\n error = errorCode ? messages.createDialogErrorInvalid : null;\n break;\n }\n\n return (\n <Modal\n appElement={appElement}\n className={CLASS_MODAL_CONTENT}\n contentLabel={intl.formatMessage(messages.createDialogLabel)}\n isOpen={isOpen}\n onRequestClose={onCancel}\n overlayClassName={CLASS_MODAL_OVERLAY}\n parentSelector={() => parentElement}\n portalClassName={CLASS_MODAL}\n >\n <label>\n {error ? (\n <div className=\"be-modal-error\">\n <FormattedMessage {...error} />\n </div>\n ) : null}\n <FormattedMessage tagName=\"div\" {...messages.createDialogText} />\n <input ref={ref} onKeyDown={onKeyDown} required type=\"text\" />\n </label>\n <div className=\"be-modal-btns\">\n <PrimaryButton data-testid=\"be-btn-create-folder\" isLoading={isLoading} onClick={create} type=\"button\">\n <FormattedMessage {...messages.create} />\n </PrimaryButton>\n <Button\n data-testid=\"be-btn-create-folder-cancel\"\n isDisabled={isLoading}\n onClick={onCancel}\n type=\"button\"\n >\n <FormattedMessage {...messages.cancel} />\n </Button>\n </div>\n </Modal>\n );\n};\n\nexport default injectIntl(CreateFolderDialog);\n"],"file":"CreateFolderDialog.js"}
1
+ {"version":3,"sources":["../../../../src/elements/common/create-folder-dialog/CreateFolderDialog.js"],"names":["React","Modal","injectIntl","FormattedMessage","PrimaryButton","Button","messages","CLASS_MODAL_CONTENT","CLASS_MODAL_OVERLAY","CLASS_MODAL","ERROR_CODE_ITEM_NAME_TOO_LONG","ERROR_CODE_ITEM_NAME_IN_USE","CreateFolderDialog","isOpen","onCreate","onCancel","isLoading","errorCode","parentElement","appElement","intl","textInput","error","create","value","ref","input","HTMLInputElement","focus","select","onKeyDown","key","createDialogErrorInUse","createDialogErrorTooLong","createDialogErrorInvalid","formatMessage","createDialogLabel","createDialogText","cancel"],"mappings":"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","sourcesContent":["/**\n * @flow\n * @file Content Explorer Create Folder Dialog\n * @author Box\n */\n\nimport React from 'react';\nimport Modal from 'react-modal';\nimport { injectIntl, FormattedMessage } from 'react-intl';\nimport type { IntlShape } from 'react-intl';\nimport PrimaryButton from '../../../components/primary-button/PrimaryButton';\nimport Button from '../../../components/button/Button';\nimport messages from '../messages';\nimport {\n CLASS_MODAL_CONTENT,\n CLASS_MODAL_OVERLAY,\n CLASS_MODAL,\n ERROR_CODE_ITEM_NAME_TOO_LONG,\n ERROR_CODE_ITEM_NAME_IN_USE,\n} from '../../../constants';\n\ntype Props = {\n appElement: HTMLElement,\n errorCode: string,\n intl: IntlShape,\n isLoading: boolean,\n isOpen: boolean,\n onCancel: Function,\n onCreate: Function,\n parentElement: HTMLElement,\n};\n\n/* eslint-disable jsx-a11y/label-has-for */\nconst CreateFolderDialog = ({\n isOpen,\n onCreate,\n onCancel,\n isLoading,\n errorCode,\n parentElement,\n appElement,\n intl,\n}: Props) => {\n let textInput = null;\n let error;\n\n /**\n * Appends the extension and calls rename function\n */\n const create = () => {\n if (textInput && textInput.value) {\n onCreate(textInput.value);\n }\n };\n\n /**\n * Grabs reference to the input element\n */\n const ref = input => {\n textInput = input;\n if (textInput instanceof HTMLInputElement) {\n textInput.focus();\n textInput.select();\n }\n };\n\n /**\n * Handles enter key down\n */\n const onKeyDown = ({ key }) => {\n switch (key) {\n case 'Enter':\n create();\n break;\n default:\n break;\n }\n };\n\n switch (errorCode) {\n case ERROR_CODE_ITEM_NAME_IN_USE:\n error = messages.createDialogErrorInUse;\n break;\n case ERROR_CODE_ITEM_NAME_TOO_LONG:\n error = messages.createDialogErrorTooLong;\n break;\n default:\n error = errorCode ? messages.createDialogErrorInvalid : null;\n break;\n }\n\n return (\n <Modal\n appElement={appElement}\n className={CLASS_MODAL_CONTENT}\n contentLabel={intl.formatMessage(messages.createDialogLabel)}\n isOpen={isOpen}\n onRequestClose={onCancel}\n overlayClassName={CLASS_MODAL_OVERLAY}\n parentSelector={() => parentElement}\n portalClassName={CLASS_MODAL}\n >\n <label>\n {error ? (\n <div className=\"be-modal-error\">\n <FormattedMessage {...error} />\n </div>\n ) : null}\n <FormattedMessage tagName=\"div\" {...messages.createDialogText} />\n <input ref={ref} onKeyDown={onKeyDown} required type=\"text\" />\n </label>\n <div className=\"be-modal-btns\">\n <PrimaryButton data-testid=\"be-btn-create-folder\" isLoading={isLoading} onClick={create} type=\"button\">\n <FormattedMessage {...messages.create} />\n </PrimaryButton>\n <Button\n data-testid=\"be-btn-create-folder-cancel\"\n isDisabled={isLoading}\n onClick={onCancel}\n type=\"button\"\n >\n <FormattedMessage {...messages.cancel} />\n </Button>\n </div>\n </Modal>\n );\n};\n\nexport default injectIntl(CreateFolderDialog);\n"],"file":"CreateFolderDialog.js"}
@@ -6,7 +6,7 @@
6
6
 
7
7
  import React from 'react';
8
8
  import { injectIntl, FormattedMessage } from 'react-intl';
9
- import type { InjectIntlProvidedProps } from 'react-intl';
9
+ import type { IntlShape } from 'react-intl';
10
10
  import { isToday, isYesterday } from '../../../utils/datetime';
11
11
  import messages from '../messages';
12
12
  import './DateField.scss';
@@ -15,9 +15,10 @@ type Props = {
15
15
  capitalize?: boolean,
16
16
  date: string,
17
17
  dateFormat?: Object,
18
+ intl: IntlShape,
18
19
  omitCommas?: boolean,
19
20
  relative?: boolean,
20
- } & InjectIntlProvidedProps;
21
+ };
21
22
 
22
23
  const DEFAULT_DATE_FORMAT = {
23
24
  weekday: 'short',
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/elements/common/date/DateField.js"],"names":["React","injectIntl","FormattedMessage","isToday","isYesterday","messages","DEFAULT_DATE_FORMAT","weekday","month","year","day","DateField","date","dateFormat","omitCommas","intl","relative","capitalize","d","Date","isTodaysDate","isYesterdaysDate","Message","today","yesterday","formattedDate","formatDate","replace"],"mappings":"AAAA;;;;;AAMA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,UAAT,EAAqBC,gBAArB,QAA6C,YAA7C;AAEA,SAASC,OAAT,EAAkBC,WAAlB,QAAqC,yBAArC;AACA,OAAOC,QAAP,MAAqB,aAArB;AACA,OAAO,kBAAP;AAUA,MAAMC,mBAAmB,GAAG;AACxBC,EAAAA,OAAO,EAAE,OADe;AAExBC,EAAAA,KAAK,EAAE,OAFiB;AAGxBC,EAAAA,IAAI,EAAE,SAHkB;AAIxBC,EAAAA,GAAG,EAAE;AAJmB,CAA5B;;AAOA,MAAMC,SAAS,GAAG,UAOL;AAAA,MAPM;AACfC,IAAAA,IADe;AAEfC,IAAAA,UAAU,GAAGP,mBAFE;AAGfQ,IAAAA,UAAU,GAAG,KAHE;AAIfC,IAAAA,IAJe;AAKfC,IAAAA,QAAQ,GAAG,IALI;AAMfC,IAAAA,UAAU,GAAG;AANE,GAON;AACT,QAAMC,CAAC,GAAG,IAAIC,IAAJ,CAASP,IAAT,CAAV;AACA,QAAMQ,YAAY,GAAGjB,OAAO,CAACe,CAAD,CAA5B;AACA,QAAMG,gBAAgB,GAAGjB,WAAW,CAACc,CAAD,CAApC;;AAEA,MAAIF,QAAQ,KAAKI,YAAY,IAAIC,gBAArB,CAAZ,EAAoD;AAChD,QAAIC,OAAO,GAAG,oBAAC,gBAAD,EAAsBjB,QAAQ,CAACkB,KAA/B,CAAd;;AACA,QAAIF,gBAAJ,EAAsB;AAClBC,MAAAA,OAAO,GAAG,oBAAC,gBAAD,EAAsBjB,QAAQ,CAACmB,SAA/B,CAAV;AACH;;AAED,QAAIP,UAAJ,EAAgB;AACZ,aAAO;AAAM,QAAA,SAAS,EAAC;AAAhB,SAAsCK,OAAtC,CAAP;AACH;;AAED,WAAOA,OAAP;AACH;;AAED,MAAIG,aAAa,GAAGV,IAAI,CAACW,UAAL,CAAgBR,CAAhB,EAAmBL,UAAnB,CAApB;AACAY,EAAAA,aAAa,GAAGX,UAAU,GAAGW,aAAa,CAACE,OAAd,CAAsB,IAAtB,EAA4B,EAA5B,CAAH,GAAqCF,aAA/D;AACA,SAAOA,aAAP;AACH,CA5BD;;AA8BA,eAAexB,UAAU,CAACU,SAAD,CAAzB","sourcesContent":["/**\n * @flow\n * @file Function to render the date table cell\n * @author Box\n */\n\nimport React from 'react';\nimport { injectIntl, FormattedMessage } from 'react-intl';\nimport type { InjectIntlProvidedProps } from 'react-intl';\nimport { isToday, isYesterday } from '../../../utils/datetime';\nimport messages from '../messages';\nimport './DateField.scss';\n\ntype Props = {\n capitalize?: boolean,\n date: string,\n dateFormat?: Object,\n omitCommas?: boolean,\n relative?: boolean,\n} & InjectIntlProvidedProps;\n\nconst DEFAULT_DATE_FORMAT = {\n weekday: 'short',\n month: 'short',\n year: 'numeric',\n day: 'numeric',\n};\n\nconst DateField = ({\n date,\n dateFormat = DEFAULT_DATE_FORMAT,\n omitCommas = false,\n intl,\n relative = true,\n capitalize = false,\n}: Props) => {\n const d = new Date(date);\n const isTodaysDate = isToday(d);\n const isYesterdaysDate = isYesterday(d);\n\n if (relative && (isTodaysDate || isYesterdaysDate)) {\n let Message = <FormattedMessage {...messages.today} />;\n if (isYesterdaysDate) {\n Message = <FormattedMessage {...messages.yesterday} />;\n }\n\n if (capitalize) {\n return <span className=\"be-date-capitalize\">{Message}</span>;\n }\n\n return Message;\n }\n\n let formattedDate = intl.formatDate(d, dateFormat);\n formattedDate = omitCommas ? formattedDate.replace(/,/g, '') : formattedDate;\n return formattedDate;\n};\n\nexport default injectIntl(DateField);\n"],"file":"DateField.js"}
1
+ {"version":3,"sources":["../../../../src/elements/common/date/DateField.js"],"names":["React","injectIntl","FormattedMessage","isToday","isYesterday","messages","DEFAULT_DATE_FORMAT","weekday","month","year","day","DateField","date","dateFormat","omitCommas","intl","relative","capitalize","d","Date","isTodaysDate","isYesterdaysDate","Message","today","yesterday","formattedDate","formatDate","replace"],"mappings":"AAAA;;;;;AAMA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,UAAT,EAAqBC,gBAArB,QAA6C,YAA7C;AAEA,SAASC,OAAT,EAAkBC,WAAlB,QAAqC,yBAArC;AACA,OAAOC,QAAP,MAAqB,aAArB;AACA,OAAO,kBAAP;AAWA,MAAMC,mBAAmB,GAAG;AACxBC,EAAAA,OAAO,EAAE,OADe;AAExBC,EAAAA,KAAK,EAAE,OAFiB;AAGxBC,EAAAA,IAAI,EAAE,SAHkB;AAIxBC,EAAAA,GAAG,EAAE;AAJmB,CAA5B;;AAOA,MAAMC,SAAS,GAAG,UAOL;AAAA,MAPM;AACfC,IAAAA,IADe;AAEfC,IAAAA,UAAU,GAAGP,mBAFE;AAGfQ,IAAAA,UAAU,GAAG,KAHE;AAIfC,IAAAA,IAJe;AAKfC,IAAAA,QAAQ,GAAG,IALI;AAMfC,IAAAA,UAAU,GAAG;AANE,GAON;AACT,QAAMC,CAAC,GAAG,IAAIC,IAAJ,CAASP,IAAT,CAAV;AACA,QAAMQ,YAAY,GAAGjB,OAAO,CAACe,CAAD,CAA5B;AACA,QAAMG,gBAAgB,GAAGjB,WAAW,CAACc,CAAD,CAApC;;AAEA,MAAIF,QAAQ,KAAKI,YAAY,IAAIC,gBAArB,CAAZ,EAAoD;AAChD,QAAIC,OAAO,GAAG,oBAAC,gBAAD,EAAsBjB,QAAQ,CAACkB,KAA/B,CAAd;;AACA,QAAIF,gBAAJ,EAAsB;AAClBC,MAAAA,OAAO,GAAG,oBAAC,gBAAD,EAAsBjB,QAAQ,CAACmB,SAA/B,CAAV;AACH;;AAED,QAAIP,UAAJ,EAAgB;AACZ,aAAO;AAAM,QAAA,SAAS,EAAC;AAAhB,SAAsCK,OAAtC,CAAP;AACH;;AAED,WAAOA,OAAP;AACH;;AAED,MAAIG,aAAa,GAAGV,IAAI,CAACW,UAAL,CAAgBR,CAAhB,EAAmBL,UAAnB,CAApB;AACAY,EAAAA,aAAa,GAAGX,UAAU,GAAGW,aAAa,CAACE,OAAd,CAAsB,IAAtB,EAA4B,EAA5B,CAAH,GAAqCF,aAA/D;AACA,SAAOA,aAAP;AACH,CA5BD;;AA8BA,eAAexB,UAAU,CAACU,SAAD,CAAzB","sourcesContent":["/**\n * @flow\n * @file Function to render the date table cell\n * @author Box\n */\n\nimport React from 'react';\nimport { injectIntl, FormattedMessage } from 'react-intl';\nimport type { IntlShape } from 'react-intl';\nimport { isToday, isYesterday } from '../../../utils/datetime';\nimport messages from '../messages';\nimport './DateField.scss';\n\ntype Props = {\n capitalize?: boolean,\n date: string,\n dateFormat?: Object,\n intl: IntlShape,\n omitCommas?: boolean,\n relative?: boolean,\n};\n\nconst DEFAULT_DATE_FORMAT = {\n weekday: 'short',\n month: 'short',\n year: 'numeric',\n day: 'numeric',\n};\n\nconst DateField = ({\n date,\n dateFormat = DEFAULT_DATE_FORMAT,\n omitCommas = false,\n intl,\n relative = true,\n capitalize = false,\n}: Props) => {\n const d = new Date(date);\n const isTodaysDate = isToday(d);\n const isYesterdaysDate = isYesterday(d);\n\n if (relative && (isTodaysDate || isYesterdaysDate)) {\n let Message = <FormattedMessage {...messages.today} />;\n if (isYesterdaysDate) {\n Message = <FormattedMessage {...messages.yesterday} />;\n }\n\n if (capitalize) {\n return <span className=\"be-date-capitalize\">{Message}</span>;\n }\n\n return Message;\n }\n\n let formattedDate = intl.formatDate(d, dateFormat);\n formattedDate = omitCommas ? formattedDate.replace(/,/g, '') : formattedDate;\n return formattedDate;\n};\n\nexport default injectIntl(DateField);\n"],"file":"DateField.js"}
@@ -6,7 +6,7 @@
6
6
 
7
7
  import React from 'react';
8
8
  import { injectIntl } from 'react-intl';
9
- import type { InjectIntlProvidedProps } from 'react-intl';
9
+ import type { IntlShape } from 'react-intl';
10
10
  import messages from '../messages';
11
11
  import { ACCESS_NONE, ACCESS_OPEN, ACCESS_COLLAB, ACCESS_COMPANY } from '../../../constants';
12
12
  import type { BoxItem } from '../../../common/types/core';
@@ -15,9 +15,10 @@ import './ShareAccessSelect.scss';
15
15
  type Props = {
16
16
  canSetShareAccess: boolean,
17
17
  className: string,
18
+ intl: IntlShape,
18
19
  item: BoxItem,
19
20
  onChange: Function,
20
- } & InjectIntlProvidedProps;
21
+ };
21
22
 
22
23
  const ShareAccessSelect = ({ className, canSetShareAccess, onChange, item, intl }: Props) => {
23
24
  const { allowed_shared_link_access_levels: allowedSharedAccessLevels, permissions, shared_link: sharedLink } = item;