@pingux/astro 1.28.2-alpha.1 → 1.29.0-alpha.0

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.
Files changed (85) hide show
  1. package/lib/cjs/components/ArrayField/ArrayField.js +21 -22
  2. package/lib/cjs/components/ArrayField/ArrayField.stories.js +48 -26
  3. package/lib/cjs/components/CheckboxField/CheckboxField.js +11 -39
  4. package/lib/cjs/components/CheckboxField/CheckboxField.stories.js +24 -32
  5. package/lib/cjs/components/ColorField/ColorField.js +27 -20
  6. package/lib/cjs/components/ColorField/ColorField.stories.js +28 -8
  7. package/lib/cjs/components/ComboBox/ComboBoxInput.js +31 -39
  8. package/lib/cjs/components/ComboBoxField/ComboBoxField.js +30 -55
  9. package/lib/cjs/components/ComboBoxField/ComboBoxField.stories.js +65 -45
  10. package/lib/cjs/components/FileInputField/FileInputField.js +33 -27
  11. package/lib/cjs/components/FileInputField/FileInputField.stories.js +27 -7
  12. package/lib/cjs/components/FileInputField/FileSelect.js +41 -10
  13. package/lib/cjs/components/ImageUploadField/ImageUploadField.js +35 -15
  14. package/lib/cjs/components/ImageUploadField/ImageUploadField.stories.js +34 -14
  15. package/lib/cjs/components/LinkSelectField/LinkSelectField.js +18 -20
  16. package/lib/cjs/components/LinkSelectField/LinkSelectField.stories.js +71 -53
  17. package/lib/cjs/components/Messages/Message.js +23 -7
  18. package/lib/cjs/components/Messages/Messages.test.js +25 -70
  19. package/lib/cjs/components/MultivaluesField/MultivaluesField.js +21 -12
  20. package/lib/cjs/components/MultivaluesField/MultivaluesField.stories.js +26 -6
  21. package/lib/cjs/components/NumberField/NumberField.js +15 -13
  22. package/lib/cjs/components/NumberField/NumberField.stories.js +25 -5
  23. package/lib/cjs/components/PasswordField/PasswordField.js +15 -27
  24. package/lib/cjs/components/PasswordField/PasswordField.stories.js +6 -4
  25. package/lib/cjs/components/RadioGroupField/RadioGroupField.js +17 -34
  26. package/lib/cjs/components/RadioGroupField/RadioGroupField.stories.js +25 -30
  27. package/lib/cjs/components/SearchField/SearchField.js +36 -55
  28. package/lib/cjs/components/SearchField/SearchField.stories.js +35 -24
  29. package/lib/cjs/components/SelectField/SelectField.js +27 -7
  30. package/lib/cjs/components/SelectField/SelectField.stories.js +73 -53
  31. package/lib/cjs/components/SelectFieldBase/SelectFieldBase.js +37 -25
  32. package/lib/cjs/components/SwitchField/SwitchField.js +43 -62
  33. package/lib/cjs/components/SwitchField/SwitchField.stories.js +26 -26
  34. package/lib/cjs/components/TextAreaField/TextAreaField.js +16 -20
  35. package/lib/cjs/components/TextAreaField/TextAreaField.stories.js +29 -11
  36. package/lib/cjs/components/TextField/TextField.js +11 -15
  37. package/lib/cjs/components/TextField/TextField.stories.js +30 -10
  38. package/lib/cjs/hooks/useField/useField.js +9 -21
  39. package/lib/cjs/recipes/LogoTabs.stories.js +50 -47
  40. package/lib/cjs/recipes/RadioButtonsWithLinks.stories.js +2 -1
  41. package/lib/cjs/utils/devUtils/props/ariaAttributes.js +116 -0
  42. package/lib/cjs/utils/devUtils/props/ariaAttributes.test.js +65 -0
  43. package/lib/components/ArrayField/ArrayField.js +16 -14
  44. package/lib/components/ArrayField/ArrayField.stories.js +17 -3
  45. package/lib/components/CheckboxField/CheckboxField.js +6 -32
  46. package/lib/components/CheckboxField/CheckboxField.stories.js +17 -32
  47. package/lib/components/ColorField/ColorField.js +22 -16
  48. package/lib/components/ColorField/ColorField.stories.js +18 -3
  49. package/lib/components/ComboBox/ComboBoxInput.js +24 -32
  50. package/lib/components/ComboBoxField/ComboBoxField.js +25 -51
  51. package/lib/components/ComboBoxField/ComboBoxField.stories.js +17 -3
  52. package/lib/components/FileInputField/FileInputField.js +29 -24
  53. package/lib/components/FileInputField/FileInputField.stories.js +18 -3
  54. package/lib/components/FileInputField/FileSelect.js +32 -10
  55. package/lib/components/ImageUploadField/ImageUploadField.js +23 -8
  56. package/lib/components/ImageUploadField/ImageUploadField.stories.js +18 -3
  57. package/lib/components/LinkSelectField/LinkSelectField.js +12 -11
  58. package/lib/components/LinkSelectField/LinkSelectField.stories.js +17 -4
  59. package/lib/components/Messages/Message.js +22 -6
  60. package/lib/components/Messages/Messages.test.js +25 -67
  61. package/lib/components/MultivaluesField/MultivaluesField.js +16 -9
  62. package/lib/components/MultivaluesField/MultivaluesField.stories.js +18 -3
  63. package/lib/components/NumberField/NumberField.js +5 -4
  64. package/lib/components/NumberField/NumberField.stories.js +17 -2
  65. package/lib/components/PasswordField/PasswordField.js +5 -11
  66. package/lib/components/PasswordField/PasswordField.stories.js +4 -3
  67. package/lib/components/RadioGroupField/RadioGroupField.js +12 -28
  68. package/lib/components/RadioGroupField/RadioGroupField.stories.js +17 -27
  69. package/lib/components/SearchField/SearchField.js +28 -48
  70. package/lib/components/SearchField/SearchField.stories.js +20 -14
  71. package/lib/components/SelectField/SelectField.js +18 -3
  72. package/lib/components/SelectField/SelectField.stories.js +18 -4
  73. package/lib/components/SelectFieldBase/SelectFieldBase.js +33 -25
  74. package/lib/components/SwitchField/SwitchField.js +40 -57
  75. package/lib/components/SwitchField/SwitchField.stories.js +18 -23
  76. package/lib/components/TextAreaField/TextAreaField.js +7 -9
  77. package/lib/components/TextAreaField/TextAreaField.stories.js +19 -5
  78. package/lib/components/TextField/TextField.js +4 -6
  79. package/lib/components/TextField/TextField.stories.js +19 -4
  80. package/lib/hooks/useField/useField.js +6 -16
  81. package/lib/recipes/LogoTabs.stories.js +50 -48
  82. package/lib/recipes/RadioButtonsWithLinks.stories.js +2 -1
  83. package/lib/utils/devUtils/props/ariaAttributes.js +85 -0
  84. package/lib/utils/devUtils/props/ariaAttributes.test.js +50 -0
  85. package/package.json +1 -1
