@fleetbase/fleetops-engine
Version:
Fleet & Transport Management Extension for Fleetbase
82 lines (70 loc) • 2.49 kB
JavaScript
import Service from '@ember/service';
import Evented from '@ember/object/evented';
import { tracked } from '@glimmer/tracking';
import { inject as service } from '@ember/service';
import { action } from '@ember/object';
export default class MapDrawerService extends Service.extend(Evented) {
appCache;
drawer;
drawerComponent;
drawerHeight = this.appCache.get('map:drawer:height');
activeTabId = this.appCache.get('map:drawer:tab');
isMinimized = this.appCache.get('map:drawer:minimized', true);
setDrawer(drawer, drawerComponent) {
this.drawer = drawer;
this.drawerComponent = drawerComponent;
this.trigger('ready', { drawer, drawerComponent });
}
setActiveTab(tab) {
this.activeTabId = tab.id;
this.appCache.set('map:drawer:tab', tab.id);
this.trigger('tab.changed', tab);
}
setMinimized(minimized) {
this.isMinimized = minimized;
this.appCache.set('map:drawer:minimized', minimized);
}
setDrawerHeight(height) {
this.drawerHeight = height;
this.appCache.set('map:drawer:height', height);
}
handleResizeEnd({ drawerPanelNode }) {
const rect = drawerPanelNode.getBoundingClientRect();
this.setDrawerHeight(rect.height);
if (rect.height === 0) {
this.setMinimized(true);
} else if (rect.height > 1) {
this.setMinimized(false);
}
}
toggle(options = {}) {
this.drawer.toggleMinimize({
onToggle: (context) => {
if (!this.drawerComponent) return;
this.setMinimized(context.isMinimized);
this.trigger('toggled', context);
},
...options,
});
}
minimize(options = {}) {
this.drawer.minimize({
onMinimize: (context) => {
if (!this.drawerComponent) return;
this.setMinimized(true);
this.trigger('minimized', context);
},
...options,
});
}
maximize(options = {}) {
this.drawer.maximize({
onMaximize: (context) => {
if (!this.drawerComponent) return;
this.setMinimized(false);
this.trigger('maximized', context);
},
...options,
});
}
}