@smwb/ui-solid 0.9.0 → 0.10.0
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/assets/styles/less/components/floatingWindow/floatingWindow.entry.css +1 -0
- package/dist/components/layout/floatingWindow/floatingWindow.d.ts +92 -0
- package/dist/components/layout/floatingWindow/floatingWindow.js +404 -0
- package/dist/components/layout/floatingWindow/floatingWindow.js.map +1 -0
- package/dist/components/layout/floatingWindow/index.d.ts +2 -0
- package/dist/headless/components/layout/floatingWindow/floatingWindow.js +403 -0
- package/dist/headless/components/layout/floatingWindow/floatingWindow.js.map +1 -0
- package/dist/headless/index.js +314 -308
- package/dist/headless/index.js.map +1 -1
- package/dist/headless/primitives/createHoverPopover.js +80 -0
- package/dist/headless/primitives/createHoverPopover.js.map +1 -0
- package/dist/headless/primitives/createRovingTabIndex.js +25 -0
- package/dist/headless/primitives/createRovingTabIndex.js.map +1 -0
- package/dist/headless/source/components/layout/floatingWindow/floatingWindow.jsx +388 -0
- package/dist/headless/source/components/layout/floatingWindow/floatingWindow.jsx.map +1 -0
- package/dist/headless/source/components/layout/floatingWindow/index.js +6 -0
- package/dist/headless/source/components/layout/floatingWindow/index.js.map +7 -0
- package/dist/headless/source/index.js +6 -0
- package/dist/headless/source/index.js.map +2 -2
- package/dist/headless/source/primitives/createHoverPopover.js +126 -0
- package/dist/headless/source/primitives/createHoverPopover.js.map +7 -0
- package/dist/headless/source/primitives/createRovingTabIndex.js +45 -0
- package/dist/headless/source/primitives/createRovingTabIndex.js.map +7 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +314 -308
- package/dist/index.js.map +1 -1
- package/dist/primitives/createHoverPopover.d.ts +73 -0
- package/dist/primitives/createHoverPopover.js +80 -0
- package/dist/primitives/createHoverPopover.js.map +1 -0
- package/dist/primitives/createRovingTabIndex.d.ts +26 -0
- package/dist/primitives/createRovingTabIndex.js +25 -0
- package/dist/primitives/createRovingTabIndex.js.map +1 -0
- package/dist/source/components/layout/floatingWindow/floatingWindow.jsx +389 -0
- package/dist/source/components/layout/floatingWindow/floatingWindow.jsx.map +1 -0
- package/dist/source/components/layout/floatingWindow/index.js +6 -0
- package/dist/source/components/layout/floatingWindow/index.js.map +7 -0
- package/dist/source/index.js +6 -0
- package/dist/source/index.js.map +2 -2
- package/dist/source/primitives/createHoverPopover.js +126 -0
- package/dist/source/primitives/createHoverPopover.js.map +7 -0
- package/dist/source/primitives/createRovingTabIndex.js +45 -0
- package/dist/source/primitives/createRovingTabIndex.js.map +7 -0
- package/package.json +10 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/layout/floatingWindow/floatingWindow.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/components/floatingWindow/floatingWindow.entry.less\";\nimport {\n type Accessor,\n For,\n type JSX,\n type ParentProps,\n Show,\n createEffect,\n createMemo,\n mergeProps,\n onCleanup,\n splitProps,\n} from \"solid-js\";\nimport { Portal, isServer } from \"solid-js/web\";\nimport cn from \"clsx\";\nimport { Icon } from \"../../base/icon\";\nimport { createCssTransition } from \"../../../primitives/createCssTransition\";\nimport { createControllableState } from \"../../../primitives/createControllableState\";\nimport { createId } from \"../../../primitives/createId\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\nexport interface FloatingWindowPosition {\n x: number;\n y: number;\n}\n\nexport interface FloatingWindowSize {\n width: number;\n height: number;\n}\n\n/** The eight edge/corner resize directions. */\nexport type FloatingWindowResizeDir = \"n\" | \"s\" | \"e\" | \"w\" | \"ne\" | \"nw\" | \"se\" | \"sw\";\n\nexport interface FloatingWindowProps extends Omit<JSX.HTMLAttributes<HTMLDivElement>, \"onResize\" | \"title\"> {\n /** Controlled open state of the window. */\n open: boolean;\n /** Title bar content. When given, the window is labelled by it. */\n title?: JSX.Element;\n /** Extra header controls, rendered before the built-in collapse/close buttons. */\n headerActions?: JSX.Element;\n\n /** Controlled top-left position in viewport px. */\n position?: FloatingWindowPosition;\n /** Initial position when uncontrolled. */\n defaultPosition?: FloatingWindowPosition;\n /** Called on every move frame and on viewport re-clamp, with the clamped position. */\n onPositionChange?: ((position: FloatingWindowPosition) => void) | undefined;\n /** Called once when a move gesture ends — the point at which to persist. */\n onMoveEnd?: ((position: FloatingWindowPosition) => void) | undefined;\n\n /** Controlled size in px. */\n size?: FloatingWindowSize;\n /** Initial size when uncontrolled. */\n defaultSize?: FloatingWindowSize;\n /** Called on every resize frame and on viewport re-clamp, with the clamped size. */\n onResize?: ((size: FloatingWindowSize) => void) | undefined;\n /** Called once when a resize gesture ends — the point at which to persist. */\n onResizeEnd?: ((size: FloatingWindowSize) => void) | undefined;\n\n /** Minimum width in px (default 200). */\n minWidth?: number;\n /** Minimum height in px (default 120). */\n minHeight?: number;\n /** Maximum width in px (default: viewport width). */\n maxWidth?: number;\n /** Maximum height in px (default: viewport height). */\n maxHeight?: number;\n /** Px of the window that must stay inside the viewport (default 56). */\n keepVisible?: number;\n /** Step in px for keyboard moving (default 24). */\n moveStep?: number;\n /** Step in px for keyboard resizing (default 24). */\n resizeStep?: number;\n\n /** Inline stacking order. The host owns z-order across several windows. */\n zIndex?: number;\n /** Called on pointerdown anywhere in the window, so the host can raise it. */\n onActivate?: (() => void) | undefined;\n\n /** Shade the window down to its title bar. */\n collapsed?: boolean;\n /** Initial collapsed state when uncontrolled. */\n defaultCollapsed?: boolean;\n onCollapsedChange?: ((collapsed: boolean) => void) | undefined;\n /** Render the built-in collapse toggle (default true). */\n collapsible?: boolean;\n\n /** Allow drag-to-move by the title bar (default true). */\n movable?: boolean;\n /** Allow drag-to-resize from the edges and corners (default true). */\n resizable?: boolean;\n /** Close on Escape while focus is inside the window (default false). */\n closeOnEsc?: boolean;\n onClose?: (() => void) | undefined;\n\n /** Accessible label for the move handle. */\n moveHandleAriaLabel?: string;\n /** Accessible label for the resize handle. */\n resizeHandleAriaLabel?: string;\n /** Accessible label for the close button. */\n closeAriaLabel?: string;\n /** Accessible label for the collapse toggle while expanded. */\n collapseAriaLabel?: string;\n /** Accessible label for the collapse toggle while collapsed. */\n expandAriaLabel?: string;\n\n \"aria-label\"?: string;\n ref?: Ref<HTMLDivElement>;\n}\n\ninterface Rect {\n x: number;\n y: number;\n width: number;\n height: number;\n}\n\ninterface Viewport {\n width: number;\n height: number;\n}\n\n/** Sign vector per resize direction: how the pointer delta maps onto x/y/width/height. */\nconst RESIZE_DIRS: Record<FloatingWindowResizeDir, { dx: 0 | 1; dy: 0 | 1; dw: -1 | 0 | 1; dh: -1 | 0 | 1 }> = {\n n: { dx: 0, dy: 1, dw: 0, dh: -1 },\n s: { dx: 0, dy: 0, dw: 0, dh: 1 },\n e: { dx: 0, dy: 0, dw: 1, dh: 0 },\n w: { dx: 1, dy: 0, dw: -1, dh: 0 },\n ne: { dx: 0, dy: 1, dw: 1, dh: -1 },\n nw: { dx: 1, dy: 1, dw: -1, dh: -1 },\n se: { dx: 0, dy: 0, dw: 1, dh: 1 },\n sw: { dx: 1, dy: 0, dw: -1, dh: 1 },\n};\n\nconst RESIZE_ORDER: FloatingWindowResizeDir[] = [\"n\", \"s\", \"e\", \"w\", \"ne\", \"nw\", \"se\", \"sw\"];\n\nconst viewportOf = (): Viewport =>\n typeof window === \"undefined\" ? { width: 0, height: 0 } : { width: window.innerWidth, height: window.innerHeight };\n\n/**\n * Free-floating, non-modal window: draggable by its title bar, resizable from every\n * edge and corner, clamped so a grabbable strip always stays on screen.\n *\n * Unlike Sheet/Modal it is deliberately NOT an overlay layer: no backdrop, no focus\n * trap, no `data-smwb-overlay-layer`. Several windows are meant to be open and usable\n * at once alongside the page behind them, so it must not trap focus, swallow clicks,\n * or steal Escape from a Modal stacked above it. Stacking order is the host's job —\n * pass `zIndex` and raise the window from `onActivate`.\n */\nexport function FloatingWindow(props: ParentProps<FloatingWindowProps>): JSX.Element {\n const merged = mergeProps(\n {\n minWidth: 200,\n minHeight: 120,\n keepVisible: 56,\n moveStep: 24,\n resizeStep: 24,\n collapsible: true,\n movable: true,\n resizable: true,\n closeOnEsc: false,\n defaultPosition: { x: 24, y: 24 },\n defaultSize: { width: 360, height: 420 },\n defaultCollapsed: false,\n moveHandleAriaLabel: \"Move window\",\n resizeHandleAriaLabel: \"Resize window\",\n closeAriaLabel: \"Close window\",\n collapseAriaLabel: \"Collapse window\",\n expandAriaLabel: \"Expand window\",\n },\n props\n );\n const [local, rest] = splitProps(merged, [\n \"open\",\n \"title\",\n \"headerActions\",\n \"position\",\n \"defaultPosition\",\n \"onPositionChange\",\n \"onMoveEnd\",\n \"size\",\n \"defaultSize\",\n \"onResize\",\n \"onResizeEnd\",\n \"minWidth\",\n \"minHeight\",\n \"maxWidth\",\n \"maxHeight\",\n \"keepVisible\",\n \"moveStep\",\n \"resizeStep\",\n \"zIndex\",\n \"onActivate\",\n \"collapsed\",\n \"defaultCollapsed\",\n \"onCollapsedChange\",\n \"collapsible\",\n \"movable\",\n \"resizable\",\n \"closeOnEsc\",\n \"onClose\",\n \"moveHandleAriaLabel\",\n \"resizeHandleAriaLabel\",\n \"closeAriaLabel\",\n \"collapseAriaLabel\",\n \"expandAriaLabel\",\n \"class\",\n \"style\",\n \"children\",\n \"ref\",\n ]);\n\n let rootEl: HTMLDivElement | undefined;\n const titleId = createId(undefined, \"smwb-floating-window-title\");\n\n const transition = createCssTransition({\n in: () => local.open,\n timeout: { enter: 120, exit: 120 },\n classNames: { enterDone: \"smwb-floating-window_entered\" },\n appear: true,\n });\n\n const [position, setPosition] = createControllableState<FloatingWindowPosition>({\n value: () => local.position,\n defaultValue: local.defaultPosition,\n onChange: (next) => local.onPositionChange?.(next),\n });\n const [size, setSize] = createControllableState<FloatingWindowSize>({\n value: () => local.size,\n defaultValue: local.defaultSize,\n onChange: (next) => local.onResize?.(next),\n });\n const [collapsed, setCollapsed] = createControllableState<boolean>({\n value: () => local.collapsed,\n defaultValue: local.defaultCollapsed,\n onChange: (next) => local.onCollapsedChange?.(next),\n });\n\n /**\n * Size first, then position against the clamped size. `y` is never negative, so the\n * title bar can never be dragged above the top edge and become ungrabbable — the gap\n * that makes an off-screen Sheet unrecoverable.\n */\n const clampRect = (rect: Rect, vp: Viewport): Rect => {\n const maxW = local.maxWidth ?? vp.width;\n const maxH = local.maxHeight ?? vp.height;\n const width = Math.max(local.minWidth, Math.min(maxW, rect.width));\n const height = Math.max(local.minHeight, Math.min(maxH, rect.height));\n const keep = Math.min(local.keepVisible, width);\n const x = Math.max(keep - width, Math.min(vp.width - keep, rect.x));\n const y = Math.max(0, Math.min(Math.max(0, vp.height - keep), rect.y));\n return { x, y, width, height };\n };\n\n /** The clamped geometry actually rendered. Clamping the CONTROLLED value (not just drag\n * frames) means a rect restored from a larger monitor lands on screen immediately. */\n const rect: Accessor<Rect> = createMemo(() =>\n clampRect({ x: position().x, y: position().y, width: size().width, height: size().height }, viewportOf())\n );\n\n const commitRect = (next: Rect): void => {\n const clamped = clampRect(next, viewportOf());\n const pos = position();\n const dim = size();\n if (clamped.x !== pos.x || clamped.y !== pos.y) setPosition({ x: clamped.x, y: clamped.y });\n if (clamped.width !== dim.width || clamped.height !== dim.height) {\n setSize({ width: clamped.width, height: clamped.height });\n }\n };\n\n // Re-clamp when the viewport shrinks, so a window parked near an edge on a large\n // screen stays reachable on a small one. Sheet has no such listener, which is why a\n // dragged sheet survives a viewport shrink oversized.\n createEffect(() => {\n if (isServer || !local.open) return;\n const onViewportResize = (): void => commitRect(rect());\n window.addEventListener(\"resize\", onViewportResize);\n onCleanup(() => window.removeEventListener(\"resize\", onViewportResize));\n });\n\n // Escape only while focus is inside this window. FloatingWindow is not an overlay\n // layer, so `isTopOverlayLayer` (document order, not z-index) would be the wrong\n // arbiter with several windows open.\n createEffect(() => {\n if (isServer || !local.open || !local.closeOnEsc || !local.onClose) return;\n const onKeyDown = (event: KeyboardEvent): void => {\n if (event.key !== \"Escape\") return;\n if (!rootEl || !rootEl.contains(document.activeElement)) return;\n local.onClose?.();\n };\n document.addEventListener(\"keydown\", onKeyDown);\n onCleanup(() => document.removeEventListener(\"keydown\", onKeyDown));\n });\n\n const activate = (): void => {\n local.onActivate?.();\n // Only when focus is elsewhere — an unconditional focus() would steal the caret\n // from an input inside the window on every raise.\n if (rootEl && !rootEl.contains(document.activeElement)) rootEl.focus({ preventScroll: true });\n };\n\n // Pointer capture keeps `pointermove` flowing to the handle even outside it, so there\n // are no document-level listeners to leak (Sheet's pattern, not screenDivider's).\n let move: { px: number; py: number; x: number; y: number } | null = null;\n\n const onMoveHandlePointerDown = (event: PointerEvent & { currentTarget: HTMLDivElement }): void => {\n if (!local.movable) return;\n // Header buttons stay clickable.\n if ((event.target as Element | null)?.closest(\"button,[data-no-drag]\")) return;\n event.preventDefault();\n const current = rect();\n move = { px: event.clientX, py: event.clientY, x: current.x, y: current.y };\n try {\n event.currentTarget.setPointerCapture?.(event.pointerId);\n } catch {\n /* best-effort */\n }\n };\n\n const onMoveHandlePointerMove = (event: PointerEvent): void => {\n if (!move) return;\n const current = rect();\n commitRect({\n ...current,\n x: move.x + event.clientX - move.px,\n y: move.y + event.clientY - move.py,\n });\n };\n\n const endMove = (event: PointerEvent & { currentTarget: HTMLDivElement }): void => {\n if (move) {\n move = null;\n const current = rect();\n local.onMoveEnd?.({ x: current.x, y: current.y });\n }\n if (event.currentTarget.hasPointerCapture?.(event.pointerId)) {\n event.currentTarget.releasePointerCapture?.(event.pointerId);\n }\n };\n\n let resize: { dir: FloatingWindowResizeDir; px: number; py: number; rect: Rect } | null = null;\n\n const onResizePointerDown = (\n dir: FloatingWindowResizeDir,\n event: PointerEvent & { currentTarget: HTMLDivElement }\n ): void => {\n event.preventDefault();\n event.stopPropagation();\n resize = { dir, px: event.clientX, py: event.clientY, rect: rect() };\n // Grabbing a resize grip is an interaction with the window, so raise it too. (The root\n // listener cannot be relied on here — see the `on:pointerdown` note on the root.)\n activate();\n try {\n event.currentTarget.setPointerCapture?.(event.pointerId);\n } catch {\n /* best-effort */\n }\n };\n\n const onResizePointerMove = (event: PointerEvent): void => {\n if (!resize) return;\n const sign = RESIZE_DIRS[resize.dir];\n const dx = event.clientX - resize.px;\n const dy = event.clientY - resize.py;\n const start = resize.rect;\n // A west/north drag moves the origin AND changes the size, so width is recomputed from\n // the moved edge rather than from the delta alone — otherwise dragging past minWidth\n // would keep sliding the window instead of stopping at the minimum.\n //\n // The size must be clamped to BOTH bounds here, before the origin is derived from it.\n // Clamping only the minimum and leaving the maximum to commitRect's own clamp would\n // compute the origin from a width that then gets shrunk, so the edge the user is NOT\n // dragging would drift away under the cursor.\n const vp = viewportOf();\n const maxW = local.maxWidth ?? vp.width;\n const maxH = local.maxHeight ?? vp.height;\n const width = Math.min(maxW, Math.max(local.minWidth, start.width + sign.dw * dx));\n const height = Math.min(maxH, Math.max(local.minHeight, start.height + sign.dh * dy));\n commitRect({\n x: sign.dx ? start.x + start.width - width : start.x,\n y: sign.dy ? start.y + start.height - height : start.y,\n width,\n height,\n });\n };\n\n const endResize = (event: PointerEvent & { currentTarget: HTMLDivElement }): void => {\n if (resize) {\n resize = null;\n const current = rect();\n local.onResizeEnd?.({ width: current.width, height: current.height });\n }\n if (event.currentTarget.hasPointerCapture?.(event.pointerId)) {\n event.currentTarget.releasePointerCapture?.(event.pointerId);\n }\n };\n\n /** A keypress is a COMPLETE gesture, so it reports move/resize end as well as the\n * per-frame change — otherwise a consumer that persists only on `*End` (the documented\n * way to avoid thrashing storage during a drag) would silently never save\n * keyboard-driven geometry. */\n const endKeyboardGesture = (resized: boolean): void => {\n const current = rect();\n if (resized) local.onResizeEnd?.({ width: current.width, height: current.height });\n else local.onMoveEnd?.({ x: current.x, y: current.y });\n };\n\n /** Arrows move; Shift+Arrows resize. */\n const onMoveHandleKeyDown: JSX.EventHandler<HTMLSpanElement, KeyboardEvent> = (event) => {\n const current = rect();\n const step = event.shiftKey ? local.resizeStep : local.moveStep;\n const delta: Record<string, [number, number]> = {\n ArrowLeft: [-step, 0],\n ArrowRight: [step, 0],\n ArrowUp: [0, -step],\n ArrowDown: [0, step],\n };\n const d = delta[event.key];\n if (!d) return;\n event.preventDefault();\n if (event.shiftKey) {\n commitRect({ ...current, width: current.width + d[0], height: current.height + d[1] });\n } else {\n commitRect({ ...current, x: current.x + d[0], y: current.y + d[1] });\n }\n endKeyboardGesture(event.shiftKey);\n };\n\n const onResizeHandleKeyDown: JSX.EventHandler<HTMLDivElement, KeyboardEvent> = (event) => {\n const current = rect();\n const vp = viewportOf();\n if (event.key === \"ArrowLeft\" || event.key === \"ArrowRight\") {\n event.preventDefault();\n const dir = event.key === \"ArrowRight\" ? 1 : -1;\n commitRect({ ...current, width: current.width + dir * local.resizeStep });\n } else if (event.key === \"ArrowUp\" || event.key === \"ArrowDown\") {\n event.preventDefault();\n const dir = event.key === \"ArrowDown\" ? 1 : -1;\n commitRect({ ...current, height: current.height + dir * local.resizeStep });\n } else if (event.key === \"Home\") {\n event.preventDefault();\n commitRect({ ...current, width: local.minWidth, height: local.minHeight });\n } else if (event.key === \"End\") {\n event.preventDefault();\n commitRect({ ...current, width: local.maxWidth ?? vp.width, height: local.maxHeight ?? vp.height });\n } else {\n return;\n }\n endKeyboardGesture(true);\n };\n\n const toggleCollapsed = (): void => setCollapsed((prev) => !prev);\n\n return (\n <Show when={transition.mounted()}>\n <Portal mount={(isServer ? undefined : document.body) as Node}>\n <div\n {...rest}\n ref={mergeRefs(local.ref, (el) => (rootEl = el as HTMLDivElement))}\n data-testid=\"floating-window\"\n role=\"dialog\"\n tabindex={-1}\n aria-labelledby={local.title ? titleId : undefined}\n class={cn(\"smwb-floating-window\", local.class, transition.classes(), {\n \"smwb-collapsed\": collapsed(),\n })}\n style={{\n left: `${rect().x}px`,\n top: `${rect().y}px`,\n width: `${rect().width}px`,\n ...(collapsed() ? {} : { height: `${rect().height}px` }),\n ...(local.zIndex === undefined ? {} : { \"z-index\": local.zIndex }),\n ...(typeof local.style === \"object\" && local.style ? local.style : {}),\n }}\n // `on:pointerdown` (native listener), NOT `onPointerDown` (delegated). Solid's\n // delegated dispatcher walks `_$host`, the LOGICAL owner chain, and Portal sets\n // `_$host` to its marker's parent — so an event raised inside content a consumer\n // portals into this window never reaches this handler, and clicking such a panel\n // would silently fail to raise the window. A native listener follows the real DOM\n // tree, where the portaled container genuinely is a descendant.\n on:pointerdown={activate}\n >\n <div\n class=\"smwb-floating-window__header\"\n data-testid=\"floating-window-header\"\n onPointerDown={onMoveHandlePointerDown}\n onPointerMove={onMoveHandlePointerMove}\n onPointerUp={endMove}\n onPointerCancel={endMove}\n >\n {/* The move affordance is the grip, not the header: the header also hosts the\n collapse/close buttons and any consumer `headerActions`, and nesting those\n inside a role=\"button\" is an a11y violation. Pointer drag still works\n anywhere on the header; only the keyboard affordance lives here. */}\n <span\n class=\"smwb-floating-window__grip\"\n data-testid=\"floating-window-move\"\n role=\"button\"\n tabindex={0}\n aria-label={local.moveHandleAriaLabel}\n onKeyDown={onMoveHandleKeyDown}\n >\n <Icon name=\"drag_indicator\" />\n </span>\n <Show when={local.title}>\n <span class=\"smwb-floating-window__title\" id={titleId}>\n {local.title}\n </span>\n </Show>\n <div class=\"smwb-floating-window__actions\" data-no-drag>\n {local.headerActions}\n <Show when={local.collapsible}>\n <button\n type=\"button\"\n class=\"smwb-floating-window__action\"\n data-testid=\"floating-window-collapse\"\n aria-label={collapsed() ? local.expandAriaLabel : local.collapseAriaLabel}\n aria-expanded={!collapsed()}\n onClick={toggleCollapsed}\n >\n <Icon name={collapsed() ? \"open_in_full\" : \"close_fullscreen\"} />\n </button>\n </Show>\n <Show when={local.onClose}>\n <button\n type=\"button\"\n class=\"smwb-floating-window__action\"\n data-testid=\"floating-window-close\"\n aria-label={local.closeAriaLabel}\n onClick={() => local.onClose?.()}\n >\n <Icon name=\"close\" />\n </button>\n </Show>\n </div>\n </div>\n\n <Show when={!collapsed()}>\n <div class=\"smwb-floating-window__body\" data-testid=\"floating-window-body\">\n {local.children}\n </div>\n </Show>\n\n <Show when={local.resizable && !collapsed()}>\n <For each={RESIZE_ORDER}>\n {(dir) => (\n <div\n class={cn(\"smwb-floating-window__resize\", `smwb-floating-window__resize_${dir}`)}\n data-testid={`floating-window-resize-${dir}`}\n // Only the south-east grip is reachable by keyboard: eight tab stops per\n // window would make Tab unusable once a few windows are open.\n {...(dir === \"se\"\n ? {\n role: \"separator\",\n tabindex: 0,\n \"aria-label\": local.resizeHandleAriaLabel,\n \"aria-valuemin\": local.minWidth,\n \"aria-valuemax\": Math.round(local.maxWidth ?? viewportOf().width),\n \"aria-valuenow\": Math.round(rect().width),\n onKeyDown: onResizeHandleKeyDown,\n }\n : { \"aria-hidden\": true, tabindex: -1 })}\n onPointerDown={(event) => onResizePointerDown(dir, event)}\n onPointerMove={onResizePointerMove}\n onPointerUp={endResize}\n onPointerCancel={endResize}\n />\n )}\n </For>\n </Show>\n </div>\n </Portal>\n </Show>\n );\n}\n\nexport default FloatingWindow;\n"],"mappings":"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","names":["rect"],"file":"floatingWindow.jsx"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/components/layout/floatingWindow/index.ts"],
|
|
4
|
+
"sourcesContent": ["export { FloatingWindow, default } from \"./floatingWindow\";\nexport type {\n FloatingWindowProps,\n FloatingWindowPosition,\n FloatingWindowSize,\n FloatingWindowResizeDir,\n} from \"./floatingWindow\";\n"],
|
|
5
|
+
"mappings": "AAAA,SAAS,gBAAgB,WAAAA,gBAAe;",
|
|
6
|
+
"names": ["default"]
|
|
7
|
+
}
|
package/dist/source/index.js
CHANGED
|
@@ -10,6 +10,8 @@ import { createVirtualList } from "./primitives/createVirtualList";
|
|
|
10
10
|
import { createMaskedInput } from "./primitives/createMaskedInput";
|
|
11
11
|
import { createMediaQuery } from "./primitives/createMediaQuery";
|
|
12
12
|
import { createPersistedJson } from "./primitives/createPersistedJson";
|
|
13
|
+
import { createRovingTabIndex } from "./primitives/createRovingTabIndex";
|
|
14
|
+
import { createHoverPopover } from "./primitives/createHoverPopover";
|
|
13
15
|
import { resolvePlacement, buildFloatingMiddleware, placements } from "./utils/floating";
|
|
14
16
|
import { Icon, IconProvider, IconContext, useIconSource, createIconVersion } from "./components/base/icon";
|
|
15
17
|
import {
|
|
@@ -106,6 +108,7 @@ import { Grid, Row, Column, Container } from "./components/layout/grid";
|
|
|
106
108
|
import { AppLayout } from "./components/layout/appLayout";
|
|
107
109
|
import { ScreenDivider } from "./components/layout/screenDivider";
|
|
108
110
|
import { Sheet } from "./components/layout/sheet";
|
|
111
|
+
import { FloatingWindow } from "./components/layout/floatingWindow";
|
|
109
112
|
import { AppBar } from "./components/navigation/appBar";
|
|
110
113
|
import { Breadcrumbs } from "./components/navigation/breadcrumbs";
|
|
111
114
|
import { Pagination } from "./components/navigation/pagination";
|
|
@@ -227,6 +230,7 @@ export {
|
|
|
227
230
|
FileDrop,
|
|
228
231
|
FileInput,
|
|
229
232
|
FloatingButton,
|
|
233
|
+
FloatingWindow,
|
|
230
234
|
Grid,
|
|
231
235
|
Icon,
|
|
232
236
|
IconContext,
|
|
@@ -309,11 +313,13 @@ export {
|
|
|
309
313
|
createDropzone,
|
|
310
314
|
createFloating,
|
|
311
315
|
createFocusTrap,
|
|
316
|
+
createHoverPopover,
|
|
312
317
|
createIconVersion,
|
|
313
318
|
createId,
|
|
314
319
|
createMaskedInput,
|
|
315
320
|
createMediaQuery,
|
|
316
321
|
createPersistedJson,
|
|
322
|
+
createRovingTabIndex,
|
|
317
323
|
createTheme,
|
|
318
324
|
createTimeInput,
|
|
319
325
|
createVirtualList,
|
package/dist/source/index.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/index.ts"],
|
|
4
|
-
"sourcesContent": ["// Public entry point for @smwb/ui-solid.\n// Exports are added as components are ported (see src/components/**).\n\n// primitives\nexport { mergeRefs } from \"./primitives/mergeRefs\";\nexport type { Ref, RefCallback } from \"./primitives/mergeRefs\";\nexport { createId } from \"./primitives/createId\";\nexport { createControllableState } from \"./primitives/createControllableState\";\nexport type { CreateControllableStateParams } from \"./primitives/createControllableState\";\nexport { createTheme, Theme } from \"./primitives/createTheme\";\nexport { createFloating } from \"./primitives/createFloating\";\nexport type { CreateFloatingOptions, FloatingState } from \"./primitives/createFloating\";\nexport { createFocusTrap } from \"./primitives/createFocusTrap\";\nexport type { CreateFocusTrapOptions } from \"./primitives/createFocusTrap\";\nexport { createCssTransition } from \"./primitives/createCssTransition\";\nexport type { CreateCssTransitionOptions, CssTransitionState, CssTransitionClassNames } from \"./primitives/createCssTransition\";\nexport { createDropzone } from \"./primitives/createDropzone\";\nexport type { DropzoneOptions, DropzoneState } from \"./primitives/createDropzone\";\nexport { createVirtualList } from \"./primitives/createVirtualList\";\nexport type { CreateVirtualListParams, VirtualListResult } from \"./primitives/createVirtualList\";\nexport { createMaskedInput } from \"./primitives/createMaskedInput\";\nexport type { CreateMaskedInputOptions, MaskedInputState } from \"./primitives/createMaskedInput\";\nexport { createMediaQuery } from \"./primitives/createMediaQuery\";\nexport { createPersistedJson } from \"./primitives/createPersistedJson\";\nexport type { PersistedJson } from \"./primitives/createPersistedJson\";\n\n// utils\nexport { resolvePlacement, buildFloatingMiddleware, placements } from \"./utils/floating\";\nexport type { Placement, ResolvedPlacement } from \"./utils/floating\";\n\n// base\nexport { Icon, IconProvider, IconContext, useIconSource, createIconVersion } from \"./components/base/icon\";\nexport type { IconProps, IconColor, IconProviderProps, IconContextValue } from \"./components/base/icon\";\n// Icon registry API. The icons themselves live behind \"@smwb/ui-solid/icons\" so\n// an app bundles only the ones it registers.\nexport {\n registerIcons,\n unregisterIcons,\n clearIcons,\n getIcon,\n hasIcon,\n listIcons,\n normalizeIconName,\n} from \"./icons/registry\";\nexport type { IconInput } from \"./icons/registry\";\nexport { configureIcons, getIconConfig, resetIconConfig } from \"./icons/config\";\nexport type { IconConfig } from \"./icons/config\";\nexport { subscribeIcons, getIconVersion } from \"./icons/store\";\nexport type { IconDefinition, IconSource } from \"./icons/types\";\nexport { Ripple } from \"./components/base/ripple\";\nexport type { RippleProps, RippleActionsRef, RippleClasses } from \"./components/base/ripple\";\nexport { AnimateHeight } from \"./components/base/animateHeight\";\nexport type { AnimateHeightProps, Height } from \"./components/base/animateHeight\";\n\n// dataDisplay\nexport { Typography } from \"./components/dataDisplay/typography\";\nexport type { TypographyProps, TypographyVariant, TypographyColor } from \"./components/dataDisplay/typography\";\nexport { Badge } from \"./components/dataDisplay/badge\";\nexport type { BadgeProps } from \"./components/dataDisplay/badge\";\nexport { Card } from \"./components/dataDisplay/card\";\nexport type { CardProps } from \"./components/dataDisplay/card\";\nexport { Chip } from \"./components/dataDisplay/chip\";\nexport type { ChipProps, ChipColor } from \"./components/dataDisplay/chip\";\nexport { LazyImage } from \"./components/dataDisplay/lazyImage\";\nexport type { LazyImageProps } from \"./components/dataDisplay/lazyImage\";\nexport { ChipGroup } from \"./components/dataDisplay/chipGroup\";\nexport type { ChipGroupProps, ChipGroupOption } from \"./components/dataDisplay/chipGroup\";\nexport { ThumbCard } from \"./components/dataDisplay/thumbCard\";\nexport type { ThumbCardProps } from \"./components/dataDisplay/thumbCard\";\nexport { AssetGrid } from \"./components/dataDisplay/assetGrid\";\nexport type { AssetGridProps } from \"./components/dataDisplay/assetGrid\";\nexport { Avatar, AvatarGroup } from \"./components/dataDisplay/avatar\";\nexport type { AvatarProps, AvatarGroupProps, AvatarSize } from \"./components/dataDisplay/avatar\";\nexport { List, ListItem } from \"./components/dataDisplay/list\";\nexport type { ListProps, ListItemProps } from \"./components/dataDisplay/list\";\nexport { Accordion } from \"./components/dataDisplay/accordion\";\nexport type { AccordionProps } from \"./components/dataDisplay/accordion\";\nexport { ExpansionPanel } from \"./components/dataDisplay/expansionPanel\";\nexport type {\n ExpansionPanelProps,\n ExpansionPanelLabels,\n ExpansionPanelRenderContext,\n ExpansionPanelControlsContext,\n ExpansionMode,\n} from \"./components/dataDisplay/expansionPanel\";\nexport {\n Table,\n TableHead,\n TableBody,\n TableRow,\n TableCell,\n TableHeadCell,\n TablePagination,\n} from \"./components/dataDisplay/table\";\nexport type {\n TableProps,\n TableHeadProps,\n TableBodyProps,\n TableRowProps,\n TableCellProps,\n TableHeadCellProps,\n TablePaginationProps,\n SortDirection,\n} from \"./components/dataDisplay/table\";\nexport { TreeView } from \"./components/dataDisplay/treeView\";\nexport type { TreeViewProps, ITreeNodeItem } from \"./components/dataDisplay/treeView\";\nexport { Carousel } from \"./components/dataDisplay/carousel\";\nexport type { CarouselProps } from \"./components/dataDisplay/carousel\";\nexport { ImagesList, ImagesListItem, ImagesListItemModal } from \"./components/dataDisplay/imagesList\";\nexport type {\n ImagesListProps,\n ImagesListItemProps,\n ImagesListItemModalProps,\n ImageItem,\n} from \"./components/dataDisplay/imagesList\";\nexport {\n Chat,\n ChatLayout,\n ChatOverlayLayout,\n ChatShell,\n ChatHeader,\n ChatMessages,\n ChatMessageItem,\n ChatMessageIncoming,\n ChatMessageOutgoing,\n ChatMessageSystem,\n ChatMessageBubble,\n ChatMessageSkeleton,\n ChatMessageStatus,\n ChatMessageAvatar,\n ChatAttachments,\n ChatAttachmentImage,\n ChatIconButton,\n ChatComposer,\n createChatInfiniteScroll,\n createChatFileUpload,\n resolveChatFileUploadMaxFiles,\n createChatStickToBottom,\n isScrolledToBottom,\n scrollChatToBottom,\n CHAT_EXPAND_LAYOUTS,\n CHAT_DEFAULT_FILE_UPLOAD_MAX_FILES,\n CHAT_MESSAGE_DELIVERY_STATUSES,\n CHAT_MESSAGE_STATUS_ICONS,\n CHAT_MESSAGE_STATUS_LABELS,\n isImageAttachment,\n formatChatTimestamp,\n resolveAllowedLayouts,\n isChatMessageDeliveryStatus,\n resolveChatMessageStatusIcon,\n resolveChatMessageStatusLabel,\n shouldComposerNewlineOnEnter,\n getChatLayoutActions,\n shouldShowChatCloseButton,\n} from \"./components/dataDisplay/chat\";\nexport type {\n ChatProps,\n ChatLayoutProps,\n ChatLayoutChatProps,\n ChatOverlayLayoutProps,\n ChatOverlayLayoutChatProps,\n ChatShellProps,\n ChatHeaderProps,\n ChatMessagesProps,\n ChatMessageItemProps,\n ChatMessageIncomingProps,\n ChatMessageOutgoingProps,\n ChatMessageSystemProps,\n ChatMessageBubbleProps,\n ChatMessageSkeletonProps,\n ChatMessageStatusProps,\n ChatMessageAvatarProps,\n ChatAttachmentsProps,\n ChatAttachmentImageProps,\n ChatIconButtonProps,\n ChatComposerProps,\n CreateChatInfiniteScrollParams,\n CreateChatFileUploadOptions,\n ChatFileUploadState,\n CreateChatStickToBottomParams,\n ChatMessage,\n ChatAttachment,\n ChatAuthor,\n ChatMessageVariant,\n ChatLayoutMode,\n ChatAnchor,\n ChatThemeMode,\n ChatMessageRenderContext,\n ChatLayoutSide,\n ChatMessageDeliveryStatus,\n ChatMessageStatusValue,\n ChatMessageStatusIcons,\n ChatMessageStatusRenderContext,\n ChatComposerNewlineOptions,\n} from \"./components/dataDisplay/chat\";\n\n// feedBack\nexport { Skeleton } from \"./components/feedBack/skeleton\";\nexport type { SkeletonProps } from \"./components/feedBack/skeleton\";\nexport { Message, MessageContainer } from \"./components/feedBack/message\";\nexport type { MessageProps, MessageSeverity } from \"./components/feedBack/message\";\nexport { ProgressIndicator, CircularProgress } from \"./components/feedBack/progressIndicator\";\nexport type { ProgressIndicatorProps, ProgressColor, CircularProgressProps } from \"./components/feedBack/progressIndicator\";\nexport { Tooltip } from \"./components/feedBack/tooltip\";\nexport type { TooltipProps, TooltipTrigger } from \"./components/feedBack/tooltip\";\nexport { Modal } from \"./components/feedBack/modal\";\nexport type { ModalProps, ModalSlotProps } from \"./components/feedBack/modal\";\nexport { SaveAssetDialog } from \"./components/feedBack/saveAssetDialog\";\nexport type { SaveAssetDialogProps } from \"./components/feedBack/saveAssetDialog\";\nexport { ConfirmDialog } from \"./components/feedBack/confirmDialog\";\nexport type { ConfirmDialogProps } from \"./components/feedBack/confirmDialog\";\nexport { SnackbarProvider, Snackbar, useSnackbar } from \"./components/feedBack/snackbar\";\nexport type {\n SnackbarsProviderProps,\n SnackbarProps,\n SnackbarOptions,\n AddSnackbar,\n AddSnackbarOptions,\n Variants as SnackbarVariant,\n Position as SnackbarPosition,\n} from \"./components/feedBack/snackbar\";\n\n// utility\nexport { ClickAwayListener } from \"./components/clickAwayListener\";\nexport type { ClickAwayListenerProps } from \"./components/clickAwayListener\";\n\n// layout\nexport { Divider } from \"./components/layout/divider\";\nexport type { DividerProps, DividerColor } from \"./components/layout/divider\";\nexport { Stack } from \"./components/layout/stack\";\nexport type { StackProps, StackSpacing } from \"./components/layout/stack\";\nexport { Page } from \"./components/layout/page\";\nexport type { PageProps, PageMaxWidth } from \"./components/layout/page\";\nexport { PageHeader } from \"./components/layout/pageHeader\";\nexport type { PageHeaderProps } from \"./components/layout/pageHeader\";\nexport { Grid, Row, Column, Container } from \"./components/layout/grid\";\nexport type {\n RowProps,\n ColumnProps,\n ContainerProps,\n BreakpointType,\n ColumnSpan,\n OffsetType,\n Breakpoint,\n ResponsiveBool,\n ContainerMaxWidth,\n} from \"./components/layout/grid\";\nexport { AppLayout } from \"./components/layout/appLayout\";\nexport type { AppLayoutProps } from \"./components/layout/appLayout\";\nexport { ScreenDivider } from \"./components/layout/screenDivider\";\nexport type { ScreenDividerProps } from \"./components/layout/screenDivider\";\nexport { Sheet } from \"./components/layout/sheet\";\nexport type { SheetProps } from \"./components/layout/sheet\";\n\n// navigation\nexport { AppBar } from \"./components/navigation/appBar\";\nexport type { AppBarProps, AppBarColor } from \"./components/navigation/appBar\";\nexport { Breadcrumbs } from \"./components/navigation/breadcrumbs\";\nexport type { BreadcrumbsProps } from \"./components/navigation/breadcrumbs\";\nexport { Pagination } from \"./components/navigation/pagination\";\nexport type { PaginationProps, PaginationColor } from \"./components/navigation/pagination\";\nexport { Stepper } from \"./components/navigation/stepper\";\nexport type { StepperProps, StepItem } from \"./components/navigation/stepper\";\nexport { Sidebar } from \"./components/navigation/sidebar\";\nexport type { SidebarProps, SidebarMenuItemProps, SidebarVariant } from \"./components/navigation/sidebar\";\nexport { Tabs, Tab, TabsContext, useTabsContext } from \"./components/navigation/tabs\";\nexport type { TabsProps, TabProps, TabsContextValue } from \"./components/navigation/tabs\";\nexport { BottomBar } from \"./components/navigation/bottomBar\";\nexport type { BottomBarProps, BottomBarMenuItemProps } from \"./components/navigation/bottomBar\";\nexport {\n Menu,\n MenuFloating,\n MenuList,\n MenuItem,\n MenuItemIcon,\n MenuItemText,\n MenuDivider,\n MenuSubmenu,\n MenuContext,\n useMenuContext,\n buildMenuFloatingMiddleware,\n} from \"./components/navigation/menu\";\nexport type {\n MenuProps,\n MenuFloatingProps,\n MenuListProps,\n MenuItemProps,\n MenuItemIconProps,\n MenuItemTextProps,\n MenuDividerProps,\n MenuSubmenuProps,\n MenuContextValue,\n} from \"./components/navigation/menu\";\nexport { OverflowMenu } from \"./components/navigation/overflowMenu\";\nexport type { OverflowMenuProps, OverflowMenuItem } from \"./components/navigation/overflowMenu\";\n\n// inputs\nexport { Button } from \"./components/inputs/button\";\nexport type { ButtonProps } from \"./components/inputs/button\";\nexport { ButtonGroup } from \"./components/inputs/buttonGroups\";\nexport type { ButtonGroupProps } from \"./components/inputs/buttonGroups\";\nexport { Checkbox } from \"./components/inputs/checkbox\";\nexport type {\n CheckboxProps,\n SelectionControlSize,\n SelectionControlColor,\n SelectionChangeEvent,\n} from \"./components/inputs/checkbox\";\nexport { RadioButton } from \"./components/inputs/radioButton\";\nexport type { RadioButtonProps } from \"./components/inputs/radioButton\";\nexport { Toggle } from \"./components/inputs/toggle\";\nexport type { ToggleProps } from \"./components/inputs/toggle\";\nexport { Rating } from \"./components/inputs/rating\";\nexport type { RatingProps, RatingColor } from \"./components/inputs/rating\";\nexport { Slider } from \"./components/inputs/slider\";\nexport type { SliderProps, SliderValue, SliderMark } from \"./components/inputs/slider\";\nexport { ValueSlider } from \"./components/inputs/valueSlider\";\nexport type { ValueSliderProps } from \"./components/inputs/valueSlider\";\nexport { FileInput } from \"./components/inputs/fileInput\";\nexport type { FileInputProps } from \"./components/inputs/fileInput\";\nexport { FileDrop, PreviewWrapper, Preview, CountPreview, isImageFile } from \"./components/inputs/fileDrop\";\nexport type { FileUploadProps, PreviewWrapperProps, PreviewProps, CountPreviewProps } from \"./components/inputs/fileDrop\";\nexport { SelectField, DropdownMenu } from \"./components/inputs/selectField\";\nexport type { SelectFieldProps, OnSelectChange, DropdownItem, DropdownItemProps } from \"./components/inputs/selectField\";\nexport {\n DatePicker,\n OpenView,\n DataPickerDays,\n DataPickerHeader,\n DataPickerInput,\n DatePickerActionLabel,\n DatePickerDay,\n DatePickerIconButton,\n DatePickerList,\n createDateInput,\n} from \"./components/inputs/datePicker\";\nexport type {\n DatePickerProps,\n DataPickerDaysProps,\n DataPickerHeaderProps,\n DataPickerInputProps,\n ActionLabelProps,\n DatePickerDayProps,\n DataPickerIconButtonProps,\n DatePickerListProps,\n CreateDateInputProps,\n DateInputState,\n} from \"./components/inputs/datePicker\";\nexport { TimePicker, TimePickerInput, TimePickerColumns, createTimeInput, DEFAULT_TIME_FORMAT } from \"./components/inputs/timePicker\";\nexport type { TimePickerProps, TimePickerInputProps, TimePickerColumnsProps } from \"./components/inputs/timePicker\";\nexport {\n DateTimePicker,\n DateTimePickerInput,\n createDateTimeInput,\n getCurrentDateTimeFormat,\n getDisplayDateTime,\n formatDateTimeByPattern,\n isDateTimePatternMatch,\n parseDateTimeByPattern,\n} from \"./components/inputs/dateTimePicker\";\nexport type {\n DateTimePickerProps,\n DateTimePickerInputProps,\n CreateDateTimeInputProps,\n DateTimeInputState,\n} from \"./components/inputs/dateTimePicker\";\nexport { FloatingButton } from \"./components/inputs/floatingButton\";\nexport type { FloatingButtonProps, FloatingButtonColor } from \"./components/inputs/floatingButton\";\nexport { TextField, TextFieldWrapper, TextFieldAdornment } from \"./components/inputs/textField\";\nexport type {\n TextFieldProps,\n TextFieldWrapperProps,\n TextFieldAdornmentProps,\n TextFieldVariant,\n} from \"./components/inputs/textField\";\n"],
|
|
5
|
-
"mappings": "AAIA,SAAS,iBAAiB;AAE1B,SAAS,gBAAgB;AACzB,SAAS,+BAA+B;AAExC,SAAS,aAAa,aAAa;AACnC,SAAS,sBAAsB;AAE/B,SAAS,uBAAuB;AAEhC,SAAS,2BAA2B;AAEpC,SAAS,sBAAsB;AAE/B,SAAS,yBAAyB;AAElC,SAAS,yBAAyB;AAElC,SAAS,wBAAwB;AACjC,SAAS,2BAA2B;
|
|
4
|
+
"sourcesContent": ["// Public entry point for @smwb/ui-solid.\n// Exports are added as components are ported (see src/components/**).\n\n// primitives\nexport { mergeRefs } from \"./primitives/mergeRefs\";\nexport type { Ref, RefCallback } from \"./primitives/mergeRefs\";\nexport { createId } from \"./primitives/createId\";\nexport { createControllableState } from \"./primitives/createControllableState\";\nexport type { CreateControllableStateParams } from \"./primitives/createControllableState\";\nexport { createTheme, Theme } from \"./primitives/createTheme\";\nexport { createFloating } from \"./primitives/createFloating\";\nexport type { CreateFloatingOptions, FloatingState } from \"./primitives/createFloating\";\nexport { createFocusTrap } from \"./primitives/createFocusTrap\";\nexport type { CreateFocusTrapOptions } from \"./primitives/createFocusTrap\";\nexport { createCssTransition } from \"./primitives/createCssTransition\";\nexport type { CreateCssTransitionOptions, CssTransitionState, CssTransitionClassNames } from \"./primitives/createCssTransition\";\nexport { createDropzone } from \"./primitives/createDropzone\";\nexport type { DropzoneOptions, DropzoneState } from \"./primitives/createDropzone\";\nexport { createVirtualList } from \"./primitives/createVirtualList\";\nexport type { CreateVirtualListParams, VirtualListResult } from \"./primitives/createVirtualList\";\nexport { createMaskedInput } from \"./primitives/createMaskedInput\";\nexport type { CreateMaskedInputOptions, MaskedInputState } from \"./primitives/createMaskedInput\";\nexport { createMediaQuery } from \"./primitives/createMediaQuery\";\nexport { createPersistedJson } from \"./primitives/createPersistedJson\";\nexport type { PersistedJson } from \"./primitives/createPersistedJson\";\nexport { createRovingTabIndex } from \"./primitives/createRovingTabIndex\";\nexport type { CreateRovingTabIndexOptions } from \"./primitives/createRovingTabIndex\";\nexport { createHoverPopover } from \"./primitives/createHoverPopover\";\nexport type {\n CreateHoverPopoverOptions,\n HoverPopoverState,\n HoverPopoverPoint,\n HoverPopoverReferenceProps,\n HoverPopoverFloatingProps,\n} from \"./primitives/createHoverPopover\";\n\n// utils\nexport { resolvePlacement, buildFloatingMiddleware, placements } from \"./utils/floating\";\nexport type { Placement, ResolvedPlacement } from \"./utils/floating\";\n\n// base\nexport { Icon, IconProvider, IconContext, useIconSource, createIconVersion } from \"./components/base/icon\";\nexport type { IconProps, IconColor, IconProviderProps, IconContextValue } from \"./components/base/icon\";\n// Icon registry API. The icons themselves live behind \"@smwb/ui-solid/icons\" so\n// an app bundles only the ones it registers.\nexport {\n registerIcons,\n unregisterIcons,\n clearIcons,\n getIcon,\n hasIcon,\n listIcons,\n normalizeIconName,\n} from \"./icons/registry\";\nexport type { IconInput } from \"./icons/registry\";\nexport { configureIcons, getIconConfig, resetIconConfig } from \"./icons/config\";\nexport type { IconConfig } from \"./icons/config\";\nexport { subscribeIcons, getIconVersion } from \"./icons/store\";\nexport type { IconDefinition, IconSource } from \"./icons/types\";\nexport { Ripple } from \"./components/base/ripple\";\nexport type { RippleProps, RippleActionsRef, RippleClasses } from \"./components/base/ripple\";\nexport { AnimateHeight } from \"./components/base/animateHeight\";\nexport type { AnimateHeightProps, Height } from \"./components/base/animateHeight\";\n\n// dataDisplay\nexport { Typography } from \"./components/dataDisplay/typography\";\nexport type { TypographyProps, TypographyVariant, TypographyColor } from \"./components/dataDisplay/typography\";\nexport { Badge } from \"./components/dataDisplay/badge\";\nexport type { BadgeProps } from \"./components/dataDisplay/badge\";\nexport { Card } from \"./components/dataDisplay/card\";\nexport type { CardProps } from \"./components/dataDisplay/card\";\nexport { Chip } from \"./components/dataDisplay/chip\";\nexport type { ChipProps, ChipColor } from \"./components/dataDisplay/chip\";\nexport { LazyImage } from \"./components/dataDisplay/lazyImage\";\nexport type { LazyImageProps } from \"./components/dataDisplay/lazyImage\";\nexport { ChipGroup } from \"./components/dataDisplay/chipGroup\";\nexport type { ChipGroupProps, ChipGroupOption } from \"./components/dataDisplay/chipGroup\";\nexport { ThumbCard } from \"./components/dataDisplay/thumbCard\";\nexport type { ThumbCardProps } from \"./components/dataDisplay/thumbCard\";\nexport { AssetGrid } from \"./components/dataDisplay/assetGrid\";\nexport type { AssetGridProps } from \"./components/dataDisplay/assetGrid\";\nexport { Avatar, AvatarGroup } from \"./components/dataDisplay/avatar\";\nexport type { AvatarProps, AvatarGroupProps, AvatarSize } from \"./components/dataDisplay/avatar\";\nexport { List, ListItem } from \"./components/dataDisplay/list\";\nexport type { ListProps, ListItemProps } from \"./components/dataDisplay/list\";\nexport { Accordion } from \"./components/dataDisplay/accordion\";\nexport type { AccordionProps } from \"./components/dataDisplay/accordion\";\nexport { ExpansionPanel } from \"./components/dataDisplay/expansionPanel\";\nexport type {\n ExpansionPanelProps,\n ExpansionPanelLabels,\n ExpansionPanelRenderContext,\n ExpansionPanelControlsContext,\n ExpansionMode,\n} from \"./components/dataDisplay/expansionPanel\";\nexport {\n Table,\n TableHead,\n TableBody,\n TableRow,\n TableCell,\n TableHeadCell,\n TablePagination,\n} from \"./components/dataDisplay/table\";\nexport type {\n TableProps,\n TableHeadProps,\n TableBodyProps,\n TableRowProps,\n TableCellProps,\n TableHeadCellProps,\n TablePaginationProps,\n SortDirection,\n} from \"./components/dataDisplay/table\";\nexport { TreeView } from \"./components/dataDisplay/treeView\";\nexport type { TreeViewProps, ITreeNodeItem } from \"./components/dataDisplay/treeView\";\nexport { Carousel } from \"./components/dataDisplay/carousel\";\nexport type { CarouselProps } from \"./components/dataDisplay/carousel\";\nexport { ImagesList, ImagesListItem, ImagesListItemModal } from \"./components/dataDisplay/imagesList\";\nexport type {\n ImagesListProps,\n ImagesListItemProps,\n ImagesListItemModalProps,\n ImageItem,\n} from \"./components/dataDisplay/imagesList\";\nexport {\n Chat,\n ChatLayout,\n ChatOverlayLayout,\n ChatShell,\n ChatHeader,\n ChatMessages,\n ChatMessageItem,\n ChatMessageIncoming,\n ChatMessageOutgoing,\n ChatMessageSystem,\n ChatMessageBubble,\n ChatMessageSkeleton,\n ChatMessageStatus,\n ChatMessageAvatar,\n ChatAttachments,\n ChatAttachmentImage,\n ChatIconButton,\n ChatComposer,\n createChatInfiniteScroll,\n createChatFileUpload,\n resolveChatFileUploadMaxFiles,\n createChatStickToBottom,\n isScrolledToBottom,\n scrollChatToBottom,\n CHAT_EXPAND_LAYOUTS,\n CHAT_DEFAULT_FILE_UPLOAD_MAX_FILES,\n CHAT_MESSAGE_DELIVERY_STATUSES,\n CHAT_MESSAGE_STATUS_ICONS,\n CHAT_MESSAGE_STATUS_LABELS,\n isImageAttachment,\n formatChatTimestamp,\n resolveAllowedLayouts,\n isChatMessageDeliveryStatus,\n resolveChatMessageStatusIcon,\n resolveChatMessageStatusLabel,\n shouldComposerNewlineOnEnter,\n getChatLayoutActions,\n shouldShowChatCloseButton,\n} from \"./components/dataDisplay/chat\";\nexport type {\n ChatProps,\n ChatLayoutProps,\n ChatLayoutChatProps,\n ChatOverlayLayoutProps,\n ChatOverlayLayoutChatProps,\n ChatShellProps,\n ChatHeaderProps,\n ChatMessagesProps,\n ChatMessageItemProps,\n ChatMessageIncomingProps,\n ChatMessageOutgoingProps,\n ChatMessageSystemProps,\n ChatMessageBubbleProps,\n ChatMessageSkeletonProps,\n ChatMessageStatusProps,\n ChatMessageAvatarProps,\n ChatAttachmentsProps,\n ChatAttachmentImageProps,\n ChatIconButtonProps,\n ChatComposerProps,\n CreateChatInfiniteScrollParams,\n CreateChatFileUploadOptions,\n ChatFileUploadState,\n CreateChatStickToBottomParams,\n ChatMessage,\n ChatAttachment,\n ChatAuthor,\n ChatMessageVariant,\n ChatLayoutMode,\n ChatAnchor,\n ChatThemeMode,\n ChatMessageRenderContext,\n ChatLayoutSide,\n ChatMessageDeliveryStatus,\n ChatMessageStatusValue,\n ChatMessageStatusIcons,\n ChatMessageStatusRenderContext,\n ChatComposerNewlineOptions,\n} from \"./components/dataDisplay/chat\";\n\n// feedBack\nexport { Skeleton } from \"./components/feedBack/skeleton\";\nexport type { SkeletonProps } from \"./components/feedBack/skeleton\";\nexport { Message, MessageContainer } from \"./components/feedBack/message\";\nexport type { MessageProps, MessageSeverity } from \"./components/feedBack/message\";\nexport { ProgressIndicator, CircularProgress } from \"./components/feedBack/progressIndicator\";\nexport type { ProgressIndicatorProps, ProgressColor, CircularProgressProps } from \"./components/feedBack/progressIndicator\";\nexport { Tooltip } from \"./components/feedBack/tooltip\";\nexport type { TooltipProps, TooltipTrigger } from \"./components/feedBack/tooltip\";\nexport { Modal } from \"./components/feedBack/modal\";\nexport type { ModalProps, ModalSlotProps } from \"./components/feedBack/modal\";\nexport { SaveAssetDialog } from \"./components/feedBack/saveAssetDialog\";\nexport type { SaveAssetDialogProps } from \"./components/feedBack/saveAssetDialog\";\nexport { ConfirmDialog } from \"./components/feedBack/confirmDialog\";\nexport type { ConfirmDialogProps } from \"./components/feedBack/confirmDialog\";\nexport { SnackbarProvider, Snackbar, useSnackbar } from \"./components/feedBack/snackbar\";\nexport type {\n SnackbarsProviderProps,\n SnackbarProps,\n SnackbarOptions,\n AddSnackbar,\n AddSnackbarOptions,\n Variants as SnackbarVariant,\n Position as SnackbarPosition,\n} from \"./components/feedBack/snackbar\";\n\n// utility\nexport { ClickAwayListener } from \"./components/clickAwayListener\";\nexport type { ClickAwayListenerProps } from \"./components/clickAwayListener\";\n\n// layout\nexport { Divider } from \"./components/layout/divider\";\nexport type { DividerProps, DividerColor } from \"./components/layout/divider\";\nexport { Stack } from \"./components/layout/stack\";\nexport type { StackProps, StackSpacing } from \"./components/layout/stack\";\nexport { Page } from \"./components/layout/page\";\nexport type { PageProps, PageMaxWidth } from \"./components/layout/page\";\nexport { PageHeader } from \"./components/layout/pageHeader\";\nexport type { PageHeaderProps } from \"./components/layout/pageHeader\";\nexport { Grid, Row, Column, Container } from \"./components/layout/grid\";\nexport type {\n RowProps,\n ColumnProps,\n ContainerProps,\n BreakpointType,\n ColumnSpan,\n OffsetType,\n Breakpoint,\n ResponsiveBool,\n ContainerMaxWidth,\n} from \"./components/layout/grid\";\nexport { AppLayout } from \"./components/layout/appLayout\";\nexport type { AppLayoutProps } from \"./components/layout/appLayout\";\nexport { ScreenDivider } from \"./components/layout/screenDivider\";\nexport type { ScreenDividerProps } from \"./components/layout/screenDivider\";\nexport { Sheet } from \"./components/layout/sheet\";\nexport type { SheetProps } from \"./components/layout/sheet\";\nexport { FloatingWindow } from \"./components/layout/floatingWindow\";\nexport type {\n FloatingWindowProps,\n FloatingWindowPosition,\n FloatingWindowSize,\n FloatingWindowResizeDir,\n} from \"./components/layout/floatingWindow\";\n\n// navigation\nexport { AppBar } from \"./components/navigation/appBar\";\nexport type { AppBarProps, AppBarColor } from \"./components/navigation/appBar\";\nexport { Breadcrumbs } from \"./components/navigation/breadcrumbs\";\nexport type { BreadcrumbsProps } from \"./components/navigation/breadcrumbs\";\nexport { Pagination } from \"./components/navigation/pagination\";\nexport type { PaginationProps, PaginationColor } from \"./components/navigation/pagination\";\nexport { Stepper } from \"./components/navigation/stepper\";\nexport type { StepperProps, StepItem } from \"./components/navigation/stepper\";\nexport { Sidebar } from \"./components/navigation/sidebar\";\nexport type { SidebarProps, SidebarMenuItemProps, SidebarVariant } from \"./components/navigation/sidebar\";\nexport { Tabs, Tab, TabsContext, useTabsContext } from \"./components/navigation/tabs\";\nexport type { TabsProps, TabProps, TabsContextValue } from \"./components/navigation/tabs\";\nexport { BottomBar } from \"./components/navigation/bottomBar\";\nexport type { BottomBarProps, BottomBarMenuItemProps } from \"./components/navigation/bottomBar\";\nexport {\n Menu,\n MenuFloating,\n MenuList,\n MenuItem,\n MenuItemIcon,\n MenuItemText,\n MenuDivider,\n MenuSubmenu,\n MenuContext,\n useMenuContext,\n buildMenuFloatingMiddleware,\n} from \"./components/navigation/menu\";\nexport type {\n MenuProps,\n MenuFloatingProps,\n MenuListProps,\n MenuItemProps,\n MenuItemIconProps,\n MenuItemTextProps,\n MenuDividerProps,\n MenuSubmenuProps,\n MenuContextValue,\n} from \"./components/navigation/menu\";\nexport { OverflowMenu } from \"./components/navigation/overflowMenu\";\nexport type { OverflowMenuProps, OverflowMenuItem } from \"./components/navigation/overflowMenu\";\n\n// inputs\nexport { Button } from \"./components/inputs/button\";\nexport type { ButtonProps } from \"./components/inputs/button\";\nexport { ButtonGroup } from \"./components/inputs/buttonGroups\";\nexport type { ButtonGroupProps } from \"./components/inputs/buttonGroups\";\nexport { Checkbox } from \"./components/inputs/checkbox\";\nexport type {\n CheckboxProps,\n SelectionControlSize,\n SelectionControlColor,\n SelectionChangeEvent,\n} from \"./components/inputs/checkbox\";\nexport { RadioButton } from \"./components/inputs/radioButton\";\nexport type { RadioButtonProps } from \"./components/inputs/radioButton\";\nexport { Toggle } from \"./components/inputs/toggle\";\nexport type { ToggleProps } from \"./components/inputs/toggle\";\nexport { Rating } from \"./components/inputs/rating\";\nexport type { RatingProps, RatingColor } from \"./components/inputs/rating\";\nexport { Slider } from \"./components/inputs/slider\";\nexport type { SliderProps, SliderValue, SliderMark } from \"./components/inputs/slider\";\nexport { ValueSlider } from \"./components/inputs/valueSlider\";\nexport type { ValueSliderProps } from \"./components/inputs/valueSlider\";\nexport { FileInput } from \"./components/inputs/fileInput\";\nexport type { FileInputProps } from \"./components/inputs/fileInput\";\nexport { FileDrop, PreviewWrapper, Preview, CountPreview, isImageFile } from \"./components/inputs/fileDrop\";\nexport type { FileUploadProps, PreviewWrapperProps, PreviewProps, CountPreviewProps } from \"./components/inputs/fileDrop\";\nexport { SelectField, DropdownMenu } from \"./components/inputs/selectField\";\nexport type { SelectFieldProps, OnSelectChange, DropdownItem, DropdownItemProps } from \"./components/inputs/selectField\";\nexport {\n DatePicker,\n OpenView,\n DataPickerDays,\n DataPickerHeader,\n DataPickerInput,\n DatePickerActionLabel,\n DatePickerDay,\n DatePickerIconButton,\n DatePickerList,\n createDateInput,\n} from \"./components/inputs/datePicker\";\nexport type {\n DatePickerProps,\n DataPickerDaysProps,\n DataPickerHeaderProps,\n DataPickerInputProps,\n ActionLabelProps,\n DatePickerDayProps,\n DataPickerIconButtonProps,\n DatePickerListProps,\n CreateDateInputProps,\n DateInputState,\n} from \"./components/inputs/datePicker\";\nexport { TimePicker, TimePickerInput, TimePickerColumns, createTimeInput, DEFAULT_TIME_FORMAT } from \"./components/inputs/timePicker\";\nexport type { TimePickerProps, TimePickerInputProps, TimePickerColumnsProps } from \"./components/inputs/timePicker\";\nexport {\n DateTimePicker,\n DateTimePickerInput,\n createDateTimeInput,\n getCurrentDateTimeFormat,\n getDisplayDateTime,\n formatDateTimeByPattern,\n isDateTimePatternMatch,\n parseDateTimeByPattern,\n} from \"./components/inputs/dateTimePicker\";\nexport type {\n DateTimePickerProps,\n DateTimePickerInputProps,\n CreateDateTimeInputProps,\n DateTimeInputState,\n} from \"./components/inputs/dateTimePicker\";\nexport { FloatingButton } from \"./components/inputs/floatingButton\";\nexport type { FloatingButtonProps, FloatingButtonColor } from \"./components/inputs/floatingButton\";\nexport { TextField, TextFieldWrapper, TextFieldAdornment } from \"./components/inputs/textField\";\nexport type {\n TextFieldProps,\n TextFieldWrapperProps,\n TextFieldAdornmentProps,\n TextFieldVariant,\n} from \"./components/inputs/textField\";\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { createEffect, createMemo, createSignal, onCleanup } from "solid-js";
|
|
2
|
+
import { flip, offset, shift } from "@floating-ui/dom";
|
|
3
|
+
import { resolvePlacement } from "../utils/floating";
|
|
4
|
+
import { createFloating } from "./createFloating";
|
|
5
|
+
const DEFAULT_PLACEMENT = "bottom-start";
|
|
6
|
+
const DEFAULT_OFFSET_PX = 4;
|
|
7
|
+
const SHIFT_PADDING_PX = 8;
|
|
8
|
+
const rectFromPoint = ({ x, y }) => ({ x, y, top: y, left: x, right: x, bottom: y, width: 0, height: 0 });
|
|
9
|
+
function createHoverPopover(options = {}) {
|
|
10
|
+
const offsetPx = options.offsetPx ?? DEFAULT_OFFSET_PX;
|
|
11
|
+
const openDelay = options.openDelay ?? 0;
|
|
12
|
+
const closeDelay = options.closeDelay ?? 0;
|
|
13
|
+
const [open, setOpen] = createSignal(false);
|
|
14
|
+
let cursor = { x: 0, y: 0 };
|
|
15
|
+
let anchor = { x: 0, y: 0 };
|
|
16
|
+
let anchorEl = null;
|
|
17
|
+
let openTimer = null;
|
|
18
|
+
let closeTimer = null;
|
|
19
|
+
const resolved = createMemo(() => resolvePlacement(options.placement ?? DEFAULT_PLACEMENT));
|
|
20
|
+
const floating = createFloating({
|
|
21
|
+
placement: () => resolved().placement,
|
|
22
|
+
middleware: () => [
|
|
23
|
+
offset({ mainAxis: offsetPx, crossAxis: offsetPx }),
|
|
24
|
+
resolved().autoMiddleware ?? flip(),
|
|
25
|
+
shift({ padding: SHIFT_PADDING_PX }),
|
|
26
|
+
...options.middleware ?? []
|
|
27
|
+
]
|
|
28
|
+
});
|
|
29
|
+
const virtualReference = { getBoundingClientRect: () => rectFromPoint(anchor) };
|
|
30
|
+
const clearTimers = () => {
|
|
31
|
+
if (openTimer !== null) {
|
|
32
|
+
clearTimeout(openTimer);
|
|
33
|
+
openTimer = null;
|
|
34
|
+
}
|
|
35
|
+
if (closeTimer !== null) {
|
|
36
|
+
clearTimeout(closeTimer);
|
|
37
|
+
closeTimer = null;
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
onCleanup(clearTimers);
|
|
41
|
+
createEffect(() => {
|
|
42
|
+
if (!open()) return;
|
|
43
|
+
floating.setReference(anchorEl ?? virtualReference);
|
|
44
|
+
floating.update();
|
|
45
|
+
});
|
|
46
|
+
const freezeAnchor = () => {
|
|
47
|
+
if (anchorEl === null) anchor = cursor;
|
|
48
|
+
};
|
|
49
|
+
const openNow = () => {
|
|
50
|
+
clearTimers();
|
|
51
|
+
freezeAnchor();
|
|
52
|
+
setOpen(true);
|
|
53
|
+
};
|
|
54
|
+
const scheduleOpen = () => {
|
|
55
|
+
clearTimers();
|
|
56
|
+
if (openDelay <= 0) {
|
|
57
|
+
freezeAnchor();
|
|
58
|
+
setOpen(true);
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
openTimer = setTimeout(() => {
|
|
62
|
+
freezeAnchor();
|
|
63
|
+
setOpen(true);
|
|
64
|
+
}, openDelay);
|
|
65
|
+
};
|
|
66
|
+
const scheduleClose = () => {
|
|
67
|
+
clearTimers();
|
|
68
|
+
if (closeDelay <= 0) {
|
|
69
|
+
setOpen(false);
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
closeTimer = setTimeout(() => setOpen(false), closeDelay);
|
|
73
|
+
};
|
|
74
|
+
const close = () => {
|
|
75
|
+
clearTimers();
|
|
76
|
+
setOpen(false);
|
|
77
|
+
};
|
|
78
|
+
const setVirtualAnchor = (point) => {
|
|
79
|
+
anchorEl = null;
|
|
80
|
+
anchor = point;
|
|
81
|
+
};
|
|
82
|
+
const setAnchorEl = (element) => {
|
|
83
|
+
anchorEl = element;
|
|
84
|
+
};
|
|
85
|
+
const getReferenceProps = (userHandlers) => ({
|
|
86
|
+
onPointerEnter: (event) => {
|
|
87
|
+
userHandlers?.onPointerEnter?.(event);
|
|
88
|
+
cursor = { x: event.clientX, y: event.clientY };
|
|
89
|
+
scheduleOpen();
|
|
90
|
+
},
|
|
91
|
+
onPointerMove: (event) => {
|
|
92
|
+
userHandlers?.onPointerMove?.(event);
|
|
93
|
+
cursor = { x: event.clientX, y: event.clientY };
|
|
94
|
+
},
|
|
95
|
+
onPointerLeave: (event) => {
|
|
96
|
+
userHandlers?.onPointerLeave?.(event);
|
|
97
|
+
scheduleClose();
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
const getFloatingProps = (userProps) => ({
|
|
101
|
+
ref: (node) => floating.setFloating(node),
|
|
102
|
+
style: { ...floating.floatingStyles(), ...userProps?.style ?? {} },
|
|
103
|
+
onPointerEnter: () => {
|
|
104
|
+
clearTimers();
|
|
105
|
+
setOpen(true);
|
|
106
|
+
},
|
|
107
|
+
onPointerLeave: scheduleClose
|
|
108
|
+
});
|
|
109
|
+
return {
|
|
110
|
+
open,
|
|
111
|
+
getReferenceProps,
|
|
112
|
+
getFloatingProps,
|
|
113
|
+
setAnchorEl,
|
|
114
|
+
setVirtualAnchor,
|
|
115
|
+
openNow,
|
|
116
|
+
scheduleOpen,
|
|
117
|
+
scheduleClose,
|
|
118
|
+
close
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
var createHoverPopover_default = createHoverPopover;
|
|
122
|
+
export {
|
|
123
|
+
createHoverPopover,
|
|
124
|
+
createHoverPopover_default as default
|
|
125
|
+
};
|
|
126
|
+
//# sourceMappingURL=createHoverPopover.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/primitives/createHoverPopover.ts"],
|
|
4
|
+
"sourcesContent": ["import { type Accessor, type JSX, createEffect, createMemo, createSignal, onCleanup } from \"solid-js\";\nimport { flip, offset, shift } from \"@floating-ui/dom\";\nimport type { Middleware, VirtualElement } from \"@floating-ui/dom\";\nimport { type Placement, resolvePlacement } from \"../utils/floating\";\nimport { createFloating } from \"./createFloating\";\n\nexport interface CreateHoverPopoverOptions {\n /** Placement of the popover relative to its anchor. Default `\"bottom-start\"`. */\n placement?: Placement;\n /** Offset (px) applied on both axes between the anchor and the popover. Default `4`. */\n offsetPx?: number;\n /** Delay (ms) before opening after pointer enter. Default `0`. */\n openDelay?: number;\n /** Delay (ms) before closing after pointer leave. Default `0`. */\n closeDelay?: number;\n /** Extra floating-ui middleware appended after the smwb defaults. */\n middleware?: Middleware[];\n}\n\n/** A pointer position in viewport (client) coordinates. */\nexport interface HoverPopoverPoint {\n x: number;\n y: number;\n}\n\nexport interface HoverPopoverReferenceProps {\n onPointerEnter: (event: PointerEvent) => void;\n onPointerMove: (event: PointerEvent) => void;\n onPointerLeave: (event: PointerEvent) => void;\n}\n\nexport interface HoverPopoverFloatingProps {\n ref: (node: HTMLElement) => void;\n style: JSX.CSSProperties;\n onPointerEnter: () => void;\n onPointerLeave: () => void;\n}\n\nexport interface HoverPopoverState {\n /** Whether the popover is currently open. */\n open: Accessor<boolean>;\n /**\n * Pointer handlers for the trigger element(s). Spread on a single anchor, or on EVERY\n * row of a list/table to share one popover across many triggers. By default the popover\n * is anchored to the cursor position frozen when it opens. Pass your own handlers to\n * compose them (e.g. to mark which row is active).\n */\n getReferenceProps: (userHandlers?: Partial<HoverPopoverReferenceProps>) => HoverPopoverReferenceProps;\n /** Props for the single floating element; keeps it open while it is hovered. */\n getFloatingProps: (userProps?: { style?: JSX.CSSProperties }) => HoverPopoverFloatingProps;\n /** Anchor the popover to a real element instead of the cursor (`null` clears it). */\n setAnchorEl: (element: Element | null) => void;\n /** Anchor the popover to an explicit point, e.g. an external cursor source. */\n setVirtualAnchor: (point: HoverPopoverPoint) => void;\n /** Open immediately, ignoring `openDelay`. */\n openNow: () => void;\n /** Open after `openDelay`. */\n scheduleOpen: () => void;\n /** Close after `closeDelay`. */\n scheduleClose: () => void;\n /** Close immediately. */\n close: () => void;\n}\n\nconst DEFAULT_PLACEMENT: Placement = \"bottom-start\";\nconst DEFAULT_OFFSET_PX = 4;\nconst SHIFT_PADDING_PX = 8;\n\nconst rectFromPoint = ({ x, y }: HoverPopoverPoint): DOMRect =>\n ({ x, y, top: y, left: x, right: x, bottom: y, width: 0, height: 0 }) as DOMRect;\n\n/**\n * Headless hover-popover positioning \u2014 the Solid twin of ui-react's `useHoverPopover`.\n *\n * Wraps {@link createFloating} with the smwb placement / offset / flip / shift conventions\n * but imposes NO DOM structure: spread `getReferenceProps()` on any trigger (including a\n * `<tr>`, which the wrapper-based `<Tooltip>` cannot do) and `getFloatingProps()` on a\n * single floating element you render yourself.\n *\n * The default anchor is the cursor point frozen when the popover opens (a floating-ui\n * virtual element), so ONE instance can serve a whole table/list \u2014 call\n * `getReferenceProps()` on every row and render one shared popover instead of mounting one\n * floating engine per row. Use `setAnchorEl` to anchor to a real element instead.\n */\nexport function createHoverPopover(options: CreateHoverPopoverOptions = {}): HoverPopoverState {\n const offsetPx = options.offsetPx ?? DEFAULT_OFFSET_PX;\n const openDelay = options.openDelay ?? 0;\n const closeDelay = options.closeDelay ?? 0;\n\n const [open, setOpen] = createSignal(false);\n\n let cursor: HoverPopoverPoint = { x: 0, y: 0 };\n let anchor: HoverPopoverPoint = { x: 0, y: 0 };\n let anchorEl: Element | null = null;\n let openTimer: ReturnType<typeof setTimeout> | null = null;\n let closeTimer: ReturnType<typeof setTimeout> | null = null;\n\n const resolved = createMemo(() => resolvePlacement(options.placement ?? DEFAULT_PLACEMENT));\n\n const floating = createFloating({\n placement: () => resolved().placement,\n middleware: () => [\n offset({ mainAxis: offsetPx, crossAxis: offsetPx }),\n resolved().autoMiddleware ?? flip(),\n shift({ padding: SHIFT_PADDING_PX }),\n ...(options.middleware ?? []),\n ],\n });\n\n // The virtual reference reads `anchor` LAZILY, so freezing the cursor is just a field\n // write \u2014 no need to rebuild the reference on every pointer move.\n const virtualReference: VirtualElement = { getBoundingClientRect: () => rectFromPoint(anchor) };\n\n const clearTimers = (): void => {\n if (openTimer !== null) {\n clearTimeout(openTimer);\n openTimer = null;\n }\n if (closeTimer !== null) {\n clearTimeout(closeTimer);\n closeTimer = null;\n }\n };\n\n onCleanup(clearTimers);\n\n // Apply the active anchor (element or frozen cursor) whenever the popover opens;\n // createFloating's autoUpdate keeps it positioned while the floating element is mounted.\n createEffect(() => {\n if (!open()) return;\n floating.setReference(anchorEl ?? virtualReference);\n floating.update();\n });\n\n const freezeAnchor = (): void => {\n if (anchorEl === null) anchor = cursor;\n };\n\n const openNow = (): void => {\n clearTimers();\n freezeAnchor();\n setOpen(true);\n };\n\n const scheduleOpen = (): void => {\n clearTimers();\n if (openDelay <= 0) {\n freezeAnchor();\n setOpen(true);\n return;\n }\n openTimer = setTimeout(() => {\n freezeAnchor();\n setOpen(true);\n }, openDelay);\n };\n\n const scheduleClose = (): void => {\n clearTimers();\n if (closeDelay <= 0) {\n setOpen(false);\n return;\n }\n closeTimer = setTimeout(() => setOpen(false), closeDelay);\n };\n\n const close = (): void => {\n clearTimers();\n setOpen(false);\n };\n\n const setVirtualAnchor = (point: HoverPopoverPoint): void => {\n anchorEl = null;\n anchor = point;\n };\n\n const setAnchorEl = (element: Element | null): void => {\n anchorEl = element;\n };\n\n const getReferenceProps = (userHandlers?: Partial<HoverPopoverReferenceProps>): HoverPopoverReferenceProps => ({\n onPointerEnter: (event) => {\n userHandlers?.onPointerEnter?.(event);\n cursor = { x: event.clientX, y: event.clientY };\n scheduleOpen();\n },\n onPointerMove: (event) => {\n userHandlers?.onPointerMove?.(event);\n cursor = { x: event.clientX, y: event.clientY };\n },\n onPointerLeave: (event) => {\n userHandlers?.onPointerLeave?.(event);\n scheduleClose();\n },\n });\n\n const getFloatingProps = (userProps?: { style?: JSX.CSSProperties }): HoverPopoverFloatingProps => ({\n ref: (node) => floating.setFloating(node),\n style: { ...floating.floatingStyles(), ...(userProps?.style ?? {}) },\n onPointerEnter: () => {\n clearTimers();\n setOpen(true);\n },\n onPointerLeave: scheduleClose,\n });\n\n return {\n open,\n getReferenceProps,\n getFloatingProps,\n setAnchorEl,\n setVirtualAnchor,\n openNow,\n scheduleOpen,\n scheduleClose,\n close,\n };\n}\n\nexport default createHoverPopover;\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
const read = (value) => typeof value === "function" ? value() : value;
|
|
2
|
+
function createRovingTabIndex(options) {
|
|
3
|
+
return (event) => {
|
|
4
|
+
const count = read(options.count);
|
|
5
|
+
if (count === 0) return;
|
|
6
|
+
const activeIndex = read(options.activeIndex);
|
|
7
|
+
const orientation = options.orientation ?? "horizontal";
|
|
8
|
+
const loop = options.loop ?? true;
|
|
9
|
+
const horiz = orientation === "horizontal" || orientation === "both";
|
|
10
|
+
const vert = orientation === "vertical" || orientation === "both";
|
|
11
|
+
const next = horiz && event.key === "ArrowRight" || vert && event.key === "ArrowDown";
|
|
12
|
+
const prev = horiz && event.key === "ArrowLeft" || vert && event.key === "ArrowUp";
|
|
13
|
+
let target = null;
|
|
14
|
+
if (next) {
|
|
15
|
+
target = activeIndex + 1;
|
|
16
|
+
} else if (prev) {
|
|
17
|
+
target = activeIndex - 1;
|
|
18
|
+
} else if (event.key === "Home") {
|
|
19
|
+
target = 0;
|
|
20
|
+
} else if (event.key === "End") {
|
|
21
|
+
target = count - 1;
|
|
22
|
+
}
|
|
23
|
+
if (target === null) return;
|
|
24
|
+
const clamp = (i) => loop ? (i + count) % count : Math.max(0, Math.min(count - 1, i));
|
|
25
|
+
target = clamp(target);
|
|
26
|
+
const isDisabled = options.isDisabled;
|
|
27
|
+
if (isDisabled) {
|
|
28
|
+
let guard = 0;
|
|
29
|
+
const step = next || event.key === "Home" ? 1 : -1;
|
|
30
|
+
while (isDisabled(target) && guard < count) {
|
|
31
|
+
target = clamp(target + step);
|
|
32
|
+
guard += 1;
|
|
33
|
+
}
|
|
34
|
+
if (isDisabled(target)) return;
|
|
35
|
+
}
|
|
36
|
+
event.preventDefault();
|
|
37
|
+
options.onMove(target);
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
var createRovingTabIndex_default = createRovingTabIndex;
|
|
41
|
+
export {
|
|
42
|
+
createRovingTabIndex,
|
|
43
|
+
createRovingTabIndex_default as default
|
|
44
|
+
};
|
|
45
|
+
//# sourceMappingURL=createRovingTabIndex.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/primitives/createRovingTabIndex.ts"],
|
|
4
|
+
"sourcesContent": ["import type { JSX } from \"solid-js\";\n\nexport interface CreateRovingTabIndexOptions {\n /** Number of focusable items. */\n count: number | (() => number);\n /** Current active index. */\n activeIndex: number | (() => number);\n /** Called with the next index when navigation keys are pressed. */\n onMove: (nextIndex: number) => void;\n /** Arrow-key axis. */\n orientation?: \"horizontal\" | \"vertical\" | \"both\";\n /** Wrap around the ends (default true). */\n loop?: boolean;\n /** Optional predicate to skip disabled items. */\n isDisabled?: (index: number) => boolean;\n}\n\nconst read = (value: number | (() => number)): number => (typeof value === \"function\" ? value() : value);\n\n/**\n * Keyboard navigation for composite widgets (tabs, menus, trees, pagination) \u2014 the Solid\n * twin of ui-react's `useRovingTabIndex`. Returns an `onKeyDown` handler implementing\n * Arrow/Home/End with optional looping and disabled-skipping. The consumer owns focus and\n * activation.\n *\n * `count`/`activeIndex` accept an accessor so the handler \u2014 attached once \u2014 always reads\n * the live value instead of the one captured when it was created.\n */\nexport function createRovingTabIndex(\n options: CreateRovingTabIndexOptions,\n): JSX.EventHandler<HTMLElement, KeyboardEvent> {\n return (event) => {\n const count = read(options.count);\n if (count === 0) return;\n\n const activeIndex = read(options.activeIndex);\n const orientation = options.orientation ?? \"horizontal\";\n const loop = options.loop ?? true;\n const horiz = orientation === \"horizontal\" || orientation === \"both\";\n const vert = orientation === \"vertical\" || orientation === \"both\";\n const next = (horiz && event.key === \"ArrowRight\") || (vert && event.key === \"ArrowDown\");\n const prev = (horiz && event.key === \"ArrowLeft\") || (vert && event.key === \"ArrowUp\");\n\n let target: number | null = null;\n if (next) {\n target = activeIndex + 1;\n } else if (prev) {\n target = activeIndex - 1;\n } else if (event.key === \"Home\") {\n target = 0;\n } else if (event.key === \"End\") {\n target = count - 1;\n }\n if (target === null) return;\n\n const clamp = (i: number): number => (loop ? (i + count) % count : Math.max(0, Math.min(count - 1, i)));\n target = clamp(target);\n\n const isDisabled = options.isDisabled;\n if (isDisabled) {\n let guard = 0;\n const step = next || event.key === \"Home\" ? 1 : -1;\n while (isDisabled(target) && guard < count) {\n target = clamp(target + step);\n guard += 1;\n }\n if (isDisabled(target)) return;\n }\n\n event.preventDefault();\n options.onMove(target);\n };\n}\n\nexport default createRovingTabIndex;\n"],
|
|
5
|
+
"mappings": "AAiBA,MAAM,OAAO,CAAC,UAA4C,OAAO,UAAU,aAAa,MAAM,IAAI;AAW3F,SAAS,qBACd,SAC8C;AAC9C,SAAO,CAAC,UAAU;AAChB,UAAM,QAAQ,KAAK,QAAQ,KAAK;AAChC,QAAI,UAAU,EAAG;AAEjB,UAAM,cAAc,KAAK,QAAQ,WAAW;AAC5C,UAAM,cAAc,QAAQ,eAAe;AAC3C,UAAM,OAAO,QAAQ,QAAQ;AAC7B,UAAM,QAAQ,gBAAgB,gBAAgB,gBAAgB;AAC9D,UAAM,OAAO,gBAAgB,cAAc,gBAAgB;AAC3D,UAAM,OAAQ,SAAS,MAAM,QAAQ,gBAAkB,QAAQ,MAAM,QAAQ;AAC7E,UAAM,OAAQ,SAAS,MAAM,QAAQ,eAAiB,QAAQ,MAAM,QAAQ;AAE5E,QAAI,SAAwB;AAC5B,QAAI,MAAM;AACR,eAAS,cAAc;AAAA,IACzB,WAAW,MAAM;AACf,eAAS,cAAc;AAAA,IACzB,WAAW,MAAM,QAAQ,QAAQ;AAC/B,eAAS;AAAA,IACX,WAAW,MAAM,QAAQ,OAAO;AAC9B,eAAS,QAAQ;AAAA,IACnB;AACA,QAAI,WAAW,KAAM;AAErB,UAAM,QAAQ,CAAC,MAAuB,QAAQ,IAAI,SAAS,QAAQ,KAAK,IAAI,GAAG,KAAK,IAAI,QAAQ,GAAG,CAAC,CAAC;AACrG,aAAS,MAAM,MAAM;AAErB,UAAM,aAAa,QAAQ;AAC3B,QAAI,YAAY;AACd,UAAI,QAAQ;AACZ,YAAM,OAAO,QAAQ,MAAM,QAAQ,SAAS,IAAI;AAChD,aAAO,WAAW,MAAM,KAAK,QAAQ,OAAO;AAC1C,iBAAS,MAAM,SAAS,IAAI;AAC5B,iBAAS;AAAA,MACX;AACA,UAAI,WAAW,MAAM,EAAG;AAAA,IAC1B;AAEA,UAAM,eAAe;AACrB,YAAQ,OAAO,MAAM;AAAA,EACvB;AACF;AAEA,IAAO,+BAAQ;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@smwb/ui-solid",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.10.0",
|
|
4
4
|
"description": "SolidJS port of summer-ui: strict, tree-shakeable Material-style component library sharing the @smwb/ui-styles design system.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -156,7 +156,7 @@
|
|
|
156
156
|
"default": "./dist/source/components/clickAwayListener/index.js"
|
|
157
157
|
},
|
|
158
158
|
"./confirmDialog": {
|
|
159
|
-
"types": "./dist/index.d.ts",
|
|
159
|
+
"types": "./dist/components/feedBack/confirmDialog/index.d.ts",
|
|
160
160
|
"solid": "./dist/source/components/feedBack/confirmDialog/index.js",
|
|
161
161
|
"import": "./dist/source/components/feedBack/confirmDialog/index.js",
|
|
162
162
|
"default": "./dist/source/components/feedBack/confirmDialog/index.js"
|
|
@@ -275,6 +275,12 @@
|
|
|
275
275
|
"import": "./dist/source/components/inputs/floatingButton/index.js",
|
|
276
276
|
"default": "./dist/source/components/inputs/floatingButton/index.js"
|
|
277
277
|
},
|
|
278
|
+
"./floatingWindow": {
|
|
279
|
+
"types": "./dist/components/layout/floatingWindow/index.d.ts",
|
|
280
|
+
"solid": "./dist/source/components/layout/floatingWindow/index.js",
|
|
281
|
+
"import": "./dist/source/components/layout/floatingWindow/index.js",
|
|
282
|
+
"default": "./dist/source/components/layout/floatingWindow/index.js"
|
|
283
|
+
},
|
|
278
284
|
"./grid": {
|
|
279
285
|
"types": "./dist/components/layout/grid/index.d.ts",
|
|
280
286
|
"solid": "./dist/source/components/layout/grid/index.js",
|
|
@@ -527,7 +533,7 @@
|
|
|
527
533
|
},
|
|
528
534
|
"dependencies": {
|
|
529
535
|
"@floating-ui/dom": "^1.7.0",
|
|
530
|
-
"@smwb/ui-styles": "^1.
|
|
536
|
+
"@smwb/ui-styles": "^1.4.0",
|
|
531
537
|
"clsx": "^2.1.1",
|
|
532
538
|
"zod": "^4.4.3"
|
|
533
539
|
},
|
|
@@ -536,7 +542,7 @@
|
|
|
536
542
|
},
|
|
537
543
|
"devDependencies": {
|
|
538
544
|
"@eslint/js": "^9.39.0",
|
|
539
|
-
"@smwb/ui-styles": "^1.
|
|
545
|
+
"@smwb/ui-styles": "^1.4.0",
|
|
540
546
|
"@storybook/addon-docs": "^10.4.0",
|
|
541
547
|
"@storybook/addon-links": "^10.4.0",
|
|
542
548
|
"@storybook/test-runner": "^0.24.4",
|