cozy-viewer 26.5.1 → 26.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/dist/Panel/AI/AIAssistantPanel.js +8 -8
  3. package/dist/Panel/ActionMenuDesktop.js +3 -1
  4. package/dist/Panel/PanelContent.js +41 -2
  5. package/dist/Panel/Qualifications/QualificationListItemText.js +2 -2
  6. package/dist/Panel/Sharing.js +20 -6
  7. package/dist/Panel/Summary.js +89 -2
  8. package/dist/Panel/SummaryDialog.js +6 -3
  9. package/dist/Panel/getPanelBlocks.js +58 -7
  10. package/dist/Viewer.d.ts +1 -12
  11. package/dist/Viewer.js +23 -9
  12. package/dist/ViewerInformationsWrapper.js +10 -4
  13. package/dist/actions/expand.d.ts +14 -0
  14. package/dist/actions/expand.js +62 -0
  15. package/dist/actions/index.d.ts +2 -0
  16. package/dist/actions/index.js +21 -0
  17. package/dist/actions/shorter.d.ts +14 -0
  18. package/dist/actions/shorter.js +62 -0
  19. package/dist/components/Footer.js +1 -0
  20. package/dist/components/Navigation.js +1 -0
  21. package/dist/components/SummarizeByAIButton.js +3 -2
  22. package/dist/components/Toolbar.js +2 -1
  23. package/dist/components/ViewerControls.d.ts +1 -1
  24. package/dist/components/ViewerControls.js +7 -2
  25. package/dist/locales/index.js +36 -4
  26. package/dist/providers/ViewerProvider.js +8 -1
  27. package/dist/stylesheet.css +11 -2
  28. package/package.json +6 -6
  29. package/src/Panel/AI/AIAssistantPanel.jsx +34 -30
  30. package/src/Panel/AI/styles.styl +1 -1
  31. package/src/Panel/PanelContent.jsx +33 -1
  32. package/src/Panel/Qualifications/QualificationListItemText.jsx +3 -1
  33. package/src/Panel/Sharing.jsx +24 -5
  34. package/src/Panel/Summary.jsx +114 -26
  35. package/src/Panel/SummaryDialog.jsx +4 -2
  36. package/src/Panel/getPanelBlocks.jsx +61 -27
  37. package/src/Panel/styles.styl +5 -0
  38. package/src/Viewer.jsx +11 -2
  39. package/src/ViewerInformationsWrapper.jsx +14 -4
  40. package/src/actions/expand.js +38 -0
  41. package/src/actions/index.js +2 -0
  42. package/src/actions/shorter.js +38 -0
  43. package/src/components/SummarizeByAIButton.jsx +2 -2
  44. package/src/components/Toolbar.jsx +6 -1
  45. package/src/components/ViewerControls.jsx +7 -2
  46. package/src/components/styles.styl +4 -1
  47. package/src/locales/en.json +10 -2
  48. package/src/locales/fr.json +10 -2
  49. package/src/locales/ru.json +9 -1
  50. package/src/locales/vi.json +9 -1
  51. package/src/providers/ViewerProvider.jsx +4 -1
package/CHANGELOG.md CHANGED
@@ -3,6 +3,16 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [26.6.0](https://github.com/cozy/cozy-libs/compare/cozy-viewer@26.5.2...cozy-viewer@26.6.0) (2026-01-28)
7
+
8
+ ### Features
9
+
10
+ - Implement new UI of file viewer :sparkles: ([23ab4b2](https://github.com/cozy/cozy-libs/commit/23ab4b2c2859a8115d94dabbd30594fea00358e9))
11
+
12
+ ## [26.5.2](https://github.com/cozy/cozy-libs/compare/cozy-viewer@26.5.1...cozy-viewer@26.5.2) (2026-01-26)
13
+
14
+ **Note:** Version bump only for package cozy-viewer
15
+
6
16
  ## [26.5.1](https://github.com/cozy/cozy-libs/compare/cozy-viewer@26.5.0...cozy-viewer@26.5.1) (2026-01-16)
7
17
 
8
18
  ### Bug Fixes
@@ -364,17 +364,15 @@ var AIAssistantPanel = function AIAssistantPanel(_ref) {
364
364
  className: "u-flex u-flex-items-center u-flex-justify-between u-h-3 u-ph-1 u-flex-shrink-0"
365
365
  }, /*#__PURE__*/_react.default.createElement(_Typography.default, {
366
366
  variant: "h4"
367
- }, /*#__PURE__*/_react.default.createElement(_Icon.default, {
368
- icon: _Assistant.default
369
- }), " ", t('Viewer.ai.panelTitle')), /*#__PURE__*/_react.default.createElement(_IconButton.default, {
367
+ }, t('Viewer.ai.panelTitle')), /*#__PURE__*/_react.default.createElement(_IconButton.default, {
370
368
  "aria-label": "Close AI Assistant",
371
369
  onClick: handleClose
372
370
  }, /*#__PURE__*/_react.default.createElement(_Icon.default, {
373
371
  icon: _CrossMedium.default
374
372
  }))), !isLoading && /*#__PURE__*/_react.default.createElement(_Stack.default, {
375
373
  spacing: "s",
376
- className: "u-ph-1"
377
- }, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("div", {
374
+ className: "u-p-1"
375
+ }, /*#__PURE__*/_react.default.createElement("div", {
378
376
  className: "u-flex u-flex-items-center u-flex-justify-between u-mb-1"
379
377
  }, /*#__PURE__*/_react.default.createElement(_Typography.default, {
380
378
  variant: "subtitle1"
@@ -382,12 +380,14 @@ var AIAssistantPanel = function AIAssistantPanel(_ref) {
382
380
  className: "u-flex"
383
381
  }, /*#__PURE__*/_react.default.createElement(_IconButton.default, {
384
382
  size: "small",
385
- onClick: handleRefresh
383
+ onClick: handleRefresh,
384
+ "aria-label": "Refresh"
386
385
  }, /*#__PURE__*/_react.default.createElement(_Icon.default, {
387
386
  icon: _Refresh.default
388
387
  })), summary && /*#__PURE__*/_react.default.createElement(_IconButton.default, {
389
388
  size: "small",
390
- onClick: handleCopy
389
+ onClick: handleCopy,
390
+ "aria-label": "Copy"
391
391
  }, /*#__PURE__*/_react.default.createElement(_Icon.default, {
392
392
  icon: _Copy.default
393
393
  })))), /*#__PURE__*/_react.default.createElement(_Typography.default, {
@@ -399,7 +399,7 @@ var AIAssistantPanel = function AIAssistantPanel(_ref) {
399
399
  }, error) : summary), !isLoading && summary && /*#__PURE__*/_react.default.createElement(_Typography.default, {
400
400
  variant: "caption",
401
401
  color: "textSecondary"
402
- }, t('Viewer.ai.footerText'))))), isLoading ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
402
+ }, t('Viewer.ai.footerText')))), isLoading ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
403
403
  className: styles.loaderContainer
