@heartlandone/vega 2.30.0 → 2.31.0

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 (22) hide show
  1. package/dist/cjs/vega-combo-box.cjs.entry.js +158 -32
  2. package/dist/cjs/vega-dropdown_5.cjs.entry.js +6 -4
  3. package/dist/cjs/vega-env-manager-23b8b23c.js +2 -2
  4. package/dist/collection/components/vega-combo-box/slimmers/controllers/vega-combo-box-items-slot-controller.js +57 -0
  5. package/dist/collection/components/vega-combo-box/slimmers/controllers/vega-combo-box-source-controller.js +23 -0
  6. package/dist/collection/components/vega-combo-box/slimmers/renderers/vega-combo-box-dropdown-renderer.js +46 -5
  7. package/dist/collection/components/vega-combo-box/vega-combo-box.js +10 -0
  8. package/dist/collection/components/vega-dropdown/slimmers/controllers/vega-dropdown-scrollable-controller.js +6 -4
  9. package/dist/esm/vega-combo-box.entry.js +159 -33
  10. package/dist/esm/vega-dropdown_5.entry.js +6 -4
  11. package/dist/esm/vega-env-manager-8f8dc473.js +2 -2
  12. package/dist/types/components/vega-combo-box/slimmers/controllers/vega-combo-box-items-slot-controller.d.ts +19 -0
  13. package/dist/types/components/vega-combo-box/slimmers/controllers/vega-combo-box-source-controller.d.ts +14 -0
  14. package/dist/types/components/vega-combo-box/slimmers/renderers/vega-combo-box-dropdown-renderer.d.ts +7 -0
  15. package/dist/types/components/vega-combo-box/vega-combo-box.d.ts +4 -0
  16. package/dist/vega/p-1e6c23e0.entry.js +1 -0
  17. package/dist/vega/p-5f377954.js +1 -1
  18. package/dist/vega/p-6e6ec77d.entry.js +1 -0
  19. package/dist/vega/vega.esm.js +1 -1
  20. package/package.json +1 -1
  21. package/dist/vega/p-3903ce7a.entry.js +0 -1
  22. package/dist/vega/p-cea70476.entry.js +0 -1
@@ -16,8 +16,11 @@ const staticSubjectTitle = require('./static-subject-title-471e1793.js');
16
16
  const changeManager = require('./change-manager-a297e4d2.js');
17
17
  const accessibility = require('./accessibility-bfa227f6.js');
18
18
  const domNodeSubjectObserverFactory = require('./dom-node-subject-observer-factory-2e41340d.js');
19
+ const vegaInternalEventId = require('./vega-internal-event-id-99cc22e1.js');
19
20
  const keyboardManagerSlimmer = require('./keyboard-manager-slimmer-8e2d4b5d.js');
20
21
  const ui = require('./ui-08f33116.js');
22
+ const mutationObserverSlimmer = require('./mutation-observer-slimmer-895b3d3e.js');
23
+ const mutationObserverFilters = require('./mutation-observer-filters-e5a7f85a.js');
21
24
  require('./breakpoints-7e2dff90.js');
22
25
  require('./ui-32e69595.js');
23
26
  require('./regex-c1f70fd4.js');
@@ -26,11 +29,8 @@ require('./string-21427167.js');
26
29
  require('./observer-f49483e8.js');
27
30
  require('./create-public-api-runtime-metrics-slimmer-5cc88124.js');
28
31
  require('./dynamic-slimmer-f31fdfd7.js');
29
- require('./vega-internal-event-id-99cc22e1.js');
30
32
  require('./translation-42c1b2c8.js');
31
33
  require('./page-resize-observer-slimmer-a8cf1874.js');
32
- require('./mutation-observer-slimmer-895b3d3e.js');
33
- require('./mutation-observer-filters-e5a7f85a.js');
34
34
  require('./array-5adef7b2.js');
35
35
  require('./number-4816603d.js');
36
36
  require('./internal-vega-event-manager-9ffb3ed1.js');
@@ -66,7 +66,7 @@ const VegaComboBoxRuntimeMetricsPayloadDefinition = [
66
66
  },
67
67
  ];
68
68
 
