@nova-ui/bits
Version:
SolarWinds Nova Framework
75 lines • 10.6 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 { 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==