404
404
  }, /*#__PURE__*/_react.default.createElement("div", {
405
405
  className: styles.loaderBar
@@ -31,7 +31,9 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
31
31
 
32
32
  var styles = {
33
33
  "ActionMenuDesktop-ActionMenu": "styles__ActionMenuDesktop-ActionMenu___xxTwZ",
34
- "ActionMenuDesktop-ActionMenu-link-disabled": "styles__ActionMenuDesktop-ActionMenu-link-disabled___93DWz"
34
+ "ActionMenuDesktop-ActionMenu-link-disabled": "styles__ActionMenuDesktop-ActionMenu-link-disabled___93DWz",
35
+ "Summary": "styles__Summary___3hpX6",
36
+ "Summary-Header": "styles__Summary-Header___3Q0T6"
35
37
  };
36
38
  var ActionMenuDesktop = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
37
39
  var actions = _ref.actions,
@@ -11,10 +11,24 @@ var _classnames = _interopRequireDefault(require("classnames"));
11
11
 
12
12
  var _react = _interopRequireDefault(require("react"));
13
13
 
14
+ var _reactRouterDom = require("react-router-dom");
15
+
16
+ var _twakeI18n = require("twake-i18n");
17
+
18
+ var _cozyFlags = _interopRequireDefault(require("cozy-flags"));
19
+
20
+ var _Icon = _interopRequireDefault(require("cozy-ui/transpiled/react/Icon"));
21
+
22
+ var _IconButton = _interopRequireDefault(require("cozy-ui/transpiled/react/IconButton"));
23
+
24
+ var _CrossMedium = _interopRequireDefault(require("cozy-ui/transpiled/react/Icons/CrossMedium"));
25
+
14
26
  var _Paper = _interopRequireDefault(require("cozy-ui/transpiled/react/Paper"));
15
27
 
16
28
  var _Stack = _interopRequireDefault(require("cozy-ui/transpiled/react/Stack"));
17
29
 
30
+ var _Typography = _interopRequireDefault(require("cozy-ui/transpiled/react/Typography"));
31
+
18
32
  var _getPanelBlocks = _interopRequireWildcard(require("./getPanelBlocks"));
19
33
 
20
34
  var _withViewerLocales = require("../hoc/withViewerLocales");
@@ -30,16 +44,41 @@ var PanelContent = function PanelContent() {
30
44
  file = _useViewer.file,
31
45
  isPublic = _useViewer.isPublic,
32
46
  componentsProps = _useViewer.componentsProps,
33
- isReadOnly = _useViewer.isReadOnly;
47
+ isReadOnly = _useViewer.isReadOnly,
48
+ setIsOpenFileViewerPanel = _useViewer.setIsOpenFileViewerPanel;
49
+
50
+ var _useI18n = (0, _twakeI18n.useI18n)(),
51
+ t = _useI18n.t;
34
52
 
53
+ var navigate = (0, _reactRouterDom.useNavigate)();
35
54
  var panelBlocks = (0, _getPanelBlocks.default)({
36
55
  panelBlocksSpecs: (0, _getPanelBlocks.getPanelBlocksSpecs)(isPublic, componentsProps === null || componentsProps === void 0 ? void 0 : componentsProps.panel),
37
56
  file: file
38
57
  });
58
+
59
+ var closePanel = function closePanel() {
60
+ setIsOpenFileViewerPanel(false);
61
+ navigate('', {
62
+ state: {
63
+ showDetailPanel: false
64
+ }
65
+ });
66
+ };
67
+
39
68
  return /*#__PURE__*/_react.default.createElement(_Stack.default, {
40
69
  spacing: "s",
41
70
  className: (0, _classnames.default)('u-flex u-flex-column u-h-100')
42
- }, panelBlocks.map(function (PanelBlock, index) {
71
+ }, (0, _cozyFlags.default)('drive.new-file-viewer-ui.enabled') && /*#__PURE__*/_react.default.createElement(_Paper.default, {
72
+ square: true,
73
+ className: "u-flex u-flex-items-center u-flex-justify-between u-h-3 u-ph-1 u-flex-shrink-0"
74
+ }, /*#__PURE__*/_react.default.createElement(_Typography.default, {
75
+ variant: "h4"
76
+ }, t('Viewer.panel.header')), /*#__PURE__*/_react.default.createElement(_IconButton.default, {
77
+ "aria-label": t('Viewer.close'),
78
+ onClick: closePanel
79
+ }, /*#__PURE__*/_react.default.createElement(_Icon.default, {
80
+ icon: _CrossMedium.default
81
+ }))), panelBlocks.map(function (PanelBlock, index) {
43
82
  return /*#__PURE__*/_react.default.createElement(_Paper.default, {
44
83
  key: index,
45
84
  className: (0, _classnames.default)({
@@ -28,9 +28,9 @@ var QualificationListItemText = function QualificationListItemText(_ref) {
28
28
  props = (0, _objectWithoutProperties2.default)(_ref, _excluded);
29
29
  return /*#__PURE__*/_react.default.createElement(_ListItemText.default, (0, _extends2.default)({}, props, {
30
30
  disableTypography: true,
31
- primary: /*#__PURE__*/_react.default.createElement(_Typography.default, {
31
+ primary: primary ? /*#__PURE__*/_react.default.createElement(_Typography.default, {
32
32
  variant: "caption"
33
- }, primary),
33
+ }, primary) : null,
34
34
  secondary: /*#__PURE__*/_react.default.createElement(_Typography.default, {
35
35
  component: "div",
36
36
  variant: "body1",
@@ -11,8 +11,12 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
11
11
 
12
12
  var _react = _interopRequireDefault(require("react"));
13
13
 
14
+ var _cozyFlags = _interopRequireDefault(require("cozy-flags"));
15
+
14
16
  var _cozySharing = require("cozy-sharing");
15
17
 
18
+ var _Buttons = _interopRequireDefault(require("cozy-ui/transpiled/react/Buttons"));
19
+
16
20
  var _Icon = _interopRequireDefault(require("cozy-ui/transpiled/react/Icon"));
17
21
 
18
22
  var _Right = _interopRequireDefault(require("cozy-ui/transpiled/react/Icons/Right"));
@@ -51,13 +55,17 @@ var Sharing = function Sharing(_ref) {
51
55
 
52
56
  var _isOwner = isOwner(file._id);
53
57
 
58
+ var showModal = function showModal() {
59
+ if (!(0, _cozyFlags.default)('drive.new-file-viewer-ui.enabled')) {
60
+ setShowShareModal(true);
61
+ }
62
+ };
63
+
54
64
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_ListItem.default, {
55
65
  size: "large",
56
66
  divider: true,
57
- button: true,
58
- onClick: function onClick() {
59
- return setShowShareModal(true);
60
- }
67
+ button: !(0, _cozyFlags.default)('drive.new-file-viewer-ui.enabled'),
68
+ onClick: showModal
61
69
  }, /*#__PURE__*/_react.default.createElement(_ListItemText.default, {
62
70
  primary: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, t('Viewer.panel.sharing'), !allLoaded && /*#__PURE__*/_react.default.createElement(_Spinner.default, {
63
71
  className: "u-ml-half",
@@ -66,7 +74,7 @@ var Sharing = function Sharing(_ref) {
66
74
  primaryTypographyProps: {
67
75
  variant: 'h6'
68
76
  }
69
- }), /*#__PURE__*/_react.default.createElement(_ListItemIcon.default, null, /*#__PURE__*/_react.default.createElement(_Icon.default, {
77
+ }), !(0, _cozyFlags.default)('drive.new-file-viewer-ui.enabled') && /*#__PURE__*/_react.default.createElement(_ListItemIcon.default, null, /*#__PURE__*/_react.default.createElement(_Icon.default, {
70
78
  icon: _Right.default,
71
79
  color: "var(--secondaryTextColor)"
72
80
  }))), /*#__PURE__*/_react.default.createElement(_List.default, null, /*#__PURE__*/_react.default.createElement(_cozySharing.LinkRecipientLite, {
@@ -78,7 +86,13 @@ var Sharing = function Sharing(_ref) {
78
86
  recipient: recipient,
79
87
  isOwner: _isOwner
80
88
  });
81
- }) : /*#__PURE__*/_react.default.createElement(_cozySharing.OwnerRecipientDefaultLite, null)));
89
+ }) : /*#__PURE__*/_react.default.createElement(_cozySharing.OwnerRecipientDefaultLite, null), (0, _cozyFlags.default)('drive.new-file-viewer-ui.enabled') && /*#__PURE__*/_react.default.createElement(_ListItem.default, null, /*#__PURE__*/_react.default.createElement(_Buttons.default, {
90
+ variant: "secondary",
91
+ label: t('Viewer.panel.manage_access'),
92
+ onClick: function onClick() {
93
+ return setShowShareModal(true);
94
+ }
95
+ }))));
82
96
  };
83
97
 
84
98
  Sharing.propTypes = {
@@ -13,10 +13,20 @@ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/
13
13
 
14
14
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
15
15
 
16
+ var _classnames = _interopRequireDefault(require("classnames"));
17
+
16
18
  var _propTypes = _interopRequireDefault(require("prop-types"));
17
19
 
18
20
  var _react = _interopRequireWildcard(require("react"));
19
21
 
22
+ var _cozyFlags = _interopRequireDefault(require("cozy-flags"));
23
+
24
+ var _Accordion = _interopRequireDefault(require("cozy-ui/transpiled/react/Accordion"));
25
+
26
+ var _AccordionDetails = _interopRequireDefault(require("cozy-ui/transpiled/react/AccordionDetails"));
27
+
28
+ var _AccordionSummary = _interopRequireDefault(require("cozy-ui/transpiled/react/AccordionSummary"));
29
+
20
30
  var _ActionsMenu = _interopRequireDefault(require("cozy-ui/transpiled/react/ActionsMenu"));
21
31
 
22
32
  var _Actions = require("cozy-ui/transpiled/react/ActionsMenu/Actions");
@@ -27,6 +37,8 @@ var _Icon = _interopRequireDefault(require("cozy-ui/transpiled/react/Icon"));
27
37
 
28
38
  var _IconButton = _interopRequireDefault(require("cozy-ui/transpiled/react/IconButton"));
29
39
 
40
+ var _Bottom = _interopRequireDefault(require("cozy-ui/transpiled/react/Icons/Bottom"));
41
+
30
42
  var _Dots = _interopRequireDefault(require("cozy-ui/transpiled/react/Icons/Dots"));
31
43
 
32
44
  var _Right = _interopRequireDefault(require("cozy-ui/transpiled/react/Icons/Right"));
@@ -43,18 +55,29 @@ var _ListItemSecondaryAction = _interopRequireDefault(require("cozy-ui/transpile
43
55
 
44
56
  var _ListItemText = _interopRequireDefault(require("cozy-ui/transpiled/react/ListItemText"));
45
57
 
58
+ var _Typography = _interopRequireDefault(require("cozy-ui/transpiled/react/Typography"));
59
+
46
60
  var _Alert = require("cozy-ui/transpiled/react/providers/Alert");
47
61
 
48
62
  var _QualificationListItemText = _interopRequireDefault(require("./Qualifications/QualificationListItemText"));
49
63
 
50
64
  var _SummaryDialog = _interopRequireDefault(require("./SummaryDialog"));
51
65
 
66
+ var _actions = require("../actions");
67
+
52
68
  var _withViewerLocales = require("../hoc/withViewerLocales");
53
69
 
54
70
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
55
71
 
56
72
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
57
73
 
74
+ var styles = {
75
+ "ActionMenuDesktop-ActionMenu": "styles__ActionMenuDesktop-ActionMenu___xxTwZ",
76
+ "ActionMenuDesktop-ActionMenu-link-disabled": "styles__ActionMenuDesktop-ActionMenu-link-disabled___93DWz",
77
+ "Summary": "styles__Summary___3hpX6",
78
+ "Summary-Header": "styles__Summary-Header___3Q0T6"
79
+ };
80
+
58
81
  var Summary = function Summary(_ref) {
59
82
  var _file$metadata;
60
83
 
@@ -72,6 +95,11 @@ var Summary = function Summary(_ref) {
72
95
  showMenu = _useState4[0],
73
96
  setShowMenu = _useState4[1];
74
97
 
98
+ var _useState5 = (0, _react.useState)(false),
99
+ _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
100
+ isExpanded = _useState6[0],
101
+ setIsExpanded = _useState6[1];
102
+
75
103
  var anchorRef = (0, _react.useRef)();
76
104
 
77
105
  var _useAlert = (0, _Alert.useAlert)(),
@@ -79,7 +107,18 @@ var Summary = function Summary(_ref) {
79
107
 
80
108
  var label = t('Viewer.panel.summary');
81
109
  var value = (_file$metadata = file.metadata) === null || _file$metadata === void 0 ? void 0 : _file$metadata.description;
82
- var actions = (0, _Actions.makeActions)([_Actions.copyToClipboard, !isReadOnly && _Actions.editAttribute]);
110
+ var actions = (0, _Actions.makeActions)([_Actions.copyToClipboard, !isReadOnly && _Actions.editAttribute, (0, _cozyFlags.default)('drive.new-file-viewer-ui.enabled') && _Actions.divider, (0, _cozyFlags.default)('drive.new-file-viewer-ui.enabled') && _Actions.exportToText, (0, _cozyFlags.default)('drive.new-file-viewer-ui.enabled') && _Actions.divider, (0, _cozyFlags.default)('drive.new-file-viewer-ui.enabled') && _actions.shorter, (0, _cozyFlags.default)('drive.new-file-viewer-ui.enabled') && _actions.expand], {
111
+ t: t,
112
+ exportedText: value,
113
+ makeShorter: function makeShorter() {
114
+ return setIsExpanded(false);
115
+ },
116
+ makeLonger: function makeLonger() {
117
+ return setIsExpanded(true);
118
+ },
119
+ isExpanded: isExpanded,
120
+ file: file
121
+ });
83
122
 
84
123
  var handleClick = /*#__PURE__*/function () {
85
124
  var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
@@ -126,7 +165,55 @@ var Summary = function Summary(_ref) {
126
165
  };
127
166
  }();
128
167
 
129
- return /*#__PURE__*/_react.default.createElement(_List.default, null, /*#__PURE__*/_react.default.createElement(_ListItem.default, {
168
+ return /*#__PURE__*/_react.default.createElement(_List.default, null, (0, _cozyFlags.default)('drive.new-file-viewer-ui.enabled') ? /*#__PURE__*/_react.default.createElement(_ListItem.default, null, /*#__PURE__*/_react.default.createElement(_Accordion.default, {
169
+ elevation: 0,
170
+ className: (0, _classnames.default)('u-mb-0 u-bdw-0 u-w-100', styles.Summary),
171
+ expanded: isExpanded
172
+ }, /*#__PURE__*/_react.default.createElement(_AccordionSummary.default, {
173
+ className: (0, _classnames.default)('u-bg-transparent u-m-0', styles['Summary-Header']),
174
+ expandIcon: null
175
+ }, /*#__PURE__*/_react.default.createElement(_Typography.default, {
176
+ variant: "caption",
177
+ className: "u-mb-0"
178
+ }, label), value ? /*#__PURE__*/_react.default.createElement(_ListItemSecondaryAction.default, null, /*#__PURE__*/_react.default.createElement(_IconButton.default, {
179
+ "aria-label": t('Viewer.panel.more_menu'),
180
+ size: "small",
181
+ ref: anchorRef,
182
+ onClick: function onClick() {
183
+ return setShowMenu(function (v) {
184
+ return !v;
185
+ });
186
+ }
187
+ }, /*#__PURE__*/_react.default.createElement(_Icon.default, {
188
+ icon: _Dots.default
189
+ })), /*#__PURE__*/_react.default.createElement(_IconButton.default, {
190
+ "aria-label": t('Viewer.panel.collapse'),
191
+ size: "small",
192
+ onClick: function onClick() {
193
+ return setIsExpanded(function (v) {
194
+ return !v;
195
+ });
196
+ }
197
+ }, /*#__PURE__*/_react.default.createElement(_Icon.default, {
198
+ icon: _Bottom.default,
199
+ rotate: isExpanded ? 180 : 0
200
+ }))) : !isReadOnly && /*#__PURE__*/_react.default.createElement(_ListItemSecondaryAction.default, null, /*#__PURE__*/_react.default.createElement(_IconButton.default, {
201
+ size: "small",
202
+ onClick: function onClick() {
203
+ return setShowModal(true);
204
+ }
205
+ }, /*#__PURE__*/_react.default.createElement(_Icon.default, {
206
+ icon: _Right.default,
207
+ color: "var(--secondaryTextColor)"
208
+ })))), /*#__PURE__*/_react.default.createElement(_AccordionDetails.default, null, /*#__PURE__*/_react.default.createElement(_QualificationListItemText.default, {
209
+ className: "u-pv-1",
210
+ style: {
211
+ wordBreak: 'break-word'
212
+ },
213
+ secondary: value || label,
214
+ disabled: !value,
215
+ onClick: handleClick
216
+ })))) : /*#__PURE__*/_react.default.createElement(_ListItem.default, {
130
217
  button: !isReadOnly,
131
218
  onClick: handleClick
132
219
  }, /*#__PURE__*/_react.default.createElement(_ListItemIcon.default, null, /*#__PURE__*/_react.default.createElement(_Icon.default, {
@@ -21,6 +21,8 @@ var _react = _interopRequireWildcard(require("react"));
21
21
 
22
22
  var _cozyClient = require("cozy-client");
23
23
 
24
+ var _cozyFlags = _interopRequireDefault(require("cozy-flags"));
25
+
24
26
  var _Buttons = _interopRequireDefault(require("cozy-ui/transpiled/react/Buttons"));
25
27
 
26
28
  var _CozyDialogs = require("cozy-ui/transpiled/react/CozyDialogs");
@@ -86,11 +88,11 @@ var SummaryDialog = function SummaryDialog(_ref) {
86
88
 
87
89
  return /*#__PURE__*/_react.default.createElement(_CozyDialogs.ConfirmDialog, {
88
90
  open: true,
89
- title: t('Viewer.panel.summary'),
91
+ title: t('Viewer.panel.edit_summary'),
90
92
  content: /*#__PURE__*/_react.default.createElement(_TextField.default, {
91
93
  multiline: true,
92
94
  value: value,
93
- rows: 4,
95
+ rows: (0, _cozyFlags.default)('drive.new-file-viewer-ui.enabled') ? 10 : 4,
94
96
  autoFocus: true,
95
97
  fullWidth: true,
96
98
  required: true,
@@ -110,7 +112,8 @@ var SummaryDialog = function SummaryDialog(_ref) {
110
112
  busy: busy,
111
113
  onClick: handleSubmit
112
114
  })),
113
- onClose: onClose
115
+ onClose: onClose,
116
+ size: (0, _cozyFlags.default)('drive.new-file-viewer-ui.enabled') ? 'large' : 'medium'
114
117
  });
115
118
  };
116
119
 
@@ -9,6 +9,8 @@ exports.getPanelBlocksSpecs = exports.default = void 0;
9
9
 
10
10
  var _file = require("cozy-client/dist/models/file");
11
11
 
12
+ var _cozyFlags = _interopRequireDefault(require("cozy-flags"));
13
+
12
14
  var _KonnectorBlock = _interopRequireDefault(require("cozy-harvest-lib/dist/components/KonnectorBlock"));
13
15
 
14
16
  var _Antivirus = _interopRequireDefault(require("./Antivirus"));
@@ -39,7 +41,7 @@ var _Summary = _interopRequireDefault(require("./Summary"));
39
41
  var getPanelBlocksSpecs = function getPanelBlocksSpecs() {
40
42
  var isPublic = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
41
43
  var panelProps = arguments.length > 1 ? arguments[1] : undefined;
42
- return {
44
+ return (0, _cozyFlags.default)('drive.new-file-viewer-ui.enabled') ? {
43
45
  antivirus: {
44
46
  condition: function condition() {
45
47
  var _panelProps$antivirus;
@@ -48,13 +50,13 @@ var getPanelBlocksSpecs = function getPanelBlocksSpecs() {
48
50
  },
49
51
  component: _Antivirus.default
50
52
  },
51
- qualifications: {
53
+ sharing: {
52
54
  condition: function condition() {
53
- var _panelProps$qualifica;
55
+ var _panelProps$sharing;
54
56
 
55
- return !(panelProps !== null && panelProps !== void 0 && (_panelProps$qualifica = panelProps.qualifications) !== null && _panelProps$qualifica !== void 0 && _panelProps$qualifica.disabled);
57
+ return !(panelProps !== null && panelProps !== void 0 && (_panelProps$sharing = panelProps.sharing) !== null && _panelProps$sharing !== void 0 && _panelProps$sharing.disabled) && !isPublic;
56
58
  },
57
- component: _Qualification.default
59
+ component: _Sharing.default
58
60
  },
59
61
  summary: {
60
62
  condition: function condition() {
@@ -80,11 +82,60 @@ var getPanelBlocksSpecs = function getPanelBlocksSpecs() {
80
82
  },
81
83
  component: _Informations.default
82
84
  },
85
+ qualifications: {
86
+ condition: function condition() {
87
+ var _panelProps$qualifica;
88
+
89
+ return !(panelProps !== null && panelProps !== void 0 && (_panelProps$qualifica = panelProps.qualifications) !== null && _panelProps$qualifica !== void 0 && _panelProps$qualifica.disabled);
90
+ },
91
+ component: _Qualification.default
92
+ }
93
+ } : {
94
+ antivirus: {
95
+ condition: function condition() {
96
+ var _panelProps$antivirus2;
97
+
98
+ return !(panelProps !== null && panelProps !== void 0 && (_panelProps$antivirus2 = panelProps.antivirus) !== null && _panelProps$antivirus2 !== void 0 && _panelProps$antivirus2.disabled);
99
+ },
100
+ component: _Antivirus.default
101
+ },
102
+ qualifications: {
103
+ condition: function condition() {
104
+ var _panelProps$qualifica2;
105
+
106
+ return !(panelProps !== null && panelProps !== void 0 && (_panelProps$qualifica2 = panelProps.qualifications) !== null && _panelProps$qualifica2 !== void 0 && _panelProps$qualifica2.disabled);
107
+ },
108
+ component: _Qualification.default
109
+ },
110
+ summary: {
111
+ condition: function condition() {
112
+ var _panelProps$summary2;
113
+
114
+ return !(panelProps !== null && panelProps !== void 0 && (_panelProps$summary2 = panelProps.summary) !== null && _panelProps$summary2 !== void 0 && _panelProps$summary2.disabled);
115
+ },
116
+ component: _Summary.default
117
+ },
118
+ konnector: {
119
+ condition: function condition(file) {
120
+ var _panelProps$konnector2;
121
+
122
+ return !(panelProps !== null && panelProps !== void 0 && (_panelProps$konnector2 = panelProps.konnector) !== null && _panelProps$konnector2 !== void 0 && _panelProps$konnector2.disabled) && (0, _file.isFromKonnector)(file) && !isPublic;
123
+ },
124
+ component: _KonnectorBlock.default
125
+ },
126
+ informations: {
127
+ condition: function condition() {
128
+ var _panelProps$informati2;
129
+
130
+ return !(panelProps !== null && panelProps !== void 0 && (_panelProps$informati2 = panelProps.informations) !== null && _panelProps$informati2 !== void 0 && _panelProps$informati2.disabled);
131
+ },
132
+ component: _Informations.default
133
+ },
83
134
  sharing: {
84
135
  condition: function condition() {
85
- var _panelProps$sharing;
136
+ var _panelProps$sharing2;
86
137
 
87
- return !(panelProps !== null && panelProps !== void 0 && (_panelProps$sharing = panelProps.sharing) !== null && _panelProps$sharing !== void 0 && _panelProps$sharing.disabled) && !isPublic;
138
+ return !(panelProps !== null && panelProps !== void 0 && (_panelProps$sharing2 = panelProps.sharing) !== null && _panelProps$sharing2 !== void 0 && _panelProps$sharing2.disabled) && !isPublic;
88
139
  },
89
140
  component: _Sharing.default
90
141
  }
package/dist/Viewer.d.ts CHANGED
@@ -1,15 +1,5 @@
1
1
  export default Viewer;
2
- declare class Viewer extends React.Component<any, any, any> {
3
- constructor();
4
- componentDidMount(): void;
5
- componentWillUnmount(): void;
6
- onKeyUp: (e: any) => void;
7
- onNext: () => void;
8
- onPrevious: () => void;
9
- onClose: () => void;
10
- onChange(nextFile: any, nextIndex: any): void;
11
- render(): JSX.Element;
12
- }
2
+ declare function Viewer(props: any): JSX.Element;
13
3
  declare namespace Viewer {
14
4
  namespace propTypes {
15
5
  let hasNext: PropTypes.Requireable<boolean>;
@@ -37,5 +27,4 @@ declare namespace Viewer {
37
27
  }>>;
38
28
  }
39
29
  }
40
- import React from 'react';
41
30
  import PropTypes from 'prop-types';
package/dist/Viewer.js CHANGED
@@ -7,6 +7,8 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.default = void 0;
9
9
 
10
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
+
10
12
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
13
 
12
14
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
@@ -31,6 +33,8 @@ var _ViewerControls = _interopRequireDefault(require("./components/ViewerControl
31
33
 
32
34
  var _proptypes = require("./proptypes");
33
35
 
36
+ var _ViewerProvider = require("./providers/ViewerProvider");
37
+
34
38
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
35
39
 
36
40
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
@@ -47,15 +51,15 @@ var KEY_CODE_LEFT = 37;
47
51
  var KEY_CODE_RIGHT = 39;
48
52
  var KEY_CODE_ESCAPE = 27;
49
53
 
50
- var Viewer = /*#__PURE__*/function (_Component) {
51
- (0, _inherits2.default)(Viewer, _Component);
54
+ var ViewerClassComp = /*#__PURE__*/function (_Component) {
55
+ (0, _inherits2.default)(ViewerClassComp, _Component);
52
56
 
53
- var _super = _createSuper(Viewer);
57
+ var _super = _createSuper(ViewerClassComp);
54
58
 
55
- function Viewer() {
59
+ function ViewerClassComp() {
56
60
  var _this;
57
61
 
58
- (0, _classCallCheck2.default)(this, Viewer);
62
+ (0, _classCallCheck2.default)(this, ViewerClassComp);
59
63
  _this = _super.call(this);
60
64
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onKeyUp", function (e) {
61
65
  if (e.keyCode === KEY_CODE_LEFT) _this.onPrevious();else if (e.keyCode === KEY_CODE_RIGHT) _this.onNext();else if (e.keyCode === KEY_CODE_ESCAPE) _this.onClose();
@@ -96,7 +100,7 @@ var Viewer = /*#__PURE__*/function (_Component) {
96
100
  return _this;
97
101
  }
98
102
 
99
- (0, _createClass2.default)(Viewer, [{
103
+ (0, _createClass2.default)(ViewerClassComp, [{
100
104
  key: "componentDidMount",
101
105
  value: function componentDidMount() {
102
106
  document.addEventListener('keyup', this.onKeyUp, false);
@@ -124,7 +128,9 @@ var Viewer = /*#__PURE__*/function (_Component) {
124
128
  renderFallbackExtraContent = _this$props3.renderFallbackExtraContent,
125
129
  validForPanel = _this$props3.validForPanel,
126
130
  children = _this$props3.children,
127
- componentsProps = _this$props3.componentsProps;
131
+ componentsProps = _this$props3.componentsProps,
132
+ viewer = _this$props3.viewer;
133
+ var isOpenFileViewerPanel = viewer.isOpenFileViewerPanel;
128
134
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_ViewerControls.default, {
129
135
  hasPrevious: hasPrevious,
130
136
  hasNext: hasNext,
@@ -135,7 +141,8 @@ var Viewer = /*#__PURE__*/function (_Component) {
135
141
  showInfoPanel: validForPanel,
136
142
  onPrevious: this.onPrevious,
137
143
  onNext: this.onNext,
138
- onClose: this.onClose
144
+ onClose: this.onClose,
145
+ fullWidth: !isOpenFileViewerPanel
139
146
  }, children, /*#__PURE__*/_react.default.createElement(_ViewerByFile.default, {
140
147
  renderFallbackExtraContent: renderFallbackExtraContent,
141
148
  componentsProps: componentsProps,
@@ -143,9 +150,16 @@ var Viewer = /*#__PURE__*/function (_Component) {
143
150
  })));
144
151
  }
145
152
  }]);
146
- return Viewer;
153
+ return ViewerClassComp;
147
154
  }(_react.Component);
148
155
 
156
+ var Viewer = function Viewer(props) {
157
+ var viewer = (0, _ViewerProvider.useViewer)();
158
+ return /*#__PURE__*/_react.default.createElement(ViewerClassComp, (0, _extends2.default)({}, props, {
159
+ viewer: viewer
160
+ }));
161
+ };
162
+
149
163
  Viewer.propTypes = {
150
164
  hasNext: _propTypes.default.bool,
151
165
  hasPrevious: _propTypes.default.bool,
@@ -47,27 +47,33 @@ var ViewerInformationsWrapper = function ViewerInformationsWrapper(_ref) {
47
47
 
48
48
  var _useViewer = (0, _ViewerProvider.useViewer)(),
49
49
  isOpenAiAssistant = _useViewer.isOpenAiAssistant,
50
+ isOpenFileViewerPanel = _useViewer.isOpenFileViewerPanel,
51
+ setIsOpenFileViewerPanel = _useViewer.setIsOpenFileViewerPanel,
50
52
  setIsOpenAiAssistant = _useViewer.setIsOpenAiAssistant;
51
53
 
52
54
  var sidebar = document.querySelector('[class*="sidebar"]');
53
55
  var location = (0, _reactRouterDom.useLocation)();
54
56
  (0, _react.useEffect)(function () {
55
- var _location$state;
57
+ var _location$state, _location$state2;
56
58
 
57
59
  if (location !== null && location !== void 0 && (_location$state = location.state) !== null && _location$state !== void 0 && _location$state.showAIAssistant) {
58
60
  setIsOpenAiAssistant(true);
59
61
  }
60
- }, [location, setIsOpenAiAssistant]);
62
+
63
+ if (location !== null && location !== void 0 && (_location$state2 = location.state) !== null && _location$state2 !== void 0 && _location$state2.showDetailPanel) {
64
+ setIsOpenFileViewerPanel(true);
65
+ }
66
+ }, [location, setIsOpenAiAssistant, setIsOpenFileViewerPanel]);
61
67
  (0, _useSetFlagshipUI.useSetFlagshipUI)({
62
68
  bottomBackground: theme.palette.background.paper,
63
69
  bottomTheme: isLight ? 'dark' : 'light'
64
70
  }, {
65
71
  bottomBackground: theme.palette.background[sidebar ? 'default' : 'paper']
66
72
  });
67
- return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, isOpenAiAssistant ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, !disableFooter && /*#__PURE__*/_react.default.createElement(_Footer.default, null, /*#__PURE__*/_react.default.createElement(_FooterContent.default, {
73
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, isOpenAiAssistant && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, !disableFooter && /*#__PURE__*/_react.default.createElement(_Footer.default, null, /*#__PURE__*/_react.default.createElement(_FooterContent.default, {
68
74
  toolbarRef: toolbarRef,
69
75
  isDisplayChildrenDirectly: true
70
- }, /*#__PURE__*/_react.default.createElement(_AIAssistantPanel.default, null))), validForPanel && /*#__PURE__*/_react.default.createElement(_InformationPanel.default, null, /*#__PURE__*/_react.default.createElement(_AIAssistantPanel.default, null))) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, !disableFooter && /*#__PURE__*/_react.default.createElement(_Footer.default, null, /*#__PURE__*/_react.default.createElement(_FooterContent.default, {
76
+ }, /*#__PURE__*/_react.default.createElement(_AIAssistantPanel.default, null))), validForPanel && /*#__PURE__*/_react.default.createElement(_InformationPanel.default, null, /*#__PURE__*/_react.default.createElement(_AIAssistantPanel.default, null))), isOpenFileViewerPanel && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, !disableFooter && /*#__PURE__*/_react.default.createElement(_Footer.default, null, /*#__PURE__*/_react.default.createElement(_FooterContent.default, {
71
77
  toolbarRef: toolbarRef
72
78
  }, children)), validForPanel && /*#__PURE__*/_react.default.createElement(_InformationPanel.default, null, /*#__PURE__*/_react.default.createElement(_PanelContent.default, null))));
73
79
  };