@seafile/sdoc-editor 1.0.17 → 1.0.18

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 (65) hide show
  1. package/dist/basic-sdk/comment/components/global-comment/index.js +0 -1
  2. package/dist/basic-sdk/extension/plugins/seatable-tables/formatter/index.js +17 -1
  3. package/dist/basic-sdk/extension/plugins/seatable-tables/helpers.js +15 -2
  4. package/dist/basic-sdk/extension/plugins/seatable-tables/model.js +7 -0
  5. package/dist/basic-sdk/extension/plugins/seatable-tables/op-menu/index.js +0 -1
  6. package/dist/basic-sdk/extension/plugins/seatable-tables/render-element/index.css +23 -0
  7. package/dist/basic-sdk/extension/plugins/seatable-tables/render-element/record-header.js +6 -3
  8. package/dist/basic-sdk/extension/plugins/seatable-tables/render-element/record-item.js +5 -1
  9. package/dist/basic-sdk/extension/plugins/seatable-tables/render-element/record-list.js +6 -3
  10. package/dist/basic-sdk/extension/plugins/seatable-tables/render-element/seatable-table.js +86 -10
  11. package/dist/basic-sdk/extension/plugins/seatable-tables/seatable-settings/common-add-tool/index.css +18 -0
  12. package/dist/basic-sdk/extension/plugins/seatable-tables/seatable-settings/common-add-tool/index.js +24 -0
  13. package/dist/basic-sdk/extension/plugins/seatable-tables/seatable-settings/dtable-search-input/index.js +131 -0
  14. package/dist/basic-sdk/extension/plugins/seatable-tables/seatable-settings/filter-setter/filter-popover-widgets/calendar-filter/date-translate.js +56 -0
  15. package/dist/basic-sdk/extension/plugins/seatable-tables/seatable-settings/filter-setter/filter-popover-widgets/calendar-filter/dayjs.js +4 -0
  16. package/dist/basic-sdk/extension/plugins/seatable-tables/seatable-settings/filter-setter/filter-popover-widgets/calendar-filter/index.js +175 -0
  17. package/dist/basic-sdk/extension/plugins/seatable-tables/seatable-settings/filter-setter/filter-popover-widgets/collaborator-filter/index.js +107 -0
  18. package/dist/basic-sdk/extension/plugins/seatable-tables/seatable-settings/filter-setter/filter-popover-widgets/department-filter/_department-select.css +209 -0
  19. package/dist/basic-sdk/extension/plugins/seatable-tables/seatable-settings/filter-setter/filter-popover-widgets/department-filter/_department-utils.js +39 -0
  20. package/dist/basic-sdk/extension/plugins/seatable-tables/seatable-settings/filter-setter/filter-popover-widgets/department-filter/department-multiple-select-filter.js +89 -0
  21. package/dist/basic-sdk/extension/plugins/seatable-tables/seatable-settings/filter-setter/filter-popover-widgets/department-filter/department-multiple-select.js +148 -0
  22. package/dist/basic-sdk/extension/plugins/seatable-tables/seatable-settings/filter-setter/filter-popover-widgets/department-filter/department-single-select-filter.js +90 -0
  23. package/dist/basic-sdk/extension/plugins/seatable-tables/seatable-settings/filter-setter/filter-popover-widgets/department-filter/department-single-select.js +275 -0
  24. package/dist/basic-sdk/extension/plugins/seatable-tables/seatable-settings/filter-setter/filter-popover-widgets/department-filter/index.js +3 -0
  25. package/dist/basic-sdk/extension/plugins/seatable-tables/seatable-settings/filter-setter/filter-popover-widgets/department-filter/selected-departments.js +84 -0
  26. package/dist/basic-sdk/extension/plugins/seatable-tables/seatable-settings/filter-setter/filter-popover-widgets/department-filter/use-click-outside.js +22 -0
  27. package/dist/basic-sdk/extension/plugins/seatable-tables/seatable-settings/filter-setter/filter-popover-widgets/filter-item-utils.js +144 -0
  28. package/dist/basic-sdk/extension/plugins/seatable-tables/seatable-settings/filter-setter/filter-popover-widgets/filter-item.js +696 -0
  29. package/dist/basic-sdk/extension/plugins/seatable-tables/seatable-settings/filter-setter/filter-popover-widgets/filters-list.css +321 -0
  30. package/dist/basic-sdk/extension/plugins/seatable-tables/seatable-settings/filter-setter/filter-popover-widgets/filters-list.js +121 -0
  31. package/dist/basic-sdk/extension/plugins/seatable-tables/seatable-settings/filter-setter/filter-popover-widgets/number-editor/index.js +161 -0
  32. package/dist/basic-sdk/extension/plugins/seatable-tables/seatable-settings/filter-setter/filter-popover-widgets/rate-item/index.js +73 -0
  33. package/dist/basic-sdk/extension/plugins/seatable-tables/seatable-settings/filter-setter/filter-popover.css +30 -0
  34. package/dist/basic-sdk/extension/plugins/seatable-tables/seatable-settings/filter-setter/filter-popover.js +200 -0
  35. package/dist/basic-sdk/extension/plugins/seatable-tables/seatable-settings/filter-setter/filters-utils.js +456 -0
  36. package/dist/basic-sdk/extension/plugins/seatable-tables/seatable-settings/filter-setter/index.css +0 -0
  37. package/dist/basic-sdk/extension/plugins/seatable-tables/seatable-settings/filter-setter/index.js +81 -7
  38. package/dist/basic-sdk/extension/plugins/seatable-tables/seatable-settings/hide-column-setter/hide-column-item.js +54 -0
  39. package/dist/basic-sdk/extension/plugins/seatable-tables/seatable-settings/hide-column-setter/hide-column-popover.js +203 -0
  40. package/dist/basic-sdk/extension/plugins/seatable-tables/seatable-settings/hide-column-setter/index.css +105 -0
  41. package/dist/basic-sdk/extension/plugins/seatable-tables/seatable-settings/hide-column-setter/index.js +89 -8
  42. package/dist/basic-sdk/extension/plugins/seatable-tables/seatable-settings/index.css +4 -0
  43. package/dist/basic-sdk/extension/plugins/seatable-tables/seatable-settings/index.js +98 -26
  44. package/dist/basic-sdk/extension/plugins/seatable-tables/seatable-settings/sort-setter/index.css +83 -0
  45. package/dist/basic-sdk/extension/plugins/seatable-tables/seatable-settings/sort-setter/index.js +67 -8
  46. package/dist/basic-sdk/extension/plugins/seatable-tables/seatable-settings/sort-setter/sort-popover.js +279 -0
  47. package/dist/basic-sdk/extension/plugins/seatable-tables/seatable-settings/sort-setter/sort-utils.js +71 -0
  48. package/dist/basic-sdk/extension/plugins/seatable-tables/seatable-settings/utils/utils.js +33 -0
  49. package/dist/basic-sdk/extension/plugins/table/menu/horizontal-align-popover/index.js +1 -1
  50. package/dist/basic-sdk/extension/plugins/table/menu/table-context-menu/index.js +1 -2
  51. package/dist/basic-sdk/socket/socket-client.js +1 -1
  52. package/dist/pages/document-plugin-editor.js +3 -1
  53. package/package.json +2 -1
  54. package/public/locales/cs/sdoc-editor.json +40 -1
  55. package/public/locales/de/sdoc-editor.json +40 -1
  56. package/public/locales/en/sdoc-editor.json +40 -1
  57. package/public/locales/es/sdoc-editor.json +40 -1
  58. package/public/locales/es_AR/sdoc-editor.json +40 -1
  59. package/public/locales/es_MX/sdoc-editor.json +40 -1
  60. package/public/locales/fr/sdoc-editor.json +40 -1
  61. package/public/locales/it/sdoc-editor.json +40 -1
  62. package/public/locales/ru/sdoc-editor.json +40 -1
  63. package/public/locales/zh_CN/sdoc-editor.json +41 -2
  64. package/dist/basic-sdk/extension/plugins/seatable-tables/setting/index.css +0 -1
  65. package/dist/basic-sdk/extension/plugins/seatable-tables/setting/index.js +0 -6
