@ionic/core 8.7.17-dev.11770147425.1bfcd5e5 → 8.7.17-dev.11770405784.157a3c10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/components/ion-range.js +39 -97
  2. package/components/ion-segment-view.js +11 -5
  3. package/components/ion-select.js +3 -2
  4. package/components/select-modal.js +6 -1
  5. package/dist/cjs/ion-range.cjs.entry.js +39 -95
  6. package/dist/cjs/ion-segment-view.cjs.entry.js +10 -5
  7. package/dist/cjs/ion-select-modal.cjs.entry.js +5 -1
  8. package/dist/cjs/ion-select_3.cjs.entry.js +3 -2
  9. package/dist/cjs/ionic.cjs.js +1 -1
  10. package/dist/cjs/loader.cjs.js +1 -1
  11. package/dist/collection/components/range/range.js +42 -116
  12. package/dist/collection/components/segment-view/segment-view.ios.css +2 -1
  13. package/dist/collection/components/segment-view/segment-view.js +28 -3
  14. package/dist/collection/components/segment-view/segment-view.md.css +2 -1
  15. package/dist/collection/components/select/select.js +3 -2
  16. package/dist/collection/components/select-modal/select-modal.js +25 -1
  17. package/dist/docs.json +64 -134
  18. package/dist/esm/ion-range.entry.js +39 -95
  19. package/dist/esm/ion-segment-view.entry.js +10 -5
  20. package/dist/esm/ion-select-modal.entry.js +5 -1
  21. package/dist/esm/ion-select_3.entry.js +3 -2
  22. package/dist/esm/ionic.js +1 -1
  23. package/dist/esm/loader.js +1 -1
  24. package/dist/html.html-data.json +8 -0
  25. package/dist/ionic/ionic.esm.js +1 -1
  26. package/dist/ionic/p-012212e4.entry.js +4 -0
  27. package/dist/ionic/p-88367362.entry.js +4 -0
  28. package/dist/ionic/p-9a2d390d.entry.js +4 -0
  29. package/dist/ionic/p-d2489bf2.entry.js +4 -0
  30. package/dist/types/components/range/range-interface.d.ts +0 -1
  31. package/dist/types/components/range/range.d.ts +4 -24
  32. package/dist/types/components/segment-view/segment-view.d.ts +4 -0
  33. package/dist/types/components/select-modal/select-modal.d.ts +4 -0
  34. package/dist/types/components.d.ts +20 -0
  35. package/hydrate/index.js +62 -124
  36. package/hydrate/index.mjs +62 -124
  37. package/package.json +1 -1
  38. package/dist/ionic/p-020af078.entry.js +0 -4
  39. package/dist/ionic/p-02d76786.entry.js +0 -4
  40. package/dist/ionic/p-b0c2f1f1.entry.js +0 -4
  41. package/dist/ionic/p-eb024a5b.entry.js +0 -4
package/hydrate/index.js CHANGED
@@ -28717,29 +28717,13 @@ const rangeMdCss = ":host{--knob-handle-size:calc(var(--knob-size) * 2);display:
28717
28717
  * @slot start - Content is placed to the left of the range slider in LTR, and to the right in RTL.
28718
28718
  * @slot end - Content is placed to the right of the range slider in LTR, and to the left in RTL.
28719
28719
  *
28720
- * @part label - The label text describing the range.
28721
28720
  * @part tick - An inactive tick mark.
28722
28721
  * @part tick-active - An active tick mark.
28722
+ * @part pin - The counter that appears above a knob.
28723
+ * @part knob - The handle that is used to drag the range.
28723
28724
  * @part bar - The inactive part of the bar.
28724
28725
  * @part bar-active - The active part of the bar.
