solid-ui 2.4.23 → 2.4.24

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 (136) hide show
  1. package/dist/main.js +2159 -5039
  2. package/dist/main.js.map +1 -1
  3. package/lib/acl/access-controller.js +4 -67
  4. package/lib/acl/access-controller.js.map +1 -1
  5. package/lib/acl/access-groups.js +59 -137
  6. package/lib/acl/access-groups.js.map +1 -1
  7. package/lib/acl/acl-control.js +14 -54
  8. package/lib/acl/acl-control.js.map +1 -1
  9. package/lib/acl/acl.js +32 -107
  10. package/lib/acl/acl.js.map +1 -1
  11. package/lib/acl/add-agent-buttons.js +0 -92
  12. package/lib/acl/add-agent-buttons.js.map +1 -1
  13. package/lib/acl/index.js +1 -3
  14. package/lib/acl/index.js.map +1 -1
  15. package/lib/acl/styles.js +1 -2
  16. package/lib/acl/styles.js.map +1 -1
  17. package/lib/chat/bookmarks.js +8 -80
  18. package/lib/chat/bookmarks.js.map +1 -1
  19. package/lib/chat/chatLogic.js +109 -180
  20. package/lib/chat/chatLogic.js.map +1 -1
  21. package/lib/chat/dateFolder.js +6 -91
  22. package/lib/chat/dateFolder.js.map +1 -1
  23. package/lib/chat/infinite.js +33 -185
  24. package/lib/chat/infinite.js.map +1 -1
  25. package/lib/chat/message.js +37 -150
  26. package/lib/chat/message.js.map +1 -1
  27. package/lib/chat/messageTools.js +23 -96
  28. package/lib/chat/messageTools.js.map +1 -1
  29. package/lib/chat/thread.js +33 -91
  30. package/lib/chat/thread.js.map +1 -1
  31. package/lib/create/create.js +19 -51
  32. package/lib/create/create.js.map +1 -1
  33. package/lib/create/index.js +0 -2
  34. package/lib/create/index.js.map +1 -1
  35. package/lib/debug.js +0 -8
  36. package/lib/debug.js.map +1 -1
  37. package/lib/folders.js +4 -27
  38. package/lib/folders.js.map +1 -1
  39. package/lib/footer/index.js +2 -24
  40. package/lib/footer/index.js.map +1 -1
  41. package/lib/footer/styleMap.js.map +1 -1
  42. package/lib/header/empty-profile.js.map +1 -1
  43. package/lib/header/index.js +3 -72
  44. package/lib/header/index.js.map +1 -1
  45. package/lib/header/styleMap.js +4 -3
  46. package/lib/header/styleMap.js.map +1 -1
  47. package/lib/iconBase.js +3 -4
  48. package/lib/iconBase.js.map +1 -1
  49. package/lib/index.js +5 -46
  50. package/lib/index.js.map +1 -1
  51. package/lib/jss/index.js +3 -9
  52. package/lib/jss/index.js.map +1 -1
  53. package/lib/log.js +15 -51
  54. package/lib/log.js.map +1 -1
  55. package/lib/login/login.js +74 -303
  56. package/lib/login/login.js.map +1 -1
  57. package/lib/matrix/index.js +0 -2
  58. package/lib/matrix/index.js.map +1 -1
  59. package/lib/matrix/matrix.js +7 -55
  60. package/lib/matrix/matrix.js.map +1 -1
  61. package/lib/media/index.js +0 -2
  62. package/lib/media/index.js.map +1 -1
  63. package/lib/media/media-capture.js +13 -33
  64. package/lib/media/media-capture.js.map +1 -1
  65. package/lib/messageArea.js +23 -64
  66. package/lib/messageArea.js.map +1 -1
  67. package/lib/noun_Camera_1618446_000000.js.map +1 -1
  68. package/lib/ns.js +5 -7
  69. package/lib/ns.js.map +1 -1
  70. package/lib/pad.js +48 -234
  71. package/lib/pad.js.map +1 -1
  72. package/lib/participation.js +10 -65
  73. package/lib/participation.js.map +1 -1
  74. package/lib/preferences.js +21 -42
  75. package/lib/preferences.js.map +1 -1
  76. package/lib/signup/config-default.js +1 -8
  77. package/lib/signup/config-default.js.map +1 -1
  78. package/lib/signup/signup.js +6 -13
  79. package/lib/signup/signup.js.map +1 -1
  80. package/lib/stories/decorators.js +0 -2
  81. package/lib/stories/decorators.js.map +1 -1
  82. package/lib/style.js +8 -5
  83. package/lib/style.js.map +1 -1
  84. package/lib/style_multiSelect.js +1 -5
  85. package/lib/style_multiSelect.js.map +1 -1
  86. package/lib/table.js +309 -322
  87. package/lib/table.js.map +1 -1
  88. package/lib/tabs.js +20 -100
  89. package/lib/tabs.js.map +1 -1
  90. package/lib/utils/headerFooterHelpers.js +4 -52
  91. package/lib/utils/headerFooterHelpers.js.map +1 -1
  92. package/lib/utils/index.js +41 -135
  93. package/lib/utils/index.js.map +1 -1
  94. package/lib/utils/label.js +13 -34
  95. package/lib/utils/label.js.map +1 -1
  96. package/lib/versionInfo.js +4 -4
  97. package/lib/versionInfo.js.map +1 -1
  98. package/lib/widgets/buttons/iconLinks.js +0 -8
  99. package/lib/widgets/buttons/iconLinks.js.map +1 -1
  100. package/lib/widgets/buttons.js +115 -291
  101. package/lib/widgets/buttons.js.map +1 -1
  102. package/lib/widgets/dragAndDrop.js +12 -41
  103. package/lib/widgets/dragAndDrop.js.map +1 -1
  104. package/lib/widgets/error.js +3 -9
  105. package/lib/widgets/error.js.map +1 -1
  106. package/lib/widgets/forms/autocomplete/autocompleteBar.js +8 -71
  107. package/lib/widgets/forms/autocomplete/autocompleteBar.js.map +1 -1
  108. package/lib/widgets/forms/autocomplete/autocompleteField.js +13 -65
  109. package/lib/widgets/forms/autocomplete/autocompleteField.js.map +1 -1
  110. package/lib/widgets/forms/autocomplete/autocompletePicker.js +15 -107
  111. package/lib/widgets/forms/autocomplete/autocompletePicker.js.map +1 -1
  112. package/lib/widgets/forms/autocomplete/language.js +6 -55
  113. package/lib/widgets/forms/autocomplete/language.js.map +1 -1
  114. package/lib/widgets/forms/autocomplete/publicData.js +12 -131
  115. package/lib/widgets/forms/autocomplete/publicData.js.map +1 -1
  116. package/lib/widgets/forms/basic.js +12 -55
  117. package/lib/widgets/forms/basic.js.map +1 -1
  118. package/lib/widgets/forms/comment.js +1 -15
  119. package/lib/widgets/forms/comment.js.map +1 -1
  120. package/lib/widgets/forms/fieldFunction.js +3 -16
  121. package/lib/widgets/forms/fieldFunction.js.map +1 -1
  122. package/lib/widgets/forms/fieldParams.js +0 -12
  123. package/lib/widgets/forms/fieldParams.js.map +1 -1
  124. package/lib/widgets/forms/formStyle.js +1 -14
  125. package/lib/widgets/forms/formStyle.js.map +1 -1
  126. package/lib/widgets/forms.js +70 -474
  127. package/lib/widgets/forms.js.map +1 -1
  128. package/lib/widgets/index.js +0 -21
  129. package/lib/widgets/index.js.map +1 -1
  130. package/lib/widgets/multiSelect.js +48 -171
  131. package/lib/widgets/multiSelect.js.map +1 -1
  132. package/lib/widgets/peoplePicker.js +20 -90
  133. package/lib/widgets/peoplePicker.js.map +1 -1
  134. package/lib/widgets/widgetHelpers.js +2 -9
  135. package/lib/widgets/widgetHelpers.js.map +1 -1
  136. package/package.json +28 -28
