focus-lock
Advanced tools
Comparing version 1.2.0 to 1.3.0
@@ -8,3 +8,3 @@ import * as allConstants from './constants'; | ||
import { captureFocusRestore } from './return-focus'; | ||
import { focusNextElement, focusPrevElement, getRelativeFocusable } from './sibling'; | ||
import { focusNextElement, focusPrevElement, getRelativeFocusable, focusFirstElement, focusLastElement } from './sibling'; | ||
import { getFocusableNodes, getTabbableNodes } from './utils/DOMutils'; | ||
@@ -16,3 +16,3 @@ /** | ||
declare const constants: typeof allConstants; | ||
export { constants, focusInside, focusIsHidden, moveFocusInside, focusSolver, expandFocusableNodes, getFocusableNodes, getTabbableNodes, focusNextElement, focusPrevElement, getRelativeFocusable, captureFocusRestore, }; | ||
export { constants, focusInside, focusIsHidden, moveFocusInside, focusSolver, expandFocusableNodes, getFocusableNodes, getTabbableNodes, focusNextElement, focusPrevElement, focusFirstElement, focusLastElement, getRelativeFocusable, captureFocusRestore, }; | ||
/** | ||
@@ -19,0 +19,0 @@ * @deprecated - please use {@link moveFocusInside} named export |
@@ -8,3 +8,3 @@ import * as allConstants from './constants'; | ||
import { captureFocusRestore } from './return-focus'; | ||
import { focusNextElement, focusPrevElement, getRelativeFocusable } from './sibling'; | ||
import { focusNextElement, focusPrevElement, getRelativeFocusable, focusFirstElement, focusLastElement, } from './sibling'; | ||
import { getFocusableNodes, getTabbableNodes } from './utils/DOMutils'; | ||
@@ -24,3 +24,3 @@ /** | ||
// | ||
focusNextElement, focusPrevElement, getRelativeFocusable, | ||
focusNextElement, focusPrevElement, focusFirstElement, focusLastElement, getRelativeFocusable, | ||
// | ||
@@ -27,0 +27,0 @@ captureFocusRestore, }; |
@@ -11,3 +11,3 @@ import { getTabbableNodes } from './utils/DOMutils'; | ||
var currentElement = element; | ||
while (currentElement) { | ||
while (currentElement && currentElement !== document.body) { | ||
stack.push({ | ||
@@ -14,0 +14,0 @@ current: weakRef(currentElement), |
@@ -16,3 +16,4 @@ import { NodeIndex } from './utils/tabOrder'; | ||
*/ | ||
export declare const getRelativeFocusable: (element: Element, scope: HTMLElement | HTMLElement[] | Document, useTabbables: boolean) => UnresolvedSolution | ResolvedSolution | undefined; | ||
export declare const getRelativeFocusable: (element: Element, scope: HTMLElement | HTMLElement[], useTabbables: boolean) => UnresolvedSolution | ResolvedSolution | undefined; | ||
declare type ScopeRef = HTMLElement | HTMLElement[]; | ||
interface FocusNextOptions { | ||
@@ -23,3 +24,3 @@ /** | ||
*/ | ||
scope?: HTMLElement | HTMLElement[] | HTMLDocument; | ||
scope?: ScopeRef; | ||
/** | ||
@@ -53,2 +54,13 @@ * enables cycling inside the scope | ||
export declare const focusPrevElement: (fromElement: Element, options?: FocusNextOptions) => void; | ||
declare type FocusBoundaryOptions = Pick<FocusNextOptions, 'focusOptions' | 'onlyTabbable'>; | ||
/** | ||
* focuses first element in the tab-order | ||
* @param {FocusNextOptions} options - focus options | ||
*/ | ||
export declare const focusFirstElement: (scope: ScopeRef, options?: FocusBoundaryOptions) => void; | ||
/** | ||
* focuses last element in the tab order | ||
* @param {FocusNextOptions} options - focus options | ||
*/ | ||
export declare const focusLastElement: (scope: ScopeRef, options?: FocusBoundaryOptions) => void; | ||
export {}; |
@@ -39,2 +39,11 @@ import { focusOn } from './commands'; | ||
}; | ||
var getBoundary = function (shards, useTabbables) { | ||
var set = useTabbables | ||
? getTabbableNodes(asArray(shards), new Map()) | ||
: getFocusableNodes(asArray(shards), new Map()); | ||
return { | ||
first: set[0], | ||
last: set[set.length - 1], | ||
}; | ||
}; | ||
var defaultOptions = function (options) { | ||
@@ -83,1 +92,25 @@ return Object.assign({ | ||
}; | ||
var pickBoundary = function (scope, options, what) { | ||
var _a; | ||
var boundary = getBoundary(scope, (_a = options.onlyTabbable) !== null && _a !== void 0 ? _a : true); | ||
var node = boundary[what]; | ||
if (node) { | ||
focusOn(node.node, options.focusOptions); | ||
} | ||
}; | ||
/** | ||
* focuses first element in the tab-order | ||
* @param {FocusNextOptions} options - focus options | ||
*/ | ||
export var focusFirstElement = function (scope, options) { | ||
if (options === void 0) { options = {}; } | ||
pickBoundary(scope, options, 'first'); | ||
}; | ||
/** | ||
* focuses last element in the tab order | ||
* @param {FocusNextOptions} options - focus options | ||
*/ | ||
export var focusLastElement = function (scope, options) { | ||
if (options === void 0) { options = {}; } | ||
pickBoundary(scope, options, 'last'); | ||
}; |
@@ -8,3 +8,3 @@ import * as allConstants from './constants'; | ||
import { captureFocusRestore } from './return-focus'; | ||
import { focusNextElement, focusPrevElement, getRelativeFocusable } from './sibling'; | ||
import { focusNextElement, focusPrevElement, getRelativeFocusable, focusFirstElement, focusLastElement } from './sibling'; | ||
import { getFocusableNodes, getTabbableNodes } from './utils/DOMutils'; | ||
@@ -16,3 +16,3 @@ /** | ||
declare const constants: typeof allConstants; | ||
export { constants, focusInside, focusIsHidden, moveFocusInside, focusSolver, expandFocusableNodes, getFocusableNodes, getTabbableNodes, focusNextElement, focusPrevElement, getRelativeFocusable, captureFocusRestore, }; | ||
export { constants, focusInside, focusIsHidden, moveFocusInside, focusSolver, expandFocusableNodes, getFocusableNodes, getTabbableNodes, focusNextElement, focusPrevElement, focusFirstElement, focusLastElement, getRelativeFocusable, captureFocusRestore, }; | ||
/** | ||
@@ -19,0 +19,0 @@ * @deprecated - please use {@link moveFocusInside} named export |
@@ -8,3 +8,3 @@ import * as allConstants from './constants'; | ||
import { captureFocusRestore } from './return-focus'; | ||
import { focusNextElement, focusPrevElement, getRelativeFocusable } from './sibling'; | ||
import { focusNextElement, focusPrevElement, getRelativeFocusable, focusFirstElement, focusLastElement, } from './sibling'; | ||
import { getFocusableNodes, getTabbableNodes } from './utils/DOMutils'; | ||
@@ -24,3 +24,3 @@ /** | ||
// | ||
focusNextElement, focusPrevElement, getRelativeFocusable, | ||
focusNextElement, focusPrevElement, focusFirstElement, focusLastElement, getRelativeFocusable, | ||
// | ||
@@ -27,0 +27,0 @@ captureFocusRestore, }; |
@@ -11,3 +11,3 @@ import { getTabbableNodes } from './utils/DOMutils'; | ||
let currentElement = element; | ||
while (currentElement) { | ||
while (currentElement && currentElement !== document.body) { | ||
stack.push({ | ||
@@ -14,0 +14,0 @@ current: weakRef(currentElement), |
@@ -16,3 +16,4 @@ import { NodeIndex } from './utils/tabOrder'; | ||
*/ | ||
export declare const getRelativeFocusable: (element: Element, scope: HTMLElement | HTMLElement[] | Document, useTabbables: boolean) => UnresolvedSolution | ResolvedSolution | undefined; | ||
export declare const getRelativeFocusable: (element: Element, scope: HTMLElement | HTMLElement[], useTabbables: boolean) => UnresolvedSolution | ResolvedSolution | undefined; | ||
declare type ScopeRef = HTMLElement | HTMLElement[]; | ||
interface FocusNextOptions { | ||
@@ -23,3 +24,3 @@ /** | ||
*/ | ||
scope?: HTMLElement | HTMLElement[] | HTMLDocument; | ||
scope?: ScopeRef; | ||
/** | ||
@@ -53,2 +54,13 @@ * enables cycling inside the scope | ||
export declare const focusPrevElement: (fromElement: Element, options?: FocusNextOptions) => void; | ||
declare type FocusBoundaryOptions = Pick<FocusNextOptions, 'focusOptions' | 'onlyTabbable'>; | ||
/** | ||
* focuses first element in the tab-order | ||
* @param {FocusNextOptions} options - focus options | ||
*/ | ||
export declare const focusFirstElement: (scope: ScopeRef, options?: FocusBoundaryOptions) => void; | ||
/** | ||
* focuses last element in the tab order | ||
* @param {FocusNextOptions} options - focus options | ||
*/ | ||
export declare const focusLastElement: (scope: ScopeRef, options?: FocusBoundaryOptions) => void; | ||
export {}; |
@@ -36,2 +36,11 @@ import { focusOn } from './commands'; | ||
}; | ||
const getBoundary = (shards, useTabbables) => { | ||
const set = useTabbables | ||
? getTabbableNodes(asArray(shards), new Map()) | ||
: getFocusableNodes(asArray(shards), new Map()); | ||
return { | ||
first: set[0], | ||
last: set[set.length - 1], | ||
}; | ||
}; | ||
const defaultOptions = (options) => Object.assign({ | ||
@@ -69,1 +78,23 @@ scope: document.body, | ||
}; | ||
const pickBoundary = (scope, options, what) => { | ||
var _a; | ||
const boundary = getBoundary(scope, (_a = options.onlyTabbable) !== null && _a !== void 0 ? _a : true); | ||
const node = boundary[what]; | ||
if (node) { | ||
focusOn(node.node, options.focusOptions); | ||
} | ||
}; | ||
/** | ||
* focuses first element in the tab-order | ||
* @param {FocusNextOptions} options - focus options | ||
*/ | ||
export const focusFirstElement = (scope, options = {}) => { | ||
pickBoundary(scope, options, 'first'); | ||
}; | ||
/** | ||
* focuses last element in the tab order | ||
* @param {FocusNextOptions} options - focus options | ||
*/ | ||
export const focusLastElement = (scope, options = {}) => { | ||
pickBoundary(scope, options, 'last'); | ||
}; |
@@ -8,3 +8,3 @@ import * as allConstants from './constants'; | ||
import { captureFocusRestore } from './return-focus'; | ||
import { focusNextElement, focusPrevElement, getRelativeFocusable } from './sibling'; | ||
import { focusNextElement, focusPrevElement, getRelativeFocusable, focusFirstElement, focusLastElement } from './sibling'; | ||
import { getFocusableNodes, getTabbableNodes } from './utils/DOMutils'; | ||
@@ -16,3 +16,3 @@ /** | ||
declare const constants: typeof allConstants; | ||
export { constants, focusInside, focusIsHidden, moveFocusInside, focusSolver, expandFocusableNodes, getFocusableNodes, getTabbableNodes, focusNextElement, focusPrevElement, getRelativeFocusable, captureFocusRestore, }; | ||
export { constants, focusInside, focusIsHidden, moveFocusInside, focusSolver, expandFocusableNodes, getFocusableNodes, getTabbableNodes, focusNextElement, focusPrevElement, focusFirstElement, focusLastElement, getRelativeFocusable, captureFocusRestore, }; | ||
/** | ||
@@ -19,0 +19,0 @@ * @deprecated - please use {@link moveFocusInside} named export |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.captureFocusRestore = exports.getRelativeFocusable = exports.focusPrevElement = exports.focusNextElement = exports.getTabbableNodes = exports.getFocusableNodes = exports.expandFocusableNodes = exports.focusSolver = exports.moveFocusInside = exports.focusIsHidden = exports.focusInside = exports.constants = void 0; | ||
exports.captureFocusRestore = exports.getRelativeFocusable = exports.focusLastElement = exports.focusFirstElement = exports.focusPrevElement = exports.focusNextElement = exports.getTabbableNodes = exports.getFocusableNodes = exports.expandFocusableNodes = exports.focusSolver = exports.moveFocusInside = exports.focusIsHidden = exports.focusInside = exports.constants = void 0; | ||
var tslib_1 = require("tslib"); | ||
@@ -22,2 +22,4 @@ var allConstants = (0, tslib_1.__importStar)(require("./constants")); | ||
Object.defineProperty(exports, "getRelativeFocusable", { enumerable: true, get: function () { return sibling_1.getRelativeFocusable; } }); | ||
Object.defineProperty(exports, "focusFirstElement", { enumerable: true, get: function () { return sibling_1.focusFirstElement; } }); | ||
Object.defineProperty(exports, "focusLastElement", { enumerable: true, get: function () { return sibling_1.focusLastElement; } }); | ||
var DOMutils_1 = require("./utils/DOMutils"); | ||
@@ -24,0 +26,0 @@ Object.defineProperty(exports, "getFocusableNodes", { enumerable: true, get: function () { return DOMutils_1.getFocusableNodes; } }); |
@@ -14,3 +14,3 @@ "use strict"; | ||
var currentElement = element; | ||
while (currentElement) { | ||
while (currentElement && currentElement !== document.body) { | ||
stack.push({ | ||
@@ -17,0 +17,0 @@ current: weakRef(currentElement), |
@@ -16,3 +16,4 @@ import { NodeIndex } from './utils/tabOrder'; | ||
*/ | ||
export declare const getRelativeFocusable: (element: Element, scope: HTMLElement | HTMLElement[] | Document, useTabbables: boolean) => UnresolvedSolution | ResolvedSolution | undefined; | ||
export declare const getRelativeFocusable: (element: Element, scope: HTMLElement | HTMLElement[], useTabbables: boolean) => UnresolvedSolution | ResolvedSolution | undefined; | ||
declare type ScopeRef = HTMLElement | HTMLElement[]; | ||
interface FocusNextOptions { | ||
@@ -23,3 +24,3 @@ /** | ||
*/ | ||
scope?: HTMLElement | HTMLElement[] | HTMLDocument; | ||
scope?: ScopeRef; | ||
/** | ||
@@ -53,2 +54,13 @@ * enables cycling inside the scope | ||
export declare const focusPrevElement: (fromElement: Element, options?: FocusNextOptions) => void; | ||
declare type FocusBoundaryOptions = Pick<FocusNextOptions, 'focusOptions' | 'onlyTabbable'>; | ||
/** | ||
* focuses first element in the tab-order | ||
* @param {FocusNextOptions} options - focus options | ||
*/ | ||
export declare const focusFirstElement: (scope: ScopeRef, options?: FocusBoundaryOptions) => void; | ||
/** | ||
* focuses last element in the tab order | ||
* @param {FocusNextOptions} options - focus options | ||
*/ | ||
export declare const focusLastElement: (scope: ScopeRef, options?: FocusBoundaryOptions) => void; | ||
export {}; |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.focusPrevElement = exports.focusNextElement = exports.getRelativeFocusable = void 0; | ||
exports.focusLastElement = exports.focusFirstElement = exports.focusPrevElement = exports.focusNextElement = exports.getRelativeFocusable = void 0; | ||
var commands_1 = require("./commands"); | ||
@@ -43,2 +43,11 @@ var DOMutils_1 = require("./utils/DOMutils"); | ||
exports.getRelativeFocusable = getRelativeFocusable; | ||
var getBoundary = function (shards, useTabbables) { | ||
var set = useTabbables | ||
? (0, DOMutils_1.getTabbableNodes)((0, array_1.asArray)(shards), new Map()) | ||
: (0, DOMutils_1.getFocusableNodes)((0, array_1.asArray)(shards), new Map()); | ||
return { | ||
first: set[0], | ||
last: set[set.length - 1], | ||
}; | ||
}; | ||
var defaultOptions = function (options) { | ||
@@ -89,1 +98,27 @@ return Object.assign({ | ||
exports.focusPrevElement = focusPrevElement; | ||
var pickBoundary = function (scope, options, what) { | ||
var _a; | ||
var boundary = getBoundary(scope, (_a = options.onlyTabbable) !== null && _a !== void 0 ? _a : true); | ||
var node = boundary[what]; | ||
if (node) { | ||
(0, commands_1.focusOn)(node.node, options.focusOptions); | ||
} | ||
}; | ||
/** | ||
* focuses first element in the tab-order | ||
* @param {FocusNextOptions} options - focus options | ||
*/ | ||
var focusFirstElement = function (scope, options) { | ||
if (options === void 0) { options = {}; } | ||
pickBoundary(scope, options, 'first'); | ||
}; | ||
exports.focusFirstElement = focusFirstElement; | ||
/** | ||
* focuses last element in the tab order | ||
* @param {FocusNextOptions} options - focus options | ||
*/ | ||
var focusLastElement = function (scope, options) { | ||
if (options === void 0) { options = {}; } | ||
pickBoundary(scope, options, 'last'); | ||
}; | ||
exports.focusLastElement = focusLastElement; |
{ | ||
"name": "focus-lock", | ||
"version": "1.2.0", | ||
"version": "1.3.0", | ||
"description": "DOM trap for a focus", | ||
@@ -5,0 +5,0 @@ "main": "dist/es5/index.js", |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
183023
4365