refactor: entity selector full overhaul — Mar 2026

- Unified _setBadgeCount for ALL badge updates
- target-conditions-trait → entity-selector-trait
- target-* → es-* class rename (20+ classes)
- SCSS recompiled: zero duplicate selectors
- CSS transitions replace jQuery slideDown/slideUp
- Serialize cache, method swap cache
- Badge: no-matches gray, consistent hover, no blending
- Inline condition count always visible
- Preview popover refreshes in-place on sort change
- Categories add chips immediately
- Entity type icons on chips
- Consistent info_outline icons via buildHelpIcon
- Method dropdown text clipping fix (line-height)
- mpr-input-compact on all inputs
- Dropdown padding fixed in SCSS source
- Chips wrapper: same container always
- Reusable helpers: _buildEmptyState, _buildSearchBoxHtml, _buildInfoTooltip
- Asset path: uses $this->module->getPathUri() not reflection
- Debug logs removed

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-03-30 18:05:43 +00:00
parent d2d4f96c5e
commit c6fd5cee13
38 changed files with 7670 additions and 8929 deletions

View File

@@ -6,11 +6,10 @@
@use '../variables' as *;
@use '../mixins' as *;
.target-conditions-trait,
.entity-selector-trait {
// Group container
.target-group {
.es-group {
background: $es-white;
border: 1px solid $es-border-color;
border-radius: $es-radius-lg;
@@ -18,7 +17,7 @@
}
// Group header
.target-group-header {
.es-group-header {
display: flex;
align-items: center;
justify-content: space-between;
@@ -28,7 +27,7 @@
border-bottom: 1px solid $es-border-color;
}
.target-group-title {
.es-group-title {
display: flex;
align-items: center;
gap: $es-spacing-sm;
@@ -51,7 +50,7 @@
}
}
.target-group-actions {
.es-group-actions {
display: flex;
align-items: center;
gap: $es-spacing-xs;
@@ -80,7 +79,7 @@
}
// Group body
.target-group-body,
.es-group-body,
.group-body {
padding: $es-spacing-md;
}
@@ -931,36 +930,6 @@
background-size: 1.25em 1.25em;
}
// Single mode — strip padding, borders, backgrounds for clean single-selection UI
&[data-mode=single],
.mode-single {
.groups-container {
padding: 0;
}
.group-body {
padding: 0;
}
.group-include {
padding: 0.5rem;
margin-bottom: 0;
background: transparent;
border: none;
border-radius: 0;
}
.selection-group {
background: transparent;
border: none;
margin-bottom: 0;
}
.group-header {
display: none;
}
}
// Condition match count badge
.condition-match-count {
display: inline-flex;