@descope/web-components-ui 2.1.16 → 2.1.18

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.
@@ -351,6 +351,10 @@ const injectStyle = (cssString, ref, { prepend = false } = {}) => {
351
351
  _ref.adoptedStyleSheets = adoptedStyleSheets;
352
352
  }
353
353
 
354
+ if(cssString && !style.cssRules[0]?.style){
355
+ console.warn(`No style rules were created, make sure the CSS is valid:\n "${cssString}"`);
356
+ }
357
+
354
358
  return style;
355
359
  };
356
360
 
@@ -1442,16 +1446,25 @@ const globals = {
1442
1446
  };
1443
1447
  getThemeVars$1(globals);
1444
1448
 
1445
- const createCssVar$1 = (varName, fallback) => `var(${varName}${fallback ? `, ${fallback}` : ''})`;
1449
+ const getOverrideCssVarName$1 = (origVarName) => `${origVarName}__override`;
1450
+
1451
+ const createCssVar$1 = (varName, fallback, createOverride = false) => {
1452
+ const ret = `var(${varName}${fallback ? `, ${fallback}` : ''})`;
1453
+
1454
+ if (!createOverride) return ret;
1455
+
1456
+ // we are generating an override css var to allow override with fallback to the default var
1457
+ const overrideVarName = getOverrideCssVarName$1(varName);
1458
+ return `var(${overrideVarName}, ${ret})`;
1459
+ };
1446
1460
 
1447
1461
  const createCssSelector$1 = (baseSelector = '', relativeSelectorOrSelectorFn = '') =>
1448
1462
  isFunction(relativeSelectorOrSelectorFn)
1449
1463
  ? relativeSelectorOrSelectorFn(baseSelector)
1450
- : `${baseSelector}${
1451
- /^[A-Za-z]/.test(relativeSelectorOrSelectorFn)
1452
- ? ` ${relativeSelectorOrSelectorFn}`
1453
- : relativeSelectorOrSelectorFn
1454
- }`;
1464
+ : `${baseSelector}${/^[A-Za-z]/.test(relativeSelectorOrSelectorFn)
1465
+ ? ` ${relativeSelectorOrSelectorFn}`
1466
+ : relativeSelectorOrSelectorFn
1467
+ }`;
1455
1468
 
