@inertiaui/modal-react 1.0.0-beta-5 → 2.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/dist/CloseButton.d.ts +5 -0
  2. package/dist/Deferred.d.ts +11 -0
  3. package/dist/HeadlessModal.d.ts +64 -0
  4. package/dist/Modal.d.ts +48 -0
  5. package/dist/ModalContent.d.ts +24 -0
  6. package/dist/ModalLink.d.ts +29 -0
  7. package/dist/ModalRenderer.d.ts +4 -0
  8. package/dist/ModalRoot.d.ts +22 -0
  9. package/dist/SlideoverContent.d.ts +24 -0
  10. package/dist/WhenVisible.d.ts +16 -0
  11. package/dist/config.d.ts +21 -0
  12. package/dist/constants.d.ts +7 -0
  13. package/dist/helpers.d.ts +3 -0
  14. package/dist/inertiaui-modal.d.ts +2 -0
  15. package/dist/inertiaui-modal.js +1680 -2167
  16. package/dist/inertiaui-modal.js.map +1 -0
  17. package/dist/inertiaui-modal.umd.cjs +1854 -21
  18. package/dist/inertiaui-modal.umd.cjs.map +1 -0
  19. package/dist/inertiauiModal.d.ts +21 -0
  20. package/dist/types.d.ts +111 -0
  21. package/dist/useModal.d.ts +2 -0
  22. package/package.json +37 -22
  23. package/src/{CloseButton.jsx → CloseButton.tsx} +5 -1
  24. package/src/{Deferred.jsx → Deferred.tsx} +10 -3
  25. package/src/HeadlessModal.tsx +238 -0
  26. package/src/Modal.tsx +292 -0
  27. package/src/ModalContent.tsx +311 -0
  28. package/src/ModalLink.tsx +224 -0
  29. package/src/ModalRenderer.tsx +33 -0
  30. package/src/ModalRoot.tsx +880 -0
  31. package/src/SlideoverContent.tsx +319 -0
  32. package/src/{WhenVisible.jsx → WhenVisible.tsx} +20 -9
  33. package/src/config.ts +99 -0
  34. package/src/constants.ts +22 -0
  35. package/src/helpers.ts +17 -0
  36. package/src/inertiauiModal.ts +65 -0
  37. package/src/types.ts +150 -0
  38. package/src/useModal.ts +7 -0
  39. package/src/HeadlessModal.jsx +0 -143
  40. package/src/Modal.jsx +0 -136
  41. package/src/ModalContent.jsx +0 -56
  42. package/src/ModalLink.jsx +0 -123
  43. package/src/ModalRenderer.jsx +0 -34
  44. package/src/ModalRoot.jsx +0 -623
  45. package/src/SlideoverContent.jsx +0 -55
  46. package/src/config.js +0 -3
  47. package/src/helpers.js +0 -2
  48. package/src/inertiauiModal.js +0 -34
  49. package/src/useModal.js +0 -6
