@hh.ru/magritte-ui-floating-button 3.0.48 → 3.0.49

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
1
  import type { PolymorphicComponentWithRef } from '@hh.ru/magritte-types';
2
- import type { FloatingButtonProps, FloatingButtonPropsWithStackMode } from '@hh.ru/magritte-ui-floating-button/types';
3
- export declare const FloatingButtonWithStackMode: PolymorphicComponentWithRef<FloatingButtonPropsWithStackMode, "button">;
4
- export declare const FloatingButton: PolymorphicComponentWithRef<FloatingButtonProps, "button">;
2
+ import type { FloatingButtonProps, FloatingButtonPropsWithStackMode } from './types';
3
+ export declare const FloatingButtonWithStackMode: PolymorphicComponentWithRef<FloatingButtonPropsWithStackMode, 'button'>;
4
+ export declare const FloatingButton: PolymorphicComponentWithRef<FloatingButtonProps, 'button'>;
package/FloatingButton.js CHANGED
@@ -11,51 +11,109 @@ import { Layer } from '@hh.ru/magritte-ui-layer';
11
11
  import { Loader } from '@hh.ru/magritte-ui-loader';
12
12
  import { Text } from '@hh.ru/magritte-ui-typography';
13
13
 
14
- var styles = {"wrapper":"magritte-wrapper___7m9lC_3-0-48","animation-timeout":"magritte-animation-timeout___NL8n0_3-0-48","animationTimeout":"magritte-animation-timeout___NL8n0_3-0-48","button":"magritte-button___nL-Hn_3-0-48","loading":"magritte-loading___C0oPZ_3-0-48","withIconAndLabel":"magritte-withIconAndLabel___Qa-lU_3-0-48","right":"magritte-right___3n0Rz_3-0-48","content":"magritte-content___JNpTZ_3-0-48","left":"magritte-left___GnzU7_3-0-48","center":"magritte-center___MdA40_3-0-48","postfix":"magritte-postfix___r0EZ6_3-0-48","icon":"magritte-icon___VpqJt_3-0-48","textless":"magritte-textless___IbYgp_3-0-48","label":"magritte-label___EPgvj_3-0-48","withPostfix":"magritte-withPostfix___PmQAz_3-0-48","hideLabel":"magritte-hideLabel___K79XM_3-0-48","withLabelOnHover":"magritte-withLabelOnHover___1oktd_3-0-48","loader":"magritte-loader___EPezG_3-0-48","enter-animation":"magritte-enter-animation___2sPz3_3-0-48","enterAnimation":"magritte-enter-animation___2sPz3_3-0-48","enter-animation-active":"magritte-enter-animation-active___Lq9eq_3-0-48","enterAnimationActive":"magritte-enter-animation-active___Lq9eq_3-0-48","exit-animation":"magritte-exit-animation___h2-7a_3-0-48","exitAnimation":"magritte-exit-animation___h2-7a_3-0-48","exit-animation-active":"magritte-exit-animation-active___w0F1a_3-0-48","exitAnimationActive":"magritte-exit-animation-active___w0F1a_3-0-48","button_style-neutral":"magritte-button_style-neutral___bPUwu_3-0-48","buttonStyleNeutral":"magritte-button_style-neutral___bPUwu_3-0-48","stackMode":"magritte-stackMode___RdOTJ_3-0-48","button_style-inverse":"magritte-button_style-inverse___Xgf26_3-0-48","buttonStyleInverse":"magritte-button_style-inverse___Xgf26_3-0-48"};
14
+ var styles = {"wrapper":"magritte-wrapper___7m9lC_3-0-49","animation-timeout":"magritte-animation-timeout___NL8n0_3-0-49","animationTimeout":"magritte-animation-timeout___NL8n0_3-0-49","button":"magritte-button___nL-Hn_3-0-49","loading":"magritte-loading___C0oPZ_3-0-49","withIconAndLabel":"magritte-withIconAndLabel___Qa-lU_3-0-49","right":"magritte-right___3n0Rz_3-0-49","content":"magritte-content___JNpTZ_3-0-49","left":"magritte-left___GnzU7_3-0-49","center":"magritte-center___MdA40_3-0-49","postfix":"magritte-postfix___r0EZ6_3-0-49","icon":"magritte-icon___VpqJt_3-0-49","textless":"magritte-textless___IbYgp_3-0-49","label":"magritte-label___EPgvj_3-0-49","withPostfix":"magritte-withPostfix___PmQAz_3-0-49","hideLabel":"magritte-hideLabel___K79XM_3-0-49","withLabelOnHover":"magritte-withLabelOnHover___1oktd_3-0-49","loader":"magritte-loader___EPezG_3-0-49","enter-animation":"magritte-enter-animation___2sPz3_3-0-49","enterAnimation":"magritte-enter-animation___2sPz3_3-0-49","enter-animation-active":"magritte-enter-animation-active___Lq9eq_3-0-49","enterAnimationActive":"magritte-enter-animation-active___Lq9eq_3-0-49","exit-animation":"magritte-exit-animation___h2-7a_3-0-49","exitAnimation":"magritte-exit-animation___h2-7a_3-0-49","exit-animation-active":"magritte-exit-animation-active___w0F1a_3-0-49","exitAnimationActive":"magritte-exit-animation-active___w0F1a_3-0-49","button_style-neutral":"magritte-button_style-neutral___bPUwu_3-0-49","buttonStyleNeutral":"magritte-button_style-neutral___bPUwu_3-0-49","stackMode":"magritte-stackMode___RdOTJ_3-0-49","button_style-inverse":"magritte-button_style-inverse___Xgf26_3-0-49","buttonStyleInverse":"magritte-button_style-inverse___Xgf26_3-0-49"};
15
15
 