1456
1469
  let StyleBuilder$1 = class StyleBuilder {
1457
1470
  constructor() {
@@ -1491,6 +1504,7 @@ const getFallbackVarName$1 = (origVarName, suffix = 'fallback') => kebabCaseJoin
1491
1504
 
1492
1505
  const createStyle$1 = (componentName, baseSelector, mappings) => {
1493
1506
  const style = new StyleBuilder$1();
1507
+ // we generate all the fallback vars recursively
1494
1508
  const createFallbackVar = (fallback, origVarName) => {
1495
1509
  if (!fallback) return '';
1496
1510
  if (typeof fallback === 'string') return fallback;
@@ -1510,7 +1524,7 @@ const createStyle$1 = (componentName, baseSelector, mappings) => {
1510
1524
  style.add(
1511
1525
  createCssSelector$1(baseSelector, relativeSelectorOrSelectorFn),
1512
1526
  isFunction(property) ? property() : property,
1513
- createCssVar$1(cssVarName, fallbackValue) + (important ? '!important' : '')
1527
+ createCssVar$1(cssVarName, fallbackValue, true) + (important ? '!important' : '')
1514
1528
  );
1515
1529
  }
1516
1530
  );
@@ -1537,6 +1551,8 @@ const createCssVarsList$1 = (componentName, mappings) =>
1537
1551
  return Object.assign(
1538
1552
  acc,
1539
1553
  { [attr]: varName },
1554
+ // we are exposing the override css var names, the convention is to add 'Override' suffix to the attribute name
1555
+ { [attr + 'Override']: getOverrideCssVarName$1(varName) },
1540
1556
  getFallbackVarsNames$1(attr, varName, mappings[attr])
1541
1557
  );
1542
1558
  }, {});
@@ -1638,7 +1654,7 @@ const createStyleMixin$1 =
1638
1654
  if (elementId) {
1639
1655
  // basically this is enough to make the selector more specific
1640
1656
  // but just in case there is no id, we will also add the class multiple times
1641
- classSpecifier += `#${elementId}`;
1657
+ classSpecifier += `#${CSS.escape(elementId)}`;
1642
1658
  }
1643
1659
 
1644
1660
  this.#overrideStyleEle = injectStyle(`:host(${classSpecifier}) {}`, this.#rootElement);
@@ -1647,7 +1663,7 @@ const createStyleMixin$1 =
1647
1663
 
1648
1664
 
1649
1665
  #setAttrOverride(attrName, value) {
1650
- const style = this.#overrideStyleEle?.cssRules[0]?.style;
1666
+ const style = this.#overrideStyleEle.cssRules[0].style;
1651
1667
 
1652
1668
  if (!style) return;
1653
1669
 
@@ -3447,7 +3463,17 @@ var button$1 = /*#__PURE__*/Object.freeze({
3447
3463
  vars: vars$12
3448
3464
  });
3449
3465
 
3450
- const createCssVar = (varName, fallback) => `var(${varName}${fallback ? `, ${fallback}` : ''})`;
3466
+ const getOverrideCssVarName = (origVarName) => `${origVarName}__override`;
3467
+
3468
+ const createCssVar = (varName, fallback, createOverride = false) => {
3469
+ const ret = `var(${varName}${fallback ? `, ${fallback}` : ''})`;
3470
+
3471
+ if (!createOverride) return ret;
3472
+
3473
+ // we are generating an override css var to allow override with fallback to the default var
3474
+ const overrideVarName = getOverrideCssVarName(varName);
3475
+ return `var(${overrideVarName}, ${ret})`;
3476
+ };
3451
3477
 
3452
3478
  const createCssSelector = (baseSelector = '', relativeSelectorOrSelectorFn = '') =>
3453
3479
  isFunction$1(relativeSelectorOrSelectorFn)
@@ -3496,6 +3522,7 @@ const getFallbackVarName = (origVarName, suffix = 'fallback') => kebabCaseJoin$1
3496
3522
 
3497
3523
  const createStyle = (componentName, baseSelector, mappings) => {
3498
3524
  const style = new StyleBuilder();
3525
+ // we generate all the fallback vars recursively
3499
3526
  const createFallbackVar = (fallback, origVarName) => {
3500
3527
  if (!fallback) return '';
3501
3528
  if (typeof fallback === 'string') return fallback;
@@ -3515,7 +3542,7 @@ const createStyle = (componentName, baseSelector, mappings) => {
3515
3542
  style.add(
3516
3543
  createCssSelector(baseSelector, relativeSelectorOrSelectorFn),
3517
3544
  isFunction$1(property) ? property() : property,
3518
- createCssVar(cssVarName, fallbackValue) + (important ? '!important' : '')
3545
+ createCssVar(cssVarName, fallbackValue, true) + (important ? '!important' : '')
3519
3546
  );
3520
3547
  }
3521
3548
  );
@@ -3542,6 +3569,8 @@ const createCssVarsList = (componentName, mappings) =>
3542
3569
  return Object.assign(
3543
3570
  acc,
3544
3571
  { [attr]: varName },
3572
+ // we are exposing the override css var names, the convention is to add 'Override' suffix to the attribute name
3573
+ { [attr + 'Override']: getOverrideCssVarName(varName) },
3545
3574
  getFallbackVarsNames(attr, varName, mappings[attr])
3546
3575
  );
3547
3576
  }, {});
@@ -3633,7 +3662,7 @@ const createStyleMixin =
3633
3662
  if (elementId) {
3634
3663
  // basically this is enough to make the selector more specific
3635
3664
  // but just in case there is no id, we will also add the class multiple times
3636
- classSpecifier += `#${elementId}`;
3665
+ classSpecifier += `#${CSS.escape(elementId)}`;
3637
3666
  }
3638
3667
 
3639
3668
  this.#overrideStyleEle = injectStyle(`:host(${classSpecifier}) {}`, this.#rootElement);
@@ -3641,7 +3670,7 @@ const createStyleMixin =
3641
3670
  }
3642
3671
 
3643
3672
  #setAttrOverride(attrName, value) {
3644
- const style = this.#overrideStyleEle?.cssRules[0]?.style;
3673
+ const style = this.#overrideStyleEle.cssRules[0].style;
3645
3674
 
3646
3675
  if (!style) return;
3647
3676
 
@@ -18112,125 +18141,9 @@ var dateField$1 = /*#__PURE__*/Object.freeze({
18112
18141
  vars: vars$l
18113
18142
  });
18114
18143
 
