Skip to content

Commit 85a72c4

Browse files
authored
Merge pull request #157 from silinternational/develop
Release
2 parents 8d7d3fd + bcc25f2 commit 85a72c4

File tree

3 files changed

+381
-124
lines changed

3 files changed

+381
-124
lines changed

README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@ Reusable Svelte components for some internal applications
44

55
## installation
66

7-
To install to your Svelte project, open your project's root directory in a terminal. Type or paste `npm i -D sass@1.50.x material-components-web@13.0.0 @silintl/ui-components` and press enter (versions will vary if you use an older release of this repo). Sass and-material-components web are required to develop additional material web components in your app, but it may depend on your version of npm if they are necessary even if you don't. You should already have svelte@3 installed if you are using this library. If you are using typescript you will probaly need to run `npm i -D tslib` to avoid a material-components-web type error.
7+
To install to your Svelte project, open your project's root directory in a terminal. Type or paste `npm i -D sass@1.50.x material-components-web@13.0.0 @silintl/ui-components` and press enter (versions will vary if you use an older release of this repo). Sass and-material-components web are required to develop additional material web components in your app, but it may depend on your version of npm if they are necessary even if you don't. You should already have svelte@3 installed if you are using this library.
8+
9+
If you are using typescript you will need to run `npm i -D tslib` to avoid a material-components-web type error.
810

911
You will also want to follow the example below for your index.html (app.html for sveltekit templates) for Material Icons to work and for Google fonts to load.
1012
see https://github.com/material-components/material-web#2-write-html-and-javascript

index.d.ts

