qwc2 2026.8.14 → 2026.8.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/components/AttributeTableWidget.js +121 -285
- package/components/IdentifyViewer.js +35 -20
- package/components/QtDesignerForm.js +1 -1
- package/components/ResizeableWindow.js +10 -0
- package/components/map3d/style/Map3D.css +1 -0
- package/components/style/AttributeTableWidget.css +1 -140
- package/components/widgets/FeaturesTable.js +30 -31
- package/components/widgets/TextInput.js +0 -10
- package/components/widgets/style/FeaturesTable.css +46 -19
- package/package.json +1 -1
- package/plugins/BottomBar.js +123 -111
- package/plugins/style/BottomBar.css +10 -3
- package/utils/LayerUtils.js +2 -2
|
@@ -414,22 +414,25 @@ var IdentifyViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
414
414
|
});
|
|
415
415
|
});
|
|
416
416
|
_defineProperty(_this, "setHighlightedFeatures", function (features) {
|
|
417
|
-
if (isEmpty(features)
|
|
418
|
-
|
|
419
|
-
|
|
417
|
+
if (isEmpty(features)) {
|
|
418
|
+
if (!isEmpty(_this.state.tableSelection)) {
|
|
419
|
+
features = Object.values(_this.state.tableSelection).map(function (sel) {
|
|
420
|
+
return Object.values(sel);
|
|
421
|
+
}).flat();
|
|
422
|
+
} else if (_this.props.highlightAllResults) {
|
|
423
|
+
var resultTree = _this.state.selectedLayer !== '' ? _defineProperty({}, _this.state.selectedLayer, _this.state.resultTree[_this.state.selectedLayer]) : _this.state.resultTree;
|
|
424
|
+
features = Object.values(resultTree).flat();
|
|
425
|
+
}
|
|
420
426
|
}
|
|
421
|
-
features = (features || []).filter(function (feature) {
|
|
422
|
-
return feature.type.toLowerCase() === "feature";
|
|
423
|
-
}).map(function (feature) {
|
|
424
|
-
var newFeature = _objectSpread(_objectSpread({}, feature), {}, {
|
|
425
|
-
properties: {}
|
|
426
|
-
});
|
|
427
|
-
// Ensure selection style is used
|
|
428
|
-
delete newFeature.styleName;
|
|
429
|
-
delete newFeature.styleOptions;
|
|
430
|
-
return newFeature;
|
|
431
|
-
});
|
|
432
427
|
if (!isEmpty(features)) {
|
|
428
|
+
features = features.filter(function (f) {
|
|
429
|
+
return f.geometry;
|
|
430
|
+
}).map(function (f) {
|
|
431
|
+
return {
|
|
432
|
+
id: f.id,
|
|
433
|
+
geometry: f.geometry
|
|
434
|
+
};
|
|
435
|
+
});
|
|
433
436
|
var layer = {
|
|
434
437
|
id: "__identifyviewerhighlight",
|
|
435
438
|
role: LayerRole.SELECTION
|
|
@@ -882,18 +885,30 @@ var IdentifyViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
882
885
|
features: features,
|
|
883
886
|
fields: Object.values(fields),
|
|
884
887
|
hideIdColumn: true,
|
|
885
|
-
|
|
888
|
+
hoverChanged: _this.setHoveredFeature,
|
|
886
889
|
renderField: _this.renderTableField,
|
|
887
890
|
selectionChanged: function selectionChanged(sel) {
|
|
888
|
-
return _this.
|
|
889
|
-
return {
|
|
890
|
-
tableSelection: _objectSpread(_objectSpread({}, state.tableSelection), {}, _defineProperty({}, layerid, sel))
|
|
891
|
-
};
|
|
892
|
-
});
|
|
891
|
+
return _this.setTableSelection(sel, layerid);
|
|
893
892
|
}
|
|
894
893
|
}) : null);
|
|
895
894
|
}));
|
|
896
895
|
});
|
|
896
|
+
_defineProperty(_this, "setTableSelection", function (sel, layerid) {
|
|
897
|
+
_this.setState(function (state) {
|
|
898
|
+
var newTableSelection = _objectSpread({}, state.tableSelection);
|
|
899
|
+
if (!isEmpty(sel)) {
|
|
900
|
+
newTableSelection[layerid] = sel;
|
|
901
|
+
} else {
|
|
902
|
+
delete newTableSelection[layerid];
|
|
903
|
+
}
|
|
904
|
+
return {
|
|
905
|
+
tableSelection: newTableSelection
|
|
906
|
+
};
|
|
907
|
+
});
|
|
908
|
+
});
|
|
909
|
+
_defineProperty(_this, "setHoveredFeature", function (feature) {
|
|
910
|
+
_this.setHighlightedFeatures(feature ? [feature] : null);
|
|
911
|
+
});
|
|
897
912
|
_defineProperty(_this, "renderTableField", function (feature, field) {
|
|
898
913
|
return _this.attribValue(feature.properties[field.name], field.name, feature.layername, feature);
|
|
899
914
|
});
|
|
@@ -244,7 +244,7 @@ var QtDesignerForm = /*#__PURE__*/function (_React$Component) {
|
|
|
244
244
|
var attr = widget.attribute || {};
|
|
245
245
|
var fieldname = widget.name.replace(/kvrel__/, '').split("__")[isRelWidget ? 1 : 0];
|
|
246
246
|
var field = fields[fieldname];
|
|
247
|
-
var constraints = (field === null || field === void 0 ? void 0 : field.constraints)
|
|
247
|
+
var constraints = _objectSpread({}, field === null || field === void 0 ? void 0 : field.constraints);
|
|
248
248
|
constraints.readOnly = _this.props.readOnly || constraints.readOnly === true || String(prop.readOnly) === "true" || String(prop.enabled) === "false" || disabled;
|
|
249
249
|
constraints.required = !constraints.readOnly && (constraints.required || String(prop.required) === "true");
|
|
250
250
|
constraints.placeholder = prop.placeholderText || constraints.placeholder || "";
|
|
@@ -451,6 +451,9 @@ var ResizeableWindow = /*#__PURE__*/function (_React$Component) {
|
|
|
451
451
|
});
|
|
452
452
|
externalWindow.document.querySelector(':root').style.setProperty('--topbar-height', document.querySelector(':root').style.getPropertyValue('--topbar-height'));
|
|
453
453
|
externalWindow.document.querySelector(':root').style.setProperty('--bottombar-height', document.querySelector(':root').style.getPropertyValue('--bottombar-height'));
|
|
454
|
+
if (_this.props.colorScheme) {
|
|
455
|
+
externalWindow.document.querySelector(':root').classList.add(_this.props.colorScheme);
|
|
456
|
+
}
|
|
454
457
|
// Inherit API
|
|
455
458
|
externalWindow.qwc2 = window.qwc2;
|
|
456
459
|
_this.setState(function (state) {
|
|
@@ -534,6 +537,11 @@ var ResizeableWindow = /*#__PURE__*/function (_React$Component) {
|
|
|
534
537
|
this.props.onGeometryChanged(this.state.geometry);
|
|
535
538
|
WINDOW_GEOMETRIES[this.props.title] = this.state.geometry;
|
|
536
539
|
}
|
|
540
|
+
if (this.props.colorScheme !== prevProps.colorScheme && this.state.externalWindow) {
|
|
541
|
+
var externalWindowRoot = this.state.externalWindow.document.querySelector(':root');
|
|
542
|
+
externalWindowRoot.classList.remove(prevProps.colorScheme);
|
|
543
|
+
externalWindowRoot.classList.add(this.props.colorScheme);
|
|
544
|
+
}
|
|
537
545
|
if (this.props.splitScreenWhenDocked && (this.props.visible !== prevProps.visible || this.state.geometry !== prevState.geometry || this.state.externalWindow !== prevState.externalWindow)) {
|
|
538
546
|
if (!this.props.visible && prevProps.visible || this.state.geometry.docked === false && prevState.geometry.docked !== false || this.state.geometry.maximized === true && prevState.geometry.maximized !== true || this.state.externalWindow && !prevState.externalWindow) {
|
|
539
547
|
this.props.setSplitScreen(this.id, null, null, false);
|
|
@@ -563,6 +571,7 @@ _defineProperty(ResizeableWindow, "propTypes", {
|
|
|
563
571
|
bottombarHeight: PropTypes.number,
|
|
564
572
|
busyIcon: PropTypes.bool,
|
|
565
573
|
children: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),
|
|
574
|
+
colorScheme: PropTypes.string,
|
|
566
575
|
detachable: PropTypes.bool,
|
|
567
576
|
dockable: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),
|
|
568
577
|
extraControls: PropTypes.arrayOf(PropTypes.shape({
|
|
@@ -628,6 +637,7 @@ _defineProperty(ResizeableWindow, "defaultProps", {
|
|
|
628
637
|
});
|
|
629
638
|
export default connect(function (state) {
|
|
630
639
|
return {
|
|
640
|
+
colorScheme: state.localConfig.colorScheme,
|
|
631
641
|
windowStacking: state.windows.stacking,
|
|
632
642
|
topbarHeight: state.windows.topbarHeight,
|
|
633
643
|
bottombarHeight: state.windows.bottombarHeight,
|
|
@@ -36,132 +36,12 @@ div.attribtable-toolbar > * {
|
|
|
36
36
|
|
|
37
37
|
div.attribtable-contents {
|
|
38
38
|
flex: 1 1 auto;
|
|
39
|
+
height: 0;
|
|
39
40
|
background-color: var(--list-bg-color);
|
|
40
|
-
overflow: auto;
|
|
41
41
|
border: 1px solid var(--border-color);
|
|
42
42
|
position: relative;
|
|
43
43
|
}
|
|
44
44
|
|
|
45
|
-
table.attribtable-table th {
|
|
46
|
-
position: sticky;
|
|
47
|
-
top: 0;
|
|
48
|
-
z-index: 2;
|
|
49
|
-
padding: 0;
|
|
50
|
-
background-color: var(--button-bg-color);
|
|
51
|
-
color: var(--button-text-color);
|
|
52
|
-
box-shadow: inset -1px 0 0 var(--border-color),
|
|
53
|
-
inset 0 -1px 0 var(--border-color);
|
|
54
|
-
overflow: hidden;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
table.attribtable-table th:first-child {
|
|
58
|
-
position: sticky;
|
|
59
|
-
left: 0;
|
|
60
|
-
z-index: 3;
|
|
61
|
-
width: 2em;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
table.attribtable-table th > span {
|
|
65
|
-
margin: 0 0 -1px -1px;
|
|
66
|
-
padding: 0.25em;
|
|
67
|
-
display: flex;
|
|
68
|
-
align-items: center;
|
|
69
|
-
position: relative;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
table.attribtable-table th > span > span.icon {
|
|
73
|
-
position: absolute;
|
|
74
|
-
right: 1px;
|
|
75
|
-
background-color: var(--button-bg-color);
|
|
76
|
-
flex: 0 0 auto;
|
|
77
|
-
margin-left: 0.5em;
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
span.attribtable-table-headername {
|
|
81
|
-
flex: 1 1 auto;
|
|
82
|
-
text-align: left;
|
|
83
|
-
display: flex;
|
|
84
|
-
align-items: center;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
table.attribtable-table tr:nth-child(even) {
|
|
88
|
-
background-color: var(--list-item-bg-color-even);
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
table.attribtable-table tr:hover:not(.row-disabled) {
|
|
92
|
-
background-color: var(--list-item-bg-color-hover);
|
|
93
|
-
color: var(--list-item-text-color-hover);
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
table.attribtable-table td:first-child {
|
|
97
|
-
background-color: var(--button-bg-color);
|
|
98
|
-
color: var(--button-text-color);
|
|
99
|
-
align-items: center;
|
|
100
|
-
padding: 0.25em 0.5em;
|
|
101
|
-
background-clip: padding-box;
|
|
102
|
-
position: sticky;
|
|
103
|
-
left: 0;
|
|
104
|
-
z-index: 1;
|
|
105
|
-
width: 2.5em;
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
table.attribtable-table td {
|
|
109
|
-
min-width: 2.5em;;
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
span.attribtable-table-ldraghandle,
|
|
113
|
-
span.attribtable-table-rdraghandle {
|
|
114
|
-
touch-action: none;
|
|
115
|
-
display: block;
|
|
116
|
-
position: absolute;
|
|
117
|
-
width: 4px;
|
|
118
|
-
top: 0;
|
|
119
|
-
bottom: 0;
|
|
120
|
-
cursor: ew-resize;
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
span.attribtable-table-ldraghandle {
|
|
124
|
-
left: -1px;
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
span.attribtable-table-rdraghandle {
|
|
128
|
-
right: 0px;
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
span.attribtable-table-tdraghandle,
|
|
132
|
-
span.attribtable-table-bdraghandle {
|
|
133
|
-
touch-action: none;
|
|
134
|
-
display: block;
|
|
135
|
-
position: absolute;
|
|
136
|
-
height: 4px;
|
|
137
|
-
left: 0;
|
|
138
|
-
right: 0;
|
|
139
|
-
cursor: ns-resize;
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
span.attribtable-table-tdraghandle {
|
|
143
|
-
top: -1px;
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
span.attribtable-table-bdraghandle {
|
|
147
|
-
bottom: 0px;
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
table.attribtable-table {
|
|
151
|
-
table-layout: fixed;
|
|
152
|
-
min-width: 100%;
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
table.attribtable-table td {
|
|
156
|
-
border: 1px solid var(--border-color);
|
|
157
|
-
text-align: center;
|
|
158
|
-
height: 2em;
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
table.attribtable-table td:first-child {
|
|
162
|
-
border-left-width: 0;
|
|
163
|
-
}
|
|
164
|
-
|
|
165
45
|
table.attribtable-table td > input:not([type=checkbox]),
|
|
166
46
|
table.attribtable-table td > select,
|
|
167
47
|
table.attribtable-table td > div.TextInput,
|
|
@@ -219,22 +99,3 @@ body.nsresizing, body.nsresizing * {
|
|
|
219
99
|
cursor: ns-resize!important;
|
|
220
100
|
user-select: none;
|
|
221
101
|
}
|
|
222
|
-
|
|
223
|
-
div.attribtable-resize-line-vert,
|
|
224
|
-
div.attribtable-resize-line-horiz {
|
|
225
|
-
position: absolute;
|
|
226
|
-
z-index: 2;
|
|
227
|
-
background-color: var(--border-color);
|
|
228
|
-
}
|
|
229
|
-
|
|
230
|
-
div.attribtable-resize-line-vert {
|
|
231
|
-
width: 4px;
|
|
232
|
-
top: 0;
|
|
233
|
-
bottom: 0;
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
div.attribtable-resize-line-horiz {
|
|
237
|
-
height: 4px;
|
|
238
|
-
left: 0;
|
|
239
|
-
right: 0;
|
|
240
|
-
}
|
|
@@ -41,7 +41,7 @@ import LocaleUtils from '../../utils/LocaleUtils';
|
|
|
41
41
|
import MiscUtils from '../../utils/MiscUtils';
|
|
42
42
|
import Icon from '../Icon';
|
|
43
43
|
import './style/FeaturesTable.css';
|
|
44
|
-
var FeaturesTable = /*#__PURE__*/function (_React$
|
|
44
|
+
var FeaturesTable = /*#__PURE__*/function (_React$PureComponent) {
|
|
45
45
|
function FeaturesTable(props) {
|
|
46
46
|
var _this;
|
|
47
47
|
_classCallCheck(this, FeaturesTable);
|
|
@@ -49,7 +49,6 @@ var FeaturesTable = /*#__PURE__*/function (_React$Component) {
|
|
|
49
49
|
_defineProperty(_this, "state", {
|
|
50
50
|
sortField: null,
|
|
51
51
|
sortedFeatures: null,
|
|
52
|
-
hoveredFeature: null,
|
|
53
52
|
selectedFeatures: {}
|
|
54
53
|
});
|
|
55
54
|
_defineProperty(_this, "sortBy", function (field) {
|
|
@@ -122,11 +121,13 @@ var FeaturesTable = /*#__PURE__*/function (_React$Component) {
|
|
|
122
121
|
var origin = contentsEl.getBoundingClientRect()[resizeCol ? "left" : "top"];
|
|
123
122
|
var resizeLine = document.createElement('div');
|
|
124
123
|
if (resizeCol) {
|
|
125
|
-
resizeLine.className = '
|
|
124
|
+
resizeLine.className = 'featurestable-resize-line-vert';
|
|
126
125
|
resizeLine.style.left = resize.anchor - origin + contentsEl.scrollLeft + "px";
|
|
126
|
+
resizeLine.style.height = contentsEl.scrollHeight + "px";
|
|
127
127
|
} else {
|
|
128
|
-
resizeLine.className = '
|
|
128
|
+
resizeLine.className = 'featurestable-resize-line-horiz';
|
|
129
129
|
resizeLine.style.top = resize.anchor - origin + contentsEl.scrollTop + "px";
|
|
130
|
+
resizeLine.style.width = contentsEl.scrollWidth + "px";
|
|
130
131
|
}
|
|
131
132
|
contentsEl.appendChild(resizeLine);
|
|
132
133
|
var resizeDo = resizeCol ? function (event) {
|
|
@@ -207,21 +208,20 @@ var FeaturesTable = /*#__PURE__*/function (_React$Component) {
|
|
|
207
208
|
});
|
|
208
209
|
});
|
|
209
210
|
_defineProperty(_this, "onFeatureHoverIn", function (feature) {
|
|
210
|
-
_this.
|
|
211
|
-
|
|
212
|
-
});
|
|
211
|
+
_this.hoveredFeature = feature;
|
|
212
|
+
_this.props.hoverChanged(feature);
|
|
213
213
|
});
|
|
214
214
|
_defineProperty(_this, "onFeatureHoverLeave", function (feature) {
|
|
215
|
-
_this.
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
});
|
|
215
|
+
if (_this.hoveredFeature === feature) {
|
|
216
|
+
_this.hoveredFeature = null;
|
|
217
|
+
_this.props.hoverChanged(null);
|
|
218
|
+
}
|
|
220
219
|
});
|
|
221
220
|
_this.table = null;
|
|
221
|
+
_this.hoveredFeature = null;
|
|
222
222
|
return _this;
|
|
223
223
|
}
|
|
224
|
-
_inherits(FeaturesTable, _React$
|
|
224
|
+
_inherits(FeaturesTable, _React$PureComponent);
|
|
225
225
|
return _createClass(FeaturesTable, [{
|
|
226
226
|
key: "componentDidUpdate",
|
|
227
227
|
value: function componentDidUpdate(prevProps, prevState) {
|
|
@@ -245,9 +245,6 @@ var FeaturesTable = /*#__PURE__*/function (_React$Component) {
|
|
|
245
245
|
return newState;
|
|
246
246
|
});
|
|
247
247
|
}
|
|
248
|
-
if (this.state.hoveredFeature !== prevState.hoveredFeature || this.state.selectedFeatures !== prevState.selectedFeatures) {
|
|
249
|
-
this.props.highlightFeatures(this.state.hoveredFeature ? [this.state.hoveredFeature] : Object.values(this.state.selectedFeatures));
|
|
250
|
-
}
|
|
251
248
|
if (this.state.selectedFeatures !== prevState.selectedFeatures) {
|
|
252
249
|
var _this$props$selection, _this$props;
|
|
253
250
|
(_this$props$selection = (_this$props = this.props).selectionChanged) === null || _this$props$selection === void 0 || _this$props$selection.call(_this$props, this.state.selectedFeatures);
|
|
@@ -259,17 +256,18 @@ var FeaturesTable = /*#__PURE__*/function (_React$Component) {
|
|
|
259
256
|
var _this$state$sortedFea,
|
|
260
257
|
_this3 = this;
|
|
261
258
|
var features = (_this$state$sortedFea = this.state.sortedFeatures) !== null && _this$state$sortedFea !== void 0 ? _this$state$sortedFea : this.props.features;
|
|
262
|
-
var fields = this.props.fields
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
var showIdColumn = !this.props.hideIdColumn;
|
|
259
|
+
var fields = this.props.fields.filter(function (field) {
|
|
260
|
+
return field.id !== _this3.props.primaryKey;
|
|
261
|
+
});
|
|
266
262
|
var pkfield = this.props.fields.find(function (field) {
|
|
267
|
-
return field.
|
|
263
|
+
return field.id === _this3.props.primaryKey;
|
|
268
264
|
});
|
|
269
|
-
var
|
|
265
|
+
var showSelColumn = this.props.allowSelect;
|
|
266
|
+
var showIdColumn = !this.props.hideIdColumn;
|
|
267
|
+
var className = classNames(_defineProperty({
|
|
270
268
|
"featurestable": true,
|
|
271
269
|
"featurestable-selectable": showSelColumn
|
|
272
|
-
});
|
|
270
|
+
}, this.props.className, !!this.props.className));
|
|
273
271
|
var selectAll = null;
|
|
274
272
|
if (this.props.allowSelectAll) {
|
|
275
273
|
var icon;
|
|
@@ -296,14 +294,14 @@ var FeaturesTable = /*#__PURE__*/function (_React$Component) {
|
|
|
296
294
|
style: this.props.style
|
|
297
295
|
}, /*#__PURE__*/React.createElement("thead", null, /*#__PURE__*/React.createElement("tr", null, showSelColumn ? /*#__PURE__*/React.createElement("th", null, selectAll) : null, showIdColumn ? /*#__PURE__*/React.createElement("th", {
|
|
298
296
|
onClick: function onClick() {
|
|
299
|
-
return _this3.sortBy(
|
|
297
|
+
return _this3.sortBy(pkfield.name);
|
|
300
298
|
},
|
|
301
299
|
onKeyDown: MiscUtils.checkKeyActivate,
|
|
302
300
|
tabIndex: 0,
|
|
303
301
|
title: pkfield.name
|
|
304
302
|
}, /*#__PURE__*/React.createElement("span", null, /*#__PURE__*/React.createElement("span", {
|
|
305
303
|
className: "featurestable-headername"
|
|
306
|
-
}, pkfield.name), this.renderSortIndicator(
|
|
304
|
+
}, pkfield.name), this.renderSortIndicator(pkfield.name), this.renderColumnResizeHandle(showSelColumn, 'r'))) : null, fields.map(function (field, idx) {
|
|
307
305
|
return /*#__PURE__*/React.createElement("th", {
|
|
308
306
|
key: field.id,
|
|
309
307
|
onClick: function onClick() {
|
|
@@ -319,11 +317,11 @@ var FeaturesTable = /*#__PURE__*/function (_React$Component) {
|
|
|
319
317
|
title: LocaleUtils.tr("attribtable.calculatedfield")
|
|
320
318
|
}) : null), _this3.renderSortIndicator(field.id), idx < fields.length - 1 ? _this3.renderColumnResizeHandle(idx + showSelColumn + showIdColumn, 'r') : null));
|
|
321
319
|
}))), /*#__PURE__*/React.createElement("tbody", null, features.map(function (feature, idx) {
|
|
322
|
-
var _this3$props$rowIsDis, _this3$props;
|
|
320
|
+
var _this3$props$rowIsDis, _this3$props, _feature$id2;
|
|
323
321
|
var disabled = _this3.props.readOnly || ((_this3$props$rowIsDis = (_this3$props = _this3.props).rowIsDisabled) === null || _this3$props$rowIsDis === void 0 ? void 0 : _this3$props$rowIsDis.call(_this3$props, idx));
|
|
324
322
|
return /*#__PURE__*/React.createElement("tr", {
|
|
325
323
|
className: disabled && !_this3.props.readOnly ? "row-disabled" : "",
|
|
326
|
-
key: feature.id,
|
|
324
|
+
key: (_feature$id2 = feature.id) !== null && _feature$id2 !== void 0 ? _feature$id2 : "new",
|
|
327
325
|
onMouseEnter: function onMouseEnter() {
|
|
328
326
|
return _this3.onFeatureHoverIn(feature);
|
|
329
327
|
},
|
|
@@ -335,22 +333,23 @@ var FeaturesTable = /*#__PURE__*/function (_React$Component) {
|
|
|
335
333
|
onClick: function onClick() {
|
|
336
334
|
return _this3.toggleFeatureSelected(feature);
|
|
337
335
|
}
|
|
338
|
-
}), _this3.renderRowResizeHandle(idx + 1, 'b'))) : null, showIdColumn ? /*#__PURE__*/React.createElement("td", null, feature
|
|
336
|
+
}), _this3.renderRowResizeHandle(idx + 1, 'b'))) : null, showIdColumn ? /*#__PURE__*/React.createElement("td", null, _this3.props.renderField(feature, pkfield, idx, disabled)) : null, fields.map(function (field) {
|
|
339
337
|
return /*#__PURE__*/React.createElement("td", {
|
|
340
338
|
key: field.id
|
|
341
|
-
}, _this3.props.renderField(feature, field));
|
|
339
|
+
}, _this3.props.renderField(feature, field, idx, disabled));
|
|
342
340
|
}));
|
|
343
341
|
}))));
|
|
344
342
|
}
|
|
345
343
|
}]);
|
|
346
|
-
}(React.
|
|
344
|
+
}(React.PureComponent);
|
|
347
345
|
_defineProperty(FeaturesTable, "propTypes", {
|
|
348
346
|
allowSelect: PropTypes.bool,
|
|
349
347
|
allowSelectAll: PropTypes.bool,
|
|
348
|
+
className: PropTypes.string,
|
|
350
349
|
features: PropTypes.array,
|
|
351
350
|
fields: PropTypes.array,
|
|
352
351
|
hideIdColumn: PropTypes.bool,
|
|
353
|
-
|
|
352
|
+
hoverChanged: PropTypes.func,
|
|
354
353
|
onSort: PropTypes.func,
|
|
355
354
|
primaryKey: PropTypes.string,
|
|
356
355
|
readOnly: PropTypes.bool,
|
|
@@ -30,7 +30,6 @@ import LocaleUtils from '../../utils/LocaleUtils';
|
|
|
30
30
|
import MiscUtils from '../../utils/MiscUtils';
|
|
31
31
|
import Icon from '../Icon';
|
|
32
32
|
import './style/TextInput.css';
|
|
33
|
-
export var TextInputInitContext = /*#__PURE__*/React.createContext(null);
|
|
34
33
|
var TextInput = /*#__PURE__*/function (_React$Component) {
|
|
35
34
|
function TextInput(props) {
|
|
36
35
|
var _this;
|
|
@@ -51,10 +50,8 @@ var TextInput = /*#__PURE__*/function (_React$Component) {
|
|
|
51
50
|
});
|
|
52
51
|
_defineProperty(_this, "storeRef", function (el) {
|
|
53
52
|
if (el) {
|
|
54
|
-
var _this$context, _this$context$notifyR;
|
|
55
53
|
_this.input = el;
|
|
56
54
|
_this.setDefaultValue(_this.state.value, _this.state.valueRev, -1);
|
|
57
|
-
(_this$context = _this.context) === null || _this$context === void 0 || (_this$context$notifyR = _this$context.notifyReady) === null || _this$context$notifyR === void 0 || _this$context$notifyR.call(_this$context, _this.id);
|
|
58
55
|
if (_this.props.focusOnRef) {
|
|
59
56
|
el.focus();
|
|
60
57
|
}
|
|
@@ -224,12 +221,6 @@ var TextInput = /*#__PURE__*/function (_React$Component) {
|
|
|
224
221
|
}
|
|
225
222
|
_inherits(TextInput, _React$Component);
|
|
226
223
|
return _createClass(TextInput, [{
|
|
227
|
-
key: "componentDidMount",
|
|
228
|
-
value: function componentDidMount() {
|
|
229
|
-
var _this$context2, _this$context2$regist;
|
|
230
|
-
(_this$context2 = this.context) === null || _this$context2 === void 0 || (_this$context2$regist = _this$context2.register) === null || _this$context2$regist === void 0 || _this$context2$regist.call(_this$context2, this.id);
|
|
231
|
-
}
|
|
232
|
-
}, {
|
|
233
224
|
key: "componentDidUpdate",
|
|
234
225
|
value: function componentDidUpdate(prevProps, prevState) {
|
|
235
226
|
this.setDefaultValue(this.state.value, this.state.valueRev, prevState.valueRev);
|
|
@@ -313,7 +304,6 @@ var TextInput = /*#__PURE__*/function (_React$Component) {
|
|
|
313
304
|
}
|
|
314
305
|
}]);
|
|
315
306
|
}(React.Component);
|
|
316
|
-
_defineProperty(TextInput, "contextType", TextInputInitContext);
|
|
317
307
|
_defineProperty(TextInput, "propTypes", {
|
|
318
308
|
addLinkAnchors: PropTypes.bool,
|
|
319
309
|
className: PropTypes.string,
|
|
@@ -3,6 +3,12 @@ div.featurestable-frame {
|
|
|
3
3
|
overflow: auto;
|
|
4
4
|
border: 1px solid var(--border-color);
|
|
5
5
|
position: relative;
|
|
6
|
+
height: 100%;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
table.featurestable {
|
|
10
|
+
table-layout: fixed;
|
|
11
|
+
min-width: 100%;
|
|
6
12
|
}
|
|
7
13
|
|
|
8
14
|
table.featurestable th {
|
|
@@ -12,11 +18,19 @@ table.featurestable th {
|
|
|
12
18
|
padding: 0;
|
|
13
19
|
background-color: var(--button-bg-color);
|
|
14
20
|
color: var(--button-text-color);
|
|
15
|
-
|
|
16
|
-
inset 0 -1px 0 var(--border-color);
|
|
21
|
+
border: 1px solid var(--border-color);
|
|
17
22
|
overflow: hidden;
|
|
18
23
|
}
|
|
19
24
|
|
|
25
|
+
table.featurestable th::after {
|
|
26
|
+
content: "";
|
|
27
|
+
position: absolute;
|
|
28
|
+
bottom: 0;
|
|
29
|
+
left: 0;
|
|
30
|
+
right: 0;
|
|
31
|
+
border-bottom: 1px solid var(--border-color);
|
|
32
|
+
}
|
|
33
|
+
|
|
20
34
|
table.featurestable-selectable th:first-child {
|
|
21
35
|
position: sticky;
|
|
22
36
|
left: 0;
|
|
@@ -36,7 +50,6 @@ table.featurestable th > span > span.icon {
|
|
|
36
50
|
position: absolute;
|
|
37
51
|
right: 1px;
|
|
38
52
|
background-color: var(--button-bg-color);
|
|
39
|
-
height: 100%;
|
|
40
53
|
flex: 0 0 auto;
|
|
41
54
|
margin-left: 0.5em;
|
|
42
55
|
}
|
|
@@ -60,17 +73,28 @@ table.featurestable tr:hover:not(.row-disabled) {
|
|
|
60
73
|
table.featurestable-selectable td:first-child {
|
|
61
74
|
background-color: var(--button-bg-color);
|
|
62
75
|
color: var(--button-text-color);
|
|
63
|
-
align-items: center;
|
|
64
76
|
padding: 0.25em 0.5em;
|
|
65
|
-
background-clip: padding-box;
|
|
66
77
|
position: sticky;
|
|
67
78
|
left: 0;
|
|
68
79
|
z-index: 1;
|
|
69
80
|
width: 2.5em;
|
|
70
81
|
}
|
|
71
82
|
|
|
83
|
+
table.featurestable-selectable th:first-child::after,
|
|
84
|
+
table.featurestable-selectable td:first-child::after {
|
|
85
|
+
content: "";
|
|
86
|
+
position: absolute;
|
|
87
|
+
right: 0;
|
|
88
|
+
top: 0;
|
|
89
|
+
bottom: 0;
|
|
90
|
+
border-right: 1px solid var(--border-color);
|
|
91
|
+
}
|
|
92
|
+
|
|
72
93
|
table.featurestable td {
|
|
73
|
-
min-width: 2.5em
|
|
94
|
+
min-width: 2.5em;
|
|
95
|
+
border: 1px solid var(--border-color);
|
|
96
|
+
text-align: center;
|
|
97
|
+
height: 2em;
|
|
74
98
|
}
|
|
75
99
|
|
|
76
100
|
span.featurestable-ldraghandle,
|
|
@@ -111,23 +135,26 @@ span.featurestable-bdraghandle {
|
|
|
111
135
|
bottom: 0px;
|
|
112
136
|
}
|
|
113
137
|
|
|
114
|
-
table.featurestable
|
|
115
|
-
|
|
116
|
-
|
|
138
|
+
table.featurestable span.icon-checked::before,
|
|
139
|
+
table.featurestable span.icon-unchecked::before,
|
|
140
|
+
table.featurestable span.icon-tristate::before {
|
|
141
|
+
background-color: white;
|
|
117
142
|
}
|
|
118
143
|
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
144
|
+
|
|
145
|
+
div.featurestable-resize-line-vert,
|
|
146
|
+
div.featurestable-resize-line-horiz {
|
|
147
|
+
position: absolute;
|
|
148
|
+
z-index: 2;
|
|
149
|
+
background-color: var(--border-color);
|
|
123
150
|
}
|
|
124
151
|
|
|
125
|
-
|
|
126
|
-
|
|
152
|
+
div.featurestable-resize-line-vert {
|
|
153
|
+
width: 4px;
|
|
154
|
+
top: 0;
|
|
127
155
|
}
|
|
128
156
|
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
background-color: white;
|
|
157
|
+
div.featurestable-resize-line-horiz {
|
|
158
|
+
height: 4px;
|
|
159
|
+
left: 0;
|
|
133
160
|
}
|