@algolia/satellite 1.9.0 → 1.10.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 (53) hide show
  1. package/README.md +26 -22
  2. package/dist/cjs/Actions/index.d.ts +1 -2
  3. package/dist/cjs/Actions/index.js +10 -17
  4. package/dist/cjs/Fields/DatePicker/DatePicker/DatePicker.js +68 -75
  5. package/dist/cjs/Fields/DatePicker/DateRangePicker/DateRangePicker.js +69 -77
  6. package/dist/cjs/Fields/DatePicker/DateRangePicker/DateRangePickerDisplay.d.ts +2 -3
  7. package/dist/cjs/Fields/DatePicker/DateRangePicker/DateRangePickerDisplay.js +14 -7
  8. package/dist/cjs/Fields/DatePicker/components/Display.d.ts +0 -1
  9. package/dist/cjs/Fields/DatePicker/components/Display.js +1 -3
  10. package/dist/cjs/Fields/DatePicker/components/FooterActions.d.ts +2 -2
  11. package/dist/cjs/Fields/DatePicker/components/FooterActions.js +5 -2
  12. package/dist/cjs/Fields/DatePicker/components/Popover.d.ts +13 -0
  13. package/dist/cjs/Fields/DatePicker/components/Popover.js +51 -0
  14. package/dist/cjs/Fields/DatePicker/components/index.d.ts +1 -1
  15. package/dist/cjs/Fields/DatePicker/components/index.js +4 -4
  16. package/dist/cjs/Fields/DatePicker/types.d.ts +3 -2
  17. package/dist/cjs/Fields/DatePicker/utils.js +2 -1
  18. package/dist/cjs/Helpers/ClickAwayContainer/ClickAwayContainer.d.ts +3 -0
  19. package/dist/cjs/Helpers/ClickAwayContainer/ClickAwayContainer.js +3 -0
  20. package/dist/cjs/Layout/Tables/DataTable/DataTable.js +3 -15
  21. package/dist/cjs/Layout/Tables/DataTable/types.d.ts +0 -2
  22. package/dist/cjs/Overlay/Modal/Modal.js +10 -5
  23. package/dist/cjs/Overlay/Popover/Popover.js +8 -5
  24. package/dist/cjs/Overlay/Popover/types.d.ts +27 -5
  25. package/dist/esm/Actions/index.d.ts +1 -2
  26. package/dist/esm/Actions/index.js +3 -2
  27. package/dist/esm/Fields/DatePicker/DatePicker/DatePicker.js +70 -77
  28. package/dist/esm/Fields/DatePicker/DateRangePicker/DateRangePicker.js +71 -79
  29. package/dist/esm/Fields/DatePicker/DateRangePicker/DateRangePickerDisplay.d.ts +2 -3
  30. package/dist/esm/Fields/DatePicker/DateRangePicker/DateRangePickerDisplay.js +14 -7
  31. package/dist/esm/Fields/DatePicker/components/Display.d.ts +0 -1
  32. package/dist/esm/Fields/DatePicker/components/Display.js +1 -3
  33. package/dist/esm/Fields/DatePicker/components/FooterActions.d.ts +2 -2
  34. package/dist/esm/Fields/DatePicker/components/FooterActions.js +5 -2
  35. package/dist/esm/Fields/DatePicker/components/Popover.d.ts +13 -0
  36. package/dist/esm/Fields/DatePicker/components/Popover.js +41 -0
  37. package/dist/esm/Fields/DatePicker/components/index.d.ts +1 -1
  38. package/dist/esm/Fields/DatePicker/components/index.js +1 -1
  39. package/dist/esm/Fields/DatePicker/types.d.ts +3 -2
  40. package/dist/esm/Fields/DatePicker/utils.js +2 -1
  41. package/dist/esm/Helpers/ClickAwayContainer/ClickAwayContainer.d.ts +3 -0
  42. package/dist/esm/Helpers/ClickAwayContainer/ClickAwayContainer.js +3 -0
  43. package/dist/esm/Layout/Tables/DataTable/DataTable.js +3 -15
  44. package/dist/esm/Layout/Tables/DataTable/types.d.ts +0 -2
  45. package/dist/esm/Overlay/Modal/Modal.js +10 -5
  46. package/dist/esm/Overlay/Popover/Popover.js +8 -5
  47. package/dist/esm/Overlay/Popover/types.d.ts +27 -5
  48. package/dist/satellite.min.css +1 -1
  49. package/package.json +16 -15
  50. package/dist/cjs/Fields/DatePicker/components/Modal.d.ts +0 -15
  51. package/dist/cjs/Fields/DatePicker/components/Modal.js +0 -66
  52. package/dist/esm/Fields/DatePicker/components/Modal.d.ts +0 -15
  53. package/dist/esm/Fields/DatePicker/components/Modal.js +0 -59
