@dexteel/mesf-core 7.16.1 → 7.17.2

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.
@@ -1,3 +1,3 @@
1
1
  {
2
- ".": "7.16.1"
2
+ ".": "7.17.2"
3
3
  }
package/CHANGELOG.md CHANGED
@@ -1,5 +1,35 @@
1
1
  # Changelog
2
2
 
3
+ ## [7.17.2](https://github.com/dexteel/mesf-core-frontend/compare/@dexteel/mesf-core-v7.17.1...@dexteel/mesf-core-v7.17.2) (2026-03-27)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * **devops:** add rollup config to build correctly ([df33adc](https://github.com/dexteel/mesf-core-frontend/commit/df33adc71d81c8ced414a59f16c817e238f545c8))
9
+
10
+ ## [7.17.1](https://github.com/dexteel/mesf-core-frontend/compare/@dexteel/mesf-core-v7.17.0...@dexteel/mesf-core-v7.17.1) (2026-03-27)
11
+
12
+
13
+ ### Bug Fixes
14
+
15
+ * **deps:** upgrade rollup-plugin-typescript2 and fix setTimeout types ([#641](https://github.com/dexteel/mesf-core-frontend/issues/641)) ([867c828](https://github.com/dexteel/mesf-core-frontend/commit/867c828187051f3096b544b15a38248976d25c72))
16
+
17
+ ## [7.17.0](https://github.com/dexteel/mesf-core-frontend/compare/@dexteel/mesf-core-v7.16.1...@dexteel/mesf-core-v7.17.0) (2026-03-27)
18
+
19
+
20
+ ### Features
21
+
22
+ * add workflow_dispatch trigger to npm publish workflow ([d776298](https://github.com/dexteel/mesf-core-frontend/commit/d7762989b613ed262cb9969824ef5068d1e05343))
23
+
24
+
25
+ ### Bug Fixes
26
+
27
+ * **Asset Search:** Fix search box overlapping tree items at certain resolutions ([5d1e1f3](https://github.com/dexteel/mesf-core-frontend/commit/5d1e1f3370cd96e84b02a4301ec9256c2b768846))
28
+ * **Header:** Show drawer dynamically according to the navbar content and screen size. ([b65cbda](https://github.com/dexteel/mesf-core-frontend/commit/b65cbdac1f6657b27d3e55eba8f435b3b067931f))
29
+ * **logbook:** handle AssetId=0 as valid root asset by replacing falsy checks with null checks ([3e660a9](https://github.com/dexteel/mesf-core-frontend/commit/3e660a9e35de36051b2522d81f7f2825ca9f9854))
30
+ * **Navbar Menu Bar:** Update closeDrawer function reference and adjust hoverSwitchDelayMs. ([0895812](https://github.com/dexteel/mesf-core-frontend/commit/08958129ce081f9bc4f644fb49bee38fa032cca7))
31
+ * upgrade npm to 11.5.1+ for OIDC Trusted Publishing support ([443c5fa](https://github.com/dexteel/mesf-core-frontend/commit/443c5fad15e9b0f68aeff98a4aad4156d34f2588))
32
+
3
33
  ## [7.16.1](https://github.com/dexteel/mesf-core-frontend/compare/@dexteel/mesf-core-v7.16.0...@dexteel/mesf-core-v7.16.1) (2026-03-24)
4
34
 
5
35
 
package/dist/index.esm.js CHANGED
@@ -2207,9 +2207,15 @@ const ModalTreeFilterControl = (props) => {
2207
2207
  } },
2208
2208
  allowSearch && (React__default.createElement(Grid2, { ref: searchContainerRef, style: {
2209
2209
  position: "sticky",
2210
- top: 0,
2210
+ top: -16,
2211
2211
  zIndex: 1000,
2212
2212
  backgroundColor: "#fff",
2213
+ paddingTop: 5,
2214
+ paddingBottom: 5,
2215
+ marginLeft: -24,
2216
+ marginRight: -24,
2217
+ paddingLeft: 24,
2218
+ paddingRight: 24,
2213
2219
  } },
2214
2220
  React__default.createElement(TextField, { sx: {
2215
2221
  marginBottom: 1,
@@ -6687,7 +6693,7 @@ function Logout() {
6687
6693
  React__default.createElement(Typography$1, { variant: "h6" }, "Logging out..."))));
6688
6694
  }
6689
6695
 
6690
- function NavbarMenuBar({ menus, isMobile = false, closeDrawer, hoverSwitchDelayMs = 100, }) {
6696
+ function NavbarMenuBar({ menus, isMobile = false, closeDrawer, hoverSwitchDelayMs = 10, }) {
6691
6697
  const hasPermissionTo = useHasPermission();
6692
6698
  const [openMenuId, setOpenMenuId] = useState(null);
6693
6699
  const [menuAnchorEl, setMenuAnchorEl] = useState(null);
@@ -9847,10 +9853,25 @@ function Header({ showAreaSelector = false, showTrendingsV2Icon = true, navbarTi
9847
9853
  const [drawerOpen, setDrawerOpen] = useState(false);
9848
9854
  const hasPermissionTo = useHasPermission();
9849
9855
  const theme = useTheme();
9850
- const isCompactNavigation = useMediaQuery(theme.breakpoints.down("lg"));
9856
+ const navContainerRef = useRef(null);
9857
+ const [isOverflowing, setIsOverflowing] = useState(false);
9858
+ const isMobileBreakpoint = useMediaQuery(theme.breakpoints.down("lg"));
9851
9859
  const handleDrawerToggle = () => {
9852
9860
  setDrawerOpen(!drawerOpen);
9853
9861
  };
9862
+ const closeDrawer = () => {
9863
+ setDrawerOpen(false);
9864
+ };
9865
+ useEffect(() => {
9866
+ const container = navContainerRef.current;
9867
+ if (!container)
9868
+ return;
9869
+ const observer = new ResizeObserver(() => {
9870
+ setIsOverflowing(container.scrollWidth > container.offsetWidth);
9871
+ });
9872
+ observer.observe(container);
9873
+ return () => observer.disconnect();
9874
+ }, []);
9854
9875
  useEffect(() => {
9855
9876
  const handleMenuItemClick = (event) => {
9856
9877
  const target = event.target;
@@ -9868,6 +9889,7 @@ function Header({ showAreaSelector = false, showTrendingsV2Icon = true, navbarTi
9868
9889
  };
9869
9890
  }, []);
9870
9891
  const canShowSettings = hasPermissionTo("ui.navbar.settings");
9892
+ const isCompactNavigation = isMobileBreakpoint || isOverflowing;
9871
9893
  return (React__default.createElement(React__default.Fragment, null,
9872
9894
  React__default.createElement(AppBar, { position: "static", sx: {
9873
9895
  backgroundColor: (theme) => theme.palette.primary.main,
@@ -9893,19 +9915,21 @@ function Header({ showAreaSelector = false, showTrendingsV2Icon = true, navbarTi
9893
9915
  color: "white",
9894
9916
  textWrap: "nowrap",
9895
9917
  } }, navbarTitle),
9896
- React__default.createElement(Box, { sx: {
9918
+ React__default.createElement(Box, { ref: navContainerRef, sx: {
9897
9919
  display: "flex",
9898
9920
  flexGrow: 1,
9899
9921
  minWidth: 0,
9900
9922
  overflow: "hidden",
9923
+ visibility: isCompactNavigation ? "hidden" : "visible",
9924
+ pointerEvents: isCompactNavigation ? "none" : "auto",
9901
9925
  "& a": {
9902
9926
  color: "white",
9903
9927
  },
9904
9928
  "& > *": {
9905
- minWidth: 0,
9906
- maxWidth: "100%",
9929
+ flexShrink: 0,
9907
9930
  },
9908
- } }, !isCompactNavigation && (React__default.createElement(CustomNavbar, { closeDrawer: handleDrawerToggle }))),
9931
+ }, "aria-hidden": isCompactNavigation },
9932
+ React__default.createElement(CustomNavbar, { closeDrawer: closeDrawer })),
9909
9933
  React__default.createElement(Box, { sx: {
9910
9934
  display: "flex",
9911
9935
  alignItems: "center",
@@ -9948,7 +9972,7 @@ function Header({ showAreaSelector = false, showTrendingsV2Icon = true, navbarTi
9948
9972
  color: (theme) => theme.palette.text.primary,
9949
9973
  },
9950
9974
  } },
9951
- React__default.createElement(CustomNavbar, { isMobile: true }))),
9975
+ React__default.createElement(CustomNavbar, { isMobile: true, closeDrawer: closeDrawer }))),
9952
9976
  React__default.createElement(ErrorModal, { error: error, onHide: () => setError("") })));
9953
9977
  }
9954
9978
 
@@ -15729,7 +15753,7 @@ const getEntries$1 = (_a) => __awaiter(void 0, [_a], void 0, function* ({ shiftI
15729
15753
  const parameters = [
15730
15754
  { name: "ShiftId", value: shiftId },
15731
15755
  ];
15732
- if (assetId) {
15756
+ if (assetId != null) {
15733
15757
  parameters.push({ name: "AssetId", value: assetId });
15734
15758
  }
15735
15759
  const resp = yield apiService.callV2("[LB].[GetEntries]", parameters, signal);
@@ -15892,6 +15916,7 @@ const useEntries$1 = ({ shiftId, assetId }) => {
15892
15916
  return useQuery({
15893
15917
  queryKey: ["entries", shiftId, assetId],
15894
15918
  queryFn: ({ signal }) => getEntries$1({ shiftId, assetId, signal }),
15919
+ enabled: shiftId != null,
15895
15920
  });
15896
15921
  };
15897
15922
  const routeLogbookEntry$1 = "/logbook/entry";
@@ -16148,7 +16173,7 @@ const AssetsFilter = ({ label = "Asset", value, onChange, filterAreaAssets = fal
16148
16173
  ];
16149
16174
  const selectedOption = options.find((option) => option.value === (value || null)) || options[0];
16150
16175
  return (React__default.createElement(React__default.Fragment, null,
16151
- React__default.createElement(Autocomplete, { options: filterAreaAssets ? options.filter((o) => o.isAreaAsset) : options, value: selectedOption, onChange: (event, newValue) => {
16176
+ React__default.createElement(Autocomplete, { size: "small", options: filterAreaAssets ? options.filter((o) => o.isAreaAsset) : options, value: selectedOption, onChange: (event, newValue) => {
16152
16177
  var _a;
16153
16178
  if (newValue) {
16154
16179
  onChange((_a = newValue.value) !== null && _a !== void 0 ? _a : null);
@@ -17431,7 +17456,7 @@ const getEntriesReport$1 = (params, signal) => __awaiter(void 0, void 0, void 0,
17431
17456
  { name: "StartShiftId", value: params.startShiftId },
17432
17457
  { name: "EndShiftId", value: params.endShiftId },
17433
17458
  ];
17434
- if (params.assetId) {
17459
+ if (params.assetId != null) {
17435
17460
  parameters.push({ name: "AssetId", value: params.assetId });
17436
17461
  }
17437
17462
  const resp = yield apiService.callV2("[LB].[GetEntries]", parameters);
@@ -17453,7 +17478,7 @@ const useEntriesReport$1 = ({ startShiftId, endShiftId, assetId, }) => {
17453
17478
  return useQuery({
17454
17479
  queryKey: ["entriesReport", startShiftId, endShiftId, assetId],
17455
17480
  queryFn: ({ signal }) => getEntriesReport$1({ startShiftId, endShiftId, assetId }),
17456
- enabled: !!startShiftId && !!endShiftId && !!assetId,
17481
+ enabled: !!startShiftId && !!endShiftId && assetId != null,
17457
17482
  });
17458
17483
  };
17459
17484
  const routeLogbookReport = "/logbook/report";
@@ -17668,12 +17693,13 @@ const Filters$2 = ({ withAssetFilter, filterAssets, quickFilter, onQuickFilterCh
17668
17693
  React__default.createElement(Grid2, { size: { xs: 12 }, alignItems: "center", justifyContent: "center" },
17669
17694
  React__default.createElement(ShiftPeriodNavigatorControl, { onChange: handleShiftPeriodChange, value: shiftPeriod, actualPeriod: actualPeriod, showShiftAndCrews: false, dateFormat: "MM/DD/YYYY", periodOptions: customPeriodOptions$1 })),
17670
17695
  React__default.createElement(Grid2, { size: { xs: 12, md: withAssetFilter ? 6 : 12 } },
17671
- React__default.createElement(TextField, { fullWidth: true, label: "Search", variant: "outlined", size: "small", margin: "dense", value: quickFilter, onChange: (event) => {
17696
+ React__default.createElement(TextField, { fullWidth: true, label: "Search", variant: "outlined", size: "small", value: quickFilter, onChange: (event) => {
17672
17697
  onQuickFilterChange(event === null || event === void 0 ? void 0 : event.target.value);
17673
- }, InputProps: {
17674
- startAdornment: (React__default.createElement(InputAdornment, { position: "start" },
17675
- React__default.createElement(IconButton$1, { edge: "start", type: "submit" },
17676
- React__default.createElement(SearchIcon, null)))),
17698
+ }, slotProps: {
17699
+ input: {
17700
+ startAdornment: (React__default.createElement(InputAdornment, { position: "start" },
17701
+ React__default.createElement(SearchIcon, { fontSize: "small" }))),
17702
+ },
17677
17703
  } })),
17678
17704
  withAssetFilter === "tree" && assets && (React__default.createElement(Grid2, { size: { xs: 12, md: 6 }, style: {
17679
17705
  alignItems: "center",
@@ -17683,7 +17709,6 @@ const Filters$2 = ({ withAssetFilter, filterAssets, quickFilter, onQuickFilterCh
17683
17709
  withAssetFilter === "selector" && (React__default.createElement(Grid2, { size: { xs: 12, md: 6 }, style: {
17684
17710
  alignItems: "center",
17685
17711
  justifyContent: "center",
17686
- marginTop: 6,
17687
17712
  } },
17688
17713
  React__default.createElement(AssetsFilter, { value: assetId !== null && assetId !== void 0 ? assetId : null, onChange: (newValue) => {
17689
17714
  setAssetId(newValue !== null && newValue !== void 0 ? newValue : null);