@ionic/core 8.0.1 → 8.0.2-dev.11714165638.13e7dd5b

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 (124) hide show
  1. package/components/checkbox.js +3 -3
  2. package/components/ion-accordion-group.js +2 -2
  3. package/components/ion-datetime.js +2 -2
  4. package/components/ion-input.js +3 -3
  5. package/components/ion-range.js +3 -3
  6. package/components/ion-searchbar.js +4 -4
  7. package/components/ion-segment.js +2 -2
  8. package/components/ion-select.js +2 -2
  9. package/components/ion-textarea.js +2 -2
  10. package/components/ion-toggle.js +3 -3
  11. package/components/label.js +1 -1
  12. package/components/picker-column.js +3 -3
  13. package/components/radio-group.js +1 -1
  14. package/components/select-popover.js +1 -1
  15. package/css/core.css.map +1 -1
  16. package/css/global.bundle.css.map +1 -1
  17. package/css/ionic.bundle.css.map +1 -1
  18. package/css/palettes/high-contrast-dark.always.css.map +1 -1
  19. package/css/palettes/high-contrast-dark.class.css.map +1 -1
  20. package/css/palettes/high-contrast-dark.system.css.map +1 -1
  21. package/css/palettes/high-contrast.always.css.map +1 -1
  22. package/css/palettes/high-contrast.class.css.map +1 -1
  23. package/css/palettes/high-contrast.system.css.map +1 -1
  24. package/css/typography.css.map +1 -1
  25. package/dist/cjs/ion-accordion_2.cjs.entry.js +2 -2
  26. package/dist/cjs/ion-checkbox.cjs.entry.js +3 -3
  27. package/dist/cjs/ion-datetime_3.cjs.entry.js +2 -2
  28. package/dist/cjs/ion-input.cjs.entry.js +3 -3
  29. package/dist/cjs/ion-item_8.cjs.entry.js +1 -1
  30. package/dist/cjs/ion-picker-column.cjs.entry.js +3 -3
  31. package/dist/cjs/ion-radio_2.cjs.entry.js +1 -1
  32. package/dist/cjs/ion-range.cjs.entry.js +3 -3
  33. package/dist/cjs/ion-searchbar.cjs.entry.js +4 -4
  34. package/dist/cjs/ion-segment_2.cjs.entry.js +2 -2
  35. package/dist/cjs/ion-select_3.cjs.entry.js +3 -3
  36. package/dist/cjs/ion-textarea.cjs.entry.js +2 -2
  37. package/dist/cjs/ion-toggle.cjs.entry.js +3 -3
  38. package/dist/collection/components/accordion-group/accordion-group.js +3 -3
  39. package/dist/collection/components/checkbox/checkbox.js +4 -4
  40. package/dist/collection/components/datetime/datetime.js +3 -3
  41. package/dist/collection/components/input/input.js +4 -4
  42. package/dist/collection/components/item/test/a11y/item.e2e.js +1 -4
  43. package/dist/collection/components/label/label.ios.css +1 -1
  44. package/dist/collection/components/picker-column/picker-column.js +4 -4
  45. package/dist/collection/components/radio-group/radio-group.js +2 -2
  46. package/dist/collection/components/range/range.js +4 -4
  47. package/dist/collection/components/searchbar/searchbar.js +5 -5
  48. package/dist/collection/components/segment/segment.js +3 -3
  49. package/dist/collection/components/select/select.js +3 -3
  50. package/dist/collection/components/select/test/fill/select.e2e.js +25 -0
  51. package/dist/collection/components/select-popover/select-popover.md.css +8 -1
  52. package/dist/collection/components/textarea/textarea.js +3 -3
  53. package/dist/collection/components/toggle/toggle.js +4 -4
  54. package/dist/docs.json +13 -13
  55. package/dist/esm/ion-accordion_2.entry.js +2 -2
  56. package/dist/esm/ion-checkbox.entry.js +3 -3
  57. package/dist/esm/ion-datetime_3.entry.js +2 -2
  58. package/dist/esm/ion-input.entry.js +3 -3
  59. package/dist/esm/ion-item_8.entry.js +1 -1
  60. package/dist/esm/ion-picker-column.entry.js +3 -3
  61. package/dist/esm/ion-radio_2.entry.js +1 -1
  62. package/dist/esm/ion-range.entry.js +3 -3
  63. package/dist/esm/ion-searchbar.entry.js +4 -4
  64. package/dist/esm/ion-segment_2.entry.js +2 -2
  65. package/dist/esm/ion-select_3.entry.js +3 -3
  66. package/dist/esm/ion-textarea.entry.js +2 -2
  67. package/dist/esm/ion-toggle.entry.js +3 -3
  68. package/dist/esm-es5/ion-accordion_2.entry.js +1 -1
  69. package/dist/esm-es5/ion-checkbox.entry.js +1 -1
  70. package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
  71. package/dist/esm-es5/ion-input.entry.js +1 -1
  72. package/dist/esm-es5/ion-item_8.entry.js +1 -1
  73. package/dist/esm-es5/ion-picker-column.entry.js +1 -1
  74. package/dist/esm-es5/ion-radio_2.entry.js +1 -1
  75. package/dist/esm-es5/ion-range.entry.js +1 -1
  76. package/dist/esm-es5/ion-searchbar.entry.js +1 -1
  77. package/dist/esm-es5/ion-segment_2.entry.js +1 -1
  78. package/dist/esm-es5/ion-select_3.entry.js +1 -1
  79. package/dist/esm-es5/ion-textarea.entry.js +1 -1
  80. package/dist/esm-es5/ion-toggle.entry.js +1 -1
  81. package/dist/ionic/ionic.esm.js +1 -1
  82. package/dist/ionic/{p-cdee3a44.system.entry.js → p-031b070b.system.entry.js} +1 -1
  83. package/dist/ionic/{p-4324e8a4.entry.js → p-0b3861eb.entry.js} +1 -1
  84. package/dist/ionic/{p-583f8865.system.entry.js → p-34619a37.system.entry.js} +1 -1
  85. package/dist/ionic/{p-720927ad.entry.js → p-3ef93daf.entry.js} +1 -1
  86. package/dist/ionic/{p-a801da4b.system.entry.js → p-45aec799.system.entry.js} +1 -1
  87. package/dist/ionic/p-4737e73a.entry.js +4 -0
  88. package/dist/ionic/{p-0d960144.system.entry.js → p-4da143c9.system.entry.js} +1 -1
  89. package/dist/ionic/{p-4c153abb.entry.js → p-515a47f5.entry.js} +1 -1
  90. package/dist/ionic/{p-0d56dea9.entry.js → p-5a6d3cd9.entry.js} +1 -1
  91. package/dist/ionic/{p-e49099b0.entry.js → p-6123d531.entry.js} +1 -1
  92. package/dist/ionic/{p-ee3bbaf2.entry.js → p-69fca47b.entry.js} +1 -1
  93. package/dist/ionic/p-7536b4b3.system.js +1 -1
  94. package/dist/ionic/{p-8e031d97.entry.js → p-75f262d3.entry.js} +1 -1
  95. package/dist/ionic/{p-576786c0.system.entry.js → p-a0fa6344.system.entry.js} +1 -1
  96. package/dist/ionic/{p-42f00e72.system.entry.js → p-a5721afd.system.entry.js} +1 -1
  97. package/dist/ionic/{p-80f85095.system.entry.js → p-b17549e8.system.entry.js} +1 -1
  98. package/dist/ionic/{p-5d4d89e0.system.entry.js → p-b1f78948.system.entry.js} +1 -1
  99. package/dist/ionic/{p-70181008.entry.js → p-b4d78e71.entry.js} +1 -1
  100. package/dist/ionic/{p-5d3a8503.system.entry.js → p-ba9ca25a.system.entry.js} +1 -1
  101. package/dist/ionic/{p-3f5b86b4.entry.js → p-c687e632.entry.js} +1 -1
  102. package/dist/ionic/{p-49cdc4f2.entry.js → p-c977c5bc.entry.js} +1 -1
  103. package/dist/ionic/{p-f5c42f72.entry.js → p-d3ceed28.entry.js} +1 -1
  104. package/dist/ionic/{p-819e8479.system.entry.js → p-d5460f2d.system.entry.js} +1 -1
  105. package/dist/ionic/{p-fc94e18f.entry.js → p-d77dc6ea.entry.js} +1 -1
  106. package/dist/ionic/{p-1a5227b3.system.entry.js → p-ee54bbd2.system.entry.js} +1 -1
  107. package/dist/ionic/{p-567a21a2.system.entry.js → p-f4bc5429.system.entry.js} +1 -1
  108. package/dist/ionic/{p-94731a92.system.entry.js → p-fc6301cd.system.entry.js} +1 -1
  109. package/dist/types/components/accordion-group/accordion-group.d.ts +3 -4
  110. package/dist/types/components/checkbox/checkbox.d.ts +3 -4
  111. package/dist/types/components/datetime/datetime.d.ts +2 -0
  112. package/dist/types/components/input/input.d.ts +2 -0
  113. package/dist/types/components/picker-column/picker-column.d.ts +2 -0
  114. package/dist/types/components/radio-group/radio-group.d.ts +2 -0
  115. package/dist/types/components/range/range.d.ts +1 -1
  116. package/dist/types/components/searchbar/searchbar.d.ts +2 -0
  117. package/dist/types/components/segment/segment.d.ts +3 -2
  118. package/dist/types/components/select/select.d.ts +2 -0
  119. package/dist/types/components/textarea/textarea.d.ts +2 -0
  120. package/dist/types/components/toggle/toggle.d.ts +3 -2
  121. package/dist/types/components.d.ts +12 -12
  122. package/hydrate/index.js +32 -32
  123. package/package.json +1 -1
  124. package/dist/ionic/p-057b5866.entry.js +0 -4
