{
  "$schema": "https://json.schemastore.org/web-types",
  "name": "@optionfactory/fml",
  "version": "8.0.3",
  "description-markup": "none",
  "contributions": {
    "html": {
      "elements": [
        {
          "name": "ful-spinner",
          "description": "A busy indicator. ful-form shows and hides the ones it contains while submitting.",
          "attributes": [],
          "slots": [
            {
              "name": "default",
              "description": "Text shown next to the spinner."
            }
          ],
          "events": []
        },
        {
          "name": "ful-form",
          "description": "Wraps its content in a form, collects the values of the fields it contains and hands them to a loader on submit.",
          "attributes": [],
          "slots": [],
          "events": [
            {
              "name": "submit",
              "description": "Cancelable. Fired before anything is sent: preventDefault aborts the submit."
            },
            {
              "name": "submit:requested",
              "description": "Fired after the submit was accepted, to let a listener resolve the response itself."
            },
            {
              "name": "submit:success",
              "description": "Fired with the submitted values and the mapped response."
            },
            {
              "name": "submit:failure",
              "description": "Fired with the exception when the submit fails. The form does not rethrow."
            }
          ]
        },
        {
          "name": "ful-checkbox",
          "description": "A checkbox, or a switch with type=\"switch\". Disabled follows native semantics: the attribute is the field's own claim, honored together with a disabled fieldset ancestry through :disabled, while the property reflects the claim only.",
          "attributes": [
            {
              "name": "value",
              "description": "Checked when the attribute is the string true.",
              "value": {
                "kind": "plain",
                "type": "boolean"
              }
            },
            {
              "name": "readonly",
              "description": "Renders the control but does not let it be edited. A readonly field still contributes its value to the form.",
              "value": {
                "kind": "plain",
                "type": "boolean"
              }
            },
            {
              "name": "required",
              "description": "Marks the field as required for assistive technologies and shows the required marker on its label.",
              "value": {
                "kind": "plain",
                "type": "boolean"
              }
            }
          ],
          "slots": [
            {
              "name": "default",
              "description": "The label of the field."
            },
            {
              "name": "info",
              "description": "Extra content rendered next to the label, for a hint or a help icon."
            }
          ],
          "events": [
            {
              "name": "change",
              "description": "Fired with the new checked state when the box or its label is clicked."
            }
          ]
        },
        {
          "name": "ful-input",
          "description": "A labelled text input. Use type to pick any native input type, or textarea. Disabled follows native semantics: the attribute is the field's own claim, honored together with a disabled fieldset ancestry through :disabled, while the property reflects the claim only.",
          "attributes": [
            {
              "name": "value",
              "description": "The current value.",
              "value": {
                "kind": "plain",
                "type": "string"
              }
            },
            {
              "name": "readonly",
              "description": "Renders the control but does not let it be edited. A readonly field still contributes its value to the form.",
              "value": {
                "kind": "plain",
                "type": "boolean"
              }
            },
            {
              "name": "required",
              "description": "Marks the field as required for assistive technologies and shows the required marker on its label.",
              "value": {
                "kind": "plain",
                "type": "boolean"
              }
            },
            {
              "name": "placeholder",
              "description": "Placeholder shown while the field is empty.",
              "value": {
                "kind": "plain",
                "type": "string"
              }
            }
          ],
          "slots": [
            {
              "name": "default",
              "description": "The label of the field."
            },
            {
              "name": "info",
              "description": "Extra content rendered next to the label, for a hint or a help icon."
            },
            {
              "name": "ibefore",
              "description": "An addon rendered inside the input group, before the control."
            },
            {
              "name": "before",
              "description": "Content rendered before the control, outside the addon styling."
            },
            {
              "name": "after",
              "description": "Content rendered after the control, outside the addon styling."
            },
            {
              "name": "iafter",
              "description": "An addon rendered inside the input group, after the control."
            }
          ],
          "events": [
            {
              "name": "change",
              "description": "Fired with the current value when the field is committed."
            }
          ]
        },
        {
          "name": "ful-input-file",
          "description": "A file input with an optional dropzone and a list of the selected files, enforcing the size and count limits it declares. Disabled follows native semantics: the attribute is the field's own claim, honored together with a disabled fieldset ancestry through :disabled, while the property reflects the claim only.",
          "attributes": [
            {
              "name": "value",
              "description": "Only an empty value is honoured, to clear the selection: file inputs cannot be filled programmatically.",
              "value": {
                "kind": "plain",
                "type": "string"
              }
            },
            {
              "name": "readonly",
              "description": "Renders the control but does not let it be edited. A readonly field still contributes its value to the form.",
              "value": {
                "kind": "plain",
                "type": "boolean"
              }
            },
            {
              "name": "required",
              "description": "Marks the field as required for assistive technologies and shows the required marker on its label.",
              "value": {
                "kind": "plain",
                "type": "boolean"
              }
            },
            {
              "name": "placeholder",
              "description": "Placeholder shown while the field is empty.",
              "value": {
                "kind": "plain",
                "type": "string"
              }
            },
            {
              "name": "accept",
              "description": "Comma separated list of accepted extensions. Files that do not match are dropped with a warning.",
              "value": {
                "kind": "plain",
                "type": "string"
              }
            },
            {
              "name": "multiple",
              "description": "Allows selecting more than one file.",
              "value": {
                "kind": "plain",
                "type": "boolean"
              }
            },
            {
              "name": "itemlist",
              "description": "Shows the list of selected files.",
              "value": {
                "kind": "plain",
                "type": "boolean"
              }
            },
            {
              "name": "dropzone",
              "description": "Shows the dropzone.",
              "value": {
                "kind": "plain",
                "type": "boolean"
              }
            },
            {
              "name": "maxfiles",
              "description": "Maximum number of files. Exceeding it clears the selection.",
              "value": {
                "kind": "plain",
                "type": "number"
              }
            },
            {
              "name": "maxfilesize",
              "description": "Maximum size of a single file, in bytes. Larger files are dropped.",
              "value": {
                "kind": "plain",
                "type": "number"
              }
            },
            {
              "name": "maxtotalsize",
              "description": "Maximum size of all the selected files, in bytes. Exceeding it clears the selection.",
              "value": {
                "kind": "plain",
                "type": "number"
              }
            }
          ],
          "slots": [
            {
              "name": "default",
              "description": "The label of the field."
            },
            {
              "name": "info",
              "description": "Extra content rendered next to the label, for a hint or a help icon."
            },
            {
              "name": "ibefore",
              "description": "An addon rendered inside the input group, before the control."
            },
            {
              "name": "before",
              "description": "Content rendered before the control, outside the addon styling."
            },
            {
              "name": "after",
              "description": "Content rendered after the control, outside the addon styling."
            },
            {
              "name": "iafter",
              "description": "An addon rendered inside the input group, after the control."
            },
            {
              "name": "dropzone",
              "description": "Replaces the contents of the default dropzone."
            }
          ],
          "events": [
            {
              "name": "change",
              "description": "Fired with the names of the selected files."
            }
          ]
        },
        {
          "name": "ful-local-date",
          "description": "Formats the date in its content, written as yyyy-mm-dd, in the locale of the page.",
          "attributes": [],
          "slots": [],
          "events": []
        },
        {
          "name": "ful-instant",
          "description": "Formats the ISO instant in its content in the locale and timezone of the page.",
          "attributes": [],
          "slots": [],
          "events": []
        },
        {
          "name": "ful-input-local-date",
          "description": "A date input. Its bounds accept a date, now, or an offset such as +1d, -2m or +3y. Disabled follows native semantics: the attribute is the field's own claim, honored together with a disabled fieldset ancestry through :disabled, while the property reflects the claim only.",
          "attributes": [
            {
              "name": "value",
              "description": "The current value.",
              "value": {
                "kind": "plain",
                "type": "string"
              }
            },
            {
              "name": "readonly",
              "description": "Renders the control but does not let it be edited. A readonly field still contributes its value to the form.",
              "value": {
                "kind": "plain",
                "type": "boolean"
              }
            },
            {
              "name": "required",
              "description": "Marks the field as required for assistive technologies and shows the required marker on its label.",
              "value": {
                "kind": "plain",
                "type": "boolean"
              }
            },
            {
              "name": "placeholder",
              "description": "Placeholder shown while the field is empty.",
              "value": {
                "kind": "plain",
                "type": "string"
              }
            },
            {
              "name": "min",
              "description": "Earliest selectable date. Accepts a date, now, or a day, month or year offset.",
              "value": {
                "kind": "plain",
                "type": "string"
              }
            },
            {
              "name": "max",
              "description": "Latest selectable date. Accepts a date, now, or a day, month or year offset.",
              "value": {
                "kind": "plain",
                "type": "string"
              }
            },
            {
              "name": "step",
              "description": "Step between selectable dates, in days.",
              "value": {
                "kind": "plain",
                "type": "string"
              }
            }
          ],
          "slots": [
            {
              "name": "default",
              "description": "The label of the field."
            },
            {
              "name": "info",
              "description": "Extra content rendered next to the label, for a hint or a help icon."
            },
            {
              "name": "ibefore",
              "description": "An addon rendered inside the input group, before the control."
            },
            {
              "name": "before",
              "description": "Content rendered before the control, outside the addon styling."
            },
            {
              "name": "after",
              "description": "Content rendered after the control, outside the addon styling."
            },
            {
              "name": "iafter",
              "description": "An addon rendered inside the input group, after the control."
            }
          ],
          "events": [
            {
              "name": "change",
              "description": "Fired with the current date."
            }
          ]
        },
        {
          "name": "ful-input-local-time",
          "description": "A time input. Its bounds accept a time, now, or an hour or minute offset, snapped to the step grid. Disabled follows native semantics: the attribute is the field's own claim, honored together with a disabled fieldset ancestry through :disabled, while the property reflects the claim only.",
          "attributes": [
            {
              "name": "value",
              "description": "The current value.",
              "value": {
                "kind": "plain",
                "type": "string"
              }
            },
            {
              "name": "readonly",
              "description": "Renders the control but does not let it be edited. A readonly field still contributes its value to the form.",
              "value": {
                "kind": "plain",
                "type": "boolean"
              }
            },
            {
              "name": "required",
              "description": "Marks the field as required for assistive technologies and shows the required marker on its label.",
              "value": {
                "kind": "plain",
                "type": "boolean"
              }
            },
            {
              "name": "placeholder",
              "description": "Placeholder shown while the field is empty.",
              "value": {
                "kind": "plain",
                "type": "string"
              }
            },
            {
              "name": "min",
              "description": "Earliest selectable time. Accepts a time, now, or an offset such as +2h or -30m.",
              "value": {
                "kind": "plain",
                "type": "string"
              }
            },
            {
              "name": "max",
              "description": "Latest selectable time. Accepts a time, now, or an offset such as +2h or -30m.",
              "value": {
                "kind": "plain",
                "type": "string"
              }
            },
            {
              "name": "step",
              "description": "Step between selectable times, in seconds. The bounds are truncated to this grid.",
              "value": {
                "kind": "plain",
                "type": "string"
              }
            }
          ],
          "slots": [
            {
              "name": "default",
              "description": "The label of the field."
            },
            {
              "name": "info",
              "description": "Extra content rendered next to the label, for a hint or a help icon."
            },
            {
              "name": "ibefore",
              "description": "An addon rendered inside the input group, before the control."
            },
            {
              "name": "before",
              "description": "Content rendered before the control, outside the addon styling."
            },
            {
              "name": "after",
              "description": "Content rendered after the control, outside the addon styling."
            },
            {
              "name": "iafter",
              "description": "An addon rendered inside the input group, after the control."
            }
          ],
          "events": [
            {
              "name": "change",
              "description": "Fired with the current time."
            }
          ]
        },
        {
          "name": "ful-input-instant",
          "description": "A datetime input whose value is read and written as an ISO instant. Disabled follows native semantics: the attribute is the field's own claim, honored together with a disabled fieldset ancestry through :disabled, while the property reflects the claim only.",
          "attributes": [
            {
              "name": "value",
              "description": "The current value.",
              "value": {
                "kind": "plain",
                "type": "string"
              }
            },
            {
              "name": "readonly",
              "description": "Renders the control but does not let it be edited. A readonly field still contributes its value to the form.",
              "value": {
                "kind": "plain",
                "type": "boolean"
              }
            },
            {
              "name": "required",
              "description": "Marks the field as required for assistive technologies and shows the required marker on its label.",
              "value": {
                "kind": "plain",
                "type": "boolean"
              }
            },
            {
              "name": "placeholder",
              "description": "Placeholder shown while the field is empty.",
              "value": {
                "kind": "plain",
                "type": "string"
              }
            },
            {
              "name": "min",
              "description": "Earliest selectable instant, as an ISO instant.",
              "value": {
                "kind": "plain",
                "type": "string"
              }
            },
            {
              "name": "max",
              "description": "Latest selectable instant, as an ISO instant.",
              "value": {
                "kind": "plain",
                "type": "string"
              }
            },
            {
              "name": "step",
              "description": "Step between selectable instants, in seconds.",
              "value": {
                "kind": "plain",
                "type": "string"
              }
            }
          ],
          "slots": [
            {
              "name": "default",
              "description": "The label of the field."
            },
            {
              "name": "info",
              "description": "Extra content rendered next to the label, for a hint or a help icon."
            },
            {
              "name": "ibefore",
              "description": "An addon rendered inside the input group, before the control."
            },
            {
              "name": "before",
              "description": "Content rendered before the control, outside the addon styling."
            },
            {
              "name": "after",
              "description": "Content rendered after the control, outside the addon styling."
            },
            {
              "name": "iafter",
              "description": "An addon rendered inside the input group, after the control."
            }
          ],
          "events": [
            {
              "name": "change",
              "description": "Fired with the current instant."
            }
          ]
        },
        {
          "name": "ful-radio-group",
          "description": "A group of radios, declared as ful-radio children. With type=\"boolean\" the value is a real boolean. Disabled follows native semantics: the attribute is the field's own claim, honored together with a disabled fieldset ancestry through :disabled, while the property reflects the claim only.",
          "attributes": [
            {
              "name": "value",
              "description": "The value of the selected radio.",
              "value": {
                "kind": "plain",
                "type": "string"
              }
            },
            {
              "name": "readonly",
              "description": "Renders the control but does not let it be edited. A readonly field still contributes its value to the form.",
              "value": {
                "kind": "plain",
                "type": "boolean"
              }
            },
            {
              "name": "required",
              "description": "Marks the field as required for assistive technologies and shows the required marker on its label.",
              "value": {
                "kind": "plain",
                "type": "boolean"
              }
            }
          ],
          "slots": [
            {
              "name": "default",
              "description": "The legend of the group, and its ful-radio children."
            },
            {
              "name": "header",
              "description": "Content rendered above the radios."
            },
            {
              "name": "footer",
              "description": "Content rendered below the radios."
            }
          ],
          "events": [
            {
              "name": "change",
              "description": "Fired with the value of the selected radio."
            }
          ]
        },
        {
          "name": "ful-table",
          "description": "A table that loads its rows from a loader, with sorting, pagination and an optional filter form. Its columns are declared in a schema slot.",
          "attributes": [],
          "slots": [
            {
              "name": "filters",
              "description": "Fields wrapped in a ful-form, submitted to filter the table."
            },
            {
              "name": "caption",
              "description": "The caption of the table."
            },
            {
              "name": "footer",
              "description": "Content rendered in the table footer."
            }
          ],
          "events": []
        },
        {
          "name": "ful-pagination",
          "description": "The pager of a ful-table. Rarely used on its own.",
          "attributes": [
            {
              "name": "total",
              "description": "Number of pages.",
              "value": {
                "kind": "plain",
                "type": "number"
              }
            },
            {
              "name": "current",
              "description": "Zero based index of the page being shown.",
              "value": {
                "kind": "plain",
                "type": "number"
              }
            }
          ],
          "slots": [],
          "events": [
            {
              "name": "page-requested",
              "description": "Fired with the zero based index of the page the user asked for."
            }
          ]
        },
        {
          "name": "ful-sorter",
          "description": "The sort control rendered in a ful-table header. Rarely used on its own.",
          "attributes": [
            {
              "name": "order",
              "description": "The sort currently applied, asc or desc, or absent when unsorted.",
              "value": {
                "kind": "plain",
                "type": "string"
              }
            }
          ],
          "slots": [],
          "events": [
            {
              "name": "sort-requested",
              "description": "Fired with the sorter and the next order when clicked."
            }
          ]
        },
        {
          "name": "ful-filter-instant",
          "description": "A ful-table filter over an instant, with an operator and one or two bounds. Disabled follows native semantics: the attribute is the field's own claim, honored together with a disabled fieldset ancestry through :disabled, while the property reflects the claim only.",
          "attributes": [
            {
              "name": "value",
              "description": "JSON tuple of the operator and its bounds, for example [\"BETWEEN\", from, to].",
              "value": {
                "kind": "plain",
                "type": "string"
              }
            },
            {
              "name": "readonly",
              "description": "Renders the control but does not let it be edited. A readonly field still contributes its value to the form.",
              "value": {
                "kind": "plain",
                "type": "boolean"
              }
            },
            {
              "name": "required",
              "description": "Marks the field as required for assistive technologies and shows the required marker on its label.",
              "value": {
                "kind": "plain",
                "type": "boolean"
              }
            },
            {
              "name": "placeholder",
              "description": "Placeholder shown while the field is empty.",
              "value": {
                "kind": "plain",
                "type": "string"
              }
            }
          ],
          "slots": [
            {
              "name": "default",
              "description": "The label of the field."
            },
            {
              "name": "info",
              "description": "Extra content rendered next to the label, for a hint or a help icon."
            },
            {
              "name": "ibefore",
              "description": "An addon rendered inside the input group, before the control."
            },
            {
              "name": "before",
              "description": "Content rendered before the control, outside the addon styling."
            },
            {
              "name": "after",
              "description": "Content rendered after the control, outside the addon styling."
            },
            {
              "name": "iafter",
              "description": "An addon rendered inside the input group, after the control."
            }
          ],
          "events": [
            {
              "name": "change",
              "description": "Fired with the whole tuple, or undefined when the filter is incomplete."
            }
          ]
        },
        {
          "name": "ful-filter-local-date",
          "description": "A ful-table filter over a date, with an operator and one or two bounds. Disabled follows native semantics: the attribute is the field's own claim, honored together with a disabled fieldset ancestry through :disabled, while the property reflects the claim only.",
          "attributes": [
            {
              "name": "value",
              "description": "JSON tuple of the operator and its bounds, for example [\"BETWEEN\", from, to].",
              "value": {
                "kind": "plain",
                "type": "string"
              }
            },
            {
              "name": "readonly",
              "description": "Renders the control but does not let it be edited. A readonly field still contributes its value to the form.",
              "value": {
                "kind": "plain",
                "type": "boolean"
              }
            },
            {
              "name": "required",
              "description": "Marks the field as required for assistive technologies and shows the required marker on its label.",
              "value": {
                "kind": "plain",
                "type": "boolean"
              }
            },
            {
              "name": "placeholder",
              "description": "Placeholder shown while the field is empty.",
              "value": {
                "kind": "plain",
                "type": "string"
              }
            }
          ],
          "slots": [
            {
              "name": "default",
              "description": "The label of the field."
            },
            {
              "name": "info",
              "description": "Extra content rendered next to the label, for a hint or a help icon."
            },
            {
              "name": "ibefore",
              "description": "An addon rendered inside the input group, before the control."
            },
            {
              "name": "before",
              "description": "Content rendered before the control, outside the addon styling."
            },
            {
              "name": "after",
              "description": "Content rendered after the control, outside the addon styling."
            },
            {
              "name": "iafter",
              "description": "An addon rendered inside the input group, after the control."
            }
          ],
          "events": [
            {
              "name": "change",
              "description": "Fired with the whole tuple, or undefined when the filter is incomplete."
            }
          ]
        },
        {
          "name": "ful-filter-text",
          "description": "A ful-table filter over text, with an operator such as CONTAINS or STARTS_WITH. Disabled follows native semantics: the attribute is the field's own claim, honored together with a disabled fieldset ancestry through :disabled, while the property reflects the claim only.",
          "attributes": [
            {
              "name": "value",
              "description": "JSON tuple of the operator, the sensitivity and the text.",
              "value": {
                "kind": "plain",
                "type": "string"
              }
            },
            {
              "name": "readonly",
              "description": "Renders the control but does not let it be edited. A readonly field still contributes its value to the form.",
              "value": {
                "kind": "plain",
                "type": "boolean"
              }
            },
            {
              "name": "required",
              "description": "Marks the field as required for assistive technologies and shows the required marker on its label.",
              "value": {
                "kind": "plain",
                "type": "boolean"
              }
            },
            {
              "name": "placeholder",
              "description": "Placeholder shown while the field is empty.",
              "value": {
                "kind": "plain",
                "type": "string"
              }
            }
          ],
          "slots": [
            {
              "name": "default",
              "description": "The label of the field."
            },
            {
              "name": "info",
              "description": "Extra content rendered next to the label, for a hint or a help icon."
            },
            {
              "name": "ibefore",
              "description": "An addon rendered inside the input group, before the control."
            },
            {
              "name": "before",
              "description": "Content rendered before the control, outside the addon styling."
            },
            {
              "name": "after",
              "description": "Content rendered after the control, outside the addon styling."
            },
            {
              "name": "iafter",
              "description": "An addon rendered inside the input group, after the control."
            }
          ],
          "events": [
            {
              "name": "change",
              "description": "Fired with the whole tuple, or undefined when the filter is empty."
            }
          ]
        },
        {
          "name": "ful-select",
          "description": "A combobox backed by a loader, with badges for the current selection. Disabled follows native semantics: the attribute is the field's own claim, honored together with a disabled fieldset ancestry through :disabled, while the property reflects the claim only.",
          "attributes": [
            {
              "name": "value",
              "description": "The selected key, or a comma separated list of keys when multiple.",
              "value": {
                "kind": "plain",
                "type": "string"
              }
            },
            {
              "name": "readonly",
              "description": "Renders the control but does not let it be edited. A readonly field still contributes its value to the form.",
              "value": {
                "kind": "plain",
                "type": "boolean"
              }
            },
            {
              "name": "required",
              "description": "Marks the field as required for assistive technologies and shows the required marker on its label.",
              "value": {
                "kind": "plain",
                "type": "boolean"
              }
            },
            {
              "name": "itemlist",
              "description": "Shows the selection as a list under the control as well as badges.",
              "value": {
                "kind": "plain",
                "type": "boolean"
              }
            }
          ],
          "slots": [
            {
              "name": "default",
              "description": "The label of the field."
            },
            {
              "name": "info",
              "description": "Extra content rendered next to the label, for a hint or a help icon."
            },
            {
              "name": "ibefore",
              "description": "An addon rendered inside the input group, before the control."
            },
            {
              "name": "before",
              "description": "Content rendered before the control, outside the addon styling."
            },
            {
              "name": "dropdown",
              "description": "Replaces the template used to render the options."
            },
            {
              "name": "after",
              "description": "Content rendered after the control, outside the addon styling."
            },
            {
              "name": "iafter",
              "description": "An addon rendered inside the input group, after the control."
            }
          ],
          "events": [
            {
              "name": "change",
              "description": "Fired with the selection, an array when multiple."
            }
          ]
        },
        {
          "name": "ful-dropdown",
          "description": "The options popup of a ful-select. Rarely used on its own.",
          "attributes": [],
          "slots": [],
          "events": [
            {
              "name": "change",
              "description": "Fired with the option that was picked."
            }
          ]
        }
      ]
    }
  }
}
