@seafile/sdoc-editor 3.0.39 → 3.0.40
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/seafile-api.js +10 -0
- package/dist/context.js +6 -0
- package/dist/extension/plugins/file-view/rename/index.css +25 -0
- package/dist/extension/plugins/file-view/rename/index.js +113 -0
- package/dist/extension/plugins/file-view/render-elem/index.css +3 -6
- package/dist/extension/plugins/file-view/render-elem/index.js +16 -1
- package/package.json +2 -2
package/dist/api/seafile-api.js
CHANGED
|
@@ -331,6 +331,16 @@ var SeafileAPI = /*#__PURE__*/function () {
|
|
|
331
331
|
form.append('view_id', viewId);
|
|
332
332
|
return this.req.post(url, form);
|
|
333
333
|
}
|
|
334
|
+
}, {
|
|
335
|
+
key: "modifyView",
|
|
336
|
+
value: function modifyView(wikiId, viewId, viewData) {
|
|
337
|
+
var url = '/api/v2.1/wiki2/' + wikiId + '/views/';
|
|
338
|
+
var data = {
|
|
339
|
+
view_id: viewId,
|
|
340
|
+
view_data: viewData
|
|
341
|
+
};
|
|
342
|
+
return this.req.put(url, data);
|
|
343
|
+
}
|
|
334
344
|
}]);
|
|
335
345
|
}();
|
|
336
346
|
var _default = exports["default"] = SeafileAPI;
|
package/dist/context.js
CHANGED
|
@@ -432,6 +432,12 @@ var Context = /*#__PURE__*/function () {
|
|
|
432
432
|
var docUuid = this.getSetting('docUuid');
|
|
433
433
|
return this.api.duplicateWikiView(wikiId, docUuid, viewId);
|
|
434
434
|
}
|
|
435
|
+
}, {
|
|
436
|
+
key: "modifyView",
|
|
437
|
+
value: function modifyView(viewId, viewData) {
|
|
438
|
+
var wikiId = this.getSetting('wikiId');
|
|
439
|
+
return this.api.modifyView(wikiId, viewId, viewData);
|
|
440
|
+
}
|
|
435
441
|
}]);
|
|
436
442
|
}();
|
|
437
443
|
var context = new Context();
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
.sdoc-file-view-rename {
|
|
2
|
+
max-width: 100%;
|
|
3
|
+
width: 100%;
|
|
4
|
+
white-space: nowrap;
|
|
5
|
+
word-break: break-word;
|
|
6
|
+
caret-color: var(--c-texPri);
|
|
7
|
+
min-width: 0px;
|
|
8
|
+
flex: 1 1 0%;
|
|
9
|
+
overflow: auto;
|
|
10
|
+
font-weight: 700;
|
|
11
|
+
font-size: 22px;
|
|
12
|
+
margin-inline-end: 4px;
|
|
13
|
+
scrollbar-width: none;
|
|
14
|
+
height: 48px;
|
|
15
|
+
line-height: 48px;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.sdoc-file-view-rename input {
|
|
19
|
+
border-width: 0;
|
|
20
|
+
padding: 0;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.sdoc-file-view-rename input:focus-visible {
|
|
24
|
+
outline: none;
|
|
25
|
+
}
|
|
@@ -0,0 +1,113 @@
|
|
|
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 _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/classCallCheck"));
|
|
9
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/createClass"));
|
|
10
|
+
var _callSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/callSuper"));
|
|
11
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/inherits"));
|
|
12
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/defineProperty"));
|
|
13
|
+
var _react = _interopRequireDefault(require("react"));
|
|
14
|
+
var _reactI18next = require("react-i18next");
|
|
15
|
+
var _toast = _interopRequireDefault(require("../../../../components/toast"));
|
|
16
|
+
var _keyCodes = _interopRequireDefault(require("../../../../constants/key-codes"));
|
|
17
|
+
require("./index.css");
|
|
18
|
+
var Rename = /*#__PURE__*/function (_React$Component) {
|
|
19
|
+
function Rename(props) {
|
|
20
|
+
var _this;
|
|
21
|
+
(0, _classCallCheck2["default"])(this, Rename);
|
|
22
|
+
_this = (0, _callSuper2["default"])(this, Rename, [props]);
|
|
23
|
+
(0, _defineProperty2["default"])(_this, "registerEventHandle", function () {
|
|
24
|
+
document.addEventListener('click', _this.onOutClick);
|
|
25
|
+
});
|
|
26
|
+
(0, _defineProperty2["default"])(_this, "onOutClick", function (event) {
|
|
27
|
+
if (!_this.inputRef.current.contains(event.target)) {
|
|
28
|
+
_this.onRenameConfirm();
|
|
29
|
+
document.removeEventListener('click', _this.onOutClick);
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
(0, _defineProperty2["default"])(_this, "onClick", function (e) {
|
|
33
|
+
e.stopPropagation();
|
|
34
|
+
e.nativeEvent.stopImmediatePropagation();
|
|
35
|
+
_this.registerEventHandle();
|
|
36
|
+
});
|
|
37
|
+
(0, _defineProperty2["default"])(_this, "onChange", function (e) {
|
|
38
|
+
_this.setState({
|
|
39
|
+
name: e.target.value
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
(0, _defineProperty2["default"])(_this, "onKeyDown", function (e) {
|
|
43
|
+
if (e.keyCode === _keyCodes["default"].Enter) {
|
|
44
|
+
_this.onRenameConfirm(e);
|
|
45
|
+
} else if (e.keyCode === _keyCodes["default"].Esc) {
|
|
46
|
+
_this.onRenameCancel(e);
|
|
47
|
+
}
|
|
48
|
+
e.nativeEvent.stopImmediatePropagation();
|
|
49
|
+
});
|
|
50
|
+
(0, _defineProperty2["default"])(_this, "onRenameConfirm", function (e) {
|
|
51
|
+
e && e.nativeEvent.stopImmediatePropagation();
|
|
52
|
+
var newName = _this.state.name.trim();
|
|
53
|
+
if (newName === _this.props.name) {
|
|
54
|
+
_this.props.onRenameCancel();
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
var _this$validateInput = _this.validateInput(),
|
|
58
|
+
isValid = _this$validateInput.isValid,
|
|
59
|
+
errMessage = _this$validateInput.errMessage;
|
|
60
|
+
if (!isValid) {
|
|
61
|
+
_toast["default"].danger(errMessage);
|
|
62
|
+
_this.props.onRenameCancel();
|
|
63
|
+
} else {
|
|
64
|
+
_this.props.onRenameConfirm(newName);
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
(0, _defineProperty2["default"])(_this, "onRenameCancel", function (e) {
|
|
68
|
+
document.removeEventListener('click', _this.onOutClick);
|
|
69
|
+
e.nativeEvent.stopImmediatePropagation();
|
|
70
|
+
_this.props.onRenameCancel();
|
|
71
|
+
});
|
|
72
|
+
(0, _defineProperty2["default"])(_this, "validateInput", function () {
|
|
73
|
+
var t = _this.props.t;
|
|
74
|
+
var newName = _this.state.name.trim();
|
|
75
|
+
var isValid = true;
|
|
76
|
+
var errMessage = '';
|
|
77
|
+
if (newName.indexOf('/') > -1) {
|
|
78
|
+
isValid = false;
|
|
79
|
+
// eslint-disable-next-line no-useless-concat
|
|
80
|
+
errMessage = t('Name should not include ' + '\'/\'' + '.');
|
|
81
|
+
return {
|
|
82
|
+
isValid: isValid,
|
|
83
|
+
errMessage: errMessage
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
return {
|
|
87
|
+
isValid: isValid,
|
|
88
|
+
errMessage: errMessage
|
|
89
|
+
};
|
|
90
|
+
});
|
|
91
|
+
_this.state = {
|
|
92
|
+
name: props.name
|
|
93
|
+
};
|
|
94
|
+
_this.inputRef = /*#__PURE__*/_react["default"].createRef();
|
|
95
|
+
return _this;
|
|
96
|
+
}
|
|
97
|
+
(0, _inherits2["default"])(Rename, _React$Component);
|
|
98
|
+
return (0, _createClass2["default"])(Rename, [{
|
|
99
|
+
key: "render",
|
|
100
|
+
value: function render() {
|
|
101
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
102
|
+
className: "sdoc-file-view-rename"
|
|
103
|
+
}, /*#__PURE__*/_react["default"].createElement("input", {
|
|
104
|
+
ref: this.inputRef,
|
|
105
|
+
value: this.state.name,
|
|
106
|
+
onChange: this.onChange,
|
|
107
|
+
onKeyDown: this.onKeyDown,
|
|
108
|
+
onClick: this.onClick
|
|
109
|
+
}));
|
|
110
|
+
}
|
|
111
|
+
}]);
|
|
112
|
+
}(_react["default"].Component);
|
|
113
|
+
var _default = exports["default"] = (0, _reactI18next.withTranslation)('sdoc-editor')(Rename);
|
|
@@ -6,15 +6,12 @@
|
|
|
6
6
|
|
|
7
7
|
.sdoc-file-view-container .sdoc-file-view-title {
|
|
8
8
|
position: absolute;
|
|
9
|
-
height:
|
|
10
|
-
line-height:
|
|
11
|
-
top:
|
|
9
|
+
height: 48px;
|
|
10
|
+
line-height: 48px;
|
|
11
|
+
top: 2px;
|
|
12
12
|
left: 0px;
|
|
13
13
|
z-index: 10;
|
|
14
|
-
height: 44px;
|
|
15
|
-
line-height: 44px;
|
|
16
14
|
margin-left: 16px;
|
|
17
|
-
cursor: pointer;
|
|
18
15
|
}
|
|
19
16
|
|
|
20
17
|
.sdoc-file-view-container .sdoc-file-view-content {
|
|
@@ -19,6 +19,7 @@ var _commonUtils = require("../../../../utils/common-utils");
|
|
|
19
19
|
var _localStorageUtils = _interopRequireDefault(require("../../../../utils/local-storage-utils"));
|
|
20
20
|
var _constants = require("../../../constants");
|
|
21
21
|
var _helpers = require("../helpers");
|
|
22
|
+
var _rename = _interopRequireDefault(require("../rename"));
|
|
22
23
|
require("./index.css");
|
|
23
24
|
var FileView = function FileView(_ref) {
|
|
24
25
|
var element = _ref.element,
|
|
@@ -154,6 +155,16 @@ var FileView = function FileView(_ref) {
|
|
|
154
155
|
}
|
|
155
156
|
return null;
|
|
156
157
|
}, [data]);
|
|
158
|
+
var onNameCancel = (0, _react.useCallback)(function () {}, []);
|
|
159
|
+
var onRename = (0, _react.useCallback)(function (newName) {
|
|
160
|
+
var newData = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, element.data), {}, {
|
|
161
|
+
view_name: newName
|
|
162
|
+
});
|
|
163
|
+
(0, _helpers.updateFileView)(newData, editor, element);
|
|
164
|
+
|
|
165
|
+
// TODO:
|
|
166
|
+
// context.modifyView(data.view_id, { view_name: newName });
|
|
167
|
+
}, [editor, element]);
|
|
157
168
|
return /*#__PURE__*/_react["default"].createElement("div", Object.assign({
|
|
158
169
|
"data-id": element.id
|
|
159
170
|
}, attributes, {
|
|
@@ -162,7 +173,11 @@ var FileView = function FileView(_ref) {
|
|
|
162
173
|
suppressContentEditableWarning: true
|
|
163
174
|
}), /*#__PURE__*/_react["default"].createElement("div", {
|
|
164
175
|
className: "sdoc-file-view-title"
|
|
165
|
-
},
|
|
176
|
+
}, /*#__PURE__*/_react["default"].createElement(_rename["default"], {
|
|
177
|
+
name: data.view_name,
|
|
178
|
+
onRenameConfirm: onRename,
|
|
179
|
+
onRenameCancel: onNameCancel
|
|
180
|
+
})), /*#__PURE__*/_react["default"].createElement("div", {
|
|
166
181
|
className: (0, _classnames["default"])('sdoc-file-view-content', {
|
|
167
182
|
'is-selected': isSelected
|
|
168
183
|
}),
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@seafile/sdoc-editor",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.40",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"test": "jest",
|
|
@@ -72,5 +72,5 @@
|
|
|
72
72
|
"publishConfig": {
|
|
73
73
|
"access": "public"
|
|
74
74
|
},
|
|
75
|
-
"gitHead": "
|
|
75
|
+
"gitHead": "9b616f58a19029c6a345bcbb262068993e9b31a2"
|
|
76
76
|
}
|