react-table-edit 1.5.43 → 1.5.44

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.mjs CHANGED
@@ -9056,6 +9056,20 @@ var SvgProcess = function (_a) {
9056
9056
  React$5.createElement("path", { d: "M22.43 3.87a1.302 1.302 0 0 0-2.545-.374H9.886V1.874a.375.375 0 0 0-.375-.375H2.858a.375.375 0 0 0-.375.375v3.992a.375.375 0 0 0 .375.375h6.653a.375.375 0 0 0 .375-.375V4.245h9.999a1.301 1.301 0 0 0 .867.868v6.344h-.902v-1.62a.376.376 0 0 0-.375-.376h-6.653a.375.375 0 0 0-.375.375v1.62H4.115a1.3 1.3 0 1 0-1.617 1.618v7.055a.375.375 0 0 0 .375.375H5.81v1.621a.375.375 0 0 0 .375.375h6.652a.376.376 0 0 0 .375-.375v-1.62h5.327l-.695.674a.375.375 0 1 0 .522.538l1.357-1.316a.377.377 0 0 0 .006-.544l-1.357-1.316a.375.375 0 1 0-.522.539l.695.674h-5.333v-1.62a.376.376 0 0 0-.375-.376H6.185a.376.376 0 0 0-.375.375v1.621H3.248v-6.68a1.301 1.301 0 0 0 .867-.867h8.332v1.62a.374.374 0 0 0 .375.376h6.653a.374.374 0 0 0 .375-.375v-1.621h1.277a.376.376 0 0 0 .375-.375v-6.72a1.3 1.3 0 0 0 .929-1.242ZM9.137 5.492H3.233V2.25h5.903v3.242ZM6.56 18.508h5.902v3.242H6.56v-3.242Zm-3.687-6.122a.554.554 0 0 1 0-1.108.554.554 0 0 1 0 1.108ZM19.1 13.453h-5.903V10.21H19.1v3.242Zm2.027-9.029a.554.554 0 0 1 0-1.107.554.554 0 0 1 0 1.107Z", fill: props.color || "currentColor" })));
9057
9057
  };
9058
9058
 
