config redirect

This commit is contained in:
Nuno Coração
2023-01-29 22:30:24 +00:00
parent 17557c7d73
commit 5fb4bd8083
9905 changed files with 1258996 additions and 36355 deletions
+118
View File
@@ -0,0 +1,118 @@
import React, { ElementType, Ref } from 'react';
import { ByComparator, EnsureArray, Expand, Props } from '../../types.js';
import { PropsForFeatures } from '../../utils/render.js';
declare let DEFAULT_COMBOBOX_TAG: React.ExoticComponent<{
children?: React.ReactNode;
}>;
interface ComboboxRenderPropArg<T> {
open: boolean;
disabled: boolean;
activeIndex: number | null;
activeOption: T | null;
value: T;
}
declare type O = 'value' | 'defaultValue' | 'nullable' | 'multiple' | 'onChange' | 'by';
declare type ComboboxValueProps<TValue, TNullable extends boolean | undefined, TMultiple extends boolean | undefined, TTag extends ElementType> = Extract<({
value?: EnsureArray<TValue>;
defaultValue?: EnsureArray<TValue>;
nullable: true;
multiple: true;
onChange?(value: EnsureArray<TValue>): void;
by?: ByComparator<TValue>;
} & Props<TTag, ComboboxRenderPropArg<EnsureArray<TValue>>, O>) | ({
value?: TValue | null;
defaultValue?: TValue | null;
nullable: true;
multiple?: false;
onChange?(value: TValue | null): void;
by?: ByComparator<TValue | null>;
} & Expand<Props<TTag, ComboboxRenderPropArg<TValue | null>, O>>) | ({
value?: EnsureArray<TValue>;
defaultValue?: EnsureArray<TValue>;
nullable?: false;
multiple: true;
onChange?(value: EnsureArray<TValue>): void;
by?: ByComparator<TValue extends Array<infer U> ? U : TValue>;
} & Expand<Props<TTag, ComboboxRenderPropArg<EnsureArray<TValue>>, O>>) | ({
value?: TValue;
nullable?: false;
multiple?: false;
defaultValue?: TValue;
onChange?(value: TValue): void;
by?: ByComparator<TValue>;
} & Props<TTag, ComboboxRenderPropArg<TValue>, O>), {
nullable?: TNullable;
multiple?: TMultiple;
}>;
declare type ComboboxProps<TValue, TNullable extends boolean | undefined, TMultiple extends boolean | undefined, TTag extends ElementType> = ComboboxValueProps<TValue, TNullable, TMultiple, TTag> & {
disabled?: boolean;
__demoMode?: boolean;
name?: string;
};
declare function ComboboxFn<TValue, TTag extends ElementType = typeof DEFAULT_COMBOBOX_TAG>(props: ComboboxProps<TValue, true, true, TTag>, ref: Ref<TTag>): JSX.Element;
declare function ComboboxFn<TValue, TTag extends ElementType = typeof DEFAULT_COMBOBOX_TAG>(props: ComboboxProps<TValue, true, false, TTag>, ref: Ref<TTag>): JSX.Element;
declare function ComboboxFn<TValue, TTag extends ElementType = typeof DEFAULT_COMBOBOX_TAG>(props: ComboboxProps<TValue, false, false, TTag>, ref: Ref<TTag>): JSX.Element;
declare function ComboboxFn<TValue, TTag extends ElementType = typeof DEFAULT_COMBOBOX_TAG>(props: ComboboxProps<TValue, false, true, TTag>, ref: Ref<TTag>): JSX.Element;
interface InputRenderPropArg {
open: boolean;
disabled: boolean;
}
declare type InputPropsWeControl = 'role' | 'aria-labelledby' | 'aria-expanded' | 'aria-activedescendant' | 'onKeyDown' | 'onChange' | 'displayValue';
interface ButtonRenderPropArg {
open: boolean;
disabled: boolean;
value: any;
}
declare type ButtonPropsWeControl = 'type' | 'tabIndex' | 'aria-haspopup' | 'aria-controls' | 'aria-expanded' | 'aria-labelledby' | 'disabled' | 'onClick' | 'onKeyDown';
interface LabelRenderPropArg {
open: boolean;
disabled: boolean;
}
declare type LabelPropsWeControl = 'ref' | 'onClick';
interface OptionsRenderPropArg {
open: boolean;
}
declare type OptionsPropsWeControl = 'aria-activedescendant' | 'aria-labelledby' | 'hold' | 'onKeyDown' | 'role' | 'tabIndex';
declare let OptionsRenderFeatures: number;
interface OptionRenderPropArg {
active: boolean;
selected: boolean;
disabled: boolean;
}
declare type ComboboxOptionPropsWeControl = 'role' | 'tabIndex' | 'aria-disabled' | 'aria-selected';
export declare let Combobox: typeof ComboboxFn & {
displayName: string;
} & {
Input: (<TTag extends React.ElementType<any> = "input", TType = {}[] | undefined>(props: Props<TTag, InputRenderPropArg, InputPropsWeControl> & {
displayValue?(item: TType): string;
onChange(event: React.ChangeEvent<HTMLInputElement>): void;
}, ref: Ref<HTMLInputElement>) => React.ReactElement<any, string | React.JSXElementConstructor<any>> | null) & {
displayName: string;
};
Button: (<TTag_1 extends React.ElementType<any> = "button">(props: Props<TTag_1, ButtonRenderPropArg, ButtonPropsWeControl>, ref: Ref<HTMLButtonElement>) => React.ReactElement<any, string | React.JSXElementConstructor<any>> | null) & {
displayName: string;
};
Label: (<TTag_2 extends React.ElementType<any> = "label">(props: Props<TTag_2, LabelRenderPropArg, LabelPropsWeControl>, ref: Ref<HTMLLabelElement>) => React.ReactElement<any, string | React.JSXElementConstructor<any>> | null) & {
displayName: string;
};
Options: (<TTag_3 extends React.ElementType<any> = "ul">(props: Props<TTag_3, OptionsRenderPropArg, OptionsPropsWeControl> & (({
static?: undefined;
} & {
unmount?: boolean | undefined;
}) | ({
unmount?: undefined;
} & {
static?: boolean | undefined;
})) & {
hold?: boolean | undefined;
}, ref: Ref<HTMLUListElement>) => React.ReactElement<any, string | React.JSXElementConstructor<any>> | null) & {
displayName: string;
};
Option: (<TTag_4 extends React.ElementType<any> = "li", TType_1 = {}[] | undefined>(props: Props<TTag_4, OptionRenderPropArg, "value" | ComboboxOptionPropsWeControl> & {
disabled?: boolean | undefined;
value: TType_1;
}, ref: Ref<HTMLLIElement>) => React.ReactElement<any, string | React.JSXElementConstructor<any>> | null) & {
displayName: string;
};
};
export {};
File diff suppressed because one or more lines are too long
@@ -0,0 +1,18 @@
import React, { ReactNode, Ref } from 'react';
import { Props } from '../../types.js';
interface SharedData {
slot?: {};
name?: string;
props?: {};
}
interface DescriptionProviderProps extends SharedData {
children: ReactNode;
}
export declare function useDescriptions(): [
string | undefined,
(props: DescriptionProviderProps) => JSX.Element
];
export declare let Description: (<TTag extends React.ElementType<any> = "p">(props: Props<TTag, {}, "1D45E01E-AF44-47C4-988A-19A94EBAF55C">, ref: Ref<HTMLParagraphElement>) => React.ReactElement<any, string | React.JSXElementConstructor<any>> | null) & {
displayName: string;
};
export {};
@@ -0,0 +1 @@
import f,{createContext as m,useContext as D,useMemo as l,useState as P}from"react";import{useId as T}from'../../hooks/use-id.js';import{forwardRefWithAs as g,render as x}from'../../utils/render.js';import{useIsoMorphicEffect as E}from'../../hooks/use-iso-morphic-effect.js';import{useSyncRefs as h}from'../../hooks/use-sync-refs.js';import{useEvent as v}from'../../hooks/use-event.js';let d=m(null);function u(){let n=D(d);if(n===null){let t=new Error("You used a <Description /> component, but it is not inside a relevant parent.");throw Error.captureStackTrace&&Error.captureStackTrace(t,u),t}return n}function k(){let[n,t]=P([]);return[n.length>0?n.join(" "):void 0,l(()=>function(e){let i=v(r=>(t(o=>[...o,r]),()=>t(o=>{let s=o.slice(),p=s.indexOf(r);return p!==-1&&s.splice(p,1),s}))),a=l(()=>({register:i,slot:e.slot,name:e.name,props:e.props}),[i,e.slot,e.name,e.props]);return f.createElement(d.Provider,{value:a},e.children)},[t])]}let S="p",F=g(function(t,c){let e=T(),{id:i=`headlessui-description-${e}`,...a}=t,r=u(),o=h(c);E(()=>r.register(i),[i,r.register]);let s={ref:o,...r.props,id:i};return x({ourProps:s,theirProps:a,slot:r.slot||{},defaultTag:S,name:r.name||"Description"})});export{F as Description,k as useDescriptions};
+55
View File
@@ -0,0 +1,55 @@
import React, { MutableRefObject, Ref } from 'react';
import { Props } from '../../types.js';
import { PropsForFeatures } from '../../utils/render.js';
interface DialogRenderPropArg {
open: boolean;
}
declare type DialogPropsWeControl = 'role' | 'aria-modal' | 'aria-describedby' | 'aria-labelledby';
declare let DialogRenderFeatures: number;
interface OverlayRenderPropArg {
open: boolean;
}
declare type OverlayPropsWeControl = 'aria-hidden' | 'onClick';
interface BackdropRenderPropArg {
open: boolean;
}
declare type BackdropPropsWeControl = 'aria-hidden' | 'onClick';
interface PanelRenderPropArg {
open: boolean;
}
interface TitleRenderPropArg {
open: boolean;
}
export declare let Dialog: (<TTag extends React.ElementType<any> = "div">(props: Props<TTag, DialogRenderPropArg, DialogPropsWeControl> & (({
static?: undefined;
} & {
unmount?: boolean | undefined;
}) | ({
unmount?: undefined;
} & {
static?: boolean | undefined;
})) & {
open?: boolean | undefined;
onClose(value: boolean): void;
initialFocus?: React.MutableRefObject<HTMLElement | null> | undefined;
__demoMode?: boolean | undefined;
}, ref: Ref<HTMLDivElement>) => JSX.Element) & {
displayName: string;
} & {
Backdrop: (<TTag_1 extends React.ElementType<any> = "div">(props: Props<TTag_1, BackdropRenderPropArg, BackdropPropsWeControl>, ref: Ref<HTMLDivElement>) => JSX.Element) & {
displayName: string;
};
Panel: (<TTag_2 extends React.ElementType<any> = "div">(props: Props<TTag_2, PanelRenderPropArg, "1D45E01E-AF44-47C4-988A-19A94EBAF55C">, ref: Ref<HTMLDivElement>) => React.ReactElement<any, string | React.JSXElementConstructor<any>> | null) & {
displayName: string;
};
Overlay: (<TTag_3 extends React.ElementType<any> = "div">(props: Props<TTag_3, OverlayRenderPropArg, OverlayPropsWeControl>, ref: Ref<HTMLDivElement>) => React.ReactElement<any, string | React.JSXElementConstructor<any>> | null) & {
displayName: string;
};
Title: (<TTag_4 extends React.ElementType<any> = "h2">(props: Props<TTag_4, TitleRenderPropArg, "1D45E01E-AF44-47C4-988A-19A94EBAF55C">, ref: Ref<HTMLHeadingElement>) => React.ReactElement<any, string | React.JSXElementConstructor<any>> | null) & {
displayName: string;
};
Description: (<TTag_5 extends React.ElementType<any> = "p">(props: Props<TTag_5, {}, "1D45E01E-AF44-47C4-988A-19A94EBAF55C">, ref: React.Ref<HTMLParagraphElement>) => React.ReactElement<any, string | React.JSXElementConstructor<any>> | null) & {
displayName: string;
};
};
export {};
File diff suppressed because one or more lines are too long
@@ -0,0 +1,51 @@
import React, { MutableRefObject, Ref } from 'react';
import { Props } from '../../types.js';
import { PropsForFeatures } from '../../utils/render.js';
interface DisclosureRenderPropArg {
open: boolean;
close(focusableElement?: HTMLElement | MutableRefObject<HTMLElement | null>): void;
}
interface ButtonRenderPropArg {
open: boolean;
}
declare type ButtonPropsWeControl = 'type' | 'aria-expanded' | 'aria-controls' | 'onKeyDown' | 'onClick';
interface PanelRenderPropArg {
open: boolean;
close: (focusableElement?: HTMLElement | MutableRefObject<HTMLElement | null>) => void;
}
declare let PanelRenderFeatures: number;
export declare let Disclosure: (<TTag extends React.ElementType<any> = React.ExoticComponent<{
children?: React.ReactNode;
}>>(props: Omit<import('../../types.js').PropsOf<TTag>, "as" | "children" | "refName" | "className"> & {
as?: TTag | undefined;
children?: React.ReactNode | ((bag: DisclosureRenderPropArg) => React.ReactElement<any, string | React.JSXElementConstructor<any>>);
refName?: string | undefined;
} & (true extends (import('../../types.js').PropsOf<TTag> extends never ? never : "className" extends keyof import('../../types.js').PropsOf<TTag> ? true : never) ? {
className?: import('../../types.js').PropsOf<TTag>["className"] | ((bag: DisclosureRenderPropArg) => string) | undefined;
} : {}) & {
defaultOpen?: boolean | undefined;
}, ref: React.Ref<TTag>) => JSX.Element) & {
displayName: string;
} & {
Button: (<TTag_1 extends React.ElementType<any> = "button">(props: Props<TTag_1, ButtonRenderPropArg, ButtonPropsWeControl>, ref: Ref<HTMLButtonElement>) => React.ReactElement<any, string | React.JSXElementConstructor<any>> | null) & {
displayName: string;
};
Panel: (<TTag_2 extends React.ElementType<any> = "div">(props: Omit<import('../../types.js').PropsOf<TTag_2>, "as" | "children" | "refName" | "className"> & {
as?: TTag_2 | undefined;
children?: React.ReactNode | ((bag: PanelRenderPropArg) => React.ReactElement<any, string | React.JSXElementConstructor<any>>);
refName?: string | undefined;
} & (true extends (import('../../types.js').PropsOf<TTag_2> extends never ? never : "className" extends keyof import('../../types.js').PropsOf<TTag_2> ? true : never) ? {
className?: import('../../types.js').PropsOf<TTag_2>["className"] | ((bag: PanelRenderPropArg) => string) | undefined;
} : {}) & (({
static?: undefined;
} & {
unmount?: boolean | undefined;
}) | ({
unmount?: undefined;
} & {
static?: boolean | undefined;
})), ref: Ref<HTMLDivElement>) => JSX.Element) & {
displayName: string;
};
};
export {};
@@ -0,0 +1 @@
import g,{Fragment as U,createContext as I,useContext as C,useEffect as w,useMemo as E,useReducer as j,useRef as R}from"react";import{match as L}from'../../utils/match.js';import{forwardRefWithAs as O,render as k,Features as F}from'../../utils/render.js';import{optionalRef as N,useSyncRefs as M}from'../../hooks/use-sync-refs.js';import{useId as _}from'../../hooks/use-id.js';import{Keys as m}from'../keyboard.js';import{isDisabledReactIssue7711 as G}from'../../utils/bugs.js';import{OpenClosedProvider as W,State as x,useOpenClosed as $}from'../../internal/open-closed.js';import{useResolveButtonType as q}from'../../hooks/use-resolve-button-type.js';import{getOwnerDocument as z}from'../../utils/owner.js';import{useEvent as b}from'../../hooks/use-event.js';var J=(l=>(l[l.Open=0]="Open",l[l.Closed=1]="Closed",l))(J||{}),Q=(t=>(t[t.ToggleDisclosure=0]="ToggleDisclosure",t[t.CloseDisclosure=1]="CloseDisclosure",t[t.SetButtonId=2]="SetButtonId",t[t.SetPanelId=3]="SetPanelId",t[t.LinkPanel=4]="LinkPanel",t[t.UnlinkPanel=5]="UnlinkPanel",t))(Q||{});let V={[0]:e=>({...e,disclosureState:L(e.disclosureState,{[0]:1,[1]:0})}),[1]:e=>e.disclosureState===1?e:{...e,disclosureState:1},[4](e){return e.linkedPanel===!0?e:{...e,linkedPanel:!0}},[5](e){return e.linkedPanel===!1?e:{...e,linkedPanel:!1}},[2](e,n){return e.buttonId===n.buttonId?e:{...e,buttonId:n.buttonId}},[3](e,n){return e.panelId===n.panelId?e:{...e,panelId:n.panelId}}},B=I(null);B.displayName="DisclosureContext";function v(e){let n=C(B);if(n===null){let l=new Error(`<${e} /> is missing a parent <Disclosure /> component.`);throw Error.captureStackTrace&&Error.captureStackTrace(l,v),l}return n}let h=I(null);h.displayName="DisclosureAPIContext";function K(e){let n=C(h);if(n===null){let l=new Error(`<${e} /> is missing a parent <Disclosure /> component.`);throw Error.captureStackTrace&&Error.captureStackTrace(l,K),l}return n}let H=I(null);H.displayName="DisclosurePanelContext";function X(){return C(H)}function Y(e,n){return L(n.type,V,e,n)}let Z=U,ee=O(function(n,l){let{defaultOpen:y=!1,...u}=n,T=R(null),t=M(l,N(a=>{T.current=a},n.as===void 0||n.as===U)),o=R(null),f=R(null),s=j(Y,{disclosureState:y?0:1,linkedPanel:!1,buttonRef:f,panelRef:o,buttonId:null,panelId:null}),[{disclosureState:i,buttonId:p},D]=s,d=b(a=>{D({type:1});let r=z(T);if(!r||!p)return;let c=(()=>a?a instanceof HTMLElement?a:a.current instanceof HTMLElement?a.current:r.getElementById(p):r.getElementById(p))();c==null||c.focus()}),P=E(()=>({close:d}),[d]),A=E(()=>({open:i===0,close:d}),[i,d]),S={ref:t};return g.createElement(B.Provider,{value:s},g.createElement(h.Provider,{value:P},g.createElement(W,{value:L(i,{[0]:x.Open,[1]:x.Closed})},k({ourProps:S,theirProps:u,slot:A,defaultTag:Z,name:"Disclosure"}))))}),te="button",ne=O(function(n,l){let y=_(),{id:u=`headlessui-disclosure-button-${y}`,...T}=n,[t,o]=v("Disclosure.Button"),f=X(),s=f===null?!1:f===t.panelId,i=R(null),p=M(i,l,s?null:t.buttonRef);w(()=>{if(!s)return o({type:2,buttonId:u}),()=>{o({type:2,buttonId:null})}},[u,o,s]);let D=b(r=>{var c;if(s){if(t.disclosureState===1)return;switch(r.key){case m.Space:case m.Enter:r.preventDefault(),r.stopPropagation(),o({type:0}),(c=t.buttonRef.current)==null||c.focus();break}}else switch(r.key){case m.Space:case m.Enter:r.preventDefault(),r.stopPropagation(),o({type:0});break}}),d=b(r=>{switch(r.key){case m.Space:r.preventDefault();break}}),P=b(r=>{var c;G(r.currentTarget)||n.disabled||(s?(o({type:0}),(c=t.buttonRef.current)==null||c.focus()):o({type:0}))}),A=E(()=>({open:t.disclosureState===0}),[t]),S=q(n,i),a=s?{ref:p,type:S,onKeyDown:D,onClick:P}:{ref:p,id:u,type:S,"aria-expanded":n.disabled?void 0:t.disclosureState===0,"aria-controls":t.linkedPanel?t.panelId:void 0,onKeyDown:D,onKeyUp:d,onClick:P};return k({ourProps:a,theirProps:T,slot:A,defaultTag:te,name:"Disclosure.Button"})}),le="div",re=F.RenderStrategy|F.Static,oe=O(function(n,l){let y=_(),{id:u=`headlessui-disclosure-panel-${y}`,...T}=n,[t,o]=v("Disclosure.Panel"),{close:f}=K("Disclosure.Panel"),s=M(l,t.panelRef,P=>{o({type:P?4:5})});w(()=>(o({type:3,panelId:u}),()=>{o({type:3,panelId:null})}),[u,o]);let i=$(),p=(()=>i!==null?i===x.Open:t.disclosureState===0)(),D=E(()=>({open:t.disclosureState===0,close:f}),[t,f]),d={ref:s,id:u};return g.createElement(H.Provider,{value:t.panelId},k({ourProps:d,theirProps:T,slot:D,defaultTag:le,features:re,visible:p,name:"Disclosure.Panel"}))}),Le=Object.assign(ee,{Button:ne,Panel:oe});export{Le as Disclosure};
@@ -0,0 +1,32 @@
import React, { MutableRefObject, Ref } from 'react';
import { Props } from '../../types.js';
declare enum Features {
/** No features enabled for the focus trap. */
None = 1,
/** Ensure that we move focus initially into the container. */
InitialFocus = 2,
/** Ensure that pressing `Tab` and `Shift+Tab` is trapped within the container. */
TabLock = 4,
/** Ensure that programmatically moving focus outside of the container is disallowed. */
FocusLock = 8,
/** Ensure that we restore the focus when unmounting the focus trap. */
RestoreFocus = 16,
/** Enable all features. */
All = 30
}
export declare let FocusTrap: (<TTag extends React.ElementType<any> = "div">(props: Omit<import('../../types.js').PropsOf<TTag>, "as" | "children" | "refName" | "className"> & {
as?: TTag | undefined;
children?: React.ReactNode | ((bag: {}) => React.ReactElement<any, string | React.JSXElementConstructor<any>>);
refName?: string | undefined;
} & (true extends (import('../../types.js').PropsOf<TTag> extends never ? never : "className" extends keyof import('../../types.js').PropsOf<TTag> ? true : never) ? {
className?: import('../../types.js').PropsOf<TTag>["className"] | ((bag: {}) => string) | undefined;
} : {}) & {
initialFocus?: React.MutableRefObject<HTMLElement | null> | undefined;
features?: Features | undefined;
containers?: React.MutableRefObject<Set<React.MutableRefObject<HTMLElement | null>>> | undefined;
}, ref: Ref<HTMLDivElement>) => JSX.Element) & {
displayName: string;
} & {
features: typeof Features;
};
export {};
@@ -0,0 +1 @@
import d,{useEffect as U,useRef as T}from"react";import{forwardRefWithAs as C,render as I}from'../../utils/render.js';import{useServerHandoffComplete as N}from'../../hooks/use-server-handoff-complete.js';import{useSyncRefs as x}from'../../hooks/use-sync-refs.js';import{Features as F,Hidden as v}from'../../internal/hidden.js';import{focusElement as f,focusIn as b,Focus as i,FocusResult as G}from'../../utils/focus-management.js';import{match as g}from'../../utils/match.js';import{useEvent as K}from'../../hooks/use-event.js';import{useTabDirection as V,Direction as M}from'../../hooks/use-tab-direction.js';import{useIsMounted as O}from'../../hooks/use-is-mounted.js';import{useOwnerDocument as W}from'../../hooks/use-owner.js';import{useEventListener as k}from'../../hooks/use-event-listener.js';import{microTask as y}from'../../utils/micro-task.js';import{useWatch as j}from'../../hooks/use-watch.js';import{useDisposables as q}from'../../hooks/use-disposables.js';let z="div";var A=(t=>(t[t.None=1]="None",t[t.InitialFocus=2]="InitialFocus",t[t.TabLock=4]="TabLock",t[t.FocusLock=8]="FocusLock",t[t.RestoreFocus=16]="RestoreFocus",t[t.All=30]="All",t))(A||{});let de=Object.assign(C(function(u,e){let l=T(null),a=x(l,e),{initialFocus:m,containers:t,features:n=30,...E}=u;N()||(n=1);let s=W(l);J({ownerDocument:s},Boolean(n&16));let S=Q({ownerDocument:s,container:l,initialFocus:m},Boolean(n&2));X({ownerDocument:s,container:l,containers:t,previousActiveElement:S},Boolean(n&8));let H=V(),R=K(o=>{let c=l.current;if(!c)return;(_=>_())(()=>{g(H.current,{[M.Forwards]:()=>b(c,i.First,{skipElements:[o.relatedTarget]}),[M.Backwards]:()=>b(c,i.Last,{skipElements:[o.relatedTarget]})})})}),B=q(),L=T(!1),P={ref:a,onKeyDown(o){o.key=="Tab"&&(L.current=!0,B.requestAnimationFrame(()=>{L.current=!1}))},onBlur(o){let c=new Set(t==null?void 0:t.current);c.add(l);let p=o.relatedTarget;!p||p.dataset.headlessuiFocusGuard!=="true"&&(h(c,p)||(L.current?b(l.current,g(H.current,{[M.Forwards]:()=>i.Next,[M.Backwards]:()=>i.Previous})|i.WrapAround,{relativeTo:o.target}):o.target instanceof HTMLElement&&f(o.target)))}};return d.createElement(d.Fragment,null,Boolean(n&4)&&d.createElement(v,{as:"button",type:"button","data-headlessui-focus-guard":!0,onFocus:R,features:F.Focusable}),I({ourProps:P,theirProps:E,defaultTag:z,name:"FocusTrap"}),Boolean(n&4)&&d.createElement(v,{as:"button",type:"button","data-headlessui-focus-guard":!0,onFocus:R,features:F.Focusable}))}),{features:A});function J({ownerDocument:r},u){let e=T(null);k(r==null?void 0:r.defaultView,"focusout",a=>{!u||e.current||(e.current=a.target)},!0),j(()=>{u||((r==null?void 0:r.activeElement)===(r==null?void 0:r.body)&&f(e.current),e.current=null)},[u]);let l=T(!1);U(()=>(l.current=!1,()=>{l.current=!0,y(()=>{!l.current||(f(e.current),e.current=null)})}),[])}function Q({ownerDocument:r,container:u,initialFocus:e},l){let a=T(null),m=O();return j(()=>{if(!l)return;let t=u.current;!t||y(()=>{if(!m.current)return;let n=r==null?void 0:r.activeElement;if(e!=null&&e.current){if((e==null?void 0:e.current)===n){a.current=n;return}}else if(t.contains(n)){a.current=n;return}e!=null&&e.current?f(e.current):b(t,i.First)===G.Error&&console.warn("There are no focusable elements inside the <FocusTrap />"),a.current=r==null?void 0:r.activeElement})},[l]),a}function X({ownerDocument:r,container:u,containers:e,previousActiveElement:l},a){let m=O();k(r==null?void 0:r.defaultView,"focus",t=>{if(!a||!m.current)return;let n=new Set(e==null?void 0:e.current);n.add(u);let E=l.current;if(!E)return;let s=t.target;s&&s instanceof HTMLElement?h(n,s)?(l.current=s,f(s)):(t.preventDefault(),t.stopPropagation(),f(E)):f(l.current)},!0)}function h(r,u){var e;for(let l of r)if((e=l.current)!=null&&e.contains(u))return!0;return!1}export{de as FocusTrap};
+16
View File
@@ -0,0 +1,16 @@
export declare enum Keys {
Space = " ",
Enter = "Enter",
Escape = "Escape",
Backspace = "Backspace",
Delete = "Delete",
ArrowLeft = "ArrowLeft",
ArrowUp = "ArrowUp",
ArrowRight = "ArrowRight",
ArrowDown = "ArrowDown",
Home = "Home",
End = "End",
PageUp = "PageUp",
PageDown = "PageDown",
Tab = "Tab"
}
+1
View File
@@ -0,0 +1 @@
var o=(r=>(r.Space=" ",r.Enter="Enter",r.Escape="Escape",r.Backspace="Backspace",r.Delete="Delete",r.ArrowLeft="ArrowLeft",r.ArrowUp="ArrowUp",r.ArrowRight="ArrowRight",r.ArrowDown="ArrowDown",r.Home="Home",r.End="End",r.PageUp="PageUp",r.PageDown="PageDown",r.Tab="Tab",r))(o||{});export{o as Keys};
+23
View File
@@ -0,0 +1,23 @@
import React, { ReactNode, Ref } from 'react';
import { Props } from '../../types.js';
interface SharedData {
slot?: {};
name?: string;
props?: {};
}
interface LabelProviderProps extends SharedData {
children: ReactNode;
}
export declare function useLabels(): [string | undefined, (props: LabelProviderProps) => JSX.Element];
export declare let Label: (<TTag extends React.ElementType<any> = "label">(props: Omit<import('../../types.js').PropsOf<TTag>, "as" | "children" | "refName" | "className"> & {
as?: TTag | undefined;
children?: React.ReactNode | ((bag: {}) => React.ReactElement<any, string | React.JSXElementConstructor<any>>);
refName?: string | undefined;
} & (true extends (import('../../types.js').PropsOf<TTag> extends never ? never : "className" extends keyof import('../../types.js').PropsOf<TTag> ? true : never) ? {
className?: import('../../types.js').PropsOf<TTag>["className"] | ((bag: {}) => string) | undefined;
} : {}) & {
passive?: boolean | undefined;
}, ref: Ref<HTMLLabelElement>) => React.ReactElement<any, string | React.JSXElementConstructor<any>> | null) & {
displayName: string;
};
export {};
+1
View File
@@ -0,0 +1 @@
import p,{createContext as m,useContext as L,useMemo as f,useState as b}from"react";import{useId as g}from'../../hooks/use-id.js';import{forwardRefWithAs as x,render as T}from'../../utils/render.js';import{useIsoMorphicEffect as E}from'../../hooks/use-iso-morphic-effect.js';import{useSyncRefs as P}from'../../hooks/use-sync-refs.js';import{useEvent as v}from'../../hooks/use-event.js';let u=m(null);function c(){let n=L(u);if(n===null){let r=new Error("You used a <Label /> component, but it is not inside a relevant parent.");throw Error.captureStackTrace&&Error.captureStackTrace(r,c),r}return n}function M(){let[n,r]=b([]);return[n.length>0?n.join(" "):void 0,f(()=>function(e){let o=v(l=>(r(t=>[...t,l]),()=>r(t=>{let i=t.slice(),a=i.indexOf(l);return a!==-1&&i.splice(a,1),i}))),s=f(()=>({register:o,slot:e.slot,name:e.name,props:e.props}),[o,e.slot,e.name,e.props]);return p.createElement(u.Provider,{value:s},e.children)},[r])]}let h="label",F=x(function(r,d){let e=g(),{id:o=`headlessui-label-${e}`,passive:s=!1,...l}=r,t=c(),i=P(d);E(()=>t.register(o),[o,t.register]);let a={ref:i,...t.props,id:o};return s&&("onClick"in a&&delete a.onClick,"onClick"in l&&delete l.onClick),T({ourProps:a,theirProps:l,slot:t.slot||{},defaultTag:h,name:t.name||"Label"})});export{F as Label,M as useLabels};
+69
View File
@@ -0,0 +1,69 @@
import React, { Ref } from 'react';
import { Props } from '../../types.js';
import { PropsForFeatures } from '../../utils/render.js';
interface ListboxRenderPropArg<T> {
open: boolean;
disabled: boolean;
value: T;
}
interface ButtonRenderPropArg {
open: boolean;
disabled: boolean;
value: any;
}
declare type ButtonPropsWeControl = 'type' | 'aria-haspopup' | 'aria-controls' | 'aria-expanded' | 'aria-labelledby' | 'disabled' | 'onKeyDown' | 'onClick';
interface LabelRenderPropArg {
open: boolean;
disabled: boolean;
}
declare type LabelPropsWeControl = 'ref' | 'onClick';
interface OptionsRenderPropArg {
open: boolean;
}
declare type OptionsPropsWeControl = 'aria-activedescendant' | 'aria-labelledby' | 'aria-orientation' | 'onKeyDown' | 'role' | 'tabIndex';
declare let OptionsRenderFeatures: number;
interface OptionRenderPropArg {
active: boolean;
selected: boolean;
disabled: boolean;
}
declare type ListboxOptionPropsWeControl = 'role' | 'tabIndex' | 'aria-disabled' | 'aria-selected' | 'onPointerLeave' | 'onMouseLeave' | 'onPointerMove' | 'onMouseMove' | 'onFocus';
export declare let Listbox: (<TTag extends React.ElementType<any> = React.ExoticComponent<{
children?: React.ReactNode;
}>, TType = string, TActualType = TType extends (infer U)[] ? U : TType>(props: Props<TTag, ListboxRenderPropArg<TType>, "value" | "name" | "disabled" | "defaultValue" | "multiple" | "onChange" | "by" | "horizontal"> & {
value?: TType | undefined;
defaultValue?: TType | undefined;
onChange?(value: TType): void;
by?: (keyof TActualType & string) | ((a: TActualType, z: TActualType) => boolean) | undefined;
disabled?: boolean | undefined;
horizontal?: boolean | undefined;
name?: string | undefined;
multiple?: boolean | undefined;
}, ref: React.Ref<TTag>) => JSX.Element) & {
displayName: string;
} & {
Button: (<TTag_1 extends React.ElementType<any> = "button">(props: Props<TTag_1, ButtonRenderPropArg, ButtonPropsWeControl>, ref: Ref<HTMLButtonElement>) => React.ReactElement<any, string | React.JSXElementConstructor<any>> | null) & {
displayName: string;
};
Label: (<TTag_2 extends React.ElementType<any> = "label">(props: Props<TTag_2, LabelRenderPropArg, LabelPropsWeControl>, ref: Ref<HTMLElement>) => React.ReactElement<any, string | React.JSXElementConstructor<any>> | null) & {
displayName: string;
};
Options: (<TTag_3 extends React.ElementType<any> = "ul">(props: Props<TTag_3, OptionsRenderPropArg, OptionsPropsWeControl> & (({
static?: undefined;
} & {
unmount?: boolean | undefined;
}) | ({
unmount?: undefined;
} & {
static?: boolean | undefined;
})), ref: Ref<HTMLElement>) => React.ReactElement<any, string | React.JSXElementConstructor<any>> | null) & {
displayName: string;
};
Option: (<TTag_4 extends React.ElementType<any> = "li", TType_1 = unknown>(props: Props<TTag_4, OptionRenderPropArg, "value" | ListboxOptionPropsWeControl> & {
disabled?: boolean | undefined;
value: TType_1;
}, ref: Ref<HTMLElement>) => React.ReactElement<any, string | React.JSXElementConstructor<any>> | null) & {
displayName: string;
};
};
export {};
File diff suppressed because one or more lines are too long
+50
View File
@@ -0,0 +1,50 @@
import React, { Ref } from 'react';
import { Props } from '../../types.js';
import { PropsForFeatures } from '../../utils/render.js';
interface MenuRenderPropArg {
open: boolean;
close: () => void;
}
interface ButtonRenderPropArg {
open: boolean;
}
declare type ButtonPropsWeControl = 'type' | 'aria-haspopup' | 'aria-controls' | 'aria-expanded' | 'onKeyDown' | 'onClick';
interface ItemsRenderPropArg {
open: boolean;
}
declare type ItemsPropsWeControl = 'aria-activedescendant' | 'aria-labelledby' | 'onKeyDown' | 'role' | 'tabIndex';
declare let ItemsRenderFeatures: number;
interface ItemRenderPropArg {
active: boolean;
disabled: boolean;
close: () => void;
}
declare type MenuItemPropsWeControl = 'role' | 'tabIndex' | 'aria-disabled' | 'onPointerLeave' | 'onPointerMove' | 'onMouseLeave' | 'onMouseMove' | 'onFocus';
export declare let Menu: (<TTag extends React.ElementType<any> = React.ExoticComponent<{
children?: React.ReactNode;
}>>(props: Props<TTag, MenuRenderPropArg, "1D45E01E-AF44-47C4-988A-19A94EBAF55C">, ref: Ref<HTMLElement>) => JSX.Element) & {
displayName: string;
} & {
Button: (<TTag_1 extends React.ElementType<any> = "button">(props: Props<TTag_1, ButtonRenderPropArg, ButtonPropsWeControl>, ref: Ref<HTMLButtonElement>) => React.ReactElement<any, string | React.JSXElementConstructor<any>> | null) & {
displayName: string;
};
Items: (<TTag_2 extends React.ElementType<any> = "div">(props: Props<TTag_2, ItemsRenderPropArg, ItemsPropsWeControl> & (({
static?: undefined;
} & {
unmount?: boolean | undefined;
}) | ({
unmount?: undefined;
} & {
static?: boolean | undefined;
})), ref: Ref<HTMLDivElement>) => React.ReactElement<any, string | React.JSXElementConstructor<any>> | null) & {
displayName: string;
};
Item: (<TTag_3 extends React.ElementType<any> = React.ExoticComponent<{
children?: React.ReactNode;
}>>(props: Props<TTag_3, ItemRenderPropArg, MenuItemPropsWeControl> & {
disabled?: boolean | undefined;
}, ref: Ref<HTMLElement>) => React.ReactElement<any, string | React.JSXElementConstructor<any>> | null) & {
displayName: string;
};
};
export {};
File diff suppressed because one or more lines are too long
+66
View File
@@ -0,0 +1,66 @@
import React, { MutableRefObject, Ref, MouseEventHandler } from 'react';
import { Props } from '../../types.js';
import { PropsForFeatures } from '../../utils/render.js';
declare type MouseEvent<T> = Parameters<MouseEventHandler<T>>[0];
interface PopoverRenderPropArg {
open: boolean;
close(focusableElement?: HTMLElement | MutableRefObject<HTMLElement | null> | MouseEvent<HTMLElement>): void;
}
interface ButtonRenderPropArg {
open: boolean;
}
declare type ButtonPropsWeControl = 'type' | 'aria-expanded' | 'aria-controls' | 'onKeyDown' | 'onClick';
interface OverlayRenderPropArg {
open: boolean;
}
declare type OverlayPropsWeControl = 'aria-hidden' | 'onClick';
declare let OverlayRenderFeatures: number;
interface PanelRenderPropArg {
open: boolean;
close: (focusableElement?: HTMLElement | MutableRefObject<HTMLElement | null>) => void;
}
declare type PanelPropsWeControl = 'onKeyDown';
declare let PanelRenderFeatures: number;
interface GroupRenderPropArg {
}
export declare let Popover: (<TTag extends React.ElementType<any> = "div">(props: Props<TTag, PopoverRenderPropArg, "1D45E01E-AF44-47C4-988A-19A94EBAF55C">, ref: Ref<HTMLElement>) => JSX.Element) & {
displayName: string;
} & {
Button: (<TTag_1 extends React.ElementType<any> = "button">(props: Props<TTag_1, ButtonRenderPropArg, ButtonPropsWeControl>, ref: Ref<HTMLButtonElement>) => JSX.Element) & {
displayName: string;
};
Overlay: (<TTag_2 extends React.ElementType<any> = "div">(props: Props<TTag_2, OverlayRenderPropArg, OverlayPropsWeControl> & (({
static?: undefined;
} & {
unmount?: boolean | undefined;
}) | ({
unmount?: undefined;
} & {
static?: boolean | undefined;
})), ref: Ref<HTMLDivElement>) => React.ReactElement<any, string | React.JSXElementConstructor<any>> | null) & {
displayName: string;
};
Panel: (<TTag_3 extends React.ElementType<any> = "div">(props: Omit<import('../../types.js').PropsOf<TTag_3>, ("as" | "children" | "refName" | "className") | "onKeyDown"> & {
as?: TTag_3 | undefined;
children?: React.ReactNode | ((bag: PanelRenderPropArg) => React.ReactElement<any, string | React.JSXElementConstructor<any>>);
refName?: string | undefined;
} & (true extends (import('../../types.js').PropsOf<TTag_3> extends never ? never : "className" extends keyof import('../../types.js').PropsOf<TTag_3> ? true : never) ? {
className?: import('../../types.js').PropsOf<TTag_3>["className"] | ((bag: PanelRenderPropArg) => string) | undefined;
} : {}) & (({
static?: undefined;
} & {
unmount?: boolean | undefined;
}) | ({
unmount?: undefined;
} & {
static?: boolean | undefined;
})) & {
focus?: boolean | undefined;
}, ref: Ref<HTMLDivElement>) => JSX.Element) & {
displayName: string;
};
Group: (<TTag_4 extends React.ElementType<any> = "div">(props: Props<TTag_4, GroupRenderPropArg, "1D45E01E-AF44-47C4-988A-19A94EBAF55C">, ref: Ref<HTMLElement>) => JSX.Element) & {
displayName: string;
};
};
export {};
File diff suppressed because one or more lines are too long
+26
View File
@@ -0,0 +1,26 @@
import React, { MutableRefObject, Ref } from 'react';
import { Props } from '../../types.js';
interface PortalRenderPropArg {
}
interface GroupRenderPropArg {
}
export declare let Portal: (<TTag extends React.ElementType<any> = React.ExoticComponent<{
children?: React.ReactNode;
}>>(props: Props<TTag, PortalRenderPropArg, "1D45E01E-AF44-47C4-988A-19A94EBAF55C">, ref: Ref<HTMLElement>) => React.ReactPortal | null) & {
displayName: string;
} & {
Group: (<TTag_1 extends React.ElementType<any> = React.ExoticComponent<{
children?: React.ReactNode;
}>>(props: Omit<import('../../types.js').PropsOf<TTag_1>, "as" | "children" | "refName" | "className"> & {
as?: TTag_1 | undefined;
children?: React.ReactNode | ((bag: GroupRenderPropArg) => React.ReactElement<any, string | React.JSXElementConstructor<any>>);
refName?: string | undefined;
} & (true extends (import('../../types.js').PropsOf<TTag_1> extends never ? never : "className" extends keyof import('../../types.js').PropsOf<TTag_1> ? true : never) ? {
className?: import('../../types.js').PropsOf<TTag_1>["className"] | ((bag: GroupRenderPropArg) => string) | undefined;
} : {}) & {
target: MutableRefObject<HTMLElement | null>;
}, ref: Ref<HTMLElement>) => JSX.Element) & {
displayName: string;
};
};
export {};
+1
View File
@@ -0,0 +1 @@
import h,{Fragment as s,createContext as L,useContext as y,useEffect as m,useRef as d,useState as T}from"react";import{createPortal as G}from"react-dom";import{forwardRefWithAs as P,render as R}from'../../utils/render.js';import{useIsoMorphicEffect as M}from'../../hooks/use-iso-morphic-effect.js';import{usePortalRoot as v}from'../../internal/portal-force-root.js';import{useServerHandoffComplete as C}from'../../hooks/use-server-handoff-complete.js';import{optionalRef as O,useSyncRefs as g}from'../../hooks/use-sync-refs.js';import{useOwnerDocument as c}from'../../hooks/use-owner.js';import{microTask as H}from'../../utils/micro-task.js';import{isServer as E}from'../../utils/ssr.js';function x(i){let u=v(),o=y(A),e=c(i),[r,f]=T(()=>{if(!u&&o!==null||E)return null;let n=e==null?void 0:e.getElementById("headlessui-portal-root");if(n)return n;if(e===null)return null;let t=e.createElement("div");return t.setAttribute("id","headlessui-portal-root"),e.body.appendChild(t)});return m(()=>{r!==null&&(e!=null&&e.body.contains(r)||e==null||e.body.appendChild(r))},[r,e]),m(()=>{u||o!==null&&f(o.current)},[o,f,u]),r}let _=s,U=P(function(u,o){let e=u,r=d(null),f=g(O(a=>{r.current=a}),o),n=c(r),t=x(r),[l]=T(()=>{var a;return E?null:(a=n==null?void 0:n.createElement("div"))!=null?a:null}),b=C(),p=d(!1);return M(()=>{if(p.current=!1,!(!t||!l))return t.contains(l)||(l.setAttribute("data-headlessui-portal",""),t.appendChild(l)),()=>{p.current=!0,H(()=>{var a;!p.current||!t||!l||(t.removeChild(l),t.childNodes.length<=0&&((a=t.parentElement)==null||a.removeChild(t)))})}},[t,l]),b?!t||!l?null:G(R({ourProps:{ref:f},theirProps:e,defaultTag:_,name:"Portal"}),l):null}),j=s,A=L(null),F=P(function(u,o){let{target:e,...r}=u,n={ref:g(o)};return h.createElement(A.Provider,{value:e},R({ourProps:n,theirProps:r,defaultTag:j,name:"Popover.Group"}))}),$=Object.assign(U,{Group:F});export{$ as Portal};
@@ -0,0 +1,44 @@
import React, { Ref } from 'react';
import { Props } from '../../types.js';
interface RadioGroupRenderPropArg<TType> {
value: TType;
}
declare type RadioGroupPropsWeControl = 'role' | 'aria-labelledby' | 'aria-describedby';
interface OptionRenderPropArg {
checked: boolean;
active: boolean;
disabled: boolean;
}
declare type RadioPropsWeControl = 'aria-checked' | 'onBlur' | 'onClick' | 'onFocus' | 'ref' | 'role' | 'tabIndex';
export declare let RadioGroup: (<TTag extends React.ElementType<any> = "div", TType = string>(props: Props<TTag, RadioGroupRenderPropArg<TType>, "value" | "name" | "disabled" | "defaultValue" | "onChange" | "by" | RadioGroupPropsWeControl> & {
value?: TType | undefined;
defaultValue?: TType | undefined;
onChange?(value: TType): void;
by?: (keyof TType & string) | ((a: TType, z: TType) => boolean) | undefined;
disabled?: boolean | undefined;
name?: string | undefined;
}, ref: Ref<HTMLElement>) => JSX.Element) & {
displayName: string;
} & {
Option: (<TTag_1 extends React.ElementType<any> = "div", TType_1 = unknown>(props: Props<TTag_1, OptionRenderPropArg, "value" | "disabled" | RadioPropsWeControl> & {
value: TType_1;
disabled?: boolean | undefined;
}, ref: Ref<HTMLElement>) => JSX.Element) & {
displayName: string;
};
Label: (<TTag_2 extends React.ElementType<any> = "label">(props: Omit<import('../../types.js').PropsOf<TTag_2>, "as" | "children" | "refName" | "className"> & {
as?: TTag_2 | undefined;
children?: React.ReactNode | ((bag: {}) => React.ReactElement<any, string | React.JSXElementConstructor<any>>);
refName?: string | undefined;
} & (true extends (import('../../types.js').PropsOf<TTag_2> extends never ? never : "className" extends keyof import('../../types.js').PropsOf<TTag_2> ? true : never) ? {
className?: import('../../types.js').PropsOf<TTag_2>["className"] | ((bag: {}) => string) | undefined;
} : {}) & {
passive?: boolean | undefined;
}, ref: React.Ref<HTMLLabelElement>) => React.ReactElement<any, string | React.JSXElementConstructor<any>> | null) & {
displayName: string;
};
Description: (<TTag_3 extends React.ElementType<any> = "p">(props: Props<TTag_3, {}, "1D45E01E-AF44-47C4-988A-19A94EBAF55C">, ref: React.Ref<HTMLParagraphElement>) => React.ReactElement<any, string | React.JSXElementConstructor<any>> | null) & {
displayName: string;
};
};
export {};
File diff suppressed because one or more lines are too long
+36
View File
@@ -0,0 +1,36 @@
import React, { ElementType, Ref } from 'react';
import { Props } from '../../types.js';
declare let DEFAULT_GROUP_TAG: React.ExoticComponent<{
children?: React.ReactNode;
}>;
declare function Group<TTag extends ElementType = typeof DEFAULT_GROUP_TAG>(props: Props<TTag>): JSX.Element;
interface SwitchRenderPropArg {
checked: boolean;
}
declare type SwitchPropsWeControl = 'role' | 'tabIndex' | 'aria-checked' | 'aria-labelledby' | 'aria-describedby' | 'onClick' | 'onKeyUp' | 'onKeyPress';
export declare let Switch: (<TTag extends React.ElementType<any> = "button">(props: Props<TTag, SwitchRenderPropArg, "value" | "name" | "onChange" | "checked" | "defaultChecked" | SwitchPropsWeControl> & {
checked?: boolean | undefined;
defaultChecked?: boolean | undefined;
onChange?(checked: boolean): void;
name?: string | undefined;
value?: string | undefined;
}, ref: Ref<HTMLElement>) => JSX.Element) & {
displayName: string;
} & {
Group: typeof Group;
Label: (<TTag_1 extends React.ElementType<any> = "label">(props: Omit<import('../../types.js').PropsOf<TTag_1>, "as" | "children" | "refName" | "className"> & {
as?: TTag_1 | undefined;
children?: React.ReactNode | ((bag: {}) => React.ReactElement<any, string | React.JSXElementConstructor<any>>);
refName?: string | undefined;
} & (true extends (import('../../types.js').PropsOf<TTag_1> extends never ? never : "className" extends keyof import('../../types.js').PropsOf<TTag_1> ? true : never) ? {
className?: import('../../types.js').PropsOf<TTag_1>["className"] | ((bag: {}) => string) | undefined;
} : {}) & {
passive?: boolean | undefined;
}, ref: React.Ref<HTMLLabelElement>) => React.ReactElement<any, string | React.JSXElementConstructor<any>> | null) & {
displayName: string;
};
Description: (<TTag_2 extends React.ElementType<any> = "p">(props: Props<TTag_2, {}, "1D45E01E-AF44-47C4-988A-19A94EBAF55C">, ref: React.Ref<HTMLParagraphElement>) => React.ReactElement<any, string | React.JSXElementConstructor<any>> | null) & {
displayName: string;
};
};
export {};
+1
View File
@@ -0,0 +1 @@
import l,{Fragment as H,createContext as G,useContext as K,useMemo as S,useRef as M,useState as x,useEffect as U}from"react";import{forwardRefWithAs as _,render as w,compact as F}from'../../utils/render.js';import{useId as I}from'../../hooks/use-id.js';import{Keys as P}from'../keyboard.js';import{isDisabledReactIssue7711 as B}from'../../utils/bugs.js';import{Label as O,useLabels as W}from'../label/label.js';import{Description as j,useDescriptions as N}from'../description/description.js';import{useResolveButtonType as $}from'../../hooks/use-resolve-button-type.js';import{useSyncRefs as q}from'../../hooks/use-sync-refs.js';import{Hidden as z,Features as J}from'../../internal/hidden.js';import{attemptSubmit as Q}from'../../utils/form.js';import{useEvent as f}from'../../hooks/use-event.js';import{useControllable as V}from'../../hooks/use-controllable.js';import{useDisposables as X}from'../../hooks/use-disposables.js';let b=G(null);b.displayName="GroupContext";let Y=H;function Z(y){let[t,a]=x(null),[s,m]=W(),[c,o]=N(),p=S(()=>({switch:t,setSwitch:a,labelledby:s,describedby:c}),[t,a,s,c]),d={},h=y;return l.createElement(o,{name:"Switch.Description"},l.createElement(m,{name:"Switch.Label",props:{onClick(){!t||(t.click(),t.focus({preventScroll:!0}))}}},l.createElement(b.Provider,{value:p},w({ourProps:d,theirProps:h,defaultTag:Y,name:"Switch.Group"}))))}let ee="button",te=_(function(t,a){let s=I(),{id:m=`headlessui-switch-${s}`,checked:c,defaultChecked:o=!1,onChange:p,name:d,value:h,...v}=t,r=K(b),u=M(null),k=q(u,a,r===null?null:r.setSwitch),[n,i]=V(c,p,o),T=f(()=>i==null?void 0:i(!n)),g=f(e=>{if(B(e.currentTarget))return e.preventDefault();e.preventDefault(),T()}),C=f(e=>{e.key===P.Space?(e.preventDefault(),T()):e.key===P.Enter&&Q(e.currentTarget)}),D=f(e=>e.preventDefault()),L=S(()=>({checked:n}),[n]),R={id:m,ref:k,role:"switch",type:$(t,u),tabIndex:0,"aria-checked":n,"aria-labelledby":r==null?void 0:r.labelledby,"aria-describedby":r==null?void 0:r.describedby,onClick:g,onKeyUp:C,onKeyPress:D},A=X();return U(()=>{var E;let e=(E=u.current)==null?void 0:E.closest("form");!e||o!==void 0&&A.addEventListener(e,"reset",()=>{i(o)})},[u,i]),l.createElement(l.Fragment,null,d!=null&&n&&l.createElement(z,{features:J.Hidden,...F({as:"input",type:"checkbox",hidden:!0,readOnly:!0,checked:n,name:d,value:h})}),w({ourProps:R,theirProps:v,slot:L,defaultTag:ee,name:"Switch"}))}),Pe=Object.assign(te,{Group:Z,Label:O,Description:j});export{Pe as Switch};
+61
View File
@@ -0,0 +1,61 @@
import React, { Ref } from 'react';
import { Props } from '../../types.js';
import { PropsForFeatures } from '../../utils/render.js';
interface TabsRenderPropArg {
selectedIndex: number;
}
interface ListRenderPropArg {
selectedIndex: number;
}
declare type ListPropsWeControl = 'role' | 'aria-orientation';
interface TabRenderPropArg {
selected: boolean;
}
declare type TabPropsWeControl = 'role' | 'type' | 'aria-controls' | 'aria-selected' | 'tabIndex';
interface PanelsRenderPropArg {
selectedIndex: number;
}
interface PanelRenderPropArg {
selected: boolean;
}
declare type PanelPropsWeControl = 'role' | 'aria-labelledby' | 'tabIndex';
declare let PanelRenderFeatures: number;
export declare let Tab: (<TTag extends React.ElementType<any> = "button">(props: Props<TTag, TabRenderPropArg, TabPropsWeControl>, ref: Ref<HTMLElement>) => React.ReactElement<any, string | React.JSXElementConstructor<any>> | null) & {
displayName: string;
} & {
Group: (<TTag_1 extends React.ElementType<any> = React.ExoticComponent<{
children?: React.ReactNode;
}>>(props: Omit<import('../../types.js').PropsOf<TTag_1>, "as" | "children" | "refName" | "className"> & {
as?: TTag_1 | undefined;
children?: React.ReactNode | ((bag: TabsRenderPropArg) => React.ReactElement<any, string | React.JSXElementConstructor<any>>);
refName?: string | undefined;
} & (true extends (import('../../types.js').PropsOf<TTag_1> extends never ? never : "className" extends keyof import('../../types.js').PropsOf<TTag_1> ? true : never) ? {
className?: import('../../types.js').PropsOf<TTag_1>["className"] | ((bag: TabsRenderPropArg) => string) | undefined;
} : {}) & {
defaultIndex?: number | undefined;
onChange?: ((index: number) => void) | undefined;
selectedIndex?: number | undefined;
vertical?: boolean | undefined;
manual?: boolean | undefined;
}, ref: Ref<HTMLElement>) => JSX.Element) & {
displayName: string;
};
List: (<TTag_2 extends React.ElementType<any> = "div">(props: Props<TTag_2, ListRenderPropArg, ListPropsWeControl> & {}, ref: Ref<HTMLElement>) => React.ReactElement<any, string | React.JSXElementConstructor<any>> | null) & {
displayName: string;
};
Panels: (<TTag_3 extends React.ElementType<any> = "div">(props: Props<TTag_3, PanelsRenderPropArg, "1D45E01E-AF44-47C4-988A-19A94EBAF55C">, ref: Ref<HTMLElement>) => React.ReactElement<any, string | React.JSXElementConstructor<any>> | null) & {
displayName: string;
};
Panel: (<TTag_4 extends React.ElementType<any> = "div">(props: Props<TTag_4, PanelRenderPropArg, PanelPropsWeControl> & (({
static?: undefined;
} & {
unmount?: boolean | undefined;
}) | ({
unmount?: undefined;
} & {
static?: boolean | undefined;
})), ref: Ref<HTMLElement>) => JSX.Element | null) & {
displayName: string;
};
};
export {};
File diff suppressed because one or more lines are too long
@@ -0,0 +1,40 @@
import React, { MutableRefObject, Ref } from 'react';
import { Props, ReactTag } from '../../types.js';
import { Features, PropsForFeatures } from '../../utils/render.js';
export interface TransitionClasses {
enter?: string;
enterFrom?: string;
enterTo?: string;
entered?: string;
leave?: string;
leaveFrom?: string;
leaveTo?: string;
}
export interface TransitionEvents {
beforeEnter?: () => void;
afterEnter?: () => void;
beforeLeave?: () => void;
afterLeave?: () => void;
}
declare type TransitionChildProps<TTag extends ReactTag> = Props<TTag, TransitionChildRenderPropArg> & PropsForFeatures<typeof TransitionChildRenderFeatures> & TransitionClasses & TransitionEvents & {
appear?: boolean;
};
declare type TransitionChildRenderPropArg = MutableRefObject<HTMLDivElement>;
declare let TransitionChildRenderFeatures: Features;
export declare let Transition: (<TTag extends React.ElementType<any> = "div">(props: TransitionChildProps<TTag> & {
show?: boolean | undefined;
appear?: boolean | undefined;
}, ref: Ref<HTMLElement>) => JSX.Element) & {
displayName: string;
} & {
Child: (<TTag_1 extends React.ElementType<any> = "div">(props: TransitionChildProps<TTag_1>, ref: MutableRefObject<HTMLElement>) => JSX.Element) & {
displayName: string;
};
Root: (<TTag extends React.ElementType<any> = "div">(props: TransitionChildProps<TTag> & {
show?: boolean | undefined;
appear?: boolean | undefined;
}, ref: Ref<HTMLElement>) => JSX.Element) & {
displayName: string;
};
};
export {};
File diff suppressed because one or more lines are too long
@@ -0,0 +1,9 @@
export declare function transition(node: HTMLElement, classes: {
enter: string[];
enterFrom: string[];
enterTo: string[];
leave: string[];
leaveFrom: string[];
leaveTo: string[];
entered: string[];
}, show: boolean, done?: () => void): () => void;
@@ -0,0 +1 @@
import{once as T}from'../../../utils/once.js';import{disposables as s}from'../../../utils/disposables.js';import{match as p}from'../../../utils/match.js';function v(t,...e){t&&e.length>0&&t.classList.add(...e)}function f(t,...e){t&&e.length>0&&t.classList.remove(...e)}function F(t,e){let n=s();if(!t)return n.dispose;let{transitionDuration:a,transitionDelay:i}=getComputedStyle(t),[m,d]=[a,i].map(o=>{let[r=0]=o.split(",").filter(Boolean).map(l=>l.includes("ms")?parseFloat(l):parseFloat(l)*1e3).sort((l,g)=>g-l);return r});if(m+d!==0){let o=n.addEventListener(t,"transitionend",r=>{r.target===r.currentTarget&&(e(),o())})}else e();return n.add(()=>e()),n.dispose}function M(t,e,n,a){let i=n?"enter":"leave",m=s(),d=a!==void 0?T(a):()=>{};i==="enter"&&(t.removeAttribute("hidden"),t.style.display="");let u=p(i,{enter:()=>e.enter,leave:()=>e.leave}),o=p(i,{enter:()=>e.enterTo,leave:()=>e.leaveTo}),r=p(i,{enter:()=>e.enterFrom,leave:()=>e.leaveFrom});return f(t,...e.enter,...e.enterTo,...e.enterFrom,...e.leave,...e.leaveFrom,...e.leaveTo,...e.entered),v(t,...u,...r),m.nextFrame(()=>{f(t,...r),v(t,...o),F(t,()=>(f(t,...u),v(t,...e.entered),d()))}),m.dispose}export{M as transition};