Skip to content

Commit 03fd673

Browse files
committed
feat: ✨ add guild card
add mount test
1 parent 6550685 commit 03fd673

File tree

4 files changed

+132
-0
lines changed

4 files changed

+132
-0
lines changed

src/lib/components/guild.svelte

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
<!--
2+
Examples for guilds, users, events and presentations
3+
Guilds:
4+
https://beta.guild.host/embeds/guild/svelte-society-london/card
5+
https://beta.guild.host/embeds/guild/svelte-society-london/events/latest
6+
https://beta.guild.host/embeds/guild/svelte-society-london/events/upcoming
7+
https://beta.guild.host/embeds/guild/svelte-society-london/events/past
8+
https://beta.guild.host/embeds/guild/svelte-society-london/presentations/latest
9+
https://beta.guild.host/embeds/guild/svelte-society-london/presentations/upcoming
10+
https://beta.guild.host/embeds/guild/svelte-society-london/presentations/other
11+
Users:
12+
https://beta.guild.host/embeds/user/spences10/card
13+
https://beta.guild.host/embeds/user/spences10/events/latest
14+
https://beta.guild.host/embeds/user/spences10/events/upcoming
15+
https://beta.guild.host/embeds/user/spences10/events/past
16+
https://beta.guild.host/embeds/user/spences10/presentations/latest
17+
https://beta.guild.host/embeds/user/spences10/presentations/upcoming
18+
https://beta.guild.host/embeds/user/spences10/presentations/other
19+
Events:
20+
https://beta.guild.host/embeds/event/svelte-london-february-h0ghig/card
21+
https://beta.guild.host/embeds/event/svelte-london-february-h0ghig/item
22+
Presentations:
23+
https://beta.guild.host/embeds/presentation/microfrontends-with-e6mtnf/card
24+
https://beta.guild.host/embeds/presentation/microfrontends-with-e6mtnf/item
25+
-->
26+
<script lang="ts">
27+
import GeneralObserver from './general-observer.svelte'
28+
29+
export let height: string = '350'
30+
export let width: string = '100'
31+
export let card_id: string
32+
export let type: 'guild' | 'user' | 'event' | 'presentation' =
33+
'guild'
34+
export let display_type:
35+
| 'card'
36+
| 'item'
37+
| 'events/latest'
38+
| 'events/upcoming'
39+
| 'events/past'
40+
| 'presentations/latest'
41+
| 'presentations/upcoming'
42+
| 'presentations/other' = 'card'
43+
</script>
44+
45+
<GeneralObserver>
46+
<div
47+
class="guild-card"
48+
style={`
49+
position: relative;
50+
height: ${height}px;
51+
width: ${width}%;
52+
`}
53+
>
54+
<iframe
55+
data-testid="guild-card"
56+
title={`guild-card-${card_id}`}
57+
src={`https://beta.guild.host/embeds/${type}/${card_id}/${display_type}`}
58+
{height}
59+
{width}
60+
frameborder="0"
61+
scrolling="no"
62+
style={`
63+
position: absolute;
64+
top: 0;
65+
left: 0;
66+
width: 100%;
67+
height: 100%;
68+
border-radius: 0.5rem;
69+
`}
70+
/>
71+
</div>
72+
</GeneralObserver>

src/lib/components/guild.test.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import Guild from '$lib/components/guild.svelte'
2+
import { cleanup, render } from '@testing-library/svelte'
3+
import { afterEach, describe, expect, it, vi } from 'vitest'
4+
5+
globalThis.IntersectionObserver = vi.fn(() => ({
6+
observe: () => null,
7+
unobserve: () => null,
8+
disconnect: () => null,
9+
})) as unknown as typeof globalThis.IntersectionObserver
10+
11+
describe('Guild', () => {
12+
afterEach(() => cleanup())
13+
14+
it('mounts', () => {
15+
const { container } = render(Guild)
16+
expect(container).toBeTruthy()
17+
})
18+
})

src/lib/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ export { default as Deezer } from './components/deezer.svelte'
55
export { default as GeneralObserver } from './components/general-observer.svelte'
66
export { default as GenericEmbed } from './components/generic-embed.svelte'
77
export { default as Gist } from './components/gist.svelte'
8+
export { default as Guild } from './components/guild.svelte'
89
export { default as Relive } from './components/relive.svelte'
910
export { default as SimpleCast } from './components/simple-cast.svelte'
1011
export { default as Slides } from './components/slides.svelte'

src/routes/+page.md

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
Deezer,
77
GenericEmbed,
88
Gist,
9+
Guild,
910
Relive,
1011
SimpleCast,
1112
Slides,
@@ -71,6 +72,7 @@ or open a [PR](https://github.com/spences10/sveltekit-embed/pulls).
7172
- [Deezer](#deezer)
7273
- [GenericEmbed](#genericembed)
7374
- [Gist](#gist)
75+
- [Guild](#guild)
7476
- [Relive](#relive)
7577
- [SimpleCast](#simplecast)
7678
- [Slides](#slides)
@@ -255,6 +257,45 @@ Output:
255257

256258
<Gist gistUri="Ennoriel/8c89dc3615292f0a40b04f4f876afd77" />
257259

260+
## Guild
261+
262+
Props:
263+
264+
```ts
265+
height: string = '350'
266+
width: string = '100'
267+
card_id: string
268+
type: 'guild' | 'user' | 'event' | 'presentation' =
269+
'guild'
270+
display_type:
271+
| 'card'
272+
| 'item'
273+
| 'events/latest'
274+
| 'events/upcoming'
275+
| 'events/past'
276+
| 'presentations/latest'
277+
| 'presentations/upcoming'
278+
| 'presentations/other' = 'card'
279+
```
280+
281+
Usage:
282+
283+
```html
284+
<Guild
285+
type="guild"
286+
card_id="svelte-society-london"
287+
display_type="events/latest"
288+
/>
289+
```
290+
291+
Output:
292+
293+
<Guild
294+
type="guild"
295+
card_id="svelte-society-london"
296+
display_type="card"
297+
/>
298+
258299
## Relive
259300

260301
Props:

0 commit comments

Comments
 (0)