@appbaseio/reactivesearch-vue 1.16.0-alpha.5 → 1.16.0-alpha.50
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/dist/@appbaseio/reactivesearch-vue.umd.js +11245 -9254
- package/dist/@appbaseio/reactivesearch-vue.umd.js.map +1 -1
- package/dist/@appbaseio/reactivesearch-vue.umd.min.js +5 -5
- package/dist/@appbaseio/reactivesearch-vue.umd.min.js.map +1 -1
- package/dist/cjs/Button-10e5cf51.js +68 -0
- package/dist/cjs/{DownShift-b09da079.js → CancelSvg-82021d23.js} +60 -16
- package/dist/cjs/Card-4b915733.js +30 -0
- package/dist/cjs/{ComponentWrapper-5a0a8849.js → ComponentWrapper-7302fe1a.js} +40 -21
- package/dist/cjs/{Container-f84e72fc.js → Container-8a08d663.js} +3 -11
- package/dist/cjs/DataSearch-deda2e96.js +2171 -0
- package/dist/cjs/DataSearch.js +18 -2151
- package/dist/cjs/{DropDown-c66be1a8.js → DropDown-16a2a728.js} +80 -95
- package/dist/cjs/DynamicRangeSlider.js +107 -43
- package/dist/cjs/Flex-699639d2.js +52 -0
- package/dist/cjs/FormControlList-73497794.js +47 -0
- package/dist/cjs/Input-64087a69.js +79 -0
- package/dist/cjs/ListItem-933c27e4.js +46 -0
- package/dist/cjs/MultiDropdownList.js +102 -68
- package/dist/cjs/MultiList.js +80 -50
- package/dist/cjs/MultiRange.js +21 -16
- package/dist/cjs/{Pagination-91df3b77.js → Pagination-e0654529.js} +4 -3
- package/dist/cjs/RangeInput.js +29 -45
- package/dist/cjs/RangeSlider.js +32 -30
- package/dist/cjs/ReactiveBase.js +55 -34
- package/dist/cjs/ReactiveComponent.js +75 -62
- package/dist/cjs/ReactiveGoogleMap.js +326 -235
- package/dist/cjs/ReactiveList.js +188 -241
- package/dist/cjs/ResultCard.js +8 -6
- package/dist/cjs/ResultList.js +8 -6
- package/dist/cjs/SelectedFilters.js +27 -12
- package/dist/cjs/SingleDropdownList.js +88 -60
- package/dist/cjs/SingleList.js +53 -35
- package/dist/cjs/SingleRange.js +18 -13
- package/dist/cjs/StateProvider.js +11 -7
- package/dist/cjs/{Title-e9beb554.js → Title-39765ee6.js} +3 -11
- package/dist/cjs/ToggleButton.js +35 -16
- package/dist/cjs/{_rollupPluginBabelHelpers-280a574c.js → _rollupPluginBabelHelpers-4abdbfff.js} +11 -1
- package/dist/cjs/{index-e0583d76.js → index-d44a0a21.js} +87 -13
- package/dist/cjs/index.js +30 -25
- package/dist/cjs/initReactivesearch.js +177 -103
- package/dist/cjs/install-d0645b5f.js +1244 -0
- package/dist/cjs/install.js +41 -44
- package/dist/cjs/ssr-c333c82c.js +39 -0
- package/dist/cjs/{utils-d1ea9f95.js → utils-23afb20b.js} +2 -2
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/{vueTypes-c21f265b.js → vueTypes-6de9d2a9.js} +9 -4
- package/dist/es/Button-8b211174.js +59 -0
- package/dist/es/{DownShift-d8f2500f.js → CancelSvg-4d9e0857.js} +56 -17
- package/dist/es/Card-04b3c33e.js +23 -0
- package/dist/es/{ComponentWrapper-d0b21b95.js → ComponentWrapper-bbb717bc.js} +40 -21
- package/dist/es/Container-4383c6f0.js +10 -0
- package/dist/es/DataSearch-7a8a9368.js +2158 -0
- package/dist/es/DataSearch.js +17 -2150
- package/dist/es/{DropDown-5dbd69c2.js → DropDown-7639f223.js} +79 -94
- package/dist/es/DynamicRangeSlider.js +107 -43
- package/dist/es/Flex-aac91505.js +47 -0
- package/dist/es/FormControlList-fe389a2e.js +40 -0
- package/dist/es/Input-d1bb4868.js +71 -0
- package/dist/es/ListItem-bdb6d53d.js +39 -0
- package/dist/es/MultiDropdownList.js +102 -68
- package/dist/es/MultiList.js +80 -50
- package/dist/es/MultiRange.js +21 -16
- package/dist/es/{Pagination-800af44f.js → Pagination-3c50d4ba.js} +4 -3
- package/dist/es/RangeInput.js +29 -45
- package/dist/es/RangeSlider.js +32 -30
- package/dist/es/ReactiveBase.js +55 -34
- package/dist/es/ReactiveComponent.js +75 -62
- package/dist/es/ReactiveGoogleMap.js +326 -235
- package/dist/es/ReactiveList.js +188 -241
- package/dist/es/ResultCard.js +8 -6
- package/dist/es/ResultList.js +8 -6
- package/dist/es/SelectedFilters.js +27 -12
- package/dist/es/SingleDropdownList.js +88 -60
- package/dist/es/SingleList.js +53 -35
- package/dist/es/SingleRange.js +18 -13
- package/dist/es/StateProvider.js +11 -7
- package/dist/es/Title-579f8d6c.js +10 -0
- package/dist/es/ToggleButton.js +35 -16
- package/dist/es/{_rollupPluginBabelHelpers-c9fbe19f.js → _rollupPluginBabelHelpers-ecf6c03c.js} +11 -1
- package/dist/es/{index-1fe91a0a.js → index-5daa8276.js} +84 -14
- package/dist/es/index.js +26 -22
- package/dist/es/initReactivesearch.js +178 -104
- package/dist/es/install-183f5d19.js +1237 -0
- package/dist/es/install.js +39 -46
- package/dist/es/ssr-e3196de1.js +33 -0
- package/dist/es/{utils-ce3d86fd.js → utils-3a32e13f.js} +2 -2
- package/dist/es/version.js +1 -1
- package/dist/es/{vueTypes-98d938a9.js → vueTypes-9326e0be.js} +9 -4
- package/package.json +6 -4
- package/dist/cjs/Button-78d8bc26.js +0 -146
- package/dist/cjs/Card-b4af314f.js +0 -58
- package/dist/cjs/Flex-737c55be.js +0 -160
- package/dist/cjs/FormControlList-08dfb28e.js +0 -105
- package/dist/cjs/Input-643d02a7.js +0 -178
- package/dist/cjs/ListItem-0c58c5d2.js +0 -84
- package/dist/cjs/ssr-b7a729f9.js +0 -47
- package/dist/es/Button-6c71c66e.js +0 -137
- package/dist/es/Card-ecf70ba1.js +0 -51
- package/dist/es/Container-f5efec9e.js +0 -18
- package/dist/es/Flex-40a74d8a.js +0 -155
- package/dist/es/FormControlList-b96aebef.js +0 -98
- package/dist/es/Input-dfd9dd40.js +0 -170
- package/dist/es/ListItem-da73bc7d.js +0 -77
- package/dist/es/Title-22c2f3bf.js +0 -18
- package/dist/es/ssr-2f57791d.js +0 -41
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
import { Actions, helper } from '@appbaseio/reactivecore';
|
|
2
|
-
import { a as _extends,
|
|
2
|
+
import { a as _extends, d as _inheritsLoose, _ as _taggedTemplateLiteralLoose, b as _objectWithoutPropertiesLoose, c as _toPropertyKey } from './_rollupPluginBabelHelpers-ecf6c03c.js';
|
|
3
3
|
import VueTypes from 'vue-types';
|
|
4
4
|
import { componentTypes } from '@appbaseio/reactivecore/lib/utils/constants';
|
|
5
5
|
import 'emotion';
|
|
6
6
|
import styled, { css } from '@appbaseio/vue-emotion';
|
|
7
7
|
import 'polished';
|
|
8
|
-
import './Button-
|
|
9
|
-
import { t as types } from './vueTypes-
|
|
10
|
-
import { P as Pagination } from './Pagination-
|
|
8
|
+
import './Button-8b211174.js';
|
|
9
|
+
import { t as types } from './vueTypes-9326e0be.js';
|
|
10
|
+
import { P as Pagination } from './Pagination-3c50d4ba.js';
|
|
11
11
|
import '@appbaseio/reactivecore/lib/utils/transform';
|
|
12
12
|
import 'redux';
|
|
13
|
-
import { h as hasCustomRenderer, i as isQueryIdentical, g as getComponent, a as isFunction, c as connect } from './index-
|
|
14
|
-
import { C as ComponentWrapper } from './ComponentWrapper-
|
|
13
|
+
import { h as hasCustomRenderer, i as isQueryIdentical, g as getComponent, a as isFunction, c as connect } from './index-5daa8276.js';
|
|
14
|
+
import { C as ComponentWrapper } from './ComponentWrapper-bbb717bc.js';
|
|
15
15
|
import _mergeJSXProps from '@vue/babel-helper-vue-jsx-merge-props';
|
|
16
|
-
import { C as Checkbox } from './FormControlList-
|
|
16
|
+
import { C as Checkbox } from './FormControlList-fe389a2e.js';
|
|
17
17
|
import * as GmapMapFull from 'gmap-vue';
|
|
18
18
|
import Map from 'gmap-vue/dist/components-implementation/map';
|
|
19
19
|
import geohash from 'ngeohash';
|
|
20
20
|
import GmapCluster from 'gmap-vue/dist/components/cluster';
|
|
21
|
-
import Marker from 'gmap-vue/dist/components/marker';
|
|
22
21
|
import InfoWindow from 'gmap-vue/dist/components-implementation/info-window';
|
|
22
|
+
import Marker from 'gmap-vue/dist/components/marker';
|
|
23
23
|
import MapElementMixin from 'gmap-vue/dist/mixins/map-element';
|
|
24
24
|
|
|
25
25
|
var setStreaming = Actions.setStreaming,
|
|
@@ -68,7 +68,7 @@ function withDistinctLat(loc, count) {
|
|
|
68
68
|
|
|
69
69
|
var suffix = 1 / Math.pow(10, noiseFactor) * count;
|
|
70
70
|
|
|
71
|
-
var location = _extends(
|
|
71
|
+
var location = _extends({}, loc, {
|
|
72
72
|
lat: parseFloat((loc.lat + suffix).toFixed(length))
|
|
73
73
|
});
|
|
74
74
|
|
|
@@ -120,14 +120,13 @@ var ReactiveMap = {
|
|
|
120
120
|
react: types.react,
|
|
121
121
|
size: types.number,
|
|
122
122
|
sortBy: types.sortBy,
|
|
123
|
-
URLParams:
|
|
124
|
-
autoCenter:
|
|
123
|
+
URLParams: VueTypes.bool,
|
|
124
|
+
autoCenter: VueTypes.bool,
|
|
125
125
|
getMapRef: VueTypes.func.isRequired,
|
|
126
126
|
center: types.location,
|
|
127
127
|
defaultCenter: types.location,
|
|
128
128
|
defaultPin: types.string,
|
|
129
129
|
defaultZoom: VueTypes.number.def(13),
|
|
130
|
-
markerProps: types.props,
|
|
131
130
|
defaultQuery: types.func,
|
|
132
131
|
innerClass: types.style,
|
|
133
132
|
loader: types.title,
|
|
@@ -136,19 +135,19 @@ var ReactiveMap = {
|
|
|
136
135
|
renderError: types.title,
|
|
137
136
|
pages: VueTypes.number.def(5),
|
|
138
137
|
currentPage: VueTypes.number.def(0),
|
|
139
|
-
pagination:
|
|
140
|
-
showMarkers:
|
|
141
|
-
defaultSearchAsMove:
|
|
142
|
-
showSearchAsMove:
|
|
138
|
+
pagination: VueTypes.bool,
|
|
139
|
+
showMarkers: VueTypes.bool,
|
|
140
|
+
defaultSearchAsMove: VueTypes.bool,
|
|
141
|
+
showSearchAsMove: VueTypes.bool,
|
|
143
142
|
defaultRadius: types.number,
|
|
144
143
|
unit: types.string,
|
|
145
|
-
autoClosePopover:
|
|
144
|
+
autoClosePopover: VueTypes.bool,
|
|
146
145
|
renderMap: VueTypes.func.isRequired,
|
|
147
146
|
renderPopover: VueTypes.func,
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
onIdle: types.func
|
|
147
|
+
calculateMarkers: VueTypes.func,
|
|
148
|
+
searchAsMoveLabel: VueTypes.string.def('Search as I move the map')
|
|
151
149
|
},
|
|
150
|
+
preserveCenter: false,
|
|
152
151
|
data: function data() {
|
|
153
152
|
var props = this.$props;
|
|
154
153
|
var currentPageState = 0;
|
|
@@ -162,8 +161,8 @@ var ReactiveMap = {
|
|
|
162
161
|
zoom: props.defaultZoom,
|
|
163
162
|
searchAsMove: props.defaultSearchAsMove,
|
|
164
163
|
currentPageState: currentPageState,
|
|
165
|
-
|
|
166
|
-
|
|
164
|
+
mapBoxBounds: null,
|
|
165
|
+
markersData: null
|
|
167
166
|
};
|
|
168
167
|
return this.__state;
|
|
169
168
|
},
|
|
@@ -175,7 +174,7 @@ var ReactiveMap = {
|
|
|
175
174
|
var _this$getAllData = this.getAllData(),
|
|
176
175
|
resultsToRender = _this$getAllData.resultsToRender;
|
|
177
176
|
|
|
178
|
-
return _extends(
|
|
177
|
+
return _extends({}, getResultStats(this), {
|
|
179
178
|
currentPage: this.currentPageState,
|
|
180
179
|
displayedResults: resultsToRender.length
|
|
181
180
|
});
|
|
@@ -210,16 +209,19 @@ var ReactiveMap = {
|
|
|
210
209
|
var queryOptions = getOptionsFromQuery(this.$defaultQuery);
|
|
211
210
|
|
|
212
211
|
if (queryOptions) {
|
|
213
|
-
options = _extends(
|
|
212
|
+
options = _extends({}, options, getOptionsFromQuery(this.$defaultQuery));
|
|
214
213
|
} // Update calculated default query in store
|
|
215
214
|
|
|
216
215
|
|
|
217
|
-
this.setQueryOptions(this.$props.componentId, options,
|
|
216
|
+
this.setQueryOptions(this.$props.componentId, options, false);
|
|
218
217
|
var persistMapQuery = true;
|
|
219
218
|
var forceExecute = true; // Update default query to include the geo bounding box query
|
|
220
219
|
|
|
221
220
|
this.setDefaultQueryForRSAPI();
|
|
222
|
-
|
|
221
|
+
var meta = {
|
|
222
|
+
mapBoxBounds: this.mapBoxBounds
|
|
223
|
+
};
|
|
224
|
+
this.setMapData(this.componentId, query, persistMapQuery, forceExecute, meta);
|
|
223
225
|
this.currentPageState = 0;
|
|
224
226
|
this.from = 0;
|
|
225
227
|
}
|
|
@@ -250,7 +252,45 @@ var ReactiveMap = {
|
|
|
250
252
|
}
|
|
251
253
|
},
|
|
252
254
|
rawData: function rawData(newVal, oldVal) {
|
|
255
|
+
var _this = this;
|
|
256
|
+
|
|
253
257
|
if (!isEqual(newVal, oldVal)) {
|
|
258
|
+
var promotedResults = this.promotedResults,
|
|
259
|
+
hits = this.hits;
|
|
260
|
+
var results = parseHits(hits) || [];
|
|
261
|
+
var parsedPromotedResults = parseHits(promotedResults) || [];
|
|
262
|
+
var filteredResults = results;
|
|
263
|
+
|
|
264
|
+
if (parsedPromotedResults.length) {
|
|
265
|
+
var ids = parsedPromotedResults.map(function (item) {
|
|
266
|
+
return item._id;
|
|
267
|
+
}).filter(Boolean);
|
|
268
|
+
|
|
269
|
+
if (ids) {
|
|
270
|
+
filteredResults = filteredResults.filter(function (item) {
|
|
271
|
+
return !ids.includes(item._id);
|
|
272
|
+
});
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
filteredResults = [].concat(parsedPromotedResults, filteredResults);
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
filteredResults = filteredResults.filter(function (item) {
|
|
279
|
+
return !!item[_this.dataField];
|
|
280
|
+
}).map(function (item) {
|
|
281
|
+
var _extends2;
|
|
282
|
+
|
|
283
|
+
return _extends({}, item, (_extends2 = {}, _extends2[_this.dataField] = getLocationObject(item[_this.dataField]), _extends2));
|
|
284
|
+
});
|
|
285
|
+
this.filteredResults = this.addNoise(filteredResults);
|
|
286
|
+
|
|
287
|
+
if (this.calculateMarkers) {
|
|
288
|
+
this.markersData = this.calculateMarkers({
|
|
289
|
+
data: this.filteredResults,
|
|
290
|
+
rawData: this.rawData
|
|
291
|
+
}) || [];
|
|
292
|
+
}
|
|
293
|
+
|
|
254
294
|
this.$emit('data', this.getData());
|
|
255
295
|
}
|
|
256
296
|
},
|
|
@@ -288,18 +328,18 @@ var ReactiveMap = {
|
|
|
288
328
|
return this.parseLocation(MAP_CENTER);
|
|
289
329
|
},
|
|
290
330
|
addNoise: function addNoise(hits) {
|
|
291
|
-
var
|
|
331
|
+
var _this2 = this;
|
|
292
332
|
|
|
293
333
|
var hitMap = {};
|
|
294
334
|
var updatedHits = [];
|
|
295
335
|
hits.forEach(function (item) {
|
|
296
336
|
var updatedItem = _extends({}, item);
|
|
297
337
|
|
|
298
|
-
var location =
|
|
338
|
+
var location = _this2.parseLocation(item[_this2.dataField]);
|
|
299
339
|
|
|
300
340
|
var key = JSON.stringify(location);
|
|
301
341
|
var count = hitMap[key] || 0;
|
|
302
|
-
updatedItem[
|
|
342
|
+
updatedItem[_this2.dataField] = count ? withDistinctLat(location, count) : location;
|
|
303
343
|
updatedHits = [].concat(updatedHits, [updatedItem]);
|
|
304
344
|
hitMap[key] = count + 1;
|
|
305
345
|
});
|
|
@@ -313,10 +353,10 @@ var ReactiveMap = {
|
|
|
313
353
|
return null;
|
|
314
354
|
},
|
|
315
355
|
getHitsCenter: function getHitsCenter(hits) {
|
|
316
|
-
var
|
|
356
|
+
var _this3 = this;
|
|
317
357
|
|
|
318
358
|
var data = hits.map(function (hit) {
|
|
319
|
-
return hit[
|
|
359
|
+
return hit[_this3.dataField];
|
|
320
360
|
});
|
|
321
361
|
|
|
322
362
|
if (data.length) {
|
|
@@ -357,7 +397,7 @@ var ReactiveMap = {
|
|
|
357
397
|
return false;
|
|
358
398
|
},
|
|
359
399
|
getCenter: function getCenter(hits) {
|
|
360
|
-
var
|
|
400
|
+
var _this4 = this;
|
|
361
401
|
|
|
362
402
|
if (this.center) {
|
|
363
403
|
return this.parseLocation(this.center);
|
|
@@ -365,10 +405,10 @@ var ReactiveMap = {
|
|
|
365
405
|
|
|
366
406
|
var mapRef = this.getMapRef();
|
|
367
407
|
|
|
368
|
-
if (mapRef && typeof mapRef.getCenter === 'function' && this.preserveCenter) {
|
|
408
|
+
if (mapRef && typeof mapRef.getCenter === 'function' && this.$options.preserveCenter) {
|
|
369
409
|
var currentCenter = mapRef.getCenter();
|
|
370
410
|
setTimeout(function () {
|
|
371
|
-
|
|
411
|
+
_this4.$options.preserveCenter = false;
|
|
372
412
|
}, 100);
|
|
373
413
|
return this.parseLocation({
|
|
374
414
|
lat: currentCenter.lat(),
|
|
@@ -388,27 +428,31 @@ var ReactiveMap = {
|
|
|
388
428
|
},
|
|
389
429
|
handleZoomChange: function handleZoomChange(zoom) {
|
|
390
430
|
if (zoom) {
|
|
431
|
+
var prevZoom = this.zoom;
|
|
432
|
+
|
|
391
433
|
if (this.searchAsMove) {
|
|
392
434
|
this.zoom = zoom;
|
|
393
|
-
this.preserveCenter = true;
|
|
435
|
+
this.$options.preserveCenter = true;
|
|
394
436
|
this.setGeoQuery(true);
|
|
395
437
|
} else {
|
|
396
438
|
this.zoom = zoom;
|
|
397
439
|
}
|
|
398
440
|
|
|
399
|
-
if (
|
|
441
|
+
if (prevZoom !== zoom) {
|
|
442
|
+
this.$emit('zoom-changed', zoom);
|
|
443
|
+
}
|
|
400
444
|
}
|
|
401
445
|
},
|
|
402
446
|
handleOnDragEnd: function handleOnDragEnd() {
|
|
403
447
|
if (this.searchAsMove) {
|
|
404
|
-
this.preserveCenter = true;
|
|
448
|
+
this.$options.preserveCenter = true;
|
|
405
449
|
this.setGeoQuery(true);
|
|
406
450
|
}
|
|
407
451
|
|
|
408
|
-
|
|
452
|
+
this.$emit('drag-end');
|
|
409
453
|
},
|
|
410
454
|
handlePreserveCenter: function handlePreserveCenter(preserveCenter) {
|
|
411
|
-
this.preserveCenter = preserveCenter;
|
|
455
|
+
this.$options.preserveCenter = preserveCenter;
|
|
412
456
|
},
|
|
413
457
|
handleOnIdle: function handleOnIdle() {
|
|
414
458
|
// only make the geo_bounding query if we have hits data
|
|
@@ -419,7 +463,7 @@ var ReactiveMap = {
|
|
|
419
463
|
this.setGeoQuery(executeUpdate);
|
|
420
464
|
}
|
|
421
465
|
|
|
422
|
-
|
|
466
|
+
this.$emit('idle');
|
|
423
467
|
},
|
|
424
468
|
setGeoQuery: function setGeoQuery(executeUpdate) {
|
|
425
469
|
if (executeUpdate === void 0) {
|
|
@@ -448,7 +492,6 @@ var ReactiveMap = {
|
|
|
448
492
|
defaultPin = this.defaultPin,
|
|
449
493
|
renderPopover = this.renderPopover,
|
|
450
494
|
autoClosePopover = this.autoClosePopover,
|
|
451
|
-
markerProps = this.markerProps,
|
|
452
495
|
renderItem = this.renderItem;
|
|
453
496
|
return {
|
|
454
497
|
resultsToRender: data,
|
|
@@ -461,17 +504,14 @@ var ReactiveMap = {
|
|
|
461
504
|
renderPopover: renderPopover,
|
|
462
505
|
autoClosePopover: autoClosePopover,
|
|
463
506
|
renderSearchAsMove: this.renderSearchAsMove,
|
|
464
|
-
markerProps: markerProps,
|
|
465
507
|
handlePreserveCenter: this.handlePreserveCenter,
|
|
466
|
-
preserveCenter: this.preserveCenter,
|
|
508
|
+
preserveCenter: this.$options.preserveCenter,
|
|
467
509
|
handleOnDragEnd: this.handleOnDragEnd,
|
|
468
510
|
handleOnIdle: this.handleOnIdle,
|
|
469
511
|
handleZoomChange: this.handleZoomChange
|
|
470
512
|
};
|
|
471
513
|
},
|
|
472
514
|
getAllData: function getAllData() {
|
|
473
|
-
var _this4 = this;
|
|
474
|
-
|
|
475
515
|
var size = this.size,
|
|
476
516
|
promotedResults = this.promotedResults,
|
|
477
517
|
customData = this.customData,
|
|
@@ -479,31 +519,13 @@ var ReactiveMap = {
|
|
|
479
519
|
hits = this.hits;
|
|
480
520
|
var results = parseHits(hits) || [];
|
|
481
521
|
var parsedPromotedResults = parseHits(promotedResults) || [];
|
|
482
|
-
var filteredResults = results;
|
|
483
522
|
var base = currentPage * size;
|
|
523
|
+
var resultsToRender = this.filteredResults || [];
|
|
484
524
|
|
|
485
|
-
if (
|
|
486
|
-
|
|
487
|
-
return item._id;
|
|
488
|
-
}).filter(Boolean);
|
|
489
|
-
|
|
490
|
-
if (ids) {
|
|
491
|
-
filteredResults = filteredResults.filter(function (item) {
|
|
492
|
-
return !ids.includes(item._id);
|
|
493
|
-
});
|
|
494
|
-
}
|
|
495
|
-
|
|
496
|
-
filteredResults = [].concat(parsedPromotedResults, filteredResults);
|
|
525
|
+
if (this.markersData) {
|
|
526
|
+
resultsToRender = this.markersData;
|
|
497
527
|
}
|
|
498
528
|
|
|
499
|
-
filteredResults = filteredResults.filter(function (item) {
|
|
500
|
-
return !!item[_this4.dataField];
|
|
501
|
-
}).map(function (item) {
|
|
502
|
-
var _extends2;
|
|
503
|
-
|
|
504
|
-
return _extends(_extends({}, item), {}, (_extends2 = {}, _extends2[_this4.dataField] = getLocationObject(item[_this4.dataField]), _extends2));
|
|
505
|
-
});
|
|
506
|
-
var resultsToRender = this.addNoise(filteredResults);
|
|
507
529
|
return {
|
|
508
530
|
results: results,
|
|
509
531
|
resultsToRender: resultsToRender,
|
|
@@ -554,7 +576,7 @@ var ReactiveMap = {
|
|
|
554
576
|
options.from = this.$data.from;
|
|
555
577
|
this.from = value;
|
|
556
578
|
this.currentPageState = page;
|
|
557
|
-
this.loadMoreAction(this.componentId, _extends(
|
|
579
|
+
this.loadMoreAction(this.componentId, _extends({}, options, {
|
|
558
580
|
from: value
|
|
559
581
|
}), false);
|
|
560
582
|
|
|
@@ -566,29 +588,6 @@ var ReactiveMap = {
|
|
|
566
588
|
setDefaultQueryForRSAPI: function setDefaultQueryForRSAPI() {
|
|
567
589
|
if (this.defaultQuery && typeof this.defaultQuery === 'function') {
|
|
568
590
|
var defaultQuery = this.defaultQuery();
|
|
569
|
-
|
|
570
|
-
if (this.mapBoxBounds) {
|
|
571
|
-
var _geo_bounding_box;
|
|
572
|
-
|
|
573
|
-
var geoQuery = {
|
|
574
|
-
geo_bounding_box: (_geo_bounding_box = {}, _geo_bounding_box[this.dataField] = this.mapBoxBounds, _geo_bounding_box)
|
|
575
|
-
};
|
|
576
|
-
|
|
577
|
-
var _defaultQuery = defaultQuery,
|
|
578
|
-
query = _defaultQuery.query,
|
|
579
|
-
options = _objectWithoutPropertiesLoose(_defaultQuery, ["query"]);
|
|
580
|
-
|
|
581
|
-
if (query) {
|
|
582
|
-
// adds defaultQuery's query to geo-query
|
|
583
|
-
// to generate a map query
|
|
584
|
-
defaultQuery = _extends({
|
|
585
|
-
query: {
|
|
586
|
-
must: [geoQuery, query]
|
|
587
|
-
}
|
|
588
|
-
}, options);
|
|
589
|
-
}
|
|
590
|
-
}
|
|
591
|
-
|
|
592
591
|
this.setDefaultQuery(this.componentId, defaultQuery);
|
|
593
592
|
}
|
|
594
593
|
},
|
|
@@ -612,7 +611,7 @@ var ReactiveMap = {
|
|
|
612
611
|
var west;
|
|
613
612
|
|
|
614
613
|
if (mapBounds) {
|
|
615
|
-
var
|
|
614
|
+
var _geo_bounding_box;
|
|
616
615
|
|
|
617
616
|
north = mapBounds.getNorthEast().lat();
|
|
618
617
|
south = mapBounds.getSouthWest().lat();
|
|
@@ -624,7 +623,7 @@ var ReactiveMap = {
|
|
|
624
623
|
};
|
|
625
624
|
this.mapBoxBounds = boundingBoxCoordinates;
|
|
626
625
|
var geoQuery = {
|
|
627
|
-
geo_bounding_box: (
|
|
626
|
+
geo_bounding_box: (_geo_bounding_box = {}, _geo_bounding_box[this.dataField] = boundingBoxCoordinates, _geo_bounding_box)
|
|
628
627
|
};
|
|
629
628
|
|
|
630
629
|
if (this.$defaultQuery) {
|
|
@@ -667,7 +666,7 @@ var ReactiveMap = {
|
|
|
667
666
|
var value = this.from + this.size;
|
|
668
667
|
var options = getQueryOptions(this.$props);
|
|
669
668
|
this.from = value;
|
|
670
|
-
this.loadMoreAction(this.componentId, _extends(
|
|
669
|
+
this.loadMoreAction(this.componentId, _extends({}, options, {
|
|
671
670
|
from: value
|
|
672
671
|
}), true);
|
|
673
672
|
}
|
|
@@ -695,13 +694,14 @@ var ReactiveMap = {
|
|
|
695
694
|
base = _this$getAllData3.base;
|
|
696
695
|
|
|
697
696
|
return results.map(function (result, index) {
|
|
698
|
-
return _extends(
|
|
697
|
+
return _extends({}, result, {
|
|
699
698
|
_click_id: base + index
|
|
700
699
|
});
|
|
701
700
|
});
|
|
702
701
|
},
|
|
703
702
|
toggleSearchAsMove: function toggleSearchAsMove() {
|
|
704
703
|
this.searchAsMove = !this.searchAsMove;
|
|
704
|
+
this.$emit('search-as-move', this.searchAsMove);
|
|
705
705
|
},
|
|
706
706
|
renderErrorComponent: function renderErrorComponent() {
|
|
707
707
|
var renderError = this.$scopedSlots.renderError || this.$props.renderError;
|
|
@@ -747,7 +747,7 @@ var ReactiveMap = {
|
|
|
747
747
|
"className": getClassName(this.innerClass, 'label') || null,
|
|
748
748
|
"for": this.$props.componentId + "-searchasmove"
|
|
749
749
|
}
|
|
750
|
-
}, [
|
|
750
|
+
}, [this.searchAsMoveLabel])]);
|
|
751
751
|
}
|
|
752
752
|
|
|
753
753
|
return null;
|
|
@@ -801,7 +801,7 @@ var ReactiveMap = {
|
|
|
801
801
|
|
|
802
802
|
if (this.$props.defaultQuery) {
|
|
803
803
|
this.$defaultQuery = this.$props.defaultQuery();
|
|
804
|
-
options = _extends(
|
|
804
|
+
options = _extends({}, options, getOptionsFromQuery(this.$defaultQuery)); // Override sort query with defaultQuery's sort if defined
|
|
805
805
|
|
|
806
806
|
if (this.$defaultQuery.sort) {
|
|
807
807
|
options.sort = this.$defaultQuery.sort;
|
|
@@ -815,7 +815,10 @@ var ReactiveMap = {
|
|
|
815
815
|
var forceExecute = false; // Update default query for RS API
|
|
816
816
|
|
|
817
817
|
this.setDefaultQueryForRSAPI();
|
|
818
|
-
|
|
818
|
+
var meta = {
|
|
819
|
+
mapBoxBounds: this.mapBoxBounds
|
|
820
|
+
};
|
|
821
|
+
this.setMapData(this.componentId, this.$defaultQuery.query, persistMapQuery, forceExecute, meta);
|
|
819
822
|
} else {
|
|
820
823
|
// only apply geo-distance when defaultQuery prop is not set
|
|
821
824
|
var query = this.getGeoDistanceQuery();
|
|
@@ -835,11 +838,11 @@ var ReactiveMap = {
|
|
|
835
838
|
|
|
836
839
|
var center = this.center || this.defaultCenter;
|
|
837
840
|
var coordinatesObject = this.getArrPosition(center);
|
|
838
|
-
var
|
|
841
|
+
var _meta = {
|
|
839
842
|
distance: this.defaultRadius,
|
|
840
843
|
coordinates: coordinatesObject.lat + ", " + coordinatesObject.lon
|
|
841
844
|
};
|
|
842
|
-
this.setMapData(this.componentId, query, _persistMapQuery, _forceExecute,
|
|
845
|
+
this.setMapData(this.componentId, query, _persistMapQuery, _forceExecute, _meta);
|
|
843
846
|
}
|
|
844
847
|
}
|
|
845
848
|
|
|
@@ -849,7 +852,7 @@ var ReactiveMap = {
|
|
|
849
852
|
var h = arguments[0];
|
|
850
853
|
var loader = this.$scopedSlots.loader || this.$props.loader;
|
|
851
854
|
return h("div", {
|
|
852
|
-
"style": _extends(
|
|
855
|
+
"style": _extends({}, style, this.$props.style),
|
|
853
856
|
"class": this.$props.className
|
|
854
857
|
}, [this.renderErrorComponent(), this.isLoading && loader, this.hasCustomRender ? this.getComponent() : null, this.renderMap(this.getMapParams()), this.pagination ? this.renderPagination() : null]);
|
|
855
858
|
}
|
|
@@ -893,9 +896,46 @@ ReactiveMap.install = function (Vue) {
|
|
|
893
896
|
|
|
894
897
|
ReactiveMap.componentType = componentTypes.reactiveMap;
|
|
895
898
|
|
|
899
|
+
var InfoWindowWrapper = {
|
|
900
|
+
name: 'InfoWindowWrapper',
|
|
901
|
+
props: {
|
|
902
|
+
id: VueTypes.string,
|
|
903
|
+
renderPopover: VueTypes.func,
|
|
904
|
+
infoWindowProps: VueTypes.object,
|
|
905
|
+
events: VueTypes.object
|
|
906
|
+
},
|
|
907
|
+
data: function data() {
|
|
908
|
+
return {
|
|
909
|
+
infoWindowRef: null
|
|
910
|
+
};
|
|
911
|
+
},
|
|
912
|
+
mounted: function mounted() {
|
|
913
|
+
this.infoWindowRef = this.$refs[this.id + "-Info-Window"];
|
|
914
|
+
},
|
|
915
|
+
methods: {
|
|
916
|
+
handleClose: function handleClose() {
|
|
917
|
+
this.infoWindowRef.$infoWindowObject.close();
|
|
918
|
+
}
|
|
919
|
+
},
|
|
920
|
+
render: function render() {
|
|
921
|
+
var h = arguments[0];
|
|
922
|
+
var renderPopover = this.renderPopover,
|
|
923
|
+
events = this.events;
|
|
924
|
+
return h(InfoWindow, {
|
|
925
|
+
"ref": this.id + "-Info-Window",
|
|
926
|
+
"props": _extends({}, this.infoWindowProps),
|
|
927
|
+
"on": _extends({}, events)
|
|
928
|
+
}, [h("div", [renderPopover(this.handleClose)])]);
|
|
929
|
+
}
|
|
930
|
+
};
|
|
931
|
+
|
|
896
932
|
var MarkerWithLabel = {
|
|
897
933
|
name: 'MarkerWithLabel',
|
|
898
934
|
props: {
|
|
935
|
+
metaData: {
|
|
936
|
+
type: Object,
|
|
937
|
+
"default": undefined
|
|
938
|
+
},
|
|
899
939
|
marker: {
|
|
900
940
|
type: Object,
|
|
901
941
|
"default": undefined
|
|
@@ -995,6 +1035,7 @@ var MarkerWithLabel = {
|
|
|
995
1035
|
var _this3;
|
|
996
1036
|
|
|
997
1037
|
_this3 = _window$google$maps$O.call(this) || this;
|
|
1038
|
+
_this3.metaData = self.metaData;
|
|
998
1039
|
|
|
999
1040
|
_this3.setMap(map2);
|
|
1000
1041
|
|
|
@@ -1160,47 +1201,17 @@ var MarkerWithLabel = {
|
|
|
1160
1201
|
},
|
|
1161
1202
|
"on": {
|
|
1162
1203
|
"mouseover": this.handleMouseOver,
|
|
1163
|
-
"focus": this.handleFocus,
|
|
1164
1204
|
"mouseout": this.handleMouseOut,
|
|
1165
|
-
"blur": this.handleBlur,
|
|
1166
1205
|
"click": this.handleClick
|
|
1167
1206
|
}
|
|
1168
1207
|
}, [this.renderMarker()]);
|
|
1169
1208
|
}
|
|
1170
1209
|
};
|
|
1171
1210
|
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
|
|
1175
|
-
|
|
1176
|
-
return data;
|
|
1177
|
-
};
|
|
1178
|
-
|
|
1179
|
-
return data;
|
|
1180
|
-
}
|
|
1181
|
-
|
|
1182
|
-
function _templateObject2() {
|
|
1183
|
-
var data = _taggedTemplateLiteralLoose(["\n\tborder-color: rgba(0, 0, 0, 0.2);\n\tborder-style: solid;\n\tborder-width: 0 1px 1px 0;\n\tmargin-left: -6px;\n\tbackground-color: #fff;\n\tmargin-top: -6px;\n\twidth: 12px;\n\theight: 12px;\n\t-webkit-transform: rotate(45deg);\n\t-ms-transform: rotate(45deg);\n\ttransform: rotate(45deg);\n"]);
|
|
1184
|
-
|
|
1185
|
-
_templateObject2 = function _templateObject2() {
|
|
1186
|
-
return data;
|
|
1187
|
-
};
|
|
1188
|
-
|
|
1189
|
-
return data;
|
|
1190
|
-
}
|
|
1191
|
-
|
|
1192
|
-
function _templateObject() {
|
|
1193
|
-
var data = _taggedTemplateLiteralLoose(["\n\theight: 24px;\n\twidth: auto;\n\tbackground-color: #fff;\n\tborder-radius: 2px;\n\tcolor: #222;\n\tbox-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.15);\n\tpadding: 3px 6px;\n\tfont-size: 15px;\n"]);
|
|
1194
|
-
|
|
1195
|
-
_templateObject = function _templateObject() {
|
|
1196
|
-
return data;
|
|
1197
|
-
};
|
|
1198
|
-
|
|
1199
|
-
return data;
|
|
1200
|
-
}
|
|
1201
|
-
var MapPin = styled('div')(_templateObject());
|
|
1202
|
-
var MapPinArrow = styled('div')(_templateObject2());
|
|
1203
|
-
var mapPinWrapper = css(_templateObject3());
|
|
1211
|
+
var _templateObject, _templateObject2, _templateObject3;
|
|
1212
|
+
var MapPin = styled('div')(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["\n\theight: 24px;\n\twidth: auto;\n\tbackground-color: #fff;\n\tborder-radius: 2px;\n\tcolor: #222;\n\tbox-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.15);\n\tpadding: 3px 6px;\n\tfont-size: 15px;\n"])));
|
|
1213
|
+
var MapPinArrow = styled('div')(_templateObject2 || (_templateObject2 = _taggedTemplateLiteralLoose(["\n\tborder-color: rgba(0, 0, 0, 0.2);\n\tborder-style: solid;\n\tborder-width: 0 1px 1px 0;\n\tmargin-left: -6px;\n\tbackground-color: #fff;\n\tmargin-top: -6px;\n\twidth: 12px;\n\theight: 12px;\n\t-webkit-transform: rotate(45deg);\n\t-ms-transform: rotate(45deg);\n\ttransform: rotate(45deg);\n"])));
|
|
1214
|
+
var mapPinWrapper = css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteralLoose(["\n\t&:hover,\n\t&:focus {\n\t\tz-index: 200;\n\t}\n"])));
|
|
1204
1215
|
|
|
1205
1216
|
var recordResultClick$1 = Actions.recordResultClick;
|
|
1206
1217
|
var GoogleMapMarker = {
|
|
@@ -1209,54 +1220,63 @@ var GoogleMapMarker = {
|
|
|
1209
1220
|
index: VueTypes.number,
|
|
1210
1221
|
marker: VueTypes.object.isRequired,
|
|
1211
1222
|
getPosition: VueTypes.func.isRequired,
|
|
1212
|
-
markerOnTop: VueTypes.string,
|
|
1213
1223
|
defaultPin: VueTypes.string,
|
|
1214
1224
|
renderItem: VueTypes.func,
|
|
1215
|
-
setMarkerOnTop: VueTypes.func.isRequired,
|
|
1216
1225
|
setOpenMarkers: VueTypes.func.isRequired,
|
|
1217
1226
|
handlePreserveCenter: VueTypes.func.isRequired,
|
|
1218
1227
|
autoClosePopover: VueTypes.bool,
|
|
1219
1228
|
openMarkers: VueTypes.object,
|
|
1220
|
-
renderPopover: VueTypes.func
|
|
1229
|
+
renderPopover: VueTypes.func,
|
|
1230
|
+
highlightMarkerOnHover: VueTypes.bool
|
|
1231
|
+
},
|
|
1232
|
+
data: function data() {
|
|
1233
|
+
return {
|
|
1234
|
+
zIndex: 0,
|
|
1235
|
+
markerIcon: null
|
|
1236
|
+
};
|
|
1221
1237
|
},
|
|
1222
1238
|
methods: {
|
|
1223
1239
|
increaseMarkerZIndex: function increaseMarkerZIndex() {
|
|
1224
|
-
var
|
|
1225
|
-
|
|
1226
|
-
|
|
1227
|
-
|
|
1228
|
-
|
|
1240
|
+
var handlePreserveCenter = this.$props.handlePreserveCenter;
|
|
1241
|
+
|
|
1242
|
+
if (this.highlightMarkerOnHover) {
|
|
1243
|
+
this.zIndex += 1;
|
|
1244
|
+
}
|
|
1245
|
+
|
|
1229
1246
|
handlePreserveCenter(true);
|
|
1230
1247
|
},
|
|
1231
1248
|
removeMarkerZIndex: function removeMarkerZIndex() {
|
|
1232
|
-
var
|
|
1233
|
-
|
|
1234
|
-
|
|
1235
|
-
|
|
1249
|
+
var handlePreserveCenter = this.$props.handlePreserveCenter;
|
|
1250
|
+
|
|
1251
|
+
if (this.highlightMarkerOnHover) {
|
|
1252
|
+
this.zIndex -= 1;
|
|
1253
|
+
}
|
|
1254
|
+
|
|
1236
1255
|
handlePreserveCenter(true);
|
|
1237
1256
|
},
|
|
1238
1257
|
openMarker: function openMarker() {
|
|
1239
1258
|
var _ref, _extends2;
|
|
1240
1259
|
|
|
1241
|
-
var _this$$
|
|
1242
|
-
handleOpenMarkers = _this$$
|
|
1243
|
-
openMarkers = _this$$
|
|
1244
|
-
marker = _this$$
|
|
1245
|
-
autoClosePopover = _this$$
|
|
1246
|
-
handlePreserveCenter = _this$$
|
|
1260
|
+
var _this$$props = this.$props,
|
|
1261
|
+
handleOpenMarkers = _this$$props.setOpenMarkers,
|
|
1262
|
+
openMarkers = _this$$props.openMarkers,
|
|
1263
|
+
marker = _this$$props.marker,
|
|
1264
|
+
autoClosePopover = _this$$props.autoClosePopover,
|
|
1265
|
+
handlePreserveCenter = _this$$props.handlePreserveCenter;
|
|
1247
1266
|
var id = marker._id;
|
|
1248
|
-
var newOpenMarkers = autoClosePopover ? (_ref = {}, _ref[id] = true, _ref) : _extends(
|
|
1267
|
+
var newOpenMarkers = autoClosePopover ? (_ref = {}, _ref[id] = true, _ref) : _extends({}, openMarkers, (_extends2 = {}, _extends2[id] = true, _extends2));
|
|
1249
1268
|
handleOpenMarkers(newOpenMarkers);
|
|
1250
1269
|
handlePreserveCenter(true);
|
|
1251
1270
|
this.triggerAnalytics();
|
|
1271
|
+
this.$emit('open-marker-popover', marker);
|
|
1252
1272
|
},
|
|
1253
1273
|
closeMarker: function closeMarker() {
|
|
1254
|
-
var _this$$
|
|
1255
|
-
handleOpenMarkers = _this$$
|
|
1256
|
-
marker = _this$$
|
|
1257
|
-
autoClosePopover = _this$$
|
|
1258
|
-
handlePreserveCenter = _this$$
|
|
1259
|
-
openMarkers = _this$$
|
|
1274
|
+
var _this$$props2 = this.$props,
|
|
1275
|
+
handleOpenMarkers = _this$$props2.setOpenMarkers,
|
|
1276
|
+
marker = _this$$props2.marker,
|
|
1277
|
+
autoClosePopover = _this$$props2.autoClosePopover,
|
|
1278
|
+
handlePreserveCenter = _this$$props2.handlePreserveCenter,
|
|
1279
|
+
openMarkers = _this$$props2.openMarkers;
|
|
1260
1280
|
var id = marker._id;
|
|
1261
1281
|
|
|
1262
1282
|
var del = openMarkers[id],
|
|
@@ -1265,6 +1285,7 @@ var GoogleMapMarker = {
|
|
|
1265
1285
|
var newOpenMarkers = autoClosePopover ? {} : activeMarkers;
|
|
1266
1286
|
handleOpenMarkers(newOpenMarkers);
|
|
1267
1287
|
handlePreserveCenter(true);
|
|
1288
|
+
this.$emit('close-marker-popover', marker);
|
|
1268
1289
|
},
|
|
1269
1290
|
triggerAnalytics: function triggerAnalytics() {
|
|
1270
1291
|
this.recordResultClick(this.index, this.marker._id);
|
|
@@ -1278,10 +1299,10 @@ var GoogleMapMarker = {
|
|
|
1278
1299
|
|
|
1279
1300
|
var h = this.$createElement;
|
|
1280
1301
|
var additionalProps = {};
|
|
1281
|
-
var _this$$
|
|
1282
|
-
getPosition = _this$$
|
|
1283
|
-
|
|
1284
|
-
openMarkers = _this$$
|
|
1302
|
+
var _this$$props3 = this.$props,
|
|
1303
|
+
getPosition = _this$$props3.getPosition,
|
|
1304
|
+
_renderPopover = _this$$props3.renderPopover,
|
|
1305
|
+
openMarkers = _this$$props3.openMarkers;
|
|
1285
1306
|
|
|
1286
1307
|
if (includeExternalSettings) {
|
|
1287
1308
|
// to render pop-over correctly with MarkerWithLabel
|
|
@@ -1294,19 +1315,32 @@ var GoogleMapMarker = {
|
|
|
1294
1315
|
}
|
|
1295
1316
|
|
|
1296
1317
|
if (item._id in openMarkers) {
|
|
1297
|
-
return h(
|
|
1298
|
-
"attrs": {
|
|
1299
|
-
"zIndex": 500,
|
|
1300
|
-
"position": additionalProps.position,
|
|
1301
|
-
"options": additionalProps.defaultOptions
|
|
1302
|
-
},
|
|
1318
|
+
return h(InfoWindowWrapper, {
|
|
1303
1319
|
"key": item._id + "-InfoWindow",
|
|
1304
|
-
"
|
|
1305
|
-
"
|
|
1306
|
-
|
|
1320
|
+
"attrs": {
|
|
1321
|
+
"id": item._id,
|
|
1322
|
+
"renderPopover": function renderPopover(_handleClose) {
|
|
1323
|
+
return _renderPopover({
|
|
1324
|
+
item: item,
|
|
1325
|
+
handleClose: function handleClose() {
|
|
1326
|
+
_handleClose();
|
|
1327
|
+
|
|
1328
|
+
_this.closeMarker();
|
|
1329
|
+
}
|
|
1330
|
+
});
|
|
1331
|
+
},
|
|
1332
|
+
"infoWindowProps": {
|
|
1333
|
+
zIndex: 500,
|
|
1334
|
+
position: additionalProps.position,
|
|
1335
|
+
options: additionalProps.defaultOptions
|
|
1336
|
+
},
|
|
1337
|
+
"events": {
|
|
1338
|
+
closeclick: function closeclick() {
|
|
1339
|
+
return _this.closeMarker();
|
|
1340
|
+
}
|
|
1307
1341
|
}
|
|
1308
1342
|
}
|
|
1309
|
-
}
|
|
1343
|
+
});
|
|
1310
1344
|
}
|
|
1311
1345
|
|
|
1312
1346
|
return null;
|
|
@@ -1316,35 +1350,35 @@ var GoogleMapMarker = {
|
|
|
1316
1350
|
var _this2 = this;
|
|
1317
1351
|
|
|
1318
1352
|
var h = arguments[0];
|
|
1319
|
-
var _this$$
|
|
1320
|
-
getPosition = _this$$
|
|
1321
|
-
renderItem = _this$$
|
|
1322
|
-
defaultPin = _this$$
|
|
1323
|
-
|
|
1324
|
-
|
|
1325
|
-
|
|
1326
|
-
customMarkerProps = _this$$props6.markerProps,
|
|
1327
|
-
marker = _this$$props6.marker,
|
|
1328
|
-
markerOnTop = _this$$props6.markerOnTop;
|
|
1353
|
+
var _this$$props4 = this.$props,
|
|
1354
|
+
getPosition = _this$$props4.getPosition,
|
|
1355
|
+
renderItem = _this$$props4.renderItem,
|
|
1356
|
+
defaultPin = _this$$props4.defaultPin,
|
|
1357
|
+
renderPopover = _this$$props4.renderPopover,
|
|
1358
|
+
customMarkerProps = _this$$props4.markerProps,
|
|
1359
|
+
marker = _this$$props4.marker;
|
|
1329
1360
|
var markerProps = {};
|
|
1330
1361
|
|
|
1331
|
-
if (
|
|
1332
|
-
markerProps.zIndex = window.google.maps.Marker.MAX_ZINDEX +
|
|
1362
|
+
if (this.zIndex) {
|
|
1363
|
+
markerProps.zIndex = window.google.maps.Marker.MAX_ZINDEX + this.zIndex;
|
|
1333
1364
|
}
|
|
1334
1365
|
|
|
1335
1366
|
if (renderItem) {
|
|
1367
|
+
marker.setIcon = function (icon) {
|
|
1368
|
+
_this2.markerIcon = icon;
|
|
1369
|
+
};
|
|
1370
|
+
|
|
1336
1371
|
var data = renderItem(marker);
|
|
1337
1372
|
|
|
1338
1373
|
if ('label' in data) {
|
|
1339
1374
|
return h(MarkerWithLabel, {
|
|
1340
1375
|
"key": marker._id,
|
|
1341
1376
|
"attrs": {
|
|
1377
|
+
"metaData": marker,
|
|
1342
1378
|
"marker": getPosition(marker),
|
|
1343
1379
|
"labelAnchor": new window.google.maps.Point(0, 30),
|
|
1344
1380
|
"handleMouseOver": this.increaseMarkerZIndex,
|
|
1345
|
-
"handleFocus": this.increaseMarkerZIndex,
|
|
1346
1381
|
"handleMouseOut": this.removeMarkerZIndex,
|
|
1347
|
-
"handleBlur": this.removeMarkerZIndex,
|
|
1348
1382
|
"handleClick": this.openMarker,
|
|
1349
1383
|
"zIndex": markerProps.zIndex,
|
|
1350
1384
|
"renderMarker": function renderMarker() {
|
|
@@ -1365,12 +1399,11 @@ var GoogleMapMarker = {
|
|
|
1365
1399
|
return h(MarkerWithLabel, {
|
|
1366
1400
|
"key": marker._id,
|
|
1367
1401
|
"attrs": {
|
|
1402
|
+
"metaData": marker,
|
|
1368
1403
|
"marker": getPosition(marker),
|
|
1369
1404
|
"handleClick": this.openMarker,
|
|
1370
1405
|
"handleMouseOver": this.increaseMarkerZIndex,
|
|
1371
|
-
"handleFocus": this.increaseMarkerZIndex,
|
|
1372
1406
|
"handleMouseOut": this.removeMarkerZIndex,
|
|
1373
|
-
"handleBlur": this.removeMarkerZIndex,
|
|
1374
1407
|
"zIndex": markerProps.zIndex,
|
|
1375
1408
|
"renderMarker": function renderMarker() {
|
|
1376
1409
|
return h("div", {
|
|
@@ -1392,18 +1425,19 @@ var GoogleMapMarker = {
|
|
|
1392
1425
|
return h(Marker, {
|
|
1393
1426
|
"key": marker._id,
|
|
1394
1427
|
"attrs": {
|
|
1395
|
-
"icon": markerProps.icon,
|
|
1396
1428
|
"zIndex": markerProps.zIndex,
|
|
1397
|
-
"position": getPosition(marker)
|
|
1429
|
+
"position": getPosition(marker),
|
|
1430
|
+
"options": {
|
|
1431
|
+
metaData: marker
|
|
1432
|
+
},
|
|
1433
|
+
"icon": this.markerIcon || markerProps.icon
|
|
1398
1434
|
},
|
|
1399
1435
|
"on": {
|
|
1400
1436
|
"click": function click() {
|
|
1401
|
-
return _this2.openMarker(
|
|
1437
|
+
return _this2.openMarker();
|
|
1402
1438
|
},
|
|
1403
1439
|
"mouseover": this.increaseMarkerZIndex,
|
|
1404
|
-
"
|
|
1405
|
-
"mouseout": this.removeMarkerZIndex,
|
|
1406
|
-
"blur": this.removeMarkerZIndex
|
|
1440
|
+
"mouseout": this.removeMarkerZIndex
|
|
1407
1441
|
},
|
|
1408
1442
|
"props": _extends({}, customMarkerProps)
|
|
1409
1443
|
}, [renderPopover ? this.renderPopoverClick(marker) : null]);
|
|
@@ -1422,34 +1456,60 @@ var GoogleMapMarkers = {
|
|
|
1422
1456
|
resultsToRender: VueTypes.array,
|
|
1423
1457
|
getPosition: VueTypes.func,
|
|
1424
1458
|
renderItem: VueTypes.func,
|
|
1459
|
+
renderClusterPopover: VueTypes.func,
|
|
1425
1460
|
defaultPin: VueTypes.string,
|
|
1426
1461
|
autoClosePopover: VueTypes.bool,
|
|
1427
1462
|
handlePreserveCenter: VueTypes.func,
|
|
1428
1463
|
renderPopover: VueTypes.func,
|
|
1429
1464
|
markerProps: VueTypes.object,
|
|
1430
|
-
|
|
1465
|
+
clusterProps: VueTypes.object,
|
|
1466
|
+
showMarkerClusters: VueTypes.bool,
|
|
1467
|
+
highlightMarkerOnHover: VueTypes.bool
|
|
1431
1468
|
},
|
|
1432
1469
|
data: function data() {
|
|
1433
1470
|
return {
|
|
1434
|
-
|
|
1435
|
-
|
|
1471
|
+
openMarkers: {},
|
|
1472
|
+
clickedCluster: null,
|
|
1473
|
+
clusterMarkers: []
|
|
1436
1474
|
};
|
|
1437
1475
|
},
|
|
1438
1476
|
methods: {
|
|
1439
|
-
setMarkerOnTop: function setMarkerOnTop(markerOnTop) {
|
|
1440
|
-
this.markerOnTop = markerOnTop;
|
|
1441
|
-
},
|
|
1442
1477
|
setOpenMarkers: function setOpenMarkers(openMarkers) {
|
|
1443
1478
|
this.openMarkers = openMarkers;
|
|
1479
|
+
},
|
|
1480
|
+
getClusterMarkers: function getClusterMarkers() {
|
|
1481
|
+
if (this.clickedCluster && Array.isArray(this.clickedCluster.getMarkers())) {
|
|
1482
|
+
return this.clickedCluster.getMarkers().map(function (marker) {
|
|
1483
|
+
return marker.metaData;
|
|
1484
|
+
});
|
|
1485
|
+
}
|
|
1486
|
+
|
|
1487
|
+
return [];
|
|
1488
|
+
},
|
|
1489
|
+
getAdditionalProps: function getAdditionalProps() {
|
|
1490
|
+
return {
|
|
1491
|
+
position: {
|
|
1492
|
+
lat: this.clickedCluster.getCenter().lat(),
|
|
1493
|
+
lng: this.clickedCluster.getCenter().lng()
|
|
1494
|
+
},
|
|
1495
|
+
defaultOptions: {
|
|
1496
|
+
pixelOffset: new window.google.maps.Size(0, -30)
|
|
1497
|
+
}
|
|
1498
|
+
};
|
|
1499
|
+
},
|
|
1500
|
+
closeMarker: function closeMarker() {
|
|
1501
|
+
this.clickedCluster = null;
|
|
1502
|
+
this.clusterMarkers = [];
|
|
1503
|
+
this.$emit('close-cluster-popover');
|
|
1444
1504
|
}
|
|
1445
1505
|
},
|
|
1446
1506
|
render: function render() {
|
|
1507
|
+
var _this = this;
|
|
1508
|
+
|
|
1447
1509
|
var h = arguments[0];
|
|
1448
1510
|
var resultsToRender = this.$props.resultsToRender;
|
|
1449
|
-
var
|
|
1450
|
-
openMarkers = this.openMarkers;
|
|
1511
|
+
var openMarkers = this.openMarkers;
|
|
1451
1512
|
var markerProps = {
|
|
1452
|
-
markerOnTop: markerOnTop,
|
|
1453
1513
|
openMarkers: openMarkers,
|
|
1454
1514
|
setMarkerOnTop: this.setMarkerOnTop,
|
|
1455
1515
|
setOpenMarkers: this.setOpenMarkers,
|
|
@@ -1460,19 +1520,55 @@ var GoogleMapMarkers = {
|
|
|
1460
1520
|
handlePreserveCenter: this.handlePreserveCenter,
|
|
1461
1521
|
renderPopover: this.renderPopover,
|
|
1462
1522
|
markerProps: this.markerProps,
|
|
1463
|
-
showMarkerClusters: this.showMarkerClusters
|
|
1523
|
+
showMarkerClusters: this.showMarkerClusters,
|
|
1524
|
+
highlightMarkerOnHover: this.highlightMarkerOnHover
|
|
1464
1525
|
};
|
|
1465
1526
|
|
|
1466
1527
|
if (this.showMarkerClusters) {
|
|
1467
|
-
return h(
|
|
1528
|
+
return h("div", [h(GmapCluster, {
|
|
1529
|
+
"props": _extends({}, this.clusterProps),
|
|
1530
|
+
"on": {
|
|
1531
|
+
"click": function click(cluster) {
|
|
1532
|
+
_this.clickedCluster = cluster;
|
|
1533
|
+
_this.clusterMarkers = _this.getClusterMarkers();
|
|
1534
|
+
|
|
1535
|
+
_this.$emit('open-cluster-popover', _this.clusterMarkers);
|
|
1536
|
+
}
|
|
1537
|
+
},
|
|
1538
|
+
"ref": "clusterRef"
|
|
1539
|
+
}, [resultsToRender.map(function (marker, index) {
|
|
1468
1540
|
return h(GoogleMapMarker$1, {
|
|
1469
1541
|
"attrs": {
|
|
1470
1542
|
"index": index,
|
|
1471
1543
|
"marker": marker
|
|
1472
1544
|
},
|
|
1473
|
-
"props": _extends({}, markerProps)
|
|
1545
|
+
"props": _extends({}, markerProps),
|
|
1546
|
+
"on": _extends({}, _this.$listeners)
|
|
1474
1547
|
});
|
|
1475
|
-
})])
|
|
1548
|
+
})]), this.clickedCluster && this.renderClusterPopover ? h(InfoWindowWrapper, {
|
|
1549
|
+
"attrs": {
|
|
1550
|
+
"id": "cluster",
|
|
1551
|
+
"infoWindowProps": {
|
|
1552
|
+
zIndex: 500,
|
|
1553
|
+
position: this.getAdditionalProps().position,
|
|
1554
|
+
options: this.getAdditionalProps().defaultOptions
|
|
1555
|
+
},
|
|
1556
|
+
"renderPopover": function renderPopover(_handleClose) {
|
|
1557
|
+
return _this.renderClusterPopover({
|
|
1558
|
+
markers: _this.clusterMarkers,
|
|
1559
|
+
cluster: _this.clickedCluster,
|
|
1560
|
+
handleClose: function handleClose() {
|
|
1561
|
+
_handleClose();
|
|
1562
|
+
|
|
1563
|
+
_this.closeMarker();
|
|
1564
|
+
}
|
|
1565
|
+
});
|
|
1566
|
+
},
|
|
1567
|
+
"events": {
|
|
1568
|
+
closeclick: this.closeMarker
|
|
1569
|
+
}
|
|
1570
|
+
}
|
|
1571
|
+
}) : null]);
|
|
1476
1572
|
}
|
|
1477
1573
|
|
|
1478
1574
|
return h("div", [resultsToRender.map(function (marker, index) {
|
|
@@ -1481,7 +1577,8 @@ var GoogleMapMarkers = {
|
|
|
1481
1577
|
"index": index,
|
|
1482
1578
|
"marker": marker
|
|
1483
1579
|
},
|
|
1484
|
-
"props": _extends({}, markerProps)
|
|
1580
|
+
"props": _extends({}, markerProps),
|
|
1581
|
+
"on": _extends({}, _this.$listeners)
|
|
1485
1582
|
});
|
|
1486
1583
|
})]);
|
|
1487
1584
|
}
|
|
@@ -1493,19 +1590,22 @@ var ReactiveGoogleMap = {
|
|
|
1493
1590
|
className: types.string,
|
|
1494
1591
|
componentId: types.stringRequired,
|
|
1495
1592
|
dataField: types.stringRequired,
|
|
1593
|
+
defaultQuery: VueTypes.func,
|
|
1496
1594
|
loader: types.title,
|
|
1497
1595
|
defaultZoom: VueTypes.number.def(13),
|
|
1498
1596
|
react: types.react,
|
|
1499
1597
|
size: types.number,
|
|
1500
1598
|
sortBy: types.sortBy,
|
|
1501
|
-
URLParams:
|
|
1599
|
+
URLParams: VueTypes.bool,
|
|
1502
1600
|
mapProps: VueTypes.object,
|
|
1503
1601
|
showMarkers: VueTypes.bool.def(true),
|
|
1504
1602
|
showMarkerClusters: VueTypes.bool.def(false),
|
|
1505
1603
|
searchAsMove: VueTypes.bool.def(false),
|
|
1506
|
-
|
|
1604
|
+
searchAsMoveLabel: VueTypes.string,
|
|
1605
|
+
markerProps: VueTypes.object,
|
|
1606
|
+
clusterProps: VueTypes.object,
|
|
1507
1607
|
renderItem: VueTypes.func,
|
|
1508
|
-
showSearchAsMove:
|
|
1608
|
+
showSearchAsMove: VueTypes.bool.def(true),
|
|
1509
1609
|
autoClosePopover: VueTypes.bool,
|
|
1510
1610
|
pagination: VueTypes.bool,
|
|
1511
1611
|
defaultPin: VueTypes.string,
|
|
@@ -1514,7 +1614,9 @@ var ReactiveGoogleMap = {
|
|
|
1514
1614
|
center: types.location,
|
|
1515
1615
|
defaultRadius: types.number,
|
|
1516
1616
|
unit: types.string,
|
|
1517
|
-
pages: VueTypes.number.def(5)
|
|
1617
|
+
pages: VueTypes.number.def(5),
|
|
1618
|
+
calculateMarkers: VueTypes.func,
|
|
1619
|
+
highlightMarkerOnHover: VueTypes.bool.def(true)
|
|
1518
1620
|
},
|
|
1519
1621
|
methods: {
|
|
1520
1622
|
renderMap: function renderMap(_ref) {
|
|
@@ -1529,9 +1631,7 @@ var ReactiveGoogleMap = {
|
|
|
1529
1631
|
renderSearchAsMove = _ref.renderSearchAsMove,
|
|
1530
1632
|
handlePreserveCenter = _ref.handlePreserveCenter,
|
|
1531
1633
|
getPosition = _ref.getPosition,
|
|
1532
|
-
markerProps = _ref.markerProps,
|
|
1533
1634
|
autoClosePopover = _ref.autoClosePopover,
|
|
1534
|
-
renderPopover = _ref.renderPopover,
|
|
1535
1635
|
defaultPin = _ref.defaultPin;
|
|
1536
1636
|
var h = this.$createElement;
|
|
1537
1637
|
var style = {
|
|
@@ -1564,8 +1664,10 @@ var ReactiveGoogleMap = {
|
|
|
1564
1664
|
"attrs": {
|
|
1565
1665
|
"resultsToRender": resultsToRender,
|
|
1566
1666
|
"getPosition": getPosition,
|
|
1567
|
-
"markerProps": markerProps,
|
|
1667
|
+
"markerProps": this.markerProps,
|
|
1668
|
+
"clusterProps": this.clusterProps,
|
|
1568
1669
|
"handlePreserveCenter": handlePreserveCenter,
|
|
1670
|
+
"highlightMarkerOnHover": this.highlightMarkerOnHover,
|
|
1569
1671
|
"renderItem": this.$scopedSlots.renderItem ? function () {
|
|
1570
1672
|
return {
|
|
1571
1673
|
custom: _this.$scopedSlots.renderItem
|
|
@@ -1573,9 +1675,11 @@ var ReactiveGoogleMap = {
|
|
|
1573
1675
|
} : this.renderItem,
|
|
1574
1676
|
"defaultPin": defaultPin,
|
|
1575
1677
|
"autoClosePopover": autoClosePopover,
|
|
1576
|
-
"renderPopover": renderPopover,
|
|
1678
|
+
"renderPopover": this.$scopedSlots.renderPopover,
|
|
1679
|
+
"renderClusterPopover": this.$scopedSlots.renderClusterPopover,
|
|
1577
1680
|
"showMarkerClusters": this.showMarkerClusters
|
|
1578
|
-
}
|
|
1681
|
+
},
|
|
1682
|
+
"on": _extends({}, this.$listeners)
|
|
1579
1683
|
}) : null]), renderSearchAsMove()]);
|
|
1580
1684
|
},
|
|
1581
1685
|
getMapRef: function getMapRef() {
|
|
@@ -1592,8 +1696,6 @@ var ReactiveGoogleMap = {
|
|
|
1592
1696
|
}
|
|
1593
1697
|
},
|
|
1594
1698
|
render: function render() {
|
|
1595
|
-
var _this3 = this;
|
|
1596
|
-
|
|
1597
1699
|
var h = arguments[0];
|
|
1598
1700
|
return h(RMConnected, _mergeJSXProps([{
|
|
1599
1701
|
"attrs": {
|
|
@@ -1610,31 +1712,20 @@ var ReactiveGoogleMap = {
|
|
|
1610
1712
|
"uRLParams": this.URLParams,
|
|
1611
1713
|
"defaultSearchAsMove": this.searchAsMove,
|
|
1612
1714
|
"showSearchAsMove": this.showSearchAsMove,
|
|
1715
|
+
"searchAsMoveLabel": this.searchAsMoveLabel,
|
|
1613
1716
|
"showMarkers": this.showMarkers,
|
|
1614
1717
|
"markerProps": this.markerProps,
|
|
1615
1718
|
"autoClosePopover": this.autoClosePopover,
|
|
1616
1719
|
"defaultPin": this.defaultPin,
|
|
1617
|
-
"
|
|
1618
|
-
return _this3.$scopedSlots.renderPopover(item);
|
|
1619
|
-
} : null,
|
|
1720
|
+
"defaultQuery": this.defaultQuery,
|
|
1620
1721
|
"autoCenter": this.autoCenter,
|
|
1621
1722
|
"defaultCenter": this.defaultCenter,
|
|
1622
1723
|
"defaultRadius": this.defaultRadius,
|
|
1623
1724
|
"unit": this.unit,
|
|
1624
1725
|
"pages": this.pages,
|
|
1625
1726
|
"center": this.center,
|
|
1626
|
-
"loader": this.loader
|
|
1627
|
-
|
|
1628
|
-
"on": {
|
|
1629
|
-
"zoomChanged": function zoomChanged(zoom) {
|
|
1630
|
-
_this3.$emit('zoom-changed', zoom);
|
|
1631
|
-
},
|
|
1632
|
-
"idle": function idle() {
|
|
1633
|
-
_this3.$emit('idle');
|
|
1634
|
-
},
|
|
1635
|
-
"dragEnd": function dragEnd() {
|
|
1636
|
-
_this3.$emit('drag-end');
|
|
1637
|
-
}
|
|
1727
|
+
"loader": this.loader,
|
|
1728
|
+
"calculateMarkers": this.calculateMarkers
|
|
1638
1729
|
}
|
|
1639
1730
|
}, {
|
|
1640
1731
|
scopedSlots: this.$scopedSlots,
|