@descope/web-components-ui 1.0.260 → 1.0.262
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/cjs/index.cjs.js +14 -3
- package/dist/cjs/index.cjs.js.map +1 -1
- package/dist/index.esm.js +14 -3
- package/dist/index.esm.js.map +1 -1
- package/dist/umd/1000.js +1 -1
- package/dist/umd/descope-grid-index-js.js +1 -1
- package/dist/umd/descope-multi-select-combo-box-index-js.js +1 -1
- package/package.json +1 -1
- package/src/components/descope-grid/GridClass.js +1 -0
- package/src/components/descope-multi-select-combo-box/MultiSelectComboBoxClass.js +11 -2
- package/src/mixins/createProxy.js +2 -1
package/dist/cjs/index.cjs.js
CHANGED
@@ -1020,6 +1020,7 @@ const createProxy = ({
|
|
1020
1020
|
excludeAttrsSync = [],
|
1021
1021
|
includeAttrsSync = [],
|
1022
1022
|
includeForwardProps = [],
|
1023
|
+
delegatesFocus = true,
|
1023
1024
|
}) => {
|
1024
1025
|
class ProxyClass extends createBaseClass({ componentName, baseSelector: wrappedEleName }) {
|
1025
1026
|
#dispatchBlur = createDispatchEvent.bind(this, 'blur');
|
@@ -1027,7 +1028,7 @@ const createProxy = ({
|
|
1027
1028
|
#dispatchFocus = createDispatchEvent.bind(this, 'focus');
|
1028
1029
|
|
1029
1030
|
constructor() {
|
1030
|
-
super().attachShadow({ mode: 'open', delegatesFocus
|
1031
|
+
super().attachShadow({ mode: 'open', delegatesFocus }).innerHTML = `
|
1031
1032
|
<style id="create-proxy">${isFunction(style) ? style() : style}</style>
|
1032
1033
|
<${wrappedEleName}>
|
1033
1034
|
${slots
|
@@ -8769,6 +8770,7 @@ const GridClass = compose(
|
|
8769
8770
|
GridMixin
|
8770
8771
|
)(
|
8771
8772
|
createProxy({
|
8773
|
+
delegatesFocus: false,
|
8772
8774
|
slots: [''],
|
8773
8775
|
wrappedEleName: 'vaadin-grid',
|
8774
8776
|
style: () => `
|
@@ -9141,17 +9143,26 @@ const multiSelectComboBoxMixin = (superclass) =>
|
|
9141
9143
|
});
|
9142
9144
|
}
|
9143
9145
|
|
9146
|
+
// To prevent duplicate items for the multi select options, we dedup them based on the "data-id" attribute
|
9147
|
+
// eslint-disable-next-line class-methods-use-this
|
9148
|
+
#dedupItems(items) {
|
9149
|
+
return Array.from(
|
9150
|
+
new Map(items.map((item) => [item.getAttribute('data-id'), item])).values()
|
9151
|
+
);
|
9152
|
+
}
|
9153
|
+
|
9144
9154
|
// vaadin api is to set props on their combo box node,
|
9145
9155
|
// in order to avoid it, we are passing the children of this component
|
9146
9156
|
// to the items & renderer props, so it will be used as the combo box items
|
9147
9157
|
#onChildrenChange() {
|
9148
9158
|
const items = Array.from(this.children);
|
9159
|
+
const dedupItems = this.#dedupItems(items);
|
9149
9160
|
|
9150
9161
|
// we want the data-name attribute to be accessible as an object attribute
|
9151
9162
|
if (items.length) {
|
9152
9163
|
this.removeAttribute('has-no-options');
|
9153
9164
|
|
9154
|
-
|
9165
|
+
dedupItems.forEach((node) => {
|
9155
9166
|
Object.defineProperty(node, 'data-name', {
|
9156
9167
|
value: node.getAttribute('data-name'),
|
9157
9168
|
configurable: true,
|
@@ -9164,7 +9175,7 @@ const multiSelectComboBoxMixin = (superclass) =>
|
|
9164
9175
|
});
|
9165
9176
|
});
|
9166
9177
|
|
9167
|
-
this.baseElement.items =
|
9178
|
+
this.baseElement.items = dedupItems;
|
9168
9179
|
|
9169
9180
|
setTimeout(() => {
|
9170
9181
|
// set timeout to ensure this runs after customValueTransformFn had the chance to be overriden
|