@pingux/astro 1.3.1 → 1.3.2-alpha.2
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/FieldHelperText/FieldHelperText.js +0 -1
- package/lib/cjs/components/MultivaluesField/MultivaluesField.js +10 -8
- package/lib/cjs/components/MultivaluesField/MultivaluesField.test.js +74 -0
- package/lib/cjs/components/SelectFieldBase/SelectFieldBase.js +2 -1
- package/lib/cjs/components/SelectFieldBase/SelectFieldBase.test.js +16 -0
- package/lib/cjs/hooks/useSelectField/useSelectField.js +3 -0
- package/lib/cjs/styles/variants/text.js +0 -1
- package/lib/components/FieldHelperText/FieldHelperText.js +0 -1
- package/lib/components/MultivaluesField/MultivaluesField.js +10 -7
- package/lib/components/MultivaluesField/MultivaluesField.test.js +52 -0
- package/lib/components/SelectFieldBase/SelectFieldBase.js +2 -1
- package/lib/components/SelectFieldBase/SelectFieldBase.test.js +11 -0
- package/lib/hooks/useSelectField/useSelectField.js +2 -0
- package/lib/styles/variants/text.js +0 -1
- package/package.json +1 -1
@@ -60,8 +60,6 @@ var _overlays = require("@react-aria/overlays");
|
|
60
60
|
|
61
61
|
var _utils = require("@react-aria/utils");
|
62
62
|
|
63
|
-
var _uuid = require("uuid");
|
64
|
-
|
65
63
|
var _ = require("../..");
|
66
64
|
|
67
65
|
var _ListBox = _interopRequireDefault(require("../ListBox"));
|
@@ -262,13 +260,17 @@ var MultivaluesField = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref)
|
|
262
260
|
} else if (hasCustomValue) {
|
263
261
|
var _context3;
|
264
262
|
|
265
|
-
var
|
266
|
-
|
267
|
-
selectionManager.
|
263
|
+
var _key2 = e.target.value;
|
264
|
+
|
265
|
+
if (state.selectionManager.isSelected(_key2)) {
|
266
|
+
return;
|
267
|
+
}
|
268
|
+
|
269
|
+
selectionManager.toggleSelection(_key2);
|
268
270
|
setCustomItems((0, _concat["default"])(_context3 = []).call(_context3, customItems, [{
|
269
|
-
id:
|
270
|
-
key:
|
271
|
-
name:
|
271
|
+
id: _key2,
|
272
|
+
key: _key2,
|
273
|
+
name: _key2
|
272
274
|
}]));
|
273
275
|
setFilterString('');
|
274
276
|
}
|
@@ -276,6 +276,80 @@ test('changing the input value and hitting enter creates new value in non-restri
|
|
276
276
|
var chipContainer = chip.parentElement;
|
277
277
|
expect(chipContainer).toHaveAttribute('role', 'presentation');
|
278
278
|
});
|
279
|
+
test('in non-restrictive mode "onSelectionChange" returns entered keys', function () {
|
280
|
+
var onSelectionChange = jest.fn();
|
281
|
+
getComponent({
|
282
|
+
mode: 'non-restrictive',
|
283
|
+
onSelectionChange: onSelectionChange
|
284
|
+
});
|
285
|
+
|
286
|
+
var input = _testWrapper.screen.getByRole('combobox');
|
287
|
+
|
288
|
+
var value = 'custom';
|
289
|
+
|
290
|
+
_userEvent["default"].type(input, value);
|
291
|
+
|
292
|
+
_userEvent["default"].type(input, '{enter}');
|
293
|
+
|
294
|
+
var chip = _testWrapper.screen.queryByText(value);
|
295
|
+
|
296
|
+
expect(chip).toBeInTheDocument();
|
297
|
+
expect(onSelectionChange).toBeCalledTimes(1);
|
298
|
+
expect(onSelectionChange.mock.calls[0][0].has(value)).toBeTruthy();
|
299
|
+
});
|
300
|
+
test('in non-restrictive mode the same value cannot be applied twice', function () {
|
301
|
+
var onSelectionChange = jest.fn();
|
302
|
+
getComponent({
|
303
|
+
mode: 'non-restrictive',
|
304
|
+
onSelectionChange: onSelectionChange
|
305
|
+
});
|
306
|
+
|
307
|
+
var input = _testWrapper.screen.getByRole('combobox');
|
308
|
+
|
309
|
+
var value = 'custom';
|
310
|
+
|
311
|
+
_userEvent["default"].type(input, value);
|
312
|
+
|
313
|
+
_userEvent["default"].type(input, '{enter}');
|
314
|
+
|
315
|
+
var chip = _testWrapper.screen.queryByText(value);
|
316
|
+
|
317
|
+
expect(chip).toBeInTheDocument();
|
318
|
+
expect(input).toHaveValue('');
|
319
|
+
|
320
|
+
_userEvent["default"].type(input, value);
|
321
|
+
|
322
|
+
_userEvent["default"].type(input, '{enter}');
|
323
|
+
|
324
|
+
expect(input).toHaveValue(value);
|
325
|
+
expect(onSelectionChange).toBeCalledTimes(1);
|
326
|
+
});
|
327
|
+
test('in non-restrictive mode the value that was already selected using the list cannot be applied', function () {
|
328
|
+
var onSelectionChange = jest.fn();
|
329
|
+
getComponent({
|
330
|
+
mode: 'non-restrictive',
|
331
|
+
onSelectionChange: onSelectionChange
|
332
|
+
});
|
333
|
+
|
334
|
+
var input = _testWrapper.screen.getByRole('combobox');
|
335
|
+
|
336
|
+
input.focus();
|
337
|
+
|
338
|
+
var listbox = _testWrapper.screen.getByRole('listbox');
|
339
|
+
|
340
|
+
var options = (0, _testWrapper.within)(listbox).getAllByRole('option');
|
341
|
+
var firstOption = options[0];
|
342
|
+
firstOption.click();
|
343
|
+
expect(onSelectionChange.mock.calls[0][0].has(items[0].name)).toBeTruthy();
|
344
|
+
onSelectionChange.mockClear();
|
345
|
+
|
346
|
+
_userEvent["default"].type(input, items[0].name);
|
347
|
+
|
348
|
+
_userEvent["default"].type(input, '{enter}');
|
349
|
+
|
350
|
+
expect(input).toHaveValue(items[0].name);
|
351
|
+
expect(onSelectionChange).not.toBeCalled();
|
352
|
+
});
|
279
353
|
test('options can be focused via keyboard', function () {
|
280
354
|
getComponent();
|
281
355
|
|
@@ -125,7 +125,8 @@ var SelectFieldBase = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref)
|
|
125
125
|
state: state,
|
126
126
|
triggerRef: triggerRef,
|
127
127
|
label: label,
|
128
|
-
name: name
|
128
|
+
name: name,
|
129
|
+
isDisabled: true
|
129
130
|
}), trigger || defaultTrigger, overlay, helperText && (0, _react2.jsx)(_FieldHelperText["default"], {
|
130
131
|
status: status
|
131
132
|
}, helperText));
|
@@ -28,6 +28,8 @@ var _hooks = require("../../hooks");
|
|
28
28
|
|
29
29
|
var _SelectFieldBase = _interopRequireDefault(require("./SelectFieldBase"));
|
30
30
|
|
31
|
+
var _constants = require("../Label/constants");
|
32
|
+
|
31
33
|
var _react2 = require("@emotion/react");
|
32
34
|
|
33
35
|
var items = [{
|
@@ -163,6 +165,20 @@ test('select field with helper text', function () {
|
|
163
165
|
expect(fieldHelperText).toBeInTheDocument();
|
164
166
|
expect(fieldHelperText).toHaveClass("is-".concat(_statuses["default"].ERROR));
|
165
167
|
});
|
168
|
+
test('label floats after user\'s interacting', function () {
|
169
|
+
getComponent({
|
170
|
+
labelMode: _constants.modes.FLOAT,
|
171
|
+
value: ''
|
172
|
+
});
|
173
|
+
|
174
|
+
var textAreaContainer = _testWrapper.screen.getByTestId(testId);
|
175
|
+
|
176
|
+
expect(textAreaContainer).not.toHaveClass('is-float-label-active');
|
177
|
+
|
178
|
+
_userEvent["default"].tab();
|
179
|
+
|
180
|
+
expect(textAreaContainer).toHaveClass('is-float-label-active');
|
181
|
+
});
|
166
182
|
test('clicking on the visible button opens the popuplist', function () {
|
167
183
|
getComponent();
|
168
184
|
|
@@ -56,6 +56,8 @@ var _PopoverContainer = _interopRequireDefault(require("../../components/Popover
|
|
56
56
|
|
57
57
|
var _ScrollBox = _interopRequireDefault(require("../../components/ScrollBox"));
|
58
58
|
|
59
|
+
var _constants = require("../../components/Label/constants");
|
60
|
+
|
59
61
|
var _react2 = require("@emotion/react");
|
60
62
|
|
61
63
|
function ownKeys(object, enumerableOnly) { var keys = (0, _keys["default"])(object); if (_getOwnPropertySymbols["default"]) { var symbols = (0, _getOwnPropertySymbols["default"])(object); if (enumerableOnly) symbols = (0, _filter["default"])(symbols).call(symbols, function (sym) { return (0, _getOwnPropertyDescriptor["default"])(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
@@ -140,6 +142,7 @@ var useSelectField = function useSelectField(props, ref) {
|
|
140
142
|
menuProps = _useSelect.menuProps;
|
141
143
|
|
142
144
|
var _useField = (0, _.useField)(_objectSpread(_objectSpread({}, props), {}, {
|
145
|
+
placeholder: props.labelMode === _constants.modes.FLOAT ? '' : placeholder,
|
143
146
|
labelProps: _objectSpread(_objectSpread({}, props.labelProps), labelProps),
|
144
147
|
containerProps: _objectSpread({
|
145
148
|
isFloatLabelActive: state.selectedItem
|
@@ -63,7 +63,6 @@ var tabLabel = _objectSpread(_objectSpread(_objectSpread({}, base), wordWrap), {
|
|
63
63
|
|
64
64
|
var fieldHelperText = _objectSpread(_objectSpread(_objectSpread({}, base), wordWrap), {}, {
|
65
65
|
fontSize: 'sm',
|
66
|
-
pb: 'sm',
|
67
66
|
'&.is-default': {
|
68
67
|
color: 'text.secondary'
|
69
68
|
},
|
@@ -27,7 +27,6 @@ import { FocusScope } from '@react-aria/focus';
|
|
27
27
|
import { useListState } from '@react-stately/list';
|
28
28
|
import { DismissButton, useOverlayPosition } from '@react-aria/overlays';
|
29
29
|
import { useLayoutEffect, useResizeObserver } from '@react-aria/utils';
|
30
|
-
import { v4 as uuid } from 'uuid';
|
31
30
|
import { Chip, Icon, IconButton, PopoverContainer, ScrollBox, TextField } from '../..';
|
32
31
|
import ListBox from '../ListBox';
|
33
32
|
import { isIterableProp } from '../../utils/devUtils/props/isIterable';
|
@@ -220,13 +219,17 @@ var MultivaluesField = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
220
219
|
} else if (hasCustomValue) {
|
221
220
|
var _context3;
|
222
221
|
|
223
|
-
var
|
224
|
-
|
225
|
-
selectionManager.
|
222
|
+
var _key2 = e.target.value;
|
223
|
+
|
224
|
+
if (state.selectionManager.isSelected(_key2)) {
|
225
|
+
return;
|
226
|
+
}
|
227
|
+
|
228
|
+
selectionManager.toggleSelection(_key2);
|
226
229
|
setCustomItems(_concatInstanceProperty(_context3 = []).call(_context3, customItems, [{
|
227
|
-
id:
|
228
|
-
key:
|
229
|
-
name:
|
230
|
+
id: _key2,
|
231
|
+
key: _key2,
|
232
|
+
name: _key2
|
230
233
|
}]));
|
231
234
|
setFilterString('');
|
232
235
|
}
|
@@ -212,6 +212,58 @@ test('changing the input value and hitting enter creates new value in non-restri
|
|
212
212
|
var chipContainer = chip.parentElement;
|
213
213
|
expect(chipContainer).toHaveAttribute('role', 'presentation');
|
214
214
|
});
|
215
|
+
test('in non-restrictive mode "onSelectionChange" returns entered keys', function () {
|
216
|
+
var onSelectionChange = jest.fn();
|
217
|
+
getComponent({
|
218
|
+
mode: 'non-restrictive',
|
219
|
+
onSelectionChange: onSelectionChange
|
220
|
+
});
|
221
|
+
var input = screen.getByRole('combobox');
|
222
|
+
var value = 'custom';
|
223
|
+
userEvent.type(input, value);
|
224
|
+
userEvent.type(input, '{enter}');
|
225
|
+
var chip = screen.queryByText(value);
|
226
|
+
expect(chip).toBeInTheDocument();
|
227
|
+
expect(onSelectionChange).toBeCalledTimes(1);
|
228
|
+
expect(onSelectionChange.mock.calls[0][0].has(value)).toBeTruthy();
|
229
|
+
});
|
230
|
+
test('in non-restrictive mode the same value cannot be applied twice', function () {
|
231
|
+
var onSelectionChange = jest.fn();
|
232
|
+
getComponent({
|
233
|
+
mode: 'non-restrictive',
|
234
|
+
onSelectionChange: onSelectionChange
|
235
|
+
});
|
236
|
+
var input = screen.getByRole('combobox');
|
237
|
+
var value = 'custom';
|
238
|
+
userEvent.type(input, value);
|
239
|
+
userEvent.type(input, '{enter}');
|
240
|
+
var chip = screen.queryByText(value);
|
241
|
+
expect(chip).toBeInTheDocument();
|
242
|
+
expect(input).toHaveValue('');
|
243
|
+
userEvent.type(input, value);
|
244
|
+
userEvent.type(input, '{enter}');
|
245
|
+
expect(input).toHaveValue(value);
|
246
|
+
expect(onSelectionChange).toBeCalledTimes(1);
|
247
|
+
});
|
248
|
+
test('in non-restrictive mode the value that was already selected using the list cannot be applied', function () {
|
249
|
+
var onSelectionChange = jest.fn();
|
250
|
+
getComponent({
|
251
|
+
mode: 'non-restrictive',
|
252
|
+
onSelectionChange: onSelectionChange
|
253
|
+
});
|
254
|
+
var input = screen.getByRole('combobox');
|
255
|
+
input.focus();
|
256
|
+
var listbox = screen.getByRole('listbox');
|
257
|
+
var options = within(listbox).getAllByRole('option');
|
258
|
+
var firstOption = options[0];
|
259
|
+
firstOption.click();
|
260
|
+
expect(onSelectionChange.mock.calls[0][0].has(items[0].name)).toBeTruthy();
|
261
|
+
onSelectionChange.mockClear();
|
262
|
+
userEvent.type(input, items[0].name);
|
263
|
+
userEvent.type(input, '{enter}');
|
264
|
+
expect(input).toHaveValue(items[0].name);
|
265
|
+
expect(onSelectionChange).not.toBeCalled();
|
266
|
+
});
|
215
267
|
test('options can be focused via keyboard', function () {
|
216
268
|
getComponent();
|
217
269
|
var input = screen.getByRole('combobox');
|
@@ -90,7 +90,8 @@ var SelectFieldBase = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
90
90
|
state: state,
|
91
91
|
triggerRef: triggerRef,
|
92
92
|
label: label,
|
93
|
-
name: name
|
93
|
+
name: name,
|
94
|
+
isDisabled: true
|
94
95
|
}), trigger || defaultTrigger, overlay, helperText && ___EmotionJSX(FieldHelperText, {
|
95
96
|
status: status
|
96
97
|
}, helperText));
|
@@ -10,6 +10,7 @@ import statuses from '../../utils/devUtils/constants/statuses';
|
|
10
10
|
import { Item } from '../../index';
|
11
11
|
import { useSelectField } from '../../hooks';
|
12
12
|
import SelectFieldBase from './SelectFieldBase';
|
13
|
+
import { modes } from '../Label/constants';
|
13
14
|
import { jsx as ___EmotionJSX } from "@emotion/react";
|
14
15
|
var items = [{
|
15
16
|
name: 'a'
|
@@ -135,6 +136,16 @@ test('select field with helper text', function () {
|
|
135
136
|
expect(fieldHelperText).toBeInTheDocument();
|
136
137
|
expect(fieldHelperText).toHaveClass("is-".concat(statuses.ERROR));
|
137
138
|
});
|
139
|
+
test('label floats after user\'s interacting', function () {
|
140
|
+
getComponent({
|
141
|
+
labelMode: modes.FLOAT,
|
142
|
+
value: ''
|
143
|
+
});
|
144
|
+
var textAreaContainer = screen.getByTestId(testId);
|
145
|
+
expect(textAreaContainer).not.toHaveClass('is-float-label-active');
|
146
|
+
userEvent.tab();
|
147
|
+
expect(textAreaContainer).toHaveClass('is-float-label-active');
|
148
|
+
});
|
138
149
|
test('clicking on the visible button opens the popuplist', function () {
|
139
150
|
getComponent();
|
140
151
|
var button = screen.getByRole('button');
|
@@ -25,6 +25,7 @@ import { useColumnStyles, useDeprecationWarning, useField } from '..';
|
|
25
25
|
import ListBox from '../../components/ListBox';
|
26
26
|
import PopoverContainer from '../../components/PopoverContainer';
|
27
27
|
import ScrollBox from '../../components/ScrollBox';
|
28
|
+
import { modes } from '../../components/Label/constants';
|
28
29
|
import { jsx as ___EmotionJSX } from "@emotion/react";
|
29
30
|
|
30
31
|
var useSelectField = function useSelectField(props, ref) {
|
@@ -105,6 +106,7 @@ var useSelectField = function useSelectField(props, ref) {
|
|
105
106
|
menuProps = _useSelect.menuProps;
|
106
107
|
|
107
108
|
var _useField = useField(_objectSpread(_objectSpread({}, props), {}, {
|
109
|
+
placeholder: props.labelMode === modes.FLOAT ? '' : placeholder,
|
108
110
|
labelProps: _objectSpread(_objectSpread({}, props.labelProps), labelProps),
|
109
111
|
containerProps: _objectSpread({
|
110
112
|
isFloatLabelActive: state.selectedItem
|
@@ -43,7 +43,6 @@ var tabLabel = _objectSpread(_objectSpread(_objectSpread({}, base), wordWrap), {
|
|
43
43
|
|
44
44
|
var fieldHelperText = _objectSpread(_objectSpread(_objectSpread({}, base), wordWrap), {}, {
|
45
45
|
fontSize: 'sm',
|
46
|
-
pb: 'sm',
|
47
46
|
'&.is-default': {
|
48
47
|
color: 'text.secondary'
|
49
48
|
},
|