@descope/web-components-ui 3.6.0 → 3.7.1

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.
Files changed (46) hide show
  1. package/dist/cjs/index.cjs.js +689 -344
  2. package/dist/cjs/index.cjs.js.map +1 -1
  3. package/dist/index.esm.js +791 -445
  4. package/dist/index.esm.js.map +1 -1
  5. package/dist/umd/8961.js +1 -1
  6. package/dist/umd/8961.js.map +1 -1
  7. package/dist/umd/DescopeDev.js +1 -1
  8. package/dist/umd/DescopeDev.js.map +1 -1
  9. package/dist/umd/button-selection-group-fields-descope-button-selection-group-item-index-js.js +1 -1
  10. package/dist/umd/button-selection-group-fields-descope-button-selection-group-item-index-js.js.map +1 -1
  11. package/dist/umd/descope-anchored.js +2 -0
  12. package/dist/umd/descope-anchored.js.map +1 -0
  13. package/dist/umd/descope-attachment.js +1 -1
  14. package/dist/umd/descope-attachment.js.map +1 -1
  15. package/dist/umd/descope-badge.js +1 -1
  16. package/dist/umd/descope-badge.js.map +1 -1
  17. package/dist/umd/descope-button.js +1 -1
  18. package/dist/umd/descope-button.js.map +1 -1
  19. package/dist/umd/descope-date-field-descope-calendar-index-js.js +1 -1
  20. package/dist/umd/descope-date-field-descope-calendar-index-js.js.map +1 -1
  21. package/dist/umd/descope-outbound-app-button.js +1 -1
  22. package/dist/umd/descope-outbound-app-button.js.map +1 -1
  23. package/dist/umd/descope-outbound-apps.js +1 -1
  24. package/dist/umd/descope-outbound-apps.js.map +1 -1
  25. package/dist/umd/descope-timer-button.js +1 -1
  26. package/dist/umd/descope-timer-button.js.map +1 -1
  27. package/dist/umd/descope-tooltip.js +1 -1
  28. package/dist/umd/descope-tooltip.js.map +1 -1
  29. package/dist/umd/descope-trusted-devices.js +1 -1
  30. package/dist/umd/descope-trusted-devices.js.map +1 -1
  31. package/dist/umd/descope-upload-file-index-js.js +1 -1
  32. package/dist/umd/descope-upload-file-index-js.js.map +1 -1
  33. package/dist/umd/descope-user-attribute-index-js.js +4 -4
  34. package/dist/umd/descope-user-attribute-index-js.js.map +1 -1
  35. package/dist/umd/descope-user-auth-method-index-js.js +4 -4
  36. package/dist/umd/descope-user-auth-method-index-js.js.map +1 -1
  37. package/dist/umd/index.js +1 -1
  38. package/dist/umd/index.js.map +1 -1
  39. package/dist/umd/mapping-fields-descope-mappings-field-index-js.js +1 -1
  40. package/dist/umd/mapping-fields-descope-mappings-field-index-js.js.map +1 -1
  41. package/dist/umd/mapping-fields-descope-saml-group-mappings-index-js.js +1 -1
  42. package/dist/umd/mapping-fields-descope-saml-group-mappings-index-js.js.map +1 -1
  43. package/package.json +33 -32
  44. package/src/components/descope-user-attribute/UserAttributeClass.js +58 -7
  45. package/src/theme/components/userAttribute.js +1 -0
  46. package/stories/descope-user-attribute.stories.js +18 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@descope/web-components-ui",
3
- "version": "3.6.0",
3
+ "version": "3.7.1",
4
4
  "description": "",
5
5
  "main": "dist/cjs/index.cjs.js",
6
6
  "module": "dist/index.esm.js",
@@ -52,10 +52,10 @@
52
52
  "webpack-cli": "^7.0.0",
53
53
  "webpack-dev-server": "^5.0.0",
54
54
  "webpack-subresource-integrity": "5.2.0-rc.1",
55
- "rollup-replace-plugin": "3.6.0",
56
- "webpack-extract-font-loader": "3.6.0",
57
- "test-drivers": "3.6.0",
58
- "webpack-replace-plugin": "3.6.0"
55
+ "rollup-replace-plugin": "3.7.1",
56
+ "test-drivers": "3.7.1",
57
+ "webpack-extract-font-loader": "3.7.1",
58
+ "webpack-replace-plugin": "3.7.1"
59
59
  },
