@descope/web-components-ui 3.6.0 → 3.7.0
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 +58 -7
- package/dist/cjs/index.cjs.js.map +1 -1
- package/dist/index.esm.js +58 -7
- package/dist/index.esm.js.map +1 -1
- package/dist/umd/DescopeDev.js +1 -1
- package/dist/umd/DescopeDev.js.map +1 -1
- package/dist/umd/descope-user-attribute-index-js.js +4 -4
- package/dist/umd/descope-user-attribute-index-js.js.map +1 -1
- package/dist/umd/index.js +1 -1
- package/package.json +32 -32
- package/src/components/descope-user-attribute/UserAttributeClass.js +58 -7
- package/src/theme/components/userAttribute.js +1 -0
- package/stories/descope-user-attribute.stories.js +18 -0
|
@@ -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="
|
|
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(
|
|
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,
|
|
@@ -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' },
|