diff --git a/inventory/static/css/components/draw.css b/inventory/static/css/components/draw.css
index a0cee01..12cfe38 100644
--- a/inventory/static/css/components/draw.css
+++ b/inventory/static/css/components/draw.css
@@ -3,13 +3,55 @@
}
.grid-widget {
+ container-type: inline-size;
+ min-width: 375px;
+}
+
+.grid-widget [data-toolbar].toolbar {
+ display: grid !important;
+ grid-template-rows: auto auto;
+ align-content: start;
+ gap: .5rem;
+ overflow: visible;
+}
+
+.grid-widget [data-toolbar] .toolbar-row {
display: flex;
- flex-direction: column;
- height: 100%;
+ align-items: center;
+ gap: .5rem;
min-width: 0;
- min-height: 0;
- position: relative;
- isolation: isolate;
+ flex-wrap: nowrap;
+}
+
+.grid-widget [data-toolbar] .toolbar-row--primary,
+.grid-widget [data-toolbar] .toolbar-row--secondary {
+ overflow-x: auto;
+ overflow-y: hidden;
+}
+
+.grid-widget [data-toolbar] .toolbar-row--secondary {
+ opacity: .95;
+}
+
+/* WIDE: 1 row */
+@container (min-width: 725px){
+ .grid-widget [data-toolbar].toolbar{
+ display: flex !important;
+ flex-wrap: nowrap;
+ align-items: center;
+ gap: .5rem;
+ overflow-x: auto;
+ overflow-y: hidden;
+ }
+
+ .grid-widget [data-toolbar] .toolbar-row{
+ display: contents;
+ }
+
+ .grid-widget [data-toolbar] .toolbar-row--primary,
+ .grid-widget [data-toolbar] .toolbar-row--secondary{
+ overflow: visible;
+ }
}
.grid-widget .grid-wrap {
@@ -54,45 +96,12 @@
inset: 0;
}
-.grid-widget [data-toolbar] {
- flex: 0 0 auto;
- width: min(100%, var(--grid-maxw, 100%));
- box-sizing: border-box;
- margin: 0 auto;
- max-width: 100%;
- position: relative;
- z-index: 10;
- overflow: visible;
-}
-
.grid-widget [data-dot] {
transform: translate(-50%, -50%);
z-index: 2;
pointer-events: none;
}
-.grid-widget .toolbar {
- display: grid;
- gap: .5rem;
-}
-
-.grid-widget .toolbar-row {
- display: flex;
- align-items: center;
- gap: .5rem;
- min-width: 0;
- flex-wrap: nowrap;
-}
-
-.toolbar-row--primary {
- overflow-x: auto;
-}
-
-.toolbar-row--secondary {
- overflow-x: auto;
- opacity: .95;
-}
-
.grid-widget .toolbar-range {
width: 120px;
margin: 0;
@@ -211,4 +220,4 @@
.grid-widget [data-toolbar] {
max-width: var(--grid-maxw, 100%);
width: 100%;
-}
+}
\ No newline at end of file
diff --git a/inventory/static/js/components/draw.js b/inventory/static/js/components/draw.js
index f6cf1c1..db7e514 100644
--- a/inventory/static/js/components/draw.js
+++ b/inventory/static/js/components/draw.js
@@ -42,7 +42,7 @@ function initGridWidget(root, opts = {}) {
if (cellSizeEl && cellSizeValEl) bindRangeWithLabel(cellSizeEl, cellSizeValEl, v => `${v}px`);
if (fillOpacityEl && fillValEl) bindRangeWithLabel(fillOpacityEl, fillValEl, v => `${parseInt(Number(v) * 100)}%`);
if (strokeOpacityEl && strokeValEl) bindRangeWithLabel(strokeOpacityEl, strokeValEl, v => `${parseInt(Number(v) * 100)}%`);
- if (strokeWidthEl && widthValEl) bindRangeWithLabel(strokeWidthEl, widthValEl, v => `${parseInt(Number(v) * cellSizeEl.value)}p×`);
+ if (strokeWidthEl && widthValEl) bindRangeWithLabel(strokeWidthEl, widthValEl, v => `${Math.round(Number(v) * Number(cellSizeEl.value || 0))}px`);
const storageKey = opts.storageKey ?? 'gridDoc';
diff --git a/inventory/templates/components/draw.html b/inventory/templates/components/draw.html
index fefc903..b916248 100644
--- a/inventory/templates/components/draw.html
+++ b/inventory/templates/components/draw.html
@@ -160,7 +160,7 @@