Skip to content

Instantly share code, notes, and snippets.

View mmintel's full-sized avatar
👋
Looking for awesome opportunities

Marc Mintel mmintel

👋
Looking for awesome opportunities
View GitHub Profile
import View from './view';
import Model from './model';
import Controller from './controller';
export default class Clipboard {
constructor(options) {
this.model = new Model();
this.controller = new Controller(this.model);
this.view = new View(this.controller, options);
}
import Clipboard from '../lib/clipboard';
import Tooltip from '../lib/tooltip';
export default function init() {
const clipboards = new Clipboard({
nodes: document.queryAll('[data-clipboard]'),
targets: document.queryAll('[data-clipboard-target]'),
}).init();
clipboards.each((instance) => {
import View from './view';
export default class ModalView extends View {
constructor(controller, options) {
super(controller);
this.node = options.node;
this.overlay = options.overlay;
this.triggers = options.triggers;
this.init();
}
class View {
constructor(controller) {
this.controller = controller;
this.controller.model.registerObserver(this);
}
}
import Controller from './controller';
export default class ModalController extends Controller {
open(e) {
this.model.isOpen = true;
}
close(e) {
this.model.isOpen = false;
}
export default class Controller {
constructor(model) {
this.model = model;
}
}
import Model from './model';
export default class ModalModel extends Model {
constructor() {
super();
// Modal offen, oder nicht?
this._isOpen = false;
}
export default class Model {
constructor() {
// Speicher alle Beobachter
this.observers = [];
}
// Füge einen neuen Beobachter hinzu
registerObserver(observer) {
this.observers.push(observer);
}
import View from './view';
import Model from './model';
import Controller from './controller';
export default class Modal {
constructor(options) {
this.model = new Model();
this.controller = new Controller(this.model);
this.view = new View(this.controller, options);
}
import Modal from './container';
import Manager from './manager';
// Wir erstellen uns ein paar Standard-Werte,
// damit wir nicht jedes mal alles konfigurieren müssen.
const DEFAULTS = {
id: 'data-modal',
overlay: 'data-modal-overlay',
openTrigger: 'data-modal-open',
closeTrigger: 'data-modal-close',