@astroapps/aria-base 1.2.0 → 1.3.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.
@@ -1,3 +1,3 @@
1
1
  {
2
- "nonCachedDurationMs": 6704.139301999938
2
+ "nonCachedDurationMs": 4663.6552099995315
3
3
  }
package/lib/Popover.d.ts CHANGED
@@ -17,3 +17,6 @@ export declare const DefaultPopoverClasses: {
17
17
  popoverClass: string;
18
18
  };
19
19
  export declare function Popover({ children, state, renderArrow, portalContainer, ...props }: PopoverProps): React.JSX.Element;
20
+ export declare function createOverlayState(ref: {
21
+ value: boolean;
22
+ }): OverlayTriggerState;
package/lib/index.js CHANGED
@@ -95,6 +95,23 @@ function Popover(_ref) {
95
95
  onDismiss: state.close
96
96
  })));
97
97
  }
98
+ function createOverlayState(ref) {
99
+ return {
100
+ isOpen: ref.value,
101
+ setOpen: function setOpen(o) {
102
+ return ref.value = o;
103
+ },
104
+ open: function open() {
105
+ return ref.value = true;
106
+ },
107
+ close: function close() {
108
+ return ref.value = false;
109
+ },
110
+ toggle: function toggle() {
111
+ return ref.value = !ref.value;
112
+ }
113
+ };
114
+ }
98
115
 
99
116
  var _excluded = ["state", "children", "isDismissable", "isKeyboardDismissDisabled", "shouldCloseOnInteractOutside"],
100
117
  _excluded2 = ["trigger", "children"],
@@ -175,4 +192,5 @@ exports.Modal = Modal;
175
192
  exports.ModalDialog = ModalDialog;
176
193
  exports.ModalTrigger = ModalTrigger;
177
194
  exports.Popover = Popover;
