@economic/taco 2.34.0 → 2.35.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. package/dist/components/Drawer/Context.d.ts +1 -0
  2. package/dist/components/Drawer/Drawer.d.ts +6 -0
  3. package/dist/components/Icon/components/DocumentSigned.d.ts +3 -0
  4. package/dist/components/Icon/components/Home2.d.ts +3 -0
  5. package/dist/components/Icon/components/Id.d.ts +3 -0
  6. package/dist/components/Icon/components/MastercardOs.d.ts +3 -0
  7. package/dist/components/Icon/components/NovemberFirst.d.ts +3 -0
  8. package/dist/components/Icon/components/index.d.ts +1 -1
  9. package/dist/components/Input/Input.d.ts +1 -1
  10. package/dist/components/Menu/components/Item.d.ts +1 -1
  11. package/dist/components/Menu/components/Link.d.ts +1 -1
  12. package/dist/components/Navigation2/components/Link.d.ts +1 -1
  13. package/dist/components/Provider/Localization.d.ts +1 -0
  14. package/dist/components/Select2/Select2.d.ts +25 -4
  15. package/dist/components/Select2/components/Option.d.ts +2 -2
  16. package/dist/components/Select2/components/Search.d.ts +1 -1
  17. package/dist/components/Table3/components/Columns/Internal/EditingActionsMenu.d.ts +1 -0
  18. package/dist/components/Table3/features/useTableEditing.d.ts +0 -1
  19. package/dist/components/Table3/listeners/useTableEditingListener.d.ts +3 -1
  20. package/dist/components/Tag/Tag.d.ts +1 -1
  21. package/dist/esm/index.css +4 -0
  22. package/dist/esm/packages/taco/src/components/Datepicker/Datepicker.js +13 -3
  23. package/dist/esm/packages/taco/src/components/Datepicker/Datepicker.js.map +1 -1
  24. package/dist/esm/packages/taco/src/components/Drawer/Context.js +1 -0
  25. package/dist/esm/packages/taco/src/components/Drawer/Context.js.map +1 -1
  26. package/dist/esm/packages/taco/src/components/Drawer/Drawer.js +3 -1
  27. package/dist/esm/packages/taco/src/components/Drawer/Drawer.js.map +1 -1
  28. package/dist/esm/packages/taco/src/components/Drawer/components/Content.js +41 -8
  29. package/dist/esm/packages/taco/src/components/Drawer/components/Content.js.map +1 -1
  30. package/dist/esm/packages/taco/src/components/Drawer/util.js +1 -1
  31. package/dist/esm/packages/taco/src/components/Drawer/util.js.map +1 -1
  32. package/dist/esm/packages/taco/src/components/Icon/components/DocumentSigned.js +19 -0
  33. package/dist/esm/packages/taco/src/components/Icon/components/DocumentSigned.js.map +1 -0
  34. package/dist/esm/packages/taco/src/components/Icon/components/Home2.js +19 -0
  35. package/dist/esm/packages/taco/src/components/Icon/components/Home2.js.map +1 -0
  36. package/dist/esm/packages/taco/src/components/Icon/components/Id.js +19 -0
  37. package/dist/esm/packages/taco/src/components/Icon/components/Id.js.map +1 -0
  38. package/dist/esm/packages/taco/src/components/Icon/components/MastercardOs.js +23 -0
  39. package/dist/esm/packages/taco/src/components/Icon/components/MastercardOs.js.map +1 -0
  40. package/dist/esm/packages/taco/src/components/Icon/components/NovemberFirst.js +20 -0
  41. package/dist/esm/packages/taco/src/components/Icon/components/NovemberFirst.js.map +1 -0
  42. package/dist/esm/packages/taco/src/components/Icon/components/index.js +10 -0
  43. package/dist/esm/packages/taco/src/components/Icon/components/index.js.map +1 -1
  44. package/dist/esm/packages/taco/src/components/Input/Input.js +5 -0
  45. package/dist/esm/packages/taco/src/components/Input/Input.js.map +1 -1
  46. package/dist/esm/packages/taco/src/components/List/components/Toggle.js +26 -15
  47. package/dist/esm/packages/taco/src/components/List/components/Toggle.js.map +1 -1
  48. package/dist/esm/packages/taco/src/components/Provider/Localization.js +2 -1
  49. package/dist/esm/packages/taco/src/components/Provider/Localization.js.map +1 -1
  50. package/dist/esm/packages/taco/src/components/Select2/Select2.js +48 -10
  51. package/dist/esm/packages/taco/src/components/Select2/Select2.js.map +1 -1
  52. package/dist/esm/packages/taco/src/components/Table3/Table3.js +1 -7
  53. package/dist/esm/packages/taco/src/components/Table3/Table3.js.map +1 -1
  54. package/dist/esm/packages/taco/src/components/Table3/components/Columns/Cell/Editing/RowMoveIndicator.js +1 -1
  55. package/dist/esm/packages/taco/src/components/Table3/components/Columns/Cell/Editing/RowMoveIndicator.js.map +1 -1
  56. package/dist/esm/packages/taco/src/components/Table3/components/Columns/Cell/EditingControlCell.js +1 -0
  57. package/dist/esm/packages/taco/src/components/Table3/components/Columns/Cell/EditingControlCell.js.map +1 -1
  58. package/dist/esm/packages/taco/src/components/Table3/components/Columns/Cell/util.js +2 -1
  59. package/dist/esm/packages/taco/src/components/Table3/components/Columns/Cell/util.js.map +1 -1
  60. package/dist/esm/packages/taco/src/components/Table3/components/Columns/Internal/EditingActionsMenu.js +9 -1
  61. package/dist/esm/packages/taco/src/components/Table3/components/Columns/Internal/EditingActionsMenu.js.map +1 -1
  62. package/dist/esm/packages/taco/src/components/Table3/components/Row/Row.js +1 -1
  63. package/dist/esm/packages/taco/src/components/Table3/components/Row/Row.js.map +1 -1
  64. package/dist/esm/packages/taco/src/components/Table3/features/useTableEditing.js +1 -12
  65. package/dist/esm/packages/taco/src/components/Table3/features/useTableEditing.js.map +1 -1
  66. package/dist/esm/packages/taco/src/components/Table3/listeners/useTableEditingListener.js +16 -1
  67. package/dist/esm/packages/taco/src/components/Table3/listeners/useTableEditingListener.js.map +1 -1
  68. package/dist/esm/packages/taco/src/components/Table3/useTable3.js +3 -2
  69. package/dist/esm/packages/taco/src/components/Table3/useTable3.js.map +1 -1
  70. package/dist/esm/packages/taco/src/primitives/Table/Core/Table.js +1 -1
  71. package/dist/esm/packages/taco/src/primitives/Table/Core/Table.js.map +1 -1
  72. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Body/Body.js +2 -2
  73. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Body/Body.js.map +1 -1
  74. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Body/util.js +12 -5
  75. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Body/util.js.map +1 -1
  76. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Header/components/Menu.js +9 -1
  77. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Header/components/Menu.js.map +1 -1
  78. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Row/BuiltIns/DisplayRow.js +1 -2
  79. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Row/BuiltIns/DisplayRow.js.map +1 -1
  80. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Filters/components/FilterColumn.js +3 -4
  81. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Filters/components/FilterColumn.js.map +1 -1
  82. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Filters/components/FilterComparator.js +3 -4
  83. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Filters/components/FilterComparator.js.map +1 -1
  84. package/dist/esm/packages/taco/src/primitives/Table/useTableDataLoader.js +0 -4
  85. package/dist/esm/packages/taco/src/primitives/Table/useTableDataLoader.js.map +1 -1
  86. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/search.js +3 -2
  87. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/search.js.map +1 -1
  88. package/dist/index.css +4 -0
  89. package/dist/primitives/Table/Core/components/Body/util.d.ts +2 -2
  90. package/dist/primitives/Table/Core/components/Toolbar/components/Filters/components/FilterColumn.d.ts +1 -1
  91. package/dist/taco.cjs.development.js +287 -87
  92. package/dist/taco.cjs.development.js.map +1 -1
  93. package/dist/taco.cjs.production.min.js +1 -1
  94. package/dist/taco.cjs.production.min.js.map +1 -1
  95. package/package.json +2 -2