9059
+ var SvgProjectSetting = function (_a) {
9060
+ var title = _a.title, titleId = _a.titleId, props = __rest$1(_a, ["title", "titleId"]);
9061
+ return (React$5.createElement("svg", __assign({ width: props.fontSize || 24, height: props.fontSize || 24, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", strokeWidth: props.strokeWidth || 1.5, "aria-labelledby": titleId }, props),
9062
+ title ? React$5.createElement("title", { id: titleId }, title) : null,
9063
+ React$5.createElement("g", { clipPath: "url(#project-setting_svg__a)", fill: props.color || "currentColor" },
9064
+ React$5.createElement("path", { d: "M1.266.042C.9.155.53.506.43.834.394.961.375 1.528.375 2.616v1.598l.122.094c.201.16.403.122.51-.094.057-.108.071-.408.071-1.655V1.031l.136-.15.136-.155H19.275l.136.155.136.15v8.916l.14.14c.118.113.17.136.272.108a.533.533 0 0 0 .207-.103c.08-.07.084-.347.084-4.575 0-3.314-.014-4.547-.056-4.683-.07-.234-.366-.572-.619-.708l-.192-.103-9-.009C5.433.009 1.33.024 1.266.042Z" }),
9065
+ React$5.createElement("path", { d: "M2.03 2.156a.351.351 0 0 0-.15.136c-.033.061-.052.586-.052 1.481v1.388l.117.112c.061.066.17.118.235.118a.386.386 0 0 0 .234-.118c.108-.103.117-.15.117-.562v-.445h.263c.398 0 .623-.085.862-.329.347-.346.422-.778.206-1.209-.224-.45-.585-.619-1.303-.614-.234 0-.473.019-.53.042Zm1.106.778c.183.155.192.347.028.511-.094.099-.16.118-.375.118h-.258v-.75h.23c.183 0 .262.028.375.121ZM4.477 2.227l-.118.112V5.2l.122.093c.155.122.305.127.446.01.093-.075.112-.141.136-.474l.023-.389.323.37c.446.511.53.582.68.582.169 0 .333-.178.333-.361 0-.108-.075-.225-.328-.511-.178-.202-.328-.385-.328-.403 0-.02.037-.043.084-.057.131-.042.38-.304.483-.506.108-.206.117-.581.023-.806-.098-.24-.389-.488-.651-.567-.136-.042-.422-.07-.675-.07-.403 0-.45.009-.553.117Zm1.12.684c.272.216.07.558-.328.558h-.207v-.657h.207c.136 0 .244.033.328.099ZM7.876 2.184A1.619 1.619 0 0 0 6.84 4.472c.67 1.364 2.657 1.139 3.032-.342.211-.844-.323-1.725-1.185-1.95-.329-.085-.479-.085-.811.004Zm.68.68c.257.07.562.385.632.647.164.614-.356 1.228-.989 1.167a.98.98 0 0 1-.736-.506c-.21-.394-.07-.947.3-1.172.295-.183.492-.216.792-.136ZM11.08 2.166c-.187.089-.206.225-.206 1.378 0 1.232.005 1.218-.323 1.045-.169-.084-.216-.094-.328-.042a.402.402 0 0 0-.197.197c-.075.178 0 .337.234.492.418.281.961.15 1.21-.29.103-.184.108-.23.108-1.398V2.34l-.118-.113c-.122-.126-.22-.14-.38-.06ZM15.3 2.175c-.484.122-.873.445-1.107.914-.15.305-.155 1.003-.005 1.327.14.309.478.651.797.81.235.118.328.136.67.141.343 0 .436-.019.666-.131.488-.24.656-.61.384-.825-.173-.136-.253-.127-.501.07-.638.497-1.505-.01-1.43-.83.066-.642.746-.998 1.36-.707.271.126.323.126.478.004.145-.112.169-.365.042-.492-.258-.258-.914-.393-1.355-.281ZM17.19 2.203a.29.29 0 0 0-.128.263c0 .243.132.346.446.346h.258v2.386l.122.094c.154.122.304.127.445.01.112-.09.112-.094.126-1.29l.014-1.2h.254c.215 0 .262-.018.346-.121.122-.155.127-.305.01-.446-.09-.108-.113-.112-.928-.126-.797-.014-.844-.01-.966.084ZM12.268 2.212a.55.55 0 0 0-.127.193c-.06.178-.065 2.56 0 2.733.09.23.16.248.872.253.628 0 .661-.005.76-.108.145-.155.135-.375-.02-.497-.107-.084-.191-.098-.538-.098h-.418v-.563h.352c.403 0 .558-.056.633-.23.056-.14.005-.342-.103-.412-.033-.019-.24-.047-.46-.061l-.398-.024-.014-.271-.014-.268h.417c.351 0 .436-.014.544-.098a.35.35 0 0 0 .028-.511c-.085-.084-.155-.094-.764-.094-.464 0-.694.019-.75.056ZM.478 5.452l-.103.112.01 8.456.013 8.457.15.318c.179.37.535.764.849.938.501.272.408.267 4.945.267h4.163l.112-.117c.15-.145.15-.324 0-.469l-.112-.117H3.938l.14-.22c.277-.432.338-.68.366-1.44.023-.68.023-.703.154-.843l.127-.146H22.65l.14.16.141.154-.018.713c-.015.675-.02.717-.141.928-.174.29-.455.52-.745.614-.216.07-.718.08-5.185.08h-4.94l-.113.117c-.15.145-.15.323 0 .469l.113.117h4.959c5.414 0 5.236.01 5.742-.267.314-.174.67-.567.849-.938.145-.31.15-.337.164-1.064.018-.876-.02-1.064-.286-1.369-.357-.407-.394-.417-1.824-.43l-1.256-.015v-.539l.295.019c.53.033.77-.174 1.252-1.083.16-.295.192-.408.192-.614 0-.417-.197-.712-.652-.966l-.178-.103v-1.153l.178-.103c.46-.258.647-.54.647-.966 0-.22-.032-.323-.192-.623-.478-.895-.717-1.106-1.247-1.073l-.295.018v-.694c0-.632-.01-.703-.094-.787-.126-.127-.38-.122-.497.005-.08.089-.089.187-.103.867-.01.422-.023.769-.028.769-.01 0-.14-.075-.29-.165a2.169 2.169 0 0 0-.38-.192c-.099-.028-.108-.056-.108-.318 0-.385-.07-.605-.248-.811-.249-.286-.436-.342-1.14-.342-.346 0-.684.023-.773.056-.436.15-.651.482-.651 1.012v.338l-.291.145c-.164.08-.385.211-.497.286l-.202.14-.323-.168c-.24-.127-.375-.169-.544-.169-.272 0-.558.122-.726.31-.178.192-.647 1.04-.68 1.228-.08.417.131.82.558 1.068l.29.174v1.144l-.29.173c-.427.248-.638.651-.558 1.069.033.187.502 1.036.68 1.228.168.187.454.31.726.31.169 0 .305-.043.544-.17l.323-.168.202.14c.112.075.333.207.497.286.258.131.29.164.29.286v.14l-5.657.01-5.663.014-.192.103c-.21.113-.51.422-.59.615-.029.07-.066.454-.085.857-.023.67-.038.75-.16.994-.482.994-1.8 1.04-2.362.09l-.126-.221-.024-8.428-.023-8.433-.113-.09c-.15-.121-.342-.112-.464.02Zm17.494 6.417c.056.08.075.225.075.553 0 .408.01.46.108.548a.67.67 0 0 0 .22.131c.22.066.727.352.956.54.122.103.267.187.319.187.052 0 .277-.098.502-.22.539-.286.567-.277.886.267.351.595.337.656-.17.96-.215.127-.412.273-.44.32-.028.056-.028.215.01.487.037.305.037.511 0 .82-.066.511-.061.526.445.826.492.295.501.356.155.946-.32.544-.347.553-.886.267-.225-.121-.45-.22-.502-.22-.052 0-.197.085-.319.192a4.262 4.262 0 0 1-.675.404c-.618.3-.61.29-.61.703v.342H16.642v-.296c0-.417-.057-.492-.493-.675a4.13 4.13 0 0 1-.721-.412c-.193-.14-.39-.258-.441-.258-.052 0-.258.099-.46.216-.52.305-.562.29-.895-.263-.15-.243-.272-.487-.272-.543 0-.122.132-.24.525-.464.361-.207.422-.32.361-.638a4.085 4.085 0 0 1-.037-.534c0-.183.019-.422.037-.535.061-.319 0-.431-.36-.637-.394-.225-.526-.342-.526-.464 0-.056.122-.3.272-.544.333-.553.366-.563.89-.262.202.117.413.215.465.215.051 0 .248-.117.44-.258.193-.14.516-.328.722-.412.254-.108.394-.197.432-.272.033-.066.06-.29.06-.53 0-.586.005-.59.708-.59.516 0 .558.004.624.103Zm1.575 7.701v.352h-.797v-.155c0-.131.023-.16.202-.234.112-.042.276-.132.365-.197a.953.953 0 0 1 .197-.117c.019 0 .033.16.033.351Z" }),
9066
+ React$5.createElement("path", { d: "M16.683 14.358c-.478.201-.811.515-1.022.965-.103.23-.122.324-.122.732 0 .436.01.492.15.778.183.375.52.703.895.876.235.113.324.127.76.127.45 0 .515-.014.773-.136a1.867 1.867 0 0 0 1.013-1.378c.13-.745-.305-1.566-1.013-1.908-.234-.112-.351-.136-.726-.15-.385-.014-.483 0-.708.094Zm1.106.684c.413.188.647.558.647 1.013 0 .633-.469 1.097-1.106 1.101-.46 0-.807-.215-.999-.633a1.129 1.129 0 0 1 .567-1.504c.207-.09.67-.08.891.023ZM2.742 6.21a.386.386 0 0 0-.117.235c0 .066.052.174.117.235l.113.117H17.77l.113-.117c.15-.146.15-.324 0-.47l-.113-.116H2.855l-.113.117ZM2.892 7.753c-.422.155-.764.506-.876.919-.028.094-.047.928-.047 1.955 0 1.678.004 1.809.093 2.043.113.296.39.59.694.746l.22.107h6.516l.267-.13c.15-.076.343-.216.432-.324.304-.352.309-.403.309-2.494 0-1.875 0-1.88-.113-2.114-.14-.305-.487-.614-.792-.703-.333-.099-6.426-.103-6.703-.005Zm6.553.703c.09.038.207.14.258.225.09.15.094.235.094 1.932 0 1.706-.005 1.78-.094 1.93-.192.31-.14.305-3.539.291-3.394-.014-3.197.005-3.398-.332-.09-.141-.094-.249-.094-1.885 0-1.94.005-1.964.333-2.142.15-.08.342-.084 3.22-.084 2.555 0 3.084.009 3.22.065Z" }),
9067
+ React$5.createElement("path", { d: "M6.623 9.047a.351.351 0 0 0-.15.136c-.032.06-.051.604-.051 1.542 0 1.36.005 1.458.089 1.56.089.113.094.113 1.275.127 1.266.014 1.397-.004 1.49-.206.07-.16.07-2.826 0-2.986a.368.368 0 0 0-.168-.169c-.136-.06-2.33-.065-2.485-.004Zm2.002 1.664v1.008h-1.5V9.703h1.5v1.008ZM3.281 10.406c-.089.09-.094.155-.094.957v.867l.122.093c.118.094.183.099 1.308.099s1.19-.005 1.308-.099l.122-.093v-.867c0-.802-.005-.868-.094-.957-.089-.089-.155-.094-1.336-.094s-1.247.005-1.336.094Zm2.063.961v.352H3.89v-.703H5.344v.351ZM11.587 9.08c-.032.014-.089.08-.126.154-.09.17-.019.39.145.464.085.038 1.064.052 3.469.052h3.351l.113-.117a.386.386 0 0 0 .117-.235.386.386 0 0 0-.117-.234l-.113-.117-3.389.005c-1.865 0-3.417.014-3.45.028ZM11.526 10.49c-.155.127-.14.366.024.512l.126.107H15.895l.112-.117c.15-.145.155-.347.01-.483-.108-.103-.117-.103-2.245-.103-2.007 0-2.143.005-2.246.085ZM2.063 14.54c-.183.198-.075.512.197.577.061.014 2.25.019 4.87.014 4.613-.014 4.772-.018 4.866-.103.127-.117.131-.37.005-.497-.094-.094-.155-.094-4.969-.094h-4.87l-.099.104ZM2.062 15.89c-.202.202-.066.53.244.587.084.014 2.419.023 5.184.014l5.034-.014.09-.113c.117-.14.112-.356-.005-.473-.094-.094-.155-.094-5.274-.094-5.118 0-5.18 0-5.273.094ZM2.175 17.175a.332.332 0 0 0-.112.544c.094.093.155.093 4.987.093h4.899l.07-.103c.108-.15.094-.38-.023-.487-.094-.085-.253-.09-4.89-.099-3.946-.009-4.809 0-4.93.052ZM2.17 18.563c-.215.089-.267.389-.093.553.108.103.108.103 2.503.103 2.212 0 2.4-.005 2.489-.085a.435.435 0 0 0 .131-.206c.024-.103 0-.155-.112-.272l-.141-.14-2.339.004c-1.284 0-2.381.02-2.438.043Z" })),
9068
+ React$5.createElement("defs", null,
9069
+ React$5.createElement("clipPath", { id: "project-setting_svg__a" },
9070
+ React$5.createElement("path", { fill: "#fff", d: "M0 0h24v24H0z" })))));
9071
+ };
9072
+
9059
9073
  var SvgQuoteRight = function (_a) {
9060
9074
  var title = _a.title, titleId = _a.titleId, props = __rest$1(_a, ["title", "titleId"]);
9061
9075
  return (React$5.createElement("svg", __assign({ width: props.fontSize || 24, height: props.fontSize || 24, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", strokeWidth: props.strokeWidth || 1.5, "aria-labelledby": titleId }, props),
@@ -9224,6 +9238,13 @@ var SvgSettings = function (_a) {
9224
9238
  React$5.createElement("path", { d: "M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z" })));
9225
9239
  };
9226
9240
 
9241
+ var SvgShapeGroup = function (_a) {
9242
+ var title = _a.title, titleId = _a.titleId, props = __rest$1(_a, ["title", "titleId"]);
9243
+ return (React$5.createElement("svg", __assign({ width: props.fontSize || 24, height: props.fontSize || 24, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", strokeWidth: props.strokeWidth || 1.5, "aria-labelledby": titleId }, props),
9244
+ title ? React$5.createElement("title", { id: titleId }, title) : null,
9245
+ React$5.createElement("path", { d: "M24 15h-4.91l4.336 7.5H6.973l3.129-5.426a6.965 6.965 0 0 1-1.618.68A6.784 6.784 0 0 1 6.75 18a6.677 6.677 0 0 1-4.77-1.98 6.952 6.952 0 0 1-1.44-2.145A6.681 6.681 0 0 1 0 11.25a6.677 6.677 0 0 1 1.98-4.77 6.952 6.952 0 0 1 2.145-1.44A6.681 6.681 0 0 1 6.75 4.5c.664 0 1.313.094 1.945.281a6.579 6.579 0 0 1 1.805.856V1.5H24V15ZM6.75 16.5c.727 0 1.406-.137 2.04-.41a5.208 5.208 0 0 0 1.663-1.137 5.488 5.488 0 0 0 1.125-1.664A5.17 5.17 0 0 0 12 11.25c0-.719-.137-1.395-.41-2.027a5.448 5.448 0 0 0-1.125-1.676A5.054 5.054 0 0 0 8.8 6.422 5.555 5.555 0 0 0 6.75 6c-.727 0-1.406.137-2.04.41A5.305 5.305 0 0 0 1.923 9.2a5.258 5.258 0 0 0-.422 2.05c0 .727.137 1.406.41 2.04a5.305 5.305 0 0 0 2.79 2.788 5.257 5.257 0 0 0 2.05.422ZM20.824 21a1846.92 1846.92 0 0 1-2.812-4.875 1846.92 1846.92 0 0 0-2.813-4.875 1846.92 1846.92 0 0 0-2.812 4.875c-.93 1.617-1.867 3.242-2.813 4.875h11.25ZM22.5 3H12v4.066A6.7 6.7 0 0 1 13.102 9c.257.703.39 1.438.398 2.203l1.7-2.953 3.023 5.25H22.5V3Z", fill: props.color || "currentColor" })));
9246
+ };
9247
+
9227
9248
  var SvgShare2 = function (_a) {
9228
9249
  var title = _a.title, titleId = _a.titleId, props = __rest$1(_a, ["title", "titleId"]);
9229
9250
  return (React$5.createElement("svg", __assign({ xmlns: "http://www.w3.org/2000/svg", width: props.fontSize || 24, height: props.fontSize || 24, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: props.strokeWidth || 1.5, strokeLinecap: "round", strokeLinejoin: "round", className: "share-2_svg__feather share-2_svg__feather-share-2", "aria-labelledby": titleId }, props),
@@ -10451,6 +10472,7 @@ var Icon = /*#__PURE__*/Object.freeze({
10451
10472
  Power: SvgPower,
10452
10473
  Printer: SvgPrinter,
10453
10474
  Process: SvgProcess,
10475
+ ProjectSetting: SvgProjectSetting,
10454
10476
  QuoteRight: SvgQuoteRight,
10455
10477
  Radio: SvgRadio,
10456
10478
  RefreshCcw: SvgRefreshCcw,
@@ -10470,6 +10492,7 @@ var Icon = /*#__PURE__*/Object.freeze({
10470
10492
  SendHorFill: SvgSendHorFill,
10471
10493
  Server: SvgServer,
10472
10494
  Settings: SvgSettings,
10495
+ ShapeGroup: SvgShapeGroup,
10473
10496
  Share: SvgShare,
10474
10497
  Share2: SvgShare2,
10475
10498
  Share3: SvgShare3,
@@ -19784,17 +19807,20 @@ const isNullOrUndefined$1 = (d) => {
19784
19807
  const generateUUID = () => {
19785
19808
  // Public Domain/MIT
19786
19809
  let d = new Date().getTime(); //Timestamp
19787
- let d2 = (typeof performance !== 'undefined' && performance.now && performance.now() * 1000) || 0; //Time in microseconds since page-load or 0 if unsupported
19810
+ let d2 = (typeof performance !== 'undefined' &&
19811
+ performance.now &&
19812
+ performance.now() * 1000) ||
19813
+ 0; //Time in microseconds since page-load or 0 if unsupported
19788
19814
  return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
19789
19815
  let r = Math.random() * 16; //random number between 0 and 16
19790
19816
  if (d > 0) {
19791
19817
  //Use timestamp until depleted
19792
- r = (d + r) % 16 | 0;
19818
+ r = ((d + r) % 16) | 0;
19793
19819
  d = Math.floor(d / 16);
19794
19820
  }
19795
19821
  else {
19796
19822
  //Use microseconds since page-load if supported
19797
- r = (d2 + r) % 16 | 0;
19823
+ r = ((d2 + r) % 16) | 0;
19798
19824
  d2 = Math.floor(d2 / 16);
19799
19825
  }
19800
19826
  return (c === 'x' ? r : 0x3).toString(16);
@@ -19816,12 +19842,16 @@ const formartNumberic = (str, decimalSeparator, thousandSeparator, fraction = 2,
19816
19842
  // eslint-disable-next-line
19817
19843
  if (str || str == '0') {
19818
19844
  str = str.toString();
19819
- const value = decimalSeparator !== '.' ? str.toString().replaceAll('.', decimalSeparator ?? '') : str;
19845
+ const value = decimalSeparator !== '.'
19846
+ ? str.toString().replaceAll('.', decimalSeparator ?? '')
19847
+ : str;
19820
19848
  const arr = value.toString().split(decimalSeparator ?? '', 2);
19821
19849
  let flag = value.toString().includes(decimalSeparator ?? '');
19822
19850
  if (arr[0].length < 3) {
19823
19851
  const intergerArr = haveNegative ? arr[0] : arr[0].replace('-', '');
19824
- return flag ? `${intergerArr}${decimalSeparator}${arr[1]?.substring(0, fraction) ?? ''}` : intergerArr;
19852
+ return flag
19853
+ ? `${intergerArr}${decimalSeparator}${arr[1]?.substring(0, fraction) ?? ''}`
19854
+ : intergerArr;
19825
19855
  }
19826
19856
  else {
19827
19857
  let flagNegative = false;
@@ -19845,7 +19875,9 @@ const formartNumberic = (str, decimalSeparator, thousandSeparator, fraction = 2,
19845
19875
  if (flagNegative && haveNegative) {
19846
19876
  arr[0] = '-'.concat(arr[0]);
19847
19877
  }
19848
- return flag ? `${arr[0]}${decimalSeparator}${arr[1]?.substring(0, fraction) ?? ''}` : arr[0];
19878
+ return flag
19879
+ ? `${arr[0]}${decimalSeparator}${arr[1]?.substring(0, fraction) ?? ''}`
19880
+ : arr[0];
19849
19881
  }
19850
19882
  }
19851
19883
  else {
@@ -19868,7 +19900,7 @@ const formatDateTime = (data, format = 'dd/MM/yyyy') => {
19868
19900
  MM: String(date.getMonth() + 1).padStart(2, '0'),
19869
19901
  yyyy: date.getFullYear(),
19870
19902
  HH: String(date.getHours()).padStart(2, '0'),
19871
- mm: String(date.getMinutes()).padStart(2, '0')
19903
+ mm: String(date.getMinutes()).padStart(2, '0'),
19872
19904
  };
19873
19905
  return format.replace(/dd|DD|MM|yyyy|HH|mm/g, (match) => map[match]);
19874
19906
  };
@@ -19889,7 +19921,7 @@ const FindNodeByPath = (tree, path) => {
19889
19921
  parent: current,
19890
19922
  lastIndex: levels.at(-1),
19891
19923
  firstIndex: levels.length === 1 ? levels[0] : -1,
19892
- node
19924
+ node,
19893
19925
  };
19894
19926
  };
19895
19927
  /**
@@ -19917,7 +19949,7 @@ const calculateTableStructure = (columns, settingColumns, groupColumns) => {
19917
19949
  const objHeaderWidthFixLeft = {};
19918
19950
  let maxDepth = 0;
19919
19951
  // Tính depth tối đa
19920
- const calculateDepth = (cols, depth = 1) => Math.max(...cols.map((col) => (col.columns?.length ? calculateDepth(col.columns, depth + 1) : depth)));
19952
+ const calculateDepth = (cols, depth = 1) => Math.max(...cols.map((col) => col.columns?.length ? calculateDepth(col.columns, depth + 1) : depth));
19921
19953
  maxDepth = calculateDepth(columns);
19922
19954
  let leftTotal = 0;
19923
19955
  let rightTotal = 0;
@@ -19936,45 +19968,47 @@ const calculateTableStructure = (columns, settingColumns, groupColumns) => {
19936
19968
  };
19937
19969
  const applySetting = (cols) => {
19938
19970
  return cols.map((cell) => {
19939
- const setting = settingColumns?.find((s) => s.field === cell.field);
19971
+ const newCell = { ...cell };
19972
+ const setting = settingColumns?.find((s) => s.field === newCell.field);
19940
19973
  if (setting) {
19941
- cell.sortOrder = setting.sortOrder;
19942
- if (!cell.visibleLocked) {
19943
- cell.visible = setting.visible ?? true;
19974
+ newCell.sortOrder = setting.sortOrder;
19975
+ if (!newCell.visibleLocked) {
19976
+ newCell.visible = setting.visible ?? true;
19944
19977
  }
19945
- cell.fixedType = setting.fixedType;
19978
+ newCell.fixedType = setting.fixedType;
19946
19979
  if (setting.width !== undefined && setting.width !== null) {
19947
- cell.width = setting.width;
19980
+ newCell.width = setting.width;
19948
19981
  }
19949
19982
  if (setting.fraction !== undefined && setting.fraction !== null) {
19950
- if (cell.numericSettings) {
19951
- cell.numericSettings.fraction = setting.fraction;
19983
+ if (newCell.numericSettings) {
19984
+ newCell.numericSettings.fraction = setting.fraction;
19952
19985
  }
19953
19986
  else {
19954
- cell.numericSettings = { fraction: setting.fraction };
19987
+ newCell.numericSettings = { fraction: setting.fraction };
19955
19988
  }
19956
19989
  }
19957
- cell.headerDisplay = setting.headerText || (cell.headerDisplay ?? cell.headerText);
19990
+ newCell.headerDisplay =
19991
+ setting.headerText || (newCell.headerDisplay ?? newCell.headerText);
19958
19992
  }
19959
19993
  else {
19960
- if (cell.columns?.length) {
19961
- cell.columns = applySetting(cell.columns);
19962
- cell.sortOrder = cell.columns[0].sortOrder;
19963
- if (cell.columns.some((x) => x.visible !== false)) {
19964
- cell.visible = true;
19994
+ if (newCell.columns?.length) {
19995
+ newCell.columns = applySetting(newCell.columns);
19996
+ newCell.sortOrder = newCell.columns[0].sortOrder;
19997
+ if (newCell.columns.some((x) => x.visible !== false)) {
19998
+ newCell.visible = true;
19965
19999
  }
19966
20000
  else {
19967
- cell.visible = false;
20001
+ newCell.visible = false;
19968
20002
  }
19969
20003
  }
19970
20004
  else {
19971
- if (!cell.visibleLocked) {
19972
- cell.visible = false;
20005
+ if (!newCell.visibleLocked) {
20006
+ newCell.visible = false;
19973
20007
  }
19974
20008
  }
19975
20009
  }
19976
- cell.isGroup = groupColumns?.includes(cell.field);
19977
- return cell;
20010
+ newCell.isGroup = groupColumns?.includes(newCell.field);
20011
+ return newCell;
19978
20012
  });
19979
20013
  };
19980
20014
  const traverse = (cols, level = 0) => {
@@ -19990,11 +20024,13 @@ const calculateTableStructure = (columns, settingColumns, groupColumns) => {
19990
20024
  ...col,
19991
20025
  columns: col.columns ?? [],
19992
20026
  colspan,
19993
- rowspan: hasChildren ? 1 : maxDepth - level
20027
+ rowspan: hasChildren ? 1 : maxDepth - level,
19994
20028
  };
19995
20029
  levels[level].push(cell);
19996
20030
  const headerKey = `${level}-${indexCol}`;
19997
- if (cell.fixedType === 'left' && cell.visible !== false && cell.isGroup !== true) {
20031
+ if (cell.fixedType === 'left' &&
20032
+ cell.visible !== false &&
20033
+ cell.isGroup !== true) {
19998
20034
  objHeaderWidthFixLeft[headerKey] = leftTotal;
19999
20035
  }
20000
20036
  if (!hasChildren) {
@@ -20002,16 +20038,22 @@ const calculateTableStructure = (columns, settingColumns, groupColumns) => {
20002
20038
  const width = cell.width ?? 40;
20003
20039
  cell.index = index;
20004
20040
  flat.push(cell);
20005
- if (cell.fixedType === 'left' && cell.visible !== false && cell.isGroup !== true) {
20041
+ if (cell.fixedType === 'left' &&
20042
+ cell.visible !== false &&
20043
+ cell.isGroup !== true) {
20006
20044
  objWidthFixLeft[index] = leftTotal;
20007
20045
  leftTotal += width;
20008
20046
  }
20009
- if (cell.fixedType === 'right' && cell.visible !== false && cell.isGroup !== true) {
20047
+ if (cell.fixedType === 'right' &&
20048
+ cell.visible !== false &&
20049
+ cell.isGroup !== true) {
20010
20050
  rightTotal -= width;
20011
20051
  objWidthFixRight[index] = rightTotal;
20012
20052
  }
20013
20053
  }
20014
- if (cell.fixedType === 'right' && cell.visible !== false && cell.isGroup !== true) {
20054
+ if (cell.fixedType === 'right' &&
20055
+ cell.visible !== false &&
20056
+ cell.isGroup !== true) {
20015
20057
  objHeaderWidthFixRight[headerKey] = rightTotal;
20016
20058
  }
20017
20059
  return colspanSum + colspan;
@@ -20024,13 +20066,20 @@ const calculateTableStructure = (columns, settingColumns, groupColumns) => {
20024
20066
  traverse(columns);
20025
20067
  // Danh sách các cột được hiển thị
20026
20068
  // const flatVisble = flat.filter((e) => e.visible !== false)
20027
- const flatVisbleContent = flat.filter((x) => x.visible !== false && x.field !== 'command' && x.field !== '#' && x.field !== 'checkbox');
20069
+ const flatVisbleContent = flat.filter((x) => x.visible !== false &&
20070
+ x.field !== 'command' &&
20071
+ x.field !== '#' &&
20072
+ x.field !== 'checkbox');
20028
20073
  // Tính toán vị trí đầu tiên và cuối cùng của các cột cố định
20029
20074
  const lastObjWidthFixLeft = Math.max(...Object.keys(objWidthFixLeft).map(Number), 0);
20030
20075
  const fisrtObjWidthFixRight = Math.min(...Object.keys(objWidthFixRight).map(Number), flat.length);
20031
20076
  // Tính toán vị trí đầu tiên và cuối cùng của các cột có thể sửa
20032
20077
  const indexFirstEdit = flat.findIndex((item) => item.editEnable && item.visible !== false && !item.disabledCondition);
20033
- const indexLastEdit = flat.map((item, idx) => (item.editEnable && item.visible !== false && !item.disabledCondition ? idx : -1)).reduce((acc, val) => (val > acc ? val : acc), -1);
20078
+ const indexLastEdit = flat
20079
+ .map((item, idx) => item.editEnable && item.visible !== false && !item.disabledCondition
20080
+ ? idx
20081
+ : -1)
20082
+ .reduce((acc, val) => (val > acc ? val : acc), -1);
20034
20083
  return {
20035
20084
  levels,
20036
20085
  flat,
@@ -20043,7 +20092,7 @@ const calculateTableStructure = (columns, settingColumns, groupColumns) => {
20043
20092
  objHeaderWidthFixRight,
20044
20093
  objHeaderWidthFixLeft,
20045
20094
  indexFirstEdit,
20046
- indexLastEdit
20095
+ indexLastEdit,
20047
20096
  };
20048
20097
  };
20049
20098
  /**
@@ -20053,7 +20102,10 @@ const CheckRowMatch = (row, filters, keyword, searchKeys) => {
20053
20102
  const isFilterMatch = filters.every((filter) => {
20054
20103
  const { key, value, ope } = filter;
20055
20104
  const rowValue = row[key];
20056
- if (rowValue === undefined || rowValue === null || value === undefined || value === null) {
20105
+ if (rowValue === undefined ||
20106
+ rowValue === null ||
20107
+ value === undefined ||
20108
+ value === null) {
20057
20109
  return false;
20058
20110
  }
20059
20111
  const valStr = String(rowValue).toLowerCase();
@@ -20086,7 +20138,10 @@ const CheckRowMatch = (row, filters, keyword, searchKeys) => {
20086
20138
  const isSearchMatch = !keyword ||
20087
20139
  searchKeys.some((key) => {
20088
20140
  const val = row[key];
20089
- return val?.toString().toLowerCase().includes(keyword.trim().toLowerCase());
20141
+ return val
20142
+ ?.toString()
20143
+ .toLowerCase()
20144
+ .includes(keyword.trim().toLowerCase());
20090
20145
  });
20091
20146
  return isFilterMatch && isSearchMatch;
20092
20147
  };
@@ -25640,6 +25695,72 @@ function startOfYear(date, options) {
25640
25695
  return date_;
25641
25696
  }
25642
25697
 
25698
+ /**
25699
+ * The {@link eachYearOfInterval} function options.
25700
+ */
25701
+
25702
+ /**
25703
+ * The {@link eachYearOfInterval} function result type. It resolves the proper data type.
25704
+ * It uses the first argument date object type, starting from the date argument,
25705
+ * then the start interval date, and finally the end interval date. If
25706
+ * a context function is passed, it uses the context function return type.
25707
+ */
25708
+
25709
+ /**
25710
+ * @name eachYearOfInterval
25711
+ * @category Interval Helpers
25712
+ * @summary Return the array of yearly timestamps within the specified time interval.
25713
+ *
25714
+ * @description
25715
+ * Return the array of yearly timestamps within the specified time interval.
25716
+ *
25717
+ * @typeParam IntervalType - Interval type.
25718
+ * @typeParam Options - Options type.
25719
+ *
25720
+ * @param interval - The interval.
25721
+ * @param options - An object with options.
25722
+ *
25723
+ * @returns The array with starts of yearly timestamps from the month of the interval start to the month of the interval end
25724
+ *
25725
+ * @example
25726
+ * // Each year between 6 February 2014 and 10 August 2017:
25727
+ * const result = eachYearOfInterval({
25728
+ * start: new Date(2014, 1, 6),
25729
+ * end: new Date(2017, 7, 10)
25730
+ * })
25731
+ * //=> [
25732
+ * // Wed Jan 01 2014 00:00:00,
25733
+ * // Thu Jan 01 2015 00:00:00,
25734
+ * // Fri Jan 01 2016 00:00:00,
25735
+ * // Sun Jan 01 2017 00:00:00
25736
+ * // ]
25737
+ */
25738
+ function eachYearOfInterval(interval, options) {
25739
+ const { start, end } = normalizeInterval(options?.in, interval);
25740
+
25741
+ let reversed = +start > +end;
25742
+ const endTime = reversed ? +start : +end;
25743
+ const date = reversed ? end : start;
25744
+ date.setHours(0, 0, 0, 0);
25745
+ date.setMonth(0, 1);
25746
+
25747
+ let step = options?.step ?? 1;
25748
+ if (!step) return [];
25749
+ if (step < 0) {
25750
+ step = -step;
25751
+ reversed = !reversed;
25752
+ }
25753
+
25754
+ const dates = [];
25755
+
25756
+ while (+date <= endTime) {
25757
+ dates.push(constructFrom(start, date));
25758
+ date.setFullYear(date.getFullYear() + step);
25759
+ }
25760
+
25761
+ return reversed ? dates.reverse() : dates;
25762
+ }
25763
+
25643
25764
  /**
25644
25765
  * The {@link endOfWeek} function options.
25645
25766
  */
@@ -26348,7 +26469,7 @@ const match = {
26348
26469
  * @author Sasha Koss [@kossnocorp](https://github.com/kossnocorp)
26349
26470
  * @author Lesha Koss [@leshakoss](https://github.com/leshakoss)
26350
26471
  */
26351
- const enUS = {
26472
+ const enUS$1 = {
26352
26473
  code: "en-US",
26353
26474
  formatDistance: formatDistance,
26354
26475
  formatLong: formatLong,
@@ -27865,7 +27986,7 @@ const unescapedLatinCharacterRegExp$1 = /[a-zA-Z]/;
27865
27986
  */
27866
27987
  function format(date, formatStr, options) {
27867
27988
  const defaultOptions = getDefaultOptions$1();
27868
- const locale = options?.locale ?? defaultOptions.locale ?? enUS;
27989
+ const locale = options?.locale ?? defaultOptions.locale ?? enUS$1;
27869
27990
 
27870
27991
  const firstWeekContainsDate =
27871
27992
  options?.firstWeekContainsDate ??
@@ -30558,7 +30679,7 @@ const unescapedLatinCharacterRegExp = /[a-zA-Z]/;
30558
30679
  function parse(dateStr, formatStr, referenceDate, options) {
30559
30680
  const invalidDate = () => constructFrom(options?.in || referenceDate, NaN);
30560
30681
  const defaultOptions = getDefaultOptions();
30561
- const locale = options?.locale ?? defaultOptions.locale ?? enUS;
30682
+ const locale = options?.locale ?? defaultOptions.locale ?? enUS$1;
30562
30683
 
30563
30684
  const firstWeekContainsDate =
30564
30685
  options?.firstWeekContainsDate ??
@@ -31364,6 +31485,69 @@ function endOfBroadcastWeek(date, dateLib) {
31364
31485
  return endDate;
31365
31486
  }
31366
31487
 
31488
+ /** English (United States) locale extended with DayPicker-specific translations. */
31489
+ const enUS = {
31490
+ ...enUS$1,
31491
+ labels: {
31492
+ labelDayButton: (date, modifiers, options, dateLib) => {
31493
+ let formatDate;
31494
+ if (dateLib && typeof dateLib.format === "function") {
31495
+ formatDate = dateLib.format.bind(dateLib);
31496
+ }
31497
+ else {
31498
+ formatDate = (d, pattern) => format(d, pattern, { locale: enUS$1, ...options });
31499
+ }
31500
+ let label = formatDate(date, "PPPP");
31501
+ if (modifiers.today)
31502
+ label = `Today, ${label}`;
31503
+ if (modifiers.selected)
31504
+ label = `${label}, selected`;
31505
+ return label;
31506
+ },
31507
+ labelMonthDropdown: "Choose the Month",
31508
+ labelNext: "Go to the Next Month",
31509
+ labelPrevious: "Go to the Previous Month",
31510
+ labelWeekNumber: (weekNumber) => `Week ${weekNumber}`,
31511
+ labelYearDropdown: "Choose the Year",
31512
+ labelGrid: (date, options, dateLib) => {
31513
+ let formatDate;
31514
+ if (dateLib && typeof dateLib.format === "function") {
31515
+ formatDate = dateLib.format.bind(dateLib);
31516
+ }
31517
+ else {
31518
+ formatDate = (d, pattern) => format(d, pattern, { locale: enUS$1, ...options });
31519
+ }
31520
+ return formatDate(date, "LLLL yyyy");
31521
+ },
31522
+ labelGridcell: (date, modifiers, options, dateLib) => {
31523
+ let formatDate;
31524
+ if (dateLib && typeof dateLib.format === "function") {
31525
+ formatDate = dateLib.format.bind(dateLib);
31526
+ }
31527
+ else {
31528
+ formatDate = (d, pattern) => format(d, pattern, { locale: enUS$1, ...options });
31529
+ }
31530
+ let label = formatDate(date, "PPPP");
31531
+ if (modifiers?.today) {
31532
+ label = `Today, ${label}`;
31533
+ }
31534
+ return label;
31535
+ },
31536
+ labelNav: "Navigation bar",
31537
+ labelWeekNumberHeader: "Week Number",
31538
+ labelWeekday: (date, options, dateLib) => {
31539
+ let formatDate;
31540
+ if (dateLib && typeof dateLib.format === "function") {
31541
+ formatDate = dateLib.format.bind(dateLib);
31542
+ }
31543
+ else {
31544
+ formatDate = (d, pattern) => format(d, pattern, { locale: enUS$1, ...options });
31545
+ }
31546
+ return formatDate(date, "cccc");
31547
+ },
31548
+ },
31549
+ };
31550
+
31367
31551
  /**
31368
31552
  * A wrapper class around [date-fns](http://date-fns.org) that provides utility
31369
31553
  * methods for date manipulation and formatting.
@@ -31502,6 +31686,31 @@ class DateLib {
31502
31686
  ? this.overrides.eachMonthOfInterval(interval)
31503
31687
  : eachMonthOfInterval(interval);
31504
31688
  };
31689
+ /**
31690
+ * Returns the years between the given dates.
31691
+ *
31692
+ * @since 9.11.1
31693
+ * @param interval The interval to get the years for.
31694
+ * @returns The array of years in the interval.
31695
+ */
31696
+ this.eachYearOfInterval = (interval) => {
31697
+ const years = this.overrides?.eachYearOfInterval
31698
+ ? this.overrides.eachYearOfInterval(interval)
31699
+ : eachYearOfInterval(interval);
31700
+ // Remove duplicates that may happen across DST transitions (e.g., "America/Sao_Paulo")
31701
+ // See https://github.com/date-fns/tz/issues/72
31702
+ const uniqueYears = new Set(years.map((d) => this.getYear(d)));
31703
+ if (uniqueYears.size === years.length) {
31704
+ // No duplicates, return as is
31705
+ return years;
31706
+ }
31707
+ // Rebuild the array to ensure one date per year
31708
+ const yearsArray = [];
31709
+ uniqueYears.forEach((y) => {
31710
+ yearsArray.push(new Date(y, 0, 1));
31711
+ });
31712
+ return yearsArray;
31713
+ };
31505
31714
  /**
31506
31715
  * Returns the end of the broadcast week for the given date.
31507
31716
  *
@@ -31840,7 +32049,63 @@ class DateLib {
31840
32049
  formatNumber(value) {
31841
32050
  return this.replaceDigits(value.toString());
31842
32051
  }
31843
- }
32052
+ /**
32053
+ * Returns the preferred ordering for month and year labels for the current
32054
+ * locale.
32055
+ */
32056
+ getMonthYearOrder() {
32057
+ const code = this.options.locale?.code;
32058
+ if (!code) {
32059
+ return "month-first";
32060
+ }
32061
+ return DateLib.yearFirstLocales.has(code) ? "year-first" : "month-first";
32062
+ }
32063
+ /**
32064
+ * Formats the month/year pair respecting locale conventions.
32065
+ *
32066
+ * @since 9.11.0
32067
+ */
32068
+ formatMonthYear(date) {
32069
+ const { locale, timeZone, numerals } = this.options;
32070
+ const localeCode = locale?.code;
32071
+ if (localeCode && DateLib.yearFirstLocales.has(localeCode)) {
32072
+ try {
32073
+ const intl = new Intl.DateTimeFormat(localeCode, {
32074
+ month: "long",
32075
+ year: "numeric",
32076
+ timeZone,
32077
+ numberingSystem: numerals,
32078
+ });
32079
+ const formatted = intl.format(date);
32080
+ return formatted;
32081
+ }
32082
+ catch {
32083
+ // Fallback to date-fns formatting below.
32084
+ }
32085
+ }
32086
+ const pattern = this.getMonthYearOrder() === "year-first" ? "y LLLL" : "LLLL y";
32087
+ return this.format(date, pattern);
32088
+ }
32089
+ }
32090
+ DateLib.yearFirstLocales = new Set([
32091
+ "eu",
32092
+ "hu",
32093
+ "ja",
32094
+ "ja-Hira",
32095
+ "ja-JP",
32096
+ "ko",
32097
+ "ko-KR",
32098
+ "lt",
32099
+ "lt-LT",
32100
+ "lv",
32101
+ "lv-LV",
32102
+ "mn",
32103
+ "mn-MN",
32104
+ "zh",
32105
+ "zh-CN",
32106
+ "zh-HK",
32107
+ "zh-TW",
32108
+ ]);
31844
32109
  /**
31845
32110
  * The default date library with English locale.
31846
32111
  *
@@ -31861,6 +32126,9 @@ class CalendarDay {
31861
32126
  this.displayMonth = displayMonth;
31862
32127
  this.outside = Boolean(displayMonth && !dateLib.isSameMonth(date, displayMonth));
31863
32128
  this.dateLib = dateLib;
32129
+ this.isoDate = dateLib.format(date, "yyyy-MM-dd");
32130
+ this.displayMonthId = dateLib.format(displayMonth, "yyyy-MM");
32131
+ this.dateMonthId = dateLib.format(date, "yyyy-MM");
31864
32132
  }
31865
32133
  /**
31866
32134
  * Checks if this day is equal to another `CalendarDay`, considering both the
@@ -32036,7 +32304,7 @@ var UI;
32036
32304
  /** The dropdown with the years. */
32037
32305
  UI["YearsDropdown"] = "years_dropdown";
32038
32306
  })(UI || (UI = {}));
32039
- /** Enum representing flags for the {@link UI.Day} element. */
32307
+ /** Enum representing flags for the {@link UI | UI.Day} element. */
32040
32308
  var DayFlag;
32041
32309
  (function (DayFlag) {
32042
32310
  /** The day is disabled. */
@@ -32051,8 +32319,8 @@ var DayFlag;
32051
32319
  DayFlag["today"] = "today";
32052
32320
  })(DayFlag || (DayFlag = {}));
32053
32321
  /**
32054
- * Enum representing selection states that can be applied to the {@link UI.Day}
32055
- * element in selection mode.
32322
+ * Enum representing selection states that can be applied to the
32323
+ * {@link UI | UI.Day} element in selection mode.
32056
32324
  */
32057
32325
  var SelectionState;
32058
32326
  (function (SelectionState) {
@@ -32502,7 +32770,7 @@ function dateMatchModifiers(date, matchers, dateLib = defaultDateLib) {
32502
32770
  return isSameDay(date, matcher);
32503
32771
  }
32504
32772
  if (isDatesArray(matcher, dateLib)) {
32505
- return matcher.includes(date);
32773
+ return matcher.some((matcherDate) => isSameDay(date, matcherDate));
32506
32774
  }
32507
32775
  if (isDateRange(matcher)) {
32508
32776
  return rangeIncludesDate(matcher, date, false, dateLib);
@@ -32553,7 +32821,7 @@ function dateMatchModifiers(date, matchers, dateLib = defaultDateLib) {
32553
32821
  * @returns A function that retrieves the modifiers for a given `CalendarDay`.
32554
32822
  */
32555
32823
  function createGetModifiers(days, props, navStart, navEnd, dateLib) {
32556
- const { disabled, hidden, modifiers, showOutsideDays, broadcastCalendar, today, } = props;
32824
+ const { disabled, hidden, modifiers, showOutsideDays, broadcastCalendar, today = dateLib.today(), } = props;
32557
32825
  const { isSameDay, isSameMonth, startOfMonth, isBefore, endOfMonth, isAfter, } = dateLib;
32558
32826
  const computedNavStart = navStart && startOfMonth(navStart);
32559
32827
  const computedNavEnd = navEnd && endOfMonth(navEnd);
@@ -32577,7 +32845,7 @@ function createGetModifiers(days, props, navStart, navEnd, dateLib) {
32577
32845
  // Broadcast calendar will show outside days as default
32578
32846
  (!broadcastCalendar && !showOutsideDays && isOutside) ||
32579
32847
  (broadcastCalendar && showOutsideDays === false && isOutside);
32580
- const isToday = isSameDay(date, today ?? dateLib.today());
32848
+ const isToday = isSameDay(date, today);
32581
32849
  if (isOutside)
32582
32850
  internalModifiersMap.outside.push(day);
32583
32851
  if (isDisabled)
@@ -32736,7 +33004,7 @@ function getDefaultClassNames() {
32736
33004
  /**
32737
33005
  * Formats the caption of the month.
32738
33006
  *
32739
- * @defaultValue `LLLL y` (e.g., "November 2022").
33007
+ * @defaultValue Locale-specific month/year order (e.g., "November 2022").
32740
33008
  * @param month The date representing the month.
32741
33009
  * @param options Configuration options for the date library.
32742
33010
  * @param dateLib The date library to use for formatting. If not provided, a new
@@ -32746,7 +33014,8 @@ function getDefaultClassNames() {
32746
33014
  * @see https://daypicker.dev/docs/translation#custom-formatters
32747
33015
  */
32748
33016
  function formatCaption(month, options, dateLib) {
32749
- return (dateLib ?? new DateLib(options)).format(month, "LLLL y");
33017
+ const lib = dateLib ?? new DateLib(options);
33018
+ return lib.formatMonthYear(month);
32750
33019
  }
32751
33020
  /**
32752
33021
  * @private
@@ -32886,127 +33155,6 @@ function getFormatters(customFormatters) {
32886
33155
  };
32887
33156
  }
32888
33157
 
32889
- /**
32890
- * Returns the months to show in the dropdown.
32891
- *
32892
- * This function generates a list of months for the current year, formatted
32893
- * using the provided formatter, and determines whether each month should be
32894
- * disabled based on the navigation range.
32895
- *
32896
- * @param displayMonth The currently displayed month.
32897
- * @param navStart The start date for navigation.
32898
- * @param navEnd The end date for navigation.
32899
- * @param formatters The formatters to use for formatting the month labels.
32900
- * @param dateLib The date library to use for date manipulation.
32901
- * @returns An array of dropdown options representing the months, or `undefined`
32902
- * if no months are available.
32903
- */
32904
- function getMonthOptions(displayMonth, navStart, navEnd, formatters, dateLib) {
32905
- const { startOfMonth, startOfYear, endOfYear, eachMonthOfInterval, getMonth, } = dateLib;
32906
- const months = eachMonthOfInterval({
32907
- start: startOfYear(displayMonth),
32908
- end: endOfYear(displayMonth),
32909
- });
32910
- const options = months.map((month) => {
32911
- const label = formatters.formatMonthDropdown(month, dateLib);
32912
- const value = getMonth(month);
32913
- const disabled = (navStart && month < startOfMonth(navStart)) ||
32914
- (navEnd && month > startOfMonth(navEnd)) ||
32915
- false;
32916
- return { value, label, disabled };
32917
- });
32918
- return options;
32919
- }
32920
-
32921
- /**
32922
- * Returns the computed style for a day based on its modifiers.
32923
- *
32924
- * This function merges the base styles for the day with any styles associated
32925
- * with active modifiers.
32926
- *
32927
- * @param dayModifiers The modifiers applied to the day.
32928
- * @param styles The base styles for the calendar elements.
32929
- * @param modifiersStyles The styles associated with specific modifiers.
32930
- * @returns The computed style for the day.
32931
- */
32932
- function getStyleForModifiers(dayModifiers, styles = {}, modifiersStyles = {}) {
32933
- let style = { ...styles?.[UI.Day] };
32934
- Object.entries(dayModifiers)
32935
- .filter(([, active]) => active === true)
32936
- .forEach(([modifier]) => {
32937
- style = {
32938
- ...style,
32939
- ...modifiersStyles?.[modifier],
32940
- };
32941
- });
32942
- return style;
32943
- }
32944
-
32945
- /**
32946
- * Generates a series of 7 days, starting from the beginning of the week, to use
32947
- * for formatting weekday names (e.g., Monday, Tuesday, etc.).
32948
- *
32949
- * @param dateLib The date library to use for date manipulation.
32950
- * @param ISOWeek Whether to use ISO week numbering (weeks start on Monday).
32951
- * @param broadcastCalendar Whether to use the broadcast calendar (weeks start
32952
- * on Monday, but may include adjustments for broadcast-specific rules).
32953
- * @returns An array of 7 dates representing the weekdays.
32954
- */
32955
- function getWeekdays(dateLib, ISOWeek, broadcastCalendar) {
32956
- const today = dateLib.today();
32957
- const start = broadcastCalendar
32958
- ? dateLib.startOfBroadcastWeek(today, dateLib)
32959
- : ISOWeek
32960
- ? dateLib.startOfISOWeek(today)
32961
- : dateLib.startOfWeek(today);
32962
- const days = [];
32963
- for (let i = 0; i < 7; i++) {
32964
- const day = dateLib.addDays(start, i);
32965
- days.push(day);
32966
- }
32967
- return days;
32968
- }
32969
-
32970
- /**
32971
- * Returns the years to display in the dropdown.
32972
- *
32973
- * This function generates a list of years between the navigation start and end
32974
- * dates, formatted using the provided formatter.
32975
- *
32976
- * @param navStart The start date for navigation.
32977
- * @param navEnd The end date for navigation.
32978
- * @param formatters The formatters to use for formatting the year labels.
32979
- * @param dateLib The date library to use for date manipulation.
32980
- * @param reverse If true, reverses the order of the years (descending).
32981
- * @returns An array of dropdown options representing the years, or `undefined`
32982
- * if `navStart` or `navEnd` is not provided.
32983
- */
32984
- function getYearOptions(navStart, navEnd, formatters, dateLib, reverse = false) {
32985
- if (!navStart)
32986
- return undefined;
32987
- if (!navEnd)
32988
- return undefined;
32989
- const { startOfYear, endOfYear, addYears, getYear, isBefore, isSameYear } = dateLib;
32990
- const firstNavYear = startOfYear(navStart);
32991
- const lastNavYear = endOfYear(navEnd);
32992
- const years = [];
32993
- let year = firstNavYear;
32994
- while (isBefore(year, lastNavYear) || isSameYear(year, lastNavYear)) {
32995
- years.push(year);
32996
- year = addYears(year, 1);
32997
- }
32998
- if (reverse)
32999
- years.reverse();
33000
- return years.map((year) => {
33001
- const label = formatters.formatYearDropdown(year, dateLib);
33002
- return {
33003
- value: getYear(year),
33004
- label,
33005
- disabled: false,
33006
- };
33007
- });
33008
- }
33009
-
33010
33158
  /**
33011
33159
  * Generates the ARIA label for a day button.
33012
33160
  *
@@ -33040,7 +33188,7 @@ const labelDay = labelDayButton;
33040
33188
  * Generates the ARIA label for the month grid, which is announced when entering
33041
33189
  * the grid.
33042
33190
  *
33043
- * @defaultValue `LLLL y` (e.g., "November 2022").
33191
+ * @defaultValue Locale-specific month/year order (e.g., "November 2022").
33044
33192
  * @param date - The date representing the month.
33045
33193
  * @param options - Optional configuration for the date formatting library.
33046
33194
  * @param dateLib - An optional instance of the date formatting library.
@@ -33049,7 +33197,8 @@ const labelDay = labelDayButton;
33049
33197
  * @see https://daypicker.dev/docs/translation#aria-labels
33050
33198
  */
33051
33199
  function labelGrid(date, options, dateLib) {
33052
- return (dateLib ?? new DateLib(options)).format(date, "LLLL y");
33200
+ const lib = dateLib ?? new DateLib(options);
33201
+ return lib.formatMonthYear(date);
33053
33202
  }
33054
33203
  /**
33055
33204
  * @ignore
@@ -33101,6 +33250,7 @@ function labelNav() {
33101
33250
  return "";
33102
33251
  }
33103
33252
 
33253
+ const defaultLabel = "Go to the Next Month";
33104
33254
  /**
33105
33255
  * Generates the ARIA label for the "next month" button.
33106
33256
  *
@@ -33111,8 +33261,8 @@ function labelNav() {
33111
33261
  * @group Labels
33112
33262
  * @see https://daypicker.dev/docs/translation#aria-labels
33113
33263
  */
33114
- function labelNext(_month) {
33115
- return "Go to the Next Month";
33264
+ function labelNext(_month, _options) {
33265
+ return defaultLabel;
33116
33266
  }
33117
33267
 
33118
33268
  /**
@@ -33201,6 +33351,316 @@ var defaultLabels = /*#__PURE__*/Object.freeze({
33201
33351
  labelYearDropdown: labelYearDropdown
33202
33352
  });
33203
33353
 
33354
+ const resolveLabel = (defaultLabel, customLabel, localeLabel) => {
33355
+ if (customLabel)
33356
+ return customLabel;
33357
+ if (localeLabel) {
33358
+ return (typeof localeLabel === "function"
33359
+ ? localeLabel
33360
+ : (..._args) => localeLabel);
33361
+ }
33362
+ return defaultLabel;
33363
+ };
33364
+ /**
33365
+ * Merges custom labels from the props with the default labels.
33366
+ *
33367
+ * When available, uses the locale-provided translation for `labelNext`.
33368
+ *
33369
+ * @param customLabels The custom labels provided in the DayPicker props.
33370
+ * @param options Options from the date library, used to resolve locale
33371
+ * translations.
33372
+ * @returns The merged labels object with locale-aware defaults.
33373
+ */
33374
+ function getLabels(customLabels, options) {
33375
+ const localeLabels = options.locale?.labels ?? {};
33376
+ return {
33377
+ ...defaultLabels,
33378
+ ...(customLabels ?? {}),
33379
+ labelDayButton: resolveLabel(labelDayButton, customLabels?.labelDayButton, localeLabels.labelDayButton),
33380
+ labelMonthDropdown: resolveLabel(labelMonthDropdown, customLabels?.labelMonthDropdown, localeLabels.labelMonthDropdown),
33381
+ labelNext: resolveLabel(labelNext, customLabels?.labelNext, localeLabels.labelNext),
33382
+ labelPrevious: resolveLabel(labelPrevious, customLabels?.labelPrevious, localeLabels.labelPrevious),
33383
+ labelWeekNumber: resolveLabel(labelWeekNumber, customLabels?.labelWeekNumber, localeLabels.labelWeekNumber),
33384
+ labelYearDropdown: resolveLabel(labelYearDropdown, customLabels?.labelYearDropdown, localeLabels.labelYearDropdown),
33385
+ labelGrid: resolveLabel(labelGrid, customLabels?.labelGrid, localeLabels.labelGrid),
33386
+ labelGridcell: resolveLabel(labelGridcell, customLabels?.labelGridcell, localeLabels.labelGridcell),
33387
+ labelNav: resolveLabel(labelNav, customLabels?.labelNav, localeLabels.labelNav),
33388
+ labelWeekNumberHeader: resolveLabel(labelWeekNumberHeader, customLabels?.labelWeekNumberHeader, localeLabels.labelWeekNumberHeader),
33389
+ labelWeekday: resolveLabel(labelWeekday, customLabels?.labelWeekday, localeLabels.labelWeekday),
33390
+ };
33391
+ }
33392
+
33393
+ /**
33394
+ * Returns the months to show in the dropdown.
33395
+ *
33396
+ * This function generates a list of months for the current year, formatted
33397
+ * using the provided formatter, and determines whether each month should be
33398
+ * disabled based on the navigation range.
33399
+ *
33400
+ * @param displayMonth The currently displayed month.
33401
+ * @param navStart The start date for navigation.
33402
+ * @param navEnd The end date for navigation.
33403
+ * @param formatters The formatters to use for formatting the month labels.
33404
+ * @param dateLib The date library to use for date manipulation.
33405
+ * @returns An array of dropdown options representing the months, or `undefined`
33406
+ * if no months are available.
33407
+ */
33408
+ function getMonthOptions(displayMonth, navStart, navEnd, formatters, dateLib) {
33409
+ const { startOfMonth, startOfYear, endOfYear, eachMonthOfInterval, getMonth, } = dateLib;
33410
+ const months = eachMonthOfInterval({
33411
+ start: startOfYear(displayMonth),
33412
+ end: endOfYear(displayMonth),
33413
+ });
33414
+ const options = months.map((month) => {
33415
+ const label = formatters.formatMonthDropdown(month, dateLib);
33416
+ const value = getMonth(month);
33417
+ const disabled = (navStart && month < startOfMonth(navStart)) ||
33418
+ (navEnd && month > startOfMonth(navEnd)) ||
33419
+ false;
33420
+ return { value, label, disabled };
33421
+ });
33422
+ return options;
33423
+ }
33424
+
33425
+ /**
33426
+ * Returns the computed style for a day based on its modifiers.
33427
+ *
33428
+ * This function merges the base styles for the day with any styles associated
33429
+ * with active modifiers.
33430
+ *
33431
+ * @param dayModifiers The modifiers applied to the day.
33432
+ * @param styles The base styles for the calendar elements.
33433
+ * @param modifiersStyles The styles associated with specific modifiers.
33434
+ * @returns The computed style for the day.
33435
+ */
33436
+ function getStyleForModifiers(dayModifiers, styles = {}, modifiersStyles = {}) {
33437
+ let style = { ...styles?.[UI.Day] };
33438
+ Object.entries(dayModifiers)
33439
+ .filter(([, active]) => active === true)
33440
+ .forEach(([modifier]) => {
33441
+ style = {
33442
+ ...style,
33443
+ ...modifiersStyles?.[modifier],
33444
+ };
33445
+ });
33446
+ return style;
33447
+ }
33448
+
33449
+ /**
33450
+ * Generates a series of 7 days, starting from the beginning of the week, to use
33451
+ * for formatting weekday names (e.g., Monday, Tuesday, etc.).
33452
+ *
33453
+ * @param dateLib The date library to use for date manipulation.
33454
+ * @param ISOWeek Whether to use ISO week numbering (weeks start on Monday).
33455
+ * @param broadcastCalendar Whether to use the broadcast calendar (weeks start
33456
+ * on Monday, but may include adjustments for broadcast-specific rules).
33457
+ * @returns An array of 7 dates representing the weekdays.
33458
+ */
33459
+ function getWeekdays(dateLib, ISOWeek, broadcastCalendar, today) {
33460
+ const referenceToday = today ?? dateLib.today();
33461
+ const start = broadcastCalendar
33462
+ ? dateLib.startOfBroadcastWeek(referenceToday, dateLib)
33463
+ : ISOWeek
33464
+ ? dateLib.startOfISOWeek(referenceToday)
33465
+ : dateLib.startOfWeek(referenceToday);
33466
+ const days = [];
33467
+ for (let i = 0; i < 7; i++) {
33468
+ const day = dateLib.addDays(start, i);
33469
+ days.push(day);
33470
+ }
33471
+ return days;
33472
+ }
33473
+
33474
+ /**
33475
+ * Returns the years to display in the dropdown.
33476
+ *
33477
+ * This function generates a list of years between the navigation start and end
33478
+ * dates, formatted using the provided formatter.
33479
+ *
33480
+ * @param navStart The start date for navigation.
33481
+ * @param navEnd The end date for navigation.
33482
+ * @param formatters The formatters to use for formatting the year labels.
33483
+ * @param dateLib The date library to use for date manipulation.
33484
+ * @param reverse If true, reverses the order of the years (descending).
33485
+ * @returns An array of dropdown options representing the years, or `undefined`
33486
+ * if `navStart` or `navEnd` is not provided.
33487
+ */
33488
+ function getYearOptions(navStart, navEnd, formatters, dateLib, reverse = false) {
33489
+ if (!navStart)
33490
+ return undefined;
33491
+ if (!navEnd)
33492
+ return undefined;
33493
+ const { startOfYear, endOfYear, eachYearOfInterval, getYear } = dateLib;
33494
+ const firstNavYear = startOfYear(navStart);
33495
+ const lastNavYear = endOfYear(navEnd);
33496
+ const years = eachYearOfInterval({ start: firstNavYear, end: lastNavYear });
33497
+ if (reverse)
33498
+ years.reverse();
33499
+ return years.map((year) => {
33500
+ const label = formatters.formatYearDropdown(year, dateLib);
33501
+ return {
33502
+ value: getYear(year),
33503
+ label,
33504
+ disabled: false,
33505
+ };
33506
+ });
33507
+ }
33508
+
33509
+ /**
33510
+ * Creates `dateLib` overrides that keep all calendar math at noon in the target
33511
+ * time zone. This avoids second-level offset changes (e.g., historical zones
33512
+ * with +03:41:12) from pushing dates backward across midnight.
33513
+ */
33514
+ function createNoonOverrides(timeZone, options = {}) {
33515
+ const { weekStartsOn, locale } = options;
33516
+ const fallbackWeekStartsOn = (weekStartsOn ??
33517
+ locale?.options?.weekStartsOn ??
33518
+ 0);
33519
+ // Keep all internal math anchored at noon in the target zone to avoid
33520
+ // historical second-level offsets from crossing midnight.
33521
+ const toNoonTZDate = (date) => {
33522
+ const normalizedDate = typeof date === "number" || typeof date === "string"
33523
+ ? new Date(date)
33524
+ : date;
33525
+ return new TZDate(normalizedDate.getFullYear(), normalizedDate.getMonth(), normalizedDate.getDate(), 12, 0, 0, timeZone);
33526
+ };
33527
+ // Convert a value into a host `Date` that represents the same calendar day
33528
+ // as the target-zone noon. This is useful for helpers (e.g., date-fns week
33529
+ // utilities) that expect local `Date` instances rather than `TZDate`s.
33530
+ const toCalendarDate = (date) => {
33531
+ const zoned = toNoonTZDate(date);
33532
+ return new Date(zoned.getFullYear(), zoned.getMonth(), zoned.getDate(), 0, 0, 0, 0);
33533
+ };
33534
+ return {
33535
+ today: () => {
33536
+ return toNoonTZDate(TZDate.tz(timeZone));
33537
+ },
33538
+ newDate: (year, monthIndex, date) => {
33539
+ return new TZDate(year, monthIndex, date, 12, 0, 0, timeZone);
33540
+ },
33541
+ startOfDay: (date) => {
33542
+ return toNoonTZDate(date);
33543
+ },
33544
+ startOfWeek: (date, options) => {
33545
+ const base = toNoonTZDate(date);
33546
+ const weekStartsOnValue = (options?.weekStartsOn ??
33547
+ fallbackWeekStartsOn);
33548
+ const diff = (base.getDay() - weekStartsOnValue + 7) % 7;
33549
+ base.setDate(base.getDate() - diff);
33550
+ return base;
33551
+ },
33552
+ startOfISOWeek: (date) => {
33553
+ const base = toNoonTZDate(date);
33554
+ const diff = (base.getDay() - 1 + 7) % 7;
33555
+ base.setDate(base.getDate() - diff);
33556
+ return base;
33557
+ },
33558
+ startOfMonth: (date) => {
33559
+ const base = toNoonTZDate(date);
33560
+ base.setDate(1);
33561
+ return base;
33562
+ },
33563
+ startOfYear: (date) => {
33564
+ const base = toNoonTZDate(date);
33565
+ base.setMonth(0, 1);
33566
+ return base;
33567
+ },
33568
+ endOfWeek: (date, options) => {
33569
+ const base = toNoonTZDate(date);
33570
+ const weekStartsOnValue = (options?.weekStartsOn ??
33571
+ fallbackWeekStartsOn);
33572
+ const endDow = (weekStartsOnValue + 6) % 7;
33573
+ const diff = (endDow - base.getDay() + 7) % 7;
33574
+ base.setDate(base.getDate() + diff);
33575
+ return base;
33576
+ },
33577
+ endOfISOWeek: (date) => {
33578
+ const base = toNoonTZDate(date);
33579
+ const diff = (7 - base.getDay()) % 7;
33580
+ base.setDate(base.getDate() + diff);
33581
+ return base;
33582
+ },
33583
+ endOfMonth: (date) => {
33584
+ const base = toNoonTZDate(date);
33585
+ base.setMonth(base.getMonth() + 1, 0);
33586
+ return base;
33587
+ },
33588
+ endOfYear: (date) => {
33589
+ const base = toNoonTZDate(date);
33590
+ base.setMonth(11, 31);
33591
+ return base;
33592
+ },
33593
+ eachMonthOfInterval: (interval) => {
33594
+ const start = toNoonTZDate(interval.start);
33595
+ const end = toNoonTZDate(interval.end);
33596
+ const result = [];
33597
+ const cursor = new TZDate(start.getFullYear(), start.getMonth(), 1, 12, 0, 0, timeZone);
33598
+ const endKey = end.getFullYear() * 12 + end.getMonth();
33599
+ while (cursor.getFullYear() * 12 + cursor.getMonth() <= endKey) {
33600
+ result.push(new TZDate(cursor, timeZone));
33601
+ cursor.setMonth(cursor.getMonth() + 1, 1);
33602
+ }
33603
+ return result;
33604
+ },
33605
+ // Normalize to noon once before arithmetic (avoid DST/midnight edge cases),
33606
+ // mutate the same TZDate, and return it.
33607
+ addDays: (date, amount) => {
33608
+ const base = toNoonTZDate(date);
33609
+ base.setDate(base.getDate() + amount);
33610
+ return base;
33611
+ },
33612
+ addWeeks: (date, amount) => {
33613
+ const base = toNoonTZDate(date);
33614
+ base.setDate(base.getDate() + amount * 7);
33615
+ return base;
33616
+ },
33617
+ addMonths: (date, amount) => {
33618
+ const base = toNoonTZDate(date);
33619
+ base.setMonth(base.getMonth() + amount);
33620
+ return base;
33621
+ },
33622
+ addYears: (date, amount) => {
33623
+ const base = toNoonTZDate(date);
33624
+ base.setFullYear(base.getFullYear() + amount);
33625
+ return base;
33626
+ },
33627
+ eachYearOfInterval: (interval) => {
33628
+ const start = toNoonTZDate(interval.start);
33629
+ const end = toNoonTZDate(interval.end);
33630
+ const years = [];
33631
+ const cursor = new TZDate(start.getFullYear(), 0, 1, 12, 0, 0, timeZone);
33632
+ while (cursor.getFullYear() <= end.getFullYear()) {
33633
+ years.push(new TZDate(cursor, timeZone));
33634
+ cursor.setFullYear(cursor.getFullYear() + 1, 0, 1);
33635
+ }
33636
+ return years;
33637
+ },
33638
+ getWeek: (date, options) => {
33639
+ const base = toCalendarDate(date);
33640
+ return getWeek(base, {
33641
+ weekStartsOn: options?.weekStartsOn ?? fallbackWeekStartsOn,
33642
+ firstWeekContainsDate: options?.firstWeekContainsDate ??
33643
+ locale?.options?.firstWeekContainsDate ??
33644
+ 1,
33645
+ });
33646
+ },
33647
+ getISOWeek: (date) => {
33648
+ const base = toCalendarDate(date);
33649
+ return getISOWeek(base);
33650
+ },
33651
+ differenceInCalendarDays: (dateLeft, dateRight) => {
33652
+ const left = toCalendarDate(dateLeft);
33653
+ const right = toCalendarDate(dateRight);
33654
+ return differenceInCalendarDays(left, right);
33655
+ },
33656
+ differenceInCalendarMonths: (dateLeft, dateRight) => {
33657
+ const left = toCalendarDate(dateLeft);
33658
+ const right = toCalendarDate(dateRight);
33659
+ return differenceInCalendarMonths(left, right);
33660
+ },
33661
+ };
33662
+ }
33663
+
33204
33664
  const asHtmlElement = (element) => {
33205
33665
  if (element instanceof HTMLElement)
33206
33666
  return element;
@@ -33393,19 +33853,27 @@ function getDates(displayMonths, maxDate, props, dateLib) {
33393
33853
  : ISOWeek
33394
33854
  ? startOfISOWeek(firstMonth)
33395
33855
  : startOfWeek(firstMonth);
33396
- const endWeekLastDate = broadcastCalendar
33856
+ const displayMonthsWeekEnd = broadcastCalendar
33397
33857
  ? endOfBroadcastWeek(lastMonth)
33398
33858
  : ISOWeek
33399
33859
  ? endOfISOWeek(endOfMonth(lastMonth))
33400
33860
  : endOfWeek(endOfMonth(lastMonth));
33401
- const nOfDays = differenceInCalendarDays(endWeekLastDate, startWeekFirstDate);
33861
+ // If maxDate is set, clamp the grid to the end of that week.
33862
+ const constraintWeekEnd = maxDate &&
33863
+ (broadcastCalendar
33864
+ ? endOfBroadcastWeek(maxDate)
33865
+ : ISOWeek
33866
+ ? endOfISOWeek(maxDate)
33867
+ : endOfWeek(maxDate));
33868
+ // Pick the earliest week end between the displayed months and the constraint.
33869
+ const gridEndDate = constraintWeekEnd && isAfter(displayMonthsWeekEnd, constraintWeekEnd)
33870
+ ? constraintWeekEnd
33871
+ : displayMonthsWeekEnd;
33872
+ const nOfDays = differenceInCalendarDays(gridEndDate, startWeekFirstDate);
33402
33873
  const nOfMonths = differenceInCalendarMonths(lastMonth, firstMonth) + 1;
33403
33874
  const dates = [];
33404
33875
  for (let i = 0; i <= nOfDays; i++) {
33405
33876
  const date = addDays(startWeekFirstDate, i);
33406
- if (maxDate && isAfter(date, maxDate)) {
33407
- break;
33408
- }
33409
33877
  dates.push(date);
33410
33878
  }
33411
33879
  // If fixed weeks is enabled, add the extra dates to the array
@@ -33736,17 +34204,45 @@ function useCalendar(props, dateLib) {
33736
34204
  setFirstMonth(newInitialMonth);
33737
34205
  }, [props.timeZone]);
33738
34206
  /** The months displayed in the calendar. */
33739
- const displayMonths = getDisplayMonths(firstMonth, navEnd, props, dateLib);
33740
- /** The dates displayed in the calendar. */
33741
- const dates = getDates(displayMonths, props.endMonth ? endOfMonth(props.endMonth) : undefined, props, dateLib);
33742
- /** The Months displayed in the calendar. */
33743
- const months = getMonths(displayMonths, dates, props, dateLib);
33744
- /** The Weeks displayed in the calendar. */
33745
- const weeks = getWeeks(months);
33746
- /** The Days displayed in the calendar. */
33747
- const days = getDays(months);
33748
- const previousMonth = getPreviousMonth(firstMonth, navStart, props, dateLib);
33749
- const nextMonth = getNextMonth(firstMonth, navEnd, props, dateLib);
34207
+ // biome-ignore lint/correctness/useExhaustiveDependencies: We want to recompute only when specific props change.
34208
+ const { months, weeks, days, previousMonth, nextMonth } = useMemo(() => {
34209
+ const displayMonths = getDisplayMonths(firstMonth, navEnd, { numberOfMonths: props.numberOfMonths }, dateLib);
34210
+ const dates = getDates(displayMonths, props.endMonth ? endOfMonth(props.endMonth) : undefined, {
34211
+ ISOWeek: props.ISOWeek,
34212
+ fixedWeeks: props.fixedWeeks,
34213
+ broadcastCalendar: props.broadcastCalendar,
34214
+ }, dateLib);
34215
+ const months = getMonths(displayMonths, dates, {
34216
+ broadcastCalendar: props.broadcastCalendar,
34217
+ fixedWeeks: props.fixedWeeks,
34218
+ ISOWeek: props.ISOWeek,
34219
+ reverseMonths: props.reverseMonths,
34220
+ }, dateLib);
34221
+ const weeks = getWeeks(months);
34222
+ const days = getDays(months);
34223
+ const previousMonth = getPreviousMonth(firstMonth, navStart, props, dateLib);
34224
+ const nextMonth = getNextMonth(firstMonth, navEnd, props, dateLib);
34225
+ return {
34226
+ months,
34227
+ weeks,
34228
+ days,
34229
+ previousMonth,
34230
+ nextMonth,
34231
+ };
34232
+ }, [
34233
+ dateLib,
34234
+ firstMonth.getTime(),
34235
+ navEnd?.getTime(),
34236
+ navStart?.getTime(),
34237
+ props.disableNavigation,
34238
+ props.broadcastCalendar,
34239
+ props.endMonth?.getTime(),
34240
+ props.fixedWeeks,
34241
+ props.ISOWeek,
34242
+ props.numberOfMonths,
34243
+ props.pagedNavigation,
34244
+ props.reverseMonths,
34245
+ ]);
33750
34246
  const { disableNavigation, onMonthChange } = props;
33751
34247
  const isDayInCalendar = (day) => weeks.some((week) => week.days.some((d) => d.isEqualTo(day)));
33752
34248
  const goToMonth = (date) => {
@@ -33965,6 +34461,12 @@ function useFocus(props, calendar, getModifiers, isSelected, dateLib) {
33965
34461
  const nextFocus = getNextFocus(moveBy, moveDir, focusedDay, calendar.navStart, calendar.navEnd, props, dateLib);
33966
34462
  if (!nextFocus)
33967
34463
  return;
34464
+ if (props.disableNavigation) {
34465
+ const isNextInCalendar = calendar.days.some((day) => day.isEqualTo(nextFocus));
34466
+ if (!isNextInCalendar) {
34467
+ return;
34468
+ }
34469
+ }
33968
34470
  calendar.goToDay(nextFocus);
33969
34471
  setFocused(nextFocus);
33970
34472
  };
@@ -34247,15 +34749,33 @@ function rangeContainsModifiers(range, modifiers, dateLib = defaultDateLib) {
34247
34749
  * range, and a function to check if a date is within the range.
34248
34750
  */
34249
34751
  function useRange(props, dateLib) {
34250
- const { disabled, excludeDisabled, selected: initiallySelected, required, onSelect, } = props;
34752
+ const { disabled, excludeDisabled, resetOnSelect, selected: initiallySelected, required, onSelect, } = props;
34251
34753
  const [internallySelected, setSelected] = useControlledValue(initiallySelected, onSelect ? initiallySelected : undefined);
34252
34754
  const selected = !onSelect ? internallySelected : initiallySelected;
34253
34755
  const isSelected = (date) => selected && rangeIncludesDate(selected, date, false, dateLib);
34254
34756
  const select = (triggerDate, modifiers, e) => {
34255
34757
  const { min, max } = props;
34256
- const newRange = triggerDate
34257
- ? addToRange(triggerDate, selected, min, max, required, dateLib)
34258
- : undefined;
34758
+ let newRange;
34759
+ if (triggerDate) {
34760
+ const selectedFrom = selected?.from;
34761
+ const selectedTo = selected?.to;
34762
+ const hasFullRange = !!selectedFrom && !!selectedTo;
34763
+ const isClickingSingleDayRange = !!selectedFrom &&
34764
+ !!selectedTo &&
34765
+ dateLib.isSameDay(selectedFrom, selectedTo) &&
34766
+ dateLib.isSameDay(triggerDate, selectedFrom);
34767
+ if (resetOnSelect && (hasFullRange || !selected?.from)) {
34768
+ if (!required && isClickingSingleDayRange) {
34769
+ newRange = undefined;
34770
+ }
34771
+ else {
34772
+ newRange = { from: triggerDate, to: undefined };
34773
+ }
34774
+ }
34775
+ else {
34776
+ newRange = addToRange(triggerDate, selected, min, max, required, dateLib);
34777
+ }
34778
+ }
34259
34779
  if (excludeDisabled && disabled && newRange?.from && newRange.to) {
34260
34780
  if (rangeContainsModifiers({ from: newRange.from, to: newRange.to }, disabled, dateLib)) {
34261
34781
  // if a disabled days is found, the range is reset
@@ -34343,6 +34863,78 @@ function useSelection(props, dateLib) {
34343
34863
  }
34344
34864
  }
34345
34865
 
34866
+ /**
34867
+ * Convert a {@link Date} or {@link TZDate} instance to the given time zone.
34868
+ * Reuses the same instance when it is already a {@link TZDate} using the target
34869
+ * time zone to avoid extra allocations.
34870
+ */
34871
+ function toTimeZone(date, timeZone) {
34872
+ if (date instanceof TZDate && date.timeZone === timeZone) {
34873
+ return date;
34874
+ }
34875
+ return new TZDate(date, timeZone);
34876
+ }
34877
+
34878
+ function toZoneNoon(date, timeZone, noonSafe) {
34879
+ if (!noonSafe)
34880
+ return toTimeZone(date, timeZone);
34881
+ const zoned = toTimeZone(date, timeZone);
34882
+ const noonZoned = new TZDate(zoned.getFullYear(), zoned.getMonth(), zoned.getDate(), 12, 0, 0, timeZone);
34883
+ return new Date(noonZoned.getTime());
34884
+ }
34885
+ function convertMatcher(matcher, timeZone, noonSafe) {
34886
+ if (typeof matcher === "boolean" || typeof matcher === "function") {
34887
+ return matcher;
34888
+ }
34889
+ if (matcher instanceof Date) {
34890
+ return toZoneNoon(matcher, timeZone, noonSafe);
34891
+ }
34892
+ if (Array.isArray(matcher)) {
34893
+ return matcher.map((value) => value instanceof Date ? toZoneNoon(value, timeZone, noonSafe) : value);
34894
+ }
34895
+ if (isDateRange(matcher)) {
34896
+ return {
34897
+ ...matcher,
34898
+ from: matcher.from ? toTimeZone(matcher.from, timeZone) : matcher.from,
34899
+ to: matcher.to ? toTimeZone(matcher.to, timeZone) : matcher.to,
34900
+ };
34901
+ }
34902
+ if (isDateInterval(matcher)) {
34903
+ return {
34904
+ before: toZoneNoon(matcher.before, timeZone, noonSafe),
34905
+ after: toZoneNoon(matcher.after, timeZone, noonSafe),
34906
+ };
34907
+ }
34908
+ if (isDateAfterType(matcher)) {
34909
+ return {
34910
+ after: toZoneNoon(matcher.after, timeZone, noonSafe),
34911
+ };
34912
+ }
34913
+ if (isDateBeforeType(matcher)) {
34914
+ return {
34915
+ before: toZoneNoon(matcher.before, timeZone, noonSafe),
34916
+ };
34917
+ }
34918
+ return matcher;
34919
+ }
34920
+ /**
34921
+ * Convert any {@link Matcher} or array of matchers to the specified time zone.
34922
+ *
34923
+ * @param matchers - The matcher or matchers to convert.
34924
+ * @param timeZone - The target IANA time zone.
34925
+ * @returns The converted matcher(s).
34926
+ * @group Utilities
34927
+ */
34928
+ function convertMatchersToTimeZone(matchers, timeZone, noonSafe) {
34929
+ if (!matchers) {
34930
+ return matchers;
34931
+ }
34932
+ if (Array.isArray(matchers)) {
34933
+ return matchers.map((matcher) => convertMatcher(matcher, timeZone, noonSafe));
34934
+ }
34935
+ return convertMatcher(matchers, timeZone, noonSafe);
34936
+ }
34937
+
34346
34938
  /**
34347
34939
  * Renders the DayPicker calendar component.
34348
34940
  *
@@ -34353,58 +34945,83 @@ function useSelection(props, dateLib) {
34353
34945
  */
34354
34946
  function DayPicker(initialProps) {
34355
34947
  let props = initialProps;
34356
- if (props.timeZone) {
34948
+ const timeZone = props.timeZone;
34949
+ if (timeZone) {
34357
34950
  props = {
34358
34951
  ...initialProps,
34952
+ timeZone,
34359
34953
  };
34360
34954
  if (props.today) {
34361
- props.today = new TZDate(props.today, props.timeZone);
34955
+ props.today = toTimeZone(props.today, timeZone);
34362
34956
  }
34363
34957
  if (props.month) {
34364
- props.month = new TZDate(props.month, props.timeZone);
34958
+ props.month = toTimeZone(props.month, timeZone);
34365
34959
  }
34366
34960
  if (props.defaultMonth) {
34367
- props.defaultMonth = new TZDate(props.defaultMonth, props.timeZone);
34961
+ props.defaultMonth = toTimeZone(props.defaultMonth, timeZone);
34368
34962
  }
34369
34963
  if (props.startMonth) {
34370
- props.startMonth = new TZDate(props.startMonth, props.timeZone);
34964
+ props.startMonth = toTimeZone(props.startMonth, timeZone);
34371
34965
  }
34372
34966
  if (props.endMonth) {
34373
- props.endMonth = new TZDate(props.endMonth, props.timeZone);
34967
+ props.endMonth = toTimeZone(props.endMonth, timeZone);
34374
34968
  }
34375
34969
  if (props.mode === "single" && props.selected) {
34376
- props.selected = new TZDate(props.selected, props.timeZone);
34970
+ props.selected = toTimeZone(props.selected, timeZone);
34377
34971
  }
34378
34972
  else if (props.mode === "multiple" && props.selected) {
34379
- props.selected = props.selected?.map((date) => new TZDate(date, props.timeZone));
34973
+ props.selected = props.selected?.map((date) => toTimeZone(date, timeZone));
34380
34974
  }
34381
34975
  else if (props.mode === "range" && props.selected) {
34382
34976
  props.selected = {
34383
34977
  from: props.selected.from
34384
- ? new TZDate(props.selected.from, props.timeZone)
34385
- : undefined,
34978
+ ? toTimeZone(props.selected.from, timeZone)
34979
+ : props.selected.from,
34386
34980
  to: props.selected.to
34387
- ? new TZDate(props.selected.to, props.timeZone)
34388
- : undefined,
34981
+ ? toTimeZone(props.selected.to, timeZone)
34982
+ : props.selected.to,
34389
34983
  };
34390
34984
  }
34985
+ if (props.disabled !== undefined) {
34986
+ props.disabled = convertMatchersToTimeZone(props.disabled, timeZone);
34987
+ }
34988
+ if (props.hidden !== undefined) {
34989
+ props.hidden = convertMatchersToTimeZone(props.hidden, timeZone);
34990
+ }
34991
+ if (props.modifiers) {
34992
+ const nextModifiers = {};
34993
+ Object.keys(props.modifiers).forEach((key) => {
34994
+ nextModifiers[key] = convertMatchersToTimeZone(props.modifiers?.[key], timeZone);
34995
+ });
34996
+ props.modifiers = nextModifiers;
34997
+ }
34391
34998
  }
34392
34999
  const { components, formatters, labels, dateLib, locale, classNames } = useMemo(() => {
34393
35000
  const locale = { ...enUS, ...props.locale };
35001
+ const weekStartsOn = props.broadcastCalendar ? 1 : props.weekStartsOn;
35002
+ const noonOverrides = props.noonSafe && props.timeZone
35003
+ ? createNoonOverrides(props.timeZone, {
35004
+ weekStartsOn,
35005
+ locale,
35006
+ })
35007
+ : undefined;
35008
+ const overrides = props.dateLib && noonOverrides
35009
+ ? { ...noonOverrides, ...props.dateLib }
35010
+ : (props.dateLib ?? noonOverrides);
34394
35011
  const dateLib = new DateLib({
34395
35012
  locale,
34396
- weekStartsOn: props.broadcastCalendar ? 1 : props.weekStartsOn,
35013
+ weekStartsOn,
34397
35014
  firstWeekContainsDate: props.firstWeekContainsDate,
34398
35015
  useAdditionalWeekYearTokens: props.useAdditionalWeekYearTokens,
34399
35016
  useAdditionalDayOfYearTokens: props.useAdditionalDayOfYearTokens,
34400
35017
  timeZone: props.timeZone,
34401
35018
  numerals: props.numerals,
34402
- }, props.dateLib);
35019
+ }, overrides);
34403
35020
  return {
34404
35021
  dateLib,
34405
35022
  components: getComponents(props.components),
34406
35023
  formatters: getFormatters(props.formatters),
34407
- labels: { ...defaultLabels, ...props.labels },
35024
+ labels: getLabels(props.labels, dateLib.options),
34408
35025
  locale,
34409
35026
  classNames: { ...getDefaultClassNames(), ...props.classNames },
34410
35027
  };
@@ -34418,11 +35035,15 @@ function DayPicker(initialProps) {
34418
35035
  props.timeZone,
34419
35036
  props.numerals,
34420
35037
  props.dateLib,
35038
+ props.noonSafe,
34421
35039
  props.components,
34422
35040
  props.formatters,
34423
35041
  props.labels,
34424
35042
  props.classNames,
34425
35043
  ]);
35044
+ if (!props.today) {
35045
+ props = { ...props, today: dateLib.today() };
35046
+ }
34426
35047
  const { captionLayout, mode, navLayout, numberOfMonths = 1, onDayBlur, onDayClick, onDayFocus, onDayKeyDown, onDayMouseEnter, onDayMouseLeave, onNextClick, onPrevClick, showWeekNumber, styles, } = props;
34427
35048
  const { formatCaption, formatDay, formatMonthDropdown, formatWeekNumber, formatWeekNumberHeader, formatWeekdayName, formatYearDropdown, } = formatters;
34428
35049
  const calendar = useCalendar(props, dateLib);
@@ -34431,7 +35052,7 @@ function DayPicker(initialProps) {
34431
35052
  const { isSelected, select, selected: selectedValue, } = useSelection(props, dateLib) ?? {};
34432
35053
  const { blur, focused, isFocusTarget, moveFocus, setFocused } = useFocus(props, calendar, getModifiers, isSelected ?? (() => false), dateLib);
34433
35054
  const { labelDayButton, labelGridcell, labelGrid, labelMonthDropdown, labelNav, labelPrevious, labelNext, labelWeekday, labelWeekNumber, labelWeekNumberHeader, labelYearDropdown, } = labels;
34434
- const weekdays = useMemo(() => getWeekdays(dateLib, props.ISOWeek), [dateLib, props.ISOWeek]);
35055
+ const weekdays = useMemo(() => getWeekdays(dateLib, props.ISOWeek, props.broadcastCalendar, props.today), [dateLib, props.ISOWeek, props.broadcastCalendar, props.today]);
34435
35056
  const isInteractive = mode !== undefined || onDayClick !== undefined;
34436
35057
  const handlePreviousClick = useCallback(() => {
34437
35058
  if (!previousMonth)
@@ -34449,6 +35070,9 @@ function DayPicker(initialProps) {
34449
35070
  e.preventDefault();
34450
35071
  e.stopPropagation();
34451
35072
  setFocused(day);
35073
+ if (m.disabled) {
35074
+ return;
35075
+ }
34452
35076
  select?.(day.date, m, e);
34453
35077
  onDayClick?.(day.date, m, e);
34454
35078
  }, [select, onDayClick, setFocused]);
@@ -34532,7 +35156,7 @@ function DayPicker(initialProps) {
34532
35156
  formatters,
34533
35157
  };
34534
35158
  return (React__default.createElement(dayPickerContext.Provider, { value: contextValue },
34535
- React__default.createElement(components.Root, { rootRef: props.animate ? rootElRef : undefined, className: className, style: style, dir: props.dir, id: props.id, lang: props.lang, nonce: props.nonce, title: props.title, role: props.role, "aria-label": props["aria-label"], ...dataAttributes },
35159
+ React__default.createElement(components.Root, { rootRef: props.animate ? rootElRef : undefined, className: className, style: style, dir: props.dir, id: props.id, lang: props.lang ?? locale.code, nonce: props.nonce, title: props.title, role: props.role, "aria-label": props["aria-label"], "aria-labelledby": props["aria-labelledby"], ...dataAttributes },
34536
35160
  React__default.createElement(components.Months, { className: classNames[UI.Months], style: styles?.[UI.Months] },
34537
35161
  !props.hideNavigation && !navLayout && (React__default.createElement(components.Nav, { "data-animated-nav": props.animate ? "true" : undefined, className: classNames[UI.Nav], style: styles?.[UI.Nav], "aria-label": labelNav(), onPreviousClick: handlePreviousClick, onNextClick: handleNextClick, previousMonth: previousMonth, nextMonth: nextMonth })),
34538
35162
  months.map((calendarMonth, displayIndex) => {
@@ -34544,10 +35168,16 @@ function DayPicker(initialProps) {
34544
35168
  displayIndex === 0 && (React__default.createElement(components.PreviousMonthButton, { type: "button", className: classNames[UI.PreviousMonthButton], tabIndex: previousMonth ? undefined : -1, "aria-disabled": previousMonth ? undefined : true, "aria-label": labelPrevious(previousMonth), onClick: handlePreviousClick, "data-animated-button": props.animate ? "true" : undefined },
34545
35169
  React__default.createElement(components.Chevron, { disabled: previousMonth ? undefined : true, className: classNames[UI.Chevron], orientation: props.dir === "rtl" ? "right" : "left" }))),
34546
35170
  React__default.createElement(components.MonthCaption, { "data-animated-caption": props.animate ? "true" : undefined, className: classNames[UI.MonthCaption], style: styles?.[UI.MonthCaption], calendarMonth: calendarMonth, displayIndex: displayIndex }, captionLayout?.startsWith("dropdown") ? (React__default.createElement(components.DropdownNav, { className: classNames[UI.Dropdowns], style: styles?.[UI.Dropdowns] },
34547
- captionLayout === "dropdown" ||
34548
- captionLayout === "dropdown-months" ? (React__default.createElement(components.MonthsDropdown, { className: classNames[UI.MonthsDropdown], "aria-label": labelMonthDropdown(), classNames: classNames, components: components, disabled: Boolean(props.disableNavigation), onChange: handleMonthChange(calendarMonth.date), options: getMonthOptions(calendarMonth.date, navStart, navEnd, formatters, dateLib), style: styles?.[UI.Dropdown], value: dateLib.getMonth(calendarMonth.date) })) : (React__default.createElement("span", null, formatMonthDropdown(calendarMonth.date, dateLib))),
34549
- captionLayout === "dropdown" ||
34550
- captionLayout === "dropdown-years" ? (React__default.createElement(components.YearsDropdown, { className: classNames[UI.YearsDropdown], "aria-label": labelYearDropdown(dateLib.options), classNames: classNames, components: components, disabled: Boolean(props.disableNavigation), onChange: handleYearChange(calendarMonth.date), options: getYearOptions(navStart, navEnd, formatters, dateLib, Boolean(props.reverseYears)), style: styles?.[UI.Dropdown], value: dateLib.getYear(calendarMonth.date) })) : (React__default.createElement("span", null, formatYearDropdown(calendarMonth.date, dateLib))),
35171
+ (() => {
35172
+ const monthControl = captionLayout === "dropdown" ||
35173
+ captionLayout === "dropdown-months" ? (React__default.createElement(components.MonthsDropdown, { key: "month", className: classNames[UI.MonthsDropdown], "aria-label": labelMonthDropdown(), classNames: classNames, components: components, disabled: Boolean(props.disableNavigation), onChange: handleMonthChange(calendarMonth.date), options: getMonthOptions(calendarMonth.date, navStart, navEnd, formatters, dateLib), style: styles?.[UI.Dropdown], value: dateLib.getMonth(calendarMonth.date) })) : (React__default.createElement("span", { key: "month" }, formatMonthDropdown(calendarMonth.date, dateLib)));
35174
+ const yearControl = captionLayout === "dropdown" ||
35175
+ captionLayout === "dropdown-years" ? (React__default.createElement(components.YearsDropdown, { key: "year", className: classNames[UI.YearsDropdown], "aria-label": labelYearDropdown(dateLib.options), classNames: classNames, components: components, disabled: Boolean(props.disableNavigation), onChange: handleYearChange(calendarMonth.date), options: getYearOptions(navStart, navEnd, formatters, dateLib, Boolean(props.reverseYears)), style: styles?.[UI.Dropdown], value: dateLib.getYear(calendarMonth.date) })) : (React__default.createElement("span", { key: "year" }, formatYearDropdown(calendarMonth.date, dateLib)));
35176
+ const controls = dateLib.getMonthYearOrder() === "year-first"
35177
+ ? [yearControl, monthControl]
35178
+ : [monthControl, yearControl];
35179
+ return controls;
35180
+ })(),
34551
35181
  React__default.createElement("span", { role: "status", "aria-live": "polite", style: {
34552
35182
  border: 0,
34553
35183
  clip: "rect(0 0 0 0)",
@@ -34559,9 +35189,7 @@ function DayPicker(initialProps) {
34559
35189
  width: "1px",
34560
35190
  whiteSpace: "nowrap",
34561
35191
  wordWrap: "normal",
34562
- } }, formatCaption(calendarMonth.date, dateLib.options, dateLib)))) : (
34563
- // biome-ignore lint/a11y/useSemanticElements: breaking change
34564
- React__default.createElement(components.CaptionLabel, { className: classNames[UI.CaptionLabel], role: "status", "aria-live": "polite" }, formatCaption(calendarMonth.date, dateLib.options, dateLib)))),
35192
+ } }, formatCaption(calendarMonth.date, dateLib.options, dateLib)))) : (React__default.createElement(components.CaptionLabel, { className: classNames[UI.CaptionLabel], role: "status", "aria-live": "polite" }, formatCaption(calendarMonth.date, dateLib.options, dateLib)))),
34565
35193
  navLayout === "around" &&
34566
35194
  !props.hideNavigation &&
34567
35195
  displayIndex === numberOfMonths - 1 && (React__default.createElement(components.NextMonthButton, { type: "button", className: classNames[UI.NextMonthButton], tabIndex: nextMonth ? undefined : -1, "aria-disabled": nextMonth ? undefined : true, "aria-label": labelNext(nextMonth), onClick: handleNextClick, "data-animated-button": props.animate ? "true" : undefined },
@@ -34576,9 +35204,7 @@ function DayPicker(initialProps) {
34576
35204
  weekdays.map((weekday) => (React__default.createElement(components.Weekday, { "aria-label": labelWeekday(weekday, dateLib.options, dateLib), className: classNames[UI.Weekday], key: String(weekday), style: styles?.[UI.Weekday], scope: "col" }, formatWeekdayName(weekday, dateLib.options, dateLib)))))),
34577
35205
  React__default.createElement(components.Weeks, { "data-animated-weeks": props.animate ? "true" : undefined, className: classNames[UI.Weeks], style: styles?.[UI.Weeks] }, calendarMonth.weeks.map((week) => {
34578
35206
  return (React__default.createElement(components.Week, { className: classNames[UI.Week], key: week.weekNumber, style: styles?.[UI.Week], week: week },
34579
- showWeekNumber && (
34580
- // biome-ignore lint/a11y/useSemanticElements: react component
34581
- React__default.createElement(components.WeekNumber, { week: week, style: styles?.[UI.WeekNumber], "aria-label": labelWeekNumber(week.weekNumber, {
35207
+ showWeekNumber && (React__default.createElement(components.WeekNumber, { week: week, style: styles?.[UI.WeekNumber], "aria-label": labelWeekNumber(week.weekNumber, {
34582
35208
  locale,
34583
35209
  }), className: classNames[UI.WeekNumber], scope: "row", role: "rowheader" }, formatWeekNumber(week.weekNumber, dateLib))),
34584
35210
  week.days.map((day) => {
@@ -34602,18 +35228,16 @@ function DayPicker(initialProps) {
34602
35228
  const ariaLabel = !isInteractive && !modifiers.hidden
34603
35229
  ? labelGridcell(date, modifiers, dateLib.options, dateLib)
34604
35230
  : undefined;
34605
- return (
34606
- // biome-ignore lint/a11y/useSemanticElements: react component
34607
- React__default.createElement(components.Day, { key: `${dateLib.format(date, "yyyy-MM-dd")}_${dateLib.format(day.displayMonth, "yyyy-MM")}`, day: day, modifiers: modifiers, className: className.join(" "), style: style, role: "gridcell", "aria-selected": modifiers.selected || undefined, "aria-label": ariaLabel, "data-day": dateLib.format(date, "yyyy-MM-dd"), "data-month": day.outside
34608
- ? dateLib.format(date, "yyyy-MM")
34609
- : undefined, "data-selected": modifiers.selected || undefined, "data-disabled": modifiers.disabled || undefined, "data-hidden": modifiers.hidden || undefined, "data-outside": day.outside || undefined, "data-focused": modifiers.focused || undefined, "data-today": modifiers.today || undefined }, !modifiers.hidden && isInteractive ? (React__default.createElement(components.DayButton, { className: classNames[UI.DayButton], style: styles?.[UI.DayButton], type: "button", day: day, modifiers: modifiers, disabled: modifiers.disabled || undefined, tabIndex: isFocusTarget(day) ? 0 : -1, "aria-label": labelDayButton(date, modifiers, dateLib.options, dateLib), onClick: handleDayClick(day, modifiers), onBlur: handleDayBlur(day, modifiers), onFocus: handleDayFocus(day, modifiers), onKeyDown: handleDayKeyDown(day, modifiers), onMouseEnter: handleDayMouseEnter(day, modifiers), onMouseLeave: handleDayMouseLeave(day, modifiers) }, formatDay(date, dateLib.options, dateLib))) : (!modifiers.hidden &&
35231
+ return (React__default.createElement(components.Day, { key: `${day.isoDate}_${day.displayMonthId}`, day: day, modifiers: modifiers, className: className.join(" "), style: style, role: "gridcell", "aria-selected": modifiers.selected || undefined, "aria-label": ariaLabel, "data-day": day.isoDate, "data-month": day.outside ? day.dateMonthId : undefined, "data-selected": modifiers.selected || undefined, "data-disabled": modifiers.disabled || undefined, "data-hidden": modifiers.hidden || undefined, "data-outside": day.outside || undefined, "data-focused": modifiers.focused || undefined, "data-today": modifiers.today || undefined }, !modifiers.hidden && isInteractive ? (React__default.createElement(components.DayButton, { className: classNames[UI.DayButton], style: styles?.[UI.DayButton], type: "button", day: day, modifiers: modifiers, disabled: (!modifiers.focused &&
35232
+ modifiers.disabled) ||
35233
+ undefined, "aria-disabled": (modifiers.focused &&
35234
+ modifiers.disabled) ||
35235
+ undefined, tabIndex: isFocusTarget(day) ? 0 : -1, "aria-label": labelDayButton(date, modifiers, dateLib.options, dateLib), onClick: handleDayClick(day, modifiers), onBlur: handleDayBlur(day, modifiers), onFocus: handleDayFocus(day, modifiers), onKeyDown: handleDayKeyDown(day, modifiers), onMouseEnter: handleDayMouseEnter(day, modifiers), onMouseLeave: handleDayMouseLeave(day, modifiers) }, formatDay(date, dateLib.options, dateLib))) : (!modifiers.hidden &&
34610
35236
  formatDay(day.date, dateLib.options, dateLib))));
34611
35237
  })));
34612
35238
  })))));
34613
35239
  })),
34614
- props.footer && (
34615
- // biome-ignore lint/a11y/useSemanticElements: react component
34616
- React__default.createElement(components.Footer, { className: classNames[UI.Footer], style: styles?.[UI.Footer], role: "status", "aria-live": "polite" }, props.footer)))));
35240
+ props.footer && (React__default.createElement(components.Footer, { className: classNames[UI.Footer], style: styles?.[UI.Footer], role: "status", "aria-live": "polite" }, props.footer)))));
34617
35241
  }
34618
35242
 
34619
35243
  function styleInject(css, ref) {
@@ -34643,7 +35267,7 @@ function styleInject(css, ref) {
34643
35267
  }
34644
35268
  }
34645
35269
 
34646
- var css_248z$3 = "/* Variables declaration */\n.rdp-root {\n --rdp-accent-color: blue; /* The accent color used for selected days and UI elements. */\n --rdp-accent-background-color: #f0f0ff; /* The accent background color used for selected days and UI elements. */\n\n --rdp-day-height: 44px; /* The height of the day cells. */\n --rdp-day-width: 44px; /* The width of the day cells. */\n\n --rdp-day_button-border-radius: 100%; /* The border radius of the day cells. */\n --rdp-day_button-border: 2px solid transparent; /* The border of the day cells. */\n --rdp-day_button-height: 42px; /* The height of the day cells. */\n --rdp-day_button-width: 42px; /* The width of the day cells. */\n\n --rdp-selected-border: 2px solid var(--rdp-accent-color); /* The border of the selected days. */\n --rdp-disabled-opacity: 0.5; /* The opacity of the disabled days. */\n --rdp-outside-opacity: 0.75; /* The opacity of the days outside the current month. */\n --rdp-today-color: var(--rdp-accent-color); /* The color of the today's date. */\n\n --rdp-dropdown-gap: 0.5rem; /* The gap between the dropdowns used in the month captons. */\n\n --rdp-months-gap: 2rem; /* The gap between the months in the multi-month view. */\n\n --rdp-nav_button-disabled-opacity: 0.5; /* The opacity of the disabled navigation buttons. */\n --rdp-nav_button-height: 2.25rem; /* The height of the navigation buttons. */\n --rdp-nav_button-width: 2.25rem; /* The width of the navigation buttons. */\n --rdp-nav-height: 2.75rem; /* The height of the navigation bar. */\n\n --rdp-range_middle-background-color: var(--rdp-accent-background-color); /* The color of the background for days in the middle of a range. */\n --rdp-range_middle-color: inherit; /* The color of the range text. */\n\n --rdp-range_start-color: white; /* The color of the range text. */\n --rdp-range_start-background: linear-gradient(\n var(--rdp-gradient-direction),\n transparent 50%,\n var(--rdp-range_middle-background-color) 50%\n ); /* Used for the background of the start of the selected range. */\n --rdp-range_start-date-background-color: var(--rdp-accent-color); /* The background color of the date when at the start of the selected range. */\n\n --rdp-range_end-background: linear-gradient(\n var(--rdp-gradient-direction),\n var(--rdp-range_middle-background-color) 50%,\n transparent 50%\n ); /* Used for the background of the end of the selected range. */\n --rdp-range_end-color: white; /* The color of the range text. */\n --rdp-range_end-date-background-color: var(--rdp-accent-color); /* The background color of the date when at the end of the selected range. */\n\n --rdp-week_number-border-radius: 100%; /* The border radius of the week number. */\n --rdp-week_number-border: 2px solid transparent; /* The border of the week number. */\n\n --rdp-week_number-height: var(--rdp-day-height); /* The height of the week number cells. */\n --rdp-week_number-opacity: 0.75; /* The opacity of the week number. */\n --rdp-week_number-width: var(--rdp-day-width); /* The width of the week number cells. */\n --rdp-weeknumber-text-align: center; /* The text alignment of the weekday cells. */\n\n --rdp-weekday-opacity: 0.75; /* The opacity of the weekday. */\n --rdp-weekday-padding: 0.5rem 0rem; /* The padding of the weekday. */\n --rdp-weekday-text-align: center; /* The text alignment of the weekday cells. */\n\n --rdp-gradient-direction: 90deg;\n\n --rdp-animation_duration: 0.3s;\n --rdp-animation_timing: cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n.rdp-root[dir=\"rtl\"] {\n --rdp-gradient-direction: -90deg;\n}\n\n.rdp-root[data-broadcast-calendar=\"true\"] {\n --rdp-outside-opacity: unset;\n}\n\n/* Root of the component. */\n.rdp-root {\n position: relative; /* Required to position the navigation toolbar. */\n box-sizing: border-box;\n}\n\n.rdp-root * {\n box-sizing: border-box;\n}\n\n.rdp-day {\n width: var(--rdp-day-width);\n height: var(--rdp-day-height);\n text-align: center;\n}\n\n.rdp-day_button {\n background: none;\n padding: 0;\n margin: 0;\n cursor: pointer;\n font: inherit;\n color: inherit;\n justify-content: center;\n align-items: center;\n display: flex;\n\n width: var(--rdp-day_button-width);\n height: var(--rdp-day_button-height);\n border: var(--rdp-day_button-border);\n border-radius: var(--rdp-day_button-border-radius);\n}\n\n.rdp-day_button:disabled {\n cursor: revert;\n}\n\n.rdp-caption_label {\n z-index: 1;\n\n position: relative;\n display: inline-flex;\n align-items: center;\n\n white-space: nowrap;\n border: 0;\n}\n\n.rdp-dropdown:focus-visible ~ .rdp-caption_label {\n outline: 5px auto Highlight;\n /* biome-ignore lint/suspicious/noDuplicateProperties: backward compatibility */\n outline: 5px auto -webkit-focus-ring-color;\n}\n\n.rdp-button_next,\n.rdp-button_previous {\n border: none;\n background: none;\n padding: 0;\n margin: 0;\n cursor: pointer;\n font: inherit;\n color: inherit;\n -moz-appearance: none;\n -webkit-appearance: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n position: relative;\n appearance: none;\n\n width: var(--rdp-nav_button-width);\n height: var(--rdp-nav_button-height);\n}\n\n.rdp-button_next:disabled,\n.rdp-button_next[aria-disabled=\"true\"],\n.rdp-button_previous:disabled,\n.rdp-button_previous[aria-disabled=\"true\"] {\n cursor: revert;\n\n opacity: var(--rdp-nav_button-disabled-opacity);\n}\n\n.rdp-chevron {\n display: inline-block;\n fill: var(--rdp-accent-color);\n}\n\n.rdp-root[dir=\"rtl\"] .rdp-nav .rdp-chevron {\n transform: rotate(180deg);\n transform-origin: 50%;\n}\n\n.rdp-dropdowns {\n position: relative;\n display: inline-flex;\n align-items: center;\n gap: var(--rdp-dropdown-gap);\n}\n.rdp-dropdown {\n z-index: 2;\n\n /* Reset */\n opacity: 0;\n appearance: none;\n position: absolute;\n inset-block-start: 0;\n inset-block-end: 0;\n inset-inline-start: 0;\n width: 100%;\n margin: 0;\n padding: 0;\n cursor: inherit;\n border: none;\n line-height: inherit;\n}\n\n.rdp-dropdown_root {\n position: relative;\n display: inline-flex;\n align-items: center;\n}\n\n.rdp-dropdown_root[data-disabled=\"true\"] .rdp-chevron {\n opacity: var(--rdp-disabled-opacity);\n}\n\n.rdp-month_caption {\n display: flex;\n align-content: center;\n height: var(--rdp-nav-height);\n font-weight: bold;\n font-size: large;\n}\n\n.rdp-root[data-nav-layout=\"around\"] .rdp-month,\n.rdp-root[data-nav-layout=\"after\"] .rdp-month {\n position: relative;\n}\n\n.rdp-root[data-nav-layout=\"around\"] .rdp-month_caption {\n justify-content: center;\n margin-inline-start: var(--rdp-nav_button-width);\n margin-inline-end: var(--rdp-nav_button-width);\n position: relative;\n}\n\n.rdp-root[data-nav-layout=\"around\"] .rdp-button_previous {\n position: absolute;\n inset-inline-start: 0;\n top: 0;\n height: var(--rdp-nav-height);\n display: inline-flex;\n}\n\n.rdp-root[data-nav-layout=\"around\"] .rdp-button_next {\n position: absolute;\n inset-inline-end: 0;\n top: 0;\n height: var(--rdp-nav-height);\n display: inline-flex;\n justify-content: center;\n}\n\n.rdp-months {\n position: relative;\n display: flex;\n flex-wrap: wrap;\n gap: var(--rdp-months-gap);\n max-width: fit-content;\n}\n\n.rdp-month_grid {\n border-collapse: collapse;\n}\n\n.rdp-nav {\n position: absolute;\n inset-block-start: 0;\n inset-inline-end: 0;\n\n display: flex;\n align-items: center;\n\n height: var(--rdp-nav-height);\n}\n\n.rdp-weekday {\n opacity: var(--rdp-weekday-opacity);\n padding: var(--rdp-weekday-padding);\n font-weight: 500;\n font-size: smaller;\n text-align: var(--rdp-weekday-text-align);\n text-transform: var(--rdp-weekday-text-transform);\n}\n\n.rdp-week_number {\n opacity: var(--rdp-week_number-opacity);\n font-weight: 400;\n font-size: small;\n height: var(--rdp-week_number-height);\n width: var(--rdp-week_number-width);\n border: var(--rdp-week_number-border);\n border-radius: var(--rdp-week_number-border-radius);\n text-align: var(--rdp-weeknumber-text-align);\n}\n\n/* DAY MODIFIERS */\n.rdp-today:not(.rdp-outside) {\n color: var(--rdp-today-color);\n}\n\n.rdp-selected {\n font-weight: bold;\n font-size: large;\n}\n\n.rdp-selected .rdp-day_button {\n border: var(--rdp-selected-border);\n}\n\n.rdp-outside {\n opacity: var(--rdp-outside-opacity);\n}\n\n.rdp-disabled {\n opacity: var(--rdp-disabled-opacity);\n}\n\n.rdp-hidden {\n visibility: hidden;\n color: var(--rdp-range_start-color);\n}\n\n.rdp-range_start {\n background: var(--rdp-range_start-background);\n}\n\n.rdp-range_start .rdp-day_button {\n background-color: var(--rdp-range_start-date-background-color);\n color: var(--rdp-range_start-color);\n}\n\n.rdp-range_middle {\n background-color: var(--rdp-range_middle-background-color);\n}\n\n.rdp-range_middle .rdp-day_button {\n border: unset;\n border-radius: unset;\n color: var(--rdp-range_middle-color);\n}\n\n.rdp-range_end {\n background: var(--rdp-range_end-background);\n color: var(--rdp-range_end-color);\n}\n\n.rdp-range_end .rdp-day_button {\n color: var(--rdp-range_start-color);\n background-color: var(--rdp-range_end-date-background-color);\n}\n\n.rdp-range_start.rdp-range_end {\n background: revert;\n}\n\n.rdp-focusable {\n cursor: pointer;\n}\n\n@keyframes rdp-slide_in_left {\n 0% {\n transform: translateX(-100%);\n }\n 100% {\n transform: translateX(0);\n }\n}\n\n@keyframes rdp-slide_in_right {\n 0% {\n transform: translateX(100%);\n }\n 100% {\n transform: translateX(0);\n }\n}\n\n@keyframes rdp-slide_out_left {\n 0% {\n transform: translateX(0);\n }\n 100% {\n transform: translateX(-100%);\n }\n}\n\n@keyframes rdp-slide_out_right {\n 0% {\n transform: translateX(0);\n }\n 100% {\n transform: translateX(100%);\n }\n}\n\n.rdp-weeks_before_enter {\n animation: rdp-slide_in_left var(--rdp-animation_duration)\n var(--rdp-animation_timing) forwards;\n}\n\n.rdp-weeks_before_exit {\n animation: rdp-slide_out_left var(--rdp-animation_duration)\n var(--rdp-animation_timing) forwards;\n}\n\n.rdp-weeks_after_enter {\n animation: rdp-slide_in_right var(--rdp-animation_duration)\n var(--rdp-animation_timing) forwards;\n}\n\n.rdp-weeks_after_exit {\n animation: rdp-slide_out_right var(--rdp-animation_duration)\n var(--rdp-animation_timing) forwards;\n}\n\n.rdp-root[dir=\"rtl\"] .rdp-weeks_after_enter {\n animation: rdp-slide_in_left var(--rdp-animation_duration)\n var(--rdp-animation_timing) forwards;\n}\n\n.rdp-root[dir=\"rtl\"] .rdp-weeks_before_exit {\n animation: rdp-slide_out_right var(--rdp-animation_duration)\n var(--rdp-animation_timing) forwards;\n}\n\n.rdp-root[dir=\"rtl\"] .rdp-weeks_before_enter {\n animation: rdp-slide_in_right var(--rdp-animation_duration)\n var(--rdp-animation_timing) forwards;\n}\n\n.rdp-root[dir=\"rtl\"] .rdp-weeks_after_exit {\n animation: rdp-slide_out_left var(--rdp-animation_duration)\n var(--rdp-animation_timing) forwards;\n}\n\n@keyframes rdp-fade_in {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n\n@keyframes rdp-fade_out {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n\n.rdp-caption_after_enter {\n animation: rdp-fade_in var(--rdp-animation_duration)\n var(--rdp-animation_timing) forwards;\n}\n\n.rdp-caption_after_exit {\n animation: rdp-fade_out var(--rdp-animation_duration)\n var(--rdp-animation_timing) forwards;\n}\n\n.rdp-caption_before_enter {\n animation: rdp-fade_in var(--rdp-animation_duration)\n var(--rdp-animation_timing) forwards;\n}\n\n.rdp-caption_before_exit {\n animation: rdp-fade_out var(--rdp-animation_duration)\n var(--rdp-animation_timing) forwards;\n}\n";
35270
+ var css_248z$3 = "/* Variables declaration */\n.rdp-root {\n --rdp-accent-color: blue; /* The accent color used for selected days and UI elements. */\n --rdp-accent-background-color: #f0f0ff; /* The accent background color used for selected days and UI elements. */\n\n --rdp-day-height: 44px; /* The height of the day cells. */\n --rdp-day-width: 44px; /* The width of the day cells. */\n\n --rdp-day_button-border-radius: 100%; /* The border radius of the day cells. */\n --rdp-day_button-border: 2px solid transparent; /* The border of the day cells. */\n --rdp-day_button-height: 42px; /* The height of the day cells. */\n --rdp-day_button-width: 42px; /* The width of the day cells. */\n\n --rdp-selected-border: 2px solid var(--rdp-accent-color); /* The border of the selected days. */\n --rdp-disabled-opacity: 0.5; /* The opacity of the disabled days. */\n --rdp-outside-opacity: 0.75; /* The opacity of the days outside the current month. */\n --rdp-today-color: var(--rdp-accent-color); /* The color of the today's date. */\n\n --rdp-dropdown-gap: 0.5rem; /* The gap between the dropdowns used in the month captons. */\n\n --rdp-months-gap: 2rem; /* The gap between the months in the multi-month view. */\n\n --rdp-nav_button-disabled-opacity: 0.5; /* The opacity of the disabled navigation buttons. */\n --rdp-nav_button-height: 2.25rem; /* The height of the navigation buttons. */\n --rdp-nav_button-width: 2.25rem; /* The width of the navigation buttons. */\n --rdp-nav-height: 2.75rem; /* The height of the navigation bar. */\n\n --rdp-range_middle-background-color: var(--rdp-accent-background-color); /* The color of the background for days in the middle of a range. */\n --rdp-range_middle-color: inherit; /* The color of the range text. */\n\n --rdp-range_start-color: white; /* The color of the range text. */\n --rdp-range_start-background: linear-gradient(\n var(--rdp-gradient-direction),\n transparent 50%,\n var(--rdp-range_middle-background-color) 50%\n ); /* Used for the background of the start of the selected range. */\n --rdp-range_start-date-background-color: var(--rdp-accent-color); /* The background color of the date when at the start of the selected range. */\n\n --rdp-range_end-background: linear-gradient(\n var(--rdp-gradient-direction),\n var(--rdp-range_middle-background-color) 50%,\n transparent 50%\n ); /* Used for the background of the end of the selected range. */\n --rdp-range_end-color: white; /* The color of the range text. */\n --rdp-range_end-date-background-color: var(--rdp-accent-color); /* The background color of the date when at the end of the selected range. */\n\n --rdp-week_number-border-radius: 100%; /* The border radius of the week number. */\n --rdp-week_number-border: 2px solid transparent; /* The border of the week number. */\n\n --rdp-week_number-height: var(--rdp-day-height); /* The height of the week number cells. */\n --rdp-week_number-opacity: 0.75; /* The opacity of the week number. */\n --rdp-week_number-width: var(--rdp-day-width); /* The width of the week number cells. */\n --rdp-weeknumber-text-align: center; /* The text alignment of the weekday cells. */\n\n --rdp-weekday-opacity: 0.75; /* The opacity of the weekday. */\n --rdp-weekday-padding: 0.5rem 0rem; /* The padding of the weekday. */\n --rdp-weekday-text-align: center; /* The text alignment of the weekday cells. */\n\n --rdp-gradient-direction: 90deg;\n\n --rdp-animation_duration: 0.3s;\n --rdp-animation_timing: cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n.rdp-root[dir=\"rtl\"] {\n --rdp-gradient-direction: -90deg;\n}\n\n.rdp-root[data-broadcast-calendar=\"true\"] {\n --rdp-outside-opacity: unset;\n}\n\n/* Root of the component. */\n.rdp-root {\n position: relative; /* Required to position the navigation toolbar. */\n box-sizing: border-box;\n}\n\n.rdp-root * {\n box-sizing: border-box;\n}\n\n.rdp-day {\n width: var(--rdp-day-width);\n height: var(--rdp-day-height);\n text-align: center;\n}\n\n.rdp-day_button {\n background: none;\n padding: 0;\n margin: 0;\n cursor: pointer;\n font: inherit;\n color: inherit;\n justify-content: center;\n align-items: center;\n display: flex;\n\n width: var(--rdp-day_button-width);\n height: var(--rdp-day_button-height);\n border: var(--rdp-day_button-border);\n border-radius: var(--rdp-day_button-border-radius);\n}\n\n.rdp-day_button:disabled {\n cursor: revert;\n}\n\n.rdp-caption_label {\n z-index: 1;\n\n position: relative;\n display: inline-flex;\n align-items: center;\n\n white-space: nowrap;\n border: 0;\n}\n\n.rdp-dropdown:focus-visible ~ .rdp-caption_label {\n outline: 5px auto Highlight;\n /* biome-ignore lint/suspicious/noDuplicateProperties: backward compatibility */\n outline: 5px auto -webkit-focus-ring-color;\n}\n\n.rdp-button_next,\n.rdp-button_previous {\n border: none;\n background: none;\n padding: 0;\n margin: 0;\n cursor: pointer;\n font: inherit;\n color: inherit;\n -moz-appearance: none;\n -webkit-appearance: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n position: relative;\n appearance: none;\n\n width: var(--rdp-nav_button-width);\n height: var(--rdp-nav_button-height);\n}\n\n.rdp-button_next:disabled,\n.rdp-button_next[aria-disabled=\"true\"],\n.rdp-button_previous:disabled,\n.rdp-button_previous[aria-disabled=\"true\"] {\n cursor: revert;\n\n opacity: var(--rdp-nav_button-disabled-opacity);\n}\n\n.rdp-chevron {\n display: inline-block;\n fill: var(--rdp-accent-color);\n}\n\n.rdp-root[dir=\"rtl\"] .rdp-nav .rdp-chevron {\n transform: rotate(180deg);\n transform-origin: 50%;\n}\n\n.rdp-dropdowns {\n position: relative;\n display: inline-flex;\n align-items: center;\n gap: var(--rdp-dropdown-gap);\n}\n.rdp-dropdown {\n z-index: 2;\n\n /* Reset */\n opacity: 0;\n appearance: none;\n position: absolute;\n inset-block-start: 0;\n inset-block-end: 0;\n inset-inline-start: 0;\n width: 100%;\n margin: 0;\n padding: 0;\n cursor: inherit;\n border: none;\n line-height: inherit;\n}\n\n.rdp-dropdown_root {\n position: relative;\n display: inline-flex;\n align-items: center;\n}\n\n.rdp-dropdown_root[data-disabled=\"true\"] .rdp-chevron {\n opacity: var(--rdp-disabled-opacity);\n}\n\n.rdp-month_caption {\n display: flex;\n align-content: center;\n height: var(--rdp-nav-height);\n font-weight: bold;\n font-size: large;\n}\n\n.rdp-root[data-nav-layout=\"around\"] .rdp-month,\n.rdp-root[data-nav-layout=\"after\"] .rdp-month {\n position: relative;\n}\n\n.rdp-root[data-nav-layout=\"around\"] .rdp-month_caption {\n justify-content: center;\n margin-inline-start: var(--rdp-nav_button-width);\n margin-inline-end: var(--rdp-nav_button-width);\n position: relative;\n}\n\n.rdp-root[data-nav-layout=\"around\"] .rdp-button_previous {\n position: absolute;\n inset-inline-start: 0;\n top: 0;\n height: var(--rdp-nav-height);\n display: inline-flex;\n}\n\n.rdp-root[data-nav-layout=\"around\"] .rdp-button_next {\n position: absolute;\n inset-inline-end: 0;\n top: 0;\n height: var(--rdp-nav-height);\n display: inline-flex;\n justify-content: center;\n}\n\n.rdp-months {\n position: relative;\n display: flex;\n flex-wrap: wrap;\n gap: var(--rdp-months-gap);\n max-width: fit-content;\n}\n\n.rdp-month_grid {\n border-collapse: collapse;\n}\n\n.rdp-nav {\n position: absolute;\n inset-block-start: 0;\n inset-inline-end: 0;\n\n display: flex;\n align-items: center;\n\n height: var(--rdp-nav-height);\n}\n\n.rdp-weekday {\n opacity: var(--rdp-weekday-opacity);\n padding: var(--rdp-weekday-padding);\n font-weight: 500;\n font-size: smaller;\n text-align: var(--rdp-weekday-text-align);\n text-transform: var(--rdp-weekday-text-transform);\n}\n\n.rdp-week_number {\n opacity: var(--rdp-week_number-opacity);\n font-weight: 400;\n font-size: small;\n height: var(--rdp-week_number-height);\n width: var(--rdp-week_number-width);\n border: var(--rdp-week_number-border);\n border-radius: var(--rdp-week_number-border-radius);\n text-align: var(--rdp-weeknumber-text-align);\n}\n\n/* DAY MODIFIERS */\n.rdp-today:not(.rdp-outside) {\n color: var(--rdp-today-color);\n}\n\n.rdp-selected {\n font-weight: bold;\n font-size: large;\n}\n\n.rdp-selected .rdp-day_button {\n border: var(--rdp-selected-border);\n}\n\n.rdp-outside {\n opacity: var(--rdp-outside-opacity);\n}\n\n.rdp-disabled:not(.rdp-selected) {\n opacity: var(--rdp-disabled-opacity);\n}\n\n.rdp-hidden {\n visibility: hidden;\n color: var(--rdp-range_start-color);\n}\n\n.rdp-range_start {\n background: var(--rdp-range_start-background);\n}\n\n.rdp-range_start .rdp-day_button {\n background-color: var(--rdp-range_start-date-background-color);\n color: var(--rdp-range_start-color);\n}\n\n.rdp-range_middle {\n background-color: var(--rdp-range_middle-background-color);\n}\n\n.rdp-range_middle .rdp-day_button {\n border: unset;\n border-radius: unset;\n color: var(--rdp-range_middle-color);\n}\n\n.rdp-range_end {\n background: var(--rdp-range_end-background);\n color: var(--rdp-range_end-color);\n}\n\n.rdp-range_end .rdp-day_button {\n color: var(--rdp-range_start-color);\n background-color: var(--rdp-range_end-date-background-color);\n}\n\n.rdp-range_start.rdp-range_end {\n background: revert;\n}\n\n.rdp-focusable {\n cursor: pointer;\n}\n\n@keyframes rdp-slide_in_left {\n 0% {\n transform: translateX(-100%);\n }\n 100% {\n transform: translateX(0);\n }\n}\n\n@keyframes rdp-slide_in_right {\n 0% {\n transform: translateX(100%);\n }\n 100% {\n transform: translateX(0);\n }\n}\n\n@keyframes rdp-slide_out_left {\n 0% {\n transform: translateX(0);\n }\n 100% {\n transform: translateX(-100%);\n }\n}\n\n@keyframes rdp-slide_out_right {\n 0% {\n transform: translateX(0);\n }\n 100% {\n transform: translateX(100%);\n }\n}\n\n.rdp-weeks_before_enter {\n animation: rdp-slide_in_left var(--rdp-animation_duration)\n var(--rdp-animation_timing) forwards;\n}\n\n.rdp-weeks_before_exit {\n animation: rdp-slide_out_left var(--rdp-animation_duration)\n var(--rdp-animation_timing) forwards;\n}\n\n.rdp-weeks_after_enter {\n animation: rdp-slide_in_right var(--rdp-animation_duration)\n var(--rdp-animation_timing) forwards;\n}\n\n.rdp-weeks_after_exit {\n animation: rdp-slide_out_right var(--rdp-animation_duration)\n var(--rdp-animation_timing) forwards;\n}\n\n.rdp-root[dir=\"rtl\"] .rdp-weeks_after_enter {\n animation: rdp-slide_in_left var(--rdp-animation_duration)\n var(--rdp-animation_timing) forwards;\n}\n\n.rdp-root[dir=\"rtl\"] .rdp-weeks_before_exit {\n animation: rdp-slide_out_right var(--rdp-animation_duration)\n var(--rdp-animation_timing) forwards;\n}\n\n.rdp-root[dir=\"rtl\"] .rdp-weeks_before_enter {\n animation: rdp-slide_in_right var(--rdp-animation_duration)\n var(--rdp-animation_timing) forwards;\n}\n\n.rdp-root[dir=\"rtl\"] .rdp-weeks_after_exit {\n animation: rdp-slide_out_left var(--rdp-animation_duration)\n var(--rdp-animation_timing) forwards;\n}\n\n@keyframes rdp-fade_in {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n\n@keyframes rdp-fade_out {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n\n.rdp-caption_after_enter {\n animation: rdp-fade_in var(--rdp-animation_duration)\n var(--rdp-animation_timing) forwards;\n}\n\n.rdp-caption_after_exit {\n animation: rdp-fade_out var(--rdp-animation_duration)\n var(--rdp-animation_timing) forwards;\n}\n\n.rdp-caption_before_enter {\n animation: rdp-fade_in var(--rdp-animation_duration)\n var(--rdp-animation_timing) forwards;\n}\n\n.rdp-caption_before_exit {\n animation: rdp-fade_out var(--rdp-animation_duration)\n var(--rdp-animation_timing) forwards;\n}\n";
34647
35271
  styleInject(css_248z$3);
34648
35272
 
34649
35273
  var reactInputMask = {exports: {}};
@@ -39325,11 +39949,11 @@ const TableComponent = ({ idTable, dataSource, contentColumns, headerColumns, se
39325
39949
  }, []);
39326
39950
  return (jsx("div", { ref: containerRef, className: "r-gridtable", style: { maxHeight: `${height ? `${height}px` : 'auto'}` }, children: jsxs("table", { style: { width: '100%' }, role: "presentation", children: [jsx(RenderColGroup, { contentColumns: contentColumns }), jsx("thead", { className: "r-gridheader", role: "rowgroup", children: headerColumns.map((element, indexParent) => {
39327
39951
  return (jsx("tr", { className: "r-row", role: "row", children: element?.map((col, index) => {
39328
- return (jsx(HeaderTableCol, { col: col, idTable: idTable ?? '', dataSource: dataSource, indexCol: index, indexParent: indexParent, isMulti: isMulti ?? false, objHeaderWidthFixLeft: objHeaderWidthFixLeft, objHeaderWidthFixRight: objHeaderWidthFixRight, selectEnable: selectEnable ?? false, selectedRows: selectedRows, setSelectedRows: setSelectedRows, container: containerRef, filterBy: filterBy, orderBy: orderBy, optionsFilter: optionsFilter, allowFiltering: allowFiltering, allowSorting: allowSorting, formatSetting: formatSetting, changeFilter: (val) => {
39952
+ return (jsx(HeaderTableCol, { col: col, idTable: idTable ?? '', dataSource: dataSource, fieldKey: fieldKey, indexCol: index, indexParent: indexParent, isMulti: isMulti ?? false, objHeaderWidthFixLeft: objHeaderWidthFixLeft, objHeaderWidthFixRight: objHeaderWidthFixRight, selectEnable: selectEnable ?? false, selectedRows: selectedRows, setSelectedRows: setSelectedRows, container: containerRef, filterBy: filterBy, orderBy: orderBy, optionsFilter: optionsFilter, allowFiltering: allowFiltering, allowSorting: allowSorting, formatSetting: formatSetting, changeFilter: (val) => {
39329
39953
  setFilterBy([...val]);
39330
39954
  }, changeOrder: (val) => {
39331
39955
  setOrderBy([...val]);
39332
- }, columns: contentColumns, setContentColumns: setContentColumns, fisrtObjWidthFixRight: fisrtObjWidthFixRight, lastObjWidthFixLeft: lastObjWidthFixLeft, totalCount: totalCount }, `header-${indexParent}-${index}`));
39956
+ }, columns: contentColumns, setContentColumns: setContentColumns, fisrtObjWidthFixRight: fisrtObjWidthFixRight, lastObjWidthFixLeft: lastObjWidthFixLeft }, `header-${indexParent}-${index}`));
39333
39957
  }) }, `header-${-indexParent}`));
39334
39958
  }) }), jsxs("tbody", { className: "r-gridcontent", role: "rowgroup", children: [jsx("tr", { style: { height: offsetY } }), filteredData.slice(startIndex, endIndex).map((row) => {
39335
39959
  const indexRow = row.indexRow;
@@ -40042,17 +40666,35 @@ const SettingColumn = React__default.memo((props) => {
40042
40666
  }) }) })] }), jsxs("div", { style: { boxShadow: '0 4px 24px 0 rgb(34 41 47 / 10%)' }, className: "d-flex justify-content-between align-items-center w-100 py-75 px-1", children: [jsx("div", { children: settingColumns?.updatedDate && (jsxs("p", { children: [jsxs("strong", { children: [t('Update date'), ": "] }), " ", jsx("span", { children: settingColumns.updatedDate ? formatDateTime(settingColumns.updatedDate, 'DD/MM/yyyy HH:mm') : '' }), jsxs("strong", { className: "ms-2", children: [t('Editor'), ": "] }), " ", jsx("span", { children: settingColumns.updatedByName })] })) }), jsxs("div", { children: [resetDefaultColumns && (jsx(Button$1$1, { color: "primary", onClick: () => messageBoxConfirm(t, handleResetColumns, {}, 'Do you want to reset the default settings?'), className: "me-1", children: t('Reset') })), jsx(Button$1$1, { color: "primary", onClick: handleSubmit, className: "me-1", children: t('Confirm') }), jsx(Button$1$1, { color: "secondary", onClick: handleCancel, outline: true, children: t('Close') })] })] })] }));
40043
40667
  });
40044
40668
 
40045
- const ToolbarBottom = ({ handleAdd, handleDuplicate, handleInsertBefore, handleInsertAfter, handleDeleteAll, setOpenPopupSetupColumn, focusRow, editDisable, addDisable, buttonSetting, toolbarSetting }) => {
40669
+ const ToolbarBottom = ({ handleAdd, handleDuplicate, handleInsertBefore, handleInsertAfter, handleDeleteAll, setOpenPopupSetupColumn, focusRow, editDisable, addDisable, buttonSetting, toolbarSetting, }) => {
40046
40670
  const { t } = useTranslation();
40047
- return (jsx("div", { id: "table_custom_bottom_toolbar", className: "r-toolbar r-toolbar-bottom", role: "toolbar", "aria-disabled": "false", "aria-haspopup": "false", "aria-orientation": "horizontal", children: jsxs("div", { className: "r-toolbar-items", children: [jsxs("div", { className: "r-toolbar-left", children: [jsxs("div", { className: classNames$1('r-toolbar-item d-flex', { 'd-none': editDisable || addDisable }), "aria-disabled": "false", children: [jsx(Button$1$1, { color: "success", outline: true, onClick: () => handleAdd(1), className: "d-flex", children: t('Add item') }), !!buttonSetting?.disableAddMulti && (jsxs(UncontrolledDropdown, { className: "nav-item", children: [jsx(DropdownToggle$1, { tag: "div", className: "me-0 d-flex", children: jsx(Button$1$1, { type: "button", color: "success", outline: true, style: { marginLeft: -1 }, className: "px-25", children: jsx("svg", { fill: "#28c76f", height: "15", width: "20", viewBox: "0 0 20 20", children: jsx("path", { d: "M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z" }) }) }) }), jsxs(DropdownMenu$1, { className: "formula-dropdown icon-dropdown p-0", children: [jsx(DropdownItem$1, { className: "py-25", tag: "div", onClick: () => handleAdd(10), children: "10 h\u00E0ng" }), jsx(DropdownItem$1, { className: "py-25", tag: "div", onClick: () => handleAdd(20), children: "20 h\u00E0ng" }), jsx(DropdownItem$1, { className: "py-25", tag: "div", onClick: () => handleAdd(30), children: "30 h\u00E0ng" }), jsx(DropdownItem$1, { className: "py-25", tag: "div", onClick: () => handleAdd(40), children: "40 h\u00E0ng" }), jsx(DropdownItem$1, { className: "py-25", tag: "div", onClick: () => handleAdd(50), children: "50 h\u00E0ng" }), jsx(DropdownItem$1, { className: "py-25", tag: "div", onClick: () => handleAdd(100), children: "100 h\u00E0ng" }), jsx(DropdownItem$1, { className: "py-25", tag: "div", onClick: () => handleAdd(1000), children: "1000 h\u00E0ng" })] })] }))] }), (focusRow ?? -1) > -1 ? (jsxs(Fragment$1, { children: [jsx("div", { className: classNames$1('r-toolbar-item', { 'd-none': editDisable || addDisable || buttonSetting?.duplicateDisable }), "aria-disabled": "false", children: jsx(Button$1$1, { color: "success", outline: true, onClick: () => {
40671
+ return (jsx("div", { id: "table_custom_bottom_toolbar", className: "r-toolbar r-toolbar-bottom", role: "toolbar", "aria-disabled": "false", "aria-haspopup": "false", "aria-orientation": "horizontal", children: jsxs("div", { className: "r-toolbar-items", children: [jsxs("div", { className: "r-toolbar-left", children: [jsxs("div", { className: classNames$1('r-toolbar-item d-flex', {
40672
+ 'd-none': editDisable || addDisable,
40673
+ }), "aria-disabled": "false", children: [jsx(Button$1$1, { color: "success", outline: true, onClick: () => handleAdd(1), className: "d-flex", children: t('Add item') }), buttonSetting?.disableAddMulti === true && (jsxs(UncontrolledDropdown, { className: "nav-item", children: [jsx(DropdownToggle$1, { tag: "div", className: "me-0 d-flex", children: jsx(Button$1$1, { type: "button", color: "success", outline: true, style: { marginLeft: -1 }, className: "px-25", children: jsx("svg", { fill: "#28c76f", height: "15", width: "20", viewBox: "0 0 20 20", children: jsx("path", { d: "M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z" }) }) }) }), jsxs(DropdownMenu$1, { className: "formula-dropdown icon-dropdown p-0", children: [jsx(DropdownItem$1, { className: "py-25", tag: "div", onClick: () => handleAdd(10), children: "10 h\u00E0ng" }), jsx(DropdownItem$1, { className: "py-25", tag: "div", onClick: () => handleAdd(20), children: "20 h\u00E0ng" }), jsx(DropdownItem$1, { className: "py-25", tag: "div", onClick: () => handleAdd(30), children: "30 h\u00E0ng" }), jsx(DropdownItem$1, { className: "py-25", tag: "div", onClick: () => handleAdd(40), children: "40 h\u00E0ng" }), jsx(DropdownItem$1, { className: "py-25", tag: "div", onClick: () => handleAdd(50), children: "50 h\u00E0ng" }), jsx(DropdownItem$1, { className: "py-25", tag: "div", onClick: () => handleAdd(100), children: "100 h\u00E0ng" }), jsx(DropdownItem$1, { className: "py-25", tag: "div", onClick: () => handleAdd(1000), children: "1000 h\u00E0ng" })] })] }))] }), (focusRow ?? -1) > -1 ? (jsxs(Fragment$1, { children: [jsx("div", { className: classNames$1('r-toolbar-item', {
40674
+ 'd-none': editDisable ||
40675
+ addDisable ||
40676
+ buttonSetting?.duplicateDisable,
40677
+ }), "aria-disabled": "false", children: jsx(Button$1$1, { color: "success", outline: true, onClick: () => {
40048
40678
  handleDuplicate();
40049
- }, className: "d-flex", children: t('Duplicate') }) }), jsx("div", { className: classNames$1('r-toolbar-item', { 'd-none': editDisable || addDisable || buttonSetting?.insertBeforeDisable }), "aria-disabled": "false", children: jsx(Button$1$1, { color: "success", outline: true, onClick: handleInsertBefore, className: "d-flex", children: t('Insert item before') }) }), jsx("div", { className: classNames$1('r-toolbar-item', { 'd-none': editDisable || addDisable || buttonSetting?.insertAfterDisable }), "aria-disabled": "false", children: jsx(Button$1$1, { color: "success", outline: true, onClick: handleInsertAfter, className: "d-flex", children: t('Insert item after') }) })] })) : (jsx(Fragment$1, { children: " " })), jsx("div", { className: classNames$1('r-toolbar-item', { 'd-none': editDisable || buttonSetting?.deleteAllDisable }), "aria-disabled": "false", children: jsx(Button$1$1, { color: "primary", outline: true, onClick: handleDeleteAll, className: "d-flex", children: t('Delete all item') }) }), toolbarSetting?.toolbarBottomOptions?.map((item, index) => {
40679
+ }, className: "d-flex", children: t('Duplicate') }) }), jsx("div", { className: classNames$1('r-toolbar-item', {
40680
+ 'd-none': editDisable ||
40681
+ addDisable ||
40682
+ buttonSetting?.insertBeforeDisable,
40683
+ }), "aria-disabled": "false", children: jsx(Button$1$1, { color: "success", outline: true, onClick: handleInsertBefore, className: "d-flex", children: t('Insert item before') }) }), jsx("div", { className: classNames$1('r-toolbar-item', {
40684
+ 'd-none': editDisable ||
40685
+ addDisable ||
40686
+ buttonSetting?.insertAfterDisable,
40687
+ }), "aria-disabled": "false", children: jsx(Button$1$1, { color: "success", outline: true, onClick: handleInsertAfter, className: "d-flex", children: t('Insert item after') }) })] })) : (jsx(Fragment$1, { children: " " })), jsx("div", { className: classNames$1('r-toolbar-item', {
40688
+ 'd-none': editDisable || buttonSetting?.deleteAllDisable,
40689
+ }), "aria-disabled": "false", children: jsx(Button$1$1, { color: "primary", outline: true, onClick: handleDeleteAll, className: "d-flex", children: t('Delete all item') }) }), toolbarSetting?.toolbarBottomOptions?.map((item, index) => {
40050
40690
  return (item.align === 'left' && (jsx("div", { className: "r-toolbar-item", "aria-disabled": "false", children: item.template() }, `toolbar-bottom-left-${index}`)));
40051
40691
  })] }), jsx("div", { className: "r-toolbar-center", children: toolbarSetting?.toolbarBottomOptions?.map((item, index) => {
40052
40692
  return (item.align === 'center' && (jsx("div", { className: "r-toolbar-item", "aria-disabled": "false", children: item.template() }, `toolbar-bottom-center-${index}`)));
40053
40693
  }) }), jsxs("div", { className: "r-toolbar-right", children: [toolbarSetting?.toolbarBottomOptions?.map((item, index) => {
40054
40694
  return (item.align === 'right' && (jsx("div", { className: "r-toolbar-item", "aria-disabled": "false", children: item.template() }, `toolbar-bottom-right-${index}`)));
40055
- }), !toolbarSetting?.hiddenSetting && (jsxs(Fragment$1, { children: [jsx("div", { className: classNames$1('r-toolbar-item me-25'), "aria-disabled": "false", children: jsx(SvgSettings, { className: "text-primary cursor-pointer", onClick: () => setOpenPopupSetupColumn(true) }) }), jsx("div", { className: classNames$1('r-toolbar-item me-25', { 'd-none': editDisable || addDisable }), "aria-disabled": "false", children: jsxs(UncontrolledDropdown, { className: "dropdown-user nav-item", children: [jsx(DropdownToggle$1, { tag: "div", color: "primary", onClick: (e) => e.preventDefault(), children: jsx(SvgInfo, { className: "cursor-pointer text-primary" }) }), jsx(DropdownMenu$1, { className: "formula-dropdown icon-dropdown", children: jsxs("ul", { className: "mb-0 pe-50", children: [jsx("li", { style: { fontSize: 13 }, children: "Nh\u1EA5n v\u00E0o c\u1ED9t STT \u0111\u1EC3 ch\u1ECDn h\u00E0ng v\u00E0 nh\u1EA5n Ctrl + D \u0111\u1EC3 nh\u00E2n b\u1EA3n" }), jsx("li", { style: { fontSize: 13 }, children: "Ch\u1ECDn \u00F4 v\u00E0 Ctrl + V \u0111\u1EC3 d\u00E1n th\u00F4ng tin t\u1EEB excel" }), jsx("li", { style: { fontSize: 13 }, children: "Nh\u1EA5n v\u00E0o c\u1ED9t STT \u0111\u1EC3 ch\u1ECDn h\u00E0ng v\u00E0 nh\u1EA5n Ctrl + C \u0111\u1EC3 sao ch\u00E9p h\u00E0ng" }), jsx("li", { style: { fontSize: 13 }, children: "Nh\u1EA5n v\u00E0o c\u1ED9t STT \u0111\u1EC3 ch\u1ECDn h\u00E0ng v\u00E0 nh\u1EA5n Ctrl + V \u0111\u1EC3 d\u00E1n h\u00E0ng" }), jsx("li", { style: { fontSize: 13 }, children: "Nh\u1EA5n Ctrl ho\u1EB7c Alt + Shift + \u2193 \u0111\u1EC3 sao ch\u00E9p d\u1EEF li\u1EC7u \u00F4 cho c\u00E1c d\u00F2ng d\u01B0\u1EDBi" }), jsx("li", { style: { fontSize: 13 }, children: "Nh\u1EA5n Ctrl ho\u1EB7c Alt + Shift + \u2191 \u0111\u1EC3 sao ch\u00E9p d\u1EEF li\u1EC7u \u00F4 cho c\u00E1c d\u00F2ng tr\u00EAn" })] }) })] }) })] }))] })] }) }));
40695
+ }), !toolbarSetting?.hiddenSetting && (jsxs(Fragment$1, { children: [jsx("div", { className: classNames$1('r-toolbar-item me-25'), "aria-disabled": "false", children: jsx(SvgSettings, { className: "text-primary cursor-pointer", onClick: () => setOpenPopupSetupColumn(true) }) }), jsx("div", { className: classNames$1('r-toolbar-item me-25', {
40696
+ 'd-none': editDisable || addDisable,
40697
+ }), "aria-disabled": "false", children: jsxs(UncontrolledDropdown, { className: "dropdown-user nav-item", children: [jsx(DropdownToggle$1, { tag: "div", color: "primary", onClick: (e) => e.preventDefault(), children: jsx(SvgInfo, { className: "cursor-pointer text-primary" }) }), jsx(DropdownMenu$1, { className: "formula-dropdown icon-dropdown", children: jsxs("ul", { className: "mb-0 pe-50", children: [jsx("li", { style: { fontSize: 13 }, children: "Nh\u1EA5n v\u00E0o c\u1ED9t STT \u0111\u1EC3 ch\u1ECDn h\u00E0ng v\u00E0 nh\u1EA5n Ctrl + D \u0111\u1EC3 nh\u00E2n b\u1EA3n" }), jsx("li", { style: { fontSize: 13 }, children: "Ch\u1ECDn \u00F4 v\u00E0 Ctrl + V \u0111\u1EC3 d\u00E1n th\u00F4ng tin t\u1EEB excel" }), jsx("li", { style: { fontSize: 13 }, children: "Nh\u1EA5n v\u00E0o c\u1ED9t STT \u0111\u1EC3 ch\u1ECDn h\u00E0ng v\u00E0 nh\u1EA5n Ctrl + C \u0111\u1EC3 sao ch\u00E9p h\u00E0ng" }), jsx("li", { style: { fontSize: 13 }, children: "Nh\u1EA5n v\u00E0o c\u1ED9t STT \u0111\u1EC3 ch\u1ECDn h\u00E0ng v\u00E0 nh\u1EA5n Ctrl + V \u0111\u1EC3 d\u00E1n h\u00E0ng" }), jsx("li", { style: { fontSize: 13 }, children: "Nh\u1EA5n Ctrl ho\u1EB7c Alt + Shift + \u2193 \u0111\u1EC3 sao ch\u00E9p d\u1EEF li\u1EC7u \u00F4 cho c\u00E1c d\u00F2ng d\u01B0\u1EDBi" }), jsx("li", { style: { fontSize: 13 }, children: "Nh\u1EA5n Ctrl ho\u1EB7c Alt + Shift + \u2191 \u0111\u1EC3 sao ch\u00E9p d\u1EEF li\u1EC7u \u00F4 cho c\u00E1c d\u00F2ng tr\u00EAn" })] }) })] }) })] }))] })] }) }));
40056
40698
  };
40057
40699
 
40058
40700
  const RenderToolbarTop = ({ toolbarTopOption, maximize, setMaximize }) => {