@algolia/satellite 1.0.0 → 1.1.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 (134) hide show
  1. package/dist/cjs/AutoComplete/AutoComplete.d.ts +1 -1
  2. package/dist/cjs/AutoComplete/AutoComplete.js +49 -26
  3. package/dist/cjs/AutoComplete/AutoComplete.tailwind.js +9 -1
  4. package/dist/cjs/AutoComplete/types.d.ts +1 -0
  5. package/dist/cjs/Checkbox/Checkbox.d.ts +1 -1
  6. package/dist/cjs/Checkbox/Checkbox.js +21 -13
  7. package/dist/cjs/Checkbox/Checkbox.tailwind.js +8 -2
  8. package/dist/cjs/DatePicker/DatePicker/DatePicker.d.ts +4 -2
  9. package/dist/cjs/DatePicker/DatePicker/DatePicker.js +18 -7
  10. package/dist/cjs/DatePicker/components/Display.d.ts +3 -3
  11. package/dist/cjs/DatePicker/components/Display.js +16 -5
  12. package/dist/cjs/Dropzone/Dropzone.d.ts +4 -2
  13. package/dist/cjs/Dropzone/Dropzone.js +23 -12
  14. package/dist/cjs/Field/Field.d.ts +1 -0
  15. package/dist/cjs/Field/Field.js +63 -11
  16. package/dist/cjs/Field/FieldContext.d.ts +3 -0
  17. package/dist/cjs/Field/useField.d.ts +4 -1
  18. package/dist/cjs/Field/useField.js +17 -1
  19. package/dist/cjs/Form/Form.d.ts +16 -0
  20. package/dist/cjs/Form/Form.js +140 -0
  21. package/dist/cjs/Form/FormContext.d.ts +13 -0
  22. package/dist/cjs/Form/FormContext.js +8 -0
  23. package/dist/cjs/Form/index.d.ts +3 -0
  24. package/dist/cjs/Form/index.js +27 -0
  25. package/dist/cjs/Form/stories/AsynchronousValidation.js +396 -0
  26. package/dist/cjs/Form/stories/Complex.js +928 -0
  27. package/dist/cjs/Form/stories/DependentFieldsValidation.js +249 -0
  28. package/dist/cjs/Form/stories/DirtyFields.js +339 -0
  29. package/dist/cjs/Form/stories/DynamicFieldsValidation.js +425 -0
  30. package/dist/cjs/Form/stories/FieldArrays.js +549 -0
  31. package/dist/cjs/Form/stories/ValidationStrategies.js +455 -0
  32. package/dist/cjs/Form/stories/utils/useFormikAutoFocusOnError.js +22 -0
  33. package/dist/cjs/Form/useForm.d.ts +1 -0
  34. package/dist/cjs/Form/useForm.js +11 -0
  35. package/dist/cjs/Input/Input.js +22 -9
  36. package/dist/cjs/Input/Input.tailwind.js +7 -2
  37. package/dist/cjs/Pagination/DotPagination/DotPagination.d.ts +1 -1
  38. package/dist/cjs/RadioGroup/RadioButton.d.ts +1 -1
  39. package/dist/cjs/RadioGroup/RadioButton.js +16 -3
  40. package/dist/cjs/RadioGroup/RadioButton.tailwind.js +23 -0
  41. package/dist/cjs/RadioGroup/RadioGroup.d.ts +7 -5
  42. package/dist/cjs/RadioGroup/RadioGroup.js +78 -16
  43. package/dist/cjs/RadioGroup/{RadiogroupContext.d.ts → RadioGroupContext.d.ts} +8 -1
  44. package/dist/cjs/RangeSlider/RangeSlider.d.ts +2 -3
  45. package/dist/cjs/RangeSlider/RangeSlider.js +27 -10
  46. package/dist/cjs/Satellite/locale.d.ts +2 -0
  47. package/dist/cjs/Select/Select.js +39 -6
  48. package/dist/cjs/Select/Select.tailwind.js +19 -0
  49. package/dist/cjs/Stepper/Step.js +2 -2
  50. package/dist/cjs/Switch/Switch.js +2 -2
  51. package/dist/cjs/Switch/SwitchOption.js +3 -3
  52. package/dist/cjs/Tables/DataTable/DataTable.d.ts +1 -1
  53. package/dist/cjs/Tag/Tag.d.ts +1 -1
  54. package/dist/cjs/TextArea/TextArea.d.ts +1 -0
  55. package/dist/cjs/TextArea/TextArea.js +47 -8
  56. package/dist/cjs/TextArea/TextArea.tailwind.js +41 -4
  57. package/dist/cjs/Toggle/Toggle.d.ts +1 -1
  58. package/dist/cjs/Toggle/Toggle.js +23 -6
  59. package/dist/cjs/Toggle/Toggle.tailwind.js +9 -0
  60. package/dist/cjs/Tooltip/Tooltip.d.ts +1 -1
  61. package/dist/cjs/index.d.ts +1 -0
  62. package/dist/cjs/index.js +12 -0
  63. package/dist/cjs/utils/isCssPropertySupported.d.ts +1 -1
  64. package/dist/cjs/utils/mergeRefs.d.ts +2 -0
  65. package/dist/cjs/utils/mergeRefs.js +17 -0
  66. package/dist/esm/AutoComplete/AutoComplete.d.ts +1 -1
  67. package/dist/esm/AutoComplete/AutoComplete.js +52 -27
  68. package/dist/esm/AutoComplete/AutoComplete.tailwind.js +9 -1
  69. package/dist/esm/AutoComplete/types.d.ts +1 -0
  70. package/dist/esm/Checkbox/Checkbox.d.ts +1 -1
  71. package/dist/esm/Checkbox/Checkbox.js +21 -13
  72. package/dist/esm/Checkbox/Checkbox.tailwind.js +8 -2
  73. package/dist/esm/DatePicker/DatePicker/DatePicker.d.ts +4 -2
  74. package/dist/esm/DatePicker/DatePicker/DatePicker.js +19 -8
  75. package/dist/esm/DatePicker/components/Display.d.ts +3 -3
  76. package/dist/esm/DatePicker/components/Display.js +15 -5
  77. package/dist/esm/Dropzone/Dropzone.d.ts +4 -2
  78. package/dist/esm/Dropzone/Dropzone.js +24 -13
  79. package/dist/esm/Field/Field.d.ts +1 -0
  80. package/dist/esm/Field/Field.js +64 -12
  81. package/dist/esm/Field/FieldContext.d.ts +3 -0
  82. package/dist/esm/Field/useField.d.ts +4 -1
  83. package/dist/esm/Field/useField.js +17 -2
  84. package/dist/esm/Form/Form.d.ts +16 -0
  85. package/dist/esm/Form/Form.js +135 -0
  86. package/dist/esm/Form/FormContext.d.ts +13 -0
  87. package/dist/esm/Form/FormContext.js +2 -0
  88. package/dist/esm/Form/index.d.ts +3 -0
  89. package/dist/esm/Form/index.js +3 -0
  90. package/dist/esm/Form/stories/AsynchronousValidation.js +387 -0
  91. package/dist/esm/Form/stories/Complex.js +919 -0
  92. package/dist/esm/Form/stories/DependentFieldsValidation.js +240 -0
  93. package/dist/esm/Form/stories/DirtyFields.js +330 -0
  94. package/dist/esm/Form/stories/DynamicFieldsValidation.js +416 -0
  95. package/dist/esm/Form/stories/FieldArrays.js +544 -0
  96. package/dist/esm/Form/stories/ValidationStrategies.js +446 -0
  97. package/dist/esm/Form/stories/utils/useFormikAutoFocusOnError.js +16 -0
  98. package/dist/esm/Form/useForm.d.ts +1 -0
  99. package/dist/esm/Form/useForm.js +5 -0
  100. package/dist/esm/Input/Input.js +22 -9
  101. package/dist/esm/Input/Input.tailwind.js +7 -2
  102. package/dist/esm/Pagination/DotPagination/DotPagination.d.ts +1 -1
  103. package/dist/esm/RadioGroup/RadioButton.d.ts +1 -1
  104. package/dist/esm/RadioGroup/RadioButton.js +16 -3
  105. package/dist/esm/RadioGroup/RadioButton.tailwind.js +23 -0
  106. package/dist/esm/RadioGroup/RadioGroup.d.ts +7 -5
  107. package/dist/esm/RadioGroup/RadioGroup.js +77 -15
  108. package/dist/esm/RadioGroup/{RadiogroupContext.d.ts → RadioGroupContext.d.ts} +8 -1
  109. package/dist/esm/RangeSlider/RangeSlider.d.ts +2 -3
  110. package/dist/esm/RangeSlider/RangeSlider.js +27 -10
  111. package/dist/esm/Satellite/locale.d.ts +2 -0
  112. package/dist/esm/Select/Select.js +41 -7
  113. package/dist/esm/Select/Select.tailwind.js +19 -0
  114. package/dist/esm/Stepper/Step.js +2 -2
  115. package/dist/esm/Switch/Switch.js +1 -1
  116. package/dist/esm/Switch/SwitchOption.js +2 -2
  117. package/dist/esm/Tables/DataTable/DataTable.d.ts +1 -1
  118. package/dist/esm/Tag/Tag.d.ts +1 -1
  119. package/dist/esm/TextArea/TextArea.d.ts +1 -0
  120. package/dist/esm/TextArea/TextArea.js +49 -9
  121. package/dist/esm/TextArea/TextArea.tailwind.js +41 -4
  122. package/dist/esm/Toggle/Toggle.d.ts +1 -1
  123. package/dist/esm/Toggle/Toggle.js +23 -6
  124. package/dist/esm/Toggle/Toggle.tailwind.js +9 -0
  125. package/dist/esm/Tooltip/Tooltip.d.ts +1 -1
  126. package/dist/esm/index.d.ts +1 -0
  127. package/dist/esm/index.js +1 -0
  128. package/dist/esm/utils/isCssPropertySupported.d.ts +1 -1
  129. package/dist/esm/utils/mergeRefs.d.ts +2 -0
  130. package/dist/esm/utils/mergeRefs.js +11 -0
  131. package/dist/satellite.min.css +1 -1
  132. package/package.json +13 -7
  133. /package/dist/cjs/RadioGroup/{RadiogroupContext.js → RadioGroupContext.js} +0 -0
  134. /package/dist/esm/RadioGroup/{RadiogroupContext.js → RadioGroupContext.js} +0 -0
