Refactored DataGridsManager.py for better reading
This commit is contained in:
@@ -12,6 +12,7 @@ from typing import Optional
|
||||
from fasthtml.components import Div, Input, Span
|
||||
|
||||
from myfasthtml.controls.BaseCommands import BaseCommands
|
||||
from myfasthtml.controls.IconsHelper import IconsHelper
|
||||
from myfasthtml.controls.Keyboard import Keyboard
|
||||
from myfasthtml.controls.helpers import mk
|
||||
from myfasthtml.core.commands import Command, CommandTemplate
|
||||
@@ -190,6 +191,8 @@ class TreeView(MultipleInstance):
|
||||
|
||||
if self.conf.icons:
|
||||
self._state.icon_config = self.conf.icons
|
||||
else:
|
||||
self._state.icon_config = {"folder": "TreeViewFolder"}
|
||||
|
||||
def set_icon_config(self, config: dict[str, str]):
|
||||
"""
|
||||
@@ -344,7 +347,7 @@ class TreeView(MultipleInstance):
|
||||
"""Start renaming a node (sets editing state and selection)."""
|
||||
if node_id not in self._state.items:
|
||||
raise ValueError(f"Node {node_id} does not exist")
|
||||
|
||||
|
||||
self._state.selected = node_id
|
||||
self._state.editing = node_id
|
||||
return self
|
||||
@@ -395,7 +398,7 @@ class TreeView(MultipleInstance):
|
||||
"""Select a node."""
|
||||
if node_id not in self._state.items:
|
||||
raise ValueError(f"Node {node_id} does not exist")
|
||||
|
||||
|
||||
# Cancel edit mode when selecting
|
||||
self._state.editing = None
|
||||
self._state.selected = node_id
|
||||
@@ -446,6 +449,7 @@ class TreeView(MultipleInstance):
|
||||
toggle = None
|
||||
|
||||
# Label or input for editing
|
||||
icon = IconsHelper.get(self._state.icon_config.get(node.type, None))
|
||||
if is_editing:
|
||||
label_element = mk.mk(Input(
|
||||
name="node_label",
|
||||
@@ -453,18 +457,24 @@ class TreeView(MultipleInstance):
|
||||
cls="mf-treenode-input input input-sm"
|
||||
), command=CommandTemplate("TreeView.SaveRename", self.commands.save_rename, args=[node_id]))
|
||||
else:
|
||||
label_element = mk.mk(
|
||||
label_element = mk.label(
|
||||
Span(node.label, cls="mf-treenode-label text-sm"),
|
||||
icon=icon,
|
||||
enable_button=False,
|
||||
command=self.commands.select_node(node_id)
|
||||
)
|
||||
|
||||
offset = 20
|
||||
if icon is not None:
|
||||
offset += 25
|
||||
|
||||
# Node element
|
||||
node_element = Div(
|
||||
toggle,
|
||||
label_element,
|
||||
*([self._render_action_buttons(node_id)] if not is_editing else []),
|
||||
cls=f"mf-treenode flex {'selected' if is_selected and not is_editing else ''}",
|
||||
style=f"padding-left: {level * 20}px"
|
||||
style=f"padding-left: {level * offset}px"
|
||||
)
|
||||
|
||||
# Children (if expanded)
|
||||
|
||||
Reference in New Issue
Block a user