npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

focusmove

v1.2.44

Published

A javascript spatial navigation (keyboard navigation)

Downloads

14

Readme

A javascript spatial navigation library

NPM version Build Status

Installation

npm install focusmove --save

Build

npm run build

Simply usage:

make the focusable element have a tabindex attribute


<script type="text/javascript" src="dist/focusmove.js"></script>
<script>
window.onload=function(){
    FocusMove.ready();
}
</script>

Normaly usage

var config={
priority: Priority.LEFT | Priority.TOP, Priority. default processing all.Multiple values can be connected by '|' , e.g. Priority.LEFT | Priority.TOP. when it have Priority.CONTAIN  the other four properties is invalid.

distmode: FocusMove.DistMode.CENTER, // Distance calculation method,center or edge.default is FocusMove.DistMode.EDGE.

selector: "a", // selector who can used by document.querySelectorAll. default is "[tabindex]"

scope: document.getElementById("container"), // lock the scope in this htmlelement.

floatframe: document.getElementById("floatframe"),//A float div covered on the focus element if necessary.
enableaction: true, // if dircetion attribute id is not found then eval dirction string and focus attribute as script.      
       

}
FocusMove.ready(); 
FocusMove.init(); // Initialization to get focus object. setSelector() and ready() will call this function,you don't have to call it manually.This function will be set the first element to be focused.
FocusMove.onFocus=function(obj){} // will call after focus changed.
function onKeyEnterDown(obj) {
    $(obj).trigger("click");
}

FocusMove.addEvent({
key: 13,// keycode
fun: onKeyEnterDown,// callback
once:false,// auto remove if once is ture,default is false;
before:false// call fun before focus change if ture or after,default is false
}) // Additional keysevent.

FocusMove.removeEvent({
key: 13,
fun: onKeyEnterDown
}) // remove keyevent which added by addEvent().

FocusMove.setFocus(htmlelement)  // change focus manual

FocusMove.setScope(htmlelement) // change scope

FocusMove.setSelector(string) // change focus item selector 

FocusMove.preventDefault()//skip once action

FocusMove.pause = true; //pause focus move

Declarative usage

this is hight priority then the autofocus way.


<div  id="f1" fm-right="f2" fm-click="alert('key enter')" tabindex="-1">goto world</div>
<div  id="f2" fm-left="f1" fm-up="alert('you do up')" tabindex="-1">goto world</div>
  • if current focus target has "fm-left fm-right fm-up fm-down" property,it will force set to target focus.
  • if direction property value is '-1' ,the target direction will be stop move any way.
  • if direction is empty,it will be auto move.
  • if fm-[direction/click] is not empty then the engine will first find target element which id is the same as this attribute.if not found then try to execute attribute string as javascript and 'this' is current element。

FocusScopeManage

hash usage:

FocusMove.Manage.add("menu"); //add new scope to manager

FocusMove.Manage.add("menu",{scope:"a"}); //add new scope to manager

FocusMove.Manage.change("menu"); //change scope

FocusMove.Manage.remove("menu"); //remove scope from manager

stack usage:

FocusMove.Manage.push(); //push current scope to stack.

FocusMove.Manage.pop(); //remove current scope and revert last scope from stack.

FocusMove.Manage.clear(); //clear all stack and scope list.