Skip to content

Commit

Permalink
feat: add prop types for HTML props for components
Browse files Browse the repository at this point in the history
  • Loading branch information
hperrin committed Sep 13, 2021
1 parent f4b8568 commit f5c6e53
Show file tree
Hide file tree
Showing 262 changed files with 2,477 additions and 342 deletions.
30 changes: 30 additions & 0 deletions packages/banner/Banner.types.ts
Original file line number Diff line number Diff line change
@@ -1 +1,31 @@
import type Component from './Banner.svelte';

export declare class BannerComponentDev extends Component {
/**
* @private
* For type checking capabilities only.
* Does not exist at runtime.
* ### DO NOT USE!
*/
$$prop_def: Omit<
Partial<svelte.JSX.HTMLAttributes<HTMLDivElement>>,
keyof Component['$$prop_def']
> &
{
[k in keyof Partial<
svelte.JSX.HTMLAttributes<HTMLDivElement>
> as `textWrapper\$${k}`]?: Partial<
svelte.JSX.HTMLAttributes<HTMLDivElement>
>[k];
} &
{
[k in keyof Partial<
svelte.JSX.HTMLAttributes<HTMLDivElement>
> as `graphic\$${k}`]?: Partial<
svelte.JSX.HTMLAttributes<HTMLDivElement>
>[k];
} &
Component['$$prop_def'];
}

