dash-holoniq-components 0.0.19
Custom components for Plotly Dash
License: MIT

# dash-holoniq-components

A set of house-keeping components for [Dash][dash-homepage] that make the
implementation of forms and larger, multi-page applications a little easier.

The following components are available:

**Alert** The Alert component is hidden if it has no children. When children are injected the Alert
component sets its style to become visible

**ButtonLink** Allows you to create a clickable link within a multi-page app in
the same way as `dcc.Link`. The standard `dcc.Button` attributes `n_clicks` and `n_clicks_timestamp` have been
added to ButtonLink. These attributes can be used for notification that the `ButtonLink` has
been clicked. `ButtonLink` can be enabled/disabled allowing conditional control of the link via a Dash callback

**Form** The `Form` components normal submit action can be inhibited. The form data, as it would be
reported by the a submit action, is available in a Dash callback via the components `form_data` attribute.

**InputWithIcon** Adds a font awesome glyph and tooltip to the end of a standard input box

**LayoutRouter** The children of LayoutRouter are each wrapped in a Div that is
is hidden/shown based on the current value of the LayoutRouter 'switch' attribute.

The advantage of `LayoutRouter` over the [standard](https://dash.plot.ly/urls) approach to
dynamic layout is that **ALL** the applications layout is rendered, but hidden, when the
Dash application starts. `LayoutRouter` overcomes the problem with the `standard` approach
were callbacks linked to dynamic content are difficult to realise.

**PageTitle** Sets the page title:

**PasswordWithShow** Password input with a show/hide icon that can be clicked to reveal the password

**Location** A modified version of *dash-core-components* Location component. Allows multiple instances
to co-exist. In the *dash-core-components* version the last instance is the only one
to get history event notifications.

**Button**

A modified version of *dash-core-components* Button component. The component
has a boolean *focus* attribute that is set true when the button gains
focus and false when it looses it. The focus attribute can be used in a dash
callback to hide an associated dropdown whenever the user clicks
the application background or makes a selection from the dropdown.

*Example dropdown callback*
```
    @callback(Output(ids.container(MATCH), 'className'),
            Input(ids.button(MATCH), 'n_clicks'),
            Input(ids.button(MATCH), 'focus'),
            State(ids.container(MATCH), 'className'))
    def show_dropdown(button_clicks, button_focus, className):
        logging.info('show_dropdown: button_clicks=%s, className = %s', button_clicks, className)

        if not button_clicks:
            return className

        if 'show' in className and button_focus == False:
            return className.replace(' show', '')
        else:
            return className + ' show'
```
## Installation

### PyPI

You can install *dash-holoniq-components* with `pip`:

```
pip install dash-holoniq-components
```

## Documentation

Head over to the [*README*][docs-homepage] for more details.

## Contributing

The source code for *dash-bootstrap-components* is available
[on GitHub][dhc-repo]. If you find a bug or something is unclear, we encourage
you to raise an issue. We also welcome contributions, to contribute, fork the
repository and open a [pull request][dhc-pulls].


[dash-homepage]: https://dash.plot.ly/
[dhc-repo]: https://github.com/stevej2608/dash-holoniq-components
[docs-homepage]: https://github.com/stevej2608/dash-holoniq-components/blob/master/README.md
[dhc-pulls]: https://github.com/stevej2608/dash-holoniq-components/pulls