django-smartbase-admin 1.0.28__py3-none-any.whl → 1.0.30__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- (()=>{const e=function(e,t,n){let a=e.val();void 0!==a&&n.selectAll(!1);let o=[a];if(!0===t.filter){let e=[];o=[];try{e=JSON.parse(a)}catch(t){e=[]}finally{e.forEach((function(e){o.push(e.value)}))}}else if(2===t.multiselect)try{o=JSON.parse(a)}catch(e){o=[]}o.forEach((function(e){let t=n.getNodeByKey(e);t&&(t.getParentList().forEach((function(e){e.setExpanded(!0)})),t.setSelected(!0))}))};$((function(){const t=function(t){if(t.hasClass("fancytree-container"))return;t.on("change",(e=>{const t=e.target.dataset.changeTarget;if(t){const n=document.querySelector(t);n&&(n.value=e.target.value)}}));let a={};const o=e=>{if(!a.isFiltered)return void e.filterNodes((e=>(e.setExpanded(!1),!0)),{autoExpand:!1});const t={};a.data.forEach((e=>t[e.path]=e)),e.filterNodes((e=>{if(t[e.key])return!0}),{autoExpand:!0})},r=$("#"+t.data("tree-data-id")),d=$("#"+t.data("tree-additional-columns-id")),i=$("#"+t.data("tree-strings-id"));let s={},l=[],c={loading:"Loading...",loadError:"Load error!",moreData:"More...",noData:"No data."};try{s=JSON.parse(r.text())||{},l=JSON.parse(d.text())||[],c=JSON.parse(i.text())}catch(e){console.error(e)}const u=$("#"+s.input_id),f=$("#"+s.input_id+"_search"),p=$("#"+s.input_id+"_matches"),h=$("#"+s.input_id+"_label"),m={indentation:32,nodeColumnIdx:0},y=window.loadJSONScriptData("fancytree_filter_settings");s.checkbox&&(m.checkboxColumnIdx=0,m.nodeColumnIdx=1);let v=["table","gridnav","filter"];s.reorder_url&&v.push("dnd5"),t.fancytree({source:{url:s.data_url},extensions:v,checkbox:s.checkbox,selectMode:s.multiselect,dnd5:{preventVoidMoves:!0,preventRecursion:!0,autoExpandMS:400,dropMarkerParent:".tree-list-view",dropMarkerOffsetX:-8,dropMarkerInsertOffsetX:0,dragStart:function(){return!0},dragEnter:function(){return!0},dragDrop:function(e,t){t.otherNode.moveTo(e,t.hitMode)}},filter:{autoApply:!0,autoExpand:!0,counter:!1,fuzzy:!1,hideExpandedCounter:!0,hideExpanders:!0,highlight:!0,leavesOnly:!1,nodata:!0,mode:"hide",...y},table:m,gridnav:{autofocusInput:!1,handleCursorKeys:!0},strings:c,postProcess:function(t,n){setTimeout((function(){e(u,s,n.tree)}),1)},select:function(e,t){if(u.length>0){let e=null;if(s.filter)e=t.tree.getSelectedNodes().map((function(e){return{value:e.key,label:e.title}})),u.val(JSON.stringify(e));else{e=t.tree.getSelectedNodes().map((function(e){return e.key})).join(", "),2===s.multiselect&&(e=JSON.stringify(t.tree.getSelectedNodes().map((function(e){return e.key}))));let n=t.tree.getSelectedNodes().map((function(e){return e.title})).join(", ");h.text(n),u.val(e)}return u[0].dispatchEvent(new CustomEvent("SBAutocompleteChange")),void u[0].dispatchEvent(new Event("change",{bubbles:!0}))}if(s.filter_by_table_data&&t.originalEvent){const e=t.tree.getSelectedNodes().map((function(e){return e.data.id}));document.body.dispatchEvent(new CustomEvent("treeRowSelected",{detail:{data:e}}))}},enhanceTitle:function(e,t){const n=s.reorder_url,a=t.node.rendered,o=t.node.tree.enableFilter,r=s.detail_url,d=t.node.span&&t.node.span.classList.contains("fancytree-node")&&!t.node.tr.classList.contains("fancytree-hide");if(r&&(!a||o)&&!n&&d){const e=t.node.span.querySelector(".fancytree-title"),n=document.createElement("a"),a=s.detail_url.replace(-1,t.node.data.id);n.innerHTML=e.innerHTML,n.classList.add("link"),n.href=a,e.innerHTML="",e.append(n),e.addEventListener("mousedown",(function(e){e.preventDefault(),e.stopPropagation()}),!0)}},renderNode:function(e,t){const n=s.reorder_url,a=t.node.rendered,o=t.node.span&&t.node.span.classList.contains("fancytree-node")&&!t.node.tr.classList.contains("fancytree-hide");if(a&&!n)return;let r=t.node&&t.node.tr&&t.node.tr.classList.contains("fancytree-lastsib");if(r=void 0!==r&&r,t.node.parent?(t.node.treeLevel=t.node.parent.treeLevel+1,t.node.treeAdditionalLevel=[{level:t.node.treeLevel,lastSib:r},...t.node.parent.treeAdditionalLevel]):(t.node.treeLevel=0,t.node.treeAdditionalLevel=[]),t.node.rendered=!0,o){const e=t.node.span.querySelector(".fancytree-expander"),n=t.node.treeLevel,a=t.node.treeAdditionalLevel;e.innerHTML="",e.className="fancytree-expander",e.classList.add("level-"+n),t.node.parent.expanded&&e.classList.add("expanded-parent"),a.forEach(((t,n)=>{if(0!==n&&t.lastSib)return;const a=document.createElement("span");a.classList.add("expander-additional"),0===n&&a.classList.add("expander-additional-last"),a.style.left=-(50+100*n)+"%",e.append(a)}));const o=document.createElement("span");o.classList.add("expander-border"),e.append(o),e.append(document.createElement("div"))}},renderColumns:function(e,t){const n=$(t.node.tr).find(">td");l.forEach((function(e,a){let o=t.node.data[e.key];e.hide_zero&&0===o&&(o=""),n.eq(1+m.nodeColumnIdx+a).html(o)}))},init:function(e,a){s.filter_by_table_data&&o(a.tree),s.allow_select_all&&n(t,a.tree)}});const g=function(){f.val(""),p.text(""),E.visit((function(e){e.rendered=!1})),E.clearFilter()},E=$.ui.fancytree.getTree("#"+s.input_id+"_tree");u.on("SBTableFilterFormLoad",(()=>{e(u,s,E)})),u.on("clear",(()=>{E.getSelectedNodes().map((e=>{e.setSelected(!1)}))})),f.on("keyup",(function(e){let t=$(this).val(),n=E.filterNodes(t);e&&e.which===$.ui.keyCode.ESCAPE||""===$.trim(t)?g():p.text("("+n+" matches)")})).trigger("focus"),f.on("search",(function(e){e.target.value||g()})),E.saveTreeOrder=function(){const e=JSON.stringify(E.toDict());fetch(s.reorder_url,{method:"POST",headers:{"X-CSRFToken":window.csrf_token},body:e}).then((e=>e.json())).then((e=>{document.getElementById("notification-messages").innerHTML=e.messages,window.htmx.process(document.getElementById("notification-messages"))}))},s.filter_by_table_data&&(document.body.addEventListener("tableDataProcessed",(e=>{a=e.detail,"loading"!==E.getRootNode().getChildren()[0].statusNodeType&&o(E)})),document.body.addEventListener("treeDeselectAllRows",(()=>{E.selectAll(!1)})),document.body.addEventListener("treeSelectAllRows",(()=>{E.selectAll(!0)})))},n=function(e,t){e.find(".select-all-checkbox-wrapper").append('\n <span role="checkbox" aria-label="Select All" class="fancytree-checkbox" id="fancytree-row-select-all"></span>\n '),$("#fancytree-row-select-all").on("click",(function(){const e="fancytree-selected",n=$(this).parent().hasClass(e);t.getRootNode().findAll((e=>e.match)).forEach((e=>e.setSelected(!n))),n?$(this).parent().removeClass(e):$(this).parent().addClass(e)}))},a=function(){$(".js-tree-widget").each((function(e,n){const a=$(n);if(a.hasClass("fancytree-container"))return;const o=a.closest(".dropdown-menu");if(o.length>0){const e=function(){t(a),o.prev().off("show.bs.dropdown",e)};o.prev().on("show.bs.dropdown",e)}else t(a)}))};a(),document.addEventListener("formset:added",(()=>{a()}));$(".query-builder-advanced").on("afterCreateRuleInput.queryBuilder",(function(){setTimeout((()=>{a()}),0)}))}))})();
1
+ (()=>{const e=function(e,t,n){let o=e.val();void 0!==o&&n.selectAll(!1);let a=[o];if(!0===t.filter){let e=[];a=[];try{e=JSON.parse(o)}catch(t){e=[]}finally{e.forEach((function(e){a.push(e.value)}))}}else if(2===t.multiselect)try{a=JSON.parse(o)}catch(e){a=[]}a.forEach((function(e){let t=n.getNodeByKey(e);t&&(t.getParentList().forEach((function(e){e.setExpanded(!0)})),t.setSelected(!0))}))};$((function(){const t=function(t){if(t.hasClass("fancytree-container"))return;t.on("change",(e=>{const t=e.target.dataset.changeTarget;if(t){const n=e.target.closest(".djn-inline-form");if(n){const o=n.querySelector(t);o&&(o.value=e.target.value)}}}));let o={};const a=e=>{if(!o.isFiltered)return void e.filterNodes((e=>(e.setExpanded(!1),!0)),{autoExpand:!1});const t={};o.data.forEach((e=>t[e.path]=e)),e.filterNodes((e=>{if(t[e.key])return!0}),{autoExpand:!0})},r=$("#"+t.data("tree-data-id")),d=$("#"+t.data("tree-additional-columns-id")),i=$("#"+t.data("tree-strings-id"));let s={},l=[],c={loading:"Loading...",loadError:"Load error!",moreData:"More...",noData:"No data."};try{s=JSON.parse(r.text())||{},l=JSON.parse(d.text())||[],c=JSON.parse(i.text())}catch(e){console.error(e)}const u=$("#"+s.input_id),f=$("#"+s.input_id+"_search"),p=$("#"+s.input_id+"_matches"),h=$("#"+s.input_id+"_label"),m={indentation:32,nodeColumnIdx:0},y=window.loadJSONScriptData("fancytree_filter_settings");s.checkbox&&(m.checkboxColumnIdx=0,m.nodeColumnIdx=1);let v=["table","gridnav","filter"];s.reorder_url&&v.push("dnd5"),t.fancytree({source:{url:s.data_url},extensions:v,checkbox:s.checkbox,selectMode:s.multiselect,dnd5:{preventVoidMoves:!0,preventRecursion:!0,autoExpandMS:400,dropMarkerParent:".tree-list-view",dropMarkerOffsetX:-8,dropMarkerInsertOffsetX:0,dragStart:function(){return!0},dragEnter:function(){return!0},dragDrop:function(e,t){t.otherNode.moveTo(e,t.hitMode)}},filter:{autoApply:!0,autoExpand:!0,counter:!1,fuzzy:!1,hideExpandedCounter:!0,hideExpanders:!0,highlight:!0,leavesOnly:!1,nodata:!0,mode:"hide",...y},table:m,gridnav:{autofocusInput:!1,handleCursorKeys:!0},strings:c,postProcess:function(t,n){setTimeout((function(){e(u,s,n.tree)}),1)},select:function(e,t){if(u.length>0){let e=null;if(s.filter)e=t.tree.getSelectedNodes().map((function(e){return{value:e.key,label:e.title}})),u.val(JSON.stringify(e));else{e=t.tree.getSelectedNodes().map((function(e){return e.key})).join(", "),2===s.multiselect&&(e=JSON.stringify(t.tree.getSelectedNodes().map((function(e){return e.key}))));let n=t.tree.getSelectedNodes().map((function(e){return e.title})).join(", ");h.text(n),u.val(e)}return u[0].dispatchEvent(new CustomEvent("SBAutocompleteChange")),void u[0].dispatchEvent(new Event("change",{bubbles:!0}))}if(s.filter_by_table_data&&t.originalEvent){const e=t.tree.getSelectedNodes().map((function(e){return e.data.id}));document.body.dispatchEvent(new CustomEvent("treeRowSelected",{detail:{data:e}}))}},enhanceTitle:function(e,t){const n=s.reorder_url,o=t.node.rendered,a=t.node.tree.enableFilter,r=s.detail_url,d=t.node.span&&t.node.span.classList.contains("fancytree-node")&&!t.node.tr.classList.contains("fancytree-hide");if(r&&(!o||a)&&!n&&d){const e=t.node.span.querySelector(".fancytree-title"),n=document.createElement("a"),o=s.detail_url.replace(-1,t.node.data.id);n.innerHTML=e.innerHTML,n.classList.add("link"),n.href=o,e.innerHTML="",e.append(n),e.addEventListener("mousedown",(function(e){e.preventDefault(),e.stopPropagation()}),!0)}},renderNode:function(e,t){const n=s.reorder_url,o=t.node.rendered,a=t.node.span&&t.node.span.classList.contains("fancytree-node")&&!t.node.tr.classList.contains("fancytree-hide");if(o&&!n)return;let r=t.node&&t.node.tr&&t.node.tr.classList.contains("fancytree-lastsib");if(r=void 0!==r&&r,t.node.parent?(t.node.treeLevel=t.node.parent.treeLevel+1,t.node.treeAdditionalLevel=[{level:t.node.treeLevel,lastSib:r},...t.node.parent.treeAdditionalLevel]):(t.node.treeLevel=0,t.node.treeAdditionalLevel=[]),t.node.rendered=!0,a){const e=t.node.span.querySelector(".fancytree-expander"),n=t.node.treeLevel,o=t.node.treeAdditionalLevel;e.innerHTML="",e.className="fancytree-expander",e.classList.add("level-"+n),t.node.parent.expanded&&e.classList.add("expanded-parent"),o.forEach(((t,n)=>{if(0!==n&&t.lastSib)return;const o=document.createElement("span");o.classList.add("expander-additional"),0===n&&o.classList.add("expander-additional-last"),o.style.left=-(50+100*n)+"%",e.append(o)}));const a=document.createElement("span");a.classList.add("expander-border"),e.append(a),e.append(document.createElement("div"))}},renderColumns:function(e,t){const n=$(t.node.tr).find(">td");l.forEach((function(e,o){let a=t.node.data[e.key];e.hide_zero&&0===a&&(a=""),n.eq(1+m.nodeColumnIdx+o).html(a)}))},init:function(e,o){s.filter_by_table_data&&a(o.tree),s.allow_select_all&&n(t,o.tree)}});const g=function(){f.val(""),p.text(""),E.visit((function(e){e.rendered=!1})),E.clearFilter()},E=$.ui.fancytree.getTree("#"+s.input_id+"_tree");u.on("SBTableFilterFormLoad",(()=>{e(u,s,E)})),u.on("clear",(()=>{E.getSelectedNodes().map((e=>{e.setSelected(!1)}))})),f.on("keyup",(function(e){let t=$(this).val(),n=E.filterNodes(t);e&&e.which===$.ui.keyCode.ESCAPE||""===$.trim(t)?g():p.text("("+n+" matches)")})).trigger("focus"),f.on("search",(function(e){e.target.value||g()})),E.saveTreeOrder=function(){const e=JSON.stringify(E.toDict());fetch(s.reorder_url,{method:"POST",headers:{"X-CSRFToken":window.csrf_token},body:e}).then((e=>e.json())).then((e=>{document.getElementById("notification-messages").innerHTML=e.messages,window.htmx.process(document.getElementById("notification-messages"))}))},s.filter_by_table_data&&(document.body.addEventListener("tableDataProcessed",(e=>{o=e.detail,"loading"!==E.getRootNode().getChildren()[0].statusNodeType&&a(E)})),document.body.addEventListener("treeDeselectAllRows",(()=>{E.selectAll(!1)})),document.body.addEventListener("treeSelectAllRows",(()=>{E.selectAll(!0)})))},n=function(e,t){e.find(".select-all-checkbox-wrapper").append('\n <span role="checkbox" aria-label="Select All" class="fancytree-checkbox" id="fancytree-row-select-all"></span>\n '),$("#fancytree-row-select-all").on("click",(function(){const e="fancytree-selected",n=$(this).parent().hasClass(e);t.getRootNode().findAll((e=>e.match)).forEach((e=>e.setSelected(!n))),n?$(this).parent().removeClass(e):$(this).parent().addClass(e)}))},o=function(){$(".js-tree-widget").each((function(e,n){const o=$(n);if(o.hasClass("fancytree-container")||n.closest(".djn-empty-form"))return;const a=o.closest(".dropdown-menu");if(a.length>0){const e=function(){t(o),a.prev().off("show.bs.dropdown",e)};a.prev().on("show.bs.dropdown",e)}else t(o)}))};o(),document.addEventListener("formset:added",(()=>{o()}));$(".query-builder-advanced").on("afterCreateRuleInput.queryBuilder",(function(){setTimeout((()=>{o()}),0)}))}))})();
@@ -126,7 +126,7 @@ class Main {
126
126
  picker.addEventListener('change', (e)=>{
127
127
  if(e.target.value) {
128
128
  document.documentElement.setAttribute('data-theme', e.target.value)
129
- this.switchBodyColorSchemeClass()
129
+ this.switchBodyColorSchemeClass(true)
130
130
  this.switchCKEditorTheme()
131
131
  return
132
132
  }
@@ -136,12 +136,18 @@ class Main {
136
136
  this.switchCKEditorTheme()
137
137
  }
138
138
 
139
- switchBodyColorSchemeClass() {
139
+ switchBodyColorSchemeClass(fireEvents = false) {
140
140
  if(this.isDarkMode()) {
141
141
  document.body.classList.add('dark')
142
+ if(fireEvents) {
143
+ document.body.dispatchEvent(new CustomEvent('color-scheme-change', {detail: 'dark'}))
144
+ }
142
145
  return
143
146
  }
144
147
  document.body.classList.remove('dark')
148
+ if(fireEvents) {
149
+ document.body.dispatchEvent(new CustomEvent('color-scheme-change', {detail: 'light'}))
150
+ }
145
151
  }
146
152
 
147
153
  initInlines(target) {
@@ -48,9 +48,12 @@ const loadValue = function ($inputEl, treeWidgetData, treeInstance) {
48
48
  $treeEl.on('change', (e) => {
49
49
  const changeTarget = e.target.dataset['changeTarget']
50
50
  if(changeTarget) {
51
- const changeTargetEl = document.querySelector(changeTarget)
52
- if(changeTargetEl) {
53
- changeTargetEl.value = e.target.value
51
+ const inlineWrapper = e.target.closest('.djn-inline-form')
52
+ if (inlineWrapper) {
53
+ const changeTargetEl = inlineWrapper.querySelector(changeTarget)
54
+ if(changeTargetEl) {
55
+ changeTargetEl.value = e.target.value
56
+ }
54
57
  }
55
58
  }
56
59
  })
@@ -371,7 +374,7 @@ const loadValue = function ($inputEl, treeWidgetData, treeInstance) {
371
374
  const initAllTrees = function () {
372
375
  $('.js-tree-widget').each(function (index, element) {
373
376
  const $treeEl = $(element)
374
- if ($treeEl.hasClass('fancytree-container')) {
377
+ if ($treeEl.hasClass('fancytree-container') || element.closest('.djn-empty-form')) {
375
378
  return
376
379
  }
377
380
  const $dropdownMenu = $treeEl.closest('.dropdown-menu')
@@ -2,9 +2,12 @@
2
2
  {% load i18n static %}
3
3
 
4
4
  {% block main_wrapper %}
5
+ {% include "sb_admin/includes/notifications.html" with classes="top-16 xl:!left-0" %}
5
6
  <div class="flex items-center max-h-screen">
6
- <img loading="lazy" src="{% static "sb_admin/images/logo.svg" %}" alt="Logo" class="max-h-40 absolute md:left-40 md:top-40 left-24 top-24 dark:hidden">
7
- <img loading="lazy" src="{% static "sb_admin/images/logo_light.svg" %}" alt="Logo" class="max-h-40 absolute md:left-40 md:top-40 left-24 top-24 hidden dark:block">
7
+ <img loading="lazy" src="{% static "sb_admin/images/logo.svg" %}" alt="Logo"
8
+ class="max-h-40 absolute md:left-40 md:top-40 left-24 top-24 dark:hidden">
9
+ <img loading="lazy" src="{% static "sb_admin/images/logo_light.svg" %}" alt="Logo"
10
+ class="max-h-40 absolute md:left-40 md:top-40 left-24 top-24 hidden dark:block">
8
11
  <div class="md:max-w-640 w-full flex justify-center items-center h-screen">
9
12
  <div class="max-w-370 w-full mx-24">
10
13
  {% block content %}{% endblock %}
@@ -1,4 +1,5 @@
1
- <div id="notification-messages" hx-swap-oob="beforeend" class="messagelist z-1000 fixed right-0 left-0 xl:left-260 mx-24">
1
+ <div id="notification-messages" hx-swap-oob="beforeend"
2
+ class="messagelist z-1000 fixed right-0 left-0 xl:left-260 mx-24{% if classes %} {{ classes }}{% endif %}">
2
3
  {% for message in messages %}
3
4
  {% if message.level == DEFAULT_MESSAGE_LEVELS.SUCCESS %}
4
5
  {% include 'sb_admin/partials/messages/alert_success.html' with text=message %}
@@ -40,12 +40,14 @@
40
40
  <span>{% trans 'Add' %}</span>
41
41
  </a>
42
42
  {% else %}
43
- <a href="javascript://" class="add-handler djn-add-handler btn btn-icon ml-auto {{ inline_admin_formset.handler_classes|join:" " }}">
44
- <svg class="w-20 h-20 md:mr-8">
45
- <use xlink:href="#Plus"></use>
46
- </svg>
47
- <span>{% trans 'Add' %}</span>
48
- </a>
43
+ <div class="djn-add-item ml-auto">
44
+ <a href="javascript://" class="add-handler djn-add-handler btn btn-icon {{ inline_admin_formset.handler_classes|join:" " }}">
45
+ <svg class="w-20 h-20 md:mr-8">
46
+ <use xlink:href="#Plus"></use>
47
+ </svg>
48
+ <span>{% trans 'Add' %}</span>
49
+ </a>
50
+ </div>
49
51
  {% endif %}
50
52
  {% endif %}
51
53
  </div>
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: django-smartbase-admin
3
- Version: 1.0.28
3
+ Version: 1.0.30
4
4
  Summary:
5
5
  Home-page: https://smartbase-sk.github.io/django-smartbase-admin-docs/
6
6
  License: MIT
@@ -31,7 +31,7 @@ Requires-Dist: xlsxwriter (>=3.2.0,<4.0.0)
31
31
  Project-URL: Repository, https://github.com/SmartBase-SK/django-smartbase-admin
32
32
  Description-Content-Type: text/markdown
33
33
 
34
- <img width="1660" height="520" alt="image" src="https://github.com/user-attachments/assets/b0d5537f-29c4-46ca-b514-9862b26cb000" style="max-width: 100%; height: auto; max-height: 520px;" />
34
+ <img alt="image" src="https://github.com/user-attachments/assets/b0d5537f-29c4-46ca-b514-9862b26cb000"/>
35
35
 
36
36
  # Django SmartBase Admin
37
37
 
@@ -52,18 +52,18 @@ Built to **speed up development** of internal tools and admin panels — beautif
52
52
  - Beautiful modern UI (Tailwind CSS)
53
53
  - Responsive & mobile-friendly
54
54
  - End-user ready for building SaaS or similar projects with global queryset configuration
55
- <img width="2880" height="1720" alt="image" src="https://github.com/user-attachments/assets/ebbcacea-9052-409e-99bb-9f9e0804bbc5" style="max-width: 100%; height: auto; max-height: 1720px;" />
56
- <img width="2880" height="1720" alt="image" src="https://github.com/user-attachments/assets/8003df6a-e035-4c8f-8e90-0e710818d33e" style="max-width: 100%; height: auto; max-height: 1720px;" />
57
- <img width="2880" height="1720" alt="image" src="https://github.com/user-attachments/assets/29e116de-a8c6-4f22-8485-3e0eba5ed564" style="max-width: 100%; height: auto; max-height: 1720px;" />
58
- <img width="2880" height="1720" alt="image" src="https://github.com/user-attachments/assets/46aefe59-e49c-4483-ba1f-eb18397db6ae" style="max-width: 100%; height: auto; max-height: 1720px;" />
59
- <img width="2880" height="1720" alt="image" src="https://github.com/user-attachments/assets/ea354dcb-b4a9-47af-8046-ba0d55d72746" style="max-width: 100%; height: auto; max-height: 1720px;" />
60
- <img width="2880" height="1720" alt="image" src="https://github.com/user-attachments/assets/10a5d75c-ae3e-4e2b-aeb2-e943e6363a2f" style="max-width: 100%; height: auto; max-height: 1720px;" />
61
- <img width="2880" height="1720" alt="image" src="https://github.com/user-attachments/assets/3e6bfdbb-0c07-4fad-96f0-552cbcc9d4ae" style="max-width: 100%; height: auto; max-height: 1720px;" />
62
- <img width="2880" height="1720" alt="image" src="https://github.com/user-attachments/assets/b3acd00b-c425-4e5f-b113-97215bb85157" style="max-width: 100%; height: auto; max-height: 1720px;" />
63
- <img width="2880" height="1720" alt="image" src="https://github.com/user-attachments/assets/dc5f3f80-3325-4f5d-acec-236d6b241a7f" style="max-width: 100%; height: auto; max-height: 1720px;" />
64
- <img width="2880" height="1720" alt="image" src="https://github.com/user-attachments/assets/216d4e50-5af4-4e57-8649-1211a82f493e" style="max-width: 100%; height: auto; max-height: 1720px;" />
65
- <img width="2880" height="1720" alt="image" src="https://github.com/user-attachments/assets/167461dd-ec2e-4327-a208-4014f42100f9" style="max-width: 100%; height: auto; max-height: 1720px;" />
66
- <img width="2880" height="1720" alt="image" src="https://github.com/user-attachments/assets/3871e505-1bc9-4a6c-8457-4ad363a582af" style="max-width: 100%; height: auto; max-height: 1720px;" />
55
+ <img alt="image" src="https://github.com/user-attachments/assets/ebbcacea-9052-409e-99bb-9f9e0804bbc5" />
56
+ <img alt="image" src="https://github.com/user-attachments/assets/8003df6a-e035-4c8f-8e90-0e710818d33e" />
57
+ <img alt="image" src="https://github.com/user-attachments/assets/29e116de-a8c6-4f22-8485-3e0eba5ed564" />
58
+ <img alt="image" src="https://github.com/user-attachments/assets/46aefe59-e49c-4483-ba1f-eb18397db6ae" />
59
+ <img alt="image" src="https://github.com/user-attachments/assets/ea354dcb-b4a9-47af-8046-ba0d55d72746" />
60
+ <img alt="image" src="https://github.com/user-attachments/assets/10a5d75c-ae3e-4e2b-aeb2-e943e6363a2f" />
61
+ <img alt="image" src="https://github.com/user-attachments/assets/3e6bfdbb-0c07-4fad-96f0-552cbcc9d4ae" />
62
+ <img alt="image" src="https://github.com/user-attachments/assets/b3acd00b-c425-4e5f-b113-97215bb85157" />
63
+ <img alt="image" src="https://github.com/user-attachments/assets/dc5f3f80-3325-4f5d-acec-236d6b241a7f" />
64
+ <img alt="image" src="https://github.com/user-attachments/assets/216d4e50-5af4-4e57-8649-1211a82f493e" />
65
+ <img alt="image" src="https://github.com/user-attachments/assets/167461dd-ec2e-4327-a208-4014f42100f9" />
66
+ <img alt="image" src="https://github.com/user-attachments/assets/3871e505-1bc9-4a6c-8457-4ad363a582af" />
67
67
 
68
68
 
69
69
  ## 📚 Full Documentation (in progress)
@@ -4,7 +4,7 @@ django_smartbase_admin/actions/admin_action_list.py,sha256=F4b_KmXzuPaKywZK6lq1r
4
4
  django_smartbase_admin/actions/advanced_filters.py,sha256=Vm8b6TAwNehR8INjolFG7pEYL4ADO7XUiVOWpb0btM0,13481
5
5
  django_smartbase_admin/admin/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
6
  django_smartbase_admin/admin/admin_base.py,sha256=WQ5Zl25ggG7_oD-8Gvm9b2Pg9hPq6dFTVpW11cd2oLc,48144
7
- django_smartbase_admin/admin/site.py,sha256=sJiVX2ljUgNN6MnlLfsTyJs7Dl52iC2rtLwkg962ydM,6841
7
+ django_smartbase_admin/admin/site.py,sha256=bU71Zcts2hRcusZq1l44q9Mlr8jOEjGHeM6MNAaS6Gc,9903
8
8
  django_smartbase_admin/admin/widgets.py,sha256=OhPZfQ7GR6dgS9Yg_OlkFxSva06Hp28_V-40ZxxkFf8,26216
9
9
  django_smartbase_admin/apps.py,sha256=heZq5O2GHlkJdhUCHbRR7Nmm0irSxnL9NMqY43_O7V4,599
10
10
  django_smartbase_admin/compilemessages.py,sha256=-_FEFQlOvE4L8UzSuUxSxZQjgGlwL9IZtmg59fW_kIQ,342
@@ -13,7 +13,7 @@ django_smartbase_admin/engine/actions.py,sha256=vmwMmo1mxxHSLTlbNwbH6h9ulxwDVJnF
13
13
  django_smartbase_admin/engine/admin_base_view.py,sha256=07WSixM3mNjDA1S-CLRuMCBPafRW-3Hm9lg9ZEF1GOc,32275
14
14
  django_smartbase_admin/engine/admin_entrypoint_view.py,sha256=jfMfcYPfdre2abHfC4KIxaP_epJFuCeTcujGhGd4Tl4,624
15
15
  django_smartbase_admin/engine/admin_view.py,sha256=9wGffahDR3IYmhL9ZbX8uitwGdXdw5DIL5GnWBawmJM,4238
16
- django_smartbase_admin/engine/configuration.py,sha256=kkM0P0lcKUjfHVxSupwaKPiVz5FfHzOKsYU_QM08wv0,8541
16
+ django_smartbase_admin/engine/configuration.py,sha256=BCEu9N1G6UEtoQ8Ho1LCVGpVPtVOtTXJCjkBJxo5xws,8727
17
17
  django_smartbase_admin/engine/const.py,sha256=BP5I2UcCtV0bIlk_YUuVFHrDHRM9-gbCL0sJUX-q4Wo,2600
18
18
  django_smartbase_admin/engine/dashboard.py,sha256=yXi0oUTybqeo2_o2G3skp27W79u_SKjqcaXGKXR4pus,24488
19
19
  django_smartbase_admin/engine/fake_inline.py,sha256=tGLX3yHANYBsVPcDk6yQqn8RN-JGdaV-RdHcxh9-61w,6190
@@ -68,14 +68,14 @@ django_smartbase_admin/static/sb_admin/dist/calendar_style.js,sha256=47DEQpj8HBS
68
68
  django_smartbase_admin/static/sb_admin/dist/chart.js,sha256=nBru0P3RvzaNeQch6qkuL1Wi_c9ICz94HXLXmyYTMW8,205022
69
69
  django_smartbase_admin/static/sb_admin/dist/chart.js.LICENSE.txt,sha256=m7M__mzLlrKDz-hky_AC848p_HzYWhziwCLIpXMsj4I,257
70
70
  django_smartbase_admin/static/sb_admin/dist/confirmation_modal.js,sha256=glK-x4oxSAHqiabqXmNFE3FRtzMbpg7TgZiKcPle9_o,1745
71
- django_smartbase_admin/static/sb_admin/dist/main.js,sha256=JzT5YoEOWBJdacBH-RVcLHhKQEB730t26m_1fTLbzX8,384959
71
+ django_smartbase_admin/static/sb_admin/dist/main.js,sha256=AWemh0ZBm1ui5I97S4eEL0B7XOtWrOra_oiRL3r3Zso,385214
72
72
  django_smartbase_admin/static/sb_admin/dist/main.js.LICENSE.txt,sha256=Z8-1IrzhOFV3eE_WGR7SRfbzN9GRXsvfiU7_E_BkX-k,5600
73
- django_smartbase_admin/static/sb_admin/dist/main_style.css,sha256=5mBac7Wuj2kGATtXuw8I_7H1zGAq1hPWc2tZUh7qebQ,178971
73
+ django_smartbase_admin/static/sb_admin/dist/main_style.css,sha256=bBsZfcF9EyNt4f5WIKmFyuG8mn81x9sWjk-EXygekwc,179002
74
74
  django_smartbase_admin/static/sb_admin/dist/main_style.js,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
75
75
  django_smartbase_admin/static/sb_admin/dist/table.js,sha256=ellAKCmVs6r3AjERQ5UZ3NUCLT6uY5KQmGMM-ciyI7I,592340
76
76
  django_smartbase_admin/static/sb_admin/dist/table.js.LICENSE.txt,sha256=WOKSfEow5EUe0a78P0kcxdWcrQlqn2n6H8idNZqHVDk,462
77
77
  django_smartbase_admin/static/sb_admin/dist/translations.js,sha256=5PRY3zmbnQ9pH-FtNHmsZ5xmYLPOQiO_hR3CBxHIAIo,567
78
- django_smartbase_admin/static/sb_admin/dist/tree_widget.js,sha256=Lx6CbOBYriPWRIrKs8p4Yh_CGvj2OT3AzjOj1Kk2nJk,6797
78
+ django_smartbase_admin/static/sb_admin/dist/tree_widget.js,sha256=KjJhKnGfAAOmhtcL3NrlS1ejf2kw5SDfFpP17v0JekA,6872
79
79
  django_smartbase_admin/static/sb_admin/dist/tree_widget_style.css,sha256=HKXqTu3871TWj_QuTIJE_F-yq-g0SAOC6l5jGvG-Qi8,10615
80
80
  django_smartbase_admin/static/sb_admin/dist/tree_widget_style.js,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
81
81
  django_smartbase_admin/static/sb_admin/fancytree/jquery.fancytree-all-deps.min.js,sha256=JcIBncqpLNQT11WI19oVQQOhCmvoduGuxCR5Vaqupcc,130772
@@ -539,7 +539,7 @@ django_smartbase_admin/static/sb_admin/src/js/code.js,sha256=Q1jKpTsUZhxhaGDRrqH
539
539
  django_smartbase_admin/static/sb_admin/src/js/confirmation_modal.js,sha256=9xycy0sYJfT0SxeDucbOmvg9gHSrBo3KngZjCAHkVMM,3610
540
540
  django_smartbase_admin/static/sb_admin/src/js/datepicker.js,sha256=Nnc28kngTOnb8d2q6NOFGismUVp6l-sTVeBu3M1DgJY,6704
541
541
  django_smartbase_admin/static/sb_admin/src/js/datepicker_plugins.js,sha256=DVIyCJpxn8Gx1mx3QHxbRN4nlpJRlilKix6BK_zcUVc,12382
542
- django_smartbase_admin/static/sb_admin/src/js/main.js,sha256=VUvC6melb1Q0L0WDKAGrVQ7iLeEJs2sYC4vT1O4YeGY,19992
542
+ django_smartbase_admin/static/sb_admin/src/js/main.js,sha256=Pb-fgKq0xvY50QJuEpjoLkISCST8fOHBnk_Wn-KJySI,20293
543
543
  django_smartbase_admin/static/sb_admin/src/js/multiselect.js,sha256=GuWjIpdkfvXi-oBNdK3gImjrzef4550MKMy71iYrywk,4066
544
544
  django_smartbase_admin/static/sb_admin/src/js/range.js,sha256=k_1EIK0R-mrg3ScopUm2UDuYeaCg_VLTjtdJoN-8MXc,1794
545
545
  django_smartbase_admin/static/sb_admin/src/js/sb_ajax_params_tabulator_modifier.js,sha256=vJsAfRlXYeUH-hXLyVukim-UBRUHhv2J9UZHKAALOKo,650
@@ -559,7 +559,7 @@ django_smartbase_admin/static/sb_admin/src/js/table_modules/selection_module.js,
559
559
  django_smartbase_admin/static/sb_admin/src/js/table_modules/table_params_module.js,sha256=2-l4rsjDqaUZZzM7why-u21XbVNa9gFogehKTi8hIkE,11370
560
560
  django_smartbase_admin/static/sb_admin/src/js/table_modules/views_module.js,sha256=ZdirU9jt_aE_vkVXxMytZ3AaC0q6r57ECijdhV6j3-M,3393
561
561
  django_smartbase_admin/static/sb_admin/src/js/translations.js,sha256=GEizlr_D5yDj00i7jKENkWfDr6gZcg4RQ1Nek22WP4g,954
562
- django_smartbase_admin/static/sb_admin/src/js/tree_widget.js,sha256=rL0znvFm85f74HzNwf9YmUpenV7WfEAr79dD9M4BdxA,18225
562
+ django_smartbase_admin/static/sb_admin/src/js/tree_widget.js,sha256=LEu8LNycEIK4drqfUORXDOzFW2EzYg6AWmlM4H35VdM,18426
563
563
  django_smartbase_admin/static/sb_admin/src/js/utils.js,sha256=8hBr_dr1F_SQKLvuh9Z4t3q3KnSP2cmth7-x0Ih2T4w,5500
564
564
  django_smartbase_admin/templates/sb_admin/actions/change_form.html,sha256=g48e7ikJ6sUFc87F1sZW8SLv5rCY9j858BfO-xKeMfc,16664
565
565
  django_smartbase_admin/templates/sb_admin/actions/change_password.html,sha256=LhciaKCvlywKMJ6gY9JbEaTkOXjNSFO-mAnWIZfk6sA,3200
@@ -582,7 +582,7 @@ django_smartbase_admin/templates/sb_admin/actions/translations.html,sha256=vxdL0
582
582
  django_smartbase_admin/templates/sb_admin/actions/tree_list.html,sha256=UeZppGi-1Zi_du-AxlNR2g0js9qZvbXl7BJi7yoYoWQ,2251
583
583
  django_smartbase_admin/templates/sb_admin/auth/user/add_form.html,sha256=KEZO1zDOb5EyVswuAz9yhXq0MYlowcCsau43ghTeGIU,50
584
584
  django_smartbase_admin/templates/sb_admin/authentification/login.html,sha256=gJH-auRp2VBc6mLShFYt73mluZIfebrVu8Ke1crcqsY,2398
585
- django_smartbase_admin/templates/sb_admin/authentification/login_base.html,sha256=2thbTONii_FeA73Bad15hmHb25rN3SbwmZ6KVN_6fZ4,1048
585
+ django_smartbase_admin/templates/sb_admin/authentification/login_base.html,sha256=3_006WOAcMo2p42VSAZTeHQdALbcEFSmGKmAKySV-vM,1164
586
586
  django_smartbase_admin/templates/sb_admin/authentification/logout.html,sha256=5-kCINN5m4euIGyXv-VzCQGXiS2oWz5uJfVwP5d__54,496
587
587
  django_smartbase_admin/templates/sb_admin/authentification/password_change_done.html,sha256=YLM2fN6QUx_389UvA1aft7RO3xMDzyPUiy34oWHBZes,485
588
588
  django_smartbase_admin/templates/sb_admin/authentification/password_change_form.html,sha256=oSV-bzkDrQ-CwO01BPz1C1fxhQXu4qN4rG7_esPgkIs,1905
@@ -631,12 +631,12 @@ django_smartbase_admin/templates/sb_admin/includes/fieldset.html,sha256=cSaqkdB2
631
631
  django_smartbase_admin/templates/sb_admin/includes/inline_fieldset.html,sha256=TkebKOOyeDC_2l4Em4bJ6uOIKbSNqVI8GJmC5b970DU,2580
632
632
  django_smartbase_admin/templates/sb_admin/includes/loading.html,sha256=mI-Ya6y0vTOqPVUS9n_GPXmQDvyaDdL9637I5oqcnBE,287
633
633
  django_smartbase_admin/templates/sb_admin/includes/loading_absolute.html,sha256=Eck62NW9ByTw6Mu5QOcYZZJVebhRUNbxTB29XmN5drE,304
634
- django_smartbase_admin/templates/sb_admin/includes/notifications.html,sha256=wEEcrcdX3Wrlz-tVCJouiUFSZV_vVEqrc5opV_nifAw,783
634
+ django_smartbase_admin/templates/sb_admin/includes/notifications.html,sha256=ug4EgzoWcSEc-PpvEfJ-AGs3xhPTDpKy_oblumQp9WE,829
635
635
  django_smartbase_admin/templates/sb_admin/includes/readonly_boolean_field.html,sha256=sCU7DKBeWVD7ILcOAd20APS3gTBLBwXJpDjzTETwp5M,412
636
636
  django_smartbase_admin/templates/sb_admin/includes/readonly_field.html,sha256=uGysgcSJJRIwG-AW9Vtfysulz4HOKUNH9Wx0f8sZkuE,291
637
637
  django_smartbase_admin/templates/sb_admin/includes/table_inline_delete_button.html,sha256=aAkU6-T3tUrgshrZxny5QSqFUxPI59EKynxfKOMShNc,1170
638
638
  django_smartbase_admin/templates/sb_admin/inlines/stacked_inline.html,sha256=VwAqL9oULOMdKvsOF83W_eTW06P1VC6cneAg1l7sMVo,9285
639
- django_smartbase_admin/templates/sb_admin/inlines/table_inline.html,sha256=c-tp7Y1NOOYjy93llFzratn2XqZfMRWosDaEd4N_HV4,17408
639
+ django_smartbase_admin/templates/sb_admin/inlines/table_inline.html,sha256=o35YgaxSdYA6MORuyHJDi3GzE8qwWrXkGCYoMJyAmP0,17530
640
640
  django_smartbase_admin/templates/sb_admin/inlines/table_inline_paginated.html,sha256=2I59KWM_7yvchNjlIWHaHklrklnNsJBwaLlp9mZUYfQ,3046
641
641
  django_smartbase_admin/templates/sb_admin/integrations/cms/page_list.html,sha256=juoU5UaqPozIgRX5EJyWpm2-mb1hqM2pfBoePZ1Vs-I,18190
642
642
  django_smartbase_admin/templates/sb_admin/integrations/cms/translations_status_row.html,sha256=Ppm6oEmNZkZC_XV5QNFbgccsBumB6LVy1e0Vk8dPMCM,308
@@ -716,7 +716,7 @@ django_smartbase_admin/views/global_filter_view.py,sha256=eYo1moJGyi7jc2cPDA5ZBi
716
716
  django_smartbase_admin/views/media_view.py,sha256=5BLWXuzynF7nM34t-mf2BQSRN5ojY8HxpLIqt7Jiq9g,292
717
717
  django_smartbase_admin/views/translations_view.py,sha256=hktmkJIZ0EJxgnzjHLIoRDY0ckFa5wkbaoFZg32UWYw,20441
718
718
  django_smartbase_admin/views/user_config_view.py,sha256=hUSmwxgGXJog7vhiD-zGpm6smo31sLNzW2VoXapHIjc,1865
719
- django_smartbase_admin-1.0.28.dist-info/LICENSE.md,sha256=okRGMBOYvyhprt2eTpX_QXqpzC0MODF-U7zX-4fKPjQ,1078
720
- django_smartbase_admin-1.0.28.dist-info/METADATA,sha256=_C6mMv6HI72jY7lJU_IdOEkXEU_KOUWRPh0qpY7o7N4,7690
721
- django_smartbase_admin-1.0.28.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
722
- django_smartbase_admin-1.0.28.dist-info/RECORD,,
719
+ django_smartbase_admin-1.0.30.dist-info/LICENSE.md,sha256=okRGMBOYvyhprt2eTpX_QXqpzC0MODF-U7zX-4fKPjQ,1078
720
+ django_smartbase_admin-1.0.30.dist-info/METADATA,sha256=fP_V-UCOw39zfmAn2vTyyHVXyZHxXgbPPEJWfnzIPkM,6573
721
+ django_smartbase_admin-1.0.30.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
722
+ django_smartbase_admin-1.0.30.dist-info/RECORD,,