@appbaseio/reactivesearch-vue 1.16.0-alpha.6 → 1.16.0-alpha.60
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 +23173 -18496
- package/dist/@appbaseio/reactivesearch-vue.umd.js.map +1 -1
- package/dist/@appbaseio/reactivesearch-vue.umd.min.js +21 -5
- package/dist/@appbaseio/reactivesearch-vue.umd.min.js.map +1 -1
- package/dist/cjs/Button-446f819e.js +68 -0
- package/dist/cjs/{DownShift-966a58cb.js → CancelSvg-9f258f4f.js} +60 -16
- package/dist/cjs/Card-642547a8.js +30 -0
- package/dist/cjs/{ComponentWrapper-603848ed.js → ComponentWrapper-e131f28a.js} +40 -21
- package/dist/cjs/{Container-6cdd3864.js → Container-daf30918.js} +3 -11
- package/dist/cjs/DataSearch-85ca95d1.js +2322 -0
- package/dist/cjs/DataSearch.js +18 -2151
- package/dist/cjs/{DropDown-f6224ac8.js → DropDown-14a6460c.js} +80 -95
- package/dist/cjs/DynamicRangeSlider.js +107 -43
- package/dist/cjs/Flex-aa517a13.js +52 -0
- package/dist/cjs/FormControlList-c195a592.js +47 -0
- package/dist/cjs/Input-e6603a7e.js +79 -0
- package/dist/cjs/ListItem-8c9e0d68.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-af399262.js → Pagination-c01d1547.js} +4 -3
- package/dist/cjs/RangeInput.js +29 -45
- package/dist/cjs/RangeSlider.js +32 -30
- package/dist/cjs/ReactiveBase.js +87 -56
- package/dist/cjs/ReactiveComponent.js +75 -62
- package/dist/cjs/ReactiveGoogleMap.js +273 -196
- package/dist/cjs/ReactiveList.js +189 -241
- package/dist/cjs/ResultCard.js +8 -6
- package/dist/cjs/ResultList.js +8 -6
- package/dist/cjs/SelectedFilters.js +66 -34
- package/dist/cjs/SingleDropdownList.js +88 -60
- package/dist/cjs/SingleList.js +53 -35
- package/dist/cjs/SingleRange.js +19 -14
- package/dist/cjs/StateProvider.js +39 -10
- package/dist/cjs/{Title-65d39104.js → Title-1de7d0f4.js} +3 -11
- package/dist/cjs/ToggleButton.js +36 -16
- package/dist/cjs/{_rollupPluginBabelHelpers-4abdbfff.js → _rollupPluginBabelHelpers-c705cbe6.js} +2 -4
- package/dist/cjs/{index-baca18c4.js → index-9fb734df.js} +95 -13
- package/dist/cjs/index.js +30 -29
- package/dist/cjs/initReactivesearch.js +178 -104
- package/dist/cjs/install-7e220cb1.js +1408 -0
- package/dist/cjs/install.js +42 -44
- package/dist/cjs/ssr-3027b848.js +39 -0
- package/dist/cjs/{utils-ea846a20.js → utils-d6a52588.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-d8bc15ea.js +59 -0
- package/dist/es/{DownShift-92347b5e.js → CancelSvg-4cfae5fd.js} +56 -17
- package/dist/es/Card-450683f1.js +23 -0
- package/dist/es/{ComponentWrapper-c4c91949.js → ComponentWrapper-3654ce36.js} +40 -21
- package/dist/es/Container-ba826e96.js +10 -0
- package/dist/es/DataSearch-9bd510ea.js +2307 -0
- package/dist/es/DataSearch.js +17 -2150
- package/dist/es/{DropDown-3d4291f1.js → DropDown-219d9321.js} +79 -94
- package/dist/es/DynamicRangeSlider.js +107 -43
- package/dist/es/Flex-1f0795c3.js +47 -0
- package/dist/es/FormControlList-c22d64f6.js +40 -0
- package/dist/es/Input-7a2a9fac.js +71 -0
- package/dist/es/ListItem-cad14c5e.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-c2a00175.js → Pagination-491c44ee.js} +4 -3
- package/dist/es/RangeInput.js +29 -45
- package/dist/es/RangeSlider.js +32 -30
- package/dist/es/ReactiveBase.js +87 -56
- package/dist/es/ReactiveComponent.js +75 -62
- package/dist/es/ReactiveGoogleMap.js +272 -196
- package/dist/es/ReactiveList.js +189 -241
- package/dist/es/ResultCard.js +8 -6
- package/dist/es/ResultList.js +8 -6
- package/dist/es/SelectedFilters.js +66 -34
- package/dist/es/SingleDropdownList.js +88 -60
- package/dist/es/SingleList.js +53 -35
- package/dist/es/SingleRange.js +19 -14
- package/dist/es/StateProvider.js +39 -10
- package/dist/es/Title-3342664a.js +10 -0
- package/dist/es/ToggleButton.js +36 -16
- package/dist/es/{_rollupPluginBabelHelpers-ecf6c03c.js → _rollupPluginBabelHelpers-76660dab.js} +2 -4
- package/dist/es/{index-185b6266.js → index-32f9d554.js} +91 -14
- package/dist/es/index.js +26 -26
- package/dist/es/initReactivesearch.js +179 -105
- package/dist/es/install-32e60122.js +1401 -0
- package/dist/es/install.js +40 -46
- package/dist/es/ssr-b2c0b401.js +33 -0
- package/dist/es/{utils-57cc8789.js → utils-9e68acee.js} +2 -2
- package/dist/es/version.js +1 -1
- package/dist/es/{vueTypes-98d938a9.js → vueTypes-9326e0be.js} +9 -4
- package/package.json +7 -5
- package/dist/cjs/Button-d48d4365.js +0 -146
- package/dist/cjs/Card-9748fbb2.js +0 -58
- package/dist/cjs/Flex-befd65fc.js +0 -160
- package/dist/cjs/FormControlList-f3857d4b.js +0 -105
- package/dist/cjs/Input-95cb19f8.js +0 -178
- package/dist/cjs/ListItem-84d185cf.js +0 -84
- package/dist/cjs/ssr-3ca8a14f.js +0 -47
- package/dist/es/Button-27cc8574.js +0 -137
- package/dist/es/Card-1f93780d.js +0 -51
- package/dist/es/Container-88c805ef.js +0 -18
- package/dist/es/Flex-16d1103a.js +0 -155
- package/dist/es/FormControlList-96d44e7b.js +0 -98
- package/dist/es/Input-1159c4b5.js +0 -170
- package/dist/es/ListItem-d22510c9.js +0 -77
- package/dist/es/Title-f0217338.js +0 -18
- package/dist/es/ssr-a710392b.js +0 -41
|
@@ -1,26 +1,21 @@
|
|
|
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-76660dab.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-d8bc15ea.js';
|
|
9
|
+
import { t as types } from './vueTypes-9326e0be.js';
|
|
10
|
+
import { P as Pagination } from './Pagination-491c44ee.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-32f9d554.js';
|
|
14
|
+
import { C as ComponentWrapper } from './ComponentWrapper-3654ce36.js';
|
|
15
15
|
import _mergeJSXProps from '@vue/babel-helper-vue-jsx-merge-props';
|
|
16
|
-
import { C as Checkbox } from './FormControlList-
|
|
17
|
-
import
|
|
18
|
-
import Map from 'gmap-vue/dist/components-implementation/map';
|
|
16
|
+
import { C as Checkbox } from './FormControlList-c22d64f6.js';
|
|
17
|
+
import GmapVue, { components } from 'gmap-vue';
|
|
19
18
|
import geohash from 'ngeohash';
|
|
20
|
-
import GmapCluster from 'gmap-vue/dist/components/cluster';
|
|
21
|
-
import Marker from 'gmap-vue/dist/components/marker';
|
|
22
|
-
import InfoWindow from 'gmap-vue/dist/components-implementation/info-window';
|
|
23
|
-
import MapElementMixin from 'gmap-vue/dist/mixins/map-element';
|
|
24
19
|
|
|
25
20
|
var setStreaming = Actions.setStreaming,
|
|
26
21
|
setQueryOptions = Actions.setQueryOptions,
|
|
@@ -68,7 +63,7 @@ function withDistinctLat(loc, count) {
|
|
|
68
63
|
|
|
69
64
|
var suffix = 1 / Math.pow(10, noiseFactor) * count;
|
|
70
65
|
|
|
71
|
-
var location = _extends(
|
|
66
|
+
var location = _extends({}, loc, {
|
|
72
67
|
lat: parseFloat((loc.lat + suffix).toFixed(length))
|
|
73
68
|
});
|
|
74
69
|
|
|
@@ -120,14 +115,13 @@ var ReactiveMap = {
|
|
|
120
115
|
react: types.react,
|
|
121
116
|
size: types.number,
|
|
122
117
|
sortBy: types.sortBy,
|
|
123
|
-
URLParams:
|
|
124
|
-
autoCenter:
|
|
118
|
+
URLParams: VueTypes.bool,
|
|
119
|
+
autoCenter: VueTypes.bool,
|
|
125
120
|
getMapRef: VueTypes.func.isRequired,
|
|
126
121
|
center: types.location,
|
|
127
122
|
defaultCenter: types.location,
|
|
128
123
|
defaultPin: types.string,
|
|
129
124
|
defaultZoom: VueTypes.number.def(13),
|
|
130
|
-
markerProps: types.props,
|
|
131
125
|
defaultQuery: types.func,
|
|
132
126
|
innerClass: types.style,
|
|
133
127
|
loader: types.title,
|
|
@@ -136,17 +130,19 @@ var ReactiveMap = {
|
|
|
136
130
|
renderError: types.title,
|
|
137
131
|
pages: VueTypes.number.def(5),
|
|
138
132
|
currentPage: VueTypes.number.def(0),
|
|
139
|
-
pagination:
|
|
140
|
-
showMarkers:
|
|
141
|
-
defaultSearchAsMove:
|
|
142
|
-
showSearchAsMove:
|
|
133
|
+
pagination: VueTypes.bool,
|
|
134
|
+
showMarkers: VueTypes.bool,
|
|
135
|
+
defaultSearchAsMove: VueTypes.bool,
|
|
136
|
+
showSearchAsMove: VueTypes.bool,
|
|
143
137
|
defaultRadius: types.number,
|
|
144
138
|
unit: types.string,
|
|
145
|
-
autoClosePopover:
|
|
139
|
+
autoClosePopover: VueTypes.bool,
|
|
146
140
|
renderMap: VueTypes.func.isRequired,
|
|
147
141
|
renderPopover: VueTypes.func,
|
|
148
|
-
calculateMarkers: VueTypes.func
|
|
142
|
+
calculateMarkers: VueTypes.func,
|
|
143
|
+
searchAsMoveLabel: VueTypes.string.def('Search as I move the map')
|
|
149
144
|
},
|
|
145
|
+
preserveCenter: false,
|
|
150
146
|
data: function data() {
|
|
151
147
|
var props = this.$props;
|
|
152
148
|
var currentPageState = 0;
|
|
@@ -160,7 +156,6 @@ var ReactiveMap = {
|
|
|
160
156
|
zoom: props.defaultZoom,
|
|
161
157
|
searchAsMove: props.defaultSearchAsMove,
|
|
162
158
|
currentPageState: currentPageState,
|
|
163
|
-
preserveCenter: false,
|
|
164
159
|
mapBoxBounds: null,
|
|
165
160
|
markersData: null
|
|
166
161
|
};
|
|
@@ -174,7 +169,7 @@ var ReactiveMap = {
|
|
|
174
169
|
var _this$getAllData = this.getAllData(),
|
|
175
170
|
resultsToRender = _this$getAllData.resultsToRender;
|
|
176
171
|
|
|
177
|
-
return _extends(
|
|
172
|
+
return _extends({}, getResultStats(this), {
|
|
178
173
|
currentPage: this.currentPageState,
|
|
179
174
|
displayedResults: resultsToRender.length
|
|
180
175
|
});
|
|
@@ -209,16 +204,19 @@ var ReactiveMap = {
|
|
|
209
204
|
var queryOptions = getOptionsFromQuery(this.$defaultQuery);
|
|
210
205
|
|
|
211
206
|
if (queryOptions) {
|
|
212
|
-
options = _extends(
|
|
207
|
+
options = _extends({}, options, getOptionsFromQuery(this.$defaultQuery));
|
|
213
208
|
} // Update calculated default query in store
|
|
214
209
|
|
|
215
210
|
|
|
216
|
-
this.setQueryOptions(this.$props.componentId, options,
|
|
211
|
+
this.setQueryOptions(this.$props.componentId, options, false);
|
|
217
212
|
var persistMapQuery = true;
|
|
218
213
|
var forceExecute = true; // Update default query to include the geo bounding box query
|
|
219
214
|
|
|
220
215
|
this.setDefaultQueryForRSAPI();
|
|
221
|
-
|
|
216
|
+
var meta = {
|
|
217
|
+
mapBoxBounds: this.mapBoxBounds
|
|
218
|
+
};
|
|
219
|
+
this.setMapData(this.componentId, query, persistMapQuery, forceExecute, meta);
|
|
222
220
|
this.currentPageState = 0;
|
|
223
221
|
this.from = 0;
|
|
224
222
|
}
|
|
@@ -277,7 +275,7 @@ var ReactiveMap = {
|
|
|
277
275
|
}).map(function (item) {
|
|
278
276
|
var _extends2;
|
|
279
277
|
|
|
280
|
-
return _extends(
|
|
278
|
+
return _extends({}, item, (_extends2 = {}, _extends2[_this.dataField] = getLocationObject(item[_this.dataField]), _extends2));
|
|
281
279
|
});
|
|
282
280
|
this.filteredResults = this.addNoise(filteredResults);
|
|
283
281
|
|
|
@@ -402,10 +400,10 @@ var ReactiveMap = {
|
|
|
402
400
|
|
|
403
401
|
var mapRef = this.getMapRef();
|
|
404
402
|
|
|
405
|
-
if (mapRef && typeof mapRef.getCenter === 'function' && this.preserveCenter) {
|
|
403
|
+
if (mapRef && typeof mapRef.getCenter === 'function' && this.$options.preserveCenter) {
|
|
406
404
|
var currentCenter = mapRef.getCenter();
|
|
407
405
|
setTimeout(function () {
|
|
408
|
-
_this4.preserveCenter = false;
|
|
406
|
+
_this4.$options.preserveCenter = false;
|
|
409
407
|
}, 100);
|
|
410
408
|
return this.parseLocation({
|
|
411
409
|
lat: currentCenter.lat(),
|
|
@@ -429,7 +427,7 @@ var ReactiveMap = {
|
|
|
429
427
|
|
|
430
428
|
if (this.searchAsMove) {
|
|
431
429
|
this.zoom = zoom;
|
|
432
|
-
this.preserveCenter = true;
|
|
430
|
+
this.$options.preserveCenter = true;
|
|
433
431
|
this.setGeoQuery(true);
|
|
434
432
|
} else {
|
|
435
433
|
this.zoom = zoom;
|
|
@@ -442,14 +440,14 @@ var ReactiveMap = {
|
|
|
442
440
|
},
|
|
443
441
|
handleOnDragEnd: function handleOnDragEnd() {
|
|
444
442
|
if (this.searchAsMove) {
|
|
445
|
-
this.preserveCenter = true;
|
|
443
|
+
this.$options.preserveCenter = true;
|
|
446
444
|
this.setGeoQuery(true);
|
|
447
445
|
}
|
|
448
446
|
|
|
449
447
|
this.$emit('drag-end');
|
|
450
448
|
},
|
|
451
449
|
handlePreserveCenter: function handlePreserveCenter(preserveCenter) {
|
|
452
|
-
this.preserveCenter = preserveCenter;
|
|
450
|
+
this.$options.preserveCenter = preserveCenter;
|
|
453
451
|
},
|
|
454
452
|
handleOnIdle: function handleOnIdle() {
|
|
455
453
|
// only make the geo_bounding query if we have hits data
|
|
@@ -489,7 +487,6 @@ var ReactiveMap = {
|
|
|
489
487
|
defaultPin = this.defaultPin,
|
|
490
488
|
renderPopover = this.renderPopover,
|
|
491
489
|
autoClosePopover = this.autoClosePopover,
|
|
492
|
-
markerProps = this.markerProps,
|
|
493
490
|
renderItem = this.renderItem;
|
|
494
491
|
return {
|
|
495
492
|
resultsToRender: data,
|
|
@@ -502,9 +499,8 @@ var ReactiveMap = {
|
|
|
502
499
|
renderPopover: renderPopover,
|
|
503
500
|
autoClosePopover: autoClosePopover,
|
|
504
501
|
renderSearchAsMove: this.renderSearchAsMove,
|
|
505
|
-
markerProps: markerProps,
|
|
506
502
|
handlePreserveCenter: this.handlePreserveCenter,
|
|
507
|
-
preserveCenter: this.preserveCenter,
|
|
503
|
+
preserveCenter: this.$options.preserveCenter,
|
|
508
504
|
handleOnDragEnd: this.handleOnDragEnd,
|
|
509
505
|
handleOnIdle: this.handleOnIdle,
|
|
510
506
|
handleZoomChange: this.handleZoomChange
|
|
@@ -575,7 +571,7 @@ var ReactiveMap = {
|
|
|
575
571
|
options.from = this.$data.from;
|
|
576
572
|
this.from = value;
|
|
577
573
|
this.currentPageState = page;
|
|
578
|
-
this.loadMoreAction(this.componentId, _extends(
|
|
574
|
+
this.loadMoreAction(this.componentId, _extends({}, options, {
|
|
579
575
|
from: value
|
|
580
576
|
}), false);
|
|
581
577
|
|
|
@@ -587,29 +583,6 @@ var ReactiveMap = {
|
|
|
587
583
|
setDefaultQueryForRSAPI: function setDefaultQueryForRSAPI() {
|
|
588
584
|
if (this.defaultQuery && typeof this.defaultQuery === 'function') {
|
|
589
585
|
var defaultQuery = this.defaultQuery();
|
|
590
|
-
|
|
591
|
-
if (this.mapBoxBounds) {
|
|
592
|
-
var _geo_bounding_box;
|
|
593
|
-
|
|
594
|
-
var geoQuery = {
|
|
595
|
-
geo_bounding_box: (_geo_bounding_box = {}, _geo_bounding_box[this.dataField] = this.mapBoxBounds, _geo_bounding_box)
|
|
596
|
-
};
|
|
597
|
-
|
|
598
|
-
var _defaultQuery = defaultQuery,
|
|
599
|
-
query = _defaultQuery.query,
|
|
600
|
-
options = _objectWithoutPropertiesLoose(_defaultQuery, ["query"]);
|
|
601
|
-
|
|
602
|
-
if (query) {
|
|
603
|
-
// adds defaultQuery's query to geo-query
|
|
604
|
-
// to generate a map query
|
|
605
|
-
defaultQuery = _extends({
|
|
606
|
-
query: {
|
|
607
|
-
must: [geoQuery, query]
|
|
608
|
-
}
|
|
609
|
-
}, options);
|
|
610
|
-
}
|
|
611
|
-
}
|
|
612
|
-
|
|
613
586
|
this.setDefaultQuery(this.componentId, defaultQuery);
|
|
614
587
|
}
|
|
615
588
|
},
|
|
@@ -633,7 +606,7 @@ var ReactiveMap = {
|
|
|
633
606
|
var west;
|
|
634
607
|
|
|
635
608
|
if (mapBounds) {
|
|
636
|
-
var
|
|
609
|
+
var _geo_bounding_box;
|
|
637
610
|
|
|
638
611
|
north = mapBounds.getNorthEast().lat();
|
|
639
612
|
south = mapBounds.getSouthWest().lat();
|
|
@@ -645,7 +618,7 @@ var ReactiveMap = {
|
|
|
645
618
|
};
|
|
646
619
|
this.mapBoxBounds = boundingBoxCoordinates;
|
|
647
620
|
var geoQuery = {
|
|
648
|
-
geo_bounding_box: (
|
|
621
|
+
geo_bounding_box: (_geo_bounding_box = {}, _geo_bounding_box[this.dataField] = boundingBoxCoordinates, _geo_bounding_box)
|
|
649
622
|
};
|
|
650
623
|
|
|
651
624
|
if (this.$defaultQuery) {
|
|
@@ -688,7 +661,7 @@ var ReactiveMap = {
|
|
|
688
661
|
var value = this.from + this.size;
|
|
689
662
|
var options = getQueryOptions(this.$props);
|
|
690
663
|
this.from = value;
|
|
691
|
-
this.loadMoreAction(this.componentId, _extends(
|
|
664
|
+
this.loadMoreAction(this.componentId, _extends({}, options, {
|
|
692
665
|
from: value
|
|
693
666
|
}), true);
|
|
694
667
|
}
|
|
@@ -716,13 +689,14 @@ var ReactiveMap = {
|
|
|
716
689
|
base = _this$getAllData3.base;
|
|
717
690
|
|
|
718
691
|
return results.map(function (result, index) {
|
|
719
|
-
return _extends(
|
|
692
|
+
return _extends({}, result, {
|
|
720
693
|
_click_id: base + index
|
|
721
694
|
});
|
|
722
695
|
});
|
|
723
696
|
},
|
|
724
697
|
toggleSearchAsMove: function toggleSearchAsMove() {
|
|
725
698
|
this.searchAsMove = !this.searchAsMove;
|
|
699
|
+
this.$emit('search-as-move', this.searchAsMove);
|
|
726
700
|
},
|
|
727
701
|
renderErrorComponent: function renderErrorComponent() {
|
|
728
702
|
var renderError = this.$scopedSlots.renderError || this.$props.renderError;
|
|
@@ -768,7 +742,7 @@ var ReactiveMap = {
|
|
|
768
742
|
"className": getClassName(this.innerClass, 'label') || null,
|
|
769
743
|
"for": this.$props.componentId + "-searchasmove"
|
|
770
744
|
}
|
|
771
|
-
}, [
|
|
745
|
+
}, [this.searchAsMoveLabel])]);
|
|
772
746
|
}
|
|
773
747
|
|
|
774
748
|
return null;
|
|
@@ -822,7 +796,7 @@ var ReactiveMap = {
|
|
|
822
796
|
|
|
823
797
|
if (this.$props.defaultQuery) {
|
|
824
798
|
this.$defaultQuery = this.$props.defaultQuery();
|
|
825
|
-
options = _extends(
|
|
799
|
+
options = _extends({}, options, getOptionsFromQuery(this.$defaultQuery)); // Override sort query with defaultQuery's sort if defined
|
|
826
800
|
|
|
827
801
|
if (this.$defaultQuery.sort) {
|
|
828
802
|
options.sort = this.$defaultQuery.sort;
|
|
@@ -836,7 +810,10 @@ var ReactiveMap = {
|
|
|
836
810
|
var forceExecute = false; // Update default query for RS API
|
|
837
811
|
|
|
838
812
|
this.setDefaultQueryForRSAPI();
|
|
839
|
-
|
|
813
|
+
var meta = {
|
|
814
|
+
mapBoxBounds: this.mapBoxBounds
|
|
815
|
+
};
|
|
816
|
+
this.setMapData(this.componentId, this.$defaultQuery.query, persistMapQuery, forceExecute, meta);
|
|
840
817
|
} else {
|
|
841
818
|
// only apply geo-distance when defaultQuery prop is not set
|
|
842
819
|
var query = this.getGeoDistanceQuery();
|
|
@@ -856,11 +833,11 @@ var ReactiveMap = {
|
|
|
856
833
|
|
|
857
834
|
var center = this.center || this.defaultCenter;
|
|
858
835
|
var coordinatesObject = this.getArrPosition(center);
|
|
859
|
-
var
|
|
836
|
+
var _meta = {
|
|
860
837
|
distance: this.defaultRadius,
|
|
861
838
|
coordinates: coordinatesObject.lat + ", " + coordinatesObject.lon
|
|
862
839
|
};
|
|
863
|
-
this.setMapData(this.componentId, query, _persistMapQuery, _forceExecute,
|
|
840
|
+
this.setMapData(this.componentId, query, _persistMapQuery, _forceExecute, _meta);
|
|
864
841
|
}
|
|
865
842
|
}
|
|
866
843
|
|
|
@@ -870,7 +847,7 @@ var ReactiveMap = {
|
|
|
870
847
|
var h = arguments[0];
|
|
871
848
|
var loader = this.$scopedSlots.loader || this.$props.loader;
|
|
872
849
|
return h("div", {
|
|
873
|
-
"style": _extends(
|
|
850
|
+
"style": _extends({}, style, this.$props.style),
|
|
874
851
|
"class": this.$props.className
|
|
875
852
|
}, [this.renderErrorComponent(), this.isLoading && loader, this.hasCustomRender ? this.getComponent() : null, this.renderMap(this.getMapParams()), this.pagination ? this.renderPagination() : null]);
|
|
876
853
|
}
|
|
@@ -914,9 +891,49 @@ ReactiveMap.install = function (Vue) {
|
|
|
914
891
|
|
|
915
892
|
ReactiveMap.componentType = componentTypes.reactiveMap;
|
|
916
893
|
|
|
894
|
+
var InfoWindow = components.InfoWindow;
|
|
895
|
+
var InfoWindowWrapper = {
|
|
896
|
+
name: 'InfoWindowWrapper',
|
|
897
|
+
props: {
|
|
898
|
+
id: VueTypes.string,
|
|
899
|
+
renderPopover: VueTypes.func,
|
|
900
|
+
infoWindowProps: VueTypes.object,
|
|
901
|
+
events: VueTypes.object
|
|
902
|
+
},
|
|
903
|
+
data: function data() {
|
|
904
|
+
return {
|
|
905
|
+
infoWindowRef: null
|
|
906
|
+
};
|
|
907
|
+
},
|
|
908
|
+
mounted: function mounted() {
|
|
909
|
+
this.infoWindowRef = this.$refs[this.id + "-Info-Window"];
|
|
910
|
+
},
|
|
911
|
+
methods: {
|
|
912
|
+
handleClose: function handleClose() {
|
|
913
|
+
this.infoWindowRef.$infoWindowObject.close();
|
|
914
|
+
}
|
|
915
|
+
},
|
|
916
|
+
render: function render() {
|
|
917
|
+
var h = arguments[0];
|
|
918
|
+
var renderPopover = this.renderPopover,
|
|
919
|
+
events = this.events;
|
|
920
|
+
return h(InfoWindow, {
|
|
921
|
+
"ref": this.id + "-Info-Window",
|
|
922
|
+
"props": _extends({}, this.infoWindowProps),
|
|
923
|
+
"on": _extends({}, events)
|
|
924
|
+
}, [h("div", [renderPopover(this.handleClose)])]);
|
|
925
|
+
}
|
|
926
|
+
};
|
|
927
|
+
|
|
928
|
+
var MapElementMixin = components.MapElementMixin; // Note: This file has been taken from https://github.com/eregnier/vue2-gmap-custom-marker/blob/master/gmap-custom-marker.vue
|
|
929
|
+
|
|
917
930
|
var MarkerWithLabel = {
|
|
918
931
|
name: 'MarkerWithLabel',
|
|
919
932
|
props: {
|
|
933
|
+
metaData: {
|
|
934
|
+
type: Object,
|
|
935
|
+
"default": undefined
|
|
936
|
+
},
|
|
920
937
|
marker: {
|
|
921
938
|
type: Object,
|
|
922
939
|
"default": undefined
|
|
@@ -1016,6 +1033,7 @@ var MarkerWithLabel = {
|
|
|
1016
1033
|
var _this3;
|
|
1017
1034
|
|
|
1018
1035
|
_this3 = _window$google$maps$O.call(this) || this;
|
|
1036
|
+
_this3.metaData = self.metaData;
|
|
1019
1037
|
|
|
1020
1038
|
_this3.setMap(map2);
|
|
1021
1039
|
|
|
@@ -1027,6 +1045,10 @@ var MarkerWithLabel = {
|
|
|
1027
1045
|
return _this3.repaint();
|
|
1028
1046
|
};
|
|
1029
1047
|
|
|
1048
|
+
_this3.getVisible = function () {
|
|
1049
|
+
return true;
|
|
1050
|
+
};
|
|
1051
|
+
|
|
1030
1052
|
return _this3;
|
|
1031
1053
|
}
|
|
1032
1054
|
|
|
@@ -1181,48 +1203,19 @@ var MarkerWithLabel = {
|
|
|
1181
1203
|
},
|
|
1182
1204
|
"on": {
|
|
1183
1205
|
"mouseover": this.handleMouseOver,
|
|
1184
|
-
"focus": this.handleFocus,
|
|
1185
1206
|
"mouseout": this.handleMouseOut,
|
|
1186
|
-
"blur": this.handleBlur,
|
|
1187
1207
|
"click": this.handleClick
|
|
1188
1208
|
}
|
|
1189
1209
|
}, [this.renderMarker()]);
|
|
1190
1210
|
}
|
|
1191
1211
|
};
|
|
1192
1212
|
|
|
1193
|
-
|
|
1194
|
-
|
|
1195
|
-
|
|
1196
|
-
|
|
1197
|
-
return data;
|
|
1198
|
-
};
|
|
1199
|
-
|
|
1200
|
-
return data;
|
|
1201
|
-
}
|
|
1202
|
-
|
|
1203
|
-
function _templateObject2() {
|
|
1204
|
-
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"]);
|
|
1205
|
-
|
|
1206
|
-
_templateObject2 = function _templateObject2() {
|
|
1207
|
-
return data;
|
|
1208
|
-
};
|
|
1209
|
-
|
|
1210
|
-
return data;
|
|
1211
|
-
}
|
|
1212
|
-
|
|
1213
|
-
function _templateObject() {
|
|
1214
|
-
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"]);
|
|
1215
|
-
|
|
1216
|
-
_templateObject = function _templateObject() {
|
|
1217
|
-
return data;
|
|
1218
|
-
};
|
|
1219
|
-
|
|
1220
|
-
return data;
|
|
1221
|
-
}
|
|
1222
|
-
var MapPin = styled('div')(_templateObject());
|
|
1223
|
-
var MapPinArrow = styled('div')(_templateObject2());
|
|
1224
|
-
var mapPinWrapper = css(_templateObject3());
|
|
1213
|
+
var _templateObject, _templateObject2, _templateObject3;
|
|
1214
|
+
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"])));
|
|
1215
|
+
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"])));
|
|
1216
|
+
var mapPinWrapper = css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteralLoose(["\n\t&:hover,\n\t&:focus {\n\t\tz-index: 200;\n\t}\n"])));
|
|
1225
1217
|
|
|
1218
|
+
var Marker = components.Marker;
|
|
1226
1219
|
var recordResultClick$1 = Actions.recordResultClick;
|
|
1227
1220
|
var GoogleMapMarker = {
|
|
1228
1221
|
name: 'GoogleMapMarker',
|
|
@@ -1230,54 +1223,63 @@ var GoogleMapMarker = {
|
|
|
1230
1223
|
index: VueTypes.number,
|
|
1231
1224
|
marker: VueTypes.object.isRequired,
|
|
1232
1225
|
getPosition: VueTypes.func.isRequired,
|
|
1233
|
-
markerOnTop: VueTypes.string,
|
|
1234
1226
|
defaultPin: VueTypes.string,
|
|
1235
1227
|
renderItem: VueTypes.func,
|
|
1236
|
-
setMarkerOnTop: VueTypes.func.isRequired,
|
|
1237
1228
|
setOpenMarkers: VueTypes.func.isRequired,
|
|
1238
1229
|
handlePreserveCenter: VueTypes.func.isRequired,
|
|
1239
1230
|
autoClosePopover: VueTypes.bool,
|
|
1240
1231
|
openMarkers: VueTypes.object,
|
|
1241
|
-
renderPopover: VueTypes.func
|
|
1232
|
+
renderPopover: VueTypes.func,
|
|
1233
|
+
highlightMarkerOnHover: VueTypes.bool
|
|
1234
|
+
},
|
|
1235
|
+
data: function data() {
|
|
1236
|
+
return {
|
|
1237
|
+
zIndex: 0,
|
|
1238
|
+
markerIcon: null
|
|
1239
|
+
};
|
|
1242
1240
|
},
|
|
1243
1241
|
methods: {
|
|
1244
1242
|
increaseMarkerZIndex: function increaseMarkerZIndex() {
|
|
1245
|
-
var
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1243
|
+
var handlePreserveCenter = this.$props.handlePreserveCenter;
|
|
1244
|
+
|
|
1245
|
+
if (this.highlightMarkerOnHover) {
|
|
1246
|
+
this.zIndex += 1;
|
|
1247
|
+
}
|
|
1248
|
+
|
|
1250
1249
|
handlePreserveCenter(true);
|
|
1251
1250
|
},
|
|
1252
1251
|
removeMarkerZIndex: function removeMarkerZIndex() {
|
|
1253
|
-
var
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
|
|
1252
|
+
var handlePreserveCenter = this.$props.handlePreserveCenter;
|
|
1253
|
+
|
|
1254
|
+
if (this.highlightMarkerOnHover) {
|
|
1255
|
+
this.zIndex -= 1;
|
|
1256
|
+
}
|
|
1257
|
+
|
|
1257
1258
|
handlePreserveCenter(true);
|
|
1258
1259
|
},
|
|
1259
1260
|
openMarker: function openMarker() {
|
|
1260
1261
|
var _ref, _extends2;
|
|
1261
1262
|
|
|
1262
|
-
var _this$$
|
|
1263
|
-
handleOpenMarkers = _this$$
|
|
1264
|
-
openMarkers = _this$$
|
|
1265
|
-
marker = _this$$
|
|
1266
|
-
autoClosePopover = _this$$
|
|
1267
|
-
handlePreserveCenter = _this$$
|
|
1263
|
+
var _this$$props = this.$props,
|
|
1264
|
+
handleOpenMarkers = _this$$props.setOpenMarkers,
|
|
1265
|
+
openMarkers = _this$$props.openMarkers,
|
|
1266
|
+
marker = _this$$props.marker,
|
|
1267
|
+
autoClosePopover = _this$$props.autoClosePopover,
|
|
1268
|
+
handlePreserveCenter = _this$$props.handlePreserveCenter;
|
|
1268
1269
|
var id = marker._id;
|
|
1269
|
-
var newOpenMarkers = autoClosePopover ? (_ref = {}, _ref[id] = true, _ref) : _extends(
|
|
1270
|
+
var newOpenMarkers = autoClosePopover ? (_ref = {}, _ref[id] = true, _ref) : _extends({}, openMarkers, (_extends2 = {}, _extends2[id] = true, _extends2));
|
|
1270
1271
|
handleOpenMarkers(newOpenMarkers);
|
|
1271
1272
|
handlePreserveCenter(true);
|
|
1272
1273
|
this.triggerAnalytics();
|
|
1274
|
+
this.$emit('open-marker-popover', marker);
|
|
1273
1275
|
},
|
|
1274
1276
|
closeMarker: function closeMarker() {
|
|
1275
|
-
var _this$$
|
|
1276
|
-
handleOpenMarkers = _this$$
|
|
1277
|
-
marker = _this$$
|
|
1278
|
-
autoClosePopover = _this$$
|
|
1279
|
-
handlePreserveCenter = _this$$
|
|
1280
|
-
openMarkers = _this$$
|
|
1277
|
+
var _this$$props2 = this.$props,
|
|
1278
|
+
handleOpenMarkers = _this$$props2.setOpenMarkers,
|
|
1279
|
+
marker = _this$$props2.marker,
|
|
1280
|
+
autoClosePopover = _this$$props2.autoClosePopover,
|
|
1281
|
+
handlePreserveCenter = _this$$props2.handlePreserveCenter,
|
|
1282
|
+
openMarkers = _this$$props2.openMarkers;
|
|
1281
1283
|
var id = marker._id;
|
|
1282
1284
|
|
|
1283
1285
|
var del = openMarkers[id],
|
|
@@ -1286,6 +1288,7 @@ var GoogleMapMarker = {
|
|
|
1286
1288
|
var newOpenMarkers = autoClosePopover ? {} : activeMarkers;
|
|
1287
1289
|
handleOpenMarkers(newOpenMarkers);
|
|
1288
1290
|
handlePreserveCenter(true);
|
|
1291
|
+
this.$emit('close-marker-popover', marker);
|
|
1289
1292
|
},
|
|
1290
1293
|
triggerAnalytics: function triggerAnalytics() {
|
|
1291
1294
|
this.recordResultClick(this.index, this.marker._id);
|
|
@@ -1299,10 +1302,10 @@ var GoogleMapMarker = {
|
|
|
1299
1302
|
|
|
1300
1303
|
var h = this.$createElement;
|
|
1301
1304
|
var additionalProps = {};
|
|
1302
|
-
var _this$$
|
|
1303
|
-
getPosition = _this$$
|
|
1304
|
-
|
|
1305
|
-
openMarkers = _this$$
|
|
1305
|
+
var _this$$props3 = this.$props,
|
|
1306
|
+
getPosition = _this$$props3.getPosition,
|
|
1307
|
+
_renderPopover = _this$$props3.renderPopover,
|
|
1308
|
+
openMarkers = _this$$props3.openMarkers;
|
|
1306
1309
|
|
|
1307
1310
|
if (includeExternalSettings) {
|
|
1308
1311
|
// to render pop-over correctly with MarkerWithLabel
|
|
@@ -1315,19 +1318,32 @@ var GoogleMapMarker = {
|
|
|
1315
1318
|
}
|
|
1316
1319
|
|
|
1317
1320
|
if (item._id in openMarkers) {
|
|
1318
|
-
return h(
|
|
1319
|
-
"attrs": {
|
|
1320
|
-
"zIndex": 500,
|
|
1321
|
-
"position": additionalProps.position,
|
|
1322
|
-
"options": additionalProps.defaultOptions
|
|
1323
|
-
},
|
|
1321
|
+
return h(InfoWindowWrapper, {
|
|
1324
1322
|
"key": item._id + "-InfoWindow",
|
|
1325
|
-
"
|
|
1326
|
-
"
|
|
1327
|
-
|
|
1323
|
+
"attrs": {
|
|
1324
|
+
"id": item._id,
|
|
1325
|
+
"renderPopover": function renderPopover(_handleClose) {
|
|
1326
|
+
return _renderPopover({
|
|
1327
|
+
item: item,
|
|
1328
|
+
handleClose: function handleClose() {
|
|
1329
|
+
_handleClose();
|
|
1330
|
+
|
|
1331
|
+
_this.closeMarker();
|
|
1332
|
+
}
|
|
1333
|
+
});
|
|
1334
|
+
},
|
|
1335
|
+
"infoWindowProps": {
|
|
1336
|
+
zIndex: 500,
|
|
1337
|
+
position: additionalProps.position,
|
|
1338
|
+
options: additionalProps.defaultOptions
|
|
1339
|
+
},
|
|
1340
|
+
"events": {
|
|
1341
|
+
closeclick: function closeclick() {
|
|
1342
|
+
return _this.closeMarker();
|
|
1343
|
+
}
|
|
1328
1344
|
}
|
|
1329
1345
|
}
|
|
1330
|
-
}
|
|
1346
|
+
});
|
|
1331
1347
|
}
|
|
1332
1348
|
|
|
1333
1349
|
return null;
|
|
@@ -1337,35 +1353,35 @@ var GoogleMapMarker = {
|
|
|
1337
1353
|
var _this2 = this;
|
|
1338
1354
|
|
|
1339
1355
|
var h = arguments[0];
|
|
1340
|
-
var _this$$
|
|
1341
|
-
getPosition = _this$$
|
|
1342
|
-
renderItem = _this$$
|
|
1343
|
-
defaultPin = _this$$
|
|
1344
|
-
|
|
1345
|
-
|
|
1346
|
-
|
|
1347
|
-
customMarkerProps = _this$$props6.markerProps,
|
|
1348
|
-
marker = _this$$props6.marker,
|
|
1349
|
-
markerOnTop = _this$$props6.markerOnTop;
|
|
1356
|
+
var _this$$props4 = this.$props,
|
|
1357
|
+
getPosition = _this$$props4.getPosition,
|
|
1358
|
+
renderItem = _this$$props4.renderItem,
|
|
1359
|
+
defaultPin = _this$$props4.defaultPin,
|
|
1360
|
+
renderPopover = _this$$props4.renderPopover,
|
|
1361
|
+
customMarkerProps = _this$$props4.markerProps,
|
|
1362
|
+
marker = _this$$props4.marker;
|
|
1350
1363
|
var markerProps = {};
|
|
1351
1364
|
|
|
1352
|
-
if (
|
|
1353
|
-
markerProps.zIndex = window.google.maps.Marker.MAX_ZINDEX +
|
|
1365
|
+
if (this.zIndex) {
|
|
1366
|
+
markerProps.zIndex = window.google.maps.Marker.MAX_ZINDEX + this.zIndex;
|
|
1354
1367
|
}
|
|
1355
1368
|
|
|
1356
1369
|
if (renderItem) {
|
|
1370
|
+
marker.setIcon = function (icon) {
|
|
1371
|
+
_this2.markerIcon = icon;
|
|
1372
|
+
};
|
|
1373
|
+
|
|
1357
1374
|
var data = renderItem(marker);
|
|
1358
1375
|
|
|
1359
1376
|
if ('label' in data) {
|
|
1360
1377
|
return h(MarkerWithLabel, {
|
|
1361
1378
|
"key": marker._id,
|
|
1362
1379
|
"attrs": {
|
|
1380
|
+
"metaData": marker,
|
|
1363
1381
|
"marker": getPosition(marker),
|
|
1364
1382
|
"labelAnchor": new window.google.maps.Point(0, 30),
|
|
1365
1383
|
"handleMouseOver": this.increaseMarkerZIndex,
|
|
1366
|
-
"handleFocus": this.increaseMarkerZIndex,
|
|
1367
1384
|
"handleMouseOut": this.removeMarkerZIndex,
|
|
1368
|
-
"handleBlur": this.removeMarkerZIndex,
|
|
1369
1385
|
"handleClick": this.openMarker,
|
|
1370
1386
|
"zIndex": markerProps.zIndex,
|
|
1371
1387
|
"renderMarker": function renderMarker() {
|
|
@@ -1386,12 +1402,11 @@ var GoogleMapMarker = {
|
|
|
1386
1402
|
return h(MarkerWithLabel, {
|
|
1387
1403
|
"key": marker._id,
|
|
1388
1404
|
"attrs": {
|
|
1405
|
+
"metaData": marker,
|
|
1389
1406
|
"marker": getPosition(marker),
|
|
1390
1407
|
"handleClick": this.openMarker,
|
|
1391
1408
|
"handleMouseOver": this.increaseMarkerZIndex,
|
|
1392
|
-
"handleFocus": this.increaseMarkerZIndex,
|
|
1393
1409
|
"handleMouseOut": this.removeMarkerZIndex,
|
|
1394
|
-
"handleBlur": this.removeMarkerZIndex,
|
|
1395
1410
|
"zIndex": markerProps.zIndex,
|
|
1396
1411
|
"renderMarker": function renderMarker() {
|
|
1397
1412
|
return h("div", {
|
|
@@ -1413,18 +1428,19 @@ var GoogleMapMarker = {
|
|
|
1413
1428
|
return h(Marker, {
|
|
1414
1429
|
"key": marker._id,
|
|
1415
1430
|
"attrs": {
|
|
1416
|
-
"icon": markerProps.icon,
|
|
1417
1431
|
"zIndex": markerProps.zIndex,
|
|
1418
|
-
"position": getPosition(marker)
|
|
1432
|
+
"position": getPosition(marker),
|
|
1433
|
+
"options": {
|
|
1434
|
+
metaData: marker
|
|
1435
|
+
},
|
|
1436
|
+
"icon": this.markerIcon || markerProps.icon
|
|
1419
1437
|
},
|
|
1420
1438
|
"on": {
|
|
1421
1439
|
"click": function click() {
|
|
1422
|
-
return _this2.openMarker(
|
|
1440
|
+
return _this2.openMarker();
|
|
1423
1441
|
},
|
|
1424
1442
|
"mouseover": this.increaseMarkerZIndex,
|
|
1425
|
-
"
|
|
1426
|
-
"mouseout": this.removeMarkerZIndex,
|
|
1427
|
-
"blur": this.removeMarkerZIndex
|
|
1443
|
+
"mouseout": this.removeMarkerZIndex
|
|
1428
1444
|
},
|
|
1429
1445
|
"props": _extends({}, customMarkerProps)
|
|
1430
1446
|
}, [renderPopover ? this.renderPopoverClick(marker) : null]);
|
|
@@ -1437,40 +1453,58 @@ var GoogleMapMarker$1 = connect(function () {
|
|
|
1437
1453
|
return null;
|
|
1438
1454
|
}, mapDispatchToProps$1)(GoogleMapMarker);
|
|
1439
1455
|
|
|
1456
|
+
var Cluster = components.Cluster;
|
|
1440
1457
|
var GoogleMapMarkers = {
|
|
1441
1458
|
name: 'GoogleMapMarkers',
|
|
1442
1459
|
props: {
|
|
1443
1460
|
resultsToRender: VueTypes.array,
|
|
1444
1461
|
getPosition: VueTypes.func,
|
|
1445
1462
|
renderItem: VueTypes.func,
|
|
1463
|
+
renderClusterPopover: VueTypes.func,
|
|
1446
1464
|
defaultPin: VueTypes.string,
|
|
1447
1465
|
autoClosePopover: VueTypes.bool,
|
|
1448
1466
|
handlePreserveCenter: VueTypes.func,
|
|
1449
1467
|
renderPopover: VueTypes.func,
|
|
1450
1468
|
markerProps: VueTypes.object,
|
|
1451
|
-
|
|
1469
|
+
clusterProps: VueTypes.object,
|
|
1470
|
+
showMarkerClusters: VueTypes.bool,
|
|
1471
|
+
highlightMarkerOnHover: VueTypes.bool
|
|
1452
1472
|
},
|
|
1453
1473
|
data: function data() {
|
|
1454
1474
|
return {
|
|
1455
|
-
|
|
1456
|
-
|
|
1475
|
+
openMarkers: {},
|
|
1476
|
+
clickedCluster: null,
|
|
1477
|
+
clusterMarkers: []
|
|
1457
1478
|
};
|
|
1458
1479
|
},
|
|
1459
1480
|
methods: {
|
|
1460
|
-
setMarkerOnTop: function setMarkerOnTop(markerOnTop) {
|
|
1461
|
-
this.markerOnTop = markerOnTop;
|
|
1462
|
-
},
|
|
1463
1481
|
setOpenMarkers: function setOpenMarkers(openMarkers) {
|
|
1464
1482
|
this.openMarkers = openMarkers;
|
|
1483
|
+
},
|
|
1484
|
+
getAdditionalProps: function getAdditionalProps() {
|
|
1485
|
+
return {
|
|
1486
|
+
position: {
|
|
1487
|
+
lat: this.clickedCluster.getCenter().lat(),
|
|
1488
|
+
lng: this.clickedCluster.getCenter().lng()
|
|
1489
|
+
},
|
|
1490
|
+
defaultOptions: {
|
|
1491
|
+
pixelOffset: new window.google.maps.Size(0, -30)
|
|
1492
|
+
}
|
|
1493
|
+
};
|
|
1494
|
+
},
|
|
1495
|
+
closeMarker: function closeMarker() {
|
|
1496
|
+
this.clickedCluster = null;
|
|
1497
|
+
this.clusterMarkers = [];
|
|
1498
|
+
this.$emit('close-cluster-popover');
|
|
1465
1499
|
}
|
|
1466
1500
|
},
|
|
1467
1501
|
render: function render() {
|
|
1502
|
+
var _this = this;
|
|
1503
|
+
|
|
1468
1504
|
var h = arguments[0];
|
|
1469
1505
|
var resultsToRender = this.$props.resultsToRender;
|
|
1470
|
-
var
|
|
1471
|
-
openMarkers = this.openMarkers;
|
|
1506
|
+
var openMarkers = this.openMarkers;
|
|
1472
1507
|
var markerProps = {
|
|
1473
|
-
markerOnTop: markerOnTop,
|
|
1474
1508
|
openMarkers: openMarkers,
|
|
1475
1509
|
setMarkerOnTop: this.setMarkerOnTop,
|
|
1476
1510
|
setOpenMarkers: this.setOpenMarkers,
|
|
@@ -1481,19 +1515,58 @@ var GoogleMapMarkers = {
|
|
|
1481
1515
|
handlePreserveCenter: this.handlePreserveCenter,
|
|
1482
1516
|
renderPopover: this.renderPopover,
|
|
1483
1517
|
markerProps: this.markerProps,
|
|
1484
|
-
showMarkerClusters: this.showMarkerClusters
|
|
1518
|
+
showMarkerClusters: this.showMarkerClusters,
|
|
1519
|
+
highlightMarkerOnHover: this.highlightMarkerOnHover
|
|
1485
1520
|
};
|
|
1486
1521
|
|
|
1487
1522
|
if (this.showMarkerClusters) {
|
|
1488
|
-
return h(
|
|
1523
|
+
return h("div", [h(Cluster, {
|
|
1524
|
+
"props": _extends({}, this.clusterProps),
|
|
1525
|
+
"on": {
|
|
1526
|
+
"click": function click(cluster) {
|
|
1527
|
+
var markers = cluster.markers.map(function (i) {
|
|
1528
|
+
return i.metaData;
|
|
1529
|
+
});
|
|
1530
|
+
_this.clickedCluster = cluster;
|
|
1531
|
+
_this.clusterMarkers = markers;
|
|
1532
|
+
|
|
1533
|
+
_this.$emit('open-cluster-popover', _this.clusterMarkers);
|
|
1534
|
+
}
|
|
1535
|
+
},
|
|
1536
|
+
"ref": "clusterRef"
|
|
1537
|
+
}, [resultsToRender.map(function (marker, index) {
|
|
1489
1538
|
return h(GoogleMapMarker$1, {
|
|
1490
1539
|
"attrs": {
|
|
1491
1540
|
"index": index,
|
|
1492
1541
|
"marker": marker
|
|
1493
1542
|
},
|
|
1494
|
-
"props": _extends({}, markerProps)
|
|
1543
|
+
"props": _extends({}, markerProps),
|
|
1544
|
+
"on": _extends({}, _this.$listeners)
|
|
1495
1545
|
});
|
|
1496
|
-
})])
|
|
1546
|
+
})]), this.clickedCluster && this.renderClusterPopover ? h(InfoWindowWrapper, {
|
|
1547
|
+
"attrs": {
|
|
1548
|
+
"id": "cluster",
|
|
1549
|
+
"infoWindowProps": {
|
|
1550
|
+
zIndex: 500,
|
|
1551
|
+
position: this.getAdditionalProps().position,
|
|
1552
|
+
options: this.getAdditionalProps().defaultOptions
|
|
1553
|
+
},
|
|
1554
|
+
"renderPopover": function renderPopover(_handleClose) {
|
|
1555
|
+
return _this.renderClusterPopover({
|
|
1556
|
+
markers: _this.clusterMarkers,
|
|
1557
|
+
cluster: _this.clickedCluster,
|
|
1558
|
+
handleClose: function handleClose() {
|
|
1559
|
+
_handleClose();
|
|
1560
|
+
|
|
1561
|
+
_this.closeMarker();
|
|
1562
|
+
}
|
|
1563
|
+
});
|
|
1564
|
+
},
|
|
1565
|
+
"events": {
|
|
1566
|
+
closeclick: this.closeMarker
|
|
1567
|
+
}
|
|
1568
|
+
}
|
|
1569
|
+
}) : null]);
|
|
1497
1570
|
}
|
|
1498
1571
|
|
|
1499
1572
|
return h("div", [resultsToRender.map(function (marker, index) {
|
|
@@ -1502,32 +1575,36 @@ var GoogleMapMarkers = {
|
|
|
1502
1575
|
"index": index,
|
|
1503
1576
|
"marker": marker
|
|
1504
1577
|
},
|
|
1505
|
-
"props": _extends({}, markerProps)
|
|
1578
|
+
"props": _extends({}, markerProps),
|
|
1579
|
+
"on": _extends({}, _this.$listeners)
|
|
1506
1580
|
});
|
|
1507
1581
|
})]);
|
|
1508
1582
|
}
|
|
1509
1583
|
};
|
|
1510
1584
|
|
|
1585
|
+
var Map = components.MapLayer;
|
|
1511
1586
|
var ReactiveGoogleMap = {
|
|
1512
1587
|
name: 'ReactiveGoogleMap',
|
|
1513
1588
|
props: {
|
|
1514
1589
|
className: types.string,
|
|
1515
1590
|
componentId: types.stringRequired,
|
|
1516
1591
|
dataField: types.stringRequired,
|
|
1517
|
-
defaultQuery:
|
|
1592
|
+
defaultQuery: VueTypes.func,
|
|
1518
1593
|
loader: types.title,
|
|
1519
1594
|
defaultZoom: VueTypes.number.def(13),
|
|
1520
1595
|
react: types.react,
|
|
1521
1596
|
size: types.number,
|
|
1522
1597
|
sortBy: types.sortBy,
|
|
1523
|
-
URLParams:
|
|
1598
|
+
URLParams: VueTypes.bool,
|
|
1524
1599
|
mapProps: VueTypes.object,
|
|
1525
1600
|
showMarkers: VueTypes.bool.def(true),
|
|
1526
1601
|
showMarkerClusters: VueTypes.bool.def(false),
|
|
1527
1602
|
searchAsMove: VueTypes.bool.def(false),
|
|
1528
|
-
|
|
1603
|
+
searchAsMoveLabel: VueTypes.string,
|
|
1604
|
+
markerProps: VueTypes.object,
|
|
1605
|
+
clusterProps: VueTypes.object,
|
|
1529
1606
|
renderItem: VueTypes.func,
|
|
1530
|
-
showSearchAsMove:
|
|
1607
|
+
showSearchAsMove: VueTypes.bool.def(true),
|
|
1531
1608
|
autoClosePopover: VueTypes.bool,
|
|
1532
1609
|
pagination: VueTypes.bool,
|
|
1533
1610
|
defaultPin: VueTypes.string,
|
|
@@ -1537,7 +1614,8 @@ var ReactiveGoogleMap = {
|
|
|
1537
1614
|
defaultRadius: types.number,
|
|
1538
1615
|
unit: types.string,
|
|
1539
1616
|
pages: VueTypes.number.def(5),
|
|
1540
|
-
calculateMarkers: VueTypes.func
|
|
1617
|
+
calculateMarkers: VueTypes.func,
|
|
1618
|
+
highlightMarkerOnHover: VueTypes.bool.def(true)
|
|
1541
1619
|
},
|
|
1542
1620
|
methods: {
|
|
1543
1621
|
renderMap: function renderMap(_ref) {
|
|
@@ -1552,9 +1630,7 @@ var ReactiveGoogleMap = {
|
|
|
1552
1630
|
renderSearchAsMove = _ref.renderSearchAsMove,
|
|
1553
1631
|
handlePreserveCenter = _ref.handlePreserveCenter,
|
|
1554
1632
|
getPosition = _ref.getPosition,
|
|
1555
|
-
markerProps = _ref.markerProps,
|
|
1556
1633
|
autoClosePopover = _ref.autoClosePopover,
|
|
1557
|
-
renderPopover = _ref.renderPopover,
|
|
1558
1634
|
defaultPin = _ref.defaultPin;
|
|
1559
1635
|
var h = this.$createElement;
|
|
1560
1636
|
var style = {
|
|
@@ -1587,8 +1663,10 @@ var ReactiveGoogleMap = {
|
|
|
1587
1663
|
"attrs": {
|
|
1588
1664
|
"resultsToRender": resultsToRender,
|
|
1589
1665
|
"getPosition": getPosition,
|
|
1590
|
-
"markerProps": markerProps,
|
|
1666
|
+
"markerProps": this.markerProps,
|
|
1667
|
+
"clusterProps": this.clusterProps,
|
|
1591
1668
|
"handlePreserveCenter": handlePreserveCenter,
|
|
1669
|
+
"highlightMarkerOnHover": this.highlightMarkerOnHover,
|
|
1592
1670
|
"renderItem": this.$scopedSlots.renderItem ? function () {
|
|
1593
1671
|
return {
|
|
1594
1672
|
custom: _this.$scopedSlots.renderItem
|
|
@@ -1596,9 +1674,11 @@ var ReactiveGoogleMap = {
|
|
|
1596
1674
|
} : this.renderItem,
|
|
1597
1675
|
"defaultPin": defaultPin,
|
|
1598
1676
|
"autoClosePopover": autoClosePopover,
|
|
1599
|
-
"renderPopover": renderPopover,
|
|
1677
|
+
"renderPopover": this.$scopedSlots.renderPopover,
|
|
1678
|
+
"renderClusterPopover": this.$scopedSlots.renderClusterPopover,
|
|
1600
1679
|
"showMarkerClusters": this.showMarkerClusters
|
|
1601
|
-
}
|
|
1680
|
+
},
|
|
1681
|
+
"on": _extends({}, this.$listeners)
|
|
1602
1682
|
}) : null]), renderSearchAsMove()]);
|
|
1603
1683
|
},
|
|
1604
1684
|
getMapRef: function getMapRef() {
|
|
@@ -1615,8 +1695,6 @@ var ReactiveGoogleMap = {
|
|
|
1615
1695
|
}
|
|
1616
1696
|
},
|
|
1617
1697
|
render: function render() {
|
|
1618
|
-
var _this3 = this;
|
|
1619
|
-
|
|
1620
1698
|
var h = arguments[0];
|
|
1621
1699
|
return h(RMConnected, _mergeJSXProps([{
|
|
1622
1700
|
"attrs": {
|
|
@@ -1633,14 +1711,12 @@ var ReactiveGoogleMap = {
|
|
|
1633
1711
|
"uRLParams": this.URLParams,
|
|
1634
1712
|
"defaultSearchAsMove": this.searchAsMove,
|
|
1635
1713
|
"showSearchAsMove": this.showSearchAsMove,
|
|
1714
|
+
"searchAsMoveLabel": this.searchAsMoveLabel,
|
|
1636
1715
|
"showMarkers": this.showMarkers,
|
|
1637
1716
|
"markerProps": this.markerProps,
|
|
1638
1717
|
"autoClosePopover": this.autoClosePopover,
|
|
1639
1718
|
"defaultPin": this.defaultPin,
|
|
1640
1719
|
"defaultQuery": this.defaultQuery,
|
|
1641
|
-
"renderPopover": this.$scopedSlots.renderPopover ? function (item) {
|
|
1642
|
-
return _this3.$scopedSlots.renderPopover(item);
|
|
1643
|
-
} : null,
|
|
1644
1720
|
"autoCenter": this.autoCenter,
|
|
1645
1721
|
"defaultCenter": this.defaultCenter,
|
|
1646
1722
|
"defaultRadius": this.defaultRadius,
|
|
@@ -1664,7 +1740,7 @@ ReactiveGoogleMap.install = function (Vue, options) {
|
|
|
1664
1740
|
console.error('ReactiveSearch: map key is required to use ReactiveGoogleMap component');
|
|
1665
1741
|
}
|
|
1666
1742
|
|
|
1667
|
-
Vue.use(
|
|
1743
|
+
Vue.use(GmapVue, {
|
|
1668
1744
|
load: {
|
|
1669
1745
|
key: options.key,
|
|
1670
1746
|
libraries: 'places'
|