Socket
Socket
Sign inDemoInstall

@hig/utils

Package Overview
Dependencies
Maintainers
6
Versions
7
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@hig/utils - npm Package Compare versions

Comparing version 0.2.1 to 0.3.0

63

build/index.es.js

@@ -0,1 +1,3 @@

import memoize from 'lodash.memoize';
/**

@@ -35,3 +37,62 @@ * @param {Array<function(...any): void>} handlers the event handler functions

function memoizeCombineEventHandlers() {
return memoize(combineEventHandlers);
}
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); } }
/**
* @typedef {Object} ButtonEventHandlers
* @property {function(MouseEvent, ...any): void} handleClick
* @property {function(KeyboardEvent, ...any): void} handleKeyDown
*/
/**
* @typedef {Object} Options
* @property {boolean} [preventDefault]
*/
var KEYBOARD_INTERACTIONS = [" ", "Enter"];
/**
* Create event handlers for native button behavior for non-button elements
* @see https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/button_role
*
* @param {function(MouseEvent|KeyboardEvent, ...any): void} [handler] the event handler function
* @param {Options} [options]
* @returns {ButtonEventHandlers}
*/
function createButtonEventHandlers(handler) {
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
if (!handler) return {};
var _options$preventDefau = options.preventDefault,
preventDefault = _options$preventDefau === undefined ? true : _options$preventDefau;
return {
handleClick: handler,
handleKeyDown: function handleKeyDown(event) {
var key = event.key;
if (!KEYBOARD_INTERACTIONS.includes(key)) return;
// Prevent space key default scrolling behavior
if (preventDefault) event.preventDefault();
for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
args[_key - 1] = arguments[_key];
}
handler.apply(undefined, [event].concat(_toConsumableArray(args)));
}
};
}
function memoizeCreateButtonEventHandlers() {
return memoize(createButtonEventHandlers);
}
/**
* Generates a unique ID

@@ -47,2 +108,2 @@ * @param {string} key

export { combineEventHandlers, generateId };
export { combineEventHandlers, memoizeCombineEventHandlers, createButtonEventHandlers, memoizeCreateButtonEventHandlers, generateId };

@@ -5,2 +5,6 @@ 'use strict';

function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
var memoize = _interopDefault(require('lodash.memoize'));
/**

@@ -40,3 +44,62 @@ * @param {Array<function(...any): void>} handlers the event handler functions

function memoizeCombineEventHandlers() {
return memoize(combineEventHandlers);
}
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); } }
/**
* @typedef {Object} ButtonEventHandlers
* @property {function(MouseEvent, ...any): void} handleClick
* @property {function(KeyboardEvent, ...any): void} handleKeyDown
*/
/**
* @typedef {Object} Options
* @property {boolean} [preventDefault]
*/
var KEYBOARD_INTERACTIONS = [" ", "Enter"];
/**
* Create event handlers for native button behavior for non-button elements
* @see https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/button_role
*
* @param {function(MouseEvent|KeyboardEvent, ...any): void} [handler] the event handler function
* @param {Options} [options]
* @returns {ButtonEventHandlers}
*/
function createButtonEventHandlers(handler) {
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
if (!handler) return {};
var _options$preventDefau = options.preventDefault,
preventDefault = _options$preventDefau === undefined ? true : _options$preventDefau;
return {
handleClick: handler,
handleKeyDown: function handleKeyDown(event) {
var key = event.key;
if (!KEYBOARD_INTERACTIONS.includes(key)) return;
// Prevent space key default scrolling behavior
if (preventDefault) event.preventDefault();
for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
args[_key - 1] = arguments[_key];
}
handler.apply(undefined, [event].concat(_toConsumableArray(args)));
}
};
}
function memoizeCreateButtonEventHandlers() {
return memoize(createButtonEventHandlers);
}
/**
* Generates a unique ID

@@ -53,2 +116,5 @@ * @param {string} key

exports.combineEventHandlers = combineEventHandlers;
exports.memoizeCombineEventHandlers = memoizeCombineEventHandlers;
exports.createButtonEventHandlers = createButtonEventHandlers;
exports.memoizeCreateButtonEventHandlers = memoizeCreateButtonEventHandlers;
exports.generateId = generateId;

@@ -0,1 +1,9 @@

# [@hig/utils-v0.3.0](https://github.com/Autodesk/hig/compare/@hig/utils@0.2.1...@hig/utils@0.3.0) (2018-09-26)
### Features
* **a11y:** add `createButtonEventHandlers` ([05b93f4](https://github.com/Autodesk/hig/commit/05b93f4))
* **performance:** add `memoizeCombineEventHandlers` ([bba60c4](https://github.com/Autodesk/hig/commit/bba60c4))
# [@hig/utils-v0.2.1](https://github.com/Autodesk/hig/compare/@hig/utils@0.2.0...@hig/utils@0.2.1) (2018-08-24)

@@ -2,0 +10,0 @@

5

package.json
{
"name": "@hig/utils",
"version": "0.2.1",
"version": "0.3.0",
"description": "Non-component specific utility functions for HIG components",

@@ -19,2 +19,5 @@ "author": "Autodesk Inc.",

],
"dependencies": {
"lodash.memoize": "^4.1.2"
},
"devDependencies": {

@@ -21,0 +24,0 @@ "@hig/babel-preset": "^0.1.0",

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc