UNPKG

@clr/angular

Version:

Angular components for Clarity

81 lines 9.66 kB
/* * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved. * This software is released under MIT license. * The full license information can be found in LICENSE in the root directory of this project. */ export class MultiSelectComboboxModel { containsItem(item) { return this.model ? this.model.includes(item) : false; } select(item) { this.addItem(item); } unselect(item) { this.removeItem(item); } isEmpty() { return !(this.model && this.model.length > 0); } pop() { let item; if (this.model && this.model.length > 0) { item = this.model[this.model.length - 1]; this.removeItem(item); } return item; } toString(displayField, index = -1) { let displayString = ''; if (this.model) { // If the model is array, we can use a specific item from it, to retrieve the display value. if (index > -1) { if (this.model[index]) { // If we have a defined display field, we'll use it's value as display value if (displayField && this.model[index][displayField]) { displayString += this.model[index][displayField]; } else { // If we don't have a defined display field, we'll use the toString representation of the // item as display value. displayString += this.model[index].toString(); } } } else { this.model.forEach((model) => { // If we have a defined display field, we'll use it's value as display value if (displayField && model[displayField]) { displayString += model[displayField]; } else { // If we don't have a defined display field, we'll use the toString representation of the // model as display value. displayString += model.toString(); } displayString += ' '; }); } } return displayString.trim(); } addItem(item) { if (!this.containsItem(item)) { this.model = this.model || []; this.model.push(item); } } removeItem(item) { if (this.model === null || this.model === undefined) { return; } const index = this.model.indexOf(item); if (index > -1) { this.model.splice(index, 1); } // we intentionally set the model to null for form validation if (this.model.length === 0) { this.model = null; } } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktc2VsZWN0LWNvbWJvYm94Lm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvZm9ybXMvY29tYm9ib3gvbW9kZWwvbXVsdGktc2VsZWN0LWNvbWJvYm94Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFJSCxNQUFNLE9BQU8sd0JBQXdCO0lBR25DLFlBQVksQ0FBQyxJQUFPO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUN4RCxDQUFDO0lBRUQsTUFBTSxDQUFDLElBQU87UUFDWixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxRQUFRLENBQUMsSUFBTztRQUNkLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVELE9BQU87UUFDTCxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxHQUFHO1FBQ0QsSUFBSSxJQUFJLENBQUM7UUFDVCxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3ZDLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3pDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDdkI7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxRQUFRLENBQUMsWUFBcUIsRUFBRSxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ3hDLElBQUksYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUV2QixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDZCw0RkFBNEY7WUFDNUYsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLEVBQUU7Z0JBQ2QsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFO29CQUNyQiw0RUFBNEU7b0JBQzVFLElBQUksWUFBWSxJQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFTLENBQUMsWUFBWSxDQUFDLEVBQUU7d0JBQzVELGFBQWEsSUFBSyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDO3FCQUMzRDt5QkFBTTt3QkFDTCx5RkFBeUY7d0JBQ3pGLHlCQUF5Qjt3QkFDekIsYUFBYSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7cUJBQy9DO2lCQUNGO2FBQ0Y7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFRLEVBQUUsRUFBRTtvQkFDOUIsNEVBQTRFO29CQUM1RSxJQUFJLFlBQVksSUFBSyxLQUFhLENBQUMsWUFBWSxDQUFDLEVBQUU7d0JBQ2hELGFBQWEsSUFBSyxLQUFhLENBQUMsWUFBWSxDQUFDLENBQUM7cUJBQy9DO3lCQUFNO3dCQUNMLHlGQUF5Rjt3QkFDekYsMEJBQTBCO3dCQUMxQixhQUFhLElBQUksS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO3FCQUNuQztvQkFDRCxhQUFhLElBQUksR0FBRyxDQUFDO2dCQUN2QixDQUFDLENBQUMsQ0FBQzthQUNKO1NBQ0Y7UUFFRCxPQUFPLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRU8sT0FBTyxDQUFDLElBQU87UUFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDNUIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUM5QixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN2QjtJQUNILENBQUM7SUFFTyxVQUFVLENBQUMsSUFBTztRQUN4QixJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssU0FBUyxFQUFFO1lBQ25ELE9BQU87U0FDUjtRQUVELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXZDLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUFFO1lBQ2QsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQzdCO1FBRUQsNkRBQTZEO1FBQzdELElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQzNCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1NBQ25CO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxNi0yMDIzIFZNd2FyZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciBNSVQgbGljZW5zZS5cbiAqIFRoZSBmdWxsIGxpY2Vuc2UgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kIGluIExJQ0VOU0UgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgcHJvamVjdC5cbiAqL1xuXG5pbXBvcnQgeyBDb21ib2JveE1vZGVsIH0gZnJvbSAnLi9jb21ib2JveC5tb2RlbCc7XG5cbmV4cG9ydCBjbGFzcyBNdWx0aVNlbGVjdENvbWJvYm94TW9kZWw8VD4gaW1wbGVtZW50cyBDb21ib2JveE1vZGVsPFQ+IHtcbiAgbW9kZWw6IFRbXTtcblxuICBjb250YWluc0l0ZW0oaXRlbTogVCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm1vZGVsID8gdGhpcy5tb2RlbC5pbmNsdWRlcyhpdGVtKSA6IGZhbHNlO1xuICB9XG5cbiAgc2VsZWN0KGl0ZW06IFQpOiB2b2lkIHtcbiAgICB0aGlzLmFkZEl0ZW0oaXRlbSk7XG4gIH1cblxuICB1bnNlbGVjdChpdGVtOiBUKTogdm9pZCB7XG4gICAgdGhpcy5yZW1vdmVJdGVtKGl0ZW0pO1xuICB9XG5cbiAgaXNFbXB0eSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISh0aGlzLm1vZGVsICYmIHRoaXMubW9kZWwubGVuZ3RoID4gMCk7XG4gIH1cblxuICBwb3AoKTogVCB7XG4gICAgbGV0IGl0ZW07XG4gICAgaWYgKHRoaXMubW9kZWwgJiYgdGhpcy5tb2RlbC5sZW5ndGggPiAwKSB7XG4gICAgICBpdGVtID0gdGhpcy5tb2RlbFt0aGlzLm1vZGVsLmxlbmd0aCAtIDFdO1xuICAgICAgdGhpcy5yZW1vdmVJdGVtKGl0ZW0pO1xuICAgIH1cbiAgICByZXR1cm4gaXRlbTtcbiAgfVxuXG4gIHRvU3RyaW5nKGRpc3BsYXlGaWVsZD86IHN0cmluZywgaW5kZXggPSAtMSk6IHN0cmluZyB7XG4gICAgbGV0IGRpc3BsYXlTdHJpbmcgPSAnJztcblxuICAgIGlmICh0aGlzLm1vZGVsKSB7XG4gICAgICAvLyBJZiB0aGUgbW9kZWwgaXMgYXJyYXksIHdlIGNhbiB1c2UgYSBzcGVjaWZpYyBpdGVtIGZyb20gaXQsIHRvIHJldHJpZXZlIHRoZSBkaXNwbGF5IHZhbHVlLlxuICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgaWYgKHRoaXMubW9kZWxbaW5kZXhdKSB7XG4gICAgICAgICAgLy8gSWYgd2UgaGF2ZSBhIGRlZmluZWQgZGlzcGxheSBmaWVsZCwgd2UnbGwgdXNlIGl0J3MgdmFsdWUgYXMgZGlzcGxheSB2YWx1ZVxuICAgICAgICAgIGlmIChkaXNwbGF5RmllbGQgJiYgKHRoaXMubW9kZWxbaW5kZXhdIGFzIGFueSlbZGlzcGxheUZpZWxkXSkge1xuICAgICAgICAgICAgZGlzcGxheVN0cmluZyArPSAodGhpcy5tb2RlbFtpbmRleF0gYXMgYW55KVtkaXNwbGF5RmllbGRdO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBJZiB3ZSBkb24ndCBoYXZlIGEgZGVmaW5lZCBkaXNwbGF5IGZpZWxkLCB3ZSdsbCB1c2UgdGhlIHRvU3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZVxuICAgICAgICAgICAgLy8gaXRlbSBhcyBkaXNwbGF5IHZhbHVlLlxuICAgICAgICAgICAgZGlzcGxheVN0cmluZyArPSB0aGlzLm1vZGVsW2luZGV4XS50b1N0cmluZygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5tb2RlbC5mb3JFYWNoKChtb2RlbDogVCkgPT4ge1xuICAgICAgICAgIC8vIElmIHdlIGhhdmUgYSBkZWZpbmVkIGRpc3BsYXkgZmllbGQsIHdlJ2xsIHVzZSBpdCdzIHZhbHVlIGFzIGRpc3BsYXkgdmFsdWVcbiAgICAgICAgICBpZiAoZGlzcGxheUZpZWxkICYmIChtb2RlbCBhcyBhbnkpW2Rpc3BsYXlGaWVsZF0pIHtcbiAgICAgICAgICAgIGRpc3BsYXlTdHJpbmcgKz0gKG1vZGVsIGFzIGFueSlbZGlzcGxheUZpZWxkXTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gSWYgd2UgZG9uJ3QgaGF2ZSBhIGRlZmluZWQgZGlzcGxheSBmaWVsZCwgd2UnbGwgdXNlIHRoZSB0b1N0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGVcbiAgICAgICAgICAgIC8vIG1vZGVsIGFzIGRpc3BsYXkgdmFsdWUuXG4gICAgICAgICAgICBkaXNwbGF5U3RyaW5nICs9IG1vZGVsLnRvU3RyaW5nKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGRpc3BsYXlTdHJpbmcgKz0gJyAnO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZGlzcGxheVN0cmluZy50cmltKCk7XG4gIH1cblxuICBwcml2YXRlIGFkZEl0ZW0oaXRlbTogVCkge1xuICAgIGlmICghdGhpcy5jb250YWluc0l0ZW0oaXRlbSkpIHtcbiAgICAgIHRoaXMubW9kZWwgPSB0aGlzLm1vZGVsIHx8IFtdO1xuICAgICAgdGhpcy5tb2RlbC5wdXNoKGl0ZW0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlSXRlbShpdGVtOiBUKSB7XG4gICAgaWYgKHRoaXMubW9kZWwgPT09IG51bGwgfHwgdGhpcy5tb2RlbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaW5kZXggPSB0aGlzLm1vZGVsLmluZGV4T2YoaXRlbSk7XG5cbiAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgdGhpcy5tb2RlbC5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH1cblxuICAgIC8vIHdlIGludGVudGlvbmFsbHkgc2V0IHRoZSBtb2RlbCB0byBudWxsIGZvciBmb3JtIHZhbGlkYXRpb25cbiAgICBpZiAodGhpcy5tb2RlbC5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMubW9kZWwgPSBudWxsO1xuICAgIH1cbiAgfVxufVxuIl19