@haiilo/catalyst 1.0.1 → 1.1.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/catalyst/catalyst.css +1 -1
- package/dist/catalyst/catalyst.esm.js +1 -1
- package/dist/catalyst/catalyst.esm.js.map +1 -1
- package/dist/catalyst/p-78b3fc17.entry.js +10 -0
- package/dist/catalyst/p-78b3fc17.entry.js.map +1 -0
- package/dist/catalyst/scss/utils/_sizing.mixins.scss +1 -1
- package/dist/cjs/cat-alert_23.cjs.entry.js +302 -120
- package/dist/cjs/cat-alert_23.cjs.entry.js.map +1 -1
- package/dist/cjs/catalyst.cjs.js +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/collection/components/cat-alert/cat-alert.css +13 -19
- package/dist/collection/components/cat-alert/cat-alert.js +17 -18
- package/dist/collection/components/cat-alert/cat-alert.js.map +1 -1
- package/dist/collection/components/cat-checkbox/cat-checkbox.css +1 -1
- package/dist/collection/components/cat-select/cat-select.css +2 -1
- package/dist/collection/components/cat-select/cat-select.js +293 -94
- package/dist/collection/components/cat-select/cat-select.js.map +1 -1
- package/dist/collection/components/cat-select-demo/cat-select-demo.js +43 -30
- package/dist/collection/components/cat-select-demo/cat-select-demo.js.map +1 -1
- package/dist/collection/components/cat-tooltip/cat-tooltip.css +26 -2
- package/dist/collection/components/cat-tooltip/cat-tooltip.js +51 -3
- package/dist/collection/components/cat-tooltip/cat-tooltip.js.map +1 -1
- package/dist/collection/index.js.map +1 -1
- package/dist/collection/scss/utils/_sizing.mixins.scss +1 -1
- package/dist/components/cat-alert.js +14 -12
- package/dist/components/cat-alert.js.map +1 -1
- package/dist/components/cat-checkbox2.js +1 -1
- package/dist/components/cat-checkbox2.js.map +1 -1
- package/dist/components/cat-select-demo.js +33 -22
- package/dist/components/cat-select-demo.js.map +1 -1
- package/dist/components/cat-select2.js +240 -81
- package/dist/components/cat-select2.js.map +1 -1
- package/dist/components/cat-tooltip.js +17 -3
- package/dist/components/cat-tooltip.js.map +1 -1
- package/dist/esm/cat-alert_23.entry.js +303 -121
- package/dist/esm/cat-alert_23.entry.js.map +1 -1
- package/dist/esm/catalyst.js +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/types/components/cat-alert/cat-alert.d.ts +3 -2
- package/dist/types/components/cat-select/cat-select.d.ts +32 -1
- package/dist/types/components/cat-select-demo/cat-select-demo.d.ts +3 -0
- package/dist/types/components/cat-tooltip/cat-tooltip.d.ts +8 -0
- package/dist/types/components.d.ts +37 -5
- package/dist/types/index.d.ts +1 -1
- package/package.json +2 -2
- package/dist/catalyst/p-081aece8.entry.js +0 -10
- package/dist/catalyst/p-081aece8.entry.js.map +0 -1
|
@@ -5,7 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
5
5
|
const index = require('./index-8ab22379.js');
|
|
6
6
|
const catNotification = require('./cat-notification-bcb9fb86.js');
|
|
7
7
|
|
|
8
|
-
const catAlertCss = ":host{display:
|
|
8
|
+
const catAlertCss = ":host{display:flex;gap:0.5rem;padding:1.25rem;border-radius:0.5rem;margin-bottom:1rem}:host([hidden]){display:none}:host(:focus-visible){outline:2px solid rgb(var(--cat-border-color-focus, 0, 113, 255));outline-offset:1px}.content{align-self:center}::slotted(:last-child){margin-bottom:0 !important}:host([color=primary]){background-color:rgba(var(--cat-primary-bg, 32, 127, 138), 0.1)}:host([color=primary]) cat-icon{color:#207f8a}:host([color=secondary]){background-color:rgba(105, 118, 135, 0.1)}:host([color=secondary]) cat-icon{color:#697687}:host([color=success]){background-color:rgba(0, 132, 88, 0.1)}:host([color=success]) cat-icon{color:#008458}:host([color=warning]){background-color:rgba(255, 206, 128, 0.1)}:host([color=warning]) cat-icon{color:#ebb663}:host([color=danger]){background-color:rgba(217, 52, 13, 0.1)}:host([color=danger]) cat-icon{color:#d9340d}";
|
|
9
9
|
|
|
10
10
|
const CatAlert = class {
|
|
11
11
|
constructor(hostRef) {
|
|
@@ -17,6 +17,13 @@ const CatAlert = class {
|
|
|
17
17
|
['warning', 'danger-filled'],
|
|
18
18
|
['danger', 'cross-circle-filled']
|
|
19
19
|
]);
|
|
20
|
+
this.mapRole = new Map([
|
|
21
|
+
['primary', 'status'],
|
|
22
|
+
['secondary', 'status'],
|
|
23
|
+
['success', 'status'],
|
|
24
|
+
['warning', 'alert'],
|
|
25
|
+
['danger', 'alert']
|
|
26
|
+
]);
|
|
20
27
|
/**
|
|
21
28
|
* The color palette of the alert.
|
|
22
29
|
*/
|
|
@@ -27,20 +34,15 @@ const CatAlert = class {
|
|
|
27
34
|
this.noIcon = false;
|
|
28
35
|
}
|
|
29
36
|
render() {
|
|
30
|
-
return (index.h(index.Host, { tabindex:
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
37
|
+
return (index.h(index.Host, { tabindex: this.tabIndex, role: this.role }, !this.noIcon && index.h("cat-icon", { size: "l", icon: this.icon ? this.icon : this.mapIcon.get(this.color) }), index.h("div", { class: "content" }, index.h("slot", null))));
|
|
38
|
+
}
|
|
39
|
+
get tabIndex() {
|
|
40
|
+
return this.hostElement.getAttribute('tabindex') || '0';
|
|
34
41
|
}
|
|
35
42
|
get role() {
|
|
36
|
-
|
|
37
|
-
case 'danger':
|
|
38
|
-
case 'warning':
|
|
39
|
-
return 'alert';
|
|
40
|
-
default:
|
|
41
|
-
return 'status';
|
|
42
|
-
}
|
|
43
|
+
return this.hostElement.getAttribute('role') || this.mapRole.get(this.color) || null;
|
|
43
44
|
}
|
|
45
|
+
get hostElement() { return index.getElement(this); }
|
|
44
46
|
};
|
|
45
47
|
CatAlert.style = catAlertCss;
|
|
46
48
|
|
|
@@ -487,7 +489,7 @@ const CatFormHint = props => {
|
|
|
487
489
|
]));
|
|
488
490
|
};
|
|
489
491
|
|
|
490
|
-
const catCheckboxCss = ".hint-section{display:flex;gap:0.5rem;flex-direction:column}.hint-section .input-hint,.hint-section ::slotted([slot=hint]){font-size:0.875rem;line-height:1rem;font-weight:var(--cat-font-weight-body, 400);margin:0 !important}:host-context(.cat-error) .hint-section{color:#d9340d}:host{display:flex;flex-direction:column;gap:0.5rem;margin-bottom:1rem}:host([hidden]){display:none}label{flex:0 1 auto;display:flex;gap:0.5rem;font-size:0.9375rem;line-height:1.25rem;font-weight:var(--cat-font-weight-body, 400);-webkit-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;position:relative}.label-left{flex-direction:row-reverse}.label-left input{right:1px;left:unset}input{position:absolute;width:1.25rem;height:1.25rem;margin:0;opacity:0;cursor:inherit;left:1px;top:0.5px}.box{flex:0 0 auto;display:flex;position:relative;height:1.25rem;width:1.25rem;background-color:white;border:1px solid #d7dbe0;border-radius:0.125rem;transition:background-color 0.13s ease, border-color 0.13s ease;pointer-events:none}.box svg{fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:16px;stroke-dashoffset:16px;transition:all 0.13s ease;width:
|
|
492
|
+
const catCheckboxCss = ".hint-section{display:flex;gap:0.5rem;flex-direction:column}.hint-section .input-hint,.hint-section ::slotted([slot=hint]){font-size:0.875rem;line-height:1rem;font-weight:var(--cat-font-weight-body, 400);margin:0 !important}:host-context(.cat-error) .hint-section{color:#d9340d}:host{display:flex;flex-direction:column;gap:0.5rem;margin-bottom:1rem}:host([hidden]){display:none}label{flex:0 1 auto;display:flex;gap:0.5rem;font-size:0.9375rem;line-height:1.25rem;font-weight:var(--cat-font-weight-body, 400);-webkit-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;position:relative}.label-left{flex-direction:row-reverse}.label-left input{right:1px;left:unset}input{position:absolute;width:1.25rem;height:1.25rem;margin:0;opacity:0;cursor:inherit;left:1px;top:0.5px}.box{flex:0 0 auto;display:flex;position:relative;height:1.25rem;width:1.25rem;background-color:white;border:1px solid #d7dbe0;border-radius:0.125rem;transition:background-color 0.13s ease, border-color 0.13s ease;pointer-events:none}.box svg{fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:16px;stroke-dashoffset:16px;transition:all 0.13s ease;width:50%;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%) scale(0.99)}:checked+.box{background-color:rgb(var(--cat-primary-bg, 32, 127, 138));border-color:rgb(var(--cat-primary-bg, 32, 127, 138));stroke:rgb(var(--cat-primary-fill, 255, 255, 255))}:checked+.box .check{stroke-dashoffset:0}:indeterminate+.box{background-color:rgb(var(--cat-primary-bg, 32, 127, 138));border-color:rgb(var(--cat-primary-bg, 32, 127, 138));stroke:rgb(var(--cat-primary-fill, 255, 255, 255))}:indeterminate+.box .dash{stroke-dashoffset:0}:focus-visible+.box{outline:2px solid rgb(var(--cat-border-color-focus, 0, 113, 255));outline-offset:1px}:host(.cat-error) .box{border:1px solid #d9340d}:host(.cat-error) :checked+.box,:host(.cat-error) :indeterminate+.box{background-color:#d9340d;border-color:#d9340d;stroke:white}.label{flex:1 1 auto;min-width:0}.is-hidden .label{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border:0 !important}.is-disabled{cursor:not-allowed;color:rgb(var(--cat-font-color-muted, 105, 118, 135))}";
|
|
491
493
|
|
|
492
494
|
let nextUniqueId$8 = 0;
|
|
493
495
|
const CatCheckbox = class {
|
|
@@ -5223,7 +5225,7 @@ var autosizeInput = function (element, options) {
|
|
|
5223
5225
|
}
|
|
5224
5226
|
};
|
|
5225
5227
|
|
|
5226
|
-
const catSelectCss = ".hint-section{display:flex;gap:0.5rem;flex-direction:column}.hint-section .input-hint,.hint-section ::slotted([slot=hint]){font-size:0.875rem;line-height:1rem;font-weight:var(--cat-font-weight-body, 400);margin:0 !important}:host-context(.cat-error) .hint-section{color:#d9340d}:host{display:flex;flex-direction:column;gap:0.5rem;position:relative;margin-bottom:1rem}:host([hidden]){display:none}label{align-self:flex-start}label.hidden{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border:0 !important}.input-optional{margin-left:0.25rem;font-size:0.75rem;line-height:1rem;font-weight:var(--cat-font-weight-body, 400);color:rgb(var(--cat-font-color-muted, 105, 118, 135))}.select-wrapper{display:flex;align-items:flex-start;background:white;border-radius:0.25rem;box-shadow:0 0 0 1px #d7dbe0;transition:box-shadow 0.13s linear;padding:0.25rem}.select-wrapper:not(.select-disabled):hover{box-shadow:0 0 0 2px #d7dbe0}.select-wrapper:not(.select-disabled):focus-within{outline:2px solid rgb(var(--cat-border-color-focus, 0, 113, 255))}:host(.cat-error) .select-wrapper{box-shadow:0 0 0 1px #d9340d}:host(.cat-error) .select-wrapper:not(.input-disabled):hover{box-shadow:0 0 0 2px #d9340d}.select-disabled{background:#f8f8fb;cursor:not-allowed;color:rgb(var(--cat-font-color-muted, 105, 118, 135))}.select-wrapper-inner{display:flex;flex:1 1 auto;flex-wrap:wrap;align-items:center;gap:0.25rem;min-width:0}.select-wrapper-inner>cat-avatar{padding-left:0.25rem}.select-wrapper-inner cat-avatar{--cat-avatar-size:1.25rem}.select-input{font:inherit;background:none;border:none;outline:none;padding:0.375rem 0.5rem;flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.select-disabled .select-input{cursor:inherit}.select-pills{display:contents}.pill{display:inline-flex;align-items:center;gap:0.5rem;padding:0.25rem 0.5rem;background:#
|
|
5228
|
+
const catSelectCss = ".hint-section{display:flex;gap:0.5rem;flex-direction:column}.hint-section .input-hint,.hint-section ::slotted([slot=hint]){font-size:0.875rem;line-height:1rem;font-weight:var(--cat-font-weight-body, 400);margin:0 !important}:host-context(.cat-error) .hint-section{color:#d9340d}:host{display:flex;flex-direction:column;gap:0.5rem;position:relative;margin-bottom:1rem}:host([hidden]){display:none}label{align-self:flex-start}label.hidden{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border:0 !important}.input-optional{margin-left:0.25rem;font-size:0.75rem;line-height:1rem;font-weight:var(--cat-font-weight-body, 400);color:rgb(var(--cat-font-color-muted, 105, 118, 135))}.select-wrapper{display:flex;align-items:flex-start;background:white;border-radius:0.25rem;box-shadow:0 0 0 1px #d7dbe0;transition:box-shadow 0.13s linear;padding:0.25rem}.select-wrapper:not(.select-disabled):hover{box-shadow:0 0 0 2px #d7dbe0}.select-wrapper:not(.select-disabled):focus-within{outline:2px solid rgb(var(--cat-border-color-focus, 0, 113, 255))}:host(.cat-error) .select-wrapper{box-shadow:0 0 0 1px #d9340d}:host(.cat-error) .select-wrapper:not(.input-disabled):hover{box-shadow:0 0 0 2px #d9340d}.select-disabled{background:#f8f8fb;cursor:not-allowed;color:rgb(var(--cat-font-color-muted, 105, 118, 135));pointer-events:none}.select-wrapper-inner{display:flex;flex:1 1 auto;flex-wrap:wrap;align-items:center;gap:0.25rem;min-width:0}.select-wrapper-inner>cat-avatar{padding-left:0.25rem}.select-wrapper-inner cat-avatar{--cat-avatar-size:1.25rem}.select-input{font:inherit;background:none;border:none;outline:none;padding:0.375rem 0.5rem;flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.select-disabled .select-input{cursor:inherit}.select-pills{display:contents}.pill{display:inline-flex;align-items:center;gap:0.5rem;padding:0.25rem 0.5rem;background:#f2f4f7;border-radius:0.125rem;white-space:nowrap;min-width:0}.pill>span{overflow:hidden;text-overflow:ellipsis}.pill>cat-button{margin-right:-0.25rem;margin-left:-0.25rem}.select-btn{transition:transform 0.13s linear}.select-btn::part(button){outline:none}cat-spinner{padding:0.375rem}.select-btn-open{transform:rotate(180deg)}.select-dropdown{position:absolute;right:0;background:white;display:none;overflow:auto;box-shadow:0 1px 4px 0 rgba(16, 29, 48, 0.2);border-radius:0.25rem;z-index:100}.select-options-wrapper{max-height:16rem;width:100%}.select-empty{margin:1rem 0;padding:0 1.25rem}.select-options{list-style-type:none;margin:0;padding:0.5rem 0}.select-options cat-checkbox,.select-options .select-option-single{margin:0;padding:0.5rem 1rem}.select-option-inner{display:flex;gap:0.5rem;--cat-avatar-size:1.25rem}.select-option-single{cursor:pointer}.select-input-transparent-caret{caret-color:transparent}.select-option-empty,.select-option-loading{padding:0.5rem 1rem}.select-option:hover{background-color:rgba(105, 118, 135, 0.05)}.select-option-active{outline:2px solid rgb(var(--cat-border-color-focus, 0, 113, 255));outline-offset:-2px}.select-option-label{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}.select-option-description{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;color:rgb(var(--cat-font-color-muted, 105, 118, 135))}";
|
|
5227
5229
|
|
|
5228
5230
|
const INIT_STATE = {
|
|
5229
5231
|
term: '',
|
|
@@ -5285,6 +5287,10 @@ const CatSelect = class {
|
|
|
5285
5287
|
* Whether the select should show a clear button.
|
|
5286
5288
|
*/
|
|
5287
5289
|
this.clearable = false;
|
|
5290
|
+
/**
|
|
5291
|
+
* Whether the select should add new items.
|
|
5292
|
+
*/
|
|
5293
|
+
this.tags = false;
|
|
5288
5294
|
}
|
|
5289
5295
|
onConnectorChange(connector) {
|
|
5290
5296
|
this.reset(connector);
|
|
@@ -5304,11 +5310,25 @@ const CatSelect = class {
|
|
|
5304
5310
|
this.hide();
|
|
5305
5311
|
}
|
|
5306
5312
|
const idsSelected = this.state.selection.map(item => item.item.id);
|
|
5307
|
-
if (this.
|
|
5308
|
-
this.
|
|
5313
|
+
if (!this.tags) {
|
|
5314
|
+
if (this.multiple) {
|
|
5315
|
+
this.value = idsSelected;
|
|
5316
|
+
}
|
|
5317
|
+
else {
|
|
5318
|
+
this.value = idsSelected.length ? idsSelected[0] : '';
|
|
5319
|
+
}
|
|
5309
5320
|
}
|
|
5310
5321
|
else {
|
|
5311
|
-
|
|
5322
|
+
const ids = idsSelected.filter(id => !id.startsWith(`select-${this.id}-tag`));
|
|
5323
|
+
const tags = this.state.selection
|
|
5324
|
+
.filter(item => item.item.id.startsWith(`select-${this.id}-tag`))
|
|
5325
|
+
.map(item => item.render.label);
|
|
5326
|
+
if (this.multiple) {
|
|
5327
|
+
this.value = { ids, tags };
|
|
5328
|
+
}
|
|
5329
|
+
else {
|
|
5330
|
+
this.value = { id: ids.length ? ids[0] : '', tag: tags.length ? tags[0] : '' };
|
|
5331
|
+
}
|
|
5312
5332
|
}
|
|
5313
5333
|
this.catChange.emit();
|
|
5314
5334
|
}
|
|
@@ -5329,7 +5349,12 @@ const CatSelect = class {
|
|
|
5329
5349
|
}
|
|
5330
5350
|
onBlur(event) {
|
|
5331
5351
|
if (!this.multiple && this.state.activeOptionIndex >= 0) {
|
|
5332
|
-
this.
|
|
5352
|
+
if (this.tags && this.state.options[this.state.activeOptionIndex].item.id === `select-${this.id}-option-tag`) {
|
|
5353
|
+
this.createTag(this.state.term);
|
|
5354
|
+
}
|
|
5355
|
+
else {
|
|
5356
|
+
this.select(this.state.options[this.state.activeOptionIndex]);
|
|
5357
|
+
}
|
|
5333
5358
|
}
|
|
5334
5359
|
this.hide();
|
|
5335
5360
|
this.patchState({ activeSelectionIndex: -1 });
|
|
@@ -5341,8 +5366,19 @@ const CatSelect = class {
|
|
|
5341
5366
|
if (['ArrowDown', 'ArrowUp', 'ArrowLeft', 'ArrowRight'].includes(event.key)) {
|
|
5342
5367
|
this.onArrowKeyDown(event);
|
|
5343
5368
|
}
|
|
5344
|
-
else if (['Enter', ' '].includes(event.key)) {
|
|
5345
|
-
if (
|
|
5369
|
+
else if (['Enter', ' '].includes(event.key) && isInputFocused) {
|
|
5370
|
+
if (this.tags &&
|
|
5371
|
+
this.state.activeOptionIndex === 0 &&
|
|
5372
|
+
this.state.options[0].item.id === `select-${this.id}-option-tag`) {
|
|
5373
|
+
event.preventDefault();
|
|
5374
|
+
if (this.multiple) {
|
|
5375
|
+
this.toggleTag(this.state.options[0]);
|
|
5376
|
+
}
|
|
5377
|
+
else {
|
|
5378
|
+
this.createTag(this.state.options[0].render.label);
|
|
5379
|
+
}
|
|
5380
|
+
}
|
|
5381
|
+
else if (this.state.activeOptionIndex >= 0) {
|
|
5346
5382
|
event.preventDefault();
|
|
5347
5383
|
if (this.multiple) {
|
|
5348
5384
|
this.toggle(this.state.options[this.state.activeOptionIndex]);
|
|
@@ -5351,6 +5387,9 @@ const CatSelect = class {
|
|
|
5351
5387
|
this.select(this.state.options[this.state.activeOptionIndex]);
|
|
5352
5388
|
}
|
|
5353
5389
|
}
|
|
5390
|
+
else if (this.tags && event.key === 'Enter' && this.state.activeOptionIndex < 0) {
|
|
5391
|
+
this.createTag(this.state.term);
|
|
5392
|
+
}
|
|
5354
5393
|
}
|
|
5355
5394
|
else if (event.key === 'Escape') {
|
|
5356
5395
|
this.hide();
|
|
@@ -5361,11 +5400,6 @@ const CatSelect = class {
|
|
|
5361
5400
|
if (this.state.activeSelectionIndex >= 0) {
|
|
5362
5401
|
this.deselect(this.state.selection[this.state.activeSelectionIndex].item.id);
|
|
5363
5402
|
}
|
|
5364
|
-
else if (this.state.selection.length) {
|
|
5365
|
-
const selectionClone = [...this.state.selection];
|
|
5366
|
-
selectionClone.pop();
|
|
5367
|
-
this.patchState({ selection: selectionClone });
|
|
5368
|
-
}
|
|
5369
5403
|
}
|
|
5370
5404
|
}
|
|
5371
5405
|
else if (event.key === 'Tab') {
|
|
@@ -5374,7 +5408,12 @@ const CatSelect = class {
|
|
|
5374
5408
|
this.patchState({ activeSelectionIndex: -1, activeOptionIndex: -1 });
|
|
5375
5409
|
}
|
|
5376
5410
|
else if (this.state.activeOptionIndex >= 0) {
|
|
5377
|
-
this.
|
|
5411
|
+
if (this.tags && this.state.options[this.state.activeOptionIndex].item.id === `select-${this.id}-option-tag`) {
|
|
5412
|
+
this.createTag(this.state.term);
|
|
5413
|
+
}
|
|
5414
|
+
else {
|
|
5415
|
+
this.select(this.state.options[this.state.activeOptionIndex]);
|
|
5416
|
+
}
|
|
5378
5417
|
}
|
|
5379
5418
|
}
|
|
5380
5419
|
else if (event.key.length === 1) {
|
|
@@ -5412,12 +5451,28 @@ const CatSelect = class {
|
|
|
5412
5451
|
this.subscription = this.term$
|
|
5413
5452
|
.asObservable()
|
|
5414
5453
|
.pipe(debounce(term => (term ? timer(this.debounce) : of(0))), distinctUntilChanged(), tap(() => (number$ = this.more$.pipe(filter(() => !this.state.isLoading), scan(n => n + 1, 0), startWith(0)))), tap(() => this.patchState({ options: [] })), switchMap(term => number$.pipe(tap(() => this.patchState({ isLoading: true })), switchMap(number => this.connectorSafe.retrieve(term, number)), tap(page => this.patchState({ isLoading: false, totalElements: page.totalElements })), takeWhile(page => !page.last, true), scan((items, page) => [...items, ...page.content], []))))
|
|
5415
|
-
.subscribe(items =>
|
|
5416
|
-
|
|
5454
|
+
.subscribe(items => {
|
|
5455
|
+
var _a;
|
|
5456
|
+
const options = items === null || items === void 0 ? void 0 : items.map(item => ({
|
|
5417
5457
|
item,
|
|
5418
5458
|
render: this.connectorSafe.render(item)
|
|
5419
|
-
}))
|
|
5420
|
-
|
|
5459
|
+
}));
|
|
5460
|
+
if (this.tags &&
|
|
5461
|
+
this.state.term.trim().length &&
|
|
5462
|
+
!options.find(value1 => value1.render.label.toLowerCase() === this.state.term.toLowerCase())) {
|
|
5463
|
+
let label;
|
|
5464
|
+
if (this.isAlreadyCreated(this.state.term)) {
|
|
5465
|
+
label = (_a = this.state.selection.find(item => item.render.label.toLowerCase() === this.state.term.toLowerCase())) === null || _a === void 0 ? void 0 : _a.render.label;
|
|
5466
|
+
}
|
|
5467
|
+
options.unshift({
|
|
5468
|
+
item: { id: `select-${this.id}-option-tag` },
|
|
5469
|
+
render: { label: label ? label : this.state.term }
|
|
5470
|
+
});
|
|
5471
|
+
}
|
|
5472
|
+
this.patchState({
|
|
5473
|
+
options
|
|
5474
|
+
});
|
|
5475
|
+
});
|
|
5421
5476
|
}
|
|
5422
5477
|
render() {
|
|
5423
5478
|
return (index.h(index.Host, null, (this.hasSlottedLabel || this.label) && (index.h("label", { htmlFor: this.id, class: { hidden: this.labelHidden } }, index.h("span", { part: "label" }, (this.hasSlottedLabel && index.h("slot", { name: "label" })) || this.label, !this.required && (index.h("span", { class: "input-optional", "aria-hidden": "true" }, "(", this.i18n.t('input.optional'), ")"))))), index.h("div", { class: { 'select-wrapper': true, 'select-disabled': this.disabled }, ref: el => (this.trigger = el), id: this.id, role: "combobox", "aria-expanded": this.state.isOpen || this.isPillboxActive(), "aria-controls": this.isPillboxActive() ? `select-pillbox-${this.id}` : `select-listbox-${this.id}`, "aria-required": this.required, "aria-activedescendant": this.activeDescendant, onClick: e => this.onClick(e) }, index.h("div", { class: "select-wrapper-inner" }, this.multiple && this.state.selection.length ? (index.h("div", { id: `select-pillbox-${this.id}`, role: "listbox", "aria-orientation": "horizontal", class: "select-pills" }, this.state.selection.map((item, i) => (index.h("span", { class: {
|
|
@@ -5427,16 +5482,35 @@ const CatSelect = class {
|
|
|
5427
5482
|
}, role: "option", "aria-selected": "true", id: `select-${this.id}-selection-${i}` }, item.render.avatar ? (index.h("cat-avatar", { label: item.render.label, round: item.render.avatar.round, src: item.render.avatar.src, initials: '' })) : null, index.h("span", null, item.render.label), !this.disabled && (index.h("cat-button", { size: "xs", variant: "text", icon: "16-cross", iconOnly: true, a11yLabel: this.i18n.t('select.deselect'), onClick: () => this.deselect(item.item.id), tabIndex: -1 }))))))) : this.state.selection.length && this.state.selection[0].render.avatar ? (index.h("cat-avatar", { label: this.state.selection[0].render.label, round: this.state.selection[0].render.avatar.round, src: this.state.selection[0].render.avatar.src, initials: '' })) : null, index.h("input", { class: "select-input", ref: el => (this.input = el), "aria-controls": this.isPillboxActive() ? `select-pillbox-${this.id}` : `select-listbox-${this.id}`, "aria-activedescendant": this.activeDescendant, onInput: () => this.onInput(), value: !this.multiple ? this.state.term : undefined, placeholder: this.placeholder, disabled: this.disabled || this.state.isResolving })), this.state.isResolving && index.h("cat-spinner", null), (this.state.selection.length || this.state.term.length) &&
|
|
5428
5483
|
!this.disabled &&
|
|
5429
5484
|
!this.state.isResolving &&
|
|
5430
|
-
this.clearable ? (index.h("cat-button", { id: `select-clear-btn-${this.id}`, iconOnly: true, icon: "cross-circle-outlined", variant: "text", size: "s", a11yLabel: this.i18n.t('input.clear'), onClick: () => this.clear() })) : null, !this.state.isResolving && (index.h("cat-button", { iconOnly: true, icon: "chevron-down-outlined", class: { 'select-btn': true, 'select-btn-open': this.state.isOpen }, variant: "text", size: "s", a11yLabel: this.state.isOpen ? this.i18n.t('select.close') : this.i18n.t('select.open'), "aria-controls": `select-listbox-${this.id}`, "aria-expanded": this.state.isOpen, tabIndex: -1, disabled: this.disabled || this.state.isResolving }))), this.hintSection, index.h("div", { class: "select-dropdown", ref: el => (this.dropdown = el), style: { display: this.state.isOpen ? 'block' : undefined } }, this.state.isOpen && (index.h("cat-scrollable", { class: "select-options-wrapper", scrolledBuffer: 56, noOverflowX: true, noOverscroll: true, noScrolledInit: true, onScrolledBottom: () => this.more$.next() }, index.h("ul", { class: "select-options", role: "listbox", "aria-multiselectable": this.multiple, "aria-setsize": this.state.totalElements, id: `select-listbox-${this.id}` }, this.
|
|
5431
|
-
this.toggle(item);
|
|
5432
|
-
e.stopPropagation();
|
|
5433
|
-
} }, index.h("span", { slot: "label", class: "select-option-inner" }, item.render.avatar ? (index.h("cat-avatar", { label: item.render.label, round: item.render.avatar.round, src: item.render.avatar.src, initials: '' })) : null, index.h("span", { class: "select-option-text" }, index.h("span", { class: "select-option-label" }, item.render.label), index.h("span", { class: "select-option-description" }, item.render.description))))) : (index.h("div", { class: {
|
|
5434
|
-
'select-option-inner': true,
|
|
5435
|
-
'select-option-single': true,
|
|
5436
|
-
'select-option-active': this.state.activeOptionIndex === i
|
|
5437
|
-
}, onFocus: () => { var _a; return (_a = this.input) === null || _a === void 0 ? void 0 : _a.focus(); }, onClick: () => this.select(item), tabIndex: -1 }, item.render.avatar ? (index.h("cat-avatar", { label: item.render.label, round: item.render.avatar.round, src: item.render.avatar.src, initials: '' })) : null, index.h("span", { class: "select-option-text" }, index.h("span", { class: "select-option-label" }, item.render.label), index.h("span", { class: "select-option-description" }, item.render.description))))))), this.state.isLoading
|
|
5485
|
+
this.clearable ? (index.h("cat-button", { id: `select-clear-btn-${this.id}`, iconOnly: true, icon: "cross-circle-outlined", variant: "text", size: "s", a11yLabel: this.i18n.t('input.clear'), onClick: () => this.clear() })) : null, !this.state.isResolving && (index.h("cat-button", { iconOnly: true, icon: "chevron-down-outlined", class: { 'select-btn': true, 'select-btn-open': this.state.isOpen }, variant: "text", size: "s", a11yLabel: this.state.isOpen ? this.i18n.t('select.close') : this.i18n.t('select.open'), "aria-controls": `select-listbox-${this.id}`, "aria-expanded": this.state.isOpen, tabIndex: -1, disabled: this.disabled || this.state.isResolving }))), this.hintSection, index.h("div", { class: "select-dropdown", ref: el => (this.dropdown = el), style: { display: this.state.isOpen ? 'block' : undefined } }, this.state.isOpen && (index.h("cat-scrollable", { class: "select-options-wrapper", scrolledBuffer: 56, noOverflowX: true, noOverscroll: true, noScrolledInit: true, onScrolledBottom: () => this.more$.next() }, index.h("ul", { class: "select-options", role: "listbox", "aria-multiselectable": this.multiple, "aria-setsize": this.state.totalElements, id: `select-listbox-${this.id}` }, this.optionsList, this.state.isLoading
|
|
5438
5486
|
? Array.from(Array(CatSelect.SKELETON_COUNT)).map(() => (index.h("li", { class: "select-option-loading" }, index.h("cat-skeleton", { variant: "body", lines: 1 }), index.h("cat-skeleton", { variant: "body", lines: 1 }))))
|
|
5439
|
-
: !this.state.options.length &&
|
|
5487
|
+
: !this.state.options.length &&
|
|
5488
|
+
!this.tags && index.h("li", { class: "select-option-empty" }, this.i18n.t('select.empty'))))))));
|
|
5489
|
+
}
|
|
5490
|
+
get optionsList() {
|
|
5491
|
+
return this.state.options.map((item, i) => {
|
|
5492
|
+
const isTagOption = this.tags && item.item.id === `select-${this.id}-option-tag`;
|
|
5493
|
+
const getAriaSelected = () => {
|
|
5494
|
+
if (isTagOption) {
|
|
5495
|
+
return this.isAlreadyCreated(item.render.label) ? 'true' : 'false';
|
|
5496
|
+
}
|
|
5497
|
+
return this.isSelected(item.item.id) ? 'true' : 'false';
|
|
5498
|
+
};
|
|
5499
|
+
const getLabel = () => {
|
|
5500
|
+
if (isTagOption) {
|
|
5501
|
+
return item.render.label + this.tagTextHelp;
|
|
5502
|
+
}
|
|
5503
|
+
return item.render.label;
|
|
5504
|
+
};
|
|
5505
|
+
return (index.h("li", { role: "option", class: "select-option", id: `select-${this.id}-option-${i}`, "aria-selected": getAriaSelected() }, this.multiple ? (index.h("cat-checkbox", { class: { 'select-option-active': this.state.activeOptionIndex === i }, checked: !isTagOption ? this.isSelected(item.item.id) : this.isAlreadyCreated(item.render.label), tabIndex: -1, labelLeft: true, onFocus: () => { var _a; return (_a = this.input) === null || _a === void 0 ? void 0 : _a.focus(); }, onCatChange: e => {
|
|
5506
|
+
!isTagOption ? this.toggle(item) : this.toggleTag(item);
|
|
5507
|
+
e.stopPropagation();
|
|
5508
|
+
} }, index.h("span", { slot: "label", class: "select-option-inner" }, item.render.avatar ? (index.h("cat-avatar", { label: item.render.label, round: item.render.avatar.round, src: item.render.avatar.src, initials: '' })) : null, index.h("span", { class: "select-option-text" }, index.h("span", { class: "select-option-label" }, getLabel()), index.h("span", { class: "select-option-description" }, item.render.description))))) : (index.h("div", { class: {
|
|
5509
|
+
'select-option-inner': true,
|
|
5510
|
+
'select-option-single': true,
|
|
5511
|
+
'select-option-active': this.state.activeOptionIndex === i
|
|
5512
|
+
}, onFocus: () => { var _a; return (_a = this.input) === null || _a === void 0 ? void 0 : _a.focus(); }, onClick: () => (isTagOption ? this.createTag(item.render.label) : this.select(item)), tabIndex: -1 }, item.render.avatar ? (index.h("cat-avatar", { label: item.render.label, round: item.render.avatar.round, src: item.render.avatar.src, initials: '' })) : null, index.h("span", { class: "select-option-text" }, index.h("span", { class: "select-option-label" }, getLabel()), index.h("span", { class: "select-option-description" }, item.render.description))))));
|
|
5513
|
+
});
|
|
5440
5514
|
}
|
|
5441
5515
|
get hintSection() {
|
|
5442
5516
|
const hasSlottedHint = !!this.hostElement.querySelector('[slot="hint"]');
|
|
@@ -5449,21 +5523,27 @@ const CatSelect = class {
|
|
|
5449
5523
|
throw new Error('CatSelectConnector not set');
|
|
5450
5524
|
}
|
|
5451
5525
|
resolve() {
|
|
5452
|
-
var _a;
|
|
5453
5526
|
this.patchState({ isResolving: true });
|
|
5454
|
-
|
|
5455
|
-
|
|
5456
|
-
|
|
5457
|
-
|
|
5458
|
-
|
|
5459
|
-
|
|
5460
|
-
|
|
5461
|
-
|
|
5462
|
-
|
|
5463
|
-
|
|
5464
|
-
|
|
5465
|
-
|
|
5466
|
-
|
|
5527
|
+
const ids = this.initIds();
|
|
5528
|
+
let tags;
|
|
5529
|
+
if (this.tags) {
|
|
5530
|
+
tags = this.initTags();
|
|
5531
|
+
}
|
|
5532
|
+
const data$ = ids.length ? this.connectorSafe.resolve(ids).pipe(first()) : of([]);
|
|
5533
|
+
data$.pipe(catchError(() => of([]))).subscribe(items => {
|
|
5534
|
+
const selection = items.length ? items === null || items === void 0 ? void 0 : items.map(item => ({ item, render: this.connectorSafe.render(item) })) : [];
|
|
5535
|
+
if (this.tags) {
|
|
5536
|
+
tags === null || tags === void 0 ? void 0 : tags.forEach((tag, index) => {
|
|
5537
|
+
const item = { id: `select-${this.id}-tag-${index}`, name: tag };
|
|
5538
|
+
selection.push({ item, render: { label: item.name } });
|
|
5539
|
+
});
|
|
5540
|
+
}
|
|
5541
|
+
this.patchState({
|
|
5542
|
+
isResolving: false,
|
|
5543
|
+
selection,
|
|
5544
|
+
term: !this.multiple && selection.length ? selection[0].render.label : ''
|
|
5545
|
+
});
|
|
5546
|
+
});
|
|
5467
5547
|
}
|
|
5468
5548
|
show() {
|
|
5469
5549
|
var _a;
|
|
@@ -5488,7 +5568,6 @@ const CatSelect = class {
|
|
|
5488
5568
|
return this.state.selection.findIndex(s => s.item.id === id) >= 0;
|
|
5489
5569
|
}
|
|
5490
5570
|
select(item) {
|
|
5491
|
-
var _a;
|
|
5492
5571
|
if (!this.isSelected(item.item.id)) {
|
|
5493
5572
|
let newSelection;
|
|
5494
5573
|
if (this.multiple) {
|
|
@@ -5499,11 +5578,13 @@ const CatSelect = class {
|
|
|
5499
5578
|
this.search(item.render.label);
|
|
5500
5579
|
}
|
|
5501
5580
|
this.patchState({ selection: newSelection });
|
|
5581
|
+
if (this.multiple && this.state.term.trim() && this.input) {
|
|
5582
|
+
this.patchState({ term: '', activeOptionIndex: -1 });
|
|
5583
|
+
this.term$.next('');
|
|
5584
|
+
this.input.value = '';
|
|
5585
|
+
}
|
|
5502
5586
|
}
|
|
5503
|
-
|
|
5504
|
-
this.hide();
|
|
5505
|
-
(_a = this.input) === null || _a === void 0 ? void 0 : _a.classList.add('select-input-transparent-caret');
|
|
5506
|
-
}
|
|
5587
|
+
this.setTransparentCaret();
|
|
5507
5588
|
}
|
|
5508
5589
|
deselect(id) {
|
|
5509
5590
|
if (this.isSelected(id)) {
|
|
@@ -5535,6 +5616,9 @@ const CatSelect = class {
|
|
|
5535
5616
|
}
|
|
5536
5617
|
onClick(event) {
|
|
5537
5618
|
var _a, _b;
|
|
5619
|
+
if (this.disabled) {
|
|
5620
|
+
return;
|
|
5621
|
+
}
|
|
5538
5622
|
const elem = event.target;
|
|
5539
5623
|
(_a = this.trigger) === null || _a === void 0 ? void 0 : _a.setAttribute('tabindex', '0');
|
|
5540
5624
|
(_b = this.input) === null || _b === void 0 ? void 0 : _b.focus();
|
|
@@ -5547,7 +5631,12 @@ const CatSelect = class {
|
|
|
5547
5631
|
}
|
|
5548
5632
|
onInput() {
|
|
5549
5633
|
var _a;
|
|
5550
|
-
this.search(((_a = this.input) === null || _a === void 0 ? void 0 : _a.value) || '');
|
|
5634
|
+
this.search(((_a = this.input) === null || _a === void 0 ? void 0 : _a.value.trim()) || '');
|
|
5635
|
+
if (!this.multiple && this.state.selection.length) {
|
|
5636
|
+
const selectionClone = [...this.state.selection];
|
|
5637
|
+
selectionClone.pop();
|
|
5638
|
+
this.patchState({ selection: selectionClone });
|
|
5639
|
+
}
|
|
5551
5640
|
this.show();
|
|
5552
5641
|
}
|
|
5553
5642
|
update() {
|
|
@@ -5585,52 +5674,122 @@ const CatSelect = class {
|
|
|
5585
5674
|
var _a, _b;
|
|
5586
5675
|
let preventDefault = false;
|
|
5587
5676
|
(_a = this.input) === null || _a === void 0 ? void 0 : _a.focus();
|
|
5588
|
-
|
|
5589
|
-
|
|
5590
|
-
this.state.isOpen
|
|
5591
|
-
? this.patchState({
|
|
5592
|
-
activeOptionIndex: Math.min(this.state.activeOptionIndex + 1, this.state.options.length - 1),
|
|
5593
|
-
activeSelectionIndex: -1
|
|
5594
|
-
})
|
|
5595
|
-
: this.show();
|
|
5596
|
-
}
|
|
5597
|
-
else if (event.key === 'ArrowUp') {
|
|
5598
|
-
preventDefault = true;
|
|
5599
|
-
this.state.activeOptionIndex >= 0
|
|
5600
|
-
? this.patchState({
|
|
5601
|
-
activeOptionIndex: Math.max(this.state.activeOptionIndex - 1, -1),
|
|
5602
|
-
activeSelectionIndex: -1
|
|
5603
|
-
})
|
|
5604
|
-
: this.hide();
|
|
5605
|
-
}
|
|
5606
|
-
else if (event.key === 'ArrowLeft') {
|
|
5607
|
-
if (((_b = this.input) === null || _b === void 0 ? void 0 : _b.selectionStart) === 0) {
|
|
5677
|
+
switch (event.key) {
|
|
5678
|
+
case 'ArrowDown':
|
|
5608
5679
|
preventDefault = true;
|
|
5609
|
-
|
|
5610
|
-
|
|
5611
|
-
|
|
5612
|
-
|
|
5613
|
-
|
|
5614
|
-
|
|
5615
|
-
|
|
5616
|
-
|
|
5617
|
-
if (this.state.activeSelectionIndex >= 0) {
|
|
5680
|
+
this.state.isOpen
|
|
5681
|
+
? this.patchState({
|
|
5682
|
+
activeOptionIndex: Math.min(this.state.activeOptionIndex + 1, this.state.options.length - 1),
|
|
5683
|
+
activeSelectionIndex: -1
|
|
5684
|
+
})
|
|
5685
|
+
: this.show();
|
|
5686
|
+
break;
|
|
5687
|
+
case 'ArrowUp':
|
|
5618
5688
|
preventDefault = true;
|
|
5619
|
-
|
|
5620
|
-
|
|
5621
|
-
|
|
5689
|
+
this.state.activeOptionIndex >= 0
|
|
5690
|
+
? this.patchState({
|
|
5691
|
+
activeOptionIndex: Math.max(this.state.activeOptionIndex - 1, -1),
|
|
5692
|
+
activeSelectionIndex: -1
|
|
5693
|
+
})
|
|
5694
|
+
: this.hide();
|
|
5695
|
+
break;
|
|
5696
|
+
case 'ArrowLeft':
|
|
5697
|
+
if (((_b = this.input) === null || _b === void 0 ? void 0 : _b.selectionStart) === 0) {
|
|
5698
|
+
preventDefault = true;
|
|
5699
|
+
let index;
|
|
5700
|
+
this.state.activeSelectionIndex > 0
|
|
5701
|
+
? (index = Math.max(this.state.activeSelectionIndex - 1, -1))
|
|
5702
|
+
: (index = this.state.selection.length - 1);
|
|
5703
|
+
this.patchState({ activeSelectionIndex: index, activeOptionIndex: -1 });
|
|
5622
5704
|
}
|
|
5623
|
-
|
|
5624
|
-
|
|
5705
|
+
break;
|
|
5706
|
+
case 'ArrowRight':
|
|
5707
|
+
if (this.state.activeSelectionIndex >= 0) {
|
|
5708
|
+
preventDefault = true;
|
|
5709
|
+
let index = -1;
|
|
5710
|
+
if (this.state.activeSelectionIndex < this.state.selection.length - 1) {
|
|
5711
|
+
index = Math.min(this.state.activeSelectionIndex + 1, this.state.selection.length - 1);
|
|
5712
|
+
}
|
|
5713
|
+
else if (!this.state.term) {
|
|
5714
|
+
index = 0;
|
|
5715
|
+
}
|
|
5716
|
+
this.patchState({ activeSelectionIndex: index, activeOptionIndex: -1 });
|
|
5625
5717
|
}
|
|
5626
|
-
this.patchState({ activeSelectionIndex: index, activeOptionIndex: -1 });
|
|
5627
|
-
}
|
|
5628
5718
|
}
|
|
5629
5719
|
if (preventDefault) {
|
|
5630
5720
|
event.preventDefault();
|
|
5631
5721
|
event.stopPropagation();
|
|
5632
5722
|
}
|
|
5633
5723
|
}
|
|
5724
|
+
get tagTextHelp() {
|
|
5725
|
+
return this.tagHint && !this.isAlreadyCreated(this.state.term) ? ' (' + this.tagHint + ')' : '';
|
|
5726
|
+
}
|
|
5727
|
+
isAlreadyCreated(term) {
|
|
5728
|
+
return this.state.selection.findIndex(item => item.render.label.toLowerCase() === term.toLowerCase()) >= 0;
|
|
5729
|
+
}
|
|
5730
|
+
createTag(term) {
|
|
5731
|
+
if (term.trim().length && !this.isAlreadyCreated(term)) {
|
|
5732
|
+
const value = this.value;
|
|
5733
|
+
const tags = value === null || value === void 0 ? void 0 : value.tags;
|
|
5734
|
+
const tag = { id: `select-${this.id}-tag-${tags ? tags.length : 0}`, name: term };
|
|
5735
|
+
this.select({ item: tag, render: { label: tag.name } });
|
|
5736
|
+
}
|
|
5737
|
+
this.setTransparentCaret();
|
|
5738
|
+
}
|
|
5739
|
+
initIds() {
|
|
5740
|
+
let ids = [];
|
|
5741
|
+
if (this.value) {
|
|
5742
|
+
if (!this.tags) {
|
|
5743
|
+
if (this.multiple) {
|
|
5744
|
+
ids = this.value;
|
|
5745
|
+
}
|
|
5746
|
+
else {
|
|
5747
|
+
ids = [this.value];
|
|
5748
|
+
}
|
|
5749
|
+
}
|
|
5750
|
+
else {
|
|
5751
|
+
if (this.multiple) {
|
|
5752
|
+
const value = this.value;
|
|
5753
|
+
ids = value.ids ? value.ids : [];
|
|
5754
|
+
}
|
|
5755
|
+
else {
|
|
5756
|
+
const value = this.value;
|
|
5757
|
+
ids = value.id ? [value.id] : [];
|
|
5758
|
+
}
|
|
5759
|
+
}
|
|
5760
|
+
}
|
|
5761
|
+
return ids;
|
|
5762
|
+
}
|
|
5763
|
+
initTags() {
|
|
5764
|
+
let tags = [];
|
|
5765
|
+
if (this.value) {
|
|
5766
|
+
if (this.multiple) {
|
|
5767
|
+
const value = this.value;
|
|
5768
|
+
tags = value.tags ? value.tags : [];
|
|
5769
|
+
}
|
|
5770
|
+
else {
|
|
5771
|
+
const value = this.value;
|
|
5772
|
+
tags = value.tag ? [value.tag] : [];
|
|
5773
|
+
}
|
|
5774
|
+
}
|
|
5775
|
+
return tags;
|
|
5776
|
+
}
|
|
5777
|
+
toggleTag(item) {
|
|
5778
|
+
this.isAlreadyCreated(item.render.label) ? this.removeTag(item.render.label) : this.createTag(item.render.label);
|
|
5779
|
+
}
|
|
5780
|
+
removeTag(label) {
|
|
5781
|
+
if (this.isAlreadyCreated(label)) {
|
|
5782
|
+
const item = this.state.selection.find(item => item.render.label.toLowerCase() === label.toLowerCase());
|
|
5783
|
+
item && this.deselect(item.item.id);
|
|
5784
|
+
}
|
|
5785
|
+
}
|
|
5786
|
+
setTransparentCaret() {
|
|
5787
|
+
var _a;
|
|
5788
|
+
if (!this.multiple) {
|
|
5789
|
+
this.hide();
|
|
5790
|
+
(_a = this.input) === null || _a === void 0 ? void 0 : _a.classList.add('select-input-transparent-caret');
|
|
5791
|
+
}
|
|
5792
|
+
}
|
|
5634
5793
|
get hostElement() { return index.getElement(this); }
|
|
5635
5794
|
static get watchers() { return {
|
|
5636
5795
|
"connector": ["onConnectorChange"],
|
|
@@ -5646,7 +5805,7 @@ const CatSelectTest = class {
|
|
|
5646
5805
|
index.registerInstance(this, hostRef);
|
|
5647
5806
|
}
|
|
5648
5807
|
componentDidLoad() {
|
|
5649
|
-
var _a, _b, _c, _d;
|
|
5808
|
+
var _a, _b, _c, _d, _e, _f;
|
|
5650
5809
|
(_a = this.multipleSelect) === null || _a === void 0 ? void 0 : _a.connect({
|
|
5651
5810
|
resolve: (ids) => {
|
|
5652
5811
|
console.info(`Resolving data... (${ids.join(', ')})`);
|
|
@@ -5711,31 +5870,45 @@ const CatSelectTest = class {
|
|
|
5711
5870
|
}
|
|
5712
5871
|
})
|
|
5713
5872
|
});
|
|
5714
|
-
(_c = this.
|
|
5873
|
+
(_c = this.multipleSelectTagging) === null || _c === void 0 ? void 0 : _c.connect(this.countryConnector);
|
|
5874
|
+
(_d = this.singleSelect) === null || _d === void 0 ? void 0 : _d.connect({
|
|
5715
5875
|
resolve: (ids) => {
|
|
5716
5876
|
console.info(`Resolving data... (${ids.join(', ')})`);
|
|
5717
|
-
return of(ids.map(id =>
|
|
5877
|
+
return of(ids.map(id => ({
|
|
5878
|
+
id,
|
|
5879
|
+
firstName: 'John',
|
|
5880
|
+
lastName: `Doe (${id})`,
|
|
5881
|
+
desc: 'resolved'
|
|
5882
|
+
}))).pipe(delay(500));
|
|
5718
5883
|
},
|
|
5719
5884
|
retrieve: (term, page) => {
|
|
5720
5885
|
console.info(`Retrieving data... ("${term}", ${page})`);
|
|
5721
|
-
|
|
5722
|
-
|
|
5723
|
-
|
|
5724
|
-
|
|
5725
|
-
|
|
5726
|
-
|
|
5727
|
-
|
|
5728
|
-
|
|
5729
|
-
|
|
5730
|
-
|
|
5731
|
-
|
|
5886
|
+
return term === 'no'
|
|
5887
|
+
? of({ last: true, content: [], totalElements: 0 })
|
|
5888
|
+
: of({
|
|
5889
|
+
last: false,
|
|
5890
|
+
totalElements: 10000,
|
|
5891
|
+
content: Array.from({ length: 10 }, (_, i) => ({
|
|
5892
|
+
id: '' + (i + page * 10),
|
|
5893
|
+
firstName: 'John',
|
|
5894
|
+
lastName: `Doe (${i + page * 10})`,
|
|
5895
|
+
desc: `"${term}": page ${page}`
|
|
5896
|
+
}))
|
|
5897
|
+
}).pipe(delay(500));
|
|
5732
5898
|
},
|
|
5733
|
-
render: (
|
|
5734
|
-
label:
|
|
5735
|
-
description:
|
|
5899
|
+
render: (user) => ({
|
|
5900
|
+
label: `${user.firstName} ${user.lastName}`,
|
|
5901
|
+
description: user.desc
|
|
5736
5902
|
})
|
|
5737
5903
|
});
|
|
5738
|
-
(
|
|
5904
|
+
(_e = this.singleSelectAvatar) === null || _e === void 0 ? void 0 : _e.connect(this.countryConnector);
|
|
5905
|
+
(_f = this.singleSelectTagging) === null || _f === void 0 ? void 0 : _f.connect(this.countryConnector);
|
|
5906
|
+
}
|
|
5907
|
+
render() {
|
|
5908
|
+
return (index.h(index.Host, { style: { display: 'flex', flexDirection: 'column' } }, index.h("cat-select", { label: "Multiple Select", hint: "This is a hint!", ref: el => (this.multipleSelect = el), value: ['1'], placeholder: "Hello World", onCatBlur: e => console.log('Multiple blur', e), multiple: true, clearable: true }, index.h("span", { slot: "hint" }, "Searching for \"no\" -", '>', " no options are returned!")), index.h("cat-select", { label: "Multiple with img", ref: el => (this.multipleSelectAvatar = el), value: ['1'], placeholder: "Hello World", multiple: true, clearable: true }), index.h("cat-select", { label: "Multiple with tagging support", hint: "This is a hint!", ref: el => (this.multipleSelectTagging = el), value: { ids: ['1'], tags: ['Test'] }, placeholder: "Select country", onCatChange: () => { var _a; return console.log((_a = this.multipleSelectTagging) === null || _a === void 0 ? void 0 : _a.value); }, multiple: true, tags: true, clearable: true }), index.h("cat-select", { label: "Single Select", hint: "This is a hint!", ref: el => (this.singleSelect = el), placeholder: "Search for a country or capital", onCatBlur: e => console.log('Single blur', e), clearable: true }), index.h("cat-select", { label: "Single with img", ref: el => (this.singleSelectAvatar = el), value: '1', placeholder: "Search for a country or capital", clearable: true }), index.h("cat-select", { label: "Single with tagging support", ref: el => (this.singleSelectTagging = el), value: { id: '1', tag: '' }, placeholder: "Search for a country or capital", onCatChange: () => { var _a; return console.log('Single', (_a = this.singleSelectTagging) === null || _a === void 0 ? void 0 : _a.value); }, tagHint: "new country", tags: true, clearable: true })));
|
|
5909
|
+
}
|
|
5910
|
+
get countryConnector() {
|
|
5911
|
+
return {
|
|
5739
5912
|
resolve: (ids) => {
|
|
5740
5913
|
console.info(`Resolving data... (${ids.join(', ')})`);
|
|
5741
5914
|
return of(ids.map(id => countries.find(value => value.id === id))).pipe(delay(500));
|
|
@@ -5762,10 +5935,7 @@ const CatSelectTest = class {
|
|
|
5762
5935
|
round: true
|
|
5763
5936
|
}
|
|
5764
5937
|
})
|
|
5765
|
-
}
|
|
5766
|
-
}
|
|
5767
|
-
render() {
|
|
5768
|
-
return (index.h(index.Host, { style: { display: 'flex', flexDirection: 'column' } }, index.h("cat-select", { label: "Multiple Select", hint: "This is a hint!", ref: el => (this.multipleSelect = el), value: ['1'], placeholder: "Hello World", onCatChange: e => console.log('Multiple', e), onCatBlur: e => console.log('Multiple blur', e), multiple: true, clearable: true }, index.h("span", { slot: "hint" }, "Searching for \"no\" -", '>', " no options are returned!")), index.h("cat-select", { label: "Multiple with img", ref: el => (this.multipleSelectAvatar = el), value: ['1'], placeholder: "Hello World", multiple: true, clearable: true }), index.h("cat-select", { label: "Single Select", hint: "This is a hint!", ref: el => (this.singleSelect = el), value: '1', placeholder: "Search for a country or capital", onCatChange: e => console.log('Single', e), onCatBlur: e => console.log('Single blur', e), clearable: true }), index.h("cat-select", { label: "Single with img", ref: el => (this.singleSelectAvatar = el), value: '1', placeholder: "Search for a country or capital", clearable: true })));
|
|
5938
|
+
};
|
|
5769
5939
|
}
|
|
5770
5940
|
};
|
|
5771
5941
|
const countries = [
|
|
@@ -7381,7 +7551,7 @@ CatToggle.style = catToggleCss;
|
|
|
7381
7551
|
|
|
7382
7552
|
const isTouchDevice = 'ontouchstart' in window || navigator.maxTouchPoints > 0;
|
|
7383
7553
|
|
|
7384
|
-
const catTooltipCss = ":host{display:contents}:host([hidden]){display:none}.tooltip{position:absolute;font-size:0.875rem;line-height:1rem;font-weight:500;
|
|
7554
|
+
const catTooltipCss = ":host{display:contents}:host([hidden]){display:none}.tooltip{position:absolute;font-size:0.875rem;line-height:1rem;font-weight:500;background-color:black;border-radius:0.25rem;color:white;transition:opacity 0.25s linear, visibility 0.25s linear;visibility:hidden;opacity:0;box-shadow:rgba(0, 0, 0, 0.08) 0 1px 8px 0;z-index:200;max-width:20rem}.tooltip-show{opacity:1;visibility:visible}.tooltip-round{border-radius:10rem}.tooltip-s{padding:0.375rem 0.5rem}.tooltip-s.tooltip-round{padding:0.375rem 0.75rem}.tooltip-m{padding:0.75rem}.tooltip-m.tooltip-round{padding:0.75rem 1rem}.tooltip-l{padding:1rem}.tooltip-l.tooltip-round{padding:1rem 1.5rem}.tooltip-trigger{display:inline-block}.tooltip-trigger:focus{outline:none}";
|
|
7385
7555
|
|
|
7386
7556
|
let nextUniqueId = 0;
|
|
7387
7557
|
const CatTooltip = class {
|
|
@@ -7401,10 +7571,18 @@ const CatTooltip = class {
|
|
|
7401
7571
|
* The placement of the tooltip.
|
|
7402
7572
|
*/
|
|
7403
7573
|
this.placement = 'top';
|
|
7574
|
+
/**
|
|
7575
|
+
* Use round tooltip edges.
|
|
7576
|
+
*/
|
|
7577
|
+
this.round = false;
|
|
7578
|
+
/**
|
|
7579
|
+
* The size of the tooltip.
|
|
7580
|
+
*/
|
|
7581
|
+
this.size = 'm';
|
|
7404
7582
|
/**
|
|
7405
7583
|
* The delay time for showing tooltip in ms.
|
|
7406
7584
|
*/
|
|
7407
|
-
this.showDelay =
|
|
7585
|
+
this.showDelay = 250;
|
|
7408
7586
|
/**
|
|
7409
7587
|
* The delay time for hiding tooltip in ms.
|
|
7410
7588
|
*/
|
|
@@ -7453,7 +7631,11 @@ const CatTooltip = class {
|
|
|
7453
7631
|
}
|
|
7454
7632
|
}
|
|
7455
7633
|
render() {
|
|
7456
|
-
return (index.h(index.Host, null, index.h("div", { ref: el => (this.triggerElement = el), "aria-describedby": this.id, class: "tooltip-trigger" }, index.h("slot", null)), this.content && !this.disabled && (index.h("div", { ref: el => (this.tooltip = el), id: this.id, class:
|
|
7634
|
+
return (index.h(index.Host, null, index.h("div", { ref: el => (this.triggerElement = el), "aria-describedby": this.id, class: "tooltip-trigger" }, index.h("slot", null)), this.content && !this.disabled && (index.h("div", { ref: el => (this.tooltip = el), id: this.id, class: {
|
|
7635
|
+
tooltip: true,
|
|
7636
|
+
'tooltip-round': this.round,
|
|
7637
|
+
[`tooltip-${this.size}`]: Boolean(this.size)
|
|
7638
|
+
} }, this.content))));
|
|
7457
7639
|
}
|
|
7458
7640
|
get isTabbable() {
|
|
7459
7641
|
return firstTabbable(this.trigger);
|