72 lines
2 KiB
JavaScript
72 lines
2 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
|