Skip to content

Commit d35c82b

Browse files
committed
✨ Add ability to pass data attributes to input elements
1 parent bb69437 commit d35c82b

18 files changed

+55
-15
lines changed

src/components/Checkbox/Checkbox.astro

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@ const {
1515
subText,
1616
disabled,
1717
color,
18-
className
18+
className,
19+
...rest
1920
} = Astro.props
2021
2122
const classes = [
@@ -34,7 +35,12 @@ const style = color
3435
<div class={styles.wrapper} slot="wrapper">
3536
children
3637
</div>
37-
<input type="checkbox" checked={checked} disabled={disabled} />
38+
<input
39+
type="checkbox"
40+
checked={checked}
41+
disabled={disabled}
42+
{...rest}
43+
/>
3844
<span class={styles.check}>
3945
<Fragment set:html={check} />
4046
</span>

src/components/Checkbox/Checkbox.svelte

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
checked={checked}
4040
disabled={disabled}
4141
on:click={onClick}
42+
{...$$restProps}
4243
/>
4344
<span class={styles.check}>
4445
{@html check}

src/components/Checkbox/Checkbox.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@ const Checkbox = ({
1616
disabled,
1717
color,
1818
className,
19-
onClick
19+
onClick,
20+
...rest
2021
}: ReactCheckboxProps) => {
2122
const classes = classNames([
2223
styles.checkbox,
@@ -43,6 +44,7 @@ const Checkbox = ({
4344
defaultChecked={checked}
4445
disabled={disabled}
4546
onClick={onClick}
47+
{...rest}
4648
/>
4749
<span
4850
className={styles.check}

src/components/Checkbox/checkbox.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ export type CheckboxProps = {
77
disabled?: boolean
88
color?: string
99
className?: string
10+
[key: string]: any
1011
}
1112

1213
export type SvelteCheckboxProps = {

src/components/Radio/Radio.astro

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@ const {
1212
items,
1313
color,
1414
inline,
15-
className
15+
className,
16+
...rest
1617
} = Astro.props
1718
1819
const classes = [
@@ -42,6 +43,7 @@ const style = color
4243
value={item.value}
4344
checked={item.selected}
4445
disabled={item.disabled}
46+
{...rest}
4547
/>
4648
<span class={styles.icon} />
4749
<span class={styles.label}>

src/components/Radio/Radio.svelte

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,10 @@
2727

2828
<div class={classes} style={style}>
2929
{#each items as item}
30-
<label class={[
30+
<label class={classNames([
3131
item.subText && styles.col,
3232
item.disabled && styles.disabled
33-
].filter(Boolean).join(' ')}
33+
])}
3434
>
3535
<ConditionalWrapper
3636
condition={!!(item.subText)}
@@ -44,6 +44,7 @@
4444
checked={item.selected}
4545
disabled={item.disabled}
4646
on:change={onChange}
47+
{...$$restProps}
4748
/>
4849
<span class={styles.icon} />
4950
<span class={styles.label}>

src/components/Radio/Radio.tsx

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@ const Radio = ({
1313
color,
1414
inline,
1515
className,
16-
onChange
16+
onChange,
17+
...rest
1718
}: ReactRadioProps) => {
1819
const classes = classNames([
1920
styles.radio,
@@ -28,10 +29,10 @@ const Radio = ({
2829
return (
2930
<div className={classes} style={style}>
3031
{items.map((item, index) => (
31-
<label className={[
32+
<label className={classNames([
3233
item.subText && styles.col,
3334
item.disabled && styles.disabled
34-
].filter(Boolean).join(' ')} key={index}>
35+
])} key={index}>
3536
<ConditionalWrapper
3637
condition={!!(item.subText)}
3738
wrapper={children => (
@@ -47,6 +48,7 @@ const Radio = ({
4748
defaultChecked={item.selected}
4849
disabled={item.disabled}
4950
onChange={onChange}
51+
{...rest}
5052
/>
5153
<span className={styles.icon} />
5254
<span

src/components/Radio/radio.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ export type RadioProps = {
1010
color?: string
1111
inline?: boolean
1212
className?: string
13+
[key: string]: any
1314
}
1415

1516
export type SvelteRadioProps = {

src/components/Select/Select.astro

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,10 @@ const {
2727
...rest
2828
} = Astro.props
2929
30+
const inputRestProps = Object.fromEntries(
31+
Object.entries(rest).filter(([key]) => key.includes('data'))
32+
)
33+
3034
const classes = classNames([
3135
styles.select,
3236
disabled && styles.disabled,
@@ -46,6 +50,7 @@ const classes = classNames([
4650
data-no-update={!updateValue ? 'true' : undefined}
4751
data-position={position}
4852
labelClassName={classes}
53+
{...inputRestProps}
4954
>
5055
<Fragment set:html={ArrowDown} />
5156
</Input>

src/components/Select/Select.svelte

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,10 @@
4242
styles.popover
4343
])
4444
45+
const inputRestProps = Object.fromEntries(
46+
Object.entries($$restProps).filter(([key]) => key.includes('data'))
47+
)
48+
4549
const select = (event: ListEventType) => {
4650
closePopover(`.w-options-${name}`)
4751
@@ -106,14 +110,15 @@
106110

107111
<Input
108112
type="text"
109-
value={value}
113+
value={value || null}
110114
readonly={true}
111115
disabled={disabled}
112-
placeholder={placeholder}
116+
placeholder={placeholder || null}
113117
label={label}
114118
subText={subText}
115119
className={`w-select-${name}`}
116120
labelClassName={classes}
121+
{...inputRestProps}
117122
>
118123
{@html ArrowDown}
119124
</Input>

0 commit comments

Comments
 (0)