feat: icon abstraction layer for PS 1.6-9.x compatibility

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>
This commit is contained in:
2026-03-01 14:47:50 +01:00
parent 55e3135903
commit 1945da88b2
82 changed files with 56654 additions and 5364 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,184 @@
/**
* MPR Search Revolution - Universal Modal Styles
* All admin modals use .mpr-sr-admin-modal class
* Works on both Symfony pages (.show) and Legacy pages (.in)
*/
.mpr-sr-admin-modal.show,
.mpr-sr-admin-modal.in {
display: flex !important;
align-items: center;
justify-content: center;
}
.mpr-sr-admin-modal.show .modal-dialog,
.mpr-sr-admin-modal.in .modal-dialog {
transform: none !important;
top: auto !important;
margin: 0 auto !important;
}
.mpr-sr-admin-modal .modal-dialog {
max-width: 480px;
}
.mpr-sr-admin-modal .modal-content {
padding: 1.25rem;
border-radius: 8px;
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
}
.mpr-sr-admin-modal .modal-header,
.mpr-sr-admin-modal .modal-body,
.mpr-sr-admin-modal .modal-footer {
padding: 0;
}
.mpr-sr-admin-modal .modal-header {
margin-bottom: 1rem;
display: flex;
align-items: center;
justify-content: space-between;
border: none;
}
.mpr-sr-admin-modal .modal-header .modal-title {
font-size: 1.125rem;
font-weight: 600;
display: flex;
align-items: center;
gap: 0.5rem;
margin: 0;
}
.mpr-sr-admin-modal .modal-header .modal-title i {
margin-right: 8px;
}
.mpr-sr-admin-modal .modal-header .close,
.mpr-sr-admin-modal .modal-header .mpr-close-modal {
display: flex;
align-items: center;
justify-content: center;
margin: 0;
margin-left: auto;
padding: 5px;
background: transparent;
border: none;
cursor: pointer;
transition: opacity 0.2s;
line-height: 1;
opacity: 0.7;
}
.mpr-sr-admin-modal .modal-header .close:hover,
.mpr-sr-admin-modal .modal-header .mpr-close-modal:hover {
opacity: 1;
}
.mpr-sr-admin-modal .modal-body {
text-align: center;
}
.mpr-sr-admin-modal .modal-body .body-title {
font-size: 0.875rem;
color: #6b7280;
margin-bottom: 0.25rem;
}
.mpr-sr-admin-modal .modal-body .modal-amount {
font-size: 2.5rem;
font-weight: 600;
margin-bottom: 1.25rem;
color: #dc2626;
}
.mpr-sr-admin-modal .modal-body .tables-table {
margin-bottom: 1rem;
font-size: 0.875rem;
text-align: left;
}
.mpr-sr-admin-modal .modal-body .tables-table thead th {
background: #f8fafc;
font-weight: 600;
font-size: 0.75rem;
text-transform: uppercase;
letter-spacing: 0.025em;
color: #64748b;
padding: 0.5rem 0.75rem;
}
.mpr-sr-admin-modal .modal-body .tables-table tbody td {
padding: 0.5rem 0.75rem;
vertical-align: middle;
border-color: #f1f5f9;
}
.mpr-sr-admin-modal .modal-footer {
display: flex;
padding-top: 1rem;
gap: 0.75rem;
border: none;
}
.mpr-sr-admin-modal .modal-footer .btn {
flex: 1;
display: flex;
justify-content: center;
align-items: center;
gap: 0.5rem;
padding: 0.625rem 1rem;
font-weight: 500;
border-radius: 6px;
position: relative;
z-index: 1;
cursor: pointer;
}
.mpr-sr-admin-modal .modal-footer .btn i {
margin-right: 5px;
}
.mpr-sr-admin-modal .modal-footer .cancel-btn,
.mpr-sr-admin-modal .modal-footer .btn-secondary {
background: #f1f5f9;
border: 1px solid #e2e8f0;
color: #64748b;
}
.mpr-sr-admin-modal .modal-footer .cancel-btn:hover,
.mpr-sr-admin-modal .modal-footer .btn-secondary:hover {
background: #e2e8f0;
color: #475569;
}
.mpr-sr-admin-modal .modal-footer .confirm-btn,
.mpr-sr-admin-modal .modal-footer .btn-primary {
border: none;
color: #fff;
background: linear-gradient(135deg, #337ab7 0%, #286090 100%);
}
.mpr-sr-admin-modal .modal-footer .confirm-btn:hover:not(:disabled),
.mpr-sr-admin-modal .modal-footer .btn-primary:hover:not(:disabled) {
transform: translateY(-1px);
background: linear-gradient(135deg, #286090 0%, #204d74 100%);
}
.mpr-sr-admin-modal .modal-footer .confirm-btn:disabled,
.mpr-sr-admin-modal .modal-footer .btn-primary:disabled {
opacity: 0.6;
cursor: not-allowed;
}
.mpr-sr-admin-modal .modal-footer .btn-danger {
background: linear-gradient(135deg, #dc2626 0%, #b91c1c 100%);
border: none;
color: #fff;
}
.mpr-sr-admin-modal .modal-footer .btn-danger:hover:not(:disabled) {
background: linear-gradient(135deg, #b91c1c 0%, #991b1b 100%);
transform: translateY(-1px);
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

515
assets/assets/js/admin/modal.js Executable file
View File

@@ -0,0 +1,515 @@
/**
* MPR Express Checkout - Standardized Modal Helper
*
* Provides a consistent API for managing modals across the module.
*
* Usage:
* const modal = new MPRModal('my-modal-id');
* modal.show();
* modal.setHeader('success', 'icon-check', 'Operation Complete');
* modal.setBody('<p>Content here</p>');
* modal.setFooter([
* { type: 'cancel', label: 'Close' },
* { type: 'primary', label: 'Continue', icon: 'arrow-right', onClick: () => {} }
* ]);
*/
class MPRModal {
/**
* @param {string} modalId - The modal element ID (without #)
* @param {Object} options - Configuration options
* @param {Function} options.onShow - Callback when modal is shown
* @param {Function} options.onHide - Callback when modal is hidden
* @param {Function} options.onCancel - Callback when cancel/close is clicked
*/
constructor(modalId, options = {}) {
this.modalId = modalId;
this.$modal = $(`#${modalId}`);
this.$header = this.$modal.find('.mpr-modal-header');
this.$title = this.$modal.find('.mpr-modal-title');
this.$titleText = this.$modal.find('.mpr-modal-title-text');
this.$titleIcon = this.$modal.find('.mpr-modal-icon');
this.$body = this.$modal.find('.mpr-modal-body');
this.$footer = this.$modal.find('.mpr-modal-footer');
this.options = options;
this.currentView = null;
this._bindEvents();
}
/**
* Bind modal events
*/
_bindEvents() {
this.$modal.on('shown.bs.modal', () => {
if (typeof this.options.onShow === 'function') {
this.options.onShow();
}
});
this.$modal.on('hidden.bs.modal', () => {
if (typeof this.options.onHide === 'function') {
this.options.onHide();
}
});
this.$modal.on('click', '[data-dismiss="modal"]', () => {
if (typeof this.options.onCancel === 'function') {
this.options.onCancel();
}
});
}
/**
* Show the modal
* @param {Object} options - Bootstrap modal options
*/
show(options = {}) {
if (this.$modal.length === 0) {
console.error('[MPRModal] Modal element not found');
return;
}
this.$modal.modal({
backdrop: options.static ? 'static' : true,
keyboard: !options.static,
...options
});
}
/**
* Hide the modal
*/
hide() {
this.$modal.modal('hide');
}
/**
* Set header appearance
* @param {string} type - Header type: default, primary, success, warning, danger, dark
* @param {string} icon - Icon class without prefix (e.g., 'shield' for icon-shield)
* @param {string} title - Title text
*/
setHeader(type, icon, title) {
// Remove all header type classes
this.$header.removeClass(
'mpr-modal-header-default mpr-modal-header-primary mpr-modal-header-success ' +
'mpr-modal-header-warning mpr-modal-header-danger mpr-modal-header-dark'
);
this.$header.addClass(`mpr-modal-header-${type}`);
if (icon) {
if (this.$titleIcon.length) {
this.$titleIcon.attr('class', `mpr-icon icon-${icon} mpr-modal-icon`);
} else {
this.$title.prepend(`<i class="mpr-icon icon-${icon} mpr-modal-icon"></i>`);
this.$titleIcon = this.$modal.find('.mpr-modal-icon');
}
}
if (title !== undefined) {
this.$titleText.text(title);
}
}
/**
* Set only the header type/color
* @param {string} type - Header type: default, primary, success, warning, danger, dark
*/
setHeaderType(type) {
this.$header.removeClass(
'mpr-modal-header-default mpr-modal-header-primary mpr-modal-header-success ' +
'mpr-modal-header-warning mpr-modal-header-danger mpr-modal-header-dark'
);
this.$header.addClass(`mpr-modal-header-${type}`);
}
/**
* Set the header title
* @param {string} title - Title text
*/
setTitle(title) {
this.$titleText.text(title);
}
/**
* Set the header icon
* @param {string} icon - Icon class without prefix
*/
setIcon(icon) {
if (this.$titleIcon.length) {
this.$titleIcon.attr('class', `icon-${icon} mpr-modal-icon`);
}
}
/**
* Set modal size
* @param {string} size - Size: sm, md, lg, xl, fullwidth
*/
setSize(size) {
const $dialog = this.$modal.find('.modal-dialog');
$dialog.removeClass('modal-sm modal-lg modal-xl modal-fullwidth');
if (size === 'sm') {
$dialog.addClass('modal-sm');
} else if (size === 'lg') {
$dialog.addClass('modal-lg');
} else if (size === 'xl') {
$dialog.addClass('modal-xl');
} else if (size === 'fullwidth') {
$dialog.addClass('modal-fullwidth');
}
}
/**
* Set body content
* @param {string} html - HTML content for the body
*/
setBody(html) {
this.$body.html(html);
}
/**
* Append content to body
* @param {string} html - HTML content to append
*/
appendBody(html) {
this.$body.append(html);
}
/**
* Set footer buttons
* @param {Array} buttons - Array of button configurations
* Each button: { type, label, icon, id, onClick, disabled, className, size }
* type: 'cancel', 'primary', 'success', 'warning', 'danger', 'default', 'dark',
* 'outline-primary', 'outline-danger', 'ghost'
* size: 'sm', 'lg' (optional)
*/
setFooter(buttons) {
this.$footer.empty();
buttons.forEach(btn => {
const btnType = btn.type === 'cancel' ? 'default' : btn.type;
let btnClass = `mpr-btn mpr-btn-${btnType}`;
if (btn.size) {
btnClass += ` mpr-btn-${btn.size}`;
}
if (btn.className) {
btnClass += ` ${btn.className}`;
}
const $btn = $('<button>', {
type: 'button',
class: btnClass,
id: btn.id || undefined,
disabled: btn.disabled || false
});
if (btn.type === 'cancel' || btn.dismiss) {
$btn.attr('data-dismiss', 'modal');
}
// Add icon - cancel buttons get 'close' icon by default if no icon specified
const iconName = btn.icon || (btn.type === 'cancel' ? 'close' : null);
if (iconName) {
$btn.append(`<i class="mpr-icon icon-${iconName}"></i> `);
}
// Support HTML in labels (for inline icons) or plain text
if (btn.html) {
$btn.append(btn.label);
} else {
$btn.append(document.createTextNode(btn.label));
}
if (typeof btn.onClick === 'function') {
$btn.on('click', btn.onClick);
}
this.$footer.append($btn);
});
}
/**
* Set button loading state
* @param {string} buttonId - Button ID
* @param {boolean} loading - Loading state
*/
setButtonLoading(buttonId, loading) {
const $btn = $(`#${buttonId}`);
if (loading) {
$btn.addClass('mpr-btn-loading').prop('disabled', true);
} else {
$btn.removeClass('mpr-btn-loading').prop('disabled', false);
}
}
/**
* Show footer
*/
showFooter() {
this.$footer.removeClass('hidden');
}
/**
* Hide footer
*/
hideFooter() {
this.$footer.addClass('hidden');
}
/**
* Enable/disable a footer button by ID
* @param {string} buttonId - Button ID
* @param {boolean} enabled - Enable or disable
*/
setButtonEnabled(buttonId, enabled) {
$(`#${buttonId}`).prop('disabled', !enabled);
}
/**
* Update button label
* @param {string} buttonId - Button ID
* @param {string} label - New label
* @param {string} icon - Optional new icon
*/
setButtonLabel(buttonId, label, icon = null) {
const $btn = $(`#${buttonId}`);
$btn.empty();
if (icon) {
$btn.append(`<i class="mpr-icon icon-${icon}"></i> `);
}
$btn.append(document.createTextNode(label));
}
/**
* Switch between views (for multi-step modals)
* Views should have class 'mpr-modal-view' and a data-view attribute
* @param {string} viewName - The view to show
*/
showView(viewName) {
this.$body.find('.mpr-modal-view').removeClass('active');
this.$body.find(`[data-view="${viewName}"]`).addClass('active');
this.currentView = viewName;
}
/**
* Get current view name
* @returns {string|null}
*/
getCurrentView() {
return this.currentView;
}
/**
* Create and show a simple confirmation modal
* @param {Object} config - Configuration
* @param {string} config.type - Header type
* @param {string} config.icon - Header icon
* @param {string} config.title - Title
* @param {string} config.message - Body message (can be HTML)
* @param {string} config.confirmLabel - Confirm button label
* @param {string} config.confirmType - Confirm button type (primary, danger, etc.)
* @param {string} config.cancelLabel - Cancel button label
* @param {Function} config.onConfirm - Confirm callback
* @param {Function} config.onCancel - Cancel callback
*/
confirm(config) {
this.setHeader(
config.type || 'primary',
config.icon || 'question',
config.title || 'Confirm'
);
this.setBody(`
<div class="mpr-modal-center">
<p>${config.message}</p>
</div>
`);
this.setFooter([
{
type: 'cancel',
label: config.cancelLabel || 'Cancel',
onClick: config.onCancel
},
{
type: config.confirmType || 'primary',
label: config.confirmLabel || 'Confirm',
icon: config.confirmIcon,
onClick: () => {
if (typeof config.onConfirm === 'function') {
config.onConfirm();
}
if (config.autoClose !== false) {
this.hide();
}
}
}
]);
this.show({ static: config.static || false });
}
/**
* Show a progress state
* @param {Object} config - Configuration
* @param {string} config.title - Progress title
* @param {string} config.subtitle - Progress subtitle
* @param {number} config.percent - Initial percentage (0-100)
*/
showProgress(config = {}) {
const title = config.title || 'Processing...';
const subtitle = config.subtitle || 'Please wait';
const percent = config.percent || 0;
this.setBody(`
<div class="mpr-modal-progress">
<i class="icon-refresh mpr-modal-progress-icon"></i>
<div class="mpr-modal-progress-title">${title}</div>
<div class="mpr-modal-progress-subtitle">${subtitle}</div>
<div class="mpr-modal-progress-bar-container">
<div class="mpr-modal-progress-bar" style="width: ${percent}%"></div>
</div>
<div class="mpr-modal-progress-percent">${percent}%</div>
<div class="mpr-modal-progress-current"></div>
</div>
`);
this.hideFooter();
this.setHeaderType('primary');
}
/**
* Update progress bar
* @param {number} percent - Percentage (0-100)
* @param {string} currentItem - Current item being processed
*/
updateProgress(percent, currentItem = '') {
this.$body.find('.mpr-modal-progress-bar').css('width', `${percent}%`);
this.$body.find('.mpr-modal-progress-percent').text(`${Math.round(percent)}%`);
if (currentItem) {
this.$body.find('.mpr-modal-progress-current').text(currentItem);
}
}
/**
* Show a result state
* @param {Object} config - Configuration
* @param {string} config.type - Result type: success, warning, danger, info
* @param {string} config.icon - Icon (defaults based on type)
* @param {string} config.title - Result title
* @param {string} config.message - Result message
* @param {string} config.closeLabel - Close button label
* @param {Function} config.onClose - Close callback
*/
showResult(config) {
const iconMap = {
success: 'check-circle',
warning: 'warning',
danger: 'times-circle',
info: 'info-circle'
};
const icon = config.icon || iconMap[config.type] || 'info-circle';
this.setHeaderType(config.type === 'info' ? 'primary' : config.type);
this.setBody(`
<div class="mpr-modal-result">
<i class="icon-${icon} mpr-modal-result-icon result-${config.type}"></i>
<div class="mpr-modal-result-title">${config.title}</div>
<div class="mpr-modal-result-message">${config.message}</div>
</div>
`);
this.setFooter([
{
type: 'primary',
label: config.closeLabel || 'Close',
onClick: () => {
if (typeof config.onClose === 'function') {
config.onClose();
}
this.hide();
}
}
]);
this.showFooter();
}
/**
* Lock modal (prevent closing)
*/
lock() {
this.$modal.data('bs.modal').options.backdrop = 'static';
this.$modal.data('bs.modal').options.keyboard = false;
this.$modal.find('.mpr-modal-close').hide();
}
/**
* Unlock modal (allow closing)
*/
unlock() {
this.$modal.data('bs.modal').options.backdrop = true;
this.$modal.data('bs.modal').options.keyboard = true;
this.$modal.find('.mpr-modal-close').show();
}
/**
* Destroy the modal instance
*/
destroy() {
this.$modal.modal('dispose');
this.$modal.off();
}
}
/**
* Factory function to create modals dynamically
* Creates the modal HTML and appends it to the body
*
* @param {Object} config - Modal configuration
* @param {string} config.id - Modal ID
* @param {string} config.size - Modal size: sm, md, lg, xl
* @param {boolean} config.static - Static backdrop
* @returns {MPRModal}
*/
MPRModal.create = function(config) {
const id = config.id || 'mpr-modal-' + Date.now();
const sizeClass = config.size === 'sm' ? 'modal-sm' :
config.size === 'lg' ? 'modal-lg' :
config.size === 'xl' ? 'modal-xl' :
config.size === 'fullwidth' ? 'modal-fullwidth' : '';
const html = `
<div class="modal fade mpr-modal" id="${id}" tabindex="-1" role="dialog"
${config.static ? 'data-backdrop="static" data-keyboard="false"' : ''}>
<div class="modal-dialog ${sizeClass}" role="document">
<div class="modal-content">
<div class="modal-header mpr-modal-header mpr-modal-header-primary">
<h5 class="modal-title mpr-modal-title">
<i class="mpr-modal-icon"></i>
<span class="mpr-modal-title-text"></span>
</h5>
<button type="button" class="close mpr-modal-close" data-dismiss="modal">
<span>&times;</span>
</button>
</div>
<div class="modal-body mpr-modal-body"></div>
<div class="modal-footer mpr-modal-footer"></div>
</div>
</div>
</div>
`;
$('body').append(html);
return new MPRModal(id, config);
};
// Export for module systems if available
if (typeof module !== 'undefined' && module.exports) {
module.exports = MPRModal;
}

View File

@@ -0,0 +1,3 @@
// Placeholder - _core.js
// Placeholder - _timeline.js

View File

@@ -0,0 +1,5 @@
// Placeholder - _core.js
// Placeholder - _timeline.js
//# sourceMappingURL=schedule-conditions.min.js.map

View File

@@ -0,0 +1 @@
{"version":3,"sources":[],"names":[],"mappings":"","file":"schedule-conditions.min.js","sourcesContent":[]}

View File

@@ -16,6 +16,13 @@
/**
* MPR Admin Variables
* @package prestashop-admin
*
* Color token system:
* - PS theme vars (--primary, --danger, etc.) → set by PrestaShop admin theme
* - MPR tokens (--mpr-*) → set here as defaults, overridable per module/theme
*
* Usage in SCSS: var(--token, $fallback)
* The $fallback SCSS vars below ensure compilation succeeds even without :root.
*/
/**
* Entity Selector Styles
@@ -36,6 +43,27 @@
transform: rotate(360deg);
}
}
@keyframes spin-pulse {
0% {
transform: rotate(0deg);
opacity: 1;
}
50% {
opacity: 0.4;
}
100% {
transform: rotate(360deg);
opacity: 1;
}
}
.es-spin {
animation: spin 1s linear infinite;
}
.es-spin-pulse {
animation: spin-pulse 1s ease-in-out infinite;
}
/**
* Entity Selector Styles
* @package prestashop-entity-selector
@@ -251,6 +279,10 @@
border: 1px solid #dee2e6;
border-radius: 0.3rem;
}
.target-conditions-trait .material-icons,
.entity-selector-trait .material-icons {
font-size: 18px !important;
}
.target-conditions-trait .condition-trait-header,
.entity-selector-trait .condition-trait-header {
display: flex;
@@ -433,7 +465,7 @@
}
.target-conditions-trait .trait-show-all-toggle .show-all-checkbox:checked + .toggle-slider,
.entity-selector-trait .trait-show-all-toggle .show-all-checkbox:checked + .toggle-slider {
background: #28a745;
background: #70b580;
}
.target-conditions-trait .trait-show-all-toggle .show-all-checkbox:checked + .toggle-slider::after,
.entity-selector-trait .trait-show-all-toggle .show-all-checkbox:checked + .toggle-slider::after {
@@ -514,9 +546,9 @@
border-bottom-color: #06b6d4;
color: #25b9d7;
}
.target-conditions-trait .target-block-tab i,
.entity-selector-trait .target-block-tab i {
font-size: 0.875rem;
.target-conditions-trait .target-block-tab i.material-icons,
.entity-selector-trait .target-block-tab i.material-icons {
font-size: 18px !important;
}
.target-conditions-trait .target-block-tab .tab-label,
.entity-selector-trait .target-block-tab .tab-label {
@@ -682,6 +714,38 @@
border-bottom: 0;
border-radius: 0.3rem 0 0 0;
}
.target-conditions-trait .entity-selector-actions:not(.btn-toggle-blocks),
.entity-selector-trait .entity-selector-actions:not(.btn-toggle-blocks) {
display: flex;
align-items: center;
padding: 0.25rem 1rem;
border-left: 1px solid #dee2e6;
}
.target-conditions-trait .entity-selector-actions:not(.btn-toggle-blocks) .btn-toggle-groups,
.entity-selector-trait .entity-selector-actions:not(.btn-toggle-blocks) .btn-toggle-groups {
display: flex;
align-items: center;
justify-content: center;
width: 34px;
height: 34px;
padding: 0;
background: #ffffff;
border: 1px solid #94a3b8;
border-radius: 0.25rem;
color: #334155;
cursor: pointer;
transition: all 0.15s ease-in-out;
}
.target-conditions-trait .entity-selector-actions:not(.btn-toggle-blocks) .btn-toggle-groups:hover,
.entity-selector-trait .entity-selector-actions:not(.btn-toggle-blocks) .btn-toggle-groups:hover {
background: rgba(37, 185, 215, 0.1);
color: #25b9d7;
border-color: #25b9d7;
}
.target-conditions-trait .entity-selector-actions:not(.btn-toggle-blocks) .btn-toggle-groups .material-icons,
.entity-selector-trait .entity-selector-actions:not(.btn-toggle-blocks) .btn-toggle-groups .material-icons {
font-size: 18px !important;
}
.target-conditions-trait .entity-selector-actions.btn-toggle-blocks,
.entity-selector-trait .entity-selector-actions.btn-toggle-blocks {
display: flex;
@@ -749,7 +813,7 @@
}
.target-conditions-trait .target-block-empty i,
.entity-selector-trait .target-block-empty i {
font-size: 2rem;
font-size: 2rem !important;
opacity: 0.5;
}
.target-conditions-trait .target-block-empty p,
@@ -799,10 +863,6 @@
.entity-selector-trait.single-mode .target-block-container {
display: block;
}
.target-conditions-trait.single-mode .entity-selector-tabs-row .target-block-tabs,
.entity-selector-trait.single-mode .entity-selector-tabs-row .target-block-tabs {
display: flex;
}
.target-conditions-trait .header-actions,
.entity-selector-trait .header-actions {
@@ -844,7 +904,7 @@
}
.target-conditions-trait .header-action-btn i,
.entity-selector-trait .header-action-btn i {
font-size: 12px;
font-size: 14px !important;
}
/**
@@ -1688,11 +1748,11 @@
}
.target-conditions-trait .result-col-stock .col-value.stock-ok,
.entity-selector-trait .result-col-stock .col-value.stock-ok {
color: #28a745;
color: #70b580;
}
.target-conditions-trait .result-col-stock .col-value.stock-low,
.entity-selector-trait .result-col-stock .col-value.stock-low {
color: #ffc107;
color: #fab000;
}
.target-conditions-trait .result-col-stock .col-value.stock-out,
.entity-selector-trait .result-col-stock .col-value.stock-out {
@@ -1753,19 +1813,6 @@
align-items: center;
gap: 0.5rem;
}
.target-conditions-trait .dropdown-item.is-combination,
.entity-selector-trait .dropdown-item.is-combination {
padding-left: 28px;
}
.target-conditions-trait .dropdown-item.is-combination .result-name,
.entity-selector-trait .dropdown-item.is-combination .result-name {
font-size: 0.9em;
}
.target-conditions-trait .dropdown-item.is-parent-product,
.entity-selector-trait .dropdown-item.is-parent-product {
background: #f8fafc;
font-weight: 500;
}
.target-conditions-trait .no-results,
.entity-selector-trait .no-results {
display: flex;
@@ -3044,12 +3091,12 @@ body > .target-search-dropdown .filter-group-toggle.active .toggle-count,
}
body > .target-search-dropdown .filter-group-toggle.has-selection,
.target-search-dropdown .filter-group-toggle.has-selection {
border-color: #28a745;
background: rgba(40, 167, 69, 0.05);
border-color: #70b580;
background: rgba(112, 181, 128, 0.05);
}
body > .target-search-dropdown .filter-group-toggle.has-selection .toggle-count,
.target-search-dropdown .filter-group-toggle.has-selection .toggle-count {
color: #28a745;
color: #70b580;
font-weight: 600;
}
body > .target-search-dropdown .filter-group-toggle .toggle-name,
@@ -3058,9 +3105,46 @@ body > .target-search-dropdown .filter-group-toggle .toggle-name,
}
body > .target-search-dropdown .filter-group-toggle .toggle-count,
.target-search-dropdown .filter-group-toggle .toggle-count {
display: inline-flex;
align-items: center;
gap: 0.125rem;
color: #6c757d;
font-size: 0.65rem;
}
body > .target-search-dropdown .filter-group-toggle .toggle-count i,
.target-search-dropdown .filter-group-toggle .toggle-count i {
font-size: 10px;
color: #25b9d7;
}
body > .target-search-dropdown .filter-group-toggle .toggle-count.clickable,
.target-search-dropdown .filter-group-toggle .toggle-count.clickable {
cursor: pointer;
padding: 0.125rem 0.25rem;
border-radius: 0.2rem;
transition: all 0.15s ease-in-out;
}
body > .target-search-dropdown .filter-group-toggle .toggle-count.clickable:hover,
.target-search-dropdown .filter-group-toggle .toggle-count.clickable:hover {
background: rgba(37, 185, 215, 0.1);
color: #25b9d7;
}
body > .target-search-dropdown .filter-group-toggle .toggle-count.clickable:hover i,
.target-search-dropdown .filter-group-toggle .toggle-count.clickable:hover i {
color: #25b9d7;
}
body > .target-search-dropdown .filter-group-toggle .toggle-count.clickable.popover-open,
.target-search-dropdown .filter-group-toggle .toggle-count.clickable.popover-open {
background: #25b9d7;
color: #ffffff;
}
body > .target-search-dropdown .filter-group-toggle .toggle-count.clickable.popover-open i,
.target-search-dropdown .filter-group-toggle .toggle-count.clickable.popover-open i {
color: #ffffff;
}
body > .target-search-dropdown .filter-group-toggle .toggle-count.clickable.loading i,
.target-search-dropdown .filter-group-toggle .toggle-count.clickable.loading i {
animation: spin 0.6s linear infinite;
}
body > .target-search-dropdown .filter-chip, body > .target-search-dropdown .filter-attr-chip,
body > .target-search-dropdown .filter-feat-chip,
.target-search-dropdown .filter-chip,
@@ -3181,81 +3265,6 @@ body > .target-search-dropdown .filter-chip.active .chip-count,
.target-search-dropdown .active.filter-feat-chip .chip-count {
color: rgba(255, 255, 255, 0.8);
}
body > .target-search-dropdown .filter-chip-wrapper,
.target-search-dropdown .filter-chip-wrapper {
display: inline-flex;
align-items: stretch;
border-radius: 0.2rem;
overflow: hidden;
}
body > .target-search-dropdown .filter-chip-wrapper .filter-chip,
body > .target-search-dropdown .filter-chip-wrapper .filter-group-toggle,
.target-search-dropdown .filter-chip-wrapper .filter-chip,
.target-search-dropdown .filter-chip-wrapper .filter-attr-chip,
.target-search-dropdown .filter-chip-wrapper .filter-feat-chip,
.target-search-dropdown .filter-chip-wrapper .filter-group-toggle {
border-radius: 0.2rem 0 0 0.2rem;
}
body > .target-search-dropdown .filter-chip-wrapper .chip-preview-btn,
.target-search-dropdown .filter-chip-wrapper .chip-preview-btn {
padding: 0;
margin: 0;
background: none;
border: none;
cursor: pointer;
font: inherit;
color: inherit;
}
body > .target-search-dropdown .filter-chip-wrapper .chip-preview-btn:focus,
.target-search-dropdown .filter-chip-wrapper .chip-preview-btn:focus {
outline: none;
}
body > .target-search-dropdown .filter-chip-wrapper .chip-preview-btn,
.target-search-dropdown .filter-chip-wrapper .chip-preview-btn {
display: inline-flex;
align-items: center;
justify-content: center;
padding: 0 0.375rem;
font-size: 10px;
color: #6c757d;
background: #f1f5f9;
border-left: 1px solid #dee2e6;
border-radius: 0 0.2rem 0.2rem 0;
cursor: pointer;
transition: all 0.15s ease-in-out;
}
body > .target-search-dropdown .filter-chip-wrapper .chip-preview-btn:hover,
.target-search-dropdown .filter-chip-wrapper .chip-preview-btn:hover {
background: rgba(37, 185, 215, 0.1);
color: #25b9d7;
}
body > .target-search-dropdown .filter-chip-wrapper .chip-preview-btn.popover-open,
.target-search-dropdown .filter-chip-wrapper .chip-preview-btn.popover-open {
background: #25b9d7;
color: #ffffff;
}
body > .target-search-dropdown .filter-chip-wrapper .chip-preview-btn.loading i,
.target-search-dropdown .filter-chip-wrapper .chip-preview-btn.loading i {
animation: spin 0.6s linear infinite;
}
body > .target-search-dropdown .filter-chip-wrapper .filter-chip:last-child,
body > .target-search-dropdown .filter-chip-wrapper .filter-group-toggle:last-child,
.target-search-dropdown .filter-chip-wrapper .filter-chip:last-child,
.target-search-dropdown .filter-chip-wrapper .filter-attr-chip:last-child,
.target-search-dropdown .filter-chip-wrapper .filter-feat-chip:last-child,
.target-search-dropdown .filter-chip-wrapper .filter-group-toggle:last-child {
border-radius: 0.2rem;
}
body > .target-search-dropdown .filter-chip-wrapper .filter-group-toggle.active + .chip-preview-btn,
.target-search-dropdown .filter-chip-wrapper .filter-group-toggle.active + .chip-preview-btn {
border-left-color: #25b9d7;
background: rgba(37, 185, 215, 0.05);
}
body > .target-search-dropdown .filter-chip-wrapper .filter-group-toggle.has-selection + .chip-preview-btn,
.target-search-dropdown .filter-chip-wrapper .filter-group-toggle.has-selection + .chip-preview-btn {
border-left-color: #28a745;
background: rgba(40, 167, 69, 0.03);
}
body > .target-search-dropdown .dropdown-content,
.target-search-dropdown .dropdown-content {
max-height: 400px;
@@ -3982,7 +3991,7 @@ body > .target-search-dropdown.view-cols-2 .dropdown-item .result-grid-info .gri
.target-search-dropdown.view-cols-6 .dropdown-item .result-grid-info .grid-stock.stock-low,
.target-search-dropdown.view-cols-7 .dropdown-item .result-grid-info .grid-stock.stock-low,
.target-search-dropdown.view-cols-8 .dropdown-item .result-grid-info .grid-stock.stock-low {
color: #ffc107;
color: #fab000;
}
body > .target-search-dropdown.view-cols-2 .dropdown-item .result-grid-info .grid-discount, body > .target-search-dropdown.view-cols-3 .dropdown-item .result-grid-info .grid-discount, body > .target-search-dropdown.view-cols-4 .dropdown-item .result-grid-info .grid-discount, body > .target-search-dropdown.view-cols-5 .dropdown-item .result-grid-info .grid-discount, body > .target-search-dropdown.view-cols-6 .dropdown-item .result-grid-info .grid-discount, body > .target-search-dropdown.view-cols-7 .dropdown-item .result-grid-info .grid-discount, body > .target-search-dropdown.view-cols-8 .dropdown-item .result-grid-info .grid-discount,
.target-search-dropdown.view-cols-2 .dropdown-item .result-grid-info .grid-discount,
@@ -3992,7 +4001,7 @@ body > .target-search-dropdown.view-cols-2 .dropdown-item .result-grid-info .gri
.target-search-dropdown.view-cols-6 .dropdown-item .result-grid-info .grid-discount,
.target-search-dropdown.view-cols-7 .dropdown-item .result-grid-info .grid-discount,
.target-search-dropdown.view-cols-8 .dropdown-item .result-grid-info .grid-discount {
color: #28a745;
color: #70b580;
font-weight: 500;
}
body > .target-search-dropdown.view-cols-2 .results-header, body > .target-search-dropdown.view-cols-3 .results-header, body > .target-search-dropdown.view-cols-4 .results-header, body > .target-search-dropdown.view-cols-5 .results-header, body > .target-search-dropdown.view-cols-6 .results-header, body > .target-search-dropdown.view-cols-7 .results-header, body > .target-search-dropdown.view-cols-8 .results-header,
@@ -4157,11 +4166,11 @@ body > .target-search-dropdown .result-col-sale,
}
body > .target-search-dropdown .result-col-stock .col-value.stock-ok,
.target-search-dropdown .result-col-stock .col-value.stock-ok {
color: #28a745;
color: #70b580;
}
body > .target-search-dropdown .result-col-stock .col-value.stock-low,
.target-search-dropdown .result-col-stock .col-value.stock-low {
color: #ffc107;
color: #fab000;
}
body > .target-search-dropdown .result-col-stock .col-value.stock-out,
.target-search-dropdown .result-col-stock .col-value.stock-out {
@@ -4505,10 +4514,10 @@ body > .target-search-dropdown .tree-subtitle,
font-weight: 600;
}
.target-search-dropdown .result-col-stock .col-value.stock-ok {
color: #28a745;
color: #70b580;
}
.target-search-dropdown .result-col-stock .col-value.stock-low {
color: #ffc107;
color: #fab000;
}
.target-search-dropdown .result-col-stock .col-value.stock-out {
color: #dc3545;
@@ -5029,7 +5038,7 @@ body > .target-search-dropdown .dropdown-item:not(:last-child) {
}
.target-conditions-trait .chip-preview-holidays i.material-icons,
.entity-selector-trait .chip-preview-holidays i.material-icons {
font-size: 14px;
font-size: 14px !important;
}
.target-conditions-trait .chip-text,
.target-conditions-trait .chip-name,
@@ -5037,16 +5046,6 @@ body > .target-search-dropdown .dropdown-item:not(:last-child) {
.entity-selector-trait .chip-name {
word-break: break-word;
}
.target-conditions-trait .chip-attrs,
.entity-selector-trait .chip-attrs {
font-size: 0.85em;
opacity: 0.7;
margin-left: 2px;
}
.target-conditions-trait .chip-attrs::before,
.entity-selector-trait .chip-attrs::before {
content: "— ";
}
.target-conditions-trait .chip-remove,
.entity-selector-trait .chip-remove {
padding: 0;
@@ -5099,7 +5098,7 @@ body > .target-search-dropdown .dropdown-item:not(:last-child) {
}
.target-conditions-trait .entity-chip.chip-success:hover,
.entity-selector-trait .entity-chip.chip-success:hover {
background: rgba(40, 167, 69, 0.2);
background: rgba(112, 181, 128, 0.2);
}
.target-conditions-trait .entity-chip.chip-danger,
.entity-selector-trait .entity-chip.chip-danger {
@@ -5113,11 +5112,11 @@ body > .target-search-dropdown .dropdown-item:not(:last-child) {
.target-conditions-trait .entity-chip.chip-warning,
.entity-selector-trait .entity-chip.chip-warning {
background: #fff3cd;
color: #a07800;
color: rgb(148, 104.192, 0);
}
.target-conditions-trait .entity-chip.chip-warning:hover,
.entity-selector-trait .entity-chip.chip-warning:hover {
background: rgba(255, 193, 7, 0.3);
background: rgba(250, 176, 0, 0.3);
}
.target-conditions-trait .entity-chip.loading,
.target-conditions-trait .entity-chip-loading,
@@ -5362,7 +5361,7 @@ body > .target-search-dropdown .dropdown-item:not(:last-child) {
}
.target-conditions-trait .pattern-tag.case-sensitive .case-icon,
.entity-selector-trait .pattern-tag.case-sensitive .case-icon {
color: #28a745;
color: #70b580;
font-weight: 700;
}
.target-conditions-trait .pattern-tag.draft-tag,
@@ -5518,11 +5517,11 @@ body > .target-search-dropdown .dropdown-item:not(:last-child) {
}
.target-conditions-trait .pattern-match-count.count-zero,
.entity-selector-trait .pattern-match-count.count-zero {
color: #ffc107;
color: #fab000;
}
.target-conditions-trait .pattern-match-count.count-found,
.entity-selector-trait .pattern-match-count.count-found {
color: #28a745;
color: #70b580;
}
.target-conditions-trait .pattern-match-count .count-value,
.entity-selector-trait .pattern-match-count .count-value {
@@ -5593,7 +5592,7 @@ body > .target-search-dropdown .dropdown-item:not(:last-child) {
color: #495057;
}
.holiday-preview-popover .popover-close i.material-icons {
font-size: 18px;
font-size: 18px !important;
}
.holiday-preview-popover .popover-body {
max-height: 350px;
@@ -5625,9 +5624,9 @@ body > .target-search-dropdown .dropdown-item:not(:last-child) {
font-size: 0.875rem;
}
.holiday-preview-popover .holiday-preview-loading i.material-icons {
font-size: 20px;
font-size: 20px !important;
}
.holiday-preview-popover .holiday-preview-loading .icon-spin {
.holiday-preview-popover .holiday-preview-loading .es-spin {
animation: spin 1s linear infinite;
}
.holiday-preview-popover .holiday-preview-empty {
@@ -5636,7 +5635,7 @@ body > .target-search-dropdown .dropdown-item:not(:last-child) {
color: #6c757d;
}
.holiday-preview-popover .holiday-preview-empty i.material-icons {
font-size: 48px;
font-size: 48px !important;
opacity: 0.4;
margin-bottom: 0.5rem;
display: block;
@@ -5657,13 +5656,13 @@ body > .target-search-dropdown .dropdown-item:not(:last-child) {
padding: 0.5rem 1rem;
background: #f8fafc;
border-radius: 0.25rem;
border-left: 3px solid #28a745;
border-left: 3px solid #70b580;
}
.holiday-preview-popover .holiday-item.holiday-type-bank, .holiday-preview-popover .holiday-item.holiday-type-bank-holiday {
border-left-color: #17a2b8;
}
.holiday-preview-popover .holiday-item.holiday-type-observance {
border-left-color: #ffc107;
border-left-color: #fab000;
}
.holiday-preview-popover .holiday-item.holiday-type-regional, .holiday-preview-popover .holiday-item.holiday-type-local-holiday {
border-left-color: #8b5cf6;
@@ -5726,7 +5725,7 @@ body > .target-search-dropdown .dropdown-item:not(:last-child) {
background: #f8fafc;
}
.holiday-preview-popover .popover-filter i.material-icons {
font-size: 18px;
font-size: 18px !important;
color: #6c757d;
}
.holiday-preview-popover .popover-filter .holiday-filter-input {
@@ -5951,7 +5950,7 @@ body > .target-search-dropdown .dropdown-item:not(:last-child) {
}
.target-conditions-trait .section-label.label-include i,
.entity-selector-trait .section-label.label-include i {
color: #28a745;
color: #70b580;
}
.target-conditions-trait .section-label.label-exclude,
.entity-selector-trait .section-label.label-exclude {
@@ -6475,11 +6474,12 @@ body > .target-search-dropdown .dropdown-item:not(:last-child) {
display: flex;
align-items: center;
justify-content: center;
width: 20px;
width: 24px;
color: #6c757d;
}
.target-conditions-trait .group-collapse-toggle i,
.entity-selector-trait .group-collapse-toggle i {
font-size: 20px !important;
transition: transform 0.15s ease-in-out;
}
.target-conditions-trait .group-name-wrapper,
@@ -6620,8 +6620,8 @@ body > .target-search-dropdown .dropdown-item:not(:last-child) {
.entity-selector-trait .group-include {
margin-bottom: 1rem;
padding: 0.5rem;
background: rgba(40, 167, 69, 0.03);
border: 1px solid rgba(40, 167, 69, 0.2);
background: rgba(112, 181, 128, 0.03);
border: 1px solid rgba(112, 181, 128, 0.2);
border-radius: 0.25rem;
}
.target-conditions-trait .section-row,
@@ -6689,12 +6689,12 @@ body > .target-search-dropdown .dropdown-item:not(:last-child) {
justify-content: center;
width: 24px;
height: 24px;
color: #ffc107;
color: #fab000;
cursor: help;
}
.target-conditions-trait .lock-indicator i,
.entity-selector-trait .lock-indicator i {
font-size: 14px;
font-size: 16px !important;
}
.target-conditions-trait .lock-indicator .mpr-tooltip,
.entity-selector-trait .lock-indicator .mpr-tooltip {
@@ -6751,7 +6751,7 @@ body > .target-search-dropdown .dropdown-item:not(:last-child) {
}
.target-conditions-trait .except-label i,
.entity-selector-trait .except-label i {
font-size: 10px;
font-size: 12px !important;
}
.target-conditions-trait .exclude-rows-container,
.entity-selector-trait .exclude-rows-container {
@@ -6866,7 +6866,7 @@ body > .target-search-dropdown .dropdown-item:not(:last-child) {
.target-conditions-trait .btn-add-another-exclude i,
.entity-selector-trait .btn-add-exclude i,
.entity-selector-trait .btn-add-another-exclude i {
font-size: 10px;
font-size: 12px !important;
}
.target-conditions-trait .group-modifiers,
.entity-selector-trait .group-modifiers {
@@ -6882,20 +6882,23 @@ body > .target-search-dropdown .dropdown-item:not(:last-child) {
}
.target-conditions-trait .modifier-inline,
.entity-selector-trait .modifier-inline {
display: flex;
display: inline-flex;
align-items: center;
gap: 0.375rem;
flex-shrink: 0;
}
.target-conditions-trait .group-modifier-limit,
.entity-selector-trait .group-modifier-limit {
width: 50px;
max-width: 50px;
min-width: 50px;
height: 26px;
padding: 0 0.375rem;
font-size: 0.75rem;
text-align: center;
border: 1px solid #dee2e6;
border-radius: 0.2rem;
box-sizing: border-box;
}
.target-conditions-trait .group-modifier-limit:focus,
.entity-selector-trait .group-modifier-limit:focus {
@@ -6912,13 +6915,15 @@ body > .target-search-dropdown .dropdown-item:not(:last-child) {
}
.target-conditions-trait .modifier-sort .group-modifier-sort,
.entity-selector-trait .modifier-sort .group-modifier-sort {
width: auto;
height: 26px;
padding: 0 0.5rem;
padding: 0 1.25rem 0 0.5rem;
font-size: 0.75rem;
border: 1px solid #dee2e6;
border-radius: 0.2rem 0 0 0.2rem;
border-right: none;
cursor: pointer;
box-sizing: border-box;
}
.target-conditions-trait .modifier-sort .group-modifier-sort:focus,
.entity-selector-trait .modifier-sort .group-modifier-sort:focus {
@@ -6961,7 +6966,7 @@ body > .target-search-dropdown .dropdown-item:not(:last-child) {
}
.target-conditions-trait .modifier-sort .btn-sort-dir i,
.entity-selector-trait .modifier-sort .btn-sort-dir i {
font-size: 11px;
font-size: 14px !important;
}
.target-conditions-trait .group-modifier-sort,
.entity-selector-trait .group-modifier-sort {
@@ -7135,42 +7140,6 @@ body > .target-search-dropdown .dropdown-item:not(:last-child) {
background-repeat: no-repeat;
background-size: 1.25em 1.25em;
}
.target-conditions-trait[data-mode=single] .groups-container,
.target-conditions-trait .mode-single .groups-container,
.entity-selector-trait[data-mode=single] .groups-container,
.entity-selector-trait .mode-single .groups-container {
padding: 0;
}
.target-conditions-trait[data-mode=single] .group-body,
.target-conditions-trait .mode-single .group-body,
.entity-selector-trait[data-mode=single] .group-body,
.entity-selector-trait .mode-single .group-body {
padding: 0;
}
.target-conditions-trait[data-mode=single] .group-include,
.target-conditions-trait .mode-single .group-include,
.entity-selector-trait[data-mode=single] .group-include,
.entity-selector-trait .mode-single .group-include {
padding: 0.5rem;
margin-bottom: 0;
background: transparent;
border: none;
border-radius: 0;
}
.target-conditions-trait[data-mode=single] .selection-group,
.target-conditions-trait .mode-single .selection-group,
.entity-selector-trait[data-mode=single] .selection-group,
.entity-selector-trait .mode-single .selection-group {
background: transparent;
border: none;
margin-bottom: 0;
}
.target-conditions-trait[data-mode=single] .group-header,
.target-conditions-trait .mode-single .group-header,
.entity-selector-trait[data-mode=single] .group-header,
.entity-selector-trait .mode-single .group-header {
display: none;
}
.target-conditions-trait .condition-match-count,
.entity-selector-trait .condition-match-count {
display: inline-flex;
@@ -7209,7 +7178,7 @@ body > .target-search-dropdown .dropdown-item:not(:last-child) {
}
.target-conditions-trait .condition-match-count i,
.entity-selector-trait .condition-match-count i {
font-size: 10px;
font-size: 12px !important;
}
/**
@@ -8075,7 +8044,7 @@ body > .target-search-dropdown .dropdown-item:not(:last-child) {
margin: 0;
}
#mpr-holiday-preview-modal .mpr-modal-title i.material-icons {
font-size: 20px;
font-size: 20px !important;
color: #25b9d7;
}
#mpr-holiday-preview-modal .mpr-modal-close {
@@ -8145,7 +8114,7 @@ body > .target-search-dropdown .dropdown-item:not(:last-child) {
color: #6c757d;
}
#mpr-holiday-preview-modal .holiday-preview-empty i.material-icons {
font-size: 48px;
font-size: 48px !important;
opacity: 0.5;
margin-bottom: 1rem;
}
@@ -8168,13 +8137,13 @@ body > .target-search-dropdown .dropdown-item:not(:last-child) {
padding: 0.5rem 1rem;
background: #f8fafc;
border-radius: 0.25rem;
border-left: 3px solid #28a745;
border-left: 3px solid #70b580;
}
#mpr-holiday-preview-modal .holiday-item.holiday-type-bank {
border-left-color: #17a2b8;
}
#mpr-holiday-preview-modal .holiday-item.holiday-type-observance {
border-left-color: #ffc107;
border-left-color: #fab000;
}
#mpr-holiday-preview-modal .holiday-item.holiday-type-regional {
border-left-color: #8b5cf6;
@@ -8283,20 +8252,6 @@ body > .target-search-dropdown .dropdown-item:not(:last-child) {
right: 20px;
transform: none;
}
.target-preview-popover.position-above::before,
.target-list-preview-popover.position-above::before {
top: auto;
bottom: -8px;
border-top: 8px solid #dee2e6;
border-bottom: 0;
}
.target-preview-popover.position-above::after,
.target-list-preview-popover.position-above::after {
top: auto;
bottom: -6px;
border-top: 6px solid #ffffff;
border-bottom: 0;
}
.preview-header {
display: flex;
@@ -8734,7 +8689,7 @@ body > .target-search-dropdown .dropdown-item:not(:last-child) {
.mpr-dropdown-preview__item > i:first-child {
flex-shrink: 0;
width: 16px;
font-size: 14px;
font-size: 14px !important;
color: #999;
text-align: center;
}
@@ -8780,15 +8735,11 @@ body > .target-search-dropdown .dropdown-item:not(:last-child) {
cursor: pointer;
text-transform: none;
}
.mpr-badge--preview .icon-eye {
font-size: 10px;
.mpr-badge--preview .material-icons {
font-size: 12px !important;
line-height: 1;
opacity: 0.8;
}
.mpr-badge--preview .material-icons {
font-size: 12px;
line-height: 1;
}
.mpr-badge--preview-primary {
background: #25b9d7;
@@ -9130,7 +9081,7 @@ body > .target-search-dropdown .dropdown-item:not(:last-child) {
gap: 0.5rem;
}
.schedule-summary .summary-item i {
color: #28a745;
color: #70b580;
font-size: 0.875rem;
}
.schedule-summary .summary-item.inactive i {
@@ -9165,7 +9116,7 @@ body > .target-search-dropdown .dropdown-item:not(:last-child) {
}
.schedule-toggle-row .schedule-toggle-actions .material-icons {
color: #94a3b8;
font-size: 20px;
font-size: 20px !important;
}
.schedule-summary-badges {
@@ -9189,7 +9140,7 @@ body > .target-search-dropdown .dropdown-item:not(:last-child) {
white-space: nowrap;
}
.schedule-badge .material-icons {
font-size: 14px;
font-size: 14px !important;
opacity: 0.7;
}
@@ -9233,7 +9184,7 @@ body > .target-search-dropdown .dropdown-item:not(:last-child) {
.target-conditions-trait .tips-header > i:first-child,
.entity-selector-trait .tips-header > i:first-child {
font-size: 1rem;
color: #ffc107;
color: #fab000;
}
.target-conditions-trait .tips-header > span,
.entity-selector-trait .tips-header > span {
@@ -10395,7 +10346,7 @@ body > .target-search-dropdown .dropdown-item:not(:last-child) {
margin-left: 0.25rem;
}
.mpr-info-wrapper .material-icons {
font-size: 16px;
font-size: 16px !important;
color: #6c757d;
transition: color 0.15s ease;
}
@@ -10455,7 +10406,7 @@ body > .target-search-dropdown .dropdown-item:not(:last-child) {
transition: background-color 0.15s ease;
}
.mpr-tooltip-close .material-icons {
font-size: 16px;
font-size: 16px !important;
color: #6c757d;
}
.mpr-tooltip-close:hover {
@@ -10779,7 +10730,7 @@ body > .target-search-dropdown .dropdown-item:not(:last-child) {
flex-shrink: 0;
}
.category-tree .tree-badge.inactive {
color: #ffc107;
color: #fab000;
background: #fff3cd;
}
.category-tree .tree-children {

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long