# @polymer/iron-form

> Wrapper around native form that submits native and custom elements

Latest version **3.0.1** (published 2018-09-14) · BSD-3-Clause license · 0 weekly downloads

## Install

```sh
npm install @polymer/iron-form
pnpm add @polymer/iron-form
yarn add @polymer/iron-form
bun add @polymer/iron-form
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 3.0.1 |
| Published | 2018-09-14 |
| First published | 2016-02-02 |
| Weekly downloads | 0 |
| License | BSD-3-Clause |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 2 |
| Unpacked size | 46.8 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 63 |
| Author | The Polymer Authors |
| Maintainers | aomarks, azakus, bicknellr, emarquez, justinfagnani, keanulee, notwaldorf, polymer-devs, samli, sorvell, usergenic |
| Keywords | web-components, polymer, form |

## Links

- npm: https://www.npmjs.com/package/@polymer/iron-form
- Repository: https://github.com/PolymerElements/iron-form
- Issues: https://github.com/PolymerElements/iron-form/issues
- npm.io page: https://npm.io/package/@polymer/iron-form

## Dependencies (2)

- [@polymer/polymer](https://npm.io/package/@polymer/polymer.md) ^3.0.0
- [@polymer/iron-ajax](https://npm.io/package/@polymer/iron-ajax.md) ^3.0.0-pre.26

## Alternatives

- [mobx-react](https://npm.io/package/mobx-react.md) — 2.8M weekly downloads
- [rc-tree](https://npm.io/package/rc-tree.md) — 2.6M weekly downloads
- [@react-oauth/google](https://npm.io/package/@react-oauth/google.md) — 1.3M weekly downloads
- [@wagmi/connectors](https://npm.io/package/@wagmi/connectors.md) — 877.0K weekly downloads
- [vee-validate](https://npm.io/package/vee-validate.md) — 836.4K weekly downloads

## Recent versions

- 3.0.1 (latest) — 2018-09-14
- 3.0.0-pre.20 (next) — 2018-06-23
- 1.1.4-pre.3 (preview) — 2017-01-24
- 3.0.0 — 2018-09-13
- 3.0.0-pre.26 — 2018-09-12
- 3.0.0-pre.25 — 2018-08-29
- 3.0.0-pre.24 — 2018-08-29
- 3.0.0-pre.23 — 2018-08-25
- 3.0.0-pre.22 — 2018-08-25
- 3.0.0-pre.21 — 2018-06-23
- 3.0.0-pre.19 — 2018-05-09
- 3.0.0-pre.18 — 2018-05-09
- 3.0.0-pre.17 — 2018-05-08
- 3.0.0-pre.16 — 2018-05-04
- 3.0.0-pre.15 — 2018-05-02
- … 17 more at https://npm.io/package/@polymer/iron-form/versions

## README

[![Published on NPM](https://img.shields.io/npm/v/@polymer/iron-form.svg)](https://www.npmjs.com/package/@polymer/iron-form)
[![Build status](https://travis-ci.org/PolymerElements/iron-form.svg?branch=master)](https://travis-ci.org/PolymerElements/iron-form)
[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://webcomponents.org/element/@polymer/iron-form)


## &lt;iron-form&gt;
`<iron-form>` is a wrapper around the HTML `<form>` element, that can
validate and submit both custom and native HTML elements.

It has two modes: if `allow-redirect` is true, then after the form submission you
will be redirected to the server response. Otherwise, if it is false, it will
use an `iron-ajax` element to submit the form contents to the server.

See: [Documentation](https://www.webcomponents.org/element/@polymer/iron-form),
  [Demo](https://www.webcomponents.org/element/@polymer/iron-form/demo/demo/index.html).

## Usage

### Installation
```
npm install --save @polymer/iron-form
```

### In an html file
```html
<html>
  <head>
    <script type="module">
      import '@polymer/iron-form/iron-form.js';
      import '@polymer/paper-checkbox/paper-checkbox.js';
    </script>
  </head>
  <body>
    <iron-form>
      <form method="get" action="/form/handler">
        <input type="text" name="name" value="Batman">
        <input type="checkbox" name="donuts" checked> I like donuts<br>
        <paper-checkbox name="cheese" value="yes" checked></paper-checkbox>
      </form>
    </iron-form>
  </body>
</html>
```
By default, a native `<button>` element (or `input type="submit"`) will submit this form.
However, if you want to submit it from a custom element's click handler, you need to explicitly
call the `iron-form`'s `submit` method:

```html
  <paper-button raised onclick="submitForm()">Submit</paper-button>

  function submitForm() {
    document.getElementById('iron-form').submit();
  }
```

### In a Polymer 3 element
```js
import {PolymerElement, html} from '@polymer/polymer';
import '@polymer/iron-form/iron-form.js';
import '@polymer/paper-checkbox/paper-checkbox.js';

class SampleElement extends PolymerElement {
  static get template() {
    return html`
    <iron-form>
      <form method="get" action="/form/handler">
        <input type="text" name="name" value="Batman">
        <input type="checkbox" name="donuts" checked> I like donuts<br>
        <paper-checkbox name="cheese" value="yes" checked></paper-checkbox>
      </form>
    </iron-form>
    `;
  }
}
customElements.define('sample-element', SampleElement);
```

## Contributing
If you want to send a PR to this element, here are
the instructions for running the tests and demo locally:

### Installation
```sh
git clone https://github.com/PolymerElements/iron-form
cd iron-form
npm install
npm install -g polymer-cli
```

### Running the demo locally
```sh
polymer serve --npm
open http://127.0.0.1:<port>/demo/
```

### Running the tests
```sh
polymer test --npm
```

---
_Source: https://npm.io/package/@polymer/iron-form · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
