@primereact/headless 11.0.0 → 11.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +26 -20
- package/animateonscroll/index.mjs +1 -1
- package/carousel/index.mjs +1 -1
- package/contextmenu/index.mjs +1 -1
- package/datatable/features/index.mjs +8 -8
- package/datatable/index.mjs +8 -8
- package/datepicker/index.mjs +1 -1
- package/dialog/index.mjs +1 -1
- package/dialog/useDialog.d.ts +12 -12
- package/divider/useDivider.d.ts +1 -1
- package/dnd/index.mjs +1 -1
- package/drawer/index.mjs +1 -1
- package/drawer/useDrawer.d.ts +3 -3
- package/gallery/index.mjs +1 -1
- package/gallery/item/index.mjs +1 -1
- package/inputcolor/index.mjs +1 -1
- package/inputpassword/index.mjs +1 -1
- package/listbox/index.mjs +1 -1
- package/menu/checkboxitem/index.mjs +1 -1
- package/menu/index.mjs +1 -1
- package/menu/radioitem/index.mjs +1 -1
- package/message/index.mjs +1 -1
- package/navigationmenu/index.mjs +1 -1
- package/orderlist/index.mjs +1 -1
- package/organizationchart/index.mjs +1 -1
- package/package.json +8 -4
- package/picklist/index.mjs +1 -1
- package/popover/index.mjs +1 -1
- package/progressbar/index.mjs +1 -1
- package/radiobutton/index.mjs +1 -1
- package/radiobuttongroup/index.mjs +1 -1
- package/scrollarea/index.mjs +1 -1
- package/sidebar/index.mjs +1 -1
- package/sidebar/useSidebar.d.ts +79 -25
- package/speeddial/index.mjs +1 -1
- package/styleclass/index.mjs +1 -1
- package/tabs/index.mjs +1 -1
- package/tabs/useTabs.d.ts +6 -0
- package/terminal/index.mjs +1 -1
- package/timeline/useTimeline.d.ts +4 -4
- package/toast/index.mjs +1 -1
- package/toast/useToast.d.ts +1 -1
- package/toaster/index.mjs +1 -1
- package/togglebutton/index.mjs +1 -1
- package/togglebuttongroup/index.mjs +1 -1
- package/toggleswitch/index.mjs +1 -1
- package/toggleswitch/useToggleSwitch.d.ts +14 -0
- package/tooltip/index.mjs +1 -1
- package/tree/index.mjs +1 -1
- package/tree/useTreeKeyboard.d.ts +1 -1
package/README.md
CHANGED
|
@@ -1,35 +1,41 @@
|
|
|
1
|
-
|
|
1
|
+
[](https://primereact.dev)
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
# @primereact/headless
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Behavior-only React hooks. State, keyboard navigation, focus management, selection logic, overlay positioning and ARIA wiring for the full PrimeReact component set, with no markup and no CSS attached.
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
```bash
|
|
8
|
+
npm install @primereact/headless
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Usage
|
|
12
|
+
|
|
13
|
+
Each hook lives in its own subpath and returns prop getters that are spread onto plain elements. Every getter carries `data-scope` and `data-part` markers for CSS to target, plus whatever event handlers, ARIA attributes and state flags the component needs.
|
|
8
14
|
|
|
9
15
|
```tsx
|
|
16
|
+
'use client';
|
|
10
17
|
import { useButton } from '@primereact/headless/button';
|
|
11
18
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
<span {...labelProps} />
|
|
22
|
-
</button>
|
|
23
|
-
);
|
|
19
|
+
export function MyButton({ children, ...props }) {
|
|
20
|
+
const { rootProps } = useButton(props);
|
|
21
|
+
|
|
22
|
+
return (
|
|
23
|
+
<button {...rootProps} className="rounded-md bg-neutral-900 px-4 py-2 text-sm font-medium text-white">
|
|
24
|
+
{children}
|
|
25
|
+
</button>
|
|
26
|
+
);
|
|
27
|
+
}
|
|
24
28
|
```
|
|
25
29
|
|
|
26
|
-
|
|
30
|
+
Larger components return one getter per element, along with the state and handlers behind them. `useSelect`, for example, exposes `triggerProps`, `popupProps`, `listProps` and `indicatorProps` next to `rootProps`.
|
|
27
31
|
|
|
28
|
-
|
|
32
|
+
The application is wrapped once with `PrimeReactProvider` from `@primereact/core`. No theme or preset is needed.
|
|
29
33
|
|
|
30
|
-
|
|
34
|
+
## Documentation
|
|
31
35
|
|
|
32
|
-
|
|
36
|
+
- [Installation](https://primereact.dev/docs/headless/guides/installation)
|
|
37
|
+
- [Hooks](https://primereact.dev/docs/headless/components/autocomplete)
|
|
38
|
+
- [MCP server](https://www.npmjs.com/package/@primereact/mcp)
|
|
33
39
|
|
|
34
40
|
## License
|
|
35
41
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{withHeadless as I}from"@primereact/core/headless";import{useIntersectionObserver as y}from"@primereact/hooks/use-intersection-observer";import{useMountEffect as P}from"@primereact/hooks/use-mount-effect";import{useUnmountEffect as x}from"@primereact/hooks/use-unmount-effect";import{addClass as A,removeClass as i}from"@primeuix/utils/dom";import*as n from"react";var R={enterClassName:"",leaveClassName:"",once:!1,root:void 0,rootMargin:void 0,threshold:.5};var q=I({name:"useAnimateOnScroll",defaultProps:R,setup({props:C}){let{enterClassName:r,leaveClassName:s,once:u,...E}=C,t=n.useRef(null),
|
|
1
|
+
import{withHeadless as I}from"@primereact/core/headless";import{useIntersectionObserver as y}from"@primereact/hooks/use-intersection-observer";import{useMountEffect as P}from"@primereact/hooks/use-mount-effect";import{useUnmountEffect as x}from"@primereact/hooks/use-unmount-effect";import{addClass as A,removeClass as i}from"@primeuix/utils/dom";import*as n from"react";var R={enterClassName:"",leaveClassName:"",once:!1,root:void 0,rootMargin:void 0,threshold:.5};var q=I({name:"useAnimateOnScroll",defaultProps:R,setup({props:C}){let{enterClassName:r,leaveClassName:s,once:u,...E}=C,t=n.useRef(null),v=n.useRef(!1),a=n.useRef(null),o=n.useRef(void 0),L=n.useCallback(e=>{t.current=e},[]),{observe:h,unobserve:m}=y({...E,onIntersect:([e])=>{e.isIntersecting?O():k(),v.current=!0}}),{observe:p,unobserve:l}=y({threshold:0,onIntersect:([e])=>{let c=t.current;c&&e?.boundingClientRect.top>0&&!e.isIntersecting&&(c.style.opacity=r?"0":"",r&&i(c,r),s&&i(c,s),l(c),c.removeAttribute("data-enter"),c.removeAttribute("data-leave"),o.current=void 0)}}),b=n.useCallback(()=>{let e=t.current;e&&(m(e),l(e),v.current=!1)},[m,l]),d=n.useCallback(()=>{let e=t.current;e&&a.current&&(e.removeEventListener("animationend",a.current),e.removeEventListener("transitionend",a.current),a.current=null)},[]),f=n.useCallback(()=>{let e=t.current;e&&(a.current||(a.current=()=>{e&&(r&&i(e,r),s&&i(e,s),u||p(e),d(),o.current==="leave"&&(e.style.opacity="0"),o.current==="enter"&&(e.style.opacity=""),e.removeAttribute("data-enter"),e.removeAttribute("data-leave"),o.current=void 0)},e.addEventListener("animationend",a.current),e.addEventListener("transitionend",a.current)))},[r,s,u,p,d]),O=n.useCallback(()=>{let e=t.current;!e||o.current!==void 0||o.current!=="enter"&&(e.style.opacity="",r&&(s&&i(e,s),A(e,r??""),e.setAttribute("data-enter",""),o.current="enter",f(),u&&setTimeout(()=>{b()},0)))},[o,r,s,u,b,f]),k=n.useCallback(()=>{let e=t.current;!e||o.current!==void 0||o.current!=="leave"&&(s?(r&&i(e,r),A(e,s??""),f(),o.current="leave",e.setAttribute("data-leave","")):e.style.opacity="0")},[o,r,s,f]);return n.useLayoutEffect(()=>{t.current&&r&&(t.current.style.opacity="0")},[r]),P(()=>{t.current&&setTimeout(()=>t.current&&h(t.current),0)}),x(()=>{t.current&&(t.current.removeAttribute("data-enter"),t.current.removeAttribute("data-leave"),m(t.current),l(t.current),d())}),{state:{},rootProps:{ref:L,"data-scope":"animateonscroll","data-part":"root"}}}});export{R as defaultProps,q as useAnimateOnScroll};
|
package/carousel/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{withHeadless as
|
|
1
|
+
import{withHeadless as be}from"@primereact/core/headless";import{useDirection as Pe}from"@primereact/hooks/use-direction";import{isRTL as ce}from"@primeuix/utils";import*as r from"react";var oe={orientation:"horizontal",align:"start",loop:!1,snapType:"mandatory",spacing:16,autoSize:!1,slidesPerPage:1,page:void 0,defaultPage:0,onPageChange:void 0,slide:void 0,onSlideChange:void 0};var ie="[data-item]";function ye(t,u){if(t.size!==u.size)return!1;for(let y of t)if(!u.has(y))return!1;return!0}var Ie=be({name:"useCarousel",defaultProps:oe,setup({props:t}){let[u,y]=r.useState(!1),[J,le]=r.useState(!1),[G,ue]=r.useState(!1),[R,fe]=r.useState(new Set),[c,de]=r.useState(t.page??t.defaultPage??0),p=r.useRef(c);p.current=c;let i=r.useRef(null),f=r.useRef(new Set),H=r.useRef([]),_=r.useRef(!1),T=r.useRef(!1),E=r.useRef(null),x=r.useRef(null),b=r.useRef(null),g=r.useRef(null),v=r.useRef(null),A=r.useRef(new Set),z=r.useCallback(e=>{let n=requestAnimationFrame(()=>{A.current.delete(n),e()});return A.current.add(n),n},[]),O=r.useRef({x:0,y:0}),k=r.useRef(!1),Re=Pe(i),j=r.useRef(new Set),Q=r.useRef(new Set),w=r.useCallback((e,n,s)=>{if(!n)return;let a=new Set(e.querySelectorAll(ie));s.forEach(o=>{a.has(o)||(n.unobserve(o),s.delete(o))}),a.forEach(o=>{s.has(o)||(n.observe(o),s.add(o))})},[]),M=r.useCallback(e=>{w(e,b.current,j.current)},[w]),D=r.useCallback(e=>{w(e,x.current,Q.current)},[w]);function V(){let e=i.current;if(!e)return[];let n=t.orientation!=="vertical",s=n&&ce(e),a=n?e.clientWidth:e.clientHeight,o=Math.max(0,n?e.scrollWidth-a:e.scrollHeight-a),l=[];H.current=[];let d=e.querySelectorAll(ie),I=d.length;d.forEach((S,Se)=>{S.setAttribute("aria-label",`${Se+1} / ${I}`);let B=n?S.clientWidth:S.clientHeight,$=n?s?e.scrollWidth-S.offsetLeft-B:S.offsetLeft:S.offsetTop,F=$;t.align==="center"?F=$-(a-B)/2:t.align==="end"&&(F=$-(a-B));let se=Math.max(0,Math.min(F,o));H.current.push(se),l.push(se)});let q=new Set(l.map(Number));ye(R,q)||(f.current=q,fe(q))}function W(e,n){if(!t.loop){let s=f.current.size||R.size,a=!1,o=!1;e===0&&(o=!0),e===s-1&&(a=!0),le(a),ue(o)}de(e),t.onPageChange?.({originalEvent:n,value:e}),t.onSlideChange?.({originalEvent:n,value:e})}function C(){let e=i.current,n=f.current;if(!e||n.size===0)return;let s=t.orientation==="horizontal"?Math.abs(e.scrollLeft):e.scrollTop,a=Array.from(n).reduce((l,d)=>Math.abs(d-s)<Math.abs(l-s)?d:l,1/0),o=Array.from(n).indexOf(a);return W(o),o}function m(e,n=!1,s){let a=f.current;if(a.size===0)return;let o=e??c,l=t.loop?(o+a.size)%a.size:Math.max(0,Math.min(o,a.size-1));W(l,s),Y(Array.from(a)[l],n)}function N(e){m(c+1,!1,e)}function X(e){m(c-1,!1,e)}function Y(e,n=!1){let s=i.current;if(!s)return;let a=t.orientation==="horizontal",o=a&&ce(s);s.scrollTo({[a?"left":"top"]:o?-e:e,behavior:n?"instant":"smooth"})}function K(e,n=!1){let s=f.current,a=H.current;if(s.size===0||a.length===0)return;let o=Math.max(0,Math.min(e,a.length-1)),l=a[o];Y(l,n);let d=Array.from(s).indexOf(l);W(d)}let P=r.useRef(V),L=r.useRef(C),h=r.useRef(m),Z=r.useRef(K);P.current=V,L.current=C,h.current=m,Z.current=K,r.useLayoutEffect(()=>{let e=i.current,n=j.current;if(e)return b.current=new ResizeObserver(()=>{P.current();let s=L.current();h.current(s??p.current,!0)}),b.current.observe(e),M(e),P.current(),()=>{b.current?.disconnect(),b.current=null,n.clear()}},[M]),r.useLayoutEffect(()=>{i.current&&(P.current(),h.current(p.current,!0))},[Re]),r.useLayoutEffect(()=>{_.current||t.page!==void 0&&t.page!==null||t.slide!==void 0&&t.slide!==null||(f.current.size||R.size)===0||(_.current=!0,h.current(t.defaultPage??0,!0))},[R,t.page,t.slide,t.defaultPage]),r.useLayoutEffect(()=>{if(t.page===void 0||t.page===null||t.slide!==void 0&&t.slide!==null||f.current.size===0&&R.size===0)return;let e=!T.current;T.current=!0,h.current(t.page,e)},[t.page,t.slide,R]),r.useLayoutEffect(()=>{if(t.slide===void 0||t.slide===null||f.current.size===0&&R.size===0)return;let e=!T.current;T.current=!0,Z.current(t.slide,e)},[t.slide,R]),r.useEffect(()=>{let e=i.current;if(e)return E.current=new MutationObserver(()=>{P.current(),M(e),D(e),z(()=>{let n=L.current();h.current(n??p.current,!0)})}),E.current.observe(e,{childList:!0,subtree:!0}),()=>{E.current?.disconnect(),E.current=null}},[M,D,z]),r.useEffect(()=>{let e=i.current,n=Q.current;if(e)return x.current=new IntersectionObserver(s=>{s.forEach(a=>{a.isIntersecting?a.target.setAttribute("data-inview",""):a.target.removeAttribute("data-inview")})},{root:i.current,threshold:.6}),D(e),()=>{x.current?.disconnect(),x.current=null,n.clear()}},[D]),r.useEffect(()=>{let e=i.current;if(!e)return;let n=()=>{g.current&&clearTimeout(g.current),g.current=setTimeout(()=>{L.current()},80)};return n(),e.addEventListener("scroll",n,{passive:!0}),()=>{g.current&&clearTimeout(g.current),g.current=null,e.removeEventListener("scroll",n)}},[]),r.useEffect(()=>()=>{v.current&&clearTimeout(v.current),v.current=null},[]),r.useEffect(()=>{let e=A.current;return()=>{e.forEach(n=>cancelAnimationFrame(n)),e.clear()}},[]);function ee(e){e.button===0&&e.pointerType!=="touch"&&(y(!0),O.current={x:e.clientX,y:e.clientY},k.current=!1)}function te(e){let n=i.current;if(!u||!n||e.pointerType==="touch")return;let s=e.clientX-O.current.x,a=e.clientY-O.current.y;Math.abs(s)+Math.abs(a)<6||(window.getSelection()?.toString().length??0)>0||(e.currentTarget.setPointerCapture(e.pointerId),n.style.userSelect="none",k.current=!0,n.style.scrollSnapType="none",n.scrollBy({left:-e.movementX,top:-e.movementY,behavior:"instant"}),e.preventDefault())}function ne(e){if(y(!1),e.currentTarget.releasePointerCapture(e.pointerId),!k.current)return;let n=i.current;if(!n)return;n.style.userSelect="";let s=t.orientation==="horizontal"?Math.abs(n.scrollLeft):n.scrollTop,a=f.current,o=Array.from(a).reduce((d,I)=>Math.abs(I-s)<Math.abs(d-s)?I:d,1/0),l=Array.from(a).indexOf(o);z(()=>{o!==void 0&&m(l),z(()=>{n.style.scrollSnapType=U()})})}function re(e){v.current&&clearTimeout(v.current),v.current=setTimeout(()=>{let n=t.orientation==="horizontal"?e.deltaX||e.deltaY:e.deltaY||e.deltaX;n>0&&J||n<0&&G||C()},80)}let U=()=>`${t.orientation==="vertical"?"y":"x"} ${t.snapType??"mandatory"}`,ae=t.slidesPerPage&&t.slidesPerPage>0?t.slidesPerPage:1,me={swiping:u,isNextDisabled:J,isPrevDisabled:G,snapPoints:R,page:c},ge={role:"region","aria-roledescription":"carousel",tabIndex:0,onKeyDown:e=>{if(e.target!==e.currentTarget)return;let n=t.orientation==="vertical",s=n?"ArrowUp":"ArrowLeft",a=n?"ArrowDown":"ArrowRight";e.key===s?(e.preventDefault(),X(e)):e.key===a?(e.preventDefault(),N(e)):e.key==="Home"?(e.preventDefault(),m(0,!1,e)):e.key==="End"&&(e.preventDefault(),m(f.current.size-1,!1,e))},"data-scope":"carousel","data-part":"root","data-orientation":t.orientation,"data-align":t.align,"data-page":c,...u?{"data-swiping":""}:{},...t.autoSize?{"data-autosize":""}:{}},ve={ref:i,"aria-live":"polite","aria-atomic":!1,"data-scope":"carousel","data-part":"content","data-orientation":t.orientation,"data-align":t.align,"data-page":c,...t.autoSize?{"data-autosize":""}:{},...u?{"data-swiping":""}:{},onPointerDown:ee,onPointerMove:te,onPointerUp:ne,onWheel:re,style:{"--px-slides-per-page":ae,"--px-spacing-items":t.spacing+"px","--px-scroll-snap-type":U(),position:"relative",scrollbarWidth:"none",display:"flex",flexDirection:t.orientation==="vertical"?"column":"row",overflowX:t.orientation==="horizontal"?"scroll":void 0,overflowY:t.orientation==="vertical"?"scroll":void 0,overscrollBehaviorX:t.orientation==="horizontal"?"contain":void 0,overscrollBehaviorY:t.orientation==="vertical"?"contain":void 0,gap:"var(--px-spacing-items)",scrollSnapType:"var(--px-scroll-snap-type)"}},he={"data-scope":"carousel","data-part":"indicators","data-orientation":t.orientation,"data-align":t.align,"data-page":c,...u?{"data-swiping":""}:{}};return{state:me,slidesPerPage:ae,rootProps:ge,contentProps:ve,indicatorsProps:he,getItemProps:e=>({role:"group","aria-roledescription":"slide","data-scope":"carousel","data-part":"item","data-value":e,"data-item":"","data-inview":"false","data-orientation":t.orientation,"data-align":t.align,"data-page":c,...u?{"data-swiping":""}:{},...t.autoSize?{"data-autosize":""}:{},style:{flexGrow:0,flexShrink:0,minWidth:0,flexBasis:t.autoSize?"auto":"calc(100% / var(--px-slides-per-page) - var(--px-spacing-items) * (var(--px-slides-per-page) - 1) / var(--px-slides-per-page))",scrollSnapAlign:t.align}}),getNextProps:e=>({"data-scope":"carousel","data-part":"next",type:"button",disabled:e,"data-orientation":t.orientation,"data-align":t.align,"data-page":c,"data-disabled":e,...u?{"data-swiping":""}:{},onClick:N}),getPrevProps:e=>({"data-scope":"carousel","data-part":"prev",type:"button",disabled:e,"data-orientation":t.orientation,"data-align":t.align,"data-page":c,"data-disabled":e,...u?{"data-swiping":""}:{},onClick:X}),getIndicatorProps:e=>{let n=c===e,s=a=>m(e,!1,a);return{"data-scope":"carousel","data-part":"indicator",type:"button","aria-current":n||void 0,"data-orientation":t.orientation,"data-align":t.align,"data-page":c,...n?{"data-active":""}:{},...u?{"data-swiping":""}:{},onClick:s}},onContentPointerDown:ee,onContentPointerMove:te,onContentPointerUp:ne,onContentWheel:re,next:N,prev:X,scrollToPage:m,scrollTo:Y,scrollToSlide:K,setToClosest:C,resolveSnapType:U}}});export{oe as defaultProps,Ie as useCarousel};
|
package/contextmenu/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{withHeadless as P}from"@primereact/core/headless";import{useMenu as
|
|
1
|
+
import{withHeadless as P}from"@primereact/core/headless";import{useMenu as y}from"@primereact/headless/menu";import{useEventListener as E,useUnmountEffect as R}from"@primereact/hooks";import*as o from"react";var c={open:void 0,defaultOpen:void 0,appendTo:"body",baseZIndex:0,autoZIndex:!0,tabIndex:0,global:!1,onOpenChange:void 0};var O=P({name:"useContextMenu",defaultProps:c,setup({props:r}){let t=y({open:r.open,defaultOpen:r.defaultOpen,composite:!0,appendTo:r.appendTo,baseZIndex:r.baseZIndex,autoZIndex:r.autoZIndex,tabIndex:r.tabIndex,onOpenChange:r.onOpenChange}),s=o.useRef({menu:t}),a=o.useRef(null),u=o.useCallback(e=>{e.preventDefault(),e.stopPropagation(),a.current?.remove(),a.current=null;let p=e.clientX+window.scrollX,x=e.clientY+window.scrollY,n=document.createElement("div");n.style.position="absolute",n.style.left=`${p}px`,n.style.top=`${x}px`,n.style.width="0",n.style.height="0",n.style.pointerEvents="none",n.style.visibility="hidden",document.body.appendChild(n),a.current=n;let{menu:l}=s.current;l.popover?.setRendered?.(!1),l.popover?.setAnchorRef?.(n),l.changeVisibleState(!0)},[]),[d,f]=E({target:"document",type:"contextmenu",listener:e=>{e.target?.closest?.('[data-scope="contextmenu"][data-part="trigger"]')||u(e)}});o.useEffect(()=>{let{bindGlobalListener:e,unbindGlobalListener:p}=s.current;return r.global?e?.():p?.(),()=>{s.current.unbindGlobalListener?.()}},[r.global]),o.useEffect(()=>{let{menu:e,onOverlayEnter:p}=s.current;e.state.open&&!e.popover?.state?.rendered&&e.popover?.setRendered?.(!0),e.state.open&&e.popover?.state?.rendered&&p?.()},[t.state.open,t.popover?.state?.rendered]),o.useEffect(()=>{let{menu:e}=s.current;e.state.open||e.hideAllSubmenus(),!e.state.open&&!e.popover?.state?.rendered&&(a.current?.remove(),a.current=null)},[t.state.open,t.popover?.state?.rendered]),R(()=>{a.current?.remove(),a.current=null,t.popover?.setOpen(!1),t.popover?.setRendered?.(!1)});let m=()=>{t.onOverlayEnter(!1)},i=()=>{t.changeVisibleState(!1)};s.current={menu:t,bindGlobalListener:d,unbindGlobalListener:f,onOverlayEnter:m};let g={"data-scope":"contextmenu","data-part":"root"},b={...t.triggerProps,ref:void 0,"data-scope":"contextmenu",onContextMenu:u,onClick:i},v=o.useCallback(e=>s.current.menu.getItemProps({...e,inPortal:!0}),[]);return{state:t.state,menu:t,popover:t.popover,triggerProps:b,rootProps:g,arrowProps:t.arrowProps,popupProps:t.popupProps,positionerProps:t.positionerProps,getListProps:t.getListProps,getIndicatorProps:t.getIndicatorProps,getSubTriggerProps:t.getSubTriggerProps,getItemProps:v,onTriggerClick:i,onContextMenu:u}}});export{c as defaultProps,O as useContextMenu};
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import*as
|
|
2
|
-
${
|
|
3
|
-
${
|
|
4
|
-
${
|
|
5
|
-
width: ${
|
|
6
|
-
max-width: ${
|
|
1
|
+
import*as A from"react";var Fe=Object.freeze({});function Ke(e){let{onColumnReorder:t}=e,{reorderableColumns:n=!1}=e,c=A.useRef(-1),l=A.useRef(null),o=A.useRef(-1),r=A.useRef(0),b=A.useRef(null),i=A.useRef(null),f=A.useRef(null),h=A.useRef(new Map),R=A.useRef(-1),g=A.useRef(null),T=A.useCallback((u,v)=>(h.current.set(u,v),()=>{h.current.delete(u),R.current===u&&(R.current=-1,g.current=null)}),[]),C=A.useCallback((u,v)=>{let H=R.current,U=g.current;H===u&&U===v||(H!==-1&&H!==u&&h.current.get(H)?.(null),h.current.get(u)?.({side:v}),R.current=u,g.current=v)},[]),s=A.useCallback(()=>{let u=R.current;u!==-1&&(h.current.get(u)?.(null),R.current=-1,g.current=null)},[]),d=A.useCallback((u,v)=>{n&&(c.current=v,l.current=u.currentTarget,u.dataTransfer.effectAllowed="move",u.dataTransfer.setData("text/plain",String(v)))},[n]),a=A.useCallback((u,v)=>{if(!n||c.current===-1||c.current===v)return;u.preventDefault(),u.dataTransfer.dropEffect="move";let U=u.currentTarget.getBoundingClientRect(),k=u.clientX>U.left+U.width/2?"end":"start";r.current=k==="end"?1:-1,o.current=v,C(v,k);let I=b.current,P=i.current,w=f.current;if(I&&P&&w){let p=w.getBoundingClientRect(),F=I.offsetHeight,M=I.offsetWidth,z=U.left-p.left,$=k==="end"?z+U.width-Math.ceil(M/2):z-Math.ceil(M/2);I.style.top=U.top-p.top-F+1+"px",I.style.left=$+"px",P.style.top=U.top-p.top+U.height+"px",P.style.left=$+"px",I.style.display="block",P.style.display="block"}},[n,C]),E=A.useCallback((u,v)=>{!n||c.current===-1||(u.preventDefault(),o.current=v)},[n]),S=A.useCallback(()=>{b.current&&(b.current.style.display="none"),i.current&&(i.current.style.display="none")},[]),L=A.useCallback(u=>{},[n]),D=A.useCallback((u,v)=>{if(!n||c.current===-1)return;u.preventDefault();let H=c.current,U=v,k=r.current,I=H!==U;I&&(U-H===1&&k===-1||U-H===-1&&k===1)&&(I=!1),I&&(U<H&&k===1&&U++,U>H&&k===-1&&U--,t?.({originalEvent:u.nativeEvent,dragIndex:H,dropIndex:U})),S(),s(),c.current=-1,o.current=-1,r.current=0,l.current=null},[n,t,s,S]),K=A.useCallback(u=>{n&&(S(),s(),c.current=-1,o.current=-1,r.current=0,l.current=null)},[n,s,S]),N=A.useCallback(()=>({"data-scope":"datatable","data-part":"column-reorder",style:{cursor:"grab",userSelect:"none"}}),[]),x=A.useCallback(()=>({"data-scope":"datatable","data-part":"column-reorder-indicator-up",ref:u=>{b.current=u}}),[]),m=A.useCallback(()=>({"data-scope":"datatable","data-part":"column-reorder-indicator-down",ref:u=>{i.current=u}}),[]),y=A.useCallback(u=>{f.current=u},[]),O=A.useMemo(()=>({onDragStart:d,onDragOver:a,onDragEnter:E,onDragLeave:L,onDrop:D,onDragEnd:K,registerDropTarget:T,getColumnReorderHandleProps:N,getColumnReorderIndicatorUpProps:x,getColumnReorderIndicatorDownProps:m}),[d,a,E,L,D,K,T,N,x,m]);return{state:Fe,exposes:O,registerRoot:y}}import*as G from"react";var Oe=Object.freeze({}),te=15;function Le(e){let{resizableColumns:t=!1,columnResizeMode:n="fit"}=e,c=G.useRef(null),l=G.useRef(null),o=G.useCallback(s=>{l.current=s},[]),r=G.useRef(null),b=G.useCallback((s,d)=>{if(typeof document>"u")return;if(!r.current){let S=document.createElement("style");S.setAttribute("data-primereact-datatable-resize",""),document.head.appendChild(S),r.current=S}let a=s.getAttribute("data-resize-id");a||(a=`dt-resize-${Math.random().toString(36).slice(2,9)}`,s.setAttribute("data-resize-id",a));let E=d.map((S,L)=>{let D=L+1,K=`table[data-resize-id="${a}"]`;return`
|
|
2
|
+
${K} > thead > tr > th:nth-child(${D}),
|
|
3
|
+
${K} > tbody > tr > td:nth-child(${D}),
|
|
4
|
+
${K} > tfoot > tr > td:nth-child(${D}) {
|
|
5
|
+
width: ${S}px !important;
|
|
6
|
+
max-width: ${S}px !important;
|
|
7
7
|
}
|
|
8
8
|
`}).join(`
|
|
9
|
-
`);r.current.innerHTML=
|
|
10
|
-
`);if(typeof document>"u"||typeof URL>"u"||typeof Blob>"u")return;let m=new Blob([C],{type:"text/csv;charset=utf-8;"}),v=URL.createObjectURL(m),u=document.createElement("a");u.setAttribute("href",v),u.setAttribute("download",`${r}.csv`),u.style.display="none",document.body.appendChild(u);try{u.click()}finally{u.parentNode===document.body&&document.body.removeChild(u),URL.revokeObjectURL(v)}},[e.data,e.dataKey,e.selectionKeys]),a=te.useMemo(()=>({exportCSV:t}),[t]);return{state:Pe,exposes:a}}import{useFilter as He}from"@primereact/hooks/use-filter";import*as H from"react";var Ae={Contains:"contains",NotContains:"notContains",StartsWith:"startsWith",EndsWith:"endsWith",Equals:"equals",NotEquals:"notEquals",In:"in",Between:"between",Lt:"lt",Lte:"lte",Gt:"gt",Gte:"gte",DateIs:"dateIs",DateIsNot:"dateIsNot",DateBefore:"dateBefore",DateAfter:"dateAfter",Custom:"custom"},ze={And:"and",Or:"or"},Ee=Object.freeze({});function je(e){let{data:t=[],lazy:a=!1,globalFilterFields:l=[]}=e,o=e.filters!==void 0,[s,r]=H.useState(e.defaultFilters??Ee),n=o?e.filters??Ee:s;H.useEffect(()=>{o&&e.filters&&r(e.filters)},[o,e.filters]);let T=e.globalFilter??null,h=e.filterDelay??0,[E,M]=H.useState(n),[C,m]=H.useState(T);H.useEffect(()=>{if(h<=0){M(n),m(T);return}let w=setTimeout(()=>{M(n),m(T)},h);return()=>clearTimeout(w)},[n,T,h]);let v=h>0?E:n,u=h>0?C:T,c=H.useCallback((w,S)=>{o||r(S),e.onFilter?.({originalEvent:w,filters:S})},[o,e.onFilter]),f=H.useCallback((w,S,O)=>{let D={...n,[S]:O};c(w,D)},[n,c]),x=H.useCallback((w,S)=>{let O=n[S],D={...n};if(O&&typeof O=="object"&&O!==null&&"constraints"in O){let P=O;D[S]={operator:P.operator??"and",constraints:[{value:null,matchMode:P.constraints?.[0]?.matchMode??"contains"}]}}else O&&typeof O=="object"&&O!==null&&"matchMode"in O?D[S]={value:null,matchMode:O.matchMode}:delete D[S];c(w,D)},[n,c]),K=H.useCallback(w=>{c(w,{})},[c]),F=H.useCallback((w,S,O="contains")=>{let D=n[S],P={...n};if(D&&typeof D=="object"&&D!==null&&"constraints"in D){let W=D,G=[...W.constraints??[],{value:null,matchMode:O}];P[S]={...W,constraints:G}}else{let W=D&&typeof D=="object"&&"value"in D?D.value:null,G=D&&typeof D=="object"&&"matchMode"in D?D.matchMode??"contains":"contains";P[S]={operator:"and",constraints:[{value:W,matchMode:G},{value:null,matchMode:O}]}}c(w,P)},[n,c]),i=H.useCallback((w,S,O)=>{let D=n[S];if(!D||typeof D!="object"||!("constraints"in D))return;let P=D,W=(P.constraints??[]).filter((Q,ce)=>ce!==O);if(W.length===0)return;let G={...n,[S]:{...P,constraints:W}};c(w,G)},[n,c]),p=H.useCallback((w,S,O)=>{let D=n[S],P={...n};if(D&&typeof D=="object"&&D!==null&&"constraints"in D)P[S]={...D,operator:O};else{let W=D&&typeof D=="object"&&"value"in D?D.value:null,G=D&&typeof D=="object"&&"matchMode"in D?D.matchMode??"contains":"contains";P[S]={operator:O,constraints:[{value:W,matchMode:G}]}}c(w,P)},[n,c]),d=H.useCallback((w,S,O,D,P)=>{let W=n[S];if(!W||typeof W!="object"||!("constraints"in W))return;let G=W,Q=[...G.constraints??[]];O>=0&&O<Q.length&&(Q[O]={value:D,matchMode:P??Q[O].matchMode});let ce={...n,[S]:{...G,constraints:Q}};c(w,ce)},[n,c]),g=H.useCallback((w,S,O,D)=>{let P=n[S];if(!P||typeof P!="object"||!("constraints"in P))return;let W=P,G=[...W.constraints??[]];O>=0&&O<G.length&&(G[O]={...G[O],matchMode:D});let Q={...n,[S]:{...W,constraints:G}};c(w,Q)},[n,c]),y=H.useCallback(w=>{let S=n[w];return S?typeof S=="object"&&S!==null&&"constraints"in S?(S.constraints??[]).some(D=>D.value!==null&&D.value!==void 0&&D.value!==""):typeof S=="object"&&S!==null&&"value"in S?S.value!==null&&S.value!==void 0&&S.value!=="":S!=null&&S!=="":!1},[n]),I=H.useCallback(()=>T?!0:Object.keys(n).some(w=>y(w)),[n,T,y]),R=H.useCallback(w=>{let S=n[w];return S?typeof S=="object"&&S!==null?S:{value:S,matchMode:"contains"}:{value:null,matchMode:"contains"}},[n]),b=H.useMemo(()=>{let w=[];for(let S of Object.keys(v)){if(S==="global")continue;let O=v[S];if(O){if(typeof O=="object"&&O!==null){let D=O;if(D.constraints&&D.constraints.length>0){w.push({field:S,operator:D.operator??"and",constraints:D.constraints.map(P=>({value:P.value,matchMode:P.matchMode??"contains"}))});continue}if("value"in D||"matchMode"in D){w.push({field:S,value:D.value,matchMode:D.matchMode??"contains"});continue}}w.push({field:S,value:O,matchMode:"contains"})}}return u&&l.length>0&&w.push({field:l,value:u,matchMode:"contains"}),w},[v,u,l]),L=He({data:t,rules:b,lazy:a}).filteredData,A=H.useMemo(()=>({filters:n,globalFilter:T}),[n,T]),N=H.useCallback((w,S="row")=>({"data-scope":"datatable","data-part":"filter","data-display":S,...y(w)?{"data-active":""}:void 0}),[y]),z=H.useMemo(()=>({setFieldFilter:f,clearFieldFilter:x,clearAllFilters:K,addConstraint:F,removeConstraint:i,setOperator:p,setConstraintValue:d,setConstraintMatchMode:g,hasFilterValue:y,isFiltered:I,getFieldFilterMeta:R,getFilterRootProps:N}),[f,x,K,F,i,p,d,g,y,I,R,N]);return{filteredData:L,state:A,exposes:z}}import{resolveFieldData as _e}from"@primeuix/utils";import*as ne from"react";function We(e){let{data:t,groupField:a}=e,l=ne.useMemo(()=>{if(!a)return;let r=new Map;if(t.length===0)return r;let n=[],T,h=0;for(let E=0;E<t.length;E++){let M=_e(t[E],a);E===0?(T=M,h=0):M!==T&&(n.push({start:h,end:E-1,value:T}),T=M,h=E)}n.push({start:h,end:t.length-1,value:T});for(let E=0;E<n.length;E++){let M=n[E],C=M.end-M.start+1;for(let m=M.start;m<=M.end;m++)r.set(m,{isGroupStart:m===M.start,isGroupEnd:m===M.end,groupValue:M.value,groupCount:C,groupIndex:E})}return r},[t,a]),o=ne.useMemo(()=>({}),[]);return{state:ne.useMemo(()=>({groupMetaMap:l}),[l]),exposes:o}}import*as X from"react";function $e(e){let{data:t,lazy:a,paginator:l}=e,o=e.page!==void 0,s=e.rows!==void 0,[r,n]=X.useState(e.defaultPage??0),[T,h]=X.useState(e.defaultRows??10),E=o?e.page??0:r,M=s?e.rows??10:T,C=a?e.totalRecords??0:t.length,m=Math.max(1,Math.ceil(C/M)),v=E*M;X.useEffect(()=>{!o&&E>=m&&m>0&&n(m-1)},[m,E,o]);let u=X.useMemo(()=>!l||a?t:t.slice(v,v+M),[t,l,a,v,M]),c=X.useCallback((F,i)=>{if(i<0||i>=m)return;o||n(i);let p=i*M;e.onPageChange?.({originalEvent:F,page:i,rows:M,first:p,pageCount:m})},[m,M,o,e.onPageChange]),f=X.useCallback((F,i)=>{if(i<=0)return;s||h(i),o||n(0);let p=Math.max(1,Math.ceil(C/i));e.onPageChange?.({originalEvent:F,page:0,rows:i,first:0,pageCount:p})},[C,s,o,e.onPageChange]),x=X.useMemo(()=>({page:E,rows:M,first:v,pageCount:m,totalRecords:C,onPageChange:c,onRowsChange:f}),[E,M,v,m,C,c,f]),K=X.useMemo(()=>({page:E,rows:M,first:v,pageCount:m,totalRecords:C}),[E,M,v,m,C]);return{paginatedData:u,state:K,exposes:x}}import*as V from"react";var Ge=Object.freeze({}),de="data-dragpoint-top",fe="data-dragpoint-bottom";function re(e){e&&(e.removeAttribute(de),e.removeAttribute(fe))}function Ve(e){let{reorderableRows:t=!1}=e,a=V.useRef(-1),l=V.useRef(-1),o=V.useRef(null),s=V.useCallback((v,u)=>{t&&(a.current=u,v.dataTransfer.effectAllowed="move",v.dataTransfer.setData("text/plain",String(u)))},[t]),r=V.useCallback((v,u)=>{if(!t||a.current===-1||a.current===u)return;v.preventDefault(),v.dataTransfer.dropEffect="move";let c=v.currentTarget,f=c.getBoundingClientRect(),x=f.top+f.height/2;o.current&&o.current!==c&&re(o.current),v.clientY<x?(c.setAttribute(de,""),c.removeAttribute(fe),l.current=u):(c.setAttribute(fe,""),c.removeAttribute(de),l.current=u+1),o.current=c},[t]),n=V.useCallback(v=>{if(!t)return;let u=v.currentTarget;re(u),o.current===u&&(o.current=null)},[t]),T=V.useCallback(v=>{if(!t||a.current===-1)return;v.preventDefault();let u=e.data??[],c=a.current,f=l.current;if(f>c&&(f-=1),f!==c&&f>=0&&f<=u.length){let x=[...u],[K]=x.splice(c,1);x.splice(f,0,K),e.onRowReorder?.({originalEvent:v.nativeEvent,dragIndex:c,dropIndex:f,value:x})}re(o.current),o.current=null,a.current=-1,l.current=-1},[t,e.data,e.onRowReorder]),h=V.useCallback(()=>{t&&(re(o.current),o.current=null,a.current=-1,l.current=-1)},[t]),E=V.useCallback(v=>{let u=v.currentTarget.closest("tr");u&&u.setAttribute("data-drag-source","true")},[]),M=V.useCallback(v=>{let u=v.currentTarget.closest("tr");u&&u.removeAttribute("data-drag-source")},[]),C=V.useCallback(()=>({"data-scope":"datatable","data-part":"row-reorder",style:{cursor:"grab",userSelect:"none",touchAction:"none"},onPointerDown:E,onPointerUp:M}),[E,M]),m=V.useMemo(()=>({onDragStart:s,onDragOver:r,onDragEnter:r,onDragLeave:n,onDrop:T,onDragEnd:h,getRowReorderHandleProps:C}),[s,r,n,T,h,C]);return{state:Ge,exposes:m}}import*as _ from"react";var ge=Object.freeze({});function Me(e){let t=[];if(e.children)for(let a of e.children)t.push(a.key),t.push(...Me(a));return t}function ae(e,t){for(let a of e){if(a.key===t)return a;if(a.children){let l=ae(a.children,t);if(l)return l}}return null}function Be(e,t){let a=[];function l(o,s){for(let r of o){if(r.key===t)return a.push(...s),!0;if(r.children&&l(r.children,[...s,r.key]))return!0}return!1}return l(e,[]),a}function Te(e,t){return!e.children||e.children.length===0?!0:e.children.every(a=>t[a.key]===!0&&Te(a,t))}function Ce(e,t){return e.children?e.children.some(a=>t[a.key]===!0||Ce(a,t)):!1}function Xe(e,t,a){let l=Be(e,t);for(let o=l.length-1;o>=0;o--){let s=l[o],r=ae(e,s);r&&Te(r,a)?a[s]=!0:delete a[s]}}function Ye(e){let{data:t}=e,a=_.useRef(null),l=e.selectionKeys!==void 0,[o,s]=_.useState(()=>e.selectionKeys??e.defaultSelectionKeys??ge),r=l?e.selectionKeys??ge:o;_.useEffect(()=>{l&&s(e.selectionKeys??ge)},[l,e.selectionKeys]);let n=_.useCallback((i,p)=>e.dataKey&&i?String(i[e.dataKey]):p,[e.dataKey]),T=_.useCallback(i=>r[String(i)]===!0,[r]),h=e.treeMode?e.rawTreeData:void 0,E=_.useMemo(()=>{let i=new Map;for(let p=0;p<t.length;p++)i.set(String(n(t[p],p)),p);return i},[t,n]),M=_.useCallback((i,p,d)=>{let g=String(p),y,I=!0;if(d==="radio")y={[g]:!0};else if(d==="single")y=r[g]?{}:{[g]:!0};else if(i.shiftKey===!0&&!h&&a.current!==null&&a.current!==g){let b=a.current,k=E.get(b)??-1,L=E.get(g)??-1;if(k>=0&&L>=0){let A=Math.min(k,L),N=Math.max(k,L);y={...r};for(let z=A;z<=N;z++){let w=String(n(t[z],z));y[w]=!0}}else y={...r,[g]:!0};I=!1}else{y={...r};let b=!y[g];if(b?y[g]=!0:delete y[g],h){let k=ae(h,g);if(k){let L=Me(k);for(let A of L)b?y[A]=!0:delete y[A]}Xe(h,g,y)}}I&&d!=="radio"&&(a.current=g),l||s(y),e.onSelectionChange?.({originalEvent:i,value:y,type:d==="radio"?"radio":d==="single"?"row":"checkbox"})},[t,n,r,l,e.onSelectionChange,h,E]),C=_.useCallback(i=>{let p=[];for(let d of i)p.push(d.key),d.children&&p.push(...C(d.children));return p},[]),m=_.useMemo(()=>{if(h){let p=C(h);if(p.length===0)return{all:!1,some:!1};let d=p.reduce((g,y)=>r[y]===!0?g+1:g,0);return{all:d===p.length,some:d>0&&d<p.length}}if(t.length===0)return{all:!1,some:!1};let i=0;for(let p=0;p<t.length;p++){let d=String(n(t[p],p));r[d]===!0&&i++}return{all:i===t.length,some:i>0&&i<t.length}},[t,h,r,n,C]),v=_.useCallback(()=>m.all,[m]),u=_.useCallback(()=>m.some,[m]),c=_.useCallback(i=>{let p;if(v())p={};else if(p={},h){let d=C(h);for(let g of d)p[g]=!0}else t.forEach((d,g)=>{let y=String(n(d,g));p[y]=!0});l||s(p),e.onSelectionChange?.({originalEvent:i,value:p,type:"all"})},[t,h,v,l,n,C,e.onSelectionChange]),f=_.useCallback((i,p)=>{let{selectionMode:d,metaKeySelection:g}=e;if(!d)return;let y=String(p),I=i.metaKey||i.ctrlKey,R=i.shiftKey,b,k=!0;if(d==="single")b=r[y]?{}:{[y]:!0};else if(g)if(R&&a.current!==null&&a.current!==y){let L=a.current,A=-1,N=-1;for(let z=0;z<t.length;z++){let w=String(n(t[z],z));if(w===L&&(A=z),w===y&&(N=z),A>=0&&N>=0)break}if(A>=0&&N>=0){let z=Math.min(A,N),w=Math.max(A,N);b=I?{...r}:{};for(let S=z;S<=w;S++){let O=String(n(t[S],S));b[O]=!0}}else b={...r,[y]:!0};k=!1}else I?(b={...r},b[y]?delete b[y]:b[y]=!0):b={[y]:!0};else b={...r},b[y]?delete b[y]:b[y]=!0;k&&(a.current=y),l||s(b),e.onSelectionChange?.({originalEvent:i,value:b,type:"row"})},[t,n,r,l,e.selectionMode,e.metaKeySelection,e.onSelectionChange]),x=_.useCallback(i=>{if(!h)return!1;let p=ae(h,String(i));return!p||!p.children||p.children.length===0?!1:!r[String(i)]&&Ce(p,r)},[h,r]),K=_.useMemo(()=>({isSelected:T,isPartiallySelected:x,toggleSelection:M,toggleAll:c,isAllSelected:v,isSomeSelected:u,onRowClick:f}),[T,x,M,c,v,u,f]),F=_.useMemo(()=>({selectionKeys:r}),[r]);return{getRowKey:n,state:F,exposes:K}}import*as B from"react";import{localeComparator as qe,resolveFieldData as oe,sort as be}from"@primeuix/utils";var me=qe(),se=(e,t,a,l=1)=>be(e,t,a,me,l),pe=(e,t,a,l=1)=>!t||a===0?e:[...e].sort((o,s)=>be(oe(o,t),oe(s,t),a,me,l)),Re=(e,t,a=1)=>!t||t.length===0?e:[...e].sort((l,o)=>{for(let s of t){let r=be(oe(l,s.field),oe(o,s.field),s.order,me,a);if(r!==0)return r}return 0});function Je(e){let{data:t,lazy:a}=e,l=e.sortField!==void 0,o=e.multiSortMeta!==void 0,[s,r]=B.useState(e.defaultSortField),[n,T]=B.useState(e.defaultSortOrder),[h,E]=B.useState(e.defaultMultiSortMeta),M=l?e.sortField:s,C=l?e.sortOrder:n,m=o?e.multiSortMeta:h,v=B.useCallback(d=>m&&m.length>0?m.some(g=>g.field===d):M===d&&C!==0,[M,C,m]),u=B.useCallback(d=>m&&m.length>0?m.find(y=>y.field===d)?.order??0:M===d?C??0:0,[M,C,m]),c=B.useCallback(d=>m&&m.length>0?m.findIndex(g=>g.field===d):-1,[m]),f=B.useCallback((d,g,y)=>{let I=u(g),R;if(I===0?R=1:I===1?R=-1:R=e.removableSort?0:1,y){let b=[...m??[]],k=b.findIndex(L=>L.field===g);R===0?k!==-1&&b.splice(k,1):k!==-1?b[k]={field:g,order:R}:b.push({field:g,order:R}),o||E(b),e.onSortChange?.({originalEvent:d,field:g,order:R,multiSortMeta:b})}else l||(r(R===0?void 0:g),T(R)),o||E(void 0),e.onSortChange?.({originalEvent:d,field:g,order:R,multiSortMeta:void 0})},[u,e.removableSort,e.onSortChange,l,o,m]),x=e.nullSortOrder??1,K=B.useMemo(()=>a?t:m&&m.length>0?Re(t,m,x):M&&C!=null&&C!==0?pe(t,M,C,x):t,[t,a,M,C,m,x]),F=B.useCallback(d=>{let g=v(d),y=u(d),I=g?y===1?"ascending":"descending":"",R=k=>{if(!d)return;let L=k.metaKey||k.ctrlKey;f(k,d,L)},b=k=>{(k.key==="Enter"||k.key===" ")&&(k.preventDefault(),R(k))};return{"data-scope":"datatable","data-part":"sort",...g?{"data-sorted":"","data-sort-order":y===1?"asc":"desc"}:{"data-unsorted":""},role:"button",tabIndex:0,"aria-label":`Sort by ${d}${I?` ${I}`:""}`,"aria-sort":g?y===1?"ascending":"descending":"none",onClick:R,onKeyDown:b}},[v,u,f]),i=B.useMemo(()=>({onSort:f,isSorted:v,getSortOrder:u,getSortIndex:c,getSortProps:F}),[f,v,u,c,F]),p=B.useMemo(()=>({sortField:M,sortOrder:C,multiSortMeta:m}),[M,C,m]);return{sortedData:K,state:p,exposes:i}}import{BUILT_IN_MATCHERS as Qe,getGlobalMatchers as Ze}from"@primereact/hooks/use-filter";import{resolveFieldData as J}from"@primeuix/utils";import*as Z from"react";function ve(e,t,a,l){let o=Qe[e]??Ze()[e];return o?o(t,a,l):!0}var ie=100;function De(e,t,a,l=0){return l>=ie?e:[...e].sort((s,r)=>{let n=s.data?J(s.data,t):void 0,T=r.data?J(r.data,t):void 0;return se(n,T,a)}).map(s=>s.children?.length?{...s,children:De(s.children,t,a,l+1)}:s)}function xe(e,t,a=0){return a>=ie?e:[...e].sort((o,s)=>{for(let r of t){let n=o.data?J(o.data,r.field):void 0,T=s.data?J(s.data,r.field):void 0,h=se(n,T,r.order);if(h!==0)return h}return 0}).map(o=>o.children?.length?{...o,children:xe(o.children,t,a+1)}:o)}function le(e,t,a="contains"){return ve(a,e,t)}function et(e,t,a,l){if(a&&l.length>0&&!l.some(r=>ve("contains",J(e,r),a)))return!1;let o=Object.keys(t).filter(s=>s!=="global");for(let s of o){let r=t[s];if(!r)continue;if(typeof r=="object"&&r!==null&&"constraints"in r){let T=r,h=T.operator??"and",E=T.constraints??[];if(E.length>0){let M=J(e,s);if(h==="and"){if(!E.every(m=>le(M,m.value,m.matchMode)))return!1}else if(!E.some(m=>le(M,m.value,m.matchMode)))return!1}continue}if(typeof r=="object"&&r!==null&&"value"in r){let T=r,h=J(e,s);if(!le(h,T.value,T.matchMode))return!1;continue}let n=J(e,s);if(!le(n,r))return!1}return!0}function ye(e,t,a,l,o=0){if(o>=ie)return[];let s=[];for(let r of e){let n=r.data??{};if(et(n,t,a,l))s.push(r);else if(r.children?.length){let h=ye(r.children,t,a,l,o+1);h.length>0&&s.push({...r,children:h})}}return s}function Se(e,t){if(t)return!0;let a=Object.keys(e).filter(l=>l!=="global");for(let l of a){let o=e[l];if(o){if(typeof o=="object"&&o!==null&&"constraints"in o){if((o.constraints??[]).some(n=>n.value!==null&&n.value!==void 0&&n.value!==""))return!0;continue}if(typeof o=="object"&&o!==null&&"value"in o){let s=o.value;if(s!=null&&s!=="")return!0;continue}if(o!=null&&o!=="")return!0}}return!1}function ke(e,t,a,l){if(a>=ie)return[];let o=[],s=e.length;for(let r=0;r<e.length;r++){let n=e[r],T=!!n.children?.length,h=T||n.leaf===!1,E=n.leaf===!0||!T&&n.leaf!==!1;o.push({...n.data??{},key:n.key,data:n.data??{},children:n.children,_treeLevel:a,_treeHasChildren:h,_treeLeaf:E,_treeParentKey:l,_treePosInSet:r+1,_treeSetSize:s}),T&&t[n.key]&&o.push(...ke(n.children,t,a+1,n.key))}return o}function tt(e){let{data:t,treeMode:a,expandedKeys:l,sortField:o,sortOrder:s,multiSortMeta:r,filters:n={},globalFilter:T=null,globalFilterFields:h=[],paginator:E=!1,page:M=0,rows:C=10}=e,m=Z.useMemo(()=>{if(!a)return t;let f=t;if(Se(n,T)&&(f=ye(f,n,T,h)),r&&r.length>0?f=xe(f,r):o&&s!=null&&s!==0&&(f=De(f,o,s)),E){let x=M*C;f=f.slice(x,x+C)}return ke(f,l,0,null)},[t,a,l,o,s,r,n,T,h,E,M,C]),v=Z.useMemo(()=>{if(!a)return t.length;let f=t;return Se(n,T)&&(f=ye(f,n,T,h)),f.length},[t,a,n,T,h]),u=Z.useMemo(()=>({}),[]),c=Z.useMemo(()=>({}),[]);return{flattenedData:m,totalRootNodes:v,state:u,exposes:c}}import*as q from"react";function nt(e){let{data:t,treeMode:a,selectionMode:l,expandedKeys:o={},onToggleExpansion:s,onToggleSelection:r,getRowKey:n}=e,T=l==="single"?"single":"checkbox",[h,E]=q.useState(-1),M=q.useCallback(c=>h===-1?c===0?0:-1:c===h?0:-1,[h]),C=q.useCallback((c,f)=>{if(!c)return;let x=c.querySelector(`tr[data-scope="datatable"][data-part="row"][data-index="${f}"]`);if(x){E(f),x.focus();return}E(f)},[]),m=q.useCallback((c,f)=>{let x=c.target;if(x!==c.currentTarget){let i=x.tagName;if(i==="INPUT"||i==="SELECT"||i==="TEXTAREA"||x.isContentEditable||x.closest("[data-editing]"))return}let K=t.length,F=!0;switch(c.key){case"ArrowDown":{let i=Math.min(f+1,K-1);if(i!==f){let p=c.currentTarget.closest("tbody");if(C(p,i),c.shiftKey&&r){let d=t[i],g=n?.(d,i);g!==void 0&&r(c,g,T)}}break}case"ArrowUp":{let i=Math.max(f-1,0);if(i!==f){let p=c.currentTarget.closest("tbody");if(C(p,i),c.shiftKey&&r){let d=t[i],g=n?.(d,i);g!==void 0&&r(c,g,T)}}break}case"ArrowRight":{if(!a){F=!1;break}let i=t[f],p=n?.(i,f),d=i?._treeHasChildren,g=p!==void 0&&o[String(p)];if(d&&!g&&p!==void 0)s?.(c,p);else if(g){let y=c.currentTarget.closest("tbody");C(y,Math.min(f+1,K-1))}break}case"ArrowLeft":{if(!a){F=!1;break}let i=t[f],p=n?.(i,f),d=i?._treeHasChildren,g=p!==void 0&&o[String(p)];if(d&&g&&p!==void 0)s?.(c,p);else{let y=i?._treeParentKey;if(y!==null){let I=t.findIndex((R,b)=>String(n?.(R,b))===String(y));if(I>=0){let R=c.currentTarget.closest("tbody");C(R,I)}}}break}case"Home":{let i=c.currentTarget.closest("tbody");C(i,0);break}case"End":{let i=c.currentTarget.closest("tbody");C(i,K-1);break}case"Enter":case" ":{let i=c.target;if(i.tagName==="INPUT"||i.tagName==="SELECT"||i.tagName==="TEXTAREA"||i.tagName==="BUTTON"||i.tagName==="A"||i.isContentEditable){F=!1;break}if(r){let p=t[f],d=n?.(p,f);d!==void 0&&r(c,d,T)}break}default:F=!1}F&&c.preventDefault()},[t,a,o,C,s,r,n,T]),v=q.useMemo(()=>({focusedRowIndex:h}),[h]),u=q.useMemo(()=>({getRowTabIndex:M,onRowKeyDown:m,focusRow:C}),[M,m,C]);return{state:v,exposes:u}}export{Ae as FilterMatchMode,ze as FilterOperator,Ke as useDataTableColumnReorder,Oe as useDataTableColumnResize,Le as useDataTableEditing,Ie as useDataTableExpansion,Ne as useDataTableExport,je as useDataTableFilter,We as useDataTableGrouping,nt as useDataTableKeyboard,$e as useDataTablePagination,Ve as useDataTableRowReorder,Ye as useDataTableSelection,Je as useDataTableSort,tt as useDataTableTree};
|
|
9
|
+
`);r.current.innerHTML=E},[]);G.useEffect(()=>()=>{r.current?.remove(),r.current=null},[]);let i=G.useRef(n);i.current=n;let f=G.useRef(e.onColumnResizeEnd);f.current=e.onColumnResizeEnd;let h=G.useCallback(()=>{let s=c.current;s&&(s.resizer.removeEventListener("pointermove",s.onMove),s.resizer.removeEventListener("pointerup",s.onEnd),s.resizer.removeEventListener("pointercancel",s.onEnd),s.resizer.hasPointerCapture(s.pointerId)&&s.resizer.releasePointerCapture(s.pointerId),l.current&&(l.current.style.display="none",l.current.style.willChange=""),document.body.style.removeProperty("cursor"),document.body.style.removeProperty("user-select"),c.current=null)},[]),R=G.useCallback((s,d,a)=>{let E=s.headerCells.map((S,L)=>d[L]??S.offsetWidth);if(a!==void 0)s.table.style.width=`${a}px`,s.table.style.minWidth=`${a}px`;else{let S=s.initialTableWidth,L=E.reduce((K,N)=>K+N,0),D=S-L;if(Math.abs(D)>.01){let K=E.findIndex((N,x)=>d[x]===void 0);K>=0&&(E[K]+=D)}}b(s.table,E)},[b]),g=G.useCallback((s,d,a)=>{if(!t||s.pointerType==="mouse"&&s.button!==0)return;let E=a.closest("table");if(!E)return;let S=E.closest('[data-part="table-container"]')??E.parentElement;if(!S)return;let L=s.currentTarget,D=Array.from(E.querySelectorAll("thead th")),K=D[d+1]??null,N=S.getBoundingClientRect(),x=l.current;if(x){let O=s.clientX-N.left+S.scrollLeft;x.style.top="0px",x.style.left="0px",x.style.height=`${S.clientHeight}px`,x.style.transform=`translateX(${O}px)`,x.style.willChange="transform",x.style.display="block"}let m=O=>{let u=c.current;if(!u||O.pointerId!==u.pointerId)return;let v=l.current;if(!v)return;let H=O.clientX-u.containerLeft+u.tableContainer.scrollLeft;v.style.transform=`translateX(${H}px)`},y=O=>{let u=c.current;if(!u||O.pointerId!==u.pointerId)return;let v=O.clientX-u.startClientX,H=i.current,U=u.initialWidth+v;if(U>=te){if(H==="fit"&&u.nextHeaderCell){let k=u.initialNextWidth-te,I=Math.min(v,k),P=u.initialWidth+I,w=u.initialNextWidth-I;P>=te&&w>=te&&(R(u,{[u.columnIndex]:P,[u.columnIndex+1]:w}),f.current?.({originalEvent:O,columnIndex:u.columnIndex,delta:I}))}else if(H==="expand"){let k=u.initialTableWidth+v;R(u,{[u.columnIndex]:U},k),f.current?.({originalEvent:O,columnIndex:u.columnIndex,delta:v})}}h()};c.current={columnIndex:d,pointerId:s.pointerId,startClientX:s.clientX,containerLeft:N.left,initialScrollLeft:S.scrollLeft,resizer:L,headerCell:a,nextHeaderCell:K,headerCells:D,table:E,tableContainer:S,initialWidth:a.offsetWidth,initialNextWidth:K?.offsetWidth??0,initialTableWidth:i.current==="fit"?S.clientWidth:E.offsetWidth,onMove:m,onEnd:y},L.setPointerCapture(s.pointerId),L.addEventListener("pointermove",m),L.addEventListener("pointerup",y),L.addEventListener("pointercancel",y),document.body.style.cursor="col-resize",document.body.style.userSelect="none"},[t,R,h]);G.useEffect(()=>()=>h(),[h]);let T=G.useCallback(s=>({"data-scope":"datatable","data-part":"column-resizer",style:{touchAction:"none"},onPointerDown:a=>{let E=a.target.closest("th");if(E){let S=s??E.cellIndex;g(a,S,E)}}}),[g]),C=G.useMemo(()=>({onResizeStart:g,registerIndicator:o,getColumnResizerProps:T}),[g,o,T]);return{state:Oe,exposes:C}}import*as _ from"react";var de=Object.freeze({});function Ie(e){let{editMode:t,editingKeys:n,defaultEditingKeys:c,onEditingKeysChange:l,onRowEditInit:o,onRowEditSave:r,onRowEditCancel:b,onCellEditInit:i,onCellEditComplete:f,onCellEditCancel:h}=e,R=n!==void 0,[g,T]=_.useState(()=>n??c??de),C=R?n??de:g;_.useEffect(()=>{R&&T(n??de)},[R,n]);let[s,d]=_.useState(null),a=_.useRef({}),E=_.useCallback(k=>C[String(k)]===!0,[C]),S=_.useCallback((k,I,P,w)=>{if(t!=="row")return;let p=String(I),F={...C,[p]:!0};P&&(a.current[p]={...P}),R||T(F),l?.({originalEvent:k,value:F}),o?.({originalEvent:k,data:P??{},index:w??-1})},[t,C,R,l,o]),L=_.useCallback((k,I,P,w,p)=>{if(t!=="row")return;let F=String(I),M={...C};delete M[F],delete a.current[F],R||T(M),l?.({originalEvent:k,value:M}),r?.({originalEvent:k,data:P??{},newData:w,index:p??-1})},[t,C,R,l,r]),D=_.useCallback((k,I,P,w)=>{if(t!=="row")return;let p=String(I),F={...C};delete F[p];let M=a.current[p];delete a.current[p],R||T(F),l?.({originalEvent:k,value:F}),b?.({originalEvent:k,data:M??P??{},index:w??-1})},[t,C,R,l,b]),K=_.useCallback((k,I,P)=>t!=="cell"||!s||s.field!==I?!1:P!==void 0&&s.rowKey!==void 0?String(s.rowKey)===String(P):s.rowIndex===k,[t,s]),N=_.useCallback((k,I,P,w)=>{t==="cell"&&(d({rowIndex:I,field:P,rowKey:w}),i?.({originalEvent:k,field:P,rowIndex:I}))},[t,i]),x=_.useCallback(k=>{if(t!=="cell")return!1;let I=!1,P={...k,preventDefault:()=>{I=!0}};return f?.(P),I||d(null),!I},[t,f]),m=_.useCallback((k,I,P)=>{t==="cell"&&(h?.({originalEvent:k,rowData:{},newRowData:{},field:P,value:void 0,newValue:void 0,rowIndex:I,type:"escape",preventDefault:()=>{}}),d(null))},[t,h]),y=_.useCallback(k=>({"data-scope":"datatable","data-part":"cell-editor","data-row-index":String(k.rowIndex),"data-field":k.field,...k.rowKey!==void 0?{"data-row-key":String(k.rowKey)}:void 0,...k.isEditing?{"data-editing":""}:void 0}),[]),O=_.useCallback(()=>({"data-scope":"datatable","data-part":"row-editor-init",type:"button","aria-label":"Edit row"}),[]),u=_.useCallback(()=>({"data-scope":"datatable","data-part":"row-editor-save",type:"button","aria-label":"Save row"}),[]),v=_.useCallback(()=>({"data-scope":"datatable","data-part":"row-editor-cancel",type:"button","aria-label":"Cancel edit"}),[]),H=_.useMemo(()=>({isEditing:E,startRowEdit:S,saveRowEdit:L,cancelRowEdit:D,startCellEdit:N,completeCellEdit:x,cancelCellEdit:m,isCellEditing:K,getCellEditorRootProps:y,getRowEditorInitProps:O,getRowEditorSaveProps:u,getRowEditorCancelProps:v}),[E,S,L,D,N,x,m,K,y,O,u,v]);return{state:_.useMemo(()=>({editingKeys:C,editingCell:s}),[C,s]),exposes:H}}import*as q from"react";var Ee=Object.freeze({});function Ue(e){let{onExpandedChange:t}=e,n=e.expandedKeys!==void 0,[c,l]=q.useState(()=>e.expandedKeys??e.defaultExpandedKeys??{}),o=n?e.expandedKeys??Ee:c;q.useEffect(()=>{n&&l(e.expandedKeys??Ee)},[n,e.expandedKeys]);let r=q.useCallback(R=>o[String(R)]===!0,[o]),b=q.useCallback((R,g)=>{let T=String(g),C={...o};C[T]?delete C[T]:C[T]=!0,n||l(C),t?.({originalEvent:R,value:C})},[o,n,t]),i=q.useCallback((R,g)=>{let T=R!==void 0?r(R):!1,C=g?._treeLevel!==void 0,s=g?._treeLevel??0,d=g?._treeHasChildren??!1,a=S=>{R!==void 0&&b(S,R)};if(C&&!d)return{isSpacer:!0,spacerProps:{"data-scope":"datatable","data-part":"row-toggle-spacer","data-tree-level":s,style:{display:"inline-block",marginInlineStart:`calc(var(--p-datatable-indent, 1rem) * ${s})`,width:"var(--p-datatable-toggle-size, 2rem)",flexShrink:0}}};let E={"data-scope":"datatable","data-part":"row-toggle",type:"button","aria-expanded":T,"aria-label":T?"Collapse row":"Expand row",onClick:a};return C&&(E["data-tree-level"]=s,E.style={marginInlineStart:`calc(var(--p-datatable-indent, 1rem) * ${s})`,display:"inline-flex",alignItems:"center",justifyContent:"center",flexShrink:0}),{isSpacer:!1,rootProps:E,isExpanded:T}},[r,b]),f=q.useMemo(()=>({isExpanded:r,toggleExpansion:b,getRowToggleProps:i}),[r,b,i]);return{state:q.useMemo(()=>({expandedKeys:o}),[o]),exposes:f}}import{resolveFieldData as Pe}from"@primeuix/utils";import*as ne from"react";var Ne=Object.freeze({});function He(e){let t=ne.useCallback(c=>{if(typeof document>"u")return;let l=e.data??[],o=c?.separator??",",r=c?.fileName??"download",b=l;if(c?.selectionOnly&&e.selectionKeys&&e.dataKey&&(b=l.filter(d=>{let a=String(d[e.dataKey]);return e.selectionKeys[a]})),b.length===0)return;let i=c?.fields??Object.keys(b[0]);if(c?.exportFunction){c.exportFunction({data:b,fields:i});return}let f=c?.headers,h=[],R=i.map(d=>{let a=f?.[d]??d;return`"${String(a).replace(/"/g,'""')}"`});h.push(R.join(o));for(let d of b){let a=i.map(E=>{let S=Pe(d,E),L=S!=null?String(S):"";return L.length>0&&/^[=+\-@\t\r]/.test(L)&&(L=` ${L}`),`"${L.replace(/"/g,'""')}"`});h.push(a.join(o))}let g=h.join(`
|
|
10
|
+
`);if(typeof document>"u"||typeof URL>"u"||typeof Blob>"u")return;let T=new Blob([g],{type:"text/csv;charset=utf-8;"}),C=URL.createObjectURL(T),s=document.createElement("a");s.setAttribute("href",C),s.setAttribute("download",`${r}.csv`),s.style.display="none",document.body.appendChild(s);try{s.click()}finally{s.parentNode===document.body&&document.body.removeChild(s),URL.revokeObjectURL(C)}},[e.data,e.dataKey,e.selectionKeys]),n=ne.useMemo(()=>({exportCSV:t}),[t]);return{state:Ne,exposes:n}}import{useFilter as Ae}from"@primereact/hooks/use-filter";import*as j from"react";var ze={Contains:"contains",NotContains:"notContains",StartsWith:"startsWith",EndsWith:"endsWith",Equals:"equals",NotEquals:"notEquals",In:"in",Between:"between",Lt:"lt",Lte:"lte",Gt:"gt",Gte:"gte",DateIs:"dateIs",DateIsNot:"dateIsNot",DateBefore:"dateBefore",DateAfter:"dateAfter",Custom:"custom"},je={And:"and",Or:"or"},Me=Object.freeze({});function _e(e){let{onFilter:t}=e,{data:n=[],lazy:c=!1,globalFilterFields:l=[]}=e,o=e.filters!==void 0,[r,b]=j.useState(e.defaultFilters??Me),i=o?e.filters??Me:r;j.useEffect(()=>{o&&e.filters&&b(e.filters)},[o,e.filters]);let f=e.globalFilter??null,h=e.filterDelay??0,[R,g]=j.useState(i),[T,C]=j.useState(f);j.useEffect(()=>{if(h<=0){g(i),C(f);return}let w=setTimeout(()=>{g(i),C(f)},h);return()=>clearTimeout(w)},[i,f,h]);let s=h>0?R:i,d=h>0?T:f,a=j.useCallback((w,p)=>{o||b(p),t?.({originalEvent:w,filters:p})},[o,t]),E=j.useCallback((w,p,F)=>{let M={...i,[p]:F};a(w,M)},[i,a]),S=j.useCallback((w,p)=>{let F=i[p],M={...i};if(F&&typeof F=="object"&&F!==null&&"constraints"in F){let z=F;M[p]={operator:z.operator??"and",constraints:[{value:null,matchMode:z.constraints?.[0]?.matchMode??"contains"}]}}else F&&typeof F=="object"&&F!==null&&"matchMode"in F?M[p]={value:null,matchMode:F.matchMode}:delete M[p];a(w,M)},[i,a]),L=j.useCallback(w=>{a(w,{})},[a]),D=j.useCallback((w,p,F="contains")=>{let M=i[p],z={...i};if(M&&typeof M=="object"&&M!==null&&"constraints"in M){let $=M,V=[...$.constraints??[],{value:null,matchMode:F}];z[p]={...$,constraints:V}}else{let $=M&&typeof M=="object"&&"value"in M?M.value:null,V=M&&typeof M=="object"&&"matchMode"in M?M.matchMode??"contains":"contains";z[p]={operator:"and",constraints:[{value:$,matchMode:V},{value:null,matchMode:F}]}}a(w,z)},[i,a]),K=j.useCallback((w,p,F)=>{let M=i[p];if(!M||typeof M!="object"||!("constraints"in M))return;let z=M,$=(z.constraints??[]).filter((Z,ue)=>ue!==F);if($.length===0)return;let V={...i,[p]:{...z,constraints:$}};a(w,V)},[i,a]),N=j.useCallback((w,p,F)=>{let M=i[p],z={...i};if(M&&typeof M=="object"&&M!==null&&"constraints"in M)z[p]={...M,operator:F};else{let $=M&&typeof M=="object"&&"value"in M?M.value:null,V=M&&typeof M=="object"&&"matchMode"in M?M.matchMode??"contains":"contains";z[p]={operator:F,constraints:[{value:$,matchMode:V}]}}a(w,z)},[i,a]),x=j.useCallback((w,p,F,M,z)=>{let $=i[p];if(!$||typeof $!="object"||!("constraints"in $))return;let V=$,Z=[...V.constraints??[]];F>=0&&F<Z.length&&(Z[F]={value:M,matchMode:z??Z[F].matchMode});let ue={...i,[p]:{...V,constraints:Z}};a(w,ue)},[i,a]),m=j.useCallback((w,p,F,M)=>{let z=i[p];if(!z||typeof z!="object"||!("constraints"in z))return;let $=z,V=[...$.constraints??[]];F>=0&&F<V.length&&(V[F]={...V[F],matchMode:M});let Z={...i,[p]:{...$,constraints:V}};a(w,Z)},[i,a]),y=j.useCallback(w=>{let p=i[w];return p?typeof p=="object"&&p!==null&&"constraints"in p?(p.constraints??[]).some(M=>M.value!==null&&M.value!==void 0&&M.value!==""):typeof p=="object"&&p!==null&&"value"in p?p.value!==null&&p.value!==void 0&&p.value!=="":p!=null&&p!=="":!1},[i]),O=j.useCallback(()=>f?!0:Object.keys(i).some(w=>y(w)),[i,f,y]),u=j.useCallback(w=>{let p=i[w];return p?typeof p=="object"&&p!==null?p:{value:p,matchMode:"contains"}:{value:null,matchMode:"contains"}},[i]),v=j.useMemo(()=>{let w=[];for(let p of Object.keys(s)){if(p==="global")continue;let F=s[p];if(F){if(typeof F=="object"&&F!==null){let M=F;if(M.constraints&&M.constraints.length>0){w.push({field:p,operator:M.operator??"and",constraints:M.constraints.map(z=>({value:z.value,matchMode:z.matchMode??"contains"}))});continue}if("value"in M||"matchMode"in M){w.push({field:p,value:M.value,matchMode:M.matchMode??"contains"});continue}}w.push({field:p,value:F,matchMode:"contains"})}}return d&&l.length>0&&w.push({field:l,value:d,matchMode:"contains"}),w},[s,d,l]),U=Ae({data:n,rules:v,lazy:c}).filteredData,k=j.useMemo(()=>({filters:i,globalFilter:f}),[i,f]),I=j.useCallback((w,p="row")=>({"data-scope":"datatable","data-part":"filter","data-display":p,...y(w)?{"data-active":""}:void 0}),[y]),P=j.useMemo(()=>({setFieldFilter:E,clearFieldFilter:S,clearAllFilters:L,addConstraint:D,removeConstraint:K,setOperator:N,setConstraintValue:x,setConstraintMatchMode:m,hasFilterValue:y,isFiltered:O,getFieldFilterMeta:u,getFilterRootProps:I}),[E,S,L,D,K,N,x,m,y,O,u,I]);return{filteredData:U,state:k,exposes:P}}import{resolveFieldData as We}from"@primeuix/utils";import*as re from"react";function $e(e){let{data:t,groupField:n}=e,c=re.useMemo(()=>{if(!n)return;let r=new Map;if(t.length===0)return r;let b=[],i,f=0;for(let h=0;h<t.length;h++){let R=We(t[h],n);h===0?(i=R,f=0):R!==i&&(b.push({start:f,end:h-1,value:i}),i=R,f=h)}b.push({start:f,end:t.length-1,value:i});for(let h=0;h<b.length;h++){let R=b[h],g=R.end-R.start+1;for(let T=R.start;T<=R.end;T++)r.set(T,{isGroupStart:T===R.start,isGroupEnd:T===R.end,groupValue:R.value,groupCount:g,groupIndex:h})}return r},[t,n]),l=re.useMemo(()=>({}),[]);return{state:re.useMemo(()=>({groupMetaMap:c}),[c]),exposes:l}}import*as Y from"react";function Ge(e){let{data:t,lazy:n,paginator:c,onPageChange:l}=e,o=e.page!==void 0,r=e.rows!==void 0,[b,i]=Y.useState(e.defaultPage??0),[f,h]=Y.useState(e.defaultRows??10),R=o?e.page??0:b,g=r?e.rows??10:f,T=n?e.totalRecords??0:t.length,C=Math.max(1,Math.ceil(T/g)),s=R*g;Y.useEffect(()=>{!o&&R>=C&&C>0&&i(C-1)},[C,R,o]);let d=Y.useMemo(()=>!c||n?t:t.slice(s,s+g),[t,c,n,s,g]),a=Y.useCallback((D,K)=>{if(K<0||K>=C)return;o||i(K);let N=K*g;l?.({originalEvent:D,page:K,rows:g,first:N,pageCount:C})},[C,g,o,l]),E=Y.useCallback((D,K)=>{if(K<=0)return;r||h(K),o||i(0);let N=Math.max(1,Math.ceil(T/K));l?.({originalEvent:D,page:0,rows:K,first:0,pageCount:N})},[T,r,o,l]),S=Y.useMemo(()=>({page:R,rows:g,first:s,pageCount:C,totalRecords:T,onPageChange:a,onRowsChange:E}),[R,g,s,C,T,a,E]),L=Y.useMemo(()=>({page:R,rows:g,first:s,pageCount:C,totalRecords:T}),[R,g,s,C,T]);return{paginatedData:d,state:L,exposes:S}}import*as B from"react";var Ve=Object.freeze({}),fe="data-dragpoint-top",pe="data-dragpoint-bottom";function ae(e){e&&(e.removeAttribute(fe),e.removeAttribute(pe))}function Be(e){let{data:t,onRowReorder:n}=e,{reorderableRows:c=!1}=e,l=B.useRef(-1),o=B.useRef(-1),r=B.useRef(null),b=B.useCallback((d,a)=>{c&&(l.current=a,d.dataTransfer.effectAllowed="move",d.dataTransfer.setData("text/plain",String(a)))},[c]),i=B.useCallback((d,a)=>{if(!c||l.current===-1||l.current===a)return;d.preventDefault(),d.dataTransfer.dropEffect="move";let E=d.currentTarget,S=E.getBoundingClientRect(),L=S.top+S.height/2;r.current&&r.current!==E&&ae(r.current),d.clientY<L?(E.setAttribute(fe,""),E.removeAttribute(pe),o.current=a):(E.setAttribute(pe,""),E.removeAttribute(fe),o.current=a+1),r.current=E},[c]),f=B.useCallback(d=>{if(!c)return;let a=d.currentTarget;ae(a),r.current===a&&(r.current=null)},[c]),h=B.useCallback(d=>{if(!c||l.current===-1)return;d.preventDefault();let a=t??[],E=l.current,S=o.current;if(S>E&&(S-=1),S!==E&&S>=0&&S<=a.length){let L=[...a],[D]=L.splice(E,1);L.splice(S,0,D),n?.({originalEvent:d.nativeEvent,dragIndex:E,dropIndex:S,value:L})}ae(r.current),r.current=null,l.current=-1,o.current=-1},[c,t,n]),R=B.useCallback(()=>{c&&(ae(r.current),r.current=null,l.current=-1,o.current=-1)},[c]),g=B.useCallback(d=>{let a=d.currentTarget.closest("tr");a&&a.setAttribute("data-drag-source","true")},[]),T=B.useCallback(d=>{let a=d.currentTarget.closest("tr");a&&a.removeAttribute("data-drag-source")},[]),C=B.useCallback(()=>({"data-scope":"datatable","data-part":"row-reorder",style:{cursor:"grab",userSelect:"none",touchAction:"none"},onPointerDown:g,onPointerUp:T}),[g,T]),s=B.useMemo(()=>({onDragStart:b,onDragOver:i,onDragEnter:i,onDragLeave:f,onDrop:h,onDragEnd:R,getRowReorderHandleProps:C}),[b,i,f,h,R,C]);return{state:Ve,exposes:s}}import*as W from"react";var be=Object.freeze({});function Te(e){let t=[];if(e.children)for(let n of e.children)t.push(n.key),t.push(...Te(n));return t}function oe(e,t){for(let n of e){if(n.key===t)return n;if(n.children){let c=oe(n.children,t);if(c)return c}}return null}function Xe(e,t){let n=[];function c(l,o){for(let r of l){if(r.key===t)return n.push(...o),!0;if(r.children&&c(r.children,[...o,r.key]))return!0}return!1}return c(e,[]),n}function Ce(e,t){return!e.children||e.children.length===0?!0:e.children.every(n=>t[n.key]===!0&&Ce(n,t))}function ve(e,t){return e.children?e.children.some(n=>t[n.key]===!0||ve(n,t)):!1}function Ye(e,t,n){let c=Xe(e,t);for(let l=c.length-1;l>=0;l--){let o=c[l],r=oe(e,o);r&&Ce(r,n)?n[o]=!0:delete n[o]}}function qe(e){let{data:t,onSelectionChange:n,selectionMode:c,metaKeySelection:l}=e,o=W.useRef(null),r=e.selectionKeys!==void 0,[b,i]=W.useState(()=>e.selectionKeys??e.defaultSelectionKeys??be),f=r?e.selectionKeys??be:b;W.useEffect(()=>{r&&i(e.selectionKeys??be)},[r,e.selectionKeys]);let h=W.useCallback((x,m)=>e.dataKey&&x?String(x[e.dataKey]):m,[e.dataKey]),R=W.useCallback(x=>f[String(x)]===!0,[f]),g=e.treeMode?e.rawTreeData:void 0,T=W.useMemo(()=>{let x=new Map;for(let m=0;m<t.length;m++)x.set(String(h(t[m],m)),m);return x},[t,h]),C=W.useCallback((x,m,y)=>{let O=String(m),u,v=!0;if(y==="radio")u={[O]:!0};else if(y==="single")u=f[O]?{}:{[O]:!0};else if(x.shiftKey===!0&&!g&&o.current!==null&&o.current!==O){let U=o.current,k=T.get(U)??-1,I=T.get(O)??-1;if(k>=0&&I>=0){let P=Math.min(k,I),w=Math.max(k,I);u={...f};for(let p=P;p<=w;p++){let F=String(h(t[p],p));u[F]=!0}}else u={...f,[O]:!0};v=!1}else{u={...f};let U=!u[O];if(U?u[O]=!0:delete u[O],g){let k=oe(g,O);if(k){let I=Te(k);for(let P of I)U?u[P]=!0:delete u[P]}Ye(g,O,u)}}v&&y!=="radio"&&(o.current=O),r||i(u),n?.({originalEvent:x,value:u,type:y==="radio"?"radio":y==="single"?"row":"checkbox"})},[t,h,f,r,n,g,T]),s=W.useCallback(x=>{let m=[];for(let y of x)m.push(y.key),y.children&&m.push(...s(y.children));return m},[]),d=W.useMemo(()=>{if(g){let m=s(g);if(m.length===0)return{all:!1,some:!1};let y=m.reduce((O,u)=>f[u]===!0?O+1:O,0);return{all:y===m.length,some:y>0&&y<m.length}}if(t.length===0)return{all:!1,some:!1};let x=0;for(let m=0;m<t.length;m++){let y=String(h(t[m],m));f[y]===!0&&x++}return{all:x===t.length,some:x>0&&x<t.length}},[t,g,f,h,s]),a=W.useCallback(()=>d.all,[d]),E=W.useCallback(()=>d.some,[d]),S=W.useCallback(x=>{let m;if(a())m={};else if(m={},g){let y=s(g);for(let O of y)m[O]=!0}else t.forEach((y,O)=>{let u=String(h(y,O));m[u]=!0});r||i(m),n?.({originalEvent:x,value:m,type:"all"})},[t,g,a,r,h,s,n]),L=W.useCallback((x,m)=>{if(!c)return;let y=String(m),O=x.metaKey||x.ctrlKey,u=x.shiftKey,v,H=!0;if(c==="single")v=f[y]?{}:{[y]:!0};else if(l)if(u&&o.current!==null&&o.current!==y){let U=o.current,k=-1,I=-1;for(let P=0;P<t.length;P++){let w=String(h(t[P],P));if(w===U&&(k=P),w===y&&(I=P),k>=0&&I>=0)break}if(k>=0&&I>=0){let P=Math.min(k,I),w=Math.max(k,I);v=O?{...f}:{};for(let p=P;p<=w;p++){let F=String(h(t[p],p));v[F]=!0}}else v={...f,[y]:!0};H=!1}else O?(v={...f},v[y]?delete v[y]:v[y]=!0):v={[y]:!0};else v={...f},v[y]?delete v[y]:v[y]=!0;H&&(o.current=y),r||i(v),n?.({originalEvent:x,value:v,type:"row"})},[t,h,f,r,c,l,n]),D=W.useCallback(x=>{if(!g)return!1;let m=oe(g,String(x));return!m||!m.children||m.children.length===0?!1:!f[String(x)]&&ve(m,f)},[g,f]),K=W.useMemo(()=>({isSelected:R,isPartiallySelected:D,toggleSelection:C,toggleAll:S,isAllSelected:a,isSomeSelected:E,onRowClick:L}),[R,D,C,S,a,E,L]),N=W.useMemo(()=>({selectionKeys:f}),[f]);return{getRowKey:h,state:N,exposes:K}}import*as X from"react";import{localeComparator as Je,resolveFieldData as se,sort as ge}from"@primeuix/utils";var me=Je(),le=(e,t,n,c=1)=>ge(e,t,n,me,c),Re=(e,t,n,c=1)=>!t||n===0?e:[...e].sort((l,o)=>ge(se(l,t),se(o,t),n,me,c)),ye=(e,t,n=1)=>!t||t.length===0?e:[...e].sort((c,l)=>{for(let o of t){let r=ge(se(c,o.field),se(l,o.field),o.order,me,n);if(r!==0)return r}return 0});function Qe(e){let{removableSort:t,onSortChange:n}=e,{data:c,lazy:l}=e,o=e.sortField!==void 0,r=e.multiSortMeta!==void 0,[b,i]=X.useState(e.defaultSortField),[f,h]=X.useState(e.defaultSortOrder),[R,g]=X.useState(e.defaultMultiSortMeta),T=o?e.sortField:b,C=o?e.sortOrder:f,s=r?e.multiSortMeta:R,d=X.useCallback(m=>s&&s.length>0?s.some(y=>y.field===m):T===m&&C!==0,[T,C,s]),a=X.useCallback(m=>s&&s.length>0?s.find(O=>O.field===m)?.order??0:T===m?C??0:0,[T,C,s]),E=X.useCallback(m=>s&&s.length>0?s.findIndex(y=>y.field===m):-1,[s]),S=X.useCallback((m,y,O)=>{let u=a(y),v;if(u===0?v=1:u===1?v=-1:v=t?0:1,O){let H=[...s??[]],U=H.findIndex(k=>k.field===y);v===0?U!==-1&&H.splice(U,1):U!==-1?H[U]={field:y,order:v}:H.push({field:y,order:v}),r||g(H),n?.({originalEvent:m,field:y,order:v,multiSortMeta:H})}else o||(i(v===0?void 0:y),h(v)),r||g(void 0),n?.({originalEvent:m,field:y,order:v,multiSortMeta:void 0})},[a,t,n,o,r,s]),L=e.nullSortOrder??1,D=X.useMemo(()=>l?c:s&&s.length>0?ye(c,s,L):T&&C!=null&&C!==0?Re(c,T,C,L):c,[c,l,T,C,s,L]),K=X.useCallback(m=>{let y=d(m),O=a(m),u=y?O===1?"ascending":"descending":"",v=U=>{if(!m)return;let k=U.metaKey||U.ctrlKey;S(U,m,k)},H=U=>{(U.key==="Enter"||U.key===" ")&&(U.preventDefault(),v(U))};return{"data-scope":"datatable","data-part":"sort",...y?{"data-sorted":"","data-sort-order":O===1?"asc":"desc"}:{"data-unsorted":""},role:"button",tabIndex:0,"aria-label":`Sort by ${m}${u?` ${u}`:""}`,"aria-sort":y?O===1?"ascending":"descending":"none",onClick:v,onKeyDown:H}},[d,a,S]),N=X.useMemo(()=>({onSort:S,isSorted:d,getSortOrder:a,getSortIndex:E,getSortProps:K}),[S,d,a,E,K]),x=X.useMemo(()=>({sortField:T,sortOrder:C,multiSortMeta:s}),[T,C,s]);return{sortedData:D,state:x,exposes:N}}import{BUILT_IN_MATCHERS as Ze,getGlobalMatchers as et}from"@primereact/hooks/use-filter";import{resolveFieldData as Q}from"@primeuix/utils";import*as ee from"react";function De(e,t,n,c){let l=Ze[e]??et()[e];return l?l(t,n,c):!0}var ce=100;function xe(e,t,n,c=0){return c>=ce?e:[...e].sort((o,r)=>{let b=o.data?Q(o.data,t):void 0,i=r.data?Q(r.data,t):void 0;return le(b,i,n)}).map(o=>o.children?.length?{...o,children:xe(o.children,t,n,c+1)}:o)}function ke(e,t,n=0){return n>=ce?e:[...e].sort((l,o)=>{for(let r of t){let b=l.data?Q(l.data,r.field):void 0,i=o.data?Q(o.data,r.field):void 0,f=le(b,i,r.order);if(f!==0)return f}return 0}).map(l=>l.children?.length?{...l,children:ke(l.children,t,n+1)}:l)}function ie(e,t,n="contains"){return De(n,e,t)}function tt(e,t,n,c){if(n&&c.length>0&&!c.some(r=>De("contains",Q(e,r),n)))return!1;let l=Object.keys(t).filter(o=>o!=="global");for(let o of l){let r=t[o];if(!r)continue;if(typeof r=="object"&&r!==null&&"constraints"in r){let i=r,f=i.operator??"and",h=i.constraints??[];if(h.length>0){let R=Q(e,o);if(f==="and"){if(!h.every(T=>ie(R,T.value,T.matchMode)))return!1}else if(!h.some(T=>ie(R,T.value,T.matchMode)))return!1}continue}if(typeof r=="object"&&r!==null&&"value"in r){let i=r,f=Q(e,o);if(!ie(f,i.value,i.matchMode))return!1;continue}let b=Q(e,o);if(!ie(b,r))return!1}return!0}function he(e,t,n,c,l=0){if(l>=ce)return[];let o=[];for(let r of e){let b=r.data??{};if(tt(b,t,n,c))o.push(r);else if(r.children?.length){let f=he(r.children,t,n,c,l+1);f.length>0&&o.push({...r,children:f})}}return o}function Se(e,t){if(t)return!0;let n=Object.keys(e).filter(c=>c!=="global");for(let c of n){let l=e[c];if(l){if(typeof l=="object"&&l!==null&&"constraints"in l){if((l.constraints??[]).some(b=>b.value!==null&&b.value!==void 0&&b.value!==""))return!0;continue}if(typeof l=="object"&&l!==null&&"value"in l){let o=l.value;if(o!=null&&o!=="")return!0;continue}if(l!=null&&l!=="")return!0}}return!1}function we(e,t,n,c){if(n>=ce)return[];let l=[],o=e.length;for(let r=0;r<e.length;r++){let b=e[r],i=!!b.children?.length,f=i||b.leaf===!1,h=b.leaf===!0||!i&&b.leaf!==!1;l.push({...b.data??{},key:b.key,data:b.data??{},children:b.children,_treeLevel:n,_treeHasChildren:f,_treeLeaf:h,_treeParentKey:c,_treePosInSet:r+1,_treeSetSize:o}),i&&t[b.key]&&l.push(...we(b.children,t,n+1,b.key))}return l}function nt(e){let{data:t,treeMode:n,expandedKeys:c,sortField:l,sortOrder:o,multiSortMeta:r,filters:b={},globalFilter:i=null,globalFilterFields:f=[],paginator:h=!1,page:R=0,rows:g=10}=e,T=ee.useMemo(()=>{if(!n)return t;let a=t;if(Se(b,i)&&(a=he(a,b,i,f)),r&&r.length>0?a=ke(a,r):l&&o!=null&&o!==0&&(a=xe(a,l,o)),h){let E=R*g;a=a.slice(E,E+g)}return we(a,c,0,null)},[t,n,c,l,o,r,b,i,f,h,R,g]),C=ee.useMemo(()=>{if(!n)return t.length;let a=t;return Se(b,i)&&(a=he(a,b,i,f)),a.length},[t,n,b,i,f]),s=ee.useMemo(()=>({}),[]),d=ee.useMemo(()=>({}),[]);return{flattenedData:T,totalRootNodes:C,state:s,exposes:d}}import*as J from"react";function rt(e){let{data:t,treeMode:n,selectionMode:c,expandedKeys:l={},onToggleExpansion:o,onToggleSelection:r,getRowKey:b}=e,i=c==="single"?"single":"checkbox",[f,h]=J.useState(-1),R=J.useCallback(d=>f===-1?d===0?0:-1:d===f?0:-1,[f]),g=J.useCallback((d,a)=>{if(!d)return;let E=d.querySelector(`tr[data-scope="datatable"][data-part="row"][data-index="${a}"]`);if(E){h(a),E.focus();return}h(a)},[]),T=J.useCallback((d,a)=>{let E=d.target;if(E!==d.currentTarget){let D=E.tagName;if(D==="INPUT"||D==="SELECT"||D==="TEXTAREA"||E.isContentEditable||E.closest("[data-editing]"))return}let S=t.length,L=!0;switch(d.key){case"ArrowDown":{let D=Math.min(a+1,S-1);if(D!==a){let K=d.currentTarget.closest("tbody");if(g(K,D),d.shiftKey&&r){let N=t[D],x=b?.(N,D);x!==void 0&&r(d,x,i)}}break}case"ArrowUp":{let D=Math.max(a-1,0);if(D!==a){let K=d.currentTarget.closest("tbody");if(g(K,D),d.shiftKey&&r){let N=t[D],x=b?.(N,D);x!==void 0&&r(d,x,i)}}break}case"ArrowRight":{if(!n){L=!1;break}let D=t[a],K=b?.(D,a),N=D?._treeHasChildren,x=K!==void 0&&l[String(K)];if(N&&!x&&K!==void 0)o?.(d,K);else if(x){let m=d.currentTarget.closest("tbody");g(m,Math.min(a+1,S-1))}break}case"ArrowLeft":{if(!n){L=!1;break}let D=t[a],K=b?.(D,a),N=D?._treeHasChildren,x=K!==void 0&&l[String(K)];if(N&&x&&K!==void 0)o?.(d,K);else{let m=D?._treeParentKey;if(m!==null){let y=t.findIndex((O,u)=>String(b?.(O,u))===String(m));if(y>=0){let O=d.currentTarget.closest("tbody");g(O,y)}}}break}case"Home":{let D=d.currentTarget.closest("tbody");g(D,0);break}case"End":{let D=d.currentTarget.closest("tbody");g(D,S-1);break}case"Enter":case" ":{let D=d.target;if(D.tagName==="INPUT"||D.tagName==="SELECT"||D.tagName==="TEXTAREA"||D.tagName==="BUTTON"||D.tagName==="A"||D.isContentEditable){L=!1;break}if(r){let K=t[a],N=b?.(K,a);N!==void 0&&r(d,N,i)}break}default:L=!1}L&&d.preventDefault()},[t,n,l,g,o,r,b,i]),C=J.useMemo(()=>({focusedRowIndex:f}),[f]),s=J.useMemo(()=>({getRowTabIndex:R,onRowKeyDown:T,focusRow:g}),[R,T,g]);return{state:C,exposes:s}}export{ze as FilterMatchMode,je as FilterOperator,Ke as useDataTableColumnReorder,Le as useDataTableColumnResize,Ie as useDataTableEditing,Ue as useDataTableExpansion,He as useDataTableExport,_e as useDataTableFilter,$e as useDataTableGrouping,rt as useDataTableKeyboard,Ge as useDataTablePagination,Be as useDataTableRowReorder,qe as useDataTableSelection,Qe as useDataTableSort,nt as useDataTableTree};
|