@@ -1239,6 +1239,21 @@ function IconDocumentRejectedRequest(props, svgRef) {
1239
1239
  }
1240
1240
  var DocumentRejectedRequest = /*#__PURE__*/React.forwardRef(IconDocumentRejectedRequest);
1241
1241
 
1242
+ function IconDocumentSigned(props, svgRef) {
1243
+ return /*#__PURE__*/React.createElement("svg", Object.assign({
1244
+ fill: "none",
1245
+ xmlns: "http://www.w3.org/2000/svg",
1246
+ viewBox: "0 0 24 24",
1247
+ ref: svgRef
1248
+ }, props), /*#__PURE__*/React.createElement("path", {
1249
+ fillRule: "evenodd",
1250
+ clipRule: "evenodd",
1251
+ d: "M14.293 2.293A1 1 0 0013.586 2H5.75A1.75 1.75 0 004 3.75v16.5c0 .966.784 1.75 1.75 1.75h12.5A1.75 1.75 0 0020 20.25V8.414a1 1 0 00-.293-.707l-5.414-5.414zM5.75 3.5H13v3.75l.006.144A1.75 1.75 0 0014.75 9h3.75v11.25l-.007.057a.25.25 0 01-.243.193H5.75l-.057-.007a.25.25 0 01-.193-.243V3.75l.007-.057A.25.25 0 015.75 3.5zm8.75 1.121V7.25a.25.25 0 00.193.243l.057.007h2.63L14.5 4.621zm-6.693 9.425C8.183 12.37 9.194 11 10.43 11c1.547 0 1.796 1.624 1 3.337a6.972 6.972 0 01-1.424 2.009l-.156.148.138-.007.17-.017c1.058-.13 1.702-.687 2.014-1.725l.044-.16.026-.08c.239-.613 1.208-.407 1.13.292a10.03 10.03 0 00-.074 1.205l.006.168.084-.093.202-.245c.451-.532.863-.748 1.332-.404.185.135.278.313.343.543l.019.072.033.156.064.387.087-.088.147-.16.172-.202.197-.242.22-.284.23-.312.057-.067a.59.59 0 01.898.758l-.133.182-.252.334-.127.162c-.665.834-1.147 1.225-1.605 1.266-.419.037-.725-.198-.889-.556a1.83 1.83 0 01-.128-.403l-.016-.081-.08.09-.093.096c-.583.591-1.13.773-1.585.251l-.068-.084-.054-.08a1.31 1.31 0 01-.128-.29l-.011-.04-.098.082-.152.112c-.568.398-1.28.616-2.126.645l-.2.003-.167-.005a1.862 1.862 0 01-.843-.253l-.016-.01-.077.046-.256.137a6.378 6.378 0 01-.8.342l-.222.072-.078.018a.59.59 0 01-.267-1.145 5.16 5.16 0 00.806-.324l.15-.08-.043-.116-.056-.188c-.133-.511-.144-1.121-.036-1.775l.031-.17.038-.181zm2.617-.347c.422-.975.323-1.52.004-1.52-.545 0-1.255 1.006-1.502 2.273-.09.462-.108.86-.061 1.178l.025.14.082-.07.197-.186a5.84 5.84 0 001.1-1.488l.091-.185.064-.142z",
1252
+ fill: "currentColor"
1253
+ }));
1254
+ }
1255
+ var DocumentSigned = /*#__PURE__*/React.forwardRef(IconDocumentSigned);
1256
+
1242
1257
  function IconDocumentSplit(props, svgRef) {
1243
1258
  return /*#__PURE__*/React.createElement("svg", Object.assign({
1244
1259
  xmlns: "http://www.w3.org/2000/svg",
@@ -1763,6 +1778,21 @@ function IconHeightTall(props, svgRef) {
1763
1778
  }
1764
1779
  var HeightTall = /*#__PURE__*/React.forwardRef(IconHeightTall);
1765
1780
 
1781
+ function IconHome2(props, svgRef) {
1782
+ return /*#__PURE__*/React.createElement("svg", Object.assign({
1783
+ fill: "none",
1784
+ xmlns: "http://www.w3.org/2000/svg",
1785
+ viewBox: "0 0 24 24",
1786
+ ref: svgRef
1787
+ }, props), /*#__PURE__*/React.createElement("path", {
1788
+ fillRule: "evenodd",
1789
+ clipRule: "evenodd",
1790
+ d: "M11.116 2.823a1.25 1.25 0 011.768 0L17.25 7.19V6a.75.75 0 011.5 0v2.69l2.78 2.78a.75.75 0 01-1.06 1.06l-2.994-2.993-.013-.013L12 4.061l-8.47 8.47a.75.75 0 01-1.06-1.061l8.646-8.647zm1.768 3.25l7 7c.234.235.366.553.366.884v6.293c0 .69-.56 1.25-1.25 1.25h-4c-.69 0-1.25-.56-1.25-1.25V16.5h-3.5v3.75c0 .69-.56 1.25-1.25 1.25H5c-.69 0-1.25-.56-1.25-1.25v-6.293c0-.332.132-.65.366-.884l7-7a1.25 1.25 0 011.768 0zM12 7.311l-6.75 6.75V20h3.5v-3.75c0-.69.56-1.25 1.25-1.25h4c.69 0 1.25.56 1.25 1.25V20h3.5v-5.94L12 7.31z",
1791
+ fill: "currentColor"
1792
+ }));
1793
+ }
1794
+ var Home2 = /*#__PURE__*/React.forwardRef(IconHome2);
1795
+
1766
1796
  function IconHome(props, svgRef) {
1767
1797
  return /*#__PURE__*/React.createElement("svg", Object.assign({
1768
1798
  xmlns: "http://www.w3.org/2000/svg",
@@ -1776,6 +1806,21 @@ function IconHome(props, svgRef) {
1776
1806
  }
1777
1807
  var Home = /*#__PURE__*/React.forwardRef(IconHome);
1778
1808
 
1809
+ function IconId(props, svgRef) {
1810
+ return /*#__PURE__*/React.createElement("svg", Object.assign({
1811
+ fill: "none",
1812
+ xmlns: "http://www.w3.org/2000/svg",
1813
+ viewBox: "0 0 24 24",
1814
+ ref: svgRef
1815
+ }, props), /*#__PURE__*/React.createElement("path", {
1816
+ fillRule: "evenodd",
1817
+ clipRule: "evenodd",
1818
+ d: "M20.25 5c.966 0 1.75.784 1.75 1.75v10.5A1.75 1.75 0 0120.25 19H3.75A1.75 1.75 0 012 17.25V6.75C2 5.784 2.784 5 3.75 5h16.5zm0 1.5H3.75a.25.25 0 00-.243.193L3.5 6.75v10.5a.25.25 0 00.193.243l.057.007h16.5a.25.25 0 00.243-.193l.007-.057V6.75a.25.25 0 00-.193-.243L20.25 6.5zm-9.268 7.993c-.316-1.81-1.31-2.714-2.982-2.714-1.673 0-2.667.905-2.982 2.714a1.204 1.204 0 001.184 1.41h3.595a1.204 1.204 0 001.185-1.41zM8 8c.76 0 1.374.77 1.374 1.718 0 .949-.615 1.718-1.374 1.718-.759 0-1.374-.77-1.374-1.718C6.626 8.769 7.24 8 8 8zm11 .75a.75.75 0 00-.75-.75h-6a.75.75 0 000 1.5h6a.75.75 0 00.75-.75zM18.25 14a.75.75 0 010 1.5h-4.5a.75.75 0 010-1.5h4.5zm.75-2.25a.75.75 0 00-.75-.75h-4.5a.75.75 0 000 1.5h4.5a.75.75 0 00.75-.75z",
1819
+ fill: "currentColor"
1820
+ }));
1821
+ }
1822
+ var Id = /*#__PURE__*/React.forwardRef(IconId);
1823
+
1779
1824
  function IconImages(props, svgRef) {
1780
1825
  return /*#__PURE__*/React.createElement("svg", Object.assign({
1781
1826
  xmlns: "http://www.w3.org/2000/svg",
@@ -2266,6 +2311,25 @@ function IconMarket(props, svgRef) {
2266
2311
  }
2267
2312
  var Market = /*#__PURE__*/React.forwardRef(IconMarket);
2268
2313
 
2314
+ function IconMastercardOs(props, svgRef) {
2315
+ return /*#__PURE__*/React.createElement("svg", Object.assign({
2316
+ fill: "none",
2317
+ xmlns: "http://www.w3.org/2000/svg",
2318
+ viewBox: "0 0 24 24",
2319
+ ref: svgRef
2320
+ }, props), /*#__PURE__*/React.createElement("path", {
2321
+ d: "M14.698 7.314H9.286v9.66h5.412v-9.66z",
2322
+ fill: "#FF5A00"
2323
+ }), /*#__PURE__*/React.createElement("path", {
2324
+ d: "M9.646 12.144c0-1.963.929-3.704 2.354-4.83A6.178 6.178 0 008.185 6C4.766 6 2 8.748 2 12.144s2.766 6.143 6.185 6.143A6.178 6.178 0 0012 16.973a6.117 6.117 0 01-2.354-4.83z",
2325
+ fill: "#EB001B"
2326
+ }), /*#__PURE__*/React.createElement("path", {
2327
+ d: "M22 12.144c0 3.396-2.766 6.143-6.185 6.143A6.178 6.178 0 0112 16.973a6.095 6.095 0 002.354-4.83A6.146 6.146 0 0012 7.315 6.168 6.168 0 0115.813 6C19.233 6 22 8.766 22 12.144z",
2328
+ fill: "#F79E1B"
2329
+ }));
2330
+ }
2331
+ var MastercardOs = /*#__PURE__*/React.forwardRef(IconMastercardOs);
2332
+
2269
2333
  function IconMatchAmount(props, svgRef) {
2270
2334
  return /*#__PURE__*/React.createElement("svg", Object.assign({
2271
2335
  xmlns: "http://www.w3.org/2000/svg",
@@ -2435,6 +2499,22 @@ function IconNote(props, svgRef) {
2435
2499
  }
2436
2500
  var Note = /*#__PURE__*/React.forwardRef(IconNote);
2437
2501
 
2502
+ function IconNovemberFirst(props, svgRef) {
2503
+ return /*#__PURE__*/React.createElement("svg", Object.assign({
2504
+ fill: "none",
2505
+ xmlns: "http://www.w3.org/2000/svg",
2506
+ viewBox: "0 0 24 24",
2507
+ ref: svgRef
2508
+ }, props), /*#__PURE__*/React.createElement("path", {
2509
+ d: "M21.484 8.828C19.73 3.592 14.065.768 8.829 2.519 3.592 4.271.767 9.936 2.519 15.172c1.752 5.237 7.418 8.06 12.655 6.308a9.997 9.997 0 006.31-12.653z",
2510
+ fill: "#0D2840"
2511
+ }), /*#__PURE__*/React.createElement("path", {
2512
+ d: "M13.977 7.263v5.445l-4.14-5.445H7.264l.78 1.156v7.686h1.919v-5.619l4.28 5.62H15.9V7.262h-1.922z",
2513
+ fill: "#2CD7B3"
2514
+ }));
2515
+ }
2516
+ var NovemberFirst = /*#__PURE__*/React.forwardRef(IconNovemberFirst);
2517
+
2438
2518
  function IconNumbers(props, svgRef) {
2439
2519
  return /*#__PURE__*/React.createElement("svg", Object.assign({
2440
2520
  fill: "none",
@@ -3486,6 +3566,7 @@ const icons = {
3486
3566
  'document-preview': DocumentPreview,
3487
3567
  'document-received': DocumentReceived,
3488
3568
  'document-rejected-request': DocumentRejectedRequest,
3569
+ 'document-signed': DocumentSigned,
3489
3570
  'document-split': DocumentSplit,
3490
3571
  'document-time': DocumentTime,
3491
3572
  document: Document,
@@ -3525,7 +3606,9 @@ const icons = {
3525
3606
  'height-medium': HeightMedium,
3526
3607
  'height-short': HeightShort,
3527
3608
  'height-tall': HeightTall,
3609
+ home2: Home2,
3528
3610
  home: Home,
3611
+ id: Id,
3529
3612
  images: Images,
3530
3613
  import: Import,
3531
3614
  'inbox-einvoicing': InboxEinvoicing,
@@ -3562,6 +3645,7 @@ const icons = {
3562
3645
  'log-out': LogOut,
3563
3646
  log: Log,
3564
3647
  market: Market,
3648
+ 'mastercard-os': MastercardOs,
3565
3649
  'match-amount': MatchAmount,
3566
3650
  'match-entries': MatchEntries,
3567
3651
  menu: Menu,
@@ -3575,6 +3659,7 @@ const icons = {
3575
3659
  'note-follow-up': NoteFollowUp,
3576
3660
  'note-read': NoteRead,
3577
3661
  note: Note,
3662
+ 'november-first': NovemberFirst,
3578
3663
  numbers: Numbers,
3579
3664
  'partner-api': PartnerApi,
3580
3665
  'payment-paid': PaymentPaid,
@@ -4662,7 +4747,8 @@ const defaultLocalisationTexts = {
4662
4747
  open: 'Open'
4663
4748
  },
4664
4749
  drawer: {
4665
- close: 'Close'
4750
+ close: 'Close',
4751
+ back: 'Back'
4666
4752
  }
4667
4753
  };
4668
4754
  const defaultLocalizationContext = {
@@ -5217,6 +5303,11 @@ const InputWithoutDeprecatedFeatures = /*#__PURE__*/React.forwardRef(function In
5217
5303
  event.preventDefault();
5218
5304
  const position = event.key === 'End' ? event.currentTarget.value.length : 0;
5219
5305
  event.currentTarget.setSelectionRange(position, position);
5306
+ // Necessary for ensuring the cursor is scrolled into view when using Home/End keys on Windows
5307
+ if (internalRef.current) {
5308
+ const scrollPosition = event.key === 'End' ? internalRef.current.scrollWidth : 0;
5309
+ internalRef.current.scrollLeft = scrollPosition;
5310
+ }
5220
5311
  }
5221
5312
  }
5222
5313
  if (typeof onKeyDown === 'function') {
@@ -6312,6 +6403,13 @@ const Datepicker = /*#__PURE__*/React.forwardRef(function Datepicker(props, ref)
6312
6403
  texts
6313
6404
  } = useLocalization();
6314
6405
  const className = cn('inline-flex w-full text-black font-normal', externalClassName);
6406
+ const popoverContentRef = React.useRef(null);
6407
+ const handleOpenAutofocus = React.useCallback(e => {
6408
+ var _popoverContentRef$cu, _popoverContentRef$cu2;
6409
+ e.preventDefault();
6410
+ const currentDay = (_popoverContentRef$cu = popoverContentRef === null || popoverContentRef === void 0 ? void 0 : (_popoverContentRef$cu2 = popoverContentRef.current) === null || _popoverContentRef$cu2 === void 0 ? void 0 : _popoverContentRef$cu2.querySelector('table button[name="day"][aria-selected="true"]')) !== null && _popoverContentRef$cu !== void 0 ? _popoverContentRef$cu : null;
6411
+ currentDay === null || currentDay === void 0 ? void 0 : currentDay.focus();
6412
+ }, [popoverContentRef]);
6315
6413
  return /*#__PURE__*/React.createElement("span", {
6316
6414
  className: className,
6317
6415
  "data-taco": "datepicker",
@@ -6322,10 +6420,13 @@ const Datepicker = /*#__PURE__*/React.forwardRef(function Datepicker(props, ref)
6322
6420
  disabled: input.disabled || input.readOnly,
6323
6421
  icon: "calendar",
6324
6422
  tabIndex: -1,
6325
- popover: props => ( /*#__PURE__*/React.createElement(Popover, Object.assign({}, props), /*#__PURE__*/React.createElement(Popover.Content, null, ({
6423
+ popover: props => ( /*#__PURE__*/React.createElement(Popover, Object.assign({}, props), /*#__PURE__*/React.createElement(Popover.Content, {
6424
+ onOpenAutoFocus: handleOpenAutofocus
6425
+ }, ({
6326
6426
  close
6327
6427
  }) => ( /*#__PURE__*/React.createElement("div", {
6328
- className: "-m-3 flex"
6428
+ className: '[&_button[name="day"]:focus]:yt-focus -m-3 flex',
6429
+ ref: popoverContentRef
6329
6430
  }, /*#__PURE__*/React.createElement(Calendar$1, Object.assign({}, calendar, {
6330
6431
  onChange: (date, event) => {
6331
6432
  calendar.onChange(date, event);
@@ -6682,6 +6783,7 @@ const useCurrentMenu = () => {
6682
6783
  const DrawerContext = /*#__PURE__*/React.createContext({
6683
6784
  closeOnEscape: true,
6684
6785
  showCloseButton: true,
6786
+ onClickBack: () => {},
6685
6787
  onClose: () => {},
6686
6788
  onResize: () => {},
6687
6789
  props: {},
@@ -6713,7 +6815,7 @@ const getDrawerContentClassNames = (size, variant, open) => {
6713
6815
  const getDrawerContainerClassNames = variant => {
6714
6816
  return cn('bg-white mx-auto absolute h-full w-full flex flex-col ', {
6715
6817
  'shadow-[0_6px_9px_0_rgba(89,85,98,0.3),0_0_1px_0_rgba(89,85,98,0.2)]': variant === 'overlay',
6716
- 'border-l border-grey h-full': variant === 'embedded'
6818
+ 'border-l border-grey-300 h-full': variant === 'embedded'
6717
6819
  });
6718
6820
  };
6719
6821
  const getDrawerDragHandlerClassNames = () => {
@@ -6779,24 +6881,55 @@ const RenderPropWrapper$2 = /*#__PURE__*/React__default.forwardRef(function Rend
6779
6881
  ...renderProps
6780
6882
  });
6781
6883
  });
6782
- const Title$2 = /*#__PURE__*/React__default.forwardRef(function DrawerTitle(props, ref) {
6884
+ const Title$2 = /*#__PURE__*/React__default.forwardRef(function DrawerTitle(props, externalRef) {
6783
6885
  const {
6784
6886
  className,
6785
6887
  children,
6786
6888
  ...otherProps
6787
6889
  } = props;
6890
+ const ref = useMergedRef(externalRef);
6891
+ const [style, setStyle] = React__default.useState({});
6892
+ const {
6893
+ texts
6894
+ } = useLocalization();
6895
+ const {
6896
+ onClickBack
6897
+ } = useCurrentDrawer();
6788
6898
  /**
6789
6899
  * By design in default drawer version Title has grey separator, but we might have exceptions like Drawer + Tabs scenario,
6790
- * where we might want to hide the grey separator. For this reason separator was rendedr with using of classNames,
6791
- * so it can be easily overriden in exceptional scenarious.
6900
+ * where we might want to hide the grey separator. For this reason separator was rendered with using of classNames,
6901
+ * so it can be easily overriden in exceptional scenarios.
6792
6902
  * */
6793
- const cName = cn('grow-0 py-4 pl-4 justify-self-start mb-0 border-b-[1px] border-grey-300 flex items-center', className);
6903
+ const cName = cn('grow-0 py-4 px-4 justify-self-start mb-0 border-b-[1px] border-grey-300 flex items-start', className);
6904
+ React__default.useEffect(() => {
6905
+ var _ref$current, _drawer$querySelector, _closeButton$offsetWi, _drawer$querySelector2, _actionsWrapper$offse;
6906
+ const drawer = ref === null || ref === void 0 ? void 0 : (_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : _ref$current.closest('[data-taco="drawer"]');
6907
+ // This is the margin amount that we need to deduct from the margins to align with the design
6908
+ const marginAdjust = 4;
6909
+ const closeButton = (_drawer$querySelector = drawer === null || drawer === void 0 ? void 0 : drawer.querySelector(`[aria-label="${texts.drawer.close}"]`)) !== null && _drawer$querySelector !== void 0 ? _drawer$querySelector : null;
6910
+ const closeButtonWidth = (_closeButton$offsetWi = closeButton === null || closeButton === void 0 ? void 0 : closeButton.offsetWidth) !== null && _closeButton$offsetWi !== void 0 ? _closeButton$offsetWi : 0;
6911
+ const closeButtonRightMargin = 8;
6912
+ const actionsWrapper = (_drawer$querySelector2 = drawer === null || drawer === void 0 ? void 0 : drawer.querySelector(`#taco-drawer-actions[data-taco="group"]`)) !== null && _drawer$querySelector2 !== void 0 ? _drawer$querySelector2 : null;
6913
+ const actionsWrapperWidth = (_actionsWrapper$offse = actionsWrapper === null || actionsWrapper === void 0 ? void 0 : actionsWrapper.offsetWidth) !== null && _actionsWrapper$offse !== void 0 ? _actionsWrapper$offse : 0;
6914
+ const actionsWrapperRightMargin = 8;
6915
+ const marginRight = closeButtonWidth + actionsWrapperWidth + closeButtonRightMargin + actionsWrapperRightMargin - marginAdjust;
6916
+ setStyle({
6917
+ marginRight
6918
+ });
6919
+ }, [ref, texts.drawer.close]);
6794
6920
  return /*#__PURE__*/React__default.createElement(DialogPrimitive.Title, Object.assign({
6795
6921
  className: cName
6796
6922
  }, otherProps, {
6797
6923
  ref: ref
6798
- }), /*#__PURE__*/React__default.createElement("span", {
6799
- className: "line-clamp-2 inline-block w-4/6 overflow-y-hidden"
6924
+ }), onClickBack ? ( /*#__PURE__*/React__default.createElement(IconButton, {
6925
+ appearance: "discrete",
6926
+ "aria-label": texts.drawer.back,
6927
+ className: "mr-3 text-base",
6928
+ icon: "chevron-left",
6929
+ onClick: onClickBack
6930
+ })) : null, /*#__PURE__*/React__default.createElement("span", {
6931
+ className: "line-clamp-2 inline-block overflow-y-hidden",
6932
+ style: style
6800
6933
  }, children));
6801
6934
  });
6802
6935
  const Footer$2 = /*#__PURE__*/React__default.forwardRef(function DrawerFooter(props, ref) {
@@ -6819,8 +6952,10 @@ const Actions = /*#__PURE__*/React__default.forwardRef(function Actions(props, r
6819
6952
  ...otherProps
6820
6953
  } = props;
6821
6954
  const cName = cn('absolute top-0 right-10 mr-[8px] mt-4', className);
6955
+ // Id is added to identify the actions wrapper inside a useEffect in Dialog.Title
6822
6956
  return /*#__PURE__*/React__default.createElement(Group, Object.assign({}, otherProps, {
6823
6957
  className: cName,
6958
+ id: "taco-drawer-actions",
6824
6959
  ref: ref
6825
6960
  }));
6826
6961
  });
@@ -6934,8 +7069,8 @@ const DrawerContent = /*#__PURE__*/React__default.forwardRef(function Content(pr
6934
7069
  };
6935
7070
  }, [size, variant, open]);
6936
7071
  const handleEscapeKeyDown = event => {
6937
- var _ref$current;
6938
- const isTargetInsideDrawerContent = (_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : _ref$current.contains(event.target);
7072
+ var _ref$current2;
7073
+ const isTargetInsideDrawerContent = (_ref$current2 = ref.current) === null || _ref$current2 === void 0 ? void 0 : _ref$current2.contains(event.target);
6939
7074
  if (isTargetInsideDrawerContent) {
6940
7075
  if (!closeOnEscape) {
6941
7076
  event.preventDefault();
@@ -7065,6 +7200,7 @@ const Drawer = /*#__PURE__*/React.forwardRef(function Drawer(props, ref) {
7065
7200
  closeOnEscape = true,
7066
7201
  onResize,
7067
7202
  onClose,
7203
+ onClickBack,
7068
7204
  size = 'md',
7069
7205
  trigger,
7070
7206
  children,
@@ -7081,6 +7217,7 @@ const Drawer = /*#__PURE__*/React.forwardRef(function Drawer(props, ref) {
7081
7217
  const [outlet, setOutlet] = React.useState();
7082
7218
  const context = React.useMemo(() => ({
7083
7219
  closeOnEscape,
7220
+ onClickBack,
7084
7221
  onClose,
7085
7222
  onResize,
7086
7223
  props: otherProps,
@@ -7092,7 +7229,7 @@ const Drawer = /*#__PURE__*/React.forwardRef(function Drawer(props, ref) {
7092
7229
  focusTrap,
7093
7230
  showCloseButton,
7094
7231
  outlet
7095
- }), [closeOnEscape, open, setOpen, otherProps, variant, onResize, onClose, size, focusTrap, showCloseButton, outlet]);
7232
+ }), [closeOnEscape, open, setOpen, otherProps, variant, onResize, onClose, size, focusTrap, showCloseButton, outlet, onClickBack]);
7096
7233
  // this prevents two drawers being open at once and used when one drawer getting opened before another one got closed.
7097
7234
  const close = React.useCallback(() => {
7098
7235
  setOpen(false);
@@ -7456,6 +7593,7 @@ Switch.displayName = 'Switch';
7456
7593
  const ToggleItem = /*#__PURE__*/React__default.forwardRef(function Toggle(props, ref) {
7457
7594
  const {
7458
7595
  controlRef,
7596
+ onToggle,
7459
7597
  ...attributes
7460
7598
  } = props;
7461
7599
  function handleClick(event) {
@@ -7466,25 +7604,23 @@ const ToggleItem = /*#__PURE__*/React__default.forwardRef(function Toggle(props,
7466
7604
  if (event.isDefaultPrevented()) {
7467
7605
  return;
7468
7606
  }
7469
- // If event target is not a control or not an element inside the control, then trigger click of the control
7470
- if (event.target !== controlRef.current || !((_controlRef$current = controlRef.current) !== null && _controlRef$current !== void 0 && _controlRef$current.contains(event.target))) {
7471
- var _controlRef$current2;
7472
- (_controlRef$current2 = controlRef.current) === null || _controlRef$current2 === void 0 ? void 0 : _controlRef$current2.click();
7607
+ // If event target is not a control and not an element inside the control, then trigger click of the control
7608
+ if (event.target !== controlRef.current && !((_controlRef$current = controlRef.current) !== null && _controlRef$current !== void 0 && _controlRef$current.contains(event.target))) {
7609
+ onToggle();
7473
7610
  return;
7474
7611
  }
7475
7612
  }
7476
7613
  function handleKeyDown(event) {
7477
- var _controlRef$current3;
7614
+ var _controlRef$current2;
7478
7615
  if (typeof props.onKeyDown === 'function') {
7479
7616
  props.onKeyDown(event);
7480
7617
  }
7481
7618
  if (event.isDefaultPrevented()) {
7482
7619
  return;
7483
7620
  }
7484
- // If event target is not a control or not an element inside the control, then send appropriate "activate" keyboard shortcuts to the control as a click
7485
- if ((event.key === 'Enter' || event.key === ' ') && (event.target !== controlRef.current || !((_controlRef$current3 = controlRef.current) !== null && _controlRef$current3 !== void 0 && _controlRef$current3.contains(event.target)))) {
7486
- var _controlRef$current4;
7487
- (_controlRef$current4 = controlRef.current) === null || _controlRef$current4 === void 0 ? void 0 : _controlRef$current4.click();
7621
+ // If event target is not a control and not an element inside the control, then send appropriate "activate" keyboard shortcuts to the control as a click
7622
+ if ((event.key === 'Enter' || event.key === ' ') && event.target !== controlRef.current && !((_controlRef$current2 = controlRef.current) !== null && _controlRef$current2 !== void 0 && _controlRef$current2.contains(event.target))) {
7623
+ onToggle();
7488
7624
  return;
7489
7625
  }
7490
7626
  }
@@ -7498,44 +7634,56 @@ const ToggleItem = /*#__PURE__*/React__default.forwardRef(function Toggle(props,
7498
7634
  });
7499
7635
  const Switch$1 = /*#__PURE__*/React__default.forwardRef(function Switch$1(props, ref) {
7500
7636
  const {
7501
- checked,
7637
+ checked: externalChecked,
7502
7638
  onChange,
7503
7639
  ...attributes
7504
7640
  } = props;
7641
+ const [checked, setChecked] = React__default.useState(externalChecked);
7505
7642
  const switchRef = React__default.useRef(null);
7643
+ const toggle = React__default.useCallback(() => {
7644
+ setChecked(!checked);
7645
+ onChange(!checked);
7646
+ }, [checked, onChange]);
7506
7647
  const control = /*#__PURE__*/React__default.createElement(Switch, {
7507
7648
  checked: checked,
7508
7649
  className: "group-hover/toggle:[&[aria-checked=false]]:bg-grey-700 group-hover/toggle:[&[aria-checked=true]]:bg-blue-700",
7509
7650
  disabled: props.disabled,
7510
- onChange: onChange,
7651
+ onChange: toggle,
7511
7652
  ref: switchRef,
7512
7653
  tabIndex: -1
7513
7654
  });
7514
7655
  return /*#__PURE__*/React__default.createElement(ToggleItem, Object.assign({}, attributes, {
7515
7656
  control: control,
7516
7657
  controlRef: switchRef,
7517
- ref: ref
7658
+ ref: ref,
7659
+ onToggle: toggle
7518
7660
  }));
7519
7661
  });
7520
7662
  const Checkbox$1 = /*#__PURE__*/React__default.forwardRef(function Switch(props, ref) {
7521
7663
  const {
7522
- checked,
7664
+ checked: externalChecked,
7523
7665
  onChange,
7524
7666
  ...attributes
7525
7667
  } = props;
7668
+ const [checked, setChecked] = React__default.useState(externalChecked);
7526
7669
  const checkboxRef = React__default.useRef(null);
7670
+ const toggle = React__default.useCallback(() => {
7671
+ setChecked(!checked);
7672
+ onChange(!checked);
7673
+ }, [checked, onChange]);
7527
7674
  const control = /*#__PURE__*/React__default.createElement(Checkbox, {
7528
7675
  checked: checked,
7529
7676
  className: "group-hover/toggle:[&[aria-checked=false]]:border-grey-700 group-hover/toggle:[&[aria-checked=true]]:border-blue-700 group-hover/checkbox:[&[aria-checked=true]]:bg-blue-700",
7530
7677
  disabled: props.disabled,
7531
- onChange: onChange,
7678
+ onChange: toggle,
7532
7679
  ref: checkboxRef,
7533
7680
  tabIndex: -1
7534
7681
  });
7535
7682
  return /*#__PURE__*/React__default.createElement(ToggleItem, Object.assign({}, attributes, {
7536
7683
  control: control,
7537
7684
  controlRef: checkboxRef,
7538
- ref: ref
7685
+ ref: ref,
7686
+ onToggle: toggle
7539
7687
  }));
7540
7688
  });
7541
7689
 
@@ -10764,8 +10912,6 @@ function useTableDataLoader(fetchPage, fetchAll, options = {
10764
10912
  // if a search is currently "active", we need to re load all because
10765
10913
  const handleSort = function (sorting) {
10766
10914
  try {
10767
- // set the sorting so we can track if it changed between loads
10768
- _lastUsedSorting.current = sorting;
10769
10915
  if (_lastUsedSearch.current) {
10770
10916
  // we're searching, which means we need to refetch all with the correct sorting applied
10771
10917
  loadAll(sorting, _lastUsedFilters.current);
@@ -10780,8 +10926,6 @@ function useTableDataLoader(fetchPage, fetchAll, options = {
10780
10926
  };
10781
10927
  const handleFilter = function (filters) {
10782
10928
  try {
10783
- // set the filters so we can track if it changed between loads
10784
- _lastUsedFilters.current = filters;
10785
10929
  if (_lastUsedSearch.current) {
10786
10930
  // we're searching, which means we need to refetch all with the correct sorting applied
10787
10931
  loadAll(_lastUsedSorting.current, filters);
@@ -11073,8 +11217,8 @@ function resetHighlightedColumnIndexes(value, table) {
11073
11217
  }
11074
11218
  }
11075
11219
  if (column.getIsVisible() && column.columnDef.enableGlobalFilter && allowSearch) {
11076
- var _row$original, _column$columnDef$met;
11077
- const cellValue = getCellValueAsString((_row$original = row.original) === null || _row$original === void 0 ? void 0 : _row$original[column.id], (_column$columnDef$met = column.columnDef.meta) === null || _column$columnDef$met === void 0 ? void 0 : _column$columnDef$met.dataType);
11220
+ var _column$columnDef$met;
11221
+ const cellValue = getCellValueAsString(get(row.original, column.id), (_column$columnDef$met = column.columnDef.meta) === null || _column$columnDef$met === void 0 ? void 0 : _column$columnDef$met.dataType);
11078
11222
  // indexes don't map to sorted data
11079
11223
  if (cellValue !== undefined && isWeakContains(cellValue, value)) {
11080
11224
  indexes.push([rowIndex, columnIndex]);
@@ -12423,7 +12567,7 @@ const DisplayRow = /*#__PURE__*/React__default.memo(function DisplayRow(props) {
12423
12567
  const handleClickCapture = React__default.useCallback(() => {
12424
12568
  // do this in the next frame, otherwise it remounts the row and prevents row actions on hover from being clickable
12425
12569
  requestAnimationFrame(() => tableMeta.rowActive.setRowActiveIndex(index));
12426
- }, []);
12570
+ }, [index]);
12427
12571
  // row active
12428
12572
  if (tableMeta.rowActive.isEnabled) {
12429
12573
  attributes['data-row-active'] = tableMeta.rowActive.rowActiveIndex === index ? true : undefined;
@@ -12436,7 +12580,6 @@ const DisplayRow = /*#__PURE__*/React__default.memo(function DisplayRow(props) {
12436
12580
  }
12437
12581
  // row drag
12438
12582
  if (tableMeta.rowDrag.isEnabled) {
12439
- attributes.draggable = true;
12440
12583
  attributes['aria-grabbed'] = !!tableMeta.rowDrag.dragging[row.id];
12441
12584
  }
12442
12585
  // row drop
@@ -12866,7 +13009,15 @@ function HeaderMenu(props) {
12866
13009
  icon: "more",
12867
13010
  menu: popoverElement ? undefined : menuProps => ( /*#__PURE__*/React__default.createElement(Menu$1, Object.assign({}, menuProps), /*#__PURE__*/React__default.createElement(Menu$1.Content, null, memoedMenuItems))),
12868
13011
  popover: popoverElement,
12869
- onClickCapture: event => event.preventDefault()
13012
+ onClickCapture: event => event.preventDefault(),
13013
+ onKeyDown: event => {
13014
+ // Removes focus from the column header menu button so that active row shortcuts execute when Tab,
13015
+ // Shift+Tab, or any other keydown event occurs.
13016
+ if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {
13017
+ var _event$currentTarget;
13018
+ (_event$currentTarget = event.currentTarget) === null || _event$currentTarget === void 0 ? void 0 : _event$currentTarget.blur();
13019
+ }
13020
+ }
12870
13021
  });
12871
13022
  }
12872
13023
 
@@ -13100,16 +13251,22 @@ const MemoedHeader = /*#__PURE__*/React__default.memo(function MemoedHeader(prop
13100
13251
  })) : null);
13101
13252
  });
13102
13253
 
13103
- const FOCUS_MANAGER_OPTIONS = {
13254
+ const FOCUS_MANAGER_OPTIONS_TAB = {
13104
13255
  accept: element => !!element.closest('tr[data-row-active="true"]'),
13105
13256
  tabbable: true
13106
13257
  };
13258
+ const FOCUS_MANAGER_OPTIONS_ARROW_KEYS = {
13259
+ accept: element => {
13260
+ const acceptTabbable = isElementInteractive(element) ? element.getAttribute('tabindex') !== '-1' : true;
13261
+ return !!element.closest('tr[data-row-active="true"]') && !hasFocusableElement(element) && acceptTabbable;
13262
+ }
13263
+ };
13107
13264
  function useAugmentedFocusManager() {
13108
13265
  const focusManager = focus.useFocusManager();
13109
- const focusPrevious = () => focusManager.focusPrevious(FOCUS_MANAGER_OPTIONS);
13110
- const focusNext = () => focusManager.focusNext(FOCUS_MANAGER_OPTIONS);
13111
- const focusFirst = () => focusManager.focusFirst(FOCUS_MANAGER_OPTIONS);
13112
- const focusLast = () => focusManager.focusLast(FOCUS_MANAGER_OPTIONS);
13266
+ const focusPrevious = (arrowNavigation = false) => focusManager.focusPrevious(arrowNavigation ? FOCUS_MANAGER_OPTIONS_ARROW_KEYS : FOCUS_MANAGER_OPTIONS_TAB);
13267
+ const focusNext = (arrowNavigation = false) => focusManager.focusNext(arrowNavigation ? FOCUS_MANAGER_OPTIONS_ARROW_KEYS : FOCUS_MANAGER_OPTIONS_TAB);
13268
+ const focusFirst = () => focusManager.focusFirst(FOCUS_MANAGER_OPTIONS_TAB);
13269
+ const focusLast = () => focusManager.focusLast(FOCUS_MANAGER_OPTIONS_TAB);
13113
13270
  return {
13114
13271
  focusPrevious,
13115
13272
  focusNext,
@@ -13145,10 +13302,10 @@ function Body(props) {
13145
13302
  let focusedElement;
13146
13303
  switch (event.key) {
13147
13304
  case 'ArrowLeft':
13148
- focusedElement = isMetaKeyPressed ? focusManager.focusFirst() : focusManager.focusPrevious();
13305
+ focusedElement = isMetaKeyPressed ? focusManager.focusFirst() : focusManager.focusPrevious(true);
13149
13306
  break;
13150
13307
  case 'ArrowRight':
13151
- focusedElement = isMetaKeyPressed ? focusManager.focusLast() : focusManager.focusNext();
13308
+ focusedElement = isMetaKeyPressed ? focusManager.focusLast() : focusManager.focusNext(true);
13152
13309
  // Scrolls table all the way to the right
13153
13310
  if (isMetaKeyPressed && tableElement) {
13154
13311
  tableElement.scrollLeft = tableElement.scrollWidth;
@@ -15153,6 +15310,9 @@ const Select2 = /*#__PURE__*/React__default.forwardRef(function Select2(props, r
15153
15310
  name,
15154
15311
  onChange,
15155
15312
  onCreate,
15313
+ dialogTriggerTitle,
15314
+ dialogTriggerDisabled,
15315
+ dialog,
15156
15316
  onDelete,
15157
15317
  onEdit,
15158
15318
  placeholder,
@@ -15222,6 +15382,9 @@ const Select2 = /*#__PURE__*/React__default.forwardRef(function Select2(props, r
15222
15382
  listboxRef,
15223
15383
  multiple,
15224
15384
  onCreate,
15385
+ dialogTriggerTitle,
15386
+ dialogTriggerDisabled,
15387
+ dialog,
15225
15388
  onDelete,
15226
15389
  onEdit,
15227
15390
  open,
@@ -15323,21 +15486,34 @@ const Select2 = /*#__PURE__*/React__default.forwardRef(function Select2(props, r
15323
15486
  setValue(nextValue);
15324
15487
  }
15325
15488
  };
15489
+ const handleCreateInDialog = function (name, color) {
15490
+ try {
15491
+ const _temp2 = function () {
15492
+ if (onCreate && dialog) {
15493
+ const _temp = _catch(function () {
15494
+ return Promise.resolve(onCreate(name, color)).then(function (option) {
15495
+ setValue(option.value);
15496
+ // To avoid memory leak we should bind onClose of dialog with setOpen(false)
15497
+ setOpen(false);
15498
+ });
15499
+ }, function (err) {
15500
+ console.log(err);
15501
+ });
15502
+ if (_temp && _temp.then) return _temp.then(function () {});
15503
+ }
15504
+ }();
15505
+ return Promise.resolve(_temp2 && _temp2.then ? _temp2.then(function () {}) : void 0);
15506
+ } catch (e) {
15507
+ return Promise.reject(e);
15508
+ }
15509
+ };
15326
15510
  const className = cn('border-grey-300 rounded border bg-white py-1.5 shadow-md outline-none"', createCollectionClassName());
15327
15511
  return /*#__PURE__*/React__default.createElement(Select2Context.Provider, {
15328
15512
  value: context
15329
15513
  }, /*#__PURE__*/React__default.createElement(PopoverPrimitive.Root, {
15330
15514
  open: open,
15331
15515
  onOpenChange: setOpen
15332
- }, /*#__PURE__*/React__default.createElement(ControlledHiddenField, {
15333
- emptyValue: emptyValue,
15334
- multiple: multiple || tags,
15335
- name: name,
15336
- options: flattenedChildren.map(child => child.props.value),
15337
- parentRef: internalRef,
15338
- setValue: setValue,
15339
- value: value
15340
- }), /*#__PURE__*/React__default.createElement(PopoverPrimitive.Trigger, {
15516
+ }, /*#__PURE__*/React__default.createElement(PopoverPrimitive.Trigger, {
15341
15517
  asChild: true,
15342
15518
  "data-taco": "Select2"
15343
15519
  }, /*#__PURE__*/React__default.createElement(Trigger$7, Object.assign({}, otherProps, {
@@ -15398,7 +15574,24 @@ const Select2 = /*#__PURE__*/React__default.forwardRef(function Select2(props, r
15398
15574
  }, searchQuery === '' ? ( /*#__PURE__*/React__default.createElement(Collection$1, null, initialChildren)) : ( /*#__PURE__*/React__default.createElement(Collection$1, null, filteredChildren)), onCreate ? /*#__PURE__*/React__default.createElement(Create, {
15399
15575
  onCreate: onCreate,
15400
15576
  options: flattenedChildren
15401
- }) : null)))))));
15577
+ }) : null)), dialog && dialogTriggerTitle && ( /*#__PURE__*/React__default.createElement("span", {
15578
+ className: "border-grey-300 h-9 border-t p-1.5"
15579
+ }, /*#__PURE__*/React__default.createElement(Button$1, {
15580
+ appearance: "discrete",
15581
+ disabled: dialogTriggerDisabled,
15582
+ dialog: dialog(handleCreateInDialog)
15583
+ }, /*#__PURE__*/React__default.createElement(Icon, {
15584
+ className: "text-xs",
15585
+ name: "circle-plus"
15586
+ }), " ", dialogTriggerTitle)))))), /*#__PURE__*/React__default.createElement(ControlledHiddenField, {
15587
+ emptyValue: emptyValue,
15588
+ multiple: multiple || tags,
15589
+ name: name,
15590
+ options: flattenedChildren.map(child => child.props.value),
15591
+ parentRef: internalRef,
15592
+ setValue: setValue,
15593
+ value: value
15594
+ })));
15402
15595
  });
15403
15596
  Select2.Option = Option$1;
15404
15597
  Select2.Group = Group$3;
@@ -15708,8 +15901,7 @@ const FilterColumn = /*#__PURE__*/React__default.forwardRef((props, ref) => {
15708
15901
  allColumns,
15709
15902
  filters,
15710
15903
  onChange: handleChange,
15711
- value = null,
15712
- ...attributes
15904
+ value = null
15713
15905
  } = props;
15714
15906
  const {
15715
15907
  texts
@@ -15722,13 +15914,13 @@ const FilterColumn = /*#__PURE__*/React__default.forwardRef((props, ref) => {
15722
15914
  message: warning ? texts.table.filters.hiddenColumn : undefined,
15723
15915
  warning: warning,
15724
15916
  className: "min-h-[theme(spacing.8)]"
15725
- }, /*#__PURE__*/React__default.createElement(Select2, Object.assign({}, attributes, {
15917
+ }, /*#__PURE__*/React__default.createElement(Select2, {
15726
15918
  ref: ref,
15727
15919
  className: "focus:yt-focus !w-32 flex-shrink-0 ",
15728
15920
  emptyValue: null,
15729
15921
  onChange: handleChange,
15730
15922
  value: value
15731
- }), allColumns.map(column => {
15923
+ }, allColumns.map(column => {
15732
15924
  var _column$columnDef$met, _column$parent, _column$parent$column;
15733
15925
  return /*#__PURE__*/React__default.createElement(Select2.Option, {
15734
15926
  key: column.id,
@@ -15748,19 +15940,18 @@ function FilterComparator(props) {
15748
15940
  const {
15749
15941
  column,
15750
15942
  onChange: handleChange,
15751
- value,
15752
- ...attributes
15943
+ value
15753
15944
  } = props;
15754
15945
  const {
15755
15946
  texts
15756
15947
  } = useLocalization();
15757
15948
  const validComparators = guessComparatorsBasedOnControl(column);
15758
- return /*#__PURE__*/React__default.createElement(Select2, Object.assign({}, attributes, {
15949
+ return /*#__PURE__*/React__default.createElement(Select2, {
15759
15950
  className: "!w-32 flex-shrink-0",
15760
15951
  disabled: !column,
15761
15952
  onChange: handleChange,
15762
15953
  value: value
15763
- }), validComparators.map(comparator => ( /*#__PURE__*/React__default.createElement(Select2.Option, {
15954
+ }, validComparators.map(comparator => ( /*#__PURE__*/React__default.createElement(Select2.Option, {
15764
15955
  key: comparator,
15765
15956
  value: comparator
15766
15957
  }, getComparatorText(comparator, texts, column)))));
@@ -16268,7 +16459,7 @@ function TableGrid(props) {
16268
16459
  key: props.id,
16269
16460
  header: props,
16270
16461
  scrollToIndex: table.renderer.scrollToIndex
16271
- }))))))), table.instance.getRowModel().rows.length ? ( /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(Body, {
16462
+ }))))))), table.instance.getCoreRowModel().rows.length ? ( /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(Body, {
16272
16463
  enableHorizontalArrowKeyNavigation: enableHorizontalArrowKeyNavigation,
16273
16464
  table: table.instance,
16274
16465
  tableElement: table.ref.current,
@@ -17779,7 +17970,7 @@ const useTableRowCreation = (data, tableRef) => {
17779
17970
  };
17780
17971
  };
17781
17972
 
17782
- function useTableEditingListener(table) {
17973
+ function useTableEditingListener(table, tableRef) {
17783
17974
  const tableMeta = table.options.meta;
17784
17975
  const saveChanges = () => {
17785
17976
  requestAnimationFrame(() => {
@@ -17821,6 +18012,20 @@ function useTableEditingListener(table) {
17821
18012
  window.removeEventListener('beforeunload', showUnsavedChangesWarning);
17822
18013
  };
17823
18014
  }, [tableMeta.editing.isEditing, hasChanges]);
18015
+ React__default.useEffect(() => {
18016
+ const onClickOutside = event => {
18017
+ if (tableMeta.editing.isEditing) {
18018
+ var _event$target$getAttr, _event$target;
18019
+ const element = (_event$target$getAttr = (_event$target = event.target) === null || _event$target === void 0 ? void 0 : _event$target.getAttribute('data-taco')) !== null && _event$target$getAttr !== void 0 ? _event$target$getAttr : '';
18020
+ const insideTable = isElementInsideOrTriggeredFromContainer(event.target, tableRef.current) || element === 'backdrop';
18021
+ if (!insideTable) {
18022
+ saveChanges();
18023
+ }
18024
+ }
18025
+ };
18026
+ document.addEventListener('click', onClickOutside);
18027
+ return () => document.removeEventListener('click', onClickOutside);
18028
+ }, [saveChanges, tableMeta.editing.isEditing]);
17824
18029
  }
17825
18030
 
17826
18031
  function willRowMove(cell, change, rowIndex) {
@@ -17899,14 +18104,6 @@ function useTableEditing(isEnabled = false, handleSave, validator) {
17899
18104
  // changes are saved as soon as the active row changes, so in most cases this will only contain the active row's changes
17900
18105
  // but not always - if validation or server requests fail when saving, those rows remain until the failure is resolved
17901
18106
  const pendingChangesFns = usePendingChanges(isEnabled, handleSave, validator);
17902
- // if focus leaves the table in any way, trigger a save
17903
- const handleBlur = React__default.useCallback(event => {
17904
- // custom event from datepicker, and it doesn't have the relatedTarget property set.
17905
- const isClosingDatepicker = dateFns.isDate(event.detail);
17906
- if (event.relatedTarget !== event.currentTarget && !isElementInsideOrTriggeredFromContainer(event.relatedTarget, event.currentTarget) && !isClosingDatepicker) {
17907
- pendingChangesFns.saveChanges();
17908
- }
17909
- }, [pendingChangesFns.saveChanges]);
17910
18107
  useGlobalKeyDown(isEnabled && isEditing ? {
17911
18108
  key: 's',
17912
18109
  meta: true,
@@ -17923,8 +18120,7 @@ function useTableEditing(isEnabled = false, handleSave, validator) {
17923
18120
  toggleEditing: isEnabled ? toggleEditing : () => undefined,
17924
18121
  lastFocusedCellIndex,
17925
18122
  setLastFocusedCellIndex,
17926
- ...pendingChangesFns,
17927
- handleBlur: isEnabled && isEditing ? handleBlur : () => undefined
18123
+ ...pendingChangesFns
17928
18124
  };
17929
18125
  }
17930
18126
  function usePendingChanges(isEnabled, handleSave, validator) {
@@ -18248,7 +18444,7 @@ function RowMoveIndicator(props) {
18248
18444
  if (cellRef.current) {
18249
18445
  if (isActiveRow && !!moveReason) {
18250
18446
  var _cellRef$current$pare;
18251
- const firstChild = (_cellRef$current$pare = cellRef.current.parentElement) === null || _cellRef$current$pare === void 0 ? void 0 : _cellRef$current$pare.querySelector('td');
18447
+ const firstChild = (_cellRef$current$pare = cellRef.current.parentElement) === null || _cellRef$current$pare === void 0 ? void 0 : _cellRef$current$pare.querySelector(`td[data-taco="cell-control"]`);
18252
18448
  if (cellRef.current === firstChild) {
18253
18449
  var _cellRef$current$pare2;
18254
18450
  setShow(true);
@@ -18448,7 +18644,7 @@ function useEditingCellAutofocus(props) {
18448
18644
  tableElement.scrollTo(props.cell.column.getStart() - columnFreezingOffset, tableElement.scrollTop);
18449
18645
  }
18450
18646
  }
18451
- if (event.target === event.currentTarget) {
18647
+ if (event.target === event.currentTarget && hasFocusableElement(event.currentTarget)) {
18452
18648
  focusManager.focusNext();
18453
18649
  }
18454
18650
  };
@@ -18503,6 +18699,7 @@ function EditingControlCell(props) {
18503
18699
  const cellAttributes = {
18504
18700
  ...getCellAttributes(cell, index, isHighlighted),
18505
18701
  'data-cell-editing-invalid': error ? true : undefined,
18702
+ 'data-taco': 'cell-control',
18506
18703
  onFocus: handleFocus,
18507
18704
  ref: cellRef,
18508
18705
  tabIndex: -1
@@ -18700,16 +18897,24 @@ function EditingActionMenu(props) {
18700
18897
  hasErrors,
18701
18898
  onClear: handleClear,
18702
18899
  onExit: handleExit,
18703
- onSave: handleSave
18900
+ onSave: handleSave,
18901
+ isLastRow
18704
18902
  } = props;
18705
18903
  const {
18706
18904
  texts
18707
18905
  } = useLocalization();
18906
+ const handleKeyDown = event => {
18907
+ // normally we handle this on change of active row, but when tabbing out of the last row the active row state stays on the last one.
18908
+ if (isLastRow && hasChanges && event.key === 'Tab') {
18909
+ handleSave();
18910
+ }
18911
+ };
18708
18912
  return /*#__PURE__*/React__default.createElement(IconButton, {
18709
18913
  appearance: "transparent",
18710
18914
  "aria-label": texts.table3.editing.actions.tooltip,
18711
18915
  className: "group-[[data-row-editing-status]]/row:hidden",
18712
18916
  icon: "more",
18917
+ onKeyDown: handleKeyDown,
18713
18918
  menu: menuProps => ( /*#__PURE__*/React__default.createElement(Menu$1, Object.assign({}, menuProps), /*#__PURE__*/React__default.createElement(Menu$1.Content, null, /*#__PURE__*/React__default.createElement(Menu$1.Item, {
18714
18919
  icon: "tick",
18715
18920
  disabled: !hasChanges || hasErrors,
@@ -18806,7 +19011,7 @@ function Row$2(props) {
18806
19011
  }
18807
19012
  }, [tableMeta.editing.isEditing, tableMeta.rowActive.rowActiveIndex, tableMeta.editing.lastFocusedCellIndex]);
18808
19013
  const handleFocus = React__default.useCallback(event => {
18809
- if (tableMeta.editing.isEditing && isActiveRow) {
19014
+ if (tableMeta.editing.isEditing) {
18810
19015
  var _event$target$closest, _event$target$closest2;
18811
19016
  const cellIndex = Number((_event$target$closest = (_event$target$closest2 = event.target.closest('td')) === null || _event$target$closest2 === void 0 ? void 0 : _event$target$closest2.getAttribute('data-cell-index')) !== null && _event$target$closest !== void 0 ? _event$target$closest : undefined);
18812
19017
  if (!isNaN(cellIndex)) {
@@ -18839,7 +19044,8 @@ function useTable3(props, ref) {
18839
19044
  hasErrors: editing.hasRowErrors(rowId),
18840
19045
  onClear: () => editing.resetChanges(rowId),
18841
19046
  onSave: () => editing.saveChanges(rowId),
18842
- onExit: () => editing.toggleEditing(false)
19047
+ onExit: () => editing.toggleEditing(false),
19048
+ isLastRow: table.meta.rowActive.rowActiveIndex === table.meta.length - 1
18843
19049
  }))] : props.rowActions
18844
19050
  };
18845
19051
  const meta = {
@@ -18847,7 +19053,7 @@ function useTable3(props, ref) {
18847
19053
  };
18848
19054
  const table = useTable(extendedProps, ref, RENDERERS$1, meta);
18849
19055
  // listeners
18850
- useTableEditingListener(table.instance);
19056
+ useTableEditingListener(table.instance, table.ref);
18851
19057
  React__default.useEffect(() => {
18852
19058
  if (table.ref.current) {
18853
19059
  table.ref.current.instance.toggleEditing = enabled => table.meta.editing.toggleEditing(enabled !== null && enabled !== void 0 ? enabled : editing => !editing);
@@ -19036,15 +19242,9 @@ Group$5.displayName = 'Table3Group';
19036
19242
  const BaseTable3 = /*#__PURE__*/fixedForwardRef(function BaseTable3(props, ref) {
19037
19243
  var _table3$meta$editing, _table3$meta$editing2;
19038
19244
  const table3 = useTable3(props, ref);
19039
- const handleBlur = event => {
19040
- if (table3.meta.editing.isEditing) {
19041
- table3.meta.editing.handleBlur(event);
19042
- }
19043
- };
19044
19245
  const gridAttributes = {
19045
19246
  'data-table-editing-mode': (_table3$meta$editing = table3.meta.editing) !== null && _table3$meta$editing !== void 0 && _table3$meta$editing.isEditing ? (_table3$meta$editing2 = table3.meta.editing) !== null && _table3$meta$editing2 !== void 0 && _table3$meta$editing2.isDetailedMode ? 'detailed' : 'normal' : undefined,
19046
- enableHorizontalArrowKeyNavigation: table3.meta.editing.isEditing,
19047
- onBlur: handleBlur
19247
+ enableHorizontalArrowKeyNavigation: table3.meta.editing.isEditing
19048
19248
  };
19049
19249
  const hasValidationErrors = table3.meta.editing.hasErrors(table3.instance, table3.ref);
19050
19250
  return /*#__PURE__*/React__default.createElement(Table, null, /*#__PURE__*/React__default.createElement(Table.Toolbar, {