A reactive document.activeElement. Check which element is currently focused.
npm install @solid-primitives/active-element



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