@@ -5,4 +5,4 @@ import type { AutoCompleteProps, Option } from "./types";
5
5
  *
6
6
  * See the [Autocomplete documentation page](https://satellite.algolia.com/components/forms/autocomplete) for more information.
7
7
  */
8
- export declare const AutoComplete: <O extends Option = Option>({ locale: localeProp, id, labelId, "aria-label": ariaLabel, name, placeholder, autoFocus, inputValue: inputValueProp, onTextChange, onFocus, onBlur, disabled, clearable, renderValueTemplate, noWrap, separatorKeys, multiple, value, selectOnBlur, onChange, options, optionItemComponent, creatable, createFromInputValue, emptyState, maxResults: maxItems, menuFooter, menuSize, variant, icon: Icon, endItem, className, menuClassName, valuesClassName, internalsRef, }: AutoCompleteProps<O>) => JSX.Element;
8
+ export declare const AutoComplete: import("react").ForwardRefExoticComponent<AutoCompleteProps<Option> & import("react").RefAttributes<HTMLInputElement>>;
@@ -5,10 +5,10 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.AutoComplete = void 0;
8
- var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
9
8
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
10
9
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
12
12
  var _clsx = _interopRequireDefault(require("clsx"));
13
13
  var _downshift = require("downshift");
14
14
  var _react = require("react");
@@ -23,13 +23,14 @@ var _Satellite = require("../Satellite");
23
23
  var _ScrollIndicator = require("../ScrollIndicator");
24
24
  var _satellitePrefixer = _interopRequireDefault(require("../styles/helpers/satellitePrefixer"));
25
25
  var _Tag = require("../Tag");
26
+ var _mergeRefs = require("../utils/mergeRefs");
26
27
  var _uniqBy = require("../utils/uniqBy");
27
28
  var _AutoCompleteContext = require("./components/AutoCompleteContext");
28
29
  var _AutoCompleteEmptyState = require("./components/AutoCompleteEmptyState");
29
30
  var _DefaultOptionItem = require("./components/DefaultOptionItem");
30
31
  var _utils = require("./utils");
31
32
  var _jsxRuntime = require("react/jsx-runtime");
32
- var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16, _templateObject17, _templateObject18, _templateObject19, _templateObject20, _templateObject21, _templateObject22, _templateObject23, _templateObject24, _templateObject25, _templateObject26, _templateObject27, _templateObject28;
33
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16, _templateObject17, _templateObject18, _templateObject19, _templateObject20, _templateObject21, _templateObject22, _templateObject23, _templateObject24, _templateObject25, _templateObject26, _templateObject27, _templateObject28, _templateObject29, _templateObject30;
33
34
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
34
35
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
35
36
  var MENU_POPPER_OPTIONS = {
@@ -50,18 +51,30 @@ var updateRef = function updateRef(ref, value) {
50
51
  ref.current = value;
51
52
  }
52
53
  };
54
+ var InvalidIcon = function InvalidIcon() {
55
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Icons.XIcon, {
56
+ className: (0, _satellitePrefixer["default"])(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["h-4 w-4 text-white bg-red-700 p-px rounded-full"])))
57
+ });
58
+ };
59
+ var ValidatedIcon = function ValidatedIcon() {
60
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Icons.CheckIcon, {
61
+ className: (0, _satellitePrefixer["default"])(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["h-4 w-4 text-white bg-accent-600 p-px rounded-full"])))
62
+ });
63
+ };
53
64
 
