From c2fb743ed12592601de17ce03fb75b6cfab3c1e2 Mon Sep 17 00:00:00 2001 From: Eric Doughty-Papassideris Date: Sun, 21 Apr 2024 22:10:39 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=92=84=20front:=20adding=20slider=20like?= =?UTF-8?q?=20checkbox=20(#50)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/atoms/input/input-checkbox-slider.tsx | 17 +++++++++++++++++ .../atoms/input/stories/checkbox.stories.tsx | 10 ++++++++++ 2 files changed, 27 insertions(+) create mode 100644 tdrive/frontend/src/app/atoms/input/input-checkbox-slider.tsx diff --git a/tdrive/frontend/src/app/atoms/input/input-checkbox-slider.tsx b/tdrive/frontend/src/app/atoms/input/input-checkbox-slider.tsx new file mode 100644 index 00000000..8a18fd13 --- /dev/null +++ b/tdrive/frontend/src/app/atoms/input/input-checkbox-slider.tsx @@ -0,0 +1,17 @@ +interface CheckboxSliderProps extends React.InputHTMLAttributes { + checked?: boolean; + disabled?: boolean; +} +/** Just classes up a checkbox to look like a slider. Deviates from onChange etc for + * compatibility with `InputHTMLAttributes`, to expose eg. id to use with htmlFor. + */ +export const CheckboxSlider = (props: CheckboxSliderProps) => + ; diff --git a/tdrive/frontend/src/app/atoms/input/stories/checkbox.stories.tsx b/tdrive/frontend/src/app/atoms/input/stories/checkbox.stories.tsx index 36f624dc..262f8435 100644 --- a/tdrive/frontend/src/app/atoms/input/stories/checkbox.stories.tsx +++ b/tdrive/frontend/src/app/atoms/input/stories/checkbox.stories.tsx @@ -2,6 +2,8 @@ import { ComponentStory } from '@storybook/react'; import { useState } from 'react'; import { Checkbox } from '../input-checkbox'; +import { CheckboxSlider } from '../input-checkbox-slider'; +import { Title } from 'app/atoms/text'; export default { title: '@atoms/checkbox', @@ -30,6 +32,14 @@ const Template: ComponentStory = (props: { label: string; disabled: boolean disabled={props.disabled} label={props.label} /> + + CheckboxSlider + + setChecked(!checked)} + checked={checked} + disabled={props.disabled} + /> ); };