69
- var __decorate$4 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
69
+ var __decorate$6 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
70
70
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
71
71
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
72
72
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
@@ -94,15 +94,18 @@ class VegaComboBoxDropdownRenderer extends globalSlimmerRegistry.VegaSlimmer {
94
94
  /* istanbul ignore next */
95
95
  this.onInputChange = async (e) => {
96
96
  const value = e.target.value;
97
- if (this.useDefaultFilter) {
97
+ if (this.useDefaultFilter || this.vegaDropdownProps.dynamicOption) {
98
98
  await this.dropdownRef.show();
99
99
  await this.dropdownRef.search(value);
100
100
  }
101
- else {
101
+ if (this.isTemplateMode || !this.useDefaultFilter) {
102
102
  this.searchEventEmit.emit(value);
103
103
  }
104
104
  };
105
105
  }
106
+ connectedCallback() {
107
+ this.isTemplateMode = this.host.querySelector('[slot=items]') !== null;
108
+ }
106
109
  getDropdownRef() {
107
110
  return this.dropdownRef;
108
111
  }
@@ -123,8 +126,14 @@ class VegaComboBoxDropdownRenderer extends globalSlimmerRegistry.VegaSlimmer {
123
126
  async show() {
124
127
  await this.dropdownRef.show();
125
128
  }
129
+ replaceItemsSlot(itemsSlot) {
130
+ if (itemsSlot && this.itemsSlotRef) {
131
+ this.itemsSlotRef.remove();
132
+ this.dropdownRef.append(itemsSlot);
133
+ }
134
+ }
126
135
  renderDropdown() {
127
- return (index.h("vega-dropdown", Object.assign({ trigger: this.disabled ? 'none' : 'click', source: this.source, selectType: "multiple", selectedSourceKey: this.value, matchTargetWidth: true }, this.vegaDropdownProps, { ref: (ref) => {
136
+ return (index.h("vega-dropdown", Object.assign({ trigger: this.disabled ? 'none' : 'click', source: this.source, selectType: "multiple", selectedSourceKey: this.value, matchTargetWidth: true, useDefaultFilter: this.useDefaultFilter }, this.vegaDropdownProps, { ref: (ref) => {
128
137
  this.dropdownRef = ref;
129
138
  domNodeSubjectObserverFactory.DomNodeSubjectObserverFactory.addUniqueObserverToNode(ref, vegaEventId.VegaCreate, async (payload) => {
130
139
  await this.onDropdownCreate(payload.detail);
@@ -135,7 +144,24 @@ class VegaComboBoxDropdownRenderer extends globalSlimmerRegistry.VegaSlimmer {
135
144
  domNodeSubjectObserverFactory.DomNodeSubjectObserverFactory.addUniqueObserverToNode(ref, vegaEventId.VegaDropdownClick, async () => {
136
145
  await this.onItemClick();
137
146
  });
138
- } }), this.renderContainer()));
147
+ domNodeSubjectObserverFactory.DomNodeSubjectObserverFactory.addUniqueObserverToNode(ref, vegaInternalEventId.VegaInternalDropdownTemplateItemsChange,
148
+ /*
149
+ * The below method is e2e-test covered in
150
+ * @see{module:vega-combo-box-template-select-e2e}
151
+ */
152
+ /* istanbul ignore next */
153
+ (payload) => {
154
+ const addedItems = Array.from(payload)
155
+ .filter((item) => !this.source.find((sourceItem) => sourceItem.key === item.itemKey))
156
+ .map((item) => ({
157
+ key: item.itemKey,
158
+ label: item.label,
159
+ }));
160
+ this.sourceController.setSource([...this.source, ...addedItems]);
161
+ });
162
+ } }),
163
+ this.renderContainer(),
164
+ this.renderItemsSlot()));
139
165
  }
140
166
  renderContainer() {
141
167
  return (index.h("div", { class: {
@@ -145,6 +171,11 @@ class VegaComboBoxDropdownRenderer extends globalSlimmerRegistry.VegaSlimmer {
145
171
  this.renderSelectedContainer(),
146
172
  this.renderInputContainer()));
147
173
  }
174
+ renderItemsSlot() {
175
+ return (this.isTemplateMode && (index.h("div", { slot: "items", ref: (ref) => {
176
+ this.itemsSlotRef = ref;
177
+ } })));
178
+ }
148
179
  renderSelectedContainer() {
149
180
  const selected = this.value
150
181
  .map((key) => this.source.find((item) => item.key === key))
@@ -175,41 +206,50 @@ class VegaComboBoxDropdownRenderer extends globalSlimmerRegistry.VegaSlimmer {
175
206
  await this.dropdownRef.search('');
176
207
  }
177
208
  }
178
- __decorate$4([
209
+ __decorate$6([
210
+ globalSlimmerRegistry.MapToComponentField()
211
+ ], VegaComboBoxDropdownRenderer.prototype, "host", void 0);
212
+ __decorate$6([
179
213
  globalSlimmerRegistry.MapToComponentField()
180
214
  ], VegaComboBoxDropdownRenderer.prototype, "value", void 0);
181
- __decorate$4([
215
+ __decorate$6([
182
216
  globalSlimmerRegistry.MapToComponentField()
183
217
  ], VegaComboBoxDropdownRenderer.prototype, "source", void 0);
184
- __decorate$4([
218
+ __decorate$6([
185
219
  globalSlimmerRegistry.MapToComponentField()
186
220
  ], VegaComboBoxDropdownRenderer.prototype, "disabled", void 0);
187
- __decorate$4([
221
+ __decorate$6([
188
222
  globalSlimmerRegistry.MapToComponentField()
189
223
  ], VegaComboBoxDropdownRenderer.prototype, "size", void 0);
190
- __decorate$4([
224
+ __decorate$6([
191
225
  globalSlimmerRegistry.MapToComponentField()
192
226
  ], VegaComboBoxDropdownRenderer.prototype, "vegaDropdownProps", void 0);
193
- __decorate$4([
227
+ __decorate$6([
194
228
  globalSlimmerRegistry.MapToComponentField()
195
229
  ], VegaComboBoxDropdownRenderer.prototype, "label", void 0);
196
- __decorate$4([
230
+ __decorate$6([
197
231
  globalSlimmerRegistry.MapToComponentField()
198
232
  ], VegaComboBoxDropdownRenderer.prototype, "placeholder", void 0);
199
- __decorate$4([
233
+ __decorate$6([
200
234
  globalSlimmerRegistry.MapToComponentField()
201
235
  ], VegaComboBoxDropdownRenderer.prototype, "useDefaultFilter", void 0);
202
- __decorate$4([
236
+ __decorate$6([
203
237
  globalSlimmerRegistry.MapToComponentField()
204
238
  ], VegaComboBoxDropdownRenderer.prototype, "createEventEmit", void 0);
205
- __decorate$4([
239
+ __decorate$6([
206
240
  globalSlimmerRegistry.MapToComponentField()
207
241
  ], VegaComboBoxDropdownRenderer.prototype, "searchEventEmit", void 0);
208
- __decorate$4([
242
+ __decorate$6([
209
243
  globalSlimmerRegistry.MapToComponentField()
210
244
  ], VegaComboBoxDropdownRenderer.prototype, "valueController", void 0);
245
+ __decorate$6([
246
+ globalSlimmerRegistry.MapToComponentField()
247
+ ], VegaComboBoxDropdownRenderer.prototype, "sourceController", void 0);
248
+ __decorate$6([
249
+ globalSlimmerRegistry.MapToComponentMethod('connectedCallback')
250
+ ], VegaComboBoxDropdownRenderer.prototype, "connectedCallback", null);
211
251
 
212
- var __decorate$3 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
252
+ var __decorate$5 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
213
253
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
214
254
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
215
255
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
@@ -228,11 +268,11 @@ class VegaComboBoxValueController extends globalSlimmerRegistry.VegaSlimmer {
228
268
  this.value = value;
229
269
  }
230
270
  }
231
- __decorate$3([
271
+ __decorate$5([
232
272
  globalSlimmerRegistry.MapToComponentField({ writable: true })
233
273
  ], VegaComboBoxValueController.prototype, "value", void 0);
234
274
 
235
- var __decorate$2 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
275
+ var __decorate$4 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
236
276
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
237
277
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
238
278
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
@@ -265,23 +305,23 @@ class VegaComboBoxRenderer extends globalSlimmerRegistry.VegaSlimmer {
265
305
  return index.h("div", { class: "vega-combo-box-hint" }, this.hint);
266
306
  }
267
307
  }
268
- __decorate$2([
308
+ __decorate$4([
269
309
  globalSlimmerRegistry.MapToComponentField()
270
310
  ], VegaComboBoxRenderer.prototype, "required", void 0);
271
- __decorate$2([
311
+ __decorate$4([
272
312
  globalSlimmerRegistry.MapToComponentField()
273
313
  ], VegaComboBoxRenderer.prototype, "hint", void 0);
274
- __decorate$2([
314
+ __decorate$4([
275
315
  globalSlimmerRegistry.MapToComponentField()
276
316
  ], VegaComboBoxRenderer.prototype, "disabled", void 0);
277
- __decorate$2([
317
+ __decorate$4([
278
318
  globalSlimmerRegistry.MapToComponentField()
279
319
  ], VegaComboBoxRenderer.prototype, "dropdownRenderer", void 0);
280
- __decorate$2([
320
+ __decorate$4([
281
321
  globalSlimmerRegistry.MapToComponentField()
282
322
  ], VegaComboBoxRenderer.prototype, "label", void 0);
283
323
 
284
- var __decorate$1 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
324
+ var __decorate$3 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
285
325
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
286
326
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
287
327
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
@@ -379,19 +419,97 @@ class VegaComboBoxKeyboardController extends keyboardManagerSlimmer.KeyboardMana
379
419
  }
380
420
  }
381
421
  }
382
- __decorate$1([
422
+ __decorate$3([
383
423
  globalSlimmerRegistry.MapToComponentField()
384
424
  ], VegaComboBoxKeyboardController.prototype, "host", void 0);
385
- __decorate$1([
425
+ __decorate$3([
386
426
  globalSlimmerRegistry.MapToComponentField()
387
427
  ], VegaComboBoxKeyboardController.prototype, "value", void 0);
388
- __decorate$1([
428
+ __decorate$3([
389
429
  globalSlimmerRegistry.MapToComponentField()
390
430
  ], VegaComboBoxKeyboardController.prototype, "dropdownRenderer", void 0);
391
- __decorate$1([
431
+ __decorate$3([
392
432
  globalSlimmerRegistry.MapToComponentField()
393
433
  ], VegaComboBoxKeyboardController.prototype, "valueController", void 0);
394
434
 
435
+ var __decorate$2 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
436
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
437
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
438
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
439
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
440
+ };
441
+ /**
442
+ * The class `VegaInputSelectItemsSlotController` extends `VegaSlimmer` and manages
443
+ * appending host items to a dropdown element.
444
+ */
445
+ class VegaComboBoxItemsSlotController extends globalSlimmerRegistry.VegaSlimmer {
446
+ constructor() {
447
+ super(...arguments);
448
+ this.mutationObserver = new mutationObserverSlimmer.MutationObserverSlimmer({
449
+ mutationFilter: mutationObserverFilters.TagNameMutationFilter('VEGA-DROPDOWN-ITEM'),
450
+ options: {
451
+ childList: true,
452
+ subtree: true,
453
+ },
454
+ callback:
455
+ /*
456
+ * The below method is e2e-test covered in
457
+ * @see{module:vega-combo-box-template-slot-change-e2e}
458
+ */
459
+ /* istanbul ignore next */
460
+ // eslint-disable-next-line jsdoc/require-jsdoc
461
+ () => this.appendHostItemsToDropdown(),
462
+ });
463
+ }
464
+ /**
465
+ * Component lifecycle - [componentDidLoad]
466
+ */
467
+ componentDidLoad() {
468
+ this.appendHostItemsToDropdown();
469
+ }
470
+ /**
471
+ * The function appends host items to a dropdown element.
472
+ */
473
+ appendHostItemsToDropdown() {
474
+ this.dropdownRenderer.replaceItemsSlot(this.host.querySelector('[slot=items]'));
475
+ }
476
+ }
477
+ __decorate$2([
478
+ globalSlimmerRegistry.InjectVegaSlimmer()
479
+ ], VegaComboBoxItemsSlotController.prototype, "mutationObserver", void 0);
480
+ __decorate$2([
481
+ globalSlimmerRegistry.MapToComponentField()
482
+ ], VegaComboBoxItemsSlotController.prototype, "host", void 0);
483
+ __decorate$2([
484
+ globalSlimmerRegistry.MapToComponentField()
485
+ ], VegaComboBoxItemsSlotController.prototype, "dropdownRenderer", void 0);
486
+ __decorate$2([
487
+ globalSlimmerRegistry.MapToComponentMethod('componentDidLoad')
488
+ ], VegaComboBoxItemsSlotController.prototype, "componentDidLoad", null);
489
+
490
+ var __decorate$1 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
491
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
492
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
493
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
494
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
495
+ };
496
+ /**
497
+ * The source controller of `VegaComboBox` component.
498
+ */
499
+ class VegaComboBoxSourceController extends globalSlimmerRegistry.VegaSlimmer {
500
+ /**
501
+ * The function `setSource` sets the source of a VegaComboBox component.
502
+ *
503
+ * @param {string[]} source - source
504
+ */
505
+ setSource(source) {
506
+ this.source = source;
507
+ }
508
+ }
509
+ __decorate$1([
510
+ globalSlimmerRegistry.MapToComponentField({ writable: true })
511
+ ], VegaComboBoxSourceController.prototype, "source", void 0);
512
+
395
513
  const vegaComboBoxCss = ":host{display:inline-block;width:100%;min-width:0px;text-align:left;line-height:normal}.vega-combo-box-container{border:1px solid rgba(var(--v-border-input-field, 171, 198, 216, 1));background-color:rgba(var(--v-bg-primary, 252, 252, 252, 1));padding-left:16px;padding-right:16px;padding-top:12px;padding-bottom:12px;border-radius:8px;gap:8px;display:block;display:flex;flex-wrap:wrap;align-items:center;cursor:pointer}.vega-combo-box-container:hover{border:1px solid rgba(var(--v-border-input-field-hover, 115, 160, 190, 1))}.vega-combo-box-container:focus-within{border:1px solid rgba(var(--v-border-input-field-focus, 19, 98, 226, 1));box-shadow:0 0 0 4px rgba(var(--v-ring-input-focus, 19, 98, 226, 0.25))}.vega-combo-box-container .vega-combo-box-input-container{width:-webkit-min-content;width:-moz-min-content;width:min-content;flex-grow:1}.vega-combo-box-container input{border-style:none;background-color:rgba(var(--v-bg-transparent, 0, 0, 0, 0));font-family:\"Inter\", sans-serif;font-size:16px;font-weight:400;line-height:24px;letter-spacing:0px;color:rgba(var(--v-text-primary, 32, 54, 69, 1));width:100%}@media screen and (min-width: 768px) and (max-width: 1023px){.vega-combo-box-container input{font-family:\"Inter\", sans-serif;font-size:16px;font-weight:400;line-height:24px;letter-spacing:0px}}@media screen and (min-width: 1024px) and (max-width: 1439px){.vega-combo-box-container input{font-family:\"Inter\", sans-serif;font-size:16px;font-weight:400;line-height:24px;letter-spacing:0px}}@media screen and (min-width: 1440px) and (max-width: 9999px){.vega-combo-box-container input{font-family:\"Inter\", sans-serif;font-size:16px;font-weight:400;line-height:24px;letter-spacing:0px}}.vega-combo-box-container input:focus{outline:2px solid transparent;outline-offset:2px}.vega-combo-box-size-medium{padding-left:12px;padding-right:12px;padding-top:11px;padding-bottom:11px}.vega-combo-box-size-small{padding-left:12px;padding-right:12px;padding-top:7px;padding-bottom:7px}.vega-combo-box-container:focus{outline:none}vega-field-label{margin-bottom:8px}.error .vega-combo-box-container{border:1px solid rgba(var(--v-border-input-field-danger, 230, 50, 87, 1))}.error .vega-combo-box-container:hover{border:1px solid rgba(var(--v-border-input-field-danger-hover, 255, 87, 114, 1))}.error .vega-combo-box-container:focus-within{border:1px solid rgba(var(--v-border-input-field-danger-focus, 233, 71, 104, 1));box-shadow:0 0 0 4px rgba(var(--v-ring-input-danger-focus, 230, 50, 87, 0.25))}:host(.vega-combo-box-disabled) .vega-combo-box-container{border:1px solid rgba(var(--v-border-input-field-disabled, 222, 225, 227, 1));background-color:rgba(var(--v-bg-secondary, 245, 247, 247, 1));--tw-shadow:0 0 #0000;box-shadow:rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px}:host(.vega-combo-box-disabled) .vega-combo-box-container:hover{border:1px solid rgba(var(--v-border-input-field-disabled, 222, 225, 227, 1))}:host(.vega-combo-box-disabled) vega-icon{color:rgba(var(--v-text-disabled, 176, 180, 181, 1))}.vega-combo-box-container input::placeholder{color:rgba(var(--v-text-input-placeholder, 176, 180, 181, 1))}.vega-error{display:inline-block;padding-left:8px;padding-right:8px;padding-top:8px;font-family:\"Inter\", sans-serif;font-size:14px;font-weight:400;line-height:18px;letter-spacing:0px;color:rgba(var(--v-text-error, 189, 41, 71, 1))}@media screen and (min-width: 768px) and (max-width: 1023px){.vega-error{font-family:\"Inter\", sans-serif;font-size:14px;font-weight:400;line-height:18px;letter-spacing:0px}}@media screen and (min-width: 1024px) and (max-width: 1439px){.vega-error{font-family:\"Inter\", sans-serif;font-size:14px;font-weight:400;line-height:18px;letter-spacing:0px}}@media screen and (min-width: 1440px) and (max-width: 9999px){.vega-error{font-family:\"Inter\", sans-serif;font-size:14px;font-weight:400;line-height:18px;letter-spacing:0px}}.vega-hidden{display:none}.vega-combo-box-hint{padding-left:8px;padding-right:8px;font-family:\"Inter\", sans-serif;font-size:14px;font-weight:400;line-height:18px;letter-spacing:0px;color:rgba(var(--v-text-secondary, 107, 116, 125, 1));padding-top:8px}@media screen and (min-width: 768px) and (max-width: 1023px){.vega-combo-box-hint{font-family:\"Inter\", sans-serif;font-size:14px;font-weight:400;line-height:18px;letter-spacing:0px}}@media screen and (min-width: 1024px) and (max-width: 1439px){.vega-combo-box-hint{font-family:\"Inter\", sans-serif;font-size:14px;font-weight:400;line-height:18px;letter-spacing:0px}}@media screen and (min-width: 1440px) and (max-width: 9999px){.vega-combo-box-hint{font-family:\"Inter\", sans-serif;font-size:14px;font-weight:400;line-height:18px;letter-spacing:0px}}.vega-error:not(.vega-hidden)+.vega-combo-box-hint{padding-top:4px}vega-dropdown{display:block}";
396
514
 
397
515
  var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
@@ -414,8 +532,10 @@ const VegaComboBox = class {
414
532
  this.vegaSearch = index.createEvent(this, "vegaSearch", 7);
415
533
  this.search = index.createEvent(this, "search", 7);
416
534
  this.globalSlimmers = {};
535
+ this.itemsSlotController = new VegaComboBoxItemsSlotController();
417
536
  this.keyboardController = new VegaComboBoxKeyboardController();
418
537
  this.valueController = new VegaComboBoxValueController();
538
+ this.sourceController = new VegaComboBoxSourceController();
419
539
  this.renderer = new VegaComboBoxRenderer();
420
540
  this.dropdownRenderer = new VegaComboBoxDropdownRenderer();
421
541
  this.formFieldController = new formFieldControllerSlimmer.FormFieldControllerSlimmer({
@@ -587,12 +707,18 @@ const VegaComboBox = class {
587
707
  __decorate([
588
708
  componentUsageRuntimeMetrics.InjectVegaGlobalSlimmer()
589
709
  ], VegaComboBox.prototype, "globalSlimmers", void 0);
710
+ __decorate([
711
+ globalSlimmerRegistry.InjectVegaSlimmer()
712
+ ], VegaComboBox.prototype, "itemsSlotController", void 0);
590
713
  __decorate([
591
714
  globalSlimmerRegistry.InjectVegaSlimmer()
592
715
  ], VegaComboBox.prototype, "keyboardController", void 0);
593
716
  __decorate([
594
717
  globalSlimmerRegistry.InjectVegaSlimmer()
595
718
  ], VegaComboBox.prototype, "valueController", void 0);
719
+ __decorate([
720
+ globalSlimmerRegistry.InjectVegaSlimmer()
721
+ ], VegaComboBox.prototype, "sourceController", void 0);
596
722
  __decorate([
597
723
  globalSlimmerRegistry.InjectVegaSlimmer()
598
724
  ], VegaComboBox.prototype, "renderer", void 0);
@@ -1383,10 +1383,12 @@ class VegaDropdownScrollableController extends globalSlimmerRegistry.VegaSlimmer
1383
1383
  scrollToTemplateIndex() {
1384
1384
  const scrolledKey = this.getSelectedKey();
1385
1385
  if (scrolledKey) {
1386
- this.renderer
1387
- .getDropdownContentBoxRef()
1388
- .querySelector(`vega-dropdown-item[item-key='${scrolledKey}']`)
1389
- .scrollIntoView();
1386
+ const dropdownContent = this.renderer.getDropdownContentBoxRef();
1387
+ const selectedItem = dropdownContent.querySelector(`vega-dropdown-item[item-key='${scrolledKey}']`);
1388
+ const ul = dropdownContent.shadowRoot.querySelector('ul');
1389
+ const ulRect = ul.getBoundingClientRect();
1390
+ const itemRect = selectedItem.getBoundingClientRect();
1391
+ ul.scrollTop = itemRect.top - ulRect.top;
1390
1392
  }
1391
1393
  }
1392
1394
  /**
@@ -11,9 +11,9 @@ exports.FrameworkEnum = void 0;
11
11
  /** The VegaEnvManager class manages vega environment parameters. */
12
12
  class VegaEnvManager {
13
13
  constructor() {
14
- // The `2.30.0` will be replaced to a version string when running publish script.
14
+ // The `2.31.0` will be replaced to a version string when running publish script.
15
15
  // eslint-disable-next-line @typescript-eslint/no-magic-numbers
16
- this.vegaVersion = '2.30.0';
16
+ this.vegaVersion = '2.31.0';
17
17
  this.framework = exports.FrameworkEnum.VanillaJs;
18
18
  }
19
19
  /**
@@ -0,0 +1,57 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { InjectVegaSlimmer, MapToComponentField, MapToComponentMethod, VegaSlimmer } from 'vega-slimmer/core';
8
+ import { MutationObserverSlimmer } from '../../../../helpers/slimmers/mutation-observer/mutation-observer-slimmer';
9
+ import { TagNameMutationFilter } from '../../../../helpers/slimmers/mutation-observer/mutation-observer-filters';
10
+ /**
11
+ * The class `VegaInputSelectItemsSlotController` extends `VegaSlimmer` and manages
12
+ * appending host items to a dropdown element.
13
+ */
14
+ export class VegaComboBoxItemsSlotController extends VegaSlimmer {
15
+ constructor() {
16
+ super(...arguments);
17
+ this.mutationObserver = new MutationObserverSlimmer({
18
+ mutationFilter: TagNameMutationFilter('VEGA-DROPDOWN-ITEM'),
19
+ options: {
20
+ childList: true,
21
+ subtree: true,
22
+ },
23
+ callback:
24
+ /*
25
+ * The below method is e2e-test covered in
26
+ * @see{module:vega-combo-box-template-slot-change-e2e}
27
+ */
28
+ /* istanbul ignore next */
29
+ // eslint-disable-next-line jsdoc/require-jsdoc
30
+ () => this.appendHostItemsToDropdown(),
31
+ });
32
+ }
33
+ /**
34
+ * Component lifecycle - [componentDidLoad]
35
+ */
36
+ componentDidLoad() {
37
+ this.appendHostItemsToDropdown();
38
+ }
39
+ /**
40
+ * The function appends host items to a dropdown element.
41
+ */
42
+ appendHostItemsToDropdown() {
43
+ this.dropdownRenderer.replaceItemsSlot(this.host.querySelector('[slot=items]'));
44
+ }
45
+ }
46
+ __decorate([
47
+ InjectVegaSlimmer()
48
+ ], VegaComboBoxItemsSlotController.prototype, "mutationObserver", void 0);
49
+ __decorate([
50
+ MapToComponentField()
51
+ ], VegaComboBoxItemsSlotController.prototype, "host", void 0);
52
+ __decorate([
53
+ MapToComponentField()
54
+ ], VegaComboBoxItemsSlotController.prototype, "dropdownRenderer", void 0);
55
+ __decorate([
56
+ MapToComponentMethod('componentDidLoad')
57
+ ], VegaComboBoxItemsSlotController.prototype, "componentDidLoad", null);
@@ -0,0 +1,23 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { MapToComponentField, VegaSlimmer } from 'vega-slimmer/core';
8
+ /**
9
+ * The source controller of `VegaComboBox` component.
10
+ */
11
+ export class VegaComboBoxSourceController extends VegaSlimmer {
12
+ /**
13
+ * The function `setSource` sets the source of a VegaComboBox component.
14
+ *
15
+ * @param {string[]} source - source
16
+ */
17
+ setSource(source) {
18
+ this.source = source;
19
+ }
20
+ }
21
+ __decorate([
22
+ MapToComponentField({ writable: true })
23
+ ], VegaComboBoxSourceController.prototype, "source", void 0);
@@ -5,10 +5,11 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
7
  import { Fragment, h } from '@stencil/core';
8
- import { MapToComponentField, VegaSlimmer } from 'vega-slimmer/core';
8
+ import { MapToComponentField, MapToComponentMethod, VegaSlimmer } from 'vega-slimmer/core';
9
9
  import { createEnterKeyHandlerToTriggerClick } from '../../../../utils/accessibility';
10
10
  import { DomNodeSubjectObserverFactory } from '../../../../helpers/change-manager/subject/dom-node-subject/dom-node-subject-observer-factory';
11
11
  import { VegaClose, VegaCreate, VegaDropdownClick, VegaDropdownHide, } from '../../../../helpers/event-manager/event-id/vega-event-id';
12
+ import { VegaInternalDropdownTemplateItemsChange } from '../../../../helpers/event-manager/event-id/vega-internal-event-id';
12
13
  export class VegaComboBoxDropdownRenderer extends VegaSlimmer {
13
14
  constructor() {
14
15
  super(...arguments);
@@ -31,15 +32,18 @@ export class VegaComboBoxDropdownRenderer extends VegaSlimmer {
31
32
  /* istanbul ignore next */
32
33
  this.onInputChange = async (e) => {
33
34
  const value = e.target.value;
34
- if (this.useDefaultFilter) {
35
+ if (this.useDefaultFilter || this.vegaDropdownProps.dynamicOption) {
35
36
  await this.dropdownRef.show();
36
37
  await this.dropdownRef.search(value);
37
38
  }
38
- else {
39
+ if (this.isTemplateMode || !this.useDefaultFilter) {
39
40
  this.searchEventEmit.emit(value);
40
41
  }
41
42
  };
42
43
  }
44
+ connectedCallback() {
45
+ this.isTemplateMode = this.host.querySelector('[slot=items]') !== null;
46
+ }
43
47
  getDropdownRef() {
44
48
  return this.dropdownRef;
45
49
  }
@@ -60,8 +64,14 @@ export class VegaComboBoxDropdownRenderer extends VegaSlimmer {
60
64
  async show() {
61
65
  await this.dropdownRef.show();
62
66
  }
67
+ replaceItemsSlot(itemsSlot) {
68
+ if (itemsSlot && this.itemsSlotRef) {
69
+ this.itemsSlotRef.remove();
70
+ this.dropdownRef.append(itemsSlot);
71
+ }
72
+ }
63
73
  renderDropdown() {
64
- return (h("vega-dropdown", Object.assign({ trigger: this.disabled ? 'none' : 'click', source: this.source, selectType: "multiple", selectedSourceKey: this.value, matchTargetWidth: true }, this.vegaDropdownProps, { ref: (ref) => {
74
+ return (h("vega-dropdown", Object.assign({ trigger: this.disabled ? 'none' : 'click', source: this.source, selectType: "multiple", selectedSourceKey: this.value, matchTargetWidth: true, useDefaultFilter: this.useDefaultFilter }, this.vegaDropdownProps, { ref: (ref) => {
65
75
  this.dropdownRef = ref;
66
76
  DomNodeSubjectObserverFactory.addUniqueObserverToNode(ref, VegaCreate, async (payload) => {
67
77
  await this.onDropdownCreate(payload.detail);
@@ -72,7 +82,24 @@ export class VegaComboBoxDropdownRenderer extends VegaSlimmer {
72
82
  DomNodeSubjectObserverFactory.addUniqueObserverToNode(ref, VegaDropdownClick, async () => {
73
83
  await this.onItemClick();
74
84
  });
75
- } }), this.renderContainer()));
85
+ DomNodeSubjectObserverFactory.addUniqueObserverToNode(ref, VegaInternalDropdownTemplateItemsChange,
86
+ /*
87
+ * The below method is e2e-test covered in
88
+ * @see{module:vega-combo-box-template-select-e2e}
89
+ */
90
+ /* istanbul ignore next */
91
+ (payload) => {
92
+ const addedItems = Array.from(payload)
93
+ .filter((item) => !this.source.find((sourceItem) => sourceItem.key === item.itemKey))
94
+ .map((item) => ({
95
+ key: item.itemKey,
96
+ label: item.label,
97
+ }));
98
+ this.sourceController.setSource([...this.source, ...addedItems]);
99
+ });
100
+ } }),
101
+ this.renderContainer(),
102
+ this.renderItemsSlot()));
76
103
  }
77
104
  renderContainer() {
78
105
  return (h("div", { class: {
@@ -82,6 +109,11 @@ export class VegaComboBoxDropdownRenderer extends VegaSlimmer {
82
109
  this.renderSelectedContainer(),
83
110
  this.renderInputContainer()));
84
111
  }
112
+ renderItemsSlot() {
113
+ return (this.isTemplateMode && (h("div", { slot: "items", ref: (ref) => {
114
+ this.itemsSlotRef = ref;
115
+ } })));
116
+ }
85
117
  renderSelectedContainer() {
86
118
  const selected = this.value
87
119
  .map((key) => this.source.find((item) => item.key === key))
@@ -112,6 +144,9 @@ export class VegaComboBoxDropdownRenderer extends VegaSlimmer {
112
144
  await this.dropdownRef.search('');
113
145
  }
114
146
  }
147
+ __decorate([
148
+ MapToComponentField()
149
+ ], VegaComboBoxDropdownRenderer.prototype, "host", void 0);
115
150
  __decorate([
116
151
  MapToComponentField()
117
152
  ], VegaComboBoxDropdownRenderer.prototype, "value", void 0);
@@ -145,3 +180,9 @@ __decorate([
145
180
  __decorate([
146
181
  MapToComponentField()
147
182
  ], VegaComboBoxDropdownRenderer.prototype, "valueController", void 0);
183
+ __decorate([
184
+ MapToComponentField()
185
+ ], VegaComboBoxDropdownRenderer.prototype, "sourceController", void 0);
186
+ __decorate([
187
+ MapToComponentMethod('connectedCallback')
188
+ ], VegaComboBoxDropdownRenderer.prototype, "connectedCallback", null);
@@ -21,14 +21,18 @@ import { VegaComboBoxDropdownRenderer } from './slimmers/renderers/vega-combo-bo
21
21
  import { VegaComboBoxValueController } from './slimmers/controllers/vega-combo-box-value-controller';
22
22
  import { VegaComboBoxRenderer } from './slimmers/renderers/vega-combo-box-renderer';
23
23
  import { VegaComboBoxKeyboardController } from './slimmers/controllers/vega-combo-box-keyboard-controller';
24
+ import { VegaComboBoxItemsSlotController } from './slimmers/controllers/vega-combo-box-items-slot-controller';
25
+ import { VegaComboBoxSourceController } from './slimmers/controllers/vega-combo-box-source-controller';
24
26
  /**
25
27
  * @vegaVersion 1.11.0
26
28
  */
27
29
  export class VegaComboBox {
28
30
  constructor() {
29
31
  this.globalSlimmers = {};
32
+ this.itemsSlotController = new VegaComboBoxItemsSlotController();
30
33
  this.keyboardController = new VegaComboBoxKeyboardController();
31
34
  this.valueController = new VegaComboBoxValueController();
35
+ this.sourceController = new VegaComboBoxSourceController();
32
36
  this.renderer = new VegaComboBoxRenderer();
33
37
  this.dropdownRenderer = new VegaComboBoxDropdownRenderer();
34
38
  this.formFieldController = new FormFieldControllerSlimmer({
@@ -659,12 +663,18 @@ export class VegaComboBox {
659
663
  __decorate([
660
664
  InjectVegaGlobalSlimmer()
661
665
  ], VegaComboBox.prototype, "globalSlimmers", void 0);
666
+ __decorate([
667
+ InjectVegaSlimmer()
668
+ ], VegaComboBox.prototype, "itemsSlotController", void 0);
662
669
  __decorate([
663
670
  InjectVegaSlimmer()
664
671
  ], VegaComboBox.prototype, "keyboardController", void 0);
665
672
  __decorate([
666
673
  InjectVegaSlimmer()
667
674
  ], VegaComboBox.prototype, "valueController", void 0);
675
+ __decorate([
676
+ InjectVegaSlimmer()
677
+ ], VegaComboBox.prototype, "sourceController", void 0);
668
678
  __decorate([
669
679
  InjectVegaSlimmer()
670
680
  ], VegaComboBox.prototype, "renderer", void 0);
@@ -50,10 +50,12 @@ export class VegaDropdownScrollableController extends VegaSlimmer {
50
50
  scrollToTemplateIndex() {
51
51
  const scrolledKey = this.getSelectedKey();
52
52
  if (scrolledKey) {
53
- this.renderer
54
- .getDropdownContentBoxRef()
55
- .querySelector(`vega-dropdown-item[item-key='${scrolledKey}']`)
56
- .scrollIntoView();
53
+ const dropdownContent = this.renderer.getDropdownContentBoxRef();
54
+ const selectedItem = dropdownContent.querySelector(`vega-dropdown-item[item-key='${scrolledKey}']`);
55
+ const ul = dropdownContent.shadowRoot.querySelector('ul');
56
+ const ulRect = ul.getBoundingClientRect();
57
+ const itemRect = selectedItem.getBoundingClientRect();
58
+ ul.scrollTop = itemRect.top - ulRect.top;
57
59
  }
58
60
  }
59
61
  /**