@seafile/seafile-database 0.0.23 → 0.0.25

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 (103) hide show
  1. package/dist/api/api.js +19 -21
  2. package/dist/assets/css/dropdown-menu.css +96 -0
  3. package/dist/assets/css/file-repo.css +3 -0
  4. package/dist/common/components/file-tag/index.js +2 -2
  5. package/dist/common/components/modal-portal.js +12 -0
  6. package/dist/common/utils/icon-utils.js +9 -2
  7. package/dist/common/utils/utils.js +28 -0
  8. package/dist/components/cell-editors/index.js +2 -2
  9. package/dist/components/cell-editors/multiple-select-editor/index.js +2 -2
  10. package/dist/components/cell-editors/single-select-editor/index.js +2 -2
  11. package/dist/components/cell-editors/tags-editor/index.js +1 -2
  12. package/dist/components/cell-formatter/creator.js +3 -2
  13. package/dist/components/context-menu/index.js +2 -2
  14. package/dist/components/data-process-setter/filter-setter.js +2 -3
  15. package/dist/components/data-process-setter/hide-column-setter.js +1 -1
  16. package/dist/components/data-process-setter/index.js +7 -0
  17. package/dist/components/data-process-setter/manage-setter.js +1 -2
  18. package/dist/components/data-process-setter/settings-setter.js +119 -0
  19. package/dist/components/data-process-setter/sort-setter.js +2 -2
  20. package/dist/components/data-process-setter/view-type-setter.js +53 -0
  21. package/dist/components/dialogs/custom-modal-header/index.css +34 -0
  22. package/dist/components/dialogs/custom-modal-header/index.js +34 -0
  23. package/dist/components/dialogs/insert-view-dialog.js +104 -0
  24. package/dist/components/hover-menu/index.css +85 -0
  25. package/dist/components/hover-menu/index.js +107 -0
  26. package/dist/components/icons/arrow-down-icon.js +19 -0
  27. package/dist/components/icons/arrow-right-icon.js +29 -0
  28. package/dist/components/icons/arrow-up-icon.js +19 -0
  29. package/dist/components/icons/card-icon.js +28 -0
  30. package/dist/components/icons/close-icon.js +23 -0
  31. package/dist/components/icons/index.js +23 -1
  32. package/dist/components/icons/set-up-icon.js +22 -0
  33. package/dist/components/icons/table-icon.js +19 -0
  34. package/dist/components/image-previewer/_hooks/metadata-details.js +1 -1
  35. package/dist/components/image-previewer/_hooks/metadata-status.js +2 -2
  36. package/dist/components/image-previewer/image-detail/index.js +1 -1
  37. package/dist/components/image-previewer/index.js +2 -2
  38. package/dist/components/popover/groupbys-popover/index.js +5 -5
  39. package/dist/components/popover/index.js +7 -0
  40. package/dist/components/popover/settings-popover/field-display-settings/field-item.js +110 -0
  41. package/dist/components/popover/settings-popover/field-display-settings/index.css +135 -0
  42. package/dist/components/popover/settings-popover/field-display-settings/index.js +119 -0
  43. package/dist/components/popover/settings-popover/index.css +52 -0
  44. package/dist/components/popover/settings-popover/index.js +99 -0
  45. package/dist/components/popover/sort-popover/index.js +1 -1
  46. package/dist/components/popover/view-type-popover/index.css +51 -0
  47. package/dist/components/popover/view-type-popover/index.js +64 -0
  48. package/dist/components/searcher/index.js +3 -3
  49. package/dist/components/view-toolbar/card-view-toolbar/index.js +89 -0
  50. package/dist/components/view-toolbar/index.css +54 -1
  51. package/dist/components/view-toolbar/index.js +40 -48
  52. package/dist/components/view-toolbar/rows-toolbar/index.js +2 -2
  53. package/dist/components/view-toolbar/table-view-toolbar/index.js +1 -1
  54. package/dist/components/view-toolbar/view-items/index.css +55 -0
  55. package/dist/components/view-toolbar/view-items/index.js +98 -0
  56. package/dist/components/view-toolbar/view-items/views-popover.js +80 -0
  57. package/dist/constants/event-bus-type.js +3 -1
  58. package/dist/constants/view/index.js +44 -2
  59. package/dist/context.js +60 -35
  60. package/dist/file-view-base.js +43 -0
  61. package/dist/file-view.js +151 -0
  62. package/dist/global-settings.js +3 -1
  63. package/dist/hooks/collaborators.js +9 -3
  64. package/dist/hooks/file-view-context.js +95 -0
  65. package/dist/hooks/index.js +14 -14
  66. package/dist/hooks/metadata.js +51 -47
  67. package/dist/hooks/tagsData.js +8 -2
  68. package/dist/hooks/view-context.js +69 -0
  69. package/dist/index.js +3 -3
  70. package/dist/locale/en.js +11 -1
  71. package/dist/locale/zh_CN.js +6 -1
  72. package/dist/store/data-processor.js +1 -0
  73. package/dist/store/index.js +8 -6
  74. package/dist/store/operations/apply.js +1 -1
  75. package/dist/store/server-operator.js +20 -7
  76. package/dist/views/card/card-items/card-item/formatter.js +45 -0
  77. package/dist/views/card/card-items/card-item/index.css +234 -0
  78. package/dist/views/card/card-items/card-item/index.js +206 -0
  79. package/dist/views/card/card-items/index.css +31 -0
  80. package/dist/views/card/card-items/index.js +189 -0
  81. package/dist/views/card/context-menu/index.js +165 -0
  82. package/dist/views/card/index.js +64 -0
  83. package/dist/views/card/settings/index.css +68 -0
  84. package/dist/views/card/settings/index.js +143 -0
  85. package/dist/views/index.js +5 -3
  86. package/dist/views/table/editors/editor-container/index.js +2 -2
  87. package/dist/views/table/formatters/file-name.js +3 -3
  88. package/dist/views/table/index.js +2 -3
  89. package/dist/views/table/table-main/index.js +2 -2
  90. package/dist/views/table/table-main/rows/row/cell/formatter.js +2 -2
  91. package/dist/views/table/table-main/rows/row/cell/index.js +2 -2
  92. package/dist/views/table/table-main/rows-header/cell/dropdown-menu/index.js +1 -1
  93. package/dist/views/table/table-main/rows-header/cell/index.js +1 -1
  94. package/dist/views/table/table-main/rows-header/index.js +2 -2
  95. package/package.json +4 -3
  96. package/dist/components/view-toolbar/views/all-views/index.css +0 -85
  97. package/dist/components/view-toolbar/views/all-views/index.js +0 -165
  98. package/dist/components/view-toolbar/views/index.css +0 -22
  99. package/dist/components/view-toolbar/views/index.js +0 -215
  100. package/dist/components/view-toolbar/views/view-item/index.css +0 -83
  101. package/dist/components/view-toolbar/views/view-item/index.js +0 -159
  102. package/dist/database.js +0 -53
  103. package/dist/hooks/viewsData.js +0 -114
