Make Bulma the default style engine for Bouton/Titre/Conteneur, layered under existing inline customization
Adds a new "class:" control-target kind (save_element_controls.py, _visible_attrs.py) alongside the existing content/attr/style ones, so a widget can carry CSS classes built from independent named slots (color, size, shape...) without them overwriting each other. Bouton and Titre get their Bulma base class (button/title) via fixed_attrs; Conteneur gets an opt-in "Carte (Bulma)" preset instead of a forced default, since it's also used as an invisible layout wrapper. Bouton's font-size/border-radius sliders no longer freeze their default value into inline style at creation (new c_slider no_freeze flag), so Bulma's own button styling shows through until a user actually customizes it — inline style still wins over any class the moment it's set, exactly like today. Loads bulma.min.css via CDN in screen_edit.html and play.html, same pattern as animate.css.
This commit is contained in:
@@ -97,7 +97,15 @@ def save_element_controls(slug, element_id, form):
|
||||
content = raw_value
|
||||
else:
|
||||
kind, name = target.split(":", 1)
|
||||
store = attributes if kind == "attr" else style
|
||||
if kind == "class":
|
||||
# "class:xxx" : un jeton de classe CSS externe (ex. un
|
||||
# modificateur Bulma) parmi d'autres, chacun mémorisé sous sa
|
||||
# propre clé "_class_xxx" pour ne pas s'écraser entre eux —
|
||||
# voir _visible_attrs.py qui les rassemble avec la classe de
|
||||
# base du widget (fixed_attrs) au moment du rendu.
|
||||
store, name = attributes, "_class_" + name
|
||||
else:
|
||||
store = attributes if kind == "attr" else style
|
||||
if raw_value in (None, ""):
|
||||
store.pop(name, None)
|
||||
elif ctype != "checkbox" and name not in store and _is_default_value(control, raw_value):
|
||||
|
||||
Reference in New Issue
Block a user