UNPKG

@visa/nova-angular

Version:

Visa Product Design System Nova Angular library

77 lines 9.01 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 { coerceBooleanProperty } from '@angular/cdk/coercion'; import { ContentChild, Directive, EventEmitter, Input, Output } from '@angular/core'; import { ButtonDirective } from '../button/button.directive'; import * as i0 from "@angular/core"; /** * Directive for creating a disclosure tab item. This directive is used in conjunction with the `v-tab-item` directive. <br /> * It is used to create a tab item that can be expanded or collapsed. This item cannot be set as active. */ export class TabItemDisclosureDirective { /** * Sets expanded state of disclosure tab item. * @default false */ get expanded() { return this._expanded; } set expanded(value) { this._expanded = coerceBooleanProperty(value); } constructor() { this._expanded = false; /** * Emits expanded state when the child button is clicked. */ this.disclosureTabToggled = new EventEmitter(); } ngAfterContentInit() { if (this.button) { this.button.ariaExpanded = this.expanded; if (this.button.toggleIconComponent) { if (this.button.toggleIconComponent.rotatedTemplate) this.button.toggleIconComponent.rotated = this.expanded; } this.button.clicked.subscribe((event) => { this.expanded = !this.expanded; this.button.ariaExpanded = this.expanded; if (this.button.toggleIconComponent) this.button.toggleIconComponent.rotated = this.expanded; this.disclosureTabToggled.emit(this.expanded); }); } } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TabItemDisclosureDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); } static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: TabItemDisclosureDirective, isStandalone: true, selector: "[v-tab-item][disclosureTab]", inputs: { expanded: "expanded" }, outputs: { disclosureTabToggled: "disclosureTabToggled" }, queries: [{ propertyName: "button", first: true, predicate: ButtonDirective, descendants: true }], ngImport: i0 }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TabItemDisclosureDirective, decorators: [{ type: Directive, args: [{ standalone: true, // tslint:disable-next-line:directive-selector selector: '[v-tab-item][disclosureTab]' }] }], ctorParameters: () => [], propDecorators: { button: [{ type: ContentChild, args: [ButtonDirective] }], expanded: [{ type: Input }], disclosureTabToggled: [{ type: Output }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzY2xvc3VyZS10YWItaXRlbS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25vdmEtbGliL3NyYy9saWIvZGlzY2xvc3VyZS10YWItaXRlbS9kaXNjbG9zdXJlLXRhYi1pdGVtLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0lBZUk7QUFDSixPQUFPLEVBQWdCLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUUsT0FBTyxFQUFvQixZQUFZLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFFN0Q7OztHQUdHO0FBTUgsTUFBTSxPQUFPLDBCQUEwQjtJQUdyQzs7O09BR0c7SUFDSCxJQUNJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUNELElBQUksUUFBUSxDQUFDLEtBQW1CO1FBQzlCLElBQUksQ0FBQyxTQUFTLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQVFEO1FBUEEsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUUzQjs7V0FFRztRQUNPLHlCQUFvQixHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7SUFFOUMsQ0FBQztJQUVoQixrQkFBa0I7UUFDaEIsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUV6QyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztnQkFDcEMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLGVBQWU7b0JBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUMvRyxDQUFDO1lBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ3RDLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO2dCQUMvQixJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO2dCQUN6QyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsbUJBQW1CO29CQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7Z0JBQzdGLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2hELENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7K0dBdENVLDBCQUEwQjttR0FBMUIsMEJBQTBCLHdOQUN2QixlQUFlOzs0RkFEbEIsMEJBQTBCO2tCQUx0QyxTQUFTO21CQUFDO29CQUNULFVBQVUsRUFBRSxJQUFJO29CQUNoQiw4Q0FBOEM7b0JBQzlDLFFBQVEsRUFBRSw2QkFBNkI7aUJBQ3hDO3dEQUVnQyxNQUFNO3NCQUFwQyxZQUFZO3VCQUFDLGVBQWU7Z0JBT3pCLFFBQVE7c0JBRFgsS0FBSztnQkFZSSxvQkFBb0I7c0JBQTdCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICAgICAgICAgICAgICBDb3B5cmlnaHQgKGMpIDIwMjUgVmlzYSwgSW5jLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKlxuICoqL1xuaW1wb3J0IHsgQm9vbGVhbklucHV0LCBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgQWZ0ZXJDb250ZW50SW5pdCwgQ29udGVudENoaWxkLCBEaXJlY3RpdmUsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQnV0dG9uRGlyZWN0aXZlIH0gZnJvbSAnLi4vYnV0dG9uL2J1dHRvbi5kaXJlY3RpdmUnO1xuXG4vKipcbiAqIERpcmVjdGl2ZSBmb3IgY3JlYXRpbmcgYSBkaXNjbG9zdXJlIHRhYiBpdGVtLiBUaGlzIGRpcmVjdGl2ZSBpcyB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlIGB2LXRhYi1pdGVtYCBkaXJlY3RpdmUuIDxiciAvPlxuICogSXQgaXMgdXNlZCB0byBjcmVhdGUgYSB0YWIgaXRlbSB0aGF0IGNhbiBiZSBleHBhbmRlZCBvciBjb2xsYXBzZWQuIFRoaXMgaXRlbSBjYW5ub3QgYmUgc2V0IGFzIGFjdGl2ZS5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpkaXJlY3RpdmUtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdbdi10YWItaXRlbV1bZGlzY2xvc3VyZVRhYl0nXG59KVxuZXhwb3J0IGNsYXNzIFRhYkl0ZW1EaXNjbG9zdXJlRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCB7XG4gIEBDb250ZW50Q2hpbGQoQnV0dG9uRGlyZWN0aXZlKSBidXR0b246IEJ1dHRvbkRpcmVjdGl2ZTtcblxuICAvKipcbiAgICogU2V0cyBleHBhbmRlZCBzdGF0ZSBvZiBkaXNjbG9zdXJlIHRhYiBpdGVtLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgZ2V0IGV4cGFuZGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9leHBhbmRlZDtcbiAgfVxuICBzZXQgZXhwYW5kZWQodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgIHRoaXMuX2V4cGFuZGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgfVxuICBfZXhwYW5kZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogRW1pdHMgZXhwYW5kZWQgc3RhdGUgd2hlbiB0aGUgY2hpbGQgYnV0dG9uIGlzIGNsaWNrZWQuXG4gICAqL1xuICBAT3V0cHV0KCkgZGlzY2xvc3VyZVRhYlRvZ2dsZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5idXR0b24pIHtcbiAgICAgIHRoaXMuYnV0dG9uLmFyaWFFeHBhbmRlZCA9IHRoaXMuZXhwYW5kZWQ7XG5cbiAgICAgIGlmICh0aGlzLmJ1dHRvbi50b2dnbGVJY29uQ29tcG9uZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmJ1dHRvbi50b2dnbGVJY29uQ29tcG9uZW50LnJvdGF0ZWRUZW1wbGF0ZSkgdGhpcy5idXR0b24udG9nZ2xlSWNvbkNvbXBvbmVudC5yb3RhdGVkID0gdGhpcy5leHBhbmRlZDtcbiAgICAgIH1cblxuICAgICAgdGhpcy5idXR0b24uY2xpY2tlZC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgIHRoaXMuZXhwYW5kZWQgPSAhdGhpcy5leHBhbmRlZDtcbiAgICAgICAgdGhpcy5idXR0b24uYXJpYUV4cGFuZGVkID0gdGhpcy5leHBhbmRlZDtcbiAgICAgICAgaWYgKHRoaXMuYnV0dG9uLnRvZ2dsZUljb25Db21wb25lbnQpIHRoaXMuYnV0dG9uLnRvZ2dsZUljb25Db21wb25lbnQucm90YXRlZCA9IHRoaXMuZXhwYW5kZWQ7XG4gICAgICAgIHRoaXMuZGlzY2xvc3VyZVRhYlRvZ2dsZWQuZW1pdCh0aGlzLmV4cGFuZGVkKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIl19