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

LabeledField: Add a story for custom jsx for props #2426

Merged
merged 2 commits into from
Jan 15, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,20 @@ export default {
},
},
},
error: {
errorMessage: {
table: {
type: {
summary: "string | ReactNode",
},
},
},
required: {
table: {
type: {
summary: "string | boolean",
},
},
},
field: {
table: {
type: {
Expand Down
27 changes: 27 additions & 0 deletions __docs__/wonder-blocks-labeled-field/labeled-field.stories.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -598,3 +598,30 @@ export const WithNonWb = {
},
},
};

/**
* Custom ReactNode elements can be used for the `label`, `description`, and
* `error` props. Ideally, the styling of LabeledField should not be overridden.
* If there is a specific use case where the styling needs to be overridden,
* please reach out to the Wonder Blocks team!
Comment on lines +603 to +606
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

praise: This is great! thanks for calling out reaching out to us!

suggestion: How do you feel about including a message mentioning that this is useful for things like toggletips? or including icons that represent meaning? This is kinda tricky as I'm a firmly believer that we should use description (or inlining content) instead of relying on Tooltips. wdyt?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm thinking we can leave it open-ended for now and see how often teams reach out about toggletips with fields. If it is a common pattern, I think we should create a separate prop for supporting the toggle tip so that it can be part of the API so it is consistent (ex: the same icon and styling/spacing is used for the hint).

Another thing to note is the contents of the label prop are wrapped with a <label> tag. I'm not sure if the toggle tip should be inside the label tag or outside, since clicking on the label will also focus on the associated field. And screen readers will read out the associated label when the field is interacted with, so the aria-label for the toggletip trigger will be included as part of that.

Inlining content in the description would simplify a lot of these things!

Another possible use case for the custom elements if adding the (optional) tag to the label. I think it isn't necessary to support this since we have the required indicator and we should stick with one of these approaches!

As always, let me know what you think!

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like that!

*/
export const Custom = {
args: {
label: (
<span>
<b>Label</b> <i>using</i> <u>JSX</u>
</span>
),
description: (
<span>
<b>Description</b> <i>using</i> <u>JSX</u>
</span>
),
field: <TextField value="" onChange={() => {}} />,
errorMessage: (
<span>
<b>Error</b> <i>using</i> <u>JSX</u>
</span>
),
},
};
Loading