@aurodesignsystem/auro-formkit 2.1.0-beta.2 → 2.1.0-beta.4

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 (48) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/components/checkbox/README.md +1 -1
  3. package/components/checkbox/demo/readme.md +1 -1
  4. package/components/combobox/README.md +1 -1
  5. package/components/combobox/demo/api.min.js +50 -8
  6. package/components/combobox/demo/index.min.js +50 -8
  7. package/components/combobox/demo/readme.md +1 -1
  8. package/components/combobox/dist/index.js +50 -8
  9. package/components/combobox/dist/registered.js +50 -8
  10. package/components/counter/README.md +1 -1
  11. package/components/counter/demo/api.min.js +50 -8
  12. package/components/counter/demo/index.min.js +50 -8
  13. package/components/counter/demo/readme.md +1 -1
  14. package/components/counter/dist/index.js +50 -8
  15. package/components/counter/dist/registered.js +50 -8
  16. package/components/datepicker/README.md +1 -1
  17. package/components/datepicker/demo/api.md +4 -0
  18. package/components/datepicker/demo/api.min.js +86 -19
  19. package/components/datepicker/demo/index.min.js +86 -19
  20. package/components/datepicker/demo/readme.md +1 -1
  21. package/components/datepicker/dist/index.js +86 -19
  22. package/components/datepicker/dist/registered.js +86 -19
  23. package/components/datepicker/dist/utilities.d.ts +7 -0
  24. package/components/dropdown/README.md +1 -1
  25. package/components/dropdown/demo/api.md +1 -1
  26. package/components/dropdown/demo/api.min.js +50 -8
  27. package/components/dropdown/demo/index.min.js +50 -8
  28. package/components/dropdown/demo/readme.md +1 -1
  29. package/components/dropdown/dist/auro-dropdown.d.ts +17 -1
  30. package/components/dropdown/dist/index.js +50 -8
  31. package/components/dropdown/dist/registered.js +50 -8
  32. package/components/form/README.md +1 -1
  33. package/components/form/demo/readme.md +1 -1
  34. package/components/input/README.md +1 -1
  35. package/components/input/demo/readme.md +1 -1
  36. package/components/menu/README.md +1 -1
  37. package/components/menu/demo/readme.md +1 -1
  38. package/components/radio/README.md +1 -1
  39. package/components/radio/demo/readme.md +1 -1
  40. package/components/select/README.md +2 -1
  41. package/components/select/demo/api.md +22 -0
  42. package/components/select/demo/api.min.js +50 -8
  43. package/components/select/demo/index.md +14 -0
  44. package/components/select/demo/index.min.js +50 -8
  45. package/components/select/demo/readme.md +2 -1
  46. package/components/select/dist/index.js +50 -8
  47. package/components/select/dist/registered.js +50 -8
  48. package/package.json +3 -3
