@primereact/headless 11.0.0-alpha.8 → 11.0.0-alpha.9
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/breadcrumb/index.d.ts +2 -0
- package/breadcrumb/index.mjs +2 -0
- package/breadcrumb/index.mjs.map +1 -0
- package/breadcrumb/useBreadcrumb.d.ts +3 -0
- package/breadcrumb/useBreadcrumb.props.d.ts +2 -0
- package/breadcrumb/useBreadcrumb.test.d.ts +0 -0
- package/carousel/index.mjs +1 -1
- package/carousel/index.mjs.map +1 -1
- package/carousel/useCarousel.d.ts +18 -18
- package/commandmenu/index.d.ts +2 -0
- package/commandmenu/index.mjs +2 -0
- package/commandmenu/index.mjs.map +1 -0
- package/commandmenu/useCommandMenu.d.ts +11 -0
- package/commandmenu/useCommandMenu.props.d.ts +2 -0
- package/commandmenu/useCommandMenu.test.d.ts +0 -0
- package/contextmenu/index.d.ts +2 -0
- package/contextmenu/index.mjs +2 -0
- package/contextmenu/index.mjs.map +1 -0
- package/contextmenu/useContextMenu.d.ts +1 -0
- package/contextmenu/useContextMenu.props.d.ts +2 -0
- package/contextmenu/useContextMenu.test.d.ts +0 -0
- package/gallery/item/index.mjs +1 -1
- package/gallery/item/index.mjs.map +1 -1
- package/inputtags/index.d.ts +2 -0
- package/inputtags/index.mjs +2 -0
- package/inputtags/index.mjs.map +1 -0
- package/inputtags/useInputTags.d.ts +20 -0
- package/inputtags/useInputTags.props.d.ts +2 -0
- package/inputtags/useInputTags.test.d.ts +0 -0
- package/menu/index.d.ts +2 -0
- package/menu/index.mjs +2 -0
- package/menu/index.mjs.map +1 -0
- package/menu/sub/index.d.ts +2 -0
- package/menu/sub/index.mjs +2 -0
- package/menu/sub/index.mjs.map +1 -0
- package/menu/sub/useMenuSub.d.ts +19 -0
- package/menu/sub/useMenuSub.props.d.ts +2 -0
- package/menu/useMenu.d.ts +34 -0
- package/menu/useMenu.props.d.ts +2 -0
- package/menu/useMenu.test.d.ts +0 -0
- package/overlay/index.mjs +1 -1
- package/overlay/index.mjs.map +1 -1
- package/package.json +3 -3
- package/placer/index.mjs +1 -1
- package/placer/index.mjs.map +1 -1
- package/toast/index.mjs +1 -1
- package/toast/index.mjs.map +1 -1
- package/toast/item/index.css +1 -1
- package/toast/item/index.css.map +1 -1
- package/toast/item/index.mjs +1 -1
- package/toast/item/index.mjs.map +1 -1
- package/toast/item/useToastItem.d.ts +1 -1
- package/toast/toastStore.d.ts +3 -2
- package/tree/TreeDragDropService.d.ts +24 -0
- package/tree/index.d.ts +3 -0
- package/tree/index.mjs +2 -0
- package/tree/index.mjs.map +1 -0
- package/tree/useTree.d.ts +27 -0
- package/tree/useTree.props.d.ts +2 -0
- package/tree/useTree.test.d.ts +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/menu/useMenu.ts","../../src/menu/useMenu.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { findSingle, focus, isPrintableCharacter } from '@primeuix/utils';\nimport * as React from 'react';\nimport { defaultProps } from './useMenu.props';\n\nexport const useMenu = withHeadless({\n name: 'useMenu',\n defaultProps,\n setup({ props }) {\n const [openState, setOpenState] = React.useState<boolean>(props.open !== undefined ? props.open : (props.defaultOpen ?? false));\n const [focusedState, setFocusedState] = React.useState<boolean>(false);\n const [focusedOptionId, setFocusedOptionId] = React.useState<string | string[]>(props.composite ? [] : '');\n const [contextMenuTarget, setContextMenuTarget] = React.useState<{ pageX: number; pageY: number } | null>(null);\n const isMouseInteractionRef = React.useRef(false);\n\n const portalRef = React.useRef<{ containerRef: { current: { elementRef: React.RefObject<HTMLDivElement> } } } | null>(null);\n const triggerRef = React.useRef<{ elementRef: React.RefObject<HTMLButtonElement> } | null>(null);\n const listRef = React.useRef<HTMLUListElement | null>(null);\n const itemRefsById = React.useRef<Map<string, HTMLElement>>(new Map());\n\n const state = {\n opened: openState,\n focused: focusedState,\n focusedOptionId,\n contextMenuTarget\n };\n\n const registerItem = React.useCallback((id: string, ref: HTMLElement) => {\n itemRefsById.current.set(id, ref);\n }, []);\n\n const unregisterItem = React.useCallback((id: string) => {\n itemRefsById.current.delete(id);\n }, []);\n\n const updateOpenState = (value: boolean) => {\n if (props.onOpenChange) {\n props.onOpenChange({ value });\n }\n };\n\n React.useEffect(() => {\n if (props.open !== undefined) {\n setOpenState(props.open);\n }\n }, [props.open]);\n\n const changeVisibleState = (isVisible: boolean) => {\n setOpenState(isVisible);\n updateOpenState(isVisible);\n };\n\n const getFocusableItems = React.useCallback(() => {\n const items: Array<{ id: string; element: HTMLElement }> = [];\n\n itemRefsById.current.forEach((element, id) => {\n const isDisabled = element.getAttribute('data-p-disabled') === 'true';\n\n if (isDisabled) return;\n\n let currentElement: HTMLElement | null = element;\n let isVisible = true;\n\n while (currentElement && currentElement !== listRef.current) {\n const parentList = currentElement.closest('[data-pc-name=\"menulist\"]') as HTMLElement | null;\n\n if (!parentList || parentList === listRef.current) break;\n\n const trigger = parentList.previousElementSibling as HTMLElement | null;\n\n if (trigger && trigger.getAttribute('aria-expanded') === 'false') {\n isVisible = false;\n break;\n }\n\n currentElement = parentList.parentElement;\n }\n\n if (!isVisible) return;\n\n items.push({ id, element });\n });\n\n return items;\n }, []);\n\n const getFocusableItemsAtCurrentLevel = React.useCallback(() => {\n const allFocusableItems = getFocusableItems();\n\n if (allFocusableItems.length === 0) return [];\n\n // Determine the root level depth by examining all items\n // Find the minimum underscore count among all items to determine root level depth\n const minDepth = Math.min(...allFocusableItems.map((item) => item.id.split('_').length));\n\n if (focusedOptionId.length === 0) {\n // No focus yet, return root level items\n const rootItems = allFocusableItems.filter((item) => {\n return item.id.split('_').length === minDepth;\n });\n\n return rootItems;\n }\n\n // Get the current focused item ID\n const currentFocusedId = focusedOptionId[focusedOptionId.length - 1];\n const currentIdParts = currentFocusedId.split('_');\n const currentDepth = currentIdParts.length;\n\n // Filter items that are at the same level and belong to the same parent\n const levelItems = allFocusableItems.filter((item) => {\n const itemParts = item.id.split('_');\n\n // Must have same depth\n if (itemParts.length !== currentDepth) return false;\n\n // For root level\n if (currentDepth === minDepth) {\n return itemParts.length === minDepth;\n }\n\n // For nested levels, check if they share the same parent path\n // Example: menu_0_1_2 and menu_0_1_3 share parent menu_0_1\n const currentParentPath = currentIdParts.slice(0, -1).join('_');\n const itemParentPath = itemParts.slice(0, -1).join('_');\n\n return currentParentPath === itemParentPath;\n });\n\n return levelItems;\n }, [props.composite, focusedOptionId, getFocusableItems]);\n\n const changeFocusedOptionId = (id: string) => {\n // Mark as mouse interaction to prevent auto-focus in onListFocus\n isMouseInteractionRef.current = true;\n\n if (props.composite) {\n setFocusedOptionId((prev) => {\n const prevArray = Array.isArray(prev) ? prev : [];\n\n if (prevArray.length === 0) {\n return [id];\n } else {\n if (prevArray.includes(id)) {\n const len = id.length;\n\n const findIndex = prevArray.findIndex((val) => val.length === len);\n\n if (findIndex !== -1) {\n return [...prevArray.slice(0, findIndex), id];\n }\n\n return prevArray;\n } else if (prevArray[prevArray.length - 1].length === id.length) {\n return [...prevArray.slice(0, -1), id];\n }\n\n return [...prevArray, id];\n }\n });\n } else {\n setFocusedOptionId(id);\n }\n };\n\n const getCurrentFocusedId = () => {\n if (props.composite && Array.isArray(focusedOptionId)) {\n return focusedOptionId[focusedOptionId.length - 1] || '';\n }\n\n return typeof focusedOptionId === 'string' ? focusedOptionId : '';\n };\n\n const searchItems = (char: string) => {\n const focusableItems = props.composite ? getFocusableItemsAtCurrentLevel() : getFocusableItems();\n\n if (focusableItems.length === 0) return;\n\n const currentFocusedId = getCurrentFocusedId();\n const startIndex = currentFocusedId ? focusableItems.findIndex((item) => item.id === currentFocusedId) + 1 : 0;\n const searchChar = char.toLowerCase();\n\n for (let i = startIndex; i < focusableItems.length; i++) {\n const item = focusableItems[i];\n const itemText = item.element.textContent?.trim().toLowerCase() || '';\n\n if (itemText.startsWith(searchChar)) {\n if (props.composite) {\n changeFocusedOptionId(item.id);\n } else {\n setFocusedOptionId(item.id);\n }\n\n return;\n }\n }\n\n for (let i = 0; i < startIndex; i++) {\n const item = focusableItems[i];\n const itemText = item.element.textContent?.trim().toLowerCase() || '';\n\n if (itemText.startsWith(searchChar)) {\n if (props.composite) {\n changeFocusedOptionId(item.id);\n } else {\n setFocusedOptionId(item.id);\n }\n\n return;\n }\n }\n };\n\n const onArrowDown = (event: React.KeyboardEvent) => {\n event.preventDefault();\n\n const focusableItems = props.composite ? getFocusableItemsAtCurrentLevel() : getFocusableItems();\n\n if (focusableItems.length === 0) return;\n\n const currentFocusedId = getCurrentFocusedId();\n\n if (!currentFocusedId) {\n if (props.composite) {\n changeFocusedOptionId(focusableItems[0].id);\n } else {\n setFocusedOptionId(focusableItems[0].id);\n }\n\n return;\n }\n\n const currentIndex = focusableItems.findIndex((item) => item.id === currentFocusedId);\n const nextIndex = currentIndex < focusableItems.length - 1 ? currentIndex + 1 : 0;\n\n if (props.composite) {\n changeFocusedOptionId(focusableItems[nextIndex].id);\n } else {\n setFocusedOptionId(focusableItems[nextIndex].id);\n }\n };\n\n const onArrowUp = (event: React.KeyboardEvent) => {\n event.preventDefault();\n\n if (event.altKey && triggerRef.current) {\n hide();\n\n return;\n }\n\n const focusableItems = props.composite ? getFocusableItemsAtCurrentLevel() : getFocusableItems();\n\n if (focusableItems.length === 0) return;\n\n const currentFocusedId = getCurrentFocusedId();\n\n if (!currentFocusedId) {\n if (props.composite) {\n changeFocusedOptionId(focusableItems[focusableItems.length - 1].id);\n } else {\n setFocusedOptionId(focusableItems[focusableItems.length - 1].id);\n }\n\n return;\n }\n\n const currentIndex = focusableItems.findIndex((item) => item.id === currentFocusedId);\n const prevIndex = currentIndex > 0 ? currentIndex - 1 : focusableItems.length - 1;\n\n if (props.composite) {\n changeFocusedOptionId(focusableItems[prevIndex].id);\n } else {\n setFocusedOptionId(focusableItems[prevIndex].id);\n }\n };\n\n const onArrowRight = (event: React.KeyboardEvent) => {\n if (!props.composite) return;\n\n event.preventDefault();\n\n const currentFocusedId = getCurrentFocusedId();\n\n if (!currentFocusedId) return;\n\n // Find the focused element\n const focusedElement = itemRefsById.current.get(currentFocusedId);\n\n if (!focusedElement) return;\n\n const ariaExpanded = focusedElement.getAttribute('aria-expanded');\n\n if (ariaExpanded !== null) {\n if (ariaExpanded === 'false') {\n // Open the submenu by simulating mousedown\n const mouseDownEvent = new MouseEvent('mousedown', {\n bubbles: true,\n cancelable: true,\n view: window\n });\n\n focusedElement.dispatchEvent(mouseDownEvent);\n }\n\n setTimeout(() => {\n const focusableItems = getFocusableItems();\n\n const submenuItems = focusableItems.filter((item) => {\n return item.id.startsWith(currentFocusedId + '_') && item.id.split('_').length === currentFocusedId.split('_').length + 1;\n });\n\n // Focus the first item in the submenu\n if (submenuItems.length > 0) {\n setFocusedOptionId((prev) => {\n const prevArray = Array.isArray(prev) ? prev : [];\n\n return [...prevArray, submenuItems[0].id];\n });\n }\n }, 10);\n }\n };\n\n const onArrowLeft = (event: React.KeyboardEvent) => {\n if (!props.composite) return;\n\n event.preventDefault();\n\n const currentFocusedId = getCurrentFocusedId();\n\n if (!currentFocusedId || !Array.isArray(focusedOptionId)) return;\n\n if (focusedOptionId.length > 1) {\n const parentTriggerId = focusedOptionId[focusedOptionId.length - 2];\n const parentTrigger = itemRefsById.current.get(parentTriggerId);\n\n if (parentTrigger && parentTrigger.getAttribute('aria-expanded') === 'true') {\n // Close the submenu by simulating mousedown\n const mouseDownEvent = new MouseEvent('mousedown', {\n bubbles: true,\n cancelable: true,\n view: window\n });\n\n parentTrigger.dispatchEvent(mouseDownEvent);\n }\n }\n };\n\n const onHome = (event: React.KeyboardEvent) => {\n event.preventDefault();\n\n const focusableItems = props.composite ? getFocusableItemsAtCurrentLevel() : getFocusableItems();\n\n if (focusableItems.length === 0) return;\n\n if (props.composite) {\n changeFocusedOptionId(focusableItems[0].id);\n } else {\n setFocusedOptionId(focusableItems[0].id);\n }\n };\n\n const onEnd = (event: React.KeyboardEvent) => {\n event.preventDefault();\n\n const focusableItems = props.composite ? getFocusableItemsAtCurrentLevel() : getFocusableItems();\n\n if (focusableItems.length === 0) return;\n\n if (props.composite) {\n changeFocusedOptionId(focusableItems[focusableItems.length - 1].id);\n } else {\n setFocusedOptionId(focusableItems[focusableItems.length - 1].id);\n }\n };\n\n const onEnterKey = (event: React.KeyboardEvent) => {\n if (props.composite) {\n onEscapeKey();\n }\n\n if (listRef?.current) {\n const currentFocusedId = getCurrentFocusedId();\n const element = findSingle(listRef?.current, `[id=\"${currentFocusedId}\"]`) as HTMLElement;\n\n if (element) {\n const mouseDownEvent = new MouseEvent('mousedown', {\n bubbles: true,\n cancelable: true,\n view: window\n });\n\n element.dispatchEvent(mouseDownEvent);\n }\n }\n\n event.preventDefault();\n };\n\n const onEscapeKey = () => {\n hideAllSubmenus();\n\n setTimeout(() => {\n if (triggerRef.current) {\n focus(triggerRef.current.elementRef.current!);\n }\n }, 10);\n };\n\n const onListKeyDown = (event: React.KeyboardEvent) => {\n const metaKey = event.metaKey || event.ctrlKey;\n\n switch (event.key) {\n case 'ArrowDown':\n onArrowDown(event);\n\n break;\n\n case 'ArrowUp':\n onArrowUp(event);\n\n break;\n\n case 'ArrowRight':\n if (props.composite) {\n onArrowRight(event);\n }\n\n break;\n\n case 'ArrowLeft':\n if (props.composite) {\n onArrowLeft(event);\n }\n\n break;\n\n case 'Home':\n onHome(event);\n\n break;\n\n case 'End':\n onEnd(event);\n\n break;\n\n case 'Enter':\n case ' ':\n onEnterKey(event);\n\n break;\n\n case 'PageDown':\n case 'PageUp':\n case 'Backspace':\n case 'ShiftLeft':\n case 'ShiftRight':\n break;\n\n case 'Escape':\n onEscapeKey();\n\n break;\n\n default:\n if (!metaKey && isPrintableCharacter(event.key)) {\n searchItems(event.key);\n }\n\n break;\n }\n };\n\n const onListFocus = () => {\n setFocusedState(true);\n\n const currentFocusedId = getCurrentFocusedId();\n\n if (currentFocusedId === '' && !isMouseInteractionRef.current) {\n const focusableItems = props.composite ? getFocusableItemsAtCurrentLevel() : getFocusableItems();\n\n if (focusableItems.length > 0) {\n if (props.composite) {\n changeFocusedOptionId(focusableItems[0].id);\n } else {\n setFocusedOptionId(focusableItems[0].id);\n }\n }\n }\n\n isMouseInteractionRef.current = false;\n };\n\n const onListBlur = () => {\n setFocusedState(false);\n\n if (props.composite) {\n hideAllSubmenus();\n } else {\n // For non-composite mode, reset focus on blur\n setFocusedOptionId('');\n }\n };\n\n const hideAllSubmenus = () => {\n if (props.composite) {\n itemRefsById.current.forEach((element) => {\n const ariaExpanded = element.getAttribute('aria-expanded');\n\n if (ariaExpanded === 'true') {\n const mouseDownEvent = new MouseEvent('mousedown', {\n bubbles: true,\n cancelable: true,\n view: window\n });\n\n element.dispatchEvent(mouseDownEvent);\n }\n });\n\n setFocusedOptionId([]);\n } else {\n setFocusedOptionId('');\n }\n };\n\n const hideSubmenusAfterLevel = (targetItemId: string) => {\n if (!props.composite || !Array.isArray(focusedOptionId)) return;\n\n const targetLevel = targetItemId.split('_').length - 1;\n\n itemRefsById.current.forEach((element, elementId) => {\n const elementLevel = elementId.split('_').length - 1;\n const ariaExpanded = element.getAttribute('aria-expanded');\n\n if (ariaExpanded === 'true' && elementLevel >= targetLevel) {\n const mouseDownEvent = new MouseEvent('mousedown', {\n bubbles: true,\n cancelable: true,\n view: window\n });\n\n element.dispatchEvent(mouseDownEvent);\n }\n });\n\n setFocusedOptionId((prev) => {\n const prevArray = Array.isArray(prev) ? prev : [];\n\n return prevArray.filter((id) => {\n const idLevel = id.split('_').length - 1;\n\n return idLevel < targetLevel;\n });\n });\n };\n\n const hide = () => {\n setOpenState(false);\n updateOpenState(false);\n\n if (props.composite) {\n setFocusedOptionId([]);\n } else {\n setFocusedOptionId('');\n }\n\n setTimeout(() => {\n if (triggerRef.current) {\n focus(triggerRef.current.elementRef.current!);\n }\n }, 10);\n };\n\n const onOverlayEnter = () => {\n if (listRef.current) {\n focus(listRef.current);\n }\n };\n\n const onTriggerClick = (event?: React.MouseEvent) => {\n if (event && event.type === 'contextmenu') {\n event.preventDefault();\n event.stopPropagation();\n\n const newTarget = { pageX: event.pageX, pageY: event.pageY };\n\n if (openState) {\n updateOpenState(false);\n setOpenState(false);\n\n setTimeout(() => {\n setContextMenuTarget(newTarget);\n updateOpenState(true);\n setOpenState(true);\n }, 0);\n } else {\n setContextMenuTarget(newTarget);\n\n setOpenState(true);\n updateOpenState(true);\n }\n } else {\n setContextMenuTarget(null);\n\n setOpenState(true);\n updateOpenState(true);\n }\n };\n\n const onItemClick = (event: React.MouseEvent) => {\n event.preventDefault();\n hide();\n };\n\n return {\n state,\n //refs\n portalRef,\n triggerRef,\n listRef,\n //methods\n registerItem,\n unregisterItem,\n changeVisibleState,\n changeFocusedOptionId,\n hideSubmenusAfterLevel,\n onListKeyDown,\n onListFocus,\n onListBlur,\n onOverlayEnter,\n onTriggerClick,\n onItemClick\n };\n }\n});\n","import type { useMenuProps } from '@primereact/types/shared/menu';\n\nexport const defaultProps: useMenuProps = {\n open: undefined,\n defaultOpen: undefined,\n composite: false,\n appendTo: 'body',\n baseZIndex: 0,\n autoZIndex: true,\n tabIndex: 0,\n onOpenChange: undefined\n};\n"],"mappings":"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","names":["withHeadless","findSingle","focus","isPrintableCharacter","React","defaultProps","useMenu","withHeadless","defaultProps","props","_a","openState","setOpenState","focusedState","setFocusedState","focusedOptionId","setFocusedOptionId","contextMenuTarget","setContextMenuTarget","isMouseInteractionRef","portalRef","triggerRef","listRef","itemRefsById","state","registerItem","id","ref","unregisterItem","updateOpenState","value","changeVisibleState","isVisible","getFocusableItems","items","element","currentElement","parentList","trigger","getFocusableItemsAtCurrentLevel","allFocusableItems","minDepth","item","currentIdParts","currentDepth","itemParts","currentParentPath","itemParentPath","changeFocusedOptionId","prev","prevArray","len","findIndex","val","getCurrentFocusedId","searchItems","char","_b","focusableItems","currentFocusedId","startIndex","searchChar","onArrowDown","event","currentIndex","nextIndex","onArrowUp","hide","prevIndex","onArrowRight","focusedElement","ariaExpanded","mouseDownEvent","submenuItems","onArrowLeft","parentTriggerId","parentTrigger","onHome","onEnd","onEnterKey","onEscapeKey","findSingle","hideAllSubmenus","focus","onListKeyDown","metaKey","isPrintableCharacter","onListFocus","onListBlur","hideSubmenusAfterLevel","targetItemId","targetLevel","elementId","elementLevel","newTarget"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{withHeadless as m}from"@primereact/core/headless";import*as t from"react";var f={open:void 0,defaultOpen:void 0,onOpenChange:void 0};var O=m({name:"useMenuSub",defaultProps:f,setup({props:e}){var s;let[u,o]=t.useState(e.open!==void 0?e.open:(s=e.defaultOpen)!=null?s:!1),c=t.useRef(null),i=t.useRef(null),d=t.useRef(null),r={opened:u},a=n=>{e.onOpenChange&&e.onOpenChange({value:n})};t.useEffect(()=>{e.open!==void 0&&o(e.open)},[e.open]);let l=()=>{if(!e.disabled){let n=!u;o(n),a(n)}};return{state:r,portalRef:c,triggerRef:i,listRef:d,toggle:l,open:()=>{e.disabled||(o(!0),a(!0))},close:()=>{e.disabled||(o(!1),a(!1))},onTriggerClick:()=>{e.disabled||l()}}}});export{f as defaultProps,O as useMenuSub};
|
|
2
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/menu/sub/useMenuSub.ts","../../../src/menu/sub/useMenuSub.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport * as React from 'react';\nimport { defaultProps } from './useMenuSub.props';\n\nexport const useMenuSub = withHeadless({\n name: 'useMenuSub',\n defaultProps,\n setup({ props }) {\n const [openState, setOpenState] = React.useState<boolean>(props.open !== undefined ? props.open : (props.defaultOpen ?? false));\n\n const portalRef = React.useRef<{ containerRef: { current: { elementRef: React.RefObject<HTMLDivElement> } } } | null>(null);\n const triggerRef = React.useRef<HTMLDivElement | null>(null);\n const listRef = React.useRef<HTMLUListElement | null>(null);\n\n const state = {\n opened: openState\n };\n\n const updateOpenState = (value: boolean) => {\n if (props.onOpenChange) {\n props.onOpenChange({ value });\n }\n };\n\n React.useEffect(() => {\n if (props.open !== undefined) {\n setOpenState(props.open);\n }\n }, [props.open]);\n\n const toggle = () => {\n if (!props.disabled) {\n const newState = !openState;\n\n setOpenState(newState);\n updateOpenState(newState);\n }\n };\n\n const open = () => {\n if (!props.disabled) {\n const newState = true;\n\n setOpenState(newState);\n updateOpenState(newState);\n }\n };\n\n const close = () => {\n if (!props.disabled) {\n const newState = false;\n\n setOpenState(newState);\n updateOpenState(newState);\n }\n };\n\n const onTriggerClick = () => {\n if (!props.disabled) {\n toggle();\n }\n };\n\n return {\n state,\n // refs\n portalRef,\n triggerRef,\n listRef,\n // methods\n toggle,\n open,\n close,\n onTriggerClick\n };\n }\n});\n","import type { useMenuSubProps } from '@primereact/types/shared/menu';\n\nexport const defaultProps: useMenuSubProps = {\n open: undefined,\n defaultOpen: undefined,\n onOpenChange: undefined\n};\n"],"mappings":"AAAA,OAAS,gBAAAA,MAAoB,4BAC7B,UAAYC,MAAW,QCChB,IAAMC,EAAgC,CACzC,KAAM,OACN,YAAa,OACb,aAAc,MAClB,EDFO,IAAMC,EAAaC,EAAa,CACnC,KAAM,aACN,aAAAC,EACA,MAAM,CAAE,MAAAC,CAAM,EAAG,CAPrB,IAAAC,EAQQ,GAAM,CAACC,EAAWC,CAAY,EAAU,WAAkBH,EAAM,OAAS,OAAYA,EAAM,MAAQC,EAAAD,EAAM,cAAN,KAAAC,EAAqB,EAAM,EAExHG,EAAkB,SAA8F,IAAI,EACpHC,EAAmB,SAA8B,IAAI,EACrDC,EAAgB,SAAgC,IAAI,EAEpDC,EAAQ,CACV,OAAQL,CACZ,EAEMM,EAAmBC,GAAmB,CACpCT,EAAM,cACNA,EAAM,aAAa,CAAE,MAAAS,CAAM,CAAC,CAEpC,EAEM,YAAU,IAAM,CACdT,EAAM,OAAS,QACfG,EAAaH,EAAM,IAAI,CAE/B,EAAG,CAACA,EAAM,IAAI,CAAC,EAEf,IAAMU,EAAS,IAAM,CACjB,GAAI,CAACV,EAAM,SAAU,CACjB,IAAMW,EAAW,CAACT,EAElBC,EAAaQ,CAAQ,EACrBH,EAAgBG,CAAQ,CAC5B,CACJ,EA0BA,MAAO,CACH,MAAAJ,EAEA,UAAAH,EACA,WAAAC,EACA,QAAAC,EAEA,OAAAI,EACA,KAhCS,IAAM,CACVV,EAAM,WAGPG,EAAa,EAAQ,EACrBK,EAAgB,EAAQ,EAEhC,EA0BI,MAxBU,IAAM,CACXR,EAAM,WAGPG,EAAa,EAAQ,EACrBK,EAAgB,EAAQ,EAEhC,EAkBI,eAhBmB,IAAM,CACpBR,EAAM,UACPU,EAAO,CAEf,CAaA,CACJ,CACJ,CAAC","names":["withHeadless","React","defaultProps","useMenuSub","withHeadless","defaultProps","props","_a","openState","setOpenState","portalRef","triggerRef","listRef","state","updateOpenState","value","toggle","newState"]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
export declare const useMenuSub: (inProps?: unknown) => import("@primereact/types/core").HeadlessInstance<import("@primereact/types/shared/menu").useMenuSubProps, unknown, {
|
|
3
|
+
state: {
|
|
4
|
+
opened: boolean;
|
|
5
|
+
};
|
|
6
|
+
portalRef: React.RefObject<{
|
|
7
|
+
containerRef: {
|
|
8
|
+
current: {
|
|
9
|
+
elementRef: React.RefObject<HTMLDivElement>;
|
|
10
|
+
};
|
|
11
|
+
};
|
|
12
|
+
} | null>;
|
|
13
|
+
triggerRef: React.RefObject<HTMLDivElement | null>;
|
|
14
|
+
listRef: React.RefObject<HTMLUListElement | null>;
|
|
15
|
+
toggle: () => void;
|
|
16
|
+
open: () => void;
|
|
17
|
+
close: () => void;
|
|
18
|
+
onTriggerClick: () => void;
|
|
19
|
+
}>;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
export declare const useMenu: (inProps?: unknown) => import("@primereact/types/core").HeadlessInstance<import("@primereact/types/shared/menu").useMenuProps, unknown, {
|
|
3
|
+
state: {
|
|
4
|
+
opened: boolean;
|
|
5
|
+
focused: boolean;
|
|
6
|
+
focusedOptionId: string | string[];
|
|
7
|
+
contextMenuTarget: {
|
|
8
|
+
pageX: number;
|
|
9
|
+
pageY: number;
|
|
10
|
+
} | null;
|
|
11
|
+
};
|
|
12
|
+
portalRef: React.RefObject<{
|
|
13
|
+
containerRef: {
|
|
14
|
+
current: {
|
|
15
|
+
elementRef: React.RefObject<HTMLDivElement>;
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
} | null>;
|
|
19
|
+
triggerRef: React.RefObject<{
|
|
20
|
+
elementRef: React.RefObject<HTMLButtonElement>;
|
|
21
|
+
} | null>;
|
|
22
|
+
listRef: React.RefObject<HTMLUListElement | null>;
|
|
23
|
+
registerItem: (id: string, ref: HTMLElement) => void;
|
|
24
|
+
unregisterItem: (id: string) => void;
|
|
25
|
+
changeVisibleState: (isVisible: boolean) => void;
|
|
26
|
+
changeFocusedOptionId: (id: string) => void;
|
|
27
|
+
hideSubmenusAfterLevel: (targetItemId: string) => void;
|
|
28
|
+
onListKeyDown: (event: React.KeyboardEvent) => void;
|
|
29
|
+
onListFocus: () => void;
|
|
30
|
+
onListBlur: () => void;
|
|
31
|
+
onOverlayEnter: () => void;
|
|
32
|
+
onTriggerClick: (event?: React.MouseEvent) => void;
|
|
33
|
+
onItemClick: (event: React.MouseEvent) => void;
|
|
34
|
+
}>;
|
|
File without changes
|
package/overlay/index.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{withHeadless as
|
|
1
|
+
import{withHeadless as q}from"@primereact/core/headless";import{ConnectedOverlayScrollHandler as F}from"@primereact/core/utils";import{useEventListener as d,useUnmountEffect as G}from"@primereact/hooks";import{$dt as J}from"@primeuix/styled";import{absolutePosition as Q,addClass as _,addStyle as ee,getHiddenElementOuterHeight as te,getHiddenElementOuterWidth as ne,getOffset as H,getViewport as re,isTouchDevice as oe,relativePosition as le}from"@primeuix/utils/dom";import{ZIndex as E}from"@primeuix/utils/zindex";import{EventBus as U}from"@primeuix/utils/eventbus";var g=U();import*as a from"react";var T={target:void 0,defaultOpen:void 0,open:void 0,appendTo:"body",type:"overlay",baseZIndex:0,autoZIndex:!0,closeOnEscape:!0,onOpenChange:void 0};var Oe=q({name:"useOverlay",defaultProps:T,setup:({props:t,$primereact:M})=>{let[s,b]=a.useState(!1),n=a.useRef(null),c=a.useRef(null),m=a.useRef(!1),k={visible:s},u=a.useCallback(()=>{var e,i;return n!=null&&n.current&&(n==null?void 0:n.current)instanceof HTMLElement?n==null?void 0:n.current:(i=(e=n==null?void 0:n.current)==null?void 0:e.elementRef.current)!=null?i:null},[n]),S=()=>{var e;s||(b(!0),(e=t.onOpenChange)==null||e.call(t,{value:!0}))},f=()=>{var e;s&&(b(!1),(e=t.onOpenChange)==null||e.call(t,{value:!1}))},P=()=>{var i,r,o,l;let e=u();e&&(ee(e,{position:"absolute",top:"0"}),t.autoZIndex&&t.type&&E.set(t.type,e,((i=t.baseZIndex)!=null?i:0)+((l=(o=(r=M.config)==null?void 0:r.zIndex)==null?void 0:o[t.type])!=null?l:1e3)),z())},I=()=>{D(),V(),X(),t.type==="menu"&&K()},Z=()=>{O(),x(),h(),t.type==="menu"&&L()},N=()=>{let e=u();t.autoZIndex&&e&&E.clear(e)},z=()=>{let e=u();if(!e)return;if(t.target&&typeof t.target=="object"&&"pageX"in t.target&&"pageY"in t.target){let r=t.target,o=r.pageX+1,l=r.pageY+1,R=e.offsetParent?e.offsetWidth:ne(e),C=e.offsetParent?e.offsetHeight:te(e),p=re(),y=window.scrollY||document.documentElement.scrollTop||document.body.scrollTop||0,v=window.scrollX||document.documentElement.scrollLeft||document.body.scrollLeft||0;o+R-v>p.width&&(o-=R),l+C-y>p.height&&(l-=C),o<v&&(o=v),l<y&&(l=y),e.style.left=o+"px",e.style.top=l+"px"}else if(t.target){t.appendTo==="self"?le(e,t.target):Q(e,t.target);let r=H(e),o=H(t.target),l=0;Number(r.left)<Number(o.left)&&(l=Number(o.left)-Number(r.left)),e.style.setProperty(J("overlay.arrow.left").name,`${l}px`),r.top<o.top&&(_(e,"p-overlay-flipped"),e.setAttribute("data-p-overlay-flipped","true"))}},[D,O]=d({type:"click",listener:e=>w(e)}),[K,L]=d({type:"contextmenu",listener:e=>w(e)}),[V,x]=d({type:"scroll",listener:()=>A()}),[X,h]=d({target:"window",type:"resize",listener:()=>B()}),w=e=>{if(m.current){m.current=!1;return}s&&Y(e)&&f()},Y=e=>{let i=u();if(!i)return;let r=e.target;return!(i.isSameNode(r)||i.contains(r))},A=()=>{c.current||(c.current=new F(u(),()=>{s&&f()})),c.current.bindScrollListener()},B=()=>{s&&!oe()&&f()},j=e=>{g.emit("overlay-click",{originalEvent:e,target:t.target}),m.current=!0},W=e=>{e.code==="Escape"&&$(e)},$=e=>{s&&f(),e.preventDefault()};return a.useEffect(()=>{t.open?S():t.open||f()},[t.open]),G(()=>{O(),x(),h(),t.type==="menu"&&L(),c.current&&(c.current.destroy(),c.current=null);let e=u();t.autoZIndex&&e&&E.clear(e)}),{state:k,containerRef:n,hide:f,onOverlayEnter:P,onOverlayAfterEnter:I,onLeave:Z,onAfterLeave:N,onOverlayClick:j,onOverlayKeyDown:W}}});export{T as defaultProps,Oe as useOverlay};
|
|
2
2
|
//# sourceMappingURL=index.mjs.map
|
package/overlay/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/overlay/useOverlay.ts","../../../primereact/src/overlayeventbus/OverlayEventBus.ts","../../src/overlay/useOverlay.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { ConnectedOverlayScrollHandler } from '@primereact/core/utils';\nimport { useEventListener, useUnmountEffect } from '@primereact/hooks';\nimport { $dt } from '@primeuix/styled';\nimport { absolutePosition, addClass, addStyle, getOffset, isTouchDevice, relativePosition } from '@primeuix/utils/dom';\nimport { ZIndex } from '@primeuix/utils/zindex';\nimport { OverlayEventBus } from 'primereact/overlayeventbus';\nimport * as React from 'react';\nimport { defaultProps } from './useOverlay.props';\n\nexport const useOverlay = withHeadless({\n name: 'useOverlay',\n defaultProps,\n setup: ({ props, $primereact }) => {\n const [visibleState, setVisibleState] = React.useState(false);\n const containerRef = React.useRef<{ elementRef: React.RefObject<HTMLDivElement> } | null>(null);\n const scrollHandler = React.useRef<ConnectedOverlayScrollHandler | null>(null);\n const selfClick = React.useRef(false);\n\n const state = {\n visible: visibleState\n };\n\n const getContainer = React.useCallback(() => {\n if (containerRef?.current && containerRef?.current instanceof HTMLElement) {\n return containerRef?.current;\n }\n\n return containerRef?.current?.elementRef.current ?? null;\n }, [containerRef]);\n\n const show = () => {\n if (visibleState) return;\n\n setVisibleState(true);\n props.onOpenChange?.({\n value: true\n });\n };\n\n const hide = () => {\n if (!visibleState) return;\n\n setVisibleState(false);\n props.onOpenChange?.({\n value: false\n });\n };\n\n const onOverlayEnter = () => {\n const containerElement = getContainer();\n\n if (!containerElement) return;\n\n addStyle(containerElement, { position: 'absolute', top: '0' });\n\n if (props.autoZIndex && props.type) {\n ZIndex.set(props.type, containerElement, (props.baseZIndex ?? 0) + ($primereact.config?.zIndex?.[props.type] ?? 1000));\n }\n\n alignOverlay();\n };\n\n const onOverlayAfterEnter = () => {\n bindOutsideClickListener();\n bindScrollListener();\n bindResizeListener();\n };\n\n const onLeave = () => {\n unbindOutsideClickListener();\n unbindScrollListener();\n unbindResizeListener();\n };\n\n const onAfterLeave = () => {\n const containerElement = getContainer();\n\n if (props.autoZIndex && containerElement) {\n ZIndex.clear(containerElement);\n }\n };\n\n const alignOverlay = () => {\n const containerElement = getContainer();\n\n if (!containerElement) return;\n\n if (props.appendTo === 'self') {\n relativePosition(containerElement, props.target as HTMLElement);\n } else {\n absolutePosition(containerElement, props.target as HTMLElement);\n }\n\n const containerOffset = getOffset(containerElement);\n const targetOffset = getOffset(props.target);\n let arrowLeft = 0;\n\n if (Number(containerOffset.left) < Number(targetOffset.left)) {\n arrowLeft = Number(targetOffset.left) - Number(containerOffset.left);\n }\n\n containerElement.style.setProperty($dt('overlay.arrow.left').name, `${arrowLeft}px`);\n\n if (containerOffset.top < targetOffset.top) {\n addClass(containerElement, 'p-overlay-flipped');\n containerElement.setAttribute('data-p-overlay-flipped', 'true');\n }\n };\n\n const [bindOutsideClickListener, unbindOutsideClickListener] = useEventListener({\n type: 'click',\n listener: (event) => onOutsideClick(event as unknown as React.MouseEvent)\n });\n\n const [bindScrollListener, unbindScrollListener] = useEventListener({\n type: 'scroll',\n listener: () => onScroll()\n });\n\n const [bindResizeListener, unbindResizeListener] = useEventListener({\n target: 'window',\n type: 'resize',\n listener: () => onResize()\n });\n\n const onOutsideClick = (event: React.MouseEvent) => {\n if (selfClick.current) {\n selfClick.current = false;\n\n return;\n }\n\n if (visibleState && isOutsideClicked(event)) {\n hide();\n }\n };\n\n const isOutsideClicked = (event: React.MouseEvent) => {\n const containerElement = getContainer();\n\n if (!containerElement) return;\n\n const target = event.target as Node;\n\n return !(containerElement.isSameNode(target) || containerElement.contains(target));\n };\n\n const onScroll = () => {\n if (!scrollHandler.current) {\n scrollHandler.current = new ConnectedOverlayScrollHandler(getContainer(), () => {\n if (visibleState) {\n hide();\n }\n });\n }\n\n scrollHandler.current.bindScrollListener();\n };\n\n const onResize = () => {\n if (visibleState && !isTouchDevice()) {\n hide();\n }\n };\n\n const onOverlayClick = (event: React.MouseEvent) => {\n OverlayEventBus.emit('overlay-click', {\n originalEvent: event,\n target: props.target\n });\n\n selfClick.current = true;\n };\n\n const onOverlayKeyDown = (event: React.KeyboardEvent) => {\n if (event.code === 'Escape') {\n onEscapeKey(event);\n }\n };\n\n const onEscapeKey = (event: React.KeyboardEvent) => {\n if (visibleState) {\n hide();\n }\n\n event.preventDefault();\n };\n\n React.useEffect(() => {\n if (props.open) {\n show();\n } else if (!props.open) {\n hide();\n }\n }, [props.open]);\n\n useUnmountEffect(() => {\n unbindOutsideClickListener();\n unbindScrollListener();\n unbindResizeListener();\n\n if (scrollHandler.current) {\n scrollHandler.current.destroy();\n scrollHandler.current = null;\n }\n\n const containerElement = getContainer();\n\n if (props.autoZIndex && containerElement) {\n ZIndex.clear(containerElement);\n }\n });\n\n return {\n state,\n containerRef,\n // methods\n hide,\n onOverlayEnter,\n onOverlayAfterEnter,\n onLeave,\n onAfterLeave,\n onOverlayClick,\n onOverlayKeyDown\n };\n }\n});\n","import { EventBus } from '@primeuix/utils/eventbus';\n\nexport default EventBus();\n","import type { useOverlayProps } from '@primereact/types/shared/overlay';\n\nexport const defaultProps: useOverlayProps = {\n target: undefined,\n defaultOpen: undefined,\n open: undefined,\n appendTo: 'body',\n type: 'overlay',\n baseZIndex: 0,\n autoZIndex: true,\n closeOnEscape: true,\n onOpenChange: undefined\n};\n"],"mappings":"AAAA,OAAS,gBAAAA,MAAoB,4BAC7B,OAAS,iCAAAC,MAAqC,yBAC9C,OAAS,oBAAAC,EAAkB,oBAAAC,MAAwB,oBACnD,OAAS,OAAAC,MAAW,mBACpB,OAAS,oBAAAC,EAAkB,YAAAC,EAAU,YAAAC,EAAU,aAAAC,EAAW,iBAAAC,EAAe,oBAAAC,MAAwB,sBACjG,OAAS,UAAAC,MAAc,yBCLvB,OAAS,YAAAC,MAAgB,2BAEzB,IAAOC,EAAQD,EAAS,EDKxB,UAAYE,MAAW,QELhB,IAAMC,EAAgC,CACzC,OAAQ,OACR,YAAa,OACb,KAAM,OACN,SAAU,OACV,KAAM,UACN,WAAY,EACZ,WAAY,GACZ,cAAe,GACf,aAAc,MAClB,EFFO,IAAMC,GAAaC,EAAa,CACnC,KAAM,aACN,aAAAC,EACA,MAAO,CAAC,CAAE,MAAAC,EAAO,YAAAC,CAAY,IAAM,CAC/B,GAAM,CAACC,EAAcC,CAAe,EAAU,WAAS,EAAK,EACtDC,EAAqB,SAA+D,IAAI,EACxFC,EAAsB,SAA6C,IAAI,EACvEC,EAAkB,SAAO,EAAK,EAE9BC,EAAQ,CACV,QAASL,CACb,EAEMM,EAAqB,cAAY,IAAM,CAvBrD,IAAAC,EAAAC,EAwBY,OAAIN,GAAA,MAAAA,EAAc,UAAWA,GAAA,YAAAA,EAAc,mBAAmB,YACnDA,GAAA,YAAAA,EAAc,SAGlBM,GAAAD,EAAAL,GAAA,YAAAA,EAAc,UAAd,YAAAK,EAAuB,WAAW,UAAlC,KAAAC,EAA6C,IACxD,EAAG,CAACN,CAAY,CAAC,EAEXO,EAAO,IAAM,CA/B3B,IAAAF,EAgCgBP,IAEJC,EAAgB,EAAI,GACpBM,EAAAT,EAAM,eAAN,MAAAS,EAAA,KAAAT,EAAqB,CACjB,MAAO,EACX,GACJ,EAEMY,EAAO,IAAM,CAxC3B,IAAAH,EAyCiBP,IAELC,EAAgB,EAAK,GACrBM,EAAAT,EAAM,eAAN,MAAAS,EAAA,KAAAT,EAAqB,CACjB,MAAO,EACX,GACJ,EAEMa,EAAiB,IAAM,CAjDrC,IAAAJ,EAAAC,EAAAI,EAAAC,EAkDY,IAAMC,EAAmBR,EAAa,EAEjCQ,IAELC,EAASD,EAAkB,CAAE,SAAU,WAAY,IAAK,GAAI,CAAC,EAEzDhB,EAAM,YAAcA,EAAM,MAC1BkB,EAAO,IAAIlB,EAAM,KAAMgB,IAAmBP,EAAAT,EAAM,aAAN,KAAAS,EAAoB,KAAMM,GAAAD,GAAAJ,EAAAT,EAAY,SAAZ,YAAAS,EAAoB,SAApB,YAAAI,EAA6Bd,EAAM,QAAnC,KAAAe,EAA4C,IAAK,EAGzHI,EAAa,EACjB,EAEMC,EAAsB,IAAM,CAC9BC,EAAyB,EACzBC,EAAmB,EACnBC,EAAmB,CACvB,EAEMC,EAAU,IAAM,CAClBC,EAA2B,EAC3BC,EAAqB,EACrBC,EAAqB,CACzB,EAEMC,EAAe,IAAM,CACvB,IAAMZ,EAAmBR,EAAa,EAElCR,EAAM,YAAcgB,GACpBE,EAAO,MAAMF,CAAgB,CAErC,EAEMG,EAAe,IAAM,CACvB,IAAMH,EAAmBR,EAAa,EAEtC,GAAI,CAACQ,EAAkB,OAEnBhB,EAAM,WAAa,OACnB6B,EAAiBb,EAAkBhB,EAAM,MAAqB,EAE9D8B,EAAiBd,EAAkBhB,EAAM,MAAqB,EAGlE,IAAM+B,EAAkBC,EAAUhB,CAAgB,EAC5CiB,EAAeD,EAAUhC,EAAM,MAAM,EACvCkC,EAAY,EAEZ,OAAOH,EAAgB,IAAI,EAAI,OAAOE,EAAa,IAAI,IACvDC,EAAY,OAAOD,EAAa,IAAI,EAAI,OAAOF,EAAgB,IAAI,GAGvEf,EAAiB,MAAM,YAAYmB,EAAI,oBAAoB,EAAE,KAAM,GAAGD,CAAS,IAAI,EAE/EH,EAAgB,IAAME,EAAa,MACnCG,EAASpB,EAAkB,mBAAmB,EAC9CA,EAAiB,aAAa,yBAA0B,MAAM,EAEtE,EAEM,CAACK,EAA0BI,CAA0B,EAAIY,EAAiB,CAC5E,KAAM,QACN,SAAWC,GAAUC,EAAeD,CAAoC,CAC5E,CAAC,EAEK,CAAChB,EAAoBI,CAAoB,EAAIW,EAAiB,CAChE,KAAM,SACN,SAAU,IAAMG,EAAS,CAC7B,CAAC,EAEK,CAACjB,EAAoBI,CAAoB,EAAIU,EAAiB,CAChE,OAAQ,SACR,KAAM,SACN,SAAU,IAAMI,EAAS,CAC7B,CAAC,EAEKF,EAAkBD,GAA4B,CAChD,GAAIhC,EAAU,QAAS,CACnBA,EAAU,QAAU,GAEpB,MACJ,CAEIJ,GAAgBwC,EAAiBJ,CAAK,GACtC1B,EAAK,CAEb,EAEM8B,EAAoBJ,GAA4B,CAClD,IAAMtB,EAAmBR,EAAa,EAEtC,GAAI,CAACQ,EAAkB,OAEvB,IAAM2B,EAASL,EAAM,OAErB,MAAO,EAAEtB,EAAiB,WAAW2B,CAAM,GAAK3B,EAAiB,SAAS2B,CAAM,EACpF,EAEMH,EAAW,IAAM,CACdnC,EAAc,UACfA,EAAc,QAAU,IAAIuC,EAA8BpC,EAAa,EAAG,IAAM,CACxEN,GACAU,EAAK,CAEb,CAAC,GAGLP,EAAc,QAAQ,mBAAmB,CAC7C,EAEMoC,EAAW,IAAM,CACfvC,GAAgB,CAAC2C,EAAc,GAC/BjC,EAAK,CAEb,EAEMkC,EAAkBR,GAA4B,CAChDS,EAAgB,KAAK,gBAAiB,CAClC,cAAeT,EACf,OAAQtC,EAAM,MAClB,CAAC,EAEDM,EAAU,QAAU,EACxB,EAEM0C,EAAoBV,GAA+B,CACjDA,EAAM,OAAS,UACfW,EAAYX,CAAK,CAEzB,EAEMW,EAAeX,GAA+B,CAC5CpC,GACAU,EAAK,EAGT0B,EAAM,eAAe,CACzB,EAEA,OAAM,YAAU,IAAM,CACdtC,EAAM,KACNW,EAAK,EACGX,EAAM,MACdY,EAAK,CAEb,EAAG,CAACZ,EAAM,IAAI,CAAC,EAEfkD,EAAiB,IAAM,CACnBzB,EAA2B,EAC3BC,EAAqB,EACrBC,EAAqB,EAEjBtB,EAAc,UACdA,EAAc,QAAQ,QAAQ,EAC9BA,EAAc,QAAU,MAG5B,IAAMW,EAAmBR,EAAa,EAElCR,EAAM,YAAcgB,GACpBE,EAAO,MAAMF,CAAgB,CAErC,CAAC,EAEM,CACH,MAAAT,EACA,aAAAH,EAEA,KAAAQ,EACA,eAAAC,EACA,oBAAAO,EACA,QAAAI,EACA,aAAAI,EACA,eAAAkB,EACA,iBAAAE,CACJ,CACJ,CACJ,CAAC","names":["withHeadless","ConnectedOverlayScrollHandler","useEventListener","useUnmountEffect","$dt","absolutePosition","addClass","addStyle","getOffset","isTouchDevice","relativePosition","ZIndex","EventBus","OverlayEventBus_default","React","defaultProps","useOverlay","withHeadless","defaultProps","props","$primereact","visibleState","setVisibleState","containerRef","scrollHandler","selfClick","state","getContainer","_a","_b","show","hide","onOverlayEnter","_c","_d","containerElement","addStyle","ZIndex","alignOverlay","onOverlayAfterEnter","bindOutsideClickListener","bindScrollListener","bindResizeListener","onLeave","unbindOutsideClickListener","unbindScrollListener","unbindResizeListener","onAfterLeave","relativePosition","absolutePosition","containerOffset","getOffset","targetOffset","arrowLeft","$dt","addClass","useEventListener","event","onOutsideClick","onScroll","onResize","isOutsideClicked","target","ConnectedOverlayScrollHandler","isTouchDevice","onOverlayClick","OverlayEventBus_default","onOverlayKeyDown","onEscapeKey","useUnmountEffect"]}
|
|
1
|
+
{"version":3,"sources":["../../src/overlay/useOverlay.ts","../../../primereact/src/overlayeventbus/OverlayEventBus.ts","../../src/overlay/useOverlay.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { ConnectedOverlayScrollHandler } from '@primereact/core/utils';\nimport { useEventListener, useUnmountEffect } from '@primereact/hooks';\nimport { $dt } from '@primeuix/styled';\nimport { absolutePosition, addClass, addStyle, getHiddenElementOuterHeight, getHiddenElementOuterWidth, getOffset, getViewport, isTouchDevice, relativePosition } from '@primeuix/utils/dom';\nimport { ZIndex } from '@primeuix/utils/zindex';\nimport { OverlayEventBus } from 'primereact/overlayeventbus';\nimport * as React from 'react';\nimport { defaultProps } from './useOverlay.props';\n\nexport const useOverlay = withHeadless({\n name: 'useOverlay',\n defaultProps,\n setup: ({ props, $primereact }) => {\n const [visibleState, setVisibleState] = React.useState(false);\n const containerRef = React.useRef<{ elementRef: React.RefObject<HTMLDivElement> } | null>(null);\n const scrollHandler = React.useRef<ConnectedOverlayScrollHandler | null>(null);\n const selfClick = React.useRef(false);\n\n const state = {\n visible: visibleState\n };\n\n const getContainer = React.useCallback(() => {\n if (containerRef?.current && containerRef?.current instanceof HTMLElement) {\n return containerRef?.current;\n }\n\n return containerRef?.current?.elementRef.current ?? null;\n }, [containerRef]);\n\n const show = () => {\n if (visibleState) return;\n\n setVisibleState(true);\n props.onOpenChange?.({\n value: true\n });\n };\n\n const hide = () => {\n if (!visibleState) return;\n\n setVisibleState(false);\n props.onOpenChange?.({\n value: false\n });\n };\n\n const onOverlayEnter = () => {\n const containerElement = getContainer();\n\n if (!containerElement) return;\n\n addStyle(containerElement, { position: 'absolute', top: '0' });\n\n if (props.autoZIndex && props.type) {\n ZIndex.set(props.type, containerElement, (props.baseZIndex ?? 0) + ($primereact.config?.zIndex?.[props.type] ?? 1000));\n }\n\n alignOverlay();\n };\n\n const onOverlayAfterEnter = () => {\n bindOutsideClickListener();\n bindScrollListener();\n bindResizeListener();\n\n if (props.type === 'menu') {\n bindOutsideContextMenuListener();\n }\n };\n\n const onLeave = () => {\n unbindOutsideClickListener();\n unbindScrollListener();\n unbindResizeListener();\n\n if (props.type === 'menu') {\n unbindOutsideContextMenuListener();\n }\n };\n\n const onAfterLeave = () => {\n const containerElement = getContainer();\n\n if (props.autoZIndex && containerElement) {\n ZIndex.clear(containerElement);\n }\n };\n\n const alignOverlay = () => {\n const containerElement = getContainer();\n\n if (!containerElement) return;\n\n const isVirtualTarget = props.target && typeof props.target === 'object' && 'pageX' in props.target && 'pageY' in props.target;\n\n if (isVirtualTarget) {\n const virtualTarget = props.target as { pageX: number; pageY: number };\n\n let left = virtualTarget.pageX + 1;\n let top = virtualTarget.pageY + 1;\n const width = containerElement.offsetParent ? containerElement.offsetWidth : getHiddenElementOuterWidth(containerElement);\n const height = containerElement.offsetParent ? containerElement.offsetHeight : getHiddenElementOuterHeight(containerElement);\n const viewport = getViewport();\n const scrollTop = window.scrollY || document.documentElement.scrollTop || document.body.scrollTop || 0;\n const scrollLeft = window.scrollX || document.documentElement.scrollLeft || document.body.scrollLeft || 0;\n\n //flip\n if (left + width - scrollLeft > viewport.width) {\n left -= width;\n }\n\n //flip\n if (top + height - scrollTop > viewport.height) {\n top -= height;\n }\n\n //fit\n if (left < scrollLeft) {\n left = scrollLeft;\n }\n\n //fit\n if (top < scrollTop) {\n top = scrollTop;\n }\n\n containerElement.style.left = left + 'px';\n containerElement.style.top = top + 'px';\n } else if (props.target) {\n if (props.appendTo === 'self') {\n relativePosition(containerElement, props.target as HTMLElement);\n } else {\n absolutePosition(containerElement, props.target as HTMLElement);\n }\n\n const containerOffset = getOffset(containerElement);\n const targetOffset = getOffset(props.target as HTMLElement);\n let arrowLeft = 0;\n\n if (Number(containerOffset.left) < Number(targetOffset.left)) {\n arrowLeft = Number(targetOffset.left) - Number(containerOffset.left);\n }\n\n containerElement.style.setProperty($dt('overlay.arrow.left').name, `${arrowLeft}px`);\n\n if (containerOffset.top < targetOffset.top) {\n addClass(containerElement, 'p-overlay-flipped');\n containerElement.setAttribute('data-p-overlay-flipped', 'true');\n }\n }\n };\n\n const [bindOutsideClickListener, unbindOutsideClickListener] = useEventListener({\n type: 'click',\n listener: (event) => onOutsideClick(event as unknown as React.MouseEvent)\n });\n\n const [bindOutsideContextMenuListener, unbindOutsideContextMenuListener] = useEventListener({\n type: 'contextmenu',\n listener: (event) => onOutsideClick(event as unknown as React.MouseEvent)\n });\n\n const [bindScrollListener, unbindScrollListener] = useEventListener({\n type: 'scroll',\n listener: () => onScroll()\n });\n\n const [bindResizeListener, unbindResizeListener] = useEventListener({\n target: 'window',\n type: 'resize',\n listener: () => onResize()\n });\n\n const onOutsideClick = (event: React.MouseEvent) => {\n if (selfClick.current) {\n selfClick.current = false;\n\n return;\n }\n\n if (visibleState && isOutsideClicked(event)) {\n hide();\n }\n };\n\n const isOutsideClicked = (event: React.MouseEvent) => {\n const containerElement = getContainer();\n\n if (!containerElement) return;\n\n const target = event.target as Node;\n\n return !(containerElement.isSameNode(target) || containerElement.contains(target));\n };\n\n const onScroll = () => {\n if (!scrollHandler.current) {\n scrollHandler.current = new ConnectedOverlayScrollHandler(getContainer(), () => {\n if (visibleState) {\n hide();\n }\n });\n }\n\n scrollHandler.current.bindScrollListener();\n };\n\n const onResize = () => {\n if (visibleState && !isTouchDevice()) {\n hide();\n }\n };\n\n const onOverlayClick = (event: React.MouseEvent) => {\n OverlayEventBus.emit('overlay-click', {\n originalEvent: event,\n target: props.target\n });\n\n selfClick.current = true;\n };\n\n const onOverlayKeyDown = (event: React.KeyboardEvent) => {\n if (event.code === 'Escape') {\n onEscapeKey(event);\n }\n };\n\n const onEscapeKey = (event: React.KeyboardEvent) => {\n if (visibleState) {\n hide();\n }\n\n event.preventDefault();\n };\n\n React.useEffect(() => {\n if (props.open) {\n show();\n } else if (!props.open) {\n hide();\n }\n }, [props.open]);\n\n useUnmountEffect(() => {\n unbindOutsideClickListener();\n unbindScrollListener();\n unbindResizeListener();\n\n if (props.type === 'menu') {\n unbindOutsideContextMenuListener();\n }\n\n if (scrollHandler.current) {\n scrollHandler.current.destroy();\n scrollHandler.current = null;\n }\n\n const containerElement = getContainer();\n\n if (props.autoZIndex && containerElement) {\n ZIndex.clear(containerElement);\n }\n });\n\n return {\n state,\n containerRef,\n // methods\n hide,\n onOverlayEnter,\n onOverlayAfterEnter,\n onLeave,\n onAfterLeave,\n onOverlayClick,\n onOverlayKeyDown\n };\n }\n});\n","import { EventBus } from '@primeuix/utils/eventbus';\n\nexport default EventBus();\n","import type { useOverlayProps } from '@primereact/types/shared/overlay';\n\nexport const defaultProps: useOverlayProps = {\n target: undefined,\n defaultOpen: undefined,\n open: undefined,\n appendTo: 'body',\n type: 'overlay',\n baseZIndex: 0,\n autoZIndex: true,\n closeOnEscape: true,\n onOpenChange: undefined\n};\n"],"mappings":"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","names":["withHeadless","ConnectedOverlayScrollHandler","useEventListener","useUnmountEffect","$dt","absolutePosition","addClass","addStyle","getHiddenElementOuterHeight","getHiddenElementOuterWidth","getOffset","getViewport","isTouchDevice","relativePosition","ZIndex","EventBus","OverlayEventBus_default","React","defaultProps","useOverlay","withHeadless","defaultProps","props","$primereact","visibleState","setVisibleState","containerRef","scrollHandler","selfClick","state","getContainer","_a","_b","show","hide","onOverlayEnter","_c","_d","containerElement","addStyle","ZIndex","alignOverlay","onOverlayAfterEnter","bindOutsideClickListener","bindScrollListener","bindResizeListener","bindOutsideContextMenuListener","onLeave","unbindOutsideClickListener","unbindScrollListener","unbindResizeListener","unbindOutsideContextMenuListener","onAfterLeave","virtualTarget","left","top","width","getHiddenElementOuterWidth","height","getHiddenElementOuterHeight","viewport","getViewport","scrollTop","scrollLeft","relativePosition","absolutePosition","containerOffset","getOffset","targetOffset","arrowLeft","$dt","addClass","useEventListener","event","onOutsideClick","onScroll","onResize","isOutsideClicked","target","ConnectedOverlayScrollHandler","isTouchDevice","onOverlayClick","OverlayEventBus_default","onOverlayKeyDown","onEscapeKey","useUnmountEffect"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@primereact/headless",
|
|
3
|
-
"version": "11.0.0-alpha.
|
|
3
|
+
"version": "11.0.0-alpha.9",
|
|
4
4
|
"author": "PrimeTek Informatics",
|
|
5
5
|
"description": "",
|
|
6
6
|
"homepage": "https://primereact.org/",
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"dependencies": {
|
|
35
35
|
"@primeuix/styled": "^0.7.4",
|
|
36
36
|
"@primeuix/utils": "^0.6.2",
|
|
37
|
-
"@primereact/core": "11.0.0-alpha.
|
|
38
|
-
"@primereact/hooks": "11.0.0-alpha.
|
|
37
|
+
"@primereact/core": "11.0.0-alpha.9",
|
|
38
|
+
"@primereact/hooks": "11.0.0-alpha.9"
|
|
39
39
|
}
|
|
40
40
|
}
|
package/placer/index.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{withHeadless as J}from"@primereact/core/headless";import{addStyle as C,getOffset as x,getOuterHeight as T,getOuterWidth as w,getViewport as K}from"@primeuix/utils/dom";import*as A from"react";var k={align:"center",alignOffset:0,side:"top",sideOffset:0};var R=J({name:"usePlacer",defaultProps:k,setup:({props:f})=>{let[P,S]=A.useState(f.side),[$,E]=A.useState(f.align),p=A.useRef(null),d=A.useRef(null),m=A.useRef(null),M={effectiveSide:P,effectiveAlign:$},O=()=>{var n,t;return d!=null&&d.current&&(d==null?void 0:d.current)instanceof HTMLElement?d==null?void 0:d.current:(t=(n=d==null?void 0:d.current)==null?void 0:n.elementRef)==null?void 0:t.current},y=()=>{var n,t;return m!=null&&m.current&&(m==null?void 0:m.current)instanceof HTMLElement?m==null?void 0:m.current:(t=(n=m==null?void 0:m.current)==null?void 0:n.elementRef)==null?void 0:t.current},b=()=>{var n,t;return p!=null&&p.current&&(p==null?void 0:p.current)instanceof HTMLElement?p==null?void 0:p.current:(t=(n=p==null?void 0:p.current)==null?void 0:n.elementRef)==null?void 0:t.current},B=n=>{var h;let t=y(),o=O();if(!t||!o)return;let r=x(o),e=w(t),s=w(o),c=T(t),i=T(b()),l=window.scrollY||document.documentElement.scrollTop,a=window.scrollX||document.documentElement.scrollLeft,u=H(n,Number(r.left),s,e),g=Number(r.top)-c-((h=f.sideOffset)!=null?h:0)-i;t.style.transform=`translate(${u+a}px, ${g-l}px)`},N=n=>{var h;let t=y(),o=O();if(!t||!o)return;let r=x(o),e=w(t),s=w(o),c=T(o),i=T(b()),l=window.scrollY||document.documentElement.scrollTop,a=window.scrollX||document.documentElement.scrollLeft,u=H(n,Number(r.left),s,e),g=Number(r.top)+c+((h=f.sideOffset)!=null?h:0)+i;t.style.transform=`translate(${u+a}px, ${g-l}px)`},W=n=>{var h;let t=y(),o=O();if(!t||!o)return;let r=x(o),e=w(t),s=T(t),c=T(o),i=w(b()),l=window.scrollY||document.documentElement.scrollTop,a=window.scrollX||document.documentElement.scrollLeft,u=L(n,Number(r.top),c,s),g=Number(r.left)-e-((h=f.sideOffset)!=null?h:0)-i;t.style.transform=`translate(${g+a}px, ${u-l}px)`},X=n=>{var h;let t=y(),o=O();if(!t||!o)return;let r=x(o),e=T(t),s=T(o),c=w(o),i=w(b()),l=window.scrollY||document.documentElement.scrollTop,a=window.scrollX||document.documentElement.scrollLeft,u=L(n,Number(r.top),s,e),g=Number(r.left)+c+((h=f.sideOffset)!=null?h:0)+i;t.style.transform=`translate(${g+a}px, ${u-l}px)`},H=(n,t,o,r)=>{var e,s;switch(n){case"start":return t+((e=f.alignOffset)!=null?e:0);case"end":return t+o-r-((s=f.alignOffset)!=null?s:0);
|
|
1
|
+
import{withHeadless as J}from"@primereact/core/headless";import{addStyle as C,getOffset as x,getOuterHeight as T,getOuterWidth as w,getViewport as K}from"@primeuix/utils/dom";import*as A from"react";var k={align:"center",alignOffset:0,side:"top",sideOffset:0};var R=J({name:"usePlacer",defaultProps:k,setup:({props:f})=>{let[P,S]=A.useState(f.side),[$,E]=A.useState(f.align),p=A.useRef(null),d=A.useRef(null),m=A.useRef(null),M={effectiveSide:P,effectiveAlign:$},O=()=>{var n,t;return d!=null&&d.current&&(d==null?void 0:d.current)instanceof HTMLElement?d==null?void 0:d.current:(t=(n=d==null?void 0:d.current)==null?void 0:n.elementRef)==null?void 0:t.current},y=()=>{var n,t;return m!=null&&m.current&&(m==null?void 0:m.current)instanceof HTMLElement?m==null?void 0:m.current:(t=(n=m==null?void 0:m.current)==null?void 0:n.elementRef)==null?void 0:t.current},b=()=>{var n,t;return p!=null&&p.current&&(p==null?void 0:p.current)instanceof HTMLElement?p==null?void 0:p.current:(t=(n=p==null?void 0:p.current)==null?void 0:n.elementRef)==null?void 0:t.current},B=n=>{var h;let t=y(),o=O();if(!t||!o)return;let r=x(o),e=w(t),s=w(o),c=T(t),i=T(b()),l=window.scrollY||document.documentElement.scrollTop,a=window.scrollX||document.documentElement.scrollLeft,u=H(n,Number(r.left),s,e),g=Number(r.top)-c-((h=f.sideOffset)!=null?h:0)-i;t.style.transform=`translate(${u+a}px, ${g-l}px)`},N=n=>{var h;let t=y(),o=O();if(!t||!o)return;let r=x(o),e=w(t),s=w(o),c=T(o),i=T(b()),l=window.scrollY||document.documentElement.scrollTop,a=window.scrollX||document.documentElement.scrollLeft,u=H(n,Number(r.left),s,e),g=Number(r.top)+c+((h=f.sideOffset)!=null?h:0)+i;t.style.transform=`translate(${u+a}px, ${g-l}px)`},W=n=>{var h;let t=y(),o=O();if(!t||!o)return;let r=x(o),e=w(t),s=T(t),c=T(o),i=w(b()),l=window.scrollY||document.documentElement.scrollTop,a=window.scrollX||document.documentElement.scrollLeft,u=L(n,Number(r.top),c,s),g=Number(r.left)-e-((h=f.sideOffset)!=null?h:0)-i;t.style.transform=`translate(${g+a}px, ${u-l}px)`},X=n=>{var h;let t=y(),o=O();if(!t||!o)return;let r=x(o),e=T(t),s=T(o),c=w(o),i=w(b()),l=window.scrollY||document.documentElement.scrollTop,a=window.scrollX||document.documentElement.scrollLeft,u=L(n,Number(r.top),s,e),g=Number(r.left)+c+((h=f.sideOffset)!=null?h:0)+i;t.style.transform=`translate(${g+a}px, ${u-l}px)`},H=(n,t,o,r)=>{var e,s;switch(n){case"start":return t+((e=f.alignOffset)!=null?e:0);case"end":return t+o-r-((s=f.alignOffset)!=null?s:0);default:return t+(o-r)/2}},L=(n,t,o,r)=>{var e,s;switch(n){case"start":return t+((e=f.alignOffset)!=null?e:0);case"end":return t+o-r-((s=f.alignOffset)!=null?s:0);default:return t+(o-r)/2}},Y=()=>{var c,i;let n=y();if(!n)return;C(n,{position:"fixed",left:"0",top:"0",willChange:"transform"});let t=b();t&&C(t,{position:"absolute"});let o=q((c=f.side)!=null?c:"top"),r=j((i=f.align)!=null?i:"center"),{side:e,align:s}=V(o,r);S(e),E(s),n.style.setProperty("--placer-transform-origin",G(e!=null?e:"top",s!=null?s:"center"))},v=(n,t)=>{let o=y();o&&(o==null||o.setAttribute("data-side",n),o==null||o.setAttribute("data-align",t));let r=O();r&&(r==null||r.setAttribute("data-side",n),r==null||r.setAttribute("data-align",t));let e=b();e&&(e==null||e.setAttribute("data-side",n),e==null||e.setAttribute("data-align",t))},V=(n,t)=>{for(let o of n)for(let r of t)if(v(o,r),D(o,r),I(o),!F())return{side:o,align:r};return{side:f.side,align:f.align}},j=n=>{switch(n){case"start":return["start","center","end"];case"end":return["end","center","start"];case"center":return["center","start","end"];default:return["center","start","end"]}},q=n=>{let t=["top","right","bottom","left"],o=z(n),r=t.filter(e=>e!==n&&e!==o);return[n,o,...r]},z=n=>{switch(n){case"top":return"bottom";case"bottom":return"top";case"left":return"right";case"right":return"left";default:return n}},D=(n,t)=>{switch(n){case"top":B(t);break;case"bottom":N(t);break;case"left":W(t);break;case"right":X(t);break}S(n),E(t)},F=()=>{var c,i,l,a;let n=y(),t=b();if(!n)return!1;let o=K(),r=n.getBoundingClientRect(),e=t==null?void 0:t.getBoundingClientRect(),s={top:Math.min(r.top,(c=e==null?void 0:e.top)!=null?c:r.top),left:Math.min(r.left,(i=e==null?void 0:e.left)!=null?i:r.left),right:Math.max(r.right,(l=e==null?void 0:e.right)!=null?l:r.right),bottom:Math.max(r.bottom,(a=e==null?void 0:e.bottom)!=null?a:r.bottom)};return s.left<0||s.top<0||s.right>o.width||s.bottom>o.height},G=(n,t)=>{let o=y(),r=b();if(!o)return"center center";let e=o.getBoundingClientRect(),s=r?r.getBoundingClientRect():null,c=e.width/2,i=e.height/2;if(s){let l=s.height,a=s.width,u=s.left+a/2-e.left,g=s.top+l/2-e.top;switch(n){case"top":c=u,i=e.height+l;break;case"bottom":c=u,i=0;break;case"left":c=e.width+a,i=g;break;case"right":c=e.left-s.left,i=g;break}}else{let l=(a,u)=>{let g=a==="x"?e.width:e.height;switch(u){case"start":return 0;case"end":return g;case"center":return g/2}};switch(n){case"top":i=e.height,c=l("x",t);break;case"bottom":i=0,c=l("x",t);break;case"left":c=e.width,i=l("y",t);break;case"right":c=0,i=l("y",t);break}}return`${c}px ${i}px`},I=n=>{let t=b(),o=y(),r=O();if(!o||!t)return;let e=o.getBoundingClientRect(),s=r.getBoundingClientRect(),c=s.left+s.width/2,i=s.top+s.height/2,l=c-e.left,a=i-e.top,u=8;(n==="top"||n==="bottom")&&((l<u||l>e.width-u)&&(t.style.opacity="0"),t.style.left=`${l}px`,t.style.top=n==="top"?"100%":"auto",t.style.bottom=n==="bottom"?"100%":"auto",t.style.transform="translateX(-50%)"),(n==="left"||n==="right")&&((a<u||a>e.height-u)&&(t.style.opacity="0"),t.style.top=`${a}px`,t.style.left=n==="left"?"100%":"auto",t.style.right=n==="right"?"100%":"auto",t.style.transform="translateY(-50%)")};return{state:M,containerRef:m,anchorRef:d,arrowRef:p,applyPlacement:Y}}});export{k as defaultProps,R as usePlacer};
|
|
2
2
|
//# sourceMappingURL=index.mjs.map
|
package/placer/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/placer/usePlacer.ts","../../src/placer/usePlacer.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { AlignType, SideType } from '@primereact/types/shared/placer';\nimport { addStyle, getOffset, getOuterHeight, getOuterWidth, getViewport } from '@primeuix/utils/dom';\nimport * as React from 'react';\nimport { defaultProps } from './usePlacer.props';\n\nexport const usePlacer = withHeadless({\n name: 'usePlacer',\n defaultProps,\n setup: ({ props }) => {\n const [effectiveSide, setEffectiveSide] = React.useState<SideType | null | undefined>(props.side);\n const [effectiveAlign, setEffectiveAlign] = React.useState<AlignType | null | undefined>(props.align);\n const arrowRef = React.useRef<HTMLElement | null | unknown>(null);\n const anchorRef = React.useRef<HTMLElement | null | unknown>(null);\n const containerRef = React.useRef<HTMLElement | null | unknown>(null);\n\n const state = {\n effectiveSide,\n effectiveAlign\n };\n\n const getAnchor = () => {\n if (anchorRef?.current && anchorRef?.current instanceof HTMLElement) {\n return anchorRef?.current;\n }\n\n // @ts-expect-error - Temporary fix for elementRef property access\n return anchorRef?.current?.elementRef?.current;\n };\n\n const getContainer = () => {\n if (containerRef?.current && containerRef?.current instanceof HTMLElement) {\n return containerRef?.current;\n }\n\n // @ts-expect-error - Temporary fix for elementRef property access\n return containerRef?.current?.elementRef?.current;\n };\n\n const getArrow = () => {\n if (arrowRef?.current && arrowRef?.current instanceof HTMLElement) {\n return arrowRef?.current;\n }\n\n // @ts-expect-error - Temporary fix for elementRef property access\n return arrowRef?.current?.elementRef?.current;\n };\n\n const placeTop = (align: AlignType) => {\n const container = getContainer();\n const anchor = getAnchor();\n\n if (!container || !anchor) return;\n\n const anchorOffset = getOffset(anchor);\n const tooltipWidth = getOuterWidth(container);\n const anchorWidth = getOuterWidth(anchor);\n const tooltipHeight = getOuterHeight(container);\n const arrowHeight = getOuterHeight(getArrow());\n\n const scrollTop = window.scrollY || document.documentElement.scrollTop;\n const scrollLeft = window.scrollX || document.documentElement.scrollLeft;\n\n const left = getLeftByAlign(align, Number(anchorOffset.left), anchorWidth, tooltipWidth);\n\n const top = Number(anchorOffset.top) - tooltipHeight - (props.sideOffset ?? 0) - arrowHeight;\n\n container.style.transform = `translate(${left + scrollLeft}px, ${top - scrollTop}px)`;\n };\n\n const placeBottom = (align: AlignType) => {\n const container = getContainer();\n const anchor = getAnchor();\n\n if (!container || !anchor) return;\n\n const anchorOffset = getOffset(anchor);\n const tooltipWidth = getOuterWidth(container);\n const anchorWidth = getOuterWidth(anchor);\n const anchorHeight = getOuterHeight(anchor);\n const arrowHeight = getOuterHeight(getArrow());\n const scrollTop = window.scrollY || document.documentElement.scrollTop;\n const scrollLeft = window.scrollX || document.documentElement.scrollLeft;\n const left = getLeftByAlign(align, Number(anchorOffset.left), anchorWidth, tooltipWidth);\n\n const top = Number(anchorOffset.top) + anchorHeight + (props.sideOffset ?? 0) + arrowHeight;\n\n container.style.transform = `translate(${left + scrollLeft}px, ${top - scrollTop}px)`;\n };\n\n const placeLeft = (align: AlignType) => {\n const container = getContainer();\n const anchor = getAnchor();\n\n if (!container || !anchor) return;\n\n const anchorOffset = getOffset(anchor);\n const tooltipWidth = getOuterWidth(container);\n const tooltipHeight = getOuterHeight(container);\n const anchorHeight = getOuterHeight(anchor);\n const arrowWidth = getOuterWidth(getArrow());\n const scrollTop = window.scrollY || document.documentElement.scrollTop;\n const scrollLeft = window.scrollX || document.documentElement.scrollLeft;\n const top = getTopByAlign(align, Number(anchorOffset.top), anchorHeight, tooltipHeight);\n\n const left = Number(anchorOffset.left) - tooltipWidth - (props.sideOffset ?? 0) - arrowWidth;\n\n container.style.transform = `translate(${left + scrollLeft}px, ${top - scrollTop}px)`;\n };\n\n const placeRight = (align: AlignType) => {\n const container = getContainer();\n const anchor = getAnchor();\n\n if (!container || !anchor) return;\n\n const anchorOffset = getOffset(anchor);\n const tooltipHeight = getOuterHeight(container);\n const anchorHeight = getOuterHeight(anchor);\n const anchorWidth = getOuterWidth(anchor);\n const arrowWidth = getOuterWidth(getArrow());\n\n const scrollTop = window.scrollY || document.documentElement.scrollTop;\n const scrollLeft = window.scrollX || document.documentElement.scrollLeft;\n const top = getTopByAlign(align, Number(anchorOffset.top), anchorHeight, tooltipHeight);\n\n const left = Number(anchorOffset.left) + anchorWidth + (props.sideOffset ?? 0) + arrowWidth;\n\n container.style.transform = `translate(${left + scrollLeft}px, ${top - scrollTop}px)`;\n };\n\n const getLeftByAlign = (align: AlignType, anchorLeft: number, anchorWidth: number, tooltipWidth: number): number => {\n switch (align) {\n case 'start':\n return anchorLeft + (props.alignOffset ?? 0);\n case 'end':\n return anchorLeft + anchorWidth - tooltipWidth - (props.alignOffset ?? 0);\n case 'center':\n default:\n return anchorLeft + (anchorWidth - tooltipWidth) / 2;\n }\n };\n\n const getTopByAlign = (align: AlignType, anchorTop: number, anchorHeight: number, tooltipHeight: number): number => {\n switch (align) {\n case 'start':\n return anchorTop + (props.alignOffset ?? 0);\n case 'end':\n return anchorTop + anchorHeight - tooltipHeight - (props.alignOffset ?? 0);\n case 'center':\n default:\n return anchorTop + (anchorHeight - tooltipHeight) / 2;\n }\n };\n\n const applyPlacement = () => {\n const container = getContainer();\n\n if (!container) return;\n\n addStyle(container, {\n position: 'fixed',\n left: '0',\n top: '0',\n willChange: 'transform'\n });\n\n const arrow = getArrow();\n\n if (arrow) {\n addStyle(arrow, {\n position: 'absolute'\n });\n }\n\n const sideOptions = getSideOptions(props.side ?? 'top');\n const alignOptions = getAlignOptions(props.align ?? 'center');\n\n const { side, align } = tryPlacement(sideOptions, alignOptions);\n\n setEffectiveSide(side);\n setEffectiveAlign(align);\n\n container.style.setProperty('--placer-transform-origin', getTransformOrigin(side ?? 'top', align ?? 'center'));\n };\n\n const updateAttributes = (side: SideType, align: AlignType) => {\n const container = getContainer();\n\n if (container) {\n container?.setAttribute('data-side', side);\n container?.setAttribute('data-align', align);\n }\n\n const anchor = getAnchor();\n\n if (anchor) {\n anchor?.setAttribute('data-side', side);\n anchor?.setAttribute('data-align', align);\n }\n\n const arrow = getArrow();\n\n if (arrow) {\n arrow?.setAttribute('data-side', side);\n arrow?.setAttribute('data-align', align);\n }\n };\n\n const tryPlacement = (sideOptions: SideType[], alignOptions: AlignType[]) => {\n for (const side of sideOptions) {\n for (const align of alignOptions) {\n updateAttributes(side, align);\n placeContainer(side, align);\n updateArrowPosition(side);\n\n if (!isOutOfBounds()) {\n return { side, align };\n }\n }\n }\n\n return { side: props.side, align: props.align };\n };\n\n const getAlignOptions = (align: AlignType): AlignType[] => {\n switch (align) {\n case 'start':\n return ['start', 'center', 'end'];\n case 'end':\n return ['end', 'center', 'start'];\n case 'center':\n return ['center', 'start', 'end'];\n default:\n return ['center', 'start', 'end'];\n }\n };\n\n const getSideOptions = (side: SideType): SideType[] => {\n const allSides: SideType[] = ['top', 'right', 'bottom', 'left'];\n const flipped = flipSide(side);\n const remaining = allSides.filter((s) => s !== side && s !== flipped);\n\n return [side, flipped, ...remaining];\n };\n\n const flipSide = (side: SideType): SideType => {\n switch (side) {\n case 'top':\n return 'bottom';\n case 'bottom':\n return 'top';\n case 'left':\n return 'right';\n case 'right':\n return 'left';\n default:\n return side;\n }\n };\n\n const placeContainer = (side: SideType, align: AlignType) => {\n switch (side) {\n case 'top':\n placeTop(align);\n break;\n case 'bottom':\n placeBottom(align);\n break;\n case 'left':\n placeLeft(align);\n break;\n case 'right':\n placeRight(align);\n break;\n }\n\n setEffectiveSide(side);\n setEffectiveAlign(align);\n };\n\n const isOutOfBounds = () => {\n const container = getContainer();\n const arrow = getArrow();\n\n if (!container) return false;\n\n const viewport = getViewport();\n const containerRect = container.getBoundingClientRect();\n const arrowRect = arrow?.getBoundingClientRect();\n\n const combinedRect = {\n top: Math.min(containerRect.top, arrowRect?.top ?? containerRect.top),\n left: Math.min(containerRect.left, arrowRect?.left ?? containerRect.left),\n right: Math.max(containerRect.right, arrowRect?.right ?? containerRect.right),\n bottom: Math.max(containerRect.bottom, arrowRect?.bottom ?? containerRect.bottom)\n };\n\n return combinedRect.left < 0 || combinedRect.top < 0 || combinedRect.right > viewport.width || combinedRect.bottom > viewport.height;\n };\n\n const getTransformOrigin = (side: SideType, align: AlignType): string => {\n const container = getContainer();\n const arrow = getArrow();\n\n if (!container) return 'center center';\n\n const containerRect = container.getBoundingClientRect();\n const arrowRect = arrow ? (arrow as HTMLElement).getBoundingClientRect() : null;\n\n let originX = containerRect.width / 2;\n let originY = containerRect.height / 2;\n\n if (arrowRect) {\n const arrowHeight = arrowRect.height;\n const arrowWidth = arrowRect.width;\n const arrowCenterX = arrowRect.left + arrowWidth / 2 - containerRect.left;\n const arrowCenterY = arrowRect.top + arrowHeight / 2 - containerRect.top;\n\n switch (side) {\n case 'top':\n originX = arrowCenterX;\n originY = containerRect.height + arrowHeight;\n break;\n case 'bottom':\n originX = arrowCenterX;\n originY = 0;\n break;\n case 'left':\n originX = containerRect.width + arrowWidth;\n originY = arrowCenterY;\n break;\n case 'right':\n originX = containerRect.left - arrowRect.left;\n originY = arrowCenterY;\n break;\n }\n } else {\n const alignTo = (type: 'x' | 'y', align: AlignType) => {\n const dim = type === 'x' ? containerRect.width : containerRect.height;\n\n switch (align) {\n case 'start':\n return 0;\n case 'end':\n return dim;\n case 'center':\n return dim / 2;\n }\n };\n\n switch (side) {\n case 'top':\n originY = containerRect.height;\n originX = alignTo('x', align);\n break;\n case 'bottom':\n originY = 0;\n originX = alignTo('x', align);\n\n break;\n case 'left':\n originX = containerRect.width;\n originY = alignTo('y', align);\n\n break;\n case 'right':\n originX = 0;\n originY = alignTo('y', align);\n\n break;\n }\n }\n\n return `${originX}px ${originY}px`;\n };\n\n const updateArrowPosition = (side: SideType) => {\n const arrow = getArrow();\n const container = getContainer();\n const anchor = getAnchor();\n\n if (!container || !arrow) return;\n\n const tooltipRect = container.getBoundingClientRect();\n const anchorRect = anchor.getBoundingClientRect();\n const anchorCenterX = anchorRect.left + anchorRect.width / 2;\n const anchorCenterY = anchorRect.top + anchorRect.height / 2;\n\n const arrowLeft = anchorCenterX - tooltipRect.left;\n const arrowTop = anchorCenterY - tooltipRect.top;\n const padding = 8;\n\n if (side === 'top' || side === 'bottom') {\n if (arrowLeft < padding || arrowLeft > tooltipRect.width - padding) {\n arrow.style.opacity = '0';\n }\n\n arrow.style.left = `${arrowLeft}px`;\n arrow.style.top = side === 'top' ? '100%' : 'auto';\n arrow.style.bottom = side === 'bottom' ? '100%' : 'auto';\n arrow.style.transform = 'translateX(-50%)';\n }\n\n if (side === 'left' || side === 'right') {\n if (arrowTop < padding || arrowTop > tooltipRect.height - padding) {\n arrow.style.opacity = '0';\n }\n\n arrow.style.top = `${arrowTop}px`;\n arrow.style.left = side === 'left' ? '100%' : 'auto';\n arrow.style.right = side === 'right' ? '100%' : 'auto';\n arrow.style.transform = 'translateY(-50%)';\n }\n };\n\n // effects\n\n return {\n state,\n containerRef,\n anchorRef,\n arrowRef,\n applyPlacement\n };\n }\n});\n","import type { usePlacerProps } from '@primereact/types/shared/placer';\n\nexport const defaultProps: usePlacerProps = {\n align: 'center',\n alignOffset: 0,\n side: 'top',\n sideOffset: 0\n};\n"],"mappings":"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","names":["withHeadless","addStyle","getOffset","getOuterHeight","getOuterWidth","getViewport","React","defaultProps","usePlacer","withHeadless","defaultProps","props","effectiveSide","setEffectiveSide","effectiveAlign","setEffectiveAlign","arrowRef","anchorRef","containerRef","state","getAnchor","_a","_b","getContainer","getArrow","placeTop","align","container","anchor","anchorOffset","getOffset","tooltipWidth","getOuterWidth","anchorWidth","tooltipHeight","getOuterHeight","arrowHeight","scrollTop","scrollLeft","left","getLeftByAlign","top","placeBottom","anchorHeight","placeLeft","arrowWidth","getTopByAlign","placeRight","anchorLeft","anchorTop","applyPlacement","addStyle","arrow","sideOptions","getSideOptions","alignOptions","getAlignOptions","side","tryPlacement","getTransformOrigin","updateAttributes","placeContainer","updateArrowPosition","isOutOfBounds","allSides","flipped","flipSide","remaining","s","_c","_d","viewport","getViewport","containerRect","arrowRect","combinedRect","originX","originY","arrowCenterX","arrowCenterY","alignTo","type","dim","tooltipRect","anchorRect","anchorCenterX","anchorCenterY","arrowLeft","arrowTop","padding"]}
|
|
1
|
+
{"version":3,"sources":["../../src/placer/usePlacer.ts","../../src/placer/usePlacer.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { AlignType, SideType } from '@primereact/types/shared/placer';\nimport { addStyle, getOffset, getOuterHeight, getOuterWidth, getViewport } from '@primeuix/utils/dom';\nimport * as React from 'react';\nimport { defaultProps } from './usePlacer.props';\n\nexport const usePlacer = withHeadless({\n name: 'usePlacer',\n defaultProps,\n setup: ({ props }) => {\n const [effectiveSide, setEffectiveSide] = React.useState<SideType | null | undefined>(props.side);\n const [effectiveAlign, setEffectiveAlign] = React.useState<AlignType | null | undefined>(props.align);\n const arrowRef = React.useRef<HTMLElement | null | unknown>(null);\n const anchorRef = React.useRef<HTMLElement | null | unknown>(null);\n const containerRef = React.useRef<HTMLElement | null | unknown>(null);\n\n const state = {\n effectiveSide,\n effectiveAlign\n };\n\n const getAnchor = () => {\n if (anchorRef?.current && anchorRef?.current instanceof HTMLElement) {\n return anchorRef?.current;\n }\n\n // @ts-expect-error - Temporary fix for elementRef property access\n return anchorRef?.current?.elementRef?.current;\n };\n\n const getContainer = () => {\n if (containerRef?.current && containerRef?.current instanceof HTMLElement) {\n return containerRef?.current;\n }\n\n // @ts-expect-error - Temporary fix for elementRef property access\n return containerRef?.current?.elementRef?.current;\n };\n\n const getArrow = () => {\n if (arrowRef?.current && arrowRef?.current instanceof HTMLElement) {\n return arrowRef?.current;\n }\n\n // @ts-expect-error - Temporary fix for elementRef property access\n return arrowRef?.current?.elementRef?.current;\n };\n\n const placeTop = (align: AlignType) => {\n const container = getContainer();\n const anchor = getAnchor();\n\n if (!container || !anchor) return;\n\n const anchorOffset = getOffset(anchor);\n const tooltipWidth = getOuterWidth(container);\n const anchorWidth = getOuterWidth(anchor);\n const tooltipHeight = getOuterHeight(container);\n const arrowHeight = getOuterHeight(getArrow());\n\n const scrollTop = window.scrollY || document.documentElement.scrollTop;\n const scrollLeft = window.scrollX || document.documentElement.scrollLeft;\n\n const left = getLeftByAlign(align, Number(anchorOffset.left), anchorWidth, tooltipWidth);\n\n const top = Number(anchorOffset.top) - tooltipHeight - (props.sideOffset ?? 0) - arrowHeight;\n\n container.style.transform = `translate(${left + scrollLeft}px, ${top - scrollTop}px)`;\n };\n\n const placeBottom = (align: AlignType) => {\n const container = getContainer();\n const anchor = getAnchor();\n\n if (!container || !anchor) return;\n\n const anchorOffset = getOffset(anchor);\n const tooltipWidth = getOuterWidth(container);\n const anchorWidth = getOuterWidth(anchor);\n const anchorHeight = getOuterHeight(anchor);\n const arrowHeight = getOuterHeight(getArrow());\n const scrollTop = window.scrollY || document.documentElement.scrollTop;\n const scrollLeft = window.scrollX || document.documentElement.scrollLeft;\n const left = getLeftByAlign(align, Number(anchorOffset.left), anchorWidth, tooltipWidth);\n\n const top = Number(anchorOffset.top) + anchorHeight + (props.sideOffset ?? 0) + arrowHeight;\n\n container.style.transform = `translate(${left + scrollLeft}px, ${top - scrollTop}px)`;\n };\n\n const placeLeft = (align: AlignType) => {\n const container = getContainer();\n const anchor = getAnchor();\n\n if (!container || !anchor) return;\n\n const anchorOffset = getOffset(anchor);\n const tooltipWidth = getOuterWidth(container);\n const tooltipHeight = getOuterHeight(container);\n const anchorHeight = getOuterHeight(anchor);\n const arrowWidth = getOuterWidth(getArrow());\n const scrollTop = window.scrollY || document.documentElement.scrollTop;\n const scrollLeft = window.scrollX || document.documentElement.scrollLeft;\n const top = getTopByAlign(align, Number(anchorOffset.top), anchorHeight, tooltipHeight);\n\n const left = Number(anchorOffset.left) - tooltipWidth - (props.sideOffset ?? 0) - arrowWidth;\n\n container.style.transform = `translate(${left + scrollLeft}px, ${top - scrollTop}px)`;\n };\n\n const placeRight = (align: AlignType) => {\n const container = getContainer();\n const anchor = getAnchor();\n\n if (!container || !anchor) return;\n\n const anchorOffset = getOffset(anchor);\n const tooltipHeight = getOuterHeight(container);\n const anchorHeight = getOuterHeight(anchor);\n const anchorWidth = getOuterWidth(anchor);\n const arrowWidth = getOuterWidth(getArrow());\n\n const scrollTop = window.scrollY || document.documentElement.scrollTop;\n const scrollLeft = window.scrollX || document.documentElement.scrollLeft;\n const top = getTopByAlign(align, Number(anchorOffset.top), anchorHeight, tooltipHeight);\n\n const left = Number(anchorOffset.left) + anchorWidth + (props.sideOffset ?? 0) + arrowWidth;\n\n container.style.transform = `translate(${left + scrollLeft}px, ${top - scrollTop}px)`;\n };\n\n const getLeftByAlign = (align: AlignType, anchorLeft: number, anchorWidth: number, tooltipWidth: number): number => {\n switch (align) {\n case 'start':\n return anchorLeft + (props.alignOffset ?? 0);\n case 'end':\n return anchorLeft + anchorWidth - tooltipWidth - (props.alignOffset ?? 0);\n case 'center':\n default:\n return anchorLeft + (anchorWidth - tooltipWidth) / 2;\n }\n };\n\n const getTopByAlign = (align: AlignType, anchorTop: number, anchorHeight: number, tooltipHeight: number): number => {\n switch (align) {\n case 'start':\n return anchorTop + (props.alignOffset ?? 0);\n case 'end':\n return anchorTop + anchorHeight - tooltipHeight - (props.alignOffset ?? 0);\n case 'center':\n default:\n return anchorTop + (anchorHeight - tooltipHeight) / 2;\n }\n };\n\n const applyPlacement = () => {\n const container = getContainer();\n\n if (!container) return;\n\n addStyle(container, {\n position: 'fixed',\n left: '0',\n top: '0',\n willChange: 'transform'\n });\n\n const arrow = getArrow();\n\n if (arrow) {\n addStyle(arrow, {\n position: 'absolute'\n });\n }\n\n const sideOptions = getSideOptions(props.side ?? 'top');\n const alignOptions = getAlignOptions(props.align ?? 'center');\n\n const { side, align } = tryPlacement(sideOptions, alignOptions);\n\n setEffectiveSide(side);\n setEffectiveAlign(align);\n\n container.style.setProperty('--placer-transform-origin', getTransformOrigin(side ?? 'top', align ?? 'center'));\n };\n\n const updateAttributes = (side: SideType, align: AlignType) => {\n const container = getContainer();\n\n if (container) {\n container?.setAttribute('data-side', side);\n container?.setAttribute('data-align', align);\n }\n\n const anchor = getAnchor();\n\n if (anchor) {\n anchor?.setAttribute('data-side', side);\n anchor?.setAttribute('data-align', align);\n }\n\n const arrow = getArrow();\n\n if (arrow) {\n arrow?.setAttribute('data-side', side);\n arrow?.setAttribute('data-align', align);\n }\n };\n\n const tryPlacement = (sideOptions: SideType[], alignOptions: AlignType[]) => {\n for (const side of sideOptions) {\n for (const align of alignOptions) {\n updateAttributes(side, align);\n placeContainer(side, align);\n updateArrowPosition(side);\n\n if (!isOutOfBounds()) {\n return { side, align };\n }\n }\n }\n\n return { side: props.side, align: props.align };\n };\n\n const getAlignOptions = (align: AlignType): AlignType[] => {\n switch (align) {\n case 'start':\n return ['start', 'center', 'end'];\n case 'end':\n return ['end', 'center', 'start'];\n case 'center':\n return ['center', 'start', 'end'];\n default:\n return ['center', 'start', 'end'];\n }\n };\n\n const getSideOptions = (side: SideType): SideType[] => {\n const allSides: SideType[] = ['top', 'right', 'bottom', 'left'];\n const flipped = flipSide(side);\n const remaining = allSides.filter((s) => s !== side && s !== flipped);\n\n return [side, flipped, ...remaining];\n };\n\n const flipSide = (side: SideType): SideType => {\n switch (side) {\n case 'top':\n return 'bottom';\n case 'bottom':\n return 'top';\n case 'left':\n return 'right';\n case 'right':\n return 'left';\n default:\n return side;\n }\n };\n\n const placeContainer = (side: SideType, align: AlignType) => {\n switch (side) {\n case 'top':\n placeTop(align);\n break;\n case 'bottom':\n placeBottom(align);\n break;\n case 'left':\n placeLeft(align);\n break;\n case 'right':\n placeRight(align);\n break;\n }\n\n setEffectiveSide(side);\n setEffectiveAlign(align);\n };\n\n const isOutOfBounds = () => {\n const container = getContainer();\n const arrow = getArrow();\n\n if (!container) return false;\n\n const viewport = getViewport();\n const containerRect = container.getBoundingClientRect();\n const arrowRect = arrow?.getBoundingClientRect();\n\n const combinedRect = {\n top: Math.min(containerRect.top, arrowRect?.top ?? containerRect.top),\n left: Math.min(containerRect.left, arrowRect?.left ?? containerRect.left),\n right: Math.max(containerRect.right, arrowRect?.right ?? containerRect.right),\n bottom: Math.max(containerRect.bottom, arrowRect?.bottom ?? containerRect.bottom)\n };\n\n return combinedRect.left < 0 || combinedRect.top < 0 || combinedRect.right > viewport.width || combinedRect.bottom > viewport.height;\n };\n\n const getTransformOrigin = (side: SideType, align: AlignType): string => {\n const container = getContainer();\n const arrow = getArrow();\n\n if (!container) return 'center center';\n\n const containerRect = container.getBoundingClientRect();\n const arrowRect = arrow ? (arrow as HTMLElement).getBoundingClientRect() : null;\n\n let originX = containerRect.width / 2;\n let originY = containerRect.height / 2;\n\n if (arrowRect) {\n const arrowHeight = arrowRect.height;\n const arrowWidth = arrowRect.width;\n const arrowCenterX = arrowRect.left + arrowWidth / 2 - containerRect.left;\n const arrowCenterY = arrowRect.top + arrowHeight / 2 - containerRect.top;\n\n switch (side) {\n case 'top':\n originX = arrowCenterX;\n originY = containerRect.height + arrowHeight;\n break;\n case 'bottom':\n originX = arrowCenterX;\n originY = 0;\n break;\n case 'left':\n originX = containerRect.width + arrowWidth;\n originY = arrowCenterY;\n break;\n case 'right':\n originX = containerRect.left - arrowRect.left;\n originY = arrowCenterY;\n break;\n }\n } else {\n const alignTo = (type: 'x' | 'y', align: AlignType) => {\n const dim = type === 'x' ? containerRect.width : containerRect.height;\n\n switch (align) {\n case 'start':\n return 0;\n case 'end':\n return dim;\n case 'center':\n return dim / 2;\n }\n };\n\n switch (side) {\n case 'top':\n originY = containerRect.height;\n originX = alignTo('x', align);\n break;\n case 'bottom':\n originY = 0;\n originX = alignTo('x', align);\n\n break;\n case 'left':\n originX = containerRect.width;\n originY = alignTo('y', align);\n\n break;\n case 'right':\n originX = 0;\n originY = alignTo('y', align);\n\n break;\n }\n }\n\n return `${originX}px ${originY}px`;\n };\n\n const updateArrowPosition = (side: SideType) => {\n const arrow = getArrow();\n const container = getContainer();\n const anchor = getAnchor();\n\n if (!container || !arrow) return;\n\n const tooltipRect = container.getBoundingClientRect();\n const anchorRect = anchor.getBoundingClientRect();\n const anchorCenterX = anchorRect.left + anchorRect.width / 2;\n const anchorCenterY = anchorRect.top + anchorRect.height / 2;\n\n const arrowLeft = anchorCenterX - tooltipRect.left;\n const arrowTop = anchorCenterY - tooltipRect.top;\n const padding = 8;\n\n if (side === 'top' || side === 'bottom') {\n if (arrowLeft < padding || arrowLeft > tooltipRect.width - padding) {\n arrow.style.opacity = '0';\n }\n\n arrow.style.left = `${arrowLeft}px`;\n arrow.style.top = side === 'top' ? '100%' : 'auto';\n arrow.style.bottom = side === 'bottom' ? '100%' : 'auto';\n arrow.style.transform = 'translateX(-50%)';\n }\n\n if (side === 'left' || side === 'right') {\n if (arrowTop < padding || arrowTop > tooltipRect.height - padding) {\n arrow.style.opacity = '0';\n }\n\n arrow.style.top = `${arrowTop}px`;\n arrow.style.left = side === 'left' ? '100%' : 'auto';\n arrow.style.right = side === 'right' ? '100%' : 'auto';\n arrow.style.transform = 'translateY(-50%)';\n }\n };\n\n // effects\n\n return {\n state,\n containerRef,\n anchorRef,\n arrowRef,\n applyPlacement\n };\n }\n});\n","import type { usePlacerProps } from '@primereact/types/shared/placer';\n\nexport const defaultProps: usePlacerProps = {\n align: 'center',\n alignOffset: 0,\n side: 'top',\n sideOffset: 0\n};\n"],"mappings":"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","names":["withHeadless","addStyle","getOffset","getOuterHeight","getOuterWidth","getViewport","React","defaultProps","usePlacer","withHeadless","defaultProps","props","effectiveSide","setEffectiveSide","effectiveAlign","setEffectiveAlign","arrowRef","anchorRef","containerRef","state","getAnchor","_a","_b","getContainer","getArrow","placeTop","align","container","anchor","anchorOffset","getOffset","tooltipWidth","getOuterWidth","anchorWidth","tooltipHeight","getOuterHeight","arrowHeight","scrollTop","scrollLeft","left","getLeftByAlign","top","placeBottom","anchorHeight","placeLeft","arrowWidth","getTopByAlign","placeRight","anchorLeft","anchorTop","applyPlacement","addStyle","arrow","sideOptions","getSideOptions","alignOptions","getAlignOptions","side","tryPlacement","getTransformOrigin","updateAttributes","placeContainer","updateArrowPosition","isOutOfBounds","allSides","flipped","flipSide","remaining","s","_c","_d","viewport","getViewport","containerRect","arrowRect","combinedRect","originX","originY","arrowCenterX","arrowCenterY","alignTo","type","dim","tooltipRect","anchorRect","anchorCenterX","anchorCenterY","arrowLeft","arrowTop","padding"]}
|
package/toast/index.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var N=Object.defineProperty,$=Object.defineProperties;var q=Object.getOwnPropertyDescriptors;var y=Object.getOwnPropertySymbols;var B=Object.prototype.hasOwnProperty,C=Object.prototype.propertyIsEnumerable;var I=(
|
|
1
|
+
var N=Object.defineProperty,$=Object.defineProperties;var q=Object.getOwnPropertyDescriptors;var y=Object.getOwnPropertySymbols;var B=Object.prototype.hasOwnProperty,C=Object.prototype.propertyIsEnumerable;var I=(o,e,t)=>e in o?N(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t,n=(o,e)=>{for(var t in e||(e={}))B.call(e,t)&&I(o,t,e[t]);if(y)for(var t of y(e))C.call(e,t)&&I(o,t,e[t]);return o},T=(o,e)=>$(o,q(e));var E=(o,e,t)=>new Promise((r,s)=>{var f=u=>{try{c(t.next(u))}catch(m){s(m)}},i=u=>{try{c(t.throw(u))}catch(m){s(m)}},c=u=>u.done?r(u.value):Promise.resolve(u.value).then(f,i);c((t=t.apply(o,e)).next())});var O=0,R=()=>`toast-${++O}-${Date.now()}`,v=class{constructor(){this.listeners=new Set;this.snapshot=()=>this.toasts;this.subscribe=e=>(this.listeners.add(e),()=>{this.listeners.delete(e)});this.add=e=>this.create(e);this.update=(e,t)=>{this.commit(r=>r.map(s=>s.id===e?T(n(n({},s),t),{id:e}):s))};this.dismiss=e=>{if(e===void 0){this.commit(r=>r.map(s=>T(n({},s),{removed:!0})));return}if(this.toasts.some(r=>r.id===e))return this.commit(r=>r.map(s=>s.id===e?T(n({},s),{removed:!0}):s)),e};this.remove=e=>{if(this.toasts.some(r=>r.id===e))return this.commit(r=>r.filter(s=>s.id!==e)),e};this.clear=e=>{if(this.toasts.length){if(e){this.commit(t=>t.filter(r=>r.group!==e));return}this.commit([])}};this.get=e=>this.toasts.find(t=>t.id===e);this.success=e=>this.create(T(n({},e),{variant:"success"}));this.danger=e=>this.create(T(n({},e),{variant:"danger"}));this.warn=e=>this.create(T(n({},e),{variant:"warn"}));this.info=e=>this.create(T(n({},e),{variant:"info"}));this.loading=e=>{var t;return this.create(T(n({},e),{variant:"loading",dismissible:(t=e.dismissible)!=null?t:!1}))};this.custom=(e,t)=>{let r=this.ensureId(t==null?void 0:t.id),s=typeof e=="function"?e(r):e;return this.create(T(n({},t),{id:r,variant:"custom",jsx:s}))};this.promise=(e,t)=>E(this,null,function*(){var f,i,c;let r=T(n({},t.loading),{id:(f=t.loading.id)!=null?f:R(),variant:"loading"}),s=this.create(r);try{let u=yield e,m=typeof t.success=="function"?t.success(u):t.success;return m?this.update(s,T(n({},m),{id:s,variant:(i=m.variant)!=null?i:"success",removed:!1})):this.remove(s),u}catch(u){let m=typeof t.error=="function"?t.error(u):t.error;throw m?this.update(s,T(n({},m),{id:s,variant:(c=m.variant)!=null?c:"danger",removed:!1})):this.remove(s),u}});this.toasts=[]}emit(){this.listeners.forEach(e=>e())}commit(e){let t=typeof e=="function"?e(this.snapshot()):[...e];this.toasts=t,this.emit()}ensureId(e){return typeof e=="number"&&!Number.isNaN(e)||typeof e=="string"&&e.length>0?e:R()}create(e){var s;let t=this.ensureId(e.id),r=(s=e.dismissible)!=null?s:!0;return this.commit(f=>{let i=f.findIndex(c=>c.id===t);if(i!==-1){let c=[...f];return c[i]=T(n(n({},c[i]),e),{id:t,dismissible:r,removed:!1}),c}return[T(n({},e),{id:t,dismissible:r,removed:!1}),...f]}),t}},d=new v,U=o=>d.add(o),k=Object.assign(U,{success:d.success,danger:d.danger,warn:d.warn,info:d.info,loading:d.loading,dismiss:d.dismiss,custom:d.custom,remove:d.remove,clear:d.clear,promise:d.promise});import{withHeadless as W}from"@primereact/core/headless";import*as l from"react";var b={timeout:6e3,gap:14,position:"bottom-right",group:void 0,limit:3};var X=W({name:"useToast",defaultProps:b,setup:({props:o})=>{let e=l.useSyncExternalStore(d.subscribe,()=>d.snapshot(),()=>d.snapshot()),t=l.useMemo(()=>o.group?e.filter(a=>a.group===o.group):e.filter(a=>!a.group),[e,o.group]),[r,s]=l.useState([]),[f,i]=l.useState(!1),[c,u]=l.useState(!1),m=l.useRef(!1),x={isExpanded:f,isInteracting:c,heights:r},S=()=>{i(!0)},M=()=>{i(!0)},P=()=>{if(!c&&!m.current){if(e.some(a=>a.removed===!0))return;i(!1)}},w=()=>{i(!1)},H=a=>{a.target instanceof HTMLElement&&a.target.dataset.dismissible==="false"||u(!0)},L=()=>{u(!1)},F=a=>{let h=a.currentTarget,p=document.activeElement;p&&p.matches(":focus-visible")&&h.contains(p)&&(m.current=!0,i(!0))},A=a=>{let h=a.currentTarget,p=a.relatedTarget;p&&h.contains(p)||(m.current=!1,!c&&(e.some(g=>g.removed===!0)||i(!1)))},D=a=>{if(!a)return;let h=document.activeElement;if(!a.contains(h))return;let p=a.nextElementSibling,g=a.previousElementSibling;requestAnimationFrame(()=>{p?p.focus({preventScroll:!0}):g&&g.focus({preventScroll:!0})})};return l.useEffect(()=>{t.length<=1&&i(!1)},[t]),l.useEffect(()=>()=>{d.clear(o.group)},[]),{state:x,toasts:t,setHeights:s,onRegionMouseEnter:S,onRegionMouseMove:M,onRegionMouseLeave:P,onRegionDragEnd:w,onRegionPointerDown:H,onRegionPointerUp:L,onRegionFocus:F,onRegionBlur:A,handleFocusManagement:D}}});export{d as ToastStore,b as defaultProps,k as toast,X as useToast};
|
|
2
2
|
//# sourceMappingURL=index.mjs.map
|
package/toast/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/toast/toastStore.ts","../../src/toast/useToast.tsx","../../src/toast/useToast.props.ts"],"sourcesContent":["import type { ToastId, ToastPromiseType, ToastType } from '@primereact/types/shared/toast';\nimport type * as React from 'react';\n\ntype ToastStateAction = ToastType[] | ((prev: ToastType[]) => ToastType[]);\n\nlet toastCounter = 0;\nconst generateId = (): string => `toast-${++toastCounter}-${Date.now()}`;\n\nclass ToastManager {\n private toasts: ToastType[];\n private listeners: Set<() => void>;\n\n constructor() {\n this.toasts = [];\n this.listeners = new Set();\n }\n\n private emit() {\n this.listeners.forEach((listener) => listener());\n }\n\n snapshot = (): ToastType[] => this.toasts;\n\n subscribe(listener: () => void): () => void {\n this.listeners.add(listener);\n\n return () => this.listeners.delete(listener);\n }\n\n private commit(action: ToastStateAction) {\n const nextState = typeof action === 'function' ? (action as (prev: ToastType[]) => ToastType[])(this.snapshot()) : [...action];\n\n this.toasts = nextState;\n this.emit();\n }\n\n private ensureId(id?: ToastId): ToastId {\n if ((typeof id === 'number' && !Number.isNaN(id)) || (typeof id === 'string' && id.length > 0)) {\n return id;\n }\n\n return generateId();\n }\n\n add = (toast: ToastType): ToastId => {\n return this.create(toast);\n };\n\n create(toast: ToastType): ToastId {\n const id = this.ensureId(toast.id);\n const dismissible = toast.dismissible ?? true;\n\n this.commit((prev) => {\n const index = prev.findIndex((t) => t.id === id);\n\n if (index !== -1) {\n const next = [...prev];\n\n next[index] = { ...next[index], ...toast, id, dismissible, removed: false };\n\n return next;\n }\n\n return [{ ...toast, id, dismissible, removed: false }, ...prev];\n });\n\n return id;\n }\n\n update = (id: ToastId, updates: Partial<ToastType>) => {\n this.commit((prev) => prev.map((toast) => (toast.id === id ? { ...toast, ...updates, id } : toast)));\n };\n\n dismiss = (id?: ToastId): ToastId | undefined => {\n if (id === undefined) {\n this.commit((prev) => prev.map((toast) => ({ ...toast, removed: true })));\n\n return undefined;\n }\n\n const exists = this.toasts.some((toast) => toast.id === id);\n\n if (!exists) {\n return undefined;\n }\n\n this.commit((prev) => prev.map((toast) => (toast.id === id ? { ...toast, removed: true } : toast)));\n\n return id;\n };\n\n remove = (id: ToastId): ToastId | undefined => {\n const exists = this.toasts.some((toast) => toast.id === id);\n\n if (!exists) {\n return undefined;\n }\n\n this.commit((prev) => prev.filter((toast) => toast.id !== id));\n\n return id;\n };\n\n clear = () => {\n if (!this.toasts.length) {\n return;\n }\n\n this.commit([]);\n };\n\n get = (id: ToastId): ToastType | undefined => {\n return this.toasts.find((toast) => toast.id === id);\n };\n\n success = (toast: ToastType): ToastId => {\n return this.create({ ...toast, variant: 'success' });\n };\n\n danger = (toast: ToastType): ToastId => {\n return this.create({ ...toast, variant: 'danger' });\n };\n\n warn = (toast: ToastType): ToastId => {\n return this.create({ ...toast, variant: 'warn' });\n };\n\n info = (toast: ToastType): ToastId => {\n return this.create({ ...toast, variant: 'info' });\n };\n\n loading = (toast: ToastType): ToastId => {\n return this.create({ ...toast, variant: 'loading', dismissible: toast.dismissible ?? false });\n };\n\n custom = (jsx: React.ReactElement | ((id: ToastId) => React.ReactElement), options?: Partial<ToastType>): ToastId => {\n const id = this.ensureId(options?.id);\n const element = typeof jsx === 'function' ? jsx(id) : jsx;\n\n return this.create({\n ...options,\n id,\n variant: 'custom',\n jsx: element\n });\n };\n\n promise = async <T>(promise: Promise<T>, options: ToastPromiseType<T>): Promise<T> => {\n const loadingToast: ToastType = {\n ...options.loading,\n id: options.loading.id ?? generateId(),\n variant: 'loading'\n };\n\n const toastId = this.create(loadingToast);\n\n try {\n const data = await promise;\n const successToast = typeof options.success === 'function' ? options.success(data) : options.success;\n\n if (successToast) {\n this.update(toastId, {\n ...successToast,\n id: toastId,\n variant: successToast.variant ?? 'success',\n removed: false\n });\n } else {\n this.remove(toastId);\n }\n\n return data;\n } catch (error) {\n const errorToast = typeof options.error === 'function' ? options.error(error) : options.error;\n\n if (errorToast) {\n this.update(toastId, {\n ...errorToast,\n id: toastId,\n variant: errorToast.variant ?? 'danger',\n removed: false\n });\n } else {\n this.remove(toastId);\n }\n\n throw error;\n }\n };\n}\n\nexport const ToastStore = new ToastManager();\n\nconst baseToast = (toast: ToastType) => ToastStore.add(toast);\n\nexport const toast = Object.assign(baseToast, {\n success: ToastStore.success,\n danger: ToastStore.danger,\n warn: ToastStore.warn,\n info: ToastStore.info,\n loading: ToastStore.loading,\n dismiss: ToastStore.dismiss,\n custom: ToastStore.custom,\n remove: ToastStore.remove,\n promise: ToastStore.promise\n});\n","import { withHeadless } from '@primereact/core/headless';\nimport type { ToastId, ToastType } from '@primereact/types/shared/toast';\nimport * as React from 'react';\nimport { ToastStore } from './toastStore';\nimport { defaultProps } from './useToast.props';\n\nexport const useToast = withHeadless({\n name: 'useToast',\n defaultProps,\n setup: ({ props }) => {\n const toasts = React.useSyncExternalStore(\n (listener) => ToastStore.subscribe(listener),\n () => ToastStore.snapshot(),\n () => ToastStore.snapshot()\n );\n\n const filteredToasts: ToastType[] = React.useMemo(() => {\n if (props.group) {\n return toasts.filter((toast) => toast.group === props.group);\n }\n\n return toasts.filter((toast) => !toast.group);\n }, [toasts, props.group]);\n\n const [heights, setHeights] = React.useState<{ height: number; toastId: ToastId }[]>([]);\n const [isExpanded, setIsExpanded] = React.useState<boolean>(false);\n const [isInteracting, setIsInteracting] = React.useState<boolean>(false);\n\n const focusWithinRef = React.useRef<boolean>(false);\n\n const state = {\n isExpanded,\n isInteracting,\n heights\n };\n\n const onRegionMouseEnter = () => {\n setIsExpanded(true);\n };\n\n const onRegionMouseMove = () => {\n setIsExpanded(true);\n };\n\n const onRegionMouseLeave = () => {\n if (!isInteracting && !focusWithinRef.current) {\n if (toasts.some((t) => t.removed === true)) return;\n\n setIsExpanded(false);\n }\n };\n\n const onRegionDragEnd = () => {\n setIsExpanded(false);\n };\n\n const onRegionPointerDown = (event: React.PointerEvent) => {\n if (event.target instanceof HTMLElement && event.target.dataset.dismissible === 'false') return;\n\n setIsInteracting(true);\n };\n\n const onRegionPointerUp = () => {\n setIsInteracting(false);\n };\n\n const onRegionFocus = (event: React.FocusEvent<HTMLElement>) => {\n const region = event.currentTarget;\n const activeEl = document.activeElement as HTMLElement;\n\n if (activeEl && activeEl.matches(':focus-visible') && region.contains(activeEl)) {\n focusWithinRef.current = true;\n setIsExpanded(true);\n }\n };\n\n const onRegionBlur = (event: React.FocusEvent<HTMLElement>) => {\n const region = event.currentTarget;\n const related = event.relatedTarget as HTMLElement | null;\n\n if (related && region.contains(related)) {\n return;\n }\n\n focusWithinRef.current = false;\n\n if (isInteracting) return;\n\n if (toasts.some((t) => t.removed === true)) return;\n\n setIsExpanded(false);\n };\n\n const handleFocusManagement = (toastEl: HTMLElement | null) => {\n if (!toastEl) return;\n\n const activeEl = document.activeElement as HTMLElement;\n\n if (!toastEl.contains(activeEl)) {\n return;\n }\n\n const nextToastEl = toastEl.nextElementSibling as HTMLElement | null;\n const prevToastEl = toastEl.previousElementSibling as HTMLElement | null;\n\n requestAnimationFrame(() => {\n if (nextToastEl) nextToastEl.focus({ preventScroll: true });\n else if (prevToastEl) prevToastEl.focus({ preventScroll: true });\n });\n };\n\n React.useEffect(() => {\n if (filteredToasts.length <= 1) {\n setIsExpanded(false);\n }\n }, [filteredToasts]);\n\n return {\n state,\n toasts: filteredToasts,\n setHeights,\n onRegionMouseEnter,\n onRegionMouseMove,\n onRegionMouseLeave,\n onRegionDragEnd,\n onRegionPointerDown,\n onRegionPointerUp,\n onRegionFocus,\n onRegionBlur,\n handleFocusManagement\n };\n }\n});\n","import type { useToastProps } from '@primereact/types/shared/toast';\n\nexport const defaultProps: useToastProps = {\n timeout: 6000,\n gap: 14,\n position: 'bottom-right',\n group: undefined,\n limit: 3\n};\n"],"mappings":"0nBAKA,IAAIA,EAAe,EACbC,EAAa,IAAc,SAAS,EAAED,CAAY,IAAI,KAAK,IAAI,CAAC,GAEhEE,EAAN,KAAmB,CAIf,aAAc,CASd,cAAW,IAAmB,KAAK,OAuBnC,SAAOC,GACI,KAAK,OAAOA,CAAK,EAwB5B,YAAS,CAACC,EAAaC,IAAgC,CACnD,KAAK,OAAQC,GAASA,EAAK,IAAKH,GAAWA,EAAM,KAAOC,EAAKG,EAAAC,IAAA,GAAKL,GAAUE,GAAf,CAAwB,GAAAD,CAAG,GAAID,CAAM,CAAC,CACvG,EAEA,aAAWC,GAAsC,CAC7C,GAAIA,IAAO,OAAW,CAClB,KAAK,OAAQE,GAASA,EAAK,IAAKH,GAAWI,EAAAC,EAAA,GAAKL,GAAL,CAAY,QAAS,EAAK,EAAE,CAAC,EAExE,MACJ,CAIA,GAFe,KAAK,OAAO,KAAMA,GAAUA,EAAM,KAAOC,CAAE,EAM1D,YAAK,OAAQE,GAASA,EAAK,IAAKH,GAAWA,EAAM,KAAOC,EAAKG,EAAAC,EAAA,GAAKL,GAAL,CAAY,QAAS,EAAK,GAAIA,CAAM,CAAC,EAE3FC,CACX,EAEA,YAAUA,GAAqC,CAG3C,GAFe,KAAK,OAAO,KAAMD,GAAUA,EAAM,KAAOC,CAAE,EAM1D,YAAK,OAAQE,GAASA,EAAK,OAAQH,GAAUA,EAAM,KAAOC,CAAE,CAAC,EAEtDA,CACX,EAEA,WAAQ,IAAM,CACL,KAAK,OAAO,QAIjB,KAAK,OAAO,CAAC,CAAC,CAClB,EAEA,SAAOA,GACI,KAAK,OAAO,KAAMD,GAAUA,EAAM,KAAOC,CAAE,EAGtD,aAAWD,GACA,KAAK,OAAOI,EAAAC,EAAA,GAAKL,GAAL,CAAY,QAAS,SAAU,EAAC,EAGvD,YAAUA,GACC,KAAK,OAAOI,EAAAC,EAAA,GAAKL,GAAL,CAAY,QAAS,QAAS,EAAC,EAGtD,UAAQA,GACG,KAAK,OAAOI,EAAAC,EAAA,GAAKL,GAAL,CAAY,QAAS,MAAO,EAAC,EAGpD,UAAQA,GACG,KAAK,OAAOI,EAAAC,EAAA,GAAKL,GAAL,CAAY,QAAS,MAAO,EAAC,EAGpD,aAAWA,GAA8B,CAnI7C,IAAAM,EAoIQ,OAAO,KAAK,OAAOF,EAAAC,EAAA,GAAKL,GAAL,CAAY,QAAS,UAAW,aAAaM,EAAAN,EAAM,cAAN,KAAAM,EAAqB,EAAM,EAAC,CAChG,EAEA,YAAS,CAACC,EAAiEC,IAA0C,CACjH,IAAMP,EAAK,KAAK,SAASO,GAAA,YAAAA,EAAS,EAAE,EAC9BC,EAAU,OAAOF,GAAQ,WAAaA,EAAIN,CAAE,EAAIM,EAEtD,OAAO,KAAK,OAAOH,EAAAC,EAAA,GACZG,GADY,CAEf,GAAAP,EACA,QAAS,SACT,IAAKQ,CACT,EAAC,CACL,EAEA,aAAU,CAAUC,EAAqBF,IAA6CG,EAAA,sBAnJ1F,IAAAL,EAAAM,EAAAC,EAoJQ,IAAMC,EAA0BV,EAAAC,EAAA,GACzBG,EAAQ,SADiB,CAE5B,IAAIF,EAAAE,EAAQ,QAAQ,KAAhB,KAAAF,EAAsBR,EAAW,EACrC,QAAS,SACb,GAEMiB,EAAU,KAAK,OAAOD,CAAY,EAExC,GAAI,CACA,IAAME,EAAO,MAAMN,EACbO,EAAe,OAAOT,EAAQ,SAAY,WAAaA,EAAQ,QAAQQ,CAAI,EAAIR,EAAQ,QAE7F,OAAIS,EACA,KAAK,OAAOF,EAASX,EAAAC,EAAA,GACdY,GADc,CAEjB,GAAIF,EACJ,SAASH,EAAAK,EAAa,UAAb,KAAAL,EAAwB,UACjC,QAAS,EACb,EAAC,EAED,KAAK,OAAOG,CAAO,EAGhBC,CACX,OAASE,EAAO,CACZ,IAAMC,EAAa,OAAOX,EAAQ,OAAU,WAAaA,EAAQ,MAAMU,CAAK,EAAIV,EAAQ,MAExF,MAAIW,EACA,KAAK,OAAOJ,EAASX,EAAAC,EAAA,GACdc,GADc,CAEjB,GAAIJ,EACJ,SAASF,EAAAM,EAAW,UAAX,KAAAN,EAAsB,SAC/B,QAAS,EACb,EAAC,EAED,KAAK,OAAOE,CAAO,EAGjBG,CACV,CACJ,GA/KI,KAAK,OAAS,CAAC,EACf,KAAK,UAAY,IAAI,GACzB,CAEQ,MAAO,CACX,KAAK,UAAU,QAASE,GAAaA,EAAS,CAAC,CACnD,CAIA,UAAUA,EAAkC,CACxC,YAAK,UAAU,IAAIA,CAAQ,EAEpB,IAAM,KAAK,UAAU,OAAOA,CAAQ,CAC/C,CAEQ,OAAOC,EAA0B,CACrC,IAAMC,EAAY,OAAOD,GAAW,WAAcA,EAA8C,KAAK,SAAS,CAAC,EAAI,CAAC,GAAGA,CAAM,EAE7H,KAAK,OAASC,EACd,KAAK,KAAK,CACd,CAEQ,SAASrB,EAAuB,CACpC,OAAK,OAAOA,GAAO,UAAY,CAAC,OAAO,MAAMA,CAAE,GAAO,OAAOA,GAAO,UAAYA,EAAG,OAAS,EACjFA,EAGJH,EAAW,CACtB,CAMA,OAAOE,EAA2B,CAhDtC,IAAAM,EAiDQ,IAAML,EAAK,KAAK,SAASD,EAAM,EAAE,EAC3BuB,GAAcjB,EAAAN,EAAM,cAAN,KAAAM,EAAqB,GAEzC,YAAK,OAAQH,GAAS,CAClB,IAAMqB,EAAQrB,EAAK,UAAWsB,GAAMA,EAAE,KAAOxB,CAAE,EAE/C,GAAIuB,IAAU,GAAI,CACd,IAAME,EAAO,CAAC,GAAGvB,CAAI,EAErB,OAAAuB,EAAKF,CAAK,EAAIpB,EAAAC,IAAA,GAAKqB,EAAKF,CAAK,GAAMxB,GAArB,CAA4B,GAAAC,EAAI,YAAAsB,EAAa,QAAS,EAAM,GAEnEG,CACX,CAEA,MAAO,CAACtB,EAAAC,EAAA,GAAKL,GAAL,CAAY,GAAAC,EAAI,YAAAsB,EAAa,QAAS,EAAM,GAAG,GAAGpB,CAAI,CAClE,CAAC,EAEMF,CACX,CA0HJ,EAEa0B,EAAa,IAAI5B,EAExB6B,EAAa5B,GAAqB2B,EAAW,IAAI3B,CAAK,EAE/CA,EAAQ,OAAO,OAAO4B,EAAW,CAC1C,QAASD,EAAW,QACpB,OAAQA,EAAW,OACnB,KAAMA,EAAW,KACjB,KAAMA,EAAW,KACjB,QAASA,EAAW,QACpB,QAASA,EAAW,QACpB,OAAQA,EAAW,OACnB,OAAQA,EAAW,OACnB,QAASA,EAAW,OACxB,CAAC,EC7MD,OAAS,gBAAAE,MAAoB,4BAE7B,UAAYC,MAAW,QCAhB,IAAMC,EAA8B,CACvC,QAAS,IACT,IAAK,GACL,SAAU,eACV,MAAO,OACP,MAAO,CACX,EDFO,IAAMC,EAAWC,EAAa,CACjC,KAAM,WACN,aAAAC,EACA,MAAO,CAAC,CAAE,MAAAC,CAAM,IAAM,CAClB,IAAMC,EAAe,uBAChBC,GAAaC,EAAW,UAAUD,CAAQ,EAC3C,IAAMC,EAAW,SAAS,EAC1B,IAAMA,EAAW,SAAS,CAC9B,EAEMC,EAAoC,UAAQ,IAC1CJ,EAAM,MACCC,EAAO,OAAQI,GAAUA,EAAM,QAAUL,EAAM,KAAK,EAGxDC,EAAO,OAAQI,GAAU,CAACA,EAAM,KAAK,EAC7C,CAACJ,EAAQD,EAAM,KAAK,CAAC,EAElB,CAACM,EAASC,CAAU,EAAU,WAAiD,CAAC,CAAC,EACjF,CAACC,EAAYC,CAAa,EAAU,WAAkB,EAAK,EAC3D,CAACC,EAAeC,CAAgB,EAAU,WAAkB,EAAK,EAEjEC,EAAuB,SAAgB,EAAK,EAE5CC,EAAQ,CACV,WAAAL,EACA,cAAAE,EACA,QAAAJ,CACJ,EAEMQ,EAAqB,IAAM,CAC7BL,EAAc,EAAI,CACtB,EAEMM,EAAoB,IAAM,CAC5BN,EAAc,EAAI,CACtB,EAEMO,EAAqB,IAAM,CAC7B,GAAI,CAACN,GAAiB,CAACE,EAAe,QAAS,CAC3C,GAAIX,EAAO,KAAMgB,GAAMA,EAAE,UAAY,EAAI,EAAG,OAE5CR,EAAc,EAAK,CACvB,CACJ,EAEMS,EAAkB,IAAM,CAC1BT,EAAc,EAAK,CACvB,EAEMU,EAAuBC,GAA8B,CACnDA,EAAM,kBAAkB,aAAeA,EAAM,OAAO,QAAQ,cAAgB,SAEhFT,EAAiB,EAAI,CACzB,EAEMU,EAAoB,IAAM,CAC5BV,EAAiB,EAAK,CAC1B,EAEMW,EAAiBF,GAAyC,CAC5D,IAAMG,EAASH,EAAM,cACfI,EAAW,SAAS,cAEtBA,GAAYA,EAAS,QAAQ,gBAAgB,GAAKD,EAAO,SAASC,CAAQ,IAC1EZ,EAAe,QAAU,GACzBH,EAAc,EAAI,EAE1B,EAEMgB,EAAgBL,GAAyC,CAC3D,IAAMG,EAASH,EAAM,cACfM,EAAUN,EAAM,cAElBM,GAAWH,EAAO,SAASG,CAAO,IAItCd,EAAe,QAAU,GAErB,CAAAF,IAEAT,EAAO,KAAMgB,GAAMA,EAAE,UAAY,EAAI,GAEzCR,EAAc,EAAK,GACvB,EAEMkB,EAAyBC,GAAgC,CAC3D,GAAI,CAACA,EAAS,OAEd,IAAMJ,EAAW,SAAS,cAE1B,GAAI,CAACI,EAAQ,SAASJ,CAAQ,EAC1B,OAGJ,IAAMK,EAAcD,EAAQ,mBACtBE,EAAcF,EAAQ,uBAE5B,sBAAsB,IAAM,CACpBC,EAAaA,EAAY,MAAM,CAAE,cAAe,EAAK,CAAC,EACjDC,GAAaA,EAAY,MAAM,CAAE,cAAe,EAAK,CAAC,CACnE,CAAC,CACL,EAEA,OAAM,YAAU,IAAM,CACd1B,EAAe,QAAU,GACzBK,EAAc,EAAK,CAE3B,EAAG,CAACL,CAAc,CAAC,EAEZ,CACH,MAAAS,EACA,OAAQT,EACR,WAAAG,EACA,mBAAAO,EACA,kBAAAC,EACA,mBAAAC,EACA,gBAAAE,EACA,oBAAAC,EACA,kBAAAE,EACA,cAAAC,EACA,aAAAG,EACA,sBAAAE,CACJ,CACJ,CACJ,CAAC","names":["toastCounter","generateId","ToastManager","toast","id","updates","prev","__spreadProps","__spreadValues","_a","jsx","options","element","promise","__async","_b","_c","loadingToast","toastId","data","successToast","error","errorToast","listener","action","nextState","dismissible","index","t","next","ToastStore","baseToast","withHeadless","React","defaultProps","useToast","withHeadless","defaultProps","props","toasts","listener","ToastStore","filteredToasts","toast","heights","setHeights","isExpanded","setIsExpanded","isInteracting","setIsInteracting","focusWithinRef","state","onRegionMouseEnter","onRegionMouseMove","onRegionMouseLeave","t","onRegionDragEnd","onRegionPointerDown","event","onRegionPointerUp","onRegionFocus","region","activeEl","onRegionBlur","related","handleFocusManagement","toastEl","nextToastEl","prevToastEl"]}
|
|
1
|
+
{"version":3,"sources":["../../src/toast/toastStore.ts","../../src/toast/useToast.tsx","../../src/toast/useToast.props.ts"],"sourcesContent":["import type { ToastId, ToastPromiseType, ToastType } from '@primereact/types/shared/toast';\nimport type * as React from 'react';\n\ntype ToastStateAction = ToastType[] | ((prev: ToastType[]) => ToastType[]);\n\nlet toastCounter = 0;\nconst generateId = (): string => `toast-${++toastCounter}-${Date.now()}`;\n\nclass ToastManager {\n private toasts: ToastType[];\n private listeners: Set<() => void> = new Set();\n\n constructor() {\n this.toasts = [];\n }\n\n private emit() {\n this.listeners.forEach((listener) => listener());\n }\n\n snapshot = (): ToastType[] => this.toasts;\n\n subscribe = (listener: () => void): (() => void) => {\n this.listeners.add(listener);\n\n return () => {\n this.listeners.delete(listener);\n };\n };\n\n private commit(action: ToastStateAction) {\n const nextState = typeof action === 'function' ? (action as (prev: ToastType[]) => ToastType[])(this.snapshot()) : [...action];\n\n this.toasts = nextState;\n this.emit();\n }\n\n private ensureId(id?: ToastId): ToastId {\n if ((typeof id === 'number' && !Number.isNaN(id)) || (typeof id === 'string' && id.length > 0)) {\n return id;\n }\n\n return generateId();\n }\n\n add = (toast: ToastType): ToastId => {\n return this.create(toast);\n };\n\n create(toast: ToastType): ToastId {\n const id = this.ensureId(toast.id);\n const dismissible = toast.dismissible ?? true;\n\n this.commit((prev) => {\n const index = prev.findIndex((t) => t.id === id);\n\n if (index !== -1) {\n const next = [...prev];\n\n next[index] = { ...next[index], ...toast, id, dismissible, removed: false };\n\n return next;\n }\n\n return [{ ...toast, id, dismissible, removed: false }, ...prev];\n });\n\n return id;\n }\n\n update = (id: ToastId, updates: Partial<ToastType>) => {\n this.commit((prev) => prev.map((toast) => (toast.id === id ? { ...toast, ...updates, id } : toast)));\n };\n\n dismiss = (id?: ToastId): ToastId | undefined => {\n if (id === undefined) {\n this.commit((prev) => prev.map((toast) => ({ ...toast, removed: true })));\n\n return undefined;\n }\n\n const exists = this.toasts.some((toast) => toast.id === id);\n\n if (!exists) {\n return undefined;\n }\n\n this.commit((prev) => prev.map((toast) => (toast.id === id ? { ...toast, removed: true } : toast)));\n\n return id;\n };\n\n remove = (id: ToastId): ToastId | undefined => {\n const exists = this.toasts.some((toast) => toast.id === id);\n\n if (!exists) {\n return undefined;\n }\n\n this.commit((prev) => prev.filter((toast) => toast.id !== id));\n\n return id;\n };\n\n clear = (group?: string) => {\n if (!this.toasts.length) {\n return;\n }\n\n if (group) {\n this.commit((prev) => prev.filter((toast) => toast.group !== group));\n\n return;\n }\n\n this.commit([]);\n };\n\n get = (id: ToastId): ToastType | undefined => {\n return this.toasts.find((toast) => toast.id === id);\n };\n\n success = (toast: ToastType): ToastId => {\n return this.create({ ...toast, variant: 'success' });\n };\n\n danger = (toast: ToastType): ToastId => {\n return this.create({ ...toast, variant: 'danger' });\n };\n\n warn = (toast: ToastType): ToastId => {\n return this.create({ ...toast, variant: 'warn' });\n };\n\n info = (toast: ToastType): ToastId => {\n return this.create({ ...toast, variant: 'info' });\n };\n\n loading = (toast: ToastType): ToastId => {\n return this.create({ ...toast, variant: 'loading', dismissible: toast.dismissible ?? false });\n };\n\n custom = (jsx: React.ReactElement | ((id: ToastId) => React.ReactElement), options?: Partial<ToastType>): ToastId => {\n const id = this.ensureId(options?.id);\n const element = typeof jsx === 'function' ? jsx(id) : jsx;\n\n return this.create({\n ...options,\n id,\n variant: 'custom',\n jsx: element\n });\n };\n\n promise = async <T>(promise: Promise<T>, options: ToastPromiseType<T>): Promise<T> => {\n const loadingToast: ToastType = {\n ...options.loading,\n id: options.loading.id ?? generateId(),\n variant: 'loading'\n };\n\n const toastId = this.create(loadingToast);\n\n try {\n const data = await promise;\n const successToast = typeof options.success === 'function' ? options.success(data) : options.success;\n\n if (successToast) {\n this.update(toastId, {\n ...successToast,\n id: toastId,\n variant: successToast.variant ?? 'success',\n removed: false\n });\n } else {\n this.remove(toastId);\n }\n\n return data;\n } catch (error) {\n const errorToast = typeof options.error === 'function' ? options.error(error) : options.error;\n\n if (errorToast) {\n this.update(toastId, {\n ...errorToast,\n id: toastId,\n variant: errorToast.variant ?? 'danger',\n removed: false\n });\n } else {\n this.remove(toastId);\n }\n\n throw error;\n }\n };\n}\n\nexport const ToastStore = new ToastManager();\n\nconst baseToast = (toast: ToastType) => ToastStore.add(toast);\n\nexport const toast = Object.assign(baseToast, {\n success: ToastStore.success,\n danger: ToastStore.danger,\n warn: ToastStore.warn,\n info: ToastStore.info,\n loading: ToastStore.loading,\n dismiss: ToastStore.dismiss,\n custom: ToastStore.custom,\n remove: ToastStore.remove,\n clear: ToastStore.clear,\n promise: ToastStore.promise\n});\n","import { withHeadless } from '@primereact/core/headless';\nimport type { ToastId, ToastType } from '@primereact/types/shared/toast';\nimport * as React from 'react';\nimport { ToastStore } from './toastStore';\nimport { defaultProps } from './useToast.props';\n\nexport const useToast = withHeadless({\n name: 'useToast',\n defaultProps,\n setup: ({ props }) => {\n const toasts = React.useSyncExternalStore(\n ToastStore.subscribe,\n () => ToastStore.snapshot(),\n () => ToastStore.snapshot()\n );\n\n const filteredToasts: ToastType[] = React.useMemo(() => {\n if (props.group) {\n return toasts.filter((toast) => toast.group === props.group);\n }\n\n return toasts.filter((toast) => !toast.group);\n }, [toasts, props.group]);\n\n const [heights, setHeights] = React.useState<{ height: number; toastId: ToastId }[]>([]);\n const [isExpanded, setIsExpanded] = React.useState<boolean>(false);\n const [isInteracting, setIsInteracting] = React.useState<boolean>(false);\n\n const focusWithinRef = React.useRef<boolean>(false);\n\n const state = {\n isExpanded,\n isInteracting,\n heights\n };\n\n const onRegionMouseEnter = () => {\n setIsExpanded(true);\n };\n\n const onRegionMouseMove = () => {\n setIsExpanded(true);\n };\n\n const onRegionMouseLeave = () => {\n if (!isInteracting && !focusWithinRef.current) {\n if (toasts.some((t) => t.removed === true)) return;\n\n setIsExpanded(false);\n }\n };\n\n const onRegionDragEnd = () => {\n setIsExpanded(false);\n };\n\n const onRegionPointerDown = (event: React.PointerEvent) => {\n if (event.target instanceof HTMLElement && event.target.dataset.dismissible === 'false') return;\n\n setIsInteracting(true);\n };\n\n const onRegionPointerUp = () => {\n setIsInteracting(false);\n };\n\n const onRegionFocus = (event: React.FocusEvent<HTMLElement>) => {\n const region = event.currentTarget;\n const activeEl = document.activeElement as HTMLElement;\n\n if (activeEl && activeEl.matches(':focus-visible') && region.contains(activeEl)) {\n focusWithinRef.current = true;\n setIsExpanded(true);\n }\n };\n\n const onRegionBlur = (event: React.FocusEvent<HTMLElement>) => {\n const region = event.currentTarget;\n const related = event.relatedTarget as HTMLElement | null;\n\n if (related && region.contains(related)) {\n return;\n }\n\n focusWithinRef.current = false;\n\n if (isInteracting) return;\n\n if (toasts.some((t) => t.removed === true)) return;\n\n setIsExpanded(false);\n };\n\n const handleFocusManagement = (toastEl: HTMLElement | null) => {\n if (!toastEl) return;\n\n const activeEl = document.activeElement as HTMLElement;\n\n if (!toastEl.contains(activeEl)) {\n return;\n }\n\n const nextToastEl = toastEl.nextElementSibling as HTMLElement | null;\n const prevToastEl = toastEl.previousElementSibling as HTMLElement | null;\n\n requestAnimationFrame(() => {\n if (nextToastEl) nextToastEl.focus({ preventScroll: true });\n else if (prevToastEl) prevToastEl.focus({ preventScroll: true });\n });\n };\n\n React.useEffect(() => {\n if (filteredToasts.length <= 1) {\n setIsExpanded(false);\n }\n }, [filteredToasts]);\n\n React.useEffect(() => {\n return () => {\n ToastStore.clear(props.group);\n };\n }, []);\n\n return {\n state,\n toasts: filteredToasts,\n setHeights,\n onRegionMouseEnter,\n onRegionMouseMove,\n onRegionMouseLeave,\n onRegionDragEnd,\n onRegionPointerDown,\n onRegionPointerUp,\n onRegionFocus,\n onRegionBlur,\n handleFocusManagement\n };\n }\n});\n","import type { useToastProps } from '@primereact/types/shared/toast';\n\nexport const defaultProps: useToastProps = {\n timeout: 6000,\n gap: 14,\n position: 'bottom-right',\n group: undefined,\n limit: 3\n};\n"],"mappings":"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","names":["toastCounter","generateId","ToastManager","listener","toast","id","updates","prev","__spreadProps","__spreadValues","group","_a","jsx","options","element","promise","__async","_b","_c","loadingToast","toastId","data","successToast","error","errorToast","action","nextState","dismissible","index","t","next","ToastStore","baseToast","withHeadless","React","defaultProps","useToast","withHeadless","defaultProps","props","toasts","ToastStore","filteredToasts","toast","heights","setHeights","isExpanded","setIsExpanded","isInteracting","setIsInteracting","focusWithinRef","state","onRegionMouseEnter","onRegionMouseMove","onRegionMouseLeave","t","onRegionDragEnd","onRegionPointerDown","event","onRegionPointerUp","onRegionFocus","region","activeEl","onRegionBlur","related","handleFocusManagement","toastEl","nextToastEl","prevToastEl"]}
|