@descope/web-components-ui 1.0.187 → 1.0.189
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/cjs/index.cjs.js +62 -0
- package/dist/cjs/index.cjs.js.map +1 -1
- package/dist/index.esm.js +62 -0
- package/dist/index.esm.js.map +1 -1
- package/dist/umd/descope-button-selection-group-index-js.js +1 -1
- package/package.json +1 -1
- package/src/components/descope-button-selection-group/ButtonSelectionGroupClass.js +63 -1
package/dist/cjs/index.cjs.js
CHANGED
@@ -7478,6 +7478,64 @@ const componentName$1 = getComponentName('button-selection-group');
|
|
7478
7478
|
|
7479
7479
|
const customMixin = (superclass) =>
|
7480
7480
|
class ButtonSelectionGroupMixinClass extends superclass {
|
7481
|
+
// eslint-disable-next-line class-methods-use-this
|
7482
|
+
#renderItem = ({ value, label }) =>
|
7483
|
+
`<descope-button-selection-group-item value="${value}">${label}</descope-button-selection-group-item>`;
|
7484
|
+
|
7485
|
+
#data;
|
7486
|
+
|
7487
|
+
get renderItem() {
|
7488
|
+
return this.#renderItem;
|
7489
|
+
}
|
7490
|
+
|
7491
|
+
set renderItem(renderFn) {
|
7492
|
+
this.#renderItem = renderFn;
|
7493
|
+
this.renderItems();
|
7494
|
+
}
|
7495
|
+
|
7496
|
+
get data() {
|
7497
|
+
if (this.#data) return this.#data;
|
7498
|
+
|
7499
|
+
try {
|
7500
|
+
const data = JSON.parse(this.getAttribute('data'));
|
7501
|
+
if (this.isValidDataType(data)) {
|
7502
|
+
return data;
|
7503
|
+
}
|
7504
|
+
} catch (e) {
|
7505
|
+
// eslint-disable-next-line no-console
|
7506
|
+
console.error('could not parse data string from attribute "data" - ', e.message);
|
7507
|
+
}
|
7508
|
+
|
7509
|
+
return [];
|
7510
|
+
}
|
7511
|
+
|
7512
|
+
set data(data) {
|
7513
|
+
if (this.isValidDataType(data)) {
|
7514
|
+
this.#data = data;
|
7515
|
+
this.renderItems();
|
7516
|
+
}
|
7517
|
+
}
|
7518
|
+
|
7519
|
+
// eslint-disable-next-line class-methods-use-this
|
7520
|
+
isValidDataType(data) {
|
7521
|
+
const isValid = Array.isArray(data);
|
7522
|
+
if (!isValid) {
|
7523
|
+
// eslint-disable-next-line no-console
|
7524
|
+
console.error('data must be an array, received:', data);
|
7525
|
+
}
|
7526
|
+
|
7527
|
+
return isValid;
|
7528
|
+
}
|
7529
|
+
|
7530
|
+
getItemsTemplate() {
|
7531
|
+
return this.data?.reduce?.((acc, item) => acc + (this.renderItem?.(item || {}) || ''), '');
|
7532
|
+
}
|
7533
|
+
|
7534
|
+
renderItems() {
|
7535
|
+
const template = this.getItemsTemplate();
|
7536
|
+
if (template) this.innerHTML = this.getItemsTemplate();
|
7537
|
+
}
|
7538
|
+
|
7481
7539
|
init() {
|
7482
7540
|
super.init?.();
|
7483
7541
|
const template = document.createElement('template');
|
@@ -7497,6 +7555,10 @@ const customMixin = (superclass) =>
|
|
7497
7555
|
this.inputElement = this.shadowRoot.querySelector(componentName$2);
|
7498
7556
|
|
7499
7557
|
forwardAttrs(this, this.inputElement, { includeAttrs: ['size', 'default-value'] });
|
7558
|
+
|
7559
|
+
this.renderItems();
|
7560
|
+
|
7561
|
+
observeAttributes(this, this.renderItems.bind(this), { includeAttrs: ['data'] });
|
7500
7562
|
}
|
7501
7563
|
};
|
7502
7564
|
|