- Raise TableError when accessing non-existent columns on persisted class
- Fix attribute handling for new instances
- Typo in persistence module fixed
- persistence - Define simple classes for use in client side code and have instances of those classes synchronised with data tables rows.
-
add
tag
property to custom components https://anvil.works/forum/t/chip-tag-initialization/15461 -
add
format_selected_text
method override for multi-select-dropdown anvilistas#398 -
add
selected_keys
property for multi-select-dropdown anvilistas#398
navigation
- Add args and kwargs toopen_form
anvilistas#393storage
- fix serialisation of dictionary values anvilistas#395
routing
- fixrouting.ANY
withinurl_keys
anvilistas#388
anvil_extras.uuid
module can be replaced wholesale by uuid from stdlib DeprecatedWarning added touuid.uuid4()
- Some component properties adjusted to type enum so they can be selected, rather than typed, in the designer
uuid
andstorage
will check ifuuid
andlocalforage
are aleady installed before importing them from cdn anvilistas#381
routing
-form.url_dict
will be updated whenredirect=False
anvilistas#374
routing
- remove_from_cache will work across templates anvilistas#367MultiSelectDropDown
- fix setting certain attributes dynamically cause events to stop firing anvilistas#365
augment
ensure that"mouseenter"
is always correct event type in"hover"
events anvilistas#319augment
adjust handling of RadioButton to work correctly with the augment module anvilistas#325routing
- to catch arbirtrary query params in a route useurl_keys=[routing.ANY]
anvilistas#342
augment
- DataGrid's pagination click event prevented other events from being added anvilistas#325MultiSelectDropDown
- all properties are now dynamic and can be updated in code anvilistas#331serialisation
- support accelerated tables with linked columns anvilistas#350navigation
- Now handles links with roles defined when setting 'selected' anvilistas#352popovers
fix bug scrolling on mobile anvilistas#324
MultiSelectDropDown
: addwidth
property with options forfit
andauto
sizing anvilistas#329navigation
- newset_title
function for custom click handlers anvilistas#358
@auto_refreshing
- the original item will now be proxied rather than copied. Changes to the proxied item will make changes to the original item. anvilistas#311MultiSelectDropDown
- the change event will only fire with user interaction. Previously also fired when theselected
property was changed in code. This behaviour now matches other anvil Components - e.g. changing theselected_value
of a DropDown does not fire the DropDown change event. anvilistas#307
- routing - a template argument was added to the
@routing.route
decorator. This argument determines which templates a route can be added to. anvilistas#293 - routing - a tempalate can take multiple paths
@routing.template(path=["admin", "user"])
anvilistas#298 - routing -
@routing.redirect()
decorator added anvilistas#298 - hashlib module added anvilistas#301
utils.import_module
: similar implementation to python'simportlib.import_module
anvilistas#302MultiSelectDropDown
: add eventsopened
andclosed
anvilistas#279
MultiSelectDropDown
: fix change event should only fire on user interaction anvilistas#307@auto_refreshing
: support auto_refreshing when the item is not explicitly set anvilistas#250
- routing - fix regression with before unload anvilistas#289
routing.load_form()
was removed. Userouting.set_url_hash()
instead.
- Popovers - supports changing the default container to something other than
"body"
adddismiss_on_scroll()
andset_default_container()
methods anvilistas#268 - Quill - adds a sanitize property and a sanitize kwarg to the
set_html()
method anvilistas#273 - routing - adds support for multiple top level forms
anvilistas#281
@routing.template(path='', priority=0, condition=None)
A template form is a top level form that holds the header, navigation bar, side panel and an emptycontent_panel
. When navigating the routing module will ensure the correct template is the currentopen_form
based on thepriority
,path
, andcondition
. The currenturl_hash
must start with thepath
, and if acondition
is set it must returnTrue
. Templates are checked order of priority, highest values first.@routing.default_template
replaces@routing.main_router
. The@main_router
decorator is still available.@default_template
is equivalent to@template()
routing.NavigationExit()
when raised within atemplate
'son_navgation
callback, this will prevent therouting
module from changing thecontent_panel
. This is useful if you have aLoginForm
as atemplate
whose content should remain unchanged when the user tries to navigate to otherroutes
.routing.launch()
called within a startup module, replaces the call toopen_form()
.routing.launch()
checks the currenturl_hash
and ensures that the correct template is loaded based on the paramaters of each template. Callingrouting.set_url_hash()
in a Startup Module will have no effect on form loading untilrouting.launch()
has been called. (This allows you to change theurl_hash
within the startup logic)
logging
module anvilistas#282 Small, simple, lightweight API for logging in anvil apps, a bit like the Python logging module. See the docs:
- Multi-select - fix button clicks don't always close the dropdown menu anvilistas#271
- fix bug with
@timed
decorator if used with keyword logger and level arguments anvilistas#282
- Select All functionality added to MultiSelect component
- Dynamic serialisation of data tables rows anvilistas#191
utils.correct_canvas_resolution()
- canvas elements can look blurry on retina displays This function sharpens the resolution of a canvas element when called in the reset event anvilistas#202augment.remove_event_handler()
added to the augment module anvilistas#259- Slider - visual properties -
handle_size
,bar_height
, androle
added anvilistas#261
- storage supports
datetime
anddate
objects anvilistas#179 on_form_load()
can be used in arouting.main_router
Form This method will be fired with the currenturl_hash
and theform
that was added to thecontent_panel
. anvilistas#180animate
duration argument is no longer keyword only i.e.animate(self, fade_in, 300)
is valid anvilistas#182
- MultiSelect component works correctly in a popover anvilistas#187
- popover
is_visible
bug when usingpop("toggle")
anvilistas#199 - Using routing load_from_cache=False to reload the current form works correctly anvilistas#243
- PageBreak retains its thickness in print mode anvilistas#263
-
has_popover()
function added to the popover module anvilistas#171 -
Transition
class in the animate module is more flexible for combining transitions. Some pre-computed transitions adjusted.rotate_in/rotate_out
replaced byrotate
anvilistas#173
- animation module - Wrap the Web Animations API around a convenient set of python tools for anvil anvilistas#169
- MultiSelectDropdown - Fix "Hides menu when component is removed from the page" anvilistas#170
- Pivot - Dynamic pivot table component anvilistas#165
- MultiSelectDropdown - Hides menu when component is removed from the page anvilistas#149
- Popover - content's show and hide events will be triggered when the popover shows and hides anvilistas#150
- Autocomplete - Add missing TextBox properties to design view anvilistas#160
- Quill - dynamically add custom modules anvilistas#117
- routing - adjusts the behaviour of anvil.alert to ensure dismissible alerts are closed on navigation. And navigation prevented for non-dismissible alerts. anvilistas#132
storage.indexed_db
- Now supports the browser'sIndexedDB
with a dictionary like api anvilistas#135- storage - additional store objects can be created inside the browsers
localStorage
orIndexedDB
. e.g.todo_store = indexed_db.get_store('todos')
Each store object behaves like a dictionary object. anvilistas#135 - PageBreak -
border
property added and documentation updated. anvilistas#139
- Autocomplete - can now be used inside an alert anvilistas#114
- Popover - fix stickyhover anvilistas#121
- storage - update and clear were missing from the documented api anvilistas#125
- PageBreak - fix margin_top property and make it optional anvilistas#137
- PageBreak and Multi-select - fix illegal HTML anvilistas#139
- Popover - remove the requirement for delays in show/hide/destroy transitions anvilistas#146
- storage.session_storage was deprecated. Use local_storage instead anvilistas#135
- Slider Component - bump javascript dependency and refactor. No changes to the component's public API. anvilistas#112
- Autocomple - duplicate suggestions are ignored and a warning is printed anvilistas#116
- Popover - documentation added and clone link updated. The example now imports
anvil_extras
anvilistas#121
augment
-add_event_handler()
method added.original_event
passed as anevent_arg
. anvilistas#109
- Add missing support for binding writeback on the Switch component anvilistas#111
- Autocompleter suggestions on mobile anvilistas#103
local_storage
- wrapper around the browser localStorage object anvilistas#93
- Quill editor supports a toolbar and theme set at runtime. anvilistas#80
- Add navigation.go_to function, improved navigation error messages anvilistas#99
- Autocompleter focus method doesn't trigger autocomplete suggestions anvilistas#94
- Improve error reporting when passing an invalid content object to a popover anvilistas#90
- Fixed the publisher.unsubscribe method in the Messaging module, making it functional anvilistas#92
- Fix indeterminate progress bar not always displaying anvilistas#95
- Tabs Component anvilistas#64
- uuid4 in the browser anvilistas#67
- Chip Component and ChipsInput Component anvilistas#68
- AutoComplete Component anvilistas#70
- Improved dynamic designer support for Switch, MultiSelectDropDown, Tabs, Quill and Slider anvilistas#66
- Improved slider formatting anvilistas#61
- Update styling of switch component anvilistas#56
- Include pagination_click event in augment module anvilistas#55
- Slider Component anvilistas#60
- Refactor of progress bars anvilistas#59
- component.trigger('writeback') anvilistas#47
- MultiSelectDropDown component anvilistas#44
- @wait_for_writeback decorator anvilistas#50
- Quill component anvilistas#52
- Switch component anvilistas#31
- Auto Refreshing Item anvilistas#39
- Initial release