Skip to content

Commit 61b9395

Browse files
committed
feat: redo type system to bring types into their svelte files
1 parent bf7b2a4 commit 61b9395

File tree

269 files changed

+4615
-5801
lines changed

Some content is hidden

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

269 files changed

+4615
-5801
lines changed

package-lock.json

Lines changed: 2670 additions & 3283 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/accordion/src/Accordion.svelte

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,18 +21,26 @@
2121

2222
<script lang="ts">
2323
import { get_current_component } from 'svelte/internal';
24+
import type { SmuiAttrs } from '@smui/common';
2425
import type { ActionArray } from '@smui/common/internal';
2526
import {
2627
forwardEventsBuilder,
2728
classMap,
2829
useActions,
2930
} from '@smui/common/internal';
3031
32+
type OwnProps = {
33+
use?: ActionArray;
34+
class?: string;
35+
multiple?: boolean;
36+
};
37+
type $$Props = OwnProps & SmuiAttrs<'div', OwnProps>;
38+
3139
import type { SMUIAccordionPanelAccessor } from './Panel.types.js';
3240
3341
const forwardEvents = forwardEventsBuilder(get_current_component());
3442
35-
// Remember to update types file if you add/remove/rename props.
43+
// Remember to update $$Props if you add/remove/rename props.
3644
export let use: ActionArray = [];
3745
let className = '';
3846
export { className as class };

packages/accordion/src/Accordion.types.ts

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

packages/accordion/src/Header.svelte

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@
5353
<script lang="ts">
5454
import { getContext } from 'svelte';
5555
import { get_current_component } from 'svelte/internal';
56+
import type { SmuiAttrs } from '@smui/common';
5657
import type { ActionArray } from '@smui/common/internal';
5758
import {
5859
forwardEventsBuilder,
@@ -62,9 +63,17 @@
6263
} from '@smui/common/internal';
6364
import Ripple from '@smui/ripple';
6465
66+
type OwnProps = {
67+
use?: ActionArray;
68+
class?: string;
69+
style?: string;
70+
ripple?: boolean;
71+
};
72+
type $$Props = OwnProps & SmuiAttrs<'div', OwnProps>;
73+
6574
const forwardEvents = forwardEventsBuilder(get_current_component());
6675
67-
// Remember to update types file if you add/remove/rename props.
76+
// Remember to update $$Props if you add/remove/rename props.
6877
export let use: ActionArray = [];
6978
let className = '';
7079
export { className as class };

packages/accordion/src/Header.types.ts

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