@@ -440,7 +440,7 @@ class AuroDatepickerUtilities {
440
440
  validDateStr(date, format) {
441
441
  const dateStrLength = 10;
442
442
 
443
- if (date.length === dateStrLength && Date.parse(this.toNorthAmericanFormat(date, format))) {
443
+ if (format !== undefined && date !== undefined && date.length === dateStrLength && Date.parse(this.toNorthAmericanFormat(date, format))) {
444
444
  return true;
445
445
  }
446
446
 
@@ -581,12 +581,21 @@ class AuroDatepickerUtilities {
581
581
  */
582
582
  getDateAsString(date) {
583
583
  const year = new Date(date).getFullYear();
584
- const month = new Date(date).getMonth() + 1;
585
- const day = new Date(date).getDate();
584
+ const month = this.formatTwoDigits(new Date(date).getMonth() + 1);
585
+ const day = this.formatTwoDigits(new Date(date).getDate());
586
586
 
587
- const dateStr = `${month}/${day}/${year}`;
587
+ return `${month}/${day}/${year}`;
588
+ }
588
589
 
589
- return dateStr;
590
+ /**
591
+ * Function to format a number to two digits.
592
+ * @private
593
+ * @param {Number} num - Number to format.
594
+ * @returns {String} Returns the number as a string.
595
+ */
596
+ formatTwoDigits(num) {
597
+ const singleDigitThreshold = 10;
598
+ return num < singleDigitThreshold ? `0${num}` : num;
590
599
  }
591
600
 
592
601
  /**
@@ -10261,10 +10270,23 @@ class CalendarUtilities {
10261
10270
  increment = -1; // eslint-disable-line no-magic-numbers
10262
10271
  }
10263
10272
 
10264
- // calculate the new central date
10265
- const newCentralDate = new Date(elem.centralDate).setMonth(new Date(elem.centralDate).getMonth() + increment);
10266
- // set the new central date to the first day of the month
10267
- elem.centralDate = this.util.convertDateToFirstOfMonth(newCentralDate);
10273
+ // Get new central date for calendar view
10274
+ const {firstRenderedMonth, centralDate, datepicker} = elem;
10275
+ const formattedDateStr = this.util.getDateAsString(centralDate, datepicker.format);
10276
+ let newCentralDate = null;
10277
+
10278
+ if (this.util.validDateStr(formattedDateStr, datepicker.format)) {
10279
+ // Use current date as base and adjust month by increment
10280
+ newCentralDate = new Date(formattedDateStr).setMonth(new Date(formattedDateStr).getMonth() + increment);
10281
+ } else {
10282
+ // Fallback to first rendered month if central date invalid
10283
+ newCentralDate = new Date(firstRenderedMonth).setMonth(new Date(firstRenderedMonth).getMonth() + increment);
10284
+ }
10285
+
10286
+ // Update calendar central date
10287
+ if (newCentralDate) {
10288
+ elem.centralDate = this.util.convertDateToFirstOfMonth(newCentralDate);
10289
+ }
10268
10290
  }
10269
10291
  }
10270
10292
 
@@ -11987,9 +12009,12 @@ class AuroCalendar extends RangeDatepicker {
11987
12009
  // Determine which month to render first
11988
12010
  let dateMatches = undefined;
11989
12011
 
11990
- if (!this.isFullscreen && this.centralDate) {
12012
+ if (!this.isFullscreen) {
12013
+
12014
+ const formattedDateStr = this.util.getDateAsString(new Date(this.centralDate), this.datepicker.format);
12015
+
11991
12016
  // On Desktop start the calendar at the central date if it exists, then minDate and finally the current date.
11992
- if (this.centralDate) {
12017
+ if (this.util.validDateStr(formattedDateStr, this.datepicker.format)) {
11993
12018
  dateMatches = this.util.datesMatch(this.firstRenderedMonth, this.util.convertDateToFirstOfMonth(this.centralDate));
11994
12019
 
11995
12020
  if (!dateMatches) {
@@ -14810,7 +14835,7 @@ class AuroDropdownBib extends LitElement {
14810
14835
 
14811
14836
  var dropdownVersion$1 = '3.0.0';
14812
14837
 
14813
- var styleCss$1$1 = css`:host{position:relative;display:inline-block;max-width:100%}:host([fluid]){display:block}#bibSizer{position:absolute;z-index:-1;opacity:0;pointer-events:none}.label{font-size:var(--ds-text-body-size-xs, 0.75rem);line-height:var(--ds-text-body-size-default, 1rem);transition:font-size .3s cubic-bezier(0.215, 0.61, 0.355, 1);white-space:normal}.label[hasTrigger=false]{font-size:var(--ds-text-body-size-default, 1rem)}.trigger{position:relative;display:flex;align-items:center}.trigger[showBorder]{border-width:1px;border-style:solid;cursor:pointer;outline-style:solid;outline-width:1px}@media(hover: hover){.trigger:hover{cursor:pointer}}.triggerContentWrapper{overflow:hidden;flex:1;text-overflow:ellipsis;white-space:nowrap}#showStateIcon{display:flex;overflow:hidden;height:100%;align-items:center;margin-left:var(--ds-size-100, 0.5rem)}#showStateIcon [auro-icon]{height:var(--ds-size-300, 1.5rem);line-height:var(--ds-size-300, 1.5rem)}#showStateIcon[data-expanded=true] [auro-icon]{transform:rotate(-180deg)}:host([matchwidth]) #bibSizer{width:100%}:host([disabled]){pointer-events:none}:host([inset]) .trigger{padding:var(--ds-size-150, 0.75rem) var(--ds-size-200, 1rem)}:host([common]) .trigger,:host([inset][bordered]) .trigger{padding:var(--ds-size-200, 1rem) var(--ds-size-150, 0.75rem)}:host([common]) .trigger,:host([rounded]) .trigger{border-radius:var(--ds-border-radius, 0.375rem)}`;
14838
+ var styleCss$1$1 = css`:host{position:relative;display:inline-block;max-width:100%}:host([fluid]){display:block}#bibSizer{position:absolute;z-index:-1;opacity:0;pointer-events:none}.label{font-size:var(--ds-text-body-size-xs, 0.75rem);line-height:var(--ds-text-body-size-default, 1rem);transition:font-size .3s cubic-bezier(0.215, 0.61, 0.355, 1);white-space:normal}.label[hasTrigger=false]{font-size:var(--ds-text-body-size-default, 1rem)}.trigger{position:relative;display:flex;align-items:center}.trigger[showBorder]{border-width:1px;border-style:solid;cursor:pointer;outline-style:solid;outline-width:1px}@media(hover: hover){.trigger:hover{cursor:pointer}}.triggerContentWrapper{overflow:hidden;flex:1;text-overflow:ellipsis;white-space:nowrap}#showStateIcon{display:flex;overflow:hidden;height:100%;align-items:center;margin-left:var(--ds-size-100, 0.5rem)}#showStateIcon [auro-icon]{height:var(--ds-size-300, 1.5rem);line-height:var(--ds-size-300, 1.5rem)}#showStateIcon[data-expanded=true] [auro-icon]{transform:rotate(-180deg)}:host([matchwidth]) #bibSizer{width:100%}:host([disabled]){pointer-events:none}:host([inset]) .trigger{padding:var(--ds-size-150, 0.75rem) var(--ds-size-200, 1rem)}:host([common]) .trigger,:host([inset][bordered]) .trigger{padding:var(--ds-size-200, 1rem) var(--ds-size-150, 0.75rem)}:host([inset][bordered][labeled]) .trigger{padding:var(--ds-size-100, 0.5rem) var(--ds-size-150, 0.75rem)}:host([common]) .trigger,:host([rounded]) .trigger{border-radius:var(--ds-border-radius, 0.375rem)}`;
14814
14839
 
14815
14840
  var colorCss$1$1 = css`.label{color:var(--ds-auro-dropdown-label-text-color)}.trigger{border-color:var(--ds-auro-dropdown-trigger-border-color);background-color:var(--ds-auro-dropdown-trigger-container-color);color:var(--ds-auro-dropdown-trigger-text-color);outline-color:var(--ds-auro-dropdown-trigger-outline-color)}.trigger:focus-within,.trigger:active{--ds-auro-dropdown-trigger-border-color: var(--ds-color-border-active-default, #0074c8);--ds-auro-dropdown-trigger-outline-color: var(--ds-color-border-active-default, #0074c8)}.trigger:focus-within:not(:active){--ds-auro-dropdown-trigger-border-color: var(--ds-color-border-ui-focus-default, #2c67b5);--ds-auro-dropdown-trigger-outline-color: var(--ds-color-border-ui-focus-default, #2c67b5)}.trigger:hover{--ds-auro-dropdown-trigger-container-color: var(--ds-color-container-ui-secondary-hover-default, rgba(0, 0, 0, 0.03))}:host([disabled]){--ds-auro-dropdown-trigger-text-color: var(--ds-color-text-ui-disabled-default, #adadad);--ds-auro-dropdown-label-text-color: var(--ds-color-text-ui-disabled-default, #adadad)}:host([common]),:host([bordered]){--ds-auro-dropdown-trigger-border-color: var(--ds-color-border-primary-default, #585e67)}:host([common]) .trigger:active,:host([common]) .trigger:focus-within,:host([bordered]) .trigger:active,:host([bordered]) .trigger:focus-within{--ds-auro-dropdown-trigger-border-color: var(--ds-color-border-ui-focus-default, #2c67b5)}:host([error]){--ds-auro-dropdown-trigger-border-color: var(--ds-color-border-error-default, #cc1816)}:host([error]) .trigger{outline:solid 1px var(--ds-auro-dropdown-trigger-border-color)}:host([error]) .trigger:focus-within,:host([error]) .trigger:active{--ds-auro-dropdown-trigger-border-color: var(--ds-color-border-active-default, #0074c8)}:host([error]) .trigger:active{box-shadow:none;outline:none}:host([disabled][common]),:host([disabled][bordered]){--ds-auro-dropdown-trigger-border-color: var(--ds-color-border-ui-disabled-default, #adadad)}`;
14816
14841
 
@@ -15074,6 +15099,7 @@ class AuroDropdown extends LitElement {
15074
15099
  this.rounded = false;
15075
15100
  this.tabIndex = 0;
15076
15101
  this.noToggle = false;
15102
+ this.labeled = true;
15077
15103
 
15078
15104
  /**
15079
15105
  * @private
@@ -15226,7 +15252,7 @@ class AuroDropdown extends LitElement {
15226
15252
  },
15227
15253
 
15228
15254
  /**
15229
- * If true, the dropdown bib is taking the fullscreen when it's open
15255
+ * If true, the dropdown bib is taking the fullscreen when it's open.
15230
15256
  */
15231
15257
  isBibFullscreen: {
15232
15258
  type: Boolean,
@@ -15256,6 +15282,15 @@ class AuroDropdown extends LitElement {
15256
15282
  reflect: true
15257
15283
  },
15258
15284
 
15285
+ /**
15286
+ * Defines if there is a label preset.
15287
+ * @private
15288
+ */
15289
+ labeled: {
15290
+ type: Boolean,
15291
+ reflect: true
15292
+ },
15293
+
15259
15294
  /**
15260
15295
  * If declared, the popover and trigger will be set to the same width.
15261
15296
  */
@@ -15335,6 +15370,7 @@ class AuroDropdown extends LitElement {
15335
15370
 
15336
15371
  disconnectedCallback() {
15337
15372
  super.disconnectedCallback();
15373
+ this.floater.disconnect();
15338
15374
  }
15339
15375
 
15340
15376
  updated(changedProperties) {
@@ -15464,13 +15500,21 @@ class AuroDropdown extends LitElement {
15464
15500
  handleTriggerContentSlotChange(event) {
15465
15501
  this.floater.handleTriggerTabIndex();
15466
15502
 
15467
- const triggerContentNodes = this.shadowRoot.querySelector('.triggerContent slot').assignedNodes();
15503
+ const triggerSlot = this.shadowRoot.querySelector('.triggerContent slot');
15504
+
15505
+ if (triggerSlot) {
15468
15506
 
15469
- triggerContentNodes.forEach((node) => {
15470
- if (!this.triggerContentFocusable) {
15471
- this.triggerContentFocusable = this.containsFocusableElement(node);
15507
+ const triggerContentNodes = triggerSlot.assignedNodes();
15508
+
15509
+ if (triggerContentNodes) {
15510
+
15511
+ triggerContentNodes.forEach((node) => {
15512
+ if (!this.triggerContentFocusable) {
15513
+ this.triggerContentFocusable = this.containsFocusableElement(node);
15514
+ }
15515
+ });
15472
15516
  }
15473
- });
15517
+ }
15474
15518
 
15475
15519
  const trigger = this.shadowRoot.querySelector('#trigger');
15476
15520
 
@@ -15524,6 +15568,29 @@ class AuroDropdown extends LitElement {
15524
15568
  }
15525
15569
  }
15526
15570
 
15571
+ /**
15572
+ * @private
15573
+ * @method handleLabelSlotChange
15574
+ * @param {event} event - The event object representing the slot change.
15575
+ * @description Handles the slot change event for the label slot.
15576
+ */
15577
+ handleLabelSlotChange (event) {
15578
+
15579
+ // Get the nodes from the event
15580
+ const nodes = event.target.assignedNodes();
15581
+
15582
+ // Guard clause for no nodes
15583
+ if (!nodes) {
15584
+ return;
15585
+ }
15586
+
15587
+ // Convert the nodes to a measurable array so we can get the length
15588
+ const nodesArr = Array.from(nodes);
15589
+
15590
+ // If the nodes array has a length, the dropdown is labeled
15591
+ this.labeled = nodesArr.length > 0;
15592
+ }
15593
+
15527
15594
  // function that renders the HTML and CSS into the scope of the component
15528
15595
  render() {
15529
15596
  return html$1`
@@ -15538,7 +15605,7 @@ class AuroDropdown extends LitElement {
15538
15605
  >
15539
15606
  <div class="triggerContentWrapper">
15540
15607
  <label class="label" id="triggerLabel" hasTrigger=${this.hasTriggerContent}>
15541
- <slot name="label"></slot>
15608
+ <slot name="label" @slotchange="${this.handleLabelSlotChange}"></slot>
15542
15609
  </label>
15543
15610
  <div class="triggerContent">
15544
15611
  <slot
@@ -51,6 +51,13 @@ export class AuroDatepickerUtilities {
51
51
  * @returns {Object} Returns the date as a string.
52
52
  */
53
53
  private getDateAsString;
54
+ /**
55
+ * Function to format a number to two digits.
56
+ * @private
57
+ * @param {Number} num - Number to format.
58
+ * @returns {String} Returns the number as a string.
59
+ */
60
+ private formatTwoDigits;
54
61
  /**
55
62
  * Function to generate checkmark svg.
56
63
  * @private
@@ -107,7 +107,7 @@ The use of any Auro custom element has a dependency on the [Auro Design Tokens](
107
107
  In cases where the project is not able to process JS assets, there are pre-processed assets available for use. Legacy browsers such as IE11 are no longer supported.
108
108
 
109
109
  ```html
110
- <script type="module "src="https://cdn.jsdelivr.net/npm/@aurodesignsystem/auro-formkit@2.1.0-beta.1/auro-dropdown/+esm"></script>
110
+ <script type="module "src="https://cdn.jsdelivr.net/npm/@aurodesignsystem/auro-formkit@2.1.0-beta.3/auro-dropdown/+esm"></script>
111
111
  ```
112
112
  <!-- AURO-GENERATED-CONTENT:END -->
113
113
 
@@ -23,7 +23,7 @@
23
23
  | [fullscreenBreakpoint](#fullscreenBreakpoint) | `fullscreenBreakpoint` | ` String ` | | Defines the screen size breakpoint (`lg`, `md`, `sm`, or `xs`) at which the dropdown switches to fullscreen mode on mobile. When expanded, the dropdown will automatically display in fullscreen mode if the screen size is equal to or smaller than the selected breakpoint. |
24
24
  | [hoverToggle](#hoverToggle) | `hoverToggle` | ` Boolean ` | | If declared, the trigger will toggle the dropdown on mouseover/mouseout. |
25
25
  | [inset](#inset) | `inset` | ` Boolean ` | | If declared, will apply padding around trigger slot content. |
26
- | [isBibFullscreen](#isBibFullscreen) | `isBibFullscreen` | `boolean` | false | If true, the dropdown bib is taking the fullscreen when it's open |
26
+ | [isBibFullscreen](#isBibFullscreen) | `isBibFullscreen` | `boolean` | false | If true, the dropdown bib is taking the fullscreen when it's open. |
27
27
  | [isPopoverVisible](#isPopoverVisible) | `isPopoverVisible` | ` Boolean ` | false | If true, the dropdown bib is displayed. |
28
28
  | [matchWidth](#matchWidth) | `matchWidth` | ` Boolean ` | false | If declared, the popover and trigger will be set to the same width. |
29
29
  | [noHideOnThisFocusLoss](#noHideOnThisFocusLoss) | `noHideOnThisFocusLoss` | ` Boolean ` | false | If declared, the dropdown will not hide when moving focus outside the element. |
@@ -2731,7 +2731,7 @@ class AuroDropdownBib extends r {
2731
2731
 
2732
2732
  var dropdownVersion = '3.0.0';
2733
2733
 
2734
- var styleCss$1 = i$3`:host{position:relative;display:inline-block;max-width:100%}:host([fluid]){display:block}#bibSizer{position:absolute;z-index:-1;opacity:0;pointer-events:none}.label{font-size:var(--ds-text-body-size-xs, 0.75rem);line-height:var(--ds-text-body-size-default, 1rem);transition:font-size .3s cubic-bezier(0.215, 0.61, 0.355, 1);white-space:normal}.label[hasTrigger=false]{font-size:var(--ds-text-body-size-default, 1rem)}.trigger{position:relative;display:flex;align-items:center}.trigger[showBorder]{border-width:1px;border-style:solid;cursor:pointer;outline-style:solid;outline-width:1px}@media(hover: hover){.trigger:hover{cursor:pointer}}.triggerContentWrapper{overflow:hidden;flex:1;text-overflow:ellipsis;white-space:nowrap}#showStateIcon{display:flex;overflow:hidden;height:100%;align-items:center;margin-left:var(--ds-size-100, 0.5rem)}#showStateIcon [auro-icon]{height:var(--ds-size-300, 1.5rem);line-height:var(--ds-size-300, 1.5rem)}#showStateIcon[data-expanded=true] [auro-icon]{transform:rotate(-180deg)}:host([matchwidth]) #bibSizer{width:100%}:host([disabled]){pointer-events:none}:host([inset]) .trigger{padding:var(--ds-size-150, 0.75rem) var(--ds-size-200, 1rem)}:host([common]) .trigger,:host([inset][bordered]) .trigger{padding:var(--ds-size-200, 1rem) var(--ds-size-150, 0.75rem)}:host([common]) .trigger,:host([rounded]) .trigger{border-radius:var(--ds-border-radius, 0.375rem)}`;
2734
+ var styleCss$1 = i$3`:host{position:relative;display:inline-block;max-width:100%}:host([fluid]){display:block}#bibSizer{position:absolute;z-index:-1;opacity:0;pointer-events:none}.label{font-size:var(--ds-text-body-size-xs, 0.75rem);line-height:var(--ds-text-body-size-default, 1rem);transition:font-size .3s cubic-bezier(0.215, 0.61, 0.355, 1);white-space:normal}.label[hasTrigger=false]{font-size:var(--ds-text-body-size-default, 1rem)}.trigger{position:relative;display:flex;align-items:center}.trigger[showBorder]{border-width:1px;border-style:solid;cursor:pointer;outline-style:solid;outline-width:1px}@media(hover: hover){.trigger:hover{cursor:pointer}}.triggerContentWrapper{overflow:hidden;flex:1;text-overflow:ellipsis;white-space:nowrap}#showStateIcon{display:flex;overflow:hidden;height:100%;align-items:center;margin-left:var(--ds-size-100, 0.5rem)}#showStateIcon [auro-icon]{height:var(--ds-size-300, 1.5rem);line-height:var(--ds-size-300, 1.5rem)}#showStateIcon[data-expanded=true] [auro-icon]{transform:rotate(-180deg)}:host([matchwidth]) #bibSizer{width:100%}:host([disabled]){pointer-events:none}:host([inset]) .trigger{padding:var(--ds-size-150, 0.75rem) var(--ds-size-200, 1rem)}:host([common]) .trigger,:host([inset][bordered]) .trigger{padding:var(--ds-size-200, 1rem) var(--ds-size-150, 0.75rem)}:host([inset][bordered][labeled]) .trigger{padding:var(--ds-size-100, 0.5rem) var(--ds-size-150, 0.75rem)}:host([common]) .trigger,:host([rounded]) .trigger{border-radius:var(--ds-border-radius, 0.375rem)}`;
2735
2735
 
2736
2736
  var colorCss$1 = i$3`.label{color:var(--ds-auro-dropdown-label-text-color)}.trigger{border-color:var(--ds-auro-dropdown-trigger-border-color);background-color:var(--ds-auro-dropdown-trigger-container-color);color:var(--ds-auro-dropdown-trigger-text-color);outline-color:var(--ds-auro-dropdown-trigger-outline-color)}.trigger:focus-within,.trigger:active{--ds-auro-dropdown-trigger-border-color: var(--ds-color-border-active-default, #0074c8);--ds-auro-dropdown-trigger-outline-color: var(--ds-color-border-active-default, #0074c8)}.trigger:focus-within:not(:active){--ds-auro-dropdown-trigger-border-color: var(--ds-color-border-ui-focus-default, #2c67b5);--ds-auro-dropdown-trigger-outline-color: var(--ds-color-border-ui-focus-default, #2c67b5)}.trigger:hover{--ds-auro-dropdown-trigger-container-color: var(--ds-color-container-ui-secondary-hover-default, rgba(0, 0, 0, 0.03))}:host([disabled]){--ds-auro-dropdown-trigger-text-color: var(--ds-color-text-ui-disabled-default, #adadad);--ds-auro-dropdown-label-text-color: var(--ds-color-text-ui-disabled-default, #adadad)}:host([common]),:host([bordered]){--ds-auro-dropdown-trigger-border-color: var(--ds-color-border-primary-default, #585e67)}:host([common]) .trigger:active,:host([common]) .trigger:focus-within,:host([bordered]) .trigger:active,:host([bordered]) .trigger:focus-within{--ds-auro-dropdown-trigger-border-color: var(--ds-color-border-ui-focus-default, #2c67b5)}:host([error]){--ds-auro-dropdown-trigger-border-color: var(--ds-color-border-error-default, #cc1816)}:host([error]) .trigger{outline:solid 1px var(--ds-auro-dropdown-trigger-border-color)}:host([error]) .trigger:focus-within,:host([error]) .trigger:active{--ds-auro-dropdown-trigger-border-color: var(--ds-color-border-active-default, #0074c8)}:host([error]) .trigger:active{box-shadow:none;outline:none}:host([disabled][common]),:host([disabled][bordered]){--ds-auro-dropdown-trigger-border-color: var(--ds-color-border-ui-disabled-default, #adadad)}`;
2737
2737
 
@@ -2995,6 +2995,7 @@ class AuroDropdown extends r {
2995
2995
  this.rounded = false;
2996
2996
  this.tabIndex = 0;
2997
2997
  this.noToggle = false;
2998
+ this.labeled = true;
2998
2999
 
2999
3000
  /**
3000
3001
  * @private
@@ -3147,7 +3148,7 @@ class AuroDropdown extends r {
3147
3148
  },
3148
3149
 
3149
3150
  /**
3150
- * If true, the dropdown bib is taking the fullscreen when it's open
3151
+ * If true, the dropdown bib is taking the fullscreen when it's open.
3151
3152
  */
3152
3153
  isBibFullscreen: {
3153
3154
  type: Boolean,
@@ -3177,6 +3178,15 @@ class AuroDropdown extends r {
3177
3178
  reflect: true
3178
3179
  },
3179
3180
 
3181
+ /**
3182
+ * Defines if there is a label preset.
3183
+ * @private
3184
+ */
3185
+ labeled: {
3186
+ type: Boolean,
3187
+ reflect: true
3188
+ },
3189
+
3180
3190
  /**
3181
3191
  * If declared, the popover and trigger will be set to the same width.
3182
3192
  */
@@ -3256,6 +3266,7 @@ class AuroDropdown extends r {
3256
3266
 
3257
3267
  disconnectedCallback() {
3258
3268
  super.disconnectedCallback();
3269
+ this.floater.disconnect();
3259
3270
  }
3260
3271
 
3261
3272
  updated(changedProperties) {
@@ -3385,13 +3396,21 @@ class AuroDropdown extends r {
3385
3396
  handleTriggerContentSlotChange(event) {
3386
3397
  this.floater.handleTriggerTabIndex();
3387
3398
 
3388
- const triggerContentNodes = this.shadowRoot.querySelector('.triggerContent slot').assignedNodes();
3399
+ const triggerSlot = this.shadowRoot.querySelector('.triggerContent slot');
3389
3400
 
3390
- triggerContentNodes.forEach((node) => {
3391
- if (!this.triggerContentFocusable) {
3392
- this.triggerContentFocusable = this.containsFocusableElement(node);
3401
+ if (triggerSlot) {
3402
+
3403
+ const triggerContentNodes = triggerSlot.assignedNodes();
3404
+
3405
+ if (triggerContentNodes) {
3406
+
3407
+ triggerContentNodes.forEach((node) => {
3408
+ if (!this.triggerContentFocusable) {
3409
+ this.triggerContentFocusable = this.containsFocusableElement(node);
3410
+ }
3411
+ });
3393
3412
  }
3394
- });
3413
+ }
3395
3414
 
3396
3415
  const trigger = this.shadowRoot.querySelector('#trigger');
3397
3416
 
@@ -3445,6 +3464,29 @@ class AuroDropdown extends r {
3445
3464
  }
3446
3465
  }
3447
3466
 
3467
+ /**
3468
+ * @private
3469
+ * @method handleLabelSlotChange
3470
+ * @param {event} event - The event object representing the slot change.
3471
+ * @description Handles the slot change event for the label slot.
3472
+ */
3473
+ handleLabelSlotChange (event) {
3474
+
3475
+ // Get the nodes from the event
3476
+ const nodes = event.target.assignedNodes();
3477
+
3478
+ // Guard clause for no nodes
3479
+ if (!nodes) {
3480
+ return;
3481
+ }
3482
+
3483
+ // Convert the nodes to a measurable array so we can get the length
3484
+ const nodesArr = Array.from(nodes);
3485
+
3486
+ // If the nodes array has a length, the dropdown is labeled
3487
+ this.labeled = nodesArr.length > 0;
3488
+ }
3489
+
3448
3490
  // function that renders the HTML and CSS into the scope of the component
3449
3491
  render() {
3450
3492
  return u$1`
@@ -3459,7 +3501,7 @@ class AuroDropdown extends r {
3459
3501
  >
3460
3502
  <div class="triggerContentWrapper">
3461
3503
  <label class="label" id="triggerLabel" hasTrigger=${this.hasTriggerContent}>
3462
- <slot name="label"></slot>
3504
+ <slot name="label" @slotchange="${this.handleLabelSlotChange}"></slot>
3463
3505
  </label>
3464
3506
  <div class="triggerContent">
3465
3507
  <slot
@@ -2706,7 +2706,7 @@ class AuroDropdownBib extends r {
2706
2706
 
2707
2707
  var dropdownVersion = '3.0.0';
2708
2708
 
2709
- var styleCss$1 = i$3`:host{position:relative;display:inline-block;max-width:100%}:host([fluid]){display:block}#bibSizer{position:absolute;z-index:-1;opacity:0;pointer-events:none}.label{font-size:var(--ds-text-body-size-xs, 0.75rem);line-height:var(--ds-text-body-size-default, 1rem);transition:font-size .3s cubic-bezier(0.215, 0.61, 0.355, 1);white-space:normal}.label[hasTrigger=false]{font-size:var(--ds-text-body-size-default, 1rem)}.trigger{position:relative;display:flex;align-items:center}.trigger[showBorder]{border-width:1px;border-style:solid;cursor:pointer;outline-style:solid;outline-width:1px}@media(hover: hover){.trigger:hover{cursor:pointer}}.triggerContentWrapper{overflow:hidden;flex:1;text-overflow:ellipsis;white-space:nowrap}#showStateIcon{display:flex;overflow:hidden;height:100%;align-items:center;margin-left:var(--ds-size-100, 0.5rem)}#showStateIcon [auro-icon]{height:var(--ds-size-300, 1.5rem);line-height:var(--ds-size-300, 1.5rem)}#showStateIcon[data-expanded=true] [auro-icon]{transform:rotate(-180deg)}:host([matchwidth]) #bibSizer{width:100%}:host([disabled]){pointer-events:none}:host([inset]) .trigger{padding:var(--ds-size-150, 0.75rem) var(--ds-size-200, 1rem)}:host([common]) .trigger,:host([inset][bordered]) .trigger{padding:var(--ds-size-200, 1rem) var(--ds-size-150, 0.75rem)}:host([common]) .trigger,:host([rounded]) .trigger{border-radius:var(--ds-border-radius, 0.375rem)}`;
2709
+ var styleCss$1 = i$3`:host{position:relative;display:inline-block;max-width:100%}:host([fluid]){display:block}#bibSizer{position:absolute;z-index:-1;opacity:0;pointer-events:none}.label{font-size:var(--ds-text-body-size-xs, 0.75rem);line-height:var(--ds-text-body-size-default, 1rem);transition:font-size .3s cubic-bezier(0.215, 0.61, 0.355, 1);white-space:normal}.label[hasTrigger=false]{font-size:var(--ds-text-body-size-default, 1rem)}.trigger{position:relative;display:flex;align-items:center}.trigger[showBorder]{border-width:1px;border-style:solid;cursor:pointer;outline-style:solid;outline-width:1px}@media(hover: hover){.trigger:hover{cursor:pointer}}.triggerContentWrapper{overflow:hidden;flex:1;text-overflow:ellipsis;white-space:nowrap}#showStateIcon{display:flex;overflow:hidden;height:100%;align-items:center;margin-left:var(--ds-size-100, 0.5rem)}#showStateIcon [auro-icon]{height:var(--ds-size-300, 1.5rem);line-height:var(--ds-size-300, 1.5rem)}#showStateIcon[data-expanded=true] [auro-icon]{transform:rotate(-180deg)}:host([matchwidth]) #bibSizer{width:100%}:host([disabled]){pointer-events:none}:host([inset]) .trigger{padding:var(--ds-size-150, 0.75rem) var(--ds-size-200, 1rem)}:host([common]) .trigger,:host([inset][bordered]) .trigger{padding:var(--ds-size-200, 1rem) var(--ds-size-150, 0.75rem)}:host([inset][bordered][labeled]) .trigger{padding:var(--ds-size-100, 0.5rem) var(--ds-size-150, 0.75rem)}:host([common]) .trigger,:host([rounded]) .trigger{border-radius:var(--ds-border-radius, 0.375rem)}`;
2710
2710
 
2711
2711
  var colorCss$1 = i$3`.label{color:var(--ds-auro-dropdown-label-text-color)}.trigger{border-color:var(--ds-auro-dropdown-trigger-border-color);background-color:var(--ds-auro-dropdown-trigger-container-color);color:var(--ds-auro-dropdown-trigger-text-color);outline-color:var(--ds-auro-dropdown-trigger-outline-color)}.trigger:focus-within,.trigger:active{--ds-auro-dropdown-trigger-border-color: var(--ds-color-border-active-default, #0074c8);--ds-auro-dropdown-trigger-outline-color: var(--ds-color-border-active-default, #0074c8)}.trigger:focus-within:not(:active){--ds-auro-dropdown-trigger-border-color: var(--ds-color-border-ui-focus-default, #2c67b5);--ds-auro-dropdown-trigger-outline-color: var(--ds-color-border-ui-focus-default, #2c67b5)}.trigger:hover{--ds-auro-dropdown-trigger-container-color: var(--ds-color-container-ui-secondary-hover-default, rgba(0, 0, 0, 0.03))}:host([disabled]){--ds-auro-dropdown-trigger-text-color: var(--ds-color-text-ui-disabled-default, #adadad);--ds-auro-dropdown-label-text-color: var(--ds-color-text-ui-disabled-default, #adadad)}:host([common]),:host([bordered]){--ds-auro-dropdown-trigger-border-color: var(--ds-color-border-primary-default, #585e67)}:host([common]) .trigger:active,:host([common]) .trigger:focus-within,:host([bordered]) .trigger:active,:host([bordered]) .trigger:focus-within{--ds-auro-dropdown-trigger-border-color: var(--ds-color-border-ui-focus-default, #2c67b5)}:host([error]){--ds-auro-dropdown-trigger-border-color: var(--ds-color-border-error-default, #cc1816)}:host([error]) .trigger{outline:solid 1px var(--ds-auro-dropdown-trigger-border-color)}:host([error]) .trigger:focus-within,:host([error]) .trigger:active{--ds-auro-dropdown-trigger-border-color: var(--ds-color-border-active-default, #0074c8)}:host([error]) .trigger:active{box-shadow:none;outline:none}:host([disabled][common]),:host([disabled][bordered]){--ds-auro-dropdown-trigger-border-color: var(--ds-color-border-ui-disabled-default, #adadad)}`;
2712
2712
 
@@ -2970,6 +2970,7 @@ class AuroDropdown extends r {
2970
2970
  this.rounded = false;
2971
2971
  this.tabIndex = 0;
2972
2972
  this.noToggle = false;
2973
+ this.labeled = true;
2973
2974
 
2974
2975
  /**
2975
2976
  * @private
@@ -3122,7 +3123,7 @@ class AuroDropdown extends r {
3122
3123
  },
3123
3124
 
3124
3125
  /**
3125
- * If true, the dropdown bib is taking the fullscreen when it's open
3126
+ * If true, the dropdown bib is taking the fullscreen when it's open.
3126
3127
  */
3127
3128
  isBibFullscreen: {
3128
3129
  type: Boolean,
@@ -3152,6 +3153,15 @@ class AuroDropdown extends r {
3152
3153
  reflect: true
3153
3154
  },
3154
3155
 
3156
+ /**
3157
+ * Defines if there is a label preset.
3158
+ * @private
3159
+ */
3160
+ labeled: {
3161
+ type: Boolean,
3162
+ reflect: true
3163
+ },
3164
+
3155
3165
  /**
3156
3166
  * If declared, the popover and trigger will be set to the same width.
3157
3167
  */
@@ -3231,6 +3241,7 @@ class AuroDropdown extends r {
3231
3241
 
3232
3242
  disconnectedCallback() {
3233
3243
  super.disconnectedCallback();
3244
+ this.floater.disconnect();
3234
3245
  }
3235
3246
 
3236
3247
  updated(changedProperties) {
@@ -3360,13 +3371,21 @@ class AuroDropdown extends r {
3360
3371
  handleTriggerContentSlotChange(event) {
3361
3372
  this.floater.handleTriggerTabIndex();
3362
3373
 
3363
- const triggerContentNodes = this.shadowRoot.querySelector('.triggerContent slot').assignedNodes();
3374
+ const triggerSlot = this.shadowRoot.querySelector('.triggerContent slot');
3364
3375
 
3365
- triggerContentNodes.forEach((node) => {
3366
- if (!this.triggerContentFocusable) {
3367
- this.triggerContentFocusable = this.containsFocusableElement(node);
3376
+ if (triggerSlot) {
3377
+
3378
+ const triggerContentNodes = triggerSlot.assignedNodes();
3379
+
3380
+ if (triggerContentNodes) {
3381
+
3382
+ triggerContentNodes.forEach((node) => {
3383
+ if (!this.triggerContentFocusable) {
3384
+ this.triggerContentFocusable = this.containsFocusableElement(node);
3385
+ }
3386
+ });
3368
3387
  }
3369
- });
3388
+ }
3370
3389
 
3371
3390
  const trigger = this.shadowRoot.querySelector('#trigger');
3372
3391
 
@@ -3420,6 +3439,29 @@ class AuroDropdown extends r {
3420
3439
  }
3421
3440
  }
3422
3441
 
3442
+ /**
3443
+ * @private
3444
+ * @method handleLabelSlotChange
3445
+ * @param {event} event - The event object representing the slot change.
3446
+ * @description Handles the slot change event for the label slot.
3447
+ */
3448
+ handleLabelSlotChange (event) {
3449
+
3450
+ // Get the nodes from the event
3451
+ const nodes = event.target.assignedNodes();
3452
+
3453
+ // Guard clause for no nodes
3454
+ if (!nodes) {
3455
+ return;
3456
+ }
3457
+
3458
+ // Convert the nodes to a measurable array so we can get the length
3459
+ const nodesArr = Array.from(nodes);
3460
+
3461
+ // If the nodes array has a length, the dropdown is labeled
3462
+ this.labeled = nodesArr.length > 0;
3463
+ }
3464
+
3423
3465
  // function that renders the HTML and CSS into the scope of the component
3424
3466
  render() {
3425
3467
  return u$1`
@@ -3434,7 +3476,7 @@ class AuroDropdown extends r {
3434
3476
  >
3435
3477
  <div class="triggerContentWrapper">
3436
3478
  <label class="label" id="triggerLabel" hasTrigger=${this.hasTriggerContent}>
3437
- <slot name="label"></slot>
3479
+ <slot name="label" @slotchange="${this.handleLabelSlotChange}"></slot>
3438
3480
  </label>
3439
3481
  <div class="triggerContent">
3440
3482
  <slot
@@ -107,7 +107,7 @@ The use of any Auro custom element has a dependency on the [Auro Design Tokens](
107
107
  In cases where the project is not able to process JS assets, there are pre-processed assets available for use. Legacy browsers such as IE11 are no longer supported.
108
108
 
109
109
  ```html
110
- <script type="module "src="https://cdn.jsdelivr.net/npm/@aurodesignsystem/auro-formkit@2.1.0-beta.1/auro-dropdown/+esm"></script>
110
+ <script type="module "src="https://cdn.jsdelivr.net/npm/@aurodesignsystem/auro-formkit@2.1.0-beta.3/auro-dropdown/+esm"></script>
111
111
  ```
112
112
  <!-- AURO-GENERATED-CONTENT:END -->
113
113
 
@@ -82,7 +82,7 @@ export class AuroDropdown extends LitElement {
82
82
  type: BooleanConstructor;
83
83
  };
84
84
  /**
85
- * If true, the dropdown bib is taking the fullscreen when it's open
85
+ * If true, the dropdown bib is taking the fullscreen when it's open.
86
86
  */
87
87
  isBibFullscreen: {
88
88
  type: BooleanConstructor;
@@ -108,6 +108,14 @@ export class AuroDropdown extends LitElement {
108
108
  type: StringConstructor;
109
109
  reflect: boolean;
110
110
  };
111
+ /**
112
+ * Defines if there is a label preset.
113
+ * @private
114
+ */
115
+ labeled: {
116
+ type: BooleanConstructor;
117
+ reflect: boolean;
118
+ };
111
119
  /**
112
120
  * If declared, the popover and trigger will be set to the same width.
113
121
  */
@@ -188,6 +196,7 @@ export class AuroDropdown extends LitElement {
188
196
  placement: string;
189
197
  rounded: boolean;
190
198
  noToggle: boolean;
199
+ labeled: boolean;
191
200
  /**
192
201
  * @private
193
202
  */
@@ -279,6 +288,13 @@ export class AuroDropdown extends LitElement {
279
288
  * @fires Function#onSlotChange - Optional callback invoked when the slot content changes.
280
289
  */
281
290
  private handleDefaultSlot;
291
+ /**
292
+ * @private
293
+ * @method handleLabelSlotChange
294
+ * @param {event} event - The event object representing the slot change.
295
+ * @description Handles the slot change event for the label slot.
296
+ */
297
+ private handleLabelSlotChange;
282
298
  render(): import("lit-html").TemplateResult;
283
299
  }
284
300
  import { LitElement } from "lit";
@@ -2659,7 +2659,7 @@ class AuroDropdownBib extends LitElement {
2659
2659
 
2660
2660
  var dropdownVersion = '3.0.0';
2661
2661
 
2662
- var styleCss$1 = css`:host{position:relative;display:inline-block;max-width:100%}:host([fluid]){display:block}#bibSizer{position:absolute;z-index:-1;opacity:0;pointer-events:none}.label{font-size:var(--ds-text-body-size-xs, 0.75rem);line-height:var(--ds-text-body-size-default, 1rem);transition:font-size .3s cubic-bezier(0.215, 0.61, 0.355, 1);white-space:normal}.label[hasTrigger=false]{font-size:var(--ds-text-body-size-default, 1rem)}.trigger{position:relative;display:flex;align-items:center}.trigger[showBorder]{border-width:1px;border-style:solid;cursor:pointer;outline-style:solid;outline-width:1px}@media(hover: hover){.trigger:hover{cursor:pointer}}.triggerContentWrapper{overflow:hidden;flex:1;text-overflow:ellipsis;white-space:nowrap}#showStateIcon{display:flex;overflow:hidden;height:100%;align-items:center;margin-left:var(--ds-size-100, 0.5rem)}#showStateIcon [auro-icon]{height:var(--ds-size-300, 1.5rem);line-height:var(--ds-size-300, 1.5rem)}#showStateIcon[data-expanded=true] [auro-icon]{transform:rotate(-180deg)}:host([matchwidth]) #bibSizer{width:100%}:host([disabled]){pointer-events:none}:host([inset]) .trigger{padding:var(--ds-size-150, 0.75rem) var(--ds-size-200, 1rem)}:host([common]) .trigger,:host([inset][bordered]) .trigger{padding:var(--ds-size-200, 1rem) var(--ds-size-150, 0.75rem)}:host([common]) .trigger,:host([rounded]) .trigger{border-radius:var(--ds-border-radius, 0.375rem)}`;
2662
+ var styleCss$1 = css`:host{position:relative;display:inline-block;max-width:100%}:host([fluid]){display:block}#bibSizer{position:absolute;z-index:-1;opacity:0;pointer-events:none}.label{font-size:var(--ds-text-body-size-xs, 0.75rem);line-height:var(--ds-text-body-size-default, 1rem);transition:font-size .3s cubic-bezier(0.215, 0.61, 0.355, 1);white-space:normal}.label[hasTrigger=false]{font-size:var(--ds-text-body-size-default, 1rem)}.trigger{position:relative;display:flex;align-items:center}.trigger[showBorder]{border-width:1px;border-style:solid;cursor:pointer;outline-style:solid;outline-width:1px}@media(hover: hover){.trigger:hover{cursor:pointer}}.triggerContentWrapper{overflow:hidden;flex:1;text-overflow:ellipsis;white-space:nowrap}#showStateIcon{display:flex;overflow:hidden;height:100%;align-items:center;margin-left:var(--ds-size-100, 0.5rem)}#showStateIcon [auro-icon]{height:var(--ds-size-300, 1.5rem);line-height:var(--ds-size-300, 1.5rem)}#showStateIcon[data-expanded=true] [auro-icon]{transform:rotate(-180deg)}:host([matchwidth]) #bibSizer{width:100%}:host([disabled]){pointer-events:none}:host([inset]) .trigger{padding:var(--ds-size-150, 0.75rem) var(--ds-size-200, 1rem)}:host([common]) .trigger,:host([inset][bordered]) .trigger{padding:var(--ds-size-200, 1rem) var(--ds-size-150, 0.75rem)}:host([inset][bordered][labeled]) .trigger{padding:var(--ds-size-100, 0.5rem) var(--ds-size-150, 0.75rem)}:host([common]) .trigger,:host([rounded]) .trigger{border-radius:var(--ds-border-radius, 0.375rem)}`;
2663
2663
 
2664
2664
  var colorCss$1 = css`.label{color:var(--ds-auro-dropdown-label-text-color)}.trigger{border-color:var(--ds-auro-dropdown-trigger-border-color);background-color:var(--ds-auro-dropdown-trigger-container-color);color:var(--ds-auro-dropdown-trigger-text-color);outline-color:var(--ds-auro-dropdown-trigger-outline-color)}.trigger:focus-within,.trigger:active{--ds-auro-dropdown-trigger-border-color: var(--ds-color-border-active-default, #0074c8);--ds-auro-dropdown-trigger-outline-color: var(--ds-color-border-active-default, #0074c8)}.trigger:focus-within:not(:active){--ds-auro-dropdown-trigger-border-color: var(--ds-color-border-ui-focus-default, #2c67b5);--ds-auro-dropdown-trigger-outline-color: var(--ds-color-border-ui-focus-default, #2c67b5)}.trigger:hover{--ds-auro-dropdown-trigger-container-color: var(--ds-color-container-ui-secondary-hover-default, rgba(0, 0, 0, 0.03))}:host([disabled]){--ds-auro-dropdown-trigger-text-color: var(--ds-color-text-ui-disabled-default, #adadad);--ds-auro-dropdown-label-text-color: var(--ds-color-text-ui-disabled-default, #adadad)}:host([common]),:host([bordered]){--ds-auro-dropdown-trigger-border-color: var(--ds-color-border-primary-default, #585e67)}:host([common]) .trigger:active,:host([common]) .trigger:focus-within,:host([bordered]) .trigger:active,:host([bordered]) .trigger:focus-within{--ds-auro-dropdown-trigger-border-color: var(--ds-color-border-ui-focus-default, #2c67b5)}:host([error]){--ds-auro-dropdown-trigger-border-color: var(--ds-color-border-error-default, #cc1816)}:host([error]) .trigger{outline:solid 1px var(--ds-auro-dropdown-trigger-border-color)}:host([error]) .trigger:focus-within,:host([error]) .trigger:active{--ds-auro-dropdown-trigger-border-color: var(--ds-color-border-active-default, #0074c8)}:host([error]) .trigger:active{box-shadow:none;outline:none}:host([disabled][common]),:host([disabled][bordered]){--ds-auro-dropdown-trigger-border-color: var(--ds-color-border-ui-disabled-default, #adadad)}`;
2665
2665
 
@@ -2923,6 +2923,7 @@ class AuroDropdown extends LitElement {
2923
2923
  this.rounded = false;
2924
2924
  this.tabIndex = 0;
2925
2925
  this.noToggle = false;
2926
+ this.labeled = true;
2926
2927
 
2927
2928
  /**
2928
2929
  * @private
@@ -3075,7 +3076,7 @@ class AuroDropdown extends LitElement {
3075
3076
  },
3076
3077
 
3077
3078
  /**
3078
- * If true, the dropdown bib is taking the fullscreen when it's open
3079
+ * If true, the dropdown bib is taking the fullscreen when it's open.
3079
3080
  */
3080
3081
  isBibFullscreen: {
3081
3082
  type: Boolean,
@@ -3105,6 +3106,15 @@ class AuroDropdown extends LitElement {
3105
3106
  reflect: true
3106
3107
  },
3107
3108
 
3109
+ /**
3110
+ * Defines if there is a label preset.
3111
+ * @private
3112
+ */
3113
+ labeled: {
3114
+ type: Boolean,
3115
+ reflect: true
3116
+ },
3117
+
3108
3118
  /**
3109
3119
  * If declared, the popover and trigger will be set to the same width.
3110
3120
  */
@@ -3184,6 +3194,7 @@ class AuroDropdown extends LitElement {
3184
3194
 
3185
3195
  disconnectedCallback() {
3186
3196
  super.disconnectedCallback();
3197
+ this.floater.disconnect();
3187
3198
  }
3188
3199
 
3189
3200
  updated(changedProperties) {
@@ -3313,13 +3324,21 @@ class AuroDropdown extends LitElement {
3313
3324
  handleTriggerContentSlotChange(event) {
3314
3325
  this.floater.handleTriggerTabIndex();
3315
3326
 
3316
- const triggerContentNodes = this.shadowRoot.querySelector('.triggerContent slot').assignedNodes();
3327
+ const triggerSlot = this.shadowRoot.querySelector('.triggerContent slot');
3317
3328
 
3318
- triggerContentNodes.forEach((node) => {
3319
- if (!this.triggerContentFocusable) {
3320
- this.triggerContentFocusable = this.containsFocusableElement(node);
3329
+ if (triggerSlot) {
3330
+
3331
+ const triggerContentNodes = triggerSlot.assignedNodes();
3332
+
3333
+ if (triggerContentNodes) {
3334
+
3335
+ triggerContentNodes.forEach((node) => {
3336
+ if (!this.triggerContentFocusable) {
3337
+ this.triggerContentFocusable = this.containsFocusableElement(node);
3338
+ }
3339
+ });
3321
3340
  }
3322
- });
3341
+ }
3323
3342
 
3324
3343
  const trigger = this.shadowRoot.querySelector('#trigger');
3325
3344
 
@@ -3373,6 +3392,29 @@ class AuroDropdown extends LitElement {
3373
3392
  }
3374
3393
  }
3375
3394
 
3395
+ /**
3396
+ * @private
3397
+ * @method handleLabelSlotChange
3398
+ * @param {event} event - The event object representing the slot change.
3399
+ * @description Handles the slot change event for the label slot.
3400
+ */
3401
+ handleLabelSlotChange (event) {
3402
+
3403
+ // Get the nodes from the event
3404
+ const nodes = event.target.assignedNodes();
3405
+
3406
+ // Guard clause for no nodes
3407
+ if (!nodes) {
3408
+ return;
3409
+ }
3410
+
3411
+ // Convert the nodes to a measurable array so we can get the length
3412
+ const nodesArr = Array.from(nodes);
3413
+
3414
+ // If the nodes array has a length, the dropdown is labeled
3415
+ this.labeled = nodesArr.length > 0;
3416
+ }
3417
+
3376
3418
  // function that renders the HTML and CSS into the scope of the component
3377
3419
  render() {
3378
3420
  return html$1`
@@ -3387,7 +3429,7 @@ class AuroDropdown extends LitElement {
3387
3429
  >
3388
3430
  <div class="triggerContentWrapper">
3389
3431
  <label class="label" id="triggerLabel" hasTrigger=${this.hasTriggerContent}>
3390
- <slot name="label"></slot>
3432
+ <slot name="label" @slotchange="${this.handleLabelSlotChange}"></slot>
3391
3433
  </label>
3392
3434
  <div class="triggerContent">
3393
3435
  <slot