UNPKG

@nova-ui/bits

Version:

SolarWinds Nova Framework

75 lines 10.6 kB
// © 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 { Directive, EventEmitter, HostBinding, HostListener, Input, Output, } from "@angular/core"; import { TableStateHandlerService } from "../table-state-handler.service"; import * as i0 from "@angular/core"; import * as i1 from "../table-state-handler.service"; /** @ignore */ export var TableResizePhase; (function (TableResizePhase) { TableResizePhase["start"] = "start"; TableResizePhase["end"] = "end"; })(TableResizePhase || (TableResizePhase = {})); /** @ignore */ export class TableResizerDirective { constructor(tableStateHandlerService) { this.tableStateHandlerService = tableStateHandlerService; this.hostClasses = "nui-table__resizer"; this.resizerMovement = new EventEmitter(); this.mouseMoveHandler = (event) => { this.resizerMovement.emit(event.movementX); }; this.removeResizeListeners = () => { document.removeEventListener("mousemove", this.mouseMoveHandler); document.removeEventListener("mouseup", this.removeResizeListeners); this.resizerMovement.emit(null); // This needs to be after the sort click handler which is why it needs a setTimeout setTimeout(() => { this.tableStateHandlerService.emitResizeEvent(this.columnIndex, TableResizePhase.end); }); }; } onMouseDown(ev) { // Event should be emitted to highlight all cells this.tableStateHandlerService.emitResizeEvent(this.columnIndex, TableResizePhase.start); ev.preventDefault(); document.addEventListener("mouseup", this.removeResizeListeners); document.addEventListener("mousemove", this.mouseMoveHandler); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TableResizerDirective, deps: [{ token: i1.TableStateHandlerService }], target: i0.ɵɵFactoryTarget.Directive }); } static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: TableResizerDirective, selector: "[nuiTableResizer]", inputs: { columnIndex: "columnIndex" }, outputs: { resizerMovement: "resizerMovement" }, host: { listeners: { "mousedown": "onMouseDown($event)" }, properties: { "class": "this.hostClasses" } }, ngImport: i0 }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TableResizerDirective, decorators: [{ type: Directive, args: [{ selector: "[nuiTableResizer]", }] }], ctorParameters: () => [{ type: i1.TableStateHandlerService }], propDecorators: { hostClasses: [{ type: HostBinding, args: ["class"] }], columnIndex: [{ type: Input }], resizerMovement: [{ type: Output }], onMouseDown: [{ type: HostListener, args: ["mousedown", ["$event"]] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtcmVzaXplci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3RhYmxlL3RhYmxlLXJlc2l6ZXIvdGFibGUtcmVzaXplci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEseURBQXlEO0FBQ3pELEVBQUU7QUFDRiwrRUFBK0U7QUFDL0UsNEVBQTRFO0FBQzVFLDhFQUE4RTtBQUM5RSwrRUFBK0U7QUFDL0UsOEVBQThFO0FBQzlFLDREQUE0RDtBQUM1RCxFQUFFO0FBQ0YsNkVBQTZFO0FBQzdFLHVEQUF1RDtBQUN2RCxFQUFFO0FBQ0YsNkVBQTZFO0FBQzdFLDRFQUE0RTtBQUM1RSwrRUFBK0U7QUFDL0UsMEVBQTBFO0FBQzFFLGlGQUFpRjtBQUNqRiw2RUFBNkU7QUFDN0UsaUJBQWlCO0FBRWpCLE9BQU8sRUFDSCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7O0FBQzFFLGNBQWM7QUFDZCxNQUFNLENBQU4sSUFBWSxnQkFHWDtBQUhELFdBQVksZ0JBQWdCO0lBQ3hCLG1DQUFlLENBQUE7SUFDZiwrQkFBVyxDQUFBO0FBQ2YsQ0FBQyxFQUhXLGdCQUFnQixLQUFoQixnQkFBZ0IsUUFHM0I7QUFDRCxjQUFjO0FBSWQsTUFBTSxPQUFPLHFCQUFxQjtJQU85QixZQUFvQix3QkFBa0Q7UUFBbEQsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQU5oRCxnQkFBVyxHQUFHLG9CQUFvQixDQUFDO1FBSS9DLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUk1QyxxQkFBZ0IsR0FBRyxDQUFDLEtBQWlCLEVBQUUsRUFBRTtZQUM3QyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDL0MsQ0FBQyxDQUFDO1FBRU0sMEJBQXFCLEdBQUcsR0FBRyxFQUFFO1lBQ2pDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDakUsUUFBUSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQztZQUNwRSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNoQyxtRkFBbUY7WUFDbkYsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDWixJQUFJLENBQUMsd0JBQXdCLENBQUMsZUFBZSxDQUN6QyxJQUFJLENBQUMsV0FBVyxFQUNoQixnQkFBZ0IsQ0FBQyxHQUFHLENBQ3ZCLENBQUM7WUFDTixDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQztJQWpCdUUsQ0FBQztJQW9CMUUsV0FBVyxDQUFDLEVBQWM7UUFDdEIsaURBQWlEO1FBQ2pELElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxlQUFlLENBQ3pDLElBQUksQ0FBQyxXQUFXLEVBQ2hCLGdCQUFnQixDQUFDLEtBQUssQ0FDekIsQ0FBQztRQUNGLEVBQUUsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNwQixRQUFRLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ2pFLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDbEUsQ0FBQzsrR0FwQ1EscUJBQXFCO21HQUFyQixxQkFBcUI7OzRGQUFyQixxQkFBcUI7a0JBSGpDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLG1CQUFtQjtpQkFDaEM7NkZBRXlCLFdBQVc7c0JBQWhDLFdBQVc7dUJBQUMsT0FBTztnQkFFWCxXQUFXO3NCQUFuQixLQUFLO2dCQUVJLGVBQWU7c0JBQXhCLE1BQU07Z0JBc0JQLFdBQVc7c0JBRFYsWUFBWTt1QkFBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyDCqSAyMDIyIFNvbGFyV2luZHMgV29ybGR3aWRlLCBMTEMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvXG4vLyAgZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGVcbi8vICByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Jcbi8vICBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vICBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyAgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyAgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyAgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyAgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IHtcbiAgICBEaXJlY3RpdmUsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5cbmltcG9ydCB7IFRhYmxlU3RhdGVIYW5kbGVyU2VydmljZSB9IGZyb20gXCIuLi90YWJsZS1zdGF0ZS1oYW5kbGVyLnNlcnZpY2VcIjtcbi8qKiBAaWdub3JlICovXG5leHBvcnQgZW51bSBUYWJsZVJlc2l6ZVBoYXNlIHtcbiAgICBzdGFydCA9IFwic3RhcnRcIixcbiAgICBlbmQgPSBcImVuZFwiLFxufVxuLyoqIEBpZ25vcmUgKi9cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiBcIltudWlUYWJsZVJlc2l6ZXJdXCIsXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlUmVzaXplckRpcmVjdGl2ZSB7XG4gICAgQEhvc3RCaW5kaW5nKFwiY2xhc3NcIikgaG9zdENsYXNzZXMgPSBcIm51aS10YWJsZV9fcmVzaXplclwiO1xuXG4gICAgQElucHV0KCkgY29sdW1uSW5kZXg6IG51bWJlcjtcblxuICAgIEBPdXRwdXQoKSByZXNpemVyTW92ZW1lbnQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgdGFibGVTdGF0ZUhhbmRsZXJTZXJ2aWNlOiBUYWJsZVN0YXRlSGFuZGxlclNlcnZpY2UpIHt9XG5cbiAgICBwcml2YXRlIG1vdXNlTW92ZUhhbmRsZXIgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgdGhpcy5yZXNpemVyTW92ZW1lbnQuZW1pdChldmVudC5tb3ZlbWVudFgpO1xuICAgIH07XG5cbiAgICBwcml2YXRlIHJlbW92ZVJlc2l6ZUxpc3RlbmVycyA9ICgpID0+IHtcbiAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLCB0aGlzLm1vdXNlTW92ZUhhbmRsZXIpO1xuICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2V1cFwiLCB0aGlzLnJlbW92ZVJlc2l6ZUxpc3RlbmVycyk7XG4gICAgICAgIHRoaXMucmVzaXplck1vdmVtZW50LmVtaXQobnVsbCk7XG4gICAgICAgIC8vIFRoaXMgbmVlZHMgdG8gYmUgYWZ0ZXIgdGhlIHNvcnQgY2xpY2sgaGFuZGxlciB3aGljaCBpcyB3aHkgaXQgbmVlZHMgYSBzZXRUaW1lb3V0XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy50YWJsZVN0YXRlSGFuZGxlclNlcnZpY2UuZW1pdFJlc2l6ZUV2ZW50KFxuICAgICAgICAgICAgICAgIHRoaXMuY29sdW1uSW5kZXgsXG4gICAgICAgICAgICAgICAgVGFibGVSZXNpemVQaGFzZS5lbmRcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICBASG9zdExpc3RlbmVyKFwibW91c2Vkb3duXCIsIFtcIiRldmVudFwiXSlcbiAgICBvbk1vdXNlRG93bihldjogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICAvLyBFdmVudCBzaG91bGQgYmUgZW1pdHRlZCB0byBoaWdobGlnaHQgYWxsIGNlbGxzXG4gICAgICAgIHRoaXMudGFibGVTdGF0ZUhhbmRsZXJTZXJ2aWNlLmVtaXRSZXNpemVFdmVudChcbiAgICAgICAgICAgIHRoaXMuY29sdW1uSW5kZXgsXG4gICAgICAgICAgICBUYWJsZVJlc2l6ZVBoYXNlLnN0YXJ0XG4gICAgICAgICk7XG4gICAgICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZXVwXCIsIHRoaXMucmVtb3ZlUmVzaXplTGlzdGVuZXJzKTtcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLCB0aGlzLm1vdXNlTW92ZUhhbmRsZXIpO1xuICAgIH1cbn1cbiJdfQ==