@aurodesignsystem-dev/auro-formkit 0.0.0-pr624.50 → 0.0.0-pr624.52

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 (52) hide show
  1. package/components/bibtemplate/dist/index.js +1 -1
  2. package/components/bibtemplate/dist/registered.js +1 -1
  3. package/components/checkbox/demo/api.min.js +5 -5
  4. package/components/checkbox/demo/index.min.js +5 -5
  5. package/components/checkbox/dist/index.js +5 -5
  6. package/components/checkbox/dist/registered.js +5 -5
  7. package/components/combobox/demo/api.min.js +69 -86
  8. package/components/combobox/demo/index.min.js +69 -86
  9. package/components/combobox/dist/index.js +33 -75
  10. package/components/combobox/dist/registered.js +33 -75
  11. package/components/counter/demo/api.md +127 -0
  12. package/components/counter/demo/api.min.js +548 -385
  13. package/components/counter/demo/index.md +82 -0
  14. package/components/counter/demo/index.min.js +548 -385
  15. package/components/counter/dist/auro-counter-group.d.ts +70 -13
  16. package/components/counter/dist/auro-counter.d.ts +10 -0
  17. package/components/counter/dist/index.js +548 -385
  18. package/components/counter/dist/registered.js +548 -385
  19. package/components/datepicker/demo/api.min.js +54 -81
  20. package/components/datepicker/demo/index.min.js +54 -81
  21. package/components/datepicker/dist/auro-datepicker.d.ts +6 -0
  22. package/components/datepicker/dist/index.js +54 -81
  23. package/components/datepicker/dist/registered.js +54 -81
  24. package/components/dropdown/demo/api.md +59 -265
  25. package/components/dropdown/demo/api.min.js +22 -64
  26. package/components/dropdown/demo/index.md +45 -363
  27. package/components/dropdown/demo/index.min.js +22 -64
  28. package/components/dropdown/dist/auro-dropdown.d.ts +21 -71
  29. package/components/dropdown/dist/index.js +22 -64
  30. package/components/dropdown/dist/registered.js +22 -64
  31. package/components/input/demo/api.min.js +5 -5
  32. package/components/input/demo/index.min.js +5 -5
  33. package/components/input/dist/index.js +5 -5
  34. package/components/input/dist/registered.js +5 -5
  35. package/components/menu/demo/api.md +1 -1
  36. package/components/menu/demo/api.min.js +36 -11
  37. package/components/menu/demo/index.min.js +36 -11
  38. package/components/menu/dist/auro-menu.d.ts +13 -2
  39. package/components/menu/dist/index.js +36 -11
  40. package/components/menu/dist/registered.js +36 -11
  41. package/components/radio/demo/api.min.js +6 -6
  42. package/components/radio/demo/index.min.js +6 -6
  43. package/components/radio/dist/auro-radio.d.ts +1 -1
  44. package/components/radio/dist/index.js +6 -6
  45. package/components/radio/dist/registered.js +6 -6
  46. package/components/select/demo/api.md +2 -2
  47. package/components/select/demo/api.min.js +94 -164
  48. package/components/select/demo/index.min.js +94 -164
  49. package/components/select/dist/auro-select.d.ts +13 -3
  50. package/components/select/dist/index.js +58 -153
  51. package/components/select/dist/registered.js +58 -153
  52. package/package.json +1 -1