@@ -1,9 +1,24 @@
1
+ import _Object$defineProperty from "@babel/runtime-corejs3/core-js-stable/object/define-property";
2
+ import _Object$defineProperties from "@babel/runtime-corejs3/core-js-stable/object/define-properties";
3
+ import _Object$getOwnPropertyDescriptors from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors";
4
+ import _forEachInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/for-each";
5
+ import _Object$getOwnPropertyDescriptor from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor";
6
+ import _filterInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/filter";
7
+ import _Object$getOwnPropertySymbols from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols";
8
+ import _Object$keys from "@babel/runtime-corejs3/core-js-stable/object/keys";
1
9
  import _slicedToArray from "@babel/runtime-corejs3/helpers/esm/slicedToArray";
2
10
  import _extends from "@babel/runtime-corejs3/helpers/esm/extends";
11
+ import _defineProperty from "@babel/runtime-corejs3/helpers/esm/defineProperty";
12
+
13
+ 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; }
14
+
15
+ 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; }
16
+
3
17
  import React, { useState } from 'react';
4
18
  import { v4 as uuidv4 } from 'uuid';
5
19
  import FileInputField from './';
6
- import { Box } from '../../index';
20
+ import { Box } from '../../';
21
+ import { ariaAttributeBaseArgTypes } from '../../utils/devUtils/props/ariaAttributes';
7
22
  import statuses from '../../utils/devUtils/constants/statuses';
8
23
  import { jsx as ___EmotionJSX } from "@emotion/react";
9
24
  export default {
@@ -16,7 +31,7 @@ export default {
16
31
  }
17
32
  }
18
33
  },
19
- argTypes: {
34
+ argTypes: _objectSpread({
20
35
  label: {
21
36
  control: {
22
37
  type: 'text'
@@ -70,7 +85,7 @@ export default {
70
85
  type: 'none'
71
86
  }
72
87
  }
73
- }
88
+ }, ariaAttributeBaseArgTypes)
74
89
  };
75
90
  var fitContentWidthSx = {
76
91
  width: 'fit-content'
@@ -1,15 +1,37 @@
1
+ import _Object$defineProperty from "@babel/runtime-corejs3/core-js-stable/object/define-property";
2
+ import _Object$defineProperties from "@babel/runtime-corejs3/core-js-stable/object/define-properties";
3
+ import _Object$getOwnPropertyDescriptors from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors";
4
+ import _forEachInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/for-each";
5
+ import _Object$getOwnPropertyDescriptor from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor";
6
+ import _filterInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/filter";
7
+ import _Object$getOwnPropertySymbols from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols";
8
+ import _Object$keys from "@babel/runtime-corejs3/core-js-stable/object/keys";
9
+ import _defineProperty from "@babel/runtime-corejs3/helpers/esm/defineProperty";
1
10
  import _extends from "@babel/runtime-corejs3/helpers/esm/extends";
11
+ import _objectWithoutProperties from "@babel/runtime-corejs3/helpers/esm/objectWithoutProperties";
12
+ var _excluded = ["buttonText", "handleFileSelect", "isDisabled", "textProps"];
13
+
14
+ 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; }
15
+
16
+ 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; }
17
+
2
18
  import React from 'react';
