react-sm-select
Version:
React Multi/Single Select Component
115 lines (101 loc) • 3.39 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
function _toArray(arr) { return Array.isArray(arr) ? arr : Array.from(arr); }
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
/**
* Checks if target is of given type
* @param type
* @param target
* @returns {boolean}
*/
var is = exports.is = function is(type, target) {
return target.constructor === type;
};
/**
* Compose classes
* @param args
* @returns {*|string}
*/
var classes = exports.classes = function classes() {
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return args.reduce(function (acc, item) {
var addOn = '';
if (is(String, item)) addOn = item;
if (is(Object, item)) addOn = Object.keys(item).filter(function (key) {
return !!item[key];
}).join(' ');
if (is(Array, item)) addOn = item.join(' ');
return (acc ? acc + ' ' + addOn : addOn).trim();
}, '');
};
/**
* Filter array by containing text in elements
* @param options
* @param filter
* @returns {*}
*/
var defaultFilterOptions = exports.defaultFilterOptions = function defaultFilterOptions(options, filter) {
return options.filter(function (option) {
return option.label.toLowerCase().includes(filter.toLowerCase());
});
};
/**
* Checks if two arrays are identical
* @param first
* @param second
* @returns {boolean}
*/
var areArraysEqual = exports.areArraysEqual = function areArraysEqual(first, second) {
if (first.length !== second.length) return false;
return !first.reduce(function (A, item, idx) {
return item !== second[idx] ? [].concat(_toConsumableArray(A), [item]) : A;
}, []).length;
};
/**
* Clear array from props doesn't exist in second array
* @param origin
* @param part
* @param single
* @returns {*}
*/
var omitDirtyValues = exports.omitDirtyValues = function omitDirtyValues(origin, part, single) {
var flatOrigin = origin.map(function (item) {
return item.value;
});
var _part$reduce = part.reduce(function (A, item) {
return flatOrigin.includes(item) ? [].concat(_toConsumableArray(A), [item]) : A;
}, []),
_part$reduce2 = _toArray(_part$reduce),
first = _part$reduce2[0],
rest = _part$reduce2.slice(1);
return first ? single ? [first] : [first].concat(_toConsumableArray(rest)) : [];
};
/**
* Attaches listener callback to document touch ot mousedown
* @param cb
*/
var attachDocumentClickListener = exports.attachDocumentClickListener = function attachDocumentClickListener(cb) {
document.addEventListener('touchstart', cb, false);
document.addEventListener('mousedown', cb, false);
};
/**
* Removes listener from document touch ot mousedown
* @param cb
*/
var removeDocumentClickListener = exports.removeDocumentClickListener = function removeDocumentClickListener(cb) {
document.removeEventListener('touchstart', cb, false);
document.removeEventListener('mousedown', cb, false);
};
/**
* Stops event propagation
* @param event.stopPropagation
* @param event.preventDefault
*/
var stopPreventPropagation = exports.stopPreventPropagation = function stopPreventPropagation(event) {
event.stopPropagation();
event.preventDefault();
};
;