85 lines
1.8 KiB
JavaScript
85 lines
1.8 KiB
JavaScript
'use strict'
|
|
|
|
import $ from 'jquery'
|
|
|
|
import Events from '../_events'
|
|
import Spinner from '../_components/_ui.spinner'
|
|
import FormValidateField from './_ui.form.validate.field'
|
|
|
|
import '../../thirdparty/jQuery-TE_v.1.4.0/jquery-te-1.4.0.css'
|
|
import '../../thirdparty/jQuery-TE_v.1.4.0/uncompressed/jquery-te-1.4.0.js'
|
|
|
|
const JqteUI = (($) => {
|
|
const NAME = 'jsJqteUI'
|
|
const DATA_KEY = NAME
|
|
|
|
const jqteOptions = {
|
|
color: false,
|
|
fsize: false,
|
|
funit: 'em',
|
|
format: false,
|
|
rule: false,
|
|
source: false,
|
|
sub: false,
|
|
sup: false,
|
|
}
|
|
|
|
class JqteUI {
|
|
constructor (element) {
|
|
console.log(`${NAME}: init`)
|
|
|
|
const ui = this
|
|
const $element = $(element)
|
|
const validationUI = $element.data('jsFormValidateField')
|
|
|
|
ui._element = element
|
|
$element.data(DATA_KEY, this)
|
|
$element.jqte(jqteOptions)
|
|
|
|
// dynamic error control
|
|
if (validationUI) {
|
|
$element
|
|
.parents('.jqte')
|
|
.find('.jqte_editor')
|
|
.on('change', (e) => {
|
|
validationUI.validate()
|
|
})
|
|
}
|
|
}
|
|
|
|
static dispose () {
|
|
console.log(`${NAME}: dispose`)
|
|
}
|
|
|
|
static _jQueryInterface () {
|
|
return this.each(function () {
|
|
// attach functionality to element
|
|
const $element = $(this)
|
|
let data = $element.data(DATA_KEY)
|
|
|
|
if (!data) {
|
|
data = new JqteUI(this)
|
|
$element.data(DATA_KEY, data)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
// jQuery interface
|
|
$.fn[NAME] = JqteUI._jQueryInterface
|
|
$.fn[NAME].Constructor = JqteUI
|
|
$.fn[NAME].noConflict = function () {
|
|
$.fn[NAME] = JQUERY_NO_CONFLICT
|
|
return JqteUI._jQueryInterface
|
|
}
|
|
|
|
// auto-apply
|
|
$(window).on(`${Events.AJAX} ${Events.LOADED}`, () => {
|
|
$('textarea.jqte-field').jsJqteUI()
|
|
})
|
|
|
|
return JqteUI
|
|
})($)
|
|
|
|
export default JqteUI
|