Skip to content

Commit bf46699

Browse files
feat(list): added option to group list actions
1 parent 4615aeb commit bf46699

File tree

6 files changed

+50
-8
lines changed

6 files changed

+50
-8
lines changed

src/django_smartbase_admin/actions/admin_action_list.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ def get_template_data(self):
154154
"filters": self.get_filters(),
155155
"list_actions": self.list_actions
156156
or self.view._get_sbadmin_list_actions(),
157-
"list_selection_actions": self.view.get_sbadmin_list_selection_actions(),
157+
"list_selection_actions": self.view.get_sbadmin_list_selection_actions_grouped(),
158158
"config_url": self.view.get_config_url(),
159159
"new_url": (
160160
self.view.get_new_url()

src/django_smartbase_admin/engine/actions.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,21 @@ class SBAdminCustomAction(object):
66
open_in_modal = False
77

88
def __init__(
9-
self, title, url, css_class=None, no_params=False, open_in_modal=False
9+
self,
10+
title,
11+
url,
12+
css_class=None,
13+
no_params=False,
14+
open_in_modal=False,
15+
group=None,
1016
) -> None:
1117
super().__init__()
1218
self.title = title
1319
self.url = url
1420
self.css_class = css_class
1521
self.no_params = no_params
1622
self.open_in_modal = open_in_modal
23+
self.group = group
1724

1825

1926
class SBAdminAction(object):

src/django_smartbase_admin/engine/admin_base_view.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -395,6 +395,14 @@ def get_sbadmin_list_selection_actions(self):
395395
]
396396
return self.sbadmin_list_selection_actions
397397

398+
def get_sbadmin_list_selection_actions_grouped(self):
399+
result = {}
400+
for action in self.get_sbadmin_list_selection_actions():
401+
if not result.get(action.group):
402+
result.update({action.group: []})
403+
result[action.group].append(action)
404+
return result
405+
398406
def get_sbadmin_xlsx_options(self):
399407
self.sbadmin_xlsx_options = self.sbadmin_xlsx_options or SBAdminXLSXOptions(
400408
header_cell_format=SBAdminXLSXFormat(

src/django_smartbase_admin/static/sb_admin/src/css/_components.css

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -339,7 +339,7 @@
339339

340340
.table-selected-rows-bar {
341341
@apply flex items-center h-48 pr-16 py-8;
342-
@apply bg-light;
342+
@apply bg-light custom-scrollbar;
343343
@apply absolute top-full right-0 left-0;
344344
margin-top: 1px;
345345
overflow-x: auto;

src/django_smartbase_admin/templates/sb_admin/actions/list.html

Lines changed: 31 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -114,10 +114,37 @@ <h1 class="text-24 md:text-30 text-dark-900 font-bold font-heading line-clamp-1
114114
onclick="window.SBAdminTable['{{ view_id }}'].moduleInstances.selectionModule.selectNoData()"
115115
class="btn btn-empty btn-small">{% trans 'Select none' %}
116116
</button>
117-
{% for list_selection_action in content_context.list_selection_actions %}
118-
<button {% if list_selection_action.open_in_modal %}{% include 'sb_admin/actions/partials/open_modal_attrs.html' with action=list_selection_action %} hx-vals="js:{params: window.SBAdminTable['{{ view_id }}'].getAllUrlParams()}" {% else %}onclick="window.location.href='{{ list_selection_action.url }}' + window.SBAdminTable['{{ view_id }}'].getUrlParamsString()"{% endif %}
119-
class="btn btn-small {{ list_selection_action.css_class|default_if_none:'' }}">{{ list_selection_action.title }}
120-
</button>
117+
{% for key, list_selection_action_group in content_context.list_selection_actions.items %}
118+
{% if key %}
119+
<button
120+
data-bs-toggle="dropdown"
121+
aria-expanded="false"
122+
data-bs-popper-placement="bottom"
123+
class="btn btn-small">
124+
<span>{{ key }}</span>
125+
<svg class="w-16 h-16 ml-4">
126+
<use xlink:href="#Down"></use>
127+
</svg>
128+
</button>
129+
<div class="dropdown-menu w-248 max-h-432">
130+
<ul>
131+
{% for list_selection_action in list_selection_action_group %}
132+
<li>
133+
{{ list_selection_action.items }}
134+
<a {% if list_selection_action.open_in_modal %}{% include 'sb_admin/actions/partials/open_modal_attrs.html' with action=list_selection_action %} hx-vals="js:{params: window.SBAdminTable['{{ view_id }}'].getAllUrlParams()}" {% else %}onclick="window.location.href='{{ list_selection_action.url }}' + window.SBAdminTable['{{ view_id }}'].getUrlParamsString()"{% endif %}
135+
class="dropdown-menu-link {{ list_selection_action.css_class|default_if_none:'' }}">{{ list_selection_action.title }}</a>
136+
</li>
137+
{% endfor %}
138+
</ul>
139+
</div>
140+
{% else %}
141+
{# no group #}
142+
{% for list_selection_action in list_selection_action_group %}
143+
<button {% if list_selection_action.open_in_modal %}{% include 'sb_admin/actions/partials/open_modal_attrs.html' with action=list_selection_action %} hx-vals="js:{params: window.SBAdminTable['{{ view_id }}'].getAllUrlParams()}" {% else %}onclick="window.location.href='{{ list_selection_action.url }}' + window.SBAdminTable['{{ view_id }}'].getUrlParamsString()"{% endif %}
144+
class="btn btn-small {{ list_selection_action.css_class|default_if_none:'' }}">{{ list_selection_action.title }}
145+
</button>
146+
{% endfor %}
147+
{% endif %}
121148
{% endfor %}
122149
</div>
123150
</div>

src/django_smartbase_admin/templates/sb_admin/includes/inline_fieldset.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
{% if field.field.label %}
2828
<label class="inline-flex text-dark-900 text-14 leading-18 font-medium mr-8">{{ field.field.label }}:</label>
2929
{% endif %}
30-
<div class="text-14 w-full">{{ field.contents }}</div>
30+
<div class="text-14 w-full break-all">{{ field.contents }}</div>
3131
</div>
3232
{% else %}
3333
{{ field.field }}

0 commit comments

Comments
 (0)