@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/components/Calendar/hooks/use-calendar-props.d.ts +2 -0
- package/dist/components/Calendar/types.d.ts +10 -0
- package/dist/components/DateRangePicker/DateRangePicker.d.ts +4 -0
- package/dist/components/inputs/DateRangePicker.md +49 -0
- package/dist/index.browser.js +2 -2
- package/dist/index.browser.js.map +3 -3
- package/dist/index.cjs +262 -29
- package/dist/index.js +262 -29
- package/framer/index.js +1 -1
- package/package.json +3 -2
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 [
|
|
1030
|
-
const [
|
|
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
|
-
|
|
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
|
-
|
|
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"] && //
|
|
3581
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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,
|
|
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,
|