@appbaseio/reactivesearch-vue 2.0.0-alpha.4 → 3.0.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. package/README.md +9 -9
  2. package/dist/@appbaseio/reactivesearch-vue.umd.js +21316 -29369
  3. package/dist/@appbaseio/reactivesearch-vue.umd.js.map +1 -1
  4. package/dist/@appbaseio/reactivesearch-vue.umd.min.js +5 -19
  5. package/dist/@appbaseio/reactivesearch-vue.umd.min.js.map +1 -1
  6. package/dist/cjs/Button-ad042719.js +59 -0
  7. package/dist/cjs/Card-f5ab024a.js +27 -0
  8. package/dist/cjs/{ComponentWrapper-ad3dad02.js → ComponentWrapper-611cf7f9.js} +44 -58
  9. package/dist/cjs/Container-29f049b2.js +12 -0
  10. package/dist/cjs/DropDown-dc184468.js +700 -0
  11. package/dist/cjs/DynamicRangeSlider.js +106 -157
  12. package/dist/cjs/Flex-d5675ea6.js +48 -0
  13. package/dist/cjs/FormControlList-fadd792f.js +42 -0
  14. package/dist/cjs/Input-088dfcb4.js +74 -0
  15. package/dist/cjs/ListItem-d57d648d.js +42 -0
  16. package/dist/cjs/MultiDropdownList.js +124 -240
  17. package/dist/cjs/MultiList.js +124 -262
  18. package/dist/cjs/MultiRange.js +87 -133
  19. package/dist/cjs/{Pagination-71e85fa9.js → Pagination-b5ddc906.js} +70 -83
  20. package/dist/cjs/PreferencesConsumer-22d1b49f.js +73 -0
  21. package/dist/cjs/RangeInput.js +163 -171
  22. package/dist/cjs/RangeSlider.js +81 -109
  23. package/dist/cjs/ReactiveBase.js +139 -156
  24. package/dist/cjs/ReactiveComponent-a6108189.js +2184 -0
  25. package/dist/cjs/ReactiveComponent.js +46 -340
  26. package/dist/cjs/ReactiveGoogleMap.js +451 -660
  27. package/dist/cjs/ReactiveList.js +180 -305
  28. package/dist/cjs/ResultCard.js +36 -36
  29. package/dist/cjs/ResultList.js +48 -56
  30. package/dist/cjs/SelectedFilters.js +62 -69
  31. package/dist/cjs/SingleDropdownList.js +117 -177
  32. package/dist/cjs/SingleList.js +122 -206
  33. package/dist/cjs/SingleRange.js +78 -105
  34. package/dist/cjs/StateProvider.js +35 -38
  35. package/dist/cjs/Title-8802a218.js +12 -0
  36. package/dist/cjs/ToggleButton.js +72 -119
  37. package/dist/cjs/{_rollupPluginBabelHelpers-c705cbe6.js → _rollupPluginBabelHelpers-f8b843f8.js} +0 -15
  38. package/dist/cjs/{index-6a167fe0.js → index-d8d8f291.js} +38 -108
  39. package/dist/cjs/index.js +44 -41
  40. package/dist/cjs/initReactivesearch.js +63 -150
  41. package/dist/cjs/install.js +47 -43
  42. package/dist/cjs/ssr-6c8a72e1.js +66 -0
  43. package/dist/cjs/{utils-d6a52588.js → utils-83fd01e9.js} +7 -16
  44. package/dist/cjs/version.js +1 -1
  45. package/dist/cjs/{vueTypes-727b7c63.js → vueTypes-1bf00978.js} +8 -19
  46. package/dist/es/Button-474510e3.js +53 -0
  47. package/dist/es/{Card-450683f1.js → Card-38cbe652.js} +3 -3
  48. package/dist/es/{ComponentWrapper-424e86fd.js → ComponentWrapper-3dfe6931.js} +44 -58
  49. package/dist/es/{Container-ba826e96.js → Container-d00219f7.js} +2 -2
  50. package/dist/es/DropDown-029ffd42.js +690 -0
  51. package/dist/es/DynamicRangeSlider.js +106 -157
  52. package/dist/es/Flex-a08e22d7.js +46 -0
  53. package/dist/es/FormControlList-fe6eaee4.js +38 -0
  54. package/dist/es/Input-ad474a55.js +69 -0
  55. package/dist/es/{ListItem-cad14c5e.js → ListItem-16756c02.js} +7 -8
  56. package/dist/es/MultiDropdownList.js +124 -240
  57. package/dist/es/MultiList.js +124 -262
  58. package/dist/es/MultiRange.js +87 -133
  59. package/dist/es/{Pagination-784bf143.js → Pagination-72bd1d9e.js} +70 -83
  60. package/dist/es/PreferencesConsumer-24e88f3b.js +71 -0
  61. package/dist/es/RangeInput.js +163 -170
  62. package/dist/es/RangeSlider.js +81 -109
  63. package/dist/es/ReactiveBase.js +138 -154
  64. package/dist/es/ReactiveComponent-0a97eb1e.js +2178 -0
  65. package/dist/es/ReactiveComponent.js +42 -337
  66. package/dist/es/ReactiveGoogleMap.js +446 -654
  67. package/dist/es/ReactiveList.js +178 -302
  68. package/dist/es/ResultCard.js +36 -36
  69. package/dist/es/ResultList.js +48 -56
  70. package/dist/es/SelectedFilters.js +62 -69
  71. package/dist/es/SingleDropdownList.js +117 -177
  72. package/dist/es/SingleList.js +122 -206
  73. package/dist/es/SingleRange.js +78 -105
  74. package/dist/es/StateProvider.js +36 -39
  75. package/dist/es/{Title-3342664a.js → Title-863dfa42.js} +2 -2
  76. package/dist/es/ToggleButton.js +72 -119
  77. package/dist/es/{_rollupPluginBabelHelpers-76660dab.js → _rollupPluginBabelHelpers-ded08042.js} +0 -15
  78. package/dist/es/{index-7788a843.js → index-4520a598.js} +39 -107
  79. package/dist/es/index.js +30 -32
  80. package/dist/es/initReactivesearch.js +63 -150
  81. package/dist/es/install.js +49 -41
  82. package/dist/es/{ssr-b2c0b401.js → ssr-584c278d.js} +37 -8
  83. package/dist/es/{utils-9e68acee.js → utils-9e5a16a1.js} +7 -16
  84. package/dist/es/version.js +1 -1
  85. package/dist/es/{vueTypes-b8146772.js → vueTypes-f1923c72.js} +8 -19
  86. package/package.json +10 -9
  87. package/dist/cjs/Button-446f819e.js +0 -68
  88. package/dist/cjs/CancelSvg-9f258f4f.js +0 -449
  89. package/dist/cjs/Card-642547a8.js +0 -30
  90. package/dist/cjs/Container-daf30918.js +0 -15
  91. package/dist/cjs/DataSearch-aa04dc6e.js +0 -2352
  92. package/dist/cjs/DataSearch.js +0 -30
  93. package/dist/cjs/DropDown-c479bbb0.js +0 -328
  94. package/dist/cjs/Flex-aa517a13.js +0 -52
  95. package/dist/cjs/FormControlList-c195a592.js +0 -47
  96. package/dist/cjs/Input-e6603a7e.js +0 -79
  97. package/dist/cjs/ListItem-8c9e0d68.js +0 -46
  98. package/dist/cjs/Title-1de7d0f4.js +0 -15
  99. package/dist/cjs/install-b97dbac4.js +0 -1409
  100. package/dist/cjs/ssr-3027b848.js +0 -39
  101. package/dist/es/Button-d8bc15ea.js +0 -59
  102. package/dist/es/CancelSvg-4cfae5fd.js +0 -440
  103. package/dist/es/DataSearch-b86a6675.js +0 -2337
  104. package/dist/es/DataSearch.js +0 -22
  105. package/dist/es/DropDown-05a644a5.js +0 -322
  106. package/dist/es/Flex-1f0795c3.js +0 -47
  107. package/dist/es/FormControlList-c22d64f6.js +0 -40
  108. package/dist/es/Input-7a2a9fac.js +0 -71
  109. package/dist/es/install-ac8a1edb.js +0 -1402
