Server : Apache/2.4.18 (Ubuntu) System : Linux canvaswebdesign 3.13.0-71-generic #114-Ubuntu SMP Tue Dec 1 02:34:22 UTC 2015 x86_64 User : oppastar ( 1041) PHP Version : 7.0.33-0ubuntu0.16.04.15 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, Directory : /var/www/rabbithabit.com/public_html/themes/3/swal_alert/src/utils/dom/renderers/ |
Upload File : |
import { swalClasses } from '../../classes.js' import { warn, error, isPromise } from '../../utils.js' import * as dom from '../../dom/index.js' import privateProps from '../../../privateProps.js' const inputTypes = ['input', 'file', 'range', 'select', 'radio', 'checkbox', 'textarea'] export const renderInput = (instance, params) => { const content = dom.getContent() const innerParams = privateProps.innerParams.get(instance) const rerender = !innerParams || params.input !== innerParams.input inputTypes.forEach((inputType) => { const inputClass = swalClasses[inputType] const inputContainer = dom.getChildByClass(content, inputClass) // set attributes setAttributes(inputType, params.inputAttributes) // set class inputContainer.className = inputClass if (rerender) { dom.hide(inputContainer) } }) if (params.input) { if (rerender) { showInput(params) } // set custom class setCustomClass(params) } } const showInput = (params) => { if (!renderInputType[params.input]) { return error(`Unexpected type of input! Expected "text", "email", "password", "number", "tel", "select", "radio", "checkbox", "textarea", "file" or "url", got "${params.input}"`) } const inputContainer = getInputContainer(params.input) const input = renderInputType[params.input](inputContainer, params) dom.show(input) // input autofocus setTimeout(() => { dom.focusInput(input) }) } const removeAttributes = (input) => { for (let i = 0; i < input.attributes.length; i++) { const attrName = input.attributes[i].name if (!['type', 'value', 'style'].includes(attrName)) { input.removeAttribute(attrName) } } } const setAttributes = (inputType, inputAttributes) => { const input = dom.getInput(dom.getContent(), inputType) if (!input) { return } removeAttributes(input) for (const attr in inputAttributes) { // Do not set a placeholder for <input type="range"> // it'll crash Edge, #1298 if (inputType === 'range' && attr === 'placeholder') { continue } input.setAttribute(attr, inputAttributes[attr]) } } const setCustomClass = (params) => { const inputContainer = getInputContainer(params.input) if (params.customClass) { dom.addClass(inputContainer, params.customClass.input) } } const setInputPlaceholder = (input, params) => { if (!input.placeholder || params.inputPlaceholder) { input.placeholder = params.inputPlaceholder } } const getInputContainer = (inputType) => { const inputClass = swalClasses[inputType] ? swalClasses[inputType] : swalClasses.input return dom.getChildByClass(dom.getContent(), inputClass) } const renderInputType = {} renderInputType.text = renderInputType.email = renderInputType.password = renderInputType.number = renderInputType.tel = renderInputType.url = (input, params) => { if (typeof params.inputValue === 'string' || typeof params.inputValue === 'number') { input.value = params.inputValue } else if (!isPromise(params.inputValue)) { warn(`Unexpected type of inputValue! Expected "string", "number" or "Promise", got "${typeof params.inputValue}"`) } setInputPlaceholder(input, params) input.type = params.input return input } renderInputType.file = (input, params) => { setInputPlaceholder(input, params) return input } renderInputType.range = (range, params) => { const rangeInput = range.querySelector('input') const rangeOutput = range.querySelector('output') rangeInput.value = params.inputValue rangeInput.type = params.input rangeOutput.value = params.inputValue return range } renderInputType.select = (select, params) => { select.innerHTML = '' if (params.inputPlaceholder) { const placeholder = document.createElement('option') placeholder.innerHTML = params.inputPlaceholder placeholder.value = '' placeholder.disabled = true placeholder.selected = true select.appendChild(placeholder) } return select } renderInputType.radio = (radio) => { radio.innerHTML = '' return radio } renderInputType.checkbox = (checkboxContainer, params) => { const checkbox = dom.getInput(dom.getContent(), 'checkbox') checkbox.value = 1 checkbox.id = swalClasses.checkbox checkbox.checked = Boolean(params.inputValue) const label = checkboxContainer.querySelector('span') label.innerHTML = params.inputPlaceholder return checkboxContainer } renderInputType.textarea = (textarea, params) => { textarea.value = params.inputValue setInputPlaceholder(textarea, params) if ('MutationObserver' in window) { // #1699 const initialPopupWidth = parseInt(window.getComputedStyle(dom.getPopup()).width) const popupPadding = parseInt(window.getComputedStyle(dom.getPopup()).paddingLeft) + parseInt(window.getComputedStyle(dom.getPopup()).paddingRight) const outputsize = () => { const contentWidth = textarea.offsetWidth + popupPadding if (contentWidth > initialPopupWidth) { dom.getPopup().style.width = `${contentWidth}px` } else { dom.getPopup().style.width = null } } new MutationObserver(outputsize).observe(textarea, { attributes: true, attributeFilter: ['style'] }) } return textarea }