@carbon/react 1.17.0-rc.1 → 1.17.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 (37) hide show
  1. package/es/components/DatePicker/DatePicker.js +68 -6
  2. package/es/components/DatePickerInput/DatePickerInput.js +25 -9
  3. package/es/components/FluidDatePicker/FluidDatePicker.Skeleton.js +67 -0
  4. package/es/components/FluidDatePicker/FluidDatePicker.js +76 -0
  5. package/es/components/FluidDatePickerInput/FluidDatePickerInput.js +26 -0
  6. package/es/components/ListBox/ListBoxSelection.js +11 -4
  7. package/es/components/MultiSelect/MultiSelect.js +28 -5
  8. package/es/components/OverflowMenu/index.js +1 -2
  9. package/es/components/SkeletonPlaceholder/SkeletonPlaceholder.js +2 -1
  10. package/es/components/SkeletonText/SkeletonText.js +1 -1
  11. package/es/components/StructuredList/StructuredList.js +89 -54
  12. package/es/components/TextArea/TextArea.js +4 -2
  13. package/es/index.js +4 -1
  14. package/es/internal/FloatingMenu.js +3 -1
  15. package/lib/components/DatePicker/DatePicker.js +66 -4
  16. package/lib/components/DatePickerInput/DatePickerInput.js +24 -8
  17. package/lib/components/FluidDatePicker/FluidDatePicker.Skeleton.js +77 -0
  18. package/lib/components/FluidDatePicker/FluidDatePicker.js +86 -0
  19. package/lib/components/FluidDatePickerInput/FluidDatePickerInput.js +34 -0
  20. package/lib/components/ListBox/ListBoxSelection.js +11 -4
  21. package/lib/components/MultiSelect/MultiSelect.js +28 -5
  22. package/lib/components/OverflowMenu/index.js +1 -22
  23. package/lib/components/SkeletonPlaceholder/SkeletonPlaceholder.js +2 -1
  24. package/lib/components/SkeletonText/SkeletonText.js +1 -1
  25. package/lib/components/StructuredList/StructuredList.js +87 -52
  26. package/lib/components/TextArea/TextArea.js +4 -2
  27. package/lib/index.js +43 -37
  28. package/lib/internal/FloatingMenu.js +3 -1
  29. package/package.json +5 -5
  30. package/scss/components/fluid-date-picker/_fluid-date-picker.scss +9 -0
  31. package/scss/components/fluid-date-picker/_index.scss +9 -0
  32. package/es/components/StructuredList/index.js +0 -43
  33. package/es/components/StructuredList/next/StructuredList.js +0 -342
  34. package/es/internal/ComponentToggle.js +0 -42
  35. package/lib/components/StructuredList/index.js +0 -52
  36. package/lib/components/StructuredList/next/StructuredList.js +0 -357
  37. package/lib/internal/ComponentToggle.js +0 -50
@@ -5,21 +5,22 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
 
8
- import { objectWithoutProperties as _objectWithoutProperties, defineProperty as _defineProperty, extends as _extends } from '../../_virtual/_rollupPluginBabelHelpers.js';
9
- import React__default from 'react';
8
+ import { objectWithoutProperties as _objectWithoutProperties, defineProperty as _defineProperty, slicedToArray as _slicedToArray, extends as _extends } from '../../_virtual/_rollupPluginBabelHelpers.js';
9
+ import React__default, { useState } from 'react';
10
10
  import PropTypes from 'prop-types';
11
11
  import cx from 'classnames';
12
- import setupGetInstanceId from '../../tools/setupGetInstanceId.js';
12
+ import { useId } from '../../internal/useId.js';
13
13
  import deprecate from '../../prop-types/deprecate.js';
14
14
  import { usePrefix } from '../../internal/usePrefix.js';
15
15
 
16
- var _excluded = ["children", "selection", "className", "ariaLabel", "isCondensed", "isFlush", "border"],
16
+ var _excluded = ["children", "selection", "className", "ariaLabel", "isCondensed", "isFlush"],
17
17
  _excluded2 = ["children", "className"],
18
18
  _excluded3 = ["children", "className"],
19
- _excluded4 = ["onKeyDown", "tabIndex", "children", "className", "head", "label"],
20
- _excluded5 = ["className", "value", "name", "title", "id"],
19
+ _excluded4 = ["onKeyDown", "children", "className", "head"],
20
+ _excluded5 = ["className", "name", "title", "id"],
21
21
  _excluded6 = ["children", "className", "head", "noWrap"];
