@ionic/core 8.4.1-dev.11730807985.1b046f37 → 8.4.1-dev.11730889290.1eacfaf8

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.
@@ -0,0 +1,550 @@
1
+ /**
2
+ * Convert a pixels given value into rem
3
+ *
4
+ * @param pixels - Value in pixels to be converted (i.e. px)
5
+ * @param context (optional) - Baseline value
6
+ */
7
+ /*
8
+ Do not edit directly, this file was auto-generated.
9
+ */ /**
10
+ * A heuristic that applies CSS to tablet
11
+ * viewports.
12
+ *
13
+ * Usage:
14
+ * @include tablet-viewport() {
15
+ * :host {
16
+ * background-color: green;
17
+ * }
18
+ * }
19
+ */
20
+ /**
21
+ * A heuristic that applies CSS to mobile
22
+ * viewports (i.e. phones, not tablets).
23
+ *
24
+ * Usage:
25
+ * @include mobile-viewport() {
26
+ * :host {
27
+ * background-color: blue;
28
+ * }
29
+ * }
30
+ */
31
+ /**
32
+ * Convert a font size to a dynamic font size.
33
+ * Fonts that participate in Dynamic Type should use
34
+ * dynamic font sizes.
35
+ * @param size - The initial font size including the unit (i.e. px or pt)
36
+ * @param unit (optional) - The unit to convert to. Use this if you want to
37
+ * convert to a unit other than $baselineUnit.
38
+ */
39
+ /**
40
+ * Convert a font size to a dynamic font size but impose
41
+ * a maximum font size.
42
+ * @param size - The initial font size including the unit (i.e. px or pt)
43
+ * @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).
44
+ * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
45
+ * convert to a unit other than $baselineUnit.
46
+ */
47
+ /**
48
+ * Convert a font size to a dynamic font size but impose
49
+ * a minimum font size.
50
+ * @param size - The initial font size including the unit (i.e. px or pt)
51
+ * @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).
52
+ * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
53
+ * convert to a unit other than $baselineUnit.
54
+ */
55
+ /**
56
+ * Convert a font size to a dynamic font size but impose
57
+ * maximum and minimum font sizes.
58
+ * @param size - The initial font size including the unit (i.e. px or pt)
59
+ * @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).
60
+ * @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).
61
+ * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
62
+ * convert to a unit other than $baselineUnit.
63
+ */
64
+ /**
65
+ * A heuristic that applies CSS to tablet
66
+ * viewports.
67
+ *
68
+ * Usage:
69
+ * @include tablet-viewport() {
70
+ * :host {
71
+ * background-color: green;
72
+ * }
73
+ * }
74
+ */
75
+ /**
76
+ * A heuristic that applies CSS to mobile
77
+ * viewports (i.e. phones, not tablets).
78
+ *
79
+ * Usage:
80
+ * @include mobile-viewport() {
81
+ * :host {
82
+ * background-color: blue;
83
+ * }
84
+ * }
85
+ */
86
+ :host {
87
+ /**
88
+ * @prop --bar-background: Background of the range bar
89
+ * @prop --bar-background-active: Background of the active range bar
90
+ * @prop --bar-height: Height of the range bar
91
+ * @prop --bar-border-radius: Border radius of the range bar
92
+ * @prop --height: Height of the range
93
+ * @prop --knob-background: Background of the range knob
94
+ * @prop --knob-border-radius: Border radius of the range knob
95
+ * @prop --knob-box-shadow: Box shadow of the range knob
96
+ * @prop --knob-size: Size of the range knob
97
+ * @prop --pin-background: Background of the range pin (only available in MD mode)
98
+ * @prop --pin-color: Color of the range pin (only available in MD mode)
99
+ */
100
+ display: flex;
101
+ position: relative;
102
+ flex: 3;
103
+ align-items: center;
104
+ user-select: none;
105
+ }
106
+
107
+ :host(.range-disabled) {
108
+ pointer-events: none;
109
+ }
110
+
111
+ ::slotted(ion-label) {
112
+ flex: initial;
113
+ }
114
+
115
+ .range-slider {
116
+ position: relative;
117
+ flex: 1;
118
+ width: 100%;
119
+ height: var(--height);
120
+ contain: size layout style;
121
+ cursor: grab;
122
+ touch-action: pan-y;
123
+ }
124
+
125
+ :host(.range-pressed) .range-slider {
126
+ cursor: grabbing;
127
+ }
128
+
129
+ .range-pin {
130
+ position: absolute;
131
+ background: current-color(base);
132
+ color: current-color(contrast);
133
+ text-align: center;
134
+ box-sizing: border-box;
135
+ }
136
+
137
+ .range-knob-handle {
138
+ top: calc((var(--height) - var(--knob-handle-size)) / 2);
139
+ -webkit-margin-start: calc(0px - var(--knob-handle-size) / 2);
140
+ margin-inline-start: calc(0px - var(--knob-handle-size) / 2);
141
+ display: flex;
142
+ position: absolute;
143
+ justify-content: center;
144
+ width: var(--knob-handle-size);
145
+ height: var(--knob-handle-size);
146
+ text-align: center;
147
+ }
148
+ .range-knob-handle {
149
+ inset-inline-start: 0;
150
+ }
151
+
152
+ :host-context([dir=rtl]) .range-knob-handle {
153
+ /* stylelint-disable-next-line property-disallowed-list */
154
+ left: unset;
155
+ }
156
+
157
+ [dir=rtl] .range-knob-handle {
158
+ /* stylelint-disable-next-line property-disallowed-list */
159
+ left: unset;
160
+ }
161
+
162
+ @supports selector(:dir(rtl)) {
163
+ .range-knob-handle:dir(rtl) {
164
+ /* stylelint-disable-next-line property-disallowed-list */
165
+ left: unset;
166
+ }
167
+ }
168
+ .range-knob-handle:active, .range-knob-handle:focus {
169
+ outline: none;
170
+ }
171
+
172
+ .range-bar-container {
173
+ border-radius: var(--bar-border-radius);
174
+ top: calc((var(--height) - var(--bar-height)) / 2);
175
+ position: absolute;
176
+ width: 100%;
177
+ height: var(--bar-height);
178
+ }
179
+ .range-bar-container {
180
+ inset-inline-start: 0;
181
+ }
182
+
183
+ :host-context([dir=rtl]) .range-bar-container {
184
+ /* stylelint-disable-next-line property-disallowed-list */
185
+ left: unset;
186
+ }
187
+
188
+ [dir=rtl] .range-bar-container {
189
+ /* stylelint-disable-next-line property-disallowed-list */
190
+ left: unset;
191
+ }
192
+
193
+ @supports selector(:dir(rtl)) {
194
+ .range-bar-container:dir(rtl) {
195
+ /* stylelint-disable-next-line property-disallowed-list */
196
+ left: unset;
197
+ }
198
+ }
199
+
200
+ .range-bar {
201
+ border-radius: var(--bar-border-radius);
202
+ position: absolute;
203
+ width: 100%;
204
+ height: var(--bar-height);
205
+ background: var(--bar-background);
206
+ pointer-events: none;
207
+ }
208
+
209
+ .range-knob {
210
+ border-radius: var(--knob-border-radius);
211
+ top: calc(50% - var(--knob-size) / 2);
212
+ position: absolute;
213
+ width: var(--knob-size);
214
+ height: var(--knob-size);
215
+ background: var(--knob-background);
216
+ box-shadow: var(--knob-box-shadow);
217
+ z-index: 2;
218
+ pointer-events: none;
219
+ }
220
+ .range-knob {
221
+ inset-inline-start: calc(50% - var(--knob-size) / 2);
222
+ }
223
+
224
+ :host-context([dir=rtl]) .range-knob {
225
+ /* stylelint-disable-next-line property-disallowed-list */
226
+ left: unset;
227
+ }
228
+
229
+ [dir=rtl] .range-knob {
230
+ /* stylelint-disable-next-line property-disallowed-list */
231
+ left: unset;
232
+ }
233
+
234
+ @supports selector(:dir(rtl)) {
235
+ .range-knob:dir(rtl) {
236
+ /* stylelint-disable-next-line property-disallowed-list */
237
+ left: unset;
238
+ }
239
+ }
240
+
241
+ :host(.range-pressed) .range-bar-active {
242
+ will-change: left, right;
243
+ }
244
+
245
+ :host(.in-item) {
246
+ width: 100%;
247
+ }
248
+
249
+ /**
250
+ * Range can be slotted
251
+ * in components such as item and
252
+ * toolbar which is why we do not
253
+ * limit the below behavior to just ion-item.
254
+ */
255
+ :host([slot=start]),
256
+ :host([slot=end]) {
257
+ width: auto;
258
+ }
259
+
260
+ :host(.in-item) ::slotted(ion-label) {
261
+ align-self: center;
262
+ }
263
+
264
+ .range-wrapper {
265
+ display: flex;
266
+ position: relative;
267
+ flex-grow: 1;
268
+ align-items: center;
269
+ height: inherit;
270
+ }
271
+
272
+ ::slotted([slot=label]) {
273
+ /**
274
+ * Label text should not extend
275
+ * beyond the bounds of the range.
276
+ * However, we do not set the max
277
+ * width to 100% because then
278
+ * only the label would show and users
279
+ * would not be able to see the range.
280
+ */
281
+ text-overflow: ellipsis;
282
+ white-space: nowrap;
283
+ overflow: hidden;
284
+ }
285
+
286
+ /**
287
+ * If no label text is placed into the slot
288
+ * then the element should be hidden otherwise
289
+ * there will be additional margins added.
290
+ */
291
+ .label-text-wrapper-hidden {
292
+ display: none;
293
+ }
294
+
295
+ .native-wrapper {
296
+ display: flex;
297
+ flex-grow: 1;
298
+ align-items: center;
299
+ }
300
+
301
+ /**
302
+ * Label is on the left of the range in LTR and
303
+ * on the right in RTL.
304
+ */
305
+ :host(.range-label-placement-start) .range-wrapper {
306
+ flex-direction: row;
307
+ }
308
+
309
+ /**
310
+ * Label is on the right of the range in LTR and
311
+ * on the left in RTL.
312
+ */
313
+ :host(.range-label-placement-end) .range-wrapper {
314
+ flex-direction: row-reverse;
315
+ }
316
+
317
+ /**
318
+ * Label is on the left of the range in LTR and
319
+ * on the right in RTL. Label also has a fixed width.
320
+ */
321
+ :host(.range-label-placement-fixed) .label-text-wrapper {
322
+ flex: 0 0 100px;
323
+ width: 100px;
324
+ min-width: 100px;
325
+ max-width: 200px;
326
+ }
327
+
328
+ /**
329
+ * Label is on top of the range.
330
+ */
331
+ :host(.range-label-placement-stacked) .range-wrapper {
332
+ flex-direction: column;
333
+ align-items: stretch;
334
+ }
335
+
336
+ :host(.range-label-placement-stacked) .label-text-wrapper {
337
+ transform-origin: left top;
338
+ }
339
+ :host-context([dir=rtl]):host(.range-label-placement-stacked) .label-text-wrapper, :host-context([dir=rtl]).range-label-placement-stacked .label-text-wrapper {
340
+ transform-origin: right top;
341
+ }
342
+
343
+ @supports selector(:dir(rtl)) {
344
+ :host(.range-label-placement-stacked:dir(rtl)) .label-text-wrapper {
345
+ transform-origin: right top;
346
+ }
347
+ }
348
+
349
+ :host {
350
+ --knob-border-radius: var(--ion-border-radius-full, 999px);
351
+ --knob-background: var(--ion-primitives-base-white, #ffffff);
352
+ --knob-box-shadow: none;
353
+ --knob-size: var(--ion-scale-600, 24px);
354
+ --knob-handle-size: var(--ion-scale-1000, 40px);
355
+ --bar-height: var(--ion-scale-200, 8px);
356
+ --bar-background: var(--ion-primitives-neutral-100, #f5f5f5);
357
+ --bar-background-active: var(--ion-color-primary, #105cef);
358
+ --bar-border-radius: var(--ion-border-radius-400, 16px);
359
+ --height: var(--ion-scale-1000, 40px);
360
+ font-size: var(--ion-font-size-350, 0.875rem);
361
+ font-weight: var(--ion-font-weight-regular, 400);
362
+ letter-spacing: var(--ion-font-letter-spacing-0, 0%);
363
+ line-height: var(--ion-font-line-height-600, 24px);
364
+ text-decoration: none;
365
+ text-transform: none;
366
+ z-index: var(--ion-z-index-100, 100px);
367
+ }
368
+
369
+ :host(.range-item-start-adjustment) {
370
+ -webkit-padding-start: var(--ion-space-600, 24px);
371
+ padding-inline-start: var(--ion-space-600, 24px);
372
+ }
373
+
374
+ :host(.range-item-end-adjustment) {
375
+ -webkit-padding-end: var(--ion-space-600, 24px);
376
+ padding-inline-end: var(--ion-space-600, 24px);
377
+ }
378
+
379
+ :host(.ion-color) .range-bar-active,
380
+ :host(.ion-color) .range-tick-active {
381
+ background: var(--ion-color-base);
382
+ }
383
+
384
+ ::slotted(ion-icon[slot]) {
385
+ font-size: var(--ion-font-size-600, 1.5rem);
386
+ }
387
+
388
+ ::slotted([slot=start]) {
389
+ -webkit-margin-start: 0;
390
+ margin-inline-start: 0;
391
+ -webkit-margin-end: var(--ion-space-400, 16px);
392
+ margin-inline-end: var(--ion-space-400, 16px);
393
+ margin-top: 0;
394
+ margin-bottom: 0;
395
+ }
396
+
397
+ ::slotted([slot=end]) {
398
+ -webkit-margin-start: var(--ion-space-400, 16px);
399
+ margin-inline-start: var(--ion-space-400, 16px);
400
+ -webkit-margin-end: 0;
401
+ margin-inline-end: 0;
402
+ margin-top: 0;
403
+ margin-bottom: 0;
404
+ }
405
+
406
+ ::slotted([slot=label]) {
407
+ max-width: var(--ion-scale-5000, 200px);
408
+ }
409
+
410
+ :host(.range-has-pin:not(.range-label-placement-stacked)) {
411
+ /**
412
+ * The pin should not overlap any elements that are
413
+ * above the range. By adding padding to the top of the
414
+ * range, it provides a buffer for the pin to move into
415
+ * when it is pressed.
416
+ *
417
+ * The padding is not included when the label is stacked
418
+ * because the pin is below the label.
419
+ * It still requires a buffer to prevent the pin from
420
+ * overlapping the range. The buffer is added to the
421
+ * bottom of the range label instead of the host.
422
+ */
423
+ padding-top: calc(var(--ion-space-100, 4px) + var(--ion-scale-600, 24px));
424
+ }
425
+
426
+ :host(.range-has-pin.range-label-placement-stacked) .label-text-wrapper {
427
+ /**
428
+ * The pin should not overlap the stacked label. By adding
429
+ * margin to the bottom of the label, it provides a buffer
430
+ * for the pin to move into when it is pressed.
431
+ */
432
+ margin-bottom: calc(var(--ion-space-200, 8px) + 0.75rem);
433
+ }
434
+
435
+ .range-bar-active {
436
+ bottom: 0;
437
+ width: auto;
438
+ background: var(--bar-background-active);
439
+ }
440
+ .range-bar-active.has-ticks {
441
+ border-radius: 0;
442
+ -webkit-margin-start: calc(-1 * var(--ion-scale-100, 4px) * 0.5);
443
+ margin-inline-start: calc(-1 * var(--ion-scale-100, 4px) * 0.5);
444
+ -webkit-margin-end: calc(-1 * var(--ion-scale-100, 4px) * 0.5);
445
+ margin-inline-end: calc(-1 * var(--ion-scale-100, 4px) * 0.5);
446
+ }
447
+
448
+ .range-tick {
449
+ -webkit-margin-start: calc(var(--ion-scale-100, 4px) * -0.5);
450
+ margin-inline-start: calc(var(--ion-scale-100, 4px) * -0.5);
451
+ border-radius: var(--ion-border-radius-0, 0px);
452
+ position: absolute;
453
+ top: calc(var(--height) * 0.5 - var(--ion-scale-300, 12px) * 0.5);
454
+ width: var(--ion-scale-100, 4px);
455
+ height: var(--ion-scale-300, 12px);
456
+ background: var(--ion-primitives-neutral-100, #f5f5f5);
457
+ pointer-events: none;
458
+ }
459
+
460
+ .range-tick-active {
461
+ background: var(--bar-background-active);
462
+ }
463
+
464
+ .range-pin {
465
+ padding-bottom: var(--ion-space-100, 4px);
466
+ min-width: var(--ion-scale-700, 28px);
467
+ transform: translate3d(0, -100%, 0);
468
+ background: transparent;
469
+ font-size: 0.75rem;
470
+ text-align: center;
471
+ }
472
+
473
+ .range-knob {
474
+ border-width: var(--ion-border-size-025, 1px);
475
+ border-style: var(--ion-border-style-solid, solid);
476
+ border-color: var(--ion-color-primary, #105cef);
477
+ box-sizing: border-box;
478
+ }
479
+
480
+ :host(.range-disabled) {
481
+ opacity: 0.3;
482
+ }
483
+
484
+ :host(.range-label-placement-start) .label-text-wrapper {
485
+ /**
486
+ * The margin between the label and
487
+ * the range should be on the end
488
+ * when the label sits at the start.
489
+ */
490
+ -webkit-margin-start: 0;
491
+ margin-inline-start: 0;
492
+ -webkit-margin-end: var(--ion-space-400, 16px);
493
+ margin-inline-end: var(--ion-space-400, 16px);
494
+ margin-top: 0;
495
+ margin-bottom: 0;
496
+ }
497
+
498
+ :host(.range-label-placement-end) .label-text-wrapper {
499
+ /**
500
+ * The margin between the label and
501
+ * the range should be on the start
502
+ * when the label sits at the end.
503
+ */
504
+ -webkit-margin-start: var(--ion-space-400, 16px);
505
+ margin-inline-start: var(--ion-space-400, 16px);
506
+ -webkit-margin-end: 0;
507
+ margin-inline-end: 0;
508
+ margin-top: 0;
509
+ margin-bottom: 0;
510
+ }
511
+
512
+ :host(.range-label-placement-fixed) .label-text-wrapper {
513
+ /**
514
+ * The margin between the label and
515
+ * the range should be on the end
516
+ * when the label sits at the start.
517
+ */
518
+ -webkit-margin-start: 0;
519
+ margin-inline-start: 0;
520
+ -webkit-margin-end: var(--ion-space-400, 16px);
521
+ margin-inline-end: var(--ion-space-400, 16px);
522
+ margin-top: 0;
523
+ margin-bottom: 0;
524
+ }
525
+
526
+ :host(.range-label-placement-stacked) .label-text-wrapper {
527
+ transform: scale(0.75);
528
+ /**
529
+ * The margin between the label and
530
+ * the range should be on the bottom
531
+ * when the label sits on top.
532
+ */
533
+ margin-left: 0;
534
+ margin-right: 0;
535
+ margin-bottom: var(--ion-space-400, 16px);
536
+ /**
537
+ * Label text should not extend
538
+ * beyond the bounds of the range.
539
+ */
540
+ max-width: 133.3333333333%;
541
+ }
542
+
543
+ :host(.in-item.range-label-placement-stacked) .label-text-wrapper {
544
+ margin-top: var(--ion-space-250, 10px);
545
+ margin-bottom: var(--ion-space-400, 16px);
546
+ }
547
+
548
+ :host(.in-item.range-label-placement-stacked) .native-wrapper {
549
+ margin-bottom: var(--ion-space-0, 0px);
550
+ }