@procore/saved-views 1.1.0-alpha.3 → 1.1.0-alpha.5

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.
@@ -110,7 +110,7 @@ var require_react_is_production_min = __commonJS({
110
110
  var E2 = n2;
111
111
  var F2 = c2;
112
112
  var G2 = f2;
113
- var H3 = e2;
113
+ var H2 = e2;
114
114
  var I = l2;
115
115
  exports.ContextConsumer = h;
116
116
  exports.ContextProvider = z2;
@@ -121,7 +121,7 @@ var require_react_is_production_min = __commonJS({
121
121
  exports.Memo = E2;
122
122
  exports.Portal = F2;
123
123
  exports.Profiler = G2;
124
- exports.StrictMode = H3;
124
+ exports.StrictMode = H2;
125
125
  exports.Suspense = I;
126
126
  exports.isAsyncMode = function() {
127
127
  return false;
@@ -7868,7 +7868,7 @@ function __rest(s2, e2) {
7868
7868
  return t2;
7869
7869
  }
7870
7870
 
7871
- // ../../node_modules/@procore/core-icons/dist/Icon.js
7871
+ // node_modules/@procore/core-icons/dist/Icon.js
7872
7872
  import * as React from "react";
7873
7873
  function getSize(size) {
7874
7874
  if (size === "sm") {
@@ -7887,7 +7887,7 @@ function Icon(_a) {
7887
7887
  return React.isValidElement(children) ? React.cloneElement(children, __assign(__assign({ "aria-hidden": true, "data-qa": "ci-".concat(props.name) }, props), { width: getSize(props.size), height: getSize(props.size), focusable: false, style: __assign(__assign({}, props.style), { flex: "0 0 auto" }) })) : null;
7888
7888
  }
7889
7889
 
7890
- // ../../node_modules/@procore/core-icons/dist/icons/Building.js
7890
+ // node_modules/@procore/core-icons/dist/icons/Building.js
7891
7891
  import * as React2 from "react";
7892
7892
  var Building = React2.forwardRef(function Building2(props, ref) {
7893
7893
  return React2.createElement(
@@ -7903,7 +7903,7 @@ var Building = React2.forwardRef(function Building2(props, ref) {
7903
7903
  Building.displayName = "Building";
7904
7904
  var Building_default = Building;
7905
7905
 
7906
- // ../../node_modules/@procore/core-icons/dist/icons/ChevronDown.js
7906
+ // node_modules/@procore/core-icons/dist/icons/ChevronDown.js
7907
7907
  import * as React3 from "react";
7908
7908
  var ChevronDown = React3.forwardRef(function ChevronDown2(props, ref) {
7909
7909
  return React3.createElement(
@@ -7919,7 +7919,7 @@ var ChevronDown = React3.forwardRef(function ChevronDown2(props, ref) {
7919
7919
  ChevronDown.displayName = "ChevronDown";
7920
7920
  var ChevronDown_default = ChevronDown;
7921
7921
 
7922
- // ../../node_modules/@procore/core-icons/dist/icons/ChevronRight.js
7922
+ // node_modules/@procore/core-icons/dist/icons/ChevronRight.js
7923
7923
  import * as React4 from "react";
7924
7924
  var ChevronRight = React4.forwardRef(function ChevronRight2(props, ref) {
7925
7925
  return React4.createElement(
@@ -7935,7 +7935,7 @@ var ChevronRight = React4.forwardRef(function ChevronRight2(props, ref) {
7935
7935
  ChevronRight.displayName = "ChevronRight";
7936
7936
  var ChevronRight_default = ChevronRight;
7937
7937
 
7938
- // ../../node_modules/@procore/core-icons/dist/icons/Clear.js
7938
+ // node_modules/@procore/core-icons/dist/icons/Clear.js
7939
7939
  import * as React5 from "react";
7940
7940
  var Clear = React5.forwardRef(function Clear2(props, ref) {
7941
7941
  return React5.createElement(
@@ -7951,7 +7951,7 @@ var Clear = React5.forwardRef(function Clear2(props, ref) {
7951
7951
  Clear.displayName = "Clear";
7952
7952
  var Clear_default = Clear;
7953
7953
 
7954
- // ../../node_modules/@procore/core-icons/dist/icons/Excavator.js
7954
+ // node_modules/@procore/core-icons/dist/icons/Excavator.js
7955
7955
  import * as React6 from "react";
7956
7956
  var Excavator = React6.forwardRef(function Excavator2(props, ref) {
7957
7957
  return React6.createElement(
@@ -7968,7 +7968,7 @@ var Excavator = React6.forwardRef(function Excavator2(props, ref) {
7968
7968
  Excavator.displayName = "Excavator";
7969
7969
  var Excavator_default = Excavator;
7970
7970
 
7971
- // ../../node_modules/@procore/core-icons/dist/icons/ExpandSidebar.js
7971
+ // node_modules/@procore/core-icons/dist/icons/ExpandSidebar.js
7972
7972
  import * as React7 from "react";
7973
7973
  var ExpandSidebar = React7.forwardRef(function ExpandSidebar2(props, ref) {
7974
7974
  return React7.createElement(
@@ -7986,7 +7986,7 @@ var ExpandSidebar = React7.forwardRef(function ExpandSidebar2(props, ref) {
7986
7986
  ExpandSidebar.displayName = "ExpandSidebar";
7987
7987
  var ExpandSidebar_default = ExpandSidebar;
7988
7988
 
7989
- // ../../node_modules/@procore/core-icons/dist/icons/Help.js
7989
+ // node_modules/@procore/core-icons/dist/icons/Help.js
7990
7990
  import * as React8 from "react";
7991
7991
  var Help = React8.forwardRef(function Help2(props, ref) {
7992
7992
  return React8.createElement(
@@ -8002,7 +8002,7 @@ var Help = React8.forwardRef(function Help2(props, ref) {
8002
8002
  Help.displayName = "Help";
8003
8003
  var Help_default = Help;
8004
8004
 
8005
- // ../../node_modules/@procore/core-icons/dist/icons/Link.js
8005
+ // node_modules/@procore/core-icons/dist/icons/Link.js
8006
8006
  import * as React9 from "react";
8007
8007
  var Link = React9.forwardRef(function Link2(props, ref) {
8008
8008
  return React9.createElement(
@@ -8019,7 +8019,7 @@ var Link = React9.forwardRef(function Link2(props, ref) {
8019
8019
  Link.displayName = "Link";
8020
8020
  var Link_default = Link;
8021
8021
 
8022
- // ../../node_modules/@procore/core-icons/dist/icons/Person.js
8022
+ // node_modules/@procore/core-icons/dist/icons/Person.js
8023
8023
  import * as React10 from "react";
8024
8024
  var Person = React10.forwardRef(function Person2(props, ref) {
8025
8025
  return React10.createElement(
@@ -8035,7 +8035,7 @@ var Person = React10.forwardRef(function Person2(props, ref) {
8035
8035
  Person.displayName = "Person";
8036
8036
  var Person_default = Person;
8037
8037
 
8038
- // ../../node_modules/@procore/core-icons/dist/icons/Plus.js
8038
+ // node_modules/@procore/core-icons/dist/icons/Plus.js
8039
8039
  import * as React11 from "react";
8040
8040
  var Plus = React11.forwardRef(function Plus2(props, ref) {
8041
8041
  return React11.createElement(
@@ -8148,7 +8148,7 @@ function stylis_min(W2) {
8148
8148
  }
8149
8149
  k2 = M2(c2, r2, k2, g2, a2 + 1);
8150
8150
  t2 = k2.length;
8151
- 0 < A2 && (r2 = X2(O2, f2, I), C2 = H3(3, k2, r2, c2, D2, z2, t2, g2, a2, h), f2 = r2.join(""), void 0 !== C2 && 0 === (t2 = (k2 = C2.trim()).length) && (g2 = 0, k2 = ""));
8151
+ 0 < A2 && (r2 = X2(O2, f2, I), C2 = H2(3, k2, r2, c2, D2, z2, t2, g2, a2, h), f2 = r2.join(""), void 0 !== C2 && 0 === (t2 = (k2 = C2.trim()).length) && (g2 = 0, k2 = ""));
8152
8152
  if (0 < t2)
8153
8153
  switch (g2) {
8154
8154
  case 115:
@@ -8181,7 +8181,7 @@ function stylis_min(W2) {
8181
8181
  case 59:
8182
8182
  f2 = (0 < r2 ? f2.replace(N, "") : f2).trim();
8183
8183
  if (1 < (t2 = f2.length))
8184
- switch (0 === u2 && (q2 = f2.charCodeAt(0), 45 === q2 || 96 < q2 && 123 > q2) && (t2 = (f2 = f2.replace(" ", ":")).length), 0 < A2 && void 0 !== (C2 = H3(1, f2, c2, d, D2, z2, p.length, h, a2, h)) && 0 === (t2 = (f2 = C2.trim()).length) && (f2 = "\0\0"), q2 = f2.charCodeAt(0), g2 = f2.charCodeAt(1), q2) {
8184
+ switch (0 === u2 && (q2 = f2.charCodeAt(0), 45 === q2 || 96 < q2 && 123 > q2) && (t2 = (f2 = f2.replace(" ", ":")).length), 0 < A2 && void 0 !== (C2 = H2(1, f2, c2, d, D2, z2, p.length, h, a2, h)) && 0 === (t2 = (f2 = C2.trim()).length) && (f2 = "\0\0"), q2 = f2.charCodeAt(0), g2 = f2.charCodeAt(1), q2) {
8185
8185
  case 0:
8186
8186
  break;
8187
8187
  case 64:
@@ -8201,7 +8201,7 @@ function stylis_min(W2) {
8201
8201
  case 13:
8202
8202
  case 10:
8203
8203
  47 === b2 ? b2 = 0 : 0 === 1 + q2 && 107 !== h && 0 < f2.length && (r2 = 1, f2 += "\0");
8204
- 0 < A2 * Y2 && H3(0, f2, c2, d, D2, z2, p.length, h, a2, h);
8204
+ 0 < A2 * Y2 && H2(0, f2, c2, d, D2, z2, p.length, h, a2, h);
8205
8205
  z2 = 1;
8206
8206
  D2++;
8207
8207
  break;
@@ -8310,7 +8310,7 @@ function stylis_min(W2) {
8310
8310
  t2 = p.length;
8311
8311
  if (0 < t2) {
8312
8312
  r2 = c2;
8313
- if (0 < A2 && (C2 = H3(2, p, r2, d, D2, z2, t2, h, a2, h), void 0 !== C2 && 0 === (p = C2).length))
8313
+ if (0 < A2 && (C2 = H2(2, p, r2, d, D2, z2, t2, h, a2, h), void 0 !== C2 && 0 === (p = C2).length))
8314
8314
  return G3 + p + F3;
8315
8315
  p = r2.join(",") + "{" + p + "}";
8316
8316
  if (0 !== w2 * E2) {
@@ -8487,7 +8487,7 @@ function stylis_min(W2) {
8487
8487
  var e2 = P4(c2, c2.charCodeAt(0), c2.charCodeAt(1), c2.charCodeAt(2));
8488
8488
  return e2 !== c2 + ";" ? e2.replace(oa, " or ($1)").substring(4) : "(" + c2 + ")";
8489
8489
  }
8490
- function H3(d, c2, e2, h, a2, m2, b2, v2, n2, q2) {
8490
+ function H2(d, c2, e2, h, a2, m2, b2, v2, n2, q2) {
8491
8491
  for (var g2 = 0, x2 = c2, w3; g2 < A2; ++g2) {
8492
8492
  switch (w3 = S2[g2].call(B2, d, x2, e2, h, a2, m2, b2, v2, n2, q2)) {
8493
8493
  case void 0:
@@ -8531,11 +8531,11 @@ function stylis_min(W2) {
8531
8531
  V2 = e2;
8532
8532
  e2 = [V2];
8533
8533
  if (0 < A2) {
8534
- var h = H3(-1, c2, e2, e2, D2, z2, 0, 0, 0, 0);
8534
+ var h = H2(-1, c2, e2, e2, D2, z2, 0, 0, 0, 0);
8535
8535
  void 0 !== h && "string" === typeof h && (c2 = h);
8536
8536
  }
8537
8537
  var a2 = M2(O2, e2, c2, 0, 0);
8538
- 0 < A2 && (h = H3(-2, a2, e2, e2, D2, z2, a2.length, 0, 0, 0), void 0 !== h && (a2 = h));
8538
+ 0 < A2 && (h = H2(-2, a2, e2, e2, D2, z2, a2.length, 0, 0, 0), void 0 !== h && (a2 = h));
8539
8539
  V2 = "";
8540
8540
  E2 = 0;
8541
8541
  z2 = D2 = 1;
@@ -9343,8 +9343,8 @@ var useSavedViewsPanel = (domain, tableName) => {
9343
9343
  setIsOpen(!isOpen);
9344
9344
  localStorage.setItem(key(domain, tableName), JSON.stringify(!isOpen));
9345
9345
  };
9346
- const Button7 = () => /* @__PURE__ */ React14.createElement(SavedViewsButton, { handleClick, isOpen });
9347
- return { isOpen, SavedViewsButton: Button7 };
9346
+ const Button8 = () => /* @__PURE__ */ React14.createElement(SavedViewsButton, { handleClick, isOpen });
9347
+ return { isOpen, SavedViewsButton: Button8 };
9348
9348
  };
9349
9349
  var useSavedViewsPanel_default = useSavedViewsPanel;
9350
9350
 
@@ -9426,6 +9426,17 @@ var SavedViewCollectionMenuItem = (props) => {
9426
9426
  label: i18n.t("savedViews.actions.delete")
9427
9427
  }
9428
9428
  ];
9429
+ const preventEventBubbleToNotTriggerViewSelectEvent = React15.useCallback(
9430
+ (e2) => {
9431
+ e2.stopPropagation();
9432
+ },
9433
+ []
9434
+ );
9435
+ const hasUpdateButton = props.item.view_level !== "default" && props.canUpdate;
9436
+ const hasCopyShareLinkButton = props.item.view_level !== "default" && props.selected && !props.canUpdate && props.item.id !== "temporary";
9437
+ const hasClearTemporaryButton = props.item.id === "temporary";
9438
+ const hasOverflowMenu = props.item.view_level !== "default" && props.canEditOrDelete;
9439
+ const hasActions = hasUpdateButton || hasCopyShareLinkButton || hasClearTemporaryButton || hasOverflowMenu;
9429
9440
  return /* @__PURE__ */ React15.createElement(
9430
9441
  Container2,
9431
9442
  {
@@ -9435,7 +9446,8 @@ var SavedViewCollectionMenuItem = (props) => {
9435
9446
  "aria-label": i18n.t("savedViews.ariaLabels.menuItem", {
9436
9447
  name: props.item.name
9437
9448
  }),
9438
- "data-testid": "saved-view-collection-menu-item"
9449
+ "data-testid": "saved-view-collection-menu-item",
9450
+ onKeyDown: preventEventBubbleToNotTriggerViewSelectEvent
9439
9451
  },
9440
9452
  /* @__PURE__ */ React15.createElement(
9441
9453
  "span",
@@ -9445,7 +9457,7 @@ var SavedViewCollectionMenuItem = (props) => {
9445
9457
  },
9446
9458
  props.item.name
9447
9459
  ),
9448
- /* @__PURE__ */ React15.createElement(RowActionsBox, null, /* @__PURE__ */ React15.createElement(Box, { justifyContent: "space-between" }, props.item.view_level !== "default" && props.canUpdate && /* @__PURE__ */ React15.createElement("div", null, /* @__PURE__ */ React15.createElement(
9460
+ hasActions && /* @__PURE__ */ React15.createElement(RowActionsBox, null, /* @__PURE__ */ React15.createElement(Box, { justifyContent: "space-between" }, hasUpdateButton && /* @__PURE__ */ React15.createElement(
9449
9461
  Button2,
9450
9462
  {
9451
9463
  onClick: updateItem,
@@ -9456,7 +9468,7 @@ var SavedViewCollectionMenuItem = (props) => {
9456
9468
  loading: props.isUpdateProcessing
9457
9469
  },
9458
9470
  i18n.t("savedViews.actions.update")
9459
- )), props.item.view_level !== "default" && props.selected && !props.canUpdate && props.item.id !== "temporary" && /* @__PURE__ */ React15.createElement("div", null, /* @__PURE__ */ React15.createElement(
9471
+ ), hasCopyShareLinkButton && /* @__PURE__ */ React15.createElement(
9460
9472
  Button2,
9461
9473
  {
9462
9474
  onClick: copyShareLink,
@@ -9466,7 +9478,7 @@ var SavedViewCollectionMenuItem = (props) => {
9466
9478
  "data-testid": "copy-share-link-button"
9467
9479
  },
9468
9480
  /* @__PURE__ */ React15.createElement(IconWrapper, null, /* @__PURE__ */ React15.createElement(Link_default, { size: "sm" }))
9469
- )), props.item.id === "temporary" && /* @__PURE__ */ React15.createElement("div", null, /* @__PURE__ */ React15.createElement(
9481
+ ), hasClearTemporaryButton && /* @__PURE__ */ React15.createElement(
9470
9482
  Button2,
9471
9483
  {
9472
9484
  onClick: (e2) => {
@@ -9481,7 +9493,7 @@ var SavedViewCollectionMenuItem = (props) => {
9481
9493
  "data-testid": "clear-temporary-view-button"
9482
9494
  },
9483
9495
  /* @__PURE__ */ React15.createElement(IconWrapper, null, /* @__PURE__ */ React15.createElement(Clear_default, { size: "sm" }))
9484
- ))), /* @__PURE__ */ React15.createElement(Box, null, props.item.view_level !== "default" && props.canEditOrDelete && /* @__PURE__ */ React15.createElement("div", { onClick: (e2) => e2.stopPropagation() }, /* @__PURE__ */ React15.createElement(
9496
+ )), /* @__PURE__ */ React15.createElement(Box, null, hasOverflowMenu && /* @__PURE__ */ React15.createElement(
9485
9497
  DropdownFlyout,
9486
9498
  {
9487
9499
  "data-testid": "saved-view-overflow-button",
@@ -9492,7 +9504,7 @@ var SavedViewCollectionMenuItem = (props) => {
9492
9504
  variant: "tertiary",
9493
9505
  disabled: props.isUpdateProcessing
9494
9506
  }
9495
- ))))
9507
+ )))
9496
9508
  );
9497
9509
  };
9498
9510
 
@@ -9505,7 +9517,7 @@ var ExpandedPanel = styled_components_esm_default(Panel)`
9505
9517
  `;
9506
9518
 
9507
9519
  // src/components/panels/PanelContent.tsx
9508
- import { Flex as Flex3, useI18nContext as useI18nContext5 } from "@procore/core-react";
9520
+ import { Flex as Flex2, MenuImperative as MenuImperative2, useI18nContext as useI18nContext5 } from "@procore/core-react";
9509
9521
  import { useToastAlertContext as useToastAlertContext2 } from "@procore/toast-alert";
9510
9522
  import React17 from "react";
9511
9523
 
@@ -9772,18 +9784,40 @@ var getOrderedVisibleColumns = (columns, idKey) => {
9772
9784
  });
9773
9785
  return [leftAction, ...middleColumns, rightAction].filter(Boolean);
9774
9786
  };
9787
+ var SMART_GRID_COLUMN_COMPARE_KEYS = [
9788
+ "colId",
9789
+ "hide",
9790
+ "width",
9791
+ "sort",
9792
+ "sortIndex",
9793
+ "pinned",
9794
+ "rowGroup",
9795
+ "rowGroupIndex",
9796
+ "pivot",
9797
+ "pivotIndex"
9798
+ ];
9799
+ var DATA_TABLE_COLUMN_COMPARE_KEYS = [
9800
+ "field",
9801
+ "hidden",
9802
+ "width",
9803
+ "sort",
9804
+ "sortIndex",
9805
+ "pinned",
9806
+ "rowGroup",
9807
+ "rowGroupIndex"
9808
+ ];
9775
9809
  var cleanObject = (table_config, provider) => {
9776
9810
  if (provider === "smart-grid") {
9777
9811
  const smartGridConfig = table_config;
9778
- if (!smartGridConfig.filterState)
9779
- return table_config;
9780
9812
  const orderedColumns = getOrderedVisibleColumns(
9781
9813
  smartGridConfig.columnState,
9782
9814
  "colId"
9783
9815
  );
9784
9816
  return {
9785
9817
  ...smartGridConfig,
9786
- columnState: orderedColumns
9818
+ columnState: orderedColumns.map(
9819
+ (col) => import_lodash.default.pick(col, SMART_GRID_COLUMN_COMPARE_KEYS)
9820
+ )
9787
9821
  };
9788
9822
  } else {
9789
9823
  const dataTableConfig = table_config;
@@ -9795,7 +9829,9 @@ var cleanObject = (table_config, provider) => {
9795
9829
  );
9796
9830
  return {
9797
9831
  ...dataTableConfig,
9798
- columnState: orderedColumns,
9832
+ columnState: orderedColumns.map(
9833
+ (col) => import_lodash.default.pick(col, DATA_TABLE_COLUMN_COMPARE_KEYS)
9834
+ ),
9799
9835
  serverFilters: dataTableConfig.serverFilters.map(
9800
9836
  (filter) => import_lodash.default.omit(filter, "filterRenderer")
9801
9837
  )
@@ -9857,9 +9893,9 @@ var useGroups = (isProjectLevelTool) => {
9857
9893
 
9858
9894
  // src/components/panels/ViewLevelHeader.tsx
9859
9895
  import {
9896
+ Box as Box2,
9897
+ Button as Button3,
9860
9898
  colors,
9861
- Flex as Flex2,
9862
- spacing,
9863
9899
  Typography,
9864
9900
  useI18nContext as useI18nContext4
9865
9901
  } from "@procore/core-react";
@@ -9874,27 +9910,31 @@ var groupIcon = (group) => {
9874
9910
  return /* @__PURE__ */ React16.createElement(Building_default, null);
9875
9911
  }
9876
9912
  };
9877
- var Header = styled_components_esm_default(Flex2)`
9878
- width: 100%;
9913
+ var StyledButton2 = styled_components_esm_default(Button3)`
9879
9914
  &:hover {
9880
9915
  background-color: ${colors.gray98};
9881
9916
  }
9882
9917
  `;
9883
9918
  var ViewLevelHeader = ({ expanded, toggleGroup, group }) => {
9884
9919
  const I18n = useI18nContext4();
9885
- return /* @__PURE__ */ React16.createElement(
9886
- Header,
9920
+ return /* @__PURE__ */ React16.createElement(Box2, { style: { width: "100%" } }, /* @__PURE__ */ React16.createElement(
9921
+ StyledButton2,
9887
9922
  {
9888
- alignItems: "center",
9889
- padding: `${spacing.sm}px`,
9890
- gap: `${spacing.sm}px`,
9891
- style: { cursor: "pointer" },
9892
- onClick: () => toggleGroup(group)
9923
+ block: true,
9924
+ style: {
9925
+ justifyContent: "start",
9926
+ height: "40px"
9927
+ },
9928
+ variant: "tertiary",
9929
+ size: "sm",
9930
+ onClick: () => toggleGroup(group),
9931
+ "aria-controls": `saved-views-collections-${group}`,
9932
+ "aria-expanded": expanded,
9933
+ icon: expanded ? /* @__PURE__ */ React16.createElement(ChevronDown_default, { size: "sm" }) : /* @__PURE__ */ React16.createElement(ChevronRight_default, { size: "sm" })
9893
9934
  },
9894
- expanded ? /* @__PURE__ */ React16.createElement(ChevronDown_default, { size: "sm" }) : /* @__PURE__ */ React16.createElement(ChevronRight_default, { size: "sm" }),
9895
9935
  groupIcon(group),
9896
9936
  /* @__PURE__ */ React16.createElement(Typography, { weight: "semibold" }, I18n.t(`savedViews.viewLevel.${group}`))
9897
- );
9937
+ ));
9898
9938
  };
9899
9939
  var ViewLevelHeader_default = ViewLevelHeader;
9900
9940
 
@@ -9914,8 +9954,8 @@ var useScrollToRef = (dependency) => {
9914
9954
  import {
9915
9955
  colors as colors2,
9916
9956
  DetailPage,
9917
- UNSAFE_Menu as MenuImperative,
9918
- spacing as spacing2
9957
+ MenuImperative,
9958
+ spacing
9919
9959
  } from "@procore/core-react";
9920
9960
  var Row = styled_components_esm_default(MenuImperative.Item)`
9921
9961
  width: 100%;
@@ -9930,11 +9970,16 @@ var Row = styled_components_esm_default(MenuImperative.Item)`
9930
9970
  var Panel2 = styled_components_esm_default(DetailPage.Card)`
9931
9971
  margin: 0;
9932
9972
  height: 100%;
9933
- padding-top: ${spacing2.sm}px;
9973
+ padding-top: ${spacing.sm}px;
9934
9974
  box-shadow: none;
9935
9975
  `;
9936
9976
 
9937
9977
  // src/components/panels/PanelContent.tsx
9978
+ var StyledMenuImperative = styled_components_esm_default(MenuImperative2)`
9979
+ div[role='listbox'] {
9980
+ padding: 0;
9981
+ }
9982
+ `;
9938
9983
  var PanelContent = (props) => {
9939
9984
  const { queryInput, selectedSavedView, tableConfig } = props;
9940
9985
  const { showToast } = useToastAlertContext2();
@@ -9975,40 +10020,52 @@ var PanelContent = (props) => {
9975
10020
  }
9976
10021
  });
9977
10022
  };
9978
- return /* @__PURE__ */ React17.createElement(Panel2, { "data-testid": "inner-panel" }, /* @__PURE__ */ React17.createElement(Flex3, { direction: "column", style: { height: "100%", width: "100%" } }, temporaryView && /* @__PURE__ */ React17.createElement(
9979
- Row,
10023
+ return /* @__PURE__ */ React17.createElement(Panel2, { "data-testid": "inner-panel" }, /* @__PURE__ */ React17.createElement(Flex2, { direction: "column", style: { height: "100%", width: "100%" } }, (temporaryView || presetViews) && /* @__PURE__ */ React17.createElement(
10024
+ StyledMenuImperative,
9980
10025
  {
9981
- selected: isTemporarySelected,
9982
- onClick: () => props.onSelect({ item: temporaryView }),
9983
- ref: isTemporarySelected ? selectedRowRef : null
10026
+ role: "listbox",
10027
+ onSelect: (selection) => {
10028
+ if ((selectedSavedView == null ? void 0 : selectedSavedView.id) !== selection.item.id) {
10029
+ props.onSelect({ item: selection.item });
10030
+ }
10031
+ }
9984
10032
  },
9985
- /* @__PURE__ */ React17.createElement(
9986
- SavedViewCollectionMenuItem,
10033
+ /* @__PURE__ */ React17.createElement(MenuImperative2.Options, null, temporaryView && /* @__PURE__ */ React17.createElement(
10034
+ Row,
9987
10035
  {
10036
+ key: temporaryView.id,
9988
10037
  item: temporaryView,
9989
10038
  selected: isTemporarySelected,
9990
- onClearTemporary: props.onClearTemporary
9991
- }
9992
- )
9993
- ), presetViews.map((presetView) => {
9994
- const isSelected = (selectedSavedView == null ? void 0 : selectedSavedView.id) === presetView.id;
9995
- return /* @__PURE__ */ React17.createElement(
9996
- Row,
9997
- {
9998
- key: presetView.id,
9999
- selected: isSelected,
10000
- onClick: () => props.onSelect({ item: presetView }),
10001
- ref: isSelected ? selectedRowRef : null
10039
+ ref: isTemporarySelected ? selectedRowRef : null
10002
10040
  },
10003
10041
  /* @__PURE__ */ React17.createElement(
10004
10042
  SavedViewCollectionMenuItem,
10005
10043
  {
10006
- item: presetView,
10007
- selected: isSelected
10044
+ item: temporaryView,
10045
+ selected: isTemporarySelected,
10046
+ onClearTemporary: props.onClearTemporary
10008
10047
  }
10009
10048
  )
10010
- );
10011
- }), viewLevels.map((level) => {
10049
+ ), presetViews.map((presetView) => {
10050
+ const isSelected = (selectedSavedView == null ? void 0 : selectedSavedView.id) === presetView.id;
10051
+ return /* @__PURE__ */ React17.createElement(
10052
+ Row,
10053
+ {
10054
+ key: presetView.id,
10055
+ item: presetView,
10056
+ selected: isSelected,
10057
+ ref: isSelected ? selectedRowRef : null
10058
+ },
10059
+ /* @__PURE__ */ React17.createElement(
10060
+ SavedViewCollectionMenuItem,
10061
+ {
10062
+ item: presetView,
10063
+ selected: isSelected
10064
+ }
10065
+ )
10066
+ );
10067
+ }))
10068
+ ), viewLevels.map((level) => {
10012
10069
  const isExpanded = groups[level];
10013
10070
  const views = isExpanded && savedViews ? savedViews.filter(
10014
10071
  (view) => view.view_level === level && view.id !== "temporary"
@@ -10020,62 +10077,74 @@ var PanelContent = (props) => {
10020
10077
  toggleGroup,
10021
10078
  expanded: isExpanded
10022
10079
  }
10023
- ), views.map((view) => {
10024
- const isSelected = (selectedSavedView == null ? void 0 : selectedSavedView.id) === view.id;
10025
- const canUpdate = isSelected && hasPermissionForViewLevel(view.view_level, permissions) && !isEqual(
10026
- view.table_config,
10027
- tableConfig,
10028
- props.defaultView.table_config,
10029
- props.provider
10030
- );
10031
- const canEditOrDelete = isSelected && hasPermissionForViewLevel(view.view_level, permissions);
10032
- return /* @__PURE__ */ React17.createElement(
10033
- Row,
10034
- {
10035
- key: view.id,
10036
- item: view,
10037
- selected: isSelected,
10038
- onClick: () => {
10039
- props.onSelect({ item: view });
10040
- },
10041
- ref: isSelected ? selectedRowRef : null
10042
- },
10043
- /* @__PURE__ */ React17.createElement(
10044
- SavedViewCollectionMenuItem,
10080
+ ), isExpanded && views.length > 0 && /* @__PURE__ */ React17.createElement(
10081
+ StyledMenuImperative,
10082
+ {
10083
+ id: `saved-views-collections-${level}`,
10084
+ role: "listbox",
10085
+ onSelect: (selection) => {
10086
+ if ((selectedSavedView == null ? void 0 : selectedSavedView.id) !== selection.item.id) {
10087
+ props.onSelect({ item: selection.item });
10088
+ }
10089
+ }
10090
+ },
10091
+ /* @__PURE__ */ React17.createElement(MenuImperative2.Options, null, views.map((view) => {
10092
+ const isSelected = (selectedSavedView == null ? void 0 : selectedSavedView.id) === view.id;
10093
+ const canUpdate = isSelected && hasPermissionForViewLevel(
10094
+ view.view_level,
10095
+ permissions
10096
+ ) && !isEqual(
10097
+ view.table_config,
10098
+ tableConfig,
10099
+ props.defaultView.table_config,
10100
+ props.provider
10101
+ );
10102
+ const canEditOrDelete = isSelected && hasPermissionForViewLevel(view.view_level, permissions);
10103
+ return /* @__PURE__ */ React17.createElement(
10104
+ Row,
10045
10105
  {
10046
- item: view,
10047
10106
  key: view.id,
10107
+ item: view,
10048
10108
  selected: isSelected,
10049
- canUpdate,
10050
- canEditOrDelete,
10051
- onUpdate: (data) => onUpdate(data),
10052
- isUpdateProcessing: isUpdateLoading,
10053
- onEdit: () => props.openModal("update" /* UPDATE */),
10054
- onDelete: props.onDelete,
10055
- permissions
10056
- }
10057
- )
10058
- );
10059
- }));
10109
+ ref: isSelected ? selectedRowRef : null
10110
+ },
10111
+ /* @__PURE__ */ React17.createElement(
10112
+ SavedViewCollectionMenuItem,
10113
+ {
10114
+ item: view,
10115
+ key: view.id,
10116
+ selected: isSelected,
10117
+ canUpdate,
10118
+ canEditOrDelete,
10119
+ onUpdate: (data) => onUpdate(data),
10120
+ isUpdateProcessing: isUpdateLoading,
10121
+ onEdit: () => props.openModal("update" /* UPDATE */),
10122
+ onDelete: props.onDelete,
10123
+ permissions
10124
+ }
10125
+ )
10126
+ );
10127
+ }))
10128
+ ));
10060
10129
  })));
10061
10130
  };
10062
10131
 
10063
10132
  // src/components/saved-views/SavedViews.tsx
10064
10133
  import {
10065
- Box as Box2,
10066
- Button as Button6,
10067
- Flex as Flex6,
10134
+ Box as Box3,
10135
+ Button as Button7,
10136
+ Flex as Flex5,
10068
10137
  Panel as Panel3,
10069
10138
  Tooltip,
10070
- useI18nContext as useI18nContext11
10139
+ useI18nContext as useI18nContext12
10071
10140
  } from "@procore/core-react";
10072
- import React22, { useState as useState4, useEffect as useEffect3, useCallback as useCallback3 } from "react";
10141
+ import React23, { useState as useState4, useEffect as useEffect4, useCallback as useCallback3 } from "react";
10073
10142
  import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
10074
10143
  import { useToastAlertContext as useToastAlertContext3, ToastAlertProvider } from "@procore/toast-alert";
10075
10144
 
10076
10145
  // src/components/modals/DeleteConfirmationModal.tsx
10077
10146
  import {
10078
- Button as Button3,
10147
+ Button as Button4,
10079
10148
  ConfirmModal,
10080
10149
  Modal,
10081
10150
  P as P2,
@@ -10099,28 +10168,27 @@ var SavedViewsDeleteConfirmationModalShared = ({
10099
10168
  style: { overflowWrap: "anywhere" }
10100
10169
  },
10101
10170
  /* @__PURE__ */ React18.createElement(Modal.Body, null, /* @__PURE__ */ React18.createElement(P2, null, i18n.t("savedViews.modal.delete.description"))),
10102
- /* @__PURE__ */ React18.createElement(Modal.Footer, null, /* @__PURE__ */ React18.createElement(Modal.FooterButtons, null, /* @__PURE__ */ React18.createElement(Button3, { variant: "secondary", onClick: onCancel }, i18n.t("savedViews.actions.cancel")), /* @__PURE__ */ React18.createElement(Button3, { variant: "primary", onClick: onDelete }, i18n.t("savedViews.actions.delete"))))
10171
+ /* @__PURE__ */ React18.createElement(Modal.Footer, null, /* @__PURE__ */ React18.createElement(Modal.FooterButtons, null, /* @__PURE__ */ React18.createElement(Button4, { variant: "secondary", onClick: onCancel }, i18n.t("savedViews.actions.cancel")), /* @__PURE__ */ React18.createElement(Button4, { variant: "primary", onClick: onDelete }, i18n.t("savedViews.actions.delete"))))
10103
10172
  );
10104
10173
  };
10105
10174
 
10106
10175
  // src/components/modals/form-modal/FormModal.tsx
10107
- import React20 from "react";
10176
+ import React21 from "react";
10108
10177
 
10109
10178
  // src/components/modals/form-modal/FormModalBase.tsx
10110
10179
  import {
10111
10180
  Banner,
10112
- Button as Button4,
10181
+ Button as Button5,
10113
10182
  colors as colors3,
10114
10183
  ErrorBanner,
10115
- Flex as Flex4,
10116
- Form,
10117
- H2,
10184
+ Flex as Flex3,
10185
+ Form as Form2,
10118
10186
  Modal as Modal2,
10119
- spacing as spacing3,
10187
+ spacing as spacing2,
10120
10188
  Typography as Typography2,
10121
- useI18nContext as useI18nContext7
10189
+ useI18nContext as useI18nContext8
10122
10190
  } from "@procore/core-react";
10123
- import * as React19 from "react";
10191
+ import * as React20 from "react";
10124
10192
  import * as yup from "yup";
10125
10193
 
10126
10194
  // src/components/modals/form-modal/FormModalBaseUtils.ts
@@ -10157,6 +10225,37 @@ function extractMessage(error, I18n) {
10157
10225
  return { form: I18n.t("savedViews.modal.errors.unknown") };
10158
10226
  }
10159
10227
 
10228
+ // src/components/modals/form-modal/NameInputField.tsx
10229
+ import { Form, useFormContext, useI18nContext as useI18nContext7 } from "@procore/core-react";
10230
+ import * as React19 from "react";
10231
+ var NAME_INPUT_ID = "saved-view-form-name-input";
10232
+ var NameInputField = ({
10233
+ error,
10234
+ onResetMutations
10235
+ }) => {
10236
+ const I18n = useI18nContext7();
10237
+ const label = I18n.t("savedViews.modal.fields.name");
10238
+ const { errors: formErrors, submitCount } = useFormContext();
10239
+ React19.useEffect(() => {
10240
+ var _a;
10241
+ if (submitCount > 0 && (formErrors == null ? void 0 : formErrors.name)) {
10242
+ (_a = document.getElementById(NAME_INPUT_ID)) == null ? void 0 : _a.focus();
10243
+ }
10244
+ }, [formErrors == null ? void 0 : formErrors.name, submitCount]);
10245
+ return /* @__PURE__ */ React19.createElement(
10246
+ Form.Text,
10247
+ {
10248
+ id: NAME_INPUT_ID,
10249
+ name: "name",
10250
+ error,
10251
+ placeholder: label,
10252
+ label,
10253
+ colWidth: 12,
10254
+ onChange: onResetMutations
10255
+ }
10256
+ );
10257
+ };
10258
+
10160
10259
  // src/components/modals/form-modal/FormModalBase.tsx
10161
10260
  var ScrollContainer = styled_components_esm_default("div")`
10162
10261
  overflow: auto;
@@ -10176,7 +10275,7 @@ var FormModalBase = ({
10176
10275
  setOpenEditCreateModal,
10177
10276
  onSelect
10178
10277
  }) => {
10179
- const I18n = useI18nContext7();
10278
+ const I18n = useI18nContext8();
10180
10279
  const NAME_MAX_LENGTH = 150;
10181
10280
  const {
10182
10281
  mutate: createSavedView,
@@ -10235,24 +10334,17 @@ var FormModalBase = ({
10235
10334
  I18n,
10236
10335
  isProjectLevelTool
10237
10336
  );
10238
- return /* @__PURE__ */ React19.createElement(
10337
+ return /* @__PURE__ */ React20.createElement(
10239
10338
  Modal2,
10240
10339
  {
10241
- "aria-label": I18n.t("savedViews.ariaLabels.modal"),
10242
- onClickOverlay: onClose,
10340
+ howToClose: ["x", "scrim"],
10341
+ onClose,
10243
10342
  open,
10244
- style: { width: "540px" },
10343
+ width: "md",
10245
10344
  "data-testid": "create-update-modal"
10246
10345
  },
10247
- /* @__PURE__ */ React19.createElement(ScrollContainer, null, /* @__PURE__ */ React19.createElement(
10248
- Modal2.Header,
10249
- {
10250
- onClose,
10251
- style: { borderBottom: `1px solid ${colors3.gray85}` }
10252
- },
10253
- /* @__PURE__ */ React19.createElement(H2, null, header)
10254
- ), /* @__PURE__ */ React19.createElement(
10255
- Form,
10346
+ /* @__PURE__ */ React20.createElement(ScrollContainer, null, /* @__PURE__ */ React20.createElement(Modal2.Header, { style: { borderBottom: `1px solid ${colors3.gray85}` } }, /* @__PURE__ */ React20.createElement(Modal2.Heading, null, header)), /* @__PURE__ */ React20.createElement(
10347
+ Form2,
10256
10348
  {
10257
10349
  initialValues: {
10258
10350
  name: initialName,
@@ -10277,30 +10369,26 @@ var FormModalBase = ({
10277
10369
  onReset: onCancel,
10278
10370
  validateOnChange: true
10279
10371
  },
10280
- /* @__PURE__ */ React19.createElement(Form.Form, { name: header }, /* @__PURE__ */ React19.createElement(
10372
+ /* @__PURE__ */ React20.createElement(Form2.Form, { name: header }, /* @__PURE__ */ React20.createElement(
10281
10373
  Modal2.Body,
10282
10374
  {
10283
- style: { paddingTop: 0, paddingBottom: 0, marginTop: spacing3.lg }
10375
+ style: { paddingTop: 0, paddingBottom: 0, marginTop: spacing2.lg }
10284
10376
  },
10285
- errors && /* @__PURE__ */ React19.createElement(ErrorBanner, { style: { marginBottom: spacing3.xl } }, /* @__PURE__ */ React19.createElement(Banner.Content, null, /* @__PURE__ */ React19.createElement(Banner.Title, null, I18n.t("savedViews.modal.errors.title", { mode })), /* @__PURE__ */ React19.createElement(Banner.Body, null, (errors == null ? void 0 : errors.form) || I18n.t(`savedViews.modal.errors.description.${mode}`)))),
10286
- /* @__PURE__ */ React19.createElement(Form.Row, null, /* @__PURE__ */ React19.createElement(
10287
- Form.Text,
10377
+ errors && /* @__PURE__ */ React20.createElement(ErrorBanner, { style: { marginBottom: spacing2.xl } }, /* @__PURE__ */ React20.createElement(Banner.Content, null, /* @__PURE__ */ React20.createElement(Banner.Title, null, I18n.t("savedViews.modal.errors.title", { mode })), /* @__PURE__ */ React20.createElement(Banner.Body, null, (errors == null ? void 0 : errors.form) || I18n.t(`savedViews.modal.errors.description.${mode}`)))),
10378
+ /* @__PURE__ */ React20.createElement(Form2.Row, null, /* @__PURE__ */ React20.createElement(
10379
+ NameInputField,
10288
10380
  {
10289
- name: "name",
10290
10381
  error: errors == null ? void 0 : errors.name,
10291
- placeholder: I18n.t("savedViews.modal.fields.name"),
10292
- label: I18n.t("savedViews.modal.fields.name"),
10293
- colWidth: 12,
10294
- onChange: () => resetMutations()
10382
+ onResetMutations: resetMutations
10295
10383
  }
10296
10384
  )),
10297
- /* @__PURE__ */ React19.createElement(
10298
- Form.Row,
10385
+ /* @__PURE__ */ React20.createElement(
10386
+ Form2.Row,
10299
10387
  {
10300
- style: { marginTop: (errors == null ? void 0 : errors.name) ? spacing3.xl : spacing3.none }
10388
+ style: { marginTop: (errors == null ? void 0 : errors.name) ? spacing2.xl : spacing2.none }
10301
10389
  },
10302
- /* @__PURE__ */ React19.createElement(
10303
- Form.TextArea,
10390
+ /* @__PURE__ */ React20.createElement(
10391
+ Form2.TextArea,
10304
10392
  {
10305
10393
  name: "description",
10306
10394
  placeholder: I18n.t("savedViews.modal.fields.description"),
@@ -10310,8 +10398,8 @@ var FormModalBase = ({
10310
10398
  }
10311
10399
  )
10312
10400
  ),
10313
- viewLevelOptions.length > 1 && mode === "create" /* CREATE */ ? /* @__PURE__ */ React19.createElement(Form.Row, null, /* @__PURE__ */ React19.createElement(
10314
- Form.Select,
10401
+ viewLevelOptions.length > 1 && mode === "create" /* CREATE */ ? /* @__PURE__ */ React20.createElement(Form2.Row, null, /* @__PURE__ */ React20.createElement(
10402
+ Form2.Select,
10315
10403
  {
10316
10404
  name: "view_level",
10317
10405
  options: viewLevelOptions,
@@ -10320,9 +10408,9 @@ var FormModalBase = ({
10320
10408
  onSearch: false,
10321
10409
  onClear: false
10322
10410
  }
10323
- )) : /* @__PURE__ */ React19.createElement(React19.Fragment, null)
10324
- ), /* @__PURE__ */ React19.createElement(Modal2.Footer, { style: { borderTop: `1px solid ${colors3.gray85}` } }, /* @__PURE__ */ React19.createElement(Flex4, { grow: "1", justifyContent: "space-between", alignItems: "center" }, /* @__PURE__ */ React19.createElement(Typography2, { color: "gray45", italic: true }, /* @__PURE__ */ React19.createElement(Typography2, { color: "red45" }, "*"), " ", I18n.t("savedViews.modal.info.required_fields")), /* @__PURE__ */ React19.createElement(Modal2.FooterButtons, null, /* @__PURE__ */ React19.createElement(Button4, { type: "reset", variant: "tertiary", disabled: isLoading }, I18n.t("savedViews.actions.cancel")), /* @__PURE__ */ React19.createElement(
10325
- Button4,
10411
+ )) : /* @__PURE__ */ React20.createElement(React20.Fragment, null)
10412
+ ), /* @__PURE__ */ React20.createElement(Modal2.Footer, { style: { borderTop: `1px solid ${colors3.gray85}` } }, /* @__PURE__ */ React20.createElement(Flex3, { grow: "1", justifyContent: "space-between", alignItems: "center" }, /* @__PURE__ */ React20.createElement(Typography2, { color: "gray45", italic: true }, /* @__PURE__ */ React20.createElement(Typography2, { color: "red45" }, "*"), " ", I18n.t("savedViews.modal.info.required_fields")), /* @__PURE__ */ React20.createElement(Modal2.FooterButtons, null, /* @__PURE__ */ React20.createElement(Button5, { type: "reset", variant: "tertiary", disabled: isLoading }, I18n.t("savedViews.actions.cancel")), /* @__PURE__ */ React20.createElement(
10413
+ Button5,
10326
10414
  {
10327
10415
  "data-testid": "create-update-modal-button",
10328
10416
  type: "submit",
@@ -10337,7 +10425,7 @@ var FormModalBase = ({
10337
10425
  };
10338
10426
 
10339
10427
  // src/components/modals/form-modal/FormModal.tsx
10340
- import { useI18nContext as useI18nContext8 } from "@procore/core-react";
10428
+ import { useI18nContext as useI18nContext9 } from "@procore/core-react";
10341
10429
  var FormModal = ({
10342
10430
  open,
10343
10431
  mode,
@@ -10350,8 +10438,8 @@ var FormModal = ({
10350
10438
  onSelect,
10351
10439
  defaultView
10352
10440
  }) => {
10353
- const i18n = useI18nContext8();
10354
- return /* @__PURE__ */ React20.createElement(
10441
+ const i18n = useI18nContext9();
10442
+ return /* @__PURE__ */ React21.createElement(
10355
10443
  FormModalBase,
10356
10444
  {
10357
10445
  open,
@@ -10374,18 +10462,18 @@ var FormModal = ({
10374
10462
  // src/components/modals/form-modal/SharedViewFormModal.tsx
10375
10463
  import {
10376
10464
  Banner as Banner2,
10377
- Button as Button5,
10465
+ Button as Button6,
10378
10466
  colors as colors4,
10379
10467
  ErrorBanner as ErrorBanner2,
10380
- Flex as Flex5,
10381
- Form as Form2,
10468
+ Flex as Flex4,
10469
+ Form as Form3,
10382
10470
  Modal as Modal3,
10383
10471
  P as P3,
10384
- spacing as spacing4,
10472
+ spacing as spacing3,
10385
10473
  Typography as Typography3,
10386
- useI18nContext as useI18nContext9
10474
+ useI18nContext as useI18nContext10
10387
10475
  } from "@procore/core-react";
10388
- import * as React21 from "react";
10476
+ import * as React22 from "react";
10389
10477
  import * as yup2 from "yup";
10390
10478
  var SharedViewFormModal = ({
10391
10479
  open,
@@ -10397,7 +10485,7 @@ var SharedViewFormModal = ({
10397
10485
  isCreating,
10398
10486
  resetCreateError
10399
10487
  }) => {
10400
- const I18n = useI18nContext9();
10488
+ const I18n = useI18nContext10();
10401
10489
  const NAME_MAX_LENGTH = 150;
10402
10490
  const errors = extractMessage(createError, I18n);
10403
10491
  const handleNameChange = () => {
@@ -10408,35 +10496,36 @@ var SharedViewFormModal = ({
10408
10496
  const handleOnSubmit = (data) => {
10409
10497
  onCreateView(data.name, data.description);
10410
10498
  };
10411
- return /* @__PURE__ */ React21.createElement(
10499
+ return /* @__PURE__ */ React22.createElement(
10412
10500
  Modal3,
10413
10501
  {
10414
10502
  "data-testid": "shared-view-form-modal",
10415
10503
  open,
10416
- onClickOverlay: onClose,
10504
+ howToClose: ["x", "scrim"],
10505
+ onClose,
10417
10506
  style: { width: "540px" }
10418
10507
  },
10419
- /* @__PURE__ */ React21.createElement(
10508
+ /* @__PURE__ */ React22.createElement(
10420
10509
  Modal3.Header,
10421
10510
  {
10422
10511
  onClose,
10423
10512
  style: {
10424
- paddingTop: spacing4.lg,
10425
- paddingBottom: spacing4.xs,
10426
- paddingLeft: spacing4.xl,
10427
- paddingRight: spacing4.xl
10513
+ paddingTop: spacing3.lg,
10514
+ paddingBottom: spacing3.xs,
10515
+ paddingLeft: spacing3.xl,
10516
+ paddingRight: spacing3.xl
10428
10517
  }
10429
10518
  },
10430
- I18n.t("savedViews.modal.create.title")
10519
+ /* @__PURE__ */ React22.createElement(Modal3.Heading, null, I18n.t("savedViews.modal.create.title"))
10431
10520
  ),
10432
- /* @__PURE__ */ React21.createElement(
10521
+ /* @__PURE__ */ React22.createElement(
10433
10522
  P3,
10434
10523
  {
10435
10524
  style: {
10436
- paddingLeft: spacing4.xl,
10437
- paddingRight: spacing4.xl,
10438
- paddingBottom: spacing4.lg,
10439
- paddingTop: spacing4.none,
10525
+ paddingLeft: spacing3.xl,
10526
+ paddingRight: spacing3.xl,
10527
+ paddingBottom: spacing3.lg,
10528
+ paddingTop: spacing3.none,
10440
10529
  margin: 0,
10441
10530
  color: colors4.gray45,
10442
10531
  whiteSpace: "pre-line"
@@ -10444,8 +10533,8 @@ var SharedViewFormModal = ({
10444
10533
  },
10445
10534
  I18n.t("savedViews.modal.copyConfirmation.description")
10446
10535
  ),
10447
- /* @__PURE__ */ React21.createElement(
10448
- Form2,
10536
+ /* @__PURE__ */ React22.createElement(
10537
+ Form3,
10449
10538
  {
10450
10539
  initialValues: {
10451
10540
  name: fetchedView.name,
@@ -10463,36 +10552,32 @@ var SharedViewFormModal = ({
10463
10552
  onSubmit: handleOnSubmit,
10464
10553
  validateOnChange: true
10465
10554
  },
10466
- /* @__PURE__ */ React21.createElement(Form2.Form, { name: "share-view-form" }, /* @__PURE__ */ React21.createElement(
10555
+ /* @__PURE__ */ React22.createElement(Form3.Form, { name: "share-view-form" }, /* @__PURE__ */ React22.createElement(
10467
10556
  Modal3.Body,
10468
10557
  {
10469
10558
  style: {
10470
- paddingTop: spacing4.lg,
10559
+ paddingTop: spacing3.lg,
10471
10560
  paddingBottom: 0,
10472
10561
  borderTop: `1px solid ${colors4.gray85}`
10473
10562
  }
10474
10563
  },
10475
- errors && /* @__PURE__ */ React21.createElement(ErrorBanner2, { style: { marginBottom: spacing4.xl } }, /* @__PURE__ */ React21.createElement(Banner2.Content, null, /* @__PURE__ */ React21.createElement(Banner2.Title, null, I18n.t("savedViews.modal.errors.title", {
10564
+ errors && /* @__PURE__ */ React22.createElement(ErrorBanner2, { style: { marginBottom: spacing3.xl } }, /* @__PURE__ */ React22.createElement(Banner2.Content, null, /* @__PURE__ */ React22.createElement(Banner2.Title, null, I18n.t("savedViews.modal.errors.title", {
10476
10565
  mode: "create"
10477
- })), /* @__PURE__ */ React21.createElement(Banner2.Body, null, (errors == null ? void 0 : errors.form) || I18n.t("savedViews.modal.errors.description.create")))),
10478
- /* @__PURE__ */ React21.createElement(Form2.Row, null, /* @__PURE__ */ React21.createElement(
10479
- Form2.Text,
10566
+ })), /* @__PURE__ */ React22.createElement(Banner2.Body, null, (errors == null ? void 0 : errors.form) || I18n.t("savedViews.modal.errors.description.create")))),
10567
+ /* @__PURE__ */ React22.createElement(Form3.Row, null, /* @__PURE__ */ React22.createElement(
10568
+ NameInputField,
10480
10569
  {
10481
- name: "name",
10482
10570
  error: errors == null ? void 0 : errors.name,
10483
- placeholder: I18n.t("savedViews.modal.fields.name"),
10484
- label: I18n.t("savedViews.modal.fields.name"),
10485
- colWidth: 12,
10486
- onChange: handleNameChange
10571
+ onResetMutations: handleNameChange
10487
10572
  }
10488
10573
  )),
10489
- /* @__PURE__ */ React21.createElement(
10490
- Form2.Row,
10574
+ /* @__PURE__ */ React22.createElement(
10575
+ Form3.Row,
10491
10576
  {
10492
- style: { marginTop: (errors == null ? void 0 : errors.name) ? spacing4.xl : spacing4.none }
10577
+ style: { marginTop: (errors == null ? void 0 : errors.name) ? spacing3.xl : spacing3.none }
10493
10578
  },
10494
- /* @__PURE__ */ React21.createElement(
10495
- Form2.TextArea,
10579
+ /* @__PURE__ */ React22.createElement(
10580
+ Form3.TextArea,
10496
10581
  {
10497
10582
  name: "description",
10498
10583
  placeholder: I18n.t("savedViews.modal.fields.description"),
@@ -10502,8 +10587,8 @@ var SharedViewFormModal = ({
10502
10587
  }
10503
10588
  )
10504
10589
  )
10505
- ), /* @__PURE__ */ React21.createElement(Modal3.Footer, { style: { borderTop: `1px solid ${colors4.gray85}` } }, /* @__PURE__ */ React21.createElement(Flex5, { grow: "1", justifyContent: "space-between", alignItems: "center" }, /* @__PURE__ */ React21.createElement(Typography3, { color: "gray45", italic: true }, /* @__PURE__ */ React21.createElement(Typography3, { color: "red45" }, "*"), " ", I18n.t("savedViews.modal.info.required_fields")), /* @__PURE__ */ React21.createElement(Modal3.FooterButtons, null, /* @__PURE__ */ React21.createElement(
10506
- Button5,
10590
+ ), /* @__PURE__ */ React22.createElement(Modal3.Footer, { style: { borderTop: `1px solid ${colors4.gray85}` } }, /* @__PURE__ */ React22.createElement(Flex4, { grow: "1", justifyContent: "space-between", alignItems: "center" }, /* @__PURE__ */ React22.createElement(Typography3, { color: "gray45", italic: true }, /* @__PURE__ */ React22.createElement(Typography3, { color: "red45" }, "*"), " ", I18n.t("savedViews.modal.info.required_fields")), /* @__PURE__ */ React22.createElement(Modal3.FooterButtons, null, /* @__PURE__ */ React22.createElement(
10591
+ Button6,
10507
10592
  {
10508
10593
  variant: "secondary",
10509
10594
  onClick: onCreateTemporaryView,
@@ -10511,8 +10596,8 @@ var SharedViewFormModal = ({
10511
10596
  disabled: isCreating
10512
10597
  },
10513
10598
  I18n.t("savedViews.actions.viewTemporarily")
10514
- ), /* @__PURE__ */ React21.createElement(
10515
- Button5,
10599
+ ), /* @__PURE__ */ React22.createElement(
10600
+ Button6,
10516
10601
  {
10517
10602
  type: "submit",
10518
10603
  variant: "primary",
@@ -10527,9 +10612,9 @@ var SharedViewFormModal = ({
10527
10612
  };
10528
10613
 
10529
10614
  // src/utils/hooks/useViewSelection.ts
10530
- import { useState as useState3, useCallback as useCallback2, useEffect as useEffect2, useRef as useRef2, useMemo } from "react";
10615
+ import { useState as useState3, useCallback as useCallback2, useEffect as useEffect3, useRef as useRef2, useMemo } from "react";
10531
10616
  import { useSearchParams } from "react-router-dom";
10532
- import { useI18nContext as useI18nContext10 } from "@procore/core-react";
10617
+ import { useI18nContext as useI18nContext11 } from "@procore/core-react";
10533
10618
 
10534
10619
  // src/utils/viewStorage.ts
10535
10620
  var ViewStorage = {
@@ -10592,7 +10677,7 @@ var restoreUrlParameter = (currentParam, previousParam, setSearchParams) => {
10592
10677
  }
10593
10678
  };
10594
10679
  var useViewSelection = (config, savedViews, presetViews, openSharedViewModal) => {
10595
- const I18n = useI18nContext10();
10680
+ const I18n = useI18nContext11();
10596
10681
  const projectIdSegment = config.projectId ?? "company";
10597
10682
  const storageKey = `savedView_${config.domain}_${config.tableName}_${config.companyId}_${projectIdSegment}_${config.userId}`;
10598
10683
  const temporaryStorageKey = `${storageKey}-temporary`;
@@ -10668,7 +10753,7 @@ var useViewSelection = (config, savedViews, presetViews, openSharedViewModal) =>
10668
10753
  },
10669
10754
  [isViewAlreadySelected, openSharedViewModal, allViews, selectView]
10670
10755
  );
10671
- useEffect2(() => {
10756
+ useEffect3(() => {
10672
10757
  const savedViewId = searchParams.get("saved-view");
10673
10758
  restoreUrlParameter(
10674
10759
  savedViewId,
@@ -10708,7 +10793,7 @@ var SavedViewsContent = (props) => {
10708
10793
  const { data: savedViews } = useSavedViewsQuery(queryInput);
10709
10794
  const { mutate: deleteSavedView } = useDeleteSavedView(queryInput);
10710
10795
  const { showToast } = useToastAlertContext3();
10711
- const i18n = useI18nContext11();
10796
+ const i18n = useI18nContext12();
10712
10797
  const [activeModal, setActiveModal] = useState4(null);
10713
10798
  const [modalData, setModalData] = useState4(null);
10714
10799
  const openModal = (type, data) => {
@@ -10754,7 +10839,7 @@ var SavedViewsContent = (props) => {
10754
10839
  error: createError,
10755
10840
  reset: resetCreateError
10756
10841
  } = useCreateSavedView(queryInput);
10757
- useEffect3(() => {
10842
+ useEffect4(() => {
10758
10843
  if (fetchError) {
10759
10844
  showToast.error(i18n.t("savedViews.errors.notFound"));
10760
10845
  selectView(selectedView ?? props.defaultView);
@@ -10802,31 +10887,45 @@ var SavedViewsContent = (props) => {
10802
10887
  deleteSelectedView();
10803
10888
  closeModal();
10804
10889
  };
10805
- return /* @__PURE__ */ React22.createElement(StyledPanel, { provider: props.provider }, /* @__PURE__ */ React22.createElement(
10890
+ return /* @__PURE__ */ React23.createElement(StyledPanel, { provider: props.provider }, /* @__PURE__ */ React23.createElement(
10806
10891
  ExpandedPanel,
10807
10892
  {
10808
10893
  "data-testid": "saved-view-expanded-panel",
10809
10894
  provider: props.provider
10810
10895
  },
10811
- /* @__PURE__ */ React22.createElement(Panel3.Header, { id: "saved-views-collections-panel-header" }, /* @__PURE__ */ React22.createElement(Panel3.Title, null, /* @__PURE__ */ React22.createElement(Flex6, { alignItems: "center" }, /* @__PURE__ */ React22.createElement(Box2, { paddingRight: "sm" }, i18n.t("savedViews.title")), /* @__PURE__ */ React22.createElement(Tooltip, { showDelay: 200, overlay: i18n.t("savedViews.tooltip") }, /* @__PURE__ */ React22.createElement(Help_default, { size: "sm" })))), /* @__PURE__ */ React22.createElement(
10896
+ /* @__PURE__ */ React23.createElement(Panel3.Header, { id: "saved-views-collections-panel-header" }, /* @__PURE__ */ React23.createElement(Panel3.Title, null, /* @__PURE__ */ React23.createElement(Flex5, { alignItems: "center" }, /* @__PURE__ */ React23.createElement(Box3, { paddingRight: "sm" }, i18n.t("savedViews.title")), /* @__PURE__ */ React23.createElement(
10897
+ Tooltip,
10898
+ {
10899
+ showDelay: 200,
10900
+ overlay: /* @__PURE__ */ React23.createElement(Tooltip.Content, null, i18n.t("savedViews.tooltip"))
10901
+ },
10902
+ /* @__PURE__ */ React23.createElement(
10903
+ Help_default,
10904
+ {
10905
+ tabIndex: 0,
10906
+ size: "sm",
10907
+ "aria-label": i18n.t("savedViews.tooltip")
10908
+ }
10909
+ )
10910
+ ))), /* @__PURE__ */ React23.createElement(
10812
10911
  Tooltip,
10813
10912
  {
10814
10913
  overlay: i18n.t("savedViews.actions.create"),
10815
10914
  showDelay: 1e3
10816
10915
  },
10817
- /* @__PURE__ */ React22.createElement("span", null, /* @__PURE__ */ React22.createElement(
10818
- Button6,
10916
+ /* @__PURE__ */ React23.createElement(
10917
+ Button7,
10819
10918
  {
10820
- icon: /* @__PURE__ */ React22.createElement(Plus_default, null),
10919
+ icon: /* @__PURE__ */ React23.createElement(Plus_default, null),
10821
10920
  variant: "secondary",
10822
10921
  "data-testid": "expanded-panel-create-button",
10823
10922
  onClick: () => openModal("create" /* CREATE */),
10824
10923
  "aria-label": i18n.t("savedViews.actions.create")
10825
10924
  },
10826
10925
  i18n.t("savedViews.actions.create")
10827
- ))
10926
+ )
10828
10927
  )),
10829
- /* @__PURE__ */ React22.createElement(Panel3.Body, { style: { display: "flex", flexFlow: "column" } }, /* @__PURE__ */ React22.createElement(
10928
+ /* @__PURE__ */ React23.createElement(Panel3.Body, { style: { display: "flex", flexFlow: "column" } }, /* @__PURE__ */ React23.createElement(
10830
10929
  PanelContent,
10831
10930
  {
10832
10931
  onSelect: ({ item }) => selectView(item),
@@ -10843,7 +10942,7 @@ var SavedViewsContent = (props) => {
10843
10942
  onClearTemporary: clearTemporaryView
10844
10943
  }
10845
10944
  ))
10846
- ), (isModalOpen("create" /* CREATE */) || isModalOpen("update" /* UPDATE */)) && /* @__PURE__ */ React22.createElement(
10945
+ ), (isModalOpen("create" /* CREATE */) || isModalOpen("update" /* UPDATE */)) && /* @__PURE__ */ React23.createElement(
10847
10946
  FormModal,
10848
10947
  {
10849
10948
  open: true,
@@ -10857,14 +10956,14 @@ var SavedViewsContent = (props) => {
10857
10956
  setOpenEditCreateModal: closeModal,
10858
10957
  defaultView: props.defaultView
10859
10958
  }
10860
- ), selectedView && isModalOpen("delete" /* DELETE */) && /* @__PURE__ */ React22.createElement(
10959
+ ), selectedView && isModalOpen("delete" /* DELETE */) && /* @__PURE__ */ React23.createElement(
10861
10960
  SavedViewsDeleteConfirmationModalShared,
10862
10961
  {
10863
10962
  open: true,
10864
10963
  onDelete: confirmDeleteAndCloseModal,
10865
10964
  onCancel: closeModal
10866
10965
  }
10867
- ), fetchedView && isModalOpen("sharedView" /* SHARED_VIEW */) && /* @__PURE__ */ React22.createElement(
10966
+ ), fetchedView && isModalOpen("sharedView" /* SHARED_VIEW */) && /* @__PURE__ */ React23.createElement(
10868
10967
  SharedViewFormModal,
10869
10968
  {
10870
10969
  open: true,
@@ -10879,11 +10978,11 @@ var SavedViewsContent = (props) => {
10879
10978
  ));
10880
10979
  };
10881
10980
  var SavedViews = (props) => {
10882
- return /* @__PURE__ */ React22.createElement(EnvironmentI18nProvider, null, /* @__PURE__ */ React22.createElement(QueryClientProvider, { client: queryClient }, /* @__PURE__ */ React22.createElement(ToastAlertProvider, null, /* @__PURE__ */ React22.createElement(SavedViewsContent, { ...props }))));
10981
+ return /* @__PURE__ */ React23.createElement(EnvironmentI18nProvider, null, /* @__PURE__ */ React23.createElement(QueryClientProvider, { client: queryClient }, /* @__PURE__ */ React23.createElement(ToastAlertProvider, null, /* @__PURE__ */ React23.createElement(SavedViewsContent, { ...props }))));
10883
10982
  };
10884
10983
 
10885
10984
  // src/components/adapters/smart-grid/SmartGridSavedViews.tsx
10886
- import React23, { useCallback as useCallback4 } from "react";
10985
+ import React24, { useCallback as useCallback4 } from "react";
10887
10986
 
10888
10987
  // src/components/adapters/smart-grid/SmartGridDefaultSavedView.tsx
10889
10988
  import { useMemo as useMemo2 } from "react";
@@ -10947,7 +11046,7 @@ var useNormalizedDefaultViews = (defaultViews, gridApi) => {
10947
11046
  };
10948
11047
 
10949
11048
  // src/components/adapters/smart-grid/useSmartGridConfig.ts
10950
- import { useState as useState5, useEffect as useEffect4 } from "react";
11049
+ import { useState as useState5, useEffect as useEffect5 } from "react";
10951
11050
  var GRID_STATE_EVENTS = [
10952
11051
  "sortChanged",
10953
11052
  "filterOpened",
@@ -10966,7 +11065,7 @@ var useSmartGridConfig = (gridApi) => {
10966
11065
  const [config, setConfig] = useState5(
10967
11066
  () => getSmartGridConfig(gridApi)
10968
11067
  );
10969
- useEffect4(() => {
11068
+ useEffect5(() => {
10970
11069
  if (!gridApi)
10971
11070
  return;
10972
11071
  const updateConfig = () => {
@@ -11013,7 +11112,7 @@ var SmartGridSavedViews = (props) => {
11013
11112
  },
11014
11113
  [gridApi, tableConfig, setTableConfig]
11015
11114
  );
11016
- return /* @__PURE__ */ React23.createElement(
11115
+ return /* @__PURE__ */ React24.createElement(
11017
11116
  SavedViews,
11018
11117
  {
11019
11118
  onSelect,
@@ -11031,7 +11130,7 @@ var SmartGridSavedViews = (props) => {
11031
11130
  };
11032
11131
 
11033
11132
  // src/components/adapters/data-table/DataTableSavedViews.tsx
11034
- import React24, {
11133
+ import React25, {
11035
11134
  forwardRef as forwardRef11,
11036
11135
  useImperativeHandle,
11037
11136
  useState as useState6,
@@ -11132,7 +11231,7 @@ var DataTableSavedViews = forwardRef11((props, ref) => {
11132
11231
  if (!internalTableConfig) {
11133
11232
  return null;
11134
11233
  }
11135
- return /* @__PURE__ */ React24.createElement(
11234
+ return /* @__PURE__ */ React25.createElement(
11136
11235
  SavedViews,
11137
11236
  {
11138
11237
  onSelect,