@descope/web-components-ui 1.0.260 → 1.0.262

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.esm.js CHANGED
@@ -701,6 +701,7 @@ const createProxy = ({
701
701
  excludeAttrsSync = [],
702
702
  includeAttrsSync = [],
703
703
  includeForwardProps = [],
704
+ delegatesFocus = true,
704
705
  }) => {
705
706
  class ProxyClass extends createBaseClass({ componentName, baseSelector: wrappedEleName }) {
706
707
  #dispatchBlur = createDispatchEvent.bind(this, 'blur');
@@ -708,7 +709,7 @@ const createProxy = ({
708
709
  #dispatchFocus = createDispatchEvent.bind(this, 'focus');
709
710
 
710
711
  constructor() {
711
- super().attachShadow({ mode: 'open', delegatesFocus: true }).innerHTML = `
712
+ super().attachShadow({ mode: 'open', delegatesFocus }).innerHTML = `
712
713
  <style id="create-proxy">${isFunction(style) ? style() : style}</style>
713
714
  <${wrappedEleName}>
714
715
  ${slots
@@ -7458,6 +7459,7 @@ const GridClass = compose(
7458
7459
  GridMixin
7459
7460
  )(
7460
7461
  createProxy({
7462
+ delegatesFocus: false,
7461
7463
  slots: [''],
7462
7464
  wrappedEleName: 'vaadin-grid',
7463
7465
  style: () => `
@@ -7627,17 +7629,26 @@ const multiSelectComboBoxMixin = (superclass) =>
7627
7629
  });
7628
7630
  }
7629
7631
 
7632
+ // To prevent duplicate items for the multi select options, we dedup them based on the "data-id" attribute
7633
+ // eslint-disable-next-line class-methods-use-this
7634
+ #dedupItems(items) {
7635
+ return Array.from(
7636
+ new Map(items.map((item) => [item.getAttribute('data-id'), item])).values()
7637
+ );
7638
+ }
7639
+
7630
7640
  // vaadin api is to set props on their combo box node,
7631
7641
  // in order to avoid it, we are passing the children of this component
7632
7642
  // to the items & renderer props, so it will be used as the combo box items
7633
7643
  #onChildrenChange() {
7634
7644
  const items = Array.from(this.children);
7645
+ const dedupItems = this.#dedupItems(items);
7635
7646
 
7636
7647
  // we want the data-name attribute to be accessible as an object attribute
7637
7648
  if (items.length) {
7638
7649
  this.removeAttribute('has-no-options');
7639
7650
 
7640
- items.forEach((node) => {
7651
+ dedupItems.forEach((node) => {
7641
7652
  Object.defineProperty(node, 'data-name', {
7642
7653
  value: node.getAttribute('data-name'),
7643
7654
  configurable: true,
@@ -7650,7 +7661,7 @@ const multiSelectComboBoxMixin = (superclass) =>
7650
7661
  });
7651
7662
  });
7652
7663
 
7653
- this.baseElement.items = items;
7664
+ this.baseElement.items = dedupItems;
7654
7665
 
7655
7666
  setTimeout(() => {
7656
7667
  // set timeout to ensure this runs after customValueTransformFn had the chance to be overriden