@@ -1895,7 +1895,7 @@ class AuroBibtemplate extends LitElement {
1895
1895
  <div id="bibTemplate" part="bibtemplate">
1896
1896
  ${this.isFullscreen ? html$1`
1897
1897
  <div id="headerContainer">
1898
- <${this.buttonTag} id="closeButton" variant="ghost" shape="circle" size="sm" @click="${this.onCloseButtonClick}">
1898
+ <${this.buttonTag} id="closeButton" aria-label="Close" variant="ghost" shape="circle" size="sm" @click="${this.onCloseButtonClick}">
1899
1899
  <${this.iconTag} category="interface" name="x-lg"></${this.iconTag}>
1900
1900
  </${this.buttonTag}>
1901
1901
  <${this.headerTag} display="${this.large ? 'display' : '600'}" level="3" size="none" id="header" no-margin-block>
@@ -1895,7 +1895,7 @@ class AuroBibtemplate extends LitElement {
1895
1895
  <div id="bibTemplate" part="bibtemplate">
1896
1896
  ${this.isFullscreen ? html$1`
1897
1897
  <div id="headerContainer">
1898
- <${this.buttonTag} id="closeButton" variant="ghost" shape="circle" size="sm" @click="${this.onCloseButtonClick}">
1898
+ <${this.buttonTag} id="closeButton" aria-label="Close" variant="ghost" shape="circle" size="sm" @click="${this.onCloseButtonClick}">
1899
1899
  <${this.iconTag} category="interface" name="x-lg"></${this.iconTag}>
1900
1900
  </${this.buttonTag}>
1901
1901
  <${this.headerTag} display="${this.large ? 'display' : '600'}" level="3" size="none" id="header" no-margin-block>
@@ -883,19 +883,19 @@ class AuroFormValidation {
883
883
  {
884
884
  check: (e) => e.value?.length > 0 && e.value?.length < e.minLength,
885
885
  validity: 'tooShort',
886
- message: e => e.setCustomValidityTooShort || e.setCustomValidity || ''
886
+ message: e => e.getAttribute('setCustomValidityTooShort') || e.setCustomValidity || ''
887
887
  },
888
888
  {
889
889
  check: (e) => e.value?.length > e.maxLength,
890
890
  validity: 'tooLong',
891
- message: e => e.setCustomValidityTooLong || e.setCustomValidity || ''
891
+ message: e => e.getAttribute('setCustomValidityTooLong') || e.setCustomValidity || ''
892
892
  }
893
893
  ],
894
894
  pattern: [
895
895
  {
896
896
  check: (e) => e.pattern && !new RegExp(`^${e.pattern}$`, 'u').test(e.value),
897
897
  validity: 'patternMismatch',
898
- message: e => e.setCustomValidityPatternMismatch || e.setCustomValidity || ''
898
+ message: e => e.getAttribute('setCustomValidityPatternMismatch') || e.setCustomValidity || ''
899
899
  }
900
900
  ]
901
901
  },
@@ -1090,10 +1090,10 @@ class AuroFormValidation {
1090
1090
  if (!hasValue && elem.required && elem.touched) {
1091
1091
  elem.validity = 'valueMissing';
1092
1092
  elem.errorMessage = elem.setCustomValidityValueMissing || elem.setCustomValidity || '';
1093
- } else if (this.runtimeUtils.elementMatch(elem, 'auro-input')) {
1093
+ } else if (hasValue && this.runtimeUtils.elementMatch(elem, 'auro-input')) {
1094
1094
  this.validateType(elem);
1095
1095
  this.validateElementAttributes(elem);
1096
- } else if (this.runtimeUtils.elementMatch(elem, 'auro-counter') || this.runtimeUtils.elementMatch(elem, 'auro-counter-group')) {
1096
+ } else if (hasValue && (this.runtimeUtils.elementMatch(elem, 'auro-counter') || this.runtimeUtils.elementMatch(elem, 'auro-counter-group'))) {
1097
1097
  this.validateElementAttributes(elem);
1098
1098
  }
1099
1099
  }
@@ -875,19 +875,19 @@ class AuroFormValidation {
875
875
  {
876
876
  check: (e) => e.value?.length > 0 && e.value?.length < e.minLength,
877
877
  validity: 'tooShort',
878
- message: e => e.setCustomValidityTooShort || e.setCustomValidity || ''
878
+ message: e => e.getAttribute('setCustomValidityTooShort') || e.setCustomValidity || ''
879
879
  },
880
880
  {
881
881
  check: (e) => e.value?.length > e.maxLength,
882
882
  validity: 'tooLong',
883
- message: e => e.setCustomValidityTooLong || e.setCustomValidity || ''
883
+ message: e => e.getAttribute('setCustomValidityTooLong') || e.setCustomValidity || ''
884
884
  }
885
885
  ],
886
886
  pattern: [
887
887
  {
888
888
  check: (e) => e.pattern && !new RegExp(`^${e.pattern}$`, 'u').test(e.value),
889
889
  validity: 'patternMismatch',
890
- message: e => e.setCustomValidityPatternMismatch || e.setCustomValidity || ''
890
+ message: e => e.getAttribute('setCustomValidityPatternMismatch') || e.setCustomValidity || ''
891
891
  }
892
892
  ]
893
893
  },
