From d79f01fd935a64183dc852e047dcf4cc5f8b8e87 Mon Sep 17 00:00:00 2001 From: Nathan Vasse Date: Fri, 19 May 2023 15:28:26 +0200 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8(react)=20add=20the=20possibility=20to?= =?UTF-8?q?=20hide=20select=20label?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Based on recent feedbacks this feature was needed. It is important for the label to still be accessible to screen readers, that's why we introduced the offscreen class. Resolve #60 --- .changeset/young-cats-notice.md | 5 +++ .../components/Forms/LabelledBox/index.scss | 10 +++++ .../Forms/LabelledBox/index.stories.tsx | 38 ++++++++++++++++--- .../components/Forms/LabelledBox/index.tsx | 14 ++++++- .../src/components/Forms/Select/index.mdx | 10 +++++ .../src/components/Forms/Select/index.scss | 9 +++++ .../components/Forms/Select/index.spec.tsx | 32 ++++++++++++++++ .../src/components/Forms/Select/index.tsx | 4 ++ .../components/Forms/Select/mono.stories.tsx | 11 ++++++ packages/react/src/cunningham-tokens.js | 2 +- packages/react/src/cunningham-tokens.ts | 2 +- packages/react/src/index.scss | 1 + packages/react/src/utils/index.scss | 12 ++++++ 13 files changed, 140 insertions(+), 10 deletions(-) create mode 100644 .changeset/young-cats-notice.md create mode 100644 packages/react/src/utils/index.scss diff --git a/.changeset/young-cats-notice.md b/.changeset/young-cats-notice.md new file mode 100644 index 0000000..d0c47fc --- /dev/null +++ b/.changeset/young-cats-notice.md @@ -0,0 +1,5 @@ +--- +"@openfun/cunningham-react": minor +--- + +add the possibility to hide select label diff --git a/packages/react/src/components/Forms/LabelledBox/index.scss b/packages/react/src/components/Forms/LabelledBox/index.scss index 4d94d19..f56587c 100644 --- a/packages/react/src/components/Forms/LabelledBox/index.scss +++ b/packages/react/src/components/Forms/LabelledBox/index.scss @@ -28,4 +28,14 @@ padding: 1.5rem 0 0 0; display: flex; } + + &--no-label { + display: flex; + align-items: center; + + .labelled-box__children { + padding-top: 0; + flex-grow: 1; + } + } } diff --git a/packages/react/src/components/Forms/LabelledBox/index.stories.tsx b/packages/react/src/components/Forms/LabelledBox/index.stories.tsx index f73a3f7..ccdf783 100644 --- a/packages/react/src/components/Forms/LabelledBox/index.stories.tsx +++ b/packages/react/src/components/Forms/LabelledBox/index.stories.tsx @@ -7,17 +7,43 @@ export default { component: LabelledBox, } as Meta; -const Template: StoryFn = (args) => ( -
- -
-); +const DebugContainer = ({ children }: React.PropsWithChildren<{}>) => { + const style: React.CSSProperties = { + height: "3.5rem", + // A grid background + backgroundImage: `linear-gradient(to right, #eee 1px, transparent 1px), linear-gradient(to bottom, #eee 1px, transparent 1px)`, + border: "solid #eee", + backgroundSize: "1rem 1rem", + }; + return
{children}
; +}; +const Template: StoryFn = (args) => ( + + + +); export const Default = { render: Template, - args: { label: "Your label here", children: Hello world, }, }; + +export const LabelAsPlaceholder = { + render: Template, + args: { + label: "Your label here", + labelAsPlaceholder: true, + }, +}; + +export const NoLabel = { + render: Template, + args: { + label: "Your label here", + hideLabel: true, + children: Hello world, + }, +}; diff --git a/packages/react/src/components/Forms/LabelledBox/index.tsx b/packages/react/src/components/Forms/LabelledBox/index.tsx index 5079ee9..22e92fe 100644 --- a/packages/react/src/components/Forms/LabelledBox/index.tsx +++ b/packages/react/src/components/Forms/LabelledBox/index.tsx @@ -1,10 +1,12 @@ import React, { PropsWithChildren } from "react"; +import classNames from "classnames"; export interface Props extends PropsWithChildren { label?: string; labelAsPlaceholder?: boolean; htmlFor?: string; labelId?: string; + hideLabel?: boolean; } export const LabelledBox = ({ @@ -13,12 +15,20 @@ export const LabelledBox = ({ labelAsPlaceholder, htmlFor, labelId, + hideLabel, }: Props) => { return ( -
+
{label && (