60
60
  "dependencies": {
61
61
  "@vaadin/checkbox": "24.3.4",
@@ -79,33 +79,34 @@
79
79
  "libphonenumber-js": "^1.11.12",
80
80
  "lodash.debounce": "4.0.8",
81
81
  "lodash.merge": "4.6.2",
82
- "@descope-ui/common": "3.6.0",
83
- "@descope-ui/descope-address-field": "3.6.0",
84
- "@descope-ui/descope-apps-list": "3.6.0",
85
- "@descope-ui/descope-avatar": "3.6.0",
86
- "@descope-ui/descope-badge": "3.6.0",
87
- "@descope-ui/descope-button": "3.6.0",
88
- "@descope-ui/descope-collapsible-container": "3.6.0",
89
- "@descope-ui/descope-country-subdivision-city-field": "3.6.0",
90
- "@descope-ui/descope-combo-box": "3.6.0",
91
- "@descope-ui/descope-icon": "3.6.0",
92
- "@descope-ui/descope-enriched-text": "3.6.0",
93
- "@descope-ui/descope-list": "3.6.0",
94
- "@descope-ui/descope-autocomplete-field": "3.6.0",
95
- "@descope-ui/descope-link": "3.6.0",
96
- "@descope-ui/descope-outbound-app-button": "3.6.0",
97
- "@descope-ui/descope-outbound-apps": "3.6.0",
98
- "@descope-ui/descope-password-strength": "3.6.0",
99
- "@descope-ui/descope-ponyhot": "3.6.0",
100
- "@descope-ui/descope-recovery-codes": "3.6.0",
101
- "@descope-ui/descope-text": "3.6.0",
102
- "@descope-ui/descope-timer": "3.6.0",
103
- "@descope-ui/descope-timer-button": "3.6.0",
104
- "@descope-ui/descope-tooltip": "3.6.0",
105
- "@descope-ui/descope-list-item": "3.6.0",
106
- "@descope-ui/descope-trusted-devices": "3.6.0",
107
- "@descope-ui/descope-image": "3.6.0",
108
- "@descope-ui/descope-attachment": "3.6.0"
82
+ "@descope-ui/descope-address-field": "3.7.1",
83
+ "@descope-ui/descope-country-subdivision-city-field": "3.7.1",
84
+ "@descope-ui/common": "3.7.1",
85
+ "@descope-ui/descope-apps-list": "3.7.1",
86
+ "@descope-ui/descope-avatar": "3.7.1",
87
+ "@descope-ui/descope-autocomplete-field": "3.7.1",
88
+ "@descope-ui/descope-badge": "3.7.1",
89
+ "@descope-ui/descope-button": "3.7.1",
90
+ "@descope-ui/descope-icon": "3.7.1",
91
+ "@descope-ui/descope-image": "3.7.1",
92
+ "@descope-ui/descope-link": "3.7.1",
93
+ "@descope-ui/descope-list": "3.7.1",
94
+ "@descope-ui/descope-list-item": "3.7.1",
95
+ "@descope-ui/descope-outbound-app-button": "3.7.1",
96
+ "@descope-ui/descope-password-strength": "3.7.1",
97
+ "@descope-ui/descope-outbound-apps": "3.7.1",
98
+ "@descope-ui/descope-enriched-text": "3.7.1",
99
+ "@descope-ui/descope-combo-box": "3.7.1",
100
+ "@descope-ui/descope-recovery-codes": "3.7.1",
101
+ "@descope-ui/descope-text": "3.7.1",
102
+ "@descope-ui/descope-timer": "3.7.1",
103
+ "@descope-ui/descope-timer-button": "3.7.1",
104
+ "@descope-ui/descope-tooltip": "3.7.1",
105
+ "@descope-ui/descope-ponyhot": "3.7.1",
106
+ "@descope-ui/descope-trusted-devices": "3.7.1",
107
+ "@descope-ui/descope-attachment": "3.7.1",
108
+ "@descope-ui/descope-anchored": "3.7.1",
109
+ "@descope-ui/descope-collapsible-container": "3.7.1"
109
110
  },
