@gympass/yoga 7.78.2 → 7.79.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/cjs/Banner/web/Banner.js
CHANGED
|
@@ -121,7 +121,7 @@ Banner.propTypes = {
|
|
|
121
121
|
variant: (0, _propTypes.oneOf)(['success', 'informative', 'attention']),
|
|
122
122
|
|
|
123
123
|
/** the message to display */
|
|
124
|
-
message: _propTypes.string.isRequired,
|
|
124
|
+
message: (0, _propTypes.oneOfType)([_propTypes.string, _propTypes.element]).isRequired,
|
|
125
125
|
|
|
126
126
|
/** the label and action fuction are required for banner action buttons */
|
|
127
127
|
primaryButton: BannerActionButtonType,
|
|
@@ -9,9 +9,11 @@ var _propTypes = require("prop-types");
|
|
|
9
9
|
|
|
10
10
|
var _yoga = require("@gympass/yoga");
|
|
11
11
|
|
|
12
|
+
var _hooks = require("../../hooks");
|
|
13
|
+
|
|
12
14
|
var _styles = require("./styles");
|
|
13
15
|
|
|
14
|
-
var _excluded = ["children", "title", "description", "position", "width", "height", "zIndex", "a11yId"];
|
|
16
|
+
var _excluded = ["children", "title", "description", "position", "width", "height", "zIndex", "a11yId", "hover"];
|
|
15
17
|
|
|
16
18
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
17
19
|
|
|
@@ -21,7 +23,7 @@ function _extends() { _extends = Object.assign ? Object.assign.bind() : function
|
|
|
21
23
|
|
|
22
24
|
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
23
25
|
|
|
24
|
-
|
|
26
|
+
var Popover = /*#__PURE__*/_react["default"].forwardRef(function (_ref, forwardedRef) {
|
|
25
27
|
var children = _ref.children,
|
|
26
28
|
title = _ref.title,
|
|
27
29
|
description = _ref.description,
|
|
@@ -30,12 +32,28 @@ function Popover(_ref) {
|
|
|
30
32
|
height = _ref.height,
|
|
31
33
|
zIndex = _ref.zIndex,
|
|
32
34
|
a11yId = _ref.a11yId,
|
|
35
|
+
hover = _ref.hover,
|
|
33
36
|
props = _objectWithoutPropertiesLoose(_ref, _excluded);
|
|
34
37
|
|
|
38
|
+
var ref = (0, _hooks.useCombinedRefs)(forwardedRef);
|
|
39
|
+
|
|
35
40
|
var _useState = (0, _react.useState)(false),
|
|
36
41
|
isPopoverOpen = _useState[0],
|
|
37
42
|
setIsPopoverOpen = _useState[1];
|
|
38
43
|
|
|
44
|
+
(0, _react.useEffect)(function () {
|
|
45
|
+
var handleClickOutside = function handleClickOutside(event) {
|
|
46
|
+
if (ref.current && !ref.current.contains(event.target)) {
|
|
47
|
+
setIsPopoverOpen(false);
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
document.addEventListener('click', handleClickOutside, true);
|
|
52
|
+
return function () {
|
|
53
|
+
document.removeEventListener('click', handleClickOutside, true);
|
|
54
|
+
};
|
|
55
|
+
}, [setIsPopoverOpen]);
|
|
56
|
+
|
|
39
57
|
var handleShowPopover = function handleShowPopover() {
|
|
40
58
|
setIsPopoverOpen(true);
|
|
41
59
|
};
|
|
@@ -44,6 +62,13 @@ function Popover(_ref) {
|
|
|
44
62
|
setIsPopoverOpen(false);
|
|
45
63
|
};
|
|
46
64
|
|
|
65
|
+
var toggleOpenPopover = function toggleOpenPopover(event) {
|
|
66
|
+
event.preventDefault();
|
|
67
|
+
setIsPopoverOpen(function (current) {
|
|
68
|
+
return !current;
|
|
69
|
+
});
|
|
70
|
+
};
|
|
71
|
+
|
|
47
72
|
return /*#__PURE__*/_react["default"].createElement(_styles.Wrapper, props, isPopoverOpen && /*#__PURE__*/_react["default"].createElement(_styles.PopoverContainer, _extends({}, a11yId && {
|
|
48
73
|
id: a11yId
|
|
49
74
|
}, {
|
|
@@ -62,22 +87,14 @@ function Popover(_ref) {
|
|
|
62
87
|
}, description)), /*#__PURE__*/_react["default"].createElement(_styles.PopoverButton, _extends({}, a11yId && {
|
|
63
88
|
'aria-describedby': a11yId
|
|
64
89
|
}, {
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
onClick: function onClick(event) {
|
|
90
|
+
ref: ref,
|
|
91
|
+
onMouseEnter: hover ? handleShowPopover : undefined,
|
|
92
|
+
onMouseLeave: hover ? handleHidePopover : undefined,
|
|
93
|
+
onClick: !hover ? toggleOpenPopover : function (event) {
|
|
70
94
|
return event.preventDefault();
|
|
71
|
-
},
|
|
72
|
-
onKeyDown: function onKeyDown(event) {
|
|
73
|
-
if (event.key === 'Enter') {
|
|
74
|
-
setIsPopoverOpen(function (current) {
|
|
75
|
-
return !current;
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
95
|
}
|
|
79
96
|
}), children));
|
|
80
|
-
}
|
|
97
|
+
});
|
|
81
98
|
|
|
82
99
|
Popover.propTypes = {
|
|
83
100
|
a11yId: _propTypes.string,
|
|
@@ -89,7 +106,8 @@ Popover.propTypes = {
|
|
|
89
106
|
position: (0, _propTypes.oneOf)(['bottom-start', 'bottom-center', 'bottom-end', 'left-start', 'left-center', 'left-end', 'top-start', 'top-center', 'top-end', 'right-start', 'right-center', 'right-end']),
|
|
90
107
|
width: _propTypes.number,
|
|
91
108
|
height: _propTypes.number,
|
|
92
|
-
zIndex: _propTypes.number
|
|
109
|
+
zIndex: _propTypes.number,
|
|
110
|
+
hover: _propTypes.bool
|
|
93
111
|
};
|
|
94
112
|
Popover.defaultProps = {
|
|
95
113
|
a11yId: undefined,
|
|
@@ -97,7 +115,8 @@ Popover.defaultProps = {
|
|
|
97
115
|
position: 'bottom-center',
|
|
98
116
|
width: 265,
|
|
99
117
|
height: 200,
|
|
100
|
-
zIndex: 1
|
|
118
|
+
zIndex: 1,
|
|
119
|
+
hover: false
|
|
101
120
|
};
|
|
102
121
|
var _default = Popover;
|
|
103
122
|
exports["default"] = _default;
|
package/esm/Banner/web/Banner.js
CHANGED
|
@@ -12,7 +12,7 @@ function _taggedTemplateLiteralLoose(strings, raw) { if (!raw) { raw = strings.s
|
|
|
12
12
|
import React, { forwardRef } from 'react';
|
|
13
13
|
import styled from 'styled-components';
|
|
14
14
|
import { borders, margins, paddings } from '@gympass/yoga-system';
|
|
15
|
-
import { checkPropTypes, elementType, func, oneOf, shape, string } from 'prop-types';
|
|
15
|
+
import { checkPropTypes, elementType, element, func, oneOf, oneOfType, shape, string } from 'prop-types';
|
|
16
16
|
import Box from '../../Box';
|
|
17
17
|
import Button from '../../Button';
|
|
18
18
|
import Icon from '../../Icon';
|
|
@@ -100,7 +100,7 @@ Banner.propTypes = {
|
|
|
100
100
|
variant: oneOf(['success', 'informative', 'attention']),
|
|
101
101
|
|
|
102
102
|
/** the message to display */
|
|
103
|
-
message: string.isRequired,
|
|
103
|
+
message: oneOfType([string, element]).isRequired,
|
|
104
104
|
|
|
105
105
|
/** the label and action fuction are required for banner action buttons */
|
|
106
106
|
primaryButton: BannerActionButtonType,
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
var _excluded = ["children", "title", "description", "position", "width", "height", "zIndex", "a11yId"];
|
|
1
|
+
var _excluded = ["children", "title", "description", "position", "width", "height", "zIndex", "a11yId", "hover"];
|
|
2
2
|
|
|
3
3
|
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
4
4
|
|
|
5
5
|
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
6
6
|
|
|
7
|
-
import React, { useState } from 'react';
|
|
8
|
-
import { node, number, oneOf, string } from 'prop-types';
|
|
7
|
+
import React, { useState, useEffect } from 'react';
|
|
8
|
+
import { bool, node, number, oneOf, string } from 'prop-types';
|
|
9
9
|
import { Text } from '@gympass/yoga';
|
|
10
|
+
import { useCombinedRefs } from '../../hooks';
|
|
10
11
|
import { PopoverContainer, PopoverButton, Wrapper } from './styles';
|
|
11
|
-
|
|
12
|
-
function Popover(_ref) {
|
|
12
|
+
var Popover = /*#__PURE__*/React.forwardRef(function (_ref, forwardedRef) {
|
|
13
13
|
var children = _ref.children,
|
|
14
14
|
title = _ref.title,
|
|
15
15
|
description = _ref.description,
|
|
@@ -18,12 +18,28 @@ function Popover(_ref) {
|
|
|
18
18
|
height = _ref.height,
|
|
19
19
|
zIndex = _ref.zIndex,
|
|
20
20
|
a11yId = _ref.a11yId,
|
|
21
|
+
hover = _ref.hover,
|
|
21
22
|
props = _objectWithoutPropertiesLoose(_ref, _excluded);
|
|
22
23
|
|
|
24
|
+
var ref = useCombinedRefs(forwardedRef);
|
|
25
|
+
|
|
23
26
|
var _useState = useState(false),
|
|
24
27
|
isPopoverOpen = _useState[0],
|
|
25
28
|
setIsPopoverOpen = _useState[1];
|
|
26
29
|
|
|
30
|
+
useEffect(function () {
|
|
31
|
+
var handleClickOutside = function handleClickOutside(event) {
|
|
32
|
+
if (ref.current && !ref.current.contains(event.target)) {
|
|
33
|
+
setIsPopoverOpen(false);
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
document.addEventListener('click', handleClickOutside, true);
|
|
38
|
+
return function () {
|
|
39
|
+
document.removeEventListener('click', handleClickOutside, true);
|
|
40
|
+
};
|
|
41
|
+
}, [setIsPopoverOpen]);
|
|
42
|
+
|
|
27
43
|
var handleShowPopover = function handleShowPopover() {
|
|
28
44
|
setIsPopoverOpen(true);
|
|
29
45
|
};
|
|
@@ -32,6 +48,13 @@ function Popover(_ref) {
|
|
|
32
48
|
setIsPopoverOpen(false);
|
|
33
49
|
};
|
|
34
50
|
|
|
51
|
+
var toggleOpenPopover = function toggleOpenPopover(event) {
|
|
52
|
+
event.preventDefault();
|
|
53
|
+
setIsPopoverOpen(function (current) {
|
|
54
|
+
return !current;
|
|
55
|
+
});
|
|
56
|
+
};
|
|
57
|
+
|
|
35
58
|
return /*#__PURE__*/React.createElement(Wrapper, props, isPopoverOpen && /*#__PURE__*/React.createElement(PopoverContainer, _extends({}, a11yId && {
|
|
36
59
|
id: a11yId
|
|
37
60
|
}, {
|
|
@@ -50,23 +73,14 @@ function Popover(_ref) {
|
|
|
50
73
|
}, description)), /*#__PURE__*/React.createElement(PopoverButton, _extends({}, a11yId && {
|
|
51
74
|
'aria-describedby': a11yId
|
|
52
75
|
}, {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
onClick: function onClick(event) {
|
|
76
|
+
ref: ref,
|
|
77
|
+
onMouseEnter: hover ? handleShowPopover : undefined,
|
|
78
|
+
onMouseLeave: hover ? handleHidePopover : undefined,
|
|
79
|
+
onClick: !hover ? toggleOpenPopover : function (event) {
|
|
58
80
|
return event.preventDefault();
|
|
59
|
-
},
|
|
60
|
-
onKeyDown: function onKeyDown(event) {
|
|
61
|
-
if (event.key === 'Enter') {
|
|
62
|
-
setIsPopoverOpen(function (current) {
|
|
63
|
-
return !current;
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
81
|
}
|
|
67
82
|
}), children));
|
|
68
|
-
}
|
|
69
|
-
|
|
83
|
+
});
|
|
70
84
|
Popover.propTypes = {
|
|
71
85
|
a11yId: string,
|
|
72
86
|
children: node.isRequired,
|
|
@@ -77,7 +91,8 @@ Popover.propTypes = {
|
|
|
77
91
|
position: oneOf(['bottom-start', 'bottom-center', 'bottom-end', 'left-start', 'left-center', 'left-end', 'top-start', 'top-center', 'top-end', 'right-start', 'right-center', 'right-end']),
|
|
78
92
|
width: number,
|
|
79
93
|
height: number,
|
|
80
|
-
zIndex: number
|
|
94
|
+
zIndex: number,
|
|
95
|
+
hover: bool
|
|
81
96
|
};
|
|
82
97
|
Popover.defaultProps = {
|
|
83
98
|
a11yId: undefined,
|
|
@@ -85,6 +100,7 @@ Popover.defaultProps = {
|
|
|
85
100
|
position: 'bottom-center',
|
|
86
101
|
width: 265,
|
|
87
102
|
height: 200,
|
|
88
|
-
zIndex: 1
|
|
103
|
+
zIndex: 1,
|
|
104
|
+
hover: false
|
|
89
105
|
};
|
|
90
106
|
export default Popover;
|
|
@@ -1,19 +1,39 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { render } from '@testing-library/react';
|
|
2
|
+
import { render, fireEvent } from '@testing-library/react';
|
|
3
3
|
import { Info } from '@gympass/yoga-icons';
|
|
4
4
|
import { ThemeProvider, Popover } from '../..';
|
|
5
5
|
describe('<Popover />', function () {
|
|
6
|
-
it('should match snapshot', function () {
|
|
6
|
+
it('should match snapshot when hover is false', function () {
|
|
7
7
|
var _render = render( /*#__PURE__*/React.createElement(ThemeProvider, null, /*#__PURE__*/React.createElement(Popover, {
|
|
8
8
|
title: "Making wellbeing universal",
|
|
9
|
-
description: "Try
|
|
9
|
+
description: "Try click on the button. Your new favorite activity could be arround the corner.",
|
|
10
10
|
width: 265
|
|
11
11
|
}, /*#__PURE__*/React.createElement(Info, {
|
|
12
12
|
width: 26,
|
|
13
13
|
height: 26
|
|
14
14
|
})))),
|
|
15
|
-
container = _render.container
|
|
15
|
+
container = _render.container,
|
|
16
|
+
getByRole = _render.getByRole;
|
|
17
|
+
|
|
18
|
+
var popoverButton = getByRole('button');
|
|
19
|
+
fireEvent.click(popoverButton);
|
|
20
|
+
expect(container).toMatchSnapshot();
|
|
21
|
+
});
|
|
22
|
+
it('should match snapshot when hover is true', function () {
|
|
23
|
+
var _render2 = render( /*#__PURE__*/React.createElement(ThemeProvider, null, /*#__PURE__*/React.createElement(Popover, {
|
|
24
|
+
title: "Making wellbeing universal",
|
|
25
|
+
description: "Try moving to another spot. Your new favorite activity could be arround the corner.",
|
|
26
|
+
width: 265,
|
|
27
|
+
hover: true
|
|
28
|
+
}, /*#__PURE__*/React.createElement(Info, {
|
|
29
|
+
width: 26,
|
|
30
|
+
height: 26
|
|
31
|
+
})))),
|
|
32
|
+
container = _render2.container,
|
|
33
|
+
getByRole = _render2.getByRole;
|
|
16
34
|
|
|
35
|
+
var popoverButton = getByRole('button');
|
|
36
|
+
fireEvent.mouseOver(popoverButton);
|
|
17
37
|
expect(container).toMatchSnapshot();
|
|
18
38
|
});
|
|
19
39
|
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gympass/yoga",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.79.1",
|
|
4
4
|
"description": "Gympass component library",
|
|
5
5
|
"main": "./cjs",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
"react-native": "0.72.3",
|
|
56
56
|
"styled-components": "^4.4.0"
|
|
57
57
|
},
|
|
58
|
-
"gitHead": "
|
|
58
|
+
"gitHead": "bc63a12251de39e078526250b7971ad3fc1548a0",
|
|
59
59
|
"module": "./esm",
|
|
60
60
|
"types": "./typings/index.d.ts",
|
|
61
61
|
"private": false,
|