nfp_sites/filadelfia_web/app/input.js

73 lines
2.0 KiB
JavaScript

const m = require('mithril')
const popper = require('@popperjs/core')
const tempus = require('@eonasdan/tempus-dominus')
const Input = {
oninit: function(vnode) {
this.tempus = null
this.subscription = null
},
onremove: function(vnode) {
if (!this.tempus) return
this.tempus.dispose()
this.tempus = null
},
getInput: function(vnode) {
switch (vnode.attrs.utility) {
case 'datetime':
return m('input', {
type: 'text',
oncreate: (e) => {
this.tempus = new tempus.TempusDominus(e.dom, {
defaultDate: vnode.attrs.form[vnode.attrs.formKey],
viewDate: vnode.attrs.form[vnode.attrs.formKey],
localization: {
locale: 'is',
startOfTheWeek: 0,
hourCycle: 'h23',
dateFormats: {
LTS: 'H:mm:ss',
LT: 'H:mm',
L: 'dd.MM.yyyy',
LL: 'd [de] MMMM [de] yyyy',
LLL: 'd [de] MMMM [de] yyyy H:mm',
LLLL: 'dddd, d [de] MMMM [de] yyyy H:mm',
},
},
})
this.subscription = this.tempus.subscribe(tempus.Namespace.events.change, (e) => {
console.log(e);
});
},
})
default:
return m('input', {
type: vnode.attrs.type || 'text',
value: vnode.attrs.form[vnode.attrs.formKey],
oninput: (e) => { vnode.attrs.form[vnode.attrs.formKey] = e.currentTarget.value },
})
}
},
view: function(vnode) {
let input = m('input', {
type: vnode.attrs.type || 'text',
value: vnode.attrs.form[vnode.attrs.formKey],
oninput: (e) => { vnode.attrs.form[vnode.attrs.formKey] = e.currentTarget.value },
})
if (vnode.attrs.utility === 'datetime') {
}
return [
m('label', vnode.attrs.label),
this.getInput(vnode),
]
},
}
module.exports = Input