@primereact/headless 11.0.0-alpha.6 → 11.0.0-alpha.8

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.
Files changed (88) hide show
  1. package/colorpicker/colorManager.d.ts +101 -0
  2. package/colorpicker/index.d.ts +3 -0
  3. package/colorpicker/index.mjs +2 -0
  4. package/colorpicker/index.mjs.map +1 -0
  5. package/colorpicker/input/index.d.ts +2 -0
  6. package/colorpicker/input/index.mjs +2 -0
  7. package/colorpicker/input/index.mjs.map +1 -0
  8. package/colorpicker/input/useColorPickerInput.d.ts +11 -0
  9. package/colorpicker/input/useColorPickerInput.props.d.ts +2 -0
  10. package/colorpicker/input/useColorPickerInput.test.d.ts +0 -0
  11. package/colorpicker/slider/index.d.ts +2 -0
  12. package/colorpicker/slider/index.mjs +2 -0
  13. package/colorpicker/slider/index.mjs.map +1 -0
  14. package/colorpicker/slider/useColorPickerSlider.d.ts +13 -0
  15. package/colorpicker/slider/useColorPickerSlider.props.d.ts +2 -0
  16. package/colorpicker/slider/useColorPickerSlider.test.d.ts +0 -0
  17. package/colorpicker/useColorPicker.d.ts +26 -0
  18. package/colorpicker/useColorPicker.props.d.ts +2 -0
  19. package/colorpicker/useColorPicker.test.d.ts +0 -0
  20. package/dataview/index.d.ts +2 -0
  21. package/dataview/index.mjs +2 -0
  22. package/dataview/index.mjs.map +1 -0
  23. package/dataview/useDataView.d.ts +3 -0
  24. package/dataview/useDataView.props.d.ts +2 -0
  25. package/dataview/useDataView.test.d.ts +0 -0
  26. package/datepicker/index.d.ts +2 -0
  27. package/datepicker/index.mjs +2 -0
  28. package/datepicker/index.mjs.map +1 -0
  29. package/datepicker/useDatePicker.d.ts +114 -0
  30. package/datepicker/useDatePicker.props.d.ts +2 -0
  31. package/datepicker/useDatePicker.test.d.ts +0 -0
  32. package/fileupload/index.d.ts +2 -0
  33. package/fileupload/index.mjs +2 -0
  34. package/fileupload/index.mjs.map +1 -0
  35. package/fileupload/useFileUpload.d.ts +26 -0
  36. package/fileupload/useFileUpload.props.d.ts +2 -0
  37. package/fileupload/useFileUpload.test.d.ts +0 -0
  38. package/gallery/index.d.ts +2 -0
  39. package/gallery/index.mjs +2 -0
  40. package/gallery/index.mjs.map +1 -0
  41. package/gallery/item/index.d.ts +2 -0
  42. package/gallery/item/index.mjs +2 -0
  43. package/gallery/item/index.mjs.map +1 -0
  44. package/gallery/item/useGalleryItem.d.ts +45 -0
  45. package/gallery/item/useGalleryItem.props.d.ts +2 -0
  46. package/gallery/useGallery.d.ts +31 -0
  47. package/gallery/useGallery.props.d.ts +2 -0
  48. package/gallery/useGallery.test.d.ts +0 -0
  49. package/listbox/index.d.ts +2 -0
  50. package/listbox/index.mjs +2 -0
  51. package/listbox/index.mjs.map +1 -0
  52. package/listbox/useListbox.d.ts +45 -0
  53. package/listbox/useListbox.props.d.ts +2 -0
  54. package/listbox/useListbox.test.d.ts +0 -0
  55. package/orgchart/index.d.ts +2 -0
  56. package/orgchart/index.mjs +2 -0
  57. package/orgchart/index.mjs.map +1 -0
  58. package/orgchart/useOrgChart.d.ts +20 -0
  59. package/orgchart/useOrgChart.props.d.ts +2 -0
  60. package/orgchart/useOrgChart.test.d.ts +0 -0
  61. package/overlay/index.d.ts +2 -0
  62. package/overlay/index.mjs +2 -0
  63. package/overlay/index.mjs.map +1 -0
  64. package/overlay/useOverlay.d.ts +16 -0
  65. package/overlay/useOverlay.props.d.ts +2 -0
  66. package/overlay/useOverlay.test.d.ts +0 -0
  67. package/package.json +4 -4
  68. package/password/index.d.ts +2 -0
  69. package/password/index.mjs +2 -0
  70. package/password/index.mjs.map +1 -0
  71. package/password/usePassword.d.ts +35 -0
  72. package/password/usePassword.props.d.ts +2 -0
  73. package/password/usePassword.test.d.ts +0 -0
  74. package/speeddial/index.mjs +1 -1
  75. package/speeddial/index.mjs.map +1 -1
  76. package/speeddial/useSpeedDial.d.ts +2 -1
  77. package/toast/index.d.ts +1 -0
  78. package/toast/index.mjs +1 -1
  79. package/toast/index.mjs.map +1 -1
  80. package/toast/item/index.css +1 -1
  81. package/toast/item/index.css.map +1 -1
  82. package/toast/item/index.mjs +1 -1
  83. package/toast/item/index.mjs.map +1 -1
  84. package/toast/item/useToastItem.d.ts +11 -7
  85. package/toast/toastStore.d.ts +39 -0
  86. package/toast/useToast.d.ts +12 -4
  87. package/toast/index.css +0 -2
  88. package/toast/index.css.map +0 -1
