fuelux
Version:
Base Fuel UX styles and controls
85 lines (71 loc) • 2.25 kB
JavaScript
/* global jQuery:true */
/*
* Fuel UX Utilities
* https://github.com/ExactTarget/fuelux
*
* Copyright (c) 2016 ExactTarget
* Licensed under the BSD New license.
*/
// -- BEGIN UMD WRAPPER PREFACE --
// For more information on UMD visit:
// https://github.com/umdjs/umd/blob/master/templates/jqueryPlugin.js
// Uses CommonJS, AMD or browser globals to create a jQuery plugin.
(function umdFactory (factory) {
if (typeof define === 'function' && define.amd) {
// if AMD loader is available, register as an anonymous module.
define(['jquery'], factory);
} else if (typeof exports === 'object') {
// Node/CommonJS
module.exports = factory(require('jquery'));
} else {
// OR use browser globals if AMD is not present
factory(jQuery);
}
}(function utilitiesWrapper ($) {
// -- END UMD WRAPPER PREFACE --
// -- BEGIN MODULE CODE HERE --
var CONST = {
BACKSPACE_KEYCODE: 8,
COMMA_KEYCODE: 188, // `,` & `<`
DELETE_KEYCODE: 46,
DOWN_ARROW_KEYCODE: 40,
ENTER_KEYCODE: 13,
TAB_KEYCODE: 9,
UP_ARROW_KEYCODE: 38
};
var isShiftHeld = function isShiftHeld (e) { return e.shiftKey === true; };
var isKey = function isKey (keyCode) {
return function compareKeycodes (e) {
return e.keyCode === keyCode;
};
};
var isBackspaceKey = isKey(CONST.BACKSPACE_KEYCODE);
var isDeleteKey = isKey(CONST.DELETE_KEYCODE);
var isTabKey = isKey(CONST.TAB_KEYCODE);
var isUpArrow = isKey(CONST.UP_ARROW_KEYCODE);
var isDownArrow = isKey(CONST.DOWN_ARROW_KEYCODE);
var ENCODED_REGEX = /&[^\s]*;/;
/*
* to prevent double encoding decodes content in loop until content is encoding free
*/
var cleanInput = function cleanInput (questionableMarkup) {
// check for encoding and decode
while (ENCODED_REGEX.test(questionableMarkup)) {
questionableMarkup = $('<i>').html(questionableMarkup).text();
}
// string completely decoded now encode it
return $('<i>').text(questionableMarkup).html();
};
$.fn.utilities = {
CONST: CONST,
cleanInput: cleanInput,
isBackspaceKey: isBackspaceKey,
isDeleteKey: isDeleteKey,
isShiftHeld: isShiftHeld,
isTabKey: isTabKey,
isUpArrow: isUpArrow,
isDownArrow: isDownArrow
};
// -- BEGIN UMD WRAPPER AFTERWORD --
}));
// -- END UMD WRAPPER AFTERWORD --