@seafile/seafile-database 0.0.21 → 0.0.23

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 (78) hide show
  1. package/dist/api/api.js +21 -27
  2. package/dist/common/components/file-tag/index.js +2 -2
  3. package/dist/common/utils/icon-utils.js +2 -9
  4. package/dist/common/utils/utils.js +0 -28
  5. package/dist/components/cell-editors/index.js +2 -2
  6. package/dist/components/cell-editors/multiple-select-editor/index.js +2 -2
  7. package/dist/components/cell-editors/single-select-editor/index.js +2 -2
  8. package/dist/components/cell-editors/tags-editor/index.js +2 -1
  9. package/dist/components/context-menu/index.js +2 -2
  10. package/dist/components/data-process-setter/filter-setter.js +2 -1
  11. package/dist/components/data-process-setter/manage-setter.js +2 -1
  12. package/dist/components/data-process-setter/sort-setter.js +2 -2
  13. package/dist/components/icons/index.js +1 -14
  14. package/dist/components/image-previewer/_hooks/metadata-details.js +1 -1
  15. package/dist/components/image-previewer/_hooks/metadata-status.js +2 -2
  16. package/dist/components/image-previewer/image-detail/index.js +1 -1
  17. package/dist/components/image-previewer/index.js +2 -2
  18. package/dist/components/popover/groupbys-popover/index.js +5 -5
  19. package/dist/components/searcher/index.js +3 -3
  20. package/dist/components/view-toolbar/index.css +1 -54
  21. package/dist/components/view-toolbar/index.js +48 -40
  22. package/dist/components/view-toolbar/rows-toolbar/index.js +2 -2
  23. package/dist/components/view-toolbar/table-view-toolbar/index.js +1 -1
  24. package/dist/components/view-toolbar/views/all-views/index.css +85 -0
  25. package/dist/components/view-toolbar/views/all-views/index.js +165 -0
  26. package/dist/components/view-toolbar/views/index.css +22 -0
  27. package/dist/components/view-toolbar/views/index.js +215 -0
  28. package/dist/components/view-toolbar/views/view-item/index.css +83 -0
  29. package/dist/components/view-toolbar/views/view-item/index.js +159 -0
  30. package/dist/constants/event-bus-type.js +1 -3
  31. package/dist/constants/view/index.js +2 -32
  32. package/dist/context.js +34 -79
  33. package/dist/database.js +18 -11
  34. package/dist/global-settings.js +1 -3
  35. package/dist/hooks/{file-repo-context.js → app-context.js} +20 -25
  36. package/dist/hooks/collaborators.js +3 -9
  37. package/dist/hooks/index.js +14 -14
  38. package/dist/hooks/metadata.js +47 -45
  39. package/dist/hooks/tagsData.js +2 -8
  40. package/dist/hooks/viewsData.js +114 -0
  41. package/dist/index.js +3 -3
  42. package/dist/locale/en.js +1 -6
  43. package/dist/locale/zh_CN.js +1 -6
  44. package/dist/store/data-processor.js +0 -1
  45. package/dist/views/index.js +3 -5
  46. package/dist/views/table/editors/editor-container/index.js +2 -2
  47. package/dist/views/table/formatters/file-name.js +3 -3
  48. package/dist/views/table/index.js +3 -2
  49. package/dist/views/table/table-main/index.js +2 -2
  50. package/dist/views/table/table-main/rows/row/cell/formatter.js +2 -2
  51. package/dist/views/table/table-main/rows/row/cell/index.js +2 -2
  52. package/dist/views/table/table-main/rows-header/cell/dropdown-menu/index.js +1 -1
  53. package/dist/views/table/table-main/rows-header/cell/index.js +1 -1
  54. package/dist/views/table/table-main/rows-header/index.js +2 -2
  55. package/package.json +1 -1
  56. package/dist/assets/css/dropdown-menu.css +0 -96
  57. package/dist/components/dialogs/custom-modal-header/index.css +0 -34
  58. package/dist/components/dialogs/custom-modal-header/index.js +0 -34
  59. package/dist/components/dialogs/insert-view-dialog.js +0 -104
  60. package/dist/components/icons/arrow-down-icon.js +0 -19
  61. package/dist/components/icons/arrow-up-icon.js +0 -19
  62. package/dist/components/icons/close-icon.js +0 -23
  63. package/dist/components/icons/set-up-icon.js +0 -22
  64. package/dist/components/view-toolbar/card-view-toolbar/index.js +0 -89
  65. package/dist/components/view-toolbar/view-items/index.css +0 -55
  66. package/dist/components/view-toolbar/view-items/index.js +0 -98
  67. package/dist/components/view-toolbar/view-items/views-popover.js +0 -80
  68. package/dist/file-base.js +0 -31
  69. package/dist/hooks/file-view-context.js +0 -69
  70. package/dist/views/card/card-items/card-item/formatter.js +0 -45
  71. package/dist/views/card/card-items/card-item/index.css +0 -234
  72. package/dist/views/card/card-items/card-item/index.js +0 -206
  73. package/dist/views/card/card-items/index.css +0 -31
  74. package/dist/views/card/card-items/index.js +0 -189
  75. package/dist/views/card/context-menu/index.js +0 -165
  76. package/dist/views/card/index.js +0 -64
  77. package/dist/views/card/settings/index.css +0 -68
  78. package/dist/views/card/settings/index.js +0 -143