18115
- const componentName$n = getComponentName('apps-list');
18116
-
18117
- const itemRenderer$4 = ({ name, icon, url }, _, ref) => `
18118
- <a ${url ? `href="${url}" title="${url}"` : ''} target="_blank">
18119
- <descope-list-item>
18120
- <descope-avatar
18121
- ${icon ? `img="${icon}"` : ''}
18122
- ${name ? `display-name="${name}" abbr=${limitAbbreviation(name)}` : ''}
18123
- size=${ref.size}
18124
- ></descope-avatar>
18125
- <descope-text
18126
- variant="body1"
18127
- mode="primary"
18128
- >${name}</descope-text>
18129
- </descope-list-item>
18130
- </a>
18131
- `;
18144
+ const componentName$n = getComponentName('list-item');
18132
18145
 
18133
18146
  const customMixin$3 = (superclass) =>
18134
- class AppsListMixinClass extends superclass {
18135
- get size() {
18136
- return this.getAttribute('size') || 'sm';
18137
- }
18138
- };
18139
-
18140
- const AppsListClass = compose(
18141
- createStyleMixin$1({
18142
- mappings: {
18143
- maxHeight: { selector: () => ':host' },
18144
- minHeight: { selector: () => ':host' },
18145
- hostDirection: { selector: () => ':host', property: 'direction' },
18146
- itemsFontWeight: {
18147
- selector: TextClass.componentName,
18148
- property: TextClass.cssVarList.fontWeight,
18149
- },
18150
- itemsFontSize: {
18151
- selector: TextClass.componentName,
18152
- property: TextClass.cssVarList.fontSize,
18153
- },
18154
- itemsTextAlign: {
18155
- selector: TextClass.componentName,
18156
- property: TextClass.cssVarList.textAlign,
18157
- },
18158
- },
18159
- }),
18160
- createDynamicDataMixin$1({ itemRenderer: itemRenderer$4, rerenderAttrsList: ['size'] }),
18161
- draggableMixin$1,
18162
- componentNameValidationMixin$1,
18163
- customMixin$3
18164
- )(
18165
- createProxy$1({
18166
- slots: ['empty-state'],
18167
- wrappedEleName: 'descope-list',
18168
- excludeAttrsSync: ['tabindex', 'class', 'empty', 'style'],
18169
- componentName: componentName$n,
18170
- style: () => `
18171
- :host {
18172
- width: 100%;
18173
- display: inline-flex;
18174
- }
18175
-
18176
- descope-text::part(text-wrapper) {
18177
- display: -webkit-box;
18178
- -webkit-line-clamp: 2;
18179
- -webkit-box-orient: vertical;
18180
- overflow: hidden;
18181
- }
18182
-
18183
- a {
18184
- text-decoration: none;
18185
- }
18186
-
18187
- descope-text {
18188
- ${TextClass.cssVarList.hostDirection}: var(${AppsListClass.cssVarList.hostDirection});
18189
- }
18190
- `,
18191
- })
18192
- );
18193
-
18194
- const vars$k = AppsListClass.cssVarList;
18195
- const globalRefs$a = getThemeRefs$1(globals);
18196
-
18197
- const defaultHeight = '400px';
18198
-
18199
- const appsList = {
18200
- [vars$k.itemsFontWeight]: 'normal',
18201
- [vars$k.itemsTextAlign]: 'start',
18202
- [vars$k.hostDirection]: globalRefs$a.direction,
18203
- [vars$k.maxHeight]: defaultHeight,
18204
-
18205
- _empty: {
18206
- [vars$k.minHeight]: defaultHeight,
18207
- },
18208
-
18209
- size: {
18210
- xs: {
18211
- [vars$k.itemsFontSize]: '14px',
18212
- },
18213
- sm: {
18214
- [vars$k.itemsFontSize]: '14px',
18215
- },
18216
- md: {
18217
- [vars$k.itemsFontSize]: '16px',
18218
- },
18219
- lg: {
18220
- [vars$k.itemsFontSize]: '20px',
18221
- },
18222
- },
18223
- };
18224
-
18225
- var appsList$1 = /*#__PURE__*/Object.freeze({
18226
- __proto__: null,
18227
- default: appsList,
18228
- vars: vars$k
18229
- });
18230
-
18231
- const componentName$m = getComponentName('list-item');
18232
-
18233
- const customMixin$2 = (superclass) =>
18234
18147
  class ListItemMixinClass extends superclass {
18235
18148
  constructor() {
18236
18149
  super();
@@ -18283,14 +18196,14 @@ const ListItemClass = compose(
18283
18196
  }),
18284
18197
  draggableMixin$1,
18285
18198
  componentNameValidationMixin$1,
18286
- customMixin$2,
18199
+ customMixin$3,
18287
18200
  activeableMixin,
18288
- )(createBaseClass$1({ componentName: componentName$m, baseSelector: 'slot' }));
18201
+ )(createBaseClass$1({ componentName: componentName$n, baseSelector: 'slot' }));
18289
18202
 
