@astral/ui 1.50.1 → 1.51.1
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/BackdropStack/hooks/useBackdropStackToggle/useBackdropStackToggle.d.ts +2 -2
- package/BackdropStack/services/BackdropStackManager/BackdropStackManager.d.ts +30 -2
- package/BackdropStack/services/BackdropStackManager/BackdropStackManager.js +35 -3
- package/Button/styles.d.ts +1 -1
- package/ClickAwayListener/ClickAwayListener.d.ts +9 -0
- package/ClickAwayListener/ClickAwayListener.js +14 -0
- package/ClickAwayListener/ClickAwayListener.test.d.ts +1 -0
- package/ClickAwayListener/ClickAwayListener.test.js +37 -0
- package/ClickAwayListener/index.d.ts +1 -0
- package/{DatePicker/DatePickerClickAwayListener → ClickAwayListener}/index.js +1 -1
- package/DataGrid/DataGridNoData/styles.d.ts +1 -1
- package/DatePicker/DatePicker.d.ts +5 -3
- package/DatePicker/DatePicker.js +3 -3
- package/DatePicker/DatePicker.test.js +6 -0
- package/DatePicker/DatePickerPopper/DatePickerPopper.d.ts +2 -2
- package/Fab/styles.d.ts +1 -1
- package/IconButton/styles.d.ts +1 -1
- package/SwipeableDrawer/styles.d.ts +1 -1
- package/Tooltip/styled.d.ts +1 -1
- package/esm/BackdropStack/hooks/useBackdropStackToggle/useBackdropStackToggle.d.ts +2 -2
- package/esm/BackdropStack/services/BackdropStackManager/BackdropStackManager.d.ts +30 -2
- package/esm/BackdropStack/services/BackdropStackManager/BackdropStackManager.js +35 -3
- package/esm/Button/styles.d.ts +1 -1
- package/esm/ClickAwayListener/ClickAwayListener.d.ts +9 -0
- package/esm/ClickAwayListener/ClickAwayListener.js +10 -0
- package/esm/ClickAwayListener/ClickAwayListener.test.d.ts +1 -0
- package/esm/ClickAwayListener/ClickAwayListener.test.js +35 -0
- package/esm/ClickAwayListener/index.d.ts +1 -0
- package/esm/ClickAwayListener/index.js +1 -0
- package/esm/DataGrid/DataGridNoData/styles.d.ts +1 -1
- package/esm/DatePicker/DatePicker.d.ts +5 -3
- package/esm/DatePicker/DatePicker.js +3 -3
- package/esm/DatePicker/DatePicker.test.js +6 -0
- package/esm/DatePicker/DatePickerPopper/DatePickerPopper.d.ts +2 -2
- package/esm/Fab/styles.d.ts +1 -1
- package/esm/IconButton/styles.d.ts +1 -1
- package/esm/SwipeableDrawer/styles.d.ts +1 -1
- package/esm/Tooltip/styled.d.ts +1 -1
- package/esm/hooks/index.d.ts +2 -0
- package/esm/hooks/index.js +2 -0
- package/esm/hooks/useClickAwayEffect/index.d.ts +1 -0
- package/esm/hooks/useClickAwayEffect/index.js +1 -0
- package/esm/hooks/useClickAwayEffect/useClickAwayEffect.d.ts +25 -0
- package/esm/hooks/useClickAwayEffect/useClickAwayEffect.js +26 -0
- package/esm/hooks/useClickAwayEffect/useClickAwayEffect.test.d.ts +1 -0
- package/esm/hooks/useClickAwayEffect/useClickAwayEffect.test.js +42 -0
- package/esm/hooks/useEscapeClickEffect/useEscapeClickEffect.d.ts +2 -2
- package/esm/index.d.ts +2 -0
- package/esm/index.js +2 -0
- package/esm/types.d.ts +5 -1
- package/hooks/index.d.ts +2 -0
- package/hooks/index.js +2 -0
- package/hooks/useClickAwayEffect/index.d.ts +1 -0
- package/hooks/useClickAwayEffect/index.js +17 -0
- package/hooks/useClickAwayEffect/useClickAwayEffect.d.ts +25 -0
- package/hooks/useClickAwayEffect/useClickAwayEffect.js +30 -0
- package/hooks/useClickAwayEffect/useClickAwayEffect.test.d.ts +1 -0
- package/hooks/useClickAwayEffect/useClickAwayEffect.test.js +44 -0
- package/hooks/useEscapeClickEffect/useEscapeClickEffect.d.ts +2 -2
- package/index.d.ts +2 -0
- package/index.js +2 -0
- package/package.json +2 -2
- package/types.d.ts +5 -1
- package/DatePicker/DatePickerClickAwayListener/DatePickerClickAwayListener.d.ts +0 -6
- package/DatePicker/DatePickerClickAwayListener/DatePickerClickAwayListener.js +0 -7
- package/DatePicker/DatePickerClickAwayListener/index.d.ts +0 -1
- package/esm/DatePicker/DatePickerClickAwayListener/DatePickerClickAwayListener.d.ts +0 -6
- package/esm/DatePicker/DatePickerClickAwayListener/DatePickerClickAwayListener.js +0 -3
- package/esm/DatePicker/DatePickerClickAwayListener/index.d.ts +0 -1
- package/esm/DatePicker/DatePickerClickAwayListener/index.js +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { SyntheticEvent } from 'react';
|
|
2
2
|
import { TextFieldProps } from '../TextField';
|
|
3
3
|
import { DateMask } from '../utils/date';
|
|
4
|
-
import {
|
|
4
|
+
import { CloseEventReason } from '../types';
|
|
5
5
|
import { MinMaxDate } from './types';
|
|
6
6
|
import { MondayFirst } from './DayPicker';
|
|
7
7
|
export type DatePickerProps = MondayFirst & Partial<MinMaxDate> & {
|
|
@@ -16,13 +16,14 @@ export type DatePickerProps = MondayFirst & Partial<MinMaxDate> & {
|
|
|
16
16
|
onChange?: (date?: Date) => void;
|
|
17
17
|
onBlur?: () => void;
|
|
18
18
|
onOpen?: () => void;
|
|
19
|
-
onClose?: (event?: SyntheticEvent<Element, Event> | Event, reason?:
|
|
19
|
+
onClose?: (event?: SyntheticEvent<Element, Event> | Event, reason?: CloseEventReason) => void;
|
|
20
20
|
inputProps?: Omit<TextFieldProps, 'ref' | 'value' | 'onChange'>;
|
|
21
21
|
disabled?: boolean;
|
|
22
22
|
/**
|
|
23
23
|
* @description Принимает только Date object, включая невалидную дату Invalid date
|
|
24
24
|
* */
|
|
25
25
|
value?: Date;
|
|
26
|
+
className?: string;
|
|
26
27
|
};
|
|
27
28
|
export declare const DatePicker: import("react").ForwardRefExoticComponent<MondayFirst & Partial<MinMaxDate> & {
|
|
28
29
|
/**
|
|
@@ -36,11 +37,12 @@ export declare const DatePicker: import("react").ForwardRefExoticComponent<Monda
|
|
|
36
37
|
onChange?: ((date?: Date) => void) | undefined;
|
|
37
38
|
onBlur?: (() => void) | undefined;
|
|
38
39
|
onOpen?: (() => void) | undefined;
|
|
39
|
-
onClose?: ((event?: SyntheticEvent<Element, Event> | Event, reason?:
|
|
40
|
+
onClose?: ((event?: SyntheticEvent<Element, Event> | Event, reason?: CloseEventReason) => void) | undefined;
|
|
40
41
|
inputProps?: Omit<TextFieldProps, "ref" | "value" | "onChange"> | undefined;
|
|
41
42
|
disabled?: boolean | undefined;
|
|
42
43
|
/**
|
|
43
44
|
* @description Принимает только Date object, включая невалидную дату Invalid date
|
|
44
45
|
* */
|
|
45
46
|
value?: Date | undefined;
|
|
47
|
+
className?: string | undefined;
|
|
46
48
|
} & import("react").RefAttributes<HTMLInputElement>>;
|
|
@@ -12,13 +12,13 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
12
12
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
13
13
|
import { forwardRef, useContext } from 'react';
|
|
14
14
|
import { useForwardedRef, useToggle } from '../hooks';
|
|
15
|
-
import {
|
|
15
|
+
import { ClickAwayListener } from '../ClickAwayListener';
|
|
16
16
|
import { DatePickerInput } from './DatePickerInput';
|
|
17
17
|
import { DatePickerPopper } from './DatePickerPopper';
|
|
18
18
|
import { MinMaxDateContext, MinMaxDateContextProvider, } from './MinMaxDateContext';
|
|
19
19
|
import { YearMonthDayPicker } from './YearMonthDayPicker';
|
|
20
20
|
import { useBaseDateInRange, useMaskedValue, useSelectedBaseDate, } from './hooks';
|
|
21
|
-
const DatePickerInner = forwardRef(({ onChange, onOpen, onBlur, onClose, mask = 'DD.MM.YYYY', isMondayFirst, inputProps, disabled, value, }, forwardedRef) => {
|
|
21
|
+
const DatePickerInner = forwardRef(({ onChange, onOpen, onBlur, onClose, mask = 'DD.MM.YYYY', isMondayFirst, inputProps, disabled, value, className, }, forwardedRef) => {
|
|
22
22
|
const { maxDate, minDate } = useContext(MinMaxDateContext);
|
|
23
23
|
const ref = useForwardedRef(forwardedRef);
|
|
24
24
|
const [isOpenPopper, openPopper, closePopper] = useToggle({
|
|
@@ -44,7 +44,7 @@ const DatePickerInner = forwardRef(({ onChange, onOpen, onBlur, onClose, mask =
|
|
|
44
44
|
const handleChangeMaskInput = (e) => {
|
|
45
45
|
onChangeMaskedValue(e.target.value);
|
|
46
46
|
};
|
|
47
|
-
return (
|
|
47
|
+
return (_jsx(ClickAwayListener, Object.assign({ isActive: isOpenPopper, onClickAway: handleClosePopper }, { children: _jsxs("div", Object.assign({ className: className }, { children: [_jsx(DatePickerInput, Object.assign({}, inputProps, { mask: mask, onNativeChange: handleChangeMaskInput, disabled: disabled, value: maskedValue, ref: ref, onFocus: openPopper })), _jsx(DatePickerPopper, Object.assign({ open: isOpenPopper, onClose: handleClosePopper, anchorEl: ref === null || ref === void 0 ? void 0 : ref.current }, { children: _jsx(YearMonthDayPicker, { isMondayFirst: isMondayFirst, selectedDate: selectedBaseDate, onChange: handleDayPick, date: selectedBaseDate || baseDate }) }))] })) })));
|
|
48
48
|
});
|
|
49
49
|
export const DatePicker = forwardRef((_a, forwardedRef) => {
|
|
50
50
|
var { minDate, maxDate } = _a, props = __rest(_a, ["minDate", "maxDate"]);
|
|
@@ -87,4 +87,10 @@ describe('DatePicker', () => {
|
|
|
87
87
|
yield userEvents.tab();
|
|
88
88
|
expect(onBlur).not.toBeCalled();
|
|
89
89
|
}));
|
|
90
|
+
it('Props:onBlur: не вызывается при клике мимо инпута, если поповер закрыт', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
91
|
+
const onBlur = vi.fn();
|
|
92
|
+
renderWithTheme(_jsx(DatePicker, { onBlur: onBlur }));
|
|
93
|
+
yield userEvents.click(document.body);
|
|
94
|
+
expect(onBlur).not.toBeCalled();
|
|
95
|
+
}));
|
|
90
96
|
});
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { PropsWithChildren, SyntheticEvent } from 'react';
|
|
2
2
|
import { PopperProps } from '@mui/material';
|
|
3
|
-
import {
|
|
3
|
+
import { CloseEventReason, WithoutEmotionSpecific } from '../../types';
|
|
4
4
|
export type DatePickerProps = PropsWithChildren<Omit<WithoutEmotionSpecific<PopperProps>, 'children'>> & {
|
|
5
|
-
onClose?: (_?: SyntheticEvent<Element, Event> | Event, reason?:
|
|
5
|
+
onClose?: (_?: SyntheticEvent<Element, Event> | Event, reason?: CloseEventReason) => void;
|
|
6
6
|
};
|
|
7
7
|
export declare const DatePickerPopper: ({ children, onClose, ...props }: DatePickerProps) => JSX.Element;
|
package/esm/Fab/styles.d.ts
CHANGED
|
@@ -30,7 +30,7 @@ export declare const StyledFab: import("@emotion/styled").StyledComponent<{
|
|
|
30
30
|
ref?: ((instance: HTMLButtonElement | null) => void) | import("react").RefObject<HTMLButtonElement> | null | undefined;
|
|
31
31
|
}, "disabled" | "action" | "color" | "sx" | "href" | "onFocusVisible" | "tabIndex" | "children" | "variant" | "size" | keyof import("@mui/material/OverridableComponent").CommonProps | "centerRipple" | "disableRipple" | "disableTouchRipple" | "focusRipple" | "focusVisibleClassName" | "LinkComponent" | "TouchRippleProps" | "touchRippleRef" | "disableFocusRipple"> & {
|
|
32
32
|
theme?: import("@emotion/react").Theme | undefined;
|
|
33
|
-
} & Omit<import("
|
|
33
|
+
} & Omit<import("..").WithoutEmotionSpecific<import("@mui/material").FabProps<"button", {}>>, "color" | "variant"> & {
|
|
34
34
|
color?: "primary" | "default" | "error" | "warning" | "success" | undefined;
|
|
35
35
|
variant?: "square" | "circular" | "extended" | undefined;
|
|
36
36
|
} & {
|
|
@@ -8,7 +8,7 @@ export declare const getButtonSize: ({ size, }: IconButtonWrapperThemeProps) =>
|
|
|
8
8
|
export declare const getButtonSizeMobile: ({ size, }: IconButtonWrapperThemeProps) => string;
|
|
9
9
|
export declare const IconButtonWrapper: import("@emotion/styled").StyledComponent<Pick<import("../ButtonBase").BaseButtonProps, "color" | "translate" | keyof import("@mui/base").ButtonUnstyledOwnProps | "form" | "slot" | "style" | "title" | "key" | "autoFocus" | "formAction" | "formEncType" | "formMethod" | "formNoValidate" | "formTarget" | "name" | "value" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "hidden" | "id" | "lang" | "nonce" | "placeholder" | "spellCheck" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onResize" | "onResizeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "component" | "variant" | "size" | "selected"> & import("react").RefAttributes<HTMLButtonElement> & {
|
|
10
10
|
theme?: import("@emotion/react").Theme | undefined;
|
|
11
|
-
} & Omit<import("
|
|
11
|
+
} & Omit<import("..").WithoutEmotionSpecific<import("@mui/lab").LoadingButtonProps<"button", {}>>, "color" | "variant"> & {
|
|
12
12
|
variant?: "link" | "light" | "text" | "contained" | undefined;
|
|
13
13
|
color?: "primary" | "error" | "warning" | "success" | undefined;
|
|
14
14
|
component?: import("react").ElementType<any> | undefined;
|
|
@@ -40,7 +40,7 @@ export declare const SwipeableDrawerTitle: import("@emotion/styled").StyledCompo
|
|
|
40
40
|
ref?: ((instance: HTMLSpanElement | null) => void) | import("react").RefObject<HTMLSpanElement> | null | undefined;
|
|
41
41
|
}, "sx" | "children" | "variant" | keyof import("@mui/material/OverridableComponent").CommonProps | ("fontSize" | "fontWeight" | "lineHeight" | "fontFamily" | "alignContent" | "alignItems" | "alignSelf" | "bottom" | "boxShadow" | "boxSizing" | "color" | "columnGap" | "display" | "flexBasis" | "flexDirection" | "flexGrow" | "flexShrink" | "flexWrap" | "fontStyle" | "gridAutoColumns" | "gridAutoFlow" | "gridAutoRows" | "gridTemplateAreas" | "gridTemplateColumns" | "gridTemplateRows" | "height" | "justifyContent" | "justifyItems" | "justifySelf" | "left" | "letterSpacing" | "marginBottom" | "marginLeft" | "marginRight" | "marginTop" | "maxHeight" | "maxWidth" | "minHeight" | "minWidth" | "order" | "paddingBottom" | "paddingLeft" | "paddingRight" | "paddingTop" | "position" | "right" | "rowGap" | "textAlign" | "textOverflow" | "textTransform" | "top" | "visibility" | "whiteSpace" | "width" | "zIndex" | "border" | "borderBottom" | "borderColor" | "borderLeft" | "borderRadius" | "borderRight" | "borderTop" | "flex" | "gap" | "gridArea" | "gridColumn" | "gridRow" | "margin" | "overflow" | "padding" | "typography" | "p" | "bgcolor" | "m" | "mt" | "mr" | "mb" | "ml" | "mx" | "marginX" | "my" | "marginY" | "pt" | "pr" | "pb" | "pl" | "px" | "paddingX" | "py" | "paddingY" | "displayPrint") | "align" | "gutterBottom" | "noWrap" | "paragraph" | "variantMapping"> & {
|
|
42
42
|
theme?: import("@emotion/react").Theme | undefined;
|
|
43
|
-
} & Omit<import("@mui/material/OverridableComponent").OverrideProps<import("
|
|
43
|
+
} & Omit<import("@mui/material/OverridableComponent").OverrideProps<import("..").WithoutEmotionSpecific<import("@mui/material").TypographyTypeMap<{}, "span">>, import("react").ElementType<any>>, "color" | "variant"> & {
|
|
44
44
|
variant?: import("@mui/material").TypographyVariant | keyof import("@mui/material").TypographyPropsVariantOverrides | undefined;
|
|
45
45
|
component?: import("react").ElementType<any> | undefined;
|
|
46
46
|
color?: "primary" | "secondary" | "red" | "green" | "yellow" | "grey" | "error" | "warning" | "info" | "success" | "text" | "textSecondary" | ((theme: import("@mui/material").Theme) => string) | undefined;
|
package/esm/Tooltip/styled.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const StyledTooltip: import("@emotion/styled").StyledComponent<import("
|
|
1
|
+
export declare const StyledTooltip: import("@emotion/styled").StyledComponent<import("..").WithoutEmotionSpecific<import("@mui/material").TooltipProps> & {
|
|
2
2
|
size?: "medium" | "small" | undefined;
|
|
3
3
|
} & {
|
|
4
4
|
theme?: import("@emotion/react").Theme | undefined;
|
package/esm/hooks/index.d.ts
CHANGED
package/esm/hooks/index.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './useClickAwayEffect';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './useClickAwayEffect';
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { RefObject } from 'react';
|
|
2
|
+
import { CloseEventReason } from '../../types';
|
|
3
|
+
export type UseClickAwayListenerOptions = {
|
|
4
|
+
/**
|
|
5
|
+
* @description реф на дом ноду, клик вне которой надо отслеживать
|
|
6
|
+
*/
|
|
7
|
+
ref: RefObject<HTMLElement>;
|
|
8
|
+
/**
|
|
9
|
+
* @description колбэк который будет вызываться при нажатии вне рефа
|
|
10
|
+
*/
|
|
11
|
+
onClickAway: (e: PointerEvent, reason: CloseEventReason) => void;
|
|
12
|
+
/**
|
|
13
|
+
* @description флаг активности
|
|
14
|
+
*/
|
|
15
|
+
isActive: boolean;
|
|
16
|
+
/**
|
|
17
|
+
* @description флаг необходимости предотвращать всплытие, подойдет когда используется внутри модалки
|
|
18
|
+
*/
|
|
19
|
+
preventBubbling?: boolean;
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* @description хук позволяющий подписаться на клик вне указанного рефа,
|
|
23
|
+
* подойдет для использования в кастомных попперах
|
|
24
|
+
*/
|
|
25
|
+
export declare const useClickAwayEffect: ({ ref, onClickAway, preventBubbling, isActive, }: UseClickAwayListenerOptions) => void;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { useEffect } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* @description хук позволяющий подписаться на клик вне указанного рефа,
|
|
4
|
+
* подойдет для использования в кастомных попперах
|
|
5
|
+
*/
|
|
6
|
+
export const useClickAwayEffect = ({ ref, onClickAway, preventBubbling, isActive, }) => {
|
|
7
|
+
useEffect(() => {
|
|
8
|
+
const node = ref === null || ref === void 0 ? void 0 : ref.current;
|
|
9
|
+
if (!isActive || !node) {
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
const onClick = (e) => {
|
|
13
|
+
if (!node.contains(e.target)) {
|
|
14
|
+
if (preventBubbling) {
|
|
15
|
+
e.stopPropagation();
|
|
16
|
+
e.stopImmediatePropagation();
|
|
17
|
+
}
|
|
18
|
+
onClickAway(e, 'clickAway');
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
window.addEventListener('pointerdown', onClick);
|
|
22
|
+
return () => {
|
|
23
|
+
window.removeEventListener('pointerdown', onClick);
|
|
24
|
+
};
|
|
25
|
+
}, [isActive, ref]);
|
|
26
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import { renderHook, userEvents } from '@astral/tests';
|
|
11
|
+
import { vi } from 'vitest';
|
|
12
|
+
import { useClickAwayEffect } from './useClickAwayEffect';
|
|
13
|
+
describe('useClickAwayEffect', () => {
|
|
14
|
+
it('Props:isActive=true: при нажатии вне целевого дива вызывается onClickAway', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
15
|
+
const onClickAway = vi.fn();
|
|
16
|
+
const div = document.createElement('div');
|
|
17
|
+
document.body.appendChild(div);
|
|
18
|
+
const ref = { current: div };
|
|
19
|
+
renderHook(() => useClickAwayEffect({ isActive: true, onClickAway: onClickAway, ref }));
|
|
20
|
+
yield userEvents.click(document.body);
|
|
21
|
+
expect(onClickAway).toBeCalled();
|
|
22
|
+
}));
|
|
23
|
+
it('Props:isActive=true: при нажатии внутри целевого дива не вызывается onClickAway', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
24
|
+
const onClickAway = vi.fn();
|
|
25
|
+
const div = document.createElement('div');
|
|
26
|
+
document.body.appendChild(div);
|
|
27
|
+
const ref = { current: div };
|
|
28
|
+
renderHook(() => useClickAwayEffect({ isActive: true, onClickAway: onClickAway, ref }));
|
|
29
|
+
yield userEvents.click(div);
|
|
30
|
+
expect(onClickAway).toBeCalledTimes(0);
|
|
31
|
+
}));
|
|
32
|
+
it('Props:isActive=false: при нажатии куда угодно не вызывается onClickAway', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
33
|
+
const onClickAway = vi.fn();
|
|
34
|
+
const div = document.createElement('div');
|
|
35
|
+
document.body.appendChild(div);
|
|
36
|
+
const ref = { current: div };
|
|
37
|
+
renderHook(() => useClickAwayEffect({ isActive: false, onClickAway: onClickAway, ref }));
|
|
38
|
+
yield userEvents.click(document.body);
|
|
39
|
+
yield userEvents.click(div);
|
|
40
|
+
expect(onClickAway).toBeCalledTimes(0);
|
|
41
|
+
}));
|
|
42
|
+
});
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CloseEventReason } from '../../types';
|
|
2
2
|
export type UseEscapeClickEffectProps = {
|
|
3
3
|
/**
|
|
4
4
|
* @description колбэк который будет вызываться при нажатии на кнопку `esc`
|
|
5
5
|
*/
|
|
6
|
-
onEscape?: (event: Event, reason:
|
|
6
|
+
onEscape?: (event: Event, reason: CloseEventReason) => void;
|
|
7
7
|
/**
|
|
8
8
|
* @description флаг активности
|
|
9
9
|
*/
|
package/esm/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export * from './ActionCell';
|
|
2
2
|
export * from './Alert';
|
|
3
3
|
export * from './Autocomplete';
|
|
4
|
+
export * from './ClickAwayListener';
|
|
4
5
|
export * from './BackdropStack';
|
|
5
6
|
export * from './Badge';
|
|
6
7
|
export * from './Button';
|
|
@@ -34,6 +35,7 @@ export * from './Grow';
|
|
|
34
35
|
export * from './IconButton';
|
|
35
36
|
export * from './IconDropdownButton';
|
|
36
37
|
export * from './hooks';
|
|
38
|
+
export * from './types';
|
|
37
39
|
export * from './List';
|
|
38
40
|
export * from './ListItem';
|
|
39
41
|
export * from './ListItemAvatar';
|
package/esm/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export * from './ActionCell';
|
|
2
2
|
export * from './Alert';
|
|
3
3
|
export * from './Autocomplete';
|
|
4
|
+
export * from './ClickAwayListener';
|
|
4
5
|
export * from './BackdropStack';
|
|
5
6
|
export * from './Badge';
|
|
6
7
|
export * from './Button';
|
|
@@ -34,6 +35,7 @@ export * from './Grow';
|
|
|
34
35
|
export * from './IconButton';
|
|
35
36
|
export * from './IconDropdownButton';
|
|
36
37
|
export * from './hooks';
|
|
38
|
+
export * from './types';
|
|
37
39
|
export * from './List';
|
|
38
40
|
export * from './ListItem';
|
|
39
41
|
export * from './ListItemAvatar';
|
package/esm/types.d.ts
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
1
|
import { AutocompleteCloseReason } from '@mui/base/AutocompleteUnstyled/useAutocomplete';
|
|
2
2
|
export type WithoutEmotionSpecific<Props> = Omit<Props, 'sx' | 'css'>;
|
|
3
|
-
|
|
3
|
+
/**
|
|
4
|
+
* @description список возможных причин закрытия попперов, модалок, тултипов,
|
|
5
|
+
* является абстрактным способом связать сущности всплывашек с BackdropStackManager
|
|
6
|
+
*/
|
|
7
|
+
export type CloseEventReason = 'escapeKeyDown' | 'backdropClick' | 'clickAway' | 'toggleInput' | 'blur' | AutocompleteCloseReason | null;
|
package/hooks/index.d.ts
CHANGED
package/hooks/index.js
CHANGED
|
@@ -19,3 +19,5 @@ __exportStar(require("./useMenu"), exports);
|
|
|
19
19
|
__exportStar(require("./useToggle"), exports);
|
|
20
20
|
__exportStar(require("./useForwardedRef"), exports);
|
|
21
21
|
__exportStar(require("./useRadioGroup"), exports);
|
|
22
|
+
__exportStar(require("./useEscapeClickEffect"), exports);
|
|
23
|
+
__exportStar(require("./useClickAwayEffect"), exports);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './useClickAwayEffect';
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./useClickAwayEffect"), exports);
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { RefObject } from 'react';
|
|
2
|
+
import { CloseEventReason } from '../../types';
|
|
3
|
+
export type UseClickAwayListenerOptions = {
|
|
4
|
+
/**
|
|
5
|
+
* @description реф на дом ноду, клик вне которой надо отслеживать
|
|
6
|
+
*/
|
|
7
|
+
ref: RefObject<HTMLElement>;
|
|
8
|
+
/**
|
|
9
|
+
* @description колбэк который будет вызываться при нажатии вне рефа
|
|
10
|
+
*/
|
|
11
|
+
onClickAway: (e: PointerEvent, reason: CloseEventReason) => void;
|
|
12
|
+
/**
|
|
13
|
+
* @description флаг активности
|
|
14
|
+
*/
|
|
15
|
+
isActive: boolean;
|
|
16
|
+
/**
|
|
17
|
+
* @description флаг необходимости предотвращать всплытие, подойдет когда используется внутри модалки
|
|
18
|
+
*/
|
|
19
|
+
preventBubbling?: boolean;
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* @description хук позволяющий подписаться на клик вне указанного рефа,
|
|
23
|
+
* подойдет для использования в кастомных попперах
|
|
24
|
+
*/
|
|
25
|
+
export declare const useClickAwayEffect: ({ ref, onClickAway, preventBubbling, isActive, }: UseClickAwayListenerOptions) => void;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useClickAwayEffect = void 0;
|
|
4
|
+
const react_1 = require("react");
|
|
5
|
+
/**
|
|
6
|
+
* @description хук позволяющий подписаться на клик вне указанного рефа,
|
|
7
|
+
* подойдет для использования в кастомных попперах
|
|
8
|
+
*/
|
|
9
|
+
const useClickAwayEffect = ({ ref, onClickAway, preventBubbling, isActive, }) => {
|
|
10
|
+
(0, react_1.useEffect)(() => {
|
|
11
|
+
const node = ref === null || ref === void 0 ? void 0 : ref.current;
|
|
12
|
+
if (!isActive || !node) {
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
const onClick = (e) => {
|
|
16
|
+
if (!node.contains(e.target)) {
|
|
17
|
+
if (preventBubbling) {
|
|
18
|
+
e.stopPropagation();
|
|
19
|
+
e.stopImmediatePropagation();
|
|
20
|
+
}
|
|
21
|
+
onClickAway(e, 'clickAway');
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
window.addEventListener('pointerdown', onClick);
|
|
25
|
+
return () => {
|
|
26
|
+
window.removeEventListener('pointerdown', onClick);
|
|
27
|
+
};
|
|
28
|
+
}, [isActive, ref]);
|
|
29
|
+
};
|
|
30
|
+
exports.useClickAwayEffect = useClickAwayEffect;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
const tests_1 = require("@astral/tests");
|
|
13
|
+
const vitest_1 = require("vitest");
|
|
14
|
+
const useClickAwayEffect_1 = require("./useClickAwayEffect");
|
|
15
|
+
describe('useClickAwayEffect', () => {
|
|
16
|
+
it('Props:isActive=true: при нажатии вне целевого дива вызывается onClickAway', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
17
|
+
const onClickAway = vitest_1.vi.fn();
|
|
18
|
+
const div = document.createElement('div');
|
|
19
|
+
document.body.appendChild(div);
|
|
20
|
+
const ref = { current: div };
|
|
21
|
+
(0, tests_1.renderHook)(() => (0, useClickAwayEffect_1.useClickAwayEffect)({ isActive: true, onClickAway: onClickAway, ref }));
|
|
22
|
+
yield tests_1.userEvents.click(document.body);
|
|
23
|
+
expect(onClickAway).toBeCalled();
|
|
24
|
+
}));
|
|
25
|
+
it('Props:isActive=true: при нажатии внутри целевого дива не вызывается onClickAway', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
26
|
+
const onClickAway = vitest_1.vi.fn();
|
|
27
|
+
const div = document.createElement('div');
|
|
28
|
+
document.body.appendChild(div);
|
|
29
|
+
const ref = { current: div };
|
|
30
|
+
(0, tests_1.renderHook)(() => (0, useClickAwayEffect_1.useClickAwayEffect)({ isActive: true, onClickAway: onClickAway, ref }));
|
|
31
|
+
yield tests_1.userEvents.click(div);
|
|
32
|
+
expect(onClickAway).toBeCalledTimes(0);
|
|
33
|
+
}));
|
|
34
|
+
it('Props:isActive=false: при нажатии куда угодно не вызывается onClickAway', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
35
|
+
const onClickAway = vitest_1.vi.fn();
|
|
36
|
+
const div = document.createElement('div');
|
|
37
|
+
document.body.appendChild(div);
|
|
38
|
+
const ref = { current: div };
|
|
39
|
+
(0, tests_1.renderHook)(() => (0, useClickAwayEffect_1.useClickAwayEffect)({ isActive: false, onClickAway: onClickAway, ref }));
|
|
40
|
+
yield tests_1.userEvents.click(document.body);
|
|
41
|
+
yield tests_1.userEvents.click(div);
|
|
42
|
+
expect(onClickAway).toBeCalledTimes(0);
|
|
43
|
+
}));
|
|
44
|
+
});
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CloseEventReason } from '../../types';
|
|
2
2
|
export type UseEscapeClickEffectProps = {
|
|
3
3
|
/**
|
|
4
4
|
* @description колбэк который будет вызываться при нажатии на кнопку `esc`
|
|
5
5
|
*/
|
|
6
|
-
onEscape?: (event: Event, reason:
|
|
6
|
+
onEscape?: (event: Event, reason: CloseEventReason) => void;
|
|
7
7
|
/**
|
|
8
8
|
* @description флаг активности
|
|
9
9
|
*/
|
package/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export * from './ActionCell';
|
|
2
2
|
export * from './Alert';
|
|
3
3
|
export * from './Autocomplete';
|
|
4
|
+
export * from './ClickAwayListener';
|
|
4
5
|
export * from './BackdropStack';
|
|
5
6
|
export * from './Badge';
|
|
6
7
|
export * from './Button';
|
|
@@ -34,6 +35,7 @@ export * from './Grow';
|
|
|
34
35
|
export * from './IconButton';
|
|
35
36
|
export * from './IconDropdownButton';
|
|
36
37
|
export * from './hooks';
|
|
38
|
+
export * from './types';
|
|
37
39
|
export * from './List';
|
|
38
40
|
export * from './ListItem';
|
|
39
41
|
export * from './ListItemAvatar';
|
package/index.js
CHANGED
|
@@ -17,6 +17,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
17
17
|
__exportStar(require("./ActionCell"), exports);
|
|
18
18
|
__exportStar(require("./Alert"), exports);
|
|
19
19
|
__exportStar(require("./Autocomplete"), exports);
|
|
20
|
+
__exportStar(require("./ClickAwayListener"), exports);
|
|
20
21
|
__exportStar(require("./BackdropStack"), exports);
|
|
21
22
|
__exportStar(require("./Badge"), exports);
|
|
22
23
|
__exportStar(require("./Button"), exports);
|
|
@@ -50,6 +51,7 @@ __exportStar(require("./Grow"), exports);
|
|
|
50
51
|
__exportStar(require("./IconButton"), exports);
|
|
51
52
|
__exportStar(require("./IconDropdownButton"), exports);
|
|
52
53
|
__exportStar(require("./hooks"), exports);
|
|
54
|
+
__exportStar(require("./types"), exports);
|
|
53
55
|
__exportStar(require("./List"), exports);
|
|
54
56
|
__exportStar(require("./ListItem"), exports);
|
|
55
57
|
__exportStar(require("./ListItemAvatar"), exports);
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@astral/ui",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.51.1",
|
|
4
4
|
"browser": "./esm/index.js",
|
|
5
5
|
"main": "./index.js",
|
|
6
6
|
"dependencies": {
|
|
7
|
-
"@astral/icons": "^1.
|
|
7
|
+
"@astral/icons": "^1.51.1",
|
|
8
8
|
"@emotion/cache": "11.7.1",
|
|
9
9
|
"@emotion/react": "11.9.0",
|
|
10
10
|
"@emotion/server": "11.4.0",
|
package/types.d.ts
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
1
|
import { AutocompleteCloseReason } from '@mui/base/AutocompleteUnstyled/useAutocomplete';
|
|
2
2
|
export type WithoutEmotionSpecific<Props> = Omit<Props, 'sx' | 'css'>;
|
|
3
|
-
|
|
3
|
+
/**
|
|
4
|
+
* @description список возможных причин закрытия попперов, модалок, тултипов,
|
|
5
|
+
* является абстрактным способом связать сущности всплывашек с BackdropStackManager
|
|
6
|
+
*/
|
|
7
|
+
export type CloseEventReason = 'escapeKeyDown' | 'backdropClick' | 'clickAway' | 'toggleInput' | 'blur' | AutocompleteCloseReason | null;
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { PropsWithChildren } from 'react';
|
|
2
|
-
type DatePickerClickAwayListenerProps = {
|
|
3
|
-
onClickAway: () => void;
|
|
4
|
-
};
|
|
5
|
-
export declare const DatePickerClickAwayListener: ({ onClickAway, children, }: PropsWithChildren<DatePickerClickAwayListenerProps>) => JSX.Element;
|
|
6
|
-
export {};
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DatePickerClickAwayListener = void 0;
|
|
4
|
-
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
-
const material_1 = require("@mui/material");
|
|
6
|
-
const DatePickerClickAwayListener = ({ onClickAway, children, }) => ((0, jsx_runtime_1.jsx)(material_1.ClickAwayListener, Object.assign({ onClickAway: onClickAway }, { children: (0, jsx_runtime_1.jsx)("div", { children: children }) })));
|
|
7
|
-
exports.DatePickerClickAwayListener = DatePickerClickAwayListener;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './DatePickerClickAwayListener';
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { PropsWithChildren } from 'react';
|
|
2
|
-
type DatePickerClickAwayListenerProps = {
|
|
3
|
-
onClickAway: () => void;
|
|
4
|
-
};
|
|
5
|
-
export declare const DatePickerClickAwayListener: ({ onClickAway, children, }: PropsWithChildren<DatePickerClickAwayListenerProps>) => JSX.Element;
|
|
6
|
-
export {};
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { ClickAwayListener } from '@mui/material';
|
|
3
|
-
export const DatePickerClickAwayListener = ({ onClickAway, children, }) => (_jsx(ClickAwayListener, Object.assign({ onClickAway: onClickAway }, { children: _jsx("div", { children: children }) })));
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './DatePickerClickAwayListener';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './DatePickerClickAwayListener';
|