fix(shopfloor): register tokens SCSS in bundle, drop forbidden @import
Odoo 19 forbids local SCSS @import statements for security reasons and
silently falls back to the OLD cached CSS bundle when it sees them. My
redesign commit used:
@import "./fp_shopfloor_tokens";
in three SCSS files. Odoo logged
WARNING Local import './fp_shopfloor_tokens' is forbidden for
security reasons. Please remove all @import {your_file} imports
in your custom files.
...and the compiled bundle kept rendering the old look. That's what
the user saw.
Fix:
1. Add _fp_shopfloor_tokens.scss as the FIRST entry in
web.assets_backend in the manifest. Odoo concatenates the bundle
in order, so variables/mixins in the first file are visible to
every later file — native @import is not needed.
2. Strip the @import "./fp_shopfloor_tokens"; line from all three
consumer files (tablet, manager, plant overview).
Verified: asset bundle regenerated to /web/assets/.../web.assets_backend.min.css
(1.45 MB). Grepped the compiled CSS and all five new classes are present:
o_fp_tablet_header, o_fp_kpi_strip, o_fp_mgr_card, o_fp_live_dot,
o_fp_panel_unassigned. 8 radial-gradients baked in. Zero warnings in
the Odoo server log post-rebuild.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -57,6 +57,10 @@ Copyright (c) 2026 Nexa Systems Inc. All rights reserved.
|
|||||||
],
|
],
|
||||||
'assets': {
|
'assets': {
|
||||||
'web.assets_backend': [
|
'web.assets_backend': [
|
||||||
|
# Tokens MUST load first — other SCSS files reference its mixins
|
||||||
|
# and variables directly (Odoo 19 forbids @import in custom SCSS,
|
||||||
|
# so tokens are resolved via bundle concatenation order).
|
||||||
|
'fusion_plating_shopfloor/static/src/scss/_fp_shopfloor_tokens.scss',
|
||||||
'fusion_plating_shopfloor/static/src/scss/fusion_plating_shopfloor.scss',
|
'fusion_plating_shopfloor/static/src/scss/fusion_plating_shopfloor.scss',
|
||||||
'fusion_plating_shopfloor/static/src/scss/plant_overview.scss',
|
'fusion_plating_shopfloor/static/src/scss/plant_overview.scss',
|
||||||
'fusion_plating_shopfloor/static/src/scss/process_tree.scss',
|
'fusion_plating_shopfloor/static/src/scss/process_tree.scss',
|
||||||
|
|||||||
@@ -6,10 +6,12 @@
|
|||||||
// Modernised 2026-04 design: hero banner, gradient KPI cards, tap-first
|
// Modernised 2026-04 design: hero banner, gradient KPI cards, tap-first
|
||||||
// action rows. Works in Odoo's light + dark themes because every colour
|
// action rows. Works in Odoo's light + dark themes because every colour
|
||||||
// resolves from CSS custom properties or color-mix'd tokens.
|
// resolves from CSS custom properties or color-mix'd tokens.
|
||||||
|
//
|
||||||
|
// Variables / mixins come from _fp_shopfloor_tokens.scss — loaded FIRST
|
||||||
|
// in the asset bundle (see __manifest__.py). No @import; Odoo 19 forbids
|
||||||
|
// local @import statements in custom SCSS.
|
||||||
// =============================================================================
|
// =============================================================================
|
||||||
|
|
||||||
@import "./fp_shopfloor_tokens";
|
|
||||||
|
|
||||||
|
|
||||||
// =============================================================================
|
// =============================================================================
|
||||||
// Global touch / hover suppression (kept from previous rev)
|
// Global touch / hover suppression (kept from previous rev)
|
||||||
|
|||||||
@@ -6,10 +6,11 @@
|
|||||||
// Shares design tokens + panel / KPI / chip classes from the Tablet Station
|
// Shares design tokens + panel / KPI / chip classes from the Tablet Station
|
||||||
// SCSS. Only the manager-specific components live here: hero banner with
|
// SCSS. Only the manager-specific components live here: hero banner with
|
||||||
// live dot, 3-column workload grid, richer MO cards, gradient avatars.
|
// live dot, 3-column workload grid, richer MO cards, gradient avatars.
|
||||||
|
//
|
||||||
|
// Variables / mixins come from _fp_shopfloor_tokens.scss — loaded FIRST in
|
||||||
|
// the asset bundle (see __manifest__.py). No @import; Odoo 19 forbids it.
|
||||||
// =============================================================================
|
// =============================================================================
|
||||||
|
|
||||||
@import "./fp_shopfloor_tokens";
|
|
||||||
|
|
||||||
|
|
||||||
// Touch-device hover suppression
|
// Touch-device hover suppression
|
||||||
@media (hover: none) {
|
@media (hover: none) {
|
||||||
|
|||||||
@@ -4,11 +4,11 @@
|
|||||||
// License OPL-1 (Odoo Proprietary License v1.0)
|
// License OPL-1 (Odoo Proprietary License v1.0)
|
||||||
//
|
//
|
||||||
// Modernised 2026-04: gradient column headers, card depth, theme-safe
|
// Modernised 2026-04: gradient column headers, card depth, theme-safe
|
||||||
// using shared design tokens.
|
// using shared design tokens. Variables / mixins come from
|
||||||
|
// _fp_shopfloor_tokens.scss — loaded FIRST in the asset bundle
|
||||||
|
// (see __manifest__.py). No @import; Odoo 19 forbids it.
|
||||||
// =============================================================================
|
// =============================================================================
|
||||||
|
|
||||||
@import "./fp_shopfloor_tokens";
|
|
||||||
|
|
||||||
|
|
||||||
.o_fp_plant_overview {
|
.o_fp_plant_overview {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|||||||
Reference in New Issue
Block a user