@vkontakte/vkui 4.25.2 → 4.26.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 +89 -55
- package/.cache/ts/src/components/ActionSheetItem/ActionSheetItem.d.ts +2 -2
- package/.cache/ts/src/components/AdaptivityProvider/AdaptivityProvider.d.ts +1 -1
- package/.cache/ts/src/components/Alert/Alert.d.ts +2 -2
- package/.cache/ts/src/components/AppRoot/AppRoot.d.ts +0 -1
- package/.cache/ts/src/components/CardScroll/CardScroll.d.ts +9 -2
- package/.cache/ts/src/components/ConfigProvider/ConfigProviderContext.d.ts +1 -1
- package/.cache/ts/src/components/HorizontalScroll/HorizontalScroll.d.ts +1 -1
- package/.cache/ts/src/index.d.ts +3 -3
- package/.cache/ts/src/lib/platform.d.ts +1 -1
- package/.cache/ts/src/tokenized/{tokenized.d.ts → index.d.ts} +0 -0
- package/VKUI_TOKENS_MIGRATION_GUIDE.md +76 -0
- package/dist/cjs/components/ActionSheetItem/ActionSheetItem.d.ts +2 -2
- package/dist/cjs/components/ActionSheetItem/ActionSheetItem.js +5 -9
- package/dist/cjs/components/ActionSheetItem/ActionSheetItem.js.map +1 -1
- package/dist/cjs/components/AdaptivityProvider/AdaptivityProvider.d.ts +1 -1
- package/dist/cjs/components/AdaptivityProvider/AdaptivityProvider.js +4 -6
- package/dist/cjs/components/AdaptivityProvider/AdaptivityProvider.js.map +1 -1
- package/dist/cjs/components/Alert/Alert.d.ts +2 -2
- package/dist/cjs/components/Alert/Alert.js +4 -7
- package/dist/cjs/components/Alert/Alert.js.map +1 -1
- package/dist/cjs/components/AppRoot/AppRoot.d.ts +0 -1
- package/dist/cjs/components/AppRoot/AppRoot.js +2 -5
- package/dist/cjs/components/AppRoot/AppRoot.js.map +1 -1
- package/dist/cjs/components/AppearanceProvider/AppearanceProvider.js +1 -1
- package/dist/cjs/components/AppearanceProvider/AppearanceProvider.js.map +1 -1
- package/dist/cjs/components/Button/Button.js +1 -3
- package/dist/cjs/components/Button/Button.js.map +1 -1
- package/dist/cjs/components/CardScroll/CardScroll.d.ts +9 -2
- package/dist/cjs/components/CardScroll/CardScroll.js +10 -4
- package/dist/cjs/components/CardScroll/CardScroll.js.map +1 -1
- package/dist/cjs/components/ConfigProvider/ConfigProvider.js +40 -6
- package/dist/cjs/components/ConfigProvider/ConfigProvider.js.map +1 -1
- package/dist/cjs/components/ConfigProvider/ConfigProviderContext.d.ts +1 -1
- package/dist/cjs/components/ContentCard/ContentCard.js +8 -0
- package/dist/cjs/components/ContentCard/ContentCard.js.map +1 -1
- package/dist/cjs/components/CustomSelectOption/CustomSelectOption.js +1 -1
- package/dist/cjs/components/CustomSelectOption/CustomSelectOption.js.map +1 -1
- package/dist/cjs/components/HorizontalScroll/HorizontalScroll.d.ts +1 -1
- package/dist/cjs/components/HorizontalScroll/HorizontalScroll.js +5 -1
- package/dist/cjs/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
- package/dist/cjs/components/IconButton/IconButton.js +8 -0
- package/dist/cjs/components/IconButton/IconButton.js.map +1 -1
- package/dist/cjs/components/PanelHeaderButton/PanelHeaderButton.js +14 -5
- package/dist/cjs/components/PanelHeaderButton/PanelHeaderButton.js.map +1 -1
- package/dist/cjs/components/PromoBanner/PromoBanner.js +7 -0
- package/dist/cjs/components/PromoBanner/PromoBanner.js.map +1 -1
- package/dist/cjs/components/Root/Root.js +5 -0
- package/dist/cjs/components/Root/Root.js.map +1 -1
- package/dist/cjs/components/TabbarItem/TabbarItem.js +8 -1
- package/dist/cjs/components/TabbarItem/TabbarItem.js.map +1 -1
- package/dist/cjs/components/View/View.js +29 -18
- package/dist/cjs/components/View/View.js.map +1 -1
- package/dist/cjs/index.d.ts +3 -3
- package/dist/cjs/index.js +6 -6
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/lib/platform.d.ts +1 -1
- package/dist/cjs/lib/platform.js.map +1 -1
- package/dist/cjs/tokenized/{tokenized.d.ts → index.d.ts} +0 -0
- package/dist/cjs/tokenized/{tokenized.js → index.js} +1 -1
- package/dist/cjs/tokenized/index.js.map +1 -0
- package/dist/components/ActionSheetItem/ActionSheetItem.d.ts +2 -2
- package/dist/components/ActionSheetItem/ActionSheetItem.js +4 -6
- package/dist/components/ActionSheetItem/ActionSheetItem.js.map +1 -1
- package/dist/components/AdaptivityProvider/AdaptivityProvider.d.ts +1 -1
- package/dist/components/AdaptivityProvider/AdaptivityProvider.js +2 -3
- package/dist/components/AdaptivityProvider/AdaptivityProvider.js.map +1 -1
- package/dist/components/Alert/Alert.d.ts +2 -2
- package/dist/components/Alert/Alert.js +3 -3
- package/dist/components/Alert/Alert.js.map +1 -1
- package/dist/components/AppRoot/AppRoot.d.ts +0 -1
- package/dist/components/AppRoot/AppRoot.js +1 -3
- package/dist/components/AppRoot/AppRoot.js.map +1 -1
- package/dist/components/AppearanceProvider/AppearanceProvider.js +2 -2
- package/dist/components/AppearanceProvider/AppearanceProvider.js.map +1 -1
- package/dist/components/Button/Button.js +1 -2
- package/dist/components/Button/Button.js.map +1 -1
- package/dist/components/CardScroll/CardScroll.d.ts +9 -2
- package/dist/components/CardScroll/CardScroll.js +8 -3
- package/dist/components/CardScroll/CardScroll.js.map +1 -1
- package/dist/components/ConfigProvider/ConfigProvider.js +39 -6
- package/dist/components/ConfigProvider/ConfigProvider.js.map +1 -1
- package/dist/components/ConfigProvider/ConfigProviderContext.d.ts +1 -1
- package/dist/components/ContentCard/ContentCard.js +7 -0
- package/dist/components/ContentCard/ContentCard.js.map +1 -1
- package/dist/components/CustomSelectOption/CustomSelectOption.js +1 -1
- package/dist/components/CustomSelectOption/CustomSelectOption.js.map +1 -1
- package/dist/components/HorizontalScroll/HorizontalScroll.d.ts +1 -1
- package/dist/components/HorizontalScroll/HorizontalScroll.js +3 -1
- package/dist/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
- package/dist/components/IconButton/IconButton.js +7 -0
- package/dist/components/IconButton/IconButton.js.map +1 -1
- package/dist/components/PanelHeaderButton/PanelHeaderButton.js +13 -6
- package/dist/components/PanelHeaderButton/PanelHeaderButton.js.map +1 -1
- package/dist/components/PromoBanner/PromoBanner.js +6 -0
- package/dist/components/PromoBanner/PromoBanner.js.map +1 -1
- package/dist/components/Root/Root.js +5 -0
- package/dist/components/Root/Root.js.map +1 -1
- package/dist/components/TabbarItem/TabbarItem.js +7 -1
- package/dist/components/TabbarItem/TabbarItem.js.map +1 -1
- package/dist/components/View/View.js +29 -18
- package/dist/components/View/View.js.map +1 -1
- package/dist/components.css +14 -11
- package/dist/components.css.map +1 -1
- package/dist/cssm/components/ActionSheetItem/ActionSheetItem.js +4 -6
- package/dist/cssm/components/ActionSheetItem/ActionSheetItem.js.map +1 -1
- package/dist/cssm/components/AdaptivityProvider/AdaptivityProvider.js +2 -3
- package/dist/cssm/components/AdaptivityProvider/AdaptivityProvider.js.map +1 -1
- package/dist/cssm/components/Alert/Alert.js +3 -3
- package/dist/cssm/components/Alert/Alert.js.map +1 -1
- package/dist/cssm/components/AppRoot/AppRoot.js +1 -3
- package/dist/cssm/components/AppRoot/AppRoot.js.map +1 -1
- package/dist/cssm/components/AppearanceProvider/AppearanceProvider.js +2 -2
- package/dist/cssm/components/AppearanceProvider/AppearanceProvider.js.map +1 -1
- package/dist/cssm/components/Button/Button.css +9 -11
- package/dist/cssm/components/Button/Button.js +1 -2
- package/dist/cssm/components/Button/Button.js.map +1 -1
- package/dist/cssm/components/Card/Card.css +6 -1
- package/dist/cssm/components/CardScroll/CardScroll.css +1 -1
- package/dist/cssm/components/CardScroll/CardScroll.js +8 -3
- package/dist/cssm/components/CardScroll/CardScroll.js.map +1 -1
- package/dist/cssm/components/ConfigProvider/ConfigProvider.js +39 -6
- package/dist/cssm/components/ConfigProvider/ConfigProvider.js.map +1 -1
- package/dist/cssm/components/ContentCard/ContentCard.js +7 -0
- package/dist/cssm/components/ContentCard/ContentCard.js.map +1 -1
- package/dist/cssm/components/CustomSelectOption/CustomSelectOption.js +1 -1
- package/dist/cssm/components/CustomSelectOption/CustomSelectOption.js.map +1 -1
- package/dist/cssm/components/HorizontalScroll/HorizontalScroll.js +3 -1
- package/dist/cssm/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
- package/dist/cssm/components/HorizontalScroll/HorizontalScrollArrow.css +1 -1
- package/dist/cssm/components/IconButton/IconButton.js +7 -0
- package/dist/cssm/components/IconButton/IconButton.js.map +1 -1
- package/dist/cssm/components/PanelHeaderButton/PanelHeaderButton.js +13 -6
- package/dist/cssm/components/PanelHeaderButton/PanelHeaderButton.js.map +1 -1
- package/dist/cssm/components/PromoBanner/PromoBanner.js +6 -0
- package/dist/cssm/components/PromoBanner/PromoBanner.js.map +1 -1
- package/dist/cssm/components/Root/Root.js +5 -0
- package/dist/cssm/components/Root/Root.js.map +1 -1
- package/dist/cssm/components/TabbarItem/TabbarItem.js +7 -1
- package/dist/cssm/components/TabbarItem/TabbarItem.js.map +1 -1
- package/dist/cssm/components/View/View.js +29 -18
- package/dist/cssm/components/View/View.js.map +1 -1
- package/dist/cssm/index.js +3 -3
- package/dist/cssm/index.js.map +1 -1
- package/dist/cssm/lib/platform.js.map +1 -1
- package/dist/cssm/styles/components.css +14 -11
- package/dist/cssm/styles/themes.css +1 -1
- package/dist/{tokenized/tokenized.js → cssm/tokenized/index.js} +1 -1
- package/dist/cssm/tokenized/index.js.map +1 -0
- package/dist/index.d.ts +3 -3
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/lib/platform.d.ts +1 -1
- package/dist/lib/platform.js.map +1 -1
- package/dist/tokenized/{tokenized.d.ts → index.d.ts} +0 -0
- package/dist/{cssm/tokenized/tokenized.js → tokenized/index.js} +1 -1
- package/dist/tokenized/index.js.map +1 -0
- package/dist/vkui.css +15 -12
- package/dist/vkui.css.map +1 -1
- package/package.json +3 -3
- package/postcss.config.js +10 -1
- package/src/components/ActionSheetItem/ActionSheetItem.tsx +5 -6
- package/src/components/AdaptivityProvider/AdaptivityProvider.tsx +1 -2
- package/src/components/Alert/Alert.tsx +3 -2
- package/src/components/AppRoot/AppRoot.tsx +0 -3
- package/src/components/AppearanceProvider/AppearanceProvider.tsx +2 -2
- package/src/components/Button/Button.css +9 -39
- package/src/components/Button/Button.tsx +3 -4
- package/src/components/Card/Card.css +14 -22
- package/src/components/CardScroll/CardScroll.css +10 -23
- package/src/components/CardScroll/CardScroll.tsx +15 -4
- package/src/components/ConfigProvider/ConfigProvider.tsx +43 -7
- package/src/components/ContentCard/ContentCard.tsx +6 -0
- package/src/components/CustomSelectOption/CustomSelectOption.tsx +1 -1
- package/src/components/HorizontalScroll/HorizontalScroll.tsx +8 -2
- package/src/components/HorizontalScroll/HorizontalScrollArrow.css +3 -1
- package/src/components/IconButton/IconButton.tsx +8 -0
- package/src/components/PanelHeaderButton/PanelHeaderButton.tsx +19 -7
- package/src/components/PromoBanner/PromoBanner.tsx +8 -0
- package/src/components/Root/Root.tsx +12 -2
- package/src/components/TabbarItem/TabbarItem.tsx +8 -1
- package/src/components/View/View.tsx +15 -2
- package/src/index.ts +3 -3
- package/src/lib/platform.ts +5 -1
- package/src/styles/themes.css +6 -0
- package/src/testing/utils.tsx +1 -1
- package/src/tokenized/{tokenized.ts → index.ts} +0 -0
- package/dist/cjs/tokenized/tokenized.js.map +0 -1
- package/dist/cssm/tokenized/tokenized.js.map +0 -1
- package/dist/tokenized/tokenized.js.map +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import _objectSpread from "@babel/runtime/helpers/objectSpread2";
|
|
2
2
|
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
3
3
|
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
4
|
-
var _excluded = ["children"
|
|
4
|
+
var _excluded = ["children"];
|
|
5
5
|
import { createScopedElement } from "../../lib/jsxRuntime";
|
|
6
6
|
import * as React from "react";
|
|
7
7
|
import { canUseDOM, useDOM } from "../../lib/dom";
|
|
@@ -12,6 +12,7 @@ import { noop } from "../../lib/utils";
|
|
|
12
12
|
import { warnOnce } from "../../lib/warnOnce";
|
|
13
13
|
import { normalizeScheme, Scheme } from "../../helpers/scheme";
|
|
14
14
|
import { AppearanceProvider } from "../AppearanceProvider/AppearanceProvider";
|
|
15
|
+
import { Platform } from "../../lib/platform";
|
|
15
16
|
var warn = warnOnce("ConfigProvider");
|
|
16
17
|
|
|
17
18
|
function useSchemeDetector(node, _scheme) {
|
|
@@ -53,23 +54,47 @@ var deriveAppearance = function deriveAppearance(scheme) {
|
|
|
53
54
|
return scheme === Scheme.SPACE_GRAY || scheme === Scheme.VKCOM_DARK ? "dark" : "light";
|
|
54
55
|
};
|
|
55
56
|
|
|
57
|
+
var generateVKUITokensClassName = function generateVKUITokensClassName(platform, appearance) {
|
|
58
|
+
var tokensPlatform;
|
|
59
|
+
|
|
60
|
+
switch (platform) {
|
|
61
|
+
case Platform.ANDROID:
|
|
62
|
+
tokensPlatform = "vkBase";
|
|
63
|
+
break;
|
|
64
|
+
|
|
65
|
+
case Platform.IOS:
|
|
66
|
+
tokensPlatform = "vkIOS";
|
|
67
|
+
break;
|
|
68
|
+
|
|
69
|
+
case Platform.VKCOM:
|
|
70
|
+
tokensPlatform = "vkCom";
|
|
71
|
+
break;
|
|
72
|
+
|
|
73
|
+
default:
|
|
74
|
+
tokensPlatform = platform;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
return "vkui--".concat(tokensPlatform, "--").concat(appearance);
|
|
78
|
+
};
|
|
79
|
+
|
|
56
80
|
var ConfigProvider = function ConfigProvider(_ref) {
|
|
57
81
|
var children = _ref.children,
|
|
58
|
-
schemeTarget = _ref.schemeTarget,
|
|
59
82
|
props = _objectWithoutProperties(_ref, _excluded);
|
|
60
83
|
|
|
61
84
|
var config = _objectSpread(_objectSpread({}, defaultConfigProviderProps), props);
|
|
62
85
|
|
|
86
|
+
var platform = config.platform,
|
|
87
|
+
appearance = config.appearance;
|
|
63
88
|
var scheme = normalizeScheme({
|
|
64
89
|
scheme: config.scheme,
|
|
65
|
-
platform:
|
|
66
|
-
appearance:
|
|
90
|
+
platform: platform,
|
|
91
|
+
appearance: appearance
|
|
67
92
|
});
|
|
68
93
|
|
|
69
94
|
var _useDOM = useDOM(),
|
|
70
95
|
document = _useDOM.document;
|
|
71
96
|
|
|
72
|
-
var target =
|
|
97
|
+
var target = document === null || document === void 0 ? void 0 : document.body;
|
|
73
98
|
useIsomorphicLayoutEffect(function () {
|
|
74
99
|
if (scheme === "inherit") {
|
|
75
100
|
return noop;
|
|
@@ -85,8 +110,16 @@ var ConfigProvider = function ConfigProvider(_ref) {
|
|
|
85
110
|
};
|
|
86
111
|
}, [scheme]);
|
|
87
112
|
var realScheme = useSchemeDetector(target, scheme);
|
|
113
|
+
var derivedAppearance = deriveAppearance(realScheme);
|
|
114
|
+
useIsomorphicLayoutEffect(function () {
|
|
115
|
+
var VKUITokensClassName = generateVKUITokensClassName(platform, derivedAppearance);
|
|
116
|
+
target === null || target === void 0 ? void 0 : target.classList.add(VKUITokensClassName);
|
|
117
|
+
return function () {
|
|
118
|
+
target === null || target === void 0 ? void 0 : target.classList.remove(VKUITokensClassName);
|
|
119
|
+
};
|
|
120
|
+
}, [platform, derivedAppearance]);
|
|
88
121
|
var configContext = useObjectMemo(_objectSpread({
|
|
89
|
-
appearance:
|
|
122
|
+
appearance: derivedAppearance
|
|
90
123
|
}, config));
|
|
91
124
|
return createScopedElement(ConfigProviderContext.Provider, {
|
|
92
125
|
value: configContext
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/ConfigProvider/ConfigProvider.tsx"],"names":["React","canUseDOM","useDOM","ConfigProviderContext","defaultConfigProviderProps","useIsomorphicLayoutEffect","useObjectMemo","noop","warnOnce","normalizeScheme","Scheme","AppearanceProvider","warn","useSchemeDetector","node","_scheme","inherit","getScheme","useCallback","undefined","getAttribute","useState","resolvedScheme","setScheme","useEffect","observer","MutationObserver","observe","attributes","attributeFilter","disconnect","deriveAppearance","scheme","SPACE_GRAY","VKCOM_DARK","
|
|
1
|
+
{"version":3,"sources":["../../../src/components/ConfigProvider/ConfigProvider.tsx"],"names":["React","canUseDOM","useDOM","ConfigProviderContext","defaultConfigProviderProps","useIsomorphicLayoutEffect","useObjectMemo","noop","warnOnce","normalizeScheme","Scheme","AppearanceProvider","Platform","warn","useSchemeDetector","node","_scheme","inherit","getScheme","useCallback","undefined","getAttribute","useState","resolvedScheme","setScheme","useEffect","observer","MutationObserver","observe","attributes","attributeFilter","disconnect","deriveAppearance","scheme","SPACE_GRAY","VKCOM_DARK","generateVKUITokensClassName","platform","appearance","tokensPlatform","ANDROID","IOS","VKCOM","ConfigProvider","children","props","config","document","target","body","process","env","NODE_ENV","hasAttribute","setAttribute","removeAttribute","realScheme","derivedAppearance","VKUITokensClassName","classList","add","remove","configContext"],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport { AppearanceType } from \"@vkontakte/vk-bridge\";\nimport { canUseDOM, useDOM } from \"../../lib/dom\";\nimport {\n ConfigProviderContext,\n ConfigProviderContextInterface,\n defaultConfigProviderProps,\n} from \"./ConfigProviderContext\";\nimport { useIsomorphicLayoutEffect } from \"../../lib/useIsomorphicLayoutEffect\";\nimport { useObjectMemo } from \"../../hooks/useObjectMemo\";\nimport { noop } from \"../../lib/utils\";\nimport { warnOnce } from \"../../lib/warnOnce\";\nimport {\n normalizeScheme,\n AppearanceScheme,\n Scheme,\n} from \"../../helpers/scheme\";\nimport { AppearanceProvider } from \"../AppearanceProvider/AppearanceProvider\";\nimport { Platform } from \"../../lib/platform\";\n\nexport interface ConfigProviderProps extends ConfigProviderContextInterface {\n /**\n * @deprecated будет удалено в 5.0.0, устанавливать тему следует через appearance\n * Цветовая схема приложения\n */\n scheme?: AppearanceScheme;\n}\n\nconst warn = warnOnce(\"ConfigProvider\");\n\nfunction useSchemeDetector(\n node: HTMLElement | undefined | null,\n _scheme: Scheme | \"inherit\"\n) {\n const inherit = _scheme === \"inherit\";\n const getScheme = React.useCallback(() => {\n if (!inherit || !canUseDOM || !node) {\n return undefined;\n }\n return node.getAttribute(\"scheme\") as Scheme;\n }, [inherit, node]);\n const [resolvedScheme, setScheme] = React.useState(getScheme());\n\n React.useEffect(() => {\n if (!inherit || !node) {\n return noop;\n }\n setScheme(getScheme());\n const observer = new MutationObserver(() => setScheme(getScheme()));\n observer.observe(node, { attributes: true, attributeFilter: [\"scheme\"] });\n return () => observer.disconnect();\n }, [getScheme, inherit, node]);\n\n return _scheme === \"inherit\" ? resolvedScheme : _scheme;\n}\n\nconst deriveAppearance = (scheme: Scheme | undefined): AppearanceType =>\n scheme === Scheme.SPACE_GRAY || scheme === Scheme.VKCOM_DARK\n ? \"dark\"\n : \"light\";\n\nconst generateVKUITokensClassName = (\n platform: string,\n appearance: string\n): string => {\n let tokensPlatform;\n switch (platform) {\n case Platform.ANDROID:\n tokensPlatform = \"vkBase\";\n break;\n case Platform.IOS:\n tokensPlatform = \"vkIOS\";\n break;\n case Platform.VKCOM:\n tokensPlatform = \"vkCom\";\n break;\n default:\n tokensPlatform = platform;\n }\n\n return `vkui--${tokensPlatform}--${appearance}`;\n};\n\nconst ConfigProvider: React.FC<ConfigProviderProps> = ({\n children,\n ...props\n}) => {\n const config = { ...defaultConfigProviderProps, ...props };\n const { platform, appearance } = config;\n const scheme = normalizeScheme({\n scheme: config.scheme,\n platform: platform,\n appearance: appearance,\n });\n const { document } = useDOM();\n const target = document?.body;\n\n useIsomorphicLayoutEffect(() => {\n if (scheme === \"inherit\") {\n return noop;\n }\n if (\n process.env.NODE_ENV === \"development\" &&\n target?.hasAttribute(\"scheme\")\n ) {\n warn(\n '<body scheme> was set before VKUI mount - did you forget scheme=\"inherit\"?'\n );\n }\n target?.setAttribute(\"scheme\", scheme);\n return () => target?.removeAttribute(\"scheme\");\n }, [scheme]);\n\n const realScheme = useSchemeDetector(target, scheme);\n const derivedAppearance = deriveAppearance(realScheme);\n\n useIsomorphicLayoutEffect(() => {\n const VKUITokensClassName = generateVKUITokensClassName(\n platform,\n derivedAppearance\n );\n\n target?.classList.add(VKUITokensClassName);\n\n return () => {\n target?.classList.remove(VKUITokensClassName);\n };\n }, [platform, derivedAppearance]);\n\n const configContext = useObjectMemo({\n appearance: derivedAppearance,\n ...config,\n });\n\n return (\n <ConfigProviderContext.Provider value={configContext}>\n <AppearanceProvider appearance={configContext.appearance}>\n {children}\n </AppearanceProvider>\n </ConfigProviderContext.Provider>\n );\n};\n\n// eslint-disable-next-line import/no-default-export\nexport default ConfigProvider;\n"],"file":"ConfigProvider.js"}
|
|
@@ -37,7 +37,7 @@ export declare const defaultConfigProviderProps: {
|
|
|
37
37
|
webviewType: WebviewType;
|
|
38
38
|
isWebView: boolean;
|
|
39
39
|
transitionMotionEnabled: boolean;
|
|
40
|
-
platform:
|
|
40
|
+
platform: string;
|
|
41
41
|
hasNewTokens: boolean;
|
|
42
42
|
};
|
|
43
43
|
export declare const ConfigProviderContext: React.Context<ConfigProviderContextInterface>;
|
|
@@ -10,7 +10,9 @@ import Tappable from "../Tappable/Tappable";
|
|
|
10
10
|
import { getClassName } from "../../helpers/getClassName";
|
|
11
11
|
import { usePlatform } from "../../hooks/usePlatform";
|
|
12
12
|
import { hasReactNode } from "../../lib/utils";
|
|
13
|
+
import { warnOnce } from "../../lib/warnOnce";
|
|
13
14
|
import { classNames } from "../../lib/classNames";
|
|
15
|
+
var warn = warnOnce("ContentCard");
|
|
14
16
|
|
|
15
17
|
var ContentCard = function ContentCard(props) {
|
|
16
18
|
var subtitle = props.subtitle,
|
|
@@ -39,6 +41,11 @@ var ContentCard = function ContentCard(props) {
|
|
|
39
41
|
|
|
40
42
|
var platform = usePlatform();
|
|
41
43
|
var source = image || src;
|
|
44
|
+
|
|
45
|
+
if (image && process.env.NODE_ENV === "development") {
|
|
46
|
+
warn("Свойство image устарело и будет удалено в 5.0.0. Используйте src");
|
|
47
|
+
}
|
|
48
|
+
|
|
42
49
|
return createScopedElement(Card, {
|
|
43
50
|
mode: mode,
|
|
44
51
|
getRootRef: getRootRef,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/ContentCard/ContentCard.tsx"],"names":["Card","Caption","Title","Text","Tappable","getClassName","usePlatform","hasReactNode","classNames","ContentCard","props","subtitle","header","text","caption","className","mode","style","getRootRef","getRef","maxHeight","image","src","srcSet","alt","width","height","crossOrigin","decoding","loading","referrerPolicy","sizes","useMap","restProps","platform","source","disabled","onClick","href","defaultProps"],"mappings":";;;;AACA,OAAOA,IAAP;AACA,OAAOC,OAAP;AACA,OAAOC,KAAP;AACA,OAAOC,IAAP;AACA,OAAOC,QAAP;AACA,SAASC,YAAT;AACA,SAASC,WAAT;AACA,SAASC,YAAT;AAEA,SAASC,UAAT
|
|
1
|
+
{"version":3,"sources":["../../../src/components/ContentCard/ContentCard.tsx"],"names":["Card","Caption","Title","Text","Tappable","getClassName","usePlatform","hasReactNode","warnOnce","classNames","warn","ContentCard","props","subtitle","header","text","caption","className","mode","style","getRootRef","getRef","maxHeight","image","src","srcSet","alt","width","height","crossOrigin","decoding","loading","referrerPolicy","sizes","useMap","restProps","platform","source","process","env","NODE_ENV","disabled","onClick","href","defaultProps"],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport Card, { CardProps } from \"../Card/Card\";\nimport Caption from \"../Typography/Caption/Caption\";\nimport Title from \"../Typography/Title/Title\";\nimport Text from \"../Typography/Text/Text\";\nimport Tappable, { TappableProps } from \"../Tappable/Tappable\";\nimport { getClassName } from \"../../helpers/getClassName\";\nimport { usePlatform } from \"../../hooks/usePlatform\";\nimport { hasReactNode } from \"../../lib/utils\";\nimport { warnOnce } from \"../../lib/warnOnce\";\nimport { HasRef, HasRootRef } from \"../../types\";\nimport { classNames } from \"../../lib/classNames\";\nimport \"./ContentCard.css\";\n\nexport interface ContentCardProps\n extends HasRootRef<HTMLDivElement>,\n Omit<TappableProps, \"getRootRef\" | \"crossOrigin\">,\n Omit<\n React.ImgHTMLAttributes<HTMLImageElement>,\n keyof React.HTMLAttributes<HTMLImageElement>\n >,\n HasRef<HTMLImageElement> {\n /**\n Текст над заголовком\n */\n subtitle?: React.ReactNode;\n /**\n Заголовок\n */\n header?: React.ReactNode;\n /**\n Текст\n */\n text?: React.ReactNode;\n /**\n Нижний текст\n */\n caption?: React.ReactNode;\n /**\n @deprecated будет удалено в 5.0.0. Используйте src\n */\n image?: string;\n /**\n Максимальная высота изображения\n */\n maxHeight?: number;\n mode?: CardProps[\"mode\"];\n}\n\nconst warn = warnOnce(\"ContentCard\");\nconst ContentCard: React.FC<ContentCardProps> = (props: ContentCardProps) => {\n const {\n subtitle,\n header,\n text,\n caption,\n // card props\n className,\n mode,\n style,\n getRootRef,\n // img props\n getRef,\n maxHeight,\n image,\n src,\n srcSet,\n alt,\n width,\n height,\n crossOrigin,\n decoding,\n loading,\n referrerPolicy,\n sizes,\n useMap,\n ...restProps\n } = props;\n const platform = usePlatform();\n\n const source = image || src;\n\n if (image && process.env.NODE_ENV === \"development\") {\n warn(\"Свойство image устарело и будет удалено в 5.0.0. Используйте src\");\n }\n\n return (\n <Card\n mode={mode}\n getRootRef={getRootRef}\n vkuiClass={classNames(getClassName(\"ContentCard\", platform), {\n \"ContentCard--disabled\": restProps.disabled,\n })}\n style={style}\n className={className}\n >\n <Tappable\n {...restProps}\n disabled={restProps.disabled || (!restProps.onClick && !restProps.href)}\n hasHover={false}\n hasActive={false}\n vkuiClass=\"ContentCard__tappable\"\n >\n {(source || srcSet) && (\n <img\n ref={getRef}\n vkuiClass=\"ContentCard__img\"\n src={source}\n srcSet={srcSet}\n alt={alt}\n crossOrigin={crossOrigin}\n decoding={decoding}\n loading={loading}\n referrerPolicy={referrerPolicy}\n sizes={sizes}\n useMap={useMap}\n height={height}\n style={{ maxHeight }}\n width=\"100%\"\n />\n )}\n <div vkuiClass=\"ContentCard__body\">\n {hasReactNode(subtitle) && (\n <Caption\n caps\n vkuiClass=\"ContentCard__text\"\n weight=\"semibold\"\n level=\"3\"\n >\n {subtitle}\n </Caption>\n )}\n {hasReactNode(header) && (\n <Title vkuiClass=\"ContentCard__text\" weight=\"semibold\" level=\"3\">\n {header}\n </Title>\n )}\n {hasReactNode(text) && (\n <Text vkuiClass=\"ContentCard__text\" weight=\"regular\">\n {text}\n </Text>\n )}\n {hasReactNode(caption) && (\n <Caption vkuiClass=\"ContentCard__text\" weight=\"regular\" level=\"1\">\n {caption}\n </Caption>\n )}\n </div>\n </Tappable>\n </Card>\n );\n};\n\nContentCard.defaultProps = {\n mode: \"shadow\",\n};\n\n// eslint-disable-next-line import/no-default-export\nexport default ContentCard;\n"],"file":"ContentCard.js"}
|
|
@@ -28,7 +28,7 @@ var CustomSelectOption = function CustomSelectOption(_ref) {
|
|
|
28
28
|
sizeY = _useAdaptivity.sizeY;
|
|
29
29
|
|
|
30
30
|
if (!!option && process.env.NODE_ENV === "development") {
|
|
31
|
-
warn("Свойство option было добавлено по ошибке будет
|
|
31
|
+
warn("Свойство option было добавлено по ошибке и будет удалено в 5.0.0.");
|
|
32
32
|
}
|
|
33
33
|
|
|
34
34
|
return createScopedElement(Text, _extends({}, restProps, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/CustomSelectOption/CustomSelectOption.tsx"],"names":["Icon16Done","classNames","hasReactNode","Text","Caption","useAdaptivity","warnOnce","warn","CustomSelectOption","children","hovered","selected","before","after","option","description","disabled","restProps","title","undefined","sizeY","process","env","NODE_ENV"],"mappings":";;;;AACA,SAASA,UAAT,QAA2B,kBAA3B;AACA,SAASC,UAAT;AACA,SAASC,YAAT;AACA,OAAOC,IAAP;AACA,OAAOC,OAAP;AAEA,SAASC,aAAT;AACA,SAASC,QAAT;AAgBA,IAAMC,IAAI,GAAGD,QAAQ,CAAC,oBAAD,CAArB;;AAEA,IAAME,kBAAqD,GAAG,SAAxDA,kBAAwD,OAU/B;AAAA,MAT7BC,QAS6B,QAT7BA,QAS6B;AAAA,MAR7BC,OAQ6B,QAR7BA,OAQ6B;AAAA,MAP7BC,QAO6B,QAP7BA,QAO6B;AAAA,MAN7BC,MAM6B,QAN7BA,MAM6B;AAAA,MAL7BC,KAK6B,QAL7BA,KAK6B;AAAA,MAJ7BC,MAI6B,QAJ7BA,MAI6B;AAAA,MAH7BC,WAG6B,QAH7BA,WAG6B;AAAA,MAF7BC,QAE6B,QAF7BA,QAE6B;AAAA,MAD1BC,SAC0B;;AAC7B,MAAMC,KAAK,GAAG,OAAOT,QAAP,KAAoB,QAApB,GAA+BA,QAA/B,GAA0CU,SAAxD;;AACA,uBAAkBd,aAAa,EAA/B;AAAA,MAAQe,KAAR,kBAAQA,KAAR;;AAEA,MAAI,CAAC,CAACN,MAAF,IAAYO,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,aAAzC,EAAwD;AACtDhB,IAAAA,IAAI,CAAC,
|
|
1
|
+
{"version":3,"sources":["../../../src/components/CustomSelectOption/CustomSelectOption.tsx"],"names":["Icon16Done","classNames","hasReactNode","Text","Caption","useAdaptivity","warnOnce","warn","CustomSelectOption","children","hovered","selected","before","after","option","description","disabled","restProps","title","undefined","sizeY","process","env","NODE_ENV"],"mappings":";;;;AACA,SAASA,UAAT,QAA2B,kBAA3B;AACA,SAASC,UAAT;AACA,SAASC,YAAT;AACA,OAAOC,IAAP;AACA,OAAOC,OAAP;AAEA,SAASC,aAAT;AACA,SAASC,QAAT;AAgBA,IAAMC,IAAI,GAAGD,QAAQ,CAAC,oBAAD,CAArB;;AAEA,IAAME,kBAAqD,GAAG,SAAxDA,kBAAwD,OAU/B;AAAA,MAT7BC,QAS6B,QAT7BA,QAS6B;AAAA,MAR7BC,OAQ6B,QAR7BA,OAQ6B;AAAA,MAP7BC,QAO6B,QAP7BA,QAO6B;AAAA,MAN7BC,MAM6B,QAN7BA,MAM6B;AAAA,MAL7BC,KAK6B,QAL7BA,KAK6B;AAAA,MAJ7BC,MAI6B,QAJ7BA,MAI6B;AAAA,MAH7BC,WAG6B,QAH7BA,WAG6B;AAAA,MAF7BC,QAE6B,QAF7BA,QAE6B;AAAA,MAD1BC,SAC0B;;AAC7B,MAAMC,KAAK,GAAG,OAAOT,QAAP,KAAoB,QAApB,GAA+BA,QAA/B,GAA0CU,SAAxD;;AACA,uBAAkBd,aAAa,EAA/B;AAAA,MAAQe,KAAR,kBAAQA,KAAR;;AAEA,MAAI,CAAC,CAACN,MAAF,IAAYO,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,aAAzC,EAAwD;AACtDhB,IAAAA,IAAI,CAAC,mEAAD,CAAJ;AACD;;AAED,SACE,oBAAC,IAAD,eACMU,SADN;AAEE,IAAA,SAAS,EAAC,KAFZ;AAGE,IAAA,MAAM,EAAC,SAHT;AAIE,IAAA,IAAI,EAAC,QAJP;AAKE,IAAA,KAAK,EAAEC,KALT;AAME,qBAAeF,QANjB;AAOE,qBAAeL,QAPjB;AAQE,IAAA,SAAS,EAAEV,UAAU,CACnB,oBADmB,sCAEUmB,KAFV,GAGnB;AACE,mCAA6BV,OAAO,IAAI,CAACM,QAD3C;AAEE,sCAAgCL,QAFlC;AAGE,sCAAgCK;AAHlC,KAHmB;AARvB,MAkBGd,YAAY,CAACU,MAAD,CAAZ,IACC;AAAK,IAAA,SAAS,EAAC;AAAf,KAA6CA,MAA7C,CAnBJ,EAqBE;AAAK,IAAA,SAAS,EAAC;AAAf,KACE;AAAK,IAAA,SAAS,EAAC;AAAf,KAA+CH,QAA/C,CADF,EAEGP,YAAY,CAACa,WAAD,CAAZ,IACC,oBAAC,OAAD;AACE,IAAA,KAAK,EAAC,GADR;AAEE,IAAA,MAAM,EAAC,SAFT;AAGE,IAAA,SAAS,EAAC;AAHZ,KAKGA,WALH,CAHJ,CArBF,EAiCE;AAAK,IAAA,SAAS,EAAC;AAAf,KACGb,YAAY,CAACW,KAAD,CAAZ,IACC;AAAK,IAAA,SAAS,EAAC;AAAf,KAA8CA,KAA9C,CAFJ,EAIGF,QAAQ,IACP,oBAAC,UAAD;AAAY,IAAA,SAAS,EAAC;AAAtB,IALJ,CAjCF,CADF;AA4CD,CA9DD,C,CAgEA;;;AACA,eAAeH,kBAAf","sourcesContent":["import * as React from \"react\";\nimport { Icon16Done } from \"@vkontakte/icons\";\nimport { classNames } from \"../../lib/classNames\";\nimport { hasReactNode } from \"../../lib/utils\";\nimport Text from \"../Typography/Text/Text\";\nimport Caption from \"../Typography/Caption/Caption\";\nimport { HasRootRef } from \"../../types\";\nimport { useAdaptivity } from \"../../hooks/useAdaptivity\";\nimport { warnOnce } from \"../../lib/warnOnce\";\nimport \"./CustomSelectOption.css\";\n\nexport interface CustomSelectOptionProps\n extends React.HTMLAttributes<HTMLDivElement>,\n HasRootRef<HTMLDivElement> {\n option?: any;\n selected?: boolean;\n focused?: boolean;\n hovered?: boolean;\n before?: React.ReactNode;\n after?: React.ReactNode;\n description?: React.ReactNode;\n disabled?: boolean;\n}\n\nconst warn = warnOnce(\"CustomSelectOption\");\n\nconst CustomSelectOption: React.FC<CustomSelectOptionProps> = ({\n children,\n hovered,\n selected,\n before,\n after,\n option,\n description,\n disabled,\n ...restProps\n}: CustomSelectOptionProps) => {\n const title = typeof children === \"string\" ? children : undefined;\n const { sizeY } = useAdaptivity();\n\n if (!!option && process.env.NODE_ENV === \"development\") {\n warn(\"Свойство option было добавлено по ошибке и будет удалено в 5.0.0.\");\n }\n\n return (\n <Text\n {...restProps}\n Component=\"div\"\n weight=\"regular\"\n role=\"option\"\n title={title}\n aria-disabled={disabled}\n aria-selected={selected}\n vkuiClass={classNames(\n \"CustomSelectOption\",\n `CustomSelectOption--sizeY-${sizeY}`,\n {\n \"CustomSelectOption--hover\": hovered && !disabled,\n \"CustomSelectOption--selected\": selected,\n \"CustomSelectOption--disabled\": disabled,\n }\n )}\n >\n {hasReactNode(before) && (\n <div vkuiClass=\"CustomSelectOption__before\">{before}</div>\n )}\n <div vkuiClass=\"CustomSelectOption__main\">\n <div vkuiClass=\"CustomSelectOption__children\">{children}</div>\n {hasReactNode(description) && (\n <Caption\n level=\"1\"\n weight=\"regular\"\n vkuiClass=\"CustomSelectOption__description\"\n >\n {description}\n </Caption>\n )}\n </div>\n <div vkuiClass=\"CustomSelectOption__after\">\n {hasReactNode(after) && (\n <div className=\"CustomSelectOption__afterIn\">{after}</div>\n )}\n {selected && (\n <Icon16Done vkuiClass=\"CustomSelectOption__selectedIcon\" />\n )}\n </div>\n </Text>\n );\n};\n\n// eslint-disable-next-line import/no-default-export\nexport default CustomSelectOption;\n"],"file":"CustomSelectOption.js"}
|
|
@@ -12,7 +12,7 @@ export interface HorizontalScrollProps extends React.HTMLAttributes<HTMLDivEleme
|
|
|
12
12
|
* Функция для расчета величины прокрутки при клике на правую стрелку.
|
|
13
13
|
*/
|
|
14
14
|
getScrollToRight?: ScrollPositionHandler;
|
|
15
|
-
showArrows?: boolean;
|
|
15
|
+
showArrows?: boolean | "always";
|
|
16
16
|
scrollAnimationDuration?: number;
|
|
17
17
|
}
|
|
18
18
|
declare const _default: React.FC<Pick<HorizontalScrollProps, "hidden" | "dir" | "slot" | "style" | "title" | "color" | "translate" | "prefix" | "children" | "className" | "id" | "lang" | "role" | "tabIndex" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "contentEditable" | "contextMenu" | "draggable" | "placeholder" | "spellCheck" | "radioGroup" | "about" | "datatype" | "inlist" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "getRef" | "scrollAnimationDuration" | "getScrollToLeft" | "getScrollToRight" | "showArrows"> & import("../AdaptivityProvider/AdaptivityContext").SizeProps>;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/extends";
|
|
2
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
3
|
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
3
4
|
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
4
5
|
var _excluded = ["children", "getScrollToLeft", "getScrollToRight", "showArrows", "scrollAnimationDuration", "hasMouse", "getRef"];
|
|
@@ -11,6 +12,7 @@ import HorizontalScrollArrow from "./HorizontalScrollArrow";
|
|
|
11
12
|
import { easeInOutSine } from "../../lib/fx";
|
|
12
13
|
import { useEventListener } from "../../hooks/useEventListener";
|
|
13
14
|
import { useExternRef } from "../../hooks/useExternRef";
|
|
15
|
+
import { classNames } from "../../lib/classNames";
|
|
14
16
|
|
|
15
17
|
/**
|
|
16
18
|
* timing method
|
|
@@ -154,7 +156,7 @@ var HorizontalScroll = function HorizontalScroll(_ref2) {
|
|
|
154
156
|
}, [scrollEvent, scrollerRef]);
|
|
155
157
|
React.useEffect(onscroll, [scrollerRef, children, onscroll]);
|
|
156
158
|
return createScopedElement("div", _extends({}, restProps, {
|
|
157
|
-
vkuiClass: getClassName("HorizontalScroll", platform)
|
|
159
|
+
vkuiClass: classNames(getClassName("HorizontalScroll", platform), _defineProperty({}, "HorizontalScroll--withConstArrows", showArrows === "always"))
|
|
158
160
|
}), showArrows && hasMouse && canScrollLeft && createScopedElement(HorizontalScrollArrow, {
|
|
159
161
|
direction: "left",
|
|
160
162
|
onClick: function onClick() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/HorizontalScroll/HorizontalScroll.tsx"],"names":["React","usePlatform","getClassName","withAdaptivity","HorizontalScrollArrow","easeInOutSine","useEventListener","useExternRef","now","performance","Date","SCROLL_ONE_FRAME_TIME","doScroll","scrollElement","getScrollPosition","animationQueue","onScrollToRightBorder","onScrollEnd","onScrollStart","initialScrollWidth","scrollAnimationDuration","maxLeft","offsetWidth","startLeft","scrollLeft","endLeft","startTime","scroll","time","elapsed","Math","min","value","currentLeft","ceil","max","requestAnimationFrame","shift","length","HorizontalScroll","children","getScrollToLeft","getScrollToRight","showArrows","hasMouse","getRef","restProps","useState","canScrollLeft","setCanScrollLeft","canScrollRight","setCanScrollRight","isCustomScrollingRef","useRef","scrollerRef","platform","scrollTo","current","push","firstElementChild","scrollWidth","onscroll","useCallback","scrollEvent","useEffect","add"],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport { usePlatform } from \"../../hooks/usePlatform\";\nimport { getClassName } from \"../../helpers/getClassName\";\nimport { withAdaptivity, AdaptivityProps } from \"../../hoc/withAdaptivity\";\nimport HorizontalScrollArrow from \"./HorizontalScrollArrow\";\nimport { easeInOutSine } from \"../../lib/fx\";\nimport { useEventListener } from \"../../hooks/useEventListener\";\nimport { useExternRef } from \"../../hooks/useExternRef\";\nimport { HasRef } from \"../../types\";\nimport \"./HorizontalScroll.css\";\n\ninterface ScrollContext {\n scrollElement: HTMLElement | null;\n scrollAnimationDuration: number;\n animationQueue: VoidFunction[];\n getScrollPosition: (currentPosition: number) => number;\n onScrollToRightBorder: VoidFunction;\n onScrollEnd: VoidFunction;\n onScrollStart: VoidFunction;\n /**\n * Начальная ширина прокрутки.\n * В некоторых случаях может отличаться от текущей ширины прокрутки из-за transforms: translate\n */\n initialScrollWidth: number;\n}\n\nexport type ScrollPositionHandler = (currentPosition: number) => number;\n\nexport interface HorizontalScrollProps\n extends React.HTMLAttributes<HTMLDivElement>,\n AdaptivityProps,\n HasRef<HTMLDivElement> {\n /**\n * Функция для расчета величины прокрутки при клике на левую стрелку.\n */\n getScrollToLeft?: ScrollPositionHandler;\n /**\n * Функция для расчета величины прокрутки при клике на правую стрелку.\n */\n getScrollToRight?: ScrollPositionHandler;\n showArrows?: boolean;\n scrollAnimationDuration?: number;\n}\n\n/**\n * timing method\n */\nfunction now() {\n return performance && performance.now ? performance.now() : Date.now();\n}\n\n/**\n * Код анимации скрола, на основе полифила: https://github.com/iamdustan/smoothscroll\n * Константа взята из полифила (468), на дизайн-ревью уточнили до 250\n * @var {number} SCROLL_ONE_FRAME_TIME время анимации скролла\n */\nconst SCROLL_ONE_FRAME_TIME = 250;\n\nfunction doScroll({\n scrollElement,\n getScrollPosition,\n animationQueue,\n onScrollToRightBorder,\n onScrollEnd,\n onScrollStart,\n initialScrollWidth,\n scrollAnimationDuration = SCROLL_ONE_FRAME_TIME,\n}: ScrollContext) {\n if (!scrollElement || !getScrollPosition) {\n return;\n }\n\n /**\n * максимальное значение сдвига влево\n */\n const maxLeft = initialScrollWidth - scrollElement.offsetWidth;\n\n let startLeft = scrollElement.scrollLeft;\n let endLeft = getScrollPosition(startLeft);\n\n onScrollStart();\n\n if (endLeft >= maxLeft) {\n onScrollToRightBorder();\n endLeft = maxLeft;\n }\n\n const startTime = now();\n\n (function scroll() {\n if (!scrollElement) {\n onScrollEnd();\n return;\n }\n\n const time = now();\n const elapsed = Math.min((time - startTime) / scrollAnimationDuration, 1);\n\n const value = easeInOutSine(elapsed);\n\n const currentLeft = startLeft + (endLeft - startLeft) * value;\n scrollElement.scrollLeft = Math.ceil(currentLeft);\n\n if (scrollElement.scrollLeft !== Math.max(0, endLeft)) {\n requestAnimationFrame(scroll);\n return;\n }\n\n onScrollEnd();\n animationQueue.shift();\n if (animationQueue.length > 0) {\n animationQueue[0]();\n }\n })();\n}\n\nconst HorizontalScroll: React.FC<HorizontalScrollProps> = ({\n children,\n getScrollToLeft,\n getScrollToRight,\n showArrows = true,\n scrollAnimationDuration = SCROLL_ONE_FRAME_TIME,\n hasMouse,\n getRef,\n ...restProps\n}: HorizontalScrollProps) => {\n const [canScrollLeft, setCanScrollLeft] = React.useState(false);\n const [canScrollRight, setCanScrollRight] = React.useState(false);\n\n const isCustomScrollingRef = React.useRef(false);\n\n const scrollerRef = useExternRef(getRef);\n\n const animationQueue = React.useRef<VoidFunction[]>([]);\n\n const platform = usePlatform();\n\n function scrollTo(getScrollPosition: (offset: number) => number) {\n const scrollElement = scrollerRef.current;\n\n animationQueue.current.push(() =>\n doScroll({\n scrollElement,\n getScrollPosition,\n animationQueue: animationQueue.current,\n onScrollToRightBorder: () => setCanScrollRight(false),\n onScrollEnd: () => (isCustomScrollingRef.current = false),\n onScrollStart: () => (isCustomScrollingRef.current = true),\n initialScrollWidth: scrollElement?.firstElementChild?.scrollWidth || 0,\n scrollAnimationDuration,\n })\n );\n if (animationQueue.current.length === 1) {\n animationQueue.current[0]();\n }\n }\n\n const onscroll = React.useCallback(() => {\n if (\n showArrows &&\n hasMouse &&\n scrollerRef.current &&\n !isCustomScrollingRef.current\n ) {\n const scrollElement = scrollerRef.current;\n\n setCanScrollLeft(scrollElement.scrollLeft > 0);\n setCanScrollRight(\n scrollElement.scrollLeft + scrollElement.offsetWidth <\n scrollElement.scrollWidth\n );\n }\n }, [hasMouse, scrollerRef, showArrows]);\n\n const scrollEvent = useEventListener(\"scroll\", onscroll);\n React.useEffect(() => {\n if (scrollerRef.current) {\n scrollEvent.add(scrollerRef.current);\n }\n }, [scrollEvent, scrollerRef]);\n React.useEffect(onscroll, [scrollerRef, children, onscroll]);\n\n return (\n <div {...restProps} vkuiClass={getClassName(\"HorizontalScroll\", platform)}>\n {showArrows && hasMouse && canScrollLeft && (\n <HorizontalScrollArrow\n direction=\"left\"\n onClick={() => {\n if (getScrollToLeft) {\n scrollTo(getScrollToLeft);\n }\n }}\n />\n )}\n {showArrows && hasMouse && canScrollRight && (\n <HorizontalScrollArrow\n direction=\"right\"\n onClick={() => {\n if (getScrollToRight) {\n scrollTo(getScrollToRight);\n }\n }}\n />\n )}\n <div vkuiClass=\"HorizontalScroll__in\" ref={scrollerRef}>\n <div vkuiClass=\"HorizontalScroll__in-wrapper\">{children}</div>\n </div>\n </div>\n );\n};\n\n// eslint-disable-next-line import/no-default-export\nexport default withAdaptivity(HorizontalScroll, {\n hasMouse: true,\n});\n"],"file":"HorizontalScroll.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/HorizontalScroll/HorizontalScroll.tsx"],"names":["React","usePlatform","getClassName","withAdaptivity","HorizontalScrollArrow","easeInOutSine","useEventListener","useExternRef","classNames","now","performance","Date","SCROLL_ONE_FRAME_TIME","doScroll","scrollElement","getScrollPosition","animationQueue","onScrollToRightBorder","onScrollEnd","onScrollStart","initialScrollWidth","scrollAnimationDuration","maxLeft","offsetWidth","startLeft","scrollLeft","endLeft","startTime","scroll","time","elapsed","Math","min","value","currentLeft","ceil","max","requestAnimationFrame","shift","length","HorizontalScroll","children","getScrollToLeft","getScrollToRight","showArrows","hasMouse","getRef","restProps","useState","canScrollLeft","setCanScrollLeft","canScrollRight","setCanScrollRight","isCustomScrollingRef","useRef","scrollerRef","platform","scrollTo","current","push","firstElementChild","scrollWidth","onscroll","useCallback","scrollEvent","useEffect","add"],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport { usePlatform } from \"../../hooks/usePlatform\";\nimport { getClassName } from \"../../helpers/getClassName\";\nimport { withAdaptivity, AdaptivityProps } from \"../../hoc/withAdaptivity\";\nimport HorizontalScrollArrow from \"./HorizontalScrollArrow\";\nimport { easeInOutSine } from \"../../lib/fx\";\nimport { useEventListener } from \"../../hooks/useEventListener\";\nimport { useExternRef } from \"../../hooks/useExternRef\";\nimport { HasRef } from \"../../types\";\nimport { classNames } from \"../../lib/classNames\";\nimport \"./HorizontalScroll.css\";\n\ninterface ScrollContext {\n scrollElement: HTMLElement | null;\n scrollAnimationDuration: number;\n animationQueue: VoidFunction[];\n getScrollPosition: (currentPosition: number) => number;\n onScrollToRightBorder: VoidFunction;\n onScrollEnd: VoidFunction;\n onScrollStart: VoidFunction;\n /**\n * Начальная ширина прокрутки.\n * В некоторых случаях может отличаться от текущей ширины прокрутки из-за transforms: translate\n */\n initialScrollWidth: number;\n}\n\nexport type ScrollPositionHandler = (currentPosition: number) => number;\n\nexport interface HorizontalScrollProps\n extends React.HTMLAttributes<HTMLDivElement>,\n AdaptivityProps,\n HasRef<HTMLDivElement> {\n /**\n * Функция для расчета величины прокрутки при клике на левую стрелку.\n */\n getScrollToLeft?: ScrollPositionHandler;\n /**\n * Функция для расчета величины прокрутки при клике на правую стрелку.\n */\n getScrollToRight?: ScrollPositionHandler;\n showArrows?: boolean | \"always\";\n scrollAnimationDuration?: number;\n}\n\n/**\n * timing method\n */\nfunction now() {\n return performance && performance.now ? performance.now() : Date.now();\n}\n\n/**\n * Код анимации скрола, на основе полифила: https://github.com/iamdustan/smoothscroll\n * Константа взята из полифила (468), на дизайн-ревью уточнили до 250\n * @var {number} SCROLL_ONE_FRAME_TIME время анимации скролла\n */\nconst SCROLL_ONE_FRAME_TIME = 250;\n\nfunction doScroll({\n scrollElement,\n getScrollPosition,\n animationQueue,\n onScrollToRightBorder,\n onScrollEnd,\n onScrollStart,\n initialScrollWidth,\n scrollAnimationDuration = SCROLL_ONE_FRAME_TIME,\n}: ScrollContext) {\n if (!scrollElement || !getScrollPosition) {\n return;\n }\n\n /**\n * максимальное значение сдвига влево\n */\n const maxLeft = initialScrollWidth - scrollElement.offsetWidth;\n\n let startLeft = scrollElement.scrollLeft;\n let endLeft = getScrollPosition(startLeft);\n\n onScrollStart();\n\n if (endLeft >= maxLeft) {\n onScrollToRightBorder();\n endLeft = maxLeft;\n }\n\n const startTime = now();\n\n (function scroll() {\n if (!scrollElement) {\n onScrollEnd();\n return;\n }\n\n const time = now();\n const elapsed = Math.min((time - startTime) / scrollAnimationDuration, 1);\n\n const value = easeInOutSine(elapsed);\n\n const currentLeft = startLeft + (endLeft - startLeft) * value;\n scrollElement.scrollLeft = Math.ceil(currentLeft);\n\n if (scrollElement.scrollLeft !== Math.max(0, endLeft)) {\n requestAnimationFrame(scroll);\n return;\n }\n\n onScrollEnd();\n animationQueue.shift();\n if (animationQueue.length > 0) {\n animationQueue[0]();\n }\n })();\n}\n\nconst HorizontalScroll: React.FC<HorizontalScrollProps> = ({\n children,\n getScrollToLeft,\n getScrollToRight,\n showArrows = true,\n scrollAnimationDuration = SCROLL_ONE_FRAME_TIME,\n hasMouse,\n getRef,\n ...restProps\n}: HorizontalScrollProps) => {\n const [canScrollLeft, setCanScrollLeft] = React.useState(false);\n const [canScrollRight, setCanScrollRight] = React.useState(false);\n\n const isCustomScrollingRef = React.useRef(false);\n\n const scrollerRef = useExternRef(getRef);\n\n const animationQueue = React.useRef<VoidFunction[]>([]);\n\n const platform = usePlatform();\n\n function scrollTo(getScrollPosition: (offset: number) => number) {\n const scrollElement = scrollerRef.current;\n\n animationQueue.current.push(() =>\n doScroll({\n scrollElement,\n getScrollPosition,\n animationQueue: animationQueue.current,\n onScrollToRightBorder: () => setCanScrollRight(false),\n onScrollEnd: () => (isCustomScrollingRef.current = false),\n onScrollStart: () => (isCustomScrollingRef.current = true),\n initialScrollWidth: scrollElement?.firstElementChild?.scrollWidth || 0,\n scrollAnimationDuration,\n })\n );\n if (animationQueue.current.length === 1) {\n animationQueue.current[0]();\n }\n }\n\n const onscroll = React.useCallback(() => {\n if (\n showArrows &&\n hasMouse &&\n scrollerRef.current &&\n !isCustomScrollingRef.current\n ) {\n const scrollElement = scrollerRef.current;\n\n setCanScrollLeft(scrollElement.scrollLeft > 0);\n setCanScrollRight(\n scrollElement.scrollLeft + scrollElement.offsetWidth <\n scrollElement.scrollWidth\n );\n }\n }, [hasMouse, scrollerRef, showArrows]);\n\n const scrollEvent = useEventListener(\"scroll\", onscroll);\n React.useEffect(() => {\n if (scrollerRef.current) {\n scrollEvent.add(scrollerRef.current);\n }\n }, [scrollEvent, scrollerRef]);\n React.useEffect(onscroll, [scrollerRef, children, onscroll]);\n\n return (\n <div\n {...restProps}\n vkuiClass={classNames(getClassName(\"HorizontalScroll\", platform), {\n [\"HorizontalScroll--withConstArrows\"]: showArrows === \"always\",\n })}\n >\n {showArrows && hasMouse && canScrollLeft && (\n <HorizontalScrollArrow\n direction=\"left\"\n onClick={() => {\n if (getScrollToLeft) {\n scrollTo(getScrollToLeft);\n }\n }}\n />\n )}\n {showArrows && hasMouse && canScrollRight && (\n <HorizontalScrollArrow\n direction=\"right\"\n onClick={() => {\n if (getScrollToRight) {\n scrollTo(getScrollToRight);\n }\n }}\n />\n )}\n <div vkuiClass=\"HorizontalScroll__in\" ref={scrollerRef}>\n <div vkuiClass=\"HorizontalScroll__in-wrapper\">{children}</div>\n </div>\n </div>\n );\n};\n\n// eslint-disable-next-line import/no-default-export\nexport default withAdaptivity(HorizontalScroll, {\n hasMouse: true,\n});\n"],"file":"HorizontalScroll.js"}
|
|
@@ -8,6 +8,8 @@ import { classNames } from "../../lib/classNames";
|
|
|
8
8
|
import { usePlatform } from "../../hooks/usePlatform";
|
|
9
9
|
import { withAdaptivity } from "../../hoc/withAdaptivity";
|
|
10
10
|
import { IOS } from "../../lib/platform";
|
|
11
|
+
import { warnOnce } from "../../lib/warnOnce";
|
|
12
|
+
var warn = warnOnce("IconButton");
|
|
11
13
|
|
|
12
14
|
var IconButton = function IconButton(_ref) {
|
|
13
15
|
var icon = _ref.icon,
|
|
@@ -17,6 +19,11 @@ var IconButton = function IconButton(_ref) {
|
|
|
17
19
|
restProps = _objectWithoutProperties(_ref, _excluded);
|
|
18
20
|
|
|
19
21
|
var platform = usePlatform();
|
|
22
|
+
|
|
23
|
+
if (icon && process.env.NODE_ENV === "development") {
|
|
24
|
+
warn("Свойство icon устарело и будет удалено в 5.0.0. Используйте children");
|
|
25
|
+
}
|
|
26
|
+
|
|
20
27
|
return createScopedElement(Tappable, _extends({}, restProps, {
|
|
21
28
|
Component: restProps.href ? "a" : Component,
|
|
22
29
|
activeEffectDelay: 200,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/IconButton/IconButton.tsx"],"names":["Tappable","getClassName","classNames","usePlatform","withAdaptivity","IOS","IconButton","icon","sizeY","children","Component","restProps","platform","href","defaultProps"],"mappings":";;;;AACA,OAAOA,QAAP;AACA,SAASC,YAAT;AACA,SAASC,UAAT;AACA,SAASC,WAAT;AACA,SAASC,cAAT;AACA,SAASC,GAAT
|
|
1
|
+
{"version":3,"sources":["../../../src/components/IconButton/IconButton.tsx"],"names":["Tappable","getClassName","classNames","usePlatform","withAdaptivity","IOS","warnOnce","warn","IconButton","icon","sizeY","children","Component","restProps","platform","process","env","NODE_ENV","href","defaultProps"],"mappings":";;;;AACA,OAAOA,QAAP;AACA,SAASC,YAAT;AACA,SAASC,UAAT;AACA,SAASC,WAAT;AACA,SAASC,cAAT;AACA,SAASC,GAAT;AACA,SAASC,QAAT;AAUA,IAAMC,IAAI,GAAGD,QAAQ,CAAC,YAAD,CAArB;;AACA,IAAME,UAAqC,GAAG,SAAxCA,UAAwC,OAMvB;AAAA,MALrBC,IAKqB,QALrBA,IAKqB;AAAA,MAJrBC,KAIqB,QAJrBA,KAIqB;AAAA,MAHrBC,QAGqB,QAHrBA,QAGqB;AAAA,MAFrBC,SAEqB,QAFrBA,SAEqB;AAAA,MADlBC,SACkB;;AACrB,MAAMC,QAAQ,GAAGX,WAAW,EAA5B;;AAEA,MAAIM,IAAI,IAAIM,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,aAArC,EAAoD;AAClDV,IAAAA,IAAI,CACF,sEADE,CAAJ;AAGD;;AAED,SACE,oBAAC,QAAD,eACMM,SADN;AAEE,IAAA,SAAS,EAAEA,SAAS,CAACK,IAAV,GAAiB,GAAjB,GAAuBN,SAFpC;AAGE,IAAA,iBAAiB,EAAE,GAHrB;AAIE,IAAA,UAAU,EAAEE,QAAQ,KAAKT,GAAb,GAAmB,SAAnB,GAA+B,oBAJ7C;AAKE,IAAA,SAAS,EAAEH,UAAU,CACnBD,YAAY,CAAC,YAAD,EAAea,QAAf,CADO,8BAEEJ,KAFF;AALvB,MAUGD,IAAI,IAAIE,QAVX,CADF;AAcD,CA7BD;;AA+BAH,UAAU,CAACW,YAAX,GAA0B;AACxBP,EAAAA,SAAS,EAAE;AADa,CAA1B,C,CAIA;;AACA,eAAeR,cAAc,CAACI,UAAD,EAAa;AACxCE,EAAAA,KAAK,EAAE;AADiC,CAAb,CAA7B","sourcesContent":["import * as React from \"react\";\nimport Tappable, { TappableProps } from \"../Tappable/Tappable\";\nimport { getClassName } from \"../../helpers/getClassName\";\nimport { classNames } from \"../../lib/classNames\";\nimport { usePlatform } from \"../../hooks/usePlatform\";\nimport { withAdaptivity } from \"../../hoc/withAdaptivity\";\nimport { IOS } from \"../../lib/platform\";\nimport { warnOnce } from \"../../lib/warnOnce\";\nimport \"./IconButton.css\";\n\nexport interface IconButtonProps extends TappableProps {\n /**\n * @deprecated будет удалено в 5.0.0. Используйте `children`\n */\n icon?: React.ReactNode;\n}\n\nconst warn = warnOnce(\"IconButton\");\nconst IconButton: React.FC<IconButtonProps> = ({\n icon,\n sizeY,\n children,\n Component,\n ...restProps\n}: IconButtonProps) => {\n const platform = usePlatform();\n\n if (icon && process.env.NODE_ENV === \"development\") {\n warn(\n \"Свойство icon устарело и будет удалено в 5.0.0. Используйте children\"\n );\n }\n\n return (\n <Tappable\n {...restProps}\n Component={restProps.href ? \"a\" : Component}\n activeEffectDelay={200}\n activeMode={platform === IOS ? \"opacity\" : \"IconButton--active\"}\n vkuiClass={classNames(\n getClassName(\"IconButton\", platform),\n `IconButton--sizeY-${sizeY}`\n )}\n >\n {icon || children}\n </Tappable>\n );\n};\n\nIconButton.defaultProps = {\n Component: \"button\",\n};\n\n// eslint-disable-next-line import/no-default-export\nexport default withAdaptivity(IconButton, {\n sizeY: true,\n});\n"],"file":"IconButton.js"}
|
|
@@ -5,8 +5,9 @@ import { createScopedElement } from "../../lib/jsxRuntime";
|
|
|
5
5
|
import Tappable from "../Tappable/Tappable";
|
|
6
6
|
import { getClassName } from "../../helpers/getClassName";
|
|
7
7
|
import { classNames } from "../../lib/classNames";
|
|
8
|
+
import { warnOnce } from "../../lib/warnOnce";
|
|
8
9
|
import { usePlatform } from "../../hooks/usePlatform";
|
|
9
|
-
import { isPrimitiveReactNode } from "../../lib/utils";
|
|
10
|
+
import { getTitleFromChildren, isPrimitiveReactNode } from "../../lib/utils";
|
|
10
11
|
import { IOS, VKCOM, ANDROID } from "../../lib/platform";
|
|
11
12
|
import Text from "../Typography/Text/Text";
|
|
12
13
|
import Title from "../Typography/Title/Title";
|
|
@@ -29,9 +30,11 @@ var ButtonTypography = function ButtonTypography(_ref) {
|
|
|
29
30
|
}, children);
|
|
30
31
|
};
|
|
31
32
|
|
|
33
|
+
var warn = warnOnce("PanelHeaderButton");
|
|
32
34
|
export var PanelHeaderButton = function PanelHeaderButton(_ref2) {
|
|
33
35
|
var children = _ref2.children,
|
|
34
|
-
primary = _ref2.primary,
|
|
36
|
+
_ref2$primary = _ref2.primary,
|
|
37
|
+
primary = _ref2$primary === void 0 ? false : _ref2$primary,
|
|
35
38
|
label = _ref2.label,
|
|
36
39
|
restProps = _objectWithoutProperties(_ref2, _excluded);
|
|
37
40
|
|
|
@@ -57,6 +60,14 @@ export var PanelHeaderButton = function PanelHeaderButton(_ref2) {
|
|
|
57
60
|
activeMode = "PanelHeaderButton--active";
|
|
58
61
|
}
|
|
59
62
|
|
|
63
|
+
if (process.env.NODE_ENV === "development") {
|
|
64
|
+
var hasAccessibleName = Boolean(getTitleFromChildren(children) || getTitleFromChildren(label) || restProps["aria-label"] || restProps["aria-labelledby"]);
|
|
65
|
+
|
|
66
|
+
if (!hasAccessibleName) {
|
|
67
|
+
warn("a11y: У кнопки нет названия, которое может прочитать скринридер, и она недоступна для части пользователей. Замените содержимое на текст или добавьте описание действия с помощью пропа aria-label.");
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
60
71
|
return createScopedElement(Tappable, _extends({}, restProps, {
|
|
61
72
|
hoverMode: hoverMode,
|
|
62
73
|
Component: restProps.href ? "a" : "button",
|
|
@@ -73,8 +84,4 @@ export var PanelHeaderButton = function PanelHeaderButton(_ref2) {
|
|
|
73
84
|
primary: primary
|
|
74
85
|
}, label) : label);
|
|
75
86
|
};
|
|
76
|
-
PanelHeaderButton.defaultProps = {
|
|
77
|
-
primary: false,
|
|
78
|
-
"aria-label": "Закрыть"
|
|
79
|
-
};
|
|
80
87
|
//# sourceMappingURL=PanelHeaderButton.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/PanelHeaderButton/PanelHeaderButton.tsx"],"names":["Tappable","getClassName","classNames","usePlatform","isPrimitiveReactNode","IOS","VKCOM","ANDROID","Text","Title","ButtonTypography","primary","children","platform","PanelHeaderButton","label","restProps","isPrimitive","isPrimitiveLabel","hoverMode","activeMode","
|
|
1
|
+
{"version":3,"sources":["../../../src/components/PanelHeaderButton/PanelHeaderButton.tsx"],"names":["Tappable","getClassName","classNames","warnOnce","usePlatform","getTitleFromChildren","isPrimitiveReactNode","IOS","VKCOM","ANDROID","Text","Title","ButtonTypography","primary","children","platform","warn","PanelHeaderButton","label","restProps","isPrimitive","isPrimitiveLabel","hoverMode","activeMode","process","env","NODE_ENV","hasAccessibleName","Boolean","href"],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport Tappable, { TappableProps } from \"../Tappable/Tappable\";\nimport { getClassName } from \"../../helpers/getClassName\";\nimport { classNames } from \"../../lib/classNames\";\nimport { warnOnce } from \"../../lib/warnOnce\";\nimport { usePlatform } from \"../../hooks/usePlatform\";\nimport { getTitleFromChildren, isPrimitiveReactNode } from \"../../lib/utils\";\nimport { IOS, VKCOM, ANDROID } from \"../../lib/platform\";\nimport Text from \"../Typography/Text/Text\";\nimport Title from \"../Typography/Title/Title\";\nimport \"./PanelHeaderButton.css\";\n\nexport interface PanelHeaderButtonProps extends Omit<TappableProps, \"label\"> {\n primary?: boolean;\n label?: React.ReactNode;\n}\n\ninterface ButtonTypographyProps extends React.AllHTMLAttributes<HTMLElement> {\n primary?: PanelHeaderButtonProps[\"primary\"];\n}\n\nconst ButtonTypography: React.FC<ButtonTypographyProps> = ({\n primary,\n children,\n}: ButtonTypographyProps) => {\n const platform = usePlatform();\n\n if (platform === IOS) {\n return (\n <Title\n Component=\"span\"\n level=\"3\"\n weight={primary ? \"semibold\" : \"regular\"}\n >\n {children}\n </Title>\n );\n }\n\n return (\n <Text weight={platform === VKCOM ? \"regular\" : \"medium\"}>{children}</Text>\n );\n};\n\nconst warn = warnOnce(\"PanelHeaderButton\");\nexport const PanelHeaderButton: React.FC<PanelHeaderButtonProps> = ({\n children,\n primary = false,\n label,\n ...restProps\n}: PanelHeaderButtonProps) => {\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 ANDROID:\n hoverMode = \"background\";\n activeMode = \"background\";\n break;\n case IOS:\n hoverMode = \"background\";\n activeMode = \"opacity\";\n break;\n case VKCOM:\n hoverMode = \"PanelHeaderButton--hover\";\n activeMode = \"PanelHeaderButton--active\";\n }\n\n if (process.env.NODE_ENV === \"development\") {\n const hasAccessibleName = Boolean(\n getTitleFromChildren(children) ||\n getTitleFromChildren(label) ||\n restProps[\"aria-label\"] ||\n restProps[\"aria-labelledby\"]\n );\n\n if (!hasAccessibleName) {\n warn(\n \"a11y: У кнопки нет названия, которое может прочитать скринридер, и она недоступна для части пользователей. Замените содержимое на текст или добавьте описание действия с помощью пропа aria-label.\"\n );\n }\n }\n\n return (\n <Tappable\n {...restProps}\n hoverMode={hoverMode}\n Component={restProps.href ? \"a\" : \"button\"}\n activeEffectDelay={200}\n activeMode={activeMode}\n vkuiClass={classNames(getClassName(\"PanelHeaderButton\", platform), {\n \"PanelHeaderButton--primary\": primary,\n \"PanelHeaderButton--primitive\": isPrimitive,\n \"PanelHeaderButton--notPrimitive\": !isPrimitive && !isPrimitiveLabel,\n })}\n >\n {isPrimitive ? (\n <ButtonTypography primary={primary}>{children}</ButtonTypography>\n ) : (\n children\n )}\n {isPrimitiveLabel ? (\n <ButtonTypography primary={primary}>{label}</ButtonTypography>\n ) : (\n label\n )}\n </Tappable>\n );\n};\n"],"file":"PanelHeaderButton.js"}
|
|
@@ -13,6 +13,8 @@ import Avatar from "../Avatar/Avatar";
|
|
|
13
13
|
import Caption from "../Typography/Caption/Caption";
|
|
14
14
|
import { usePlatform } from "../../hooks/usePlatform";
|
|
15
15
|
import { getClassName } from "../../helpers/getClassName";
|
|
16
|
+
import { warnOnce } from "../../lib/warnOnce";
|
|
17
|
+
var warn = warnOnce("PromoBanner");
|
|
16
18
|
|
|
17
19
|
var PromoBanner = function PromoBanner(props) {
|
|
18
20
|
var platform = usePlatform();
|
|
@@ -24,6 +26,10 @@ var PromoBanner = function PromoBanner(props) {
|
|
|
24
26
|
|
|
25
27
|
var ageRestrictions = bannerData.ageRestrictions != null ? parseInt(bannerData.ageRestrictions) : bannerData.ageRestriction;
|
|
26
28
|
|
|
29
|
+
if (bannerData.ageRestriction && process.env.NODE_ENV === "development") {
|
|
30
|
+
warn("Свойство bannerData.ageRestriction устарело и будет удалено в 5.0.0. Используйте bannerData.ageRestrictions");
|
|
31
|
+
}
|
|
32
|
+
|
|
27
33
|
var _React$useState = React.useState(""),
|
|
28
34
|
_React$useState2 = _slicedToArray(_React$useState, 2),
|
|
29
35
|
currentPixel = _React$useState2[0],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/PromoBanner/PromoBanner.tsx"],"names":["React","Icon24Dismiss","Button","SimpleCell","Avatar","Caption","usePlatform","getClassName","PromoBanner","props","platform","bannerData","onClose","restProps","ageRestrictions","parseInt","ageRestriction","useState","currentPixel","setCurrentPixel","statsPixels","useMemo","statistics","reduce","acc","item","type","url","onClick","useCallback","click","useEffect","playbackStarted","advertisingLabel","isCloseButtonHidden","trackingLink","iconLink","title","ctaText","domain","length"],"mappings":";;;;;;;AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,aAAT,QAA8B,kBAA9B;AACA,OAAOC,MAAP;AACA,OAAOC,UAAP;AACA,OAAOC,MAAP;AACA,OAAOC,OAAP;AACA,SAASC,WAAT;AACA,SAASC,YAAT
|
|
1
|
+
{"version":3,"sources":["../../../src/components/PromoBanner/PromoBanner.tsx"],"names":["React","Icon24Dismiss","Button","SimpleCell","Avatar","Caption","usePlatform","getClassName","warnOnce","warn","PromoBanner","props","platform","bannerData","onClose","restProps","ageRestrictions","parseInt","ageRestriction","process","env","NODE_ENV","useState","currentPixel","setCurrentPixel","statsPixels","useMemo","statistics","reduce","acc","item","type","url","onClick","useCallback","click","useEffect","playbackStarted","advertisingLabel","isCloseButtonHidden","trackingLink","iconLink","title","ctaText","domain","length"],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport { Icon24Dismiss } from \"@vkontakte/icons\";\nimport Button from \"../Button/Button\";\nimport SimpleCell from \"../SimpleCell/SimpleCell\";\nimport Avatar from \"../Avatar/Avatar\";\nimport Caption from \"../Typography/Caption/Caption\";\nimport { usePlatform } from \"../../hooks/usePlatform\";\nimport { getClassName } from \"../../helpers/getClassName\";\nimport { warnOnce } from \"../../lib/warnOnce\";\nimport \"./PromoBanner.css\";\n\ntype StatsType =\n | \"playbackStarted\" // Начало показа\n | \"click\"; // Клик по баннеру\n\ntype BannerData = {\n title?: string;\n url_types?: string; // eslint-disable-line camelcase\n bannerID?: string;\n imageWidth?: number;\n imageHeight?: number;\n imageLink?: string;\n trackingLink?: string;\n type?: string;\n iconWidth?: number;\n domain?: string;\n ctaText?: string;\n advertisingLabel?: string;\n iconLink?: string;\n statistics?: Array<{ type: StatsType; url: string }>;\n openInBrowser?: boolean;\n iconHeight?: number;\n directLink?: boolean;\n navigationType?: string;\n description?: string;\n ageRestrictions?: string;\n /** @deprecated */\n ageRestriction?: number;\n};\n\nexport interface PromoBannerProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Данные рекламного баннера, полученные из VKWebAppGetAds */\n bannerData: BannerData;\n /** Флаг скрытия кнопки закрытия рекламы */\n isCloseButtonHidden?: boolean;\n /** Хандлер закрытия рекламы */\n onClose: () => void;\n}\n\nconst warn = warnOnce(\"PromoBanner\");\nconst PromoBanner = (props: PromoBannerProps) => {\n const platform = usePlatform();\n const { bannerData = {}, onClose, ...restProps } = props;\n\n const ageRestrictions =\n bannerData.ageRestrictions != null\n ? parseInt(bannerData.ageRestrictions)\n : bannerData.ageRestriction;\n\n if (bannerData.ageRestriction && process.env.NODE_ENV === \"development\") {\n warn(\n \"Свойство bannerData.ageRestriction устарело и будет удалено в 5.0.0. Используйте bannerData.ageRestrictions\"\n );\n }\n\n const [currentPixel, setCurrentPixel] = React.useState(\"\");\n\n const statsPixels = React.useMemo(\n () =>\n (bannerData.statistics\n ? bannerData.statistics.reduce(\n (acc, item) => ({ ...acc, [item.type]: item.url }),\n {}\n )\n : {}) as Record<StatsType, string | void>,\n [bannerData.statistics]\n );\n\n const onClick = React.useCallback(\n () => setCurrentPixel(statsPixels.click || \"\"),\n [statsPixels.click]\n );\n\n React.useEffect(() => {\n if (statsPixels.playbackStarted) {\n setCurrentPixel(statsPixels.playbackStarted);\n }\n }, [statsPixels.playbackStarted]);\n\n return (\n <div vkuiClass={getClassName(\"PromoBanner\", platform)} {...restProps}>\n <div vkuiClass=\"PromoBanner__head\">\n <Caption weight=\"regular\" level=\"1\" vkuiClass=\"PromoBanner__label\">\n {bannerData.advertisingLabel || \"Advertisement\"}\n </Caption>\n {ageRestrictions != null && (\n <Caption weight=\"regular\" level=\"1\" vkuiClass=\"PromoBanner__age\">\n {ageRestrictions}+\n </Caption>\n )}\n\n {!props.isCloseButtonHidden && (\n <div vkuiClass=\"PromoBanner__close\" onClick={props.onClose}>\n <Icon24Dismiss />\n </div>\n )}\n </div>\n <SimpleCell\n href={bannerData.trackingLink}\n onClick={onClick}\n rel=\"nofollow noopener noreferrer\"\n target=\"_blank\"\n before={\n <Avatar\n mode=\"image\"\n size={48}\n src={bannerData.iconLink}\n alt={bannerData.title}\n />\n }\n after={<Button mode=\"outline\">{bannerData.ctaText}</Button>}\n description={bannerData.domain}\n >\n {bannerData.title}\n </SimpleCell>\n\n {currentPixel.length > 0 && (\n <div vkuiClass=\"PromoBanner__pixels\">\n <img src={currentPixel} alt=\"\" />\n </div>\n )}\n </div>\n );\n};\n\n// eslint-disable-next-line import/no-default-export\nexport default PromoBanner;\n"],"file":"PromoBanner.js"}
|
|
@@ -122,6 +122,11 @@ var Root = function Root(_ref) {
|
|
|
122
122
|
}
|
|
123
123
|
};
|
|
124
124
|
|
|
125
|
+
if (process.env.NODE_ENV === "development") {
|
|
126
|
+
popout && warn("Свойство popout устарело и будет удалено в 5.0.0. Используйте одноименное свойство у SplitLayout.");
|
|
127
|
+
modal && warn("Свойство modal устарело и будет удалено в 5.0.0. Используйте одноименное свойство у SplitLayout.");
|
|
128
|
+
}
|
|
129
|
+
|
|
125
130
|
return createScopedElement("div", _extends({}, restProps, {
|
|
126
131
|
vkuiClass: classNames(getClassName("Root", platform), {
|
|
127
132
|
"Root--transition": !disableAnimation && transition,
|