diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml
index 74601e87fa..22255fd655 100644
--- a/.github/workflows/docker.yaml
+++ b/.github/workflows/docker.yaml
@@ -130,7 +130,7 @@ jobs:
rm -rf InvenTree/_testfolder
- name: Set up QEMU
if: github.event_name != 'pull_request'
- uses: docker/setup-qemu-action@49b3bc8e6bdd4a60e6116a5414239cba5943d3cf # pin@v3.2.0
+ uses: docker/setup-qemu-action@53851d14592bedcffcf25ea515637cff71ef929a # pin@v3.3.0
- name: Set up Docker Buildx
if: github.event_name != 'pull_request'
uses: docker/setup-buildx-action@6524bf65af31da8d45b59e8c27de4bd072b392f5 # pin@v3.8.0
diff --git a/.github/workflows/qc_checks.yaml b/.github/workflows/qc_checks.yaml
index a4a6f7bb37..d41a886449 100644
--- a/.github/workflows/qc_checks.yaml
+++ b/.github/workflows/qc_checks.yaml
@@ -148,7 +148,7 @@ jobs:
- name: Export API Documentation
run: invoke dev.schema --ignore-warnings --filename src/backend/InvenTree/schema.yml
- name: Upload schema
- uses: actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b # pin@v4.5.0
+ uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # pin@v4.6.0
with:
name: schema.yml
path: src/backend/InvenTree/schema.yml
@@ -219,7 +219,7 @@ jobs:
echo "Version: $version"
mkdir export/${version}
mv schema.yml export/${version}/api.yaml
- - uses: stefanzweifel/git-auto-commit-action@8621497c8c39c72f3e2a999a26b4ca1b5058a842 # pin@v5.0.1
+ - uses: stefanzweifel/git-auto-commit-action@e348103e9026cc0eee72ae06630dbe30c8bf7a79 # pin@v5.1.0
name: Commit schema changes
with:
commit_message: "Update API schema for ${{ env.version }} / ${{ github.sha }}"
@@ -550,7 +550,7 @@ jobs:
- name: Run Playwright tests
id: tests
run: cd src/frontend && npx nyc playwright test
- - uses: actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b # pin@v4.5.0
+ - uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # pin@v4.6.0
if: ${{ !cancelled() && steps.tests.outcome == 'failure' }}
with:
name: playwright-report
@@ -597,7 +597,7 @@ jobs:
run: |
cd src/backend/InvenTree/web/static
zip -r frontend-build.zip web/ web/.vite
- - uses: actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b # pin@v4.5.0
+ - uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # pin@v4.6.0
with:
name: frontend-build
path: src/backend/InvenTree/web/static/web
@@ -622,7 +622,7 @@ jobs:
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Upload SARIF file
- uses: github/codeql-action/upload-sarif@48ab28a6f5dbc2a99bf1e0131198dd8f1df78169 # pin@v3
+ uses: github/codeql-action/upload-sarif@b6a472f63d85b9c78a3ac5e89422239fc15e9b3c # pin@v3
with:
sarif_file: results.sarif
category: zizmor
diff --git a/.github/workflows/scorecard.yaml b/.github/workflows/scorecard.yaml
index c15d99301a..a5c408cb82 100644
--- a/.github/workflows/scorecard.yaml
+++ b/.github/workflows/scorecard.yaml
@@ -59,7 +59,7 @@ jobs:
# Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF
# format to the repository Actions tab.
- name: "Upload artifact"
- uses: actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b # v4.5.0
+ uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0
with:
name: SARIF file
path: results.sarif
@@ -67,6 +67,6 @@ jobs:
# Upload the results to GitHub's code scanning dashboard.
- name: "Upload to code-scanning"
- uses: github/codeql-action/upload-sarif@48ab28a6f5dbc2a99bf1e0131198dd8f1df78169 # v3.28.0
+ uses: github/codeql-action/upload-sarif@b6a472f63d85b9c78a3ac5e89422239fc15e9b3c # v3.28.1
with:
sarif_file: results.sarif
diff --git a/src/frontend/src/components/details/Details.tsx b/src/frontend/src/components/details/Details.tsx
index 5395033a05..531317f31b 100644
--- a/src/frontend/src/components/details/Details.tsx
+++ b/src/frontend/src/components/details/Details.tsx
@@ -378,18 +378,22 @@ export function DetailsTableField({
return (
+
+
+
+ {field.label}
+
+
-
-
-
- {field.label}
-
-
@@ -409,7 +413,11 @@ export function DetailsTable({
title?: string;
}>) {
return (
-
+
{title && {title}}
diff --git a/src/frontend/src/components/details/DetailsImage.tsx b/src/frontend/src/components/details/DetailsImage.tsx
index 09104900e5..89a61f4159 100644
--- a/src/frontend/src/components/details/DetailsImage.tsx
+++ b/src/frontend/src/components/details/DetailsImage.tsx
@@ -2,6 +2,7 @@ import { Trans, t } from '@lingui/macro';
import {
AspectRatio,
Button,
+ Grid,
Group,
Image,
Overlay,
@@ -421,31 +422,39 @@ export function DetailsImage(props: Readonly) {
return (
<>
{downloadImage.modal}
-
- <>
-
- {permissions.hasChangeRole(props.appRole) &&
- hasOverlay &&
- hovered && (
-
-
-
- )}
- >
-
+
+
+ <>
+
+ {permissions.hasChangeRole(props.appRole) &&
+ hasOverlay &&
+ hovered && (
+
+
+
+ )}
+ >
+
+
>
);
}
diff --git a/src/frontend/src/components/details/ItemDetails.tsx b/src/frontend/src/components/details/ItemDetails.tsx
index 77750caf7e..1d0b79d7da 100644
--- a/src/frontend/src/components/details/ItemDetails.tsx
+++ b/src/frontend/src/components/details/ItemDetails.tsx
@@ -1,16 +1,15 @@
import { Paper, SimpleGrid } from '@mantine/core';
-import { useElementSize } from '@mantine/hooks';
import type React from 'react';
-import { useMemo } from 'react';
export function ItemDetailsGrid(props: React.PropsWithChildren<{}>) {
- const { ref, width } = useElementSize();
-
- const cols = useMemo(() => (width > 700 ? 2 : 1), [width]);
-
return (
-
+
{props.children}
diff --git a/src/frontend/src/components/items/MenuLinks.tsx b/src/frontend/src/components/items/MenuLinks.tsx
index 9f882e22a5..531b2a81bc 100644
--- a/src/frontend/src/components/items/MenuLinks.tsx
+++ b/src/frontend/src/components/items/MenuLinks.tsx
@@ -53,7 +53,12 @@ export function MenuLinks({
{title}
-
+
{visibleLinks.map((item) => (
+ shortenString({
+ str: title,
+ len: 50
+ }),
+ [title]
+ );
+
+ const description = useMemo(
+ () =>
+ shortenString({
+ str: subtitle,
+ len: 75
+ }),
+ [subtitle]
+ );
+
+ const maxCols = useMemo(() => {
+ let cols = 1;
+
+ if (!!detail) {
+ cols++;
+ }
+
+ if (!!badges) {
+ cols++;
+ }
+
+ return cols;
+ }, [detail, badges]);
+
return (
<>
-
+
{breadcrumbs && breadcrumbs.length > 0 && (
)}
-
-
+
+
{imageUrl && (
)}
@@ -79,30 +124,33 @@ export function PageDetail({
{subtitle && (
{icon}
-
- {subtitle}
-
+ {description}
)}
-
- {detail}
-
- {badges?.map((badge, idx) => (
- {badge}
- ))}
-
-
- {actions && (
-
- {actions.map((action, idx) => (
- {action}
+ {detail && {detail}
}
+ {badges && (
+
+ {badges?.map((badge, idx) => (
+ {badge}
))}
)}
-
-
+
+ {actions && (
+
+ {actions.map((action, idx) => (
+ {action}
+ ))}
+
+ )}
+
>
diff --git a/src/frontend/src/components/settings/FactCollection.tsx b/src/frontend/src/components/settings/FactCollection.tsx
index 633a92c6d4..ac0e9e2a93 100644
--- a/src/frontend/src/components/settings/FactCollection.tsx
+++ b/src/frontend/src/components/settings/FactCollection.tsx
@@ -10,7 +10,15 @@ export function FactCollection({
minItems?: number;
}>) {
return (
-
+
{items.map((item, index) => (
-
+
diff --git a/src/frontend/src/pages/build/BuildDetail.tsx b/src/frontend/src/pages/build/BuildDetail.tsx
index ec0bbecd4d..c28090d6bd 100644
--- a/src/frontend/src/pages/build/BuildDetail.tsx
+++ b/src/frontend/src/pages/build/BuildDetail.tsx
@@ -239,16 +239,14 @@ export default function BuildDetail() {
return (
-
-
-
-
-
+
+
+
diff --git a/src/frontend/src/pages/company/CompanyDetail.tsx b/src/frontend/src/pages/company/CompanyDetail.tsx
index 56c4b3ecff..11e4c8dce6 100644
--- a/src/frontend/src/pages/company/CompanyDetail.tsx
+++ b/src/frontend/src/pages/company/CompanyDetail.tsx
@@ -145,22 +145,20 @@ export default function CompanyDetail(props: Readonly) {
return (
-
-
-
-
-
+
+
+
diff --git a/src/frontend/src/pages/company/ManufacturerPartDetail.tsx b/src/frontend/src/pages/company/ManufacturerPartDetail.tsx
index c68136fe01..6b8350eab9 100644
--- a/src/frontend/src/pages/company/ManufacturerPartDetail.tsx
+++ b/src/frontend/src/pages/company/ManufacturerPartDetail.tsx
@@ -133,19 +133,17 @@ export default function ManufacturerPartDetail() {
return (
-
-
-
-
-
+
+
+
diff --git a/src/frontend/src/pages/company/SupplierPartDetail.tsx b/src/frontend/src/pages/company/SupplierPartDetail.tsx
index e3e4bec417..f5c9c51f0d 100644
--- a/src/frontend/src/pages/company/SupplierPartDetail.tsx
+++ b/src/frontend/src/pages/company/SupplierPartDetail.tsx
@@ -217,18 +217,16 @@ export default function SupplierPartDetail() {
return (
-
-
-
-
+
+
diff --git a/src/frontend/src/pages/part/PartDetail.tsx b/src/frontend/src/pages/part/PartDetail.tsx
index 248298612d..90953b271f 100644
--- a/src/frontend/src/pages/part/PartDetail.tsx
+++ b/src/frontend/src/pages/part/PartDetail.tsx
@@ -5,7 +5,6 @@ import {
Grid,
Loader,
Skeleton,
- Space,
Stack,
Text
} from '@mantine/core';
@@ -439,23 +438,21 @@ export default function PartDetail() {
return part ? (
-
-
-
-
-
+
+
+
@@ -1040,9 +1037,7 @@ export default function PartDetail() {
}}
/>
- ) : (
-
- )
+ ) : null
}
/>
{t`There is no scheduling information available for the selected part`}
)}
-
+
+
-
+
+
{editPricing.modal}
-
+
diff --git a/src/frontend/src/pages/part/pricing/PurchaseHistoryPanel.tsx b/src/frontend/src/pages/part/pricing/PurchaseHistoryPanel.tsx
index ce3ea98e33..aeec576b76 100644
--- a/src/frontend/src/pages/part/pricing/PurchaseHistoryPanel.tsx
+++ b/src/frontend/src/pages/part/pricing/PurchaseHistoryPanel.tsx
@@ -103,7 +103,7 @@ export default function PurchaseHistoryPanel({
}, [table.records]);
return (
-
+
+
+
-
+
-
-
-
-
-
+
+
+
diff --git a/src/frontend/src/pages/sales/ReturnOrderDetail.tsx b/src/frontend/src/pages/sales/ReturnOrderDetail.tsx
index d598134805..e63f484dd3 100644
--- a/src/frontend/src/pages/sales/ReturnOrderDetail.tsx
+++ b/src/frontend/src/pages/sales/ReturnOrderDetail.tsx
@@ -233,16 +233,14 @@ export default function ReturnOrderDetail() {
return (
-
-
-
-
-
+
+
+
diff --git a/src/frontend/src/pages/sales/SalesOrderDetail.tsx b/src/frontend/src/pages/sales/SalesOrderDetail.tsx
index c0b7e0fa23..282dcf2d49 100644
--- a/src/frontend/src/pages/sales/SalesOrderDetail.tsx
+++ b/src/frontend/src/pages/sales/SalesOrderDetail.tsx
@@ -243,16 +243,14 @@ export default function SalesOrderDetail() {
return (
-
-
-
-
-
+
+
+
diff --git a/src/frontend/src/pages/sales/SalesOrderShipmentDetail.tsx b/src/frontend/src/pages/sales/SalesOrderShipmentDetail.tsx
index 1a5e3631b6..a40c1b9b49 100644
--- a/src/frontend/src/pages/sales/SalesOrderShipmentDetail.tsx
+++ b/src/frontend/src/pages/sales/SalesOrderShipmentDetail.tsx
@@ -175,22 +175,20 @@ export default function SalesOrderShipmentDetail() {
return (
<>
-
-
-
-
-
+
+
+
diff --git a/src/frontend/src/pages/stock/StockDetail.tsx b/src/frontend/src/pages/stock/StockDetail.tsx
index a4ffb6c3ad..3b069e99f4 100644
--- a/src/frontend/src/pages/stock/StockDetail.tsx
+++ b/src/frontend/src/pages/stock/StockDetail.tsx
@@ -346,19 +346,16 @@ export default function StockDetail() {
return (
-
-
-
-
-
+
+
+