@nova-ui/bits
Version:
SolarWinds Nova Framework
117 lines • 14.8 kB
JavaScript
// © 2022 SolarWinds Worldwide, LLC. All rights reserved.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to
// deal in the Software without restriction, including without limitation the
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
// sell copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
import { ChangeDetectorRef, Component, ElementRef, forwardRef, Input, Optional, ViewChild, ViewEncapsulation, } from "@angular/core";
import { MenuActionType } from "../../public-api";
import { MenuGroupComponent } from "../menu-group/menu-group.component";
import { MenuItemBaseComponent } from "../menu-item/menu-item-base";
import * as i0 from "@angular/core";
import * as i1 from "../menu-group/menu-group.component";
import * as i2 from "@angular/common";
import * as i3 from "../../../icon/icon.component";
/**
* @ignore
*/
/**
* Menu item component which is needed to perform action on click event
*/
export class MenuActionComponent extends MenuItemBaseComponent {
constructor(group, cd) {
super(group, cd);
this.group = group;
this.disabled = false;
}
handleClick(event) {
event.preventDefault();
if (this.disabled) {
event.stopPropagation();
}
else {
this.actionDone.emit();
}
}
getIconColor() {
return this.type === "destructive" ? "red" : "";
}
doAction(event) {
this.handleClick(event);
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MenuActionComponent, deps: [{ token: i1.MenuGroupComponent, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MenuActionComponent, selector: "nui-menu-action", inputs: { icon: "icon", type: "type" }, host: { attributes: { "role": "menuitem" } }, providers: [
{
provide: MenuItemBaseComponent,
useExisting: forwardRef(() => MenuActionComponent),
},
], viewQueries: [{ propertyName: "menuItem", first: true, predicate: ["menuAction"], descendants: true }], usesInheritance: true, ngImport: i0, template: `
<a
class="nui-menu-item__action nui-menu-item__link"
href="#"
role="button"
(click)="handleClick($event)"
[]="'nui-menu-item__action-' + type"
tabindex="-1"
title
>
<nui-icon
*ngIf="icon"
[]="icon"
[]="getIconColor()"
></nui-icon>
<ng-content></ng-content>
</a>
`, isInline: true, styles: [".nui-menu .nui-menu-item .nui-menu-item__action,.nui-menu-popup-host .nui-menu-item .nui-menu-item__action,.nui-menu-popup .nui-menu-item .nui-menu-item__action{color:var(--nui-color-text-link,#0079aa)}.nui-menu .nui-menu-item .nui-menu-item__action:hover,.nui-menu-popup-host .nui-menu-item .nui-menu-item__action:hover,.nui-menu-popup .nui-menu-item .nui-menu-item__action:hover{text-decoration:none}.nui-menu .nui-menu-item .nui-menu-item__action-destructive,.nui-menu-popup-host .nui-menu-item .nui-menu-item__action-destructive,.nui-menu-popup .nui-menu-item .nui-menu-item__action-destructive{color:var(--nui-color-text-critical,#dd2c00)}.nui-menu .nui-menu-item.nui-menu-item--disabled>.nui-menu-item__action,.nui-menu-popup-host .nui-menu-item.nui-menu-item--disabled>.nui-menu-item__action,.nui-menu-popup .nui-menu-item.nui-menu-item--disabled>.nui-menu-item__action{color:var(--nui-color-off,#4d4d4d)}.nui-menu .nui-menu-item.nui-menu-item--disabled>.nui-menu-item__action:hover,.nui-menu-popup-host .nui-menu-item.nui-menu-item--disabled>.nui-menu-item__action:hover,.nui-menu-popup .nui-menu-item.nui-menu-item--disabled>.nui-menu-item__action:hover{cursor:not-allowed}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.IconComponent, selector: "nui-icon", inputs: ["iconColor", "brushType", "iconHoverColor", "iconSize", "cssClass", "fillContainer", "status", "childStatus", "icon", "counter"] }], encapsulation: i0.ViewEncapsulation.None }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MenuActionComponent, decorators: [{
type: Component,
args: [{ selector: "nui-menu-action", template: `
<a
class="nui-menu-item__action nui-menu-item__link"
href="#"
role="button"
(click)="handleClick($event)"
[]="'nui-menu-item__action-' + type"
tabindex="-1"
title
>
<nui-icon
*ngIf="icon"
[]="icon"
[]="getIconColor()"
></nui-icon>
<ng-content></ng-content>
</a>
`, providers: [
{
provide: MenuItemBaseComponent,
useExisting: forwardRef(() => MenuActionComponent),
},
], encapsulation: ViewEncapsulation.None, host: { role: "menuitem" }, styles: [".nui-menu .nui-menu-item .nui-menu-item__action,.nui-menu-popup-host .nui-menu-item .nui-menu-item__action,.nui-menu-popup .nui-menu-item .nui-menu-item__action{color:var(--nui-color-text-link,#0079aa)}.nui-menu .nui-menu-item .nui-menu-item__action:hover,.nui-menu-popup-host .nui-menu-item .nui-menu-item__action:hover,.nui-menu-popup .nui-menu-item .nui-menu-item__action:hover{text-decoration:none}.nui-menu .nui-menu-item .nui-menu-item__action-destructive,.nui-menu-popup-host .nui-menu-item .nui-menu-item__action-destructive,.nui-menu-popup .nui-menu-item .nui-menu-item__action-destructive{color:var(--nui-color-text-critical,#dd2c00)}.nui-menu .nui-menu-item.nui-menu-item--disabled>.nui-menu-item__action,.nui-menu-popup-host .nui-menu-item.nui-menu-item--disabled>.nui-menu-item__action,.nui-menu-popup .nui-menu-item.nui-menu-item--disabled>.nui-menu-item__action{color:var(--nui-color-off,#4d4d4d)}.nui-menu .nui-menu-item.nui-menu-item--disabled>.nui-menu-item__action:hover,.nui-menu-popup-host .nui-menu-item.nui-menu-item--disabled>.nui-menu-item__action:hover,.nui-menu-popup .nui-menu-item.nui-menu-item--disabled>.nui-menu-item__action:hover{cursor:not-allowed}\n"] }]
}], ctorParameters: () => [{ type: i1.MenuGroupComponent, decorators: [{
type: Optional
}] }, { type: i0.ChangeDetectorRef }], propDecorators: { icon: [{
type: Input
}], type: [{
type: Input
}], menuItem: [{
type: ViewChild,
args: ["menuAction"]
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1hY3Rpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9tZW51L21lbnUtaXRlbS9tZW51LWFjdGlvbi9tZW51LWFjdGlvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEseURBQXlEO0FBQ3pELEVBQUU7QUFDRiwrRUFBK0U7QUFDL0UsNEVBQTRFO0FBQzVFLDhFQUE4RTtBQUM5RSwrRUFBK0U7QUFDL0UsOEVBQThFO0FBQzlFLDREQUE0RDtBQUM1RCxFQUFFO0FBQ0YsNkVBQTZFO0FBQzdFLHVEQUF1RDtBQUN2RCxFQUFFO0FBQ0YsNkVBQTZFO0FBQzdFLDRFQUE0RTtBQUM1RSwrRUFBK0U7QUFDL0UsMEVBQTBFO0FBQzFFLGlGQUFpRjtBQUNqRiw2RUFBNkU7QUFDN0UsaUJBQWlCO0FBRWpCLE9BQU8sRUFDSCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixVQUFVLEVBQ1YsS0FBSyxFQUNMLFFBQVEsRUFDUixTQUFTLEVBQ1QsaUJBQWlCLEdBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7QUFFcEU7O0dBRUc7QUFFSDs7R0FFRztBQWdDSCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEscUJBQXFCO0lBVTFELFlBQ3lCLEtBQXlCLEVBQzlDLEVBQXFCO1FBRXJCLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFISSxVQUFLLEdBQUwsS0FBSyxDQUFvQjtRQUs5QyxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUMxQixDQUFDO0lBRU0sV0FBVyxDQUFDLEtBQWlCO1FBQ2hDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDZixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7U0FDM0I7YUFBTTtZQUNILElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDMUI7SUFDTCxDQUFDO0lBRU0sWUFBWTtRQUNmLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxhQUFhLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3BELENBQUM7SUFFTSxRQUFRLENBQUMsS0FBVTtRQUN0QixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVCLENBQUM7K0dBbENRLG1CQUFtQjttR0FBbkIsbUJBQW1CLGdJQVZqQjtZQUNQO2dCQUNJLE9BQU8sRUFBRSxxQkFBcUI7Z0JBQzlCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsbUJBQW1CLENBQUM7YUFDckQ7U0FDSix5SkF4QlM7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQWtCVDs7NEZBV1EsbUJBQW1CO2tCQS9CL0IsU0FBUzsrQkFDSSxpQkFBaUIsWUFDakI7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQWtCVCxhQUNVO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSxxQkFBcUI7NEJBQzlCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLG9CQUFvQixDQUFDO3lCQUNyRDtxQkFDSixpQkFFYyxpQkFBaUIsQ0FBQyxJQUFJLFFBQy9CLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTs7MEJBYXJCLFFBQVE7eUVBUEcsSUFBSTtzQkFBbkIsS0FBSztnQkFFVSxJQUFJO3NCQUFuQixLQUFLO2dCQUVtQixRQUFRO3NCQUFoQyxTQUFTO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyIvLyDCqSAyMDIyIFNvbGFyV2luZHMgV29ybGR3aWRlLCBMTEMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvXG4vLyAgZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGVcbi8vICByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Jcbi8vICBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vICBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyAgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyAgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyAgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyAgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBmb3J3YXJkUmVmLFxuICAgIElucHV0LFxuICAgIE9wdGlvbmFsLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcblxuaW1wb3J0IHsgTWVudUFjdGlvblR5cGUgfSBmcm9tIFwiLi4vLi4vcHVibGljLWFwaVwiO1xuaW1wb3J0IHsgTWVudUdyb3VwQ29tcG9uZW50IH0gZnJvbSBcIi4uL21lbnUtZ3JvdXAvbWVudS1ncm91cC5jb21wb25lbnRcIjtcbmltcG9ydCB7IE1lbnVJdGVtQmFzZUNvbXBvbmVudCB9IGZyb20gXCIuLi9tZW51LWl0ZW0vbWVudS1pdGVtLWJhc2VcIjtcblxuLyoqXG4gKiBAaWdub3JlXG4gKi9cblxuLyoqXG4gKiBNZW51IGl0ZW0gY29tcG9uZW50IHdoaWNoIGlzIG5lZWRlZCB0byBwZXJmb3JtIGFjdGlvbiBvbiBjbGljayBldmVudFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogXCJudWktbWVudS1hY3Rpb25cIixcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8YVxuICAgICAgICAgICAgY2xhc3M9XCJudWktbWVudS1pdGVtX19hY3Rpb24gbnVpLW1lbnUtaXRlbV9fbGlua1wiXG4gICAgICAgICAgICBocmVmPVwiI1wiXG4gICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVDbGljaygkZXZlbnQpXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIidudWktbWVudS1pdGVtX19hY3Rpb24tJyArIHR5cGVcIlxuICAgICAgICAgICAgI21lbnVBY3Rpb25cbiAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgdGl0bGVcbiAgICAgICAgPlxuICAgICAgICAgICAgPG51aS1pY29uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJpY29uXCJcbiAgICAgICAgICAgICAgICBbaWNvbl09XCJpY29uXCJcbiAgICAgICAgICAgICAgICBbaWNvbkNvbG9yXT1cImdldEljb25Db2xvcigpXCJcbiAgICAgICAgICAgID48L251aS1pY29uPlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgICA8L2E+XG4gICAgYCxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTWVudUl0ZW1CYXNlQ29tcG9uZW50LFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTWVudUFjdGlvbkNvbXBvbmVudCksXG4gICAgICAgIH0sXG4gICAgXSxcbiAgICBzdHlsZVVybHM6IFtcIi4vbWVudS1hY3Rpb24uY29tcG9uZW50Lmxlc3NcIl0sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBob3N0OiB7IHJvbGU6IFwibWVudWl0ZW1cIiB9LFxufSlcbmV4cG9ydCBjbGFzcyBNZW51QWN0aW9uQ29tcG9uZW50IGV4dGVuZHMgTWVudUl0ZW1CYXNlQ29tcG9uZW50IHtcbiAgICAvKipcbiAgICAgKiBBZGRzIGljb24gYnkgc3BlY2lmaWVkIGljb24gbmFtZVxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBpY29uOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBwdWJsaWMgdHlwZTogTWVudUFjdGlvblR5cGU7XG5cbiAgICBAVmlld0NoaWxkKFwibWVudUFjdGlvblwiKSBtZW51SXRlbTogRWxlbWVudFJlZjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBAT3B0aW9uYWwoKSByZWFkb25seSBncm91cDogTWVudUdyb3VwQ29tcG9uZW50LFxuICAgICAgICBjZDogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgICApIHtcbiAgICAgICAgc3VwZXIoZ3JvdXAsIGNkKTtcblxuICAgICAgICB0aGlzLmRpc2FibGVkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcHVibGljIGhhbmRsZUNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aW9uRG9uZS5lbWl0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SWNvbkNvbG9yKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnR5cGUgPT09IFwiZGVzdHJ1Y3RpdmVcIiA/IFwicmVkXCIgOiBcIlwiO1xuICAgIH1cblxuICAgIHB1YmxpYyBkb0FjdGlvbihldmVudDogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMuaGFuZGxlQ2xpY2soZXZlbnQpO1xuICAgIH1cbn1cbiJdfQ==