@vkontakte/vkui 7.0.0-dev-efd91c.4 → 7.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/ActionSheet/ActionSheet.d.ts.map +1 -1
- package/dist/components/ActionSheet/ActionSheet.js +1 -3
- package/dist/components/ActionSheet/ActionSheet.js.map +1 -1
- package/dist/components/AppRoot/AppRoot.d.ts +1 -1
- package/dist/components/AppRoot/AppRoot.d.ts.map +1 -1
- package/dist/components/AppRoot/AppRoot.js +16 -10
- package/dist/components/AppRoot/AppRoot.js.map +1 -1
- package/dist/components/AppRoot/AppRootPortal.js +1 -1
- package/dist/components/AppRoot/AppRootPortal.js.map +1 -1
- package/dist/components/AppRoot/{AppRootStyleContainer.d.ts → AppRootStyleContainer/AppRootStyleContainer.d.ts} +3 -3
- package/dist/components/AppRoot/AppRootStyleContainer/AppRootStyleContainer.d.ts.map +1 -0
- package/dist/components/AppRoot/AppRootStyleContainer/AppRootStyleContainer.js +45 -0
- package/dist/components/AppRoot/AppRootStyleContainer/AppRootStyleContainer.js.map +1 -0
- package/dist/components/AppRoot/helpers.d.ts +7 -0
- package/dist/components/AppRoot/helpers.d.ts.map +1 -1
- package/dist/components/AppRoot/helpers.js +20 -4
- package/dist/components/AppRoot/helpers.js.map +1 -1
- package/dist/components/Clickable/Clickable.d.ts.map +1 -1
- package/dist/components/Clickable/Clickable.js +2 -83
- package/dist/components/Clickable/Clickable.js.map +1 -1
- package/dist/components/Clickable/RealClickable.d.ts +6 -0
- package/dist/components/Clickable/RealClickable.d.ts.map +1 -0
- package/dist/components/Clickable/RealClickable.js +90 -0
- package/dist/components/Clickable/RealClickable.js.map +1 -0
- package/dist/components/HorizontalCell/HorizontalCell.d.ts +4 -0
- package/dist/components/HorizontalCell/HorizontalCell.d.ts.map +1 -1
- package/dist/components/HorizontalCell/HorizontalCell.js.map +1 -1
- package/dist/components/ModalCard/ModalCardInternal.js +1 -1
- package/dist/components/ModalCard/ModalCardInternal.js.map +1 -1
- package/dist/components/ModalPage/ModalPage.d.ts +1 -1
- package/dist/components/ModalPage/ModalPage.d.ts.map +1 -1
- package/dist/components/ModalPage/ModalPage.js +53 -5
- package/dist/components/ModalPage/ModalPage.js.map +1 -1
- package/dist/components/ModalPage/ModalPageInternal.d.ts +5 -2
- package/dist/components/ModalPage/ModalPageInternal.d.ts.map +1 -1
- package/dist/components/ModalPage/ModalPageInternal.js +5 -4
- package/dist/components/ModalPage/ModalPageInternal.js.map +1 -1
- package/dist/components/ModalRoot/ModalRoot.d.ts.map +1 -1
- package/dist/components/ModalRoot/ModalRoot.js.map +1 -1
- package/dist/components/ModalRoot/types.d.ts.map +1 -1
- package/dist/components/ModalRoot/types.js.map +1 -1
- package/dist/components/ModalRoot/useModalManager.d.ts +2 -0
- package/dist/components/ModalRoot/useModalManager.d.ts.map +1 -1
- package/dist/components/ModalRoot/useModalManager.js +4 -1
- package/dist/components/ModalRoot/useModalManager.js.map +1 -1
- package/dist/components/PanelHeaderButton/PanelHeaderButton.js.map +1 -1
- package/dist/components/PopoutWrapper/PopoutWrapper.d.ts.map +1 -1
- package/dist/components/PopoutWrapper/PopoutWrapper.js +2 -2
- package/dist/components/PopoutWrapper/PopoutWrapper.js.map +1 -1
- package/dist/components/Spinner/Spinner.d.ts.map +1 -1
- package/dist/components/Spinner/Spinner.js +11 -43
- package/dist/components/Spinner/Spinner.js.map +1 -1
- package/dist/components/Spinner/SpinnerAnimation.d.ts +7 -0
- package/dist/components/Spinner/SpinnerAnimation.d.ts.map +1 -0
- package/dist/components/Spinner/SpinnerAnimation.js +36 -0
- package/dist/components/Spinner/SpinnerAnimation.js.map +1 -0
- package/dist/components/SplitLayout/SplitLayout.d.ts +4 -4
- package/dist/components/SplitLayout/SplitLayout.js.map +1 -1
- package/dist/components.css +1 -1
- package/dist/components.css.map +1 -1
- package/dist/cssm/components/ActionSheet/ActionSheet.js +1 -3
- package/dist/cssm/components/ActionSheet/ActionSheet.js.map +1 -1
- package/dist/cssm/components/AppRoot/AppRoot.js +14 -9
- package/dist/cssm/components/AppRoot/AppRoot.js.map +1 -1
- package/dist/cssm/components/AppRoot/AppRoot.module.css +17 -0
- package/dist/cssm/components/AppRoot/AppRootPortal.js +1 -1
- package/dist/cssm/components/AppRoot/AppRootPortal.js.map +1 -1
- package/dist/cssm/components/AppRoot/{AppRootStyleContainer.js → AppRootStyleContainer/AppRootStyleContainer.js} +12 -23
- package/dist/cssm/components/AppRoot/AppRootStyleContainer/AppRootStyleContainer.js.map +1 -0
- package/dist/cssm/components/AppRoot/{AppRootStyleContainer.module.css → AppRootStyleContainer/AppRootStyleContainer.module.css} +7 -31
- package/dist/cssm/components/AppRoot/helpers.js +17 -1
- package/dist/cssm/components/AppRoot/helpers.js.map +1 -1
- package/dist/cssm/components/Button/Button.module.css +6 -6
- package/dist/cssm/components/Card/Card.module.css +12 -6
- package/dist/cssm/components/Clickable/Clickable.js +2 -55
- package/dist/cssm/components/Clickable/Clickable.js.map +1 -1
- package/dist/cssm/components/Clickable/RealClickable.js +61 -0
- package/dist/cssm/components/Clickable/RealClickable.js.map +1 -0
- package/dist/cssm/components/FormField/FormField.module.css +2 -0
- package/dist/cssm/components/FormItem/FormItem.module.css +6 -6
- package/dist/cssm/components/Group/Group.module.css +1 -0
- package/dist/cssm/components/Header/Header.module.css +10 -4
- package/dist/cssm/components/HorizontalCell/HorizontalCell.js.map +1 -1
- package/dist/cssm/components/HorizontalScroll/HorizontalScroll.module.css +1 -0
- package/dist/cssm/components/IconButton/IconButton.module.css +12 -3
- package/dist/cssm/components/MiniInfoCell/MiniInfoCell.module.css +1 -0
- package/dist/cssm/components/ModalCard/ModalCardInternal.js +1 -1
- package/dist/cssm/components/ModalCard/ModalCardInternal.js.map +1 -1
- package/dist/cssm/components/ModalPage/ModalPage.js +50 -4
- package/dist/cssm/components/ModalPage/ModalPage.js.map +1 -1
- package/dist/cssm/components/ModalPage/ModalPageInternal.js +3 -2
- package/dist/cssm/components/ModalPage/ModalPageInternal.js.map +1 -1
- package/dist/cssm/components/ModalPageHeader/ModalPageHeader.module.css +1 -0
- package/dist/cssm/components/ModalRoot/ModalRoot.js.map +1 -1
- package/dist/cssm/components/ModalRoot/types.js.map +1 -1
- package/dist/cssm/components/ModalRoot/useModalManager.js +4 -1
- package/dist/cssm/components/ModalRoot/useModalManager.js.map +1 -1
- package/dist/cssm/components/PanelHeader/PanelHeader.module.css +10 -4
- package/dist/cssm/components/PanelHeaderButton/PanelHeaderButton.js.map +1 -1
- package/dist/cssm/components/PanelHeaderButton/PanelHeaderButton.module.css +4 -0
- package/dist/cssm/components/PopoutWrapper/PopoutWrapper.js +2 -3
- package/dist/cssm/components/PopoutWrapper/PopoutWrapper.js.map +1 -1
- package/dist/cssm/components/Removable/Removable.module.css +7 -2
- package/dist/cssm/components/Spinner/Spinner.js +11 -43
- package/dist/cssm/components/Spinner/Spinner.js.map +1 -1
- package/dist/cssm/components/Spinner/SpinnerAnimation.js +36 -0
- package/dist/cssm/components/Spinner/SpinnerAnimation.js.map +1 -0
- package/dist/cssm/components/SplitLayout/SplitLayout.js.map +1 -1
- package/dist/cssm/components/View/View.module.css +2 -2
- package/dist/cssm/hooks/useSyncHTMLWithBaseVKUIClasses.js +15 -4
- package/dist/cssm/hooks/useSyncHTMLWithBaseVKUIClasses.js.map +1 -1
- package/dist/cssm/index.js.map +1 -1
- package/dist/cssm/lib/adaptivity/functions.js +1 -7
- package/dist/cssm/lib/adaptivity/functions.js.map +1 -1
- package/dist/cssm/lib/animation/useReducedMotion.js +4 -7
- package/dist/cssm/lib/animation/useReducedMotion.js.map +1 -1
- package/dist/cssm/lib/sheet/controllers/BottomSheetController.js +22 -37
- package/dist/cssm/lib/sheet/controllers/BottomSheetController.js.map +1 -1
- package/dist/cssm/lib/sheet/controllers/CSSTransitionController.js +1 -9
- package/dist/cssm/lib/sheet/controllers/CSSTransitionController.js.map +1 -1
- package/dist/cssm/lib/sheet/index.js +1 -1
- package/dist/cssm/lib/sheet/index.js.map +1 -1
- package/dist/cssm/lib/sheet/useBottomSheet.js +12 -15
- package/dist/cssm/lib/sheet/useBottomSheet.js.map +1 -1
- package/dist/cssm/styles/common.css +10 -4
- package/dist/hooks/useSyncHTMLWithBaseVKUIClasses.d.ts +3 -2
- package/dist/hooks/useSyncHTMLWithBaseVKUIClasses.d.ts.map +1 -1
- package/dist/hooks/useSyncHTMLWithBaseVKUIClasses.js +15 -4
- package/dist/hooks/useSyncHTMLWithBaseVKUIClasses.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/adaptivity/functions.d.ts +0 -1
- package/dist/lib/adaptivity/functions.d.ts.map +1 -1
- package/dist/lib/adaptivity/functions.js +1 -7
- package/dist/lib/adaptivity/functions.js.map +1 -1
- package/dist/lib/animation/useReducedMotion.d.ts +1 -1
- package/dist/lib/animation/useReducedMotion.d.ts.map +1 -1
- package/dist/lib/animation/useReducedMotion.js +4 -7
- package/dist/lib/animation/useReducedMotion.js.map +1 -1
- package/dist/lib/sheet/controllers/BottomSheetController.d.ts +8 -8
- package/dist/lib/sheet/controllers/BottomSheetController.d.ts.map +1 -1
- package/dist/lib/sheet/controllers/BottomSheetController.js +22 -37
- package/dist/lib/sheet/controllers/BottomSheetController.js.map +1 -1
- package/dist/lib/sheet/controllers/CSSTransitionController.d.ts +1 -1
- package/dist/lib/sheet/controllers/CSSTransitionController.d.ts.map +1 -1
- package/dist/lib/sheet/controllers/CSSTransitionController.js +1 -9
- package/dist/lib/sheet/controllers/CSSTransitionController.js.map +1 -1
- package/dist/lib/sheet/index.d.ts +2 -1
- package/dist/lib/sheet/index.d.ts.map +1 -1
- package/dist/lib/sheet/index.js +1 -1
- package/dist/lib/sheet/index.js.map +1 -1
- package/dist/lib/sheet/useBottomSheet.d.ts +6 -5
- package/dist/lib/sheet/useBottomSheet.d.ts.map +1 -1
- package/dist/lib/sheet/useBottomSheet.js +12 -15
- package/dist/lib/sheet/useBottomSheet.js.map +1 -1
- package/dist/vkui.css +1 -1
- package/dist/vkui.css.map +1 -1
- package/package.json +2 -2
- package/src/components/ActionSheet/ActionSheet.tsx +1 -4
- package/src/components/AppRoot/AppRoot.module.css +17 -0
- package/src/components/AppRoot/AppRoot.tsx +24 -11
- package/src/components/AppRoot/AppRootPortal.tsx +1 -1
- package/src/components/AppRoot/{AppRootStyleContainer.module.css → AppRootStyleContainer/AppRootStyleContainer.module.css} +7 -24
- package/src/components/AppRoot/{AppRootStyleContainer.tsx → AppRootStyleContainer/AppRootStyleContainer.tsx} +11 -29
- package/src/components/AppRoot/helpers.ts +17 -1
- package/src/components/Button/Button.module.css +6 -6
- package/src/components/Card/Card.module.css +8 -6
- package/src/components/Clickable/Clickable.tsx +4 -103
- package/src/components/Clickable/RealClickable.tsx +99 -0
- package/src/components/FormField/FormField.module.css +2 -0
- package/src/components/FormItem/FormItem.module.css +6 -6
- package/src/components/Group/Group.module.css +1 -0
- package/src/components/Header/Header.module.css +8 -4
- package/src/components/HorizontalCell/HorizontalCell.tsx +4 -1
- package/src/components/HorizontalScroll/HorizontalScroll.module.css +1 -0
- package/src/components/IconButton/IconButton.module.css +10 -3
- package/src/components/MiniInfoCell/MiniInfoCell.module.css +1 -0
- package/src/components/ModalCard/ModalCardInternal.tsx +1 -1
- package/src/components/ModalPage/ModalPage.tsx +57 -3
- package/src/components/ModalPage/ModalPageInternal.tsx +14 -5
- package/src/components/ModalPageHeader/ModalPageHeader.module.css +1 -0
- package/src/components/ModalRoot/ModalRoot.tsx +0 -1
- package/src/components/ModalRoot/types.ts +0 -1
- package/src/components/ModalRoot/useModalManager.tsx +5 -3
- package/src/components/PanelHeader/PanelHeader.module.css +8 -4
- package/src/components/PanelHeaderButton/PanelHeaderButton.module.css +4 -0
- package/src/components/PanelHeaderButton/PanelHeaderButton.tsx +1 -1
- package/src/components/PopoutWrapper/PopoutWrapper.tsx +1 -4
- package/src/components/Removable/Removable.module.css +6 -2
- package/src/components/Spinner/Spinner.tsx +10 -48
- package/src/components/Spinner/SpinnerAnimation.tsx +42 -0
- package/src/components/SplitLayout/SplitLayout.tsx +4 -4
- package/src/components/View/View.module.css +2 -2
- package/src/hooks/useSyncHTMLWithBaseVKUIClasses.ts +13 -4
- package/src/index.ts +2 -2
- package/src/lib/adaptivity/functions.ts +1 -8
- package/src/lib/animation/useReducedMotion.ts +6 -13
- package/src/lib/sheet/controllers/BottomSheetController.ts +32 -50
- package/src/lib/sheet/controllers/CSSTransitionController.ts +1 -8
- package/src/lib/sheet/index.ts +3 -0
- package/src/lib/sheet/useBottomSheet.ts +21 -17
- package/src/styles/common.css +12 -4
- package/dist/components/AppRoot/AppRootStyleContainer.d.ts.map +0 -1
- package/dist/components/AppRoot/AppRootStyleContainer.js +0 -57
- package/dist/components/AppRoot/AppRootStyleContainer.js.map +0 -1
- package/dist/cssm/components/AppRoot/AppRootStyleContainer.js.map +0 -1
|
@@ -6,6 +6,7 @@ import { VisuallyHiddenModalOverlay } from "./VisuallyHiddenModalOverlay/Visuall
|
|
|
6
6
|
export const useModalManager = ({ id, open, keepMounted, modalOverlayTestId, noFocusToDialog, onOpen, onOpened, onClose, onClosed })=>{
|
|
7
7
|
const context = useContext(ModalRootContext);
|
|
8
8
|
const opened = context.isInsideModal ? context.activeModal === id : open;
|
|
9
|
+
const shouldPreserveSnapPoint = context.isInsideModal ? context.activeModal !== null : false;
|
|
9
10
|
const [unmounted, setUnmounted] = useState(keepMounted ? false : !opened);
|
|
10
11
|
useIsomorphicLayoutEffect(function unsetUnmounted() {
|
|
11
12
|
if (!keepMounted && opened) {
|
|
@@ -17,12 +18,14 @@ export const useModalManager = ({ id, open, keepMounted, modalOverlayTestId, noF
|
|
|
17
18
|
]);
|
|
18
19
|
if (unmounted) {
|
|
19
20
|
return {
|
|
20
|
-
mounted: false
|
|
21
|
+
mounted: false,
|
|
22
|
+
shouldPreserveSnapPoint
|
|
21
23
|
};
|
|
22
24
|
}
|
|
23
25
|
return {
|
|
24
26
|
mounted: true,
|
|
25
27
|
open: opened,
|
|
28
|
+
shouldPreserveSnapPoint,
|
|
26
29
|
noFocusToDialog: noFocusToDialog || context.noFocusToDialog,
|
|
27
30
|
modalOverlayTestId: modalOverlayTestId || context.modalOverlayTestId,
|
|
28
31
|
ModalOverlay: context.isInsideModal ? VisuallyHiddenModalOverlay : ModalOverlay,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/ModalRoot/useModalManager.tsx"],"sourcesContent":["import { useContext, useState } from 'react';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport type { AnyFunction } from '../../types';\nimport { ModalOverlay, type ModalOverlayProps } from '../ModalOverlay/ModalOverlay';\nimport { ModalRootContext } from './ModalRootContext';\nimport { VisuallyHiddenModalOverlay } from './VisuallyHiddenModalOverlay/VisuallyHiddenModalOverlay';\nimport type { ModalRootCallbackFunction } from './types';\n\nexport interface UseModalManager {\n id: string;\n open: boolean;\n keepMounted: boolean;\n modalOverlayTestId?: string;\n noFocusToDialog?: boolean;\n onOpen?: AnyFunction;\n onOpened?: AnyFunction;\n onClose?: AnyFunction;\n onClosed?: AnyFunction;\n}\n\nexport interface UseModalManagerResolvedProps {\n open: boolean;\n noFocusToDialog?: boolean;\n modalOverlayTestId?: string;\n ModalOverlay: React.ComponentType<ModalOverlayProps>;\n onOpen?: AnyFunction;\n onOpened?: AnyFunction;\n onClose?: AnyFunction;\n onClosed?: AnyFunction;\n}\n\nexport type UseModalManagerResult =\n | { mounted: false }\n | ({ mounted: true } & UseModalManagerResolvedProps);\n\nexport const useModalManager = ({\n id,\n open,\n keepMounted,\n modalOverlayTestId,\n noFocusToDialog,\n onOpen,\n onOpened,\n onClose,\n onClosed,\n}: UseModalManager): UseModalManagerResult => {\n const context = useContext(ModalRootContext);\n const opened = context.isInsideModal ? context.activeModal === id : open;\n\n const [unmounted, setUnmounted] = useState(keepMounted ? false : !opened);\n\n useIsomorphicLayoutEffect(\n function unsetUnmounted() {\n if (!keepMounted && opened) {\n setUnmounted((prev) => (prev ? false : prev));\n }\n },\n [opened, keepMounted],\n );\n\n if (unmounted) {\n return { mounted: false };\n }\n\n return {\n mounted: true,\n open: opened,\n noFocusToDialog: noFocusToDialog || context.noFocusToDialog,\n modalOverlayTestId: modalOverlayTestId || context.modalOverlayTestId,\n ModalOverlay: context.isInsideModal ? VisuallyHiddenModalOverlay : ModalOverlay,\n onOpen: onOpen || getContextCallback(id, context.onOpen),\n onOpened: onOpened || getContextCallback(id, context.onOpened),\n onClose: onClose || getContextCallback(id, context.onClose),\n onClosed: function handleClosed(...args: any[]) {\n if (!keepMounted) {\n setUnmounted(true);\n }\n\n if (onClosed) {\n onClosed(...args);\n } else {\n context.onClosed?.(id);\n }\n },\n };\n};\n\nfunction getContextCallback(id: string, fn: ModalRootCallbackFunction | undefined) {\n return fn ? () => fn(id) : undefined;\n}\n"],"names":["useContext","useState","useIsomorphicLayoutEffect","ModalOverlay","ModalRootContext","VisuallyHiddenModalOverlay","useModalManager","id","open","keepMounted","modalOverlayTestId","noFocusToDialog","onOpen","onOpened","onClose","onClosed","context","opened","isInsideModal","activeModal","unmounted","setUnmounted","unsetUnmounted","prev","mounted","getContextCallback","handleClosed","args","fn","undefined"],"mappings":"AAAA,SAASA,UAAU,EAAEC,QAAQ,QAAQ,QAAQ;AAC7C,SAASC,yBAAyB,QAAQ,yCAAsC;AAEhF,SAASC,YAAY,QAAgC,kCAA+B;AACpF,SAASC,gBAAgB,QAAQ,wBAAqB;AACtD,SAASC,0BAA0B,QAAQ,6DAA0D;AA8BrG,OAAO,MAAMC,kBAAkB,CAAC,EAC9BC,EAAE,EACFC,IAAI,EACJC,WAAW,EACXC,kBAAkB,EAClBC,eAAe,EACfC,MAAM,EACNC,QAAQ,EACRC,OAAO,EACPC,QAAQ,EACQ;IAChB,MAAMC,UAAUhB,WAAWI;IAC3B,MAAMa,SAASD,QAAQE,aAAa,GAAGF,QAAQG,WAAW,KAAKZ,KAAKC;
|
|
1
|
+
{"version":3,"sources":["../../../src/components/ModalRoot/useModalManager.tsx"],"sourcesContent":["import { useContext, useState } from 'react';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport type { AnyFunction } from '../../types';\nimport { ModalOverlay, type ModalOverlayProps } from '../ModalOverlay/ModalOverlay';\nimport { ModalRootContext } from './ModalRootContext';\nimport { VisuallyHiddenModalOverlay } from './VisuallyHiddenModalOverlay/VisuallyHiddenModalOverlay';\nimport type { ModalRootCallbackFunction } from './types';\n\nexport interface UseModalManager {\n id: string;\n open: boolean;\n keepMounted: boolean;\n modalOverlayTestId?: string;\n noFocusToDialog?: boolean;\n onOpen?: AnyFunction;\n onOpened?: AnyFunction;\n onClose?: AnyFunction;\n onClosed?: AnyFunction;\n}\n\nexport interface UseModalManagerResolvedProps {\n open: boolean;\n noFocusToDialog?: boolean;\n modalOverlayTestId?: string;\n ModalOverlay: React.ComponentType<ModalOverlayProps>;\n onOpen?: AnyFunction;\n onOpened?: AnyFunction;\n onClose?: AnyFunction;\n onClosed?: AnyFunction;\n}\n\nexport type UseModalManagerResult =\n | { mounted: false; shouldPreserveSnapPoint: boolean }\n | ({ mounted: true; shouldPreserveSnapPoint: boolean } & UseModalManagerResolvedProps);\n\nexport const useModalManager = ({\n id,\n open,\n keepMounted,\n modalOverlayTestId,\n noFocusToDialog,\n onOpen,\n onOpened,\n onClose,\n onClosed,\n}: UseModalManager): UseModalManagerResult => {\n const context = useContext(ModalRootContext);\n const opened = context.isInsideModal ? context.activeModal === id : open;\n const shouldPreserveSnapPoint = context.isInsideModal ? context.activeModal !== null : false;\n\n const [unmounted, setUnmounted] = useState(keepMounted ? false : !opened);\n\n useIsomorphicLayoutEffect(\n function unsetUnmounted() {\n if (!keepMounted && opened) {\n setUnmounted((prev) => (prev ? false : prev));\n }\n },\n [opened, keepMounted],\n );\n\n if (unmounted) {\n return { mounted: false, shouldPreserveSnapPoint };\n }\n\n return {\n mounted: true,\n open: opened,\n shouldPreserveSnapPoint,\n noFocusToDialog: noFocusToDialog || context.noFocusToDialog,\n modalOverlayTestId: modalOverlayTestId || context.modalOverlayTestId,\n ModalOverlay: context.isInsideModal ? VisuallyHiddenModalOverlay : ModalOverlay,\n onOpen: onOpen || getContextCallback(id, context.onOpen),\n onOpened: onOpened || getContextCallback(id, context.onOpened),\n onClose: onClose || getContextCallback(id, context.onClose),\n onClosed: function handleClosed(...args: any[]) {\n if (!keepMounted) {\n setUnmounted(true);\n }\n\n if (onClosed) {\n onClosed(...args);\n } else {\n context.onClosed?.(id);\n }\n },\n };\n};\n\nfunction getContextCallback(id: string, fn: ModalRootCallbackFunction | undefined) {\n return fn ? () => fn(id) : undefined;\n}\n"],"names":["useContext","useState","useIsomorphicLayoutEffect","ModalOverlay","ModalRootContext","VisuallyHiddenModalOverlay","useModalManager","id","open","keepMounted","modalOverlayTestId","noFocusToDialog","onOpen","onOpened","onClose","onClosed","context","opened","isInsideModal","activeModal","shouldPreserveSnapPoint","unmounted","setUnmounted","unsetUnmounted","prev","mounted","getContextCallback","handleClosed","args","fn","undefined"],"mappings":"AAAA,SAASA,UAAU,EAAEC,QAAQ,QAAQ,QAAQ;AAC7C,SAASC,yBAAyB,QAAQ,yCAAsC;AAEhF,SAASC,YAAY,QAAgC,kCAA+B;AACpF,SAASC,gBAAgB,QAAQ,wBAAqB;AACtD,SAASC,0BAA0B,QAAQ,6DAA0D;AA8BrG,OAAO,MAAMC,kBAAkB,CAAC,EAC9BC,EAAE,EACFC,IAAI,EACJC,WAAW,EACXC,kBAAkB,EAClBC,eAAe,EACfC,MAAM,EACNC,QAAQ,EACRC,OAAO,EACPC,QAAQ,EACQ;IAChB,MAAMC,UAAUhB,WAAWI;IAC3B,MAAMa,SAASD,QAAQE,aAAa,GAAGF,QAAQG,WAAW,KAAKZ,KAAKC;IACpE,MAAMY,0BAA0BJ,QAAQE,aAAa,GAAGF,QAAQG,WAAW,KAAK,OAAO;IAEvF,MAAM,CAACE,WAAWC,aAAa,GAAGrB,SAASQ,cAAc,QAAQ,CAACQ;IAElEf,0BACE,SAASqB;QACP,IAAI,CAACd,eAAeQ,QAAQ;YAC1BK,aAAa,CAACE,OAAUA,OAAO,QAAQA;QACzC;IACF,GACA;QAACP;QAAQR;KAAY;IAGvB,IAAIY,WAAW;QACb,OAAO;YAAEI,SAAS;YAAOL;QAAwB;IACnD;IAEA,OAAO;QACLK,SAAS;QACTjB,MAAMS;QACNG;QACAT,iBAAiBA,mBAAmBK,QAAQL,eAAe;QAC3DD,oBAAoBA,sBAAsBM,QAAQN,kBAAkB;QACpEP,cAAca,QAAQE,aAAa,GAAGb,6BAA6BF;QACnES,QAAQA,UAAUc,mBAAmBnB,IAAIS,QAAQJ,MAAM;QACvDC,UAAUA,YAAYa,mBAAmBnB,IAAIS,QAAQH,QAAQ;QAC7DC,SAASA,WAAWY,mBAAmBnB,IAAIS,QAAQF,OAAO;QAC1DC,UAAU,SAASY,aAAa,GAAGC,IAAW;YAC5C,IAAI,CAACnB,aAAa;gBAChBa,aAAa;YACf;YAEA,IAAIP,UAAU;gBACZA,YAAYa;YACd,OAAO;oBACLZ;iBAAAA,oBAAAA,QAAQD,QAAQ,cAAhBC,wCAAAA,uBAAAA,SAAmBT;YACrB;QACF;IACF;AACF,EAAE;AAEF,SAASmB,mBAAmBnB,EAAU,EAAEsB,EAAyC;IAC/E,OAAOA,KAAK,IAAMA,GAAGtB,MAAMuB;AAC7B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/PanelHeaderButton/PanelHeaderButton.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { classNames, isPrimitiveReactNode } from '@vkontakte/vkjs';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { hasAccessibleName } from '../../lib/accessibility';\nimport { COMMON_WARNINGS, warnOnce } from '../../lib/warnOnce';\nimport { Tappable, type TappableProps } from '../Tappable/Tappable';\nimport { Text } from '../Typography/Text/Text';\nimport { Title } from '../Typography/Title/Title';\nimport styles from './PanelHeaderButton.module.css';\n\nconst platformClassNames = {\n ios: styles.ios,\n android: styles.android,\n vkcom: styles.vkcom,\n};\n\nexport interface PanelHeaderButtonProps extends Omit<TappableProps, 'label'> {\n primary?: boolean;\n // TODO [>=
|
|
1
|
+
{"version":3,"sources":["../../../src/components/PanelHeaderButton/PanelHeaderButton.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { classNames, isPrimitiveReactNode } from '@vkontakte/vkjs';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { hasAccessibleName } from '../../lib/accessibility';\nimport { COMMON_WARNINGS, warnOnce } from '../../lib/warnOnce';\nimport { Tappable, type TappableProps } from '../Tappable/Tappable';\nimport { Text } from '../Typography/Text/Text';\nimport { Title } from '../Typography/Title/Title';\nimport styles from './PanelHeaderButton.module.css';\n\nconst platformClassNames = {\n ios: styles.ios,\n android: styles.android,\n vkcom: styles.vkcom,\n};\n\nexport interface PanelHeaderButtonProps extends Omit<TappableProps, 'label'> {\n primary?: boolean;\n // TODO [>=8]: добавить св-во `indicator`, чтобы разграничить кейсы\n label?: React.ReactNode;\n}\n\ninterface ButtonTypographyProps extends React.AllHTMLAttributes<HTMLElement> {\n primary?: PanelHeaderButtonProps['primary'];\n}\n\nconst ButtonTypography = ({ primary, children }: ButtonTypographyProps) => {\n const platform = usePlatform();\n\n if (platform === 'ios') {\n return (\n <Title Component=\"span\" level=\"3\" weight={primary ? '1' : '3'}>\n {children}\n </Title>\n );\n }\n\n return <Text weight={platform === 'vkcom' ? undefined : '2'}>{children}</Text>;\n};\n\nconst warn = warnOnce('PanelHeaderButton');\n\n/**\n * @see https://vkcom.github.io/VKUI/#/PanelHeaderButton\n */\nexport const PanelHeaderButton = ({\n children,\n primary = false,\n label,\n ...restProps\n}: PanelHeaderButtonProps): React.ReactNode => {\n const isPrimitive = isPrimitiveReactNode(children);\n const isPrimitiveLabel = isPrimitiveReactNode(label);\n const platform = usePlatform();\n\n let hoverMode;\n let activeMode;\n\n switch (platform) {\n case 'ios':\n hoverMode = 'background';\n activeMode = 'opacity';\n break;\n case 'vkcom':\n hoverMode = styles.hover;\n activeMode = styles.active;\n break;\n default:\n hoverMode = 'background';\n activeMode = 'background';\n }\n\n if (process.env.NODE_ENV === 'development') {\n /* istanbul ignore next: проверка в dev mode, тест на hasAccessibleName() есть в lib/accessibility.test.tsx */\n const isAccessible = hasAccessibleName({\n children: [children, label],\n ...restProps,\n });\n\n if (!isAccessible) {\n warn(COMMON_WARNINGS.a11y[restProps.href ? 'link-name' : 'button-name'], 'error');\n }\n }\n const elements = [label, children].filter((item) => !!item);\n\n const onlyPrimitive = elements.length === 1 && isPrimitiveReactNode(elements[0]);\n\n return (\n <Tappable\n Component={restProps.href ? 'a' : 'button'}\n {...restProps}\n hoverMode={hoverMode}\n activeEffectDelay={200}\n activeMode={activeMode}\n baseClassName={classNames(\n styles.host,\n platformClassNames.hasOwnProperty(platform)\n ? platformClassNames[platform]\n : platformClassNames.android,\n onlyPrimitive && styles.primitive,\n !isPrimitive && !isPrimitiveLabel && styles.notPrimitive,\n )}\n >\n {isPrimitive ? <ButtonTypography primary={primary}>{children}</ButtonTypography> : children}\n {isPrimitiveLabel ? (\n <ButtonTypography primary={primary} className={styles.label}>\n {label}\n </ButtonTypography>\n ) : (\n label\n )}\n </Tappable>\n );\n};\n"],"names":["React","classNames","isPrimitiveReactNode","usePlatform","hasAccessibleName","COMMON_WARNINGS","warnOnce","Tappable","Text","Title","platformClassNames","ios","android","vkcom","ButtonTypography","primary","children","platform","Component","level","weight","undefined","warn","PanelHeaderButton","label","restProps","isPrimitive","isPrimitiveLabel","hoverMode","activeMode","process","env","NODE_ENV","isAccessible","a11y","href","elements","filter","item","onlyPrimitive","length","activeEffectDelay","baseClassName","hasOwnProperty","className"],"mappings":"AAAA;;;;;AAEA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,UAAU,EAAEC,oBAAoB,QAAQ,kBAAkB;AACnE,SAASC,WAAW,QAAQ,6BAA0B;AACtD,SAASC,iBAAiB,QAAQ,6BAA0B;AAC5D,SAASC,eAAe,EAAEC,QAAQ,QAAQ,wBAAqB;AAC/D,SAASC,QAAQ,QAA4B,0BAAuB;AACpE,SAASC,IAAI,QAAQ,6BAA0B;AAC/C,SAASC,KAAK,QAAQ,+BAA4B;AAGlD,MAAMC,qBAAqB;IACzBC,GAAG;IACHC,OAAO;IACPC,KAAK;AACP;AAYA,MAAMC,mBAAmB,CAAC,EAAEC,OAAO,EAAEC,QAAQ,EAAyB;IACpE,MAAMC,WAAWd;IAEjB,IAAIc,aAAa,OAAO;QACtB,qBACE,KAACR;YAAMS,WAAU;YAAOC,OAAM;YAAIC,QAAQL,UAAU,MAAM;sBACvDC;;IAGP;IAEA,qBAAO,KAACR;QAAKY,QAAQH,aAAa,UAAUI,YAAY;kBAAML;;AAChE;AAEA,MAAMM,OAAOhB,SAAS;AAEtB;;CAEC,GACD,OAAO,MAAMiB,oBAAoB;QAAC,EAChCP,QAAQ,EACRD,UAAU,KAAK,EACfS,KAAK,EAEkB,WADpBC;QAHHT;QACAD;QACAS;;IAGA,MAAME,cAAcxB,qBAAqBc;IACzC,MAAMW,mBAAmBzB,qBAAqBsB;IAC9C,MAAMP,WAAWd;IAEjB,IAAIyB;IACJ,IAAIC;IAEJ,OAAQZ;QACN,KAAK;YACHW,YAAY;YACZC,aAAa;YACb;QACF,KAAK;YACHD;YACAC;YACA;QACF;YACED,YAAY;YACZC,aAAa;IACjB;IAEA,IAAIC,QAAQC,GAAG,CAACC,QAAQ,KAAK,eAAe;QAC1C,4GAA4G,GAC5G,MAAMC,eAAe7B,kBAAkB;YACrCY,UAAU;gBAACA;gBAAUQ;aAAM;WACxBC;QAGL,IAAI,CAACQ,cAAc;YACjBX,KAAKjB,gBAAgB6B,IAAI,CAACT,UAAUU,IAAI,GAAG,cAAc,cAAc,EAAE;QAC3E;IACF;IACA,MAAMC,WAAW;QAACZ;QAAOR;KAAS,CAACqB,MAAM,CAAC,CAACC,OAAS,CAAC,CAACA;IAEtD,MAAMC,gBAAgBH,SAASI,MAAM,KAAK,KAAKtC,qBAAqBkC,QAAQ,CAAC,EAAE;IAE/E,qBACE,MAAC7B;QACCW,WAAWO,UAAUU,IAAI,GAAG,MAAM;OAC9BV;QACJG,WAAWA;QACXa,mBAAmB;QACnBZ,YAAYA;QACZa,eAAezC,0CAEbS,mBAAmBiC,cAAc,CAAC1B,YAC9BP,kBAAkB,CAACO,SAAS,GAC5BP,mBAAmBE,OAAO,EAC9B2B,qDACA,CAACb,eAAe,CAACC;;YAGlBD,4BAAc,KAACZ;gBAAiBC,SAASA;0BAAUC;iBAA+BA;YAClFW,iCACC,KAACb;gBAAiBC,SAASA;gBAAS6B,SAAS;0BAC1CpB;iBAGHA;;;AAIR,EAAE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PopoutWrapper.d.ts","sourceRoot":"","sources":["../../../src/components/PopoutWrapper/PopoutWrapper.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAgB7D,MAAM,WAAW,kBAAmB,SAAQ,yBAAyB,CAAC,cAAc,CAAC;IACnF;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;IACrC;;OAEG;IACH,MAAM,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACrC;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,8FAUvB,kBAAkB,KAAG,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"PopoutWrapper.d.ts","sourceRoot":"","sources":["../../../src/components/PopoutWrapper/PopoutWrapper.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAgB7D,MAAM,WAAW,kBAAmB,SAAQ,yBAAyB,CAAC,cAAc,CAAC;IACnF;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;IACrC;;OAEG;IACH,MAAM,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACrC;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,8FAUvB,kBAAkB,KAAG,KAAK,CAAC,SAoB7B,CAAC"}
|
|
@@ -31,9 +31,9 @@ const stylesAlignY = {
|
|
|
31
31
|
]);
|
|
32
32
|
return /*#__PURE__*/ _jsx(RootComponent, _object_spread_props(_object_spread({}, restProps), {
|
|
33
33
|
baseClassName: classNames("vkuiPopoutWrapper__host", stylesAlignY[alignY], stylesAlignX[alignX], closing ? "vkuiPopoutWrapper__closing" : "vkuiPopoutWrapper__opened", fixed && "vkuiPopoutWrapper__fixed", !noBackground && "vkuiPopoutWrapper__masked"),
|
|
34
|
-
|
|
34
|
+
baseStyle: {
|
|
35
35
|
zIndex
|
|
36
|
-
},
|
|
36
|
+
},
|
|
37
37
|
children: /*#__PURE__*/ _jsxs("div", {
|
|
38
38
|
className: "vkuiPopoutWrapper__container",
|
|
39
39
|
children: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/PopoutWrapper/PopoutWrapper.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport type { HTMLAttributesWithRootRef } from '../../types';\nimport { RootComponent } from '../RootComponent/RootComponent';\nimport styles from './PopoutWrapper.module.css';\n\nconst stylesAlignX = {\n center: styles.alignXCenter,\n left: styles.alignXLeft,\n right: styles.alignXRight,\n};\n\nconst stylesAlignY = {\n center: styles.alignYCenter,\n top: styles.alignYTop,\n bottom: styles.alignYBottom,\n};\n\nexport interface PopoutWrapperProps extends HTMLAttributesWithRootRef<HTMLDivElement> {\n /**\n * Позволяет сделать прозрачную подложку\n */\n noBackground?: boolean;\n /**\n * Включает фиксированное позиционирование.\n *\n * По умолчанию у компонента не задан никакой `position`.\n */\n fixed?: boolean;\n /**\n * Выравнивает контент по горизонтали.\n */\n alignX?: 'left' | 'center' | 'right';\n /**\n * Выравнивает контент по вертикали.\n */\n alignY?: 'top' | 'center' | 'bottom';\n /**\n * Спрячет компонент через fade-out анимацию.\n */\n closing?: boolean;\n /**\n * Позволяет задать z-index через токен или числом\n */\n zIndex?: number | string;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/PopoutWrapper\n */\nexport const PopoutWrapper = ({\n alignY = 'center',\n alignX = 'center',\n closing = false,\n noBackground = false,\n fixed = true,\n children,\n onClick,\n zIndex = 'var(--vkui--z_index_popout)',\n ...restProps\n}: PopoutWrapperProps): React.ReactNode => {\n return (\n <RootComponent\n {...restProps}\n baseClassName={classNames(\n styles.host,\n stylesAlignY[alignY],\n stylesAlignX[alignX],\n closing ? styles.closing : styles.opened,\n fixed && styles.fixed,\n !noBackground && styles.masked,\n )}\n
|
|
1
|
+
{"version":3,"sources":["../../../src/components/PopoutWrapper/PopoutWrapper.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport type { HTMLAttributesWithRootRef } from '../../types';\nimport { RootComponent } from '../RootComponent/RootComponent';\nimport styles from './PopoutWrapper.module.css';\n\nconst stylesAlignX = {\n center: styles.alignXCenter,\n left: styles.alignXLeft,\n right: styles.alignXRight,\n};\n\nconst stylesAlignY = {\n center: styles.alignYCenter,\n top: styles.alignYTop,\n bottom: styles.alignYBottom,\n};\n\nexport interface PopoutWrapperProps extends HTMLAttributesWithRootRef<HTMLDivElement> {\n /**\n * Позволяет сделать прозрачную подложку\n */\n noBackground?: boolean;\n /**\n * Включает фиксированное позиционирование.\n *\n * По умолчанию у компонента не задан никакой `position`.\n */\n fixed?: boolean;\n /**\n * Выравнивает контент по горизонтали.\n */\n alignX?: 'left' | 'center' | 'right';\n /**\n * Выравнивает контент по вертикали.\n */\n alignY?: 'top' | 'center' | 'bottom';\n /**\n * Спрячет компонент через fade-out анимацию.\n */\n closing?: boolean;\n /**\n * Позволяет задать z-index через токен или числом\n */\n zIndex?: number | string;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/PopoutWrapper\n */\nexport const PopoutWrapper = ({\n alignY = 'center',\n alignX = 'center',\n closing = false,\n noBackground = false,\n fixed = true,\n children,\n onClick,\n zIndex = 'var(--vkui--z_index_popout)',\n ...restProps\n}: PopoutWrapperProps): React.ReactNode => {\n return (\n <RootComponent\n {...restProps}\n baseClassName={classNames(\n styles.host,\n stylesAlignY[alignY],\n stylesAlignX[alignX],\n closing ? styles.closing : styles.opened,\n fixed && styles.fixed,\n !noBackground && styles.masked,\n )}\n baseStyle={{ zIndex }}\n >\n <div className={styles.container}>\n <div className={styles.overlay} onClick={onClick} />\n <div className={styles.content}>{children}</div>\n </div>\n </RootComponent>\n );\n};\n"],"names":["React","classNames","RootComponent","stylesAlignX","center","left","right","stylesAlignY","top","bottom","PopoutWrapper","alignY","alignX","closing","noBackground","fixed","children","onClick","zIndex","restProps","baseClassName","baseStyle","div","className"],"mappings":"AAAA;;;;;AAEA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,UAAU,QAAQ,kBAAkB;AAE7C,SAASC,aAAa,QAAQ,oCAAiC;AAG/D,MAAMC,eAAe;IACnBC,MAAM;IACNC,IAAI;IACJC,KAAK;AACP;AAEA,MAAMC,eAAe;IACnBH,MAAM;IACNI,GAAG;IACHC,MAAM;AACR;AA+BA;;CAEC,GACD,OAAO,MAAMC,gBAAgB;QAAC,EAC5BC,SAAS,QAAQ,EACjBC,SAAS,QAAQ,EACjBC,UAAU,KAAK,EACfC,eAAe,KAAK,EACpBC,QAAQ,IAAI,EACZC,QAAQ,EACRC,OAAO,EACPC,SAAS,6BAA6B,EAEnB,WADhBC;QARHR;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;;IAGA,qBACE,KAAChB,uDACKiB;QACJC,eAAenB,sCAEbM,YAAY,CAACI,OAAO,EACpBR,YAAY,CAACS,OAAO,EACpBC,sEACAE,qCACA,CAACD;QAEHO,WAAW;YAAEH;QAAO;kBAEpB,cAAA,MAACI;YAAIC,SAAS;;8BACZ,KAACD;oBAAIC,SAAS;oBAAkBN,SAASA;;8BACzC,KAACK;oBAAIC,SAAS;8BAAmBP;;;;;AAIzC,EAAE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Spinner.d.ts","sourceRoot":"","sources":["../../../src/components/Spinner/Spinner.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Spinner.d.ts","sourceRoot":"","sources":["../../../src/components/Spinner/Spinner.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAa7D,MAAM,WAAW,YAAa,SAAQ,yBAAyB,CAAC,eAAe,CAAC;IAC9E,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC;IAC9B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAsB1C,CAAC"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
'use client';
|
|
2
1
|
import { _ as _object_spread } from "@swc/helpers/_/_object_spread";
|
|
3
2
|
import { _ as _object_spread_props } from "@swc/helpers/_/_object_spread_props";
|
|
4
3
|
import { _ as _object_without_properties } from "@swc/helpers/_/_object_without_properties";
|
|
@@ -6,9 +5,15 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
6
5
|
import * as React from "react";
|
|
7
6
|
import { Icon16Spinner, Icon24Spinner, Icon32Spinner, Icon44Spinner } from "@vkontakte/icons";
|
|
8
7
|
import { classNames, hasReactNode } from "@vkontakte/vkjs";
|
|
9
|
-
import { useReducedMotion } from "../../lib/animation/index.js";
|
|
10
8
|
import { RootComponent } from "../RootComponent/RootComponent.js";
|
|
11
9
|
import { VisuallyHidden } from "../VisuallyHidden/VisuallyHidden.js";
|
|
10
|
+
import { SpinnerAnimation } from "./SpinnerAnimation.js";
|
|
11
|
+
const spinnerIconMap = {
|
|
12
|
+
s: Icon16Spinner,
|
|
13
|
+
m: Icon24Spinner,
|
|
14
|
+
l: Icon32Spinner,
|
|
15
|
+
xl: Icon44Spinner
|
|
16
|
+
};
|
|
12
17
|
/**
|
|
13
18
|
* @see https://vkcom.github.io/VKUI/#/Spinner
|
|
14
19
|
*/ export const Spinner = /*#__PURE__*/ React.memo((_param)=>{
|
|
@@ -18,46 +23,7 @@ import { VisuallyHidden } from "../VisuallyHidden/VisuallyHidden.js";
|
|
|
18
23
|
"disableAnimation",
|
|
19
24
|
"noColor"
|
|
20
25
|
]);
|
|
21
|
-
const
|
|
22
|
-
const SpinnerIcon = {
|
|
23
|
-
s: Icon16Spinner,
|
|
24
|
-
m: Icon24Spinner,
|
|
25
|
-
l: Icon32Spinner,
|
|
26
|
-
xl: Icon44Spinner
|
|
27
|
-
}[size];
|
|
28
|
-
let svgAnimateElement = null;
|
|
29
|
-
const [isReadyForSetSVGAnimateElement, setIsReadyForSetSVGAnimateElement] = React.useState(disableAnimation ? true : false);
|
|
30
|
-
React.useEffect(function waitReactHydrationBeforeSetSVGAnimateElement() {
|
|
31
|
-
setIsReadyForSetSVGAnimateElement(true);
|
|
32
|
-
}, []);
|
|
33
|
-
if (isReadyForSetSVGAnimateElement && !disableAnimation) {
|
|
34
|
-
if (isReducedMotion) {
|
|
35
|
-
svgAnimateElement = /*#__PURE__*/ _jsx("animate", {
|
|
36
|
-
attributeName: "opacity",
|
|
37
|
-
keyTimes: "0; 0.5; 1",
|
|
38
|
-
values: "1; 0.1; 1",
|
|
39
|
-
begin: "0s",
|
|
40
|
-
dur: "2s",
|
|
41
|
-
repeatCount: "indefinite"
|
|
42
|
-
});
|
|
43
|
-
} else {
|
|
44
|
-
const center = {
|
|
45
|
-
s: 8,
|
|
46
|
-
m: 12,
|
|
47
|
-
l: 16,
|
|
48
|
-
xl: 22
|
|
49
|
-
}[size];
|
|
50
|
-
svgAnimateElement = /*#__PURE__*/ _jsx("animateTransform", {
|
|
51
|
-
attributeType: "XML",
|
|
52
|
-
attributeName: "transform",
|
|
53
|
-
type: "rotate",
|
|
54
|
-
from: `0 ${center} ${center}`,
|
|
55
|
-
to: `360 ${center} ${center}`,
|
|
56
|
-
dur: "0.7s",
|
|
57
|
-
repeatCount: "indefinite"
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
}
|
|
26
|
+
const SpinnerIcon = spinnerIconMap[size];
|
|
61
27
|
return /*#__PURE__*/ _jsxs(RootComponent, _object_spread_props(_object_spread({
|
|
62
28
|
Component: "span",
|
|
63
29
|
role: "status"
|
|
@@ -65,7 +31,9 @@ import { VisuallyHidden } from "../VisuallyHidden/VisuallyHidden.js";
|
|
|
65
31
|
baseClassName: classNames("vkuiSpinner__host", noColor && "vkuiSpinner__noColor"),
|
|
66
32
|
children: [
|
|
67
33
|
/*#__PURE__*/ _jsx(SpinnerIcon, {
|
|
68
|
-
children:
|
|
34
|
+
children: disableAnimation ? null : /*#__PURE__*/ _jsx(SpinnerAnimation, {
|
|
35
|
+
size: size
|
|
36
|
+
})
|
|
69
37
|
}),
|
|
70
38
|
hasReactNode(children) && /*#__PURE__*/ _jsx(VisuallyHidden, {
|
|
71
39
|
children: children
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/Spinner/Spinner.tsx"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../../../src/components/Spinner/Spinner.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Icon16Spinner, Icon24Spinner, Icon32Spinner, Icon44Spinner } from '@vkontakte/icons';\nimport { classNames, hasReactNode } from '@vkontakte/vkjs';\nimport type { HTMLAttributesWithRootRef } from '../../types';\nimport { RootComponent } from '../RootComponent/RootComponent';\nimport { VisuallyHidden } from '../VisuallyHidden/VisuallyHidden';\nimport { SpinnerAnimation } from './SpinnerAnimation';\nimport styles from './Spinner.module.css';\n\nconst spinnerIconMap = {\n s: Icon16Spinner,\n m: Icon24Spinner,\n l: Icon32Spinner,\n xl: Icon44Spinner,\n};\n\nexport interface SpinnerProps extends HTMLAttributesWithRootRef<HTMLSpanElement> {\n size?: 's' | 'm' | 'l' | 'xl';\n disableAnimation?: boolean;\n /**\n * Задать цвет можно будет через свойство color родителя\n */\n noColor?: boolean;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/Spinner\n */\nexport const Spinner: React.FC<SpinnerProps> = React.memo(\n ({\n size = 'm',\n children = 'Загружается...',\n disableAnimation = false,\n noColor = false,\n ...restProps\n }: SpinnerProps) => {\n const SpinnerIcon = spinnerIconMap[size];\n\n return (\n <RootComponent\n Component=\"span\"\n role=\"status\"\n {...restProps}\n baseClassName={classNames(styles.host, noColor && styles.noColor)}\n >\n <SpinnerIcon>{disableAnimation ? null : <SpinnerAnimation size={size} />}</SpinnerIcon>\n {hasReactNode(children) && <VisuallyHidden>{children}</VisuallyHidden>}\n </RootComponent>\n );\n },\n);\n\nSpinner.displayName = 'Spinner';\n"],"names":["React","Icon16Spinner","Icon24Spinner","Icon32Spinner","Icon44Spinner","classNames","hasReactNode","RootComponent","VisuallyHidden","SpinnerAnimation","spinnerIconMap","s","m","l","xl","Spinner","memo","size","children","disableAnimation","noColor","restProps","SpinnerIcon","Component","role","baseClassName","displayName"],"mappings":";;;;AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,aAAa,EAAEC,aAAa,EAAEC,aAAa,EAAEC,aAAa,QAAQ,mBAAmB;AAC9F,SAASC,UAAU,EAAEC,YAAY,QAAQ,kBAAkB;AAE3D,SAASC,aAAa,QAAQ,oCAAiC;AAC/D,SAASC,cAAc,QAAQ,sCAAmC;AAClE,SAASC,gBAAgB,QAAQ,wBAAqB;AAGtD,MAAMC,iBAAiB;IACrBC,GAAGV;IACHW,GAAGV;IACHW,GAAGV;IACHW,IAAIV;AACN;AAWA;;CAEC,GACD,OAAO,MAAMW,wBAAkCf,MAAMgB,IAAI,CACvD;QAAC,EACCC,OAAO,GAAG,EACVC,WAAW,gBAAgB,EAC3BC,mBAAmB,KAAK,EACxBC,UAAU,KAAK,EAEF,WADVC;QAJHJ;QACAC;QACAC;QACAC;;IAGA,MAAME,cAAcZ,cAAc,CAACO,KAAK;IAExC,qBACE,MAACV;QACCgB,WAAU;QACVC,MAAK;OACDH;QACJI,eAAepB,gCAAwBe;;0BAEvC,KAACE;0BAAaH,mBAAmB,qBAAO,KAACV;oBAAiBQ,MAAMA;;;YAC/DX,aAAaY,2BAAa,KAACV;0BAAgBU;;;;AAGlD,GACA;AAEFH,QAAQW,WAAW,GAAG"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type SpinnerProps } from './Spinner';
|
|
2
|
+
interface SpinnerAnimationProps {
|
|
3
|
+
size: SpinnerProps['size'];
|
|
4
|
+
}
|
|
5
|
+
export declare function SpinnerAnimation({ size }: SpinnerAnimationProps): import("react/jsx-runtime").JSX.Element | null;
|
|
6
|
+
export {};
|
|
7
|
+
//# sourceMappingURL=SpinnerAnimation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SpinnerAnimation.d.ts","sourceRoot":"","sources":["../../../src/components/Spinner/SpinnerAnimation.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,WAAW,CAAC;AAE9C,UAAU,qBAAqB;IAC7B,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;CAC5B;AAED,wBAAgB,gBAAgB,CAAC,EAAE,IAAU,EAAE,EAAE,qBAAqB,kDAgCrE"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { useReducedMotion } from "../../lib/animation/index.js";
|
|
4
|
+
export function SpinnerAnimation({ size = 'm' }) {
|
|
5
|
+
const isReducedMotion = useReducedMotion();
|
|
6
|
+
if (isReducedMotion === undefined) {
|
|
7
|
+
return null;
|
|
8
|
+
}
|
|
9
|
+
if (isReducedMotion) {
|
|
10
|
+
return /*#__PURE__*/ _jsx("animate", {
|
|
11
|
+
attributeName: "opacity",
|
|
12
|
+
keyTimes: "0; 0.5; 1",
|
|
13
|
+
values: "1; 0.1; 1",
|
|
14
|
+
begin: "0s",
|
|
15
|
+
dur: "2s",
|
|
16
|
+
repeatCount: "indefinite"
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
const center = {
|
|
20
|
+
s: 8,
|
|
21
|
+
m: 12,
|
|
22
|
+
l: 16,
|
|
23
|
+
xl: 22
|
|
24
|
+
}[size];
|
|
25
|
+
return /*#__PURE__*/ _jsx("animateTransform", {
|
|
26
|
+
attributeType: "XML",
|
|
27
|
+
attributeName: "transform",
|
|
28
|
+
type: "rotate",
|
|
29
|
+
from: `0 ${center} ${center}`,
|
|
30
|
+
to: `360 ${center} ${center}`,
|
|
31
|
+
dur: "0.7s",
|
|
32
|
+
repeatCount: "indefinite"
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
//# sourceMappingURL=SpinnerAnimation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/Spinner/SpinnerAnimation.tsx"],"sourcesContent":["'use client';\n\nimport { useReducedMotion } from '../../lib/animation';\nimport { type SpinnerProps } from './Spinner';\n\ninterface SpinnerAnimationProps {\n size: SpinnerProps['size'];\n}\n\nexport function SpinnerAnimation({ size = 'm' }: SpinnerAnimationProps) {\n const isReducedMotion = useReducedMotion();\n\n if (isReducedMotion === undefined) {\n return null;\n }\n\n if (isReducedMotion) {\n return (\n <animate\n attributeName=\"opacity\"\n keyTimes=\"0; 0.5; 1\"\n values=\"1; 0.1; 1\"\n begin=\"0s\"\n dur=\"2s\"\n repeatCount=\"indefinite\"\n />\n );\n }\n\n const center = { s: 8, m: 12, l: 16, xl: 22 }[size];\n return (\n <animateTransform\n attributeType=\"XML\"\n attributeName=\"transform\"\n type=\"rotate\"\n from={`0 ${center} ${center}`}\n to={`360 ${center} ${center}`}\n dur=\"0.7s\"\n repeatCount=\"indefinite\"\n />\n );\n}\n"],"names":["useReducedMotion","SpinnerAnimation","size","isReducedMotion","undefined","animate","attributeName","keyTimes","values","begin","dur","repeatCount","center","s","m","l","xl","animateTransform","attributeType","type","from","to"],"mappings":"AAAA;;AAEA,SAASA,gBAAgB,QAAQ,+BAAsB;AAOvD,OAAO,SAASC,iBAAiB,EAAEC,OAAO,GAAG,EAAyB;IACpE,MAAMC,kBAAkBH;IAExB,IAAIG,oBAAoBC,WAAW;QACjC,OAAO;IACT;IAEA,IAAID,iBAAiB;QACnB,qBACE,KAACE;YACCC,eAAc;YACdC,UAAS;YACTC,QAAO;YACPC,OAAM;YACNC,KAAI;YACJC,aAAY;;IAGlB;IAEA,MAAMC,SAAS;QAAEC,GAAG;QAAGC,GAAG;QAAIC,GAAG;QAAIC,IAAI;IAAG,CAAC,CAACd,KAAK;IACnD,qBACE,KAACe;QACCC,eAAc;QACdZ,eAAc;QACda,MAAK;QACLC,MAAM,CAAC,EAAE,EAAER,OAAO,CAAC,EAAEA,QAAQ;QAC7BS,IAAI,CAAC,IAAI,EAAET,OAAO,CAAC,EAAEA,QAAQ;QAC7BF,KAAI;QACJC,aAAY;;AAGlB"}
|
|
@@ -4,17 +4,17 @@ export interface SplitLayoutProps extends HTMLAttributesWithRootRef<HTMLDivEleme
|
|
|
4
4
|
/**
|
|
5
5
|
* Свойство для отрисовки `Alert`, `ActionSheet` и `ScreenSpinner`.
|
|
6
6
|
*
|
|
7
|
-
* @deprecated будет
|
|
7
|
+
* @deprecated будет удалeно в **VKUI v8**.
|
|
8
8
|
* Начиная с **VKUI v7** компоненты можно располагать в любом
|
|
9
|
-
* месте приложения в пределах `AppRoot
|
|
9
|
+
* месте приложения в пределах `AppRoot`.
|
|
10
10
|
*/
|
|
11
11
|
popout?: React.ReactNode;
|
|
12
12
|
/**
|
|
13
13
|
* Свойство для отрисовки `ModalRoot`.
|
|
14
14
|
*
|
|
15
|
-
* @deprecated будет
|
|
15
|
+
* @deprecated будет удалeно в **VKUI v8**.
|
|
16
16
|
* Начиная с **VKUI v7** `ModalRoot` можно располагать в любом
|
|
17
|
-
* месте приложения в пределах `AppRoot
|
|
17
|
+
* месте приложения в пределах `AppRoot`.
|
|
18
18
|
*/
|
|
19
19
|
modal?: React.ReactNode;
|
|
20
20
|
header?: React.ReactNode;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/SplitLayout/SplitLayout.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport type { HasRef, HTMLAttributesWithRootRef } from '../../types';\nimport styles from './SplitLayout.module.css';\n\nexport interface SplitLayoutProps\n extends HTMLAttributesWithRootRef<HTMLDivElement>,\n HasRef<HTMLDivElement> {\n /**\n * Свойство для отрисовки `Alert`, `ActionSheet` и `ScreenSpinner`.\n *\n * @deprecated будет
|
|
1
|
+
{"version":3,"sources":["../../../src/components/SplitLayout/SplitLayout.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport type { HasRef, HTMLAttributesWithRootRef } from '../../types';\nimport styles from './SplitLayout.module.css';\n\nexport interface SplitLayoutProps\n extends HTMLAttributesWithRootRef<HTMLDivElement>,\n HasRef<HTMLDivElement> {\n /**\n * Свойство для отрисовки `Alert`, `ActionSheet` и `ScreenSpinner`.\n *\n * @deprecated будет удалeно в **VKUI v8**.\n * Начиная с **VKUI v7** компоненты можно располагать в любом\n * месте приложения в пределах `AppRoot`.\n */\n popout?: React.ReactNode;\n /**\n * Свойство для отрисовки `ModalRoot`.\n *\n * @deprecated будет удалeно в **VKUI v8**.\n * Начиная с **VKUI v7** `ModalRoot` можно располагать в любом\n * месте приложения в пределах `AppRoot`.\n */\n modal?: React.ReactNode;\n header?: React.ReactNode;\n /**\n * Центрирует контент.\n */\n center?: boolean;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/SplitLayout\n */\nexport const SplitLayout = ({\n header,\n children,\n getRootRef,\n getRef,\n className,\n center,\n modal,\n popout,\n ...restProps\n}: SplitLayoutProps): React.ReactNode => {\n const platform = usePlatform();\n\n return (\n <div className={classNames(styles.host, platform === 'ios' && styles.ios)} ref={getRootRef}>\n {header}\n <div\n {...restProps}\n ref={getRef}\n className={classNames(\n styles.inner,\n !!header && styles.innerHeader,\n center && styles.innerCenter,\n className,\n )}\n >\n {children}\n {modal}\n {popout}\n </div>\n </div>\n );\n};\n"],"names":["React","classNames","usePlatform","SplitLayout","header","children","getRootRef","getRef","className","center","modal","popout","restProps","platform","div","ref"],"mappings":"AAAA;;;;;AAEA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,WAAW,QAAQ,6BAA0B;AA8BtD;;CAEC,GACD,OAAO,MAAMC,cAAc;QAAC,EAC1BC,MAAM,EACNC,QAAQ,EACRC,UAAU,EACVC,MAAM,EACNC,SAAS,EACTC,MAAM,EACNC,KAAK,EACLC,MAAM,EAEW,WADdC;QARHR;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;;IAGA,MAAME,WAAWX;IAEjB,qBACE,MAACY;QAAIN,WAAWP,oCAAwBY,aAAa;QAAsBE,KAAKT;;YAC7EF;0BACD,MAACU,+CACKF;gBACJG,KAAKR;gBACLC,WAAWP,qCAET,CAAC,CAACG,0CACFK,0CACAD;;oBAGDH;oBACAK;oBACAC;;;;;AAIT,EAAE"}
|