react-spatial 1.0.33-beta.3 → 1.0.33-beta.4
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.
|
@@ -89,6 +89,13 @@ var propTypes = {
|
|
|
89
89
|
subLayerHide: PropTypes.string,
|
|
90
90
|
}),
|
|
91
91
|
|
|
92
|
+
/**
|
|
93
|
+
* Boolean determining whether items collapse sublayers when they change visibility to false
|
|
94
|
+
*/
|
|
95
|
+
collapseInvisibleLayers: PropTypes.oneOfType([
|
|
96
|
+
PropTypes.bool,
|
|
97
|
+
PropTypes.func ]),
|
|
98
|
+
|
|
92
99
|
/**
|
|
93
100
|
* Translation function.
|
|
94
101
|
* @param {function} Translation function returning the translated string.
|
|
@@ -119,6 +126,7 @@ var defaultProps = {
|
|
|
119
126
|
t: function (s) {
|
|
120
127
|
return s;
|
|
121
128
|
},
|
|
129
|
+
collapseInvisibleLayers: false,
|
|
122
130
|
};
|
|
123
131
|
|
|
124
132
|
/**
|
|
@@ -133,7 +141,7 @@ var LayerTree = /*@__PURE__*/(function (Component) {
|
|
|
133
141
|
var ref = this.props;
|
|
134
142
|
var layerService = ref.layerService;
|
|
135
143
|
var isItemHidden = ref.isItemHidden;
|
|
136
|
-
var
|
|
144
|
+
var initialExpandedLayers =
|
|
137
145
|
layerService && layerService.getLayers()
|
|
138
146
|
? this.getExpandedLayers(
|
|
139
147
|
layerService.getLayers().filter(function (l) {
|
|
@@ -149,10 +157,11 @@ var LayerTree = /*@__PURE__*/(function (Component) {
|
|
|
149
157
|
|
|
150
158
|
this.state = {
|
|
151
159
|
layers: layerService ? layerService.getLayers() : [],
|
|
152
|
-
|
|
160
|
+
expandedLayers: initialExpandedLayers,
|
|
153
161
|
};
|
|
154
162
|
this.updateLayers = this.updateLayers.bind(this);
|
|
155
163
|
this.olKeys = [];
|
|
164
|
+
this.expandedAccumulator = [];
|
|
156
165
|
}
|
|
157
166
|
|
|
158
167
|
if ( Component ) LayerTree.__proto__ = Component;
|
|
@@ -190,15 +199,15 @@ var LayerTree = /*@__PURE__*/(function (Component) {
|
|
|
190
199
|
|
|
191
200
|
LayerTree.prototype.onToggle = function onToggle (layer) {
|
|
192
201
|
var ref = this.state;
|
|
193
|
-
var
|
|
194
|
-
var pos =
|
|
202
|
+
var expandedLayers = ref.expandedLayers;
|
|
203
|
+
var pos = expandedLayers.indexOf(layer);
|
|
195
204
|
if (pos > -1) {
|
|
196
|
-
|
|
205
|
+
expandedLayers.splice(pos, 1);
|
|
197
206
|
} else {
|
|
198
|
-
|
|
207
|
+
expandedLayers.push.apply(expandedLayers, this.getExpandedLayers([layer]));
|
|
199
208
|
}
|
|
200
209
|
|
|
201
|
-
this.setState({
|
|
210
|
+
this.setState({ expandedLayers: expandedLayers });
|
|
202
211
|
};
|
|
203
212
|
|
|
204
213
|
/**
|
|
@@ -236,11 +245,52 @@ var LayerTree = /*@__PURE__*/(function (Component) {
|
|
|
236
245
|
LayerTree.prototype.updateLayers = function updateLayers () {
|
|
237
246
|
var ref = this.props;
|
|
238
247
|
var layerService = ref.layerService;
|
|
248
|
+
var layers = layerService.getLayers();
|
|
249
|
+
this.updateTree(layers);
|
|
239
250
|
this.setState({
|
|
240
|
-
layers:
|
|
251
|
+
layers: layers,
|
|
241
252
|
});
|
|
242
253
|
};
|
|
243
254
|
|
|
255
|
+
LayerTree.prototype.expandLayer = function expandLayer (layer) {
|
|
256
|
+
var this$1 = this;
|
|
257
|
+
|
|
258
|
+
var ref = this.props;
|
|
259
|
+
var isItemHidden = ref.isItemHidden;
|
|
260
|
+
if (layer.visible && !isItemHidden(layer)) {
|
|
261
|
+
var children = layer.children.filter(function (c) {
|
|
262
|
+
return !isItemHidden(c) && !c.get('isAlwaysExpanded');
|
|
263
|
+
});
|
|
264
|
+
if (children.length) {
|
|
265
|
+
children.forEach(function (c) {
|
|
266
|
+
return this$1.expandLayer(c);
|
|
267
|
+
});
|
|
268
|
+
}
|
|
269
|
+
this.expandedAccumulator = ( this.expandedAccumulator ).concat( [layer]);
|
|
270
|
+
}
|
|
271
|
+
};
|
|
272
|
+
|
|
273
|
+
LayerTree.prototype.updateTree = function updateTree (layers) {
|
|
274
|
+
var this$1 = this;
|
|
275
|
+
|
|
276
|
+
var ref = this.props;
|
|
277
|
+
var collapseInvisibleLayers = ref.collapseInvisibleLayers;
|
|
278
|
+
if (
|
|
279
|
+
typeof collapseInvisibleLayers === 'function'
|
|
280
|
+
? collapseInvisibleLayers(layers)
|
|
281
|
+
: collapseInvisibleLayers
|
|
282
|
+
) {
|
|
283
|
+
layers.forEach(function (l) {
|
|
284
|
+
this$1.expandLayer(l);
|
|
285
|
+
});
|
|
286
|
+
this.setState({
|
|
287
|
+
expandedLayers: this.expandedAccumulator,
|
|
288
|
+
});
|
|
289
|
+
|
|
290
|
+
this.expandedAccumulator = [];
|
|
291
|
+
}
|
|
292
|
+
};
|
|
293
|
+
|
|
244
294
|
LayerTree.prototype.renderInput = function renderInput (layer) {
|
|
245
295
|
var this$1 = this;
|
|
246
296
|
|
|
@@ -280,7 +330,7 @@ var LayerTree = /*@__PURE__*/(function (Component) {
|
|
|
280
330
|
var ref = this.props;
|
|
281
331
|
var isItemHidden = ref.isItemHidden;
|
|
282
332
|
var ref$1 = this.state;
|
|
283
|
-
var
|
|
333
|
+
var expandedLayers = ref$1.expandedLayers;
|
|
284
334
|
|
|
285
335
|
if (
|
|
286
336
|
!layer.children.filter(function (c) {
|
|
@@ -293,7 +343,7 @@ var LayerTree = /*@__PURE__*/(function (Component) {
|
|
|
293
343
|
|
|
294
344
|
return (
|
|
295
345
|
React.createElement( 'div', {
|
|
296
|
-
className: ("rs-layer-tree-arrow rs-layer-tree-arrow-" + (!
|
|
346
|
+
className: ("rs-layer-tree-arrow rs-layer-tree-arrow-" + (!expandedLayers.includes(layer) ? 'collapsed' : 'expanded')) })
|
|
297
347
|
);
|
|
298
348
|
};
|
|
299
349
|
|
|
@@ -307,7 +357,7 @@ var LayerTree = /*@__PURE__*/(function (Component) {
|
|
|
307
357
|
var titles = ref.titles;
|
|
308
358
|
var isItemHidden = ref.isItemHidden;
|
|
309
359
|
var ref$1 = this.state;
|
|
310
|
-
var
|
|
360
|
+
var expandedLayers = ref$1.expandedLayers;
|
|
311
361
|
var onInputClick = function () {
|
|
312
362
|
this$1.onInputClick(
|
|
313
363
|
layer,
|
|
@@ -316,12 +366,12 @@ var LayerTree = /*@__PURE__*/(function (Component) {
|
|
|
316
366
|
}).length && !layer.get('isAlwaysExpanded')
|
|
317
367
|
);
|
|
318
368
|
};
|
|
319
|
-
var title = (t(layer.name)) + " " + (!
|
|
369
|
+
var title = (t(layer.name)) + " " + (!expandedLayers.includes(layer)
|
|
320
370
|
? titles.subLayerShow
|
|
321
371
|
: titles.subLayerHide);
|
|
322
372
|
return (
|
|
323
373
|
React.createElement( 'div', {
|
|
324
|
-
role: "button", tabIndex: 0, className: "rs-layer-tree-toggle", title: title, 'aria-expanded':
|
|
374
|
+
role: "button", tabIndex: 0, className: "rs-layer-tree-toggle", title: title, 'aria-expanded': expandedLayers.includes(layer), 'aria-label': title, onClick: onInputClick, onKeyPress: onInputClick },
|
|
325
375
|
React.createElement( 'div', null, t(layer.name) ),
|
|
326
376
|
this.renderArrow(layer)
|
|
327
377
|
)
|
|
@@ -350,9 +400,9 @@ var LayerTree = /*@__PURE__*/(function (Component) {
|
|
|
350
400
|
var padding = ref$1.padding;
|
|
351
401
|
var getParentClassName = ref$1.getParentClassName;
|
|
352
402
|
var ref$2 = this.state;
|
|
353
|
-
var
|
|
403
|
+
var expandedLayers = ref$2.expandedLayers;
|
|
354
404
|
|
|
355
|
-
var children =
|
|
405
|
+
var children = expandedLayers.includes(layer)
|
|
356
406
|
? [].concat( layer.children.filter(function (c) {
|
|
357
407
|
return !isItemHidden(c);
|
|
358
408
|
}) )
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LayerTree.js","sources":["../../../src/components/LayerTree/LayerTree.js"],"sourcesContent":["import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nconst propTypes = {\n /**\n * Layers provider.\n */\n layerService: PropTypes.object,\n\n /**\n * CSS class to apply on the container.\n */\n className: PropTypes.string,\n\n /**\n * Padding left to apply on each level.\n */\n padding: PropTypes.number,\n\n /**\n * Determine if the item is hidden in the tree or not.\n *\n * @param {object} item The item to hide or not.\n *\n * @return {bool} true if the item is not displayed in the tree\n */\n isItemHidden: PropTypes.func,\n\n /**\n * Determine the className used by the div containing the parent and its children.\n */\n getParentClassName: PropTypes.func,\n\n /**\n * Custom function to render an item in the tree.\n *\n * @param {object} item The item to render.\n *\n * @return {node} A jsx node.\n */\n renderItem: PropTypes.func,\n\n /**\n * Custom function to render only the content of an item in the tree.\n *\n * @param {object} item The item to render.\n *\n * @return {node} A jsx node.\n */\n renderItemContent: PropTypes.func,\n\n /**\n * Custom function to render custom content before the list of children of an item.\n *\n * @param {object} item The item to render.\n *\n * @return {node} A jsx node.\n */\n renderBeforeItem: PropTypes.func,\n\n /**\n * Custom function to render custom content after the list of children of an item.\n *\n * @param {object} item The item to render.\n *\n * @return {node} A jsx node.\n */\n renderAfterItem: PropTypes.func,\n\n /**\n * Object holding title for the layer tree's buttons.\n */\n titles: PropTypes.shape({\n /**\n * aria-label on checkbox to show layer.\n */\n layerShow: PropTypes.string,\n /**\n * aria-label on checkbox to hide layer.\n */\n layerHide: PropTypes.string,\n /**\n * title on button to show sublayers.\n */\n subLayerShow: PropTypes.string,\n /**\n * title on button to show sublayers.\n */\n subLayerHide: PropTypes.string,\n }),\n\n /**\n * Translation function.\n * @param {function} Translation function returning the translated string.\n */\n t: PropTypes.func,\n};\n\nconst defaultProps = {\n layerService: undefined,\n className: 'rs-layer-tree',\n padding: 30,\n isItemHidden: () => {\n return false;\n },\n getParentClassName: () => {\n return undefined;\n },\n renderItem: null,\n renderItemContent: null,\n renderBeforeItem: null,\n renderAfterItem: null,\n titles: {\n layerShow: 'Show layer',\n layerHide: 'Hide layer',\n subLayerShow: 'Show sublayer',\n subLayerHide: 'Hide sublayer',\n },\n t: (s) => {\n return s;\n },\n};\n\n/**\n * The LayerTree component renders an interface for toggling\n * [mobility-toolbox-js layers](https://mobility-toolbox-js.geops.io/api/identifiers%20html#ol-layers)\n * and their corresponding child layers.\n */\n\nclass LayerTree extends Component {\n constructor(props) {\n super(props);\n const { layerService, isItemHidden } = this.props;\n const initialExpandedLayerNames =\n layerService && layerService.getLayers()\n ? this.getExpandedLayers(\n layerService.getLayers().filter((l) => {\n return (\n !isItemHidden(l) &&\n l.getVisibleChildren().filter((c) => {\n return !isItemHidden(c);\n }).length\n );\n }),\n )\n : [];\n\n this.state = {\n layers: layerService ? layerService.getLayers() : [],\n expandedLayerNames: initialExpandedLayerNames,\n };\n this.updateLayers = this.updateLayers.bind(this);\n this.olKeys = [];\n }\n\n componentDidMount() {\n this.updateLayerService();\n }\n\n componentDidUpdate(prevProps) {\n const { layerService } = this.props;\n\n if (layerService !== prevProps.layerService) {\n this.updateLayerService();\n }\n }\n\n componentWillUnmount() {\n const { layerService } = this.props;\n layerService.un('change:visible', this.updateLayers);\n }\n\n onInputClick(layer, toggle = false) {\n if (toggle) {\n this.onToggle(layer);\n } else {\n layer.setVisible(!layer.visible);\n }\n }\n\n onToggle(layer) {\n const { expandedLayerNames } = this.state;\n const pos = expandedLayerNames.indexOf(layer);\n if (pos > -1) {\n expandedLayerNames.splice(pos, 1);\n } else {\n expandedLayerNames.push(...this.getExpandedLayers([layer]));\n }\n\n this.setState({ expandedLayerNames });\n }\n\n /**\n * Get the always expanded ancestors (isAlwaysExpanded=true) of the given layers\n * together with the (given) initially expanded layers\n *\n * @param {Layer} layers Initially expanded layers\n * @return {Array.<Layer>} Initially expanded layers and all its always expanded ancestors\n */\n getExpandedLayers(layers) {\n const { isItemHidden } = this.props;\n const children = layers.flatMap((l) => {\n return l.children.filter((c) => {\n return !isItemHidden(c) && c.get('isAlwaysExpanded');\n });\n });\n\n if (!children.length) {\n return layers;\n }\n return [...layers, this.getExpandedLayers(children)].flat();\n }\n\n updateLayerService() {\n const { layerService } = this.props;\n if (layerService) {\n layerService.un('change:visible', this.updateLayers);\n this.updateLayers();\n layerService.on('change:visible', this.updateLayers);\n }\n }\n\n updateLayers() {\n const { layerService } = this.props;\n this.setState({\n layers: layerService.getLayers(),\n });\n }\n\n renderInput(layer) {\n const { titles, isItemHidden } = this.props;\n let tabIndex = 0;\n\n if (\n !layer.children.filter((c) => {\n return !isItemHidden(c);\n }).length\n ) {\n // We forbid focus on keypress event for first level layers and layers without children.\n tabIndex = -1;\n }\n\n const inputType = layer.get('radioGroup') ? 'radio' : 'checkbox';\n return (\n // eslint-disable-next-line jsx-a11y/label-has-associated-control,jsx-a11y/no-noninteractive-element-interactions\n <label\n className={`rs-layer-tree-input rs-layer-tree-input-${inputType} rs-${inputType}`}\n tabIndex={tabIndex}\n title={layer.visible ? titles.layerHide : titles.layerShow}\n aria-label={layer.visible ? titles.layerHide : titles.layerShow}\n onKeyPress={(e) => {\n if (e.which === 13) {\n this.onInputClick(layer);\n }\n }}\n >\n <input\n type={inputType}\n tabIndex={-1}\n checked={layer.visible}\n readOnly\n onClick={() => {\n return this.onInputClick(layer);\n }}\n />\n <span />\n </label>\n );\n }\n\n renderArrow(layer) {\n const { isItemHidden } = this.props;\n const { expandedLayerNames } = this.state;\n\n if (\n !layer.children.filter((c) => {\n return !isItemHidden(c);\n }).length ||\n layer.get('isAlwaysExpanded')\n ) {\n return null;\n }\n\n return (\n <div\n className={`rs-layer-tree-arrow rs-layer-tree-arrow-${\n !expandedLayerNames.includes(layer) ? 'collapsed' : 'expanded'\n }`}\n />\n );\n }\n\n // Render a button which expands/collapse the layer if there is children\n // or simulate a click on the input otherwise.\n renderToggleButton(layer) {\n const { t, titles, isItemHidden } = this.props;\n const { expandedLayerNames } = this.state;\n const onInputClick = () => {\n this.onInputClick(\n layer,\n layer.children.filter((c) => {\n return !isItemHidden(c);\n }).length && !layer.get('isAlwaysExpanded'),\n );\n };\n const title = `${t(layer.name)} ${\n !expandedLayerNames.includes(layer)\n ? titles.subLayerShow\n : titles.subLayerHide\n }`;\n return (\n <div\n role=\"button\"\n tabIndex={0}\n className=\"rs-layer-tree-toggle\"\n title={title}\n aria-expanded={expandedLayerNames.includes(layer)}\n aria-label={title}\n onClick={onInputClick}\n onKeyPress={onInputClick}\n >\n <div>{t(layer.name)}</div>\n {this.renderArrow(layer)}\n </div>\n );\n }\n\n renderItemContent(layer) {\n return (\n <>\n {this.renderInput(layer)}\n {this.renderToggleButton(layer)}\n </>\n );\n }\n\n renderItem(layer, level) {\n const { isItemHidden } = this.props;\n const {\n renderItem,\n renderItemContent,\n renderBeforeItem,\n renderAfterItem,\n padding,\n getParentClassName,\n } = this.props;\n const { expandedLayerNames } = this.state;\n\n const children = expandedLayerNames.includes(layer)\n ? [\n ...layer.children.filter((c) => {\n return !isItemHidden(c);\n }),\n ]\n : [];\n\n if (renderItem) {\n return renderItem(layer, this.onInputClick, this.onToggle);\n }\n\n return (\n <div className={getParentClassName()} key={layer.key}>\n <div\n className={`rs-layer-tree-item ${layer.visible ? 'rs-visible' : ''}`}\n style={{\n paddingLeft: `${padding * level}px`,\n }}\n >\n {renderItemContent\n ? renderItemContent(layer, this)\n : this.renderItemContent(layer)}\n </div>\n {renderBeforeItem && renderBeforeItem(layer, level, this)}\n {[...children].reverse().map((child) => {\n return this.renderItem(child, level + 1);\n })}\n {renderAfterItem && renderAfterItem(layer, level, this)}\n </div>\n );\n }\n\n renderTree() {\n const { isItemHidden } = this.props;\n const { layers } = this.state;\n\n if (!layers) {\n return null;\n }\n\n return (\n <>\n {layers\n .filter((l) => {\n return !isItemHidden(l);\n })\n .reverse()\n .map((l) => {\n return this.renderItem(l, 0);\n })}\n </>\n );\n }\n\n render() {\n const { className } = this.props;\n return <div className={className}>{this.renderTree()}</div>;\n }\n}\n\nLayerTree.propTypes = propTypes;\nLayerTree.defaultProps = defaultProps;\n\nexport default LayerTree;\n"],"names":["const","super","let","this"],"mappings":"AAAA,OAAO,KAAK,IAAI,SAAS,QAAQ,OAAO,CAAC;AACzC,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC;AACAA,GAAK,CAAC,SAAS,GAAG;AAClB;AACA;AACA;AACA,EAAE,YAAY,EAAE,SAAS,CAAC,MAAM;AAChC;AACA;AACA;AACA;AACA,EAAE,SAAS,EAAE,SAAS,CAAC,MAAM;AAC7B;AACA;AACA;AACA;AACA,EAAE,OAAO,EAAE,SAAS,CAAC,MAAM;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,YAAY,EAAE,SAAS,CAAC,IAAI;AAC9B;AACA;AACA;AACA;AACA,EAAE,kBAAkB,EAAE,SAAS,CAAC,IAAI;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,UAAU,EAAE,SAAS,CAAC,IAAI;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,iBAAiB,EAAE,SAAS,CAAC,IAAI;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,gBAAgB,EAAE,SAAS,CAAC,IAAI;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,eAAe,EAAE,SAAS,CAAC,IAAI;AACjC;AACA;AACA;AACA;AACA,EAAE,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC;AAC1B;AACA;AACA;AACA,IAAI,SAAS,EAAE,SAAS,CAAC,MAAM;AAC/B;AACA;AACA;AACA,IAAI,SAAS,EAAE,SAAS,CAAC,MAAM;AAC/B;AACA;AACA;AACA,IAAI,YAAY,EAAE,SAAS,CAAC,MAAM;AAClC;AACA;AACA;AACA,IAAI,YAAY,EAAE,SAAS,CAAC,MAAM;AAClC,GAAG,CAAC;AACJ;AACA;AACA;AACA;AACA;AACA,EAAE,CAAC,EAAE,SAAS,CAAC,IAAI;AACnB,CAAC,CAAC;AACF;AACAA,GAAK,CAAC,YAAY,GAAG;AACrB,EAAE,YAAY,EAAE,SAAS;AACzB,EAAE,SAAS,EAAE,eAAe;AAC5B,EAAE,OAAO,EAAE,EAAE;AACb,EAAE,YAAY,WAAE,GAAM;AACtB,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH,EAAE,kBAAkB,WAAE,GAAM;AAC5B,IAAI,OAAO,SAAS,CAAC;AACrB,GAAG;AACH,EAAE,UAAU,EAAE,IAAI;AAClB,EAAE,iBAAiB,EAAE,IAAI;AACzB,EAAE,gBAAgB,EAAE,IAAI;AACxB,EAAE,eAAe,EAAE,IAAI;AACvB,EAAE,MAAM,EAAE;AACV,IAAI,SAAS,EAAE,YAAY;AAC3B,IAAI,SAAS,EAAE,YAAY;AAC3B,IAAI,YAAY,EAAE,eAAe;AACjC,IAAI,YAAY,EAAE,eAAe;AACjC,GAAG;AACH,EAAE,CAAC,WAAE,CAAC,CAAC,EAAK;AACZ,IAAI,OAAO,CAAC,CAAC;AACb,GAAG;AACH,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAM,SAAS,GAAkB;EAC/B,kBAAW,CAAC,KAAK,EAAE;AACrB,IAAIC,cAAK,OAAC,KAAK,CAAC,CAAC;AACjB,WAAwC,GAAG,IAAI,CAAC;IAApC;IAAc,oCAA4B;AACtD,IAAID,GAAK,CAAC,yBAAyB;AACnC,MAAM,YAAY,IAAI,YAAY,CAAC,SAAS,EAAE;AAC9C,UAAU,IAAI,CAAC,iBAAiB;AAChC,YAAY,YAAY,CAAC,SAAS,EAAE,CAAC,MAAM,UAAC,CAAC,CAAC,EAAK;AACnD,cAAc,OAAO;AACrB,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAAC;AAChC,gBAAgB,CAAC,CAAC,kBAAkB,EAAE,CAAC,MAAM,UAAC,CAAC,CAAC,EAAK;AACrD,kBAAkB,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AAC1C,iBAAiB,CAAC,CAAC,MAAM;AACzB,eAAe,CAAC;AAChB,aAAa,CAAE;AACf,WAAW;AACX,UAAU,EAAE,CAAC;AACb;AACA,IAAI,IAAI,CAAC,KAAK,GAAG;AACjB,MAAM,MAAM,EAAE,YAAY,GAAG,YAAY,CAAC,SAAS,EAAE,GAAG,EAAE;AAC1D,MAAM,kBAAkB,EAAE,yBAAyB;AACnD,KAAK,CAAC;AACN,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrD,IAAI,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;AACrB;;;;8CAAG;AACH;AACA,sBAAE,+CAAiB,GAAG;AACtB,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC9B,IAAG;AACH;AACA,sBAAE,iDAAkB,CAAC,SAAS,EAAE;AAChC,WAA0B,GAAG,IAAI,CAAC;IAAtB,oCAA4B;AACxC;AACA,IAAI,IAAI,YAAY,KAAK,SAAS,CAAC,YAAY,EAAE;AACjD,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAChC,KAAK;AACL,IAAG;AACH;AACA,sBAAE,qDAAoB,GAAG;AACzB,WAA0B,GAAG,IAAI,CAAC;IAAtB,oCAA4B;AACxC,IAAI,YAAY,CAAC,EAAE,CAAC,gBAAgB,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AACzD,IAAG;AACH;AACA,sBAAE,qCAAY,CAAC,KAAK,EAAE,MAAc,EAAE;mCAAV,GAAG;AAAQ;AACvC,IAAI,IAAI,MAAM,EAAE;AAChB,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC3B,KAAK,MAAM;AACX,MAAM,KAAK,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACvC,KAAK;AACL,IAAG;AACH;AACA,sBAAE,6BAAQ,CAAC,KAAK,EAAE;AAClB,WAAgC,GAAG,IAAI,CAAC;IAA5B,gDAAkC;AAC9C,IAAIA,GAAK,CAAC,GAAG,GAAG,kBAAkB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAClD,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,EAAE;AAClB,MAAM,kBAAkB,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AACxC,KAAK,MAAM;AACX,MAAM,kBAAkB,CAAC,UAAI,qBAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAClE,KAAK;AACL;AACA,IAAI,IAAI,CAAC,QAAQ,CAAC,sBAAE,kBAAkB,EAAE,CAAC,CAAC;AAC1C,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAE,+CAAiB,CAAC,MAAM,EAAE;AAC5B,WAA0B,GAAG,IAAI,CAAC;IAAtB,oCAA4B;AACxC,IAAIA,GAAK,CAAC,QAAQ,GAAG,MAAM,CAAC,OAAO,UAAC,CAAC,CAAC,EAAK;AAC3C,MAAM,OAAO,CAAC,CAAC,QAAQ,CAAC,MAAM,UAAC,CAAC,CAAC,EAAK;AACtC,QAAQ,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;AAC7D,OAAO,CAAC,CAAC;AACT,KAAK,CAAC,CAAC;AACP;AACA,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;AAC1B,MAAM,OAAO,MAAM,CAAC;AACpB,KAAK;AACL,IAAI,OAAW,MAAM,UAAE,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAChE,IAAG;AACH;AACA,sBAAE,iDAAkB,GAAG;AACvB,WAA0B,GAAG,IAAI,CAAC;IAAtB,oCAA4B;AACxC,IAAI,IAAI,YAAY,EAAE;AACtB,MAAM,YAAY,CAAC,EAAE,CAAC,gBAAgB,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AAC3D,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;AAC1B,MAAM,YAAY,CAAC,EAAE,CAAC,gBAAgB,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AAC3D,KAAK;AACL,IAAG;AACH;AACA,sBAAE,qCAAY,GAAG;AACjB,WAA0B,GAAG,IAAI,CAAC;IAAtB,oCAA4B;AACxC,IAAI,IAAI,CAAC,QAAQ,CAAC;AAClB,MAAM,MAAM,EAAE,YAAY,CAAC,SAAS,EAAE;AACtC,KAAK,CAAC,CAAC;AACP,IAAG;AACH;AACA,sBAAE,mCAAW,CAAC,KAAK,EAAE;;AAAC;AACtB,WAAkC,GAAG,IAAI,CAAC;IAA9B;IAAQ,oCAA4B;AAChD,IAAIE,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC;AACrB;AACA,IAAI;AACJ,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,UAAC,CAAC,CAAC,EAAK;AACpC,QAAQ,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AAChC,OAAO,CAAC,CAAC,MAAM;AACf,MAAM;AACN;AACA,MAAM,QAAQ,GAAG,CAAC,CAAC,CAAC;AACpB,KAAK;AACL;AACA,IAAIF,GAAK,CAAC,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,OAAO,GAAG,UAAU,CAAC;AACrE,IAAI,OAAO;AACX;AACA,MAAM,sBAAC,SAAK;AACZ,QAAQ,WAAW,8CAA2C,SAAS,YAAO,UAAY,EAClF,UAAU,QAAS,EACnB,OAAO,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,SAAU,EAC3D,cAAY,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,SAAU,EAChE,qBAAY,CAAC,CAAC,EAAK;AAC3B,UAAU,IAAI,CAAC,CAAC,KAAK,KAAK,EAAE,EAAE;AAC9B,YAAYG,MAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AACrC,WAAW;AACX,YACO;AACP,QAAQ,sBAAC,SAAK;AACd,UAAU,MAAM,SAAU,EAChB,UAAU,CAAC,CAAE,EACb,SAAS,KAAK,CAAC,OAAQ,EACvB,cAAQ,EACR,kBAAS,GAAM;AACzB,YAAY,OAAOA,MAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AAC5C,aAAY,EACF;AACV,QAAQ,sBAAC,WAAI,EAAG;AAChB,MAAM,CAAQ;AACd,KAAK,CAAC;AACN,IAAG;AACH;AACA,sBAAE,mCAAW,CAAC,KAAK,EAAE;AACrB,WAA0B,GAAG,IAAI,CAAC;IAAtB,oCAA4B;AACxC,aAAgC,GAAG,IAAI,CAAC;IAA5B,kDAAkC;AAC9C;AACA,IAAI;AACJ,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,UAAC,CAAC,CAAC,EAAK;AACpC,QAAQ,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AAChC,OAAO,CAAC,CAAC,MAAM;AACf,MAAM,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC;AACnC,MAAM;AACN,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL;AACA,IAAI,OAAO;AACX,MAAM,sBAAC,OAAG;AACV,QAAQ,WAAW,+CACT,CAAC,kBAAkB,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,WAAW,GAAG,cACnD,CACH;AACR,KAAK,CAAC;AACN,IAAG;AACH;AACA;AACA;AACA,sBAAE,iDAAkB,CAAC,KAAK,EAAE;;AAAC;AAC7B,WAAqC,GAAG,IAAI,CAAC;IAAjC;IAAG;IAAQ,oCAA4B;AACnD,aAAgC,GAAG,IAAI,CAAC;IAA5B,kDAAkC;AAC9C,IAAIH,GAAK,CAAC,YAAY,YAAG,GAAM;AAC/B,MAAMG,MAAI,CAAC,YAAY;AACvB,QAAQ,KAAK;AACb,QAAQ,KAAK,CAAC,QAAQ,CAAC,MAAM,UAAC,CAAC,CAAC,EAAK;AACrC,UAAU,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AAClC,SAAS,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAE;AACpD,OAAO,CAAC;AACR,KAAK,CAAC;AACN,IAAIH,GAAK,CAAC,KAAK,IAAM,CAAC,CAAC,KAAK,CAAC,IAAI,EAAC,UAC5B,CAAC,kBAAkB,CAAC,QAAQ,CAAC,KAAK,CAAC;AACzC,UAAU,MAAM,CAAC,YAAY;AAC7B,UAAU,MAAM,CAAC,aACX,CAAC;AACP,IAAI,OAAO;AACX,MAAM,sBAAC,OAAG;AACV,QAAQ,MAAK,QAAQ,EACb,UAAU,CAAE,EACZ,WAAU,sBAAsB,EAChC,OAAO,KAAM,EACb,iBAAe,kBAAkB,CAAC,QAAQ,CAAC,KAAK,CAAE,EAClD,cAAY,KAAM,EAClB,SAAS,YAAa,EACtB,YAAY,eACb;AACP,QAAQ,sBAAC,YAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAE,GAAM;AAClC,QAAS,IAAI,CAAC,WAAW,CAAC,KAAK,CAAE;AACjC,MAAM,CAAM;AACZ,KAAK,CAAC;AACN,IAAG;AACH;AACA,sBAAE,+CAAiB,CAAC,KAAK,EAAE;AAC3B,IAAI,OAAO;AACX,MAAM,0CAAE;AACR,QAAS,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;AACjC,QAAS,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAE;AACxC,MAAM,CAAG;AACT,KAAK,CAAC;AACN,IAAG;AACH;AACA,sBAAE,iCAAU,CAAC,KAAK,EAAE,KAAK,EAAE;;AAAC;AAC5B,WAA0B,GAAG,IAAI,CAAC;IAAtB,oCAA4B;AACxC,aAOK,GAAG,IAAI,CAAC;IANP;IACA;IACA;IACA;IACA;IACA,kDACa;AACnB,aAAgC,GAAG,IAAI,CAAC;IAA5B,kDAAkC;AAC9C;AACA,IAAIA,GAAK,CAAC,QAAQ,GAAG,kBAAkB,CAAC,QAAQ,CAAC,KAAK,CAAC;AACvD,QAAQ,WACK,KAAK,CAAC,QAAQ,CAAC,MAAM,UAAC,CAAC,CAAC,EAAK;AAC1C,YAAY,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AACpC,WAAW,CAAC,EACH;AACT,QAAQ,EAAE,CAAC;AACX;AACA,IAAI,IAAI,UAAU,EAAE;AACpB,MAAM,OAAO,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;AACjE,KAAK;AACL;AACA,IAAI,OAAO;AACX,MAAM,sBAAC,OAAG,CAAC,WAAW,kBAAkB,EAAG,EAAC,KAAK,KAAK,CAAC,MAAK;AAC5D,QAAQ,sBAAC,OAAG;AACZ,UAAU,WAAW,0BAAsB,KAAK,CAAC,OAAO,GAAG,YAAY,GAAG,IAAK,EACrE,OAAO;AACjB,YAAY,WAAW,IAAK,OAAO,GAAG,MAAK,QAAI;AAC/C,cACS;AACT,UAAW,iBAAiB;AAC5B,cAAc,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC;AAC5C,cAAc,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAE;AAC5C,QAAQ,EAAM;AACd,QAAS,gBAAgB,IAAI,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE;AAClE,QAAS,WAAI,QAAQ,EAAC,CAAC,OAAO,EAAE,CAAC,GAAG,UAAC,CAAC,KAAK,EAAK;AAChD,UAAU,OAAOG,MAAI,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;AACnD,SAAS,EAAE;AACX,QAAS,eAAe,IAAI,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAE;AAChE,MAAM,CAAM;AACZ,KAAK,CAAC;AACN,IAAG;AACH;AACA,sBAAE,iCAAU,GAAG;;AAAC;AAChB,WAA0B,GAAG,IAAI,CAAC;IAAtB,oCAA4B;AACxC,aAAoB,GAAG,IAAI,CAAC;IAAhB,0BAAsB;AAClC;AACA,IAAI,IAAI,CAAC,MAAM,EAAE;AACjB,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL;AACA,IAAI,OAAO;AACX,MAAM,0CAAE;AACR,QAAS,MAAM;AACf,WAAW,MAAM,UAAC,CAAC,CAAC,EAAK;AACzB,YAAY,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AACpC,WAAW,CAAC;AACZ,WAAW,OAAO,EAAE;AACpB,WAAW,GAAG,UAAC,CAAC,CAAC,EAAK;AACtB,YAAY,OAAOA,MAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACzC,WAAW,CAAE;AACb,MAAM,CAAG;AACT,KAAK,CAAC;AACN,IAAG;AACH;AACA,sBAAE,yBAAM,GAAG;AACX,WAAuB,GAAG,IAAI,CAAC;IAAnB,8BAAyB;AACrC,IAAI,OAAO,sBAAC,OAAG,CAAC,WAAW,aAAY,IAAI,CAAC,UAAU,EAAG,CAAM,CAAC;AAChE;;;EArRwB,YAsRvB;AACD;AACA,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC;AAChC,SAAS,CAAC,YAAY,GAAG,YAAY,CAAC;AACtC;AACA,eAAe,SAAS,CAAC;"}
|
|
1
|
+
{"version":3,"file":"LayerTree.js","sources":["../../../src/components/LayerTree/LayerTree.js"],"sourcesContent":["import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nconst propTypes = {\n /**\n * Layers provider.\n */\n layerService: PropTypes.object,\n\n /**\n * CSS class to apply on the container.\n */\n className: PropTypes.string,\n\n /**\n * Padding left to apply on each level.\n */\n padding: PropTypes.number,\n\n /**\n * Determine if the item is hidden in the tree or not.\n *\n * @param {object} item The item to hide or not.\n *\n * @return {bool} true if the item is not displayed in the tree\n */\n isItemHidden: PropTypes.func,\n\n /**\n * Determine the className used by the div containing the parent and its children.\n */\n getParentClassName: PropTypes.func,\n\n /**\n * Custom function to render an item in the tree.\n *\n * @param {object} item The item to render.\n *\n * @return {node} A jsx node.\n */\n renderItem: PropTypes.func,\n\n /**\n * Custom function to render only the content of an item in the tree.\n *\n * @param {object} item The item to render.\n *\n * @return {node} A jsx node.\n */\n renderItemContent: PropTypes.func,\n\n /**\n * Custom function to render custom content before the list of children of an item.\n *\n * @param {object} item The item to render.\n *\n * @return {node} A jsx node.\n */\n renderBeforeItem: PropTypes.func,\n\n /**\n * Custom function to render custom content after the list of children of an item.\n *\n * @param {object} item The item to render.\n *\n * @return {node} A jsx node.\n */\n renderAfterItem: PropTypes.func,\n\n /**\n * Object holding title for the layer tree's buttons.\n */\n titles: PropTypes.shape({\n /**\n * aria-label on checkbox to show layer.\n */\n layerShow: PropTypes.string,\n /**\n * aria-label on checkbox to hide layer.\n */\n layerHide: PropTypes.string,\n /**\n * title on button to show sublayers.\n */\n subLayerShow: PropTypes.string,\n /**\n * title on button to show sublayers.\n */\n subLayerHide: PropTypes.string,\n }),\n\n /**\n * Boolean determining whether items collapse sublayers when they change visibility to false\n */\n collapseInvisibleLayers: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.func,\n ]),\n\n /**\n * Translation function.\n * @param {function} Translation function returning the translated string.\n */\n t: PropTypes.func,\n};\n\nconst defaultProps = {\n layerService: undefined,\n className: 'rs-layer-tree',\n padding: 30,\n isItemHidden: () => {\n return false;\n },\n getParentClassName: () => {\n return undefined;\n },\n renderItem: null,\n renderItemContent: null,\n renderBeforeItem: null,\n renderAfterItem: null,\n titles: {\n layerShow: 'Show layer',\n layerHide: 'Hide layer',\n subLayerShow: 'Show sublayer',\n subLayerHide: 'Hide sublayer',\n },\n t: (s) => {\n return s;\n },\n collapseInvisibleLayers: false,\n};\n\n/**\n * The LayerTree component renders an interface for toggling\n * [mobility-toolbox-js layers](https://mobility-toolbox-js.geops.io/api/identifiers%20html#ol-layers)\n * and their corresponding child layers.\n */\n\nclass LayerTree extends Component {\n constructor(props) {\n super(props);\n const { layerService, isItemHidden } = this.props;\n const initialExpandedLayers =\n layerService && layerService.getLayers()\n ? this.getExpandedLayers(\n layerService.getLayers().filter((l) => {\n return (\n !isItemHidden(l) &&\n l.getVisibleChildren().filter((c) => {\n return !isItemHidden(c);\n }).length\n );\n }),\n )\n : [];\n\n this.state = {\n layers: layerService ? layerService.getLayers() : [],\n expandedLayers: initialExpandedLayers,\n };\n this.updateLayers = this.updateLayers.bind(this);\n this.olKeys = [];\n this.expandedAccumulator = [];\n }\n\n componentDidMount() {\n this.updateLayerService();\n }\n\n componentDidUpdate(prevProps) {\n const { layerService } = this.props;\n\n if (layerService !== prevProps.layerService) {\n this.updateLayerService();\n }\n }\n\n componentWillUnmount() {\n const { layerService } = this.props;\n layerService.un('change:visible', this.updateLayers);\n }\n\n onInputClick(layer, toggle = false) {\n if (toggle) {\n this.onToggle(layer);\n } else {\n layer.setVisible(!layer.visible);\n }\n }\n\n onToggle(layer) {\n const { expandedLayers } = this.state;\n const pos = expandedLayers.indexOf(layer);\n if (pos > -1) {\n expandedLayers.splice(pos, 1);\n } else {\n expandedLayers.push(...this.getExpandedLayers([layer]));\n }\n\n this.setState({ expandedLayers });\n }\n\n /**\n * Get the always expanded ancestors (isAlwaysExpanded=true) of the given layers\n * together with the (given) initially expanded layers\n *\n * @param {Layer} layers Initially expanded layers\n * @return {Array.<Layer>} Initially expanded layers and all its always expanded ancestors\n */\n getExpandedLayers(layers) {\n const { isItemHidden } = this.props;\n const children = layers.flatMap((l) => {\n return l.children.filter((c) => {\n return !isItemHidden(c) && c.get('isAlwaysExpanded');\n });\n });\n\n if (!children.length) {\n return layers;\n }\n return [...layers, this.getExpandedLayers(children)].flat();\n }\n\n updateLayerService() {\n const { layerService } = this.props;\n if (layerService) {\n layerService.un('change:visible', this.updateLayers);\n this.updateLayers();\n layerService.on('change:visible', this.updateLayers);\n }\n }\n\n updateLayers() {\n const { layerService } = this.props;\n const layers = layerService.getLayers();\n this.updateTree(layers);\n this.setState({\n layers,\n });\n }\n\n expandLayer(layer) {\n const { isItemHidden } = this.props;\n if (layer.visible && !isItemHidden(layer)) {\n const children = layer.children.filter((c) => {\n return !isItemHidden(c) && !c.get('isAlwaysExpanded');\n });\n if (children.length) {\n children.forEach((c) => {\n return this.expandLayer(c);\n });\n }\n this.expandedAccumulator = [...this.expandedAccumulator, layer];\n }\n }\n\n updateTree(layers) {\n const { collapseInvisibleLayers } = this.props;\n if (\n typeof collapseInvisibleLayers === 'function'\n ? collapseInvisibleLayers(layers)\n : collapseInvisibleLayers\n ) {\n layers.forEach((l) => {\n this.expandLayer(l);\n });\n this.setState({\n expandedLayers: this.expandedAccumulator,\n });\n\n this.expandedAccumulator = [];\n }\n }\n\n renderInput(layer) {\n const { titles, isItemHidden } = this.props;\n let tabIndex = 0;\n\n if (\n !layer.children.filter((c) => {\n return !isItemHidden(c);\n }).length\n ) {\n // We forbid focus on keypress event for first level layers and layers without children.\n tabIndex = -1;\n }\n\n const inputType = layer.get('radioGroup') ? 'radio' : 'checkbox';\n return (\n // eslint-disable-next-line jsx-a11y/label-has-associated-control,jsx-a11y/no-noninteractive-element-interactions\n <label\n className={`rs-layer-tree-input rs-layer-tree-input-${inputType} rs-${inputType}`}\n tabIndex={tabIndex}\n title={layer.visible ? titles.layerHide : titles.layerShow}\n aria-label={layer.visible ? titles.layerHide : titles.layerShow}\n onKeyPress={(e) => {\n if (e.which === 13) {\n this.onInputClick(layer);\n }\n }}\n >\n <input\n type={inputType}\n tabIndex={-1}\n checked={layer.visible}\n readOnly\n onClick={() => {\n return this.onInputClick(layer);\n }}\n />\n <span />\n </label>\n );\n }\n\n renderArrow(layer) {\n const { isItemHidden } = this.props;\n const { expandedLayers } = this.state;\n\n if (\n !layer.children.filter((c) => {\n return !isItemHidden(c);\n }).length ||\n layer.get('isAlwaysExpanded')\n ) {\n return null;\n }\n\n return (\n <div\n className={`rs-layer-tree-arrow rs-layer-tree-arrow-${\n !expandedLayers.includes(layer) ? 'collapsed' : 'expanded'\n }`}\n />\n );\n }\n\n // Render a button which expands/collapse the layer if there is children\n // or simulate a click on the input otherwise.\n renderToggleButton(layer) {\n const { t, titles, isItemHidden } = this.props;\n const { expandedLayers } = this.state;\n const onInputClick = () => {\n this.onInputClick(\n layer,\n layer.children.filter((c) => {\n return !isItemHidden(c);\n }).length && !layer.get('isAlwaysExpanded'),\n );\n };\n const title = `${t(layer.name)} ${\n !expandedLayers.includes(layer)\n ? titles.subLayerShow\n : titles.subLayerHide\n }`;\n return (\n <div\n role=\"button\"\n tabIndex={0}\n className=\"rs-layer-tree-toggle\"\n title={title}\n aria-expanded={expandedLayers.includes(layer)}\n aria-label={title}\n onClick={onInputClick}\n onKeyPress={onInputClick}\n >\n <div>{t(layer.name)}</div>\n {this.renderArrow(layer)}\n </div>\n );\n }\n\n renderItemContent(layer) {\n return (\n <>\n {this.renderInput(layer)}\n {this.renderToggleButton(layer)}\n </>\n );\n }\n\n renderItem(layer, level) {\n const { isItemHidden } = this.props;\n const {\n renderItem,\n renderItemContent,\n renderBeforeItem,\n renderAfterItem,\n padding,\n getParentClassName,\n } = this.props;\n const { expandedLayers } = this.state;\n\n const children = expandedLayers.includes(layer)\n ? [\n ...layer.children.filter((c) => {\n return !isItemHidden(c);\n }),\n ]\n : [];\n\n if (renderItem) {\n return renderItem(layer, this.onInputClick, this.onToggle);\n }\n\n return (\n <div className={getParentClassName()} key={layer.key}>\n <div\n className={`rs-layer-tree-item ${layer.visible ? 'rs-visible' : ''}`}\n style={{\n paddingLeft: `${padding * level}px`,\n }}\n >\n {renderItemContent\n ? renderItemContent(layer, this)\n : this.renderItemContent(layer)}\n </div>\n {renderBeforeItem && renderBeforeItem(layer, level, this)}\n {[...children].reverse().map((child) => {\n return this.renderItem(child, level + 1);\n })}\n {renderAfterItem && renderAfterItem(layer, level, this)}\n </div>\n );\n }\n\n renderTree() {\n const { isItemHidden } = this.props;\n const { layers } = this.state;\n\n if (!layers) {\n return null;\n }\n\n return (\n <>\n {layers\n .filter((l) => {\n return !isItemHidden(l);\n })\n .reverse()\n .map((l) => {\n return this.renderItem(l, 0);\n })}\n </>\n );\n }\n\n render() {\n const { className } = this.props;\n return <div className={className}>{this.renderTree()}</div>;\n }\n}\n\nLayerTree.propTypes = propTypes;\nLayerTree.defaultProps = defaultProps;\n\nexport default LayerTree;\n"],"names":["const","super","this","let"],"mappings":"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"}
|
|
@@ -133,6 +133,12 @@ describe('LayerTree', function () {
|
|
|
133
133
|
});
|
|
134
134
|
});
|
|
135
135
|
|
|
136
|
+
test('when collapseInvisibleLayers is true.', function () {
|
|
137
|
+
renderLayerTree(layers, {
|
|
138
|
+
collapseInvisibleLayers: true,
|
|
139
|
+
});
|
|
140
|
+
});
|
|
141
|
+
|
|
136
142
|
test('when items are always expanded', function () {
|
|
137
143
|
var newLayers = [
|
|
138
144
|
new Layer({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LayerTree.test.js","sources":["../../../src/components/LayerTree/LayerTree.test.js"],"sourcesContent":["/* eslint-disable react/jsx-props-no-spreading */\nimport React from 'react';\nimport { configure, mount } from 'enzyme';\nimport Adapter from 'enzyme-adapter-react-16';\nimport 'jest-canvas-mock';\nimport renderer from 'react-test-renderer';\nimport { Layer } from 'mobility-toolbox-js/ol';\nimport LayerTree from './LayerTree';\nimport LayerService from '../../LayerService';\n\nconfigure({ adapter: new Adapter() });\n\nconst mountLayerTree = (layers) => {\n const layerService = new LayerService(layers);\n return mount(<LayerTree layerService={layerService} />);\n};\n\nconst renderLayerTree = (layers, props) => {\n const layerService = new LayerService(layers);\n const component = renderer.create(\n <LayerTree layerService={layerService} {...(props || {})} />,\n );\n const tree = component.toJSON();\n expect(tree).toMatchSnapshot();\n};\n\nconst classItem = '.rs-layer-tree-item';\nconst toggleItem = '.rs-layer-tree-toggle';\n\ndescribe('LayerTree', () => {\n let layers;\n\n beforeEach(() => {\n layers = [\n new Layer({\n name: 'root',\n }),\n new Layer({\n name: '1',\n children: [\n new Layer({\n name: '1-1',\n properties: {\n radioGroup: 'radio',\n },\n }),\n new Layer({\n name: '1-2',\n properties: {\n radioGroup: 'radio',\n },\n visible: false,\n children: [\n new Layer({\n name: '1-2-1',\n visible: false,\n }),\n new Layer({\n name: '1-2-2',\n visible: false,\n }),\n new Layer({\n name: '2',\n visible: false,\n }),\n ],\n }),\n ],\n }),\n ];\n });\n describe('matches snapshots', () => {\n test('using default properties.', () => {\n renderLayerTree(layers);\n });\n\n test('when no layers.', () => {\n const layerService = new LayerService();\n const component = renderer.create(\n <LayerTree layerService={layerService} />,\n );\n const tree = component.toJSON();\n expect(tree).toMatchSnapshot();\n });\n\n test('when renderItem is used.', () => {\n renderLayerTree(layers, {\n renderItem: (item) => {\n const { name } = item;\n return <div key={name}>{name}</div>;\n },\n });\n });\n\n test('when classNames are used.', () => {\n renderLayerTree(layers, { className: 'foo' });\n });\n\n test('when an item is hidden.', () => {\n renderLayerTree(layers, {\n isItemHidden: (item) => {\n return !!item.children.length;\n },\n });\n });\n\n test('when an item is hidden (different layer tree levels)', () => {\n renderLayerTree(layers, {\n isItemHidden: (item) => {\n return item.isBaseLayer || item.get('hideInLegend');\n },\n });\n });\n\n test('when an item use renderBeforeItem.', () => {\n renderLayerTree(layers, {\n renderBeforeItem: (layer, level) => {\n const { name } = layer;\n return (\n <div>\n Render name before item: {name}, level: {level}\n </div>\n );\n },\n });\n });\n\n test('when an item use renderAfterItem.', () => {\n renderLayerTree(layers, {\n renderAfterItem: (layer, level) => {\n const { name } = layer;\n return (\n <div>\n Render name after item: {name}, level: {level}\n </div>\n );\n },\n });\n });\n\n test('when items are always expanded', () => {\n const newLayers = [\n new Layer({\n name: 'Expanded layer 1 (because of level 1)',\n visible: true,\n children: [\n new Layer({\n name: 'Expanded layer 1.1 (because of isAlwaysExpanded=true)',\n visible: true,\n properties: {\n isAlwaysExpanded: true,\n },\n children: [\n new Layer({\n name: 'Expanded layer 1.1.1 (because of isAlwaysExpanded=true)',\n visible: true,\n properties: {\n isAlwaysExpanded: true,\n },\n children: [\n new Layer({\n name: 'Visible layer 1.1.1.1 (as parent is expanded)',\n visible: true,\n }),\n ],\n }),\n new Layer({\n name: 'Hidden layer 1.1.1 (because of hidden=true)',\n visible: true,\n properties: {\n hideInLegend: true,\n },\n children: [\n new Layer({\n name: 'Invisible layer 1.1.1.1 (as parent is hidden)',\n visible: true,\n }),\n ],\n }),\n ],\n }),\n new Layer({\n name: 'Expanded layer 1.2 (because of isAlwaysExpanded=true)',\n visible: true,\n properties: {\n isAlwaysExpanded: true,\n },\n children: [\n new Layer({\n name: 'Visible layer 1.2.1 (as parent is expanded)',\n visible: true,\n children: [\n new Layer({\n name: 'Invisible layer 1.2.1.1 (as parent isAlwaysExpanded=false)',\n visible: true,\n }),\n ],\n }),\n ],\n }),\n ],\n }),\n new Layer({\n name: 'Expanded layer 2 (because of level 1)',\n visible: true,\n children: [\n new Layer({\n name: 'Visible layer 2.1 (as parent is expanded)',\n visible: true,\n children: [\n new Layer({\n name: 'Invisible layer 2.1.1 (as parent isAlwaysExpanded=false)',\n visible: true,\n properties: {\n isAlwaysExpanded: true,\n },\n children: [\n new Layer({\n name: 'Invisible layer 2.1.1.1 (as parent is not visible)',\n visible: true,\n }),\n ],\n }),\n ],\n }),\n new Layer({\n name: 'Visible layer 2.2 (as parent is expanded)',\n visible: true,\n children: [\n new Layer({\n name: 'Invisible layer 2.2.1 (as parent isAlwaysExpanded=false)',\n visible: true,\n children: [\n new Layer({\n name: 'Invisible layer 2.2.1.1 (as parent is not visible)',\n visible: true,\n }),\n ],\n }),\n ],\n }),\n ],\n }),\n ];\n\n renderLayerTree(newLayers, {\n isItemHidden: (item) => {\n return item.get('hideInLegend');\n },\n });\n });\n });\n\n describe('triggers onInputClick', () => {\n let wrapper;\n let spy;\n let spy2;\n const newLayers = [\n new Layer({\n name: 'foo',\n }),\n ];\n const expectCalled = () => {\n expect(spy).toHaveBeenCalledTimes(1);\n expect(spy2).toHaveBeenCalledTimes(0);\n expect(spy.mock.calls[0][0].name).toBe('foo');\n };\n\n beforeEach(() => {\n spy = jest.spyOn(LayerTree.prototype, 'onInputClick');\n spy2 = jest.spyOn(LayerTree.prototype, 'onToggle');\n wrapper = mountLayerTree(newLayers);\n });\n\n afterEach(() => {\n spy.mockRestore();\n spy2.mockRestore();\n });\n\n test('when we press enter with keyboard on the label element.', () => {\n wrapper.find('label').at(0).simulate('keypress', { which: 13 });\n expectCalled();\n });\n\n test('when we click on input.', () => {\n wrapper.find('input').at(0).simulate('click');\n expectCalled();\n });\n\n test('when we click on toggle button (label+arrow) of an item without children.', () => {\n wrapper.find(classItem).first().childAt(1).simulate('click');\n expectCalled();\n });\n });\n\n describe('triggers onToggle', () => {\n let wrapper;\n let spy;\n const newLayers = [\n new Layer({\n name: '1',\n children: [\n new Layer({\n name: '1-1',\n }),\n new Layer({\n name: '1-1-1',\n }),\n ],\n }),\n ];\n\n const expectCalled = () => {\n expect(spy).toHaveBeenCalledTimes(1);\n };\n\n beforeEach(() => {\n spy = jest.spyOn(LayerTree.prototype, 'onToggle');\n wrapper = mountLayerTree(newLayers);\n });\n\n test('when we click on toggle button (label+arrow) of an item with children', () => {\n wrapper.find(toggleItem).first().simulate('click');\n expectCalled();\n });\n });\n});\n"],"names":["const","let"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"LayerTree.test.js","sources":["../../../src/components/LayerTree/LayerTree.test.js"],"sourcesContent":["/* eslint-disable react/jsx-props-no-spreading */\nimport React from 'react';\nimport { configure, mount } from 'enzyme';\nimport Adapter from 'enzyme-adapter-react-16';\nimport 'jest-canvas-mock';\nimport renderer from 'react-test-renderer';\nimport { Layer } from 'mobility-toolbox-js/ol';\nimport LayerTree from './LayerTree';\nimport LayerService from '../../LayerService';\n\nconfigure({ adapter: new Adapter() });\n\nconst mountLayerTree = (layers) => {\n const layerService = new LayerService(layers);\n return mount(<LayerTree layerService={layerService} />);\n};\n\nconst renderLayerTree = (layers, props) => {\n const layerService = new LayerService(layers);\n const component = renderer.create(\n <LayerTree layerService={layerService} {...(props || {})} />,\n );\n const tree = component.toJSON();\n expect(tree).toMatchSnapshot();\n};\n\nconst classItem = '.rs-layer-tree-item';\nconst toggleItem = '.rs-layer-tree-toggle';\n\ndescribe('LayerTree', () => {\n let layers;\n\n beforeEach(() => {\n layers = [\n new Layer({\n name: 'root',\n }),\n new Layer({\n name: '1',\n children: [\n new Layer({\n name: '1-1',\n properties: {\n radioGroup: 'radio',\n },\n }),\n new Layer({\n name: '1-2',\n properties: {\n radioGroup: 'radio',\n },\n visible: false,\n children: [\n new Layer({\n name: '1-2-1',\n visible: false,\n }),\n new Layer({\n name: '1-2-2',\n visible: false,\n }),\n new Layer({\n name: '2',\n visible: false,\n }),\n ],\n }),\n ],\n }),\n ];\n });\n describe('matches snapshots', () => {\n test('using default properties.', () => {\n renderLayerTree(layers);\n });\n\n test('when no layers.', () => {\n const layerService = new LayerService();\n const component = renderer.create(\n <LayerTree layerService={layerService} />,\n );\n const tree = component.toJSON();\n expect(tree).toMatchSnapshot();\n });\n\n test('when renderItem is used.', () => {\n renderLayerTree(layers, {\n renderItem: (item) => {\n const { name } = item;\n return <div key={name}>{name}</div>;\n },\n });\n });\n\n test('when classNames are used.', () => {\n renderLayerTree(layers, { className: 'foo' });\n });\n\n test('when an item is hidden.', () => {\n renderLayerTree(layers, {\n isItemHidden: (item) => {\n return !!item.children.length;\n },\n });\n });\n\n test('when an item is hidden (different layer tree levels)', () => {\n renderLayerTree(layers, {\n isItemHidden: (item) => {\n return item.isBaseLayer || item.get('hideInLegend');\n },\n });\n });\n\n test('when an item use renderBeforeItem.', () => {\n renderLayerTree(layers, {\n renderBeforeItem: (layer, level) => {\n const { name } = layer;\n return (\n <div>\n Render name before item: {name}, level: {level}\n </div>\n );\n },\n });\n });\n\n test('when an item use renderAfterItem.', () => {\n renderLayerTree(layers, {\n renderAfterItem: (layer, level) => {\n const { name } = layer;\n return (\n <div>\n Render name after item: {name}, level: {level}\n </div>\n );\n },\n });\n });\n\n test('when collapseInvisibleLayers is true.', () => {\n renderLayerTree(layers, {\n collapseInvisibleLayers: true,\n });\n });\n\n test('when items are always expanded', () => {\n const newLayers = [\n new Layer({\n name: 'Expanded layer 1 (because of level 1)',\n visible: true,\n children: [\n new Layer({\n name: 'Expanded layer 1.1 (because of isAlwaysExpanded=true)',\n visible: true,\n properties: {\n isAlwaysExpanded: true,\n },\n children: [\n new Layer({\n name: 'Expanded layer 1.1.1 (because of isAlwaysExpanded=true)',\n visible: true,\n properties: {\n isAlwaysExpanded: true,\n },\n children: [\n new Layer({\n name: 'Visible layer 1.1.1.1 (as parent is expanded)',\n visible: true,\n }),\n ],\n }),\n new Layer({\n name: 'Hidden layer 1.1.1 (because of hidden=true)',\n visible: true,\n properties: {\n hideInLegend: true,\n },\n children: [\n new Layer({\n name: 'Invisible layer 1.1.1.1 (as parent is hidden)',\n visible: true,\n }),\n ],\n }),\n ],\n }),\n new Layer({\n name: 'Expanded layer 1.2 (because of isAlwaysExpanded=true)',\n visible: true,\n properties: {\n isAlwaysExpanded: true,\n },\n children: [\n new Layer({\n name: 'Visible layer 1.2.1 (as parent is expanded)',\n visible: true,\n children: [\n new Layer({\n name: 'Invisible layer 1.2.1.1 (as parent isAlwaysExpanded=false)',\n visible: true,\n }),\n ],\n }),\n ],\n }),\n ],\n }),\n new Layer({\n name: 'Expanded layer 2 (because of level 1)',\n visible: true,\n children: [\n new Layer({\n name: 'Visible layer 2.1 (as parent is expanded)',\n visible: true,\n children: [\n new Layer({\n name: 'Invisible layer 2.1.1 (as parent isAlwaysExpanded=false)',\n visible: true,\n properties: {\n isAlwaysExpanded: true,\n },\n children: [\n new Layer({\n name: 'Invisible layer 2.1.1.1 (as parent is not visible)',\n visible: true,\n }),\n ],\n }),\n ],\n }),\n new Layer({\n name: 'Visible layer 2.2 (as parent is expanded)',\n visible: true,\n children: [\n new Layer({\n name: 'Invisible layer 2.2.1 (as parent isAlwaysExpanded=false)',\n visible: true,\n children: [\n new Layer({\n name: 'Invisible layer 2.2.1.1 (as parent is not visible)',\n visible: true,\n }),\n ],\n }),\n ],\n }),\n ],\n }),\n ];\n\n renderLayerTree(newLayers, {\n isItemHidden: (item) => {\n return item.get('hideInLegend');\n },\n });\n });\n });\n\n describe('triggers onInputClick', () => {\n let wrapper;\n let spy;\n let spy2;\n const newLayers = [\n new Layer({\n name: 'foo',\n }),\n ];\n const expectCalled = () => {\n expect(spy).toHaveBeenCalledTimes(1);\n expect(spy2).toHaveBeenCalledTimes(0);\n expect(spy.mock.calls[0][0].name).toBe('foo');\n };\n\n beforeEach(() => {\n spy = jest.spyOn(LayerTree.prototype, 'onInputClick');\n spy2 = jest.spyOn(LayerTree.prototype, 'onToggle');\n wrapper = mountLayerTree(newLayers);\n });\n\n afterEach(() => {\n spy.mockRestore();\n spy2.mockRestore();\n });\n\n test('when we press enter with keyboard on the label element.', () => {\n wrapper.find('label').at(0).simulate('keypress', { which: 13 });\n expectCalled();\n });\n\n test('when we click on input.', () => {\n wrapper.find('input').at(0).simulate('click');\n expectCalled();\n });\n\n test('when we click on toggle button (label+arrow) of an item without children.', () => {\n wrapper.find(classItem).first().childAt(1).simulate('click');\n expectCalled();\n });\n });\n\n describe('triggers onToggle', () => {\n let wrapper;\n let spy;\n const newLayers = [\n new Layer({\n name: '1',\n children: [\n new Layer({\n name: '1-1',\n }),\n new Layer({\n name: '1-1-1',\n }),\n ],\n }),\n ];\n\n const expectCalled = () => {\n expect(spy).toHaveBeenCalledTimes(1);\n };\n\n beforeEach(() => {\n spy = jest.spyOn(LayerTree.prototype, 'onToggle');\n wrapper = mountLayerTree(newLayers);\n });\n\n test('when we click on toggle button (label+arrow) of an item with children', () => {\n wrapper.find(toggleItem).first().simulate('click');\n expectCalled();\n });\n });\n});\n"],"names":["const","let"],"mappings":"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"}
|