@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.
Files changed (103) hide show
  1. package/dist/api/api.js +19 -21
  2. package/dist/assets/css/dropdown-menu.css +96 -0
  3. package/dist/assets/css/file-repo.css +3 -0
  4. package/dist/common/components/file-tag/index.js +2 -2
  5. package/dist/common/components/modal-portal.js +12 -0
  6. package/dist/common/utils/icon-utils.js +9 -2
  7. package/dist/common/utils/utils.js +28 -0
  8. package/dist/components/cell-editors/index.js +2 -2
  9. package/dist/components/cell-editors/multiple-select-editor/index.js +2 -2
  10. package/dist/components/cell-editors/single-select-editor/index.js +2 -2
  11. package/dist/components/cell-editors/tags-editor/index.js +1 -2
  12. package/dist/components/cell-formatter/creator.js +3 -2
  13. package/dist/components/context-menu/index.js +2 -2
  14. package/dist/components/data-process-setter/filter-setter.js +2 -3
  15. package/dist/components/data-process-setter/hide-column-setter.js +1 -1
  16. package/dist/components/data-process-setter/index.js +7 -0
  17. package/dist/components/data-process-setter/manage-setter.js +1 -2
  18. package/dist/components/data-process-setter/settings-setter.js +119 -0
  19. package/dist/components/data-process-setter/sort-setter.js +2 -2
  20. package/dist/components/data-process-setter/view-type-setter.js +53 -0
  21. package/dist/components/dialogs/custom-modal-header/index.css +34 -0
  22. package/dist/components/dialogs/custom-modal-header/index.js +34 -0
  23. package/dist/components/dialogs/insert-view-dialog.js +104 -0
  24. package/dist/components/hover-menu/index.css +85 -0
  25. package/dist/components/hover-menu/index.js +107 -0
  26. package/dist/components/icons/arrow-down-icon.js +19 -0
  27. package/dist/components/icons/arrow-right-icon.js +29 -0
  28. package/dist/components/icons/arrow-up-icon.js +19 -0
  29. package/dist/components/icons/card-icon.js +28 -0
  30. package/dist/components/icons/close-icon.js +23 -0
  31. package/dist/components/icons/index.js +23 -1
  32. package/dist/components/icons/set-up-icon.js +22 -0
  33. package/dist/components/icons/table-icon.js +19 -0
  34. package/dist/components/image-previewer/_hooks/metadata-details.js +1 -1
  35. package/dist/components/image-previewer/_hooks/metadata-status.js +2 -2
  36. package/dist/components/image-previewer/image-detail/index.js +1 -1
  37. package/dist/components/image-previewer/index.js +2 -2
  38. package/dist/components/popover/groupbys-popover/index.js +5 -5
  39. package/dist/components/popover/index.js +7 -0
  40. package/dist/components/popover/settings-popover/field-display-settings/field-item.js +110 -0
  41. package/dist/components/popover/settings-popover/field-display-settings/index.css +135 -0
  42. package/dist/components/popover/settings-popover/field-display-settings/index.js +119 -0
  43. package/dist/components/popover/settings-popover/index.css +52 -0
  44. package/dist/components/popover/settings-popover/index.js +99 -0
  45. package/dist/components/popover/sort-popover/index.js +1 -1
  46. package/dist/components/popover/view-type-popover/index.css +51 -0
  47. package/dist/components/popover/view-type-popover/index.js +64 -0
  48. package/dist/components/searcher/index.js +3 -3
  49. package/dist/components/view-toolbar/card-view-toolbar/index.js +89 -0
  50. package/dist/components/view-toolbar/index.css +54 -1
  51. package/dist/components/view-toolbar/index.js +40 -48
  52. package/dist/components/view-toolbar/rows-toolbar/index.js +2 -2
  53. package/dist/components/view-toolbar/table-view-toolbar/index.js +1 -1
  54. package/dist/components/view-toolbar/view-items/index.css +55 -0
  55. package/dist/components/view-toolbar/view-items/index.js +98 -0
  56. package/dist/components/view-toolbar/view-items/views-popover.js +80 -0
  57. package/dist/constants/event-bus-type.js +3 -1
  58. package/dist/constants/view/index.js +44 -2
  59. package/dist/context.js +60 -35
  60. package/dist/file-view-base.js +44 -0
  61. package/dist/file-view.js +140 -0
  62. package/dist/global-settings.js +3 -1
  63. package/dist/hooks/collaborators.js +9 -3
  64. package/dist/hooks/file-view-context.js +95 -0
  65. package/dist/hooks/index.js +14 -14
  66. package/dist/hooks/metadata.js +51 -47
  67. package/dist/hooks/tagsData.js +8 -2
  68. package/dist/hooks/view-context.js +69 -0
  69. package/dist/index.js +3 -3
  70. package/dist/locale/en.js +11 -1
  71. package/dist/locale/zh_CN.js +6 -1
  72. package/dist/store/data-processor.js +1 -0
  73. package/dist/store/index.js +8 -6
  74. package/dist/store/operations/apply.js +1 -1
  75. package/dist/store/server-operator.js +20 -7
  76. package/dist/views/card/card-items/card-item/formatter.js +45 -0
  77. package/dist/views/card/card-items/card-item/index.css +234 -0
  78. package/dist/views/card/card-items/card-item/index.js +206 -0
  79. package/dist/views/card/card-items/index.css +31 -0
  80. package/dist/views/card/card-items/index.js +189 -0
  81. package/dist/views/card/context-menu/index.js +165 -0
  82. package/dist/views/card/index.js +64 -0
  83. package/dist/views/card/settings/index.css +68 -0
  84. package/dist/views/card/settings/index.js +143 -0
  85. package/dist/views/index.js +5 -3
  86. package/dist/views/table/editors/editor-container/index.js +2 -2
  87. package/dist/views/table/formatters/file-name.js +3 -3
  88. package/dist/views/table/index.js +2 -3
  89. package/dist/views/table/table-main/index.js +2 -2
  90. package/dist/views/table/table-main/rows/row/cell/formatter.js +2 -2
  91. package/dist/views/table/table-main/rows/row/cell/index.js +2 -2
  92. package/dist/views/table/table-main/rows-header/cell/dropdown-menu/index.js +1 -1
  93. package/dist/views/table/table-main/rows-header/cell/index.js +1 -1
  94. package/dist/views/table/table-main/rows-header/index.js +2 -2
  95. package/package.json +3 -2
  96. package/dist/components/view-toolbar/views/all-views/index.css +0 -85
  97. package/dist/components/view-toolbar/views/all-views/index.js +0 -165
  98. package/dist/components/view-toolbar/views/index.css +0 -22
  99. package/dist/components/view-toolbar/views/index.js +0 -215
  100. package/dist/components/view-toolbar/views/view-item/index.css +0 -83
  101. package/dist/components/view-toolbar/views/view-item/index.js +0 -159
  102. package/dist/database.js +0 -53
  103. 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 _appContext = require("../../../hooks/app-context");
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, _appContext.useAppContext)();
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-end",
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
+ }