@@ -1,8 +1,82 @@
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
1
2
  import React from 'react';
2
- export default function FilterSetter() {
3
- return /*#__PURE__*/React.createElement("div", {
4
- className: "setting-item-btn filters-setting"
5
- }, /*#__PURE__*/React.createElement("i", {
6
- className: "dtable-font dtable-icon-filter mr-2"
7
- }), /*#__PURE__*/React.createElement("div", null, "FilterSetter"));
8
- }
3
+ import deepCopy from 'deep-copy';
4
+ import { withTranslation } from 'react-i18next';
5
+ import { getValidFilters } from 'dtable-utils';
6
+ import FilterPopover from './filter-popover';
7
+ class FilterSetter extends React.Component {
8
+ constructor(props) {
9
+ super(props);
10
+ _defineProperty(this, "onFilterSetterToggle", () => {
11
+ this.setState({
12
+ isShowFilterPopover: !this.state.isShowFilterPopover
13
+ });
14
+ });
15
+ _defineProperty(this, "update", update => {
16
+ const {
17
+ filters,
18
+ filter_conjunction
19
+ } = update || {};
20
+ const {
21
+ columns
22
+ } = this.props;
23
+ const valid_filters = getValidFilters(filters, columns);
24
+ this.props.onFiltersChange(valid_filters, filter_conjunction);
25
+ });
26
+ this.state = {
27
+ isShowFilterPopover: false
28
+ };
29
+ }
30
+ render() {
31
+ const {
32
+ wrapperClass,
33
+ filtersClassName,
34
+ filterConjunction,
35
+ filters,
36
+ columns,
37
+ collaborators,
38
+ isNeedSubmit,
39
+ t
40
+ } = this.props;
41
+ if (!columns) return null;
42
+ const {
43
+ isShowFilterPopover
44
+ } = this.state;
45
+ const validFilters = deepCopy(getValidFilters(filters || [], columns));
46
+ const filtersLength = validFilters ? validFilters.length : 0;
47
+ let filterMessage = t('Filter');
48
+ if (filtersLength === 1) {
49
+ filterMessage = t('1 Filter');
50
+ } else if (filtersLength > 1) {
51
+ filterMessage = t('Filters');
52
+ filterMessage = filtersLength + ' ' + filterMessage;
53
+ }
54
+ let labelClass = wrapperClass || '';
55
+ labelClass = labelClass && filtersLength > 0 ? labelClass + ' active' : labelClass;
56
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
57
+ className: "setting-item ".concat(labelClass ? 'mr-2' : 'mb-1')
58
+ }, /*#__PURE__*/React.createElement("div", {
59
+ className: "setting-item-btn filters-setting-btn ".concat(labelClass),
60
+ onClick: this.onFilterSetterToggle
61
+ }, /*#__PURE__*/React.createElement("i", {
62
+ className: "dtable-font dtable-icon-filter mr-2",
63
+ id: this.props.target
64
+ }), /*#__PURE__*/React.createElement("span", null, filterMessage))), isShowFilterPopover && /*#__PURE__*/React.createElement(FilterPopover, {
65
+ filtersClassName: filtersClassName,
66
+ target: this.props.target,
67
+ isNeedSubmit: isNeedSubmit,
68
+ columns: columns,
69
+ collaborators: collaborators,
70
+ filterConjunction: filterConjunction,
71
+ filters: validFilters,
72
+ hidePopover: this.onFilterSetterToggle,
73
+ update: this.update,
74
+ isPre: this.props.isPre
75
+ }));
76
+ }
77
+ }
78
+ _defineProperty(FilterSetter, "defaultProps", {
79
+ target: 'dtable-filter-popover',
80
+ isNeedSubmit: false
81
+ });
82
+ export default withTranslation('sdoc-editor')(FilterSetter);
@@ -0,0 +1,54 @@
1
+ import _DTableSwitch from "dtable-ui-component/lib/DTableSwitch";
2
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
3
+ import React from 'react';
4
+ class HideColumnItem extends React.PureComponent {
5
+ constructor(props) {
6
+ super(props);
7
+ _defineProperty(this, "onUpdateFieldSetting", event => {
8
+ event.nativeEvent.stopImmediatePropagation();
9
+ const value = event.target.checked;
10
+ const {
11
+ setting
12
+ } = this.state;
13
+ if (setting.isChecked === value) {
14
+ return;
15
+ }
16
+ const newSetting = Object.assign({}, setting, {
17
+ isChecked: value
18
+ });
19
+ this.setState({
20
+ setting: newSetting
21
+ }, () => {
22
+ this.props.onUpdateFieldSetting(newSetting);
23
+ });
24
+ });
25
+ this.state = {
26
+ setting: null
27
+ };
28
+ }
29
+ static getDerivedStateFromProps(nextProps, prevState) {
30
+ if (JSON.stringify(nextProps.setting) !== JSON.stringify(prevState.setting)) {
31
+ return {
32
+ setting: nextProps.setting
33
+ };
34
+ }
35
+ return null;
36
+ }
37
+ render() {
38
+ const {
39
+ setting
40
+ } = this.state;
41
+ const placeholder = /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("i", {
42
+ className: "dtable-font ".concat(setting.columnIcon)
43
+ }), /*#__PURE__*/React.createElement("span", {
44
+ className: "text-truncate"
45
+ }, setting.columnName));
46
+ return /*#__PURE__*/React.createElement(_DTableSwitch, {
47
+ checked: setting.isChecked,
48
+ placeholder: placeholder,
49
+ onChange: this.onUpdateFieldSetting,
50
+ switchClassName: "dropdown-item"
51
+ });
52
+ }
53
+ }
54
+ export default HideColumnItem;
@@ -0,0 +1,203 @@
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
+ import React from 'react';
3
+ import { UncontrolledPopover } from 'reactstrap';
4
+ import { withTranslation } from 'react-i18next';
5
+ import isHotkey from 'is-hotkey';
6
+ import { COLUMNS_ICON_CONFIG } from 'dtable-utils';
7
+ import { getEventClassName } from '../utils/utils';
8
+ import HideColumnItem from './hide-column-item';
9
+ class HideColumnPopover extends React.Component {
10
+ constructor(props) {
11
+ super(props);
12
+ _defineProperty(this, "hidePopover", e => {
13
+ if (this.popoverRef && !getEventClassName(e).includes('popover') && !this.popoverRef.contains(e.target)) {
14
+ this.props.onPopoverToggle(e);
15
+ e.preventDefault();
16
+ e.stopPropagation();
17
+ return false;
18
+ }
19
+ });
20
+ _defineProperty(this, "onHotKey", e => {
21
+ if (isHotkey('esc', e)) {
22
+ e.preventDefault();
23
+ this.props.onPopoverToggle();
24
+ }
25
+ });
26
+ _defineProperty(this, "onChooseAllColumns", () => {
27
+ const {
28
+ columns
29
+ } = this.props;
30
+ let shownColumnKeys = [];
31
+ const {
32
+ fieldSettings
33
+ } = this.state;
34
+ const newFieldSettings = fieldSettings.map(setting => {
35
+ setting.isChecked = true;
36
+ shownColumnKeys.push(setting.key);
37
+ return setting;
38
+ });
39
+ shownColumnKeys.unshift(columns[0].key);
40
+ this.setState({
41
+ fieldSettings: newFieldSettings
42
+ }, () => {
43
+ this.props.modifyHiddenColumns(shownColumnKeys);
44
+ });
45
+ });
46
+ _defineProperty(this, "onHideAllColumns", () => {
47
+ const {
48
+ columns
49
+ } = this.props;
50
+ const newFieldSettings = this.state.fieldSettings.map(setting => {
51
+ setting.isChecked = false;
52
+ return setting;
53
+ });
54
+ // table page cannot hide first column
55
+ const shownColumnKeys = [columns[0].key];
56
+ this.setState({
57
+ fieldSettings: newFieldSettings
58
+ }, () => {
59
+ this.props.modifyHiddenColumns(shownColumnKeys);
60
+ });
61
+ });
62
+ _defineProperty(this, "onUpdateFieldSetting", columnSetting => {
63
+ const {
64
+ columns
65
+ } = this.props;
66
+ const {
67
+ fieldSettings
68
+ } = this.state;
69
+ let shownColumnKeys = [];
70
+ const newFieldSettings = fieldSettings.map(setting => {
71
+ if (setting.key === columnSetting.key) {
72
+ setting = columnSetting;
73
+ }
74
+ if (setting.isChecked) {
75
+ shownColumnKeys.push(setting.key);
76
+ }
77
+ return setting;
78
+ });
79
+ // table page cannot hide first column
80
+ if (!shownColumnKeys.includes(columns[0].key)) {
81
+ shownColumnKeys.unshift(columns[0].key);
82
+ }
83
+ this.setState({
84
+ fieldSettings: newFieldSettings
85
+ }, () => {
86
+ this.props.modifyHiddenColumns(shownColumnKeys);
87
+ });
88
+ });
89
+ _defineProperty(this, "onPopoverInsideClick", e => {
90
+ e.stopPropagation();
91
+ });
92
+ _defineProperty(this, "onChangeSearch", event => {
93
+ let {
94
+ searchVal
95
+ } = this.state;
96
+ if (searchVal === event.target.value) {
97
+ return;
98
+ }
99
+ searchVal = event.target.value;
100
+ this.setState({
101
+ searchVal
102
+ });
103
+ });
104
+ _defineProperty(this, "getFilteredColumns", () => {
105
+ let {
106
+ searchVal,
107
+ fieldSettings
108
+ } = this.state;
109
+ searchVal = searchVal.toLowerCase();
110
+ if (!searchVal) {
111
+ return fieldSettings;
112
+ }
113
+ return fieldSettings.filter(setting => {
114
+ return setting.columnName.toLowerCase().includes(searchVal);
115
+ });
116
+ });
117
+ this.state = {
118
+ fieldSettings: [],
119
+ searchVal: ''
120
+ };
121
+ }
122
+ componentDidMount() {
123
+ document.addEventListener('click', this.hidePopover, true);
124
+ document.addEventListener('keydown', this.onHotKey);
125
+ }
126
+ componentWillUnmount() {
127
+ document.removeEventListener('click', this.hidePopover, true);
128
+ document.removeEventListener('keydown', this.onHotKey);
129
+ }
130
+ static getDerivedStateFromProps(nextProps, preState) {
131
+ const {
132
+ columns,
133
+ shownColumnKeys
134
+ } = nextProps;
135
+ let fieldSettings = columns.map(column => {
136
+ return {
137
+ key: column.key,
138
+ isChecked: shownColumnKeys.includes(column.key),
139
+ columnName: column.name,
140
+ columnIcon: COLUMNS_ICON_CONFIG[column.type]
141
+ };
142
+ });
143
+ // table page cannot hide first column
144
+ fieldSettings.shift();
145
+ return {
146
+ fieldSettings: fieldSettings
147
+ };
148
+ }
149
+ render() {
150
+ const {
151
+ target,
152
+ t
153
+ } = this.props;
154
+ const fieldSettings = this.getFilteredColumns();
155
+ const isEmpty = fieldSettings.length === 0 ? true : false;
156
+ return /*#__PURE__*/React.createElement(UncontrolledPopover, {
157
+ placement: "auto-start",
158
+ isOpen: true,
159
+ target: target,
160
+ fade: false,
161
+ hideArrow: true,
162
+ className: "hidden-column-popover",
163
+ boundariesElement: document.body
164
+ }, /*#__PURE__*/React.createElement("div", {
165
+ ref: ref => this.popoverRef = ref,
166
+ onClick: this.onPopoverInsideClick
167
+ }, /*#__PURE__*/React.createElement("div", {
168
+ className: "field-settings ".concat(isEmpty ? 'empty' : '')
169
+ }, /*#__PURE__*/React.createElement("div", {
170
+ className: "search-column"
171
+ }, /*#__PURE__*/React.createElement("input", {
172
+ className: "form-control",
173
+ type: "text",
174
+ placeholder: t('Search_column'),
175
+ value: this.state.searchVal,
176
+ onChange: this.onChangeSearch
177
+ })), isEmpty && /*#__PURE__*/React.createElement("div", {
178
+ className: "empty-hidden-columns-container"
179
+ }, /*#__PURE__*/React.createElement("div", {
180
+ className: "empty-hidden-columns-list"
181
+ }, t('No_columns_available_to_be_hidden'))), !isEmpty && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
182
+ className: "field-settings-body",
183
+ style: {
184
+ maxHeight: window.innerHeight - 400 + 'px'
185
+ }
186
+ }, fieldSettings.map(setting => {
187
+ return /*#__PURE__*/React.createElement(HideColumnItem, {
188
+ key: setting.key,
189
+ setting: setting,
190
+ onUpdateFieldSetting: this.onUpdateFieldSetting
191
+ });
192
+ })), !this.state.searchVal && /*#__PURE__*/React.createElement("div", {
193
+ className: "field-settings-header"
194
+ }, /*#__PURE__*/React.createElement("div", {
195
+ className: "hide-all px-2",
196
+ onClick: this.onHideAllColumns
197
+ }, t('Hide_all')), /*#__PURE__*/React.createElement("div", {
198
+ className: "show-all px-2",
199
+ onClick: this.onChooseAllColumns
200
+ }, t('Show_all')))))));
201
+ }
202
+ }
203
+ export default withTranslation('sdoc-editor')(HideColumnPopover);
@@ -0,0 +1,105 @@
1
+ .field-settings {
2
+ margin: 8px 0;
3
+ }
4
+
5
+ .field-settings .search-column {
6
+ height: 28px;
7
+ padding: 0 10px;
8
+ }
9
+
10
+ .field-settings .search-column input {
11
+ width: 100%;
12
+ height: 28px;
13
+ }
14
+
15
+ .field-settings .field-settings-header {
16
+ display: flex;
17
+ justify-content: space-between;
18
+ width: 100%;
19
+ padding: 0 17px;
20
+ }
21
+
22
+ .field-settings-header .hide-all,
23
+ .field-settings-header .show-all {
24
+ display: flex;
25
+ align-items: center;
26
+ justify-content: center;
27
+ height: 28px;
28
+ background: #f5f5f5;
29
+ color: #999;
30
+ border-radius: 3px;
31
+ cursor: pointer;
32
+ }
33
+
34
+ .field-settings-header .hide-all:hover,
35
+ .field-settings-header .show-all:hover {
36
+ background: #e9e9e9;
37
+ color: #333;
38
+ }
39
+
40
+ .field-settings .field-settings-body {
41
+ padding: 0.5rem 0;
42
+ max-height: 300px;
43
+ overflow-x: auto;
44
+ min-width: 260px;
45
+ }
46
+
47
+ .field-settings .field-settings-body .custom-switch {
48
+ cursor: pointer;
49
+ }
50
+
51
+ .field-settings .field-settings-body>div {
52
+ font-size: 14px;
53
+ height: 30px;
54
+ line-height: 30px;
55
+ display: flex;
56
+ cursor: pointer;
57
+ }
58
+
59
+ .field-settings .field-settings-body>div:hover {
60
+ background: #f5f5f5;
61
+ }
62
+
63
+ .field-settings .empty-hidden-columns-container {
64
+ height: 80px;
65
+ width: 270px;
66
+ padding: 10px;
67
+ }
68
+
69
+ .field-settings .empty-hidden-columns-list {
70
+ padding: 0.25rem;
71
+ font-size: 13px;
72
+ color: #999;
73
+ }
74
+
75
+ /* switch component */
76
+ .field-settings .custom-switch {
77
+ padding-left: 0;
78
+ }
79
+
80
+ .field-settings .custom-switch .dtable-font {
81
+ color: #666;
82
+ display: inline-block;
83
+ line-height: 24px;
84
+ margin-right: 8px;
85
+ transform: scale(.8);
86
+ }
87
+
88
+ .field-settings .custom-switch .custom-switch-description {
89
+ width: 192px;
90
+ }
91
+
92
+ .field-settings .custom-switch .custom-switch-indicator {
93
+ border-radius: 6px;
94
+ height: 12px;
95
+ width: 22px;
96
+ }
97
+
98
+ .field-settings .custom-switch .custom-switch-indicator:before {
99
+ height: 8px;
100
+ width: 8px;
101
+ }
102
+
103
+ .field-settings .custom-switch .custom-switch-input:checked~.custom-switch-indicator:before {
104
+ left: 12px;
105
+ }
@@ -1,8 +1,89 @@
1
- import React from 'react';
2
- export default function HideColumnSetter() {
3
- return /*#__PURE__*/React.createElement("div", {
4
- className: "setting-item-btn columns-setting"
5
- }, /*#__PURE__*/React.createElement("i", {
6
- className: "dtable-font dtable-icon-hide mr-2"
7
- }), /*#__PURE__*/React.createElement("div", null, "Hide column setter"));
8
- }
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
+ import React, { Component } from 'react';
3
+ import { withTranslation } from 'react-i18next';
4
+ import isEqual from 'lodash.isequal';
5
+ import HideColumnPopover from './hide-column-popover';
6
+ import './index.css';
7
+ class HideColumnSetter extends Component {
8
+ constructor(props) {
9
+ super(props);
10
+ _defineProperty(this, "onHideColumnToggle", () => {
11
+ const {
12
+ isShowHideColumnSetter
13
+ } = this.state;
14
+ if (isShowHideColumnSetter) {
15
+ const {
16
+ shownColumnKeys
17
+ } = this.state;
18
+ this.props.onSettingUpdate(shownColumnKeys);
19
+ }
20
+ this.setState({
21
+ isShowHideColumnSetter: !isShowHideColumnSetter
22
+ });
23
+ });
24
+ _defineProperty(this, "modifyHiddenColumns", shownColumnKeys => {
25
+ this.setState({
26
+ shownColumnKeys
27
+ });
28
+ });
29
+ this.state = {
30
+ isShowHideColumnSetter: false,
31
+ shownColumnKeys: props.shownColumnKeys || []
32
+ };
33
+ }
34
+ UNSAFE_componentWillReceiveProps(nextProps) {
35
+ const {
36
+ shownColumnKeys: oldShownColumnKeys
37
+ } = this.props;
38
+ const {
39
+ shownColumnKeys: newShownColumnKeys
40
+ } = nextProps;
41
+ if (!isEqual(oldShownColumnKeys, newShownColumnKeys)) {
42
+ this.setState({
43
+ isShowHideColumnSetter: false,
44
+ shownColumnKeys: newShownColumnKeys
45
+ });
46
+ }
47
+ }
48
+ render() {
49
+ const {
50
+ target,
51
+ columns,
52
+ wrapperClass,
53
+ t
54
+ } = this.props;
55
+ const {
56
+ shownColumnKeys
57
+ } = this.state;
58
+ if (!columns) return null;
59
+ let message = t('Hide_columns');
60
+ const hiddenColumns = columns.filter(column => !shownColumnKeys.includes(column.key));
61
+ const hiddenColumnsLength = hiddenColumns.length;
62
+ if (hiddenColumnsLength === 1) {
63
+ message = t('1_hidden_column');
64
+ } else if (hiddenColumnsLength > 1) {
65
+ message = hiddenColumnsLength + ' ' + t('hidden_columns');
66
+ }
67
+ let labelClass = wrapperClass || '';
68
+ labelClass = labelClass && hiddenColumnsLength > 0 ? labelClass + ' active' : labelClass;
69
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
70
+ className: "setting-item ".concat(labelClass ? '' : 'mb-1')
71
+ }, /*#__PURE__*/React.createElement("div", {
72
+ className: "mr-2 setting-item-btn filters-setting-btn ".concat(labelClass),
73
+ onClick: this.onHideColumnToggle
74
+ }, /*#__PURE__*/React.createElement("i", {
75
+ className: "dtable-font dtable-icon-hide mr-2",
76
+ id: target
77
+ }), /*#__PURE__*/React.createElement("span", null, message))), this.state.isShowHideColumnSetter && /*#__PURE__*/React.createElement(HideColumnPopover, {
78
+ target: target,
79
+ columns: columns,
80
+ shownColumnKeys: shownColumnKeys,
81
+ modifyHiddenColumns: this.modifyHiddenColumns,
82
+ onPopoverToggle: this.onHideColumnToggle
83
+ }));
84
+ }
85
+ }
86
+ _defineProperty(HideColumnSetter, "defaultProps", {
87
+ target: 'hide-column-popover'
88
+ });
89
+ export default withTranslation('sdoc-editor')(HideColumnSetter);
@@ -60,6 +60,10 @@
60
60
  width: 100%;
61
61
  }
62
62
 
63
+ .document-plugin .document-seatable-settings-container .setting-item-btn:hover {
64
+ background-color: #efefef;
65
+ }
66
+
63
67
  .document-plugin .document-seatable-settings-container .setting-item-btn .dtable-font {
64
68
  color: #666;
65
69
  font-size: 14px;