@@ -0,0 +1,2 @@
1
+ import type { useListboxProps } from '@primereact/types/shared/listbox';
2
+ export declare const defaultProps: useListboxProps;
File without changes
@@ -0,0 +1,2 @@
1
+ export * from './useOrgChart';
2
+ export * from './useOrgChart.props';
@@ -0,0 +1,2 @@
1
+ import{withHeadless as P}from"@primereact/core/headless";import*as s from"react";var N={value:void 0,gap:40,selectable:!0,collapsible:!1,selectionMode:"single"};var H=P({name:"useOrgChart",defaultProps:N,setup({props:a}){let[f,d]=s.useState(()=>new Set),[g,h]=s.useState(()=>new Set),w=s.useMemo(()=>Array.from(f),[f]),M=s.useMemo(()=>Array.from(g),[g]),u=s.useRef(!1),b=s.useRef(new Set),S=s.useRef(new Set),k={selectedNodes:w,collapsedNodes:M},C=s.useCallback(e=>{e&&d(l=>{let t=new Set(l);return t.has(e)?a.selectionMode==="single"?t.clear():t.delete(e):(a.selectionMode==="single"&&t.clear(),t.add(e)),t})},[a.selectionMode]),R=s.useCallback(e=>{e&&h(l=>{let t=new Set(l);return t.has(e)?t.delete(e):t.add(e),t})},[]),E=s.useCallback((e,l)=>{(e.key==="Enter"||e.key===" ")&&(C(l),e.preventDefault(),e.stopPropagation())},[C]),T=s.useCallback((e,l)=>{(e.key==="Enter"||e.key===" ")&&(R(l),e.preventDefault(),e.stopPropagation())},[R]),z=s.useMemo(()=>{var l;let e=(l=a.gap)!=null?l:40;return Array.isArray(e)?e.length===1?e=[e[0],e[0]]:e.length===0&&(e=[40,40]):e=[e,e],{"--gap-x":e[0],"--gap-y":e[1]}},[a.gap]),y=s.useCallback(e=>e.reduce((l,t)=>(l.push(t),t.children&&t.children.length>0&&l.push(...y(t.children)),l),[]),[]),c=s.useMemo(()=>{if(!a.value||a.value.length===0)return new Map;let e=y(a.value),l=new Map;return e.forEach(t=>{l.set(t.key,t)}),l},[a.value,y]);s.useMemo(()=>{if(u.current||c.size===0)return;let e=new Set,l=new Set;c.forEach(t=>{var r,n;if(t.collapsedByDefault){let i=(n=(r=t.collapsible)!=null?r:a.collapsible)!=null?n:!1,o=t.children&&t.children.length>0;i&&o&&e.add(t.key)}}),c.forEach(t=>{var r,n;if(t.selectedByDefault&&((n=(r=t.selectable)!=null?r:a.selectable)!=null?n:!0)){if(a.selectionMode==="single"&&l.size>0)return;l.add(t.key)}}),S.current=e,b.current=l},[c,a.collapsible,a.selectable,a.selectionMode]);let m=s.useCallback(e=>{var t,r;return e?!!(((r=(t=e.collapsible)!=null?t:a.collapsible)!=null?r:!1)&&e.children&&e.children.length>0):!1},[a.collapsible]),K=s.useCallback(e=>{var l,t;return e?!!((t=(l=e.selectable)!=null?l:a.selectable)!=null&&t):!1},[a.selectable]),p=s.useCallback(e=>!e||!e.key||!m(e)?!1:!!(g.has(e.key)||!u.current&&S.current.has(e.key)),[g,m]),x=s.useCallback(e=>!e||!e.key?!1:!!(f.has(e.key)||!u.current&&b.current.has(e.key)),[f]);return s.useEffect(()=>{if(c.size===0){h(e=>e.size>0?new Set:e),d(e=>e.size>0?new Set:e);return}if(!u.current){u.current=!0;let e=S.current,l=b.current;e.size>0&&h(new Set(e)),l.size>0&&d(new Set(l));return}h(e=>{if(e.size===0)return e;let l=new Set,t=!1;return e.forEach(r=>{var i,o;let n=c.get(r);n&&((o=(i=n.collapsible)!=null?i:a.collapsible)!=null?o:!1)&&n.children&&n.children.length>0?l.add(r):t=!0}),t?l:e}),d(e=>{if(e.size===0)return e;let l=new Set,t=!1;return e.forEach(r=>{var i,o;let n=c.get(r);n&&((o=(i=n.selectable)!=null?i:a.selectable)!=null?o:!0)?l.add(r):t=!0}),t?l:e})},[c,a.collapsible,a.selectable]),{state:k,orgChartStyle:z,toggleNodeSelect:C,toggleNodeCollapse:R,isCollapsible:m,isSelectable:K,isCollapsed:p,isSelected:x,handleNodeKeyDown:E,handleCollapseKeyDown:T}}});export{N as defaultProps,H as useOrgChart};
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/orgchart/useOrgChart.ts","../../src/orgchart/useOrgChart.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { TreeNode } from '@primereact/types/shared/orgchart';\nimport * as React from 'react';\nimport { defaultProps } from './useOrgChart.props';\n\nexport const useOrgChart = withHeadless({\n name: 'useOrgChart',\n defaultProps,\n setup({ props }) {\n const [selectedNodesSet, setSelectedNodesSet] = React.useState<Set<string>>(() => new Set());\n const [collapsedNodesSet, setCollapsedNodesSet] = React.useState<Set<string>>(() => new Set());\n\n const selectedNodes = React.useMemo(() => Array.from(selectedNodesSet), [selectedNodesSet]);\n const collapsedNodes = React.useMemo(() => Array.from(collapsedNodesSet), [collapsedNodesSet]);\n\n const isInitialized = React.useRef(false);\n const initialSelectedKeysRef = React.useRef<Set<string>>(new Set());\n const initialCollapsedKeysRef = React.useRef<Set<string>>(new Set());\n\n const state = {\n selectedNodes,\n collapsedNodes\n };\n\n const toggleNodeSelect = React.useCallback(\n (key?: string) => {\n if (!key) return;\n\n setSelectedNodesSet((prev) => {\n const next = new Set(prev);\n\n if (next.has(key)) {\n if (props.selectionMode === 'single') {\n next.clear();\n } else {\n next.delete(key);\n }\n } else {\n if (props.selectionMode === 'single') {\n next.clear();\n }\n\n next.add(key);\n }\n\n return next;\n });\n },\n [props.selectionMode]\n );\n\n const toggleNodeCollapse = React.useCallback((key?: string) => {\n if (!key) return;\n\n setCollapsedNodesSet((prev) => {\n const next = new Set(prev);\n\n if (next.has(key)) {\n next.delete(key);\n } else {\n next.add(key);\n }\n\n return next;\n });\n }, []);\n\n const handleNodeKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>, key?: string) => {\n if (event.key === 'Enter' || event.key === ' ') {\n toggleNodeSelect(key);\n\n event.preventDefault();\n event.stopPropagation();\n }\n },\n [toggleNodeSelect]\n );\n\n const handleCollapseKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLButtonElement>, key?: string) => {\n if (event.key === 'Enter' || event.key === ' ') {\n toggleNodeCollapse(key);\n\n event.preventDefault();\n event.stopPropagation();\n }\n },\n [toggleNodeCollapse]\n );\n\n const orgChartStyle = React.useMemo(() => {\n let gap = props.gap ?? 40;\n\n if (!Array.isArray(gap)) {\n gap = [gap, gap];\n } else if (gap.length === 1) {\n gap = [gap[0], gap[0]];\n } else if (gap.length === 0) {\n gap = [40, 40];\n }\n\n return {\n '--gap-x': gap[0],\n '--gap-y': gap[1]\n };\n }, [props.gap]);\n\n const flattenNodes = React.useCallback((nodes: TreeNode[]): TreeNode[] => {\n return nodes.reduce((acc, node) => {\n acc.push(node);\n\n if (node.children && node.children.length > 0) {\n acc.push(...flattenNodes(node.children));\n }\n\n return acc;\n }, [] as TreeNode[]);\n }, []);\n\n const nodeMap = React.useMemo(() => {\n if (!props.value || props.value.length === 0) return new Map<string, TreeNode>();\n\n const allNodes = flattenNodes(props.value);\n const map = new Map<string, TreeNode>();\n\n allNodes.forEach((node) => {\n map.set(node.key, node);\n });\n\n return map;\n }, [props.value, flattenNodes]);\n\n React.useMemo(() => {\n if (isInitialized.current || nodeMap.size === 0) return;\n\n const collapsedKeys = new Set<string>();\n const selectedKeys = new Set<string>();\n\n nodeMap.forEach((node) => {\n if (node.collapsedByDefault) {\n const nodeCollapsible = node.collapsible ?? props.collapsible ?? false;\n const hasChildren = node.children && node.children.length > 0;\n\n if (nodeCollapsible && hasChildren) {\n collapsedKeys.add(node.key);\n }\n }\n });\n\n nodeMap.forEach((node) => {\n if (node.selectedByDefault) {\n const nodeSelectable = node.selectable ?? props.selectable ?? true;\n\n if (nodeSelectable) {\n if (props.selectionMode === 'single' && selectedKeys.size > 0) {\n return;\n }\n\n selectedKeys.add(node.key);\n }\n }\n });\n\n initialCollapsedKeysRef.current = collapsedKeys;\n initialSelectedKeysRef.current = selectedKeys;\n }, [nodeMap, props.collapsible, props.selectable, props.selectionMode]);\n\n const isCollapsible = React.useCallback(\n (node?: TreeNode) => {\n if (!node) return false;\n\n const nodeCollapsible = node.collapsible ?? props.collapsible ?? false;\n\n return Boolean(nodeCollapsible && node.children && node.children.length > 0);\n },\n [props.collapsible]\n );\n\n const isSelectable = React.useCallback(\n (node?: TreeNode) => {\n if (!node) return false;\n\n return Boolean(node.selectable ?? props.selectable ?? false);\n },\n [props.selectable]\n );\n\n const isCollapsed = React.useCallback(\n (node?: TreeNode) => {\n if (!node || !node.key) return false;\n\n if (!isCollapsible(node)) return false;\n\n if (collapsedNodesSet.has(node.key)) return true;\n\n if (!isInitialized.current && initialCollapsedKeysRef.current.has(node.key)) {\n return true;\n }\n\n return false;\n },\n [collapsedNodesSet, isCollapsible]\n );\n\n const isSelected = React.useCallback(\n (node?: TreeNode) => {\n if (!node || !node.key) return false;\n\n if (selectedNodesSet.has(node.key)) return true;\n\n if (!isInitialized.current && initialSelectedKeysRef.current.has(node.key)) {\n return true;\n }\n\n return false;\n },\n [selectedNodesSet]\n );\n\n React.useEffect(() => {\n if (nodeMap.size === 0) {\n setCollapsedNodesSet((prev) => (prev.size > 0 ? new Set() : prev));\n setSelectedNodesSet((prev) => (prev.size > 0 ? new Set() : prev));\n\n return;\n }\n\n if (!isInitialized.current) {\n isInitialized.current = true;\n\n const collapsedKeys = initialCollapsedKeysRef.current;\n const selectedKeys = initialSelectedKeysRef.current;\n\n if (collapsedKeys.size > 0) {\n setCollapsedNodesSet(new Set(collapsedKeys));\n }\n\n if (selectedKeys.size > 0) {\n setSelectedNodesSet(new Set(selectedKeys));\n }\n\n return;\n }\n\n setCollapsedNodesSet((prev) => {\n if (prev.size === 0) return prev;\n\n const next = new Set<string>();\n let hasChanges = false;\n\n prev.forEach((key) => {\n const node = nodeMap.get(key);\n\n if (node) {\n const nodeCollapsible = node.collapsible ?? props.collapsible ?? false;\n\n if (nodeCollapsible && node.children && node.children.length > 0) {\n next.add(key);\n } else {\n hasChanges = true;\n }\n } else {\n hasChanges = true;\n }\n });\n\n return hasChanges ? next : prev;\n });\n\n setSelectedNodesSet((prev) => {\n if (prev.size === 0) return prev;\n\n const next = new Set<string>();\n let hasChanges = false;\n\n prev.forEach((key) => {\n const node = nodeMap.get(key);\n\n if (node) {\n const nodeSelectable = node.selectable ?? props.selectable ?? true;\n\n if (nodeSelectable) {\n next.add(key);\n } else {\n hasChanges = true;\n }\n } else {\n hasChanges = true;\n }\n });\n\n return hasChanges ? next : prev;\n });\n }, [nodeMap, props.collapsible, props.selectable]);\n\n return {\n state,\n orgChartStyle,\n toggleNodeSelect,\n toggleNodeCollapse,\n isCollapsible,\n isSelectable,\n isCollapsed,\n isSelected,\n handleNodeKeyDown,\n handleCollapseKeyDown\n };\n }\n});\n","import type { useOrgChartProps } from '@primereact/types/shared/orgchart';\n\nexport const defaultProps: useOrgChartProps = {\n value: undefined,\n gap: 40,\n selectable: true,\n collapsible: false,\n selectionMode: 'single'\n};\n"],"mappings":"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","names":["withHeadless","React","defaultProps","useOrgChart","withHeadless","defaultProps","props","selectedNodesSet","setSelectedNodesSet","collapsedNodesSet","setCollapsedNodesSet","selectedNodes","collapsedNodes","isInitialized","initialSelectedKeysRef","initialCollapsedKeysRef","state","toggleNodeSelect","key","prev","next","toggleNodeCollapse","handleNodeKeyDown","event","handleCollapseKeyDown","orgChartStyle","_a","gap","flattenNodes","nodes","acc","node","nodeMap","allNodes","map","collapsedKeys","selectedKeys","_b","nodeCollapsible","hasChildren","isCollapsible","isSelectable","isCollapsed","isSelected","hasChanges"]}
@@ -0,0 +1,20 @@
1
+ import { TreeNode } from '@primereact/types/shared/orgchart';
2
+ import * as React from 'react';
3
+ export declare const useOrgChart: (inProps?: unknown) => import("@primereact/types/core").HeadlessInstance<import("@primereact/types/shared/orgchart").useOrgChartProps, unknown, {
4
+ state: {
5
+ selectedNodes: string[];
6
+ collapsedNodes: string[];
7
+ };
8
+ orgChartStyle: {
9
+ '--gap-x': number;
10
+ '--gap-y': number;
11
+ };
12
+ toggleNodeSelect: (key?: string) => void;
13
+ toggleNodeCollapse: (key?: string) => void;
14
+ isCollapsible: (node?: TreeNode) => boolean;
15
+ isSelectable: (node?: TreeNode) => boolean;
16
+ isCollapsed: (node?: TreeNode) => boolean;
17
+ isSelected: (node?: TreeNode) => boolean;
18
+ handleNodeKeyDown: (event: React.KeyboardEvent<HTMLDivElement>, key?: string) => void;
19
+ handleCollapseKeyDown: (event: React.KeyboardEvent<HTMLButtonElement>, key?: string) => void;
20
+ }>;
@@ -0,0 +1,2 @@
1
+ import type { useOrgChartProps } from '@primereact/types/shared/orgchart';
2
+ export declare const defaultProps: useOrgChartProps;
File without changes
@@ -0,0 +1,2 @@
1
+ export * from './useOverlay';
2
+ export * from './useOverlay.props';
@@ -0,0 +1,2 @@
1
+ import{withHeadless as $}from"@primereact/core/headless";import{ConnectedOverlayScrollHandler as j}from"@primereact/core/utils";import{useEventListener as m,useUnmountEffect as U}from"@primereact/hooks";import{$dt as V}from"@primeuix/styled";import{absolutePosition as q,addClass as F,addStyle as G,getOffset as x,isTouchDevice as J,relativePosition as Q}from"@primeuix/utils/dom";import{ZIndex as v}from"@primeuix/utils/zindex";import{EventBus as B}from"@primeuix/utils/eventbus";var d=B();import*as o from"react";var R={target:void 0,defaultOpen:void 0,open:void 0,appendTo:"body",type:"overlay",baseZIndex:0,autoZIndex:!0,closeOnEscape:!0,onOpenChange:void 0};var ce=$({name:"useOverlay",defaultProps:R,setup:({props:t,$primereact:L})=>{let[a,y]=o.useState(!1),n=o.useRef(null),s=o.useRef(null),f=o.useRef(!1),C={visible:a},i=o.useCallback(()=>{var e,r;return n!=null&&n.current&&(n==null?void 0:n.current)instanceof HTMLElement?n==null?void 0:n.current:(r=(e=n==null?void 0:n.current)==null?void 0:e.elementRef.current)!=null?r:null},[n]),p=()=>{var e;a||(y(!0),(e=t.onOpenChange)==null||e.call(t,{value:!0}))},c=()=>{var e;a&&(y(!1),(e=t.onOpenChange)==null||e.call(t,{value:!1}))},S=()=>{var r,l,u,g;let e=i();e&&(G(e,{position:"absolute",top:"0"}),t.autoZIndex&&t.type&&v.set(t.type,e,((r=t.baseZIndex)!=null?r:0)+((g=(u=(l=L.config)==null?void 0:l.zIndex)==null?void 0:u[t.type])!=null?g:1e3)),H())},k=()=>{I(),M(),P()},w=()=>{E(),O(),b()},h=()=>{let e=i();t.autoZIndex&&e&&v.clear(e)},H=()=>{let e=i();if(!e)return;t.appendTo==="self"?Q(e,t.target):q(e,t.target);let r=x(e),l=x(t.target),u=0;Number(r.left)<Number(l.left)&&(u=Number(l.left)-Number(r.left)),e.style.setProperty(V("overlay.arrow.left").name,`${u}px`),r.top<l.top&&(F(e,"p-overlay-flipped"),e.setAttribute("data-p-overlay-flipped","true"))},[I,E]=m({type:"click",listener:e=>T(e)}),[M,O]=m({type:"scroll",listener:()=>N()}),[P,b]=m({target:"window",type:"resize",listener:()=>z()}),T=e=>{if(f.current){f.current=!1;return}a&&Z(e)&&c()},Z=e=>{let r=i();if(!r)return;let l=e.target;return!(r.isSameNode(l)||r.contains(l))},N=()=>{s.current||(s.current=new j(i(),()=>{a&&c()})),s.current.bindScrollListener()},z=()=>{a&&!J()&&c()},D=e=>{d.emit("overlay-click",{originalEvent:e,target:t.target}),f.current=!0},K=e=>{e.code==="Escape"&&A(e)},A=e=>{a&&c(),e.preventDefault()};return o.useEffect(()=>{t.open?p():t.open||c()},[t.open]),U(()=>{E(),O(),b(),s.current&&(s.current.destroy(),s.current=null);let e=i();t.autoZIndex&&e&&v.clear(e)}),{state:C,containerRef:n,hide:c,onOverlayEnter:S,onOverlayAfterEnter:k,onLeave:w,onAfterLeave:h,onOverlayClick:D,onOverlayKeyDown:K}}});export{R as defaultProps,ce as useOverlay};
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +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":"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","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"]}
@@ -0,0 +1,16 @@
1
+ import * as React from 'react';
2
+ export declare const useOverlay: (inProps?: unknown) => import("@primereact/types/core").HeadlessInstance<import("@primereact/types/shared/overlay").useOverlayProps, unknown, {
3
+ state: {
4
+ visible: boolean;
5
+ };
6
+ containerRef: React.RefObject<{
7
+ elementRef: React.RefObject<HTMLDivElement>;
8
+ } | null>;
9
+ hide: () => void;
10
+ onOverlayEnter: () => void;
11
+ onOverlayAfterEnter: () => void;
12
+ onLeave: () => void;
13
+ onAfterLeave: () => void;
14
+ onOverlayClick: (event: React.MouseEvent) => void;
15
+ onOverlayKeyDown: (event: React.KeyboardEvent) => void;
16
+ }>;
@@ -0,0 +1,2 @@
1
+ import type { useOverlayProps } from '@primereact/types/shared/overlay';
2
+ export declare const defaultProps: useOverlayProps;
File without changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@primereact/headless",
3
- "version": "11.0.0-alpha.6",
3
+ "version": "11.0.0-alpha.8",
4
4
  "author": "PrimeTek Informatics",
5
5
  "description": "",
6
6
  "homepage": "https://primereact.org/",
@@ -33,8 +33,8 @@
33
33
  },
34
34
  "dependencies": {
35
35
  "@primeuix/styled": "^0.7.4",
36
- "@primeuix/utils": "^0.6.1",
37
- "@primereact/core": "11.0.0-alpha.6",
38
- "@primereact/hooks": "11.0.0-alpha.6"
36
+ "@primeuix/utils": "^0.6.2",
37
+ "@primereact/core": "11.0.0-alpha.8",
38
+ "@primereact/hooks": "11.0.0-alpha.8"
39
39
  }
40
40
  }