@@ -1082,10 +1082,10 @@ class AuroFormValidation {
1082
1082
  if (!hasValue && elem.required && elem.touched) {
1083
1083
  elem.validity = 'valueMissing';
1084
1084
  elem.errorMessage = elem.setCustomValidityValueMissing || elem.setCustomValidity || '';
1085
- } else if (this.runtimeUtils.elementMatch(elem, 'auro-input')) {
1085
+ } else if (hasValue && this.runtimeUtils.elementMatch(elem, 'auro-input')) {
1086
1086
  this.validateType(elem);
1087
1087
  this.validateElementAttributes(elem);
1088
- } else if (this.runtimeUtils.elementMatch(elem, 'auro-counter') || this.runtimeUtils.elementMatch(elem, 'auro-counter-group')) {
1088
+ } else if (hasValue && (this.runtimeUtils.elementMatch(elem, 'auro-counter') || this.runtimeUtils.elementMatch(elem, 'auro-counter-group'))) {
1089
1089
  this.validateElementAttributes(elem);
1090
1090
  }
1091
1091
  }
@@ -828,19 +828,19 @@ class AuroFormValidation {
828
828
  {
829
829
  check: (e) => e.value?.length > 0 && e.value?.length < e.minLength,
830
830
  validity: 'tooShort',
831
- message: e => e.setCustomValidityTooShort || e.setCustomValidity || ''
831
+ message: e => e.getAttribute('setCustomValidityTooShort') || e.setCustomValidity || ''
832
832
  },
833
833
  {
834
834
  check: (e) => e.value?.length > e.maxLength,
835
835
  validity: 'tooLong',
836
- message: e => e.setCustomValidityTooLong || e.setCustomValidity || ''
836
+ message: e => e.getAttribute('setCustomValidityTooLong') || e.setCustomValidity || ''
837
837
  }
838
838
  ],
839
839
  pattern: [
840
840
  {
841
841
  check: (e) => e.pattern && !new RegExp(`^${e.pattern}$`, 'u').test(e.value),
842
842
  validity: 'patternMismatch',
843
- message: e => e.setCustomValidityPatternMismatch || e.setCustomValidity || ''
843
+ message: e => e.getAttribute('setCustomValidityPatternMismatch') || e.setCustomValidity || ''
844
844
  }
845
845
  ]
846
846
  },
@@ -1035,10 +1035,10 @@ class AuroFormValidation {
1035
1035
  if (!hasValue && elem.required && elem.touched) {
1036
1036
  elem.validity = 'valueMissing';
1037
1037
  elem.errorMessage = elem.setCustomValidityValueMissing || elem.setCustomValidity || '';
1038
- } else if (this.runtimeUtils.elementMatch(elem, 'auro-input')) {
1038
+ } else if (hasValue && this.runtimeUtils.elementMatch(elem, 'auro-input')) {
1039
1039
  this.validateType(elem);
1040
1040
  this.validateElementAttributes(elem);
1041
- } else if (this.runtimeUtils.elementMatch(elem, 'auro-counter') || this.runtimeUtils.elementMatch(elem, 'auro-counter-group')) {
1041
+ } else if (hasValue && (this.runtimeUtils.elementMatch(elem, 'auro-counter') || this.runtimeUtils.elementMatch(elem, 'auro-counter-group'))) {
1042
1042
  this.validateElementAttributes(elem);
1043
1043
  }
1044
1044
  }
