52 lines
1.8 KiB
JavaScript
52 lines
1.8 KiB
JavaScript
import './styles/toolbar.css';
|
|
|
|
import { buttonAndForm, note, selectForm, selectContainer } from './components';
|
|
import { REVIEW_CONTAINER } from './shared';
|
|
import { eventLookup, getInitialView, initializeGlobalListeners, initializeState } from './store';
|
|
|
|
/*
|
|
|
|
Welcome to the visual review toolbar files. A few useful notes:
|
|
|
|
- These files build a static script that is served from our webpack
|
|
assets folder. (https://gitlab.com/assets/webpack/visual_review_toolbar.js)
|
|
|
|
- To compile this file, run `yarn webpack-vrt`.
|
|
|
|
- Vue is not used in these files because we do not want to ask users to
|
|
install another library at this time. It's all pure vanilla javascript.
|
|
|
|
*/
|
|
|
|
window.addEventListener('load', () => {
|
|
initializeState(window, document);
|
|
|
|
const mainContent = buttonAndForm(getInitialView());
|
|
const container = document.createElement('div');
|
|
container.setAttribute('id', REVIEW_CONTAINER);
|
|
container.insertAdjacentHTML('beforeend', note);
|
|
container.insertAdjacentHTML('beforeend', mainContent);
|
|
|
|
document.body.insertBefore(container, document.body.firstChild);
|
|
|
|
selectContainer().addEventListener('click', event => {
|
|
eventLookup(event.target.id)();
|
|
});
|
|
|
|
selectForm().addEventListener('submit', event => {
|
|
// this is important to prevent the form from adding data
|
|
// as URL params and inadvertently revealing secrets
|
|
event.preventDefault();
|
|
|
|
const id =
|
|
event.target.querySelector('.gitlab-button-wrapper') &&
|
|
event.target.querySelector('.gitlab-button-wrapper').getElementsByTagName('button')[0] &&
|
|
event.target.querySelector('.gitlab-button-wrapper').getElementsByTagName('button')[0].id;
|
|
|
|
// even if this is called with false, it's ok; it will get the default no-op
|
|
eventLookup(id)();
|
|
});
|
|
|
|
initializeGlobalListeners();
|
|
});
|