@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.
@@ -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: 44px;
10
- line-height: 44px;
11
- top: 0px;
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
- }, data.view_name), /*#__PURE__*/_react["default"].createElement("div", {
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.39",
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": "8d184c224586d5b7a253f40d2fa2c680f8c46d53"
75
+ "gitHead": "9b616f58a19029c6a345bcbb262068993e9b31a2"
76
76
  }