@@ -0,0 +1,700 @@
1
+ 'use strict';
2
+
3
+ function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
4
+
5
+ var configureStore = require('@appbaseio/reactivecore');
6
+ var configureStore__default = _interopDefault(configureStore);
7
+ var _transformOn = _interopDefault(require('@vue/babel-helper-vue-transform-on'));
8
+ var _rollupPluginBabelHelpers = require('./_rollupPluginBabelHelpers-f8b843f8.js');
9
+ var vue = require('vue');
10
+ var VueTypes = _interopDefault(require('vue-types'));
11
+ var vueEmotion = require('@appbaseio/vue-emotion');
12
+ var vueTypes = require('./vueTypes-1bf00978.js');
13
+ var index = require('./index-d8d8f291.js');
14
+ var Input = require('./Input-088dfcb4.js');
15
+ var computeScrollIntoView = _interopDefault(require('compute-scroll-into-view'));
16
+ var suggestions = require('@appbaseio/reactivecore/lib/utils/suggestions');
17
+
18
+ var _templateObject;
19
+ var InputWrapper = vueEmotion.styled('span')(_templateObject || (_templateObject = _rollupPluginBabelHelpers._taggedTemplateLiteralLoose(["\n flex: 1;\n position: relative;\n"])));
20
+
21
+ var _templateObject$1;
22
+ var IconGroup = vueEmotion.styled('div')(_templateObject$1 || (_templateObject$1 = _rollupPluginBabelHelpers._taggedTemplateLiteralLoose(["\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tgrid-gap: 6px;\n\tmargin: 0 10px;\n\theight: 100%;\n\n\t", ";\n\n\t", ";\n"])), function (_ref) {
23
+ var positionType = _ref.positionType;
24
+ if (positionType === 'absolute') {
25
+ return "\n\t\t\t\tposition: absolute;\n\t\t\t\ttop: 50%;\n\t\t\t\ttransform: translateY(-50%);\n\t\t\t";
26
+ }
27
+ return null;
28
+ }, function (_ref2) {
29
+ var groupPosition = _ref2.groupPosition;
30
+ return groupPosition === 'right' ? "\n\t\t\t\t\tright: 0;\n\t\t\t " : "\n\t\t\t\t\tleft: 0;\n\t\t\t ";
31
+ });
32
+
33
+ var _templateObject$2;
34
+ var IconWrapper = vueEmotion.styled('div')(_templateObject$2 || (_templateObject$2 = _rollupPluginBabelHelpers._taggedTemplateLiteralLoose(["\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tmax-width: 23px;\n\twidth: max-content;\n\tcursor: pointer;\n\theight: 100%;\n\tmin-width: 20px;\n\n\tsvg.search-icon {\n\t\tfill: ", ";\n\t\ttransform: scale(1.5);\n\t}\n\n\tsvg.cancel-icon {\n\t\tfill: ", ";\n\t}\n"])), function (_ref) {
35
+ var _ref$theme = _ref.theme,
36
+ theme = _ref$theme === void 0 ? {} : _ref$theme;
37
+ return theme.colors ? theme.colors.primaryColor : 'unset';
38
+ }, function (_ref2) {
39
+ var _ref2$theme = _ref2.theme,
40
+ theme = _ref2$theme === void 0 ? {} : _ref2$theme;
41
+ return theme.colors ? theme.colors.borderColor : '#000';
42
+ });
43
+
44
+ /**
45
+ * Scroll node into view if necessary
46
+ * @param {HTMLElement} node the element that should scroll into view
47
+ * @param {HTMLElement} rootNode the root element of the component
48
+ */
49
+ // eslint-disable-next-line
50
+ var scrollIntoView = function scrollIntoView(node, rootNode) {
51
+ if (node === null) {
52
+ return;
53
+ }
54
+ var actions = computeScrollIntoView(node, {
55
+ boundary: rootNode,
56
+ block: 'nearest',
57
+ scrollMode: 'if-needed'
58
+ });
59
+ actions.forEach(function (_ref) {
60
+ var el = _ref.el,
61
+ top = _ref.top,
62
+ left = _ref.left;
63
+ el.scrollTop = top;
64
+ el.scrollLeft = left;
65
+ });
66
+ };
67
+
68
+ var Downshift = {
69
+ // eslint-disable-next-line
70
+ props: ['isOpen', 'inputValue', 'selectedItem', 'highlightedIndex', 'handleChange',
71
+ // 'itemToString',
72
+ 'handleMouseup'],
73
+ data: function data() {
74
+ return {
75
+ isMouseDown: false,
76
+ internal_isOpen: false,
77
+ internal_inputValue: '',
78
+ internal_selectedItem: null,
79
+ internal_highlightedIndex: null
80
+ };
81
+ },
82
+ computed: {
83
+ mergedState: function mergedState() {
84
+ var _this = this;
85
+ return Object.keys(this.$props).reduce(function (state, key) {
86
+ var _extends2;
87
+ return _rollupPluginBabelHelpers._extends({}, state, (_extends2 = {}, _extends2[key] = _this.isControlledProp(key) ? _this.$props[key] : _this["internal_" + key], _extends2));
88
+ }, {});
89
+ },
90
+ internalItemCount: function internalItemCount() {
91
+ return this.items.length;
92
+ }
93
+ },
94
+ mounted: function mounted() {
95
+ window.addEventListener('mousedown', this.handleWindowMousedown);
96
+ window.addEventListener('mouseup', this.handleWindowMouseup);
97
+ },
98
+ beforeUnmount: function beforeUnmount() {
99
+ window.removeEventListener('mousedown', this.handleWindowMousedown);
100
+ window.removeEventListener('mouseup', this.handleWindowMouseup);
101
+ },
102
+ methods: {
103
+ handleWindowMousedown: function handleWindowMousedown() {
104
+ this.isMouseDown = true;
105
+ },
106
+ handleWindowMouseup: function handleWindowMouseup(event) {
107
+ this.isMouseDown = false;
108
+ if ((event.target === this.$refs.rootNode || !this.$refs.rootNode.contains(event.target)) && this.mergedState.isOpen) {
109
+ // TODO: handle on outer click here
110
+ if (!this.isMouseDown) {
111
+ this.reset();
112
+ if (this.$props.handleMouseup) {
113
+ this.$props.handleMouseup({
114
+ isOpen: false
115
+ });
116
+ }
117
+ }
118
+ }
119
+ },
120
+ keyDownArrowDown: function keyDownArrowDown(event) {
121
+ event.preventDefault();
122
+ var amount = event.shiftKey ? 5 : 1;
123
+ if (this.mergedState.isOpen) {
124
+ this.changeHighlightedIndex(amount);
125
+ } else {
126
+ this.setState({
127
+ isOpen: true
128
+ });
129
+ this.setHighlightedIndex();
130
+ }
131
+ },
132
+ keyDownArrowUp: function keyDownArrowUp(event) {
133
+ event.preventDefault();
134
+ var amount = event.shiftKey ? -5 : -1;
135
+ if (this.mergedState.isOpen) {
136
+ this.changeHighlightedIndex(amount);
137
+ } else {
138
+ this.setState({
139
+ isOpen: true
140
+ });
141
+ this.setHighlightedIndex();
142
+ }
143
+ },
144
+ keyDownEnter: function keyDownEnter(event) {
145
+ if (this.mergedState.isOpen) {
146
+ event.preventDefault();
147
+ this.selectHighlightedItem();
148
+ }
149
+ },
150
+ keyDownEscape: function keyDownEscape(event) {
151
+ event.preventDefault();
152
+ this.reset();
153
+ },
154
+ selectHighlightedItem: function selectHighlightedItem() {
155
+ return this.selectItemAtIndex(this.mergedState.highlightedIndex);
156
+ },
157
+ selectItemAtIndex: function selectItemAtIndex(itemIndex) {
158
+ var item = this.items[itemIndex];
159
+ if (item == null) {
160
+ return;
161
+ }
162
+ this.selectItem(item);
163
+ },
164
+ selectItem: function selectItem(item) {
165
+ if (this.$props.handleChange) {
166
+ this.$props.handleChange(item);
167
+ }
168
+ function getInputValue() {
169
+ if (this.isControlledProp('selectedItem')) {
170
+ return '';
171
+ }
172
+ return typeof item === 'object' ? item.label || '' : item;
173
+ }
174
+ this.setState({
175
+ isOpen: false,
176
+ highlightedIndex: null,
177
+ selectedItem: item,
178
+ inputValue: getInputValue.call(this)
179
+ });
180
+ },
181
+ changeHighlightedIndex: function changeHighlightedIndex(moveAmount) {
182
+ if (this.internalItemCount < 0) {
183
+ return;
184
+ }
185
+ var highlightedIndex = this.mergedState.highlightedIndex;
186
+ var baseIndex = highlightedIndex;
187
+ if (baseIndex === null) {
188
+ baseIndex = moveAmount > 0 ? -1 : this.internalItemCount + 1;
189
+ }
190
+ var newIndex = baseIndex + moveAmount;
191
+ if (newIndex < 0) {
192
+ newIndex = this.internalItemCount;
193
+ } else if (newIndex > this.internalItemCount) {
194
+ newIndex = 0;
195
+ }
196
+ this.setHighlightedIndex(newIndex);
197
+ },
198
+ setHighlightedIndex: function setHighlightedIndex(highlightedIndex) {
199
+ if (highlightedIndex === void 0) {
200
+ highlightedIndex = null;
201
+ }
202
+ this.setState({
203
+ highlightedIndex: highlightedIndex
204
+ });
205
+ var element = document.getElementById("Downshift" + highlightedIndex);
206
+ scrollIntoView(element, this.rootNode);
207
+ // Implement scrollIntroView thingy
208
+ },
209
+ reset: function reset() {
210
+ var selectedItem = this.mergedState.selectedItem;
211
+ this.setState({
212
+ isOpen: false,
213
+ highlightedIndex: null,
214
+ inputValue: selectedItem
215
+ });
216
+ },
217
+ getItemProps: function getItemProps(_ref) {
218
+ var index = _ref.index,
219
+ item = _ref.item;
220
+ var newIndex = index;
221
+ if (index === undefined) {
222
+ if (this.$props.itemToString) {
223
+ this.items.push(this.$props.itemToString(item));
224
+ } else {
225
+ this.items.push(item);
226
+ }
227
+ newIndex = this.items.indexOf(item);
228
+ } else {
229
+ this.items[newIndex] = item;
230
+ }
231
+ return {
232
+ id: "Downshift" + newIndex
233
+ };
234
+ },
235
+ getItemEvents: function getItemEvents(_ref2) {
236
+ var index = _ref2.index,
237
+ item = _ref2.item;
238
+ var newIndex = index;
239
+ if (index === undefined) {
240
+ newIndex = this.items.indexOf(item);
241
+ }
242
+ var vm = this;
243
+ return {
244
+ mouseenter: function mouseenter() {
245
+ vm.setHighlightedIndex(newIndex);
246
+ },
247
+ click: function click(event) {
248
+ event.stopPropagation();
249
+ vm.selectItemAtIndex(newIndex);
250
+ }
251
+ };
252
+ },
253
+ getInputProps: function getInputProps(_ref3) {
254
+ var value = _ref3.value;
255
+ var inputValue = this.mergedState.inputValue;
256
+ if (value !== inputValue) {
257
+ this.setState({
258
+ inputValue: value
259
+ });
260
+ }
261
+ return {
262
+ value: inputValue
263
+ };
264
+ },
265
+ getButtonProps: function getButtonProps(_ref4) {
266
+ var _this2 = this;
267
+ var onClick = _ref4.onClick,
268
+ onKeyDown = _ref4.onKeyDown,
269
+ onKeyUp = _ref4.onKeyUp,
270
+ onBlur = _ref4.onBlur;
271
+ return {
272
+ click: function click(event) {
273
+ _this2.setState({
274
+ isOpen: true,
275
+ inputValue: event.target.value
276
+ });
277
+ if (onClick) {
278
+ onClick(event);
279
+ }
280
+ },
281
+ keydown: function keydown(event) {
282
+ if (event.key && _this2["keyDown" + event.key]) {
283
+ _this2["keyDown" + event.key].call(_this2, event);
284
+ }
285
+ if (onKeyDown) {
286
+ onKeyDown(event);
287
+ }
288
+ },
289
+ keyup: function keyup(event) {
290
+ if (onKeyUp) {
291
+ onKeyUp(event);
292
+ }
293
+ },
294
+ blur: function blur(event) {
295
+ if (onBlur) {
296
+ onBlur(event);
297
+ }
298
+ }
299
+ };
300
+ },
301
+ getInputEvents: function getInputEvents(_ref5) {
302
+ var _this3 = this;
303
+ var onInput = _ref5.onInput,
304
+ onBlur = _ref5.onBlur,
305
+ onFocus = _ref5.onFocus,
306
+ onKeyPress = _ref5.onKeyPress,
307
+ onKeyDown = _ref5.onKeyDown,
308
+ onKeyUp = _ref5.onKeyUp,
309
+ onClick = _ref5.onClick;
310
+ return {
311
+ input: function input(event) {
312
+ _this3.setState({
313
+ isOpen: true,
314
+ inputValue: event.target.value
315
+ });
316
+ if (onInput) {
317
+ onInput(event);
318
+ }
319
+ },
320
+ focus: function focus(event) {
321
+ if (onFocus) {
322
+ onFocus(event);
323
+ }
324
+ },
325
+ keydown: function keydown(event) {
326
+ if (event.key && _this3["keyDown" + event.key]) {
327
+ _this3["keyDown" + event.key].call(_this3, event);
328
+ }
329
+ if (onKeyDown) {
330
+ onKeyDown(event);
331
+ }
332
+ },
333
+ keypress: function keypress(event) {
334
+ if (onKeyPress) {
335
+ onKeyPress(event);
336
+ }
337
+ },
338
+ keyup: function keyup(event) {
339
+ if (onKeyUp) {
340
+ onKeyUp(event);
341
+ }
342
+ },
343
+ blur: function blur(event) {
344
+ if (onBlur) {
345
+ onBlur(event);
346
+ }
347
+ // TODO: implement isMouseDown
348
+ // this.reset()
349
+ },
350
+
351
+ click: onClick
352
+ };
353
+ },
354
+ getHelpersAndState: function getHelpersAndState() {
355
+ var getItemProps = this.getItemProps,
356
+ getItemEvents = this.getItemEvents,
357
+ getInputProps = this.getInputProps,
358
+ getInputEvents = this.getInputEvents,
359
+ getButtonProps = this.getButtonProps,
360
+ setHighlightedIndex = this.setHighlightedIndex;
361
+ return _rollupPluginBabelHelpers._extends({
362
+ getItemProps: getItemProps,
363
+ getItemEvents: getItemEvents,
364
+ getInputProps: getInputProps,
365
+ getInputEvents: getInputEvents,
366
+ getButtonProps: getButtonProps,
367
+ setHighlightedIndex: setHighlightedIndex
368
+ }, this.mergedState);
369
+ },
370
+ isControlledProp: function isControlledProp(prop) {
371
+ return this.$props[prop] !== undefined;
372
+ },
373
+ setState: function setState(stateToSet) {
374
+ var _this4 = this;
375
+ // eslint-disable-next-line
376
+ Object.keys(stateToSet).forEach(function (key) {
377
+ // eslint-disable-next-line
378
+ if (_this4.isControlledProp(key)) {
379
+ _this4.$emit(key + "Change", stateToSet[key]);
380
+ _this4.$emit(key + "-change", stateToSet[key]);
381
+ } else {
382
+ _this4["internal_" + key] = stateToSet[key];
383
+ }
384
+ });
385
+ this.$emit('stateChange', this.mergedState);
386
+ this.$emit('state-change', this.mergedState);
387
+ }
388
+ },
389
+ render: function render() {
390
+ this.items = [];
391
+ return vue.createVNode("div", {
392
+ "ref": "rootNode"
393
+ }, [this.$slots["default"] && this.$slots["default"](_rollupPluginBabelHelpers._extends({}, this.getHelpersAndState()))]);
394
+ }
395
+ };
396
+
397
+ var CancelSvg = (function () {
398
+ return vue.createVNode("svg", {
399
+ "alt": "Clear",
400
+ "class": "cancel-icon",
401
+ "xmlns": "http://www.w3.org/2000/svg",
402
+ "height": "20px",
403
+ "viewBox": "0 0 24 24",
404
+ "width": "20px"
405
+ }, [vue.createVNode("title", null, [vue.createTextVNode("Clear")]), vue.createVNode("path", {
406
+ "d": "M0 0h24v24H0V0z",
407
+ "fill": "none"
408
+ }, null), vue.createVNode("path", {
409
+ "d": "M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z"
410
+ }, null)]);
411
+ });
412
+
413
+ var _templateObject$3, _templateObject2;
414
+ var small = "\n\tmin-height: 0;\n\theight: 30px;\n\tborder: 0;\n\tbox-shadow: rgba(0, 0, 0, 0.3) 0px 1px 4px -1px;\n\tborder-radius: 2px;\n";
415
+ var dark = function dark(_ref) {
416
+ var theme = _ref.theme;
417
+ return "\n\tbackground-color: " + (theme.colors ? theme.colors.backgroundColor : '') + ";\n\tborder-color: " + (theme.colors ? theme.colors.borderColor : '') + ";\n\tcolor: " + (theme.colors ? theme.colors.textColor : '') + ";\n\n\t&:hover,\n\t&:focus {\n\t\tbackground-color: " + (theme.colors ? theme.colors.backgroundColor : '') + ";\n\t}\n";
418
+ };
419
+ var Select = vueEmotion.styled('button')(_templateObject$3 || (_templateObject$3 = _rollupPluginBabelHelpers._taggedTemplateLiteralLoose(["\n\twidth: 100%;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: space-between;\n\tmin-height: 42px;\n\tborder-radius: 0;\n\toutline: none;\n\tpadding: 5px 12px;\n\tfont-size: 0.9rem;\n\tline-height: 1.2rem;\n\tbackground-color: #fff;\n\tborder: 1px solid #ccc;\n\tcolor: #424242;\n\tcursor: pointer;\n\tuser-select: none;\n\ttransition: all 0.3s ease;\n\n\t", ";\n\n\t& > div {\n\t\twidth: calc(100% - 24px);\n\t\twhite-space: nowrap;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t\ttext-align: left;\n\t}\n\n\t&:hover,\n\t&:focus {\n\t\tbackground-color: #fcfcfc;\n\t}\n\n\t", ";\n"])), function (props) {
420
+ return props.small ? small : null;
421
+ }, function (_ref2) {
422
+ var themePreset = _ref2.themePreset;
423
+ return themePreset === 'dark' && dark;
424
+ });
425
+ var Tick = vueEmotion.styled('span')(_templateObject2 || (_templateObject2 = _rollupPluginBabelHelpers._taggedTemplateLiteralLoose(["\n\twidth: 16px;\n\theight: 16px;\n\tdisplay: inline-block;\n\tposition: relative;\n\tuser-select: none;\n\talign-items: center;\n\n\t&::after {\n\t\tbox-sizing: content-box;\n\t\tcontent: '';\n\t\tposition: absolute;\n\t\tbackground-color: transparent;\n\t\ttop: 50%;\n\t\tleft: 0;\n\t\twidth: 8px;\n\t\theight: 4px;\n\t\tmargin-top: -4px;\n\t\tborder-style: solid;\n\t\tborder-color: ", ";\n\t\tborder-width: 0 0 2px 2px;\n\t\tborder-radius: 0;\n\t\tborder-image: none;\n\t\ttransform: rotate(-45deg) scale(1);\n\t\ttransition: all 200ms ease-out;\n\t}\n"])), function (_ref3) {
426
+ var theme = _ref3.theme;
427
+ return theme.colors.primaryColor;
428
+ });
429
+
430
+ var _templateObject$4;
431
+ var open = "\n\ttop: 0.55em;\n\ttransform: rotate(-45deg);\n";
432
+ var Chevron = vueEmotion.styled('span')(_templateObject$4 || (_templateObject$4 = _rollupPluginBabelHelpers._taggedTemplateLiteralLoose(["\n\t&::before {\n\t\tcontent: '';\n\t\tborder-style: solid;\n\t\tborder-width: 0.15em 0.15em 0 0;\n\t\tdisplay: inline-block;\n\t\theight: 0.45em;\n\t\tposition: relative;\n\t\ttop: 0.35em;\n\t\tleft: 0;\n\t\ttransform: rotate(135deg);\n\t\tvertical-align: top;\n\t\twidth: 0.45em;\n\n\t\t", ";\n\t}\n"])), function (props) {
433
+ return props.open ? open : null;
434
+ });
435
+
436
+ var getClassName = configureStore.helper.getClassName;
437
+ var Dropdown = {
438
+ data: function data() {
439
+ this.__state = {
440
+ isOpen: false,
441
+ searchTerm: ''
442
+ };
443
+ return this.__state;
444
+ },
445
+ inject: {
446
+ theme: {
447
+ from: 'theme_reactivesearch'
448
+ }
449
+ },
450
+ props: {
451
+ innerClass: vueTypes.types.style,
452
+ items: vueTypes.types.data,
453
+ keyField: VueTypes.string.def('key'),
454
+ labelField: VueTypes.string.def('label'),
455
+ multi: VueTypes.bool,
456
+ // change event
457
+ placeholder: vueTypes.types.string,
458
+ returnsObject: VueTypes.bool,
459
+ customLabelRenderer: vueTypes.types.func,
460
+ hasCustomRenderer: VueTypes.bool,
461
+ customRenderer: vueTypes.types.func,
462
+ renderItem: vueTypes.types.func,
463
+ renderNoResults: VueTypes.any,
464
+ handleChange: vueTypes.types.func,
465
+ transformData: vueTypes.types.func,
466
+ selectedItem: vueTypes.types.selectedValue,
467
+ showCount: VueTypes.bool,
468
+ single: VueTypes.bool,
469
+ small: VueTypes.bool.def(false),
470
+ themePreset: vueTypes.types.themePreset,
471
+ showSearch: VueTypes.bool,
472
+ showClear: VueTypes.bool,
473
+ searchPlaceholder: VueTypes.string.def('Type here to search...')
474
+ },
475
+ render: function render() {
476
+ var _this = this;
477
+ var _this$$props = this.$props,
478
+ items = _this$$props.items,
479
+ selectedItem = _this$$props.selectedItem,
480
+ placeholder = _this$$props.placeholder,
481
+ labelField = _this$$props.labelField,
482
+ keyField = _this$$props.keyField,
483
+ themePreset = _this$$props.themePreset,
484
+ renderItem = _this$$props.renderItem,
485
+ transformData = _this$$props.transformData,
486
+ footer = _this$$props.footer,
487
+ customLabelRenderer = _this$$props.customLabelRenderer,
488
+ hasCustomRenderer = _this$$props.hasCustomRenderer,
489
+ customRenderer = _this$$props.customRenderer;
490
+ var itemsToRender = items;
491
+ if (transformData) {
492
+ itemsToRender = transformData(itemsToRender);
493
+ }
494
+ var filteredItemsToRender = itemsToRender.filter(function (item) {
495
+ if (String(item[labelField]).length) {
496
+ if (_this.$props.showSearch && _this.$data.searchTerm) {
497
+ return suggestions.replaceDiacritics(String(item[labelField])).toLowerCase().includes(suggestions.replaceDiacritics(_this.$data.searchTerm.toLowerCase()));
498
+ }
499
+ return true;
500
+ }
501
+ return false;
502
+ });
503
+ return vue.createVNode(Downshift, {
504
+ "isOpen": this.$data.isOpen,
505
+ "selectedItem": selectedItem,
506
+ "handleChange": this.onChange,
507
+ "handleMouseup": this.handleStateChange
508
+ }, {
509
+ "default": function _default(_ref) {
510
+ var getItemProps = _ref.getItemProps,
511
+ isOpen = _ref.isOpen,
512
+ highlightedIndex = _ref.highlightedIndex,
513
+ getButtonProps = _ref.getButtonProps,
514
+ getItemEvents = _ref.getItemEvents,
515
+ getInputEvents = _ref.getInputEvents;
516
+ return vue.createVNode("div", {
517
+ "class": Input.suggestionsContainer
518
+ }, [vue.createVNode(Select, vue.mergeProps(_transformOn(getButtonProps({
519
+ onClick: _this.toggle
520
+ })), {
521
+ "class": getClassName(_this.$props.innerClass, 'select') || '',
522
+ "title": selectedItem ? _this.renderToString(selectedItem) : placeholder,
523
+ "small": _this.$props.small,
524
+ "themePreset": _this.$props.themePreset
525
+ }), {
526
+ "default": function _default() {
527
+ return [customLabelRenderer ? customLabelRenderer(selectedItem) : vue.createVNode("div", null, [selectedItem ? _this.renderToString(selectedItem) : placeholder]), vue.createVNode(Chevron, {
528
+ "open": isOpen
529
+ }, null)];
530
+ }
531
+ }), hasCustomRenderer ? customRenderer(itemsToRender, {
532
+ getItemProps: getItemProps,
533
+ isOpen: isOpen,
534
+ highlightedIndex: highlightedIndex,
535
+ getButtonProps: getButtonProps,
536
+ getItemEvents: getItemEvents
537
+ }) : isOpen && itemsToRender.length ? vue.createVNode("ul", {
538
+ "class": Input.suggestions(themePreset, _this.theme) + " " + (_this.$props.small ? 'small' : '') + " " + getClassName(_this.$props.innerClass, 'list')
539
+ }, [_this.$props.showSearch ? _this.renderSearchbox({
540
+ on: {
541
+ input: getInputEvents({
542
+ onInput: _this.handleInputChange
543
+ }).input
544
+ }
545
+ }) : null, !hasCustomRenderer && filteredItemsToRender.length === 0 ? _this.renderNoResult() : filteredItemsToRender.map(function (item, index) {
546
+ var selected = _this.$props.multi // MultiDropdownList
547
+ && (selectedItem && !!selectedItem[item[keyField]] // MultiDropdownRange
548
+ || Array.isArray(selectedItem) && selectedItem.find(function (value) {
549
+ return value[labelField] === item[labelField];
550
+ }));
551
+ if (!_this.$props.multi) selected = item.key === selectedItem;
552
+ return vue.createVNode("li", vue.mergeProps(getItemProps({
553
+ item: item
554
+ }), _transformOn(getItemEvents({
555
+ item: item
556
+ })), {
557
+ "key": item[keyField],
558
+ "class": "" + (selected ? 'active' : ''),
559
+ "style": {
560
+ backgroundColor: _this.getBackgroundColor(highlightedIndex === index, selected)
561
+ }
562
+ }), [renderItem ? renderItem({
563
+ label: item[labelField],
564
+ count: item.doc_count,
565
+ isChecked: selected && _this.$props.multi
566
+ }) : vue.createVNode("div", null, [typeof item[labelField] === 'string' ? vue.createVNode("span", {
567
+ "innerHTML": item[labelField]
568
+ }, null) : item[labelField], _this.$props.showCount && item.doc_count && vue.createVNode("span", {
569
+ "class": getClassName(_this.$props.innerClass, 'count') || ''
570
+ }, [vue.createTextVNode("\xA0("), item.doc_count, vue.createTextVNode(")")])]), selected && _this.$props.multi ? vue.createVNode(Tick, {
571
+ "class": getClassName(_this.$props.innerClass, 'icon') || ''
572
+ }, null) : null]);
573
+ }), footer]) : null]);
574
+ }
575
+ });
576
+ },
577
+ methods: {
578
+ toggle: function toggle() {
579
+ this.isOpen = !this.$data.isOpen;
580
+ },
581
+ close: function close() {
582
+ this.isOpen = false;
583
+ },
584
+ onChange: function onChange(item) {
585
+ if (this.$props.returnsObject) {
586
+ this.$props.handleChange(item);
587
+ } else {
588
+ this.$props.handleChange(item[this.$props.keyField]);
589
+ }
590
+ if (!this.$props.multi) {
591
+ this.isOpen = false;
592
+ this.searchTerm = '';
593
+ }
594
+ },
595
+ handleStateChange: function handleStateChange(_ref2) {
596
+ var isOpen = _ref2.isOpen;
597
+ this.isOpen = isOpen;
598
+ },
599
+ getBackgroundColor: function getBackgroundColor(highlighted, selected) {
600
+ var isDark = this.$props.themePreset === 'dark';
601
+ if (highlighted) {
602
+ return isDark ? '#555' : '#eee';
603
+ }
604
+ if (selected) {
605
+ return isDark ? '#686868' : '#fafafa';
606
+ }
607
+ return isDark ? '#424242' : '#fff';
608
+ },
609
+ handleInputChange: function handleInputChange(e) {
610
+ var value = e.target.value;
611
+ this.searchTerm = value;
612
+ },
613
+ clearSearchTerm: function clearSearchTerm() {
614
+ this.searchTerm = '';
615
+ },
616
+ renderToString: function renderToString(value) {
617
+ var _this2 = this;
618
+ var customLabelRenderer = this.$props.customLabelRenderer;
619
+ if (customLabelRenderer) {
620
+ var customLabel = customLabelRenderer(value);
621
+ if (typeof customLabel === 'string') {
622
+ return customLabel;
623
+ }
624
+ }
625
+ if (Array.isArray(value) && value.length) {
626
+ var arrayToRender = value.map(function (item) {
627
+ return _this2.renderToString(item);
628
+ });
629
+ return arrayToRender.join(', ');
630
+ }
631
+ if (value && typeof value === 'object') {
632
+ if (value[this.$props.labelField]) {
633
+ return value[this.$props.labelField];
634
+ }
635
+ if (Object.keys(value).length) {
636
+ return this.renderToString(Object.keys(value));
637
+ }
638
+ return this.$props.placeholder;
639
+ }
640
+ return value;
641
+ },
642
+ renderNoResult: function renderNoResult() {
643
+ var renderNoResults = this.$slots.renderNoResults || this.$props.renderNoResults;
644
+ return vue.createVNode("p", {
645
+ "class": getClassName(this.$props.innerClass, 'noResults') || null
646
+ }, [index.isFunction(renderNoResults) ? renderNoResults() : renderNoResults]);
647
+ },
648
+ renderSearchbox: function renderSearchbox(eventObject) {
649
+ var _this3 = this;
650
+ var _this$$props2 = this.$props,
651
+ componentId = _this$$props2.componentId,
652
+ searchPlaceholder = _this$$props2.searchPlaceholder,
653
+ showClear = _this$$props2.showClear,
654
+ themePreset = _this$$props2.themePreset,
655
+ innerClass = _this$$props2.innerClass;
656
+ var InputComponent = vue.createVNode(Input.Input, vue.mergeProps({
657
+ "id": componentId + "-input",
658
+ "style": {
659
+ border: 0,
660
+ borderBottom: '1px solid #ddd'
661
+ },
662
+ "showIcon": false,
663
+ "showClear": showClear,
664
+ "class": getClassName(innerClass, 'input'),
665
+ "placeholder": searchPlaceholder,
666
+ "value": this.$data.searchTerm,
667
+ "themePreset": themePreset
668
+ }, eventObject), null);
669
+ if (showClear) {
670
+ return vue.createVNode(InputWrapper, null, {
671
+ "default": function _default() {
672
+ return [InputComponent, _this3.searchTerm && vue.createVNode(IconGroup, {
673
+ "groupPosition": "right",
674
+ "positionType": "absolute"
675
+ }, {
676
+ "default": function _default() {
677
+ return [vue.createVNode(IconWrapper, {
678
+ "onClick": _this3.clearSearchTerm,
679
+ "isClearIcon": true
680
+ }, {
681
+ "default": function _default() {
682
+ return [vue.createVNode(CancelSvg, null, null)];
683
+ }
684
+ })];
685
+ }
686
+ })];
687
+ }
688
+ });
689
+ }
690
+ return InputComponent;
691
+ }
692
+ }
693
+ };
694
+
695
+ exports.CancelSvg = CancelSvg;
696
+ exports.Downshift = Downshift;
697
+ exports.Dropdown = Dropdown;
698
+ exports.IconGroup = IconGroup;
699
+ exports.IconWrapper = IconWrapper;
700
+ exports.InputWrapper = InputWrapper;