Metadata-Version: 2.1
Name: coral-formsets
Version: 0.1.1
Summary: Coral formsets
Home-page: https://github.com/coral-sistemas/coral-formsets
License: GPL-3.0-only
Keywords: django,formsets,javascript
Author: Cleiton Lima
Author-email: cleiton.limapin@gmail.com
Requires-Python: >=3.7,<4.0
Classifier: Development Status :: 5 - Production/Stable
Classifier: Framework :: Django :: 2.2
Classifier: Framework :: Django :: 3.2
Classifier: Framework :: Django :: 4.0
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
Classifier: Natural Language :: English
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Requires-Dist: Django (>=2.2)
Project-URL: Documentation, https://github.com/coral-sistemas/coral-formsets#coral-formsets
Project-URL: Repository, https://github.com/coral-sistemas/coral-formsets
Description-Content-Type: text/markdown

# coral-formsets

Extensão para manipular o frontend usando Django [FormSets](https://docs.djangoproject.com/en/dev/topics/forms/formsets/).

Não tem dependência com outro framework/biblioteca javascript.

## Documentation

### Installation

Para instalar coral-formsets:

```shell
pip install coral-formsets
```

Adicione `coral_formsets` em `INSTALLED_APPS`:

```python
INSTALLED_APPS = [
    # other apps
    "coral_formsets",
]
```

### Usage

No seu html adicione o `js` como no exemplo abaixo.  
Nesse exeplo `yourapp/form.html` é um arquivo referente ao template do seu form, isso garante mais clareza ao seu código:

```html
<!-- yourapp/form.html -->
<div data-form>
  <div style="display: none">{{ form.DELETE }}{{ form.id }}</div>
  {{ form.as_p }}
  <button data-delete>
    delete form
  </button>
</div>
```

```html
<!-- yourapp/view.html -->
{% load static coral_formset_tags %}
<!DOCTYPE html>
<html>
<body>
  <div data-formset>
    {% render_empty_form_template 'yourapp/form.html' formset as empty_form %}

    {{ formset.management_form }}

    <div data-body>
      {% for form in formset %}
        {% include 'yourapp/form.html' with form=form %}
      {% endfor %}
    </div>

    <button class="formset"
            data-empty-form="{{ empty_form }}"
            data-prefix="{{ formset.prefix }}">
      Add form
    </button>
  </div>

  <script src="{% static 'coral_formsets/js/FormSet.js' %}"></script>
  <script>
    document.querySelectorAll('.formset').forEach(el => {
      new window.coral.FormSet(el);
    });
  </script>
</body>
</html>
```

A templatetag `render_empty_form_template` irá transformar o seu `formset.empty_form` em texto, para depois fazer a inserção do novo form via javascript.

