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 +1 @@
1
- {"version":3,"sources":["../../../../src/features/content-explorer/content-explorer-modal-container/ContentExplorerModalContainer.js"],"names":["PropTypes","React","Component","classNames","BreadcrumbPropType","ContentExplorerModePropType","FoldersPathPropType","ItemsPropType","ContentExplorerModal","NewFolderModal","ContentExplorerModalContainer","constructor","props","enteredFolder","newFoldersPath","onEnterFolder","setState","foldersPath","onNewFolderModalShown","isNewFolderModalOpen","onNewFolderModalClosed","state","initialFoldersPath","componentDidUpdate","prevInitialFoldersPath","render","className","modalTitle","modalDescription","onCreateFolderSubmit","onCreateFolderInput","isCreatingFolder","createFolderError","rest","currentFolder","length","handleEnterFolder","handleCreateNewFolderButtonClick","name","handleNewFolderModalClose","additionalColumns","arrayOf","element","isNoSelectionAllowed","bool","breadcrumbProps","string","hasFolderTreeBreadcrumbs","headerActionsAccessory","node","onRequestClose","func","isRequired","onSelectedClick","onSelectItem","onViewSelectedClick","isSelectAllAllowed","contentExplorerMode","includeSubfoldersProps","object","initialSelectedItems","controlledSelectedItems","onFoldersPathUpdate","onSelectedItemsUpdate","onChooseItems","onMoveItem","onCopyItem","isCreateNewFolderAllowed","onSearchSubmit","onExitSearch","items","numItemsPerPage","number","numTotalItems","onLoadMoreItems","itemIconRenderer","itemNameLinkRenderer","itemButtonRenderer","itemRowHeight","itemRowRenderer","listHeaderHeight","listHeaderRenderer","showCreateNewFolderButton","searchInputProps","chooseButtonText"],"mappings":"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","sourcesContent":["import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\n\nimport { BreadcrumbPropType, ContentExplorerModePropType, FoldersPathPropType, ItemsPropType } from '../prop-types';\nimport ContentExplorerModal from '../content-explorer-modal';\nimport NewFolderModal from '../new-folder-modal';\n\nclass ContentExplorerModalContainer extends Component {\n static propTypes = {\n /**\n * Extra columns displayed in the folders table after folder name column\n * Each column has to be a Column element\n */\n additionalColumns: PropTypes.arrayOf(PropTypes.element),\n /** Allow users to choose no selections in MULTI_SELECT mode, defaults to false */\n isNoSelectionAllowed: PropTypes.bool,\n /** Breadcrumb component options */\n breadcrumbProps: BreadcrumbPropType,\n /** Adds class name. */\n className: PropTypes.string,\n /** Whether the user can see the breadcrumbs represented with the folder tree button */\n hasFolderTreeBreadcrumbs: PropTypes.bool,\n /** Any extra items in the header to the right of the search input (and new folder button) */\n headerActionsAccessory: PropTypes.node,\n /** Title shown in the ContentExplorerModal. */\n modalTitle: PropTypes.string,\n /** Description text shown in the ContentExplorerModal. */\n modalDescription: PropTypes.string,\n /** Called when the ContentExplorerModal is closed. */\n onRequestClose: PropTypes.func.isRequired,\n /**\n * Called when the folder creation is submitted.\n *\n * @param {string} folderName\n */\n onCreateFolderSubmit: PropTypes.func,\n /**\n * Called with the latest folder name input.\n *\n * @param {string} folderName\n */\n onCreateFolderInput: PropTypes.func,\n /** Called when the NewFolderModal is shown. */\n onNewFolderModalShown: PropTypes.func,\n /** Called when the NewFolderModal is closed. */\n onNewFolderModalClosed: PropTypes.func,\n /** Called when selected button is clicked */\n onSelectedClick: PropTypes.func,\n /**\n * Called when an item is selected\n *\n * @param {Object} selectedItem\n * @param {number} selectedItemIndex\n */\n onSelectItem: PropTypes.func,\n /** Called when the number of items selected text is clicked */\n onViewSelectedClick: PropTypes.func,\n /** Folder is in the process of being created. */\n isCreatingFolder: PropTypes.bool,\n /** Whether the user can see select all checkbox */\n isSelectAllAllowed: PropTypes.bool,\n /** Message that will be shown when there was an error creating the folder. */\n createFolderError: PropTypes.string,\n /** Configures the content explorer based on the user's intended action (ex. select file or move/copy) */\n contentExplorerMode: ContentExplorerModePropType.isRequired,\n /** Props for the include subfolders toggle */\n includeSubfoldersProps: PropTypes.object,\n /** Initial path of folders. The last folder in the array is the current folder. */\n initialFoldersPath: FoldersPathPropType.isRequired,\n /** Initial items that will show up as selected */\n initialSelectedItems: PropTypes.object,\n /** Items that will show up as selected */\n controlledSelectedItems: PropTypes.object,\n /**\n * Called when the current folder changes\n *\n * @param {Object} enteredFolder\n * @param {Array} newFoldersPath\n */\n onEnterFolder: PropTypes.func.isRequired,\n /** Called when the folders path is updated\n *\n * @param {Array} newFoldersPath\n */\n onFoldersPathUpdate: PropTypes.func,\n /** Called whenever the selected items list changes\n *\n * @param {Object} selectedItems\n */\n onSelectedItemsUpdate: PropTypes.func,\n /**\n * Called when items are chosen.\n *\n * @param {Object[]} chosenItems In non-multi select mode, the chosenItems will be a 1 element array contain the one chosen item\n */\n onChooseItems: PropTypes.func,\n /**\n * Called when a destination folder has been selected for moving an item to\n *\n * @param {Object} destFolder destination folder\n */\n onMoveItem: PropTypes.func,\n /**\n * Called when a destination folder has been selected for copying an item to\n *\n * @param {Object} destFolder destination folder\n */\n onCopyItem: PropTypes.func,\n /** Whether the user has permission to create a new folder */\n isCreateNewFolderAllowed: PropTypes.bool,\n /**\n * Called when a search query is submitted.\n *\n * @param {string} searchQuery\n */\n onSearchSubmit: PropTypes.func.isRequired,\n /**\n * Called when search mode is exited. An updated items list should now be passed in to display the user's file tree.\n *\n * @param {Object} folderBeforeSearch the previous folder object before entering search mode\n */\n onExitSearch: PropTypes.func.isRequired,\n /** List of items to display */\n items: ItemsPropType.isRequired,\n /** Number of items to load per page as the user scrolls */\n numItemsPerPage: PropTypes.number,\n /** Total number of items across all pages */\n numTotalItems: PropTypes.number,\n /** Called to load more items */\n onLoadMoreItems: PropTypes.func,\n /** Used to render item icons in the list. Overrides the default icons. */\n itemIconRenderer: PropTypes.func,\n /** Used to render item name links in the list. Overrides the default links. */\n itemNameLinkRenderer: PropTypes.func,\n /** Used to render item buttons in the list. Overrides the default buttons. */\n itemButtonRenderer: PropTypes.func,\n /** Height of an item row */\n itemRowHeight: PropTypes.number,\n /** Used to render the row element for items on the list */\n itemRowRenderer: PropTypes.func,\n /** Height of the item list header, defaults to 0, which makes header not visible */\n listHeaderHeight: PropTypes.number,\n /** Used to render the header row on the item list */\n listHeaderRenderer: PropTypes.func,\n /** Whether the new folder button should be shown */\n showCreateNewFolderButton: PropTypes.bool,\n /** Props for the search input */\n searchInputProps: PropTypes.object,\n /** Custom text for the choose button */\n chooseButtonText: PropTypes.node,\n };\n\n static defaultProps = {\n onCreateFolderSubmit: () => {},\n };\n\n constructor(props) {\n super(props);\n this.state = {\n foldersPath: props.initialFoldersPath,\n isNewFolderModalOpen: false,\n };\n }\n\n componentDidUpdate({ initialFoldersPath: prevInitialFoldersPath }) {\n const { initialFoldersPath } = this.props;\n\n if (prevInitialFoldersPath !== initialFoldersPath) {\n // Close the new folder modal when the folders path has changed\n this.setState({\n foldersPath: initialFoldersPath,\n isNewFolderModalOpen: false,\n });\n }\n }\n\n handleEnterFolder = (enteredFolder, newFoldersPath) => {\n const { onEnterFolder } = this.props;\n\n this.setState({ foldersPath: newFoldersPath });\n onEnterFolder(enteredFolder, newFoldersPath);\n };\n\n handleCreateNewFolderButtonClick = () => {\n const { onNewFolderModalShown } = this.props;\n\n this.setState({ isNewFolderModalOpen: true }, () => onNewFolderModalShown && onNewFolderModalShown());\n };\n\n handleNewFolderModalClose = () => {\n const { onNewFolderModalClosed } = this.props;\n\n this.setState({ isNewFolderModalOpen: false }, () => onNewFolderModalClosed && onNewFolderModalClosed());\n };\n\n render() {\n const {\n className,\n modalTitle,\n modalDescription,\n onCreateFolderSubmit,\n onCreateFolderInput,\n isCreatingFolder,\n createFolderError,\n initialFoldersPath,\n ...rest\n } = this.props;\n const { foldersPath, isNewFolderModalOpen } = this.state;\n const currentFolder = foldersPath[foldersPath.length - 1];\n\n return (\n <div className={classNames('content-explorer-modal-container', className)}>\n <ContentExplorerModal\n className={isNewFolderModalOpen ? 'hidden' : ''}\n title={modalTitle}\n description={modalDescription}\n initialFoldersPath={initialFoldersPath}\n isOpen\n onEnterFolder={this.handleEnterFolder}\n onCreateNewFolderButtonClick={this.handleCreateNewFolderButtonClick}\n {...rest}\n />\n {isNewFolderModalOpen && (\n <NewFolderModal\n isOpen\n parentFolderName={currentFolder.name}\n onRequestClose={this.handleNewFolderModalClose}\n onCreateFolderSubmit={onCreateFolderSubmit}\n onCreateFolderInput={onCreateFolderInput}\n isCreatingFolder={isCreatingFolder}\n createFolderError={createFolderError}\n />\n )}\n </div>\n );\n }\n}\n\nexport default ContentExplorerModalContainer;\n"],"file":"ContentExplorerModalContainer.js"}
1
+ {"version":3,"sources":["../../../../src/features/content-explorer/content-explorer-modal-container/ContentExplorerModalContainer.js"],"names":["PropTypes","React","Component","classNames","BreadcrumbPropType","ContentExplorerModePropType","FoldersPathPropType","ItemsPropType","ContentExplorerModal","NewFolderModal","ContentExplorerModalContainer","constructor","props","enteredFolder","newFoldersPath","onEnterFolder","setState","foldersPath","onNewFolderModalShown","isNewFolderModalOpen","onNewFolderModalClosed","state","initialFoldersPath","componentDidUpdate","prevInitialFoldersPath","render","className","modalTitle","modalDescription","onCreateFolderSubmit","onCreateFolderInput","isCreatingFolder","createFolderError","shouldNotUsePortal","rest","currentFolder","length","handleEnterFolder","handleCreateNewFolderButtonClick","name","handleNewFolderModalClose","additionalColumns","arrayOf","element","isNoSelectionAllowed","bool","breadcrumbProps","string","hasFolderTreeBreadcrumbs","headerActionsAccessory","node","onRequestClose","func","isRequired","onSelectedClick","onSelectItem","onViewSelectedClick","isSelectAllAllowed","contentExplorerMode","includeSubfoldersProps","object","initialSelectedItems","controlledSelectedItems","onFoldersPathUpdate","onSelectedItemsUpdate","onChooseItems","onMoveItem","onCopyItem","isCreateNewFolderAllowed","onSearchSubmit","onExitSearch","items","numItemsPerPage","number","numTotalItems","onLoadMoreItems","itemIconRenderer","itemNameLinkRenderer","itemButtonRenderer","itemRowHeight","itemRowRenderer","listHeaderHeight","listHeaderRenderer","showCreateNewFolderButton","searchInputProps","chooseButtonText"],"mappings":"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","sourcesContent":["import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\n\nimport { BreadcrumbPropType, ContentExplorerModePropType, FoldersPathPropType, ItemsPropType } from '../prop-types';\nimport ContentExplorerModal from '../content-explorer-modal';\nimport NewFolderModal from '../new-folder-modal';\n\nclass ContentExplorerModalContainer extends Component {\n static propTypes = {\n /**\n * Extra columns displayed in the folders table after folder name column\n * Each column has to be a Column element\n */\n additionalColumns: PropTypes.arrayOf(PropTypes.element),\n /** Allow users to choose no selections in MULTI_SELECT mode, defaults to false */\n isNoSelectionAllowed: PropTypes.bool,\n /** Breadcrumb component options */\n breadcrumbProps: BreadcrumbPropType,\n /** Adds class name. */\n className: PropTypes.string,\n /** Whether the user can see the breadcrumbs represented with the folder tree button */\n hasFolderTreeBreadcrumbs: PropTypes.bool,\n /** Any extra items in the header to the right of the search input (and new folder button) */\n headerActionsAccessory: PropTypes.node,\n /** Title shown in the ContentExplorerModal. */\n modalTitle: PropTypes.string,\n /** Description text shown in the ContentExplorerModal. */\n modalDescription: PropTypes.string,\n /** Called when the ContentExplorerModal is closed. */\n onRequestClose: PropTypes.func.isRequired,\n /**\n * Called when the folder creation is submitted.\n *\n * @param {string} folderName\n */\n onCreateFolderSubmit: PropTypes.func,\n /**\n * Called with the latest folder name input.\n *\n * @param {string} folderName\n */\n onCreateFolderInput: PropTypes.func,\n /** Called when the NewFolderModal is shown. */\n onNewFolderModalShown: PropTypes.func,\n /** Called when the NewFolderModal is closed. */\n onNewFolderModalClosed: PropTypes.func,\n /** Called when selected button is clicked */\n onSelectedClick: PropTypes.func,\n /**\n * Called when an item is selected\n *\n * @param {Object} selectedItem\n * @param {number} selectedItemIndex\n */\n onSelectItem: PropTypes.func,\n /** Called when the number of items selected text is clicked */\n onViewSelectedClick: PropTypes.func,\n /** Folder is in the process of being created. */\n isCreatingFolder: PropTypes.bool,\n /** Whether the user can see select all checkbox */\n isSelectAllAllowed: PropTypes.bool,\n /** Message that will be shown when there was an error creating the folder. */\n createFolderError: PropTypes.string,\n /** Configures the content explorer based on the user's intended action (ex. select file or move/copy) */\n contentExplorerMode: ContentExplorerModePropType.isRequired,\n /** Props for the include subfolders toggle */\n includeSubfoldersProps: PropTypes.object,\n /** Initial path of folders. The last folder in the array is the current folder. */\n initialFoldersPath: FoldersPathPropType.isRequired,\n /** Initial items that will show up as selected */\n initialSelectedItems: PropTypes.object,\n /** Items that will show up as selected */\n controlledSelectedItems: PropTypes.object,\n /**\n * Called when the current folder changes\n *\n * @param {Object} enteredFolder\n * @param {Array} newFoldersPath\n */\n onEnterFolder: PropTypes.func.isRequired,\n /** Called when the folders path is updated\n *\n * @param {Array} newFoldersPath\n */\n onFoldersPathUpdate: PropTypes.func,\n /** Called whenever the selected items list changes\n *\n * @param {Object} selectedItems\n */\n onSelectedItemsUpdate: PropTypes.func,\n /**\n * Called when items are chosen.\n *\n * @param {Object[]} chosenItems In non-multi select mode, the chosenItems will be a 1 element array contain the one chosen item\n */\n onChooseItems: PropTypes.func,\n /**\n * Called when a destination folder has been selected for moving an item to\n *\n * @param {Object} destFolder destination folder\n */\n onMoveItem: PropTypes.func,\n /**\n * Called when a destination folder has been selected for copying an item to\n *\n * @param {Object} destFolder destination folder\n */\n onCopyItem: PropTypes.func,\n /** Whether the user has permission to create a new folder */\n isCreateNewFolderAllowed: PropTypes.bool,\n /**\n * Called when a search query is submitted.\n *\n * @param {string} searchQuery\n */\n onSearchSubmit: PropTypes.func.isRequired,\n /**\n * Called when search mode is exited. An updated items list should now be passed in to display the user's file tree.\n *\n * @param {Object} folderBeforeSearch the previous folder object before entering search mode\n */\n onExitSearch: PropTypes.func.isRequired,\n /** List of items to display */\n items: ItemsPropType.isRequired,\n /** Number of items to load per page as the user scrolls */\n numItemsPerPage: PropTypes.number,\n /** Total number of items across all pages */\n numTotalItems: PropTypes.number,\n /** Called to load more items */\n onLoadMoreItems: PropTypes.func,\n /** Used to render item icons in the list. Overrides the default icons. */\n itemIconRenderer: PropTypes.func,\n /** Used to render item name links in the list. Overrides the default links. */\n itemNameLinkRenderer: PropTypes.func,\n /** Used to render item buttons in the list. Overrides the default buttons. */\n itemButtonRenderer: PropTypes.func,\n /** Height of an item row */\n itemRowHeight: PropTypes.number,\n /** Used to render the row element for items on the list */\n itemRowRenderer: PropTypes.func,\n /** Height of the item list header, defaults to 0, which makes header not visible */\n listHeaderHeight: PropTypes.number,\n /** Used to render the header row on the item list */\n listHeaderRenderer: PropTypes.func,\n /** Whether the new folder button should be shown */\n showCreateNewFolderButton: PropTypes.bool,\n /** Whether the modals should be nested in a Portal or in a div */\n shouldNotUsePortal: PropTypes.bool,\n /** Props for the search input */\n searchInputProps: PropTypes.object,\n /** Custom text for the choose button */\n chooseButtonText: PropTypes.node,\n };\n\n static defaultProps = {\n onCreateFolderSubmit: () => {},\n };\n\n constructor(props) {\n super(props);\n this.state = {\n foldersPath: props.initialFoldersPath,\n isNewFolderModalOpen: false,\n };\n }\n\n componentDidUpdate({ initialFoldersPath: prevInitialFoldersPath }) {\n const { initialFoldersPath } = this.props;\n\n if (prevInitialFoldersPath !== initialFoldersPath) {\n // Close the new folder modal when the folders path has changed\n this.setState({\n foldersPath: initialFoldersPath,\n isNewFolderModalOpen: false,\n });\n }\n }\n\n handleEnterFolder = (enteredFolder, newFoldersPath) => {\n const { onEnterFolder } = this.props;\n\n this.setState({ foldersPath: newFoldersPath });\n onEnterFolder(enteredFolder, newFoldersPath);\n };\n\n handleCreateNewFolderButtonClick = () => {\n const { onNewFolderModalShown } = this.props;\n\n this.setState({ isNewFolderModalOpen: true }, () => onNewFolderModalShown && onNewFolderModalShown());\n };\n\n handleNewFolderModalClose = () => {\n const { onNewFolderModalClosed } = this.props;\n\n this.setState({ isNewFolderModalOpen: false }, () => onNewFolderModalClosed && onNewFolderModalClosed());\n };\n\n render() {\n const {\n className,\n modalTitle,\n modalDescription,\n onCreateFolderSubmit,\n onCreateFolderInput,\n isCreatingFolder,\n createFolderError,\n initialFoldersPath,\n shouldNotUsePortal,\n ...rest\n } = this.props;\n const { foldersPath, isNewFolderModalOpen } = this.state;\n const currentFolder = foldersPath[foldersPath.length - 1];\n\n return (\n <div className={classNames('content-explorer-modal-container', className)}>\n <ContentExplorerModal\n className={isNewFolderModalOpen ? 'hidden' : ''}\n title={modalTitle}\n description={modalDescription}\n initialFoldersPath={initialFoldersPath}\n isOpen\n onEnterFolder={this.handleEnterFolder}\n onCreateNewFolderButtonClick={this.handleCreateNewFolderButtonClick}\n shouldNotUsePortal={shouldNotUsePortal}\n {...rest}\n />\n {isNewFolderModalOpen && (\n <NewFolderModal\n isOpen\n parentFolderName={currentFolder.name}\n onRequestClose={this.handleNewFolderModalClose}\n onCreateFolderSubmit={onCreateFolderSubmit}\n onCreateFolderInput={onCreateFolderInput}\n isCreatingFolder={isCreatingFolder}\n createFolderError={createFolderError}\n shouldNotUsePortal={shouldNotUsePortal}\n />\n )}\n </div>\n );\n }\n}\n\nexport default ContentExplorerModalContainer;\n"],"file":"ContentExplorerModalContainer.js"}
@@ -54,7 +54,8 @@ class NewFolderModal extends Component {
54
54
  onRequestClose,
55
55
  parentFolderName,
56
56
  isCreatingFolder,
57
- createFolderError
57
+ createFolderError,
58
+ shouldNotUsePortal
58
59
  } = this.props;
