Determine correct path for installed app passed to
startappmanagement command if app is not already installed
Look in all
INSTALLED_APPSfor components instead of only in a
settings.APPS_DIRwhich is the default for
django-cookiecutterinstead of just
** Breaking changes **
Require an application name when running the
startunicornmanagement command for where the component should be created
Re-fire poll method when tab/window comes back into focus after losing visibility (https://github.com/adamghill/django-unicorn/pull/202 by frbor)
Many-to-many fields on a Django model are now supported
Multiple partial targets
Completely redesigned and much improved support for Django models and QuerySets.
startunicorncommand and add some ascii art.
unicorn:modelin the same element.
Performance enhancement that returns a 304 HTTP status code when an action happens, but the content doesn’t change.
unicorn:ignoreattribute to prevent an element from being morphed (useful when using
Unicornwith libraries like
Select2that change the DOM).
Add support for passing arguments to
Bug fix when attempting to cache component views that utilize the
Use Django cache for storing component state when available
Add support for Django 2.2.x
Bug fix: Prevent disabled polls from firing at all.
Use type hints to cast fields to primitive Python types if possible.
Re-implemented how action method parsing is done to remove all edge cases when passing arguments to component view methods. (@frbor).
Add support for passing kwargs to component view methods.
startunicornmanagement command (#142)
Only send updated data back in the response to reduce network latency.
Experimental support for queuing up requests to alleviate race conditions when functions take a long time to process.
Bug fix: prevent race condition where an instantiated component class would be inadvertently re-used for component views that are slow to render
Bug fix: use the correct component name to call a component method from “outside” the component.
DJANGO_UNICORNsetting has been renamed to
Don’t send the parent context in the response for child components that specify a partial update.
Add support for element models to specify a partial update.
Add support for polls to specify a partial update.
Bug fix: prevent an error when rendering a Django model with a date-related field, but a string value.
Remove stray print statement.
Fix bug where child components would sometimes lose their action events.
Target DOM changes from an action to only a portion of the DOM with partial updates.
Dirty states for when there is a change that hasn’t been synced yet.
Add support for setting multiple classes for loading states.
Attempt to handle when the component gets out of sync with an invalid checksum error.
Performance tweaks when there isn’t a change to a model or dbModel with lazy or defer modifiers.
Add support for child components
Add discard action modifier
Add support for referring to components in a folder structure
Remove restriction that component templates must start with a div
Remove restriction that component root can’t also have
Prevent the currently focused model element from updating after the AJAX request finishes (#100).
Disable poll with a component field
Dynamically change polling options with PollUpdate
Basic support for
Component key to allow disambiguation of components of the same name
Get the last action method’s return value
Fix encoding issue with default component template on Windows (#91)
Fix circular import when creating the component (#92)
Support nested properties when using the set shortcut.
Fix action string arguments that would get spaces removed inadvertently.
Use LRU cache for constructed components to prevent ever-expanding memory.
Fix bug to handle floats so that they don’t lose precision when serialized to JSON.
Fix bug to handle related models (ForeignKeys, OneToOne, etc) fields in Django models.
Add support for passing kwargs into the component on the template
Provide access to the current request in the component’s methods
Fix: Prevent Django
CharFieldform field from stripping whitespaces when used for validation.
Fix: Handle edge case that would generate a null exception.
Fix: Only change loading state when an action method gets called, not on every event fire.
Handle child elements triggering an event which should be handled by a parent unicorn element.
Fix: certain actions weren’t triggering model values to get set correctly
Loading states for improved UX.
$eventspecial argument for
APPSsetting for determing where to look for components.
Add support for parent elements for non-db models.
Fix: Handle if
Metadoesn’t exist for db models.
Fix bug where multiple actions would trigger multiple payloads.
Handle lazy models that are children of an action model better.
Parse action method arguments as basic Python objects
Stop and prevent modifiers on actions
Defer modifier on model
Support for multiple actions on the same element
Use dash for poll timing instead of dot
Attempt to get the CSRF token from the cookie first before looking at the CSRF token.
Fix bug where lazy models weren’t sending values before an action was called
is_validmethod to component to more easily check if a component has validation errors.
Better error message if the CSRF token is not available.
Fix bug where model elements weren’t getting updated values when an action was being called during the same component update.
Fix bug where some action event listeners were duplicated.
More robust fix for de-duping multiple actions.
Fix bug where conditionally added actions didn’t get an event listener.
Fix model sync getting lost when there is an action (issue 39).
Small fix for validations.
Support classes, dictionaries, Django Models, (read-only) Django QuerySets properties on a component.
Debounce modifier to change how fast changes are sent to the backend from
Lazy modifier to listen for
Better support for
Set shortcut for setting properties.
Listen for any valid event, not just
Better handling for model updates when element ids aren’t unique.
Add mount hook.
Add reset action.
Remove lag when typing fast in a text input and overall improved performance.
Better error handling for exceptional cases.
UnicornViewto follow the conventions of class-based views.
Initial version with basic functionality.