@pingux/astro 2.14.1-alpha.1 → 2.14.1-alpha.3
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/lib/cjs/components/Bracket/Bracket.js +16 -6
- package/lib/cjs/components/NumberField/NumberField.js +21 -50
- package/lib/cjs/components/NumberField/NumberField.test.js +8 -8
- package/lib/cjs/recipes/ConditionFilter.stories.js +105 -130
- package/lib/components/Bracket/Bracket.js +17 -7
- package/lib/components/NumberField/NumberField.js +23 -52
- package/lib/components/NumberField/NumberField.test.js +8 -8
- package/lib/recipes/ConditionFilter.stories.js +106 -132
- package/package.json +1 -1
- package/lib/cjs/hooks/useHiddenNumberFieldValue/index.js +0 -14
- package/lib/cjs/hooks/useHiddenNumberFieldValue/useHiddenNumberFieldValue.js +0 -23
- package/lib/cjs/hooks/useHiddenNumberFieldValue/useHiddenNumberFieldValue.test.js +0 -35
- package/lib/hooks/useHiddenNumberFieldValue/index.js +0 -1
- package/lib/hooks/useHiddenNumberFieldValue/useHiddenNumberFieldValue.js +0 -16
- package/lib/hooks/useHiddenNumberFieldValue/useHiddenNumberFieldValue.test.js +0 -32
@@ -13,6 +13,7 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/e
|
|
13
13
|
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/objectWithoutProperties"));
|
14
14
|
var _react = _interopRequireWildcard(require("react"));
|
15
15
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
16
|
+
var _uuid = require("uuid");
|
16
17
|
var _index = require("../../index");
|
17
18
|
var _colors = require("../../styles/colors");
|
18
19
|
var _react2 = require("@emotion/react");
|
@@ -29,6 +30,15 @@ var Bracket = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
29
30
|
(0, _react.useImperativeHandle)(ref, function () {
|
30
31
|
return bracketRef.current;
|
31
32
|
});
|
33
|
+
var bracketId = (0, _react.useMemo)(function () {
|
34
|
+
return (0, _uuid.v4)();
|
35
|
+
}, []);
|
36
|
+
var bracketFillOneId = (0, _react.useMemo)(function () {
|
37
|
+
return (0, _uuid.v4)();
|
38
|
+
}, []);
|
39
|
+
var bracketFillTwoId = (0, _react.useMemo)(function () {
|
40
|
+
return (0, _uuid.v4)();
|
41
|
+
}, []);
|
32
42
|
return (0, _react2.jsx)(_index.Box, (0, _extends2["default"])({
|
33
43
|
variant: "bracket.base"
|
34
44
|
}, others), !isLast && (0, _react2.jsx)(_index.Box, {
|
@@ -47,9 +57,9 @@ var Bracket = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
47
57
|
flexGrow: 1
|
48
58
|
},
|
49
59
|
"data-testid": "isLastLayer",
|
50
|
-
"aria-labelledby": "bracket-fill-vertical-icon-title"
|
60
|
+
"aria-labelledby": "bracket-fill-vertical-icon-title-".concat(bracketId)
|
51
61
|
}, (0, _react2.jsx)("title", {
|
52
|
-
id: "bracket-fill-vertical-icon-title"
|
62
|
+
id: "bracket-fill-vertical-icon-title-".concat(bracketId)
|
53
63
|
}, "bracket-fill"), (0, _react2.jsx)("g", null, (0, _react2.jsx)("title", null, "Layer 3"), (0, _react2.jsx)("line", {
|
54
64
|
strokeLinecap: "undefined",
|
55
65
|
strokeLinejoin: "undefined",
|
@@ -69,9 +79,9 @@ var Bracket = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
69
79
|
style: {
|
70
80
|
flexGrow: 1
|
71
81
|
},
|
72
|
-
"aria-labelledby": "bracket-fill-1-icon-title"
|
82
|
+
"aria-labelledby": "bracket-fill-1-icon-title-".concat(bracketFillOneId)
|
73
83
|
}, (0, _react2.jsx)("title", {
|
74
|
-
id: "bracket-fill-1-icon-title"
|
84
|
+
id: "bracket-fill-1-icon-title-".concat(bracketFillOneId)
|
75
85
|
}, "bracket-fill"), (0, _react2.jsx)("g", null, (0, _react2.jsx)("title", null, "Layer 1"), (0, _react2.jsx)("line", {
|
76
86
|
strokeLinecap: "undefined",
|
77
87
|
strokeLinejoin: "undefined",
|
@@ -85,9 +95,9 @@ var Bracket = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
85
95
|
xmlns: "http://www.w3.org/2000/svg",
|
86
96
|
version: "1.1",
|
87
97
|
height: "15",
|
88
|
-
"aria-labelledby": "bracket-fill-2-icon-title"
|
98
|
+
"aria-labelledby": "bracket-fill-2-icon-title-".concat(bracketFillTwoId)
|
89
99
|
}, (0, _react2.jsx)("title", {
|
90
|
-
id: "bracket-fill-2-icon-title"
|
100
|
+
id: "bracket-fill-2-icon-title-".concat(bracketFillTwoId)
|
91
101
|
}, "bracket-fill"), (0, _react2.jsx)("g", {
|
92
102
|
transform: "translate(-1, 0)"
|
93
103
|
}, (0, _react2.jsx)("title", null, "Layer 2"), (0, _react2.jsx)("path", {
|
@@ -15,7 +15,6 @@ _Object$defineProperty(exports, "__esModule", {
|
|
15
15
|
value: true
|
16
16
|
});
|
17
17
|
exports["default"] = void 0;
|
18
|
-
var _trim = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/trim"));
|
19
18
|
var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
|
20
19
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
|
21
20
|
var _react = _interopRequireWildcard(require("react"));
|
@@ -29,7 +28,6 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
29
28
|
var _uuid = require("uuid");
|
30
29
|
var _ = require("../..");
|
31
30
|
var _hooks = require("../../hooks");
|
32
|
-
var _useHiddenNumberFieldValue = _interopRequireDefault(require("../../hooks/useHiddenNumberFieldValue"));
|
33
31
|
var _ariaAttributes = require("../../utils/docUtils/ariaAttributes");
|
34
32
|
var _fieldAttributes = require("../../utils/docUtils/fieldAttributes");
|
35
33
|
var _statusProp = require("../../utils/docUtils/statusProp");
|
@@ -37,11 +35,10 @@ var _react2 = require("@emotion/react");
|
|
37
35
|
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); }
|
38
36
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = _Object$defineProperty && _Object$getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? _Object$getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { _Object$defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
39
37
|
function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = _filterInstanceProperty(symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
40
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var
|
38
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context, _context2; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty(_context = ownKeys(Object(source), !0)).call(_context, function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : _forEachInstanceProperty(_context2 = ownKeys(Object(source))).call(_context2, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
|
41
39
|
var NumberField = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
42
40
|
var helperText = props.helperText,
|
43
|
-
status = props.status
|
44
|
-
formatOptions = props.formatOptions;
|
41
|
+
status = props.status;
|
45
42
|
var _useLocale = (0, _i18n.useLocale)(),
|
46
43
|
locale = _useLocale.locale;
|
47
44
|
var state = (0, _reactStately.useNumberFieldState)(_objectSpread(_objectSpread({}, props), {}, {
|
@@ -92,66 +89,40 @@ var NumberField = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
92
89
|
|
93
90
|
// this needed to remove console warning in React 16
|
94
91
|
// I believe once we update to 17 - we can remove this
|
95
|
-
var onInputFocus =
|
92
|
+
var onInputFocus = function onInputFocus(e) {
|
96
93
|
e.persist();
|
97
94
|
fieldControlInputProps.onFocus(e);
|
98
95
|
inputProps.onFocus(e);
|
99
|
-
}
|
100
|
-
var onInputBlur =
|
96
|
+
};
|
97
|
+
var onInputBlur = function onInputBlur(e) {
|
101
98
|
e.persist();
|
102
99
|
fieldControlInputProps.onBlur(e);
|
103
100
|
inputProps.onBlur(e);
|
104
|
-
}, [fieldControlInputProps, inputProps]);
|
105
|
-
var updatedFieldControlInputProps = (0, _react.useMemo)(function () {
|
106
|
-
return _objectSpread(_objectSpread({}, fieldControlInputProps), {}, {
|
107
|
-
onFocus: onInputFocus,
|
108
|
-
onBlur: onInputBlur
|
109
|
-
});
|
110
|
-
}, [fieldControlInputProps, onInputBlur, onInputFocus]);
|
111
|
-
var onInputChange = function onInputChange(e) {
|
112
|
-
var _context;
|
113
|
-
var minValue = props.minValue;
|
114
|
-
var trimmedInputValue = (0, _trim["default"])(_context = e.target.value).call(_context);
|
115
|
-
var trimmedValueEvent = _objectSpread(_objectSpread({}, e), {}, {
|
116
|
-
target: _objectSpread(_objectSpread({}, e.target), {}, {
|
117
|
-
value: trimmedInputValue
|
118
|
-
})
|
119
|
-
});
|
120
|
-
if (!trimmedInputValue && typeof minValue !== 'undefined') {
|
121
|
-
var minValueEvent = _objectSpread(_objectSpread({}, e), {}, {
|
122
|
-
target: _objectSpread(_objectSpread({}, e.target), {}, {
|
123
|
-
value: minValue.toString()
|
124
|
-
})
|
125
|
-
});
|
126
|
-
inputProps.onChange(minValueEvent);
|
127
|
-
} else {
|
128
|
-
inputProps.onChange(trimmedValueEvent);
|
129
|
-
}
|
130
101
|
};
|
131
|
-
var
|
132
|
-
|
133
|
-
|
102
|
+
var updatedFieldControlInputProps = _objectSpread(_objectSpread({}, fieldControlInputProps), {}, {
|
103
|
+
onFocus: onInputFocus,
|
104
|
+
onBlur: onInputBlur
|
134
105
|
});
|
135
|
-
|
136
|
-
var
|
137
|
-
|
138
|
-
|
139
|
-
return (0, _react2.jsx)(_.Box, fieldContainerProps, (0, _react2.jsx)(_.Label, (0, _reactAria.mergeProps)(fieldLabelProps, labelProps)), (0, _react2.jsx)(_.Box, (0, _extends2["default"])({
|
106
|
+
var helperTextId = (0, _uuid.v4)();
|
107
|
+
var updatedLabelProps = _objectSpread({}, (0, _reactAria.mergeProps)(fieldLabelProps, labelProps));
|
108
|
+
var inputPropsValue = inputProps.value || 0;
|
109
|
+
return (0, _react2.jsx)(_.Box, fieldContainerProps, (0, _react2.jsx)(_.Label, updatedLabelProps), (0, _react2.jsx)(_.Box, (0, _extends2["default"])({
|
140
110
|
variant: "forms.numberField.noDefaultArrows"
|
141
111
|
}, groupProps), (0, _react2.jsx)(_.Box, (0, _extends2["default"])({
|
142
112
|
variant: "forms.numberField.arrowsWrapper"
|
143
|
-
}, fieldControlWrapperProps
|
113
|
+
}, fieldControlWrapperProps, {
|
114
|
+
role: "spinbutton",
|
115
|
+
"aria-valuetext": inputPropsValue,
|
116
|
+
"aria-valuenow": inputPropsValue,
|
117
|
+
"aria-labelledby": updatedLabelProps.id
|
118
|
+
}), (0, _react2.jsx)(_.Input, (0, _extends2["default"])({
|
144
119
|
variant: "forms.input.numberField",
|
145
120
|
ref: inputRef
|
146
121
|
// we don't want to merge this props, we want to
|
147
122
|
// overwrite them like defaultValue, value, ect.
|
148
|
-
}, updatedFieldControlInputProps, (0, _omit["default"])(inputProps, ['name', 'onFocus', 'onBlur']), {
|
149
|
-
|
150
|
-
|
151
|
-
role: "textbox"
|
152
|
-
})), ControlArrows), (0, _react2.jsx)(_reactAria.VisuallyHidden, {
|
153
|
-
"aria-live": "assertive"
|
154
|
-
}, hiddenInputValue), helperText && (0, _react2.jsx)(_.FieldHelperText, {
|
123
|
+
}, updatedFieldControlInputProps, (0, _omit["default"])(inputProps, ['name', 'onFocus', 'onBlur', 'aria-roledescription']), {
|
124
|
+
"aria-describedby": helperText && helperTextId
|
125
|
+
})), ControlArrows), helperText && (0, _react2.jsx)(_.FieldHelperText, {
|
155
126
|
status: status,
|
156
127
|
id: helperTextId
|
157
128
|
}, helperText)));
|
@@ -41,7 +41,7 @@ var getComponent = function getComponent() {
|
|
41
41
|
});
|
42
42
|
test('renders NumberField component', function () {
|
43
43
|
getComponent();
|
44
|
-
expect(_testWrapper.screen.
|
44
|
+
expect(_testWrapper.screen.queryAllByLabelText(testLabel)[0]).toBeInTheDocument();
|
45
45
|
});
|
46
46
|
test('arrow up is adding step to the number value', function () {
|
47
47
|
var mockOnChange = jest.fn();
|
@@ -68,7 +68,7 @@ test('value can be set from outside (controlled state)', function () {
|
|
68
68
|
getComponent({
|
69
69
|
value: controlledValue
|
70
70
|
});
|
71
|
-
expect(_testWrapper.screen.
|
71
|
+
expect(_testWrapper.screen.queryAllByLabelText(testLabel)[1]).toHaveValue('11');
|
72
72
|
});
|
73
73
|
test('calling onChange with integer when input value changed (controlled state)', function () {
|
74
74
|
var mockOnChange = jest.fn();
|
@@ -76,7 +76,7 @@ test('calling onChange with integer when input value changed (controlled state)'
|
|
76
76
|
getComponent({
|
77
77
|
onChange: mockOnChange
|
78
78
|
});
|
79
|
-
var numberInput = _testWrapper.screen.
|
79
|
+
var numberInput = _testWrapper.screen.queryAllByLabelText(testLabel)[1];
|
80
80
|
_userEvent["default"].clear(numberInput);
|
81
81
|
_userEvent["default"].type(numberInput, newTestValue.toString());
|
82
82
|
numberInput.blur();
|
@@ -101,12 +101,12 @@ test('should show helper text if appropriate prop passed', function () {
|
|
101
101
|
test('should be able to be focused via keyboard', function () {
|
102
102
|
getComponent();
|
103
103
|
_userEvent["default"].tab();
|
104
|
-
expect(_testWrapper.screen.
|
104
|
+
expect(_testWrapper.screen.queryAllByLabelText(testLabel)[1]).toHaveFocus();
|
105
105
|
});
|
106
106
|
test('should be able to interact with the keyboard', function () {
|
107
107
|
getComponent();
|
108
108
|
_userEvent["default"].tab();
|
109
|
-
var numberInput = _testWrapper.screen.
|
109
|
+
var numberInput = _testWrapper.screen.queryAllByLabelText(testLabel)[1];
|
110
110
|
_userEvent["default"].type(numberInput, '{arrowup}');
|
111
111
|
expect(numberInput).toHaveValue((testValue + 1).toString());
|
112
112
|
_userEvent["default"].type(numberInput, '{arrowdown}{arrowdown}');
|
@@ -125,7 +125,7 @@ test('should show hintText text if prop is passed', function () {
|
|
125
125
|
test('increment and decrement buttons should be able to be focused via keyboard', function () {
|
126
126
|
getComponent();
|
127
127
|
_userEvent["default"].tab();
|
128
|
-
expect(_testWrapper.screen.
|
128
|
+
expect(_testWrapper.screen.queryAllByLabelText(testLabel)[1]).toHaveFocus();
|
129
129
|
_userEvent["default"].tab();
|
130
130
|
expect(_testWrapper.screen.getByLabelText('arrow-up')).toHaveFocus();
|
131
131
|
_userEvent["default"].tab();
|
@@ -136,12 +136,12 @@ test('number field input receiving name attribute', function () {
|
|
136
136
|
getComponent({
|
137
137
|
name: testName
|
138
138
|
});
|
139
|
-
expect(_testWrapper.screen.
|
139
|
+
expect(_testWrapper.screen.queryAllByLabelText(testLabel)[1]).toHaveAttribute('name', testName);
|
140
140
|
});
|
141
141
|
test('number field can be focused', function () {
|
142
142
|
getComponent();
|
143
143
|
_userEvent["default"].tab();
|
144
|
-
expect(_testWrapper.screen.
|
144
|
+
expect(_testWrapper.screen.queryAllByLabelText(testLabel)[1]).toHaveClass('is-focused');
|
145
145
|
});
|
146
146
|
test('passing helper text should display it and correct aria attributes on input', function () {
|
147
147
|
var testHelperText = 'testHelperText';
|
@@ -12,12 +12,10 @@ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequ
|
|
12
12
|
_Object$defineProperty(exports, "__esModule", {
|
13
13
|
value: true
|
14
14
|
});
|
15
|
-
exports["default"] = exports.
|
15
|
+
exports["default"] = exports.Edit = exports.Display = void 0;
|
16
16
|
var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
|
17
17
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
|
18
|
-
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/slicedToArray"));
|
19
18
|
var _react = _interopRequireDefault(require("react"));
|
20
|
-
var _CreateIcon = _interopRequireDefault(require("@pingux/mdi-react/CreateIcon"));
|
21
19
|
var _TrashIcon = _interopRequireDefault(require("@pingux/mdi-react/TrashIcon"));
|
22
20
|
var _index = require("../index");
|
23
21
|
var _react2 = require("@emotion/react");
|
@@ -27,24 +25,33 @@ var _default = {
|
|
27
25
|
title: 'Recipes/Condition Filter'
|
28
26
|
};
|
29
27
|
exports["default"] = _default;
|
30
|
-
var
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
textTransform: 'none'
|
36
|
-
},
|
37
|
-
ml: '3px',
|
38
|
-
minWidth: '65px',
|
39
|
-
'z-index': '1'
|
28
|
+
var customBadgeStyles = {
|
29
|
+
marginRight: 'sm',
|
30
|
+
'& > span': {
|
31
|
+
fontWeight: 1,
|
32
|
+
textTransform: 'none'
|
40
33
|
},
|
34
|
+
ml: '3px',
|
35
|
+
minWidth: '65px',
|
36
|
+
height: '20px',
|
37
|
+
'z-index': '1'
|
38
|
+
};
|
39
|
+
var sx = {
|
40
|
+
equalBadgeStyles: _objectSpread(_objectSpread({}, customBadgeStyles), {}, {
|
41
|
+
bg: 'accent.95',
|
42
|
+
textColor: 'neutral.10',
|
43
|
+
alignSelf: 'center',
|
44
|
+
height: '21px',
|
45
|
+
minWidth: '51px'
|
46
|
+
}),
|
41
47
|
borderedBoxStyles: {
|
42
48
|
'&::after': {
|
43
|
-
bg: 'decorative.
|
44
|
-
width: '2px'
|
49
|
+
bg: 'decorative.4',
|
50
|
+
width: '2px',
|
51
|
+
display: 'block'
|
45
52
|
},
|
46
53
|
borderColor: 'neutral.80',
|
47
|
-
borderRadius: '4px',
|
54
|
+
borderRadius: '3px 4px 4px 3px',
|
48
55
|
borderStyle: 'solid',
|
49
56
|
borderWidth: '1px 1px 1px 0px',
|
50
57
|
padding: 'sm',
|
@@ -52,7 +59,7 @@ var sx = {
|
|
52
59
|
},
|
53
60
|
allConditionsBox: {
|
54
61
|
'&::after': {
|
55
|
-
bg: 'decorative.
|
62
|
+
bg: 'decorative.4',
|
56
63
|
width: '2px'
|
57
64
|
},
|
58
65
|
alignItems: 'center',
|
@@ -65,86 +72,52 @@ var sx = {
|
|
65
72
|
color: 'inherit',
|
66
73
|
fontSize: 'sm',
|
67
74
|
fontWeight: '3'
|
75
|
+
},
|
76
|
+
textStyles: {
|
77
|
+
pl: 'md',
|
78
|
+
pr: 'sm'
|
68
79
|
}
|
69
80
|
};
|
70
|
-
var
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
"aria-label": "deleteButton",
|
100
|
-
sx: {
|
101
|
-
alignSelf: 'center'
|
102
|
-
}
|
103
|
-
}, (0, _react2.jsx)(_index.Icon, {
|
104
|
-
icon: _TrashIcon["default"],
|
105
|
-
sx: {
|
106
|
-
'& > path': {
|
107
|
-
fill: 'neutral.40'
|
108
|
-
}
|
109
|
-
},
|
110
|
-
size: "md",
|
111
|
-
title: {
|
112
|
-
name: 'Trash Icon'
|
113
|
-
}
|
114
|
-
}));
|
115
|
-
var _React$useState = _react["default"].useState(false),
|
116
|
-
_React$useState2 = (0, _slicedToArray2["default"])(_React$useState, 2),
|
117
|
-
editOverviewVisible = _React$useState2[0],
|
118
|
-
setEditOverviewVisible = _React$useState2[1];
|
119
|
-
return (0, _react2.jsx)(_index.Box, null, !editOverviewVisible ? (0, _react2.jsx)(_index.Box, {
|
81
|
+
var allConditions = [{
|
82
|
+
field1: 'Family Name',
|
83
|
+
field3: 'John',
|
84
|
+
key: 'FamilyNameField'
|
85
|
+
}, {
|
86
|
+
field1: 'Full Name',
|
87
|
+
field3: 'Alex Smith',
|
88
|
+
key: 'FullNameField'
|
89
|
+
}];
|
90
|
+
var anyConditions = [{
|
91
|
+
field1: 'Group',
|
92
|
+
field3: 'Marketing',
|
93
|
+
key: 'Group1Field'
|
94
|
+
}, {
|
95
|
+
field1: 'Group',
|
96
|
+
field3: 'UX Team',
|
97
|
+
key: 'Group2Field'
|
98
|
+
}];
|
99
|
+
var noneConditions = [{
|
100
|
+
field1: 'Misc',
|
101
|
+
field3: 'Apple',
|
102
|
+
key: 'Miscellaneous1'
|
103
|
+
}, {
|
104
|
+
field1: 'Misc',
|
105
|
+
field3: 'Banana',
|
106
|
+
key: 'Miscellaneous2'
|
107
|
+
}];
|
108
|
+
var Display = function Display() {
|
109
|
+
return (0, _react2.jsx)(_index.Box, null, (0, _react2.jsx)(_index.Box, {
|
120
110
|
bg: "accent.99",
|
121
111
|
maxWidth: "318px",
|
122
112
|
p: "sm"
|
123
113
|
}, (0, _react2.jsx)(_index.Box, {
|
124
114
|
isRow: true
|
125
|
-
}, (0, _react2.jsx)(_index.
|
126
|
-
variant: "itemTitle",
|
127
|
-
fontWeight: "0",
|
128
|
-
pb: "md"
|
129
|
-
}, "Branch Condition"), (0, _react2.jsx)(_index.IconButton, {
|
130
|
-
"aria-label": "edit",
|
131
|
-
variant: "inverted",
|
132
|
-
ml: "xs",
|
133
|
-
onPress: function onPress() {
|
134
|
-
return setEditOverviewVisible(true);
|
135
|
-
}
|
136
|
-
}, (0, _react2.jsx)(_index.Icon, {
|
137
|
-
icon: _CreateIcon["default"],
|
138
|
-
size: "xs",
|
139
|
-
title: {
|
140
|
-
name: 'Create Icon'
|
141
|
-
}
|
142
|
-
}))), (0, _react2.jsx)(_index.Box, {
|
115
|
+
}), (0, _react2.jsx)(_index.Box, {
|
143
116
|
isRow: true
|
144
117
|
}, (0, _react2.jsx)(_index.Badge, {
|
145
118
|
label: "All",
|
146
119
|
bg: "decorative.4",
|
147
|
-
sx:
|
120
|
+
sx: customBadgeStyles
|
148
121
|
}), (0, _react2.jsx)(_index.Text, null, " of the conditions are true")), (0, _map["default"])(allConditions).call(allConditions, function (item) {
|
149
122
|
return (0, _react2.jsx)(_index.Box, {
|
150
123
|
isRow: true,
|
@@ -157,14 +130,11 @@ var Default = function Default() {
|
|
157
130
|
isRow: true,
|
158
131
|
sx: sx.allConditionsBox
|
159
132
|
}, (0, _react2.jsx)(_index.Text, {
|
160
|
-
|
161
|
-
pr: "sm"
|
133
|
+
sx: sx.textStyles
|
162
134
|
}, item.field1), (0, _react2.jsx)(_index.Badge, {
|
163
135
|
label: "Equals",
|
164
|
-
|
165
|
-
textColor: "neutral.10"
|
166
|
-
sx: sx.customBadgeStyles,
|
167
|
-
alignSelf: "center"
|
136
|
+
sx: sx.equalBadgeStyles,
|
137
|
+
textColor: "neutral.10"
|
168
138
|
}), (0, _react2.jsx)(_index.Text, null, item.field3))));
|
169
139
|
}), (0, _react2.jsx)(_index.Box, {
|
170
140
|
isRow: true
|
@@ -177,7 +147,7 @@ var Default = function Default() {
|
|
177
147
|
}, (0, _react2.jsx)(_index.Badge, {
|
178
148
|
label: "Any",
|
179
149
|
bg: "decorative.7",
|
180
|
-
sx:
|
150
|
+
sx: customBadgeStyles,
|
181
151
|
alignSelf: "center"
|
182
152
|
}), (0, _react2.jsx)(_index.Text, null, " of the conditions are true")), (0, _react2.jsx)(_index.Box, {
|
183
153
|
ml: "xs"
|
@@ -194,16 +164,18 @@ var Default = function Default() {
|
|
194
164
|
bg: "white",
|
195
165
|
isRow: true,
|
196
166
|
width: "100%",
|
197
|
-
sx: sx.allConditionsBox
|
167
|
+
sx: _objectSpread(_objectSpread({}, sx.allConditionsBox), {}, {
|
168
|
+
'&::after': {
|
169
|
+
bg: 'decorative.7',
|
170
|
+
width: '2px'
|
171
|
+
}
|
172
|
+
})
|
198
173
|
}, (0, _react2.jsx)(_index.Text, {
|
199
|
-
|
200
|
-
pr: "sm"
|
174
|
+
sx: sx.textStyles
|
201
175
|
}, item.field1), (0, _react2.jsx)(_index.Badge, {
|
202
176
|
label: "Equals",
|
203
|
-
bg: "accent.90",
|
204
177
|
textColor: "neutral.10",
|
205
|
-
sx: sx.
|
206
|
-
alignSelf: "center"
|
178
|
+
sx: sx.equalBadgeStyles
|
207
179
|
}), (0, _react2.jsx)(_index.Text, null, item.field3)));
|
208
180
|
})))), (0, _react2.jsx)(_index.Box, {
|
209
181
|
isRow: true
|
@@ -218,7 +190,7 @@ var Default = function Default() {
|
|
218
190
|
}, (0, _react2.jsx)(_index.Badge, {
|
219
191
|
label: "None",
|
220
192
|
bg: "accent.20",
|
221
|
-
sx:
|
193
|
+
sx: customBadgeStyles,
|
222
194
|
alignSelf: "center"
|
223
195
|
}), (0, _react2.jsx)(_index.Text, null, " of the conditions are true")), (0, _react2.jsx)(_index.Box, {
|
224
196
|
ml: "xs"
|
@@ -235,26 +207,45 @@ var Default = function Default() {
|
|
235
207
|
bg: "white",
|
236
208
|
isRow: true,
|
237
209
|
width: "100%",
|
238
|
-
sx: sx.allConditionsBox
|
210
|
+
sx: _objectSpread(_objectSpread({}, sx.allConditionsBox), {}, {
|
211
|
+
'&::after': {
|
212
|
+
bg: 'accent.20',
|
213
|
+
width: '2px'
|
214
|
+
}
|
215
|
+
})
|
239
216
|
}, (0, _react2.jsx)(_index.Text, {
|
240
|
-
|
241
|
-
pr: "sm"
|
217
|
+
sx: sx.textStyles
|
242
218
|
}, item.field1), (0, _react2.jsx)(_index.Badge, {
|
243
219
|
label: "Equals",
|
244
|
-
bg: "accent.90",
|
245
220
|
textColor: "neutral.10",
|
246
|
-
sx: sx.
|
247
|
-
alignSelf: "center"
|
221
|
+
sx: sx.equalBadgeStyles
|
248
222
|
}), (0, _react2.jsx)(_index.Text, null, item.field3)));
|
249
|
-
})))))
|
223
|
+
}))))));
|
224
|
+
};
|
225
|
+
exports.Display = Display;
|
226
|
+
var Edit = function Edit() {
|
227
|
+
var trashButton = (0, _react2.jsx)(_index.IconButton, {
|
228
|
+
"aria-label": "deleteButton",
|
229
|
+
sx: {
|
230
|
+
alignSelf: 'center'
|
231
|
+
}
|
232
|
+
}, (0, _react2.jsx)(_index.Icon, {
|
233
|
+
icon: _TrashIcon["default"],
|
234
|
+
sx: {
|
235
|
+
'& > path': {
|
236
|
+
fill: 'neutral.40'
|
237
|
+
}
|
238
|
+
},
|
239
|
+
size: "md",
|
240
|
+
title: {
|
241
|
+
name: 'Trash Icon'
|
242
|
+
}
|
243
|
+
}));
|
244
|
+
return (0, _react2.jsx)(_index.Box, null, (0, _react2.jsx)(_index.Box, {
|
250
245
|
bg: "accent.99",
|
251
246
|
p: "md",
|
252
247
|
maxWidth: "966px"
|
253
|
-
}, (0, _react2.jsx)(_index.
|
254
|
-
variant: "itemTitle",
|
255
|
-
fontWeight: "0",
|
256
|
-
pb: "md"
|
257
|
-
}, "Branch Condition"), (0, _react2.jsx)(_index.Box, {
|
248
|
+
}, (0, _react2.jsx)(_index.Box, {
|
258
249
|
isRow: true,
|
259
250
|
alignItems: "center",
|
260
251
|
mb: "sm",
|
@@ -526,22 +517,6 @@ var Default = function Default() {
|
|
526
517
|
})), trashButton);
|
527
518
|
}))), (0, _react2.jsx)(_index.Box, {
|
528
519
|
alignSelf: "start"
|
529
|
-
}, trashButton))
|
530
|
-
isRow: true,
|
531
|
-
mt: "lg"
|
532
|
-
}, (0, _react2.jsx)(_index.Button, {
|
533
|
-
onPress: function onPress() {
|
534
|
-
return setEditOverviewVisible(false);
|
535
|
-
},
|
536
|
-
variant: "primary",
|
537
|
-
mr: "md",
|
538
|
-
"aria-label": "save"
|
539
|
-
}, "Save"), (0, _react2.jsx)(_index.Button, {
|
540
|
-
onPress: function onPress() {
|
541
|
-
return setEditOverviewVisible(false);
|
542
|
-
},
|
543
|
-
variant: "link",
|
544
|
-
"aria-label": "cancel"
|
545
|
-
}, "Cancel"))));
|
520
|
+
}, trashButton))));
|
546
521
|
};
|
547
|
-
exports.
|
522
|
+
exports.Edit = Edit;
|
@@ -1,8 +1,9 @@
|
|
1
1
|
import _extends from "@babel/runtime-corejs3/helpers/esm/extends";
|
2
2
|
import _objectWithoutProperties from "@babel/runtime-corejs3/helpers/esm/objectWithoutProperties";
|
3
3
|
var _excluded = ["isLast", "color"];
|
4
|
-
import React, { forwardRef, useImperativeHandle, useRef } from 'react';
|
4
|
+
import React, { forwardRef, useImperativeHandle, useMemo, useRef } from 'react';
|
5
5
|
import PropTypes from 'prop-types';
|
6
|
+
import { v4 as uuid } from 'uuid';
|
6
7
|
import { Box } from '../../index';
|
7
8
|
import { line } from '../../styles/colors';
|
8
9
|
import { jsx as ___EmotionJSX } from "@emotion/react";
|
@@ -16,6 +17,15 @@ var Bracket = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
16
17
|
useImperativeHandle(ref, function () {
|
17
18
|
return bracketRef.current;
|
18
19
|
});
|
20
|
+
var bracketId = useMemo(function () {
|
21
|
+
return uuid();
|
22
|
+
}, []);
|
23
|
+
var bracketFillOneId = useMemo(function () {
|
24
|
+
return uuid();
|
25
|
+
}, []);
|
26
|
+
var bracketFillTwoId = useMemo(function () {
|
27
|
+
return uuid();
|
28
|
+
}, []);
|
19
29
|
return ___EmotionJSX(Box, _extends({
|
20
30
|
variant: "bracket.base"
|
21
31
|
}, others), !isLast && ___EmotionJSX(Box, {
|
@@ -34,9 +44,9 @@ var Bracket = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
34
44
|
flexGrow: 1
|
35
45
|
},
|
36
46
|
"data-testid": "isLastLayer",
|
37
|
-
"aria-labelledby": "bracket-fill-vertical-icon-title"
|
47
|
+
"aria-labelledby": "bracket-fill-vertical-icon-title-".concat(bracketId)
|
38
48
|
}, ___EmotionJSX("title", {
|
39
|
-
id: "bracket-fill-vertical-icon-title"
|
49
|
+
id: "bracket-fill-vertical-icon-title-".concat(bracketId)
|
40
50
|
}, "bracket-fill"), ___EmotionJSX("g", null, ___EmotionJSX("title", null, "Layer 3"), ___EmotionJSX("line", {
|
41
51
|
strokeLinecap: "undefined",
|
42
52
|
strokeLinejoin: "undefined",
|
@@ -56,9 +66,9 @@ var Bracket = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
56
66
|
style: {
|
57
67
|
flexGrow: 1
|
58
68
|
},
|
59
|
-
"aria-labelledby": "bracket-fill-1-icon-title"
|
69
|
+
"aria-labelledby": "bracket-fill-1-icon-title-".concat(bracketFillOneId)
|
60
70
|
}, ___EmotionJSX("title", {
|
61
|
-
id: "bracket-fill-1-icon-title"
|
71
|
+
id: "bracket-fill-1-icon-title-".concat(bracketFillOneId)
|
62
72
|
}, "bracket-fill"), ___EmotionJSX("g", null, ___EmotionJSX("title", null, "Layer 1"), ___EmotionJSX("line", {
|
63
73
|
strokeLinecap: "undefined",
|
64
74
|
strokeLinejoin: "undefined",
|
@@ -72,9 +82,9 @@ var Bracket = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
72
82
|
xmlns: "http://www.w3.org/2000/svg",
|
73
83
|
version: "1.1",
|
74
84
|
height: "15",
|
75
|
-
"aria-labelledby": "bracket-fill-2-icon-title"
|
85
|
+
"aria-labelledby": "bracket-fill-2-icon-title-".concat(bracketFillTwoId)
|
76
86
|
}, ___EmotionJSX("title", {
|
77
|
-
id: "bracket-fill-2-icon-title"
|
87
|
+
id: "bracket-fill-2-icon-title-".concat(bracketFillTwoId)
|
78
88
|
}, "bracket-fill"), ___EmotionJSX("g", {
|
79
89
|
transform: "translate(-1, 0)"
|
80
90
|
}, ___EmotionJSX("title", null, "Layer 2"), ___EmotionJSX("path", {
|
@@ -8,11 +8,10 @@ import _Object$defineProperties from "@babel/runtime-corejs3/core-js-stable/obje
|
|
8
8
|
import _Object$defineProperty from "@babel/runtime-corejs3/core-js-stable/object/define-property";
|
9
9
|
import _extends from "@babel/runtime-corejs3/helpers/esm/extends";
|
10
10
|
import _defineProperty from "@babel/runtime-corejs3/helpers/esm/defineProperty";
|
11
|
-
import _trimInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/trim";
|
12
11
|
function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = _filterInstanceProperty(symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
13
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var
|
14
|
-
import React, { forwardRef,
|
15
|
-
import { mergeProps, useNumberField
|
12
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context, _context2; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty(_context = ownKeys(Object(source), !0)).call(_context, function (key) { _defineProperty(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : _forEachInstanceProperty(_context2 = ownKeys(Object(source))).call(_context2, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
|
13
|
+
import React, { forwardRef, useImperativeHandle } from 'react';
|
14
|
+
import { mergeProps, useNumberField } from 'react-aria';
|
16
15
|
import { useNumberFieldState } from 'react-stately';
|
17
16
|
import MenuDown from '@pingux/mdi-react/MenuDownIcon';
|
18
17
|
import MenuUp from '@pingux/mdi-react/MenuUpIcon';
|
@@ -22,15 +21,13 @@ import PropTypes from 'prop-types';
|
|
22
21
|
import { v4 as uuid } from 'uuid';
|
23
22
|
import { Box, FieldHelperText, Icon, IconButton, Input, Label } from '../..';
|
24
23
|
import { useField, usePropWarning } from '../../hooks';
|
25
|
-
import useHiddenNumberFieldValue from '../../hooks/useHiddenNumberFieldValue';
|
26
24
|
import { ariaAttributesBasePropTypes } from '../../utils/docUtils/ariaAttributes';
|
27
25
|
import { inputFieldAttributesBasePropTypes } from '../../utils/docUtils/fieldAttributes';
|
28
26
|
import { statusPropTypes } from '../../utils/docUtils/statusProp';
|
29
27
|
import { jsx as ___EmotionJSX } from "@emotion/react";
|
30
28
|
var NumberField = /*#__PURE__*/forwardRef(function (props, ref) {
|
31
29
|
var helperText = props.helperText,
|
32
|
-
status = props.status
|
33
|
-
formatOptions = props.formatOptions;
|
30
|
+
status = props.status;
|
34
31
|
var _useLocale = useLocale(),
|
35
32
|
locale = _useLocale.locale;
|
36
33
|
var state = useNumberFieldState(_objectSpread(_objectSpread({}, props), {}, {
|
@@ -81,66 +78,40 @@ var NumberField = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
81
78
|
|
82
79
|
// this needed to remove console warning in React 16
|
83
80
|
// I believe once we update to 17 - we can remove this
|
84
|
-
var onInputFocus =
|
81
|
+
var onInputFocus = function onInputFocus(e) {
|
85
82
|
e.persist();
|
86
83
|
fieldControlInputProps.onFocus(e);
|
87
84
|
inputProps.onFocus(e);
|
88
|
-
}
|
89
|
-
var onInputBlur =
|
85
|
+
};
|
86
|
+
var onInputBlur = function onInputBlur(e) {
|
90
87
|
e.persist();
|
91
88
|
fieldControlInputProps.onBlur(e);
|
92
89
|
inputProps.onBlur(e);
|
93
|
-
}, [fieldControlInputProps, inputProps]);
|
94
|
-
var updatedFieldControlInputProps = useMemo(function () {
|
95
|
-
return _objectSpread(_objectSpread({}, fieldControlInputProps), {}, {
|
96
|
-
onFocus: onInputFocus,
|
97
|
-
onBlur: onInputBlur
|
98
|
-
});
|
99
|
-
}, [fieldControlInputProps, onInputBlur, onInputFocus]);
|
100
|
-
var onInputChange = function onInputChange(e) {
|
101
|
-
var _context;
|
102
|
-
var minValue = props.minValue;
|
103
|
-
var trimmedInputValue = _trimInstanceProperty(_context = e.target.value).call(_context);
|
104
|
-
var trimmedValueEvent = _objectSpread(_objectSpread({}, e), {}, {
|
105
|
-
target: _objectSpread(_objectSpread({}, e.target), {}, {
|
106
|
-
value: trimmedInputValue
|
107
|
-
})
|
108
|
-
});
|
109
|
-
if (!trimmedInputValue && typeof minValue !== 'undefined') {
|
110
|
-
var minValueEvent = _objectSpread(_objectSpread({}, e), {}, {
|
111
|
-
target: _objectSpread(_objectSpread({}, e.target), {}, {
|
112
|
-
value: minValue.toString()
|
113
|
-
})
|
114
|
-
});
|
115
|
-
inputProps.onChange(minValueEvent);
|
116
|
-
} else {
|
117
|
-
inputProps.onChange(trimmedValueEvent);
|
118
|
-
}
|
119
90
|
};
|
120
|
-
var
|
121
|
-
|
122
|
-
|
91
|
+
var updatedFieldControlInputProps = _objectSpread(_objectSpread({}, fieldControlInputProps), {}, {
|
92
|
+
onFocus: onInputFocus,
|
93
|
+
onBlur: onInputBlur
|
123
94
|
});
|
124
|
-
|
125
|
-
var
|
126
|
-
|
127
|
-
|
128
|
-
return ___EmotionJSX(Box, fieldContainerProps, ___EmotionJSX(Label, mergeProps(fieldLabelProps, labelProps)), ___EmotionJSX(Box, _extends({
|
95
|
+
var helperTextId = uuid();
|
96
|
+
var updatedLabelProps = _objectSpread({}, mergeProps(fieldLabelProps, labelProps));
|
97
|
+
var inputPropsValue = inputProps.value || 0;
|
98
|
+
return ___EmotionJSX(Box, fieldContainerProps, ___EmotionJSX(Label, updatedLabelProps), ___EmotionJSX(Box, _extends({
|
129
99
|
variant: "forms.numberField.noDefaultArrows"
|
130
100
|
}, groupProps), ___EmotionJSX(Box, _extends({
|
131
101
|
variant: "forms.numberField.arrowsWrapper"
|
132
|
-
}, fieldControlWrapperProps
|
102
|
+
}, fieldControlWrapperProps, {
|
103
|
+
role: "spinbutton",
|
104
|
+
"aria-valuetext": inputPropsValue,
|
105
|
+
"aria-valuenow": inputPropsValue,
|
106
|
+
"aria-labelledby": updatedLabelProps.id
|
107
|
+
}), ___EmotionJSX(Input, _extends({
|
133
108
|
variant: "forms.input.numberField",
|
134
109
|
ref: inputRef
|
135
110
|
// we don't want to merge this props, we want to
|
136
111
|
// overwrite them like defaultValue, value, ect.
|
137
|
-
}, updatedFieldControlInputProps, omit(inputProps, ['name', 'onFocus', 'onBlur']), {
|
138
|
-
|
139
|
-
|
140
|
-
role: "textbox"
|
141
|
-
})), ControlArrows), ___EmotionJSX(VisuallyHidden, {
|
142
|
-
"aria-live": "assertive"
|
143
|
-
}, hiddenInputValue), helperText && ___EmotionJSX(FieldHelperText, {
|
112
|
+
}, updatedFieldControlInputProps, omit(inputProps, ['name', 'onFocus', 'onBlur', 'aria-roledescription']), {
|
113
|
+
"aria-describedby": helperText && helperTextId
|
114
|
+
})), ControlArrows), helperText && ___EmotionJSX(FieldHelperText, {
|
144
115
|
status: status,
|
145
116
|
id: helperTextId
|
146
117
|
}, helperText)));
|
@@ -38,7 +38,7 @@ axeTest(getComponent, {
|
|
38
38
|
});
|
39
39
|
test('renders NumberField component', function () {
|
40
40
|
getComponent();
|
41
|
-
expect(screen.
|
41
|
+
expect(screen.queryAllByLabelText(testLabel)[0]).toBeInTheDocument();
|
42
42
|
});
|
43
43
|
test('arrow up is adding step to the number value', function () {
|
44
44
|
var mockOnChange = jest.fn();
|
@@ -65,7 +65,7 @@ test('value can be set from outside (controlled state)', function () {
|
|
65
65
|
getComponent({
|
66
66
|
value: controlledValue
|
67
67
|
});
|
68
|
-
expect(screen.
|
68
|
+
expect(screen.queryAllByLabelText(testLabel)[1]).toHaveValue('11');
|
69
69
|
});
|
70
70
|
test('calling onChange with integer when input value changed (controlled state)', function () {
|
71
71
|
var mockOnChange = jest.fn();
|
@@ -73,7 +73,7 @@ test('calling onChange with integer when input value changed (controlled state)'
|
|
73
73
|
getComponent({
|
74
74
|
onChange: mockOnChange
|
75
75
|
});
|
76
|
-
var numberInput = screen.
|
76
|
+
var numberInput = screen.queryAllByLabelText(testLabel)[1];
|
77
77
|
userEvent.clear(numberInput);
|
78
78
|
userEvent.type(numberInput, newTestValue.toString());
|
79
79
|
numberInput.blur();
|
@@ -98,12 +98,12 @@ test('should show helper text if appropriate prop passed', function () {
|
|
98
98
|
test('should be able to be focused via keyboard', function () {
|
99
99
|
getComponent();
|
100
100
|
userEvent.tab();
|
101
|
-
expect(screen.
|
101
|
+
expect(screen.queryAllByLabelText(testLabel)[1]).toHaveFocus();
|
102
102
|
});
|
103
103
|
test('should be able to interact with the keyboard', function () {
|
104
104
|
getComponent();
|
105
105
|
userEvent.tab();
|
106
|
-
var numberInput = screen.
|
106
|
+
var numberInput = screen.queryAllByLabelText(testLabel)[1];
|
107
107
|
userEvent.type(numberInput, '{arrowup}');
|
108
108
|
expect(numberInput).toHaveValue((testValue + 1).toString());
|
109
109
|
userEvent.type(numberInput, '{arrowdown}{arrowdown}');
|
@@ -122,7 +122,7 @@ test('should show hintText text if prop is passed', function () {
|
|
122
122
|
test('increment and decrement buttons should be able to be focused via keyboard', function () {
|
123
123
|
getComponent();
|
124
124
|
userEvent.tab();
|
125
|
-
expect(screen.
|
125
|
+
expect(screen.queryAllByLabelText(testLabel)[1]).toHaveFocus();
|
126
126
|
userEvent.tab();
|
127
127
|
expect(screen.getByLabelText('arrow-up')).toHaveFocus();
|
128
128
|
userEvent.tab();
|
@@ -133,12 +133,12 @@ test('number field input receiving name attribute', function () {
|
|
133
133
|
getComponent({
|
134
134
|
name: testName
|
135
135
|
});
|
136
|
-
expect(screen.
|
136
|
+
expect(screen.queryAllByLabelText(testLabel)[1]).toHaveAttribute('name', testName);
|
137
137
|
});
|
138
138
|
test('number field can be focused', function () {
|
139
139
|
getComponent();
|
140
140
|
userEvent.tab();
|
141
|
-
expect(screen.
|
141
|
+
expect(screen.queryAllByLabelText(testLabel)[1]).toHaveClass('is-focused');
|
142
142
|
});
|
143
143
|
test('passing helper text should display it and correct aria attributes on input', function () {
|
144
144
|
var testHelperText = 'testHelperText';
|
@@ -1,8 +1,3 @@
|
|
1
|
-
import _defineProperty from "@babel/runtime-corejs3/helpers/esm/defineProperty";
|
2
|
-
import _slicedToArray from "@babel/runtime-corejs3/helpers/esm/slicedToArray";
|
3
|
-
function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = _filterInstanceProperty(symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
4
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context, _context2; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty(_context = ownKeys(Object(source), !0)).call(_context, function (key) { _defineProperty(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : _forEachInstanceProperty(_context2 = ownKeys(Object(source))).call(_context2, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
|
5
|
-
import _mapInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/map";
|
6
1
|
import _Object$keys from "@babel/runtime-corejs3/core-js-stable/object/keys";
|
7
2
|
import _Object$getOwnPropertySymbols from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols";
|
8
3
|
import _filterInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/filter";
|
@@ -11,32 +6,44 @@ import _forEachInstanceProperty from "@babel/runtime-corejs3/core-js-stable/inst
|
|
11
6
|
import _Object$getOwnPropertyDescriptors from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors";
|
12
7
|
import _Object$defineProperties from "@babel/runtime-corejs3/core-js-stable/object/define-properties";
|
13
8
|
import _Object$defineProperty from "@babel/runtime-corejs3/core-js-stable/object/define-property";
|
9
|
+
import _defineProperty from "@babel/runtime-corejs3/helpers/esm/defineProperty";
|
10
|
+
import _mapInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/map";
|
11
|
+
function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = _filterInstanceProperty(symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
12
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context, _context2; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty(_context = ownKeys(Object(source), !0)).call(_context, function (key) { _defineProperty(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : _forEachInstanceProperty(_context2 = ownKeys(Object(source))).call(_context2, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
|
14
13
|
import React from 'react';
|
15
|
-
import CreateIcon from '@pingux/mdi-react/CreateIcon';
|
16
14
|
import TrashIcon from '@pingux/mdi-react/TrashIcon';
|
17
15
|
import { Badge, Box, Bracket, Button, Icon, IconButton, Item, RockerButton, RockerButtonGroup, SelectField, Text, TextField } from '../index';
|
18
16
|
import { jsx as ___EmotionJSX } from "@emotion/react";
|
19
17
|
export default {
|
20
18
|
title: 'Recipes/Condition Filter'
|
21
19
|
};
|
22
|
-
var
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
textTransform: 'none'
|
28
|
-
},
|
29
|
-
ml: '3px',
|
30
|
-
minWidth: '65px',
|
31
|
-
'z-index': '1'
|
20
|
+
var customBadgeStyles = {
|
21
|
+
marginRight: 'sm',
|
22
|
+
'& > span': {
|
23
|
+
fontWeight: 1,
|
24
|
+
textTransform: 'none'
|
32
25
|
},
|
26
|
+
ml: '3px',
|
27
|
+
minWidth: '65px',
|
28
|
+
height: '20px',
|
29
|
+
'z-index': '1'
|
30
|
+
};
|
31
|
+
var sx = {
|
32
|
+
equalBadgeStyles: _objectSpread(_objectSpread({}, customBadgeStyles), {}, {
|
33
|
+
bg: 'accent.95',
|
34
|
+
textColor: 'neutral.10',
|
35
|
+
alignSelf: 'center',
|
36
|
+
height: '21px',
|
37
|
+
minWidth: '51px'
|
38
|
+
}),
|
33
39
|
borderedBoxStyles: {
|
34
40
|
'&::after': {
|
35
|
-
bg: 'decorative.
|
36
|
-
width: '2px'
|
41
|
+
bg: 'decorative.4',
|
42
|
+
width: '2px',
|
43
|
+
display: 'block'
|
37
44
|
},
|
38
45
|
borderColor: 'neutral.80',
|
39
|
-
borderRadius: '4px',
|
46
|
+
borderRadius: '3px 4px 4px 3px',
|
40
47
|
borderStyle: 'solid',
|
41
48
|
borderWidth: '1px 1px 1px 0px',
|
42
49
|
padding: 'sm',
|
@@ -44,7 +51,7 @@ var sx = {
|
|
44
51
|
},
|
45
52
|
allConditionsBox: {
|
46
53
|
'&::after': {
|
47
|
-
bg: 'decorative.
|
54
|
+
bg: 'decorative.4',
|
48
55
|
width: '2px'
|
49
56
|
},
|
50
57
|
alignItems: 'center',
|
@@ -57,86 +64,52 @@ var sx = {
|
|
57
64
|
color: 'inherit',
|
58
65
|
fontSize: 'sm',
|
59
66
|
fontWeight: '3'
|
67
|
+
},
|
68
|
+
textStyles: {
|
69
|
+
pl: 'md',
|
70
|
+
pr: 'sm'
|
60
71
|
}
|
61
72
|
};
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
"aria-label": "deleteButton",
|
92
|
-
sx: {
|
93
|
-
alignSelf: 'center'
|
94
|
-
}
|
95
|
-
}, ___EmotionJSX(Icon, {
|
96
|
-
icon: TrashIcon,
|
97
|
-
sx: {
|
98
|
-
'& > path': {
|
99
|
-
fill: 'neutral.40'
|
100
|
-
}
|
101
|
-
},
|
102
|
-
size: "md",
|
103
|
-
title: {
|
104
|
-
name: 'Trash Icon'
|
105
|
-
}
|
106
|
-
}));
|
107
|
-
var _React$useState = React.useState(false),
|
108
|
-
_React$useState2 = _slicedToArray(_React$useState, 2),
|
109
|
-
editOverviewVisible = _React$useState2[0],
|
110
|
-
setEditOverviewVisible = _React$useState2[1];
|
111
|
-
return ___EmotionJSX(Box, null, !editOverviewVisible ? ___EmotionJSX(Box, {
|
73
|
+
var allConditions = [{
|
74
|
+
field1: 'Family Name',
|
75
|
+
field3: 'John',
|
76
|
+
key: 'FamilyNameField'
|
77
|
+
}, {
|
78
|
+
field1: 'Full Name',
|
79
|
+
field3: 'Alex Smith',
|
80
|
+
key: 'FullNameField'
|
81
|
+
}];
|
82
|
+
var anyConditions = [{
|
83
|
+
field1: 'Group',
|
84
|
+
field3: 'Marketing',
|
85
|
+
key: 'Group1Field'
|
86
|
+
}, {
|
87
|
+
field1: 'Group',
|
88
|
+
field3: 'UX Team',
|
89
|
+
key: 'Group2Field'
|
90
|
+
}];
|
91
|
+
var noneConditions = [{
|
92
|
+
field1: 'Misc',
|
93
|
+
field3: 'Apple',
|
94
|
+
key: 'Miscellaneous1'
|
95
|
+
}, {
|
96
|
+
field1: 'Misc',
|
97
|
+
field3: 'Banana',
|
98
|
+
key: 'Miscellaneous2'
|
99
|
+
}];
|
100
|
+
export var Display = function Display() {
|
101
|
+
return ___EmotionJSX(Box, null, ___EmotionJSX(Box, {
|
112
102
|
bg: "accent.99",
|
113
103
|
maxWidth: "318px",
|
114
104
|
p: "sm"
|
115
105
|
}, ___EmotionJSX(Box, {
|
116
106
|
isRow: true
|
117
|
-
}, ___EmotionJSX(
|
118
|
-
variant: "itemTitle",
|
119
|
-
fontWeight: "0",
|
120
|
-
pb: "md"
|
121
|
-
}, "Branch Condition"), ___EmotionJSX(IconButton, {
|
122
|
-
"aria-label": "edit",
|
123
|
-
variant: "inverted",
|
124
|
-
ml: "xs",
|
125
|
-
onPress: function onPress() {
|
126
|
-
return setEditOverviewVisible(true);
|
127
|
-
}
|
128
|
-
}, ___EmotionJSX(Icon, {
|
129
|
-
icon: CreateIcon,
|
130
|
-
size: "xs",
|
131
|
-
title: {
|
132
|
-
name: 'Create Icon'
|
133
|
-
}
|
134
|
-
}))), ___EmotionJSX(Box, {
|
107
|
+
}), ___EmotionJSX(Box, {
|
135
108
|
isRow: true
|
136
109
|
}, ___EmotionJSX(Badge, {
|
137
110
|
label: "All",
|
138
111
|
bg: "decorative.4",
|
139
|
-
sx:
|
112
|
+
sx: customBadgeStyles
|
140
113
|
}), ___EmotionJSX(Text, null, " of the conditions are true")), _mapInstanceProperty(allConditions).call(allConditions, function (item) {
|
141
114
|
return ___EmotionJSX(Box, {
|
142
115
|
isRow: true,
|
@@ -149,14 +122,11 @@ export var Default = function Default() {
|
|
149
122
|
isRow: true,
|
150
123
|
sx: sx.allConditionsBox
|
151
124
|
}, ___EmotionJSX(Text, {
|
152
|
-
|
153
|
-
pr: "sm"
|
125
|
+
sx: sx.textStyles
|
154
126
|
}, item.field1), ___EmotionJSX(Badge, {
|
155
127
|
label: "Equals",
|
156
|
-
|
157
|
-
textColor: "neutral.10"
|
158
|
-
sx: sx.customBadgeStyles,
|
159
|
-
alignSelf: "center"
|
128
|
+
sx: sx.equalBadgeStyles,
|
129
|
+
textColor: "neutral.10"
|
160
130
|
}), ___EmotionJSX(Text, null, item.field3))));
|
161
131
|
}), ___EmotionJSX(Box, {
|
162
132
|
isRow: true
|
@@ -169,7 +139,7 @@ export var Default = function Default() {
|
|
169
139
|
}, ___EmotionJSX(Badge, {
|
170
140
|
label: "Any",
|
171
141
|
bg: "decorative.7",
|
172
|
-
sx:
|
142
|
+
sx: customBadgeStyles,
|
173
143
|
alignSelf: "center"
|
174
144
|
}), ___EmotionJSX(Text, null, " of the conditions are true")), ___EmotionJSX(Box, {
|
175
145
|
ml: "xs"
|
@@ -186,16 +156,18 @@ export var Default = function Default() {
|
|
186
156
|
bg: "white",
|
187
157
|
isRow: true,
|
188
158
|
width: "100%",
|
189
|
-
sx: sx.allConditionsBox
|
159
|
+
sx: _objectSpread(_objectSpread({}, sx.allConditionsBox), {}, {
|
160
|
+
'&::after': {
|
161
|
+
bg: 'decorative.7',
|
162
|
+
width: '2px'
|
163
|
+
}
|
164
|
+
})
|
190
165
|
}, ___EmotionJSX(Text, {
|
191
|
-
|
192
|
-
pr: "sm"
|
166
|
+
sx: sx.textStyles
|
193
167
|
}, item.field1), ___EmotionJSX(Badge, {
|
194
168
|
label: "Equals",
|
195
|
-
bg: "accent.90",
|
196
169
|
textColor: "neutral.10",
|
197
|
-
sx: sx.
|
198
|
-
alignSelf: "center"
|
170
|
+
sx: sx.equalBadgeStyles
|
199
171
|
}), ___EmotionJSX(Text, null, item.field3)));
|
200
172
|
})))), ___EmotionJSX(Box, {
|
201
173
|
isRow: true
|
@@ -210,7 +182,7 @@ export var Default = function Default() {
|
|
210
182
|
}, ___EmotionJSX(Badge, {
|
211
183
|
label: "None",
|
212
184
|
bg: "accent.20",
|
213
|
-
sx:
|
185
|
+
sx: customBadgeStyles,
|
214
186
|
alignSelf: "center"
|
215
187
|
}), ___EmotionJSX(Text, null, " of the conditions are true")), ___EmotionJSX(Box, {
|
216
188
|
ml: "xs"
|
@@ -227,26 +199,44 @@ export var Default = function Default() {
|
|
227
199
|
bg: "white",
|
228
200
|
isRow: true,
|
229
201
|
width: "100%",
|
230
|
-
sx: sx.allConditionsBox
|
202
|
+
sx: _objectSpread(_objectSpread({}, sx.allConditionsBox), {}, {
|
203
|
+
'&::after': {
|
204
|
+
bg: 'accent.20',
|
205
|
+
width: '2px'
|
206
|
+
}
|
207
|
+
})
|
231
208
|
}, ___EmotionJSX(Text, {
|
232
|
-
|
233
|
-
pr: "sm"
|
209
|
+
sx: sx.textStyles
|
234
210
|
}, item.field1), ___EmotionJSX(Badge, {
|
235
211
|
label: "Equals",
|
236
|
-
bg: "accent.90",
|
237
212
|
textColor: "neutral.10",
|
238
|
-
sx: sx.
|
239
|
-
alignSelf: "center"
|
213
|
+
sx: sx.equalBadgeStyles
|
240
214
|
}), ___EmotionJSX(Text, null, item.field3)));
|
241
|
-
})))))
|
215
|
+
}))))));
|
216
|
+
};
|
217
|
+
export var Edit = function Edit() {
|
218
|
+
var trashButton = ___EmotionJSX(IconButton, {
|
219
|
+
"aria-label": "deleteButton",
|
220
|
+
sx: {
|
221
|
+
alignSelf: 'center'
|
222
|
+
}
|
223
|
+
}, ___EmotionJSX(Icon, {
|
224
|
+
icon: TrashIcon,
|
225
|
+
sx: {
|
226
|
+
'& > path': {
|
227
|
+
fill: 'neutral.40'
|
228
|
+
}
|
229
|
+
},
|
230
|
+
size: "md",
|
231
|
+
title: {
|
232
|
+
name: 'Trash Icon'
|
233
|
+
}
|
234
|
+
}));
|
235
|
+
return ___EmotionJSX(Box, null, ___EmotionJSX(Box, {
|
242
236
|
bg: "accent.99",
|
243
237
|
p: "md",
|
244
238
|
maxWidth: "966px"
|
245
|
-
}, ___EmotionJSX(
|
246
|
-
variant: "itemTitle",
|
247
|
-
fontWeight: "0",
|
248
|
-
pb: "md"
|
249
|
-
}, "Branch Condition"), ___EmotionJSX(Box, {
|
239
|
+
}, ___EmotionJSX(Box, {
|
250
240
|
isRow: true,
|
251
241
|
alignItems: "center",
|
252
242
|
mb: "sm",
|
@@ -518,21 +508,5 @@ export var Default = function Default() {
|
|
518
508
|
})), trashButton);
|
519
509
|
}))), ___EmotionJSX(Box, {
|
520
510
|
alignSelf: "start"
|
521
|
-
}, trashButton))
|
522
|
-
isRow: true,
|
523
|
-
mt: "lg"
|
524
|
-
}, ___EmotionJSX(Button, {
|
525
|
-
onPress: function onPress() {
|
526
|
-
return setEditOverviewVisible(false);
|
527
|
-
},
|
528
|
-
variant: "primary",
|
529
|
-
mr: "md",
|
530
|
-
"aria-label": "save"
|
531
|
-
}, "Save"), ___EmotionJSX(Button, {
|
532
|
-
onPress: function onPress() {
|
533
|
-
return setEditOverviewVisible(false);
|
534
|
-
},
|
535
|
-
variant: "link",
|
536
|
-
"aria-label": "cancel"
|
537
|
-
}, "Cancel"))));
|
511
|
+
}, trashButton))));
|
538
512
|
};
|
package/package.json
CHANGED
@@ -1,14 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
|
3
|
-
var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
|
4
|
-
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
5
|
-
_Object$defineProperty(exports, "__esModule", {
|
6
|
-
value: true
|
7
|
-
});
|
8
|
-
_Object$defineProperty(exports, "default", {
|
9
|
-
enumerable: true,
|
10
|
-
get: function get() {
|
11
|
-
return _useHiddenNumberFieldValue["default"];
|
12
|
-
}
|
13
|
-
});
|
14
|
-
var _useHiddenNumberFieldValue = _interopRequireDefault(require("./useHiddenNumberFieldValue"));
|
@@ -1,23 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
|
3
|
-
var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
|
4
|
-
_Object$defineProperty(exports, "__esModule", {
|
5
|
-
value: true
|
6
|
-
});
|
7
|
-
exports["default"] = void 0;
|
8
|
-
var _react = require("react");
|
9
|
-
/**
|
10
|
-
* Returns integer or absolute value for screen reader announcement.
|
11
|
-
*/
|
12
|
-
|
13
|
-
var useHiddenNumberFieldValue = function useHiddenNumberFieldValue(_ref) {
|
14
|
-
var numberValue = _ref.numberValue,
|
15
|
-
isCurrency = _ref.isCurrency;
|
16
|
-
return (0, _react.useMemo)(function () {
|
17
|
-
if (!numberValue) return '';
|
18
|
-
if (!isCurrency) return numberValue;
|
19
|
-
return Math.abs(numberValue);
|
20
|
-
}, [numberValue, isCurrency]);
|
21
|
-
};
|
22
|
-
var _default = useHiddenNumberFieldValue;
|
23
|
-
exports["default"] = _default;
|
@@ -1,35 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
|
3
|
-
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
4
|
-
var _reactHooks = require("@testing-library/react-hooks");
|
5
|
-
var _useHiddenNumberFieldValue = _interopRequireDefault(require("./useHiddenNumberFieldValue"));
|
6
|
-
test('When number is not currency, negative values return negative values', function () {
|
7
|
-
var _renderHook = (0, _reactHooks.renderHook)(function () {
|
8
|
-
return (0, _useHiddenNumberFieldValue["default"])({
|
9
|
-
isCurrency: false,
|
10
|
-
numberValue: -1
|
11
|
-
});
|
12
|
-
}),
|
13
|
-
result = _renderHook.result;
|
14
|
-
expect(result.current).toBe(-1);
|
15
|
-
});
|
16
|
-
test('When number is currency, it always returns the absolute value', function () {
|
17
|
-
var _renderHook2 = (0, _reactHooks.renderHook)(function () {
|
18
|
-
return (0, _useHiddenNumberFieldValue["default"])({
|
19
|
-
isCurrency: true,
|
20
|
-
numberValue: -1
|
21
|
-
});
|
22
|
-
}),
|
23
|
-
result = _renderHook2.result;
|
24
|
-
expect(result.current).toBe(1);
|
25
|
-
});
|
26
|
-
test('When number is not currency, positive values return positive numbers', function () {
|
27
|
-
var _renderHook3 = (0, _reactHooks.renderHook)(function () {
|
28
|
-
return (0, _useHiddenNumberFieldValue["default"])({
|
29
|
-
isCurrency: false,
|
30
|
-
numberValue: 2
|
31
|
-
});
|
32
|
-
}),
|
33
|
-
result = _renderHook3.result;
|
34
|
-
expect(result.current).toBe(2);
|
35
|
-
});
|
@@ -1 +0,0 @@
|
|
1
|
-
export { default } from './useHiddenNumberFieldValue';
|
@@ -1,16 +0,0 @@
|
|
1
|
-
import { useMemo } from 'react';
|
2
|
-
|
3
|
-
/**
|
4
|
-
* Returns integer or absolute value for screen reader announcement.
|
5
|
-
*/
|
6
|
-
|
7
|
-
var useHiddenNumberFieldValue = function useHiddenNumberFieldValue(_ref) {
|
8
|
-
var numberValue = _ref.numberValue,
|
9
|
-
isCurrency = _ref.isCurrency;
|
10
|
-
return useMemo(function () {
|
11
|
-
if (!numberValue) return '';
|
12
|
-
if (!isCurrency) return numberValue;
|
13
|
-
return Math.abs(numberValue);
|
14
|
-
}, [numberValue, isCurrency]);
|
15
|
-
};
|
16
|
-
export default useHiddenNumberFieldValue;
|
@@ -1,32 +0,0 @@
|
|
1
|
-
import { renderHook } from '@testing-library/react-hooks';
|
2
|
-
import useHiddenNumberFieldValue from './useHiddenNumberFieldValue';
|
3
|
-
test('When number is not currency, negative values return negative values', function () {
|
4
|
-
var _renderHook = renderHook(function () {
|
5
|
-
return useHiddenNumberFieldValue({
|
6
|
-
isCurrency: false,
|
7
|
-
numberValue: -1
|
8
|
-
});
|
9
|
-
}),
|
10
|
-
result = _renderHook.result;
|
11
|
-
expect(result.current).toBe(-1);
|
12
|
-
});
|
13
|
-
test('When number is currency, it always returns the absolute value', function () {
|
14
|
-
var _renderHook2 = renderHook(function () {
|
15
|
-
return useHiddenNumberFieldValue({
|
16
|
-
isCurrency: true,
|
17
|
-
numberValue: -1
|
18
|
-
});
|
19
|
-
}),
|
20
|
-
result = _renderHook2.result;
|
21
|
-
expect(result.current).toBe(1);
|
22
|
-
});
|
23
|
-
test('When number is not currency, positive values return positive numbers', function () {
|
24
|
-
var _renderHook3 = renderHook(function () {
|
25
|
-
return useHiddenNumberFieldValue({
|
26
|
-
isCurrency: false,
|
27
|
-
numberValue: 2
|
28
|
-
});
|
29
|
-
}),
|
30
|
-
result = _renderHook3.result;
|
31
|
-
expect(result.current).toBe(2);
|
32
|
-
});
|