@carbon/react 1.18.0-rc.0 → 1.18.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.
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Copyright IBM Corp. 2016, 2022
3
+ *
4
+ * This source code is licensed under the Apache-2.0 license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ import { objectWithoutProperties as _objectWithoutProperties, defineProperty as _defineProperty, extends as _extends } from '../../_virtual/_rollupPluginBabelHelpers.js';
9
+ import PropTypes from 'prop-types';
10
+ import React__default from 'react';
11
+ import cx from 'classnames';
12
+ import { usePrefix } from '../../internal/usePrefix.js';
13
+ import '../FluidTextInput/FluidTextInput.js';
14
+ import FluidTextInputSkeleton from '../FluidTextInput/FluidTextInput.Skeleton.js';
15
+ import '../FluidSelect/FluidSelect.js';
16
+ import FluidSelectSkeleton from '../FluidSelect/FluidSelect.Skeleton.js';
17
+
18
+ var _FluidTextInputSkelet, _FluidSelectSkeleton, _FluidSelectSkeleton2;
19
+
20
+ var _excluded = ["className", "isOnlyTwo"];
21
+
22
+ var FluidTimePickerSkeleton = function FluidTimePickerSkeleton(_ref) {
23
+ var className = _ref.className,
24
+ isOnlyTwo = _ref.isOnlyTwo,
25
+ rest = _objectWithoutProperties(_ref, _excluded);
26
+
27
+ var prefix = usePrefix();
28
+ var wrapperClasses = cx(className, "".concat(prefix, "--time-picker--fluid--skeleton"), _defineProperty({}, "".concat(prefix, "--time-picker--equal-width"), isOnlyTwo));
29
+ return /*#__PURE__*/React__default.createElement("div", _extends({
30
+ className: wrapperClasses
31
+ }, rest), _FluidTextInputSkelet || (_FluidTextInputSkelet = /*#__PURE__*/React__default.createElement(FluidTextInputSkeleton, null)), _FluidSelectSkeleton || (_FluidSelectSkeleton = /*#__PURE__*/React__default.createElement(FluidSelectSkeleton, null)), !isOnlyTwo ? _FluidSelectSkeleton2 || (_FluidSelectSkeleton2 = /*#__PURE__*/React__default.createElement(FluidSelectSkeleton, null)) : null);
32
+ };
33
+
34
+ FluidTimePickerSkeleton.propTypes = {
35
+ /**
36
+ * Specify an optional className to add.
37
+ */
38
+ className: PropTypes.string,
39
+
40
+ /**
41
+ * Specify if there are only two TimePicker elements
42
+ */
43
+ isOnlyTwo: PropTypes.bool
44
+ };
45
+
46
+ export { FluidTimePickerSkeleton as default };
@@ -0,0 +1,110 @@
1
+ /**
2
+ * Copyright IBM Corp. 2016, 2022
3
+ *
4
+ * This source code is licensed under the Apache-2.0 license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ import { objectWithoutProperties as _objectWithoutProperties, defineProperty as _defineProperty, extends as _extends } from '../../_virtual/_rollupPluginBabelHelpers.js';
9
+ import PropTypes from 'prop-types';
10
+ import React__default from 'react';
11
+ import cx from 'classnames';
12
+ import FluidTextInput from '../FluidTextInput/FluidTextInput.js';
13
+ import '../FluidTextInput/FluidTextInput.Skeleton.js';
14
+ import { usePrefix } from '../../internal/usePrefix.js';
15
+ import { WarningFilled, WarningAltFilled } from '@carbon/icons-react';
16
+
17
+ var _excluded = ["className", "children", "disabled", "invalid", "invalidText", "warn", "warnText"];
18
+ var FluidTimePicker = /*#__PURE__*/React__default.forwardRef(function FluidTimePicker(_ref, ref) {
19
+ var _classnames;
20
+
21
+ var className = _ref.className,
22
+ children = _ref.children,
23
+ disabled = _ref.disabled,
24
+ invalid = _ref.invalid,
25
+ invalidText = _ref.invalidText,
26
+ warn = _ref.warn,
27
+ warnText = _ref.warnText,
28
+ other = _objectWithoutProperties(_ref, _excluded);
29
+
30
+ var prefix = usePrefix();
31
+ var classNames = cx(className, (_classnames = {}, _defineProperty(_classnames, "".concat(prefix, "--time-picker--fluid"), true), _defineProperty(_classnames, "".concat(prefix, "--time-picker--equal-width"), (children === null || children === void 0 ? void 0 : children.length) !== 2), _defineProperty(_classnames, "".concat(prefix, "--time-picker--fluid--disabled"), disabled), _defineProperty(_classnames, "".concat(prefix, "--time-picker--fluid--invalid"), invalid), _defineProperty(_classnames, "".concat(prefix, "--time-picker--fluid--warning"), warn), _classnames));
32
+
33
+ var errorText = function errorText() {
34
+ if (invalid) {
35
+ return invalidText;
36
+ }
37
+
38
+ if (warn) {
39
+ return warnText;
40
+ }
41
+ };
42
+
43
+ var error = invalid || warn;
44
+ return /*#__PURE__*/React__default.createElement("div", {
45
+ className: classNames
46
+ }, /*#__PURE__*/React__default.createElement("div", {
47
+ className: "".concat(prefix, "--time-picker--fluid__wrapper")
48
+ }, /*#__PURE__*/React__default.createElement("div", {
49
+ className: "".concat(prefix, "--time-picker__input")
50
+ }, /*#__PURE__*/React__default.createElement(FluidTextInput, _extends({
51
+ disabled: disabled,
52
+ ref: ref
53
+ }, other))), disabled ? React__default.Children.toArray(children).map(function (child) {
54
+ return /*#__PURE__*/React__default.cloneElement(child, {
55
+ disabled: disabled
56
+ });
57
+ }) : children), error && /*#__PURE__*/React__default.createElement("hr", {
58
+ className: "".concat(prefix, "--time-picker__divider")
59
+ }), error && /*#__PURE__*/React__default.createElement("div", {
60
+ className: "".concat(prefix, "--form-requirement")
61
+ }, errorText()), error && invalid ? /*#__PURE__*/React__default.createElement(WarningFilled, {
62
+ className: "".concat(prefix, "--time-picker__icon ").concat(prefix, "--time-picker__icon--invalid")
63
+ }) : /*#__PURE__*/React__default.createElement(WarningAltFilled, {
64
+ className: "".concat(prefix, "--time-picker__icon ").concat(prefix, "--time-picker__icon--warn")
65
+ }));
66
+ });
67
+ FluidTimePicker.propTypes = {
68
+ /**
69
+ * The child node(s)
70
+ */
71
+ children: PropTypes.node,
72
+
73
+ /**
74
+ * Specify an optional className to be applied to the outer FluidTimePicker wrapper
75
+ */
76
+ className: PropTypes.string,
77
+
78
+ /**
79
+ * Specify whether the `<input>` should be disabled
80
+ */
81
+ disabled: PropTypes.bool,
82
+
83
+ /**
84
+ * Specify whether or not the control is invalid
85
+ */
86
+ invalid: PropTypes.bool,
87
+
88
+ /**
89
+ * Provide the text that is displayed when the control is in error state
90
+ */
91
+ invalidText: PropTypes.node,
92
+
93
+ /**
94
+ * Provide the text that will be read by a screen reader when visiting this
95
+ * control
96
+ */
97
+ labelText: PropTypes.node.isRequired,
98
+
99
+ /**
100
+ * Specify whether the control is currently in warning state
101
+ */
102
+ warn: PropTypes.bool,
103
+
104
+ /**
105
+ * Provide the text that is displayed when the control is in warning state
106
+ */
107
+ warnText: PropTypes.node
108
+ };
109
+
110
+ export { FluidTimePicker as default };
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Copyright IBM Corp. 2016, 2022
3
+ *
4
+ * This source code is licensed under the Apache-2.0 license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ import { objectWithoutProperties as _objectWithoutProperties, extends as _extends } from '../../_virtual/_rollupPluginBabelHelpers.js';
9
+ import React__default from 'react';
10
+ import PropTypes from 'prop-types';
11
+ import FluidSelect from '../FluidSelect/FluidSelect.js';
12
+ import '../FluidSelect/FluidSelect.Skeleton.js';
13
+
14
+ var _excluded = ["children", "className"];
15
+ var FluidTimePickerSelect = /*#__PURE__*/React__default.forwardRef(function FluidTimePickerSelect(_ref, ref) {
16
+ var children = _ref.children,
17
+ className = _ref.className,
18
+ other = _objectWithoutProperties(_ref, _excluded);
19
+
20
+ return /*#__PURE__*/React__default.createElement(FluidSelect, _extends({
21
+ className: className,
22
+ ref: ref
23
+ }, other), children);
24
+ });
25
+ FluidTimePickerSelect.propTypes = {
26
+ /**
27
+ * Provide the contents of your Select
28
+ */
29
+ children: PropTypes.node,
30
+
31
+ /**
32
+ * Specify an optional className to be applied to the node containing the label and the select box
33
+ */
34
+ className: PropTypes.string,
35
+
36
+ /**
37
+ * Optionally provide the default value of the `<select>`
38
+ */
39
+ defaultValue: PropTypes.any,
40
+
41
+ /**
42
+ * Specify whether the control is disabled
43
+ */
44
+ disabled: PropTypes.bool,
45
+
46
+ /**
47
+ * Specify a custom `id` for the `<select>`
48
+ */
49
+ id: PropTypes.string.isRequired,
50
+
51
+ /**
52
+ * Provide label text to be read by screen readers when interacting with the
53
+ * control
54
+ */
55
+ labelText: PropTypes.node,
56
+
57
+ /**
58
+ * Provide an optional `onChange` hook that is called each time the value of
59
+ * the underlying `<input>` changes
60
+ */
61
+ onChange: PropTypes.func
62
+ };
63
+
64
+ export { FluidTimePickerSelect as default };
@@ -142,9 +142,9 @@ var Select = /*#__PURE__*/React__default.forwardRef(function Select(_ref, ref) {
142
142
  "data-invalid": invalid || null,
143
143
  onFocus: handleFocus,
144
144
  onBlur: handleFocus
145
- }, input), isFluid && /*#__PURE__*/React__default.createElement("hr", {
145
+ }, input, isFluid && /*#__PURE__*/React__default.createElement("hr", {
146
146
  className: "".concat(prefix, "--select__divider")
147
- }), !inline && error ? error : helper));
147
+ }), isFluid && error ? error : null), !inline && !isFluid && error ? error : helper));
148
148
  });
