consul/ui/packages/consul-ui/app/components/error-state
John Cowen 2c1eb052e3
ui: Various empty state improvements/fixups (#11892)
* ui: Add login button to per service intentions for zero results

* Add login button and consistent header for when you have zero nodes

* `services` doesn't exists use `items` consequently:

Previous to this fix we would not show a more tailored message for when
you empty result set was due to a user search rather than an empty
result set straight from the backend

* Fix `error` > `@error` in ErrorState plus code formatting and more docs

* Changelog
2021-12-21 06:49:18 +00:00
..
README.mdx
index.hbs

README.mdx

# ErrorState

Consul UIs default 'error state' used when an error is returned form the
backend. This component used `EmptyState` internally, so please refer to that
for more details.

Using this component for all of our errors means we can show a consistent
error page for generic errors.

This component show slightly different visuals and copy depending on the
`status` of the error (the status is generally a HTTP error code).

Please note: The examples below use a `hash` for demonstration purposes, you'll
probably just be using an `error` object in real-life.

## Arguments

| Argument | Type | Default | Description |
| --- | --- | --- | --- |
| `login` | `Function` | `undefined` | A login action to call when the login button is pressed (if not provided no login button will be shown  |
| `error` | `Object` | `undefined` | 'Consul UI error shaped' JSON `{status: String, message: String, detail: String}` |

Specifically 403 errors **always** use the same header/body copy, this is hardcoded in and not currently overridable.

```hbs preview-template
<ErrorState
  @error={{hash status='403'}}
/>
```

Other StatusCodes have a global default text but these *are* overridable by using the message/detail properties of the Consul UI shaped errors.

```hbs preview-template
<ErrorState
  @error={{hash
    status='404'
    message="`message` is what is shown in the header"
    detail="`detail` is what shown in the body"
  }}
/>
```

As with `EmptyState` you can optionally chose to show a login button using the
`@login` argument.

```hbs preview-template
<ErrorState
  @error={{hash status='403'}}
  @login={{noop}}
/>
```