@aurodesignsystem-dev/auro-formkit 0.0.0-pr1595.4 → 0.0.0-pr1595.5

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.
Files changed (43) hide show
  1. package/components/checkbox/demo/customize.min.js +1 -1
  2. package/components/checkbox/demo/getting-started.min.js +1 -1
  3. package/components/checkbox/demo/index.min.js +1 -1
  4. package/components/checkbox/dist/index.js +1 -1
  5. package/components/checkbox/dist/registered.js +1 -1
  6. package/components/combobox/demo/customize.min.js +67 -7
  7. package/components/combobox/demo/getting-started.min.js +67 -7
  8. package/components/combobox/demo/index.min.js +67 -7
  9. package/components/combobox/dist/index.js +67 -7
  10. package/components/combobox/dist/registered.js +67 -7
  11. package/components/counter/demo/customize.min.js +66 -6
  12. package/components/counter/demo/index.min.js +66 -6
  13. package/components/counter/dist/index.js +66 -6
  14. package/components/counter/dist/registered.js +66 -6
  15. package/components/datepicker/demo/customize.min.js +67 -7
  16. package/components/datepicker/demo/index.min.js +67 -7
  17. package/components/datepicker/dist/index.js +67 -7
  18. package/components/datepicker/dist/registered.js +67 -7
  19. package/components/dropdown/demo/customize.min.js +65 -5
  20. package/components/dropdown/demo/getting-started.min.js +66 -6
  21. package/components/dropdown/demo/index.min.js +65 -5
  22. package/components/dropdown/dist/index.js +65 -5
  23. package/components/dropdown/dist/registered.js +65 -5
  24. package/components/form/demo/customize.min.js +269 -29
  25. package/components/form/demo/getting-started.min.js +269 -29
  26. package/components/form/demo/index.min.js +269 -29
  27. package/components/form/demo/registerDemoDeps.min.js +269 -29
  28. package/components/input/demo/customize.min.js +1 -1
  29. package/components/input/demo/getting-started.min.js +1 -1
  30. package/components/input/demo/index.min.js +1 -1
  31. package/components/input/dist/index.js +1 -1
  32. package/components/input/dist/registered.js +1 -1
  33. package/components/radio/demo/customize.min.js +1 -1
  34. package/components/radio/demo/getting-started.min.js +1 -1
  35. package/components/radio/demo/index.min.js +1 -1
  36. package/components/radio/dist/index.js +1 -1
  37. package/components/radio/dist/registered.js +1 -1
  38. package/components/select/demo/customize.min.js +66 -6
  39. package/components/select/demo/getting-started.min.js +66 -6
  40. package/components/select/demo/index.min.js +66 -6
  41. package/components/select/dist/index.js +66 -6
  42. package/components/select/dist/registered.js +66 -6
  43. package/package.json +2 -2