18290
- const componentName$l = getComponentName('list');
18203
+ const componentName$m = getComponentName('list');
18291
18204
 
18292
18205
  class RawList extends createBaseClass$1({
18293
- componentName: componentName$l,
18206
+ componentName: componentName$m,
18294
18207
  baseSelector: '.wrapper',
18295
18208
  }) {
18296
18209
  static get observedAttributes() {
@@ -18458,13 +18371,194 @@ const ListClass = compose(
18458
18371
  componentNameValidationMixin$1,
18459
18372
  )(RawList);
18460
18373
 
18374
+ const componentName$l = getComponentName('apps-list');
18375
+
18376
+ const itemRenderer$4 = ({ name, icon, url }, _, ref) => `
18377
+ <a ${url ? `href="${url}" title="${url}"` : ''} target="_blank">
18378
+ <descope-list-item>
18379
+ <descope-avatar
18380
+ ${icon ? `img="${icon}"` : ''}
18381
+ ${name ? `display-name="${name}" abbr=${limitAbbreviation(name)}` : ''}
18382
+ size="${ref.logoSize || ref.size}"
18383
+ ></descope-avatar>
18384
+ <descope-text
18385
+ variant="${ref.itemTextVariant}"
18386
+ mode="primary"
18387
+ >${name}</descope-text>
18388
+ </descope-list-item>
18389
+ </a>
18390
+ `;
18391
+
18392
+ const customMixin$2 = (superclass) =>
18393
+ class AppsListMixinClass extends superclass {
18394
+ // size controls both item logo size and font size
18395
+ get size() {
18396
+ return this.getAttribute('size') || 'sm';
18397
+ }
18398
+
18399
+ get itemTextVariant() {
18400
+ return this.getAttribute('item-text-variant') || 'body1';
18401
+ }
18402
+
18403
+ get logoSize() {
18404
+ return this.getAttribute('logo-size');
18405
+ }
18406
+ };
18407
+
18408
+ const AppsListClass = compose(
18409
+ createStyleMixin$1({
18410
+ mappings: {
18411
+ maxHeight: { selector: () => ':host' },
18412
+ minHeight: { selector: () => ':host' },
18413
+ hostDirection: { selector: () => ':host', property: 'direction' },
18414
+ itemsFontWeight: {
18415
+ selector: TextClass.componentName,
18416
+ property: TextClass.cssVarList.fontWeightOverride,
18417
+ },
18418
+ itemsFontSize: {
18419
+ selector: TextClass.componentName,
18420
+ property: TextClass.cssVarList.fontSizeOverride,
18421
+ },
18422
+ itemsTextAlign: {
18423
+ selector: TextClass.componentName,
18424
+ property: TextClass.cssVarList.textAlign,
18425
+ },
18426
+ itemBackgroundColor: {
18427
+ selector: ListItemClass.componentName,
18428
+ property: ListItemClass.cssVarList.backgroundColor,
18429
+ },
18430
+ backgroundColor: {
18431
+ selector: ListClass.componentName,
18432
+ property: ListClass.cssVarList.backgroundColorOverride,
18433
+ },
18434
+ itemBorderStyle: {
18435
+ selector: ListItemClass.componentName,
18436
+ property: ListItemClass.cssVarList.borderStyleOverride,
18437
+ },
18438
+ itemBorderColor: {
18439
+ selector: ListItemClass.componentName,
18440
+ property: ListItemClass.cssVarList.borderColorOverride,
18441
+ },
18442
+ itemBorderWidth: {
18443
+ selector: ListItemClass.componentName,
18444
+ property: ListItemClass.cssVarList.borderWidthOverride,
18445
+ },
18446
+ itemVerticalPadding: {
18447
+ selector: ListItemClass.componentName,
18448
+ property: ListItemClass.cssVarList.verticalPaddingOverride,
18449
+ },
18450
+ itemHorizontalPadding: {
18451
+ selector: ListItemClass.componentName,
18452
+ property: ListItemClass.cssVarList.horizontalPaddingOverride,
18453
+ },
18454
+ itemAlignment: [
18455
+ { selector: ListItemClass.componentName, property: ListItemClass.cssVarList.alignItemsOverride },
18456
+ { selector: TextClass.componentName, property: TextClass.cssVarList.textAlign },
18457
+ ]
18458
+ },
18459
+ }),
18460
+ createDynamicDataMixin$1({ itemRenderer: itemRenderer$4, rerenderAttrsList: ['size', 'item-text-variant', 'logo-size'] }),
18461
+ draggableMixin$1,
18462
+ componentNameValidationMixin$1,
18463
+ customMixin$2
18464
+ )(
18465
+ createProxy$1({
18466
+ slots: ['empty-state'],
18467
+ wrappedEleName: 'descope-list',
18468
+ excludeAttrsSync: ['tabindex', 'class', 'empty', 'style'],
18469
+ componentName: componentName$l,
18470
+ style: () => `
18471
+ :host {
18472
+ width: 100%;
18473
+ display: inline-flex;
18474
+ }
18475
+
18476
+ descope-text::part(text-wrapper) {
18477
+ display: -webkit-box;
18478
+ -webkit-line-clamp: 2;
18479
+ -webkit-box-orient: vertical;
18480
+ overflow: hidden;
18481
+ }
18482
+
18483
+ a {
18484
+ text-decoration: none;
18485
+ }
18486
+
18487
+ descope-text {
18488
+ ${TextClass.cssVarList.hostDirection}: var(${AppsListClass.cssVarList.hostDirection});
18489
+ max-width: 100%;
18490
+ }
18491
+ `,
18492
+ })
18493
+ );
18494
+
18495
+ const vars$k = AppsListClass.cssVarList;
18496
+ const globalRefs$a = getThemeRefs$1(globals);
18497
+
18498
+ const defaultHeight = '400px';
18499
+
18500
+ const appsList = {
18501
+ [vars$k.itemsFontWeight]: 'normal',
18502
+ [vars$k.itemsTextAlign]: 'start',
18503
+ [vars$k.hostDirection]: globalRefs$a.direction,
18504
+ [vars$k.maxHeight]: defaultHeight,
18505
+
18506
+ _empty: {
18507
+ [vars$k.minHeight]: defaultHeight,
18508
+ },
18509
+
18510
+ size: {
18511
+ xs: {
18512
+ [vars$k.itemsFontSize]: '14px',
18513
+ },
18514
+ sm: {
18515
+ [vars$k.itemsFontSize]: '14px',
18516
+ },
18517
+ md: {
18518
+ [vars$k.itemsFontSize]: '16px',
18519
+ },
18520
+ lg: {
18521
+ [vars$k.itemsFontSize]: '20px',
18522
+ },
18523
+ },
18524
+
18525
+ itemPadding: {
18526
+ xs: {
18527
+ [vars$k.itemVerticalPadding]: globalRefs$a.spacing.xs,
18528
+ [vars$k.itemHorizontalPadding]: globalRefs$a.spacing.xs,
18529
+ },
18530
+ sm: {
18531
+ [vars$k.itemVerticalPadding]: globalRefs$a.spacing.sm,
18532
+ [vars$k.itemHorizontalPadding]: globalRefs$a.spacing.sm,
18533
+ },
18534
+ md: {
18535
+ [vars$k.itemVerticalPadding]: globalRefs$a.spacing.md,
18536
+ [vars$k.itemHorizontalPadding]: globalRefs$a.spacing.md,
18537
+ },
18538
+ lg: {
18539
+ [vars$k.itemVerticalPadding]: globalRefs$a.spacing.lg,
18540
+ [vars$k.itemHorizontalPadding]: globalRefs$a.spacing.lg,
18541
+ },
18542
+ xl: {
18543
+ [vars$k.itemVerticalPadding]: globalRefs$a.spacing.xl,
18544
+ [vars$k.itemHorizontalPadding]: globalRefs$a.spacing.xl,
18545
+ },
18546
+ },
18547
+ };
18548
+
18549
+ var appsList$1 = /*#__PURE__*/Object.freeze({
18550
+ __proto__: null,
18551
+ default: appsList,
18552
+ vars: vars$k
18553
+ });
18554
+
18461
18555
  const globalRefs$9 = getThemeRefs$1(globals);
18462
18556
 
18463
18557
  const compVars$3 = ListClass.cssVarList;
18464
18558
 
18465
18559
  const [helperTheme$1, helperRefs$1, helperVars$1] = createHelperVars$1(
18466
18560
  { shadowColor: '#00000020' },
18467
- componentName$l
18561
+ componentName$m
18468
18562
  );
18469
18563
 
18470
18564
  const { shadowColor: shadowColor$1 } = helperRefs$1;