@@ -1,35 +1,24 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  var _typeof = require("@babel/runtime/helpers/typeof");
6
-
7
5
  Object.defineProperty(exports, "__esModule", {
8
6
  value: true
9
7
  });
10
8
  exports.IconicMultiSelect = void 0;
11
-
12
9
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
13
-
14
10
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
15
-
16
11
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
17
-
18
12
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
19
-
20
13
  var style = _interopRequireWildcard(require("../style_multiSelect"));
21
-
22
14
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
23
-
24
15
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
25
-
26
16
  /*
27
17
  * IconicMultiSelect v0.7.0
28
18
  * Licence: MIT
29
19
  * (c) 2021 Sidney Wimart.
30
20
  * repo & configuration: https://github.com/sidneywm/iconic-multiselect
31
21
  */
32
-
33
22
  /**
34
23
  * @version IconicMultiSelect v0.7.0
35
24
  * @licence MIT
@@ -47,15 +36,15 @@ var IconicMultiSelect = /*#__PURE__*/function () {
47
36
  */
48
37
  function IconicMultiSelect(_ref) {
49
38
  var data = _ref.data,
50
- itemTemplate = _ref.itemTemplate,
51
- noData = _ref.noData,
52
- noResults = _ref.noResults,
53
- placeholder = _ref.placeholder,
54
- select = _ref.select,
55
- container = _ref.container,
56
- tagTemplate = _ref.tagTemplate,
57
- textField = _ref.textField,
58
- valueField = _ref.valueField;
39
+ itemTemplate = _ref.itemTemplate,
40
+ noData = _ref.noData,
41
+ noResults = _ref.noResults,
42
+ placeholder = _ref.placeholder,
43
+ select = _ref.select,
44
+ container = _ref.container,
45
+ tagTemplate = _ref.tagTemplate,
46
+ textField = _ref.textField,
47
+ valueField = _ref.valueField;
59
48
  (0, _classCallCheck2["default"])(this, IconicMultiSelect);
60
49
  (0, _defineProperty2["default"])(this, "_data", void 0);
61
50
  (0, _defineProperty2["default"])(this, "_domElements", void 0);
@@ -78,19 +67,18 @@ var IconicMultiSelect = /*#__PURE__*/function () {
78
67
  this._noData = noData !== null && noData !== void 0 ? noData : 'No data found.';
79
68
  this._noResults = noResults !== null && noResults !== void 0 ? noResults : 'No results found.';
80
69
  this._placeholder = placeholder !== null && placeholder !== void 0 ? placeholder : 'Select...';
81
- this._select = select; // Timea added a container here
82
-
70
+ this._select = select;
71
+ // Timea added a container here
83
72
  this._selectContainer = container;
84
73
  this._tagTemplate = tagTemplate !== null && tagTemplate !== void 0 ? tagTemplate : null;
85
74
  this._textField = textField !== null && textField !== void 0 ? textField : null;
86
75
  this._valueField = valueField !== null && valueField !== void 0 ? valueField : null;
87
76
  }
77
+
88
78
  /**
89
79
  * Initialize the Iconic Multiselect component.
90
80
  * @public
91
81
  */
92
-
93
-
94
82
  (0, _createClass2["default"])(IconicMultiSelect, [{
95
83
  key: "init",
96
84
  value: function init() {
@@ -99,17 +87,12 @@ var IconicMultiSelect = /*#__PURE__*/function () {
99
87
  if (this._itemTemplate && this._data.length === 0) {
100
88
  throw new Error('itemTemplate must be initialized with data from the component settings');
101
89
  }
102
-
103
90
  if (this._tagTemplate && this._data.length === 0) {
104
91
  throw new Error('tagTemplate must be initialized with data from the component settings');
105
92
  }
106
-
107
93
  this._options = this._data.length > 0 ? this._getDataFromSettings() : this._getDataFromSelectTag();
108
-
109
94
  this._renderMultiselect();
110
-
111
95
  this._renderOptionsList();
112
-
113
96
  this._domElements = {
114
97
  clear: this._multiselect.querySelector('.multiselect__clear-btn'),
115
98
  input: this._multiselect.querySelector('.multiselect__input'),
@@ -122,7 +105,6 @@ var IconicMultiSelect = /*#__PURE__*/function () {
122
105
  var node = this.list[i];
123
106
  if (callbackFn(node)) return node;
124
107
  }
125
-
126
108
  return undefined;
127
109
  },
128
110
  some: function some(callbackFn) {
@@ -130,25 +112,22 @@ var IconicMultiSelect = /*#__PURE__*/function () {
130
112
  var node = this.list[i];
131
113
  if (callbackFn(node, i)) return true;
132
114
  }
133
-
134
115
  return false;
135
116
  }
136
117
  }
137
118
  };
138
-
139
119
  this._enableEventListenners();
140
-
141
120
  this._initSelectedList();
142
121
  } else {
143
122
  throw new Error("The selector '".concat(this._select, "' did not select any valid select tag."));
144
123
  }
145
124
  }
125
+
146
126
  /**
147
127
  * Subscribes to the emitted events.
148
128
  * @param { Function } callback - Callback function which emits a custom event object.
149
129
  * @public
150
130
  */
151
-
152
131
  }, {
153
132
  key: "subscribe",
154
133
  value: function subscribe(callback) {
@@ -158,195 +137,154 @@ var IconicMultiSelect = /*#__PURE__*/function () {
158
137
  throw new Error('parameter in the subscribe method is not a function');
159
138
  }
160
139
  }
140
+
161
141
  /**
162
142
  * Add an option to the selection list.
163
143
  * @param { Object: { text: string; value: string; }} option
164
144
  * @private
165
145
  */
166
-
167
146
  }, {
168
147
  key: "_addOptionToList",
169
148
  value: function _addOptionToList(option, index) {
170
149
  var _this = this;
171
-
172
150
  var html = "<span class=\"multiselect__selected\" style=\"".concat(style.multiselect__selected, "\" data-value=\"").concat(option.value, "\">").concat(this._tagTemplate ? this._processTemplate(this._tagTemplate, index) : option.text, "<span class=\"multiselect__remove-btn\" style=\"").concat(style.multiselect__remove_btn, "\">").concat(this._cross, "</span></span>");
173
-
174
151
  this._domElements.input.insertAdjacentHTML('beforebegin', html);
175
-
176
152
  var _this$_multiselect$qu = this._multiselect.querySelector("span[data-value=\"".concat(option.value, "\"]")),
177
- removeBtn = _this$_multiselect$qu.lastElementChild;
178
-
153
+ removeBtn = _this$_multiselect$qu.lastElementChild;
179
154
  removeBtn.addEventListener('click', function () {
180
155
  var target = _this._domElements.options.find(function (el) {
181
156
  return el.dataset.value === option.value;
182
157
  });
183
-
184
158
  _this._handleOption(target);
185
159
  });
186
160
  }
161
+
187
162
  /**
188
163
  * Clears all selected options.
189
164
  * @private
190
165
  */
191
-
192
166
  }, {
193
167
  key: "_clearSelection",
194
168
  value: function _clearSelection() {
195
169
  var _this2 = this;
196
-
197
170
  var _loop = function _loop(i) {
198
171
  var option = _this2._selectedOptions[i];
199
-
200
172
  var target = _this2._domElements.options.find(function (el) {
201
173
  return el.dataset.value === option.value;
202
174
  });
203
-
204
175
  target.classList.remove('multiselect__options--selected');
205
176
  target.setAttribute('style', style.multiselect__options);
206
-
207
177
  _this2._removeOptionFromList(target.dataset.value);
208
178
  };
209
-
210
179
  for (var i = 0; i < this._selectedOptions.length; i++) {
211
180
  _loop(i);
212
181
  }
213
-
214
182
  this._selectedOptions = [];
215
-
216
183
  this._handleClearSelectionBtn();
217
-
218
184
  this._handlePlaceholder();
219
-
220
185
  this._dispatchEvent({
221
186
  action: 'CLEAR_ALL_OPTIONS',
222
187
  selection: this._selectedOptions
223
188
  });
224
189
  }
190
+
225
191
  /**
226
192
  * Close the options container.
227
193
  * @private
228
194
  */
229
-
230
195
  }, {
231
196
  key: "_closeList",
232
197
  value: function _closeList() {
233
198
  this._domElements.input.value = '';
234
-
235
199
  this._domElements.optionsContainer.classList.remove('visible');
236
-
237
200
  this._domElements.optionsContainer.setAttribute('style', style.multiselect__options);
238
-
239
201
  this._filterOptions('');
240
-
241
202
  this._removeAllArrowSelected();
242
203
  }
204
+
243
205
  /**
244
206
  * Dispatches new events.
245
207
  * @param { object : { action: string; selection: { option: string; text: string; }[]; value?: string; } } event
246
208
  * @private
247
209
  */
248
-
249
210
  }, {
250
211
  key: "_dispatchEvent",
251
212
  value: function _dispatchEvent(event) {
252
213
  this._event(event);
253
214
  }
215
+
254
216
  /**
255
217
  * Enables all main event listenners.
256
218
  * @private
257
219
  */
258
-
259
220
  }, {
260
221
  key: "_enableEventListenners",
261
222
  value: function _enableEventListenners() {
262
223
  var _this3 = this;
263
-
264
224
  document.addEventListener('mouseup', function (_ref2) {
265
225
  var target = _ref2.target;
266
-
267
226
  if (!_this3._multiselect.contains(target)) {
268
227
  _this3._filterOptions('');
269
-
270
228
  _this3._closeList();
271
-
272
229
  _this3._handlePlaceholder();
273
230
  }
274
231
  });
275
-
276
232
  this._domElements.clear.addEventListener('click', function () {
277
233
  _this3._clearSelection();
278
234
  });
279
-
280
235
  for (var i = 0; i < this._domElements.options.list.length; i++) {
281
236
  var option = this._domElements.options.list[i];
282
237
  option.addEventListener('click', function (_ref3) {
283
238
  var target = _ref3.target;
284
-
285
239
  _this3._handleOption(target);
286
-
287
240
  _this3._closeList();
288
241
  });
289
242
  }
290
-
291
243
  this._domElements.input.addEventListener('focus', function () {
292
244
  _this3._domElements.optionsContainer.classList.add('visible');
293
-
294
245
  _this3._domElements.optionsContainer.setAttribute('style', style.multiselect__options_visible);
295
246
  });
296
-
297
247
  this._domElements.input.addEventListener('input', function (_ref4) {
298
248
  var value = _ref4.target.value;
299
-
300
249
  if (_this3._domElements.options.list.length > 0) {
301
250
  _this3._filterOptions(value);
302
251
  }
303
252
  });
304
-
305
253
  this._domElements.input.addEventListener('keydown', function (e) {
306
254
  _this3._handleArrows(e);
307
-
308
255
  _this3._handleBackspace(e);
309
-
310
256
  _this3._handleEnter(e);
311
257
  });
312
258
  }
259
+
313
260
  /**
314
261
  * Filters user input.
315
262
  * @param { string } value
316
263
  * @private
317
264
  */
318
-
319
265
  }, {
320
266
  key: "_filterOptions",
321
267
  value: function _filterOptions(value) {
322
268
  var _this4 = this;
323
-
324
269
  var isOpen = this._domElements.optionsContainer.classList.contains('visible');
325
-
326
270
  var valueLowerCase = value.toLowerCase();
327
-
328
271
  if (!isOpen && value.length > 0) {
329
272
  this._domElements.optionsContainer.classList.add('visible');
330
-
331
273
  this._domElements.optionsContainer.setAttribute('style', style.multiselect__options_visible);
332
274
  }
333
-
334
275
  if (this._domElements.options.list.length > 0) {
335
276
  for (var i = 0; i < this._domElements.options.list.length; i++) {
336
277
  var el = this._domElements.options.list[i];
337
278
  var text = this._itemTemplate ? this._data[i][this._textField] : el.textContent;
338
-
339
279
  if (text.toLowerCase().substring(0, valueLowerCase.length) === valueLowerCase) {
340
280
  this._domElements.optionsContainerList.appendChild(el);
341
281
  } else {
342
282
  el.parentNode && el.parentNode.removeChild(el);
343
283
  }
344
284
  }
345
-
346
285
  var hasResults = this._domElements.options.some(function (el, index) {
347
286
  return (_this4._itemTemplate ? _this4._data[index][_this4._textField] : el.textContent).toLowerCase().substring(0, valueLowerCase.length) === valueLowerCase;
348
287
  });
349
-
350
288
  this._showNoResults(!hasResults);
351
289
  }
352
290
  }
@@ -356,24 +294,21 @@ var IconicMultiSelect = /*#__PURE__*/function () {
356
294
  var result = '';
357
295
  var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
358
296
  var charactersLength = characters.length;
359
-
360
297
  for (var i = 0; i < length; i++) {
361
298
  result += characters.charAt(Math.floor(Math.random() * charactersLength));
362
299
  }
363
-
364
300
  return result;
365
301
  }
302
+
366
303
  /**
367
304
  * Gets data from select tag.
368
305
  * @private
369
306
  */
370
-
371
307
  }, {
372
308
  key: "_getDataFromSelectTag",
373
309
  value: function _getDataFromSelectTag() {
374
310
  var arr = [];
375
311
  var options = this._select.options;
376
-
377
312
  for (var i = 0; i < options.length; i++) {
378
313
  var item = options[i];
379
314
  arr.push({
@@ -382,14 +317,13 @@ var IconicMultiSelect = /*#__PURE__*/function () {
382
317
  selected: item.hasAttribute('selected')
383
318
  });
384
319
  }
385
-
386
320
  return arr;
387
321
  }
322
+
388
323
  /**
389
324
  * Gets data from settings.
390
325
  * @private
391
326
  */
392
-
393
327
  }, {
394
328
  key: "_getDataFromSettings",
395
329
  value: function _getDataFromSettings() {
@@ -397,11 +331,9 @@ var IconicMultiSelect = /*#__PURE__*/function () {
397
331
  var isValueFieldValid = typeof this._valueField === 'string';
398
332
  var isTextFieldValid = typeof this._textField === 'string';
399
333
  var arr = [];
400
-
401
334
  if (!isValueFieldValid || !isTextFieldValid) {
402
335
  throw new Error('textField and valueField must be of type string');
403
336
  }
404
-
405
337
  for (var i = 0; i < this._data.length; i++) {
406
338
  var item = this._data[i];
407
339
  arr.push({
@@ -410,105 +342,89 @@ var IconicMultiSelect = /*#__PURE__*/function () {
410
342
  selected: typeof item.selected === 'boolean' ? item.selected : false
411
343
  });
412
344
  }
413
-
414
345
  return arr;
415
346
  } else {
416
347
  return null;
417
348
  }
418
349
  }
350
+
419
351
  /**
420
352
  * Handles Arrow up & Down. Selection of an option is also possible with these keys.
421
353
  * @param { Event } event
422
354
  * @private
423
355
  */
424
-
425
356
  }, {
426
357
  key: "_handleArrows",
427
358
  value: function _handleArrows(event) {
428
359
  if (event.keyCode === 40 || event.keyCode === 38) {
429
360
  event.preventDefault();
430
-
431
- var isOpen = this._domElements.optionsContainer.classList.contains('visible'); // An updated view of the container is needed because of the filtering option
432
-
433
-
361
+ var isOpen = this._domElements.optionsContainer.classList.contains('visible');
362
+ // An updated view of the container is needed because of the filtering option
434
363
  var optionsContainerList = this._multiselect.querySelector('.multiselect__options > ul');
435
-
436
364
  if (!isOpen) {
437
365
  this._domElements.optionsContainer.classList.add('visible');
438
-
439
366
  this._domElements.optionsContainer.setAttribute('style', style.multiselect__options_visible);
440
-
441
367
  optionsContainerList.firstElementChild.classList.add('arrow-selected');
442
368
  optionsContainerList.firstElementChild.setAttribute('style', style.multiselect__options_ul_li_arrow_selected);
443
369
  optionsContainerList.firstElementChild.scrollIntoView(false);
444
370
  } else {
445
371
  var selected = this._multiselect.querySelector('.multiselect__options ul li.arrow-selected');
446
-
447
372
  var action = {
448
373
  ArrowUp: 'previous',
449
374
  Up: 'previous',
450
375
  ArrowDown: 'next',
451
376
  Down: 'next'
452
377
  };
453
-
454
378
  if (!selected) {
455
379
  optionsContainerList.firstElementChild.classList.add('arrow-selected');
456
380
  optionsContainerList.firstElementChild.setAttribute('style', style.multiselect__options_ul_li_arrow_selected);
457
381
  optionsContainerList.firstElementChild.scrollIntoView(false);
458
382
  return;
459
383
  }
460
-
461
384
  selected.classList.remove('arrow-selected');
462
385
  selected.setAttribute('style', style.multiselect__options_ul_li);
463
- selected = selected[action[event.key] + 'ElementSibling']; // Go to start or end of the popup list
386
+ selected = selected[action[event.key] + 'ElementSibling'];
464
387
 
388
+ // Go to start or end of the popup list
465
389
  if (!selected) {
466
390
  selected = optionsContainerList.children[action[event.key] === 'next' ? 0 : optionsContainerList.children.length - 1];
467
391
  selected.classList.add('arrow-selected');
468
392
  selected.setAttribute('style', style.multiselect__options_ul_li_arrow_selected);
469
-
470
393
  this._scrollIntoView(optionsContainerList, selected);
471
-
472
394
  return;
473
395
  }
474
-
475
396
  selected.classList.add('arrow-selected');
476
397
  selected.setAttribute('style', style.multiselect__options_ul_li_arrow_selected);
477
-
478
398
  this._scrollIntoView(optionsContainerList, selected);
479
399
  }
480
400
  }
481
401
  }
402
+
482
403
  /**
483
404
  * Handles the backspace key event - Deletes the preceding option in the selection list.
484
405
  * @param { Event } e
485
406
  * @private
486
407
  */
487
-
488
408
  }, {
489
409
  key: "_handleBackspace",
490
410
  value: function _handleBackspace(e) {
491
411
  if (e.keyCode === 8 && e.target.value === '') {
492
412
  var lastSelectedOption = this._selectedOptions.length > 0 ? this._selectedOptions[this._selectedOptions.length - 1] : null;
493
-
494
413
  if (lastSelectedOption) {
495
414
  var targetLastSelectedOption = this._multiselect.querySelector("li[data-value=\"".concat(lastSelectedOption.value, "\"]"));
496
-
497
415
  this._handleOption(targetLastSelectedOption);
498
-
499
416
  if (this._selectedOptions.length === 0) {
500
417
  this._domElements.optionsContainer.classList.remove('visible');
501
-
502
418
  this._domElements.optionsContainer.setAttribute('style', style.multiselect__options);
503
419
  }
504
420
  }
505
421
  }
506
422
  }
423
+
507
424
  /**
508
425
  * Shows clear selection button if some options are selected.
509
426
  * @private
510
427
  */
511
-
512
428
  }, {
513
429
  key: "_handleClearSelectionBtn",
514
430
  value: function _handleClearSelectionBtn() {
@@ -518,21 +434,19 @@ var IconicMultiSelect = /*#__PURE__*/function () {
518
434
  this._domElements.clear.style.display = 'none';
519
435
  }
520
436
  }
437
+
521
438
  /**
522
439
  * Handles the enter key event.
523
440
  * @param { Event } event
524
441
  * @private
525
442
  */
526
-
527
443
  }, {
528
444
  key: "_handleEnter",
529
445
  value: function _handleEnter(event) {
530
446
  if (event.keyCode === 13) {
531
447
  var selected = this._multiselect.querySelector('.multiselect__options ul li.arrow-selected');
532
-
533
448
  if (selected) {
534
449
  this._handleOption(selected);
535
-
536
450
  this._closeList();
537
451
  }
538
452
  }
@@ -541,46 +455,34 @@ var IconicMultiSelect = /*#__PURE__*/function () {
541
455
  key: "_handleOption",
542
456
  value: function _handleOption(target) {
543
457
  var dispatchEvent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
544
-
545
458
  // Remove
546
459
  for (var i = 0; i < this._selectedOptions.length; i++) {
547
460
  var el = this._selectedOptions[i];
548
-
549
461
  if (el.value === target.dataset.value) {
550
462
  target.classList.remove('multiselect__options--selected');
551
463
  target.setAttribute('style', style.multiselect__options);
552
-
553
464
  this._selectedOptions.splice(i, 1);
554
-
555
465
  this._removeOptionFromList(target.dataset.value);
556
-
557
466
  this._handleClearSelectionBtn();
558
-
559
467
  this._handlePlaceholder();
560
-
561
468
  return dispatchEvent && this._dispatchEvent({
562
469
  action: 'REMOVE_OPTION',
563
470
  value: target.dataset.value,
564
471
  selection: this._selectedOptions
565
472
  });
566
473
  }
567
- } // Add
568
-
474
+ }
569
475
 
476
+ // Add
570
477
  for (var _i = 0; _i < this._options.length; _i++) {
571
478
  var option = this._options[_i];
572
-
573
479
  if (option.value === target.dataset.value) {
574
480
  target.classList.add('multiselect__options--selected');
575
481
  target.setAttribute('style', style.multiselect__options_selected);
576
482
  this._selectedOptions = [].concat((0, _toConsumableArray2["default"])(this._selectedOptions), [option]);
577
-
578
483
  this._addOptionToList(option, _i);
579
-
580
484
  this._handleClearSelectionBtn();
581
-
582
485
  this._handlePlaceholder();
583
-
584
486
  return dispatchEvent && this._dispatchEvent({
585
487
  action: 'ADD_OPTION',
586
488
  value: target.dataset.value,
@@ -589,11 +491,11 @@ var IconicMultiSelect = /*#__PURE__*/function () {
589
491
  }
590
492
  }
591
493
  }
494
+
592
495
  /**
593
496
  * Shows the placeholder if no options are selected.
594
497
  * @private
595
498
  */
596
-
597
499
  }, {
598
500
  key: "_handlePlaceholder",
599
501
  value: function _handlePlaceholder() {
@@ -603,43 +505,34 @@ var IconicMultiSelect = /*#__PURE__*/function () {
603
505
  key: "_initSelectedList",
604
506
  value: function _initSelectedList() {
605
507
  var _this5 = this;
606
-
607
508
  var hasItemsSelected = false;
608
-
609
509
  var _loop2 = function _loop2(i) {
610
510
  var option = _this5._options[i];
611
-
612
511
  if (option.selected) {
613
512
  hasItemsSelected = true;
614
-
615
513
  var target = _this5._domElements.options.find(function (el) {
616
514
  return el.dataset.value === option.value;
617
515
  });
618
-
619
516
  target.classList.add('multiselect__options--selected');
620
517
  target.setAttribute('style', style.multiselect__options_selected);
621
518
  _this5._selectedOptions = [].concat((0, _toConsumableArray2["default"])(_this5._selectedOptions), [option]);
622
-
623
519
  _this5._addOptionToList(option, i);
624
520
  }
625
521
  };
626
-
627
522
  for (var i = 0; i < this._options.length; i++) {
628
523
  _loop2(i);
629
524
  }
630
-
631
525
  if (hasItemsSelected) {
632
526
  this._handleClearSelectionBtn();
633
527
  }
634
-
635
528
  this._handlePlaceholder();
636
529
  }
530
+
637
531
  /**
638
532
  * Process the custom template.
639
533
  * @param { string } template
640
534
  * @private
641
535
  */
642
-
643
536
  }, {
644
537
  key: "_processTemplate",
645
538
  value: function _processTemplate(template, index) {
@@ -647,128 +540,113 @@ var IconicMultiSelect = /*#__PURE__*/function () {
647
540
  var objAttr = template.match(/\$\{(\w+)\}/g).map(function (e) {
648
541
  return e.replace(/\$\{|\}/g, '');
649
542
  });
650
-
651
543
  for (var i = 0; i < objAttr.length; i++) {
652
544
  var _this$_data$index$att;
653
-
654
- var attr = objAttr[i]; // eslint-disable-next-line no-useless-escape
655
-
545
+ var attr = objAttr[i];
546
+ // eslint-disable-next-line no-useless-escape
656
547
  processedTemplate = processedTemplate.replace("${".concat(attr, "}"), (_this$_data$index$att = this._data[index][attr]) !== null && _this$_data$index$att !== void 0 ? _this$_data$index$att : '');
657
548
  }
658
-
659
549
  return processedTemplate;
660
550
  }
661
551
  }, {
662
552
  key: "_removeAllArrowSelected",
663
553
  value: function _removeAllArrowSelected() {
664
554
  var className = 'arrow-selected';
665
-
666
555
  var target = this._domElements.options.find(function (el) {
667
556
  return el.classList.contains(className);
668
557
  });
669
-
670
558
  target && target.classList.remove(className) && target.setAttribute('style', style.multiselect__options_ul_li);
671
559
  }
560
+
672
561
  /**
673
562
  * Removes an option from the list.
674
563
  * @param { string } value
675
564
  * @private
676
565
  */
677
-
678
566
  }, {
679
567
  key: "_removeOptionFromList",
680
568
  value: function _removeOptionFromList(value) {
681
569
  var optionDom = this._multiselect.querySelector("span[data-value=\"".concat(value, "\"]"));
682
-
683
570
  optionDom && optionDom.parentNode && optionDom.parentNode.removeChild(optionDom);
684
571
  }
572
+
685
573
  /**
686
574
  * Renders the multiselect options list view.
687
575
  * @private
688
576
  */
689
-
690
577
  }, {
691
578
  key: "_renderOptionsList",
692
579
  value: function _renderOptionsList() {
693
580
  var _this6 = this;
694
-
695
581
  var html = "\n <div class=\"multiselect__options\" style=\"".concat(style.multiselect__options, "\">\n <ul style=\"").concat(style.multiselect__options_ul, "\">\n ").concat(this._options.length > 0 && !this._itemTemplate ? this._options.map(function (option) {
696
582
  return "\n <li data-value=\"".concat(option.value, "\" style=\"").concat(style.multiselect__options_ul_li, "\">").concat(option.text, "</li>\n ");
697
583
  }).join('') : '', "\n\n ").concat(this._options.length > 0 && this._itemTemplate ? this._options.map(function (option, index) {
698
584
  return "\n <li data-value=\"".concat(option.value, "\" style=\"").concat(style.multiselect__options_ul_li, "\">").concat(_this6._processTemplate(_this6._itemTemplate, index), "</li>\n ");
699
585
  }).join('') : '', "\n ").concat(this._showNoData(this._options.length === 0), "\n </ul>\n </div>\n ");
700
-
701
586
  this._multiselect.insertAdjacentHTML('beforeend', html);
702
587
  }
588
+
703
589
  /**
704
590
  * Renders the multiselect view.
705
591
  * @private
706
592
  */
707
-
708
593
  }, {
709
594
  key: "_renderMultiselect",
710
595
  value: function _renderMultiselect() {
711
596
  this._select.style.display = 'none';
712
-
713
- var id = 'iconic-' + this._generateId(20); // Timea created dedicated div element because previous code was not rendering
714
-
715
-
597
+ var id = 'iconic-' + this._generateId(20);
598
+ // Timea created dedicated div element because previous code was not rendering
716
599
  this._multiselect = document.createElement('div');
717
-
718
600
  this._multiselect.setAttribute('id', id);
719
-
720
601
  this._multiselect.setAttribute('class', 'multiselect__container');
721
-
722
602
  this._multiselect.setAttribute('style', style.multiselect__container);
723
-
724
603
  var html = "\n <div class=\"multiselect__wrapper\" style=\"".concat(style.multiselect__wrapper, "\">\n <input class=\"multiselect__input\" style=\"").concat(style.multiselect__input, "\" placeholder=\"").concat(this._placeholder, "\" />\n </div>\n <span style=\"display: none;\" class=\"multiselect__clear-btn\" style=\"").concat(style.multiselect__clear_btn, "\">").concat(this._cross, "</span>\n ");
725
604
  this._multiselect.innerHTML = html;
726
-
727
605
  this._selectContainer.appendChild(this._multiselect);
728
606
  }
607
+
729
608
  /**
730
609
  * ScrollIntoView - This small utility reproduces the behavior of .scrollIntoView({ block: "nearest", inline: "nearest" })
731
610
  * This is for IE compatibility without a need of a polyfill
732
611
  * @private
733
612
  */
734
-
735
613
  }, {
736
614
  key: "_scrollIntoView",
737
615
  value: function _scrollIntoView(parent, child) {
738
616
  var rectParent = parent.getBoundingClientRect();
739
- var rectChild = child.getBoundingClientRect(); // Detect if not visible at top and then scroll to the top
617
+ var rectChild = child.getBoundingClientRect();
740
618
 
619
+ // Detect if not visible at top and then scroll to the top
741
620
  if (!(rectParent.top < rectChild.bottom - child.offsetHeight)) {
742
621
  parent.scrollTop = child.clientHeight + (child.offsetTop - child.offsetHeight);
743
- } // Detect if not visible at bottom and then scroll to the bottom
744
-
622
+ }
745
623
 
624
+ // Detect if not visible at bottom and then scroll to the bottom
746
625
  if (!(rectParent.bottom > rectChild.top + child.offsetHeight)) {
747
626
  parent.scrollTop = child.clientHeight + (child.offsetTop - child.offsetHeight) - (parent.offsetHeight - (child.offsetHeight + (child.offsetHeight - child.clientHeight)));
748
627
  }
749
628
  }
629
+
750
630
  /**
751
631
  * Shows a no data message.
752
632
  * @param { boolean } condition
753
633
  * @private
754
634
  */
755
-
756
635
  }, {
757
636
  key: "_showNoData",
758
637
  value: function _showNoData(condition) {
759
638
  return condition ? "<p class=\"multiselect__options--no-data\" style=\"".concat(style.multiselect__options_ul_p_multiselect__options_no_data, "\">").concat(this._noData, "</p>") : '';
760
639
  }
640
+
761
641
  /**
762
642
  * Shows a no results message.
763
643
  * @param { boolean } condition
764
644
  * @private
765
645
  */
766
-
767
646
  }, {
768
647
  key: "_showNoResults",
769
648
  value: function _showNoResults(condition) {
770
649
  var dom = this._multiselect.querySelector('.multiselect__options--no-results');
771
-
772
650
  if (condition) {
773
651
  var html = "<p class=\"multiselect__options--no-results\" style=\"".concat(style.multiselect__options_ul_p_multiselect__options_no_results, "\">").concat(this._noResults, "</p>");
774
652
  !dom && this._domElements.optionsContainerList.insertAdjacentHTML('beforeend', html);
@@ -779,6 +657,5 @@ var IconicMultiSelect = /*#__PURE__*/function () {
779
657
  }]);
780
658
  return IconicMultiSelect;
781
659
  }();
782
-
783
660
  exports.IconicMultiSelect = IconicMultiSelect;
784
661
  //# sourceMappingURL=multiSelect.js.map