@seafile/sdoc-editor 3.0.84 → 3.0.86

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.
Files changed (23) hide show
  1. package/dist/api/seafile-api.js +21 -20
  2. package/dist/assets/css/sdoc-editor-plugins.css +38 -0
  3. package/dist/constants/index.js +1 -2
  4. package/dist/context.js +9 -23
  5. package/dist/extension/commons/insert-element-dialog/index.js +26 -13
  6. package/dist/extension/plugins/code-block/render-elem.js +25 -3
  7. package/dist/extension/plugins/file-view/helpers.js +14 -2
  8. package/dist/extension/plugins/file-view/insert-view-dialog/dropdown-select/constants.js +16 -0
  9. package/dist/extension/plugins/file-view/insert-view-dialog/dropdown-select/index.css +96 -0
  10. package/dist/extension/plugins/file-view/insert-view-dialog/dropdown-select/index.js +156 -0
  11. package/dist/extension/plugins/file-view/insert-view-dialog/dropdown-select/lib.png +0 -0
  12. package/dist/extension/plugins/file-view/insert-view-dialog/dropdown-select/option.css +49 -0
  13. package/dist/extension/plugins/file-view/insert-view-dialog/dropdown-select/option.js +53 -0
  14. package/dist/extension/plugins/file-view/insert-view-dialog/dropdown-select/select-option-group.css +37 -0
  15. package/dist/extension/plugins/file-view/insert-view-dialog/dropdown-select/select-option-group.js +241 -0
  16. package/dist/extension/plugins/file-view/insert-view-dialog/index.js +232 -0
  17. package/dist/extension/plugins/file-view/insert-view-dialog/modal-portal.js +41 -0
  18. package/dist/extension/plugins/file-view/render-elem/index.js +12 -5
  19. package/dist/extension/toolbar/insert-element-toolbar/index.js +7 -8
  20. package/dist/extension/toolbar/linked-repo-popover/link-repo-list.css +6 -8
  21. package/dist/extension/toolbar/linked-repo-popover/link-repo-list.js +67 -26
  22. package/dist/extension/toolbar/side-toolbar/insert-block-menu.js +8 -9
  23. package/package.json +3 -3
