@txstate-mws/svelte-components 1.0.1 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.cjs +37 -0
- package/README.md +33 -14
- package/docs/stores.md +1 -1
- package/package.json +24 -74
- package/playwright.config.js +112 -0
- package/src/app.html +14 -0
- package/src/global.d.ts +1 -0
- package/src/lib/actions/buttonify.ts +27 -0
- package/src/lib/actions/glue.ts +96 -0
- package/src/lib/actions/index.ts +7 -0
- package/src/lib/actions/offset.ts +43 -0
- package/src/lib/actions/portal.ts +13 -0
- package/src/lib/actions/resize.ts +72 -0
- package/src/lib/actions/sticky.ts +105 -0
- package/src/lib/actions/stickyfixed.ts +160 -0
- package/src/lib/components/Card.svelte +25 -0
- package/src/lib/components/CardLayout.svelte +188 -0
- package/{dist/ts → src/lib}/components/CollapsingTable.svelte +6 -5
- package/{dist/ts → src/lib}/components/ConditionalWrapper.svelte +0 -0
- package/{dist/ts → src/lib}/components/FocusLock.svelte +7 -6
- package/{dist/ts → src/lib}/components/Modal.svelte +5 -4
- package/src/lib/components/MultiSelect.svelte +174 -0
- package/{dist/ts → src/lib}/components/PopupMenu.svelte +22 -16
- package/{dist/ts → src/lib}/components/ScreenReaderOnly.svelte +2 -2
- package/src/lib/components/index.ts +9 -0
- package/src/lib/index.ts +4 -0
- package/src/lib/types/CardLayout.ts +14 -0
- package/src/lib/types/CollapsingTable.ts +8 -0
- package/src/lib/types/PopupMenu.ts +5 -0
- package/src/lib/types/index.ts +3 -0
- package/src/lib/util/bodyoffset.ts +77 -0
- package/src/lib/util/index.ts +3 -0
- package/src/lib/util/repositioned.ts +91 -0
- package/src/lib/util/util.ts +36 -0
- package/src/routes/__layout.svelte +125 -0
- package/src/routes/actions/index.svelte +1 -0
- package/src/routes/actions/offset.svelte +4 -0
- package/src/routes/actions/offsetdebounce.svelte +4 -0
- package/src/routes/actions/resize.svelte +4 -0
- package/src/routes/actions/resizedebounce.svelte +4 -0
- package/src/routes/actions/sticky.svelte +4 -0
- package/src/routes/cards/index.svelte +4 -0
- package/src/routes/cards/preserve.svelte +4 -0
- package/src/routes/collapsingtable/index.svelte +4 -0
- package/src/routes/collapsingtable/stickyheader.svelte +4 -0
- package/src/routes/index.svelte +2 -0
- package/src/routes/modal.svelte +4 -0
- package/src/routes/multiselect.svelte +4 -0
- package/src/routes/popupmenu/body.svelte +4 -0
- package/src/routes/popupmenu/complex.svelte +4 -0
- package/src/routes/popupmenu/empty.svelte +5 -0
- package/src/routes/popupmenu/index.svelte +4 -0
- package/src/routes/popupmenu/parent.svelte +4 -0
- package/src/routes/popupmenu/scrollable.svelte +27 -0
- package/src/routes/popupmenu/showselected.svelte +4 -0
- package/src/test/Cards.svelte +64 -0
- package/{dist/ts/tests/CollapsingTable → src/test}/CollapsingTableTest.svelte +2 -2
- package/{dist/ts/tests/Modal → src/test}/ModalTest.svelte +3 -3
- package/src/test/MultiSelectTest.svelte +26 -0
- package/{dist/ts/tests/Actions → src/test}/Offset.svelte +2 -4
- package/{dist/ts/tests/PopupMenu → src/test}/PopupMenuBody.svelte +1 -1
- package/{dist/ts/tests/PopupMenu → src/test}/PopupMenuButtonIsParent.svelte +2 -2
- package/{dist/ts/tests/PopupMenu → src/test}/PopupMenuComplex.svelte +2 -2
- package/{dist/ts/tests/PopupMenu → src/test}/PopupMenuSimple.svelte +2 -2
- package/{dist/ts/tests/Actions → src/test}/Resize.svelte +2 -4
- package/{dist/ts/tests/Actions → src/test}/Sticky.svelte +1 -1
- package/static/layout.css +263 -0
- package/svelte.config.js +15 -0
- package/tests/.eslintrc.cjs +19 -0
- package/tests/CardLayout.test.js +41 -0
- package/tests/CollapsingTable.test.js +37 -0
- package/tests/Modal.test.js +18 -0
- package/tests/MultiSelect.test.js +58 -0
- package/tests/PopupMenu.test.js +55 -0
- package/tests/common.js +4 -0
- package/tsconfig.json +31 -0
- package/LICENSE +0 -21
- package/dist/actions/buttonify.js +0 -31
- package/dist/actions/buttonify.js.map +0 -1
- package/dist/actions/glue.js +0 -87
- package/dist/actions/glue.js.map +0 -1
- package/dist/actions/index.js +0 -20
- package/dist/actions/index.js.map +0 -1
- package/dist/actions/offset.js +0 -35
- package/dist/actions/offset.js.map +0 -1
- package/dist/actions/portal.js +0 -19
- package/dist/actions/portal.js.map +0 -1
- package/dist/actions/resize.js +0 -48
- package/dist/actions/resize.js.map +0 -1
- package/dist/actions/sticky.js +0 -93
- package/dist/actions/sticky.js.map +0 -1
- package/dist/actions/stickyfixed.js +0 -166
- package/dist/actions/stickyfixed.js.map +0 -1
- package/dist/components/CollapsingTable.svelte +0 -147
- package/dist/components/ConditionalWrapper.svelte +0 -38
- package/dist/components/FocusLock.svelte +0 -105
- package/dist/components/Modal.svelte +0 -52
- package/dist/components/PopupMenu.svelte +0 -282
- package/dist/components/ScreenReaderOnly.svelte +0 -25
- package/dist/components/index.js +0 -19
- package/dist/components/index.js.map +0 -1
- package/dist/index.js +0 -17
- package/dist/index.js.map +0 -1
- package/dist/lib/activestore.js +0 -123
- package/dist/lib/activestore.js.map +0 -1
- package/dist/lib/bodyoffset.js +0 -76
- package/dist/lib/bodyoffset.js.map +0 -1
- package/dist/lib/convertedstore.js +0 -41
- package/dist/lib/convertedstore.js.map +0 -1
- package/dist/lib/derivedstore.js +0 -65
- package/dist/lib/derivedstore.js.map +0 -1
- package/dist/lib/index.js +0 -22
- package/dist/lib/index.js.map +0 -1
- package/dist/lib/repositioned.js +0 -92
- package/dist/lib/repositioned.js.map +0 -1
- package/dist/lib/safestore.js +0 -16
- package/dist/lib/safestore.js.map +0 -1
- package/dist/lib/store.js +0 -27
- package/dist/lib/store.js.map +0 -1
- package/dist/lib/substore.js +0 -47
- package/dist/lib/substore.js.map +0 -1
- package/dist/lib/util.js +0 -16
- package/dist/lib/util.js.map +0 -1
- package/dist/ts/actions/buttonify.d.ts +0 -8
- package/dist/ts/actions/glue.d.ts +0 -16
- package/dist/ts/actions/index.d.ts +0 -7
- package/dist/ts/actions/offset.d.ts +0 -15
- package/dist/ts/actions/portal.d.ts +0 -4
- package/dist/ts/actions/resize.d.ts +0 -16
- package/dist/ts/actions/sticky.d.ts +0 -33
- package/dist/ts/actions/stickyfixed.d.ts +0 -25
- package/dist/ts/components/index.d.ts +0 -6
- package/dist/ts/index.d.ts +0 -4
- package/dist/ts/lib/activestore.d.ts +0 -60
- package/dist/ts/lib/bodyoffset.d.ts +0 -13
- package/dist/ts/lib/convertedstore.d.ts +0 -16
- package/dist/ts/lib/derivedstore.d.ts +0 -23
- package/dist/ts/lib/index.d.ts +0 -9
- package/dist/ts/lib/repositioned.d.ts +0 -13
- package/dist/ts/lib/safestore.d.ts +0 -4
- package/dist/ts/lib/store.d.ts +0 -16
- package/dist/ts/lib/substore.d.ts +0 -24
- package/dist/ts/lib/util.d.ts +0 -2
- package/dist/ts/tests/Actions/Actions.stories.d.ts +0 -1
- package/dist/ts/tests/CollapsingTable/CollapsingTable.stories.d.ts +0 -1
- package/dist/ts/tests/CollapsingTable/CollapsingTable.test.d.ts +0 -1
- package/dist/ts/tests/Modal/Modal.stories.d.ts +0 -1
- package/dist/ts/tests/Modal/Modal.test.d.ts +0 -1
- package/dist/ts/tests/PopupMenu/PopupMenu.stories.d.ts +0 -1
- package/dist/ts/tests/PopupMenu/PopupMenu.test.d.ts +0 -1
- package/dist/ts/tests/stores/deepstore.test.d.ts +0 -1
- package/dist/ts/types/CollapsingTable.d.ts +0 -8
- package/dist/ts/types/PopupMenu.d.ts +0 -5
- package/dist/ts/types/index.d.ts +0 -2
- package/dist/types/CollapsingTable.js +0 -3
- package/dist/types/CollapsingTable.js.map +0 -1
- package/dist/types/PopupMenu.js +0 -3
- package/dist/types/PopupMenu.js.map +0 -1
- package/dist/types/index.js +0 -15
- package/dist/types/index.js.map +0 -1
- package/esm/index.js +0 -1
- package/esm/package.json +0 -3
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { page } from '$app/stores'
|
|
3
|
+
interface Link {
|
|
4
|
+
label: string
|
|
5
|
+
href: string
|
|
6
|
+
subtitle?: string
|
|
7
|
+
sublinks?: Link[]
|
|
8
|
+
selected?: boolean
|
|
9
|
+
parent?: boolean
|
|
10
|
+
}
|
|
11
|
+
let links: Link[] = [
|
|
12
|
+
{ label: 'Home', href: '/', subtitle: 'Overview of everything svelte-components provides.' },
|
|
13
|
+
{
|
|
14
|
+
label: 'Actions',
|
|
15
|
+
href: '/actions',
|
|
16
|
+
subtitle: 'A generic component for presenting a dropdown menu.',
|
|
17
|
+
sublinks: [
|
|
18
|
+
{ label: 'offset', href: '/actions/offset' },
|
|
19
|
+
{ label: 'offset debounced', href: '/actions/offsetdebounce' },
|
|
20
|
+
{ label: 'resize', href: '/actions/resize' },
|
|
21
|
+
{ label: 'resize debounced', href: '/actions/resizedebounce' },
|
|
22
|
+
{ label: 'sticky', href: '/actions/sticky' }
|
|
23
|
+
]
|
|
24
|
+
},
|
|
25
|
+
{ label: 'Modal', href: '/modal', subtitle: 'A component for accessible modal dialogs.' },
|
|
26
|
+
{
|
|
27
|
+
label: 'PopupMenu',
|
|
28
|
+
href: '/popupmenu',
|
|
29
|
+
subtitle: 'A generic component for presenting a dropdown menu.',
|
|
30
|
+
sublinks: [
|
|
31
|
+
{ label: 'show selected', href: '/popupmenu/showselected' },
|
|
32
|
+
{ label: 'complex placement', href: '/popupmenu/complex' },
|
|
33
|
+
{ label: 'body placement', href: '/popupmenu/body' },
|
|
34
|
+
{ label: 'button is parent', href: '/popupmenu/parent' },
|
|
35
|
+
{ label: 'scrollable', href: '/popupmenu/scrollable' },
|
|
36
|
+
{ label: 'no items', href: '/popupmenu/empty' }
|
|
37
|
+
]
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
label: 'CollapsingTable',
|
|
41
|
+
href: '/collapsingtable',
|
|
42
|
+
subtitle: 'A table that hides columns on small screens and introduces a dropdown to show one at a time.',
|
|
43
|
+
sublinks: [
|
|
44
|
+
{ label: 'sticky header', href: '/collapsingtable/stickyheader' }
|
|
45
|
+
]
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
label: 'Cards',
|
|
49
|
+
href: '/cards',
|
|
50
|
+
subtitle: 'Components for generating a pinterest-style card layout.',
|
|
51
|
+
sublinks: [
|
|
52
|
+
{ label: 'preserve order', href: '/cards/preserve' }
|
|
53
|
+
]
|
|
54
|
+
},
|
|
55
|
+
{ label: 'MultiSelect', href: '/multiselect', subtitle: 'A component for selecting multiple items from a list.' }
|
|
56
|
+
]
|
|
57
|
+
$: current = links.find(l => l.href === '/' ? $page.url.pathname === '/' : $page.url.pathname.startsWith(l.href))
|
|
58
|
+
$: title = current?.label
|
|
59
|
+
$: subtitle = current?.subtitle
|
|
60
|
+
|
|
61
|
+
function isSelected (link: Link) {
|
|
62
|
+
return $page.url.pathname === link.href && link.href !== '/'
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
function isParentOfSelected (link: Link) {
|
|
66
|
+
return !isSelected(link) && link.href !== '/' && $page.url.pathname.startsWith(link.href)
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
function updateLinks (links: Link[], ..._: any) {
|
|
70
|
+
if (!links) return []
|
|
71
|
+
return links.map(l => ({ ...l, selected: isSelected(l), parent: isParentOfSelected(l), sublinks: updateLinks(l.sublinks) }))
|
|
72
|
+
}
|
|
73
|
+
$: links = updateLinks(links, $page)
|
|
74
|
+
|
|
75
|
+
let active = false
|
|
76
|
+
function onClick () {
|
|
77
|
+
active = !active
|
|
78
|
+
}
|
|
79
|
+
</script>
|
|
80
|
+
|
|
81
|
+
<div id="layout" class:active>
|
|
82
|
+
<!-- Menu toggle -->
|
|
83
|
+
<a role="button" id="menuLink" class="menu-link" on:click={onClick}>
|
|
84
|
+
<!-- Hamburger icon -->
|
|
85
|
+
<span></span>
|
|
86
|
+
</a>
|
|
87
|
+
|
|
88
|
+
<div id="menu">
|
|
89
|
+
<div class="pure-menu">
|
|
90
|
+
<ul class="pure-menu-list">
|
|
91
|
+
{#each links as link}
|
|
92
|
+
<li class="pure-menu-item pure-menu-parent" class:pure-menu-selected={link.selected} class:pure-menu-subselected={link.parent}>
|
|
93
|
+
<a href="{link.href}" class="pure-menu-link">{link.label}</a>
|
|
94
|
+
</li>
|
|
95
|
+
{#if link.sublinks && link.sublinks.length && (link.selected || link.parent)}
|
|
96
|
+
<ul class="pure-menu-list">
|
|
97
|
+
{#each link.sublinks as sublink}
|
|
98
|
+
<li class="pure-menu-item" class:pure-menu-selected={sublink.selected}>
|
|
99
|
+
<a href="{sublink.href}" class="pure-menu-link">{sublink.label}</a>
|
|
100
|
+
</li>
|
|
101
|
+
{/each}
|
|
102
|
+
</ul>
|
|
103
|
+
{/if}
|
|
104
|
+
{/each}
|
|
105
|
+
</ul>
|
|
106
|
+
</div>
|
|
107
|
+
</div>
|
|
108
|
+
|
|
109
|
+
<div id="main">
|
|
110
|
+
<div class="header">
|
|
111
|
+
<h1>{title}</h1>
|
|
112
|
+
{#if subtitle}<h2>{subtitle}</h2>{/if}
|
|
113
|
+
</div>
|
|
114
|
+
|
|
115
|
+
<div class="content">
|
|
116
|
+
<slot />
|
|
117
|
+
</div>
|
|
118
|
+
</div>
|
|
119
|
+
</div>
|
|
120
|
+
|
|
121
|
+
<style>
|
|
122
|
+
#menuLink {
|
|
123
|
+
cursor: pointer;
|
|
124
|
+
}
|
|
125
|
+
</style>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
See menu at left.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import PopupMenuComplex from '../../test/PopupMenuComplex.svelte'
|
|
3
|
+
const items = [
|
|
4
|
+
{ value: '0', label: 'Sunday', disabled: true },
|
|
5
|
+
{ value: '1', label: 'Monday' },
|
|
6
|
+
{ value: '2', label: 'Tuesday' },
|
|
7
|
+
{ value: '3', label: 'Wednesday' },
|
|
8
|
+
{ value: '4', label: 'Thursday', disabled: true },
|
|
9
|
+
{ value: '5', label: 'Friday' },
|
|
10
|
+
{ value: '6', label: 'Saturday', disabled: true },
|
|
11
|
+
{ value: '7', label: 'Sunday', disabled: true },
|
|
12
|
+
{ value: '8', label: 'Monday' },
|
|
13
|
+
{ value: '9', label: 'Tuesday' },
|
|
14
|
+
{ value: '10', label: 'Wednesday' },
|
|
15
|
+
{ value: '11', label: 'Thursday', disabled: true },
|
|
16
|
+
{ value: '12', label: 'Friday' },
|
|
17
|
+
{ value: '13', label: 'Saturday', disabled: true },
|
|
18
|
+
{ value: '14', label: 'Sunday', disabled: true },
|
|
19
|
+
{ value: '15', label: 'Monday' },
|
|
20
|
+
{ value: '16', label: 'Tuesday' },
|
|
21
|
+
{ value: '17', label: 'Wednesday' },
|
|
22
|
+
{ value: '18', label: 'Thursday', disabled: true },
|
|
23
|
+
{ value: '19', label: 'Friday' },
|
|
24
|
+
{ value: '20', label: 'Saturday', disabled: true }
|
|
25
|
+
]
|
|
26
|
+
</script>
|
|
27
|
+
<PopupMenuComplex {items}></PopupMenuComplex>
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import CardLayout from '$lib/components/CardLayout.svelte'
|
|
3
|
+
import Card from '$lib/components/Card.svelte'
|
|
4
|
+
export let maxwidth = 300
|
|
5
|
+
export let className = 'test1'
|
|
6
|
+
export let preserveorder = false
|
|
7
|
+
let cards = [
|
|
8
|
+
{ ptop: 30 },
|
|
9
|
+
{ ptop: 50 },
|
|
10
|
+
{ ptop: 20 },
|
|
11
|
+
{ ptop: 100 },
|
|
12
|
+
{ ptop: 40 },
|
|
13
|
+
{ ptop: 56.25 },
|
|
14
|
+
{ ptop: 150 },
|
|
15
|
+
{ ptop: 80 },
|
|
16
|
+
{ ptop: 10 }
|
|
17
|
+
]
|
|
18
|
+
function randheight () {
|
|
19
|
+
return Math.ceil(Math.random() * 150) + 20
|
|
20
|
+
}
|
|
21
|
+
function mutateall () {
|
|
22
|
+
cards = cards.map(_ => ({ ptop: randheight() }))
|
|
23
|
+
}
|
|
24
|
+
function mutatecard () {
|
|
25
|
+
const which = Math.floor(Math.random() * cards.length)
|
|
26
|
+
cards[which].ptop = randheight()
|
|
27
|
+
}
|
|
28
|
+
function addcard () {
|
|
29
|
+
cards = [...cards, { ptop: randheight() }]
|
|
30
|
+
}
|
|
31
|
+
function add20 () {
|
|
32
|
+
const newcards = []
|
|
33
|
+
for (let i = 0; i < 20; i++) newcards.push({ ptop: randheight() })
|
|
34
|
+
cards = [...cards, ...newcards]
|
|
35
|
+
}
|
|
36
|
+
</script>
|
|
37
|
+
|
|
38
|
+
<CardLayout className={className} maxwidth={maxwidth} preserveorder={preserveorder}>
|
|
39
|
+
{#each cards as card, i}
|
|
40
|
+
<Card><div class="card card{i + 1}" style:padding-top={card.ptop + '%'} tabindex=0><span>Card {i + 1}</span></div></Card>
|
|
41
|
+
{/each}
|
|
42
|
+
</CardLayout>
|
|
43
|
+
|
|
44
|
+
<button on:click={mutateall}>Randomize All</button>
|
|
45
|
+
<button on:click={mutatecard}>Randomize Card</button>
|
|
46
|
+
<button on:click={addcard}>Add Card</button>
|
|
47
|
+
<button on:click={add20}>Add 20 Cards</button>
|
|
48
|
+
|
|
49
|
+
<style>
|
|
50
|
+
.card {
|
|
51
|
+
position: relative;
|
|
52
|
+
background-color: rgba(0, 0, 0, 0.3);
|
|
53
|
+
transition: padding-top 0.5s;
|
|
54
|
+
}
|
|
55
|
+
.card:focus {
|
|
56
|
+
outline: 2px solid blue;
|
|
57
|
+
}
|
|
58
|
+
.card span {
|
|
59
|
+
position: absolute;
|
|
60
|
+
top: 50%;
|
|
61
|
+
left: 50%;
|
|
62
|
+
transform: translate(-50%,-50%);
|
|
63
|
+
}
|
|
64
|
+
</style>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
-
import CollapsingTable from '
|
|
3
|
-
import { CollapsingTableColumn } from '
|
|
2
|
+
import CollapsingTable from '$lib/components/CollapsingTable.svelte'
|
|
3
|
+
import type { CollapsingTableColumn } from '$lib/types'
|
|
4
4
|
export let stickyheader = false
|
|
5
5
|
const items = [
|
|
6
6
|
{ id: 1, name: 'John Smith', age: 42, one: 1, two: 2, three: 3, four: 4, five: 5, six: 6 },
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
-
import Modal from '
|
|
2
|
+
import Modal from '$lib/components/Modal.svelte'
|
|
3
3
|
let shown = true
|
|
4
4
|
</script>
|
|
5
5
|
|
|
6
6
|
{#if shown}
|
|
7
|
-
<Modal on:escape={() => shown = false}>
|
|
7
|
+
<Modal on:escape={() => { shown = false }} >
|
|
8
8
|
<form>
|
|
9
9
|
<div class="formfield">
|
|
10
10
|
<label for="firstname">First Name:</label><input id="firstname" type="text" name="firstname">
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer tempus nulla ut nulla auctor, quis sodales massa laoreet. Duis erat lacus, gravida vitae massa vel, semper accumsan urna. Morbi gravida dui sit amet sodales luctus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Vestibulum eget pulvinar dui. Vivamus quis eros eu ex semper consectetur nec at elit. Praesent faucibus arcu a nisi semper, eu tempus felis vehicula. Suspendisse potenti.</p>
|
|
24
24
|
|
|
25
25
|
<p>Donec luctus nulla mattis ipsum aliquam imperdiet. Vestibulum nec finibus enim. Proin et arcu arcu. Quisque feugiat leo velit, vitae mollis felis ornare sed. Suspendisse sollicitudin, libero sed ullamcorper finibus, diam turpis eleifend velit, ut suscipit orci mauris id purus. Donec dapibus facilisis mauris a venenatis. Maecenas gravida velit maximus nibh tincidunt, eget auctor tellus efficitur. Aenean varius tristique lacus, sit amet placerat sem tempor at. Sed imperdiet fermentum nibh, sit amet tempor est cursus ac.</p>
|
|
26
|
-
<button
|
|
26
|
+
<button id="test-button" on:click={() => { shown = true }}>Show Modal</button>
|
|
27
27
|
<p>Praesent augue magna, maximus at mattis eget, euismod nec neque. Phasellus ut dolor a turpis molestie fermentum. Phasellus condimentum, ipsum sed rutrum maximus, diam ex ultrices sapien, quis iaculis nisi arcu at turpis. Morbi aliquam mattis posuere. Integer pretium diam diam, non lobortis quam consectetur laoreet. Sed posuere blandit venenatis. Nulla gravida maximus arcu non consectetur.</p>
|
|
28
28
|
|
|
29
29
|
<p>Cras egestas massa mattis dictum imperdiet. Nulla bibendum nisl ipsum, ut scelerisque arcu consectetur vitae. Integer convallis id nunc sit amet faucibus. Maecenas suscipit diam orci, ac suscipit dolor convallis sed. Mauris vel tellus eget nunc mattis faucibus sit amet sed lorem. Cras lobortis, massa at vestibulum dignissim, quam tellus sagittis purus, eget dictum dolor quam in leo. Aliquam condimentum, ante sit amet semper laoreet, lacus est scelerisque mi, nec mollis diam massa et massa. Donec sagittis massa quis diam dictum, sit amet convallis mauris tincidunt. Nam vulputate ligula quis ex condimentum, in sollicitudin dolor accumsan. Donec volutpat dui in faucibus tempus. Proin vitae tincidunt ex. Proin ut ultricies diam. Praesent sed purus in purus efficitur fermentum vulputate quis dolor. Morbi viverra quam ac dolor facilisis consectetur.</p>
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { MultiSelect } from '$lib'
|
|
3
|
+
import { sleep } from 'txstate-utils'
|
|
4
|
+
let firstid
|
|
5
|
+
let secondid
|
|
6
|
+
function getOptionsFirst (val: string) {
|
|
7
|
+
return ['apple', 'orange', 'banana'].filter(o => o.includes(val)).map(value => ({ value }))
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
const secondItems = [
|
|
11
|
+
{ value: 'apple', label: 'Apple' },
|
|
12
|
+
{ value: 'orange', label: 'Orange' },
|
|
13
|
+
{ value: 'banana', label: 'Banana' }
|
|
14
|
+
]
|
|
15
|
+
async function getOptionsSecond (val: string) {
|
|
16
|
+
if (!val) return secondItems
|
|
17
|
+
await sleep(400)
|
|
18
|
+
return secondItems.filter(o => o.value.includes(val.toLocaleLowerCase()))
|
|
19
|
+
}
|
|
20
|
+
</script>
|
|
21
|
+
|
|
22
|
+
<label for={firstid}>Fruit with only values</label><br>
|
|
23
|
+
<MultiSelect bind:id={firstid} name="test1" selected={[{ value: 'apple', label: 'apple' }]} getOptions={getOptionsFirst} />
|
|
24
|
+
|
|
25
|
+
<label for={secondid}>Fruit with value and label</label><br>
|
|
26
|
+
<MultiSelect bind:id={secondid} name="test2" selected={[{ value: 'orange', label: 'Orange' }, { value: 'banana', label: 'Banana' }]} placeholder='Choose some fruit' getOptions={getOptionsSecond} />
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
-
import {
|
|
3
|
-
import type { ElementOffsets } from '../../lib/repositioned'
|
|
4
|
-
import { offset } from '../../actions/offset'
|
|
2
|
+
import { offset, OffsetStore } from '$lib'
|
|
5
3
|
export let debounce = false
|
|
6
|
-
|
|
4
|
+
const myoffset = new OffsetStore()
|
|
7
5
|
</script>
|
|
8
6
|
|
|
9
7
|
<div class='resizable'>resize this div</div>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
-
import PopupMenu from '
|
|
2
|
+
import { buttonify, PopupMenu } from '$lib'
|
|
3
3
|
let button: HTMLElement
|
|
4
4
|
|
|
5
5
|
export let items = [
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
|
|
16
16
|
<div class="topspacer"></div>
|
|
17
17
|
<div class="container">
|
|
18
|
-
<div class="ui gold button" bind:this={button}>
|
|
18
|
+
<div class="ui gold button" use:buttonify bind:this={button}>
|
|
19
19
|
Popup Menu
|
|
20
20
|
<PopupMenu buttonelement={button} {items}></PopupMenu>
|
|
21
21
|
</div>
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
-
import PopupMenu from '
|
|
2
|
+
import PopupMenu from '$lib/components/PopupMenu.svelte'
|
|
3
3
|
let button: HTMLElement
|
|
4
4
|
|
|
5
|
-
export let items = [
|
|
5
|
+
export let items: { value: string, label: string, disabled?: boolean }[] = [
|
|
6
6
|
{ value: '0', label: 'Sunday', disabled: true },
|
|
7
7
|
{ value: '1', label: 'Monday' },
|
|
8
8
|
{ value: '2', label: 'Tuesday' },
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
import { hashify } from 'txstate-utils'
|
|
3
|
-
import PopupMenu from '
|
|
3
|
+
import PopupMenu from '$lib/components/PopupMenu.svelte'
|
|
4
4
|
|
|
5
5
|
export let showSelected = false
|
|
6
6
|
export let items = [
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
|
|
22
22
|
<div class="topspacer"></div>
|
|
23
23
|
<div class="container">
|
|
24
|
-
<button
|
|
24
|
+
<button id="test-button" class="ui gold button" bind:this={button}>Popup Menu</button>
|
|
25
25
|
<div>selected: {#if selected}{selected.value}, {selected.label}{:else}none{/if}</div>
|
|
26
26
|
<PopupMenu bind:value buttonelement={button} {items} {showSelected}></PopupMenu>
|
|
27
27
|
</div>
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
-
import {
|
|
3
|
-
import type { ElementSize } from '../../actions/resize'
|
|
4
|
-
import { resize } from '../../actions/resize'
|
|
2
|
+
import { resize, ResizeStore } from '$lib'
|
|
5
3
|
export let debounce = false
|
|
6
|
-
|
|
4
|
+
const mysize = new ResizeStore()
|
|
7
5
|
</script>
|
|
8
6
|
|
|
9
7
|
<div use:resize={{ store: mysize, debounce }} class='resizable'>resize this div</div>
|