121 lines
3.3 KiB
JavaScript
121 lines
3.3 KiB
JavaScript
import 'svg-innerhtml'
|
|
import 'babel-polyfill'
|
|
import ally from 'ally.js'
|
|
|
|
import classes from '../styles/atat.scss'
|
|
import Vue from 'vue/dist/vue'
|
|
import VTooltip from 'v-tooltip'
|
|
import stickybits from 'stickybits'
|
|
|
|
import dodlogin from './components/dodlogin'
|
|
import optionsinput from './components/options_input'
|
|
import multicheckboxinput from './components/multi_checkbox_input'
|
|
import textinput from './components/text_input'
|
|
import checkboxinput from './components/checkbox_input'
|
|
import toggler from './components/toggler'
|
|
import ApplicationEnvironments from './components/forms/new_application/environments'
|
|
import MultiStepModalForm from './components/forms/multi_step_modal_form'
|
|
import uploadinput from './components/upload_input'
|
|
import Modal from './mixins/modal'
|
|
import BudgetChart from './components/charts/budget_chart'
|
|
import SpendTable from './components/tables/spend_table'
|
|
import LocalDatetime from './components/local_datetime'
|
|
import { isNotInVerticalViewport } from './lib/viewport'
|
|
import DateSelector from './components/date_selector'
|
|
import SidenavToggler from './components/sidenav_toggler'
|
|
import BaseForm from './components/forms/base_form'
|
|
import DeleteConfirmation from './components/delete_confirmation'
|
|
import NewEnvironment from './components/forms/new_environment'
|
|
import SemiCollapsibleText from './components/semi_collapsible_text'
|
|
import ToForm from './components/forms/to_form'
|
|
import ClinFields from './components/clin_fields'
|
|
import PopDateRange from './components/pop_date_range'
|
|
import Accordion from './components/accordion'
|
|
|
|
Vue.config.productionTip = false
|
|
|
|
Vue.use(VTooltip)
|
|
|
|
Vue.mixin(Modal)
|
|
|
|
const app = new Vue({
|
|
el: '#app-root',
|
|
components: {
|
|
Accordion,
|
|
dodlogin,
|
|
toggler,
|
|
optionsinput,
|
|
multicheckboxinput,
|
|
textinput,
|
|
checkboxinput,
|
|
ApplicationEnvironments,
|
|
BudgetChart,
|
|
SpendTable,
|
|
LocalDatetime,
|
|
MultiStepModalForm,
|
|
uploadinput,
|
|
DateSelector,
|
|
SidenavToggler,
|
|
BaseForm,
|
|
DeleteConfirmation,
|
|
NewEnvironment,
|
|
SemiCollapsibleText,
|
|
ToForm,
|
|
ClinFields,
|
|
PopDateRange,
|
|
},
|
|
|
|
mounted: function() {
|
|
this.$on('modalOpen', data => {
|
|
if (data['isOpen']) {
|
|
document.body.className += ' modal-open'
|
|
this.activeModal = data['name']
|
|
|
|
var handler = ally.maintain.disabled({
|
|
filter: `#${this.modalId}`,
|
|
})
|
|
|
|
this.allyHandler = handler
|
|
} else {
|
|
this.activeModal = null
|
|
if (this.allyHandler) {
|
|
this.allyHandler.disengage()
|
|
this.allyHandler = null
|
|
}
|
|
document.body.className = document.body.className.replace(
|
|
' modal-open',
|
|
''
|
|
)
|
|
}
|
|
})
|
|
|
|
const modalOpen = document.querySelector('#modalOpen')
|
|
|
|
if (modalOpen) {
|
|
const modal = modalOpen.getAttribute('data-modal')
|
|
this.openModal(modal)
|
|
}
|
|
|
|
ally.query.focusable().forEach(function(el) {
|
|
el.addEventListener('focus', function() {
|
|
if (isNotInVerticalViewport(el)) {
|
|
el.scrollIntoView({ block: 'center' })
|
|
}
|
|
})
|
|
})
|
|
},
|
|
delimiters: ['!{', '}'],
|
|
|
|
directives: {
|
|
sticky: {
|
|
inserted: (el, binding) => {
|
|
var customAttributes
|
|
if (binding.expression) {
|
|
customAttributes = JSON.parse(binding.expression)
|
|
}
|
|
stickybits(el, customAttributes)
|
|
},
|
|
},
|
|
},
|
|
})
|