@sveltia/ui 0.39.0 → 0.39.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.
|
@@ -27,7 +27,8 @@
|
|
|
27
27
|
} = $props();
|
|
28
28
|
|
|
29
29
|
/** @type {number} */
|
|
30
|
-
|
|
30
|
+
// svelte-ignore state_referenced_locally
|
|
31
|
+
let loadedItemSize = $state(itemChunkSize);
|
|
31
32
|
|
|
32
33
|
/** @type {HTMLElement | undefined} */
|
|
33
34
|
let spinner = $state(undefined);
|
|
@@ -59,6 +59,14 @@
|
|
|
59
59
|
let setOpenClass = $state(false);
|
|
60
60
|
let setActiveClass = $state(false);
|
|
61
61
|
let showContent = $state(false);
|
|
62
|
+
/**
|
|
63
|
+
* Monotonically increasing counter used to detect stale async operations. Incremented at the
|
|
64
|
+
* start of each `openDialog`/`closeDialog` call; any suspended continuation that finds its
|
|
65
|
+
* captured value no longer matches the current counter knows it has been superseded and exits
|
|
66
|
+
* without mutating state.
|
|
67
|
+
* @type {number}
|
|
68
|
+
*/
|
|
69
|
+
let generation = 0;
|
|
62
70
|
|
|
63
71
|
/**
|
|
64
72
|
* Resolve once the transition is complete.
|
|
@@ -88,13 +96,19 @@
|
|
|
88
96
|
return;
|
|
89
97
|
}
|
|
90
98
|
|
|
99
|
+
generation += 1;
|
|
100
|
+
|
|
101
|
+
const gen = generation;
|
|
102
|
+
|
|
91
103
|
onOpening?.(new CustomEvent('Opening'));
|
|
92
104
|
showContent = true;
|
|
93
105
|
dialog.showModal();
|
|
94
106
|
onOpen?.(new CustomEvent('Open'));
|
|
95
107
|
await sleep(0);
|
|
108
|
+
if (gen !== generation) return;
|
|
96
109
|
setOpenClass = true;
|
|
97
110
|
await waitForTransition();
|
|
111
|
+
if (gen !== generation) return;
|
|
98
112
|
setActiveClass = true;
|
|
99
113
|
};
|
|
100
114
|
|
|
@@ -106,6 +120,10 @@
|
|
|
106
120
|
return;
|
|
107
121
|
}
|
|
108
122
|
|
|
123
|
+
generation += 1;
|
|
124
|
+
|
|
125
|
+
const gen = generation;
|
|
126
|
+
const wasOpen = setOpenClass;
|
|
109
127
|
const { returnValue } = dialog;
|
|
110
128
|
|
|
111
129
|
onClosing?.(new CustomEvent('Closing'));
|
|
@@ -115,7 +133,16 @@
|
|
|
115
133
|
document.body.inert = false;
|
|
116
134
|
setActiveClass = false;
|
|
117
135
|
setOpenClass = false;
|
|
118
|
-
|
|
136
|
+
|
|
137
|
+
// Only wait for the closing transition if the dialog was visually open (i.e. the `.open` CSS
|
|
138
|
+
// class was set). If the dialog was closed before the opening transition even started, there is
|
|
139
|
+
// no CSS transition in progress and `transitionend` will never fire.
|
|
140
|
+
if (wasOpen) {
|
|
141
|
+
await waitForTransition();
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
if (gen !== generation) return;
|
|
145
|
+
|
|
119
146
|
showContent = false;
|
|
120
147
|
|
|
121
148
|
if (returnValue === 'ok') {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sveltia/ui",
|
|
3
|
-
"version": "0.39.
|
|
3
|
+
"version": "0.39.2",
|
|
4
4
|
"description": "A collection of Svelte components and utilities for building user interfaces.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -49,14 +49,14 @@
|
|
|
49
49
|
"@sveltia/utils": "^0.10.6",
|
|
50
50
|
"lexical": "^0.44.0",
|
|
51
51
|
"prismjs": "^1.30.0",
|
|
52
|
-
"yaml": "^2.
|
|
52
|
+
"yaml": "^2.9.0"
|
|
53
53
|
},
|
|
54
54
|
"devDependencies": {
|
|
55
55
|
"@sveltejs/adapter-auto": "^7.0.1",
|
|
56
|
-
"@sveltejs/kit": "^2.
|
|
56
|
+
"@sveltejs/kit": "^2.60.1",
|
|
57
57
|
"@sveltejs/package": "^2.5.7",
|
|
58
58
|
"@sveltejs/vite-plugin-svelte": "^7.1.2",
|
|
59
|
-
"@vitest/coverage-v8": "^4.1.
|
|
59
|
+
"@vitest/coverage-v8": "^4.1.6",
|
|
60
60
|
"cspell": "^10.0.0",
|
|
61
61
|
"eslint": "^9.39.4",
|
|
62
62
|
"eslint-config-airbnb-extended": "^3.1.0",
|
|
@@ -67,21 +67,21 @@
|
|
|
67
67
|
"eslint-plugin-svelte": "^3.17.1",
|
|
68
68
|
"globals": "^17.6.0",
|
|
69
69
|
"happy-dom": "^20.9.0",
|
|
70
|
-
"oxlint": "^1.
|
|
70
|
+
"oxlint": "^1.65.0",
|
|
71
71
|
"postcss": "^8.5.14",
|
|
72
72
|
"postcss-html": "^1.8.1",
|
|
73
73
|
"prettier": "^3.8.3",
|
|
74
|
-
"prettier-plugin-svelte": "^3.5.
|
|
74
|
+
"prettier-plugin-svelte": "^3.5.2",
|
|
75
75
|
"sass": "^1.99.0",
|
|
76
|
-
"stylelint": "^17.11.
|
|
76
|
+
"stylelint": "^17.11.1",
|
|
77
77
|
"stylelint-config-recommended-scss": "^17.0.1",
|
|
78
|
-
"stylelint-scss": "^7.
|
|
79
|
-
"svelte": "^5.55.
|
|
78
|
+
"stylelint-scss": "^7.1.1",
|
|
79
|
+
"svelte": "^5.55.7",
|
|
80
80
|
"svelte-check": "^4.4.8",
|
|
81
81
|
"svelte-preprocess": "^6.0.3",
|
|
82
82
|
"tslib": "^2.8.1",
|
|
83
|
-
"vite": "^8.0.
|
|
84
|
-
"vitest": "^4.1.
|
|
83
|
+
"vite": "^8.0.13",
|
|
84
|
+
"vitest": "^4.1.6"
|
|
85
85
|
},
|
|
86
86
|
"peerDependencies": {
|
|
87
87
|
"svelte": "^5.0.0"
|