22
- var getInstanceId = setupGetInstanceId();
22
+ var GridSelectedRowStateContext = /*#__PURE__*/React__default.createContext(null);
23
+ var GridSelectedRowDispatchContext = /*#__PURE__*/React__default.createContext(null);
23
24
  function StructuredListWrapper(props) {
24
25
  var _classNames;
25
26
 
@@ -28,18 +29,27 @@ function StructuredListWrapper(props) {
28
29
  className = props.className,
29
30
  ariaLabel = props.ariaLabel,
30
31
  isCondensed = props.isCondensed,
31
- isFlush = props.isFlush;
32
- props.border;
33
- var other = _objectWithoutProperties(props, _excluded);
32
+ isFlush = props.isFlush,
33
+ other = _objectWithoutProperties(props, _excluded);
34
34
 
35
35
  var prefix = usePrefix();
36
36
  var classes = cx("".concat(prefix, "--structured-list"), className, (_classNames = {}, _defineProperty(_classNames, "".concat(prefix, "--structured-list--selection"), selection), _defineProperty(_classNames, "".concat(prefix, "--structured-list--condensed"), isCondensed), _defineProperty(_classNames, "".concat(prefix, "--structured-list--flush"), isFlush), _classNames));
37
- return /*#__PURE__*/React__default.createElement("div", _extends({
37
+
38
+ var _React$useState = React__default.useState(null),
39
+ _React$useState2 = _slicedToArray(_React$useState, 2),
40
+ selectedRow = _React$useState2[0],
41
+ setSelectedRow = _React$useState2[1];
42
+
43
+ return /*#__PURE__*/React__default.createElement(GridSelectedRowStateContext.Provider, {
44
+ value: selectedRow
45
+ }, /*#__PURE__*/React__default.createElement(GridSelectedRowDispatchContext.Provider, {
46
+ value: setSelectedRow
47
+ }, /*#__PURE__*/React__default.createElement("div", _extends({
38
48
  role: "table",
39
49
  className: classes
40
50
  }, other, {
41
51
  "aria-label": ariaLabel
42
- }), children);
52
+ }), children)));
43
53
  }
44
54
  StructuredListWrapper.propTypes = {
45
55
  /**
@@ -47,11 +57,6 @@ StructuredListWrapper.propTypes = {
47
57
  */
48
58
  ariaLabel: PropTypes.string,
49
59
 
50
- /**
51
- * Specify whether a border should be added to your StructuredListWrapper
52
- */
53
- border: deprecate(PropTypes.bool, "\nThe prop `border` will be removed in the next major version of Carbon."),
54
-
55
60
  /**
56
61
  * Provide the contents of your StructuredListWrapper
57
62
  */
@@ -79,9 +84,9 @@ StructuredListWrapper.propTypes = {
79
84
  };
80
85
  StructuredListWrapper.defaultProps = {
81
86
  selection: false,
82
- ariaLabel: 'Structured list section',
83
87
  isCondensed: false,
84
- isFlush: false
88
+ isFlush: false,
89
+ ariaLabel: 'Structured list section'
85
90
  };
86
91
  function StructuredListHead(props) {
87
92
  var children = props.children,
@@ -138,29 +143,51 @@ StructuredListBody.propTypes = {
138
143
  StructuredListBody.defaultProps = {
139
144
  onKeyDown: function onKeyDown() {}
140
145
  };
146
+ var GridRowContext = /*#__PURE__*/React__default.createContext(null);
141
147
  function StructuredListRow(props) {
148
+ var _classNames2;
149
+
142
150
  var onKeyDown = props.onKeyDown,
143
- tabIndex = props.tabIndex,
144
151
  children = props.children,
145
152
  className = props.className,
146
153
  head = props.head,
147
- label = props.label,
148
154
  other = _objectWithoutProperties(props, _excluded4);
149
155
 
156
+ var _useState = useState(false),
157
+ _useState2 = _slicedToArray(_useState, 2),
158
+ hasFocusWithin = _useState2[0],
159
+ setHasFocusWithin = _useState2[1];
160
+
161
+ var id = useId('grid-input');
162
+ var setSelectedRow = React__default.useContext(GridSelectedRowDispatchContext);
150
163
  var prefix = usePrefix();
151
- var classes = cx("".concat(prefix, "--structured-list-row"), className, _defineProperty({}, "".concat(prefix, "--structured-list-row--header-row"), head));
152
- return label ?
153
- /*#__PURE__*/
154
- // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions
155
- React__default.createElement("label", _extends({}, other, {
156
- tabIndex: tabIndex,
157
- className: classes,
158
- onKeyDown: onKeyDown
159
- }), children) : /*#__PURE__*/React__default.createElement("div", _extends({
164
+ var value = {
165
+ id: id
166
+ };
167
+ var classes = cx("".concat(prefix, "--structured-list-row"), className, (_classNames2 = {}, _defineProperty(_classNames2, "".concat(prefix, "--structured-list-row--header-row"), head), _defineProperty(_classNames2, "".concat(prefix, "--structured-list-row--focused-within"), hasFocusWithin), _classNames2));
168
+ return head ? /*#__PURE__*/React__default.createElement("div", _extends({
160
169
  role: "row"
161
170
  }, other, {
162
171
  className: classes
163
- }), children);
172
+ }), children) :
173
+ /*#__PURE__*/
174
+ // eslint-disable-next-line jsx-a11y/interactive-supports-focus
175
+ React__default.createElement("div", _extends({}, other, {
176
+ role: "row",
177
+ className: classes,
178
+ onClick: function onClick() {
179
+ return setSelectedRow(id);
180
+ },
181
+ onFocus: function onFocus() {
182
+ setHasFocusWithin(true);
183
+ },
184
+ onBlur: function onBlur() {
185
+ setHasFocusWithin(false);
186
+ },
187
+ onKeyDown: onKeyDown
188
+ }), /*#__PURE__*/React__default.createElement(GridRowContext.Provider, {
189
+ value: value
190
+ }, children));
164
191
  }
165
192
  StructuredListRow.propTypes = {
166
193
  /**
@@ -181,42 +208,44 @@ StructuredListRow.propTypes = {
181
208
  /**
182
209
  * Specify whether a `<label>` should be used
183
210
  */
184
- label: PropTypes.bool,
211
+ label: deprecate(PropTypes.bool, "\nThe `label` prop is no longer needed and will be removed in the next major version of Carbon."),
185
212
 
186
213
  /**
187
214
  * Provide a handler that is invoked on the key down event for the control,
188
- * if `<label>` is in use
189
- */
190
- onKeyDown: PropTypes.func,
191
-
192
- /**
193
- * Specify the tab index of the container node, if `<label>` is in use
194
215
  */
195
- tabIndex: PropTypes.number
216
+ onKeyDown: PropTypes.func
196
217
  };
197
218
  StructuredListRow.defaultProps = {
198
219
  head: false,
199
- label: false,
200
- tabIndex: 0,
201
220
  onKeyDown: function onKeyDown() {}
202
221
  };
203
222
  function StructuredListInput(props) {
223
+ var _row$id;
224
+
225
+ var defaultId = useId('structureListInput');
226
+
204
227
  var className = props.className,
205
- value = props.value,
206
- name = props.name,
228
+ _props$name = props.name,
229
+ name = _props$name === void 0 ? "structured-list-input-".concat(defaultId) : _props$name,
207
230
  title = props.title,
208
231
  id = props.id,
209
232
  other = _objectWithoutProperties(props, _excluded5);
210
233
 
211
234
  var prefix = usePrefix();
212
- var classes = cx("".concat(prefix, "--structured-list-input"), className);
213
- var instanceId = id || getInstanceId();
235
+ var classes = cx("".concat(prefix, "--structured-list-input"), "".concat(prefix, "--visually-hidden"), className);
236
+ var row = React__default.useContext(GridRowContext);
237
+ var selectedRow = React__default.useContext(GridSelectedRowStateContext);
238
+ var setSelectedRow = React__default.useContext(GridSelectedRowDispatchContext);
214
239
  return /*#__PURE__*/React__default.createElement("input", _extends({}, other, {
215
240
  type: "radio",
216
- tabIndex: -1,
217
- id: instanceId,
241
+ tabIndex: 0,
242
+ checked: row && row.id === selectedRow,
243
+ value: (_row$id = row === null || row === void 0 ? void 0 : row.id) !== null && _row$id !== void 0 ? _row$id : '',
244
+ onChange: function onChange(event) {
245
+ setSelectedRow(event.target.value);
246
+ },
247
+ id: id !== null && id !== void 0 ? id : defaultId,
218
248
  className: classes,
219
- value: value,
220
249
  name: name,
221
250
  title: title
222
251
  }));
@@ -230,7 +259,7 @@ StructuredListInput.propTypes = {
230
259
  /**
231
260
  * Specify whether the underlying input should be checked by default
232
261
  */
233
- defaultChecked: PropTypes.bool,
262
+ defaultChecked: deprecate(PropTypes.bool, "\nThe prop `defaultChecked` is no longer needed and will be removed in the next major version of Carbon."),
234
263
 
235
264
  /**
236
265
  * Specify a custom `id` for the input
@@ -245,7 +274,7 @@ StructuredListInput.propTypes = {
245
274
  /**
246
275
  * Provide an optional hook that is called each time the input is updated
247
276
  */
248
- onChange: PropTypes.func,
277
+ onChange: deprecate(PropTypes.func, "\nThe prop `onChange` will be removed in the next major version of Carbon."),
249
278
 
250
279
  /**
251
280
  * Provide a `title` for the input
@@ -255,11 +284,9 @@ StructuredListInput.propTypes = {
255
284
  /**
256
285
  * Specify the value of the input
257
286
  */
258
- value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired
287
+ value: deprecate(PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired, "\nThe prop `value` will be removed in the next major version of Carbon.")
259
288
  };
260
289
  StructuredListInput.defaultProps = {
261
- onChange: function onChange() {},
262
- value: 'value',
263
290
  title: 'title'
264
291
  };
265
292
  function StructuredListCell(props) {
@@ -273,9 +300,17 @@ function StructuredListCell(props) {
273
300
 
274
301
  var prefix = usePrefix();
275
302
  var classes = cx(className, (_classNames3 = {}, _defineProperty(_classNames3, "".concat(prefix, "--structured-list-th"), head), _defineProperty(_classNames3, "".concat(prefix, "--structured-list-td"), !head), _defineProperty(_classNames3, "".concat(prefix, "--structured-list-content--nowrap"), noWrap), _classNames3));
303
+
304
+ if (head) {
305
+ return /*#__PURE__*/React__default.createElement("span", _extends({
306
+ className: classes,
307
+ role: "columnheader"
308
+ }, other), children);
309
+ }
310
+
276
311
  return /*#__PURE__*/React__default.createElement("div", _extends({
277
312
  className: classes,
278
- role: head ? 'columnheader' : 'cell'
313
+ role: "cell"
279
314
  }, other), children);
280
315
  }
281
316
  StructuredListCell.propTypes = {
@@ -113,7 +113,10 @@ var TextArea = /*#__PURE__*/React__default.forwardRef(function TextArea(_ref, re
113
113
  className: textareaClasses,
114
114
  "aria-invalid": invalid || null,
115
115
  "aria-describedby": invalid ? errorId : null,
116
- disabled: other.disabled
116
+ disabled: other.disabled,
117
+ style: other.cols ? {} : {
118
+ width: "100%"
119
+ }
117
120
  }));
118
121
  return /*#__PURE__*/React__default.createElement("div", {
119
122
  className: enabled ? cx("".concat(prefix, "--form-item"), className) : "".concat(prefix, "--form-item")
@@ -234,7 +237,6 @@ TextArea.defaultProps = {
234
237
  onClick: function onClick() {},
235
238
  placeholder: '',
236
239
  rows: 4,
237
- cols: 50,
238
240
  invalid: false,
239
241
  invalidText: '',
240
242
  helperText: '',
package/es/index.js CHANGED
@@ -66,7 +66,6 @@ export { default as SelectItem } from './components/SelectItem/SelectItem.js';
66
66
  export { default as SelectItemGroup } from './components/SelectItemGroup/SelectItemGroup.js';
67
67
  export { default as Switch } from './components/Switch/Switch.js';
68
68
  export { default as Slider } from './components/Slider/index.js';
69
- export { StructuredListBody, StructuredListCell, StructuredListHead, StructuredListInput, StructuredListRow, StructuredListWrapper } from './components/StructuredList/index.js';
70
69
  export { default as Tab } from './components/Tab/index.js';
71
70
  export { default as TabContent } from './components/TabContent/TabContent.js';
72
71
  export { IconTab, TabList, TabPanel, TabPanels, Tabs } from './components/Tabs/Tabs.js';
@@ -123,6 +122,7 @@ export { default as SideNavIcon } from './components/UIShell/SideNavIcon.js';
123
122
  export { default as SideNavItem } from './components/UIShell/SideNavItem.js';
124
123
  export { default as SideNavLinkText } from './components/UIShell/SideNavLinkText.js';
125
124
  export { default as unstable_useContextMenu } from './components/ContextMenu/useContextMenu.js';
125
+ export { default as unstable__FluidDatePickerSkeleton } from './components/FluidDatePicker/FluidDatePicker.Skeleton.js';
126
126
  export { default as unstable__FluidTextArea } from './components/FluidTextArea/FluidTextArea.js';
127
127
  export { default as unstable__FluidTextAreaSkeleton } from './components/FluidTextArea/FluidTextArea.Skeleton.js';
128
128
  export { default as unstable__FluidTextInput } from './components/FluidTextInput/FluidTextInput.js';
@@ -176,6 +176,7 @@ export { NumberInput } from './components/NumberInput/NumberInput.js';
176
176
  export { default as ControlledPasswordInput } from './components/TextInput/ControlledPasswordInput.js';
177
177
  export { default as PasswordInput } from './components/TextInput/PasswordInput.js';
178
178
  export { ProgressIndicator, ProgressStep } from './components/ProgressIndicator/ProgressIndicator.js';
179
+ export { StructuredListBody, StructuredListCell, StructuredListHead, StructuredListInput, StructuredListRow, StructuredListWrapper } from './components/StructuredList/StructuredList.js';
179
180
  export { default as StructuredListSkeleton } from './components/StructuredList/StructuredList.Skeleton.js';
180
181
  export { ClickableTile, ExpandableTile, SelectableTile, Tile, TileAboveTheFoldContent, TileBelowTheFoldContent } from './components/Tile/Tile.js';
181
182
  export { default as Content } from './components/UIShell/Content.js';
@@ -201,6 +202,8 @@ export { default as SideNavMenuItem } from './components/UIShell/SideNavMenuItem
201
202
  export { default as SideNavSwitcher } from './components/UIShell/SideNavSwitcher.js';
202
203
  export { default as unstable__FluidComboBox } from './components/FluidComboBox/FluidComboBox.js';
203
204
  export { default as unstable__FluidComboBoxSkeleton } from './components/FluidComboBox/FluidComboBox.Skeleton.js';
205
+ export { default as unstable__FluidDatePicker } from './components/FluidDatePicker/FluidDatePicker.js';
206
+ export { default as unstable__FluidDatePickerInput } from './components/FluidDatePickerInput/FluidDatePickerInput.js';
204
207
  export { default as unstable__FluidDropdown } from './components/FluidDropdown/FluidDropdown.js';
205
208
  export { default as unstable__FluidDropdownSkeleton } from './components/FluidDropdown/FluidDropdown.Skeleton.js';
206
209
  export { default as unstable__FluidMultiSelect } from './components/FluidMultiSelect/FluidMultiSelect.js';
@@ -480,4 +480,6 @@ _defineProperty(FloatingMenu, "defaultProps", {
480
480
  updateOrientation: null
481
481
  });
482
482
 
483
- export { DIRECTION_BOTTOM, DIRECTION_LEFT, DIRECTION_RIGHT, DIRECTION_TOP, FloatingMenu as default };
483
+ var FloatingMenu$1 = FloatingMenu;
484
+
485
+ export { DIRECTION_BOTTOM, DIRECTION_LEFT, DIRECTION_RIGHT, DIRECTION_TOP, FloatingMenu$1 as default };
@@ -22,6 +22,8 @@ var rangePlugin = require('./plugins/rangePlugin.js');
22
22
  var deprecate = require('../../prop-types/deprecate.js');
23
23
  var usePrefix = require('../../internal/usePrefix.js');
24
24
  var useSavedCallback = require('../../internal/useSavedCallback.js');
25
+ var iconsReact = require('@carbon/icons-react');
26
+ var FormContext = require('../FluidForm/FormContext.js');
25
27
  var match = require('../../internal/keyboard/match.js');
26
28
  var keys = require('../../internal/keyboard/keys.js');
27
29
 
@@ -32,7 +34,7 @@ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
32
34
  var cx__default = /*#__PURE__*/_interopDefaultLegacy(cx);
33
35
  var flatpickr__default = /*#__PURE__*/_interopDefaultLegacy(flatpickr);
34
36
 
35
- var _excluded = ["allowInput", "appendTo", "children", "className", "closeOnSelect", "dateFormat", "datePickerType", "disable", "enable", "inline", "light", "locale", "maxDate", "minDate", "onChange", "onClose", "onOpen", "short", "value"];
37
+ var _excluded = ["allowInput", "appendTo", "children", "className", "closeOnSelect", "dateFormat", "datePickerType", "disable", "enable", "inline", "invalid", "invalidText", "warn", "warnText", "light", "locale", "maxDate", "minDate", "onChange", "onClose", "onOpen", "short", "value"];
36
38
 
37
39
  index["default"].en.weekdays.shorthand.forEach(function (_day, index$1) {
38
40
  var currentDay = index["default"].en.weekdays.shorthand;
@@ -172,6 +174,10 @@ var DatePicker = /*#__PURE__*/React__default["default"].forwardRef(function Date
172
174
  disable = _ref.disable,
173
175
  enable = _ref.enable,
174
176
  inline = _ref.inline,
177
+ invalid = _ref.invalid,
178
+ invalidText = _ref.invalidText,
179
+ warn = _ref.warn,
180
+ warnText = _ref.warnText,
175
181
  _ref$light = _ref.light,
176
182
  light = _ref$light === void 0 ? false : _ref$light,
177
183
  _ref$locale = _ref.locale,
@@ -187,6 +193,10 @@ var DatePicker = /*#__PURE__*/React__default["default"].forwardRef(function Date
187
193
  rest = _rollupPluginBabelHelpers.objectWithoutProperties(_ref, _excluded);
188
194
 
189
195
  var prefix = usePrefix.usePrefix();
196
+
197
+ var _useContext = React.useContext(FormContext.FormContext),
198
+ isFluid = _useContext.isFluid;
199
+
190
200
  var startInputField = React.useRef(null);
191
201
  var endInputField = React.useRef(null);
192
202
  var calendarRef = React.useRef(null);
@@ -293,6 +303,10 @@ var DatePicker = /*#__PURE__*/React__default["default"].forwardRef(function Date
293
303
  calendarRef.current = calendar;
294
304
 
295
305
  function handleArrowDown(event) {
306
+ if (match.match(event, keys.Escape)) {
307
+ calendar.calendarContainer.classList.remove('open');
308
+ }
309
+
296
310
  if (match.match(event, keys.ArrowDown)) {
297
311
  var calendarContainer = calendar.calendarContainer,
298
312
  fpSelectedDateElem = calendar.selectedDateElem,
@@ -304,6 +318,10 @@ var DatePicker = /*#__PURE__*/React__default["default"].forwardRef(function Date
304
318
  }
305
319
 
306
320
  function handleOnChange() {
321
+ if (datePickerType == 'single') {
322
+ calendar.calendarContainer.classList.remove('open');
323
+ }
324
+
307
325
  if (start.value !== '') {
308
326
  return;
309
327
  }
@@ -375,7 +393,7 @@ var DatePicker = /*#__PURE__*/React__default["default"].forwardRef(function Date
375
393
  }, [maxDate]);
376
394
  React.useEffect(function () {
377
395
  if (calendarRef.current && disable) {
378
- calendarRef.current.set('disbale', disable);
396
+ calendarRef.current.set('disable', disable);
379
397
  }
380
398
  }, [disable]);
381
399
  React.useEffect(function () {
@@ -399,12 +417,36 @@ var DatePicker = /*#__PURE__*/React__default["default"].forwardRef(function Date
399
417
  startInputField.current.value = value;
400
418
  }
401
419
  }, [value, prefix]);
420
+ var fluidError;
421
+
422
+ if (isFluid) {
423
+ if (invalid) {
424
+ fluidError = /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(iconsReact.WarningFilled, {
425
+ className: "".concat(prefix, "--date-picker__icon ").concat(prefix, "--date-picker__icon--invalid")
426
+ }), /*#__PURE__*/React__default["default"].createElement("hr", {
427
+ className: "".concat(prefix, "--date-picker__divider")
428
+ }), /*#__PURE__*/React__default["default"].createElement("div", {
429
+ className: "".concat(prefix, "--form-requirement")
430
+ }, invalidText));
431
+ }
432
+
433
+ if (warn && !invalid) {
434
+ fluidError = /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(iconsReact.WarningAltFilled, {
435
+ className: "".concat(prefix, "--date-picker__icon ").concat(prefix, "--date-picker__icon--warn")
436
+ }), /*#__PURE__*/React__default["default"].createElement("hr", {
437
+ className: "".concat(prefix, "--date-picker__divider")
438
+ }), /*#__PURE__*/React__default["default"].createElement("div", {
439
+ className: "".concat(prefix, "--form-requirement")
440
+ }, warnText));
441
+ }
442
+ }
443
+
402
444
  return /*#__PURE__*/React__default["default"].createElement("div", _rollupPluginBabelHelpers["extends"]({
403
445
  className: wrapperClasses,
404
446
  ref: ref
405
447
  }, rest), /*#__PURE__*/React__default["default"].createElement("div", {
406
448
  className: datePickerClasses
407
- }, childrenWithProps));
449
+ }, childrenWithProps), fluidError);
408
450
  });
409
451
  DatePicker.propTypes = {
410
452
  /**
@@ -462,6 +504,16 @@ DatePicker.propTypes = {
462
504
  */
463
505
  inline: PropTypes__default["default"].bool,
464
506
 
507
+ /**
508
+ * Specify whether or not the control is invalid (Fluid only)
509
+ */
510
+ invalid: PropTypes__default["default"].bool,
511
+
512
+ /**
513
+ * Provide the text that is displayed when the control is in error state (Fluid Only)
514
+ */
515
+ invalidText: PropTypes__default["default"].node,
516
+
465
517
  /**
466
518
  * `true` to use the light version.
467
519
  */
@@ -567,7 +619,17 @@ DatePicker.propTypes = {
567
619
  * The value of the date value provided to flatpickr, could
568
620
  * be a date, a date number, a date string, an array of dates.
569
621
  */
570
- value: PropTypes__default["default"].oneOfType([PropTypes__default["default"].string, PropTypes__default["default"].arrayOf(PropTypes__default["default"].oneOfType([PropTypes__default["default"].string, PropTypes__default["default"].number, PropTypes__default["default"].object])), PropTypes__default["default"].object, PropTypes__default["default"].number])
622
+ value: PropTypes__default["default"].oneOfType([PropTypes__default["default"].string, PropTypes__default["default"].arrayOf(PropTypes__default["default"].oneOfType([PropTypes__default["default"].string, PropTypes__default["default"].number, PropTypes__default["default"].object])), PropTypes__default["default"].object, PropTypes__default["default"].number]),
623
+
624
+ /**
625
+ * Specify whether the control is currently in warning state (Fluid only)
626
+ */
627
+ warn: PropTypes__default["default"].bool,
628
+
629
+ /**
630
+ * Provide the text that is displayed when the control is in warning state (Fluid only)
631
+ */
632
+ warnText: PropTypes__default["default"].node
571
633
  };
572
634
  var DatePicker$1 = DatePicker;
573
635
 
@@ -15,6 +15,7 @@ var cx = require('classnames');
15
15
  var PropTypes = require('prop-types');
16
16
  var React = require('react');
17
17
  var usePrefix = require('../../internal/usePrefix.js');
18
+ var FormContext = require('../FluidForm/FormContext.js');
18
19
 
19
20
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
20
21
 
@@ -24,7 +25,7 @@ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
24
25
 
25
26
  var _excluded = ["datePickerType", "disabled", "helperText", "hideLabel", "id", "invalid", "invalidText", "labelText", "onClick", "onChange", "pattern", "placeholder", "size", "type", "warn", "warnText"];
26
27
  var DatePickerInput = /*#__PURE__*/React__default["default"].forwardRef(function DatePickerInput(props, ref) {
27
- var _cx, _cx2, _cx4;
28
+ var _cx, _cx2, _cx4, _cx5;
28
29
 
29
30
  var datePickerType = props.datePickerType,
30
31
  _props$disabled = props.disabled,
@@ -52,6 +53,10 @@ var DatePickerInput = /*#__PURE__*/React__default["default"].forwardRef(function
52
53
  rest = _rollupPluginBabelHelpers.objectWithoutProperties(props, _excluded);
53
54
 
54
55
  var prefix = usePrefix.usePrefix();
56
+
57
+ var _useContext = React.useContext(FormContext.FormContext),
58
+ isFluid = _useContext.isFluid;
59
+
55
60
  var datePickerInputProps = {
56
61
  id: id,
57
62
  onChange: function onChange(event) {
@@ -71,8 +76,8 @@ var DatePickerInput = /*#__PURE__*/React__default["default"].forwardRef(function
71
76
  var wrapperClasses = cx__default["default"]("".concat(prefix, "--date-picker-input__wrapper"), (_cx = {}, _rollupPluginBabelHelpers.defineProperty(_cx, "".concat(prefix, "--date-picker-input__wrapper--invalid"), invalid), _rollupPluginBabelHelpers.defineProperty(_cx, "".concat(prefix, "--date-picker-input__wrapper--warn"), warn), _cx));
72
77
  var labelClasses = cx__default["default"]("".concat(prefix, "--label"), (_cx2 = {}, _rollupPluginBabelHelpers.defineProperty(_cx2, "".concat(prefix, "--visually-hidden"), hideLabel), _rollupPluginBabelHelpers.defineProperty(_cx2, "".concat(prefix, "--label--disabled"), disabled), _cx2));
73
78
  var helperTextClasses = cx__default["default"]("".concat(prefix, "--form__helper-text"), _rollupPluginBabelHelpers.defineProperty({}, "".concat(prefix, "--form__helper-text--disabled"), disabled));
74
- var inputClasses = cx__default["default"]("".concat(prefix, "--date-picker__input"), (_cx4 = {}, _rollupPluginBabelHelpers.defineProperty(_cx4, "".concat(prefix, "--date-picker__input--").concat(size), size), _rollupPluginBabelHelpers.defineProperty(_cx4, "".concat(prefix, "--date-picker__input--invalid"), invalid), _cx4));
75
- var containerClasses = cx__default["default"]("".concat(prefix, "--date-picker-container"), _rollupPluginBabelHelpers.defineProperty({}, "".concat(prefix, "--date-picker--nolabel"), !labelText));
79
+ var inputClasses = cx__default["default"]("".concat(prefix, "--date-picker__input"), (_cx4 = {}, _rollupPluginBabelHelpers.defineProperty(_cx4, "".concat(prefix, "--date-picker__input--").concat(size), size), _rollupPluginBabelHelpers.defineProperty(_cx4, "".concat(prefix, "--date-picker__input--invalid"), invalid), _rollupPluginBabelHelpers.defineProperty(_cx4, "".concat(prefix, "--date-picker__input--warn"), warn), _cx4));
80
+ var containerClasses = cx__default["default"]("".concat(prefix, "--date-picker-container"), (_cx5 = {}, _rollupPluginBabelHelpers.defineProperty(_cx5, "".concat(prefix, "--date-picker--nolabel"), !labelText), _rollupPluginBabelHelpers.defineProperty(_cx5, "".concat(prefix, "--date-picker--fluid--invalid"), isFluid && invalid), _rollupPluginBabelHelpers.defineProperty(_cx5, "".concat(prefix, "--date-picker--fluid--warn"), isFluid && warn), _cx5));
76
81
  var input = invalid ? /*#__PURE__*/React__default["default"].createElement("input", _rollupPluginBabelHelpers["extends"]({}, rest, datePickerInputProps, {
77
82
  disabled: disabled,
78
83
  ref: ref,
@@ -90,15 +95,21 @@ var DatePickerInput = /*#__PURE__*/React__default["default"].forwardRef(function
90
95
  className: labelClasses
91
96
  }, labelText), /*#__PURE__*/React__default["default"].createElement("div", {
92
97
  className: wrapperClasses
93
- }, input, /*#__PURE__*/React__default["default"].createElement(DatePickerIcon, {
98
+ }, input, isFluid && /*#__PURE__*/React__default["default"].createElement(DatePickerIcon, {
99
+ datePickerType: datePickerType
100
+ }), /*#__PURE__*/React__default["default"].createElement(DatePickerIcon, {
94
101
  datePickerType: datePickerType,
95
102
  invalid: invalid,
96
103
  warn: warn
97
- })), invalid && /*#__PURE__*/React__default["default"].createElement("div", {
104
+ })), invalid && /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, isFluid && /*#__PURE__*/React__default["default"].createElement("hr", {
105
+ className: "".concat(prefix, "--date-picker__divider")
106
+ }), /*#__PURE__*/React__default["default"].createElement("div", {
98
107
  className: "".concat(prefix, "--form-requirement")
99
- }, invalidText), warn && /*#__PURE__*/React__default["default"].createElement("div", {
108
+ }, invalidText)), warn && /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, isFluid && /*#__PURE__*/React__default["default"].createElement("hr", {
109
+ className: "".concat(prefix, "--date-picker__divider")
110
+ }), /*#__PURE__*/React__default["default"].createElement("div", {
100
111
  className: "".concat(prefix, "--form-requirement")
101
- }, warnText), helperText && /*#__PURE__*/React__default["default"].createElement("div", {
112
+ }, warnText)), helperText && /*#__PURE__*/React__default["default"].createElement("div", {
102
113
  className: helperTextClasses
103
114
  }, helperText));
104
115
  });
@@ -206,8 +217,13 @@ function DatePickerIcon(_ref) {
206
217
  warn = _ref.warn;
207
218
  var prefix = usePrefix.usePrefix();
208
219
 
220
+ var _useContext2 = React.useContext(FormContext.FormContext),
221
+ isFluid = _useContext2.isFluid;
222
+
209
223
  if (datePickerType === 'simple' && !invalid && !warn) {
210
- return null;
224
+ if (!isFluid) {
225
+ return null;
226
+ }
211
227
  }
212
228
 
213
229
  if (invalid) {
@@ -0,0 +1,77 @@
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
+ var FormContext = require('../FluidForm/FormContext.js');
18
+ var iconsReact = require('@carbon/icons-react');
19
+
20
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
21
+
22
+ var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
23
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
24
+ var cx__default = /*#__PURE__*/_interopDefaultLegacy(cx);
25
+
26
+ var _excluded = ["className", "datePickerType"];
27
+
28
+ function FluidDatePickerSkeleton(_ref) {
29
+ var className = _ref.className,
30
+ _ref$datePickerType = _ref.datePickerType,
31
+ datePickerType = _ref$datePickerType === void 0 ? 'single' : _ref$datePickerType,
32
+ other = _rollupPluginBabelHelpers.objectWithoutProperties(_ref, _excluded);
33
+
34
+ var prefix = usePrefix.usePrefix();
35
+ var classNames = cx__default["default"](className, "".concat(prefix, "--form-item ").concat(prefix, "--date-picker--fluid__skeleton"), _rollupPluginBabelHelpers.defineProperty({}, "".concat(prefix, "--date-picker--fluid__skeleton--range"), datePickerType === 'range'));
36
+ return /*#__PURE__*/React__default["default"].createElement(FormContext.FormContext.Provider, {
37
+ value: {
38
+ isFluid: true
39
+ }
40
+ }, /*#__PURE__*/React__default["default"].createElement("div", _rollupPluginBabelHelpers["extends"]({
41
+ className: classNames
42
+ }, other), /*#__PURE__*/React__default["default"].createElement("div", {
43
+ className: "".concat(prefix, "--date-picker--fluid__skeleton--container")
44
+ }, /*#__PURE__*/React__default["default"].createElement("span", {
45
+ className: "".concat(prefix, "--label ").concat(prefix, "--skeleton")
46
+ }), /*#__PURE__*/React__default["default"].createElement("div", {
47
+ className: "".concat(prefix, "--skeleton ").concat(prefix, "--text-input")
48
+ }), datePickerType !== 'simple' && /*#__PURE__*/React__default["default"].createElement(iconsReact.Calendar, {
49
+ className: "".concat(prefix, "--date-picker__icon"),
50
+ role: "img",
51
+ "aria-hidden": "true"
52
+ })), datePickerType === 'range' && /*#__PURE__*/React__default["default"].createElement("div", {
53
+ className: "".concat(prefix, "--date-picker--fluid__skeleton--container")
54
+ }, /*#__PURE__*/React__default["default"].createElement("span", {
55
+ className: "".concat(prefix, "--label ").concat(prefix, "--skeleton")
56
+ }), /*#__PURE__*/React__default["default"].createElement("div", {
57
+ className: "".concat(prefix, "--skeleton ").concat(prefix, "--text-input")
58
+ }), /*#__PURE__*/React__default["default"].createElement(iconsReact.Calendar, {
59
+ className: "".concat(prefix, "--date-picker__icon"),
60
+ role: "img",
61
+ "aria-hidden": "true"
62
+ }))));
63
+ }
64
+
65
+ FluidDatePickerSkeleton.propTypes = {
66
+ /**
67
+ * Specify an optional className to be applied to the outer FluidForm wrapper
68
+ */
69
+ className: PropTypes__default["default"].string,
70
+
71
+ /**
72
+ * Specify which variant of the DatePicker the skeleton should mimic
73
+ */
74
+ datePickerType: PropTypes__default["default"].oneOf(['simple', 'single', 'range'])
75
+ };
76
+
77
+ exports["default"] = FluidDatePickerSkeleton;