@utrecht/components
Version:
Components for the Municipality of Utrecht based on the NL Design System architecture
405 lines (351 loc) • 9.07 kB
text/mdx
{/* @license CC0-1.0 */}
import { Canvas, Meta, Story } from "@storybook/blocks";
import { arabicDecorator, argTypes, defaultArgs, exampleArgs, FormFieldTextbox } from "../story-template";
export const PlaceholderRTLWarning = () =>
`Let op: dit is helaas nog niet gelukt om de placeholder automatisch rechts uit te lijnen, wanneer de tekst van de
placeholder right-to-left is. Op dit moment gebruiken we de volgende class name: utrecht-textbox--placeholder-rtl`;
<Meta
id="css-form-field--textbox"
title="CSS Component/Form field/with textbox (right-to-left)"
component={FormFieldTextbox}
argTypes={argTypes}
args={defaultArgs}
parameters={{
status: {
type: "WORK IN PROGRESS",
},
}}
/>
# Textbox in right-to-left script
Let op: de labels in dit voorbeeld zijn gemaakt met Google Translate.
## Full name
### Full name (empty)
In een _right-to-left_ schrift zoals Arabisch moet de tekst van het label, placeholder en van de invoer meestal rechts uitgelijnd zijn.
Sommige invoer is links-naar-rechts, daarom zijn er enkele uitzonderingen:
- e-mailadressen
- website URLs
- telefoonnummers
- zoek naar code (kleurocodes, programmeertalen)
Gebruik een passend formaat van de textbox, zodat het het rechts uitgelijnde label niet een onnodig grote afstand heeft tot de links uitgelijnde invoer.
<Canvas>
<Story
name="Full name (empty)"
args={{
...exampleArgs,
label: "الاسم الكامل",
autoComplete: "name",
type: "text",
dir: "auto",
id: "5e95c937-e454-4605-a220-a59dd226aebf",
}}
decorators={[arabicDecorator]}
>
{FormFieldTextbox.bind({})}
</Story>
</Canvas>
## Full name
### Full name (right-to-left placeholder)
A right-to-left placeholder should be right aligned.
{PlaceholderRTLWarning()}
<Canvas>
<Story
name="Full name (right-to-left placeholder)"
args={{
...exampleArgs,
label: "الاسم الكامل",
placeholder: "الاسم الكامل",
autoComplete: "name",
type: "text",
dir: "auto",
placeholderDir: "rtl",
id: "a79112b4-26b6-4393-96bd-c514aaac0781",
}}
decorators={[arabicDecorator]}
parameters={{
status: {
type: "WORK IN PROGRESS",
},
chromatic: { disableSnapshot: true },
}}
>
{FormFieldTextbox.bind({})}
</Story>
</Canvas>
### Full name (left-to-right placeholder)
A left-to-right placeholder should be left aligned.
<Canvas>
<Story
name="Full name (left-to-right placeholder)"
args={{
...exampleArgs,
label: "الاسم الكامل",
placeholder: "Jane Doe",
autoComplete: "name",
type: "text",
dir: "auto",
id: "5dfbb67d-699c-47c2-9ec7-ce18d7efe71c",
}}
decorators={[arabicDecorator]}
>
{FormFieldTextbox.bind({})}
</Story>
</Canvas>
### Full name (value)
<Canvas>
<Story
name="Full name"
args={{
...exampleArgs,
label: "الاسم الكامل",
autoComplete: "name",
type: "text",
value: "Jan Janssen",
dir: "auto",
id: "e341cf11-0666-4ae5-abed-8fe1e2af3bd9",
}}
decorators={[arabicDecorator]}
>
{FormFieldTextbox.bind({})}
</Story>
</Canvas>
## E-mail address
### E-mail address (empty)
<Canvas>
<Story
name="E-mail address (empty)"
args={{
...exampleArgs,
label: "بريد إلكتروني",
type: "email",
autoComplete: "email",
dir: "ltr",
id: "b3b9491b-c32a-4eee-b742-46c14324a417",
}}
decorators={[arabicDecorator]}
>
{FormFieldTextbox.bind({})}
</Story>
</Canvas>
### E-mail address (right-to-left placeholder)
Voor een e-mailadres, die _left-to-right_ moet zijn, moet een _right-to-left_ placeholder tekst rechts uitgelijnd zijn.
{PlaceholderRTLWarning()}
<Canvas>
<Story
name="E-mail address (placeholder)"
args={{
...exampleArgs,
label: "بريد إلكتروني",
placeholder: "بريد إلكتروني",
type: "email",
autoComplete: "email",
dir: "ltr",
placeholderDir: "rtl",
id: "1cede51f-042c-4839-b7a7-e29d8702a16e",
}}
decorators={[arabicDecorator]}
parameters={{
status: {
type: "WORK IN PROGRESS",
},
chromatic: { disableSnapshot: true },
}}
>
{FormFieldTextbox.bind({})}
</Story>
</Canvas>
### E-mail address (left-to-right placeholder)
<Canvas>
<Story
name="E-mail address (left-to-right placeholder)"
args={{
...exampleArgs,
label: "بريد إلكتروني",
placeholder: "info@example.com",
type: "email",
autoComplete: "email",
dir: "ltr",
id: "5cbdd2ff-6fae-49bf-977d-a5e762618506",
}}
decorators={[arabicDecorator]}
>
{FormFieldTextbox.bind({})}
</Story>
</Canvas>
### E-mail address (value)
<Canvas>
<Story
name="E-mail address"
args={{
...exampleArgs,
label: "بريد إلكتروني",
type: "email",
autoComplete: "email",
value: "info@example.com",
dir: "ltr",
id: "fece1712-c6ca-4972-b735-0fb5fa705ce7",
}}
decorators={[arabicDecorator]}
>
{FormFieldTextbox.bind({})}
</Story>
</Canvas>
## Website
### Website URL (empty)
<Canvas>
<Story
name="Website URL (empty)"
args={{
...exampleArgs,
label: "موقع إلكتروني",
type: "url",
autoComplete: "url",
dir: "ltr",
id: "b3b9491b-c32a-4eee-b742-46c14324a417",
}}
decorators={[arabicDecorator]}
>
{FormFieldTextbox.bind({})}
</Story>
</Canvas>
### Website URL (right-to-left placeholder)
{PlaceholderRTLWarning()}
<Canvas>
<Story
name="Website URL (placeholder)"
args={{
...exampleArgs,
label: "موقع إلكتروني",
placeholder: "موقع إلكتروني",
type: "url",
autoComplete: "email",
dir: "ltr",
placeholderDir: "rtl",
id: "1cede51f-042c-4839-b7a7-e29d8702a16e",
}}
decorators={[arabicDecorator]}
parameters={{
status: {
type: "WORK IN PROGRESS",
},
chromatic: { disableSnapshot: true },
}}
>
{FormFieldTextbox.bind({})}
</Story>
</Canvas>
### Website URL (left-to-right placeholder)
<Canvas>
<Story
name="Website URL (left-to-right placeholder)"
args={{
...exampleArgs,
label: "موقع إلكتروني",
placeholder: "https://example.com/",
type: "url",
autoComplete: "email",
dir: "ltr",
id: "5cbdd2ff-6fae-49bf-977d-a5e762618506",
}}
decorators={[arabicDecorator]}
>
{FormFieldTextbox.bind({})}
</Story>
</Canvas>
### Website URL (value)
<Canvas>
<Story
name="Website URL"
args={{
...exampleArgs,
label: "موقع إلكتروني",
type: "url",
autoComplete: "email",
value: "https://example.com/",
dir: "ltr",
id: "fece1712-c6ca-4972-b735-0fb5fa705ce7",
}}
decorators={[arabicDecorator]}
>
{FormFieldTextbox.bind({})}
</Story>
</Canvas>
## Mobile phone number
### Mobile phone number (empty)
<Canvas>
<Story
name="Mobile phone number (empty)"
args={{
...exampleArgs,
label: "رقم الهاتف المحمول",
type: "tel",
autoComplete: "mobile tel",
dir: "ltr",
id: "8f455e89-85be-4911-ad05-b666a8cc2ff7",
}}
decorators={[arabicDecorator]}
>
{FormFieldTextbox.bind({})}
</Story>
</Canvas>
### Mobile phone number (right-to-left placeholder)
{PlaceholderRTLWarning()}
<Canvas>
<Story
name="Mobile phone number (right-to-left placeholder)"
args={{
...exampleArgs,
label: "رقم الهاتف المحمول",
placeholder: "رقم الهاتف المحمول",
type: "tel",
autoComplete: "mobile tel",
dir: "ltr",
id: "73c41136-aecf-421d-9f06-16caf39b09e7",
placeholderDir: "rtl",
}}
decorators={[arabicDecorator]}
parameters={{
status: {
type: "WORK IN PROGRESS",
},
chromatic: { disableSnapshot: true },
}}
>
{FormFieldTextbox.bind({})}
</Story>
</Canvas>
### Mobile phone number (left-to-right placeholder)
<Canvas>
<Story
name="Mobile phone number (left-to-right placeholder)"
args={{
...exampleArgs,
label: "رقم الهاتف المحمول",
placeholder: "+1 555 1234",
type: "tel",
autoComplete: "mobile tel",
dir: "ltr",
id: "785ba9e3-6bab-4155-9ae6-6d0af71f7479",
}}
decorators={[arabicDecorator]}
>
{FormFieldTextbox.bind({})}
</Story>
</Canvas>
### Mobile phone number (value)
<Canvas>
<Story
name="Mobile phone number"
args={{
...exampleArgs,
label: "رقم الهاتف المحمول",
type: "tel",
autoComplete: "mobile tel",
value: "+31 6 1234 5678",
dir: "ltr",
id: "c155f4b2-9d08-4690-8639-a4059929dba9",
}}
decorators={[arabicDecorator]}
>
{FormFieldTextbox.bind({})}
</Story>
</Canvas>