%PDF- %PDF-
Direktori : /home/opti/workflow/src/public/app-assets/vendors/formBuilder-master/src/js/ |
Current File : /home/opti/workflow/src/public/app-assets/vendors/formBuilder-master/src/js/dom.js |
export const instanceDom = {} export const defaultSubtypes = { text: ['text', 'password', 'email', 'color', 'tel'], header: ['h1', 'h2', 'h3'], button: ['button', 'submit', 'reset'], paragraph: ['p', 'address', 'blockquote', 'canvas', 'output'], textarea: ['textarea', 'quill'], } /** * Removes a dom node * @param {Object} element */ export const remove = element => { if (element.parentNode) { element.parentNode.removeChild(element) } } export const empty = element => { while (element.firstChild) { element.removeChild(element.firstChild) } return element } export const filter = (elems, term, show = true) => { const filteredElems = [] let toggle = ['none', 'block'] if (show) { toggle = toggle.reverse() } for (let i = elems.length - 1; i >= 0; i--) { const txt = elems[i].textContent.toLowerCase() if (txt.indexOf(term.toLowerCase()) !== -1) { elems[i].style.display = toggle[0] filteredElems.push(elems[i]) } else { elems[i].style.display = toggle[1] } } return filteredElems } export const optionFields = ['select', 'checkbox-group', 'checkbox', 'radio-group', 'autocomplete'] export const optionFieldsRegEx = new RegExp(`(${optionFields.join('|')})`) /** * Dom class. */ export default class Dom { /** * Set defaults * @param {String} formID [description] * @return {Object} Dom Instance */ constructor(formID) { this.optionFields = optionFields this.optionFieldsRegEx = optionFieldsRegEx this.subtypes = defaultSubtypes /** * Util to remove contents of DOM Object * @param {Object} element * @return {Object} element with its children removed */ this.empty = empty /** * Hide or show an Array or HTMLCollection of elements * @param {Array} elems * @param {String} term match textContent to this term * @param {Boolean} show or hide elements * @return {Array} filtered elements */ this.filter = filter instanceDom[formID] = this return instanceDom[formID] } /** * Do something hen a specific dom element renders * @param {Object} node * @param {Function} cb */ onRender(node, cb) { if (!node.parentElement) { window.requestAnimationFrame(() => this.onRender(node, cb)) } else { cb(node) } } }