Skip to content

Commit 8aaf611

Browse files
committed
feat: migrate to common element component instead of elemental components
1 parent 367866a commit 8aaf611

File tree

205 files changed

+971
-1726
lines changed

Some content is hidden

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

205 files changed

+971
-1726
lines changed

MIGRATING.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,12 @@
22

33
This doc contains information that will help you migrate your code from an older version of SMUI to a newer one. Things that you will need to change in your existing code will be written here. It would also be helpful to check the MDC changelog if the upstream MDC versions has changed between SMUI versions.
44

5+
# SMUI 6 -> SMUI 7
6+
7+
## Breaking Changes
8+
9+
- The `@smui/common/elements` components are gone. It is replaced with the `Element` component exported from `@smui/common`. It takes a `tag` prop and creates an element dynamically with that tag name.
10+
511
# SMUI 5 -> SMUI 6
612

713
SMUI 6 migrated to upstream MDC 13.0 from 11.0:

packages/accordion/src/Accordion.types.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
1+
import type { SmuiComponentDev } from '@smui/common';
12
import type Component from './Accordion.svelte';
23

3-
export declare class AccordionComponentDev extends Component {
4+
export declare class AccordionComponentDev
5+
extends Component
6+
implements SmuiComponentDev
7+
{
48
/**
59
* @private
610
* For type checking capabilities only.
@@ -12,4 +16,6 @@ export declare class AccordionComponentDev extends Component {
1216
'use' | 'class' | 'multiple'
1317
> &
1418
Component['$$prop_def'];
19+
20+
getElement(): ReturnType<Component['getElement']>;
1521
}

packages/accordion/src/Header.types.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
1+
import type { SmuiComponentDev } from '@smui/common';
12
import type Component from './Header.svelte';
23

3-
export declare class HeaderComponentDev extends Component {
4+
export declare class HeaderComponentDev
5+
extends Component
6+
implements SmuiComponentDev
7+
{
48
/**
59
* @private
610
* For type checking capabilities only.
@@ -12,4 +16,6 @@ export declare class HeaderComponentDev extends Component {
1216
'use' | 'class' | 'style' | 'ripple'
1317
> &
1418
Component['$$prop_def'];
19+
20+
getElement(): ReturnType<Component['getElement']>;
1521
}

packages/accordion/src/Panel.types.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
1+
import type { SmuiComponentDev } from '@smui/common';
12
import type { PaperComponentDev } from '@smui/paper';
23
import type Component from './Panel.svelte';
34

4-
export declare class PanelComponentDev extends Component {
5+
export declare class PanelComponentDev
6+
extends Component
7+
implements SmuiComponentDev
8+
{
59
/**
610
* @private
711
* For type checking capabilities only.
@@ -22,6 +26,8 @@ export declare class PanelComponentDev extends Component {
2226
| 'extendedElevation'
2327
> &
2428
Component['$$prop_def'];
29+
30+
getElement(): ReturnType<Component['getElement']>;
2531
}
2632

2733
export interface SMUIAccordionPanelAccessor {

packages/autocomplete/src/Autocomplete.types.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
1+
import type { SmuiComponentDev } from '@smui/common';
12
import type { MenuComponentDev } from '@smui/menu';
23
import type { TextfieldComponentDev } from '@smui/textfield';
34
import type { ListComponentDev } from '@smui/list';
45
import type Component from './Autocomplete.svelte';
56

6-
export declare class AutocompleteComponentDev extends Component {
7+
export declare class AutocompleteComponentDev
8+
extends Component
9+
implements SmuiComponentDev
10+
{
711
/**
812
* @private
913
* For type checking capabilities only.
@@ -38,4 +42,6 @@ export declare class AutocompleteComponentDev extends Component {
3842
textfield$label?: never;
3943
textfield$value?: never;
4044
} & Component['$$prop_def'];
45+
46+
getElement(): ReturnType<Component['getElement']>;
4147
}

packages/badge/src/Badge.types.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
1+
import type { SmuiComponentDev } from '@smui/common';
12
import type Component from './Badge.svelte';
23

3-
export declare class BadgeComponentDev extends Component {
4+
export declare class BadgeComponentDev
5+
extends Component
6+
implements SmuiComponentDev
7+
{
48
/**
59
* @private
610
* For type checking capabilities only.
@@ -12,4 +16,6 @@ export declare class BadgeComponentDev extends Component {
1216
'use' | 'class' | 'square' | 'color' | 'position' | 'align'
1317
> &
1418
Component['$$prop_def'];
19+
20+
getElement(): ReturnType<Component['getElement']>;
1521
}

packages/banner/src/Banner.types.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
1+
import type { SmuiComponentDev } from '@smui/common';
12
import type Component from './Banner.svelte';
23

3-
export declare class BannerComponentDev extends Component {
4+
export declare class BannerComponentDev
5+
extends Component
6+
implements SmuiComponentDev
7+
{
48
/**
59
* @private
610
* For type checking capabilities only.
@@ -29,6 +33,8 @@ export declare class BannerComponentDev extends Component {
2933
svelte.JSX.HTMLAttributes<HTMLDivElement>
3034
>[k];
3135
} & Component['$$prop_def'];
36+
37+
getElement(): ReturnType<Component['getElement']>;
3238
}
3339

3440
export { CloseReason } from '@material/banner';

packages/button/src/Button.svelte

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,17 +52,18 @@
5252
>
5353

5454
<script lang="ts">
55+
import type { ComponentType } from 'svelte';
5556
import { setContext, getContext } from 'svelte';
56-
import type { SvelteComponentDev } from 'svelte/internal';
5757
import { get_current_component } from 'svelte/internal';
5858
import type { ActionArray } from '@smui/common/internal';
5959
import {
6060
forwardEventsBuilder,
6161
classMap,
6262
dispatch,
6363
} from '@smui/common/internal';
64-
import { Element } from '@smui/common';
6564
import Ripple from '@smui/ripple';
65+
import type { SmuiComponentDev } from '@smui/common';
66+
import { Element } from '@smui/common';
6667
6768
const forwardEvents = forwardEventsBuilder(get_current_component());
6869
@@ -80,12 +81,12 @@
8081
export let defaultAction = false;
8182
export let secondary = false;
8283
83-
let element: SvelteComponentDev;
84+
let element: SmuiComponentDev;
8485
let internalClasses: { [k: string]: boolean } = {};
8586
let internalStyles: { [k: string]: string } = {};
8687
let context = getContext<string | undefined>('SMUI:button:context');
8788
88-
export let component: typeof SvelteComponentDev = Element;
89+
export let component: ComponentType<SmuiComponentDev> = Element;
8990
export let tag =
9091
component === Element ? (href == null ? 'button' : 'a') : null;
9192

packages/button/src/Button.types.ts

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
1-
import type { SvelteComponentDev } from 'svelte/internal';
1+
import type { SmuiComponentDev, ElementComponentDev } from '@smui/common';
22
import type Component from './Button.svelte';
3-
import type { ButtonComponentDev as ButtonElementComponentDev } from '@smui/common/elements';
43

54
export declare class ButtonComponentDev<
6-
C extends SvelteComponentDev = ButtonElementComponentDev
7-
> extends Component {
5+
T extends string = 'button',
6+
C extends SmuiComponentDev = ElementComponentDev<T>
7+
>
8+
extends Component
9+
implements SmuiComponentDev
10+
{
811
/**
912
* @private
1013
* For type checking capabilities only.
@@ -25,6 +28,9 @@ export declare class ButtonComponentDev<
2528
| 'defaultAction'
2629
| 'secondary'
2730
| 'component'
31+
| 'tag'
2832
> &
2933
Component['$$prop_def'];
34+
35+
getElement(): ReturnType<C['getElement']>;
3036
}

packages/button/src/Group.types.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
1+
import type { SmuiComponentDev } from '@smui/common';
12
import type Component from './Group.svelte';
23

3-
export declare class GroupComponentDev extends Component {
4+
export declare class GroupComponentDev
5+
extends Component
6+
implements SmuiComponentDev
7+
{
48
/**
59
* @private
610
* For type checking capabilities only.
@@ -12,4 +16,6 @@ export declare class GroupComponentDev extends Component {
1216
'use' | 'class' | 'variant'
1317
> &
1418
Component['$$prop_def'];
19+
20+
getElement(): ReturnType<Component['getElement']>;
1521
}

0 commit comments

Comments
 (0)