baseframe-js
Version:
A suite of useful Javascript plugins and functions to help with Front-end Development on websites
37 lines (36 loc) • 1.5 kB
JavaScript
//
// General purposed helpers
//
import $ from 'cash-dom';
import parseObjectFromString from './parseObjectFromString';
export default function getType(val) {
if (typeof val === 'undefined')
return 'undefined';
if (typeof val === 'object' && !val)
return 'null';
return ({}).toString.call(val).match(/\s([a-zA-Z]+)/)[1].toLowerCase();
}
// visibilty
export const isVisible = (el, visibility = false) => {
const vis = el.offsetParent !== null ||
!!(el.offsetWidth ||
el.offsetHeight ||
el.getClientRects().length);
if (visibility) {
return $(el).css('visibility') !== 'hidden' && vis;
}
else {
return vis;
}
};
export const reflow = (elem) => elem.offsetHeight; //triggers reflow with reading the height
export const getDataOptions = (el, evtName) => parseObjectFromString(el.dataset[evtName + 'Options']);
export const docTop = () => document.documentElement.scrollTop || document.body.scrollTop || 0;
export const noop = () => { };
export const isHidden = (el) => !isVisible(el);
// string manipulation
export const kebabCase = (str) => str.replace(/([a-z])([A-Z])/g, '$1-$2').replace(/\s+/g, '-').toLowerCase();
export const camelCase = (str) => str.replace(/-./g, x => x.toUpperCase()[1]);
export const lowercaseFirstLetter = (str) => str.charAt(0).toLowerCase() + str.substring(1);
// device
export const isMobileOS = () => /Android|webOS|iPhone|iPad|iPod|Opera Mini/i.test(navigator.userAgent);