UNPKG

@visa/nova-angular

Version:

Visa Product Design System Nova Angular library

133 lines 14.4 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 { ChangeDetectorRef, ContentChildren, Directive, HostBinding, Input, QueryList } from '@angular/core'; import { NovaLibService } from '../nova-lib.service'; import { TabListDirective } from '../tab-list/tab-list.directive'; import * as i0 from "@angular/core"; import * as i1 from "../nova-lib.service"; export class NavDirective { /** * Provides custom class(es) for custom styling. * @default .v-nav */ get class() { return [ this._class, 'v-nav', this.vertical ? 'v-nav-vertical' : 'v-nav-horizontal', this.drawer ? 'v-nav-drawer' : '' ].join(' '); } set class(value) { this._class = value; } get hostClass() { return this.class; } /** * Sets navigation to vertical orientation when true. * @default false */ get vertical() { return this._vertical; } set vertical(value) { this._vertical = coerceBooleanProperty(value); } /** * Sets navigation to drawer variation when true. * @default false */ get drawer() { return this._drawer; } set drawer(value) { this._drawer = coerceBooleanProperty(value); } constructor(cdRef, novaLibService) { this.cdRef = cdRef; this.novaLibService = novaLibService; this._class = ''; this._vertical = false; this._drawer = false; } ngAfterContentInit() { if (this.tabLists) { if (this.tabLists.length > 0) { this.setUpTabLists(); this.tabLists.changes.subscribe(() => { this.setUpTabLists(); }); } } } setUpTabLists() { // for all instances of TabListDirective this.tabLists.forEach((list) => { list._inNav = true; list.role = list._roleSetByUser ? list.role : null; if (list.tabs) { if (list.tabs.length > 0) { this.setUpTabs(list); } list.tabs.changes.subscribe(() => { this.setUpTabs(list); }); } this.cdRef.detectChanges(); }); } setUpTabs(list) { if (list.buttons) { // remove arrow key navigation from tabs as links (in navigation) this.novaLibService.resetNavigationBehaviors(list.buttons.toArray()); } // tabs = array of TabItemDirective list.tabs.forEach((tab) => { tab.role = tab._roleSetByUser && !tab._roleSetByTab ? tab.role : null; if (tab.button) { tab.button._isInNavOrNested = true; tab.button.role = tab.button._roleSetByUser && !tab.button._roleSetByTab ? tab.button.role : null; } this.cdRef.detectChanges(); }); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NavDirective, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.NovaLibService }], target: i0.ɵɵFactoryTarget.Directive }); } static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: NavDirective, isStandalone: true, selector: "[v-nav]", inputs: { class: "class", vertical: "vertical", drawer: "drawer" }, host: { properties: { "class": "this.hostClass" } }, queries: [{ propertyName: "tabLists", predicate: TabListDirective, descendants: true }], ngImport: i0 }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NavDirective, decorators: [{ type: Directive, args: [{ standalone: true, // tslint:disable-next-line:directive-selector selector: '[v-nav]' }] }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.NovaLibService }], propDecorators: { tabLists: [{ type: ContentChildren, args: [TabListDirective, { descendants: true }] }], class: [{ type: Input }], hostClass: [{ type: HostBinding, args: ['class'] }], vertical: [{ type: Input }], drawer: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbm92YS1saWIvc3JjL2xpYi9uYXYvbmF2LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0lBZUk7QUFDSixPQUFPLEVBQWdCLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUUsT0FBTyxFQUVMLGlCQUFpQixFQUNqQixlQUFlLEVBQ2YsU0FBUyxFQUNULFdBQVcsRUFDWCxLQUFLLEVBQ0wsU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVyRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7O0FBT2xFLE1BQU0sT0FBTyxZQUFZO0lBRXZCOzs7T0FHRztJQUNILElBQ0ksS0FBSztRQUNQLE9BQU87WUFDTCxJQUFJLENBQUMsTUFBTTtZQUNYLE9BQU87WUFDUCxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsa0JBQWtCO1lBQ3JELElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsRUFBRTtTQUNsQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNkLENBQUM7SUFDRCxJQUFJLEtBQUssQ0FBQyxLQUFhO1FBQ3JCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxJQUNJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQ0ksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBQ0QsSUFBSSxRQUFRLENBQUMsS0FBbUI7UUFDOUIsSUFBSSxD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QUMsSUFBSSxDQUFDO1lBQ3BHLENBQUM7WUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzdCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzsrR0FyR1UsWUFBWTttR0FBWixZQUFZLHFOQUNOLGdCQUFnQjs7NEZBRHRCLFlBQVk7a0JBTHhCLFNBQVM7bUJBQUM7b0JBQ1QsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLDhDQUE4QztvQkFDOUMsUUFBUSxFQUFFLFNBQVM7aUJBQ3BCO21IQUUyRCxRQUFRO3NCQUFqRSxlQUFlO3VCQUFDLGdCQUFnQixFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRTtnQkFNcEQsS0FBSztzQkFEUixLQUFLO2dCQWNGLFNBQVM7c0JBRFosV0FBVzt1QkFBQyxPQUFPO2dCQVVoQixRQUFRO3NCQURYLEtBQUs7Z0JBY0YsTUFBTTtzQkFEVCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiAgICAgICAgICAgICAgQ29weXJpZ2h0IChjKSAyMDI1IFZpc2EsIEluYy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICpcbiAqKi9cbmltcG9ydCB7IEJvb2xlYW5JbnB1dCwgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIERpcmVjdGl2ZSxcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBRdWVyeUxpc3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOb3ZhTGliU2VydmljZSB9IGZyb20gJy4uL25vdmEtbGliLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGFiSXRlbURpcmVjdGl2ZSB9IGZyb20gJy4uL3RhYi1pdGVtL3RhYi1pdGVtLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBUYWJMaXN0RGlyZWN0aXZlIH0gZnJvbSAnLi4vdGFiLWxpc3QvdGFiLWxpc3QuZGlyZWN0aXZlJztcblxuQERpcmVjdGl2ZSh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpkaXJlY3RpdmUtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdbdi1uYXZdJ1xufSlcbmV4cG9ydCBjbGFzcyBOYXZEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0IHtcbiAgQENvbnRlbnRDaGlsZHJlbihUYWJMaXN0RGlyZWN0aXZlLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pIHRhYkxpc3RzOiBRdWVyeUxpc3Q8VGFiTGlzdERpcmVjdGl2ZT47XG4gIC8qKlxuICAgKiBQcm92aWRlcyBjdXN0b20gY2xhc3MmIzQwO2VzJiM0MTsgZm9yIGN1c3RvbSBzdHlsaW5nLlxuICAgKiBAZGVmYXVsdCAudi1uYXZcbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCBjbGFzcygpOiBzdHJpbmcge1xuICAgIHJldHVybiBbXG4gICAgICB0aGlzLl9jbGFzcyxcbiAgICAgICd2LW5hdicsXG4gICAgICB0aGlzLnZlcnRpY2FsID8gJ3YtbmF2LXZlcnRpY2FsJyA6ICd2LW5hdi1ob3Jpem9udGFsJyxcbiAgICAgIHRoaXMuZHJhd2VyID8gJ3YtbmF2LWRyYXdlcicgOiAnJ1xuICAgIF0uam9pbignICcpO1xuICB9XG4gIHNldCBjbGFzcyh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fY2xhc3MgPSB2YWx1ZTtcbiAgfVxuICBfY2xhc3M6IHN0cmluZyA9ICcnO1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgZ2V0IGhvc3RDbGFzcygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmNsYXNzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgbmF2aWdhdGlvbiB0byB2ZXJ0aWNhbCBvcmllbnRhdGlvbiB3aGVuIHRydWUuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKVxuICBnZXQgdmVydGljYWwoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3ZlcnRpY2FsO1xuICB9XG4gIHNldCB2ZXJ0aWNhbCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgdGhpcy5fdmVydGljYWwgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG4gIF92ZXJ0aWNhbDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBTZXRzIG5hdmlnYXRpb24gdG8gZHJhd2VyIHZhcmlhdGlvbiB3aGVuIHRydWUuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKVxuICBnZXQgZHJhd2VyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9kcmF3ZXI7XG4gIH1cbiAgc2V0IGRyYXdlcih2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgdGhpcy5fZHJhd2VyID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgfVxuICBfZHJhd2VyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBub3ZhTGliU2VydmljZTogTm92YUxpYlNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50YWJMaXN0cykge1xuICAgICAgaWYgKHRoaXMudGFiTGlzdHMubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLnNldFVwVGFiTGlzdHMoKTtcblxuICAgICAgICB0aGlzLnRhYkxpc3RzLmNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLnNldFVwVGFiTGlzdHMoKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2V0VXBUYWJMaXN0cygpIHtcbiAgICAvLyBmb3IgYWxsIGluc3RhbmNlcyBvZiBUYWJMaXN0RGlyZWN0aXZlXG4gICAgdGhpcy50YWJMaXN0cy5mb3JFYWNoKChsaXN0KSA9PiB7XG4gICAgICBsaXN0Ll9pbk5hdiA9IHRydWU7XG4gICAgICBsaXN0LnJvbGUgPSBsaXN0Ll9yb2xlU2V0QnlVc2VyID8gbGlzdC5yb2xlIDogbnVsbDtcblxuICAgICAgaWYgKGxpc3QudGFicykge1xuICAgICAgICBpZiAobGlzdC50YWJzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICB0aGlzLnNldFVwVGFicyhsaXN0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxpc3QudGFicy5jaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5zZXRVcFRhYnMobGlzdCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSk7XG4gIH1cblxuICBzZXRVcFRhYnMobGlzdDogVGFiTGlzdERpcmVjdGl2ZSkge1xuICAgIGlmIChsaXN0LmJ1dHRvbnMpIHtcbiAgICAgIC8vIHJlbW92ZSBhcnJvdyBrZXkgbmF2aWdhdGlvbiBmcm9tIHRhYnMgYXMgbGlua3MgKGluIG5hdmlnYXRpb24pXG4gICAgICB0aGlzLm5vdmFMaWJTZXJ2aWNlLnJlc2V0TmF2aWdhdGlvbkJlaGF2aW9ycyhsaXN0LmJ1dHRvbnMudG9BcnJheSgpKTtcbiAgICB9XG4gICAgLy8gdGFicyA9IGFycmF5IG9mIFRhYkl0ZW1EaXJlY3RpdmVcbiAgICBsaXN0LnRhYnMuZm9yRWFjaCgodGFiOiBUYWJJdGVtRGlyZWN0aXZlKSA9PiB7XG4gICAgICB0YWIucm9sZSA9IHRhYi5fcm9sZVNldEJ5VXNlciAmJiAhdGFiLl9yb2xlU2V0QnlUYWIgPyB0YWIucm9sZSA6IG51bGw7XG5cbiAgICAgIGlmICh0YWIuYnV0dG9uKSB7XG4gICAgICAgIHRhYi5idXR0b24uX2lzSW5OYXZPck5lc3RlZCA9IHRydWU7XG4gICAgICAgIHRhYi5idXR0b24ucm9sZSA9IHRhYi5idXR0b24uX3JvbGVTZXRCeVVzZXIgJiYgIXRhYi5idXR0b24uX3JvbGVTZXRCeVRhYiA/IHRhYi5idXR0b24ucm9sZSA6IG51bGw7XG4gICAgICB9XG4gICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9KTtcbiAgfVxufVxuIl19