django-unfold 0.66.0__tar.gz → 0.67.0__tar.gz

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.
Files changed (314) hide show
  1. {django_unfold-0.66.0 → django_unfold-0.67.0}/PKG-INFO +1 -1
  2. {django_unfold-0.66.0 → django_unfold-0.67.0}/pyproject.toml +1 -1
  3. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/filters/admin/numeric_filters.py +2 -0
  4. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/filters/forms.py +25 -4
  5. django_unfold-0.67.0/src/unfold/contrib/filters/static/unfold/filters/js/admin-numeric-filter.js +69 -0
  6. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/filters/templates/unfold/filters/filters_numeric_slider.html +2 -11
  7. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/fields.py +41 -0
  8. django_unfold-0.67.0/src/unfold/static/unfold/css/styles.css +2 -0
  9. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/static/unfold/js/app.js +62 -4
  10. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/static/unfold/js/select2.init.js +2 -9
  11. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/styles.css +1 -5
  12. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/components/card.html +12 -3
  13. django_unfold-0.67.0/src/unfold/templates/unfold/components/progress.html +29 -0
  14. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/helpers/field_readonly_value.html +1 -1
  15. django_unfold-0.67.0/src/unfold/templates/unfold/helpers/field_readonly_value_file.html +18 -0
  16. django_unfold-0.66.0/src/unfold/contrib/filters/static/unfold/filters/js/admin-numeric-filter.js +0 -35
  17. django_unfold-0.66.0/src/unfold/static/unfold/css/styles.css +0 -2
  18. django_unfold-0.66.0/src/unfold/templates/unfold/components/progress.html +0 -23
  19. {django_unfold-0.66.0 → django_unfold-0.67.0}/LICENSE.md +0 -0
  20. {django_unfold-0.66.0 → django_unfold-0.67.0}/README.md +0 -0
  21. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/__init__.py +0 -0
  22. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/admin.py +0 -0
  23. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/apps.py +0 -0
  24. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/checks.py +0 -0
  25. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/components.py +0 -0
  26. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/__init__.py +0 -0
  27. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/constance/__init__.py +0 -0
  28. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/constance/apps.py +0 -0
  29. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/constance/settings.py +0 -0
  30. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/constance/templates/admin/constance/change_list.html +0 -0
  31. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/constance/templates/admin/constance/includes/results_list.html +0 -0
  32. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/filters/__init__.py +0 -0
  33. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/filters/admin/__init__.py +0 -0
  34. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/filters/admin/autocomplete_filters.py +0 -0
  35. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/filters/admin/choice_filters.py +0 -0
  36. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/filters/admin/datetime_filters.py +0 -0
  37. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/filters/admin/dropdown_filters.py +0 -0
  38. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/filters/admin/mixins.py +0 -0
  39. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/filters/admin/text_filters.py +0 -0
  40. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/filters/apps.py +0 -0
  41. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/filters/static/unfold/filters/css/nouislider/LICENSE +0 -0
  42. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/filters/static/unfold/filters/css/nouislider/nouislider.min.css +0 -0
  43. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/filters/static/unfold/filters/js/DateTimeShortcuts.js +0 -0
  44. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/filters/static/unfold/filters/js/nouislider/LICENSE +0 -0
  45. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/filters/static/unfold/filters/js/nouislider/nouislider.min.js +0 -0
  46. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/filters/static/unfold/filters/js/wnumb/LICENSE +0 -0
  47. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/filters/static/unfold/filters/js/wnumb/wNumb.min.js +0 -0
  48. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/filters/templates/unfold/filters/filters_date_range.html +0 -0
  49. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/filters/templates/unfold/filters/filters_datetime_range.html +0 -0
  50. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/filters/templates/unfold/filters/filters_field.html +0 -0
  51. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/filters/templates/unfold/filters/filters_numeric_range.html +0 -0
  52. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/filters/templates/unfold/filters/filters_numeric_single.html +0 -0
  53. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/forms/__init__.py +0 -0
  54. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/forms/apps.py +0 -0
  55. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/forms/static/unfold/forms/css/trix/LICENSE +0 -0
  56. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/forms/static/unfold/forms/css/trix/trix.css +0 -0
  57. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/forms/static/unfold/forms/js/trix/LICENSE +0 -0
  58. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/forms/static/unfold/forms/js/trix/trix.js +0 -0
  59. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/forms/static/unfold/forms/js/trix.config.js +0 -0
  60. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/forms/templates/unfold/forms/array.html +0 -0
  61. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/forms/templates/unfold/forms/helpers/toolbar.html +0 -0
  62. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/forms/templates/unfold/forms/wysiwyg.html +0 -0
  63. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/forms/widgets.py +0 -0
  64. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/guardian/__init__.py +0 -0
  65. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/guardian/apps.py +0 -0
  66. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/guardian/templates/admin/guardian/model/change_form.html +0 -0
  67. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/guardian/templates/admin/guardian/model/field.html +0 -0
  68. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/guardian/templates/admin/guardian/model/obj_perms_manage.html +0 -0
  69. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/guardian/templates/admin/guardian/model/obj_perms_manage_group.html +0 -0
  70. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/guardian/templates/admin/guardian/model/obj_perms_manage_user.html +0 -0
  71. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/guardian/templates/unfold/guardian/group_form.html +0 -0
  72. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/guardian/templates/unfold/guardian/user_form.html +0 -0
  73. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/import_export/__init__.py +0 -0
  74. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/import_export/apps.py +0 -0
  75. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/import_export/forms.py +0 -0
  76. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/import_export/templates/admin/import_export/base.html +0 -0
  77. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/import_export/templates/admin/import_export/change_form.html +0 -0
  78. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/import_export/templates/admin/import_export/change_list_export.html +0 -0
  79. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/import_export/templates/admin/import_export/change_list_export_item.html +0 -0
  80. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/import_export/templates/admin/import_export/change_list_import.html +0 -0
  81. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/import_export/templates/admin/import_export/change_list_import_export.html +0 -0
  82. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/import_export/templates/admin/import_export/change_list_import_item.html +0 -0
  83. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/import_export/templates/admin/import_export/export.html +0 -0
  84. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/import_export/templates/admin/import_export/import.html +0 -0
  85. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/import_export/templates/admin/import_export/import_confirm.html +0 -0
  86. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/import_export/templates/admin/import_export/import_errors.html +0 -0
  87. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/import_export/templates/admin/import_export/import_form.html +0 -0
  88. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/import_export/templates/admin/import_export/import_preview.html +0 -0
  89. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/import_export/templates/admin/import_export/import_validation.html +0 -0
  90. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/import_export/templates/admin/import_export/resource_fields_list.html +0 -0
  91. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/inlines/__init__.py +0 -0
  92. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/inlines/admin.py +0 -0
  93. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/inlines/apps.py +0 -0
  94. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/inlines/checks.py +0 -0
  95. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/inlines/forms.py +0 -0
  96. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/location_field/__init__.py +0 -0
  97. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/location_field/apps.py +0 -0
  98. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/location_field/templates/location_field/map_widget.html +0 -0
  99. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/simple_history/__init__.py +0 -0
  100. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/simple_history/apps.py +0 -0
  101. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/simple_history/templates/simple_history/object_history.html +0 -0
  102. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/simple_history/templates/simple_history/object_history_form.html +0 -0
  103. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/simple_history/templates/simple_history/object_history_list.html +0 -0
  104. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/contrib/simple_history/templates/simple_history/submit_line.html +0 -0
  105. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/dataclasses.py +0 -0
  106. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/decorators.py +0 -0
  107. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/enums.py +0 -0
  108. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/exceptions.py +0 -0
  109. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/forms.py +0 -0
  110. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/layout.py +0 -0
  111. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/mixins/__init__.py +0 -0
  112. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/mixins/action_model_admin.py +0 -0
  113. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/mixins/base_model_admin.py +0 -0
  114. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/overrides.py +0 -0
  115. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/paginator.py +0 -0
  116. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/sections.py +0 -0
  117. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/settings.py +0 -0
  118. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/sites.py +0 -0
  119. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/static/admin/js/admin/RelatedObjectLookups.js +0 -0
  120. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/static/admin/js/inlines.js +0 -0
  121. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/static/unfold/css/simplebar/LICENSE +0 -0
  122. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/static/unfold/css/simplebar/simplebar.css +0 -0
  123. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/static/unfold/fonts/inter/Inter-Bold.woff2 +0 -0
  124. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/static/unfold/fonts/inter/Inter-Medium.woff2 +0 -0
  125. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/static/unfold/fonts/inter/Inter-Regular.woff2 +0 -0
  126. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/static/unfold/fonts/inter/Inter-SemiBold.woff2 +0 -0
  127. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/static/unfold/fonts/inter/LICENSE +0 -0
  128. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/static/unfold/fonts/inter/styles.css +0 -0
  129. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/static/unfold/fonts/material-symbols/LICENSE +0 -0
  130. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/static/unfold/fonts/material-symbols/Material-Symbols-Outlined.woff2 +0 -0
  131. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/static/unfold/fonts/material-symbols/styles.css +0 -0
  132. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/static/unfold/js/alpine/LICENSE +0 -0
  133. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/static/unfold/js/alpine/alpine.anchor.js +0 -0
  134. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/static/unfold/js/alpine/alpine.js +0 -0
  135. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/static/unfold/js/alpine/alpine.persist.js +0 -0
  136. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/static/unfold/js/alpine/alpine.resize.js +0 -0
  137. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/static/unfold/js/alpine/alpine.sort.js +0 -0
  138. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/static/unfold/js/chart/LICENSE +0 -0
  139. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/static/unfold/js/chart/chart.js +0 -0
  140. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/static/unfold/js/htmx/LICENSE +0 -0
  141. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/static/unfold/js/htmx/htmx.js +0 -0
  142. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/static/unfold/js/simplebar/LICENSE +0 -0
  143. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/static/unfold/js/simplebar/simplebar.js +0 -0
  144. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/admin/actions.html +0 -0
  145. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/admin/app_index.html +0 -0
  146. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/admin/app_list.html +0 -0
  147. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/admin/auth/user/add_form.html +0 -0
  148. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/admin/auth/user/change_password.html +0 -0
  149. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/admin/base.html +0 -0
  150. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/admin/base_site.html +0 -0
  151. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/admin/change_form.html +0 -0
  152. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/admin/change_form_object_tools.html +0 -0
  153. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/admin/change_list.html +0 -0
  154. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/admin/change_list_object_tools.html +0 -0
  155. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/admin/change_list_results.html +0 -0
  156. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/admin/date_hierarchy.html +0 -0
  157. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/admin/delete_confirmation.html +0 -0
  158. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/admin/delete_selected_confirmation.html +0 -0
  159. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/admin/edit_inline/stacked.html +0 -0
  160. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/admin/edit_inline/tabular.html +0 -0
  161. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/admin/filter.html +0 -0
  162. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/admin/includes/fieldset.html +0 -0
  163. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/admin/includes/object_delete_summary.html +0 -0
  164. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/admin/index.html +0 -0
  165. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/admin/login.html +0 -0
  166. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/admin/nav_sidebar.html +0 -0
  167. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/admin/object_history.html +0 -0
  168. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/admin/pagination.html +0 -0
  169. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/admin/search_form.html +0 -0
  170. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/admin/submit_line.html +0 -0
  171. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/auth/widgets/read_only_password_hash.html +0 -0
  172. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/registration/logged_out.html +0 -0
  173. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/registration/password_change_done.html +0 -0
  174. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/registration/password_change_form.html +0 -0
  175. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/components/button.html +0 -0
  176. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/components/chart/bar.html +0 -0
  177. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/components/chart/cohort.html +0 -0
  178. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/components/chart/line.html +0 -0
  179. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/components/container.html +0 -0
  180. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/components/flex.html +0 -0
  181. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/components/icon.html +0 -0
  182. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/components/layer.html +0 -0
  183. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/components/navigation.html +0 -0
  184. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/components/separator.html +0 -0
  185. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/components/table.html +0 -0
  186. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/components/text.html +0 -0
  187. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/components/title.html +0 -0
  188. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/components/tracker.html +0 -0
  189. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/helpers/account_links.html +0 -0
  190. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/helpers/actions_row.html +0 -0
  191. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/helpers/add_link.html +0 -0
  192. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/helpers/app_list.html +0 -0
  193. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/helpers/app_list_default.html +0 -0
  194. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/helpers/attrs.html +0 -0
  195. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/helpers/boolean.html +0 -0
  196. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/helpers/breadcrumb_item.html +0 -0
  197. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/helpers/change_list_actions.html +0 -0
  198. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/helpers/change_list_filter.html +0 -0
  199. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/helpers/change_list_filter_actions.html +0 -0
  200. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/helpers/command.html +0 -0
  201. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/helpers/command_history.html +0 -0
  202. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/helpers/command_results.html +0 -0
  203. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/helpers/delete_submit_line.html +0 -0
  204. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/helpers/display_dropdown.html +0 -0
  205. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/helpers/display_header.html +0 -0
  206. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/helpers/display_label.html +0 -0
  207. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/helpers/edit_inline/tabular_delete.html +0 -0
  208. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/helpers/edit_inline/tabular_error.html +0 -0
  209. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/helpers/edit_inline/tabular_field.html +0 -0
  210. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/helpers/edit_inline/tabular_heading.html +0 -0
  211. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/helpers/edit_inline/tabular_row.html +0 -0
  212. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/helpers/edit_inline/tabular_title.html +0 -0
  213. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/helpers/empty_results.html +0 -0
  214. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/helpers/field.html +0 -0
  215. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/helpers/field_readonly.html +0 -0
  216. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/helpers/fieldset_row.html +0 -0
  217. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/helpers/fieldset_row_checkbox.html +0 -0
  218. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/helpers/fieldset_row_field.html +0 -0
  219. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/helpers/fieldsets_tabs.html +0 -0
  220. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/helpers/form_errors.html +0 -0
  221. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/helpers/form_label.html +0 -0
  222. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/helpers/header.html +0 -0
  223. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/helpers/header_back_button.html +0 -0
  224. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/helpers/header_title.html +0 -0
  225. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/helpers/help_text.html +0 -0
  226. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/helpers/history.html +0 -0
  227. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/helpers/label.html +0 -0
  228. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/helpers/language_form.html +0 -0
  229. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/helpers/language_switch.html +0 -0
  230. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/helpers/messages/debug.html +0 -0
  231. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/helpers/messages/error.html +0 -0
  232. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/helpers/messages/errornote.html +0 -0
  233. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/helpers/messages/info.html +0 -0
  234. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/helpers/messages/success.html +0 -0
  235. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/helpers/messages/warning.html +0 -0
  236. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/helpers/messages.html +0 -0
  237. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/helpers/navigation.html +0 -0
  238. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/helpers/navigation_header.html +0 -0
  239. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/helpers/pagination.html +0 -0
  240. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/helpers/pagination_current_item.html +0 -0
  241. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/helpers/pagination_default.html +0 -0
  242. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/helpers/pagination_ellipsis.html +0 -0
  243. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/helpers/pagination_infinite.html +0 -0
  244. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/helpers/pagination_inline.html +0 -0
  245. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/helpers/popup_header.html +0 -0
  246. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/helpers/search.html +0 -0
  247. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/helpers/search_results.html +0 -0
  248. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/helpers/shortcut.html +0 -0
  249. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/helpers/site_branding.html +0 -0
  250. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/helpers/site_dropdown.html +0 -0
  251. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/helpers/site_icon.html +0 -0
  252. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/helpers/site_logo.html +0 -0
  253. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/helpers/submit.html +0 -0
  254. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/helpers/tab_action.html +0 -0
  255. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/helpers/tab_actions.html +0 -0
  256. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/helpers/tab_items.html +0 -0
  257. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/helpers/tab_list.html +0 -0
  258. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/helpers/theme_switch.html +0 -0
  259. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/helpers/unauthenticated_header.html +0 -0
  260. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/helpers/unauthenticated_title.html +0 -0
  261. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/helpers/userlinks.html +0 -0
  262. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/helpers/welcomemsg.html +0 -0
  263. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/layouts/base.html +0 -0
  264. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/layouts/base_simple.html +0 -0
  265. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/layouts/skeleton.html +0 -0
  266. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/layouts/unauthenticated.html +0 -0
  267. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/templatetags/preserve_changelist_filters.html +0 -0
  268. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/widgets/clearable_file_input.html +0 -0
  269. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/widgets/clearable_file_input_small.html +0 -0
  270. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/widgets/date.html +0 -0
  271. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/widgets/foreign_key_raw_id.html +0 -0
  272. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/widgets/radio.html +0 -0
  273. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/widgets/radio_option.html +0 -0
  274. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/widgets/range.html +0 -0
  275. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/widgets/related_widget_wrapper.html +0 -0
  276. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/widgets/select.html +0 -0
  277. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/widgets/split_datetime.html +0 -0
  278. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/widgets/split_datetime_vertical.html +0 -0
  279. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/widgets/split_money.html +0 -0
  280. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/widgets/text.html +0 -0
  281. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/widgets/textarea.html +0 -0
  282. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/widgets/time.html +0 -0
  283. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold/widgets/url.html +0 -0
  284. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold_crispy/display_form.html +0 -0
  285. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold_crispy/errors.html +0 -0
  286. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold_crispy/errors_formset.html +0 -0
  287. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold_crispy/field.html +0 -0
  288. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold_crispy/inputs.html +0 -0
  289. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold_crispy/layout/attrs.html +0 -0
  290. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold_crispy/layout/baseinput.html +0 -0
  291. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold_crispy/layout/button.html +0 -0
  292. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold_crispy/layout/buttonholder.html +0 -0
  293. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold_crispy/layout/checkbox.html +0 -0
  294. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold_crispy/layout/column.html +0 -0
  295. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold_crispy/layout/div.html +0 -0
  296. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold_crispy/layout/field_errors.html +0 -0
  297. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold_crispy/layout/fieldset.html +0 -0
  298. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold_crispy/layout/fieldset_subheader.html +0 -0
  299. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold_crispy/layout/help_text.html +0 -0
  300. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold_crispy/layout/help_text_and_errors.html +0 -0
  301. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold_crispy/layout/hr.html +0 -0
  302. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold_crispy/layout/radio_checkbox_select.html +0 -0
  303. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold_crispy/layout/row.html +0 -0
  304. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold_crispy/layout/table_inline_formset.html +0 -0
  305. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold_crispy/uni_form.html +0 -0
  306. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold_crispy/whole_uni_form.html +0 -0
  307. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templates/unfold_crispy/whole_uni_formset.html +0 -0
  308. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templatetags/__init__.py +0 -0
  309. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templatetags/unfold.py +0 -0
  310. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/templatetags/unfold_list.py +0 -0
  311. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/typing.py +0 -0
  312. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/utils.py +0 -0
  313. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/views.py +0 -0
  314. {django_unfold-0.66.0 → django_unfold-0.67.0}/src/unfold/widgets.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: django-unfold
