Coverage for src / lexigram / admin / actions / header_manager / actions.py: 0%
23 statements
« prev ^ index » next coverage.py v7.13.5, created at 2026-08-11 02:25 +0800
« prev ^ index » next coverage.py v7.13.5, created at 2026-08-11 02:25 +0800
1"""
2Header action definitions and configurations.
4Provides predefined actions for common header operations.
5"""
7from __future__ import annotations
9from collections.abc import Callable
11from lexigram.admin.actions.header_manager.types import HeaderAction, HeaderActionStyle
14def create_refresh_action(
15 handler: Callable[[], None] | None = None,
16 label: str = "Refresh",
17 icon: str = "refresh",
18 **kwargs,
19) -> HeaderAction:
20 """Create a refresh action."""
21 return HeaderAction(
22 name="refresh",
23 label=label,
24 handler=handler,
25 icon=icon,
26 style=HeaderActionStyle.SECONDARY,
27 tooltip="Refresh table data",
28 **kwargs,
29 )
32def create_create_action(
33 handler: Callable[[], None] | None = None,
34 label: str = "Create",
35 icon: str = "plus",
36 url: str | None = None,
37 **kwargs,
38) -> HeaderAction:
39 """Create a create action."""
40 return HeaderAction(
41 name="create",
42 label=label,
43 handler=handler,
44 icon=icon,
45 style=HeaderActionStyle.PRIMARY,
46 url=url,
47 tooltip="Create new record",
48 **kwargs,
49 )
52def create_import_action(
53 handler: Callable[[], None] | None = None,
54 label: str = "Import",
55 icon: str = "upload",
56 url: str | None = None,
57 **kwargs,
58) -> HeaderAction:
59 """Create an import action."""
60 return HeaderAction(
61 name="import",
62 label=label,
63 handler=handler,
64 icon=icon,
65 style=HeaderActionStyle.SECONDARY,
66 url=url,
67 tooltip="Import data from file",
68 **kwargs,
69 )
72def create_export_action(
73 handler: Callable[[], None] | None = None,
74 label: str = "Export",
75 icon: str = "download",
76 url: str | None = None,
77) -> HeaderAction:
78 """Create an export action."""
79 return HeaderAction(
80 name="export",
81 label=label,
82 handler=handler,
83 icon=icon,
84 style=HeaderActionStyle.SECONDARY,
85 url=url,
86 tooltip="Export data to file",
87 )
90def create_bulk_delete_action(
91 handler: Callable[[], None] | None = None,
92 label: str = "Delete Selected",
93 icon: str = "trash",
94) -> HeaderAction:
95 """Create a bulk delete action."""
96 return HeaderAction(
97 name="bulk_delete",
98 label=label,
99 handler=handler,
100 icon=icon,
101 style=HeaderActionStyle.DANGER,
102 tooltip="Delete selected records",
103 visible=lambda: False, # Will be shown when items are selected
104 )
107def create_bulk_edit_action(
108 handler: Callable[[], None] | None = None,
109 label: str = "Edit Selected",
110 icon: str = "edit",
111) -> HeaderAction:
112 """Create a bulk edit action."""
113 return HeaderAction(
114 name="bulk_edit",
115 label=label,
116 handler=handler,
117 icon=icon,
118 style=HeaderActionStyle.WARNING,
119 tooltip="Edit selected records",
120 visible=lambda: False, # Will be shown when items are selected
121 )
124def create_settings_action(
125 handler: Callable[[], None] | None = None,
126 label: str = "Settings",
127 icon: str = "settings",
128 url: str | None = None,
129) -> HeaderAction:
130 """Create a settings action."""
131 return HeaderAction(
132 name="settings",
133 label=label,
134 handler=handler,
135 icon=icon,
136 style=HeaderActionStyle.SECONDARY,
137 url=url,
138 tooltip="Table settings",
139 )
142def create_help_action(
143 handler: Callable[[], None] | None = None,
144 label: str = "Help",
145 icon: str = "help",
146 url: str | None = None,
147) -> HeaderAction:
148 """Create a help action."""
149 return HeaderAction(
150 name="help",
151 label=label,
152 handler=handler,
153 icon=icon,
154 style=HeaderActionStyle.INFO,
155 url=url,
156 tooltip="Help and documentation",
157 )
160# Predefined action sets
161BASIC_ACTIONS = [
162 create_refresh_action(),
163 create_create_action(),
164]
166IMPORT_EXPORT_ACTIONS = [
167 create_import_action(),
168 create_export_action(),
169]
171BULK_ACTIONS = [
172 create_bulk_delete_action(),
173 create_bulk_edit_action(),
174]
176UTILITY_ACTIONS = [
177 create_settings_action(),
178 create_help_action(),
179]