Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Label] Make optional the prevention of text selection when double clicking label #2656

Closed
Zwyx opened this issue Jan 17, 2024 · 4 comments · Fixed by #2753
Closed

[Label] Make optional the prevention of text selection when double clicking label #2656

Zwyx opened this issue Jan 17, 2024 · 4 comments · Fixed by #2753

Comments

@Zwyx
Copy link

Zwyx commented Jan 17, 2024

Feature request

Overview

The Label primitive prevents text selection when double clicking the label.

This also prevents using the "up/down" arrows of an input element of type number placed inside the Label.

Adding an option to Label to disable the prevention of text selection would be great.

Who does this impact? Who is this for?

Advanced users. This request might be too specific, feel free to close this issue.

@kal07
Copy link

kal07 commented Jan 19, 2024

Here the source code of label
const Label = React.forwardRef<LabelElement, LabelProps>((props, forwardedRef) => { return ( <Primitive.label {...props} ref={forwardedRef} onMouseDown={(event) => { props.onMouseDown?.(event); // prevent text selection when double clicking label if (!event.defaultPrevented && event.detail > 1) event.preventDefault(); }} /> ); });
You can use the label component that is available from @radix-ui/react-primitive package since the only difference is onMouseDown
import { Primitive } from '@radix-ui/react-primitive'; export const Label = Primitive.label

@Zwyx
Copy link
Author

Zwyx commented Jan 20, 2024

Ah excellent, thanks for that! I use Shadcn UI, so I modified its Label component to add a disableSelectionPrevention option, as follow:

import * as LabelPrimitive from "@radix-ui/react-label";
import { Primitive } from "@radix-ui/react-primitive";
import { cva, type VariantProps } from "class-variance-authority";
import * as React from "react";

import { cn } from "@/lib/utils";

const labelVariants = cva(
	"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",
);

const Label = React.forwardRef<
	React.ElementRef<typeof LabelPrimitive.Root>,
	React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> &
		VariantProps<typeof labelVariants> & {
			disableSelectionPrevention?: boolean;
		}
>(({ className, disableSelectionPrevention, ...props }, ref) => {
	const Component = disableSelectionPrevention
		? Primitive.label
		: LabelPrimitive.Root;

	return (
		<Component
			ref={ref}
			className={cn(labelVariants(), className)}
			{...props}
		/>
	);
});
Label.displayName = LabelPrimitive.Root.displayName;

export { Label };

I'll let the people at WorkOS decide if they want to add this option to @radix-ui/react-label, I still think it could be useful. If not, feel free to close this issue 🙂

@benoitgrelard
Copy link
Collaborator

I've addressed the issue in #2753.

@Zwyx
Copy link
Author

Zwyx commented Mar 5, 2024

Oh excellent! Thanks for doing that!

benoitgrelard added a commit that referenced this issue Mar 5, 2024
* [Label] Don't eagerly prevent double-click

Fixes #2656

* Update Label.stories.tsx

* Update Label.tsx

* PR feedback
jgoz added a commit to implydata/radix-primitives that referenced this issue Mar 20, 2024
commit b32a933
Author: benoitgrelard <benoitgrelard@users.noreply.github.com>
Date:   Thu Mar 14 12:23:48 2024 +0000

    Publish release candidate

commit d312472
Author: Benoît Grélard <benoit.grelard@gmail.com>
Date:   Thu Mar 14 12:20:17 2024 +0000

    Testing updated transitive dep of react-remove-scroll (radix-ui#2776)

commit b64b9f1
Author: benoitgrelard <benoitgrelard@users.noreply.github.com>
Date:   Tue Mar 12 11:17:33 2024 +0000

    Publish release candidate

commit 8b38903
Author: Benoît Grélard <benoit.grelard@gmail.com>
Date:   Tue Mar 12 11:13:46 2024 +0000

    [Slider] Add ability to name each thumb for more flexibility (radix-ui#2766)

    Fixes radix-ui#2454

commit be80c2a
Author: benoitgrelard <benoitgrelard@users.noreply.github.com>
Date:   Thu Mar 7 10:28:17 2024 +0000

    Publish release candidate

commit 4736d55
Author: Benoît Grélard <benoit.grelard@gmail.com>
Date:   Thu Mar 7 10:24:44 2024 +0000

    Upgrade react-remove-scroll version (radix-ui#2765)

    Fixes radix-ui#1548
    Fixes radix-ui#2367

commit 82eebe9
Author: benoitgrelard <benoitgrelard@users.noreply.github.com>
Date:   Wed Mar 6 15:04:36 2024 +0000

    Publish release candidate

commit 38f7f14
Author: Benoît Grélard <benoit.grelard@gmail.com>
Date:   Wed Mar 6 15:00:54 2024 +0000

    [DropdownMenu] Prevent scroll on initial menu focus (radix-ui#2762)

    Fixes radix-ui#2331

commit 834330f
Author: benoitgrelard <benoitgrelard@users.noreply.github.com>
Date:   Wed Mar 6 14:59:19 2024 +0000

    Publish release candidate

commit d7f5ed5
Author: Benoît Grélard <benoit.grelard@gmail.com>
Date:   Wed Mar 6 14:55:08 2024 +0000

    Use capture phase in `useEscapeKeydown` (radix-ui#2761)

    * Use capture phase

    * Create 75dcd823.yml

commit 2790136
Author: benoitgrelard <benoitgrelard@users.noreply.github.com>
Date:   Tue Mar 5 14:13:07 2024 +0000

    Publish release candidate

commit ad69155
Author: Benoît Grélard <benoit.grelard@gmail.com>
Date:   Tue Mar 5 14:09:51 2024 +0000

    [Label] Don't eagerly prevent double-click (radix-ui#2753)

    * [Label] Don't eagerly prevent double-click

    Fixes radix-ui#2656

    * Update Label.stories.tsx

    * Update Label.tsx

    * PR feedback

commit b5b3162
Author: Benoît Grélard <benoit.grelard@gmail.com>
Date:   Tue Mar 5 14:09:13 2024 +0000

    Update CODEOWNERS

commit 7d884d2
Author: benoitgrelard <benoitgrelard@users.noreply.github.com>
Date:   Fri Mar 1 22:14:10 2024 +0000

    Publish release candidate

commit f58a28c
Author: Nicholas Chiang <nicholas.h.chiang@gmail.com>
Date:   Fri Mar 1 15:10:32 2024 -0700

    fix(Popper): disable pointer events when hidden (radix-ui#2745)

    * fix(Popper): disable pointer events when hidden

    This patch sets `pointer-events: none` when the `<PopperContent>` is
    hidden so that the UI behaves as if it is not there at all. This ensures
    that users can interact with elements beneath the `<PopperContent>`
    uninterrupted.

    Ref: radix-ui#2743 (comment)

    Fixes: e5ba0d9 ("fix(Popper): use `visibility` to hide instead of `opacity` (radix-ui#2744)")

    * Move to wrapper

    ---------

    Co-authored-by: Benoît Grélard <benoit.grelard@gmail.com>

commit 8b1162c
Author: benoitgrelard <benoitgrelard@users.noreply.github.com>
Date:   Thu Feb 29 19:43:17 2024 +0000

    Publish release candidate

commit e5ba0d9
Author: Nicholas Chiang <nicholas.h.chiang@gmail.com>
Date:   Thu Feb 29 12:39:51 2024 -0700

    fix(Popper): use `visibility` to hide instead of `opacity` (radix-ui#2744)

    * fix(Popper): use `visibility` to hide instead of `opacity`

    When using `hideWhenDetached`, the opacity is changed to 0 instead of the
    visibility. This lets users click items that they cannot see. This is
    generally a bad user experience.

    This patch updates the `Popper` to set the `visibility` to `hidden` when
    `hideWhenDetached` is used. This ensures the user cannot interact with
    the hidden element.

    This aligns with what is in the `@floating-ui/react-dom` documentation.

    Ref: https://floating-ui.com/docs/hide#usage

    Closes: radix-ui#2743

    * Update packages/react/popper/src/Popper.tsx

    * Create 5793010b.yml

    ---------

    Co-authored-by: Benoît Grélard <benoit.grelard@gmail.com>

commit ef4cc7d
Author: benoitgrelard <benoitgrelard@users.noreply.github.com>
Date:   Thu Feb 29 13:44:52 2024 +0000

    Publish release candidate

commit fdc34ad
Author: Benoît Grélard <benoit.grelard@gmail.com>
Date:   Thu Feb 29 13:38:47 2024 +0000

    [NavigationMenu] Remove unsuported `disableOutsidePointerEvents` prop (radix-ui#2741)

    * [NavigationMenu] Remove unsuported `disableOutsidePointerEvents` prop

    Fixes radix-ui#2731

    * Trigger status?

    * Revert "Trigger status?"

    This reverts commit 3c827c0.

commit 8e4dfde
Author: benoitgrelard <benoitgrelard@users.noreply.github.com>
Date:   Wed Feb 28 17:26:11 2024 +0000

    Publish release candidate

commit 1fbb93c
Author: Benoît Grélard <benoit.grelard@gmail.com>
Date:   Wed Feb 28 17:22:06 2024 +0000

    [RovingFocusGroup] Move only with single arrow keys (radix-ui#2739)

    Fixes radix-ui#2732

commit f243570
Author: benoitgrelard <benoitgrelard@users.noreply.github.com>
Date:   Wed Feb 28 16:40:05 2024 +0000

    Publish release candidate

commit 57c1450
Author: Daniel Kremniov <114945181+dkremniov-bc@users.noreply.github.com>
Date:   Wed Feb 28 18:36:08 2024 +0200

    feat: added CSP nonce prop (radix-ui#2728)

commit ddb0a12
Author: Benoît Grélard <benoit.grelard@gmail.com>
Date:   Wed Feb 28 14:39:00 2024 +0000

    yarn workspaces foreach default (radix-ui#2737)

commit a8fa795
Author: Benoît Grélard <benoit.grelard@gmail.com>
Date:   Wed Feb 28 14:08:13 2024 +0000

    Upgrade node/yarn/storybook (radix-ui#2736)

commit c31c972
Author: Benoît Grélard <benoit.grelard@gmail.com>
Date:   Mon Sep 25 15:10:49 2023 +0100

    New release

commit c578e3f
Author: benoitgrelard <benoitgrelard@users.noreply.github.com>
Date:   Mon Sep 25 13:44:53 2023 +0000

    Publish release candidate

commit fadebe7
Author: Benoît Grélard <benoit.grelard@gmail.com>
Date:   Mon Sep 25 14:37:30 2023 +0100

    [ScrollArea] Fix types (radix-ui#2408)

commit 28bebf2
Author: andy-hook <andy-hook@users.noreply.github.com>
Date:   Wed Sep 6 11:03:49 2023 +0000

    Publish release candidate

commit 1ccd02f
Author: Dott <88314186+godhyeongman@users.noreply.github.com>
Date:   Wed Sep 6 19:55:24 2023 +0900

    Fix issue link in contribution guide (radix-ui#2381)

    * document: fix duplicated contribution guide open issues page link

    * run yarn version check as declined

commit ea63769
Author: andy-hook <andy-hook@users.noreply.github.com>
Date:   Wed Aug 16 13:26:17 2023 +0000

    Publish release candidate

commit baf9862
Author: Alexey Ryabov <lesha_12_01@mail.ru>
Date:   Wed Aug 16 16:18:41 2023 +0300

    [Avatar] Fix flashing of broken image (radix-ui#2340)

    * [Avatar] Fix flashing of broken image

    * Use isomorphic `useLayoutEffect`

    * [Avatar] Bump patch version

commit 3e0642e
Author: andy-hook <andy-hook@users.noreply.github.com>
Date:   Tue Aug 8 10:17:02 2023 +0000

    Publish release candidate

commit 2bc8f49
Author: Andy Hook <hello@andyhook.dev>
Date:   Tue Aug 8 11:10:35 2023 +0100

    Update readme image (radix-ui#2328)

    * Update readme image

    * Versions
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants