vrembem 4.0.0-next.22 → 4.0.0-next.24
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/dev/base.css +14 -12
- package/dev/base.css.map +1 -1
- package/dev/index.css +14 -12
- package/dev/index.css.map +1 -1
- package/dev/index.js +56 -34
- package/dev/index.js.map +1 -1
- package/dev/index.umd.cjs +56 -34
- package/dev/index.umd.cjs.map +1 -1
- package/dist/base.css +1 -1
- package/dist/base.css.map +1 -1
- package/dist/index.css +1 -1
- package/dist/index.css.map +1 -1
- package/dist/index.js +624 -619
- package/dist/index.js.map +1 -1
- package/dist/index.umd.cjs +3 -3
- package/dist/index.umd.cjs.map +1 -1
- package/package.json +22 -22
package/dev/index.umd.cjs
CHANGED
|
@@ -86,29 +86,6 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
86
86
|
});
|
|
87
87
|
}
|
|
88
88
|
}
|
|
89
|
-
const not = {
|
|
90
|
-
inert: ":not([inert]):not([inert] *)",
|
|
91
|
-
negTabIndex: ':not([tabindex^="-"])',
|
|
92
|
-
disabled: ":not(:disabled)"
|
|
93
|
-
};
|
|
94
|
-
const focusableSelectors = [
|
|
95
|
-
`a[href]${not.inert}${not.negTabIndex}`,
|
|
96
|
-
`area[href]${not.inert}${not.negTabIndex}`,
|
|
97
|
-
`input:not([type="hidden"]):not([type="radio"])${not.inert}${not.negTabIndex}${not.disabled}`,
|
|
98
|
-
`input[type="radio"]${not.inert}${not.negTabIndex}${not.disabled}`,
|
|
99
|
-
`select${not.inert}${not.negTabIndex}${not.disabled}`,
|
|
100
|
-
`textarea${not.inert}${not.negTabIndex}${not.disabled}`,
|
|
101
|
-
`button${not.inert}${not.negTabIndex}${not.disabled}`,
|
|
102
|
-
`details${not.inert} > summary:first-of-type${not.negTabIndex}`,
|
|
103
|
-
// Discard until Firefox supports `:has()`
|
|
104
|
-
// See: https://github.com/KittyGiraudel/focusable-selectors/issues/12
|
|
105
|
-
// `details:not(:has(> summary))${not.inert}${not.negTabIndex}`,
|
|
106
|
-
`iframe${not.inert}${not.negTabIndex}`,
|
|
107
|
-
`audio[controls]${not.inert}${not.negTabIndex}`,
|
|
108
|
-
`video[controls]${not.inert}${not.negTabIndex}`,
|
|
109
|
-
`[contenteditable]${not.inert}${not.negTabIndex}`,
|
|
110
|
-
`[tabindex]${not.inert}${not.negTabIndex}`
|
|
111
|
-
];
|
|
112
89
|
class FocusTrap {
|
|
113
90
|
constructor(el = null, selectorFocus = "[data-focus]") {
|
|
114
91
|
__privateAdd(this, _focusable);
|
|
@@ -158,7 +135,8 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
158
135
|
const focusable = [];
|
|
159
136
|
const initFocus = document.activeElement;
|
|
160
137
|
const initScrollTop = el.scrollTop;
|
|
161
|
-
const
|
|
138
|
+
const selector = focusableSelectors.join(",");
|
|
139
|
+
const els = el.querySelectorAll(selector);
|
|
162
140
|
els.forEach((el2) => {
|
|
163
141
|
el2.focus();
|
|
164
142
|
if (document.activeElement === el2) {
|
|
@@ -173,6 +151,24 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
173
151
|
_focusable = new WeakMap();
|
|
174
152
|
_handleFocusTrap = new WeakMap();
|
|
175
153
|
_handleFocusLock = new WeakMap();
|
|
154
|
+
const notInert = ":not([inert])";
|
|
155
|
+
const notNegTabIndex = ':not([tabindex^="-"])';
|
|
156
|
+
const notDisabled = ":not(:disabled)";
|
|
157
|
+
const focusableSelectors = [
|
|
158
|
+
`a[href]${notInert}${notNegTabIndex}`,
|
|
159
|
+
`area[href]${notInert}${notNegTabIndex}`,
|
|
160
|
+
`input:not([type="hidden"]):not([type="radio"])${notInert}${notNegTabIndex}${notDisabled}`,
|
|
161
|
+
`input[type="radio"]${notInert}${notNegTabIndex}${notDisabled}`,
|
|
162
|
+
`select${notInert}${notNegTabIndex}${notDisabled}`,
|
|
163
|
+
`textarea${notInert}${notNegTabIndex}${notDisabled}`,
|
|
164
|
+
`button${notInert}${notNegTabIndex}${notDisabled}`,
|
|
165
|
+
`details${notInert} > summary:first-of-type${notNegTabIndex}`,
|
|
166
|
+
`iframe${notInert}${notNegTabIndex}`,
|
|
167
|
+
`audio[controls]${notInert}${notNegTabIndex}`,
|
|
168
|
+
`video[controls]${notInert}${notNegTabIndex}`,
|
|
169
|
+
`[contenteditable]${notInert}${notNegTabIndex}`,
|
|
170
|
+
`[tabindex]${notInert}${notNegTabIndex}`
|
|
171
|
+
];
|
|
176
172
|
function handleFocusTrap(event) {
|
|
177
173
|
const isTab = event.key === "Tab" || event.keyCode === 9;
|
|
178
174
|
if (!isTab) return;
|
|
@@ -1196,6 +1192,7 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
1196
1192
|
autoMount: false,
|
|
1197
1193
|
// Selectors
|
|
1198
1194
|
selectorPopover: ".popover",
|
|
1195
|
+
selectorTooltip: ".popover_tooltip",
|
|
1199
1196
|
selectorArrow: ".popover__arrow",
|
|
1200
1197
|
// State classes
|
|
1201
1198
|
stateActive: "is-active",
|
|
@@ -1320,9 +1317,9 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
1320
1317
|
if (!trigger && !popover) {
|
|
1321
1318
|
return { error: new Error(`No popover elements found using the ID: "${id}".`) };
|
|
1322
1319
|
} else if (!trigger) {
|
|
1323
|
-
return { error: new Error(
|
|
1320
|
+
return { error: new Error(`No popover trigger associated with the provided popover: "${id}".`) };
|
|
1324
1321
|
} else if (!popover) {
|
|
1325
|
-
return { error: new Error(
|
|
1322
|
+
return { error: new Error(`No popover associated with the provided popover trigger: "${id}".`) };
|
|
1326
1323
|
} else {
|
|
1327
1324
|
return { popover, trigger };
|
|
1328
1325
|
}
|
|
@@ -1333,8 +1330,9 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
1333
1330
|
async function close(query) {
|
|
1334
1331
|
const popover = query ? getPopover.call(this, query) : await closeAll.call(this);
|
|
1335
1332
|
if (popover && popover.state === "opened") {
|
|
1333
|
+
popover.el.inert = true;
|
|
1336
1334
|
popover.el.classList.remove(this.settings.stateActive);
|
|
1337
|
-
if (popover.
|
|
1335
|
+
if (!popover.isTooltip) {
|
|
1338
1336
|
popover.trigger.setAttribute("aria-expanded", "false");
|
|
1339
1337
|
}
|
|
1340
1338
|
popover.popper.setOptions({
|
|
@@ -1363,10 +1361,11 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
1363
1361
|
function closeCheck(popover) {
|
|
1364
1362
|
if (popover.state != "opened") return;
|
|
1365
1363
|
setTimeout(() => {
|
|
1366
|
-
const isHovered = popover.el.
|
|
1367
|
-
|
|
1364
|
+
const isHovered = popover.el.matches(":hover") === popover.el || popover.trigger.matches(":hover") === popover.trigger;
|
|
1365
|
+
let isFocused = document.activeElement.closest(
|
|
1368
1366
|
`#${popover.id}, [aria-controls="${popover.id}"], [aria-describedby="${popover.id}"]`
|
|
1369
1367
|
);
|
|
1368
|
+
isFocused = isFocused ? isFocused.matches(":focus-visible") : false;
|
|
1370
1369
|
if (!isHovered && !isFocused) {
|
|
1371
1370
|
popover.close();
|
|
1372
1371
|
}
|
|
@@ -1374,6 +1373,16 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
1374
1373
|
}, 1);
|
|
1375
1374
|
}
|
|
1376
1375
|
function handleClick(popover) {
|
|
1376
|
+
const tooltipId = popover.trigger.getAttribute("aria-describedby");
|
|
1377
|
+
if (tooltipId) {
|
|
1378
|
+
const entry = this.get(tooltipId);
|
|
1379
|
+
if (entry.isTooltip) {
|
|
1380
|
+
if (entry.toggleDelayId) {
|
|
1381
|
+
clearTimeout(entry.toggleDelayId);
|
|
1382
|
+
}
|
|
1383
|
+
entry.close();
|
|
1384
|
+
}
|
|
1385
|
+
}
|
|
1377
1386
|
if (popover.state === "opened") {
|
|
1378
1387
|
popover.close();
|
|
1379
1388
|
} else {
|
|
@@ -1382,7 +1391,14 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
1382
1391
|
handleDocumentClick.call(this, popover);
|
|
1383
1392
|
}
|
|
1384
1393
|
}
|
|
1385
|
-
function handleMouseEnter(popover) {
|
|
1394
|
+
function handleMouseEnter(popover, event) {
|
|
1395
|
+
if (event.type == "focus" && !popover.trigger.matches(":focus-visible")) {
|
|
1396
|
+
return;
|
|
1397
|
+
}
|
|
1398
|
+
const isExpanded = popover.trigger.getAttribute("aria-expanded");
|
|
1399
|
+
if (isExpanded && isExpanded == "true") {
|
|
1400
|
+
return;
|
|
1401
|
+
}
|
|
1386
1402
|
if (popover.toggleDelayId) {
|
|
1387
1403
|
clearTimeout(popover.toggleDelayId);
|
|
1388
1404
|
}
|
|
@@ -2816,8 +2832,9 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
2816
2832
|
}
|
|
2817
2833
|
async function open(query) {
|
|
2818
2834
|
const popover = getPopover.call(this, query);
|
|
2835
|
+
popover.el.inert = false;
|
|
2819
2836
|
popover.el.classList.add(this.settings.stateActive);
|
|
2820
|
-
if (popover.
|
|
2837
|
+
if (!popover.isTooltip) {
|
|
2821
2838
|
popover.trigger.setAttribute("aria-expanded", "true");
|
|
2822
2839
|
}
|
|
2823
2840
|
popover.config = getConfig(popover.el, this.settings);
|
|
@@ -2844,7 +2861,7 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
2844
2861
|
popper: createPopper(trigger, el),
|
|
2845
2862
|
config: getConfig(el, this.settings),
|
|
2846
2863
|
get isTooltip() {
|
|
2847
|
-
return
|
|
2864
|
+
return !!el.closest(root.settings.selectorTooltip) || el.getAttribute("role") == "tooltip";
|
|
2848
2865
|
},
|
|
2849
2866
|
open() {
|
|
2850
2867
|
return open.call(root, this);
|
|
@@ -2856,7 +2873,10 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
2856
2873
|
return deregister.call(root, this);
|
|
2857
2874
|
}
|
|
2858
2875
|
};
|
|
2859
|
-
if (entry.
|
|
2876
|
+
if (entry.isTooltip) {
|
|
2877
|
+
entry.el.setAttribute("role", "tooltip");
|
|
2878
|
+
}
|
|
2879
|
+
if (!entry.isTooltip) {
|
|
2860
2880
|
entry.trigger.setAttribute("aria-expanded", "false");
|
|
2861
2881
|
}
|
|
2862
2882
|
registerEventListeners.call(this, entry);
|
|
@@ -2864,6 +2884,8 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
2864
2884
|
if (entry.el.classList.contains(this.settings.stateActive)) {
|
|
2865
2885
|
await entry.open();
|
|
2866
2886
|
handleDocumentClick.call(this, entry);
|
|
2887
|
+
} else {
|
|
2888
|
+
entry.el.inert = true;
|
|
2867
2889
|
}
|
|
2868
2890
|
entry.popper.setOptions({
|
|
2869
2891
|
placement: entry.config["placement"]
|
|
@@ -2872,7 +2894,7 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
2872
2894
|
}
|
|
2873
2895
|
function registerEventListeners(entry) {
|
|
2874
2896
|
if (!entry.__eventListeners) {
|
|
2875
|
-
const eventType = entry.config["event"];
|
|
2897
|
+
const eventType = entry.isTooltip ? "hover" : entry.config["event"];
|
|
2876
2898
|
if (eventType === "hover") {
|
|
2877
2899
|
entry.__eventListeners = [{
|
|
2878
2900
|
el: ["trigger"],
|