3
- Version: 0.66.0
3
+ Version: 0.67.0
4
4
  Summary: Modern Django admin theme for seamless interface development
5
5
  License: MIT
6
6
  License-File: LICENSE.md
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "django-unfold"
3
- version = "0.66.0"
3
+ version = "0.67.0"
4
4
  description = "Modern Django admin theme for seamless interface development"
5
5
  license = "MIT"
6
6
  readme = "README.md"
@@ -179,6 +179,8 @@ class SliderNumericFilter(RangeNumericFilter):
179
179
  ),
180
180
  "form": self.form_class(
181
181
  name=self.parameter_name,
182
+ min=min_value,
183
+ max=max_value,
182
184
  data={
183
185
  self.parameter_name + "_from": self.used_parameters.get(
184
186
  self.parameter_name + "_from", min_value
@@ -59,7 +59,11 @@ class AutocompleteDropdownForm(forms.Form):
59
59
  label=label,
60
60
  required=False,
61
61
  queryset=field.remote_field.model.objects,
62
- widget=self.widget(field, model_admin.admin_site),
62
+ widget=self.widget(
63
+ field,
64
+ model_admin.admin_site,
65
+ attrs={"class": "unfold-filter-autocomplete"},
66
+ ),
63
67
  )
64
68
 
65
69
  class Media:
@@ -175,22 +179,39 @@ class SingleNumericForm(forms.Form):
175
179
 
176
180
 
177
181
  class RangeNumericForm(forms.Form):
178
- def __init__(self, name: str, *args, **kwargs) -> None:
182
+ def __init__(
183
+ self, name: str, min: float = None, max: float = None, *args, **kwargs
184
+ ) -> None:
179
185
  self.name = name
180
186
  super().__init__(*args, **kwargs)
181
187
 
188
+ min_max = {}
189
+
190
+ if min:
191
+ min_max["min"] = min
192
+ if max:
193
+ min_max["max"] = max
194
+
182
195
  self.fields[self.name + "_from"] = forms.FloatField(
183
196
  label="",
184
197
  required=False,
185
198
  widget=forms.NumberInput(
186
- attrs={"placeholder": _("From"), "class": " ".join(INPUT_CLASSES)}
199
+ attrs={
200
+ "placeholder": _("From"),
201
+ "class": " ".join(INPUT_CLASSES),
202
+ **min_max,
203
+ }
187
204
  ),
188
205
  )
189
206
  self.fields[self.name + "_to"] = forms.FloatField(
190
207
  label="",
191
208
  required=False,
192
209
  widget=forms.NumberInput(
193
- attrs={"placeholder": _("To"), "class": " ".join(INPUT_CLASSES)}
210
+ attrs={
211
+ "placeholder": _("To"),
212
+ "class": " ".join(INPUT_CLASSES),
213
+ **min_max,
214
+ }
194
215
  ),
195
216
  )
196
217
 
@@ -0,0 +1,69 @@
1
+ document.addEventListener("DOMContentLoaded", function () {
2
+ Array.from(
3
+ document.getElementsByClassName("admin-numeric-filter-slider")
4
+ ).forEach(function (slider) {
5
+ if (Array.from(slider.classList).includes("noUi-target")) {
6
+ return;
7
+ }
8
+
9
+ const fromInput = slider
10
+ .closest(".admin-numeric-filter-wrapper")
11
+ .querySelectorAll(".admin-numeric-filter-wrapper-group input")[0];
12
+
13
+ const toInput = slider
14
+ .closest(".admin-numeric-filter-wrapper")
15
+ .querySelectorAll(".admin-numeric-filter-wrapper-group input")[1];
16
+
17
+ noUiSlider.create(slider, {
18
+ start: [parseFloat(fromInput.value), parseFloat(toInput.value)],
19
+ step: parseFloat(slider.getAttribute("data-step")),
20
+ connect: true,
21
+ format: wNumb({
22
+ decimals: parseFloat(slider.getAttribute("data-decimals")),
23
+ }),
24
+ range: {
25
+ min: parseFloat(slider.getAttribute("data-min")),
26
+ max: parseFloat(slider.getAttribute("data-max")),
27
+ },
28
+ });
29
+
30
+ /*************************************************************
31
+ * Update slider when input values change
32
+ *************************************************************/
33
+ fromInput.addEventListener("keyup", function () {
34
+ clearTimeout(this._sliderUpdateTimeout);
35
+ this._sliderUpdateTimeout = setTimeout(() => {
36
+ slider.noUiSlider.set([
37
+ parseFloat(this.value),
38
+ parseFloat(toInput.value),
39
+ ]);
40
+ }, 500);
41
+ });
42
+
43
+ toInput.addEventListener("keyup", function () {
44
+ clearTimeout(this._sliderUpdateTimeout);
45
+ this._sliderUpdateTimeout = setTimeout(() => {
46
+ slider.noUiSlider.set([
47
+ parseFloat(fromInput.value),
48
+ parseFloat(this.value),
49
+ ]);
50
+ }, 500);
51
+ });
52
+
53
+ /*************************************************************
54
+ * Updated inputs when slider is moved
55
+ *************************************************************/
56
+ slider.noUiSlider.on("update", function (values, handle) {
57
+ const parent = this.target.closest(".admin-numeric-filter-wrapper");
58
+ const from = parent.querySelectorAll(
59
+ ".admin-numeric-filter-wrapper-group input"
60
+ )[0];
61
+ const to = parent.querySelectorAll(
62
+ ".admin-numeric-filter-wrapper-group input"
63
+ )[1];
64
+
65
+ from.value = values[0];
66
+ to.value = values[1];
67
+ });
68
+ });
69
+ });
@@ -8,22 +8,13 @@
8
8
  </h3>
9
9
 
10
10
  {% if choice.min is not None and choice.max is not None and choice.step %}
11
- <div class="admin-numeric-filter-slider-tooltips">
12
- <span class="admin-numeric-filter-slider-tooltip-from border border-base-200 cursor-not-allowed flex grow flex-row items-center mr-auto rounded-default shadow-xs px-3 py-2 w-full dark:bg-base-900 dark:border-base-700 dark:text-font-default-dark">
13
- {{ choice.value_from }}
14
- </span>
15
11
 
16
- <span class="admin-numeric-filter-slider-tooltip-to border border-base-200 cursor-not-allowed flex grow flex-row items-center rounded-default shadow-xs px-3 py-2 w-full dark:bg-base-900 dark:border-base-700 dark:text-font-default-dark">
17
- {{ choice.value_to }}
18
- </span>
12
+ <div class="admin-numeric-filter-wrapper-group flex flex-row gap-4 mb-4">
13
+ {{ choice.form.as_p }}
19
14
  </div>
20
15
 
21
16
  <div class="admin-numeric-filter-slider" data-min="{{ choice.min|unlocalize }}" data-max="{{ choice.max|unlocalize }}" data-decimals="{{ choice.decimals }}" data-step="{{ choice.step|unlocalize }}">
22
17
  </div>
23
-
24
- <div class="admin-numeric-filter-wrapper-group hidden">
25
- {{ choice.form.as_p }}
26
- </div>
27
18
  {% else %}
28
19
  <div class="admin-numeric-filter-slider-error dark:text-font-default-dark">
29
20
  <p class="border border-base-300 border-dashed leading-[36px] h-[38px] rounded-default text-center dark:border-base-700">
@@ -1,8 +1,11 @@
1
+ from typing import Union
2
+
1
3
  from django.contrib.admin import helpers
2
4
  from django.contrib.admin.utils import lookup_field, quote
3
5
  from django.core.exceptions import ObjectDoesNotExist
4
6
  from django.db import models
5
7
  from django.db.models import (
8
+ FileField,
6
9
  ForeignObjectRel,
7
10
  ImageField,
8
11
  JSONField,
@@ -36,6 +39,30 @@ class UnfoldAdminReadonlyField(helpers.AdminReadonlyField):
36
39
 
37
40
  return format_html("<label{}>{}</label>", flatatt(attrs), capfirst(label))
38
41
 
42
+ @property
43
+ def url(self) -> Union[str, bool]:
44
+ field, obj, model_admin = (
45
+ self.field["field"],
46
+ self.form.instance,
47
+ self.model_admin,
48
+ )
49
+
50
+ try:
51
+ f, attr, value = lookup_field(field, obj, model_admin)
52
+ except (AttributeError, ValueError, ObjectDoesNotExist):
53
+ return False
54
+
55
+ if not self.is_file():
56
+ return False
57
+
58
+ if hasattr(obj, field):
59
+ field_value = getattr(obj, field)
60
+
61
+ if field_value and hasattr(field_value, "url"):
62
+ return field_value.url
63
+
64
+ return False
65
+
39
66
  def is_json(self) -> bool:
40
67
  field, obj, model_admin = (
41
68
  self.field["field"],
@@ -73,6 +100,20 @@ class UnfoldAdminReadonlyField(helpers.AdminReadonlyField):
73
100
 
74
101
  return isinstance(f, ImageField)
75
102
 
103
+ def is_file(self) -> bool:
104
+ field, obj, model_admin = (
105
+ self.field["field"],
106
+ self.form.instance,
107
+ self.model_admin,
108
+ )
109
+
110
+ try:
111
+ f, attr, value = lookup_field(field, obj, model_admin)
112
+ except (AttributeError, ValueError, ObjectDoesNotExist):
113
+ return False
114
+
115
+ return isinstance(f, (ImageField, FileField))
116
+
76
117
  def contents(self) -> str:
77
118
  contents = self._get_contents()
78
119
  contents = self._preprocess_field(contents)