149
149
  Select.displayName = 'Select';
150
150
  Select.propTypes = {
@@ -7,7 +7,7 @@
7
7
 
8
8
  import { objectWithoutProperties as _objectWithoutProperties, slicedToArray as _slicedToArray, defineProperty as _defineProperty, extends as _extends } from '../../_virtual/_rollupPluginBabelHelpers.js';
9
9
  import PropTypes from 'prop-types';
10
- import React__default, { useContext, useState, useEffect } from 'react';
10
+ import React__default, { useContext, useState } from 'react';
11
11
  import cx from 'classnames';
12
12
  import deprecate from '../../prop-types/deprecate.js';
13
13
  import { WarningFilled } from '@carbon/icons-react';
@@ -15,6 +15,7 @@ import { useFeatureFlag } from '../FeatureFlags/index.js';
15
15
  import { usePrefix } from '../../internal/usePrefix.js';
16
16
  import '../FluidForm/FluidForm.js';
17
17
  import { FormContext } from '../FluidForm/FormContext.js';
18
+ import { useAnnouncer } from '../../internal/useAnnouncer.js';
18
19
 
19
20
  var _excluded = ["className", "id", "labelText", "hideLabel", "onChange", "onClick", "invalid", "invalidText", "helperText", "light", "placeholder", "enableCounter", "maxCount"];
20
21
  var TextArea = /*#__PURE__*/React__default.forwardRef(function TextArea(_ref, ref) {
@@ -50,11 +51,6 @@ var TextArea = /*#__PURE__*/React__default.forwardRef(function TextArea(_ref, re
50
51
  textCount = _useState2[0],
51
52
  setTextCount = _useState2[1];
52
53
 
53
- var _useState3 = useState(''),
54
- _useState4 = _slicedToArray(_useState3, 2),
55
- ariaAnnouncement = _useState4[0],
56
- setAriaAnnouncement = _useState4[1];
57
-
58
54
  var textareaProps = {
59
55
  id: id,
60
56
  onChange: function onChange(evt) {
@@ -78,15 +74,7 @@ var TextArea = /*#__PURE__*/React__default.forwardRef(function TextArea(_ref, re
78
74
  textareaProps.maxLength = maxCount;
79
75
  }
80
76
 
81
- useEffect(function () {
82
- var lastTen = maxCount - 10;
83
-
84
- if (textCount >= lastTen) {
85
- setAriaAnnouncement("".concat(maxCount - textCount, " characters left."));
86
- } else {
87
- setAriaAnnouncement('');
88
- }
89
- }, [textCount, maxCount]);
77
+ var ariaAnnouncement = useAnnouncer(textCount, maxCount);
90
78
  var labelClasses = cx("".concat(prefix, "--label"), (_classNames = {}, _defineProperty(_classNames, "".concat(prefix, "--visually-hidden"), hideLabel && !isFluid), _defineProperty(_classNames, "".concat(prefix, "--label--disabled"), disabled), _classNames));
91
79
  var label = labelText ? /*#__PURE__*/React__default.createElement("label", {
92
80
  htmlFor: id,
@@ -19,6 +19,7 @@ import { FormContext } from '../FluidForm/FormContext.js';
19
19
  import { useFeatureFlag } from '../FeatureFlags/index.js';
20
20
  import * as FeatureFlags from '@carbon/feature-flags';
21
21
  import { usePrefix } from '../../internal/usePrefix.js';
22
+ import { useAnnouncer } from '../../internal/useAnnouncer.js';
22
23
 
23
24
  var _excluded = ["className", "disabled", "helperText", "hideLabel", "id", "inline", "invalid", "invalidText", "labelText", "light", "onChange", "onClick", "placeholder", "readOnly", "size", "type", "warn", "warnText", "enableCounter", "maxCount"];
24
25
  var TextInput = /*#__PURE__*/React__default.forwardRef(function TextInput(_ref, ref) {
@@ -137,6 +138,7 @@ var TextInput = /*#__PURE__*/React__default.forwardRef(function TextInput(_ref,
137
138
  var _useContext = useContext(FormContext),
138
139
  isFluid = _useContext.isFluid;
139
140
 
141
+ var ariaAnnouncement = useAnnouncer(textCount, maxCount);
140
142
  return /*#__PURE__*/React__default.createElement("div", {
141
143
  className: inputWrapperClasses
142
144
  }, !inline ? labelWrapper : /*#__PURE__*/React__default.createElement("div", {
@@ -148,7 +150,10 @@ var TextInput = /*#__PURE__*/React__default.forwardRef(function TextInput(_ref,
148
150
  "data-invalid": normalizedProps.invalid || null
149
151
  }, normalizedProps.icon && /*#__PURE__*/React__default.createElement(normalizedProps.icon, {
150
152
  className: iconClasses
151
- }), input, isFluid && /*#__PURE__*/React__default.createElement("hr", {
153
+ }), input, /*#__PURE__*/React__default.createElement("span", {
154
+ className: "".concat(prefix, "--text-input__counter-alert"),
155
+ role: "alert"
156
+ }, ariaAnnouncement), isFluid && /*#__PURE__*/React__default.createElement("hr", {
152
157
  className: "".concat(prefix, "--text-input__divider")
153
158
  }), isFluid && !inline && normalizedProps.validation), !isFluid && !inline && (normalizedProps.validation || helper)));
154
159
  });
package/es/index.js CHANGED
@@ -165,6 +165,9 @@ export { default as unstable__FluidTextArea } from './components/FluidTextArea/F
165
165
  export { default as unstable__FluidTextAreaSkeleton } from './components/FluidTextArea/FluidTextArea.Skeleton.js';
166
166
  export { default as unstable__FluidTextInput } from './components/FluidTextInput/FluidTextInput.js';
167
167
  export { default as unstable__FluidTextInputSkeleton } from './components/FluidTextInput/FluidTextInput.Skeleton.js';
168
+ export { default as unstable__FluidTimePicker } from './components/FluidTimePicker/FluidTimePicker.js';
169
+ export { default as unstable__FluidTimePickerSkeleton } from './components/FluidTimePicker/FluidTimePicker.Skeleton.js';
170
+ export { default as unstable__FluidTimePickerSelect } from './components/FluidTimePickerSelect/FluidTimePickerSelect.js';
168
171
  export { Heading, Section } from './components/Heading/index.js';
169
172
  export { IconButton } from './components/IconButton/index.js';
170
173
  export { Layer, useLayer } from './components/Layer/index.js';
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Copyright IBM Corp. 2016, 2022
3
+ *
4
+ * This source code is licensed under the Apache-2.0 license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ function useAnnouncer(textCount, maxCount) {
9
+ var lastTen = maxCount - 10;
10
+
11
+ if (textCount >= lastTen) {
12
+ return "".concat(maxCount - textCount, " characters left.");
13
+ }
14
+ }
15
+
16
+ export { useAnnouncer };
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Copyright IBM Corp. 2016, 2022
3
+ *
4
+ * This source code is licensed under the Apache-2.0 license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ 'use strict';
9
+
10
+ Object.defineProperty(exports, '__esModule', { value: true });
11
+
12
+ var _rollupPluginBabelHelpers = require('../../_virtual/_rollupPluginBabelHelpers.js');
13
+ var PropTypes = require('prop-types');
14
+ var React = require('react');
15
+ var cx = require('classnames');
16
+ var usePrefix = require('../../internal/usePrefix.js');
17
+ require('../FluidTextInput/FluidTextInput.js');
18
+ var FluidTextInput_Skeleton = require('../FluidTextInput/FluidTextInput.Skeleton.js');
19
+ require('../FluidSelect/FluidSelect.js');
20
+ var FluidSelect_Skeleton = require('../FluidSelect/FluidSelect.Skeleton.js');
21
+
22
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
23
+
24
+ var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
25
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
26
+ var cx__default = /*#__PURE__*/_interopDefaultLegacy(cx);
27
+
28
+ var _FluidTextInputSkelet, _FluidSelectSkeleton, _FluidSelectSkeleton2;
29
+
30
+ var _excluded = ["className", "isOnlyTwo"];
31
+
32
+ var FluidTimePickerSkeleton = function FluidTimePickerSkeleton(_ref) {
33
+ var className = _ref.className,
34
+ isOnlyTwo = _ref.isOnlyTwo,
35
+ rest = _rollupPluginBabelHelpers.objectWithoutProperties(_ref, _excluded);
36
+
37
+ var prefix = usePrefix.usePrefix();
38
+ var wrapperClasses = cx__default["default"](className, "".concat(prefix, "--time-picker--fluid--skeleton"), _rollupPluginBabelHelpers.defineProperty({}, "".concat(prefix, "--time-picker--equal-width"), isOnlyTwo));
39
+ return /*#__PURE__*/React__default["default"].createElement("div", _rollupPluginBabelHelpers["extends"]({
40
+ className: wrapperClasses
41
+ }, rest), _FluidTextInputSkelet || (_FluidTextInputSkelet = /*#__PURE__*/React__default["default"].createElement(FluidTextInput_Skeleton["default"], null)), _FluidSelectSkeleton || (_FluidSelectSkeleton = /*#__PURE__*/React__default["default"].createElement(FluidSelect_Skeleton["default"], null)), !isOnlyTwo ? _FluidSelectSkeleton2 || (_FluidSelectSkeleton2 = /*#__PURE__*/React__default["default"].createElement(FluidSelect_Skeleton["default"], null)) : null);
42
+ };
43
+
44
+ FluidTimePickerSkeleton.propTypes = {
45
+ /**
46
+ * Specify an optional className to add.
47
+ */
48
+ className: PropTypes__default["default"].string,
49
+
50
+ /**
51
+ * Specify if there are only two TimePicker elements
52
+ */
53
+ isOnlyTwo: PropTypes__default["default"].bool
54
+ };
55
+
56
+ exports["default"] = FluidTimePickerSkeleton;
@@ -0,0 +1,120 @@
1
+ /**
2
+ * Copyright IBM Corp. 2016, 2022
3
+ *
4
+ * This source code is licensed under the Apache-2.0 license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ 'use strict';
9
+
10
+ Object.defineProperty(exports, '__esModule', { value: true });
11
+
12
+ var _rollupPluginBabelHelpers = require('../../_virtual/_rollupPluginBabelHelpers.js');
13
+ var PropTypes = require('prop-types');
14
+ var React = require('react');
15
+ var cx = require('classnames');
16
+ var FluidTextInput = require('../FluidTextInput/FluidTextInput.js');
17
+ require('../FluidTextInput/FluidTextInput.Skeleton.js');
18
+ var usePrefix = require('../../internal/usePrefix.js');
19
+ var iconsReact = require('@carbon/icons-react');
20
+
21
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
22
+
23
+ var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
24
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
25
+ var cx__default = /*#__PURE__*/_interopDefaultLegacy(cx);
26
+
27
+ var _excluded = ["className", "children", "disabled", "invalid", "invalidText", "warn", "warnText"];
28
+ var FluidTimePicker = /*#__PURE__*/React__default["default"].forwardRef(function FluidTimePicker(_ref, ref) {
29
+ var _classnames;
30
+
31
+ var className = _ref.className,
32
+ children = _ref.children,
33
+ disabled = _ref.disabled,
34
+ invalid = _ref.invalid,
35
+ invalidText = _ref.invalidText,
36
+ warn = _ref.warn,
37
+ warnText = _ref.warnText,
38
+ other = _rollupPluginBabelHelpers.objectWithoutProperties(_ref, _excluded);
39
+
40
+ var prefix = usePrefix.usePrefix();
41
+ var classNames = cx__default["default"](className, (_classnames = {}, _rollupPluginBabelHelpers.defineProperty(_classnames, "".concat(prefix, "--time-picker--fluid"), true), _rollupPluginBabelHelpers.defineProperty(_classnames, "".concat(prefix, "--time-picker--equal-width"), (children === null || children === void 0 ? void 0 : children.length) !== 2), _rollupPluginBabelHelpers.defineProperty(_classnames, "".concat(prefix, "--time-picker--fluid--disabled"), disabled), _rollupPluginBabelHelpers.defineProperty(_classnames, "".concat(prefix, "--time-picker--fluid--invalid"), invalid), _rollupPluginBabelHelpers.defineProperty(_classnames, "".concat(prefix, "--time-picker--fluid--warning"), warn), _classnames));
42
+
43
+ var errorText = function errorText() {
44
+ if (invalid) {
45
+ return invalidText;
46
+ }
47
+
48
+ if (warn) {
49
+ return warnText;
50
+ }
51
+ };
52
+
53
+ var error = invalid || warn;
54
+ return /*#__PURE__*/React__default["default"].createElement("div", {
55
+ className: classNames
56
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
57
+ className: "".concat(prefix, "--time-picker--fluid__wrapper")
58
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
59
+ className: "".concat(prefix, "--time-picker__input")
60
+ }, /*#__PURE__*/React__default["default"].createElement(FluidTextInput["default"], _rollupPluginBabelHelpers["extends"]({
61
+ disabled: disabled,
62
+ ref: ref
63
+ }, other))), disabled ? React__default["default"].Children.toArray(children).map(function (child) {
64
+ return /*#__PURE__*/React__default["default"].cloneElement(child, {
65
+ disabled: disabled
66
+ });
67
+ }) : children), error && /*#__PURE__*/React__default["default"].createElement("hr", {
68
+ className: "".concat(prefix, "--time-picker__divider")
69
+ }), error && /*#__PURE__*/React__default["default"].createElement("div", {
70
+ className: "".concat(prefix, "--form-requirement")
71
+ }, errorText()), error && invalid ? /*#__PURE__*/React__default["default"].createElement(iconsReact.WarningFilled, {
72
+ className: "".concat(prefix, "--time-picker__icon ").concat(prefix, "--time-picker__icon--invalid")
73
+ }) : /*#__PURE__*/React__default["default"].createElement(iconsReact.WarningAltFilled, {
74
+ className: "".concat(prefix, "--time-picker__icon ").concat(prefix, "--time-picker__icon--warn")
75
+ }));
76
+ });
77
+ FluidTimePicker.propTypes = {
78
+ /**
79
+ * The child node(s)
80
+ */
81
+ children: PropTypes__default["default"].node,
82
+
83
+ /**
84
+ * Specify an optional className to be applied to the outer FluidTimePicker wrapper
85
+ */
86
+ className: PropTypes__default["default"].string,
87
+
88
+ /**
89
+ * Specify whether the `<input>` should be disabled
90
+ */
91
+ disabled: PropTypes__default["default"].bool,
92
+
93
+ /**
94
+ * Specify whether or not the control is invalid
95
+ */
96
+ invalid: PropTypes__default["default"].bool,
97
+
98
+ /**
99
+ * Provide the text that is displayed when the control is in error state
100
+ */
101
+ invalidText: PropTypes__default["default"].node,
102
+
103
+ /**
104
+ * Provide the text that will be read by a screen reader when visiting this
105
+ * control
106
+ */
107
+ labelText: PropTypes__default["default"].node.isRequired,
108
+
109
+ /**
110
+ * Specify whether the control is currently in warning state
111
+ */
112
+ warn: PropTypes__default["default"].bool,
113
+
114
+ /**
115
+ * Provide the text that is displayed when the control is in warning state
116
+ */
117
+ warnText: PropTypes__default["default"].node
118
+ };
119
+
120
+ exports["default"] = FluidTimePicker;
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Copyright IBM Corp. 2016, 2022
3
+ *
4
+ * This source code is licensed under the Apache-2.0 license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ 'use strict';
9
+
10
+ Object.defineProperty(exports, '__esModule', { value: true });
11
+
12
+ var _rollupPluginBabelHelpers = require('../../_virtual/_rollupPluginBabelHelpers.js');
13
+ var React = require('react');
14
+ var PropTypes = require('prop-types');
15
+ var FluidSelect = require('../FluidSelect/FluidSelect.js');
16
+ require('../FluidSelect/FluidSelect.Skeleton.js');
17
+
18
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
19
+
20
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
21
+ var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
22
+
23
+ var _excluded = ["children", "className"];
24
+ var FluidTimePickerSelect = /*#__PURE__*/React__default["default"].forwardRef(function FluidTimePickerSelect(_ref, ref) {
25
+ var children = _ref.children,
26
+ className = _ref.className,
27
+ other = _rollupPluginBabelHelpers.objectWithoutProperties(_ref, _excluded);
28
+
29
+ return /*#__PURE__*/React__default["default"].createElement(FluidSelect["default"], _rollupPluginBabelHelpers["extends"]({
30
+ className: className,
31
+ ref: ref
32
+ }, other), children);
33
+ });
34
+ FluidTimePickerSelect.propTypes = {
35
+ /**
36
+ * Provide the contents of your Select
37
+ */
38
+ children: PropTypes__default["default"].node,
39
+
40
+ /**
41
+ * Specify an optional className to be applied to the node containing the label and the select box
42
+ */
43
+ className: PropTypes__default["default"].string,
44
+
45
+ /**
46
+ * Optionally provide the default value of the `<select>`
47
+ */
48
+ defaultValue: PropTypes__default["default"].any,
49
+
50
+ /**
51
+ * Specify whether the control is disabled
52
+ */
53
+ disabled: PropTypes__default["default"].bool,
54
+
55
+ /**
56
+ * Specify a custom `id` for the `<select>`
57
+ */
58
+ id: PropTypes__default["default"].string.isRequired,
59
+
60
+ /**
61
+ * Provide label text to be read by screen readers when interacting with the
62
+ * control
63
+ */
64
+ labelText: PropTypes__default["default"].node,
65
+
66
+ /**
67
+ * Provide an optional `onChange` hook that is called each time the value of
68
+ * the underlying `<input>` changes
69
+ */
70
+ onChange: PropTypes__default["default"].func
71
+ };
72
+
73
+ exports["default"] = FluidTimePickerSelect;
@@ -152,9 +152,9 @@ var Select = /*#__PURE__*/React__default["default"].forwardRef(function Select(_
152
152
  "data-invalid": invalid || null,
153
153
  onFocus: handleFocus,
154
154
  onBlur: handleFocus
155
- }, input), isFluid && /*#__PURE__*/React__default["default"].createElement("hr", {
155
+ }, input, isFluid && /*#__PURE__*/React__default["default"].createElement("hr", {
156
156
  className: "".concat(prefix, "--select__divider")
157
- }), !inline && error ? error : helper));
157
+ }), isFluid && error ? error : null), !inline && !isFluid && error ? error : helper));
158
158
  });
159
159
  Select.displayName = 'Select';
160
160
  Select.propTypes = {
@@ -19,6 +19,7 @@ var index = require('../FeatureFlags/index.js');
19
19
  var usePrefix = require('../../internal/usePrefix.js');
20
20
  require('../FluidForm/FluidForm.js');
21
21
  var FormContext = require('../FluidForm/FormContext.js');
22
+ var useAnnouncer = require('../../internal/useAnnouncer.js');
22
23
 
23
24
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
24
25
 
@@ -60,11 +61,6 @@ var TextArea = /*#__PURE__*/React__default["default"].forwardRef(function TextAr
60
61
  textCount = _useState2[0],
61
62
  setTextCount = _useState2[1];
62
63
 
63
- var _useState3 = React.useState(''),
64
- _useState4 = _rollupPluginBabelHelpers.slicedToArray(_useState3, 2),
65
- ariaAnnouncement = _useState4[0],
66
- setAriaAnnouncement = _useState4[1];
67
-
68
64
  var textareaProps = {
69
65
  id: id,
70
66
  onChange: function onChange(evt) {
@@ -88,15 +84,7 @@ var TextArea = /*#__PURE__*/React__default["default"].forwardRef(function TextAr
88
84
  textareaProps.maxLength = maxCount;
89
85
  }
90
86
 
91
- React.useEffect(function () {
92
- var lastTen = maxCount - 10;
93
-
94
- if (textCount >= lastTen) {
95
- setAriaAnnouncement("".concat(maxCount - textCount, " characters left."));
96
- } else {
97
- setAriaAnnouncement('');
98
- }
99
- }, [textCount, maxCount]);
87
+ var ariaAnnouncement = useAnnouncer.useAnnouncer(textCount, maxCount);
100
88
  var labelClasses = cx__default["default"]("".concat(prefix, "--label"), (_classNames = {}, _rollupPluginBabelHelpers.defineProperty(_classNames, "".concat(prefix, "--visually-hidden"), hideLabel && !isFluid), _rollupPluginBabelHelpers.defineProperty(_classNames, "".concat(prefix, "--label--disabled"), disabled), _classNames));
101
89
  var label = labelText ? /*#__PURE__*/React__default["default"].createElement("label", {
102
90
  htmlFor: id,
@@ -23,6 +23,7 @@ var FormContext = require('../FluidForm/FormContext.js');
23
23
  var index = require('../FeatureFlags/index.js');
24
24
  var FeatureFlags = require('@carbon/feature-flags');
25
25
  var usePrefix = require('../../internal/usePrefix.js');
26
+ var useAnnouncer = require('../../internal/useAnnouncer.js');
26
27
 
27
28
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
28
29
 
@@ -166,6 +167,7 @@ var TextInput = /*#__PURE__*/React__default["default"].forwardRef(function TextI
166
167
  var _useContext = React.useContext(FormContext.FormContext),
167
168
  isFluid = _useContext.isFluid;
168
169
 
170
+ var ariaAnnouncement = useAnnouncer.useAnnouncer(textCount, maxCount);
169
171
  return /*#__PURE__*/React__default["default"].createElement("div", {
170
172
  className: inputWrapperClasses
171
173
  }, !inline ? labelWrapper : /*#__PURE__*/React__default["default"].createElement("div", {
@@ -177,7 +179,10 @@ var TextInput = /*#__PURE__*/React__default["default"].forwardRef(function TextI
177
179
  "data-invalid": normalizedProps.invalid || null
178
180
  }, normalizedProps.icon && /*#__PURE__*/React__default["default"].createElement(normalizedProps.icon, {
179
181
  className: iconClasses
180
- }), input, isFluid && /*#__PURE__*/React__default["default"].createElement("hr", {
182
+ }), input, /*#__PURE__*/React__default["default"].createElement("span", {
183
+ className: "".concat(prefix, "--text-input__counter-alert"),
184
+ role: "alert"
185
+ }, ariaAnnouncement), isFluid && /*#__PURE__*/React__default["default"].createElement("hr", {
181
186
  className: "".concat(prefix, "--text-input__divider")
182
187
  }), isFluid && !inline && normalizedProps.validation), !isFluid && !inline && (normalizedProps.validation || helper)));
183
188
  });
package/lib/index.js CHANGED
@@ -169,6 +169,9 @@ var FluidTextArea = require('./components/FluidTextArea/FluidTextArea.js');
169
169
  var FluidTextArea_Skeleton = require('./components/FluidTextArea/FluidTextArea.Skeleton.js');
170
170
  var FluidTextInput = require('./components/FluidTextInput/FluidTextInput.js');
171
171
  var FluidTextInput_Skeleton = require('./components/FluidTextInput/FluidTextInput.Skeleton.js');
172
+ var FluidTimePicker = require('./components/FluidTimePicker/FluidTimePicker.js');
173
+ var FluidTimePicker_Skeleton = require('./components/FluidTimePicker/FluidTimePicker.Skeleton.js');
174
+ var FluidTimePickerSelect = require('./components/FluidTimePickerSelect/FluidTimePickerSelect.js');
172
175
  var index$a = require('./components/Heading/index.js');
173
176
  var index$b = require('./components/IconButton/index.js');
174
177
  var index$c = require('./components/Layer/index.js');
@@ -406,6 +409,9 @@ exports.unstable__FluidTextArea = FluidTextArea["default"];
406
409
  exports.unstable__FluidTextAreaSkeleton = FluidTextArea_Skeleton["default"];
407
410
  exports.unstable__FluidTextInput = FluidTextInput["default"];
408
411
  exports.unstable__FluidTextInputSkeleton = FluidTextInput_Skeleton["default"];
412
+ exports.unstable__FluidTimePicker = FluidTimePicker["default"];
413
+ exports.unstable__FluidTimePickerSkeleton = FluidTimePicker_Skeleton["default"];
414
+ exports.unstable__FluidTimePickerSelect = FluidTimePickerSelect["default"];
409
415
  exports.Heading = index$a.Heading;
410
416
  exports.Section = index$a.Section;
411
417
  exports.IconButton = index$b.IconButton;
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Copyright IBM Corp. 2016, 2022
3
+ *
4
+ * This source code is licensed under the Apache-2.0 license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ 'use strict';
9
+
10
+ Object.defineProperty(exports, '__esModule', { value: true });
11
+
12
+ function useAnnouncer(textCount, maxCount) {
13
+ var lastTen = maxCount - 10;
14
+
15
+ if (textCount >= lastTen) {
16
+ return "".concat(maxCount - textCount, " characters left.");
17
+ }
18
+ }
19
+
20
+ exports.useAnnouncer = useAnnouncer;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@carbon/react",
3
3
  "description": "React components for the Carbon Design System",
4
- "version": "1.18.0-rc.0",
4
+ "version": "1.18.0",
5
5
  "license": "Apache-2.0",
6
6
  "main": "lib/index.js",
7
7
  "module": "es/index.js",
@@ -43,10 +43,10 @@
43
43
  },
44
44
  "dependencies": {
45
45
  "@babel/runtime": "^7.18.3",
46
- "@carbon/feature-flags": "^0.10.0-rc.0",
47
- "@carbon/icons-react": "^11.12.0-rc.0",
48
- "@carbon/layout": "^11.8.0-rc.0",
49
- "@carbon/styles": "^1.18.0-rc.0",
46
+ "@carbon/feature-flags": "^0.10.0",
47
+ "@carbon/icons-react": "^11.12.0",
48
+ "@carbon/layout": "^11.8.0",
49
+ "@carbon/styles": "^1.18.0",
50
50
  "@carbon/telemetry": "0.1.0",
51
51
  "classnames": "2.3.2",
52
52
  "copy-to-clipboard": "^3.3.1",
@@ -73,7 +73,7 @@
73
73
  "@babel/preset-env": "^7.18.2",
74
74
  "@babel/preset-react": "^7.17.12",
75
75
  "@carbon/test-utils": "^10.26.0",
76
- "@carbon/themes": "^11.13.0-rc.0",
76
+ "@carbon/themes": "^11.13.0",
77
77
  "@rollup/plugin-babel": "^5.3.0",
78
78
  "@rollup/plugin-commonjs": "^21.0.0",
79
79
  "@rollup/plugin-node-resolve": "^15.0.0",
@@ -135,5 +135,5 @@
135
135
  "**/*.scss",
136
136
  "**/*.css"
137
137
  ],
138
- "gitHead": "50cfaf729cfe80fecb6f7371ef13b53b25514145"
138
+ "gitHead": "00fdab625998b2ae048814059ae8447435d6c7cd"
139
139
  }
@@ -0,0 +1,9 @@
1
+ // Code generated by @carbon/react. DO NOT EDIT.
2
+ //
3
+ // Copyright IBM Corp. 2018, 2018
4
+ //
5
+ // This source code is licensed under the Apache-2.0 license found in the
6
+ // LICENSE file in the root directory of this source tree.
7
+ //
8
+
9
+ @forward '@carbon/styles/scss/components/fluid-time-picker/fluid-time-picker';
@@ -0,0 +1,9 @@
1
+ // Code generated by @carbon/react. DO NOT EDIT.
2
+ //
3
+ // Copyright IBM Corp. 2018, 2018
4
+ //
5
+ // This source code is licensed under the Apache-2.0 license found in the
6
+ // LICENSE file in the root directory of this source tree.
7
+ //
8
+
9
+ @forward '@carbon/styles/scss/components/fluid-time-picker';