@solid-primitives/active-element
Non-reactive primitives:
Reactive primitives:
Directives:
focus
- A directive that notifies you when the element becomes active or inactive.
Installation
npm install @solid-primitives/active-element
yarn add @solid-primitives/active-element
makeActiveElementListener
Added id @2.0.0
Attaches event listeners to window, listening for the changes of the document.activeElement
.
import { makeActiveElementListener } from "@solid-primitives/active-element";
const [activeElement, setActiveElement] = createSignal(null);
const clear = makeActiveElementListener(el => setActiveElement(el));
clear();
Definition
function makeActiveElementListener(callback: (element: Element | null) => void): VoidFunction;
makeFocusListener
Added id @2.0.0
Attaches "blur" and "focus" event listeners to the element.
import { makeFocusListener } from "@solid-primitives/active-element";
const [isFocused, setIsFocused] = createSignal(false);
const clear = makeFocusListener(focused => setIsFocused(focused));
clear();
Definition
function makeFocusListener(
target: Element,
callback: (isActive: boolean) => void,
useCapture?: boolean,
): VoidFunction;
createActiveElement
Provides reactive signal of document.activeElement
. Check which element is currently focused.
How to use it
import { createActiveElement } from "@solid-primitives/active-element";
const activeEl = createActiveElement();
createEffect(() => {
console.log(activeEl());
});
Definition
function createActiveElement(): Accessor<Element | null>;
createFocusSignal
Provides a signal representing element's focus state.
How to use it
import { createFocusSignal } from "@solid-primitives/active-element";
const isFocused = createFocusSignal(el);
isFocused();
const [ref, setRef] = createSignal<Element>(el);
const isFocused = createFocusSignal(ref);
let ref;
createFocusSignal(() => ref);
<div ref={ref} />;
Definition
function createFocusSignal(target: MaybeAccessor<Element>): Accessor<boolean>;
focus
A directive that notifies you when the element becomes active or inactive.
const [active, setActive] = createSignal(false)
<input use:focus={setActive} />
Definition
Directive<(isActive: boolean) => void>;
Demo
https://codesandbox.io/s/solid-primitives-active-element-q4kul?file=/index.tsx
Changelog
See CHANGELOG.md