UNPKG

@nakedobjects/gemini

Version:

Single Page Application client for a Naked Objects application.

93 lines 10.1 kB
import { Directive, EventEmitter, HostListener, Input, Output } from '@angular/core'; import { safeUnsubscribe } from './helpers-components'; import * as i0 from "@angular/core"; export class ClearDirective { el; nativeEl; constructor(el) { this.el = el; this.nativeEl = this.el.nativeElement; } subject; clear = new EventEmitter(); sub; ngOnInit() { this.onChange(); this.sub = this.subject.subscribe(_ => this.onChange()); } // not need the ngClass directive on element even though it doesn't do anything // otherwise we lose all the classes added here onChange() { this.nativeEl.classList.add('ng-clearable'); if (this.subject.getValue()) { this.nativeEl.classList.add('ng-x'); } else { this.nativeEl.classList.remove('ng-x'); } } onMouseMove(event) { if (this.nativeEl.classList.contains('ng-x')) { const onX = this.nativeEl.offsetWidth - 18 < event.clientX - this.nativeEl.getBoundingClientRect().left; if (onX) { this.nativeEl.classList.add('ng-onX'); } else { this.nativeEl.classList.remove('ng-onX'); } } } onClick(event) { if (this.nativeEl.classList.contains('ng-onX')) { event.preventDefault(); this.nativeEl.classList.remove('ng-x'); this.nativeEl.classList.remove('ng-onX'); this.clear.emit('event'); } } click(event) { this.onClick(event); } touchstart(event) { this.onClick(event); } mousemove(event) { this.onMouseMove(event); } input() { this.onChange(); } change() { this.onChange(); } ngOnDestroy() { safeUnsubscribe(this.sub); } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ClearDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.9", type: ClearDirective, selector: "[nofClear]", inputs: { subject: ["nofClear", "subject"] }, outputs: { clear: "clear" }, host: { listeners: { "click": "click($event)", "touchstart": "touchstart($event)", "mousemove": "mousemove($event)", "input": "input()", "change": "change()" } }, ngImport: i0 }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ClearDirective, decorators: [{ type: Directive, args: [{ selector: '[nofClear]' }] }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { subject: [{ type: Input, args: ['nofClear'] }], clear: [{ type: Output }], click: [{ type: HostListener, args: ['click', ['$event']] }], touchstart: [{ type: HostListener, args: ['touchstart', ['$event']] }], mousemove: [{ type: HostListener, args: ['mousemove', ['$event']] }], input: [{ type: HostListener, args: ['input'] }], change: [{ type: HostListener, args: ['change'] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xlYXIuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vZ2VtaW5pL3NyYy9jbGVhci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFFVCxZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNCQUFzQixDQUFDOztBQUl2RCxNQUFNLE9BQU8sY0FBYztJQUtGO0lBSEosUUFBUSxDQUFtQjtJQUU1QyxZQUNxQixFQUFjO1FBQWQsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUUvQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDO0lBQzFDLENBQUM7SUFHRCxPQUFPLENBQTRCO0lBR25DLEtBQUssR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBRW5CLEdBQUcsQ0FBaUI7SUFFNUIsUUFBUTtRQUNKLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNoQixJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELCtFQUErRTtJQUMvRSwrQ0FBK0M7SUFDL0MsUUFBUTtRQUVKLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUU1QyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEMsQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDM0MsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBaUI7UUFDekIsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUMzQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsR0FBRyxFQUFFLEdBQUcsS0FBSyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLHFCQUFxQixFQUFFLENBQUMsSUFBSSxDQUFDO1lBQ3hHLElBQUksR0FBRyxFQUFFLENBQUM7Z0JBQ04sSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzFDLENBQUM7aUJBQU0sQ0FBQztnQkFDSixJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDN0MsQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTyxDQUFDLEtBQW9CO1FBQ3hCLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFFN0MsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN2QyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDekMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0IsQ0FBQztJQUNMLENBQUM7SUFHRCxLQUFLLENBQUMsS0FBb0I7UUFDdEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBR0QsVUFBVSxDQUFDLEtBQW9CO1FBQzNCLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUdELFNBQVMsQ0FBQyxLQUFpQjtRQUN2QixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFHRCxLQUFLO1FBQ0QsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFHRCxNQUFNO1FBQ0YsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxXQUFXO1FBQ1AsZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM5QixDQUFDO3VHQXBGUSxjQUFjOzJGQUFkLGNBQWM7OzJGQUFkLGNBQWM7a0JBRDFCLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFOytFQVlqQyxPQUFPO3NCQUROLEtBQUs7dUJBQUMsVUFBVTtnQkFJakIsS0FBSztzQkFESixNQUFNO2dCQTZDUCxLQUFLO3NCQURKLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQU1qQyxVQUFVO3NCQURULFlBQVk7dUJBQUMsWUFBWSxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQU10QyxTQUFTO3NCQURSLFlBQVk7dUJBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQU1yQyxLQUFLO3NCQURKLFlBQVk7dUJBQUMsT0FBTztnQkFNckIsTUFBTTtzQkFETCxZQUFZO3VCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBzYWZlVW5zdWJzY3JpYmUgfSBmcm9tICcuL2hlbHBlcnMtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YnNjcmlwdGlvbkxpa2UgYXMgSVN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbbm9mQ2xlYXJdJyB9KVxuZXhwb3J0IGNsYXNzIENsZWFyRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBuYXRpdmVFbDogSFRNTElucHV0RWxlbWVudDtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGVsOiBFbGVtZW50UmVmXG4gICAgKSB7XG4gICAgICAgIHRoaXMubmF0aXZlRWwgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgQElucHV0KCdub2ZDbGVhcicpXG4gICAgc3ViamVjdCE6IEJlaGF2aW9yU3ViamVjdDx1bmtub3duPjtcblxuICAgIEBPdXRwdXQoKVxuICAgIGNsZWFyID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgcHJpdmF0ZSBzdWI/OiBJU3Vic2NyaXB0aW9uO1xuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UoKTtcbiAgICAgICAgdGhpcy5zdWIgPSB0aGlzLnN1YmplY3Quc3Vic2NyaWJlKF8gPT4gdGhpcy5vbkNoYW5nZSgpKTtcbiAgICB9XG5cbiAgICAvLyBub3QgbmVlZCB0aGUgbmdDbGFzcyBkaXJlY3RpdmUgb24gZWxlbWVudCBldmVuIHRob3VnaCBpdCBkb2Vzbid0IGRvIGFueXRoaW5nXG4gICAgLy8gb3RoZXJ3aXNlIHdlIGxvc2UgYWxsIHRoZSBjbGFzc2VzIGFkZGVkIGhlcmVcbiAgICBvbkNoYW5nZSgpIHtcblxuICAgICAgICB0aGlzLm5hdGl2ZUVsLmNsYXNzTGlzdC5hZGQoJ25nLWNsZWFyYWJsZScpO1xuXG4gICAgICAgIGlmICh0aGlzLnN1YmplY3QuZ2V0VmFsdWUoKSkge1xuICAgICAgICAgICAgdGhpcy5uYXRpdmVFbC5jbGFzc0xpc3QuYWRkKCduZy14Jyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm5hdGl2ZUVsLmNsYXNzTGlzdC5yZW1vdmUoJ25nLXgnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uTW91c2VNb3ZlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLm5hdGl2ZUVsLmNsYXNzTGlzdC5jb250YWlucygnbmcteCcpKSB7XG4gICAgICAgICAgICBjb25zdCBvblggPSB0aGlzLm5hdGl2ZUVsLm9mZnNldFdpZHRoIC0gMTggPCBldmVudC5jbGllbnRYIC0gdGhpcy5uYXRpdmVFbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0O1xuICAgICAgICAgICAgaWYgKG9uWCkge1xuICAgICAgICAgICAgICAgIHRoaXMubmF0aXZlRWwuY2xhc3NMaXN0LmFkZCgnbmctb25YJyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMubmF0aXZlRWwuY2xhc3NMaXN0LnJlbW92ZSgnbmctb25YJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkNsaWNrKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLm5hdGl2ZUVsLmNsYXNzTGlzdC5jb250YWlucygnbmctb25YJykpIHtcblxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHRoaXMubmF0aXZlRWwuY2xhc3NMaXN0LnJlbW92ZSgnbmcteCcpO1xuICAgICAgICAgICAgdGhpcy5uYXRpdmVFbC5jbGFzc0xpc3QucmVtb3ZlKCduZy1vblgnKTtcbiAgICAgICAgICAgIHRoaXMuY2xlYXIuZW1pdCgnZXZlbnQnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSlcbiAgICBjbGljayhldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICB0aGlzLm9uQ2xpY2soZXZlbnQpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCBbJyRldmVudCddKVxuICAgIHRvdWNoc3RhcnQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgdGhpcy5vbkNsaWNrKGV2ZW50KTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdtb3VzZW1vdmUnLCBbJyRldmVudCddKVxuICAgIG1vdXNlbW92ZShldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICB0aGlzLm9uTW91c2VNb3ZlKGV2ZW50KTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdpbnB1dCcpXG4gICAgaW5wdXQoKSB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UoKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdjaGFuZ2UnKVxuICAgIGNoYW5nZSgpIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSgpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICBzYWZlVW5zdWJzY3JpYmUodGhpcy5zdWIpO1xuICAgIH1cblxufVxuIl19