From c3ad0fba84d88710af23e9be47cff52f8d15454e Mon Sep 17 00:00:00 2001 From: Yaro Kasear Date: Wed, 12 Nov 2025 09:09:57 -0600 Subject: [PATCH] The experiment with floating labels is a success! --- inventory/routes/entry.py | 36 ++++++++++---------- inventory/static/css/components/dropdown.css | 8 +++++ inventory/static/js/components/dropdown.js | 2 +- inventory/templates/crudkit/field.html | 32 +++++++++-------- inventory/templates/user_worklogs.html | 10 +++--- 5 files changed, 49 insertions(+), 39 deletions(-) diff --git a/inventory/routes/entry.py b/inventory/routes/entry.py index 85ede94..9d598ca 100644 --- a/inventory/routes/entry.py +++ b/inventory/routes/entry.py @@ -33,27 +33,27 @@ def _fields_for_model(model: str): "attrs": {"class": "display-6 mb-3"}, "wrap": {"class": "col"}}, {"name": "buttons", "label": "", "row": "label", "type": "template", "template": "entry_buttons.html", "wrap": {"class": "col-auto text-end me-2"}, "attrs": {"data-model": model}}, - {"name": "name", "row": "names", "label": "Name", "wrap": {"class": "col-3"}, - "attrs": {"class": "form-control"}, "label_attrs": {"class": "form-label"}}, - {"name": "serial", "row": "names", "label": "Serial #", "wrap": {"class": "col"}, - "attrs": {"class": "form-control"}, "label_attrs": {"class": "form-label"}}, - {"name": "barcode", "row": "names", "label": "Barcode #", "wrap": {"class": "col"}, - "attrs": {"class": "form-control"}, "label_attrs": {"class": "form-label"}}, - {"name": "brand", "label_spec": "{name}", "row": "device", "wrap": {"class": "col"}, - "attrs": {"class": "form-control"}, "label": "Brand", "label_attrs": {"class": "form-label"}}, - {"name": "model", "row": "device", "wrap": {"class": "col"}, - "attrs": {"class": "form-control"}, "label": "Model #", "label_attrs": {"class": "form-label"}}, - {"name": "device_type", "label_spec": "{description}", "row": "device", "wrap": {"class": "col"}, - "attrs": {"class": "form-control"}, "label": "Device Type", "label_attrs": {"class": "form-label"}}, - {"name": "owner", "row": "status", "label": "Contact", "wrap": {"class": "col"}, - "attrs": {"class": "form-control"}, "label_attrs": {"class": "form-label"}, + {"name": "name", "row": "names", "label": "Name", "wrap": {"class": "col form-floating"}, + "attrs": {"class": "form-control", "placeholder": "Device Name"}, "label_attrs": {"class": "ms-2"}}, + {"name": "serial", "row": "names", "label": "Serial #", "wrap": {"class": "col form-floating"}, + "attrs": {"class": "form-control", "placeholder": "Serial Number"}, "label_attrs": {"class": "ms-2"}}, + {"name": "barcode", "row": "names", "label": "Barcode #", "wrap": {"class": "col form-floating"}, + "attrs": {"class": "form-control", "placeholder": "Bar Code"}, "label_attrs": {"class": "ms-2"}}, + {"name": "brand", "label_spec": "{name}", "row": "device", "wrap": {"class": "col form-floating"}, + "attrs": {"class": "form-control"}, "label": "Brand", "label_attrs": {"class": "ms-2"}}, + {"name": "model", "row": "device", "wrap": {"class": "col form-floating"}, + "attrs": {"class": "form-control", "placeholder": "Model Number"}, "label": "Model #", "label_attrs": {"class": "ms-2"}}, + {"name": "device_type", "label_spec": "{description}", "row": "device", "wrap": {"class": "col form-floating"}, + "attrs": {"class": "form-control"}, "label": "Device Type", "label_attrs": {"class": "ms-2"}}, + {"name": "owner", "row": "status", "label": "Contact", "wrap": {"class": "col form-floating"}, + "attrs": {"class": "form-control"}, "label_attrs": {"class": "ms-2 link-label"}, "label_spec": "{label}", "link": {"endpoint": "entry.entry", "params": {"model": "user", "id": "{owner.id}"}}, "options_params": {"active__eq": True}}, - {"name": "location", "row": "status", "label": "Location", "wrap": {"class": "col"}, - "attrs": {"class": "form-control"}, "label_attrs": {"class": "form-label"}, + {"name": "location", "row": "status", "label": "Location", "wrap": {"class": "col form-floating"}, + "attrs": {"class": "form-control"}, "label_attrs": {"class": "ms-2"}, "label_spec": "{name} - {room_function.description}"}, - {"name": "condition", "label": "Condition", "row": "status", "wrap": {"class": "col"}, - "label_attrs": {"class": "form-label"}, "label_spec": "{description}"}, + {"name": "condition", "label": "Condition", "row": "status", "wrap": {"class": "col form-floating"}, + "label_attrs": {"class": "ms-2"}, "label_spec": "{description}"}, {"name": "image", "label": "", "row": "image", "type": "template", "label_spec": "{filename}", "template": "image_display.html", "attrs": {"class": "img-fluid img-thumbnail h-auto"}, "wrap": {"class": "h-100 w-100"}}, diff --git a/inventory/static/css/components/dropdown.css b/inventory/static/css/components/dropdown.css index fee3d50..5728e74 100644 --- a/inventory/static/css/components/dropdown.css +++ b/inventory/static/css/components/dropdown.css @@ -2,3 +2,11 @@ border-color: rgb(222, 226, 230) !important; overflow-y: auto; } + +.link-label { + pointer-events: none; +} + +.link-label a { + pointer-events: auto; +} diff --git a/inventory/static/js/components/dropdown.js b/inventory/static/js/components/dropdown.js index 256ee0f..72bc8e8 100644 --- a/inventory/static/js/components/dropdown.js +++ b/inventory/static/js/components/dropdown.js @@ -21,7 +21,7 @@ DropDown.utilities = { const inp = document.getElementById(id); btn.dataset.value = value; - btn.textContent = txt; + btn.value = txt; inp.value = value; }, diff --git a/inventory/templates/crudkit/field.html b/inventory/templates/crudkit/field.html index b458797..aa33953 100644 --- a/inventory/templates/crudkit/field.html +++ b/inventory/templates/crudkit/field.html @@ -1,16 +1,4 @@ -{% if field_type != 'hidden' and field_label %} - -{% endif %} {% if field_type == 'select' %} {# @@ -47,9 +35,11 @@ {% else %} {% set sel_label = "-- Select --" %} {% endif %} - -