coveragebook_components 0.8.1 → 0.8.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/build/coco/app.css +427 -303
- data/app/assets/build/coco/app.js +469 -230
- data/app/assets/build/coco/book.js +394 -175
- data/app/assets/build/coco/icons/armchair.svg +1 -1
- data/app/assets/build/coco/icons/folder-archive.svg +1 -1
- data/app/assets/build/coco/icons/folder-check.svg +1 -1
- data/app/assets/build/coco/icons/folder-clock.svg +1 -1
- data/app/assets/build/coco/icons/folder-closed.svg +1 -1
- data/app/assets/build/coco/icons/folder-cog.svg +1 -1
- data/app/assets/build/coco/icons/folder-down.svg +1 -1
- data/app/assets/build/coco/icons/folder-edit.svg +1 -1
- data/app/assets/build/coco/icons/folder-git.svg +1 -1
- data/app/assets/build/coco/icons/folder-heart.svg +1 -1
- data/app/assets/build/coco/icons/folder-input.svg +1 -1
- data/app/assets/build/coco/icons/folder-key.svg +1 -1
- data/app/assets/build/coco/icons/folder-lock.svg +1 -1
- data/app/assets/build/coco/icons/folder-minus.svg +1 -1
- data/app/assets/build/coco/icons/folder-open.svg +1 -1
- data/app/assets/build/coco/icons/folder-plus.svg +1 -1
- data/app/assets/build/coco/icons/folder-search-2.svg +1 -1
- data/app/assets/build/coco/icons/folder-search.svg +1 -1
- data/app/assets/build/coco/icons/folder-tree.svg +1 -1
- data/app/assets/build/coco/icons/folder-up.svg +1 -1
- data/app/assets/build/coco/icons/folder-x.svg +1 -1
- data/app/assets/build/coco/icons/folder.svg +1 -1
- data/app/assets/build/coco/icons/folders.svg +1 -1
- data/app/assets/build/coco/icons/git-commit-vertical.svg +1 -0
- data/app/assets/build/coco/icons/git-compare-arrows.svg +1 -0
- data/app/assets/build/coco/icons/git-fork.svg +1 -1
- data/app/assets/build/coco/icons/git-graph.svg +1 -0
- data/app/assets/build/coco/icons/git-pull-request-arrow.svg +1 -0
- data/app/assets/build/coco/icons/git-pull-request-closed.svg +1 -1
- data/app/assets/build/coco/icons/git-pull-request-create-arrow.svg +1 -0
- data/app/assets/build/coco/icons/git-pull-request-create.svg +1 -0
- data/app/assets/build/coco/icons/power-circle.svg +1 -0
- data/app/assets/build/coco/icons/power-square.svg +1 -0
- data/app/assets/build/coco/icons/power.svg +1 -1
- data/app/assets/js/app/setup.js +4 -3
- data/app/assets/js/helpers/location.js +4 -2
- data/app/components/coco/app/blocks/sidebar_nav/item/item.css +121 -0
- data/app/components/coco/app/blocks/sidebar_nav/item/item.html.erb +9 -0
- data/app/components/coco/app/blocks/{sidebar_nav_item/sidebar_nav_item.js → sidebar_nav/item/item.js} +12 -2
- data/app/components/coco/app/blocks/sidebar_nav/item/item.rb +50 -0
- data/app/components/coco/app/blocks/sidebar_nav/menu/menu.css +138 -0
- data/app/components/coco/app/blocks/sidebar_nav/menu/menu.html.erb +24 -0
- data/app/components/coco/app/blocks/sidebar_nav/menu/menu.js +13 -0
- data/app/components/coco/app/blocks/sidebar_nav/menu/menu.rb +48 -0
- data/app/components/coco/app/blocks/sidebar_nav/navbar/navbar.css +75 -0
- data/app/components/coco/app/blocks/sidebar_nav/navbar/navbar.html.erb +29 -0
- data/app/components/coco/app/blocks/sidebar_nav/navbar/navbar.rb +50 -0
- data/app/components/coco/base/icon/icon.rb +1 -0
- data/app/components/coco/base/modal/modal.html.erb +1 -0
- data/app/components/coco/base/modal/modal.js +5 -0
- data/app/components/coco/component.rb +2 -2
- data/app/helpers/coco/app_helper.rb +5 -1
- data/app/helpers/coco/book_helper.rb +4 -4
- data/app/helpers/coco/component_helper.rb +2 -2
- data/app/helpers/coco/integration_helper.rb +4 -4
- data/config/icons.json +9 -1
- data/config/tokens.cjs +6 -0
- data/lib/coco/options/group.rb +9 -9
- data/lib/coco/test_helpers.rb +2 -2
- data/lib/coco.rb +1 -1
- metadata +23 -11
- data/app/components/coco/app/blocks/sidebar_nav/sidebar_nav.css +0 -110
- data/app/components/coco/app/blocks/sidebar_nav/sidebar_nav.html.erb +0 -42
- data/app/components/coco/app/blocks/sidebar_nav/sidebar_nav.rb +0 -28
- data/app/components/coco/app/blocks/sidebar_nav_item/sidebar_nav_item.css +0 -153
- data/app/components/coco/app/blocks/sidebar_nav_item/sidebar_nav_item.html.erb +0 -45
- data/app/components/coco/app/blocks/sidebar_nav_item/sidebar_nav_item.rb +0 -108
- /data/app/assets/build/coco/icons/{git-commit.svg → git-commit-horizontal.svg} +0 -0
- /data/app/components/coco/app/blocks/sidebar_nav/{sidebar_nav.js → navbar/navbar.js} +0 -0
@@ -6154,6 +6154,12 @@
|
|
6154
6154
|
xl: "1200px",
|
6155
6155
|
"2xl": "1400px",
|
6156
6156
|
max: "1800px",
|
6157
|
+
"max-sm": { max: "576px" },
|
6158
|
+
"max-md": { max: "768px" },
|
6159
|
+
"max-lg": { max: "992px" },
|
6160
|
+
"max-xl": { max: "1200px" },
|
6161
|
+
"max-2xl": { max: "1400px" },
|
6162
|
+
"max-max": { max: "1800px" },
|
6157
6163
|
letterbox: { raw: "(max-height: 760px) and (min-width: 576px)" },
|
6158
6164
|
print: { raw: "print" }
|
6159
6165
|
// Note: PDFs are rendered at a viewport width of 1280px
|
@@ -14038,7 +14044,7 @@
|
|
14038
14044
|
var package_default = {
|
14039
14045
|
name: "coveragebook-components",
|
14040
14046
|
type: "module",
|
14041
|
-
version: "0.8.
|
14047
|
+
version: "0.8.3",
|
14042
14048
|
main: "index.js",
|
14043
14049
|
repository: "git@github.com:coveragebook/coco.git",
|
14044
14050
|
author: "Mark Perkins <mark@coveragebook.com>",
|
@@ -14047,38 +14053,38 @@
|
|
14047
14053
|
"defaults"
|
14048
14054
|
],
|
14049
14055
|
dependencies: {
|
14050
|
-
"@alpinejs/collapse": "^3.
|
14051
|
-
"@alpinejs/focus": "^3.
|
14052
|
-
"@alpinejs/intersect": "^3.
|
14053
|
-
"@alpinejs/mask": "^3.
|
14056
|
+
"@alpinejs/collapse": "^3.13.2",
|
14057
|
+
"@alpinejs/focus": "^3.13.2",
|
14058
|
+
"@alpinejs/intersect": "^3.13.2",
|
14059
|
+
"@alpinejs/mask": "^3.13.2",
|
14054
14060
|
"@alpinejs/morph": "^3.11.1",
|
14055
14061
|
"@jaames/iro": "^5.5.2",
|
14056
14062
|
"@tailwindcss/container-queries": "^0.1.0",
|
14057
14063
|
"@tailwindcss/forms": "^0.5.3",
|
14058
14064
|
alpinejs: "^3.11.1",
|
14059
14065
|
"container-query-polyfill": "^1.0.2",
|
14060
|
-
del: "^7.
|
14066
|
+
del: "^7.1.0",
|
14061
14067
|
html2canvas: "^1.4.1",
|
14062
14068
|
"js-cookie": "^3.0.5",
|
14063
14069
|
lodash: "^4.17.21",
|
14064
|
-
"lucide-static": "^0.
|
14070
|
+
"lucide-static": "^0.290.0",
|
14065
14071
|
tailwindcss: "^3.3.0",
|
14066
14072
|
"tippy.js": "^6.3.7"
|
14067
14073
|
},
|
14068
14074
|
devDependencies: {
|
14069
|
-
"@percy/cli": "^1.
|
14075
|
+
"@percy/cli": "^1.27.3",
|
14070
14076
|
"alias-hq": "^6.1.0",
|
14071
14077
|
"alpinejs-tash": "^1.0.9",
|
14072
|
-
autoprefixer: "^10.4.
|
14078
|
+
autoprefixer: "^10.4.16",
|
14073
14079
|
esbuild: "^0.17.10",
|
14074
14080
|
"esbuild-plugin-copy": "^2.0.2",
|
14075
|
-
"fast-glob": "^3.
|
14081
|
+
"fast-glob": "^3.3.1",
|
14076
14082
|
"fast-sort": "^3.2.1",
|
14077
14083
|
husky: "^8.0.3",
|
14078
14084
|
jest: "^29.4.3",
|
14079
14085
|
"jest-environment-jsdom": "^29.4.3",
|
14080
14086
|
"lint-staged": "^13.1.2",
|
14081
|
-
postcss: "^8.4.
|
14087
|
+
postcss: "^8.4.31",
|
14082
14088
|
"postcss-cli": "^10.1.0",
|
14083
14089
|
"postcss-value-parser": "^4.2.0",
|
14084
14090
|
prettier: "^2.8.4",
|
@@ -19039,7 +19045,7 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
|
|
19039
19045
|
let evaluate2 = evaluateLater2(expression);
|
19040
19046
|
let options = {
|
19041
19047
|
rootMargin: getRootMargin(modifiers),
|
19042
|
-
threshold:
|
19048
|
+
threshold: getThreshold(modifiers)
|
19043
19049
|
};
|
19044
19050
|
let observer2 = new IntersectionObserver((entries) => {
|
19045
19051
|
entries.forEach((entry) => {
|
@@ -19055,7 +19061,7 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
|
|
19055
19061
|
});
|
19056
19062
|
});
|
19057
19063
|
}
|
19058
|
-
function
|
19064
|
+
function getThreshold(modifiers) {
|
19059
19065
|
if (modifiers.includes("full"))
|
19060
19066
|
return 0.99;
|
19061
19067
|
if (modifiers.includes("half"))
|
@@ -19103,8 +19109,9 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
|
|
19103
19109
|
evaluator((value2) => {
|
19104
19110
|
result = typeof value2 === "function" ? value2(input) : value2;
|
19105
19111
|
}, { scope: {
|
19106
|
-
|
19107
|
-
$
|
19112
|
+
// These are "magics" we'll make available to the x-mask:function:
|
19113
|
+
"$input": input,
|
19114
|
+
"$money": formatMoney.bind({ el })
|
19108
19115
|
} });
|
19109
19116
|
});
|
19110
19117
|
return result;
|
@@ -19152,7 +19159,13 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
|
|
19152
19159
|
let unformattedValue = el.value;
|
19153
19160
|
callback();
|
19154
19161
|
let beforeLeftOfCursorBeforeFormatting = unformattedValue.slice(0, cursorPosition);
|
19155
|
-
let newPosition = buildUp(
|
19162
|
+
let newPosition = buildUp(
|
19163
|
+
template,
|
19164
|
+
stripDown(
|
19165
|
+
template,
|
19166
|
+
beforeLeftOfCursorBeforeFormatting
|
19167
|
+
)
|
19168
|
+
).length;
|
19156
19169
|
el.setSelectionRange(newPosition, newPosition);
|
19157
19170
|
}
|
19158
19171
|
function stripDown(template, input) {
|
@@ -19160,7 +19173,7 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
|
|
19160
19173
|
let output = "";
|
19161
19174
|
let regexes = {
|
19162
19175
|
"9": /[0-9]/,
|
19163
|
-
a: /[a-zA-Z]/,
|
19176
|
+
"a": /[a-zA-Z]/,
|
19164
19177
|
"*": /[a-zA-Z0-9]/
|
19165
19178
|
};
|
19166
19179
|
let wildcardTemplate = "";
|
@@ -19210,7 +19223,9 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
|
|
19210
19223
|
return "-";
|
19211
19224
|
if (/^\D+$/.test(input))
|
19212
19225
|
return "9";
|
19213
|
-
|
19226
|
+
if (thousands === null || thousands === void 0) {
|
19227
|
+
thousands = delimiter === "," ? "." : ",";
|
19228
|
+
}
|
19214
19229
|
let addThousands = (input2, thousands2) => {
|
19215
19230
|
let output = "";
|
19216
19231
|
let counter = 0;
|
@@ -19245,10 +19260,16 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
|
|
19245
19260
|
var module_default5 = src_default5;
|
19246
19261
|
|
19247
19262
|
// ../../../node_modules/@alpinejs/focus/dist/module.esm.js
|
19248
|
-
var candidateSelectors = ["input", "select", "textarea", "a[href]", "button", "[tabindex]", "audio[controls]", "video[controls]", '[contenteditable]:not([contenteditable="false"])', "details>summary:first-of-type", "details"];
|
19263
|
+
var candidateSelectors = ["input", "select", "textarea", "a[href]", "button", "[tabindex]:not(slot)", "audio[controls]", "video[controls]", '[contenteditable]:not([contenteditable="false"])', "details>summary:first-of-type", "details"];
|
19249
19264
|
var candidateSelector = /* @__PURE__ */ candidateSelectors.join(",");
|
19250
|
-
var
|
19265
|
+
var NoElement = typeof Element === "undefined";
|
19266
|
+
var matches = NoElement ? function() {
|
19251
19267
|
} : Element.prototype.matches || Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;
|
19268
|
+
var getRootNode = !NoElement && Element.prototype.getRootNode ? function(element) {
|
19269
|
+
return element.getRootNode();
|
19270
|
+
} : function(element) {
|
19271
|
+
return element.ownerDocument;
|
19272
|
+
};
|
19252
19273
|
var getCandidates = function getCandidates2(el, includeContainer, filter) {
|
19253
19274
|
var candidates = Array.prototype.slice.apply(el.querySelectorAll(candidateSelector));
|
19254
19275
|
if (includeContainer && matches.call(el, candidateSelector)) {
|
@@ -19257,19 +19278,53 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
|
|
19257
19278
|
candidates = candidates.filter(filter);
|
19258
19279
|
return candidates;
|
19259
19280
|
};
|
19260
|
-
var
|
19261
|
-
|
19262
|
-
|
19263
|
-
|
19264
|
-
|
19265
|
-
|
19266
|
-
|
19267
|
-
|
19268
|
-
|
19269
|
-
|
19281
|
+
var getCandidatesIteratively = function getCandidatesIteratively2(elements, includeContainer, options) {
|
19282
|
+
var candidates = [];
|
19283
|
+
var elementsToCheck = Array.from(elements);
|
19284
|
+
while (elementsToCheck.length) {
|
19285
|
+
var element = elementsToCheck.shift();
|
19286
|
+
if (element.tagName === "SLOT") {
|
19287
|
+
var assigned = element.assignedElements();
|
19288
|
+
var content2 = assigned.length ? assigned : element.children;
|
19289
|
+
var nestedCandidates = getCandidatesIteratively2(content2, true, options);
|
19290
|
+
if (options.flatten) {
|
19291
|
+
candidates.push.apply(candidates, nestedCandidates);
|
19292
|
+
} else {
|
19293
|
+
candidates.push({
|
19294
|
+
scope: element,
|
19295
|
+
candidates: nestedCandidates
|
19296
|
+
});
|
19297
|
+
}
|
19298
|
+
} else {
|
19299
|
+
var validCandidate = matches.call(element, candidateSelector);
|
19300
|
+
if (validCandidate && options.filter(element) && (includeContainer || !elements.includes(element))) {
|
19301
|
+
candidates.push(element);
|
19302
|
+
}
|
19303
|
+
var shadowRoot = element.shadowRoot || // check for an undisclosed shadow
|
19304
|
+
typeof options.getShadowRoot === "function" && options.getShadowRoot(element);
|
19305
|
+
var validShadowRoot = !options.shadowRootFilter || options.shadowRootFilter(element);
|
19306
|
+
if (shadowRoot && validShadowRoot) {
|
19307
|
+
var _nestedCandidates = getCandidatesIteratively2(shadowRoot === true ? element.children : shadowRoot.children, true, options);
|
19308
|
+
if (options.flatten) {
|
19309
|
+
candidates.push.apply(candidates, _nestedCandidates);
|
19310
|
+
} else {
|
19311
|
+
candidates.push({
|
19312
|
+
scope: element,
|
19313
|
+
candidates: _nestedCandidates
|
19314
|
+
});
|
19315
|
+
}
|
19316
|
+
} else {
|
19317
|
+
elementsToCheck.unshift.apply(elementsToCheck, element.children);
|
19318
|
+
}
|
19319
|
+
}
|
19270
19320
|
}
|
19271
|
-
|
19272
|
-
|
19321
|
+
return candidates;
|
19322
|
+
};
|
19323
|
+
var getTabindex = function getTabindex2(node, isScope) {
|
19324
|
+
if (node.tabIndex < 0) {
|
19325
|
+
if ((isScope || /^(AUDIO|VIDEO|DETAILS)$/.test(node.tagName) || node.isContentEditable) && isNaN(parseInt(node.getAttribute("tabindex"), 10))) {
|
19326
|
+
return 0;
|
19327
|
+
}
|
19273
19328
|
}
|
19274
19329
|
return node.tabIndex;
|
19275
19330
|
};
|
@@ -19299,7 +19354,7 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
|
|
19299
19354
|
if (!node.name) {
|
19300
19355
|
return true;
|
19301
19356
|
}
|
19302
|
-
var radioScope = node.form || node
|
19357
|
+
var radioScope = node.form || getRootNode(node);
|
19303
19358
|
var queryRadios = function queryRadios2(name) {
|
19304
19359
|
return radioScope.querySelectorAll('input[type="radio"][name="' + name + '"]');
|
19305
19360
|
};
|
@@ -19323,7 +19378,12 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
|
|
19323
19378
|
var isNonTabbableRadio = function isNonTabbableRadio2(node) {
|
19324
19379
|
return isRadio(node) && !isTabbableRadio(node);
|
19325
19380
|
};
|
19326
|
-
var
|
19381
|
+
var isZeroArea = function isZeroArea2(node) {
|
19382
|
+
var _node$getBoundingClie = node.getBoundingClientRect(), width = _node$getBoundingClie.width, height = _node$getBoundingClie.height;
|
19383
|
+
return width === 0 && height === 0;
|
19384
|
+
};
|
19385
|
+
var isHidden = function isHidden2(node, _ref) {
|
19386
|
+
var displayCheck = _ref.displayCheck, getShadowRoot = _ref.getShadowRoot;
|
19327
19387
|
if (getComputedStyle(node).visibility === "hidden") {
|
19328
19388
|
return true;
|
19329
19389
|
}
|
@@ -19332,31 +19392,43 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
|
|
19332
19392
|
if (matches.call(nodeUnderDetails, "details:not([open]) *")) {
|
19333
19393
|
return true;
|
19334
19394
|
}
|
19395
|
+
var nodeRootHost = getRootNode(node).host;
|
19396
|
+
var nodeIsAttached = (nodeRootHost === null || nodeRootHost === void 0 ? void 0 : nodeRootHost.ownerDocument.contains(nodeRootHost)) || node.ownerDocument.contains(node);
|
19335
19397
|
if (!displayCheck || displayCheck === "full") {
|
19336
|
-
|
19337
|
-
|
19338
|
-
|
19398
|
+
if (typeof getShadowRoot === "function") {
|
19399
|
+
var originalNode = node;
|
19400
|
+
while (node) {
|
19401
|
+
var parentElement = node.parentElement;
|
19402
|
+
var rootNode = getRootNode(node);
|
19403
|
+
if (parentElement && !parentElement.shadowRoot && getShadowRoot(parentElement) === true) {
|
19404
|
+
return isZeroArea(node);
|
19405
|
+
} else if (node.assignedSlot) {
|
19406
|
+
node = node.assignedSlot;
|
19407
|
+
} else if (!parentElement && rootNode !== node.ownerDocument) {
|
19408
|
+
node = rootNode.host;
|
19409
|
+
} else {
|
19410
|
+
node = parentElement;
|
19411
|
+
}
|
19339
19412
|
}
|
19340
|
-
node =
|
19413
|
+
node = originalNode;
|
19414
|
+
}
|
19415
|
+
if (nodeIsAttached) {
|
19416
|
+
return !node.getClientRects().length;
|
19341
19417
|
}
|
19342
19418
|
} else if (displayCheck === "non-zero-area") {
|
19343
|
-
|
19344
|
-
return width === 0 && height === 0;
|
19419
|
+
return isZeroArea(node);
|
19345
19420
|
}
|
19346
19421
|
return false;
|
19347
19422
|
};
|
19348
19423
|
var isDisabledFromFieldset = function isDisabledFromFieldset2(node) {
|
19349
|
-
if (
|
19424
|
+
if (/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(node.tagName)) {
|
19350
19425
|
var parentNode = node.parentElement;
|
19351
19426
|
while (parentNode) {
|
19352
19427
|
if (parentNode.tagName === "FIELDSET" && parentNode.disabled) {
|
19353
19428
|
for (var i3 = 0; i3 < parentNode.children.length; i3++) {
|
19354
19429
|
var child = parentNode.children.item(i3);
|
19355
19430
|
if (child.tagName === "LEGEND") {
|
19356
|
-
|
19357
|
-
return false;
|
19358
|
-
}
|
19359
|
-
return true;
|
19431
|
+
return matches.call(parentNode, "fieldset[disabled] *") ? true : !child.contains(node);
|
19360
19432
|
}
|
19361
19433
|
}
|
19362
19434
|
return true;
|
@@ -19367,44 +19439,89 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
|
|
19367
19439
|
return false;
|
19368
19440
|
};
|
19369
19441
|
var isNodeMatchingSelectorFocusable = function isNodeMatchingSelectorFocusable2(options, node) {
|
19370
|
-
if (node.disabled || isHiddenInput(node) || isHidden(node, options
|
19442
|
+
if (node.disabled || isHiddenInput(node) || isHidden(node, options) || // For a details element with a summary, the summary element gets the focus
|
19443
|
+
isDetailsWithSummary(node) || isDisabledFromFieldset(node)) {
|
19371
19444
|
return false;
|
19372
19445
|
}
|
19373
19446
|
return true;
|
19374
19447
|
};
|
19375
19448
|
var isNodeMatchingSelectorTabbable = function isNodeMatchingSelectorTabbable2(options, node) {
|
19376
|
-
if (
|
19449
|
+
if (isNonTabbableRadio(node) || getTabindex(node) < 0 || !isNodeMatchingSelectorFocusable(options, node)) {
|
19377
19450
|
return false;
|
19378
19451
|
}
|
19379
19452
|
return true;
|
19380
19453
|
};
|
19381
|
-
var
|
19382
|
-
|
19454
|
+
var isValidShadowRootTabbable = function isValidShadowRootTabbable2(shadowHostNode) {
|
19455
|
+
var tabIndex = parseInt(shadowHostNode.getAttribute("tabindex"), 10);
|
19456
|
+
if (isNaN(tabIndex) || tabIndex >= 0) {
|
19457
|
+
return true;
|
19458
|
+
}
|
19459
|
+
return false;
|
19460
|
+
};
|
19461
|
+
var sortByOrder = function sortByOrder2(candidates) {
|
19383
19462
|
var regularTabbables = [];
|
19384
19463
|
var orderedTabbables = [];
|
19385
|
-
|
19386
|
-
|
19387
|
-
var
|
19464
|
+
candidates.forEach(function(item, i3) {
|
19465
|
+
var isScope = !!item.scope;
|
19466
|
+
var element = isScope ? item.scope : item;
|
19467
|
+
var candidateTabindex = getTabindex(element, isScope);
|
19468
|
+
var elements = isScope ? sortByOrder2(item.candidates) : element;
|
19388
19469
|
if (candidateTabindex === 0) {
|
19389
|
-
regularTabbables.push(
|
19470
|
+
isScope ? regularTabbables.push.apply(regularTabbables, elements) : regularTabbables.push(element);
|
19390
19471
|
} else {
|
19391
19472
|
orderedTabbables.push({
|
19392
19473
|
documentOrder: i3,
|
19393
19474
|
tabIndex: candidateTabindex,
|
19394
|
-
|
19475
|
+
item,
|
19476
|
+
isScope,
|
19477
|
+
content: elements
|
19395
19478
|
});
|
19396
19479
|
}
|
19397
19480
|
});
|
19398
|
-
|
19399
|
-
|
19400
|
-
|
19401
|
-
|
19481
|
+
return orderedTabbables.sort(sortOrderedTabbables).reduce(function(acc, sortable) {
|
19482
|
+
sortable.isScope ? acc.push.apply(acc, sortable.content) : acc.push(sortable.content);
|
19483
|
+
return acc;
|
19484
|
+
}, []).concat(regularTabbables);
|
19485
|
+
};
|
19486
|
+
var tabbable = function tabbable2(el, options) {
|
19487
|
+
options = options || {};
|
19488
|
+
var candidates;
|
19489
|
+
if (options.getShadowRoot) {
|
19490
|
+
candidates = getCandidatesIteratively([el], options.includeContainer, {
|
19491
|
+
filter: isNodeMatchingSelectorTabbable.bind(null, options),
|
19492
|
+
flatten: false,
|
19493
|
+
getShadowRoot: options.getShadowRoot,
|
19494
|
+
shadowRootFilter: isValidShadowRootTabbable
|
19495
|
+
});
|
19496
|
+
} else {
|
19497
|
+
candidates = getCandidates(el, options.includeContainer, isNodeMatchingSelectorTabbable.bind(null, options));
|
19498
|
+
}
|
19499
|
+
return sortByOrder(candidates);
|
19402
19500
|
};
|
19403
19501
|
var focusable = function focusable2(el, options) {
|
19404
19502
|
options = options || {};
|
19405
|
-
var candidates
|
19503
|
+
var candidates;
|
19504
|
+
if (options.getShadowRoot) {
|
19505
|
+
candidates = getCandidatesIteratively([el], options.includeContainer, {
|
19506
|
+
filter: isNodeMatchingSelectorFocusable.bind(null, options),
|
19507
|
+
flatten: true,
|
19508
|
+
getShadowRoot: options.getShadowRoot
|
19509
|
+
});
|
19510
|
+
} else {
|
19511
|
+
candidates = getCandidates(el, options.includeContainer, isNodeMatchingSelectorFocusable.bind(null, options));
|
19512
|
+
}
|
19406
19513
|
return candidates;
|
19407
19514
|
};
|
19515
|
+
var isTabbable = function isTabbable2(node, options) {
|
19516
|
+
options = options || {};
|
19517
|
+
if (!node) {
|
19518
|
+
throw new Error("No node provided");
|
19519
|
+
}
|
19520
|
+
if (matches.call(node, candidateSelector) === false) {
|
19521
|
+
return false;
|
19522
|
+
}
|
19523
|
+
return isNodeMatchingSelectorTabbable(options, node);
|
19524
|
+
};
|
19408
19525
|
var focusableCandidateSelector = /* @__PURE__ */ candidateSelectors.concat("iframe").join(",");
|
19409
19526
|
var isFocusable = function isFocusable2(node, options) {
|
19410
19527
|
options = options || {};
|
@@ -19420,29 +19537,20 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
|
|
19420
19537
|
var keys = Object.keys(object);
|
19421
19538
|
if (Object.getOwnPropertySymbols) {
|
19422
19539
|
var symbols = Object.getOwnPropertySymbols(object);
|
19423
|
-
|
19424
|
-
|
19425
|
-
|
19426
|
-
});
|
19427
|
-
}
|
19428
|
-
keys.push.apply(keys, symbols);
|
19540
|
+
enumerableOnly && (symbols = symbols.filter(function(sym) {
|
19541
|
+
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
|
19542
|
+
})), keys.push.apply(keys, symbols);
|
19429
19543
|
}
|
19430
19544
|
return keys;
|
19431
19545
|
}
|
19432
19546
|
function _objectSpread2(target) {
|
19433
19547
|
for (var i3 = 1; i3 < arguments.length; i3++) {
|
19434
|
-
var source = arguments[i3]
|
19435
|
-
|
19436
|
-
|
19437
|
-
|
19438
|
-
|
19439
|
-
}
|
19440
|
-
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
|
19441
|
-
} else {
|
19442
|
-
ownKeys2(Object(source)).forEach(function(key) {
|
19443
|
-
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
|
19444
|
-
});
|
19445
|
-
}
|
19548
|
+
var source = null != arguments[i3] ? arguments[i3] : {};
|
19549
|
+
i3 % 2 ? ownKeys2(Object(source), true).forEach(function(key) {
|
19550
|
+
_defineProperty(target, key, source[key]);
|
19551
|
+
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys2(Object(source)).forEach(function(key) {
|
19552
|
+
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
|
19553
|
+
});
|
19446
19554
|
}
|
19447
19555
|
return target;
|
19448
19556
|
}
|
@@ -19517,64 +19625,103 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
|
|
19517
19625
|
}
|
19518
19626
|
return typeof value === "function" ? value.apply(void 0, params) : value;
|
19519
19627
|
};
|
19628
|
+
var getActualTarget = function getActualTarget2(event) {
|
19629
|
+
return event.target.shadowRoot && typeof event.composedPath === "function" ? event.composedPath()[0] : event.target;
|
19630
|
+
};
|
19520
19631
|
var createFocusTrap = function createFocusTrap2(elements, userOptions) {
|
19521
|
-
var doc = document;
|
19632
|
+
var doc = (userOptions === null || userOptions === void 0 ? void 0 : userOptions.document) || document;
|
19522
19633
|
var config = _objectSpread2({
|
19523
19634
|
returnFocusOnDeactivate: true,
|
19524
19635
|
escapeDeactivates: true,
|
19525
19636
|
delayInitialFocus: true
|
19526
19637
|
}, userOptions);
|
19527
19638
|
var state = {
|
19639
|
+
// containers given to createFocusTrap()
|
19640
|
+
// @type {Array<HTMLElement>}
|
19528
19641
|
containers: [],
|
19642
|
+
// list of objects identifying tabbable nodes in `containers` in the trap
|
19643
|
+
// NOTE: it's possible that a group has no tabbable nodes if nodes get removed while the trap
|
19644
|
+
// is active, but the trap should never get to a state where there isn't at least one group
|
19645
|
+
// with at least one tabbable node in it (that would lead to an error condition that would
|
19646
|
+
// result in an error being thrown)
|
19647
|
+
// @type {Array<{
|
19648
|
+
// container: HTMLElement,
|
19649
|
+
// tabbableNodes: Array<HTMLElement>, // empty if none
|
19650
|
+
// focusableNodes: Array<HTMLElement>, // empty if none
|
19651
|
+
// firstTabbableNode: HTMLElement|null,
|
19652
|
+
// lastTabbableNode: HTMLElement|null,
|
19653
|
+
// nextTabbableNode: (node: HTMLElement, forward: boolean) => HTMLElement|undefined
|
19654
|
+
// }>}
|
19655
|
+
containerGroups: [],
|
19656
|
+
// same order/length as `containers` list
|
19657
|
+
// references to objects in `containerGroups`, but only those that actually have
|
19658
|
+
// tabbable nodes in them
|
19659
|
+
// NOTE: same order as `containers` and `containerGroups`, but __not necessarily__
|
19660
|
+
// the same length
|
19529
19661
|
tabbableGroups: [],
|
19530
19662
|
nodeFocusedBeforeActivation: null,
|
19531
19663
|
mostRecentlyFocusedNode: null,
|
19532
19664
|
active: false,
|
19533
19665
|
paused: false,
|
19666
|
+
// timer ID for when delayInitialFocus is true and initial focus in this trap
|
19667
|
+
// has been delayed during activation
|
19534
19668
|
delayInitialFocusTimer: void 0
|
19535
19669
|
};
|
19536
19670
|
var trap;
|
19537
19671
|
var getOption = function getOption2(configOverrideOptions, optionName, configOptionName) {
|
19538
19672
|
return configOverrideOptions && configOverrideOptions[optionName] !== void 0 ? configOverrideOptions[optionName] : config[configOptionName || optionName];
|
19539
19673
|
};
|
19540
|
-
var
|
19541
|
-
return state.
|
19542
|
-
|
19674
|
+
var findContainerIndex = function findContainerIndex2(element) {
|
19675
|
+
return state.containerGroups.findIndex(function(_ref) {
|
19676
|
+
var container = _ref.container, tabbableNodes = _ref.tabbableNodes;
|
19677
|
+
return container.contains(element) || // fall back to explicit tabbable search which will take into consideration any
|
19678
|
+
// web components if the `tabbableOptions.getShadowRoot` option was used for
|
19679
|
+
// the trap, enabling shadow DOM support in tabbable (`Node.contains()` doesn't
|
19680
|
+
// look inside web components even if open)
|
19681
|
+
tabbableNodes.find(function(node) {
|
19682
|
+
return node === element;
|
19683
|
+
});
|
19543
19684
|
});
|
19544
19685
|
};
|
19545
19686
|
var getNodeForOption = function getNodeForOption2(optionName) {
|
19546
19687
|
var optionValue = config[optionName];
|
19688
|
+
if (typeof optionValue === "function") {
|
19689
|
+
for (var _len2 = arguments.length, params = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
|
19690
|
+
params[_key2 - 1] = arguments[_key2];
|
19691
|
+
}
|
19692
|
+
optionValue = optionValue.apply(void 0, params);
|
19693
|
+
}
|
19694
|
+
if (optionValue === true) {
|
19695
|
+
optionValue = void 0;
|
19696
|
+
}
|
19547
19697
|
if (!optionValue) {
|
19548
|
-
|
19698
|
+
if (optionValue === void 0 || optionValue === false) {
|
19699
|
+
return optionValue;
|
19700
|
+
}
|
19701
|
+
throw new Error("`".concat(optionName, "` was specified but was not a node, or did not return a node"));
|
19549
19702
|
}
|
19550
19703
|
var node = optionValue;
|
19551
19704
|
if (typeof optionValue === "string") {
|
19552
19705
|
node = doc.querySelector(optionValue);
|
19553
19706
|
if (!node) {
|
19554
|
-
throw new Error("`".concat(optionName, "` refers to no known node"));
|
19555
|
-
}
|
19556
|
-
}
|
19557
|
-
if (typeof optionValue === "function") {
|
19558
|
-
node = optionValue();
|
19559
|
-
if (!node) {
|
19560
|
-
throw new Error("`".concat(optionName, "` did not return a node"));
|
19707
|
+
throw new Error("`".concat(optionName, "` as selector refers to no known node"));
|
19561
19708
|
}
|
19562
19709
|
}
|
19563
19710
|
return node;
|
19564
19711
|
};
|
19565
19712
|
var getInitialFocusNode = function getInitialFocusNode2() {
|
19566
|
-
var node;
|
19567
|
-
if (
|
19713
|
+
var node = getNodeForOption("initialFocus");
|
19714
|
+
if (node === false) {
|
19568
19715
|
return false;
|
19569
19716
|
}
|
19570
|
-
if (
|
19571
|
-
|
19572
|
-
|
19573
|
-
|
19574
|
-
|
19575
|
-
|
19576
|
-
|
19577
|
-
|
19717
|
+
if (node === void 0) {
|
19718
|
+
if (findContainerIndex(doc.activeElement) >= 0) {
|
19719
|
+
node = doc.activeElement;
|
19720
|
+
} else {
|
19721
|
+
var firstTabbableGroup = state.tabbableGroups[0];
|
19722
|
+
var firstTabbableNode = firstTabbableGroup && firstTabbableGroup.firstTabbableNode;
|
19723
|
+
node = firstTabbableNode || getNodeForOption("fallbackFocus");
|
19724
|
+
}
|
19578
19725
|
}
|
19579
19726
|
if (!node) {
|
19580
19727
|
throw new Error("Your focus-trap needs to have at least one focusable element");
|
@@ -19582,18 +19729,44 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
|
|
19582
19729
|
return node;
|
19583
19730
|
};
|
19584
19731
|
var updateTabbableNodes = function updateTabbableNodes2() {
|
19585
|
-
state.
|
19586
|
-
var tabbableNodes = tabbable(container);
|
19587
|
-
|
19588
|
-
|
19589
|
-
|
19590
|
-
|
19591
|
-
|
19592
|
-
|
19593
|
-
|
19594
|
-
|
19595
|
-
|
19596
|
-
|
19732
|
+
state.containerGroups = state.containers.map(function(container) {
|
19733
|
+
var tabbableNodes = tabbable(container, config.tabbableOptions);
|
19734
|
+
var focusableNodes = focusable(container, config.tabbableOptions);
|
19735
|
+
return {
|
19736
|
+
container,
|
19737
|
+
tabbableNodes,
|
19738
|
+
focusableNodes,
|
19739
|
+
firstTabbableNode: tabbableNodes.length > 0 ? tabbableNodes[0] : null,
|
19740
|
+
lastTabbableNode: tabbableNodes.length > 0 ? tabbableNodes[tabbableNodes.length - 1] : null,
|
19741
|
+
/**
|
19742
|
+
* Finds the __tabbable__ node that follows the given node in the specified direction,
|
19743
|
+
* in this container, if any.
|
19744
|
+
* @param {HTMLElement} node
|
19745
|
+
* @param {boolean} [forward] True if going in forward tab order; false if going
|
19746
|
+
* in reverse.
|
19747
|
+
* @returns {HTMLElement|undefined} The next tabbable node, if any.
|
19748
|
+
*/
|
19749
|
+
nextTabbableNode: function nextTabbableNode(node) {
|
19750
|
+
var forward = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true;
|
19751
|
+
var nodeIdx = focusableNodes.findIndex(function(n3) {
|
19752
|
+
return n3 === node;
|
19753
|
+
});
|
19754
|
+
if (nodeIdx < 0) {
|
19755
|
+
return void 0;
|
19756
|
+
}
|
19757
|
+
if (forward) {
|
19758
|
+
return focusableNodes.slice(nodeIdx + 1).find(function(n3) {
|
19759
|
+
return isTabbable(n3, config.tabbableOptions);
|
19760
|
+
});
|
19761
|
+
}
|
19762
|
+
return focusableNodes.slice(0, nodeIdx).reverse().find(function(n3) {
|
19763
|
+
return isTabbable(n3, config.tabbableOptions);
|
19764
|
+
});
|
19765
|
+
}
|
19766
|
+
};
|
19767
|
+
});
|
19768
|
+
state.tabbableGroups = state.containerGroups.filter(function(group) {
|
19769
|
+
return group.tabbableNodes.length > 0;
|
19597
19770
|
});
|
19598
19771
|
if (state.tabbableGroups.length <= 0 && !getNodeForOption("fallbackFocus")) {
|
19599
19772
|
throw new Error("Your focus-trap must have at least one container with at least one tabbable node in it at all times");
|
@@ -19619,16 +19792,28 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
|
|
19619
19792
|
}
|
19620
19793
|
};
|
19621
19794
|
var getReturnFocusNode = function getReturnFocusNode2(previousActiveElement) {
|
19622
|
-
var node = getNodeForOption("setReturnFocus");
|
19623
|
-
return node ? node : previousActiveElement;
|
19795
|
+
var node = getNodeForOption("setReturnFocus", previousActiveElement);
|
19796
|
+
return node ? node : node === false ? false : previousActiveElement;
|
19624
19797
|
};
|
19625
19798
|
var checkPointerDown = function checkPointerDown2(e3) {
|
19626
|
-
|
19799
|
+
var target = getActualTarget(e3);
|
19800
|
+
if (findContainerIndex(target) >= 0) {
|
19627
19801
|
return;
|
19628
19802
|
}
|
19629
19803
|
if (valueOrHandler(config.clickOutsideDeactivates, e3)) {
|
19630
19804
|
trap.deactivate({
|
19631
|
-
|
19805
|
+
// if, on deactivation, we should return focus to the node originally-focused
|
19806
|
+
// when the trap was activated (or the configured `setReturnFocus` node),
|
19807
|
+
// then assume it's also OK to return focus to the outside node that was
|
19808
|
+
// just clicked, causing deactivation, as long as that node is focusable;
|
19809
|
+
// if it isn't focusable, then return focus to the original node focused
|
19810
|
+
// on activation (or the configured `setReturnFocus` node)
|
19811
|
+
// NOTE: by setting `returnFocus: false`, deactivate() will do nothing,
|
19812
|
+
// which will result in the outside click setting focus to the node
|
19813
|
+
// that was clicked, whether it's focusable or not; by setting
|
19814
|
+
// `returnFocus: true`, we'll attempt to re-focus the node originally-focused
|
19815
|
+
// on activation (or the configured `setReturnFocus` node)
|
19816
|
+
returnFocus: config.returnFocusOnDeactivate && !isFocusable(target, config.tabbableOptions)
|
19632
19817
|
});
|
19633
19818
|
return;
|
19634
19819
|
}
|
@@ -19638,10 +19823,11 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
|
|
19638
19823
|
e3.preventDefault();
|
19639
19824
|
};
|
19640
19825
|
var checkFocusIn = function checkFocusIn2(e3) {
|
19641
|
-
var
|
19642
|
-
|
19826
|
+
var target = getActualTarget(e3);
|
19827
|
+
var targetContained = findContainerIndex(target) >= 0;
|
19828
|
+
if (targetContained || target instanceof Document) {
|
19643
19829
|
if (targetContained) {
|
19644
|
-
state.mostRecentlyFocusedNode =
|
19830
|
+
state.mostRecentlyFocusedNode = target;
|
19645
19831
|
}
|
19646
19832
|
} else {
|
19647
19833
|
e3.stopImmediatePropagation();
|
@@ -19649,13 +19835,12 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
|
|
19649
19835
|
}
|
19650
19836
|
};
|
19651
19837
|
var checkTab = function checkTab2(e3) {
|
19838
|
+
var target = getActualTarget(e3);
|
19652
19839
|
updateTabbableNodes();
|
19653
19840
|
var destinationNode = null;
|
19654
19841
|
if (state.tabbableGroups.length > 0) {
|
19655
|
-
var containerIndex =
|
19656
|
-
|
19657
|
-
return container.contains(e3.target);
|
19658
|
-
});
|
19842
|
+
var containerIndex = findContainerIndex(target);
|
19843
|
+
var containerGroup = containerIndex >= 0 ? state.containerGroups[containerIndex] : void 0;
|
19659
19844
|
if (containerIndex < 0) {
|
19660
19845
|
if (e3.shiftKey) {
|
19661
19846
|
destinationNode = state.tabbableGroups[state.tabbableGroups.length - 1].lastTabbableNode;
|
@@ -19665,9 +19850,9 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
|
|
19665
19850
|
} else if (e3.shiftKey) {
|
19666
19851
|
var startOfGroupIndex = findIndex(state.tabbableGroups, function(_ref2) {
|
19667
19852
|
var firstTabbableNode = _ref2.firstTabbableNode;
|
19668
|
-
return
|
19853
|
+
return target === firstTabbableNode;
|
19669
19854
|
});
|
19670
|
-
if (startOfGroupIndex < 0 &&
|
19855
|
+
if (startOfGroupIndex < 0 && (containerGroup.container === target || isFocusable(target, config.tabbableOptions) && !isTabbable(target, config.tabbableOptions) && !containerGroup.nextTabbableNode(target, false))) {
|
19671
19856
|
startOfGroupIndex = containerIndex;
|
19672
19857
|
}
|
19673
19858
|
if (startOfGroupIndex >= 0) {
|
@@ -19678,9 +19863,9 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
|
|
19678
19863
|
} else {
|
19679
19864
|
var lastOfGroupIndex = findIndex(state.tabbableGroups, function(_ref3) {
|
19680
19865
|
var lastTabbableNode = _ref3.lastTabbableNode;
|
19681
|
-
return
|
19866
|
+
return target === lastTabbableNode;
|
19682
19867
|
});
|
19683
|
-
if (lastOfGroupIndex < 0 &&
|
19868
|
+
if (lastOfGroupIndex < 0 && (containerGroup.container === target || isFocusable(target, config.tabbableOptions) && !isTabbable(target, config.tabbableOptions) && !containerGroup.nextTabbableNode(target))) {
|
19684
19869
|
lastOfGroupIndex = containerIndex;
|
19685
19870
|
}
|
19686
19871
|
if (lastOfGroupIndex >= 0) {
|
@@ -19698,7 +19883,7 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
|
|
19698
19883
|
}
|
19699
19884
|
};
|
19700
19885
|
var checkKey = function checkKey2(e3) {
|
19701
|
-
if (isEscapeEvent(e3) && valueOrHandler(config.escapeDeactivates) !== false) {
|
19886
|
+
if (isEscapeEvent(e3) && valueOrHandler(config.escapeDeactivates, e3) !== false) {
|
19702
19887
|
e3.preventDefault();
|
19703
19888
|
trap.deactivate();
|
19704
19889
|
return;
|
@@ -19709,10 +19894,11 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
|
|
19709
19894
|
}
|
19710
19895
|
};
|
19711
19896
|
var checkClick = function checkClick2(e3) {
|
19712
|
-
|
19897
|
+
var target = getActualTarget(e3);
|
19898
|
+
if (findContainerIndex(target) >= 0) {
|
19713
19899
|
return;
|
19714
19900
|
}
|
19715
|
-
if (
|
19901
|
+
if (valueOrHandler(config.clickOutsideDeactivates, e3)) {
|
19716
19902
|
return;
|
19717
19903
|
}
|
19718
19904
|
if (valueOrHandler(config.allowOutsideClick, e3)) {
|
@@ -19760,6 +19946,12 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
|
|
19760
19946
|
return trap;
|
19761
19947
|
};
|
19762
19948
|
trap = {
|
19949
|
+
get active() {
|
19950
|
+
return state.active;
|
19951
|
+
},
|
19952
|
+
get paused() {
|
19953
|
+
return state.paused;
|
19954
|
+
},
|
19763
19955
|
activate: function activate(activateOptions) {
|
19764
19956
|
if (state.active) {
|
19765
19957
|
return this;
|
@@ -19796,19 +19988,24 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
|
|
19796
19988
|
if (!state.active) {
|
19797
19989
|
return this;
|
19798
19990
|
}
|
19991
|
+
var options = _objectSpread2({
|
19992
|
+
onDeactivate: config.onDeactivate,
|
19993
|
+
onPostDeactivate: config.onPostDeactivate,
|
19994
|
+
checkCanReturnFocus: config.checkCanReturnFocus
|
19995
|
+
}, deactivateOptions);
|
19799
19996
|
clearTimeout(state.delayInitialFocusTimer);
|
19800
19997
|
state.delayInitialFocusTimer = void 0;
|
19801
19998
|
removeListeners();
|
19802
19999
|
state.active = false;
|
19803
20000
|
state.paused = false;
|
19804
20001
|
activeFocusTraps.deactivateTrap(trap);
|
19805
|
-
var onDeactivate = getOption(
|
19806
|
-
var onPostDeactivate = getOption(
|
19807
|
-
var checkCanReturnFocus = getOption(
|
20002
|
+
var onDeactivate = getOption(options, "onDeactivate");
|
20003
|
+
var onPostDeactivate = getOption(options, "onPostDeactivate");
|
20004
|
+
var checkCanReturnFocus = getOption(options, "checkCanReturnFocus");
|
20005
|
+
var returnFocus = getOption(options, "returnFocus", "returnFocusOnDeactivate");
|
19808
20006
|
if (onDeactivate) {
|
19809
20007
|
onDeactivate();
|
19810
20008
|
}
|
19811
|
-
var returnFocus = getOption(deactivateOptions, "returnFocus", "returnFocusOnDeactivate");
|
19812
20009
|
var finishDeactivation = function finishDeactivation2() {
|
19813
20010
|
delay(function() {
|
19814
20011
|
if (returnFocus) {
|
@@ -19968,55 +20165,61 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
|
|
19968
20165
|
}
|
19969
20166
|
};
|
19970
20167
|
});
|
19971
|
-
Alpine3.directive("trap", Alpine3.skipDuringClone(
|
19972
|
-
|
19973
|
-
|
19974
|
-
|
19975
|
-
|
19976
|
-
|
19977
|
-
|
19978
|
-
|
19979
|
-
|
19980
|
-
|
19981
|
-
|
19982
|
-
|
19983
|
-
|
19984
|
-
|
19985
|
-
|
19986
|
-
|
19987
|
-
|
19988
|
-
|
19989
|
-
|
19990
|
-
|
19991
|
-
|
19992
|
-
|
19993
|
-
|
19994
|
-
|
19995
|
-
|
19996
|
-
|
19997
|
-
};
|
19998
|
-
effect7(() => evaluator((value) => {
|
19999
|
-
if (oldValue === value)
|
20000
|
-
return;
|
20001
|
-
if (value && !oldValue) {
|
20002
|
-
setTimeout(() => {
|
20003
|
-
if (modifiers.includes("inert"))
|
20004
|
-
undoInert = setInert(el);
|
20005
|
-
if (modifiers.includes("noscroll"))
|
20006
|
-
undoDisableScrolling = disableScrolling();
|
20007
|
-
trap.activate();
|
20168
|
+
Alpine3.directive("trap", Alpine3.skipDuringClone(
|
20169
|
+
(el, { expression, modifiers }, { effect: effect7, evaluateLater: evaluateLater2, cleanup: cleanup2 }) => {
|
20170
|
+
let evaluator = evaluateLater2(expression);
|
20171
|
+
let oldValue = false;
|
20172
|
+
let options = {
|
20173
|
+
escapeDeactivates: false,
|
20174
|
+
allowOutsideClick: true,
|
20175
|
+
fallbackFocus: () => el
|
20176
|
+
};
|
20177
|
+
let autofocusEl = el.querySelector("[autofocus]");
|
20178
|
+
if (autofocusEl)
|
20179
|
+
options.initialFocus = autofocusEl;
|
20180
|
+
let trap = createFocusTrap(el, options);
|
20181
|
+
let undoInert = () => {
|
20182
|
+
};
|
20183
|
+
let undoDisableScrolling = () => {
|
20184
|
+
};
|
20185
|
+
const releaseFocus = () => {
|
20186
|
+
undoInert();
|
20187
|
+
undoInert = () => {
|
20188
|
+
};
|
20189
|
+
undoDisableScrolling();
|
20190
|
+
undoDisableScrolling = () => {
|
20191
|
+
};
|
20192
|
+
trap.deactivate({
|
20193
|
+
returnFocus: !modifiers.includes("noreturn")
|
20008
20194
|
});
|
20009
|
-
}
|
20010
|
-
|
20011
|
-
|
20012
|
-
|
20013
|
-
|
20014
|
-
|
20015
|
-
|
20016
|
-
|
20017
|
-
|
20018
|
-
|
20019
|
-
|
20195
|
+
};
|
20196
|
+
effect7(() => evaluator((value) => {
|
20197
|
+
if (oldValue === value)
|
20198
|
+
return;
|
20199
|
+
if (value && !oldValue) {
|
20200
|
+
setTimeout(() => {
|
20201
|
+
if (modifiers.includes("inert"))
|
20202
|
+
undoInert = setInert(el);
|
20203
|
+
if (modifiers.includes("noscroll"))
|
20204
|
+
undoDisableScrolling = disableScrolling();
|
20205
|
+
trap.activate();
|
20206
|
+
});
|
20207
|
+
}
|
20208
|
+
if (!value && oldValue) {
|
20209
|
+
releaseFocus();
|
20210
|
+
}
|
20211
|
+
oldValue = !!value;
|
20212
|
+
}));
|
20213
|
+
cleanup2(releaseFocus);
|
20214
|
+
},
|
20215
|
+
// When cloning, we only want to add aria-hidden attributes to the
|
20216
|
+
// DOM and not try to actually trap, as trapping can mess with the
|
20217
|
+
// live DOM and isn't just isolated to the cloned DOM.
|
20218
|
+
(el, { expression, modifiers }, { evaluate: evaluate2 }) => {
|
20219
|
+
if (modifiers.includes("inert") && evaluate2(expression))
|
20220
|
+
setInert(el);
|
20221
|
+
}
|
20222
|
+
));
|
20020
20223
|
}
|
20021
20224
|
function setInert(el) {
|
20022
20225
|
let undos = [];
|
@@ -23681,18 +23884,21 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
|
|
23681
23884
|
|
23682
23885
|
// helpers/location.js
|
23683
23886
|
function navigateTo(url, options = {}) {
|
23684
|
-
if (window.Turbo && options.turbo
|
23685
|
-
|
23887
|
+
if (window.Turbo && options.turbo !== false) {
|
23888
|
+
delete options.turbo;
|
23889
|
+
turboOptions = Object.assign({ action: "advance" }, options);
|
23890
|
+
window.Turbo.visit(url, turboOptions);
|
23686
23891
|
} else {
|
23687
23892
|
location.assign(url);
|
23688
23893
|
}
|
23689
23894
|
}
|
23690
23895
|
|
23691
23896
|
// app/setup.js
|
23692
|
-
window.addEventListener("navigate", (event) => {
|
23693
|
-
const
|
23897
|
+
window.addEventListener("app:navigate", (event) => {
|
23898
|
+
const url = event.detail.url;
|
23694
23899
|
if (url) {
|
23695
|
-
|
23900
|
+
delete event.detail.url;
|
23901
|
+
navigateTo(url, event.detail);
|
23696
23902
|
}
|
23697
23903
|
});
|
23698
23904
|
function setAppHeightProperty() {
|
@@ -24020,6 +24226,9 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
|
|
24020
24226
|
if (this.$options.dismissable)
|
24021
24227
|
this.hide();
|
24022
24228
|
},
|
24229
|
+
visit(url) {
|
24230
|
+
navigateTo(url, { frame: this.frame.id });
|
24231
|
+
},
|
24023
24232
|
scrollTo(pos) {
|
24024
24233
|
setTimeout(() => {
|
24025
24234
|
this.$root.scrollTop = pos + this.contentOffsetTop;
|
@@ -24193,42 +24402,15 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
|
|
24193
24402
|
};
|
24194
24403
|
});
|
24195
24404
|
|
24196
|
-
// ../../components/coco/app/blocks/sidebar_nav/
|
24197
|
-
var
|
24198
|
-
__export(
|
24199
|
-
default: () =>
|
24405
|
+
// ../../components/coco/app/blocks/sidebar_nav/item/item.js
|
24406
|
+
var item_exports = {};
|
24407
|
+
__export(item_exports, {
|
24408
|
+
default: () => item_default
|
24200
24409
|
});
|
24201
|
-
var
|
24202
|
-
var mobileMaxWidth = parseInt(import_tokens.default.app.screens.sm, 10);
|
24203
|
-
var sidebar_nav_default = CocoComponent("appSidebarNav", () => {
|
24204
|
-
return {
|
24205
|
-
sizeObserver: null,
|
24206
|
-
mobileLayout: true,
|
24207
|
-
init() {
|
24208
|
-
this.sizeObserver = new ResizeObserver(
|
24209
|
-
Alpine.throttle((entries) => {
|
24210
|
-
this.$nextTick(() => {
|
24211
|
-
const bodyWidth = entries[0].contentRect.width;
|
24212
|
-
this.mobileLayout = bodyWidth < mobileMaxWidth;
|
24213
|
-
});
|
24214
|
-
}, 20)
|
24215
|
-
);
|
24216
|
-
this.sizeObserver.observe(document.documentElement);
|
24217
|
-
},
|
24218
|
-
destroy() {
|
24219
|
-
this.sizeObserver && this.sizeObserver.disconnect();
|
24220
|
-
}
|
24221
|
-
};
|
24222
|
-
});
|
24223
|
-
|
24224
|
-
// ../../components/coco/app/blocks/sidebar_nav_item/sidebar_nav_item.js
|
24225
|
-
var sidebar_nav_item_exports = {};
|
24226
|
-
__export(sidebar_nav_item_exports, {
|
24227
|
-
default: () => sidebar_nav_item_default
|
24228
|
-
});
|
24229
|
-
var sidebar_nav_item_default = CocoComponent("appSidebarNavItem", () => {
|
24410
|
+
var item_default = CocoComponent("appSidebarNavItem", () => {
|
24230
24411
|
return {
|
24231
24412
|
menu: null,
|
24413
|
+
active: false,
|
24232
24414
|
init() {
|
24233
24415
|
if (this.$refs.menu) {
|
24234
24416
|
this.menu = tippy_default(this.$el, {
|
@@ -24239,9 +24421,13 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
|
|
24239
24421
|
trigger: "click",
|
24240
24422
|
interactive: true,
|
24241
24423
|
maxWidth: null,
|
24242
|
-
|
24243
|
-
|
24244
|
-
}
|
24424
|
+
onShow: () => {
|
24425
|
+
this.active = true;
|
24426
|
+
},
|
24427
|
+
onHide: () => {
|
24428
|
+
this.active = false;
|
24429
|
+
},
|
24430
|
+
content: () => this.$refs.menu.innerHTML
|
24245
24431
|
});
|
24246
24432
|
}
|
24247
24433
|
this.$watch("mobileLayout", () => {
|
@@ -24255,12 +24441,59 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
|
|
24255
24441
|
});
|
24256
24442
|
}
|
24257
24443
|
},
|
24444
|
+
root: {
|
24445
|
+
"@click": "if (menu) $event.preventDefault()",
|
24446
|
+
":class": "{active}"
|
24447
|
+
},
|
24258
24448
|
get menuPlacement() {
|
24259
24449
|
return this.mobileLayout ? "top" : "right-start";
|
24260
24450
|
}
|
24261
24451
|
};
|
24262
24452
|
});
|
24263
24453
|
|
24454
|
+
// ../../components/coco/app/blocks/sidebar_nav/menu/menu.js
|
24455
|
+
var menu_exports = {};
|
24456
|
+
__export(menu_exports, {
|
24457
|
+
default: () => menu_default
|
24458
|
+
});
|
24459
|
+
var menu_default = CocoComponent("appSidebarNavMenu", () => {
|
24460
|
+
return {
|
24461
|
+
navigateTo(url) {
|
24462
|
+
if (url !== "") {
|
24463
|
+
navigateTo(url);
|
24464
|
+
}
|
24465
|
+
}
|
24466
|
+
};
|
24467
|
+
});
|
24468
|
+
|
24469
|
+
// ../../components/coco/app/blocks/sidebar_nav/navbar/navbar.js
|
24470
|
+
var navbar_exports = {};
|
24471
|
+
__export(navbar_exports, {
|
24472
|
+
default: () => navbar_default
|
24473
|
+
});
|
24474
|
+
var import_tokens = __toESM(require_tokens(), 1);
|
24475
|
+
var mobileMaxWidth = parseInt(import_tokens.default.app.screens.sm, 10);
|
24476
|
+
var navbar_default = CocoComponent("appSidebarNav", () => {
|
24477
|
+
return {
|
24478
|
+
sizeObserver: null,
|
24479
|
+
mobileLayout: true,
|
24480
|
+
init() {
|
24481
|
+
this.sizeObserver = new ResizeObserver(
|
24482
|
+
Alpine.throttle((entries) => {
|
24483
|
+
this.$nextTick(() => {
|
24484
|
+
const bodyWidth = entries[0].contentRect.width;
|
24485
|
+
this.mobileLayout = bodyWidth < mobileMaxWidth;
|
24486
|
+
});
|
24487
|
+
}, 20)
|
24488
|
+
);
|
24489
|
+
this.sizeObserver.observe(document.documentElement);
|
24490
|
+
},
|
24491
|
+
destroy() {
|
24492
|
+
this.sizeObserver && this.sizeObserver.disconnect();
|
24493
|
+
}
|
24494
|
+
};
|
24495
|
+
});
|
24496
|
+
|
24264
24497
|
// ../../components/coco/app/blocks/slide_editor/slide_editor.js
|
24265
24498
|
var slide_editor_exports = {};
|
24266
24499
|
__export(slide_editor_exports, {
|
@@ -26938,7 +27171,7 @@ ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el);
|
|
26938
27171
|
});
|
26939
27172
|
|
26940
27173
|
// import-glob:/Users/mark/Code/coveragebook/coco/app/assets/js/app|@appComponents/**/*.js
|
26941
|
-
var modules3 = [header_exports, nav_drawer_exports,
|
27174
|
+
var modules3 = [header_exports, nav_drawer_exports, item_exports, menu_exports, navbar_exports, slide_editor_exports, alert_exports, button_group_exports, color_picker_exports, color_picker_button_exports, confirm_panel_exports, image_picker_exports, image_picker_button_exports, layout_picker_button_exports, menu_button_exports, notice_exports, seamless_textarea_exports, snackbar_exports, system_banner_exports, toast_exports, toolbar_exports, application_exports];
|
26942
27175
|
var __default3 = modules3;
|
26943
27176
|
|
26944
27177
|
// app/components.js
|
@@ -26982,13 +27215,19 @@ html2canvas/dist/html2canvas.js:
|
|
26982
27215
|
***************************************************************************** *)
|
26983
27216
|
|
26984
27217
|
@alpinejs/focus/dist/module.esm.js:
|
26985
|
-
(*!
|
26986
|
-
|
26987
|
-
|
26988
|
-
|
26989
|
-
|
26990
|
-
|
26991
|
-
|
27218
|
+
(*! Bundled license information:
|
27219
|
+
|
27220
|
+
tabbable/dist/index.esm.js:
|
27221
|
+
(*!
|
27222
|
+
* tabbable 5.3.3
|
27223
|
+
* @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE
|
27224
|
+
*)
|
27225
|
+
|
27226
|
+
focus-trap/dist/focus-trap.esm.js:
|
27227
|
+
(*!
|
27228
|
+
* focus-trap 6.9.4
|
27229
|
+
* @license MIT, https://github.com/focus-trap/focus-trap/blob/master/LICENSE
|
27230
|
+
*)
|
26992
27231
|
*)
|
26993
27232
|
|
26994
27233
|
@jaames/iro/dist/iro.es.js:
|