@@ -2,29 +2,30 @@ import _taggedTemplateLiteral from "@babel/runtime/helpers/taggedTemplateLiteral
2
2
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
3
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
4
4
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
5
- var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;
5
+ var _templateObject, _templateObject2;
6
6
  var _excluded = ["id", "range", "displayOnlyRanges", "calendarProps", "initialState", "stateReducer", "onAction", "validate", "renderTarget", "renderLeftFooter", "renderRightPanel", "buttonSize", "modalPlacement", "locale"];
7
7
  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; }
8
8
  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) { _defineProperty(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; }
9
- import { useMemo, useReducer, useState } from "react";
9
+ import { useMemo, useReducer, useRef } from "react";
10
10
  import { useLocale } from "../../../Satellite";
11
11
  import stl from "../../../styles/helpers/satellitePrefixer";
12
12
  import { DatePickerCalendar } from "../components/Calendar";
13
13
  import { DatePickerFooter } from "../components/Footer";
14
14
  import { DatePickerFooterActions } from "../components/FooterActions";
15
- import { DatePickerModal } from "../components/Modal";
15
+ import { DatePickerPopover } from "../components/Popover";
16
16
  import { DatePickerSidePanel } from "../components/SidePanel";
17
17
  import { DEFAULT_DATE_PICKER_LOCALE } from "../utils";
18
18
  import { DateRangePickerDisplay } from "./DateRangePickerDisplay";
19
19
  import { DateRangePickerActionTypes, dateRangePickerReducer, initDateRangePickerReducer } from "./dateRangePickerReducer";
20
20
  import { isCompleteTimeRange, isEmptyTimeRange } from "./dateRangePickerTimeRange";
21
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
21
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
22
22
  var defaultValidator = function defaultValidator(_ref) {
23
23
  var candidateRange = _ref.candidateRange;
24
24
  return isCompleteTimeRange(candidateRange) ? null : [new Error("Invalid time range")];
25
25
  };
26
26
  var DEFAULT_DATE_RANGE_PICKER_LOCALE = _objectSpread(_objectSpread({}, DEFAULT_DATE_PICKER_LOCALE), {}, {
27
- openButton: "Enter a date period..."
27
+ openButton: "Enter a date period...",
28
+ title: "Date Range Picker"
28
29
  });
29
30
 
30
31
  /**
@@ -55,16 +56,13 @@ export var DateRangePicker = function DateRangePicker(_ref2) {
55
56
  props = _objectWithoutProperties(_ref2, _excluded);
56
57
  var contextLocale = useLocale("datePicker");
57
58
  var locale = _objectSpread(_objectSpread(_objectSpread({}, DEFAULT_DATE_RANGE_PICKER_LOCALE), contextLocale), propsLocale);
58
- var _useState = useState(null),
59
- _useState2 = _slicedToArray(_useState, 2),
60
- targetElement = _useState2[0],
61
- setTargetElement = _useState2[1];
62
59
  var _useReducer = useReducer(function (state, action) {
63
60
  return stateReducer(state, action, dateRangePickerReducer);
64
61
  }, initialState, initDateRangePickerReducer),
65
62
  _useReducer2 = _slicedToArray(_useReducer, 2),
66
63
  state = _useReducer2[0],
67
64
  baseDispatch = _useReducer2[1];
65
+ var cancelElementRef = useRef(null);
68
66
 
69
67
  // Computed properties
70
68
  var isValid = !((_validate = validate(state)) !== null && _validate !== void 0 && _validate.length);
@@ -174,81 +172,75 @@ export var DateRangePicker = function DateRangePicker(_ref2) {
174
172
  editableYear: false
175
173
  };
176
174
  }, [props, displayedRange]);
177
- return /*#__PURE__*/_jsxs("div", {
175
+ return /*#__PURE__*/_jsx(DatePickerPopover, {
176
+ isOpen: state.show,
177
+ onOpenChange: function onOpenChange(open) {
178
+ return dispatch({
179
+ type: DateRangePickerActionTypes.show,
180
+ payload: open
181
+ });
182
+ },
183
+ placement: modalPlacement,
184
+ title: locale.title,
178
185
  className: stl(_templateObject || (_templateObject = _taggedTemplateLiteral(["date-range-picker"]))),
179
- children: [/*#__PURE__*/_jsx("span", {
180
- ref: setTargetElement,
181
- className: stl(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["inline-block"]))),
182
- children: renderTarget ? renderTarget({
183
- toggle: state.show ? handleClose : handleOpen,
184
- isOpen: state.show
185
- }) : /*#__PURE__*/_jsx(DateRangePickerDisplay, {
186
- id: id,
187
- onClick: state.show ? handleClose : handleOpen,
188
- range: initialRange !== null && initialRange !== void 0 ? initialRange : {
189
- start: null,
190
- end: null
191
- },
192
- buttonSize: buttonSize,
193
- locale: locale
194
- })
195
- }), /*#__PURE__*/_jsx(DatePickerModal, {
196
- className: stl(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["date-range-picker"]))),
197
- show: state.show,
198
- onClickAway: function onClickAway(evt) {
199
- if (!(targetElement !== null && targetElement !== void 0 && targetElement.contains(evt.target))) {
200
- dispatch({
201
- type: DateRangePickerActionTypes.show,
202
- payload: false
203
- });
204
- }
186
+ onOpenAutoFocus: function onOpenAutoFocus(evt) {
187
+ var _cancelElementRef$cur;
188
+ evt.preventDefault();
189
+ (_cancelElementRef$cur = cancelElementRef.current) === null || _cancelElementRef$cur === void 0 || _cancelElementRef$cur.focus();
190
+ },
191
+ trigger: renderTarget ? renderTarget({
192
+ toggle: state.show ? handleClose : handleOpen,
193
+ isOpen: state.show
194
+ }) : /*#__PURE__*/_jsx(DateRangePickerDisplay, {
195
+ id: id,
196
+ range: initialRange !== null && initialRange !== void 0 ? initialRange : {
197
+ start: null,
198
+ end: null
205
199
  },
206
- targetElement: targetElement,
207
- placement: modalPlacement,
208
- children: /*#__PURE__*/_jsxs("div", {
209
- className: stl(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["flex"]))),
210
- children: [/*#__PURE__*/_jsxs("div", {
211
- children: [/*#__PURE__*/_jsx(DatePickerCalendar, _objectSpread(_objectSpread(_objectSpread({
212
- mode: "default",
213
- defaultMonth: (_initialRange$start = initialRange === null || initialRange === void 0 ? void 0 : initialRange.start) !== null && _initialRange$start !== void 0 ? _initialRange$start : undefined,
214
- numberOfMonths: 2
215
- }, calendarProps), {}, {
216
- selected: selectedDays,
217
- modifiers: modifiers,
218
- onDayClick: handleDayClick,
219
- onDayMouseEnter: handleMouseEnter,
220
- onDayMouseLeave: handleMouseLeave
221
- }, yearProps), {}, {
222
- locale: locale
223
- })), /*#__PURE__*/_jsxs(DatePickerFooter, {
224
- children: [renderLeftFooter && /*#__PURE__*/_jsx("div", {
225
- children: renderLeftFooter({
226
- state: state,
227
- dispatch: dispatch
228
- })
229
- }), !renderRightPanel && /*#__PURE__*/_jsx(DatePickerFooterActions, {
230
- onCancel: handleCancel,
231
- onApply: handleApply,
232
- disableApply: !isValid,
233
- locale: locale
234
- })]
235
- })]
236
- }), renderRightPanel && /*#__PURE__*/_jsxs(_Fragment, {
237
- children: [/*#__PURE__*/_jsx("div", {
238
- className: stl(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["h-full w-px bg-red-800"])))
239
- }), /*#__PURE__*/_jsxs(DatePickerSidePanel, {
240
- children: [renderRightPanel({
200
+ buttonSize: buttonSize,
201
+ locale: locale
202
+ }),
203
+ children: /*#__PURE__*/_jsxs("div", {
204
+ className: stl(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["flex"]))),
205
+ children: [/*#__PURE__*/_jsxs("div", {
206
+ children: [/*#__PURE__*/_jsx(DatePickerCalendar, _objectSpread(_objectSpread(_objectSpread({
207
+ mode: "default",
208
+ defaultMonth: (_initialRange$start = initialRange === null || initialRange === void 0 ? void 0 : initialRange.start) !== null && _initialRange$start !== void 0 ? _initialRange$start : undefined,
209
+ numberOfMonths: 2
210
+ }, calendarProps), {}, {
211
+ selected: selectedDays,
212
+ modifiers: modifiers,
213
+ onDayClick: handleDayClick,
214
+ onDayMouseEnter: handleMouseEnter,
215
+ onDayMouseLeave: handleMouseLeave
216
+ }, yearProps), {}, {
217
+ locale: locale
218
+ })), /*#__PURE__*/_jsxs(DatePickerFooter, {
219
+ children: [renderLeftFooter && /*#__PURE__*/_jsx("div", {
220
+ children: renderLeftFooter({
241
221
  state: state,
242
222
  dispatch: dispatch
243
- }), /*#__PURE__*/_jsx(DatePickerFooterActions, {
244
- onCancel: handleCancel,
245
- onApply: handleApply,
246
- disableApply: !isValid,
247
- locale: locale
248
- })]
223
+ })
224
+ }), !renderRightPanel && /*#__PURE__*/_jsx(DatePickerFooterActions, {
225
+ onCancel: handleCancel,
226
+ onApply: handleApply,
227
+ disableApply: !isValid,
228
+ locale: locale,
229
+ ref: cancelElementRef
249
230
  })]
250
231
  })]
251
- })
252
- })]
232
+ }), renderRightPanel && /*#__PURE__*/_jsxs(DatePickerSidePanel, {
233
+ children: [renderRightPanel({
234
+ state: state,
235
+ dispatch: dispatch
236
+ }), /*#__PURE__*/_jsx(DatePickerFooterActions, {
237
+ onCancel: handleCancel,
238
+ onApply: handleApply,
239
+ disableApply: !isValid,
240
+ locale: locale,
241
+ ref: cancelElementRef
242
+ })]
243
+ })]
244
+ })
253
245
  });
254
246
  };
@@ -1,13 +1,12 @@
1
- import type { VFC } from "react";
1
+ /// <reference types="react" />
2
2
  import type { WithRequiredProperty } from "../../../types";
3
3
  import { type DatePickerDisplayProps } from "../components/Display";
4
4
  import type { DatePickerLocale } from "../types";
5
5
  import type { DateRangePickerTimeRange } from "./dateRangePickerTimeRange";
6
6
  export interface DateRangePickerDisplayProps {
7
7
  id?: string;
8
- onClick: DatePickerDisplayProps["onClick"];
9
8
  range: DateRangePickerTimeRange;
10
9
  buttonSize?: DatePickerDisplayProps["size"];
11
10
  locale: WithRequiredProperty<DatePickerLocale, "openButton">;
12
11
  }
13
- export declare const DateRangePickerDisplay: VFC<DateRangePickerDisplayProps>;
12
+ export declare const DateRangePickerDisplay: import("react").ForwardRefExoticComponent<DateRangePickerDisplayProps & import("react").RefAttributes<HTMLButtonElement>>;
@@ -1,20 +1,26 @@
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
1
2
  import _taggedTemplateLiteral from "@babel/runtime/helpers/taggedTemplateLiteral";
3
+ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
2
4
  var _templateObject;
