cozy-ui 111.21.0 → 112.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (168) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/package.json +3 -2
  3. package/react/FileImageLoader/Readme.md +66 -3
  4. package/react/FileImageLoader/index.jsx +3 -3
  5. package/react/FileImageLoader/index.spec.jsx +1 -1
  6. package/react/hooks/useClientErrors.jsx +140 -0
  7. package/react/hooks/useClientErrors.spec.jsx +102 -0
  8. package/react/index.js +0 -1
  9. package/transpiled/react/FileImageLoader/index.js +3 -3
  10. package/transpiled/react/hooks/useClientErrors.js +167 -0
  11. package/transpiled/react/index.js +0 -1
  12. package/transpiled/react/stylesheet.css +1 -1
  13. package/react/Viewer/Footer/BottomSheetContent.jsx +0 -29
  14. package/react/Viewer/Footer/DownloadButton.jsx +0 -67
  15. package/react/Viewer/Footer/FooterActionButtons.jsx +0 -22
  16. package/react/Viewer/Footer/FooterActionButtons.spec.jsx +0 -30
  17. package/react/Viewer/Footer/FooterContent.jsx +0 -99
  18. package/react/Viewer/Footer/ForwardButton.jsx +0 -95
  19. package/react/Viewer/Footer/ForwardButton.spec.jsx +0 -87
  20. package/react/Viewer/Footer/ForwardOrDownloadButton.jsx +0 -24
  21. package/react/Viewer/Footer/Sharing.jsx +0 -60
  22. package/react/Viewer/Footer/helpers.js +0 -107
  23. package/react/Viewer/Footer/helpers.spec.js +0 -77
  24. package/react/Viewer/NoViewer/DownloadButton.jsx +0 -28
  25. package/react/Viewer/NoViewer/FileIcon.jsx +0 -46
  26. package/react/Viewer/NoViewer/NoViewer.jsx +0 -29
  27. package/react/Viewer/NoViewer/NoViewer.spec.jsx +0 -44
  28. package/react/Viewer/NoViewer/__snapshots__/NoViewer.spec.jsx.snap +0 -82
  29. package/react/Viewer/NoViewer/index.jsx +0 -1
  30. package/react/Viewer/Panel/ActionMenuDesktop.jsx +0 -66
  31. package/react/Viewer/Panel/ActionMenuMobile.jsx +0 -74
  32. package/react/Viewer/Panel/ActionMenuWrapper.jsx +0 -104
  33. package/react/Viewer/Panel/Certifications.jsx +0 -62
  34. package/react/Viewer/Panel/PanelContent.jsx +0 -49
  35. package/react/Viewer/Panel/Qualification.jsx +0 -114
  36. package/react/Viewer/Panel/QualificationListItemContact.jsx +0 -85
  37. package/react/Viewer/Panel/QualificationListItemDate.jsx +0 -77
  38. package/react/Viewer/Panel/QualificationListItemInformation.jsx +0 -68
  39. package/react/Viewer/Panel/QualificationListItemInformation.spec.jsx +0 -73
  40. package/react/Viewer/Panel/QualificationListItemOther.jsx +0 -61
  41. package/react/Viewer/Panel/QualificationListItemText.jsx +0 -30
  42. package/react/Viewer/Panel/getPanelBlocks.jsx +0 -56
  43. package/react/Viewer/Panel/getPanelBlocks.spec.jsx +0 -79
  44. package/react/Viewer/Panel/styles.styl +0 -13
  45. package/react/Viewer/Readme.md +0 -352
  46. package/react/Viewer/Viewer.jsx +0 -134
  47. package/react/Viewer/ViewerContainer.jsx +0 -169
  48. package/react/Viewer/ViewerExposer.js +0 -3
  49. package/react/Viewer/ViewerInformationsWrapper.jsx +0 -69
  50. package/react/Viewer/ViewerInformationsWrapper.spec.jsx +0 -63
  51. package/react/Viewer/ViewerWithCustomPanelAndFooter.jsx +0 -55
  52. package/react/Viewer/ViewersByFile/AudioViewer.jsx +0 -21
  53. package/react/Viewer/ViewersByFile/AudioViewer.spec.jsx +0 -39
  54. package/react/Viewer/ViewersByFile/BlankPaperViewer.jsx +0 -46
  55. package/react/Viewer/ViewersByFile/ImageViewer.jsx +0 -330
  56. package/react/Viewer/ViewersByFile/ImageViewer.spec.jsx +0 -70
  57. package/react/Viewer/ViewersByFile/NoNetworkViewer.jsx +0 -17
  58. package/react/Viewer/ViewersByFile/OnlyOfficeViewer.jsx +0 -28
  59. package/react/Viewer/ViewersByFile/PdfJsViewer.jsx +0 -210
  60. package/react/Viewer/ViewersByFile/PdfJsViewer.spec.jsx +0 -160
  61. package/react/Viewer/ViewersByFile/PdfMobileViewer.jsx +0 -106
  62. package/react/Viewer/ViewersByFile/PdfMobileViewer.spec.jsx +0 -76
  63. package/react/Viewer/ViewersByFile/ShortcutViewer.jsx +0 -38
  64. package/react/Viewer/ViewersByFile/ShortcutViewer.spec.jsx +0 -32
  65. package/react/Viewer/ViewersByFile/TextViewer.jsx +0 -126
  66. package/react/Viewer/ViewersByFile/TextViewer.spec.jsx +0 -118
  67. package/react/Viewer/ViewersByFile/VideoViewer.jsx +0 -13
  68. package/react/Viewer/ViewersByFile/VideoViewer.spec.jsx +0 -39
  69. package/react/Viewer/ViewersByFile/__snapshots__/AudioViewer.spec.jsx.snap +0 -43
  70. package/react/Viewer/ViewersByFile/__snapshots__/ShortcutViewer.spec.jsx.snap +0 -57
  71. package/react/Viewer/ViewersByFile/__snapshots__/TextViewer.spec.jsx.snap +0 -100
  72. package/react/Viewer/ViewersByFile/__snapshots__/VideoViewer.spec.jsx.snap +0 -19
  73. package/react/Viewer/ViewersByFile/styles.styl +0 -87
  74. package/react/Viewer/assets/IlluGenericNewPage.svg +0 -10
  75. package/react/Viewer/components/ExpirationAlert.jsx +0 -86
  76. package/react/Viewer/components/ExpirationAnnotation.jsx +0 -40
  77. package/react/Viewer/components/Footer.jsx +0 -13
  78. package/react/Viewer/components/InformationPanel.jsx +0 -26
  79. package/react/Viewer/components/Navigation.jsx +0 -39
  80. package/react/Viewer/components/PdfToolbarButton.jsx +0 -26
  81. package/react/Viewer/components/PrintButton.jsx +0 -90
  82. package/react/Viewer/components/Toolbar.jsx +0 -111
  83. package/react/Viewer/components/ToolbarButtons.jsx +0 -11
  84. package/react/Viewer/components/ToolbarFilePath.jsx +0 -61
  85. package/react/Viewer/components/ViewerByFile.jsx +0 -112
  86. package/react/Viewer/components/ViewerByFile.spec.jsx +0 -100
  87. package/react/Viewer/components/ViewerControls.jsx +0 -190
  88. package/react/Viewer/components/ViewerControls.spec.jsx +0 -54
  89. package/react/Viewer/components/ViewerSpinner.jsx +0 -17
  90. package/react/Viewer/components/styles.styl +0 -93
  91. package/react/Viewer/helpers.js +0 -131
  92. package/react/Viewer/helpers.spec.js +0 -136
  93. package/react/Viewer/hoc/withFileUrl.jsx +0 -93
  94. package/react/Viewer/hoc/withViewerLocales.jsx +0 -4
  95. package/react/Viewer/hooks/useReferencedContactName.jsx +0 -26
  96. package/react/Viewer/index.jsx +0 -12
  97. package/react/Viewer/locales/en.json +0 -66
  98. package/react/Viewer/locales/fr.json +0 -66
  99. package/react/Viewer/locales/index.js +0 -4
  100. package/react/Viewer/proptypes.js +0 -12
  101. package/react/Viewer/providers/ActionMenuProvider.jsx +0 -35
  102. package/react/Viewer/queries.js +0 -20
  103. package/react/Viewer/styles.styl +0 -22
  104. package/react/Viewer/vars.styl +0 -6
  105. package/transpiled/react/Viewer/Footer/BottomSheetContent.js +0 -28
  106. package/transpiled/react/Viewer/Footer/DownloadButton.js +0 -91
  107. package/transpiled/react/Viewer/Footer/FooterActionButtons.js +0 -21
  108. package/transpiled/react/Viewer/Footer/FooterContent.js +0 -98
  109. package/transpiled/react/Viewer/Footer/ForwardButton.js +0 -143
  110. package/transpiled/react/Viewer/Footer/ForwardOrDownloadButton.js +0 -25
  111. package/transpiled/react/Viewer/Footer/Sharing.js +0 -57
  112. package/transpiled/react/Viewer/Footer/helpers.js +0 -151
  113. package/transpiled/react/Viewer/NoViewer/DownloadButton.js +0 -34
  114. package/transpiled/react/Viewer/NoViewer/FileIcon.js +0 -57
  115. package/transpiled/react/Viewer/NoViewer/NoViewer.js +0 -49
  116. package/transpiled/react/Viewer/NoViewer/index.js +0 -1
  117. package/transpiled/react/Viewer/Panel/ActionMenuDesktop.js +0 -68
  118. package/transpiled/react/Viewer/Panel/ActionMenuMobile.js +0 -70
  119. package/transpiled/react/Viewer/Panel/ActionMenuWrapper.js +0 -129
  120. package/transpiled/react/Viewer/Panel/Certifications.js +0 -56
  121. package/transpiled/react/Viewer/Panel/PanelContent.js +0 -48
  122. package/transpiled/react/Viewer/Panel/Qualification.js +0 -119
  123. package/transpiled/react/Viewer/Panel/QualificationListItemContact.js +0 -96
  124. package/transpiled/react/Viewer/Panel/QualificationListItemDate.js +0 -64
  125. package/transpiled/react/Viewer/Panel/QualificationListItemInformation.js +0 -59
  126. package/transpiled/react/Viewer/Panel/QualificationListItemOther.js +0 -53
  127. package/transpiled/react/Viewer/Panel/QualificationListItemText.js +0 -29
  128. package/transpiled/react/Viewer/Panel/getPanelBlocks.js +0 -62
  129. package/transpiled/react/Viewer/Viewer.js +0 -172
  130. package/transpiled/react/Viewer/ViewerContainer.js +0 -189
  131. package/transpiled/react/Viewer/ViewerExposer.js +0 -2
  132. package/transpiled/react/Viewer/ViewerInformationsWrapper.js +0 -49
  133. package/transpiled/react/Viewer/ViewerWithCustomPanelAndFooter.js +0 -56
  134. package/transpiled/react/Viewer/ViewersByFile/AudioViewer.js +0 -41
  135. package/transpiled/react/Viewer/ViewersByFile/BlankPaperViewer.js +0 -74
  136. package/transpiled/react/Viewer/ViewersByFile/ImageViewer.js +0 -367
  137. package/transpiled/react/Viewer/ViewersByFile/NoNetworkViewer.js +0 -38
  138. package/transpiled/react/Viewer/ViewersByFile/OnlyOfficeViewer.js +0 -29
  139. package/transpiled/react/Viewer/ViewersByFile/PdfJsViewer.js +0 -254
  140. package/transpiled/react/Viewer/ViewersByFile/PdfMobileViewer.js +0 -153
  141. package/transpiled/react/Viewer/ViewersByFile/ShortcutViewer.js +0 -42
  142. package/transpiled/react/Viewer/ViewersByFile/TextViewer.js +0 -219
  143. package/transpiled/react/Viewer/ViewersByFile/VideoViewer.js +0 -33
  144. package/transpiled/react/Viewer/assets/IlluGenericNewPage.svg +0 -10
  145. package/transpiled/react/Viewer/components/ExpirationAlert.js +0 -100
  146. package/transpiled/react/Viewer/components/ExpirationAnnotation.js +0 -41
  147. package/transpiled/react/Viewer/components/Footer.js +0 -29
  148. package/transpiled/react/Viewer/components/InformationPanel.js +0 -23
  149. package/transpiled/react/Viewer/components/Navigation.js +0 -47
  150. package/transpiled/react/Viewer/components/PdfToolbarButton.js +0 -28
  151. package/transpiled/react/Viewer/components/PrintButton.js +0 -137
  152. package/transpiled/react/Viewer/components/Toolbar.js +0 -115
  153. package/transpiled/react/Viewer/components/ToolbarButtons.js +0 -9
  154. package/transpiled/react/Viewer/components/ToolbarFilePath.js +0 -71
  155. package/transpiled/react/Viewer/components/ViewerByFile.js +0 -105
  156. package/transpiled/react/Viewer/components/ViewerControls.js +0 -226
  157. package/transpiled/react/Viewer/components/ViewerSpinner.js +0 -17
  158. package/transpiled/react/Viewer/helpers.js +0 -147
  159. package/transpiled/react/Viewer/hoc/withFileUrl.js +0 -207
  160. package/transpiled/react/Viewer/hoc/withViewerLocales.js +0 -3
  161. package/transpiled/react/Viewer/hooks/useReferencedContactName.js +0 -32
  162. package/transpiled/react/Viewer/index.js +0 -11
  163. package/transpiled/react/Viewer/locales/index.js +0 -136
  164. package/transpiled/react/Viewer/proptypes.js +0 -14
  165. package/transpiled/react/Viewer/providers/ActionMenuProvider.js +0 -34
  166. package/transpiled/react/Viewer/queries.js +0 -26
  167. /package/react/{Viewer/providers/EncryptedProvider.jsx → providers/Encrypted/index.jsx} +0 -0
  168. /package/transpiled/react/{Viewer/providers/EncryptedProvider.js → providers/Encrypted/index.js} +0 -0
