@descope-ui/descope-apps-list 2.2.15 → 2.2.17

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/CHANGELOG.md CHANGED
@@ -2,6 +2,15 @@
2
2
 
3
3
  This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
4
4
 
5
+ ## [2.2.17](https://github.com/descope/web-components-ui/compare/web-components-ui-2.2.16...web-components-ui-2.2.17) (2026-01-05)
6
+
7
+ ## [2.2.16](https://github.com/descope/web-components-ui/compare/web-components-ui-2.2.15...web-components-ui-2.2.16) (2025-12-28)
8
+
9
+
10
+ ### Features
11
+
12
+ * Add design options to apps list ([#815](https://github.com/descope/web-components-ui/issues/815)) ([fd250ac](https://github.com/descope/web-components-ui/commit/fd250acf2802c38905df2b2e6350477b06e2431c))
13
+
5
14
  ## [2.2.15](https://github.com/descope/web-components-ui/compare/web-components-ui-2.2.14...web-components-ui-2.2.15) (2025-12-23)
6
15
 
7
16
  ## [2.2.14](https://github.com/descope/web-components-ui/compare/web-components-ui-2.2.13...web-components-ui-2.2.14) (2025-12-22)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@descope-ui/descope-apps-list",
3
- "version": "2.2.15",
3
+ "version": "2.2.17",
4
4
  "exports": {
5
5
  ".": {
6
6
  "import": "./src/component/index.js"
@@ -14,15 +14,15 @@
14
14
  },
15
15
  "devDependencies": {
16
16
  "@playwright/test": "1.38.1",
17
- "e2e-utils": "2.2.15"
17
+ "e2e-utils": "2.2.17"
18
18
  },
19
19
  "dependencies": {
20
- "@descope-ui/common": "2.2.15",
21
- "@descope-ui/theme-globals": "2.2.15",
22
- "@descope-ui/descope-list": "2.2.15",
23
- "@descope-ui/descope-list-item": "2.2.15",
24
- "@descope-ui/descope-avatar": "2.2.15",
25
- "@descope-ui/descope-text": "2.2.15"
20
+ "@descope-ui/common": "2.2.17",
21
+ "@descope-ui/theme-globals": "2.2.17",
22
+ "@descope-ui/descope-list": "2.2.17",
23
+ "@descope-ui/descope-list-item": "2.2.17",
24
+ "@descope-ui/descope-avatar": "2.2.17",
25
+ "@descope-ui/descope-text": "2.2.17"
26
26
  },
27
27
  "publishConfig": {
28
28
  "link-workspace-packages": false
@@ -1,5 +1,8 @@
1
1
  import { compose } from '@descope-ui/common/utils';
2
- import { getComponentName, limitAbbreviation } from '@descope-ui/common/components-helpers';
2
+ import {
3
+ getComponentName,
4
+ limitAbbreviation,
5
+ } from '@descope-ui/common/components-helpers';
3
6
  import {
4
7
  createStyleMixin,
5
8
  draggableMixin,
@@ -14,7 +17,7 @@ import { ListItemClass } from '@descope-ui/descope-list-item/class';
14
17
  export const componentName = getComponentName('apps-list');
15
18
 
16
19
  const itemRenderer = ({ name, icon, url }, _, ref) => `
17
- <a ${url ? `href="${url}" title="${url}"` : ''} target="_blank">
20
+ <a ${url ? `href="${url}" title="${url}"` : ''} ${ref.openInSameWindow ? '' : 'target="_blank"'}>
18
21
  <descope-list-item>
19
22
  <div class="avatar-wrapper">
20
23
  <descope-avatar
@@ -45,6 +48,10 @@ const customMixin = (superclass) =>
45
48
  get logoSize() {
46
49
  return this.getAttribute('logo-size');
47
50
  }
51
+
52
+ get openInSameWindow() {
53
+ return this.getAttribute('open-in-same-window') === 'true';
54
+ }
48
55
  };
49
56
 
50
57
  export const AppsListClass = compose(
@@ -53,6 +60,14 @@ export const AppsListClass = compose(
53
60
  maxHeight: { selector: () => ':host' },
54
61
  minHeight: { selector: () => ':host' },
55
62
  hostDirection: { selector: () => ':host', property: 'direction' },
63
+ gap: {
64
+ selector: ListClass.componentName,
65
+ property: ListClass.cssVarList.gap,
66
+ },
67
+ maxRowItems: {
68
+ selector: ListClass.componentName,
69
+ property: ListClass.cssVarList.maxRowItems,
70
+ },
56
71
  itemsFontWeight: {
57
72
  selector: TextClass.componentName,
58
73
  property: TextClass.cssVarList.fontWeightOverride,
@@ -69,6 +84,10 @@ export const AppsListClass = compose(
69
84
  selector: ListItemClass.componentName,
70
85
  property: ListItemClass.cssVarList.backgroundColor,
71
86
  },
87
+ itemHoverBackgroundColor: {
88
+ selector: `${ListItemClass.componentName}:hover`,
89
+ property: ListItemClass.cssVarList.backgroundColor,
90
+ },
72
91
  backgroundColor: {
73
92
  selector: ListClass.componentName,
74
93
  property: ListClass.cssVarList.backgroundColorOverride,
@@ -95,14 +114,25 @@ export const AppsListClass = compose(
95
114
  },
96
115
  itemAlignment: [
97
116
  { selector: () => '.avatar-wrapper', property: 'text-align' },
98
- { selector: TextClass.componentName, property: TextClass.cssVarList.textAlign },
99
- ]
117
+ {
118
+ selector: TextClass.componentName,
119
+ property: TextClass.cssVarList.textAlign,
120
+ },
121
+ ],
100
122
  },
101
123
  }),
102
- createDynamicDataMixin({ itemRenderer, rerenderAttrsList: ['size', 'item-text-variant', 'logo-size'] }),
124
+ createDynamicDataMixin({
125
+ itemRenderer,
126
+ rerenderAttrsList: [
127
+ 'size',
128
+ 'item-text-variant',
129
+ 'logo-size',
130
+ 'open-in-same-window',
131
+ ],
132
+ }),
103
133
  draggableMixin,
104
134
  componentNameValidationMixin,
105
- customMixin
135
+ customMixin,
106
136
  )(
107
137
  createProxy({
108
138
  slots: ['empty-state'],
@@ -140,5 +170,5 @@ export const AppsListClass = compose(
140
170
  width: 100%;
141
171
  }
142
172
  `,
143
- })
173
+ }),
144
174
  );
