javascript-helpers
Advanced tools
Comparing version 1.0.1 to 1.1.0
{ | ||
"name": "javascript-helpers", | ||
"title": "Javascript Helpers", | ||
"description": "List of useful Javascript functions to make development easier", | ||
"version": "1.0.1", | ||
"title": "JavaScript Helpers", | ||
"description": "List of useful JavaScript functions to make development easier", | ||
"version": "1.1.0", | ||
"main": "src/index.js", | ||
@@ -7,0 +7,0 @@ "homepage": "https://valeriodipunzio.com/plugins/javascript-helpers/", |
# Javascript Helpers | ||
# JavaScript Helpers | ||
Visit the [Plugin Documentation Page](https://www.valeriodipunzio.com/plugins/javascript-helpers/) for more info. | ||
Visit the [Plugin Documentation Page](https://valeriodipunzio.com/plugins/javascript-helpers/) for more info. | ||
@@ -10,3 +10,3 @@ | ||
See the [Changelog Page](https://www.valeriodipunzio.com/plugins/javascript-helpers/#changelog) for details. | ||
See the [Changelog Page](https://valeriodipunzio.com/plugins/javascript-helpers/#changelog) for details. | ||
@@ -17,3 +17,3 @@ | ||
See the [Releases Page](https://github.com/SimplySayHi/javascript-helpers/releases) to download provious versions. | ||
See the [Releases Page](https://github.com/SimplySayHi/javascript-helpers/releases) to see previous versions. | ||
@@ -20,0 +20,0 @@ |
@@ -17,2 +17,3 @@ | ||
import isFieldForChangeEventFn from './modules/isFieldForChangeEvent/isFieldForChangeEvent.js'; | ||
import isMobileFn from './modules/isMobile/isMobile.js'; | ||
import isNodeListFn from './modules/isNodeList/isNodeList.js'; | ||
@@ -52,2 +53,3 @@ import isPlainObjectFn from './modules/isPlainObject/isPlainObject.js'; | ||
isFieldForChangeEvent = isFieldForChangeEventFn, | ||
isMobile = isMobileFn, | ||
isNodeList = isNodeListFn, | ||
@@ -54,0 +56,0 @@ isPlainObject = isPlainObjectFn, |
@@ -6,6 +6,8 @@ | ||
if( !cssClasses ){ return; } | ||
elements = getElements( elements ); | ||
getElements( elements ).forEach(function(elem){ | ||
cssClasses.split(' ').forEach(function(className){ | ||
if( !cssClasses ){ return elements; } | ||
elements.forEach(elem => { | ||
cssClasses.split(' ').forEach(className => { | ||
elem.classList.add( className ); | ||
@@ -15,2 +17,4 @@ }); | ||
return elements; | ||
} |
@@ -6,7 +6,9 @@ | ||
export default ( fields = [], cssClasses = '' ) => { | ||
export default ( fields, cssClasses = '' ) => { | ||
if( !cssClasses ){ return; } | ||
fields = getElements(fields); | ||
if( !cssClasses ){ return fields; } | ||
getElements(fields).forEach(function(fieldEl){ | ||
fields.forEach(fieldEl => { | ||
if( fieldEl.type !== 'checkbox' && fieldEl.type !== 'radio' ){ | ||
@@ -26,3 +28,5 @@ let containerEl = fieldEl.closest('[data-formjs-question]') || fieldEl; | ||
}); | ||
return fields; | ||
} |
import isDomNode from '../isDomNode/isDomNode.js'; | ||
import isValidSelector from '../isValidSelector/isValidSelector.js'; | ||
import getElements from '../getElements/getElements.js'; | ||
export default ( formEl = null ) => { | ||
export default ( formEl ) => { | ||
const isFormSelector = isValidSelector(formEl) && document.querySelector(formEl).tagName.toLowerCase() === 'form'; | ||
formEl = getElements(formEl)[0] || null; | ||
const isForm = !!formEl && formEl.tagName && formEl.tagName.toLowerCase() === 'form'; | ||
return { | ||
result: isFormSelector || isDomNode(formEl), | ||
element: isFormSelector ? document.querySelector(formEl) : formEl | ||
result: isForm, | ||
element: formEl | ||
} | ||
} |
@@ -5,47 +5,39 @@ | ||
const fieldsStringSelector = 'input:not([type="reset"]):not([type="submit"]):not([type="button"]):not([type="hidden"]), select, textarea'; | ||
export default ( formEl, data = {}, skipFilledFields = false ) => { | ||
export default ( formEl = null, data = {}, skipFilledFields = false ) => { | ||
formEl = getElements(formEl)[0] || null; | ||
formEl = getElements(formEl)[0]; | ||
if( !formEl || !data || isEmptyObject(data) ){ return formEl; } | ||
if( !formEl || !data || isEmptyObject(data) ){ return; } | ||
Object.keys( data ).forEach(name => { | ||
const firstFieldEl = formEl.querySelector('[name="'+ name +'"]'); | ||
const isRadio = firstFieldEl && firstFieldEl.type === 'radio'; | ||
const isSingleCheckbox = typeof data[name] === 'boolean'; | ||
const keyValue = isSingleCheckbox || isRadio ? [data[name]] : data[name]; | ||
Array.from( formEl.querySelectorAll(fieldsStringSelector) ).forEach(fieldEl => { | ||
const name = fieldEl.name; | ||
if( typeof data[name] !== 'undefined' ){ | ||
let value = data[name]; | ||
const type = fieldEl.type, | ||
isCheckbox = type === 'checkbox', | ||
isRadio = type === 'radio'; | ||
if( isCheckbox || isRadio ){ | ||
if( isRadio ){ | ||
fieldEl = formEl.querySelector('[name="'+ name +'"][value="'+ value +'"]'); | ||
} else if( fieldEl.matches('[data-checks]') ) { | ||
if( value.indexOf(fieldEl.value) === -1 ){ | ||
fieldEl = null; | ||
} | ||
} | ||
if( Array.isArray(keyValue) ){ | ||
// CHECKBOXES ( SINGLE & MUTIPLE ) & RADIOS | ||
keyValue.forEach(listValue => { | ||
const isBoolean = typeof listValue === 'boolean'; | ||
const fieldEl = isBoolean ? | ||
formEl.querySelector('[name="'+ name +'"]') : | ||
formEl.querySelector('[name="'+ name +'"][value="'+ listValue +'"]'); | ||
if( fieldEl ){ | ||
fieldEl.checked = value; | ||
fieldEl.checked = isBoolean ? listValue : true; | ||
} | ||
}); | ||
} else if( !skipFilledFields || fieldEl.value === '' ) { | ||
} else { | ||
fieldEl.value = value; | ||
const fieldEl = formEl.querySelector('[name="'+ name +'"]'); | ||
if( fieldEl && (!skipFilledFields || fieldEl.value === '') ){ | ||
fieldEl.value = keyValue; | ||
} | ||
} | ||
} | ||
}); | ||
} | ||
return formEl; | ||
} |
@@ -1,2 +0,2 @@ | ||
import getElements from "../getElements/getElements"; | ||
import getElements from "../getElements/getElements.js"; | ||
@@ -3,0 +3,0 @@ const fieldsStringSelector = 'input:not([type="reset"]):not([type="submit"]):not([type="button"]):not([type="hidden"]), select, textarea'; |
@@ -6,17 +6,11 @@ | ||
for(let i=1; i<arguments.length; i++){ | ||
let obj = arguments[i]; | ||
if(!obj){ continue; } | ||
for(let key in obj){ | ||
if( obj.hasOwnProperty(key) ){ | ||
if ( isPlainObject(obj[key]) ){ | ||
out[key] = mergeObjects(out[key], obj[key]); | ||
} else { | ||
out[key] = obj[key]; | ||
} | ||
Array.from(arguments).filter(arg => !!arg).forEach(arg => { | ||
Object.keys(arg).forEach(key => { | ||
if ( isPlainObject(arg[key]) ){ | ||
out[key] = mergeObjects(out[key], arg[key]); | ||
} else { | ||
out[key] = arg[key]; | ||
} | ||
} | ||
} | ||
}); | ||
}); | ||
@@ -23,0 +17,0 @@ return out; |
@@ -6,5 +6,7 @@ | ||
if( !cssClasses ){ return; } | ||
elements = getElements(elements); | ||
getElements(elements).forEach(function(elem){ | ||
if( !cssClasses ){ return elements; } | ||
elements.forEach(function(elem){ | ||
cssClasses.split(' ').forEach(function(className){ | ||
@@ -14,3 +16,5 @@ elem.classList.remove( className ); | ||
}); | ||
return elements; | ||
} |
26580
41
508