@@ -1,136 +0,0 @@
1
- import { createMockClient } from 'cozy-client'
2
- import {
3
- KNOWN_DATE_METADATA_NAMES,
4
- KNOWN_INFORMATION_METADATA_NAMES
5
- } from 'cozy-client/dist/models/paper'
6
-
7
- import {
8
- downloadFile,
9
- getCurrentModel,
10
- buildEditAttributePath,
11
- isEditableAttribute,
12
- removeFilenameFromPath
13
- } from './helpers'
14
-
15
- describe('helpers', () => {
16
- describe('download', () => {
17
- const client = new createMockClient({})
18
- const mockDownload = jest.fn()
19
- const mockForceFileDownload = jest.fn()
20
- client.collection = jest.fn(() => ({
21
- download: mockDownload,
22
- forceFileDownload: mockForceFileDownload
23
- }))
24
-
25
- it('should call download when file is not encrypted', async () => {
26
- const file = { name: 'toto.txt' }
27
-
28
- await downloadFile({ client, file })
29
- expect(mockDownload).toHaveBeenCalledWith(file)
30
- })
31
-
32
- it('should call forceFileDownload when file is encrypted', async () => {
33
- const file = { name: 'encrypted-toto.txt', encrypted: true }
34
- const url = 'blob:http://thedecryptedtoto'
35
- await downloadFile({ client, file, url })
36
- expect(mockForceFileDownload).toHaveBeenCalledWith(url, file.name)
37
- })
38
- })
39
- describe('getCurrentModel', () => {
40
- const expected = 'information'
41
- it.each([
42
- ...KNOWN_DATE_METADATA_NAMES,
43
- ...KNOWN_INFORMATION_METADATA_NAMES
44
- ])(`getCurrentModel(%s) should return ${expected}`, input => {
45
- expect(getCurrentModel(input)).toBe(expected)
46
- })
47
- })
48
- describe('buildEditAttributePath', () => {
49
- it('should build correct path', () => {
50
- const editPathByModelProps = {
51
- information: `#/paper/edit/information/01?metadata=__NAME__&backgroundPath=$/path`,
52
- page: `#/paper/edit/page/01?backgroundPath=/path`
53
- }
54
-
55
- const buildInformationPath = buildEditAttributePath(
56
- editPathByModelProps,
57
- 'information',
58
- 'number'
59
- )
60
- const buildPagePath = buildEditAttributePath(
61
- editPathByModelProps,
62
- 'page',
63
- 'number'
64
- )
65
-
66
- expect(buildInformationPath).toBe(
67
- '#/paper/edit/information/01?metadata=number&backgroundPath=$/path'
68
- )
69
- expect(buildPagePath).toBe('#/paper/edit/page/01?backgroundPath=/path')
70
- })
71
- })
72
- describe('isEditableAttribute', () => {
73
- const makeFile = ({ fromConnector } = {}) => ({
74
- _id: '00',
75
- name: 'file',
76
- cozyMetadata: fromConnector ? { sourceAccount: '123' } : {}
77
- })
78
- describe('file provided by a Connector', () => {
79
- it('"issueDate" should not be a editable attribute', () => {
80
- const issueDate = isEditableAttribute(
81
- 'issueDate',
82
- makeFile({ fromConnector: true })
83
- )
84
- expect(issueDate).toBe(false)
85
- })
86
- it('"number" should be an editable attribute', () => {
87
- const number = isEditableAttribute(
88
- 'number',
89
- makeFile({ fromConnector: true })
90
- )
91
- expect(number).toBe(true)
92
- })
93
- it('"datetime" should not be an editable attribute', () => {
94
- const datetime = isEditableAttribute('datetime', makeFile())
95
- expect(datetime).toBe(false)
96
- })
97
- it('"qualification" should not be an editable attribute', () => {
98
- const qualification = isEditableAttribute('qualification', makeFile())
99
- expect(qualification).toBe(false)
100
- })
101
- })
102
- describe('file NOT provided by a Connector', () => {
103
- it('"issueDate" should not be a editable attribute', () => {
104
- const issueDate = isEditableAttribute('issueDate', makeFile())
105
- expect(issueDate).toBe(true)
106
- })
107
- it('"number" should be a editable attribute', () => {
108
- const number = isEditableAttribute('number', makeFile())
109
- expect(number).toBe(true)
110
- })
111
- it('"datetime" should not be an editable attribute', () => {
112
- const datetime = isEditableAttribute('datetime', makeFile())
113
- expect(datetime).toBe(false)
114
- })
115
- it('"qualification" should not be an editable attribute', () => {
116
- const qualification = isEditableAttribute('qualification', makeFile())
117
- expect(qualification).toBe(false)
118
- })
119
- })
120
- })
121
- describe('removeFilenameFromPath', () => {
122
- it('should handle all types of path', () => {
123
- expect(removeFilenameFromPath('/folder/7IsD.gif', '7IsD.gif')).toBe(
124
- '/folder'
125
- )
126
-
127
- expect(removeFilenameFromPath('/7IsD.gif', '7IsD.gif')).toBe('/')
128
-
129
- expect(removeFilenameFromPath('//7IsD.gif', '7IsD.gif')).toBe('/')
130
-
131
- expect(removeFilenameFromPath('/7IsD.gif/7IsD.gif', '7IsD.gif')).toBe(
132
- '/7IsD.gif'
133
- )
134
- })
135
- })
136
- })
@@ -1,93 +0,0 @@
1
- import PropTypes from 'prop-types'
2
- import React, { Component } from 'react'
3
-
4
- import NoNetworkViewer from '../ViewersByFile/NoNetworkViewer'
5
- import ViewerSpinner from '../components/ViewerSpinner'
6
- import { isFileEncrypted } from '../helpers'
7
-
8
- const TTL = 6000
9
-
10
- const LOADING = 'LOADING'
11
- const LOADED = 'LOADED'
12
- const FAILED = 'FAILED'
13
-
14
- const withFileUrl = BaseComponent =>
15
- class withFileUrlClass extends Component {
16
- state = {
17
- status: LOADING,
18
- downloadUrl: null
19
- }
20
- static contextTypes = {
21
- client: PropTypes.object.isRequired
22
- }
23
- UNSAFE_componentWillMount() {
24
- this.loadDownloadUrl()
25
- }
26
-
27
- UNSAFE_componentWillReceiveProps(nextProps) {
28
- if (
29
- nextProps.file.id !== this.props.file.id ||
30
- nextProps.url !== this.props.url
31
- ) {
32
- this.reset()
33
- }
34
- }
35
-
36
- componentDidUpdate() {
37
- if (this.state.status === LOADING && !this.timeout) {
38
- this.loadDownloadUrl()
39
- }
40
- }
41
-
42
- async loadDownloadUrl() {
43
- const { file, url } = this.props
44
- this.timeout = setTimeout(
45
- () => this.setState(state => ({ ...state, status: FAILED })),
46
- TTL
47
- )
48
- try {
49
- if (isFileEncrypted(file)) {
50
- // The download link cannot be provided by the stack if the file is encrypted
51
- if (url) {
52
- this.clearTimeout()
53
- this.setState({ downloadUrl: url, status: LOADED })
54
- }
55
- return
56
- }
57
- const downloadUrl = await this.getDownloadLink(file)
58
- this.clearTimeout()
59
- this.setState({ downloadUrl, status: LOADED })
60
- } catch (err) {
61
- this.clearTimeout()
62
- this.setState(state => ({ ...state, status: FAILED }))
63
- }
64
- }
65
-
66
- getDownloadLink(file) {
67
- return this.context.client
68
- .collection('io.cozy.files')
69
- .getDownloadLinkById(file._id, file.name)
70
- }
71
-
72
- clearTimeout() {
73
- clearTimeout(this.timeout)
74
- this.timeout = null
75
- }
76
-
77
- reset = () => {
78
- this.clearTimeout()
79
- this.setState({ status: LOADING, downloadUrl: null })
80
- }
81
-
82
- render() {
83
- if (this.state.status === LOADING) {
84
- return <ViewerSpinner />
85
- }
86
- if (this.state.status === FAILED) {
87
- return <NoNetworkViewer onReload={this.reset} />
88
- }
89
- return <BaseComponent {...this.props} url={this.state.downloadUrl} />
90
- }
91
- }
92
-
93
- export default withFileUrl
@@ -1,4 +0,0 @@
1
- import withLocales from '../../providers/I18n/withLocales'
2
- import { locales } from '../locales'
3
-
4
- export const withViewerLocales = withLocales(locales)
@@ -1,26 +0,0 @@
1
- import { getReferencedBy, useQuery, isQueryLoading } from 'cozy-client'
2
-
3
- import { buildContactByIdsQuery } from '../queries'
4
-
5
- const useReferencedContactName = file => {
6
- const contactIds = getReferencedBy(file, 'io.cozy.contacts').map(
7
- ref => ref.id
8
- )
9
- const isContactByIdsQueryEnabled = contactIds.length > 0
10
-
11
- const contactByIdsQuery = buildContactByIdsQuery(contactIds)
12
- const { data: contacts, ...contactsQueryResult } = useQuery(
13
- contactByIdsQuery.definition,
14
- {
15
- ...contactByIdsQuery.options,
16
- enabled: isContactByIdsQueryEnabled
17
- }
18
- )
19
-
20
- const isLoadingContacts =
21
- isContactByIdsQueryEnabled &&
22
- (isQueryLoading(contactsQueryResult) || contactsQueryResult.hasMore)
23
-
24
- return { contacts, isLoadingContacts }
25
- }
26
- export default useReferencedContactName
@@ -1,12 +0,0 @@
1
- import ViewerContainer from './ViewerContainer'
2
-
3
- export { default as Viewer } from './Viewer'
4
- export { default as ViewerContainer } from './ViewerContainer'
5
- export * as toolbarPropsPropType from './proptypes'
6
- export { default as ViewerWithCustomPanelAndFooter } from './ViewerWithCustomPanelAndFooter'
7
- export { default as ToolbarButtons } from './components/ToolbarButtons'
8
- export { default as FooterActionButtons } from './Footer/FooterActionButtons'
9
- export { default as ForwardButton } from './Footer/ForwardButton'
10
- export { default as ForwardOrDownloadButton } from './Footer/ForwardOrDownloadButton'
11
-
12
- export default ViewerContainer
@@ -1,66 +0,0 @@
1
- {
2
- "Viewer": {
3
- "actions": {
4
- "download": "Download",
5
- "forward": "Send"
6
- },
7
- "alert": {
8
- "preparing": "Preparing your files…"
9
- },
10
- "close": "close",
11
- "download": "Download",
12
- "complete": "Complete the document",
13
- "noImage": "No image",
14
- "error": {
15
- "downloadFile": {
16
- "offline": "You should be connected to download this file"
17
- },
18
- "generic": "An error occurred when opening this file, please try again.",
19
- "missing": "This file is missing",
20
- "network": "This file could not be loaded. Do you have a working internet connection right now?"
21
- },
22
- "goto": "Go to %{url}",
23
- "next": "Next",
24
- "openWith": "Open with...",
25
- "openInOnlyOffice": "Open with Only Office",
26
- "panel": {
27
- "certifications": {
28
- "carbonCopy": {
29
- "title": "Carbon Copy",
30
- "caption": "Indicates whether the document is defined as \"authentic and original\" by Cozy Cloud, the host of your Cozy, as it can claim that it comes directly from a third-party service, without having undergone any modification."
31
- },
32
- "electronicSafe": {
33
- "title": "Electronic Safe",
34
- "caption": "Indicates whether the original document is secured by your personal digital safe with the certifications that give it probative value and a 50-year retention guarantee beyond its deposit."
35
- }
36
- },
37
- "qualification": {
38
- "actions": {
39
- "copy": "Copy",
40
- "copyClipboard": "Copy to clipboard",
41
- "edit": "Edit"
42
- }
43
- },
44
- "expiration": {
45
- "dismiss": "I understood"
46
- },
47
- "title": "Useful information"
48
- },
49
- "previous": "Previous",
50
- "retry": "Retry",
51
- "scaledown": "Zoom out",
52
- "scaleup": "Zoom in",
53
- "share": {
54
- "title": "Link to my document %{name}",
55
- "text": "Here is a link to my document %{name}: ",
56
- "error": "Problem with link recovery: %{error}",
57
- "success": "Your file has been shared with success"
58
- },
59
- "snackbar": {
60
- "copiedToClipboard": {
61
- "success": "Copied to clipboard",
62
- "error": "Cannot copy to clipboard"
63
- }
64
- }
65
- }
66
- }
@@ -1,66 +0,0 @@
1
- {
2
- "Viewer": {
3
- "actions": {
4
- "download": "Télécharger",
5
- "forward": "Envoyer"
6
- },
7
- "alert": {
8
- "preparing": "Preparation de vos fichiers…"
9
- },
10
- "close": "Fermer",
11
- "download": "Télécharger",
12
- "complete": "Compléter le document",
13
- "noImage": "Aucune image",
14
- "error": {
15
- "downloadFile": {
16
- "offline": "Vous devez être connecté pour télécharger ce fichier"
17
- },
18
- "generic": "Une erreur s'est produite lors de l'ouverture de ce fichier, veuillez réessayer.",
19
- "missing": "Le fichier est manquant",
20
- "network": "Ce fichier n'a pas pu être chargé. Avez-vous une connexion internet qui fonctionne actuellement ?"
21
- },
22
- "goto": "Ouvrir %{url}",
23
- "next": "Suivante",
24
- "openWith": "Ouvrir avec...",
25
- "openInOnlyOffice": "Ouvrir avec Only Office",
26
- "panel": {
27
- "certifications": {
28
- "carbonCopy": {
29
- "title": "Copie conforme",
30
- "caption": "Le document est défini \"authentique et original\" par Cozy Cloud, l'hébergeur de votre Cozy, car il peut affirmer qu'il provient directement des services de son émetteur sans avoir subi aucune modification."
31
- },
32
- "electronicSafe": {
33
- "title": "Coffre-fort électronique",
34
- "caption": "Indique si le document original est sécurisé par votre coffre-fort numérique personnel avec les certifications qui lui confèrent une valeur probante et une garantie de conservation de 50 ans au-delà de son dépôt."
35
- }
36
- },
37
- "qualification": {
38
- "actions": {
39
- "copy": "Copier",
40
- "copyClipboard": "Copier dans le presse-papier",
41
- "edit": "Modifier"
42
- }
43
- },
44
- "expiration": {
45
- "dismiss": "J'ai compris"
46
- },
47
- "title": "Informations utiles"
48
- },
49
- "previous": "Précédente",
50
- "retry": "Réessayer",
51
- "scaledown": "Zoom arrière",
52
- "scaleup": "Zoom avant",
53
- "share": {
54
- "title": "Lien vers mon document %{name}",
55
- "text": "Voici un lien vers mon document %{name} : ",
56
- "error": "Problème avec la récupération du lien : %{error}",
57
- "success": "Votre fichier a été partagé avec succès"
58
- },
59
- "snackbar": {
60
- "copiedToClipboard": {
61
- "success": "Copié dans le presse-papier",
62
- "error": "Impossible de copier dans le presse-papier"
63
- }
64
- }
65
- }
66
- }
@@ -1,4 +0,0 @@
1
- import en from './en.json'
2
- import fr from './fr.json'
3
-
4
- export const locales = { en, fr }
@@ -1,12 +0,0 @@
1
- import PropTypes from 'prop-types'
2
-
3
- export const toolbarPropsPropType = {
4
- /** Whether to show the toolbar or not. Note that the built-in close button is in the toolbar */
5
- showToolbar: PropTypes.bool,
6
- /** Whether to show close button in toolbar */
7
- showClose: PropTypes.bool,
8
- /** React reference of the toolbar node */
9
- toolbarRef: PropTypes.object,
10
- /** Whether to show file path below his name */
11
- showFilePath: PropTypes.bool
12
- }
@@ -1,35 +0,0 @@
1
- import React, { createContext, useContext } from 'react'
2
-
3
- /**
4
- * @typedef {object} useActionMenuContextReturn
5
- * @property {string} information
6
- * @property {string} page
7
- */
8
-
9
- const ActionMenuContext = createContext()
10
-
11
- const ActionMenuProvider = ({ children, editPathByModelProps = {} }) => {
12
- return (
13
- <ActionMenuContext.Provider value={editPathByModelProps}>
14
- {children}
15
- </ActionMenuContext.Provider>
16
- )
17
- }
18
-
19
- /**
20
- * @returns {useActionMenuContextReturn}
21
- */
22
- const useActionMenuContext = () => {
23
- const actionMenuContext = useContext(ActionMenuContext)
24
- if (!actionMenuContext) {
25
- throw new Error(
26
- 'ActionMenuContext must be used within a ActionMenuProvider'
27
- )
28
- }
29
-
30
- return actionMenuContext
31
- }
32
-
33
- export default useActionMenuContext
34
-
35
- export { ActionMenuProvider }
@@ -1,20 +0,0 @@
1
- import { Q, fetchPolicies } from 'cozy-client'
2
-
3
- const defaultFetchPolicy = fetchPolicies.olderThan(30 * 1000)
4
-
5
- export const buildContactByIdsQuery = (ids = []) => ({
6
- definition: () => Q('io.cozy.contacts').getByIds(ids),
7
- options: {
8
- as: `io.cozy.contacts/${ids.join('')}`,
9
- fetchPolicy: defaultFetchPolicy
10
- }
11
- })
12
-
13
- export const buildFileByIdQuery = fileId => ({
14
- definition: () => Q('io.cozy.files').getById(fileId),
15
- options: {
16
- as: `io.cozy.files/${fileId}`,
17
- fetchPolicy: defaultFetchPolicy,
18
- singleDocData: true
19
- }
20
- })
@@ -1,22 +0,0 @@
1
- @require 'settings/breakpoints.styl'
2
- @require './vars.styl'
3
-
4
- .viewer-wrapper
5
- position absolute
6
- left 0
7
- right 0
8
- top 0
9
- bottom 0
10
- z-index var(--zIndex-overlay)
11
- overflow hidden
12
- background var(--charcoalGrey)
13
- color var(--white)
14
- display flex
15
-
16
- .flagship-app &
17
- padding-top var(--flagship-top-height)
18
- padding-bottom var(--flagship-bottom-height)
19
-
20
- +medium-screen()
21
- color var(--primaryTextColor)
22
- background var(--paperBackgroundColor)
@@ -1,6 +0,0 @@
1
- $toolbarHeight = 4rem
2
- $toolbarHeightMedium = 3rem
3
- $footerHeight = 3.5rem
4
-
5
- $viewerHeightMedium = $toolbarHeightMedium + $footerHeight
6
- $viewerMarginTopMedium = $toolbarHeightMedium - $footerHeight
@@ -1,28 +0,0 @@
1
- import PropTypes from 'prop-types';
2
- import React from 'react';
3
- import { BottomSheetItem } from "cozy-ui/transpiled/react/BottomSheet";
4
- import getPanelBlocks, { getPanelBlocksSpecs } from "cozy-ui/transpiled/react/Viewer/Panel/getPanelBlocks";
5
-
6
- var BottomSheetContent = function BottomSheetContent(_ref) {
7
- var file = _ref.file,
8
- isPublic = _ref.isPublic;
9
- var panelBlocks = getPanelBlocks({
10
- panelBlocksSpecs: getPanelBlocksSpecs(isPublic),
11
- file: file
12
- });
13
- return panelBlocks.map(function (PanelBlock, index) {
14
- return /*#__PURE__*/React.createElement(BottomSheetItem, {
15
- key: index,
16
- disableGutters: true,
17
- disableElevation: index === panelBlocks.length - 1
18
- }, /*#__PURE__*/React.createElement(PanelBlock, {
19
- file: file
20
- }));
21
- });
22
- };
23
-
24
- BottomSheetContent.propTypes = {
25
- file: PropTypes.object.isRequired,
26
- isPublic: PropTypes.bool
27
- };
28
- export default BottomSheetContent;
@@ -1,91 +0,0 @@
1
- import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
- import _regeneratorRuntime from "@babel/runtime/regenerator";
3
- import PropTypes from 'prop-types';
4
- import React from 'react';
5
- import { useClient } from 'cozy-client';
6
- import Button from "cozy-ui/transpiled/react/Buttons";
7
- import Icon from "cozy-ui/transpiled/react/Icon";
8
- import IconButton from "cozy-ui/transpiled/react/IconButton";
9
- import DownloadIcon from "cozy-ui/transpiled/react/Icons/Download";
10
- import Alerter from "cozy-ui/transpiled/react/deprecated/Alerter";
11
- import { useI18n } from "cozy-ui/transpiled/react/providers/I18n";
12
-
13
- var DownloadButton = function DownloadButton(_ref) {
14
- var file = _ref.file,
15
- variant = _ref.variant;
16
- var client = useClient();
17
-
18
- var _useI18n = useI18n(),
19
- t = _useI18n.t;
20
-
21
- var icon = /*#__PURE__*/React.createElement(Icon, {
22
- icon: DownloadIcon
23
- });
24
- var label = t('Viewer.download');
25
-
26
- var handleClick = /*#__PURE__*/function () {
27
- var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
28
- return _regeneratorRuntime.wrap(function _callee$(_context) {
29
- while (1) {
30
- switch (_context.prev = _context.next) {
31
- case 0:
32
- _context.prev = 0;
33
- _context.next = 3;
34
- return client.collection('io.cozy.files').download(file);
35
-
36
- case 3:
37
- _context.next = 8;
38
- break;
39
-
40
- case 5:
41
- _context.prev = 5;
42
- _context.t0 = _context["catch"](0);
43
- Alerter.info('Viewer.error.generic');
44
-
45
- case 8:
46
- case "end":
47
- return _context.stop();
48
- }
49
- }
50
- }, _callee, null, [[0, 5]]);
51
- }));
52
-
53
- return function handleClick() {
54
- return _ref2.apply(this, arguments);
55
- };
56
- }();
57
-
58
- if (variant === 'iconButton') {
59
- return /*#__PURE__*/React.createElement(IconButton, {
60
- className: "u-white",
61
- "aria-label": label,
62
- onClick: handleClick
63
- }, icon);
64
- }
65
-
66
- if (variant === 'buttonIcon') {
67
- return /*#__PURE__*/React.createElement(Button, {
68
- variant: "secondary",
69
- label: icon,
70
- "aria-label": label,
71
- onClick: handleClick
72
- });
73
- }
74
-
75
- return /*#__PURE__*/React.createElement(Button, {
76
- fullWidth: true,
77
- variant: "secondary",
78
- startIcon: icon,
79
- label: label,
80
- onClick: handleClick
81
- });
82
- };
83
-
84
- DownloadButton.propTypes = {
85
- file: PropTypes.object,
86
- variant: PropTypes.oneOf(['default', 'iconButton', 'buttonIcon'])
87
- };
88
- DownloadButton.defaultProptypes = {
89
- variant: 'default'
90
- };
91
- export default DownloadButton;
@@ -1,21 +0,0 @@
1
- import PropTypes from 'prop-types';
2
- import { cloneElement } from 'react';
3
- import { mapToAllChildren } from "cozy-ui/transpiled/react/Viewer/Footer/helpers";
4
-
5
- var FooterActionButtons = function FooterActionButtons(_ref) {
6
- var children = _ref.children,
7
- file = _ref.file;
8
- if (!children) return null;
9
- return mapToAllChildren(children, function (child) {
10
- return /*#__PURE__*/cloneElement(child, {
11
- file: file
12
- });
13
- });
14
- };
15
-
16
- FooterActionButtons.displayName = 'FooterActionButtons';
17
- FooterActionButtons.propTypes = {
18
- children: PropTypes.oneOfType([PropTypes.node, PropTypes.arrayOf(PropTypes.node)]),
19
- file: PropTypes.object
20
- };
21
- export default FooterActionButtons;