@@ -1,189 +0,0 @@
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 _classnames = _interopRequireDefault(require("classnames"));
11
- var _emptyTip = _interopRequireDefault(require("../../../common/components/empty-tip"));
12
- var _imagePreviewer = _interopRequireDefault(require("../../../components/image-previewer"));
13
- var _constants = require("../../../constants");
14
- var _hooks = require("../../../hooks");
15
- var _translate = _interopRequireDefault(require("../../../lang/translate"));
16
- var _cell = require("../../../utils/cell");
17
- var _file = require("../../../utils/file");
18
- var _row = require("../../../utils/row");
19
- var _cardItem = _interopRequireDefault(require("./card-item"));
20
- require("./index.css");
21
- // import ContextMenu from '../context-menu';
22
-
23
- const CardItems = _ref => {
24
- let {
25
- modifyRecord,
26
- deleteRecords,
27
- modifyColumnData,
28
- onCloseSettings
29
- } = _ref;
30
- const {
31
- context
32
- } = (0, _hooks.useFileRepoContext)();
33
- const {
34
- tagsData
35
- } = (0, _hooks.useTagsData)();
36
- const {
37
- metadata,
38
- isDirentDetailShow,
39
- updateCurrentDirent,
40
- updateSelectedRecordIds
41
- } = (0, _hooks.useMetadata)();
42
- const containerRef = (0, _react.useRef)(null);
43
- const currentImageRef = (0, _react.useRef)(null);
44
- const [selectedCard, setSelectedCard] = (0, _react.useState)('');
45
- const [isImagePreviewerVisible, setImagePreviewerVisible] = (0, _react.useState)(false);
46
- const repoID = context.getViewSetting('repoID');
47
- const repoInfo = context.getViewSetting('repoInfo');
48
- (0, _react.useEffect)(() => {
49
- const unsubscribe = context.eventBus.subscribe(_constants.EVENT_BUS_TYPE.UPDATE_SELECTED_RECORD_IDS, ids => {
50
- setSelectedCard(Array.isArray(ids) ? ids[0] : null);
51
- });
52
- return () => {
53
- unsubscribe && unsubscribe();
54
- };
55
- }, [context.eventBus]);
56
- const fileNameColumn = (0, _react.useMemo)(() => {
57
- return metadata.key_column_map[_constants.PRIVATE_COLUMN_KEY.FILE_NAME];
58
- }, [metadata.key_column_map]);
59
- const mtimeColumn = (0, _react.useMemo)(() => {
60
- return metadata.key_column_map[_constants.PRIVATE_COLUMN_KEY.FILE_MTIME];
61
- }, [metadata.key_column_map]);
62
- const modifierColumn = (0, _react.useMemo)(() => {
63
- return metadata.key_column_map[_constants.PRIVATE_COLUMN_KEY.FILE_MODIFIER];
64
- }, [metadata.key_column_map]);
65
- const displayColumns = (0, _react.useMemo)(() => {
66
- const displayColumnsConfig = metadata.view.settings[_constants.CARD_SETTINGS_KEYS.COLUMNS];
67
- if (!displayColumnsConfig) return [];
68
- return displayColumnsConfig.filter(config => config.shown).map(config => metadata.key_column_map[config.key]);
69
- }, [metadata.key_column_map, metadata.view.settings]);
70
- const displayEmptyValue = (0, _react.useMemo)(() => !metadata.view.settings[_constants.CARD_SETTINGS_KEYS.HIDE_EMPTY_VALUE], [metadata.view.settings]);
71
- const displayColumnName = (0, _react.useMemo)(() => metadata.view.settings[_constants.CARD_SETTINGS_KEYS.SHOW_COLUMN_NAME], [metadata.view.settings]);
72
- const textWrap = (0, _react.useMemo)(() => metadata.view.settings[_constants.CARD_SETTINGS_KEYS.TEXT_WRAP], [metadata.view.settings]);
73
- const records = (0, _react.useMemo)(() => {
74
- const {
75
- rows
76
- } = metadata;
77
- return rows || [];
78
- }, [metadata]);
79
- const onOpenFile = (0, _react.useCallback)(record => {
80
- const repoID = context.getViewSetting('repoID');
81
- const canPreview = context.canPreview();
82
- if (!canPreview) return;
83
- (0, _file.openFile)(record, repoID, () => {
84
- currentImageRef.current = record;
85
- setImagePreviewerVisible(true);
86
- });
87
- }, [context]);
88
- const closeImagePreviewer = (0, _react.useCallback)(() => {
89
- currentImageRef.current = null;
90
- setImagePreviewerVisible(false);
91
- }, []);
92
- const handleUpdateCurrentDirent = (0, _react.useCallback)(record => {
93
- if (!record) return;
94
- const recordId = (0, _cell.getRecordIdFromRecord)(record);
95
- const name = (0, _cell.getFileNameFromRecord)(record);
96
- const path = (0, _cell.getParentDirFromRecord)(record);
97
- const isDir = (0, _row.checkIsDir)(record);
98
- updateCurrentDirent && updateCurrentDirent({
99
- id: recordId,
100
- type: isDir ? 'dir' : 'file',
101
- mtime: '',
102
- name,
103
- path,
104
- file_tags: []
105
- });
106
- setSelectedCard(recordId);
107
- updateSelectedRecordIds([recordId]);
108
- }, [updateCurrentDirent, updateSelectedRecordIds]);
109
- const onSelectCard = (0, _react.useCallback)(record => {
110
- const recordId = (0, _cell.getRecordIdFromRecord)(record);
111
- if (selectedCard === recordId) return;
112
- handleUpdateCurrentDirent(record);
113
- onCloseSettings();
114
- }, [selectedCard, onCloseSettings, handleUpdateCurrentDirent]);
115
- const handleClickOutside = (0, _react.useCallback)(event => {
116
- setSelectedCard(null);
117
- updateSelectedRecordIds([]);
118
- updateCurrentDirent();
119
- }, [updateCurrentDirent, updateSelectedRecordIds]);
120
- const onContextMenu = (0, _react.useCallback)((event, recordId) => {
121
- event.preventDefault();
122
- if (selectedCard === recordId) return;
123
- const record = (0, _row.getRowById)(metadata, recordId);
124
- handleUpdateCurrentDirent(record);
125
- }, [metadata, selectedCard, handleUpdateCurrentDirent]);
126
- const onDeleteRecords = (0, _react.useCallback)(recordIds => {
127
- deleteRecords(recordIds, {
128
- success_callback: () => {
129
- setSelectedCard(null);
130
- updateSelectedRecordIds([]);
131
- updateCurrentDirent();
132
- }
133
- });
134
- }, [deleteRecords, updateCurrentDirent, updateSelectedRecordIds]);
135
- const onRename = (0, _react.useCallback)((rowId, updates, oldRowData, originalUpdates, originalOldRowData, _ref2) => {
136
- let {
137
- success_callback
138
- } = _ref2;
139
- modifyRecord(rowId, updates, oldRowData, originalUpdates, originalOldRowData, {
140
- success_callback: operation => {
141
- success_callback && success_callback(operation);
142
- const record = (0, _row.getRowById)(metadata, rowId);
143
- handleUpdateCurrentDirent(record);
144
- }
145
- });
146
- }, [metadata, modifyRecord, handleUpdateCurrentDirent]);
147
- (0, _react.useEffect)(() => {
148
- if (!isDirentDetailShow) {
149
- setSelectedCard(null);
150
- updateSelectedRecordIds([]);
151
- }
152
- }, [isDirentDetailShow, updateSelectedRecordIds]);
153
- if (records.length === 0) {
154
- return /*#__PURE__*/_react.default.createElement(_emptyTip.default, {
155
- text: _translate.default.gettext('No items')
156
- });
157
- }
158
- return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
159
- ref: containerRef,
160
- className: (0, _classnames.default)('sf-metadata-view-card-items-container', {
161
- 'sf-metadata-view-card-items-container-text-wrap': textWrap
162
- }),
163
- onClick: handleClickOutside
164
- }, records.map((record, index) => {
165
- const isSelected = selectedCard === record._id;
166
- return /*#__PURE__*/_react.default.createElement(_cardItem.default, {
167
- key: index,
168
- isSelected: isSelected,
169
- record: record,
170
- tagsData: tagsData,
171
- fileNameColumn: fileNameColumn,
172
- mtimeColumn: mtimeColumn,
173
- modifierColumn: modifierColumn,
174
- displayColumns: displayColumns,
175
- displayEmptyValue: displayEmptyValue,
176
- displayColumnName: displayColumnName,
177
- onOpenFile: onOpenFile,
178
- onSelectCard: onSelectCard,
179
- onContextMenu: e => onContextMenu(e, record._id)
180
- });
181
- })), isImagePreviewerVisible && /*#__PURE__*/_react.default.createElement(_imagePreviewer.default, {
182
- repoID: repoID,
183
- repoInfo: repoInfo,
184
- record: currentImageRef.current,
185
- table: metadata,
186
- closeImagePopup: closeImagePreviewer
187
- }));
188
- };
189
- var _default = exports.default = CardItems;
@@ -1,165 +0,0 @@
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 _cell = require("../../../utils/cell");
11
- var _column = require("../../../utils/column");
12
- var _file = require("../../../utils/file");
13
- var _row = require("../../../utils/row");
14
- var _table = require("../../../../components/sf-table/utils/table");
15
- var _fileOperations = require("../../../../hooks/file-operations");
16
- var _metadataStatus = require("../../../../hooks/metadata-status");
17
- var _textTranslation = _interopRequireDefault(require("../../../../utils/text-translation"));
18
- var _contextMenu = _interopRequireDefault(require("../../../components/context-menu"));
19
- var _renameDialog = _interopRequireDefault(require("../../../components/dialog/rename-dialog"));
20
- var _constants = require("../../../constants");
21
- var _metadataView = require("../../../hooks/metadata-view");
22
- var _menuBuilder = require("../../../utils/menu-builder");
23
- const CardContextMenu = _ref => {
24
- let {
25
- selectedCard,
26
- onDelete,
27
- onRename
28
- } = _ref;
29
- const [isRenameDialogShow, setIsRenameDialogShow] = (0, _react.useState)(false);
30
- const {
31
- enableFaceRecognition,
32
- enableTags
33
- } = (0, _metadataStatus.useMetadataStatus)();
34
- const {
35
- handleDownload: handleDownloadAPI
36
- } = (0, _fileOperations.useFileOperations)();
37
- const {
38
- metadata,
39
- updateRecordDetails,
40
- updateFaceRecognition,
41
- updateRecordDescription,
42
- onOCR,
43
- generateFileTags
44
- } = (0, _metadataView.useMetadataView)();
45
- const selectedRecord = (0, _react.useMemo)(() => (0, _table.getRowById)(metadata, selectedCard), [metadata, selectedCard]);
46
- const isDir = (0, _react.useMemo)(() => (0, _row.checkIsDir)(selectedRecord), [selectedRecord]);
47
- const oldName = (0, _react.useMemo)(() => (0, _cell.getFileNameFromRecord)(selectedRecord), [selectedRecord]);
48
- const parentDir = (0, _react.useMemo)(() => (0, _cell.getParentDirFromRecord)(selectedRecord), [selectedRecord]);
49
- const repoID = window.sfMetadataContext.getSetting('repoID');
50
- const readOnly = !window.sfMetadataContext.canModify();
51
- const record = (0, _react.useMemo)(() => (0, _table.getRowById)(metadata, selectedCard), [metadata, selectedCard]);
52
- const options = (0, _react.useMemo)(() => {
53
- const metadataStatus = {
54
- enableFaceRecognition,
55
- enableGenerateDescription: (0, _column.getColumnByKey)(metadata.columns, _constants.PRIVATE_COLUMN_KEY.FILE_DESCRIPTION) !== null,
56
- enableTags
57
- };
58
- return (0, _menuBuilder.buildCardMenuOptions)([record], readOnly, metadataStatus);
59
- }, [enableFaceRecognition, metadata.columns, enableTags, record, readOnly]);
60
- const openRenameDialog = (0, _react.useCallback)(() => {
61
- setIsRenameDialogShow(true);
62
- }, []);
63
- const handleRename = (0, _react.useCallback)(newName => {
64
- if (!selectedCard) return;
65
- const record = (0, _table.getRowById)(metadata, selectedCard);
66
- if (!record) return;
67
- const oldName = (0, _cell.getFileNameFromRecord)(record);
68
- const updates = {
69
- [_constants.PRIVATE_COLUMN_KEY.FILE_NAME]: newName
70
- };
71
- const oldRowData = {
72
- [_constants.PRIVATE_COLUMN_KEY.FILE_NAME]: oldName
73
- };
74
- onRename(selectedCard, updates, oldRowData, updates, oldRowData, {
75
- success_callback: () => setIsRenameDialogShow(false)
76
- });
77
- }, [metadata, selectedCard, onRename]);
78
- const handleDownload = (0, _react.useCallback)(() => {
79
- handleDownloadAPI(parentDir, [{
80
- name: oldName,
81
- is_dir: isDir
82
- }]);
83
- }, [handleDownloadAPI, parentDir, oldName, isDir]);
84
- const handleOptionClick = (0, _react.useCallback)(option => {
85
- switch (option.key) {
86
- case _textTranslation.default.OPEN_FILE_IN_NEW_TAB.key:
87
- {
88
- (0, _file.openInNewTab)(repoID, record);
89
- break;
90
- }
91
- case _textTranslation.default.OPEN_PARENT_FOLDER.key:
92
- {
93
- (0, _file.openParentFolder)(record);
94
- break;
95
- }
96
- case _textTranslation.default.RENAME.key:
97
- {
98
- openRenameDialog();
99
- break;
100
- }
101
- case _textTranslation.default.MOVE.key:
102
- window.sfMetadataContext.eventBus.dispatch(_constants.EVENT_BUS_TYPE.TOGGLE_MOVE_DIALOG, [record]);
103
- break;
104
- case _textTranslation.default.COPY.key:
105
- window.sfMetadataContext.eventBus.dispatch(_constants.EVENT_BUS_TYPE.TOGGLE_COPY_DIALOG, [record]);
106
- break;
107
- case _textTranslation.default.DOWNLOAD.key:
108
- {
109
- handleDownload();
110
- break;
111
- }
112
- case _textTranslation.default.DELETE.key:
113
- {
114
- onDelete([selectedCard]);
115
- break;
116
- }
117
- case _textTranslation.default.DETECT_FACES.key:
118
- {
119
- updateFaceRecognition([record]);
120
- break;
121
- }
122
- case _textTranslation.default.EXTRACT_FILE_DETAIL.key:
123
- {
124
- updateRecordDetails([record]);
125
- break;
126
- }
127
- case _textTranslation.default.GENERATE_DESCRIPTION.key:
128
- {
129
- updateRecordDescription(record);
130
- break;
131
- }
132
- case _textTranslation.default.GENERATE_TAGS.key:
133
- {
134
- generateFileTags(record);
135
- break;
136
- }
137
- case _textTranslation.default.EXTRACT_TEXT.key:
138
- {
139
- onOCR(record, '.sf-metadata-card-item-image-container');
140
- break;
141
- }
142
- default:
143
- {
144
- break;
145
- }
146
- }
147
- }, [record, updateFaceRecognition, repoID, openRenameDialog, handleDownload, onDelete, selectedCard, updateRecordDetails, updateRecordDescription, generateFileTags, onOCR]);
148
- (0, _react.useEffect)(() => {
149
- const unsubscribe = window.sfMetadataContext.eventBus.subscribe(_constants.EVENT_BUS_TYPE.TOGGLE_CARD_RENAME_DIALOG, openRenameDialog);
150
- return () => {
151
- unsubscribe();
152
- };
153
- }, [openRenameDialog]);
154
- return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_contextMenu.default, {
155
- options: options,
156
- onOptionClick: handleOptionClick,
157
- allowedTriggerElements: ['.sf-metadata-view-card']
158
- }), isRenameDialogShow && /*#__PURE__*/_react.default.createElement(_renameDialog.default, {
159
- isDir: isDir,
160
- oldName: oldName,
161
- onSubmit: handleRename,
162
- onCancel: () => setIsRenameDialogShow(false)
163
- }));
164
- };
165
- var _default = exports.default = CardContextMenu;
@@ -1,64 +0,0 @@
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 _constants = require("../../constants");
11
- var _hooks = require("../../hooks");
12
- var _cardItems = _interopRequireDefault(require("./card-items"));
13
- // import Settings from './settings';
14
-
15
- const Card = () => {
16
- const [isShowSettings, setShowSettings] = (0, _react.useState)(false);
17
- const {
18
- context
19
- } = (0, _hooks.useFileRepoContext)();
20
- const {
21
- metadata,
22
- modifySettings,
23
- modifyRecord: modifyRecordAPI,
24
- deleteRecords,
25
- modifyColumnData
26
- } = (0, _hooks.useMetadata)();
27
- const columns = (0, _react.useMemo)(() => metadata.view.columns, [metadata.view.columns]);
28
- const modifyRecord = (0, _react.useCallback)(function (rowId, updates, oldRowData, originalUpdates, originalOldRowData) {
29
- let {
30
- success_callback
31
- } = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};
32
- modifyRecordAPI(rowId, updates, oldRowData, originalUpdates, originalOldRowData, false, {
33
- success_callback: () => {
34
- success_callback && success_callback();
35
- context.eventBus.dispatch(_constants.EVENT_BUS_TYPE.LOCAL_RECORD_DETAIL_CHANGED, {
36
- recordId: rowId
37
- }, updates);
38
- }
39
- });
40
- }, [context.eventBus, modifyRecordAPI]);
41
- const closeSettings = (0, _react.useCallback)(() => {
42
- setShowSettings(false);
43
- }, []);
44
- (0, _react.useEffect)(() => {
45
- const eventBus = context.eventBus;
46
- const unsubscribeCardSetting = eventBus.subscribe(_constants.EVENT_BUS_TYPE.TOGGLE_CARD_SETTINGS, () => setShowSettings(!isShowSettings));
47
- const unsubscribeCloseCardSetting = eventBus.subscribe(_constants.EVENT_BUS_TYPE.CLOSE_CARD_SETTINGS, () => setShowSettings(false));
48
- return () => {
49
- unsubscribeCardSetting();
50
- unsubscribeCloseCardSetting();
51
- };
52
- }, [context, isShowSettings]);
53
- return /*#__PURE__*/_react.default.createElement("div", {
54
- className: "sea-metadata-container"
55
- }, /*#__PURE__*/_react.default.createElement("div", {
56
- className: "sea-metadata-view-card flex-fill o-auto position-relative"
57
- }, /*#__PURE__*/_react.default.createElement(_cardItems.default, {
58
- modifyRecord: modifyRecord,
59
- deleteRecords: deleteRecords,
60
- modifyColumnData: modifyColumnData,
61
- onCloseSettings: closeSettings
62
- })));
63
- };
64
- var _default = exports.default = Card;
@@ -1,68 +0,0 @@
1
- .sf-metadata-view-card-setting-panel {
2
- min-width: 300px;
3
- height: 100%;
4
- display: flex;
5
- flex-direction: column;
6
- border-left: 1px solid var(--bs-border-secondary-color);
7
- background: var(--bs-body-bg);
8
- }
9
-
10
- .sf-metadata-view-card-setting-panel .setting-panel-header {
11
- display: flex;
12
- align-items: center;
13
- justify-content: space-between;
14
- padding: 10px 16px;
15
- border-bottom: 1px solid var(--bs-border-secondary-color);
16
- }
17
-
18
- .sf-metadata-view-card-setting-panel .setting-panel-body {
19
- width: 100%;
20
- height: 100%;
21
- padding: 16px 16px 50px;
22
- font-size: 14px;
23
- overflow: auto;
24
- }
25
-
26
- .sf-metadata-view-card-setting-panel .setting-panel-body .setting-item {
27
- margin-bottom: 14px;
28
- }
29
-
30
- .sf-metadata-view-card-setting-panel .setting-item .setting-item-label {
31
- display: inline-block;
32
- margin-bottom: 8px;
33
- }
34
-
35
- .sf-metadata-view-card-setting-panel .setting-item .custom-switch-description {
36
- margin: 0;
37
- }
38
-
39
- .sf-metadata-view-card-setting-panel .setting-item .switch-setting-item {
40
- padding: 0;
41
- display: flex;
42
- justify-content: space-between;
43
- }
44
-
45
- .sf-metadata-view-card-setting-panel .custom-switch {
46
- width: 100%;
47
- padding: 0;
48
- display: flex;
49
- justify-content: space-between;
50
- align-items: center;
51
- cursor: pointer;
52
- }
53
-
54
- .sf-metadata-view-card-setting-panel .custom-switch-indicator {
55
- border-radius: 6px;
56
- height: 12px;
57
- width: 22px;
58
- margin-right: 8px;
59
- }
60
-
61
- .sf-metadata-view-card-setting-panel .custom-switch .custom-switch-indicator:before {
62
- height: 8px;
63
- width: 8px;
64
- }
65
-
66
- .sf-metadata-view-card-setting-panel .custom-switch .custom-switch-input:checked~.custom-switch-indicator:before {
67
- left: 12px;
68
- }
@@ -1,143 +0,0 @@
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 _opIcon = _interopRequireDefault(require("../../../common/components/op-icon"));
11
- var _switch = _interopRequireDefault(require("../../../common/components/switch"));
12
- var _fieldDisplaySettings = _interopRequireDefault(require("../../../components/data-process-setter/field-display-settings"));
13
- var _constants = require("../../../constants");
14
- var _hooks = require("../../../hooks");
15
- var _column = require("../../../utils/column");
16
- var _constants2 = require("../../../../utils/constants");
17
- require("./index.css");
18
- const Settings = _ref => {
19
- let {
20
- columns,
21
- columnsMap,
22
- settings,
23
- modifySettings,
24
- onClose
25
- } = _ref;
26
- const {
27
- globalHiddenColumns
28
- } = (0, _hooks.useMetadataStatus)();
29
- const validColumns = (0, _react.useMemo)(() => columns.filter(column => !globalHiddenColumns.includes(column.key)), [columns, globalHiddenColumns]);
30
- const displayColumns = (0, _react.useMemo)(() => {
31
- const displayColumnsConfig = settings[_constants.CARD_SETTINGS_KEYS.COLUMNS].filter(column => !globalHiddenColumns.includes(column.key));
32
- const nameColumnKey = _constants.PRIVATE_COLUMN_KEY.FILE_NAME;
33
- const mtimeColumnKey = _constants.PRIVATE_COLUMN_KEY.FILE_MTIME;
34
- const lastModifierColumnKey = _constants.PRIVATE_COLUMN_KEY.FILE_MODIFIER;
35
- const filteredColumns = validColumns.filter(item => item.key !== nameColumnKey && item.key !== mtimeColumnKey && item.key !== lastModifierColumnKey);
36
- if (!displayColumnsConfig) {
37
- return filteredColumns.map(column => ({
38
- ...column,
39
- shown: false
40
- }));
41
- }
42
- const validDisplayColumnsConfig = displayColumnsConfig.map(columnConfig => {
43
- const column = columnsMap[columnConfig.key];
44
- if (column) return {
45
- ...column,
46
- shown: columnConfig.shown
47
- };
48
- return null;
49
- }).filter(column => column && column.key !== nameColumnKey && column.key !== mtimeColumnKey);
50
- const addedColumns = filteredColumns.filter(column => !(0, _column.getColumnByKey)(validDisplayColumnsConfig, column.key)).map(column => ({
51
- ...column,
52
- shown: false
53
- }));
54
- return [...validDisplayColumnsConfig, ...addedColumns];
55
- }, [validColumns, columnsMap, settings, globalHiddenColumns]);
56
- const displayColumnsConfig = (0, _react.useMemo)(() => displayColumns.map(column => ({
57
- key: column.key,
58
- shown: column.shown
59
- })), [displayColumns]);
60
- const handleUpdateSettings = (0, _react.useCallback)((key, value) => {
61
- modifySettings({
62
- ...settings,
63
- [key]: value
64
- });
65
- }, [settings, modifySettings]);
66
- const onToggleField = (0, _react.useCallback)((key, shown) => {
67
- const newDisplayColumnsConfig = displayColumnsConfig.map(columnConfig => {
68
- if (columnConfig.key === key) return {
69
- ...columnConfig,
70
- shown
71
- };
72
- return columnConfig;
73
- });
74
- handleUpdateSettings(_constants.CARD_SETTINGS_KEYS.COLUMNS, newDisplayColumnsConfig);
75
- }, [displayColumnsConfig, handleUpdateSettings]);
76
- const onMoveField = (0, _react.useCallback)((sourceKey, targetKey) => {
77
- const newDisplayColumnsConfig = displayColumnsConfig.slice(0);
78
- const sourceIndex = displayColumnsConfig.findIndex(columnConfig => columnConfig.key === sourceKey);
79
- const targetIndex = displayColumnsConfig.findIndex(columnConfig => columnConfig.key === targetKey);
80
- if (sourceIndex === -1 || targetIndex === -1) return;
81
- newDisplayColumnsConfig.splice(sourceIndex, 1, displayColumnsConfig[targetIndex]);
82
- newDisplayColumnsConfig.splice(targetIndex, 1, displayColumnsConfig[sourceIndex]);
83
- handleUpdateSettings(_constants.CARD_SETTINGS_KEYS.COLUMNS, newDisplayColumnsConfig);
84
- }, [displayColumnsConfig, handleUpdateSettings]);
85
- const onToggleFieldsVisibility = (0, _react.useCallback)(visibility => {
86
- const newDisplayColumnsConfig = displayColumnsConfig.map(columnConfig => ({
87
- ...columnConfig,
88
- shown: visibility
89
- }));
90
- handleUpdateSettings(_constants.CARD_SETTINGS_KEYS.COLUMNS, newDisplayColumnsConfig);
91
- }, [displayColumnsConfig, handleUpdateSettings]);
92
- return /*#__PURE__*/_react.default.createElement("div", {
93
- className: "sf-metadata-view-card-setting-panel"
94
- }, /*#__PURE__*/_react.default.createElement("div", {
95
- className: "setting-panel-header"
96
- }, /*#__PURE__*/_react.default.createElement("h5", {
97
- className: "m-0"
98
- }, (0, _constants2.gettext)('Settings')), /*#__PURE__*/_react.default.createElement(_opIcon.default, {
99
- className: "op-icon",
100
- symbol: "close",
101
- op: onClose,
102
- title: (0, _constants2.gettext)('Close')
103
- })), /*#__PURE__*/_react.default.createElement("div", {
104
- className: "setting-panel-body"
105
- }, /*#__PURE__*/_react.default.createElement("div", {
106
- className: "setting-item"
107
- }, /*#__PURE__*/_react.default.createElement(_switch.default, {
108
- placeholder: (0, _constants2.gettext)('Don\'t show empty values'),
109
- checked: settings[_constants.CARD_SETTINGS_KEYS.HIDE_EMPTY_VALUE] || false,
110
- onChange: () => handleUpdateSettings(_constants.CARD_SETTINGS_KEYS.HIDE_EMPTY_VALUE, !settings[_constants.CARD_SETTINGS_KEYS.HIDE_EMPTY_VALUE])
111
- })), /*#__PURE__*/_react.default.createElement("div", {
112
- className: "sf-metadata-setting-divide-line"
113
- }), /*#__PURE__*/_react.default.createElement("div", {
114
- className: "setting-item"
115
- }, /*#__PURE__*/_react.default.createElement(_switch.default, {
116
- placeholder: (0, _constants2.gettext)('Show property names'),
117
- checked: settings[_constants.CARD_SETTINGS_KEYS.SHOW_COLUMN_NAME] || false,
118
- onChange: () => handleUpdateSettings(_constants.CARD_SETTINGS_KEYS.SHOW_COLUMN_NAME, !settings[_constants.CARD_SETTINGS_KEYS.SHOW_COLUMN_NAME])
119
- })), /*#__PURE__*/_react.default.createElement("div", {
120
- className: "sf-metadata-setting-divide-line"
121
- }), /*#__PURE__*/_react.default.createElement("div", {
122
- className: "setting-item"
123
- }, /*#__PURE__*/_react.default.createElement(_switch.default, {
124
- placeholder: (0, _constants2.gettext)('Text wraps'),
125
- checked: settings[_constants.CARD_SETTINGS_KEYS.TEXT_WRAP] || false,
126
- onChange: () => handleUpdateSettings(_constants.CARD_SETTINGS_KEYS.TEXT_WRAP, !settings[_constants.CARD_SETTINGS_KEYS.TEXT_WRAP])
127
- })), /*#__PURE__*/_react.default.createElement("div", {
128
- className: "sf-metadata-setting-divide-line"
129
- }), /*#__PURE__*/_react.default.createElement(_fieldDisplaySettings.default, {
130
- fieldIconConfig: _constants.COLUMNS_ICON_CONFIG,
131
- fields: displayColumns,
132
- textProperties: {
133
- titleValue: (0, _constants2.gettext)('Properties to display on the card'),
134
- bannerValue: (0, _constants2.gettext)('Properties'),
135
- hideValue: (0, _constants2.gettext)('Hide all'),
136
- showValue: (0, _constants2.gettext)('Show all')
137
- },
138
- onToggleField: onToggleField,
139
- onMoveField: onMoveField,
140
- onToggleFieldsVisibility: onToggleFieldsVisibility
141
- })));
142
- };
143
- var _default = exports.default = Settings;