accented 0.0.0-20250124142030 → 0.0.0-20250223121749
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/README.md +55 -3
- package/dist/accented.d.ts +3 -1
- package/dist/accented.d.ts.map +1 -1
- package/dist/accented.js +69 -50
- package/dist/accented.js.map +1 -1
- package/dist/constants.d.ts +3 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +3 -0
- package/dist/constants.js.map +1 -0
- package/dist/dom-updater.d.ts +1 -1
- package/dist/dom-updater.d.ts.map +1 -1
- package/dist/dom-updater.js +26 -19
- package/dist/dom-updater.js.map +1 -1
- package/dist/elements/{accented-container.d.ts → accented-dialog.d.ts} +10 -4
- package/dist/elements/accented-dialog.d.ts.map +1 -0
- package/dist/elements/accented-dialog.js +361 -0
- package/dist/elements/accented-dialog.js.map +1 -0
- package/dist/elements/accented-trigger.d.ts +359 -0
- package/dist/elements/accented-trigger.d.ts.map +1 -0
- package/dist/elements/accented-trigger.js +159 -0
- package/dist/elements/accented-trigger.js.map +1 -0
- package/dist/intersection-observer.d.ts +5 -0
- package/dist/intersection-observer.d.ts.map +1 -0
- package/dist/intersection-observer.js +28 -0
- package/dist/intersection-observer.js.map +1 -0
- package/dist/log-and-rethrow.d.ts +2 -0
- package/dist/log-and-rethrow.d.ts.map +1 -0
- package/dist/log-and-rethrow.js +7 -0
- package/dist/log-and-rethrow.js.map +1 -0
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +10 -5
- package/dist/logger.js.map +1 -1
- package/dist/register-elements.d.ts +2 -0
- package/dist/register-elements.d.ts.map +1 -0
- package/dist/register-elements.js +21 -0
- package/dist/register-elements.js.map +1 -0
- package/dist/resize-listener.d.ts +2 -0
- package/dist/resize-listener.d.ts.map +1 -0
- package/dist/resize-listener.js +18 -0
- package/dist/resize-listener.js.map +1 -0
- package/dist/scanner.d.ts +2 -2
- package/dist/scanner.d.ts.map +1 -1
- package/dist/scanner.js +97 -33
- package/dist/scanner.js.map +1 -1
- package/dist/scroll-listeners.d.ts +2 -0
- package/dist/scroll-listeners.d.ts.map +1 -0
- package/dist/scroll-listeners.js +38 -0
- package/dist/scroll-listeners.js.map +1 -0
- package/dist/state.d.ts +1 -0
- package/dist/state.d.ts.map +1 -1
- package/dist/state.js +6 -0
- package/dist/state.js.map +1 -1
- package/dist/types.d.ts +70 -18
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -0
- package/dist/types.js.map +1 -1
- package/dist/utils/deep-merge.js +1 -1
- package/dist/utils/deep-merge.js.map +1 -1
- package/dist/utils/get-element-html.d.ts +2 -0
- package/dist/utils/get-element-html.d.ts.map +1 -0
- package/dist/utils/get-element-html.js +14 -0
- package/dist/utils/get-element-html.js.map +1 -0
- package/dist/utils/get-element-position.d.ts +3 -0
- package/dist/utils/get-element-position.d.ts.map +1 -0
- package/dist/utils/get-element-position.js +22 -0
- package/dist/utils/get-element-position.js.map +1 -0
- package/dist/utils/get-scrollable-ancestors.d.ts +2 -0
- package/dist/utils/get-scrollable-ancestors.d.ts.map +1 -0
- package/dist/utils/get-scrollable-ancestors.js +15 -0
- package/dist/utils/get-scrollable-ancestors.js.map +1 -0
- package/dist/utils/recalculate-positions.d.ts +2 -0
- package/dist/utils/recalculate-positions.d.ts.map +1 -0
- package/dist/utils/recalculate-positions.js +27 -0
- package/dist/utils/recalculate-positions.js.map +1 -0
- package/dist/utils/recalculate-scrollable-ancestors.d.ts +2 -0
- package/dist/utils/recalculate-scrollable-ancestors.d.ts.map +1 -0
- package/dist/utils/recalculate-scrollable-ancestors.js +13 -0
- package/dist/utils/recalculate-scrollable-ancestors.js.map +1 -0
- package/dist/utils/supports-anchor-positioning.d.ts +6 -0
- package/dist/utils/supports-anchor-positioning.d.ts.map +1 -0
- package/dist/utils/supports-anchor-positioning.js +4 -0
- package/dist/utils/supports-anchor-positioning.js.map +1 -0
- package/dist/utils/transform-violations.d.ts.map +1 -1
- package/dist/utils/transform-violations.js +9 -0
- package/dist/utils/transform-violations.js.map +1 -1
- package/dist/utils/update-elements-with-issues.d.ts +3 -1
- package/dist/utils/update-elements-with-issues.d.ts.map +1 -1
- package/dist/utils/update-elements-with-issues.js +25 -7
- package/dist/utils/update-elements-with-issues.js.map +1 -1
- package/dist/validate-options.d.ts +3 -0
- package/dist/validate-options.d.ts.map +1 -0
- package/dist/validate-options.js +42 -0
- package/dist/validate-options.js.map +1 -0
- package/package.json +2 -1
- package/src/accented.ts +78 -58
- package/src/constants.ts +2 -0
- package/src/dom-updater.ts +26 -18
- package/src/elements/accented-dialog.ts +384 -0
- package/src/elements/accented-trigger.ts +179 -0
- package/src/intersection-observer.ts +28 -0
- package/src/log-and-rethrow.ts +9 -0
- package/src/logger.ts +11 -6
- package/src/register-elements.ts +21 -0
- package/src/resize-listener.ts +17 -0
- package/src/scanner.ts +108 -37
- package/src/scroll-listeners.ts +37 -0
- package/src/state.ts +12 -0
- package/src/types.ts +77 -19
- package/src/utils/deep-merge.test.ts +7 -0
- package/src/utils/deep-merge.ts +1 -1
- package/src/utils/get-element-html.ts +13 -0
- package/src/utils/get-element-position.ts +21 -0
- package/src/utils/get-scrollable-ancestors.ts +14 -0
- package/src/utils/recalculate-positions.ts +27 -0
- package/src/utils/recalculate-scrollable-ancestors.ts +13 -0
- package/src/utils/supports-anchor-positioning.ts +7 -0
- package/src/utils/transform-violations.ts +12 -1
- package/src/utils/update-elements-with-issues.test.ts +90 -16
- package/src/utils/update-elements-with-issues.ts +40 -20
- package/src/validate-options.ts +44 -0
- package/dist/elements/accented-container.d.ts.map +0 -1
- package/dist/elements/accented-container.js +0 -131
- package/dist/elements/accented-container.js.map +0 -1
- package/src/elements/accented-container.ts +0 -147
package/README.md
CHANGED
|
@@ -37,7 +37,47 @@ The following types are exported for TypeScript consumers:
|
|
|
37
37
|
|
|
38
38
|
### Options
|
|
39
39
|
|
|
40
|
-
#### `
|
|
40
|
+
#### `axeContext`
|
|
41
|
+
|
|
42
|
+
**Type:** see [documentation](https://www.deque.com/axe/core-documentation/api-documentation/#context-parameter).
|
|
43
|
+
|
|
44
|
+
**Default:** `document`.
|
|
45
|
+
|
|
46
|
+
The `context` parameter for `axe.run()`.
|
|
47
|
+
|
|
48
|
+
Determines what element(s) to scan for accessibility issues.
|
|
49
|
+
|
|
50
|
+
Accepts a variety of shapes:
|
|
51
|
+
* an element reference;
|
|
52
|
+
* a selector;
|
|
53
|
+
* a `NodeList`;
|
|
54
|
+
* an include / exclude object;
|
|
55
|
+
* and more.
|
|
56
|
+
|
|
57
|
+
See documentation: https://www.deque.com/axe/core-documentation/api-documentation/#context-parameter
|
|
58
|
+
|
|
59
|
+
#### `axeOptions`
|
|
60
|
+
|
|
61
|
+
**Type:** object.
|
|
62
|
+
|
|
63
|
+
**Default:** `{}`.
|
|
64
|
+
|
|
65
|
+
The `options` parameter for `axe.run()`.
|
|
66
|
+
|
|
67
|
+
Accented only supports two keys of the `options` object:
|
|
68
|
+
|
|
69
|
+
* `rules`;
|
|
70
|
+
* `runOnly`.
|
|
71
|
+
|
|
72
|
+
Both properties are optional, and both control which accessibility rules your page is tested against.
|
|
73
|
+
|
|
74
|
+
See documentation: https://www.deque.com/axe/core-documentation/api-documentation/#options-parameter
|
|
75
|
+
|
|
76
|
+
#### `output`
|
|
77
|
+
|
|
78
|
+
An object controlling how the results of scans will be presented.
|
|
79
|
+
|
|
80
|
+
#### `output.console`
|
|
41
81
|
|
|
42
82
|
**Type:** boolean.
|
|
43
83
|
|
|
@@ -79,9 +119,15 @@ The character sequence that’s used in various elements, attributes and stylesh
|
|
|
79
119
|
You shouldn’t have to use this attribute unless some of the names on your page conflict with what Accented provides by default.
|
|
80
120
|
|
|
81
121
|
* The data attribute that’s added to elements with issues (default: `data-accented`).
|
|
82
|
-
* The custom
|
|
122
|
+
* The custom elements for the button and the dialog that get created for each element with issues
|
|
123
|
+
(default: `accented-trigger`, `accented-dialog`).
|
|
83
124
|
* The CSS cascade layer containing page-wide Accented-specific styles (default: `accented`).
|
|
84
125
|
* The prefix for some of the CSS custom properties used by Accented (default: `--accented-`).
|
|
126
|
+
* The window property that’s used to prevent multiple axe-core scans from running simultaneously
|
|
127
|
+
(default: `__accented_axe_running__`).
|
|
128
|
+
|
|
129
|
+
Only lowercase alphanumeric characters and dashes (-) are allowed in the name,
|
|
130
|
+
and it must start with a lowercase letter.
|
|
85
131
|
|
|
86
132
|
**Example:**
|
|
87
133
|
|
|
@@ -90,7 +136,7 @@ accented({name: 'my-name'});
|
|
|
90
136
|
```
|
|
91
137
|
|
|
92
138
|
With the above option provided, the attribute set on elements with issues will be `data-my-name`,
|
|
93
|
-
|
|
139
|
+
a custom element will be called `my-name-trigger`, and so on.
|
|
94
140
|
|
|
95
141
|
#### `throttle`
|
|
96
142
|
|
|
@@ -130,6 +176,12 @@ This may be useful if you’re expecting bursts of mutations on your page.
|
|
|
130
176
|
|
|
131
177
|
TODO: Create a separate doc with info on using `:root` and CSS layers to control some aspects of styling.
|
|
132
178
|
|
|
179
|
+
Documented CSS custom props:
|
|
180
|
+
* `--accented-primary-color`
|
|
181
|
+
* `--accented-secondary-color`
|
|
182
|
+
* `--accented-outline-width`
|
|
183
|
+
* `--accented-outline-style`
|
|
184
|
+
|
|
133
185
|
## Miscellaneous
|
|
134
186
|
|
|
135
187
|
### Shadow DOM
|
package/dist/accented.d.ts
CHANGED
package/dist/accented.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accented.d.ts","sourceRoot":"","sources":["../src/accented.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"accented.d.ts","sourceRoot":"","sources":["../src/accented.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAKhE,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,CAAC;AAEjD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,OAAO,GAAE,eAAoB,GAAG,eAAe,CA4E/E"}
|
package/dist/accented.js
CHANGED
|
@@ -1,23 +1,15 @@
|
|
|
1
|
+
import registerElements from './register-elements.js';
|
|
1
2
|
import createDomUpdater from './dom-updater.js';
|
|
2
3
|
import createLogger from './logger.js';
|
|
3
4
|
import createScanner from './scanner.js';
|
|
5
|
+
import setupScrollListeners from './scroll-listeners.js';
|
|
6
|
+
import setupResizeListener from './resize-listener.js';
|
|
7
|
+
import setupIntersectionObserver from './intersection-observer.js';
|
|
4
8
|
import { enabled, extendedElementsWithIssues } from './state.js';
|
|
5
9
|
import deepMerge from './utils/deep-merge.js';
|
|
6
|
-
import
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
// * update validations and validation tests if necessary;
|
|
10
|
-
// * update examples in the accented() function JSDoc;
|
|
11
|
-
// * update examples in the Readme.
|
|
12
|
-
const defaultOptions = {
|
|
13
|
-
name: 'accented',
|
|
14
|
-
outputToConsole: true,
|
|
15
|
-
throttle: {
|
|
16
|
-
wait: 1000,
|
|
17
|
-
leading: true
|
|
18
|
-
},
|
|
19
|
-
callback: () => { }
|
|
20
|
-
};
|
|
10
|
+
import validateOptions from './validate-options.js';
|
|
11
|
+
import supportsAnchorPositioning from './utils/supports-anchor-positioning.js';
|
|
12
|
+
import logAndRethrow from './log-and-rethrow.js';
|
|
21
13
|
/**
|
|
22
14
|
* Enables highlighting of elements with accessibility issues.
|
|
23
15
|
*
|
|
@@ -30,7 +22,9 @@ const defaultOptions = {
|
|
|
30
22
|
*
|
|
31
23
|
* @example
|
|
32
24
|
* const disableAccented = accented({
|
|
33
|
-
*
|
|
25
|
+
* output: {
|
|
26
|
+
* console: false
|
|
27
|
+
* },
|
|
34
28
|
* throttle: {
|
|
35
29
|
* wait: 500,
|
|
36
30
|
* leading: false
|
|
@@ -42,44 +36,69 @@ const defaultOptions = {
|
|
|
42
36
|
* });
|
|
43
37
|
*/
|
|
44
38
|
export default function accented(options = {}) {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
if (typeof
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
throw new TypeError(`Invalid argument: \`throttle.wait\` option must be a non-negative number if provided. It’s currently set to ${options.throttle.wait}.`);
|
|
39
|
+
validateOptions(options);
|
|
40
|
+
try {
|
|
41
|
+
if (typeof window === 'undefined' || typeof document === 'undefined') {
|
|
42
|
+
console.warn('Accented: this script can only run in the browser, and it’s likely running on the server now. Exiting.');
|
|
43
|
+
console.trace();
|
|
44
|
+
return () => { };
|
|
52
45
|
}
|
|
53
|
-
|
|
54
|
-
|
|
46
|
+
const defaultOutput = {
|
|
47
|
+
console: true
|
|
48
|
+
};
|
|
49
|
+
const defaultThrottle = {
|
|
50
|
+
wait: 1000,
|
|
51
|
+
leading: true
|
|
52
|
+
};
|
|
53
|
+
// IMPORTANT: when changing any of the properties or values, also do the following:
|
|
54
|
+
// * update the default value in the type documentation accordingly;
|
|
55
|
+
// * update validations and validation tests if necessary;
|
|
56
|
+
// * update examples in the accented() function JSDoc;
|
|
57
|
+
// * update examples in the Readme.
|
|
58
|
+
const defaultOptions = {
|
|
59
|
+
axeContext: document,
|
|
60
|
+
axeOptions: {},
|
|
61
|
+
name: 'accented',
|
|
62
|
+
output: defaultOutput,
|
|
63
|
+
throttle: defaultThrottle,
|
|
64
|
+
callback: () => { }
|
|
65
|
+
};
|
|
66
|
+
const { axeContext, axeOptions, name, output, throttle, callback } = deepMerge(defaultOptions, options);
|
|
67
|
+
if (enabled.value) {
|
|
68
|
+
// Add link to the recipes section of the docs (#56).
|
|
69
|
+
console.warn('You are trying to run the Accented library more than once. ' +
|
|
70
|
+
'This will likely lead to errors.');
|
|
71
|
+
console.trace();
|
|
55
72
|
}
|
|
73
|
+
enabled.value = true;
|
|
74
|
+
registerElements(name);
|
|
75
|
+
const { disconnect: cleanupIntersectionObserver, intersectionObserver } = supportsAnchorPositioning(window) ? {} : setupIntersectionObserver();
|
|
76
|
+
const cleanupScanner = createScanner(name, axeContext, axeOptions, throttle, callback);
|
|
77
|
+
const cleanupDomUpdater = createDomUpdater(name, intersectionObserver);
|
|
78
|
+
const cleanupLogger = output.console ? createLogger() : () => { };
|
|
79
|
+
const cleanupScrollListeners = supportsAnchorPositioning(window) ? () => { } : setupScrollListeners();
|
|
80
|
+
const cleanupResizeListener = supportsAnchorPositioning(window) ? () => { } : setupResizeListener();
|
|
81
|
+
return () => {
|
|
82
|
+
try {
|
|
83
|
+
enabled.value = false;
|
|
84
|
+
extendedElementsWithIssues.value = [];
|
|
85
|
+
cleanupScanner();
|
|
86
|
+
cleanupDomUpdater();
|
|
87
|
+
cleanupLogger();
|
|
88
|
+
cleanupScrollListeners();
|
|
89
|
+
cleanupResizeListener();
|
|
90
|
+
if (cleanupIntersectionObserver) {
|
|
91
|
+
cleanupIntersectionObserver();
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
catch (error) {
|
|
95
|
+
logAndRethrow(error);
|
|
96
|
+
}
|
|
97
|
+
};
|
|
56
98
|
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
console.trace();
|
|
99
|
+
catch (error) {
|
|
100
|
+
logAndRethrow(error);
|
|
60
101
|
return () => { };
|
|
61
102
|
}
|
|
62
|
-
const { name, outputToConsole, throttle, callback } = deepMerge(defaultOptions, options);
|
|
63
|
-
const AccentedContainer = getAccentedContainer(name);
|
|
64
|
-
if (!customElements.get(`${name}-container`)) {
|
|
65
|
-
customElements.define(`${name}-container`, AccentedContainer);
|
|
66
|
-
}
|
|
67
|
-
if (enabled.value) {
|
|
68
|
-
// TODO: add link to relevant docs
|
|
69
|
-
console.warn('You are trying to run the Accented library more than once. ' +
|
|
70
|
-
'This will likely lead to errors.');
|
|
71
|
-
console.trace();
|
|
72
|
-
}
|
|
73
|
-
enabled.value = true;
|
|
74
|
-
const cleanupScanner = createScanner(name, throttle, callback);
|
|
75
|
-
const cleanupDomUpdater = createDomUpdater(name);
|
|
76
|
-
const cleanupLogger = outputToConsole ? createLogger() : () => { };
|
|
77
|
-
return () => {
|
|
78
|
-
enabled.value = false;
|
|
79
|
-
extendedElementsWithIssues.value = [];
|
|
80
|
-
cleanupScanner();
|
|
81
|
-
cleanupDomUpdater();
|
|
82
|
-
cleanupLogger();
|
|
83
|
-
};
|
|
84
103
|
}
|
|
85
104
|
//# sourceMappingURL=accented.js.map
|
package/dist/accented.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accented.js","sourceRoot":"","sources":["../src/accented.ts"],"names":[],"mappings":"AACA,OAAO,gBAAgB,MAAM,kBAAkB,CAAC;AAChD,OAAO,YAAY,MAAM,aAAa,CAAC;AACvC,OAAO,aAAa,MAAM,cAAc,CAAC;AACzC,OAAO,
|
|
1
|
+
{"version":3,"file":"accented.js","sourceRoot":"","sources":["../src/accented.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,2CAA2C,CAAC;AACpE,eAAO,MAAM,SAAS,mDAAmD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG,wCAAwC,CAAC;AACpE,MAAM,CAAC,MAAM,SAAS,GAAG,gDAAgD,CAAC"}
|
package/dist/dom-updater.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export default function createDomUpdater(name: string): () => void;
|
|
1
|
+
export default function createDomUpdater(name: string, intersectionObserver?: IntersectionObserver): () => void;
|
|
2
2
|
//# sourceMappingURL=dom-updater.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dom-updater.d.ts","sourceRoot":"","sources":["../src/dom-updater.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dom-updater.d.ts","sourceRoot":"","sources":["../src/dom-updater.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,oBAAoB,CAAC,EAAE,oBAAoB,cA0GjG"}
|
package/dist/dom-updater.js
CHANGED
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
import { effect } from '@preact/signals-core';
|
|
2
2
|
import { extendedElementsWithIssues } from './state.js';
|
|
3
|
-
|
|
3
|
+
import supportsAnchorPositioning from './utils/supports-anchor-positioning.js';
|
|
4
|
+
export default function createDomUpdater(name, intersectionObserver) {
|
|
4
5
|
const attrName = `data-${name}`;
|
|
5
|
-
function
|
|
6
|
-
return
|
|
6
|
+
function getAnchorNames(anchorNameValue) {
|
|
7
|
+
return anchorNameValue
|
|
8
|
+
.split(',')
|
|
9
|
+
.map(anchorName => anchorName.trim())
|
|
10
|
+
.filter(anchorName => anchorName.startsWith('--'));
|
|
7
11
|
}
|
|
8
12
|
function setAnchorName(element, id) {
|
|
9
13
|
const anchorNameValue = element.style.getPropertyValue('anchor-name') || window.getComputedStyle(element).getPropertyValue('anchor-name');
|
|
10
|
-
const anchorNames = anchorNameValue
|
|
11
|
-
.split(/,\s*/)
|
|
12
|
-
.filter(anchorName => anchorName.startsWith('--'));
|
|
14
|
+
const anchorNames = getAnchorNames(anchorNameValue);
|
|
13
15
|
if (anchorNames.length > 0) {
|
|
14
16
|
element.style.setProperty('anchor-name', `${anchorNameValue}, --${name}-anchor-${id}`);
|
|
15
17
|
}
|
|
@@ -19,9 +21,7 @@ export default function createDomUpdater(name) {
|
|
|
19
21
|
}
|
|
20
22
|
function removeAnchorName(element, id) {
|
|
21
23
|
const anchorNameValue = element.style.getPropertyValue('anchor-name');
|
|
22
|
-
const anchorNames = anchorNameValue
|
|
23
|
-
.split(/,\s*/)
|
|
24
|
-
.filter(anchorName => anchorName.startsWith('--'));
|
|
24
|
+
const anchorNames = getAnchorNames(anchorNameValue);
|
|
25
25
|
const index = anchorNames.indexOf(`--${name}-anchor-${id}`);
|
|
26
26
|
if (anchorNames.length === 1 && index === 0) {
|
|
27
27
|
element.style.removeProperty('anchor-name');
|
|
@@ -31,25 +31,32 @@ export default function createDomUpdater(name) {
|
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
33
|
function setIssues(extendedElementsWithIssues) {
|
|
34
|
-
const displayAccentedContainers = supportsAnchorPositioning();
|
|
35
34
|
for (const elementWithIssues of extendedElementsWithIssues) {
|
|
36
35
|
elementWithIssues.element.setAttribute(attrName, elementWithIssues.id.toString());
|
|
37
|
-
if (
|
|
36
|
+
if (supportsAnchorPositioning(window)) {
|
|
38
37
|
setAnchorName(elementWithIssues.element, elementWithIssues.id);
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
38
|
+
}
|
|
39
|
+
if (elementWithIssues.element.parentElement) {
|
|
40
|
+
elementWithIssues.element.insertAdjacentElement('afterend', elementWithIssues.trigger);
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
elementWithIssues.element.insertAdjacentElement('beforeend', elementWithIssues.trigger);
|
|
44
|
+
}
|
|
45
|
+
if (intersectionObserver) {
|
|
46
|
+
intersectionObserver.observe(elementWithIssues.element);
|
|
45
47
|
}
|
|
46
48
|
}
|
|
47
49
|
}
|
|
48
50
|
function removeIssues(extendedElementsWithIssues) {
|
|
49
51
|
for (const elementWithIssues of extendedElementsWithIssues) {
|
|
50
52
|
elementWithIssues.element.removeAttribute(attrName);
|
|
51
|
-
|
|
52
|
-
|
|
53
|
+
if (supportsAnchorPositioning(window)) {
|
|
54
|
+
removeAnchorName(elementWithIssues.element, elementWithIssues.id);
|
|
55
|
+
}
|
|
56
|
+
elementWithIssues.trigger.remove();
|
|
57
|
+
if (intersectionObserver) {
|
|
58
|
+
intersectionObserver.unobserve(elementWithIssues.element);
|
|
59
|
+
}
|
|
53
60
|
}
|
|
54
61
|
}
|
|
55
62
|
const stylesheet = new CSSStyleSheet();
|
package/dist/dom-updater.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dom-updater.js","sourceRoot":"","sources":["../src/dom-updater.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"dom-updater.js","sourceRoot":"","sources":["../src/dom-updater.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +1,21 @@
|
|
|
1
1
|
import type { Issue } from '../types';
|
|
2
2
|
import type { Signal } from '@preact/signals-core';
|
|
3
|
-
export interface
|
|
3
|
+
export interface AccentedDialog extends HTMLElement {
|
|
4
4
|
issues: Signal<Array<Issue>> | undefined;
|
|
5
|
+
element: Element | undefined;
|
|
6
|
+
showModal: () => void;
|
|
5
7
|
}
|
|
6
|
-
declare const _default: (
|
|
8
|
+
declare const _default: () => {
|
|
7
9
|
new (): {
|
|
8
|
-
"__#1@#abortController": AbortController | undefined;
|
|
9
10
|
"__#1@#disposeOfEffect": (() => void) | undefined;
|
|
11
|
+
"__#1@#abortController": AbortController | undefined;
|
|
10
12
|
issues: Signal<Array<Issue>> | undefined;
|
|
13
|
+
element: Element | undefined;
|
|
14
|
+
"__#1@#elementMutationObserver": MutationObserver | undefined;
|
|
11
15
|
connectedCallback(): void;
|
|
12
16
|
disconnectedCallback(): void;
|
|
17
|
+
showModal(): void;
|
|
18
|
+
"__#1@#onDialogClick"(event: MouseEvent): void;
|
|
13
19
|
accessKey: string;
|
|
14
20
|
readonly accessKeyLabel: string;
|
|
15
21
|
autocapitalize: string;
|
|
@@ -347,4 +353,4 @@ declare const _default: (name: string) => {
|
|
|
347
353
|
};
|
|
348
354
|
};
|
|
349
355
|
export default _default;
|
|
350
|
-
//# sourceMappingURL=accented-
|
|
356
|
+
//# sourceMappingURL=accented-dialog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accented-dialog.d.ts","sourceRoot":"","sources":["../../src/elements/accented-dialog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAMnD,MAAM,WAAW,cAAe,SAAQ,WAAW;IACjD,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,SAAS,CAAC;IACzC,OAAO,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B,SAAS,EAAE,MAAM,IAAI,CAAC;CACvB;;;iCA4MqB,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS;iCAExB,eAAe,GAAG,SAAS;gBAErC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,SAAS;iBAE/B,OAAO,GAAG,SAAS;yCAEF,gBAAgB,GAAG,SAAS;;;;qCAgJhC,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAhWpC,wBAgXE"}
|