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/ |
Upload File : |
import * as dom from './index.js' import { swalClasses } from '../classes.js' import { getChildByClass } from './domUtils.js' import { error, isPromise } from '../utils.js' import { showLoading } from '../../staticMethods/showLoading.js' export const handleInputOptionsAndValue = (instance, params) => { if (params.input === 'select' || params.input === 'radio') { handleInputOptions(instance, params) } else if (['text', 'email', 'number', 'tel', 'textarea'].includes(params.input) && isPromise(params.inputValue)) { handleInputValue(instance, params) } } export const getInputValue = (instance, innerParams) => { const input = instance.getInput() if (!input) { return null } switch (innerParams.input) { case 'checkbox': return getCheckboxValue(input) case 'radio': return getRadioValue(input) case 'file': return getFileValue(input) default: return innerParams.inputAutoTrim ? input.value.trim() : input.value } } const getCheckboxValue = (input) => input.checked ? 1 : 0 const getRadioValue = (input) => input.checked ? input.value : null const getFileValue = (input) => input.files.length ? (input.getAttribute('multiple') !== null ? input.files : input.files[0]) : null const handleInputOptions = (instance, params) => { const content = dom.getContent() const processInputOptions = (inputOptions) => populateInputOptions[params.input](content, formatInputOptions(inputOptions), params) if (isPromise(params.inputOptions)) { showLoading() params.inputOptions.then((inputOptions) => { instance.hideLoading() processInputOptions(inputOptions) }) } else if (typeof params.inputOptions === 'object') { processInputOptions(params.inputOptions) } else { error(`Unexpected type of inputOptions! Expected object, Map or Promise, got ${typeof params.inputOptions}`) } } const handleInputValue = (instance, params) => { const input = instance.getInput() dom.hide(input) params.inputValue.then((inputValue) => { input.value = params.input === 'number' ? parseFloat(inputValue) || 0 : `${inputValue}` dom.show(input) input.focus() instance.hideLoading() }) .catch((err) => { error(`Error in inputValue promise: ${err}`) input.value = '' dom.show(input) input.focus() instance.hideLoading() }) } const populateInputOptions = { select: (content, inputOptions, params) => { const select = getChildByClass(content, swalClasses.select) inputOptions.forEach(inputOption => { const optionValue = inputOption[0] const optionLabel = inputOption[1] const option = document.createElement('option') option.value = optionValue option.innerHTML = optionLabel if (params.inputValue.toString() === optionValue.toString()) { option.selected = true } select.appendChild(option) }) select.focus() }, radio: (content, inputOptions, params) => { const radio = getChildByClass(content, swalClasses.radio) inputOptions.forEach(inputOption => { const radioValue = inputOption[0] const radioLabel = inputOption[1] const radioInput = document.createElement('input') const radioLabelElement = document.createElement('label') radioInput.type = 'radio' radioInput.name = swalClasses.radio radioInput.value = radioValue if (params.inputValue.toString() === radioValue.toString()) { radioInput.checked = true } const label = document.createElement('span') label.innerHTML = radioLabel label.className = swalClasses.label radioLabelElement.appendChild(radioInput) radioLabelElement.appendChild(label) radio.appendChild(radioLabelElement) }) const radios = radio.querySelectorAll('input') if (radios.length) { radios[0].focus() } } } /** * Converts `inputOptions` into an array of `[value, label]`s * @param inputOptions */ const formatInputOptions = (inputOptions) => { const result = [] if (typeof Map !== 'undefined' && inputOptions instanceof Map) { inputOptions.forEach((value, key) => { result.push([key, value]) }) } else { Object.keys(inputOptions).forEach(key => { result.push([key, inputOptions[key]]) }) } return result }