@aurodesignsystem-dev/auro-formkit 0.0.0-pr1431.3 → 0.0.0-pr1433.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.
Files changed (41) hide show
  1. package/components/checkbox/demo/api.min.js +1 -1
  2. package/components/checkbox/demo/index.min.js +1 -1
  3. package/components/checkbox/dist/index.js +1 -1
  4. package/components/checkbox/dist/registered.js +1 -1
  5. package/components/combobox/demo/api.min.js +230 -44
  6. package/components/combobox/demo/index.min.js +230 -44
  7. package/components/combobox/dist/auro-combobox.d.ts +4 -0
  8. package/components/combobox/dist/index.js +142 -22
  9. package/components/combobox/dist/registered.js +142 -22
  10. package/components/counter/demo/api.min.js +30 -2
  11. package/components/counter/demo/index.min.js +30 -2
  12. package/components/counter/dist/index.js +30 -2
  13. package/components/counter/dist/registered.js +30 -2
  14. package/components/datepicker/demo/api.min.js +33 -3
  15. package/components/datepicker/demo/index.min.js +33 -3
  16. package/components/datepicker/dist/index.js +33 -3
  17. package/components/datepicker/dist/registered.js +33 -3
  18. package/components/dropdown/demo/api.min.js +29 -1
  19. package/components/dropdown/demo/index.min.js +29 -1
  20. package/components/dropdown/dist/index.js +29 -1
  21. package/components/dropdown/dist/registered.js +29 -1
  22. package/components/form/demo/api.min.js +326 -54
  23. package/components/form/demo/index.min.js +326 -54
  24. package/components/input/demo/api.min.js +1 -1
  25. package/components/input/demo/index.min.js +1 -1
  26. package/components/input/dist/index.js +1 -1
  27. package/components/input/dist/registered.js +1 -1
  28. package/components/menu/demo/api.min.js +88 -22
  29. package/components/menu/demo/index.min.js +88 -22
  30. package/components/menu/dist/index.js +88 -22
  31. package/components/menu/dist/registered.js +88 -22
  32. package/components/radio/demo/api.min.js +1 -1
  33. package/components/radio/demo/index.min.js +1 -1
  34. package/components/radio/dist/index.js +1 -1
  35. package/components/radio/dist/registered.js +1 -1
  36. package/components/select/demo/api.min.js +118 -24
  37. package/components/select/demo/index.min.js +118 -24
  38. package/components/select/dist/index.js +30 -2
  39. package/components/select/dist/registered.js +30 -2
  40. package/custom-elements.json +1441 -1432
  41. package/package.json +2 -2