54
65
  /**
55
66
  * The `Autocomplete` component enables users to search and select from a list using real-time input matching.
56
67
  *
57
68
  * See the [Autocomplete documentation page](https://satellite.algolia.com/components/forms/autocomplete) for more information.
58
69
  */
59
- var AutoComplete = exports.AutoComplete = function AutoComplete(_ref) {
70
+ var AutoComplete = exports.AutoComplete = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
60
71
  var localeProp = _ref.locale,
61
72
  id = _ref.id,
62
73
  labelId = _ref.labelId,
63
74
  ariaLabel = _ref["aria-label"],
64
75
  name = _ref.name,
76
+ _ref$required = _ref.required,
77
+ required = _ref$required === void 0 ? false : _ref$required,
65
78
  placeholder = _ref.placeholder,
66
79
  autoFocus = _ref.autoFocus,
67
80
  inputValueProp = _ref.inputValue,
@@ -95,9 +108,15 @@ var AutoComplete = exports.AutoComplete = function AutoComplete(_ref) {
95
108
  valuesClassName = _ref.valuesClassName,
96
109
  internalsRef = _ref.internalsRef;
97
110
  var createPortal = (0, _Satellite.useCreatePortal)();
98
- var _useField = (0, _Field.useField)(),
111
+ var _useField = (0, _Field.useField)({
112
+ required: required
113
+ }),
99
114
  status = _useField.state.status,
100
- fieldLabelId = _useField.labelId;
115
+ fieldLabelId = _useField.labelId,
116
+ descriptionId = _useField.descriptionId,
117
+ inputId = _useField.inputId;
118
+ var isInvalid = status === "invalid";
119
+ var StatusIcon = isInvalid ? InvalidIcon : status === "validated" ? ValidatedIcon : _react.Fragment;
101
120
  var localeContext = (0, _Satellite.useLocale)("autoComplete");
102
121
  var locale = (0, _react.useMemo)(function () {
103
122
  return _objectSpread(_objectSpread(_objectSpread({}, _utils.DEFAULT_AUTOCOMPLETE_LOCALE), localeContext), localeProp);
@@ -171,7 +190,7 @@ var AutoComplete = exports.AutoComplete = function AutoComplete(_ref) {
171
190
  }
172
191
  });
173
192
  var combobox = (0, _downshift.useCombobox)({
174
- inputId: id,
193
+ inputId: id !== null && id !== void 0 ? id : inputId,
175
194
  labelId: labelId !== null && labelId !== void 0 ? labelId : fieldLabelId,
176
195
  items: items,
177
196
  itemToString: _utils.optionToString,
@@ -241,9 +260,12 @@ var AutoComplete = exports.AutoComplete = function AutoComplete(_ref) {
241
260
  }
242
261
  });
243
262
  var inputProps = combobox.getInputProps(_objectSpread({
244
- "aria-label": ariaLabel
263
+ "aria-label": ariaLabel,
264
+ "aria-describedby": descriptionId,
265
+ "aria-invalid": isInvalid,
266
+ required: required
245
267
  }, multipleSelection.getDropdownProps({
246
- ref: inputRef,
268
+ ref: (0, _mergeRefs.mergeRefs)([inputRef, ref]),
247
269
  autoFocus: autoFocus,
248
270
  disabled: disabled,
249
271
  // See https://github.com/downshift-js/downshift/issues/1108
@@ -309,24 +331,24 @@ var AutoComplete = exports.AutoComplete = function AutoComplete(_ref) {
309
331
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_AutoCompleteContext.AutoCompleteProvider, {
310
332
  locale: locale,
311
333
  children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
312
- className: (0, _clsx["default"])((0, _satellitePrefixer["default"])(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["flex"]))), className),
334
+ className: (0, _clsx["default"])((0, _satellitePrefixer["default"])(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["flex"]))), className),
313
335
  ref: function ref(el) {
314
336
  setContainerElement(el);
315
337
  // @ts-expect-error
316
338
  setContainerMeasureRef(el);
317
339
  },
318
340
  children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
319
- className: (0, _clsx["default"])((0, _satellitePrefixer["default"])(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["autocomplete-container"]))), variant === "large" && (0, _satellitePrefixer["default"])(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["autocomplete-large py-1"]))), inputFocused && (0, _satellitePrefixer["default"])(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["autocomplete-focused"]))), disabled && (0, _satellitePrefixer["default"])(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["autocomplete-disabled"]))), status === "invalid" && (0, _satellitePrefixer["default"])(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["autocomplete-invalid"]))), noWrap && (0, _satellitePrefixer["default"])(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["autocomplete-nowrap"])))),
341
+ className: (0, _clsx["default"])((0, _satellitePrefixer["default"])(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["autocomplete-container"]))), variant === "large" && (0, _satellitePrefixer["default"])(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["autocomplete-large py-1"]))), inputFocused && (0, _satellitePrefixer["default"])(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["autocomplete-focused"]))), disabled && (0, _satellitePrefixer["default"])(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["autocomplete-disabled"]))), isInvalid && (0, _satellitePrefixer["default"])(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2["default"])(["autocomplete-invalid"]))), noWrap && (0, _satellitePrefixer["default"])(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2["default"])(["autocomplete-nowrap"])))),
320
342
  onClick: function onClick() {
321
343
  var _inputRef$current;
322
344
  return (_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 ? void 0 : _inputRef$current.focus();
323
345
  },
324
346
  children: [Icon && /*#__PURE__*/(0, _jsxRuntime.jsx)(Icon, {
325
- className: (0, _clsx["default"])((0, _satellitePrefixer["default"])(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2["default"])(["mr-4 shrink-0"]))), (0, _satellitePrefixer["default"])(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2["default"])(["", ""])), disabled ? "text-grey-200" : inputFocused ? "text-accent-600" : "text-grey-500")),
347
+ className: (0, _clsx["default"])((0, _satellitePrefixer["default"])(_templateObject10 || (_templateObject10 = (0, _taggedTemplateLiteral2["default"])(["mr-4 shrink-0"]))), (0, _satellitePrefixer["default"])(_templateObject11 || (_templateObject11 = (0, _taggedTemplateLiteral2["default"])(["", ""])), disabled ? "text-grey-200" : inputFocused ? "text-accent-600" : "text-grey-500")),
326
348
  width: "1rem",
