@visa/nova-angular
Version:
Visa Product Design System Nova Angular library
146 lines • 15.9 kB
JavaScript
/**
* 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==