@@ -369,7 +369,7 @@ const Textarea = class {
369
369
  * TODO(FW-5592): Remove hasStartEndSlots condition
370
370
  */
371
371
  const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || hasFocus || hasStartEndSlots));
372
- return (index.h(index.Host, { key: 'b4cf1f37cacdd1775fefb874b87b30ba753fdc3a', class: theme.createColorClasses(this.color, {
372
+ return (index.h(index.Host, { key: '16eeb87ea5dbac1b37f1a376cd74e6f41af1b5f6', class: theme.createColorClasses(this.color, {
373
373
  [mode]: true,
374
374
  'has-value': hasValue,
375
375
  'has-focus': hasFocus,
@@ -378,7 +378,7 @@ const Textarea = class {
378
378
  [`textarea-shape-${shape}`]: shape !== undefined,
379
379
  [`textarea-label-placement-${labelPlacement}`]: true,
380
380
  'textarea-disabled': disabled,
381
- }) }, index.h("label", { key: '71673192cf9d61dd072d9c0c3caefad313ed7129', class: "textarea-wrapper", htmlFor: inputId }, this.renderLabelContainer(), index.h("div", { key: '6ecfbc046cf6e14f0d58dca1bff7db2093620f01', class: "textarea-wrapper-inner" }, index.h("div", { key: '7d2410de5dd971f74406ab8a321d87709873fa22', class: "start-slot-wrapper" }, index.h("slot", { key: '061cc0dd516b2f3a4ad7199790028e5d525a3ab2', name: "start" })), index.h("div", { key: 'f75309006f7c4e835f346cecf243f104e37bd477', class: "native-wrapper", ref: (el) => (this.textareaWrapper = el) }, index.h("textarea", Object.assign({ key: 'ba47358352fcd30e659b7ac684ce2e5b83744150', class: "native-textarea", ref: (el) => (this.nativeInput = el), id: inputId, disabled: disabled, autoCapitalize: this.autocapitalize, autoFocus: this.autofocus, enterKeyHint: this.enterkeyhint, inputMode: this.inputmode, minLength: this.minlength, maxLength: this.maxlength, name: this.name, placeholder: this.placeholder || '', readOnly: this.readonly, required: this.required, spellcheck: this.spellcheck, cols: this.cols, rows: this.rows, wrap: this.wrap, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, onKeyDown: this.onKeyDown }, this.inheritedAttributes), value)), index.h("div", { key: 'bebb8b585bc4e7adb9192665679cd7073e23240c', class: "end-slot-wrapper" }, index.h("slot", { key: '734f40dcc6a57771c00f7528fb19544bb68fc563', name: "end" }))), shouldRenderHighlight && index.h("div", { key: 'e5a1bbebc2e16cb1b3f2bce312494447a0b36957', class: "textarea-highlight" })), this.renderBottomContent()));
381
+ }) }, index.h("label", { key: '5f7946957517614b937eb37533a87c124cf3eabb', class: "textarea-wrapper", htmlFor: inputId }, this.renderLabelContainer(), index.h("div", { key: '4e950025447d83f3ec77b515a2c5cd6511819b7e', class: "textarea-wrapper-inner" }, index.h("div", { key: 'a508e5879a9f7b3f2a91d5b1851ab990302044fe', class: "start-slot-wrapper" }, index.h("slot", { key: 'a2b18078c602896be5ae2da71519f534aa24bbc4', name: "start" })), index.h("div", { key: '5a4d07c72794548d7f0945aebc5bc2c65118cac3', class: "native-wrapper", ref: (el) => (this.textareaWrapper = el) }, index.h("textarea", Object.assign({ key: 'f13d0e8b96a798d3cec017b2b618e4979555c5ee', class: "native-textarea", ref: (el) => (this.nativeInput = el), id: inputId, disabled: disabled, autoCapitalize: this.autocapitalize, autoFocus: this.autofocus, enterKeyHint: this.enterkeyhint, inputMode: this.inputmode, minLength: this.minlength, maxLength: this.maxlength, name: this.name, placeholder: this.placeholder || '', readOnly: this.readonly, required: this.required, spellcheck: this.spellcheck, cols: this.cols, rows: this.rows, wrap: this.wrap, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, onKeyDown: this.onKeyDown }, this.inheritedAttributes), value)), index.h("div", { key: '10b8792a1506b41928869a4460b6f780c39947b6', class: "end-slot-wrapper" }, index.h("slot", { key: '26362017095ffdda6749a19e0152ef4da8759fba', name: "end" }))), shouldRenderHighlight && index.h("div", { key: '06a6135b05848b3855192f162ec293d9eae6e171', class: "textarea-highlight" })), this.renderBottomContent()));
382
382
  }
383
383
  get el() { return index.getElement(this); }