packages/accordion/src/Panel.svelte

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,14 +31,32 @@
3131
classMap,
3232
dispatch,
3333
} from '@smui/common/internal';
34-
import type { PaperComponentDev } from '@smui/paper';
3534
import Paper from '@smui/paper';
3635
3736
import type { SMUIAccordionPanelAccessor } from './Panel.types.js';
3837
38+
type OwnProps = {
39+
use?: ActionArray;
40+
class?: string;
41+
variant?: 'raised' | 'unelevated' | 'outlined';
42+
color?: 'default' | 'primary' | 'secondary' | string;
43+
elevation?: number;
44+
open?: boolean;
45+
disabled?: boolean;
46+
nonInteractive?: boolean;
47+
extend?: boolean;
48+
extendedElevation?: number;
49+
};
50+
type $$Props = {
51+
[P in Exclude<
52+
keyof Paper['$$prop_def'],
53+
keyof OwnProps
54+
>]?: Paper['$$prop_def'][P];
55+
} & OwnProps;
56+
3957
const forwardEvents = forwardEventsBuilder(get_current_component());
4058
41-
// Remember to update types file if you add/remove/rename props.
59+
// Remember to update $$Props if you add/remove/rename props.
4260
export let use: ActionArray = [];
4361
$: usePass = [forwardEvents, ...use] as ActionArray;
4462
let className = '';
@@ -52,7 +70,7 @@
5270
export let extend = false;
5371
export let extendedElevation = 3;
5472
55-
let element: PaperComponentDev;
73+
let element: Paper;
5674
let accessor: SMUIAccordionPanelAccessor;
5775
let opened = open;
5876
@@ -171,7 +189,7 @@
171189
open = value;
172190
}
173191
174-
export function getElement(): ReturnType<PaperComponentDev['getElement']> {
192+
export function getElement() {
175193
return element.getElement();
176194
}
177195
</script>

packages/accordion/src/Panel.types.ts

Lines changed: 0 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,3 @@
1-
import type { ComponentProps } from 'svelte';
2-
import type { PaperComponentDev } from '@smui/paper';
3-
import type Component from './Panel.svelte';
4-
5-
export declare class PanelComponentDev extends Component {
6-
/**
7-
* @private
8-
* For type checking capabilities only.
9-
* Does not exist at runtime.
10-
* ### DO NOT USE!
11-
*/
12-
$$prop_def: Omit<
13-
PaperComponentDev['$$prop_def'],
14-
| 'use'
15-
| 'class'
16-
| 'variant'
17-
| 'color'
18-
| 'elevation'
19-
| 'open'
20-
| 'disabled'
21-
| 'nonInteractive'
22-
| 'extend'
23-
| 'extendedElevation'
24-
> &
25-
ComponentProps<Component>;
26-
}
27-
281
export interface SMUIAccordionPanelAccessor {
292
readonly open: boolean;
303
setOpen(value: boolean): void;

packages/accordion/src/index.ts

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,10 @@
1-
import type { ComponentType } from 'svelte';
2-
31
import Accordion from './Accordion.svelte';
4-
import type { AccordionComponentDev } from './Accordion.types.js';
5-
export * from './Accordion.types.js';
62

7-
import PanelComponent from './Panel.svelte';
8-
import type { PanelComponentDev } from './Panel.types.js';
3+
import Panel from './Panel.svelte';
94
export * from './Panel.types.js';
10-
const Panel = PanelComponent as ComponentType<PanelComponentDev>;
11-
12-
import HeaderComponent from './Header.svelte';
13-
import type { HeaderComponentDev } from './Header.types.js';
14-
export * from './Header.types.js';
15-
const Header = HeaderComponent as ComponentType<HeaderComponentDev>;
16-
5+
import Header from './Header.svelte';
176
import { Content } from '@smui/paper';
187

19-
export default Accordion as ComponentType<AccordionComponentDev>;
8+
export default Accordion;
209

2110
export { Panel, Header, Content };

packages/autocomplete/src/Autocomplete.svelte

Lines changed: 41 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@
8888

8989
<script lang="ts">
9090
import { get_current_component } from 'svelte/internal';
91+
import type { SmuiAttrs } from '@smui/common';
9192
import type { ActionArray } from '@smui/common/internal';
9293
import {
9394
forwardEventsBuilder,
@@ -98,15 +99,52 @@
9899
dispatch,
99100
} from '@smui/common/internal';
100101
import Textfield from '@smui/textfield';
101-
import type { MenuComponentDev } from '@smui/menu';
102102
import Menu from '@smui/menu';
103103
import type { SMUIListAccessor, SMUIListItemAccessor } from '@smui/list';
104104
import List, { Item, Text } from '@smui/list';
105105
import { Anchor } from '@smui/menu-surface';
106106
107+
type OwnProps = {
108+
use?: ActionArray;
109+
class?: string;
110+
variant?: 'text' | 'raised' | 'unelevated' | 'outlined';
111+
options?: (() => Promise<any[]>) | any[];
112+
value?: any;
113+
getOptionDisabled?: (option: any) => boolean;
114+
getOptionLabel?: (option: any) => string;
115+
text?: string;
116+
label?: string | undefined;
117+
disabled?: boolean;
118+
toggle?: boolean;
119+
combobox?: boolean;
120+
clearOnBlur?: boolean;
121+
selectOnExactMatch?: boolean;
122+
showMenuWithNoInput?: boolean;
123+
noMatchesActionDisabled?: boolean;
124+
search?: (input: string) => Promise<any[] | false>;
125+
menu$class?: string;
126+
menu$anchor?: boolean;
127+
menu$anchorCorner?: Menu['$$prop_def']['anchorCorner'];
128+
};
129+
type $$Props = OwnProps &
130+
SmuiAttrs<'div', OwnProps> & {
131+
[k in keyof Menu['$$prop_def'] as `menu\$${k}`]?: Menu['$$prop_def'][k];
132+
} & {
133+
[k in keyof Textfield['$$prop_def'] as `textfield\$${k}`]?: Textfield['$$prop_def'][k];
134+
} & {
135+
[k in keyof InstanceType<
136+
typeof List
137+
>['$$prop_def'] as `list\$${k}`]?: InstanceType<
138+
typeof List
139+
>['$$prop_def'][k];
140+
} & {
141+
textfield$label?: never;
142+
textfield$value?: never;
143+
};
144+
107145
const forwardEvents = forwardEventsBuilder(get_current_component());
108146
109-
// Remember to update types file if you add/remove/rename props.
147+
// Remember to update $$Props if you add/remove/rename props.
110148
export let use: ActionArray = [];
111149
let className = '';
112150
export { className as class };
@@ -152,7 +190,7 @@
152190
};
153191
export let menu$class = '';
154192
export let menu$anchor = false;
155-
export let menu$anchorCorner: MenuComponentDev['$$prop_def']['anchorCorner'] =
193+
export let menu$anchorCorner: Menu['$$prop_def']['anchorCorner'] =
156194
'BOTTOM_START';
157195
158196
let element: HTMLDivElement;

packages/autocomplete/src/Autocomplete.types.ts

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

0 commit comments

Comments
 (0)