vrembem 4.0.0-next.23 → 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 +52 -34
- package/dev/index.js.map +1 -1
- package/dev/index.umd.cjs +52 -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
|
}
|
|
@@ -1335,7 +1332,7 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
1335
1332
|
if (popover && popover.state === "opened") {
|
|
1336
1333
|
popover.el.inert = true;
|
|
1337
1334
|
popover.el.classList.remove(this.settings.stateActive);
|
|
1338
|
-
if (popover.
|
|
1335
|
+
if (!popover.isTooltip) {
|
|
1339
1336
|
popover.trigger.setAttribute("aria-expanded", "false");
|
|
1340
1337
|
}
|
|
1341
1338
|
popover.popper.setOptions({
|
|
@@ -1364,10 +1361,11 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
1364
1361
|
function closeCheck(popover) {
|
|
1365
1362
|
if (popover.state != "opened") return;
|
|
1366
1363
|
setTimeout(() => {
|
|
1367
|
-
const isHovered = popover.el.
|
|
1368
|
-
|
|
1364
|
+
const isHovered = popover.el.matches(":hover") === popover.el || popover.trigger.matches(":hover") === popover.trigger;
|
|
1365
|
+
let isFocused = document.activeElement.closest(
|
|
1369
1366
|
`#${popover.id}, [aria-controls="${popover.id}"], [aria-describedby="${popover.id}"]`
|
|
1370
1367
|
);
|
|
1368
|
+
isFocused = isFocused ? isFocused.matches(":focus-visible") : false;
|
|
1371
1369
|
if (!isHovered && !isFocused) {
|
|
1372
1370
|
popover.close();
|
|
1373
1371
|
}
|
|
@@ -1375,6 +1373,16 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
1375
1373
|
}, 1);
|
|
1376
1374
|
}
|
|
1377
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
|
+
}
|
|
1378
1386
|
if (popover.state === "opened") {
|
|
1379
1387
|
popover.close();
|
|
1380
1388
|
} else {
|
|
@@ -1383,7 +1391,14 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
1383
1391
|
handleDocumentClick.call(this, popover);
|
|
1384
1392
|
}
|
|
1385
1393
|
}
|
|
1386
|
-
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
|
+
}
|
|
1387
1402
|
if (popover.toggleDelayId) {
|
|
1388
1403
|
clearTimeout(popover.toggleDelayId);
|
|
1389
1404
|
}
|
|
@@ -2819,7 +2834,7 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
2819
2834
|
const popover = getPopover.call(this, query);
|
|
2820
2835
|
popover.el.inert = false;
|
|
2821
2836
|
popover.el.classList.add(this.settings.stateActive);
|
|
2822
|
-
if (popover.
|
|
2837
|
+
if (!popover.isTooltip) {
|
|
2823
2838
|
popover.trigger.setAttribute("aria-expanded", "true");
|
|
2824
2839
|
}
|
|
2825
2840
|
popover.config = getConfig(popover.el, this.settings);
|
|
@@ -2846,7 +2861,7 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
2846
2861
|
popper: createPopper(trigger, el),
|
|
2847
2862
|
config: getConfig(el, this.settings),
|
|
2848
2863
|
get isTooltip() {
|
|
2849
|
-
return
|
|
2864
|
+
return !!el.closest(root.settings.selectorTooltip) || el.getAttribute("role") == "tooltip";
|
|
2850
2865
|
},
|
|
2851
2866
|
open() {
|
|
2852
2867
|
return open.call(root, this);
|
|
@@ -2858,7 +2873,10 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
2858
2873
|
return deregister.call(root, this);
|
|
2859
2874
|
}
|
|
2860
2875
|
};
|
|
2861
|
-
if (entry.
|
|
2876
|
+
if (entry.isTooltip) {
|
|
2877
|
+
entry.el.setAttribute("role", "tooltip");
|
|
2878
|
+
}
|
|
2879
|
+
if (!entry.isTooltip) {
|
|
2862
2880
|
entry.trigger.setAttribute("aria-expanded", "false");
|
|
2863
2881
|
}
|
|
2864
2882
|
registerEventListeners.call(this, entry);
|
|
@@ -2876,7 +2894,7 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
2876
2894
|
}
|
|
2877
2895
|
function registerEventListeners(entry) {
|
|
2878
2896
|
if (!entry.__eventListeners) {
|
|
2879
|
-
const eventType = entry.config["event"];
|
|
2897
|
+
const eventType = entry.isTooltip ? "hover" : entry.config["event"];
|
|
2880
2898
|
if (eventType === "hover") {
|
|
2881
2899
|
entry.__eventListeners = [{
|
|
2882
2900
|
el: ["trigger"],
|