@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.
- package/dist/api/api.js +21 -27
- package/dist/common/components/file-tag/index.js +2 -2
- package/dist/common/utils/icon-utils.js +2 -9
- package/dist/common/utils/utils.js +0 -28
- 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 +2 -1
- package/dist/components/context-menu/index.js +2 -2
- package/dist/components/data-process-setter/filter-setter.js +2 -1
- package/dist/components/data-process-setter/manage-setter.js +2 -1
- package/dist/components/data-process-setter/sort-setter.js +2 -2
- package/dist/components/icons/index.js +1 -14
- 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/index.css +1 -54
- package/dist/components/view-toolbar/index.js +48 -40
- 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/views/all-views/index.css +85 -0
- package/dist/components/view-toolbar/views/all-views/index.js +165 -0
- package/dist/components/view-toolbar/views/index.css +22 -0
- package/dist/components/view-toolbar/views/index.js +215 -0
- package/dist/components/view-toolbar/views/view-item/index.css +83 -0
- package/dist/components/view-toolbar/views/view-item/index.js +159 -0
- package/dist/constants/event-bus-type.js +1 -3
- package/dist/constants/view/index.js +2 -32
- package/dist/context.js +34 -79
- package/dist/database.js +18 -11
- package/dist/global-settings.js +1 -3
- package/dist/hooks/{file-repo-context.js → app-context.js} +20 -25
- package/dist/hooks/collaborators.js +3 -9
- package/dist/hooks/index.js +14 -14
- package/dist/hooks/metadata.js +47 -45
- package/dist/hooks/tagsData.js +2 -8
- package/dist/hooks/viewsData.js +114 -0
- package/dist/index.js +3 -3
- package/dist/locale/en.js +1 -6
- package/dist/locale/zh_CN.js +1 -6
- package/dist/store/data-processor.js +0 -1
- package/dist/views/index.js +3 -5
- 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 +3 -2
- 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 +1 -1
- package/dist/assets/css/dropdown-menu.css +0 -96
- package/dist/components/dialogs/custom-modal-header/index.css +0 -34
- package/dist/components/dialogs/custom-modal-header/index.js +0 -34
- package/dist/components/dialogs/insert-view-dialog.js +0 -104
- package/dist/components/icons/arrow-down-icon.js +0 -19
- package/dist/components/icons/arrow-up-icon.js +0 -19
- package/dist/components/icons/close-icon.js +0 -23
- package/dist/components/icons/set-up-icon.js +0 -22
- package/dist/components/view-toolbar/card-view-toolbar/index.js +0 -89
- package/dist/components/view-toolbar/view-items/index.css +0 -55
- package/dist/components/view-toolbar/view-items/index.js +0 -98
- package/dist/components/view-toolbar/view-items/views-popover.js +0 -80
- package/dist/file-base.js +0 -31
- package/dist/hooks/file-view-context.js +0 -69
- package/dist/views/card/card-items/card-item/formatter.js +0 -45
- package/dist/views/card/card-items/card-item/index.css +0 -234
- package/dist/views/card/card-items/card-item/index.js +0 -206
- package/dist/views/card/card-items/index.css +0 -31
- package/dist/views/card/card-items/index.js +0 -189
- package/dist/views/card/context-menu/index.js +0 -165
- package/dist/views/card/index.js +0 -64
- package/dist/views/card/settings/index.css +0 -68
- package/dist/views/card/settings/index.js +0 -143
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
.sea-metadata-views .sea-metadata-view-container {
|
|
2
|
+
padding: 0 12px;
|
|
3
|
+
display: flex;
|
|
4
|
+
align-items: center;
|
|
5
|
+
height: 100%;
|
|
6
|
+
flex-shrink: 0;
|
|
7
|
+
position: relative;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.sea-metadata-views .sea-metadata-view-container:first-child {
|
|
11
|
+
padding-left: 0;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.sea-metadata-views .sea-metadata-view-next-position-before::before,
|
|
15
|
+
.sea-metadata-views .sea-metadata-view-next-position-after::after {
|
|
16
|
+
content: '';
|
|
17
|
+
border: 1px solid #555;
|
|
18
|
+
border-radius: 1px;
|
|
19
|
+
position: absolute;
|
|
20
|
+
top: 4px;
|
|
21
|
+
bottom: 4px;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.sea-metadata-views .sea-metadata-view-next-position-before::before {
|
|
25
|
+
left: 0;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
.sea-metadata-views .sea-metadata-view-next-position-after::after {
|
|
29
|
+
right: -2px;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.sea-metadata-views .sea-metadata-view-item {
|
|
33
|
+
height: 100%;
|
|
34
|
+
display: flex;
|
|
35
|
+
align-items: center;
|
|
36
|
+
gap: 4px;
|
|
37
|
+
cursor: pointer;
|
|
38
|
+
flex-shrink: 0;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
.sea-metadata-views .sea-metadata-view-item.disabled {
|
|
42
|
+
cursor: default;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.sea-metadata-views .sea-metadata-view-item.active {
|
|
46
|
+
color: #ED7109;
|
|
47
|
+
position: relative;
|
|
48
|
+
transition: color .3;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.sea-metadata-views .sea-metadata-view-item.active::before {
|
|
52
|
+
content: '';
|
|
53
|
+
position: absolute;
|
|
54
|
+
bottom: 0;
|
|
55
|
+
left: 0;
|
|
56
|
+
width: 100%;
|
|
57
|
+
height: 2px;
|
|
58
|
+
background-color: #ED7109;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
.sea-metadata-views .sea-metadata-view-item-operation-down {
|
|
62
|
+
height: 12px;
|
|
63
|
+
width: 12px;
|
|
64
|
+
display: flex;
|
|
65
|
+
align-items: center;
|
|
66
|
+
justify-content: center;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.sea-metadata-view-dropdown-menu {
|
|
70
|
+
display: block;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
.sea-metadata-view-dropdown-menu .dropdown-item .sea-qa-icon-svg {
|
|
74
|
+
margin-right: 10px;
|
|
75
|
+
height: 14px;
|
|
76
|
+
width: 14px;
|
|
77
|
+
color: #666;
|
|
78
|
+
margin-top: -2px;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
.sea-metadata-view-dropdown-menu .dropdown-item:hover .sea-qa-icon-svg {
|
|
82
|
+
color: #FFF;
|
|
83
|
+
}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = void 0;
|
|
8
|
+
var _react = require("react");
|
|
9
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
|
10
|
+
var _clickOutside = _interopRequireDefault(require("../../../../common/components/click-outside"));
|
|
11
|
+
var _commonOperationConfirmationDialog = _interopRequireDefault(require("../../../../common/components/common-operation-confirmation-dialog"));
|
|
12
|
+
var _modalPortal = _interopRequireDefault(require("../../../../common/components/modal-portal"));
|
|
13
|
+
var _typeDetection = require("../../../../common/utils/type-detection");
|
|
14
|
+
var _icons = _interopRequireDefault(require("../../../icons"));
|
|
15
|
+
var _translate = _interopRequireDefault(require("../../../../lang/translate"));
|
|
16
|
+
require("./index.css");
|
|
17
|
+
const ViewItem = _ref => {
|
|
18
|
+
let {
|
|
19
|
+
view,
|
|
20
|
+
isSelect,
|
|
21
|
+
modifyAble,
|
|
22
|
+
deleteAble,
|
|
23
|
+
moveAble,
|
|
24
|
+
duplicateAble,
|
|
25
|
+
onSelect,
|
|
26
|
+
onModify,
|
|
27
|
+
onMove,
|
|
28
|
+
onDelete,
|
|
29
|
+
onDuplicate
|
|
30
|
+
} = _ref;
|
|
31
|
+
const [isShowDropdownMenu, setIsShowDropdownMenu] = (0, _react.useState)(false);
|
|
32
|
+
const [dropRelativePosition, setDropRelativePosition] = (0, _react.useState)('');
|
|
33
|
+
const [isShowDeleteConfirmationDialog, setIsShowDeleteConfirmationDialog] = (0, _react.useState)(false);
|
|
34
|
+
const containerRef = (0, _react.useRef)(null);
|
|
35
|
+
const viewRef = (0, _react.useRef)(null);
|
|
36
|
+
const menuStyle = (0, _react.useRef)({});
|
|
37
|
+
const enteredCounter = (0, _react.useRef)(0);
|
|
38
|
+
const onDragStart = (0, _react.useCallback)(event => {
|
|
39
|
+
event.stopPropagation();
|
|
40
|
+
event.dataTransfer.setDragImage(containerRef.current, 10, 10);
|
|
41
|
+
event.dataTransfer.effectAllowed = 'move';
|
|
42
|
+
event.dataTransfer.setData('text/plain', view._id);
|
|
43
|
+
}, [view]);
|
|
44
|
+
const onDragEnter = (0, _react.useCallback)(event => {
|
|
45
|
+
event.stopPropagation();
|
|
46
|
+
enteredCounter.current = enteredCounter.current + 1;
|
|
47
|
+
}, []);
|
|
48
|
+
const onDragOver = (0, _react.useCallback)(event => {
|
|
49
|
+
if (event.dataTransfer.dropEffect === 'copy') return;
|
|
50
|
+
event.stopPropagation();
|
|
51
|
+
event.preventDefault();
|
|
52
|
+
event.dataTransfer.dropEffect = 'move';
|
|
53
|
+
const dropRelativePosition = event.nativeEvent.offsetX <= event.target.clientWidth / 2 ? 'before' : 'after';
|
|
54
|
+
setDropRelativePosition(dropRelativePosition);
|
|
55
|
+
}, []);
|
|
56
|
+
const onDragLeave = (0, _react.useCallback)(event => {
|
|
57
|
+
event.stopPropagation();
|
|
58
|
+
enteredCounter.current = enteredCounter.current - 1;
|
|
59
|
+
if (!enteredCounter.current === 0) return;
|
|
60
|
+
setDropRelativePosition('');
|
|
61
|
+
}, []);
|
|
62
|
+
const onDrop = (0, _react.useCallback)(event => {
|
|
63
|
+
event.stopPropagation();
|
|
64
|
+
event.preventDefault();
|
|
65
|
+
enteredCounter.current = 0;
|
|
66
|
+
const moveViewID = event.dataTransfer.getData('text/plain');
|
|
67
|
+
const {
|
|
68
|
+
_id
|
|
69
|
+
} = view;
|
|
70
|
+
if (moveViewID !== _id) {
|
|
71
|
+
onMove && onMove(moveViewID, _id, dropRelativePosition);
|
|
72
|
+
}
|
|
73
|
+
setDropRelativePosition('');
|
|
74
|
+
}, [view, dropRelativePosition, onMove]);
|
|
75
|
+
const openDropdownMenu = (0, _react.useCallback)(() => {
|
|
76
|
+
const {
|
|
77
|
+
left,
|
|
78
|
+
bottom
|
|
79
|
+
} = viewRef.current.getBoundingClientRect();
|
|
80
|
+
menuStyle.current = {
|
|
81
|
+
left,
|
|
82
|
+
top: bottom
|
|
83
|
+
};
|
|
84
|
+
setIsShowDropdownMenu(true);
|
|
85
|
+
}, []);
|
|
86
|
+
const closeDropdown = (0, _react.useCallback)(() => {
|
|
87
|
+
setIsShowDropdownMenu(false);
|
|
88
|
+
}, []);
|
|
89
|
+
const openDeleteConfirmationDialog = (0, _react.useCallback)(() => {
|
|
90
|
+
setIsShowDropdownMenu(false);
|
|
91
|
+
setIsShowDeleteConfirmationDialog(true);
|
|
92
|
+
}, []);
|
|
93
|
+
const closeDeleteConfirmationDialog = (0, _react.useCallback)(() => {
|
|
94
|
+
setIsShowDeleteConfirmationDialog(false);
|
|
95
|
+
}, []);
|
|
96
|
+
const handleModify = (0, _react.useCallback)(() => {
|
|
97
|
+
setIsShowDropdownMenu(false);
|
|
98
|
+
onModify && onModify();
|
|
99
|
+
}, [onModify]);
|
|
100
|
+
const handleDuplicate = (0, _react.useCallback)(() => {
|
|
101
|
+
setIsShowDropdownMenu(false);
|
|
102
|
+
onDuplicate && onDuplicate(view._id);
|
|
103
|
+
}, [view, onDuplicate]);
|
|
104
|
+
const props = moveAble ? {
|
|
105
|
+
onDragStart,
|
|
106
|
+
onDragEnter,
|
|
107
|
+
onDragOver,
|
|
108
|
+
onDragLeave,
|
|
109
|
+
onDrop,
|
|
110
|
+
draggable: 'true'
|
|
111
|
+
} : {};
|
|
112
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", Object.assign({
|
|
113
|
+
className: (0, _classnames.default)('sea-metadata-view-container', {
|
|
114
|
+
'sea-metadata-view-next-position-before': dropRelativePosition === 'before',
|
|
115
|
+
'sea-metadata-view-next-position-after': dropRelativePosition === 'after'
|
|
116
|
+
}),
|
|
117
|
+
ref: containerRef
|
|
118
|
+
}, props), /*#__PURE__*/React.createElement("div", {
|
|
119
|
+
className: (0, _classnames.default)('sea-metadata-view-item', {
|
|
120
|
+
'active': isSelect,
|
|
121
|
+
'disabled': !(0, _typeDetection.isFunction)(onSelect)
|
|
122
|
+
}),
|
|
123
|
+
onClick: () => onSelect && onSelect(view._id),
|
|
124
|
+
key: view._id,
|
|
125
|
+
ref: viewRef
|
|
126
|
+
}, view.name, isSelect && /*#__PURE__*/React.createElement("div", {
|
|
127
|
+
className: "sea-metadata-view-item-operation-down",
|
|
128
|
+
onClick: openDropdownMenu
|
|
129
|
+
}, /*#__PURE__*/React.createElement(_icons.default, {
|
|
130
|
+
symbol: "down"
|
|
131
|
+
})))), isShowDeleteConfirmationDialog && /*#__PURE__*/React.createElement(_commonOperationConfirmationDialog.default, {
|
|
132
|
+
toggleDialog: closeDeleteConfirmationDialog,
|
|
133
|
+
title: _translate.default.gettext('Delete view'),
|
|
134
|
+
message: _translate.default.gettext('Are you sure you want to delete view {placeholder} ?').replace('{placeholder}', `<b>${view.name}</b>`),
|
|
135
|
+
confirmBtnText: _translate.default.gettext('Delete'),
|
|
136
|
+
executeOperation: () => onDelete(view._id)
|
|
137
|
+
}), isShowDropdownMenu && /*#__PURE__*/React.createElement(_modalPortal.default, null, /*#__PURE__*/React.createElement(_clickOutside.default, {
|
|
138
|
+
onClickOutside: closeDropdown
|
|
139
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
140
|
+
className: "sea-qa-dropdown-menu dropdown-menu position-fixed sea-metadata-view-dropdown-menu",
|
|
141
|
+
style: menuStyle.current
|
|
142
|
+
}, modifyAble && /*#__PURE__*/React.createElement("button", {
|
|
143
|
+
onClick: handleModify,
|
|
144
|
+
className: "dropdown-item sea-qa-dropdown-item"
|
|
145
|
+
}, /*#__PURE__*/React.createElement(_icons.default, {
|
|
146
|
+
symbol: "rename"
|
|
147
|
+
}), _translate.default.gettext('Rename view')), duplicateAble && /*#__PURE__*/React.createElement("button", {
|
|
148
|
+
onClick: handleDuplicate,
|
|
149
|
+
className: "dropdown-item sea-qa-dropdown-item"
|
|
150
|
+
}, /*#__PURE__*/React.createElement(_icons.default, {
|
|
151
|
+
symbol: "copy"
|
|
152
|
+
}), _translate.default.gettext('Duplicate view')), deleteAble && /*#__PURE__*/React.createElement("button", {
|
|
153
|
+
onClick: openDeleteConfirmationDialog,
|
|
154
|
+
className: "dropdown-item sea-qa-dropdown-item"
|
|
155
|
+
}, /*#__PURE__*/React.createElement(_icons.default, {
|
|
156
|
+
symbol: "delete"
|
|
157
|
+
}), _translate.default.gettext('Delete view'))))));
|
|
158
|
+
};
|
|
159
|
+
var _default = exports.default = ViewItem;
|
|
@@ -66,7 +66,5 @@ const EVENT_BUS_TYPE = exports.EVENT_BUS_TYPE = {
|
|
|
66
66
|
START_SEARCH_ROWS: 'start_search_rows',
|
|
67
67
|
CLEAR_SEARCH_ROWS: 'clear_search_rows',
|
|
68
68
|
RE_SEARCH_ROWS: 're_search_rows',
|
|
69
|
-
DISPLAY_SORTS: 'display_sorts'
|
|
70
|
-
// card
|
|
71
|
-
UPDATE_SELECTED_RECORD_IDS: 'update_selected_record_ids'
|
|
69
|
+
DISPLAY_SORTS: 'display_sorts'
|
|
72
70
|
};
|
|
@@ -17,7 +17,6 @@ var _exportNames = {
|
|
|
17
17
|
VIEW_SORT_COLUMN_RULES: true,
|
|
18
18
|
VIEW_FIRST_SORT_COLUMN_RULES: true,
|
|
19
19
|
KANBAN_SETTINGS_KEYS: true,
|
|
20
|
-
CARD_SETTINGS_KEYS: true,
|
|
21
20
|
VIEW_DEFAULT_SETTINGS: true,
|
|
22
21
|
VIEW_PROPERTY_KEYS: true,
|
|
23
22
|
VIEW_INCOMPATIBLE_PROPERTIES: true,
|
|
@@ -25,8 +24,7 @@ var _exportNames = {
|
|
|
25
24
|
VIEW_TOOL: true,
|
|
26
25
|
VIEW_TOOLS: true
|
|
27
26
|
};
|
|
28
|
-
exports.VIEW_TYPE_ICON = exports.VIEW_TYPE_DEFAULT_SORTS = exports.VIEW_TYPE_DEFAULT_BASIC_FILTER = exports.VIEW_TYPES_SUPPORT_SHOW_DETAIL = exports.VIEW_TYPE = exports.VIEW_TOOLS = exports.VIEW_TOOL = exports.VIEW_SORT_COLUMN_RULES = exports.VIEW_PROPERTY_KEYS = exports.VIEW_INCOMPATIBLE_PROPERTIES = exports.VIEW_FIRST_SORT_COLUMN_RULES = exports.VIEW_DEFAULT_SETTINGS = exports.VIEWS_TYPE_VIEW = exports.VIEWS_TYPE_FOLDER = exports.TREE_NODE_LEFT_INDENT = exports.METADATA_VIEWS_KEY = exports.METADATA_VIEWS_DRAG_DATA_KEY = exports.KANBAN_SETTINGS_KEYS = exports.FACE_RECOGNITION_VIEW_ID =
|
|
29
|
-
var _column = require("../column");
|
|
27
|
+
exports.VIEW_TYPE_ICON = exports.VIEW_TYPE_DEFAULT_SORTS = exports.VIEW_TYPE_DEFAULT_BASIC_FILTER = exports.VIEW_TYPES_SUPPORT_SHOW_DETAIL = exports.VIEW_TYPE = exports.VIEW_TOOLS = exports.VIEW_TOOL = exports.VIEW_SORT_COLUMN_RULES = exports.VIEW_PROPERTY_KEYS = exports.VIEW_INCOMPATIBLE_PROPERTIES = exports.VIEW_FIRST_SORT_COLUMN_RULES = exports.VIEW_DEFAULT_SETTINGS = exports.VIEWS_TYPE_VIEW = exports.VIEWS_TYPE_FOLDER = exports.TREE_NODE_LEFT_INDENT = exports.METADATA_VIEWS_KEY = exports.METADATA_VIEWS_DRAG_DATA_KEY = exports.KANBAN_SETTINGS_KEYS = exports.FACE_RECOGNITION_VIEW_ID = void 0;
|
|
30
28
|
var _filter = require("../filter");
|
|
31
29
|
var _sort = require("../sort");
|
|
32
30
|
var _gallery = require("./gallery");
|
|
@@ -73,8 +71,7 @@ const VIEWS_TYPE_VIEW = exports.VIEWS_TYPE_VIEW = 'view';
|
|
|
73
71
|
const VIEW_TYPE = exports.VIEW_TYPE = {
|
|
74
72
|
TABLE: 'table',
|
|
75
73
|
GALLERY: 'gallery',
|
|
76
|
-
KANBAN: 'kanban'
|
|
77
|
-
CARD: 'card'
|
|
74
|
+
KANBAN: 'kanban'
|
|
78
75
|
};
|
|
79
76
|
const FACE_RECOGNITION_VIEW_ID = exports.FACE_RECOGNITION_VIEW_ID = '_face_recognition';
|
|
80
77
|
const VIEW_TYPE_ICON = exports.VIEW_TYPE_ICON = {
|
|
@@ -96,19 +93,6 @@ const VIEW_TYPE_DEFAULT_BASIC_FILTER = exports.VIEW_TYPE_DEFAULT_BASIC_FILTER =
|
|
|
96
93
|
filter_predicate: _filter.FILTER_PREDICATE_TYPE.HAS_ANY_OF,
|
|
97
94
|
filter_term: []
|
|
98
95
|
}],
|
|
99
|
-
[VIEW_TYPE.CARD]: [{
|
|
100
|
-
column_key: _column.PRIVATE_COLUMN_KEY.IS_DIR,
|
|
101
|
-
filter_predicate: _filter.FILTER_PREDICATE_TYPE.IS,
|
|
102
|
-
filter_term: 'file'
|
|
103
|
-
}, {
|
|
104
|
-
column_key: _column.PRIVATE_COLUMN_KEY.FILE_TYPE,
|
|
105
|
-
filter_predicate: _filter.FILTER_PREDICATE_TYPE.IS_ANY_OF,
|
|
106
|
-
filter_term: []
|
|
107
|
-
}, {
|
|
108
|
-
column_key: _column.PRIVATE_COLUMN_KEY.TAGS,
|
|
109
|
-
filter_predicate: _filter.FILTER_PREDICATE_TYPE.HAS_ALL_OF,
|
|
110
|
-
filter_term: []
|
|
111
|
-
}],
|
|
112
96
|
[VIEW_TYPE.GALLERY]: [],
|
|
113
97
|
[VIEW_TYPE.KANBAN]: []
|
|
114
98
|
};
|
|
@@ -119,13 +103,11 @@ const VIEW_TYPE_DEFAULT_SORTS = exports.VIEW_TYPE_DEFAULT_SORTS = {
|
|
|
119
103
|
};
|
|
120
104
|
const VIEW_SORT_COLUMN_RULES = exports.VIEW_SORT_COLUMN_RULES = {
|
|
121
105
|
[VIEW_TYPE.TABLE]: column => _sort.SORT_COLUMN_OPTIONS.includes(column.type) && column.sort_able,
|
|
122
|
-
[VIEW_TYPE.CARD]: column => _sort.SORT_COLUMN_OPTIONS.includes(column.type),
|
|
123
106
|
[VIEW_TYPE.GALLERY]: column => _sort.GALLERY_SORT_COLUMN_OPTIONS.includes(column.type) && column.sort_able,
|
|
124
107
|
[VIEW_TYPE.KANBAN]: column => _sort.SORT_COLUMN_OPTIONS.includes(column.type) && column.sort_able
|
|
125
108
|
};
|
|
126
109
|
const VIEW_FIRST_SORT_COLUMN_RULES = exports.VIEW_FIRST_SORT_COLUMN_RULES = {
|
|
127
110
|
[VIEW_TYPE.TABLE]: column => _sort.SORT_COLUMN_OPTIONS.includes(column.type),
|
|
128
|
-
[VIEW_TYPE.CARD]: column => _sort.SORT_COLUMN_OPTIONS.includes(column.type),
|
|
129
111
|
[VIEW_TYPE.GALLERY]: column => _sort.GALLERY_FIRST_SORT_COLUMN_OPTIONS.includes(column.type),
|
|
130
112
|
[VIEW_TYPE.KANBAN]: column => _sort.SORT_COLUMN_OPTIONS.includes(column.type)
|
|
131
113
|
};
|
|
@@ -137,12 +119,6 @@ const KANBAN_SETTINGS_KEYS = exports.KANBAN_SETTINGS_KEYS = {
|
|
|
137
119
|
TEXT_WRAP: 'text_wrap',
|
|
138
120
|
COLUMNS: 'columns' // display and order
|
|
139
121
|
};
|
|
140
|
-
const CARD_SETTINGS_KEYS = exports.CARD_SETTINGS_KEYS = {
|
|
141
|
-
HIDE_EMPTY_VALUE: 'hide_empty_value',
|
|
142
|
-
SHOW_COLUMN_NAME: 'show_column_name',
|
|
143
|
-
TEXT_WRAP: 'text_wrap',
|
|
144
|
-
COLUMNS: 'columns' // display and order
|
|
145
|
-
};
|
|
146
122
|
const VIEW_DEFAULT_SETTINGS = exports.VIEW_DEFAULT_SETTINGS = {
|
|
147
123
|
[VIEW_TYPE.TABLE]: {},
|
|
148
124
|
[VIEW_TYPE.GALLERY]: {},
|
|
@@ -153,12 +129,6 @@ const VIEW_DEFAULT_SETTINGS = exports.VIEW_DEFAULT_SETTINGS = {
|
|
|
153
129
|
[KANBAN_SETTINGS_KEYS.SHOW_COLUMN_NAME]: false,
|
|
154
130
|
[KANBAN_SETTINGS_KEYS.TEXT_WRAP]: false,
|
|
155
131
|
[KANBAN_SETTINGS_KEYS.COLUMNS]: []
|
|
156
|
-
},
|
|
157
|
-
[VIEW_TYPE.CARD]: {
|
|
158
|
-
[CARD_SETTINGS_KEYS.HIDE_EMPTY_VALUE]: false,
|
|
159
|
-
[CARD_SETTINGS_KEYS.SHOW_COLUMN_NAME]: false,
|
|
160
|
-
[CARD_SETTINGS_KEYS.TEXT_WRAP]: false,
|
|
161
|
-
[CARD_SETTINGS_KEYS.COLUMNS]: []
|
|
162
132
|
}
|
|
163
133
|
};
|
|
164
134
|
const VIEW_PROPERTY_KEYS = exports.VIEW_PROPERTY_KEYS = {
|
package/dist/context.js
CHANGED
|
@@ -25,13 +25,13 @@ class Context {
|
|
|
25
25
|
let isViewComputedOnServer = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
|
|
26
26
|
(0, _defineProperty2.default)(this, "initLocalStorage", settings => {
|
|
27
27
|
const {
|
|
28
|
+
repoID,
|
|
28
29
|
view_data
|
|
29
30
|
} = settings;
|
|
30
31
|
const {
|
|
31
|
-
|
|
32
|
-
file_repo_id: fileRepoID
|
|
32
|
+
view_id: viewID
|
|
33
33
|
} = view_data;
|
|
34
|
-
const localStorageName = `sf-metadata-${
|
|
34
|
+
const localStorageName = `sf-metadata-${repoID}-${viewID}`;
|
|
35
35
|
const localStorage = new _localStorage.default(localStorageName);
|
|
36
36
|
return localStorage;
|
|
37
37
|
});
|
|
@@ -43,9 +43,6 @@ class Context {
|
|
|
43
43
|
this.localStorage = null;
|
|
44
44
|
this.isViewComputedOnServer = true;
|
|
45
45
|
});
|
|
46
|
-
(0, _defineProperty2.default)(this, "initViewSettings", () => {
|
|
47
|
-
// todo;
|
|
48
|
-
});
|
|
49
46
|
(0, _defineProperty2.default)(this, "getViewSetting", function (key) {
|
|
50
47
|
let defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
|
|
51
48
|
if (_this.settings[key] === false) return _this.settings[key];
|
|
@@ -55,33 +52,6 @@ class Context {
|
|
|
55
52
|
const viewData = this.settings['view_data'];
|
|
56
53
|
return viewData.view_id;
|
|
57
54
|
});
|
|
58
|
-
(0, _defineProperty2.default)(this, "addFileRepoIdSetting", fileRepoId => {
|
|
59
|
-
if (!fileRepoId) {
|
|
60
|
-
throw new Error('fileRepoId is not exist');
|
|
61
|
-
}
|
|
62
|
-
this.settings['fileRepoId'] = fileRepoId;
|
|
63
|
-
});
|
|
64
|
-
(0, _defineProperty2.default)(this, "addRepoSetting", repo => {
|
|
65
|
-
if (!repo) {
|
|
66
|
-
throw new Error('fileRepoId is not exist');
|
|
67
|
-
}
|
|
68
|
-
this.settings['repoInfo'] = repo;
|
|
69
|
-
this.settings['repoID'] = repo.repo_id;
|
|
70
|
-
this.settings['permission'] = repo.permission;
|
|
71
|
-
});
|
|
72
|
-
(0, _defineProperty2.default)(this, "getFileRepoInfo", () => {
|
|
73
|
-
if (!this.api) return null;
|
|
74
|
-
const view_data = this.settings['view_data'];
|
|
75
|
-
const {
|
|
76
|
-
wiki_id,
|
|
77
|
-
file_repo_id
|
|
78
|
-
} = view_data;
|
|
79
|
-
return this.api.getFileRepoInfo(wiki_id, file_repo_id);
|
|
80
|
-
});
|
|
81
|
-
(0, _defineProperty2.default)(this, "getRepo", repoID => {
|
|
82
|
-
if (!this.api) return null;
|
|
83
|
-
return this.api.getRepo(repoID);
|
|
84
|
-
});
|
|
85
55
|
(0, _defineProperty2.default)(this, "getCollaborators", () => {
|
|
86
56
|
if (!this.api) return null;
|
|
87
57
|
const {
|
|
@@ -96,62 +66,25 @@ class Context {
|
|
|
96
66
|
} = this.settings;
|
|
97
67
|
return this.api.getTags(repoID);
|
|
98
68
|
});
|
|
99
|
-
// metadata
|
|
100
|
-
(0, _defineProperty2.default)(this, "getMetadata", params => {
|
|
101
|
-
if (!this.api) return null;
|
|
102
|
-
const {
|
|
103
|
-
view_data
|
|
104
|
-
} = this.settings;
|
|
105
|
-
const {
|
|
106
|
-
wiki_id,
|
|
107
|
-
file_repo_id
|
|
108
|
-
} = view_data;
|
|
109
|
-
const newParams = {
|
|
110
|
-
...params,
|
|
111
|
-
wiki_id,
|
|
112
|
-
file_repo_id
|
|
113
|
-
};
|
|
114
|
-
return this.api.getMetadata(newParams);
|
|
115
|
-
});
|
|
116
69
|
// view
|
|
70
|
+
(0, _defineProperty2.default)(this, "getViews", () => {
|
|
71
|
+
return this.api.getViews();
|
|
72
|
+
});
|
|
117
73
|
(0, _defineProperty2.default)(this, "getView", viewId => {
|
|
118
74
|
if (!this.api) return null;
|
|
119
75
|
const {
|
|
120
76
|
view_data
|
|
121
77
|
} = this.settings;
|
|
122
|
-
return this.api.getView(
|
|
123
|
-
...view_data,
|
|
124
|
-
view_id: viewId
|
|
125
|
-
});
|
|
126
|
-
});
|
|
127
|
-
(0, _defineProperty2.default)(this, "insertView", viewData => {
|
|
128
|
-
const {
|
|
129
|
-
view_data
|
|
130
|
-
} = this.settings;
|
|
131
|
-
const {
|
|
132
|
-
wiki_id,
|
|
133
|
-
file_repo_id
|
|
134
|
-
} = view_data;
|
|
135
|
-
return this.api.insertView(wiki_id, file_repo_id, viewData);
|
|
136
|
-
});
|
|
137
|
-
(0, _defineProperty2.default)(this, "deleteView", viewID => {
|
|
138
|
-
return this.api.deleteView(viewID);
|
|
78
|
+
return this.api.getView(view_data);
|
|
139
79
|
});
|
|
140
|
-
|
|
80
|
+
// metadata
|
|
81
|
+
(0, _defineProperty2.default)(this, "getMetadata", params => {
|
|
82
|
+
if (!this.api) return null;
|
|
141
83
|
const {
|
|
142
84
|
view_data
|
|
143
85
|
} = this.settings;
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
file_repo_id
|
|
147
|
-
} = view_data;
|
|
148
|
-
return this.api.modifyView(wiki_id, file_repo_id, viewId, viewData);
|
|
149
|
-
});
|
|
150
|
-
(0, _defineProperty2.default)(this, "moveView", (sourceViewID, targetViewID) => {
|
|
151
|
-
return this.api.moveView(sourceViewID, targetViewID);
|
|
152
|
-
});
|
|
153
|
-
(0, _defineProperty2.default)(this, "duplicateView", viewID => {
|
|
154
|
-
return this.api.duplicateView(viewID);
|
|
86
|
+
params['view_data'] = view_data;
|
|
87
|
+
return this.api.getMetadata(params);
|
|
155
88
|
});
|
|
156
89
|
(0, _defineProperty2.default)(this, "getPermission", () => {
|
|
157
90
|
return this.permission;
|
|
@@ -364,6 +297,28 @@ class Context {
|
|
|
364
297
|
});
|
|
365
298
|
return Promise.all(deletedRows);
|
|
366
299
|
});
|
|
300
|
+
// view
|
|
301
|
+
(0, _defineProperty2.default)(this, "insertView", (name, viewData) => {
|
|
302
|
+
return this.api.insertView(name, viewData);
|
|
303
|
+
});
|
|
304
|
+
(0, _defineProperty2.default)(this, "deleteView", viewID => {
|
|
305
|
+
return this.api.deleteView(viewID);
|
|
306
|
+
});
|
|
307
|
+
(0, _defineProperty2.default)(this, "modifyView", (viewId, viewData) => {
|
|
308
|
+
const {
|
|
309
|
+
view_data
|
|
310
|
+
} = this.settings;
|
|
311
|
+
const {
|
|
312
|
+
wiki_id
|
|
313
|
+
} = view_data;
|
|
314
|
+
return this.api.modifyView(wiki_id, viewId, viewData);
|
|
315
|
+
});
|
|
316
|
+
(0, _defineProperty2.default)(this, "moveView", (sourceViewID, targetViewID) => {
|
|
317
|
+
return this.api.moveView(sourceViewID, targetViewID);
|
|
318
|
+
});
|
|
319
|
+
(0, _defineProperty2.default)(this, "duplicateView", viewID => {
|
|
320
|
+
return this.api.duplicateView(viewID);
|
|
321
|
+
});
|
|
367
322
|
(0, _defineProperty2.default)(this, "getRowsByIds", () => {
|
|
368
323
|
// todo
|
|
369
324
|
});
|
package/dist/database.js
CHANGED
|
@@ -8,18 +8,22 @@ 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 _components = require("./common/components");
|
|
12
11
|
var _viewToolbar = _interopRequireDefault(require("./components/view-toolbar"));
|
|
12
|
+
var _globalSettings = _interopRequireDefault(require("./global-settings"));
|
|
13
13
|
var _hooks = require("./hooks");
|
|
14
|
+
var _appContext = require("./hooks/app-context");
|
|
15
|
+
var _translate = _interopRequireDefault(require("./lang/translate"));
|
|
14
16
|
var _views = _interopRequireDefault(require("./views"));
|
|
15
|
-
const Database = _ref => {
|
|
17
|
+
const Database = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
|
|
16
18
|
let {
|
|
17
19
|
settings,
|
|
18
|
-
fixedColumnCount
|
|
20
|
+
fixedColumnCount = 1
|
|
19
21
|
} = _ref;
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
22
|
+
(0, _react.useEffect)(() => {
|
|
23
|
+
_translate.default.initTranslate(settings);
|
|
24
|
+
_globalSettings.default.initSettings(settings);
|
|
25
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
26
|
+
}, []);
|
|
23
27
|
const style = (0, _react.useMemo)(() => {
|
|
24
28
|
const {
|
|
25
29
|
width,
|
|
@@ -34,13 +38,16 @@ const Database = _ref => {
|
|
|
34
38
|
}
|
|
35
39
|
return null;
|
|
36
40
|
}, [settings.view_data]);
|
|
37
|
-
return /*#__PURE__*/_react.default.createElement(
|
|
41
|
+
return /*#__PURE__*/_react.default.createElement(_appContext.AppContextProvider, {
|
|
42
|
+
settings: settings
|
|
43
|
+
}, /*#__PURE__*/_react.default.createElement(_hooks.CollaboratorsProvider, null, /*#__PURE__*/_react.default.createElement(_hooks.TagsDataProvider, null, /*#__PURE__*/_react.default.createElement(_hooks.TypesDataProvider, null, /*#__PURE__*/_react.default.createElement(_hooks.SelectedRowsProvider, null, /*#__PURE__*/_react.default.createElement(_hooks.MetadataProvider, null, /*#__PURE__*/_react.default.createElement("div", {
|
|
38
44
|
className: (0, _classnames.default)('sea-metadata'),
|
|
39
|
-
style: style
|
|
45
|
+
style: style,
|
|
46
|
+
ref: ref
|
|
40
47
|
}, /*#__PURE__*/_react.default.createElement(_viewToolbar.default, {
|
|
41
48
|
fixedColumnCount: fixedColumnCount
|
|
42
|
-
}), /*#__PURE__*/_react.default.createElement(
|
|
49
|
+
}), /*#__PURE__*/_react.default.createElement(_views.default, {
|
|
43
50
|
fixedColumnCount: fixedColumnCount
|
|
44
|
-
}))));
|
|
45
|
-
};
|
|
51
|
+
}))))))));
|
|
52
|
+
});
|
|
46
53
|
var _default = exports.default = Database;
|
package/dist/global-settings.js
CHANGED
|
@@ -29,9 +29,7 @@ class GlobalSettings {
|
|
|
29
29
|
lang: settings.lang,
|
|
30
30
|
thumbnailSizeForOriginal: settings.thumbnailSizeForOriginal,
|
|
31
31
|
thumbnailDefaultSize: settings.thumbnailDefaultSize,
|
|
32
|
-
isDevelopment: settings.isDevelopment
|
|
33
|
-
enableThumbnailServer: settings.enableThumbnailServer,
|
|
34
|
-
enableSeadoc: settings.enableSeadoc
|
|
32
|
+
isDevelopment: settings.isDevelopment
|
|
35
33
|
};
|
|
36
34
|
}
|
|
37
35
|
static getSetting(key) {
|
|
@@ -5,7 +5,7 @@ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWild
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.
|
|
8
|
+
exports.useAppContext = exports.AppContextProvider = void 0;
|
|
9
9
|
var _react = _interopRequireWildcard(require("react"));
|
|
10
10
|
var _jsCookie = _interopRequireDefault(require("js-cookie"));
|
|
11
11
|
var _api = _interopRequireDefault(require("../api/api"));
|
|
@@ -14,7 +14,7 @@ var _eventBus = _interopRequireDefault(require("../common/utils/event-bus"));
|
|
|
14
14
|
var _context = _interopRequireDefault(require("../context"));
|
|
15
15
|
/* eslint-disable react/prop-types */
|
|
16
16
|
|
|
17
|
-
const
|
|
17
|
+
const AppContext = /*#__PURE__*/_react.default.createContext(null);
|
|
18
18
|
const initAPI = settings => {
|
|
19
19
|
return new Promise((resolve, reject) => {
|
|
20
20
|
const seafileAPI = new _api.default();
|
|
@@ -48,34 +48,30 @@ const initAPI = settings => {
|
|
|
48
48
|
}
|
|
49
49
|
});
|
|
50
50
|
};
|
|
51
|
-
const
|
|
51
|
+
const AppContextProvider = _ref => {
|
|
52
52
|
let {
|
|
53
53
|
settings,
|
|
54
54
|
children
|
|
55
55
|
} = _ref;
|
|
56
56
|
const [isInit, setIsInit] = (0, _react.useState)(true);
|
|
57
57
|
const [context, setContext] = (0, _react.useState)(null);
|
|
58
|
-
const [fileRepo, setFileRepo] = (0, _react.useState)(null);
|
|
59
58
|
(0, _react.useEffect)(() => {
|
|
60
59
|
const initContext = async () => {
|
|
61
60
|
const eventBus = new _eventBus.default();
|
|
62
61
|
const api = await initAPI(settings);
|
|
63
|
-
// const { repoID } = settings;
|
|
64
|
-
// const res = await api.getRepoInfo(repoID);
|
|
65
|
-
// const repo = res.data;
|
|
66
|
-
// const newSettings = {
|
|
67
|
-
// ...settings,
|
|
68
|
-
// permission: repo.permission, // TODO
|
|
69
|
-
// repoInfo: repo,
|
|
70
|
-
// };
|
|
71
|
-
const context = new _context.default(settings, eventBus, api);
|
|
72
|
-
const result = await context.getFileRepoInfo();
|
|
73
62
|
const {
|
|
74
|
-
|
|
75
|
-
} =
|
|
76
|
-
|
|
63
|
+
repoID
|
|
64
|
+
} = settings;
|
|
65
|
+
const res = await api.getRepoInfo(repoID);
|
|
66
|
+
const repo = res.data;
|
|
67
|
+
const newSettings = {
|
|
68
|
+
...settings,
|
|
69
|
+
permission: repo.permission,
|
|
70
|
+
// TODO
|
|
71
|
+
repoInfo: repo
|
|
72
|
+
};
|
|
73
|
+
const context = new _context.default(newSettings, eventBus, api);
|
|
77
74
|
setContext(context);
|
|
78
|
-
setFileRepo(file_repo);
|
|
79
75
|
setIsInit(false);
|
|
80
76
|
};
|
|
81
77
|
initContext();
|
|
@@ -86,19 +82,18 @@ const FileRepoContextProvider = _ref => {
|
|
|
86
82
|
className: 'sea-metadata'
|
|
87
83
|
}, /*#__PURE__*/_react.default.createElement(_components.CenteredLoading, null));
|
|
88
84
|
}
|
|
89
|
-
return /*#__PURE__*/_react.default.createElement(
|
|
85
|
+
return /*#__PURE__*/_react.default.createElement(AppContext.Provider, {
|
|
90
86
|
value: {
|
|
91
|
-
context
|
|
92
|
-
fileRepo
|
|
87
|
+
context
|
|
93
88
|
}
|
|
94
89
|
}, children);
|
|
95
90
|
};
|
|
96
|
-
exports.
|
|
97
|
-
const
|
|
98
|
-
const context = (0, _react.useContext)(
|
|
91
|
+
exports.AppContextProvider = AppContextProvider;
|
|
92
|
+
const useAppContext = () => {
|
|
93
|
+
const context = (0, _react.useContext)(AppContext);
|
|
99
94
|
if (!context) {
|
|
100
95
|
throw new Error('\'AppContext\' is null');
|
|
101
96
|
}
|
|
102
97
|
return context;
|
|
103
98
|
};
|
|
104
|
-
exports.
|
|
99
|
+
exports.useAppContext = useAppContext;
|