@@ -828,19 +828,19 @@ class AuroFormValidation {
828
828
  {
829
829
  check: (e) => e.value?.length > 0 && e.value?.length < e.minLength,
830
830
  validity: 'tooShort',
831
- message: e => e.setCustomValidityTooShort || e.setCustomValidity || ''
831
+ message: e => e.getAttribute('setCustomValidityTooShort') || e.setCustomValidity || ''
832
832
  },
833
833
  {
834
834
  check: (e) => e.value?.length > e.maxLength,
835
835
  validity: 'tooLong',
836
- message: e => e.setCustomValidityTooLong || e.setCustomValidity || ''
836
+ message: e => e.getAttribute('setCustomValidityTooLong') || e.setCustomValidity || ''
837
837
  }
838
838
  ],
839
839
  pattern: [
840
840
  {
841
841
  check: (e) => e.pattern && !new RegExp(`^${e.pattern}$`, 'u').test(e.value),
842
842
  validity: 'patternMismatch',
843
- message: e => e.setCustomValidityPatternMismatch || e.setCustomValidity || ''
843
+ message: e => e.getAttribute('setCustomValidityPatternMismatch') || e.setCustomValidity || ''
844
844
  }
845
845
  ]
846
846
  },
@@ -1035,10 +1035,10 @@ class AuroFormValidation {
1035
1035
  if (!hasValue && elem.required && elem.touched) {
1036
1036
  elem.validity = 'valueMissing';
1037
1037
  elem.errorMessage = elem.setCustomValidityValueMissing || elem.setCustomValidity || '';
1038
- } else if (this.runtimeUtils.elementMatch(elem, 'auro-input')) {
1038
+ } else if (hasValue && this.runtimeUtils.elementMatch(elem, 'auro-input')) {
1039
1039
  this.validateType(elem);
1040
1040
  this.validateElementAttributes(elem);
1041
- } else if (this.runtimeUtils.elementMatch(elem, 'auro-counter') || this.runtimeUtils.elementMatch(elem, 'auro-counter-group')) {
1041
+ } else if (hasValue && (this.runtimeUtils.elementMatch(elem, 'auro-counter') || this.runtimeUtils.elementMatch(elem, 'auro-counter-group'))) {
1042
1042
  this.validateElementAttributes(elem);
1043
1043
  }
1044
1044
  }
@@ -795,19 +795,19 @@ let AuroFormValidation$1 = class AuroFormValidation {
795
795
  {
796
796
  check: (e) => e.value?.length > 0 && e.value?.length < e.minLength,
797
797
  validity: 'tooShort',
798
- message: e => e.setCustomValidityTooShort || e.setCustomValidity || ''
798
+ message: e => e.getAttribute('setCustomValidityTooShort') || e.setCustomValidity || ''
799
799
  },
800
800
  {
801
801
  check: (e) => e.value?.length > e.maxLength,
802
802
  validity: 'tooLong',
803
- message: e => e.setCustomValidityTooLong || e.setCustomValidity || ''
803
+ message: e => e.getAttribute('setCustomValidityTooLong') || e.setCustomValidity || ''
804
804
  }
805
805
  ],
806
806
  pattern: [
807
807
  {
808
808
  check: (e) => e.pattern && !new RegExp(`^${e.pattern}$`, 'u').test(e.value),
809
809
  validity: 'patternMismatch',
810
- message: e => e.setCustomValidityPatternMismatch || e.setCustomValidity || ''
810
+ message: e => e.getAttribute('setCustomValidityPatternMismatch') || e.setCustomValidity || ''
811
811
  }
812
812
  ]
813
813
  },
@@ -1002,10 +1002,10 @@ let AuroFormValidation$1 = class AuroFormValidation {
1002
1002
  if (!hasValue && elem.required && elem.touched) {
1003
1003
  elem.validity = 'valueMissing';
1004
1004
  elem.errorMessage = elem.setCustomValidityValueMissing || elem.setCustomValidity || '';
1005
- } else if (this.runtimeUtils.elementMatch(elem, 'auro-input')) {
1005
+ } else if (hasValue && this.runtimeUtils.elementMatch(elem, 'auro-input')) {
1006
1006
  this.validateType(elem);
1007
1007
  this.validateElementAttributes(elem);
1008
- } else if (this.runtimeUtils.elementMatch(elem, 'auro-counter') || this.runtimeUtils.elementMatch(elem, 'auro-counter-group')) {
1008
+ } else if (hasValue && (this.runtimeUtils.elementMatch(elem, 'auro-counter') || this.runtimeUtils.elementMatch(elem, 'auro-counter-group'))) {
1009
1009
  this.validateElementAttributes(elem);
1010
1010
  }
1011
1011
  }