@@ -0,0 +1,5 @@
1
+ interface CloseButtonProps {
2
+ onClick: () => void;
3
+ }
4
+ export default function CloseButton({ onClick }: CloseButtonProps): import("react/jsx-runtime").JSX.Element;
5
+ export {};
@@ -0,0 +1,11 @@
1
+ import { ReactNode } from 'react';
2
+ interface DeferredProps {
3
+ children: ReactNode;
4
+ data: string | string[];
5
+ fallback?: ReactNode;
6
+ }
7
+ declare const Deferred: {
8
+ ({ children, data, fallback }: DeferredProps): ReactNode;
9
+ displayName: string;
10
+ };
11
+ export default Deferred;
@@ -0,0 +1,64 @@
1
+ import { ReactNode } from 'react';
2
+ import { Modal, ModalConfig, ReloadOptions } from './types';
3
+ interface HeadlessModalConfig {
4
+ slideover: boolean;
5
+ closeButton: boolean;
6
+ closeExplicitly: boolean;
7
+ closeOnClickOutside: boolean;
8
+ maxWidth: string;
9
+ paddingClasses: string;
10
+ panelClasses: string;
11
+ position: string;
12
+ }
13
+ interface HeadlessModalRenderProps {
14
+ afterLeave: () => void;
15
+ close: () => void;
16
+ config: HeadlessModalConfig;
17
+ emit: (event: string, ...args: unknown[]) => void;
18
+ getChildModal: () => Modal | null;
19
+ getParentModal: () => Modal | null;
20
+ id: string;
21
+ index: number;
22
+ isOpen: boolean;
23
+ modalContext: Modal;
24
+ onTopOfStack: boolean;
25
+ reload: (options?: ReloadOptions) => void;
26
+ setOpen: (open: boolean) => void;
27
+ shouldRender: boolean;
28
+ [key: string]: unknown;
29
+ }
30
+ interface HeadlessModalBaseProps {
31
+ name?: string;
32
+ children: ReactNode | ((props: HeadlessModalRenderProps) => ReactNode);
33
+ onFocus?: () => void;
34
+ onBlur?: () => void;
35
+ onClose?: () => void;
36
+ onSuccess?: () => void;
37
+ slideover?: boolean;
38
+ closeButton?: boolean;
39
+ closeExplicitly?: boolean;
40
+ closeOnClickOutside?: boolean;
41
+ maxWidth?: string;
42
+ paddingClasses?: string;
43
+ panelClasses?: string;
44
+ position?: string;
45
+ }
46
+ type HeadlessModalProps = HeadlessModalBaseProps & Record<string, unknown>;
47
+ export interface HeadlessModalRef {
48
+ afterLeave: () => void;
49
+ close: () => void;
50
+ emit: (event: string, ...args: unknown[]) => void;
51
+ getChildModal: () => Modal | null | undefined;
52
+ getParentModal: () => Modal | null | undefined;
53
+ reload: (options?: ReloadOptions) => void;
54
+ setOpen: (open: boolean) => void;
55
+ readonly id: string | undefined;
56
+ readonly index: number | undefined;
57
+ readonly isOpen: boolean | undefined;
58
+ readonly config: ModalConfig | undefined;
59
+ readonly modalContext: Modal | null;
60
+ readonly onTopOfStack: boolean | undefined;
61
+ readonly shouldRender: boolean | undefined;
62
+ }
63
+ declare const HeadlessModal: import('react').ForwardRefExoticComponent<Omit<HeadlessModalProps, "ref"> & import('react').RefAttributes<HeadlessModalRef>>;
64
+ export default HeadlessModal;
@@ -0,0 +1,48 @@
1
+ import { ReactNode } from 'react';
2
+ import { HeadlessModalRef } from './HeadlessModal';
3
+ import { Modal as ModalType, ReloadOptions } from './types';
4
+ interface ModalConfig {
5
+ slideover: boolean;
6
+ closeButton: boolean;
7
+ closeExplicitly: boolean;
8
+ maxWidth: string;
9
+ paddingClasses: string;
10
+ panelClasses: string;
11
+ position: string;
12
+ }
13
+ interface ModalRenderProps {
14
+ afterLeave: () => void;
15
+ close: () => void;
16
+ config: ModalConfig;
17
+ emit: (event: string, ...args: unknown[]) => void;
18
+ getChildModal: () => ModalType | null;
19
+ getParentModal: () => ModalType | null;
20
+ id: string;
21
+ index: number;
22
+ isOpen: boolean;
23
+ modalContext: ModalType;
24
+ onTopOfStack: boolean;
25
+ reload: (options?: ReloadOptions) => void;
26
+ setOpen: (open: boolean) => void;
27
+ shouldRender: boolean;
28
+ [key: string]: unknown;
29
+ }
30
+ interface ModalBaseProps {
31
+ name?: string;
32
+ children: ReactNode | ((props: ModalRenderProps) => ReactNode);
33
+ onFocus?: () => void;
34
+ onBlur?: () => void;
35
+ onClose?: () => void;
36
+ onSuccess?: () => void;
37
+ onAfterLeave?: () => void;
38
+ slideover?: boolean;
39
+ closeButton?: boolean;
40
+ closeExplicitly?: boolean;
41
+ maxWidth?: string;
42
+ paddingClasses?: string;
43
+ panelClasses?: string;
44
+ position?: string;
45
+ }
46
+ type ModalProps = ModalBaseProps & Record<string, unknown>;
47
+ declare const Modal: import('react').ForwardRefExoticComponent<Omit<ModalProps, "ref"> & import('react').RefAttributes<HeadlessModalRef>>;
48
+ export default Modal;
@@ -0,0 +1,24 @@
1
+ import { ReactNode } from 'react';
2
+ import { Modal } from './types';
3
+ interface ModalContentConfig {
4
+ maxWidth: string;
5
+ paddingClasses: string;
6
+ panelClasses: string;
7
+ position: string;
8
+ closeButton: boolean;
9
+ closeExplicitly?: boolean;
10
+ closeOnClickOutside?: boolean;
11
+ }
12
+ interface ModalContentProps {
13
+ modalContext: Modal;
14
+ config: ModalContentConfig;
15
+ useNativeDialog: boolean;
16
+ isFirstModal: boolean;
17
+ onAfterLeave?: () => void;
18
+ children: ReactNode | ((props: {
19
+ modalContext: Modal;
20
+ config: ModalContentConfig;
21
+ }) => ReactNode);
22
+ }
23
+ declare const ModalContent: ({ modalContext, config, useNativeDialog, isFirstModal, onAfterLeave, children }: ModalContentProps) => import("react/jsx-runtime").JSX.Element;
24
+ export default ModalContent;
@@ -0,0 +1,29 @@
1
+ import { ReactNode, ElementType } from 'react';
2
+ import { PrefetchOption } from './types';
3
+ import { RequestPayload } from '@inertiajs/core';
4
+ interface ModalLinkProps {
5
+ href: string;
6
+ method?: string;
7
+ data?: RequestPayload;
8
+ as?: ElementType;
9
+ headers?: Record<string, string>;
10
+ queryStringArrayFormat?: 'brackets' | 'indices';
11
+ onAfterLeave?: () => void;
12
+ onBlur?: () => void;
13
+ onClose?: () => void;
14
+ onError?: (error: unknown) => void;
15
+ onFocus?: () => void;
16
+ onStart?: () => void;
17
+ onSuccess?: () => void;
18
+ onPrefetching?: () => void;
19
+ onPrefetched?: () => void;
20
+ navigate?: boolean;
21
+ prefetch?: PrefetchOption;
22
+ cacheFor?: number;
23
+ children: ReactNode | ((props: {
24
+ loading: boolean;
25
+ }) => ReactNode);
26
+ [key: string]: unknown;
27
+ }
28
+ declare const ModalLink: ({ href, method, data, as: Component, headers, queryStringArrayFormat, onAfterLeave, onBlur, onClose, onError, onFocus, onStart, onSuccess, onPrefetching, onPrefetched, navigate, prefetch, cacheFor, children, ...props }: ModalLinkProps) => import("react/jsx-runtime").JSX.Element;
29
+ export default ModalLink;
@@ -0,0 +1,4 @@
1
+ import { ModalRendererProps } from './types';
2
+ export declare const useModalIndex: () => number | null;
3
+ declare const ModalRenderer: ({ index }: ModalRendererProps) => import("react/jsx-runtime").JSX.Element;
4
+ export default ModalRenderer;
@@ -0,0 +1,22 @@
1
+ import { ReactNode, ComponentType } from 'react';
2
+ import { ModalStackContextValue, PageProps, ModalRootProps, PrefetchOptions } from './types';
3
+ export declare function prefetch(href: string, options?: PrefetchOptions): Promise<void>;
4
+ interface ModalStackProviderProps {
5
+ children: ReactNode;
6
+ }
7
+ export declare const ModalStackProvider: ({ children }: ModalStackProviderProps) => import("react/jsx-runtime").JSX.Element;
8
+ export declare const useModalStack: () => ModalStackContextValue;
9
+ export declare const modalPropNames: string[];
10
+ export declare const initFromPageProps: (pageProps: PageProps) => void;
11
+ interface RenderInertiaAppProps {
12
+ Component: ComponentType & {
13
+ layout?: ((page: ReactNode) => ReactNode) | ComponentType[];
14
+ };
15
+ props: Record<string, unknown>;
16
+ key: string;
17
+ }
18
+ export declare const renderApp: (App: ComponentType<{
19
+ children: (props: RenderInertiaAppProps) => ReactNode;
20
+ }>, pageProps: PageProps) => import("react/jsx-runtime").JSX.Element;
21
+ export declare const ModalRoot: ({ children }: ModalRootProps) => import("react/jsx-runtime").JSX.Element;
22
+ export {};
@@ -0,0 +1,24 @@
1
+ import { ReactNode } from 'react';
2
+ import { Modal } from './types';
3
+ interface SlideoverContentConfig {
4
+ maxWidth: string;
5
+ paddingClasses: string;
6
+ panelClasses: string;
7
+ position: string;
8
+ closeButton: boolean;
9
+ closeExplicitly?: boolean;
10
+ closeOnClickOutside?: boolean;
11
+ }
12
+ interface SlideoverContentProps {
13
+ modalContext: Modal;
14
+ config: SlideoverContentConfig;
15
+ useNativeDialog: boolean;
16
+ isFirstModal: boolean;
17
+ onAfterLeave?: () => void;
18
+ children: ReactNode | ((props: {
19
+ modalContext: Modal;
20
+ config: SlideoverContentConfig;
21
+ }) => ReactNode);
22
+ }
23
+ declare const SlideoverContent: ({ modalContext, config, useNativeDialog, isFirstModal, onAfterLeave, children }: SlideoverContentProps) => import("react/jsx-runtime").JSX.Element;
24
+ export default SlideoverContent;
@@ -0,0 +1,16 @@
1
+ import { ReactNode, ElementType } from 'react';
2
+ import { ReloadOptions } from './types';
3
+ interface WhenVisibleProps {
4
+ children: ReactNode;
5
+ data?: string | string[];
6
+ params?: ReloadOptions;
7
+ buffer?: number;
8
+ as?: ElementType;
9
+ always?: boolean;
10
+ fallback?: ReactNode;
11
+ }
12
+ declare const WhenVisible: {
13
+ ({ children, data, params, buffer, as, always, fallback }: WhenVisibleProps): string | number | bigint | boolean | Iterable<ReactNode> | Promise<string | number | bigint | boolean | import('react').ReactPortal | import('react').ReactElement<unknown, string | import('react').JSXElementConstructor<any>> | Iterable<ReactNode>> | import('react').ReactElement<any, string | import('react').JSXElementConstructor<any>>;
14
+ displayName: string;
15
+ };
16
+ export default WhenVisible;
@@ -0,0 +1,21 @@
1
+ export interface ModalTypeConfig {
2
+ closeButton: boolean;
3
+ closeExplicitly: boolean;
4
+ closeOnClickOutside: boolean;
5
+ maxWidth: string;
6
+ paddingClasses: string;
7
+ panelClasses: string;
8
+ position: string;
9
+ }
10
+ export interface ModalConfig {
11
+ type: 'modal' | 'slideover';
12
+ navigate: boolean;
13
+ useNativeDialog: boolean;
14
+ appElement: string | null;
15
+ modal: ModalTypeConfig;
16
+ slideover: ModalTypeConfig;
17
+ }
18
+ export declare const resetConfig: () => void;
19
+ export declare const putConfig: (key: string | Partial<ModalConfig>, value?: unknown) => void;
20
+ export declare const getConfig: (key?: string) => unknown;
21
+ export declare const getConfigByType: (isSlideover: boolean, key: string) => unknown;
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Max width classes for modals and slideovers.
3
+ * Uses a map lookup for Tailwind 4 compatibility (scanner picks up full class strings).
4
+ */
5
+ export declare const maxWidthClasses: Record<string, string>;
6
+ export declare const defaultMaxWidth = "2xl";
7
+ export declare function getMaxWidthClass(maxWidth: string): string;
@@ -0,0 +1,3 @@
1
+ export { sameUrlPath, except, only, rejectNullValues, kebabCase, isStandardDomEvent } from '@inertiaui/vanilla';
2
+ export declare function generateIdUsing(callback: (() => string) | null): void;
3
+ export declare function generateId(prefix?: string): string;
@@ -0,0 +1,2 @@
1
+ export * from './inertiauiModal'
2
+ export {}