@@ -0,0 +1,49 @@
1
+ .sdoc-options .option {
2
+ display: block;
3
+ width: 100%;
4
+ line-height: 24px;
5
+ padding: 6px 10px;
6
+ clear: both;
7
+ font-weight: 400;
8
+ text-align: inherit;
9
+ background-color: transparent;
10
+ border: 0;
11
+ overflow: hidden;
12
+ text-overflow: ellipsis;
13
+ white-space: nowrap;
14
+ display: flex;
15
+ align-items: center;
16
+ justify-content: space-between;
17
+ }
18
+
19
+ .sdoc-options .option.option-active {
20
+ background-color: #20a0ff;
21
+ color: #fff;
22
+ cursor: pointer;
23
+ }
24
+
25
+ .sdoc-options .option.option-active .sf2-icon-tick,
26
+ .sdoc-options .option.option-active .select-option-name {
27
+ color: #fff !important;
28
+ }
29
+
30
+ .sdoc-options .option .select-option-name .single-select-option {
31
+ margin: 0 0 0 12px;
32
+ }
33
+
34
+ .sdoc-options .option .select-option-name .multiple-select-option {
35
+ margin: 0;
36
+ }
37
+
38
+ .sdoc-options .option-group-selector-single-select .select-option-name {
39
+ display: flex;
40
+ align-items: center;
41
+ justify-content: space-between;
42
+ }
43
+
44
+ .sdoc-options .option-group-selector-single-select .option:hover,
45
+ .sdoc-options .option-group-selector-single-select .option.option-active,
46
+ .sdoc-options .option-group-selector-multiple-select .option:hover,
47
+ .sdoc-options .option-group-selector-multiple-select .option.option-active {
48
+ background-color: #f5f5f5;
49
+ }
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard")["default"];
4
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = void 0;
9
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/classCallCheck"));
10
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/createClass"));
11
+ var _callSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/callSuper"));
12
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/inherits"));
13
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/defineProperty"));
14
+ var _react = _interopRequireWildcard(require("react"));
15
+ require("./option.css");
16
+ var Option = /*#__PURE__*/function (_Component) {
17
+ function Option() {
18
+ var _this;
19
+ (0, _classCallCheck2["default"])(this, Option);
20
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
21
+ args[_key] = arguments[_key];
22
+ }
23
+ _this = (0, _callSuper2["default"])(this, Option, [].concat(args));
24
+ (0, _defineProperty2["default"])(_this, "onSelectOption", function (e) {
25
+ e.stopPropagation();
26
+ _this.props.onSelectOption(_this.props.option);
27
+ });
28
+ (0, _defineProperty2["default"])(_this, "onMouseEnter", function () {
29
+ if (!_this.props.disableHover) {
30
+ _this.props.changeIndex(_this.props.index);
31
+ }
32
+ });
33
+ (0, _defineProperty2["default"])(_this, "onMouseLeave", function () {
34
+ if (!_this.props.disableHover) {
35
+ _this.props.changeIndex(-1);
36
+ }
37
+ });
38
+ return _this;
39
+ }
40
+ (0, _inherits2["default"])(Option, _Component);
41
+ return (0, _createClass2["default"])(Option, [{
42
+ key: "render",
43
+ value: function render() {
44
+ return /*#__PURE__*/_react["default"].createElement("div", {
45
+ className: this.props.isActive ? 'option option-active' : 'option',
46
+ onClick: this.onSelectOption,
47
+ onMouseEnter: this.onMouseEnter,
48
+ onMouseLeave: this.onMouseLeave
49
+ }, this.props.children);
50
+ }
51
+ }]);
52
+ }(_react.Component);
53
+ var _default = exports["default"] = Option;
@@ -0,0 +1,37 @@
1
+ .sdoc-options.option-group {
2
+ position: absolute;
3
+ padding-top: 0;
4
+ left: 0;
5
+ min-height: 60px;
6
+ max-height: 300px;
7
+ min-width: 100%;
8
+ max-width: 15rem;
9
+ padding: 0.5rem 0;
10
+ box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
11
+ background: #fff;
12
+ border: 1px solid rgba(0, 40, 100, .12);
13
+ border-radius: 3px;
14
+ z-index: 10001;
15
+ }
16
+
17
+ [data-bs-theme=dark] .sdoc-options.option-group {
18
+ box-shadow: none;
19
+ }
20
+
21
+ .sdoc-options.option-group .option-group-search {
22
+ width: 100%;
23
+ padding: 6px 10px;
24
+ min-width: 170px;
25
+ }
26
+
27
+ .sdoc-options.option-group .none-search-result {
28
+ height: 100px;
29
+ width: 100%;
30
+ padding: 10px;
31
+ color: #f5f5f5;
32
+ }
33
+
34
+ .sdoc-options.option-group .option-group-content {
35
+ max-height: 252px;
36
+ overflow-y: auto;
37
+ }
@@ -0,0 +1,241 @@
1
+ "use strict";
2
+
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard")["default"];
4
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = void 0;
9
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/classCallCheck"));
10
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/createClass"));
11
+ var _callSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/callSuper"));
12
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/inherits"));
13
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/defineProperty"));
14
+ var _react = _interopRequireWildcard(require("react"));
15
+ var _classnames = _interopRequireDefault(require("classnames"));
16
+ var _constants = _interopRequireDefault(require("./constants"));
17
+ var _lib = _interopRequireDefault(require("./lib.png"));
18
+ var _option = _interopRequireDefault(require("./option"));
19
+ require("./select-option-group.css");
20
+ var OPTION_HEIGHT = 32;
21
+ var SelectOptionGroup = /*#__PURE__*/function (_Component) {
22
+ function SelectOptionGroup(props) {
23
+ var _this;
24
+ (0, _classCallCheck2["default"])(this, SelectOptionGroup);
25
+ _this = (0, _callSuper2["default"])(this, SelectOptionGroup, [props]);
26
+ (0, _defineProperty2["default"])(_this, "handleDocumentClick", function (e) {
27
+ _this.props.onClickOutside(e);
28
+ });
29
+ (0, _defineProperty2["default"])(_this, "resetMenuStyle", function () {
30
+ var _this$props = _this.props,
31
+ isInModal = _this$props.isInModal,
32
+ position = _this$props.position;
33
+ var _this$optionGroupRef$ = _this.optionGroupRef.getBoundingClientRect(),
34
+ top = _this$optionGroupRef$.top,
35
+ height = _this$optionGroupRef$.height;
36
+ if (isInModal) {
37
+ if (position.y + position.height + height > window.innerHeight) {
38
+ _this.optionGroupRef.style.top = position.y - height + 'px';
39
+ }
40
+ _this.optionGroupRef.style.opacity = 1;
41
+ } else {
42
+ if (height + top > window.innerHeight) {
43
+ var borderWidth = 2;
44
+ _this.optionGroupRef.style.top = -1 * (height + borderWidth) + 'px';
45
+ }
46
+ }
47
+ });
48
+ (0, _defineProperty2["default"])(_this, "onHotKey", function (event) {
49
+ var keyCode = event.keyCode;
50
+ if (keyCode === _constants["default"].UpArrow) {
51
+ _this.onPressUp();
52
+ } else if (keyCode === _constants["default"].DownArrow) {
53
+ _this.onPressDown();
54
+ } else if (keyCode === _constants["default"].Enter) {
55
+ var option = _this.filterOptions && _this.filterOptions[_this.state.activeIndex];
56
+ if (option) {
57
+ _this.props.onSelectOption(option);
58
+ }
59
+ } else if (keyCode === _constants["default"].Tab || keyCode === _constants["default"].Escape) {
60
+ _this.props.closeSelect();
61
+ }
62
+ });
63
+ (0, _defineProperty2["default"])(_this, "onPressUp", function () {
64
+ if (_this.state.activeIndex > 0) {
65
+ _this.setState({
66
+ activeIndex: _this.state.activeIndex - 1
67
+ }, function () {
68
+ _this.scrollContent();
69
+ });
70
+ }
71
+ });
72
+ (0, _defineProperty2["default"])(_this, "onPressDown", function () {
73
+ if (_this.filterOptions && _this.state.activeIndex < _this.filterOptions.length - 1) {
74
+ _this.setState({
75
+ activeIndex: _this.state.activeIndex + 1
76
+ }, function () {
77
+ _this.scrollContent();
78
+ });
79
+ }
80
+ });
81
+ (0, _defineProperty2["default"])(_this, "onMouseDown", function (e) {
82
+ var isInModal = _this.props.isInModal;
83
+ // prevent event propagation when click option or search input
84
+ if (isInModal) {
85
+ e.stopPropagation();
86
+ e.nativeEvent.stopImmediatePropagation();
87
+ }
88
+ });
89
+ (0, _defineProperty2["default"])(_this, "scrollContent", function () {
90
+ var _this$optionGroupCont = _this.optionGroupContentRef,
91
+ offsetHeight = _this$optionGroupCont.offsetHeight,
92
+ scrollTop = _this$optionGroupCont.scrollTop;
93
+ _this.setState({
94
+ disableHover: true
95
+ });
96
+ _this.timer = setTimeout(function () {
97
+ _this.setState({
98
+ disableHover: false
99
+ });
100
+ }, 500);
101
+ if (_this.state.activeIndex * OPTION_HEIGHT === 0) {
102
+ _this.optionGroupContentRef.scrollTop = 0;
103
+ return;
104
+ }
105
+ if (_this.state.activeIndex * OPTION_HEIGHT < scrollTop) {
106
+ _this.optionGroupContentRef.scrollTop = scrollTop - OPTION_HEIGHT;
107
+ } else if (_this.state.activeIndex * OPTION_HEIGHT > offsetHeight + scrollTop) {
108
+ _this.optionGroupContentRef.scrollTop = scrollTop + OPTION_HEIGHT;
109
+ }
110
+ });
111
+ (0, _defineProperty2["default"])(_this, "changeIndex", function (index) {
112
+ _this.setState({
113
+ activeIndex: index
114
+ });
115
+ });
116
+ (0, _defineProperty2["default"])(_this, "onChangeSearch", function (searchVal) {
117
+ _this.setState({
118
+ searchVal: searchVal || '',
119
+ activeIndex: -1
120
+ });
121
+ });
122
+ (0, _defineProperty2["default"])(_this, "clearValue", function () {
123
+ _this.setState({
124
+ searchVal: '',
125
+ activeIndex: -1
126
+ });
127
+ });
128
+ (0, _defineProperty2["default"])(_this, "renderOptGroup", function (searchVal) {
129
+ var _this$props2 = _this.props,
130
+ noOptionsPlaceholder = _this$props2.noOptionsPlaceholder,
131
+ onSelectOption = _this$props2.onSelectOption,
132
+ selectedOption = _this$props2.selectedOption,
133
+ hasIcon = _this$props2.hasIcon;
134
+ _this.filterOptions = _this.props.getFilterOptions(searchVal);
135
+ if (_this.filterOptions.length === 0) {
136
+ return /*#__PURE__*/_react["default"].createElement("div", {
137
+ className: "none-search-result"
138
+ }, noOptionsPlaceholder);
139
+ }
140
+ return _this.filterOptions.map(function (option, index) {
141
+ var isSelected = (selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.id) === option.id;
142
+ return /*#__PURE__*/_react["default"].createElement(_option["default"], {
143
+ key: "".concat(option.id, "-").concat(index),
144
+ index: index,
145
+ isActive: _this.state.activeIndex === index,
146
+ option: option,
147
+ onSelectOption: onSelectOption,
148
+ changeIndex: _this.changeIndex,
149
+ disableHover: _this.state.disableHover
150
+ }, /*#__PURE__*/_react["default"].createElement("div", {
151
+ className: "d-flex"
152
+ }, hasIcon && /*#__PURE__*/_react["default"].createElement("img", {
153
+ src: _lib["default"],
154
+ width: '24px',
155
+ alt: "",
156
+ className: "mr-2"
157
+ }), /*#__PURE__*/_react["default"].createElement("div", {
158
+ className: "option-label"
159
+ }, option.label)), isSelected && /*#__PURE__*/_react["default"].createElement("i", {
160
+ className: "sdocfont sdoc-check-mark text-gray font-weight-bold"
161
+ }));
162
+ });
163
+ });
164
+ _this.state = {
165
+ searchVal: '',
166
+ activeIndex: -1,
167
+ disableHover: false
168
+ };
169
+ _this.filterOptions = null;
170
+ _this.timer = null;
171
+ _this.searchInputRef = /*#__PURE__*/_react["default"].createRef();
172
+ return _this;
173
+ }
174
+ (0, _inherits2["default"])(SelectOptionGroup, _Component);
175
+ return (0, _createClass2["default"])(SelectOptionGroup, [{
176
+ key: "componentDidMount",
177
+ value: function componentDidMount() {
178
+ var _this2 = this;
179
+ window.addEventListener('keydown', this.onHotKey);
180
+ document.addEventListener('mousedown', this.handleDocumentClick);
181
+ setTimeout(function () {
182
+ _this2.resetMenuStyle();
183
+ }, 1);
184
+ }
185
+ }, {
186
+ key: "componentWillUnmount",
187
+ value: function componentWillUnmount() {
188
+ this.filterOptions = null;
189
+ this.timer && clearTimeout(this.timer);
190
+ window.removeEventListener('keydown', this.onHotKey);
191
+ document.removeEventListener('mousedown', this.handleDocumentClick);
192
+ }
193
+ }, {
194
+ key: "render",
195
+ value: function render() {
196
+ var _this3 = this;
197
+ var _this$props3 = this.props,
198
+ top = _this$props3.top,
199
+ left = _this$props3.left,
200
+ minWidth = _this$props3.minWidth,
201
+ isInModal = _this$props3.isInModal,
202
+ position = _this$props3.position,
203
+ className = _this$props3.className;
204
+ var searchVal = this.state.searchVal;
205
+ var style = {
206
+ top: top || 0,
207
+ left: left || 0
208
+ };
209
+ if (minWidth) {
210
+ style = {
211
+ top: top || 0,
212
+ left: left || 0,
213
+ minWidth: minWidth
214
+ };
215
+ }
216
+ if (isInModal) {
217
+ style = {
218
+ position: 'fixed',
219
+ left: position.x,
220
+ top: position.y + position.height,
221
+ minWidth: position.width,
222
+ opacity: 0
223
+ };
224
+ }
225
+ return /*#__PURE__*/_react["default"].createElement("div", {
226
+ className: (0, _classnames["default"])('sdoc-options option-group', className ? 'option-group-' + className : ''),
227
+ ref: function ref(_ref2) {
228
+ return _this3.optionGroupRef = _ref2;
229
+ },
230
+ style: style,
231
+ onMouseDown: this.onMouseDown
232
+ }, /*#__PURE__*/_react["default"].createElement("div", {
233
+ className: "option-group-content",
234
+ ref: function ref(_ref) {
235
+ return _this3.optionGroupContentRef = _ref;
236
+ }
237
+ }, this.renderOptGroup(searchVal)));
238
+ }
239
+ }]);
240
+ }(_react.Component);
241
+ var _default = exports["default"] = SelectOptionGroup;
@@ -0,0 +1,232 @@
1
+ "use strict";
2
+
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard")["default"];
4
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = void 0;
9
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectSpread2"));
10
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
11
+ var _react = _interopRequireWildcard(require("react"));
12
+ var _reactI18next = require("react-i18next");
13
+ var _reactstrap = require("reactstrap");
14
+ var _loading = _interopRequireDefault(require("../../../../components/loading"));
15
+ var _toast = _interopRequireDefault(require("../../../../components/toast"));
16
+ var _context = _interopRequireDefault(require("../../../../context"));
17
+ var _commonUtils = require("../../../../utils/common-utils");
18
+ var _helpers = require("../helpers");
19
+ var _dropdownSelect = _interopRequireDefault(require("./dropdown-select"));
20
+ var InsertViewDialog = function InsertViewDialog(_ref) {
21
+ var className = _ref.className,
22
+ editor = _ref.editor,
23
+ _ref$element = _ref.element,
24
+ element = _ref$element === void 0 ? {} : _ref$element,
25
+ slateNode = _ref.slateNode,
26
+ insertPosition = _ref.insertPosition,
27
+ closeDialog = _ref.closeDialog;
28
+ var _element$data = element.data,
29
+ data = _element$data === void 0 ? {} : _element$data;
30
+ var _useTranslation = (0, _reactI18next.useTranslation)('sdoc-editor'),
31
+ t = _useTranslation.t;
32
+ var _useState = (0, _react.useState)(true),
33
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
34
+ isLoading = _useState2[0],
35
+ setIsLoading = _useState2[1];
36
+ var _useState3 = (0, _react.useState)(''),
37
+ _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
38
+ viewName = _useState4[0],
39
+ setViewName = _useState4[1];
40
+ var _useState5 = (0, _react.useState)(null),
41
+ _useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
42
+ currentTypeOption = _useState6[0],
43
+ setCurrentTypeOption = _useState6[1];
44
+ var _useState7 = (0, _react.useState)(null),
45
+ _useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
46
+ currentRepoOption = _useState8[0],
47
+ setCurrentRepoOption = _useState8[1];
48
+ var _useState9 = (0, _react.useState)(''),
49
+ _useState0 = (0, _slicedToArray2["default"])(_useState9, 2),
50
+ viewNameErrorMessage = _useState0[0],
51
+ setViewNameErrorMessage = _useState0[1];
52
+ var _useState1 = (0, _react.useState)(''),
53
+ _useState10 = (0, _slicedToArray2["default"])(_useState1, 2),
54
+ typeErrorMessage = _useState10[0],
55
+ setTypeErrorMessage = _useState10[1];
56
+ var _useState11 = (0, _react.useState)(''),
57
+ _useState12 = (0, _slicedToArray2["default"])(_useState11, 2),
58
+ repoErrorMessage = _useState12[0],
59
+ setRepoErrorMessage = _useState12[1];
60
+ var _useState13 = (0, _react.useState)([]),
61
+ _useState14 = (0, _slicedToArray2["default"])(_useState13, 2),
62
+ repoOptions = _useState14[0],
63
+ setRepoOptions = _useState14[1];
64
+ var TYPE_OPERATIONS = (0, _react.useMemo)(function () {
65
+ return [{
66
+ id: 'table',
67
+ name: 'table',
68
+ value: 'table',
69
+ label: 'table'
70
+ }];
71
+ }, []);
72
+ (0, _react.useEffect)(function () {
73
+ var _element$data2 = element.data,
74
+ data = _element$data2 === void 0 ? {} : _element$data2;
75
+ setViewName(data.view_name);
76
+ var typeOption = TYPE_OPERATIONS.find(function (item) {
77
+ return item.value === data.view_type;
78
+ }) || null;
79
+ setCurrentTypeOption(typeOption);
80
+ var wikiSettings = (0, _helpers.getWikiSettings)();
81
+ var accessibleRepos = (0, _helpers.getAccessibleRepos)();
82
+ var linkedRepoIds = wikiSettings.linked_repos;
83
+ var repoList = accessibleRepos.map(function (item) {
84
+ item.sharePermission = 'rw';
85
+ return item;
86
+ });
87
+ var options = repoList.map(function (item) {
88
+ return {
89
+ id: item.repo_id,
90
+ name: item.repo_name,
91
+ value: item.repo_name,
92
+ label: item.repo_name,
93
+ permission: item.permission
94
+ };
95
+ });
96
+ var optionsMap = options.reduce(function (result, item) {
97
+ result[item.id] = item;
98
+ return result;
99
+ }, {});
100
+ var repoOptions = linkedRepoIds.map(function (id) {
101
+ return optionsMap[id];
102
+ }).filter(Boolean);
103
+ setRepoOptions(repoOptions);
104
+ setCurrentRepoOption(repoOptions.find(function (item) {
105
+ return item.id === data.linked_repo_id;
106
+ }));
107
+ setIsLoading(false);
108
+ // eslint-disable-next-line react-hooks/exhaustive-deps
109
+ }, []);
110
+ var submit = (0, _react.useCallback)(function () {
111
+ setViewNameErrorMessage('');
112
+ setTypeErrorMessage('');
113
+ setRepoErrorMessage('');
114
+ if (!viewName) {
115
+ setViewNameErrorMessage(t('The_view_name_is_required'));
116
+ return;
117
+ }
118
+ if (!currentTypeOption) {
119
+ setTypeErrorMessage(t('The_view_type_is_required'));
120
+ return;
121
+ }
122
+ if (!currentRepoOption) {
123
+ setRepoErrorMessage(t('The_linked_library_is_required'));
124
+ return;
125
+ }
126
+ var viewType = currentTypeOption.value;
127
+ var linkedRepoId = currentRepoOption.id;
128
+ var wikiId = _context["default"].getSetting('wikiId');
129
+ var data = {
130
+ wiki_id: wikiId,
131
+ view_name: viewName,
132
+ view_type: viewType,
133
+ link_repo_id: linkedRepoId
134
+ };
135
+ _context["default"].insertWikiView(data).then(function (res) {
136
+ var view = res.data.view;
137
+ var viewData = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, data), {}, {
138
+ view_id: view._id
139
+ });
140
+ (0, _helpers.insertFileView)(viewData, editor, insertPosition, slateNode);
141
+ closeDialog();
142
+ })["catch"](function (error) {
143
+ var errorMessage = (0, _commonUtils.getErrorMsg)(error);
144
+ _toast["default"].danger(errorMessage);
145
+ });
146
+ }, [viewName, currentTypeOption, currentRepoOption, t, editor, insertPosition, slateNode, closeDialog]);
147
+ var onKeyDown = (0, _react.useCallback)(function (event) {
148
+ if (event.keyCode === 13) {
149
+ event.preventDefault();
150
+ submit();
151
+ return;
152
+ }
153
+ }, [submit]);
154
+ var onValueChanged = (0, _react.useCallback)(function (event) {
155
+ var value = event.target.value;
156
+ if (value === viewName) return;
157
+ setViewName(value);
158
+ setViewNameErrorMessage('');
159
+ }, [viewName]);
160
+ var onSelectTypeOption = (0, _react.useCallback)(function (option) {
161
+ setCurrentTypeOption(option);
162
+ setTypeErrorMessage('');
163
+ }, []);
164
+ var onSelectTableOption = (0, _react.useCallback)(function (option) {
165
+ setCurrentRepoOption(option);
166
+ setRepoErrorMessage('');
167
+ }, []);
168
+ var close = (0, _react.useMemo)(function () {
169
+ return /*#__PURE__*/_react["default"].createElement("span", {
170
+ className: "sdoc-add-link-close-icon",
171
+ onClick: closeDialog
172
+ }, /*#__PURE__*/_react["default"].createElement("i", {
173
+ className: "sdocfont sdoc-sm-close",
174
+ "aria-hidden": "true"
175
+ }));
176
+ }, [closeDialog]);
177
+ return /*#__PURE__*/_react["default"].createElement(_reactstrap.Modal, {
178
+ isOpen: true,
179
+ autoFocus: false,
180
+ toggle: closeDialog,
181
+ className: className,
182
+ zIndex: 1071,
183
+ returnFocusAfterClose: false
184
+ }, /*#__PURE__*/_react["default"].createElement(_reactstrap.ModalHeader, {
185
+ close: close
186
+ }, t('Insert_file_view')), /*#__PURE__*/_react["default"].createElement(_reactstrap.ModalBody, null, isLoading && /*#__PURE__*/_react["default"].createElement(_loading["default"], null), !isLoading && repoOptions.length === 0 && /*#__PURE__*/_react["default"].createElement("div", {
187
+ className: ""
188
+ }, t('Linked_repo_tip')), !isLoading && repoOptions.length !== 0 && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("div", {
189
+ className: "form-group"
190
+ }, /*#__PURE__*/_react["default"].createElement(_reactstrap.Label, {
191
+ "for": "addTitle"
192
+ }, t('View_name')), /*#__PURE__*/_react["default"].createElement("input", {
193
+ onKeyDown: onKeyDown,
194
+ type: "text",
195
+ className: "form-control",
196
+ id: "addTitle",
197
+ value: data.view_name,
198
+ onChange: onValueChanged
199
+ }), viewNameErrorMessage && /*#__PURE__*/_react["default"].createElement(_reactstrap.Alert, {
200
+ color: "danger",
201
+ className: "mt-2"
202
+ }, t(viewNameErrorMessage))), /*#__PURE__*/_react["default"].createElement("div", {
203
+ className: "form-group"
204
+ }, /*#__PURE__*/_react["default"].createElement(_reactstrap.Label, null, t('View_type')), /*#__PURE__*/_react["default"].createElement(_dropdownSelect["default"], {
205
+ selectedOption: currentTypeOption,
206
+ options: TYPE_OPERATIONS,
207
+ onSelectOption: onSelectTypeOption,
208
+ isInModal: true
209
+ }), typeErrorMessage && /*#__PURE__*/_react["default"].createElement(_reactstrap.Alert, {
210
+ color: "danger",
211
+ className: "mt-2"
212
+ }, t(typeErrorMessage))), /*#__PURE__*/_react["default"].createElement("div", {
213
+ className: "form-group"
214
+ }, /*#__PURE__*/_react["default"].createElement(_reactstrap.Label, null, t('Linked_library')), /*#__PURE__*/_react["default"].createElement(_dropdownSelect["default"], {
215
+ hasIcon: true,
216
+ selectedOption: currentRepoOption,
217
+ options: repoOptions,
218
+ onSelectOption: onSelectTableOption,
219
+ isInModal: true
220
+ }), repoErrorMessage && /*#__PURE__*/_react["default"].createElement(_reactstrap.Alert, {
221
+ color: "danger",
222
+ className: "mt-2"
223
+ }, t(repoErrorMessage))))), !isLoading && repoOptions.length !== 0 && /*#__PURE__*/_react["default"].createElement(_reactstrap.ModalFooter, null, /*#__PURE__*/_react["default"].createElement(_reactstrap.Button, {
224
+ color: "secondary",
225
+ onClick: closeDialog
226
+ }, t('Cancel')), /*#__PURE__*/_react["default"].createElement(_reactstrap.Button, {
227
+ color: "primary",
228
+ disabled: false,
229
+ onClick: submit
230
+ }, t('Submit'))));
231
+ };
232
+ var _default = exports["default"] = InsertViewDialog;
@@ -0,0 +1,41 @@
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 _react = _interopRequireDefault(require("react"));
13
+ var _reactDom = require("react-dom");
14
+ var modalRoot = document.getElementById('modal-wrapper');
15
+ var ModalPortal = /*#__PURE__*/function (_React$Component) {
16
+ function ModalPortal(props) {
17
+ var _this;
18
+ (0, _classCallCheck2["default"])(this, ModalPortal);
19
+ _this = (0, _callSuper2["default"])(this, ModalPortal, [props]);
20
+ _this.el = document.createElement('div');
21
+ return _this;
22
+ }
23
+ (0, _inherits2["default"])(ModalPortal, _React$Component);
24
+ return (0, _createClass2["default"])(ModalPortal, [{
25
+ key: "componentDidMount",
26
+ value: function componentDidMount() {
27
+ modalRoot.appendChild(this.el);
28
+ }
29
+ }, {
30
+ key: "componentWillUnmount",
31
+ value: function componentWillUnmount() {
32
+ modalRoot.removeChild(this.el);
33
+ }
34
+ }, {
35
+ key: "render",
36
+ value: function render() {
37
+ return /*#__PURE__*/(0, _reactDom.createPortal)(this.props.children, this.el);
38
+ }
39
+ }]);
40
+ }(_react["default"].Component);
41
+ var _default = exports["default"] = ModalPortal;