@vkontakte/vkui 4.22.2 → 4.23.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/.cache/.eslintcache +1 -1
- package/.cache/.stylelintcache +1 -1
- package/.cache/.tsbuildinfo +193 -30
- package/.cache/ts/src/components/ActionSheet/ActionSheetContext.d.ts +1 -1
- package/.cache/ts/src/components/ActionSheetItem/ActionSheetItem.d.ts +7 -0
- package/.cache/ts/src/components/AdaptivityProvider/AdaptivityContext.d.ts +5 -0
- package/.cache/ts/src/components/AppRoot/AppRootContext.d.ts +1 -0
- package/.cache/ts/src/components/AppRoot/AppRootPortal.d.ts +1 -0
- package/.cache/ts/src/components/ClickPopper/ClickPopper.d.ts +21 -0
- package/.cache/ts/src/components/ConfigProvider/ConfigProviderContext.d.ts +8 -0
- package/.cache/ts/src/components/Dropdown/Dropdown.d.ts +49 -0
- package/.cache/ts/src/components/Footer/Footer.d.ts +3 -3
- package/.cache/ts/src/components/HoverPopper/HoverPopper.d.ts +29 -0
- package/.cache/ts/src/components/Popper/Popper.d.ts +27 -0
- package/.cache/ts/src/components/RichTooltip/RichTooltip.d.ts +46 -0
- package/.cache/ts/src/components/TextTooltip/TextTooltip.d.ts +49 -0
- package/.cache/ts/src/hoc/withAdaptivity.d.ts +1 -0
- package/.cache/ts/src/hooks/usePatchChildrenRef.d.ts +6 -0
- package/.cache/ts/src/index.d.ts +2 -1
- package/.cache/ts/src/unstable/index.d.ts +8 -0
- package/dist/cjs/components/ActionSheet/ActionSheet.js +21 -7
- package/dist/cjs/components/ActionSheet/ActionSheet.js.map +1 -1
- package/dist/cjs/components/ActionSheet/ActionSheetContext.d.ts +1 -1
- package/dist/cjs/components/ActionSheet/ActionSheetContext.js.map +1 -1
- package/dist/cjs/components/ActionSheet/ActionSheetDropdownDesktop.js +1 -3
- package/dist/cjs/components/ActionSheet/ActionSheetDropdownDesktop.js.map +1 -1
- package/dist/cjs/components/ActionSheetItem/ActionSheetItem.d.ts +7 -0
- package/dist/cjs/components/ActionSheetItem/ActionSheetItem.js +4 -3
- package/dist/cjs/components/ActionSheetItem/ActionSheetItem.js.map +1 -1
- package/dist/cjs/components/AdaptivityProvider/AdaptivityContext.d.ts +5 -0
- package/dist/cjs/components/AdaptivityProvider/AdaptivityContext.js +5 -1
- package/dist/cjs/components/AdaptivityProvider/AdaptivityContext.js.map +1 -1
- package/dist/cjs/components/AdaptivityProvider/AdaptivityProvider.js +10 -5
- package/dist/cjs/components/AdaptivityProvider/AdaptivityProvider.js.map +1 -1
- package/dist/cjs/components/AppRoot/AppRoot.js +3 -6
- package/dist/cjs/components/AppRoot/AppRoot.js.map +1 -1
- package/dist/cjs/components/AppRoot/AppRootContext.d.ts +1 -0
- package/dist/cjs/components/AppRoot/AppRootContext.js.map +1 -1
- package/dist/cjs/components/AppRoot/AppRootPortal.d.ts +1 -0
- package/dist/cjs/components/AppRoot/AppRootPortal.js +7 -3
- package/dist/cjs/components/AppRoot/AppRootPortal.js.map +1 -1
- package/dist/cjs/components/Cell/Cell.js +3 -1
- package/dist/cjs/components/Cell/Cell.js.map +1 -1
- package/dist/cjs/components/ClickPopper/ClickPopper.d.ts +21 -0
- package/dist/cjs/components/ClickPopper/ClickPopper.js +92 -0
- package/dist/cjs/components/ClickPopper/ClickPopper.js.map +1 -0
- package/dist/cjs/components/ConfigProvider/ConfigProviderContext.d.ts +8 -0
- package/dist/cjs/components/ConfigProvider/ConfigProviderContext.js.map +1 -1
- package/dist/cjs/components/Dropdown/Dropdown.d.ts +49 -0
- package/dist/cjs/components/Dropdown/Dropdown.js +56 -0
- package/dist/cjs/components/Dropdown/Dropdown.js.map +1 -0
- package/dist/cjs/components/Footer/Footer.d.ts +3 -3
- package/dist/cjs/components/Footer/Footer.js +2 -3
- package/dist/cjs/components/Footer/Footer.js.map +1 -1
- package/dist/cjs/components/HoverPopper/HoverPopper.d.ts +29 -0
- package/dist/cjs/components/HoverPopper/HoverPopper.js +97 -0
- package/dist/cjs/components/HoverPopper/HoverPopper.js.map +1 -0
- package/dist/cjs/components/Popper/Popper.d.ts +27 -0
- package/dist/cjs/components/Popper/Popper.js +153 -0
- package/dist/cjs/components/Popper/Popper.js.map +1 -0
- package/dist/cjs/components/RichTooltip/RichTooltip.d.ts +46 -0
- package/dist/cjs/components/RichTooltip/RichTooltip.js +47 -0
- package/dist/cjs/components/RichTooltip/RichTooltip.js.map +1 -0
- package/dist/cjs/components/Tappable/Tappable.js +6 -4
- package/dist/cjs/components/Tappable/Tappable.js.map +1 -1
- package/dist/cjs/components/TextTooltip/TextTooltip.d.ts +49 -0
- package/dist/cjs/components/TextTooltip/TextTooltip.js +57 -0
- package/dist/cjs/components/TextTooltip/TextTooltip.js.map +1 -0
- package/dist/cjs/hoc/withAdaptivity.d.ts +1 -0
- package/dist/cjs/hoc/withAdaptivity.js +5 -2
- package/dist/cjs/hoc/withAdaptivity.js.map +1 -1
- package/dist/cjs/hooks/usePatchChildrenRef.d.ts +6 -0
- package/dist/cjs/hooks/usePatchChildrenRef.js +38 -0
- package/dist/cjs/hooks/usePatchChildrenRef.js.map +1 -0
- package/dist/cjs/index.d.ts +2 -1
- package/dist/cjs/index.js +2 -2
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/unstable/index.d.ts +8 -0
- package/dist/cjs/unstable/index.js +32 -0
- package/dist/cjs/unstable/index.js.map +1 -1
- package/dist/components/ActionSheet/ActionSheet.js +22 -8
- package/dist/components/ActionSheet/ActionSheet.js.map +1 -1
- package/dist/components/ActionSheet/ActionSheetContext.d.ts +1 -1
- package/dist/components/ActionSheet/ActionSheetContext.js.map +1 -1
- package/dist/components/ActionSheet/ActionSheetDropdownDesktop.js +1 -3
- package/dist/components/ActionSheet/ActionSheetDropdownDesktop.js.map +1 -1
- package/dist/components/ActionSheetItem/ActionSheetItem.d.ts +7 -0
- package/dist/components/ActionSheetItem/ActionSheetItem.js +4 -3
- package/dist/components/ActionSheetItem/ActionSheetItem.js.map +1 -1
- package/dist/components/AdaptivityProvider/AdaptivityContext.d.ts +5 -0
- package/dist/components/AdaptivityProvider/AdaptivityContext.js +4 -1
- package/dist/components/AdaptivityProvider/AdaptivityContext.js.map +1 -1
- package/dist/components/AdaptivityProvider/AdaptivityProvider.js +11 -6
- package/dist/components/AdaptivityProvider/AdaptivityProvider.js.map +1 -1
- package/dist/components/AppRoot/AppRoot.js +3 -6
- package/dist/components/AppRoot/AppRoot.js.map +1 -1
- package/dist/components/AppRoot/AppRootContext.d.ts +1 -0
- package/dist/components/AppRoot/AppRootContext.js.map +1 -1
- package/dist/components/AppRoot/AppRootPortal.d.ts +1 -0
- package/dist/components/AppRoot/AppRootPortal.js +7 -3
- package/dist/components/AppRoot/AppRootPortal.js.map +1 -1
- package/dist/components/Cell/Cell.js +3 -1
- package/dist/components/Cell/Cell.js.map +1 -1
- package/dist/components/ClickPopper/ClickPopper.d.ts +21 -0
- package/dist/components/ClickPopper/ClickPopper.js +67 -0
- package/dist/components/ClickPopper/ClickPopper.js.map +1 -0
- package/dist/components/ConfigProvider/ConfigProviderContext.d.ts +8 -0
- package/dist/components/ConfigProvider/ConfigProviderContext.js.map +1 -1
- package/dist/components/Dropdown/Dropdown.d.ts +49 -0
- package/dist/components/Dropdown/Dropdown.js +38 -0
- package/dist/components/Dropdown/Dropdown.js.map +1 -0
- package/dist/components/Footer/Footer.d.ts +3 -3
- package/dist/components/Footer/Footer.js +1 -4
- package/dist/components/Footer/Footer.js.map +1 -1
- package/dist/components/HoverPopper/HoverPopper.d.ts +29 -0
- package/dist/components/HoverPopper/HoverPopper.js +73 -0
- package/dist/components/HoverPopper/HoverPopper.js.map +1 -0
- package/dist/components/Popper/Popper.d.ts +27 -0
- package/dist/components/Popper/Popper.js +127 -0
- package/dist/components/Popper/Popper.js.map +1 -0
- package/dist/components/RichTooltip/RichTooltip.d.ts +46 -0
- package/dist/components/RichTooltip/RichTooltip.js +26 -0
- package/dist/components/RichTooltip/RichTooltip.js.map +1 -0
- package/dist/components/Tappable/Tappable.js +7 -5
- package/dist/components/Tappable/Tappable.js.map +1 -1
- package/dist/components/TextTooltip/TextTooltip.d.ts +49 -0
- package/dist/components/TextTooltip/TextTooltip.js +34 -0
- package/dist/components/TextTooltip/TextTooltip.js.map +1 -0
- package/dist/components.css +1 -1
- package/dist/components.css.map +1 -1
- package/dist/cssm/components/ActionSheet/ActionSheet.js +22 -8
- package/dist/cssm/components/ActionSheet/ActionSheet.js.map +1 -1
- package/dist/cssm/components/ActionSheet/ActionSheetContext.js.map +1 -1
- package/dist/cssm/components/ActionSheet/ActionSheetDropdownDesktop.js +1 -3
- package/dist/cssm/components/ActionSheet/ActionSheetDropdownDesktop.js.map +1 -1
- package/dist/cssm/components/ActionSheetItem/ActionSheetItem.js +4 -3
- package/dist/cssm/components/ActionSheetItem/ActionSheetItem.js.map +1 -1
- package/dist/cssm/components/AdaptivityProvider/AdaptivityContext.js +4 -1
- package/dist/cssm/components/AdaptivityProvider/AdaptivityContext.js.map +1 -1
- package/dist/cssm/components/AdaptivityProvider/AdaptivityProvider.js +11 -6
- package/dist/cssm/components/AdaptivityProvider/AdaptivityProvider.js.map +1 -1
- package/dist/cssm/components/AppRoot/AppRoot.js +3 -6
- package/dist/cssm/components/AppRoot/AppRoot.js.map +1 -1
- package/dist/cssm/components/AppRoot/AppRootContext.js.map +1 -1
- package/dist/cssm/components/AppRoot/AppRootPortal.js +7 -3
- package/dist/cssm/components/AppRoot/AppRootPortal.js.map +1 -1
- package/dist/cssm/components/Cell/Cell.js +3 -1
- package/dist/cssm/components/Cell/Cell.js.map +1 -1
- package/dist/cssm/components/ClickPopper/ClickPopper.js +67 -0
- package/dist/cssm/components/ClickPopper/ClickPopper.js.map +1 -0
- package/dist/cssm/components/ConfigProvider/ConfigProviderContext.js.map +1 -1
- package/dist/cssm/components/Dropdown/Dropdown.css +1 -0
- package/dist/cssm/components/Dropdown/Dropdown.js +41 -0
- package/dist/cssm/components/Dropdown/Dropdown.js.map +1 -0
- package/dist/cssm/components/Footer/Footer.js +1 -4
- package/dist/cssm/components/Footer/Footer.js.map +1 -1
- package/dist/cssm/components/HoverPopper/HoverPopper.js +73 -0
- package/dist/cssm/components/HoverPopper/HoverPopper.js.map +1 -0
- package/dist/cssm/components/Popper/Popper.css +1 -0
- package/dist/cssm/components/Popper/Popper.js +128 -0
- package/dist/cssm/components/Popper/Popper.js.map +1 -0
- package/dist/cssm/components/RichTooltip/RichTooltip.css +1 -0
- package/dist/cssm/components/RichTooltip/RichTooltip.js +29 -0
- package/dist/cssm/components/RichTooltip/RichTooltip.js.map +1 -0
- package/dist/cssm/components/Tappable/Tappable.js +7 -5
- package/dist/cssm/components/Tappable/Tappable.js.map +1 -1
- package/dist/cssm/components/TextTooltip/TextTooltip.css +1 -0
- package/dist/cssm/components/TextTooltip/TextTooltip.js +37 -0
- package/dist/cssm/components/TextTooltip/TextTooltip.js.map +1 -0
- package/dist/cssm/hoc/withAdaptivity.js +5 -2
- package/dist/cssm/hoc/withAdaptivity.js.map +1 -1
- package/dist/cssm/hooks/usePatchChildrenRef.js +21 -0
- package/dist/cssm/hooks/usePatchChildrenRef.js.map +1 -0
- package/dist/cssm/index.js +1 -1
- package/dist/cssm/index.js.map +1 -1
- package/dist/cssm/styles/animations.css +1 -1
- package/dist/cssm/styles/common.css +1 -1
- package/dist/cssm/styles/components.css +1 -1
- package/dist/cssm/styles/unstable.css +1 -1
- package/dist/cssm/unstable/index.js +4 -0
- package/dist/cssm/unstable/index.js.map +1 -1
- package/dist/hoc/withAdaptivity.d.ts +1 -0
- package/dist/hoc/withAdaptivity.js +5 -2
- package/dist/hoc/withAdaptivity.js.map +1 -1
- package/dist/hooks/usePatchChildrenRef.d.ts +6 -0
- package/dist/hooks/usePatchChildrenRef.js +21 -0
- package/dist/hooks/usePatchChildrenRef.js.map +1 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/unstable/index.d.ts +8 -0
- package/dist/unstable/index.js +4 -0
- package/dist/unstable/index.js.map +1 -1
- package/dist/unstable.css +1 -1
- package/dist/unstable.css.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 +16 -9
- package/src/components/ActionSheet/ActionSheetContext.ts +1 -1
- package/src/components/ActionSheet/ActionSheetDropdownDesktop.tsx +1 -3
- package/src/components/ActionSheetItem/ActionSheetItem.tsx +10 -2
- package/src/components/AdaptivityProvider/AdaptivityContext.tsx +8 -0
- package/src/components/AdaptivityProvider/AdaptivityProvider.tsx +8 -6
- package/src/components/AdaptivityProvider/Readme.md +3 -3
- package/src/components/AppRoot/AppRoot.tsx +4 -5
- package/src/components/AppRoot/AppRootContext.ts +1 -0
- package/src/components/AppRoot/AppRootPortal.tsx +5 -3
- package/src/components/Cell/Cell.tsx +2 -1
- package/src/components/ChipsSelect/Readme.md +1 -1
- package/src/components/ClickPopper/ClickPopper.tsx +82 -0
- package/src/components/ConfigProvider/ConfigProviderContext.tsx +8 -0
- package/src/components/Dropdown/Dropdown.css +19 -0
- package/src/components/Dropdown/Dropdown.tsx +74 -0
- package/src/components/Dropdown/Readme.md +39 -0
- package/src/components/Footer/Footer.tsx +6 -4
- package/src/components/HoverPopper/HoverPopper.tsx +100 -0
- package/src/components/PanelHeader/Readme.md +4 -0
- package/src/components/Popper/Popper.css +39 -0
- package/src/components/Popper/Popper.tsx +147 -0
- package/src/components/Popper/Readme.md +23 -0
- package/src/components/RichTooltip/Readme.md +55 -0
- package/src/components/RichTooltip/RichTooltip.css +10 -0
- package/src/components/RichTooltip/RichTooltip.tsx +70 -0
- package/src/components/Tappable/Tappable.tsx +5 -4
- package/src/components/TextTooltip/Readme.md +7 -0
- package/src/components/TextTooltip/TextTooltip.css +12 -0
- package/src/components/TextTooltip/TextTooltip.tsx +76 -0
- package/src/components/Tooltip/Readme.md +2 -0
- package/src/hoc/withAdaptivity.tsx +5 -1
- package/src/hooks/usePatchChildrenRef.ts +24 -0
- package/src/index.ts +2 -1
- package/src/styles/animations.css +5 -0
- package/src/styles/common.css +7 -2
- package/src/styles/unstable.css +4 -0
- package/src/unstable/index.ts +12 -0
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/extends";
|
|
2
|
+
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
3
|
+
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
4
|
+
var _excluded = ["getRef", "content", "children", "onShownChange", "shown"];
|
|
5
|
+
import { createScopedElement } from "../../lib/jsxRuntime";
|
|
6
|
+
import * as React from 'react';
|
|
7
|
+
import { useDOM } from "../../lib/dom";
|
|
8
|
+
import { Popper } from "../Popper/Popper";
|
|
9
|
+
import { useExternRef } from "../../hooks/useExternRef";
|
|
10
|
+
import { useEventListener } from "../../hooks/useEventListener";
|
|
11
|
+
import { useGlobalEventListener } from "../../hooks/useGlobalEventListener";
|
|
12
|
+
import { usePatchChildrenRef } from "../../hooks/usePatchChildrenRef";
|
|
13
|
+
export var ClickPopper = function ClickPopper(_ref) {
|
|
14
|
+
var getRef = _ref.getRef,
|
|
15
|
+
content = _ref.content,
|
|
16
|
+
children = _ref.children,
|
|
17
|
+
onShownChange = _ref.onShownChange,
|
|
18
|
+
_shown = _ref.shown,
|
|
19
|
+
restProps = _objectWithoutProperties(_ref, _excluded);
|
|
20
|
+
|
|
21
|
+
var _React$useState = React.useState(_shown || false),
|
|
22
|
+
_React$useState2 = _slicedToArray(_React$useState, 2),
|
|
23
|
+
computedShown = _React$useState2[0],
|
|
24
|
+
setComputedShown = _React$useState2[1];
|
|
25
|
+
|
|
26
|
+
var _React$useState3 = React.useState(null),
|
|
27
|
+
_React$useState4 = _slicedToArray(_React$useState3, 2),
|
|
28
|
+
dropdownNode = _React$useState4[0],
|
|
29
|
+
setPopperNode = _React$useState4[1];
|
|
30
|
+
|
|
31
|
+
var shown = typeof _shown === 'boolean' ? _shown : computedShown;
|
|
32
|
+
|
|
33
|
+
var _useDOM = useDOM(),
|
|
34
|
+
document = _useDOM.document;
|
|
35
|
+
|
|
36
|
+
var patchedPopperRef = useExternRef(setPopperNode, getRef);
|
|
37
|
+
|
|
38
|
+
var _usePatchChildrenRef = usePatchChildrenRef(children),
|
|
39
|
+
_usePatchChildrenRef2 = _slicedToArray(_usePatchChildrenRef, 2),
|
|
40
|
+
childRef = _usePatchChildrenRef2[0],
|
|
41
|
+
child = _usePatchChildrenRef2[1];
|
|
42
|
+
|
|
43
|
+
var setShown = function setShown(value) {
|
|
44
|
+
if (typeof _shown !== 'boolean') {
|
|
45
|
+
setComputedShown(value);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
typeof onShownChange === 'function' && onShownChange(value);
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
useGlobalEventListener(document, 'click', function (e) {
|
|
52
|
+
if (dropdownNode && !childRef.current.contains(e.target) && !dropdownNode.contains(e.target)) {
|
|
53
|
+
setShown(false);
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
var targetClickEvent = useEventListener('click', function () {
|
|
57
|
+
setShown(!shown);
|
|
58
|
+
});
|
|
59
|
+
React.useEffect(function () {
|
|
60
|
+
targetClickEvent.add(childRef.current);
|
|
61
|
+
}, []);
|
|
62
|
+
return createScopedElement(React.Fragment, null, child, shown && createScopedElement(Popper, _extends({}, restProps, {
|
|
63
|
+
targetRef: childRef,
|
|
64
|
+
getRef: patchedPopperRef
|
|
65
|
+
}), content));
|
|
66
|
+
};
|
|
67
|
+
//# sourceMappingURL=ClickPopper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/ClickPopper/ClickPopper.tsx"],"names":["React","useDOM","Popper","useExternRef","useEventListener","useGlobalEventListener","usePatchChildrenRef","ClickPopper","getRef","content","children","onShownChange","_shown","shown","restProps","useState","computedShown","setComputedShown","dropdownNode","setPopperNode","document","patchedPopperRef","childRef","child","setShown","value","e","current","contains","target","targetClickEvent","useEffect","add"],"mappings":";;;;;AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,MAAT;AACA,SAASC,MAAT;AACA,SAASC,YAAT;AACA,SAASC,gBAAT;AACA,SAASC,sBAAT;AACA,SAASC,mBAAT;AAqBA,OAAO,IAAMC,WAAuC,GAAG,SAA1CA,WAA0C,OAO/B;AAAA,MANtBC,MAMsB,QANtBA,MAMsB;AAAA,MALtBC,OAKsB,QALtBA,OAKsB;AAAA,MAJtBC,QAIsB,QAJtBA,QAIsB;AAAA,MAHtBC,aAGsB,QAHtBA,aAGsB;AAAA,MAFfC,MAEe,QAFtBC,KAEsB;AAAA,MADnBC,SACmB;;AACtB,wBAA0Cd,KAAK,CAACe,QAAN,CAAeH,MAAM,IAAI,KAAzB,CAA1C;AAAA;AAAA,MAAOI,aAAP;AAAA,MAAsBC,gBAAtB;;AACA,yBAAsCjB,KAAK,CAACe,QAAN,CAAe,IAAf,CAAtC;AAAA;AAAA,MAAOG,YAAP;AAAA,MAAqBC,aAArB;;AAEA,MAAMN,KAAK,GAAG,OAAOD,MAAP,KAAkB,SAAlB,GAA8BA,MAA9B,GAAuCI,aAArD;;AAEA,gBAAqBf,MAAM,EAA3B;AAAA,MAAQmB,QAAR,WAAQA,QAAR;;AAEA,MAAMC,gBAAgB,GAAGlB,YAAY,CAACgB,aAAD,EAAgBX,MAAhB,CAArC;;AAEA,6BAA0BF,mBAAmB,CAACI,QAAD,CAA7C;AAAA;AAAA,MAAOY,QAAP;AAAA,MAAiBC,KAAjB;;AAEA,MAAMC,QAAQ,GAAG,SAAXA,QAAW,CAACC,KAAD,EAAoB;AACnC,QAAI,OAAOb,MAAP,KAAkB,SAAtB,EAAiC;AAC/BK,MAAAA,gBAAgB,CAACQ,KAAD,CAAhB;AACD;;AACD,WAAOd,aAAP,KAAyB,UAAzB,IAAuCA,aAAa,CAACc,KAAD,CAApD;AACD,GALD;;AAOApB,EAAAA,sBAAsB,CAACe,QAAD,EAAW,OAAX,EAAoB,UAACM,CAAD,EAAmB;AAC3D,QAAIR,YAAY,IAAI,CAACI,QAAQ,CAACK,OAAT,CAAiBC,QAAjB,CAA0BF,CAAC,CAACG,MAA5B,CAAjB,IAAgE,CAACX,YAAY,CAACU,QAAb,CAAsBF,CAAC,CAACG,MAAxB,CAArE,EAAsG;AACpGL,MAAAA,QAAQ,CAAC,KAAD,CAAR;AACD;AACF,GAJqB,CAAtB;AAMA,MAAMM,gBAAgB,GAAG1B,gBAAgB,CAAC,OAAD,EAAU,YAAM;AACvDoB,IAAAA,QAAQ,CAAC,CAACX,KAAF,CAAR;AACD,GAFwC,CAAzC;AAIAb,EAAAA,KAAK,CAAC+B,SAAN,CAAgB,YAAM;AACpBD,IAAAA,gBAAgB,CAACE,GAAjB,CAAqBV,QAAQ,CAACK,OAA9B;AACD,GAFD,EAEG,EAFH;AAIA,SACE,oBAAC,KAAD,CAAO,QAAP,QACGJ,KADH,EAEGV,KAAK,IACJ,oBAAC,MAAD,eACMC,SADN;AAEE,IAAA,SAAS,EAAEQ,QAFb;AAGE,IAAA,MAAM,EAAED;AAHV,MAKGZ,OALH,CAHJ,CADF;AAcD,CAtDM","sourcesContent":["import * as React from 'react';\nimport { useDOM } from '../../lib/dom';\nimport { Popper, PopperCommonProps } from '../Popper/Popper';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { useEventListener } from '../../hooks/useEventListener';\nimport { useGlobalEventListener } from '../../hooks/useGlobalEventListener';\nimport { usePatchChildrenRef } from '../../hooks/usePatchChildrenRef';\n\nexport interface ClickPopperProps extends PopperCommonProps {\n /**\n * Содержимое `ClickPopper`\n */\n content?: React.ReactNode;\n /**\n * Если передан, то тултип будет показыван/скрыт в зависимости от значения свойства\n */\n shown?: boolean;\n /**\n * Вызывается при каждом изменении видимости тултипа\n */\n onShownChange?: (shown: boolean) => void;\n /**\n * Либо jsx-элемент (div, button, etc.), либо компонент со свойством `getRootRef`, которое применяется к корневому элемнету компонента\n */\n children?: React.ReactElement;\n}\n\nexport const ClickPopper: React.FC<ClickPopperProps> = ({\n getRef,\n content,\n children,\n onShownChange,\n shown: _shown,\n ...restProps\n}: ClickPopperProps) => {\n const [computedShown, setComputedShown] = React.useState(_shown || false);\n const [dropdownNode, setPopperNode] = React.useState(null);\n\n const shown = typeof _shown === 'boolean' ? _shown : computedShown;\n\n const { document } = useDOM();\n\n const patchedPopperRef = useExternRef(setPopperNode, getRef);\n\n const [childRef, child] = usePatchChildrenRef(children);\n\n const setShown = (value: boolean) => {\n if (typeof _shown !== 'boolean') {\n setComputedShown(value);\n }\n typeof onShownChange === 'function' && onShownChange(value);\n };\n\n useGlobalEventListener(document, 'click', (e: MouseEvent) => {\n if (dropdownNode && !childRef.current.contains(e.target as Node) && !dropdownNode.contains(e.target)) {\n setShown(false);\n }\n });\n\n const targetClickEvent = useEventListener('click', () => {\n setShown(!shown);\n });\n\n React.useEffect(() => {\n targetClickEvent.add(childRef.current);\n }, []);\n\n return (\n <React.Fragment>\n {child}\n {shown &&\n <Popper\n {...restProps}\n targetRef={childRef}\n getRef={patchedPopperRef}\n >\n {content}\n </Popper>\n }\n </React.Fragment>\n );\n};\n"],"file":"ClickPopper.js"}
|
|
@@ -6,7 +6,15 @@ export declare enum Appearance {
|
|
|
6
6
|
LIGHT = "light"
|
|
7
7
|
}
|
|
8
8
|
export declare enum Scheme {
|
|
9
|
+
/**
|
|
10
|
+
* @deprecated будет удалено в 5.0.0
|
|
11
|
+
* версия оставлена для совместимости со старыми версиями клиентов
|
|
12
|
+
*/
|
|
9
13
|
DEPRECATED_CLIENT_LIGHT = "client_light",
|
|
14
|
+
/**
|
|
15
|
+
* @deprecated будет удалено в 5.0.0
|
|
16
|
+
* версия оставлена для совместимости со старыми версиями клиентов
|
|
17
|
+
*/
|
|
10
18
|
DEPRECATED_CLIENT_DARK = "client_dark",
|
|
11
19
|
/**
|
|
12
20
|
* @deprecated будет удалено в 5.0.0
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/ConfigProvider/ConfigProviderContext.tsx"],"names":["React","vkBridge","platform","Appearance","Scheme","WebviewType","defaultConfigProviderProps","webviewType","VKAPPS","isWebView","scheme","BRIGHT_LIGHT","transitionMotionEnabled","ConfigProviderContext","createContext"],"mappings":"AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,OAAOC,QAAP,MAA+D,sBAA/D;AACA,SAAuBC,QAAvB;AAEA,WAAYC,UAAZ;;WAAYA,U;AAAAA,EAAAA,U;AAAAA,EAAAA,U;GAAAA,U,KAAAA,U;;AAKZ,WAAYC,MAAZ;;WAAYA,M;AAAAA,EAAAA,M;AAAAA,EAAAA,M;AAAAA,EAAAA,M;AAAAA,EAAAA,M;AAAAA,EAAAA,M;AAAAA,EAAAA,M;AAAAA,EAAAA,M;GAAAA,M,KAAAA,M;;
|
|
1
|
+
{"version":3,"sources":["../../../src/components/ConfigProvider/ConfigProviderContext.tsx"],"names":["React","vkBridge","platform","Appearance","Scheme","WebviewType","defaultConfigProviderProps","webviewType","VKAPPS","isWebView","scheme","BRIGHT_LIGHT","transitionMotionEnabled","ConfigProviderContext","createContext"],"mappings":"AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,OAAOC,QAAP,MAA+D,sBAA/D;AACA,SAAuBC,QAAvB;AAEA,WAAYC,UAAZ;;WAAYA,U;AAAAA,EAAAA,U;AAAAA,EAAAA,U;GAAAA,U,KAAAA,U;;AAKZ,WAAYC,MAAZ;;WAAYA,M;AAAAA,EAAAA,M;AAAAA,EAAAA,M;AAAAA,EAAAA,M;AAAAA,EAAAA,M;AAAAA,EAAAA,M;AAAAA,EAAAA,M;AAAAA,EAAAA,M;GAAAA,M,KAAAA,M;;AAyBZ,WAAYC,WAAZ;;WAAYA,W;AAAAA,EAAAA,W;AAAAA,EAAAA,W;GAAAA,W,KAAAA,W;;AAiCZ,OAAO,IAAMC,0BAA0B,GAAG;AACxCC,EAAAA,WAAW,EAAEF,WAAW,CAACG,MADe;AAExCC,EAAAA,SAAS,EAAER,QAAQ,CAACQ,SAAT,EAF6B;AAGxCC,EAAAA,MAAM,EAAEN,MAAM,CAACO,YAHyB;AAIxCC,EAAAA,uBAAuB,EAAE,IAJe;AAKxCV,EAAAA,QAAQ,EAAEA,QAAQ,EALsB,CAMxC;AACA;;AAPwC,CAAnC;AAUP,OAAO,IAAMW,qBAAqB,gBAAGb,KAAK,CAACc,aAAN,CAAoDR,0BAApD,CAA9B","sourcesContent":["import * as React from 'react';\nimport vkBridge, { AppearanceSchemeType, AppearanceType } from '@vkontakte/vk-bridge';\nimport { PlatformType, platform } from '../../lib/platform';\n\nexport enum Appearance {\n DARK = 'dark',\n LIGHT = 'light',\n}\n\nexport enum Scheme {\n /**\n * @deprecated будет удалено в 5.0.0\n * версия оставлена для совместимости со старыми версиями клиентов\n */\n DEPRECATED_CLIENT_LIGHT = 'client_light',\n /**\n * @deprecated будет удалено в 5.0.0\n * версия оставлена для совместимости со старыми версиями клиентов\n */\n DEPRECATED_CLIENT_DARK = 'client_dark',\n /**\n * @deprecated будет удалено в 5.0.0\n * версия оставлена для совместимости с vkcom, когда там была только одна схема\n */\n VKCOM = 'vkcom',\n\n BRIGHT_LIGHT = 'bright_light',\n SPACE_GRAY = 'space_gray',\n VKCOM_LIGHT = 'vkcom_light',\n VKCOM_DARK = 'vkcom_dark'\n}\n\nexport type AppearanceScheme = AppearanceSchemeType | Scheme.VKCOM | Scheme.VKCOM_DARK | Scheme.VKCOM_LIGHT | 'inherit';\n\nexport enum WebviewType {\n VKAPPS = 'vkapps',\n INTERNAL = 'internal',\n}\n\nexport interface ConfigProviderContextInterface {\n /**\n * Подсказывает приложению, обёрнутому в `ConfigProvider`, где открыто приложение: внутри webview или в мобильном браузере\n */\n isWebView?: boolean;\n /**\n * Тип вебвью.<br>\n * В случае `WebviewType.VKAPPS` интерфейс будет адаптирован для отображения в вебвью Mini Apps (системные контролы в правой части шапки)\n */\n webviewType?: WebviewType.INTERNAL | WebviewType.VKAPPS;\n /**\n * Тип приложения\n */\n app?: string;\n /**\n * Тип цветовой схемы – `light` или `dark`\n */\n appearance?: AppearanceType;\n /**\n * Включена ли анимация переходов между экранами в `Root` и `View`\n */\n transitionMotionEnabled?: boolean;\n /**\n * Платформа\n */\n platform?: PlatformType;\n}\n\nexport const defaultConfigProviderProps = {\n webviewType: WebviewType.VKAPPS,\n isWebView: vkBridge.isWebView(),\n scheme: Scheme.BRIGHT_LIGHT,\n transitionMotionEnabled: true,\n platform: platform(),\n // appearance is auto-detected by default\n // appearance: Appearance.LIGHT,\n};\n\nexport const ConfigProviderContext = React.createContext<ConfigProviderContextInterface>(defaultConfigProviderProps);\n"],"file":"ConfigProviderContext.js"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { HoverPopperProps } from '../HoverPopper/HoverPopper';
|
|
3
|
+
import { Placement } from '../Popper/Popper';
|
|
4
|
+
import './Dropdown.css';
|
|
5
|
+
export interface DropdownProps {
|
|
6
|
+
/**
|
|
7
|
+
* По умолчанию компонент выберет наилучшее расположение сам. Но его можно задать извне с помощью этого свойства
|
|
8
|
+
*/
|
|
9
|
+
placement?: Placement;
|
|
10
|
+
/**
|
|
11
|
+
* Отступ по вспомогательной оси
|
|
12
|
+
*/
|
|
13
|
+
offsetSkidding?: number;
|
|
14
|
+
/**
|
|
15
|
+
* Отступ по главной оси
|
|
16
|
+
*/
|
|
17
|
+
offsetDistance?: number;
|
|
18
|
+
onPlacementChange?: (data: {
|
|
19
|
+
placement?: Placement;
|
|
20
|
+
}) => void;
|
|
21
|
+
/**
|
|
22
|
+
* Содержимое тултипа
|
|
23
|
+
*/
|
|
24
|
+
content?: React.ReactNode;
|
|
25
|
+
/**
|
|
26
|
+
* Если передан, то тултип будет показыван/скрыт в зависимости от значения свойства
|
|
27
|
+
*/
|
|
28
|
+
shown?: boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Вызывается при каждом изменении видимости тултипа
|
|
31
|
+
*/
|
|
32
|
+
onShownChange?: (shown: boolean) => void;
|
|
33
|
+
/**
|
|
34
|
+
* Либо jsx-элемент (div, button, etc.), либо компонент со свойством `getRootRef`, которое применяется к корневому элементу компонента
|
|
35
|
+
*/
|
|
36
|
+
children?: React.ReactElement;
|
|
37
|
+
action?: 'click' | 'hover';
|
|
38
|
+
/**
|
|
39
|
+
* Актуально только для action="hover"
|
|
40
|
+
* Количество миллисекунд, после которых произойдет показ дропдауна
|
|
41
|
+
*/
|
|
42
|
+
showDelay?: HoverPopperProps['showDelay'];
|
|
43
|
+
/**
|
|
44
|
+
* Актуально только для action="hover"
|
|
45
|
+
* Количество миллисекунд, после которых произойдет скрытие дропдауна
|
|
46
|
+
*/
|
|
47
|
+
hideDelay?: HoverPopperProps['hideDelay'];
|
|
48
|
+
}
|
|
49
|
+
export declare const Dropdown: React.FC<DropdownProps>;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/extends";
|
|
2
|
+
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
3
|
+
var _excluded = ["action", "hideDelay", "showDelay"];
|
|
4
|
+
import { createScopedElement } from "../../lib/jsxRuntime";
|
|
5
|
+
import { HoverPopper } from "../HoverPopper/HoverPopper";
|
|
6
|
+
import { ClickPopper } from "../ClickPopper/ClickPopper";
|
|
7
|
+
import { getClassName } from "../../helpers/getClassName";
|
|
8
|
+
import { usePlatform } from "../../hooks/usePlatform";
|
|
9
|
+
export var Dropdown = function Dropdown(_ref) {
|
|
10
|
+
var _ref$action = _ref.action,
|
|
11
|
+
action = _ref$action === void 0 ? 'click' : _ref$action,
|
|
12
|
+
hideDelay = _ref.hideDelay,
|
|
13
|
+
showDelay = _ref.showDelay,
|
|
14
|
+
popperProps = _objectWithoutProperties(_ref, _excluded);
|
|
15
|
+
|
|
16
|
+
var platform = usePlatform();
|
|
17
|
+
var Component;
|
|
18
|
+
var actionSpecificProps = {};
|
|
19
|
+
|
|
20
|
+
switch (action) {
|
|
21
|
+
case 'click':
|
|
22
|
+
Component = ClickPopper;
|
|
23
|
+
break;
|
|
24
|
+
|
|
25
|
+
case 'hover':
|
|
26
|
+
actionSpecificProps = {
|
|
27
|
+
hideDelay: hideDelay,
|
|
28
|
+
showDelay: showDelay
|
|
29
|
+
};
|
|
30
|
+
Component = HoverPopper;
|
|
31
|
+
break;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
return createScopedElement(Component, _extends({
|
|
35
|
+
vkuiClass: getClassName('Dropdown', platform)
|
|
36
|
+
}, actionSpecificProps, popperProps));
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=Dropdown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/Dropdown/Dropdown.tsx"],"names":["HoverPopper","ClickPopper","getClassName","usePlatform","Dropdown","action","hideDelay","showDelay","popperProps","platform","Component","actionSpecificProps"],"mappings":";;;;AACA,SAASA,WAAT;AACA,SAASC,WAAT;AACA,SAASC,YAAT;AACA,SAASC,WAAT;AAkDA,OAAO,IAAMC,QAAiC,GAAG,SAApCA,QAAoC,OAA+E;AAAA,yBAA5EC,MAA4E;AAAA,MAA5EA,MAA4E,4BAAnE,OAAmE;AAAA,MAA1DC,SAA0D,QAA1DA,SAA0D;AAAA,MAA/CC,SAA+C,QAA/CA,SAA+C;AAAA,MAAjCC,WAAiC;;AAC9H,MAAMC,QAAQ,GAAGN,WAAW,EAA5B;AAEA,MAAIO,SAAJ;AACA,MAAIC,mBAA2C,GAAG,EAAlD;;AAEA,UAAQN,MAAR;AACE,SAAK,OAAL;AACEK,MAAAA,SAAS,GAAGT,WAAZ;AACA;;AACF,SAAK,OAAL;AACEU,MAAAA,mBAAmB,GAAG;AAAEL,QAAAA,SAAS,EAATA,SAAF;AAAaC,QAAAA,SAAS,EAATA;AAAb,OAAtB;AACAG,MAAAA,SAAS,GAAGV,WAAZ;AACA;AAPJ;;AAUA,SACE,oBAAC,SAAD;AAAW,IAAA,SAAS,EAAEE,YAAY,CAAC,UAAD,EAAaO,QAAb;AAAlC,KAA8DE,mBAA9D,EAAuFH,WAAvF,EADF;AAGD,CAnBM","sourcesContent":["import * as React from 'react';\nimport { HoverPopper, HoverPopperProps } from '../HoverPopper/HoverPopper';\nimport { ClickPopper } from '../ClickPopper/ClickPopper';\nimport { getClassName } from '../../helpers/getClassName';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { Placement } from '../Popper/Popper';\nimport './Dropdown.css';\n\n// Приходится избегать экстендов от HoverPopperProps, ClickPopperProps и PopperProps, потому что react-docgen не умеет в Omit.\n// Ждём либо фикса react-docgen (что вряд ли), либо переезда на react-docgen-typescript, где такой проблемы нет.\nexport interface DropdownProps {\n /**\n * По умолчанию компонент выберет наилучшее расположение сам. Но его можно задать извне с помощью этого свойства\n */\n placement?: Placement;\n /**\n * Отступ по вспомогательной оси\n */\n offsetSkidding?: number;\n /**\n * Отступ по главной оси\n */\n offsetDistance?: number;\n onPlacementChange?: (data: { placement?: Placement }) => void;\n /**\n * Содержимое тултипа\n */\n content?: React.ReactNode;\n /**\n * Если передан, то тултип будет показыван/скрыт в зависимости от значения свойства\n */\n shown?: boolean;\n /**\n * Вызывается при каждом изменении видимости тултипа\n */\n onShownChange?: (shown: boolean) => void;\n /**\n * Либо jsx-элемент (div, button, etc.), либо компонент со свойством `getRootRef`, которое применяется к корневому элементу компонента\n */\n children?: React.ReactElement;\n\n action?: 'click' | 'hover';\n /**\n * Актуально только для action=\"hover\"\n * Количество миллисекунд, после которых произойдет показ дропдауна\n */\n showDelay?: HoverPopperProps['showDelay'];\n /**\n * Актуально только для action=\"hover\"\n * Количество миллисекунд, после которых произойдет скрытие дропдауна\n */\n hideDelay?: HoverPopperProps['hideDelay'];\n}\n\nexport const Dropdown: React.FC<DropdownProps> = ({ action = 'click', hideDelay, showDelay, ...popperProps }: DropdownProps) => {\n const platform = usePlatform();\n\n let Component;\n let actionSpecificProps: Partial<DropdownProps> = {};\n\n switch (action) {\n case 'click':\n Component = ClickPopper;\n break;\n case 'hover':\n actionSpecificProps = { hideDelay, showDelay };\n Component = HoverPopper;\n break;\n }\n\n return (\n <Component vkuiClass={getClassName('Dropdown', platform)} {...actionSpecificProps} {...popperProps} />\n );\n};\n"],"file":"Dropdown.js"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
+
import { HasComponent } from '../../types';
|
|
2
3
|
import './Footer.css';
|
|
3
|
-
declare type FooterProps = React.AllHTMLAttributes<HTMLElement
|
|
4
|
-
declare const Footer: React.FC<FooterProps>;
|
|
5
|
-
export default Footer;
|
|
4
|
+
export declare type FooterProps = React.AllHTMLAttributes<HTMLElement> & HasComponent;
|
|
5
|
+
export declare const Footer: React.FC<FooterProps>;
|
|
@@ -3,8 +3,7 @@ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProper
|
|
|
3
3
|
var _excluded = ["children"];
|
|
4
4
|
import { createScopedElement } from "../../lib/jsxRuntime";
|
|
5
5
|
import Caption from "../Typography/Caption/Caption";
|
|
6
|
-
|
|
7
|
-
var Footer = function Footer(_ref) {
|
|
6
|
+
export var Footer = function Footer(_ref) {
|
|
8
7
|
var children = _ref.children,
|
|
9
8
|
restProps = _objectWithoutProperties(_ref, _excluded);
|
|
10
9
|
|
|
@@ -16,6 +15,4 @@ var Footer = function Footer(_ref) {
|
|
|
16
15
|
vkuiClass: "Footer"
|
|
17
16
|
}), children);
|
|
18
17
|
};
|
|
19
|
-
|
|
20
|
-
export default Footer;
|
|
21
18
|
//# sourceMappingURL=Footer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/Footer/Footer.tsx"],"names":["Caption","Footer","children","restProps"],"mappings":";;;;
|
|
1
|
+
{"version":3,"sources":["../../../src/components/Footer/Footer.tsx"],"names":["Caption","Footer","children","restProps"],"mappings":";;;;AAEA,OAAOA,OAAP;AAKA,OAAO,IAAMC,MAA6B,GAAG,SAAhCA,MAAgC,OAG1B;AAAA,MAFjBC,QAEiB,QAFjBA,QAEiB;AAAA,MADdC,SACc;;AACjB,SACE,oBAAC,OAAD;AAAS,IAAA,SAAS,EAAC;AAAnB,KAAgCA,SAAhC;AAA2C,IAAA,KAAK,EAAC,GAAjD;AAAqD,IAAA,MAAM,EAAC,SAA5D;AAAsE,IAAA,SAAS,EAAC;AAAhF,MACGD,QADH,CADF;AAKD,CATM","sourcesContent":["import * as React from 'react';\nimport { HasComponent } from '../../types';\nimport Caption from '../Typography/Caption/Caption';\nimport './Footer.css';\n\nexport type FooterProps = React.AllHTMLAttributes<HTMLElement> & HasComponent;\n\nexport const Footer: React.FC<FooterProps> = ({\n children,\n ...restProps\n}: FooterProps) => {\n return (\n <Caption Component=\"footer\" {...restProps} level=\"1\" weight=\"regular\" vkuiClass=\"Footer\">\n {children}\n </Caption>\n );\n};\n"],"file":"Footer.js"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { PopperCommonProps } from '../Popper/Popper';
|
|
3
|
+
export interface HoverPopperProps extends PopperCommonProps {
|
|
4
|
+
/**
|
|
5
|
+
* Содержимое тултипа
|
|
6
|
+
*/
|
|
7
|
+
content?: React.ReactNode;
|
|
8
|
+
/**
|
|
9
|
+
* Если передан, то тултип будет показыван/скрыт в зависимости от значения свойства
|
|
10
|
+
*/
|
|
11
|
+
shown?: boolean;
|
|
12
|
+
/**
|
|
13
|
+
* Вызывается при каждом изменении видимости тултипа
|
|
14
|
+
*/
|
|
15
|
+
onShownChange?: (shown: boolean) => void;
|
|
16
|
+
/**
|
|
17
|
+
* Количество миллисекунд, после которых произойдет показ дропдауна
|
|
18
|
+
*/
|
|
19
|
+
showDelay?: number;
|
|
20
|
+
/**
|
|
21
|
+
* Количество миллисекунд, после которых произойдет скрытие дропдауна
|
|
22
|
+
*/
|
|
23
|
+
hideDelay?: number;
|
|
24
|
+
/**
|
|
25
|
+
* Либо jsx-элемент (div, button, etc.), либо компонент со свойством `getRootRef`, которое применяется к корневому элементу компонента
|
|
26
|
+
*/
|
|
27
|
+
children?: React.ReactElement;
|
|
28
|
+
}
|
|
29
|
+
export declare const HoverPopper: React.FC<HoverPopperProps>;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/extends";
|
|
2
|
+
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
3
|
+
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
4
|
+
var _excluded = ["getRef", "content", "children", "onShownChange", "shown", "showDelay", "hideDelay"];
|
|
5
|
+
import { createScopedElement } from "../../lib/jsxRuntime";
|
|
6
|
+
import * as React from 'react';
|
|
7
|
+
import { Popper } from "../Popper/Popper";
|
|
8
|
+
import { useEventListener } from "../../hooks/useEventListener";
|
|
9
|
+
import { useTimeout } from "../../hooks/useTimeout";
|
|
10
|
+
import { usePatchChildrenRef } from "../../hooks/usePatchChildrenRef";
|
|
11
|
+
import { useIsomorphicLayoutEffect } from "../../lib/useIsomorphicLayoutEffect";
|
|
12
|
+
export var HoverPopper = function HoverPopper(_ref) {
|
|
13
|
+
var getRef = _ref.getRef,
|
|
14
|
+
content = _ref.content,
|
|
15
|
+
children = _ref.children,
|
|
16
|
+
onShownChange = _ref.onShownChange,
|
|
17
|
+
_shown = _ref.shown,
|
|
18
|
+
showDelay = _ref.showDelay,
|
|
19
|
+
_ref$hideDelay = _ref.hideDelay,
|
|
20
|
+
hideDelay = _ref$hideDelay === void 0 ? 150 : _ref$hideDelay,
|
|
21
|
+
restProps = _objectWithoutProperties(_ref, _excluded);
|
|
22
|
+
|
|
23
|
+
var _React$useState = React.useState(_shown || false),
|
|
24
|
+
_React$useState2 = _slicedToArray(_React$useState, 2),
|
|
25
|
+
computedShown = _React$useState2[0],
|
|
26
|
+
setComputedShown = _React$useState2[1];
|
|
27
|
+
|
|
28
|
+
var shown = typeof _shown === 'boolean' ? _shown : computedShown;
|
|
29
|
+
|
|
30
|
+
var setShown = function setShown(value) {
|
|
31
|
+
if (typeof _shown !== 'boolean') {
|
|
32
|
+
setComputedShown(value);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
typeof onShownChange === 'function' && onShownChange(value);
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
var showTimeout = useTimeout(function () {
|
|
39
|
+
setShown(true);
|
|
40
|
+
}, showDelay);
|
|
41
|
+
var hideTimeout = useTimeout(function () {
|
|
42
|
+
setShown(false);
|
|
43
|
+
}, hideDelay);
|
|
44
|
+
|
|
45
|
+
var _usePatchChildrenRef = usePatchChildrenRef(children),
|
|
46
|
+
_usePatchChildrenRef2 = _slicedToArray(_usePatchChildrenRef, 2),
|
|
47
|
+
childRef = _usePatchChildrenRef2[0],
|
|
48
|
+
child = _usePatchChildrenRef2[1];
|
|
49
|
+
|
|
50
|
+
var onTargetEnter = function onTargetEnter() {
|
|
51
|
+
hideTimeout.clear();
|
|
52
|
+
showTimeout.set();
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
var onTargetLeave = function onTargetLeave() {
|
|
56
|
+
showTimeout.clear();
|
|
57
|
+
hideTimeout.set();
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
var targetEnterListener = useEventListener('pointerenter', onTargetEnter);
|
|
61
|
+
var targetLeaveListener = useEventListener('pointerleave', onTargetLeave);
|
|
62
|
+
useIsomorphicLayoutEffect(function () {
|
|
63
|
+
targetEnterListener.add(childRef.current);
|
|
64
|
+
targetLeaveListener.add(childRef.current);
|
|
65
|
+
}, []);
|
|
66
|
+
return createScopedElement(React.Fragment, null, child, shown && createScopedElement(Popper, _extends({}, restProps, {
|
|
67
|
+
onMouseOver: hideTimeout.clear,
|
|
68
|
+
onMouseOut: onTargetLeave,
|
|
69
|
+
getRef: getRef,
|
|
70
|
+
targetRef: childRef
|
|
71
|
+
}), content));
|
|
72
|
+
};
|
|
73
|
+
//# sourceMappingURL=HoverPopper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/HoverPopper/HoverPopper.tsx"],"names":["React","Popper","useEventListener","useTimeout","usePatchChildrenRef","useIsomorphicLayoutEffect","HoverPopper","getRef","content","children","onShownChange","_shown","shown","showDelay","hideDelay","restProps","useState","computedShown","setComputedShown","setShown","value","showTimeout","hideTimeout","childRef","child","onTargetEnter","clear","set","onTargetLeave","targetEnterListener","targetLeaveListener","add","current"],"mappings":";;;;;AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,MAAT;AACA,SAASC,gBAAT;AACA,SAASC,UAAT;AACA,SAASC,mBAAT;AACA,SAASC,yBAAT;AA6BA,OAAO,IAAMC,WAAuC,GAAG,SAA1CA,WAA0C,OAS/B;AAAA,MARtBC,MAQsB,QARtBA,MAQsB;AAAA,MAPtBC,OAOsB,QAPtBA,OAOsB;AAAA,MANtBC,QAMsB,QANtBA,QAMsB;AAAA,MALtBC,aAKsB,QALtBA,aAKsB;AAAA,MAJfC,MAIe,QAJtBC,KAIsB;AAAA,MAHtBC,SAGsB,QAHtBA,SAGsB;AAAA,4BAFtBC,SAEsB;AAAA,MAFtBA,SAEsB,+BAFV,GAEU;AAAA,MADnBC,SACmB;;AACtB,wBAA0Cf,KAAK,CAACgB,QAAN,CAAeL,MAAM,IAAI,KAAzB,CAA1C;AAAA;AAAA,MAAOM,aAAP;AAAA,MAAsBC,gBAAtB;;AAEA,MAAMN,KAAK,GAAG,OAAOD,MAAP,KAAkB,SAAlB,GAA8BA,MAA9B,GAAuCM,aAArD;;AAEA,MAAME,QAAQ,GAAG,SAAXA,QAAW,CAACC,KAAD,EAAoB;AACnC,QAAI,OAAOT,MAAP,KAAkB,SAAtB,EAAiC;AAC/BO,MAAAA,gBAAgB,CAACE,KAAD,CAAhB;AACD;;AACD,WAAOV,aAAP,KAAyB,UAAzB,IAAuCA,aAAa,CAACU,KAAD,CAApD;AACD,GALD;;AAOA,MAAMC,WAAW,GAAGlB,UAAU,CAAC,YAAM;AACnCgB,IAAAA,QAAQ,CAAC,IAAD,CAAR;AACD,GAF6B,EAE3BN,SAF2B,CAA9B;AAIA,MAAMS,WAAW,GAAGnB,UAAU,CAAC,YAAM;AACnCgB,IAAAA,QAAQ,CAAC,KAAD,CAAR;AACD,GAF6B,EAE3BL,SAF2B,CAA9B;;AAIA,6BAA0BV,mBAAmB,CAACK,QAAD,CAA7C;AAAA;AAAA,MAAOc,QAAP;AAAA,MAAiBC,KAAjB;;AAEA,MAAMC,aAAa,GAAG,SAAhBA,aAAgB,GAAM;AAC1BH,IAAAA,WAAW,CAACI,KAAZ;AACAL,IAAAA,WAAW,CAACM,GAAZ;AACD,GAHD;;AAKA,MAAMC,aAAa,GAAG,SAAhBA,aAAgB,GAAM;AAC1BP,IAAAA,WAAW,CAACK,KAAZ;AACAJ,IAAAA,WAAW,CAACK,GAAZ;AACD,GAHD;;AAKA,MAAME,mBAAmB,GAAG3B,gBAAgB,CAAC,cAAD,EAAiBuB,aAAjB,CAA5C;AACA,MAAMK,mBAAmB,GAAG5B,gBAAgB,CAAC,cAAD,EAAiB0B,aAAjB,CAA5C;AAEAvB,EAAAA,yBAAyB,CAAC,YAAM;AAC9BwB,IAAAA,mBAAmB,CAACE,GAApB,CAAwBR,QAAQ,CAACS,OAAjC;AACAF,IAAAA,mBAAmB,CAACC,GAApB,CAAwBR,QAAQ,CAACS,OAAjC;AACD,GAHwB,EAGtB,EAHsB,CAAzB;AAKA,SACE,oBAAC,KAAD,CAAO,QAAP,QACGR,KADH,EAEGZ,KAAK,IACJ,oBAAC,MAAD,eACMG,SADN;AAEE,IAAA,WAAW,EAAEO,WAAW,CAACI,KAF3B;AAGE,IAAA,UAAU,EAAEE,aAHd;AAIE,IAAA,MAAM,EAAErB,MAJV;AAKE,IAAA,SAAS,EAAEgB;AALb,MAOGf,OAPH,CAHJ,CADF;AAgBD,CAjEM","sourcesContent":["import * as React from 'react';\nimport { Popper, PopperCommonProps } from '../Popper/Popper';\nimport { useEventListener } from '../../hooks/useEventListener';\nimport { useTimeout } from '../../hooks/useTimeout';\nimport { usePatchChildrenRef } from '../../hooks/usePatchChildrenRef';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\n\nexport interface HoverPopperProps extends PopperCommonProps {\n /**\n * Содержимое тултипа\n */\n content?: React.ReactNode;\n /**\n * Если передан, то тултип будет показыван/скрыт в зависимости от значения свойства\n */\n shown?: boolean;\n /**\n * Вызывается при каждом изменении видимости тултипа\n */\n onShownChange?: (shown: boolean) => void;\n /**\n * Количество миллисекунд, после которых произойдет показ дропдауна\n */\n showDelay?: number;\n /**\n * Количество миллисекунд, после которых произойдет скрытие дропдауна\n */\n hideDelay?: number;\n /**\n * Либо jsx-элемент (div, button, etc.), либо компонент со свойством `getRootRef`, которое применяется к корневому элементу компонента\n */\n children?: React.ReactElement;\n}\n\nexport const HoverPopper: React.FC<HoverPopperProps> = ({\n getRef,\n content,\n children,\n onShownChange,\n shown: _shown,\n showDelay,\n hideDelay = 150,\n ...restProps\n}: HoverPopperProps) => {\n const [computedShown, setComputedShown] = React.useState(_shown || false);\n\n const shown = typeof _shown === 'boolean' ? _shown : computedShown;\n\n const setShown = (value: boolean) => {\n if (typeof _shown !== 'boolean') {\n setComputedShown(value);\n }\n typeof onShownChange === 'function' && onShownChange(value);\n };\n\n const showTimeout = useTimeout(() => {\n setShown(true);\n }, showDelay);\n\n const hideTimeout = useTimeout(() => {\n setShown(false);\n }, hideDelay);\n\n const [childRef, child] = usePatchChildrenRef(children);\n\n const onTargetEnter = () => {\n hideTimeout.clear();\n showTimeout.set();\n };\n\n const onTargetLeave = () => {\n showTimeout.clear();\n hideTimeout.set();\n };\n\n const targetEnterListener = useEventListener('pointerenter', onTargetEnter);\n const targetLeaveListener = useEventListener('pointerleave', onTargetLeave);\n\n useIsomorphicLayoutEffect(() => {\n targetEnterListener.add(childRef.current);\n targetLeaveListener.add(childRef.current);\n }, []);\n\n return (\n <React.Fragment>\n {child}\n {shown &&\n <Popper\n {...restProps}\n onMouseOver={hideTimeout.clear}\n onMouseOut={onTargetLeave}\n getRef={getRef}\n targetRef={childRef}\n >\n {content}\n </Popper>\n }\n </React.Fragment>\n );\n};\n"],"file":"HoverPopper.js"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { HasRef } from '../../types';
|
|
3
|
+
import './Popper.css';
|
|
4
|
+
export declare type Placement = 'auto' | 'auto-start' | 'auto-end' | 'top-start' | 'top-end' | 'bottom-start' | 'bottom-end' | 'right-start' | 'right-end' | 'left-start' | 'left-end' | 'top' | 'bottom' | 'left' | 'right';
|
|
5
|
+
export interface PopperCommonProps extends React.HTMLAttributes<HTMLElement>, HasRef<HTMLElement> {
|
|
6
|
+
/**
|
|
7
|
+
* По умолчанию компонент выберет наилучшее расположение сам. Но его можно задать извне с помощью этого свойства
|
|
8
|
+
*/
|
|
9
|
+
placement?: Placement;
|
|
10
|
+
/**
|
|
11
|
+
* Отступ по вспомогательной оси
|
|
12
|
+
*/
|
|
13
|
+
offsetSkidding?: number;
|
|
14
|
+
/**
|
|
15
|
+
* Отступ по главной оси
|
|
16
|
+
*/
|
|
17
|
+
offsetDistance?: number;
|
|
18
|
+
arrow?: boolean;
|
|
19
|
+
arrowClassName?: string;
|
|
20
|
+
onPlacementChange?: (data: {
|
|
21
|
+
placement?: Placement;
|
|
22
|
+
}) => void;
|
|
23
|
+
}
|
|
24
|
+
export interface PopperProps extends PopperCommonProps {
|
|
25
|
+
targetRef?: React.RefObject<HTMLElement>;
|
|
26
|
+
}
|
|
27
|
+
export declare const Popper: React.FC<PopperProps>;
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/extends";
|
|
2
|
+
import _objectSpread from "@babel/runtime/helpers/objectSpread2";
|
|
3
|
+
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
4
|
+
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
5
|
+
var _excluded = ["targetRef", "children", "getRef", "placement", "onPlacementChange", "arrow", "arrowClassName", "offsetDistance", "offsetSkidding", "style"];
|
|
6
|
+
import { createScopedElement } from "../../lib/jsxRuntime";
|
|
7
|
+
import * as React from 'react';
|
|
8
|
+
import { usePopper } from 'react-popper';
|
|
9
|
+
import { AppRootPortal } from "../AppRoot/AppRootPortal";
|
|
10
|
+
import { usePlatform } from "../../hooks/usePlatform";
|
|
11
|
+
import { getClassName } from "../../helpers/getClassName";
|
|
12
|
+
import { useExternRef } from "../../hooks/useExternRef";
|
|
13
|
+
import { useIsomorphicLayoutEffect } from "../../lib/useIsomorphicLayoutEffect";
|
|
14
|
+
var ARROW_PADDING = 8;
|
|
15
|
+
var ARROW_WIDTH = 20;
|
|
16
|
+
var ARROW_HEIGHT = 8;
|
|
17
|
+
export var Popper = function Popper(_ref) {
|
|
18
|
+
var targetRef = _ref.targetRef,
|
|
19
|
+
children = _ref.children,
|
|
20
|
+
getRef = _ref.getRef,
|
|
21
|
+
_ref$placement = _ref.placement,
|
|
22
|
+
placement = _ref$placement === void 0 ? 'bottom-start' : _ref$placement,
|
|
23
|
+
onPlacementChange = _ref.onPlacementChange,
|
|
24
|
+
arrow = _ref.arrow,
|
|
25
|
+
arrowClassName = _ref.arrowClassName,
|
|
26
|
+
_ref$offsetDistance = _ref.offsetDistance,
|
|
27
|
+
offsetDistance = _ref$offsetDistance === void 0 ? 8 : _ref$offsetDistance,
|
|
28
|
+
_ref$offsetSkidding = _ref.offsetSkidding,
|
|
29
|
+
offsetSkidding = _ref$offsetSkidding === void 0 ? 0 : _ref$offsetSkidding,
|
|
30
|
+
compStyles = _ref.style,
|
|
31
|
+
restProps = _objectWithoutProperties(_ref, _excluded);
|
|
32
|
+
|
|
33
|
+
var _React$useState = React.useState(null),
|
|
34
|
+
_React$useState2 = _slicedToArray(_React$useState, 2),
|
|
35
|
+
popperNode = _React$useState2[0],
|
|
36
|
+
setPopperNode = _React$useState2[1];
|
|
37
|
+
|
|
38
|
+
var _React$useState3 = React.useState(0),
|
|
39
|
+
_React$useState4 = _slicedToArray(_React$useState3, 2),
|
|
40
|
+
smallTargetOffsetSkidding = _React$useState4[0],
|
|
41
|
+
setSmallTargetOffsetSkidding = _React$useState4[1];
|
|
42
|
+
|
|
43
|
+
var platform = usePlatform();
|
|
44
|
+
var setExternalRef = useExternRef(getRef, setPopperNode);
|
|
45
|
+
var modifiers = [{
|
|
46
|
+
name: 'preventOverflow'
|
|
47
|
+
}, {
|
|
48
|
+
name: 'offset',
|
|
49
|
+
options: {
|
|
50
|
+
offset: [arrow ? offsetSkidding - smallTargetOffsetSkidding : offsetSkidding, arrow ? offsetDistance + ARROW_HEIGHT : offsetDistance]
|
|
51
|
+
}
|
|
52
|
+
}, {
|
|
53
|
+
name: 'flip'
|
|
54
|
+
}];
|
|
55
|
+
|
|
56
|
+
if (arrow) {
|
|
57
|
+
modifiers.push({
|
|
58
|
+
name: 'arrow',
|
|
59
|
+
options: {
|
|
60
|
+
padding: ARROW_PADDING
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
var _usePopper = usePopper(targetRef.current, popperNode, {
|
|
66
|
+
placement: placement,
|
|
67
|
+
modifiers: modifiers
|
|
68
|
+
}),
|
|
69
|
+
styles = _usePopper.styles,
|
|
70
|
+
state = _usePopper.state,
|
|
71
|
+
attributes = _usePopper.attributes;
|
|
72
|
+
|
|
73
|
+
var resolvedPlacement = state === null || state === void 0 ? void 0 : state.placement;
|
|
74
|
+
var isEdgePlacement = !!resolvedPlacement && resolvedPlacement.includes('-'); // true, если поппер отрисован скраю
|
|
75
|
+
// Если поппер рисуется скраю, то нужно опционально сместить его в тех случаях, когда стрелка не дотягивается до
|
|
76
|
+
// таргета из-за маленьких размеров последнего
|
|
77
|
+
|
|
78
|
+
useIsomorphicLayoutEffect(function () {
|
|
79
|
+
if (arrow && isEdgePlacement) {
|
|
80
|
+
var placementDirection = resolvedPlacement.startsWith('bottom') || resolvedPlacement.startsWith('top') ? 'vertical' : 'horizontal';
|
|
81
|
+
var arrowSize = placementDirection === 'vertical' ? ARROW_WIDTH : ARROW_HEIGHT;
|
|
82
|
+
var targetSize = placementDirection === 'vertical' ? targetRef.current.offsetWidth : targetRef.current.offsetHeight;
|
|
83
|
+
|
|
84
|
+
if (targetSize < arrowSize + 2 * ARROW_PADDING) {
|
|
85
|
+
setSmallTargetOffsetSkidding(ARROW_PADDING + arrowSize / 2);
|
|
86
|
+
}
|
|
87
|
+
} else {
|
|
88
|
+
setSmallTargetOffsetSkidding(0);
|
|
89
|
+
}
|
|
90
|
+
}, [arrow, isEdgePlacement]);
|
|
91
|
+
React.useEffect(function () {
|
|
92
|
+
if (resolvedPlacement) {
|
|
93
|
+
onPlacementChange && onPlacementChange({
|
|
94
|
+
placement: resolvedPlacement
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
}, [resolvedPlacement]);
|
|
98
|
+
var dropdown = createScopedElement("div", _extends({}, restProps, attributes.popper, {
|
|
99
|
+
vkuiClass: getClassName('Popper', platform),
|
|
100
|
+
ref: setExternalRef,
|
|
101
|
+
style: _objectSpread(_objectSpread({}, compStyles), styles.popper)
|
|
102
|
+
}), arrow && createScopedElement("div", _extends({}, attributes.arrow, {
|
|
103
|
+
vkuiClass: "Popper__arrow",
|
|
104
|
+
"data-popper-arrow": true,
|
|
105
|
+
style: styles.arrow
|
|
106
|
+
}), createScopedElement("svg", {
|
|
107
|
+
vkuiClass: "Popper__arrow-in",
|
|
108
|
+
className: arrowClassName,
|
|
109
|
+
width: "20",
|
|
110
|
+
height: "8",
|
|
111
|
+
viewBox: "0 0 20 8",
|
|
112
|
+
fill: "none",
|
|
113
|
+
xmlns: "http://www.w3.org/2000/svg"
|
|
114
|
+
}, createScopedElement("path", {
|
|
115
|
+
fillRule: "evenodd",
|
|
116
|
+
clipRule: "evenodd",
|
|
117
|
+
d: "M10 0C13 0 15.9999 8 20 8H0C3.9749 8 7 0 10 0Z",
|
|
118
|
+
fill: "currentColor"
|
|
119
|
+
}))), createScopedElement("div", {
|
|
120
|
+
vkuiClass: "Popper__content"
|
|
121
|
+
}, children));
|
|
122
|
+
return createScopedElement(AppRootPortal, {
|
|
123
|
+
forcePortal: true,
|
|
124
|
+
vkuiClass: "PopperPortal"
|
|
125
|
+
}, dropdown);
|
|
126
|
+
};
|
|
127
|
+
//# sourceMappingURL=Popper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/Popper/Popper.tsx"],"names":["React","usePopper","AppRootPortal","usePlatform","getClassName","useExternRef","useIsomorphicLayoutEffect","ARROW_PADDING","ARROW_WIDTH","ARROW_HEIGHT","Popper","targetRef","children","getRef","placement","onPlacementChange","arrow","arrowClassName","offsetDistance","offsetSkidding","compStyles","style","restProps","useState","popperNode","setPopperNode","smallTargetOffsetSkidding","setSmallTargetOffsetSkidding","platform","setExternalRef","modifiers","name","options","offset","push","padding","current","styles","state","attributes","resolvedPlacement","isEdgePlacement","includes","placementDirection","startsWith","arrowSize","targetSize","offsetWidth","offsetHeight","useEffect","dropdown","popper"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { usePopper } from 'react-popper';\nimport { AppRootPortal } from '../AppRoot/AppRootPortal';\nimport { HasRef } from '../../types';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { getClassName } from '../../helpers/getClassName';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport './Popper.css';\n\nexport type Placement = 'auto' | 'auto-start' | 'auto-end' | 'top-start' | 'top-end' | 'bottom-start' | 'bottom-end' |\n'right-start' | 'right-end' | 'left-start' | 'left-end' | 'top' | 'bottom' | 'left' | 'right';\n\ntype Modifier = {\n name: string;\n options?: {\n [index: string]: any;\n };\n};\n\nexport interface PopperCommonProps extends React.HTMLAttributes<HTMLElement>, HasRef<HTMLElement> {\n /**\n * По умолчанию компонент выберет наилучшее расположение сам. Но его можно задать извне с помощью этого свойства\n */\n placement?: Placement;\n /**\n * Отступ по вспомогательной оси\n */\n offsetSkidding?: number;\n /**\n * Отступ по главной оси\n */\n offsetDistance?: number;\n arrow?: boolean;\n arrowClassName?: string;\n onPlacementChange?: (data: { placement?: Placement }) => void;\n}\n\nexport interface PopperProps extends PopperCommonProps {\n targetRef?: React.RefObject<HTMLElement>;\n}\n\nconst ARROW_PADDING = 8;\nconst ARROW_WIDTH = 20;\nconst ARROW_HEIGHT = 8;\n\nexport const Popper: React.FC<PopperProps> = ({\n targetRef,\n children,\n getRef,\n placement = 'bottom-start',\n onPlacementChange,\n arrow,\n arrowClassName,\n offsetDistance = 8,\n offsetSkidding = 0,\n style: compStyles,\n ...restProps\n}: PopperProps) => {\n const [popperNode, setPopperNode] = React.useState(null);\n const [smallTargetOffsetSkidding, setSmallTargetOffsetSkidding] = React.useState(0);\n const platform = usePlatform();\n\n const setExternalRef = useExternRef(getRef, setPopperNode);\n\n const modifiers: Modifier[] = [{\n name: 'preventOverflow',\n }, {\n name: 'offset',\n options: {\n offset: [\n arrow ? offsetSkidding - smallTargetOffsetSkidding : offsetSkidding,\n arrow ? offsetDistance + ARROW_HEIGHT : offsetDistance,\n ],\n },\n }, {\n name: 'flip',\n }];\n\n if (arrow) {\n modifiers.push({\n name: 'arrow',\n options: {\n padding: ARROW_PADDING,\n },\n });\n }\n\n const { styles, state, attributes } = usePopper(targetRef.current, popperNode, {\n placement,\n modifiers,\n });\n\n const resolvedPlacement = state?.placement;\n const isEdgePlacement = !!resolvedPlacement && resolvedPlacement.includes('-'); // true, если поппер отрисован скраю\n\n // Если поппер рисуется скраю, то нужно опционально сместить его в тех случаях, когда стрелка не дотягивается до\n // таргета из-за маленьких размеров последнего\n useIsomorphicLayoutEffect(() => {\n if (arrow && isEdgePlacement) {\n const placementDirection = resolvedPlacement.startsWith('bottom') || resolvedPlacement.startsWith('top') ? 'vertical' : 'horizontal';\n\n const arrowSize = placementDirection === 'vertical' ? ARROW_WIDTH : ARROW_HEIGHT;\n const targetSize = placementDirection === 'vertical' ? targetRef.current.offsetWidth : targetRef.current.offsetHeight;\n\n if (targetSize < arrowSize + 2 * ARROW_PADDING) {\n setSmallTargetOffsetSkidding(ARROW_PADDING + arrowSize / 2);\n }\n } else {\n setSmallTargetOffsetSkidding(0);\n }\n }, [arrow, isEdgePlacement]);\n\n React.useEffect(() => {\n if (resolvedPlacement) {\n onPlacementChange && onPlacementChange({ placement: resolvedPlacement });\n }\n }, [resolvedPlacement]);\n\n const dropdown = (\n <div\n {...restProps}\n {...attributes.popper}\n vkuiClass={getClassName('Popper', platform)}\n ref={setExternalRef}\n style={{ ...compStyles, ...styles.popper }}\n >\n {arrow && (\n <div\n {...attributes.arrow}\n vkuiClass=\"Popper__arrow\"\n data-popper-arrow={true}\n style={styles.arrow}\n >\n <svg vkuiClass=\"Popper__arrow-in\" className={arrowClassName} width=\"20\" height=\"8\" viewBox=\"0 0 20 8\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M10 0C13 0 15.9999 8 20 8H0C3.9749 8 7 0 10 0Z\" fill=\"currentColor\" />\n </svg>\n </div>\n )}\n <div vkuiClass=\"Popper__content\">\n {children}\n </div>\n </div>\n );\n\n return <AppRootPortal forcePortal vkuiClass=\"PopperPortal\">{dropdown}</AppRootPortal>;\n};\n"],"file":"Popper.js"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { Placement } from '../Popper/Popper';
|
|
3
|
+
import './RichTooltip.css';
|
|
4
|
+
export interface RichTooltipProps {
|
|
5
|
+
/**
|
|
6
|
+
* Содержимое тултипа
|
|
7
|
+
*/
|
|
8
|
+
content?: React.ReactNode;
|
|
9
|
+
/**
|
|
10
|
+
* Если передан, то тултип будет показыван/скрыт в зависимости от значения свойства
|
|
11
|
+
*/
|
|
12
|
+
shown?: boolean;
|
|
13
|
+
/**
|
|
14
|
+
* Вызывается при каждом изменении видимости тултипа
|
|
15
|
+
*/
|
|
16
|
+
onShownChange?: (shown: boolean) => void;
|
|
17
|
+
/**
|
|
18
|
+
* Количество миллисекунд, после которых произойдет показ дропдауна
|
|
19
|
+
*/
|
|
20
|
+
showDelay?: number;
|
|
21
|
+
/**
|
|
22
|
+
* Количество миллисекунд, после которых произойдет скрытие дропдауна
|
|
23
|
+
*/
|
|
24
|
+
hideDelay?: number;
|
|
25
|
+
/**
|
|
26
|
+
* Либо jsx-элемент (div, button, etc.), либо компонент со свойством `getRootRef`, которое применяется к корневому элементу компонента
|
|
27
|
+
*/
|
|
28
|
+
children?: React.ReactElement;
|
|
29
|
+
/**
|
|
30
|
+
* По умолчанию компонент выберет наилучшее расположение сам. Но его можно задать извне с помощью этого свойства
|
|
31
|
+
*/
|
|
32
|
+
placement?: Placement;
|
|
33
|
+
/**
|
|
34
|
+
* Отступ по вспомогательной оси
|
|
35
|
+
*/
|
|
36
|
+
offsetSkidding?: number;
|
|
37
|
+
/**
|
|
38
|
+
* Отступ по главной оси
|
|
39
|
+
*/
|
|
40
|
+
offsetDistance?: number;
|
|
41
|
+
onPlacementChange?: (data: {
|
|
42
|
+
placement?: Placement;
|
|
43
|
+
}) => void;
|
|
44
|
+
arrow?: boolean;
|
|
45
|
+
}
|
|
46
|
+
export declare const RichTooltip: React.FC<RichTooltipProps>;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/extends";
|
|
2
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
3
|
+
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
4
|
+
var _excluded = ["children", "arrow"];
|
|
5
|
+
import { createScopedElement } from "../../lib/jsxRuntime";
|
|
6
|
+
import { HoverPopper } from "../HoverPopper/HoverPopper";
|
|
7
|
+
import { getClassName } from "../../helpers/getClassName";
|
|
8
|
+
import { usePlatform } from "../../hooks/usePlatform";
|
|
9
|
+
import { useAppearance } from "../../hooks/useAppearance";
|
|
10
|
+
import { classNames } from "../../lib/classNames";
|
|
11
|
+
import { prefixClass } from "../../lib/prefixClass";
|
|
12
|
+
export var RichTooltip = function RichTooltip(_ref) {
|
|
13
|
+
var children = _ref.children,
|
|
14
|
+
_ref$arrow = _ref.arrow,
|
|
15
|
+
arrow = _ref$arrow === void 0 ? true : _ref$arrow,
|
|
16
|
+
popperProps = _objectWithoutProperties(_ref, _excluded);
|
|
17
|
+
|
|
18
|
+
var platform = usePlatform();
|
|
19
|
+
var appearance = useAppearance();
|
|
20
|
+
return createScopedElement(HoverPopper, _extends({
|
|
21
|
+
vkuiClass: classNames(getClassName('RichTooltip', platform), _defineProperty({}, "RichTooltip--".concat(appearance), !!appearance)),
|
|
22
|
+
arrow: arrow,
|
|
23
|
+
arrowClassName: prefixClass('RichTooltip__arrow')
|
|
24
|
+
}, popperProps), children);
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=RichTooltip.js.map
|