import { Form } from 'element-ui' import { confirmMsg } from '../utils/message' export const isValidUsername = (str: string) => ['admin', 'editor'].indexOf(str.trim()) >= 0 export const isExternal = (path: string) => /^(https?:|mailto:|tel:)/.test(path) export const isArray = (arg: any) => { if (typeof Array.isArray === 'undefined') { return Object.prototype.toString.call(arg) === '[object Array]' } return Array.isArray(arg) } export const isValidURL = (url: string) => { const reg = /^(https?|ftp):\/\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d?)(\.(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)){3}|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:\d+)*(\/($|[a-zA-Z0-9.,?'\\+&%$#=~_-]+))*$/ return reg.test(url) } export const validateForm = async(ref: any, showMessage = true) => { return new Promise((resolve) => { try { (ref as Form).validate(async(valid) => { resolve(valid) if (!valid) { if (showMessage) { confirmMsg('general.fillInRequired', false) } resolve(false) } }) } catch { if (showMessage) { confirmMsg('general.fillInRequired', false) } resolve(false) } }) } export const validateNumber = (e: any, tab: any, timeout = false) => { try { const charCode: any = e.which const el: any = e.target let dp = 2 if (tab.key === 'gst' || tab.key === 'timeout' || timeout) { dp = 0 } let setInput = false let value = timeout ? tab.countdown : tab.value if (value === '0.00') { return } if (dp === 2) { if ( (charCode > 31 && (charCode < 48 || charCode > 57)) || charCode === 49 ) { if (isNaN(value)) { value = Number(Number(value).toFixed(dp)) } } } else { value = Number(Number(value).toFixed(dp) || 0) if (charCode > 31 && (charCode < 48 || charCode > 57)) { setInput = true } } if (charCode === 45) { setInput = true } // Comment out to enable user key in number start with 0 e.g 0.1, 0.2 // if ( // (!value || value === '0.00' || charCode === 45) // ) { // setInput = true // } if (setInput) { if (tab.key === 'refund') { setElValue(el, value) } else { setTimeout(() => { setElValue(el, value) }) } return false } } catch (err) { // console.log(err) } return true } function setElValue(el: any, value: any) { el.value = value el.blur() el.focus() }