chore(input): show example html inside label
This commit is contained in:
parent
c2c5e7c299
commit
66b2a71550
2 changed files with 78 additions and 5 deletions
|
|
@ -38,12 +38,21 @@ describe('FormControlMixin', () => {
|
||||||
|
|
||||||
const elElem = await fixture(html`
|
const elElem = await fixture(html`
|
||||||
<${tag}>
|
<${tag}>
|
||||||
<label slot="label">Email <span>address</span></label>
|
<label slot="label">Email address</label>
|
||||||
${inputSlot}
|
${inputSlot}
|
||||||
</${tag}>`);
|
</${tag}>`);
|
||||||
expect(elElem.label).to.equal('Email address', 'as an element');
|
expect(elElem.label).to.equal('Email address', 'as an element');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('has a label that supports inner html', async () => {
|
||||||
|
const el = await fixture(html`
|
||||||
|
<${tag}>
|
||||||
|
<label slot="label">Email <span>address</span></label>
|
||||||
|
${inputSlot}
|
||||||
|
</${tag}>`);
|
||||||
|
expect(el.label).to.equal('Email address');
|
||||||
|
});
|
||||||
|
|
||||||
it('can have a help-text', async () => {
|
it('can have a help-text', async () => {
|
||||||
const elAttr = await fixture(html`
|
const elAttr = await fixture(html`
|
||||||
<${tag} help-text="We will not send you any spam">${inputSlot}</${tag}>
|
<${tag} help-text="We will not send you any spam">${inputSlot}</${tag}>
|
||||||
|
|
@ -59,12 +68,21 @@ describe('FormControlMixin', () => {
|
||||||
|
|
||||||
const elElem = await fixture(html`
|
const elElem = await fixture(html`
|
||||||
<${tag}>
|
<${tag}>
|
||||||
<label slot="help-text">We will not send you any <span>spam</span></label>
|
<label slot="help-text">We will not send you any spam</label>
|
||||||
${inputSlot}
|
${inputSlot}
|
||||||
</${tag}>`);
|
</${tag}>`);
|
||||||
expect(elElem.helpText).to.equal('We will not send you any spam', 'as an element');
|
expect(elElem.helpText).to.equal('We will not send you any spam', 'as an element');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('can have a help-text that supports inner html', async () => {
|
||||||
|
const el = await fixture(html`
|
||||||
|
<${tag}>
|
||||||
|
<label slot="help-text">We will not send you any spam</label>
|
||||||
|
${inputSlot}
|
||||||
|
</${tag}>`);
|
||||||
|
expect(el.helpText).to.equal('We will not send you any spam');
|
||||||
|
});
|
||||||
|
|
||||||
it('does not duplicate aria-describedby and aria-labelledby ids', async () => {
|
it('does not duplicate aria-describedby and aria-labelledby ids', async () => {
|
||||||
const lionField = await fixture(`
|
const lionField = await fixture(`
|
||||||
<${elem} help-text="This element will be disconnected/reconnected">${inputSlot}</${elem}>
|
<${elem} help-text="This element will be disconnected/reconnected">${inputSlot}</${elem}>
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ import '../lion-input.js';
|
||||||
|
|
||||||
`lion-input` component is a webcomponent that enhances the functionality of the native `<input>` element.
|
`lion-input` component is a webcomponent that enhances the functionality of the native `<input>` element.
|
||||||
|
|
||||||
<Story name="default">
|
<Story name="Default">
|
||||||
{html`
|
{html`
|
||||||
<lion-input label="First Name"></lion-input>
|
<lion-input label="First Name"></lion-input>
|
||||||
`}
|
`}
|
||||||
|
|
@ -25,7 +25,7 @@ import '../lion-input.js';
|
||||||
- Based on [field](?path=/docs/forms-system-overview--page)
|
- Based on [field](?path=/docs/forms-system-overview--page)
|
||||||
- Extra visual elements can be added via `slots`
|
- Extra visual elements can be added via `slots`
|
||||||
- **label**: can also be provided via the `label` attribute, but the slot can be used to change the `html` and `CSS` of the label.
|
- **label**: can also be provided via the `label` attribute, but the slot can be used to change the `html` and `CSS` of the label.
|
||||||
For example add an `sr-only` class to the label to make it visually hidden.
|
For example add an `u-sr-only` class to the label to make it visually hidden.
|
||||||
A label is always needed for accessibility reasons.
|
A label is always needed for accessibility reasons.
|
||||||
- **help-text**: a helper text shown below the label to give extra clarification.
|
- **help-text**: a helper text shown below the label to give extra clarification.
|
||||||
- **prefix**: does not have an active use case yet, but the option is in place.
|
- **prefix**: does not have an active use case yet, but the option is in place.
|
||||||
|
|
@ -49,9 +49,64 @@ import '@lion/input/lion-input.js';
|
||||||
|
|
||||||
## Examples
|
## Examples
|
||||||
|
|
||||||
|
### Label
|
||||||
|
|
||||||
|
Can be provided via the `label` attribute, but the slot can be used to change the `html` and `CSS` of the label.
|
||||||
|
For example add an `u-sr-only` class to the label to make it (partially) visually hidden.
|
||||||
|
A label is always needed for accessibility reasons.
|
||||||
|
|
||||||
|
<Story name="Label">
|
||||||
|
{html`
|
||||||
|
<style>
|
||||||
|
.u-sr-only {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
width: 1px;
|
||||||
|
height: 1px;
|
||||||
|
overflow: hidden;
|
||||||
|
clip-path: inset(100%);
|
||||||
|
clip: rect(1px, 1px, 1px, 1px);
|
||||||
|
white-space: nowrap;
|
||||||
|
border: 0;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<lion-input>
|
||||||
|
<label slot="label">Label <span class="u-sr-only">partially only visible for screen-readers</span></label>
|
||||||
|
</lion-input>
|
||||||
|
`}
|
||||||
|
</Story>
|
||||||
|
|
||||||
|
```html
|
||||||
|
<style>
|
||||||
|
.u-sr-only {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
width: 1px;
|
||||||
|
height: 1px;
|
||||||
|
overflow: hidden;
|
||||||
|
clip-path: inset(100%);
|
||||||
|
clip: rect(1px, 1px, 1px, 1px);
|
||||||
|
white-space: nowrap;
|
||||||
|
border: 0;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<lion-input>
|
||||||
|
<label slot="label">Label <span class="u-sr-only">partially only visible for screen-readers</span></label>
|
||||||
|
</lion-input>
|
||||||
|
```
|
||||||
|
|
||||||
### Help-text
|
### Help-text
|
||||||
|
|
||||||
<Story name="Help-text with html">
|
A helper text shown below the label to give extra clarification.
|
||||||
|
|
||||||
|
Just like the `label`, a `help-text` can be provided via the `help-text` attribute, a slot can be used to change the `html` and `CSS` of the help-text.
|
||||||
|
For example add an anchor with further explanation.
|
||||||
|
|
||||||
|
<Story name="Help-text">
|
||||||
{html`
|
{html`
|
||||||
<lion-input>
|
<lion-input>
|
||||||
<label slot="label">Label</label>
|
<label slot="label">Label</label>
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue