@ceed/ads 1.31.1 → 1.32.1-next.1

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.
package/dist/index.js CHANGED
@@ -878,8 +878,12 @@ var useCalendarProps = (inProps) => {
878
878
  // src/components/Calendar/hooks/use-calendar.ts
879
879
  import { useCallback as useCallback4, useState as useState3 } from "react";
880
880
  var useCalendar = (ownerState) => {
881
- const [hoverDay, setHoverDay] = useState3(null);
882
- const [hoverMonth, setHoverMonth] = useState3(null);
881
+ const [localHoverDay, setLocalHoverDay] = useState3(null);
882
+ const [localHoverMonth, setLocalHoverMonth] = useState3(null);
883
+ const hoverDay = ownerState.hoverDay !== void 0 ? ownerState.hoverDay : localHoverDay;
884
+ const setHoverDay = ownerState.onHoverDayChange ?? setLocalHoverDay;
885
+ const hoverMonth = ownerState.hoverMonth !== void 0 ? ownerState.hoverMonth : localHoverMonth;
886
+ const setHoverMonth = ownerState.onHoverMonthChange ?? setLocalHoverMonth;
883
887
  return {
884
888
  calendarTitle: ownerState.view === "month" ? getYearName(ownerState.viewMonth, ownerState.locale || "default") : getMonthName(ownerState.viewMonth, ownerState.locale || "default"),
885
889
  onPrev: useCallback4(() => {
@@ -1078,11 +1082,18 @@ var MONTH_NAV_CLICK_THRESHOLD = 3;
1078
1082
  var MONTH_VIEW_HINT_DURATION_MS = 5e3;
1079
1083
  var MONTH_VIEW_HINT_COOLDOWN_MS = 3e4;
1080
1084
  var lastMonthViewAssistHintShownAt = 0;
1085
+ var CALENDAR_PANEL_WIDTH = 264;
1086
+ var CALENDAR_PANEL_GAP = 16;
1081
1087
  var CalendarRoot = styled5("div", {
1082
1088
  name: "Calendar",
1083
1089
  slot: "root"
1090
+ })({});
1091
+ var CalendarMultiContainer = styled5("div", {
1092
+ name: "Calendar",
1093
+ slot: "multiContainer"
1084
1094
  })({
1085
- maxWidth: "264px"
1095
+ display: "flex",
1096
+ gap: `${CALENDAR_PANEL_GAP}px`
1086
1097
  });
1087
1098
  var CalendarHeader = styled5("div", {
1088
1099
  name: "Calendar",
@@ -1117,6 +1128,16 @@ var CalendarViewTable = styled5(motion13.table, {
1117
1128
  paddingBottom: theme.spacing(2)
1118
1129
  }
1119
1130
  }));
1131
+ var StaticCalendarViewTable = styled5("table")(({ theme }) => ({
1132
+ borderSpacing: 0,
1133
+ "& td, & th": {
1134
+ padding: 0
1135
+ },
1136
+ "& th": {
1137
+ paddingTop: theme.spacing(2),
1138
+ paddingBottom: theme.spacing(2)
1139
+ }
1140
+ }));
1120
1141
  var CalendarWeekHeaderContainer = styled5("thead", {
1121
1142
  name: "Calendar",
1122
1143
  slot: "weekHeaderContainer"
@@ -1365,6 +1386,133 @@ var PickerMonths = (props) => {
1365
1386
  /* @__PURE__ */ React12.createElement("tbody", null, chunkedMonths.map((months, i) => /* @__PURE__ */ React12.createElement(Fragment, { key: months.join("_") }, /* @__PURE__ */ React12.createElement("tr", null, months.map((monthIndex, j) => /* @__PURE__ */ React12.createElement(Fragment, { key: monthIndex }, /* @__PURE__ */ React12.createElement(CalendarMonthCell, { ...getMonthCellProps(monthIndex) }, /* @__PURE__ */ React12.createElement(CalendarMonth, { size: "sm", variant: "plain", color: "neutral", ...getPickerMonthProps(monthIndex) }, getMonthNameFromIndex(monthIndex, ownerState.locale))), j < 3 && /* @__PURE__ */ React12.createElement("td", { style: { width: 4 }, "aria-hidden": "true", "aria-description": "cell-gap" })))), i < chunkedMonths.length - 1 && /* @__PURE__ */ React12.createElement("tr", { "aria-hidden": "true", "aria-description": "row-gap" }, /* @__PURE__ */ React12.createElement("td", { colSpan: 7, style: { height: 4 } })))))
1366
1387
  )));
1367
1388
  };
1389
+ var PlainPickerDays = ({ ownerState }) => {
1390
+ const { getPickerDayProps, getDayCellProps } = useCalendar(ownerState);
1391
+ const calendarDates = useMemo4(() => getCalendarDates(ownerState.viewMonth), [ownerState.viewMonth]);
1392
+ const weekdayNames = useMemo4(() => getWeekdayNames(ownerState.locale || "default"), [ownerState.locale]);
1393
+ return /* @__PURE__ */ React12.createElement(StaticCalendarViewTable, null, /* @__PURE__ */ React12.createElement(CalendarWeekHeaderContainer, null, /* @__PURE__ */ React12.createElement("tr", null, weekdayNames.map((name, i) => /* @__PURE__ */ React12.createElement(Fragment, { key: `${ownerState.viewMonth}_${name}_${i}` }, /* @__PURE__ */ React12.createElement("th", null, /* @__PURE__ */ React12.createElement(Typography_default, { level: "body-xs", textAlign: "center" }, name)), i < 6 && /* @__PURE__ */ React12.createElement("th", { style: { width: 4 }, "aria-hidden": "true", "aria-description": "cell-gap" }))))), /* @__PURE__ */ React12.createElement(CalendarDayPickerContainer, null, calendarDates.map((weekDates, rowIndex) => /* @__PURE__ */ React12.createElement(Fragment, { key: `${ownerState.viewMonth}_${rowIndex}` }, /* @__PURE__ */ React12.createElement("tr", null, weekDates.map(
1394
+ (date, i) => date ? /* @__PURE__ */ React12.createElement(Fragment, { key: `${ownerState.viewMonth}_${date}_${i}` }, /* @__PURE__ */ React12.createElement(CalendarDayCell, { ...getDayCellProps(date) }, /* @__PURE__ */ React12.createElement(CalendarDay, { size: "sm", variant: "plain", color: "neutral", ...getPickerDayProps(date) }, date)), i < 6 && /* @__PURE__ */ React12.createElement("td", { "aria-hidden": "true", "aria-description": "cell-gap" })) : /* @__PURE__ */ React12.createElement(Fragment, { key: `${ownerState.viewMonth}_${i}` }, /* @__PURE__ */ React12.createElement("td", null), i < 6 && /* @__PURE__ */ React12.createElement("td", { "aria-hidden": "true", "aria-description": "cell-gap" }))
1395
+ )), rowIndex < calendarDates.length - 1 && /* @__PURE__ */ React12.createElement("tr", { "aria-hidden": "true", "aria-description": "row-gap" }, /* @__PURE__ */ React12.createElement("td", { colSpan: 13, style: { height: 4 } }))))));
1396
+ };
1397
+ var MultiMonthPickerDays = ({
1398
+ panels,
1399
+ direction,
1400
+ numberOfMonths
1401
+ }) => {
1402
+ const slideDistance = CALENDAR_PANEL_WIDTH * numberOfMonths + CALENDAR_PANEL_GAP * (numberOfMonths - 1) + CALENDAR_PANEL_WIDTH;
1403
+ const multiVariants = {
1404
+ enter: (dir) => ({ x: dir > 0 ? slideDistance : -slideDistance, opacity: 0 }),
1405
+ center: { position: "relative", zIndex: 1, x: 0, opacity: 1 },
1406
+ exit: (dir) => ({
1407
+ position: "absolute",
1408
+ zIndex: 0,
1409
+ x: dir < 0 ? slideDistance : -slideDistance,
1410
+ opacity: 0
1411
+ })
1412
+ };
1413
+ const key = `${panels[0].viewMonth.toISOString()}_${direction}`;
1414
+ return /* @__PURE__ */ React12.createElement("div", { style: { position: "relative", overflow: "hidden", minHeight: "250px" } }, /* @__PURE__ */ React12.createElement(AnimatePresence, { initial: false, custom: direction }, /* @__PURE__ */ React12.createElement(
1415
+ motion13.div,
1416
+ {
1417
+ key,
1418
+ custom: direction,
1419
+ variants: multiVariants,
1420
+ initial: "enter",
1421
+ animate: "center",
1422
+ exit: "exit",
1423
+ transition: {
1424
+ x: { type: "spring", stiffness: 300, damping: 30 },
1425
+ opacity: { duration: 0.2 }
1426
+ },
1427
+ drag: "x",
1428
+ dragConstraints: { left: 0, right: 0 },
1429
+ dragElastic: 1,
1430
+ onDragEnd: (e, { offset, velocity }) => {
1431
+ const swipe = swipePower(offset.x, velocity.x);
1432
+ if (swipe < -swipeConfidenceThreshold) {
1433
+ const date = new Date(panels[0].viewMonth);
1434
+ date.setMonth(date.getMonth() + 1);
1435
+ panels[0].onMonthChange?.(date);
1436
+ } else if (swipe > swipeConfidenceThreshold) {
1437
+ const date = new Date(panels[0].viewMonth);
1438
+ date.setMonth(date.getMonth() - 1);
1439
+ panels[0].onMonthChange?.(date);
1440
+ }
1441
+ },
1442
+ style: { display: "flex", gap: `${CALENDAR_PANEL_GAP}px`, top: 0, left: 0, width: "100%" }
1443
+ },
1444
+ panels.map((panelOwnerState) => /* @__PURE__ */ React12.createElement(
1445
+ "div",
1446
+ {
1447
+ key: panelOwnerState.viewMonth.toISOString(),
1448
+ style: {
1449
+ flex: "0 0 auto",
1450
+ width: `${CALENDAR_PANEL_WIDTH}px`,
1451
+ paddingLeft: "16px",
1452
+ paddingRight: "16px",
1453
+ boxSizing: "border-box"
1454
+ }
1455
+ },
1456
+ /* @__PURE__ */ React12.createElement(PlainPickerDays, { ownerState: panelOwnerState })
1457
+ ))
1458
+ )));
1459
+ };
1460
+ var CalendarPanel = ({
1461
+ ownerState,
1462
+ panelIndex,
1463
+ totalPanels,
1464
+ onPrev,
1465
+ onNext,
1466
+ onSwitchView,
1467
+ isMonthViewAssistHintOpen,
1468
+ monthViewHintMessage
1469
+ }) => {
1470
+ const showPrev = panelIndex === 0;
1471
+ const showNext = panelIndex === totalPanels - 1;
1472
+ const title = ownerState.view === "month" ? getYearName(ownerState.viewMonth, ownerState.locale || "default") : getMonthName(ownerState.viewMonth, ownerState.locale || "default");
1473
+ return /* @__PURE__ */ React12.createElement("div", { style: { flex: 1, maxWidth: `${CALENDAR_PANEL_WIDTH}px` } }, /* @__PURE__ */ React12.createElement(CalendarHeader, null, /* @__PURE__ */ React12.createElement(
1474
+ IconButton_default,
1475
+ {
1476
+ size: "sm",
1477
+ onClick: onPrev,
1478
+ "aria-label": `Previous ${ownerState.view === "day" ? "Month" : "Year"}`,
1479
+ style: { visibility: showPrev ? "visible" : "hidden" }
1480
+ },
1481
+ /* @__PURE__ */ React12.createElement(ChevronLeftIcon, null)
1482
+ ), /* @__PURE__ */ React12.createElement(
1483
+ Tooltip_default,
1484
+ {
1485
+ title: monthViewHintMessage,
1486
+ arrow: true,
1487
+ open: panelIndex === 0 && isMonthViewAssistHintOpen,
1488
+ placement: "bottom",
1489
+ disableFocusListener: true,
1490
+ disableHoverListener: true,
1491
+ disableTouchListener: true,
1492
+ variant: "solid"
1493
+ },
1494
+ /* @__PURE__ */ React12.createElement(
1495
+ CalendarSwitchViewButton,
1496
+ {
1497
+ ownerState,
1498
+ variant: "plain",
1499
+ color: "neutral",
1500
+ onClick: onSwitchView,
1501
+ "aria-label": "Switch Calendar View"
1502
+ },
1503
+ title
1504
+ )
1505
+ ), /* @__PURE__ */ React12.createElement(
1506
+ IconButton_default,
1507
+ {
1508
+ size: "sm",
1509
+ onClick: onNext,
1510
+ "aria-label": `Next ${ownerState.view === "day" ? "Month" : "Year"}`,
1511
+ style: { visibility: showNext ? "visible" : "hidden" }
1512
+ },
1513
+ /* @__PURE__ */ React12.createElement(ChevronRightIcon, null)
1514
+ )));
1515
+ };
1368
1516
  var Calendar = forwardRef4((inProps, ref) => {
1369
1517
  const [props, ownerState] = useCalendarProps(inProps);
1370
1518
  const {
@@ -1381,6 +1529,7 @@ var Calendar = forwardRef4((inProps, ref) => {
1381
1529
  maxDate,
1382
1530
  disableFuture,
1383
1531
  disablePast,
1532
+ numberOfMonths,
1384
1533
  ...others
1385
1534
  } = props;
1386
1535
  const { calendarTitle, onPrev, onNext } = useCalendar(ownerState);
@@ -1388,6 +1537,9 @@ var Calendar = forwardRef4((inProps, ref) => {
1388
1537
  const monthNavClickTimestampsRef = useRef3([]);
1389
1538
  const monthViewAssistHintShownInSessionRef = useRef3(false);
1390
1539
  const monthViewAssistHintTimeoutRef = useRef3(null);
1540
+ const [hoverDay, setHoverDay] = useState4(null);
1541
+ const [hoverMonth, setHoverMonth] = useState4(null);
1542
+ const resolvedNumberOfMonths = numberOfMonths ?? 1;
1391
1543
  const hasEndDate = Boolean(value?.[1]);
1392
1544
  const isRangeHintEligible = Boolean(rangeSelection && !hasEndDate);
1393
1545
  const isHintEligible = Boolean(view === "day" && (!rangeSelection || isRangeHintEligible));
@@ -1450,7 +1602,71 @@ var Calendar = forwardRef4((inProps, ref) => {
1450
1602
  closeMonthViewAssistHint();
1451
1603
  onViewChange?.();
1452
1604
  }, [closeMonthViewAssistHint, onViewChange]);
1453
- return /* @__PURE__ */ React12.createElement(CalendarRoot, { ref, ...others }, /* @__PURE__ */ React12.createElement(CalendarHeader, null, /* @__PURE__ */ React12.createElement(IconButton_default, { size: "sm", onClick: handlePrevClick, "aria-label": `Previous ${view === "day" ? "Month" : "Year"}` }, /* @__PURE__ */ React12.createElement(ChevronLeftIcon, null)), /* @__PURE__ */ React12.createElement(
1605
+ const maxWidth = CALENDAR_PANEL_WIDTH * resolvedNumberOfMonths + CALENDAR_PANEL_GAP * (resolvedNumberOfMonths - 1);
1606
+ if (resolvedNumberOfMonths > 1) {
1607
+ const panels = Array.from({ length: resolvedNumberOfMonths }, (_, i) => {
1608
+ const panelViewMonth = new Date(ownerState.viewMonth);
1609
+ panelViewMonth.setMonth(panelViewMonth.getMonth() + i);
1610
+ panelViewMonth.setDate(1);
1611
+ panelViewMonth.setHours(0, 0, 0, 0);
1612
+ return {
1613
+ ...ownerState,
1614
+ viewMonth: panelViewMonth,
1615
+ hoverDay,
1616
+ onHoverDayChange: setHoverDay,
1617
+ hoverMonth,
1618
+ onHoverMonthChange: setHoverMonth
1619
+ };
1620
+ });
1621
+ return /* @__PURE__ */ React12.createElement(CalendarRoot, { ref, ...others, style: { maxWidth: `${maxWidth}px` } }, view === "month" ? (
1622
+ // Month view: single header + single month grid (consistent with single-month path)
1623
+ /* @__PURE__ */ React12.createElement(React12.Fragment, null, /* @__PURE__ */ React12.createElement(CalendarHeader, null, /* @__PURE__ */ React12.createElement(IconButton_default, { size: "sm", onClick: handlePrevClick, "aria-label": "Previous Year" }, /* @__PURE__ */ React12.createElement(ChevronLeftIcon, null)), /* @__PURE__ */ React12.createElement(
1624
+ Tooltip_default,
1625
+ {
1626
+ title: monthViewHintMessage,
1627
+ arrow: true,
1628
+ open: false,
1629
+ placement: "bottom",
1630
+ disableFocusListener: true,
1631
+ disableHoverListener: true,
1632
+ disableTouchListener: true,
1633
+ variant: "solid"
1634
+ },
1635
+ /* @__PURE__ */ React12.createElement(
1636
+ CalendarSwitchViewButton,
1637
+ {
1638
+ ownerState,
1639
+ variant: "plain",
1640
+ color: "neutral",
1641
+ onClick: handleSwitchViewClick,
1642
+ "aria-label": "Switch Calendar View"
1643
+ },
1644
+ calendarTitle
1645
+ )
1646
+ ), /* @__PURE__ */ React12.createElement(IconButton_default, { size: "sm", onClick: handleNextClick, "aria-label": "Next Year" }, /* @__PURE__ */ React12.createElement(ChevronRightIcon, null))), /* @__PURE__ */ React12.createElement(PickerMonths, { ownerState }))
1647
+ ) : /* @__PURE__ */ React12.createElement(React12.Fragment, null, /* @__PURE__ */ React12.createElement(CalendarMultiContainer, null, panels.map((panelOwnerState, i) => /* @__PURE__ */ React12.createElement(
1648
+ CalendarPanel,
1649
+ {
1650
+ key: panelOwnerState.viewMonth.toISOString(),
1651
+ ownerState: panelOwnerState,
1652
+ panelIndex: i,
1653
+ totalPanels: resolvedNumberOfMonths,
1654
+ onPrev: handlePrevClick,
1655
+ onNext: handleNextClick,
1656
+ onSwitchView: handleSwitchViewClick,
1657
+ isMonthViewAssistHintOpen,
1658
+ monthViewHintMessage
1659
+ }
1660
+ ))), /* @__PURE__ */ React12.createElement(
1661
+ MultiMonthPickerDays,
1662
+ {
1663
+ panels,
1664
+ direction: ownerState.direction,
1665
+ numberOfMonths: resolvedNumberOfMonths
1666
+ }
1667
+ )));
1668
+ }
1669
+ return /* @__PURE__ */ React12.createElement(CalendarRoot, { ref, ...others, style: { maxWidth: `${maxWidth}px` } }, /* @__PURE__ */ React12.createElement(CalendarHeader, null, /* @__PURE__ */ React12.createElement(IconButton_default, { size: "sm", onClick: handlePrevClick, "aria-label": `Previous ${view === "day" ? "Month" : "Year"}` }, /* @__PURE__ */ React12.createElement(ChevronLeftIcon, null)), /* @__PURE__ */ React12.createElement(
1454
1670
  Tooltip_default,
1455
1671
  {
1456
1672
  title: monthViewHintMessage,
@@ -3452,8 +3668,9 @@ var StyledTableRow2 = styled12("tr", {
3452
3668
  var VirtualizedTableRow = memo(StyledTableRow2, (prevProps, nextProps) => {
3453
3669
  return prevProps.striped === nextProps.striped && prevProps.style?.height === nextProps.style?.height && prevProps.style?.transform === nextProps.style?.transform && // @ts-ignore
3454
3670
  prevProps["data-row-id"] === nextProps["data-row-id"] && // @ts-ignore
3455
- prevProps["data-index"] === nextProps["data-index"] && prevProps.tabIndex === nextProps.tabIndex && prevProps["aria-checked"] === nextProps["aria-checked"] && // Include children check to handle isCellEditable changes
3456
- prevProps.children === nextProps.children;
3671
+ prevProps["data-index"] === nextProps["data-index"] && prevProps.tabIndex === nextProps.tabIndex && prevProps["aria-checked"] === nextProps["aria-checked"] && // Track column structure changes (e.g. isCellEditable toggled, columns added/removed)
3672
+ // @ts-ignore
3673
+ prevProps["data-columns-key"] === nextProps["data-columns-key"];
3457
3674
  });
3458
3675
 
3459
3676
  // src/components/DataTable/hooks.ts
@@ -4160,6 +4377,15 @@ Pagination.displayName = "Pagination";
4160
4377
  var Pagination_default = Pagination;
4161
4378
 
4162
4379
  // src/components/DataTable/DataTable.tsx
4380
+ var _columnsVersionCache = /* @__PURE__ */ new WeakMap();
4381
+ var _columnsVersionCounter = 0;
4382
+ function getColumnsVersion(columns) {
4383
+ if (!_columnsVersionCache.has(columns)) {
4384
+ _columnsVersionCache.set(columns, ++_columnsVersionCounter);
4385
+ }
4386
+ return _columnsVersionCache.get(columns);
4387
+ }
4388
+ var EMPTY_CHECKBOX_PROPS = {};
4163
4389
  function Component(props, apiRef) {
4164
4390
  const {
4165
4391
  rows,
@@ -4207,7 +4433,7 @@ function Component(props, apiRef) {
4207
4433
  noRowsOverlay: NoRowsOverlay = DefaultNoRowsOverlay
4208
4434
  } = {},
4209
4435
  slotProps: {
4210
- checkbox: checkboxProps = {},
4436
+ checkbox: checkboxProps = EMPTY_CHECKBOX_PROPS,
4211
4437
  toolbar: toolbarProps,
4212
4438
  background: backgroundProps = {},
4213
4439
  noRowsOverlay: noRowsOverlayProps = {}
@@ -4255,6 +4481,28 @@ function Component(props, apiRef) {
4255
4481
  overscan: 10
4256
4482
  });
4257
4483
  const paginationModel = useMemo10(() => ({ page, pageSize }), [page, pageSize]);
4484
+ const columnsKey = getColumnsVersion(columns);
4485
+ const headerCheckboxElement = useMemo10(
4486
+ () => /* @__PURE__ */ React25.createElement(
4487
+ RenderCheckbox,
4488
+ {
4489
+ onChange: onAllCheckboxChange,
4490
+ checked: isAllSelected,
4491
+ indeterminate: (selectionModel || []).length > 0 && !isAllSelected,
4492
+ disabled: dataInPage.length > 0 && !selectableRowCount,
4493
+ ...checkboxProps
4494
+ }
4495
+ ),
4496
+ [
4497
+ RenderCheckbox,
4498
+ onAllCheckboxChange,
4499
+ isAllSelected,
4500
+ selectionModel,
4501
+ selectableRowCount,
4502
+ dataInPage.length,
4503
+ checkboxProps
4504
+ ]
4505
+ );
4258
4506
  const totalSize = virtualizer.getTotalSize();
4259
4507
  const virtualizedItems = virtualizer.getVirtualItems();
4260
4508
  const showNoRowsOverlay = !loading && rowCount === 0;
@@ -4459,16 +4707,7 @@ function Component(props, apiRef) {
4459
4707
  verticalAlign: "middle"
4460
4708
  }
4461
4709
  },
4462
- /* @__PURE__ */ React25.createElement(
4463
- RenderCheckbox,
4464
- {
4465
- onChange: onAllCheckboxChange,
4466
- checked: isAllSelected,
4467
- indeterminate: (selectionModel || []).length > 0 && !isAllSelected,
4468
- disabled: dataInPage.length > 0 && !selectableRowCount,
4469
- ...checkboxProps
4470
- }
4471
- )
4710
+ headerCheckboxElement
4472
4711
  ), level > 0 && Array.from({ length: levelGroups[0]?.startIndex || 0 }).map((_2, i) => /* @__PURE__ */ React25.createElement("th", { key: `empty-${level}-${i}` })), levelGroups.filter((g) => g.colspan > 0).map((group, groupIndex) => {
4473
4712
  const nextGroup = levelGroups[groupIndex + 1];
4474
4713
  const emptyCells = nextGroup ? nextGroup.startIndex - (group.startIndex + group.colspan) : columns.length - (group.startIndex + group.colspan);
@@ -4495,16 +4734,7 @@ function Component(props, apiRef) {
4495
4734
  textAlign: "center"
4496
4735
  }
4497
4736
  },
4498
- /* @__PURE__ */ React25.createElement(
4499
- RenderCheckbox,
4500
- {
4501
- onChange: onAllCheckboxChange,
4502
- checked: isAllSelected,
4503
- indeterminate: (selectionModel || []).length > 0 && !isAllSelected,
4504
- disabled: dataInPage.length > 0 && !selectableRowCount,
4505
- ...checkboxProps
4506
- }
4507
- )
4737
+ headerCheckboxElement
4508
4738
  ), columns.map((c, i) => (
4509
4739
  // @ts-ignore
4510
4740
  /* @__PURE__ */ React25.createElement(
@@ -4575,6 +4805,7 @@ function Component(props, apiRef) {
4575
4805
  key: virtualizedRow.key,
4576
4806
  "data-row-id": rowId,
4577
4807
  "data-index": rowIndex,
4808
+ "data-columns-key": columnsKey,
4578
4809
  "aria-rowindex": rowIndex + 1,
4579
4810
  role: checkboxSelection && !disableSelectionOnClick ? "checkbox" : void 0,
4580
4811
  tabIndex: focusedRowId === rowId ? 0 : -1,
@@ -4840,6 +5071,7 @@ var DateRangePicker = forwardRef8((inProps, ref) => {
4840
5071
  hideClearButton,
4841
5072
  readOnly,
4842
5073
  presets,
5074
+ numberOfMonths,
4843
5075
  ...innerProps
4844
5076
  } = props;
4845
5077
  const innerRef = useRef8(null);
@@ -5036,7 +5268,7 @@ var DateRangePicker = forwardRef8((inProps, ref) => {
5036
5268
  "aria-label": "Calendar Tooltip",
5037
5269
  "aria-expanded": open
5038
5270
  },
5039
- /* @__PURE__ */ React26.createElement(CalendarSheet2, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ React26.createElement(CalendarSheetContent2, null, /* @__PURE__ */ React26.createElement(CalendarSection2, null, /* @__PURE__ */ React26.createElement(
5271
+ /* @__PURE__ */ React26.createElement(CalendarSheet2, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ React26.createElement(CalendarSheetContent2, null, /* @__PURE__ */ React26.createElement(CalendarSection2, { style: { width: "auto" } }, /* @__PURE__ */ React26.createElement(
5040
5272
  Calendar_default,
5041
5273
  {
5042
5274
  rangeSelection: true,
@@ -5046,7 +5278,8 @@ var DateRangePicker = forwardRef8((inProps, ref) => {
5046
5278
  maxDate: maxDate ? new Date(maxDate) : void 0,
5047
5279
  disableFuture,
5048
5280
  disablePast,
5049
- locale
5281
+ locale,
5282
+ numberOfMonths
5050
5283
  }
5051
5284
  ), !hideClearButton && /* @__PURE__ */ React26.createElement(
5052
5285
  DialogActions_default,