UNPKG

@visa/nova-angular

Version:

Visa Product Design System Nova Angular library

146 lines 15.9 kB
/** * Copyright (c) 2025 Visa, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * **/ import { computed, ContentChild, Directive, HostBinding, Input, signal } from '@angular/core'; import { UUIDService } from '../_utilities/services/uuid.service'; import { ListboxDirective } from '../listbox/listbox.directive'; import * as i0 from "@angular/core"; import * as i1 from "../_utilities/services/uuid.service"; export class ListboxContainerDirective { /** * Provides custom class(es) for custom styling. * @default .v-listbox-container */ get class() { return [ this._class, 'v-listbox-container', this._invalid ? 'v-listbox-error' : '', this._disabled ? 'v-listbox-disabled' : '' ].join(' '); } set class(value) { this._class = value; } get hostClass() { return this.class; } get hostRole() { if (this._isRoleListboxVariant() && !this.role) { this.role = 'listbox'; } return this.role; } get hostAriaMultiselectable() { if (this._multiselect && this._isRoleListboxVariant()) { return 'true'; } } get hostAriaInvalid() { return this._invalid ? 'true' : null; } get hostAriaRequired() { return this._required ? 'true' : null; } get hostAriaActiveDescendant() { if (this.ariaActiveDescendant() && !this._inCombobox) { return this.ariaActiveDescendant(); } } get hostId() { return this.id; } constructor(uuidService) { this.uuidService = uuidService; this._disabled = false; this._invalid = false; this._isRoleListboxVariant = signal(null); this._class = ''; this._multiselect = false; this._required = false; this._inCombobox = false; /** * Aria attribute relaying what active element the listbox container refers to. * @builtin true */ this.ariaActiveDescendant = signal(null); /** * Sets custom id. * @default uuidService.getUUID('v-listbox-container-') * @builtin true */ this.id = this.uuidService.getUUID('v-listbox-container-'); } ngAfterContentInit() { if (this.listbox) { this._multiselect = this.listbox.multiselect; this._required = this.listbox.required; this._disabled = this.listbox.disabled; this._invalid = this.listbox.invalid; this._inCombobox = this.listbox._inCombobox; // update invalid and disabled classes based on listbox this.listbox.communicateState.subscribe((state) => { this._disabled = state.disabled; this._invalid = state.invalid; }); this._isRoleListboxVariant = computed(() => this.listbox?._isRoleListboxVariant()); this.ariaActiveDescendant = computed(() => this.listbox?.ariaActiveDescendant()); } } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ListboxContainerDirective, deps: [{ token: i1.UUIDService }], target: i0.ɵɵFactoryTarget.Directive }); } static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: ListboxContainerDirective, isStandalone: true, selector: "[v-listbox-container] ", inputs: { class: "class", role: "role", ariaActiveDescendant: ["aria-activedescendant", "ariaActiveDescendant"], id: "id" }, host: { properties: { "class": "this.hostClass", "attr.role": "this.hostRole", "attr.aria-multiselectable": "this.hostAriaMultiselectable", "attr.aria-invalid": "this.hostAriaInvalid", "attr.aria-required": "this.hostAriaRequired", "attr.aria-activedescendant": "this.hostAriaActiveDescendant", "attr.id": "this.hostId" } }, queries: [{ propertyName: "listbox", first: true, predicate: ListboxDirective, descendants: true }], ngImport: i0 }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ListboxContainerDirective, decorators: [{ type: Directive, args: [{ standalone: true, selector: '[v-listbox-container] ' }] }], ctorParameters: () => [{ type: i1.UUIDService }], propDecorators: { listbox: [{ type: ContentChild, args: [ListboxDirective] }], class: [{ type: Input }], hostClass: [{ type: HostBinding, args: ['class'] }], role: [{ type: Input }], hostRole: [{ type: HostBinding, args: ['attr.role'] }], hostAriaMultiselectable: [{ type: HostBinding, args: ['attr.aria-multiselectable'] }], hostAriaInvalid: [{ type: HostBinding, args: ['attr.aria-invalid'] }], hostAriaRequired: [{ type: HostBinding, args: ['attr.aria-required'] }], ariaActiveDescendant: [{ type: Input, args: ['aria-activedescendant'] }], hostAriaActiveDescendant: [{ type: HostBinding, args: ['attr.aria-activedescendant'] }], id: [{ type: Input }], hostId: [{ type: HostBinding, args: ['attr.id'] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdGJveC1jb250YWluZXIuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9ub3ZhLWxpYi9zcmMvbGliL2xpc3Rib3gtY29udGFpbmVyL2xpc3Rib3gtY29udGFpbmVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0lBZUk7QUFDSixPQUFPLEVBQW9CLFFBQVEsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hILE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7O0FBTWhFLE1BQU0sT0FBTyx5QkFBeUI7SUFLcEM7OztPQUdHO0lBQ0gsSUFDSSxLQUFLO1FBQ1AsT0FBTztZQUNMLElBQUksQ0FBQyxNQUFNO1lBQ1gscUJBQXFCO1lBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3RDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxFQUFFO1NBQzNDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2QsQ0FBQztJQUNELElBQUksS0FBSyxDQUFDLEtBQWE7UUFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQ0ksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBU0QsSUFDSSxRQUFRO1FBQ1YsSUFBSSxJQUFJLENBQUMscUJBQXFCLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUMvQyxJQUFJLENBQUMsSUFBSSxHQUFH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SUFBSTtvQkFDaEIsUUFBUSxFQUFFLHdCQUF3QjtpQkFDbkM7Z0ZBRWlDLE9BQU87c0JBQXRDLFlBQVk7dUJBQUMsZ0JBQWdCO2dCQVMxQixLQUFLO3NCQURSLEtBQUs7Z0JBY0YsU0FBUztzQkFEWixXQUFXO3VCQUFDLE9BQU87Z0JBV1gsSUFBSTtzQkFBWixLQUFLO2dCQUVGLFFBQVE7c0JBRFgsV0FBVzt1QkFBQyxXQUFXO2dCQVVwQix1QkFBdUI7c0JBRDFCLFdBQVc7dUJBQUMsMkJBQTJCO2dCQVFwQyxlQUFlO3NCQURsQixXQUFXO3VCQUFDLG1CQUFtQjtnQkFPNUIsZ0JBQWdCO3NCQURuQixXQUFXO3VCQUFDLG9CQUFvQjtnQkFVRCxvQkFBb0I7c0JBQW5ELEtBQUs7dUJBQUMsdUJBQXVCO2dCQUUxQix3QkFBd0I7c0JBRDNCLFdBQVc7dUJBQUMsNEJBQTRCO2dCQWF6QyxFQUFFO3NCQURELEtBQUs7Z0JBR0YsTUFBTTtzQkFEVCxXQUFXO3VCQUFDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICAgICAgICAgICAgICBDb3B5cmlnaHQgKGMpIDIwMjUgVmlzYSwgSW5jLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKlxuICoqL1xuaW1wb3J0IHsgQWZ0ZXJDb250ZW50SW5pdCwgY29tcHV0ZWQsIENvbnRlbnRDaGlsZCwgRGlyZWN0aXZlLCBIb3N0QmluZGluZywgSW5wdXQsIFNpZ25hbCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBVVUlEU2VydmljZSB9IGZyb20gJy4uL191dGlsaXRpZXMvc2VydmljZXMvdXVpZC5zZXJ2aWNlJztcbmltcG9ydCB7IExpc3Rib3hEaXJlY3RpdmUgfSBmcm9tICcuLi9saXN0Ym94L2xpc3Rib3guZGlyZWN0aXZlJztcblxuQERpcmVjdGl2ZSh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnW3YtbGlzdGJveC1jb250YWluZXJdICdcbn0pXG5leHBvcnQgY2xhc3MgTGlzdGJveENvbnRhaW5lckRpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQge1xuICBAQ29udGVudENoaWxkKExpc3Rib3hEaXJlY3RpdmUpIGxpc3Rib3g6IExpc3Rib3hEaXJlY3RpdmU7XG4gIF9kaXNhYmxlZCA9IGZhbHNlO1xuICBfaW52YWxpZCA9IGZhbHNlO1xuICBfaXNSb2xlTGlzdGJveFZhcmlhbnQ6IFNpZ25hbDxib29sZWFuIHwgbnVsbD4gPSBzaWduYWwobnVsbCk7XG4gIC8qKlxuICAgKiBQcm92aWRlcyBjdXN0b20gY2xhc3MmIzQwO2VzJiM0MTsgZm9yIGN1c3RvbSBzdHlsaW5nLlxuICAgKiBAZGVmYXVsdCAudi1saXN0Ym94LWNvbnRhaW5lclxuICAgKi9cbiAgQElucHV0KClcbiAgZ2V0IGNsYXNzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHRoaXMuX2NsYXNzLFxuICAgICAgJ3YtbGlzdGJveC1jb250YWluZXInLFxuICAgICAgdGhpcy5faW52YWxpZCA/ICd2LWxpc3Rib3gtZXJyb3InIDogJycsXG4gICAgICB0aGlzLl9kaXNhYmxlZCA/ICd2LWxpc3Rib3gtZGlzYWJsZWQnIDogJydcbiAgICBdLmpvaW4oJyAnKTtcbiAgfVxuICBzZXQgY2xhc3ModmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX2NsYXNzID0gdmFsdWU7XG4gIH1cbiAgX2NsYXNzOiBzdHJpbmcgPSAnJztcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIGdldCBob3N0Q2xhc3MoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5jbGFzcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIGN1c3RvbSByb2xlLlxuICAgKiBAZGVmYXVsdCAnbGlzdGJveCcgaWYgbm8gY2hpbGQgbGlzdCBpdGVtIGNvbnRhaW5zIGEgY2hpbGQgcmFkaW8gb3IgY2hlY2tib3guXG4gICAqIEBkZWZhdWx0IG5vdCBwcmVzZW50IGlmIGNoaWxkIGxpc3QgaXRlbSBjb250YWlucyBhIGNoaWxkIHJhZGlvIG9yIGNoZWNrYm94LlxuICAgKiBAYnVpbHRpbiB0cnVlXG4gICAqL1xuICBASW5wdXQoKSByb2xlOiBzdHJpbmc7XG4gIEBIb3N0QmluZGluZygnYXR0ci5yb2xlJylcbiAgZ2V0IGhvc3RSb2xlKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuX2lzUm9sZUxpc3Rib3hWYXJpYW50KCkgJiYgIXRoaXMucm9sZSkge1xuICAgICAgdGhpcy5yb2xlID0gJ2xpc3Rib3gnO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5yb2xlO1xuICB9XG5cbiAgX211bHRpc2VsZWN0ID0gZmFsc2U7XG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLW11bHRpc2VsZWN0YWJsZScpXG4gIGdldCBob3N0QXJpYU11bHRpc2VsZWN0YWJsZSgpOiBzdHJpbmcgfCB2b2lkIHtcbiAgICBpZiAodGhpcy5fbXVsdGlzZWxlY3QgJiYgdGhpcy5faXNSb2xlTGlzdGJveFZhcmlhbnQoKSkge1xuICAgICAgcmV0dXJuICd0cnVlJztcbiAgICB9XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1pbnZhbGlkJylcbiAgZ2V0IGhvc3RBcmlhSW52YWxpZCgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5faW52YWxpZCA/ICd0cnVlJyA6IG51bGw7XG4gIH1cblxuICBfcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtcmVxdWlyZWQnKVxuICBnZXQgaG9zdEFyaWFSZXF1aXJlZCgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fcmVxdWlyZWQgPyAndHJ1ZScgOiBudWxsO1xuICB9XG5cbiAgX2luQ29tYm9ib3ggPSBmYWxzZTtcbiAgLyoqXG4gICAqIEFyaWEgYXR0cmlidXRlIHJlbGF5aW5nIHdoYXQgYWN0aXZlIGVsZW1lbnQgdGhlIGxpc3Rib3ggY29udGFpbmVyIHJlZmVycyB0by5cbiAgICogQGJ1aWx0aW4gdHJ1ZVxuICAgKi9cbiAgQElucHV0KCdhcmlhLWFjdGl2ZWRlc2NlbmRhbnQnKSBhcmlhQWN0aXZlRGVzY2VuZGFudDogU2lnbmFsPHN0cmluZyB8IG51bGw+ID0gc2lnbmFsKG51bGwpO1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1hY3RpdmVkZXNjZW5kYW50JylcbiAgZ2V0IGhvc3RBcmlhQWN0aXZlRGVzY2VuZGFudCgpOiBzdHJpbmcgfCBudWxsIHwgdm9pZCB7XG4gICAgaWYgKHRoaXMuYXJpYUFjdGl2ZURlc2NlbmRhbnQoKSAmJiAhdGhpcy5faW5Db21ib2JveCkge1xuICAgICAgcmV0dXJuIHRoaXMuYXJpYUFjdGl2ZURlc2NlbmRhbnQoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0cyBjdXN0b20gaWQuXG4gICAqIEBkZWZhdWx0IHV1aWRTZXJ2aWNlLmdldFVVSUQoJ3YtbGlzdGJveC1jb250YWluZXItJylcbiAgICogQGJ1aWx0aW4gdHJ1ZVxuICAgKi9cbiAgQElucHV0KClcbiAgaWQ6IHN0cmluZyA9IHRoaXMudXVpZFNlcnZpY2UuZ2V0VVVJRCgndi1saXN0Ym94LWNvbnRhaW5lci0nKTtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmlkJylcbiAgZ2V0IGhvc3RJZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmlkO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSB1dWlkU2VydmljZTogVVVJRFNlcnZpY2UpIHt9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmxpc3Rib3gpIHtcbiAgICAgIHRoaXMuX211bHRpc2VsZWN0ID0gdGhpcy5saXN0Ym94Lm11bHRpc2VsZWN0O1xuICAgICAgdGhpcy5fcmVxdWlyZWQgPSB0aGlzLmxpc3Rib3gucmVxdWlyZWQ7XG4gICAgICB0aGlzLl9kaXNhYmxlZCA9IHRoaXMubGlzdGJveC5kaXNhYmxlZDtcbiAgICAgIHRoaXMuX2ludmFsaWQgPSB0aGlzLmxpc3Rib3guaW52YWxpZDtcbiAgICAgIHRoaXMuX2luQ29tYm9ib3ggPSB0aGlzLmxpc3Rib3guX2luQ29tYm9ib3g7XG4gICAgICAvLyB1cGRhdGUgaW52YWxpZCBhbmQgZGlzYWJsZWQgY2xhc3NlcyBiYXNlZCBvbiBsaXN0Ym94XG4gICAgICB0aGlzLmxpc3Rib3guY29tbXVuaWNhdGVTdGF0ZS5zdWJzY3JpYmUoKHN0YXRlKSA9PiB7XG4gICAgICAgIHRoaXMuX2Rpc2FibGVkID0gc3RhdGUuZGlzYWJsZWQ7XG4gICAgICAgIHRoaXMuX2ludmFsaWQgPSBzdGF0ZS5pbnZhbGlkO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuX2lzUm9sZUxpc3Rib3hWYXJpYW50ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5saXN0Ym94Py5faXNSb2xlTGlzdGJveFZhcmlhbnQoKSk7XG4gICAgICB0aGlzLmFyaWFBY3RpdmVEZXNjZW5kYW50ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5saXN0Ym94Py5hcmlhQWN0aXZlRGVzY2VuZGFudCgpKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==