@aurodesignsystem/auro-formkit 5.9.4 → 5.10.0
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/CHANGELOG.md +22 -2
- package/components/bibtemplate/dist/auro-bibtemplate.d.ts +10 -0
- package/components/bibtemplate/dist/buttonVersion.d.ts +1 -1
- package/components/bibtemplate/dist/headerVersion.d.ts +1 -1
- package/components/bibtemplate/dist/iconVersion.d.ts +1 -1
- package/components/bibtemplate/dist/index.js +26 -16
- package/components/bibtemplate/dist/registered.js +26 -16
- package/components/checkbox/demo/api.md +7 -0
- package/components/checkbox/demo/api.min.js +17 -14
- package/components/checkbox/demo/index.min.js +17 -14
- package/components/checkbox/dist/auro-checkbox-group.d.ts +4 -3
- package/components/checkbox/dist/auro-checkbox.d.ts +2 -0
- package/components/checkbox/dist/index.js +8 -5
- package/components/checkbox/dist/registered.js +8 -5
- package/components/combobox/demo/api.js +2 -2
- package/components/combobox/demo/api.md +80 -0
- package/components/combobox/demo/api.min.js +552 -356
- package/components/combobox/demo/index.min.js +533 -351
- package/components/combobox/dist/auro-combobox.d.ts +1 -1
- package/components/combobox/dist/index.js +421 -240
- package/components/combobox/dist/registered.js +421 -240
- package/components/counter/demo/api.min.js +434 -258
- package/components/counter/demo/index.min.js +434 -258
- package/components/counter/dist/auro-counter-button.d.ts +11 -2
- package/components/counter/dist/index.js +391 -219
- package/components/counter/dist/registered.js +391 -219
- package/components/datepicker/demo/api.md +2 -2
- package/components/datepicker/demo/api.min.js +576 -399
- package/components/datepicker/demo/index.min.js +576 -399
- package/components/datepicker/dist/auro-datepicker.d.ts +1 -1
- package/components/datepicker/dist/buttonVersion.d.ts +1 -1
- package/components/datepicker/dist/iconVersion.d.ts +1 -1
- package/components/datepicker/dist/index.js +437 -260
- package/components/datepicker/dist/popoverVersion.d.ts +1 -1
- package/components/datepicker/dist/registered.js +437 -260
- package/components/dropdown/demo/api.md +1 -1
- package/components/dropdown/demo/api.min.js +362 -202
- package/components/dropdown/demo/index.min.js +362 -202
- package/components/dropdown/dist/iconVersion.d.ts +1 -1
- package/components/dropdown/dist/index.js +349 -189
- package/components/dropdown/dist/registered.js +349 -189
- package/components/form/demo/api.min.js +13 -11
- package/components/form/demo/index.min.js +13 -11
- package/components/form/dist/auro-form.d.ts +8 -0
- package/components/form/dist/index.js +8 -6
- package/components/form/dist/registered.js +8 -6
- package/components/input/demo/api.md +5 -1
- package/components/input/demo/api.min.js +87 -80
- package/components/input/demo/index.min.js +87 -80
- package/components/input/dist/auro-input.d.ts +23 -0
- package/components/input/dist/base-input.d.ts +2 -18
- package/components/input/dist/buttonVersion.d.ts +1 -1
- package/components/input/dist/iconVersion.d.ts +1 -1
- package/components/input/dist/index.js +42 -35
- package/components/input/dist/registered.js +42 -35
- package/components/menu/demo/api.md +3 -3
- package/components/menu/demo/api.min.js +18 -17
- package/components/menu/demo/index.min.js +18 -17
- package/components/menu/dist/auro-menuoption.d.ts +2 -1
- package/components/menu/dist/index.js +7 -6
- package/components/menu/dist/registered.js +7 -6
- package/components/radio/demo/api.min.js +11 -11
- package/components/radio/demo/index.min.js +11 -11
- package/components/radio/dist/index.js +2 -2
- package/components/radio/dist/registered.js +2 -2
- package/components/select/demo/api.min.js +406 -235
- package/components/select/demo/index.min.js +406 -235
- package/components/select/dist/index.js +377 -207
- package/components/select/dist/registered.js +377 -207
- package/custom-elements.json +18148 -0
- package/package.json +42 -10
|
@@ -131,8 +131,9 @@ function getOppositeAxis(axis) {
|
|
|
131
131
|
function getAxisLength(axis) {
|
|
132
132
|
return axis === 'y' ? 'height' : 'width';
|
|
133
133
|
}
|
|
134
|
+
const yAxisSides = /*#__PURE__*/new Set(['top', 'bottom']);
|
|
134
135
|
function getSideAxis(placement) {
|
|
135
|
-
return
|
|
136
|
+
return yAxisSides.has(getSide(placement)) ? 'y' : 'x';
|
|
136
137
|
}
|
|
137
138
|
function getAlignmentAxis(placement) {
|
|
138
139
|
return getOppositeAxis(getSideAxis(placement));
|
|
@@ -157,19 +158,19 @@ function getExpandedPlacements(placement) {
|
|
|
157
158
|
function getOppositeAlignmentPlacement(placement) {
|
|
158
159
|
return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);
|
|
159
160
|
}
|
|
161
|
+
const lrPlacement = ['left', 'right'];
|
|
162
|
+
const rlPlacement = ['right', 'left'];
|
|
163
|
+
const tbPlacement = ['top', 'bottom'];
|
|
164
|
+
const btPlacement = ['bottom', 'top'];
|
|
160
165
|
function getSideList(side, isStart, rtl) {
|
|
161
|
-
const lr = ['left', 'right'];
|
|
162
|
-
const rl = ['right', 'left'];
|
|
163
|
-
const tb = ['top', 'bottom'];
|
|
164
|
-
const bt = ['bottom', 'top'];
|
|
165
166
|
switch (side) {
|
|
166
167
|
case 'top':
|
|
167
168
|
case 'bottom':
|
|
168
|
-
if (rtl) return isStart ?
|
|
169
|
-
return isStart ?
|
|
169
|
+
if (rtl) return isStart ? rlPlacement : lrPlacement;
|
|
170
|
+
return isStart ? lrPlacement : rlPlacement;
|
|
170
171
|
case 'left':
|
|
171
172
|
case 'right':
|
|
172
|
-
return isStart ?
|
|
173
|
+
return isStart ? tbPlacement : btPlacement;
|
|
173
174
|
default:
|
|
174
175
|
return [];
|
|
175
176
|
}
|
|
@@ -280,6 +281,71 @@ function computeCoordsFromPlacement(_ref, placement, rtl) {
|
|
|
280
281
|
return coords;
|
|
281
282
|
}
|
|
282
283
|
|
|
284
|
+
/**
|
|
285
|
+
* Resolves with an object of overflow side offsets that determine how much the
|
|
286
|
+
* element is overflowing a given clipping boundary on each side.
|
|
287
|
+
* - positive = overflowing the boundary by that number of pixels
|
|
288
|
+
* - negative = how many pixels left before it will overflow
|
|
289
|
+
* - 0 = lies flush with the boundary
|
|
290
|
+
* @see https://floating-ui.com/docs/detectOverflow
|
|
291
|
+
*/
|
|
292
|
+
async function detectOverflow(state, options) {
|
|
293
|
+
var _await$platform$isEle;
|
|
294
|
+
if (options === void 0) {
|
|
295
|
+
options = {};
|
|
296
|
+
}
|
|
297
|
+
const {
|
|
298
|
+
x,
|
|
299
|
+
y,
|
|
300
|
+
platform,
|
|
301
|
+
rects,
|
|
302
|
+
elements,
|
|
303
|
+
strategy
|
|
304
|
+
} = state;
|
|
305
|
+
const {
|
|
306
|
+
boundary = 'clippingAncestors',
|
|
307
|
+
rootBoundary = 'viewport',
|
|
308
|
+
elementContext = 'floating',
|
|
309
|
+
altBoundary = false,
|
|
310
|
+
padding = 0
|
|
311
|
+
} = evaluate(options, state);
|
|
312
|
+
const paddingObject = getPaddingObject(padding);
|
|
313
|
+
const altContext = elementContext === 'floating' ? 'reference' : 'floating';
|
|
314
|
+
const element = elements[altBoundary ? altContext : elementContext];
|
|
315
|
+
const clippingClientRect = rectToClientRect(await platform.getClippingRect({
|
|
316
|
+
element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),
|
|
317
|
+
boundary,
|
|
318
|
+
rootBoundary,
|
|
319
|
+
strategy
|
|
320
|
+
}));
|
|
321
|
+
const rect = elementContext === 'floating' ? {
|
|
322
|
+
x,
|
|
323
|
+
y,
|
|
324
|
+
width: rects.floating.width,
|
|
325
|
+
height: rects.floating.height
|
|
326
|
+
} : rects.reference;
|
|
327
|
+
const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));
|
|
328
|
+
const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {
|
|
329
|
+
x: 1,
|
|
330
|
+
y: 1
|
|
331
|
+
} : {
|
|
332
|
+
x: 1,
|
|
333
|
+
y: 1
|
|
334
|
+
};
|
|
335
|
+
const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({
|
|
336
|
+
elements,
|
|
337
|
+
rect,
|
|
338
|
+
offsetParent,
|
|
339
|
+
strategy
|
|
340
|
+
}) : rect);
|
|
341
|
+
return {
|
|
342
|
+
top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,
|
|
343
|
+
bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,
|
|
344
|
+
left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,
|
|
345
|
+
right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x
|
|
346
|
+
};
|
|
347
|
+
}
|
|
348
|
+
|
|
283
349
|
/**
|
|
284
350
|
* Computes the `x` and `y` coordinates that will place the floating element
|
|
285
351
|
* next to a given reference element.
|
|
@@ -309,6 +375,7 @@ const computePosition$1 = async (reference, floating, config) => {
|
|
|
309
375
|
let middlewareData = {};
|
|
310
376
|
let resetCount = 0;
|
|
311
377
|
for (let i = 0; i < validMiddleware.length; i++) {
|
|
378
|
+
var _platform$detectOverf;
|
|
312
379
|
const {
|
|
313
380
|
name,
|
|
314
381
|
fn
|
|
@@ -326,7 +393,10 @@ const computePosition$1 = async (reference, floating, config) => {
|
|
|
326
393
|
strategy,
|
|
327
394
|
middlewareData,
|
|
328
395
|
rects,
|
|
329
|
-
platform
|
|
396
|
+
platform: {
|
|
397
|
+
...platform,
|
|
398
|
+
detectOverflow: (_platform$detectOverf = platform.detectOverflow) != null ? _platform$detectOverf : detectOverflow
|
|
399
|
+
},
|
|
330
400
|
elements: {
|
|
331
401
|
reference,
|
|
332
402
|
floating
|
|
@@ -371,71 +441,6 @@ const computePosition$1 = async (reference, floating, config) => {
|
|
|
371
441
|
};
|
|
372
442
|
};
|
|
373
443
|
|
|
374
|
-
/**
|
|
375
|
-
* Resolves with an object of overflow side offsets that determine how much the
|
|
376
|
-
* element is overflowing a given clipping boundary on each side.
|
|
377
|
-
* - positive = overflowing the boundary by that number of pixels
|
|
378
|
-
* - negative = how many pixels left before it will overflow
|
|
379
|
-
* - 0 = lies flush with the boundary
|
|
380
|
-
* @see https://floating-ui.com/docs/detectOverflow
|
|
381
|
-
*/
|
|
382
|
-
async function detectOverflow(state, options) {
|
|
383
|
-
var _await$platform$isEle;
|
|
384
|
-
if (options === void 0) {
|
|
385
|
-
options = {};
|
|
386
|
-
}
|
|
387
|
-
const {
|
|
388
|
-
x,
|
|
389
|
-
y,
|
|
390
|
-
platform,
|
|
391
|
-
rects,
|
|
392
|
-
elements,
|
|
393
|
-
strategy
|
|
394
|
-
} = state;
|
|
395
|
-
const {
|
|
396
|
-
boundary = 'clippingAncestors',
|
|
397
|
-
rootBoundary = 'viewport',
|
|
398
|
-
elementContext = 'floating',
|
|
399
|
-
altBoundary = false,
|
|
400
|
-
padding = 0
|
|
401
|
-
} = evaluate(options, state);
|
|
402
|
-
const paddingObject = getPaddingObject(padding);
|
|
403
|
-
const altContext = elementContext === 'floating' ? 'reference' : 'floating';
|
|
404
|
-
const element = elements[altBoundary ? altContext : elementContext];
|
|
405
|
-
const clippingClientRect = rectToClientRect(await platform.getClippingRect({
|
|
406
|
-
element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),
|
|
407
|
-
boundary,
|
|
408
|
-
rootBoundary,
|
|
409
|
-
strategy
|
|
410
|
-
}));
|
|
411
|
-
const rect = elementContext === 'floating' ? {
|
|
412
|
-
x,
|
|
413
|
-
y,
|
|
414
|
-
width: rects.floating.width,
|
|
415
|
-
height: rects.floating.height
|
|
416
|
-
} : rects.reference;
|
|
417
|
-
const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));
|
|
418
|
-
const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {
|
|
419
|
-
x: 1,
|
|
420
|
-
y: 1
|
|
421
|
-
} : {
|
|
422
|
-
x: 1,
|
|
423
|
-
y: 1
|
|
424
|
-
};
|
|
425
|
-
const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({
|
|
426
|
-
elements,
|
|
427
|
-
rect,
|
|
428
|
-
offsetParent,
|
|
429
|
-
strategy
|
|
430
|
-
}) : rect);
|
|
431
|
-
return {
|
|
432
|
-
top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,
|
|
433
|
-
bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,
|
|
434
|
-
left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,
|
|
435
|
-
right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x
|
|
436
|
-
};
|
|
437
|
-
}
|
|
438
|
-
|
|
439
444
|
function getPlacementList(alignment, autoAlignment, allowedPlacements) {
|
|
440
445
|
const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);
|
|
441
446
|
return allowedPlacementsSortedByAlignment.filter(placement => {
|
|
@@ -475,7 +480,7 @@ const autoPlacement$1 = function (options) {
|
|
|
475
480
|
...detectOverflowOptions
|
|
476
481
|
} = evaluate(options, state);
|
|
477
482
|
const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;
|
|
478
|
-
const overflow = await detectOverflow(state, detectOverflowOptions);
|
|
483
|
+
const overflow = await platform.detectOverflow(state, detectOverflowOptions);
|
|
479
484
|
const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;
|
|
480
485
|
const currentPlacement = placements$1[currentIndex];
|
|
481
486
|
if (currentPlacement == null) {
|
|
@@ -589,7 +594,7 @@ const flip$1 = function (options) {
|
|
|
589
594
|
fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));
|
|
590
595
|
}
|
|
591
596
|
const placements = [initialPlacement, ...fallbackPlacements];
|
|
592
|
-
const overflow = await detectOverflow(state, detectOverflowOptions);
|
|
597
|
+
const overflow = await platform.detectOverflow(state, detectOverflowOptions);
|
|
593
598
|
const overflows = [];
|
|
594
599
|
let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];
|
|
595
600
|
if (checkMainAxis) {
|
|
@@ -610,16 +615,22 @@ const flip$1 = function (options) {
|
|
|
610
615
|
const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;
|
|
611
616
|
const nextPlacement = placements[nextIndex];
|
|
612
617
|
if (nextPlacement) {
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
618
|
+
const ignoreCrossAxisOverflow = checkCrossAxis === 'alignment' ? initialSideAxis !== getSideAxis(nextPlacement) : false;
|
|
619
|
+
if (!ignoreCrossAxisOverflow ||
|
|
620
|
+
// We leave the current main axis only if every placement on that axis
|
|
621
|
+
// overflows the main axis.
|
|
622
|
+
overflowsData.every(d => getSideAxis(d.placement) === initialSideAxis ? d.overflows[0] > 0 : true)) {
|
|
623
|
+
// Try next placement and re-run the lifecycle.
|
|
624
|
+
return {
|
|
625
|
+
data: {
|
|
626
|
+
index: nextIndex,
|
|
627
|
+
overflows: overflowsData
|
|
628
|
+
},
|
|
629
|
+
reset: {
|
|
630
|
+
placement: nextPlacement
|
|
631
|
+
}
|
|
632
|
+
};
|
|
633
|
+
}
|
|
623
634
|
}
|
|
624
635
|
|
|
625
636
|
// First, find the candidates that fit on the mainAxis side of overflow,
|
|
@@ -665,6 +676,8 @@ const flip$1 = function (options) {
|
|
|
665
676
|
};
|
|
666
677
|
};
|
|
667
678
|
|
|
679
|
+
const originSides = /*#__PURE__*/new Set(['left', 'top']);
|
|
680
|
+
|
|
668
681
|
// For type backwards-compatibility, the `OffsetOptions` type was also
|
|
669
682
|
// Derivable.
|
|
670
683
|
|
|
@@ -678,7 +691,7 @@ async function convertValueToCoords(state, options) {
|
|
|
678
691
|
const side = getSide(placement);
|
|
679
692
|
const alignment = getAlignment(placement);
|
|
680
693
|
const isVertical = getSideAxis(placement) === 'y';
|
|
681
|
-
const mainAxisMulti =
|
|
694
|
+
const mainAxisMulti = originSides.has(side) ? -1 : 1;
|
|
682
695
|
const crossAxisMulti = rtl && isVertical ? -1 : 1;
|
|
683
696
|
const rawValue = evaluate(options, state);
|
|
684
697
|
|
|
@@ -765,7 +778,8 @@ const shift$1 = function (options) {
|
|
|
765
778
|
const {
|
|
766
779
|
x,
|
|
767
780
|
y,
|
|
768
|
-
placement
|
|
781
|
+
placement,
|
|
782
|
+
platform
|
|
769
783
|
} = state;
|
|
770
784
|
const {
|
|
771
785
|
mainAxis: checkMainAxis = true,
|
|
@@ -788,7 +802,7 @@ const shift$1 = function (options) {
|
|
|
788
802
|
x,
|
|
789
803
|
y
|
|
790
804
|
};
|
|
791
|
-
const overflow = await detectOverflow(state, detectOverflowOptions);
|
|
805
|
+
const overflow = await platform.detectOverflow(state, detectOverflowOptions);
|
|
792
806
|
const crossAxis = getSideAxis(getSide(placement));
|
|
793
807
|
const mainAxis = getOppositeAxis(crossAxis);
|
|
794
808
|
let mainAxisCoord = coords[mainAxis];
|
|
@@ -871,6 +885,7 @@ function isShadowRoot(value) {
|
|
|
871
885
|
}
|
|
872
886
|
return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;
|
|
873
887
|
}
|
|
888
|
+
const invalidOverflowDisplayValues = /*#__PURE__*/new Set(['inline', 'contents']);
|
|
874
889
|
function isOverflowElement(element) {
|
|
875
890
|
const {
|
|
876
891
|
overflow,
|
|
@@ -878,27 +893,32 @@ function isOverflowElement(element) {
|
|
|
878
893
|
overflowY,
|
|
879
894
|
display
|
|
880
895
|
} = getComputedStyle$1(element);
|
|
881
|
-
return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !
|
|
896
|
+
return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !invalidOverflowDisplayValues.has(display);
|
|
882
897
|
}
|
|
898
|
+
const tableElements = /*#__PURE__*/new Set(['table', 'td', 'th']);
|
|
883
899
|
function isTableElement(element) {
|
|
884
|
-
return
|
|
900
|
+
return tableElements.has(getNodeName(element));
|
|
885
901
|
}
|
|
902
|
+
const topLayerSelectors = [':popover-open', ':modal'];
|
|
886
903
|
function isTopLayer(element) {
|
|
887
|
-
return
|
|
904
|
+
return topLayerSelectors.some(selector => {
|
|
888
905
|
try {
|
|
889
906
|
return element.matches(selector);
|
|
890
|
-
} catch (
|
|
907
|
+
} catch (_e) {
|
|
891
908
|
return false;
|
|
892
909
|
}
|
|
893
910
|
});
|
|
894
911
|
}
|
|
912
|
+
const transformProperties = ['transform', 'translate', 'scale', 'rotate', 'perspective'];
|
|
913
|
+
const willChangeValues = ['transform', 'translate', 'scale', 'rotate', 'perspective', 'filter'];
|
|
914
|
+
const containValues = ['paint', 'layout', 'strict', 'content'];
|
|
895
915
|
function isContainingBlock(elementOrCss) {
|
|
896
916
|
const webkit = isWebKit();
|
|
897
917
|
const css = isElement(elementOrCss) ? getComputedStyle$1(elementOrCss) : elementOrCss;
|
|
898
918
|
|
|
899
919
|
// https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block
|
|
900
920
|
// https://drafts.csswg.org/css-transforms-2/#individual-transforms
|
|
901
|
-
return
|
|
921
|
+
return transformProperties.some(value => css[value] ? css[value] !== 'none' : false) || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || willChangeValues.some(value => (css.willChange || '').includes(value)) || containValues.some(value => (css.contain || '').includes(value));
|
|
902
922
|
}
|
|
903
923
|
function getContainingBlock(element) {
|
|
904
924
|
let currentNode = getParentNode(element);
|
|
@@ -916,8 +936,9 @@ function isWebKit() {
|
|
|
916
936
|
if (typeof CSS === 'undefined' || !CSS.supports) return false;
|
|
917
937
|
return CSS.supports('-webkit-backdrop-filter', 'none');
|
|
918
938
|
}
|
|
939
|
+
const lastTraversableNodeNames = /*#__PURE__*/new Set(['html', 'body', '#document']);
|
|
919
940
|
function isLastTraversableNode(node) {
|
|
920
|
-
return
|
|
941
|
+
return lastTraversableNodeNames.has(getNodeName(node));
|
|
921
942
|
}
|
|
922
943
|
function getComputedStyle$1(element) {
|
|
923
944
|
return getWindow(element).getComputedStyle(element);
|
|
@@ -1117,14 +1138,9 @@ function getWindowScrollBarX(element, rect) {
|
|
|
1117
1138
|
return rect.left + leftScroll;
|
|
1118
1139
|
}
|
|
1119
1140
|
|
|
1120
|
-
function getHTMLOffset(documentElement, scroll
|
|
1121
|
-
if (ignoreScrollbarX === void 0) {
|
|
1122
|
-
ignoreScrollbarX = false;
|
|
1123
|
-
}
|
|
1141
|
+
function getHTMLOffset(documentElement, scroll) {
|
|
1124
1142
|
const htmlRect = documentElement.getBoundingClientRect();
|
|
1125
|
-
const x = htmlRect.left + scroll.scrollLeft - (
|
|
1126
|
-
// RTL <body> scrollbar.
|
|
1127
|
-
getWindowScrollBarX(documentElement, htmlRect));
|
|
1143
|
+
const x = htmlRect.left + scroll.scrollLeft - getWindowScrollBarX(documentElement, htmlRect);
|
|
1128
1144
|
const y = htmlRect.top + scroll.scrollTop;
|
|
1129
1145
|
return {
|
|
1130
1146
|
x,
|
|
@@ -1163,7 +1179,7 @@ function convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {
|
|
|
1163
1179
|
offsets.y = offsetRect.y + offsetParent.clientTop;
|
|
1164
1180
|
}
|
|
1165
1181
|
}
|
|
1166
|
-
const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll
|
|
1182
|
+
const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);
|
|
1167
1183
|
return {
|
|
1168
1184
|
width: rect.width * scale.x,
|
|
1169
1185
|
height: rect.height * scale.y,
|
|
@@ -1197,6 +1213,10 @@ function getDocumentRect(element) {
|
|
|
1197
1213
|
};
|
|
1198
1214
|
}
|
|
1199
1215
|
|
|
1216
|
+
// Safety check: ensure the scrollbar space is reasonable in case this
|
|
1217
|
+
// calculation is affected by unusual styles.
|
|
1218
|
+
// Most scrollbars leave 15-18px of space.
|
|
1219
|
+
const SCROLLBAR_MAX = 25;
|
|
1200
1220
|
function getViewportRect(element, strategy) {
|
|
1201
1221
|
const win = getWindow(element);
|
|
1202
1222
|
const html = getDocumentElement(element);
|
|
@@ -1214,6 +1234,24 @@ function getViewportRect(element, strategy) {
|
|
|
1214
1234
|
y = visualViewport.offsetTop;
|
|
1215
1235
|
}
|
|
1216
1236
|
}
|
|
1237
|
+
const windowScrollbarX = getWindowScrollBarX(html);
|
|
1238
|
+
// <html> `overflow: hidden` + `scrollbar-gutter: stable` reduces the
|
|
1239
|
+
// visual width of the <html> but this is not considered in the size
|
|
1240
|
+
// of `html.clientWidth`.
|
|
1241
|
+
if (windowScrollbarX <= 0) {
|
|
1242
|
+
const doc = html.ownerDocument;
|
|
1243
|
+
const body = doc.body;
|
|
1244
|
+
const bodyStyles = getComputedStyle(body);
|
|
1245
|
+
const bodyMarginInline = doc.compatMode === 'CSS1Compat' ? parseFloat(bodyStyles.marginLeft) + parseFloat(bodyStyles.marginRight) || 0 : 0;
|
|
1246
|
+
const clippingStableScrollbarWidth = Math.abs(html.clientWidth - body.clientWidth - bodyMarginInline);
|
|
1247
|
+
if (clippingStableScrollbarWidth <= SCROLLBAR_MAX) {
|
|
1248
|
+
width -= clippingStableScrollbarWidth;
|
|
1249
|
+
}
|
|
1250
|
+
} else if (windowScrollbarX <= SCROLLBAR_MAX) {
|
|
1251
|
+
// If the <body> scrollbar is on the left, the width needs to be extended
|
|
1252
|
+
// by the scrollbar amount so there isn't extra space on the right.
|
|
1253
|
+
width += windowScrollbarX;
|
|
1254
|
+
}
|
|
1217
1255
|
return {
|
|
1218
1256
|
width,
|
|
1219
1257
|
height,
|
|
@@ -1222,6 +1260,7 @@ function getViewportRect(element, strategy) {
|
|
|
1222
1260
|
};
|
|
1223
1261
|
}
|
|
1224
1262
|
|
|
1263
|
+
const absoluteOrFixed = /*#__PURE__*/new Set(['absolute', 'fixed']);
|
|
1225
1264
|
// Returns the inner client rect, subtracting scrollbars if present.
|
|
1226
1265
|
function getInnerBoundingClientRect(element, strategy) {
|
|
1227
1266
|
const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');
|
|
@@ -1286,7 +1325,7 @@ function getClippingElementAncestors(element, cache) {
|
|
|
1286
1325
|
if (!currentNodeIsContaining && computedStyle.position === 'fixed') {
|
|
1287
1326
|
currentContainingBlockComputedStyle = null;
|
|
1288
1327
|
}
|
|
1289
|
-
const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle &&
|
|
1328
|
+
const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && absoluteOrFixed.has(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);
|
|
1290
1329
|
if (shouldDropCurrentNode) {
|
|
1291
1330
|
// Drop non-containing blocks.
|
|
1292
1331
|
result = result.filter(ancestor => ancestor !== currentNode);
|
|
@@ -1349,6 +1388,12 @@ function getRectRelativeToOffsetParent(element, offsetParent, strategy) {
|
|
|
1349
1388
|
scrollTop: 0
|
|
1350
1389
|
};
|
|
1351
1390
|
const offsets = createCoords(0);
|
|
1391
|
+
|
|
1392
|
+
// If the <body> scrollbar appears on the left (e.g. RTL systems). Use
|
|
1393
|
+
// Firefox with layout.scrollbar.side = 3 in about:config to test this.
|
|
1394
|
+
function setLeftRTLScrollbarOffset() {
|
|
1395
|
+
offsets.x = getWindowScrollBarX(documentElement);
|
|
1396
|
+
}
|
|
1352
1397
|
if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {
|
|
1353
1398
|
if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {
|
|
1354
1399
|
scroll = getNodeScroll(offsetParent);
|
|
@@ -1358,11 +1403,12 @@ function getRectRelativeToOffsetParent(element, offsetParent, strategy) {
|
|
|
1358
1403
|
offsets.x = offsetRect.x + offsetParent.clientLeft;
|
|
1359
1404
|
offsets.y = offsetRect.y + offsetParent.clientTop;
|
|
1360
1405
|
} else if (documentElement) {
|
|
1361
|
-
|
|
1362
|
-
// Firefox with layout.scrollbar.side = 3 in about:config to test this.
|
|
1363
|
-
offsets.x = getWindowScrollBarX(documentElement);
|
|
1406
|
+
setLeftRTLScrollbarOffset();
|
|
1364
1407
|
}
|
|
1365
1408
|
}
|
|
1409
|
+
if (isFixed && !isOffsetParentAnElement && documentElement) {
|
|
1410
|
+
setLeftRTLScrollbarOffset();
|
|
1411
|
+
}
|
|
1366
1412
|
const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);
|
|
1367
1413
|
const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;
|
|
1368
1414
|
const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;
|
|
@@ -1539,7 +1585,7 @@ function observeMove(element, onMove) {
|
|
|
1539
1585
|
// Handle <iframe>s
|
|
1540
1586
|
root: root.ownerDocument
|
|
1541
1587
|
});
|
|
1542
|
-
} catch (
|
|
1588
|
+
} catch (_e) {
|
|
1543
1589
|
io = new IntersectionObserver(handleObserve, options);
|
|
1544
1590
|
}
|
|
1545
1591
|
io.observe(element);
|
|
@@ -2330,32 +2376,32 @@ class AuroFloatingUI {
|
|
|
2330
2376
|
|
|
2331
2377
|
// Selectors for focusable elements
|
|
2332
2378
|
const FOCUSABLE_SELECTORS = [
|
|
2333
|
-
|
|
2334
|
-
|
|
2335
|
-
|
|
2336
|
-
|
|
2337
|
-
|
|
2379
|
+
"a[href]",
|
|
2380
|
+
"button:not([disabled])",
|
|
2381
|
+
"textarea:not([disabled])",
|
|
2382
|
+
"input:not([disabled])",
|
|
2383
|
+
"select:not([disabled])",
|
|
2338
2384
|
'[role="tab"]:not([disabled])',
|
|
2339
2385
|
'[role="link"]:not([disabled])',
|
|
2340
2386
|
'[role="button"]:not([disabled])',
|
|
2341
2387
|
'[tabindex]:not([tabindex="-1"])',
|
|
2342
|
-
'[contenteditable]:not([contenteditable="false"])'
|
|
2388
|
+
'[contenteditable]:not([contenteditable="false"])',
|
|
2343
2389
|
];
|
|
2344
2390
|
|
|
2345
2391
|
// List of custom components that are known to be focusable
|
|
2346
2392
|
const FOCUSABLE_COMPONENTS = [
|
|
2347
|
-
|
|
2348
|
-
|
|
2349
|
-
|
|
2350
|
-
|
|
2351
|
-
|
|
2352
|
-
|
|
2353
|
-
|
|
2354
|
-
'auro-menu',
|
|
2355
|
-
|
|
2356
|
-
|
|
2357
|
-
|
|
2358
|
-
|
|
2393
|
+
"auro-checkbox",
|
|
2394
|
+
"auro-radio",
|
|
2395
|
+
"auro-dropdown",
|
|
2396
|
+
"auro-button",
|
|
2397
|
+
"auro-combobox",
|
|
2398
|
+
"auro-input",
|
|
2399
|
+
"auro-counter",
|
|
2400
|
+
// 'auro-menu', // Auro menu is not focusable by default, it uses a different interaction model
|
|
2401
|
+
"auro-select",
|
|
2402
|
+
"auro-datepicker",
|
|
2403
|
+
"auro-hyperlink",
|
|
2404
|
+
"auro-accordion",
|
|
2359
2405
|
];
|
|
2360
2406
|
|
|
2361
2407
|
/**
|
|
@@ -2369,21 +2415,43 @@ function isFocusableComponent(element) {
|
|
|
2369
2415
|
const componentName = element.tagName.toLowerCase();
|
|
2370
2416
|
|
|
2371
2417
|
// Guard Clause: Element is a focusable component
|
|
2372
|
-
if (
|
|
2418
|
+
if (
|
|
2419
|
+
!FOCUSABLE_COMPONENTS.some(
|
|
2420
|
+
(name) => element.hasAttribute(name) || componentName === name,
|
|
2421
|
+
)
|
|
2422
|
+
)
|
|
2423
|
+
return false;
|
|
2373
2424
|
|
|
2374
2425
|
// Guard Clause: Element is not disabled
|
|
2375
|
-
if (element.hasAttribute(
|
|
2426
|
+
if (element.hasAttribute("disabled")) return false;
|
|
2376
2427
|
|
|
2377
2428
|
// Guard Clause: The element is a hyperlink and has no href attribute
|
|
2378
|
-
if (componentName.match("hyperlink") && !element.hasAttribute(
|
|
2429
|
+
if (componentName.match("hyperlink") && !element.hasAttribute("href"))
|
|
2430
|
+
return false;
|
|
2379
2431
|
|
|
2380
2432
|
// If all guard clauses pass, the element is a focusable component
|
|
2381
2433
|
return true;
|
|
2382
2434
|
}
|
|
2383
2435
|
|
|
2436
|
+
/**
|
|
2437
|
+
* Safely get a numeric tabindex for an element.
|
|
2438
|
+
* Returns a number if the tabindex is a valid integer, otherwise null.
|
|
2439
|
+
*
|
|
2440
|
+
* @param {HTMLElement} element The element whose tabindex to read.
|
|
2441
|
+
* @returns {?number} The numeric tabindex or null if missing/invalid.
|
|
2442
|
+
*/
|
|
2443
|
+
function getNumericTabIndex(element) {
|
|
2444
|
+
const raw = element.getAttribute("tabindex");
|
|
2445
|
+
if (raw == null) return null;
|
|
2446
|
+
|
|
2447
|
+
const value = Number.parseInt(raw, 10);
|
|
2448
|
+
return Number.isNaN(value) ? null : value;
|
|
2449
|
+
}
|
|
2450
|
+
|
|
2384
2451
|
/**
|
|
2385
2452
|
* Retrieves all focusable elements within the container in DOM order, including those in shadow DOM and slots.
|
|
2386
2453
|
* Returns a unique, ordered array of elements that can receive focus.
|
|
2454
|
+
* Also sorts elements with tabindex first, preserving their order.
|
|
2387
2455
|
*
|
|
2388
2456
|
* @param {HTMLElement} container The container to search within
|
|
2389
2457
|
* @returns {Array<HTMLElement>} An array of focusable elements within the container.
|
|
@@ -2417,14 +2485,14 @@ function getFocusableElements(container) {
|
|
|
2417
2485
|
if (root.shadowRoot) {
|
|
2418
2486
|
// Process shadow DOM children in order
|
|
2419
2487
|
if (root.shadowRoot.children) {
|
|
2420
|
-
Array.from(root.shadowRoot.children).forEach(child => {
|
|
2488
|
+
Array.from(root.shadowRoot.children).forEach((child) => {
|
|
2421
2489
|
collectFocusableElements(child);
|
|
2422
2490
|
});
|
|
2423
2491
|
}
|
|
2424
2492
|
}
|
|
2425
2493
|
|
|
2426
2494
|
// Process slots and their assigned nodes in order
|
|
2427
|
-
if (root.tagName ===
|
|
2495
|
+
if (root.tagName === "SLOT") {
|
|
2428
2496
|
const assignedNodes = root.assignedNodes({ flatten: true });
|
|
2429
2497
|
for (const node of assignedNodes) {
|
|
2430
2498
|
collectFocusableElements(node);
|
|
@@ -2432,7 +2500,7 @@ function getFocusableElements(container) {
|
|
|
2432
2500
|
} else {
|
|
2433
2501
|
// Process light DOM children in order
|
|
2434
2502
|
if (root.children) {
|
|
2435
|
-
Array.from(root.children).forEach(child => {
|
|
2503
|
+
Array.from(root.children).forEach((child) => {
|
|
2436
2504
|
collectFocusableElements(child);
|
|
2437
2505
|
});
|
|
2438
2506
|
}
|
|
@@ -2455,7 +2523,37 @@ function getFocusableElements(container) {
|
|
|
2455
2523
|
}
|
|
2456
2524
|
}
|
|
2457
2525
|
|
|
2458
|
-
|
|
2526
|
+
// Move tab-indexed elements to the front while preserving their order
|
|
2527
|
+
// This ensures that elements with tabindex are prioritized in the focus order
|
|
2528
|
+
|
|
2529
|
+
// First extract elements with valid positive tabindex
|
|
2530
|
+
const elementsWithTabindex = uniqueElements.filter((el) => {
|
|
2531
|
+
const tabindex = getNumericTabIndex(el);
|
|
2532
|
+
return tabindex !== null && tabindex > 0;
|
|
2533
|
+
});
|
|
2534
|
+
|
|
2535
|
+
// Sort these elements by their tabindex value
|
|
2536
|
+
elementsWithTabindex.sort((a, b) => {
|
|
2537
|
+
const aIndex = getNumericTabIndex(a) ?? 0;
|
|
2538
|
+
const bIndex = getNumericTabIndex(b) ?? 0;
|
|
2539
|
+
return aIndex - bIndex;
|
|
2540
|
+
});
|
|
2541
|
+
|
|
2542
|
+
// Elements without tabindex (preserving their original order)
|
|
2543
|
+
const elementsWithoutTabindex = uniqueElements.filter((el) => {
|
|
2544
|
+
const tabindex = getNumericTabIndex(el);
|
|
2545
|
+
|
|
2546
|
+
// Elements without tabindex or with tabindex of 0 stay in DOM order
|
|
2547
|
+
return tabindex === null || tabindex === 0;
|
|
2548
|
+
});
|
|
2549
|
+
|
|
2550
|
+
// Combine both arrays with tabindex elements first
|
|
2551
|
+
const tabIndexedUniqueElements = [
|
|
2552
|
+
...elementsWithTabindex,
|
|
2553
|
+
...elementsWithoutTabindex,
|
|
2554
|
+
];
|
|
2555
|
+
|
|
2556
|
+
return tabIndexedUniqueElements;
|
|
2459
2557
|
}
|
|
2460
2558
|
|
|
2461
2559
|
/**
|
|
@@ -2468,15 +2566,17 @@ class FocusTrap {
|
|
|
2468
2566
|
* Initializes event listeners and prepares the container for focus management.
|
|
2469
2567
|
*
|
|
2470
2568
|
* @param {HTMLElement} container The DOM element to trap focus within.
|
|
2569
|
+
* @param {boolean} [controlTabOrder=false] If true enables manual control of the tab order by the FocusTrap.
|
|
2471
2570
|
* @throws {Error} If the provided container is not a valid HTMLElement.
|
|
2472
2571
|
*/
|
|
2473
|
-
constructor(container) {
|
|
2572
|
+
constructor(container, controlTabOrder = false) {
|
|
2474
2573
|
if (!container || !(container instanceof HTMLElement)) {
|
|
2475
2574
|
throw new Error("FocusTrap requires a valid HTMLElement.");
|
|
2476
2575
|
}
|
|
2477
2576
|
|
|
2478
2577
|
this.container = container;
|
|
2479
|
-
this.tabDirection =
|
|
2578
|
+
this.tabDirection = "forward"; // or 'backward';
|
|
2579
|
+
this.controlTabOrder = controlTabOrder;
|
|
2480
2580
|
|
|
2481
2581
|
this._init();
|
|
2482
2582
|
}
|
|
@@ -2488,58 +2588,119 @@ class FocusTrap {
|
|
|
2488
2588
|
* @private
|
|
2489
2589
|
*/
|
|
2490
2590
|
_init() {
|
|
2491
|
-
|
|
2492
2591
|
// Add inert attribute to prevent focusing programmatically as well (if supported)
|
|
2493
|
-
if (
|
|
2592
|
+
if ("inert" in HTMLElement.prototype) {
|
|
2494
2593
|
this.container.inert = false; // Ensure the container isn't inert
|
|
2495
|
-
this.container.setAttribute(
|
|
2594
|
+
this.container.setAttribute("data-focus-trap-container", true); // Mark for identification
|
|
2496
2595
|
}
|
|
2497
2596
|
|
|
2498
2597
|
// Track tab direction
|
|
2499
|
-
this.container.addEventListener(
|
|
2598
|
+
this.container.addEventListener("keydown", this._onKeydown);
|
|
2500
2599
|
}
|
|
2501
2600
|
|
|
2502
2601
|
/**
|
|
2503
|
-
*
|
|
2504
|
-
*
|
|
2505
|
-
*
|
|
2506
|
-
* @param {KeyboardEvent} e The keyboard event triggered by user interaction.
|
|
2602
|
+
* Gets an array of currently active (focused) elements in the document and shadow DOM.
|
|
2603
|
+
* @returns {Array<HTMLElement>} An array of focusable elements within the container.
|
|
2507
2604
|
* @private
|
|
2508
2605
|
*/
|
|
2509
|
-
|
|
2510
|
-
|
|
2511
|
-
|
|
2512
|
-
|
|
2513
|
-
|
|
2514
|
-
|
|
2515
|
-
|
|
2516
|
-
|
|
2517
|
-
|
|
2518
|
-
|
|
2519
|
-
|
|
2520
|
-
|
|
2521
|
-
while (activeElement?.shadowRoot?.activeElement) {
|
|
2522
|
-
actives.push(activeElement.shadowRoot.activeElement);
|
|
2523
|
-
activeElement = activeElement.shadowRoot.activeElement;
|
|
2524
|
-
}
|
|
2606
|
+
_getActiveElements() {
|
|
2607
|
+
// Get the active element(s) in the document and shadow root
|
|
2608
|
+
// This will include the active element in the shadow DOM if it exists
|
|
2609
|
+
// Active element may be inside the shadow DOM depending on delegatesFocus, so we need to check both
|
|
2610
|
+
let { activeElement } = document;
|
|
2611
|
+
const actives = [activeElement];
|
|
2612
|
+
while (activeElement?.shadowRoot?.activeElement) {
|
|
2613
|
+
actives.push(activeElement.shadowRoot.activeElement);
|
|
2614
|
+
activeElement = activeElement.shadowRoot.activeElement;
|
|
2615
|
+
}
|
|
2616
|
+
return actives;
|
|
2617
|
+
}
|
|
2525
2618
|
|
|
2526
|
-
|
|
2527
|
-
|
|
2528
|
-
|
|
2529
|
-
|
|
2530
|
-
|
|
2531
|
-
|
|
2532
|
-
|
|
2533
|
-
|
|
2534
|
-
|
|
2535
|
-
|
|
2536
|
-
|
|
2537
|
-
|
|
2538
|
-
|
|
2539
|
-
|
|
2540
|
-
|
|
2541
|
-
|
|
2619
|
+
/**
|
|
2620
|
+
* Gets the next focus index based on the current index and focusable elements.
|
|
2621
|
+
* @param {number} currentIndex The current index of the focused element.
|
|
2622
|
+
* @param {Array<HTMLElement>} focusables The array of focusable elements.
|
|
2623
|
+
* @returns {number|null} The next focus index or null if not determined.
|
|
2624
|
+
*/
|
|
2625
|
+
_getNextFocusIndex(currentIndex, focusables, actives) {
|
|
2626
|
+
if (this.controlTabOrder) {
|
|
2627
|
+
// Calculate the new index based on the current index and tab direction
|
|
2628
|
+
let newFocusIndex =
|
|
2629
|
+
currentIndex + (this.tabDirection === "forward" ? 1 : -1);
|
|
2630
|
+
|
|
2631
|
+
// Wrap-around logic
|
|
2632
|
+
if (newFocusIndex < 0) newFocusIndex = focusables.length - 1;
|
|
2633
|
+
if (newFocusIndex >= focusables.length) newFocusIndex = 0;
|
|
2634
|
+
|
|
2635
|
+
// Early return with the new index
|
|
2636
|
+
return newFocusIndex;
|
|
2542
2637
|
}
|
|
2638
|
+
|
|
2639
|
+
// Determine if we need to wrap
|
|
2640
|
+
const atFirst =
|
|
2641
|
+
actives.includes(focusables[0]) || actives.includes(this.container);
|
|
2642
|
+
const atLast = actives.includes(focusables[focusables.length - 1]);
|
|
2643
|
+
|
|
2644
|
+
// Only wrap if at the ends
|
|
2645
|
+
if (this.tabDirection === "backward" && atFirst) {
|
|
2646
|
+
return focusables.length - 1;
|
|
2647
|
+
}
|
|
2648
|
+
|
|
2649
|
+
if (this.tabDirection === "forward" && atLast) {
|
|
2650
|
+
return 0;
|
|
2651
|
+
}
|
|
2652
|
+
|
|
2653
|
+
// No wrap, so don't change focus, return early
|
|
2654
|
+
return null;
|
|
2655
|
+
}
|
|
2656
|
+
|
|
2657
|
+
/**
|
|
2658
|
+
* Handles the Tab key press event to manage focus within the container.
|
|
2659
|
+
* @param {KeyboardEvent} e The keyboard event triggered by the user.
|
|
2660
|
+
* @returns {void}
|
|
2661
|
+
*/
|
|
2662
|
+
_handleTabKey(e) {
|
|
2663
|
+
// Update the focusable elements
|
|
2664
|
+
const focusables = this._getFocusableElements();
|
|
2665
|
+
|
|
2666
|
+
// If there are no focusable elements, exit
|
|
2667
|
+
if (!focusables.length) return;
|
|
2668
|
+
|
|
2669
|
+
// Set the tab direction based on the key pressed
|
|
2670
|
+
this.tabDirection = e.shiftKey ? "backward" : "forward";
|
|
2671
|
+
|
|
2672
|
+
// Get the active elements that are currently focused
|
|
2673
|
+
const actives = this._getActiveElements();
|
|
2674
|
+
|
|
2675
|
+
// If we're at either end of the focusable elements, wrap around to the other end
|
|
2676
|
+
let focusIndex = focusables.findIndex((el) => actives.includes(el));
|
|
2677
|
+
|
|
2678
|
+
// Fallback if we have no focused element
|
|
2679
|
+
if (focusIndex === -1) focusIndex = 0;
|
|
2680
|
+
|
|
2681
|
+
// Get the next focus index based on the current focus index, tab direction, and controlTabOrder setting
|
|
2682
|
+
// Is null if no new focus index is determined
|
|
2683
|
+
const newFocusIndex = this._getNextFocusIndex(
|
|
2684
|
+
focusIndex,
|
|
2685
|
+
focusables,
|
|
2686
|
+
actives,
|
|
2687
|
+
);
|
|
2688
|
+
|
|
2689
|
+
// If we have a new focus index, set focus to that element
|
|
2690
|
+
if (newFocusIndex !== null) {
|
|
2691
|
+
e.preventDefault();
|
|
2692
|
+
focusables[newFocusIndex].focus();
|
|
2693
|
+
}
|
|
2694
|
+
}
|
|
2695
|
+
|
|
2696
|
+
/**
|
|
2697
|
+
* Catches the keydown event
|
|
2698
|
+
* @param {KeyboardEvent} e The keyboard event triggered by user interaction.
|
|
2699
|
+
* @private
|
|
2700
|
+
*/
|
|
2701
|
+
_onKeydown = (e) => {
|
|
2702
|
+
// Handle tab
|
|
2703
|
+
if (e.key === "Tab") this._handleTabKey(e);
|
|
2543
2704
|
};
|
|
2544
2705
|
|
|
2545
2706
|
/**
|
|
@@ -2552,8 +2713,8 @@ class FocusTrap {
|
|
|
2552
2713
|
_getFocusableElements() {
|
|
2553
2714
|
// Use the imported utility function to get focusable elements
|
|
2554
2715
|
const elements = getFocusableElements(this.container);
|
|
2555
|
-
|
|
2556
|
-
//
|
|
2716
|
+
|
|
2717
|
+
// Return the elements found
|
|
2557
2718
|
return elements;
|
|
2558
2719
|
}
|
|
2559
2720
|
|
|
@@ -2580,12 +2741,11 @@ class FocusTrap {
|
|
|
2580
2741
|
* Call this method to clean up when the focus trap is no longer needed.
|
|
2581
2742
|
*/
|
|
2582
2743
|
disconnect() {
|
|
2583
|
-
|
|
2584
|
-
|
|
2585
|
-
this.container.removeAttribute('data-focus-trap-container');
|
|
2744
|
+
if (this.container.hasAttribute("data-focus-trap-container")) {
|
|
2745
|
+
this.container.removeAttribute("data-focus-trap-container");
|
|
2586
2746
|
}
|
|
2587
2747
|
|
|
2588
|
-
this.container.removeEventListener(
|
|
2748
|
+
this.container.removeEventListener("keydown", this._onKeydown);
|
|
2589
2749
|
}
|
|
2590
2750
|
}
|
|
2591
2751
|
|
|
@@ -2629,11 +2789,11 @@ class AuroDependencyVersioning {
|
|
|
2629
2789
|
}
|
|
2630
2790
|
}
|
|
2631
2791
|
|
|
2632
|
-
class p{registerComponent(t,a){customElements.get(t)||customElements.define(t,class extends a{});}closestElement(t,a=this,e=(a,s=a&&a.closest(t))=>a&&a!==document&&a!==window?s||e(a.getRootNode().host):null){return e(a)}handleComponentTagRename(t,a){const e=a.toLowerCase();t.tagName.toLowerCase()!==e&&t.setAttribute(e,true);}elementMatch(t,a){const e=a.toLowerCase();return t.tagName.toLowerCase()===e||t.hasAttribute(e)}}var u='<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-labelledby="error__desc" class="ico_squareLarge" data-deprecated="true" role="img" style="min-width:var(--auro-size-lg, var(--ds-size-300, 1.5rem));height:var(--auro-size-lg, var(--ds-size-300, 1.5rem));fill:currentColor" viewBox="0 0 24 24" part="svg"><title/><desc id="error__desc">Error alert indicator.</desc><path d="m13.047 5.599 6.786 11.586A1.207 1.207 0 0 1 18.786 19H5.214a1.207 1.207 0 0 1-1.047-1.815l6.786-11.586a1.214 1.214 0 0 1 2.094 0m-1.165.87a.23.23 0 0 0-.085.085L5.419 17.442a.232.232 0 0 0 .203.35h12.756a.234.234 0 0 0 .203-.35L12.203 6.554a.236.236 0 0 0-.321-.084M12 15.5a.75.75 0 1 1 0 1.5.75.75 0 0 1 0-1.5m-.024-6.22c.325 0 .589.261.589.583v4.434a.586.586 0 0 1-.589.583.586.586 0 0 1-.588-.583V9.863c0-.322.264-.583.588-.583"/></svg>';class m extends LitElement{static get properties(){return {hidden:{type:Boolean,reflect:true},hiddenVisually:{type:Boolean,reflect:true},hiddenAudible:{type:Boolean,reflect:true}}}hideAudible(t){return t?"true":"false"}}const g=new Map,f=(t,a={})=>{const e=a.responseParser||(t=>t.text());return g.has(t)||g.set(t,fetch(t).then(e)),g.get(t)};var w=css`:focus:not(:focus-visible){outline:3px solid transparent}.util_displayInline{display:inline}.util_displayInlineBlock{display:inline-block}.util_displayBlock,:host{display:block}.util_displayFlex{display:flex}.util_displayHidden,:host([hidden]:not(:focus):not(:active)){display:none}.util_displayHiddenVisually,:host([hiddenVisually]:not(:focus):not(:active)){position:absolute;overflow:hidden;clip:rect(1px,1px,1px,1px);width:1px;height:1px;padding:0;border:0}.ico_squareLarge{fill:currentColor;height:var(--auro-size-lg, var(--ds-size-300, 1.5rem))}.ico_squareSmall{fill:currentColor;height:.6rem}.ico_squareMed{fill:currentColor;height:var(--auro-size-md, var(--ds-size-200, 1rem))}.ico_squareSml{fill:currentColor;height:var(--auro-size-sm, var(--ds-size-150, .75rem))}:host{color:currentColor;vertical-align:middle;display:inline-block}svg{min-width:var(--ds-auro-icon-size, 1.5rem)!important;width:var(--ds-auro-icon-size, 1.5rem)!important;height:var(--ds-auro-icon-size, 1.5rem)!important}.componentWrapper{display:flex;line-height:var(--ds-auro-icon-size)}.svgWrapper{height:var(--ds-auro-icon-size);width:var(--ds-auro-icon-size)}.svgWrapper [part=svg]{display:flex}.labelWrapper{margin-left:var(--ds-size-50, .25rem)}.labelWrapper ::slotted(*){line-height:inherit!important}
|
|
2633
|
-
`;class z extends m{constructor(){super(),this.onDark=false,this.appearance="default";}static get properties(){return {...m.properties,onDark:{type:Boolean,reflect:true},appearance:{type:String,reflect:true},svg:{attribute:false,reflect:true}}}static get styles(){return w}async fetchIcon(t,a){let e="";e="logos"===t?await f(`${this.uri}/${t}/${a}.svg`):await f(`${this.uri}/icons/${t}/${a}.svg`);return (new DOMParser).parseFromString(e,"text/html").body.querySelector("svg")}async firstUpdated(){try{if(!this.customSvg){const t=await this.fetchIcon(this.category,this.name);if(t)this.svg=t;else if(!t){const t=(new DOMParser).parseFromString(u,"text/html");this.svg=t.body.firstChild;}}}catch(t){this.svg=void 0;}}}css`.util_displayInline{display:inline}.util_displayInlineBlock{display:inline-block}.util_displayBlock,:host{display:block}.util_displayFlex{display:flex}.util_displayHidden,:host([hidden]:not(:focus):not(:active)){display:none}.util_displayHiddenVisually,:host([hiddenVisually]:not(:focus):not(:active)){position:absolute;overflow:hidden;clip:rect(1px,1px,1px,1px);width:1px;height:1px;padding:0;border:0}:host{display:inline-block;--ds-auro-icon-size: 100%;width:100%;height:100%}:host .logo{color:var(--ds-auro-alaska-color)}:host([onDark]),:host([appearance=inverse]){--ds-auro-alaska-color: #FFF}
|
|
2792
|
+
class p{registerComponent(t,a){customElements.get(t)||customElements.define(t,class extends a{});}closestElement(t,a=this,e=(a,s=a&&a.closest(t))=>a&&a!==document&&a!==window?s||e(a.getRootNode().host):null){return e(a)}handleComponentTagRename(t,a){const e=a.toLowerCase();t.tagName.toLowerCase()!==e&&t.setAttribute(e,true);}elementMatch(t,a){const e=a.toLowerCase();return t.tagName.toLowerCase()===e||t.hasAttribute(e)}getSlotText(t,a){const e=t.shadowRoot?.querySelector(`slot[name="${a}"]`);return (e?.assignedNodes({flatten:true})||[]).map(t=>t.textContent?.trim()).join(" ").trim()||null}}var u='<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-labelledby="error__desc" class="ico_squareLarge" data-deprecated="true" role="img" style="min-width:var(--auro-size-lg, var(--ds-size-300, 1.5rem));height:var(--auro-size-lg, var(--ds-size-300, 1.5rem));fill:currentColor" viewBox="0 0 24 24" part="svg"><title/><desc id="error__desc">Error alert indicator.</desc><path d="m13.047 5.599 6.786 11.586A1.207 1.207 0 0 1 18.786 19H5.214a1.207 1.207 0 0 1-1.047-1.815l6.786-11.586a1.214 1.214 0 0 1 2.094 0m-1.165.87a.23.23 0 0 0-.085.085L5.419 17.442a.232.232 0 0 0 .203.35h12.756a.234.234 0 0 0 .203-.35L12.203 6.554a.236.236 0 0 0-.321-.084M12 15.5a.75.75 0 1 1 0 1.5.75.75 0 0 1 0-1.5m-.024-6.22c.325 0 .589.261.589.583v4.434a.586.586 0 0 1-.589.583.586.586 0 0 1-.588-.583V9.863c0-.322.264-.583.588-.583"/></svg>';class m extends LitElement{static get properties(){return {hidden:{type:Boolean,reflect:true},hiddenVisually:{type:Boolean,reflect:true},hiddenAudible:{type:Boolean,reflect:true}}}hideAudible(t){return t?"true":"false"}}const g=new Map,f=(t,a={})=>{const e=a.responseParser||(t=>t.text());return g.has(t)||g.set(t,fetch(t).then(e)),g.get(t)};var w=css`:focus:not(:focus-visible){outline:3px solid transparent}.util_displayInline{display:inline}.util_displayInlineBlock{display:inline-block}.util_displayBlock,:host{display:block}.util_displayFlex{display:flex}.util_displayHidden,:host([hidden]:not(:focus):not(:active)){display:none}.util_displayHiddenVisually,:host([hiddenVisually]:not(:focus):not(:active)){position:absolute;overflow:hidden;clip:rect(1px,1px,1px,1px);width:1px;height:1px;padding:0;border:0}.ico_squareLarge{fill:currentColor;height:var(--auro-size-lg, var(--ds-size-300, 1.5rem))}.ico_squareSmall{fill:currentColor;height:.6rem}.ico_squareMed{fill:currentColor;height:var(--auro-size-md, var(--ds-size-200, 1rem))}.ico_squareSml{fill:currentColor;height:var(--auro-size-sm, var(--ds-size-150, .75rem))}:host{color:currentColor;vertical-align:middle;display:inline-block}svg{min-width:var(--ds-auro-icon-size, 1.5rem)!important;width:var(--ds-auro-icon-size, 1.5rem)!important;height:var(--ds-auro-icon-size, 1.5rem)!important}.componentWrapper{display:flex;line-height:var(--ds-auro-icon-size)}.svgWrapper{height:var(--ds-auro-icon-size);width:var(--ds-auro-icon-size)}.svgWrapper [part=svg]{display:flex}.labelWrapper{margin-left:var(--ds-size-50, .25rem)}.labelWrapper ::slotted(*){line-height:inherit!important}
|
|
2793
|
+
`;class z extends m{constructor(){super(),this._initializeDefaults();}_initializeDefaults(){this.onDark=false,this.appearance="default";}static get properties(){return {...m.properties,onDark:{type:Boolean,reflect:true},appearance:{type:String,reflect:true},svg:{attribute:false,reflect:true}}}static get styles(){return w}async fetchIcon(t,a){let e="";e="logos"===t?await f(`${this.uri}/${t}/${a}.svg`):await f(`${this.uri}/icons/${t}/${a}.svg`);return (new DOMParser).parseFromString(e,"text/html").body.querySelector("svg")}async firstUpdated(){try{if(!this.customSvg){const t=await this.fetchIcon(this.category,this.name);if(t)this.svg=t;else if(!t){const t=(new DOMParser).parseFromString(u,"text/html");this.svg=t.body.firstChild;}}}catch(t){this.svg=void 0;}}}css`.util_displayInline{display:inline}.util_displayInlineBlock{display:inline-block}.util_displayBlock,:host{display:block}.util_displayFlex{display:flex}.util_displayHidden,:host([hidden]:not(:focus):not(:active)){display:none}.util_displayHiddenVisually,:host([hiddenVisually]:not(:focus):not(:active)){position:absolute;overflow:hidden;clip:rect(1px,1px,1px,1px);width:1px;height:1px;padding:0;border:0}:host{display:inline-block;--ds-auro-icon-size: 100%;width:100%;height:100%}:host .logo{color:var(--ds-auro-alaska-color)}:host([onDark]),:host([appearance=inverse]){--ds-auro-alaska-color: #FFF}
|
|
2634
2794
|
`;var y=css`:host{--ds-auro-icon-color: var(--ds-basic-color-texticon-default, #2a2a2a);--ds-auro-alaska-color: #02426D;--ds-auro-icon-size: var(--ds-size-300, 1.5rem)}
|
|
2635
|
-
`;var
|
|
2636
|
-
`;class
|
|
2795
|
+
`;var x=css`:host{color:var(--ds-auro-icon-color)}:host([customColor]){color:inherit}:host(:not([onDark])[variant=accent1]),:host(:not([appearance=inverse])[variant=accent1]){--ds-auro-icon-color: var(--ds-basic-color-texticon-accent1, #265688)}:host(:not([onDark])[variant=disabled]),:host(:not([appearance=inverse])[variant=disabled]){--ds-auro-icon-color: var(--ds-basic-color-texticon-disabled, #d0d0d0)}:host(:not([onDark])[variant=muted]),:host(:not([appearance=inverse])[variant=muted]){--ds-auro-icon-color: var(--ds-basic-color-texticon-muted, #676767)}:host(:not([onDark])[variant=statusDefault]),:host(:not([appearance=inverse])[variant=statusDefault]){--ds-auro-icon-color: var(--ds-basic-color-status-default, #afb9c6)}:host(:not([onDark])[variant=statusInfo]),:host(:not([appearance=inverse])[variant=statusInfo]){--ds-auro-icon-color: var(--ds-basic-color-status-info, #01426a)}:host(:not([onDark])[variant=statusSuccess]),:host(:not([appearance=inverse])[variant=statusSuccess]){--ds-auro-icon-color: var(--ds-basic-color-status-success, #447a1f)}:host(:not([onDark])[variant=statusWarning]),:host(:not([appearance=inverse])[variant=statusWarning]){--ds-auro-icon-color: var(--ds-basic-color-status-warning, #fac200)}:host(:not([onDark])[variant=statusError]),:host(:not([appearance=inverse])[variant=statusError]){--ds-auro-icon-color: var(--ds-basic-color-status-error, #e31f26)}:host(:not([onDark])[variant=statusInfoSubtle]),:host(:not([appearance=inverse])[variant=statusInfoSubtle]){--ds-auro-icon-color: var(--ds-basic-color-status-info-subtle, #ebf3f9)}:host(:not([onDark])[variant=statusSuccessSubtle]),:host(:not([appearance=inverse])[variant=statusSuccessSubtle]){--ds-auro-icon-color: var(--ds-basic-color-status-success-subtle, #d6eac7)}:host(:not([onDark])[variant=statusWarningSubtle]),:host(:not([appearance=inverse])[variant=statusWarningSubtle]){--ds-auro-icon-color: var(--ds-basic-color-status-warning-subtle, #fff0b2)}:host(:not([onDark])[variant=statusErrorSubtle]),:host(:not([appearance=inverse])[variant=statusErrorSubtle]){--ds-auro-icon-color: var(--ds-basic-color-status-error-subtle, #fbc6c6)}:host(:not([onDark])[variant=fareBasicEconomy]),:host(:not([appearance=inverse])[variant=fareBasicEconomy]){--ds-auro-icon-color: var(--ds-basic-color-fare-basiceconomy, #97eaf8)}:host(:not([onDark])[variant=fareBusiness]),:host(:not([appearance=inverse])[variant=fareBusiness]){--ds-auro-icon-color: var(--ds-basic-color-fare-business, #01426a)}:host(:not([onDark])[variant=fareEconomy]),:host(:not([appearance=inverse])[variant=fareEconomy]){--ds-auro-icon-color: var(--ds-basic-color-fare-economy, #0074ca)}:host(:not([onDark])[variant=fareFirst]),:host(:not([appearance=inverse])[variant=fareFirst]){--ds-auro-icon-color: var(--ds-basic-color-fare-first, #00274a)}:host(:not([onDark])[variant=farePremiumEconomy]),:host(:not([appearance=inverse])[variant=farePremiumEconomy]){--ds-auro-icon-color: var(--ds-basic-color-fare-premiumeconomy, #005154)}:host(:not([onDark])[variant=tierOneWorldEmerald]),:host(:not([appearance=inverse])[variant=tierOneWorldEmerald]){--ds-auro-icon-color: var(--ds-basic-color-tier-program-oneworld-emerald, #139142)}:host(:not([onDark])[variant=tierOneWorldSapphire]),:host(:not([appearance=inverse])[variant=tierOneWorldSapphire]){--ds-auro-icon-color: var(--ds-basic-color-tier-program-oneworld-sapphire, #015daa)}:host(:not([onDark])[variant=tierOneWorldRuby]),:host(:not([appearance=inverse])[variant=tierOneWorldRuby]){--ds-auro-icon-color: var(--ds-basic-color-tier-program-oneworld-ruby, #a41d4a)}:host([onDark]),:host([appearance=inverse]){--ds-auro-icon-color: var(--ds-basic-color-texticon-inverse, #ffffff)}:host([onDark][variant=disabled]),:host([appearance=inverse][variant=disabled]){--ds-auro-icon-color: var(--ds-basic-color-texticon-inverse-disabled, #7e8894)}:host([onDark][variant=muted]),:host([appearance=inverse][variant=muted]){--ds-auro-icon-color: var(--ds-basic-color-texticon-inverse-muted, #ccd2db)}:host([onDark][variant=statusError]),:host([appearance=inverse][variant=statusError]){--ds-auro-icon-color: var(--ds-advanced-color-state-error-inverse, #f9a4a8)}
|
|
2796
|
+
`;class _ extends z{constructor(){super(),this._initializeDefaults();}_initializeDefaults(){this.variant=void 0,this.uri="https://cdn.jsdelivr.net/npm/@alaskaairux/icons@latest/dist",this.runtimeUtils=new p;}static get properties(){return {...z.properties,ariaHidden:{type:String,reflect:true},category:{type:String,reflect:true},customColor:{type:Boolean,reflect:true},customSvg:{type:Boolean},label:{type:Boolean,reflect:true},name:{type:String,reflect:true},variant:{type:String,reflect:true}}}static get styles(){return [z.styles,y,w,x]}static register(t="auro-icon"){p.prototype.registerComponent(t,_);}connectedCallback(){super.connectedCallback(),this.runtimeUtils.handleComponentTagRename(this,"auro-icon");}exposeCssParts(){this.setAttribute("exportparts","svg:iconSvg");}async firstUpdated(){if(await super.firstUpdated(),this.hasAttribute("ariaHidden")&&this.svg){const t=this.svg.querySelector("desc");t&&(t.remove(),this.svg.removeAttribute("aria-labelledby"));}}render(){const t={labelWrapper:true,util_displayHiddenVisually:!this.label};return html`
|
|
2637
2797
|
<div class="componentWrapper">
|
|
2638
2798
|
<div
|
|
2639
2799
|
class="${classMap({svgWrapper:true})}"
|
|
@@ -2653,7 +2813,7 @@ class p{registerComponent(t,a){customElements.get(t)||customElements.define(t,cl
|
|
|
2653
2813
|
</div>
|
|
2654
2814
|
`}}
|
|
2655
2815
|
|
|
2656
|
-
var iconVersion = '9.1.
|
|
2816
|
+
var iconVersion = '9.1.2';
|
|
2657
2817
|
|
|
2658
2818
|
var styleCss$2 = css`:host{position:fixed;z-index:var(--depth-tooltip, 400);display:none;isolation:isolate}:host(:not([matchWidth])) .container{min-width:fit-content}:host([isfullscreen]){position:fixed;top:0;left:0}:host([isfullscreen]) .container{width:100dvw;max-width:none;height:100dvh;max-height:none;border-radius:unset;margin-top:0;box-shadow:unset;overscroll-behavior:contain}:host([data-show]){display:flex}:host([common]:not([isfullscreen])) .container,:host([rounded]:not([isfullscreen])) .container{border-radius:var(--ds-border-radius, 0.375rem)}:host([common][isfullscreen]) .container,:host([rounded][isfullscreen]) .container{border-radius:unset;box-shadow:unset}:host(:not([isfullscreen])) .container.shape-box{border-radius:unset}:host(:not([isfullscreen])) .container[class*=shape-pill],:host(:not([isfullscreen])) .container[class*=shape-snowflake]{border-radius:30px}:host(:not([isfullscreen])) .container[class*=shape-rounded]{border-radius:16px}.container{display:inline-block;overflow:auto;box-sizing:border-box;border-radius:var(--ds-border-radius, 0.375rem);margin:var(--ds-size-50, 0.25rem) 0}`;
|
|
2659
2819
|
|
|
@@ -3094,7 +3254,7 @@ class AuroHelpText extends LitElement {
|
|
|
3094
3254
|
}
|
|
3095
3255
|
}
|
|
3096
3256
|
|
|
3097
|
-
var formkitVersion = '
|
|
3257
|
+
var formkitVersion = '202602140013';
|
|
3098
3258
|
|
|
3099
3259
|
class AuroElement extends LitElement {
|
|
3100
3260
|
static get properties() {
|
|
@@ -3322,7 +3482,7 @@ class AuroDropdown extends AuroElement {
|
|
|
3322
3482
|
/**
|
|
3323
3483
|
* @private
|
|
3324
3484
|
*/
|
|
3325
|
-
this.iconTag = versioning.generateTag('auro-formkit-dropdown-icon', iconVersion,
|
|
3485
|
+
this.iconTag = versioning.generateTag('auro-formkit-dropdown-icon', iconVersion, _);
|
|
3326
3486
|
|
|
3327
3487
|
/**
|
|
3328
3488
|
* @private
|
|
@@ -3389,7 +3549,7 @@ class AuroDropdown extends AuroElement {
|
|
|
3389
3549
|
* The value for the role attribute of the trigger element.
|
|
3390
3550
|
*/
|
|
3391
3551
|
a11yRole: {
|
|
3392
|
-
type: String
|
|
3552
|
+
type: String,
|
|
3393
3553
|
attribute: false,
|
|
3394
3554
|
reflect: false
|
|
3395
3555
|
},
|