Skip to content

Commit 533b085

Browse files
committed
feat: add label elemental component
1 parent 5fb1216 commit 533b085

File tree

5 files changed

+55
-1
lines changed

5 files changed

+55
-1
lines changed

packages/common/README.md

+4
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,10 @@ An elemental component for the `i` tag.
113113

114114
An elemental component for the `img` tag.
115115

116+
## Label
117+
118+
An elemental component for the `label` tag.
119+
116120
## Li
117121

118122
An elemental component for the `li` tag.

packages/common/src/elements/Img.svelte

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
1616
// Remember to update types file if you add/remove/rename props.
1717
export let use: ActionArray = [];
18-
export let alt = '';
18+
export let alt: string | undefined = undefined;
1919
2020
const forwardEvents = forwardEventsBuilder(get_current_component());
2121
+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
<label
2+
bind:this={element}
3+
use:useActions={use}
4+
use:forwardEvents
5+
for={forId}
6+
{...$$restProps}
7+
>
8+
<slot />
9+
</label>
10+
11+
<script lang="ts">
12+
import { get_current_component } from 'svelte/internal';
13+
14+
import type { ActionArray } from '../internal/useActions.js';
15+
import { forwardEventsBuilder, useActions } from '../internal/index.js';
16+
17+
// Remember to update types file if you add/remove/rename props.
18+
export let use: ActionArray = [];
19+
let forId: string | undefined = undefined;
20+
export { forId as for };
21+
22+
const forwardEvents = forwardEventsBuilder(get_current_component());
23+
24+
let element: HTMLLabelElement;
25+
26+
export function getElement() {
27+
return element;
28+
}
29+
</script>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import type Component from './Label.svelte';
2+
3+
export declare class LabelComponentDev extends Component {
4+
/**
5+
* @private
6+
* For type checking capabilities only.
7+
* Does not exist at runtime.
8+
* ### DO NOT USE!
9+
*/
10+
$$prop_def: Omit<
11+
Partial<svelte.JSX.HTMLAttributes<HTMLLabelElement>>,
12+
'use' | 'for'
13+
> &
14+
Component['$$prop_def'];
15+
}

packages/common/src/elements/index.ts

+6
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,12 @@ export * from './Img.types.js';
9494
const Img = ImgComponent as typeof ImgComponentDev;
9595
export { Img };
9696

97+
import LabelComponent from './Label.svelte';
98+
import type { LabelComponentDev } from './Label.types.js';
99+
export * from './Label.types.js';
100+
const Label = LabelComponent as typeof LabelComponentDev;
101+
export { Label };
102+
97103
import LiComponent from './Li.svelte';
98104
import type { LiComponentDev } from './Li.types.js';
99105
export * from './Li.types.js';

0 commit comments

Comments
 (0)