mirror of
https://github.com/ExactTarget/fuelux.git
synced 2026-04-26 03:00:10 -04:00
85 lines
2.2 KiB
JavaScript
85 lines
2.2 KiB
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 --
|