327
349
  height: "1rem"
328
350
  }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
329
- className: (0, _clsx["default"])((0, _satellitePrefixer["default"])(_templateObject10 || (_templateObject10 = (0, _taggedTemplateLiteral2["default"])(["flex items-center flex-1 max-h-full"]))), !noWrap && (0, _satellitePrefixer["default"])(_templateObject11 || (_templateObject11 = (0, _taggedTemplateLiteral2["default"])(["flex-wrap overflow-y-scroll no-scrollbar"]))), multiple && (0, _satellitePrefixer["default"])(_templateObject12 || (_templateObject12 = (0, _taggedTemplateLiteral2["default"])(["-ml-1"]))), valuesClassName),
351
+ className: (0, _clsx["default"])((0, _satellitePrefixer["default"])(_templateObject12 || (_templateObject12 = (0, _taggedTemplateLiteral2["default"])(["flex items-center flex-1 max-h-full"]))), !noWrap && (0, _satellitePrefixer["default"])(_templateObject13 || (_templateObject13 = (0, _taggedTemplateLiteral2["default"])(["flex-wrap overflow-y-scroll no-scrollbar"]))), multiple && (0, _satellitePrefixer["default"])(_templateObject14 || (_templateObject14 = (0, _taggedTemplateLiteral2["default"])(["-ml-1"]))), valuesClassName),
330
352
  children: [multiple && selectedItems.map(function (option, index) {
331
353
  return renderValueTemplate ? /*#__PURE__*/(0, _jsxRuntime.jsx)("span", _objectSpread(_objectSpread({}, multipleSelection.getSelectedItemProps({
332
354
  selectedItem: option,
@@ -341,7 +363,7 @@ var AutoComplete = exports.AutoComplete = function AutoComplete(_ref) {
341
363
  evt.stopPropagation();
342
364
  multipleSelection.removeSelectedItem(option);
343
365
  },
344
- className: (0, _satellitePrefixer["default"])(_templateObject13 || (_templateObject13 = (0, _taggedTemplateLiteral2["default"])(["m-1 max-w-48 ", ""])), disabled && "opacity-50")
366
+ className: (0, _satellitePrefixer["default"])(_templateObject15 || (_templateObject15 = (0, _taggedTemplateLiteral2["default"])(["m-1 max-w-48 ", ""])), disabled && "opacity-50")
345
367
  }, multipleSelection.getSelectedItemProps({
346
368
  selectedItem: option,
347
369
  index: index
@@ -354,21 +376,21 @@ var AutoComplete = exports.AutoComplete = function AutoComplete(_ref) {
354
376
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)("input", _objectSpread(_objectSpread({
355
377
  "data-lpignore": true
356
378
  }, inputProps), {}, {
357
- id: id,
379
+ id: id !== null && id !== void 0 ? id : inputId,
358
380
  name: name,
359
381
  type: "text",
360
382
  placeholder: hasValue ? "" : placeholder,
361
383
  autoComplete: "off",
362
- className: (0, _clsx["default"])((0, _satellitePrefixer["default"])(_templateObject14 || (_templateObject14 = (0, _taggedTemplateLiteral2["default"])(["autocomplete-input py-1.5"]))), multiple && (0, _satellitePrefixer["default"])(_templateObject15 || (_templateObject15 = (0, _taggedTemplateLiteral2["default"])(["ml-1"]))), shouldRenderCustomTemplate && hasValue && (0, _satellitePrefixer["default"])(_templateObject16 || (_templateObject16 = (0, _taggedTemplateLiteral2["default"])(["h-0 w-0 opacity-0"]))))
384
+ className: (0, _clsx["default"])((0, _satellitePrefixer["default"])(_templateObject16 || (_templateObject16 = (0, _taggedTemplateLiteral2["default"])(["autocomplete-input py-1.5"]))), multiple && (0, _satellitePrefixer["default"])(_templateObject17 || (_templateObject17 = (0, _taggedTemplateLiteral2["default"])(["ml-1"]))), shouldRenderCustomTemplate && hasValue && (0, _satellitePrefixer["default"])(_templateObject18 || (_templateObject18 = (0, _taggedTemplateLiteral2["default"])(["h-0 w-0 opacity-0"]))))
363
385
  }))]
364
386
  }), Boolean(showClearButton || endItem) && /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
365
- className: (0, _clsx["default"])(showClearButton && endItem && (0, _satellitePrefixer["default"])(_templateObject17 || (_templateObject17 = (0, _taggedTemplateLiteral2["default"])(["my-2 flex self-end space-x-4"])))),
387
+ className: (0, _clsx["default"])(showClearButton && endItem && (0, _satellitePrefixer["default"])(_templateObject19 || (_templateObject19 = (0, _taggedTemplateLiteral2["default"])(["my-2 flex self-end space-x-4"])))),
366
388
  children: [!!endItem && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
367
- className: (0, _satellitePrefixer["default"])(_templateObject18 || (_templateObject18 = (0, _taggedTemplateLiteral2["default"])(["text-grey-700 my-auto"]))),
389
+ className: (0, _satellitePrefixer["default"])(_templateObject20 || (_templateObject20 = (0, _taggedTemplateLiteral2["default"])(["text-grey-700 my-auto"]))),
368
390
  children: endItem
369
391
  }), showClearButton && /*#__PURE__*/(0, _jsxRuntime.jsx)("button", {
370
392
  type: "button",
371
- className: (0, _satellitePrefixer["default"])(_templateObject19 || (_templateObject19 = (0, _taggedTemplateLiteral2["default"])(["w-6 h-6 flex items-center justify-center text-grey-500"]))),
393
+ className: (0, _satellitePrefixer["default"])(_templateObject21 || (_templateObject21 = (0, _taggedTemplateLiteral2["default"])(["w-6 h-6 flex items-center justify-center text-grey-500"]))),
372
394
  onClick: function onClick() {
373
395
  setInternalInputValue("");
374
396
  multipleSelection.setSelectedItems([]);
@@ -378,11 +400,11 @@ var AutoComplete = exports.AutoComplete = function AutoComplete(_ref) {
378
400
  size: ".75rem"
379
401
  })
380
402
  })]
381
- })]
403
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(StatusIcon, {})]
382
404
  }), createPortal( /*#__PURE__*/(0, _jsxRuntime.jsx)(_ClickAwayContainer.ClickAwayContainer, {
383
405
  element: menuRef.current,
384
406
  children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Card.Card, _objectSpread(_objectSpread({}, menuPopper.attributes), {}, {
385
- className: (0, _clsx["default"])((0, _satellitePrefixer["default"])(_templateObject20 || (_templateObject20 = (0, _taggedTemplateLiteral2["default"])(["z-dropdown"]))), menuClassName),
407
+ className: (0, _clsx["default"])((0, _satellitePrefixer["default"])(_templateObject22 || (_templateObject22 = (0, _taggedTemplateLiteral2["default"])(["z-dropdown"]))), menuClassName),
386
408
  style: _objectSpread(_objectSpread(_objectSpread({}, menuPopper.styles.popper), hideMenu && {
387
409
  display: "none"
388
410
  }), {}, {
@@ -393,7 +415,7 @@ var AutoComplete = exports.AutoComplete = function AutoComplete(_ref) {
393
415
  elevation: "300",
394
416
  fullBleed: true,
395
417
  children: [hideMenu ? /*#__PURE__*/(0, _jsxRuntime.jsx)("div", _objectSpread({}, combobox.getMenuProps())) : items.length === 0 ? /*#__PURE__*/(0, _jsxRuntime.jsx)("div", _objectSpread(_objectSpread({}, combobox.getMenuProps({
396
- className: (0, _satellitePrefixer["default"])(_templateObject21 || (_templateObject21 = (0, _taggedTemplateLiteral2["default"])(["min-h-10"])))
418
+ className: (0, _satellitePrefixer["default"])(_templateObject23 || (_templateObject23 = (0, _taggedTemplateLiteral2["default"])(["min-h-10"])))
397
419
  })), {}, {
398
420
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
399
421
  role: "option",
@@ -404,15 +426,15 @@ var AutoComplete = exports.AutoComplete = function AutoComplete(_ref) {
404
426
  })
405
427
  })
406
428
  })) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_ScrollIndicator.ScrollIndicator, {
407
- className: menuSize === "large" ? (0, _satellitePrefixer["default"])(_templateObject22 || (_templateObject22 = (0, _taggedTemplateLiteral2["default"])(["max-h-96"]))) : (0, _satellitePrefixer["default"])(_templateObject23 || (_templateObject23 = (0, _taggedTemplateLiteral2["default"])(["max-h-64"]))),
429
+ className: menuSize === "large" ? (0, _satellitePrefixer["default"])(_templateObject24 || (_templateObject24 = (0, _taggedTemplateLiteral2["default"])(["max-h-96"]))) : (0, _satellitePrefixer["default"])(_templateObject25 || (_templateObject25 = (0, _taggedTemplateLiteral2["default"])(["max-h-64"]))),
408
430
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)("ul", _objectSpread(_objectSpread({}, combobox.getMenuProps()), {}, {
409
431
  children: items.map(function (item, index) {
410
432
  return /*#__PURE__*/(0, _jsxRuntime.jsx)("li", _objectSpread(_objectSpread({}, combobox.getItemProps({
411
433
  item: item,
412
- className: (0, _clsx["default"])((0, _satellitePrefixer["default"])(_templateObject24 || (_templateObject24 = (0, _taggedTemplateLiteral2["default"])(["autocomplete-result flex items-center min-h-10 px-4 cursor-pointer"]))), index === combobox.highlightedIndex && (0, _satellitePrefixer["default"])(_templateObject25 || (_templateObject25 = (0, _taggedTemplateLiteral2["default"])(["bg-grey-100"]))), item.disabled && (0, _satellitePrefixer["default"])(_templateObject26 || (_templateObject26 = (0, _taggedTemplateLiteral2["default"])(["cursor-not-allowed"]))))
434
+ className: (0, _clsx["default"])((0, _satellitePrefixer["default"])(_templateObject26 || (_templateObject26 = (0, _taggedTemplateLiteral2["default"])(["autocomplete-result flex items-center min-h-10 px-4 cursor-pointer"]))), index === combobox.highlightedIndex && (0, _satellitePrefixer["default"])(_templateObject27 || (_templateObject27 = (0, _taggedTemplateLiteral2["default"])(["bg-grey-100"]))), item.disabled && (0, _satellitePrefixer["default"])(_templateObject28 || (_templateObject28 = (0, _taggedTemplateLiteral2["default"])(["cursor-not-allowed"]))))
413
435
  })), {}, {
414
436
  children: item.value === SHOW_ALL_ITEMS_ID ? /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
415
- className: (0, _satellitePrefixer["default"])(_templateObject27 || (_templateObject27 = (0, _taggedTemplateLiteral2["default"])(["w-full py-2 truncate text-center text-grey-900"]))),
437
+ className: (0, _satellitePrefixer["default"])(_templateObject29 || (_templateObject29 = (0, _taggedTemplateLiteral2["default"])(["w-full py-2 truncate text-center text-grey-900"]))),
416
438
  children: item.label
417
439
  }, item.value) : /*#__PURE__*/(0, _jsxRuntime.jsx)(OptionItem, {
418
440
  multiple: Boolean(multiple),
@@ -424,11 +446,12 @@ var AutoComplete = exports.AutoComplete = function AutoComplete(_ref) {
424
446
  })
425
447
  }))
426
448
  }), !!menuFooter && /*#__PURE__*/(0, _jsxRuntime.jsx)("footer", {
427
- className: (0, _satellitePrefixer["default"])(_templateObject28 || (_templateObject28 = (0, _taggedTemplateLiteral2["default"])(["flex items-center justify-center min-h-12 p-4 bg-grey-100 border-t border-grey-200 text-grey-600"]))),
449
+ className: (0, _satellitePrefixer["default"])(_templateObject30 || (_templateObject30 = (0, _taggedTemplateLiteral2["default"])(["flex items-center justify-center min-h-12 p-4 bg-grey-100 border-t border-grey-200 text-grey-600"]))),
428
450
  children: menuFooter
429
451
  })]
430
452
  }))
431
453
  }))]