package/src/theme.js CHANGED
@@ -11,6 +11,7 @@ const appsList = {
11
11
  [vars.itemsTextAlign]: 'start',
12
12
  [vars.hostDirection]: globalRefs.direction,
13
13
  [vars.maxHeight]: defaultHeight,
14
+ [vars.itemHoverBackgroundColor]: globalRefs.colors.surface.highlight,
14
15
 
15
16
  _empty: {
16
17
  [vars.minHeight]: defaultHeight,
@@ -12,6 +12,7 @@ const Template = ({
12
12
  'item-text-variant': itemTextVariant,
13
13
  'st-item-alignment': itemAlignment,
14
14
  'st-background-color': backgroundColor,
15
+ maxItemsPerRow,
15
16
  }) => `
16
17
  <descope-apps-list
17
18
  st-host-direction="${direction || ''}"
@@ -22,6 +23,7 @@ const Template = ({
22
23
  item-text-variant="${itemTextVariant || ''}"
23
24
  st-item-alignment="${itemAlignment || ''}"
24
25
  st-background-color="${backgroundColor || ''}"
26
+ st-max-row-items="${maxItemsPerRow || ''}"
25
27
  >
26
28
  <div slot="empty-state">${emptyState}</div>
27
29
  </descope-apps-list>
@@ -39,7 +41,7 @@ export default {
39
41
  name: `${args.itemSampleText} ${i + 1}`,
40
42
  icon: i % 2 > 0 ? avatarImage : '',
41
43
  url: 'https://www.google.com',
42
- })
44
+ }),
43
45
  );
44
46
  });
45
47
  return story();
@@ -49,7 +51,7 @@ export default {
49
51
  ...directionControl,
50
52
  size: {
51
53
  name: 'Size',
52
- options: [undefined,'xs', 'sm', 'md', 'lg'],
54
+ options: [undefined, 'xs', 'sm', 'md', 'lg'],
53
55
  control: { type: 'select' },
54
56
  },
55
57
  variant: {
@@ -81,6 +83,10 @@ export default {
81
83
  name: 'Background Color',
82
84
  control: 'color',
83
85
  },
86
+ maxItemsPerRow: {
87
+ name: 'Max Items Per Row (for tiles variant)',
88
+ control: { type: 'number', min: 1, max: 1000, step: 1 },
89
+ },
84
90
  },
85
91
  };
86
92