export { CloseReason } from '@material/banner';
2 changes: 2 additions & 0 deletions packages/banner/ambient.d.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
declare namespace svelte.JSX {
interface HTMLAttributes<T> {}

interface HTMLProps<T extends EventTarget> extends HTMLAttributes<T> {
['onSMUIBannerButton:primaryActionClick']?: (
event: CustomEvent<any> & { target: T }
Expand Down
3 changes: 2 additions & 1 deletion packages/banner/index.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
import Banner from './Banner.svelte';
import type { BannerComponentDev } from './Banner.types';
export * from './Banner.types';

import { Label, Icon } from '@smui/common';

export default Banner;
export default Banner as typeof BannerComponentDev;

export { Label, Icon };
3 changes: 1 addition & 2 deletions packages/button/Button.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -61,8 +61,7 @@
ActionArray,
} from '@smui/common/internal';
import Ripple from '@smui/ripple';
import A from '@smui/common/A.svelte';
import Button from '@smui/common/Button.svelte';
import { A, Button } from '@smui/common/elements';
const forwardEvents = forwardEventsBuilder(get_current_component());
Expand Down
19 changes: 19 additions & 0 deletions packages/button/Button.types.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import type { SMUIComponent } from '@smui/common';
import type Component from './Button.svelte';
import type { ButtonComponentDev as ButtonElementComponentDev } from '@smui/common/elements';

export declare class ButtonComponentDev<
C extends SMUIComponent = ButtonElementComponentDev
> extends Component {
/**
* @private
* For type checking capabilities only.
* Does not exist at runtime.
* ### DO NOT USE!
*/
$$prop_def: Omit<
Partial<svelte.JSX.HTMLAttributes<ReturnType<C['getElement']>>>,
keyof Component['$$prop_def']
> &
Component['$$prop_def'];
}
15 changes: 15 additions & 0 deletions packages/button/Group.types.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import type Component from './Group.svelte';

export declare class GroupComponentDev extends Component {
/**
* @private
* For type checking capabilities only.
* Does not exist at runtime.
* ### DO NOT USE!
*/
$$prop_def: Omit<
Partial<svelte.JSX.HTMLAttributes<HTMLDivElement>>,
keyof Component['$$prop_def']
> &
Component['$$prop_def'];
}
10 changes: 4 additions & 6 deletions packages/button/GroupItem.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,12 @@
export type GroupItemProps = {
addClass?: (className: string) => void;
removeClass?: (className: string) => void;
};

export default function GroupItem(
node: Element,
{
addClass = (className) => node.classList.add(className),
removeClass = (className) => node.classList.remove(className),
}: GroupItemProps = {}
}: {
addClass?: (className: string) => void;
removeClass?: (className: string) => void;
} = {}
) {
addClass('smui-button__group-item');

Expand Down
5 changes: 0 additions & 5 deletions packages/button/SMUIComponent.d.ts

This file was deleted.

3 changes: 3 additions & 0 deletions packages/button/ambient.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
declare namespace svelte.JSX {
interface HTMLAttributes<T> {}
}
10 changes: 7 additions & 3 deletions packages/button/index.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
import Button from './Button.svelte';
import type { ButtonComponentDev } from './Button.types';
export * from './Button.types';

import Group from './Group.svelte';
export * from './GroupItem';
import GroupComponent from './Group.svelte';
import type { GroupComponentDev } from './Group.types';
export * from './Group.types';
const Group = GroupComponent as typeof GroupComponentDev;
import GroupItem from './GroupItem';
import { Label, Icon } from '@smui/common';

export default Button;
export default Button as typeof ButtonComponentDev;

export { Group, GroupItem, Label, Icon };
5 changes: 2 additions & 3 deletions packages/card/ActionButtons.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
import type { SMUIComponent } from '@smui/common';
import { classAdderBuilder } from '@smui/common/internal';
import Div from '@smui/common/Div.svelte';
import { Div } from '@smui/common/elements';

export default classAdderBuilder({
class: 'mdc-card__action-buttons',
component: Div as typeof SMUIComponent,
component: Div,
});
5 changes: 2 additions & 3 deletions packages/card/ActionIcons.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
import type { SMUIComponent } from '@smui/common';
import { classAdderBuilder } from '@smui/common/internal';
import Div from '@smui/common/Div.svelte';
import { Div } from '@smui/common/elements';

export default classAdderBuilder({
class: 'mdc-card__action-icons',
component: Div as typeof SMUIComponent,
component: Div,
});
15 changes: 15 additions & 0 deletions packages/card/Actions.types.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import type Component from './Actions.svelte';

export declare class ActionsComponentDev extends Component {
/**
* @private
* For type checking capabilities only.
* Does not exist at runtime.
* ### DO NOT USE!
*/
$$prop_def: Omit<
Partial<svelte.JSX.HTMLAttributes<HTMLDivElement>>,
keyof Component['$$prop_def']
> &
Component['$$prop_def'];
}
15 changes: 15 additions & 0 deletions packages/card/Card.types.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import type Component from './Card.svelte';

export declare class CardComponentDev extends Component {
/**
* @private
* For type checking capabilities only.
* Does not exist at runtime.
* ### DO NOT USE!
*/
$$prop_def: Omit<
Partial<svelte.JSX.HTMLAttributes<HTMLDivElement>>,
keyof Component['$$prop_def']
> &
Component['$$prop_def'];
}
5 changes: 2 additions & 3 deletions packages/card/Content.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
import type { SMUIComponent } from '@smui/common';
import { classAdderBuilder } from '@smui/common/internal';
import Div from '@smui/common/Div.svelte';
import { Div } from '@smui/common/elements';

export default classAdderBuilder({
class: 'smui-card__content',
component: Div as typeof SMUIComponent,
component: Div,
});
15 changes: 15 additions & 0 deletions packages/card/Media.types.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import type Component from './Media.svelte';

export declare class MediaComponentDev extends Component {
/**
* @private
* For type checking capabilities only.
* Does not exist at runtime.
* ### DO NOT USE!
*/
$$prop_def: Omit<
Partial<svelte.JSX.HTMLAttributes<HTMLDivElement>>,
keyof Component['$$prop_def']
> &
Component['$$prop_def'];
}
5 changes: 2 additions & 3 deletions packages/card/MediaContent.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
import type { SMUIComponent } from '@smui/common';
import { classAdderBuilder } from '@smui/common/internal';
import Div from '@smui/common/Div.svelte';
import { Div } from '@smui/common/elements';

export default classAdderBuilder({
class: 'mdc-card__media-content',
component: Div as typeof SMUIComponent,
component: Div,
});
15 changes: 15 additions & 0 deletions packages/card/PrimaryAction.types.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import type Component from './PrimaryAction.svelte';

export declare class PrimaryActionComponentDev extends Component {
/**
* @private
* For type checking capabilities only.
* Does not exist at runtime.
* ### DO NOT USE!
*/
$$prop_def: Omit<
Partial<svelte.JSX.HTMLAttributes<HTMLDivElement>>,
keyof Component['$$prop_def']
> &
Component['$$prop_def'];
}
3 changes: 3 additions & 0 deletions packages/card/ambient.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
declare namespace svelte.JSX {
interface HTMLAttributes<T> {}
}
19 changes: 15 additions & 4 deletions packages/card/index.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,25 @@
import Card from './Card.svelte';
import type { CardComponentDev } from './Card.types';
export * from './Card.types';

import Content from './Content';
import PrimaryAction from './PrimaryAction.svelte';
import Media from './Media.svelte';
import PrimaryActionComponent from './PrimaryAction.svelte';
import type { PrimaryActionComponentDev } from './PrimaryAction.types';
export * from './PrimaryAction.types';
const PrimaryAction = PrimaryActionComponent as typeof PrimaryActionComponentDev;
import MediaComponent from './Media.svelte';
import type { MediaComponentDev } from './Media.types';
export * from './Media.types';
const Media = MediaComponent as typeof MediaComponentDev;
import MediaContent from './MediaContent';
import Actions from './Actions.svelte';
import ActionsComponent from './Actions.svelte';
import type { ActionsComponentDev } from './Actions.types';
export * from './Actions.types';
const Actions = ActionsComponent as typeof ActionsComponentDev;
import ActionButtons from './ActionButtons';
import ActionIcons from './ActionIcons';

export default Card;
export default Card as typeof CardComponentDev;

export {
Content,
Expand Down
27 changes: 27 additions & 0 deletions packages/checkbox/Checkbox.types.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import type Component from './Checkbox.svelte';

export declare class CheckboxComponentDev extends Component {
/**
* @private
* For type checking capabilities only.
* Does not exist at runtime.
* ### DO NOT USE!
*/
$$prop_def: Omit<
Partial<svelte.JSX.HTMLAttributes<HTMLDivElement>>,
keyof Component['$$prop_def']
> &
{
[k in keyof Partial<
svelte.JSX.HTMLAttributes<HTMLInputElement>
> as `input\$${k}`]?: Partial<
svelte.JSX.HTMLAttributes<HTMLInputElement>
>[k];
} & {
input$type?: never;
input$disabled?: never;
input$value?: never;
input$checked?: never;
input$group?: never;
} & Component['$$prop_def'];
}
3 changes: 3 additions & 0 deletions packages/checkbox/ambient.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
declare namespace svelte.JSX {
interface HTMLAttributes<T> {}
}
4 changes: 3 additions & 1 deletion packages/checkbox/index.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import Checkbox from './Checkbox.svelte';
import type { CheckboxComponentDev } from './Checkbox.types';
export * from './Checkbox.types';

export default Checkbox;
export default Checkbox as typeof CheckboxComponentDev;
15 changes: 15 additions & 0 deletions packages/chips/Checkmark.types.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import type Component from './Checkmark.svelte';

export declare class CheckmarkComponentDev extends Component {
/**
* @private
* For type checking capabilities only.
* Does not exist at runtime.
* ### DO NOT USE!
*/
$$prop_def: Omit<
Partial<svelte.JSX.HTMLAttributes<HTMLSpanElement>>,
keyof Component['$$prop_def']
> &
Component['$$prop_def'];
}
2 changes: 1 addition & 1 deletion packages/chips/Chip.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@
ActionArray,
} from '@smui/common/internal';
import Ripple from '@smui/ripple';
import Div from '@smui/common/Div.svelte';
import { Div } from '@smui/common/elements';
import type { SMUIChipsPrimaryActionAccessor } from './Text.types';
import type { SMUIChipsTrailingActionAccessor } from './TrailingAction.types';
Expand Down
20 changes: 20 additions & 0 deletions packages/chips/Chip.types.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,23 @@
import type { SMUIComponent } from '@smui/common';
import type Component from './Chip.svelte';
import type { DivComponentDev as DivElementComponentDev } from '@smui/common/elements';

export declare class ChipComponentDev<
C extends SMUIComponent = DivElementComponentDev
> extends Component {
/**
* @private
* For type checking capabilities only.
* Does not exist at runtime.
* ### DO NOT USE!
*/
$$prop_def: Omit<
Partial<svelte.JSX.HTMLAttributes<ReturnType<C['getElement']>>>,
keyof Component['$$prop_def']
> &
Component['$$prop_def'];
}

export interface SMUIChipsChipAccessor {
chipId: any;
readonly selected: boolean;
Expand Down
15 changes: 15 additions & 0 deletions packages/chips/LeadingIcon.types.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import type Component from './LeadingIcon.svelte';

export declare class LeadingIconComponentDev extends Component {
/**
* @private
* For type checking capabilities only.
* Does not exist at runtime.
* ### DO NOT USE!
*/
$$prop_def: Omit<
Partial<svelte.JSX.HTMLAttributes<HTMLElement>>,
keyof Component['$$prop_def']
> &
Component['$$prop_def'];
}
2 changes: 1 addition & 1 deletion packages/chips/Set.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@
useActions,
ActionArray,
} from '@smui/common/internal';
import ContextFragment from '@smui/common/ContextFragment.svelte';
import { ContextFragment } from '@smui/common';
import type { SMUIChipsChipAccessor } from './Chip.types';
Expand Down

0 comments on commit f5c6e53

Please sign in to comment.