3
19
  import PropTypes from 'prop-types';
4
- import { Button, Text } from '../../index';
20
+ import { Button, Text } from '../../';
21
+ import { ariaAttributesBasePropTypes, getAriaAttributeProps } from '../../utils/devUtils/props/ariaAttributes';
5
22
  import { jsx as ___EmotionJSX } from "@emotion/react";
6
23
 
7
- var FileSelect = function FileSelect(props) {
8
- var buttonText = props.buttonText,
9
- handleFileSelect = props.handleFileSelect,
10
- isDisabled = props.isDisabled,
11
- textProps = props.textProps;
12
- return ___EmotionJSX(Button, {
24
+ var FileSelect = function FileSelect(_ref) {
25
+ var buttonText = _ref.buttonText,
26
+ handleFileSelect = _ref.handleFileSelect,
27
+ isDisabled = _ref.isDisabled,
28
+ textProps = _ref.textProps,
29
+ others = _objectWithoutProperties(_ref, _excluded);
30
+
31
+ var _getAriaAttributeProp = getAriaAttributeProps(others),
32
+ ariaProps = _getAriaAttributeProp.ariaProps;
33
+
34
+ return ___EmotionJSX(Button, _extends({
13
35
  "aria-label": buttonText,
14
36
  "data-testid": "file-input-field__file-select",
15
37
  isDisabled: isDisabled,
@@ -17,15 +39,15 @@ var FileSelect = function FileSelect(props) {
17
39
  my: 5,
18
40
  onPress: handleFileSelect,
19
41
  variant: "fileInputField"
20
- }, ___EmotionJSX(Text, _extends({
42
+ }, ariaProps), ___EmotionJSX(Text, _extends({
21
43
  color: "active"
22
44
  }, textProps), buttonText));
23
45
  };
24
46
 
25
47
  export default FileSelect;
26
- FileSelect.propTypes = {
48
+ FileSelect.propTypes = _objectSpread({
27
49
  buttonText: PropTypes.string,
28
50
  handleFileSelect: PropTypes.func,
29
51
  isDisabled: PropTypes.bool,
30
52
  textProps: PropTypes.shape({})
31
- };
53
+ }, ariaAttributesBasePropTypes);
@@ -1,12 +1,27 @@
1
+ import _Object$defineProperty from "@babel/runtime-corejs3/core-js-stable/object/define-property";
2
+ import _Object$defineProperties from "@babel/runtime-corejs3/core-js-stable/object/define-properties";
3
+ import _Object$getOwnPropertyDescriptors from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors";
4
+ import _forEachInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/for-each";
5
+ import _Object$getOwnPropertyDescriptor from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor";
6
+ import _filterInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/filter";
7
+ import _Object$getOwnPropertySymbols from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols";
8
+ import _Object$keys from "@babel/runtime-corejs3/core-js-stable/object/keys";
1
9
  import _Object$values from "@babel/runtime-corejs3/core-js-stable/object/values";
10
+ import _defineProperty from "@babel/runtime-corejs3/helpers/esm/defineProperty";
2
11
  import _extends from "@babel/runtime-corejs3/helpers/esm/extends";
12
+
13
+ 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; }
14
+
15
+ 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; }
16
+
3
17
  import React, { forwardRef, useCallback, useImperativeHandle, useRef } from 'react';
4
18
  import PropTypes from 'prop-types';
5
- import ImageUploadFieldBase from './ImageUploadFieldBase';
6
- import { Item, Menu } from '../../index';
7
- import { useImageUploadState } from '../../hooks/useImageUploadState';
19
+ import { Item, Menu } from '../../';
20
+ import { ariaAttributesBasePropTypes } from '../../utils/devUtils/props/ariaAttributes';
8
21
  import ImagePreviewButton from './ImagePreviewButton';
22
+ import ImageUploadFieldBase from './ImageUploadFieldBase';
9
23
  import statuses from '../../utils/devUtils/constants/statuses';
24
+ import { useImageUploadState } from '../../hooks/useImageUploadState';
10
25
  /**
11
26
  * The Image Upload Field component gives users the ability to upload a file (image by default).
12
27
  */
@@ -56,14 +71,14 @@ var ImageUploadField = /*#__PURE__*/forwardRef(function (props, ref) {
56
71
  ref: inputRef,
57
72
  widthHeightSx: state.widthHeightSx
58
73
  }, props), ___EmotionJSX(ImagePreviewButton, {
59
- isLoading: isLoading,
60
- loaderSize: loaderSize,
61
- previewImage: state.previewImage,
62
74
  defaultPreviewImage: state.defaultPreviewImage,
63
75
  defaultPreviewNode: state.defaultPreviewNode,
64
76
  isImageType: state.isImageType,
77
+ isLoading: isLoading,
78
+ loaderSize: loaderSize,
65
79
  onPress: state.pressPreviewButton,
66
80
  previewHeight: props === null || props === void 0 ? void 0 : props.previewHeight,
81
+ previewImage: state.previewImage,
67
82
  previewWidth: props === null || props === void 0 ? void 0 : props.previewWidth,
68
83
  widthHeightSx: state.widthHeightSx
69
84
  }), ___EmotionJSX(Menu, {
@@ -74,7 +89,7 @@ var ImageUploadField = /*#__PURE__*/forwardRef(function (props, ref) {
74
89
  key: "remove"
75
90
  }, removeItemText)));
76
91
  });
77
- ImageUploadField.propTypes = {
92
+ ImageUploadField.propTypes = _objectSpread({
78
93
  /** Image preview (controlled), used to represent the current image state. */
79
94
  previewImage: PropTypes.string,
80
95
 
@@ -123,7 +138,7 @@ ImageUploadField.propTypes = {
123
138
 
124
139
  /** Determines the helper text styling. */
125
140
  status: PropTypes.oneOf(_Object$values(statuses))
126
- };
141
+ }, ariaAttributesBasePropTypes);
127
142
  ImageUploadField.defaultProps = {
128
143
  fileTypes: ['image'],
129
144
  loaderSize: 10,
@@ -1,10 +1,25 @@
1
+ import _Object$defineProperty from "@babel/runtime-corejs3/core-js-stable/object/define-property";
2
+ import _Object$defineProperties from "@babel/runtime-corejs3/core-js-stable/object/define-properties";
3
+ import _Object$getOwnPropertyDescriptors from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors";
4
+ import _forEachInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/for-each";
5
+ import _Object$getOwnPropertyDescriptor from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor";
6
+ import _filterInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/filter";
7
+ import _Object$getOwnPropertySymbols from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols";
8
+ import _Object$keys from "@babel/runtime-corejs3/core-js-stable/object/keys";
1
9
  import _regeneratorRuntime from "@babel/runtime-corejs3/regenerator";
2
10
  import _setTimeout from "@babel/runtime-corejs3/core-js-stable/set-timeout";
3
11
  import _Promise from "@babel/runtime-corejs3/core-js-stable/promise";
4
12
  import _asyncToGenerator from "@babel/runtime-corejs3/helpers/esm/asyncToGenerator";
5
13
  import _slicedToArray from "@babel/runtime-corejs3/helpers/esm/slicedToArray";
14
+ import _defineProperty from "@babel/runtime-corejs3/helpers/esm/defineProperty";
15
+
16
+ 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; }
17
+
18
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context3, _context4; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty(_context3 = ownKeys(Object(source), !0)).call(_context3, function (key) { _defineProperty(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : _forEachInstanceProperty(_context4 = ownKeys(Object(source))).call(_context4, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
19
+
6
20
  import React, { useRef, useState } from 'react';
7
- import { Image, ImageUploadField, OverlayProvider } from '../../index';
21
+ import { Image, ImageUploadField, OverlayProvider } from '../../';
22
+ import { ariaAttributeBaseArgTypes } from '../../utils/devUtils/props/ariaAttributes';
8
23
  import statuses from '../../utils/devUtils/constants/statuses';
9
24
  import { jsx as ___EmotionJSX } from "@emotion/react";
10
25
  export default {
@@ -17,7 +32,7 @@ export default {
17
32
  }
18
33
  }
19
34
  },
20
- argTypes: {
35
+ argTypes: _objectSpread({
21
36
  previewImage: {
22
37
  control: {
23
38
  type: 'text'
@@ -74,7 +89,7 @@ export default {
74
89
  },
75
90
  defaultValue: statuses.DEFAULT
76
91
  }
77
- }
92
+ }, ariaAttributeBaseArgTypes)
78
93
  };
79
94
  export var Default = function Default(args) {
80
95
  return (// Application must be wrapped in an OverlayProvider so that it can be hidden from screen
@@ -17,14 +17,11 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
17
17
  import React, { forwardRef } from 'react';
18
18
  import PropTypes from 'prop-types';
19
19
  import MenuDown from 'mdi-react/MenuDownIcon';
20
+ import { Box, Button, Loader, Icon, Text } from '../../';
21
+ import { ariaAttributesBasePropTypes, getAriaAttributeProps } from '../../utils/devUtils/props/ariaAttributes';
20
22
  import { usePropWarning, useSelectField } from '../../hooks';
21
- import statuses from '../../utils/devUtils/constants/statuses';
22
- import Box from '../Box';
23
- import Button from '../Button';
24
- import Icon from '../Icon';
25
- import Loader from '../Loader';
26
23
  import SelectFieldBase from '../SelectFieldBase';
27
- import Text from '../Text';
24
+ import statuses from '../../utils/devUtils/constants/statuses';
28
25
  /**
29
26
  * Select field (dropdown) that does not rely on native browser or mobile implementations.
30
27
  *
@@ -37,6 +34,10 @@ import { jsx as ___EmotionJSX } from "@emotion/react";
37
34
  var LinkSelectField = /*#__PURE__*/forwardRef(function (props, ref) {
38
35
  var placeholder = props.placeholder,
39
36
  status = props.status;
37
+
38
+ var _getAriaAttributeProp = getAriaAttributeProps(props),
39
+ ariaProps = _getAriaAttributeProp.ariaProps;
40
+
40
41
  usePropWarning(props, 'disabled', 'isDisabled');
41
42
 
42
43
  var _useSelectField = useSelectField(_objectSpread(_objectSpread({
@@ -56,10 +57,10 @@ var LinkSelectField = /*#__PURE__*/forwardRef(function (props, ref) {
56
57
  triggerRef = selectFieldProps.triggerRef;
57
58
 
58
59
  var trigger = ___EmotionJSX(Button, _extends({
60
+ className: fieldControlProps.className,
59
61
  ref: triggerRef,
60
- variant: "link",
61
- className: fieldControlProps.className
62
- }, triggerProps), ___EmotionJSX(Text, {
62
+ variant: "link"
63
+ }, triggerProps, ariaProps), ___EmotionJSX(Text, {
63
64
  variant: "label",
64
65
  color: "active"
65
66
  }, placeholder), ___EmotionJSX(Box, {
@@ -81,7 +82,7 @@ var LinkSelectField = /*#__PURE__*/forwardRef(function (props, ref) {
81
82
  trigger: trigger
82
83
  }));
83
84
  });
84
- LinkSelectField.propTypes = {
85
+ LinkSelectField.propTypes = _objectSpread({
85
86
  /** Alignment of the popover menu relative to the trigger. */
86
87
  align: PropTypes.oneOf(['start', 'end', 'middle']),
87
88
 
@@ -180,7 +181,7 @@ LinkSelectField.propTypes = {
180
181
 
181
182
  /** Props object passed along to the label as-is. */
182
183
  labelProps: PropTypes.shape({})
183
- };
184
+ }, ariaAttributesBasePropTypes);
184
185
  LinkSelectField.defaultProps = {
185
186
  placeholder: 'Select',
186
187
  status: statuses.DEFAULT,
@@ -1,3 +1,11 @@
1
+ import _Object$defineProperty from "@babel/runtime-corejs3/core-js-stable/object/define-property";
2
+ import _Object$defineProperties from "@babel/runtime-corejs3/core-js-stable/object/define-properties";
3
+ import _Object$getOwnPropertyDescriptors from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors";
4
+ import _forEachInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/for-each";
5
+ import _Object$getOwnPropertyDescriptor from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor";
6
+ import _filterInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/filter";
7
+ import _Object$getOwnPropertySymbols from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols";
8
+ import _Object$keys from "@babel/runtime-corejs3/core-js-stable/object/keys";
1
9
  import _regeneratorRuntime from "@babel/runtime-corejs3/regenerator";
2
10
  import _setTimeout from "@babel/runtime-corejs3/core-js-stable/set-timeout";
3
11
  import _Promise from "@babel/runtime-corejs3/core-js-stable/promise";
@@ -6,15 +14,20 @@ import _fillInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instanc
6
14
  import _mapInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/map";
7
15
  import _slicedToArray from "@babel/runtime-corejs3/helpers/esm/slicedToArray";
8
16
  import _extends from "@babel/runtime-corejs3/helpers/esm/extends";
17
+ import _defineProperty from "@babel/runtime-corejs3/helpers/esm/defineProperty";
9
18
 
10
19
  var _context, _context2;
11
20
 
21
+ 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; }
22
+
23
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context4, _context5; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty(_context4 = ownKeys(Object(source), !0)).call(_context4, function (key) { _defineProperty(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : _forEachInstanceProperty(_context5 = ownKeys(Object(source))).call(_context5, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
24
+
12
25
  import React, { useState } from 'react';
13
26
  import { OverlayProvider } from '@react-aria/overlays';
14
27
  import { useAsyncList } from '@react-stately/data';
15
- import { LinkSelectField, Item, Separator } from '../../index';
28
+ import { Box, Item, LinkSelectField, Separator } from '../../';
29
+ import { ariaAttributeBaseArgTypes } from '../../utils/devUtils/props/ariaAttributes';
16
30
  import statuses from '../../utils/devUtils/constants/statuses';
17
- import Box from '../Box';
18
31
  import { jsx as ___EmotionJSX } from "@emotion/react";
19
32
  export default {
20
33
  title: 'Form/LinkSelectField',
@@ -26,7 +39,7 @@ export default {
26
39
  }
27
40
  }
28
41
  },
29
- argTypes: {
42
+ argTypes: _objectSpread({
30
43
  label: {
31
44
  control: {
32
45
  type: 'text'
@@ -68,7 +81,7 @@ export default {
68
81
  type: 'none'
69
82
  }
70
83
  }
71
- }
84
+ }, ariaAttributeBaseArgTypes)
72
85
  };
73
86
  export var Default = function Default(args) {
74
87
  return ___EmotionJSX(OverlayProvider, null, ___EmotionJSX(LinkSelectField, _extends({}, args, {
@@ -4,9 +4,8 @@ import _defineProperty from "@babel/runtime-corejs3/helpers/esm/defineProperty";
4
4
  import _extends from "@babel/runtime-corejs3/helpers/esm/extends";
5
5
  import _objectWithoutProperties from "@babel/runtime-corejs3/helpers/esm/objectWithoutProperties";
6
6
  var _excluded = ["color"];
7
- import React, { forwardRef, useEffect, useRef, useState, useLayoutEffect } from 'react';
7
+ import React, { forwardRef, useRef, useState, useLayoutEffect } from 'react';
8
8
  import PropTypes from 'prop-types';
9
- import { announce } from '@react-aria/live-announcer';
10
9
  import AlertCircleIcon from 'mdi-react/AlertCircleIcon';
11
10
  import CheckCircleIcon from 'mdi-react/CheckCircleIcon';
12
11
  import CloseIcon from 'mdi-react/CloseIcon';
@@ -25,6 +24,11 @@ export var icons = {
25
24
  error: AlertCircleIcon,
26
25
  warning: AlertIcon
27
26
  };
27
+ export var ARIA_STATUSES = {
28
+ SUCCESS: 'Success Message',
29
+ ERROR: 'Error Message',
30
+ WARNING: 'Warning Message'
31
+ };
28
32
 
29
33
  var CloseButton = function CloseButton(_ref) {
30
34
  var color = _ref.color,
@@ -72,9 +76,6 @@ var Message = /*#__PURE__*/forwardRef(function (props, ref) {
72
76
  }
73
77
  };
74
78
 
75
- useEffect(function () {
76
- announce(children, 'polite');
77
- }, []);
78
79
  var innerRef = useRef(null);
79
80
 
80
81
  var _useState = useState(0),
@@ -91,13 +92,28 @@ var Message = /*#__PURE__*/forwardRef(function (props, ref) {
91
92
  }),
92
93
  wrapperClasses = _useStatusClasses3.classNames;
93
94
 
95
+ var ariaStatus = function ariaStatus(ariaStatusClass) {
96
+ if (ariaStatusClass === 'is-success') {
97
+ return ARIA_STATUSES.SUCCESS;
98
+ } else if (ariaStatusClass === 'is-error') {
99
+ return ARIA_STATUSES.ERROR;
100
+ } else if (ariaStatusClass === 'is-warning') {
101
+ return ARIA_STATUSES.WARNING;
102
+ }
103
+
104
+ return '';
105
+ };
106
+
94
107
  return ___EmotionJSX(Box, {
95
108
  variant: "messages.transition",
96
109
  className: wrapperClasses,
97
110
  sx: {
98
111
  maxHeight: !isHidden ? innerHeight : 0
99
112
  },
100
- "data-id": dataId
113
+ "data-id": dataId,
114
+ role: "status",
115
+ "aria-live": "polite",
116
+ "aria-label": ariaStatus(statusClasses)
101
117
  }, ___EmotionJSX(Box, {
102
118
  ref: innerRef
103
119
  }, ___EmotionJSX(Box, {
@@ -1,23 +1,20 @@
1
- import _forEachInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/for-each";
1
+ import _Object$keys from "@babel/runtime-corejs3/core-js-stable/object/keys";
2
+ import _mapInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/map";
2
3
  import _setTimeout from "@babel/runtime-corejs3/core-js-stable/set-timeout";
3
- import _concatInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/concat";
4
- import _slicedToArray from "@babel/runtime-corejs3/helpers/esm/slicedToArray";
5
4
  import _extends from "@babel/runtime-corejs3/helpers/esm/extends";
6
- import React, { useState } from 'react';
7
- import { announce } from '@react-aria/live-announcer';
5
+ import React from 'react';
8
6
  import { Item } from '@react-stately/collections';
9
7
  import userEvent from '@testing-library/user-event';
10
8
  import axeTest from '../../utils/testUtils/testAxe';
11
9
  import { render, screen } from '../../utils/testUtils/testWrapper';
12
10
  import Messages, { messagesReducerStory, multiMessagesReducerStory } from '.';
13
- import Button from '../Button';
11
+ import { ARIA_STATUSES } from '../Messages/Message';
14
12
  import { jsx as ___EmotionJSX } from "@emotion/react";
15
13
  jest.mock('@react-aria/live-announcer', function () {
16
14
  return {
17
15
  announce: jest.fn()
18
16
  };
19
17
  });
20
- var mockAnnounce = announce;
21
18
  var testId = 'test-messages';
22
19
  var defaultProps = {
23
20
  'data-testid': testId
@@ -51,37 +48,6 @@ var getWithDynamicList = function getWithDynamicList() {
51
48
  return renderFn(___EmotionJSX(Messages, _extends({}, defaultProps, props), function (item) {
52
49
  return ___EmotionJSX(Item, item, item.text);
53
50
  }));
54
- };
55
-
56
- var MessagesWithButton = function MessagesWithButton(props) {
57
- var _useState = useState([]),
58
- _useState2 = _slicedToArray(_useState, 2),
59
- messages = _useState2[0],
60
- setMessages = _useState2[1];
61
-
62
- var addMessage = function addMessage() {
63
- var _context;
64
-
65
- setMessages(_concatInstanceProperty(_context = []).call(_context, messages, [{
66
- key: "message".concat(messages.length + 1),
67
- text: "New message ".concat(messages.length + 1),
68
- status: 'default'
69
- }]));
70
- };
71
-
72
- return ___EmotionJSX(React.Fragment, null, ___EmotionJSX(Button, {
73
- onPress: addMessage
74
- }, "Click me!"), ___EmotionJSX(Messages, _extends({
75
- items: messages
76
- }, props), function (item) {
77
- return ___EmotionJSX(Item, item, item.text);
78
- }));
79
- };
80
-
81
- var getWithButton = function getWithButton() {
82
- var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
83
- var renderFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : render;
84
- return renderFn(___EmotionJSX(MessagesWithButton, _extends({}, defaultProps, props)));
85
51
  }; // Need to be added to each test file to test accessibility using axe.
86
52
 
87
53
 
@@ -147,36 +113,28 @@ test('Item accepts a data-id and the data-id can be found in the DOM', function
147
113
 
148
114
  expect(firstMessage).toHaveAttribute('data-id', 'message1');
149
115
  });
150
- describe('announcements', function () {
151
- // Live announcer is (mostly) only used on apple devices for VoiceOver.
152
- // Mock navigator.platform so we take that codepath.
153
- var platformMock;
154
- beforeEach(function () {
155
- platformMock = jest.spyOn(navigator, 'platform', 'get').mockImplementation(function () {
156
- return 'MacIntel';
157
- });
158
- });
159
- afterEach(function () {
160
- jest.clearAllMocks();
161
- platformMock.mockRestore();
162
- });
163
- test('should announce on render', function () {
164
- getWithDynamicList({
165
- items: items
166
- });
116
+ test('message has role and aria-live attributes', function () {
117
+ getComponent();
167
118
 
168
- _forEachInstanceProperty(items).call(items, function (item) {
169
- return expect(mockAnnounce).toHaveBeenCalledWith(item.text, 'polite');
170
- });
171
- });
172
- test('should announce on adding item', function () {
173
- getWithButton();
174
- var messages = screen.getByTestId(testId);
175
- expect(messages.childElementCount).toBe(0);
176
- var button = screen.getByText('Click me!');
177
- userEvent.click(button);
178
- expect(messages.childElementCount).toBe(1);
179
- expect(mockAnnounce).toHaveBeenCalledWith('New message 1', 'polite');
119
+ var _screen$getByTestId3 = screen.getByTestId(testId),
120
+ firstMessage = _screen$getByTestId3.firstChild;
121
+
122
+ expect(firstMessage).toHaveAttribute('role', 'status');
123
+ expect(firstMessage).toHaveAttribute('aria-live', 'polite');
124
+ });
125
+ test('messages with a status have an aria-label announcing the status', function () {
126
+ getComponent();
127
+ var successMessage = screen.getAllByRole('status')[1];
128
+ expect(successMessage).toHaveAttribute('aria-label', ARIA_STATUSES[0]);
129
+ });
130
+ test('messages without a status do not have an aria-label announcing the status', function () {
131
+ var _context;
132
+
133
+ getComponent();
134
+ var statusMessage = screen.getAllByRole('status')[0];
135
+
136
+ _mapInstanceProperty(_context = _Object$keys(ARIA_STATUSES)).call(_context, function (key) {
137
+ return expect(statusMessage).not.toHaveAttribute('aria-label', ARIA_STATUSES[key]);
180
138
  });
181
139
  });
182
140
  test('should render messages with messagesReducerStory', function () {
@@ -15,6 +15,8 @@ import _Array$from from "@babel/runtime-corejs3/core-js-stable/array/from";
15
15
  import _includesInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/includes";
16
16
  import _filterInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/filter";
17
17
  import _slicedToArray from "@babel/runtime-corejs3/helpers/esm/slicedToArray";
18
+ import _objectWithoutProperties from "@babel/runtime-corejs3/helpers/esm/objectWithoutProperties";
19
+ var _excluded = ["defaultSelectedKeys", "direction", "disabledKeys", "containerProps", "hasAutoFocus", "hasNoStatusIndicator", "helperText", "inputProps", "isDisabled", "isNotFlippable", "isReadOnly", "isRequired", "items", "label", "mode", "onBlur", "onFocus", "onInputChange", "onKeyDown", "onKeyUp", "onOpenChange", "onSelectionChange", "placeholder", "readOnlyKeys", "selectedKeys", "scrollBoxProps", "status"];
18
20
 
19
21
  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; }
20
22
 
@@ -23,17 +25,17 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
23
25
  import React, { forwardRef, useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react';
24
26
  import PropTypes from 'prop-types';
25
27
  import Clear from 'mdi-react/CloseIcon';
26
- import { useFilter } from '@react-aria/i18n';
27
28
  import { FocusScope } from '@react-aria/focus';
28
- import { useListState } from '@react-stately/list';
29
+ import { useFilter } from '@react-aria/i18n';
29
30
  import { DismissButton, useOverlayPosition } from '@react-aria/overlays';
30
31
  import { useLayoutEffect, useResizeObserver } from '@react-aria/utils';
31
- import { Box, Chip, Icon, IconButton, PopoverContainer, ScrollBox, Text, TextField } from '../..';
32
+ import { useListState } from '@react-stately/list';
33
+ import { Box, FieldHelperText, Chip, Icon, IconButton, PopoverContainer, ScrollBox, Text, TextField } from '../../';
34
+ import { ariaAttributesBasePropTypes, getAriaAttributeProps } from '../../utils/devUtils/props/ariaAttributes';
35
+ import { usePropWarning } from '../../hooks';
32
36
  import ListBox from '../ListBox';
33
37
  import { isIterableProp } from '../../utils/devUtils/props/isIterable';
34
- import { usePropWarning } from '../../hooks';
35
38
  import statuses from '../../utils/devUtils/constants/statuses';
36
- import FieldHelperText from '../FieldHelperText';
37
39
  /**
38
40
  * Complex control that lets you choose several tags from the dropdown list.
39
41
  * Or to add your own values in non-restrictive mode.
@@ -76,7 +78,12 @@ var MultivaluesField = /*#__PURE__*/forwardRef(function (props, ref) {
76
78
  readOnlyKeys = _props$readOnlyKeys === void 0 ? [] : _props$readOnlyKeys,
77
79
  selectedKeys = props.selectedKeys,
78
80
  scrollBoxProps = props.scrollBoxProps,
79
- status = props.status;
81
+ status = props.status,
82
+ others = _objectWithoutProperties(props, _excluded);
83
+
84
+ var _getAriaAttributeProp = getAriaAttributeProps(others),
85
+ ariaProps = _getAriaAttributeProp.ariaProps;
86
+
80
87
  var hasCustomValue = mode === 'non-restrictive';
81
88
  usePropWarning(props, 'disabled', 'isDisabled');
82
89
 
@@ -421,7 +428,7 @@ var MultivaluesField = /*#__PURE__*/forwardRef(function (props, ref) {
421
428
  beforeInput: ___EmotionJSX(React.Fragment, null, readOnlyItems, " ", selectedItems, readOnlyInputEntry)
422
429
  },
423
430
  value: filterString
424
- }, inputProps)), helperText && ___EmotionJSX(FieldHelperText, {
431
+ }, ariaProps, inputProps)), helperText && ___EmotionJSX(FieldHelperText, {
425
432
  status: status
426
433
  }, helperText), ___EmotionJSX(PopoverContainer, {
427
434
  ref: popoverRef,
@@ -432,7 +439,7 @@ var MultivaluesField = /*#__PURE__*/forwardRef(function (props, ref) {
432
439
  style: style
433
440
  }, listbox));
434
441
  });
435
- MultivaluesField.propTypes = {
442
+ MultivaluesField.propTypes = _objectSpread({
436
443
  /** Props object that is spread directly into the root (top-level) Box component. */
437
444
  containerProps: PropTypes.shape({}),
438
445
 
@@ -558,7 +565,7 @@ MultivaluesField.propTypes = {
558
565
 
559
566
  /** Determines the input status indicator and helper text styling. */
560
567
  status: PropTypes.oneOf(_Object$values(statuses))
561
- };
568
+ }, ariaAttributesBasePropTypes);
562
569
  MultivaluesField.defaultProps = {
563
570
  direction: 'bottom',
564
571
  isReadOnly: false,
@@ -1,13 +1,28 @@
1
+ import _Object$defineProperty from "@babel/runtime-corejs3/core-js-stable/object/define-property";
2
+ import _Object$defineProperties from "@babel/runtime-corejs3/core-js-stable/object/define-properties";
3
+ import _Object$getOwnPropertyDescriptors from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors";
4
+ import _forEachInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/for-each";
5
+ import _Object$getOwnPropertyDescriptor from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor";
6
+ import _filterInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/filter";
7
+ import _Object$getOwnPropertySymbols from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols";
8
+ import _Object$keys from "@babel/runtime-corejs3/core-js-stable/object/keys";
1
9
  import _extends from "@babel/runtime-corejs3/helpers/esm/extends";
2
10
  import _slicedToArray from "@babel/runtime-corejs3/helpers/esm/slicedToArray";
11
+ import _defineProperty from "@babel/runtime-corejs3/helpers/esm/defineProperty";
12
+
13
+ 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; }
14
+
15
+ 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; }
16
+
3
17
  import React, { useState } from 'react';
4
- import { Box, Item, MultivaluesField, OverlayProvider } from '../..';
18
+ import { Box, Item, MultivaluesField, OverlayProvider } from '../../';
19
+ import { ariaAttributeBaseArgTypes } from '../../utils/devUtils/props/ariaAttributes';
5
20
  import statuses from '../../utils/devUtils/constants/statuses';
6
21
  import { jsx as ___EmotionJSX } from "@emotion/react";
7
22
  export default {
8
23
  title: 'Form/MultivaluesField',
9
24
  component: MultivaluesField,
10
- argTypes: {
25
+ argTypes: _objectSpread({
11
26
  direction: {
12
27
  defaultValue: 'bottom'
13
28
  },
@@ -54,7 +69,7 @@ export default {
54
69
  type: 'text'
55
70
  }
56
71
  }
57
- },
72
+ }, ariaAttributeBaseArgTypes),
58
73
  parameters: {
59
74
  docs: {
60
75
  source: {