Skip to content

Commit a4df13c

Browse files
committed
fix: sigh, svelte 5 doesn't support what classAdderBuilder needs, so it had to be refactored
1 parent cdb9833 commit a4df13c

File tree

114 files changed

+1513
-489
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

114 files changed

+1513
-489
lines changed

MIGRATING.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ Note to Devs: remove `x = x;` statements after `push()` and the like. They aren'
2323
- Chips' Set now expects a `chip` snippet instead of using `let:chip`.
2424
- Chips' Set key function is now required to return `string`, not `string | number`.
2525
- SegmentedButton now expects a `segment` snippet instead of using `let:segment`.
26+
- `classAdderBuilder` is no longer available. Instead, the `ClassAdder` component is exported.
27+
- Svelte 5 doesn't seem to provide a way to reuse components the way classAdderBuilder needs. The version in beta.2 and before works only on the first render, but props were not reactive.
2628

2729
## Changes
2830

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
<svelte:options runes />
2+
3+
<ClassAdder
4+
_smuiClass="mdc-card__action-buttons"
5+
tag="div"
6+
bind:this={element as ReturnType<C>}
7+
{...restProps}>{@render children?.()}</ClassAdder
8+
>
9+
10+
<script
11+
lang="ts"
12+
generics="T extends SmuiEveryElement = keyof SmuiElementPropMap, C extends SmuiComponent = SmuiComponent"
13+
>
14+
import type { ComponentProps, Snippet } from 'svelte';
15+
import type {
16+
SmuiComponent,
17+
SmuiElementPropMap,
18+
SmuiEveryElement,
19+
} from '@smui/common';
20+
import { ClassAdder } from '@smui/common/classadder';
21+
22+
type OwnProps = {
23+
children?: Snippet;
24+
};
25+
let { children, ...restProps }: OwnProps & ComponentProps<ClassAdder<T, C>> =
26+
$props();
27+
28+
let element: ReturnType<C>;
29+
30+
export function getElement() {
31+
return element.getElement();
32+
}
33+
</script>

packages/card/src/ActionButtons.ts

Lines changed: 0 additions & 7 deletions
This file was deleted.

packages/card/src/ActionIcons.svelte

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
<svelte:options runes />
2+
3+
<ClassAdder
4+
_smuiClass="mdc-card__action-icons"
5+
tag="div"
6+
bind:this={element as ReturnType<C>}
7+
{...restProps}>{@render children?.()}</ClassAdder
8+
>
9+
10+
<script
11+
lang="ts"
12+
generics="T extends SmuiEveryElement = keyof SmuiElementPropMap, C extends SmuiComponent = SmuiComponent"
13+
>
14+
import type { ComponentProps, Snippet } from 'svelte';
15+
import type {
16+
SmuiComponent,
17+
SmuiElementPropMap,
18+
SmuiEveryElement,
19+
} from '@smui/common';
20+
import { ClassAdder } from '@smui/common/classadder';
21+
22+
type OwnProps = {
23+
children?: Snippet;
24+
};
25+
let { children, ...restProps }: OwnProps & ComponentProps<ClassAdder<T, C>> =
26+
$props();
27+
28+
let element: ReturnType<C>;
29+
30+
export function getElement() {
31+
return element.getElement();
32+
}
33+
</script>

packages/card/src/ActionIcons.ts

Lines changed: 0 additions & 7 deletions
This file was deleted.

packages/card/src/Content.svelte

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
<svelte:options runes />
2+
3+
<ClassAdder
4+
_smuiClass="smui-card__content"
5+
tag="div"
6+
bind:this={element as ReturnType<C>}
7+
{...restProps}>{@render children?.()}</ClassAdder
8+
>
9+
10+
<script
11+
lang="ts"
12+
generics="T extends SmuiEveryElement = keyof SmuiElementPropMap, C extends SmuiComponent = SmuiComponent"
13+
>
14+
import type { ComponentProps, Snippet } from 'svelte';
15+
import type {
16+
SmuiComponent,
17+
SmuiElementPropMap,
18+
SmuiEveryElement,
19+
} from '@smui/common';
20+
import { ClassAdder } from '@smui/common/classadder';
21+
22+
type OwnProps = {
23+
children?: Snippet;
24+
};
25+
let { children, ...restProps }: OwnProps & ComponentProps<ClassAdder<T, C>> =
26+
$props();
27+
28+
let element: ReturnType<C>;
29+
30+
export function getElement() {
31+
return element.getElement();
32+
}
33+
</script>

packages/card/src/Content.ts

Lines changed: 0 additions & 7 deletions
This file was deleted.

packages/card/src/MediaContent.svelte

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
<svelte:options runes />
2+
3+
<ClassAdder
4+
_smuiClass="mdc-card__media-content"
5+
tag="div"
6+
bind:this={element as ReturnType<C>}
7+
{...restProps}>{@render children?.()}</ClassAdder
8+
>
9+
10+
<script
11+
lang="ts"
12+
generics="T extends SmuiEveryElement = keyof SmuiElementPropMap, C extends SmuiComponent = SmuiComponent"
13+
>
14+
import type { ComponentProps, Snippet } from 'svelte';
15+
import type {
16+
SmuiComponent,
17+
SmuiElementPropMap,
18+
SmuiEveryElement,
19+
} from '@smui/common';
20+
import { ClassAdder } from '@smui/common/classadder';
21+
22+
type OwnProps = {
23+
children?: Snippet;
24+
};
25+
let { children, ...restProps }: OwnProps & ComponentProps<ClassAdder<T, C>> =
26+
$props();
27+
28+
let element: ReturnType<C>;
29+
30+
export function getElement() {
31+
return element.getElement();
32+
}
33+
</script>

packages/card/src/MediaContent.ts

Lines changed: 0 additions & 7 deletions
This file was deleted.

packages/card/src/index.d.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@
22

33
import Card from './Card.svelte';
44

5-
import Content from './Content.js';
5+
import Content from './Content.svelte';
66
import PrimaryAction from './PrimaryAction.svelte';
77
import Media from './Media.svelte';
8-
import MediaContent from './MediaContent.js';
8+
import MediaContent from './MediaContent.svelte';
99
import Actions from './Actions.svelte';
10-
import ActionButtons from './ActionButtons.js';
11-
import ActionIcons from './ActionIcons.js';
10+
import ActionButtons from './ActionButtons.svelte';
11+
import ActionIcons from './ActionIcons.svelte';
1212

1313
export default Card;
1414

0 commit comments

Comments
 (0)