Remove assets/assets/ and sources/sources/ artifact directories
created by sync script symlink resolution.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add esIcon() JS helper and renderIcon() PHP helper that auto-detect
the icon framework (Material Icons on PS 8+/9+, FontAwesome 4 on PS
1.6/1.7) and render appropriate HTML. Includes bidirectional mapping
between FA4 class names and Material Icons names.
- Replace all hardcoded <i class="material-icons"> with esIcon()/renderIcon()
- Add FA4_MAP (Material→FA4) and reverse FA4→Material mapping in both JS and PHP
- Add detectIconMode() with PHP data-attribute hint and font-family probe fallback
- Fix 4 self/this scope bugs in esIcon calls across _methods.js, _tree.js, _preview.js
- Add esIconUpdate() for dynamically updating existing icon elements
- Add normalizeIconName() to handle both FA4 and Material input formats
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Unify filter group and filter value preview icons into shared
.filter-chip-wrapper + .chip-preview-btn component pattern
- Remove old .toggle-count.clickable inline eye icon approach
- Add dropdown-level event handler for preview buttons (dropdown
appended to body, needs separate delegation)
- Enhanced EntitySearchEngine with improved product condition
resolution and preview data
- Add EntityPreviewHandler for richer preview popovers
- Various SCSS improvements for chips, groups, and list-preview
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Reverts collapsed default to true for form-content layout.
The expanded state showed too many wrappers/borders, making
forms look cluttered. Collapsed default shows a clean tab bar
with expand chevron — matches mprfriendlyurl reference style.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Reverts single-block optimization. All form-content layouts now render
identically: tab bar visible, content expanded by default (collapsed=false).
Single-block selectors (warehouse) now match multi-block selectors
(mprfriendlyurl) in structure.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
When form-content layout has only one entity type (e.g., just Products
or just Materials), the tab bar with a single tab looks broken. Now:
- Single block: no tab bar, no collapse toggle, content shown directly
- Multi block: tab bar with collapse toggle, collapsed by default (unchanged)
- Reverts previous collapsed default change (was wrong approach)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Change collapsed default from true to false so entity selector
blocks display their content (search, chips, method dropdown)
immediately without requiring user to expand manually.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add .mpr-badge--preview base class with consistent sizing (20px height, pill shape)
- Add color variants: -primary, -success, -warning, -muted
- Add .mpr-dropdown-preview component for inline schedule details
- Add schedule row layout with day/hours styling
- Support material icons inside badges with proper sizing
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add .schedule-preview-dropdown and .schedule-preview-item CSS classes
- Add .btn-schedule-preview badge styling
- Add preview functionality for entity list views
- Improve modal and dropdown styling
- Various JS and SCSS enhancements
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add layout-embedded class for nested entity selectors
- Simplified styling for embedded widgets (less padding, borders)
- Schedule toggle row with summary badges
- Summary badges show datetime range, weekly schedule, holiday count
- Flag fallback styling for countries without valid ISO codes
- Section hint margin after embedded entity selector
- Holiday countries group without modifiers section
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Preserve icon structure when updating total count in trait badge
- Add gap between title and count in preview popover header
- Style the count badge with background, padding, and rounded corners
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add _entity-item.scss shared component for chips and list items
- Refactor _list-preview.scss to use shared patterns
- Delete entity-list-preview.css (duplicate hardcoded styles)
- All preview styling now comes from SCSS build only
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add bootstrap specificity overrides for input/select in chips toolbar
- Use #content.bootstrap selector with doubled classes for specificity
- Reduce toolbar height with consistent padding (0.2rem vertical)
- Change border-radius from pill to subtle rounded corners
- Simplify input structure (embedded search icon via background)
- Align all toolbar elements (input, select, count, clear button)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Chips toolbar improvements:
- Filter input now uses all available space (flex: 1)
- Added sort dropdown: Order added, Name A-Z, Name Z-A
- Changed "Show X more" button to select dropdown pattern
- Load 20, 50, 100, or All
- Shows remaining count
- Collapse button to return to default view
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Wrap filter input in pill-shaped container (.chips-filter-group)
- Remove hard border separation between toolbar and chips
- Make toolbar feel like part of the chips area with shared background
- Smaller, subtler count badge and clear button
- Clear button styled as danger pill that fills on hover
- Responsive: hide clear text on small screens
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1. Fix Select All not persisting in list view:
- Updated Select All handler to populate pendingSelections array
- Updated Clear selection handler to clear pendingSelections for list view
- Updated dropdown item click to add/remove from pendingSelections
- Updated chip remove handler to filter pendingSelections
2. Fix chips toolbar (search/delete all) not showing:
- PHP renderer was pre-creating chips-wrapper without toolbar
- JS ensureChipsWrapper was skipping because wrapper existed
- Removed wrapper from PHP so JS creates complete wrapper with toolbar
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Fix validation mixin not being merged in _core.js which broke tree item selection
- Add data-entities attribute to sort options for entity-specific filtering
- Improve event handlers and filter panel updates
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add validation system to prevent contradicting conditions:
- Same entity in include/exclude detection
- Parent-child conflict detection for tree entities
- Redundant selection prevention
- Toast notifications for validation errors
- Fix entity icons (employees: briefcase, taxes: calculator)
- Improve tooltip component:
- Use Material Icons instead of broken FA4 icons
- Fix positioning using getBoundingClientRect for viewport coords
- Add click-to-pin functionality with close button
- Pinned tooltips show X icon and close button in corner
- Add lightweight test suite (31 tests) for validation logic
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Features:
- Tree view mode for categories with expand/collapse
- Product count badges with clickable preview popover
- Select parent with all children button
- Client-side tree filtering (refine search)
- Keyboard shortcuts: Ctrl+A (select all), Ctrl+D (clear)
- View mode switching between tree/list/columns
- Tree view as default for categories, respects user preference
Backend:
- Add previewCategoryProducts and previewCategoryPages AJAX handlers
- Support pagination and filtering in category previews
Styling:
- Consistent count-badge styling across tree and other views
- Loading and popover-open states for count badges
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Convert preview filter from client-side JS to server-side AJAX
- Add debounce utility function for 300ms delayed AJAX calls
- Add filter handlers for all 4 preview types (tab, condition, group, filter-group)
- Add filterProductIdsByQuery() method to EntityPreviewHandler
- Update all AJAX handlers to support filter parameter
- Lock popover width when filtering to prevent resize
- Add loading overlay CSS for filter state
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Refactor preview popover into reusable component with filter input and load more
- Fix sort controls: connect sort-field-select to btn-sort-dir (shared border)
- Fix refine controls: connect btn-refine-negate to refine-input
- Add flex-shrink: 0 and min-width to prevent button shrinking
- Fix grid view items: border on all 4 sides, no padding
- Add EXCEPT separator styling for selection groups
- Various button width and height fixes for consistency
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add case in handleEntitySelectorAjax switch for previewFilterGroupProducts
- Implement ajaxPreviewFilterGroupProducts() to get products by attribute/feature group
- Returns items with name, reference, manufacturer, image for popover preview
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Move toggle-count click handler next to filter-group-toggle handler
- Use this.$dropdown.on() for proper event delegation within dropdown context
- Ensures self reference is correctly captured for showFilterGroupPreviewPopover
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Added check to ignore clicks on .toggle-count.clickable in filter-group-toggle handler
- Prevents parent button from expanding values when clicking preview badge
- Added .gitignore to exclude node_modules
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add showFilterGroupPreviewPopover method in _preview.js
- Make toggle-count badges clickable with data attributes
- Add event binding for .toggle-count.clickable in _events.js
- Add hover/active/loading styles for clickable toggle-count
- Requires previewFilterGroupProducts AJAX handler in PHP backend
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>