@descope/web-components-ui 1.0.369 → 1.0.370
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/cjs/index.cjs.js +61 -9
- package/dist/cjs/index.cjs.js.map +1 -1
- package/dist/index.esm.js +61 -9
- package/dist/index.esm.js.map +1 -1
- package/dist/umd/7856.js +2 -0
- package/dist/umd/7856.js.LICENSE.txt +1 -0
- package/dist/umd/DescopeDev.js +2 -1
- package/dist/umd/DescopeDev.js.LICENSE.txt +1 -0
- package/dist/umd/button-selection-group-fields-descope-button-multi-selection-group-index-js.js +1 -1
- package/dist/umd/button-selection-group-fields-descope-button-selection-group-index-js.js +1 -1
- package/dist/umd/button-selection-group-fields-descope-button-selection-group-item-index-js.js +1 -1
- package/dist/umd/descope-apps-list-index-js.js +1 -1
- package/dist/umd/descope-button-index-js.js +1 -1
- package/dist/umd/descope-icon-index-js.js +1 -1
- package/dist/umd/descope-list-index-js.js +1 -1
- package/dist/umd/descope-upload-file-index-js.js +1 -1
- package/dist/umd/descope-user-attribute-index-js.js +1 -1
- package/dist/umd/descope-user-auth-method-index-js.js +1 -1
- package/dist/umd/index.js +1 -1
- package/dist/umd/mapping-fields-descope-mappings-field-index-js.js +1 -1
- package/package.json +2 -1
- package/src/components/descope-apps-list/AppsListClass.js +5 -6
- package/src/components/descope-icon/helpers.js +6 -1
- package/src/components/descope-list/ListClass.js +15 -1
- package/src/mixins/createDynamicDataMixin.js +36 -1
package/dist/cjs/index.cjs.js
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
|
3
3
|
var merge = require('lodash.merge');
|
4
4
|
var Color = require('color');
|
5
|
+
var DOMPurify = require('dompurify');
|
5
6
|
var MarkdownIt = require('markdown-it');
|
6
7
|
require('lodash.debounce');
|
7
8
|
var hljs = require('highlight.js');
|
@@ -2633,8 +2634,11 @@ const createImgEle = (src) => {
|
|
2633
2634
|
};
|
2634
2635
|
|
2635
2636
|
const createSvgEle = (text) => {
|
2637
|
+
// we want to purify the SVG to avoid XSS attacks
|
2638
|
+
const clean = DOMPurify.sanitize(text, { USE_PROFILES: { svg: true, svgFilters: true } });
|
2639
|
+
|
2636
2640
|
const parser = new DOMParser();
|
2637
|
-
const ele = parser.parseFromString(
|
2641
|
+
const ele = parser.parseFromString(clean, 'image/svg+xml').querySelector('svg');
|
2638
2642
|
return ele;
|
2639
2643
|
};
|
2640
2644
|
|
@@ -13214,7 +13218,7 @@ const componentName$3 = getComponentName('list');
|
|
13214
13218
|
|
13215
13219
|
class RawList extends createBaseClass({ componentName: componentName$3, baseSelector: '.wrapper' }) {
|
13216
13220
|
static get observedAttributes() {
|
13217
|
-
return ['variant'];
|
13221
|
+
return ['variant', 'readonly'];
|
13218
13222
|
}
|
13219
13223
|
|
13220
13224
|
constructor() {
|
@@ -13297,6 +13301,18 @@ class RawList extends createBaseClass({ componentName: componentName$3, baseSele
|
|
13297
13301
|
observeChildren(this, () => {
|
13298
13302
|
this.#handleEmptyState();
|
13299
13303
|
this.#handleItemsVariant();
|
13304
|
+
this.#handleReadOnly();
|
13305
|
+
});
|
13306
|
+
}
|
13307
|
+
|
13308
|
+
get isReadOnly() {
|
13309
|
+
return this.getAttribute('readonly') === 'true';
|
13310
|
+
}
|
13311
|
+
|
13312
|
+
#handleReadOnly() {
|
13313
|
+
this.items.forEach((item) => {
|
13314
|
+
if (this.isReadOnly) item.setAttribute('inert', '');
|
13315
|
+
else item.removeAttribute('inert');
|
13300
13316
|
});
|
13301
13317
|
}
|
13302
13318
|
|
@@ -13307,6 +13323,8 @@ class RawList extends createBaseClass({ componentName: componentName$3, baseSele
|
|
13307
13323
|
|
13308
13324
|
if (name === 'variant') {
|
13309
13325
|
this.#handleItemsVariant();
|
13326
|
+
} else if (name === 'readonly') {
|
13327
|
+
this.#handleReadOnly();
|
13310
13328
|
}
|
13311
13329
|
}
|
13312
13330
|
}
|
@@ -13520,16 +13538,51 @@ const createDynamicDataMixin =
|
|
13520
13538
|
super.init?.();
|
13521
13539
|
|
13522
13540
|
if (rerenderAttrsList.length) {
|
13523
|
-
observeAttributes(
|
13541
|
+
observeAttributes(
|
13542
|
+
this,
|
13543
|
+
(attrs) => {
|
13544
|
+
if (attrs.includes('data')) this.#handleDataAttr();
|
13545
|
+
if (attrs.some((attr) => attr !== 'data')) this.#renderItems();
|
13546
|
+
},
|
13547
|
+
{ includeAttrs: [...rerenderAttrsList, 'data'] }
|
13548
|
+
);
|
13524
13549
|
} else {
|
13525
13550
|
this.#renderItems();
|
13526
13551
|
}
|
13527
13552
|
}
|
13553
|
+
|
13554
|
+
#handleDataAttr() {
|
13555
|
+
const dataAttr = this.getAttribute('data');
|
13556
|
+
|
13557
|
+
if (!dataAttr) return;
|
13558
|
+
|
13559
|
+
try {
|
13560
|
+
this.#data = JSON.parse(dataAttr);
|
13561
|
+
} catch (e) {
|
13562
|
+
// eslint-disable-next-line no-console
|
13563
|
+
console.warn('Invalid JSON data', dataAttr);
|
13564
|
+
}
|
13565
|
+
}
|
13566
|
+
|
13567
|
+
attributeChangedCallback(name, oldValue, newValue) {
|
13568
|
+
super.attributeChangedCallback?.(name, oldValue, newValue);
|
13569
|
+
|
13570
|
+
if (newValue === oldValue) return;
|
13571
|
+
|
13572
|
+
if (name === 'data') {
|
13573
|
+
try {
|
13574
|
+
this.data = JSON.parse(newValue);
|
13575
|
+
} catch (e) {
|
13576
|
+
// eslint-disable-next-line no-console
|
13577
|
+
console.warn('Invalid JSON data', newValue);
|
13578
|
+
}
|
13579
|
+
}
|
13580
|
+
}
|
13528
13581
|
};
|
13529
13582
|
|
13530
13583
|
const componentName$2 = getComponentName('apps-list');
|
13531
13584
|
|
13532
|
-
const limitAbbreviation = (str, limit =
|
13585
|
+
const limitAbbreviation = (str, limit = 2) =>
|
13533
13586
|
str
|
13534
13587
|
.trim()
|
13535
13588
|
.split(' ')
|
@@ -13538,12 +13591,11 @@ const limitAbbreviation = (str, limit = 3) =>
|
|
13538
13591
|
.join('');
|
13539
13592
|
|
13540
13593
|
const itemRenderer = ({ name, icon, url }, _, ref) => `
|
13541
|
-
<a href="${url}"
|
13594
|
+
<a ${url ? `href="${url}" title="${url}"` : ''} target="_blank">
|
13542
13595
|
<descope-list-item>
|
13543
13596
|
<descope-avatar
|
13544
|
-
img="${icon}"
|
13545
|
-
display-name="${name}"
|
13546
|
-
abbr=${limitAbbreviation(name)}
|
13597
|
+
${icon ? `img="${icon}"` : ''}
|
13598
|
+
${name ? `display-name="${name}" abbr=${limitAbbreviation(name)}` : ''}
|
13547
13599
|
size=${ref.size}
|
13548
13600
|
></descope-avatar>
|
13549
13601
|
<descope-text
|
@@ -13589,7 +13641,7 @@ const AppsListClass = compose(
|
|
13589
13641
|
createProxy({
|
13590
13642
|
slots: ['empty-state'],
|
13591
13643
|
wrappedEleName: 'descope-list',
|
13592
|
-
excludeAttrsSync: ['tabindex', 'class'],
|
13644
|
+
excludeAttrsSync: ['tabindex', 'class', 'empty'],
|
13593
13645
|
componentName: componentName$2,
|
13594
13646
|
style: () => `
|
13595
13647
|
:host {
|