@seafile/seafile-database 0.0.24 → 0.0.26
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 +19 -21
- package/dist/assets/css/dropdown-menu.css +96 -0
- package/dist/assets/css/file-repo.css +3 -0
- package/dist/common/components/file-tag/index.js +2 -2
- package/dist/common/components/modal-portal.js +12 -0
- 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/cell-formatter/creator.js +3 -2
- package/dist/components/context-menu/index.js +2 -2
- package/dist/components/data-process-setter/filter-setter.js +2 -3
- package/dist/components/data-process-setter/hide-column-setter.js +1 -1
- package/dist/components/data-process-setter/index.js +7 -0
- package/dist/components/data-process-setter/manage-setter.js +1 -2
- package/dist/components/data-process-setter/settings-setter.js +119 -0
- package/dist/components/data-process-setter/sort-setter.js +2 -2
- package/dist/components/data-process-setter/view-type-setter.js +53 -0
- 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/hover-menu/index.css +85 -0
- package/dist/components/hover-menu/index.js +107 -0
- package/dist/components/icons/arrow-down-icon.js +19 -0
- package/dist/components/icons/arrow-right-icon.js +29 -0
- package/dist/components/icons/arrow-up-icon.js +19 -0
- package/dist/components/icons/card-icon.js +28 -0
- package/dist/components/icons/close-icon.js +23 -0
- package/dist/components/icons/index.js +23 -1
- package/dist/components/icons/set-up-icon.js +22 -0
- package/dist/components/icons/table-icon.js +19 -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/popover/index.js +7 -0
- package/dist/components/popover/settings-popover/field-display-settings/field-item.js +110 -0
- package/dist/components/popover/settings-popover/field-display-settings/index.css +135 -0
- package/dist/components/popover/settings-popover/field-display-settings/index.js +119 -0
- package/dist/components/popover/settings-popover/index.css +52 -0
- package/dist/components/popover/settings-popover/index.js +99 -0
- package/dist/components/popover/sort-popover/index.js +1 -1
- package/dist/components/popover/view-type-popover/index.css +51 -0
- package/dist/components/popover/view-type-popover/index.js +64 -0
- 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 +44 -2
- package/dist/context.js +60 -35
- package/dist/file-view-base.js +44 -0
- package/dist/file-view.js +140 -0
- package/dist/global-settings.js +3 -1
- package/dist/hooks/collaborators.js +9 -3
- package/dist/hooks/file-view-context.js +95 -0
- package/dist/hooks/index.js +14 -14
- package/dist/hooks/metadata.js +51 -47
- package/dist/hooks/tagsData.js +8 -2
- package/dist/hooks/view-context.js +69 -0
- package/dist/index.js +3 -3
- package/dist/locale/en.js +11 -1
- package/dist/locale/zh_CN.js +6 -1
- package/dist/store/data-processor.js +1 -0
- package/dist/store/index.js +8 -6
- package/dist/store/operations/apply.js +1 -1
- package/dist/store/server-operator.js +20 -7
- 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 +3 -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/database.js +0 -53
- package/dist/hooks/viewsData.js +0 -114
|
@@ -11,7 +11,7 @@ var _reactstrap = require("reactstrap");
|
|
|
11
11
|
var _isHotkey = _interopRequireDefault(require("is-hotkey"));
|
|
12
12
|
var _customizeAddTool = _interopRequireDefault(require("../../../common/components/customize-add-tool"));
|
|
13
13
|
var _dom = require("../../../common/utils/dom");
|
|
14
|
-
var
|
|
14
|
+
var _hooks = require("../../../hooks");
|
|
15
15
|
var _translate = _interopRequireDefault(require("../../../lang/translate"));
|
|
16
16
|
var _constants = require("../../../constants");
|
|
17
17
|
var _group = require("../../../utils/group");
|
|
@@ -29,7 +29,7 @@ const GroupbysPopover = _ref => {
|
|
|
29
29
|
} = _ref;
|
|
30
30
|
const {
|
|
31
31
|
context
|
|
32
|
-
} = (0,
|
|
32
|
+
} = (0, _hooks.useFileViewContext)();
|
|
33
33
|
const [groupbys, setGroupbys] = (0, _react.useState)(propsGroupBys);
|
|
34
34
|
const [isChanged, setChanged] = (0, _react.useState)(false);
|
|
35
35
|
const isSelectOpenRef = (0, _react.useState)(false);
|
|
@@ -66,7 +66,7 @@ const GroupbysPopover = _ref => {
|
|
|
66
66
|
document.removeEventListener('keydown', onHotKey);
|
|
67
67
|
unsubscribeOpenSelect();
|
|
68
68
|
};
|
|
69
|
-
}, [hide, onHotKey, setSelectStatus]);
|
|
69
|
+
}, [context.eventBus, hide, onHotKey, setSelectStatus]);
|
|
70
70
|
const updateGroups = (0, _react.useCallback)(newGroupBys => {
|
|
71
71
|
setChanged(true);
|
|
72
72
|
setGroupbys(newGroupBys);
|
|
@@ -98,10 +98,10 @@ const GroupbysPopover = _ref => {
|
|
|
98
98
|
}, [groupbys, updateGroups]);
|
|
99
99
|
const hideAllGroups = (0, _react.useCallback)(() => {
|
|
100
100
|
context.eventBus.dispatch(_constants.EVENT_BUS_TYPE.COLLAPSE_ALL_GROUPS);
|
|
101
|
-
}, []);
|
|
101
|
+
}, [context.eventBus]);
|
|
102
102
|
const showAllGroups = (0, _react.useCallback)(() => {
|
|
103
103
|
context.eventBus.dispatch(_constants.EVENT_BUS_TYPE.EXPAND_ALL_GROUPS);
|
|
104
|
-
}, []);
|
|
104
|
+
}, [context.eventBus]);
|
|
105
105
|
const onPopoverInsideClick = (0, _react.useCallback)(event => {
|
|
106
106
|
event.stopPropagation();
|
|
107
107
|
}, []);
|
|
@@ -52,6 +52,12 @@ Object.defineProperty(exports, "SortPopover", {
|
|
|
52
52
|
return _sortPopover.default;
|
|
53
53
|
}
|
|
54
54
|
});
|
|
55
|
+
Object.defineProperty(exports, "ViewTypePopover", {
|
|
56
|
+
enumerable: true,
|
|
57
|
+
get: function () {
|
|
58
|
+
return _viewTypePopover.default;
|
|
59
|
+
}
|
|
60
|
+
});
|
|
55
61
|
var _columnPopover = _interopRequireDefault(require("./column-popover"));
|
|
56
62
|
var _filterPopover = _interopRequireDefault(require("./filter-popover"));
|
|
57
63
|
var _groupbysPopover = _interopRequireDefault(require("./groupbys-popover"));
|
|
@@ -60,4 +66,5 @@ var _optionsPopover = _interopRequireDefault(require("./options-popover"));
|
|
|
60
66
|
var _renamePopover = _interopRequireDefault(require("./rename-popover"));
|
|
61
67
|
var _rowHeightPopover = _interopRequireDefault(require("./row-height-popover"));
|
|
62
68
|
var _sortPopover = _interopRequireDefault(require("./sort-popover"));
|
|
69
|
+
var _viewTypePopover = _interopRequireDefault(require("./view-type-popover"));
|
|
63
70
|
require("./index.css");
|
|
@@ -0,0 +1,110 @@
|
|
|
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 _switch = _interopRequireDefault(require("../../../../common/components/switch"));
|
|
12
|
+
var _icons = _interopRequireDefault(require("../../../icons"));
|
|
13
|
+
function FieldItem(_ref) {
|
|
14
|
+
let {
|
|
15
|
+
field,
|
|
16
|
+
index,
|
|
17
|
+
onToggleField,
|
|
18
|
+
onMoveField,
|
|
19
|
+
fieldIconConfig,
|
|
20
|
+
updateDragOverKey,
|
|
21
|
+
dragOverColumnKey,
|
|
22
|
+
draggingColumnIndex,
|
|
23
|
+
updateDraggingKey
|
|
24
|
+
} = _ref;
|
|
25
|
+
let enteredCounter = 0;
|
|
26
|
+
const fieldItemRef = (0, _react.useRef)(null);
|
|
27
|
+
const [isItemDropTipShow, setDropTipShow] = (0, _react.useState)(false);
|
|
28
|
+
const handleClickField = e => {
|
|
29
|
+
e.nativeEvent.stopImmediatePropagation();
|
|
30
|
+
const value = e.target.checked;
|
|
31
|
+
if (value === field.shown) return;
|
|
32
|
+
onToggleField(field.key, value);
|
|
33
|
+
};
|
|
34
|
+
const onDragStart = e => {
|
|
35
|
+
e.stopPropagation();
|
|
36
|
+
e.dataTransfer.setDragImage(fieldItemRef.current, 10, 10);
|
|
37
|
+
e.dataTransfer.effectAllowed = 'move';
|
|
38
|
+
e.dataTransfer.setData('application/sf-metadata-field-display-setting', field.key);
|
|
39
|
+
updateDraggingKey(field.key);
|
|
40
|
+
};
|
|
41
|
+
const onDragEnter = e => {
|
|
42
|
+
e.stopPropagation();
|
|
43
|
+
enteredCounter++;
|
|
44
|
+
if (enteredCounter !== 0 && !isItemDropTipShow) {
|
|
45
|
+
setDropTipShow(true);
|
|
46
|
+
}
|
|
47
|
+
updateDragOverKey(field.key);
|
|
48
|
+
};
|
|
49
|
+
const onDragOver = e => {
|
|
50
|
+
if (e.dataTransfer.dropEffect === 'copy') {
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
e.stopPropagation();
|
|
54
|
+
e.preventDefault();
|
|
55
|
+
e.dataTransfer.dropEffect = 'move';
|
|
56
|
+
updateDragOverKey(field.key);
|
|
57
|
+
};
|
|
58
|
+
const onDragLeave = e => {
|
|
59
|
+
e.stopPropagation();
|
|
60
|
+
enteredCounter--;
|
|
61
|
+
if (enteredCounter === 0) {
|
|
62
|
+
setDropTipShow(false);
|
|
63
|
+
}
|
|
64
|
+
updateDragOverKey(null);
|
|
65
|
+
};
|
|
66
|
+
const onDrop = e => {
|
|
67
|
+
e.stopPropagation();
|
|
68
|
+
e.preventDefault();
|
|
69
|
+
setDropTipShow(false);
|
|
70
|
+
const droppedColumnKey = e.dataTransfer.getData('application/sf-metadata-field-display-setting');
|
|
71
|
+
if (droppedColumnKey === field.key) return;
|
|
72
|
+
onMoveField(droppedColumnKey, field.key);
|
|
73
|
+
updateDragOverKey(null);
|
|
74
|
+
updateDraggingKey(null);
|
|
75
|
+
};
|
|
76
|
+
const placeholder = () => {
|
|
77
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
78
|
+
className: "sf-metadata-field-display-setting-switch"
|
|
79
|
+
}, /*#__PURE__*/_react.default.createElement(_icons.default, {
|
|
80
|
+
symbol: fieldIconConfig[field.type]
|
|
81
|
+
}), /*#__PURE__*/_react.default.createElement("span", {
|
|
82
|
+
className: "text-truncate"
|
|
83
|
+
}, field.name));
|
|
84
|
+
};
|
|
85
|
+
const isOver = dragOverColumnKey === field.key;
|
|
86
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
87
|
+
ref: fieldItemRef,
|
|
88
|
+
className: (0, _classnames.default)('sf-metadata-field-display-setting-item-container', {
|
|
89
|
+
'hide-column-can-drop-top': isOver && draggingColumnIndex >= index
|
|
90
|
+
}, {
|
|
91
|
+
'hide-column-can-drop': isOver && draggingColumnIndex < index
|
|
92
|
+
}),
|
|
93
|
+
onDrop: onDrop,
|
|
94
|
+
onDragEnter: onDragEnter,
|
|
95
|
+
onDragOver: onDragOver,
|
|
96
|
+
onDragLeave: onDragLeave
|
|
97
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
98
|
+
className: "sf-metadata-field-display-setting-dragbar",
|
|
99
|
+
draggable: "true",
|
|
100
|
+
onDragStart: onDragStart
|
|
101
|
+
}, /*#__PURE__*/_react.default.createElement(_icons.default, {
|
|
102
|
+
symbol: "drag"
|
|
103
|
+
})), /*#__PURE__*/_react.default.createElement(_switch.default, {
|
|
104
|
+
checked: field.shown,
|
|
105
|
+
className: "sf-metadata-switch flex-fill",
|
|
106
|
+
placeholder: placeholder(),
|
|
107
|
+
onChange: handleClickField
|
|
108
|
+
}));
|
|
109
|
+
}
|
|
110
|
+
var _default = exports.default = FieldItem;
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
.sea-metadata-field-display-popover .popover {
|
|
2
|
+
width: 300px;
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
.sf-metadata-field-display-setting {
|
|
6
|
+
padding: 8px 0;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
.sf-metadata-field-display-setting .sf-metadata-field-display-setting-header .sf-metadata-field-display-toggle-btn {
|
|
10
|
+
width: 20px;
|
|
11
|
+
height: 20px;
|
|
12
|
+
display: flex;
|
|
13
|
+
justify-content: center;
|
|
14
|
+
align-items: center;
|
|
15
|
+
color: #ccc;
|
|
16
|
+
cursor: pointer;
|
|
17
|
+
transition: transform .3s cubic-bezier(.645, .045, .355, 1);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.sf-metadata-field-display-setting .sf-metadata-field-display-setting-header .sf-metadata-field-display-toggle-btn:hover {
|
|
21
|
+
border-radius: 3px;
|
|
22
|
+
background-color: var(--bs-hover-bg);
|
|
23
|
+
color: var(--bs-icon-color);
|
|
24
|
+
cursor: pointer;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.sf-metadata-field-display-setting .sf-metadata-field-display-setting-header .sf-metadata-field-display-toggle-btn .seafile-multicolor-icon-down {
|
|
28
|
+
width: 12px;
|
|
29
|
+
height: 12px;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.sf-metadata-field-display-setting .sf-metadata-field-display-setting-body .sf-metadata-field-display-setting-item-container {
|
|
33
|
+
position: relative;
|
|
34
|
+
display: flex;
|
|
35
|
+
font-size: 14px;
|
|
36
|
+
height: 30px;
|
|
37
|
+
line-height: 30px;
|
|
38
|
+
border-radius: 4px;
|
|
39
|
+
padding: 0 14px 0 12px;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.sf-metadata-field-display-setting .sf-metadata-field-display-setting-body .sf-metadata-field-display-setting-item-container:hover {
|
|
43
|
+
background-color: var(--bs-nav-hover-bg);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.sf-metadata-field-display-setting .sf-metadata-field-display-setting-body .sf-metadata-field-display-setting-dragbar {
|
|
47
|
+
color: #c2c2c2;
|
|
48
|
+
cursor: grab;
|
|
49
|
+
margin-right: 8px;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
.sf-metadata-field-display-setting .sf-metadata-field-display-setting-body .sf-metadata-field-display-setting-dragbar .seafile-multicolor-icon-drag {
|
|
53
|
+
vertical-align: -0.15em;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
.sf-metadata-field-display-setting-item-container .sf-metadata-switch .custom-switch {
|
|
57
|
+
width: 100%;
|
|
58
|
+
padding-left: 0;
|
|
59
|
+
display: inline-flex;
|
|
60
|
+
align-items: center;
|
|
61
|
+
justify-content: space-between;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
.sf-metadata-field-display-setting-item-container .sf-metadata-switch .custom-switch .seafile-multicolor-icon {
|
|
65
|
+
fill: #666;
|
|
66
|
+
transform: scale(0.8);
|
|
67
|
+
font-size: 16px;
|
|
68
|
+
margin-right: 8px;
|
|
69
|
+
vertical-align: -0.15em;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
.sf-metadata-field-display-setting-item-container .sf-metadata-switch .custom-switch .custom-switch-description {
|
|
73
|
+
margin-left: 0;
|
|
74
|
+
padding-right: 5px;
|
|
75
|
+
flex: 1;
|
|
76
|
+
transition: .3s color;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
.sf-metadata-field-display-setting-item-container .sf-metadata-switch .custom-switch .custom-switch-indicator {
|
|
80
|
+
width: 22px;
|
|
81
|
+
height: 12px;
|
|
82
|
+
border-radius: 6px;
|
|
83
|
+
margin-right: .25rem;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
.sf-metadata-field-display-setting-item-container .sf-metadata-switch .custom-switch .custom-switch-indicator::before {
|
|
87
|
+
height: 8px;
|
|
88
|
+
width: 8px;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
.sf-metadata-field-display-setting-item-container .sf-metadata-switch .custom-switch-input:checked~.custom-switch-indicator:before {
|
|
92
|
+
left: 12px;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
.sf-metadata-field-display-setting-item-container.hide-column-can-drop::after,
|
|
96
|
+
.sf-metadata-field-display-setting-item-container.hide-column-can-drop-top::before {
|
|
97
|
+
content: '';
|
|
98
|
+
height: 1px;
|
|
99
|
+
width: 100%;
|
|
100
|
+
position: absolute;
|
|
101
|
+
left: 0;
|
|
102
|
+
background: #666;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
.sf-metadata-field-display-setting-item-container.hide-column-can-drop::after {
|
|
106
|
+
bottom: 0;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
.sf-metadata-field-display-setting-item-container.hide-column-can-drop-top::before {
|
|
110
|
+
top: 0;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
.sea-metadata-field-display-popover .sf-metadata-field-display-operations {
|
|
115
|
+
display: flex;
|
|
116
|
+
justify-content: space-between;
|
|
117
|
+
padding: 0 17px;
|
|
118
|
+
width: 100%;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
.sea-metadata-field-display-popover .sf-metadata-field-display-operations .sea-metadata-field-display-operation {
|
|
122
|
+
display: flex;
|
|
123
|
+
align-items: center;
|
|
124
|
+
justify-content: center;
|
|
125
|
+
background: var(--bs-tr-hover-bg);
|
|
126
|
+
border-radius: 3px;
|
|
127
|
+
color: var(--bs-body-color);
|
|
128
|
+
height: 28px;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
.sea-metadata-field-display-popover .sf-metadata-field-display-operations .sea-metadata-field-display-operation:hover {
|
|
132
|
+
background: var(--bs-hover-bg);
|
|
133
|
+
color: var(--bs-body-color);
|
|
134
|
+
cursor: pointer;
|
|
135
|
+
}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = void 0;
|
|
9
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
10
|
+
var _components = require("../../../../common/components");
|
|
11
|
+
var _keyCodes = require("../../../../constants/keyCodes");
|
|
12
|
+
var _translate = _interopRequireDefault(require("../../../../lang/translate"));
|
|
13
|
+
var _fieldItem = _interopRequireDefault(require("./field-item"));
|
|
14
|
+
require("./index.css");
|
|
15
|
+
const DURATION = 300;
|
|
16
|
+
const FieldDisplaySettings = _ref => {
|
|
17
|
+
let {
|
|
18
|
+
fieldIconConfig,
|
|
19
|
+
fields,
|
|
20
|
+
onToggleField,
|
|
21
|
+
onMoveField,
|
|
22
|
+
onToggleFieldsVisibility,
|
|
23
|
+
hidePopover = () => {}
|
|
24
|
+
} = _ref;
|
|
25
|
+
const nodeRef = (0, _react.useRef)(null);
|
|
26
|
+
const [dragOverColumnKey, setDragOverCellKey] = (0, _react.useState)(null);
|
|
27
|
+
const [draggingColumnKey, setDraggingCellKey] = (0, _react.useState)(null);
|
|
28
|
+
const [searchValue, setSearchValue] = (0, _react.useState)('');
|
|
29
|
+
const updateDragOverKey = (0, _react.useCallback)(cellKey => {
|
|
30
|
+
if (cellKey === dragOverColumnKey) return;
|
|
31
|
+
setDragOverCellKey(cellKey);
|
|
32
|
+
}, [dragOverColumnKey]);
|
|
33
|
+
const updateDraggingKey = (0, _react.useCallback)(cellKey => {
|
|
34
|
+
if (cellKey === draggingColumnKey) return;
|
|
35
|
+
setDraggingCellKey(cellKey);
|
|
36
|
+
}, [draggingColumnKey]);
|
|
37
|
+
const onSearchColumn = (0, _react.useCallback)(event => {
|
|
38
|
+
const value = event.target.value;
|
|
39
|
+
if (value === searchValue) return;
|
|
40
|
+
setSearchValue(value);
|
|
41
|
+
}, [searchValue]);
|
|
42
|
+
const onKeyDown = (0, _react.useCallback)(event => {
|
|
43
|
+
if (event.keyCode === _keyCodes.KeyCodes.ChineseInputMethod || event.keyCode === _keyCodes.KeyCodes.Enter || event.keyCode === _keyCodes.KeyCodes.LeftArrow || event.keyCode === _keyCodes.KeyCodes.RightArrow) {
|
|
44
|
+
event.stopPropagation();
|
|
45
|
+
}
|
|
46
|
+
}, []);
|
|
47
|
+
const defaultStyle = {
|
|
48
|
+
transition: `all ${DURATION}ms cubic-bezier(.645,.045,.355,1)`
|
|
49
|
+
};
|
|
50
|
+
const shownFields = (0, _react.useMemo)(() => {
|
|
51
|
+
if (!searchValue) return fields;
|
|
52
|
+
const validValue = searchValue.trim().toLocaleLowerCase();
|
|
53
|
+
return fields.filter(item => {
|
|
54
|
+
const columnName = item.name.toLocaleLowerCase();
|
|
55
|
+
return columnName.indexOf(validValue) > -1;
|
|
56
|
+
});
|
|
57
|
+
}, [fields, searchValue]);
|
|
58
|
+
const draggingColumnIndex = draggingColumnKey ? shownFields.findIndex(f => f.key === draggingColumnKey) : -1;
|
|
59
|
+
return /*#__PURE__*/_react.default.createElement(_components.CustomizePopover, {
|
|
60
|
+
target: 'sea-metadata-field-display-popover',
|
|
61
|
+
popoverClassName: "sea-metadata-field-display-popover",
|
|
62
|
+
hidePopover: hidePopover,
|
|
63
|
+
hidePopoverWithEsc: hidePopover,
|
|
64
|
+
placement: "right",
|
|
65
|
+
modifiers: [{
|
|
66
|
+
name: 'preventOverflow',
|
|
67
|
+
options: {
|
|
68
|
+
boundary: document.body
|
|
69
|
+
}
|
|
70
|
+
}, {
|
|
71
|
+
name: 'offset',
|
|
72
|
+
options: {
|
|
73
|
+
offset: [0, 0]
|
|
74
|
+
}
|
|
75
|
+
}]
|
|
76
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
77
|
+
className: "sf-metadata-field-display-setting"
|
|
78
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
79
|
+
className: "sf-metadata-field-display-setting-wrapper",
|
|
80
|
+
ref: nodeRef,
|
|
81
|
+
style: {
|
|
82
|
+
...defaultStyle
|
|
83
|
+
}
|
|
84
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
85
|
+
className: "search-column-container"
|
|
86
|
+
}, /*#__PURE__*/_react.default.createElement(_components.SearchInput, {
|
|
87
|
+
placeholder: _translate.default.gettext('Search property'),
|
|
88
|
+
onKeyDown: onKeyDown,
|
|
89
|
+
onChange: onSearchColumn,
|
|
90
|
+
size: 28,
|
|
91
|
+
autoFocus: true
|
|
92
|
+
})), /*#__PURE__*/_react.default.createElement("div", {
|
|
93
|
+
className: "sf-metadata-field-display-setting-body"
|
|
94
|
+
}, shownFields.map((field, index) => {
|
|
95
|
+
return /*#__PURE__*/_react.default.createElement(_fieldItem.default, {
|
|
96
|
+
key: `${field.key}-${index}`,
|
|
97
|
+
field: field,
|
|
98
|
+
index: index,
|
|
99
|
+
fieldIconConfig: fieldIconConfig,
|
|
100
|
+
onToggleField: onToggleField,
|
|
101
|
+
onMoveField: onMoveField,
|
|
102
|
+
updateDragOverKey: updateDragOverKey,
|
|
103
|
+
updateDraggingKey: updateDraggingKey,
|
|
104
|
+
dragOverColumnKey: dragOverColumnKey,
|
|
105
|
+
draggingColumnIndex: draggingColumnIndex
|
|
106
|
+
});
|
|
107
|
+
})), !searchValue && /*#__PURE__*/_react.default.createElement("div", {
|
|
108
|
+
className: "sf-metadata-field-display-operations"
|
|
109
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
110
|
+
className: "sea-metadata-field-display-operation px-2",
|
|
111
|
+
onClick: () => onToggleFieldsVisibility(false),
|
|
112
|
+
"aria-label": _translate.default.gettext('Hide all')
|
|
113
|
+
}, _translate.default.gettext('Hide all')), /*#__PURE__*/_react.default.createElement("div", {
|
|
114
|
+
className: "sea-metadata-field-display-operation px-2",
|
|
115
|
+
onClick: () => onToggleFieldsVisibility(true),
|
|
116
|
+
"aria-label": _translate.default.gettext('Show all')
|
|
117
|
+
}, _translate.default.gettext('Show all'))))));
|
|
118
|
+
};
|
|
119
|
+
var _default = exports.default = FieldDisplaySettings;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
.sea-metadata-settings-popover .popover {
|
|
2
|
+
width: 300px;
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
.sea-metadata-settings-wrapper {
|
|
6
|
+
padding: 8px 0;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
.sea-metadata-settings-item {
|
|
10
|
+
cursor: pointer;
|
|
11
|
+
height: 32px;
|
|
12
|
+
padding-left: 14px;
|
|
13
|
+
padding-right: 12px;
|
|
14
|
+
font-size: 14px;
|
|
15
|
+
height: 32px;
|
|
16
|
+
white-space: nowrap;
|
|
17
|
+
display: flex;
|
|
18
|
+
flex: 0 0 100%;
|
|
19
|
+
-webkit-box-flex: 0;
|
|
20
|
+
-webkit-box-align: center;
|
|
21
|
+
align-items: center;
|
|
22
|
+
text-overflow: ellipsis;
|
|
23
|
+
min-width: min-content;
|
|
24
|
+
justify-content: space-between;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.sea-metadata-settings-item:hover {
|
|
28
|
+
background-color: rgba(0, 0, 0, 0.05);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.sea-metadata-settings-item-divider {
|
|
32
|
+
width: 100%;
|
|
33
|
+
height: 0;
|
|
34
|
+
margin: 0.5rem 0;
|
|
35
|
+
overflow: hidden;
|
|
36
|
+
border-top: 1px solid #e9ecef;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.sea-metadata-settings-item .seaqa-switch {
|
|
40
|
+
width: 100%;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.sea-metadata-settings-item .seaqa-switch .custom-switch {
|
|
44
|
+
justify-content: space-between;
|
|
45
|
+
width: 100%;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.sea-metadata-settings-item .seaqa-switch .custom-switch .custom-switch-description {
|
|
49
|
+
color: #212529;
|
|
50
|
+
margin-left: 0;
|
|
51
|
+
font-size: 14px;
|
|
52
|
+
}
|
|
@@ -0,0 +1,99 @@
|
|
|
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 _components = require("../../../common/components");
|
|
11
|
+
var _switch = _interopRequireDefault(require("../../../common/components/switch"));
|
|
12
|
+
var _icons = _interopRequireDefault(require("../../icons"));
|
|
13
|
+
var _constants = require("../../../constants");
|
|
14
|
+
var _translate = _interopRequireDefault(require("../../../lang/translate"));
|
|
15
|
+
var _fieldDisplaySettings = _interopRequireDefault(require("./field-display-settings"));
|
|
16
|
+
require("./index.css");
|
|
17
|
+
// import FieldDisplaySettings from './field-display-settings';
|
|
18
|
+
|
|
19
|
+
const SettingsPopover = _ref => {
|
|
20
|
+
let {
|
|
21
|
+
target,
|
|
22
|
+
columns: fields,
|
|
23
|
+
settings,
|
|
24
|
+
handleUpdateSettings,
|
|
25
|
+
onMoveField,
|
|
26
|
+
onToggleField,
|
|
27
|
+
onToggleFieldsVisibility,
|
|
28
|
+
hidePopover
|
|
29
|
+
} = _ref;
|
|
30
|
+
const [isShowPopover, setIsShowPopover] = (0, _react.useState)(false);
|
|
31
|
+
const onChangeNullProperty = (0, _react.useCallback)(() => {
|
|
32
|
+
handleUpdateSettings('hide_empty_value', !settings.hide_empty_value);
|
|
33
|
+
}, [handleUpdateSettings, settings.hide_empty_value]);
|
|
34
|
+
const onChangePropertyNames = (0, _react.useCallback)(() => {
|
|
35
|
+
handleUpdateSettings('shown_column_name', !settings.shown_column_name);
|
|
36
|
+
}, [handleUpdateSettings, settings.shown_column_name]);
|
|
37
|
+
const onChangeTextWrap = (0, _react.useCallback)(() => {
|
|
38
|
+
handleUpdateSettings('text_wrap', !settings.text_wrap);
|
|
39
|
+
}, [handleUpdateSettings, settings.text_wrap]);
|
|
40
|
+
const onFieldPopoverToggle = (0, _react.useCallback)(() => {
|
|
41
|
+
setIsShowPopover(!isShowPopover);
|
|
42
|
+
}, [isShowPopover]);
|
|
43
|
+
return /*#__PURE__*/_react.default.createElement(_components.CustomizePopover, {
|
|
44
|
+
target: target,
|
|
45
|
+
popoverClassName: "sea-metadata-settings-popover",
|
|
46
|
+
hidePopover: hidePopover,
|
|
47
|
+
hidePopoverWithEsc: hidePopover,
|
|
48
|
+
modifiers: [{
|
|
49
|
+
name: 'preventOverflow',
|
|
50
|
+
options: {
|
|
51
|
+
boundary: document.body
|
|
52
|
+
}
|
|
53
|
+
}, {
|
|
54
|
+
name: 'offset',
|
|
55
|
+
options: {
|
|
56
|
+
offset: [-6, 8]
|
|
57
|
+
}
|
|
58
|
+
}]
|
|
59
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
60
|
+
className: "sea-metadata-settings-wrapper"
|
|
61
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
62
|
+
className: "sea-metadata-settings-item"
|
|
63
|
+
}, /*#__PURE__*/_react.default.createElement(_switch.default, {
|
|
64
|
+
onChange: onChangeNullProperty,
|
|
65
|
+
checked: settings.hide_empty_value,
|
|
66
|
+
size: 'small',
|
|
67
|
+
placeholder: _translate.default.gettext('Don\'t show empty values')
|
|
68
|
+
})), /*#__PURE__*/_react.default.createElement("div", {
|
|
69
|
+
className: "sea-metadata-settings-item"
|
|
70
|
+
}, /*#__PURE__*/_react.default.createElement(_switch.default, {
|
|
71
|
+
onChange: onChangePropertyNames,
|
|
72
|
+
checked: settings.shown_column_name,
|
|
73
|
+
size: 'small',
|
|
74
|
+
placeholder: _translate.default.gettext('Show property names')
|
|
75
|
+
})), /*#__PURE__*/_react.default.createElement("div", {
|
|
76
|
+
className: "sea-metadata-settings-item"
|
|
77
|
+
}, /*#__PURE__*/_react.default.createElement(_switch.default, {
|
|
78
|
+
onChange: onChangeTextWrap,
|
|
79
|
+
checked: settings.text_wrap,
|
|
80
|
+
size: 'small',
|
|
81
|
+
placeholder: _translate.default.gettext('Text wraps')
|
|
82
|
+
})), /*#__PURE__*/_react.default.createElement("div", {
|
|
83
|
+
className: "sea-metadata-settings-item-divider"
|
|
84
|
+
}), /*#__PURE__*/_react.default.createElement("div", {
|
|
85
|
+
id: "sea-metadata-field-display-popover",
|
|
86
|
+
className: "sea-metadata-settings-item",
|
|
87
|
+
onClick: onFieldPopoverToggle
|
|
88
|
+
}, /*#__PURE__*/_react.default.createElement("span", null, _translate.default.gettext('Properties to display on the card')), /*#__PURE__*/_react.default.createElement(_icons.default, {
|
|
89
|
+
symbol: 'arrow-right'
|
|
90
|
+
})), isShowPopover && /*#__PURE__*/_react.default.createElement(_fieldDisplaySettings.default, {
|
|
91
|
+
fieldIconConfig: _constants.COLUMNS_ICON_CONFIG,
|
|
92
|
+
fields: fields,
|
|
93
|
+
onMoveField: onMoveField,
|
|
94
|
+
onToggleField: onToggleField,
|
|
95
|
+
onToggleFieldsVisibility: onToggleFieldsVisibility,
|
|
96
|
+
onHidePopover: onFieldPopoverToggle
|
|
97
|
+
})));
|
|
98
|
+
};
|
|
99
|
+
var _default = exports.default = SettingsPopover;
|
|
@@ -250,7 +250,7 @@ class SortPopover extends _react.Component {
|
|
|
250
250
|
} = this.state;
|
|
251
251
|
const isEmpty = (0, _utils.isSortsEmpty)(sorts);
|
|
252
252
|
return /*#__PURE__*/_react.default.createElement(_reactstrap.UncontrolledPopover, {
|
|
253
|
-
placement: "bottom-
|
|
253
|
+
placement: "bottom-start",
|
|
254
254
|
isOpen: true,
|
|
255
255
|
target: target,
|
|
256
256
|
fade: false,
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
.sea-metadata-view-type-popover .popover {
|
|
2
|
+
width: 200px;
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
.sea-metadata-view-type-wrapper {
|
|
6
|
+
padding: 8px 0;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
.sea-metadata-view-type-header {
|
|
10
|
+
padding: 0 12px;
|
|
11
|
+
margin-bottom: 4px;
|
|
12
|
+
font-size: 13px;
|
|
13
|
+
color: #666;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
.sea-metadata-view-type-item {
|
|
17
|
+
cursor: pointer;
|
|
18
|
+
height: 32px;
|
|
19
|
+
padding-left: 14px;
|
|
20
|
+
padding-right: 12px;
|
|
21
|
+
font-size: 14px;
|
|
22
|
+
height: 32px;
|
|
23
|
+
white-space: nowrap;
|
|
24
|
+
display: flex;
|
|
25
|
+
flex: 0 0 100%;
|
|
26
|
+
-webkit-box-flex: 0;
|
|
27
|
+
-webkit-box-align: center;
|
|
28
|
+
align-items: center;
|
|
29
|
+
text-overflow: ellipsis;
|
|
30
|
+
min-width: min-content;
|
|
31
|
+
justify-content: space-between;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.sea-metadata-view-type-item>* {
|
|
35
|
+
pointer-events: none;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
.sea-metadata-view-type-item:hover {
|
|
39
|
+
background-color: rgba(0, 0, 0, 0.05);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.sea-metadata-view-type-item-left,
|
|
43
|
+
.sea-metadata-view-type-item-right {
|
|
44
|
+
display: flex;
|
|
45
|
+
align-items: center;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.sea-metadata-view-type-item .sea-qa-icon-svg {
|
|
49
|
+
fill: #666;
|
|
50
|
+
font-size: 16px;
|
|
51
|
+
}
|