@@ -2108,15 +2108,57 @@ class AuroFloatingUI {
2108
2108
  document.body.style.top = `-${this._savedScrollY}px`;
2109
2109
  document.body.style.width = "100%";
2110
2110
 
2111
- // Move `bib` by the amount the viewport is shifted to stay aligned in fullscreen.
2112
- if (element?.bib && window?.visualViewport?.offsetTop) {
2113
- element.bib.style.transform = `translateY(${window?.visualViewport?.offsetTop}px)`;
2111
+ // Keep the bib aligned with the visual viewport as the VKB opens.
2112
+ // A one-shot offsetTop check at lock time is stale by the time the user
2113
+ // taps an input mid-drawer — iOS then pans visualViewport upward and the
2114
+ // bib drifts off-screen. Listen continuously so the transform tracks the pan.
2115
+ // RAF-throttled to avoid a style recalc on every scroll tick during the
2116
+ // keyboard animation; the pending frame is canceled on unlock so it cannot
2117
+ // reapply a translate after bibTransform has been restored.
2118
+ if (window.visualViewport) {
2119
+ this._viewportRafId = undefined;
2120
+ this._viewportHandler = () => {
2121
+ if (this._viewportRafId !== undefined) {
2122
+ return;
2123
+ }
2124
+ this._viewportRafId = requestAnimationFrame(() => {
2125
+ this._viewportRafId = undefined;
2126
+ if (element?.bib) {
2127
+ element.bib.style.transform = `translateY(${window.visualViewport.offsetTop}px)`;
2128
+ }
2129
+ });
2130
+ };
2131
+ window.visualViewport.addEventListener(
2132
+ "resize",
2133
+ this._viewportHandler,
2134
+ );
2135
+ window.visualViewport.addEventListener(
2136
+ "scroll",
2137
+ this._viewportHandler,
2138
+ );
2139
+ this._viewportHandler();
2114
2140
  }
2115
2141
 
2116
2142
  this.lockTouchScroll(true);
2117
2143
  }
2118
2144
  } else {
2119
2145
  if (this._scrollLocked) {
2146
+ if (this._viewportHandler && window.visualViewport) {
2147
+ window.visualViewport.removeEventListener(
2148
+ "resize",
2149
+ this._viewportHandler,
2150
+ );
2151
+ window.visualViewport.removeEventListener(
2152
+ "scroll",
2153
+ this._viewportHandler,
2154
+ );
2155
+ this._viewportHandler = undefined;
2156
+ }
2157
+ if (this._viewportRafId !== undefined) {
2158
+ cancelAnimationFrame(this._viewportRafId);
2159
+ this._viewportRafId = undefined;
2160
+ }
2161
+
2120
2162
  document.documentElement.style.scrollbarGutter =
2121
2163
  this._savedScrollStyles?.rootScrollbarGutter ?? "";
2122
2164
  document.documentElement.style.overflow =
@@ -2208,7 +2250,7 @@ class AuroFloatingUI {
2208
2250
  bibContent.style.width = "";
2209
2251
  bibContent.style.height = "";
2210
2252
  bibContent.style.maxWidth = "";
2211
- bibContent.style.maxHeight = `${window?.visualViewport?.height}px`;
2253
+ bibContent.style.maxHeight = "";
2212
2254
  this.configureTrial = 0;
2213
2255
  } else if (this.configureTrial < MAX_CONFIGURATION_COUNT) {
2214
2256
  this.configureTrial += 1;
@@ -2505,6 +2547,24 @@ class AuroFloatingUI {
2505
2547
  if (!this.showing) {
2506
2548
  if (!element.modal) {
2507
2549
  this.setupHideHandlers();
2550
+ } else {
2551
+ if (this.keyDownHandler) {
2552
+ document.removeEventListener("keydown", this.keyDownHandler);
2553
+ }
2554
+ this.keyDownHandler = (evt) => {
2555
+ if (evt.key === "Escape" && element.isPopoverVisible) {
2556
+ // Intercept at keydown so CloseWatcher never sees the keystroke.
2557
+ // Canceling `cancel` alone is insufficient — a second Esc with no
2558
+ // intervening user activation triggers the anti-trap and fires `close`
2559
+ // directly, bypassing any `cancel` preventDefault (AB#1613688).
2560
+ // stopImmediatePropagation is intentional: it prevents other document
2561
+ // keydown handlers (e.g. consumer code, auro-dialog) from also acting
2562
+ // on Escape while the modal owns the key.
2563
+ evt.preventDefault();
2564
+ evt.stopImmediatePropagation();
2565
+ }
2566
+ };
2567
+ document.addEventListener("keydown", this.keyDownHandler);
2508
2568
  }
2509
2569
  this.showing = true;
2510
2570
  element.isPopoverVisible = true;
@@ -3809,7 +3869,7 @@ let AuroHelpText$1 = class AuroHelpText extends i {
3809
3869
  }
3810
3870
  };
3811
3871
 
3812
- var formkitVersion$1 = '202608300149';
3872
+ var formkitVersion$1 = '202608300227';
3813
3873
 
3814
3874
  /**
3815
3875
  * AuroElement is the shared base class for layout-aware Auro form components.
@@ -17678,7 +17738,7 @@ class AuroHelpText extends i {
17678
17738
  }
17679
17739
  }
17680
17740
 
17681
- var formkitVersion = '202608300149';
17741
+ var formkitVersion = '202608300227';
17682
17742
 
17683
17743
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
17684
17744
  // See LICENSE in the project root for license information.
@@ -2135,15 +2135,57 @@ class AuroFloatingUI {
2135
2135
  document.body.style.top = `-${this._savedScrollY}px`;
2136
2136
  document.body.style.width = "100%";
2137
2137
 
2138
- // Move `bib` by the amount the viewport is shifted to stay aligned in fullscreen.
2139
- if (element?.bib && window?.visualViewport?.offsetTop) {
2140
- element.bib.style.transform = `translateY(${window?.visualViewport?.offsetTop}px)`;
2138
+ // Keep the bib aligned with the visual viewport as the VKB opens.
2139
+ // A one-shot offsetTop check at lock time is stale by the time the user
2140
+ // taps an input mid-drawer — iOS then pans visualViewport upward and the
2141
+ // bib drifts off-screen. Listen continuously so the transform tracks the pan.
2142
+ // RAF-throttled to avoid a style recalc on every scroll tick during the
2143
+ // keyboard animation; the pending frame is canceled on unlock so it cannot
2144
+ // reapply a translate after bibTransform has been restored.
2145
+ if (window.visualViewport) {
2146
+ this._viewportRafId = undefined;
2147
+ this._viewportHandler = () => {
2148
+ if (this._viewportRafId !== undefined) {
2149
+ return;
2150
+ }
2151
+ this._viewportRafId = requestAnimationFrame(() => {
2152
+ this._viewportRafId = undefined;
2153
+ if (element?.bib) {
2154
+ element.bib.style.transform = `translateY(${window.visualViewport.offsetTop}px)`;
2155
+ }
2156
+ });
2157
+ };
2158
+ window.visualViewport.addEventListener(
2159
+ "resize",
2160
+ this._viewportHandler,
2161
+ );
2162
+ window.visualViewport.addEventListener(
2163
+ "scroll",
2164
+ this._viewportHandler,
2165
+ );
2166
+ this._viewportHandler();
2141
2167
  }
2142
2168
 
2143
2169
  this.lockTouchScroll(true);
2144
2170
  }
2145
2171
  } else {
2146
2172
  if (this._scrollLocked) {
2173
+ if (this._viewportHandler && window.visualViewport) {
2174
+ window.visualViewport.removeEventListener(
2175
+ "resize",
2176
+ this._viewportHandler,
2177
+ );
2178
+ window.visualViewport.removeEventListener(
2179
+ "scroll",
2180
+ this._viewportHandler,
2181
+ );
2182
+ this._viewportHandler = undefined;
2183
+ }
2184
+ if (this._viewportRafId !== undefined) {
2185
+ cancelAnimationFrame(this._viewportRafId);
2186
+ this._viewportRafId = undefined;
2187
+ }
2188
+
2147
2189
  document.documentElement.style.scrollbarGutter =
2148
2190
  this._savedScrollStyles?.rootScrollbarGutter ?? "";
2149
2191
  document.documentElement.style.overflow =
@@ -2235,7 +2277,7 @@ class AuroFloatingUI {
2235
2277
  bibContent.style.width = "";
2236
2278
  bibContent.style.height = "";
2237
2279
  bibContent.style.maxWidth = "";
2238
- bibContent.style.maxHeight = `${window?.visualViewport?.height}px`;
2280
+ bibContent.style.maxHeight = "";
2239
2281
  this.configureTrial = 0;
2240
2282
  } else if (this.configureTrial < MAX_CONFIGURATION_COUNT) {
2241
2283
  this.configureTrial += 1;
@@ -2532,6 +2574,24 @@ class AuroFloatingUI {
2532
2574
  if (!this.showing) {
2533
2575
  if (!element.modal) {
2534
2576
  this.setupHideHandlers();
2577
+ } else {
2578
+ if (this.keyDownHandler) {
2579
+ document.removeEventListener("keydown", this.keyDownHandler);
2580
+ }
2581
+ this.keyDownHandler = (evt) => {
2582
+ if (evt.key === "Escape" && element.isPopoverVisible) {
2583
+ // Intercept at keydown so CloseWatcher never sees the keystroke.
2584
+ // Canceling `cancel` alone is insufficient — a second Esc with no
2585
+ // intervening user activation triggers the anti-trap and fires `close`
2586
+ // directly, bypassing any `cancel` preventDefault (AB#1613688).
2587
+ // stopImmediatePropagation is intentional: it prevents other document
2588
+ // keydown handlers (e.g. consumer code, auro-dialog) from also acting
2589
+ // on Escape while the modal owns the key.
2590
+ evt.preventDefault();
2591
+ evt.stopImmediatePropagation();
2592
+ }
2593
+ };
2594
+ document.addEventListener("keydown", this.keyDownHandler);
2535
2595
  }
2536
2596
  this.showing = true;
2537
2597
  element.isPopoverVisible = true;
@@ -3836,7 +3896,7 @@ class AuroHelpText extends i {
3836
3896
  }
3837
3897
  }
3838
3898
 
3839
- var formkitVersion = '202608300149';
3899
+ var formkitVersion = '202608300227';
3840
3900
 
3841
3901
  /**
3842
3902
  * AuroElement is the shared base class for layout-aware Auro form components.
@@ -2071,15 +2071,57 @@ class AuroFloatingUI {
2071
2071
  document.body.style.top = `-${this._savedScrollY}px`;
2072
2072
  document.body.style.width = "100%";
2073
2073
 
2074
- // Move `bib` by the amount the viewport is shifted to stay aligned in fullscreen.
2075
- if (element?.bib && window?.visualViewport?.offsetTop) {
2076
- element.bib.style.transform = `translateY(${window?.visualViewport?.offsetTop}px)`;
2074
+ // Keep the bib aligned with the visual viewport as the VKB opens.
2075
+ // A one-shot offsetTop check at lock time is stale by the time the user
2076
+ // taps an input mid-drawer — iOS then pans visualViewport upward and the
2077
+ // bib drifts off-screen. Listen continuously so the transform tracks the pan.
2078
+ // RAF-throttled to avoid a style recalc on every scroll tick during the
2079
+ // keyboard animation; the pending frame is canceled on unlock so it cannot
2080
+ // reapply a translate after bibTransform has been restored.
2081
+ if (window.visualViewport) {
2082
+ this._viewportRafId = undefined;
2083
+ this._viewportHandler = () => {
2084
+ if (this._viewportRafId !== undefined) {
2085
+ return;
2086
+ }
2087
+ this._viewportRafId = requestAnimationFrame(() => {
2088
+ this._viewportRafId = undefined;
2089
+ if (element?.bib) {
2090
+ element.bib.style.transform = `translateY(${window.visualViewport.offsetTop}px)`;
2091
+ }
2092
+ });
2093
+ };
2094
+ window.visualViewport.addEventListener(
2095
+ "resize",
2096
+ this._viewportHandler,
2097
+ );
2098
+ window.visualViewport.addEventListener(
2099
+ "scroll",
2100
+ this._viewportHandler,
2101
+ );
2102
+ this._viewportHandler();
2077
2103
  }
2078
2104
 
2079
2105
  this.lockTouchScroll(true);
2080
2106
  }
2081
2107
  } else {
2082
2108
  if (this._scrollLocked) {
2109
+ if (this._viewportHandler && window.visualViewport) {
2110
+ window.visualViewport.removeEventListener(
2111
+ "resize",
2112
+ this._viewportHandler,
2113
+ );
2114
+ window.visualViewport.removeEventListener(
2115
+ "scroll",
2116
+ this._viewportHandler,
2117
+ );
2118
+ this._viewportHandler = undefined;
2119
+ }
2120
+ if (this._viewportRafId !== undefined) {
2121
+ cancelAnimationFrame(this._viewportRafId);
2122
+ this._viewportRafId = undefined;
2123
+ }
2124
+
2083
2125
  document.documentElement.style.scrollbarGutter =
2084
2126
  this._savedScrollStyles?.rootScrollbarGutter ?? "";
2085
2127
  document.documentElement.style.overflow =
@@ -2171,7 +2213,7 @@ class AuroFloatingUI {
2171
2213
  bibContent.style.width = "";
2172
2214
  bibContent.style.height = "";
2173
2215
  bibContent.style.maxWidth = "";
2174
- bibContent.style.maxHeight = `${window?.visualViewport?.height}px`;
2216
+ bibContent.style.maxHeight = "";
2175
2217
  this.configureTrial = 0;
2176
2218
  } else if (this.configureTrial < MAX_CONFIGURATION_COUNT) {
2177
2219
  this.configureTrial += 1;
@@ -2468,6 +2510,24 @@ class AuroFloatingUI {
2468
2510
  if (!this.showing) {
2469
2511
  if (!element.modal) {
2470
2512
  this.setupHideHandlers();
2513
+ } else {
2514
+ if (this.keyDownHandler) {
2515
+ document.removeEventListener("keydown", this.keyDownHandler);
2516
+ }
2517
+ this.keyDownHandler = (evt) => {
2518
+ if (evt.key === "Escape" && element.isPopoverVisible) {
2519
+ // Intercept at keydown so CloseWatcher never sees the keystroke.
2520
+ // Canceling `cancel` alone is insufficient — a second Esc with no
2521
+ // intervening user activation triggers the anti-trap and fires `close`
2522
+ // directly, bypassing any `cancel` preventDefault (AB#1613688).
2523
+ // stopImmediatePropagation is intentional: it prevents other document
2524
+ // keydown handlers (e.g. consumer code, auro-dialog) from also acting
2525
+ // on Escape while the modal owns the key.
2526
+ evt.preventDefault();
2527
+ evt.stopImmediatePropagation();
2528
+ }
2529
+ };
2530
+ document.addEventListener("keydown", this.keyDownHandler);
2471
2531
  }
2472
2532
  this.showing = true;
2473
2533
  element.isPopoverVisible = true;
@@ -3741,7 +3801,7 @@ class AuroHelpText extends LitElement {
3741
3801
  }
3742
3802
  }
3743
3803
 
3744
- var formkitVersion = '202608300149';
3804
+ var formkitVersion = '202608300227';
3745
3805
 
3746
3806
  /**
3747
3807
  * AuroElement is the shared base class for layout-aware Auro form components.
@@ -2071,15 +2071,57 @@ class AuroFloatingUI {
2071
2071
  document.body.style.top = `-${this._savedScrollY}px`;
2072
2072
  document.body.style.width = "100%";
2073
2073
 
2074
- // Move `bib` by the amount the viewport is shifted to stay aligned in fullscreen.
2075
- if (element?.bib && window?.visualViewport?.offsetTop) {
2076
- element.bib.style.transform = `translateY(${window?.visualViewport?.offsetTop}px)`;
2074
+ // Keep the bib aligned with the visual viewport as the VKB opens.
2075
+ // A one-shot offsetTop check at lock time is stale by the time the user
2076
+ // taps an input mid-drawer — iOS then pans visualViewport upward and the
2077
+ // bib drifts off-screen. Listen continuously so the transform tracks the pan.
2078
+ // RAF-throttled to avoid a style recalc on every scroll tick during the
2079
+ // keyboard animation; the pending frame is canceled on unlock so it cannot
2080
+ // reapply a translate after bibTransform has been restored.
2081
+ if (window.visualViewport) {
2082
+ this._viewportRafId = undefined;
2083
+ this._viewportHandler = () => {
2084
+ if (this._viewportRafId !== undefined) {
2085
+ return;
2086
+ }
2087
+ this._viewportRafId = requestAnimationFrame(() => {
2088
+ this._viewportRafId = undefined;
2089
+ if (element?.bib) {
2090
+ element.bib.style.transform = `translateY(${window.visualViewport.offsetTop}px)`;
2091
+ }
2092
+ });
2093
+ };
2094
+ window.visualViewport.addEventListener(
2095
+ "resize",
2096
+ this._viewportHandler,
2097
+ );
2098
+ window.visualViewport.addEventListener(
2099
+ "scroll",
2100
+ this._viewportHandler,
2101
+ );
2102
+ this._viewportHandler();
2077
2103
  }
2078
2104
 
2079
2105
  this.lockTouchScroll(true);
2080
2106
  }
2081
2107
  } else {
2082
2108
  if (this._scrollLocked) {
2109
+ if (this._viewportHandler && window.visualViewport) {
2110
+ window.visualViewport.removeEventListener(
2111
+ "resize",
2112
+ this._viewportHandler,
2113
+ );
2114
+ window.visualViewport.removeEventListener(
2115
+ "scroll",
2116
+ this._viewportHandler,
2117
+ );
2118
+ this._viewportHandler = undefined;
2119
+ }
2120
+ if (this._viewportRafId !== undefined) {
2121
+ cancelAnimationFrame(this._viewportRafId);
2122
+ this._viewportRafId = undefined;
2123
+ }
2124
+
2083
2125
  document.documentElement.style.scrollbarGutter =
2084
2126
  this._savedScrollStyles?.rootScrollbarGutter ?? "";
2085
2127
  document.documentElement.style.overflow =
@@ -2171,7 +2213,7 @@ class AuroFloatingUI {
2171
2213
  bibContent.style.width = "";
2172
2214
  bibContent.style.height = "";
2173
2215
  bibContent.style.maxWidth = "";
2174
- bibContent.style.maxHeight = `${window?.visualViewport?.height}px`;
2216
+ bibContent.style.maxHeight = "";
2175
2217
  this.configureTrial = 0;
2176
2218
  } else if (this.configureTrial < MAX_CONFIGURATION_COUNT) {
2177
2219
  this.configureTrial += 1;
@@ -2468,6 +2510,24 @@ class AuroFloatingUI {
2468
2510
  if (!this.showing) {
2469
2511
  if (!element.modal) {
2470
2512
  this.setupHideHandlers();
2513
+ } else {
2514
+ if (this.keyDownHandler) {
2515
+ document.removeEventListener("keydown", this.keyDownHandler);
2516
+ }
2517
+ this.keyDownHandler = (evt) => {
2518
+ if (evt.key === "Escape" && element.isPopoverVisible) {
2519
+ // Intercept at keydown so CloseWatcher never sees the keystroke.
2520
+ // Canceling `cancel` alone is insufficient — a second Esc with no
2521
+ // intervening user activation triggers the anti-trap and fires `close`
2522
+ // directly, bypassing any `cancel` preventDefault (AB#1613688).
2523
+ // stopImmediatePropagation is intentional: it prevents other document
2524
+ // keydown handlers (e.g. consumer code, auro-dialog) from also acting
2525
+ // on Escape while the modal owns the key.
2526
+ evt.preventDefault();
2527
+ evt.stopImmediatePropagation();
2528
+ }
2529
+ };
2530
+ document.addEventListener("keydown", this.keyDownHandler);
2471
2531
  }
2472
2532
  this.showing = true;
2473
2533
  element.isPopoverVisible = true;
@@ -3741,7 +3801,7 @@ class AuroHelpText extends LitElement {
3741
3801
  }
3742
3802
  }
3743
3803
 
3744
- var formkitVersion = '202608300149';
3804
+ var formkitVersion = '202608300227';
3745
3805
 
3746
3806
  /**
3747
3807
  * AuroElement is the shared base class for layout-aware Auro form components.