@@ -591,7 +591,7 @@ class AuroMenuOption extends AuroElement {
591
591
  this.setAttribute('aria-selected', this.selected.toString());
592
592
 
593
593
  // Update menu service selection state if this isn't an internal update
594
- if (this.internalUpdateInProgress !== true) {
594
+ if (this.internalUpdateInProgress !== true && this.menuService) {
595
595
  this.menuService[this.selected ? 'selectOption' : 'deselectOption'](this);
596
596
  }
597
597
  }
@@ -626,9 +626,10 @@ class AuroMenuOption extends AuroElement {
626
626
  }
627
627
 
628
628
  disconnectedCallback() {
629
- if (this.menuService) {
630
- this.menuService.unsubscribe(this.handleMenuChange);
631
- this.menuService.removeMenuOption(this);
629
+ const { menuService } = this;
630
+ if (menuService) {
631
+ menuService.unsubscribe(this.handleMenuChange);
632
+ menuService.removeMenuOption(this);
632
633
  }
633
634
  }
634
635
 
@@ -797,9 +798,11 @@ class AuroMenuOption extends AuroElement {
797
798
  * @private
798
799
  */
799
800
  handleMouseEnter() {
800
- if (!this.disabled) {
801
- this.menuService.setHighlightedOption(this);
801
+ const { menuService } = this;
802
+ if (!menuService || this.disabled) {
803
+ return;
802
804
  }
805
+ menuService.setHighlightedOption(this);
803
806
  }
804
807
 
805
808
  /**
@@ -1203,10 +1206,15 @@ class MenuService {
1203
1206
  return;
1204
1207
  }
1205
1208
 
1209
+ const before = this.selectedOptions || [];
1206
1210
  const optionsSet = new Set(optionsToDeselect);
1207
- this.selectedOptions = (this.selectedOptions || [])
1208
- .filter(opt => !optionsSet.has(opt));
1211
+ const after = before.filter(opt => !optionsSet.has(opt));
1209
1212
 
1213
+ if (this.optionsArraysMatch(after, before)) {
1214
+ return;
1215
+ }
1216
+
1217
+ this.selectedOptions = after;
1210
1218
  this.stageUpdate();
1211
1219
  }
1212
1220
 
@@ -1302,6 +1310,16 @@ class MenuService {
1302
1310
  return;
1303
1311
  }
1304
1312
 
1313
+ const hostValue = this.host && this.host.value;
1314
+ const hostHasValue = hostValue !== undefined &&
1315
+ hostValue !== null &&
1316
+ (!Array.isArray(hostValue) || hostValue.length > 0) &&
1317
+ (typeof hostValue !== 'string' || hostValue.trim() !== '');
1318
+
1319
+ if (hostHasValue && this._pendingValue != null) {
1320
+ return;
1321
+ }
1322
+
1305
1323
  this.clearPendingValue();
1306
1324
 
1307
1325
  if (this.selectedOptions.length > 0) {
@@ -1482,6 +1500,9 @@ class MenuService {
1482
1500
  this.notify({ type: 'optionsChange', options: this._menuOptions });
1483
1501
 
1484
1502
  if (this._pendingValue != null) {
1503
+ // Reset the retry count so a new option registration gives a fresh
1504
+ // budget — the initial retries fired before delayed options arrived.
1505
+ this._pendingRetryCount = 0;
1485
1506
  this.queuePendingValue(this._pendingValue);
1486
1507
  }
1487
1508
  }
@@ -1826,7 +1847,11 @@ class AuroMenu extends AuroElement {
1826
1847
  * @returns {string} - Returns the label of the currently selected option(s).
1827
1848
  */
1828
1849
  get currentLabel() {
1829
- return this.menuService.currentLabel;
1850
+ const { menuService } = this;
1851
+ if (!menuService) {
1852
+ return '';
1853
+ }
1854
+ return menuService.currentLabel;
1830
1855
  };
1831
1856
 
1832
1857
  /**
@@ -1849,7 +1874,12 @@ class AuroMenu extends AuroElement {
1849
1874
  * @param {number} value - Sets the index of the currently active option.
1850
1875
  */
1851
1876
  set index(value) {
1852
- this.menuService.setHighlightedIndex(value);
1877
+ const { menuService } = this;
1878
+ if (!menuService) {
1879
+ return;
1880
+ }
1881
+
1882
+ menuService.setHighlightedIndex(value);
1853
1883
  }
1854
1884
 
1855
1885
  /**
@@ -1871,7 +1901,11 @@ class AuroMenu extends AuroElement {
1871
1901
  * @returns {String|Array<String>}
1872
1902
  */
1873
1903
  get formattedValue() {
1874
- return this.menuService.currentValue;
1904
+ const { menuService } = this;
1905
+ if (!menuService) {
1906
+ return '';
1907
+ }
1908
+ return menuService.currentValue;
1875
1909
  }
1876
1910
 
1877
1911
  /**
@@ -1915,7 +1949,11 @@ class AuroMenu extends AuroElement {
1915
1949
  * @param {HTMLElement} option - The option to set as active.
1916
1950
  */
1917
1951
  updateActiveOption(option) {
1918
- this.menuService.setHighlightedOption(option);
1952
+ const { menuService } = this;
1953
+ if (!menuService) {
1954
+ return;
1955
+ }
1956
+ menuService.setHighlightedOption(option);
1919
1957
  }
1920
1958
 
1921
1959
  /**
@@ -1943,7 +1981,8 @@ class AuroMenu extends AuroElement {
1943
1981
  if (event.type === 'valueChange') {
1944
1982
 
1945
1983
  // New option is array value or first option with fallback to undefined for empty array in all cases
1946
- const newOption = this.multiSelect && event.options.length ? event.options : event.options[0] || undefined;
1984
+ const options = event.options || [];
1985
+ const newOption = this.multiSelect && options.length ? options : options[0] || undefined;
1947
1986
  const newValue = event.stringValue;
1948
1987
 
1949
1988
  // Check if the option or value has actually changed
@@ -1952,8 +1991,11 @@ class AuroMenu extends AuroElement {
1952
1991
  this.setInternalValue(newValue);
1953
1992
  }
1954
1993
 
1955
- // Notify components of selection change
1956
- this.notifySelectionChange(event);
1994
+ // Notify components of selection change (pass normalized options to avoid undefined iterability errors)
1995
+ this.notifySelectionChange({
1996
+ ...event,
1997
+ options
1998
+ });
1957
1999
  }
1958
2000
 
1959
2001
  if (event.type === 'highlightChange') {
@@ -1976,7 +2018,11 @@ class AuroMenu extends AuroElement {
1976
2018
  * @returns {Array<HTMLElement>}
1977
2019
  */
1978
2020
  get selectedOptions() {
1979
- return this.menuService ? this.menuService.selectedOptions : [];
2021
+ const { menuService } = this;
2022
+ if (!menuService) {
2023
+ return [];
2024
+ }
2025
+ return menuService.selectedOptions;
1980
2026
  }
1981
2027
 
1982
2028
  /**
@@ -1984,7 +2030,11 @@ class AuroMenu extends AuroElement {
1984
2030
  * @returns {HTMLElement|null}
1985
2031
  */
1986
2032
  get selectedOption() {
1987
- return this.menuService ? this.menuService.selectedOptions[0] : null;
2033
+ const { menuService } = this;
2034
+ if (!menuService) {
2035
+ return null;
2036
+ }
2037
+ return menuService.selectedOptions[0] || null;
1988
2038
  }
1989
2039
 
1990
2040
  // Lifecycle Methods
@@ -2028,7 +2078,11 @@ class AuroMenu extends AuroElement {
2028
2078
  // keys are not yet resolved (framework mount-order race), selectByValue
2029
2079
  // queues a bounded retry automatically via queuePendingValue.
2030
2080
  if (changedProperties.has('value') && !this.internalUpdateInProgress) {
2031
- this.menuService.selectByValue(this.value);
2081
+ const { menuService } = this;
2082
+ if (!menuService) {
2083
+ return;
2084
+ }
2085
+ menuService.selectByValue(this.value);
2032
2086
  }
2033
2087
 
2034
2088
  // Handle loading state changes
@@ -2093,7 +2147,11 @@ class AuroMenu extends AuroElement {
2093
2147
  * @protected
2094
2148
  */
2095
2149
  makeSelection() {
2096
- this.menuService.selectHighlightedOption();
2150
+ const { menuService } = this;
2151
+ if (!menuService) {
2152
+ return;
2153
+ }
2154
+ menuService.selectHighlightedOption();
2097
2155
  }
2098
2156
 
2099
2157
  /**
@@ -2112,7 +2170,11 @@ class AuroMenu extends AuroElement {
2112
2170
  * @public
2113
2171
  */
2114
2172
  reset() {
2115
- this.menuService.reset();
2173
+ const { menuService } = this;
2174
+ if (!menuService) {
2175
+ return;
2176
+ }
2177
+ menuService.reset();
2116
2178
 
2117
2179
  // Dispatch reset event
2118
2180
  dispatchMenuEvent(this, 'auroMenu-selectValueReset');
@@ -2147,10 +2209,14 @@ class AuroMenu extends AuroElement {
2147
2209
  * @protected
2148
2210
  */
2149
2211
  navigateOptions(direction) {
2212
+ const { menuService } = this;
2213
+ if (!menuService) {
2214
+ return;
2215
+ }
2150
2216
  if (direction === 'up') {
2151
- this.menuService.highlightPrevious();
2217
+ menuService.highlightPrevious();
2152
2218
  } else if (direction === 'down') {
2153
- this.menuService.highlightNext();
2219
+ menuService.highlightNext();
2154
2220
  }
2155
2221
  }
2156
2222
 
@@ -538,7 +538,7 @@ class AuroMenuOption extends AuroElement {
538
538
  this.setAttribute('aria-selected', this.selected.toString());
539
539
 
540
540
  // Update menu service selection state if this isn't an internal update
541
- if (this.internalUpdateInProgress !== true) {
541
+ if (this.internalUpdateInProgress !== true && this.menuService) {
542
542
  this.menuService[this.selected ? 'selectOption' : 'deselectOption'](this);
543
543
  }
544
544
  }
@@ -573,9 +573,10 @@ class AuroMenuOption extends AuroElement {
573
573
  }
574
574
 
575
575
  disconnectedCallback() {
576
- if (this.menuService) {
577
- this.menuService.unsubscribe(this.handleMenuChange);
578
- this.menuService.removeMenuOption(this);
576
+ const { menuService } = this;
577
+ if (menuService) {
578
+ menuService.unsubscribe(this.handleMenuChange);
579
+ menuService.removeMenuOption(this);
579
580
  }
580
581
  }
581
582
 
@@ -744,9 +745,11 @@ class AuroMenuOption extends AuroElement {
744
745
  * @private
745
746
  */
746
747
  handleMouseEnter() {
747
- if (!this.disabled) {
748
- this.menuService.setHighlightedOption(this);
748
+ const { menuService } = this;
749
+ if (!menuService || this.disabled) {
750
+ return;
749
751
  }
752
+ menuService.setHighlightedOption(this);
750
753
  }
751
754
 
752
755
  /**
@@ -1150,10 +1153,15 @@ class MenuService {
1150
1153
  return;
1151
1154
  }
1152
1155
 
1156
+ const before = this.selectedOptions || [];
1153
1157
  const optionsSet = new Set(optionsToDeselect);
1154
- this.selectedOptions = (this.selectedOptions || [])
1155
- .filter(opt => !optionsSet.has(opt));
1158
+ const after = before.filter(opt => !optionsSet.has(opt));
1156
1159
 
1160
+ if (this.optionsArraysMatch(after, before)) {
1161
+ return;
1162
+ }
1163
+
1164
+ this.selectedOptions = after;
1157
1165
  this.stageUpdate();
1158
1166
  }
1159
1167
 
@@ -1249,6 +1257,16 @@ class MenuService {
1249
1257
  return;
1250
1258
  }
1251
1259
 
1260
+ const hostValue = this.host && this.host.value;
1261
+ const hostHasValue = hostValue !== undefined &&
1262
+ hostValue !== null &&
1263
+ (!Array.isArray(hostValue) || hostValue.length > 0) &&
1264
+ (typeof hostValue !== 'string' || hostValue.trim() !== '');
1265
+
1266
+ if (hostHasValue && this._pendingValue != null) {
1267
+ return;
1268
+ }
1269
+
1252
1270
  this.clearPendingValue();
1253
1271
 
1254
1272
  if (this.selectedOptions.length > 0) {
@@ -1429,6 +1447,9 @@ class MenuService {
1429
1447
  this.notify({ type: 'optionsChange', options: this._menuOptions });
1430
1448
 
1431
1449
  if (this._pendingValue != null) {
1450
+ // Reset the retry count so a new option registration gives a fresh
1451
+ // budget — the initial retries fired before delayed options arrived.
1452
+ this._pendingRetryCount = 0;
1432
1453
  this.queuePendingValue(this._pendingValue);
1433
1454
  }
1434
1455
  }
@@ -1773,7 +1794,11 @@ class AuroMenu extends AuroElement {
1773
1794
  * @returns {string} - Returns the label of the currently selected option(s).
1774
1795
  */
1775
1796
  get currentLabel() {
1776
- return this.menuService.currentLabel;
1797
+ const { menuService } = this;
1798
+ if (!menuService) {
1799
+ return '';
1800
+ }
1801
+ return menuService.currentLabel;
1777
1802
  };
1778
1803
 
1779
1804
  /**
@@ -1796,7 +1821,12 @@ class AuroMenu extends AuroElement {
1796
1821
  * @param {number} value - Sets the index of the currently active option.
1797
1822
  */
1798
1823
  set index(value) {
1799
- this.menuService.setHighlightedIndex(value);
1824
+ const { menuService } = this;
1825
+ if (!menuService) {
1826
+ return;
1827
+ }
1828
+
1829
+ menuService.setHighlightedIndex(value);
1800
1830
  }
1801
1831
 
1802
1832
  /**
@@ -1818,7 +1848,11 @@ class AuroMenu extends AuroElement {
1818
1848
  * @returns {String|Array<String>}
1819
1849
  */
1820
1850
  get formattedValue() {
1821
- return this.menuService.currentValue;
1851
+ const { menuService } = this;
1852
+ if (!menuService) {
1853
+ return '';
1854
+ }
1855
+ return menuService.currentValue;
1822
1856
  }
1823
1857
 
1824
1858
  /**
@@ -1862,7 +1896,11 @@ class AuroMenu extends AuroElement {
1862
1896
  * @param {HTMLElement} option - The option to set as active.
1863
1897
  */
1864
1898
  updateActiveOption(option) {
1865
- this.menuService.setHighlightedOption(option);
1899
+ const { menuService } = this;
1900
+ if (!menuService) {
1901
+ return;
1902
+ }
1903
+ menuService.setHighlightedOption(option);
1866
1904
  }
1867
1905
 
1868
1906
  /**
@@ -1890,7 +1928,8 @@ class AuroMenu extends AuroElement {
1890
1928
  if (event.type === 'valueChange') {
1891
1929
 
1892
1930
  // New option is array value or first option with fallback to undefined for empty array in all cases
1893
- const newOption = this.multiSelect && event.options.length ? event.options : event.options[0] || undefined;
1931
+ const options = event.options || [];
1932
+ const newOption = this.multiSelect && options.length ? options : options[0] || undefined;
1894
1933
  const newValue = event.stringValue;
1895
1934
 
1896
1935
  // Check if the option or value has actually changed
@@ -1899,8 +1938,11 @@ class AuroMenu extends AuroElement {
1899
1938
  this.setInternalValue(newValue);
1900
1939
  }
1901
1940
 
1902
- // Notify components of selection change
1903
- this.notifySelectionChange(event);
1941
+ // Notify components of selection change (pass normalized options to avoid undefined iterability errors)
1942
+ this.notifySelectionChange({
1943
+ ...event,
1944
+ options
1945
+ });
1904
1946
  }
1905
1947
 
1906
1948
  if (event.type === 'highlightChange') {
@@ -1923,7 +1965,11 @@ class AuroMenu extends AuroElement {
1923
1965
  * @returns {Array<HTMLElement>}
1924
1966
  */
1925
1967
  get selectedOptions() {
1926
- return this.menuService ? this.menuService.selectedOptions : [];
1968
+ const { menuService } = this;
1969
+ if (!menuService) {
1970
+ return [];
1971
+ }
1972
+ return menuService.selectedOptions;
1927
1973
  }
1928
1974
 
1929
1975
  /**
@@ -1931,7 +1977,11 @@ class AuroMenu extends AuroElement {
1931
1977
  * @returns {HTMLElement|null}
1932
1978
  */
1933
1979
  get selectedOption() {
1934
- return this.menuService ? this.menuService.selectedOptions[0] : null;
1980
+ const { menuService } = this;
1981
+ if (!menuService) {
1982
+ return null;
1983
+ }
1984
+ return menuService.selectedOptions[0] || null;
1935
1985
  }
1936
1986
 
1937
1987
  // Lifecycle Methods
@@ -1975,7 +2025,11 @@ class AuroMenu extends AuroElement {
1975
2025
  // keys are not yet resolved (framework mount-order race), selectByValue
1976
2026
  // queues a bounded retry automatically via queuePendingValue.
1977
2027
  if (changedProperties.has('value') && !this.internalUpdateInProgress) {
1978
- this.menuService.selectByValue(this.value);
2028
+ const { menuService } = this;
2029
+ if (!menuService) {
2030
+ return;
2031
+ }
2032
+ menuService.selectByValue(this.value);
1979
2033
  }
1980
2034
 
1981
2035
  // Handle loading state changes
@@ -2040,7 +2094,11 @@ class AuroMenu extends AuroElement {
2040
2094
  * @protected
2041
2095
  */
2042
2096
  makeSelection() {
2043
- this.menuService.selectHighlightedOption();
2097
+ const { menuService } = this;
2098
+ if (!menuService) {
2099
+ return;
2100
+ }
2101
+ menuService.selectHighlightedOption();
2044
2102
  }
2045
2103
 
2046
2104
  /**
@@ -2059,7 +2117,11 @@ class AuroMenu extends AuroElement {
2059
2117
  * @public
2060
2118
  */
2061
2119
  reset() {
2062
- this.menuService.reset();
2120
+ const { menuService } = this;
2121
+ if (!menuService) {
2122
+ return;
2123
+ }
2124
+ menuService.reset();
2063
2125
 
2064
2126
  // Dispatch reset event
2065
2127
  dispatchMenuEvent(this, 'auroMenu-selectValueReset');
@@ -2094,10 +2156,14 @@ class AuroMenu extends AuroElement {
2094
2156
  * @protected
2095
2157
  */
2096
2158
  navigateOptions(direction) {
2159
+ const { menuService } = this;
2160
+ if (!menuService) {
2161
+ return;
2162
+ }
2097
2163
  if (direction === 'up') {
2098
- this.menuService.highlightPrevious();
2164
+ menuService.highlightPrevious();
2099
2165
  } else if (direction === 'down') {
2100
- this.menuService.highlightNext();
2166
+ menuService.highlightNext();
2101
2167
  }
2102
2168
  }
2103
2169
 
@@ -1645,7 +1645,7 @@ class AuroHelpText extends i$2 {
1645
1645
  }
1646
1646
  }
1647
1647
 
1648
- var formkitVersion = '202604091453';
1648
+ var formkitVersion = '202604100244';
1649
1649
 
1650
1650
  // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
1651
1651
  // See LICENSE in the project root for license information.
@@ -1620,7 +1620,7 @@ class AuroHelpText extends i$2 {
1620
1620
  }
1621
1621
  }
1622
1622
 
1623
- var formkitVersion = '202604091453';
1623
+ var formkitVersion = '202604100244';
1624
1624
 
1625
1625
  // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
1626
1626
  // See LICENSE in the project root for license information.
@@ -1573,7 +1573,7 @@ class AuroHelpText extends LitElement {
1573
1573
  }
1574
1574
  }
1575
1575
 
1576
- var formkitVersion = '202604091453';
1576
+ var formkitVersion = '202604100244';
1577
1577
 
1578
1578
  // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
1579
1579
  // See LICENSE in the project root for license information.
@@ -1573,7 +1573,7 @@ class AuroHelpText extends LitElement {
1573
1573
  }
1574
1574
  }
1575
1575
 
1576
- var formkitVersion = '202604091453';
1576
+ var formkitVersion = '202604100244';
1577
1577
 
1578
1578
  // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
1579
1579
  // See LICENSE in the project root for license information.