svelte-bricks 0.3.0 → 0.3.2
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/dist/Masonry.svelte +6 -3
- package/dist/Masonry.svelte.d.ts +8 -4
- package/package.json +17 -30
- package/readme.md +9 -7
package/dist/Masonry.svelte
CHANGED
|
@@ -8,7 +8,8 @@ let { animate = true, calcCols = (masonryWidth, minColWidth, gap) => {
|
|
|
8
8
|
if (typeof item === `string`)
|
|
9
9
|
return item;
|
|
10
10
|
return item[idKey];
|
|
11
|
-
}, idKey = `id`, items, masonryHeight = $bindable(0), masonryWidth = $bindable(0), maxColWidth = 500, minColWidth = 330, style = ``, class: className = ``, children,
|
|
11
|
+
}, idKey = `id`, items, masonryHeight = $bindable(0), masonryWidth = $bindable(0), maxColWidth = 500, minColWidth = 330, style = ``, class: className = ``, children, div = $bindable(undefined), // TODO add unit test for this prop
|
|
12
|
+
} = $props();
|
|
12
13
|
$effect.pre(() => {
|
|
13
14
|
if (maxColWidth < minColWidth) {
|
|
14
15
|
console.warn(`svelte-bricks: maxColWidth (${maxColWidth}) < minColWidth (${minColWidth}).`);
|
|
@@ -21,14 +22,16 @@ let itemsToCols = $derived(items.reduce((cols, item, idx) => {
|
|
|
21
22
|
}, Array(nCols).fill(null).map(() => [])));
|
|
22
23
|
</script>
|
|
23
24
|
|
|
25
|
+
<!-- deno-fmt-ignore -->
|
|
24
26
|
<div
|
|
25
27
|
class="masonry {className}"
|
|
26
28
|
bind:clientWidth={masonryWidth}
|
|
27
29
|
bind:clientHeight={masonryHeight}
|
|
30
|
+
bind:this={div}
|
|
28
31
|
style="gap: {gap}px; {style}"
|
|
29
32
|
>
|
|
30
|
-
{#each itemsToCols as col}
|
|
31
|
-
<div class="col {columnClass}" style="gap: {gap}px; max-width: {maxColWidth}px;">
|
|
33
|
+
{#each itemsToCols as col, idx}
|
|
34
|
+
<div class="col col-{idx} {columnClass}" style="gap: {gap}px; max-width: {maxColWidth}px;">
|
|
32
35
|
{#if animate}
|
|
33
36
|
{#each col as [item, idx] (getId(item))}
|
|
34
37
|
<div
|
package/dist/Masonry.svelte.d.ts
CHANGED
|
@@ -2,11 +2,11 @@ import type { Snippet } from 'svelte';
|
|
|
2
2
|
declare class __sveltets_Render<Item> {
|
|
3
3
|
props(): {
|
|
4
4
|
animate?: boolean;
|
|
5
|
-
calcCols?: (
|
|
5
|
+
calcCols?: (masonryWidth: number, minColWidth: number, gap: number) => number;
|
|
6
6
|
columnClass?: string;
|
|
7
7
|
duration?: number;
|
|
8
8
|
gap?: number;
|
|
9
|
-
getId?: (
|
|
9
|
+
getId?: (item: Item) => string | number;
|
|
10
10
|
idKey?: string;
|
|
11
11
|
items: Item[];
|
|
12
12
|
masonryHeight?: number;
|
|
@@ -15,11 +15,15 @@ declare class __sveltets_Render<Item> {
|
|
|
15
15
|
minColWidth?: number;
|
|
16
16
|
style?: string;
|
|
17
17
|
class?: string;
|
|
18
|
-
children?: Snippet
|
|
18
|
+
children?: Snippet<[{
|
|
19
|
+
idx: number;
|
|
20
|
+
item: Item;
|
|
21
|
+
}]>;
|
|
22
|
+
div?: HTMLDivElement;
|
|
19
23
|
};
|
|
20
24
|
events(): {};
|
|
21
25
|
slots(): {};
|
|
22
|
-
bindings(): "masonryHeight" | "masonryWidth";
|
|
26
|
+
bindings(): "div" | "masonryHeight" | "masonryWidth";
|
|
23
27
|
exports(): {};
|
|
24
28
|
}
|
|
25
29
|
interface $$IsomorphicComponent {
|
package/package.json
CHANGED
|
@@ -5,45 +5,27 @@
|
|
|
5
5
|
"homepage": "https://janosh.github.io/svelte-bricks",
|
|
6
6
|
"repository": "https://github.com/janosh/svelte-bricks",
|
|
7
7
|
"license": "MIT",
|
|
8
|
-
"version": "0.3.
|
|
8
|
+
"version": "0.3.2",
|
|
9
9
|
"type": "module",
|
|
10
10
|
"svelte": "./dist/index.js",
|
|
11
11
|
"bugs": "https://github.com/janosh/svelte-bricks/issues",
|
|
12
|
-
"scripts": {
|
|
13
|
-
"dev": "vite dev",
|
|
14
|
-
"build": "vite build",
|
|
15
|
-
"preview": "vite preview",
|
|
16
|
-
"package": "svelte-package",
|
|
17
|
-
"serve": "vite build && vite preview",
|
|
18
|
-
"check": "svelte-check --ignore dist",
|
|
19
|
-
"test": "vitest test",
|
|
20
|
-
"changelog": "npx auto-changelog --package --output changelog.md --hide-credit --commit-limit false"
|
|
21
|
-
},
|
|
22
12
|
"dependencies": {
|
|
23
|
-
"svelte": "^5.
|
|
13
|
+
"svelte": "^5.27.3"
|
|
24
14
|
},
|
|
25
15
|
"devDependencies": {
|
|
26
|
-
"@stylistic/eslint-plugin": "^3.1.0",
|
|
27
16
|
"@sveltejs/adapter-static": "^3.0.8",
|
|
28
|
-
"@sveltejs/kit": "^2.
|
|
29
|
-
"@sveltejs/package": "^2.3.
|
|
30
|
-
"@
|
|
31
|
-
"
|
|
32
|
-
"eslint": "^9.20.1",
|
|
33
|
-
"eslint-plugin-svelte": "^2.46.1",
|
|
34
|
-
"jsdom": "^26.0.0",
|
|
17
|
+
"@sveltejs/kit": "^2.20.7",
|
|
18
|
+
"@sveltejs/package": "^2.3.11",
|
|
19
|
+
"@vitest/coverage-v8": "^3.1.1",
|
|
20
|
+
"jsdom": "^26.1.0",
|
|
35
21
|
"mdsvex": "^0.12.3",
|
|
36
|
-
"
|
|
37
|
-
"prettier-plugin-svelte": "^3.3.3",
|
|
38
|
-
"svelte-check": "^4.1.4",
|
|
22
|
+
"svelte-check": "^4.1.6",
|
|
39
23
|
"svelte-preprocess": "^6.0.3",
|
|
40
|
-
"svelte-toc": "^0.
|
|
41
|
-
"svelte-zoo": "^0.4.
|
|
42
|
-
"svelte2tsx": "^0.7.
|
|
43
|
-
"
|
|
44
|
-
"
|
|
45
|
-
"vite": "^6.1.0",
|
|
46
|
-
"vitest": "^3.0.5"
|
|
24
|
+
"svelte-toc": "^0.6.0",
|
|
25
|
+
"svelte-zoo": "^0.4.17",
|
|
26
|
+
"svelte2tsx": "^0.7.36",
|
|
27
|
+
"vite": "^6.3.2",
|
|
28
|
+
"vitest": "^3.1.1"
|
|
47
29
|
},
|
|
48
30
|
"keywords": [
|
|
49
31
|
"svelte",
|
|
@@ -66,6 +48,11 @@
|
|
|
66
48
|
"default": "./dist/index.js"
|
|
67
49
|
}
|
|
68
50
|
},
|
|
51
|
+
"prettier": {
|
|
52
|
+
"semi": false,
|
|
53
|
+
"singleQuote": true,
|
|
54
|
+
"printWidth": 90
|
|
55
|
+
},
|
|
69
56
|
"types": "./dist/index.d.ts",
|
|
70
57
|
"files": [
|
|
71
58
|
"dist"
|
package/readme.md
CHANGED
|
@@ -33,26 +33,28 @@ The kitchen sink for this component looks something like this:
|
|
|
33
33
|
<script>
|
|
34
34
|
import Masonry from 'svelte-bricks'
|
|
35
35
|
|
|
36
|
-
let nItems = 30
|
|
37
|
-
|
|
36
|
+
let nItems = $state(30);
|
|
37
|
+
let items = $derived([...Array(nItems).keys()])
|
|
38
38
|
|
|
39
39
|
let [minColWidth, maxColWidth, gap] = [200, 800, 20]
|
|
40
|
-
let width, height
|
|
40
|
+
let width = $state(0), height = $state(0)
|
|
41
41
|
</script>
|
|
42
42
|
|
|
43
|
-
Masonry size: <span>{width}px</span> × <span>{height}px</span> (w ×
|
|
44
|
-
h)
|
|
43
|
+
Masonry size: <span>{width}px</span> × <span>{height}px</span> (w × h)
|
|
45
44
|
|
|
46
45
|
<Masonry
|
|
47
46
|
{items}
|
|
48
47
|
{minColWidth}
|
|
49
48
|
{maxColWidth}
|
|
50
49
|
{gap}
|
|
51
|
-
|
|
50
|
+
style="padding: 20px;"
|
|
51
|
+
columnStyle="background-color: rgba(0, 0, 0, 0.1);"
|
|
52
52
|
bind:masonryWidth={width}
|
|
53
53
|
bind:masonryHeight={height}
|
|
54
54
|
>
|
|
55
|
-
|
|
55
|
+
{#snippet children({ item })}
|
|
56
|
+
<Some {item} />
|
|
57
|
+
{/snippet}
|
|
56
58
|
</Masonry>
|
|
57
59
|
```
|
|
58
60
|
|