Coverage for src/lexigram/admin/actions/header_manager/actions.py: 0%

23 statements  

« prev     ^ index     » next       coverage.py v7.15.4, created at 2026-08-24 23:18 +0800

1""" 

2Header action definitions and configurations. 

3 

4Provides predefined actions for common header operations. 

5""" 

6 

7from __future__ import annotations 

8 

9from collections.abc import Callable 

10 

11from lexigram.admin.actions.header_manager.types import HeaderAction, HeaderActionStyle 

12 

13 

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 ) 

30 

31 

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 ) 

50 

51 

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 ) 

70 

71 

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 ) 

88 

89 

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 ) 

105 

106 

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 ) 

122 

123 

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 ) 

140 

141 

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 ) 

158 

159 

160# Predefined action sets 

161BASIC_ACTIONS = [ 

162 create_refresh_action(), 

163 create_create_action(), 

164] 

165 

166IMPORT_EXPORT_ACTIONS = [ 

167 create_import_action(), 

168 create_export_action(), 

169] 

170 

171BULK_ACTIONS = [ 

172 create_bulk_delete_action(), 

173 create_bulk_edit_action(), 

174] 

175 

176UTILITY_ACTIONS = [ 

177 create_settings_action(), 

178 create_help_action(), 

179]