* fix add links by drag and drop * fix dialog component logging errors * fix search component errors * fix sort * remove unused entrydnd file * remove unnecessary console logs * fix preview action in embed dropdown, which was throwing a type error * invoke PreviewAction once in NotebookController and pass into git add -a * add navigation capability to embeds, and a bunch of cleanup * code cleanup and avoid calling dismiss twice on overlay destroy, which was throwing a DOM error. Calling code should dismiss the overlay * only show elements pool if domainObject has composition * fix error in inspector when no selection is present * wire up object view expand button * listen to composition#remove in TabsView * make reviewer requested changes * make reviewer requested changes, and fix for an edge case where removed tab is at the end of the array and currentTab is not set properly * remove array wrapping dynamic classes in embed.html * add title='View Large' to expand button * change model variable to domainObject in tabs.vue * dismiss top level overlay when esc is pressed (only if overlay is dismissable) * fix link navigation from embeds * use positive flag dismissable instead of negative notDismissable for overlays * make overlays dismissable by default, unless set to false
53 lines
1.4 KiB
JavaScript
53 lines
1.4 KiB
JavaScript
import OverlayComponent from './components/OverlayComponent.vue';
|
|
import EventEmitter from 'EventEmitter';
|
|
import Vue from 'vue';
|
|
|
|
const cssClasses = {
|
|
large: 'l-overlay-large',
|
|
small: 'l-overlay-small',
|
|
fit: 'l-overlay-fit'
|
|
};
|
|
|
|
class Overlay extends EventEmitter {
|
|
constructor(options) {
|
|
super();
|
|
|
|
this.dismissable = options.dismissable !== false ? true : false;
|
|
this.container = document.createElement('div');
|
|
this.container.classList.add('l-overlay-wrapper', cssClasses[options.size]);
|
|
|
|
this.component = new Vue({
|
|
provide: {
|
|
dismiss: this.dismiss.bind(this),
|
|
element: options.element,
|
|
buttons: options.buttons,
|
|
dismissable: this.dismissable
|
|
},
|
|
components: {
|
|
OverlayComponent: OverlayComponent
|
|
},
|
|
template: '<overlay-component></overlay-component>'
|
|
});
|
|
|
|
if (options.onDestroy) {
|
|
this.once('destroy', options.onDestroy);
|
|
}
|
|
}
|
|
|
|
dismiss() {
|
|
this.emit('destroy');
|
|
document.body.removeChild(this.container);
|
|
this.component.$destroy();
|
|
}
|
|
|
|
/**
|
|
* @private
|
|
**/
|
|
show() {
|
|
document.body.appendChild(this.container);
|
|
this.container.appendChild(this.component.$mount().$el);
|
|
}
|
|
}
|
|
|
|
export default Overlay;
|