384
384
  static get watchers() { return {
@@ -164,7 +164,7 @@ const Toggle = class {
164
164
  const value = this.getValue();
165
165
  const rtl = dir.isRTL(el) ? 'rtl' : 'ltr';
166
166
  helpers.renderHiddenInput(true, el, name, checked ? value : '', disabled);
167
- return (index.h(index.Host, { key: 'c945ab955306b2fcb7833f7ff771ac943d73d27d', onClick: this.onClick, class: theme.createColorClasses(color, {
167
+ return (index.h(index.Host, { key: '9083d3ea92131df1480dfdaacd62037ffd5a69ec', onClick: this.onClick, class: theme.createColorClasses(color, {
168
168
  [mode]: true,
169
169
  'in-item': theme.hostContext('ion-item', el),
170
170
  'toggle-activated': activated,
@@ -174,10 +174,10 @@ const Toggle = class {
174
174
  [`toggle-alignment-${alignment}`]: true,
175
175
  [`toggle-label-placement-${labelPlacement}`]: true,
176
176
  [`toggle-${rtl}`]: true,
177
- }) }, index.h("label", { key: '71fb6976e877639ca9f28c2103f6290917cdb6ce', class: "toggle-wrapper" }, index.h("input", Object.assign({ key: 'ed2495568197928ef1f17fc60470f4d9754a6244', type: "checkbox", role: "switch", "aria-checked": `${checked}`, checked: checked, disabled: disabled, id: inputId, onFocus: () => this.onFocus(), onBlur: () => this.onBlur(), ref: (focusEl) => (this.focusEl = focusEl) }, this.inheritedAttributes)), index.h("div", { key: '953ab9a29c432de4b869aeac296007e703bcdf27', class: {
177
+ }) }, index.h("label", { key: '554e11ac1db370363b251b83e4d57c32a2bd4577', class: "toggle-wrapper" }, index.h("input", Object.assign({ key: '327540a212dfe686310e8a587fa8c81edfd2e229', type: "checkbox", role: "switch", "aria-checked": `${checked}`, checked: checked, disabled: disabled, id: inputId, onFocus: () => this.onFocus(), onBlur: () => this.onBlur(), ref: (focusEl) => (this.focusEl = focusEl) }, this.inheritedAttributes)), index.h("div", { key: '9ba185a8afaf65c8ba0d2044b1abfa376aee4db3', class: {
178
178
  'label-text-wrapper': true,
179
179
  'label-text-wrapper-hidden': !this.hasLabel,
180
- }, part: "label" }, index.h("slot", { key: '718b24b4d59b979c11edfb1d90fa0270ac248b2f' })), index.h("div", { key: '293595f9dc291df38a54e23f81797b89428ff2c5', class: "native-wrapper" }, this.renderToggleControl()))));
180
+ }, part: "label" }, index.h("slot", { key: '730287f916c13ec437f39f2304a70afa50f41dc7' })), index.h("div", { key: '0e810cdf6dc7623d4efd2092a642ef12906efcae', class: "native-wrapper" }, this.renderToggleControl()))));
181
181
  }
182
182
  get el() { return index.getElement(this); }
183
183
  static get watchers() { return {
@@ -197,12 +197,12 @@ export class AccordionGroup {
197
197
  render() {
198
198
  const { disabled, readonly, expand } = this;
199
199
  const mode = getIonMode(this);
200
- return (h(Host, { key: 'ac2e26ac91c95d08172bd2b51daa7a711c21db9e', class: {
200
+ return (h(Host, { key: '82f3e77066fabb4736638ee4c487ad56efd39c63', class: {
201
201
  [mode]: true,
202
202
  'accordion-group-disabled': disabled,
203
203
  'accordion-group-readonly': readonly,
204
204
  [`accordion-group-expand-${expand}`]: true,
205
- }, role: "presentation" }, h("slot", { key: '444adc2af5730897eba57095da046d6bdb5af70f' })));
205
+ }, role: "presentation" }, h("slot", { key: 'a3c791ea887fc640b512f81d429be465ae902b3d' })));
206
206
  }
207
207
  static get is() { return "ion-accordion-group"; }
208
208
  static get encapsulation() { return "shadow"; }
@@ -337,7 +337,7 @@ export class AccordionGroup {
337
337
  "composed": true,
338
338
  "docs": {
339
339
  "tags": [],
340
- "text": "Emitted when the value property has changed\nas a result of a user action such as a click.\nThis event will not emit when programmatically setting\nthe value property."
340
+ "text": "Emitted when the value property has changed as a result of a user action such as a click.\n\nThis event will not emit when programmatically setting the `value` property."
341
341
  },
342
342
  "complexType": {
343
343
  "original": "AccordionGroupChangeEventDetail",
@@ -72,7 +72,7 @@ export class Checkbox {
72
72
  const mode = getIonMode(this);
73
73
  const path = getSVGPath(mode, indeterminate);
74
74
  renderHiddenInput(true, el, name, checked ? value : '', disabled);
75
- return (h(Host, { key: '52064869f18f6762802a783ba9ee37433d2a2981', "aria-checked": indeterminate ? 'mixed' : `${checked}`, class: createColorClasses(color, {
75
+ return (h(Host, { key: '0ac95890562c7f035704c40959c69f8c8ca4bc9f', "aria-checked": indeterminate ? 'mixed' : `${checked}`, class: createColorClasses(color, {
76
76
  [mode]: true,
77
77
  'in-item': hostContext('ion-item', el),
78
78
  'checkbox-checked': checked,
@@ -82,10 +82,10 @@ export class Checkbox {
82
82
  [`checkbox-justify-${justify}`]: true,
83
83
  [`checkbox-alignment-${alignment}`]: true,
84
84
  [`checkbox-label-placement-${labelPlacement}`]: true,
85
- }), onClick: this.onClick }, h("label", { key: '800b3521fe809423b9eee7ab9d220255cc6ffdff', class: "checkbox-wrapper" }, h("input", Object.assign({ key: '3e254b29bb1fc3951691a255a20cfd65360be510', type: "checkbox", checked: checked ? true : undefined, disabled: disabled, id: inputId, onChange: this.toggleChecked, onFocus: () => this.onFocus(), onBlur: () => this.onBlur(), ref: (focusEl) => (this.focusEl = focusEl) }, inheritedAttributes)), h("div", { key: '19ff4b1115c3bc9c2ceed045fbc4e970f77d9e0d', class: {
85
+ }), onClick: this.onClick }, h("label", { key: '3f9f7c8383dded8f7997086b25399d052df76b5c', class: "checkbox-wrapper" }, h("input", Object.assign({ key: '6fb11d06c424c289357d5d7c1a4d1b967be231d0', type: "checkbox", checked: checked ? true : undefined, disabled: disabled, id: inputId, onChange: this.toggleChecked, onFocus: () => this.onFocus(), onBlur: () => this.onBlur(), ref: (focusEl) => (this.focusEl = focusEl) }, inheritedAttributes)), h("div", { key: 'f577a272e5e3f9f1852fc95e40466c80b76309c7', class: {
86
86
  'label-text-wrapper': true,
87
87
  'label-text-wrapper-hidden': el.textContent === '',
88
- }, part: "label" }, h("slot", { key: 'e4f07b55826fb1b3a80e0428873fbdf06bf92978' })), h("div", { key: '5134cf088c93f36b00d3848b573a148f2d9fb806', class: "native-wrapper" }, h("svg", { key: 'd00733f071d6da47e1a6e5c89cb6aab1a7b0ef74', class: "checkbox-icon", viewBox: "0 0 24 24", part: "container" }, path)))));
88
+ }, part: "label" }, h("slot", { key: '7c9b0b4513e797a1acdf55a5f286563e5f397e9c' })), h("div", { key: 'e47c50a078b8d761ddc5efcb9a9635281b5818f6', class: "native-wrapper" }, h("svg", { key: '4dca47179ae15e9094e01c799ef4ed25fbb0d840', class: "checkbox-icon", viewBox: "0 0 24 24", part: "container" }, path)))));
89
89
  }
90
90
  getSVGPath(mode, indeterminate) {
91
91
  let path = indeterminate ? (h("path", { d: "M6 12L18 12", part: "mark" })) : (h("path", { d: "M5.9,12.5l3.8,3.8l8.8-8.8", part: "mark" }));
@@ -288,7 +288,7 @@ export class Checkbox {
288
288
  "composed": true,
289
289
  "docs": {
290
290
  "tags": [],
291
- "text": "Emitted when the checked property has changed\nas a result of a user action such as a click.\nThis event will not emit when programmatically\nsetting the checked property."
291
+ "text": "Emitted when the checked property has changed as a result of a user action such as a click.\n\nThis event will not emit when programmatically setting the `checked` property."
292
292
  },
293
293
  "complexType": {
294
294
  "original": "CheckboxChangeEventDetail",
@@ -1556,7 +1556,7 @@ export class Datetime {
1556
1556
  const hasDatePresentation = presentation === 'date' || presentation === 'date-time' || presentation === 'time-date';
1557
1557
  const hasWheelVariant = hasDatePresentation && preferWheel;
1558
1558
  renderHiddenInput(true, el, name, formatValue(value), disabled);
1559
- return (h(Host, { key: 'f1f8ca52cdd9cfc8394b0365c89c0d30cd7316e7', "aria-disabled": disabled ? 'true' : null, onFocus: this.onFocus, onBlur: this.onBlur, class: Object.assign({}, createColorClasses(color, {
1559
+ return (h(Host, { key: '0b8c97bfb84dff5f8ef8097bba44f6c4ad119f76', "aria-disabled": disabled ? 'true' : null, onFocus: this.onFocus, onBlur: this.onBlur, class: Object.assign({}, createColorClasses(color, {
1560
1560
  [mode]: true,
1561
1561
  ['datetime-readonly']: readonly,
1562
1562
  ['datetime-disabled']: disabled,
@@ -1566,7 +1566,7 @@ export class Datetime {
1566
1566
  [`datetime-size-${size}`]: true,
1567
1567
  [`datetime-prefer-wheel`]: hasWheelVariant,
1568
1568
  [`datetime-grid`]: isGridStyle,
1569
- })) }, h("div", { key: '480068aa8072b60ac521646dfa82480c5f6ce6ef', class: "intersection-tracker", ref: (el) => (this.intersectionTrackerRef = el) }), this.renderDatetime(mode)));
1569
+ })) }, h("div", { key: '36e389a8c49944b5bbc0429f6b86d9c28a5b860a', class: "intersection-tracker", ref: (el) => (this.intersectionTrackerRef = el) }), this.renderDatetime(mode)));
1570
1570
  }
1571
1571
  static get is() { return "ion-datetime"; }
1572
1572
  static get encapsulation() { return "shadow"; }
@@ -2179,7 +2179,7 @@ export class Datetime {
2179
2179
  "composed": true,
2180
2180
  "docs": {
2181
2181
  "tags": [],
2182
- "text": "Emitted when the value (selected date) has changed."
2182
+ "text": "Emitted when the value (selected date) has changed.\n\nThis event will not emit when programmatically setting the `value` property."
2183
2183
  },
2184
2184
  "complexType": {
2185
2185
  "original": "DatetimeChangeEventDetail",
@@ -396,7 +396,7 @@ export class Input {
396
396
  * TODO(FW-5592): Remove hasStartEndSlots condition
397
397
  */
398
398
  const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || hasFocus || hasStartEndSlots));
399
- return (h(Host, { key: '083568e68a2970485e93a84ad3b837c117e03fed', class: createColorClasses(this.color, {
399
+ return (h(Host, { key: 'b0697cdbb71e680d904c11445a9bd7c28567b0e4', class: createColorClasses(this.color, {
400
400
  [mode]: true,
401
401
  'has-value': hasValue,
402
402
  'has-focus': hasFocus,
@@ -407,7 +407,7 @@ export class Input {
407
407
  'in-item': inItem,
408
408
  'in-item-color': hostContext('ion-item.ion-color', this.el),
409
409
  'input-disabled': disabled,
410
- }) }, h("label", { key: '5e6767a20b8ac61d5df69106f4ce11ecc46ae5bf', class: "input-wrapper", htmlFor: inputId }, this.renderLabelContainer(), h("div", { key: '4af8df127e8194b4eeb8b16936a36489aee17009', class: "native-wrapper" }, h("slot", { key: '90e925fa36a5c057a4ca5e03d5fcaf8e12e711ad', name: "start" }), h("input", Object.assign({ key: '0a5455e8c31beca48e08b97faa5e3e069822248f', class: "native-input", ref: (input) => (this.nativeInput = input), id: inputId, disabled: disabled, autoCapitalize: this.autocapitalize, autoComplete: this.autocomplete, autoCorrect: this.autocorrect, autoFocus: this.autofocus, enterKeyHint: this.enterkeyhint, inputMode: this.inputmode, min: this.min, max: this.max, minLength: this.minlength, maxLength: this.maxlength, multiple: this.multiple, name: this.name, pattern: this.pattern, placeholder: this.placeholder || '', readOnly: readonly, required: this.required, spellcheck: this.spellcheck, step: this.step, type: this.type, value: value, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, onKeyDown: this.onKeydown, onCompositionstart: this.onCompositionStart, onCompositionend: this.onCompositionEnd }, this.inheritedAttributes)), this.clearInput && !readonly && !disabled && (h("button", { key: 'b9eab01b390581d20c861ae6a4c49bde0841f14c', "aria-label": "reset", type: "button", class: "input-clear-icon", onPointerDown: (ev) => {
410
+ }) }, h("label", { key: 'eb9851f62c4aa62dd3b2ebe2e169182ea9fa12d8', class: "input-wrapper", htmlFor: inputId }, this.renderLabelContainer(), h("div", { key: 'e8cd537de25d25ed7fd3a6c3450643f0bfe10f82', class: "native-wrapper" }, h("slot", { key: '00590a3d52896465102d0f9e75a9165f9a3f5936', name: "start" }), h("input", Object.assign({ key: '26fd41169cbf5c5b7efc9989d6e9300c20db321a', class: "native-input", ref: (input) => (this.nativeInput = input), id: inputId, disabled: disabled, autoCapitalize: this.autocapitalize, autoComplete: this.autocomplete, autoCorrect: this.autocorrect, autoFocus: this.autofocus, enterKeyHint: this.enterkeyhint, inputMode: this.inputmode, min: this.min, max: this.max, minLength: this.minlength, maxLength: this.maxlength, multiple: this.multiple, name: this.name, pattern: this.pattern, placeholder: this.placeholder || '', readOnly: readonly, required: this.required, spellcheck: this.spellcheck, step: this.step, type: this.type, value: value, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, onKeyDown: this.onKeydown, onCompositionstart: this.onCompositionStart, onCompositionend: this.onCompositionEnd }, this.inheritedAttributes)), this.clearInput && !readonly && !disabled && (h("button", { key: '4dc7c673179fa5c0f84a251ceed2599f8b7e9b8b', "aria-label": "reset", type: "button", class: "input-clear-icon", onPointerDown: (ev) => {
411
411
  /**
412
412
  * This prevents mobile browsers from
413
413
  * blurring the input when the clear
@@ -422,7 +422,7 @@ export class Input {
422
422
  * for screen readers as it means users would be unable to swipe past the clear button.
423
423
  */
424
424
  ev.stopPropagation();
425
- }, onClick: this.clearTextInput }, h("ion-icon", { key: '8284ba60924a42fd6d352d23441524f8a027e0ce', "aria-hidden": "true", icon: mode === 'ios' ? closeCircle : closeSharp }))), h("slot", { key: '8f3c04ecc32cb04a06ebb916b79071414b2a5263', name: "end" })), shouldRenderHighlight && h("div", { key: '7e97782b292fd140b3fe7f13de05dfafb4b0fa28', class: "input-highlight" })), this.renderBottomContent()));
425
+ }, onClick: this.clearTextInput }, h("ion-icon", { key: '22faa709020c08c3fbd44955c2cfa77c2117e47e', "aria-hidden": "true", icon: mode === 'ios' ? closeCircle : closeSharp }))), h("slot", { key: '6b2c0138fd1aa0e8f004e807d842856278960d8a', name: "end" })), shouldRenderHighlight && h("div", { key: '2db65ebfa53b4490490d3f1dc4a1a21875e239a2', class: "input-highlight" })), this.renderBottomContent()));
426
426
  }
427
427
  static get is() { return "ion-input"; }
428
428
  static get encapsulation() { return "scoped"; }
@@ -1068,7 +1068,7 @@ export class Input {
1068
1068
  "composed": true,
1069
1069
  "docs": {
1070
1070
  "tags": [],
1071
- "text": "The `ionChange` event is fired when the user modifies the input's value.\nUnlike the `ionInput` event, the `ionChange` event is only fired when changes\nare committed, not as the user types.\n\nDepending on the way the users interacts with the element, the `ionChange`\nevent fires at a different moment:\n- When the user commits the change explicitly (e.g. by selecting a date\nfrom a date picker for `<ion-input type=\"date\">`, pressing the \"Enter\" key, etc.).\n- When the element loses focus after its value has changed: for elements\nwhere the user's interaction is typing."
1071
+ "text": "The `ionChange` event is fired when the user modifies the input's value.\nUnlike the `ionInput` event, the `ionChange` event is only fired when changes\nare committed, not as the user types.\n\nDepending on the way the users interacts with the element, the `ionChange`\nevent fires at a different moment:\n- When the user commits the change explicitly (e.g. by selecting a date\nfrom a date picker for `<ion-input type=\"date\">`, pressing the \"Enter\" key, etc.).\n- When the element loses focus after its value has changed: for elements\nwhere the user's interaction is typing.\n\nThis event will not emit when programmatically setting the `value` property."
1072
1072
  },
1073
1073
  "complexType": {
1074
1074
  "original": "InputChangeEventDetail",
@@ -8,10 +8,7 @@ configs({ directions: ['ltr'] }).forEach(({ config, screenshot, title }) => {
8
8
  test.describe(title('item: axe'), () => {
9
9
  test('should not have accessibility violations', async ({ page }) => {
10
10
  await page.goto(`/src/components/item/test/a11y`, config);
11
- const results = await new AxeBuilder({ page })
12
- // TODO(FW-404): Re-enable rule once select is updated to avoid nested-interactive
13
- .disableRules('nested-interactive')
14
- .analyze();
11
+ const results = await new AxeBuilder({ page }).analyze();
15
12
  expect(results.violations).toEqual([]);
16
13
  });
17
14
  test('should reflect aria-label', async ({ page }) => {
@@ -312,7 +312,7 @@
312
312
  }
313
313
 
314
314
  ::slotted(p) {
315
- color: var(--ion-text-color-step-550, #a3a3a3);
315
+ color: var(--ion-color-step-400, var(--ion-text-color-step-600, #999999));
316
316
  }
317
317
 
318
318
  :host(.in-item-color)::slotted(p) {
@@ -383,14 +383,14 @@ export class PickerColumn {
383
383
  render() {
384
384
  const { color, disabled, isActive, numericInput } = this;
385
385
  const mode = getIonMode(this);
386
- return (h(Host, { key: '59648ef23cef1ab6d30955bb95bc23e670ec7256', class: createColorClasses(color, {
386
+ return (h(Host, { key: '54d3ea9f92136ac446a6c0a2b1389d93c5ff31ee', class: createColorClasses(color, {
387
387
  [mode]: true,
388
388
  ['picker-column-active']: isActive,
389
389
  ['picker-column-numeric-input']: numericInput,
390
390
  ['picker-column-disabled']: disabled,
391
- }) }, h("slot", { key: 'fd93192d4945b2c33e0fe93cc90b505f2cec12fc', name: "prefix" }), h("div", { key: '99e49c6d58badd2fe5e75f0ebcd4bc00eb50aa58', class: "picker-opts", tabindex: disabled ? undefined : 0, ref: (el) => {
391
+ }) }, h("slot", { key: '969279123f09d37a28aa726936c9f484b0de33e4', name: "prefix" }), h("div", { key: 'd4d09a561213c408cf1c42a28cdef37f14367724', class: "picker-opts", tabindex: disabled ? undefined : 0, ref: (el) => {
392
392
  this.scrollEl = el;
393
- } }, h("div", { key: 'bb44892ef179b25373e45e4b4bc4d1fa617b1ea1', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { key: '9ee7aeb8468bbb03f7192d56849dae089b7a0250', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { key: '0baa4bda4bf02a8d06dbf3392b1516ca8ea8d26a', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("slot", { key: 'ff4cad20fd82ab66599473f60d10c18dc1dc76d8' }), h("div", { key: '04dcb0390209081e6223b90e45b8f2ef0fdf94bd', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { key: '734e3b431a30ce93957e1452516efc86e29ff9c9', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { key: '1c68dcf9a029e607bb6bc9c19cd02214914eb6d7', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0")), h("slot", { key: 'd85210cc99c8c1bf83eb1cd51540ebe875d4adeb', name: "suffix" })));
393
+ } }, h("div", { key: '3710d8980682c819be33eeb6611a5c707b0e6a29', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { key: '65b7d8d523db669a2df107ae7aaacf62daf13232', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { key: '694657e475edcdbc93561e826e0db016738f119d', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("slot", { key: 'ecbbd8db6ffdd8d8506a16d94f001d434f4daf97' }), h("div", { key: 'e19a7f7e5e4aeb7d52339e962314d68c31c6337b', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { key: '103e6a5863efc526de3ea35c63230cc37e487594', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { key: 'c9e2313ae630ec0b39cbc92d5261fc194dc22a5f', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0")), h("slot", { key: '1537926d9ed8d4251ded95dcb249197491fc2616', name: "suffix" })));
394
394
  }
395
395
  static get is() { return "ion-picker-column"; }
396
396
  static get encapsulation() { return "shadow"; }
@@ -502,7 +502,7 @@ export class PickerColumn {
502
502
  "composed": true,
503
503
  "docs": {
504
504
  "tags": [],
505
- "text": "Emitted when the value has changed."
505
+ "text": "Emitted when the value has changed.\n\nThis event will not emit when programmatically setting the `value` property."
506
506
  },
507
507
  "complexType": {
508
508
  "original": "PickerColumnChangeEventDetail",
@@ -153,7 +153,7 @@ export class RadioGroup {
153
153
  const { label, labelId, el, name, value } = this;
154
154
  const mode = getIonMode(this);
155
155
  renderHiddenInput(true, el, name, value, false);
156
- return h(Host, { key: 'b6b439d6d53d17a5a4d9853a7cf6065b28213338', role: "radiogroup", "aria-labelledby": label ? labelId : null, onClick: this.onClick, class: mode });
156
+ return h(Host, { key: '672d1df4a5d2fd22415e8772b054313907aba8f6', role: "radiogroup", "aria-labelledby": label ? labelId : null, onClick: this.onClick, class: mode });
157
157
  }
158
158
  static get is() { return "ion-radio-group"; }
159
159
  static get properties() {
@@ -245,7 +245,7 @@ export class RadioGroup {
245
245
  "composed": true,
246
246
  "docs": {
247
247
  "tags": [],
248
- "text": "Emitted when the value has changed."
248
+ "text": "Emitted when the value has changed.\n\nThis event will not emit when programmatically setting the `value` property."
249
249
  },
250
250
  "complexType": {
251
251
  "original": "RadioGroupChangeEventDetail",
@@ -561,7 +561,7 @@ export class Range {
561
561
  const needsEndAdjustment = inItem && !hasEndContent;
562
562
  const mode = getIonMode(this);
563
563
  renderHiddenInput(true, el, this.name, JSON.stringify(this.getValue()), disabled);
564
- return (h(Host, { key: 'cd70b5db9eae808a644643d7095a1b5264cbc5fe', onFocusin: this.onFocus, onFocusout: this.onBlur, id: rangeId, class: createColorClasses(this.color, {
564
+ return (h(Host, { key: 'f66f03965290003b8a2b74b6f16ebf5615291688', onFocusin: this.onFocus, onFocusout: this.onBlur, id: rangeId, class: createColorClasses(this.color, {
565
565
  [mode]: true,
566
566
  'in-item': inItem,
567
567
  'range-disabled': disabled,
@@ -570,10 +570,10 @@ export class Range {
570
570
  [`range-label-placement-${labelPlacement}`]: true,
571
571
  'range-item-start-adjustment': needsStartAdjustment,
572
572
  'range-item-end-adjustment': needsEndAdjustment,
573
- }) }, h("label", { key: '78ef0523f0064d6b268ae17ef72f90094511d897', class: "range-wrapper", id: "range-label" }, h("div", { key: '6e4b2051e770dabe80dcb9f412e9aae1859e9f33', class: {
573
+ }) }, h("label", { key: '4b0035999693e241afb753f4c335ec386a2f5a2b', class: "range-wrapper", id: "range-label" }, h("div", { key: 'f03119f14a4c6bb2f6c529e885002df633cd1797', class: {
574
574
  'label-text-wrapper': true,
575
575
  'label-text-wrapper-hidden': !hasLabel,
576
- }, part: "label" }, label !== undefined ? h("div", { class: "label-text" }, label) : h("slot", { name: "label" })), h("div", { key: '72cdb8f6657a3b84f759743cedd600020c954c6a', class: "native-wrapper" }, h("slot", { key: 'f7a38d6bd63df5dc8b4470f1f4acaaf3e5c80514', name: "start" }), this.renderRangeSlider(), h("slot", { key: 'ae74ac8c1da691e3be1b2f00dfd3c8419b9566ec', name: "end" })))));
576
+ }, part: "label" }, label !== undefined ? h("div", { class: "label-text" }, label) : h("slot", { name: "label" })), h("div", { key: '72678b1d17ac2a6dfeee26d40a6a80bcc0e7e2fe', class: "native-wrapper" }, h("slot", { key: 'c555ac9598427b81fddd5415ea673479c2247977', name: "start" }), this.renderRangeSlider(), h("slot", { key: 'bf58ccc934a246b303c766d16df5eeb62c225b12', name: "end" })))));
577
577
  }
578
578
  static get is() { return "ion-range"; }
579
579
  static get encapsulation() { return "shadow"; }
@@ -909,7 +909,7 @@ export class Range {
909
909
  "composed": true,
910
910
  "docs": {
911
911
  "tags": [],
912
- "text": "The `ionChange` event is fired for `<ion-range>` elements when the user\nmodifies the element's value:\n- When the user releases the knob after dragging;\n- When the user moves the knob with keyboard arrows\n\n`ionChange` is not fired when the value is changed programmatically."
912
+ "text": "The `ionChange` event is fired for `<ion-range>` elements when the user\nmodifies the element's value:\n- When the user releases the knob after dragging;\n- When the user moves the knob with keyboard arrows\n\nThis event will not emit when programmatically setting the `value` property."
913
913
  },
914
914
  "complexType": {
915
915
  "original": "RangeChangeEventDetail",
@@ -378,8 +378,8 @@ export class Searchbar {
378
378
  const clearIcon = this.clearIcon || (mode === 'ios' ? closeCircle : closeSharp);
379
379
  const searchIcon = this.searchIcon || (mode === 'ios' ? searchOutline : searchSharp);
380
380
  const shouldShowCancelButton = this.shouldShowCancelButton();
381
- const cancelButton = this.showCancelButton !== 'never' && (h("button", { key: '753b11f41484edcb2714aa81be8bc7bc0370cb2e', "aria-label": cancelButtonText, "aria-hidden": shouldShowCancelButton ? undefined : 'true', type: "button", tabIndex: mode === 'ios' && !shouldShowCancelButton ? -1 : undefined, onMouseDown: this.onCancelSearchbar, onTouchStart: this.onCancelSearchbar, class: "searchbar-cancel-button" }, h("div", { key: 'e42fe29767fb06a5e4f9060c3f8a47b040528e4f', "aria-hidden": "true" }, mode === 'md' ? (h("ion-icon", { "aria-hidden": "true", mode: mode, icon: this.cancelButtonIcon, lazy: false })) : (cancelButtonText))));
382
- return (h(Host, { key: 'da667148dc3300f4a8473315d04e6560194f51dc', role: "search", "aria-disabled": this.disabled ? 'true' : null, class: createColorClasses(this.color, {
381
+ const cancelButton = this.showCancelButton !== 'never' && (h("button", { key: '2e53057ad0dcb8ea930fe4a4a03f08af5163d31e', "aria-label": cancelButtonText, "aria-hidden": shouldShowCancelButton ? undefined : 'true', type: "button", tabIndex: mode === 'ios' && !shouldShowCancelButton ? -1 : undefined, onMouseDown: this.onCancelSearchbar, onTouchStart: this.onCancelSearchbar, class: "searchbar-cancel-button" }, h("div", { key: '10b06fdbb3ae51bf02bd094205d075e1f9b60ea3', "aria-hidden": "true" }, mode === 'md' ? (h("ion-icon", { "aria-hidden": "true", mode: mode, icon: this.cancelButtonIcon, lazy: false })) : (cancelButtonText))));
382
+ return (h(Host, { key: 'f1a07f9e2f27f5297581e66c80097cf7843c1a5a', role: "search", "aria-disabled": this.disabled ? 'true' : null, class: createColorClasses(this.color, {
383
383
  [mode]: true,
384
384
  'searchbar-animated': animated,
385
385
  'searchbar-disabled': this.disabled,
@@ -389,14 +389,14 @@ export class Searchbar {
389
389
  'searchbar-has-focus': this.focused,
390
390
  'searchbar-should-show-clear': this.shouldShowClearButton(),
391
391
  'searchbar-should-show-cancel': this.shouldShowCancelButton(),
392
- }) }, h("div", { key: 'b1a28467d41dd989e6aee10c7c9fb70a7c1534f1', class: "searchbar-input-container" }, h("input", Object.assign({ key: '4983f67966f79b2846c1369c7feaa0c568bc3025', "aria-label": "search text", disabled: this.disabled, ref: (el) => (this.nativeInput = el), class: "searchbar-input", inputMode: this.inputmode, enterKeyHint: this.enterkeyhint, name: this.name, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, minLength: this.minlength, maxLength: this.maxlength, placeholder: this.placeholder, type: this.type, value: this.getValue(), autoCapitalize: autocapitalize === 'default' ? undefined : autocapitalize, autoComplete: this.autocomplete, autoCorrect: this.autocorrect, spellcheck: this.spellcheck }, this.inheritedAttributes)), mode === 'md' && cancelButton, h("ion-icon", { key: 'b6576522762a83a7d9977f312dce433c2aaa2490', "aria-hidden": "true", mode: mode, icon: searchIcon, lazy: false, class: "searchbar-search-icon" }), h("button", { key: 'c460a3be7ffed2ddf4b08f64ea4ec6843586a726', "aria-label": "reset", type: "button", "no-blur": true, class: "searchbar-clear-button", onPointerDown: (ev) => {
392
+ }) }, h("div", { key: '9b7dc9abf5b1925872c75f6c992aac465700b615', class: "searchbar-input-container" }, h("input", Object.assign({ key: 'd0e11e98bfb8b9e9225de80c8f132f68c3466f13', "aria-label": "search text", disabled: this.disabled, ref: (el) => (this.nativeInput = el), class: "searchbar-input", inputMode: this.inputmode, enterKeyHint: this.enterkeyhint, name: this.name, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, minLength: this.minlength, maxLength: this.maxlength, placeholder: this.placeholder, type: this.type, value: this.getValue(), autoCapitalize: autocapitalize === 'default' ? undefined : autocapitalize, autoComplete: this.autocomplete, autoCorrect: this.autocorrect, spellcheck: this.spellcheck }, this.inheritedAttributes)), mode === 'md' && cancelButton, h("ion-icon", { key: 'd475776f64b55d13d49f8193f3b84a4e669403c7', "aria-hidden": "true", mode: mode, icon: searchIcon, lazy: false, class: "searchbar-search-icon" }), h("button", { key: '9b5b681edfac608ed1c20175086ec40c652a7f07', "aria-label": "reset", type: "button", "no-blur": true, class: "searchbar-clear-button", onPointerDown: (ev) => {
393
393
  /**
394
394
  * This prevents mobile browsers from
395
395
  * blurring the input when the clear
396
396
  * button is activated.
397
397
  */
398
398
  ev.preventDefault();
399
- }, onClick: () => this.onClearInput(true) }, h("ion-icon", { key: 'e2e5dcdeca46d2588642e7b9f05d396f6e0332a9', "aria-hidden": "true", mode: mode, icon: clearIcon, lazy: false, class: "searchbar-clear-icon" }))), mode === 'ios' && cancelButton));
399
+ }, onClick: () => this.onClearInput(true) }, h("ion-icon", { key: '44c85c0d3a1346c5e9306a65f6a7cf0fcdc1f149', "aria-hidden": "true", mode: mode, icon: clearIcon, lazy: false, class: "searchbar-clear-icon" }))), mode === 'ios' && cancelButton));
400
400
  }
401
401
  static get is() { return "ion-searchbar"; }
402
402
  static get encapsulation() { return "scoped"; }
@@ -852,7 +852,7 @@ export class Searchbar {
852
852
  "composed": true,
853
853
  "docs": {
854
854
  "tags": [],
855
- "text": "The `ionChange` event is fired for `<ion-searchbar>` elements when the user\nmodifies the element's value. Unlike the `ionInput` event, the `ionChange`\nevent is not necessarily fired for each alteration to an element's value.\n\nThe `ionChange` event is fired when the value has been committed\nby the user. This can happen when the element loses focus or\nwhen the \"Enter\" key is pressed. `ionChange` can also fire\nwhen clicking the clear or cancel buttons."
855
+ "text": "The `ionChange` event is fired for `<ion-searchbar>` elements when the user\nmodifies the element's value. Unlike the `ionInput` event, the `ionChange`\nevent is not necessarily fired for each alteration to an element's value.\n\nThe `ionChange` event is fired when the value has been committed\nby the user. This can happen when the element loses focus or\nwhen the \"Enter\" key is pressed. `ionChange` can also fire\nwhen clicking the clear or cancel buttons.\n\nThis event will not emit when programmatically setting the `value` property."
856
856
  },
857
857
  "complexType": {
858
858
  "original": "SearchbarChangeEventDetail",
@@ -420,14 +420,14 @@ export class Segment {
420
420
  }
421
421
  render() {
422
422
  const mode = getIonMode(this);
423
- return (h(Host, { key: '22bd7bbecaa9f0c95971565e06ef3fa4ad44a946', role: "tablist", onClick: this.onClick, class: createColorClasses(this.color, {
423
+ return (h(Host, { key: '107be9ad856d855db449d24cd75f9fb82746e9aa', role: "tablist", onClick: this.onClick, class: createColorClasses(this.color, {
424
424
  [mode]: true,
425
425
  'in-toolbar': hostContext('ion-toolbar', this.el),
426
426
  'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),
427
427
  'segment-activated': this.activated,
428
428
  'segment-disabled': this.disabled,
429
429
  'segment-scrollable': this.scrollable,
430
- }) }, h("slot", { key: '6d6fe81026928662137b872206de55117fda30a2' })));
430
+ }) }, h("slot", { key: 'bdb223b18a62af921084301f01a728c421379646' })));
431
431
  }
432
432
  static get is() { return "ion-segment"; }
433
433
  static get encapsulation() { return "shadow"; }
@@ -579,7 +579,7 @@ export class Segment {
579
579
  "composed": true,
580
580
  "docs": {
581
581
  "tags": [],
582
- "text": "Emitted when the value property has changed and any\ndragging pointer has been released from `ion-segment`."
582
+ "text": "Emitted when the value property has changed and any dragging pointer has been released from `ion-segment`.\n\nThis event will not emit when programmatically setting the `value` property."
583
583
  },
584
584
  "complexType": {
585
585
  "original": "SegmentChangeEventDetail",
@@ -610,7 +610,7 @@ export class Select {
610
610
  * TODO(FW-5592): Remove hasStartEndSlots condition
611
611
  */
612
612
  const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || isExpanded || hasStartEndSlots));
613
- return (h(Host, { key: '5a1b82be3f737a2ce5b87c5cd716f898a902ab10', onClick: this.onClick, class: createColorClasses(this.color, {
613
+ return (h(Host, { key: 'df8333e037d8cb9fd34af7f3525608d7bd0ec0f4', onClick: this.onClick, class: createColorClasses(this.color, {
614
614
  [mode]: true,
615
615
  'in-item': inItem,
616
616
  'in-item-color': hostContext('ion-item.ion-color', el),
@@ -626,7 +626,7 @@ export class Select {
626
626
  [`select-justify-${justify}`]: justifyEnabled,
627
627
  [`select-shape-${shape}`]: shape !== undefined,
628
628
  [`select-label-placement-${labelPlacement}`]: true,
629
- }) }, h("label", { key: '79a6e99e38fa3f72d876f4b8ac0077a9fbf4bd2d', class: "select-wrapper", id: "select-label" }, this.renderLabelContainer(), h("div", { key: 'e18ac0b4a35e2cdde858347a9b116218533cd532', class: "select-wrapper-inner" }, h("slot", { key: 'cc194f718ef9363d3496531f0d9259e33b66f4d8', name: "start" }), h("div", { key: '833c5544e453c0ac543f5d4898d0f492caac405a', class: "native-wrapper", ref: (el) => (this.nativeWrapperEl = el), part: "container" }, this.renderSelectText(), this.renderListbox()), h("slot", { key: 'adaa4064c9ad01ef7a452308680eb09dc3ad60ff', name: "end" }), !hasFloatingOrStackedLabel && this.renderSelectIcon()), hasFloatingOrStackedLabel && this.renderSelectIcon(), shouldRenderHighlight && h("div", { key: 'd47a6ef0a6192c5f098973aa517aad2aa9ae8dfc', class: "select-highlight" }))));
629
+ }) }, h("label", { key: '3b165b4c7512bcf750bac885aef67745db53a840', class: "select-wrapper", id: "select-label" }, this.renderLabelContainer(), h("div", { key: '1b0cac005aff58ba067efe7e1165b3375716c57e', class: "select-wrapper-inner" }, h("slot", { key: '0552b33874ec305d3406876d5714a1dc4f0dc2c1', name: "start" }), h("div", { key: '7d56e2610cc026f844373590f8229164baff2c62', class: "native-wrapper", ref: (el) => (this.nativeWrapperEl = el), part: "container" }, this.renderSelectText(), this.renderListbox()), h("slot", { key: '79d8daef62fce370d804734390d8ba47dc611d36', name: "end" }), !hasFloatingOrStackedLabel && this.renderSelectIcon()), hasFloatingOrStackedLabel && this.renderSelectIcon(), shouldRenderHighlight && h("div", { key: 'be8b6f8c45b5062618ba50b2311f1143210bcc59', class: "select-highlight" }))));
630
630
  }
631
631
  static get is() { return "ion-select"; }
632
632
  static get encapsulation() { return "shadow"; }
@@ -1010,7 +1010,7 @@ export class Select {
1010
1010
  "composed": true,
1011
1011
  "docs": {
1012
1012
  "tags": [],
1013
- "text": "Emitted when the value has changed."
1013
+ "text": "Emitted when the value has changed.\n\nThis event will not emit when programmatically setting the `value` property."
1014
1014
  },
1015
1015
  "complexType": {
1016
1016
  "original": "SelectChangeEventDetail",
@@ -189,4 +189,29 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, screenshot, co
189
189
  await expect(notchCutout).toBeHidden();
190
190
  });
191
191
  });
192
+ test(title('select: fill outline: fit-content should display select options'), async ({ page }, testInfo) => {
193
+ testInfo.annotations.push({
194
+ type: 'issue',
195
+ description: 'https://github.com/ionic-team/ionic-framework/issues/29321',
196
+ });
197
+ await page.setContent(`
198
+ <ion-select
199
+ fill="outline"
200
+ aria-label="Fruit"
201
+ value="apple"
202
+ interface="popover"
203
+ style="width: fit-content"
204
+ >
205
+ <ion-select-option value="5">5</ion-select-option>
206
+ <ion-select-option value="10">10</ion-select-option>
207
+ <ion-select-option value="15">15</ion-select-option>
208
+ </ion-select>
209
+ `, config);
210
+ const select = page.locator('ion-select');
211
+ const ionPopoverDidPresent = await page.spyOnEvent('ionPopoverDidPresent');
212
+ await select.click();
213
+ await ionPopoverDidPresent.next();
214
+ const selectPopover = page.locator('ion-select-popover');
215
+ await expect(selectPopover).toHaveScreenshot(screenshot(`select-fill-outline-fit-content`));
216
+ });
192
217
  });
@@ -189,7 +189,14 @@ ion-label {
189
189
  * }
190
190
  */
191
191
  ion-list ion-radio::part(container) {
192
- opacity: 0;
192
+ display: none;
193
+ }
194
+
195
+ ion-list ion-radio::part(label) {
196
+ margin-left: 0;
197
+ margin-right: 0;
198
+ margin-top: 0;
199
+ margin-bottom: 0;
193
200
  }
194
201
 
195
202
  ion-item {
@@ -359,7 +359,7 @@ export class Textarea {
359
359
  * TODO(FW-5592): Remove hasStartEndSlots condition
360
360
  */
361
361
  const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || hasFocus || hasStartEndSlots));
362
- return (h(Host, { key: 'b4cf1f37cacdd1775fefb874b87b30ba753fdc3a', class: createColorClasses(this.color, {
362
+ return (h(Host, { key: '16eeb87ea5dbac1b37f1a376cd74e6f41af1b5f6', class: createColorClasses(this.color, {
363
363
  [mode]: true,
364
364
  'has-value': hasValue,
365
365
  'has-focus': hasFocus,
@@ -368,7 +368,7 @@ export class Textarea {
368
368
  [`textarea-shape-${shape}`]: shape !== undefined,
369
369
  [`textarea-label-placement-${labelPlacement}`]: true,
370
370
  'textarea-disabled': disabled,
371
- }) }, h("label", { key: '71673192cf9d61dd072d9c0c3caefad313ed7129', class: "textarea-wrapper", htmlFor: inputId }, this.renderLabelContainer(), h("div", { key: '6ecfbc046cf6e14f0d58dca1bff7db2093620f01', class: "textarea-wrapper-inner" }, h("div", { key: '7d2410de5dd971f74406ab8a321d87709873fa22', class: "start-slot-wrapper" }, h("slot", { key: '061cc0dd516b2f3a4ad7199790028e5d525a3ab2', name: "start" })), h("div", { key: 'f75309006f7c4e835f346cecf243f104e37bd477', class: "native-wrapper", ref: (el) => (this.textareaWrapper = el) }, h("textarea", Object.assign({ key: 'ba47358352fcd30e659b7ac684ce2e5b83744150', class: "native-textarea", ref: (el) => (this.nativeInput = el), id: inputId, disabled: disabled, autoCapitalize: this.autocapitalize, autoFocus: this.autofocus, enterKeyHint: this.enterkeyhint, inputMode: this.inputmode, minLength: this.minlength, maxLength: this.maxlength, name: this.name, placeholder: this.placeholder || '', readOnly: this.readonly, required: this.required, spellcheck: this.spellcheck, cols: this.cols, rows: this.rows, wrap: this.wrap, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, onKeyDown: this.onKeyDown }, this.inheritedAttributes), value)), h("div", { key: 'bebb8b585bc4e7adb9192665679cd7073e23240c', class: "end-slot-wrapper" }, h("slot", { key: '734f40dcc6a57771c00f7528fb19544bb68fc563', name: "end" }))), shouldRenderHighlight && h("div", { key: 'e5a1bbebc2e16cb1b3f2bce312494447a0b36957', class: "textarea-highlight" })), this.renderBottomContent()));
371
+ }) }, h("label", { key: '5f7946957517614b937eb37533a87c124cf3eabb', class: "textarea-wrapper", htmlFor: inputId }, this.renderLabelContainer(), h("div", { key: '4e950025447d83f3ec77b515a2c5cd6511819b7e', class: "textarea-wrapper-inner" }, h("div", { key: 'a508e5879a9f7b3f2a91d5b1851ab990302044fe', class: "start-slot-wrapper" }, h("slot", { key: 'a2b18078c602896be5ae2da71519f534aa24bbc4', name: "start" })), h("div", { key: '5a4d07c72794548d7f0945aebc5bc2c65118cac3', class: "native-wrapper", ref: (el) => (this.textareaWrapper = el) }, h("textarea", Object.assign({ key: 'f13d0e8b96a798d3cec017b2b618e4979555c5ee', class: "native-textarea", ref: (el) => (this.nativeInput = el), id: inputId, disabled: disabled, autoCapitalize: this.autocapitalize, autoFocus: this.autofocus, enterKeyHint: this.enterkeyhint, inputMode: this.inputmode, minLength: this.minlength, maxLength: this.maxlength, name: this.name, placeholder: this.placeholder || '', readOnly: this.readonly, required: this.required, spellcheck: this.spellcheck, cols: this.cols, rows: this.rows, wrap: this.wrap, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, onKeyDown: this.onKeyDown }, this.inheritedAttributes), value)), h("div", { key: '10b8792a1506b41928869a4460b6f780c39947b6', class: "end-slot-wrapper" }, h("slot", { key: '26362017095ffdda6749a19e0152ef4da8759fba', name: "end" }))), shouldRenderHighlight && h("div", { key: '06a6135b05848b3855192f162ec293d9eae6e171', class: "textarea-highlight" })), this.renderBottomContent()));
372
372
  }
373
373
  static get is() { return "ion-textarea"; }
374
374
  static get encapsulation() { return "scoped"; }
@@ -894,7 +894,7 @@ export class Textarea {
894
894
  "composed": true,
895
895
  "docs": {
896
896
  "tags": [],
897
- "text": "The `ionChange` event is fired when the user modifies the textarea's value.\nUnlike the `ionInput` event, the `ionChange` event is fired when\nthe element loses focus after its value has been modified."
897
+ "text": "The `ionChange` event is fired when the user modifies the textarea's value.\nUnlike the `ionInput` event, the `ionChange` event is fired when\nthe element loses focus after its value has been modified.\n\nThis event will not emit when programmatically setting the `value` property."
898
898
  },
899
899
  "complexType": {
900
900
  "original": "TextareaChangeEventDetail",
@@ -157,7 +157,7 @@ export class Toggle {
157
157
  const value = this.getValue();
158
158
  const rtl = isRTL(el) ? 'rtl' : 'ltr';
159
159
  renderHiddenInput(true, el, name, checked ? value : '', disabled);
160
- return (h(Host, { key: 'c945ab955306b2fcb7833f7ff771ac943d73d27d', onClick: this.onClick, class: createColorClasses(color, {
160
+ return (h(Host, { key: '9083d3ea92131df1480dfdaacd62037ffd5a69ec', onClick: this.onClick, class: createColorClasses(color, {
161
161
  [mode]: true,
162
162
  'in-item': hostContext('ion-item', el),
163
163
  'toggle-activated': activated,
@@ -167,10 +167,10 @@ export class Toggle {
167
167
  [`toggle-alignment-${alignment}`]: true,
168
168
  [`toggle-label-placement-${labelPlacement}`]: true,
169
169
  [`toggle-${rtl}`]: true,
170
- }) }, h("label", { key: '71fb6976e877639ca9f28c2103f6290917cdb6ce', class: "toggle-wrapper" }, h("input", Object.assign({ key: 'ed2495568197928ef1f17fc60470f4d9754a6244', type: "checkbox", role: "switch", "aria-checked": `${checked}`, checked: checked, disabled: disabled, id: inputId, onFocus: () => this.onFocus(), onBlur: () => this.onBlur(), ref: (focusEl) => (this.focusEl = focusEl) }, this.inheritedAttributes)), h("div", { key: '953ab9a29c432de4b869aeac296007e703bcdf27', class: {
170
+ }) }, h("label", { key: '554e11ac1db370363b251b83e4d57c32a2bd4577', class: "toggle-wrapper" }, h("input", Object.assign({ key: '327540a212dfe686310e8a587fa8c81edfd2e229', type: "checkbox", role: "switch", "aria-checked": `${checked}`, checked: checked, disabled: disabled, id: inputId, onFocus: () => this.onFocus(), onBlur: () => this.onBlur(), ref: (focusEl) => (this.focusEl = focusEl) }, this.inheritedAttributes)), h("div", { key: '9ba185a8afaf65c8ba0d2044b1abfa376aee4db3', class: {
171
171
  'label-text-wrapper': true,
172
172
  'label-text-wrapper-hidden': !this.hasLabel,
173
- }, part: "label" }, h("slot", { key: '718b24b4d59b979c11edfb1d90fa0270ac248b2f' })), h("div", { key: '293595f9dc291df38a54e23f81797b89428ff2c5', class: "native-wrapper" }, this.renderToggleControl()))));
173
+ }, part: "label" }, h("slot", { key: '730287f916c13ec437f39f2304a70afa50f41dc7' })), h("div", { key: '0e810cdf6dc7623d4efd2092a642ef12906efcae', class: "native-wrapper" }, this.renderToggleControl()))));
174
174
  }
175
175
  static get is() { return "ion-toggle"; }
176
176
  static get encapsulation() { return "shadow"; }
@@ -371,7 +371,7 @@ export class Toggle {
371
371
  "composed": true,
372
372
  "docs": {
373
373
  "tags": [],
374
- "text": "Emitted when the user switches the toggle on or off. Does not emit\nwhen programmatically changing the value of the `checked` property."
374
+ "text": "Emitted when the user switches the toggle on or off.\n\nThis event will not emit when programmatically setting the `checked` property."
375
375
  },
376
376
  "complexType": {
377
377
  "original": "ToggleChangeEventDetail",