Files
netbox/netbox/project-static/styles/transitional/_forms.scss
Jason Novinger 8445a63786 Fixes #7604: Add filter modifier dropdowns for advanced lookup operators
Implements dynamic filter modifier UI that allows users to select lookup operators
(exact, contains, starts with, regex, negation, empty/not empty) directly in filter
forms without manual URL parameter editing.

Supports filters for all scalar types and strings, as well as some
related object filters. Explicitly does not support filters on fields
that use APIWidget. That has been broken out in to follow up work.

**Backend:**
- FilterModifierWidget: Wraps form widgets with lookup modifier dropdown
- FilterModifierMixin: Auto-enhances filterset fields with appropriate lookups
- Extended lookup support: Adds negation (n), regex, iregex, empty_true/false lookups
- Field-type-aware: CharField gets text lookups, IntegerField gets comparison operators, etc.

**Frontend:**
- TypeScript handler syncs modifier dropdown with URL parameters
- Dynamically updates form field names (serial → serial__ic) on modifier change
- Flexible-width modifier dropdowns with semantic CSS classes
2025-12-04 14:45:20 -06:00

43 lines
755 B
SCSS

// Limit the width of object edit forms
form.object-edit {
margin: auto;
max-width: 800px;
}
// Use <h3> style for field group headings
.field-group {
h2 {
@extend h3;
}
}
// Set bond font & append an asterisk to labels for required fields
.col-form-label.required {
font-weight: bold;
&:after {
position: absolute;
display: inline-block;
margin-left: 0;
font-family: 'Material Design Icons';
font-size: 8px;
content: '\f06C4';
}
}
// Set red border on form fields inside a row with .has-errors
.has-errors {
input,
select,
textarea {
border: 1px solid $red;
}
}
// Filter modifier dropdown sizing
.modifier-select {
min-width: 10rem;
max-width: 15rem;
width: auto;
white-space: nowrap;
}