5
+ var _excluded = ["id", "range", "buttonSize", "locale"];
6
+ 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; }
7
+ 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) { _defineProperty(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; }
8
+ import { forwardRef } from "react";
3
9
  import stl from "../../../styles/helpers/satellitePrefixer";
4
10
  import { DatePickerDisplay } from "../components/Display";
5
11
  import { formatDate } from "../utils";
6
12
  import { isCompleteTimeRange } from "./dateRangePickerTimeRange";
7
13
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
8
- export var DateRangePickerDisplay = function DateRangePickerDisplay(_ref) {
14
+ export var DateRangePickerDisplay = /*#__PURE__*/forwardRef(function (_ref, ref) {
9
15
  var id = _ref.id,
10
- onClick = _ref.onClick,
11
16
  range = _ref.range,
12
17
  buttonSize = _ref.buttonSize,
13
- locale = _ref.locale;
14
- return /*#__PURE__*/_jsx(DatePickerDisplay, {
18
+ locale = _ref.locale,
19
+ props = _objectWithoutProperties(_ref, _excluded);
20
+ return /*#__PURE__*/_jsx(DatePickerDisplay, _objectSpread(_objectSpread({}, props), {}, {
15
21
  id: id,
16
- onClick: onClick,
17
22
  size: buttonSize,
23
+ ref: ref,
18
24
  children: isCompleteTimeRange(range) ? /*#__PURE__*/_jsxs(_Fragment, {
19
25
  children: [/*#__PURE__*/_jsx("time", {
20
26
  dateTime: range.start.toISOString(),
@@ -26,5 +32,6 @@ export var DateRangePickerDisplay = function DateRangePickerDisplay(_ref) {
26
32
  children: formatDate(range.end)
27
33
  })]
28
34
  }) : locale.openButton
29
- });
30
- };
35
+ }));
36
+ });
37
+ DateRangePickerDisplay.displayName = "DateRangePickerDisplay";
@@ -2,7 +2,6 @@ import type { ReactNode } from "react";
2
2
  import type { ButtonProps, ButtonSize } from "../../../Actions";
3
3
  export interface DatePickerDisplayProps extends ButtonProps {
4
4
  id?: string;
5
- onClick: ButtonProps["onClick"];
6
5
  children: ReactNode;
7
6
  size?: ButtonSize;
8
7
  }
@@ -1,6 +1,6 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
2
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
- var _excluded = ["id", "size", "onClick", "children"];
3
+ var _excluded = ["id", "size", "children"];
4
4
  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; }
5
5
  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) { _defineProperty(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; }
6
6
  import { forwardRef } from "react";
@@ -10,14 +10,12 @@ import { jsx as _jsx } from "react/jsx-runtime";
10
10
  export var DatePickerDisplay = /*#__PURE__*/forwardRef(function (_ref, ref) {
11
11
  var id = _ref.id,
12
12
  size = _ref.size,
13
- onClick = _ref.onClick,
14
13
  children = _ref.children,
15
14
  props = _objectWithoutProperties(_ref, _excluded);
16
15
  return /*#__PURE__*/_jsx(Button, _objectSpread(_objectSpread({
17
16
  id: id,
18
17
  size: size,
19
18
  startIcon: CalendarIcon,
20
- onClick: onClick,
21
19
  ref: ref
22
20
  }, props), {}, {
23
21
  children: children
@@ -1,4 +1,4 @@
1
- import type { VFC } from "react";
1
+ /// <reference types="react" />
2
2
  import type { ButtonProps } from "../../../Actions";
3
3
  import type { WithRequiredProperty } from "../../../types";
4
4
  import type { DatePickerLocale } from "../types";
@@ -8,4 +8,4 @@ export interface DatePickerFooterActionsProps {
8
8
  disableApply: boolean;
9
9
  locale: WithRequiredProperty<DatePickerLocale, "cancel" | "apply">;
10
10
  }
11
- export declare const DatePickerFooterActions: VFC<DatePickerFooterActionsProps>;
11
+ export declare const DatePickerFooterActions: import("react").ForwardRefExoticComponent<DatePickerFooterActionsProps & import("react").RefAttributes<HTMLButtonElement>>;
@@ -1,9 +1,10 @@
1
1
  import _taggedTemplateLiteral from "@babel/runtime/helpers/taggedTemplateLiteral";
2
2
  var _templateObject, _templateObject2;
3
+ import { forwardRef } from "react";
3
4
  import { Button } from "../../../Actions";
4
5
  import stl from "../../../styles/helpers/satellitePrefixer";
5
6
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
6
- export var DatePickerFooterActions = function DatePickerFooterActions(_ref) {
7
+ export var DatePickerFooterActions = /*#__PURE__*/forwardRef(function (_ref, ref) {
7
8
  var onCancel = _ref.onCancel,
8
9
  onApply = _ref.onApply,
9
10
  disableApply = _ref.disableApply,
@@ -13,6 +14,7 @@ export var DatePickerFooterActions = function DatePickerFooterActions(_ref) {
13
14
  children: [/*#__PURE__*/_jsx(Button, {
14
15
  onClick: onCancel,
15
16
  className: stl(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["mr-2"]))),
17
+ ref: ref,
16
18
  children: locale.cancel
17
19
  }), /*#__PURE__*/_jsx(Button, {
18
20
  disabled: disableApply,
@@ -21,4 +23,5 @@ export var DatePickerFooterActions = function DatePickerFooterActions(_ref) {
21
23
  children: locale.apply
22
24
  })]
23
25
  });
24
- };
26
+ });
27
+ DatePickerFooterActions.displayName = "AccordionItem";
@@ -0,0 +1,13 @@
1
+ import * as Popover from "@radix-ui/react-popover";
2
+ import type { FC, ReactNode } from "react";
3
+ export interface DatePickerPopoverProps {
4
+ isOpen: boolean;
5
+ onOpenChange: (open: boolean) => void;
6
+ trigger: ReactNode;
7
+ children: ReactNode;
8
+ placement?: Popover.PopoverContentProps["side"] | `${Popover.PopoverContentProps["side"] & string}-${Popover.PopoverContentProps["align"] & string}`;
9
+ onOpenAutoFocus?: (event: Event) => void;
10
+ title?: string;
11
+ className?: string;
12
+ }
13
+ export declare const DatePickerPopover: FC<DatePickerPopoverProps>;
@@ -0,0 +1,41 @@
1
+ import _taggedTemplateLiteral from "@babel/runtime/helpers/taggedTemplateLiteral";
2
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
+ var _templateObject;
4
+ import * as Popover from "@radix-ui/react-popover";
5
+ import cx from "clsx";
6
+ import { useCreatePortal } from "../../../Satellite";
7
+ import stl from "../../../styles/helpers/satellitePrefixer";
8
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
9
+ export var DatePickerPopover = function DatePickerPopover(_ref) {
10
+ var isOpen = _ref.isOpen,
11
+ onOpenChange = _ref.onOpenChange,
12
+ trigger = _ref.trigger,
13
+ children = _ref.children,
14
+ _ref$placement = _ref.placement,
15
+ placement = _ref$placement === void 0 ? "bottom-start" : _ref$placement,
16
+ onOpenAutoFocus = _ref.onOpenAutoFocus,
17
+ title = _ref.title,
18
+ className = _ref.className;
19
+ var createPortal = useCreatePortal();
20
+ var _ref2 = placement.split("-"),
21
+ _ref3 = _slicedToArray(_ref2, 2),
22
+ side = _ref3[0],
23
+ align = _ref3[1];
24
+ return /*#__PURE__*/_jsxs(Popover.Root, {
25
+ open: isOpen,
26
+ onOpenChange: onOpenChange,
27
+ children: [/*#__PURE__*/_jsx(Popover.Trigger, {
28
+ asChild: true,
29
+ children: trigger
30
+ }), createPortal( /*#__PURE__*/_jsx(Popover.Content, {
31
+ side: side,
32
+ sideOffset: 16,
33
+ align: align,
34
+ collisionPadding: 16,
35
+ className: cx(stl(_templateObject || (_templateObject = _taggedTemplateLiteral(["flex bg-white shadow-z400 z-popover relative overflow-auto max-w-[var(--radix-popover-content-available-width)] max-h-[var(--radix-popover-content-available-height)]"]))), className),
36
+ onOpenAutoFocus: onOpenAutoFocus,
37
+ "aria-label": title,
38
+ children: children
39
+ }))]
40
+ });
41
+ };
@@ -3,5 +3,5 @@ export { DatePickerCalendar } from "./Calendar";
3
3
  export * from "./Display";
4
4
  export * from "./Footer";
5
5
  export * from "./FooterActions";
6
- export * from "./Modal";
6
+ export * from "./Popover";
7
7
  export * from "./SidePanel";
@@ -2,5 +2,5 @@ export { DatePickerCalendar } from "./Calendar";
2
2
  export * from "./Display";
3
3
  export * from "./Footer";
4
4
  export * from "./FooterActions";
5
- export * from "./Modal";
5
+ export * from "./Popover";
6
6
  export * from "./SidePanel";
@@ -1,5 +1,5 @@
1
1
  import type { Locale as DateFnsLocale } from "date-fns";
2
- import type { DatePickerModalProps } from "./components/Modal";
2
+ import type { DatePickerPopoverProps } from "./components";
3
3
  export declare type DatePickerLocale = {
4
4
  /** The date-fns locale object used to localize dates. Defaults to* `en-US`. */
5
5
  formatter?: DateFnsLocale;
@@ -14,9 +14,10 @@ export declare type DatePickerLocale = {
14
14
  apply?: string;
15
15
  nextMonth?: string;
16
16
  previousMonth?: string;
17
+ title?: string;
17
18
  };
18
19
  export declare type SharedDatePickerProps = {
19
- modalPlacement?: DatePickerModalProps["placement"];
20
+ modalPlacement?: DatePickerPopoverProps["placement"];
20
21
  locale?: DatePickerLocale;
21
22
  } & ({
22
23
  editableYear?: false;
@@ -8,5 +8,6 @@ export var DEFAULT_DATE_PICKER_LOCALE = {
8
8
  cancel: "Cancel",
9
9
  openButton: "Enter a date...",
10
10
  previousMonth: "Previous month",
11
- nextMonth: "Next month"
11
+ nextMonth: "Next month",
12
+ title: "Date Picker"
12
13
  };
@@ -22,6 +22,9 @@ export interface ClickAwayContainerProps {
22
22
  * Most libraries handling "click outside" functionality assume that the dom tree matches the React tree,
23
23
  * but it's not the case when using portals.
24
24
  * This component allows click-away functionality even when portals are involved.
25
+ *
26
+ * @deprecated This component is deprecated and will be removed in a future version.
27
+ * Please use the Popover component, which provides built-in click-away behavior and is more accessible.
25
28
  */
26
29
  export declare const ClickAwayContainer: VFC<ClickAwayContainerProps>;
27
30
  export {};
@@ -16,6 +16,9 @@ var AWAY_EVENTS = ["mousedown", "touchstart", "focusin"];
16
16
  * Most libraries handling "click outside" functionality assume that the dom tree matches the React tree,
17
17
  * but it's not the case when using portals.
18
18
  * This component allows click-away functionality even when portals are involved.
19
+ *
20
+ * @deprecated This component is deprecated and will be removed in a future version.
21
+ * Please use the Popover component, which provides built-in click-away behavior and is more accessible.
19
22
  */
20
23
  export var ClickAwayContainer = function ClickAwayContainer(_ref) {
21
24
  var element = _ref.element,
@@ -1,13 +1,12 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
1
2
  import _taggedTemplateLiteral from "@babel/runtime/helpers/taggedTemplateLiteral";
2
3
  import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
3
- import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
4
4
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
5
5
  var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11;
6
6
  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; }
7
7
  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) { _defineProperty(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; }
8
8
  import compact from "lodash/compact";
9
9
  import get from "lodash/get";
10
- import { useEffect, useState } from "react";
11
10
  import { Checkbox, RadioButton } from "../../../Fields";
12
11
  import { useLocale } from "../../../Satellite";
13
12
  import stl from "../../../styles/helpers/satellitePrefixer";
@@ -76,14 +75,6 @@ export var DataTable = function DataTable(_ref) {
76
75
  console.warn("You can only have one selected item at a time in single `selectMode`.");
77
76
  }
78
77
  }
79
- var _useState = useState(),
80
- _useState2 = _slicedToArray(_useState, 2),
81
- hoveredRowId = _useState2[0],
82
- setHoveredRowId = _useState2[1];
83
- useEffect(function () {
84
- // Reset hovered row when data changes to avoid inconsistent state
85
- setHoveredRowId(undefined);
86
- }, [data]);
87
78
  var computedColumns = compact([selectMode === "single" && {
88
79
  id: "_internal_singleSelect",
89
80
  accessor: "_internal_singleSelect",
@@ -100,7 +91,7 @@ export var DataTable = function DataTable(_ref) {
100
91
  children: /*#__PURE__*/_jsx(RadioButton, {
101
92
  defaultChecked: row.selected,
102
93
  disabled: !row.selectable,
103
- className: stl(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["", ""])), row.hovered || row.selected ? "opacity-100" : "opacity-0 select-none")
94
+ className: stl(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["", ""])), !row.selected && "select-none")
104
95
  })
105
96
  });
106
97
  },
@@ -139,7 +130,7 @@ export var DataTable = function DataTable(_ref) {
139
130
  children: /*#__PURE__*/_jsx(Checkbox, {
140
131
  checked: row.selected,
141
132
  disabled: !row.selectable,
142
- className: stl(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral(["", ""])), row.hovered || row.selected ? "opacity-100" : "opacity-0 select-none")
133
+ className: stl(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral(["", ""])), !row.selected && "select-none")
143
134
  })
144
135
  });
145
136
  },
