@nakedobjects/gemini
Version:
Single Page Application client for a Naked Objects application.
93 lines • 10.1 kB
JavaScript
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