110
111
  "overrides": {
111
112
  "@vaadin/avatar": "24.3.4",
@@ -1,6 +1,7 @@
1
1
  import { TextClass } from '@descope-ui/descope-text/class';
2
2
  import { ButtonClass } from '@descope-ui/descope-button/class';
3
3
  import { BadgeClass } from '@descope-ui/descope-badge/class';
4
+ import { IconClass } from '@descope-ui/descope-icon/class';
4
5
  import { injectStyle } from '@descope-ui/common/components-helpers';
5
6
  import { createStyleMixin, draggableMixin, componentNameValidationMixin } from '../../mixins';
6
7
  import { createBaseClass } from '../../baseClasses/createBaseClass';
@@ -24,12 +25,12 @@ class RawUserAttribute extends createBaseClass({
24
25
  <descope-text st-text-align="auto" data-id="value-text" variant="body1" mode="primary" class="value"></descope-text>
25
26
  <div class="btn-wrapper">
26
27
  <descope-badge mode="default" bordered="true" size="xs"></descope-badge>
27
- <descope-button size="xs" data-id="edit-btn" square="true" variant="link" mode="primary">
28
- <slot name="edit-icon"></slot>
29
- </descope-button>
30
- <descope-button size="xs" data-id="delete-btn" square="true" variant="link" mode="primary">
28
+ <descope-button size="sm" data-id="delete-btn" variant="link" mode="primary">
31
29
  <slot name="delete-icon"></slot>
32
30
  </descope-button>
31
+ <descope-button size="sm" data-id="edit-btn" variant="link" mode="primary">
32
+ <slot name="edit-icon"></slot>
33
+ </descope-button>
33
34
  </div>
34
35
  </div>
35
36
  </div>
@@ -48,7 +49,7 @@ class RawUserAttribute extends createBaseClass({
48
49
  height: 100%;
49
50
  align-items: center;
50
51
  }
51
-
52
+
52
53
  ::slotted(*) {
53
54
  display: flex;
54
55
  align-items: center;
@@ -66,6 +67,14 @@ class RawUserAttribute extends createBaseClass({
66
67
  justify-content: space-between;
67
68
  align-items: center;
68
69
  flex-grow: 0;
70
+ flex-shrink: 0;
71
+ }
72
+
73
+ slot[name="edit-icon"],
74
+ slot[name="delete-icon"] {
75
+ display: inline-flex;
76
+ flex-shrink: 0;
77
+ align-items: center;
69
78
  }
70
79
 
71
80
  .content-wrapper {
@@ -102,6 +111,7 @@ class RawUserAttribute extends createBaseClass({
102
111
 
103
112
  .hidden {
104
113
  visibility: hidden;
114
+ width: 0;
105
115
  }
106
116
 
107
117
  descope-text[data-id="label-text"].required:after {
@@ -111,6 +121,7 @@ class RawUserAttribute extends createBaseClass({
111
121
 
112
122
  :host([readonly="true"]) descope-button {
113
123
  visibility: hidden;
124
+ width: 0;
114
125
  }
115
126
  `,
116
127
  this
@@ -150,6 +161,21 @@ class RawUserAttribute extends createBaseClass({
150
161
  this.badge.setAttribute('title', this.badgeTooltipText || this.badgeLabel);
151
162
  }
152
163
 
164
+ updateButtonLabel(btnRef, label) {
165
+ let textSpanEle = btnRef.querySelector('span.btn-label');
166
+
167
+ if (label) {
168
+ if (!textSpanEle) {
169
+ textSpanEle = document.createElement('span');
170
+ textSpanEle.classList.add('btn-label');
171
+ btnRef.appendChild(textSpanEle);
172
+ }
173
+ textSpanEle.innerText = label;
174
+ } else {
175
+ textSpanEle?.remove();
176
+ }
177
+ }
178
+
153
179
  onIsRequiredChange() {
154
180
  this.labelText.classList.toggle('required', this.isRequired);
155
181
  }
@@ -178,12 +204,26 @@ class RawUserAttribute extends createBaseClass({
178
204
  return this.getAttribute('badge-tooltip-text') || '';
179
205
  }
180
206
 
207
+ get editButtonLabel() {
208
+ return this.getAttribute('edit-button-label') || '';
209
+ }
210
+
211
+ get deleteButtonLabel() {
212
+ return this.getAttribute('delete-button-label') || '';
213
+ }
214
+
215
+ get isDeleteHidden() {
216
+ return this.getAttribute('hide-delete') === 'true';
217
+ }
218
+
181
219
  init() {
182
220
  this.onLabelChange();
183
221
  this.onValueOrPlaceholderChange();
184
222
  this.onIsRequiredChange();
185
223
  this.onBadgeLabelChange();
186
224
  this.onBadgeTooltipTextChange();
225
+ this.updateButtonLabel(this.editButton, this.editButtonLabel);
226
+ this.updateButtonLabel(this.deleteButton, this.deleteButtonLabel);
187
227
  this.handleDeleteButtonVisibility();
188
228
 
189
229
  this.deleteButton.addEventListener('click', () =>
@@ -219,11 +259,17 @@ class RawUserAttribute extends createBaseClass({
219
259
  'required',
220
260
  'badge-label',
221
261
  'badge-tooltip-text',
262
+ 'edit-button-label',
263
+ 'delete-button-label',
264
+ 'hide-delete',
222
265
  ].concat(super.observedAttributes);
223
266
  }
224
267
 
225
268
  handleDeleteButtonVisibility() {
226
- this.deleteButton.classList.toggle('hidden', this.isRequired || !this.value);
269
+ this.deleteButton.classList.toggle(
270
+ 'hidden',
271
+ this.isRequired || !this.value || this.isDeleteHidden
272
+ );
227
273
  }
228
274
 
229
275
  attributeChangedCallback(name, oldValue, newValue) {
@@ -243,9 +289,13 @@ class RawUserAttribute extends createBaseClass({
243
289
  this.onBadgeLabelChange();
244
290
  } else if (name === 'badge-tooltip-text') {
245
291
  this.onBadgeTooltipTextChange();
292
+ } else if (name === 'edit-button-label') {
293
+ this.updateButtonLabel(this.editButton, this.editButtonLabel);
294
+ } else if (name === 'delete-button-label') {
295
+ this.updateButtonLabel(this.deleteButton, this.deleteButtonLabel);
246
296
  }
247
297
 
248
- if (name === 'value' || name === 'required') {
298
+ if (name === 'value' || name === 'required' || name === 'hide-delete') {
249
299
  this.handleDeleteButtonVisibility();
250
300
  }
251
301
  }
@@ -276,6 +326,7 @@ export const UserAttributeClass = compose(
276
326
  contentMinWidth: { ...contentWrapper, property: 'min-width' },
277
327
  badgeMaxWidth: { ...badge, property: 'max-width' },
278
328
  itemsGap: [{ property: 'gap' }, { ...contentWrapper, property: 'gap' }],
329
+ iconColor: [{ selector: () => '::slotted(*)', property: IconClass.cssVarList.fill }],
279
330
  },
280
331
  }),
281
332
  draggableMixin,
@@ -17,6 +17,7 @@ const userAttribute = {
17
17
  [vars.hostMinWidth]: '310px',
18
18
  [vars.hostWidth]: '530px',
19
19
  [vars.hostMaxWidth]: '100%',
20
+ [vars.iconColor]: 'currentcolor',
20
21
 
21
22
  _fullWidth: {
22
23
  [vars.hostWidth]: '100%',
@@ -26,6 +26,9 @@ const Template = ({
26
26
  readonly,
27
27
  'badge-label': badgeLabel,
28
28
  'badge-tooltip-text': badgeTooltipText,
29
+ 'edit-button-label': editButtonLabel,
30
+ 'delete-button-label': deleteButtonLabel,
31
+ 'hide-delete': hideDelete,
29
32
  customIcons,
30
33
  }) => `
31
34
  <descope-user-attribute
@@ -36,6 +39,9 @@ const Template = ({
36
39
  required="${required || 'false'}"
37
40
  badge-label="${badgeLabel || ''}"
38
41
  badge-tooltip-text="${badgeTooltipText || ''}"
42
+ edit-button-label="${editButtonLabel || ''}"
43
+ delete-button-label="${deleteButtonLabel || ''}"
44
+ hide-delete="${hideDelete || 'false'}"
39
45
  st-host-direction="${direction ?? ''}"
40
46
  readonly="${readonly || false}"
41
47
  >
@@ -65,6 +71,18 @@ export default {
65
71
  name: 'Badge Tooltip Text',
66
72
  control: { type: 'text' },
67
73
  },
74
+ 'edit-button-label': {
75
+ name: 'Edit Button Label',
76
+ control: { type: 'text' },
77
+ },
78
+ 'delete-button-label': {
79
+ name: 'Delete Button Label',
80
+ control: { type: 'text' },
81
+ },
82
+ 'hide-delete': {
83
+ name: 'Hide Delete',
84
+ control: { type: 'boolean' },
85
+ },
68
86
  customIcons: {
69
87
  name: 'Custom Icons',
70
88
  control: { type: 'boolean' },