432
454
  })
433
455
  });
434
- };
456
+ });
457
+ AutoComplete.displayName = "AutoComplete";
@@ -23,6 +23,7 @@ var autoCompletePlugin = plugin(function (_ref) {
23
23
  border: "1px solid ".concat(theme("colors.grey.500")),
24
24
  boxShadow: "inset 0px 1px 4px 0px ".concat(rgba(theme("colors.grey.500"), 0.3)),
25
25
  transition: "all 100ms ease-in-out",
26
+ outline: "1px solid transparent",
26
27
  "&:not(.autocomplete-disabled, .autocomplete-focused):hover": {
27
28
  borderColor: theme("colors.grey.600")
28
29
  },
@@ -58,7 +59,14 @@ var autoCompletePlugin = plugin(function (_ref) {
58
59
  },
59
60
  ".autocomplete-invalid:not(.autocomplete-disabled)": {
60
61
  backgroundColor: theme("colors.red.100"),
61
- borderColor: theme("colors.red.700")
62
+ borderColor: theme("colors.red.700"),
63
+ "&:hover": {
64
+ backgroundColor: theme("colors.red.50"),
65
+ borderColor: theme("colors.red.700")
66
+ },
67
+ "&.autocomplete-focused, &.autocomplete-container:focus-within": {
68
+ outlineColor: theme("colors.red.700")
69
+ }
62
70
  },
63
71
  ".autocomplete-nowrap": {
64
72
  overflowX: "scroll",
@@ -15,6 +15,7 @@ export interface AutoCompleteBaseProps<T extends Option = Option> {
15
15
  labelId?: string;
16
16
  icon?: IconComponentType;
17
17
  name?: string;
18
+ required?: boolean;
18
19
  className?: string;
19
20
  valuesClassName?: string;
20
21
  menuClassName?: string;
@@ -19,5 +19,5 @@ export declare type CheckboxProps = CheckboxInputProps & CheckboxCustomProps;
19
19
  *
20
20
  * See the [Checkbox documentation page](https://satellite.algolia.com/components/controls/checkbox) for more information.
21
21
  */
22
- export declare const Checkbox: import("react").ForwardRefExoticComponent<Omit<HTMLAttributes<HTMLInputElement>, "onChange"> & Pick<InputHTMLAttributes<HTMLInputElement>, "defaultChecked" | "onChange" | "autoFocus" | "disabled" | "checked" | "required"> & CheckboxCustomProps & import("react").RefAttributes<HTMLInputElement>>;
22
+ export declare const Checkbox: import("react").ForwardRefExoticComponent<Omit<HTMLAttributes<HTMLInputElement>, "onChange"> & Pick<InputHTMLAttributes<HTMLInputElement>, "defaultChecked" | "onChange" | "required" | "autoFocus" | "disabled" | "checked"> & CheckboxCustomProps & import("react").RefAttributes<HTMLInputElement>>;
23
23
  export {};
@@ -15,14 +15,12 @@ var _Field = require("../Field");
15
15
  var _Icons = require("../Icons");
16
16
  var _satellitePrefixer = _interopRequireDefault(require("../styles/helpers/satellitePrefixer"));
17
17
  var _isRenderedChild = require("../utils/isRenderedChild");
18
+ var _uniqueId = require("../utils/uniqueId");
18
19
  var _jsxRuntime = require("react/jsx-runtime");
19
- var _excluded = ["children", "className", "textPosition", "indeterminate", "defaultChecked", "checkedColor", "checked", "disabled"];
20
+ var _excluded = ["children", "className", "textPosition", "indeterminate", "defaultChecked", "checkedColor", "checked", "disabled", "required"];
20
21
  var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6;
21
22
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
22
23
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
23
- var generateFieldId = function generateFieldId() {
24
- return Math.random().toString(36).substring(7);
25
- };
26
24
  var STATUS_CLASSNAMES = {
27
25
  "default": "",
28
26
  invalid: (0, _satellitePrefixer["default"])(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["checkbox-invalid"]))),
@@ -44,13 +42,19 @@ var Checkbox = exports.Checkbox = /*#__PURE__*/(0, _react.forwardRef)(function (
44
42
  checkedColor = _ref.checkedColor,
45
43
  checked = _ref.checked,
46
44
  disabled = _ref.disabled,
45
+ required = _ref.required,
47
46
  checkboxProps = (0, _objectWithoutProperties2["default"])(_ref, _excluded);
48
- var id = (0, _react.useMemo)(function () {
49
- return checkboxProps.id || generateFieldId();
50
- }, [checkboxProps.id]);
51
- var _useField = (0, _Field.useField)(),
47
+ var _useField = (0, _Field.useField)({
48
+ required: required
49
+ }),
52
50
  status = _useField.state.status,
53
- labelId = _useField.labelId;
51
+ labelId = _useField.labelId,
52
+ descriptionId = _useField.descriptionId,
53
+ inputId = _useField.inputId;
54
+ var id = (0, _react.useMemo)(function () {
55
+ var _ref2, _checkboxProps$id;
56
+ return (_ref2 = (_checkboxProps$id = checkboxProps.id) !== null && _checkboxProps$id !== void 0 ? _checkboxProps$id : inputId) !== null && _ref2 !== void 0 ? _ref2 : (0, _uniqueId.uniqueId)("checkbox");
57
+ }, [checkboxProps.id, inputId]);
54
58
  var isControlled = typeof checked === "boolean";
55
59
  var _useState = (0, _react.useState)(Boolean(isControlled ? checked : defaultChecked)),
56
60
  _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
@@ -75,10 +79,14 @@ var Checkbox = exports.Checkbox = /*#__PURE__*/(0, _react.forwardRef)(function (
75
79
  },
76
80
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(CheckboxIcon, {
77
81
  className: (0, _satellitePrefixer["default"])(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["checkbox-icon"])))
78
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)("input", _objectSpread(_objectSpread({}, checkboxProps), {}, {
79
- "aria-checked": indeterminate ? "mixed" : isChecked,
80
- id: id,
82
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("input", _objectSpread(_objectSpread({
81
83
  "aria-labelledby": labelId,
84
+ "aria-describedby": descriptionId
85
+ }, checkboxProps), {}, {
86
+ id: id !== null && id !== void 0 ? id : inputId,
87
+ required: required,
88
+ "aria-invalid": status === "invalid",
89
+ "aria-checked": indeterminate ? "mixed" : isChecked,
82
90
  className: (0, _satellitePrefixer["default"])(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n opacity-0 absolute inset-0\n ", "\n "])), disabled ? "cursor-not-allowed" : "cursor-pointer"),
83
91
  type: "checkbox",
84
92
  ref: ref,
@@ -88,7 +96,7 @@ var Checkbox = exports.Checkbox = /*#__PURE__*/(0, _react.forwardRef)(function (
88
96
  }))]
89
97
  }), (0, _isRenderedChild.isRenderedChild)(children) && /*#__PURE__*/(0, _jsxRuntime.jsx)("label", {
90
98
  className: (0, _satellitePrefixer["default"])(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n display-body\n ", "\n ", "\n "])), disabled && "text-grey-300 cursor-not-allowed", textPosition === "left" ? "pr-2" : "pl-2"),
91
- htmlFor: id,
99
+ htmlFor: id !== null && id !== void 0 ? id : inputId,
92
100
  children: children
93
101
  })]
94
102
  });
@@ -34,14 +34,20 @@ var checkboxPlugin = plugin(function (_ref) {
34
34
  }
35
35
  },
36
36
  ".group\\/checkbox:hover": {
37
- "& > .checkbox:not(.checkbox-disabled, .checkbox-checked, .checkbox-indeterminate, :has(input:focus))": {
37
+ "& > .checkbox:not(.checkbox-disabled, .checkbox-checked, .checkbox-indeterminate, .checkbox-invalid, :has(input:focus))": {
38
38
  borderColor: theme("colors.grey.600")
39
39
  }
40
40
  },
41
41
  ".checkbox-invalid:not(.checkbox-disabled)": {
42
42
  color: theme("colors.red.700"),
43
43
  background: theme("colors.red.100"),
44
- borderColor: "currentColor"
44
+ borderColor: "currentColor",
45
+ "&:hover": {
46
+ background: theme("colors.red.50")
47
+ },
48
+ "&:focus-within": {
49
+ outline: "1px solid ".concat(theme("colors.red.700"))
50
+ }
45
51
  },
46
52
  ".checkbox-checked, .checkbox-indeterminate": {
47
53
  borderColor: "currentColor",
@@ -1,4 +1,4 @@
1
- import type { Dispatch, MouseEvent, ReactNode, VFC } from "react";
1
+ import type { Dispatch, MouseEvent, ReactNode } from "react";
2
2
  import type { DatePickerCalendarProps } from "../components/Calendar";
3
3
  import type { DatePickerDisplayProps } from "../components/Display";
4
4
  import type { DatePickerFooterActionsProps } from "../components/FooterActions";
@@ -17,6 +17,7 @@ interface RenderTargetParams {
17
17
  isOpen: boolean;
18
18
  }
19
19
  export declare type DatePickerProps = {
20
+ id?: string;
20
21
  calendarProps?: Pick<DatePickerCalendarProps, "fromMonth" | "toMonth" | "disabled">;
21
22
  onOpen?: DatePickerDisplayProps["onClick"];
22
23
  onChange?: (value: Date | null) => void;
@@ -29,11 +30,12 @@ export declare type DatePickerProps = {
29
30
  value?: Date | null;
30
31
  initialValue?: Date | null;
31
32
  buttonSize?: DatePickerDisplayProps["size"];
33
+ required?: boolean;
32
34
  } & SharedDatePickerProps;
33
35
  /**
34
36
  * The `DatePicker` component allows users to easily select a date, featuring a calendar view, month/year navigation, and custom options.
35
37
  *
36
38
  * See the [Date Picker documentation page](https://satellite.algolia.com/layouts/date-picker) for more information.
37
39
  */
38
- export declare const DatePicker: VFC<DatePickerProps>;
40
+ export declare const DatePicker: import("react").ForwardRefExoticComponent<DatePickerProps & import("react").RefAttributes<HTMLButtonElement>>;
39
41
  export {};
@@ -9,6 +9,7 @@ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/hel
9
9
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
11
  var _react = require("react");
12
+ var _Field = require("../../Field");
12
13
  var _Satellite = require("../../Satellite");
13
14
  var _satellitePrefixer = _interopRequireDefault(require("../../styles/helpers/satellitePrefixer"));
14
15
  var _Calendar = require("../components/Calendar");
@@ -20,7 +21,7 @@ var _SidePanel = require("../components/SidePanel");
20
21
  var _utils = require("../utils");
21
22
  var _datePickerReducer = require("./datePickerReducer");
22
23
  var _jsxRuntime = require("react/jsx-runtime");
23
- var _templateObject, _templateObject2, _templateObject3, _templateObject4;
24
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;
24
25
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
25
26
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
26
27
  /**
@@ -28,8 +29,8 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
28
29
  *
29
30
  * See the [Date Picker documentation page](https://satellite.algolia.com/layouts/date-picker) for more information.
30
31
  */
31
- var DatePicker = exports.DatePicker = function DatePicker(props) {
32
- var _props$initialValue, _props$validate, _props$calendarProps;
32
+ var DatePicker = exports.DatePicker = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
33
+ var _props$initialValue, _props$validate, _props$id, _props$calendarProps;
33
34
  var contextLocale = (0, _Satellite.useLocale)("datePicker");
34
35
  var locale = _objectSpread(_objectSpread(_objectSpread({}, _utils.DEFAULT_DATE_PICKER_LOCALE), contextLocale), props.locale);
35
36
  var _useState = (0, _react.useState)(null),
@@ -94,6 +95,12 @@ var DatePicker = exports.DatePicker = function DatePicker(props) {
94
95
  },
95
96
  // eslint-disable-next-line react-hooks/exhaustive-deps
96
97
  [props]);
98
+ var _useField = (0, _Field.useField)({
99
+ required: props.required || false
100
+ }),
101
+ status = _useField.state.status,
102
+ inputId = _useField.inputId;
103
+ var isInvalid = status === "invalid";
97
104
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
98
105
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
99
106
  ref: setTargetElement,
@@ -102,15 +109,18 @@ var DatePicker = exports.DatePicker = function DatePicker(props) {
102
109
  toggle: state.show ? handleClose : handleOpen,
103
110
  isOpen: state.show
104
111
  }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_Display.DatePickerDisplay, {
112
+ id: (_props$id = props.id) !== null && _props$id !== void 0 ? _props$id : inputId,
113
+ ref: ref,
105
114
  onClick: state.show ? handleClose : handleOpen,
106
115
  size: props.buttonSize,
116
+ className: isInvalid ? (0, _satellitePrefixer["default"])(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["border-red-700 bg-red-100 bg-none focus:outline-1 focus:outline focus:outline-red-700 focus:shadow-none focus:bg-none focus:bg-red-100 focus:border-red-700 hover:border-red-700 hover:bg-red-50 hover:bg-none"]))) : undefined,
107
117
  children: value ? /*#__PURE__*/(0, _jsxRuntime.jsx)("time", {
108
118
  dateTime: value.toISOString(),
109
119
  children: (0, _utils.formatDate)(value)
110
120
  }) : locale.openButton
111
121
  })
112
122
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Modal.DatePickerModal, {
113
- className: (0, _satellitePrefixer["default"])(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["date-picker"]))),
123
+ className: (0, _satellitePrefixer["default"])(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["date-picker"]))),
114
124
  show: state.show,
115
125
  onClickAway: function onClickAway(evt) {
116
126
  if (!(targetElement !== null && targetElement !== void 0 && targetElement.contains(evt.target))) {
@@ -123,7 +133,7 @@ var DatePicker = exports.DatePicker = function DatePicker(props) {
123
133
  targetElement: targetElement,
124
134
  placement: props.modalPlacement,
125
135
  children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
126
- className: (0, _satellitePrefixer["default"])(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["flex"]))),
136
+ className: (0, _satellitePrefixer["default"])(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["flex"]))),
127
137
  children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
128
138
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Calendar.DatePickerCalendar, _objectSpread(_objectSpread(_objectSpread({
129
139
  mode: "single",
@@ -149,7 +159,7 @@ var DatePicker = exports.DatePicker = function DatePicker(props) {
149
159
  })]
150
160
  }), props.renderRightPanel && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
151
161
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
152
- className: (0, _satellitePrefixer["default"])(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["h-full w-px bg-red-800"])))
162
+ className: (0, _satellitePrefixer["default"])(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["h-full w-px bg-red-800"])))
153
163
  }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_SidePanel.DatePickerSidePanel, {
154
164
  children: [props.renderRightPanel({
155
165
  state: state,
@@ -165,4 +175,5 @@ var DatePicker = exports.DatePicker = function DatePicker(props) {
165
175
  })
166
176
  })]
