pulse-js-framework 1.10.3 → 1.10.4
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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pulse-js-framework",
|
|
3
|
-
"version": "1.10.
|
|
3
|
+
"version": "1.10.4",
|
|
4
4
|
"description": "A declarative DOM framework with CSS selector-based structure and reactive pulsations",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -151,11 +151,13 @@
|
|
|
151
151
|
"test:compiler": "node test/compiler.test.js",
|
|
152
152
|
"test:parser-coverage": "node test/parser-coverage.test.js",
|
|
153
153
|
"test:sourcemap": "node test/sourcemap.test.js",
|
|
154
|
+
"test:sourcemap-coverage-boost": "node --test test/sourcemap-coverage-boost.test.js",
|
|
154
155
|
"test:css-parsing": "node test/css-parsing.test.js",
|
|
155
156
|
"test:preprocessor": "node test/preprocessor.test.js",
|
|
156
157
|
"test:pulse": "node test/pulse.test.js",
|
|
157
158
|
"test:dom": "node test/dom.test.js",
|
|
158
159
|
"test:dom-element": "node test/dom-element.test.js",
|
|
160
|
+
"test:dom-element-coverage-boost": "node --test test/dom-element-coverage-boost.test.js",
|
|
159
161
|
"test:dom-list": "node test/dom-list.test.js",
|
|
160
162
|
"test:dom-conditional": "node test/dom-conditional.test.js",
|
|
161
163
|
"test:dom-lifecycle": "node test/dom-lifecycle.test.js",
|
|
@@ -167,6 +169,7 @@
|
|
|
167
169
|
"test:store": "node test/store.test.js",
|
|
168
170
|
"test:context": "node test/context.test.js",
|
|
169
171
|
"test:hmr": "node test/hmr.test.js",
|
|
172
|
+
"test:hmr-coverage-boost": "node --test test/hmr-coverage-boost.test.js",
|
|
170
173
|
"test:lint": "node test/lint.test.js",
|
|
171
174
|
"test:format": "node test/format.test.js",
|
|
172
175
|
"test:analyze": "node test/analyze.test.js",
|
|
@@ -185,13 +188,19 @@
|
|
|
185
188
|
"test:http": "node test/http.test.js",
|
|
186
189
|
"test:devtools": "node test/devtools.test.js",
|
|
187
190
|
"test:native": "node test/native.test.js",
|
|
191
|
+
"test:native-coverage-boost": "node --test test/native-coverage-boost.test.js",
|
|
188
192
|
"test:a11y": "node test/a11y.test.js",
|
|
189
193
|
"test:a11y-enhanced": "node test/a11y-enhanced.test.js",
|
|
194
|
+
"test:a11y-widgets-coverage-boost": "node --test test/a11y-widgets-coverage-boost.test.js",
|
|
195
|
+
"test:a11y-focus-coverage-boost": "node --test test/a11y-focus-coverage-boost.test.js",
|
|
190
196
|
"test:logger": "node test/logger.test.js",
|
|
191
197
|
"test:logger-prod": "node test/logger-prod.test.js",
|
|
198
|
+
"test:logger-coverage-boost": "node --test test/logger-coverage-boost.test.js",
|
|
192
199
|
"test:errors": "node test/errors.test.js",
|
|
193
200
|
"test:security": "node test/security.test.js",
|
|
201
|
+
"test:security-coverage-boost": "node --test test/security-coverage-boost.test.js",
|
|
194
202
|
"test:websocket": "node test/websocket.test.js",
|
|
203
|
+
"test:websocket-coverage-boost": "node --test test/websocket-coverage-boost.test.js",
|
|
195
204
|
"test:graphql": "node test/graphql.test.js",
|
|
196
205
|
"test:graphql-coverage": "node test/graphql-coverage.test.js",
|
|
197
206
|
"test:doctor": "node test/doctor.test.js",
|
|
@@ -203,6 +212,7 @@
|
|
|
203
212
|
"test:form-edge-cases": "node test/form-edge-cases.test.js",
|
|
204
213
|
"test:form-coverage": "node test/form-coverage.test.js",
|
|
205
214
|
"test:graphql-subscriptions": "node test/graphql-subscriptions.test.js",
|
|
215
|
+
"test:graphql-subscriptions-coverage-boost": "node --test test/graphql-subscriptions-coverage-boost.test.js",
|
|
206
216
|
"test:http-edge-cases": "node test/http-edge-cases.test.js",
|
|
207
217
|
"test:integration-advanced": "node test/integration-advanced.test.js",
|
|
208
218
|
"test:websocket-stress": "node test/websocket-stress.test.js",
|
|
@@ -222,6 +232,7 @@
|
|
|
222
232
|
"test:memory-cleanup": "node --test test/memory-cleanup.test.js",
|
|
223
233
|
"test:sse": "node --test test/sse.test.js",
|
|
224
234
|
"test:persistence": "node --test test/persistence.test.js",
|
|
235
|
+
"test:persistence-coverage-boost": "node --test test/persistence-coverage-boost.test.js",
|
|
225
236
|
"test:i18n": "node --test test/i18n.test.js",
|
|
226
237
|
"test:portal": "node --test test/portal.test.js",
|
|
227
238
|
"test:animation": "node --test test/animation.test.js",
|
package/runtime/a11y/widgets.js
CHANGED
|
@@ -445,6 +445,7 @@ export function createMenu(button, menu, options = {}) {
|
|
|
445
445
|
const menuId = menu.id || generateId('menu');
|
|
446
446
|
let rovingCleanup = null;
|
|
447
447
|
let documentClickHandler = null;
|
|
448
|
+
let documentClickTimeout = null;
|
|
448
449
|
|
|
449
450
|
// Set ARIA attributes
|
|
450
451
|
menu.id = menuId;
|
|
@@ -476,7 +477,8 @@ export function createMenu(button, menu, options = {}) {
|
|
|
476
477
|
if (firstItem) firstItem.focus();
|
|
477
478
|
|
|
478
479
|
// Close on click outside (delay to avoid immediate close)
|
|
479
|
-
setTimeout(() => {
|
|
480
|
+
documentClickTimeout = setTimeout(() => {
|
|
481
|
+
documentClickTimeout = null;
|
|
480
482
|
documentClickHandler = (e) => {
|
|
481
483
|
if (!button.contains(e.target) && !menu.contains(e.target)) {
|
|
482
484
|
close();
|
|
@@ -498,6 +500,11 @@ export function createMenu(button, menu, options = {}) {
|
|
|
498
500
|
rovingCleanup = null;
|
|
499
501
|
}
|
|
500
502
|
|
|
503
|
+
if (documentClickTimeout) {
|
|
504
|
+
clearTimeout(documentClickTimeout);
|
|
505
|
+
documentClickTimeout = null;
|
|
506
|
+
}
|
|
507
|
+
|
|
501
508
|
if (documentClickHandler) {
|
|
502
509
|
document.removeEventListener('click', documentClickHandler);
|
|
503
510
|
documentClickHandler = null;
|
|
@@ -533,11 +540,17 @@ export function createMenu(button, menu, options = {}) {
|
|
|
533
540
|
button.removeEventListener('click', toggle);
|
|
534
541
|
button.removeEventListener('keydown', handleButtonKeyDown);
|
|
535
542
|
menu.removeEventListener('keydown', handleMenuKeyDown);
|
|
543
|
+
if (documentClickTimeout) {
|
|
544
|
+
clearTimeout(documentClickTimeout);
|
|
545
|
+
documentClickTimeout = null;
|
|
546
|
+
}
|
|
536
547
|
if (documentClickHandler) {
|
|
537
548
|
document.removeEventListener('click', documentClickHandler);
|
|
549
|
+
documentClickHandler = null;
|
|
538
550
|
}
|
|
539
551
|
if (rovingCleanup) {
|
|
540
552
|
rovingCleanup();
|
|
553
|
+
rovingCleanup = null;
|
|
541
554
|
}
|
|
542
555
|
};
|
|
543
556
|
|
|
@@ -9,6 +9,8 @@
|
|
|
9
9
|
import { pulse, effect, onCleanup } from '../pulse.js';
|
|
10
10
|
import { createWebSocket, WebSocketError } from '../websocket.js';
|
|
11
11
|
import { ClientError } from '../errors.js';
|
|
12
|
+
import { extractOperationName } from './cache.js';
|
|
13
|
+
import { GraphQLError } from './client.js';
|
|
12
14
|
|
|
13
15
|
// ============================================================================
|
|
14
16
|
// Constants
|