@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.
- package/components/ion-range.js +39 -97
- package/components/ion-segment-view.js +11 -5
- package/components/ion-select.js +3 -2
- package/components/select-modal.js +6 -1
- package/dist/cjs/ion-range.cjs.entry.js +39 -95
- package/dist/cjs/ion-segment-view.cjs.entry.js +10 -5
- package/dist/cjs/ion-select-modal.cjs.entry.js +5 -1
- package/dist/cjs/ion-select_3.cjs.entry.js +3 -2
- package/dist/cjs/ionic.cjs.js +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/collection/components/range/range.js +42 -116
- package/dist/collection/components/segment-view/segment-view.ios.css +2 -1
- package/dist/collection/components/segment-view/segment-view.js +28 -3
- package/dist/collection/components/segment-view/segment-view.md.css +2 -1
- package/dist/collection/components/select/select.js +3 -2
- package/dist/collection/components/select-modal/select-modal.js +25 -1
- package/dist/docs.json +64 -134
- package/dist/esm/ion-range.entry.js +39 -95
- package/dist/esm/ion-segment-view.entry.js +10 -5
- package/dist/esm/ion-select-modal.entry.js +5 -1
- package/dist/esm/ion-select_3.entry.js +3 -2
- package/dist/esm/ionic.js +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/html.html-data.json +8 -0
- package/dist/ionic/ionic.esm.js +1 -1
- package/dist/ionic/p-012212e4.entry.js +4 -0
- package/dist/ionic/p-88367362.entry.js +4 -0
- package/dist/ionic/p-9a2d390d.entry.js +4 -0
- package/dist/ionic/p-d2489bf2.entry.js +4 -0
- package/dist/types/components/range/range-interface.d.ts +0 -1
- package/dist/types/components/range/range.d.ts +4 -24
- package/dist/types/components/segment-view/segment-view.d.ts +4 -0
- package/dist/types/components/select-modal/select-modal.d.ts +4 -0
- package/dist/types/components.d.ts +20 -0
- package/hydrate/index.js +62 -124
- package/hydrate/index.mjs +62 -124
- package/package.json +1 -1
- package/dist/ionic/p-020af078.entry.js +0 -4
- package/dist/ionic/p-02d76786.entry.js +0 -4
- package/dist/ionic/p-b0c2f1f1.entry.js +0 -4
- package/dist/ionic/p-eb024a5b.entry.js +0 -4
|
@@ -7,6 +7,10 @@ import { safeCall } from "../../utils/overlays";
|
|
|
7
7
|
import { getClassMap } from "../../utils/theme";
|
|
8
8
|
export class SelectModal {
|
|
9
9
|
constructor() {
|
|
10
|
+
/**
|
|
11
|
+
* The text to display on the cancel button.
|
|
12
|
+
*/
|
|
13
|
+
this.cancelText = 'Close';
|
|
10
14
|
this.options = [];
|
|
11
15
|
}
|
|
12
16
|
closeModal() {
|
|
@@ -75,7 +79,7 @@ export class SelectModal {
|
|
|
75
79
|
} }, option.text))));
|
|
76
80
|
}
|
|
77
81
|
render() {
|
|
78
|
-
return (h(Host, { key: '
|
|
82
|
+
return (h(Host, { key: '59ba79ffdbb69befe8e13745450c1071a1fe8c6c', class: getIonMode(this) }, h("ion-header", { key: 'fa4d08ee43eec4b9add09d9ffabcba9ed13dd4af' }, h("ion-toolbar", { key: 'b5e26cf092297c51c1dba3ce7963e7b03420393b' }, this.header !== undefined && h("ion-title", { key: 'a8a93cdea4d119d3a17d8cef3878b8a1daa86e26' }, this.header), h("ion-buttons", { key: 'bbc656713b41ef09099ed466f93a9cfbdaceecc1', slot: "end" }, h("ion-button", { key: '80b8751fe4c96e06b620a0b9d17b2d9b3da2faa5', onClick: () => this.closeModal() }, this.cancelText)))), h("ion-content", { key: 'a251fc00ae4cc7e6b3abe13caa10d95bb515558e' }, h("ion-list", { key: 'bcaf38d6d91accfabb4a9d26783bc0e4801abe3c' }, this.multiple === true ? this.renderCheckboxOptions() : this.renderRadioOptions()))));
|
|
79
83
|
}
|
|
80
84
|
static get is() { return "ion-select-modal"; }
|
|
81
85
|
static get encapsulation() { return "scoped"; }
|
|
@@ -114,6 +118,26 @@ export class SelectModal {
|
|
|
114
118
|
"reflect": false,
|
|
115
119
|
"attribute": "header"
|
|
116
120
|
},
|
|
121
|
+
"cancelText": {
|
|
122
|
+
"type": "string",
|
|
123
|
+
"mutable": false,
|
|
124
|
+
"complexType": {
|
|
125
|
+
"original": "string",
|
|
126
|
+
"resolved": "string",
|
|
127
|
+
"references": {}
|
|
128
|
+
},
|
|
129
|
+
"required": false,
|
|
130
|
+
"optional": false,
|
|
131
|
+
"docs": {
|
|
132
|
+
"tags": [],
|
|
133
|
+
"text": "The text to display on the cancel button."
|
|
134
|
+
},
|
|
135
|
+
"getter": false,
|
|
136
|
+
"setter": false,
|
|
137
|
+
"reflect": false,
|
|
138
|
+
"attribute": "cancel-text",
|
|
139
|
+
"defaultValue": "'Close'"
|
|
140
|
+
},
|
|
117
141
|
"multiple": {
|
|
118
142
|
"type": "boolean",
|
|
119
143
|
"mutable": false,
|
package/dist/docs.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"timestamp": "2026-02-
|
|
2
|
+
"timestamp": "2026-02-06T19:24:47",
|
|
3
3
|
"compiler": {
|
|
4
4
|
"name": "@stencil/core",
|
|
5
5
|
"version": "4.38.0",
|
|
@@ -25548,10 +25548,6 @@
|
|
|
25548
25548
|
"name": "slot",
|
|
25549
25549
|
"text": "end - Content is placed to the right of the range slider in LTR, and to the left in RTL."
|
|
25550
25550
|
},
|
|
25551
|
-
{
|
|
25552
|
-
"name": "part",
|
|
25553
|
-
"text": "label - The label text describing the range."
|
|
25554
|
-
},
|
|
25555
25551
|
{
|
|
25556
25552
|
"name": "part",
|
|
25557
25553
|
"text": "tick - An inactive tick mark."
|
|
@@ -25560,85 +25556,25 @@
|
|
|
25560
25556
|
"name": "part",
|
|
25561
25557
|
"text": "tick-active - An active tick mark."
|
|
25562
25558
|
},
|
|
25563
|
-
{
|
|
25564
|
-
"name": "part",
|
|
25565
|
-
"text": "bar - The inactive part of the bar."
|
|
25566
|
-
},
|
|
25567
|
-
{
|
|
25568
|
-
"name": "part",
|
|
25569
|
-
"text": "bar-active - The active part of the bar."
|
|
25570
|
-
},
|
|
25571
|
-
{
|
|
25572
|
-
"name": "part",
|
|
25573
|
-
"text": "knob-handle - The container element that wraps the knob and handles drag interactions."
|
|
25574
|
-
},
|
|
25575
|
-
{
|
|
25576
|
-
"name": "part",
|
|
25577
|
-
"text": "knob-handle-a - The container element for the first knob. Only available when `dualKnobs` is `true`."
|
|
25578
|
-
},
|
|
25579
|
-
{
|
|
25580
|
-
"name": "part",
|
|
25581
|
-
"text": "knob-handle-b - The container element for the second knob. Only available when `dualKnobs` is `true`."
|
|
25582
|
-
},
|
|
25583
|
-
{
|
|
25584
|
-
"name": "part",
|
|
25585
|
-
"text": "knob-handle-lower - The container element for the lower knob. Only available when `dualKnobs` is `true`."
|
|
25586
|
-
},
|
|
25587
|
-
{
|
|
25588
|
-
"name": "part",
|
|
25589
|
-
"text": "knob-handle-upper - The container element for the upper knob. Only available when `dualKnobs` is `true`."
|
|
25590
|
-
},
|
|
25591
25559
|
{
|
|
25592
25560
|
"name": "part",
|
|
25593
25561
|
"text": "pin - The counter that appears above a knob."
|
|
25594
25562
|
},
|
|
25595
25563
|
{
|
|
25596
25564
|
"name": "part",
|
|
25597
|
-
"text": "
|
|
25598
|
-
},
|
|
25599
|
-
{
|
|
25600
|
-
"name": "part",
|
|
25601
|
-
"text": "pin-b - The counter that appears above the second knob. Only available when `dualKnobs` is `true`."
|
|
25602
|
-
},
|
|
25603
|
-
{
|
|
25604
|
-
"name": "part",
|
|
25605
|
-
"text": "pin-lower - The counter that appears above the lower knob. Only available when `dualKnobs` is `true`."
|
|
25606
|
-
},
|
|
25607
|
-
{
|
|
25608
|
-
"name": "part",
|
|
25609
|
-
"text": "pin-upper - The counter that appears above the upper knob. Only available when `dualKnobs` is `true`."
|
|
25565
|
+
"text": "knob - The handle that is used to drag the range."
|
|
25610
25566
|
},
|
|
25611
25567
|
{
|
|
25612
25568
|
"name": "part",
|
|
25613
|
-
"text": "
|
|
25614
|
-
},
|
|
25615
|
-
{
|
|
25616
|
-
"name": "part",
|
|
25617
|
-
"text": "knob-a - The visual knob element for the first knob. Only available when `dualKnobs` is `true`."
|
|
25618
|
-
},
|
|
25619
|
-
{
|
|
25620
|
-
"name": "part",
|
|
25621
|
-
"text": "knob-b - The visual knob element for the second knob. Only available when `dualKnobs` is `true`."
|
|
25622
|
-
},
|
|
25623
|
-
{
|
|
25624
|
-
"name": "part",
|
|
25625
|
-
"text": "knob-lower - The visual knob element for the lower knob. Only available when `dualKnobs` is `true`."
|
|
25626
|
-
},
|
|
25627
|
-
{
|
|
25628
|
-
"name": "part",
|
|
25629
|
-
"text": "knob-upper - The visual knob element for the upper knob. Only available when `dualKnobs` is `true`."
|
|
25630
|
-
},
|
|
25631
|
-
{
|
|
25632
|
-
"name": "part",
|
|
25633
|
-
"text": "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`."
|
|
25569
|
+
"text": "bar - The inactive part of the bar."
|
|
25634
25570
|
},
|
|
25635
25571
|
{
|
|
25636
25572
|
"name": "part",
|
|
25637
|
-
"text": "
|
|
25573
|
+
"text": "bar-active - The active part of the bar."
|
|
25638
25574
|
},
|
|
25639
25575
|
{
|
|
25640
25576
|
"name": "part",
|
|
25641
|
-
"text": "
|
|
25577
|
+
"text": "label - The label text describing the range."
|
|
25642
25578
|
}
|
|
25643
25579
|
],
|
|
25644
25580
|
"usage": {},
|
|
@@ -26458,53 +26394,9 @@
|
|
|
26458
26394
|
"name": "bar-active",
|
|
26459
26395
|
"docs": "The active part of the bar."
|
|
26460
26396
|
},
|
|
26461
|
-
{
|
|
26462
|
-
"name": "focused",
|
|
26463
|
-
"docs": "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`."
|
|
26464
|
-
},
|
|
26465
|
-
{
|
|
26466
|
-
"name": "hover",
|
|
26467
|
-
"docs": "Added to the knob-handle, knob, and pin when the knob has hover. Only one set has this part at a time."
|
|
26468
|
-
},
|
|
26469
26397
|
{
|
|
26470
26398
|
"name": "knob",
|
|
26471
|
-
"docs": "The
|
|
26472
|
-
},
|
|
26473
|
-
{
|
|
26474
|
-
"name": "knob-a",
|
|
26475
|
-
"docs": "The visual knob element for the first knob. Only available when `dualKnobs` is `true`."
|
|
26476
|
-
},
|
|
26477
|
-
{
|
|
26478
|
-
"name": "knob-b",
|
|
26479
|
-
"docs": "The visual knob element for the second knob. Only available when `dualKnobs` is `true`."
|
|
26480
|
-
},
|
|
26481
|
-
{
|
|
26482
|
-
"name": "knob-handle",
|
|
26483
|
-
"docs": "The container element that wraps the knob and handles drag interactions."
|
|
26484
|
-
},
|
|
26485
|
-
{
|
|
26486
|
-
"name": "knob-handle-a",
|
|
26487
|
-
"docs": "The container element for the first knob. Only available when `dualKnobs` is `true`."
|
|
26488
|
-
},
|
|
26489
|
-
{
|
|
26490
|
-
"name": "knob-handle-b",
|
|
26491
|
-
"docs": "The container element for the second knob. Only available when `dualKnobs` is `true`."
|
|
26492
|
-
},
|
|
26493
|
-
{
|
|
26494
|
-
"name": "knob-handle-lower",
|
|
26495
|
-
"docs": "The container element for the lower knob. Only available when `dualKnobs` is `true`."
|
|
26496
|
-
},
|
|
26497
|
-
{
|
|
26498
|
-
"name": "knob-handle-upper",
|
|
26499
|
-
"docs": "The container element for the upper knob. Only available when `dualKnobs` is `true`."
|
|
26500
|
-
},
|
|
26501
|
-
{
|
|
26502
|
-
"name": "knob-lower",
|
|
26503
|
-
"docs": "The visual knob element for the lower knob. Only available when `dualKnobs` is `true`."
|
|
26504
|
-
},
|
|
26505
|
-
{
|
|
26506
|
-
"name": "knob-upper",
|
|
26507
|
-
"docs": "The visual knob element for the upper knob. Only available when `dualKnobs` is `true`."
|
|
26399
|
+
"docs": "The handle that is used to drag the range."
|
|
26508
26400
|
},
|
|
26509
26401
|
{
|
|
26510
26402
|
"name": "label",
|
|
@@ -26514,26 +26406,6 @@
|
|
|
26514
26406
|
"name": "pin",
|
|
26515
26407
|
"docs": "The counter that appears above a knob."
|
|
26516
26408
|
},
|
|
26517
|
-
{
|
|
26518
|
-
"name": "pin-a",
|
|
26519
|
-
"docs": "The counter that appears above the first knob. Only available when `dualKnobs` is `true`."
|
|
26520
|
-
},
|
|
26521
|
-
{
|
|
26522
|
-
"name": "pin-b",
|
|
26523
|
-
"docs": "The counter that appears above the second knob. Only available when `dualKnobs` is `true`."
|
|
26524
|
-
},
|
|
26525
|
-
{
|
|
26526
|
-
"name": "pin-lower",
|
|
26527
|
-
"docs": "The counter that appears above the lower knob. Only available when `dualKnobs` is `true`."
|
|
26528
|
-
},
|
|
26529
|
-
{
|
|
26530
|
-
"name": "pin-upper",
|
|
26531
|
-
"docs": "The counter that appears above the upper knob. Only available when `dualKnobs` is `true`."
|
|
26532
|
-
},
|
|
26533
|
-
{
|
|
26534
|
-
"name": "pressed",
|
|
26535
|
-
"docs": "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`."
|
|
26536
|
-
},
|
|
26537
26409
|
{
|
|
26538
26410
|
"name": "tick",
|
|
26539
26411
|
"docs": "An inactive tick mark."
|
|
@@ -30623,6 +30495,35 @@
|
|
|
30623
30495
|
"required": false,
|
|
30624
30496
|
"getter": false,
|
|
30625
30497
|
"setter": false
|
|
30498
|
+
},
|
|
30499
|
+
{
|
|
30500
|
+
"name": "swipeGesture",
|
|
30501
|
+
"type": "boolean",
|
|
30502
|
+
"complexType": {
|
|
30503
|
+
"original": "boolean",
|
|
30504
|
+
"resolved": "boolean",
|
|
30505
|
+
"references": {}
|
|
30506
|
+
},
|
|
30507
|
+
"mutable": false,
|
|
30508
|
+
"attr": "swipe-gesture",
|
|
30509
|
+
"reflectToAttr": false,
|
|
30510
|
+
"docs": "If `true`, users will be able to swipe the segment view to navigate between segment contents.",
|
|
30511
|
+
"docsTags": [
|
|
30512
|
+
{
|
|
30513
|
+
"name": "default",
|
|
30514
|
+
"text": "true"
|
|
30515
|
+
}
|
|
30516
|
+
],
|
|
30517
|
+
"default": "true",
|
|
30518
|
+
"values": [
|
|
30519
|
+
{
|
|
30520
|
+
"type": "boolean"
|
|
30521
|
+
}
|
|
30522
|
+
],
|
|
30523
|
+
"optional": false,
|
|
30524
|
+
"required": false,
|
|
30525
|
+
"getter": false,
|
|
30526
|
+
"setter": false
|
|
30626
30527
|
}
|
|
30627
30528
|
],
|
|
30628
30529
|
"methods": [],
|
|
@@ -31910,6 +31811,35 @@
|
|
|
31910
31811
|
"docsTags": [],
|
|
31911
31812
|
"usage": {},
|
|
31912
31813
|
"props": [
|
|
31814
|
+
{
|
|
31815
|
+
"name": "cancelText",
|
|
31816
|
+
"type": "string",
|
|
31817
|
+
"complexType": {
|
|
31818
|
+
"original": "string",
|
|
31819
|
+
"resolved": "string",
|
|
31820
|
+
"references": {}
|
|
31821
|
+
},
|
|
31822
|
+
"mutable": false,
|
|
31823
|
+
"attr": "cancel-text",
|
|
31824
|
+
"reflectToAttr": false,
|
|
31825
|
+
"docs": "The text to display on the cancel button.",
|
|
31826
|
+
"docsTags": [
|
|
31827
|
+
{
|
|
31828
|
+
"name": "default",
|
|
31829
|
+
"text": "'Close'"
|
|
31830
|
+
}
|
|
31831
|
+
],
|
|
31832
|
+
"default": "'Close'",
|
|
31833
|
+
"values": [
|
|
31834
|
+
{
|
|
31835
|
+
"type": "string"
|
|
31836
|
+
}
|
|
31837
|
+
],
|
|
31838
|
+
"optional": false,
|
|
31839
|
+
"required": false,
|
|
31840
|
+
"getter": false,
|
|
31841
|
+
"setter": false
|
|
31842
|
+
},
|
|
31913
31843
|
{
|
|
31914
31844
|
"name": "header",
|
|
31915
31845
|
"type": "string | undefined",
|
|
@@ -74,7 +74,6 @@ const Range = class {
|
|
|
74
74
|
this.inheritedAttributes = {};
|
|
75
75
|
this.contentEl = null;
|
|
76
76
|
this.initialContentScrollY = true;
|
|
77
|
-
this.focusFromPointer = false;
|
|
78
77
|
this.ratioA = 0;
|
|
79
78
|
this.ratioB = 0;
|
|
80
79
|
/**
|
|
@@ -206,7 +205,6 @@ const Range = class {
|
|
|
206
205
|
this.onBlur = () => {
|
|
207
206
|
if (this.hasFocus) {
|
|
208
207
|
this.hasFocus = false;
|
|
209
|
-
this.focusedKnob = undefined;
|
|
210
208
|
this.ionBlur.emit();
|
|
211
209
|
}
|
|
212
210
|
};
|
|
@@ -217,20 +215,21 @@ const Range = class {
|
|
|
217
215
|
}
|
|
218
216
|
};
|
|
219
217
|
this.onKnobFocus = (knob) => {
|
|
220
|
-
// Clicking focuses the range which is needed for the keyboard,
|
|
221
|
-
// but we only want to add the ion-focused class when focused via Tab.
|
|
222
|
-
if (!this.focusFromPointer) {
|
|
223
|
-
this.focusedKnob = knob;
|
|
224
|
-
}
|
|
225
|
-
else {
|
|
226
|
-
this.focusFromPointer = false;
|
|
227
|
-
this.focusedKnob = undefined;
|
|
228
|
-
}
|
|
229
|
-
// If the knob was not already focused, emit the focus event
|
|
230
218
|
if (!this.hasFocus) {
|
|
231
219
|
this.hasFocus = true;
|
|
232
220
|
this.ionFocus.emit();
|
|
233
221
|
}
|
|
222
|
+
// Manually manage ion-focused class for dual knobs
|
|
223
|
+
if (this.dualKnobs && this.el.shadowRoot) {
|
|
224
|
+
const knobA = this.el.shadowRoot.querySelector('.range-knob-a');
|
|
225
|
+
const knobB = this.el.shadowRoot.querySelector('.range-knob-b');
|
|
226
|
+
// Remove ion-focused from both knobs first
|
|
227
|
+
knobA === null || knobA === void 0 ? void 0 : knobA.classList.remove('ion-focused');
|
|
228
|
+
knobB === null || knobB === void 0 ? void 0 : knobB.classList.remove('ion-focused');
|
|
229
|
+
// Add ion-focused only to the focused knob
|
|
230
|
+
const focusedKnobEl = knob === 'A' ? knobA : knobB;
|
|
231
|
+
focusedKnobEl === null || focusedKnobEl === void 0 ? void 0 : focusedKnobEl.classList.add('ion-focused');
|
|
232
|
+
}
|
|
234
233
|
};
|
|
235
234
|
this.onKnobBlur = () => {
|
|
236
235
|
// Check if focus is moving to another knob within the same range
|
|
@@ -242,18 +241,18 @@ const Range = class {
|
|
|
242
241
|
if (!isStillFocusedOnKnob) {
|
|
243
242
|
if (this.hasFocus) {
|
|
244
243
|
this.hasFocus = false;
|
|
245
|
-
this.focusedKnob = undefined;
|
|
246
244
|
this.ionBlur.emit();
|
|
247
245
|
}
|
|
246
|
+
// Remove ion-focused from both knobs when focus leaves the range
|
|
247
|
+
if (this.dualKnobs && this.el.shadowRoot) {
|
|
248
|
+
const knobA = this.el.shadowRoot.querySelector('.range-knob-a');
|
|
249
|
+
const knobB = this.el.shadowRoot.querySelector('.range-knob-b');
|
|
250
|
+
knobA === null || knobA === void 0 ? void 0 : knobA.classList.remove('ion-focused');
|
|
251
|
+
knobB === null || knobB === void 0 ? void 0 : knobB.classList.remove('ion-focused');
|
|
252
|
+
}
|
|
248
253
|
}
|
|
249
254
|
}, 0);
|
|
250
255
|
};
|
|
251
|
-
this.onKnobMouseEnter = (knob) => {
|
|
252
|
-
this.hoveredKnob = knob;
|
|
253
|
-
};
|
|
254
|
-
this.onKnobMouseLeave = () => {
|
|
255
|
-
this.hoveredKnob = undefined;
|
|
256
|
-
};
|
|
257
256
|
}
|
|
258
257
|
debounceChanged() {
|
|
259
258
|
const { ionInput, debounce, originalIonInput } = this;
|
|
@@ -507,6 +506,7 @@ const Range = class {
|
|
|
507
506
|
ratio = 1 - ratio;
|
|
508
507
|
}
|
|
509
508
|
this.pressedKnob = !this.dualKnobs || Math.abs(this.ratioA - ratio) < Math.abs(this.ratioB - ratio) ? 'A' : 'B';
|
|
509
|
+
this.setFocus(this.pressedKnob);
|
|
510
510
|
}
|
|
511
511
|
get valA() {
|
|
512
512
|
return ratioToValue(this.ratioA, this.min, this.max, this.step);
|
|
@@ -533,23 +533,9 @@ const Range = class {
|
|
|
533
533
|
updateRatio() {
|
|
534
534
|
const value = this.getValue();
|
|
535
535
|
const { min, max } = this;
|
|
536
|
-
/**
|
|
537
|
-
* For dual knobs, value gives lower/upper but not which is A vs B.
|
|
538
|
-
* Assign (lowerRatio, upperRatio) to (ratioA, ratioB) in the way that
|
|
539
|
-
* minimizes change from the current ratios so the knobs don't swap.
|
|
540
|
-
*/
|
|
541
536
|
if (this.dualKnobs) {
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
if (Math.abs(this.ratioA - lowerRatio) + Math.abs(this.ratioB - upperRatio) <=
|
|
545
|
-
Math.abs(this.ratioA - upperRatio) + Math.abs(this.ratioB - lowerRatio)) {
|
|
546
|
-
this.ratioA = lowerRatio;
|
|
547
|
-
this.ratioB = upperRatio;
|
|
548
|
-
}
|
|
549
|
-
else {
|
|
550
|
-
this.ratioA = upperRatio;
|
|
551
|
-
this.ratioB = lowerRatio;
|
|
552
|
-
}
|
|
537
|
+
this.ratioA = valueToRatio(value.lower, min, max);
|
|
538
|
+
this.ratioB = valueToRatio(value.upper, min, max);
|
|
553
539
|
}
|
|
554
540
|
else {
|
|
555
541
|
this.ratioA = valueToRatio(value, min, max);
|
|
@@ -566,6 +552,14 @@ const Range = class {
|
|
|
566
552
|
};
|
|
567
553
|
this.noUpdate = false;
|
|
568
554
|
}
|
|
555
|
+
setFocus(knob) {
|
|
556
|
+
if (this.el.shadowRoot) {
|
|
557
|
+
const knobEl = this.el.shadowRoot.querySelector(knob === 'A' ? '.range-knob-a' : '.range-knob-b');
|
|
558
|
+
if (knobEl) {
|
|
559
|
+
knobEl.focus();
|
|
560
|
+
}
|
|
561
|
+
}
|
|
562
|
+
}
|
|
569
563
|
/**
|
|
570
564
|
* Returns true if content was passed to the "start" slot
|
|
571
565
|
*/
|
|
@@ -583,7 +577,7 @@ const Range = class {
|
|
|
583
577
|
}
|
|
584
578
|
renderRangeSlider() {
|
|
585
579
|
var _a;
|
|
586
|
-
const { min, max, step, handleKeyboard,
|
|
580
|
+
const { min, max, step, handleKeyboard, pressedKnob, disabled, pin, ratioLower, ratioUpper, pinFormatter, inheritedAttributes, } = this;
|
|
587
581
|
let barStart = `${ratioLower * 100}%`;
|
|
588
582
|
let barEnd = `${100 - ratioUpper * 100}%`;
|
|
589
583
|
const rtl = isRTL(this.el);
|
|
@@ -643,9 +637,7 @@ const Range = class {
|
|
|
643
637
|
ticks.push(tick);
|
|
644
638
|
}
|
|
645
639
|
}
|
|
646
|
-
return (h("div", { class: "range-slider", ref: (rangeEl) => (this.rangeSlider = rangeEl),
|
|
647
|
-
this.focusFromPointer = true;
|
|
648
|
-
},
|
|
640
|
+
return (h("div", { class: "range-slider", ref: (rangeEl) => (this.rangeSlider = rangeEl),
|
|
649
641
|
/**
|
|
650
642
|
* Since the gesture has a threshold, the value
|
|
651
643
|
* won't change until the user has dragged past
|
|
@@ -658,7 +650,6 @@ const Range = class {
|
|
|
658
650
|
* we need to listen for the "pointerUp" event.
|
|
659
651
|
*/
|
|
660
652
|
onPointerUp: (ev) => {
|
|
661
|
-
this.focusFromPointer = false;
|
|
662
653
|
/**
|
|
663
654
|
* If the user drags the knob on the web
|
|
664
655
|
* version (does not occur on mobile),
|
|
@@ -684,10 +675,6 @@ const Range = class {
|
|
|
684
675
|
'has-ticks': ticks.length > 0,
|
|
685
676
|
}, role: "presentation", style: barStyle, part: "bar-active" })), renderKnob(rtl, {
|
|
686
677
|
knob: 'A',
|
|
687
|
-
position: this.dualKnobs ? (this.ratioA <= this.ratioB ? 'lower' : 'upper') : 'lower',
|
|
688
|
-
dualKnobs: this.dualKnobs,
|
|
689
|
-
focused: focusedKnob === 'A',
|
|
690
|
-
hovered: hoveredKnob === 'A',
|
|
691
678
|
pressed: pressedKnob === 'A',
|
|
692
679
|
value: this.valA,
|
|
693
680
|
ratio: this.ratioA,
|
|
@@ -700,15 +687,9 @@ const Range = class {
|
|
|
700
687
|
inheritedAttributes,
|
|
701
688
|
onKnobFocus: this.onKnobFocus,
|
|
702
689
|
onKnobBlur: this.onKnobBlur,
|
|
703
|
-
onKnobMouseEnter: this.onKnobMouseEnter,
|
|
704
|
-
onKnobMouseLeave: this.onKnobMouseLeave,
|
|
705
690
|
}), this.dualKnobs &&
|
|
706
691
|
renderKnob(rtl, {
|
|
707
692
|
knob: 'B',
|
|
708
|
-
position: this.ratioB <= this.ratioA ? 'lower' : 'upper',
|
|
709
|
-
dualKnobs: this.dualKnobs,
|
|
710
|
-
focused: focusedKnob === 'B',
|
|
711
|
-
hovered: hoveredKnob === 'B',
|
|
712
693
|
pressed: pressedKnob === 'B',
|
|
713
694
|
value: this.valB,
|
|
714
695
|
ratio: this.ratioB,
|
|
@@ -721,8 +702,6 @@ const Range = class {
|
|
|
721
702
|
inheritedAttributes,
|
|
722
703
|
onKnobFocus: this.onKnobFocus,
|
|
723
704
|
onKnobBlur: this.onKnobBlur,
|
|
724
|
-
onKnobMouseEnter: this.onKnobMouseEnter,
|
|
725
|
-
onKnobMouseLeave: this.onKnobMouseLeave,
|
|
726
705
|
})));
|
|
727
706
|
}
|
|
728
707
|
render() {
|
|
@@ -748,11 +727,10 @@ const Range = class {
|
|
|
748
727
|
const valueAtMin = dualKnobs ? this.valA === min || this.valB === min : this.valA === min;
|
|
749
728
|
const valueAtMax = dualKnobs ? this.valA === max || this.valB === max : this.valA === max;
|
|
750
729
|
renderHiddenInput(true, el, this.name, JSON.stringify(this.getValue()), disabled);
|
|
751
|
-
return (h(Host, { key: '
|
|
730
|
+
return (h(Host, { key: 'ed646a42d51b8fe22012198c354cbcf5a389c108', onFocusin: this.onFocus, onFocusout: this.onBlur, id: rangeId, class: createColorClasses(this.color, {
|
|
752
731
|
[mode]: true,
|
|
753
732
|
'in-item': inItem,
|
|
754
733
|
'range-disabled': disabled,
|
|
755
|
-
'range-dual-knobs': dualKnobs,
|
|
756
734
|
'range-pressed': pressedKnob !== undefined,
|
|
757
735
|
'range-has-pin': pin,
|
|
758
736
|
[`range-label-placement-${labelPlacement}`]: true,
|
|
@@ -760,10 +738,10 @@ const Range = class {
|
|
|
760
738
|
'range-item-end-adjustment': needsEndAdjustment,
|
|
761
739
|
'range-value-min': valueAtMin,
|
|
762
740
|
'range-value-max': valueAtMax,
|
|
763
|
-
}) }, h("label", { key: '
|
|
741
|
+
}) }, h("label", { key: '3083e4f2a624e3b268396acb4415f7c6ac44d851', class: "range-wrapper", id: "range-label" }, h("div", { key: '47b92f94d2a0381dd7c5cd3dda54ed2942096715', class: {
|
|
764
742
|
'label-text-wrapper': true,
|
|
765
743
|
'label-text-wrapper-hidden': !hasLabel,
|
|
766
|
-
}, part: "label" }, label !== undefined ? h("div", { class: "label-text" }, label) : h("slot", { name: "label" })), h("div", { key: '
|
|
744
|
+
}, part: "label" }, label !== undefined ? h("div", { class: "label-text" }, label) : h("slot", { name: "label" })), h("div", { key: '5341da8d19eb29091df680978a0e20cc8f2eec65', class: "native-wrapper" }, h("slot", { key: '09f1437078032676695442d8c827a16faa7dffe2', name: "start" }), this.renderRangeSlider(), h("slot", { key: '02b7781970ea4d44f10b5f4627a2ca36eca45f85', name: "end" })))));
|
|
767
745
|
}
|
|
768
746
|
get el() { return getElement(this); }
|
|
769
747
|
static get watchers() { return {
|
|
@@ -776,7 +754,7 @@ const Range = class {
|
|
|
776
754
|
"value": ["valueChanged"]
|
|
777
755
|
}; }
|
|
778
756
|
};
|
|
779
|
-
const renderKnob = (rtl, { knob,
|
|
757
|
+
const renderKnob = (rtl, { knob, value, ratio, min, max, disabled, pressed, pin, handleKeyboard, pinFormatter, inheritedAttributes, onKnobFocus, onKnobBlur, }) => {
|
|
780
758
|
const start = rtl ? 'right' : 'left';
|
|
781
759
|
const knobStyle = () => {
|
|
782
760
|
const style = {};
|
|
@@ -797,50 +775,16 @@ const renderKnob = (rtl, { knob, position, dualKnobs, value, ratio, min, max, di
|
|
|
797
775
|
ev.preventDefault();
|
|
798
776
|
ev.stopPropagation();
|
|
799
777
|
}
|
|
800
|
-
}, onFocus: () => onKnobFocus(knob), onBlur: onKnobBlur,
|
|
778
|
+
}, onFocus: () => onKnobFocus(knob), onBlur: onKnobBlur, class: {
|
|
801
779
|
'range-knob-handle': true,
|
|
802
|
-
'range-knob-
|
|
803
|
-
'range-knob-
|
|
780
|
+
'range-knob-a': knob === 'A',
|
|
781
|
+
'range-knob-b': knob === 'B',
|
|
804
782
|
'range-knob-pressed': pressed,
|
|
805
783
|
'range-knob-min': value === min,
|
|
806
784
|
'range-knob-max': value === max,
|
|
807
785
|
'ion-activatable': true,
|
|
808
786
|
'ion-focusable': true,
|
|
809
|
-
|
|
810
|
-
}, part: [
|
|
811
|
-
'knob-handle',
|
|
812
|
-
dualKnobs && knob === 'A' && 'knob-handle-a',
|
|
813
|
-
dualKnobs && knob === 'B' && 'knob-handle-b',
|
|
814
|
-
dualKnobs && position === 'lower' && 'knob-handle-lower',
|
|
815
|
-
dualKnobs && position === 'upper' && 'knob-handle-upper',
|
|
816
|
-
pressed && 'pressed',
|
|
817
|
-
focused && 'focused',
|
|
818
|
-
hovered && 'hover',
|
|
819
|
-
]
|
|
820
|
-
.filter(Boolean)
|
|
821
|
-
.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 && (h("div", { class: "range-pin", role: "presentation", part: [
|
|
822
|
-
'pin',
|
|
823
|
-
dualKnobs && knob === 'A' && 'pin-a',
|
|
824
|
-
dualKnobs && knob === 'B' && 'pin-b',
|
|
825
|
-
dualKnobs && position === 'lower' && 'pin-lower',
|
|
826
|
-
dualKnobs && position === 'upper' && 'pin-upper',
|
|
827
|
-
pressed && 'pressed',
|
|
828
|
-
focused && 'focused',
|
|
829
|
-
hovered && 'hover',
|
|
830
|
-
]
|
|
831
|
-
.filter(Boolean)
|
|
832
|
-
.join(' ') }, pinFormatter(value))), h("div", { class: "range-knob", role: "presentation", part: [
|
|
833
|
-
'knob',
|
|
834
|
-
dualKnobs && knob === 'A' && 'knob-a',
|
|
835
|
-
dualKnobs && knob === 'B' && 'knob-b',
|
|
836
|
-
dualKnobs && position === 'lower' && 'knob-lower',
|
|
837
|
-
dualKnobs && position === 'upper' && 'knob-upper',
|
|
838
|
-
pressed && 'pressed',
|
|
839
|
-
focused && 'focused',
|
|
840
|
-
hovered && 'hover',
|
|
841
|
-
]
|
|
842
|
-
.filter(Boolean)
|
|
843
|
-
.join(' ') })));
|
|
787
|
+
}, 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 && (h("div", { class: "range-pin", role: "presentation", part: "pin" }, pinFormatter(value))), h("div", { class: "range-knob", role: "presentation", part: "knob" })));
|
|
844
788
|
};
|
|
845
789
|
const ratioToValue = (ratio, min, max, step) => {
|
|
846
790
|
let value = (max - min) * ratio;
|
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
import { r as registerInstance, c as createEvent, h, d as Host, g as getElement } from './index-C8IsBmNU.js';
|
|
5
5
|
import { i as isRTL } from './dir-C53feagD.js';
|
|
6
6
|
|
|
7
|
-
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}";
|
|
7
|
+
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}";
|
|
8
8
|
|
|
9
|
-
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}";
|
|
9
|
+
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}";
|
|
10
10
|
|
|
11
11
|
const SegmentView = class {
|
|
12
12
|
constructor(hostRef) {
|
|
@@ -18,6 +18,10 @@ const SegmentView = class {
|
|
|
18
18
|
* If `true`, the segment view cannot be interacted with.
|
|
19
19
|
*/
|
|
20
20
|
this.disabled = false;
|
|
21
|
+
/**
|
|
22
|
+
* If `true`, users will be able to swipe the segment view to navigate between segment contents.
|
|
23
|
+
*/
|
|
24
|
+
this.swipeGesture = true;
|
|
21
25
|
}
|
|
22
26
|
handleScroll(ev) {
|
|
23
27
|
var _a;
|
|
@@ -105,11 +109,12 @@ const SegmentView = class {
|
|
|
105
109
|
return Array.from(this.el.querySelectorAll('ion-segment-content'));
|
|
106
110
|
}
|
|
107
111
|
render() {
|
|
108
|
-
const { disabled, isManualScroll } = this;
|
|
109
|
-
return (h(Host, { key: '
|
|
112
|
+
const { disabled, isManualScroll, swipeGesture } = this;
|
|
113
|
+
return (h(Host, { key: '565cccce7f0cfc4c71508777cc60292d6f24334f', class: {
|
|
110
114
|
'segment-view-disabled': disabled,
|
|
111
115
|
'segment-view-scroll-disabled': isManualScroll === false,
|
|
112
|
-
|
|
116
|
+
'segment-view-swipe-disabled': swipeGesture === false,
|
|
117
|
+
} }, h("slot", { key: '4118c240364467302b8f593e33c37837ea5d06f0' })));
|
|
113
118
|
}
|
|
114
119
|
get el() { return getElement(this); }
|
|
115
120
|
};
|
|
@@ -20,6 +20,10 @@ const selectModalMdCss = ".sc-ion-select-modal-md-h{height:100%}ion-list.sc-ion-
|
|
|
20
20
|
const SelectModal = class {
|
|
21
21
|
constructor(hostRef) {
|
|
22
22
|
registerInstance(this, hostRef);
|
|
23
|
+
/**
|
|
24
|
+
* The text to display on the cancel button.
|
|
25
|
+
*/
|
|
26
|
+
this.cancelText = 'Close';
|
|
23
27
|
this.options = [];
|
|
24
28
|
}
|
|
25
29
|
closeModal() {
|
|
@@ -88,7 +92,7 @@ const SelectModal = class {
|
|
|
88
92
|
} }, option.text))));
|
|
89
93
|
}
|
|
90
94
|
render() {
|
|
91
|
-
return (h(Host, { key: '
|
|
95
|
+
return (h(Host, { key: '59ba79ffdbb69befe8e13745450c1071a1fe8c6c', class: getIonMode(this) }, h("ion-header", { key: 'fa4d08ee43eec4b9add09d9ffabcba9ed13dd4af' }, h("ion-toolbar", { key: 'b5e26cf092297c51c1dba3ce7963e7b03420393b' }, this.header !== undefined && h("ion-title", { key: 'a8a93cdea4d119d3a17d8cef3878b8a1daa86e26' }, this.header), h("ion-buttons", { key: 'bbc656713b41ef09099ed466f93a9cfbdaceecc1', slot: "end" }, h("ion-button", { key: '80b8751fe4c96e06b620a0b9d17b2d9b3da2faa5', onClick: () => this.closeModal() }, this.cancelText)))), h("ion-content", { key: 'a251fc00ae4cc7e6b3abe13caa10d95bb515558e' }, h("ion-list", { key: 'bcaf38d6d91accfabb4a9d26783bc0e4801abe3c' }, this.multiple === true ? this.renderCheckboxOptions() : this.renderRadioOptions()))));
|
|
92
96
|
}
|
|
93
97
|
get el() { return getElement(this); }
|
|
94
98
|
};
|