@@ -4556,10 +4556,8 @@ let AuroElement$4 = class AuroElement extends i$2 {
4556
4556
  // See LICENSE in the project root for license information.
4557
4557
 
4558
4558
 
4559
- /**
4560
- * @attr { Boolean } disableEventShow - If declared, the dropdown will only show by calling the API .show() public method.
4559
+ /*
4561
4560
  * @slot - Default slot for the popover content.
4562
- * @slot label - Defines the content of the label.
4563
4561
  * @slot helpText - Defines the content of the helpText.
4564
4562
  * @slot trigger - Defines the content of the trigger.
4565
4563
  * @csspart trigger - The trigger content container.
@@ -4578,18 +4576,22 @@ class AuroDropdown extends AuroElement$4 {
4578
4576
  this.matchWidth = false;
4579
4577
  this.noHideOnThisFocusLoss = false;
4580
4578
 
4581
- this.errorMessage = ''; // TODO - check with Doug if there is still more to do here
4579
+ this.errorMessage = undefined; // TODO - check with Doug if there is still more to do here
4582
4580
 
4583
4581
  // Layout Config
4584
- this.layout = 'classic';
4585
- this.shape = 'classic';
4586
- this.size = 'xl';
4582
+ this.layout = undefined;
4583
+ this.shape = undefined;
4584
+ this.size = undefined;
4587
4585
 
4588
4586
  this.parentBorder = false;
4589
4587
 
4590
4588
  this.privateDefaults();
4591
4589
  }
4592
4590
 
4591
+ /**
4592
+ * @private
4593
+ * @returns {object} Class definition for the wrapper element.
4594
+ */
4593
4595
  get commonWrapperClasses() {
4594
4596
  return {
4595
4597
  'trigger': true,
@@ -4609,12 +4611,8 @@ class AuroDropdown extends AuroElement$4 {
4609
4611
  this.disabled = false;
4610
4612
  this.disableFocusTrap = false;
4611
4613
  this.error = false;
4612
- this.inset = false;
4613
- this.rounded = false;
4614
4614
  this.tabIndex = 0;
4615
4615
  this.noToggle = false;
4616
- this.a11yAutocomplete = 'none';
4617
- this.labeled = true;
4618
4616
  this.a11yRole = 'button';
4619
4617
  this.onDark = false;
4620
4618
  this.showTriggerBorders = true;
@@ -4736,26 +4734,27 @@ class AuroDropdown extends AuroElement$4 {
4736
4734
  },
4737
4735
 
4738
4736
  /**
4739
- * If declared, applies a border around the trigger slot.
4737
+ * If declared, the dropdown will only show by calling the API .show() public method.
4738
+ * @default false
4740
4739
  */
4741
- simple: {
4740
+ disableEventShow: {
4742
4741
  type: Boolean,
4743
4742
  reflect: true
4744
4743
  },
4745
4744
 
4746
4745
  /**
4747
- * If declared, the dropdown displays a chevron on the right.
4748
- * @attr {Boolean} chevron
4746
+ * If declared, applies a border around the trigger slot.
4749
4747
  */
4750
- chevron: {
4748
+ simple: {
4751
4749
  type: Boolean,
4752
4750
  reflect: true
4753
4751
  },
4754
4752
 
4755
4753
  /**
4756
- * If declared, the dropdown will be styled with the common theme.
4754
+ * If declared, the dropdown displays a chevron on the right.
4755
+ * @attr {Boolean} chevron
4757
4756
  */
4758
- common: {
4757
+ chevron: {
4759
4758
  type: Boolean,
4760
4759
  reflect: true
4761
4760
  },
@@ -4769,7 +4768,7 @@ class AuroDropdown extends AuroElement$4 {
4769
4768
  },
4770
4769
 
4771
4770
  /**
4772
- * If declare, the focus trap inside of bib will be turned off.
4771
+ * If declared, the focus trap inside of bib will be turned off.
4773
4772
  */
4774
4773
  disableFocusTrap: {
4775
4774
  type: Boolean,
@@ -4816,22 +4815,6 @@ class AuroDropdown extends AuroElement$4 {
4816
4815
  reflect: true
4817
4816
  },
4818
4817
 
4819
- /**
4820
- * Makes the trigger to be full width of its parent container.
4821
- */
4822
- fluid: {
4823
- type: Boolean,
4824
- reflect: true
4825
- },
4826
-
4827
- /**
4828
- * If declared, will apply padding around trigger slot content.
4829
- */
4830
- inset: {
4831
- type: Boolean,
4832
- reflect: true
4833
- },
4834
-
4835
4818
  /**
4836
4819
  * If true, the dropdown bib is displayed.
4837
4820
  */
@@ -4875,15 +4858,6 @@ class AuroDropdown extends AuroElement$4 {
4875
4858
  reflect: true
4876
4859
  },
4877
4860
 
4878
- /**
4879
- * Defines if there is a label preset.
4880
- * @private
4881
- */
4882
- labeled: {
4883
- type: Boolean,
4884
- reflect: true
4885
- },
4886
-
4887
4861
  /**
4888
4862
  * Defines if the trigger should size based on the parent element providing the border UI.
4889
4863
  * @private
@@ -4944,6 +4918,9 @@ class AuroDropdown extends AuroElement$4 {
4944
4918
  reflect: true
4945
4919
  },
4946
4920
 
4921
+ /**
4922
+ * If declared, and a function is set, that function will execute when the slot content is updated.
4923
+ */
4947
4924
  onSlotChange: {
4948
4925
  type: Function,
4949
4926
  reflect: false
@@ -4958,14 +4935,6 @@ class AuroDropdown extends AuroElement$4 {
4958
4935
  reflect: true
4959
4936
  },
4960
4937
 
4961
- /**
4962
- * If declared, will apply border-radius to trigger and default slots.
4963
- */
4964
- rounded: {
4965
- type: Boolean,
4966
- reflect: true
4967
- },
4968
-
4969
4938
  /**
4970
4939
  * @private
4971
4940
  */
@@ -4980,14 +4949,6 @@ class AuroDropdown extends AuroElement$4 {
4980
4949
  type: String || undefined,
4981
4950
  attribute: false,
4982
4951
  reflect: false
4983
- },
4984
-
4985
- /**
4986
- * The value for the aria-autocomplete attribute of the trigger element.
4987
- */
4988
- a11yAutocomplete: {
4989
- type: String,
4990
- attribute: false,
4991
4952
  }
4992
4953
  };
4993
4954
  }
@@ -5435,10 +5396,7 @@ class AuroDropdown extends AuroElement$4 {
5435
5396
  id="bib"
5436
5397
  shape="${this.shape}"
5437
5398
  ?data-show="${this.isPopoverVisible}"
5438
- ?isfullscreen="${this.isBibFullscreen}"
5439
- ?common="${this.common}"
5440
- ?rounded="${this.common || this.rounded}"
5441
- ?inset="${this.common || this.inset}">
5399
+ ?isfullscreen="${this.isBibFullscreen}">
5442
5400
  <div class="slotContent">
5443
5401
  <slot @slotchange="${this.handleDefaultSlot}"></slot>
5444
5402
  </div>
@@ -10073,19 +10031,19 @@ class AuroFormValidation {
10073
10031
  {
10074
10032
  check: (e) => e.value?.length > 0 && e.value?.length < e.minLength,
10075
10033
  validity: 'tooShort',
10076
- message: e => e.setCustomValidityTooShort || e.setCustomValidity || ''
10034
+ message: e => e.getAttribute('setCustomValidityTooShort') || e.setCustomValidity || ''
10077
10035
  },
10078
10036
  {
10079
10037
  check: (e) => e.value?.length > e.maxLength,
10080
10038
  validity: 'tooLong',
10081
- message: e => e.setCustomValidityTooLong || e.setCustomValidity || ''
10039
+ message: e => e.getAttribute('setCustomValidityTooLong') || e.setCustomValidity || ''
10082
10040
  }
10083
10041
  ],
10084
10042
  pattern: [
10085
10043
  {
10086
10044
  check: (e) => e.pattern && !new RegExp(`^${e.pattern}$`, 'u').test(e.value),
10087
10045
  validity: 'patternMismatch',
10088
- message: e => e.setCustomValidityPatternMismatch || e.setCustomValidity || ''
10046
+ message: e => e.getAttribute('setCustomValidityPatternMismatch') || e.setCustomValidity || ''
10089
10047
  }
10090
10048
  ]
10091
10049
  },
@@ -10280,10 +10238,10 @@ class AuroFormValidation {
10280
10238
  if (!hasValue && elem.required && elem.touched) {
10281
10239
  elem.validity = 'valueMissing';
10282
10240
  elem.errorMessage = elem.setCustomValidityValueMissing || elem.setCustomValidity || '';
10283
- } else if (this.runtimeUtils.elementMatch(elem, 'auro-input')) {
10241
+ } else if (hasValue && this.runtimeUtils.elementMatch(elem, 'auro-input')) {
10284
10242
  this.validateType(elem);
10285
10243
  this.validateElementAttributes(elem);
10286
- } else if (this.runtimeUtils.elementMatch(elem, 'auro-counter') || this.runtimeUtils.elementMatch(elem, 'auro-counter-group')) {
10244
+ } else if (hasValue && (this.runtimeUtils.elementMatch(elem, 'auro-counter') || this.runtimeUtils.elementMatch(elem, 'auro-counter-group'))) {
10287
10245
  this.validateElementAttributes(elem);
10288
10246
  }
10289
10247
  }
@@ -15641,7 +15599,7 @@ class AuroBibtemplate extends i$2 {
15641
15599
  <div id="bibTemplate" part="bibtemplate">
15642
15600
  ${this.isFullscreen ? u$2`
15643
15601
  <div id="headerContainer">
15644
- <${this.buttonTag} id="closeButton" variant="ghost" shape="circle" size="sm" @click="${this.onCloseButtonClick}">
15602
+ <${this.buttonTag} id="closeButton" aria-label="Close" variant="ghost" shape="circle" size="sm" @click="${this.onCloseButtonClick}">
15645
15603
  <${this.iconTag} category="interface" name="x-lg"></${this.iconTag}>
15646
15604
  </${this.buttonTag}>
15647
15605
  <${this.headerTag} display="${this.large ? 'display' : '600'}" level="3" size="none" id="header" no-margin-block>
@@ -17132,7 +17090,6 @@ function dispatchMenuEvent(element, eventName, detail = null) {
17132
17090
  * @attr {boolean} nocheckmark - When true, selected option will not show the checkmark.
17133
17091
  * @attr {boolean} loading - When true, displays a loading state using the loadingIcon and loadingText slots if provided.
17134
17092
  * @attr {boolean} multiselect - When true, the selected option can be multiple options.
17135
- * @attr {String|Array<string>} value - Value selected for the menu, type `string` by default. In multi-select mode, `value` is an array of strings.
17136
17093
  * @prop {boolean} hasLoadingPlaceholder - Indicates whether the menu has a loadingIcon or loadingText to render when in a loading state.
17137
17094
  * @event {CustomEvent<Element>} auroMenu-activatedOption - Notifies that a menuoption has been made `active`.
17138
17095
  * @event {CustomEvent<any>} auroMenu-customEventFired - Notifies that a custom event has been fired.
@@ -17245,9 +17202,14 @@ class AuroMenu extends AuroElement$1 {
17245
17202
  reflect: true,
17246
17203
  attribute: 'multiselect'
17247
17204
  },
17205
+
17206
+ /**
17207
+ * Value selected for the component.
17208
+ */
17248
17209
  value: {
17249
- // Allow string, string[] arrays and undefined
17250
- type: Object
17210
+ type: String,
17211
+ reflect: true,
17212
+ attribute: 'value'
17251
17213
  },
17252
17214
 
17253
17215
  /**
@@ -17282,6 +17244,25 @@ class AuroMenu extends AuroElement$1 {
17282
17244
  AuroLibraryRuntimeUtils$7.prototype.registerComponent(name, AuroMenu);
17283
17245
  }
17284
17246
 
17247
+ /**
17248
+ * Formatted value based on `multiSelect` state.
17249
+ * Default type is `String`, changing to `Array<String>` when `multiSelect` is true.
17250
+ * @private
17251
+ * @returns {String|Array<String>}
17252
+ */
17253
+ get formattedValue() {
17254
+ if (this.multiSelect) {
17255
+ if (!this.value) {
17256
+ return undefined;
17257
+ }
17258
+ if (this.value.startsWith("[")) {
17259
+ return JSON.parse(this.value);
17260
+ }
17261
+ return [this.value];
17262
+ }
17263
+ return this.value;
17264
+ }
17265
+
17285
17266
  // Lifecycle Methods
17286
17267
 
17287
17268
  connectedCallback() {
@@ -17324,7 +17305,7 @@ class AuroMenu extends AuroElement$1 {
17324
17305
  updated(changedProperties) {
17325
17306
  super.updated(changedProperties);
17326
17307
 
17327
- if (changedProperties.has('multiSelect')) {
17308
+ if (changedProperties.has('multiSelect') && !changedProperties.has("value")) {
17328
17309
  // Reset selection if multiSelect mode changes
17329
17310
  this.clearSelection();
17330
17311
  }
@@ -17338,7 +17319,7 @@ class AuroMenu extends AuroElement$1 {
17338
17319
  } else {
17339
17320
  if (this.multiSelect) {
17340
17321
  // In multiselect mode, this.value should be an array of strings
17341
- const valueArray = Array.isArray(this.value) ? this.value : [this.value];
17322
+ const valueArray = this.formattedValue;
17342
17323
  const matchingOptions = this.items.filter((item) => valueArray.includes(item.value));
17343
17324
 
17344
17325
  this.optionSelected = matchingOptions.length > 0 ? matchingOptions : undefined;
@@ -17505,14 +17486,14 @@ class AuroMenu extends AuroElement$1 {
17505
17486
  */
17506
17487
  handleSelectState(option) {
17507
17488
  if (this.multiSelect) {
17508
- const currentValue = this.value || [];
17489
+ const currentValue = this.formattedValue || [];
17509
17490
  const currentSelected = this.optionSelected || [];
17510
17491
 
17511
17492
  if (!currentValue.includes(option.value)) {
17512
- this.value = [
17493
+ this.value = JSON.stringify([
17513
17494
  ...currentValue,
17514
17495
  option.value
17515
- ];
17496
+ ]);
17516
17497
  }
17517
17498
  if (!currentSelected.includes(option)) {
17518
17499
  this.optionSelected = [
@@ -17535,13 +17516,15 @@ class AuroMenu extends AuroElement$1 {
17535
17516
  * @param {HTMLElement} option - The menuoption to be deselected.
17536
17517
  */
17537
17518
  handleDeselectState(option) {
17538
- if (this.multiSelect && Array.isArray(this.value)) {
17519
+ if (this.multiSelect) {
17539
17520
  // Remove this option from array
17540
- this.value = this.value.filter((val) => val !== option.value);
17521
+ const newFormattedValue = (this.formattedValue || []).filter((val) => val !== option.value);
17541
17522
 
17542
17523
  // If array is empty after removal, set back to undefined
17543
- if (this.value.length === 0) {
17524
+ if (newFormattedValue && newFormattedValue.length === 0) {
17544
17525
  this.value = undefined;
17526
+ } else {
17527
+ this.value = JSON.stringify(newFormattedValue);
17545
17528
  }
17546
17529
 
17547
17530
  this.optionSelected = this.optionSelected.filter((val) => val !== option);