@decisiv/ui-components 2.0.1-alpha.74 → 2.0.1-alpha.83
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/atoms/InputField/Containers.d.ts +6 -2
- package/lib/atoms/InputField/Containers.d.ts.map +1 -1
- package/lib/atoms/InputField/Containers.js +5 -5
- package/lib/atoms/InputField/InputLabel.d.ts +1 -0
- package/lib/atoms/InputField/InputLabel.d.ts.map +1 -1
- package/lib/atoms/InputField/InputLabel.js +2 -1
- package/lib/atoms/InputField/index.d.ts +2 -0
- package/lib/atoms/InputField/index.d.ts.map +1 -1
- package/lib/atoms/InputField/index.js +14 -4
- package/lib/atoms/InputField/schema.d.ts.map +1 -1
- package/lib/atoms/InputField/schema.js +1 -0
- package/lib/components/Combobox/Target.d.ts.map +1 -1
- package/lib/components/Combobox/Target.js +3 -4
- package/lib/components/Combobox/index.test.js +122 -98
- package/lib/components/Filter/IconWrapper/index.d.ts +197 -0
- package/lib/components/Filter/IconWrapper/index.d.ts.map +1 -0
- package/lib/components/Filter/IconWrapper/index.js +35 -0
- package/lib/components/Filter/SimplePrimary/index.d.ts +31 -0
- package/lib/components/Filter/SimplePrimary/index.d.ts.map +1 -0
- package/lib/components/Filter/SimplePrimary/index.js +58 -0
- package/lib/components/Filter/SimplePrimary/index.test.js +34 -0
- package/lib/components/Filter/StyledFilter.d.ts +4 -0
- package/lib/components/Filter/StyledFilter.d.ts.map +1 -0
- package/lib/components/Filter/StyledFilter.js +39 -0
- package/lib/components/Filter/StyledLabel/index.d.ts +8 -0
- package/lib/components/Filter/StyledLabel/index.d.ts.map +1 -0
- package/lib/components/Filter/StyledLabel/index.js +30 -0
- package/lib/components/Filter/index.d.ts +27 -0
- package/lib/components/Filter/index.d.ts.map +1 -0
- package/lib/components/Filter/index.js +95 -0
- package/lib/components/Filter/index.test.js +41 -0
- package/lib/components/Filter/kind.d.ts +6 -0
- package/lib/components/Filter/kind.d.ts.map +1 -0
- package/lib/components/Filter/kind.js +45 -0
- package/lib/components/Filter/schema.d.ts +9 -0
- package/lib/components/Filter/schema.d.ts.map +1 -0
- package/lib/components/Filter/schema.js +32 -0
- package/lib/components/Filter/types.d.ts +17 -0
- package/lib/components/Filter/types.d.ts.map +1 -0
- package/lib/components/Filter/types.js +1 -0
- package/lib/components/Select/Target.js +1 -1
- package/lib/components/Select/index.d.ts.map +1 -1
- package/lib/components/Select/index.js +17 -0
- package/lib/components/Select/index.test.js +82 -23
- package/lib/components/Select/schema.d.ts.map +1 -1
- package/lib/components/Select/schema.js +2 -0
- package/lib/components/Select/types.d.ts +2 -0
- package/lib/components/Select/types.d.ts.map +1 -1
- package/lib/components/SelectDate/Target.js +1 -1
- package/lib/components/SelectDate/index.d.ts.map +1 -1
- package/lib/components/SelectDate/index.js +17 -0
- package/lib/components/SelectDate/index.test.js +108 -51
- package/lib/components/SelectDate/schema.d.ts.map +1 -1
- package/lib/components/SelectDate/schema.js +2 -0
- package/lib/components/SelectDate/types.d.ts +2 -0
- package/lib/components/SelectDate/types.d.ts.map +1 -1
- package/lib/components/SelectDateRange/index.d.ts.map +1 -1
- package/lib/components/SelectDateRange/index.js +17 -0
- package/lib/components/SelectDateRange/index.test.js +115 -58
- package/lib/components/SelectDateRange/schema.d.ts.map +1 -1
- package/lib/components/SelectDateRange/schema.js +2 -0
- package/lib/components/TextArea/index.js +1 -0
- package/lib/components/TextArea/index.test.js +5 -0
- package/lib/components/TextField/Input.js +1 -1
- package/lib/components/TextField/index.test.js +5 -0
- package/lib/components/index.d.ts +1 -0
- package/lib/components/index.d.ts.map +1 -1
- package/lib/components/index.js +9 -0
- package/lib/utils/useFirstMount.d.ts +2 -0
- package/lib/utils/useFirstMount.d.ts.map +1 -0
- package/lib/utils/useFirstMount.js +19 -0
- package/lib/utils/useUpdateEffect.d.ts +4 -0
- package/lib/utils/useUpdateEffect.d.ts.map +1 -0
- package/lib/utils/useUpdateEffect.js +28 -0
- package/package.json +2 -2
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = exports.hoverStyles = void 0;
|
|
7
|
+
|
|
8
|
+
var _styledTheming = _interopRequireDefault(require("styled-theming"));
|
|
9
|
+
|
|
10
|
+
var _rem = _interopRequireDefault(require("polished/lib/helpers/rem"));
|
|
11
|
+
|
|
12
|
+
var _styledComponents = require("styled-components");
|
|
13
|
+
|
|
14
|
+
var _toColorString = _interopRequireDefault(require("polished/lib/color/toColorString"));
|
|
15
|
+
|
|
16
|
+
var _color = _interopRequireDefault(require("@decisiv/design-tokens/lib/color"));
|
|
17
|
+
|
|
18
|
+
var _ConfigProvider = require("../../providers/ConfigProvider");
|
|
19
|
+
|
|
20
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
21
|
+
|
|
22
|
+
var hoverStyles = (0, _styledComponents.css)(["color:", ";background-color:", ";border:", " solid ", ";svg{color:", ";}"], (0, _toColorString.default)(_color.default.base.snowWhite), (0, _toColorString.default)(_color.default.interaction.indianOcean), (0, _rem.default)(1), (0, _toColorString.default)(_color.default.interaction.indianOcean), (0, _toColorString.default)(_color.default.base.snowWhite));
|
|
23
|
+
exports.hoverStyles = hoverStyles;
|
|
24
|
+
var primaryStyle = (0, _styledComponents.css)(["border:", " solid ", ";&:hover{", ";}"], (0, _rem.default)(1), (0, _toColorString.default)(_color.default.base.quarterMoon), hoverStyles);
|
|
25
|
+
// light and dark are the same ATM.
|
|
26
|
+
var lightStyles = {
|
|
27
|
+
primary: primaryStyle
|
|
28
|
+
};
|
|
29
|
+
var darkStyles = {
|
|
30
|
+
primary: primaryStyle
|
|
31
|
+
};
|
|
32
|
+
var kindStyles = (0, _styledTheming.default)(_ConfigProvider.themeKeys.mode, {
|
|
33
|
+
light: function light(_ref) {
|
|
34
|
+
var _ref$kind = _ref.kind,
|
|
35
|
+
kind = _ref$kind === void 0 ? 'primary' : _ref$kind;
|
|
36
|
+
return lightStyles[kind];
|
|
37
|
+
},
|
|
38
|
+
dark: function dark(_ref2) {
|
|
39
|
+
var _ref2$kind = _ref2.kind,
|
|
40
|
+
kind = _ref2$kind === void 0 ? 'primary' : _ref2$kind;
|
|
41
|
+
return darkStyles[kind];
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
var _default = kindStyles;
|
|
45
|
+
exports.default = _default;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Validator } from 'prop-types';
|
|
2
|
+
export declare const makeFilterSchemaPropTypes: (extensions?: {
|
|
3
|
+
[x: string]: Validator<unknown>;
|
|
4
|
+
} | undefined) => {
|
|
5
|
+
[x: string]: Validator<unknown>;
|
|
6
|
+
};
|
|
7
|
+
declare const schema: any;
|
|
8
|
+
export default schema;
|
|
9
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/components/Filter/schema.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,eAAO,MAAM,yBAAyB;;;;CAsBpC,CAAC;AAEH,QAAA,MAAM,MAAM,KAAsC,CAAC;AAInD,eAAe,MAAM,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = exports.makeFilterSchemaPropTypes = void 0;
|
|
7
|
+
|
|
8
|
+
var _reactDesc = require("react-desc");
|
|
9
|
+
|
|
10
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { keys.push.apply(keys, Object.getOwnPropertySymbols(object)); } if (enumerableOnly) keys = keys.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); return keys; }
|
|
11
|
+
|
|
12
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
13
|
+
|
|
14
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
15
|
+
|
|
16
|
+
var makeFilterSchemaPropTypes = function makeFilterSchemaPropTypes(extensions) {
|
|
17
|
+
return _objectSpread({
|
|
18
|
+
text: _reactDesc.PropTypes.string.description("The Filter's text"),
|
|
19
|
+
active: _reactDesc.PropTypes.bool.description("The Filter's active status. Use when you want to control the Filter with onClick.").defaultValue('false'),
|
|
20
|
+
badgeIcon: _reactDesc.PropTypes.element.description('Which `iconix` icon to render'),
|
|
21
|
+
badgeColor: _reactDesc.PropTypes.string.description('Which color to use as background for the icon. It always displays when an icon is provided.').defaultValue('information'),
|
|
22
|
+
count: _reactDesc.PropTypes.number.description("The Filter's count, displayed to the left of the text. When not provided, no count is rendered.")
|
|
23
|
+
}, extensions);
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
exports.makeFilterSchemaPropTypes = makeFilterSchemaPropTypes;
|
|
27
|
+
var schema = (0, _reactDesc.describe)({
|
|
28
|
+
displayName: 'Filter'
|
|
29
|
+
});
|
|
30
|
+
schema.propTypes = makeFilterSchemaPropTypes();
|
|
31
|
+
var _default = schema;
|
|
32
|
+
exports.default = _default;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ButtonHTMLAttributes } from 'react';
|
|
2
|
+
import { IconProps } from '@decisiv/iconix';
|
|
3
|
+
import { CommonUIColorKeys } from '../../utils/commonUIColors';
|
|
4
|
+
import { TranslatedText } from '../../utils/useTranslations';
|
|
5
|
+
export declare type Variant = 'simple';
|
|
6
|
+
export declare type Kind = 'primary';
|
|
7
|
+
export declare type IconComponent = (props: IconProps) => JSX.Element;
|
|
8
|
+
export interface FilterProps extends ButtonHTMLAttributes<HTMLButtonElement> {
|
|
9
|
+
active?: boolean;
|
|
10
|
+
count?: number;
|
|
11
|
+
badgeIcon?: IconComponent;
|
|
12
|
+
badgeColor?: CommonUIColorKeys;
|
|
13
|
+
kind?: Kind;
|
|
14
|
+
text: TranslatedText;
|
|
15
|
+
variant?: Variant;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/Filter/types.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D,oBAAY,OAAO,GAAG,QAAQ,CAAC;AAC/B,oBAAY,IAAI,GAAG,SAAS,CAAC;AAC7B,oBAAY,aAAa,GAAG,CAAC,KAAK,EAAE,SAAS,KAAK,GAAG,CAAC,OAAO,CAAC;AAE9D,MAAM,WAAW,WAAY,SAAQ,oBAAoB,CAAC,iBAAiB,CAAC;IAC1E,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,IAAI,EAAE,cAAc,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";
|
|
@@ -48,7 +48,7 @@ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) r
|
|
|
48
48
|
var TargetContainer = _styledComponents.default.div.withConfig({
|
|
49
49
|
displayName: "Target__TargetContainer",
|
|
50
50
|
componentId: "sc-1t0verh-0"
|
|
51
|
-
})(["align-items:center;display:flex;justify-content:space-between;position:relative;top:-
|
|
51
|
+
})(["align-items:center;display:flex;justify-content:space-between;position:relative;top:-2px;width:100%;"]);
|
|
52
52
|
|
|
53
53
|
var TargetButton = (0, _styledComponents.default)(_BaseButton.default).withConfig({
|
|
54
54
|
displayName: "Target__TargetButton",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Select/index.tsx"],"names":[],"mappings":"AAGA,OAAc,EAEZ,sBAAsB,EAMvB,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Select/index.tsx"],"names":[],"mappings":"AAGA,OAAc,EAEZ,sBAAsB,EAMvB,MAAM,OAAO,CAAC;AAoBf,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAyPjD,QAAA,MAAM,aAAa,EAAE,sBAAsB,CACzC,SAAS,EACT,WAAW,CACS,CAAC;AAgCvB,eAAe,aAAa,CAAC"}
|
|
@@ -27,6 +27,8 @@ var _useClickOutside = _interopRequireDefault(require("../../utils/useClickOutsi
|
|
|
27
27
|
|
|
28
28
|
var _useUniqueId = _interopRequireDefault(require("../../utils/useUniqueId"));
|
|
29
29
|
|
|
30
|
+
var _useUpdateEffect = _interopRequireDefault(require("../../utils/useUpdateEffect"));
|
|
31
|
+
|
|
30
32
|
var _DropdownList = _interopRequireDefault(require("../DropdownList"));
|
|
31
33
|
|
|
32
34
|
var _Button = require("../Button");
|
|
@@ -77,7 +79,9 @@ function Select(props, ref) {
|
|
|
77
79
|
name = props.name,
|
|
78
80
|
onChange = props.onChange,
|
|
79
81
|
onClick = props.onClick,
|
|
82
|
+
onHide = props.onHide,
|
|
80
83
|
onKeyDown = props.onKeyDown,
|
|
84
|
+
onShow = props.onShow,
|
|
81
85
|
options = props.options,
|
|
82
86
|
renderOptionLabel = props.renderOptionLabel,
|
|
83
87
|
propValue = props.value,
|
|
@@ -203,6 +207,19 @@ function Select(props, ref) {
|
|
|
203
207
|
}, [isPopoverVisible]);
|
|
204
208
|
(0, _useClickOutside.default)([listRef], handleClickOutsideList);
|
|
205
209
|
var inputContainerRefs = (0, _compact.default)([inputContainerRef, popoverTargetRef]);
|
|
210
|
+
/**
|
|
211
|
+
* Triggers onShow/onHide callbacks representing wether the Popover is open or not.
|
|
212
|
+
*/
|
|
213
|
+
|
|
214
|
+
(0, _useUpdateEffect.default)(function () {
|
|
215
|
+
if (isPopoverVisible) {
|
|
216
|
+
onShow && onShow();
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
if (!isPopoverVisible) {
|
|
220
|
+
onHide && onHide();
|
|
221
|
+
}
|
|
222
|
+
}, [isPopoverVisible, onHide, onShow]);
|
|
206
223
|
return _react.default.createElement(_react.default.Fragment, null, _react.default.createElement(_InputField.default, _extends({}, props, {
|
|
207
224
|
"aria-live": "assertive",
|
|
208
225
|
cursor: "default",
|
|
@@ -111,16 +111,53 @@ describe('Select', function () {
|
|
|
111
111
|
expect(getByText(defaultProps.label)).toBeTruthy();
|
|
112
112
|
expect((0, _react2.queryByText)(baseElement, opt0.label)).toBeTruthy();
|
|
113
113
|
});
|
|
114
|
+
it('triggers onShow callback', function () {
|
|
115
|
+
var onShow = jest.fn();
|
|
116
|
+
|
|
117
|
+
var _render2 = render(_react.default.createElement(_.default, _extends({}, defaultProps, {
|
|
118
|
+
onShow: onShow
|
|
119
|
+
}))),
|
|
120
|
+
queryByText = _render2.queryByText;
|
|
121
|
+
|
|
122
|
+
expect(onShow).not.toHaveBeenCalled();
|
|
123
|
+
var label = queryByText(defaultProps.label);
|
|
124
|
+
|
|
125
|
+
_react2.fireEvent.click(label);
|
|
126
|
+
|
|
127
|
+
expect(onShow).toHaveBeenCalled();
|
|
128
|
+
});
|
|
129
|
+
it('triggers onHide callback', function () {
|
|
130
|
+
var onHide = jest.fn();
|
|
131
|
+
|
|
132
|
+
var _render3 = render(_react.default.createElement(_.default, _extends({}, defaultProps, {
|
|
133
|
+
onHide: onHide
|
|
134
|
+
}))),
|
|
135
|
+
queryByText = _render3.queryByText;
|
|
136
|
+
|
|
137
|
+
expect(onHide).not.toHaveBeenCalled();
|
|
138
|
+
var label = queryByText(defaultProps.label);
|
|
139
|
+
|
|
140
|
+
_react2.fireEvent.click(label);
|
|
141
|
+
|
|
142
|
+
_react2.fireEvent.keyDown(label, {
|
|
143
|
+
key: 'Escape',
|
|
144
|
+
code: 'Escape',
|
|
145
|
+
keyCode: 27,
|
|
146
|
+
charCode: 27
|
|
147
|
+
});
|
|
148
|
+
|
|
149
|
+
expect(onHide).toHaveBeenCalled();
|
|
150
|
+
});
|
|
114
151
|
});
|
|
115
152
|
describe('clicking an option', function () {
|
|
116
153
|
it('calls the onchange handler with the new value', function () {
|
|
117
154
|
var onChange = jest.fn();
|
|
118
155
|
|
|
119
|
-
var
|
|
156
|
+
var _render4 = render(_react.default.createElement(_.default, _extends({}, defaultProps, {
|
|
120
157
|
onChange: onChange
|
|
121
158
|
}))),
|
|
122
|
-
baseElement =
|
|
123
|
-
getByText =
|
|
159
|
+
baseElement = _render4.baseElement,
|
|
160
|
+
getByText = _render4.getByText;
|
|
124
161
|
|
|
125
162
|
_react2.fireEvent.click(getByText(defaultProps.label));
|
|
126
163
|
|
|
@@ -129,9 +166,9 @@ describe('Select', function () {
|
|
|
129
166
|
expect(onChange).toHaveBeenCalledWith(cat0Opt0.id);
|
|
130
167
|
});
|
|
131
168
|
it('automatically updates the option label inside the input field', function () {
|
|
132
|
-
var
|
|
133
|
-
baseElement =
|
|
134
|
-
getByText =
|
|
169
|
+
var _render5 = render(_react.default.createElement(_.default, defaultProps)),
|
|
170
|
+
baseElement = _render5.baseElement,
|
|
171
|
+
getByText = _render5.getByText;
|
|
135
172
|
|
|
136
173
|
_react2.fireEvent.click(getByText(defaultProps.label));
|
|
137
174
|
|
|
@@ -143,10 +180,10 @@ describe('Select', function () {
|
|
|
143
180
|
});
|
|
144
181
|
describe('with a default value', function () {
|
|
145
182
|
it('displays the option label matching the defaultValue inside the input field', function () {
|
|
146
|
-
var
|
|
183
|
+
var _render6 = render(_react.default.createElement(_.default, _extends({}, defaultProps, {
|
|
147
184
|
defaultValue: cat0Opt0.id
|
|
148
185
|
}))),
|
|
149
|
-
getByText =
|
|
186
|
+
getByText = _render6.getByText;
|
|
150
187
|
|
|
151
188
|
expect(getByText(cat0Opt0.label)).toBeTruthy();
|
|
152
189
|
});
|
|
@@ -154,12 +191,12 @@ describe('Select', function () {
|
|
|
154
191
|
it('calls the onchange handler with the new value', function () {
|
|
155
192
|
var onChange = jest.fn();
|
|
156
193
|
|
|
157
|
-
var
|
|
194
|
+
var _render7 = render(_react.default.createElement(_.default, _extends({}, defaultProps, {
|
|
158
195
|
onChange: onChange,
|
|
159
196
|
defaultValue: opt1.id
|
|
160
197
|
}))),
|
|
161
|
-
baseElement =
|
|
162
|
-
getByText =
|
|
198
|
+
baseElement = _render7.baseElement,
|
|
199
|
+
getByText = _render7.getByText;
|
|
163
200
|
|
|
164
201
|
_react2.fireEvent.click(getByText(defaultProps.label));
|
|
165
202
|
|
|
@@ -168,11 +205,11 @@ describe('Select', function () {
|
|
|
168
205
|
expect(onChange).toHaveBeenCalledWith(cat0Opt0.id);
|
|
169
206
|
});
|
|
170
207
|
it('automatically updates the option label inside the input field', function () {
|
|
171
|
-
var
|
|
208
|
+
var _render8 = render(_react.default.createElement(_.default, _extends({}, defaultProps, {
|
|
172
209
|
defaultValue: opt1.id
|
|
173
210
|
}))),
|
|
174
|
-
baseElement =
|
|
175
|
-
getByText =
|
|
211
|
+
baseElement = _render8.baseElement,
|
|
212
|
+
getByText = _render8.getByText;
|
|
176
213
|
|
|
177
214
|
_react2.fireEvent.click(getByText(defaultProps.label));
|
|
178
215
|
|
|
@@ -183,12 +220,34 @@ describe('Select', function () {
|
|
|
183
220
|
});
|
|
184
221
|
});
|
|
185
222
|
});
|
|
223
|
+
describe('when label hidden', function () {
|
|
224
|
+
it('does not display the label element', function () {
|
|
225
|
+
var _render9 = render(_react.default.createElement(_.default, _extends({}, defaultProps, {
|
|
226
|
+
defaultvalue: opt1.id,
|
|
227
|
+
hideLabel: true
|
|
228
|
+
}))),
|
|
229
|
+
getByText = _render9.getByText;
|
|
230
|
+
|
|
231
|
+
expect(getByText(defaultProps.label, {
|
|
232
|
+
selector: 'span'
|
|
233
|
+
})).not.toBeVisible();
|
|
234
|
+
});
|
|
235
|
+
it('does display the input related to the label', function () {
|
|
236
|
+
var _render10 = render(_react.default.createElement(_.default, _extends({}, defaultProps, {
|
|
237
|
+
defaultValue: opt1.id,
|
|
238
|
+
hideLabel: true
|
|
239
|
+
}))),
|
|
240
|
+
getByLabelText = _render10.getByLabelText;
|
|
241
|
+
|
|
242
|
+
expect(getByLabelText(defaultProps.label)).toBeVisible();
|
|
243
|
+
});
|
|
244
|
+
});
|
|
186
245
|
describe('when component is controlled', function () {
|
|
187
246
|
it('displays the option label matching the value inside the input field', function () {
|
|
188
|
-
var
|
|
247
|
+
var _render11 = render(_react.default.createElement(_.default, _extends({}, defaultProps, {
|
|
189
248
|
value: cat0Opt0.id
|
|
190
249
|
}))),
|
|
191
|
-
getByText =
|
|
250
|
+
getByText = _render11.getByText;
|
|
192
251
|
|
|
193
252
|
expect(getByText(cat0Opt0.label)).toBeTruthy();
|
|
194
253
|
});
|
|
@@ -196,12 +255,12 @@ describe('Select', function () {
|
|
|
196
255
|
it('calls the onchange handler with the new value', function () {
|
|
197
256
|
var onChange = jest.fn();
|
|
198
257
|
|
|
199
|
-
var
|
|
258
|
+
var _render12 = render(_react.default.createElement(_.default, _extends({}, defaultProps, {
|
|
200
259
|
onChange: onChange,
|
|
201
260
|
value: opt1.id
|
|
202
261
|
}))),
|
|
203
|
-
baseElement =
|
|
204
|
-
getByText =
|
|
262
|
+
baseElement = _render12.baseElement,
|
|
263
|
+
getByText = _render12.getByText;
|
|
205
264
|
|
|
206
265
|
_react2.fireEvent.click(getByText(defaultProps.label));
|
|
207
266
|
|
|
@@ -210,12 +269,12 @@ describe('Select', function () {
|
|
|
210
269
|
expect(onChange).toHaveBeenCalledWith(cat0Opt0.id);
|
|
211
270
|
});
|
|
212
271
|
it('does NOT automatically update the option label inside the input field', function () {
|
|
213
|
-
var
|
|
272
|
+
var _render13 = render(_react.default.createElement(_.default, _extends({}, defaultProps, {
|
|
214
273
|
value: opt1.id
|
|
215
274
|
}))),
|
|
216
|
-
baseElement =
|
|
217
|
-
getByText =
|
|
218
|
-
queryByText =
|
|
275
|
+
baseElement = _render13.baseElement,
|
|
276
|
+
getByText = _render13.getByText,
|
|
277
|
+
queryByText = _render13.queryByText;
|
|
219
278
|
|
|
220
279
|
_react2.fireEvent.click(getByText(defaultProps.label));
|
|
221
280
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/components/Select/schema.ts"],"names":[],"mappings":"AAOA,QAAA,MAAM,MAAM,KAAsC,CAAC;
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/components/Select/schema.ts"],"names":[],"mappings":"AAOA,QAAA,MAAM,MAAM,KAAsC,CAAC;AA8DnD,eAAe,MAAM,CAAC"}
|
|
@@ -30,6 +30,8 @@ schema.propTypes = _objectSpread({}, (0, _omit.default)(_InputField.schema.makeP
|
|
|
30
30
|
right: _reactDesc.PropTypes.arrayOf(_reactDesc.PropTypes.object)
|
|
31
31
|
})]).description('A collection of objects, each containing a subset of props valid for a Button component. Check the notes on the OptionsList.'),
|
|
32
32
|
onChange: _reactDesc.PropTypes.func.description(''),
|
|
33
|
+
onHide: _reactDesc.PropTypes.func.description('A callback which is triggered when the popover is closed'),
|
|
34
|
+
onShow: _reactDesc.PropTypes.func.description('A callback which is triggered when the popover is opened'),
|
|
33
35
|
options: _reactDesc.PropTypes.arrayOf(_reactDesc.PropTypes.shape({
|
|
34
36
|
decoration: _reactDesc.PropTypes.shape({
|
|
35
37
|
type: _reactDesc.PropTypes.oneOf(['Avatar', 'Badge'])
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/Select/types.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,oBAAoB,EACpB,iBAAiB,EAClB,MAAM,OAAO,CAAC;AAEf,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,oBAAY,SAAS,GAAG,iBAAiB,CAAC;AAE1C,UAAU,eACR,SAAQ,oBAAoB,CAAC,SAAS,CAAC,EACrC,IAAI,CACF,mBAAmB,EACnB,UAAU,GAAG,WAAW,GAAG,UAAU,GAAG,oBAAoB,GAAG,OAAO,CACvE,EACD,IAAI,CAAC,gBAAgB,EAAE,SAAS,GAAG,mBAAmB,CAAC;IACzD,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,SAAS,CAAC,EAAE,oBAAoB,CAAC;CAClC;AAED,oBAAY,WAAW,GAAG,eAAe,GAAG;IAC1C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,OAAO,EAAE,KAAK,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;CACjC,CAAC;AAEF,MAAM,WAAW,WACf,SAAQ,oBAAoB,CAAC,SAAS,CAAC,EACrC,IAAI,CACF,mBAAmB,EACnB,UAAU,GAAG,IAAI,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,KAAK,GAAG,OAAO,CACxE;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,MAAM,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IACtC,OAAO,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAC3C,OAAO,EAAE,mBAAmB,CAAC,SAAS,CAAC,CAAC;CACzC"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/Select/types.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,oBAAoB,EACpB,iBAAiB,EAClB,MAAM,OAAO,CAAC;AAEf,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,oBAAY,SAAS,GAAG,iBAAiB,CAAC;AAE1C,UAAU,eACR,SAAQ,oBAAoB,CAAC,SAAS,CAAC,EACrC,IAAI,CACF,mBAAmB,EACnB,UAAU,GAAG,WAAW,GAAG,UAAU,GAAG,oBAAoB,GAAG,OAAO,CACvE,EACD,IAAI,CAAC,gBAAgB,EAAE,SAAS,GAAG,mBAAmB,CAAC;IACzD,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,SAAS,CAAC,EAAE,oBAAoB,CAAC;CAClC;AAED,oBAAY,WAAW,GAAG,eAAe,GAAG;IAC1C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,EAAE,KAAK,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;CACjC,CAAC;AAEF,MAAM,WAAW,WACf,SAAQ,oBAAoB,CAAC,SAAS,CAAC,EACrC,IAAI,CACF,mBAAmB,EACnB,UAAU,GAAG,IAAI,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,KAAK,GAAG,OAAO,CACxE;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,MAAM,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IACtC,OAAO,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAC3C,OAAO,EAAE,mBAAmB,CAAC,SAAS,CAAC,CAAC;CACzC"}
|
|
@@ -48,7 +48,7 @@ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) r
|
|
|
48
48
|
var TargetContainer = _styledComponents.default.div.withConfig({
|
|
49
49
|
displayName: "Target__TargetContainer",
|
|
50
50
|
componentId: "ks9oxf-0"
|
|
51
|
-
})(["align-items:center;display:flex;justify-content:space-between;position:relative;top:-
|
|
51
|
+
})(["align-items:center;display:flex;justify-content:space-between;position:relative;top:-2px;width:100%;"]);
|
|
52
52
|
|
|
53
53
|
var TargetButton = (0, _styledComponents.default)(_BaseButton.default).withConfig({
|
|
54
54
|
displayName: "Target__TargetButton",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/SelectDate/index.tsx"],"names":[],"mappings":"AAIA,OAAc,EAEZ,sBAAsB,EAMvB,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/SelectDate/index.tsx"],"names":[],"mappings":"AAIA,OAAc,EAEZ,sBAAsB,EAMvB,MAAM,OAAO,CAAC;AAsBf,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAQ,MAAM,SAAS,CAAC;AAIjE,OAAO,EACL,SAAS,EACT,oBAAoB,GACrB,MAAM,gCAAgC,CAAC;AAiQxC,QAAA,MAAM,iBAAiB,EAAE,sBAAsB,CAC7C,cAAc,EACd,gBAAgB,CACQ,CAAC;AAK3B,eAAe,iBAAiB,CAAC"}
|
|
@@ -41,6 +41,8 @@ var _useTranslations = _interopRequireDefault(require("../../utils/useTranslatio
|
|
|
41
41
|
|
|
42
42
|
var _useUniqueId = _interopRequireDefault(require("../../utils/useUniqueId"));
|
|
43
43
|
|
|
44
|
+
var _useUpdateEffect = _interopRequireDefault(require("../../utils/useUpdateEffect"));
|
|
45
|
+
|
|
44
46
|
var _Calendar = _interopRequireWildcard(require("../../atoms/Calendar"));
|
|
45
47
|
|
|
46
48
|
var _InputField = _interopRequireDefault(require("../../atoms/InputField"));
|
|
@@ -90,6 +92,8 @@ function SelectDate(props, ref) {
|
|
|
90
92
|
onChange = props.onChange,
|
|
91
93
|
onClick = props.onClick,
|
|
92
94
|
onKeyDown = props.onKeyDown,
|
|
95
|
+
onShow = props.onShow,
|
|
96
|
+
onHide = props.onHide,
|
|
93
97
|
propValue = props.value,
|
|
94
98
|
disabledDateRules = props.disabledDateRules,
|
|
95
99
|
zIndex = props.zIndex;
|
|
@@ -214,6 +218,19 @@ function SelectDate(props, ref) {
|
|
|
214
218
|
}, [isPopoverVisible]);
|
|
215
219
|
(0, _useClickOutside.default)([popoverContentRef], handleClickOutsidePopover);
|
|
216
220
|
var inputContainerRefs = (0, _compact.default)([inputContainerRef, popoverTargetRef]);
|
|
221
|
+
/**
|
|
222
|
+
* Triggers onShow/onHide callbacks representing wether the Popover is open or not.
|
|
223
|
+
*/
|
|
224
|
+
|
|
225
|
+
(0, _useUpdateEffect.default)(function () {
|
|
226
|
+
if (isPopoverVisible) {
|
|
227
|
+
onShow && onShow();
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
if (!isPopoverVisible) {
|
|
231
|
+
onHide && onHide();
|
|
232
|
+
}
|
|
233
|
+
}, [isPopoverVisible, onShow, onHide]);
|
|
217
234
|
return _react.default.createElement(_InputField.default, _extends({}, (0, _omit.default)(props, ['onChange']), {
|
|
218
235
|
"aria-live": "assertive",
|
|
219
236
|
cursor: "default",
|