├── py.typed ├── tests ├── __init__.py ├── benchmarks │ ├── __init__.py │ └── serializer │ │ └── __init__.py ├── management │ ├── __init__.py │ └── commands │ │ ├── __init__.py │ │ └── startunicorn │ │ └── __init__.py ├── views │ ├── utils │ │ ├── __init__.py │ │ └── test_construct_model.py │ ├── action_parsers │ │ ├── __init__.py │ │ ├── utils │ │ │ └── __init__.py │ │ └── call_method │ │ │ └── __init__.py │ ├── test_unicorn_model.py │ ├── message │ │ ├── test_get_property_value.py │ │ ├── utils.py │ │ ├── test_sync_input.py │ │ ├── test_toggle.py │ │ └── test_calls.py │ ├── test_is_component_field_model_or_unicorn_field.py │ ├── test_unicorn_dict.py │ ├── test_unicorn_field.py │ ├── test_process_component_request.py │ ├── test_unicorn_view_init.py │ └── test_unicorn_set_property_value.py ├── templates │ ├── test_component.html │ ├── test_component_child.html │ ├── test_component_variable.html │ ├── test_component_args.html │ ├── test_component_model.html │ ├── test_component_kwargs_with_html_entity.html │ ├── test_component_kwargs.html │ ├── test_component_child_implicit.html │ ├── test_component_with_message.html │ ├── test_template.html │ ├── test_parent_template.html │ ├── test_parent_implicit_template.html │ ├── test_component_parent.html │ ├── test_component_parent_implicit.html │ ├── test_component_parent_with_value.html │ └── test_component_target.html ├── components │ ├── test_convert_to_dash_case.py │ ├── test_convert_to_snake_case.py │ ├── test_convert_to_pascal_case.py │ ├── test_create.py │ └── test_is_html_well_formed.py ├── js │ ├── unicorn │ │ ├── init.test.js │ │ ├── getComponent.test.js │ │ └── call.test.js │ ├── utils │ │ ├── contains.test.js │ │ ├── isEmpty.test.js │ │ ├── toKebabCase.test.js │ │ ├── toRegExp.test.js │ │ ├── args.test.js │ │ └── walk.test.js │ ├── element │ │ ├── poll.test.js │ │ ├── setValue.test.js │ │ ├── partial.test.js │ │ ├── init.test.js │ │ ├── visibility.test.js │ │ ├── getValue.test.js │ │ ├── model.test.js │ │ ├── errors.test.js │ │ └── loading.test.js │ └── component │ │ ├── init.test.js │ │ ├── callCalls.test.js │ │ ├── actions.test.js │ │ └── models.test.js ├── urls.py ├── templatetags │ ├── test_unicorn.py │ └── test_unicorn_scripts.py ├── serializer │ ├── test_exclude_field_attributes.py │ └── test_model_value.py ├── call_method_parser │ ├── test_parse_kwarg.py │ └── test_parse_call_method_name.py ├── test_settings.py └── test_model_lifecycle.py ├── .prettierignore ├── django_unicorn ├── __init__.py ├── templatetags │ └── __init__.py ├── views │ └── action_parsers │ │ ├── __init__.py │ │ └── sync_input.py ├── components │ ├── fields.py │ ├── mixins.py │ ├── __init__.py │ └── updaters.py ├── static │ └── unicorn │ │ └── js │ │ ├── .babelrc.json │ │ ├── store.js │ │ ├── morpher.js │ │ ├── morphers │ │ ├── alpine.js │ │ └── morphdom.js │ │ ├── delayers.js │ │ └── attribute.js ├── urls.py ├── templates │ └── unicorn │ │ ├── errors.html │ │ └── scripts.html ├── db.py ├── unicorn-ascii.txt ├── typing.py ├── errors.py └── decorators.py ├── example ├── apps │ ├── __init__.py │ └── main │ │ ├── __init__.py │ │ └── components │ │ └── sidebar_menu.py ├── project │ ├── __init__.py │ ├── wsgi.py │ └── urls.py ├── books │ ├── migrations │ │ ├── __init__.py │ │ ├── 0004_book_type.py │ │ ├── 0001_initial.py │ │ ├── 0002_author.py │ │ └── 0003_auto_20221110_0400.py │ ├── __init__.py │ ├── apps.py │ └── models.py ├── coffee │ ├── migrations │ │ ├── __init__.py │ │ ├── 0002_auto_20201205_1450.py │ │ ├── 0006_favorite.py │ │ ├── 0001_initial.py │ │ ├── 0004_origin_taste.py │ │ ├── 0005_auto_20221110_0400.py │ │ └── 0003_auto_20210128_0140.py │ ├── __init__.py │ ├── apps.py │ ├── admin.py │ ├── management │ │ └── commands │ │ │ └── import_flavors.py │ └── models.py ├── unicorn │ ├── components │ │ ├── nested │ │ │ ├── __init__.py │ │ │ ├── filter.py │ │ │ ├── row.py │ │ │ ├── favorite.py │ │ │ └── table.py │ │ ├── wizard │ │ │ ├── __init__.py │ │ │ ├── step1.py │ │ │ ├── step2.py │ │ │ └── wizard.py │ │ ├── direct_view.py │ │ ├── test_datetime.py │ │ ├── hello_world.py │ │ ├── text_inputs.py │ │ ├── validation.py │ │ ├── redirects.py │ │ ├── todo.py │ │ ├── polling.py │ │ ├── js.py │ │ ├── models.py │ │ ├── html_inputs.py │ │ └── objects.py │ ├── templates │ │ └── unicorn │ │ │ ├── nested │ │ │ ├── favorite.html │ │ │ ├── filter.html │ │ │ ├── row.html │ │ │ └── table.html │ │ │ ├── test-datetime.html │ │ │ ├── direct-view.html │ │ │ ├── wizard │ │ │ ├── step1.html │ │ │ ├── wizard.html │ │ │ └── step2.html │ │ │ ├── redirects.html │ │ │ ├── hello-world-test.html │ │ │ ├── polling.html │ │ │ ├── todo.html │ │ │ ├── validation.html │ │ │ ├── js.html │ │ │ └── models.html │ └── forms.py ├── static │ ├── js │ │ ├── alert.js │ │ └── console.js │ ├── css │ │ └── styles.css │ └── svg │ │ └── oval.svg ├── .watchmanconfig ├── www │ ├── templates │ │ └── www │ │ │ ├── objects.html │ │ │ ├── polling.html │ │ │ ├── models.html │ │ │ ├── js.html │ │ │ ├── wizard.html │ │ │ ├── test-datetime.html │ │ │ ├── validation.html │ │ │ ├── html-inputs.html │ │ │ ├── text-inputs.html │ │ │ ├── nested.html │ │ │ ├── index.html │ │ │ └── base.html │ ├── views.py │ └── urls.py └── manage.py ├── .babelrc ├── img └── unicorn-logo.png ├── .flake8 ├── setup.py ├── .editorconfig ├── .github ├── workflows │ ├── js.yml │ ├── coverage.yml │ ├── python.yml │ └── ci.yml ├── FUNDING.yml └── ISSUE_TEMPLATE │ ├── docs.yml │ ├── features.md │ └── bugs.yml ├── docs ├── Makefile ├── make.bat └── source │ ├── queue-requests.md │ ├── direct-view.md │ ├── custom-morphers.md │ ├── javascript.md │ ├── dirty-states.md │ ├── cli.md │ ├── troubleshooting.md │ ├── visibility.md │ ├── getting-started.md │ ├── partial-updates.md │ ├── messages.md │ ├── installation.md │ └── settings.md ├── .eslintrc.js ├── rollup.config.js ├── badges └── coverage.svg ├── LICENSE ├── SECURITY.md ├── package.json ├── DEVELOPING.md ├── .gitignore ├── CONTRIBUTING.md └── conftest.py /py.typed: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | *.html 2 | -------------------------------------------------------------------------------- /django_unicorn/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /example/apps/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /example/project/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/benchmarks/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/management/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /example/apps/main/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/views/utils/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /example/books/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /example/coffee/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/management/commands/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/views/action_parsers/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | presets: ["env"] 3 | } 4 | -------------------------------------------------------------------------------- /django_unicorn/templatetags/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/benchmarks/serializer/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /django_unicorn/views/action_parsers/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /example/unicorn/components/nested/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /example/unicorn/components/wizard/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/views/action_parsers/utils/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/management/commands/startunicorn/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/views/action_parsers/call_method/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/templates/test_component.html: -------------------------------------------------------------------------------- 1 |
| Name | 31 |Label | 32 |Datetime | 33 |Favorite | 34 |Action | 35 |
8 |
11 | 12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
25 | {% if tasks %} 26 |