59
60
  const {
60
61
  folderNameInput
@@ -65,6 +66,7 @@ class NewFolderModal extends Component {
65
66
  focusElementSelector: ".folder-name-input input",
66
67
  isOpen: isOpen,
67
68
  onRequestClose: onRequestClose,
69
+ shouldNotUsePortal: shouldNotUsePortal,
68
70
  title: React.createElement(FormattedMessage, _extends({}, messages.newFolderModalTitle, {
69
71
  values: {
70
72
  parentFolderName
@@ -126,7 +128,10 @@ _defineProperty(NewFolderModal, "propTypes", {
126
128
  isCreatingFolder: PropTypes.bool,
127
129
 
128
130
  /** Message that will be shown when there was an error creating the folder. */
129
- createFolderError: PropTypes.string
131
+ createFolderError: PropTypes.string,
132
+
133
+ /** Whether the modal should be nested in a Portal or in a div */
134
+ shouldNotUsePortal: PropTypes.bool
130
135
  });
131
136
 
132
137
  _defineProperty(NewFolderModal, "defaultProps", {
@@ -134,7 +139,8 @@ _defineProperty(NewFolderModal, "defaultProps", {
134
139
  isOpen: false,
135
140
  parentFolderName: '',
136
141
  isCreatingFolder: false,
137
- createFolderError: null
142
+ createFolderError: null,
143
+ shouldNotUsePortal: false
138
144
  });
139
145
 
140
146
  export { NewFolderModal as NewFolderModalBase };
@@ -39,6 +39,8 @@ class NewFolderModal extends Component {
39
39
  isCreatingFolder: PropTypes.bool,
40
40
  /** Message that will be shown when there was an error creating the folder. */
41
41
  createFolderError: PropTypes.string,
42
+ /** Whether the modal should be nested in a Portal or in a div */
43
+ shouldNotUsePortal: PropTypes.bool,
42
44
  };
43
45
 
44
46
  static defaultProps = {
@@ -47,6 +49,7 @@ class NewFolderModal extends Component {
47
49
  parentFolderName: '',
48
50
  isCreatingFolder: false,
49
51
  createFolderError: null,
52
+ shouldNotUsePortal: false,
50
53
  };
51
54
 
52
55
  constructor(props) {
@@ -82,6 +85,7 @@ class NewFolderModal extends Component {
82
85
  parentFolderName,
83
86
  isCreatingFolder,
84
87
  createFolderError,
88
+ shouldNotUsePortal,
85
89
  } = this.props;
86
90
  const { folderNameInput } = this.state;
87
91
 
@@ -93,6 +97,7 @@ class NewFolderModal extends Component {
93
97
  focusElementSelector=".folder-name-input input"
94
98
  isOpen={isOpen}
95
99
  onRequestClose={onRequestClose}
100
+ shouldNotUsePortal={shouldNotUsePortal}
96
101
  title={
97
102
  <FormattedMessage
98
103
  {...messages.newFolderModalTitle}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/features/content-explorer/new-folder-modal/NewFolderModal.js"],"names":["PropTypes","React","Component","classNames","FormattedMessage","injectIntl","Modal","ModalActions","TextInput","Button","PrimaryButton","messages","NewFolderModal","constructor","props","onCreateFolderSubmit","folderNameInput","state","event","onCreateFolderInput","input","target","value","setState","render","className","intl","isOpen","onRequestClose","parentFolderName","isCreatingFolder","createFolderError","isCreateButtonDisabled","trim","length","newFolderModalTitle","newFolderModalFolderNameLabel","handleFolderNameInput","formatMessage","newFolderModalFolderNamePlaceholder","newFolderModalCancel","handleCreateClick","newFolderModalCreate","string","any","bool","func","isRequired","NewFolderModalBase"],"mappings":"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","sourcesContent":["import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\nimport { FormattedMessage, injectIntl } from 'react-intl';\n\nimport { Modal, ModalActions } from '../../../components/modal';\nimport TextInput from '../../../components/text-input';\nimport Button from '../../../components/button';\nimport PrimaryButton from '../../../components/primary-button';\n\nimport messages from '../messages';\n\nimport './NewFolderModal.scss';\n\nclass NewFolderModal extends Component {\n static propTypes = {\n /** Adds class name to modal. */\n className: PropTypes.string,\n intl: PropTypes.any,\n /** Opens the modal. */\n isOpen: PropTypes.bool,\n /** Called when the modal is requested to be closed. */\n onRequestClose: PropTypes.func.isRequired,\n /**\n * Called when the folder creation is submitted.\n *\n * @param {string} folderName\n */\n onCreateFolderSubmit: PropTypes.func.isRequired,\n /**\n * Called with the latest folder name input.\n *\n * @param {string} folderName\n */\n onCreateFolderInput: PropTypes.func,\n /** The name of the parent folder that the new folder will be created in. */\n parentFolderName: PropTypes.string,\n /** Folder is in the process of being created. */\n isCreatingFolder: PropTypes.bool,\n /** Message that will be shown when there was an error creating the folder. */\n createFolderError: PropTypes.string,\n };\n\n static defaultProps = {\n className: '',\n isOpen: false,\n parentFolderName: '',\n isCreatingFolder: false,\n createFolderError: null,\n };\n\n constructor(props) {\n super(props);\n this.state = {\n folderNameInput: '',\n };\n }\n\n handleCreateClick = () => {\n const { onCreateFolderSubmit } = this.props;\n const { folderNameInput } = this.state;\n onCreateFolderSubmit(folderNameInput);\n };\n\n handleFolderNameInput = event => {\n const { onCreateFolderInput } = this.props;\n const input = event.target.value;\n this.setState({\n folderNameInput: input,\n });\n if (onCreateFolderInput) {\n onCreateFolderInput(input);\n }\n };\n\n render() {\n const {\n className,\n intl,\n isOpen,\n onRequestClose,\n parentFolderName,\n isCreatingFolder,\n createFolderError,\n } = this.props;\n const { folderNameInput } = this.state;\n\n const isCreateButtonDisabled = !folderNameInput.trim().length || !!createFolderError || !!isCreatingFolder;\n\n return (\n <Modal\n className={classNames('new-folder-modal', className)}\n focusElementSelector=\".folder-name-input input\"\n isOpen={isOpen}\n onRequestClose={onRequestClose}\n title={\n <FormattedMessage\n {...messages.newFolderModalTitle}\n values={{\n parentFolderName,\n }}\n />\n }\n >\n <TextInput\n className=\"folder-name-input\"\n error={createFolderError}\n isRequired\n label={<FormattedMessage {...messages.newFolderModalFolderNameLabel} />}\n onInput={this.handleFolderNameInput}\n placeholder={intl.formatMessage(messages.newFolderModalFolderNamePlaceholder)}\n type=\"text\"\n value={folderNameInput}\n />\n <ModalActions>\n <Button className=\"new-folder-modal-cancel-button\" onClick={onRequestClose} type=\"button\">\n <FormattedMessage {...messages.newFolderModalCancel} />\n </Button>\n <PrimaryButton\n className=\"new-folder-modal-create-button\"\n isDisabled={isCreateButtonDisabled}\n isLoading={isCreatingFolder}\n onClick={this.handleCreateClick}\n type=\"button\"\n >\n <FormattedMessage {...messages.newFolderModalCreate} />\n </PrimaryButton>\n </ModalActions>\n </Modal>\n );\n }\n}\n\nexport { NewFolderModal as NewFolderModalBase };\nexport default injectIntl(NewFolderModal);\n"],"file":"NewFolderModal.js"}
1
+ {"version":3,"sources":["../../../../src/features/content-explorer/new-folder-modal/NewFolderModal.js"],"names":["PropTypes","React","Component","classNames","FormattedMessage","injectIntl","Modal","ModalActions","TextInput","Button","PrimaryButton","messages","NewFolderModal","constructor","props","onCreateFolderSubmit","folderNameInput","state","event","onCreateFolderInput","input","target","value","setState","render","className","intl","isOpen","onRequestClose","parentFolderName","isCreatingFolder","createFolderError","shouldNotUsePortal","isCreateButtonDisabled","trim","length","newFolderModalTitle","newFolderModalFolderNameLabel","handleFolderNameInput","formatMessage","newFolderModalFolderNamePlaceholder","newFolderModalCancel","handleCreateClick","newFolderModalCreate","string","any","bool","func","isRequired","NewFolderModalBase"],"mappings":";;;;AAAA,OAAOA,SAAP,MAAsB,YAAtB;AACA,OAAOC,KAAP,IAAgBC,SAAhB,QAAiC,OAAjC;AACA,OAAOC,UAAP,MAAuB,YAAvB;AACA,SAASC,gBAAT,EAA2BC,UAA3B,QAA6C,YAA7C;AAEA,SAASC,KAAT,EAAgBC,YAAhB,QAAoC,2BAApC;AACA,OAAOC,SAAP,MAAsB,gCAAtB;AACA,OAAOC,MAAP,MAAmB,4BAAnB;AACA,OAAOC,aAAP,MAA0B,oCAA1B;AAEA,OAAOC,QAAP,MAAqB,aAArB;AAEA,OAAO,uBAAP;;AAEA,MAAMC,cAAN,SAA6BV,SAA7B,CAAuC;AAwCnCW,EAAAA,WAAW,CAACC,KAAD,EAAQ;AACf,UAAMA,KAAN;;AADe,+CAOC,MAAM;AACtB,YAAM;AAAEC,QAAAA;AAAF,UAA2B,KAAKD,KAAtC;AACA,YAAM;AAAEE,QAAAA;AAAF,UAAsB,KAAKC,KAAjC;AACAF,MAAAA,oBAAoB,CAACC,eAAD,CAApB;AACH,KAXkB;;AAAA,mDAaKE,KAAK,IAAI;AAC7B,YAAM;AAAEC,QAAAA;AAAF,UAA0B,KAAKL,KAArC;AACA,YAAMM,KAAK,GAAGF,KAAK,CAACG,MAAN,CAAaC,KAA3B;AACA,WAAKC,QAAL,CAAc;AACVP,QAAAA,eAAe,EAAEI;AADP,OAAd;;AAGA,UAAID,mBAAJ,EAAyB;AACrBA,QAAAA,mBAAmB,CAACC,KAAD,CAAnB;AACH;AACJ,KAtBkB;;AAEf,SAAKH,KAAL,GAAa;AACTD,MAAAA,eAAe,EAAE;AADR,KAAb;AAGH;;AAmBDQ,EAAAA,MAAM,GAAG;AACL,UAAM;AACFC,MAAAA,SADE;AAEFC,MAAAA,IAFE;AAGFC,MAAAA,MAHE;AAIFC,MAAAA,cAJE;AAKFC,MAAAA,gBALE;AAMFC,MAAAA,gBANE;AAOFC,MAAAA,iBAPE;AAQFC,MAAAA;AARE,QASF,KAAKlB,KATT;AAUA,UAAM;AAAEE,MAAAA;AAAF,QAAsB,KAAKC,KAAjC;AAEA,UAAMgB,sBAAsB,GAAG,CAACjB,eAAe,CAACkB,IAAhB,GAAuBC,MAAxB,IAAkC,CAAC,CAACJ,iBAApC,IAAyD,CAAC,CAACD,gBAA1F;AAEA,WACI,oBAAC,KAAD;AACI,MAAA,SAAS,EAAE3B,UAAU,CAAC,kBAAD,EAAqBsB,SAArB,CADzB;AAEI,MAAA,oBAAoB,EAAC,0BAFzB;AAGI,MAAA,MAAM,EAAEE,MAHZ;AAII,MAAA,cAAc,EAAEC,cAJpB;AAKI,MAAA,kBAAkB,EAAEI,kBALxB;AAMI,MAAA,KAAK,EACD,oBAAC,gBAAD,eACQrB,QAAQ,CAACyB,mBADjB;AAEI,QAAA,MAAM,EAAE;AACJP,UAAAA;AADI;AAFZ;AAPR,OAeI,oBAAC,SAAD;AACI,MAAA,SAAS,EAAC,mBADd;AAEI,MAAA,KAAK,EAAEE,iBAFX;AAGI,MAAA,UAAU,MAHd;AAII,MAAA,KAAK,EAAE,oBAAC,gBAAD,EAAsBpB,QAAQ,CAAC0B,6BAA/B,CAJX;AAKI,MAAA,OAAO,EAAE,KAAKC,qBALlB;AAMI,MAAA,WAAW,EAAEZ,IAAI,CAACa,aAAL,CAAmB5B,QAAQ,CAAC6B,mCAA5B,CANjB;AAOI,MAAA,IAAI,EAAC,MAPT;AAQI,MAAA,KAAK,EAAExB;AARX,MAfJ,EAyBI,oBAAC,YAAD,QACI,oBAAC,MAAD;AAAQ,MAAA,SAAS,EAAC,gCAAlB;AAAmD,MAAA,OAAO,EAAEY,cAA5D;AAA4E,MAAA,IAAI,EAAC;AAAjF,OACI,oBAAC,gBAAD,EAAsBjB,QAAQ,CAAC8B,oBAA/B,CADJ,CADJ,EAII,oBAAC,aAAD;AACI,MAAA,SAAS,EAAC,gCADd;AAEI,MAAA,UAAU,EAAER,sBAFhB;AAGI,MAAA,SAAS,EAAEH,gBAHf;AAII,MAAA,OAAO,EAAE,KAAKY,iBAJlB;AAKI,MAAA,IAAI,EAAC;AALT,OAOI,oBAAC,gBAAD,EAAsB/B,QAAQ,CAACgC,oBAA/B,CAPJ,CAJJ,CAzBJ,CADJ;AA0CH;;AAzHkC;;gBAAjC/B,c,eACiB;AACf;AACAa,EAAAA,SAAS,EAAEzB,SAAS,CAAC4C,MAFN;AAGflB,EAAAA,IAAI,EAAE1B,SAAS,CAAC6C,GAHD;;AAIf;AACAlB,EAAAA,MAAM,EAAE3B,SAAS,CAAC8C,IALH;;AAMf;AACAlB,EAAAA,cAAc,EAAE5B,SAAS,CAAC+C,IAAV,CAAeC,UAPhB;;AAQf;;;;;AAKAjC,EAAAA,oBAAoB,EAAEf,SAAS,CAAC+C,IAAV,CAAeC,UAbtB;;AAcf;;;;;AAKA7B,EAAAA,mBAAmB,EAAEnB,SAAS,CAAC+C,IAnBhB;;AAoBf;AACAlB,EAAAA,gBAAgB,EAAE7B,SAAS,CAAC4C,MArBb;;AAsBf;AACAd,EAAAA,gBAAgB,EAAE9B,SAAS,CAAC8C,IAvBb;;AAwBf;AACAf,EAAAA,iBAAiB,EAAE/B,SAAS,CAAC4C,MAzBd;;AA0Bf;AACAZ,EAAAA,kBAAkB,EAAEhC,SAAS,CAAC8C;AA3Bf,C;;gBADjBlC,c,kBA+BoB;AAClBa,EAAAA,SAAS,EAAE,EADO;AAElBE,EAAAA,MAAM,EAAE,KAFU;AAGlBE,EAAAA,gBAAgB,EAAE,EAHA;AAIlBC,EAAAA,gBAAgB,EAAE,KAJA;AAKlBC,EAAAA,iBAAiB,EAAE,IALD;AAMlBC,EAAAA,kBAAkB,EAAE;AANF,C;;AA6F1B,SAASpB,cAAc,IAAIqC,kBAA3B;AACA,eAAe5C,UAAU,CAACO,cAAD,CAAzB","sourcesContent":["import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\nimport { FormattedMessage, injectIntl } from 'react-intl';\n\nimport { Modal, ModalActions } from '../../../components/modal';\nimport TextInput from '../../../components/text-input';\nimport Button from '../../../components/button';\nimport PrimaryButton from '../../../components/primary-button';\n\nimport messages from '../messages';\n\nimport './NewFolderModal.scss';\n\nclass NewFolderModal extends Component {\n static propTypes = {\n /** Adds class name to modal. */\n className: PropTypes.string,\n intl: PropTypes.any,\n /** Opens the modal. */\n isOpen: PropTypes.bool,\n /** Called when the modal is requested to be closed. */\n onRequestClose: PropTypes.func.isRequired,\n /**\n * Called when the folder creation is submitted.\n *\n * @param {string} folderName\n */\n onCreateFolderSubmit: PropTypes.func.isRequired,\n /**\n * Called with the latest folder name input.\n *\n * @param {string} folderName\n */\n onCreateFolderInput: PropTypes.func,\n /** The name of the parent folder that the new folder will be created in. */\n parentFolderName: PropTypes.string,\n /** Folder is in the process of being created. */\n isCreatingFolder: PropTypes.bool,\n /** Message that will be shown when there was an error creating the folder. */\n createFolderError: PropTypes.string,\n /** Whether the modal should be nested in a Portal or in a div */\n shouldNotUsePortal: PropTypes.bool,\n };\n\n static defaultProps = {\n className: '',\n isOpen: false,\n parentFolderName: '',\n isCreatingFolder: false,\n createFolderError: null,\n shouldNotUsePortal: false,\n };\n\n constructor(props) {\n super(props);\n this.state = {\n folderNameInput: '',\n };\n }\n\n handleCreateClick = () => {\n const { onCreateFolderSubmit } = this.props;\n const { folderNameInput } = this.state;\n onCreateFolderSubmit(folderNameInput);\n };\n\n handleFolderNameInput = event => {\n const { onCreateFolderInput } = this.props;\n const input = event.target.value;\n this.setState({\n folderNameInput: input,\n });\n if (onCreateFolderInput) {\n onCreateFolderInput(input);\n }\n };\n\n render() {\n const {\n className,\n intl,\n isOpen,\n onRequestClose,\n parentFolderName,\n isCreatingFolder,\n createFolderError,\n shouldNotUsePortal,\n } = this.props;\n const { folderNameInput } = this.state;\n\n const isCreateButtonDisabled = !folderNameInput.trim().length || !!createFolderError || !!isCreatingFolder;\n\n return (\n <Modal\n className={classNames('new-folder-modal', className)}\n focusElementSelector=\".folder-name-input input\"\n isOpen={isOpen}\n onRequestClose={onRequestClose}\n shouldNotUsePortal={shouldNotUsePortal}\n title={\n <FormattedMessage\n {...messages.newFolderModalTitle}\n values={{\n parentFolderName,\n }}\n />\n }\n >\n <TextInput\n className=\"folder-name-input\"\n error={createFolderError}\n isRequired\n label={<FormattedMessage {...messages.newFolderModalFolderNameLabel} />}\n onInput={this.handleFolderNameInput}\n placeholder={intl.formatMessage(messages.newFolderModalFolderNamePlaceholder)}\n type=\"text\"\n value={folderNameInput}\n />\n <ModalActions>\n <Button className=\"new-folder-modal-cancel-button\" onClick={onRequestClose} type=\"button\">\n <FormattedMessage {...messages.newFolderModalCancel} />\n </Button>\n <PrimaryButton\n className=\"new-folder-modal-create-button\"\n isDisabled={isCreateButtonDisabled}\n isLoading={isCreatingFolder}\n onClick={this.handleCreateClick}\n type=\"button\"\n >\n <FormattedMessage {...messages.newFolderModalCreate} />\n </PrimaryButton>\n </ModalActions>\n </Modal>\n );\n }\n}\n\nexport { NewFolderModal as NewFolderModalBase };\nexport default injectIntl(NewFolderModal);\n"],"file":"NewFolderModal.js"}
@@ -1,6 +1,7 @@
1
1
  // @flow
2
2
  import * as React from 'react';
3
- import { FormattedMessage, injectIntl, type InjectIntlProvidedProps } from 'react-intl';
3
+ import { FormattedMessage, injectIntl } from 'react-intl';
4
+ import type { IntlShape } from 'react-intl';
4
5
  import classNames from 'classnames';
5
6
  import { AutoSizer, CellMeasurer, CellMeasurerCache, List } from '@box/react-virtualized';
6
7
  import debounce from 'lodash/debounce';
@@ -26,6 +27,7 @@ type Props = {|
26
27
  apiHost: string,
27
28
  contentPreviewProps?: ContentPreviewProps,
28
29
  getToken: (fileId: string) => Promise<Token>,
30
+ intl: IntlShape,
29
31
  messages: Array<EligibleMessageCenterMessage> | null | Error,
30
32
  onMessageShown: EligibleMessageCenterMessage => void,
31
33
  onRequestClose: () => void,
@@ -51,7 +53,7 @@ function MessageCenterModal({
51
53
  intl,
52
54
  overscanRowCount = 1,
53
55
  onMessageShown,
54
- }: Props & InjectIntlProvidedProps) {
56
+ }: Props) {
55
57
  const categories: Array<{ displayText: string, value: string }> | null = React.useMemo(() => {
56
58
  if (!Array.isArray(messages)) {
57
59
  return null;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/features/message-center/components/message-center-modal/MessageCenterModal.js"],"names":["React","FormattedMessage","injectIntl","classNames","AutoSizer","CellMeasurer","CellMeasurerCache","List","debounce","AnimateHeight","Scrollbar","Modal","CategorySelector","CollapsibleScrollbar","Message","intlMessages","MessagePreviewGhost","ContentGhost","BottomContentWrapper","ErrorState","EmptyState","ALL","cache","defaultHeight","fixedWidth","SCROLLBAR_MARGIN","listStyle","overflowX","overflowY","trackYStyles","marginLeft","MessageCenterModal","apiHost","contentPreviewProps","onRequestClose","messages","getToken","intl","overscanRowCount","onMessageShown","categories","useMemo","Array","isArray","messageCategoriesSet","Set","forEach","templateParams","category","add","size","value","displayText","formatMessage","all","product","events","boxEducation","listRef","useRef","isMouseInTitleRef","messageLoadCacheRef","Map","setCategory","useState","isExpanded","setIsExpanded","dimensions","setDimensions","width","height","scrollRef","title","current","clearAll","filteredMessages","filter","sort","activateDate","activateDateA","priority","priorityA","activateDateB","priorityB","useEffect","scrollbarRef","scrollToTop","rowRenderer","index","parent","style","isVisible","message","messageId","id","isFirstTimeBeingShown","has","set","registerChild","handleOnScroll","clientHeight","scrollTop","prevClientHeight","prevScrollTop","isScrollingDown","handleResize","resizeDimensions","handlOnResize","useCallback","renderMessages","length","rowHeight","scrollLeft","Grid","handleScrollEvent","Error","errorFetchingPosts"],"mappings":"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","sourcesContent":["// @flow\nimport * as React from 'react';\nimport { FormattedMessage, injectIntl, type InjectIntlProvidedProps } from 'react-intl';\nimport classNames from 'classnames';\nimport { AutoSizer, CellMeasurer, CellMeasurerCache, List } from '@box/react-virtualized';\nimport debounce from 'lodash/debounce';\nimport AnimateHeight from 'react-animate-height';\nimport Scrollbar from 'react-scrollbars-custom';\nimport type { Token } from '../../../../common/types/core';\nimport Modal from '../../../../components/modal/Modal';\nimport CategorySelector from '../../../../components/category-selector/CategorySelector';\n\nimport CollapsibleScrollbar from '../collapsibile-scrollbar/CollapsibleScrollbar';\nimport Message from '../message/Message';\nimport intlMessages from '../../messages';\nimport type { EligibleMessageCenterMessage } from '../../types';\nimport type { ContentPreviewProps } from '../../../message-preview-content/MessagePreviewContent';\nimport './MessageCenterModal.scss';\nimport MessagePreviewGhost from '../../../message-preview-ghost/MessagePreviewGhost';\nimport ContentGhost from '../templates/common/ContentGhost';\nimport BottomContentWrapper from '../templates/common/BottomContentWrapper';\nimport ErrorState from '../error-state/ErrorState';\nimport EmptyState from './EmptyState';\n\ntype Props = {|\n apiHost: string,\n contentPreviewProps?: ContentPreviewProps,\n getToken: (fileId: string) => Promise<Token>,\n messages: Array<EligibleMessageCenterMessage> | null | Error,\n onMessageShown: EligibleMessageCenterMessage => void,\n onRequestClose: () => void,\n overscanRowCount?: number,\n|};\n\nconst ALL = 'all';\nconst cache = new CellMeasurerCache({\n defaultHeight: 400,\n fixedWidth: true,\n});\n\nconst SCROLLBAR_MARGIN = 16;\nconst listStyle = { overflowX: false, overflowY: false };\nconst trackYStyles = { marginLeft: `${SCROLLBAR_MARGIN}px` };\n\nfunction MessageCenterModal({\n apiHost,\n contentPreviewProps,\n onRequestClose,\n messages,\n getToken,\n intl,\n overscanRowCount = 1,\n onMessageShown,\n}: Props & InjectIntlProvidedProps) {\n const categories: Array<{ displayText: string, value: string }> | null = React.useMemo(() => {\n if (!Array.isArray(messages)) {\n return null;\n }\n\n const messageCategoriesSet = new Set<string>();\n messages.forEach(({ templateParams: { category } }) => {\n messageCategoriesSet.add(category);\n });\n\n if (messageCategoriesSet.size <= 1) {\n return null;\n }\n\n return [\n {\n value: ALL,\n displayText: intl.formatMessage(intlMessages.all),\n },\n {\n value: 'product',\n displayText: intl.formatMessage(intlMessages.product),\n },\n {\n value: 'events',\n displayText: intl.formatMessage(intlMessages.events),\n },\n {\n value: 'education',\n displayText: intl.formatMessage(intlMessages.boxEducation),\n },\n ];\n }, [intl, messages]);\n const listRef = React.useRef(null);\n const isMouseInTitleRef = React.useRef(false);\n const messageLoadCacheRef = React.useRef(new Map<number, boolean>());\n const [category, setCategory] = React.useState(ALL);\n const [isExpanded, setIsExpanded] = React.useState(true);\n const [dimensions, setDimensions] = React.useState({ width: 0, height: 0 });\n const scrollRef = React.useRef<{ scrollbarRef: React.ElementRef<typeof Scrollbar> } | null>(null);\n\n const title = (\n <section\n className={classNames('bdl-MessageCenterModal-title', {\n 'is-expanded': isExpanded,\n 'is-collapsed': !isExpanded,\n })}\n data-testid=\"modal-title\"\n onMouseEnter={() => {\n isMouseInTitleRef.current = true;\n setIsExpanded(true);\n }}\n onMouseLeave={() => {\n isMouseInTitleRef.current = false;\n }}\n >\n <div className=\"bdl-MessageCenterModal-whatsNew\">\n <FormattedMessage {...intlMessages.title} />\n </div>\n {categories && (\n <AnimateHeight duration={300} height={isExpanded ? 'auto' : 0}>\n <section className=\"bdl-MessageCenterModal-categorySelector\">\n <CategorySelector\n currentCategory={category}\n categories={categories}\n onSelect={value => {\n cache.clearAll();\n setCategory(value);\n }}\n />\n </section>\n </AnimateHeight>\n )}\n </section>\n );\n\n const filteredMessages = React.useMemo(() => {\n if (!Array.isArray(messages)) {\n return [];\n }\n\n return messages\n .filter(({ templateParams }) => {\n return category === ALL || templateParams.category === category;\n })\n .sort(\n (\n { activateDate: activateDateA, priority: priorityA },\n { activateDate: activateDateB, priority: priorityB },\n ) => {\n // sort by date (descending), secondary sort by priority (descending)\n if (activateDateA > activateDateB) {\n return -1;\n }\n\n if (activateDateA < activateDateB) {\n return 1;\n }\n\n if (priorityA > priorityB) {\n return -1;\n }\n\n if (priorityA < priorityB) {\n return 1;\n }\n\n return 0;\n },\n );\n }, [category, messages]);\n\n React.useEffect(() => {\n if (scrollRef.current && scrollRef.current.scrollbarRef && scrollRef.current.scrollbarRef.current) {\n scrollRef.current.scrollbarRef.current.scrollToTop();\n }\n }, [category]);\n\n function rowRenderer({ index, parent, style, isVisible }: Object) {\n const message = filteredMessages[index];\n const messageId = message.id;\n const isFirstTimeBeingShown = !messageLoadCacheRef.current.has(messageId);\n if (isVisible && isFirstTimeBeingShown) {\n messageLoadCacheRef.current.set(messageId, true);\n onMessageShown(message);\n }\n\n return (\n <CellMeasurer key={messageId} cache={cache} columnIndex={0} parent={parent} rowIndex={index}>\n {({ registerChild }) => (\n <div\n ref={registerChild}\n className=\"bdl-MessageCenterModal-message\"\n style={style}\n data-testid=\"messagecentermodalmessage\"\n >\n <Message\n contentPreviewProps={contentPreviewProps}\n apiHost={apiHost}\n {...message}\n getToken={getToken}\n />\n </div>\n )}\n </CellMeasurer>\n );\n }\n\n function handleOnScroll(clientHeight, scrollTop, prevClientHeight, prevScrollTop) {\n if (clientHeight > 0 && clientHeight === prevClientHeight && !isMouseInTitleRef.current) {\n const isScrollingDown = prevScrollTop < scrollTop;\n if (isExpanded && isScrollingDown) {\n setIsExpanded(false);\n } else if (!isExpanded && !isScrollingDown) {\n setIsExpanded(true);\n }\n }\n }\n\n function handleResize(resizeDimensions) {\n setDimensions(resizeDimensions);\n }\n\n const handlOnResize = React.useCallback(debounce(handleResize, 300), []);\n\n function renderMessages(width: number, height: number): React.Node {\n if (!messages) {\n return (\n <div className=\"bdl-MessageCenterModal-message\">\n <div className=\"bdl-MessageCenterModal-ghost\">\n <MessagePreviewGhost />\n <BottomContentWrapper>\n <ContentGhost />\n </BottomContentWrapper>\n </div>\n </div>\n );\n }\n\n return (\n <List\n ref={listRef}\n className=\"bdl-MessageCenterModal-list\"\n deferredMeasurementCache={cache}\n height={dimensions.height || height}\n noRowsRenderer={EmptyState}\n overscanRowCount={overscanRowCount}\n rowCount={filteredMessages.length}\n rowHeight={cache.rowHeight}\n rowRenderer={rowRenderer}\n scrollToIndex={0}\n style={listStyle}\n width={width - SCROLLBAR_MARGIN}\n />\n );\n }\n\n return (\n <Modal\n className=\"bdl-MessageCenterModal\"\n data-resin-component=\"messageCenterModal\"\n data-testid=\"messagecentermodal\"\n isOpen\n onRequestClose={onRequestClose}\n title={title}\n >\n <section className=\"bdl-MessageCenterModal-messages\">\n <AutoSizer onResize={handlOnResize}>\n {({ height, width }) => (\n <CollapsibleScrollbar\n ref={scrollRef}\n onScroll={(\n { clientHeight, scrollTop, scrollLeft },\n { clientHeight: prevClientHeight, scrollTop: prevScrollTop },\n ) => {\n handleOnScroll(clientHeight, scrollTop, prevClientHeight, prevScrollTop);\n if (listRef.current && listRef.current.Grid) {\n const { Grid } = listRef.current;\n Grid.handleScrollEvent({ scrollTop, scrollLeft });\n }\n }}\n permanentTrackY\n style={{ width, height }}\n trackYStyles={trackYStyles}\n >\n {messages instanceof Error ? (\n <ErrorState>\n <FormattedMessage {...intlMessages.errorFetchingPosts} />\n </ErrorState>\n ) : (\n renderMessages(width, height)\n )}\n </CollapsibleScrollbar>\n )}\n </AutoSizer>\n </section>\n </Modal>\n );\n}\n\nexport default injectIntl(MessageCenterModal);\n"],"file":"MessageCenterModal.js"}
1
+ {"version":3,"sources":["../../../../../src/features/message-center/components/message-center-modal/MessageCenterModal.js"],"names":["React","FormattedMessage","injectIntl","classNames","AutoSizer","CellMeasurer","CellMeasurerCache","List","debounce","AnimateHeight","Scrollbar","Modal","CategorySelector","CollapsibleScrollbar","Message","intlMessages","MessagePreviewGhost","ContentGhost","BottomContentWrapper","ErrorState","EmptyState","ALL","cache","defaultHeight","fixedWidth","SCROLLBAR_MARGIN","listStyle","overflowX","overflowY","trackYStyles","marginLeft","MessageCenterModal","apiHost","contentPreviewProps","onRequestClose","messages","getToken","intl","overscanRowCount","onMessageShown","categories","useMemo","Array","isArray","messageCategoriesSet","Set","forEach","templateParams","category","add","size","value","displayText","formatMessage","all","product","events","boxEducation","listRef","useRef","isMouseInTitleRef","messageLoadCacheRef","Map","setCategory","useState","isExpanded","setIsExpanded","dimensions","setDimensions","width","height","scrollRef","title","current","clearAll","filteredMessages","filter","sort","activateDate","activateDateA","priority","priorityA","activateDateB","priorityB","useEffect","scrollbarRef","scrollToTop","rowRenderer","index","parent","style","isVisible","message","messageId","id","isFirstTimeBeingShown","has","set","registerChild","handleOnScroll","clientHeight","scrollTop","prevClientHeight","prevScrollTop","isScrollingDown","handleResize","resizeDimensions","handlOnResize","useCallback","renderMessages","length","rowHeight","scrollLeft","Grid","handleScrollEvent","Error","errorFetchingPosts"],"mappings":"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","sourcesContent":["// @flow\nimport * as React from 'react';\nimport { FormattedMessage, injectIntl } from 'react-intl';\nimport type { IntlShape } from 'react-intl';\nimport classNames from 'classnames';\nimport { AutoSizer, CellMeasurer, CellMeasurerCache, List } from '@box/react-virtualized';\nimport debounce from 'lodash/debounce';\nimport AnimateHeight from 'react-animate-height';\nimport Scrollbar from 'react-scrollbars-custom';\nimport type { Token } from '../../../../common/types/core';\nimport Modal from '../../../../components/modal/Modal';\nimport CategorySelector from '../../../../components/category-selector/CategorySelector';\n\nimport CollapsibleScrollbar from '../collapsibile-scrollbar/CollapsibleScrollbar';\nimport Message from '../message/Message';\nimport intlMessages from '../../messages';\nimport type { EligibleMessageCenterMessage } from '../../types';\nimport type { ContentPreviewProps } from '../../../message-preview-content/MessagePreviewContent';\nimport './MessageCenterModal.scss';\nimport MessagePreviewGhost from '../../../message-preview-ghost/MessagePreviewGhost';\nimport ContentGhost from '../templates/common/ContentGhost';\nimport BottomContentWrapper from '../templates/common/BottomContentWrapper';\nimport ErrorState from '../error-state/ErrorState';\nimport EmptyState from './EmptyState';\n\ntype Props = {|\n apiHost: string,\n contentPreviewProps?: ContentPreviewProps,\n getToken: (fileId: string) => Promise<Token>,\n intl: IntlShape,\n messages: Array<EligibleMessageCenterMessage> | null | Error,\n onMessageShown: EligibleMessageCenterMessage => void,\n onRequestClose: () => void,\n overscanRowCount?: number,\n|};\n\nconst ALL = 'all';\nconst cache = new CellMeasurerCache({\n defaultHeight: 400,\n fixedWidth: true,\n});\n\nconst SCROLLBAR_MARGIN = 16;\nconst listStyle = { overflowX: false, overflowY: false };\nconst trackYStyles = { marginLeft: `${SCROLLBAR_MARGIN}px` };\n\nfunction MessageCenterModal({\n apiHost,\n contentPreviewProps,\n onRequestClose,\n messages,\n getToken,\n intl,\n overscanRowCount = 1,\n onMessageShown,\n}: Props) {\n const categories: Array<{ displayText: string, value: string }> | null = React.useMemo(() => {\n if (!Array.isArray(messages)) {\n return null;\n }\n\n const messageCategoriesSet = new Set<string>();\n messages.forEach(({ templateParams: { category } }) => {\n messageCategoriesSet.add(category);\n });\n\n if (messageCategoriesSet.size <= 1) {\n return null;\n }\n\n return [\n {\n value: ALL,\n displayText: intl.formatMessage(intlMessages.all),\n },\n {\n value: 'product',\n displayText: intl.formatMessage(intlMessages.product),\n },\n {\n value: 'events',\n displayText: intl.formatMessage(intlMessages.events),\n },\n {\n value: 'education',\n displayText: intl.formatMessage(intlMessages.boxEducation),\n },\n ];\n }, [intl, messages]);\n const listRef = React.useRef(null);\n const isMouseInTitleRef = React.useRef(false);\n const messageLoadCacheRef = React.useRef(new Map<number, boolean>());\n const [category, setCategory] = React.useState(ALL);\n const [isExpanded, setIsExpanded] = React.useState(true);\n const [dimensions, setDimensions] = React.useState({ width: 0, height: 0 });\n const scrollRef = React.useRef<{ scrollbarRef: React.ElementRef<typeof Scrollbar> } | null>(null);\n\n const title = (\n <section\n className={classNames('bdl-MessageCenterModal-title', {\n 'is-expanded': isExpanded,\n 'is-collapsed': !isExpanded,\n })}\n data-testid=\"modal-title\"\n onMouseEnter={() => {\n isMouseInTitleRef.current = true;\n setIsExpanded(true);\n }}\n onMouseLeave={() => {\n isMouseInTitleRef.current = false;\n }}\n >\n <div className=\"bdl-MessageCenterModal-whatsNew\">\n <FormattedMessage {...intlMessages.title} />\n </div>\n {categories && (\n <AnimateHeight duration={300} height={isExpanded ? 'auto' : 0}>\n <section className=\"bdl-MessageCenterModal-categorySelector\">\n <CategorySelector\n currentCategory={category}\n categories={categories}\n onSelect={value => {\n cache.clearAll();\n setCategory(value);\n }}\n />\n </section>\n </AnimateHeight>\n )}\n </section>\n );\n\n const filteredMessages = React.useMemo(() => {\n if (!Array.isArray(messages)) {\n return [];\n }\n\n return messages\n .filter(({ templateParams }) => {\n return category === ALL || templateParams.category === category;\n })\n .sort(\n (\n { activateDate: activateDateA, priority: priorityA },\n { activateDate: activateDateB, priority: priorityB },\n ) => {\n // sort by date (descending), secondary sort by priority (descending)\n if (activateDateA > activateDateB) {\n return -1;\n }\n\n if (activateDateA < activateDateB) {\n return 1;\n }\n\n if (priorityA > priorityB) {\n return -1;\n }\n\n if (priorityA < priorityB) {\n return 1;\n }\n\n return 0;\n },\n );\n }, [category, messages]);\n\n React.useEffect(() => {\n if (scrollRef.current && scrollRef.current.scrollbarRef && scrollRef.current.scrollbarRef.current) {\n scrollRef.current.scrollbarRef.current.scrollToTop();\n }\n }, [category]);\n\n function rowRenderer({ index, parent, style, isVisible }: Object) {\n const message = filteredMessages[index];\n const messageId = message.id;\n const isFirstTimeBeingShown = !messageLoadCacheRef.current.has(messageId);\n if (isVisible && isFirstTimeBeingShown) {\n messageLoadCacheRef.current.set(messageId, true);\n onMessageShown(message);\n }\n\n return (\n <CellMeasurer key={messageId} cache={cache} columnIndex={0} parent={parent} rowIndex={index}>\n {({ registerChild }) => (\n <div\n ref={registerChild}\n className=\"bdl-MessageCenterModal-message\"\n style={style}\n data-testid=\"messagecentermodalmessage\"\n >\n <Message\n contentPreviewProps={contentPreviewProps}\n apiHost={apiHost}\n {...message}\n getToken={getToken}\n />\n </div>\n )}\n </CellMeasurer>\n );\n }\n\n function handleOnScroll(clientHeight, scrollTop, prevClientHeight, prevScrollTop) {\n if (clientHeight > 0 && clientHeight === prevClientHeight && !isMouseInTitleRef.current) {\n const isScrollingDown = prevScrollTop < scrollTop;\n if (isExpanded && isScrollingDown) {\n setIsExpanded(false);\n } else if (!isExpanded && !isScrollingDown) {\n setIsExpanded(true);\n }\n }\n }\n\n function handleResize(resizeDimensions) {\n setDimensions(resizeDimensions);\n }\n\n const handlOnResize = React.useCallback(debounce(handleResize, 300), []);\n\n function renderMessages(width: number, height: number): React.Node {\n if (!messages) {\n return (\n <div className=\"bdl-MessageCenterModal-message\">\n <div className=\"bdl-MessageCenterModal-ghost\">\n <MessagePreviewGhost />\n <BottomContentWrapper>\n <ContentGhost />\n </BottomContentWrapper>\n </div>\n </div>\n );\n }\n\n return (\n <List\n ref={listRef}\n className=\"bdl-MessageCenterModal-list\"\n deferredMeasurementCache={cache}\n height={dimensions.height || height}\n noRowsRenderer={EmptyState}\n overscanRowCount={overscanRowCount}\n rowCount={filteredMessages.length}\n rowHeight={cache.rowHeight}\n rowRenderer={rowRenderer}\n scrollToIndex={0}\n style={listStyle}\n width={width - SCROLLBAR_MARGIN}\n />\n );\n }\n\n return (\n <Modal\n className=\"bdl-MessageCenterModal\"\n data-resin-component=\"messageCenterModal\"\n data-testid=\"messagecentermodal\"\n isOpen\n onRequestClose={onRequestClose}\n title={title}\n >\n <section className=\"bdl-MessageCenterModal-messages\">\n <AutoSizer onResize={handlOnResize}>\n {({ height, width }) => (\n <CollapsibleScrollbar\n ref={scrollRef}\n onScroll={(\n { clientHeight, scrollTop, scrollLeft },\n { clientHeight: prevClientHeight, scrollTop: prevScrollTop },\n ) => {\n handleOnScroll(clientHeight, scrollTop, prevClientHeight, prevScrollTop);\n if (listRef.current && listRef.current.Grid) {\n const { Grid } = listRef.current;\n Grid.handleScrollEvent({ scrollTop, scrollLeft });\n }\n }}\n permanentTrackY\n style={{ width, height }}\n trackYStyles={trackYStyles}\n >\n {messages instanceof Error ? (\n <ErrorState>\n <FormattedMessage {...intlMessages.errorFetchingPosts} />\n </ErrorState>\n ) : (\n renderMessages(width, height)\n )}\n </CollapsibleScrollbar>\n )}\n </AutoSizer>\n </section>\n </Modal>\n );\n}\n\nexport default injectIntl(MessageCenterModal);\n"],"file":"MessageCenterModal.js"}
@@ -6,7 +6,9 @@ import { FormattedMessage, injectIntl } from 'react-intl'; // @ts-ignore flow im
6
6
  import messages from './messages'; // @ts-ignore flow import
7
7
 
8
8
  import { determineInteractionMessage } from './utils/presenceUtils';
9
- import './PresenceAvatarTooltipContent.scss';
9
+ import './PresenceAvatarTooltipContent.scss'; // @ts-ignore flow import
10
+
11
+ import timeFromNow from '../../utils/relativeTime';
10
12
 
11
13
  function PresenceAvatarTooltipContent(_ref) {
12
14
  let {
@@ -17,15 +19,11 @@ function PresenceAvatarTooltipContent(_ref) {
17
19
  isActive
18
20
  } = _ref;
19
21
  const lastActionMessage = determineInteractionMessage(interactionType);
20
- let timeAgo;
21
-
22
- if (intl.formatRelativeTime) {
23
- timeAgo = intl.formatRelativeTime(interactedAt - Date.now());
24
- } else {
25
- // @ts-ignore: react-intl v2 backwards compatibility
26
- timeAgo = intl.formatRelative(interactedAt);
27
- }
28
-
22
+ const {
23
+ value,
24
+ unit
25
+ } = timeFromNow(interactedAt);
26
+ const timeAgo = intl.formatRelativeTime(value, unit);
29
27
  return React.createElement("div", {
30
28
  className: "bdl-PresenceAvatarTooltipContent"
31
29
  }, React.createElement("span", {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/features/presence/PresenceAvatarTooltipContent.tsx"],"names":["React","FormattedMessage","injectIntl","messages","determineInteractionMessage","PresenceAvatarTooltipContent","name","interactedAt","interactionType","intl","isActive","lastActionMessage","timeAgo","formatRelativeTime","Date","now","formatRelative","activeNowText","PresenceAvatarTooltipContentComponent"],"mappings":";;AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,gBAAT,EAA2BC,UAA3B,QAAoE,YAApE,C,CACA;;AACA,OAAOC,QAAP,MAAqB,YAArB,C,CACA;;AACA,SAASC,2BAAT,QAA4C,uBAA5C;AACA,OAAO,qCAAP;;AASA,SAASC,4BAAT,OAAmH;AAAA,MAA7E;AAAEC,IAAAA,IAAF;AAAQC,IAAAA,YAAR;AAAsBC,IAAAA,eAAtB;AAAuCC,IAAAA,IAAvC;AAA6CC,IAAAA;AAA7C,GAA6E;AAC/G,QAAMC,iBAAiB,GAAGP,2BAA2B,CAACI,eAAD,CAArD;AACA,MAAII,OAAJ;;AAEA,MAAIH,IAAI,CAACI,kBAAT,EAA6B;AACzBD,IAAAA,OAAO,GAAGH,IAAI,CAACI,kBAAL,CAAwBN,YAAY,GAAGO,IAAI,CAACC,GAAL,EAAvC,CAAV;AACH,GAFD,MAEO;AACH;AACAH,IAAAA,OAAO,GAAGH,IAAI,CAACO,cAAL,CAAoBT,YAApB,CAAV;AACH;;AAED,SACI;AAAK,IAAA,SAAS,EAAC;AAAf,KACI;AAAM,IAAA,SAAS,EAAC;AAAhB,KAAyDD,IAAzD,CADJ,EAEKK,iBAAiB,IACd;AAAM,IAAA,SAAS,EAAC;AAAhB,KACKD,QAAQ,GACL,oBAAC,gBAAD,EAAsBP,QAAQ,CAACc,aAA/B,CADK,GAGL,oBAAC,gBAAD,eACQN,iBADR;AAEI,IAAA,MAAM,EAAE;AACJC,MAAAA;AADI;AAFZ,KAJR,CAHR,CADJ;AAmBH;;AAED,SAASP,4BAA4B,IAAIa,qCAAzC;AAEA,eAAehB,UAAU,CAACG,4BAAD,CAAzB","sourcesContent":["import React from 'react';\nimport { FormattedMessage, injectIntl, WrappedComponentProps } from 'react-intl';\n// @ts-ignore flow import\nimport messages from './messages';\n// @ts-ignore flow import\nimport { determineInteractionMessage } from './utils/presenceUtils';\nimport './PresenceAvatarTooltipContent.scss';\n\nexport type Props = {\n name: string;\n interactedAt: number;\n interactionType: string;\n isActive?: boolean;\n} & WrappedComponentProps;\n\nfunction PresenceAvatarTooltipContent({ name, interactedAt, interactionType, intl, isActive }: Props): JSX.Element {\n const lastActionMessage = determineInteractionMessage(interactionType);\n let timeAgo;\n\n if (intl.formatRelativeTime) {\n timeAgo = intl.formatRelativeTime(interactedAt - Date.now());\n } else {\n // @ts-ignore: react-intl v2 backwards compatibility\n timeAgo = intl.formatRelative(interactedAt);\n }\n\n return (\n <div className=\"bdl-PresenceAvatarTooltipContent\">\n <span className=\"bdl-PresenceAvatarTooltipContent-name\">{name}</span>\n {lastActionMessage && (\n <span className=\"bdl-PresenceAvatarTooltipContent-event\">\n {isActive ? (\n <FormattedMessage {...messages.activeNowText} />\n ) : (\n <FormattedMessage\n {...lastActionMessage}\n values={{\n timeAgo,\n }}\n />\n )}\n </span>\n )}\n </div>\n );\n}\n\nexport { PresenceAvatarTooltipContent as PresenceAvatarTooltipContentComponent };\n\nexport default injectIntl(PresenceAvatarTooltipContent);\n"],"file":"PresenceAvatarTooltipContent.js"}
1
+ {"version":3,"sources":["../../../src/features/presence/PresenceAvatarTooltipContent.tsx"],"names":["React","FormattedMessage","injectIntl","messages","determineInteractionMessage","timeFromNow","PresenceAvatarTooltipContent","name","interactedAt","interactionType","intl","isActive","lastActionMessage","value","unit","timeAgo","formatRelativeTime","activeNowText","PresenceAvatarTooltipContentComponent"],"mappings":";;AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,gBAAT,EAA2BC,UAA3B,QAAoE,YAApE,C,CACA;;AACA,OAAOC,QAAP,MAAqB,YAArB,C,CACA;;AACA,SAASC,2BAAT,QAA4C,uBAA5C;AACA,OAAO,qCAAP,C,CACA;;AACA,OAAOC,WAAP,MAAwB,0BAAxB;;AASA,SAASC,4BAAT,OAAmH;AAAA,MAA7E;AAAEC,IAAAA,IAAF;AAAQC,IAAAA,YAAR;AAAsBC,IAAAA,eAAtB;AAAuCC,IAAAA,IAAvC;AAA6CC,IAAAA;AAA7C,GAA6E;AAC/G,QAAMC,iBAAiB,GAAGR,2BAA2B,CAACK,eAAD,CAArD;AACA,QAAM;AAAEI,IAAAA,KAAF;AAASC,IAAAA;AAAT,MAAkBT,WAAW,CAACG,YAAD,CAAnC;AACA,QAAMO,OAAO,GAAGL,IAAI,CAACM,kBAAL,CAAwBH,KAAxB,EAA+BC,IAA/B,CAAhB;AAEA,SACI;AAAK,IAAA,SAAS,EAAC;AAAf,KACI;AAAM,IAAA,SAAS,EAAC;AAAhB,KAAyDP,IAAzD,CADJ,EAEKK,iBAAiB,IACd;AAAM,IAAA,SAAS,EAAC;AAAhB,KACKD,QAAQ,GACL,oBAAC,gBAAD,EAAsBR,QAAQ,CAACc,aAA/B,CADK,GAGL,oBAAC,gBAAD,eACQL,iBADR;AAEI,IAAA,MAAM,EAAE;AACJG,MAAAA;AADI;AAFZ,KAJR,CAHR,CADJ;AAmBH;;AAED,SAAST,4BAA4B,IAAIY,qCAAzC;AAEA,eAAehB,UAAU,CAACI,4BAAD,CAAzB","sourcesContent":["import React from 'react';\nimport { FormattedMessage, injectIntl, WrappedComponentProps } from 'react-intl';\n// @ts-ignore flow import\nimport messages from './messages';\n// @ts-ignore flow import\nimport { determineInteractionMessage } from './utils/presenceUtils';\nimport './PresenceAvatarTooltipContent.scss';\n// @ts-ignore flow import\nimport timeFromNow from '../../utils/relativeTime';\n\nexport type Props = {\n name: string;\n interactedAt: number;\n interactionType: string;\n isActive?: boolean;\n} & WrappedComponentProps;\n\nfunction PresenceAvatarTooltipContent({ name, interactedAt, interactionType, intl, isActive }: Props): JSX.Element {\n const lastActionMessage = determineInteractionMessage(interactionType);\n const { value, unit } = timeFromNow(interactedAt);\n const timeAgo = intl.formatRelativeTime(value, unit as Intl.RelativeTimeFormatUnit);\n\n return (\n <div className=\"bdl-PresenceAvatarTooltipContent\">\n <span className=\"bdl-PresenceAvatarTooltipContent-name\">{name}</span>\n {lastActionMessage && (\n <span className=\"bdl-PresenceAvatarTooltipContent-event\">\n {isActive ? (\n <FormattedMessage {...messages.activeNowText} />\n ) : (\n <FormattedMessage\n {...lastActionMessage}\n values={{\n timeAgo,\n }}\n />\n )}\n </span>\n )}\n </div>\n );\n}\n\nexport { PresenceAvatarTooltipContent as PresenceAvatarTooltipContentComponent };\n\nexport default injectIntl(PresenceAvatarTooltipContent);\n"],"file":"PresenceAvatarTooltipContent.js"}
@@ -13,10 +13,15 @@ import Link from '../../components/link/LinkBase';
13
13
  import messages from './messages';
14
14
  import PresenceAvatar from './PresenceAvatar';
15
15
  import { determineInteractionMessage } from './utils/presenceUtils';
16
+ import timeFromNow from '../../utils/relativeTime';
16
17
  import './PresenceCollaborator.scss';
17
18
  export const renderTimestampMessage = (interactedAt, interactionType, intl) => {
18
19
  const lastActionMessage = determineInteractionMessage(interactionType, interactedAt);
19
- const timeAgo = intl.formatRelativeTime ? intl.formatRelativeTime(interactedAt - Date.now()) : intl.formatRelative(interactedAt);
20
+ const {
21
+ value,
22
+ unit
23
+ } = timeFromNow(interactedAt);
24
+ const timeAgo = intl.formatRelativeTime(value, unit);
20
25
 
21
26
  if (lastActionMessage) {
22
27
  return React.createElement(FormattedMessage, _extends({}, lastActionMessage, {
@@ -8,14 +8,14 @@ import Link from '../../components/link/LinkBase';
8
8
  import messages from './messages';
9
9
  import PresenceAvatar from './PresenceAvatar';
10
10
  import { determineInteractionMessage } from './utils/presenceUtils';
11
+ import timeFromNow from '../../utils/relativeTime';
11
12
 
12
13
  import './PresenceCollaborator.scss';
13
14
 
14
15
  export const renderTimestampMessage = (interactedAt, interactionType, intl) => {
15
16
  const lastActionMessage = determineInteractionMessage(interactionType, interactedAt);
16
- const timeAgo = intl.formatRelativeTime
17
- ? intl.formatRelativeTime(interactedAt - Date.now())
18
- : intl.formatRelative(interactedAt);
17
+ const { value, unit } = timeFromNow(interactedAt);
18
+ const timeAgo = intl.formatRelativeTime(value, unit);
19
19
 
20
20
  if (lastActionMessage) {
21
21
  return (
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/features/presence/PresenceCollaborator.js"],"names":["React","isEmpty","PropTypes","FormattedMessage","injectIntl","Avatar","Link","messages","PresenceAvatar","determineInteractionMessage","renderTimestampMessage","interactedAt","interactionType","intl","lastActionMessage","timeAgo","formatRelativeTime","Date","now","formatRelative","PresenceCollaborator","collaborator","isAnonymous","props","avatarUrl","id","isActive","name","profileUrl","activeNowText","propTypes","shape","string","oneOfType","number","bool","isRequired","any","PresenceCollaboratorComponent"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport isEmpty from 'lodash/isEmpty';\nimport PropTypes from 'prop-types';\nimport { FormattedMessage, injectIntl } from 'react-intl';\n\nimport Avatar from '../../components/avatar';\nimport Link from '../../components/link/LinkBase';\nimport messages from './messages';\nimport PresenceAvatar from './PresenceAvatar';\nimport { determineInteractionMessage } from './utils/presenceUtils';\n\nimport './PresenceCollaborator.scss';\n\nexport const renderTimestampMessage = (interactedAt, interactionType, intl) => {\n const lastActionMessage = determineInteractionMessage(interactionType, interactedAt);\n const timeAgo = intl.formatRelativeTime\n ? intl.formatRelativeTime(interactedAt - Date.now())\n : intl.formatRelative(interactedAt);\n\n if (lastActionMessage) {\n return (\n <FormattedMessage\n {...lastActionMessage}\n values={{\n timeAgo,\n }}\n />\n );\n }\n return null;\n};\n\nconst PresenceCollaborator = ({ collaborator, isAnonymous = false, intl, ...props }) => {\n const { avatarUrl, id, interactedAt, interactionType, isActive, name, profileUrl } = collaborator;\n\n return (\n <div className=\"bdl-PresenceCollaborator\" {...props}>\n {isAnonymous ? (\n <Avatar />\n ) : (\n <PresenceAvatar avatarUrl={avatarUrl} id={id} isActive={isActive} isDropDownAvatar name={name} />\n )}\n <div className=\"bdl-PresenceCollaborator-info-container\">\n <div className=\"bdl-PresenceCollaborator-info-name\" title={name}>\n {isEmpty(profileUrl) ? (\n <span>{name}</span>\n ) : (\n <Link href={profileUrl} target=\"_blank\">\n {name}\n </Link>\n )}\n </div>\n <div className=\"bdl-PresenceCollaborator-info-time\">\n {isActive ? (\n <FormattedMessage {...messages.activeNowText} />\n ) : (\n renderTimestampMessage(interactedAt, interactionType, intl)\n )}\n </div>\n </div>\n </div>\n );\n};\n\nPresenceCollaborator.propTypes = {\n collaborator: PropTypes.shape({\n /** Url to avatar image. If passed in, component will render the avatar image instead of the initials */\n avatarUrl: PropTypes.string,\n /** Users id */\n id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n isActive: PropTypes.bool,\n /** Unix timestamp of when the user last interacted with the document */\n interactedAt: PropTypes.number,\n /** The type of interaction by the user */\n interactionType: PropTypes.string,\n /** User's full name */\n name: PropTypes.string.isRequired,\n /** Custom Profile URL */\n profileUrl: PropTypes.string,\n }).isRequired,\n isAnonymous: PropTypes.bool,\n /* Intl object */\n intl: PropTypes.any,\n};\n\nexport { PresenceCollaborator as PresenceCollaboratorComponent };\nexport default injectIntl(PresenceCollaborator);\n"],"file":"PresenceCollaborator.js"}
1
+ {"version":3,"sources":["../../../src/features/presence/PresenceCollaborator.js"],"names":["React","isEmpty","PropTypes","FormattedMessage","injectIntl","Avatar","Link","messages","PresenceAvatar","determineInteractionMessage","timeFromNow","renderTimestampMessage","interactedAt","interactionType","intl","lastActionMessage","value","unit","timeAgo","formatRelativeTime","PresenceCollaborator","collaborator","isAnonymous","props","avatarUrl","id","isActive","name","profileUrl","activeNowText","propTypes","shape","string","oneOfType","number","bool","isRequired","any","PresenceCollaboratorComponent"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport isEmpty from 'lodash/isEmpty';\nimport PropTypes from 'prop-types';\nimport { FormattedMessage, injectIntl } from 'react-intl';\n\nimport Avatar from '../../components/avatar';\nimport Link from '../../components/link/LinkBase';\nimport messages from './messages';\nimport PresenceAvatar from './PresenceAvatar';\nimport { determineInteractionMessage } from './utils/presenceUtils';\nimport timeFromNow from '../../utils/relativeTime';\n\nimport './PresenceCollaborator.scss';\n\nexport const renderTimestampMessage = (interactedAt, interactionType, intl) => {\n const lastActionMessage = determineInteractionMessage(interactionType, interactedAt);\n const { value, unit } = timeFromNow(interactedAt);\n const timeAgo = intl.formatRelativeTime(value, unit);\n\n if (lastActionMessage) {\n return (\n <FormattedMessage\n {...lastActionMessage}\n values={{\n timeAgo,\n }}\n />\n );\n }\n return null;\n};\n\nconst PresenceCollaborator = ({ collaborator, isAnonymous = false, intl, ...props }) => {\n const { avatarUrl, id, interactedAt, interactionType, isActive, name, profileUrl } = collaborator;\n\n return (\n <div className=\"bdl-PresenceCollaborator\" {...props}>\n {isAnonymous ? (\n <Avatar />\n ) : (\n <PresenceAvatar avatarUrl={avatarUrl} id={id} isActive={isActive} isDropDownAvatar name={name} />\n )}\n <div className=\"bdl-PresenceCollaborator-info-container\">\n <div className=\"bdl-PresenceCollaborator-info-name\" title={name}>\n {isEmpty(profileUrl) ? (\n <span>{name}</span>\n ) : (\n <Link href={profileUrl} target=\"_blank\">\n {name}\n </Link>\n )}\n </div>\n <div className=\"bdl-PresenceCollaborator-info-time\">\n {isActive ? (\n <FormattedMessage {...messages.activeNowText} />\n ) : (\n renderTimestampMessage(interactedAt, interactionType, intl)\n )}\n </div>\n </div>\n </div>\n );\n};\n\nPresenceCollaborator.propTypes = {\n collaborator: PropTypes.shape({\n /** Url to avatar image. If passed in, component will render the avatar image instead of the initials */\n avatarUrl: PropTypes.string,\n /** Users id */\n id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n isActive: PropTypes.bool,\n /** Unix timestamp of when the user last interacted with the document */\n interactedAt: PropTypes.number,\n /** The type of interaction by the user */\n interactionType: PropTypes.string,\n /** User's full name */\n name: PropTypes.string.isRequired,\n /** Custom Profile URL */\n profileUrl: PropTypes.string,\n }).isRequired,\n isAnonymous: PropTypes.bool,\n /* Intl object */\n intl: PropTypes.any,\n};\n\nexport { PresenceCollaborator as PresenceCollaboratorComponent };\nexport default injectIntl(PresenceCollaborator);\n"],"file":"PresenceCollaborator.js"}
@@ -1,7 +1,7 @@
1
1
  /* @flow */
2
2
  import React from 'react';
3
3
  import { FormattedMessage, injectIntl } from 'react-intl';
4
- import type { InjectIntlProvidedProps } from 'react-intl';
4
+ import type { IntlShape } from 'react-intl';
5
5
 
6
6
  import TextInputWithCopyButton from '../../components/text-input-with-copy-button';
7
7
  import Tooltip from '../../components/tooltip';
@@ -27,6 +27,7 @@ type Props = {
27
27
  copyButtonProps?: Object,
28
28
  enterpriseName?: string,
29
29
  expiration?: number,
30
+ intl: IntlShape,
30
31
  isDownloadAllowed?: boolean,
31
32
  isEditAllowed?: boolean,
32
33
  isPreviewAllowed?: boolean,
@@ -39,7 +40,7 @@ type Props = {
39
40
  settingsButtonProps?: Object,
40
41
  sharedLink: string,
41
42
  submitting?: boolean,
42
- } & InjectIntlProvidedProps;
43
+ };
43
44
 
44
45
  const SharedLink = (props: Props) => {
45
46
  const {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/features/shared-link-modal/SharedLink.js"],"names":["React","FormattedMessage","injectIntl","TextInputWithCopyButton","Tooltip","PlainButton","convertToMs","IconExpirationInverted","IconSettingInverted","SharedLinkAccess","messages","accessLevelPropType","allowedAccessLevelsPropType","permissionLevelPropType","SharedLink","props","accessDropdownMenuProps","accessLevel","accessMenuButtonProps","allowedAccessLevels","canRemoveLink","changeAccessLevel","changePermissionLevel","copyButtonProps","enterpriseName","expiration","intl","isDownloadAllowed","isEditAllowed","isPreviewAllowed","itemType","onCopySuccess","onSettingsClick","permissionLevel","removeLink","removeLinkButtonProps","settingsButtonProps","sharedLink","submitting","sharedLinkExpirationTooltip","formatMessage","settingsButtonLabel","sharedLinkLabel","SharedLinkBase"],"mappings":"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","sourcesContent":["/* @flow */\nimport React from 'react';\nimport { FormattedMessage, injectIntl } from 'react-intl';\nimport type { InjectIntlProvidedProps } from 'react-intl';\n\nimport TextInputWithCopyButton from '../../components/text-input-with-copy-button';\nimport Tooltip from '../../components/tooltip';\nimport PlainButton from '../../components/plain-button';\nimport { convertToMs } from '../../utils/datetime';\nimport IconExpirationInverted from '../../icons/general/IconExpirationInverted';\nimport IconSettingInverted from '../../icons/general/IconSettingInverted';\n\nimport SharedLinkAccess from './SharedLinkAccess';\nimport messages from './messages';\nimport { accessLevelPropType, allowedAccessLevelsPropType, permissionLevelPropType } from './propTypes';\n\nimport './SharedLink.scss';\n\ntype Props = {\n accessDropdownMenuProps?: Object,\n accessLevel?: accessLevelPropType,\n accessMenuButtonProps?: Object,\n allowedAccessLevels?: allowedAccessLevelsPropType,\n canRemoveLink?: boolean,\n changeAccessLevel: Function,\n changePermissionLevel?: Function,\n copyButtonProps?: Object,\n enterpriseName?: string,\n expiration?: number,\n isDownloadAllowed?: boolean,\n isEditAllowed?: boolean,\n isPreviewAllowed?: boolean,\n itemType: string,\n onCopySuccess?: Function,\n onSettingsClick?: Function,\n permissionLevel?: permissionLevelPropType,\n removeLink: Function,\n removeLinkButtonProps?: Object,\n settingsButtonProps?: Object,\n sharedLink: string,\n submitting?: boolean,\n} & InjectIntlProvidedProps;\n\nconst SharedLink = (props: Props) => {\n const {\n accessDropdownMenuProps,\n accessLevel,\n accessMenuButtonProps,\n allowedAccessLevels,\n canRemoveLink,\n changeAccessLevel,\n changePermissionLevel,\n copyButtonProps,\n enterpriseName,\n expiration,\n intl,\n isDownloadAllowed,\n isEditAllowed,\n isPreviewAllowed,\n itemType,\n onCopySuccess,\n onSettingsClick,\n permissionLevel,\n removeLink,\n removeLinkButtonProps,\n settingsButtonProps = {},\n sharedLink,\n submitting,\n } = props;\n\n return (\n <div className=\"shared-link\">\n <div className=\"shared-link-icons\">\n {expiration ? (\n <Tooltip\n position=\"middle-left\"\n text={\n <FormattedMessage\n {...messages.sharedLinkExpirationTooltip}\n values={{\n expiration: convertToMs(expiration),\n }}\n />\n }\n >\n <span className=\"shared-link-expiration\">\n <IconExpirationInverted height={16} width={16} />\n </span>\n </Tooltip>\n ) : null}\n {onSettingsClick && (\n <PlainButton\n {...settingsButtonProps}\n aria-label={intl.formatMessage(messages.settingsButtonLabel)}\n className=\"shared-link-settings-btn\"\n onClick={onSettingsClick}\n type=\"button\"\n >\n <IconSettingInverted />\n </PlainButton>\n )}\n </div>\n <TextInputWithCopyButton\n buttonProps={copyButtonProps}\n className=\"shared-link-container\"\n disabled={submitting}\n label={<FormattedMessage {...messages.sharedLinkLabel} />}\n onCopySuccess={onCopySuccess}\n type=\"url\"\n value={sharedLink}\n />\n <SharedLinkAccess\n accessDropdownMenuProps={accessDropdownMenuProps}\n accessLevel={accessLevel}\n accessMenuButtonProps={accessMenuButtonProps}\n allowedAccessLevels={allowedAccessLevels}\n canRemoveLink={canRemoveLink}\n changeAccessLevel={changeAccessLevel}\n changePermissionLevel={changePermissionLevel}\n enterpriseName={enterpriseName}\n isDownloadAllowed={isDownloadAllowed}\n isEditAllowed={isEditAllowed}\n isPreviewAllowed={isPreviewAllowed}\n itemType={itemType}\n permissionLevel={permissionLevel}\n removeLink={removeLink}\n removeLinkButtonProps={removeLinkButtonProps}\n submitting={submitting}\n />\n </div>\n );\n};\n\nexport { SharedLink as SharedLinkBase };\nexport default injectIntl(SharedLink);\n"],"file":"SharedLink.js"}
1
+ {"version":3,"sources":["../../../src/features/shared-link-modal/SharedLink.js"],"names":["React","FormattedMessage","injectIntl","TextInputWithCopyButton","Tooltip","PlainButton","convertToMs","IconExpirationInverted","IconSettingInverted","SharedLinkAccess","messages","accessLevelPropType","allowedAccessLevelsPropType","permissionLevelPropType","SharedLink","props","accessDropdownMenuProps","accessLevel","accessMenuButtonProps","allowedAccessLevels","canRemoveLink","changeAccessLevel","changePermissionLevel","copyButtonProps","enterpriseName","expiration","intl","isDownloadAllowed","isEditAllowed","isPreviewAllowed","itemType","onCopySuccess","onSettingsClick","permissionLevel","removeLink","removeLinkButtonProps","settingsButtonProps","sharedLink","submitting","sharedLinkExpirationTooltip","formatMessage","settingsButtonLabel","sharedLinkLabel","SharedLinkBase"],"mappings":"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","sourcesContent":["/* @flow */\nimport React from 'react';\nimport { FormattedMessage, injectIntl } from 'react-intl';\nimport type { IntlShape } from 'react-intl';\n\nimport TextInputWithCopyButton from '../../components/text-input-with-copy-button';\nimport Tooltip from '../../components/tooltip';\nimport PlainButton from '../../components/plain-button';\nimport { convertToMs } from '../../utils/datetime';\nimport IconExpirationInverted from '../../icons/general/IconExpirationInverted';\nimport IconSettingInverted from '../../icons/general/IconSettingInverted';\n\nimport SharedLinkAccess from './SharedLinkAccess';\nimport messages from './messages';\nimport { accessLevelPropType, allowedAccessLevelsPropType, permissionLevelPropType } from './propTypes';\n\nimport './SharedLink.scss';\n\ntype Props = {\n accessDropdownMenuProps?: Object,\n accessLevel?: accessLevelPropType,\n accessMenuButtonProps?: Object,\n allowedAccessLevels?: allowedAccessLevelsPropType,\n canRemoveLink?: boolean,\n changeAccessLevel: Function,\n changePermissionLevel?: Function,\n copyButtonProps?: Object,\n enterpriseName?: string,\n expiration?: number,\n intl: IntlShape,\n isDownloadAllowed?: boolean,\n isEditAllowed?: boolean,\n isPreviewAllowed?: boolean,\n itemType: string,\n onCopySuccess?: Function,\n onSettingsClick?: Function,\n permissionLevel?: permissionLevelPropType,\n removeLink: Function,\n removeLinkButtonProps?: Object,\n settingsButtonProps?: Object,\n sharedLink: string,\n submitting?: boolean,\n};\n\nconst SharedLink = (props: Props) => {\n const {\n accessDropdownMenuProps,\n accessLevel,\n accessMenuButtonProps,\n allowedAccessLevels,\n canRemoveLink,\n changeAccessLevel,\n changePermissionLevel,\n copyButtonProps,\n enterpriseName,\n expiration,\n intl,\n isDownloadAllowed,\n isEditAllowed,\n isPreviewAllowed,\n itemType,\n onCopySuccess,\n onSettingsClick,\n permissionLevel,\n removeLink,\n removeLinkButtonProps,\n settingsButtonProps = {},\n sharedLink,\n submitting,\n } = props;\n\n return (\n <div className=\"shared-link\">\n <div className=\"shared-link-icons\">\n {expiration ? (\n <Tooltip\n position=\"middle-left\"\n text={\n <FormattedMessage\n {...messages.sharedLinkExpirationTooltip}\n values={{\n expiration: convertToMs(expiration),\n }}\n />\n }\n >\n <span className=\"shared-link-expiration\">\n <IconExpirationInverted height={16} width={16} />\n </span>\n </Tooltip>\n ) : null}\n {onSettingsClick && (\n <PlainButton\n {...settingsButtonProps}\n aria-label={intl.formatMessage(messages.settingsButtonLabel)}\n className=\"shared-link-settings-btn\"\n onClick={onSettingsClick}\n type=\"button\"\n >\n <IconSettingInverted />\n </PlainButton>\n )}\n </div>\n <TextInputWithCopyButton\n buttonProps={copyButtonProps}\n className=\"shared-link-container\"\n disabled={submitting}\n label={<FormattedMessage {...messages.sharedLinkLabel} />}\n onCopySuccess={onCopySuccess}\n type=\"url\"\n value={sharedLink}\n />\n <SharedLinkAccess\n accessDropdownMenuProps={accessDropdownMenuProps}\n accessLevel={accessLevel}\n accessMenuButtonProps={accessMenuButtonProps}\n allowedAccessLevels={allowedAccessLevels}\n canRemoveLink={canRemoveLink}\n changeAccessLevel={changeAccessLevel}\n changePermissionLevel={changePermissionLevel}\n enterpriseName={enterpriseName}\n isDownloadAllowed={isDownloadAllowed}\n isEditAllowed={isEditAllowed}\n isPreviewAllowed={isPreviewAllowed}\n itemType={itemType}\n permissionLevel={permissionLevel}\n removeLink={removeLink}\n removeLinkButtonProps={removeLinkButtonProps}\n submitting={submitting}\n />\n </div>\n );\n};\n\nexport { SharedLink as SharedLinkBase };\nexport default injectIntl(SharedLink);\n"],"file":"SharedLink.js"}
@@ -4,7 +4,7 @@ import * as React from 'react';
4
4
  import noop from 'lodash/noop';
5
5
  import getProp from 'lodash/get';
6
6
  import { FormattedMessage, injectIntl } from 'react-intl';
7
- import type { InjectIntlProvidedProps } from 'react-intl';
7
+ import type { IntlShape } from 'react-intl';
8
8
 
9
9
  import Tooltip from '../../components/tooltip';
10
10
  import PlainButton from '../../components/plain-button';
@@ -51,6 +51,7 @@ const restrictionNoticeMessageMap = {
51
51
  type Props = {
52
52
  collabRestrictionType?: CollabRestrictionType,
53
53
  error?: React.Node,
54
+ intl: IntlShape,
54
55
  isFetchingJustificationReasons?: boolean,
55
56
  isRestrictionJustificationEnabled?: boolean,
56
57
  justificationReasons: Array<SelectOptionProp>,
@@ -60,7 +61,7 @@ type Props = {
60
61
  restrictedGroups: Array<number>,
61
62
  selectedContacts: Array<Contact>,
62
63
  selectedJustificationReason: ?SelectOptionProp,
63
- } & InjectIntlProvidedProps;
64
+ };
64
65
 
65
66
  const ContactRestrictionNotice = ({
66
67
  collabRestrictionType = COLLAB_RESTRICTION_TYPE_ACCESS_POLICY,