package/dist/api/api.js CHANGED
@@ -10,6 +10,10 @@ var _axios = _interopRequireDefault(require("axios"));
10
10
  class SeafileAPI {
11
11
  constructor() {
12
12
  var _this = this;
13
+ (0, _defineProperty2.default)(this, "getFileRepoInfo", (wikiId, fileViewId) => {
14
+ const url = this.server + '/api/v2.1/wiki2/' + wikiId + '/file-views/' + fileViewId + '/';
15
+ return this.req.get(url);
16
+ });
13
17
  (0, _defineProperty2.default)(this, "getCollaborators", repoID => {
14
18
  const url = this.server + '/api/v2.1/repos/' + repoID + '/related-users/';
15
19
  return this.req.get(url);
@@ -160,43 +164,33 @@ class SeafileAPI {
160
164
  });
161
165
  });
162
166
  }
163
- getRepoInfo(repoID) {
167
+ getRepo(repoID) {
164
168
  const url = this.server + '/api/v2.1/repos/' + repoID + '/';
165
169
  return this.req.get(url);
166
170
  }
167
- getMetadataStatus(repoID) {
168
- const url = this.server + '/api/v2.1/repos/' + repoID + '/metadata/';
171
+ getMetadata(params) {
172
+ const {
173
+ wiki_id: wikiId,
174
+ file_view_id: fileViewId
175
+ } = params;
176
+ const url = this.server + '/api/v2.1/wiki2/' + wikiId + '/file-view/' + fileViewId + '/records';
169
177
  return this.req.get(url);
170
178
  }
171
179
  getView(view_data) {
172
180
  const {
173
181
  wiki_id: wikiId,
174
- view_id: viewId
182
+ file_view_id: fileViewId
175
183
  } = view_data;
176
- const url = this.server + '/api/v2.1/wiki2/' + wikiId + '/views/' + viewId + '/';
184
+ const url = this.server + '/api/v2.1/wiki2/' + wikiId + '/file-views/' + fileViewId + '/';
177
185
  return this.req.get(url);
178
186
  }
179
- modifyView(wikiId, viewId, viewData) {
180
- const url = this.server + '/api/v2.1/wiki2/' + wikiId + '/views/';
187
+ modifyView(wikiId, fileViewId, viewData) {
188
+ const url = this.server + '/api/v2.1/wiki2/' + wikiId + '/file-views/' + fileViewId + '/';
181
189
  const data = {
182
- view_id: viewId,
183
190
  view_data: viewData
184
191
  };
185
192
  return this.req.put(url, data);
186
193
  }
187
- getMetadata(params) {
188
- const {
189
- view_data
190
- } = params;
191
- const {
192
- wiki_id: wikiId,
193
- view_id: viewId
194
- } = view_data;
195
- const url = this.server + '/api/v2.1/wiki2/' + wikiId + '/views/' + viewId + '/records/';
196
- return this.req.get(url, {
197
- params: params
198
- });
199
- }
200
194
  rotateImage(repoID, path, angle) {
201
195
  let url = `${this.server}/api/v2.1/repos/${repoID}/image-rotate/`;
202
196
  let form = new FormData();
@@ -300,5 +294,9 @@ class SeafileAPI {
300
294
  }
301
295
  return this.req.put(url, data);
302
296
  }
297
+ getMetadataStatus(repoID) {
298
+ const url = this.server + '/api/v2.1/repos/' + repoID + '/metadata/';
299
+ return this.req.get(url);
300
+ }
303
301
  }
304
302
  var _default = exports.default = SeafileAPI;
@@ -0,0 +1,96 @@
1
+ .sea-database-dropdown-menu,
2
+ .sea-database-dropdown-menu .sea-database-dropdown-menu-container {
3
+ min-width: 12rem;
4
+ padding: 8px 0;
5
+ }
6
+
7
+ .sea-database-dropdown-menu .sea-database-dropdown-menu-divider {
8
+ width: 100%;
9
+ height: 0;
10
+ margin: 0.5rem 0;
11
+ overflow: hidden;
12
+ border-top: 1px solid #e9ecef;
13
+ }
14
+
15
+ .sea-database-dropdown-menu .sea-database-dropdown-menu-item {
16
+ height: 30px;
17
+ width: 100%;
18
+ padding: 4px 24px;
19
+ user-select: none;
20
+ display: flex;
21
+ align-items: center;
22
+ }
23
+
24
+ .sea-database-dropdown-menu .sea-database-dropdown-menu-item-title {
25
+ color: #666;
26
+ padding: 3px 12px;
27
+ }
28
+
29
+ .sea-database-dropdown-menu .sea-database-dropdown-menu-item-title:hover {
30
+ background-color: unset !important;
31
+ cursor: initial !important;
32
+ }
33
+
34
+ .sea-database-dropdown-menu .sea-database-dropdown-menu-item-no-results {
35
+ height: 30px;
36
+ width: 100%;
37
+ padding: 4px 24px;
38
+ user-select: none;
39
+ display: flex;
40
+ align-items: center;
41
+ font-size: 14px;
42
+ }
43
+
44
+ .sea-database-dropdown-menu .sea-database-dropdown-menu-item-hidden {
45
+ display: none;
46
+ }
47
+
48
+ .sea-database-dropdown-menu .sea-database-dropdown-menu-item.disabled,
49
+ .sea-database-dropdown-menu .sea-database-dropdown-menu-item.disabled .sea-database-dropdown-item-content-icon {
50
+ color: #c2c2c2 !important;
51
+ }
52
+
53
+ .sea-database-dropdown-menu .sea-database-dropdown-menu-item:hover {
54
+ background-color: #F5F5F5;
55
+ cursor: pointer;
56
+ }
57
+
58
+ .sea-database-dropdown-menu .sea-database-dropdown-menu-item.disabled:hover {
59
+ background-color: unset;
60
+ cursor: default;
61
+ color: #c2c2c2;
62
+ }
63
+
64
+ .sea-database-dropdown-menu .sea-database-dropdown-menu-item .sea-database-dropdown-item-content {
65
+ display: flex;
66
+ align-items: center;
67
+ flex: 1;
68
+ font-size: 14px;
69
+ }
70
+
71
+ .sea-database-dropdown-menu .sea-database-dropdown-item-content .sea-database-dropdown-item-content-icon {
72
+ margin-right: 10px;
73
+ }
74
+
75
+ .sea-database-dropdown-menu .sea-database-arrow-right {
76
+ color: #666;
77
+ font-size: 12px !important;
78
+ }
79
+
80
+ .sea-database-dropdown-menu .sea-database-dropdown-item-with-left-icon {
81
+ min-height: 32px;
82
+ padding: 3px 12px;
83
+ }
84
+
85
+ .sea-database-dropdown-menu .sea-database-check-mark {
86
+ color: #666;
87
+ }
88
+
89
+ /* sub menu */
90
+ .sea-database-sub-dropdown-menu .popover {
91
+ left: -8px !important;
92
+ }
93
+
94
+ .sea-database-sub-dropdown-menu .bs-popover-auto[x-placement^="left"] {
95
+ left: 8px !important;
96
+ }
@@ -0,0 +1,3 @@
1
+ .sdoc-file-repo-base-container {
2
+ position: relative;
3
+ }
@@ -10,7 +10,7 @@ var _react = _interopRequireWildcard(require("react"));
10
10
  var _classnames = _interopRequireDefault(require("classnames"));
11
11
  var _uuid = require("uuid");
12
12
  var _utils = require("../../utils/utils");
13
- var _appContext = require("../../../hooks/app-context");
13
+ var _hooks = require("../../../hooks");
14
14
  var _translate = _interopRequireDefault(require("../../../lang/translate"));
15
15
  var _fileTagList = _interopRequireDefault(require("./file-tag-list"));
16
16
  var _editFiletagPopover = _interopRequireDefault(require("./popover/edit-filetag-popover"));
@@ -26,7 +26,7 @@ const FileTag = _ref => {
26
26
  } = _ref;
27
27
  const {
28
28
  context
29
- } = (0, _appContext.useAppContext)();
29
+ } = (0, _hooks.useFileViewContext)();
30
30
  const [isEditFileTagShow, setEditFileTagShow] = (0, _react.useState)(false);
31
31
  const direntPath = (0, _react.useMemo)(() => (0, _utils2.getDirentPath)(dirent, path), [dirent, path]);
32
32
  const tagListTitleID = (0, _react.useMemo)(() => `detail-list-view-tags-${(0, _uuid.v4)()}`, []);
@@ -16,6 +16,18 @@ class ModalPortal extends _react.default.Component {
16
16
  componentDidMount() {
17
17
  modalRoot.appendChild(this.el);
18
18
  }
19
+ componentDidUpdate() {
20
+ const {
21
+ className,
22
+ style
23
+ } = this.props;
24
+ if (className) {
25
+ this.el.className = className;
26
+ }
27
+ if (style) {
28
+ this.el.style = style;
29
+ }
30
+ }
19
31
  componentWillUnmount() {
20
32
  modalRoot.removeChild(this.el);
21
33
  }
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.getFolderIconUrl = exports.getFileIconUrl = exports.getDirentIcon = void 0;
7
+ exports.getFolderIconUrl = exports.getFileIconUrl = exports.getFileIconName = exports.getDirentIcon = void 0;
8
8
  var _css = _interopRequireDefault(require("../../assets/imgs/256/files/css.png"));
9
9
  var _draw = _interopRequireDefault(require("../../assets/imgs/256/files/draw.png"));
10
10
  var _excel = _interopRequireDefault(require("../../assets/imgs/256/files/excel.png"));
@@ -119,4 +119,11 @@ const getDirentIcon = (dirent, isBig) => {
119
119
  return getFolderIconUrl(readonly, size, dirent.has_been_shared_out);
120
120
  }
121
121
  };
122
- exports.getDirentIcon = getDirentIcon;
122
+ exports.getDirentIcon = getDirentIcon;
123
+ const getFileIconName = function (fileName) {
124
+ if (fileName.lastIndexOf('.') === -1) return FILEEXT_ICON_MAP['default'];
125
+ const file_ext = fileName.substr(fileName.lastIndexOf('.') + 1).toLowerCase();
126
+ if (FILEEXT_ICON_MAP[file_ext]) return FILEEXT_ICON_MAP[file_ext];
127
+ return FILEEXT_ICON_MAP['default'];
128
+ };
129
+ exports.getFileIconName = getFileIconName;
@@ -328,6 +328,34 @@ const Utils = exports.Utils = {
328
328
  const image_exts = ['gif', 'jpeg', 'jpg', 'png', 'ico', 'bmp', 'tif', 'tiff', 'jfif', 'heic', 'webp', 'svg'];
329
329
  return image_exts.includes(file_ext);
330
330
  },
331
+ pdfCheck: function (filename) {
332
+ if (filename.lastIndexOf('.') === -1) {
333
+ return false;
334
+ }
335
+ const file_ext = filename.substr(filename.lastIndexOf('.') + 1).toLowerCase();
336
+ return file_ext === 'pdf';
337
+ },
338
+ // check if a file is a video
339
+ videoCheck: function (filename) {
340
+ // no file ext
341
+ if (filename.lastIndexOf('.') == -1) {
342
+ return false;
343
+ }
344
+ const file_ext = filename.substr(filename.lastIndexOf('.') + 1).toLowerCase();
345
+ return ['mp4', 'ogv', 'webm', 'mov', 'm4v', 'mkv'].includes(file_ext);
346
+ },
347
+ isEditableSdocFile: function (filename, enableSeadoc) {
348
+ // no file ext
349
+ if (filename.lastIndexOf('.') === -1) {
350
+ return false;
351
+ }
352
+ const file_ext = filename.substr(filename.lastIndexOf('.') + 1).toLowerCase();
353
+ if (enableSeadoc && file_ext === 'sdoc') {
354
+ return true;
355
+ } else {
356
+ return false;
357
+ }
358
+ },
331
359
  isMarkdownFile: function (filePath) {
332
360
  let index = filePath.lastIndexOf('.');
333
361
  if (index === -1) {
@@ -7,7 +7,7 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.default = void 0;
8
8
  var _react = _interopRequireDefault(require("react"));
9
9
  var _constants = require("../../constants");
10
- var _appContext = require("../../hooks/app-context");
10
+ var _hooks = require("../../hooks");
11
11
  var _collaboratorEditor = _interopRequireDefault(require("./collaborator-editor"));
12
12
  var _dateEditor = _interopRequireDefault(require("./date-editor"));
13
13
  var _fileNameEditor = _interopRequireDefault(require("./file-name-editor"));
@@ -22,7 +22,7 @@ var _typeEditor = _interopRequireDefault(require("./type-editor"));
22
22
  const Editor = /*#__PURE__*/_react.default.forwardRef((props, ref) => {
23
23
  const {
24
24
  context
25
- } = (0, _appContext.useAppContext)();
25
+ } = (0, _hooks.useFileViewContext)();
26
26
  switch (props.column.type) {
27
27
  case _constants.CellType.TEXT:
28
28
  {
@@ -12,7 +12,7 @@ var _components = require("../../../common/components");
12
12
  var _typeDetection = require("../../../common/utils/type-detection");
13
13
  var _icons = _interopRequireDefault(require("../../icons"));
14
14
  var _keyCodes = require("../../../constants/keyCodes");
15
- var _appContext = require("../../../hooks/app-context");
15
+ var _hooks = require("../../../hooks");
16
16
  var _translate = _interopRequireDefault(require("../../../lang/translate"));
17
17
  var _column = require("../../../utils/column");
18
18
  var _deleteOptions = _interopRequireDefault(require("./delete-options"));
@@ -32,7 +32,7 @@ const MultipleSelectEditor = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) =>
32
32
  } = _ref;
33
33
  const {
34
34
  context
35
- } = (0, _appContext.useAppContext)();
35
+ } = (0, _hooks.useFileViewContext)();
36
36
  const [value, setValue] = (0, _react.useState)((0, _column.getColumnOptionIdsByNames)(column, oldValue));
37
37
  const [searchValue, setSearchValue] = (0, _react.useState)('');
38
38
  const [highlightIndex, setHighlightIndex] = (0, _react.useState)(-1);
@@ -8,7 +8,7 @@ Object.defineProperty(exports, "__esModule", {
8
8
  exports.default = void 0;
9
9
  var _react = _interopRequireWildcard(require("react"));
10
10
  var _main = _interopRequireDefault(require("../../../common/components/option-editor/main"));
11
- var _appContext = require("../../../hooks/app-context");
11
+ var _hooks = require("../../../hooks");
12
12
  var _translate = _interopRequireDefault(require("../../../lang/translate"));
13
13
  var _cell = require("../../../utils/cell");
14
14
  var _column = require("../../../utils/column");
@@ -30,7 +30,7 @@ const SingleSelectEditor = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
30
30
  } = _ref;
31
31
  const {
32
32
  context
33
- } = (0, _appContext.useAppContext)();
33
+ } = (0, _hooks.useFileViewContext)();
34
34
  const editorRef = (0, _react.useRef)(null);
35
35
  const mainRef = (0, _react.useRef)(null);
36
36
  const canEditData = context.canModifyColumnData(column);
@@ -10,7 +10,6 @@ var _react = _interopRequireWildcard(require("react"));
10
10
  var _main = _interopRequireDefault(require("../../../common/components/option-editor/main"));
11
11
  var _constants = require("../../../constants");
12
12
  var _hooks = require("../../../hooks");
13
- var _appContext = require("../../../hooks/app-context");
14
13
  var _translate = _interopRequireDefault(require("../../../lang/translate"));
15
14
  require("./index.css");
16
15
  const TagsEditor = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
@@ -27,7 +26,7 @@ const TagsEditor = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
27
26
  } = _ref;
28
27
  const {
29
28
  context
30
- } = (0, _appContext.useAppContext)();
29
+ } = (0, _hooks.useFileViewContext)();
31
30
  const {
32
31
  tagsData,
33
32
  createTag
@@ -8,12 +8,12 @@ Object.defineProperty(exports, "__esModule", {
8
8
  exports.default = void 0;
9
9
  var _react = _interopRequireWildcard(require("react"));
10
10
  var _classnames = _interopRequireDefault(require("classnames"));
11
+ var _globalSettings = _interopRequireDefault(require("../../global-settings"));
11
12
  var _validate = require("../../utils/validate");
12
13
  var _collaborator = _interopRequireDefault(require("./collaborator"));
13
14
  const CreatorFormatter = _ref => {
14
15
  let {
15
16
  value,
16
- mediaUrl,
17
17
  className,
18
18
  api,
19
19
  collaborators = [],
@@ -33,6 +33,7 @@ const CreatorFormatter = _ref => {
33
33
  isMounted && setCollaborator(collaborator);
34
34
  return () => isMounted = false;
35
35
  }
36
+ const mediaUrl = _globalSettings.default.getSetting('mediaUrl');
36
37
  const defaultAvatarUrl = `${mediaUrl}/avatars/default.png`;
37
38
  if (value === 'anonymous') {
38
39
  collaborator = {
@@ -65,7 +66,7 @@ const CreatorFormatter = _ref => {
65
66
  isMounted && setCollaborator(collaborator);
66
67
  });
67
68
  return () => isMounted = false;
68
- }, [value, api, mediaUrl, collaborators, collaboratorsCache, updateCollaboratorsCache]);
69
+ }, [value, api, collaborators, collaboratorsCache, updateCollaboratorsCache]);
69
70
  if (!collaborator) return emptyFormatter || null;
70
71
  return /*#__PURE__*/_react.default.createElement("div", {
71
72
  className: (0, _classnames.default)('sea-metadata-ui cell-formatter-container creator-formatter', className)
@@ -9,7 +9,7 @@ var _react = _interopRequireWildcard(require("react"));
9
9
  var _reactstrap = require("reactstrap");
10
10
  var _components = require("../../common/components");
11
11
  var _dom = require("../../common/utils/dom");
12
- var _appContext = require("../../hooks/app-context");
12
+ var _hooks = require("../../hooks");
13
13
  require("./index.css");
14
14
  const ContextMenu = _ref => {
15
15
  let {
@@ -20,7 +20,7 @@ const ContextMenu = _ref => {
20
20
  } = _ref;
21
21
  const {
22
22
  context
23
- } = (0, _appContext.useAppContext)();
23
+ } = (0, _hooks.useFileViewContext)();
24
24
  const menuRef = (0, _react.useRef)(null);
25
25
  const [visible, setVisible] = (0, _react.useState)(false);
26
26
  const [position, setPosition] = (0, _react.useState)({
@@ -12,7 +12,6 @@ var _deepCopy = _interopRequireDefault(require("deep-copy"));
12
12
  var _hotkey = require("../../common/utils/hotkey");
13
13
  var _typeDetection = require("../../common/utils/type-detection");
14
14
  var _hooks = require("../../hooks");
15
- var _appContext = require("../../hooks/app-context");
16
15
  var _translate = _interopRequireDefault(require("../../lang/translate"));
17
16
  var _constants = require("../../constants");
18
17
  var _filter = require("../../utils/filter");
@@ -35,7 +34,7 @@ const FilterSetter = _ref => {
35
34
  } = _ref;
36
35
  const {
37
36
  context
38
- } = (0, _appContext.useAppContext)();
37
+ } = (0, _hooks.useFileViewContext)();
39
38
  const {
40
39
  typesData
41
40
  } = (0, _hooks.useTypesData)();
@@ -95,7 +94,7 @@ const FilterSetter = _ref => {
95
94
  id: target
96
95
  }), isShowSetter && /*#__PURE__*/_react.default.createElement(_popover.FilterPopover, {
97
96
  appContext: context,
98
- placement: "bottom-end",
97
+ placement: "bottom-start",
99
98
  filtersClassName: filtersClassName,
100
99
  target: target,
101
100
  readOnly: readOnly,
@@ -62,7 +62,7 @@ const HideColumnSetter = _ref => {
62
62
  readOnly: readOnly,
63
63
  hiddenColumns: validHiddenColumns,
64
64
  target: target,
65
- placement: "bottom-end",
65
+ placement: "bottom-start",
66
66
  columns: validColumns,
67
67
  hidePopover: onSetterToggle,
68
68
  onChange: onChange,
@@ -34,6 +34,12 @@ Object.defineProperty(exports, "RowHeightSetter", {
34
34
  return _rowHeightSetter.default;
35
35
  }
36
36
  });
37
+ Object.defineProperty(exports, "SettingsSetter", {
38
+ enumerable: true,
39
+ get: function () {
40
+ return _settingsSetter.default;
41
+ }
42
+ });
37
43
  Object.defineProperty(exports, "SortSetter", {
38
44
  enumerable: true,
39
45
  get: function () {
@@ -45,4 +51,5 @@ var _groupbySetter = _interopRequireDefault(require("./groupby-setter"));
45
51
  var _hideColumnSetter = _interopRequireDefault(require("./hide-column-setter"));
46
52
  var _manageSetter = _interopRequireDefault(require("./manage-setter"));
47
53
  var _rowHeightSetter = _interopRequireDefault(require("./row-height-setter"));
54
+ var _settingsSetter = _interopRequireDefault(require("./settings-setter"));
48
55
  var _sortSetter = _interopRequireDefault(require("./sort-setter"));
@@ -8,13 +8,12 @@ exports.default = void 0;
8
8
  var _react = require("react");
9
9
  var _reactstrap = require("reactstrap");
10
10
  var _hooks = require("../../hooks");
11
- var _appContext = require("../../hooks/app-context");
12
11
  var _translate = _interopRequireDefault(require("../../lang/translate"));
13
12
  var _icons = _interopRequireDefault(require("../icons"));
14
13
  const ManageSetter = () => {
15
14
  const {
16
15
  context
17
- } = (0, _appContext.useAppContext)();
16
+ } = (0, _hooks.useFileViewContext)();
18
17
  const {
19
18
  toggleAllTags
20
19
  } = (0, _hooks.useTagsData)();
@@ -0,0 +1,119 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+ var _react = _interopRequireWildcard(require("react"));
10
+ var _hotkey = require("../../common/utils/hotkey");
11
+ var _constants = require("../../constants");
12
+ var _translate = _interopRequireDefault(require("../../lang/translate"));
13
+ var _column = require("../../utils/column");
14
+ var _iconButton = _interopRequireDefault(require("../icon-button"));
15
+ var _settingsPopover = _interopRequireDefault(require("../popover/settings-popover"));
16
+ const SettingsSetter = _ref => {
17
+ let {
18
+ readOnly,
19
+ wrapperClass,
20
+ target,
21
+ columns,
22
+ columnsMap,
23
+ settings,
24
+ modifySettings
25
+ } = _ref;
26
+ const [isShowSetter, setShowSetter] = (0, _react.useState)(false);
27
+ const displayColumns = (0, _react.useMemo)(() => {
28
+ const displayColumnsConfig = settings[_constants.CARD_SETTINGS_KEYS.COLUMNS];
29
+ const nameColumnKey = _constants.PRIVATE_COLUMN_KEY.FILE_NAME;
30
+ const mtimeColumnKey = _constants.PRIVATE_COLUMN_KEY.FILE_MTIME;
31
+ const lastModifierColumnKey = _constants.PRIVATE_COLUMN_KEY.FILE_MODIFIER;
32
+ const filteredColumns = columns.filter(item => item.key !== nameColumnKey && item.key !== mtimeColumnKey && item.key !== lastModifierColumnKey);
33
+ if (!displayColumnsConfig) {
34
+ return filteredColumns.map(column => ({
35
+ ...column,
36
+ shown: false
37
+ }));
38
+ }
39
+ const validDisplayColumnsConfig = displayColumnsConfig.map(columnConfig => {
40
+ const column = columnsMap[columnConfig.key];
41
+ if (column) return {
42
+ ...column,
43
+ shown: columnConfig.shown
44
+ };
45
+ return null;
46
+ }).filter(column => column && column.key !== nameColumnKey && column.key !== mtimeColumnKey);
47
+ const addedColumns = filteredColumns.filter(column => !(0, _column.getColumnByKey)(validDisplayColumnsConfig, column.key)).map(column => ({
48
+ ...column,
49
+ shown: false
50
+ }));
51
+ return [...validDisplayColumnsConfig, ...addedColumns];
52
+ }, [settings, columns, columnsMap]);
53
+ const displayColumnsConfig = (0, _react.useMemo)(() => displayColumns.map(column => ({
54
+ key: column.key,
55
+ shown: column.shown
56
+ })), [displayColumns]);
57
+ const onSetterToggle = (0, _react.useCallback)(() => {
58
+ setShowSetter(!isShowSetter);
59
+ }, [isShowSetter]);
60
+ const onKeyDown = (0, _react.useCallback)(event => {
61
+ event.stopPropagation();
62
+ if ((0, _hotkey.isEnter)(event) || (0, _hotkey.isSpace)(event)) onSetterToggle();
63
+ }, [onSetterToggle]);
64
+ const handleUpdateSettings = (0, _react.useCallback)((key, value) => {
65
+ modifySettings({
66
+ ...settings,
67
+ [key]: value
68
+ });
69
+ }, [settings, modifySettings]);
70
+ const onToggleField = (0, _react.useCallback)((key, shown) => {
71
+ const newDisplayColumnsConfig = displayColumnsConfig.map(columnConfig => {
72
+ if (columnConfig.key === key) return {
73
+ ...columnConfig,
74
+ shown
75
+ };
76
+ return columnConfig;
77
+ });
78
+ handleUpdateSettings(_constants.CARD_SETTINGS_KEYS.COLUMNS, newDisplayColumnsConfig);
79
+ }, [displayColumnsConfig, handleUpdateSettings]);
80
+ const onMoveField = (0, _react.useCallback)((sourceKey, targetKey) => {
81
+ const newDisplayColumnsConfig = displayColumnsConfig.slice(0);
82
+ const sourceIndex = displayColumnsConfig.findIndex(columnConfig => columnConfig.key === sourceKey);
83
+ const targetIndex = displayColumnsConfig.findIndex(columnConfig => columnConfig.key === targetKey);
84
+ if (sourceIndex === -1 || targetIndex === -1) return;
85
+ newDisplayColumnsConfig.splice(sourceIndex, 1, displayColumnsConfig[targetIndex]);
86
+ newDisplayColumnsConfig.splice(targetIndex, 1, displayColumnsConfig[sourceIndex]);
87
+ handleUpdateSettings(_constants.CARD_SETTINGS_KEYS.COLUMNS, newDisplayColumnsConfig);
88
+ }, [displayColumnsConfig, handleUpdateSettings]);
89
+ const onToggleFieldsVisibility = (0, _react.useCallback)(visibility => {
90
+ const newDisplayColumnsConfig = displayColumnsConfig.map(columnConfig => ({
91
+ ...columnConfig,
92
+ shown: visibility
93
+ }));
94
+ handleUpdateSettings(_constants.CARD_SETTINGS_KEYS.COLUMNS, newDisplayColumnsConfig);
95
+ }, [displayColumnsConfig, handleUpdateSettings]);
96
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_iconButton.default, {
97
+ icon: 'set-up',
98
+ size: 24,
99
+ className: wrapperClass,
100
+ onClick: onSetterToggle,
101
+ role: "button",
102
+ onKeyDown: onKeyDown,
103
+ tabIndex: 0,
104
+ id: target,
105
+ title: _translate.default.gettext('Setting'),
106
+ "aria-label": _translate.default.gettext('Setting')
107
+ }), isShowSetter && /*#__PURE__*/_react.default.createElement(_settingsPopover.default, {
108
+ readOnly: readOnly,
109
+ target: target,
110
+ columns: displayColumns,
111
+ settings: settings,
112
+ handleUpdateSettings: handleUpdateSettings,
113
+ onMoveField: onMoveField,
114
+ onToggleField: onToggleField,
115
+ onToggleFieldsVisibility: onToggleFieldsVisibility,
116
+ hidePopover: onSetterToggle
117
+ }));
118
+ };
119
+ var _default = exports.default = SettingsSetter;
@@ -9,7 +9,7 @@ exports.default = void 0;
9
9
  var _react = _interopRequireWildcard(require("react"));
10
10
  var _classnames = _interopRequireDefault(require("classnames"));
11
11
  var _hotkey = require("../../common/utils/hotkey");
12
- var _appContext = require("../../hooks/app-context");
12
+ var _hooks = require("../../hooks");
13
13
  var _translate = _interopRequireDefault(require("../../lang/translate"));
14
14
  var _constants = require("../../constants");
15
15
  var _sort = require("../../utils/sort");
@@ -27,7 +27,7 @@ const SortSetter = _ref => {
27
27
  } = _ref;
28
28
  const {
29
29
  context
30
- } = (0, _appContext.useAppContext)();
30
+ } = (0, _hooks.useFileViewContext)();
31
31
  const [isShowSetter, setShowSetter] = (0, _react.useState)(false);
32
32
  const sorts = (0, _react.useMemo)(() => {
33
33
  return (0, _sort.getValidSorts)(propsSorts || [], columns);
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+ var _react = _interopRequireWildcard(require("react"));
10
+ var _hotkey = require("../../common/utils/hotkey");
11
+ var _translate = _interopRequireDefault(require("../../lang/translate"));
12
+ var _iconButton = _interopRequireDefault(require("../icon-button"));
13
+ var _icons = _interopRequireDefault(require("../icons"));
14
+ var _popover = require("../popover");
15
+ const SettingsSetter = _ref => {
16
+ let {
17
+ readOnly,
18
+ wrapperClass,
19
+ target,
20
+ type,
21
+ modifyViewType
22
+ } = _ref;
23
+ const [isShowSetter, setShowSetter] = (0, _react.useState)(false);
24
+ const onSetterToggle = (0, _react.useCallback)(() => {
25
+ setShowSetter(!isShowSetter);
26
+ }, [isShowSetter]);
27
+ const onKeyDown = (0, _react.useCallback)(event => {
28
+ event.stopPropagation();
29
+ if ((0, _hotkey.isEnter)(event) || (0, _hotkey.isSpace)(event)) onSetterToggle();
30
+ }, [onSetterToggle]);
31
+ const onChangeType = (0, _react.useCallback)(type => {
32
+ modifyViewType(type);
33
+ }, [modifyViewType]);
34
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
35
+ className: wrapperClass,
36
+ id: target,
37
+ onClick: onSetterToggle,
38
+ title: _translate.default.gettext('View type'),
39
+ "aria-label": _translate.default.gettext('View type')
40
+ }, /*#__PURE__*/_react.default.createElement(_icons.default, {
41
+ className: 'mr-1',
42
+ symbol: type
43
+ }), /*#__PURE__*/_react.default.createElement(_icons.default, {
44
+ symbol: 'arrow-down'
45
+ })), isShowSetter && /*#__PURE__*/_react.default.createElement(_popover.ViewTypePopover, {
46
+ readOnly: readOnly,
47
+ target: target,
48
+ type: type,
49
+ onChangeType: onChangeType,
50
+ hidePopover: onSetterToggle
51
+ }));
52
+ };
53
+ var _default = exports.default = SettingsSetter;