16
- const ALLOWED_BADGE_SIZES = ['small'];
17
- const FloatingButtonComponent = ({ Element = 'button', style = 'neutral', disabled, borderRadius = 'halfHeight', icon: IconComponent, postfix, loading, host, children, className, inlineStyle, visible, labelOnHover: _labelOnHover, hideLabel: _hideLabel, badge, position = 'right', 'data-qa': dataQa = 'floating-button', stackMode = false, ...restProps }, ref) => {
18
- const labelOnHover = _labelOnHover && !!IconComponent;
19
- const hideLabel = _hideLabel && !!IconComponent;
20
- const isServerEnv = useServerEnv();
21
- const wrapperRef = useRef(null);
22
- if (isServerEnv) {
23
- return null;
16
+ const ALLOWED_BADGE_SIZES = ["small"];
17
+ const FloatingButtonComponent = ({
18
+ Element = "button",
19
+ style = "neutral",
20
+ disabled,
21
+ borderRadius = "halfHeight",
22
+ icon: IconComponent,
23
+ postfix,
24
+ loading,
25
+ host,
26
+ children,
27
+ className,
28
+ inlineStyle,
29
+ visible,
30
+ labelOnHover: _labelOnHover,
31
+ hideLabel: _hideLabel,
32
+ badge,
33
+ position = "right",
34
+ "data-qa": dataQa = "floating-button",
35
+ stackMode = false,
36
+ ...restProps
37
+ }, ref) => {
38
+ const labelOnHover = _labelOnHover && !!IconComponent;
39
+ const hideLabel = _hideLabel && !!IconComponent;
40
+ const isServerEnv = useServerEnv();
41
+ const wrapperRef = useRef(null);
42
+ if (isServerEnv) {
43
+ return null;
44
+ }
45
+ const additionalAttributes = {
46
+ "data-qa": dataQa
47
+ };
48
+ if (Element === "button") {
49
+ additionalAttributes.type = "button";
50
+ } else {
51
+ additionalAttributes.role = Element !== "a" ? "button" : void 0;
52
+ additionalAttributes["aria-disabled"] = disabled;
53
+ }
54
+ additionalAttributes.ref = ref;
55
+ let button = /* @__PURE__ */ jsx(
56
+ Element,
57
+ {
58
+ ...additionalAttributes,
59
+ ...restProps,
60
+ disabled: !!disabled,
61
+ tabIndex: disabled || loading ? -1 : 0,
62
+ className: classnames(styles.button, styles[`button_style-${style}`], {
63
+ [styles.loading]: !!loading,
64
+ [styles.withLabelOnHover]: !!labelOnHover,
65
+ [styles.hideLabel]: !!hideLabel || !children,
66
+ [styles.withPostfix]: !!postfix,
67
+ [styles.textless]: !postfix && (!children || !!hideLabel),
68
+ [styles.withIconAndLabel]: !!IconComponent && !!children && !hideLabel,
69
+ [styles.stackMode]: !!stackMode
70
+ }),
71
+ style: { borderRadius: borderRadius === "halfHeight" ? "9999px" : `${borderRadius}px` },
72
+ children: /* @__PURE__ */ jsxs("span", { className: styles.content, children: [
73
+ IconComponent && /* @__PURE__ */ jsx("span", { className: styles.icon, children: /* @__PURE__ */ jsx(IconComponent, { "data-qa": `${dataQa}-icon` }) }),
74
+ /* @__PURE__ */ jsx("span", { className: styles.label, "data-qa": `${dataQa}-label`, children: /* @__PURE__ */ jsx(Text, { typography: "subtitle-1-semibold", children }) }),
75
+ postfix && /* @__PURE__ */ jsx("span", { className: styles.postfix, "data-qa": `${dataQa}-postfix`, children: /* @__PURE__ */ jsx(Text, { typography: "subtitle-1-semibold", children: postfix }) }),
76
+ loading && /* @__PURE__ */ jsx("span", { className: styles.loader, children: /* @__PURE__ */ jsx(Loader, { size: 24 }) })
77
+ ] })
24
78
  }
25
- const additionalAttributes = {
26
- 'data-qa': dataQa,
27
- };
28
- if (Element === 'button') {
29
- additionalAttributes.type = 'button';
30
- }
31
- else {
32
- additionalAttributes.role = Element !== 'a' ? 'button' : undefined;
33
- additionalAttributes['aria-disabled'] = disabled;
34
- }
35
- additionalAttributes.ref = ref;
36
- let button = (jsx(Element, { ...additionalAttributes, ...restProps, disabled: !!disabled, tabIndex: disabled || loading ? -1 : 0, className: classnames(styles.button, styles[`button_style-${style}`], {
37
- [styles.loading]: !!loading,
38
- [styles.withLabelOnHover]: !!labelOnHover,
39
- [styles.hideLabel]: !!hideLabel || !children,
40
- [styles.withPostfix]: !!postfix,
41
- [styles.textless]: !postfix && (!children || !!hideLabel),
42
- [styles.withIconAndLabel]: !!IconComponent && !!children && !hideLabel,
43
- [styles.stackMode]: !!stackMode,
44
- }), style: { borderRadius: borderRadius === 'halfHeight' ? '9999px' : `${borderRadius}px` }, children: jsxs("span", { className: styles.content, children: [IconComponent && (jsx("span", { className: styles.icon, children: jsx(IconComponent, { "data-qa": `${dataQa}-icon` }) })), jsx("span", { className: styles.label, "data-qa": `${dataQa}-label`, children: jsx(Text, { typography: 'subtitle-1-semibold', children: children }) }), postfix && (jsx("span", { className: styles.postfix, "data-qa": `${dataQa}-postfix`, children: jsx(Text, { typography: 'subtitle-1-semibold', children: postfix }) })), loading && (jsx("span", { className: styles.loader, children: jsx(Loader, { size: 24 }) }))] }) }));
45
- if (badge && !disabled) {
46
- button = (jsx(ComponentWithBadge, { allowedSizes: ALLOWED_BADGE_SIZES, badge: badge, offset: stackMode ? 12 : 4, noClip: true, children: button }));
47
- }
48
- if (stackMode) {
49
- return button;
50
- }
51
- return createPortal(jsx(CSSTransition, { appear: true, in: !!visible && !isServerEnv, nodeRef: wrapperRef, classNames: {
52
- appear: styles.enterAnimation,
53
- appearActive: styles.enterAnimationActive,
54
- enter: styles.enterAnimation,
55
- enterActive: styles.enterAnimationActive,
56
- exit: styles.exitAnimation,
57
- exitActive: styles.exitAnimationActive,
58
- }, timeout: CoreTokens['magritte-semantic-animation-time-s'].duration, unmountOnExit: true, children: jsx(Layer, { layer: "floating-button", children: jsx("div", { className: classnames(styles.wrapper, styles[`${position}`], className), ref: wrapperRef, style: inlineStyle, "data-qa": `${dataQa}-wrapper`, children: button }) }) }), host?.current || document.body);
79
+ );
80
+ if (badge && !disabled) {
81
+ button = /* @__PURE__ */ jsx(ComponentWithBadge, { allowedSizes: ALLOWED_BADGE_SIZES, badge, offset: stackMode ? 12 : 4, noClip: true, children: button });
82
+ }
83
+ if (stackMode) {
84
+ return button;
85
+ }
86
+ return createPortal(
87
+ /* @__PURE__ */ jsx(
88
+ CSSTransition,
89
+ {
90
+ appear: true,
91
+ in: !!visible && !isServerEnv,
92
+ nodeRef: wrapperRef,
93
+ classNames: {
94
+ appear: styles.enterAnimation,
95
+ appearActive: styles.enterAnimationActive,
96
+ enter: styles.enterAnimation,
97
+ enterActive: styles.enterAnimationActive,
98
+ exit: styles.exitAnimation,
99
+ exitActive: styles.exitAnimationActive
100
+ },
101
+ timeout: CoreTokens["magritte-semantic-animation-time-s"].duration,
102
+ unmountOnExit: true,
103
+ children: /* @__PURE__ */ jsx(Layer, { layer: "floating-button", children: /* @__PURE__ */ jsx(
104
+ "div",
105
+ {
106
+ className: classnames(styles.wrapper, styles[`${position}`], className),
107
+ ref: wrapperRef,
108
+ style: inlineStyle,
109
+ "data-qa": `${dataQa}-wrapper`,
110
+ children: button
111
+ }
112
+ ) })
113
+ }
114
+ ),
115
+ host?.current || document.body
116
+ );
59
117
  };
60
118
  const FloatingButtonWithStackMode = forwardRef(FloatingButtonComponent);
61
119
  const FloatingButton = forwardRef(FloatingButtonComponent);
@@ -1 +1 @@
1
- {"version":3,"file":"FloatingButton.js","sources":["src/FloatingButton.tsx"],"sourcesContent":["import { forwardRef, useRef } from 'react';\nimport { createPortal } from 'react-dom';\nimport { CSSTransition } from 'react-transition-group';\nimport classnames from 'classnames';\n\nimport { useServerEnv } from '@hh.ru/magritte-common-is-server-env';\nimport CoreTokens from '@hh.ru/magritte-design-tokens/core-tokens';\nimport type { PolymorphicComponentWithRef, PolymorphicForwardRefRenderFunc } from '@hh.ru/magritte-types';\nimport { BadgeSize, ComponentWithBadge } from '@hh.ru/magritte-ui-badge';\nimport type { FloatingButtonProps, FloatingButtonPropsWithStackMode } from '@hh.ru/magritte-ui-floating-button/types';\nimport { Layer } from '@hh.ru/magritte-ui-layer';\nimport { Loader } from '@hh.ru/magritte-ui-loader';\nimport { Text } from '@hh.ru/magritte-ui-typography';\n\nimport styles from './floating-button.less';\n\nconst ALLOWED_BADGE_SIZES: BadgeSize[] = ['small'];\n\nconst FloatingButtonComponent: PolymorphicForwardRefRenderFunc<FloatingButtonPropsWithStackMode, 'button'> = (\n {\n Element = 'button',\n style = 'neutral',\n disabled,\n borderRadius = 'halfHeight',\n icon: IconComponent,\n postfix,\n loading,\n host,\n children,\n className,\n inlineStyle,\n visible,\n labelOnHover: _labelOnHover,\n hideLabel: _hideLabel,\n badge,\n position = 'right',\n 'data-qa': dataQa = 'floating-button',\n stackMode = false,\n ...restProps\n },\n ref\n) => {\n const labelOnHover = _labelOnHover && !!IconComponent;\n const hideLabel = _hideLabel && !!IconComponent;\n const isServerEnv = useServerEnv();\n const wrapperRef = useRef<HTMLDivElement>(null);\n\n if (isServerEnv) {\n return null;\n }\n\n const additionalAttributes: Record<string, unknown> = {\n 'data-qa': dataQa,\n };\n if (Element === 'button') {\n additionalAttributes.type = 'button';\n } else {\n additionalAttributes.role = Element !== 'a' ? 'button' : undefined;\n additionalAttributes['aria-disabled'] = disabled;\n }\n additionalAttributes.ref = ref;\n\n let button = (\n <Element\n {...additionalAttributes}\n {...restProps}\n disabled={!!disabled}\n tabIndex={disabled || loading ? -1 : 0}\n className={classnames(styles.button, styles[`button_style-${style}`], {\n [styles.loading]: !!loading,\n [styles.withLabelOnHover]: !!labelOnHover,\n [styles.hideLabel]: !!hideLabel || !children,\n [styles.withPostfix]: !!postfix,\n [styles.textless]: !postfix && (!children || !!hideLabel),\n [styles.withIconAndLabel]: !!IconComponent && !!children && !hideLabel,\n [styles.stackMode]: !!stackMode,\n })}\n style={{ borderRadius: borderRadius === 'halfHeight' ? '9999px' : `${borderRadius}px` }}\n >\n <span className={styles.content}>\n {IconComponent && (\n <span className={styles.icon}>\n <IconComponent data-qa={`${dataQa}-icon`} />\n </span>\n )}\n <span className={styles.label} data-qa={`${dataQa}-label`}>\n <Text typography={'subtitle-1-semibold'}>{children}</Text>\n </span>\n {postfix && (\n <span className={styles.postfix} data-qa={`${dataQa}-postfix`}>\n <Text typography={'subtitle-1-semibold'}>{postfix}</Text>\n </span>\n )}\n\n {loading && (\n <span className={styles.loader}>\n <Loader size={24} />\n </span>\n )}\n </span>\n </Element>\n );\n\n if (badge && !disabled) {\n button = (\n <ComponentWithBadge allowedSizes={ALLOWED_BADGE_SIZES} badge={badge} offset={stackMode ? 12 : 4} noClip>\n {button}\n </ComponentWithBadge>\n );\n }\n\n if (stackMode) {\n return button;\n }\n\n return createPortal(\n <CSSTransition\n appear\n in={!!visible && !isServerEnv}\n nodeRef={wrapperRef}\n classNames={{\n appear: styles.enterAnimation,\n appearActive: styles.enterAnimationActive,\n enter: styles.enterAnimation,\n enterActive: styles.enterAnimationActive,\n exit: styles.exitAnimation,\n exitActive: styles.exitAnimationActive,\n }}\n timeout={CoreTokens['magritte-semantic-animation-time-s'].duration}\n unmountOnExit\n >\n <Layer layer=\"floating-button\">\n <div\n className={classnames(styles.wrapper, styles[`${position}`], className)}\n ref={wrapperRef}\n style={inlineStyle}\n data-qa={`${dataQa}-wrapper`}\n >\n {button}\n </div>\n </Layer>\n </CSSTransition>,\n host?.current || document.body\n );\n};\n\nexport const FloatingButtonWithStackMode = forwardRef(FloatingButtonComponent) as PolymorphicComponentWithRef<\n FloatingButtonPropsWithStackMode,\n 'button'\n>;\n\nexport const FloatingButton = forwardRef(FloatingButtonComponent) as PolymorphicComponentWithRef<\n FloatingButtonProps,\n 'button'\n>;\n"],"names":["_jsx","_jsxs"],"mappings":"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"}
1
+ {"version":3,"file":"FloatingButton.js","sources":["src/FloatingButton.tsx"],"sourcesContent":["import { forwardRef, useRef } from 'react';\nimport { createPortal } from 'react-dom';\nimport { CSSTransition } from 'react-transition-group';\nimport classnames from 'classnames';\n\nimport { useServerEnv } from '@hh.ru/magritte-common-is-server-env';\nimport CoreTokens from '@hh.ru/magritte-design-tokens/core-tokens';\nimport type { PolymorphicComponentWithRef, PolymorphicForwardRefRenderFunc } from '@hh.ru/magritte-types';\nimport { BadgeSize, ComponentWithBadge } from '@hh.ru/magritte-ui-badge';\nimport type { FloatingButtonProps, FloatingButtonPropsWithStackMode } from '@hh.ru/magritte-ui-floating-button/types';\nimport { Layer } from '@hh.ru/magritte-ui-layer';\nimport { Loader } from '@hh.ru/magritte-ui-loader';\nimport { Text } from '@hh.ru/magritte-ui-typography';\n\nimport styles from './floating-button.less';\n\nconst ALLOWED_BADGE_SIZES: BadgeSize[] = ['small'];\n\nconst FloatingButtonComponent: PolymorphicForwardRefRenderFunc<FloatingButtonPropsWithStackMode, 'button'> = (\n {\n Element = 'button',\n style = 'neutral',\n disabled,\n borderRadius = 'halfHeight',\n icon: IconComponent,\n postfix,\n loading,\n host,\n children,\n className,\n inlineStyle,\n visible,\n labelOnHover: _labelOnHover,\n hideLabel: _hideLabel,\n badge,\n position = 'right',\n 'data-qa': dataQa = 'floating-button',\n stackMode = false,\n ...restProps\n },\n ref\n) => {\n const labelOnHover = _labelOnHover && !!IconComponent;\n const hideLabel = _hideLabel && !!IconComponent;\n const isServerEnv = useServerEnv();\n const wrapperRef = useRef<HTMLDivElement>(null);\n\n if (isServerEnv) {\n return null;\n }\n\n const additionalAttributes: Record<string, unknown> = {\n 'data-qa': dataQa,\n };\n if (Element === 'button') {\n additionalAttributes.type = 'button';\n } else {\n additionalAttributes.role = Element !== 'a' ? 'button' : undefined;\n additionalAttributes['aria-disabled'] = disabled;\n }\n additionalAttributes.ref = ref;\n\n let button = (\n <Element\n {...additionalAttributes}\n {...restProps}\n disabled={!!disabled}\n tabIndex={disabled || loading ? -1 : 0}\n className={classnames(styles.button, styles[`button_style-${style}`], {\n [styles.loading]: !!loading,\n [styles.withLabelOnHover]: !!labelOnHover,\n [styles.hideLabel]: !!hideLabel || !children,\n [styles.withPostfix]: !!postfix,\n [styles.textless]: !postfix && (!children || !!hideLabel),\n [styles.withIconAndLabel]: !!IconComponent && !!children && !hideLabel,\n [styles.stackMode]: !!stackMode,\n })}\n style={{ borderRadius: borderRadius === 'halfHeight' ? '9999px' : `${borderRadius}px` }}\n >\n <span className={styles.content}>\n {IconComponent && (\n <span className={styles.icon}>\n <IconComponent data-qa={`${dataQa}-icon`} />\n </span>\n )}\n <span className={styles.label} data-qa={`${dataQa}-label`}>\n <Text typography={'subtitle-1-semibold'}>{children}</Text>\n </span>\n {postfix && (\n <span className={styles.postfix} data-qa={`${dataQa}-postfix`}>\n <Text typography={'subtitle-1-semibold'}>{postfix}</Text>\n </span>\n )}\n\n {loading && (\n <span className={styles.loader}>\n <Loader size={24} />\n </span>\n )}\n </span>\n </Element>\n );\n\n if (badge && !disabled) {\n button = (\n <ComponentWithBadge allowedSizes={ALLOWED_BADGE_SIZES} badge={badge} offset={stackMode ? 12 : 4} noClip>\n {button}\n </ComponentWithBadge>\n );\n }\n\n if (stackMode) {\n return button;\n }\n\n return createPortal(\n <CSSTransition\n appear\n in={!!visible && !isServerEnv}\n nodeRef={wrapperRef}\n classNames={{\n appear: styles.enterAnimation,\n appearActive: styles.enterAnimationActive,\n enter: styles.enterAnimation,\n enterActive: styles.enterAnimationActive,\n exit: styles.exitAnimation,\n exitActive: styles.exitAnimationActive,\n }}\n timeout={CoreTokens['magritte-semantic-animation-time-s'].duration}\n unmountOnExit\n >\n <Layer layer=\"floating-button\">\n <div\n className={classnames(styles.wrapper, styles[`${position}`], className)}\n ref={wrapperRef}\n style={inlineStyle}\n data-qa={`${dataQa}-wrapper`}\n >\n {button}\n </div>\n </Layer>\n </CSSTransition>,\n host?.current || document.body\n );\n};\n\nexport const FloatingButtonWithStackMode = forwardRef(FloatingButtonComponent) as PolymorphicComponentWithRef<\n FloatingButtonPropsWithStackMode,\n 'button'\n>;\n\nexport const FloatingButton = forwardRef(FloatingButtonComponent) as PolymorphicComponentWithRef<\n FloatingButtonProps,\n 'button'\n>;\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAgBA,MAAM,mBAAA,GAAmC,CAAC,OAAO,CAAA,CAAA;AAEjD,MAAM,0BAAuG,CACzG;AAAA,EACI,OAAU,GAAA,QAAA;AAAA,EACV,KAAQ,GAAA,SAAA;AAAA,EACR,QAAA;AAAA,EACA,YAAe,GAAA,YAAA;AAAA,EACf,IAAM,EAAA,aAAA;AAAA,EACN,OAAA;AAAA,EACA,OAAA;AAAA,EACA,IAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,WAAA;AAAA,EACA,OAAA;AAAA,EACA,YAAc,EAAA,aAAA;AAAA,EACd,SAAW,EAAA,UAAA;AAAA,EACX,KAAA;AAAA,EACA,QAAW,GAAA,OAAA;AAAA,EACX,WAAW,MAAS,GAAA,iBAAA;AAAA,EACpB,SAAY,GAAA,KAAA;AAAA,EACZ,GAAG,SAAA;AACP,CAAA,EACA,GACC,KAAA;AACD,EAAM,MAAA,YAAA,GAAe,aAAiB,IAAA,CAAC,CAAC,aAAA,CAAA;AACxC,EAAM,MAAA,SAAA,GAAY,UAAc,IAAA,CAAC,CAAC,aAAA,CAAA;AAClC,EAAA,MAAM,cAAc,YAAa,EAAA,CAAA;AACjC,EAAM,MAAA,UAAA,GAAa,OAAuB,IAAI,CAAA,CAAA;AAE9C,EAAA,IAAI,WAAa,EAAA;AACb,IAAO,OAAA,IAAA,CAAA;AAAA,GACX;AAEA,EAAA,MAAM,oBAAgD,GAAA;AAAA,IAClD,SAAW,EAAA,MAAA;AAAA,GACf,CAAA;AACA,EAAA,IAAI,YAAY,QAAU,EAAA;AACtB,IAAA,oBAAA,CAAqB,IAAO,GAAA,QAAA,CAAA;AAAA,GACzB,MAAA;AACH,IAAqB,oBAAA,CAAA,IAAA,GAAO,OAAY,KAAA,GAAA,GAAM,QAAW,GAAA,KAAA,CAAA,CAAA;AACzD,IAAA,oBAAA,CAAqB,eAAe,CAAI,GAAA,QAAA,CAAA;AAAA,GAC5C;AACA,EAAA,oBAAA,CAAqB,GAAM,GAAA,GAAA,CAAA;AAE3B,EAAA,IAAI,MACA,mBAAA,GAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACI,GAAG,oBAAA;AAAA,MACH,GAAG,SAAA;AAAA,MACJ,QAAA,EAAU,CAAC,CAAC,QAAA;AAAA,MACZ,QAAA,EAAU,QAAY,IAAA,OAAA,GAAU,CAAK,CAAA,GAAA,CAAA;AAAA,MACrC,SAAA,EAAW,WAAW,MAAO,CAAA,MAAA,EAAQ,OAAO,CAAgB,aAAA,EAAA,KAAK,EAAE,CAAG,EAAA;AAAA,QAClE,CAAC,MAAA,CAAO,OAAO,GAAG,CAAC,CAAC,OAAA;AAAA,QACpB,CAAC,MAAA,CAAO,gBAAgB,GAAG,CAAC,CAAC,YAAA;AAAA,QAC7B,CAAC,MAAO,CAAA,SAAS,GAAG,CAAC,CAAC,aAAa,CAAC,QAAA;AAAA,QACpC,CAAC,MAAA,CAAO,WAAW,GAAG,CAAC,CAAC,OAAA;AAAA,QACxB,CAAC,OAAO,QAAQ,GAAG,CAAC,OAAY,KAAA,CAAC,QAAY,IAAA,CAAC,CAAC,SAAA,CAAA;AAAA,QAC/C,CAAC,MAAO,CAAA,gBAAgB,GAAG,CAAC,CAAC,aAAiB,IAAA,CAAC,CAAC,QAAA,IAAY,CAAC,SAAA;AAAA,QAC7D,CAAC,MAAA,CAAO,SAAS,GAAG,CAAC,CAAC,SAAA;AAAA,OACzB,CAAA;AAAA,MACD,KAAA,EAAO,EAAE,YAAc,EAAA,YAAA,KAAiB,eAAe,QAAW,GAAA,CAAA,EAAG,YAAY,CAAK,EAAA,CAAA,EAAA;AAAA,MAEtF,QAAC,kBAAA,IAAA,CAAA,MAAA,EAAA,EAAK,SAAW,EAAA,MAAA,CAAO,OACnB,EAAA,QAAA,EAAA;AAAA,QACG,aAAA,oBAAA,GAAA,CAAC,MAAK,EAAA,EAAA,SAAA,EAAW,MAAO,CAAA,IAAA,EACpB,QAAC,kBAAA,GAAA,CAAA,aAAA,EAAA,EAAc,SAAS,EAAA,CAAA,EAAG,MAAM,CAAA,KAAA,CAAA,EAAS,CAC9C,EAAA,CAAA;AAAA,wBAEH,GAAA,CAAA,MAAA,EAAA,EAAK,SAAW,EAAA,MAAA,CAAO,OAAO,SAAS,EAAA,CAAA,EAAG,MAAM,CAAA,MAAA,CAAA,EAC7C,QAAC,kBAAA,GAAA,CAAA,IAAA,EAAA,EAAK,UAAY,EAAA,qBAAA,EAAwB,UAAS,CACvD,EAAA,CAAA;AAAA,QACC,OACG,oBAAA,GAAA,CAAC,MAAK,EAAA,EAAA,SAAA,EAAW,OAAO,OAAS,EAAA,SAAA,EAAS,CAAG,EAAA,MAAM,YAC/C,QAAC,kBAAA,GAAA,CAAA,IAAA,EAAA,EAAK,UAAY,EAAA,qBAAA,EAAwB,mBAAQ,CACtD,EAAA,CAAA;AAAA,QAGH,OAAA,oBACI,GAAA,CAAA,MAAA,EAAA,EAAK,SAAW,EAAA,MAAA,CAAO,QACpB,QAAC,kBAAA,GAAA,CAAA,MAAA,EAAA,EAAO,IAAM,EAAA,EAAA,EAAI,CACtB,EAAA,CAAA;AAAA,OAER,EAAA,CAAA;AAAA,KAAA;AAAA,GACJ,CAAA;AAGJ,EAAI,IAAA,KAAA,IAAS,CAAC,QAAU,EAAA;AACpB,IACI,MAAA,mBAAA,GAAA,CAAC,kBAAmB,EAAA,EAAA,YAAA,EAAc,mBAAqB,EAAA,KAAA,EAAc,MAAQ,EAAA,SAAA,GAAY,EAAK,GAAA,CAAA,EAAG,MAAM,EAAA,IAAA,EAClG,QACL,EAAA,MAAA,EAAA,CAAA,CAAA;AAAA,GAER;AAEA,EAAA,IAAI,SAAW,EAAA;AACX,IAAO,OAAA,MAAA,CAAA;AAAA,GACX;AAEA,EAAO,OAAA,YAAA;AAAA,oBACH,GAAA;AAAA,MAAC,aAAA;AAAA,MAAA;AAAA,QACG,MAAM,EAAA,IAAA;AAAA,QACN,EAAI,EAAA,CAAC,CAAC,OAAA,IAAW,CAAC,WAAA;AAAA,QAClB,OAAS,EAAA,UAAA;AAAA,QACT,UAAY,EAAA;AAAA,UACR,QAAQ,MAAO,CAAA,cAAA;AAAA,UACf,cAAc,MAAO,CAAA,oBAAA;AAAA,UACrB,OAAO,MAAO,CAAA,cAAA;AAAA,UACd,aAAa,MAAO,CAAA,oBAAA;AAAA,UACpB,MAAM,MAAO,CAAA,aAAA;AAAA,UACb,YAAY,MAAO,CAAA,mBAAA;AAAA,SACvB;AAAA,QACA,OAAA,EAAS,UAAW,CAAA,oCAAoC,CAAE,CAAA,QAAA;AAAA,QAC1D,aAAa,EAAA,IAAA;AAAA,QAEb,QAAA,kBAAA,GAAA,CAAC,KAAM,EAAA,EAAA,KAAA,EAAM,iBACT,EAAA,QAAA,kBAAA,GAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACG,SAAA,EAAW,WAAW,MAAO,CAAA,OAAA,EAAS,OAAO,CAAG,EAAA,QAAQ,CAAE,CAAA,CAAA,EAAG,SAAS,CAAA;AAAA,YACtE,GAAK,EAAA,UAAA;AAAA,YACL,KAAO,EAAA,WAAA;AAAA,YACP,SAAA,EAAS,GAAG,MAAM,CAAA,QAAA,CAAA;AAAA,YAEjB,QAAA,EAAA,MAAA;AAAA,WAAA;AAAA,SAET,EAAA,CAAA;AAAA,OAAA;AAAA,KACJ;AAAA,IACA,IAAA,EAAM,WAAW,QAAS,CAAA,IAAA;AAAA,GAC9B,CAAA;AACJ,CAAA,CAAA;AAEa,MAAA,2BAAA,GAA8B,WAAW,uBAAuB,EAAA;AAKhE,MAAA,cAAA,GAAiB,WAAW,uBAAuB;;;;"}
@@ -1,5 +1,5 @@
1
- import { FloatingButtonStackItem } from '@hh.ru/magritte-ui-floating-button/FloatingButtonStackItem';
2
- import type { FloatingButtonStackProps } from '@hh.ru/magritte-ui-floating-button/types';
1
+ import { FloatingButtonStackItem } from './FloatingButtonStackItem';
2
+ import type { FloatingButtonStackProps } from './types';
3
3
  export interface FloatingButtonStackComponents {
4
4
  Item: typeof FloatingButtonStackItem;
5
5
  }
@@ -9,7 +9,7 @@ import { FloatingButtonStackItem } from './FloatingButtonStackItem.js';
9
9
  import { FloatingButtonStackItems } from './FloatingButtonStackItems.js';
10
10
  import { FloatingButtonStackUpButton } from './FloatingButtonStackUpButton.js';
11
11
  import { Layer } from '@hh.ru/magritte-ui-layer';
12
- import { s as styles } from './floating-button-stack-DHEbs91i.js';
12
+ import { s as styles } from './floating-button-stack-Bxv4YYAQ.js';
13
13
  import 'react-transition-group';
14
14
  import '@hh.ru/magritte-design-tokens/core-tokens';
15
15
  import './FloatingButton.js';
@@ -19,14 +19,50 @@ import '@hh.ru/magritte-ui-typography';
19
19
  import '@hh.ru/magritte-ui-breakpoint';
20
20
  import '@hh.ru/magritte-ui-icon/variants/icon';
21
21
 
22
- const FloatingButtonStackComponent = forwardRef(({ style = 'neutral', host, children, className, inlineStyle, upButtonVisible, disabled = false, position = 'right', onUpButtonClick, 'data-qa': dataQa = 'floating-button-stack', }, ref) => {
22
+ const FloatingButtonStackComponent = forwardRef(
23
+ ({
24
+ style = "neutral",
25
+ host,
26
+ children,
27
+ className,
28
+ inlineStyle,
29
+ upButtonVisible,
30
+ disabled = false,
31
+ position = "right",
32
+ onUpButtonClick,
33
+ "data-qa": dataQa = "floating-button-stack"
34
+ }, ref) => {
23
35
  const isServerEnv = useServerEnv();
24
36
  if (isServerEnv) {
25
- return null;
37
+ return null;
26
38
  }
27
- return createPortal(jsx(Layer, { layer: "floating-button-stack", children: jsx("div", { ref: ref, className: classnames(styles.stack, styles[`${position}`], className), style: inlineStyle, "data-qa": dataQa, children: jsxs(FloatingButtonStackProvider, { style: style, disabled: disabled, children: [jsx(FloatingButtonStackUpButton, { upButtonVisible: upButtonVisible, disabled: disabled, onUpButtonClick: onUpButtonClick, "data-qa": dataQa }), jsx(FloatingButtonStackItems, { children: children })] }) }) }), host?.current || document.body);
28
- });
29
- FloatingButtonStackComponent.displayName = 'FloatingButtonStack';
39
+ return createPortal(
40
+ /* @__PURE__ */ jsx(Layer, { layer: "floating-button-stack", children: /* @__PURE__ */ jsx(
41
+ "div",
42
+ {
43
+ ref,
44
+ className: classnames(styles.stack, styles[`${position}`], className),
45
+ style: inlineStyle,
46
+ "data-qa": dataQa,
47
+ children: /* @__PURE__ */ jsxs(FloatingButtonStackProvider, { style, disabled, children: [
48
+ /* @__PURE__ */ jsx(
49
+ FloatingButtonStackUpButton,
50
+ {
51
+ upButtonVisible,
52
+ disabled,
53
+ onUpButtonClick,
54
+ "data-qa": dataQa
55
+ }
56
+ ),
57
+ /* @__PURE__ */ jsx(FloatingButtonStackItems, { children })
58
+ ] })
59
+ }
60
+ ) }),
61
+ host?.current || document.body
62
+ );
63
+ }
64
+ );
65
+ FloatingButtonStackComponent.displayName = "FloatingButtonStack";
30
66
  const FloatingButtonStack = FloatingButtonStackComponent;
31
67
  FloatingButtonStack.Item = FloatingButtonStackItem;
32
68
 
@@ -1 +1 @@
1
- {"version":3,"file":"FloatingButtonStack.js","sources":["src/FloatingButtonStack.tsx"],"sourcesContent":["import { forwardRef } from 'react';\nimport { createPortal } from 'react-dom';\nimport classnames from 'classnames';\n\nimport { useServerEnv } from '@hh.ru/magritte-common-is-server-env';\nimport { FloatingButtonStackProvider } from '@hh.ru/magritte-ui-floating-button/FloatingButtonStackContext';\nimport { FloatingButtonStackItem } from '@hh.ru/magritte-ui-floating-button/FloatingButtonStackItem';\nimport { FloatingButtonStackItems } from '@hh.ru/magritte-ui-floating-button/FloatingButtonStackItems';\nimport { FloatingButtonStackUpButton } from '@hh.ru/magritte-ui-floating-button/FloatingButtonStackUpButton';\nimport type { FloatingButtonStackProps } from '@hh.ru/magritte-ui-floating-button/types';\nimport { Layer } from '@hh.ru/magritte-ui-layer';\n\nimport styles from './floating-button-stack.less';\n\nexport interface FloatingButtonStackComponents {\n Item: typeof FloatingButtonStackItem;\n}\n\nexport const FloatingButtonStackComponent = forwardRef<HTMLDivElement, FloatingButtonStackProps>(\n (\n {\n style = 'neutral',\n host,\n children,\n className,\n inlineStyle,\n upButtonVisible,\n disabled = false,\n position = 'right',\n onUpButtonClick,\n 'data-qa': dataQa = 'floating-button-stack',\n },\n ref\n ) => {\n const isServerEnv = useServerEnv();\n\n if (isServerEnv) {\n return null;\n }\n\n return createPortal(\n <Layer layer=\"floating-button-stack\">\n <div\n ref={ref}\n className={classnames(styles.stack, styles[`${position}`], className)}\n style={inlineStyle}\n data-qa={dataQa}\n >\n <FloatingButtonStackProvider style={style} disabled={disabled}>\n <FloatingButtonStackUpButton\n upButtonVisible={upButtonVisible}\n disabled={disabled}\n onUpButtonClick={onUpButtonClick}\n data-qa={dataQa}\n />\n <FloatingButtonStackItems>{children}</FloatingButtonStackItems>\n </FloatingButtonStackProvider>\n </div>\n </Layer>,\n host?.current || document.body\n );\n }\n);\n\nFloatingButtonStackComponent.displayName = 'FloatingButtonStack';\n\nconst FloatingButtonStack = FloatingButtonStackComponent as typeof FloatingButtonStackComponent &\n FloatingButtonStackComponents;\n\nFloatingButtonStack.Item = FloatingButtonStackItem;\n\nexport { FloatingButtonStack };\n"],"names":["_jsx","_jsxs"],"mappings":";;;;;;;;;;;;;;;;;;;;AAkBa,MAAA,4BAA4B,GAAG,UAAU,CAClD,CACI,EACI,KAAK,GAAG,SAAS,EACjB,IAAI,EACJ,QAAQ,EACR,SAAS,EACT,WAAW,EACX,eAAe,EACf,QAAQ,GAAG,KAAK,EAChB,QAAQ,GAAG,OAAO,EAClB,eAAe,EACf,SAAS,EAAE,MAAM,GAAG,uBAAuB,GAC9C,EACD,GAAG,KACH;AACA,IAAA,MAAM,WAAW,GAAG,YAAY,EAAE,CAAC;IAEnC,IAAI,WAAW,EAAE;AACb,QAAA,OAAO,IAAI,CAAC;KACf;AAED,IAAA,OAAO,YAAY,CACfA,GAAA,CAAC,KAAK,EAAC,EAAA,KAAK,EAAC,uBAAuB,EAAA,QAAA,EAChCA,GACI,CAAA,KAAA,EAAA,EAAA,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA,EAAG,QAAQ,CAAE,CAAA,CAAC,EAAE,SAAS,CAAC,EACrE,KAAK,EAAE,WAAW,EAAA,SAAA,EACT,MAAM,EAEf,QAAA,EAAAC,IAAA,CAAC,2BAA2B,EAAC,EAAA,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EACzD,QAAA,EAAA,CAAAD,GAAA,CAAC,2BAA2B,EACxB,EAAA,eAAe,EAAE,eAAe,EAChC,QAAQ,EAAE,QAAQ,EAClB,eAAe,EAAE,eAAe,EAAA,SAAA,EACvB,MAAM,EAAA,CACjB,EACFA,GAAC,CAAA,wBAAwB,cAAE,QAAQ,EAAA,CAA4B,IACrC,EAC5B,CAAA,EAAA,CACF,EACR,IAAI,EAAE,OAAO,IAAI,QAAQ,CAAC,IAAI,CACjC,CAAC;AACN,CAAC,EACH;AAEF,4BAA4B,CAAC,WAAW,GAAG,qBAAqB,CAAC;AAE3D,MAAA,mBAAmB,GAAG,6BACM;AAElC,mBAAmB,CAAC,IAAI,GAAG,uBAAuB;;;;"}
1
+ {"version":3,"file":"FloatingButtonStack.js","sources":["src/FloatingButtonStack.tsx"],"sourcesContent":["import { forwardRef } from 'react';\nimport { createPortal } from 'react-dom';\nimport classnames from 'classnames';\n\nimport { useServerEnv } from '@hh.ru/magritte-common-is-server-env';\nimport { FloatingButtonStackProvider } from '@hh.ru/magritte-ui-floating-button/FloatingButtonStackContext';\nimport { FloatingButtonStackItem } from '@hh.ru/magritte-ui-floating-button/FloatingButtonStackItem';\nimport { FloatingButtonStackItems } from '@hh.ru/magritte-ui-floating-button/FloatingButtonStackItems';\nimport { FloatingButtonStackUpButton } from '@hh.ru/magritte-ui-floating-button/FloatingButtonStackUpButton';\nimport type { FloatingButtonStackProps } from '@hh.ru/magritte-ui-floating-button/types';\nimport { Layer } from '@hh.ru/magritte-ui-layer';\n\nimport styles from './floating-button-stack.less';\n\nexport interface FloatingButtonStackComponents {\n Item: typeof FloatingButtonStackItem;\n}\n\nexport const FloatingButtonStackComponent = forwardRef<HTMLDivElement, FloatingButtonStackProps>(\n (\n {\n style = 'neutral',\n host,\n children,\n className,\n inlineStyle,\n upButtonVisible,\n disabled = false,\n position = 'right',\n onUpButtonClick,\n 'data-qa': dataQa = 'floating-button-stack',\n },\n ref\n ) => {\n const isServerEnv = useServerEnv();\n\n if (isServerEnv) {\n return null;\n }\n\n return createPortal(\n <Layer layer=\"floating-button-stack\">\n <div\n ref={ref}\n className={classnames(styles.stack, styles[`${position}`], className)}\n style={inlineStyle}\n data-qa={dataQa}\n >\n <FloatingButtonStackProvider style={style} disabled={disabled}>\n <FloatingButtonStackUpButton\n upButtonVisible={upButtonVisible}\n disabled={disabled}\n onUpButtonClick={onUpButtonClick}\n data-qa={dataQa}\n />\n <FloatingButtonStackItems>{children}</FloatingButtonStackItems>\n </FloatingButtonStackProvider>\n </div>\n </Layer>,\n host?.current || document.body\n );\n }\n);\n\nFloatingButtonStackComponent.displayName = 'FloatingButtonStack';\n\nconst FloatingButtonStack = FloatingButtonStackComponent as typeof FloatingButtonStackComponent &\n FloatingButtonStackComponents;\n\nFloatingButtonStack.Item = FloatingButtonStackItem;\n\nexport { FloatingButtonStack };\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAkBO,MAAM,4BAA+B,GAAA,UAAA;AAAA,EACxC,CACI;AAAA,IACI,KAAQ,GAAA,SAAA;AAAA,IACR,IAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA;AAAA,IACA,WAAA;AAAA,IACA,eAAA;AAAA,IACA,QAAW,GAAA,KAAA;AAAA,IACX,QAAW,GAAA,OAAA;AAAA,IACX,eAAA;AAAA,IACA,WAAW,MAAS,GAAA,uBAAA;AAAA,KAExB,GACC,KAAA;AACD,IAAA,MAAM,cAAc,YAAa,EAAA,CAAA;AAEjC,IAAA,IAAI,WAAa,EAAA;AACb,MAAO,OAAA,IAAA,CAAA;AAAA,KACX;AAEA,IAAO,OAAA,YAAA;AAAA,sBACH,GAAA,CAAC,KAAM,EAAA,EAAA,KAAA,EAAM,uBACT,EAAA,QAAA,kBAAA,GAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACG,GAAA;AAAA,UACA,SAAA,EAAW,WAAW,MAAO,CAAA,KAAA,EAAO,OAAO,CAAG,EAAA,QAAQ,CAAE,CAAA,CAAA,EAAG,SAAS,CAAA;AAAA,UACpE,KAAO,EAAA,WAAA;AAAA,UACP,SAAS,EAAA,MAAA;AAAA,UAET,QAAA,kBAAA,IAAA,CAAC,2BAA4B,EAAA,EAAA,KAAA,EAAc,QACvC,EAAA,QAAA,EAAA;AAAA,4BAAA,GAAA;AAAA,cAAC,2BAAA;AAAA,cAAA;AAAA,gBACG,eAAA;AAAA,gBACA,QAAA;AAAA,gBACA,eAAA;AAAA,gBACA,SAAS,EAAA,MAAA;AAAA,eAAA;AAAA,aACb;AAAA,4BACA,GAAA,CAAC,4BAA0B,QAAS,EAAA,CAAA;AAAA,WACxC,EAAA,CAAA;AAAA,SAAA;AAAA,OAER,EAAA,CAAA;AAAA,MACA,IAAA,EAAM,WAAW,QAAS,CAAA,IAAA;AAAA,KAC9B,CAAA;AAAA,GACJ;AACJ,EAAA;AAEA,4BAAA,CAA6B,WAAc,GAAA,qBAAA,CAAA;AAE3C,MAAM,mBAAsB,GAAA,6BAAA;AAG5B,mBAAA,CAAoB,IAAO,GAAA,uBAAA;;;;"}
@@ -1,5 +1,5 @@
1
1
  import { type FC, type PropsWithChildren } from 'react';
2
- import type { FloatingButtonStyle } from '@hh.ru/magritte-ui-floating-button/types';
2
+ import type { FloatingButtonStyle } from './types';
3
3
  type ButtonsSet = Set<string>;
4
4
  interface FloatingButtonStackContextProps {
5
5
  /** floating кнопки */
@@ -3,46 +3,48 @@ import { jsx } from 'react/jsx-runtime';
3
3
  import { createContext, useContext, useState, useEffect, useCallback, useMemo } from 'react';
4
4
 
5
5
  const FloatingButtonStackContext = createContext({
6
- visibleButtons: new Set(),
7
- animationsEnabled: false,
8
- setVisible: () => null,
6
+ visibleButtons: /* @__PURE__ */ new Set(),
7
+ animationsEnabled: false,
8
+ setVisible: () => null
9
9
  });
10
10
  const useFloatingButtonStack = () => useContext(FloatingButtonStackContext);
11
11
  const FloatingButtonStackProvider = ({ style, disabled, children }) => {
12
- const [visibleButtons, setVisibleButtons] = useState(() => new Set());
13
- const [animationsEnabled, setAnimationsEnabled] = useState(false);
14
- useEffect(() => {
15
- if (animationsEnabled) {
16
- return;
17
- }
18
- if (visibleButtons.size > 0) {
19
- setAnimationsEnabled(true);
20
- }
21
- }, [visibleButtons, animationsEnabled]);
22
- const setVisible = useCallback((id, visible) => {
23
- setVisibleButtons((prev) => {
24
- const has = prev.has(id);
25
- if (has === visible) {
26
- return prev;
27
- }
28
- const next = new Set(prev);
29
- if (visible) {
30
- next.add(id);
31
- }
32
- else {
33
- next.delete(id);
34
- }
35
- return next;
36
- });
37
- }, []);
38
- const contextValue = useMemo(() => ({
39
- style,
40
- disabled,
41
- animationsEnabled,
42
- setVisible,
43
- visibleButtons,
44
- }), [style, disabled, animationsEnabled, setVisible, visibleButtons]);
45
- return jsx(FloatingButtonStackContext.Provider, { value: contextValue, children: children });
12
+ const [visibleButtons, setVisibleButtons] = useState(() => /* @__PURE__ */ new Set());
13
+ const [animationsEnabled, setAnimationsEnabled] = useState(false);
14
+ useEffect(() => {
15
+ if (animationsEnabled) {
16
+ return;
17
+ }
18
+ if (visibleButtons.size > 0) {
19
+ setAnimationsEnabled(true);
20
+ }
21
+ }, [visibleButtons, animationsEnabled]);
22
+ const setVisible = useCallback((id, visible) => {
23
+ setVisibleButtons((prev) => {
24
+ const has = prev.has(id);
25
+ if (has === visible) {
26
+ return prev;
27
+ }
28
+ const next = new Set(prev);
29
+ if (visible) {
30
+ next.add(id);
31
+ } else {
32
+ next.delete(id);
33
+ }
34
+ return next;
35
+ });
36
+ }, []);
37
+ const contextValue = useMemo(
38
+ () => ({
39
+ style,
40
+ disabled,
41
+ animationsEnabled,
42
+ setVisible,
43
+ visibleButtons
44
+ }),
45
+ [style, disabled, animationsEnabled, setVisible, visibleButtons]
46
+ );
47
+ return /* @__PURE__ */ jsx(FloatingButtonStackContext.Provider, { value: contextValue, children });
46
48
  };
47
49
 
48
50
  export { FloatingButtonStackContext, FloatingButtonStackProvider, useFloatingButtonStack };
@@ -1 +1 @@
1
- {"version":3,"file":"FloatingButtonStackContext.js","sources":["src/FloatingButtonStackContext.tsx"],"sourcesContent":["import {\n createContext,\n useContext,\n useState,\n useCallback,\n useMemo,\n useEffect,\n type FC,\n type PropsWithChildren,\n} from 'react';\n\nimport type { FloatingButtonStyle } from '@hh.ru/magritte-ui-floating-button/types';\n\ntype ButtonsSet = Set<string>;\n\ninterface FloatingButtonStackContextProps {\n /** floating кнопки */\n visibleButtons: ButtonsSet;\n /** флаг включения анимаций стака */\n animationsEnabled: boolean;\n /** стиль floating стака */\n style?: FloatingButtonStyle;\n /** флаг активности кропки */\n disabled?: boolean;\n /** callback для переключения видимости */\n setVisible: (id: string, visible: boolean) => void;\n}\n\nexport const FloatingButtonStackContext = createContext<FloatingButtonStackContextProps>({\n visibleButtons: new Set(),\n animationsEnabled: false,\n setVisible: () => null,\n});\n\nexport const useFloatingButtonStack = (): FloatingButtonStackContextProps => useContext(FloatingButtonStackContext);\n\ninterface FloatingButtonStackProviderProps extends PropsWithChildren {\n style?: FloatingButtonStyle;\n disabled?: boolean;\n}\n\nexport const FloatingButtonStackProvider: FC<FloatingButtonStackProviderProps> = ({ style, disabled, children }) => {\n const [visibleButtons, setVisibleButtons] = useState<ButtonsSet>(() => new Set());\n const [animationsEnabled, setAnimationsEnabled] = useState(false);\n\n useEffect(() => {\n if (animationsEnabled) {\n return;\n }\n if (visibleButtons.size > 0) {\n setAnimationsEnabled(true);\n }\n }, [visibleButtons, animationsEnabled]);\n\n const setVisible = useCallback<FloatingButtonStackContextProps['setVisible']>((id, visible) => {\n setVisibleButtons((prev) => {\n const has = prev.has(id);\n if (has === visible) {\n return prev;\n }\n const next = new Set(prev);\n if (visible) {\n next.add(id);\n } else {\n next.delete(id);\n }\n return next;\n });\n }, []);\n\n const contextValue = useMemo(\n () => ({\n style,\n disabled,\n animationsEnabled,\n setVisible,\n visibleButtons,\n }),\n [style, disabled, animationsEnabled, setVisible, visibleButtons]\n );\n\n return <FloatingButtonStackContext.Provider value={contextValue}>{children}</FloatingButtonStackContext.Provider>;\n};\n"],"names":["_jsx"],"mappings":";;;AA4BO,MAAM,0BAA0B,GAAG,aAAa,CAAkC;IACrF,cAAc,EAAE,IAAI,GAAG,EAAE;AACzB,IAAA,iBAAiB,EAAE,KAAK;AACxB,IAAA,UAAU,EAAE,MAAM,IAAI;AACzB,CAAA,EAAE;AAEU,MAAA,sBAAsB,GAAG,MAAuC,UAAU,CAAC,0BAA0B,EAAE;AAO7G,MAAM,2BAA2B,GAAyC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAI;AAC/G,IAAA,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAa,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC;IAClF,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAElE,SAAS,CAAC,MAAK;QACX,IAAI,iBAAiB,EAAE;YACnB,OAAO;SACV;AACD,QAAA,IAAI,cAAc,CAAC,IAAI,GAAG,CAAC,EAAE;YACzB,oBAAoB,CAAC,IAAI,CAAC,CAAC;SAC9B;AACL,KAAC,EAAE,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAExC,MAAM,UAAU,GAAG,WAAW,CAAgD,CAAC,EAAE,EAAE,OAAO,KAAI;AAC1F,QAAA,iBAAiB,CAAC,CAAC,IAAI,KAAI;YACvB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACzB,YAAA,IAAI,GAAG,KAAK,OAAO,EAAE;AACjB,gBAAA,OAAO,IAAI,CAAC;aACf;AACD,YAAA,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;YAC3B,IAAI,OAAO,EAAE;AACT,gBAAA,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;aAChB;iBAAM;AACH,gBAAA,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;aACnB;AACD,YAAA,OAAO,IAAI,CAAC;AAChB,SAAC,CAAC,CAAC;KACN,EAAE,EAAE,CAAC,CAAC;AAEP,IAAA,MAAM,YAAY,GAAG,OAAO,CACxB,OAAO;QACH,KAAK;QACL,QAAQ;QACR,iBAAiB;QACjB,UAAU;QACV,cAAc;AACjB,KAAA,CAAC,EACF,CAAC,KAAK,EAAE,QAAQ,EAAE,iBAAiB,EAAE,UAAU,EAAE,cAAc,CAAC,CACnE,CAAC;IAEF,OAAOA,GAAA,CAAC,0BAA0B,CAAC,QAAQ,EAAA,EAAC,KAAK,EAAE,YAAY,EAAA,QAAA,EAAG,QAAQ,EAAA,CAAuC,CAAC;AACtH;;;;"}
1
+ {"version":3,"file":"FloatingButtonStackContext.js","sources":["src/FloatingButtonStackContext.tsx"],"sourcesContent":["import {\n createContext,\n useContext,\n useState,\n useCallback,\n useMemo,\n useEffect,\n type FC,\n type PropsWithChildren,\n} from 'react';\n\nimport type { FloatingButtonStyle } from '@hh.ru/magritte-ui-floating-button/types';\n\ntype ButtonsSet = Set<string>;\n\ninterface FloatingButtonStackContextProps {\n /** floating кнопки */\n visibleButtons: ButtonsSet;\n /** флаг включения анимаций стака */\n animationsEnabled: boolean;\n /** стиль floating стака */\n style?: FloatingButtonStyle;\n /** флаг активности кропки */\n disabled?: boolean;\n /** callback для переключения видимости */\n setVisible: (id: string, visible: boolean) => void;\n}\n\nexport const FloatingButtonStackContext = createContext<FloatingButtonStackContextProps>({\n visibleButtons: new Set(),\n animationsEnabled: false,\n setVisible: () => null,\n});\n\nexport const useFloatingButtonStack = (): FloatingButtonStackContextProps => useContext(FloatingButtonStackContext);\n\ninterface FloatingButtonStackProviderProps extends PropsWithChildren {\n style?: FloatingButtonStyle;\n disabled?: boolean;\n}\n\nexport const FloatingButtonStackProvider: FC<FloatingButtonStackProviderProps> = ({ style, disabled, children }) => {\n const [visibleButtons, setVisibleButtons] = useState<ButtonsSet>(() => new Set());\n const [animationsEnabled, setAnimationsEnabled] = useState(false);\n\n useEffect(() => {\n if (animationsEnabled) {\n return;\n }\n if (visibleButtons.size > 0) {\n setAnimationsEnabled(true);\n }\n }, [visibleButtons, animationsEnabled]);\n\n const setVisible = useCallback<FloatingButtonStackContextProps['setVisible']>((id, visible) => {\n setVisibleButtons((prev) => {\n const has = prev.has(id);\n if (has === visible) {\n return prev;\n }\n const next = new Set(prev);\n if (visible) {\n next.add(id);\n } else {\n next.delete(id);\n }\n return next;\n });\n }, []);\n\n const contextValue = useMemo(\n () => ({\n style,\n disabled,\n animationsEnabled,\n setVisible,\n visibleButtons,\n }),\n [style, disabled, animationsEnabled, setVisible, visibleButtons]\n );\n\n return <FloatingButtonStackContext.Provider value={contextValue}>{children}</FloatingButtonStackContext.Provider>;\n};\n"],"names":[],"mappings":";;;AA4BO,MAAM,6BAA6B,aAA+C,CAAA;AAAA,EACrF,cAAA,sBAAoB,GAAI,EAAA;AAAA,EACxB,iBAAmB,EAAA,KAAA;AAAA,EACnB,YAAY,MAAM,IAAA;AACtB,CAAC,EAAA;AAEY,MAAA,sBAAA,GAAyB,MAAuC,UAAA,CAAW,0BAA0B,EAAA;AAO3G,MAAM,8BAAoE,CAAC,EAAE,KAAO,EAAA,QAAA,EAAU,UAAe,KAAA;AAChH,EAAM,MAAA,CAAC,gBAAgB,iBAAiB,CAAA,GAAI,SAAqB,sBAAM,IAAI,KAAK,CAAA,CAAA;AAChF,EAAA,MAAM,CAAC,iBAAA,EAAmB,oBAAoB,CAAA,GAAI,SAAS,KAAK,CAAA,CAAA;AAEhE,EAAA,SAAA,CAAU,MAAM;AACZ,IAAA,IAAI,iBAAmB,EAAA;AACnB,MAAA,OAAA;AAAA,KACJ;AACA,IAAI,IAAA,cAAA,CAAe,OAAO,CAAG,EAAA;AACzB,MAAA,oBAAA,CAAqB,IAAI,CAAA,CAAA;AAAA,KAC7B;AAAA,GACD,EAAA,CAAC,cAAgB,EAAA,iBAAiB,CAAC,CAAA,CAAA;AAEtC,EAAA,MAAM,UAAa,GAAA,WAAA,CAA2D,CAAC,EAAA,EAAI,OAAY,KAAA;AAC3F,IAAA,iBAAA,CAAkB,CAAC,IAAS,KAAA;AACxB,MAAM,MAAA,GAAA,GAAM,IAAK,CAAA,GAAA,CAAI,EAAE,CAAA,CAAA;AACvB,MAAA,IAAI,QAAQ,OAAS,EAAA;AACjB,QAAO,OAAA,IAAA,CAAA;AAAA,OACX;AACA,MAAM,MAAA,IAAA,GAAO,IAAI,GAAA,CAAI,IAAI,CAAA,CAAA;AACzB,MAAA,IAAI,OAAS,EAAA;AACT,QAAA,IAAA,CAAK,IAAI,EAAE,CAAA,CAAA;AAAA,OACR,MAAA;AACH,QAAA,IAAA,CAAK,OAAO,EAAE,CAAA,CAAA;AAAA,OAClB;AACA,MAAO,OAAA,IAAA,CAAA;AAAA,KACV,CAAA,CAAA;AAAA,GACL,EAAG,EAAE,CAAA,CAAA;AAEL,EAAA,MAAM,YAAe,GAAA,OAAA;AAAA,IACjB,OAAO;AAAA,MACH,KAAA;AAAA,MACA,QAAA;AAAA,MACA,iBAAA;AAAA,MACA,UAAA;AAAA,MACA,cAAA;AAAA,KACJ,CAAA;AAAA,IACA,CAAC,KAAA,EAAO,QAAU,EAAA,iBAAA,EAAmB,YAAY,cAAc,CAAA;AAAA,GACnE,CAAA;AAEA,EAAA,2BAAQ,0BAA2B,CAAA,QAAA,EAA3B,EAAoC,KAAA,EAAO,cAAe,QAAS,EAAA,CAAA,CAAA;AAC/E;;;;"}
@@ -1,3 +1,3 @@
1
1
  import type { PolymorphicComponentWithRef } from '@hh.ru/magritte-types';
2
- import type { FloatingButtonStackItemProps } from '@hh.ru/magritte-ui-floating-button/types';
3
- export declare const FloatingButtonStackItem: PolymorphicComponentWithRef<FloatingButtonStackItemProps, "button">;
2
+ import type { FloatingButtonStackItemProps } from './types';
3
+ export declare const FloatingButtonStackItem: PolymorphicComponentWithRef<FloatingButtonStackItemProps, 'button'>;
@@ -6,7 +6,7 @@ import classnames from 'classnames';
6
6
  import CoreTokens from '@hh.ru/magritte-design-tokens/core-tokens';
7
7
  import { FloatingButtonWithStackMode } from './FloatingButton.js';
8
8
  import { useFloatingButtonStack } from './FloatingButtonStackContext.js';
9
- import { s as styles } from './floating-button-stack-DHEbs91i.js';
9
+ import { s as styles } from './floating-button-stack-Bxv4YYAQ.js';
10
10
  import 'react-dom';
11
11
  import '@hh.ru/magritte-common-is-server-env';
12
12
  import '@hh.ru/magritte-ui-badge';
@@ -14,24 +14,46 @@ import '@hh.ru/magritte-ui-layer';
14
14
  import '@hh.ru/magritte-ui-loader';
15
15
  import '@hh.ru/magritte-ui-typography';
16
16
 
17
- const FloatingButtonStackItemComponent = ({ Element = 'button', visible = false, ...otherProps }, ref) => {
18
- const uid = useId();
19
- const { setVisible, animationsEnabled, style, disabled } = useFloatingButtonStack();
20
- const nodeRef = useRef(null);
21
- useEffect(() => {
22
- setVisible(uid, visible);
23
- }, [uid, setVisible, visible]);
24
- useEffect(() => {
25
- return () => {
26
- setVisible(uid, false);
27
- };
28
- }, [uid, setVisible]);
29
- return (jsx(CSSTransition, { in: visible, enter: animationsEnabled, exit: animationsEnabled, classNames: {
30
- enter: styles.enterFloatingButtonAnimation,
31
- enterActive: styles.enterFloatingButtonAnimationActive,
32
- exit: styles.exitFloatingButtonAnimation,
33
- exitActive: styles.exitFloatingButtonAnimationActive,
34
- }, nodeRef: nodeRef, timeout: CoreTokens['magritte-semantic-animation-time-s'].duration, unmountOnExit: true, children: jsx("div", { ref: nodeRef, className: classnames(styles.floatingButtonWrapper), children: jsx(FloatingButtonWithStackMode, { Element: Element, ref: ref, ...otherProps, style: style, disabled: disabled, stackMode: true }) }) }));
17
+ const FloatingButtonStackItemComponent = ({ Element = "button", visible = false, ...otherProps }, ref) => {
18
+ const uid = useId();
19
+ const { setVisible, animationsEnabled, style, disabled } = useFloatingButtonStack();
20
+ const nodeRef = useRef(null);
21
+ useEffect(() => {
22
+ setVisible(uid, visible);
23
+ }, [uid, setVisible, visible]);
24
+ useEffect(() => {
25
+ return () => {
26
+ setVisible(uid, false);
27
+ };
28
+ }, [uid, setVisible]);
29
+ return /* @__PURE__ */ jsx(
30
+ CSSTransition,
31
+ {
32
+ in: visible,
33
+ enter: animationsEnabled,
34
+ exit: animationsEnabled,
35
+ classNames: {
36
+ enter: styles.enterFloatingButtonAnimation,
37
+ enterActive: styles.enterFloatingButtonAnimationActive,
38
+ exit: styles.exitFloatingButtonAnimation,
39
+ exitActive: styles.exitFloatingButtonAnimationActive
40
+ },
41
+ nodeRef,
42
+ timeout: CoreTokens["magritte-semantic-animation-time-s"].duration,
43
+ unmountOnExit: true,
44
+ children: /* @__PURE__ */ jsx("div", { ref: nodeRef, className: classnames(styles.floatingButtonWrapper), children: /* @__PURE__ */ jsx(
45
+ FloatingButtonWithStackMode,
46
+ {
47
+ Element,
48
+ ref,
49
+ ...otherProps,
50
+ style,
51
+ disabled,
52
+ stackMode: true
53
+ }
54
+ ) })
55
+ }
56
+ );
35
57
  };
36
58
  const FloatingButtonStackItem = forwardRef(FloatingButtonStackItemComponent);
37
59
 
@@ -1 +1 @@
1
- {"version":3,"file":"FloatingButtonStackItem.js","sources":["src/FloatingButtonStackItem.tsx"],"sourcesContent":["import { useEffect, useId, useRef, forwardRef } from 'react';\nimport { CSSTransition } from 'react-transition-group';\nimport classnames from 'classnames';\n\nimport CoreTokens from '@hh.ru/magritte-design-tokens/core-tokens';\nimport type { PolymorphicForwardRefRenderFunc, PolymorphicComponentWithRef } from '@hh.ru/magritte-types';\nimport { FloatingButtonWithStackMode } from '@hh.ru/magritte-ui-floating-button/FloatingButton';\nimport { useFloatingButtonStack } from '@hh.ru/magritte-ui-floating-button/FloatingButtonStackContext';\nimport type { FloatingButtonStackItemProps } from '@hh.ru/magritte-ui-floating-button/types';\n\nimport styles from './floating-button-stack.less';\n\nconst FloatingButtonStackItemComponent: PolymorphicForwardRefRenderFunc<FloatingButtonStackItemProps, 'button'> = (\n { Element = 'button', visible = false, ...otherProps },\n ref\n) => {\n const uid = useId();\n const { setVisible, animationsEnabled, style, disabled } = useFloatingButtonStack();\n const nodeRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n setVisible(uid, visible);\n }, [uid, setVisible, visible]);\n\n useEffect(() => {\n return () => {\n setVisible(uid, false);\n };\n }, [uid, setVisible]);\n\n return (\n <CSSTransition\n in={visible}\n enter={animationsEnabled}\n exit={animationsEnabled}\n classNames={{\n enter: styles.enterFloatingButtonAnimation,\n enterActive: styles.enterFloatingButtonAnimationActive,\n exit: styles.exitFloatingButtonAnimation,\n exitActive: styles.exitFloatingButtonAnimationActive,\n }}\n nodeRef={nodeRef}\n timeout={CoreTokens['magritte-semantic-animation-time-s'].duration}\n unmountOnExit\n >\n <div ref={nodeRef} className={classnames(styles.floatingButtonWrapper)}>\n <FloatingButtonWithStackMode\n Element={Element}\n ref={ref}\n {...otherProps}\n style={style}\n disabled={disabled}\n stackMode\n />\n </div>\n </CSSTransition>\n );\n};\n\nexport const FloatingButtonStackItem = forwardRef(FloatingButtonStackItemComponent) as PolymorphicComponentWithRef<\n FloatingButtonStackItemProps,\n 'button'\n>;\n"],"names":["_jsx"],"mappings":";;;;;;;;;;;;;;;AAYA,MAAM,gCAAgC,GAA4E,CAC9G,EAAE,OAAO,GAAG,QAAQ,EAAE,OAAO,GAAG,KAAK,EAAE,GAAG,UAAU,EAAE,EACtD,GAAG,KACH;AACA,IAAA,MAAM,GAAG,GAAG,KAAK,EAAE,CAAC;AACpB,IAAA,MAAM,EAAE,UAAU,EAAE,iBAAiB,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,sBAAsB,EAAE,CAAC;AACpF,IAAA,MAAM,OAAO,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAE7C,SAAS,CAAC,MAAK;AACX,QAAA,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;KAC5B,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;IAE/B,SAAS,CAAC,MAAK;AACX,QAAA,OAAO,MAAK;AACR,YAAA,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC3B,SAAC,CAAC;AACN,KAAC,EAAE,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC;AAEtB,IAAA,QACIA,GAAC,CAAA,aAAa,EACV,EAAA,EAAE,EAAE,OAAO,EACX,KAAK,EAAE,iBAAiB,EACxB,IAAI,EAAE,iBAAiB,EACvB,UAAU,EAAE;YACR,KAAK,EAAE,MAAM,CAAC,4BAA4B;YAC1C,WAAW,EAAE,MAAM,CAAC,kCAAkC;YACtD,IAAI,EAAE,MAAM,CAAC,2BAA2B;YACxC,UAAU,EAAE,MAAM,CAAC,iCAAiC;SACvD,EACD,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,UAAU,CAAC,oCAAoC,CAAC,CAAC,QAAQ,EAClE,aAAa,EAAA,IAAA,EAAA,QAAA,EAEbA,GAAK,CAAA,KAAA,EAAA,EAAA,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC,MAAM,CAAC,qBAAqB,CAAC,EAClE,QAAA,EAAAA,GAAA,CAAC,2BAA2B,EAAA,EACxB,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,GAAG,EAAA,GACJ,UAAU,EACd,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAClB,SAAS,EACX,IAAA,EAAA,CAAA,EAAA,CACA,EACM,CAAA,EAClB;AACN,CAAC,CAAC;MAEW,uBAAuB,GAAG,UAAU,CAAC,gCAAgC;;;;"}
1
+ {"version":3,"file":"FloatingButtonStackItem.js","sources":["src/FloatingButtonStackItem.tsx"],"sourcesContent":["import { useEffect, useId, useRef, forwardRef } from 'react';\nimport { CSSTransition } from 'react-transition-group';\nimport classnames from 'classnames';\n\nimport CoreTokens from '@hh.ru/magritte-design-tokens/core-tokens';\nimport type { PolymorphicForwardRefRenderFunc, PolymorphicComponentWithRef } from '@hh.ru/magritte-types';\nimport { FloatingButtonWithStackMode } from '@hh.ru/magritte-ui-floating-button/FloatingButton';\nimport { useFloatingButtonStack } from '@hh.ru/magritte-ui-floating-button/FloatingButtonStackContext';\nimport type { FloatingButtonStackItemProps } from '@hh.ru/magritte-ui-floating-button/types';\n\nimport styles from './floating-button-stack.less';\n\nconst FloatingButtonStackItemComponent: PolymorphicForwardRefRenderFunc<FloatingButtonStackItemProps, 'button'> = (\n { Element = 'button', visible = false, ...otherProps },\n ref\n) => {\n const uid = useId();\n const { setVisible, animationsEnabled, style, disabled } = useFloatingButtonStack();\n const nodeRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n setVisible(uid, visible);\n }, [uid, setVisible, visible]);\n\n useEffect(() => {\n return () => {\n setVisible(uid, false);\n };\n }, [uid, setVisible]);\n\n return (\n <CSSTransition\n in={visible}\n enter={animationsEnabled}\n exit={animationsEnabled}\n classNames={{\n enter: styles.enterFloatingButtonAnimation,\n enterActive: styles.enterFloatingButtonAnimationActive,\n exit: styles.exitFloatingButtonAnimation,\n exitActive: styles.exitFloatingButtonAnimationActive,\n }}\n nodeRef={nodeRef}\n timeout={CoreTokens['magritte-semantic-animation-time-s'].duration}\n unmountOnExit\n >\n <div ref={nodeRef} className={classnames(styles.floatingButtonWrapper)}>\n <FloatingButtonWithStackMode<typeof Element>\n Element={Element}\n ref={ref}\n {...otherProps}\n style={style}\n disabled={disabled}\n stackMode\n />\n </div>\n </CSSTransition>\n );\n};\n\nexport const FloatingButtonStackItem = forwardRef(FloatingButtonStackItemComponent) as PolymorphicComponentWithRef<\n FloatingButtonStackItemProps,\n 'button'\n>;\n"],"names":[],"mappings":";;;;;;;;;;;;;;;AAYA,MAAM,gCAAA,GAA4G,CAC9G,EAAE,OAAU,GAAA,QAAA,EAAU,UAAU,KAAO,EAAA,GAAG,UAAW,EAAA,EACrD,GACC,KAAA;AACD,EAAA,MAAM,MAAM,KAAM,EAAA,CAAA;AAClB,EAAA,MAAM,EAAE,UAAY,EAAA,iBAAA,EAAmB,KAAO,EAAA,QAAA,KAAa,sBAAuB,EAAA,CAAA;AAClF,EAAM,MAAA,OAAA,GAAU,OAAuB,IAAI,CAAA,CAAA;AAE3C,EAAA,SAAA,CAAU,MAAM;AACZ,IAAA,UAAA,CAAW,KAAK,OAAO,CAAA,CAAA;AAAA,GACxB,EAAA,CAAC,GAAK,EAAA,UAAA,EAAY,OAAO,CAAC,CAAA,CAAA;AAE7B,EAAA,SAAA,CAAU,MAAM;AACZ,IAAA,OAAO,MAAM;AACT,MAAA,UAAA,CAAW,KAAK,KAAK,CAAA,CAAA;AAAA,KACzB,CAAA;AAAA,GACD,EAAA,CAAC,GAAK,EAAA,UAAU,CAAC,CAAA,CAAA;AAEpB,EACI,uBAAA,GAAA;AAAA,IAAC,aAAA;AAAA,IAAA;AAAA,MACG,EAAI,EAAA,OAAA;AAAA,MACJ,KAAO,EAAA,iBAAA;AAAA,MACP,IAAM,EAAA,iBAAA;AAAA,MACN,UAAY,EAAA;AAAA,QACR,OAAO,MAAO,CAAA,4BAAA;AAAA,QACd,aAAa,MAAO,CAAA,kCAAA;AAAA,QACpB,MAAM,MAAO,CAAA,2BAAA;AAAA,QACb,YAAY,MAAO,CAAA,iCAAA;AAAA,OACvB;AAAA,MACA,OAAA;AAAA,MACA,OAAA,EAAS,UAAW,CAAA,oCAAoC,CAAE,CAAA,QAAA;AAAA,MAC1D,aAAa,EAAA,IAAA;AAAA,MAEb,QAAA,kBAAA,GAAA,CAAC,SAAI,GAAK,EAAA,OAAA,EAAS,WAAW,UAAW,CAAA,MAAA,CAAO,qBAAqB,CACjE,EAAA,QAAA,kBAAA,GAAA;AAAA,QAAC,2BAAA;AAAA,QAAA;AAAA,UACG,OAAA;AAAA,UACA,GAAA;AAAA,UACC,GAAG,UAAA;AAAA,UACJ,KAAA;AAAA,UACA,QAAA;AAAA,UACA,SAAS,EAAA,IAAA;AAAA,SAAA;AAAA,OAEjB,EAAA,CAAA;AAAA,KAAA;AAAA,GACJ,CAAA;AAER,CAAA,CAAA;AAEa,MAAA,uBAAA,GAA0B,WAAW,gCAAgC;;;;"}