1.2.4 • Published 3 months ago

@highlight-ui/toggle v1.2.4

Weekly downloads
-
License
MIT
Repository
-
Last release
3 months ago

npm personio.design storybook.personio.design

@highlight-ui/toggle

A two-state switch which allows turning a certain option on or off.

Features

  • Controlled component
  • Ability to disable via prop
  • Supports customization through CSS classes
  • Optional title and subtitle to render on the left hand side of the component

Installation

Using npm:

npm install @highlight-ui/toggle

Using yarn

yarn add @highlight-ui/toggle

Using pnpm:

pnpm install @highlight-ui/toggle

In your (S)CSS file:

@import url('@highlight-ui/toggle');

Once the package is installed, you can import the library:

import { Toggle } from '@highlight-ui/toggle';

Usage

import React, { useState } from 'react';
import { Toggle } from '@highlight-ui/toggle';

export default function ToggleExample() {
    const [toggleStatus, setToggleStatus] = useState(false);

    return (
        <Toggle
            title="I am the title"
            subTitle="I am the subtitle"
            checked={toggleStatus}
            onToggle={() => setToggleStatus(!toggleStatus)}
        />
    );
}

Advanced usage

Customizing through a CSS class name

Use the className prop to customize the component through CSS classes.

import React, { useState } from 'react';
import { Toggle } from '@highlight-ui/toggle';
import styles from './customStyles.scss';

export default function CustomisedToggleExample() {
  const [toggleStatus, setToggleStatus] = useState(false);

  return (
        <Toggle 
            className={styles.wrappedText} 
            checked={toggleStatus}
            onToggle={() => setToggleStatus(!toggleStatus)}
        />
    );
}

Props 📜

To ensure that the toggle input is consistently controlled through its lifecycle, an initial checked value and onToggle callback must be provided.

PropTypeRequiredDefaultDescription
checkedbooleanYesWhether the toggle is on or off.
onTogglefunction(e: MouseEvent): voidYesFunction called when the toggle input is clicked on.
classNamestringNoundefinedAllows providing a custom class name
disabledbooleanNofalseWhether the toggle is disabled
idstringNoundefinedID to apply to the toggle input
titlestringNoundefinedText displayed next to the toggle input. Must be used alongside subTitle.
subTitlestringNoundefinedText displayed next to the toggle input. Must be used alongside title.

Accessibility ♿️

At the time of writing, it follows the same base accesibility guidelines as the @highlight-ui/checkbox component.

Testing

There are a number of unit tests covering the Toggle, where the snippets below can serve as a base to expand future testing if new behaviours are added.

The relevant render methods provide the option to add or override prop values.

import React from 'react';
import { render } from '@testing-library/react';
import { Toggle, ToggleProps } from '@highlight-ui/toggle';

function renderToggle(props: ToggleProps) {
    render(<Toggle {...props} />);
}

describe('ToggleTest', () => {
    it('toggle test description', () => {
        const onToggle = jest.fn();
        renderToggle({ checked: true, onToggle });
        // write your expect here
    });
});

Place in design system 💻

When there are mutually exclusive choices or functionalities that need to be toggled, it can also be interchanged with the radio button.

Contributing 🖌️

Please visit personio.design for usage guidelines and visual examples.

If you're interested in contributing, please visit our contribution page.

1.2.4

3 months ago

1.2.3

5 months ago

1.2.0

7 months ago

1.1.29

10 months ago

1.1.28

10 months ago

1.2.2

7 months ago

1.2.1

7 months ago

1.1.30

10 months ago

1.1.34

9 months ago

1.1.33

9 months ago

1.1.32

9 months ago

1.1.31

9 months ago

1.1.38

8 months ago

1.1.37

8 months ago

1.1.36

9 months ago

1.1.35

9 months ago

1.1.39

8 months ago

1.1.41

7 months ago

1.1.40

8 months ago

1.1.44

7 months ago

1.1.43

7 months ago

1.1.42

7 months ago

1.2.0-r18.0

8 months ago

1.1.23

10 months ago

1.1.22

10 months ago

1.1.21

10 months ago

1.1.27

10 months ago

1.1.26

10 months ago

1.1.25

10 months ago

1.1.24

10 months ago

1.1.19

12 months ago

1.1.18

12 months ago

1.1.17

12 months ago

1.1.20

12 months ago

1.1.16

12 months ago

1.1.15

12 months ago

1.1.9

1 year ago

1.1.12

1 year ago

1.1.11

1 year ago

1.1.10

1 year ago

1.1.14

1 year ago

1.1.13

1 year ago

1.1.8

1 year ago

1.1.7

1 year ago

1.1.6

1 year ago

1.1.5

1 year ago

1.1.4

1 year ago

1.1.3

1 year ago

1.1.2

1 year ago

1.1.1

1 year ago

1.1.0

1 year ago