@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.cjs CHANGED
@@ -1026,8 +1026,12 @@ var useCalendarProps = (inProps) => {
1026
1026
  // src/components/Calendar/hooks/use-calendar.ts
1027
1027
  var import_react13 = require("react");
1028
1028
  var useCalendar = (ownerState) => {
1029
- const [hoverDay, setHoverDay] = (0, import_react13.useState)(null);
1030
- const [hoverMonth, setHoverMonth] = (0, import_react13.useState)(null);
1029
+ const [localHoverDay, setLocalHoverDay] = (0, import_react13.useState)(null);
1030
+ const [localHoverMonth, setLocalHoverMonth] = (0, import_react13.useState)(null);
1031
+ const hoverDay = ownerState.hoverDay !== void 0 ? ownerState.hoverDay : localHoverDay;
1032
+ const setHoverDay = ownerState.onHoverDayChange ?? setLocalHoverDay;
1033
+ const hoverMonth = ownerState.hoverMonth !== void 0 ? ownerState.hoverMonth : localHoverMonth;
1034
+ const setHoverMonth = ownerState.onHoverMonthChange ?? setLocalHoverMonth;
1031
1035
  return {
1032
1036
  calendarTitle: ownerState.view === "month" ? getYearName(ownerState.viewMonth, ownerState.locale || "default") : getMonthName(ownerState.viewMonth, ownerState.locale || "default"),
1033
1037
  onPrev: (0, import_react13.useCallback)(() => {
@@ -1226,11 +1230,18 @@ var MONTH_NAV_CLICK_THRESHOLD = 3;
1226
1230
  var MONTH_VIEW_HINT_DURATION_MS = 5e3;
1227
1231
  var MONTH_VIEW_HINT_COOLDOWN_MS = 3e4;
1228
1232
  var lastMonthViewAssistHintShownAt = 0;
1233
+ var CALENDAR_PANEL_WIDTH = 264;
1234
+ var CALENDAR_PANEL_GAP = 16;
1229
1235
  var CalendarRoot = (0, import_joy19.styled)("div", {
1230
1236
  name: "Calendar",
1231
1237
  slot: "root"
1238
+ })({});
1239
+ var CalendarMultiContainer = (0, import_joy19.styled)("div", {
1240
+ name: "Calendar",
1241
+ slot: "multiContainer"
1232
1242
  })({
1233
- maxWidth: "264px"
1243
+ display: "flex",
1244
+ gap: `${CALENDAR_PANEL_GAP}px`
1234
1245
  });
1235
1246
  var CalendarHeader = (0, import_joy19.styled)("div", {
1236
1247
  name: "Calendar",
@@ -1265,6 +1276,16 @@ var CalendarViewTable = (0, import_joy19.styled)(import_framer_motion13.motion.t
1265
1276
  paddingBottom: theme.spacing(2)
1266
1277
  }
1267
1278
  }));
1279
+ var StaticCalendarViewTable = (0, import_joy19.styled)("table")(({ theme }) => ({
1280
+ borderSpacing: 0,
1281
+ "& td, & th": {
1282
+ padding: 0
1283
+ },
1284
+ "& th": {
1285
+ paddingTop: theme.spacing(2),
1286
+ paddingBottom: theme.spacing(2)
1287
+ }
1288
+ }));
1268
1289
  var CalendarWeekHeaderContainer = (0, import_joy19.styled)("thead", {
1269
1290
  name: "Calendar",
1270
1291
  slot: "weekHeaderContainer"
@@ -1513,6 +1534,133 @@ var PickerMonths = (props) => {
1513
1534
  /* @__PURE__ */ import_react14.default.createElement("tbody", null, chunkedMonths.map((months, i) => /* @__PURE__ */ import_react14.default.createElement(import_react14.Fragment, { key: months.join("_") }, /* @__PURE__ */ import_react14.default.createElement("tr", null, months.map((monthIndex, j) => /* @__PURE__ */ import_react14.default.createElement(import_react14.Fragment, { key: monthIndex }, /* @__PURE__ */ import_react14.default.createElement(CalendarMonthCell, { ...getMonthCellProps(monthIndex) }, /* @__PURE__ */ import_react14.default.createElement(CalendarMonth, { size: "sm", variant: "plain", color: "neutral", ...getPickerMonthProps(monthIndex) }, getMonthNameFromIndex(monthIndex, ownerState.locale))), j < 3 && /* @__PURE__ */ import_react14.default.createElement("td", { style: { width: 4 }, "aria-hidden": "true", "aria-description": "cell-gap" })))), i < chunkedMonths.length - 1 && /* @__PURE__ */ import_react14.default.createElement("tr", { "aria-hidden": "true", "aria-description": "row-gap" }, /* @__PURE__ */ import_react14.default.createElement("td", { colSpan: 7, style: { height: 4 } })))))
1514
1535
  )));
1515
1536
  };
1537
+ var PlainPickerDays = ({ ownerState }) => {
1538
+ const { getPickerDayProps, getDayCellProps } = useCalendar(ownerState);
1539
+ const calendarDates = (0, import_react14.useMemo)(() => getCalendarDates(ownerState.viewMonth), [ownerState.viewMonth]);
1540
+ const weekdayNames = (0, import_react14.useMemo)(() => getWeekdayNames(ownerState.locale || "default"), [ownerState.locale]);
1541
+ return /* @__PURE__ */ import_react14.default.createElement(StaticCalendarViewTable, null, /* @__PURE__ */ import_react14.default.createElement(CalendarWeekHeaderContainer, null, /* @__PURE__ */ import_react14.default.createElement("tr", null, weekdayNames.map((name, i) => /* @__PURE__ */ import_react14.default.createElement(import_react14.Fragment, { key: `${ownerState.viewMonth}_${name}_${i}` }, /* @__PURE__ */ import_react14.default.createElement("th", null, /* @__PURE__ */ import_react14.default.createElement(Typography_default, { level: "body-xs", textAlign: "center" }, name)), i < 6 && /* @__PURE__ */ import_react14.default.createElement("th", { style: { width: 4 }, "aria-hidden": "true", "aria-description": "cell-gap" }))))), /* @__PURE__ */ import_react14.default.createElement(CalendarDayPickerContainer, null, calendarDates.map((weekDates, rowIndex) => /* @__PURE__ */ import_react14.default.createElement(import_react14.Fragment, { key: `${ownerState.viewMonth}_${rowIndex}` }, /* @__PURE__ */ import_react14.default.createElement("tr", null, weekDates.map(
1542
+ (date, i) => date ? /* @__PURE__ */ import_react14.default.createElement(import_react14.Fragment, { key: `${ownerState.viewMonth}_${date}_${i}` }, /* @__PURE__ */ import_react14.default.createElement(CalendarDayCell, { ...getDayCellProps(date) }, /* @__PURE__ */ import_react14.default.createElement(CalendarDay, { size: "sm", variant: "plain", color: "neutral", ...getPickerDayProps(date) }, date)), i < 6 && /* @__PURE__ */ import_react14.default.createElement("td", { "aria-hidden": "true", "aria-description": "cell-gap" })) : /* @__PURE__ */ import_react14.default.createElement(import_react14.Fragment, { key: `${ownerState.viewMonth}_${i}` }, /* @__PURE__ */ import_react14.default.createElement("td", null), i < 6 && /* @__PURE__ */ import_react14.default.createElement("td", { "aria-hidden": "true", "aria-description": "cell-gap" }))
1543
+ )), rowIndex < calendarDates.length - 1 && /* @__PURE__ */ import_react14.default.createElement("tr", { "aria-hidden": "true", "aria-description": "row-gap" }, /* @__PURE__ */ import_react14.default.createElement("td", { colSpan: 13, style: { height: 4 } }))))));
1544
+ };
1545
+ var MultiMonthPickerDays = ({
1546
+ panels,
1547
+ direction,
1548
+ numberOfMonths
1549
+ }) => {
1550
+ const slideDistance = CALENDAR_PANEL_WIDTH * numberOfMonths + CALENDAR_PANEL_GAP * (numberOfMonths - 1) + CALENDAR_PANEL_WIDTH;
1551
+ const multiVariants = {
1552
+ enter: (dir) => ({ x: dir > 0 ? slideDistance : -slideDistance, opacity: 0 }),
1553
+ center: { position: "relative", zIndex: 1, x: 0, opacity: 1 },
1554
+ exit: (dir) => ({
1555
+ position: "absolute",
1556
+ zIndex: 0,
1557
+ x: dir < 0 ? slideDistance : -slideDistance,
1558
+ opacity: 0
1559
+ })
1560
+ };
1561
+ const key = `${panels[0].viewMonth.toISOString()}_${direction}`;
1562
+ return /* @__PURE__ */ import_react14.default.createElement("div", { style: { position: "relative", overflow: "hidden", minHeight: "250px" } }, /* @__PURE__ */ import_react14.default.createElement(import_framer_motion13.AnimatePresence, { initial: false, custom: direction }, /* @__PURE__ */ import_react14.default.createElement(
1563
+ import_framer_motion13.motion.div,
1564
+ {
1565
+ key,
1566
+ custom: direction,
1567
+ variants: multiVariants,
1568
+ initial: "enter",
1569
+ animate: "center",
1570
+ exit: "exit",
1571
+ transition: {
1572
+ x: { type: "spring", stiffness: 300, damping: 30 },
1573
+ opacity: { duration: 0.2 }
1574
+ },
1575
+ drag: "x",
1576
+ dragConstraints: { left: 0, right: 0 },
1577
+ dragElastic: 1,
1578
+ onDragEnd: (e, { offset, velocity }) => {
1579
+ const swipe = swipePower(offset.x, velocity.x);
1580
+ if (swipe < -swipeConfidenceThreshold) {
1581
+ const date = new Date(panels[0].viewMonth);
1582
+ date.setMonth(date.getMonth() + 1);
1583
+ panels[0].onMonthChange?.(date);
1584
+ } else if (swipe > swipeConfidenceThreshold) {
1585
+ const date = new Date(panels[0].viewMonth);
1586
+ date.setMonth(date.getMonth() - 1);
1587
+ panels[0].onMonthChange?.(date);
1588
+ }
1589
+ },
1590
+ style: { display: "flex", gap: `${CALENDAR_PANEL_GAP}px`, top: 0, left: 0, width: "100%" }
1591
+ },
1592
+ panels.map((panelOwnerState) => /* @__PURE__ */ import_react14.default.createElement(
1593
+ "div",
1594
+ {
1595
+ key: panelOwnerState.viewMonth.toISOString(),
1596
+ style: {
1597
+ flex: "0 0 auto",
1598
+ width: `${CALENDAR_PANEL_WIDTH}px`,
1599
+ paddingLeft: "16px",
1600
+ paddingRight: "16px",
1601
+ boxSizing: "border-box"
1602
+ }
1603
+ },
1604
+ /* @__PURE__ */ import_react14.default.createElement(PlainPickerDays, { ownerState: panelOwnerState })
1605
+ ))
1606
+ )));
1607
+ };
1608
+ var CalendarPanel = ({
1609
+ ownerState,
1610
+ panelIndex,
1611
+ totalPanels,
1612
+ onPrev,
1613
+ onNext,
1614
+ onSwitchView,
1615
+ isMonthViewAssistHintOpen,
1616
+ monthViewHintMessage
1617
+ }) => {
1618
+ const showPrev = panelIndex === 0;
1619
+ const showNext = panelIndex === totalPanels - 1;
1620
+ const title = ownerState.view === "month" ? getYearName(ownerState.viewMonth, ownerState.locale || "default") : getMonthName(ownerState.viewMonth, ownerState.locale || "default");
1621
+ return /* @__PURE__ */ import_react14.default.createElement("div", { style: { flex: 1, maxWidth: `${CALENDAR_PANEL_WIDTH}px` } }, /* @__PURE__ */ import_react14.default.createElement(CalendarHeader, null, /* @__PURE__ */ import_react14.default.createElement(
1622
+ IconButton_default,
1623
+ {
1624
+ size: "sm",
1625
+ onClick: onPrev,
1626
+ "aria-label": `Previous ${ownerState.view === "day" ? "Month" : "Year"}`,
1627
+ style: { visibility: showPrev ? "visible" : "hidden" }
1628
+ },
1629
+ /* @__PURE__ */ import_react14.default.createElement(import_ChevronLeft.default, null)
1630
+ ), /* @__PURE__ */ import_react14.default.createElement(
1631
+ Tooltip_default,
1632
+ {
1633
+ title: monthViewHintMessage,
1634
+ arrow: true,
1635
+ open: panelIndex === 0 && isMonthViewAssistHintOpen,
1636
+ placement: "bottom",
1637
+ disableFocusListener: true,
1638
+ disableHoverListener: true,
1639
+ disableTouchListener: true,
1640
+ variant: "solid"
1641
+ },
1642
+ /* @__PURE__ */ import_react14.default.createElement(
1643
+ CalendarSwitchViewButton,
1644
+ {
1645
+ ownerState,
1646
+ variant: "plain",
1647
+ color: "neutral",
1648
+ onClick: onSwitchView,
1649
+ "aria-label": "Switch Calendar View"
1650
+ },
1651
+ title
1652
+ )
1653
+ ), /* @__PURE__ */ import_react14.default.createElement(
1654
+ IconButton_default,
1655
+ {
1656
+ size: "sm",
1657
+ onClick: onNext,
1658
+ "aria-label": `Next ${ownerState.view === "day" ? "Month" : "Year"}`,
1659
+ style: { visibility: showNext ? "visible" : "hidden" }
1660
+ },
1661
+ /* @__PURE__ */ import_react14.default.createElement(import_ChevronRight.default, null)
1662
+ )));
1663
+ };
1516
1664
  var Calendar = (0, import_react14.forwardRef)((inProps, ref) => {
1517
1665
  const [props, ownerState] = useCalendarProps(inProps);
1518
1666
  const {
@@ -1529,6 +1677,7 @@ var Calendar = (0, import_react14.forwardRef)((inProps, ref) => {
1529
1677
  maxDate,
1530
1678
  disableFuture,
1531
1679
  disablePast,
1680
+ numberOfMonths,
1532
1681
  ...others
1533
1682
  } = props;
1534
1683
  const { calendarTitle, onPrev, onNext } = useCalendar(ownerState);
@@ -1536,6 +1685,9 @@ var Calendar = (0, import_react14.forwardRef)((inProps, ref) => {
1536
1685
  const monthNavClickTimestampsRef = (0, import_react14.useRef)([]);
1537
1686
  const monthViewAssistHintShownInSessionRef = (0, import_react14.useRef)(false);
1538
1687
  const monthViewAssistHintTimeoutRef = (0, import_react14.useRef)(null);
1688
+ const [hoverDay, setHoverDay] = (0, import_react14.useState)(null);
1689
+ const [hoverMonth, setHoverMonth] = (0, import_react14.useState)(null);
1690
+ const resolvedNumberOfMonths = numberOfMonths ?? 1;
1539
1691
  const hasEndDate = Boolean(value?.[1]);
1540
1692
  const isRangeHintEligible = Boolean(rangeSelection && !hasEndDate);
1541
1693
  const isHintEligible = Boolean(view === "day" && (!rangeSelection || isRangeHintEligible));
@@ -1598,7 +1750,71 @@ var Calendar = (0, import_react14.forwardRef)((inProps, ref) => {
1598
1750
  closeMonthViewAssistHint();
1599
1751
  onViewChange?.();
1600
1752
  }, [closeMonthViewAssistHint, onViewChange]);
1601
- return /* @__PURE__ */ import_react14.default.createElement(CalendarRoot, { ref, ...others }, /* @__PURE__ */ import_react14.default.createElement(CalendarHeader, null, /* @__PURE__ */ import_react14.default.createElement(IconButton_default, { size: "sm", onClick: handlePrevClick, "aria-label": `Previous ${view === "day" ? "Month" : "Year"}` }, /* @__PURE__ */ import_react14.default.createElement(import_ChevronLeft.default, null)), /* @__PURE__ */ import_react14.default.createElement(
1753
+ const maxWidth = CALENDAR_PANEL_WIDTH * resolvedNumberOfMonths + CALENDAR_PANEL_GAP * (resolvedNumberOfMonths - 1);
1754
+ if (resolvedNumberOfMonths > 1) {
1755
+ const panels = Array.from({ length: resolvedNumberOfMonths }, (_, i) => {
1756
+ const panelViewMonth = new Date(ownerState.viewMonth);
1757
+ panelViewMonth.setMonth(panelViewMonth.getMonth() + i);
1758
+ panelViewMonth.setDate(1);
1759
+ panelViewMonth.setHours(0, 0, 0, 0);
1760
+ return {
1761
+ ...ownerState,
1762
+ viewMonth: panelViewMonth,
1763
+ hoverDay,
1764
+ onHoverDayChange: setHoverDay,
1765
+ hoverMonth,
1766
+ onHoverMonthChange: setHoverMonth
1767
+ };
1768
+ });
1769
+ return /* @__PURE__ */ import_react14.default.createElement(CalendarRoot, { ref, ...others, style: { maxWidth: `${maxWidth}px` } }, view === "month" ? (
1770
+ // Month view: single header + single month grid (consistent with single-month path)
1771
+ /* @__PURE__ */ import_react14.default.createElement(import_react14.default.Fragment, null, /* @__PURE__ */ import_react14.default.createElement(CalendarHeader, null, /* @__PURE__ */ import_react14.default.createElement(IconButton_default, { size: "sm", onClick: handlePrevClick, "aria-label": "Previous Year" }, /* @__PURE__ */ import_react14.default.createElement(import_ChevronLeft.default, null)), /* @__PURE__ */ import_react14.default.createElement(
1772
+ Tooltip_default,
1773
+ {
1774
+ title: monthViewHintMessage,
1775
+ arrow: true,
1776
+ open: false,
1777
+ placement: "bottom",
1778
+ disableFocusListener: true,
1779
+ disableHoverListener: true,
1780
+ disableTouchListener: true,
1781
+ variant: "solid"
1782
+ },
1783
+ /* @__PURE__ */ import_react14.default.createElement(
1784
+ CalendarSwitchViewButton,
1785
+ {
1786
+ ownerState,
1787
+ variant: "plain",
1788
+ color: "neutral",
1789
+ onClick: handleSwitchViewClick,
1790
+ "aria-label": "Switch Calendar View"
1791
+ },
1792
+ calendarTitle
1793
+ )
1794
+ ), /* @__PURE__ */ import_react14.default.createElement(IconButton_default, { size: "sm", onClick: handleNextClick, "aria-label": "Next Year" }, /* @__PURE__ */ import_react14.default.createElement(import_ChevronRight.default, null))), /* @__PURE__ */ import_react14.default.createElement(PickerMonths, { ownerState }))
1795
+ ) : /* @__PURE__ */ import_react14.default.createElement(import_react14.default.Fragment, null, /* @__PURE__ */ import_react14.default.createElement(CalendarMultiContainer, null, panels.map((panelOwnerState, i) => /* @__PURE__ */ import_react14.default.createElement(
1796
+ CalendarPanel,
1797
+ {
1798
+ key: panelOwnerState.viewMonth.toISOString(),
1799
+ ownerState: panelOwnerState,
1800
+ panelIndex: i,
1801
+ totalPanels: resolvedNumberOfMonths,
1802
+ onPrev: handlePrevClick,
1803
+ onNext: handleNextClick,
1804
+ onSwitchView: handleSwitchViewClick,
1805
+ isMonthViewAssistHintOpen,
1806
+ monthViewHintMessage
1807
+ }
1808
+ ))), /* @__PURE__ */ import_react14.default.createElement(
1809
+ MultiMonthPickerDays,
1810
+ {
1811
+ panels,
1812
+ direction: ownerState.direction,
1813
+ numberOfMonths: resolvedNumberOfMonths
1814
+ }
1815
+ )));
1816
+ }
1817
+ return /* @__PURE__ */ import_react14.default.createElement(CalendarRoot, { ref, ...others, style: { maxWidth: `${maxWidth}px` } }, /* @__PURE__ */ import_react14.default.createElement(CalendarHeader, null, /* @__PURE__ */ import_react14.default.createElement(IconButton_default, { size: "sm", onClick: handlePrevClick, "aria-label": `Previous ${view === "day" ? "Month" : "Year"}` }, /* @__PURE__ */ import_react14.default.createElement(import_ChevronLeft.default, null)), /* @__PURE__ */ import_react14.default.createElement(
1602
1818
  Tooltip_default,
1603
1819
  {
1604
1820
  title: monthViewHintMessage,
@@ -3577,8 +3793,9 @@ var StyledTableRow2 = (0, import_joy32.styled)("tr", {
3577
3793
  var VirtualizedTableRow = (0, import_react24.memo)(StyledTableRow2, (prevProps, nextProps) => {
3578
3794
  return prevProps.striped === nextProps.striped && prevProps.style?.height === nextProps.style?.height && prevProps.style?.transform === nextProps.style?.transform && // @ts-ignore
3579
3795
  prevProps["data-row-id"] === nextProps["data-row-id"] && // @ts-ignore
3580
- prevProps["data-index"] === nextProps["data-index"] && prevProps.tabIndex === nextProps.tabIndex && prevProps["aria-checked"] === nextProps["aria-checked"] && // Include children check to handle isCellEditable changes
3581
- prevProps.children === nextProps.children;
3796
+ 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)
3797
+ // @ts-ignore
3798
+ prevProps["data-columns-key"] === nextProps["data-columns-key"];
3582
3799
  });
3583
3800
 
3584
3801
  // src/components/DataTable/hooks.ts
@@ -4285,6 +4502,15 @@ Pagination.displayName = "Pagination";
4285
4502
  var Pagination_default = Pagination;
4286
4503
 
4287
4504
  // src/components/DataTable/DataTable.tsx
4505
+ var _columnsVersionCache = /* @__PURE__ */ new WeakMap();
4506
+ var _columnsVersionCounter = 0;
4507
+ function getColumnsVersion(columns) {
4508
+ if (!_columnsVersionCache.has(columns)) {
4509
+ _columnsVersionCache.set(columns, ++_columnsVersionCounter);
4510
+ }
4511
+ return _columnsVersionCache.get(columns);
4512
+ }
4513
+ var EMPTY_CHECKBOX_PROPS = {};
4288
4514
  function Component(props, apiRef) {
4289
4515
  const {
4290
4516
  rows,
@@ -4332,7 +4558,7 @@ function Component(props, apiRef) {
4332
4558
  noRowsOverlay: NoRowsOverlay = DefaultNoRowsOverlay
4333
4559
  } = {},
4334
4560
  slotProps: {
4335
- checkbox: checkboxProps = {},
4561
+ checkbox: checkboxProps = EMPTY_CHECKBOX_PROPS,
4336
4562
  toolbar: toolbarProps,
4337
4563
  background: backgroundProps = {},
4338
4564
  noRowsOverlay: noRowsOverlayProps = {}
@@ -4380,6 +4606,28 @@ function Component(props, apiRef) {
4380
4606
  overscan: 10
4381
4607
  });
4382
4608
  const paginationModel = (0, import_react28.useMemo)(() => ({ page, pageSize }), [page, pageSize]);
4609
+ const columnsKey = getColumnsVersion(columns);
4610
+ const headerCheckboxElement = (0, import_react28.useMemo)(
4611
+ () => /* @__PURE__ */ import_react28.default.createElement(
4612
+ RenderCheckbox,
4613
+ {
4614
+ onChange: onAllCheckboxChange,
4615
+ checked: isAllSelected,
4616
+ indeterminate: (selectionModel || []).length > 0 && !isAllSelected,
4617
+ disabled: dataInPage.length > 0 && !selectableRowCount,
4618
+ ...checkboxProps
4619
+ }
4620
+ ),
4621
+ [
4622
+ RenderCheckbox,
4623
+ onAllCheckboxChange,
4624
+ isAllSelected,
4625
+ selectionModel,
4626
+ selectableRowCount,
4627
+ dataInPage.length,
4628
+ checkboxProps
4629
+ ]
4630
+ );
4383
4631
  const totalSize = virtualizer.getTotalSize();
4384
4632
  const virtualizedItems = virtualizer.getVirtualItems();
4385
4633
  const showNoRowsOverlay = !loading && rowCount === 0;
@@ -4584,16 +4832,7 @@ function Component(props, apiRef) {
4584
4832
  verticalAlign: "middle"
4585
4833
  }
4586
4834
  },
4587
- /* @__PURE__ */ import_react28.default.createElement(
4588
- RenderCheckbox,
4589
- {
4590
- onChange: onAllCheckboxChange,
4591
- checked: isAllSelected,
4592
- indeterminate: (selectionModel || []).length > 0 && !isAllSelected,
4593
- disabled: dataInPage.length > 0 && !selectableRowCount,
4594
- ...checkboxProps
4595
- }
4596
- )
4835
+ headerCheckboxElement
4597
4836
  ), level > 0 && Array.from({ length: levelGroups[0]?.startIndex || 0 }).map((_2, i) => /* @__PURE__ */ import_react28.default.createElement("th", { key: `empty-${level}-${i}` })), levelGroups.filter((g) => g.colspan > 0).map((group, groupIndex) => {
4598
4837
  const nextGroup = levelGroups[groupIndex + 1];
4599
4838
  const emptyCells = nextGroup ? nextGroup.startIndex - (group.startIndex + group.colspan) : columns.length - (group.startIndex + group.colspan);
@@ -4620,16 +4859,7 @@ function Component(props, apiRef) {
4620
4859
  textAlign: "center"
4621
4860
  }
4622
4861
  },
4623
- /* @__PURE__ */ import_react28.default.createElement(
4624
- RenderCheckbox,
4625
- {
4626
- onChange: onAllCheckboxChange,
4627
- checked: isAllSelected,
4628
- indeterminate: (selectionModel || []).length > 0 && !isAllSelected,
4629
- disabled: dataInPage.length > 0 && !selectableRowCount,
4630
- ...checkboxProps
4631
- }
4632
- )
4862
+ headerCheckboxElement
4633
4863
  ), columns.map((c, i) => (
4634
4864
  // @ts-ignore
4635
4865
  /* @__PURE__ */ import_react28.default.createElement(
@@ -4700,6 +4930,7 @@ function Component(props, apiRef) {
4700
4930
  key: virtualizedRow.key,
4701
4931
  "data-row-id": rowId,
4702
4932
  "data-index": rowIndex,
4933
+ "data-columns-key": columnsKey,
4703
4934
  "aria-rowindex": rowIndex + 1,
4704
4935
  role: checkboxSelection && !disableSelectionOnClick ? "checkbox" : void 0,
4705
4936
  tabIndex: focusedRowId === rowId ? 0 : -1,
@@ -4965,6 +5196,7 @@ var DateRangePicker = (0, import_react29.forwardRef)((inProps, ref) => {
4965
5196
  hideClearButton,
4966
5197
  readOnly,
4967
5198
  presets,
5199
+ numberOfMonths,
4968
5200
  ...innerProps
4969
5201
  } = props;
4970
5202
  const innerRef = (0, import_react29.useRef)(null);
@@ -5161,7 +5393,7 @@ var DateRangePicker = (0, import_react29.forwardRef)((inProps, ref) => {
5161
5393
  "aria-label": "Calendar Tooltip",
5162
5394
  "aria-expanded": open
5163
5395
  },
5164
- /* @__PURE__ */ import_react29.default.createElement(CalendarSheet2, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ import_react29.default.createElement(CalendarSheetContent2, null, /* @__PURE__ */ import_react29.default.createElement(CalendarSection2, null, /* @__PURE__ */ import_react29.default.createElement(
5396
+ /* @__PURE__ */ import_react29.default.createElement(CalendarSheet2, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ import_react29.default.createElement(CalendarSheetContent2, null, /* @__PURE__ */ import_react29.default.createElement(CalendarSection2, { style: { width: "auto" } }, /* @__PURE__ */ import_react29.default.createElement(
5165
5397
  Calendar_default,
5166
5398
  {
5167
5399
  rangeSelection: true,
@@ -5171,7 +5403,8 @@ var DateRangePicker = (0, import_react29.forwardRef)((inProps, ref) => {
5171
5403
  maxDate: maxDate ? new Date(maxDate) : void 0,
5172
5404
  disableFuture,
5173
5405
  disablePast,
5174
- locale
5406
+ locale,
5407
+ numberOfMonths
5175
5408
  }
5176
5409
  ), !hideClearButton && /* @__PURE__ */ import_react29.default.createElement(
5177
5410
  DialogActions_default,