@@ -158,14 +149,12 @@ export var DataTable = function DataTable(_ref) {
158
149
  var rows = data.map(function (item, index) {
159
150
  var _ref4;
160
151
  var id = typeof getItemIdInternal === "string" ? String(get(item, getItemIdInternal, DEFAULT_GET_ITEM_ID(item, index))) : getItemIdInternal(item, index);
161
- var hovered = hoveredRowId === id;
162
152
  var sanitizedSelection = (_ref4 = selectMode === "single" ? selection === null || selection === void 0 ? void 0 : selection.slice(0, 1) : selectMode === "none" ? [] : selection) !== null && _ref4 !== void 0 ? _ref4 : [];
163
153
  var selected = sanitizedSelection.includes(id);
164
154
  var selectable = selectMode !== "none" && (!canSelectItem || canSelectItem(item, index));
165
155
  return {
166
156
  item: item,
167
157
  id: id,
168
- hovered: hovered,
169
158
  selected: selected,
170
159
  selectable: selectable
171
160
  };
@@ -187,7 +176,6 @@ export var DataTable = function DataTable(_ref) {
187
176
  return false;
188
177
  };
189
178
  var onRowHoverChange = function onRowHoverChange(row) {
190
- setHoveredRowId(row === null || row === void 0 ? void 0 : row.id);
191
179
  onRowHoveredChanged === null || onRowHoveredChanged === void 0 || onRowHoveredChanged(row);
192
180
  };
193
181
  var onToggleSort = function onToggleSort(columnId, direction) {
@@ -9,8 +9,6 @@ export interface Row<Item> {
9
9
  item: Item;
10
10
  /** The row id */
11
11
  id: string;
12
- /** Is the row hovered? */
13
- hovered: boolean;
14
12
  /** Is the row selected? */
15
13
  selected: boolean;
16
14
  /** Can the row be selected? */
@@ -4,6 +4,7 @@ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _temp
4
4
  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; }
5
5
  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) { _defineProperty(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; }
6
6
  import * as Dialog from "@radix-ui/react-dialog";
7
+ import { VisuallyHidden } from "@radix-ui/react-visually-hidden";
7
8
  import cx from "clsx";
8
9
  import { Fragment, useRef } from "react";
9
10
  import { IconButton } from "../../Actions";
@@ -73,6 +74,7 @@ export var Modal = function Modal(_ref) {
73
74
  children: /*#__PURE__*/_jsx(Dialog.Content, {
74
75
  ref: dialogContentRef,
75
76
  className: cx(stl(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["modal-content"]))), SIZE_CLASSNAMES[size], centerY && stl(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral(["flex m-auto"])))),
77
+ "aria-describedby": undefined,
76
78
  onOpenAutoFocus: function onOpenAutoFocus(e) {
77
79
  var _closeButtonRef$curre;
78
80
  if (!autoFocusOnOpenElement) return;
@@ -88,8 +90,6 @@ export var Modal = function Modal(_ref) {
88
90
  autoFocusOnCloseElement.focus();
89
91
  }
90
92
  },
91
- "aria-label": !title ? locale.modalTitle : undefined,
92
- "aria-describedby": undefined,
93
93
  children: /*#__PURE__*/_jsx("div", {
94
94
  className: stl(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral(["modal-container"]))),
95
95
  children: /*#__PURE__*/_jsxs(Card, {
@@ -99,9 +99,14 @@ export var Modal = function Modal(_ref) {
99
99
  fullBleed: true,
100
100
  children: [/*#__PURE__*/_jsx("header", {
101
101
  className: cx(stl(_templateObject9 || (_templateObject9 = _taggedTemplateLiteral(["min-h-14 flex items-center justify-between space-x-2"]))), title ? stl(_templateObject10 || (_templateObject10 = _taggedTemplateLiteral(["border-b border-grey-100 pl-8 pr-16"]))) : stl(_templateObject11 || (_templateObject11 = _taggedTemplateLiteral(["justify-end px-8"]))), !title && hideCloseIcon && stl(_templateObject12 || (_templateObject12 = _taggedTemplateLiteral(["hidden"])))),
102
- children: !!title && /*#__PURE__*/_jsx(Dialog.Title, {
103
- className: stl(_templateObject13 || (_templateObject13 = _taggedTemplateLiteral(["flex-1 display-heading truncate"]))),
104
- children: title
102
+ children: /*#__PURE__*/_jsx(Dialog.Title, {
103
+ asChild: true,
104
+ children: title ? /*#__PURE__*/_jsx("div", {
105
+ className: stl(_templateObject13 || (_templateObject13 = _taggedTemplateLiteral(["flex-1 display-heading truncate"]))),
106
+ children: title
107
+ }) : /*#__PURE__*/_jsx(VisuallyHidden, {
108
+ children: locale.modalTitle
109
+ })
105
110
  })
106
111
  }), /*#__PURE__*/_jsx("div", {
107
112
  className: cx(!fullBleed && stl(_templateObject14 || (_templateObject14 = _taggedTemplateLiteral(["p-10"])))),