1.3.7
- Disable unique checks for Django<4.0, because they are not compatible.
1.3.6
- Backport to Django-4.0.
1.3.5
- Fix #99: File upload is not compatible with generic Django storage class.
1.3.4
- Fix #97: Forms and FormCollections with disabled fields and initial data, now are validated using that initial data.
- The filter in the widget for the
PhoneNumberField
now is cleared after reopening the selector.
1.3.3
- Fix #96: In
FormCollection
with siblings, the<form>
's ID sometimes was not unique. - The selector for international prefixes of the
PhoneNumberField
, now offers a search box. - Prevent loading styles for
PhoneNumberField
more than once.
1.3.2
- Handle form reset for
PhoneNumberField
properly. - Fix: Monolithic build did not include
PhoneNumberField
. - Use cached translation in demo project.
1.3.1
- Improved the usability of the
PhoneNumberField
. The user is now forced to select the country code from a dropdown list, whenever the phone number does not start with+
. - The dropdown list of the
PhoneNumberField
now shows the countries name in the current language.
1.3
- New widget:
PhoneNumberField
which can be used to improve the user experience when entering phone numbers.
1.2.2
- Nicer outline and box-shadow, whenever a
DualSelector
element receives input focus. It now surrounds the complete field. - In the Calendar and DateRange pickers, the cursor changes to a symbol signalizing into which direction the second date choice is going to be made.
- New widgets:
CountrySelectize
andCountrySelectizeMultiple
which prefix the country name with the corresponding flag.
1.2.1
- Fix: Ignore key press events for pure calendar widgets. Since a pure calendar widget can not be focused, handling key press events does not make sense.
- Fix: Calendar cells with attribute
disabled
are not selectable anymore.
1.2
- Add widgets
DatePicker
,DateTextbox
,DateCalendar
,DateTimePicker
,DateTimeTextbox
andDateTimeCalendar
. They can be used as alternative widgets to Django'sDateInput
andDateTimeInput
widgets. - Add range fields
DateRangeField
andDateTimeRangeField
which can be used in forms to query for a date- or datetime range. With these two fields six more widgets are added to the library:DateRangeCalendar
,DateRangeTextbox
,DateRangePicker
,DateTimeRangeCalendar
,DateTimeRangeTextbox
andDateTimeRangePicker
. - The calendar widget now supports 12 hours time format.
- Fix: In rare occasions, the styling of widgets has been loaded twice.
- Fix: Field choices declared as callables are now supported.
- Prepared rendering for Django-5.0.
-
1.1.2
- Drop support for Django-4.0.
-
1.1.1
- Fix problems in widgets
Selectize
andDualSelector
when used withfilter_by
. Selectable choices now are always updated using the proper filter values.
- Fix problems in widgets
-
1.1
- Form collections containing only empty fields won't be submitted. This applies to collections
added using
extra_siblings
as to collections added using the appropriate "Add " button. - Fix problem when using MultiWidget widgets. Under some configurations an error was raised stating “Duplicate name 'xxx' on multiple input fields”.
- Form collections containing only empty fields won't be submitted. This applies to collections
added using
-
1.0.1
- Fix: When using the Selectize widgets, using the arrow-up/down buttons did not highlight the selected option.
- Officially support for Django-4.2.
-
1.0
- Breaking change: Class
FormCollection
is validated entirely and only after all checks passed, models are created out of the cleaned data. This means that the methodconstruct_instance
andmodel_to_dict
changed their signature. Please read the docs on how to use them now. - Breaking change: In all rendered forms,
<django-field-group>
is replaced against<div role="group">
because self-declared elements shall only be used as web components. - Breaking change: In all rendered forms groups,
<django-error-messages>
is replaced against<meta name="error-messages">
because self-declared elements shall only be used as web components. - Breaking change: Attribute
click
, which is used to specify action queues in submit buttons, has been renamed todf-click
in order to prevent naming collisions. - Breaking change: Attributes
show-if
,hide-if
anddisable-if
which are used to hide or disable fields, fieldsets and buttons, have been renamed todf-show
,df-hide
anddf-disable
in order to prevent naming collisions. - The documentation now is interactive integrating the many working examples.
- Fix: In
DualSortableSelector
the initial ordering of options, sometimes did not correspond to the intermediate's model entries. - Add view class
BulkEditCollectionView
to edit a collection with siblings without any main object. Also add methodmodels_to_list
as a counterpart tomodel_to_dict
for list views. - Constructor of
FormCollection
additionally acceptsauto_id
. This can be used to set the format of theid
field in form fields. - Constructor of
FormCollection
additionally acceptsinstance
. This helps to build the models out of a collection. - Class
FormCollection
performs a unique validating check while performing afull_clean
. - Add a date- and datetime picker rendered by the server using the Python
Calendar
class. - Widget
UploadedFileInput
accepts{…, max-size: <bytes>, …}
in itsattrs
to limit the uploadable file size. - Add control elements for to RichTextarea:
TextAlign
,TextColor
,TextIndent
,TextMargin
,Blockquote
,Codeblock
,HardBreak
,Subscript
,Superscript
,Placeholder
. - Add check to determine if the same id is used by more than one field inside
<django-formset…>
elements on a single page. - In
RichtextArea
replacepopper.js
againstfloating-ui
.
- Breaking change: Class
-
0.13.4
- Fix: On the Javascript console, library TonSelect complained to be initialized already, if more
than one
Selectize
orSelectizeMultiple
widget were used. - Some valid Python regular expressions were rejected by the Javascript implementation when used
as pattern in a
RegexField
. - When building the project, now one can use the comman line options
--debug
and--monolith
to control how the client code shall be generated.
- Fix: On the Javascript console, library TonSelect complained to be initialized already, if more
than one
-
0.13.3
- Fix initialization problem: Webcomponents loaded through templates in a FormCollection with multiple instances were not loaded.
- Fix problem in client code: Collections with siblings did not aggregate data for submission correctly in all circumstances.
-
0.13.2
- Add polyfill
@ungap/custom-elements
to fix compatibility issues on Safari.
- Add polyfill
-
0.13.1
- Fix broken merge.
-
0.13
- Add feature to preselect choices in one select field using a value from another field.
- Remove function
getValue()
from widgetsRichtextArea
andDjangoSelectize
; use propertyvalue
instead.
-
0.12
- Add feature to work with option groups when using the
Selectize
,SelectizeMultiple
,DualSelector
andDualSortableSelector
widget. - Fix border shadow after submitting invalid form data.
- Add feature to work with option groups when using the
-
0.11.1
- In
DjangoButton
'sreload()
action, add a Boolean argument to optionally ignore query strings. - In
DjangoSelectize
fix handling ofline-height: normal
by settings it to value 1.2. - In
DjangoSelectize
changebackground-color
for mouse over on<option>
elements.
- In
-
0.11
- Add widget for Django's SlugField.
- Add widget to handle rich text using the Tiptap editor framework.
- Load submodules with 3rd party dependencies dynamically. This decreases the initial Javascript payload by ~90% compared to a monolithic build.
- In addition to the esbuild compiler, add scripts to compile the TypeScript code using rollup + babel + terser.
- Web components are initialized on the
DOMContentLoaded
(instead ofload
) Event. - Fix: The
Selectize
widget now uses the same border styles for feedback as other input/select fields. - Fix: Forms which do not provide data are not validated.
- Add handler to listen for an external
reset
Event. - Fix:
FileUpload
widget now loses focus after file submission. - Handle input fields for URLs properly.
- Fix missing feedback on datetime and password fields.
- Fix: An initialized
FormCollection
with siblings butmax_siblings=None
, raised a TypeError. - Fix: Forms now pay attention to form attribute
novalidate
. - All
<form>
elements are empty and referred by form=… attribute from their input fields. - Add Python utility class
ClassList
which behaves similar to its Javascript counterpartHTMLElement
. - Unify the styling of animated icons, such as "Okay", "Bummer" and "Spinner".
- On HTML placeholders used to display feedback errors, add
role="alert"
. - Fix: Uploading more than one file caused the
UploadWidget
to complain with "File upload still in progress." - Add button actions
confirm()
andalertOnError
to the possible queue of actions.
-
0.10.3
- Fix: Widget
DualSortableSelector
now checks bounds for provided values. This in rare occasions raised an exception. - Both CSS files
collections.css
andbootstrap5-extra.css
now are compiled from a SCSS source.
- Fix: Widget
-
0.10.2
- In sortable form collections, add a CSS ghost class to make moved item more opaque. This is for a better usability experience.
- In sortable form collections, change the form name after moving a collection. This fixes a problem with form validation.
- Fix: On forms created from a model, method
IncompleteSelectResponseMixin.fetch_options()
raised an AttributeError. - Class
FormCollection
and classFieldset
accept an optional help text which is rendered at the bottom of a<django-form-collection>
or<fieldset>
. - Some rendering templates remove whitespace using templatetag
{% spaceless %}
. - Django-4.1 now is officially supported.
-
0.10.1
- The HTML tags for
<select is="django-selectize">
and<select is="django-dual-selector">
declare their own webcomponents which now add their own HTML elements in front of themselves, before hiding. Instead of hiding viadisplay: none;
they now "conceal" so that the browser can set focus on input fields not validating. - Replace
uglify
againstterser
to minify JavaScript files. - In webcomponent
<select is="django-dual-selector">
, replaceelem.getValue()
againstelem.value
. - Simplify the way events handlers are called.
- Remove the CSRF-Token from the request header of webcomponents
<select is="django-selectize">
and<select is="django-dual-selector">
, since they exclusively use GET requests. - The right selector box of the webcomponent
<select is="django-dual-selector" required …>
highlights as invalid (by rendering a red border), if input data is missing.
- The HTML tags for
-
0.10
- The right part of the widget
DualSelector
optionally is sortable now. Views accepting forms with this widget can rely upon that sorting order and store it. - Form collections with siblings can optionally be declared as sortable. A drag handle is then rendered above the collection, which can be used for sorting.
- Add Germans translations text readable by the end user.
- The right part of the widget
-
0.9.1
- The optional URL parameter passed into button action
proceed(...)
now takes precedence over thesuccess_url
returned inside the response object. - Allow wrapping HTML elements between a
<django-formset>
and its immediate<django-form-collection>
-elements. - Add German translations.
- The optional URL parameter passed into button action
-
0.9
- Fixed problems when resetting a formset containing multiple collections with siblings: All just added collections are removed on reset.
- Distinguish while removing a collection: A just added collection is removed, while existing collections are marked for removal.
- On cleaning post data while processing collections, one can choose whether to keep existig but removed colections for further processing, or ignore them.
- Allow extra label to be added inside the "Add collection" button.
- Handle CSRF token via attribute to
<django-formset csrf-token="…">
rather than using a cookie. - Fix typo: Rename
IncompleSelectResponseMixin
->IncompleteSelectResponseMixin
. - Fix some issues with
FormCollection
-s: Invokingreplicate
now creates a deep copy of all children. - Fix in widget
FileInput
: On reloading the form, the provided value is kept to its initial state.
-
0.8.8
- Use a simpler and semantically more correct HTML representation for the file uploader widget.
-
0.8.7
- Fix: If an uploaded image has an EXIF orientation tag, that image that is transposed accordingly.
- On file upload, fill the progressbar to only 90%. The remaining 10% of the progressbar are filled after successful image transformation.
- Rename Event "submit" to "submitted", because otherwise FireFox triggers a page reload.
-
0.8.6
- Fix: Files uploaded into collections with siblings, are not duplicated anymore.
- Fix: Clear
cleaned_data
during form validation to prevent duplicate content. - Fix occasionally occuring MRO-TypeError when instantiating checkbox widget.
- Remove tag "marked_for_removal" while submitting form. Use Array with holes instead.
- In Collections with siblings, do not extend number of siblings, if maximum is reached.
-
0.8.5
- Fix: Form collections with empty siblings, on submission now create an empty array.
-
0.8.4
- Add optional argument for delay in milliseconds to button actions
okay
andbummer
. - Resetting a django-formset removes all just added sibling collections and unmarks all collections for removal.
- Fields beeing hidden on the client using
show-if
/hide-if
also are disabled to prevent validation – which wouldn't make sense anyway. - Add parameter
legend
to Form Collection so that a collection can have an optional title.
- Add optional argument for delay in milliseconds to button actions
-
0.8.3
- Fix: For
field_css_classes
, fall back to form name rather than its prefix.
- Fix: For
-
0.8.2
- Fix: Set empty dropbox item on upload widget during form reset.
- Fix: Collections with siblings on root level generated invalid form data.
- Add special placeholder to render errors for collections with siblings.
- Add additional actions to button: Spinner, Okay, Bummer and Reload.
- In Button's proceed action, print a warning, if neither a success-, nor a fallback-URL is given to proceed.
- In
FormCollectionView
handle response of posting formsets analogous to the way Django handles forms.
-
0.8.1
- Adopt
DualSelector
for Tailwind.css. - Hide
calendar-picker-indicator
in touched input date fields. - Fix: Expecting path for base location as Path object.
- Fix: Updating of existing object failed.
- Add method
get_extra_data
to classFormView
. - Increase max filename length to 250 characters.
- Fix: Abort silently if input field is missing.
- Replace
<div>
-based progress bar against proper HTML element<progress>
.
- Adopt
-
0.8
- Add widget
DualSelector
which accepts multiple values and is the form field counterpart to Django'sManyToManyField
. This is an alternative widget toSelectizeMultiple
.
- Add widget
-
0.7
- Add widget
SelectizeMultiple
which accepts multiple values and is the form field counterpart to Django'sManyToManyField
. - Bugfix in UploadWidget: Do not delete existing file on form update.
- Add widget
-
0.6
- Content from
FileUploadWidget
can be transfered to a Django model and vice versa.
- Content from
-
0.4
- It is possible to control every aspect of the feedback, given to the user while he fills the input fields.
- Templatetag
render_form
andformsetify
accepts parametersform_classes
andcollection_classes
for finer styling control.
-
0.3
- Add
show-if
,hide-if
anddisable-if
attribute parsing to fields and fieldsets. - Add class
Fieldset
to handle forms with legends and the possibility for hiding and disabling. - Form Collections may have siblings and can be extended.
- Add
-
0.2
- Refactored to work for Django>4 only.
- Added Form Collections.
-
0.1
- Initial release.