195
+ exports.createOverlayState = createOverlayState;
178
196
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/Button.tsx","../src/Dialog.tsx","../src/Popover.tsx","../src/Modal.tsx"],"sourcesContent":["import { AriaButtonProps, useButton } from \"react-aria\";\nimport React, { useRef } from \"react\";\n\nexport function Button({\n children,\n className,\n ...props\n}: AriaButtonProps<\"button\"> & { className?: string }) {\n const ref = useRef(null);\n const { buttonProps } = useButton(props, ref);\n return <button {...buttonProps} className={className} children={children} />;\n}\n","import type { AriaDialogProps } from \"react-aria\";\nimport { useDialog } from \"react-aria\";\nimport React, { useRef } from \"react\";\n\nexport interface DialogClasses {\n className?: string;\n titleClass?: string;\n}\nexport interface DialogProps extends AriaDialogProps, DialogClasses {\n title?: React.ReactNode;\n children: React.ReactNode;\n}\n\nexport const DefaultDialogClasses: DialogClasses = {};\nexport function Dialog({ title, children, ...props }: DialogProps) {\n let ref = useRef(null);\n const { className, titleClass } = {\n ...DefaultDialogClasses,\n ...props,\n };\n let { dialogProps, titleProps } = useDialog(props, ref);\n\n return (\n <div {...dialogProps} ref={ref} className={className}>\n {title && (\n <h3 {...titleProps} className={titleClass}>\n {title}\n </h3>\n )}\n {children}\n </div>\n );\n}\n","import type { AriaPopoverProps } from \"react-aria\";\nimport { DismissButton, Overlay, usePopover } from \"react-aria\";\nimport type { OverlayTriggerState } from \"react-stately\";\nimport React, { ReactNode, useRef } from \"react\";\nimport { DOMAttributes } from \"@react-types/shared\";\n\nexport interface PopoverClasses {\n underlayClass?: string;\n popoverClass?: string;\n}\nexport interface PopoverProps\n extends Omit<AriaPopoverProps, \"popoverRef\">,\n PopoverClasses {\n children: React.ReactNode;\n state: OverlayTriggerState;\n portalContainer?: Element;\n renderArrow?: (props: DOMAttributes) => ReactNode;\n}\n\nexport const DefaultPopoverClasses = {\n underlayClass: \"fixed inset-0\",\n popoverClass: \"bg-white\",\n};\n\nexport function Popover({\n children,\n state,\n renderArrow,\n portalContainer,\n ...props\n}: PopoverProps) {\n let popoverRef = useRef(null);\n const { popoverClass, underlayClass } = {\n ...DefaultPopoverClasses,\n ...props,\n };\n let { popoverProps, underlayProps, arrowProps } = usePopover(\n {\n ...props,\n popoverRef,\n },\n state,\n );\n\n return (\n <Overlay portalContainer={portalContainer}>\n <div {...underlayProps} className={underlayClass} />\n <div\n {...popoverProps}\n ref={popoverRef}\n className={popoverClass}\n style={popoverProps.style}\n >\n {renderArrow?.(arrowProps)}\n <DismissButton onDismiss={state.close} />\n {children}\n <DismissButton onDismiss={state.close} />\n </div>\n </Overlay>\n );\n}\n","import React from \"react\";\nimport {\n AriaModalOverlayProps,\n Overlay,\n useModalOverlay,\n useOverlayTrigger,\n} from \"react-aria\";\nimport {\n OverlayTriggerProps,\n OverlayTriggerState,\n useOverlayTriggerState,\n} from \"react-stately\";\nimport { Dialog, DialogProps, DialogClasses } from \"./Dialog\";\n\nexport interface ModalClasses {\n underlayClass?: string;\n containerClass?: string;\n}\n\nexport interface ModalDialogClasses extends DialogClasses, ModalClasses {}\n\nexport const DefaultModalDialogClasses: ModalDialogClasses = {\n underlayClass:\n \"fixed z-[100] inset-0 bg-black bg-opacity-50 flex items-center justify-center backdrop-blur-[2px]\",\n containerClass:\n \"relative m-4 p-4 w-3/5 min-w-[400px] max-w-[80%] rounded-lg bg-white shadow-sm\",\n className:\n \"w-full h-full min-h-[100px] flex flex-col gap-2 focus-visible:outline-none gap-2\",\n};\n\nexport interface ModalProps extends AriaModalOverlayProps, ModalClasses {\n state: OverlayTriggerState;\n children: React.ReactElement;\n}\n\nexport interface ModalDialogTriggerProps\n extends OverlayTriggerProps,\n AriaModalOverlayProps {\n trigger: React.ReactElement;\n children: React.ReactElement;\n}\n\nexport interface ModalDialogProps\n extends ModalDialogTriggerProps,\n Omit<DialogProps, \"children\">,\n ModalDialogClasses {\n footer?: React.ReactNode;\n}\n\nexport function Modal({\n state,\n children,\n isDismissable,\n isKeyboardDismissDisabled,\n shouldCloseOnInteractOutside,\n ...props\n}: ModalProps) {\n let ref = React.useRef(null);\n let { modalProps, underlayProps } = useModalOverlay(\n { isDismissable, isKeyboardDismissDisabled, shouldCloseOnInteractOutside },\n state,\n ref,\n );\n\n const { underlayClass, containerClass } = {\n ...DefaultModalDialogClasses,\n ...props,\n };\n\n return (\n <Overlay>\n <div className={underlayClass} {...underlayProps}>\n <div {...modalProps} ref={ref} className={containerClass}>\n {children}\n </div>\n </div>\n </Overlay>\n );\n}\n\nexport function ModalTrigger({\n trigger,\n children,\n ...props\n}: ModalDialogTriggerProps) {\n let state = useOverlayTriggerState({ ...props });\n let { triggerProps, overlayProps } = useOverlayTrigger(\n { type: \"dialog\" },\n state,\n );\n\n const { onPress, ...otherTriggerProps } = triggerProps;\n return (\n <>\n {React.cloneElement(trigger, { ...otherTriggerProps, onClick: onPress })}\n {state.isOpen && (\n <Modal state={state} {...props}>\n {React.cloneElement(children, overlayProps)}\n </Modal>\n )}\n </>\n );\n}\n\nexport function ModalDialog({\n children,\n footer,\n defaultOpen = false,\n isDismissable = true,\n titleClass = \"text-2xl font-bold\",\n ...props\n}: ModalDialogProps) {\n const { className } = {\n ...DefaultModalDialogClasses,\n ...props,\n };\n\n return (\n <ModalTrigger\n defaultOpen={defaultOpen}\n isDismissable={isDismissable}\n {...props}\n >\n <Dialog className={className} {...props}>\n {children}\n {footer}\n </Dialog>\n </ModalTrigger>\n );\n}\n"],"names":["Button","_ref","children","className","props","_objectWithoutPropertiesLoose","_excluded","ref","useRef","_useButton","useButton","buttonProps","React","createElement","_extends","DefaultDialogClasses","Dialog","title","_DefaultDialogClasses","titleClass","_useDialog","useDialog","dialogProps","titleProps","DefaultPopoverClasses","underlayClass","popoverClass","Popover","state","renderArrow","portalContainer","popoverRef","_DefaultPopoverClasse","_usePopover","usePopover","popoverProps","underlayProps","arrowProps","Overlay","style","DismissButton","onDismiss","close","DefaultModalDialogClasses","containerClass","Modal","isDismissable","isKeyboardDismissDisabled","shouldCloseOnInteractOutside","_useModalOverlay","useModalOverlay","modalProps","_DefaultModalDialogCl","ModalTrigger","_ref2","trigger","_excluded2","useOverlayTriggerState","_useOverlayTrigger","useOverlayTrigger","type","triggerProps","overlayProps","onPress","otherTriggerProps","_excluded3","Fragment","cloneElement","onClick","isOpen","ModalDialog","_ref3","footer","_ref3$defaultOpen","defaultOpen","_ref3$isDismissable","_excluded4","_DefaultModalDialogCl2"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/Button.tsx","../src/Dialog.tsx","../src/Popover.tsx","../src/Modal.tsx"],"sourcesContent":["import { AriaButtonProps, useButton } from \"react-aria\";\nimport React, { useRef } from \"react\";\n\nexport function Button({\n children,\n className,\n ...props\n}: AriaButtonProps<\"button\"> & { className?: string }) {\n const ref = useRef(null);\n const { buttonProps } = useButton(props, ref);\n return <button {...buttonProps} className={className} children={children} />;\n}\n","import type { AriaDialogProps } from \"react-aria\";\nimport { useDialog } from \"react-aria\";\nimport React, { useRef } from \"react\";\n\nexport interface DialogClasses {\n className?: string;\n titleClass?: string;\n}\nexport interface DialogProps extends AriaDialogProps, DialogClasses {\n title?: React.ReactNode;\n children: React.ReactNode;\n}\n\nexport const DefaultDialogClasses: DialogClasses = {};\nexport function Dialog({ title, children, ...props }: DialogProps) {\n let ref = useRef(null);\n const { className, titleClass } = {\n ...DefaultDialogClasses,\n ...props,\n };\n let { dialogProps, titleProps } = useDialog(props, ref);\n\n return (\n <div {...dialogProps} ref={ref} className={className}>\n {title && (\n <h3 {...titleProps} className={titleClass}>\n {title}\n </h3>\n )}\n {children}\n </div>\n );\n}\n","import type { AriaPopoverProps } from \"react-aria\";\nimport { DismissButton, Overlay, usePopover } from \"react-aria\";\nimport type { OverlayTriggerState } from \"react-stately\";\nimport React, { ReactNode, useRef } from \"react\";\nimport { DOMAttributes } from \"@react-types/shared\";\n\nexport interface PopoverClasses {\n underlayClass?: string;\n popoverClass?: string;\n}\nexport interface PopoverProps\n extends Omit<AriaPopoverProps, \"popoverRef\">,\n PopoverClasses {\n children: React.ReactNode;\n state: OverlayTriggerState;\n portalContainer?: Element;\n renderArrow?: (props: DOMAttributes) => ReactNode;\n}\n\nexport const DefaultPopoverClasses = {\n underlayClass: \"fixed inset-0\",\n popoverClass: \"bg-white\",\n};\n\nexport function Popover({\n children,\n state,\n renderArrow,\n portalContainer,\n ...props\n}: PopoverProps) {\n let popoverRef = useRef(null);\n const { popoverClass, underlayClass } = {\n ...DefaultPopoverClasses,\n ...props,\n };\n let { popoverProps, underlayProps, arrowProps } = usePopover(\n {\n ...props,\n popoverRef,\n },\n state,\n );\n\n return (\n <Overlay portalContainer={portalContainer}>\n <div {...underlayProps} className={underlayClass} />\n <div\n {...popoverProps}\n ref={popoverRef}\n className={popoverClass}\n style={popoverProps.style}\n >\n {renderArrow?.(arrowProps)}\n <DismissButton onDismiss={state.close} />\n {children}\n <DismissButton onDismiss={state.close} />\n </div>\n </Overlay>\n );\n}\n\nexport function createOverlayState(ref: {\n value: boolean;\n}): OverlayTriggerState {\n return {\n isOpen: ref.value,\n setOpen: (o) => (ref.value = o),\n open: () => (ref.value = true),\n close: () => (ref.value = false),\n toggle: () => (ref.value = !ref.value),\n };\n}\n","import React from \"react\";\nimport {\n AriaModalOverlayProps,\n Overlay,\n useModalOverlay,\n useOverlayTrigger,\n} from \"react-aria\";\nimport {\n OverlayTriggerProps,\n OverlayTriggerState,\n useOverlayTriggerState,\n} from \"react-stately\";\nimport { Dialog, DialogProps, DialogClasses } from \"./Dialog\";\n\nexport interface ModalClasses {\n underlayClass?: string;\n containerClass?: string;\n}\n\nexport interface ModalDialogClasses extends DialogClasses, ModalClasses {}\n\nexport const DefaultModalDialogClasses: ModalDialogClasses = {\n underlayClass:\n \"fixed z-[100] inset-0 bg-black bg-opacity-50 flex items-center justify-center backdrop-blur-[2px]\",\n containerClass:\n \"relative m-4 p-4 w-3/5 min-w-[400px] max-w-[80%] rounded-lg bg-white shadow-sm\",\n className:\n \"w-full h-full min-h-[100px] flex flex-col gap-2 focus-visible:outline-none gap-2\",\n};\n\nexport interface ModalProps extends AriaModalOverlayProps, ModalClasses {\n state: OverlayTriggerState;\n children: React.ReactElement;\n}\n\nexport interface ModalDialogTriggerProps\n extends OverlayTriggerProps,\n AriaModalOverlayProps {\n trigger: React.ReactElement;\n children: React.ReactElement;\n}\n\nexport interface ModalDialogProps\n extends ModalDialogTriggerProps,\n Omit<DialogProps, \"children\">,\n ModalDialogClasses {\n footer?: React.ReactNode;\n}\n\nexport function Modal({\n state,\n children,\n isDismissable,\n isKeyboardDismissDisabled,\n shouldCloseOnInteractOutside,\n ...props\n}: ModalProps) {\n let ref = React.useRef(null);\n let { modalProps, underlayProps } = useModalOverlay(\n { isDismissable, isKeyboardDismissDisabled, shouldCloseOnInteractOutside },\n state,\n ref,\n );\n\n const { underlayClass, containerClass } = {\n ...DefaultModalDialogClasses,\n ...props,\n };\n\n return (\n <Overlay>\n <div className={underlayClass} {...underlayProps}>\n <div {...modalProps} ref={ref} className={containerClass}>\n {children}\n </div>\n </div>\n </Overlay>\n );\n}\n\nexport function ModalTrigger({\n trigger,\n children,\n ...props\n}: ModalDialogTriggerProps) {\n let state = useOverlayTriggerState({ ...props });\n let { triggerProps, overlayProps } = useOverlayTrigger(\n { type: \"dialog\" },\n state,\n );\n\n const { onPress, ...otherTriggerProps } = triggerProps;\n return (\n <>\n {React.cloneElement(trigger, { ...otherTriggerProps, onClick: onPress })}\n {state.isOpen && (\n <Modal state={state} {...props}>\n {React.cloneElement(children, overlayProps)}\n </Modal>\n )}\n </>\n );\n}\n\nexport function ModalDialog({\n children,\n footer,\n defaultOpen = false,\n isDismissable = true,\n titleClass = \"text-2xl font-bold\",\n ...props\n}: ModalDialogProps) {\n const { className } = {\n ...DefaultModalDialogClasses,\n ...props,\n };\n\n return (\n <ModalTrigger\n defaultOpen={defaultOpen}\n isDismissable={isDismissable}\n {...props}\n >\n <Dialog className={className} {...props}>\n {children}\n {footer}\n </Dialog>\n </ModalTrigger>\n );\n}\n"],"names":["Button","_ref","children","className","props","_objectWithoutPropertiesLoose","_excluded","ref","useRef","_useButton","useButton","buttonProps","React","createElement","_extends","DefaultDialogClasses","Dialog","title","_DefaultDialogClasses","titleClass","_useDialog","useDialog","dialogProps","titleProps","DefaultPopoverClasses","underlayClass","popoverClass","Popover","state","renderArrow","portalContainer","popoverRef","_DefaultPopoverClasse","_usePopover","usePopover","popoverProps","underlayProps","arrowProps","Overlay","style","DismissButton","onDismiss","close","createOverlayState","isOpen","value","setOpen","o","open","toggle","DefaultModalDialogClasses","containerClass","Modal","isDismissable","isKeyboardDismissDisabled","shouldCloseOnInteractOutside","_useModalOverlay","useModalOverlay","modalProps","_DefaultModalDialogCl","ModalTrigger","_ref2","trigger","_excluded2","useOverlayTriggerState","_useOverlayTrigger","useOverlayTrigger","type","triggerProps","overlayProps","onPress","otherTriggerProps","_excluded3","Fragment","cloneElement","onClick","ModalDialog","_ref3","footer","_ref3$defaultOpen","defaultOpen","_ref3$isDismissable","_excluded4","_DefaultModalDialogCl2"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@astroapps/aria-base",
3
- "version": "1.2.0",
3
+ "version": "1.3.0",
4
4
  "description": "",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
package/src/Popover.tsx CHANGED
@@ -59,3 +59,15 @@ export function Popover({
59
59
  </Overlay>
60
60
  );
61
61
  }
62
+
63
+ export function createOverlayState(ref: {
64
+ value: boolean;
65
+ }): OverlayTriggerState {
66
+ return {
67
+ isOpen: ref.value,
68
+ setOpen: (o) => (ref.value = o),
69
+ open: () => (ref.value = true),
70
+ close: () => (ref.value = false),
71
+ toggle: () => (ref.value = !ref.value),
72
+ };
73
+ }