@@ -0,0 +1,2 @@
1
+ export * from './usePassword';
2
+ export * from './usePassword.props';
@@ -0,0 +1,2 @@
1
+ import{withHeadless as B}from"@primereact/core/headless";import{useControlledState as F}from"@primereact/hooks/use-controlled-state";import{getOuterWidth as Z,isEmpty as P}from"@primeuix/utils";import*as n from"react";var C={value:void 0,defaultValue:void 0,onValueChange:void 0,strengthOptions:[{id:0,value:"Too weak",minDiversity:0,minLength:2},{id:1,value:"Weak",minDiversity:2,minLength:4},{id:2,value:"Medium",minDiversity:3,minLength:8},{id:3,value:"Strong",minDiversity:4,minLength:12}],appendTo:"body"};var N=B({name:"usePassword",defaultProps:C,setup({props:r,elementRef:l}){var w,b;let d=n.useRef(null),E=n.useRef(null),u=n.useRef(null),[a,R]=F({value:r.value,defaultValue:r.defaultValue,onChange:r.onValueChange}),[m,g]=n.useState(!1),[L,h]=n.useState(!0),[S,V]=n.useState(!1),[k,y]=n.useState(!1),p=n.useCallback((e,t)=>{if(!e||!t||t.length===0)return{id:-1,value:"",contains:[],length:0,percentage:0};let s=[];/[a-z]/.test(e)&&s.push("lowercase"),/[A-Z]/.test(e)&&s.push("uppercase"),/[0-9]/.test(e)&&s.push("number"),/[^a-zA-Z0-9]/.test(e)&&s.push("symbol");let i=s.length,o=e.length;for(let c=t.length-1;c>=0;c--){let f=t[c];if(i>=f.minDiversity&&o>=f.minLength){let A=t.length>1?Math.round((c+1)/t.length*100):100;return{id:f.id,value:f.value,contains:s,length:o,percentage:A}}}return{id:t[0].id,value:t[0].value,contains:s,length:o,percentage:0}},[]),v=n.useMemo(()=>{let e=r.strengthOptions||[];return p(a||"",e)},[a,r.strengthOptions,p]),M={value:a,strength:v,overlayVisible:m,levelsCount:(b=(w=r.strengthOptions)==null?void 0:w.length)!=null?b:4,showClearIcon:L,unmasked:S,focused:k,inputType:S?"text":"password"},O=n.useCallback(e=>e(a||"",v),[a,v]),T=()=>{m||g(!0)},x=e=>{let t=e.target.value;h(!P(t)),R([t,{originalEvent:e,value:t}])},D=()=>{y(!0)},H=()=>{y(!1)},I=e=>{g(e)},W=()=>{var e,t,s,i;if((i=(s=(t=(e=u==null?void 0:u.current)==null?void 0:e.containerRef)==null?void 0:t.current)==null?void 0:s.elementRef)!=null&&i.current){let o=u.current.containerRef.current.elementRef.current;l!=null&&l.current&&(o.style.minWidth=Z(l.current)+"px")}},j=e=>{var t,s;R([null,{originalEvent:e,value:null}]),h(!1),m&&g(!1),(s=(t=d.current)==null?void 0:t.elementRef)!=null&&s.current&&(d.current.elementRef.current.value="")},z=()=>{V(e=>!e)};return n.useEffect(()=>{P(a)&&h(!1)},[a]),{state:M,inputRef:d,overlayRef:E,portalRef:u,testRequirement:O,calculatePasswordStrength:p,onInputClick:T,onInputChange:x,onFocus:D,onBlur:H,onOverlayEnter:W,changeVisibleState:I,onClearClick:j,onMaskToggle:z}}});export{C as defaultProps,N as usePassword};
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/password/usePassword.ts","../../src/password/usePassword.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { useControlledState } from '@primereact/hooks/use-controlled-state';\nimport type { PasswordStrengthLevel, PasswordStrengthResult } from '@primereact/types/shared/password';\nimport { getOuterWidth, isEmpty } from '@primeuix/utils';\nimport * as React from 'react';\nimport { defaultProps } from './usePassword.props';\n\nexport const usePassword = withHeadless({\n name: 'usePassword',\n defaultProps,\n setup({ props, elementRef }) {\n const inputRef = React.useRef<{ elementRef: React.RefObject<HTMLInputElement> } | null>(null);\n const overlayRef = React.useRef<HTMLDivElement | null>(null);\n const portalRef = React.useRef<{ containerRef: { current: { elementRef: React.RefObject<HTMLDivElement> } } } | null>(null);\n const [valueState, setValueState] = useControlledState({\n value: props.value,\n defaultValue: props.defaultValue,\n onChange: props.onValueChange\n });\n const [overlayVisibleState, setOverlayVisibleState] = React.useState<boolean>(false);\n const [showClearIcon, setShowClearIcon] = React.useState(true);\n const [unmaskedState, setUnmaskedState] = React.useState(false);\n const [focusedState, setFocusedState] = React.useState(false);\n\n const calculatePasswordStrength = React.useCallback((password: string, levels: PasswordStrengthLevel[]): PasswordStrengthResult => {\n if (!password || !levels || levels.length === 0) {\n return {\n id: -1,\n value: '',\n contains: [],\n length: 0,\n percentage: 0\n };\n }\n\n const contains: string[] = [];\n\n if (/[a-z]/.test(password)) {\n contains.push('lowercase');\n }\n\n if (/[A-Z]/.test(password)) {\n contains.push('uppercase');\n }\n\n if (/[0-9]/.test(password)) {\n contains.push('number');\n }\n\n if (/[^a-zA-Z0-9]/.test(password)) {\n contains.push('symbol');\n }\n\n const diversity = contains.length;\n const length = password.length;\n\n for (let i = levels.length - 1; i >= 0; i--) {\n const level = levels[i];\n\n if (diversity >= level.minDiversity && length >= level.minLength) {\n const percentage = levels.length > 1 ? Math.round(((i + 1) / levels.length) * 100) : 100;\n\n return {\n id: level.id,\n value: level.value,\n contains,\n length,\n percentage\n };\n }\n }\n\n return {\n id: levels[0].id,\n value: levels[0].value,\n contains,\n length,\n percentage: 0\n };\n }, []);\n\n const strength = React.useMemo(() => {\n const levels = props.strengthOptions || [];\n\n return calculatePasswordStrength(valueState || '', levels);\n }, [valueState, props.strengthOptions, calculatePasswordStrength]);\n\n const state = {\n value: valueState,\n strength,\n overlayVisible: overlayVisibleState,\n levelsCount: props.strengthOptions?.length ?? 4,\n showClearIcon,\n unmasked: unmaskedState,\n focused: focusedState,\n inputType: (unmaskedState ? 'text' : 'password') as 'text' | 'password'\n };\n\n const testRequirement = React.useCallback(\n (test: (value: string, strength: PasswordStrengthResult | null) => boolean) => {\n return test(valueState || '', strength);\n },\n [valueState, strength]\n );\n\n const onInputClick = () => {\n if (!overlayVisibleState) {\n setOverlayVisibleState(true);\n }\n };\n\n const onInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = event.target.value;\n\n setShowClearIcon(!isEmpty(newValue));\n setValueState([\n newValue,\n {\n originalEvent: event,\n value: newValue\n }\n ]);\n };\n\n const onFocus = () => {\n setFocusedState(true);\n };\n\n const onBlur = () => {\n setFocusedState(false);\n };\n\n const changeVisibleState = (isVisible: boolean) => {\n setOverlayVisibleState(isVisible);\n };\n\n const onOverlayEnter = () => {\n if (portalRef?.current?.containerRef?.current?.elementRef?.current) {\n const element = portalRef.current.containerRef.current.elementRef.current;\n\n if (elementRef?.current) {\n element.style.minWidth = getOuterWidth(elementRef.current) + 'px';\n }\n }\n };\n\n const onClearClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n setValueState([\n null,\n {\n originalEvent: event,\n value: null\n }\n ]);\n setShowClearIcon(false);\n\n if (overlayVisibleState) {\n setOverlayVisibleState(false);\n }\n\n // Clear the input value from DOM when using defaultValue (uncontrolled)\n if (inputRef.current?.elementRef?.current) {\n inputRef.current.elementRef.current.value = '';\n }\n };\n\n const onMaskToggle = () => {\n setUnmaskedState((prev) => !prev);\n };\n\n React.useEffect(() => {\n if (isEmpty(valueState)) {\n setShowClearIcon(false);\n }\n }, [valueState]);\n\n return {\n state,\n // refs\n inputRef,\n overlayRef,\n portalRef,\n // methods\n testRequirement,\n calculatePasswordStrength,\n onInputClick,\n onInputChange,\n onFocus,\n onBlur,\n onOverlayEnter,\n changeVisibleState,\n onClearClick,\n onMaskToggle\n };\n }\n});\n","import type { usePasswordProps } from '@primereact/types/shared/password';\n\nexport const defaultProps: usePasswordProps = {\n value: undefined,\n defaultValue: undefined,\n onValueChange: undefined,\n strengthOptions: [\n { id: 0, value: 'Too weak', minDiversity: 0, minLength: 2 },\n { id: 1, value: 'Weak', minDiversity: 2, minLength: 4 },\n { id: 2, value: 'Medium', minDiversity: 3, minLength: 8 },\n { id: 3, value: 'Strong', minDiversity: 4, minLength: 12 }\n ],\n appendTo: 'body'\n};\n"],"mappings":"AAAA,OAAS,gBAAAA,MAAoB,4BAC7B,OAAS,sBAAAC,MAA0B,yCAEnC,OAAS,iBAAAC,EAAe,WAAAC,MAAe,kBACvC,UAAYC,MAAW,QCFhB,IAAMC,EAAiC,CAC1C,MAAO,OACP,aAAc,OACd,cAAe,OACf,gBAAiB,CACb,CAAE,GAAI,EAAG,MAAO,WAAY,aAAc,EAAG,UAAW,CAAE,EAC1D,CAAE,GAAI,EAAG,MAAO,OAAQ,aAAc,EAAG,UAAW,CAAE,EACtD,CAAE,GAAI,EAAG,MAAO,SAAU,aAAc,EAAG,UAAW,CAAE,EACxD,CAAE,GAAI,EAAG,MAAO,SAAU,aAAc,EAAG,UAAW,EAAG,CAC7D,EACA,SAAU,MACd,EDNO,IAAMC,EAAcC,EAAa,CACpC,KAAM,cACN,aAAAC,EACA,MAAM,CAAE,MAAAC,EAAO,WAAAC,CAAW,EAAG,CAVjC,IAAAC,EAAAC,EAWQ,IAAMC,EAAiB,SAAiE,IAAI,EACtFC,EAAmB,SAA8B,IAAI,EACrDC,EAAkB,SAA8F,IAAI,EACpH,CAACC,EAAYC,CAAa,EAAIC,EAAmB,CACnD,MAAOT,EAAM,MACb,aAAcA,EAAM,aACpB,SAAUA,EAAM,aACpB,CAAC,EACK,CAACU,EAAqBC,CAAsB,EAAU,WAAkB,EAAK,EAC7E,CAACC,EAAeC,CAAgB,EAAU,WAAS,EAAI,EACvD,CAACC,EAAeC,CAAgB,EAAU,WAAS,EAAK,EACxD,CAACC,EAAcC,CAAe,EAAU,WAAS,EAAK,EAEtDC,EAAkC,cAAY,CAACC,EAAkBC,IAA4D,CAC/H,GAAI,CAACD,GAAY,CAACC,GAAUA,EAAO,SAAW,EAC1C,MAAO,CACH,GAAI,GACJ,MAAO,GACP,SAAU,CAAC,EACX,OAAQ,EACR,WAAY,CAChB,EAGJ,IAAMC,EAAqB,CAAC,EAExB,QAAQ,KAAKF,CAAQ,GACrBE,EAAS,KAAK,WAAW,EAGzB,QAAQ,KAAKF,CAAQ,GACrBE,EAAS,KAAK,WAAW,EAGzB,QAAQ,KAAKF,CAAQ,GACrBE,EAAS,KAAK,QAAQ,EAGtB,eAAe,KAAKF,CAAQ,GAC5BE,EAAS,KAAK,QAAQ,EAG1B,IAAMC,EAAYD,EAAS,OACrBE,EAASJ,EAAS,OAExB,QAASK,EAAIJ,EAAO,OAAS,EAAGI,GAAK,EAAGA,IAAK,CACzC,IAAMC,EAAQL,EAAOI,CAAC,EAEtB,GAAIF,GAAaG,EAAM,cAAgBF,GAAUE,EAAM,UAAW,CAC9D,IAAMC,EAAaN,EAAO,OAAS,EAAI,KAAK,OAAQI,EAAI,GAAKJ,EAAO,OAAU,GAAG,EAAI,IAErF,MAAO,CACH,GAAIK,EAAM,GACV,MAAOA,EAAM,MACb,SAAAJ,EACA,OAAAE,EACA,WAAAG,CACJ,CACJ,CACJ,CAEA,MAAO,CACH,GAAIN,EAAO,CAAC,EAAE,GACd,MAAOA,EAAO,CAAC,EAAE,MACjB,SAAAC,EACA,OAAAE,EACA,WAAY,CAChB,CACJ,EAAG,CAAC,CAAC,EAECI,EAAiB,UAAQ,IAAM,CACjC,IAAMP,EAASpB,EAAM,iBAAmB,CAAC,EAEzC,OAAOkB,EAA0BX,GAAc,GAAIa,CAAM,CAC7D,EAAG,CAACb,EAAYP,EAAM,gBAAiBkB,CAAyB,CAAC,EAE3DU,EAAQ,CACV,MAAOrB,EACP,SAAAoB,EACA,eAAgBjB,EAChB,aAAaP,GAAAD,EAAAF,EAAM,kBAAN,YAAAE,EAAuB,SAAvB,KAAAC,EAAiC,EAC9C,cAAAS,EACA,SAAUE,EACV,QAASE,EACT,UAAYF,EAAgB,OAAS,UACzC,EAEMe,EAAwB,cACzBC,GACUA,EAAKvB,GAAc,GAAIoB,CAAQ,EAE1C,CAACpB,EAAYoB,CAAQ,CACzB,EAEMI,EAAe,IAAM,CAClBrB,GACDC,EAAuB,EAAI,CAEnC,EAEMqB,EAAiBC,GAA+C,CAClE,IAAMC,EAAWD,EAAM,OAAO,MAE9BpB,EAAiB,CAACsB,EAAQD,CAAQ,CAAC,EACnC1B,EAAc,CACV0B,EACA,CACI,cAAeD,EACf,MAAOC,CACX,CACJ,CAAC,CACL,EAEME,EAAU,IAAM,CAClBnB,EAAgB,EAAI,CACxB,EAEMoB,EAAS,IAAM,CACjBpB,EAAgB,EAAK,CACzB,EAEMqB,EAAsBC,GAAuB,CAC/C5B,EAAuB4B,CAAS,CACpC,EAEMC,EAAiB,IAAM,CAxIrC,IAAAtC,EAAAC,EAAAsC,EAAAC,EAyIY,IAAIA,GAAAD,GAAAtC,GAAAD,EAAAI,GAAA,YAAAA,EAAW,UAAX,YAAAJ,EAAoB,eAApB,YAAAC,EAAkC,UAAlC,YAAAsC,EAA2C,aAA3C,MAAAC,EAAuD,QAAS,CAChE,IAAMC,EAAUrC,EAAU,QAAQ,aAAa,QAAQ,WAAW,QAE9DL,GAAA,MAAAA,EAAY,UACZ0C,EAAQ,MAAM,SAAWC,EAAc3C,EAAW,OAAO,EAAI,KAErE,CACJ,EAEM4C,EAAgBZ,GAA+C,CAlJ7E,IAAA/B,EAAAC,EAmJYK,EAAc,CACV,KACA,CACI,cAAeyB,EACf,MAAO,IACX,CACJ,CAAC,EACDpB,EAAiB,EAAK,EAElBH,GACAC,EAAuB,EAAK,GAI5BR,GAAAD,EAAAE,EAAS,UAAT,YAAAF,EAAkB,aAAlB,MAAAC,EAA8B,UAC9BC,EAAS,QAAQ,WAAW,QAAQ,MAAQ,GAEpD,EAEM0C,EAAe,IAAM,CACvB/B,EAAkBgC,GAAS,CAACA,CAAI,CACpC,EAEA,OAAM,YAAU,IAAM,CACdZ,EAAQ5B,CAAU,GAClBM,EAAiB,EAAK,CAE9B,EAAG,CAACN,CAAU,CAAC,EAER,CACH,MAAAqB,EAEA,SAAAxB,EACA,WAAAC,EACA,UAAAC,EAEA,gBAAAuB,EACA,0BAAAX,EACA,aAAAa,EACA,cAAAC,EACA,QAAAI,EACA,OAAAC,EACA,eAAAG,EACA,mBAAAF,EACA,aAAAO,EACA,aAAAC,CACJ,CACJ,CACJ,CAAC","names":["withHeadless","useControlledState","getOuterWidth","isEmpty","React","defaultProps","usePassword","withHeadless","defaultProps","props","elementRef","_a","_b","inputRef","overlayRef","portalRef","valueState","setValueState","useControlledState","overlayVisibleState","setOverlayVisibleState","showClearIcon","setShowClearIcon","unmaskedState","setUnmaskedState","focusedState","setFocusedState","calculatePasswordStrength","password","levels","contains","diversity","length","i","level","percentage","strength","state","testRequirement","test","onInputClick","onInputChange","event","newValue","isEmpty","onFocus","onBlur","changeVisibleState","isVisible","onOverlayEnter","_c","_d","element","getOuterWidth","onClearClick","onMaskToggle","prev"]}
@@ -0,0 +1,35 @@
1
+ import type { PasswordStrengthLevel, PasswordStrengthResult } from '@primereact/types/shared/password';
2
+ import * as React from 'react';
3
+ export declare const usePassword: (inProps?: unknown) => import("@primereact/types/core").HeadlessInstance<import("@primereact/types/shared/password").usePasswordProps, unknown, {
4
+ state: {
5
+ value: string | undefined;
6
+ strength: PasswordStrengthResult;
7
+ overlayVisible: boolean;
8
+ levelsCount: number;
9
+ showClearIcon: boolean;
10
+ unmasked: boolean;
11
+ focused: boolean;
12
+ inputType: "text" | "password";
13
+ };
14
+ inputRef: React.RefObject<{
15
+ elementRef: React.RefObject<HTMLInputElement>;
16
+ } | null>;
17
+ overlayRef: React.RefObject<HTMLDivElement | null>;
18
+ portalRef: React.RefObject<{
19
+ containerRef: {
20
+ current: {
21
+ elementRef: React.RefObject<HTMLDivElement>;
22
+ };
23
+ };
24
+ } | null>;
25
+ testRequirement: (test: (value: string, strength: PasswordStrengthResult | null) => boolean) => boolean;
26
+ calculatePasswordStrength: (password: string, levels: PasswordStrengthLevel[]) => PasswordStrengthResult;
27
+ onInputClick: () => void;
28
+ onInputChange: (event: React.ChangeEvent<HTMLInputElement>) => void;
29
+ onFocus: () => void;
30
+ onBlur: () => void;
31
+ onOverlayEnter: () => void;
32
+ changeVisibleState: (isVisible: boolean) => void;
33
+ onClearClick: (event: React.MouseEvent<HTMLButtonElement>) => void;
34
+ onMaskToggle: () => void;
35
+ }>;
@@ -0,0 +1,2 @@
1
+ import type { usePasswordProps } from '@primereact/types/shared/password';
2
+ export declare const defaultProps: usePasswordProps;
File without changes
@@ -1,2 +1,2 @@
1
- var st=Object.defineProperty;var $=Object.getOwnPropertySymbols;var at=Object.prototype.hasOwnProperty,ot=Object.prototype.propertyIsEnumerable;var C=(e,s,c)=>s in e?st(e,s,{enumerable:!0,configurable:!0,writable:!0,value:c}):e[s]=c,S=(e,s)=>{for(var c in s||(s={}))at.call(s,c)&&C(e,c,s[c]);if($)for(var c of $(s))ot.call(s,c)&&C(e,c,s[c]);return e};import{withHeadless as ct}from"@primereact/core/headless";import{useEventListener as lt,useMountEffect as ut,useUnmountEffect as dt,useUpdateEffect as ft}from"@primereact/hooks";import{$dt as f}from"@primeuix/styled";import{find as I,findSingle as m,focus as L,hasClass as k}from"@primeuix/utils/dom";import*as d from"react";var O={visible:!1,defaultVisible:!1,direction:"up",transitionDelay:30,type:"linear",radius:0,hideOnClickOutside:!0,onVisibleChange:void 0};var Dt=ct({name:"useSpeedDial",defaultProps:O,setup:({props:e,elementRef:s})=>{var A,K;let c=d.useRef(null),[h,x]=d.useState((K=(A=e.visible)!=null?A:e.defaultVisible)!=null?K:!1),[w,p]=d.useState(-1),D=d.useRef(!1),y=d.useRef(0),v=3.14159265358979,P={visible:h,focusedOptionIndex:w},U=d.useCallback(()=>{let t=y.current;return y.current+=1,t},[]);ut(()=>{if(e.type!=="linear"){let t=m(s.current,'[data-pc-name="button"]'),n=m(c.current,'[data-pc-name="speeddialitem"]');if(t&&n){let i=Math.abs(t.offsetWidth-n.offsetWidth),o=Math.abs(t.offsetHeight-n.offsetHeight);c.current.style.setProperty(f("item.diff.x").name,`${i/2}px`),c.current.style.setProperty(f("item.diff.y").name,`${o/2}px`)}}}),ft(()=>(h&&e.hideOnClickOutside&&V(),()=>{e.hideOnClickOutside&&R()}),[h]),dt(()=>{R()});let[V,R]=lt({type:"click",listener:t=>{h&&N(t)&&E(),D.current=!1}}),N=t=>s.current&&!(s.current.isSameNode(t.target)||s.current.contains(t.target)),B=t=>{var n;(n=s.current)!=null&&n.contains(t.relatedTarget)||p(-1)},F=t=>{E(),D.current=!0,t.preventDefault()},W=()=>{h?E():M(),D.current=!0},M=()=>{var t;x(!0),(t=e.onVisibleChange)==null||t.call(e,{value:!0})},E=()=>{var t;x(!1),(t=e.onVisibleChange)==null||t.call(e,{value:!1})},q=t=>{var o;let n=y.current;return(h?t:n-t-1)*((o=e.transitionDelay)!=null?o:30)},_=t=>{let n=e.type;if(n!=="linear"){let i=y.current,o=e.radius||i*20;if(n==="circle"){let r=2*v/i;return{left:`calc(${o*Math.cos(r*t)}px + ${f("item.diff.x").variable})`,top:`calc(${o*Math.sin(r*t)}px + ${f("item.diff.y").variable})`}}else if(n==="semi-circle"){let r=e.direction,a=v/(i-1),l=`calc(${o*Math.cos(a*t)}px + ${f("item.diff.x").variable})`,u=`calc(${o*Math.sin(a*t)}px + ${f("item.diff.y").variable})`;if(r==="up")return{left:l,bottom:u};if(r==="down")return{left:l,top:u};if(r==="left")return{right:u,top:l};if(r==="right")return{left:u,top:l}}else if(n==="quarter-circle"){let r=e.direction,a=v/(2*(i-1)),l=`calc(${o*Math.cos(a*t)}px + ${f("item.diff.x").variable})`,u=`calc(${o*Math.sin(a*t)}px + ${f("item.diff.y").variable})`;if(r==="up-left")return{right:l,bottom:u};if(r==="up-right")return{left:l,bottom:u};if(r==="down-left")return{right:u,top:l};if(r==="down-right")return{left:u,top:l}}}return{}},j=t=>{switch(t.code){case"ArrowDown":case"ArrowLeft":J(t);break;case"ArrowUp":case"ArrowRight":G(t);break;case"Escape":H();break;default:break}},z=t=>{switch(t.code){case"ArrowDown":Y(t);break;case"ArrowUp":X(t);break;case"ArrowLeft":Z(t);break;case"ArrowRight":tt(t);break;case"Enter":case"NumpadEnter":case"Space":Q();break;case"Escape":H();break;case"Home":nt(t);break;case"End":et(t);break;default:break}},G=t=>{M(),g(t),t.preventDefault()},J=t=>{M(),b(t),t.preventDefault()},Q=()=>{E(),p(-1);let t=m(s.current,"button");t&&L(t)},H=()=>{E(),p(-1);let t=m(s.current,"button");t&&L(t)},X=t=>{e.direction==="down"?g(t):b(t)},Y=t=>{e.direction==="down"?b(t):g(t)},Z=t=>{let n=["left","up-right","down-left"],i=["right","up-left","down-right"];n.includes(e.direction)?b(t):(i.includes(e.direction),g(t))},tt=t=>{let n=["left","up-right","down-left"],i=["right","up-left","down-right"];n.includes(e.direction)?g(t):(i.includes(e.direction),b(t))},et=t=>{t.preventDefault(),p(-1),g(t)},nt=t=>{t.preventDefault(),p(-1),b(t)},b=t=>{let n=rt(w);T(n),t.preventDefault()},g=t=>{let n=it(w);T(n),t.preventDefault()},T=t=>{var o;let i=[...I(s.current,'[data-pc-name="speeddialitem"]')].filter(r=>{let a=m(r,"a");return a?!k(a,"p-disabled"):!0});if(i[t]){let r=(o=i[t].getAttribute("id"))!=null?o:-1;p(r);let a=m(i[t],'[type="button"]');a&&L(a)}},it=t=>{let i=[...I(s.current,'[data-pc-name="speeddialitem"]')].filter(a=>{let l=m(a,"a");return l?!k(l,"p-disabled"):!0}),o=t===-1?i[i.length-1].id:t,r=i.findIndex(a=>a.getAttribute("id")===o);return r=t===-1?i.length-1:r-1,r},rt=t=>{let i=[...I(s.current,'[data-pc-name="speeddialitem"]')].filter(a=>{let l=m(a,"a");return l?!k(l,"p-disabled"):!0}),o=t===-1?i[0].id:t,r=i.findIndex(a=>a.getAttribute("id")===o);return r=t===-1?0:r+1,r};return{state:P,listRef:c,registerItem:U,getItemStyle:t=>{let n=q(t),i=_(t);return S({transitionDelay:`${n}ms`},i)},onBlur:B,onKeyDown:z,onClick:W,onTogglerKeydown:j,onItemClick:F}}});export{O as defaultProps,Dt as useSpeedDial};
1
+ var ot=Object.defineProperty;var C=Object.getOwnPropertySymbols;var at=Object.prototype.hasOwnProperty,ct=Object.prototype.propertyIsEnumerable;var S=(e,s,c)=>s in e?ot(e,s,{enumerable:!0,configurable:!0,writable:!0,value:c}):e[s]=c,O=(e,s)=>{for(var c in s||(s={}))at.call(s,c)&&S(e,c,s[c]);if(C)for(var c of C(s))ct.call(s,c)&&S(e,c,s[c]);return e};import{withHeadless as lt}from"@primereact/core/headless";import{useEventListener as ut,useMountEffect as dt,useUnmountEffect as ft,useUpdateEffect as mt}from"@primereact/hooks";import{$dt as f}from"@primeuix/styled";import{find as v,findSingle as m,focus as L,hasClass as k}from"@primeuix/utils/dom";import*as d from"react";var P={visible:!1,defaultVisible:!1,direction:"up",transitionDelay:30,type:"linear",radius:0,hideOnClickOutside:!0,onVisibleChange:void 0};var Mt=lt({name:"useSpeedDial",defaultProps:P,setup:({props:e,elementRef:s})=>{var A,$;let c=d.useRef(null),[h,R]=d.useState(($=(A=e.visible)!=null?A:e.defaultVisible)!=null?$:!1),[w,E]=d.useState(-1),D=d.useRef(!1),p=d.useRef(0),M=3.14159265358979,U={visible:h,focusedOptionIndex:w},V=d.useCallback(()=>{let t=p.current;return p.current+=1,t},[]);dt(()=>{if(e.type!=="linear"){let t=m(s.current,'[data-pc-name="button"]'),n=m(c.current,'[data-pc-name="speeddialitem"]');if(t&&n){let i=Math.abs(t.offsetWidth-n.offsetWidth),a=Math.abs(t.offsetHeight-n.offsetHeight);c.current.style.setProperty(f("item.diff.x").name,`${i/2}px`),c.current.style.setProperty(f("item.diff.y").name,`${a/2}px`)}}}),mt(()=>(h&&e.hideOnClickOutside&&N(),()=>{e.hideOnClickOutside&&x()}),[h]),ft(()=>{x()});let[N,x]=ut({type:"click",listener:t=>{h&&B(t)&&y(),D.current=!1}}),B=t=>s.current&&!(s.current.isSameNode(t.target)||s.current.contains(t.target)),F=t=>{var n;(n=s.current)!=null&&n.contains(t.relatedTarget)||E(-1)},K=t=>{var n;y(),D.current=!0,(n=t.preventDefault)==null||n.call(t)},W=t=>{t.code==="Enter"&&K(t)},q=()=>{h?y():I(),D.current=!0},I=()=>{var t;R(!0),(t=e.onVisibleChange)==null||t.call(e,{value:!0})},y=()=>{var t;R(!1),(t=e.onVisibleChange)==null||t.call(e,{value:!1})},_=t=>{var a;let n=p.current;return(h?t:n-t-1)*((a=e.transitionDelay)!=null?a:30)},j=t=>{let n=e.type;if(n!=="linear"){let i=p.current,a=e.radius||i*20;if(n==="circle"){let r=2*M/i;return{left:`calc(${a*Math.cos(r*t)}px + ${f("item.diff.x").variable})`,top:`calc(${a*Math.sin(r*t)}px + ${f("item.diff.y").variable})`}}else if(n==="semi-circle"){let r=e.direction,o=M/(i-1),l=`calc(${a*Math.cos(o*t)}px + ${f("item.diff.x").variable})`,u=`calc(${a*Math.sin(o*t)}px + ${f("item.diff.y").variable})`;if(r==="up")return{left:l,bottom:u};if(r==="down")return{left:l,top:u};if(r==="left")return{right:u,top:l};if(r==="right")return{left:u,top:l}}else if(n==="quarter-circle"){let r=e.direction,o=M/(2*(i-1)),l=`calc(${a*Math.cos(o*t)}px + ${f("item.diff.x").variable})`,u=`calc(${a*Math.sin(o*t)}px + ${f("item.diff.y").variable})`;if(r==="up-left")return{right:l,bottom:u};if(r==="up-right")return{left:l,bottom:u};if(r==="down-left")return{right:u,top:l};if(r==="down-right")return{left:u,top:l}}}return{}},z=t=>{switch(t.code){case"ArrowDown":case"ArrowLeft":Q(t);break;case"ArrowUp":case"ArrowRight":J(t);break;case"Escape":H();break;default:break}},G=t=>{switch(t.code){case"ArrowDown":Z(t);break;case"ArrowUp":Y(t);break;case"ArrowLeft":tt(t);break;case"ArrowRight":et(t);break;case"Enter":case"NumpadEnter":case"Space":X();break;case"Escape":H();break;case"Home":it(t);break;case"End":nt(t);break;default:break}},J=t=>{I(),g(t),t.preventDefault()},Q=t=>{I(),b(t),t.preventDefault()},X=()=>{y(),E(-1);let t=m(s.current,"button");t&&L(t)},H=()=>{y(),E(-1);let t=m(s.current,"button");t&&L(t)},Y=t=>{e.direction==="down"?g(t):b(t)},Z=t=>{e.direction==="down"?b(t):g(t)},tt=t=>{let n=["left","up-right","down-left"],i=["right","up-left","down-right"];n.includes(e.direction)?b(t):(i.includes(e.direction),g(t))},et=t=>{let n=["left","up-right","down-left"],i=["right","up-left","down-right"];n.includes(e.direction)?g(t):(i.includes(e.direction),b(t))},nt=t=>{t.preventDefault(),E(-1),g(t)},it=t=>{t.preventDefault(),E(-1),b(t)},b=t=>{let n=st(w);T(n),t.preventDefault()},g=t=>{let n=rt(w);T(n),t.preventDefault()},T=t=>{var a;let i=[...v(s.current,'[data-pc-name="speeddialitem"]')].filter(r=>{let o=m(r,"a");return o?!k(o,"p-disabled"):!0});if(i[t]){let r=(a=i[t].getAttribute("id"))!=null?a:-1;E(r);let o=m(i[t],'[type="button"]');o&&L(o)}},rt=t=>{let i=[...v(s.current,'[data-pc-name="speeddialitem"]')].filter(o=>{let l=m(o,"a");return l?!k(l,"p-disabled"):!0}),a=t===-1?i[i.length-1].id:t,r=i.findIndex(o=>o.getAttribute("id")===a);return r=t===-1?i.length-1:r-1,r},st=t=>{let i=[...v(s.current,'[data-pc-name="speeddialitem"]')].filter(o=>{let l=m(o,"a");return l?!k(l,"p-disabled"):!0}),a=t===-1?i[0].id:t,r=i.findIndex(o=>o.getAttribute("id")===a);return r=t===-1?0:r+1,r};return{state:U,listRef:c,registerItem:V,getItemStyle:t=>{let n=_(t),i=j(t);return O({transitionDelay:`${n}ms`},i)},onBlur:F,onKeyDown:G,onClick:q,onTogglerKeydown:z,onItemClick:K,onItemKeyDown:W}}});export{P as defaultProps,Mt as useSpeedDial};
2
2
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/speeddial/useSpeedDial.ts","../../src/speeddial/useSpeedDial.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { useEventListener, useMountEffect, useUnmountEffect, useUpdateEffect } from '@primereact/hooks';\nimport { $dt } from '@primeuix/styled';\nimport { find, findSingle, focus, hasClass } from '@primeuix/utils/dom';\nimport * as React from 'react';\nimport { defaultProps } from './useSpeedDial.props';\n\nexport const useSpeedDial = withHeadless({\n name: 'useSpeedDial',\n defaultProps,\n setup: ({ props, elementRef }) => {\n const listRef = React.useRef<HTMLUListElement | null>(null);\n const [visibleState, setVisibleState] = React.useState<boolean>(props.visible ?? props.defaultVisible ?? false);\n const [focusedOptionIndex, setFocusedOptionIndex] = React.useState<string | number>(-1);\n const isItemClicked = React.useRef(false);\n const itemCounter = React.useRef(0);\n const Math_PI = 3.14159265358979;\n\n const state = {\n visible: visibleState,\n focusedOptionIndex\n };\n\n const registerItem = React.useCallback(() => {\n const index = itemCounter.current;\n\n itemCounter.current += 1;\n\n return index;\n }, []);\n\n useMountEffect(() => {\n if (props.type !== 'linear') {\n const button = findSingle(elementRef.current as HTMLDivElement, '[data-pc-name=\"button\"]') as HTMLButtonElement;\n const firstItem = findSingle(listRef.current as HTMLUListElement, '[data-pc-name=\"speeddialitem\"]') as HTMLLIElement;\n\n if (button && firstItem) {\n const wDiff = Math.abs(button.offsetWidth - firstItem.offsetWidth);\n const hDiff = Math.abs(button.offsetHeight - firstItem.offsetHeight);\n\n (listRef.current as HTMLUListElement).style.setProperty($dt('item.diff.x').name, `${wDiff / 2}px`);\n (listRef.current as HTMLUListElement).style.setProperty($dt('item.diff.y').name, `${hDiff / 2}px`);\n }\n }\n });\n\n useUpdateEffect(() => {\n if (visibleState) {\n if (props.hideOnClickOutside) {\n bindDocumentClickListener();\n }\n }\n\n return () => {\n if (props.hideOnClickOutside) {\n unbindDocumentClickListener();\n }\n };\n }, [visibleState]);\n\n useUnmountEffect(() => {\n unbindDocumentClickListener();\n });\n\n const [bindDocumentClickListener, unbindDocumentClickListener] = useEventListener({\n type: 'click',\n listener: (event) => {\n if (visibleState && isOutsideClicked(event as unknown as React.MouseEvent)) {\n hide();\n }\n\n isItemClicked.current = false;\n }\n });\n\n const isOutsideClicked = (event: React.MouseEvent) => {\n return elementRef.current && !(elementRef.current.isSameNode(event.target as Node) || elementRef.current.contains(event.target as Node));\n };\n\n const onBlur = (event: React.FocusEvent) => {\n if (!elementRef.current?.contains(event.relatedTarget as Node)) {\n setFocusedOptionIndex(-1);\n }\n };\n\n const onItemClick = (event: React.MouseEvent) => {\n hide();\n\n isItemClicked.current = true;\n event.preventDefault();\n };\n\n const onClick = () => {\n if (visibleState) {\n hide();\n } else {\n show();\n }\n\n isItemClicked.current = true;\n };\n\n const show = () => {\n setVisibleState(true);\n\n props.onVisibleChange?.({\n value: true\n });\n };\n\n const hide = () => {\n setVisibleState(false);\n\n props.onVisibleChange?.({\n value: false\n });\n };\n\n const calculateTransitionDelay = (index: number) => {\n const length = itemCounter.current;\n const visible = visibleState;\n\n return (visible ? index : length - index - 1) * (props.transitionDelay ?? 30);\n };\n\n const calculatePointStyle = (index: number) => {\n const type = props.type;\n\n if (type !== 'linear') {\n const length = itemCounter.current;\n const radius = (props.radius || length * 20) as number;\n\n if (type === 'circle') {\n const step = (2 * Math_PI) / length;\n\n return {\n left: `calc(${radius * Math.cos(step * index)}px + ${$dt('item.diff.x').variable})`,\n top: `calc(${radius * Math.sin(step * index)}px + ${$dt('item.diff.y').variable})`\n };\n } else if (type === 'semi-circle') {\n const direction = props.direction;\n const step = Math_PI / (length - 1);\n const x = `calc(${radius * Math.cos(step * index)}px + ${$dt('item.diff.x').variable})`;\n const y = `calc(${radius * Math.sin(step * index)}px + ${$dt('item.diff.y').variable})`;\n\n if (direction === 'up') {\n return { left: x, bottom: y };\n } else if (direction === 'down') {\n return { left: x, top: y };\n } else if (direction === 'left') {\n return { right: y, top: x };\n } else if (direction === 'right') {\n return { left: y, top: x };\n }\n } else if (type === 'quarter-circle') {\n const direction = props.direction;\n const step = Math_PI / (2 * (length - 1));\n const x = `calc(${radius * Math.cos(step * index)}px + ${$dt('item.diff.x').variable})`;\n const y = `calc(${radius * Math.sin(step * index)}px + ${$dt('item.diff.y').variable})`;\n\n if (direction === 'up-left') {\n return { right: x, bottom: y };\n } else if (direction === 'up-right') {\n return { left: x, bottom: y };\n } else if (direction === 'down-left') {\n return { right: y, top: x };\n } else if (direction === 'down-right') {\n return { left: y, top: x };\n }\n }\n }\n\n return {};\n };\n\n const onTogglerKeydown = (event: React.KeyboardEvent) => {\n switch (event.code) {\n case 'ArrowDown':\n case 'ArrowLeft':\n onTogglerArrowDown(event);\n\n break;\n\n case 'ArrowUp':\n case 'ArrowRight':\n onTogglerArrowUp(event);\n\n break;\n\n case 'Escape':\n onEscapeKey();\n\n break;\n\n default:\n break;\n }\n };\n\n const onKeyDown = (event: React.KeyboardEvent) => {\n switch (event.code) {\n case 'ArrowDown':\n onArrowDown(event);\n break;\n\n case 'ArrowUp':\n onArrowUp(event);\n break;\n\n case 'ArrowLeft':\n onArrowLeft(event);\n break;\n\n case 'ArrowRight':\n onArrowRight(event);\n break;\n\n case 'Enter':\n case 'NumpadEnter':\n case 'Space':\n onEnterKey();\n break;\n\n case 'Escape':\n onEscapeKey();\n break;\n\n case 'Home':\n onHomeKey(event);\n break;\n\n case 'End':\n onEndKey(event);\n break;\n\n default:\n break;\n }\n };\n\n const onTogglerArrowUp = (event: React.KeyboardEvent) => {\n show();\n navigatePrevItem(event);\n\n event.preventDefault();\n };\n\n const onTogglerArrowDown = (event: React.KeyboardEvent) => {\n show();\n navigateNextItem(event);\n\n event.preventDefault();\n };\n\n const onEnterKey = () => {\n hide();\n setFocusedOptionIndex(-1);\n\n const buttonEl = findSingle(elementRef.current as HTMLDivElement, 'button') as HTMLButtonElement;\n\n if (buttonEl) {\n focus(buttonEl);\n }\n };\n\n const onEscapeKey = () => {\n hide();\n setFocusedOptionIndex(-1);\n\n const buttonEl = findSingle(elementRef.current as HTMLDivElement, 'button') as HTMLButtonElement;\n\n if (buttonEl) {\n focus(buttonEl);\n }\n };\n\n const onArrowUp = (event: React.KeyboardEvent) => {\n if (props.direction === 'down') {\n navigatePrevItem(event);\n } else {\n navigateNextItem(event);\n }\n };\n\n const onArrowDown = (event: React.KeyboardEvent) => {\n if (props.direction === 'down') {\n navigateNextItem(event);\n } else {\n navigatePrevItem(event);\n }\n };\n\n const onArrowLeft = (event: React.KeyboardEvent) => {\n const leftValidDirections = ['left', 'up-right', 'down-left'];\n const rightValidDirections = ['right', 'up-left', 'down-right'];\n\n if (leftValidDirections.includes(props.direction as string)) {\n navigateNextItem(event);\n } else if (rightValidDirections.includes(props.direction as string)) {\n navigatePrevItem(event);\n } else {\n navigatePrevItem(event);\n }\n };\n\n const onArrowRight = (event: React.KeyboardEvent) => {\n const leftValidDirections = ['left', 'up-right', 'down-left'];\n const rightValidDirections = ['right', 'up-left', 'down-right'];\n\n if (leftValidDirections.includes(props.direction as string)) {\n navigatePrevItem(event);\n } else if (rightValidDirections.includes(props.direction as string)) {\n navigateNextItem(event);\n } else {\n navigateNextItem(event);\n }\n };\n\n const onEndKey = (event: React.KeyboardEvent) => {\n event.preventDefault();\n\n setFocusedOptionIndex(-1);\n navigatePrevItem(event);\n };\n\n const onHomeKey = (event: React.KeyboardEvent) => {\n event.preventDefault();\n\n setFocusedOptionIndex(-1);\n navigateNextItem(event);\n };\n\n const navigateNextItem = (event: React.KeyboardEvent) => {\n const optionIndex = findNextOptionIndex(focusedOptionIndex);\n\n changeFocusedOptionIndex(optionIndex);\n\n event.preventDefault();\n };\n\n const navigatePrevItem = (event: React.KeyboardEvent) => {\n const optionIndex = findPrevOptionIndex(focusedOptionIndex);\n\n changeFocusedOptionIndex(optionIndex);\n\n event.preventDefault();\n };\n\n const changeFocusedOptionIndex = (index: number) => {\n const items = find(elementRef.current as HTMLDivElement, '[data-pc-name=\"speeddialitem\"]');\n const filteredItems = [...items].filter((item) => {\n const element = findSingle(item, 'a');\n\n return element ? !hasClass(element, 'p-disabled') : true;\n });\n\n if (filteredItems[index]) {\n const idAttr = filteredItems[index].getAttribute('id') ?? -1;\n\n setFocusedOptionIndex(idAttr);\n\n const buttonEl = findSingle(filteredItems[index], '[type=\"button\"]') as HTMLButtonElement;\n\n if (buttonEl) {\n focus(buttonEl);\n }\n }\n };\n\n const findPrevOptionIndex = (index: string | number) => {\n const items = find(elementRef.current as HTMLDivElement, '[data-pc-name=\"speeddialitem\"]');\n const filteredItems = [...items].filter((item) => {\n const element = findSingle(item, 'a');\n\n return element ? !hasClass(element, 'p-disabled') : true;\n });\n const newIndex = index === -1 ? filteredItems[filteredItems.length - 1].id : index;\n let matchedOptionIndex = filteredItems.findIndex((link) => link.getAttribute('id') === newIndex);\n\n matchedOptionIndex = index === -1 ? filteredItems.length - 1 : matchedOptionIndex - 1;\n\n return matchedOptionIndex;\n };\n\n const findNextOptionIndex = (index: string | number) => {\n const items = find(elementRef.current as HTMLDivElement, '[data-pc-name=\"speeddialitem\"]');\n const filteredItems = [...items].filter((item) => {\n const element = findSingle(item, 'a');\n\n return element ? !hasClass(element, 'p-disabled') : true;\n });\n\n const newIndex = index === -1 ? filteredItems[0].id : index;\n\n let matchedOptionIndex = filteredItems.findIndex((link) => link.getAttribute('id') === newIndex);\n\n matchedOptionIndex = index === -1 ? 0 : matchedOptionIndex + 1;\n\n return matchedOptionIndex;\n };\n\n const getItemStyle = (index: number) => {\n const transitionDelay = calculateTransitionDelay(index);\n const pointStyle = calculatePointStyle(index);\n\n return {\n transitionDelay: `${transitionDelay}ms`,\n ...pointStyle\n };\n };\n\n return {\n state,\n //refs\n listRef,\n // methods\n registerItem,\n getItemStyle,\n onBlur,\n onKeyDown,\n onClick,\n onTogglerKeydown,\n onItemClick\n };\n }\n});\n","import type { useSpeedDialProps } from '@primereact/types/shared/speeddial';\n\nexport const defaultProps: useSpeedDialProps = {\n visible: false,\n defaultVisible: false,\n direction: 'up',\n transitionDelay: 30,\n type: 'linear',\n radius: 0,\n hideOnClickOutside: true,\n onVisibleChange: undefined\n};\n"],"mappings":"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","names":["withHeadless","useEventListener","useMountEffect","useUnmountEffect","useUpdateEffect","$dt","find","findSingle","focus","hasClass","React","defaultProps","useSpeedDial","withHeadless","defaultProps","props","elementRef","_a","_b","listRef","visibleState","setVisibleState","focusedOptionIndex","setFocusedOptionIndex","isItemClicked","itemCounter","Math_PI","state","registerItem","index","useMountEffect","button","findSingle","firstItem","wDiff","hDiff","$dt","useUpdateEffect","bindDocumentClickListener","unbindDocumentClickListener","useUnmountEffect","useEventListener","event","isOutsideClicked","hide","onBlur","onItemClick","onClick","show","calculateTransitionDelay","length","calculatePointStyle","type","radius","step","direction","x","y","onTogglerKeydown","onTogglerArrowDown","onTogglerArrowUp","onEscapeKey","onKeyDown","onArrowDown","onArrowUp","onArrowLeft","onArrowRight","onEnterKey","onHomeKey","onEndKey","navigatePrevItem","navigateNextItem","buttonEl","focus","leftValidDirections","rightValidDirections","optionIndex","findNextOptionIndex","changeFocusedOptionIndex","findPrevOptionIndex","filteredItems","find","item","element","hasClass","idAttr","newIndex","matchedOptionIndex","link","transitionDelay","pointStyle","__spreadValues"]}
1
+ {"version":3,"sources":["../../src/speeddial/useSpeedDial.ts","../../src/speeddial/useSpeedDial.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { useEventListener, useMountEffect, useUnmountEffect, useUpdateEffect } from '@primereact/hooks';\nimport { $dt } from '@primeuix/styled';\nimport { find, findSingle, focus, hasClass } from '@primeuix/utils/dom';\nimport * as React from 'react';\nimport { defaultProps } from './useSpeedDial.props';\n\nexport const useSpeedDial = withHeadless({\n name: 'useSpeedDial',\n defaultProps,\n setup: ({ props, elementRef }) => {\n const listRef = React.useRef<HTMLUListElement | null>(null);\n const [visibleState, setVisibleState] = React.useState<boolean>(props.visible ?? props.defaultVisible ?? false);\n const [focusedOptionIndex, setFocusedOptionIndex] = React.useState<string | number>(-1);\n const isItemClicked = React.useRef(false);\n const itemCounter = React.useRef(0);\n const Math_PI = 3.14159265358979;\n\n const state = {\n visible: visibleState,\n focusedOptionIndex\n };\n\n const registerItem = React.useCallback(() => {\n const index = itemCounter.current;\n\n itemCounter.current += 1;\n\n return index;\n }, []);\n\n useMountEffect(() => {\n if (props.type !== 'linear') {\n const button = findSingle(elementRef.current as HTMLDivElement, '[data-pc-name=\"button\"]') as HTMLButtonElement;\n const firstItem = findSingle(listRef.current as HTMLUListElement, '[data-pc-name=\"speeddialitem\"]') as HTMLLIElement;\n\n if (button && firstItem) {\n const wDiff = Math.abs(button.offsetWidth - firstItem.offsetWidth);\n const hDiff = Math.abs(button.offsetHeight - firstItem.offsetHeight);\n\n (listRef.current as HTMLUListElement).style.setProperty($dt('item.diff.x').name, `${wDiff / 2}px`);\n (listRef.current as HTMLUListElement).style.setProperty($dt('item.diff.y').name, `${hDiff / 2}px`);\n }\n }\n });\n\n useUpdateEffect(() => {\n if (visibleState) {\n if (props.hideOnClickOutside) {\n bindDocumentClickListener();\n }\n }\n\n return () => {\n if (props.hideOnClickOutside) {\n unbindDocumentClickListener();\n }\n };\n }, [visibleState]);\n\n useUnmountEffect(() => {\n unbindDocumentClickListener();\n });\n\n const [bindDocumentClickListener, unbindDocumentClickListener] = useEventListener({\n type: 'click',\n listener: (event) => {\n if (visibleState && isOutsideClicked(event as unknown as React.MouseEvent)) {\n hide();\n }\n\n isItemClicked.current = false;\n }\n });\n\n const isOutsideClicked = (event: React.MouseEvent) => {\n return elementRef.current && !(elementRef.current.isSameNode(event.target as Node) || elementRef.current.contains(event.target as Node));\n };\n\n const onBlur = (event: React.FocusEvent) => {\n if (!elementRef.current?.contains(event.relatedTarget as Node)) {\n setFocusedOptionIndex(-1);\n }\n };\n\n const onItemClick = (event: React.MouseEvent | React.KeyboardEvent) => {\n hide();\n\n isItemClicked.current = true;\n event.preventDefault?.();\n };\n\n const onItemKeyDown = (event: React.KeyboardEvent) => {\n if (event.code === 'Enter') {\n onItemClick(event);\n }\n };\n\n const onClick = () => {\n if (visibleState) {\n hide();\n } else {\n show();\n }\n\n isItemClicked.current = true;\n };\n\n const show = () => {\n setVisibleState(true);\n\n props.onVisibleChange?.({\n value: true\n });\n };\n\n const hide = () => {\n setVisibleState(false);\n\n props.onVisibleChange?.({\n value: false\n });\n };\n\n const calculateTransitionDelay = (index: number) => {\n const length = itemCounter.current;\n const visible = visibleState;\n\n return (visible ? index : length - index - 1) * (props.transitionDelay ?? 30);\n };\n\n const calculatePointStyle = (index: number) => {\n const type = props.type;\n\n if (type !== 'linear') {\n const length = itemCounter.current;\n const radius = (props.radius || length * 20) as number;\n\n if (type === 'circle') {\n const step = (2 * Math_PI) / length;\n\n return {\n left: `calc(${radius * Math.cos(step * index)}px + ${$dt('item.diff.x').variable})`,\n top: `calc(${radius * Math.sin(step * index)}px + ${$dt('item.diff.y').variable})`\n };\n } else if (type === 'semi-circle') {\n const direction = props.direction;\n const step = Math_PI / (length - 1);\n const x = `calc(${radius * Math.cos(step * index)}px + ${$dt('item.diff.x').variable})`;\n const y = `calc(${radius * Math.sin(step * index)}px + ${$dt('item.diff.y').variable})`;\n\n if (direction === 'up') {\n return { left: x, bottom: y };\n } else if (direction === 'down') {\n return { left: x, top: y };\n } else if (direction === 'left') {\n return { right: y, top: x };\n } else if (direction === 'right') {\n return { left: y, top: x };\n }\n } else if (type === 'quarter-circle') {\n const direction = props.direction;\n const step = Math_PI / (2 * (length - 1));\n const x = `calc(${radius * Math.cos(step * index)}px + ${$dt('item.diff.x').variable})`;\n const y = `calc(${radius * Math.sin(step * index)}px + ${$dt('item.diff.y').variable})`;\n\n if (direction === 'up-left') {\n return { right: x, bottom: y };\n } else if (direction === 'up-right') {\n return { left: x, bottom: y };\n } else if (direction === 'down-left') {\n return { right: y, top: x };\n } else if (direction === 'down-right') {\n return { left: y, top: x };\n }\n }\n }\n\n return {};\n };\n\n const onTogglerKeydown = (event: React.KeyboardEvent) => {\n switch (event.code) {\n case 'ArrowDown':\n case 'ArrowLeft':\n onTogglerArrowDown(event);\n\n break;\n\n case 'ArrowUp':\n case 'ArrowRight':\n onTogglerArrowUp(event);\n\n break;\n\n case 'Escape':\n onEscapeKey();\n\n break;\n\n default:\n break;\n }\n };\n\n const onKeyDown = (event: React.KeyboardEvent) => {\n switch (event.code) {\n case 'ArrowDown':\n onArrowDown(event);\n break;\n\n case 'ArrowUp':\n onArrowUp(event);\n break;\n\n case 'ArrowLeft':\n onArrowLeft(event);\n break;\n\n case 'ArrowRight':\n onArrowRight(event);\n break;\n\n case 'Enter':\n case 'NumpadEnter':\n case 'Space':\n onEnterKey();\n break;\n\n case 'Escape':\n onEscapeKey();\n break;\n\n case 'Home':\n onHomeKey(event);\n break;\n\n case 'End':\n onEndKey(event);\n break;\n\n default:\n break;\n }\n };\n\n const onTogglerArrowUp = (event: React.KeyboardEvent) => {\n show();\n navigatePrevItem(event);\n\n event.preventDefault();\n };\n\n const onTogglerArrowDown = (event: React.KeyboardEvent) => {\n show();\n navigateNextItem(event);\n\n event.preventDefault();\n };\n\n const onEnterKey = () => {\n hide();\n setFocusedOptionIndex(-1);\n\n const buttonEl = findSingle(elementRef.current as HTMLDivElement, 'button') as HTMLButtonElement;\n\n if (buttonEl) {\n focus(buttonEl);\n }\n };\n\n const onEscapeKey = () => {\n hide();\n setFocusedOptionIndex(-1);\n\n const buttonEl = findSingle(elementRef.current as HTMLDivElement, 'button') as HTMLButtonElement;\n\n if (buttonEl) {\n focus(buttonEl);\n }\n };\n\n const onArrowUp = (event: React.KeyboardEvent) => {\n if (props.direction === 'down') {\n navigatePrevItem(event);\n } else {\n navigateNextItem(event);\n }\n };\n\n const onArrowDown = (event: React.KeyboardEvent) => {\n if (props.direction === 'down') {\n navigateNextItem(event);\n } else {\n navigatePrevItem(event);\n }\n };\n\n const onArrowLeft = (event: React.KeyboardEvent) => {\n const leftValidDirections = ['left', 'up-right', 'down-left'];\n const rightValidDirections = ['right', 'up-left', 'down-right'];\n\n if (leftValidDirections.includes(props.direction as string)) {\n navigateNextItem(event);\n } else if (rightValidDirections.includes(props.direction as string)) {\n navigatePrevItem(event);\n } else {\n navigatePrevItem(event);\n }\n };\n\n const onArrowRight = (event: React.KeyboardEvent) => {\n const leftValidDirections = ['left', 'up-right', 'down-left'];\n const rightValidDirections = ['right', 'up-left', 'down-right'];\n\n if (leftValidDirections.includes(props.direction as string)) {\n navigatePrevItem(event);\n } else if (rightValidDirections.includes(props.direction as string)) {\n navigateNextItem(event);\n } else {\n navigateNextItem(event);\n }\n };\n\n const onEndKey = (event: React.KeyboardEvent) => {\n event.preventDefault();\n\n setFocusedOptionIndex(-1);\n navigatePrevItem(event);\n };\n\n const onHomeKey = (event: React.KeyboardEvent) => {\n event.preventDefault();\n\n setFocusedOptionIndex(-1);\n navigateNextItem(event);\n };\n\n const navigateNextItem = (event: React.KeyboardEvent) => {\n const optionIndex = findNextOptionIndex(focusedOptionIndex);\n\n changeFocusedOptionIndex(optionIndex);\n\n event.preventDefault();\n };\n\n const navigatePrevItem = (event: React.KeyboardEvent) => {\n const optionIndex = findPrevOptionIndex(focusedOptionIndex);\n\n changeFocusedOptionIndex(optionIndex);\n\n event.preventDefault();\n };\n\n const changeFocusedOptionIndex = (index: number) => {\n const items = find(elementRef.current as HTMLDivElement, '[data-pc-name=\"speeddialitem\"]');\n const filteredItems = [...items].filter((item) => {\n const element = findSingle(item, 'a');\n\n return element ? !hasClass(element, 'p-disabled') : true;\n });\n\n if (filteredItems[index]) {\n const idAttr = filteredItems[index].getAttribute('id') ?? -1;\n\n setFocusedOptionIndex(idAttr);\n\n const buttonEl = findSingle(filteredItems[index], '[type=\"button\"]') as HTMLButtonElement;\n\n if (buttonEl) {\n focus(buttonEl);\n }\n }\n };\n\n const findPrevOptionIndex = (index: string | number) => {\n const items = find(elementRef.current as HTMLDivElement, '[data-pc-name=\"speeddialitem\"]');\n const filteredItems = [...items].filter((item) => {\n const element = findSingle(item, 'a');\n\n return element ? !hasClass(element, 'p-disabled') : true;\n });\n const newIndex = index === -1 ? filteredItems[filteredItems.length - 1].id : index;\n let matchedOptionIndex = filteredItems.findIndex((link) => link.getAttribute('id') === newIndex);\n\n matchedOptionIndex = index === -1 ? filteredItems.length - 1 : matchedOptionIndex - 1;\n\n return matchedOptionIndex;\n };\n\n const findNextOptionIndex = (index: string | number) => {\n const items = find(elementRef.current as HTMLDivElement, '[data-pc-name=\"speeddialitem\"]');\n const filteredItems = [...items].filter((item) => {\n const element = findSingle(item, 'a');\n\n return element ? !hasClass(element, 'p-disabled') : true;\n });\n\n const newIndex = index === -1 ? filteredItems[0].id : index;\n\n let matchedOptionIndex = filteredItems.findIndex((link) => link.getAttribute('id') === newIndex);\n\n matchedOptionIndex = index === -1 ? 0 : matchedOptionIndex + 1;\n\n return matchedOptionIndex;\n };\n\n const getItemStyle = (index: number) => {\n const transitionDelay = calculateTransitionDelay(index);\n const pointStyle = calculatePointStyle(index);\n\n return {\n transitionDelay: `${transitionDelay}ms`,\n ...pointStyle\n };\n };\n\n return {\n state,\n //refs\n listRef,\n // methods\n registerItem,\n getItemStyle,\n onBlur,\n onKeyDown,\n onClick,\n onTogglerKeydown,\n onItemClick,\n onItemKeyDown\n };\n }\n});\n","import type { useSpeedDialProps } from '@primereact/types/shared/speeddial';\n\nexport const defaultProps: useSpeedDialProps = {\n visible: false,\n defaultVisible: false,\n direction: 'up',\n transitionDelay: 30,\n type: 'linear',\n radius: 0,\n hideOnClickOutside: true,\n onVisibleChange: undefined\n};\n"],"mappings":"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","names":["withHeadless","useEventListener","useMountEffect","useUnmountEffect","useUpdateEffect","$dt","find","findSingle","focus","hasClass","React","defaultProps","useSpeedDial","withHeadless","defaultProps","props","elementRef","_a","_b","listRef","visibleState","setVisibleState","focusedOptionIndex","setFocusedOptionIndex","isItemClicked","itemCounter","Math_PI","state","registerItem","index","useMountEffect","button","findSingle","firstItem","wDiff","hDiff","$dt","useUpdateEffect","bindDocumentClickListener","unbindDocumentClickListener","useUnmountEffect","useEventListener","event","isOutsideClicked","hide","onBlur","onItemClick","onItemKeyDown","onClick","show","calculateTransitionDelay","length","calculatePointStyle","type","radius","step","direction","x","y","onTogglerKeydown","onTogglerArrowDown","onTogglerArrowUp","onEscapeKey","onKeyDown","onArrowDown","onArrowUp","onArrowLeft","onArrowRight","onEnterKey","onHomeKey","onEndKey","navigatePrevItem","navigateNextItem","buttonEl","focus","leftValidDirections","rightValidDirections","optionIndex","findNextOptionIndex","changeFocusedOptionIndex","findPrevOptionIndex","filteredItems","find","item","element","hasClass","idAttr","newIndex","matchedOptionIndex","link","transitionDelay","pointStyle","__spreadValues"]}
@@ -41,5 +41,6 @@ export declare const useSpeedDial: (inProps?: unknown) => import("@primereact/ty
41
41
  onKeyDown: (event: React.KeyboardEvent) => void;
42
42
  onClick: () => void;
43
43
  onTogglerKeydown: (event: React.KeyboardEvent) => void;
44
- onItemClick: (event: React.MouseEvent) => void;
44
+ onItemClick: (event: React.MouseEvent | React.KeyboardEvent) => void;
45
+ onItemKeyDown: (event: React.KeyboardEvent) => void;
45
46
  }>;
package/toast/index.d.ts CHANGED
@@ -1,2 +1,3 @@
1
+ export * from './toastStore';
1
2
  export * from './useToast';
2
3
  export * from './useToast.props';
package/toast/index.mjs CHANGED
@@ -1,2 +1,2 @@
1
- var vt=Object.defineProperty,ht=Object.defineProperties;var Tt=Object.getOwnPropertyDescriptors;var Y=Object.getOwnPropertySymbols;var gt=Object.prototype.hasOwnProperty,xt=Object.prototype.propertyIsEnumerable;var L=(r,o,t)=>o in r?vt(r,o,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[o]=t,i=(r,o)=>{for(var t in o||(o={}))gt.call(o,t)&&L(r,t,o[t]);if(Y)for(var t of Y(o))xt.call(o,t)&&L(r,t,o[t]);return r},n=(r,o)=>ht(r,Tt(o));var O=(r,o,t)=>new Promise((a,e)=>{var s=l=>{try{d(t.next(l))}catch(b){e(b)}},p=l=>{try{d(t.throw(l))}catch(b){e(b)}},d=l=>l.done?a(l.value):Promise.resolve(l.value).then(s,p);d((t=t.apply(r,o)).next())});import{withHeadless as so}from"@primereact/core/headless";import{Component as eo}from"@primereact/core/component";import{useToast as ro}from"@primereact/headless/toast";import{styles as ao}from"@primereact/styles/toast";import{withComponent as bt}from"@primereact/core/component";import{styles as Pt}from"@primereact/styles/base";var m=({name:r="UnknownComponent",defaultProps:o,styles:t=n(i({},Pt),{name:"global"}),components:a,setup:e,render:s})=>bt({name:r,defaultProps:o,styles:t,components:a,setup:e,render:s});import*as C from"react";import{createOptionalContext as yt}from"@primereact/core/utils";var[z,v]=yt();import*as A from"@primereact/headless/toast";var N=n(i({},A.defaultProps),{richColors:!1});import{Component as It}from"@primereact/core/component";import{styles as Ct}from"@primereact/styles/toast";import{mergeProps as Rt}from"@primeuix/utils";import*as F from"react";import{createOptionalContext as wt}from"@primereact/core/utils";var[U,g]=wt();var X={as:"button"};var K=m({name:"ToastAction",defaultProps:X,styles:Ct,setup(){let r=g();return{toast:v(),toastItem:r}},render(r){var d,l;let{id:o,props:t,ptmi:a,toastItem:e}=r,s=(d=e==null?void 0:e.props.data.action)!=null?d:{},p=Rt(i({id:o},s),a("root"));return F.createElement(It,{pIf:!!(e!=null&&e.props.data.action),instance:r,attrs:p,children:(l=s==null?void 0:s.children)!=null?l:t.children})}});import{Component as Et}from"@primereact/core/component";import{styles as kt}from"@primereact/styles/toast";import{mergeProps as Dt}from"@primeuix/utils";import*as V from"react";var $={as:"button"};var j=m({name:"ToastClose",defaultProps:$,styles:kt,setup(){let r=g();return{toast:v(),toastItem:r}},render(r){let{id:o,props:t,ptmi:a,toastItem:e}=r,s=Dt({id:o,onClick:e==null?void 0:e.handleCloseOnClick},a("root"));return V.createElement(Et,{pIf:(e==null?void 0:e.props.data.variant)!=="loading"&&(e==null?void 0:e.props.data.dismissible)!==!1,instance:r,attrs:s,children:t.children})}});import{Component as Mt}from"@primereact/core/component";import{styles as St}from"@primereact/styles/toast";import{mergeProps as Ht}from"@primeuix/utils";import*as B from"react";var q={as:"div"};var G=m({name:"ToastDescription",defaultProps:q,styles:St,setup(){let r=g();return{toast:v(),toastItem:r}},render(r){var e;let{props:o,toastItem:t}=r,a=Ht({className:"p-toast-description"});return B.createElement(Mt,{instance:r,attrs:a,children:(e=o.children)!=null?e:t==null?void 0:t.props.data.description})}});import{Component as Yt}from"@primereact/core/component";import{Icon as Lt}from"@primereact/core/icon";import{CheckIcon as Ot,ExclamationTriangleIcon as zt,InfoCircleIcon as At,SpinnerIcon as Nt,TimesCircleIcon as Ut}from"@primereact/icons";import{mergeProps as Xt}from"@primeuix/utils";import*as P from"react";import*as J from"@primereact/core/icon";var Q=i({},J.defaultIconProps);var W={danger:P.createElement(Ut,null),warn:P.createElement(zt,null),info:P.createElement(At,null),success:P.createElement(Ot,null),loading:P.createElement(Nt,null)},Z=m({name:"ToastIcon",defaultProps:Q,setup(){let r=v(),o=g();return{toast:r,toastItem:o}},render(r){var p,d;let{props:o,ptmi:t,toast:a,toastItem:e}=r,s=Xt(i({className:a==null?void 0:a.cx("icon")},(e==null?void 0:e.props.data.variant)==="loading"&&{spin:!0}),a==null?void 0:a.ptm("icon"),t("root"));return P.createElement(Yt,{pIf:!!(e!=null&&e.props.data.icon)||!!W[e==null?void 0:e.props.data.variant],as:Lt,instance:r,attrs:s,children:(d=(p=e==null?void 0:e.props.data.icon)!=null?p:W[e==null?void 0:e.props.data.variant])!=null?d:o.children})}});import{Component as Ft}from"@primereact/core/component";import{useToastItem as Kt}from"@primereact/headless/toast/item";import{styles as $t}from"@primereact/styles/toast";import{cn as Vt,mergeProps as jt}from"@primeuix/utils";import*as S from"react";import*as _ from"@primereact/headless/toast/item";var tt=n(i({},_.defaultProps),{as:"div"});var ot=m({name:"ToastItem",defaultProps:tt,styles:$t,setup(r){let o=Kt(r.inProps),t=v();return n(i({},o),{toast:t})},render(r){var R;let{id:o,props:t,ptmi:a,toast:e,state:s,offset:p,onPointerDown:d,onPointerMove:l,onPointerUp:b,onDragEnd:E,index:I,onKeyDown:k}=r,{data:y}=t,D=jt({id:o,className:Vt("p-toast"),tabIndex:0,role:"alert","aria-live":"assertive","aria-atomic":"true",style:{"--p-toast-index":I,"--p-toast-offset":p+"px","--p-swipe-amount-x":"0px","--p-swipe-amount-y":"0px","--p-real-height":s.realHeight+"px"},"data-overflow":I>2,"data-removed":y.removed,"data-expanded":e==null?void 0:e.state.isExpanded,"data-mounted":s==null?void 0:s.isMounted,"data-front":I===0,"data-swiping":s==null?void 0:s.isSwiping,"data-swipe-out":s==null?void 0:s.isSwipeOut,"data-swipe-out-direction":s==null?void 0:s.swipeOutDirection,"data-variant":y.variant,"data-id":y.id,"data-rich-colors":e==null?void 0:e.props.richColors,onPointerDown:d,onPointerMove:l,onPointerUp:b,onDragEnd:E,onKeyDown:k},a("root"));return S.createElement(U,{value:r},S.createElement(Ft,{instance:r,attrs:D,children:(R=y.jsx)!=null?R:t.children}))}});import{usePortal as qt}from"@primereact/headless/portal";import{resolve as Bt}from"@primeuix/utils";import{createPortal as Gt}from"react-dom";import*as et from"@primereact/headless/portal";var rt=n(i({},et.defaultProps),{element:void 0,appendTo:"body"});var at=m({name:"Portal",defaultProps:rt,setup(r){return qt(r.inProps)},render(r){let{props:o,mountedState:t}=r,a=o.element||o.children;if(!a||!t)return null;let e=Bt(o.appendTo,r);if(e==="self")return a;let s=e?typeof e=="string"?document.querySelector(e)||document.body:e:document.body;return Gt(a,s)}});import{createOptionalContext as Jt}from"@primereact/core/utils";var[Le,Oe]=Jt();var st=at;import{Component as Qt}from"@primereact/core/component";import{styles as Wt}from"@primereact/styles/toast";import{mergeProps as Zt}from"@primeuix/utils";import*as nt from"react";var it={as:"div"};var pt=m({name:"ToastRegion",defaultProps:it,styles:Wt,setup(){return{toast:v()}},render(r){var e,s;let{props:o,toast:t}=r,a=Zt({role:"region",className:"p-toast-region",tabIndex:-1,onMouseEnter:t==null?void 0:t.onRegionMouseEnter,onMouseLeave:t==null?void 0:t.onRegionMouseLeave,onMouseMove:t==null?void 0:t.onRegionMouseMove,onDragEnd:t==null?void 0:t.onRegionDragEnd,onPointerDown:t==null?void 0:t.onRegionPointerDown,onPointerUp:t==null?void 0:t.onRegionPointerUp,"data-position":t==null?void 0:t.props.position,"data-expanded":t==null?void 0:t.state.isExpanded,style:{"--gap":`${t==null?void 0:t.props.gap}px`,"--raise-factor":(e=t==null?void 0:t.props.position)!=null&&e.includes("top")?1:-1,"--front-toast-height":`${((s=t==null?void 0:t.toasts[0])==null?void 0:s.height)||0}px`}});return nt.createElement(Qt,{instance:r,attrs:a,children:o.children})}});import{Component as _t}from"@primereact/core/component";import{styles as to}from"@primereact/styles/toast";import{mergeProps as oo}from"@primeuix/utils";import*as mt from"react";var ct={as:"div"};var dt=m({name:"ToastTitle",defaultProps:ct,styles:to,setup(){let r=g();return{toast:v(),toastItem:r}},render(r){var e;let{props:o,toastItem:t}=r,a=oo({className:"p-toast-title"});return mt.createElement(_t,{instance:r,attrs:a,children:(e=o.children)!=null?e:t==null?void 0:t.props.data.title})}});var Rr=m({name:"Toast",defaultProps:N,styles:ao,setup(r){return ro(r.inProps)},render(r){let{props:o}=r;return C.createElement(z,{value:r},C.createElement(eo,{as:C.Fragment,instance:r,attrs:{},children:o.children}))},components:{Portal:st,Region:pt,Item:ot,Close:j,Title:dt,Description:G,Icon:Z,Action:K}});var H=class{constructor(){this.toasts=[];this.listeners=new Set;this.toastCounter=0;this.add=(o,t)=>(this.toasts.push(n(i({},t),{id:o})),this.emit({type:"add",toast:n(i({},t),{id:o})}),o);this.create=o=>{let t=o.id||this.generateId();return this.toasts.find(e=>e.id===t)?(this.update(t,o),t):this.add(t,o)};this.remove=o=>{if(o){let t=this.toasts.findIndex(a=>a.id===o);t>-1&&(this.toasts[t].removed=!0,this.toasts[t].height=0,this.emit({type:"remove",toastId:o}))}else this.toasts.forEach(t=>{this.remove(t.id)})};this.delete=o=>{o?(this.toasts=this.toasts.filter(t=>t.id!==o),this.emit({type:"delete",toastId:o})):(this.toasts=[],this.emit({type:"clear"}))};this.update=(o,t)=>{let a=this.toasts.findIndex(e=>e.id===o);a>-1&&(this.toasts[a]=i(i({},this.toasts[a]),t),this.emit({type:"update",toast:this.toasts[a]}))};this.success=o=>this.create(n(i({},o),{variant:"success"}));this.danger=o=>this.create(n(i({},o),{variant:"danger"}));this.warn=o=>this.create(n(i({},o),{variant:"warn"}));this.info=o=>this.create(n(i({},o),{variant:"info"}));this.loading=o=>this.create(n(i({},o),{variant:"loading"}));this.custom=(o,t)=>{let a=(t==null?void 0:t.id)||this.generateId(),e=i({id:a,variant:"custom",jsx:typeof o=="function"?o(a):o},t);return this.create(e)};this.promise=(o,t)=>O(this,null,function*(){var e;let a=i({id:(e=t.loading.id)!=null?e:this.generateId(),variant:"loading"},t.loading);return this.create(a),o.then(s=>{let p=typeof t.success=="function"?t.success(s):t.success;return p?this.update(a.id,n(i({},p),{id:a.id,variant:"success"})):this.remove(a.id),s}).catch(s=>{let p=typeof t.error=="function"?t.error(s):t.error;throw p?this.update(a.id,n(i({},p),{id:a.id,variant:"danger"})):this.remove(a.id),s})});this.toasts=[],this.listeners=new Set}generateId(){return`toast-${++this.toastCounter}-${Date.now()}`}emit(o){this.listeners.forEach(t=>t(o))}subscribe(o){return this.listeners.add(o),()=>this.listeners.delete(o)}getToasts(){return[...this.toasts]}},h=new H,kr=Object.assign(h.create,{success:h.success,danger:h.danger,warn:h.warn,info:h.info,loading:h.loading,remove:h.remove,clear:h.delete,promise:h.promise,custom:h.custom,update:h.update});import*as T from"react";var lt={timeout:5e3,gap:12,position:"bottom-right",icons:void 0,group:void 0};var Xr=so({name:"useToast",defaultProps:lt,setup:({props:r})=>{let[o,t]=T.useState(!1),[a,e]=T.useState(!1),[s,p]=T.useState([]),d=T.useRef(null),l=T.useMemo(()=>r.group?s.filter(u=>u.group===r.group):s.filter(u=>!u.group),[s,r.group]),b={isExpanded:o,isInteracting:a},E=()=>{let u=document.activeElement;u instanceof HTMLElement&&!u.closest('[role="dialog"][aria-live="assertive"]')&&(d.current=u)},I=u=>{let f=document.activeElement;if(!u||!(f instanceof HTMLElement)||!u.contains(f))return;let c=null;c=u.nextElementSibling,c||(c=u.previousElementSibling),c&&c.tabIndex>=0?c.focus():d.current&&document.contains(d.current)&&(d.current.focus(),d.current=null)},k=()=>{t(!0)},y=()=>{t(!0)},D=()=>{a||t(!1)},R=()=>{t(!1)},ut=u=>{u.target instanceof HTMLElement&&u.target.dataset.dismissible==="false"||e(!0)},ft=()=>{e(!1)};return T.useEffect(()=>{l.length<=1&&t(!1)},[l]),T.useEffect(()=>h.subscribe(f=>{switch(f.type){case"add":f.toast&&p(c=>[f.toast,...c]);break;case"remove":f.toastId&&p(c=>{let x=!1,M=c.map(w=>w.id!==f.toastId||w.removed&&w.height===0?w:(x=!0,n(i({},w),{removed:!0,height:0})));return x?M:c});break;case"delete":f.toastId&&p(c=>{let x=c.findIndex(M=>M.id===f.toastId);return x===-1?c:[...c.slice(0,x),...c.slice(x+1)]});break;case"update":f.toast&&p(c=>c.map(x=>x.id===f.toast.id?f.toast:x));break;case"clear":p([]);break;default:break}}),[]),{state:b,toasts:l,onRegionMouseEnter:k,onRegionMouseMove:y,onRegionMouseLeave:D,onRegionDragEnd:R,onRegionPointerDown:ut,onRegionPointerUp:ft,setToasts:p,handleFocusElement:I,handleToastFocus:E}}});export{lt as defaultProps,Xr as useToast};
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=(a,e,t)=>e in a?N(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,n=(a,e)=>{for(var t in e||(e={}))B.call(e,t)&&I(a,t,e[t]);if(y)for(var t of y(e))C.call(e,t)&&I(a,t,e[t]);return a},m=(a,e)=>$(a,q(e));var E=(a,e,t)=>new Promise((r,s)=>{var f=u=>{try{c(t.next(u))}catch(d){s(d)}},i=u=>{try{c(t.throw(u))}catch(d){s(d)}},c=u=>u.done?r(u.value):Promise.resolve(u.value).then(f,i);c((t=t.apply(a,e)).next())});var O=0,R=()=>`toast-${++O}-${Date.now()}`,v=class{constructor(){this.snapshot=()=>this.toasts;this.add=e=>this.create(e);this.update=(e,t)=>{this.commit(r=>r.map(s=>s.id===e?m(n(n({},s),t),{id:e}):s))};this.dismiss=e=>{if(e===void 0){this.commit(r=>r.map(s=>m(n({},s),{removed:!0})));return}if(this.toasts.some(r=>r.id===e))return this.commit(r=>r.map(s=>s.id===e?m(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=()=>{this.toasts.length&&this.commit([])};this.get=e=>this.toasts.find(t=>t.id===e);this.success=e=>this.create(m(n({},e),{variant:"success"}));this.danger=e=>this.create(m(n({},e),{variant:"danger"}));this.warn=e=>this.create(m(n({},e),{variant:"warn"}));this.info=e=>this.create(m(n({},e),{variant:"info"}));this.loading=e=>{var t;return this.create(m(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(m(n({},t),{id:r,variant:"custom",jsx:s}))};this.promise=(e,t)=>E(this,null,function*(){var f,i,c;let r=m(n({},t.loading),{id:(f=t.loading.id)!=null?f:R(),variant:"loading"}),s=this.create(r);try{let u=yield e,d=typeof t.success=="function"?t.success(u):t.success;return d?this.update(s,m(n({},d),{id:s,variant:(i=d.variant)!=null?i:"success",removed:!1})):this.remove(s),u}catch(u){let d=typeof t.error=="function"?t.error(u):t.error;throw d?this.update(s,m(n({},d),{id:s,variant:(c=d.variant)!=null?c:"danger",removed:!1})):this.remove(s),u}});this.toasts=[],this.listeners=new Set}emit(){this.listeners.forEach(e=>e())}subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(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]=m(n(n({},c[i]),e),{id:t,dismissible:r,removed:!1}),c}return[m(n({},e),{id:t,dismissible:r,removed:!1}),...f]}),t}},T=new v,U=a=>T.add(a),k=Object.assign(U,{success:T.success,danger:T.danger,warn:T.warn,info:T.info,loading:T.loading,dismiss:T.dismiss,custom:T.custom,remove:T.remove,promise:T.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:a})=>{let e=l.useSyncExternalStore(o=>T.subscribe(o),()=>T.snapshot(),()=>T.snapshot()),t=l.useMemo(()=>a.group?e.filter(o=>o.group===a.group):e.filter(o=>!o.group),[e,a.group]),[r,s]=l.useState([]),[f,i]=l.useState(!1),[c,u]=l.useState(!1),d=l.useRef(!1),x={isExpanded:f,isInteracting:c,heights:r},S=()=>{i(!0)},M=()=>{i(!0)},P=()=>{if(!c&&!d.current){if(e.some(o=>o.removed===!0))return;i(!1)}},w=()=>{i(!1)},H=o=>{o.target instanceof HTMLElement&&o.target.dataset.dismissible==="false"||u(!0)},L=()=>{u(!1)},F=o=>{let h=o.currentTarget,p=document.activeElement;p&&p.matches(":focus-visible")&&h.contains(p)&&(d.current=!0,i(!0))},A=o=>{let h=o.currentTarget,p=o.relatedTarget;p&&h.contains(p)||(d.current=!1,!c&&(e.some(g=>g.removed===!0)||i(!1)))},D=o=>{if(!o)return;let h=document.activeElement;if(!o.contains(h))return;let p=o.nextElementSibling,g=o.previousElementSibling;requestAnimationFrame(()=>{p?p.focus({preventScroll:!0}):g&&g.focus({preventScroll:!0})})};return l.useEffect(()=>{t.length<=1&&i(!1)},[t]),{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{T as ToastStore,b as defaultProps,k as toast,X as useToast};
2
2
  //# sourceMappingURL=index.mjs.map