@seafile/seafile-database 0.0.19 → 0.0.21
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.
- package/dist/api/api.js +27 -21
- package/dist/assets/css/dropdown-menu.css +96 -0
- package/dist/common/components/file-tag/index.js +2 -2
- package/dist/common/utils/icon-utils.js +9 -2
- package/dist/common/utils/utils.js +28 -0
- package/dist/components/cell-editors/index.js +2 -2
- package/dist/components/cell-editors/multiple-select-editor/index.js +2 -2
- package/dist/components/cell-editors/single-select-editor/index.js +2 -2
- package/dist/components/cell-editors/tags-editor/index.js +1 -2
- package/dist/components/context-menu/index.js +2 -2
- package/dist/components/data-process-setter/filter-setter.js +1 -2
- package/dist/components/data-process-setter/manage-setter.js +1 -2
- package/dist/components/data-process-setter/sort-setter.js +2 -2
- package/dist/components/dialogs/custom-modal-header/index.css +34 -0
- package/dist/components/dialogs/custom-modal-header/index.js +34 -0
- package/dist/components/dialogs/insert-view-dialog.js +104 -0
- package/dist/components/icons/arrow-down-icon.js +19 -0
- package/dist/components/icons/arrow-up-icon.js +19 -0
- package/dist/components/icons/close-icon.js +23 -0
- package/dist/components/icons/index.js +14 -1
- package/dist/components/icons/set-up-icon.js +22 -0
- package/dist/components/image-previewer/_hooks/metadata-details.js +1 -1
- package/dist/components/image-previewer/_hooks/metadata-status.js +2 -2
- package/dist/components/image-previewer/image-detail/index.js +1 -1
- package/dist/components/image-previewer/index.js +2 -2
- package/dist/components/popover/groupbys-popover/index.js +5 -5
- package/dist/components/searcher/index.js +3 -3
- package/dist/components/view-toolbar/card-view-toolbar/index.js +89 -0
- package/dist/components/view-toolbar/index.css +54 -1
- package/dist/components/view-toolbar/index.js +40 -48
- package/dist/components/view-toolbar/rows-toolbar/index.js +2 -2
- package/dist/components/view-toolbar/table-view-toolbar/index.js +1 -1
- package/dist/components/view-toolbar/view-items/index.css +55 -0
- package/dist/components/view-toolbar/view-items/index.js +98 -0
- package/dist/components/view-toolbar/view-items/views-popover.js +80 -0
- package/dist/constants/event-bus-type.js +3 -1
- package/dist/constants/view/index.js +32 -2
- package/dist/context.js +89 -34
- package/dist/database.js +11 -18
- package/dist/file-base.js +31 -0
- package/dist/global-settings.js +3 -1
- package/dist/hooks/collaborators.js +9 -3
- package/dist/hooks/{app-context.js → file-repo-context.js} +25 -20
- package/dist/hooks/file-view-context.js +69 -0
- package/dist/hooks/index.js +14 -14
- package/dist/hooks/metadata.js +45 -47
- package/dist/hooks/tagsData.js +8 -2
- package/dist/index.js +3 -3
- package/dist/locale/en.js +6 -1
- package/dist/locale/zh_CN.js +6 -1
- package/dist/store/data-processor.js +1 -0
- package/dist/views/card/card-items/card-item/formatter.js +45 -0
- package/dist/views/card/card-items/card-item/index.css +234 -0
- package/dist/views/card/card-items/card-item/index.js +206 -0
- package/dist/views/card/card-items/index.css +31 -0
- package/dist/views/card/card-items/index.js +189 -0
- package/dist/views/card/context-menu/index.js +165 -0
- package/dist/views/card/index.js +64 -0
- package/dist/views/card/settings/index.css +68 -0
- package/dist/views/card/settings/index.js +143 -0
- package/dist/views/index.js +5 -3
- package/dist/views/table/editors/editor-container/index.js +2 -2
- package/dist/views/table/formatters/file-name.js +3 -3
- package/dist/views/table/index.js +2 -3
- package/dist/views/table/table-main/index.js +2 -2
- package/dist/views/table/table-main/rows/row/cell/formatter.js +2 -2
- package/dist/views/table/table-main/rows/row/cell/index.js +2 -2
- package/dist/views/table/table-main/rows-header/cell/dropdown-menu/index.js +1 -1
- package/dist/views/table/table-main/rows-header/cell/index.js +1 -1
- package/dist/views/table/table-main/rows-header/index.js +2 -2
- package/package.json +5 -2
- package/dist/components/view-toolbar/views/all-views/index.css +0 -85
- package/dist/components/view-toolbar/views/all-views/index.js +0 -165
- package/dist/components/view-toolbar/views/index.css +0 -22
- package/dist/components/view-toolbar/views/index.js +0 -215
- package/dist/components/view-toolbar/views/view-item/index.css +0 -83
- package/dist/components/view-toolbar/views/view-item/index.js +0 -159
- package/dist/hooks/viewsData.js +0 -154
|
@@ -0,0 +1,165 @@
|
|
|
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;
|
|
@@ -0,0 +1,64 @@
|
|
|
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;
|
|
@@ -0,0 +1,68 @@
|
|
|
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
|
+
}
|
|
@@ -0,0 +1,143 @@
|
|
|
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;
|
package/dist/views/index.js
CHANGED
|
@@ -7,9 +7,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
exports.default = void 0;
|
|
9
9
|
var _react = _interopRequireWildcard(require("react"));
|
|
10
|
-
var _centeredLoading = _interopRequireDefault(require("../common/components/centered-loading"));
|
|
11
10
|
var _constants = require("../constants");
|
|
12
11
|
var _hooks = require("../hooks");
|
|
12
|
+
var _card = _interopRequireDefault(require("./card"));
|
|
13
13
|
var _table = _interopRequireDefault(require("./table"));
|
|
14
14
|
const View = _ref => {
|
|
15
15
|
let {
|
|
@@ -18,7 +18,6 @@ const View = _ref => {
|
|
|
18
18
|
children
|
|
19
19
|
} = _ref;
|
|
20
20
|
const {
|
|
21
|
-
isLoading,
|
|
22
21
|
metadata,
|
|
23
22
|
errorMessage
|
|
24
23
|
} = (0, _hooks.useMetadata)();
|
|
@@ -35,6 +34,10 @@ const View = _ref => {
|
|
|
35
34
|
children: children
|
|
36
35
|
});
|
|
37
36
|
}
|
|
37
|
+
case _constants.VIEW_TYPE.CARD:
|
|
38
|
+
{
|
|
39
|
+
return /*#__PURE__*/_react.default.createElement(_card.default, null);
|
|
40
|
+
}
|
|
38
41
|
default:
|
|
39
42
|
{
|
|
40
43
|
return /*#__PURE__*/_react.default.createElement(_table.default, {
|
|
@@ -45,7 +48,6 @@ const View = _ref => {
|
|
|
45
48
|
}
|
|
46
49
|
}
|
|
47
50
|
}, [fixedColumnCount, expandRow, children]);
|
|
48
|
-
if (isLoading) return /*#__PURE__*/_react.default.createElement(_centeredLoading.default, null);
|
|
49
51
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
50
52
|
className: "sea-metadata-wrapper"
|
|
51
53
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
@@ -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
|
|
10
|
+
var _hooks = require("../../../../hooks");
|
|
11
11
|
var _column = require("../../../../utils/column");
|
|
12
12
|
var _normalEditorContainer = _interopRequireDefault(require("./normal-editor-container"));
|
|
13
13
|
var _popupEditorContainer = _interopRequireDefault(require("./popup-editor-container"));
|
|
@@ -17,7 +17,7 @@ const PREVIEW_EDITOR_COLUMN_TYPES = [_constants.CellType.FILE_NAME];
|
|
|
17
17
|
const EditorContainer = props => {
|
|
18
18
|
const {
|
|
19
19
|
context
|
|
20
|
-
} = (0,
|
|
20
|
+
} = (0, _hooks.useFileRepoContext)();
|
|
21
21
|
const {
|
|
22
22
|
column,
|
|
23
23
|
openEditorMode
|
|
@@ -12,7 +12,7 @@ var _iconUtils = require("../../../common/utils/icon-utils");
|
|
|
12
12
|
var _utils = require("../../../common/utils/utils");
|
|
13
13
|
var _fileNameFormatter = _interopRequireDefault(require("../../../components/cell-formatter/file-name-formatter"));
|
|
14
14
|
var _globalSettings = _interopRequireDefault(require("../../../global-settings"));
|
|
15
|
-
var
|
|
15
|
+
var _hooks = require("../../../hooks");
|
|
16
16
|
var _cell = require("../../../utils/cell");
|
|
17
17
|
var _row = require("../../../utils/row");
|
|
18
18
|
const FileName = _ref => {
|
|
@@ -26,7 +26,7 @@ const FileName = _ref => {
|
|
|
26
26
|
} = _ref;
|
|
27
27
|
const {
|
|
28
28
|
context
|
|
29
|
-
} = (0,
|
|
29
|
+
} = (0, _hooks.useFileRepoContext)();
|
|
30
30
|
const parentDir = (0, _react.useMemo)(() => (0, _cell.getParentDirFromRecord)(row), [row]);
|
|
31
31
|
const isDir = (0, _react.useMemo)(() => (0, _row.checkIsDir)(row), [row]);
|
|
32
32
|
const className = (0, _react.useMemo)(() => {
|
|
@@ -45,9 +45,9 @@ const FileName = _ref => {
|
|
|
45
45
|
const defaultIconUrl = (0, _iconUtils.getFileIconUrl)(value);
|
|
46
46
|
if (_utils.Utils.imageCheck(value)) {
|
|
47
47
|
const path = _utils.Utils.encodePath(_utils.Utils.joinPath(parentDir, value));
|
|
48
|
-
const repoID = context.getViewSetting('repoID');
|
|
49
48
|
const siteRoot = _globalSettings.default.getSetting('siteRoot');
|
|
50
49
|
const thumbnailDefaultSize = _globalSettings.default.getSetting('thumbnailDefaultSize') || 256;
|
|
50
|
+
const repoID = context.getViewSetting('repoID');
|
|
51
51
|
const thumbnail = `${siteRoot}thumbnail/${repoID}/${thumbnailDefaultSize}${path}?mtime=${(0, _cell.getFileMTimeFromRecord)(row)}`;
|
|
52
52
|
return {
|
|
53
53
|
iconUrl: thumbnail,
|
|
@@ -12,9 +12,8 @@ var _toaster = _interopRequireDefault(require("../../common/components/toaster")
|
|
|
12
12
|
var _hotkey = require("../../common/utils/hotkey");
|
|
13
13
|
var _typeDetection = require("../../common/utils/type-detection");
|
|
14
14
|
var _utils = require("../../common/utils/utils");
|
|
15
|
-
var _appContext = require("../../hooks/app-context");
|
|
16
|
-
var _constants = require("../../constants");
|
|
17
15
|
var _hooks = require("../../hooks");
|
|
16
|
+
var _constants = require("../../constants");
|
|
18
17
|
var _group = require("../../utils/group");
|
|
19
18
|
var _tableMain = _interopRequireDefault(require("./table-main"));
|
|
20
19
|
require("./index.css");
|
|
@@ -26,7 +25,7 @@ const Table = _ref => {
|
|
|
26
25
|
} = _ref;
|
|
27
26
|
const {
|
|
28
27
|
context
|
|
29
|
-
} = (0,
|
|
28
|
+
} = (0, _hooks.useFileRepoContext)();
|
|
30
29
|
const [isLoadingMore, setLoadingMore] = (0, _react.useState)(false);
|
|
31
30
|
const [isShowRowExpand, setIsShowRowExpand] = (0, _react.useState)(false);
|
|
32
31
|
const expandRowRef = (0, _react.useRef)(null);
|
|
@@ -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 _constants = require("../../../constants");
|
|
12
|
-
var
|
|
12
|
+
var _hooks = require("../../../hooks");
|
|
13
13
|
var _gridUtils = _interopRequireDefault(require("../utils/grid-utils"));
|
|
14
14
|
var _rows = _interopRequireDefault(require("./rows"));
|
|
15
15
|
require("./index.css");
|
|
@@ -33,7 +33,7 @@ const TableMain = _ref => {
|
|
|
33
33
|
} = _ref;
|
|
34
34
|
const {
|
|
35
35
|
context
|
|
36
|
-
} = (0,
|
|
36
|
+
} = (0, _hooks.useFileRepoContext)();
|
|
37
37
|
const gridUtils = (0, _react.useMemo)(() => {
|
|
38
38
|
return new _gridUtils.default(metadata, {
|
|
39
39
|
context,
|
|
@@ -9,7 +9,7 @@ var _react = _interopRequireDefault(require("react"));
|
|
|
9
9
|
var _checkboxEditor = _interopRequireDefault(require("../../../../../../components/cell-editors/checkbox-editor"));
|
|
10
10
|
var _priorityEditor = _interopRequireDefault(require("../../../../../../components/cell-editors/priority-editor"));
|
|
11
11
|
var _constants = require("../../../../../../constants");
|
|
12
|
-
var
|
|
12
|
+
var _hooks = require("../../../../../../hooks");
|
|
13
13
|
var _cell = require("../../../../../../utils/cell");
|
|
14
14
|
var _fileName = _interopRequireDefault(require("../../../../formatters/file-name"));
|
|
15
15
|
var _formatters = _interopRequireDefault(require("../../../../formatters"));
|
|
@@ -27,7 +27,7 @@ const Formatter = _ref => {
|
|
|
27
27
|
} = column;
|
|
28
28
|
const {
|
|
29
29
|
context
|
|
30
|
-
} = (0,
|
|
30
|
+
} = (0, _hooks.useFileRepoContext)();
|
|
31
31
|
const cellEditAble = (0, _cell.canEditCell)(context, column, row, true);
|
|
32
32
|
if (type === _constants.CellType.CHECKBOX && cellEditAble) {
|
|
33
33
|
return /*#__PURE__*/_react.default.createElement(_checkboxEditor.default, {
|
|
@@ -11,7 +11,7 @@ var _classnames = _interopRequireDefault(require("classnames"));
|
|
|
11
11
|
var _objectUtils = _interopRequireDefault(require("../../../../../../common/utils/object-utils"));
|
|
12
12
|
var _typeDetection = require("../../../../../../common/utils/type-detection");
|
|
13
13
|
var _constants = require("../../../../../../constants");
|
|
14
|
-
var
|
|
14
|
+
var _hooks = require("../../../../../../hooks");
|
|
15
15
|
var _cell = require("../../../../../../utils/cell");
|
|
16
16
|
var _file = require("../../../../../../utils/file");
|
|
17
17
|
var _formatter = _interopRequireDefault(require("./formatter"));
|
|
@@ -36,7 +36,7 @@ const Cell = /*#__PURE__*/_react.default.memo(_ref => {
|
|
|
36
36
|
} = _ref;
|
|
37
37
|
const {
|
|
38
38
|
context
|
|
39
|
-
} = (0,
|
|
39
|
+
} = (0, _hooks.useFileRepoContext)();
|
|
40
40
|
const canEditable = (0, _react.useMemo)(() => {
|
|
41
41
|
if (!context.canModifyCell(column, row)) return false;
|
|
42
42
|
const {
|
|
@@ -31,7 +31,7 @@ const HeaderDropdownMenu = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
|
|
|
31
31
|
} = _ref;
|
|
32
32
|
const {
|
|
33
33
|
context
|
|
34
|
-
} = (0, _hooks.
|
|
34
|
+
} = (0, _hooks.useFileRepoContext)();
|
|
35
35
|
const menuRef = /*#__PURE__*/(0, _react.createRef)();
|
|
36
36
|
const dropdownDomRef = /*#__PURE__*/(0, _react.createRef)();
|
|
37
37
|
const [isMenuShow, setMenuShow] = (0, _react.useState)(false);
|
|
@@ -44,7 +44,7 @@ const Cell = _ref => {
|
|
|
44
44
|
const dropdownRef = (0, _react.useRef)(null);
|
|
45
45
|
const {
|
|
46
46
|
context
|
|
47
|
-
} = (0, _hooks.
|
|
47
|
+
} = (0, _hooks.useFileRepoContext)();
|
|
48
48
|
const canEditColumnInfo = (0, _react.useMemo)(() => {
|
|
49
49
|
if (isHideTriangle) return false;
|
|
50
50
|
return context.canModify();
|
|
@@ -9,7 +9,7 @@ exports.default = void 0;
|
|
|
9
9
|
var _react = _interopRequireWildcard(require("react"));
|
|
10
10
|
var _utils = require("../../../../common/utils/utils");
|
|
11
11
|
var _constants = require("../../../../constants");
|
|
12
|
-
var
|
|
12
|
+
var _hooks = require("../../../../hooks");
|
|
13
13
|
var _column = require("../../../../utils/column");
|
|
14
14
|
var _common = require("../../../../utils/common");
|
|
15
15
|
var _actionsCell = _interopRequireDefault(require("./actions-cell"));
|
|
@@ -38,7 +38,7 @@ const RowsHeader = _ref => {
|
|
|
38
38
|
} = _ref;
|
|
39
39
|
const {
|
|
40
40
|
context
|
|
41
|
-
} = (0,
|
|
41
|
+
} = (0, _hooks.useFileRepoContext)();
|
|
42
42
|
const [resizingColumnMetrics, setResizingColumnMetrics] = (0, _react.useState)(null);
|
|
43
43
|
const [draggingColumnKey, setDraggingCellKey] = (0, _react.useState)(null);
|
|
44
44
|
const [dragOverColumnKey, setDragOverCellKey] = (0, _react.useState)(null);
|