28725
- * @part knob-handle - The container element that wraps the knob and handles drag interactions.
28726
- * @part knob-handle-a - The container element for the first knob. Only available when `dualKnobs` is `true`.
28727
- * @part knob-handle-b - The container element for the second knob. Only available when `dualKnobs` is `true`.
28728
- * @part knob-handle-lower - The container element for the lower knob. Only available when `dualKnobs` is `true`.
28729
- * @part knob-handle-upper - The container element for the upper knob. Only available when `dualKnobs` is `true`.
28730
- * @part pin - The counter that appears above a knob.
28731
- * @part pin-a - The counter that appears above the first knob. Only available when `dualKnobs` is `true`.
28732
- * @part pin-b - The counter that appears above the second knob. Only available when `dualKnobs` is `true`.
28733
- * @part pin-lower - The counter that appears above the lower knob. Only available when `dualKnobs` is `true`.
28734
- * @part pin-upper - The counter that appears above the upper knob. Only available when `dualKnobs` is `true`.
28735
- * @part knob - The visual knob element that appears on the range track.
28736
- * @part knob-a - The visual knob element for the first knob. Only available when `dualKnobs` is `true`.
28737
- * @part knob-b - The visual knob element for the second knob. Only available when `dualKnobs` is `true`.
28738
- * @part knob-lower - The visual knob element for the lower knob. Only available when `dualKnobs` is `true`.
28739
- * @part knob-upper - The visual knob element for the upper knob. Only available when `dualKnobs` is `true`.
28740
- * @part pressed - Added to the knob-handle, knob, and pin that is currently being pressed to drag. Only one set has this part at a time when `dualKnobs` is `true`.
28741
- * @part focused - Added to the knob-handle, knob, and pin that currently has focus. Only one set has this part at a time when `dualKnobs` is `true`.
28742
- * @part hover - Added to the knob-handle, knob, and pin when the knob has hover. Only one set has this part at a time.
28726
+ * @part label - The label text describing the range.
28743
28727
  */
