Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/metonym/svelte-radio

Declarative Radio button group component for Svelte
https://github.com/metonym/svelte-radio

radio radio-button radio-group svelte svelte-component typescript

Last synced: 2 months ago
JSON representation

Declarative Radio button group component for Svelte

Awesome Lists containing this project

README

        

# svelte-radio

[![NPM][npm]][npm-url]

> Declarative Radio button group component for Svelte.

Try it in the [Svelte REPL](https://svelte.dev/repl/f2b10d0faf2e44fd85a72b06a63ae8c2).

---

## Installation

**Yarn**

```bash
yarn add -D svelte-radio
```

**NPM**

```bash
npm i -D svelte-radio
```

**pnpm**

```bash
pnpm i -D svelte-radio
```

## Usage

By default, this component is _unstyled_.

### Basic

```svelte

import { RadioGroup, Radio } from "svelte-radio";

let value = "1";



value: {value}


(value = "2")}>Set value to "2"
```

### Custom legend

Customize the radio group legend by using the "legend" slot:

```svelte


Radio group legend



```

### Styling

This component is unstyled by design. Use a global class selector to style the `.svelte-radio-group` and `.svelte-radio` classes.

```css
:global(.svelte-radio-group) {
border: 2px solid #e0e0e0;
padding: 1rem;
}

:global(.svelte-radio) {
margin-bottom: 0.5rem;
}

:global(.svelte-radio label) {
margin-left: 0.25rem;
}
```

## API

### `RadioGroup` props

| Name | Type | Default value |
| :----- | :------------------- | :--------------------- |
| legend | `string` | `"Radio group legend"` |
| value | `string` or `number` | `undefined` |

`$$restProps` are forwarded to the top-level `fieldset` element.

### `Radio` props

| Name | Type | Default value |
| :------ | :------------------- | :-------------------------------------- |
| id | `string` | `"radio-" + Math.random().toString(36)` |
| label | `string` | `"Radio button label"` |
| value | `string` or `number` | `""` |
| checked | `boolean` | `false` |

`$$restProps` are forwarded to the second-level `input` element.

## Dispatched events

### `RadioGroup`

- **on:change**: dispatched when the selection changes

```svelte

let events = [];

(events = [...events, e.detail])}
>


{#each events as event}

{JSON.stringify(event, null, 2)}

{/each}
```

## TypeScript

Svelte version 3.31 or greater is required to use this component with TypeScript.

## Changelog

[Changelog](CHANGELOG.md)

## License

[MIT](LICENSE)

[npm]: https://img.shields.io/npm/v/svelte-radio.svg?color=%23ff3e00&style=for-the-badge
[npm-url]: https://npmjs.com/package/svelte-radio