Lines changed: 328 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,328 @@
1+
declare module '@silintl/ui-components' {
2+
import type { SvelteComponentTyped } from 'svelte'
3+
import type { writable } from 'svelte/store'
4+
5+
export type actions = writable<any[]>
6+
7+
interface ButtonProps extends svelte.JSX.HTMLAttributes<HTMLElementTagNameMap['div']> {
8+
disabled?: boolean
9+
outlined?: boolean
10+
raised?: boolean
11+
prependIcon?: string
12+
appendIcon?: string
13+
url?: string
14+
}
15+
export class Button extends SvelteComponentTyped<ButtonProps> {}
16+
17+
export function isAboveMobile(): boolean
18+
19+
export function isAboveTablet(): boolean
20+
21+
interface CardProps extends svelte.JSX.HTMLAttributes<HTMLElementTagNameMap['div']> {
22+
secondary?: string
23+
outlined?: boolean
24+
color?: string
25+
isClickable?: boolean
26+
noPadding?: boolean
27+
}
28+
export class Card extends SvelteComponentTyped<CardProps> {}
29+
30+
interface CheckboxProps extends svelte.JSX.HTMLAttributes<HTMLElementTagNameMap['div']> {
31+
label?: string
32+
checked?: boolean
33+
disabled?: boolean
34+
uppercase?: boolean
35+
}
36+
export class Checkbox extends SvelteComponentTyped<CheckboxProps> {}
37+
38+
//Datatable
39+
interface DatatableProps extends svelte.JSX.HTMLAttributes<HTMLElementTagNameMap['div']> {
40+
label?: string
41+
numberOfCheckboxes?: number
42+
}
43+
export class Datatable extends SvelteComponentTyped<DatatableProps> {}
44+
45+
export namespace Datatable {
46+
type HeaderProps = svelte.JSX.HTMLAttributes<HTMLElementTagNameMap['div']>
47+
export class Header extends SvelteComponentTyped<HeaderProps> {}
48+
49+
interface DatatableCheckboxProps extends svelte.JSX.HTMLAttributes<HTMLElementTagNameMap['div']> {
50+
disabled?: boolean
51+
rowId?: string
52+
}
53+
export class Checkbox extends SvelteComponentTyped<DatatableCheckboxProps> {}
54+
55+
export namespace Header {
56+
interface ItemProps extends svelte.JSX.HTMLAttributes<HTMLElementTagNameMap['div']> {
57+
numeric?: boolean
58+
columnID?: string
59+
sortable?: boolean
60+
}
61+
export class Item extends SvelteComponentTyped<ItemProps> {}
62+
export class Checkbox extends SvelteComponentTyped<HeaderProps> {}
63+
}
64+
65+
type DataProps = svelte.JSX.HTMLAttributes<HTMLElementTagNameMap['div']>
66+
export class Data extends SvelteComponentTyped<DataProps> {}
67+
68+
export namespace Data {
69+
interface RowProps extends svelte.JSX.HTMLAttributes<HTMLElementTagNameMap['div']> {
70+
clickable?: boolean
71+
}
72+
export class Row extends SvelteComponentTyped<RowProps> {}
73+
74+
export namespace Row {
75+
interface ItemProps extends svelte.JSX.HTMLAttributes<HTMLElementTagNameMap['div']> {
76+
numeric?: boolean
77+
colspan?: number
78+
}
79+
export class Item extends SvelteComponentTyped<ItemProps> {}
80+
}
81+
}
82+
}
83+
84+
export namespace Dialog {
85+
export type AlertButton = {
86+
label: string
87+
action: string
88+
class: string
89+
}
90+
interface AlertProps extends svelte.JSX.HTMLAttributes<HTMLElementTagNameMap['div']> {
91+
open?: boolean
92+
title?: string
93+
titleIcon?: string
94+
defaultAction?: string
95+
buttons?: AlertButton[]
96+
}
97+
export class Alert extends SvelteComponentTyped<AlertProps> {}
98+
99+
interface SimpleProps extends svelte.JSX.HTMLAttributes<HTMLElementTagNameMap['div']> {
100+
open?: boolean
101+
title?: string
102+
}
103+
export class Simple extends SvelteComponentTyped<SimpleProps> {}
104+
}
105+
106+
interface DrawerProps extends svelte.JSX.HTMLAttributes<HTMLElementTagNameMap['div']> {
107+
title?: string
108+
subtitle?: string
109+
menuItems?: {
110+
icon: string, label: string, url: string, urlPattern: string, hide: boolean, button: boolean, tooltip: string
111+
}[]
112+
dismissible?: boolean
113+
hasTopAppBar?: boolean
114+
hideForTablet?: boolean
115+
hideForPhonesOnly?: boolean
116+
isFullHeightMenu?: boolean
117+
miniMenu?: boolean
118+
modal?: boolean
119+
toggle?: boolean
120+
currentUrl?: string
121+
}
122+
export class Drawer extends SvelteComponentTyped<DrawerProps> {}
123+
124+
interface FabProps extends svelte.JSX.HTMLAttributes<HTMLElementTagNameMap['div']> {
125+
icon?: string
126+
label?: string
127+
mini?: boolean
128+
extended?: boolean
129+
url?: string
130+
action?: Function
131+
}
132+
export class Fab extends SvelteComponentTyped<FabProps> {}
133+
134+
interface IconButtonProps extends svelte.JSX.HTMLAttributes<HTMLElementTagNameMap['div']> {
135+
icon?: string
136+
ariaLabel?: string
137+
url?: string
138+
disabled?: boolean
139+
}
140+
export class IconButton extends SvelteComponentTyped<IconButtonProps> {}
141+
142+
interface ListProps extends svelte.JSX.HTMLAttributes<HTMLElementTagNameMap['div']> {
143+
twoLine?: boolean
144+
avatar?: boolean
145+
}
146+
export class List extends SvelteComponentTyped<ListProps> {}
147+
148+
type MenuItem = {
149+
icon?: string
150+
label?: string
151+
url?: string
152+
action?: VoidFunction
153+
subtitle?: string
154+
}
155+
interface MenuProps extends svelte.JSX.HTMLAttributes<HTMLElementTagNameMap['div']> {
156+
menuItems?: MenuItem[]
157+
menuOpen?: boolean
158+
}
159+
export class Menu extends SvelteComponentTyped<MenuProps> {}
160+
161+
interface MoneyInputProps extends svelte.JSX.HTMLAttributes<HTMLElementTagNameMap['div']> {
162+
label?: string
163+
value?: number
164+
placeholder?: string
165+
autofocus?: boolean
166+
disabled?: boolean
167+
required?: boolean
168+
minValue?: string
169+
maxValue?: string
170+
step?: string
171+
description?: string
172+
}
173+
export class MoneyInput extends SvelteComponentTyped<MoneyInputProps> {}
174+
175+
export namespace Progress {
176+
type CircularProps = svelte.JSX.HTMLAttributes<HTMLElementTagNameMap['div']>
177+
export class Circular extends SvelteComponentTyped<CircularProps> {}
178+
179+
interface LinearProps extends svelte.JSX.HTMLAttributes<HTMLElementTagNameMap['div']> {
180+
indeterminate?: boolean
181+
value?: number
182+
}
183+
export class Linear extends SvelteComponentTyped<LinearProps> {}
184+
}
185+
186+
interface SelectProps extends svelte.JSX.HTMLAttributes<HTMLElementTagNameMap['div']> {
187+
options?: { name: string, id: number }[]
188+
width?: string
189+
disabled?: boolean
190+
selectedID?: string
191+
}
192+
export class Select extends SvelteComponentTyped<SelectProps> {}
193+
194+
interface SwitchProps extends svelte.JSX.HTMLAttributes<HTMLElementTagNameMap['div']> {
195+
label?: string
196+
disabled?: boolean
197+
selected?: boolean
198+
}
199+
export class Switch extends SvelteComponentTyped<SwitchProps> {}
200+
201+
interface SnackbarProps extends svelte.JSX.HTMLAttributes<HTMLElementTagNameMap['div']> {
202+
// no exported members
203+
}
204+
export class Snackbar extends SvelteComponentTyped<SnackbarProps> {}
205+
206+
interface TabBarProps extends svelte.JSX.HTMLAttributes<HTMLElementTagNameMap['div']> {
207+
tab?: number
208+
}
209+
export class TabBar extends SvelteComponentTyped<TabBarProps> {}
210+
211+
interface TextAreaProps extends svelte.JSX.HTMLAttributes<HTMLElementTagNameMap['div']> {
212+
label?: string
213+
value?: string
214+
placeholder?: string
215+
rows?: number | string
216+
required?: boolean
217+
maxlength?: number
218+
autofocus?: boolean
219+
rtl?: boolean
220+
description?: string
221+
}
222+
export class TextArea extends SvelteComponentTyped<TextAreaProps> {}
223+
224+
interface TextFieldProps extends svelte.JSX.HTMLAttributes<HTMLElementTagNameMap['div']> {
225+
label?: string
226+
value?: string
227+
placeholder?: string
228+
maxlength?: number
229+
autofocus?: boolean
230+
disabled?: boolean
231+
required?: boolean
232+
description?: string
233+
}
234+
export class TextField extends SvelteComponentTyped<TextFieldProps> {}
235+
236+
interface TooltipProps extends svelte.JSX.HTMLAttributes<HTMLElementTagNameMap['div']> {
237+
tooltipID?: string
238+
positionX?: 'start' | 'center' | 'end'
239+
positionY?: 'above' | 'below'
240+
}
241+
export class Tooltip extends SvelteComponentTyped<TooltipProps> {}
242+
243+
export namespace Tooltip {
244+
interface TooltipWrapperProps extends svelte.JSX.HTMLAttributes<HTMLElementTagNameMap['div']> {
245+
ariaDescribedBy?: string
246+
}
247+
export class Wrapper extends SvelteComponentTyped<TooltipWrapperProps> {}
248+
}
249+
250+
interface TopAppBarProps extends svelte.JSX.HTMLAttributes<HTMLElementTagNameMap['div']> {
251+
bgColorIsVariant?: boolean
252+
dense?: boolean
253+
fixed?: boolean
254+
navIconBreakpointClass?: string
255+
}
256+
export class TopAppBar extends SvelteComponentTyped<TopAppBarProps> {}
257+
258+
interface BadgeProps extends svelte.JSX.HTMLAttributes<HTMLElementTagNameMap['div']> {
259+
color?: string
260+
borderRadius?: string
261+
padding?: string
262+
bordered?: boolean
263+
}
264+
export class Badge extends SvelteComponentTyped<BadgeProps> {}
265+
266+
interface CustomCardProps extends svelte.JSX.HTMLAttributes<HTMLElementTagNameMap['div']> {
267+
src?: string
268+
alt?: string
269+
title?: string
270+
icon?: string
271+
disabled?: boolean
272+
buttons?: { label: string, url: string }[]
273+
footerText?: string
274+
}
275+
export class CustomCard extends SvelteComponentTyped<CustomCardProps> {}
276+
277+
interface FileDropAreaProps extends svelte.JSX.HTMLAttributes<HTMLElementTagNameMap['div']> {
278+
raised?: boolean
279+
outlined?: boolean
280+
mimeType?: string
281+
uploading?: boolean
282+
}
283+
export class FileDropArea extends SvelteComponentTyped<FileDropAreaProps> {}
284+
285+
interface FormProps extends svelte.JSX.HTMLAttributes<HTMLElementTagNameMap['div']> {
286+
// no exported members
287+
}
288+
export class Form extends SvelteComponentTyped<FormProps> {}
289+
290+
interface PageProps extends svelte.JSX.HTMLAttributes<HTMLElementTagNameMap['div']> {
291+
loading?: boolean
292+
title?: string
293+
layout?: string
294+
center?: boolean
295+
noProgress?: boolean
296+
}
297+
export class Page extends SvelteComponentTyped<PageProps> {}
298+
299+
interface StaticChipProps extends svelte.JSX.HTMLAttributes<HTMLElementTagNameMap['div']> {
300+
bgColor?: string
301+
}
302+
export class StaticChip extends SvelteComponentTyped<StaticChipProps> {}
303+
304+
export function setNotice(label: string, action?: string, callback?: Function): void
305+
306+
interface SearchableSelectProps extends svelte.JSX.HTMLAttributes<HTMLElementTagNameMap['div']> {
307+
options: { [key: string]: string }
308+
choice?: string
309+
placeholder?: string
310+
padding?: string
311+
width?: string
312+
maxlength?: string
313+
disabled?: boolean
314+
}
315+
export class SearchableSelect extends SvelteComponentTyped<SearchableSelectProps> {}
316+
317+
type steps = 'title' | 'content' | 'left' | 'right' | 'previous' | 'next' | 'target'
318+
319+
interface TourProps extends svelte.JSX.HTMLAttributes<HTMLElementTagNameMap['div']> {
320+
steps?: { [key in steps]: string | number }[]
321+
data?: { [key: string]: string }
322+
}
323+
export class Tour extends SvelteComponentTyped<TourProps> {}
324+
}
325+
326+
module '@silintl/ui-components/random' {
327+
export function generateRandomID(prefix?: string): string
328+
}

0 commit comments

Comments
 (0)