28744
28728
  class Range {
28745
28729
  constructor(hostRef) {
@@ -28757,7 +28741,6 @@ class Range {
28757
28741
  this.inheritedAttributes = {};
28758
28742
  this.contentEl = null;
28759
28743
  this.initialContentScrollY = true;
28760
- this.focusFromPointer = false;
28761
28744
  this.ratioA = 0;
28762
28745
  this.ratioB = 0;
28763
28746
  /**
@@ -28889,7 +28872,6 @@ class Range {
28889
28872
  this.onBlur = () => {
28890
28873
  if (this.hasFocus) {
28891
28874
  this.hasFocus = false;
28892
- this.focusedKnob = undefined;
28893
28875
  this.ionBlur.emit();
28894
28876
  }
28895
28877
  };
@@ -28900,20 +28882,21 @@ class Range {
28900
28882
  }
28901
28883
  };
28902
28884
  this.onKnobFocus = (knob) => {
28903
- // Clicking focuses the range which is needed for the keyboard,
28904
- // but we only want to add the ion-focused class when focused via Tab.
28905
- if (!this.focusFromPointer) {
28906
- this.focusedKnob = knob;
28907
- }
28908
- else {
28909
- this.focusFromPointer = false;
28910
- this.focusedKnob = undefined;
28911
- }
28912
- // If the knob was not already focused, emit the focus event
28913
28885
  if (!this.hasFocus) {
28914
28886
  this.hasFocus = true;
28915
28887
  this.ionFocus.emit();
28916
28888
  }
28889
+ // Manually manage ion-focused class for dual knobs
28890
+ if (this.dualKnobs && this.el.shadowRoot) {
28891
+ const knobA = this.el.shadowRoot.querySelector('.range-knob-a');
28892
+ const knobB = this.el.shadowRoot.querySelector('.range-knob-b');
28893
+ // Remove ion-focused from both knobs first
28894
+ knobA === null || knobA === void 0 ? void 0 : knobA.classList.remove('ion-focused');
28895
+ knobB === null || knobB === void 0 ? void 0 : knobB.classList.remove('ion-focused');
28896
+ // Add ion-focused only to the focused knob
28897
+ const focusedKnobEl = knob === 'A' ? knobA : knobB;
28898
+ focusedKnobEl === null || focusedKnobEl === void 0 ? void 0 : focusedKnobEl.classList.add('ion-focused');
28899
+ }
28917
28900
  };
28918
28901
  this.onKnobBlur = () => {
28919
28902
  // Check if focus is moving to another knob within the same range
@@ -28925,18 +28908,18 @@ class Range {
28925
28908
  if (!isStillFocusedOnKnob) {
28926
28909
  if (this.hasFocus) {
28927
28910
  this.hasFocus = false;
28928
- this.focusedKnob = undefined;
28929
28911
  this.ionBlur.emit();
28930
28912
  }
28913
+ // Remove ion-focused from both knobs when focus leaves the range
28914
+ if (this.dualKnobs && this.el.shadowRoot) {
28915
+ const knobA = this.el.shadowRoot.querySelector('.range-knob-a');
28916
+ const knobB = this.el.shadowRoot.querySelector('.range-knob-b');
28917
+ knobA === null || knobA === void 0 ? void 0 : knobA.classList.remove('ion-focused');
28918
+ knobB === null || knobB === void 0 ? void 0 : knobB.classList.remove('ion-focused');
28919
+ }
28931
28920
  }
28932
28921
  }, 0);
28933
28922
  };
28934
- this.onKnobMouseEnter = (knob) => {
28935
- this.hoveredKnob = knob;
28936
- };
28937
- this.onKnobMouseLeave = () => {
28938
- this.hoveredKnob = undefined;
28939
- };
28940
28923
  }
28941
28924
  debounceChanged() {
28942
28925
  const { ionInput, debounce, originalIonInput } = this;
@@ -29190,6 +29173,7 @@ class Range {
29190
29173
  ratio = 1 - ratio;
29191
29174
  }
29192
29175
  this.pressedKnob = !this.dualKnobs || Math.abs(this.ratioA - ratio) < Math.abs(this.ratioB - ratio) ? 'A' : 'B';
29176
+ this.setFocus(this.pressedKnob);
29193
29177
  }
29194
29178
  get valA() {
29195
29179
  return ratioToValue(this.ratioA, this.min, this.max, this.step);
@@ -29216,23 +29200,9 @@ class Range {
29216
29200
  updateRatio() {
29217
29201
  const value = this.getValue();
29218
29202
  const { min, max } = this;
29219
- /**
29220
- * For dual knobs, value gives lower/upper but not which is A vs B.
29221
- * Assign (lowerRatio, upperRatio) to (ratioA, ratioB) in the way that
29222
- * minimizes change from the current ratios so the knobs don't swap.
29223
- */
29224
29203
  if (this.dualKnobs) {
29225
- const lowerRatio = valueToRatio(value.lower, min, max);
29226
- const upperRatio = valueToRatio(value.upper, min, max);
29227
- if (Math.abs(this.ratioA - lowerRatio) + Math.abs(this.ratioB - upperRatio) <=
29228
- Math.abs(this.ratioA - upperRatio) + Math.abs(this.ratioB - lowerRatio)) {
29229
- this.ratioA = lowerRatio;
29230
- this.ratioB = upperRatio;
29231
- }
29232
- else {
29233
- this.ratioA = upperRatio;
29234
- this.ratioB = lowerRatio;
29235
- }
29204
+ this.ratioA = valueToRatio(value.lower, min, max);
29205
+ this.ratioB = valueToRatio(value.upper, min, max);
29236
29206
  }
29237
29207
  else {
29238
29208
  this.ratioA = valueToRatio(value, min, max);
@@ -29249,6 +29219,14 @@ class Range {
29249
29219
  };
29250
29220
  this.noUpdate = false;
29251
29221
  }
29222
+ setFocus(knob) {
29223
+ if (this.el.shadowRoot) {
29224
+ const knobEl = this.el.shadowRoot.querySelector(knob === 'A' ? '.range-knob-a' : '.range-knob-b');
29225
+ if (knobEl) {
29226
+ knobEl.focus();
29227
+ }
29228
+ }
29229
+ }
29252
29230
  /**
29253
29231
  * Returns true if content was passed to the "start" slot
29254
29232
  */
@@ -29266,7 +29244,7 @@ class Range {
29266
29244
  }
29267
29245
  renderRangeSlider() {
29268
29246
  var _a;
29269
- const { min, max, step, handleKeyboard, focusedKnob, hoveredKnob, pressedKnob, disabled, pin, ratioLower, ratioUpper, pinFormatter, inheritedAttributes, } = this;
29247
+ const { min, max, step, handleKeyboard, pressedKnob, disabled, pin, ratioLower, ratioUpper, pinFormatter, inheritedAttributes, } = this;
29270
29248
  let barStart = `${ratioLower * 100}%`;
29271
29249
  let barEnd = `${100 - ratioUpper * 100}%`;
29272
29250
  const rtl = isRTL$1(this.el);
@@ -29326,9 +29304,7 @@ class Range {
29326
29304
  ticks.push(tick);
29327
29305
  }
29328
29306
  }
29329
- return (hAsync("div", { class: "range-slider", ref: (rangeEl) => (this.rangeSlider = rangeEl), onPointerDown: () => {
29330
- this.focusFromPointer = true;
29331
- },
29307
+ return (hAsync("div", { class: "range-slider", ref: (rangeEl) => (this.rangeSlider = rangeEl),
29332
29308
  /**
29333
29309
  * Since the gesture has a threshold, the value
29334
29310
  * won't change until the user has dragged past
@@ -29341,7 +29317,6 @@ class Range {
29341
29317
  * we need to listen for the "pointerUp" event.
29342
29318
  */
29343
29319
  onPointerUp: (ev) => {
29344
- this.focusFromPointer = false;
29345
29320
  /**
29346
29321
  * If the user drags the knob on the web
29347
29322
  * version (does not occur on mobile),
@@ -29367,10 +29342,6 @@ class Range {
29367
29342
  'has-ticks': ticks.length > 0,
29368
29343
  }, role: "presentation", style: barStyle, part: "bar-active" })), renderKnob(rtl, {
29369
29344
  knob: 'A',
29370
- position: this.dualKnobs ? (this.ratioA <= this.ratioB ? 'lower' : 'upper') : 'lower',
29371
- dualKnobs: this.dualKnobs,
29372
- focused: focusedKnob === 'A',
29373
- hovered: hoveredKnob === 'A',
29374
29345
  pressed: pressedKnob === 'A',
29375
29346
  value: this.valA,
29376
29347
  ratio: this.ratioA,
@@ -29383,15 +29354,9 @@ class Range {
29383
29354
  inheritedAttributes,
29384
29355
  onKnobFocus: this.onKnobFocus,
29385
29356
  onKnobBlur: this.onKnobBlur,
29386
- onKnobMouseEnter: this.onKnobMouseEnter,
29387
- onKnobMouseLeave: this.onKnobMouseLeave,
29388
29357
  }), this.dualKnobs &&
29389
29358
  renderKnob(rtl, {
29390
29359
  knob: 'B',
29391
- position: this.ratioB <= this.ratioA ? 'lower' : 'upper',
29392
- dualKnobs: this.dualKnobs,
29393
- focused: focusedKnob === 'B',
29394
- hovered: hoveredKnob === 'B',
29395
29360
  pressed: pressedKnob === 'B',
29396
29361
  value: this.valB,
29397
29362
  ratio: this.ratioB,
@@ -29404,8 +29369,6 @@ class Range {
29404
29369
  inheritedAttributes,
29405
29370
  onKnobFocus: this.onKnobFocus,
29406
29371
  onKnobBlur: this.onKnobBlur,
29407
- onKnobMouseEnter: this.onKnobMouseEnter,
29408
- onKnobMouseLeave: this.onKnobMouseLeave,
29409
29372
  })));
29410
29373
  }
29411
29374
  render() {
@@ -29431,11 +29394,10 @@ class Range {
29431
29394
  const valueAtMin = dualKnobs ? this.valA === min || this.valB === min : this.valA === min;
29432
29395
  const valueAtMax = dualKnobs ? this.valA === max || this.valB === max : this.valA === max;
29433
29396
  renderHiddenInput(true, el, this.name, JSON.stringify(this.getValue()), disabled);
29434
- return (hAsync(Host, { key: '4a393e229cf599f3377b606acaebe5f090d41f6e', onFocusin: this.onFocus, onFocusout: this.onBlur, id: rangeId, class: createColorClasses$1(this.color, {
29397
+ return (hAsync(Host, { key: 'ed646a42d51b8fe22012198c354cbcf5a389c108', onFocusin: this.onFocus, onFocusout: this.onBlur, id: rangeId, class: createColorClasses$1(this.color, {
29435
29398
  [mode]: true,
29436
29399
  'in-item': inItem,
29437
29400
  'range-disabled': disabled,
29438
- 'range-dual-knobs': dualKnobs,
29439
29401
  'range-pressed': pressedKnob !== undefined,
29440
29402
  'range-has-pin': pin,
29441
29403
  [`range-label-placement-${labelPlacement}`]: true,
@@ -29443,10 +29405,10 @@ class Range {
29443
29405
  'range-item-end-adjustment': needsEndAdjustment,
29444
29406
  'range-value-min': valueAtMin,
29445
29407
  'range-value-max': valueAtMax,
29446
- }) }, hAsync("label", { key: 'd7f45882aa7f11bbac1cb783caa0053151efcc70', class: "range-wrapper", id: "range-label" }, hAsync("div", { key: '537d3b1e7f9fed0c8380678551e31325b1ef1f85', class: {
29408
+ }) }, hAsync("label", { key: '3083e4f2a624e3b268396acb4415f7c6ac44d851', class: "range-wrapper", id: "range-label" }, hAsync("div", { key: '47b92f94d2a0381dd7c5cd3dda54ed2942096715', class: {
29447
29409
  'label-text-wrapper': true,
29448
29410
  'label-text-wrapper-hidden': !hasLabel,
29449
- }, part: "label" }, label !== undefined ? hAsync("div", { class: "label-text" }, label) : hAsync("slot", { name: "label" })), hAsync("div", { key: 'cb50f07a3704d04af3554211ffad35f7d9fcc450', class: "native-wrapper" }, hAsync("slot", { key: '09004eaa72688ca0f0536bd5f5d7160a23d16406', name: "start" }), this.renderRangeSlider(), hAsync("slot", { key: 'a94da21d2ea7ed2feafcc0651c72da21d6de1e57', name: "end" })))));
29411
+ }, part: "label" }, label !== undefined ? hAsync("div", { class: "label-text" }, label) : hAsync("slot", { name: "label" })), hAsync("div", { key: '5341da8d19eb29091df680978a0e20cc8f2eec65', class: "native-wrapper" }, hAsync("slot", { key: '09f1437078032676695442d8c827a16faa7dffe2', name: "start" }), this.renderRangeSlider(), hAsync("slot", { key: '02b7781970ea4d44f10b5f4627a2ca36eca45f85', name: "end" })))));
29450
29412
  }
29451
29413
  get el() { return getElement(this); }
29452
29414
  static get watchers() { return {
@@ -29484,8 +29446,6 @@ class Range {
29484
29446
  "labelPlacement": [1, "label-placement"],
29485
29447
  "ratioA": [32],
29486
29448
  "ratioB": [32],
29487
- "focusedKnob": [32],
29488
- "hoveredKnob": [32],
29489
29449
  "pressedKnob": [32]
29490
29450
  },
29491
29451
  "$listeners$": undefined,
@@ -29493,7 +29453,7 @@ class Range {
29493
29453
  "$attrsToReflect$": [["color", "color"]]
29494
29454
  }; }
29495
29455
  }
29496
- const renderKnob = (rtl, { knob, position, dualKnobs, value, ratio, min, max, disabled, pressed, focused, hovered, pin, handleKeyboard, pinFormatter, inheritedAttributes, onKnobFocus, onKnobBlur, onKnobMouseEnter, onKnobMouseLeave, }) => {
29456
+ const renderKnob = (rtl, { knob, value, ratio, min, max, disabled, pressed, pin, handleKeyboard, pinFormatter, inheritedAttributes, onKnobFocus, onKnobBlur, }) => {
29497
29457
  const start = rtl ? 'right' : 'left';
29498
29458
  const knobStyle = () => {
29499
29459
  const style = {};
@@ -29514,50 +29474,16 @@ const renderKnob = (rtl, { knob, position, dualKnobs, value, ratio, min, max, di
29514
29474
  ev.preventDefault();
29515
29475
  ev.stopPropagation();
29516
29476
  }
29517
- }, onFocus: () => onKnobFocus(knob), onBlur: onKnobBlur, onMouseEnter: () => onKnobMouseEnter(knob), onMouseLeave: onKnobMouseLeave, class: {
29477
+ }, onFocus: () => onKnobFocus(knob), onBlur: onKnobBlur, class: {
29518
29478
  'range-knob-handle': true,
29519
- 'range-knob-handle-a': knob === 'A',
29520
- 'range-knob-handle-b': knob === 'B',
29479
+ 'range-knob-a': knob === 'A',
29480
+ 'range-knob-b': knob === 'B',
29521
29481
  'range-knob-pressed': pressed,
29522
29482
  'range-knob-min': value === min,
29523
29483
  'range-knob-max': value === max,
29524
29484
  'ion-activatable': true,
29525
29485
  'ion-focusable': true,
29526
- 'ion-focused': focused,
29527
- }, part: [
29528
- 'knob-handle',
29529
- dualKnobs && knob === 'A' && 'knob-handle-a',
29530
- dualKnobs && knob === 'B' && 'knob-handle-b',
29531
- dualKnobs && position === 'lower' && 'knob-handle-lower',
29532
- dualKnobs && position === 'upper' && 'knob-handle-upper',
29533
- pressed && 'pressed',
29534
- focused && 'focused',
29535
- hovered && 'hover',
29536
- ]
29537
- .filter(Boolean)
29538
- .join(' '), style: knobStyle(), role: "slider", tabindex: disabled ? -1 : 0, "aria-label": ariaLabel !== undefined ? ariaLabel : null, "aria-labelledby": ariaLabel === undefined ? 'range-label' : null, "aria-valuemin": min, "aria-valuemax": max, "aria-disabled": disabled ? 'true' : null, "aria-valuenow": value }, pin && (hAsync("div", { class: "range-pin", role: "presentation", part: [
29539
- 'pin',
29540
- dualKnobs && knob === 'A' && 'pin-a',
29541
- dualKnobs && knob === 'B' && 'pin-b',
29542
- dualKnobs && position === 'lower' && 'pin-lower',
29543
- dualKnobs && position === 'upper' && 'pin-upper',
29544
- pressed && 'pressed',
29545
- focused && 'focused',
29546
- hovered && 'hover',
29547
- ]
29548
- .filter(Boolean)
29549
- .join(' ') }, pinFormatter(value))), hAsync("div", { class: "range-knob", role: "presentation", part: [
29550
- 'knob',
29551
- dualKnobs && knob === 'A' && 'knob-a',
29552
- dualKnobs && knob === 'B' && 'knob-b',
29553
- dualKnobs && position === 'lower' && 'knob-lower',
29554
- dualKnobs && position === 'upper' && 'knob-upper',
29555
- pressed && 'pressed',
29556
- focused && 'focused',
29557
- hovered && 'hover',
29558
- ]
29559
- .filter(Boolean)
29560
- .join(' ') })));
29486
+ }, style: knobStyle(), role: "slider", tabindex: disabled ? -1 : 0, "aria-label": ariaLabel !== undefined ? ariaLabel : null, "aria-labelledby": ariaLabel === undefined ? 'range-label' : null, "aria-valuemin": min, "aria-valuemax": max, "aria-disabled": disabled ? 'true' : null, "aria-valuenow": value }, pin && (hAsync("div", { class: "range-pin", role: "presentation", part: "pin" }, pinFormatter(value))), hAsync("div", { class: "range-knob", role: "presentation", part: "knob" })));
29561
29487
  };
29562
29488
  const ratioToValue = (ratio, min, max, step) => {
29563
29489
  let value = (max - min) * ratio;
@@ -33558,9 +33484,9 @@ class SegmentContent {
33558
33484
  }; }
33559
33485
  }
33560
33486
 
33561
- const segmentViewIosCss = ":host{display:-ms-flexbox;display:flex;height:100%;overflow-x:scroll;-webkit-scroll-snap-type:x mandatory;-ms-scroll-snap-type:x mandatory;scroll-snap-type:x mandatory;scrollbar-width:none;-ms-overflow-style:none}:host::-webkit-scrollbar{display:none}:host(.segment-view-disabled){-ms-touch-action:none;touch-action:none;overflow-x:hidden}:host(.segment-view-scroll-disabled){pointer-events:none}:host(.segment-view-disabled){opacity:0.3}";
33487
+ const segmentViewIosCss = ":host{display:-ms-flexbox;display:flex;height:100%;overflow-x:scroll;-webkit-scroll-snap-type:x mandatory;-ms-scroll-snap-type:x mandatory;scroll-snap-type:x mandatory;scrollbar-width:none;-ms-overflow-style:none}:host::-webkit-scrollbar{display:none}:host(.segment-view-disabled),:host(.segment-view-swipe-disabled){-ms-touch-action:none;touch-action:none;overflow-x:hidden}:host(.segment-view-scroll-disabled){pointer-events:none}:host(.segment-view-disabled){opacity:0.3}";
33562
33488
 
33563
- const segmentViewMdCss = ":host{display:-ms-flexbox;display:flex;height:100%;overflow-x:scroll;-webkit-scroll-snap-type:x mandatory;-ms-scroll-snap-type:x mandatory;scroll-snap-type:x mandatory;scrollbar-width:none;-ms-overflow-style:none}:host::-webkit-scrollbar{display:none}:host(.segment-view-disabled){-ms-touch-action:none;touch-action:none;overflow-x:hidden}:host(.segment-view-scroll-disabled){pointer-events:none}:host(.segment-view-disabled){opacity:0.3}";
33489
+ const segmentViewMdCss = ":host{display:-ms-flexbox;display:flex;height:100%;overflow-x:scroll;-webkit-scroll-snap-type:x mandatory;-ms-scroll-snap-type:x mandatory;scroll-snap-type:x mandatory;scrollbar-width:none;-ms-overflow-style:none}:host::-webkit-scrollbar{display:none}:host(.segment-view-disabled),:host(.segment-view-swipe-disabled){-ms-touch-action:none;touch-action:none;overflow-x:hidden}:host(.segment-view-scroll-disabled){pointer-events:none}:host(.segment-view-disabled){opacity:0.3}";
33564
33490
 
33565
33491
  class SegmentView {
33566
33492
  constructor(hostRef) {
@@ -33572,6 +33498,10 @@ class SegmentView {
33572
33498
  * If `true`, the segment view cannot be interacted with.
33573
33499
  */
33574
33500
  this.disabled = false;
33501
+ /**
33502
+ * If `true`, users will be able to swipe the segment view to navigate between segment contents.
33503
+ */
33504
+ this.swipeGesture = true;
33575
33505
  }
33576
33506
  handleScroll(ev) {
33577
33507
  var _a;
@@ -33659,11 +33589,12 @@ class SegmentView {
33659
33589
  return Array.from(this.el.querySelectorAll('ion-segment-content'));
33660
33590
  }
33661
33591
  render() {
33662
- const { disabled, isManualScroll } = this;
33663
- return (hAsync(Host, { key: 'e180b67bb3143a5f4611fb358c037be6fc782a8f', class: {
33592
+ const { disabled, isManualScroll, swipeGesture } = this;
33593
+ return (hAsync(Host, { key: '565cccce7f0cfc4c71508777cc60292d6f24334f', class: {
33664
33594
  'segment-view-disabled': disabled,
33665
33595
  'segment-view-scroll-disabled': isManualScroll === false,
33666
- } }, hAsync("slot", { key: '41c11d6a7406a10f5c64a2e73abfc072afd8fc73' })));
33596
+ 'segment-view-swipe-disabled': swipeGesture === false,
33597
+ } }, hAsync("slot", { key: '4118c240364467302b8f593e33c37837ea5d06f0' })));
33667
33598
  }
33668
33599
  get el() { return getElement(this); }
33669
33600
  static get style() { return {
@@ -33675,6 +33606,7 @@ class SegmentView {
33675
33606
  "$tagName$": "ion-segment-view",
33676
33607
  "$members$": {
33677
33608
  "disabled": [4],
33609
+ "swipeGesture": [4, "swipe-gesture"],
33678
33610
  "isManualScroll": [32],
33679
33611
  "setContent": [64]
33680
33612
  },
@@ -34181,6 +34113,7 @@ class Select {
34181
34113
  const mode = getIonMode$1(this);
34182
34114
  const modalOpts = Object.assign(Object.assign({}, interfaceOptions), { mode, cssClass: ['select-modal', interfaceOptions.cssClass], component: 'ion-select-modal', componentProps: {
34183
34115
  header: interfaceOptions.header,
34116
+ cancelText: this.cancelText,
34184
34117
  multiple,
34185
34118
  value,
34186
34119
  options: this.createOverlaySelectOptions(this.childOpts, value),
@@ -34430,7 +34363,7 @@ class Select {
34430
34363
  * TODO(FW-5592): Remove hasStartEndSlots condition
34431
34364
  */
34432
34365
  const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || isExpanded || hasStartEndSlots));
34433
- return (hAsync(Host, { key: 'd8026835993d0e6dce747098f741a06ae4e4f54d', onClick: this.onClick, class: createColorClasses$1(this.color, {
34366
+ return (hAsync(Host, { key: 'b7fa907f8fbc54fd63e2d07a9bb5156d94fd5057', onClick: this.onClick, class: createColorClasses$1(this.color, {
34434
34367
  [mode]: true,
34435
34368
  'in-item': inItem,
34436
34369
  'in-item-color': hostContext('ion-item.ion-color', el),
@@ -34448,7 +34381,7 @@ class Select {
34448
34381
  [`select-justify-${justify}`]: justifyEnabled,
34449
34382
  [`select-shape-${shape}`]: shape !== undefined,
34450
34383
  [`select-label-placement-${labelPlacement}`]: true,
34451
- }) }, hAsync("label", { key: 'fcfb40209d6d07d49c7fdca4884b31abf6ac2567', class: "select-wrapper", id: "select-label", onClick: this.onLabelClick }, this.renderLabelContainer(), hAsync("div", { key: 'f191664f2290c3890bde1156157c83a6ff17dbe2', class: "select-wrapper-inner" }, hAsync("slot", { key: '317a28d1115b4214f291e228ce0fe6fc782e57d5', name: "start" }), hAsync("div", { key: 'db68e18abd5ca3a1023d7c7b58bf89893ae18073', class: "native-wrapper", ref: (el) => (this.nativeWrapperEl = el), part: "container" }, this.renderSelectText(), this.renderListbox()), hAsync("slot", { key: '4274e042267c2234a198b0f65c89477898d08130', name: "end" }), !hasFloatingOrStackedLabel && this.renderSelectIcon()), hasFloatingOrStackedLabel && this.renderSelectIcon(), shouldRenderHighlight && hAsync("div", { key: '2e2eb1ee2b2791e0683d9afb186fde6e938ca59c', class: "select-highlight" })), this.renderBottomContent()));
34384
+ }) }, hAsync("label", { key: '11137e6a8b0374e93923ddb5a4629972ded5f43c', class: "select-wrapper", id: "select-label", onClick: this.onLabelClick }, this.renderLabelContainer(), hAsync("div", { key: '99e3c09b5e6c2e7be493ed5834f991fffe45cfff', class: "select-wrapper-inner" }, hAsync("slot", { key: '740f0e5a913cb0209d5acae31c33a6ed8f672dfc', name: "start" }), hAsync("div", { key: 'b20e33c8b60915a5194948fcf8e22d7789f0b050', class: "native-wrapper", ref: (el) => (this.nativeWrapperEl = el), part: "container" }, this.renderSelectText(), this.renderListbox()), hAsync("slot", { key: '0199f338185d5fa2cdd977bb20516746bd9ddad5', name: "end" }), !hasFloatingOrStackedLabel && this.renderSelectIcon()), hasFloatingOrStackedLabel && this.renderSelectIcon(), shouldRenderHighlight && hAsync("div", { key: '3b54de893cc8fc66df8588cee22e30d6f10850b3', class: "select-highlight" })), this.renderBottomContent()));
34452
34385
  }
34453
34386
  get el() { return getElement(this); }
34454
34387
  static get watchers() { return {
@@ -34543,6 +34476,10 @@ const selectModalMdCss = ".sc-ion-select-modal-md-h{height:100%}ion-list.sc-ion-
34543
34476
  class SelectModal {
34544
34477
  constructor(hostRef) {
34545
34478
  registerInstance(this, hostRef);
34479
+ /**
34480
+ * The text to display on the cancel button.
34481
+ */
34482
+ this.cancelText = 'Close';
34546
34483
  this.options = [];
34547
34484
  }
34548
34485
  closeModal() {
@@ -34609,7 +34546,7 @@ class SelectModal {
34609
34546
  } }, option.text))));
34610
34547
  }
34611
34548
  render() {
34612
- return (hAsync(Host, { key: 'b6c0dec240b2e41985b15fdf4e5a6d3a145c1567', class: getIonMode$1(this) }, hAsync("ion-header", { key: 'cd177e85ee0f62a60a3a708342d6ab6eb19a44dc' }, hAsync("ion-toolbar", { key: 'aee8222a5a4daa540ad202b2e4cac1ef93d9558c' }, this.header !== undefined && hAsync("ion-title", { key: '5f8fecc764d97bf840d3d4cfddeeccd118ab4436' }, this.header), hAsync("ion-buttons", { key: '919033950d7c2b0101f96a9c9698219de9f568ea', slot: "end" }, hAsync("ion-button", { key: '34b571cab6dced4bde555a077a21e91800829931', onClick: () => this.closeModal() }, "Close")))), hAsync("ion-content", { key: '3c9153d26ba7a5a03d3b20fcd628d0c3031661a7' }, hAsync("ion-list", { key: 'e00b222c071bc97c82ad1bba4db95a8a5c43ed6d' }, this.multiple === true ? this.renderCheckboxOptions() : this.renderRadioOptions()))));
34549
+ return (hAsync(Host, { key: '59ba79ffdbb69befe8e13745450c1071a1fe8c6c', class: getIonMode$1(this) }, hAsync("ion-header", { key: 'fa4d08ee43eec4b9add09d9ffabcba9ed13dd4af' }, hAsync("ion-toolbar", { key: 'b5e26cf092297c51c1dba3ce7963e7b03420393b' }, this.header !== undefined && hAsync("ion-title", { key: 'a8a93cdea4d119d3a17d8cef3878b8a1daa86e26' }, this.header), hAsync("ion-buttons", { key: 'bbc656713b41ef09099ed466f93a9cfbdaceecc1', slot: "end" }, hAsync("ion-button", { key: '80b8751fe4c96e06b620a0b9d17b2d9b3da2faa5', onClick: () => this.closeModal() }, this.cancelText)))), hAsync("ion-content", { key: 'a251fc00ae4cc7e6b3abe13caa10d95bb515558e' }, hAsync("ion-list", { key: 'bcaf38d6d91accfabb4a9d26783bc0e4801abe3c' }, this.multiple === true ? this.renderCheckboxOptions() : this.renderRadioOptions()))));
34613
34550
  }
34614
34551
  get el() { return getElement(this); }
34615
34552
  static get style() { return {
@@ -34622,6 +34559,7 @@ class SelectModal {
34622
34559
  "$tagName$": "ion-select-modal",
34623
34560
  "$members$": {
34624
34561
  "header": [1],
34562
+ "cancelText": [1, "cancel-text"],
34625
34563
  "multiple": [4],
34626
34564
  "options": [16]
34627
34565
  },