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:
@@ -9,6 +9,7 @@ from .controls.c_align import c_align
|
||||
from .controls.c_select import c_select
|
||||
from .control_groups.text_style_controls_extra import TEXT_STYLE_CONTROLS_EXTRA
|
||||
from .control_groups.data_binding_controls import DATA_BINDING_CONTROLS
|
||||
from .control_groups.bulma_controls import BULMA_BUTTON_CONTROLS
|
||||
from .font_options import FONT_OPTIONS
|
||||
from ..flow.constants import CONDITION_OPERATORS
|
||||
|
||||
@@ -31,6 +32,10 @@ WIDGETS = {
|
||||
"titre": {
|
||||
"label": "Titre", "icon": "🔠", "tag": None, "has_content": True,
|
||||
"w": 55, "h": 10, "default_content": "Titre",
|
||||
# class:"title" — poids de police et espacement Bulma par défaut ; la
|
||||
# taille reste pilotée par le réglage "Taille du texte" ci-dessous
|
||||
# comme avant (non affecté), Bulma ne fournissant ici que l'habillage.
|
||||
"fixed_attrs": {"class": "title"},
|
||||
"controls": [
|
||||
c_textarea("content", "Texte — {{champ}} affiche la valeur de ce champ sur la ligne trouvée ci-dessous", "content", default="Titre", group="Contenu"),
|
||||
c_select("niveau", "Importance du titre", "attr:_niveau",
|
||||
@@ -46,14 +51,19 @@ WIDGETS = {
|
||||
"bouton": {
|
||||
"label": "Bouton", "icon": "🔘", "tag": "button", "has_content": True,
|
||||
"w": 30, "h": 8, "default_content": "Valider",
|
||||
# class:"button" — donne au Bouton l'apparence Bulma par défaut
|
||||
# (padding, poids de police, transitions...) tant qu'aucune couleur/
|
||||
# taille "libre" n'est personnalisée ci-dessous — voir
|
||||
# BULMA_BUTTON_CONTROLS et _visible_attrs.py.
|
||||
"fixed_attrs": {"class": "button"},
|
||||
"controls": [
|
||||
c_text("content", "Texte du bouton", "content", default="Valider", group="Contenu"),
|
||||
c_color("color", "Couleur du texte", "style:color", "#ffffff", group="Texte"),
|
||||
c_color("background", "Couleur de fond", "style:background-color", "#5b8cff", group="Texte"),
|
||||
c_slider("font-size", "Taille du texte", "style:font-size", min=10, max=40, default=15, group="Texte"),
|
||||
c_slider("border-radius", "Arrondi des coins", "style:border-radius", min=0, max=40, default=8, group="Texte"),
|
||||
c_slider("font-size", "Taille du texte", "style:font-size", min=10, max=40, default=15, group="Texte", no_freeze=True),
|
||||
c_slider("border-radius", "Arrondi des coins", "style:border-radius", min=0, max=40, default=8, group="Texte", no_freeze=True),
|
||||
c_checkbox("submit", "Valide un formulaire", "attr:type", "submit", "button", group="Contenu"),
|
||||
] + TEXT_STYLE_CONTROLS_EXTRA,
|
||||
] + BULMA_BUTTON_CONTROLS + TEXT_STYLE_CONTROLS_EXTRA,
|
||||
},
|
||||
"lien": {
|
||||
"label": "Lien", "icon": "🔗", "tag": "a", "has_content": True,
|
||||
@@ -197,6 +207,13 @@ WIDGETS = {
|
||||
"w": 50, "h": 30, "default_content": "",
|
||||
"controls": [
|
||||
c_text("content", "Texte", "content", group="Contenu"),
|
||||
# "Carte (Bulma)" reste optionnel (pas une classe posée par
|
||||
# défaut) : ce widget sert aussi bien de simple habillage
|
||||
# invisible (empilement, fond de décor plein écran...) que de
|
||||
# vraie carte — lui imposer le fond blanc/l'ombre de Bulma par
|
||||
# défaut casserait ces usages existants. Voir _visible_attrs.py.
|
||||
c_select("bulma_carte", "Style Bulma", "class:carte",
|
||||
[("", "Aucun"), ("box", "Carte (fond clair, ombre, coins arrondis)")], default="", group="Style Bulma"),
|
||||
c_color("background", "Couleur de fond", "style:background-color", "#1f2430", group="Texte"),
|
||||
c_slider("border-radius", "Arrondi des coins", "style:border-radius", min=0, max=60, default=10, group="Texte"),
|
||||
c_slider("opacity", "Opacité", "style:opacity", unit="", min=0, max=1, step=0.05, default=1, group="Texte"),
|
||||
|
||||
Reference in New Issue
Block a user