167
177
  });
168
- };
178
+ });
179
+ DatePicker.displayName = "DatePicker";
@@ -1,9 +1,9 @@
1
- import type { ReactNode, VFC } from "react";
1
+ import type { ReactNode } from "react";
2
2
  import type { ButtonProps, ButtonSize } from "../../Button";
3
- export interface DatePickerDisplayProps {
3
+ export interface DatePickerDisplayProps extends ButtonProps {
4
4
  id?: string;
5
5
  onClick: ButtonProps["onClick"];
6
6
  children: ReactNode;
7
7
  size?: ButtonSize;
8
8
  }
9
- export declare const DatePickerDisplay: VFC<DatePickerDisplayProps>;
9
+ export declare const DatePickerDisplay: import("react").ForwardRefExoticComponent<DatePickerDisplayProps & import("react").RefAttributes<HTMLButtonElement>>;
@@ -1,22 +1,33 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3
4
  Object.defineProperty(exports, "__esModule", {
4
5
  value: true
5
6
  });
6
7
  exports.DatePickerDisplay = void 0;
8
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
10
+ var _react = require("react");
7
11
  var _Button = require("../../Button");
8
12
  var _Icons = require("../../Icons");
9
13
  var _jsxRuntime = require("react/jsx-runtime");
10
- var DatePickerDisplay = exports.DatePickerDisplay = function DatePickerDisplay(_ref) {
14
+ var _excluded = ["id", "size", "onClick", "children"];
15
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
16
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
17
+ var DatePickerDisplay = exports.DatePickerDisplay = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
11
18
  var id = _ref.id,
12
19
  size = _ref.size,
13
20
  onClick = _ref.onClick,
14
- children = _ref.children;
15
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.Button, {
21
+ children = _ref.children,
22
+ props = (0, _objectWithoutProperties2["default"])(_ref, _excluded);
23
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.Button, _objectSpread(_objectSpread({
16
24
  id: id,
17
25
  size: size,
18
26
  startIcon: _Icons.CalendarIcon,
19
27
  onClick: onClick,
28
+ ref: ref
29
+ }, props), {}, {
20
30
  children: children
21
- });
22
- };
31
+ }));
32
+ });
33
+ DatePickerDisplay.displayName = "Display";
@@ -1,4 +1,4 @@
1
- import type { VFC } from "react";
1
+ /// <reference types="react" />
2
2
  import type { FileRejection, DropzoneProps as ReactDropZoneProps } from "react-dropzone";
3
3
  export declare type DropzoneLocale = {
4
4
  clearInput?: string;
@@ -14,6 +14,8 @@ export interface DropzoneBaseProps {
14
14
  className?: string;
15
15
  /** @default false */
16
16
  multiple?: boolean;
17
+ /** @default false */
18
+ required?: boolean;
17
19
  locale?: DropzoneLocale;
18
20
  }
19
21
  export declare type DropzoneProps = DropzoneBaseProps & Omit<ReactDropZoneProps, "onDrop" | "onDropAccepted" | "onDropRejected" | "multiple">;
@@ -22,4 +24,4 @@ export declare type DropzoneProps = DropzoneBaseProps & Omit<ReactDropZoneProps,
22
24
  *
23
25
  * See the [Dropzone documentation page](https://satellite.algolia.com/components/forms/dropzone) for more information.
24
26
  */
25
- export declare const Dropzone: VFC<DropzoneProps>;
27
+ export declare const Dropzone: import("react").ForwardRefExoticComponent<DropzoneBaseProps & Omit<ReactDropZoneProps, "onDrop" | "multiple" | "onDropAccepted" | "onDropRejected"> & import("react").RefAttributes<HTMLInputElement>>;