@brytdesigns/web-component-modal 1.1.6 → 1.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/esm/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createWithElementContext, customShadowlessElement, correctElementType, toHyphenated, getContextFromProvider } from '@brytdesigns/web-component-core/utils';
|
|
1
|
+
import { createWithElementContext, customShadowlessElement, correctElementType, toHyphenated, getContextFromProvider, disableBodyScroll, enableBodyScroll } from '@brytdesigns/web-component-core/utils';
|
|
2
2
|
import { splitProps, createEffect, on, batch, onCleanup, untrack, mergeProps, onMount } from 'solid-js';
|
|
3
3
|
import { animate } from 'motion';
|
|
4
4
|
import { awaitAllAnimations, getTransitionConfig } from '@brytdesigns/web-component-core/animation';
|
|
@@ -6,7 +6,6 @@ import { createContext, consume, provide } from 'component-register';
|
|
|
6
6
|
import { createStore } from 'solid-js/store';
|
|
7
7
|
import { abortablePromise } from '@brytdesigns/web-component-core/promise';
|
|
8
8
|
import { observeElementInViewport } from 'observe-element-in-viewport';
|
|
9
|
-
import { disableBodyScroll, enableBodyScroll } from 'body-scroll-lock-upgrade';
|
|
10
9
|
import { createFocusTrap } from '@brytdesigns/web-component-core/focusTrap';
|
|
11
10
|
|
|
12
11
|
var __defProp = Object.defineProperty;
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/modal-panel.ts","../../src/hooks/useModal.ts","../../src/components/modal-trigger.ts","../../src/components/modal-backdrop.ts","../../src/components/modal-context.ts","../../src/utils.ts","../../src/index.ts"],"names":["currentValue","state","open","createEffect","on","onCleanup","element","Component","Name","onMount","getTransitionConfig","animate","splitProps","focusTrap"],"mappings":"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","file":"index.js","sourcesContent":["import type { CorrectComponentType } from \"@brytdesigns/web-component-core/utils\";\n\nimport { createEffect, onMount, on, onCleanup } from \"solid-js\";\nimport { animate } from \"motion\";\nimport { getTransitionConfig } from \"@brytdesigns/web-component-core/animation\";\n\nimport { useModal } from \"../hooks/index.js\";\n\nexport type Props = {};\n\nexport const Name = \"modal-panel\";\n\nexport const Component: CorrectComponentType<Props> = (_, { element }) => {\n const [state, { updateAnimationQueue }] = useModal(element);\n\n let isFirstRender = true;\n\n createEffect(\n on(\n () => state.isOpen,\n (isOpen) => {\n if (!isOpen || isFirstRender) return;\n const animation = enter(element);\n updateAnimationQueue(animation);\n return onCleanup(() => {\n if (animation.state !== \"finished\") animation.complete();\n });\n },\n ),\n );\n\n createEffect(\n on(\n () => state.isOpen,\n (isOpen) => {\n if (isOpen || isFirstRender) return;\n const animation = exit(element);\n updateAnimationQueue(animation);\n return onCleanup(() => {\n if (animation.state !== \"finished\") animation.complete();\n });\n },\n ),\n );\n\n onMount(() => {\n isFirstRender = false;\n });\n\n function enter(element: HTMLElement) {\n const style = window.getComputedStyle(element);\n const transition = getTransitionConfig(style);\n\n return animate(\n element,\n {\n x: [`var(--${Name}--slide-x-from)`, `var(--${Name}--slide-x-to)`],\n y: [`var(--${Name}--slide-y-from)`, `var(--${Name}--slide-y-to)`],\n scaleY: [`var(--${Name}--scale-y-from)`, `var(--${Name}--scale-y-to)`],\n scaleX: [`var(--${Name}--scale-x-from)`, `var(--${Name}--scale-x-to)`],\n opacity: [`var(--${Name}--opacity-from)`, `var(--${Name}--opacity-to)`],\n },\n transition,\n );\n }\n\n function exit(element: HTMLElement) {\n const style = window.getComputedStyle(element);\n const transition = getTransitionConfig(style);\n return animate(\n element,\n {\n x: [`var(--${Name}--slide-x-to)`, `var(--${Name}--slide-x-from)`],\n y: [`var(--${Name}--slide-y-to)`, `var(--${Name}--slide-y-from)`],\n scaleY: [`var(--${Name}--scale-y-to)`, `var(--${Name}--scale-y-from)`],\n scaleX: [`var(--${Name}--scale-x-to)`, `var(--${Name}--scale-x-from)`],\n opacity: [`var(--${Name}--opacity-to)`, `var(--${Name}--opacity-from)`],\n },\n transition,\n );\n }\n};\n","import {\n type ICustomElement,\n createContext,\n provide,\n consume,\n} from \"component-register\";\nimport {\n createEffect,\n mergeProps,\n on,\n batch,\n splitProps,\n untrack,\n onCleanup,\n} from \"solid-js\";\nimport { createStore } from \"solid-js/store\";\n\nimport type { AnimationPlaybackControlsWithThen } from \"motion\";\nimport { abortablePromise } from \"@brytdesigns/web-component-core/promise\";\nimport { awaitAllAnimations } from \"@brytdesigns/web-component-core/animation\";\nimport {\n toHyphenated,\n getContextFromProvider,\n createWithElementContext,\n} from \"@brytdesigns/web-component-core/utils\";\n\ntype StoreContext = {\n animationQueue: AnimationPlaybackControlsWithThen[];\n};\n\ntype CreateContextOptions = {\n root: HTMLElement & ICustomElement;\n isOpen: boolean;\n isAnimating: boolean;\n};\n\ntype WalkableNode = Parameters<typeof provide>[2];\n\ntype ModalContext = ReturnType<typeof initializeModalContext>;\n\nfunction initializeModalContext(props: CreateContextOptions) {\n const [element, stateProps] = splitProps(props, [\"root\"]);\n const [store, setStore] = createStore<StoreContext>({ animationQueue: [] });\n\n createEffect(\n on(\n () => store.animationQueue,\n (animationQueue) => {\n if (!animationQueue.length) return;\n const controller = new AbortController();\n const animations = awaitAllAnimations(animationQueue);\n const abortableAnimations = abortablePromise(\n animations,\n controller.signal,\n );\n setElementState(\"isAnimating\", true);\n abortableAnimations.finally(() => {\n batch(() => {\n setElementState(\"isAnimating\", false);\n setStore(\"animationQueue\", []);\n });\n });\n\n return onCleanup(() => {\n controller.abort(\"Aborting modal animations\");\n });\n },\n ),\n );\n\n function setElementState(\n key: keyof Omit<CreateContextOptions, \"root\">,\n value: boolean | ((v: boolean) => boolean),\n ) {\n const currentValue = untrack(() => props[key]);\n if (typeof value === \"function\") {\n const currentValue = untrack(() => props[key]);\n const result = value(currentValue || false);\n if (`${currentValue}` === `${value}`) return;\n element.root.setAttribute(toHyphenated(key), `${result}`);\n return;\n }\n if (`${currentValue}` === `${value}`) return;\n return element.root.setAttribute(toHyphenated(key), `${value}`);\n }\n\n return [\n mergeProps(store, stateProps),\n { setElementState, setStore },\n ] as const;\n}\n\nconst ModalContextState = createContext(initializeModalContext);\n\nexport const provideModalContext = (\n initialState: Omit<CreateContextOptions, \"root\">,\n element: WalkableNode,\n): ModalContext => {\n const props = mergeProps(initialState, { root: element });\n return provide(ModalContextState, props, element);\n};\n\nexport const useModalContext = (context: ModalContext) => {\n const [state, { setElementState, setStore: setState }] = context;\n\n function updateAnimationQueue(animation: AnimationPlaybackControlsWithThen) {\n setState(\"animationQueue\", (state) => [...state, animation]);\n }\n\n function close() {\n setElementState(\"isOpen\", false);\n }\n\n function open() {\n setElementState(\"isOpen\", true);\n }\n\n function toggle() {\n setElementState(\"isOpen\", (open) => !open);\n }\n\n return [state, { updateAnimationQueue, close, open, toggle }] as const;\n};\n\nexport const useModal = (element: HTMLElement & ICustomElement) => {\n const context: ModalContext = consume(ModalContextState, element);\n\n if (!context) {\n throw console.error(\n \"ModalContext not found! Please ensure to wrap your custom element with modal-context element.\",\n );\n }\n\n return useModalContext(context);\n};\n\nexport const withModalElementContext = createWithElementContext<\n typeof ModalContextState,\n ModalContext\n>(ModalContextState);\n\nexport const getModalContext = (element: Element) => {\n const context = getContextFromProvider<ModalContext>(\n ModalContextState,\n element,\n );\n return useModalContext(context);\n};\n","import type { CorrectComponentType } from \"@brytdesigns/web-component-core/utils\";\nimport type { Action } from \"../consts\";\n\nimport { createEffect, onCleanup } from \"solid-js\";\nimport { observeElementInViewport } from \"observe-element-in-viewport\";\n\nimport { useModalContext, withModalElementContext } from \"../hooks/index.js\";\n\nexport type Props = {\n target?: string;\n action?: Action | \"\";\n on?: keyof HTMLElementEventMap | \"enter\" | \"exit\";\n preventDefault: boolean;\n};\n\nexport const Name = \"modal-trigger\";\n\nexport const Component: CorrectComponentType<Props> = (props, { element }) => {\n withModalElementContext(\n () => props.target || \"\",\n () => ({\n on: props.on,\n action: props.action,\n preventDefault: props.preventDefault,\n }),\n (context, { on, action, preventDefault }) => {\n const controller = new AbortController();\n const [state, { open, close, toggle }] = useModalContext(context);\n switch (on) {\n case \"enter\": {\n let unsubscribe = null;\n if (action === \"toggle\") {\n unsubscribe = observeElementInViewport(element, open, close);\n }\n\n if (unsubscribe)\n controller.signal.addEventListener(\"abort\", unsubscribe, {\n once: true,\n });\n break;\n }\n case \"exit\": {\n let unsubscribe = null;\n if (action === \"toggle\") {\n unsubscribe = observeElementInViewport(element, close, open);\n }\n\n if (unsubscribe)\n controller.signal.addEventListener(\"abort\", unsubscribe, {\n once: true,\n });\n break;\n }\n\n default: {\n element.addEventListener(\n //@ts-ignore\n on,\n (event) => {\n if (preventDefault) event.preventDefault();\n if (state.isAnimating) return;\n switch (action) {\n case \"close\":\n close();\n break;\n case \"open\":\n open();\n break;\n case \"toggle\":\n toggle();\n break;\n }\n },\n { signal: controller.signal },\n );\n break;\n }\n }\n\n createEffect(() => {\n element.setAttribute(\"is-open\", `${state.isOpen}`);\n element.setAttribute(\"is-animating\", `${state.isAnimating}`);\n });\n\n onCleanup(() => {\n controller.abort();\n });\n },\n );\n};\n","import type { CorrectComponentType } from \"@brytdesigns/web-component-core/utils\";\n\nimport { createEffect, onMount, on, onCleanup } from \"solid-js\";\nimport { animate } from \"motion\";\nimport { getTransitionConfig } from \"@brytdesigns/web-component-core/animation\";\n\nimport { useModal } from \"../hooks/index.js\";\n\nexport type Props = {};\n\nexport const Name = \"modal-backdrop\";\n\nexport const Component: CorrectComponentType<Props> = (_, { element }) => {\n const [state, { updateAnimationQueue, close }] = useModal(element);\n const controller = new AbortController();\n\n let isFirstRender = true;\n\n createEffect(\n on(\n () => state.isOpen,\n (isOpen) => {\n if (!isOpen || isFirstRender) return;\n const animation = enter(element);\n updateAnimationQueue(animation);\n return onCleanup(() => {\n if (animation.state !== \"finished\") animation.complete();\n });\n },\n ),\n );\n\n createEffect(\n on(\n () => state.isOpen,\n (isOpen) => {\n if (isOpen || isFirstRender) return;\n const animation = exit(element);\n updateAnimationQueue(animation);\n return onCleanup(() => {\n if (animation.state !== \"finished\") animation.complete();\n });\n },\n ),\n );\n\n onMount(() => {\n isFirstRender = false;\n });\n\n function enter(element: HTMLElement) {\n const style = window.getComputedStyle(element);\n const options = getTransitionConfig(style);\n return animate(\n element,\n {\n opacity: [`var(--${Name}--opacity-from)`, `var(--${Name}--opacity-to)`],\n },\n options,\n );\n }\n\n function exit(element: HTMLElement) {\n const style = window.getComputedStyle(element);\n const options = getTransitionConfig(style);\n return animate(\n element,\n {\n opacity: [`var(--${Name}--opacity-to)`, `var(--${Name}--opacity-from)`],\n },\n options,\n );\n }\n\n element.addEventListener(\n \"click\",\n () => {\n if (state.isAnimating) return;\n close();\n },\n {\n signal: controller.signal,\n },\n );\n\n onCleanup(() => {\n controller.abort();\n });\n};\n","import type { CorrectComponentType } from \"@brytdesigns/web-component-core/utils\";\n\nimport { createEffect, on, onCleanup, onMount, splitProps } from \"solid-js\";\nimport { enableBodyScroll, disableBodyScroll } from \"body-scroll-lock-upgrade\";\nimport { createFocusTrap } from \"@brytdesigns/web-component-core/focusTrap\";\n\nimport { provideModalContext, useModalContext } from \"../hooks/index.js\";\nimport { hideElement, showElement } from \"../utils.js\";\n\nexport type Props = {\n isOpen: boolean;\n id: string;\n closeOnEscape: boolean;\n shouldTrapFocus: boolean;\n isAnimating: boolean;\n delay: number;\n};\n\nexport const Name = \"modal-context\";\n\nexport const Component: CorrectComponentType<Props> = (props, { element }) => {\n const [contextProps, restProps] = splitProps(props, [\n \"isOpen\",\n \"isAnimating\",\n ]);\n\n const context = provideModalContext(contextProps, element);\n\n const [state, { setElementState }] = context;\n\n const [_, { updateAnimationQueue, ...events }] = useModalContext(context);\n\n element.actions = events;\n\n const focusTrap = createFocusTrap(element, () => ({\n allowOutsideClick: true,\n escapeDeactivates: restProps.closeOnEscape,\n onDeactivate: () => {\n setElementState(\"isOpen\", false);\n },\n }));\n\n createEffect(\n on(\n () => state.isOpen,\n (isOpen) => {\n const eventName = isOpen ? \"modal:open\" : \"modal:close\";\n element.dispatchEvent(\n new CustomEvent(eventName, {\n bubbles: true,\n detail: { isOpen, relatedTarget: element },\n }),\n );\n element.dispatchEvent(\n new CustomEvent(\"drawer:toggle\", {\n bubbles: true,\n detail: { isOpen, relatedTarget: element },\n }),\n );\n },\n ),\n );\n\n createEffect(\n on(\n () => ({\n isOpen: state.isOpen,\n focusTrap: focusTrap(),\n shouldTrapFocus: restProps.shouldTrapFocus,\n }),\n ({ isOpen, focusTrap, shouldTrapFocus }) => {\n if (!isOpen) return;\n showElement(element);\n if (!shouldTrapFocus) return;\n focusTrap.activate();\n onCleanup(focusTrap.deactivate);\n },\n ),\n );\n\n createEffect(\n on(\n () => ({\n isOpen: state.isOpen,\n isAnimating: state.isAnimating,\n shouldTrapFocus: restProps.shouldTrapFocus,\n }),\n ({ isOpen, isAnimating, shouldTrapFocus }) => {\n if (isOpen && !isAnimating && shouldTrapFocus)\n return disableBodyScroll(element, {\n allowTouchMove: (el: EventTarget) => {\n if (el instanceof HTMLElement) {\n let element = el as (EventTarget & HTMLElement) | null;\n while (element && element !== document.body) {\n if (element.tagName === \"MODAL-PANEL\") {\n return true;\n }\n\n element = element.parentElement;\n }\n }\n return false;\n },\n });\n onCleanup(() => {\n enableBodyScroll(element);\n });\n },\n ),\n );\n\n createEffect(\n on(\n () => ({ isOpen: state.isOpen, animationQueue: state.animationQueue }),\n ({ isOpen, animationQueue }) => {\n if (isOpen) return;\n return Promise.all(animationQueue).then(() => hideElement(element));\n },\n ),\n );\n\n let openAfterDelayTimeoutId: any = null;\n\n onMount(() => {\n if (!restProps.delay || contextProps.isOpen) return;\n\n openAfterDelayTimeoutId = setTimeout(() => {\n setElementState(\"isOpen\", true);\n }, props.delay);\n\n return onCleanup(() => {\n clearTimeout(openAfterDelayTimeoutId);\n });\n });\n\n createEffect(\n on(\n () => ({\n isOpen: state.isOpen,\n openAfterDelay: restProps.delay > 0,\n }),\n ({ isOpen, openAfterDelay }) => {\n if (!openAfterDelay && openAfterDelayTimeoutId)\n clearTimeout(openAfterDelayTimeoutId);\n if (isOpen && openAfterDelayTimeoutId)\n clearTimeout(openAfterDelayTimeoutId);\n },\n ),\n );\n\n onCleanup(() => {\n disableBodyScroll(element);\n });\n};\n","export function hideElement<T extends HTMLElement>(element: T) {\n element.style.display = \"none\";\n}\n\nexport function showElement<T extends HTMLElement>(element: T) {\n element.style.display = \"block\";\n}\n","import {\n customShadowlessElement,\n correctElementType,\n} from \"@brytdesigns/web-component-core/utils\";\n\nimport {\n ModalTrigger,\n ModalContext,\n ModalBackdrop,\n ModalPanel,\n} from \"./components/index.js\";\n\nexport type ModalTriggerProps = ModalTrigger.Props;\nexport type ModalBackdropProps = ModalBackdrop.Props;\nexport type ModalPanelProps = ModalPanel.Props;\nexport type ModalContextProps = ModalContext.Props;\n\ncustomShadowlessElement(\n ModalContext.Name,\n {\n isOpen: false,\n id: \"\",\n closeOnEscape: false,\n shouldTrapFocus: false,\n isAnimating: false,\n openAfterDelay: false,\n delay: 0,\n },\n correctElementType(ModalContext.Component),\n);\n\ncustomShadowlessElement(\n ModalTrigger.Name,\n { target: \"\", action: \"\", on: \"click\", preventDefault: true },\n correctElementType(ModalTrigger.Component),\n);\n\ncustomShadowlessElement(\n ModalBackdrop.Name,\n {},\n correctElementType(ModalBackdrop.Component),\n);\n\ncustomShadowlessElement(\n ModalPanel.Name,\n {},\n correctElementType(ModalPanel.Component),\n);\n\nexport {\n useModal,\n getModalContext,\n withModalElementContext,\n} from \"./hooks/index.js\";\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/components/modal-panel.ts","../../src/hooks/useModal.ts","../../src/components/modal-trigger.ts","../../src/components/modal-backdrop.ts","../../src/components/modal-context.ts","../../src/utils.ts","../../src/index.ts"],"names":["currentValue","state","open","createEffect","on","onCleanup","element","Component","Name","onMount","getTransitionConfig","animate","splitProps","focusTrap"],"mappings":"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","file":"index.js","sourcesContent":["import type { CorrectComponentType } from \"@brytdesigns/web-component-core/utils\";\n\nimport { createEffect, onMount, on, onCleanup } from \"solid-js\";\nimport { animate } from \"motion\";\nimport { getTransitionConfig } from \"@brytdesigns/web-component-core/animation\";\n\nimport { useModal } from \"../hooks/index.js\";\n\nexport type Props = {};\n\nexport const Name = \"modal-panel\";\n\nexport const Component: CorrectComponentType<Props> = (_, { element }) => {\n const [state, { updateAnimationQueue }] = useModal(element);\n\n let isFirstRender = true;\n\n createEffect(\n on(\n () => state.isOpen,\n (isOpen) => {\n if (!isOpen || isFirstRender) return;\n const animation = enter(element);\n updateAnimationQueue(animation);\n return onCleanup(() => {\n if (animation.state !== \"finished\") animation.complete();\n });\n },\n ),\n );\n\n createEffect(\n on(\n () => state.isOpen,\n (isOpen) => {\n if (isOpen || isFirstRender) return;\n const animation = exit(element);\n updateAnimationQueue(animation);\n return onCleanup(() => {\n if (animation.state !== \"finished\") animation.complete();\n });\n },\n ),\n );\n\n onMount(() => {\n isFirstRender = false;\n });\n\n function enter(element: HTMLElement) {\n const style = window.getComputedStyle(element);\n const transition = getTransitionConfig(style);\n\n return animate(\n element,\n {\n x: [`var(--${Name}--slide-x-from)`, `var(--${Name}--slide-x-to)`],\n y: [`var(--${Name}--slide-y-from)`, `var(--${Name}--slide-y-to)`],\n scaleY: [`var(--${Name}--scale-y-from)`, `var(--${Name}--scale-y-to)`],\n scaleX: [`var(--${Name}--scale-x-from)`, `var(--${Name}--scale-x-to)`],\n opacity: [`var(--${Name}--opacity-from)`, `var(--${Name}--opacity-to)`],\n },\n transition,\n );\n }\n\n function exit(element: HTMLElement) {\n const style = window.getComputedStyle(element);\n const transition = getTransitionConfig(style);\n return animate(\n element,\n {\n x: [`var(--${Name}--slide-x-to)`, `var(--${Name}--slide-x-from)`],\n y: [`var(--${Name}--slide-y-to)`, `var(--${Name}--slide-y-from)`],\n scaleY: [`var(--${Name}--scale-y-to)`, `var(--${Name}--scale-y-from)`],\n scaleX: [`var(--${Name}--scale-x-to)`, `var(--${Name}--scale-x-from)`],\n opacity: [`var(--${Name}--opacity-to)`, `var(--${Name}--opacity-from)`],\n },\n transition,\n );\n }\n};\n","import {\n type ICustomElement,\n createContext,\n provide,\n consume,\n} from \"component-register\";\nimport {\n createEffect,\n mergeProps,\n on,\n batch,\n splitProps,\n untrack,\n onCleanup,\n} from \"solid-js\";\nimport { createStore } from \"solid-js/store\";\n\nimport type { AnimationPlaybackControlsWithThen } from \"motion\";\nimport { abortablePromise } from \"@brytdesigns/web-component-core/promise\";\nimport { awaitAllAnimations } from \"@brytdesigns/web-component-core/animation\";\nimport {\n toHyphenated,\n getContextFromProvider,\n createWithElementContext,\n} from \"@brytdesigns/web-component-core/utils\";\n\ntype StoreContext = {\n animationQueue: AnimationPlaybackControlsWithThen[];\n};\n\ntype CreateContextOptions = {\n root: HTMLElement & ICustomElement;\n isOpen: boolean;\n isAnimating: boolean;\n};\n\ntype WalkableNode = Parameters<typeof provide>[2];\n\ntype ModalContext = ReturnType<typeof initializeModalContext>;\n\nfunction initializeModalContext(props: CreateContextOptions) {\n const [element, stateProps] = splitProps(props, [\"root\"]);\n const [store, setStore] = createStore<StoreContext>({ animationQueue: [] });\n\n createEffect(\n on(\n () => store.animationQueue,\n (animationQueue) => {\n if (!animationQueue.length) return;\n const controller = new AbortController();\n const animations = awaitAllAnimations(animationQueue);\n const abortableAnimations = abortablePromise(\n animations,\n controller.signal,\n );\n setElementState(\"isAnimating\", true);\n abortableAnimations.finally(() => {\n batch(() => {\n setElementState(\"isAnimating\", false);\n setStore(\"animationQueue\", []);\n });\n });\n\n return onCleanup(() => {\n controller.abort(\"Aborting modal animations\");\n });\n },\n ),\n );\n\n function setElementState(\n key: keyof Omit<CreateContextOptions, \"root\">,\n value: boolean | ((v: boolean) => boolean),\n ) {\n const currentValue = untrack(() => props[key]);\n if (typeof value === \"function\") {\n const currentValue = untrack(() => props[key]);\n const result = value(currentValue || false);\n if (`${currentValue}` === `${value}`) return;\n element.root.setAttribute(toHyphenated(key), `${result}`);\n return;\n }\n if (`${currentValue}` === `${value}`) return;\n return element.root.setAttribute(toHyphenated(key), `${value}`);\n }\n\n return [\n mergeProps(store, stateProps),\n { setElementState, setStore },\n ] as const;\n}\n\nconst ModalContextState = createContext(initializeModalContext);\n\nexport const provideModalContext = (\n initialState: Omit<CreateContextOptions, \"root\">,\n element: WalkableNode,\n): ModalContext => {\n const props = mergeProps(initialState, { root: element });\n return provide(ModalContextState, props, element);\n};\n\nexport const useModalContext = (context: ModalContext) => {\n const [state, { setElementState, setStore: setState }] = context;\n\n function updateAnimationQueue(animation: AnimationPlaybackControlsWithThen) {\n setState(\"animationQueue\", (state) => [...state, animation]);\n }\n\n function close() {\n setElementState(\"isOpen\", false);\n }\n\n function open() {\n setElementState(\"isOpen\", true);\n }\n\n function toggle() {\n setElementState(\"isOpen\", (open) => !open);\n }\n\n return [state, { updateAnimationQueue, close, open, toggle }] as const;\n};\n\nexport const useModal = (element: HTMLElement & ICustomElement) => {\n const context: ModalContext = consume(ModalContextState, element);\n\n if (!context) {\n throw console.error(\n \"ModalContext not found! Please ensure to wrap your custom element with modal-context element.\",\n );\n }\n\n return useModalContext(context);\n};\n\nexport const withModalElementContext = createWithElementContext<\n typeof ModalContextState,\n ModalContext\n>(ModalContextState);\n\nexport const getModalContext = (element: Element) => {\n const context = getContextFromProvider<ModalContext>(\n ModalContextState,\n element,\n );\n return useModalContext(context);\n};\n","import type { CorrectComponentType } from \"@brytdesigns/web-component-core/utils\";\nimport type { Action } from \"../consts\";\n\nimport { createEffect, onCleanup } from \"solid-js\";\nimport { observeElementInViewport } from \"observe-element-in-viewport\";\n\nimport { useModalContext, withModalElementContext } from \"../hooks/index.js\";\n\nexport type Props = {\n target?: string;\n action?: Action | \"\";\n on?: keyof HTMLElementEventMap | \"enter\" | \"exit\";\n preventDefault: boolean;\n};\n\nexport const Name = \"modal-trigger\";\n\nexport const Component: CorrectComponentType<Props> = (props, { element }) => {\n withModalElementContext(\n () => props.target || \"\",\n () => ({\n on: props.on,\n action: props.action,\n preventDefault: props.preventDefault,\n }),\n (context, { on, action, preventDefault }) => {\n const controller = new AbortController();\n const [state, { open, close, toggle }] = useModalContext(context);\n switch (on) {\n case \"enter\": {\n let unsubscribe = null;\n if (action === \"toggle\") {\n unsubscribe = observeElementInViewport(element, open, close);\n }\n\n if (unsubscribe)\n controller.signal.addEventListener(\"abort\", unsubscribe, {\n once: true,\n });\n break;\n }\n case \"exit\": {\n let unsubscribe = null;\n if (action === \"toggle\") {\n unsubscribe = observeElementInViewport(element, close, open);\n }\n\n if (unsubscribe)\n controller.signal.addEventListener(\"abort\", unsubscribe, {\n once: true,\n });\n break;\n }\n\n default: {\n element.addEventListener(\n //@ts-ignore\n on,\n (event) => {\n if (preventDefault) event.preventDefault();\n if (state.isAnimating) return;\n switch (action) {\n case \"close\":\n close();\n break;\n case \"open\":\n open();\n break;\n case \"toggle\":\n toggle();\n break;\n }\n },\n { signal: controller.signal },\n );\n break;\n }\n }\n\n createEffect(() => {\n element.setAttribute(\"is-open\", `${state.isOpen}`);\n element.setAttribute(\"is-animating\", `${state.isAnimating}`);\n });\n\n onCleanup(() => {\n controller.abort();\n });\n },\n );\n};\n","import type { CorrectComponentType } from \"@brytdesigns/web-component-core/utils\";\n\nimport { createEffect, onMount, on, onCleanup } from \"solid-js\";\nimport { animate } from \"motion\";\nimport { getTransitionConfig } from \"@brytdesigns/web-component-core/animation\";\n\nimport { useModal } from \"../hooks/index.js\";\n\nexport type Props = {};\n\nexport const Name = \"modal-backdrop\";\n\nexport const Component: CorrectComponentType<Props> = (_, { element }) => {\n const [state, { updateAnimationQueue, close }] = useModal(element);\n const controller = new AbortController();\n\n let isFirstRender = true;\n\n createEffect(\n on(\n () => state.isOpen,\n (isOpen) => {\n if (!isOpen || isFirstRender) return;\n const animation = enter(element);\n updateAnimationQueue(animation);\n return onCleanup(() => {\n if (animation.state !== \"finished\") animation.complete();\n });\n },\n ),\n );\n\n createEffect(\n on(\n () => state.isOpen,\n (isOpen) => {\n if (isOpen || isFirstRender) return;\n const animation = exit(element);\n updateAnimationQueue(animation);\n return onCleanup(() => {\n if (animation.state !== \"finished\") animation.complete();\n });\n },\n ),\n );\n\n onMount(() => {\n isFirstRender = false;\n });\n\n function enter(element: HTMLElement) {\n const style = window.getComputedStyle(element);\n const options = getTransitionConfig(style);\n return animate(\n element,\n {\n opacity: [`var(--${Name}--opacity-from)`, `var(--${Name}--opacity-to)`],\n },\n options,\n );\n }\n\n function exit(element: HTMLElement) {\n const style = window.getComputedStyle(element);\n const options = getTransitionConfig(style);\n return animate(\n element,\n {\n opacity: [`var(--${Name}--opacity-to)`, `var(--${Name}--opacity-from)`],\n },\n options,\n );\n }\n\n element.addEventListener(\n \"click\",\n () => {\n if (state.isAnimating) return;\n close();\n },\n {\n signal: controller.signal,\n },\n );\n\n onCleanup(() => {\n controller.abort();\n });\n};\n","import {\n type CorrectComponentType,\n enableBodyScroll,\n disableBodyScroll,\n} from \"@brytdesigns/web-component-core/utils\";\n\nimport { createEffect, on, onCleanup, onMount, splitProps } from \"solid-js\";\nimport { createFocusTrap } from \"@brytdesigns/web-component-core/focusTrap\";\n\nimport { provideModalContext, useModalContext } from \"../hooks/index.js\";\nimport { hideElement, showElement } from \"../utils.js\";\n\nexport type Props = {\n isOpen: boolean;\n id: string;\n closeOnEscape: boolean;\n shouldTrapFocus: boolean;\n isAnimating: boolean;\n delay: number;\n};\n\nexport const Name = \"modal-context\";\n\nexport const Component: CorrectComponentType<Props> = (props, { element }) => {\n const [contextProps, restProps] = splitProps(props, [\n \"isOpen\",\n \"isAnimating\",\n ]);\n\n const context = provideModalContext(contextProps, element);\n\n const [state, { setElementState }] = context;\n\n const [_, { updateAnimationQueue, ...events }] = useModalContext(context);\n\n element.actions = events;\n\n const focusTrap = createFocusTrap(element, () => ({\n allowOutsideClick: true,\n escapeDeactivates: restProps.closeOnEscape,\n onDeactivate: () => {\n setElementState(\"isOpen\", false);\n },\n }));\n\n createEffect(\n on(\n () => state.isOpen,\n (isOpen) => {\n const eventName = isOpen ? \"modal:open\" : \"modal:close\";\n element.dispatchEvent(\n new CustomEvent(eventName, {\n bubbles: true,\n detail: { isOpen, relatedTarget: element },\n }),\n );\n element.dispatchEvent(\n new CustomEvent(\"drawer:toggle\", {\n bubbles: true,\n detail: { isOpen, relatedTarget: element },\n }),\n );\n },\n ),\n );\n\n createEffect(\n on(\n () => ({\n isOpen: state.isOpen,\n focusTrap: focusTrap(),\n shouldTrapFocus: restProps.shouldTrapFocus,\n }),\n ({ isOpen, focusTrap, shouldTrapFocus }) => {\n if (!isOpen) return;\n showElement(element);\n if (!shouldTrapFocus) return;\n focusTrap.activate();\n onCleanup(focusTrap.deactivate);\n },\n ),\n );\n\n createEffect(\n on(\n () => ({\n isOpen: state.isOpen,\n isAnimating: state.isAnimating,\n shouldTrapFocus: restProps.shouldTrapFocus,\n }),\n ({ isOpen, isAnimating, shouldTrapFocus }) => {\n if (isOpen && !isAnimating && shouldTrapFocus)\n return disableBodyScroll(element, {\n allowTouchMove: (el: EventTarget) => {\n if (el instanceof HTMLElement) {\n let element = el as (EventTarget & HTMLElement) | null;\n while (element && element !== document.body) {\n if (element.tagName === \"MODAL-PANEL\") {\n return true;\n }\n\n element = element.parentElement;\n }\n }\n return false;\n },\n });\n onCleanup(() => {\n enableBodyScroll(element);\n });\n },\n ),\n );\n\n createEffect(\n on(\n () => ({ isOpen: state.isOpen, animationQueue: state.animationQueue }),\n ({ isOpen, animationQueue }) => {\n if (isOpen) return;\n return Promise.all(animationQueue).then(() => hideElement(element));\n },\n ),\n );\n\n let openAfterDelayTimeoutId: any = null;\n\n onMount(() => {\n if (!restProps.delay || contextProps.isOpen) return;\n\n openAfterDelayTimeoutId = setTimeout(() => {\n setElementState(\"isOpen\", true);\n }, props.delay);\n\n return onCleanup(() => {\n clearTimeout(openAfterDelayTimeoutId);\n });\n });\n\n createEffect(\n on(\n () => ({\n isOpen: state.isOpen,\n openAfterDelay: restProps.delay > 0,\n }),\n ({ isOpen, openAfterDelay }) => {\n if (!openAfterDelay && openAfterDelayTimeoutId)\n clearTimeout(openAfterDelayTimeoutId);\n if (isOpen && openAfterDelayTimeoutId)\n clearTimeout(openAfterDelayTimeoutId);\n },\n ),\n );\n\n onCleanup(() => {\n disableBodyScroll(element);\n });\n};\n","export function hideElement<T extends HTMLElement>(element: T) {\n element.style.display = \"none\";\n}\n\nexport function showElement<T extends HTMLElement>(element: T) {\n element.style.display = \"block\";\n}\n","import {\n customShadowlessElement,\n correctElementType,\n} from \"@brytdesigns/web-component-core/utils\";\n\nimport {\n ModalTrigger,\n ModalContext,\n ModalBackdrop,\n ModalPanel,\n} from \"./components/index.js\";\n\nexport type ModalTriggerProps = ModalTrigger.Props;\nexport type ModalBackdropProps = ModalBackdrop.Props;\nexport type ModalPanelProps = ModalPanel.Props;\nexport type ModalContextProps = ModalContext.Props;\n\ncustomShadowlessElement(\n ModalContext.Name,\n {\n isOpen: false,\n id: \"\",\n closeOnEscape: false,\n shouldTrapFocus: false,\n isAnimating: false,\n openAfterDelay: false,\n delay: 0,\n },\n correctElementType(ModalContext.Component),\n);\n\ncustomShadowlessElement(\n ModalTrigger.Name,\n { target: \"\", action: \"\", on: \"click\", preventDefault: true },\n correctElementType(ModalTrigger.Component),\n);\n\ncustomShadowlessElement(\n ModalBackdrop.Name,\n {},\n correctElementType(ModalBackdrop.Component),\n);\n\ncustomShadowlessElement(\n ModalPanel.Name,\n {},\n correctElementType(ModalPanel.Component),\n);\n\nexport {\n useModal,\n getModalContext,\n withModalElementContext,\n} from \"./hooks/index.js\";\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
+
import { disableBodyScroll, enableBodyScroll } from '@brytdesigns/web-component-core/utils';
|
|
1
2
|
import { splitProps, createEffect, on, onCleanup, onMount } from 'solid-js';
|
|
2
|
-
import { disableBodyScroll, enableBodyScroll } from 'body-scroll-lock-upgrade';
|
|
3
3
|
import { createFocusTrap } from '@brytdesigns/web-component-core/focusTrap';
|
|
4
4
|
import { provideModalContext, useModalContext } from '../hooks/index.js';
|
|
5
5
|
import { showElement, hideElement } from '../utils.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/modal-context.ts"],"names":["focusTrap","element"],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"sources":["../../../src/components/modal-context.ts"],"names":["focusTrap","element"],"mappings":"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","file":"modal-context.js","sourcesContent":["import {\n type CorrectComponentType,\n enableBodyScroll,\n disableBodyScroll,\n} from \"@brytdesigns/web-component-core/utils\";\n\nimport { createEffect, on, onCleanup, onMount, splitProps } from \"solid-js\";\nimport { createFocusTrap } from \"@brytdesigns/web-component-core/focusTrap\";\n\nimport { provideModalContext, useModalContext } from \"../hooks/index.js\";\nimport { hideElement, showElement } from \"../utils.js\";\n\nexport type Props = {\n isOpen: boolean;\n id: string;\n closeOnEscape: boolean;\n shouldTrapFocus: boolean;\n isAnimating: boolean;\n delay: number;\n};\n\nexport const Name = \"modal-context\";\n\nexport const Component: CorrectComponentType<Props> = (props, { element }) => {\n const [contextProps, restProps] = splitProps(props, [\n \"isOpen\",\n \"isAnimating\",\n ]);\n\n const context = provideModalContext(contextProps, element);\n\n const [state, { setElementState }] = context;\n\n const [_, { updateAnimationQueue, ...events }] = useModalContext(context);\n\n element.actions = events;\n\n const focusTrap = createFocusTrap(element, () => ({\n allowOutsideClick: true,\n escapeDeactivates: restProps.closeOnEscape,\n onDeactivate: () => {\n setElementState(\"isOpen\", false);\n },\n }));\n\n createEffect(\n on(\n () => state.isOpen,\n (isOpen) => {\n const eventName = isOpen ? \"modal:open\" : \"modal:close\";\n element.dispatchEvent(\n new CustomEvent(eventName, {\n bubbles: true,\n detail: { isOpen, relatedTarget: element },\n }),\n );\n element.dispatchEvent(\n new CustomEvent(\"drawer:toggle\", {\n bubbles: true,\n detail: { isOpen, relatedTarget: element },\n }),\n );\n },\n ),\n );\n\n createEffect(\n on(\n () => ({\n isOpen: state.isOpen,\n focusTrap: focusTrap(),\n shouldTrapFocus: restProps.shouldTrapFocus,\n }),\n ({ isOpen, focusTrap, shouldTrapFocus }) => {\n if (!isOpen) return;\n showElement(element);\n if (!shouldTrapFocus) return;\n focusTrap.activate();\n onCleanup(focusTrap.deactivate);\n },\n ),\n );\n\n createEffect(\n on(\n () => ({\n isOpen: state.isOpen,\n isAnimating: state.isAnimating,\n shouldTrapFocus: restProps.shouldTrapFocus,\n }),\n ({ isOpen, isAnimating, shouldTrapFocus }) => {\n if (isOpen && !isAnimating && shouldTrapFocus)\n return disableBodyScroll(element, {\n allowTouchMove: (el: EventTarget) => {\n if (el instanceof HTMLElement) {\n let element = el as (EventTarget & HTMLElement) | null;\n while (element && element !== document.body) {\n if (element.tagName === \"MODAL-PANEL\") {\n return true;\n }\n\n element = element.parentElement;\n }\n }\n return false;\n },\n });\n onCleanup(() => {\n enableBodyScroll(element);\n });\n },\n ),\n );\n\n createEffect(\n on(\n () => ({ isOpen: state.isOpen, animationQueue: state.animationQueue }),\n ({ isOpen, animationQueue }) => {\n if (isOpen) return;\n return Promise.all(animationQueue).then(() => hideElement(element));\n },\n ),\n );\n\n let openAfterDelayTimeoutId: any = null;\n\n onMount(() => {\n if (!restProps.delay || contextProps.isOpen) return;\n\n openAfterDelayTimeoutId = setTimeout(() => {\n setElementState(\"isOpen\", true);\n }, props.delay);\n\n return onCleanup(() => {\n clearTimeout(openAfterDelayTimeoutId);\n });\n });\n\n createEffect(\n on(\n () => ({\n isOpen: state.isOpen,\n openAfterDelay: restProps.delay > 0,\n }),\n ({ isOpen, openAfterDelay }) => {\n if (!openAfterDelay && openAfterDelayTimeoutId)\n clearTimeout(openAfterDelayTimeoutId);\n if (isOpen && openAfterDelayTimeoutId)\n clearTimeout(openAfterDelayTimeoutId);\n },\n ),\n );\n\n onCleanup(() => {\n disableBodyScroll(element);\n });\n};\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@brytdesigns/web-component-modal",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.7",
|
|
4
4
|
"description": "Headless modal web component",
|
|
5
5
|
"main": "./dist/main/index.js",
|
|
6
6
|
"module": "./dist/main/index.js",
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"observe-element-in-viewport": "^0.0.15",
|
|
26
26
|
"solid-element": "^1.9.1",
|
|
27
27
|
"solid-js": "^1.9.9",
|
|
28
|
-
"@brytdesigns/web-component-core": "1.1.
|
|
28
|
+
"@brytdesigns/web-component-core": "1.1.6"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
31
|
"dts-bundle-generator": "^9.5.1",
|