@solid-primitives/active-element
TypeScript icon, indicating that this package has built-in type declarations

2.0.20 • Public • Published

Solid Primitives Active Element

@solid-primitives/active-element

turborepo size size stage

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
# or
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));

// remove listeners (happens also on cleanup)
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));

// remove listeners (happens also on cleanup)
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()); // T: Element | null
});

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(); // T: boolean

// you can also use signals for ref
const [ref, setRef] = createSignal<Element>(el);
const isFocused = createFocusSignal(ref);
// this way if the element changes,
// the "isFocused" will start checking the new element

// is targeting a ref from jsx, pass it as a function
// or wrap primitive in onMount, so that it is accessed once mounted
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

Package Sidebar

Install

npm i @solid-primitives/active-element

Weekly Downloads

1,556

Version

2.0.20

License

MIT

Unpacked Size

19 kB

Total Files

8

Last publish

Collaborators

  • thetarnav.
  • lexlohr
  • davedbase