@ionic/core 7.5.7-dev.11701113479.149fdab6 → 7.5.7-dev.11701201960.104b3a1f
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/data.js +1 -1
- package/components/ion-datetime.js +16 -16
- package/components/{ion-picker-internal.d.ts → ion-picker-column.d.ts} +4 -4
- package/components/ion-picker-column.js +9 -0
- package/components/ion-picker-legacy-column.js +1 -1
- package/components/ion-picker-legacy.js +2 -2
- package/components/ion-picker.d.ts +11 -0
- package/components/ion-picker.js +9 -0
- package/components/picker-column.js +333 -322
- package/components/picker-column2.js +379 -0
- package/components/{picker-internal.js → picker.js} +16 -16
- package/dist/cjs/{data-c8d21093.js → data-4845b494.js} +1 -1
- package/dist/cjs/ion-datetime-button.cjs.entry.js +1 -1
- package/dist/cjs/ion-datetime_3.cjs.entry.js +13 -13
- package/dist/cjs/{ion-picker-column-internal.cjs.entry.js → ion-picker-column.cjs.entry.js} +9 -9
- package/dist/cjs/{ion-picker-internal.cjs.entry.js → ion-picker.cjs.entry.js} +13 -13
- package/dist/cjs/ionic.cjs.js +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/collection/collection-manifest.json +3 -3
- package/dist/collection/components/datetime/datetime.ios.css +1 -1
- package/dist/collection/components/datetime/datetime.js +9 -9
- package/dist/collection/components/datetime/datetime.md.css +1 -1
- package/dist/collection/components/datetime/test/disabled/datetime.spec.js +4 -4
- package/dist/collection/components/datetime/test/minmax/datetime.e2e.js +5 -5
- package/dist/collection/components/datetime/test/prefer-wheel/datetime.e2e.js +2 -2
- package/dist/collection/components/datetime/test/presentation/datetime.e2e.js +1 -1
- package/dist/collection/components/datetime/test/values/datetime.e2e.js +5 -5
- package/dist/collection/components/datetime/utils/data.js +1 -1
- package/dist/collection/components/{picker-internal/picker-internal.ios.css → picker/picker.ios.css} +3 -3
- package/dist/collection/components/{picker-internal/picker-internal.js → picker/picker.js} +17 -18
- package/dist/collection/components/{picker-internal/picker-internal.md.css → picker/picker.md.css} +3 -3
- package/dist/collection/components/{picker-internal/test/a11y/picker-internal.e2e.js → picker/test/a11y/picker.e2e.js} +2 -2
- package/dist/collection/components/{picker-internal/test/basic/picker-internal.e2e.js → picker/test/basic/picker.e2e.js} +22 -22
- package/dist/collection/components/{picker-internal/test/keyboard-entry/picker-internal.e2e.js → picker/test/keyboard-entry/picker.e2e.js} +20 -20
- package/dist/collection/components/{picker-column-internal/picker-column-internal.js → picker-column/picker-column.js} +12 -13
- package/dist/collection/components/{picker-column-internal/test/basic/picker-column-internal.e2e.js → picker-column/test/basic/picker-column.e2e.js} +7 -7
- package/dist/collection/components/{picker-column-internal/test/disabled/picker-column-internal.e2e.js → picker-column/test/disabled/picker-column.e2e.js} +39 -39
- package/dist/collection/components/picker-legacy/picker.js +1 -1
- package/dist/collection/components/{picker-column-legacy → picker-legacy-column}/test/standalone/picker-column.e2e.js +1 -1
- package/dist/docs.json +307 -14
- package/dist/esm/{data-44d9e816.js → data-12e24f00.js} +1 -1
- package/dist/esm/ion-datetime-button.entry.js +1 -1
- package/dist/esm/ion-datetime_3.entry.js +13 -13
- package/dist/esm/{ion-picker-column-internal.entry.js → ion-picker-column.entry.js} +9 -9
- package/dist/esm/{ion-picker-internal.entry.js → ion-picker.entry.js} +13 -13
- package/dist/esm/ionic.js +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm-es5/ion-datetime-button.entry.js +1 -1
- package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
- package/dist/esm-es5/ion-picker-column.entry.js +4 -0
- package/dist/esm-es5/ion-picker.entry.js +4 -0
- package/dist/esm-es5/ionic.js +1 -1
- package/dist/esm-es5/loader.js +1 -1
- package/dist/html.html-data.json +95 -0
- package/dist/ionic/ionic.esm.js +1 -1
- package/dist/ionic/p-39074595.entry.js +4 -0
- package/dist/ionic/p-40903d34.system.js +1 -1
- package/dist/ionic/p-439e20ef.entry.js +4 -0
- package/dist/ionic/p-7c66a566.system.entry.js +4 -0
- package/dist/ionic/p-9403b297.system.entry.js +4 -0
- package/dist/ionic/p-ba70d455.entry.js +4 -0
- package/dist/ionic/{p-8ad82eb3.entry.js → p-baa7cb1e.entry.js} +1 -1
- package/dist/ionic/p-c32bf078.system.entry.js +4 -0
- package/dist/ionic/{p-4c80afe1.system.entry.js → p-cb62e3fc.system.entry.js} +1 -1
- package/dist/types/components/datetime/utils/data.d.ts +2 -2
- package/dist/types/components/picker/picker-interfaces.d.ts +8 -0
- package/dist/types/components/{picker-internal/picker-internal.d.ts → picker/picker.d.ts} +4 -5
- package/dist/types/components/{picker-column-internal/picker-column-internal.d.ts → picker-column/picker-column.d.ts} +3 -4
- package/dist/types/components.d.ts +47 -47
- package/hydrate/index.js +1046 -1048
- package/package.json +1 -1
- package/components/ion-picker-column-internal.d.ts +0 -11
- package/components/ion-picker-column-internal.js +0 -9
- package/components/ion-picker-internal.js +0 -9
- package/components/picker-column-internal.js +0 -390
- package/dist/esm-es5/ion-picker-column-internal.entry.js +0 -4
- package/dist/esm-es5/ion-picker-internal.entry.js +0 -4
- package/dist/ionic/p-1a368f2e.system.entry.js +0 -4
- package/dist/ionic/p-29fe18ef.entry.js +0 -4
- package/dist/ionic/p-5bd4e009.entry.js +0 -4
- package/dist/ionic/p-beb64be7.system.entry.js +0 -4
- package/dist/ionic/p-c56b6570.system.entry.js +0 -4
- package/dist/ionic/p-c59d068a.entry.js +0 -4
- package/dist/types/components/picker-internal/picker-internal-interfaces.d.ts +0 -8
- /package/dist/collection/components/{picker-internal/picker-internal-interfaces.js → picker/picker-interfaces.js} +0 -0
- /package/dist/collection/components/{picker-column-internal/picker-column-internal-interfaces.js → picker-column/picker-column-interfaces.js} +0 -0
- /package/dist/collection/components/{picker-column-internal/picker-column-internal.ios.css → picker-column/picker-column.ios.css} +0 -0
- /package/dist/collection/components/{picker-column-internal/picker-column-internal.md.css → picker-column/picker-column.md.css} +0 -0
- /package/dist/collection/components/{picker-column-legacy → picker-legacy-column}/picker-column.ios.css +0 -0
- /package/dist/collection/components/{picker-column-legacy → picker-legacy-column}/picker-column.js +0 -0
- /package/dist/collection/components/{picker-column-legacy → picker-legacy-column}/picker-column.md.css +0 -0
- /package/dist/collection/components/{picker-column-legacy → picker-legacy-column}/test/picker-column-aria.spec.js +0 -0
- /package/dist/collection/components/{picker-column-legacy → picker-legacy-column}/test/picker-column-dynamic.spec.js +0 -0
- /package/dist/collection/components/{picker-column-legacy → picker-legacy-column}/test/picker-column.spec.js +0 -0
- /package/dist/collection/components/{picker-column-legacy → picker-legacy-column}/test/test.utils.js +0 -0
- /package/dist/esm-es5/{data-44d9e816.js → data-12e24f00.js} +0 -0
- /package/dist/ionic/{p-17240d90.js → p-bb849ebb.js} +0 -0
- /package/dist/ionic/{p-b8c3f071.system.js → p-e4219e27.system.js} +0 -0
- /package/dist/types/components/{picker-column-internal/picker-column-internal-interfaces.d.ts → picker-column/picker-column-interfaces.d.ts} +0 -0
- /package/dist/types/components/{picker-column-legacy → picker-legacy-column}/picker-column.d.ts +0 -0
- /package/dist/types/components/{picker-column-legacy → picker-legacy-column}/test/test.utils.d.ts +0 -0
package/hydrate/index.js
CHANGED
|
@@ -14479,7 +14479,7 @@ const getMonthColumnData = (locale, refParts, minParts, maxParts, monthValues, f
|
|
|
14479
14479
|
* @param minParts The minimum bound on the date that can be returned
|
|
14480
14480
|
* @param maxParts The maximum bound on the date that can be returned
|
|
14481
14481
|
* @param dayValues The allowed date values
|
|
14482
|
-
* @returns Date data to be used in ion-picker-column
|
|
14482
|
+
* @returns Date data to be used in ion-picker-column
|
|
14483
14483
|
*/
|
|
14484
14484
|
const getDayColumnData = (locale, refParts, minParts, maxParts, dayValues, formatOptions = {
|
|
14485
14485
|
day: 'numeric',
|
|
@@ -14826,9 +14826,9 @@ const getHighlightStyles = (highlightedDates, dateIsoString, el) => {
|
|
|
14826
14826
|
return undefined;
|
|
14827
14827
|
};
|
|
14828
14828
|
|
|
14829
|
-
const datetimeIosCss = "/*!@:host*/.sc-ion-datetime-ios-h{display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column;background:var(--background);overflow:hidden}/*!@ion-picker-column-internal*/ion-picker-column-internal.sc-ion-datetime-ios{min-width:26px}/*!@:host(.datetime-size-fixed)*/.datetime-size-fixed.sc-ion-datetime-ios-h{width:auto;height:auto}/*!@:host(.datetime-size-fixed:not(.datetime-prefer-wheel))*/.datetime-size-fixed.sc-ion-datetime-ios-h:not(.datetime-prefer-wheel){max-width:350px}/*!@:host(.datetime-size-fixed.datetime-prefer-wheel)*/.datetime-size-fixed.datetime-prefer-wheel.sc-ion-datetime-ios-h{min-width:350px;max-width:-webkit-max-content;max-width:-moz-max-content;max-width:max-content}/*!@:host(.datetime-size-cover)*/.datetime-size-cover.sc-ion-datetime-ios-h{width:100%}/*!@:host .calendar-body,\n:host .datetime-year*/.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios,.sc-ion-datetime-ios-h .datetime-year.sc-ion-datetime-ios{opacity:0}/*!@:host(:not(.datetime-ready)) .datetime-year*/.sc-ion-datetime-ios-h:not(.datetime-ready) .datetime-year.sc-ion-datetime-ios{position:absolute;pointer-events:none}/*!@:host(.datetime-ready) .calendar-body*/.datetime-ready.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios{opacity:1}/*!@:host(.datetime-ready) .datetime-year*/.datetime-ready.sc-ion-datetime-ios-h .datetime-year.sc-ion-datetime-ios{display:none;opacity:1}/*!@:host .wheel-order-year-first .day-column*/.sc-ion-datetime-ios-h .wheel-order-year-first.sc-ion-datetime-ios .day-column.sc-ion-datetime-ios{-ms-flex-order:3;order:3;text-align:end}/*!@:host .wheel-order-year-first .month-column*/.sc-ion-datetime-ios-h .wheel-order-year-first.sc-ion-datetime-ios .month-column.sc-ion-datetime-ios{-ms-flex-order:2;order:2;text-align:end}/*!@:host .wheel-order-year-first .year-column*/.sc-ion-datetime-ios-h .wheel-order-year-first.sc-ion-datetime-ios .year-column.sc-ion-datetime-ios{-ms-flex-order:1;order:1;text-align:start}/*!@:host .datetime-calendar,\n:host .datetime-year*/.sc-ion-datetime-ios-h .datetime-calendar.sc-ion-datetime-ios,.sc-ion-datetime-ios-h .datetime-year.sc-ion-datetime-ios{display:-ms-flexbox;display:flex;-ms-flex:1 1 auto;flex:1 1 auto;-ms-flex-flow:column;flex-flow:column}/*!@:host(.show-month-and-year) .datetime-year*/.show-month-and-year.sc-ion-datetime-ios-h .datetime-year.sc-ion-datetime-ios{display:-ms-flexbox;display:flex}@supports (background: -webkit-named-image(apple-pay-logo-black)) and (not (aspect-ratio: 1/1)){/*!@:host(.show-month-and-year) .calendar-next-prev,\n :host(.show-month-and-year) .calendar-days-of-week,\n :host(.show-month-and-year) .calendar-body,\n :host(.show-month-and-year) .datetime-time*/.show-month-and-year.sc-ion-datetime-ios-h .calendar-next-prev.sc-ion-datetime-ios,.show-month-and-year.sc-ion-datetime-ios-h .calendar-days-of-week.sc-ion-datetime-ios,.show-month-and-year.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios,.show-month-and-year.sc-ion-datetime-ios-h .datetime-time.sc-ion-datetime-ios{position:absolute;visibility:hidden;pointer-events:none}/*!@@supports (inset-inline-start: 0)*/@supports .sc-ion-datetime-ios (inset-inline-start.sc-ion-datetime-ios: 0).sc-ion-datetime-ios{.sc-ion-datetime-ios-h.show-month-and-year .calendar-next-prev,.sc-ion-datetime-ios-h.show-month-and-year .calendar-days-of-week,.sc-ion-datetime-ios-h.show-month-and-year .calendar-body,.sc-ion-datetime-ios-h.show-month-and-year .datetime-time{inset-inline-start:-99999px}}/*!@@supports not (inset-inline-start: 0)*/@supports .sc-ion-datetime-ios not.sc-ion-datetime-ios (inset-inline-start.sc-ion-datetime-ios: 0).sc-ion-datetime-ios{.sc-ion-datetime-ios-h.show-month-and-year .calendar-next-prev,.sc-ion-datetime-ios-h.show-month-and-year .calendar-days-of-week,.sc-ion-datetime-ios-h.show-month-and-year .calendar-body,.sc-ion-datetime-ios-h.show-month-and-year .datetime-time{left:-99999px}.sc-ion-datetime-ios-h[dir=rtl].sc-ion-datetime-ios-h.show-month-and-year .calendar-next-prev,[dir=rtl] .sc-ion-datetime-ios-h.sc-ion-datetime-ios-h.show-month-and-year .calendar-next-prev,.sc-ion-datetime-ios-h[dir=rtl].show-month-and-year .calendar-next-prev,[dir=rtl] .sc-ion-datetime-ios-h.show-month-and-year .calendar-next-prev,.sc-ion-datetime-ios-h[dir=rtl].sc-ion-datetime-ios-h.show-month-and-year .calendar-days-of-week,[dir=rtl] .sc-ion-datetime-ios-h.sc-ion-datetime-ios-h.show-month-and-year .calendar-days-of-week,.sc-ion-datetime-ios-h[dir=rtl].show-month-and-year .calendar-days-of-week,[dir=rtl] .sc-ion-datetime-ios-h.show-month-and-year .calendar-days-of-week,.sc-ion-datetime-ios-h[dir=rtl].sc-ion-datetime-ios-h.show-month-and-year .calendar-body,[dir=rtl] .sc-ion-datetime-ios-h.sc-ion-datetime-ios-h.show-month-and-year .calendar-body,.sc-ion-datetime-ios-h[dir=rtl].show-month-and-year .calendar-body,[dir=rtl] .sc-ion-datetime-ios-h.show-month-and-year .calendar-body,.sc-ion-datetime-ios-h[dir=rtl].sc-ion-datetime-ios-h.show-month-and-year .datetime-time,[dir=rtl] .sc-ion-datetime-ios-h.sc-ion-datetime-ios-h.show-month-and-year .datetime-time,.sc-ion-datetime-ios-h[dir=rtl].show-month-and-year .datetime-time,[dir=rtl] .sc-ion-datetime-ios-h.show-month-and-year .datetime-time{left:unset;right:unset;right:-99999px}@supports selector(:dir(rtl)){.sc-ion-datetime-ios-h.show-month-and-year:dir(rtl) .calendar-next-prev,.sc-ion-datetime-ios-h.show-month-and-year:dir(rtl) .calendar-days-of-week,.sc-ion-datetime-ios-h.show-month-and-year:dir(rtl) .calendar-body,.sc-ion-datetime-ios-h.show-month-and-year:dir(rtl) .datetime-time{left:unset;right:unset;right:-99999px}}}}@supports (not (background: -webkit-named-image(apple-pay-logo-black))) or ((background: -webkit-named-image(apple-pay-logo-black)) and (aspect-ratio: 1/1)){/*!@:host(.show-month-and-year) .calendar-next-prev,\n :host(.show-month-and-year) .calendar-days-of-week,\n :host(.show-month-and-year) .calendar-body,\n :host(.show-month-and-year) .datetime-time*/.show-month-and-year.sc-ion-datetime-ios-h .calendar-next-prev.sc-ion-datetime-ios,.show-month-and-year.sc-ion-datetime-ios-h .calendar-days-of-week.sc-ion-datetime-ios,.show-month-and-year.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios,.show-month-and-year.sc-ion-datetime-ios-h .datetime-time.sc-ion-datetime-ios{display:none}}/*!@:host(.month-year-picker-open) .datetime-footer*/.month-year-picker-open.sc-ion-datetime-ios-h .datetime-footer.sc-ion-datetime-ios{display:none}/*!@:host(.datetime-disabled)*/.datetime-disabled.sc-ion-datetime-ios-h{pointer-events:none}/*!@:host(.datetime-disabled) .calendar-days-of-week,\n:host(.datetime-disabled) .datetime-time*/.datetime-disabled.sc-ion-datetime-ios-h .calendar-days-of-week.sc-ion-datetime-ios,.datetime-disabled.sc-ion-datetime-ios-h .datetime-time.sc-ion-datetime-ios{opacity:0.4}/*!@:host(.datetime-readonly)*/.datetime-readonly.sc-ion-datetime-ios-h{pointer-events:none}/*!@:host(.datetime-readonly) .calendar-action-buttons,\n:host(.datetime-readonly) .calendar-body,\n:host(.datetime-readonly) .datetime-year*/.datetime-readonly.sc-ion-datetime-ios-h .calendar-action-buttons.sc-ion-datetime-ios,.datetime-readonly.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios,.datetime-readonly.sc-ion-datetime-ios-h .datetime-year.sc-ion-datetime-ios{pointer-events:initial}/*!@:host(.datetime-readonly) .calendar-day[disabled]:not(.calendar-day-constrained),\n:host(.datetime-readonly) .datetime-action-buttons ion-button[disabled]*/.datetime-readonly.sc-ion-datetime-ios-h .calendar-day[disabled].sc-ion-datetime-ios:not(.calendar-day-constrained),.datetime-readonly.sc-ion-datetime-ios-h .datetime-action-buttons.sc-ion-datetime-ios ion-button[disabled].sc-ion-datetime-ios{opacity:1}/*!@:host .datetime-header .datetime-title*/.sc-ion-datetime-ios-h .datetime-header.sc-ion-datetime-ios .datetime-title.sc-ion-datetime-ios{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}/*!@:host .datetime-action-buttons.has-clear-button*/.sc-ion-datetime-ios-h .datetime-action-buttons.has-clear-button.sc-ion-datetime-ios{width:100%}/*!@:host .datetime-action-buttons ion-buttons*/.sc-ion-datetime-ios-h .datetime-action-buttons.sc-ion-datetime-ios ion-buttons.sc-ion-datetime-ios{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}/*!@.datetime-action-buttons .datetime-action-buttons-container*/.datetime-action-buttons.sc-ion-datetime-ios .datetime-action-buttons-container.sc-ion-datetime-ios{display:-ms-flexbox;display:flex}/*!@:host .calendar-action-buttons*/.sc-ion-datetime-ios-h .calendar-action-buttons.sc-ion-datetime-ios{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}/*!@:host .calendar-action-buttons ion-button*/.sc-ion-datetime-ios-h .calendar-action-buttons.sc-ion-datetime-ios ion-button.sc-ion-datetime-ios{--background:transparent}/*!@:host .calendar-days-of-week*/.sc-ion-datetime-ios-h .calendar-days-of-week.sc-ion-datetime-ios{display:grid;grid-template-columns:repeat(7, 1fr);text-align:center}/*!@.calendar-days-of-week .day-of-week*/.calendar-days-of-week.sc-ion-datetime-ios .day-of-week.sc-ion-datetime-ios{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0}/*!@:host .calendar-body*/.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios{display:-ms-flexbox;display:flex;-ms-flex-positive:1;flex-grow:1;-webkit-scroll-snap-type:x mandatory;-ms-scroll-snap-type:x mandatory;scroll-snap-type:x mandatory;overflow-x:scroll;overflow-y:hidden;scrollbar-width:none;outline:none}/*!@:host .calendar-body .calendar-month*/.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios .calendar-month.sc-ion-datetime-ios{display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column;scroll-snap-align:start;scroll-snap-stop:always;-ms-flex-negative:0;flex-shrink:0;width:100%}/*!@:host .calendar-body .calendar-month-disabled*/.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios .calendar-month-disabled.sc-ion-datetime-ios{scroll-snap-align:none}/*!@:host .calendar-body::-webkit-scrollbar*/.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios::-webkit-scrollbar{display:none}/*!@:host .calendar-body .calendar-month-grid*/.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios .calendar-month-grid.sc-ion-datetime-ios{display:grid;grid-template-columns:repeat(7, 1fr)}/*!@:host .calendar-day-wrapper*/.sc-ion-datetime-ios-h .calendar-day-wrapper.sc-ion-datetime-ios{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;min-width:0;min-height:0;overflow:visible}/*!@.calendar-day*/.calendar-day.sc-ion-datetime-ios{border-radius:50%;-webkit-padding-start:0px;padding-inline-start:0px;-webkit-padding-end:0px;padding-inline-end:0px;padding-top:0px;padding-bottom:0px;-webkit-margin-start:0px;margin-inline-start:0px;-webkit-margin-end:0px;margin-inline-end:0px;margin-top:0px;margin-bottom:0px;display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;border:none;outline:none;background:none;color:currentColor;font-family:var(--ion-font-family, inherit);cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;z-index:0}/*!@:host .calendar-day[disabled]*/.sc-ion-datetime-ios-h .calendar-day[disabled].sc-ion-datetime-ios{pointer-events:none;opacity:0.4}/*!@.calendar-day:focus*/.calendar-day.sc-ion-datetime-ios:focus{background:rgba(var(--ion-color-base-rgb), 0.2);-webkit-box-shadow:0px 0px 0px 4px rgba(var(--ion-color-base-rgb), 0.2);box-shadow:0px 0px 0px 4px rgba(var(--ion-color-base-rgb), 0.2)}/*!@:host .datetime-time*/.sc-ion-datetime-ios-h .datetime-time.sc-ion-datetime-ios{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}/*!@:host(.datetime-presentation-time) .datetime-time*/.datetime-presentation-time.sc-ion-datetime-ios-h .datetime-time.sc-ion-datetime-ios{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0}/*!@:host ion-popover*/.sc-ion-datetime-ios-h ion-popover.sc-ion-datetime-ios{--height:200px}/*!@:host .time-header*/.sc-ion-datetime-ios-h .time-header.sc-ion-datetime-ios{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}/*!@:host .time-body*/.sc-ion-datetime-ios-h .time-body.sc-ion-datetime-ios{border-radius:8px;-webkit-padding-start:12px;padding-inline-start:12px;-webkit-padding-end:12px;padding-inline-end:12px;padding-top:6px;padding-bottom:6px;display:-ms-flexbox;display:flex;border:none;background:var(--ion-color-step-300, #edeef0);color:var(--ion-text-color, #000);font-family:inherit;font-size:inherit;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none}/*!@:host .time-body-active*/.sc-ion-datetime-ios-h .time-body-active.sc-ion-datetime-ios{color:var(--ion-color-base)}/*!@:host(.in-item)*/.in-item.sc-ion-datetime-ios-h{position:static}/*!@:host(.show-month-and-year) .calendar-action-buttons .calendar-month-year-toggle*/.show-month-and-year.sc-ion-datetime-ios-h .calendar-action-buttons.sc-ion-datetime-ios .calendar-month-year-toggle.sc-ion-datetime-ios{color:var(--ion-color-base)}/*!@.calendar-month-year*/.calendar-month-year.sc-ion-datetime-ios{min-width:0}/*!@.calendar-month-year-toggle*/.calendar-month-year-toggle.sc-ion-datetime-ios{font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-decoration:inherit;text-indent:inherit;text-overflow:inherit;text-transform:inherit;text-align:inherit;white-space:inherit;color:inherit;position:relative;border:0;outline:none;background:transparent;cursor:pointer;z-index:1}/*!@.calendar-month-year-toggle::after*/.calendar-month-year-toggle.sc-ion-datetime-ios::after{left:0;right:0;top:0;bottom:0;position:absolute;content:\"\";opacity:0;-webkit-transition:opacity 15ms linear, background-color 15ms linear;transition:opacity 15ms linear, background-color 15ms linear;z-index:-1}/*!@.calendar-month-year-toggle.ion-focused::after*/.calendar-month-year-toggle.ion-focused.sc-ion-datetime-ios::after{background:currentColor}/*!@.calendar-month-year-toggle:disabled*/.calendar-month-year-toggle.sc-ion-datetime-ios:disabled{opacity:0.3;pointer-events:none}/*!@.calendar-month-year-toggle ion-icon*/.calendar-month-year-toggle.sc-ion-datetime-ios ion-icon.sc-ion-datetime-ios{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:0;padding-inline-end:0;padding-top:0;padding-bottom:0;-ms-flex-negative:0;flex-shrink:0}/*!@.calendar-month-year-toggle #toggle-wrapper*/.calendar-month-year-toggle.sc-ion-datetime-ios #toggle-wrapper.sc-ion-datetime-ios{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center}/*!@:host*/.sc-ion-datetime-ios-h{--background:var(--ion-color-light, #ffffff);--background-rgb:var(--ion-color-light-rgb);--title-color:var(--ion-color-step-600, #666666)}/*!@:host(.datetime-presentation-date-time:not(.datetime-prefer-wheel)),\n:host(.datetime-presentation-time-date:not(.datetime-prefer-wheel)),\n:host(.datetime-presentation-date:not(.datetime-prefer-wheel))*/.datetime-presentation-date-time.sc-ion-datetime-ios-h:not(.datetime-prefer-wheel),.datetime-presentation-time-date.sc-ion-datetime-ios-h:not(.datetime-prefer-wheel),.datetime-presentation-date.sc-ion-datetime-ios-h:not(.datetime-prefer-wheel){min-height:350px}/*!@:host .datetime-header*/.sc-ion-datetime-ios-h .datetime-header.sc-ion-datetime-ios{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:16px;padding-bottom:16px;border-bottom:0.55px solid var(--ion-color-step-200, #cccccc);font-size:min(0.875rem, 22.4px)}/*!@:host .datetime-header .datetime-title*/.sc-ion-datetime-ios-h .datetime-header.sc-ion-datetime-ios .datetime-title.sc-ion-datetime-ios{color:var(--title-color)}/*!@:host .datetime-header .datetime-selected-date*/.sc-ion-datetime-ios-h .datetime-header.sc-ion-datetime-ios .datetime-selected-date.sc-ion-datetime-ios{margin-top:10px}/*!@.calendar-month-year-toggle*/.calendar-month-year-toggle.sc-ion-datetime-ios{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0px;padding-bottom:0px;min-height:44px;font-size:min(1rem, 25.6px);font-weight:600}/*!@.calendar-month-year-toggle.ion-focused::after*/.calendar-month-year-toggle.ion-focused.sc-ion-datetime-ios::after{opacity:0.15}/*!@.calendar-month-year-toggle #toggle-wrapper*/.calendar-month-year-toggle.sc-ion-datetime-ios #toggle-wrapper.sc-ion-datetime-ios{-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:8px;margin-inline-end:8px;margin-top:10px;margin-bottom:10px}/*!@:host .calendar-action-buttons .calendar-month-year-toggle ion-icon,\n:host .calendar-action-buttons ion-buttons ion-button*/.sc-ion-datetime-ios-h .calendar-action-buttons.sc-ion-datetime-ios .calendar-month-year-toggle.sc-ion-datetime-ios ion-icon.sc-ion-datetime-ios,.sc-ion-datetime-ios-h .calendar-action-buttons.sc-ion-datetime-ios ion-buttons.sc-ion-datetime-ios ion-button.sc-ion-datetime-ios{color:var(--ion-color-base)}/*!@:host .calendar-action-buttons ion-buttons*/.sc-ion-datetime-ios-h .calendar-action-buttons.sc-ion-datetime-ios ion-buttons.sc-ion-datetime-ios{padding-left:0;padding-right:0;padding-top:8px;padding-bottom:0}/*!@:host .calendar-action-buttons ion-buttons ion-button*/.sc-ion-datetime-ios-h .calendar-action-buttons.sc-ion-datetime-ios ion-buttons.sc-ion-datetime-ios ion-button.sc-ion-datetime-ios{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}/*!@:host .calendar-days-of-week*/.sc-ion-datetime-ios-h .calendar-days-of-week.sc-ion-datetime-ios{-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;padding-top:0;padding-bottom:0;color:var(--ion-color-step-300, #b3b3b3);font-size:min(0.75rem, 19.2px);font-weight:600;line-height:24px;text-transform:uppercase}@supports (border-radius: mod(1px, 1px)){/*!@.calendar-days-of-week .day-of-week*/.calendar-days-of-week.sc-ion-datetime-ios .day-of-week.sc-ion-datetime-ios{width:clamp(20px, calc(mod(min(1rem, 24px), 24px) * 10), 100%);height:24px;overflow:hidden}/*!@.calendar-day*/.calendar-day.sc-ion-datetime-ios{border-radius:max(8px, mod(min(1rem, 24px), 24px) * 10)}}@supports ((border-radius: mod(1px, 1px)) and (background: -webkit-named-image(apple-pay-logo-black)) and (not (contain-intrinsic-size: none))) or (not (border-radius: mod(1px, 1px))){/*!@.calendar-days-of-week .day-of-week*/.calendar-days-of-week.sc-ion-datetime-ios .day-of-week.sc-ion-datetime-ios{width:auto;height:auto;overflow:initial}/*!@.calendar-day*/.calendar-day.sc-ion-datetime-ios{border-radius:32px}}/*!@:host .calendar-body .calendar-month .calendar-month-grid*/.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios .calendar-month.sc-ion-datetime-ios .calendar-month-grid.sc-ion-datetime-ios{-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;padding-top:8px;padding-bottom:8px;-ms-flex-align:center;align-items:center;height:calc(100% - 16px)}/*!@:host .calendar-day-wrapper*/.sc-ion-datetime-ios-h .calendar-day-wrapper.sc-ion-datetime-ios{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:4px;padding-inline-end:4px;padding-top:4px;padding-bottom:4px;height:0;min-height:1rem}/*!@:host .calendar-day*/.sc-ion-datetime-ios-h .calendar-day.sc-ion-datetime-ios{width:40px;min-width:40px;height:40px;font-size:min(1.25rem, 32px)}/*!@.calendar-day.calendar-day-active*/.calendar-day.calendar-day-active.sc-ion-datetime-ios{background:rgba(var(--ion-color-base-rgb), 0.2)}/*!@:host .calendar-day.calendar-day-today*/.sc-ion-datetime-ios-h .calendar-day.calendar-day-today.sc-ion-datetime-ios{color:var(--ion-color-base)}/*!@:host .calendar-day.calendar-day-active*/.sc-ion-datetime-ios-h .calendar-day.calendar-day-active.sc-ion-datetime-ios{color:var(--ion-color-base);font-weight:600}/*!@:host .calendar-day.calendar-day-today.calendar-day-active*/.sc-ion-datetime-ios-h .calendar-day.calendar-day-today.calendar-day-active.sc-ion-datetime-ios{color:var(--ion-color-contrast)}/*!@:host .datetime-time*/.sc-ion-datetime-ios-h .datetime-time.sc-ion-datetime-ios{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:8px;padding-bottom:16px;font-size:min(1rem, 25.6px)}/*!@:host .datetime-time .time-header*/.sc-ion-datetime-ios-h .datetime-time.sc-ion-datetime-ios .time-header.sc-ion-datetime-ios{font-weight:600}/*!@:host .datetime-buttons*/.sc-ion-datetime-ios-h .datetime-buttons.sc-ion-datetime-ios{-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;padding-top:8px;padding-bottom:8px;border-top:0.55px solid var(--ion-color-step-200, #cccccc)}/*!@:host .datetime-buttons ::slotted(ion-buttons),\n:host .datetime-buttons ion-buttons*/.sc-ion-datetime-ios-h .datetime-buttons .sc-ion-datetime-ios-s>ion-buttons,.sc-ion-datetime-ios-h .datetime-buttons.sc-ion-datetime-ios ion-buttons.sc-ion-datetime-ios{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between}/*!@:host .datetime-action-buttons*/.sc-ion-datetime-ios-h .datetime-action-buttons.sc-ion-datetime-ios{width:100%}";
|
|
14829
|
+
const datetimeIosCss = "/*!@:host*/.sc-ion-datetime-ios-h{display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column;background:var(--background);overflow:hidden}/*!@ion-picker-column*/ion-picker-column.sc-ion-datetime-ios{min-width:26px}/*!@:host(.datetime-size-fixed)*/.datetime-size-fixed.sc-ion-datetime-ios-h{width:auto;height:auto}/*!@:host(.datetime-size-fixed:not(.datetime-prefer-wheel))*/.datetime-size-fixed.sc-ion-datetime-ios-h:not(.datetime-prefer-wheel){max-width:350px}/*!@:host(.datetime-size-fixed.datetime-prefer-wheel)*/.datetime-size-fixed.datetime-prefer-wheel.sc-ion-datetime-ios-h{min-width:350px;max-width:-webkit-max-content;max-width:-moz-max-content;max-width:max-content}/*!@:host(.datetime-size-cover)*/.datetime-size-cover.sc-ion-datetime-ios-h{width:100%}/*!@:host .calendar-body,\n:host .datetime-year*/.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios,.sc-ion-datetime-ios-h .datetime-year.sc-ion-datetime-ios{opacity:0}/*!@:host(:not(.datetime-ready)) .datetime-year*/.sc-ion-datetime-ios-h:not(.datetime-ready) .datetime-year.sc-ion-datetime-ios{position:absolute;pointer-events:none}/*!@:host(.datetime-ready) .calendar-body*/.datetime-ready.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios{opacity:1}/*!@:host(.datetime-ready) .datetime-year*/.datetime-ready.sc-ion-datetime-ios-h .datetime-year.sc-ion-datetime-ios{display:none;opacity:1}/*!@:host .wheel-order-year-first .day-column*/.sc-ion-datetime-ios-h .wheel-order-year-first.sc-ion-datetime-ios .day-column.sc-ion-datetime-ios{-ms-flex-order:3;order:3;text-align:end}/*!@:host .wheel-order-year-first .month-column*/.sc-ion-datetime-ios-h .wheel-order-year-first.sc-ion-datetime-ios .month-column.sc-ion-datetime-ios{-ms-flex-order:2;order:2;text-align:end}/*!@:host .wheel-order-year-first .year-column*/.sc-ion-datetime-ios-h .wheel-order-year-first.sc-ion-datetime-ios .year-column.sc-ion-datetime-ios{-ms-flex-order:1;order:1;text-align:start}/*!@:host .datetime-calendar,\n:host .datetime-year*/.sc-ion-datetime-ios-h .datetime-calendar.sc-ion-datetime-ios,.sc-ion-datetime-ios-h .datetime-year.sc-ion-datetime-ios{display:-ms-flexbox;display:flex;-ms-flex:1 1 auto;flex:1 1 auto;-ms-flex-flow:column;flex-flow:column}/*!@:host(.show-month-and-year) .datetime-year*/.show-month-and-year.sc-ion-datetime-ios-h .datetime-year.sc-ion-datetime-ios{display:-ms-flexbox;display:flex}@supports (background: -webkit-named-image(apple-pay-logo-black)) and (not (aspect-ratio: 1/1)){/*!@:host(.show-month-and-year) .calendar-next-prev,\n :host(.show-month-and-year) .calendar-days-of-week,\n :host(.show-month-and-year) .calendar-body,\n :host(.show-month-and-year) .datetime-time*/.show-month-and-year.sc-ion-datetime-ios-h .calendar-next-prev.sc-ion-datetime-ios,.show-month-and-year.sc-ion-datetime-ios-h .calendar-days-of-week.sc-ion-datetime-ios,.show-month-and-year.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios,.show-month-and-year.sc-ion-datetime-ios-h .datetime-time.sc-ion-datetime-ios{position:absolute;visibility:hidden;pointer-events:none}/*!@@supports (inset-inline-start: 0)*/@supports .sc-ion-datetime-ios (inset-inline-start.sc-ion-datetime-ios: 0).sc-ion-datetime-ios{.sc-ion-datetime-ios-h.show-month-and-year .calendar-next-prev,.sc-ion-datetime-ios-h.show-month-and-year .calendar-days-of-week,.sc-ion-datetime-ios-h.show-month-and-year .calendar-body,.sc-ion-datetime-ios-h.show-month-and-year .datetime-time{inset-inline-start:-99999px}}/*!@@supports not (inset-inline-start: 0)*/@supports .sc-ion-datetime-ios not.sc-ion-datetime-ios (inset-inline-start.sc-ion-datetime-ios: 0).sc-ion-datetime-ios{.sc-ion-datetime-ios-h.show-month-and-year .calendar-next-prev,.sc-ion-datetime-ios-h.show-month-and-year .calendar-days-of-week,.sc-ion-datetime-ios-h.show-month-and-year .calendar-body,.sc-ion-datetime-ios-h.show-month-and-year .datetime-time{left:-99999px}.sc-ion-datetime-ios-h[dir=rtl].sc-ion-datetime-ios-h.show-month-and-year .calendar-next-prev,[dir=rtl] .sc-ion-datetime-ios-h.sc-ion-datetime-ios-h.show-month-and-year .calendar-next-prev,.sc-ion-datetime-ios-h[dir=rtl].show-month-and-year .calendar-next-prev,[dir=rtl] .sc-ion-datetime-ios-h.show-month-and-year .calendar-next-prev,.sc-ion-datetime-ios-h[dir=rtl].sc-ion-datetime-ios-h.show-month-and-year .calendar-days-of-week,[dir=rtl] .sc-ion-datetime-ios-h.sc-ion-datetime-ios-h.show-month-and-year .calendar-days-of-week,.sc-ion-datetime-ios-h[dir=rtl].show-month-and-year .calendar-days-of-week,[dir=rtl] .sc-ion-datetime-ios-h.show-month-and-year .calendar-days-of-week,.sc-ion-datetime-ios-h[dir=rtl].sc-ion-datetime-ios-h.show-month-and-year .calendar-body,[dir=rtl] .sc-ion-datetime-ios-h.sc-ion-datetime-ios-h.show-month-and-year .calendar-body,.sc-ion-datetime-ios-h[dir=rtl].show-month-and-year .calendar-body,[dir=rtl] .sc-ion-datetime-ios-h.show-month-and-year .calendar-body,.sc-ion-datetime-ios-h[dir=rtl].sc-ion-datetime-ios-h.show-month-and-year .datetime-time,[dir=rtl] .sc-ion-datetime-ios-h.sc-ion-datetime-ios-h.show-month-and-year .datetime-time,.sc-ion-datetime-ios-h[dir=rtl].show-month-and-year .datetime-time,[dir=rtl] .sc-ion-datetime-ios-h.show-month-and-year .datetime-time{left:unset;right:unset;right:-99999px}@supports selector(:dir(rtl)){.sc-ion-datetime-ios-h.show-month-and-year:dir(rtl) .calendar-next-prev,.sc-ion-datetime-ios-h.show-month-and-year:dir(rtl) .calendar-days-of-week,.sc-ion-datetime-ios-h.show-month-and-year:dir(rtl) .calendar-body,.sc-ion-datetime-ios-h.show-month-and-year:dir(rtl) .datetime-time{left:unset;right:unset;right:-99999px}}}}@supports (not (background: -webkit-named-image(apple-pay-logo-black))) or ((background: -webkit-named-image(apple-pay-logo-black)) and (aspect-ratio: 1/1)){/*!@:host(.show-month-and-year) .calendar-next-prev,\n :host(.show-month-and-year) .calendar-days-of-week,\n :host(.show-month-and-year) .calendar-body,\n :host(.show-month-and-year) .datetime-time*/.show-month-and-year.sc-ion-datetime-ios-h .calendar-next-prev.sc-ion-datetime-ios,.show-month-and-year.sc-ion-datetime-ios-h .calendar-days-of-week.sc-ion-datetime-ios,.show-month-and-year.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios,.show-month-and-year.sc-ion-datetime-ios-h .datetime-time.sc-ion-datetime-ios{display:none}}/*!@:host(.month-year-picker-open) .datetime-footer*/.month-year-picker-open.sc-ion-datetime-ios-h .datetime-footer.sc-ion-datetime-ios{display:none}/*!@:host(.datetime-disabled)*/.datetime-disabled.sc-ion-datetime-ios-h{pointer-events:none}/*!@:host(.datetime-disabled) .calendar-days-of-week,\n:host(.datetime-disabled) .datetime-time*/.datetime-disabled.sc-ion-datetime-ios-h .calendar-days-of-week.sc-ion-datetime-ios,.datetime-disabled.sc-ion-datetime-ios-h .datetime-time.sc-ion-datetime-ios{opacity:0.4}/*!@:host(.datetime-readonly)*/.datetime-readonly.sc-ion-datetime-ios-h{pointer-events:none}/*!@:host(.datetime-readonly) .calendar-action-buttons,\n:host(.datetime-readonly) .calendar-body,\n:host(.datetime-readonly) .datetime-year*/.datetime-readonly.sc-ion-datetime-ios-h .calendar-action-buttons.sc-ion-datetime-ios,.datetime-readonly.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios,.datetime-readonly.sc-ion-datetime-ios-h .datetime-year.sc-ion-datetime-ios{pointer-events:initial}/*!@:host(.datetime-readonly) .calendar-day[disabled]:not(.calendar-day-constrained),\n:host(.datetime-readonly) .datetime-action-buttons ion-button[disabled]*/.datetime-readonly.sc-ion-datetime-ios-h .calendar-day[disabled].sc-ion-datetime-ios:not(.calendar-day-constrained),.datetime-readonly.sc-ion-datetime-ios-h .datetime-action-buttons.sc-ion-datetime-ios ion-button[disabled].sc-ion-datetime-ios{opacity:1}/*!@:host .datetime-header .datetime-title*/.sc-ion-datetime-ios-h .datetime-header.sc-ion-datetime-ios .datetime-title.sc-ion-datetime-ios{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}/*!@:host .datetime-action-buttons.has-clear-button*/.sc-ion-datetime-ios-h .datetime-action-buttons.has-clear-button.sc-ion-datetime-ios{width:100%}/*!@:host .datetime-action-buttons ion-buttons*/.sc-ion-datetime-ios-h .datetime-action-buttons.sc-ion-datetime-ios ion-buttons.sc-ion-datetime-ios{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}/*!@.datetime-action-buttons .datetime-action-buttons-container*/.datetime-action-buttons.sc-ion-datetime-ios .datetime-action-buttons-container.sc-ion-datetime-ios{display:-ms-flexbox;display:flex}/*!@:host .calendar-action-buttons*/.sc-ion-datetime-ios-h .calendar-action-buttons.sc-ion-datetime-ios{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}/*!@:host .calendar-action-buttons ion-button*/.sc-ion-datetime-ios-h .calendar-action-buttons.sc-ion-datetime-ios ion-button.sc-ion-datetime-ios{--background:transparent}/*!@:host .calendar-days-of-week*/.sc-ion-datetime-ios-h .calendar-days-of-week.sc-ion-datetime-ios{display:grid;grid-template-columns:repeat(7, 1fr);text-align:center}/*!@.calendar-days-of-week .day-of-week*/.calendar-days-of-week.sc-ion-datetime-ios .day-of-week.sc-ion-datetime-ios{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0}/*!@:host .calendar-body*/.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios{display:-ms-flexbox;display:flex;-ms-flex-positive:1;flex-grow:1;-webkit-scroll-snap-type:x mandatory;-ms-scroll-snap-type:x mandatory;scroll-snap-type:x mandatory;overflow-x:scroll;overflow-y:hidden;scrollbar-width:none;outline:none}/*!@:host .calendar-body .calendar-month*/.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios .calendar-month.sc-ion-datetime-ios{display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column;scroll-snap-align:start;scroll-snap-stop:always;-ms-flex-negative:0;flex-shrink:0;width:100%}/*!@:host .calendar-body .calendar-month-disabled*/.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios .calendar-month-disabled.sc-ion-datetime-ios{scroll-snap-align:none}/*!@:host .calendar-body::-webkit-scrollbar*/.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios::-webkit-scrollbar{display:none}/*!@:host .calendar-body .calendar-month-grid*/.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios .calendar-month-grid.sc-ion-datetime-ios{display:grid;grid-template-columns:repeat(7, 1fr)}/*!@:host .calendar-day-wrapper*/.sc-ion-datetime-ios-h .calendar-day-wrapper.sc-ion-datetime-ios{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;min-width:0;min-height:0;overflow:visible}/*!@.calendar-day*/.calendar-day.sc-ion-datetime-ios{border-radius:50%;-webkit-padding-start:0px;padding-inline-start:0px;-webkit-padding-end:0px;padding-inline-end:0px;padding-top:0px;padding-bottom:0px;-webkit-margin-start:0px;margin-inline-start:0px;-webkit-margin-end:0px;margin-inline-end:0px;margin-top:0px;margin-bottom:0px;display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;border:none;outline:none;background:none;color:currentColor;font-family:var(--ion-font-family, inherit);cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;z-index:0}/*!@:host .calendar-day[disabled]*/.sc-ion-datetime-ios-h .calendar-day[disabled].sc-ion-datetime-ios{pointer-events:none;opacity:0.4}/*!@.calendar-day:focus*/.calendar-day.sc-ion-datetime-ios:focus{background:rgba(var(--ion-color-base-rgb), 0.2);-webkit-box-shadow:0px 0px 0px 4px rgba(var(--ion-color-base-rgb), 0.2);box-shadow:0px 0px 0px 4px rgba(var(--ion-color-base-rgb), 0.2)}/*!@:host .datetime-time*/.sc-ion-datetime-ios-h .datetime-time.sc-ion-datetime-ios{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}/*!@:host(.datetime-presentation-time) .datetime-time*/.datetime-presentation-time.sc-ion-datetime-ios-h .datetime-time.sc-ion-datetime-ios{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0}/*!@:host ion-popover*/.sc-ion-datetime-ios-h ion-popover.sc-ion-datetime-ios{--height:200px}/*!@:host .time-header*/.sc-ion-datetime-ios-h .time-header.sc-ion-datetime-ios{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}/*!@:host .time-body*/.sc-ion-datetime-ios-h .time-body.sc-ion-datetime-ios{border-radius:8px;-webkit-padding-start:12px;padding-inline-start:12px;-webkit-padding-end:12px;padding-inline-end:12px;padding-top:6px;padding-bottom:6px;display:-ms-flexbox;display:flex;border:none;background:var(--ion-color-step-300, #edeef0);color:var(--ion-text-color, #000);font-family:inherit;font-size:inherit;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none}/*!@:host .time-body-active*/.sc-ion-datetime-ios-h .time-body-active.sc-ion-datetime-ios{color:var(--ion-color-base)}/*!@:host(.in-item)*/.in-item.sc-ion-datetime-ios-h{position:static}/*!@:host(.show-month-and-year) .calendar-action-buttons .calendar-month-year-toggle*/.show-month-and-year.sc-ion-datetime-ios-h .calendar-action-buttons.sc-ion-datetime-ios .calendar-month-year-toggle.sc-ion-datetime-ios{color:var(--ion-color-base)}/*!@.calendar-month-year*/.calendar-month-year.sc-ion-datetime-ios{min-width:0}/*!@.calendar-month-year-toggle*/.calendar-month-year-toggle.sc-ion-datetime-ios{font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-decoration:inherit;text-indent:inherit;text-overflow:inherit;text-transform:inherit;text-align:inherit;white-space:inherit;color:inherit;position:relative;border:0;outline:none;background:transparent;cursor:pointer;z-index:1}/*!@.calendar-month-year-toggle::after*/.calendar-month-year-toggle.sc-ion-datetime-ios::after{left:0;right:0;top:0;bottom:0;position:absolute;content:\"\";opacity:0;-webkit-transition:opacity 15ms linear, background-color 15ms linear;transition:opacity 15ms linear, background-color 15ms linear;z-index:-1}/*!@.calendar-month-year-toggle.ion-focused::after*/.calendar-month-year-toggle.ion-focused.sc-ion-datetime-ios::after{background:currentColor}/*!@.calendar-month-year-toggle:disabled*/.calendar-month-year-toggle.sc-ion-datetime-ios:disabled{opacity:0.3;pointer-events:none}/*!@.calendar-month-year-toggle ion-icon*/.calendar-month-year-toggle.sc-ion-datetime-ios ion-icon.sc-ion-datetime-ios{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:0;padding-inline-end:0;padding-top:0;padding-bottom:0;-ms-flex-negative:0;flex-shrink:0}/*!@.calendar-month-year-toggle #toggle-wrapper*/.calendar-month-year-toggle.sc-ion-datetime-ios #toggle-wrapper.sc-ion-datetime-ios{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center}/*!@:host*/.sc-ion-datetime-ios-h{--background:var(--ion-color-light, #ffffff);--background-rgb:var(--ion-color-light-rgb);--title-color:var(--ion-color-step-600, #666666)}/*!@:host(.datetime-presentation-date-time:not(.datetime-prefer-wheel)),\n:host(.datetime-presentation-time-date:not(.datetime-prefer-wheel)),\n:host(.datetime-presentation-date:not(.datetime-prefer-wheel))*/.datetime-presentation-date-time.sc-ion-datetime-ios-h:not(.datetime-prefer-wheel),.datetime-presentation-time-date.sc-ion-datetime-ios-h:not(.datetime-prefer-wheel),.datetime-presentation-date.sc-ion-datetime-ios-h:not(.datetime-prefer-wheel){min-height:350px}/*!@:host .datetime-header*/.sc-ion-datetime-ios-h .datetime-header.sc-ion-datetime-ios{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:16px;padding-bottom:16px;border-bottom:0.55px solid var(--ion-color-step-200, #cccccc);font-size:min(0.875rem, 22.4px)}/*!@:host .datetime-header .datetime-title*/.sc-ion-datetime-ios-h .datetime-header.sc-ion-datetime-ios .datetime-title.sc-ion-datetime-ios{color:var(--title-color)}/*!@:host .datetime-header .datetime-selected-date*/.sc-ion-datetime-ios-h .datetime-header.sc-ion-datetime-ios .datetime-selected-date.sc-ion-datetime-ios{margin-top:10px}/*!@.calendar-month-year-toggle*/.calendar-month-year-toggle.sc-ion-datetime-ios{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0px;padding-bottom:0px;min-height:44px;font-size:min(1rem, 25.6px);font-weight:600}/*!@.calendar-month-year-toggle.ion-focused::after*/.calendar-month-year-toggle.ion-focused.sc-ion-datetime-ios::after{opacity:0.15}/*!@.calendar-month-year-toggle #toggle-wrapper*/.calendar-month-year-toggle.sc-ion-datetime-ios #toggle-wrapper.sc-ion-datetime-ios{-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:8px;margin-inline-end:8px;margin-top:10px;margin-bottom:10px}/*!@:host .calendar-action-buttons .calendar-month-year-toggle ion-icon,\n:host .calendar-action-buttons ion-buttons ion-button*/.sc-ion-datetime-ios-h .calendar-action-buttons.sc-ion-datetime-ios .calendar-month-year-toggle.sc-ion-datetime-ios ion-icon.sc-ion-datetime-ios,.sc-ion-datetime-ios-h .calendar-action-buttons.sc-ion-datetime-ios ion-buttons.sc-ion-datetime-ios ion-button.sc-ion-datetime-ios{color:var(--ion-color-base)}/*!@:host .calendar-action-buttons ion-buttons*/.sc-ion-datetime-ios-h .calendar-action-buttons.sc-ion-datetime-ios ion-buttons.sc-ion-datetime-ios{padding-left:0;padding-right:0;padding-top:8px;padding-bottom:0}/*!@:host .calendar-action-buttons ion-buttons ion-button*/.sc-ion-datetime-ios-h .calendar-action-buttons.sc-ion-datetime-ios ion-buttons.sc-ion-datetime-ios ion-button.sc-ion-datetime-ios{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}/*!@:host .calendar-days-of-week*/.sc-ion-datetime-ios-h .calendar-days-of-week.sc-ion-datetime-ios{-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;padding-top:0;padding-bottom:0;color:var(--ion-color-step-300, #b3b3b3);font-size:min(0.75rem, 19.2px);font-weight:600;line-height:24px;text-transform:uppercase}@supports (border-radius: mod(1px, 1px)){/*!@.calendar-days-of-week .day-of-week*/.calendar-days-of-week.sc-ion-datetime-ios .day-of-week.sc-ion-datetime-ios{width:clamp(20px, calc(mod(min(1rem, 24px), 24px) * 10), 100%);height:24px;overflow:hidden}/*!@.calendar-day*/.calendar-day.sc-ion-datetime-ios{border-radius:max(8px, mod(min(1rem, 24px), 24px) * 10)}}@supports ((border-radius: mod(1px, 1px)) and (background: -webkit-named-image(apple-pay-logo-black)) and (not (contain-intrinsic-size: none))) or (not (border-radius: mod(1px, 1px))){/*!@.calendar-days-of-week .day-of-week*/.calendar-days-of-week.sc-ion-datetime-ios .day-of-week.sc-ion-datetime-ios{width:auto;height:auto;overflow:initial}/*!@.calendar-day*/.calendar-day.sc-ion-datetime-ios{border-radius:32px}}/*!@:host .calendar-body .calendar-month .calendar-month-grid*/.sc-ion-datetime-ios-h .calendar-body.sc-ion-datetime-ios .calendar-month.sc-ion-datetime-ios .calendar-month-grid.sc-ion-datetime-ios{-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;padding-top:8px;padding-bottom:8px;-ms-flex-align:center;align-items:center;height:calc(100% - 16px)}/*!@:host .calendar-day-wrapper*/.sc-ion-datetime-ios-h .calendar-day-wrapper.sc-ion-datetime-ios{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:4px;padding-inline-end:4px;padding-top:4px;padding-bottom:4px;height:0;min-height:1rem}/*!@:host .calendar-day*/.sc-ion-datetime-ios-h .calendar-day.sc-ion-datetime-ios{width:40px;min-width:40px;height:40px;font-size:min(1.25rem, 32px)}/*!@.calendar-day.calendar-day-active*/.calendar-day.calendar-day-active.sc-ion-datetime-ios{background:rgba(var(--ion-color-base-rgb), 0.2)}/*!@:host .calendar-day.calendar-day-today*/.sc-ion-datetime-ios-h .calendar-day.calendar-day-today.sc-ion-datetime-ios{color:var(--ion-color-base)}/*!@:host .calendar-day.calendar-day-active*/.sc-ion-datetime-ios-h .calendar-day.calendar-day-active.sc-ion-datetime-ios{color:var(--ion-color-base);font-weight:600}/*!@:host .calendar-day.calendar-day-today.calendar-day-active*/.sc-ion-datetime-ios-h .calendar-day.calendar-day-today.calendar-day-active.sc-ion-datetime-ios{color:var(--ion-color-contrast)}/*!@:host .datetime-time*/.sc-ion-datetime-ios-h .datetime-time.sc-ion-datetime-ios{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:8px;padding-bottom:16px;font-size:min(1rem, 25.6px)}/*!@:host .datetime-time .time-header*/.sc-ion-datetime-ios-h .datetime-time.sc-ion-datetime-ios .time-header.sc-ion-datetime-ios{font-weight:600}/*!@:host .datetime-buttons*/.sc-ion-datetime-ios-h .datetime-buttons.sc-ion-datetime-ios{-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;padding-top:8px;padding-bottom:8px;border-top:0.55px solid var(--ion-color-step-200, #cccccc)}/*!@:host .datetime-buttons ::slotted(ion-buttons),\n:host .datetime-buttons ion-buttons*/.sc-ion-datetime-ios-h .datetime-buttons .sc-ion-datetime-ios-s>ion-buttons,.sc-ion-datetime-ios-h .datetime-buttons.sc-ion-datetime-ios ion-buttons.sc-ion-datetime-ios{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between}/*!@:host .datetime-action-buttons*/.sc-ion-datetime-ios-h .datetime-action-buttons.sc-ion-datetime-ios{width:100%}";
|
|
14830
14830
|
|
|
14831
|
-
const datetimeMdCss = "/*!@:host*/.sc-ion-datetime-md-h{display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column;background:var(--background);overflow:hidden}/*!@ion-picker-column-internal*/ion-picker-column-internal.sc-ion-datetime-md{min-width:26px}/*!@:host(.datetime-size-fixed)*/.datetime-size-fixed.sc-ion-datetime-md-h{width:auto;height:auto}/*!@:host(.datetime-size-fixed:not(.datetime-prefer-wheel))*/.datetime-size-fixed.sc-ion-datetime-md-h:not(.datetime-prefer-wheel){max-width:350px}/*!@:host(.datetime-size-fixed.datetime-prefer-wheel)*/.datetime-size-fixed.datetime-prefer-wheel.sc-ion-datetime-md-h{min-width:350px;max-width:-webkit-max-content;max-width:-moz-max-content;max-width:max-content}/*!@:host(.datetime-size-cover)*/.datetime-size-cover.sc-ion-datetime-md-h{width:100%}/*!@:host .calendar-body,\n:host .datetime-year*/.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md,.sc-ion-datetime-md-h .datetime-year.sc-ion-datetime-md{opacity:0}/*!@:host(:not(.datetime-ready)) .datetime-year*/.sc-ion-datetime-md-h:not(.datetime-ready) .datetime-year.sc-ion-datetime-md{position:absolute;pointer-events:none}/*!@:host(.datetime-ready) .calendar-body*/.datetime-ready.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md{opacity:1}/*!@:host(.datetime-ready) .datetime-year*/.datetime-ready.sc-ion-datetime-md-h .datetime-year.sc-ion-datetime-md{display:none;opacity:1}/*!@:host .wheel-order-year-first .day-column*/.sc-ion-datetime-md-h .wheel-order-year-first.sc-ion-datetime-md .day-column.sc-ion-datetime-md{-ms-flex-order:3;order:3;text-align:end}/*!@:host .wheel-order-year-first .month-column*/.sc-ion-datetime-md-h .wheel-order-year-first.sc-ion-datetime-md .month-column.sc-ion-datetime-md{-ms-flex-order:2;order:2;text-align:end}/*!@:host .wheel-order-year-first .year-column*/.sc-ion-datetime-md-h .wheel-order-year-first.sc-ion-datetime-md .year-column.sc-ion-datetime-md{-ms-flex-order:1;order:1;text-align:start}/*!@:host .datetime-calendar,\n:host .datetime-year*/.sc-ion-datetime-md-h .datetime-calendar.sc-ion-datetime-md,.sc-ion-datetime-md-h .datetime-year.sc-ion-datetime-md{display:-ms-flexbox;display:flex;-ms-flex:1 1 auto;flex:1 1 auto;-ms-flex-flow:column;flex-flow:column}/*!@:host(.show-month-and-year) .datetime-year*/.show-month-and-year.sc-ion-datetime-md-h .datetime-year.sc-ion-datetime-md{display:-ms-flexbox;display:flex}@supports (background: -webkit-named-image(apple-pay-logo-black)) and (not (aspect-ratio: 1/1)){/*!@:host(.show-month-and-year) .calendar-next-prev,\n :host(.show-month-and-year) .calendar-days-of-week,\n :host(.show-month-and-year) .calendar-body,\n :host(.show-month-and-year) .datetime-time*/.show-month-and-year.sc-ion-datetime-md-h .calendar-next-prev.sc-ion-datetime-md,.show-month-and-year.sc-ion-datetime-md-h .calendar-days-of-week.sc-ion-datetime-md,.show-month-and-year.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md,.show-month-and-year.sc-ion-datetime-md-h .datetime-time.sc-ion-datetime-md{position:absolute;visibility:hidden;pointer-events:none}/*!@@supports (inset-inline-start: 0)*/@supports .sc-ion-datetime-md (inset-inline-start.sc-ion-datetime-md: 0).sc-ion-datetime-md{.sc-ion-datetime-md-h.show-month-and-year .calendar-next-prev,.sc-ion-datetime-md-h.show-month-and-year .calendar-days-of-week,.sc-ion-datetime-md-h.show-month-and-year .calendar-body,.sc-ion-datetime-md-h.show-month-and-year .datetime-time{inset-inline-start:-99999px}}/*!@@supports not (inset-inline-start: 0)*/@supports .sc-ion-datetime-md not.sc-ion-datetime-md (inset-inline-start.sc-ion-datetime-md: 0).sc-ion-datetime-md{.sc-ion-datetime-md-h.show-month-and-year .calendar-next-prev,.sc-ion-datetime-md-h.show-month-and-year .calendar-days-of-week,.sc-ion-datetime-md-h.show-month-and-year .calendar-body,.sc-ion-datetime-md-h.show-month-and-year .datetime-time{left:-99999px}.sc-ion-datetime-md-h[dir=rtl].sc-ion-datetime-md-h.show-month-and-year .calendar-next-prev,[dir=rtl] .sc-ion-datetime-md-h.sc-ion-datetime-md-h.show-month-and-year .calendar-next-prev,.sc-ion-datetime-md-h[dir=rtl].show-month-and-year .calendar-next-prev,[dir=rtl] .sc-ion-datetime-md-h.show-month-and-year .calendar-next-prev,.sc-ion-datetime-md-h[dir=rtl].sc-ion-datetime-md-h.show-month-and-year .calendar-days-of-week,[dir=rtl] .sc-ion-datetime-md-h.sc-ion-datetime-md-h.show-month-and-year .calendar-days-of-week,.sc-ion-datetime-md-h[dir=rtl].show-month-and-year .calendar-days-of-week,[dir=rtl] .sc-ion-datetime-md-h.show-month-and-year .calendar-days-of-week,.sc-ion-datetime-md-h[dir=rtl].sc-ion-datetime-md-h.show-month-and-year .calendar-body,[dir=rtl] .sc-ion-datetime-md-h.sc-ion-datetime-md-h.show-month-and-year .calendar-body,.sc-ion-datetime-md-h[dir=rtl].show-month-and-year .calendar-body,[dir=rtl] .sc-ion-datetime-md-h.show-month-and-year .calendar-body,.sc-ion-datetime-md-h[dir=rtl].sc-ion-datetime-md-h.show-month-and-year .datetime-time,[dir=rtl] .sc-ion-datetime-md-h.sc-ion-datetime-md-h.show-month-and-year .datetime-time,.sc-ion-datetime-md-h[dir=rtl].show-month-and-year .datetime-time,[dir=rtl] .sc-ion-datetime-md-h.show-month-and-year .datetime-time{left:unset;right:unset;right:-99999px}@supports selector(:dir(rtl)){.sc-ion-datetime-md-h.show-month-and-year:dir(rtl) .calendar-next-prev,.sc-ion-datetime-md-h.show-month-and-year:dir(rtl) .calendar-days-of-week,.sc-ion-datetime-md-h.show-month-and-year:dir(rtl) .calendar-body,.sc-ion-datetime-md-h.show-month-and-year:dir(rtl) .datetime-time{left:unset;right:unset;right:-99999px}}}}@supports (not (background: -webkit-named-image(apple-pay-logo-black))) or ((background: -webkit-named-image(apple-pay-logo-black)) and (aspect-ratio: 1/1)){/*!@:host(.show-month-and-year) .calendar-next-prev,\n :host(.show-month-and-year) .calendar-days-of-week,\n :host(.show-month-and-year) .calendar-body,\n :host(.show-month-and-year) .datetime-time*/.show-month-and-year.sc-ion-datetime-md-h .calendar-next-prev.sc-ion-datetime-md,.show-month-and-year.sc-ion-datetime-md-h .calendar-days-of-week.sc-ion-datetime-md,.show-month-and-year.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md,.show-month-and-year.sc-ion-datetime-md-h .datetime-time.sc-ion-datetime-md{display:none}}/*!@:host(.month-year-picker-open) .datetime-footer*/.month-year-picker-open.sc-ion-datetime-md-h .datetime-footer.sc-ion-datetime-md{display:none}/*!@:host(.datetime-disabled)*/.datetime-disabled.sc-ion-datetime-md-h{pointer-events:none}/*!@:host(.datetime-disabled) .calendar-days-of-week,\n:host(.datetime-disabled) .datetime-time*/.datetime-disabled.sc-ion-datetime-md-h .calendar-days-of-week.sc-ion-datetime-md,.datetime-disabled.sc-ion-datetime-md-h .datetime-time.sc-ion-datetime-md{opacity:0.4}/*!@:host(.datetime-readonly)*/.datetime-readonly.sc-ion-datetime-md-h{pointer-events:none}/*!@:host(.datetime-readonly) .calendar-action-buttons,\n:host(.datetime-readonly) .calendar-body,\n:host(.datetime-readonly) .datetime-year*/.datetime-readonly.sc-ion-datetime-md-h .calendar-action-buttons.sc-ion-datetime-md,.datetime-readonly.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md,.datetime-readonly.sc-ion-datetime-md-h .datetime-year.sc-ion-datetime-md{pointer-events:initial}/*!@:host(.datetime-readonly) .calendar-day[disabled]:not(.calendar-day-constrained),\n:host(.datetime-readonly) .datetime-action-buttons ion-button[disabled]*/.datetime-readonly.sc-ion-datetime-md-h .calendar-day[disabled].sc-ion-datetime-md:not(.calendar-day-constrained),.datetime-readonly.sc-ion-datetime-md-h .datetime-action-buttons.sc-ion-datetime-md ion-button[disabled].sc-ion-datetime-md{opacity:1}/*!@:host .datetime-header .datetime-title*/.sc-ion-datetime-md-h .datetime-header.sc-ion-datetime-md .datetime-title.sc-ion-datetime-md{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}/*!@:host .datetime-action-buttons.has-clear-button*/.sc-ion-datetime-md-h .datetime-action-buttons.has-clear-button.sc-ion-datetime-md{width:100%}/*!@:host .datetime-action-buttons ion-buttons*/.sc-ion-datetime-md-h .datetime-action-buttons.sc-ion-datetime-md ion-buttons.sc-ion-datetime-md{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}/*!@.datetime-action-buttons .datetime-action-buttons-container*/.datetime-action-buttons.sc-ion-datetime-md .datetime-action-buttons-container.sc-ion-datetime-md{display:-ms-flexbox;display:flex}/*!@:host .calendar-action-buttons*/.sc-ion-datetime-md-h .calendar-action-buttons.sc-ion-datetime-md{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}/*!@:host .calendar-action-buttons ion-button*/.sc-ion-datetime-md-h .calendar-action-buttons.sc-ion-datetime-md ion-button.sc-ion-datetime-md{--background:transparent}/*!@:host .calendar-days-of-week*/.sc-ion-datetime-md-h .calendar-days-of-week.sc-ion-datetime-md{display:grid;grid-template-columns:repeat(7, 1fr);text-align:center}/*!@.calendar-days-of-week .day-of-week*/.calendar-days-of-week.sc-ion-datetime-md .day-of-week.sc-ion-datetime-md{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0}/*!@:host .calendar-body*/.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md{display:-ms-flexbox;display:flex;-ms-flex-positive:1;flex-grow:1;-webkit-scroll-snap-type:x mandatory;-ms-scroll-snap-type:x mandatory;scroll-snap-type:x mandatory;overflow-x:scroll;overflow-y:hidden;scrollbar-width:none;outline:none}/*!@:host .calendar-body .calendar-month*/.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md .calendar-month.sc-ion-datetime-md{display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column;scroll-snap-align:start;scroll-snap-stop:always;-ms-flex-negative:0;flex-shrink:0;width:100%}/*!@:host .calendar-body .calendar-month-disabled*/.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md .calendar-month-disabled.sc-ion-datetime-md{scroll-snap-align:none}/*!@:host .calendar-body::-webkit-scrollbar*/.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md::-webkit-scrollbar{display:none}/*!@:host .calendar-body .calendar-month-grid*/.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md .calendar-month-grid.sc-ion-datetime-md{display:grid;grid-template-columns:repeat(7, 1fr)}/*!@:host .calendar-day-wrapper*/.sc-ion-datetime-md-h .calendar-day-wrapper.sc-ion-datetime-md{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;min-width:0;min-height:0;overflow:visible}/*!@.calendar-day*/.calendar-day.sc-ion-datetime-md{border-radius:50%;-webkit-padding-start:0px;padding-inline-start:0px;-webkit-padding-end:0px;padding-inline-end:0px;padding-top:0px;padding-bottom:0px;-webkit-margin-start:0px;margin-inline-start:0px;-webkit-margin-end:0px;margin-inline-end:0px;margin-top:0px;margin-bottom:0px;display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;border:none;outline:none;background:none;color:currentColor;font-family:var(--ion-font-family, inherit);cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;z-index:0}/*!@:host .calendar-day[disabled]*/.sc-ion-datetime-md-h .calendar-day[disabled].sc-ion-datetime-md{pointer-events:none;opacity:0.4}/*!@.calendar-day:focus*/.calendar-day.sc-ion-datetime-md:focus{background:rgba(var(--ion-color-base-rgb), 0.2);-webkit-box-shadow:0px 0px 0px 4px rgba(var(--ion-color-base-rgb), 0.2);box-shadow:0px 0px 0px 4px rgba(var(--ion-color-base-rgb), 0.2)}/*!@:host .datetime-time*/.sc-ion-datetime-md-h .datetime-time.sc-ion-datetime-md{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}/*!@:host(.datetime-presentation-time) .datetime-time*/.datetime-presentation-time.sc-ion-datetime-md-h .datetime-time.sc-ion-datetime-md{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0}/*!@:host ion-popover*/.sc-ion-datetime-md-h ion-popover.sc-ion-datetime-md{--height:200px}/*!@:host .time-header*/.sc-ion-datetime-md-h .time-header.sc-ion-datetime-md{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}/*!@:host .time-body*/.sc-ion-datetime-md-h .time-body.sc-ion-datetime-md{border-radius:8px;-webkit-padding-start:12px;padding-inline-start:12px;-webkit-padding-end:12px;padding-inline-end:12px;padding-top:6px;padding-bottom:6px;display:-ms-flexbox;display:flex;border:none;background:var(--ion-color-step-300, #edeef0);color:var(--ion-text-color, #000);font-family:inherit;font-size:inherit;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none}/*!@:host .time-body-active*/.sc-ion-datetime-md-h .time-body-active.sc-ion-datetime-md{color:var(--ion-color-base)}/*!@:host(.in-item)*/.in-item.sc-ion-datetime-md-h{position:static}/*!@:host(.show-month-and-year) .calendar-action-buttons .calendar-month-year-toggle*/.show-month-and-year.sc-ion-datetime-md-h .calendar-action-buttons.sc-ion-datetime-md .calendar-month-year-toggle.sc-ion-datetime-md{color:var(--ion-color-base)}/*!@.calendar-month-year*/.calendar-month-year.sc-ion-datetime-md{min-width:0}/*!@.calendar-month-year-toggle*/.calendar-month-year-toggle.sc-ion-datetime-md{font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-decoration:inherit;text-indent:inherit;text-overflow:inherit;text-transform:inherit;text-align:inherit;white-space:inherit;color:inherit;position:relative;border:0;outline:none;background:transparent;cursor:pointer;z-index:1}/*!@.calendar-month-year-toggle::after*/.calendar-month-year-toggle.sc-ion-datetime-md::after{left:0;right:0;top:0;bottom:0;position:absolute;content:\"\";opacity:0;-webkit-transition:opacity 15ms linear, background-color 15ms linear;transition:opacity 15ms linear, background-color 15ms linear;z-index:-1}/*!@.calendar-month-year-toggle.ion-focused::after*/.calendar-month-year-toggle.ion-focused.sc-ion-datetime-md::after{background:currentColor}/*!@.calendar-month-year-toggle:disabled*/.calendar-month-year-toggle.sc-ion-datetime-md:disabled{opacity:0.3;pointer-events:none}/*!@.calendar-month-year-toggle ion-icon*/.calendar-month-year-toggle.sc-ion-datetime-md ion-icon.sc-ion-datetime-md{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:0;padding-inline-end:0;padding-top:0;padding-bottom:0;-ms-flex-negative:0;flex-shrink:0}/*!@.calendar-month-year-toggle #toggle-wrapper*/.calendar-month-year-toggle.sc-ion-datetime-md #toggle-wrapper.sc-ion-datetime-md{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center}/*!@:host*/.sc-ion-datetime-md-h{--background:var(--ion-color-step-100, #ffffff);--title-color:var(--ion-color-contrast)}/*!@:host .datetime-header*/.sc-ion-datetime-md-h .datetime-header.sc-ion-datetime-md{-webkit-padding-start:20px;padding-inline-start:20px;-webkit-padding-end:20px;padding-inline-end:20px;padding-top:20px;padding-bottom:20px;background:var(--ion-color-base);color:var(--title-color)}/*!@:host .datetime-header .datetime-title*/.sc-ion-datetime-md-h .datetime-header.sc-ion-datetime-md .datetime-title.sc-ion-datetime-md{font-size:0.75rem;text-transform:uppercase}/*!@:host .datetime-header .datetime-selected-date*/.sc-ion-datetime-md-h .datetime-header.sc-ion-datetime-md .datetime-selected-date.sc-ion-datetime-md{margin-top:30px;font-size:2.125rem}/*!@:host .calendar-action-buttons ion-button*/.sc-ion-datetime-md-h .calendar-action-buttons.sc-ion-datetime-md ion-button.sc-ion-datetime-md{--color:var(--ion-color-step-650, #595959)}/*!@.calendar-month-year-toggle*/.calendar-month-year-toggle.sc-ion-datetime-md{-webkit-padding-start:20px;padding-inline-start:20px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:12px;padding-bottom:12px;min-height:48px;background:transparent;color:var(--ion-color-step-650, #595959);z-index:1}/*!@.calendar-month-year-toggle.ion-focused::after*/.calendar-month-year-toggle.ion-focused.sc-ion-datetime-md::after{opacity:0.04}/*!@.calendar-month-year-toggle ion-ripple-effect*/.calendar-month-year-toggle.sc-ion-datetime-md ion-ripple-effect.sc-ion-datetime-md{color:currentColor}@media (any-hover: hover){/*!@.calendar-month-year-toggle.ion-activatable:not(.ion-focused):hover::after*/.calendar-month-year-toggle.ion-activatable.sc-ion-datetime-md:not(.ion-focused):hover::after{background:currentColor;opacity:0.04}}/*!@:host .calendar-days-of-week*/.sc-ion-datetime-md-h .calendar-days-of-week.sc-ion-datetime-md{-webkit-padding-start:10px;padding-inline-start:10px;-webkit-padding-end:10px;padding-inline-end:10px;padding-top:0px;padding-bottom:0px;color:var(--ion-color-step-500, gray);font-size:0.875rem;line-height:36px}/*!@:host .calendar-body .calendar-month .calendar-month-grid*/.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md .calendar-month.sc-ion-datetime-md .calendar-month-grid.sc-ion-datetime-md{-webkit-padding-start:10px;padding-inline-start:10px;-webkit-padding-end:10px;padding-inline-end:10px;padding-top:4px;padding-bottom:4px;grid-template-rows:repeat(6, 1fr)}/*!@:host .calendar-day*/.sc-ion-datetime-md-h .calendar-day.sc-ion-datetime-md{width:42px;min-width:42px;height:42px;font-size:0.875rem}/*!@:host .calendar-day.calendar-day-today*/.sc-ion-datetime-md-h .calendar-day.calendar-day-today.sc-ion-datetime-md{border:1px solid var(--ion-color-base);color:var(--ion-color-base)}/*!@:host .calendar-day.calendar-day-active*/.sc-ion-datetime-md-h .calendar-day.calendar-day-active.sc-ion-datetime-md{color:var(--ion-color-contrast)}/*!@.calendar-day.calendar-day-active*/.calendar-day.calendar-day-active.sc-ion-datetime-md{border:1px solid var(--ion-color-base);background:var(--ion-color-base)}/*!@:host .datetime-time*/.sc-ion-datetime-md-h .datetime-time.sc-ion-datetime-md{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:8px;padding-bottom:8px}/*!@:host .time-header*/.sc-ion-datetime-md-h .time-header.sc-ion-datetime-md{color:var(--ion-color-step-650, #595959)}/*!@:host(.datetime-presentation-month) .datetime-year,\n:host(.datetime-presentation-year) .datetime-year,\n:host(.datetime-presentation-month-year) .datetime-year*/.datetime-presentation-month.sc-ion-datetime-md-h .datetime-year.sc-ion-datetime-md,.datetime-presentation-year.sc-ion-datetime-md-h .datetime-year.sc-ion-datetime-md,.datetime-presentation-month-year.sc-ion-datetime-md-h .datetime-year.sc-ion-datetime-md{margin-top:20px;margin-bottom:20px}/*!@:host .datetime-buttons*/.sc-ion-datetime-md-h .datetime-buttons.sc-ion-datetime-md{-webkit-padding-start:10px;padding-inline-start:10px;-webkit-padding-end:10px;padding-inline-end:10px;padding-top:10px;padding-bottom:10px;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:end;justify-content:flex-end}";
|
|
14831
|
+
const datetimeMdCss = "/*!@:host*/.sc-ion-datetime-md-h{display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column;background:var(--background);overflow:hidden}/*!@ion-picker-column*/ion-picker-column.sc-ion-datetime-md{min-width:26px}/*!@:host(.datetime-size-fixed)*/.datetime-size-fixed.sc-ion-datetime-md-h{width:auto;height:auto}/*!@:host(.datetime-size-fixed:not(.datetime-prefer-wheel))*/.datetime-size-fixed.sc-ion-datetime-md-h:not(.datetime-prefer-wheel){max-width:350px}/*!@:host(.datetime-size-fixed.datetime-prefer-wheel)*/.datetime-size-fixed.datetime-prefer-wheel.sc-ion-datetime-md-h{min-width:350px;max-width:-webkit-max-content;max-width:-moz-max-content;max-width:max-content}/*!@:host(.datetime-size-cover)*/.datetime-size-cover.sc-ion-datetime-md-h{width:100%}/*!@:host .calendar-body,\n:host .datetime-year*/.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md,.sc-ion-datetime-md-h .datetime-year.sc-ion-datetime-md{opacity:0}/*!@:host(:not(.datetime-ready)) .datetime-year*/.sc-ion-datetime-md-h:not(.datetime-ready) .datetime-year.sc-ion-datetime-md{position:absolute;pointer-events:none}/*!@:host(.datetime-ready) .calendar-body*/.datetime-ready.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md{opacity:1}/*!@:host(.datetime-ready) .datetime-year*/.datetime-ready.sc-ion-datetime-md-h .datetime-year.sc-ion-datetime-md{display:none;opacity:1}/*!@:host .wheel-order-year-first .day-column*/.sc-ion-datetime-md-h .wheel-order-year-first.sc-ion-datetime-md .day-column.sc-ion-datetime-md{-ms-flex-order:3;order:3;text-align:end}/*!@:host .wheel-order-year-first .month-column*/.sc-ion-datetime-md-h .wheel-order-year-first.sc-ion-datetime-md .month-column.sc-ion-datetime-md{-ms-flex-order:2;order:2;text-align:end}/*!@:host .wheel-order-year-first .year-column*/.sc-ion-datetime-md-h .wheel-order-year-first.sc-ion-datetime-md .year-column.sc-ion-datetime-md{-ms-flex-order:1;order:1;text-align:start}/*!@:host .datetime-calendar,\n:host .datetime-year*/.sc-ion-datetime-md-h .datetime-calendar.sc-ion-datetime-md,.sc-ion-datetime-md-h .datetime-year.sc-ion-datetime-md{display:-ms-flexbox;display:flex;-ms-flex:1 1 auto;flex:1 1 auto;-ms-flex-flow:column;flex-flow:column}/*!@:host(.show-month-and-year) .datetime-year*/.show-month-and-year.sc-ion-datetime-md-h .datetime-year.sc-ion-datetime-md{display:-ms-flexbox;display:flex}@supports (background: -webkit-named-image(apple-pay-logo-black)) and (not (aspect-ratio: 1/1)){/*!@:host(.show-month-and-year) .calendar-next-prev,\n :host(.show-month-and-year) .calendar-days-of-week,\n :host(.show-month-and-year) .calendar-body,\n :host(.show-month-and-year) .datetime-time*/.show-month-and-year.sc-ion-datetime-md-h .calendar-next-prev.sc-ion-datetime-md,.show-month-and-year.sc-ion-datetime-md-h .calendar-days-of-week.sc-ion-datetime-md,.show-month-and-year.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md,.show-month-and-year.sc-ion-datetime-md-h .datetime-time.sc-ion-datetime-md{position:absolute;visibility:hidden;pointer-events:none}/*!@@supports (inset-inline-start: 0)*/@supports .sc-ion-datetime-md (inset-inline-start.sc-ion-datetime-md: 0).sc-ion-datetime-md{.sc-ion-datetime-md-h.show-month-and-year .calendar-next-prev,.sc-ion-datetime-md-h.show-month-and-year .calendar-days-of-week,.sc-ion-datetime-md-h.show-month-and-year .calendar-body,.sc-ion-datetime-md-h.show-month-and-year .datetime-time{inset-inline-start:-99999px}}/*!@@supports not (inset-inline-start: 0)*/@supports .sc-ion-datetime-md not.sc-ion-datetime-md (inset-inline-start.sc-ion-datetime-md: 0).sc-ion-datetime-md{.sc-ion-datetime-md-h.show-month-and-year .calendar-next-prev,.sc-ion-datetime-md-h.show-month-and-year .calendar-days-of-week,.sc-ion-datetime-md-h.show-month-and-year .calendar-body,.sc-ion-datetime-md-h.show-month-and-year .datetime-time{left:-99999px}.sc-ion-datetime-md-h[dir=rtl].sc-ion-datetime-md-h.show-month-and-year .calendar-next-prev,[dir=rtl] .sc-ion-datetime-md-h.sc-ion-datetime-md-h.show-month-and-year .calendar-next-prev,.sc-ion-datetime-md-h[dir=rtl].show-month-and-year .calendar-next-prev,[dir=rtl] .sc-ion-datetime-md-h.show-month-and-year .calendar-next-prev,.sc-ion-datetime-md-h[dir=rtl].sc-ion-datetime-md-h.show-month-and-year .calendar-days-of-week,[dir=rtl] .sc-ion-datetime-md-h.sc-ion-datetime-md-h.show-month-and-year .calendar-days-of-week,.sc-ion-datetime-md-h[dir=rtl].show-month-and-year .calendar-days-of-week,[dir=rtl] .sc-ion-datetime-md-h.show-month-and-year .calendar-days-of-week,.sc-ion-datetime-md-h[dir=rtl].sc-ion-datetime-md-h.show-month-and-year .calendar-body,[dir=rtl] .sc-ion-datetime-md-h.sc-ion-datetime-md-h.show-month-and-year .calendar-body,.sc-ion-datetime-md-h[dir=rtl].show-month-and-year .calendar-body,[dir=rtl] .sc-ion-datetime-md-h.show-month-and-year .calendar-body,.sc-ion-datetime-md-h[dir=rtl].sc-ion-datetime-md-h.show-month-and-year .datetime-time,[dir=rtl] .sc-ion-datetime-md-h.sc-ion-datetime-md-h.show-month-and-year .datetime-time,.sc-ion-datetime-md-h[dir=rtl].show-month-and-year .datetime-time,[dir=rtl] .sc-ion-datetime-md-h.show-month-and-year .datetime-time{left:unset;right:unset;right:-99999px}@supports selector(:dir(rtl)){.sc-ion-datetime-md-h.show-month-and-year:dir(rtl) .calendar-next-prev,.sc-ion-datetime-md-h.show-month-and-year:dir(rtl) .calendar-days-of-week,.sc-ion-datetime-md-h.show-month-and-year:dir(rtl) .calendar-body,.sc-ion-datetime-md-h.show-month-and-year:dir(rtl) .datetime-time{left:unset;right:unset;right:-99999px}}}}@supports (not (background: -webkit-named-image(apple-pay-logo-black))) or ((background: -webkit-named-image(apple-pay-logo-black)) and (aspect-ratio: 1/1)){/*!@:host(.show-month-and-year) .calendar-next-prev,\n :host(.show-month-and-year) .calendar-days-of-week,\n :host(.show-month-and-year) .calendar-body,\n :host(.show-month-and-year) .datetime-time*/.show-month-and-year.sc-ion-datetime-md-h .calendar-next-prev.sc-ion-datetime-md,.show-month-and-year.sc-ion-datetime-md-h .calendar-days-of-week.sc-ion-datetime-md,.show-month-and-year.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md,.show-month-and-year.sc-ion-datetime-md-h .datetime-time.sc-ion-datetime-md{display:none}}/*!@:host(.month-year-picker-open) .datetime-footer*/.month-year-picker-open.sc-ion-datetime-md-h .datetime-footer.sc-ion-datetime-md{display:none}/*!@:host(.datetime-disabled)*/.datetime-disabled.sc-ion-datetime-md-h{pointer-events:none}/*!@:host(.datetime-disabled) .calendar-days-of-week,\n:host(.datetime-disabled) .datetime-time*/.datetime-disabled.sc-ion-datetime-md-h .calendar-days-of-week.sc-ion-datetime-md,.datetime-disabled.sc-ion-datetime-md-h .datetime-time.sc-ion-datetime-md{opacity:0.4}/*!@:host(.datetime-readonly)*/.datetime-readonly.sc-ion-datetime-md-h{pointer-events:none}/*!@:host(.datetime-readonly) .calendar-action-buttons,\n:host(.datetime-readonly) .calendar-body,\n:host(.datetime-readonly) .datetime-year*/.datetime-readonly.sc-ion-datetime-md-h .calendar-action-buttons.sc-ion-datetime-md,.datetime-readonly.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md,.datetime-readonly.sc-ion-datetime-md-h .datetime-year.sc-ion-datetime-md{pointer-events:initial}/*!@:host(.datetime-readonly) .calendar-day[disabled]:not(.calendar-day-constrained),\n:host(.datetime-readonly) .datetime-action-buttons ion-button[disabled]*/.datetime-readonly.sc-ion-datetime-md-h .calendar-day[disabled].sc-ion-datetime-md:not(.calendar-day-constrained),.datetime-readonly.sc-ion-datetime-md-h .datetime-action-buttons.sc-ion-datetime-md ion-button[disabled].sc-ion-datetime-md{opacity:1}/*!@:host .datetime-header .datetime-title*/.sc-ion-datetime-md-h .datetime-header.sc-ion-datetime-md .datetime-title.sc-ion-datetime-md{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}/*!@:host .datetime-action-buttons.has-clear-button*/.sc-ion-datetime-md-h .datetime-action-buttons.has-clear-button.sc-ion-datetime-md{width:100%}/*!@:host .datetime-action-buttons ion-buttons*/.sc-ion-datetime-md-h .datetime-action-buttons.sc-ion-datetime-md ion-buttons.sc-ion-datetime-md{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}/*!@.datetime-action-buttons .datetime-action-buttons-container*/.datetime-action-buttons.sc-ion-datetime-md .datetime-action-buttons-container.sc-ion-datetime-md{display:-ms-flexbox;display:flex}/*!@:host .calendar-action-buttons*/.sc-ion-datetime-md-h .calendar-action-buttons.sc-ion-datetime-md{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}/*!@:host .calendar-action-buttons ion-button*/.sc-ion-datetime-md-h .calendar-action-buttons.sc-ion-datetime-md ion-button.sc-ion-datetime-md{--background:transparent}/*!@:host .calendar-days-of-week*/.sc-ion-datetime-md-h .calendar-days-of-week.sc-ion-datetime-md{display:grid;grid-template-columns:repeat(7, 1fr);text-align:center}/*!@.calendar-days-of-week .day-of-week*/.calendar-days-of-week.sc-ion-datetime-md .day-of-week.sc-ion-datetime-md{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0}/*!@:host .calendar-body*/.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md{display:-ms-flexbox;display:flex;-ms-flex-positive:1;flex-grow:1;-webkit-scroll-snap-type:x mandatory;-ms-scroll-snap-type:x mandatory;scroll-snap-type:x mandatory;overflow-x:scroll;overflow-y:hidden;scrollbar-width:none;outline:none}/*!@:host .calendar-body .calendar-month*/.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md .calendar-month.sc-ion-datetime-md{display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column;scroll-snap-align:start;scroll-snap-stop:always;-ms-flex-negative:0;flex-shrink:0;width:100%}/*!@:host .calendar-body .calendar-month-disabled*/.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md .calendar-month-disabled.sc-ion-datetime-md{scroll-snap-align:none}/*!@:host .calendar-body::-webkit-scrollbar*/.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md::-webkit-scrollbar{display:none}/*!@:host .calendar-body .calendar-month-grid*/.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md .calendar-month-grid.sc-ion-datetime-md{display:grid;grid-template-columns:repeat(7, 1fr)}/*!@:host .calendar-day-wrapper*/.sc-ion-datetime-md-h .calendar-day-wrapper.sc-ion-datetime-md{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;min-width:0;min-height:0;overflow:visible}/*!@.calendar-day*/.calendar-day.sc-ion-datetime-md{border-radius:50%;-webkit-padding-start:0px;padding-inline-start:0px;-webkit-padding-end:0px;padding-inline-end:0px;padding-top:0px;padding-bottom:0px;-webkit-margin-start:0px;margin-inline-start:0px;-webkit-margin-end:0px;margin-inline-end:0px;margin-top:0px;margin-bottom:0px;display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;border:none;outline:none;background:none;color:currentColor;font-family:var(--ion-font-family, inherit);cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;z-index:0}/*!@:host .calendar-day[disabled]*/.sc-ion-datetime-md-h .calendar-day[disabled].sc-ion-datetime-md{pointer-events:none;opacity:0.4}/*!@.calendar-day:focus*/.calendar-day.sc-ion-datetime-md:focus{background:rgba(var(--ion-color-base-rgb), 0.2);-webkit-box-shadow:0px 0px 0px 4px rgba(var(--ion-color-base-rgb), 0.2);box-shadow:0px 0px 0px 4px rgba(var(--ion-color-base-rgb), 0.2)}/*!@:host .datetime-time*/.sc-ion-datetime-md-h .datetime-time.sc-ion-datetime-md{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}/*!@:host(.datetime-presentation-time) .datetime-time*/.datetime-presentation-time.sc-ion-datetime-md-h .datetime-time.sc-ion-datetime-md{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0}/*!@:host ion-popover*/.sc-ion-datetime-md-h ion-popover.sc-ion-datetime-md{--height:200px}/*!@:host .time-header*/.sc-ion-datetime-md-h .time-header.sc-ion-datetime-md{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}/*!@:host .time-body*/.sc-ion-datetime-md-h .time-body.sc-ion-datetime-md{border-radius:8px;-webkit-padding-start:12px;padding-inline-start:12px;-webkit-padding-end:12px;padding-inline-end:12px;padding-top:6px;padding-bottom:6px;display:-ms-flexbox;display:flex;border:none;background:var(--ion-color-step-300, #edeef0);color:var(--ion-text-color, #000);font-family:inherit;font-size:inherit;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none}/*!@:host .time-body-active*/.sc-ion-datetime-md-h .time-body-active.sc-ion-datetime-md{color:var(--ion-color-base)}/*!@:host(.in-item)*/.in-item.sc-ion-datetime-md-h{position:static}/*!@:host(.show-month-and-year) .calendar-action-buttons .calendar-month-year-toggle*/.show-month-and-year.sc-ion-datetime-md-h .calendar-action-buttons.sc-ion-datetime-md .calendar-month-year-toggle.sc-ion-datetime-md{color:var(--ion-color-base)}/*!@.calendar-month-year*/.calendar-month-year.sc-ion-datetime-md{min-width:0}/*!@.calendar-month-year-toggle*/.calendar-month-year-toggle.sc-ion-datetime-md{font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-decoration:inherit;text-indent:inherit;text-overflow:inherit;text-transform:inherit;text-align:inherit;white-space:inherit;color:inherit;position:relative;border:0;outline:none;background:transparent;cursor:pointer;z-index:1}/*!@.calendar-month-year-toggle::after*/.calendar-month-year-toggle.sc-ion-datetime-md::after{left:0;right:0;top:0;bottom:0;position:absolute;content:\"\";opacity:0;-webkit-transition:opacity 15ms linear, background-color 15ms linear;transition:opacity 15ms linear, background-color 15ms linear;z-index:-1}/*!@.calendar-month-year-toggle.ion-focused::after*/.calendar-month-year-toggle.ion-focused.sc-ion-datetime-md::after{background:currentColor}/*!@.calendar-month-year-toggle:disabled*/.calendar-month-year-toggle.sc-ion-datetime-md:disabled{opacity:0.3;pointer-events:none}/*!@.calendar-month-year-toggle ion-icon*/.calendar-month-year-toggle.sc-ion-datetime-md ion-icon.sc-ion-datetime-md{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:0;padding-inline-end:0;padding-top:0;padding-bottom:0;-ms-flex-negative:0;flex-shrink:0}/*!@.calendar-month-year-toggle #toggle-wrapper*/.calendar-month-year-toggle.sc-ion-datetime-md #toggle-wrapper.sc-ion-datetime-md{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center}/*!@:host*/.sc-ion-datetime-md-h{--background:var(--ion-color-step-100, #ffffff);--title-color:var(--ion-color-contrast)}/*!@:host .datetime-header*/.sc-ion-datetime-md-h .datetime-header.sc-ion-datetime-md{-webkit-padding-start:20px;padding-inline-start:20px;-webkit-padding-end:20px;padding-inline-end:20px;padding-top:20px;padding-bottom:20px;background:var(--ion-color-base);color:var(--title-color)}/*!@:host .datetime-header .datetime-title*/.sc-ion-datetime-md-h .datetime-header.sc-ion-datetime-md .datetime-title.sc-ion-datetime-md{font-size:0.75rem;text-transform:uppercase}/*!@:host .datetime-header .datetime-selected-date*/.sc-ion-datetime-md-h .datetime-header.sc-ion-datetime-md .datetime-selected-date.sc-ion-datetime-md{margin-top:30px;font-size:2.125rem}/*!@:host .calendar-action-buttons ion-button*/.sc-ion-datetime-md-h .calendar-action-buttons.sc-ion-datetime-md ion-button.sc-ion-datetime-md{--color:var(--ion-color-step-650, #595959)}/*!@.calendar-month-year-toggle*/.calendar-month-year-toggle.sc-ion-datetime-md{-webkit-padding-start:20px;padding-inline-start:20px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:12px;padding-bottom:12px;min-height:48px;background:transparent;color:var(--ion-color-step-650, #595959);z-index:1}/*!@.calendar-month-year-toggle.ion-focused::after*/.calendar-month-year-toggle.ion-focused.sc-ion-datetime-md::after{opacity:0.04}/*!@.calendar-month-year-toggle ion-ripple-effect*/.calendar-month-year-toggle.sc-ion-datetime-md ion-ripple-effect.sc-ion-datetime-md{color:currentColor}@media (any-hover: hover){/*!@.calendar-month-year-toggle.ion-activatable:not(.ion-focused):hover::after*/.calendar-month-year-toggle.ion-activatable.sc-ion-datetime-md:not(.ion-focused):hover::after{background:currentColor;opacity:0.04}}/*!@:host .calendar-days-of-week*/.sc-ion-datetime-md-h .calendar-days-of-week.sc-ion-datetime-md{-webkit-padding-start:10px;padding-inline-start:10px;-webkit-padding-end:10px;padding-inline-end:10px;padding-top:0px;padding-bottom:0px;color:var(--ion-color-step-500, gray);font-size:0.875rem;line-height:36px}/*!@:host .calendar-body .calendar-month .calendar-month-grid*/.sc-ion-datetime-md-h .calendar-body.sc-ion-datetime-md .calendar-month.sc-ion-datetime-md .calendar-month-grid.sc-ion-datetime-md{-webkit-padding-start:10px;padding-inline-start:10px;-webkit-padding-end:10px;padding-inline-end:10px;padding-top:4px;padding-bottom:4px;grid-template-rows:repeat(6, 1fr)}/*!@:host .calendar-day*/.sc-ion-datetime-md-h .calendar-day.sc-ion-datetime-md{width:42px;min-width:42px;height:42px;font-size:0.875rem}/*!@:host .calendar-day.calendar-day-today*/.sc-ion-datetime-md-h .calendar-day.calendar-day-today.sc-ion-datetime-md{border:1px solid var(--ion-color-base);color:var(--ion-color-base)}/*!@:host .calendar-day.calendar-day-active*/.sc-ion-datetime-md-h .calendar-day.calendar-day-active.sc-ion-datetime-md{color:var(--ion-color-contrast)}/*!@.calendar-day.calendar-day-active*/.calendar-day.calendar-day-active.sc-ion-datetime-md{border:1px solid var(--ion-color-base);background:var(--ion-color-base)}/*!@:host .datetime-time*/.sc-ion-datetime-md-h .datetime-time.sc-ion-datetime-md{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:8px;padding-bottom:8px}/*!@:host .time-header*/.sc-ion-datetime-md-h .time-header.sc-ion-datetime-md{color:var(--ion-color-step-650, #595959)}/*!@:host(.datetime-presentation-month) .datetime-year,\n:host(.datetime-presentation-year) .datetime-year,\n:host(.datetime-presentation-month-year) .datetime-year*/.datetime-presentation-month.sc-ion-datetime-md-h .datetime-year.sc-ion-datetime-md,.datetime-presentation-year.sc-ion-datetime-md-h .datetime-year.sc-ion-datetime-md,.datetime-presentation-month-year.sc-ion-datetime-md-h .datetime-year.sc-ion-datetime-md{margin-top:20px;margin-bottom:20px}/*!@:host .datetime-buttons*/.sc-ion-datetime-md-h .datetime-buttons.sc-ion-datetime-md{-webkit-padding-start:10px;padding-inline-start:10px;-webkit-padding-end:10px;padding-inline-end:10px;padding-top:10px;padding-bottom:10px;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:end;justify-content:flex-end}";
|
|
14832
14832
|
|
|
14833
14833
|
/**
|
|
14834
14834
|
* @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.
|
|
@@ -15799,7 +15799,7 @@ class Datetime {
|
|
|
15799
15799
|
const renderArray = forcePresentation === 'time-date'
|
|
15800
15800
|
? [this.renderTimePickerColumns(forcePresentation), this.renderDatePickerColumns(forcePresentation)]
|
|
15801
15801
|
: [this.renderDatePickerColumns(forcePresentation), this.renderTimePickerColumns(forcePresentation)];
|
|
15802
|
-
return hAsync("ion-picker
|
|
15802
|
+
return hAsync("ion-picker", null, renderArray);
|
|
15803
15803
|
}
|
|
15804
15804
|
renderDatePickerColumns(forcePresentation) {
|
|
15805
15805
|
return forcePresentation === 'date-time' || forcePresentation === 'time-date'
|
|
@@ -15858,7 +15858,7 @@ class Datetime {
|
|
|
15858
15858
|
const todayString = workingParts.day !== null
|
|
15859
15859
|
? `${workingParts.year}-${workingParts.month}-${workingParts.day}`
|
|
15860
15860
|
: `${defaultParts.year}-${defaultParts.month}-${defaultParts.day}`;
|
|
15861
|
-
return (hAsync("ion-picker-column
|
|
15861
|
+
return (hAsync("ion-picker-column", { class: "date-column", color: this.color, disabled: disabled, items: items, value: todayString, onIonChange: (ev) => {
|
|
15862
15862
|
// TODO(FW-1823) Remove this when iOS 14 support is dropped.
|
|
15863
15863
|
// Due to a Safari 14 issue we need to destroy
|
|
15864
15864
|
// the scroll listener before we update state
|
|
@@ -15942,7 +15942,7 @@ class Datetime {
|
|
|
15942
15942
|
}
|
|
15943
15943
|
const { disabled, workingParts } = this;
|
|
15944
15944
|
const activePart = this.getActivePartsWithFallback();
|
|
15945
|
-
return (hAsync("ion-picker-column
|
|
15945
|
+
return (hAsync("ion-picker-column", { class: "day-column", color: this.color, disabled: disabled, items: days, value: (_a = (workingParts.day !== null ? workingParts.day : this.defaultParts.day)) !== null && _a !== void 0 ? _a : undefined, onIonChange: (ev) => {
|
|
15946
15946
|
// TODO(FW-1823) Remove this when iOS 14 support is dropped.
|
|
15947
15947
|
// Due to a Safari 14 issue we need to destroy
|
|
15948
15948
|
// the scroll listener before we update state
|
|
@@ -15964,7 +15964,7 @@ class Datetime {
|
|
|
15964
15964
|
}
|
|
15965
15965
|
const { disabled, workingParts } = this;
|
|
15966
15966
|
const activePart = this.getActivePartsWithFallback();
|
|
15967
|
-
return (hAsync("ion-picker-column
|
|
15967
|
+
return (hAsync("ion-picker-column", { class: "month-column", color: this.color, disabled: disabled, items: months, value: workingParts.month, onIonChange: (ev) => {
|
|
15968
15968
|
// TODO(FW-1823) Remove this when iOS 14 support is dropped.
|
|
15969
15969
|
// Due to a Safari 14 issue we need to destroy
|
|
15970
15970
|
// the scroll listener before we update state
|
|
@@ -15986,7 +15986,7 @@ class Datetime {
|
|
|
15986
15986
|
}
|
|
15987
15987
|
const { disabled, workingParts } = this;
|
|
15988
15988
|
const activePart = this.getActivePartsWithFallback();
|
|
15989
|
-
return (hAsync("ion-picker-column
|
|
15989
|
+
return (hAsync("ion-picker-column", { class: "year-column", color: this.color, disabled: disabled, items: years, value: workingParts.year, onIonChange: (ev) => {
|
|
15990
15990
|
// TODO(FW-1823) Remove this when iOS 14 support is dropped.
|
|
15991
15991
|
// Due to a Safari 14 issue we need to destroy
|
|
15992
15992
|
// the scroll listener before we update state
|
|
@@ -16029,7 +16029,7 @@ class Datetime {
|
|
|
16029
16029
|
if (hoursData.length === 0)
|
|
16030
16030
|
return [];
|
|
16031
16031
|
const activePart = this.getActivePartsWithFallback();
|
|
16032
|
-
return (hAsync("ion-picker-column
|
|
16032
|
+
return (hAsync("ion-picker-column", { color: this.color, disabled: disabled, value: activePart.hour, items: hoursData, numericInput: true, onIonChange: (ev) => {
|
|
16033
16033
|
this.setWorkingParts(Object.assign(Object.assign({}, workingParts), { hour: ev.detail.value }));
|
|
16034
16034
|
this.setActiveParts(Object.assign(Object.assign({}, activePart), { hour: ev.detail.value }));
|
|
16035
16035
|
ev.stopPropagation();
|
|
@@ -16040,7 +16040,7 @@ class Datetime {
|
|
|
16040
16040
|
if (minutesData.length === 0)
|
|
16041
16041
|
return [];
|
|
16042
16042
|
const activePart = this.getActivePartsWithFallback();
|
|
16043
|
-
return (hAsync("ion-picker-column
|
|
16043
|
+
return (hAsync("ion-picker-column", { color: this.color, disabled: disabled, value: activePart.minute, items: minutesData, numericInput: true, onIonChange: (ev) => {
|
|
16044
16044
|
this.setWorkingParts(Object.assign(Object.assign({}, workingParts), { minute: ev.detail.value }));
|
|
16045
16045
|
this.setActiveParts(Object.assign(Object.assign({}, activePart), { minute: ev.detail.value }));
|
|
16046
16046
|
ev.stopPropagation();
|
|
@@ -16053,7 +16053,7 @@ class Datetime {
|
|
|
16053
16053
|
}
|
|
16054
16054
|
const activePart = this.getActivePartsWithFallback();
|
|
16055
16055
|
const isDayPeriodRTL = isLocaleDayPeriodRTL(this.locale);
|
|
16056
|
-
return (hAsync("ion-picker-column
|
|
16056
|
+
return (hAsync("ion-picker-column", { style: isDayPeriodRTL ? { order: '-1' } : {}, color: this.color, disabled: disabled, value: activePart.ampm, items: dayPeriodData, onIonChange: (ev) => {
|
|
16057
16057
|
const hour = calculateHourFromAMPM(workingParts, ev.detail.value);
|
|
16058
16058
|
this.setWorkingParts(Object.assign(Object.assign({}, workingParts), { ampm: ev.detail.value, hour }));
|
|
16059
16059
|
this.setActiveParts(Object.assign(Object.assign({}, activePart), { ampm: ev.detail.value, hour }));
|
|
@@ -16244,7 +16244,7 @@ class Datetime {
|
|
|
16244
16244
|
* This will correctly scroll the element position to the correct time value,
|
|
16245
16245
|
* before the popover is fully presented.
|
|
16246
16246
|
*/
|
|
16247
|
-
const cols = ev.target.querySelectorAll('ion-picker-column
|
|
16247
|
+
const cols = ev.target.querySelectorAll('ion-picker-column');
|
|
16248
16248
|
// TODO (FW-615): Potentially remove this when intersection observers are fixed in picker column
|
|
16249
16249
|
cols.forEach((col) => col.scrollActiveItemIntoView());
|
|
16250
16250
|
}, style: {
|
|
@@ -24463,655 +24463,778 @@ class Note {
|
|
|
24463
24463
|
}; }
|
|
24464
24464
|
}
|
|
24465
24465
|
|
|
24466
|
-
|
|
24467
|
-
* iOS Picker Enter Animation
|
|
24468
|
-
*/
|
|
24469
|
-
const iosEnterAnimation$2 = (baseEl) => {
|
|
24470
|
-
const baseAnimation = createAnimation();
|
|
24471
|
-
const backdropAnimation = createAnimation();
|
|
24472
|
-
const wrapperAnimation = createAnimation();
|
|
24473
|
-
backdropAnimation
|
|
24474
|
-
.addElement(baseEl.querySelector('ion-backdrop'))
|
|
24475
|
-
.fromTo('opacity', 0.01, 'var(--backdrop-opacity)')
|
|
24476
|
-
.beforeStyles({
|
|
24477
|
-
'pointer-events': 'none',
|
|
24478
|
-
})
|
|
24479
|
-
.afterClearStyles(['pointer-events']);
|
|
24480
|
-
wrapperAnimation
|
|
24481
|
-
.addElement(baseEl.querySelector('.picker-wrapper'))
|
|
24482
|
-
.fromTo('transform', 'translateY(100%)', 'translateY(0%)');
|
|
24483
|
-
return baseAnimation
|
|
24484
|
-
.addElement(baseEl)
|
|
24485
|
-
.easing('cubic-bezier(.36,.66,.04,1)')
|
|
24486
|
-
.duration(400)
|
|
24487
|
-
.addAnimation([backdropAnimation, wrapperAnimation]);
|
|
24488
|
-
};
|
|
24489
|
-
|
|
24490
|
-
/**
|
|
24491
|
-
* iOS Picker Leave Animation
|
|
24492
|
-
*/
|
|
24493
|
-
const iosLeaveAnimation$2 = (baseEl) => {
|
|
24494
|
-
const baseAnimation = createAnimation();
|
|
24495
|
-
const backdropAnimation = createAnimation();
|
|
24496
|
-
const wrapperAnimation = createAnimation();
|
|
24497
|
-
backdropAnimation
|
|
24498
|
-
.addElement(baseEl.querySelector('ion-backdrop'))
|
|
24499
|
-
.fromTo('opacity', 'var(--backdrop-opacity)', 0.01);
|
|
24500
|
-
wrapperAnimation
|
|
24501
|
-
.addElement(baseEl.querySelector('.picker-wrapper'))
|
|
24502
|
-
.fromTo('transform', 'translateY(0%)', 'translateY(100%)');
|
|
24503
|
-
return baseAnimation
|
|
24504
|
-
.addElement(baseEl)
|
|
24505
|
-
.easing('cubic-bezier(.36,.66,.04,1)')
|
|
24506
|
-
.duration(400)
|
|
24507
|
-
.addAnimation([backdropAnimation, wrapperAnimation]);
|
|
24508
|
-
};
|
|
24509
|
-
|
|
24510
|
-
const pickerIosCss = ".sc-ion-picker-legacy-ios-h{--border-radius:0;--border-style:solid;--min-width:auto;--width:100%;--max-width:500px;--min-height:auto;--max-height:auto;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;top:0;display:block;position:absolute;width:100%;height:100%;outline:none;font-family:var(--ion-font-family, inherit);contain:strict;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:1001}@supports (inset-inline-start: 0){.sc-ion-picker-legacy-ios-h{inset-inline-start:0}}@supports not (inset-inline-start: 0){.sc-ion-picker-legacy-ios-h{left:0}[dir=rtl].sc-ion-picker-legacy-ios-h,[dir=rtl] .sc-ion-picker-legacy-ios-h{left:unset;right:unset;right:0}@supports selector(:dir(rtl)){.sc-ion-picker-legacy-ios-h:dir(rtl){left:unset;right:unset;right:0}}}.overlay-hidden.sc-ion-picker-legacy-ios-h{display:none}.picker-wrapper.sc-ion-picker-legacy-ios{border-radius:var(--border-radius);left:0;right:0;bottom:0;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:auto;margin-bottom:auto;-webkit-transform:translate3d(0, 100%, 0);transform:translate3d(0, 100%, 0);display:-ms-flexbox;display:flex;position:absolute;-ms-flex-direction:column;flex-direction:column;width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);contain:strict;overflow:hidden;z-index:10}.picker-toolbar.sc-ion-picker-legacy-ios{width:100%;background:transparent;contain:strict;z-index:1}.picker-button.sc-ion-picker-legacy-ios{border:0;font-family:inherit}.picker-button.sc-ion-picker-legacy-ios:active,.picker-button.sc-ion-picker-legacy-ios:focus{outline:none}.picker-columns.sc-ion-picker-legacy-ios{display:-ms-flexbox;display:flex;position:relative;-ms-flex-pack:center;justify-content:center;margin-bottom:var(--ion-safe-area-bottom, 0);contain:strict;overflow:hidden}.picker-above-highlight.sc-ion-picker-legacy-ios,.picker-below-highlight.sc-ion-picker-legacy-ios{display:none;pointer-events:none}.sc-ion-picker-legacy-ios-h{--background:var(--ion-background-color, #fff);--border-width:1px 0 0;--border-color:var(--ion-item-border-color, var(--ion-border-color, var(--ion-color-step-250, #c8c7cc)));--height:260px;--backdrop-opacity:var(--ion-backdrop-opacity, 0.26);color:var(--ion-item-color, var(--ion-text-color, #000))}.picker-toolbar.sc-ion-picker-legacy-ios{display:-ms-flexbox;display:flex;height:44px;border-bottom:0.55px solid var(--border-color)}.picker-toolbar-button.sc-ion-picker-legacy-ios{-ms-flex:1;flex:1;text-align:end}.picker-toolbar-button.sc-ion-picker-legacy-ios:last-child .picker-button.sc-ion-picker-legacy-ios{font-weight:600}.picker-toolbar-button.sc-ion-picker-legacy-ios:first-child{font-weight:normal;text-align:start}.picker-button.sc-ion-picker-legacy-ios,.picker-button.ion-activated.sc-ion-picker-legacy-ios{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-padding-start:1em;padding-inline-start:1em;-webkit-padding-end:1em;padding-inline-end:1em;padding-top:0;padding-bottom:0;height:44px;background:transparent;color:var(--ion-color-primary, #3880ff);font-size:16px}.picker-columns.sc-ion-picker-legacy-ios{height:215px;-webkit-perspective:1000px;perspective:1000px}.picker-above-highlight.sc-ion-picker-legacy-ios{top:0;-webkit-transform:translate3d(0, 0, 90px);transform:translate3d(0, 0, 90px);display:block;position:absolute;width:100%;height:81px;border-bottom:1px solid var(--border-color);background:-webkit-gradient(linear, left top, left bottom, color-stop(20%, var(--background, var(--ion-background-color, #fff))), to(rgba(var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255)), 0.8)));background:linear-gradient(to bottom, var(--background, var(--ion-background-color, #fff)) 20%, rgba(var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255)), 0.8) 100%);z-index:10}@supports (inset-inline-start: 0){.picker-above-highlight.sc-ion-picker-legacy-ios{inset-inline-start:0}}@supports not (inset-inline-start: 0){.picker-above-highlight.sc-ion-picker-legacy-ios{left:0}[dir=rtl].sc-ion-picker-legacy-ios-h .picker-above-highlight.sc-ion-picker-legacy-ios,[dir=rtl] .sc-ion-picker-legacy-ios-h .picker-above-highlight.sc-ion-picker-legacy-ios{left:unset;right:unset;right:0}[dir=rtl].sc-ion-picker-legacy-ios .picker-above-highlight.sc-ion-picker-legacy-ios{left:unset;right:unset;right:0}@supports selector(:dir(rtl)){.picker-above-highlight.sc-ion-picker-legacy-ios:dir(rtl){left:unset;right:unset;right:0}}}.picker-below-highlight.sc-ion-picker-legacy-ios{top:115px;-webkit-transform:translate3d(0, 0, 90px);transform:translate3d(0, 0, 90px);display:block;position:absolute;width:100%;height:119px;border-top:1px solid var(--border-color);background:-webkit-gradient(linear, left bottom, left top, color-stop(30%, var(--background, var(--ion-background-color, #fff))), to(rgba(var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255)), 0.8)));background:linear-gradient(to top, var(--background, var(--ion-background-color, #fff)) 30%, rgba(var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255)), 0.8) 100%);z-index:11}@supports (inset-inline-start: 0){.picker-below-highlight.sc-ion-picker-legacy-ios{inset-inline-start:0}}@supports not (inset-inline-start: 0){.picker-below-highlight.sc-ion-picker-legacy-ios{left:0}[dir=rtl].sc-ion-picker-legacy-ios-h .picker-below-highlight.sc-ion-picker-legacy-ios,[dir=rtl] .sc-ion-picker-legacy-ios-h .picker-below-highlight.sc-ion-picker-legacy-ios{left:unset;right:unset;right:0}[dir=rtl].sc-ion-picker-legacy-ios .picker-below-highlight.sc-ion-picker-legacy-ios{left:unset;right:unset;right:0}@supports selector(:dir(rtl)){.picker-below-highlight.sc-ion-picker-legacy-ios:dir(rtl){left:unset;right:unset;right:0}}}";
|
|
24466
|
+
const pickerIosCss$1 = "/*!@:host*/.sc-ion-picker-ios-h{display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%;height:200px;direction:ltr;z-index:0}/*!@:host .picker-before,\n:host .picker-after*/.sc-ion-picker-ios-h .picker-before.sc-ion-picker-ios,.sc-ion-picker-ios-h .picker-after.sc-ion-picker-ios{position:absolute;width:100%;-webkit-transform:translateZ(0);transform:translateZ(0);z-index:1;pointer-events:none}/*!@:host .picker-before*/.sc-ion-picker-ios-h .picker-before.sc-ion-picker-ios{top:0;height:83px}@supports (inset-inline-start: 0){/*!@:host .picker-before*/.sc-ion-picker-ios-h .picker-before.sc-ion-picker-ios{inset-inline-start:0}}@supports not (inset-inline-start: 0){/*!@:host .picker-before*/.sc-ion-picker-ios-h .picker-before.sc-ion-picker-ios{left:0}/*!@:host-context([dir=rtl]) .picker-before*/[dir=rtl].sc-ion-picker-ios-h .picker-before.sc-ion-picker-ios,[dir=rtl] .sc-ion-picker-ios-h .picker-before.sc-ion-picker-ios{left:unset;right:unset;right:0}/*!@@supports selector(:dir(rtl))*/@supports .sc-ion-picker-ios selector(.sc-ion-picker-ios:dir(rtl)){.sc-ion-picker-ios-h:dir(rtl) .picker-before{left:unset;right:unset;right:0}}}/*!@:host .picker-after*/.sc-ion-picker-ios-h .picker-after.sc-ion-picker-ios{top:116px;height:84px}@supports (inset-inline-start: 0){/*!@:host .picker-after*/.sc-ion-picker-ios-h .picker-after.sc-ion-picker-ios{inset-inline-start:0}}@supports not (inset-inline-start: 0){/*!@:host .picker-after*/.sc-ion-picker-ios-h .picker-after.sc-ion-picker-ios{left:0}/*!@:host-context([dir=rtl]) .picker-after*/[dir=rtl].sc-ion-picker-ios-h .picker-after.sc-ion-picker-ios,[dir=rtl] .sc-ion-picker-ios-h .picker-after.sc-ion-picker-ios{left:unset;right:unset;right:0}/*!@@supports selector(:dir(rtl))*/@supports .sc-ion-picker-ios selector(.sc-ion-picker-ios:dir(rtl)){.sc-ion-picker-ios-h:dir(rtl) .picker-after{left:unset;right:unset;right:0}}}/*!@:host .picker-highlight*/.sc-ion-picker-ios-h .picker-highlight.sc-ion-picker-ios{border-radius:8px;left:0;right:0;top:50%;bottom:0;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0;position:absolute;width:calc(100% - 16px);height:34px;-webkit-transform:translateY(-50%);transform:translateY(-50%);background:var(--wheel-highlight-background);z-index:-1}/*!@:host input*/.sc-ion-picker-ios-h input.sc-ion-picker-ios{position:absolute;top:0;left:0;right:0;bottom:0;width:100%;height:100%;margin:0;padding:0;border:0;outline:0;clip:rect(0 0 0 0);opacity:0;overflow:hidden;-webkit-appearance:none;-moz-appearance:none}/*!@:host ::slotted(ion-picker-column:first-of-type)*/.sc-ion-picker-ios-h .sc-ion-picker-ios-s>ion-picker-column:first-of-type{text-align:start}/*!@:host ::slotted(ion-picker-column:last-of-type)*/.sc-ion-picker-ios-h .sc-ion-picker-ios-s>ion-picker-column:last-of-type{text-align:end}/*!@:host ::slotted(ion-picker-column:only-child)*/.sc-ion-picker-ios-h .sc-ion-picker-ios-s>ion-picker-column:only-child{text-align:center}/*!@:host .picker-before*/.sc-ion-picker-ios-h .picker-before.sc-ion-picker-ios{background:-webkit-gradient(linear, left top, left bottom, color-stop(20%, rgba(var(--wheel-fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1)), to(rgba(var(--wheel-fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0.8)));background:linear-gradient(to bottom, rgba(var(--wheel-fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1) 20%, rgba(var(--wheel-fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0.8) 100%)}/*!@:host .picker-after*/.sc-ion-picker-ios-h .picker-after.sc-ion-picker-ios{background:-webkit-gradient(linear, left bottom, left top, color-stop(20%, rgba(var(--wheel-fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1)), to(rgba(var(--wheel-fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0.8)));background:linear-gradient(to top, rgba(var(--wheel-fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1) 20%, rgba(var(--wheel-fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0.8) 100%)}/*!@:host .picker-highlight*/.sc-ion-picker-ios-h .picker-highlight.sc-ion-picker-ios{background:var(--wheel-highlight-background, var(--ion-color-step-150, #eeeeef))}";
|
|
24511
24467
|
|
|
24512
|
-
const pickerMdCss = "
|
|
24468
|
+
const pickerMdCss$1 = "/*!@:host*/.sc-ion-picker-md-h{display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%;height:200px;direction:ltr;z-index:0}/*!@:host .picker-before,\n:host .picker-after*/.sc-ion-picker-md-h .picker-before.sc-ion-picker-md,.sc-ion-picker-md-h .picker-after.sc-ion-picker-md{position:absolute;width:100%;-webkit-transform:translateZ(0);transform:translateZ(0);z-index:1;pointer-events:none}/*!@:host .picker-before*/.sc-ion-picker-md-h .picker-before.sc-ion-picker-md{top:0;height:83px}@supports (inset-inline-start: 0){/*!@:host .picker-before*/.sc-ion-picker-md-h .picker-before.sc-ion-picker-md{inset-inline-start:0}}@supports not (inset-inline-start: 0){/*!@:host .picker-before*/.sc-ion-picker-md-h .picker-before.sc-ion-picker-md{left:0}/*!@:host-context([dir=rtl]) .picker-before*/[dir=rtl].sc-ion-picker-md-h .picker-before.sc-ion-picker-md,[dir=rtl] .sc-ion-picker-md-h .picker-before.sc-ion-picker-md{left:unset;right:unset;right:0}/*!@@supports selector(:dir(rtl))*/@supports .sc-ion-picker-md selector(.sc-ion-picker-md:dir(rtl)){.sc-ion-picker-md-h:dir(rtl) .picker-before{left:unset;right:unset;right:0}}}/*!@:host .picker-after*/.sc-ion-picker-md-h .picker-after.sc-ion-picker-md{top:116px;height:84px}@supports (inset-inline-start: 0){/*!@:host .picker-after*/.sc-ion-picker-md-h .picker-after.sc-ion-picker-md{inset-inline-start:0}}@supports not (inset-inline-start: 0){/*!@:host .picker-after*/.sc-ion-picker-md-h .picker-after.sc-ion-picker-md{left:0}/*!@:host-context([dir=rtl]) .picker-after*/[dir=rtl].sc-ion-picker-md-h .picker-after.sc-ion-picker-md,[dir=rtl] .sc-ion-picker-md-h .picker-after.sc-ion-picker-md{left:unset;right:unset;right:0}/*!@@supports selector(:dir(rtl))*/@supports .sc-ion-picker-md selector(.sc-ion-picker-md:dir(rtl)){.sc-ion-picker-md-h:dir(rtl) .picker-after{left:unset;right:unset;right:0}}}/*!@:host .picker-highlight*/.sc-ion-picker-md-h .picker-highlight.sc-ion-picker-md{border-radius:8px;left:0;right:0;top:50%;bottom:0;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0;position:absolute;width:calc(100% - 16px);height:34px;-webkit-transform:translateY(-50%);transform:translateY(-50%);background:var(--wheel-highlight-background);z-index:-1}/*!@:host input*/.sc-ion-picker-md-h input.sc-ion-picker-md{position:absolute;top:0;left:0;right:0;bottom:0;width:100%;height:100%;margin:0;padding:0;border:0;outline:0;clip:rect(0 0 0 0);opacity:0;overflow:hidden;-webkit-appearance:none;-moz-appearance:none}/*!@:host ::slotted(ion-picker-column:first-of-type)*/.sc-ion-picker-md-h .sc-ion-picker-md-s>ion-picker-column:first-of-type{text-align:start}/*!@:host ::slotted(ion-picker-column:last-of-type)*/.sc-ion-picker-md-h .sc-ion-picker-md-s>ion-picker-column:last-of-type{text-align:end}/*!@:host ::slotted(ion-picker-column:only-child)*/.sc-ion-picker-md-h .sc-ion-picker-md-s>ion-picker-column:only-child{text-align:center}/*!@:host .picker-before*/.sc-ion-picker-md-h .picker-before.sc-ion-picker-md{background:-webkit-gradient(linear, left top, left bottom, color-stop(20%, rgba(var(--wheel-fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1)), color-stop(90%, rgba(var(--wheel-fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0)));background:linear-gradient(to bottom, rgba(var(--wheel-fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1) 20%, rgba(var(--wheel-fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0) 90%)}/*!@:host .picker-after*/.sc-ion-picker-md-h .picker-after.sc-ion-picker-md{background:-webkit-gradient(linear, left bottom, left top, color-stop(30%, rgba(var(--wheel-fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1)), color-stop(90%, rgba(var(--wheel-fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0)));background:linear-gradient(to top, rgba(var(--wheel-fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1) 30%, rgba(var(--wheel-fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0) 90%)}";
|
|
24513
24469
|
|
|
24514
|
-
// TODO(FW-2832): types
|
|
24515
24470
|
/**
|
|
24516
24471
|
* @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.
|
|
24517
24472
|
*/
|
|
24518
|
-
class Picker {
|
|
24473
|
+
class Picker$1 {
|
|
24519
24474
|
constructor(hostRef) {
|
|
24520
24475
|
registerInstance(this, hostRef);
|
|
24521
|
-
this.
|
|
24522
|
-
this.
|
|
24523
|
-
this.
|
|
24524
|
-
|
|
24525
|
-
|
|
24526
|
-
|
|
24527
|
-
|
|
24528
|
-
|
|
24529
|
-
|
|
24530
|
-
|
|
24531
|
-
|
|
24532
|
-
|
|
24533
|
-
|
|
24476
|
+
this.ionInputModeChange = createEvent(this, "ionInputModeChange", 7);
|
|
24477
|
+
this.useInputMode = false;
|
|
24478
|
+
this.isInHighlightBounds = (ev) => {
|
|
24479
|
+
const { highlightEl } = this;
|
|
24480
|
+
if (!highlightEl) {
|
|
24481
|
+
return false;
|
|
24482
|
+
}
|
|
24483
|
+
const bbox = highlightEl.getBoundingClientRect();
|
|
24484
|
+
/**
|
|
24485
|
+
* Check to see if the user clicked
|
|
24486
|
+
* outside the bounds of the highlight.
|
|
24487
|
+
*/
|
|
24488
|
+
const outsideX = ev.clientX < bbox.left || ev.clientX > bbox.right;
|
|
24489
|
+
const outsideY = ev.clientY < bbox.top || ev.clientY > bbox.bottom;
|
|
24490
|
+
if (outsideX || outsideY) {
|
|
24491
|
+
return false;
|
|
24492
|
+
}
|
|
24493
|
+
return true;
|
|
24534
24494
|
};
|
|
24535
|
-
|
|
24536
|
-
|
|
24537
|
-
|
|
24538
|
-
|
|
24539
|
-
|
|
24495
|
+
/**
|
|
24496
|
+
* If we are no longer focused
|
|
24497
|
+
* on a picker column, then we should
|
|
24498
|
+
* exit input mode. An exception is made
|
|
24499
|
+
* for the input in the picker since having
|
|
24500
|
+
* that focused means we are still in input mode.
|
|
24501
|
+
*/
|
|
24502
|
+
this.onFocusOut = (ev) => {
|
|
24503
|
+
// TODO(FW-2832): type
|
|
24504
|
+
const { relatedTarget } = ev;
|
|
24505
|
+
if (!relatedTarget || (relatedTarget.tagName !== 'ION-PICKER-COLUMN' && relatedTarget !== this.inputEl)) {
|
|
24506
|
+
this.exitInputMode();
|
|
24540
24507
|
}
|
|
24541
24508
|
};
|
|
24542
|
-
this.presented = false;
|
|
24543
|
-
this.overlayIndex = undefined;
|
|
24544
|
-
this.delegate = undefined;
|
|
24545
|
-
this.hasController = false;
|
|
24546
|
-
this.keyboardClose = true;
|
|
24547
|
-
this.enterAnimation = undefined;
|
|
24548
|
-
this.leaveAnimation = undefined;
|
|
24549
|
-
this.buttons = [];
|
|
24550
|
-
this.columns = [];
|
|
24551
|
-
this.cssClass = undefined;
|
|
24552
|
-
this.duration = 0;
|
|
24553
|
-
this.showBackdrop = true;
|
|
24554
|
-
this.backdropDismiss = true;
|
|
24555
|
-
this.animated = true;
|
|
24556
|
-
this.htmlAttributes = undefined;
|
|
24557
|
-
this.isOpen = false;
|
|
24558
|
-
this.trigger = undefined;
|
|
24559
|
-
}
|
|
24560
|
-
onIsOpenChange(newValue, oldValue) {
|
|
24561
|
-
if (newValue === true && oldValue === false) {
|
|
24562
|
-
this.present();
|
|
24563
|
-
}
|
|
24564
|
-
else if (newValue === false && oldValue === true) {
|
|
24565
|
-
this.dismiss();
|
|
24566
|
-
}
|
|
24567
|
-
}
|
|
24568
|
-
triggerChanged() {
|
|
24569
|
-
const { trigger, el, triggerController } = this;
|
|
24570
|
-
if (trigger) {
|
|
24571
|
-
triggerController.addClickListener(el, trigger);
|
|
24572
|
-
}
|
|
24573
|
-
}
|
|
24574
|
-
connectedCallback() {
|
|
24575
|
-
prepareOverlay(this.el);
|
|
24576
|
-
this.triggerChanged();
|
|
24577
|
-
}
|
|
24578
|
-
disconnectedCallback() {
|
|
24579
|
-
this.triggerController.removeClickListener();
|
|
24580
|
-
}
|
|
24581
|
-
componentWillLoad() {
|
|
24582
|
-
setOverlayId(this.el);
|
|
24583
|
-
}
|
|
24584
|
-
componentDidLoad() {
|
|
24585
|
-
printIonWarning('ion-picker-legacy and ion-picker-legacy-column have been deprecated in favor of the ion-picker and ion-picker-column components. These new components display inline with your page content allowing for more presentation flexibility than before.', this.el);
|
|
24586
24509
|
/**
|
|
24587
|
-
*
|
|
24588
|
-
*
|
|
24510
|
+
* When picker columns receive focus
|
|
24511
|
+
* the parent picker needs to determine
|
|
24512
|
+
* whether to enter/exit input mode.
|
|
24589
24513
|
*/
|
|
24590
|
-
|
|
24591
|
-
|
|
24592
|
-
|
|
24593
|
-
|
|
24594
|
-
|
|
24595
|
-
|
|
24596
|
-
|
|
24597
|
-
|
|
24598
|
-
|
|
24599
|
-
|
|
24600
|
-
|
|
24601
|
-
if (this.duration > 0) {
|
|
24602
|
-
this.durationTimeout = setTimeout(() => this.dismiss(), this.duration);
|
|
24603
|
-
}
|
|
24604
|
-
unlock();
|
|
24605
|
-
}
|
|
24606
|
-
/**
|
|
24607
|
-
* Dismiss the picker overlay after it has been presented.
|
|
24608
|
-
*
|
|
24609
|
-
* @param data Any data to emit in the dismiss events.
|
|
24610
|
-
* @param role The role of the element that is dismissing the picker.
|
|
24611
|
-
* This can be useful in a button handler for determining which button was
|
|
24612
|
-
* clicked to dismiss the picker.
|
|
24613
|
-
* Some examples include: ``"cancel"`, `"destructive"`, "selected"`, and `"backdrop"`.
|
|
24614
|
-
*/
|
|
24615
|
-
async dismiss(data, role) {
|
|
24616
|
-
const unlock = await this.lockController.lock();
|
|
24617
|
-
if (this.durationTimeout) {
|
|
24618
|
-
clearTimeout(this.durationTimeout);
|
|
24619
|
-
}
|
|
24620
|
-
const dismissed = await dismiss(this, data, role, 'pickerLeave', iosLeaveAnimation$2, iosLeaveAnimation$2);
|
|
24621
|
-
if (dismissed) {
|
|
24622
|
-
this.delegateController.removeViewFromDom();
|
|
24623
|
-
}
|
|
24624
|
-
unlock();
|
|
24625
|
-
return dismissed;
|
|
24626
|
-
}
|
|
24627
|
-
/**
|
|
24628
|
-
* Returns a promise that resolves when the picker did dismiss.
|
|
24629
|
-
*/
|
|
24630
|
-
onDidDismiss() {
|
|
24631
|
-
return eventMethod(this.el, 'ionPickerDidDismiss');
|
|
24632
|
-
}
|
|
24633
|
-
/**
|
|
24634
|
-
* Returns a promise that resolves when the picker will dismiss.
|
|
24635
|
-
*/
|
|
24636
|
-
onWillDismiss() {
|
|
24637
|
-
return eventMethod(this.el, 'ionPickerWillDismiss');
|
|
24638
|
-
}
|
|
24639
|
-
/**
|
|
24640
|
-
* Get the column that matches the specified name.
|
|
24641
|
-
*
|
|
24642
|
-
* @param name The name of the column.
|
|
24643
|
-
*/
|
|
24644
|
-
getColumn(name) {
|
|
24645
|
-
return Promise.resolve(this.columns.find((column) => column.name === name));
|
|
24646
|
-
}
|
|
24647
|
-
async buttonClick(button) {
|
|
24648
|
-
const role = button.role;
|
|
24649
|
-
if (isCancel(role)) {
|
|
24650
|
-
return this.dismiss(undefined, role);
|
|
24651
|
-
}
|
|
24652
|
-
const shouldDismiss = await this.callButtonHandler(button);
|
|
24653
|
-
if (shouldDismiss) {
|
|
24654
|
-
return this.dismiss(this.getSelected(), button.role);
|
|
24655
|
-
}
|
|
24656
|
-
return Promise.resolve();
|
|
24657
|
-
}
|
|
24658
|
-
async callButtonHandler(button) {
|
|
24659
|
-
if (button) {
|
|
24660
|
-
// a handler has been provided, execute it
|
|
24661
|
-
// pass the handler the values from the inputs
|
|
24662
|
-
const rtn = await safeCall(button.handler, this.getSelected());
|
|
24663
|
-
if (rtn === false) {
|
|
24664
|
-
// if the return value of the handler is false then do not dismiss
|
|
24665
|
-
return false;
|
|
24514
|
+
this.onFocusIn = (ev) => {
|
|
24515
|
+
// TODO(FW-2832): type
|
|
24516
|
+
const { target } = ev;
|
|
24517
|
+
/**
|
|
24518
|
+
* Due to browser differences in how/when focus
|
|
24519
|
+
* is dispatched on certain elements, we need to
|
|
24520
|
+
* make sure that this function only ever runs when
|
|
24521
|
+
* focusing a picker column.
|
|
24522
|
+
*/
|
|
24523
|
+
if (target.tagName !== 'ION-PICKER-COLUMN') {
|
|
24524
|
+
return;
|
|
24666
24525
|
}
|
|
24667
|
-
|
|
24668
|
-
|
|
24669
|
-
|
|
24670
|
-
|
|
24671
|
-
|
|
24672
|
-
|
|
24673
|
-
|
|
24674
|
-
|
|
24675
|
-
|
|
24676
|
-
|
|
24677
|
-
|
|
24678
|
-
|
|
24679
|
-
|
|
24680
|
-
|
|
24681
|
-
|
|
24682
|
-
|
|
24683
|
-
|
|
24684
|
-
|
|
24685
|
-
return (hAsync(Host, Object.assign({ "aria-modal": "true", tabindex: "-1" }, htmlAttributes, { style: {
|
|
24686
|
-
zIndex: `${20000 + this.overlayIndex}`,
|
|
24687
|
-
}, class: Object.assign({ [mode]: true,
|
|
24688
|
-
// Used internally for styling
|
|
24689
|
-
[`picker-${mode}`]: true, 'overlay-hidden': true }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonPickerWillDismiss: this.dispatchCancelHandler }), hAsync("ion-backdrop", { visible: this.showBackdrop, tappable: this.backdropDismiss }), hAsync("div", { tabindex: "0" }), hAsync("div", { class: "picker-wrapper ion-overlay-wrapper", role: "dialog" }, hAsync("div", { class: "picker-toolbar" }, this.buttons.map((b) => (hAsync("div", { class: buttonWrapperClass(b) }, hAsync("button", { type: "button", onClick: () => this.buttonClick(b), class: buttonClass$1(b) }, b.text))))), hAsync("div", { class: "picker-columns" }, hAsync("div", { class: "picker-above-highlight" }), this.presented && this.columns.map((c) => hAsync("ion-picker-legacy-column", { col: c })), hAsync("div", { class: "picker-below-highlight" }))), hAsync("div", { tabindex: "0" })));
|
|
24690
|
-
}
|
|
24691
|
-
get el() { return getElement(this); }
|
|
24692
|
-
static get watchers() { return {
|
|
24693
|
-
"isOpen": ["onIsOpenChange"],
|
|
24694
|
-
"trigger": ["triggerChanged"]
|
|
24695
|
-
}; }
|
|
24696
|
-
static get style() { return {
|
|
24697
|
-
ios: pickerIosCss,
|
|
24698
|
-
md: pickerMdCss
|
|
24699
|
-
}; }
|
|
24700
|
-
static get cmpMeta() { return {
|
|
24701
|
-
"$flags$": 34,
|
|
24702
|
-
"$tagName$": "ion-picker-legacy",
|
|
24703
|
-
"$members$": {
|
|
24704
|
-
"overlayIndex": [2, "overlay-index"],
|
|
24705
|
-
"delegate": [16],
|
|
24706
|
-
"hasController": [4, "has-controller"],
|
|
24707
|
-
"keyboardClose": [4, "keyboard-close"],
|
|
24708
|
-
"enterAnimation": [16],
|
|
24709
|
-
"leaveAnimation": [16],
|
|
24710
|
-
"buttons": [16],
|
|
24711
|
-
"columns": [16],
|
|
24712
|
-
"cssClass": [1, "css-class"],
|
|
24713
|
-
"duration": [2],
|
|
24714
|
-
"showBackdrop": [4, "show-backdrop"],
|
|
24715
|
-
"backdropDismiss": [4, "backdrop-dismiss"],
|
|
24716
|
-
"animated": [4],
|
|
24717
|
-
"htmlAttributes": [16],
|
|
24718
|
-
"isOpen": [4, "is-open"],
|
|
24719
|
-
"trigger": [1],
|
|
24720
|
-
"presented": [32],
|
|
24721
|
-
"present": [64],
|
|
24722
|
-
"dismiss": [64],
|
|
24723
|
-
"onDidDismiss": [64],
|
|
24724
|
-
"onWillDismiss": [64],
|
|
24725
|
-
"getColumn": [64]
|
|
24726
|
-
},
|
|
24727
|
-
"$listeners$": undefined,
|
|
24728
|
-
"$lazyBundleId$": "-",
|
|
24729
|
-
"$attrsToReflect$": []
|
|
24730
|
-
}; }
|
|
24731
|
-
}
|
|
24732
|
-
const buttonWrapperClass = (button) => {
|
|
24733
|
-
return {
|
|
24734
|
-
[`picker-toolbar-${button.role}`]: button.role !== undefined,
|
|
24735
|
-
'picker-toolbar-button': true,
|
|
24736
|
-
};
|
|
24737
|
-
};
|
|
24738
|
-
const buttonClass$1 = (button) => {
|
|
24739
|
-
return Object.assign({ 'picker-button': true, 'ion-activatable': true }, getClassMap(button.cssClass));
|
|
24740
|
-
};
|
|
24741
|
-
|
|
24742
|
-
const pickerColumnIosCss = ".picker-col{display:-ms-flexbox;display:flex;position:relative;-ms-flex:1;flex:1;-ms-flex-pack:center;justify-content:center;height:100%;-webkit-box-sizing:content-box;box-sizing:content-box;contain:content}.picker-opts{position:relative;-ms-flex:1;flex:1;max-width:100%}.picker-opt{top:0;display:block;position:absolute;width:100%;border:0;text-align:center;text-overflow:ellipsis;white-space:nowrap;contain:strict;overflow:hidden;will-change:transform}@supports (inset-inline-start: 0){.picker-opt{inset-inline-start:0}}@supports not (inset-inline-start: 0){.picker-opt{left:0}:host-context([dir=rtl]) .picker-opt{left:unset;right:unset;right:0}[dir=rtl] .picker-opt{left:unset;right:unset;right:0}@supports selector(:dir(rtl)){.picker-opt:dir(rtl){left:unset;right:unset;right:0}}}.picker-opt.picker-opt-disabled{pointer-events:none}.picker-opt-disabled{opacity:0}.picker-opts-left{-ms-flex-pack:start;justify-content:flex-start}.picker-opts-right{-ms-flex-pack:end;justify-content:flex-end}.picker-opt:active,.picker-opt:focus{outline:none}.picker-prefix{position:relative;-ms-flex:1;flex:1;text-align:end;white-space:nowrap}.picker-suffix{position:relative;-ms-flex:1;flex:1;text-align:start;white-space:nowrap}.picker-col{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:4px;padding-inline-end:4px;padding-top:0;padding-bottom:0;-webkit-transform-style:preserve-3d;transform-style:preserve-3d}.picker-prefix,.picker-suffix,.picker-opts{top:77px;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;color:inherit;font-size:20px;line-height:42px;pointer-events:none}.picker-opt{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-transform-origin:center center;transform-origin:center center;height:46px;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-transition-timing-function:ease-out;transition-timing-function:ease-out;background:transparent;color:inherit;font-size:20px;line-height:42px;-webkit-backface-visibility:hidden;backface-visibility:hidden;pointer-events:auto}:host-context([dir=rtl]) .picker-opt{-webkit-transform-origin:calc(100% - center) center;transform-origin:calc(100% - center) center}[dir=rtl] .picker-opt{-webkit-transform-origin:calc(100% - center) center;transform-origin:calc(100% - center) center}@supports selector(:dir(rtl)){.picker-opt:dir(rtl){-webkit-transform-origin:calc(100% - center) center;transform-origin:calc(100% - center) center}}";
|
|
24743
|
-
|
|
24744
|
-
const pickerColumnMdCss = ".picker-col{display:-ms-flexbox;display:flex;position:relative;-ms-flex:1;flex:1;-ms-flex-pack:center;justify-content:center;height:100%;-webkit-box-sizing:content-box;box-sizing:content-box;contain:content}.picker-opts{position:relative;-ms-flex:1;flex:1;max-width:100%}.picker-opt{top:0;display:block;position:absolute;width:100%;border:0;text-align:center;text-overflow:ellipsis;white-space:nowrap;contain:strict;overflow:hidden;will-change:transform}@supports (inset-inline-start: 0){.picker-opt{inset-inline-start:0}}@supports not (inset-inline-start: 0){.picker-opt{left:0}:host-context([dir=rtl]) .picker-opt{left:unset;right:unset;right:0}[dir=rtl] .picker-opt{left:unset;right:unset;right:0}@supports selector(:dir(rtl)){.picker-opt:dir(rtl){left:unset;right:unset;right:0}}}.picker-opt.picker-opt-disabled{pointer-events:none}.picker-opt-disabled{opacity:0}.picker-opts-left{-ms-flex-pack:start;justify-content:flex-start}.picker-opts-right{-ms-flex-pack:end;justify-content:flex-end}.picker-opt:active,.picker-opt:focus{outline:none}.picker-prefix{position:relative;-ms-flex:1;flex:1;text-align:end;white-space:nowrap}.picker-suffix{position:relative;-ms-flex:1;flex:1;text-align:start;white-space:nowrap}.picker-col{-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;padding-top:0;padding-bottom:0;-webkit-transform-style:preserve-3d;transform-style:preserve-3d}.picker-prefix,.picker-suffix,.picker-opts{top:77px;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;color:inherit;font-size:22px;line-height:42px;pointer-events:none}.picker-opt{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;height:43px;-webkit-transition-timing-function:ease-out;transition-timing-function:ease-out;background:transparent;color:inherit;font-size:22px;line-height:42px;-webkit-backface-visibility:hidden;backface-visibility:hidden;pointer-events:auto}.picker-prefix,.picker-suffix,.picker-opt.picker-opt-selected{color:var(--ion-color-primary, #3880ff)}";
|
|
24745
|
-
|
|
24746
|
-
/**
|
|
24747
|
-
* @internal
|
|
24748
|
-
*/
|
|
24749
|
-
class PickerColumnCmp {
|
|
24750
|
-
constructor(hostRef) {
|
|
24751
|
-
registerInstance(this, hostRef);
|
|
24752
|
-
this.ionPickerColChange = createEvent(this, "ionPickerColChange", 7);
|
|
24753
|
-
this.optHeight = 0;
|
|
24754
|
-
this.rotateFactor = 0;
|
|
24755
|
-
this.scaleFactor = 1;
|
|
24756
|
-
this.velocity = 0;
|
|
24757
|
-
this.y = 0;
|
|
24758
|
-
this.noAnimate = true;
|
|
24759
|
-
// `colDidChange` is a flag that gets set when the column is changed
|
|
24760
|
-
// dynamically. When this flag is set, the column will refresh
|
|
24761
|
-
// after the component re-renders to incorporate the new column data.
|
|
24762
|
-
// This is necessary because `this.refresh` queries for the option elements,
|
|
24763
|
-
// so it needs to wait for the latest elements to be available in the DOM.
|
|
24764
|
-
// Ex: column is created with 3 options. User updates the column data
|
|
24765
|
-
// to have 5 options. The column will still think it only has 3 options.
|
|
24766
|
-
this.colDidChange = false;
|
|
24767
|
-
this.col = undefined;
|
|
24768
|
-
}
|
|
24769
|
-
colChanged() {
|
|
24770
|
-
this.colDidChange = true;
|
|
24771
|
-
}
|
|
24772
|
-
async connectedCallback() {
|
|
24773
|
-
let pickerRotateFactor = 0;
|
|
24774
|
-
let pickerScaleFactor = 0.81;
|
|
24775
|
-
const mode = getIonMode$1(this);
|
|
24776
|
-
if (mode === 'ios') {
|
|
24777
|
-
pickerRotateFactor = -0.46;
|
|
24778
|
-
pickerScaleFactor = 1;
|
|
24779
|
-
}
|
|
24780
|
-
this.rotateFactor = pickerRotateFactor;
|
|
24781
|
-
this.scaleFactor = pickerScaleFactor;
|
|
24782
|
-
this.gesture = (await Promise.resolve().then(function () { return index; })).createGesture({
|
|
24783
|
-
el: this.el,
|
|
24784
|
-
gestureName: 'picker-swipe',
|
|
24785
|
-
gesturePriority: 100,
|
|
24786
|
-
threshold: 0,
|
|
24787
|
-
passive: false,
|
|
24788
|
-
onStart: (ev) => this.onStart(ev),
|
|
24789
|
-
onMove: (ev) => this.onMove(ev),
|
|
24790
|
-
onEnd: (ev) => this.onEnd(ev),
|
|
24791
|
-
});
|
|
24792
|
-
this.gesture.enable();
|
|
24793
|
-
// Options have not been initialized yet
|
|
24794
|
-
// Animation must be disabled through the `noAnimate` flag
|
|
24795
|
-
// Otherwise, the options will render
|
|
24796
|
-
// at the top of the column and transition down
|
|
24797
|
-
this.tmrId = setTimeout(() => {
|
|
24798
|
-
this.noAnimate = false;
|
|
24799
|
-
// After initialization, `refresh()` will be called
|
|
24800
|
-
// At this point, animation will be enabled. The options will
|
|
24801
|
-
// animate as they are being selected.
|
|
24802
|
-
this.refresh(true);
|
|
24803
|
-
}, 250);
|
|
24804
|
-
}
|
|
24805
|
-
componentDidLoad() {
|
|
24806
|
-
this.onDomChange();
|
|
24807
|
-
}
|
|
24808
|
-
componentDidUpdate() {
|
|
24809
|
-
// Options may have changed since last update.
|
|
24810
|
-
if (this.colDidChange) {
|
|
24811
|
-
// Animation must be disabled through the `onDomChange` parameter.
|
|
24812
|
-
// Otherwise, the recently added options will render
|
|
24813
|
-
// at the top of the column and transition down
|
|
24814
|
-
this.onDomChange(true, false);
|
|
24815
|
-
this.colDidChange = false;
|
|
24816
|
-
}
|
|
24817
|
-
}
|
|
24818
|
-
disconnectedCallback() {
|
|
24819
|
-
if (this.rafId !== undefined)
|
|
24820
|
-
cancelAnimationFrame(this.rafId);
|
|
24821
|
-
if (this.tmrId)
|
|
24822
|
-
clearTimeout(this.tmrId);
|
|
24823
|
-
if (this.gesture) {
|
|
24824
|
-
this.gesture.destroy();
|
|
24825
|
-
this.gesture = undefined;
|
|
24826
|
-
}
|
|
24827
|
-
}
|
|
24828
|
-
emitColChange() {
|
|
24829
|
-
this.ionPickerColChange.emit(this.col);
|
|
24830
|
-
}
|
|
24831
|
-
setSelected(selectedIndex, duration) {
|
|
24832
|
-
// if there is a selected index, then figure out it's y position
|
|
24833
|
-
// if there isn't a selected index, then just use the top y position
|
|
24834
|
-
const y = selectedIndex > -1 ? -(selectedIndex * this.optHeight) : 0;
|
|
24835
|
-
this.velocity = 0;
|
|
24836
|
-
// set what y position we're at
|
|
24837
|
-
if (this.rafId !== undefined)
|
|
24838
|
-
cancelAnimationFrame(this.rafId);
|
|
24839
|
-
this.update(y, duration, true);
|
|
24840
|
-
this.emitColChange();
|
|
24841
|
-
}
|
|
24842
|
-
update(y, duration, saveY) {
|
|
24843
|
-
if (!this.optsEl) {
|
|
24844
|
-
return;
|
|
24845
|
-
}
|
|
24846
|
-
// ensure we've got a good round number :)
|
|
24847
|
-
let translateY = 0;
|
|
24848
|
-
let translateZ = 0;
|
|
24849
|
-
const { col, rotateFactor } = this;
|
|
24850
|
-
const prevSelected = col.selectedIndex;
|
|
24851
|
-
const selectedIndex = (col.selectedIndex = this.indexForY(-y));
|
|
24852
|
-
const durationStr = duration === 0 ? '' : duration + 'ms';
|
|
24853
|
-
const scaleStr = `scale(${this.scaleFactor})`;
|
|
24854
|
-
const children = this.optsEl.children;
|
|
24855
|
-
for (let i = 0; i < children.length; i++) {
|
|
24856
|
-
const button = children[i];
|
|
24857
|
-
const opt = col.options[i];
|
|
24858
|
-
const optOffset = i * this.optHeight + y;
|
|
24859
|
-
let transform = '';
|
|
24860
|
-
if (rotateFactor !== 0) {
|
|
24861
|
-
const rotateX = optOffset * rotateFactor;
|
|
24862
|
-
if (Math.abs(rotateX) <= 90) {
|
|
24863
|
-
translateY = 0;
|
|
24864
|
-
translateZ = 90;
|
|
24865
|
-
transform = `rotateX(${rotateX}deg) `;
|
|
24526
|
+
/**
|
|
24527
|
+
* If we have actionOnClick
|
|
24528
|
+
* then this means the user focused
|
|
24529
|
+
* a picker column via mouse or
|
|
24530
|
+
* touch (i.e. a PointerEvent). As a result,
|
|
24531
|
+
* we should not enter/exit input mode
|
|
24532
|
+
* until the click event has fired, which happens
|
|
24533
|
+
* after the `focusin` event.
|
|
24534
|
+
*
|
|
24535
|
+
* Otherwise, the user likely focused
|
|
24536
|
+
* the column using their keyboard and
|
|
24537
|
+
* we should enter/exit input mode automatically.
|
|
24538
|
+
*/
|
|
24539
|
+
if (!this.actionOnClick) {
|
|
24540
|
+
const columnEl = target;
|
|
24541
|
+
const allowInput = columnEl.numericInput;
|
|
24542
|
+
if (allowInput) {
|
|
24543
|
+
this.enterInputMode(columnEl, false);
|
|
24866
24544
|
}
|
|
24867
24545
|
else {
|
|
24868
|
-
|
|
24546
|
+
this.exitInputMode();
|
|
24547
|
+
}
|
|
24548
|
+
}
|
|
24549
|
+
};
|
|
24550
|
+
/**
|
|
24551
|
+
* On click we need to run an actionOnClick
|
|
24552
|
+
* function that has been set in onPointerDown
|
|
24553
|
+
* so that we enter/exit input mode correctly.
|
|
24554
|
+
*/
|
|
24555
|
+
this.onClick = () => {
|
|
24556
|
+
const { actionOnClick } = this;
|
|
24557
|
+
if (actionOnClick) {
|
|
24558
|
+
actionOnClick();
|
|
24559
|
+
this.actionOnClick = undefined;
|
|
24560
|
+
}
|
|
24561
|
+
};
|
|
24562
|
+
/**
|
|
24563
|
+
* Clicking a column also focuses the column on
|
|
24564
|
+
* certain browsers, so we use onPointerDown
|
|
24565
|
+
* to tell the onFocusIn function that users
|
|
24566
|
+
* are trying to click the column rather than
|
|
24567
|
+
* focus the column using the keyboard. When the
|
|
24568
|
+
* user completes the click, the onClick function
|
|
24569
|
+
* runs and runs the actionOnClick callback.
|
|
24570
|
+
*/
|
|
24571
|
+
this.onPointerDown = (ev) => {
|
|
24572
|
+
const { useInputMode, inputModeColumn, el } = this;
|
|
24573
|
+
if (this.isInHighlightBounds(ev)) {
|
|
24574
|
+
/**
|
|
24575
|
+
* If we were already in
|
|
24576
|
+
* input mode, then we should determine
|
|
24577
|
+
* if we tapped a particular column and
|
|
24578
|
+
* should switch to input mode for
|
|
24579
|
+
* that specific column.
|
|
24580
|
+
*/
|
|
24581
|
+
if (useInputMode) {
|
|
24582
|
+
/**
|
|
24583
|
+
* If we tapped a picker column
|
|
24584
|
+
* then we should either switch to input
|
|
24585
|
+
* mode for that column or all columns.
|
|
24586
|
+
* Otherwise we should exit input mode
|
|
24587
|
+
* since we just tapped the highlight and
|
|
24588
|
+
* not a column.
|
|
24589
|
+
*/
|
|
24590
|
+
if (ev.target.tagName === 'ION-PICKER-COLUMN') {
|
|
24591
|
+
/**
|
|
24592
|
+
* If user taps 2 different columns
|
|
24593
|
+
* then we should just switch to input mode
|
|
24594
|
+
* for the new column rather than switching to
|
|
24595
|
+
* input mode for all columns.
|
|
24596
|
+
*/
|
|
24597
|
+
if (inputModeColumn && inputModeColumn === ev.target) {
|
|
24598
|
+
this.actionOnClick = () => {
|
|
24599
|
+
this.enterInputMode();
|
|
24600
|
+
};
|
|
24601
|
+
}
|
|
24602
|
+
else {
|
|
24603
|
+
this.actionOnClick = () => {
|
|
24604
|
+
this.enterInputMode(ev.target);
|
|
24605
|
+
};
|
|
24606
|
+
}
|
|
24607
|
+
}
|
|
24608
|
+
else {
|
|
24609
|
+
this.actionOnClick = () => {
|
|
24610
|
+
this.exitInputMode();
|
|
24611
|
+
};
|
|
24612
|
+
}
|
|
24613
|
+
/**
|
|
24614
|
+
* If we were not already in
|
|
24615
|
+
* input mode, then we should
|
|
24616
|
+
* enter input mode for all columns.
|
|
24617
|
+
*/
|
|
24618
|
+
}
|
|
24619
|
+
else {
|
|
24620
|
+
/**
|
|
24621
|
+
* If there is only 1 numeric input column
|
|
24622
|
+
* then we should skip multi column input.
|
|
24623
|
+
*/
|
|
24624
|
+
const columns = el.querySelectorAll('ion-picker-column.picker-column-numeric-input');
|
|
24625
|
+
const columnEl = columns.length === 1 ? ev.target : undefined;
|
|
24626
|
+
this.actionOnClick = () => {
|
|
24627
|
+
this.enterInputMode(columnEl);
|
|
24628
|
+
};
|
|
24629
|
+
}
|
|
24630
|
+
return;
|
|
24631
|
+
}
|
|
24632
|
+
this.actionOnClick = () => {
|
|
24633
|
+
this.exitInputMode();
|
|
24634
|
+
};
|
|
24635
|
+
};
|
|
24636
|
+
/**
|
|
24637
|
+
* Enters input mode to allow
|
|
24638
|
+
* for text entry of numeric values.
|
|
24639
|
+
* If on mobile, we focus a hidden input
|
|
24640
|
+
* field so that the on screen keyboard
|
|
24641
|
+
* is brought up. When tabbing using a
|
|
24642
|
+
* keyboard, picker columns receive an outline
|
|
24643
|
+
* to indicate they are focused. As a result,
|
|
24644
|
+
* we should not focus the hidden input as it
|
|
24645
|
+
* would cause the outline to go away, preventing
|
|
24646
|
+
* users from having any visual indication of which
|
|
24647
|
+
* column is focused.
|
|
24648
|
+
*/
|
|
24649
|
+
this.enterInputMode = (columnEl, focusInput = true) => {
|
|
24650
|
+
const { inputEl, el } = this;
|
|
24651
|
+
if (!inputEl) {
|
|
24652
|
+
return;
|
|
24653
|
+
}
|
|
24654
|
+
/**
|
|
24655
|
+
* Only active input mode if there is at
|
|
24656
|
+
* least one column that accepts numeric input.
|
|
24657
|
+
*/
|
|
24658
|
+
const hasInputColumn = el.querySelector('ion-picker-column.picker-column-numeric-input');
|
|
24659
|
+
if (!hasInputColumn) {
|
|
24660
|
+
return;
|
|
24661
|
+
}
|
|
24662
|
+
/**
|
|
24663
|
+
* If columnEl is undefined then
|
|
24664
|
+
* it is assumed that all numeric pickers
|
|
24665
|
+
* are eligible for text entry.
|
|
24666
|
+
* (i.e. hour and minute columns)
|
|
24667
|
+
*/
|
|
24668
|
+
this.useInputMode = true;
|
|
24669
|
+
this.inputModeColumn = columnEl;
|
|
24670
|
+
/**
|
|
24671
|
+
* Users with a keyboard and mouse can
|
|
24672
|
+
* activate input mode where the input is
|
|
24673
|
+
* focused as well as when it is not focused,
|
|
24674
|
+
* so we need to make sure we clean up any
|
|
24675
|
+
* old listeners.
|
|
24676
|
+
*/
|
|
24677
|
+
if (focusInput) {
|
|
24678
|
+
if (this.destroyKeypressListener) {
|
|
24679
|
+
this.destroyKeypressListener();
|
|
24680
|
+
this.destroyKeypressListener = undefined;
|
|
24869
24681
|
}
|
|
24682
|
+
inputEl.focus();
|
|
24870
24683
|
}
|
|
24871
24684
|
else {
|
|
24872
|
-
|
|
24873
|
-
|
|
24685
|
+
el.addEventListener('keypress', this.onKeyPress);
|
|
24686
|
+
this.destroyKeypressListener = () => {
|
|
24687
|
+
el.removeEventListener('keypress', this.onKeyPress);
|
|
24688
|
+
};
|
|
24874
24689
|
}
|
|
24875
|
-
|
|
24876
|
-
|
|
24877
|
-
|
|
24878
|
-
|
|
24690
|
+
this.emitInputModeChange();
|
|
24691
|
+
};
|
|
24692
|
+
this.onKeyPress = (ev) => {
|
|
24693
|
+
const { inputEl } = this;
|
|
24694
|
+
if (!inputEl) {
|
|
24695
|
+
return;
|
|
24879
24696
|
}
|
|
24880
|
-
|
|
24881
|
-
|
|
24882
|
-
|
|
24883
|
-
|
|
24697
|
+
const parsedValue = parseInt(ev.key, 10);
|
|
24698
|
+
/**
|
|
24699
|
+
* Only numbers should be allowed
|
|
24700
|
+
*/
|
|
24701
|
+
if (!Number.isNaN(parsedValue)) {
|
|
24702
|
+
inputEl.value += ev.key;
|
|
24703
|
+
this.onInputChange();
|
|
24884
24704
|
}
|
|
24885
|
-
|
|
24886
|
-
|
|
24887
|
-
|
|
24705
|
+
};
|
|
24706
|
+
this.selectSingleColumn = () => {
|
|
24707
|
+
const { inputEl, inputModeColumn, singleColumnSearchTimeout } = this;
|
|
24708
|
+
if (!inputEl || !inputModeColumn) {
|
|
24709
|
+
return;
|
|
24710
|
+
}
|
|
24711
|
+
const values = inputModeColumn.items.filter((item) => item.disabled !== true);
|
|
24712
|
+
/**
|
|
24713
|
+
* If users pause for a bit, the search
|
|
24714
|
+
* value should be reset similar to how a
|
|
24715
|
+
* <select> behaves. So typing "34", waiting,
|
|
24716
|
+
* then typing "5" should select "05".
|
|
24717
|
+
*/
|
|
24718
|
+
if (singleColumnSearchTimeout) {
|
|
24719
|
+
clearTimeout(singleColumnSearchTimeout);
|
|
24720
|
+
}
|
|
24721
|
+
this.singleColumnSearchTimeout = setTimeout(() => {
|
|
24722
|
+
inputEl.value = '';
|
|
24723
|
+
this.singleColumnSearchTimeout = undefined;
|
|
24724
|
+
}, 1000);
|
|
24725
|
+
/**
|
|
24726
|
+
* For values that are longer than 2 digits long
|
|
24727
|
+
* we should shift the value over 1 character
|
|
24728
|
+
* to the left. So typing "456" would result in "56".
|
|
24729
|
+
* TODO: If we want to support more than just
|
|
24730
|
+
* time entry, we should update this value to be
|
|
24731
|
+
* the max length of all of the picker items.
|
|
24732
|
+
*/
|
|
24733
|
+
if (inputEl.value.length >= 3) {
|
|
24734
|
+
const startIndex = inputEl.value.length - 2;
|
|
24735
|
+
const newString = inputEl.value.substring(startIndex);
|
|
24736
|
+
inputEl.value = newString;
|
|
24737
|
+
this.selectSingleColumn();
|
|
24738
|
+
return;
|
|
24739
|
+
}
|
|
24740
|
+
/**
|
|
24741
|
+
* Checking the value of the input gets priority
|
|
24742
|
+
* first. For example, if the value of the input
|
|
24743
|
+
* is "1" and we entered "2", then the complete value
|
|
24744
|
+
* is "12" and we should select hour 12.
|
|
24745
|
+
*
|
|
24746
|
+
* Regex removes any leading zeros from values like "02",
|
|
24747
|
+
* but it keeps a single zero if there are only zeros in the string.
|
|
24748
|
+
* 0+(?=[1-9]) --> Match 1 or more zeros that are followed by 1-9
|
|
24749
|
+
* 0+(?=0$) --> Match 1 or more zeros that must be followed by one 0 and end.
|
|
24750
|
+
*/
|
|
24751
|
+
const findItemFromCompleteValue = values.find(({ text }) => {
|
|
24752
|
+
const parsedText = text.replace(/^0+(?=[1-9])|0+(?=0$)/, '');
|
|
24753
|
+
return parsedText === inputEl.value;
|
|
24754
|
+
});
|
|
24755
|
+
if (findItemFromCompleteValue) {
|
|
24756
|
+
inputModeColumn.setValue(findItemFromCompleteValue.value);
|
|
24757
|
+
return;
|
|
24758
|
+
}
|
|
24759
|
+
/**
|
|
24760
|
+
* If we typed "56" to get minute 56, then typed "7",
|
|
24761
|
+
* we should select "07" as "567" is not a valid minute.
|
|
24762
|
+
*/
|
|
24763
|
+
if (inputEl.value.length === 2) {
|
|
24764
|
+
const changedCharacter = inputEl.value.substring(inputEl.value.length - 1);
|
|
24765
|
+
inputEl.value = changedCharacter;
|
|
24766
|
+
this.selectSingleColumn();
|
|
24767
|
+
}
|
|
24768
|
+
};
|
|
24769
|
+
/**
|
|
24770
|
+
* Searches a list of column items for a particular
|
|
24771
|
+
* value. This is currently used for numeric values.
|
|
24772
|
+
* The zeroBehavior can be set to account for leading
|
|
24773
|
+
* or trailing zeros when looking at the item text.
|
|
24774
|
+
*/
|
|
24775
|
+
this.searchColumn = (colEl, value, zeroBehavior = 'start') => {
|
|
24776
|
+
const behavior = zeroBehavior === 'start' ? /^0+/ : /0$/;
|
|
24777
|
+
const item = colEl.items.find(({ text, disabled }) => disabled !== true && text.replace(behavior, '') === value);
|
|
24778
|
+
if (item) {
|
|
24779
|
+
colEl.setValue(item.value);
|
|
24780
|
+
}
|
|
24781
|
+
};
|
|
24782
|
+
this.selectMultiColumn = () => {
|
|
24783
|
+
const { inputEl, el } = this;
|
|
24784
|
+
if (!inputEl) {
|
|
24785
|
+
return;
|
|
24786
|
+
}
|
|
24787
|
+
const numericPickers = Array.from(el.querySelectorAll('ion-picker-column')).filter((col) => col.numericInput);
|
|
24788
|
+
const firstColumn = numericPickers[0];
|
|
24789
|
+
const lastColumn = numericPickers[1];
|
|
24790
|
+
let value = inputEl.value;
|
|
24791
|
+
let minuteValue;
|
|
24792
|
+
switch (value.length) {
|
|
24793
|
+
case 1:
|
|
24794
|
+
this.searchColumn(firstColumn, value);
|
|
24795
|
+
break;
|
|
24796
|
+
case 2:
|
|
24797
|
+
/**
|
|
24798
|
+
* If the first character is `0` or `1` it is
|
|
24799
|
+
* possible that users are trying to type `09`
|
|
24800
|
+
* or `11` into the hour field, so we should look
|
|
24801
|
+
* at that first.
|
|
24802
|
+
*/
|
|
24803
|
+
const firstCharacter = inputEl.value.substring(0, 1);
|
|
24804
|
+
value = firstCharacter === '0' || firstCharacter === '1' ? inputEl.value : firstCharacter;
|
|
24805
|
+
this.searchColumn(firstColumn, value);
|
|
24806
|
+
/**
|
|
24807
|
+
* If only checked the first value,
|
|
24808
|
+
* we can check the second value
|
|
24809
|
+
* for a match in the minutes column
|
|
24810
|
+
*/
|
|
24811
|
+
if (value.length === 1) {
|
|
24812
|
+
minuteValue = inputEl.value.substring(inputEl.value.length - 1);
|
|
24813
|
+
this.searchColumn(lastColumn, minuteValue, 'end');
|
|
24814
|
+
}
|
|
24815
|
+
break;
|
|
24816
|
+
case 3:
|
|
24817
|
+
/**
|
|
24818
|
+
* If the first character is `0` or `1` it is
|
|
24819
|
+
* possible that users are trying to type `09`
|
|
24820
|
+
* or `11` into the hour field, so we should look
|
|
24821
|
+
* at that first.
|
|
24822
|
+
*/
|
|
24823
|
+
const firstCharacterAgain = inputEl.value.substring(0, 1);
|
|
24824
|
+
value =
|
|
24825
|
+
firstCharacterAgain === '0' || firstCharacterAgain === '1'
|
|
24826
|
+
? inputEl.value.substring(0, 2)
|
|
24827
|
+
: firstCharacterAgain;
|
|
24828
|
+
this.searchColumn(firstColumn, value);
|
|
24829
|
+
/**
|
|
24830
|
+
* If only checked the first value,
|
|
24831
|
+
* we can check the second value
|
|
24832
|
+
* for a match in the minutes column
|
|
24833
|
+
*/
|
|
24834
|
+
minuteValue = value.length === 1 ? inputEl.value.substring(1) : inputEl.value.substring(2);
|
|
24835
|
+
this.searchColumn(lastColumn, minuteValue, 'end');
|
|
24836
|
+
break;
|
|
24837
|
+
case 4:
|
|
24838
|
+
/**
|
|
24839
|
+
* If the first character is `0` or `1` it is
|
|
24840
|
+
* possible that users are trying to type `09`
|
|
24841
|
+
* or `11` into the hour field, so we should look
|
|
24842
|
+
* at that first.
|
|
24843
|
+
*/
|
|
24844
|
+
const firstCharacterAgainAgain = inputEl.value.substring(0, 1);
|
|
24845
|
+
value =
|
|
24846
|
+
firstCharacterAgainAgain === '0' || firstCharacterAgainAgain === '1'
|
|
24847
|
+
? inputEl.value.substring(0, 2)
|
|
24848
|
+
: firstCharacterAgainAgain;
|
|
24849
|
+
this.searchColumn(firstColumn, value);
|
|
24850
|
+
/**
|
|
24851
|
+
* If only checked the first value,
|
|
24852
|
+
* we can check the second value
|
|
24853
|
+
* for a match in the minutes column
|
|
24854
|
+
*/
|
|
24855
|
+
const minuteValueAgain = value.length === 1
|
|
24856
|
+
? inputEl.value.substring(1, inputEl.value.length)
|
|
24857
|
+
: inputEl.value.substring(2, inputEl.value.length);
|
|
24858
|
+
this.searchColumn(lastColumn, minuteValueAgain, 'end');
|
|
24859
|
+
break;
|
|
24860
|
+
default:
|
|
24861
|
+
const startIndex = inputEl.value.length - 4;
|
|
24862
|
+
const newString = inputEl.value.substring(startIndex);
|
|
24863
|
+
inputEl.value = newString;
|
|
24864
|
+
this.selectMultiColumn();
|
|
24865
|
+
break;
|
|
24888
24866
|
}
|
|
24889
|
-
|
|
24890
|
-
|
|
24891
|
-
|
|
24867
|
+
};
|
|
24868
|
+
/**
|
|
24869
|
+
* Searches the value of the active column
|
|
24870
|
+
* to determine which value users are trying
|
|
24871
|
+
* to select
|
|
24872
|
+
*/
|
|
24873
|
+
this.onInputChange = () => {
|
|
24874
|
+
const { useInputMode, inputEl, inputModeColumn } = this;
|
|
24875
|
+
if (!useInputMode || !inputEl) {
|
|
24876
|
+
return;
|
|
24892
24877
|
}
|
|
24893
|
-
|
|
24894
|
-
|
|
24895
|
-
* Ensure that the select column
|
|
24896
|
-
* item has the selected class
|
|
24897
|
-
*/
|
|
24898
|
-
opt.selected = selected;
|
|
24899
|
-
if (selected) {
|
|
24900
|
-
button.classList.add(PICKER_OPT_SELECTED);
|
|
24878
|
+
if (inputModeColumn) {
|
|
24879
|
+
this.selectSingleColumn();
|
|
24901
24880
|
}
|
|
24902
24881
|
else {
|
|
24903
|
-
|
|
24882
|
+
this.selectMultiColumn();
|
|
24904
24883
|
}
|
|
24905
|
-
}
|
|
24906
|
-
|
|
24907
|
-
|
|
24908
|
-
|
|
24909
|
-
|
|
24910
|
-
|
|
24911
|
-
|
|
24912
|
-
|
|
24913
|
-
this.
|
|
24914
|
-
|
|
24884
|
+
};
|
|
24885
|
+
/**
|
|
24886
|
+
* Emit ionInputModeChange. Picker columns
|
|
24887
|
+
* listen for this event to determine whether
|
|
24888
|
+
* or not their column is "active" for text input.
|
|
24889
|
+
*/
|
|
24890
|
+
this.emitInputModeChange = () => {
|
|
24891
|
+
const { useInputMode, inputModeColumn } = this;
|
|
24892
|
+
this.ionInputModeChange.emit({
|
|
24893
|
+
useInputMode,
|
|
24894
|
+
inputModeColumn,
|
|
24895
|
+
});
|
|
24896
|
+
};
|
|
24915
24897
|
}
|
|
24916
|
-
|
|
24917
|
-
|
|
24918
|
-
|
|
24919
|
-
|
|
24920
|
-
|
|
24921
|
-
|
|
24922
|
-
|
|
24923
|
-
|
|
24924
|
-
|
|
24925
|
-
|
|
24926
|
-
|
|
24927
|
-
|
|
24928
|
-
|
|
24929
|
-
|
|
24930
|
-
|
|
24931
|
-
|
|
24932
|
-
|
|
24933
|
-
|
|
24934
|
-
|
|
24935
|
-
|
|
24936
|
-
|
|
24937
|
-
|
|
24938
|
-
|
|
24939
|
-
|
|
24940
|
-
|
|
24941
|
-
this.emitColChange();
|
|
24942
|
-
hapticSelectionEnd();
|
|
24943
|
-
}
|
|
24898
|
+
/**
|
|
24899
|
+
* When the picker is interacted with
|
|
24900
|
+
* we need to prevent touchstart so other
|
|
24901
|
+
* gestures do not fire. For example,
|
|
24902
|
+
* scrolling on the wheel picker
|
|
24903
|
+
* in ion-datetime should not cause
|
|
24904
|
+
* a card modal to swipe to close.
|
|
24905
|
+
*/
|
|
24906
|
+
preventTouchStartPropagation(ev) {
|
|
24907
|
+
ev.stopPropagation();
|
|
24908
|
+
}
|
|
24909
|
+
componentWillLoad() {
|
|
24910
|
+
getElementRoot(this.el).addEventListener('focusin', this.onFocusIn);
|
|
24911
|
+
getElementRoot(this.el).addEventListener('focusout', this.onFocusOut);
|
|
24912
|
+
}
|
|
24913
|
+
/**
|
|
24914
|
+
* @internal
|
|
24915
|
+
* Exits text entry mode for the picker
|
|
24916
|
+
* This method blurs the hidden input
|
|
24917
|
+
* and cause the keyboard to dismiss.
|
|
24918
|
+
*/
|
|
24919
|
+
async exitInputMode() {
|
|
24920
|
+
const { inputEl, useInputMode } = this;
|
|
24921
|
+
if (!useInputMode || !inputEl) {
|
|
24922
|
+
return;
|
|
24944
24923
|
}
|
|
24945
|
-
|
|
24946
|
-
|
|
24947
|
-
|
|
24948
|
-
|
|
24949
|
-
|
|
24950
|
-
this.
|
|
24924
|
+
this.useInputMode = false;
|
|
24925
|
+
this.inputModeColumn = undefined;
|
|
24926
|
+
inputEl.blur();
|
|
24927
|
+
inputEl.value = '';
|
|
24928
|
+
if (this.destroyKeypressListener) {
|
|
24929
|
+
this.destroyKeypressListener();
|
|
24930
|
+
this.destroyKeypressListener = undefined;
|
|
24951
24931
|
}
|
|
24932
|
+
this.emitInputModeChange();
|
|
24952
24933
|
}
|
|
24953
|
-
|
|
24954
|
-
return
|
|
24934
|
+
render() {
|
|
24935
|
+
return (hAsync(Host, { onPointerDown: (ev) => this.onPointerDown(ev), onClick: () => this.onClick() }, hAsync("input", { "aria-hidden": "true", tabindex: -1, inputmode: "numeric", type: "number", ref: (el) => (this.inputEl = el), onInput: () => this.onInputChange(), onBlur: () => this.exitInputMode() }), hAsync("div", { class: "picker-before" }), hAsync("div", { class: "picker-after" }), hAsync("div", { class: "picker-highlight", ref: (el) => (this.highlightEl = el) }), hAsync("slot", null)));
|
|
24955
24936
|
}
|
|
24956
|
-
|
|
24957
|
-
|
|
24958
|
-
|
|
24959
|
-
|
|
24960
|
-
|
|
24961
|
-
|
|
24937
|
+
get el() { return getElement(this); }
|
|
24938
|
+
static get style() { return {
|
|
24939
|
+
ios: pickerIosCss$1,
|
|
24940
|
+
md: pickerMdCss$1
|
|
24941
|
+
}; }
|
|
24942
|
+
static get cmpMeta() { return {
|
|
24943
|
+
"$flags$": 41,
|
|
24944
|
+
"$tagName$": "ion-picker",
|
|
24945
|
+
"$members$": {
|
|
24946
|
+
"exitInputMode": [64]
|
|
24947
|
+
},
|
|
24948
|
+
"$listeners$": [[1, "touchstart", "preventTouchStartPropagation"]],
|
|
24949
|
+
"$lazyBundleId$": "-",
|
|
24950
|
+
"$attrsToReflect$": []
|
|
24951
|
+
}; }
|
|
24952
|
+
}
|
|
24953
|
+
|
|
24954
|
+
/**
|
|
24955
|
+
* iOS Picker Enter Animation
|
|
24956
|
+
*/
|
|
24957
|
+
const iosEnterAnimation$2 = (baseEl) => {
|
|
24958
|
+
const baseAnimation = createAnimation();
|
|
24959
|
+
const backdropAnimation = createAnimation();
|
|
24960
|
+
const wrapperAnimation = createAnimation();
|
|
24961
|
+
backdropAnimation
|
|
24962
|
+
.addElement(baseEl.querySelector('ion-backdrop'))
|
|
24963
|
+
.fromTo('opacity', 0.01, 'var(--backdrop-opacity)')
|
|
24964
|
+
.beforeStyles({
|
|
24965
|
+
'pointer-events': 'none',
|
|
24966
|
+
})
|
|
24967
|
+
.afterClearStyles(['pointer-events']);
|
|
24968
|
+
wrapperAnimation
|
|
24969
|
+
.addElement(baseEl.querySelector('.picker-wrapper'))
|
|
24970
|
+
.fromTo('transform', 'translateY(100%)', 'translateY(0%)');
|
|
24971
|
+
return baseAnimation
|
|
24972
|
+
.addElement(baseEl)
|
|
24973
|
+
.easing('cubic-bezier(.36,.66,.04,1)')
|
|
24974
|
+
.duration(400)
|
|
24975
|
+
.addAnimation([backdropAnimation, wrapperAnimation]);
|
|
24976
|
+
};
|
|
24977
|
+
|
|
24978
|
+
/**
|
|
24979
|
+
* iOS Picker Leave Animation
|
|
24980
|
+
*/
|
|
24981
|
+
const iosLeaveAnimation$2 = (baseEl) => {
|
|
24982
|
+
const baseAnimation = createAnimation();
|
|
24983
|
+
const backdropAnimation = createAnimation();
|
|
24984
|
+
const wrapperAnimation = createAnimation();
|
|
24985
|
+
backdropAnimation
|
|
24986
|
+
.addElement(baseEl.querySelector('ion-backdrop'))
|
|
24987
|
+
.fromTo('opacity', 'var(--backdrop-opacity)', 0.01);
|
|
24988
|
+
wrapperAnimation
|
|
24989
|
+
.addElement(baseEl.querySelector('.picker-wrapper'))
|
|
24990
|
+
.fromTo('transform', 'translateY(0%)', 'translateY(100%)');
|
|
24991
|
+
return baseAnimation
|
|
24992
|
+
.addElement(baseEl)
|
|
24993
|
+
.easing('cubic-bezier(.36,.66,.04,1)')
|
|
24994
|
+
.duration(400)
|
|
24995
|
+
.addAnimation([backdropAnimation, wrapperAnimation]);
|
|
24996
|
+
};
|
|
24997
|
+
|
|
24998
|
+
const pickerIosCss = ".sc-ion-picker-legacy-ios-h{--border-radius:0;--border-style:solid;--min-width:auto;--width:100%;--max-width:500px;--min-height:auto;--max-height:auto;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;top:0;display:block;position:absolute;width:100%;height:100%;outline:none;font-family:var(--ion-font-family, inherit);contain:strict;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:1001}@supports (inset-inline-start: 0){.sc-ion-picker-legacy-ios-h{inset-inline-start:0}}@supports not (inset-inline-start: 0){.sc-ion-picker-legacy-ios-h{left:0}[dir=rtl].sc-ion-picker-legacy-ios-h,[dir=rtl] .sc-ion-picker-legacy-ios-h{left:unset;right:unset;right:0}@supports selector(:dir(rtl)){.sc-ion-picker-legacy-ios-h:dir(rtl){left:unset;right:unset;right:0}}}.overlay-hidden.sc-ion-picker-legacy-ios-h{display:none}.picker-wrapper.sc-ion-picker-legacy-ios{border-radius:var(--border-radius);left:0;right:0;bottom:0;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:auto;margin-bottom:auto;-webkit-transform:translate3d(0, 100%, 0);transform:translate3d(0, 100%, 0);display:-ms-flexbox;display:flex;position:absolute;-ms-flex-direction:column;flex-direction:column;width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);contain:strict;overflow:hidden;z-index:10}.picker-toolbar.sc-ion-picker-legacy-ios{width:100%;background:transparent;contain:strict;z-index:1}.picker-button.sc-ion-picker-legacy-ios{border:0;font-family:inherit}.picker-button.sc-ion-picker-legacy-ios:active,.picker-button.sc-ion-picker-legacy-ios:focus{outline:none}.picker-columns.sc-ion-picker-legacy-ios{display:-ms-flexbox;display:flex;position:relative;-ms-flex-pack:center;justify-content:center;margin-bottom:var(--ion-safe-area-bottom, 0);contain:strict;overflow:hidden}.picker-above-highlight.sc-ion-picker-legacy-ios,.picker-below-highlight.sc-ion-picker-legacy-ios{display:none;pointer-events:none}.sc-ion-picker-legacy-ios-h{--background:var(--ion-background-color, #fff);--border-width:1px 0 0;--border-color:var(--ion-item-border-color, var(--ion-border-color, var(--ion-color-step-250, #c8c7cc)));--height:260px;--backdrop-opacity:var(--ion-backdrop-opacity, 0.26);color:var(--ion-item-color, var(--ion-text-color, #000))}.picker-toolbar.sc-ion-picker-legacy-ios{display:-ms-flexbox;display:flex;height:44px;border-bottom:0.55px solid var(--border-color)}.picker-toolbar-button.sc-ion-picker-legacy-ios{-ms-flex:1;flex:1;text-align:end}.picker-toolbar-button.sc-ion-picker-legacy-ios:last-child .picker-button.sc-ion-picker-legacy-ios{font-weight:600}.picker-toolbar-button.sc-ion-picker-legacy-ios:first-child{font-weight:normal;text-align:start}.picker-button.sc-ion-picker-legacy-ios,.picker-button.ion-activated.sc-ion-picker-legacy-ios{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-padding-start:1em;padding-inline-start:1em;-webkit-padding-end:1em;padding-inline-end:1em;padding-top:0;padding-bottom:0;height:44px;background:transparent;color:var(--ion-color-primary, #3880ff);font-size:16px}.picker-columns.sc-ion-picker-legacy-ios{height:215px;-webkit-perspective:1000px;perspective:1000px}.picker-above-highlight.sc-ion-picker-legacy-ios{top:0;-webkit-transform:translate3d(0, 0, 90px);transform:translate3d(0, 0, 90px);display:block;position:absolute;width:100%;height:81px;border-bottom:1px solid var(--border-color);background:-webkit-gradient(linear, left top, left bottom, color-stop(20%, var(--background, var(--ion-background-color, #fff))), to(rgba(var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255)), 0.8)));background:linear-gradient(to bottom, var(--background, var(--ion-background-color, #fff)) 20%, rgba(var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255)), 0.8) 100%);z-index:10}@supports (inset-inline-start: 0){.picker-above-highlight.sc-ion-picker-legacy-ios{inset-inline-start:0}}@supports not (inset-inline-start: 0){.picker-above-highlight.sc-ion-picker-legacy-ios{left:0}[dir=rtl].sc-ion-picker-legacy-ios-h .picker-above-highlight.sc-ion-picker-legacy-ios,[dir=rtl] .sc-ion-picker-legacy-ios-h .picker-above-highlight.sc-ion-picker-legacy-ios{left:unset;right:unset;right:0}[dir=rtl].sc-ion-picker-legacy-ios .picker-above-highlight.sc-ion-picker-legacy-ios{left:unset;right:unset;right:0}@supports selector(:dir(rtl)){.picker-above-highlight.sc-ion-picker-legacy-ios:dir(rtl){left:unset;right:unset;right:0}}}.picker-below-highlight.sc-ion-picker-legacy-ios{top:115px;-webkit-transform:translate3d(0, 0, 90px);transform:translate3d(0, 0, 90px);display:block;position:absolute;width:100%;height:119px;border-top:1px solid var(--border-color);background:-webkit-gradient(linear, left bottom, left top, color-stop(30%, var(--background, var(--ion-background-color, #fff))), to(rgba(var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255)), 0.8)));background:linear-gradient(to top, var(--background, var(--ion-background-color, #fff)) 30%, rgba(var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255)), 0.8) 100%);z-index:11}@supports (inset-inline-start: 0){.picker-below-highlight.sc-ion-picker-legacy-ios{inset-inline-start:0}}@supports not (inset-inline-start: 0){.picker-below-highlight.sc-ion-picker-legacy-ios{left:0}[dir=rtl].sc-ion-picker-legacy-ios-h .picker-below-highlight.sc-ion-picker-legacy-ios,[dir=rtl] .sc-ion-picker-legacy-ios-h .picker-below-highlight.sc-ion-picker-legacy-ios{left:unset;right:unset;right:0}[dir=rtl].sc-ion-picker-legacy-ios .picker-below-highlight.sc-ion-picker-legacy-ios{left:unset;right:unset;right:0}@supports selector(:dir(rtl)){.picker-below-highlight.sc-ion-picker-legacy-ios:dir(rtl){left:unset;right:unset;right:0}}}";
|
|
24999
|
+
|
|
25000
|
+
const pickerMdCss = ".sc-ion-picker-legacy-md-h{--border-radius:0;--border-style:solid;--min-width:auto;--width:100%;--max-width:500px;--min-height:auto;--max-height:auto;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;top:0;display:block;position:absolute;width:100%;height:100%;outline:none;font-family:var(--ion-font-family, inherit);contain:strict;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:1001}@supports (inset-inline-start: 0){.sc-ion-picker-legacy-md-h{inset-inline-start:0}}@supports not (inset-inline-start: 0){.sc-ion-picker-legacy-md-h{left:0}[dir=rtl].sc-ion-picker-legacy-md-h,[dir=rtl] .sc-ion-picker-legacy-md-h{left:unset;right:unset;right:0}@supports selector(:dir(rtl)){.sc-ion-picker-legacy-md-h:dir(rtl){left:unset;right:unset;right:0}}}.overlay-hidden.sc-ion-picker-legacy-md-h{display:none}.picker-wrapper.sc-ion-picker-legacy-md{border-radius:var(--border-radius);left:0;right:0;bottom:0;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:auto;margin-bottom:auto;-webkit-transform:translate3d(0, 100%, 0);transform:translate3d(0, 100%, 0);display:-ms-flexbox;display:flex;position:absolute;-ms-flex-direction:column;flex-direction:column;width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);contain:strict;overflow:hidden;z-index:10}.picker-toolbar.sc-ion-picker-legacy-md{width:100%;background:transparent;contain:strict;z-index:1}.picker-button.sc-ion-picker-legacy-md{border:0;font-family:inherit}.picker-button.sc-ion-picker-legacy-md:active,.picker-button.sc-ion-picker-legacy-md:focus{outline:none}.picker-columns.sc-ion-picker-legacy-md{display:-ms-flexbox;display:flex;position:relative;-ms-flex-pack:center;justify-content:center;margin-bottom:var(--ion-safe-area-bottom, 0);contain:strict;overflow:hidden}.picker-above-highlight.sc-ion-picker-legacy-md,.picker-below-highlight.sc-ion-picker-legacy-md{display:none;pointer-events:none}.sc-ion-picker-legacy-md-h{--background:var(--ion-background-color, #fff);--border-width:0.55px 0 0;--border-color:var(--ion-item-border-color, var(--ion-border-color, var(--ion-color-step-150, rgba(0, 0, 0, 0.13))));--height:260px;--backdrop-opacity:var(--ion-backdrop-opacity, 0.26);color:var(--ion-item-color, var(--ion-text-color, #000))}.picker-toolbar.sc-ion-picker-legacy-md{display:-ms-flexbox;display:flex;-ms-flex-pack:end;justify-content:flex-end;height:44px}.picker-button.sc-ion-picker-legacy-md,.picker-button.ion-activated.sc-ion-picker-legacy-md{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-padding-start:1.1em;padding-inline-start:1.1em;-webkit-padding-end:1.1em;padding-inline-end:1.1em;padding-top:0;padding-bottom:0;height:44px;background:transparent;color:var(--ion-color-primary, #3880ff);font-size:14px;font-weight:500;text-transform:uppercase;-webkit-box-shadow:none;box-shadow:none}.picker-columns.sc-ion-picker-legacy-md{height:216px;-webkit-perspective:1800px;perspective:1800px}.picker-above-highlight.sc-ion-picker-legacy-md{top:0;-webkit-transform:translate3d(0, 0, 90px);transform:translate3d(0, 0, 90px);position:absolute;width:100%;height:81px;border-bottom:1px solid var(--ion-item-border-color, var(--ion-border-color, var(--ion-color-step-150, rgba(0, 0, 0, 0.13))));background:-webkit-gradient(linear, left top, left bottom, color-stop(20%, var(--ion-background-color, #fff)), to(rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8)));background:linear-gradient(to bottom, var(--ion-background-color, #fff) 20%, rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8) 100%);z-index:10}@supports (inset-inline-start: 0){.picker-above-highlight.sc-ion-picker-legacy-md{inset-inline-start:0}}@supports not (inset-inline-start: 0){.picker-above-highlight.sc-ion-picker-legacy-md{left:0}[dir=rtl].sc-ion-picker-legacy-md-h .picker-above-highlight.sc-ion-picker-legacy-md,[dir=rtl] .sc-ion-picker-legacy-md-h .picker-above-highlight.sc-ion-picker-legacy-md{left:unset;right:unset;right:0}[dir=rtl].sc-ion-picker-legacy-md .picker-above-highlight.sc-ion-picker-legacy-md{left:unset;right:unset;right:0}@supports selector(:dir(rtl)){.picker-above-highlight.sc-ion-picker-legacy-md:dir(rtl){left:unset;right:unset;right:0}}}.picker-below-highlight.sc-ion-picker-legacy-md{top:115px;-webkit-transform:translate3d(0, 0, 90px);transform:translate3d(0, 0, 90px);position:absolute;width:100%;height:119px;border-top:1px solid var(--ion-item-border-color, var(--ion-border-color, var(--ion-color-step-150, rgba(0, 0, 0, 0.13))));background:-webkit-gradient(linear, left bottom, left top, color-stop(30%, var(--ion-background-color, #fff)), to(rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8)));background:linear-gradient(to top, var(--ion-background-color, #fff) 30%, rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8) 100%);z-index:11}@supports (inset-inline-start: 0){.picker-below-highlight.sc-ion-picker-legacy-md{inset-inline-start:0}}@supports not (inset-inline-start: 0){.picker-below-highlight.sc-ion-picker-legacy-md{left:0}[dir=rtl].sc-ion-picker-legacy-md-h .picker-below-highlight.sc-ion-picker-legacy-md,[dir=rtl] .sc-ion-picker-legacy-md-h .picker-below-highlight.sc-ion-picker-legacy-md{left:unset;right:unset;right:0}[dir=rtl].sc-ion-picker-legacy-md .picker-below-highlight.sc-ion-picker-legacy-md{left:unset;right:unset;right:0}@supports selector(:dir(rtl)){.picker-below-highlight.sc-ion-picker-legacy-md:dir(rtl){left:unset;right:unset;right:0}}}";
|
|
25001
|
+
|
|
25002
|
+
// TODO(FW-2832): types
|
|
25003
|
+
/**
|
|
25004
|
+
* @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.
|
|
25005
|
+
*/
|
|
25006
|
+
class Picker {
|
|
25007
|
+
constructor(hostRef) {
|
|
25008
|
+
registerInstance(this, hostRef);
|
|
25009
|
+
this.didPresent = createEvent(this, "ionPickerDidPresent", 7);
|
|
25010
|
+
this.willPresent = createEvent(this, "ionPickerWillPresent", 7);
|
|
25011
|
+
this.willDismiss = createEvent(this, "ionPickerWillDismiss", 7);
|
|
25012
|
+
this.didDismiss = createEvent(this, "ionPickerDidDismiss", 7);
|
|
25013
|
+
this.didPresentShorthand = createEvent(this, "didPresent", 7);
|
|
25014
|
+
this.willPresentShorthand = createEvent(this, "willPresent", 7);
|
|
25015
|
+
this.willDismissShorthand = createEvent(this, "willDismiss", 7);
|
|
25016
|
+
this.didDismissShorthand = createEvent(this, "didDismiss", 7);
|
|
25017
|
+
this.delegateController = createDelegateController(this);
|
|
25018
|
+
this.lockController = createLockController();
|
|
25019
|
+
this.triggerController = createTriggerController();
|
|
25020
|
+
this.onBackdropTap = () => {
|
|
25021
|
+
this.dismiss(undefined, BACKDROP);
|
|
25022
|
+
};
|
|
25023
|
+
this.dispatchCancelHandler = (ev) => {
|
|
25024
|
+
const role = ev.detail.role;
|
|
25025
|
+
if (isCancel(role)) {
|
|
25026
|
+
const cancelButton = this.buttons.find((b) => b.role === 'cancel');
|
|
25027
|
+
this.callButtonHandler(cancelButton);
|
|
25028
|
+
}
|
|
25029
|
+
};
|
|
25030
|
+
this.presented = false;
|
|
25031
|
+
this.overlayIndex = undefined;
|
|
25032
|
+
this.delegate = undefined;
|
|
25033
|
+
this.hasController = false;
|
|
25034
|
+
this.keyboardClose = true;
|
|
25035
|
+
this.enterAnimation = undefined;
|
|
25036
|
+
this.leaveAnimation = undefined;
|
|
25037
|
+
this.buttons = [];
|
|
25038
|
+
this.columns = [];
|
|
25039
|
+
this.cssClass = undefined;
|
|
25040
|
+
this.duration = 0;
|
|
25041
|
+
this.showBackdrop = true;
|
|
25042
|
+
this.backdropDismiss = true;
|
|
25043
|
+
this.animated = true;
|
|
25044
|
+
this.htmlAttributes = undefined;
|
|
25045
|
+
this.isOpen = false;
|
|
25046
|
+
this.trigger = undefined;
|
|
25047
|
+
}
|
|
25048
|
+
onIsOpenChange(newValue, oldValue) {
|
|
25049
|
+
if (newValue === true && oldValue === false) {
|
|
25050
|
+
this.present();
|
|
24962
25051
|
}
|
|
24963
|
-
|
|
24964
|
-
|
|
24965
|
-
// reset everything
|
|
24966
|
-
if (this.rafId !== undefined)
|
|
24967
|
-
cancelAnimationFrame(this.rafId);
|
|
24968
|
-
const options = this.col.options;
|
|
24969
|
-
let minY = options.length - 1;
|
|
24970
|
-
let maxY = 0;
|
|
24971
|
-
for (let i = 0; i < options.length; i++) {
|
|
24972
|
-
if (!options[i].disabled) {
|
|
24973
|
-
minY = Math.min(minY, i);
|
|
24974
|
-
maxY = Math.max(maxY, i);
|
|
24975
|
-
}
|
|
25052
|
+
else if (newValue === false && oldValue === true) {
|
|
25053
|
+
this.dismiss();
|
|
24976
25054
|
}
|
|
24977
|
-
this.minY = -(minY * this.optHeight);
|
|
24978
|
-
this.maxY = -(maxY * this.optHeight);
|
|
24979
25055
|
}
|
|
24980
|
-
|
|
24981
|
-
|
|
24982
|
-
|
|
24983
|
-
|
|
24984
|
-
detail.event.stopPropagation();
|
|
24985
|
-
// update the scroll position relative to pointer start position
|
|
24986
|
-
let y = this.y + detail.deltaY;
|
|
24987
|
-
if (y > this.minY) {
|
|
24988
|
-
// scrolling up higher than scroll area
|
|
24989
|
-
y = Math.pow(y, 0.8);
|
|
24990
|
-
this.bounceFrom = y;
|
|
25056
|
+
triggerChanged() {
|
|
25057
|
+
const { trigger, el, triggerController } = this;
|
|
25058
|
+
if (trigger) {
|
|
25059
|
+
triggerController.addClickListener(el, trigger);
|
|
24991
25060
|
}
|
|
24992
|
-
|
|
24993
|
-
|
|
24994
|
-
|
|
24995
|
-
|
|
25061
|
+
}
|
|
25062
|
+
connectedCallback() {
|
|
25063
|
+
prepareOverlay(this.el);
|
|
25064
|
+
this.triggerChanged();
|
|
25065
|
+
}
|
|
25066
|
+
disconnectedCallback() {
|
|
25067
|
+
this.triggerController.removeClickListener();
|
|
25068
|
+
}
|
|
25069
|
+
componentWillLoad() {
|
|
25070
|
+
setOverlayId(this.el);
|
|
25071
|
+
}
|
|
25072
|
+
componentDidLoad() {
|
|
25073
|
+
printIonWarning('ion-picker-legacy and ion-picker-legacy-column have been deprecated in favor of new versions of the ion-picker and ion-picker-column components. These new components display inline with your page content allowing for more presentation flexibility than before.', this.el);
|
|
25074
|
+
/**
|
|
25075
|
+
* If picker was rendered with isOpen="true"
|
|
25076
|
+
* then we should open picker immediately.
|
|
25077
|
+
*/
|
|
25078
|
+
if (this.isOpen === true) {
|
|
25079
|
+
raf(() => this.present());
|
|
24996
25080
|
}
|
|
24997
|
-
|
|
24998
|
-
|
|
25081
|
+
}
|
|
25082
|
+
/**
|
|
25083
|
+
* Present the picker overlay after it has been created.
|
|
25084
|
+
*/
|
|
25085
|
+
async present() {
|
|
25086
|
+
const unlock = await this.lockController.lock();
|
|
25087
|
+
await this.delegateController.attachViewToDom();
|
|
25088
|
+
await present(this, 'pickerEnter', iosEnterAnimation$2, iosEnterAnimation$2, undefined);
|
|
25089
|
+
if (this.duration > 0) {
|
|
25090
|
+
this.durationTimeout = setTimeout(() => this.dismiss(), this.duration);
|
|
24999
25091
|
}
|
|
25000
|
-
|
|
25092
|
+
unlock();
|
|
25001
25093
|
}
|
|
25002
|
-
|
|
25003
|
-
|
|
25004
|
-
|
|
25005
|
-
|
|
25006
|
-
|
|
25007
|
-
|
|
25094
|
+
/**
|
|
25095
|
+
* Dismiss the picker overlay after it has been presented.
|
|
25096
|
+
*
|
|
25097
|
+
* @param data Any data to emit in the dismiss events.
|
|
25098
|
+
* @param role The role of the element that is dismissing the picker.
|
|
25099
|
+
* This can be useful in a button handler for determining which button was
|
|
25100
|
+
* clicked to dismiss the picker.
|
|
25101
|
+
* Some examples include: ``"cancel"`, `"destructive"`, "selected"`, and `"backdrop"`.
|
|
25102
|
+
*/
|
|
25103
|
+
async dismiss(data, role) {
|
|
25104
|
+
const unlock = await this.lockController.lock();
|
|
25105
|
+
if (this.durationTimeout) {
|
|
25106
|
+
clearTimeout(this.durationTimeout);
|
|
25008
25107
|
}
|
|
25009
|
-
|
|
25010
|
-
|
|
25011
|
-
this.
|
|
25012
|
-
this.emitColChange();
|
|
25013
|
-
return;
|
|
25108
|
+
const dismissed = await dismiss(this, data, role, 'pickerLeave', iosLeaveAnimation$2, iosLeaveAnimation$2);
|
|
25109
|
+
if (dismissed) {
|
|
25110
|
+
this.delegateController.removeViewFromDom();
|
|
25014
25111
|
}
|
|
25015
|
-
|
|
25016
|
-
|
|
25017
|
-
|
|
25018
|
-
|
|
25019
|
-
|
|
25020
|
-
|
|
25112
|
+
unlock();
|
|
25113
|
+
return dismissed;
|
|
25114
|
+
}
|
|
25115
|
+
/**
|
|
25116
|
+
* Returns a promise that resolves when the picker did dismiss.
|
|
25117
|
+
*/
|
|
25118
|
+
onDidDismiss() {
|
|
25119
|
+
return eventMethod(this.el, 'ionPickerDidDismiss');
|
|
25120
|
+
}
|
|
25121
|
+
/**
|
|
25122
|
+
* Returns a promise that resolves when the picker will dismiss.
|
|
25123
|
+
*/
|
|
25124
|
+
onWillDismiss() {
|
|
25125
|
+
return eventMethod(this.el, 'ionPickerWillDismiss');
|
|
25126
|
+
}
|
|
25127
|
+
/**
|
|
25128
|
+
* Get the column that matches the specified name.
|
|
25129
|
+
*
|
|
25130
|
+
* @param name The name of the column.
|
|
25131
|
+
*/
|
|
25132
|
+
getColumn(name) {
|
|
25133
|
+
return Promise.resolve(this.columns.find((column) => column.name === name));
|
|
25134
|
+
}
|
|
25135
|
+
async buttonClick(button) {
|
|
25136
|
+
const role = button.role;
|
|
25137
|
+
if (isCancel(role)) {
|
|
25138
|
+
return this.dismiss(undefined, role);
|
|
25021
25139
|
}
|
|
25022
|
-
|
|
25023
|
-
|
|
25024
|
-
|
|
25025
|
-
const isScrollingUp = detail.deltaY > 0;
|
|
25026
|
-
const optHeightFraction = (Math.abs(this.y) % this.optHeight) / this.optHeight;
|
|
25027
|
-
if (isScrollingUp && optHeightFraction > 0.5) {
|
|
25028
|
-
this.velocity = Math.abs(this.velocity) * -1;
|
|
25029
|
-
}
|
|
25030
|
-
else if (!isScrollingUp && optHeightFraction <= 0.5) {
|
|
25031
|
-
this.velocity = Math.abs(this.velocity);
|
|
25032
|
-
}
|
|
25033
|
-
}
|
|
25034
|
-
this.decelerate();
|
|
25140
|
+
const shouldDismiss = await this.callButtonHandler(button);
|
|
25141
|
+
if (shouldDismiss) {
|
|
25142
|
+
return this.dismiss(this.getSelected(), button.role);
|
|
25035
25143
|
}
|
|
25144
|
+
return Promise.resolve();
|
|
25036
25145
|
}
|
|
25037
|
-
|
|
25038
|
-
|
|
25039
|
-
|
|
25040
|
-
|
|
25041
|
-
|
|
25042
|
-
|
|
25043
|
-
|
|
25044
|
-
|
|
25045
|
-
max = Math.max(max, i);
|
|
25146
|
+
async callButtonHandler(button) {
|
|
25147
|
+
if (button) {
|
|
25148
|
+
// a handler has been provided, execute it
|
|
25149
|
+
// pass the handler the values from the inputs
|
|
25150
|
+
const rtn = await safeCall(button.handler, this.getSelected());
|
|
25151
|
+
if (rtn === false) {
|
|
25152
|
+
// if the return value of the handler is false then do not dismiss
|
|
25153
|
+
return false;
|
|
25046
25154
|
}
|
|
25047
25155
|
}
|
|
25048
|
-
|
|
25049
|
-
* Only update selected value if column has a
|
|
25050
|
-
* velocity of 0. If it does not, then the
|
|
25051
|
-
* column is animating might land on
|
|
25052
|
-
* a value different than the value at
|
|
25053
|
-
* selectedIndex
|
|
25054
|
-
*/
|
|
25055
|
-
if (this.velocity !== 0) {
|
|
25056
|
-
return;
|
|
25057
|
-
}
|
|
25058
|
-
const selectedIndex = clamp(min, (_a = this.col.selectedIndex) !== null && _a !== void 0 ? _a : 0, max);
|
|
25059
|
-
if (this.col.prevSelected !== selectedIndex || forceRefresh) {
|
|
25060
|
-
const y = selectedIndex * this.optHeight * -1;
|
|
25061
|
-
const duration = animated ? TRANSITION_DURATION : 0;
|
|
25062
|
-
this.velocity = 0;
|
|
25063
|
-
this.update(y, duration, true);
|
|
25064
|
-
}
|
|
25156
|
+
return true;
|
|
25065
25157
|
}
|
|
25066
|
-
|
|
25067
|
-
const
|
|
25068
|
-
|
|
25069
|
-
|
|
25070
|
-
|
|
25071
|
-
|
|
25072
|
-
|
|
25073
|
-
|
|
25158
|
+
getSelected() {
|
|
25159
|
+
const selected = {};
|
|
25160
|
+
this.columns.forEach((col, index) => {
|
|
25161
|
+
const selectedColumn = col.selectedIndex !== undefined ? col.options[col.selectedIndex] : undefined;
|
|
25162
|
+
selected[col.name] = {
|
|
25163
|
+
text: selectedColumn ? selectedColumn.text : undefined,
|
|
25164
|
+
value: selectedColumn ? selectedColumn.value : undefined,
|
|
25165
|
+
columnIndex: index,
|
|
25166
|
+
};
|
|
25167
|
+
});
|
|
25168
|
+
return selected;
|
|
25074
25169
|
}
|
|
25075
25170
|
render() {
|
|
25076
|
-
const
|
|
25171
|
+
const { htmlAttributes } = this;
|
|
25077
25172
|
const mode = getIonMode$1(this);
|
|
25078
|
-
return (hAsync(Host,
|
|
25079
|
-
|
|
25080
|
-
}
|
|
25173
|
+
return (hAsync(Host, Object.assign({ "aria-modal": "true", tabindex: "-1" }, htmlAttributes, { style: {
|
|
25174
|
+
zIndex: `${20000 + this.overlayIndex}`,
|
|
25175
|
+
}, class: Object.assign({ [mode]: true,
|
|
25176
|
+
// Used internally for styling
|
|
25177
|
+
[`picker-${mode}`]: true, 'overlay-hidden': true }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonPickerWillDismiss: this.dispatchCancelHandler }), hAsync("ion-backdrop", { visible: this.showBackdrop, tappable: this.backdropDismiss }), hAsync("div", { tabindex: "0" }), hAsync("div", { class: "picker-wrapper ion-overlay-wrapper", role: "dialog" }, hAsync("div", { class: "picker-toolbar" }, this.buttons.map((b) => (hAsync("div", { class: buttonWrapperClass(b) }, hAsync("button", { type: "button", onClick: () => this.buttonClick(b), class: buttonClass$1(b) }, b.text))))), hAsync("div", { class: "picker-columns" }, hAsync("div", { class: "picker-above-highlight" }), this.presented && this.columns.map((c) => hAsync("ion-picker-legacy-column", { col: c })), hAsync("div", { class: "picker-below-highlight" }))), hAsync("div", { tabindex: "0" })));
|
|
25081
25178
|
}
|
|
25082
25179
|
get el() { return getElement(this); }
|
|
25083
25180
|
static get watchers() { return {
|
|
25084
|
-
"
|
|
25181
|
+
"isOpen": ["onIsOpenChange"],
|
|
25182
|
+
"trigger": ["triggerChanged"]
|
|
25085
25183
|
}; }
|
|
25086
25184
|
static get style() { return {
|
|
25087
|
-
ios:
|
|
25088
|
-
md:
|
|
25185
|
+
ios: pickerIosCss,
|
|
25186
|
+
md: pickerMdCss
|
|
25089
25187
|
}; }
|
|
25090
25188
|
static get cmpMeta() { return {
|
|
25091
|
-
"$flags$":
|
|
25092
|
-
"$tagName$": "ion-picker-legacy
|
|
25189
|
+
"$flags$": 34,
|
|
25190
|
+
"$tagName$": "ion-picker-legacy",
|
|
25093
25191
|
"$members$": {
|
|
25094
|
-
"
|
|
25192
|
+
"overlayIndex": [2, "overlay-index"],
|
|
25193
|
+
"delegate": [16],
|
|
25194
|
+
"hasController": [4, "has-controller"],
|
|
25195
|
+
"keyboardClose": [4, "keyboard-close"],
|
|
25196
|
+
"enterAnimation": [16],
|
|
25197
|
+
"leaveAnimation": [16],
|
|
25198
|
+
"buttons": [16],
|
|
25199
|
+
"columns": [16],
|
|
25200
|
+
"cssClass": [1, "css-class"],
|
|
25201
|
+
"duration": [2],
|
|
25202
|
+
"showBackdrop": [4, "show-backdrop"],
|
|
25203
|
+
"backdropDismiss": [4, "backdrop-dismiss"],
|
|
25204
|
+
"animated": [4],
|
|
25205
|
+
"htmlAttributes": [16],
|
|
25206
|
+
"isOpen": [4, "is-open"],
|
|
25207
|
+
"trigger": [1],
|
|
25208
|
+
"presented": [32],
|
|
25209
|
+
"present": [64],
|
|
25210
|
+
"dismiss": [64],
|
|
25211
|
+
"onDidDismiss": [64],
|
|
25212
|
+
"onWillDismiss": [64],
|
|
25213
|
+
"getColumn": [64]
|
|
25095
25214
|
},
|
|
25096
25215
|
"$listeners$": undefined,
|
|
25097
25216
|
"$lazyBundleId$": "-",
|
|
25098
25217
|
"$attrsToReflect$": []
|
|
25099
25218
|
}; }
|
|
25100
25219
|
}
|
|
25101
|
-
const
|
|
25102
|
-
|
|
25103
|
-
|
|
25104
|
-
|
|
25220
|
+
const buttonWrapperClass = (button) => {
|
|
25221
|
+
return {
|
|
25222
|
+
[`picker-toolbar-${button.role}`]: button.role !== undefined,
|
|
25223
|
+
'picker-toolbar-button': true,
|
|
25224
|
+
};
|
|
25225
|
+
};
|
|
25226
|
+
const buttonClass$1 = (button) => {
|
|
25227
|
+
return Object.assign({ 'picker-button': true, 'ion-activatable': true }, getClassMap(button.cssClass));
|
|
25228
|
+
};
|
|
25105
25229
|
|
|
25106
|
-
const
|
|
25230
|
+
const pickerColumnIosCss$1 = "/*!@:host*/.sc-ion-picker-column-ios-h{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0px;padding-bottom:0px;height:200px;outline:none;font-size:22px;-webkit-scroll-snap-type:y mandatory;-ms-scroll-snap-type:y mandatory;scroll-snap-type:y mandatory;overflow-x:hidden;overflow-y:scroll;scrollbar-width:none;text-align:center}/*!@:host::-webkit-scrollbar*/.sc-ion-picker-column-ios-h::-webkit-scrollbar{display:none}/*!@:host .picker-item*/.sc-ion-picker-column-ios-h .picker-item.sc-ion-picker-column-ios{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;display:block;width:100%;height:34px;border:0px;outline:none;background:transparent;color:inherit;font-family:var(--ion-font-family, inherit);font-size:inherit;line-height:34px;text-align:inherit;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;overflow:hidden;scroll-snap-align:center}/*!@:host .picker-item-empty,\n:host .picker-item[disabled]*/.sc-ion-picker-column-ios-h .picker-item-empty.sc-ion-picker-column-ios,.sc-ion-picker-column-ios-h .picker-item[disabled].sc-ion-picker-column-ios{cursor:default}/*!@:host .picker-item-empty,\n:host(:not([disabled])) .picker-item[disabled]*/.sc-ion-picker-column-ios-h .picker-item-empty.sc-ion-picker-column-ios,.sc-ion-picker-column-ios-h:not([disabled]) .picker-item[disabled].sc-ion-picker-column-ios{scroll-snap-align:none}/*!@:host([disabled])*/[disabled].sc-ion-picker-column-ios-h{overflow-y:hidden}/*!@:host .picker-item[disabled]*/.sc-ion-picker-column-ios-h .picker-item[disabled].sc-ion-picker-column-ios{opacity:0.4}/*!@:host(.picker-column-active) .picker-item.picker-item-active*/.picker-column-active.sc-ion-picker-column-ios-h .picker-item.picker-item-active.sc-ion-picker-column-ios{color:var(--ion-color-base)}@media (any-hover: hover){/*!@:host(:focus)*/.sc-ion-picker-column-ios-h:focus{outline:none;background:rgba(var(--ion-color-base-rgb), 0.2)}}";
|
|
25107
25231
|
|
|
25108
|
-
const
|
|
25232
|
+
const pickerColumnMdCss$1 = "/*!@:host*/.sc-ion-picker-column-md-h{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0px;padding-bottom:0px;height:200px;outline:none;font-size:22px;-webkit-scroll-snap-type:y mandatory;-ms-scroll-snap-type:y mandatory;scroll-snap-type:y mandatory;overflow-x:hidden;overflow-y:scroll;scrollbar-width:none;text-align:center}/*!@:host::-webkit-scrollbar*/.sc-ion-picker-column-md-h::-webkit-scrollbar{display:none}/*!@:host .picker-item*/.sc-ion-picker-column-md-h .picker-item.sc-ion-picker-column-md{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;display:block;width:100%;height:34px;border:0px;outline:none;background:transparent;color:inherit;font-family:var(--ion-font-family, inherit);font-size:inherit;line-height:34px;text-align:inherit;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;overflow:hidden;scroll-snap-align:center}/*!@:host .picker-item-empty,\n:host .picker-item[disabled]*/.sc-ion-picker-column-md-h .picker-item-empty.sc-ion-picker-column-md,.sc-ion-picker-column-md-h .picker-item[disabled].sc-ion-picker-column-md{cursor:default}/*!@:host .picker-item-empty,\n:host(:not([disabled])) .picker-item[disabled]*/.sc-ion-picker-column-md-h .picker-item-empty.sc-ion-picker-column-md,.sc-ion-picker-column-md-h:not([disabled]) .picker-item[disabled].sc-ion-picker-column-md{scroll-snap-align:none}/*!@:host([disabled])*/[disabled].sc-ion-picker-column-md-h{overflow-y:hidden}/*!@:host .picker-item[disabled]*/.sc-ion-picker-column-md-h .picker-item[disabled].sc-ion-picker-column-md{opacity:0.4}/*!@:host(.picker-column-active) .picker-item.picker-item-active*/.picker-column-active.sc-ion-picker-column-md-h .picker-item.picker-item-active.sc-ion-picker-column-md{color:var(--ion-color-base)}@media (any-hover: hover){/*!@:host(:focus)*/.sc-ion-picker-column-md-h:focus{outline:none;background:rgba(var(--ion-color-base-rgb), 0.2)}}/*!@:host .picker-item-active*/.sc-ion-picker-column-md-h .picker-item-active.sc-ion-picker-column-md{color:var(--ion-color-base)}";
|
|
25109
25233
|
|
|
25110
25234
|
/**
|
|
25111
25235
|
* @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.
|
|
25112
|
-
* @internal
|
|
25113
25236
|
*/
|
|
25114
|
-
class
|
|
25237
|
+
class PickerColumn {
|
|
25115
25238
|
constructor(hostRef) {
|
|
25116
25239
|
registerInstance(this, hostRef);
|
|
25117
25240
|
this.ionChange = createEvent(this, "ionChange", 7);
|
|
@@ -25373,7 +25496,7 @@ class PickerColumnInternal {
|
|
|
25373
25496
|
}
|
|
25374
25497
|
};
|
|
25375
25498
|
new IntersectionObserver(visibleCallback, { threshold: 0.001 }).observe(this.el);
|
|
25376
|
-
const parentEl = (this.parentEl = this.el.closest('ion-picker
|
|
25499
|
+
const parentEl = (this.parentEl = this.el.closest('ion-picker'));
|
|
25377
25500
|
if (parentEl !== null) {
|
|
25378
25501
|
// TODO(FW-2832): type
|
|
25379
25502
|
parentEl.addEventListener('ionInputModeChange', (ev) => this.inputModeChange(ev));
|
|
@@ -25433,7 +25556,7 @@ class PickerColumnInternal {
|
|
|
25433
25556
|
* exportparts is needed so ion-datetime can expose the parts
|
|
25434
25557
|
* from two layers of shadow nesting. If this causes problems,
|
|
25435
25558
|
* the attribute can be moved to datetime.tsx and set on every
|
|
25436
|
-
* instance of ion-picker-column
|
|
25559
|
+
* instance of ion-picker-column there instead.
|
|
25437
25560
|
*/
|
|
25438
25561
|
return (hAsync(Host, { exportparts: `${PICKER_ITEM_PART}, ${PICKER_ITEM_ACTIVE_PART}`, disabled: pickerDisabled, tabindex: pickerDisabled ? null : 0, class: createColorClasses$1(color, {
|
|
25439
25562
|
[mode]: true,
|
|
@@ -25453,12 +25576,12 @@ class PickerColumnInternal {
|
|
|
25453
25576
|
"value": ["valueChange"]
|
|
25454
25577
|
}; }
|
|
25455
25578
|
static get style() { return {
|
|
25456
|
-
ios:
|
|
25457
|
-
md:
|
|
25579
|
+
ios: pickerColumnIosCss$1,
|
|
25580
|
+
md: pickerColumnMdCss$1
|
|
25458
25581
|
}; }
|
|
25459
25582
|
static get cmpMeta() { return {
|
|
25460
25583
|
"$flags$": 41,
|
|
25461
|
-
"$tagName$": "ion-picker-column
|
|
25584
|
+
"$tagName$": "ion-picker-column",
|
|
25462
25585
|
"$members$": {
|
|
25463
25586
|
"disabled": [4],
|
|
25464
25587
|
"items": [16],
|
|
@@ -25478,494 +25601,369 @@ const PICKER_ITEM_ACTIVE_CLASS = 'picker-item-active';
|
|
|
25478
25601
|
const PICKER_ITEM_PART = 'wheel-item';
|
|
25479
25602
|
const PICKER_ITEM_ACTIVE_PART = 'active';
|
|
25480
25603
|
|
|
25481
|
-
const
|
|
25604
|
+
const pickerColumnIosCss = ".picker-col{display:-ms-flexbox;display:flex;position:relative;-ms-flex:1;flex:1;-ms-flex-pack:center;justify-content:center;height:100%;-webkit-box-sizing:content-box;box-sizing:content-box;contain:content}.picker-opts{position:relative;-ms-flex:1;flex:1;max-width:100%}.picker-opt{top:0;display:block;position:absolute;width:100%;border:0;text-align:center;text-overflow:ellipsis;white-space:nowrap;contain:strict;overflow:hidden;will-change:transform}@supports (inset-inline-start: 0){.picker-opt{inset-inline-start:0}}@supports not (inset-inline-start: 0){.picker-opt{left:0}:host-context([dir=rtl]) .picker-opt{left:unset;right:unset;right:0}[dir=rtl] .picker-opt{left:unset;right:unset;right:0}@supports selector(:dir(rtl)){.picker-opt:dir(rtl){left:unset;right:unset;right:0}}}.picker-opt.picker-opt-disabled{pointer-events:none}.picker-opt-disabled{opacity:0}.picker-opts-left{-ms-flex-pack:start;justify-content:flex-start}.picker-opts-right{-ms-flex-pack:end;justify-content:flex-end}.picker-opt:active,.picker-opt:focus{outline:none}.picker-prefix{position:relative;-ms-flex:1;flex:1;text-align:end;white-space:nowrap}.picker-suffix{position:relative;-ms-flex:1;flex:1;text-align:start;white-space:nowrap}.picker-col{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:4px;padding-inline-end:4px;padding-top:0;padding-bottom:0;-webkit-transform-style:preserve-3d;transform-style:preserve-3d}.picker-prefix,.picker-suffix,.picker-opts{top:77px;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;color:inherit;font-size:20px;line-height:42px;pointer-events:none}.picker-opt{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-transform-origin:center center;transform-origin:center center;height:46px;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-transition-timing-function:ease-out;transition-timing-function:ease-out;background:transparent;color:inherit;font-size:20px;line-height:42px;-webkit-backface-visibility:hidden;backface-visibility:hidden;pointer-events:auto}:host-context([dir=rtl]) .picker-opt{-webkit-transform-origin:calc(100% - center) center;transform-origin:calc(100% - center) center}[dir=rtl] .picker-opt{-webkit-transform-origin:calc(100% - center) center;transform-origin:calc(100% - center) center}@supports selector(:dir(rtl)){.picker-opt:dir(rtl){-webkit-transform-origin:calc(100% - center) center;transform-origin:calc(100% - center) center}}";
|
|
25482
25605
|
|
|
25483
|
-
const
|
|
25606
|
+
const pickerColumnMdCss = ".picker-col{display:-ms-flexbox;display:flex;position:relative;-ms-flex:1;flex:1;-ms-flex-pack:center;justify-content:center;height:100%;-webkit-box-sizing:content-box;box-sizing:content-box;contain:content}.picker-opts{position:relative;-ms-flex:1;flex:1;max-width:100%}.picker-opt{top:0;display:block;position:absolute;width:100%;border:0;text-align:center;text-overflow:ellipsis;white-space:nowrap;contain:strict;overflow:hidden;will-change:transform}@supports (inset-inline-start: 0){.picker-opt{inset-inline-start:0}}@supports not (inset-inline-start: 0){.picker-opt{left:0}:host-context([dir=rtl]) .picker-opt{left:unset;right:unset;right:0}[dir=rtl] .picker-opt{left:unset;right:unset;right:0}@supports selector(:dir(rtl)){.picker-opt:dir(rtl){left:unset;right:unset;right:0}}}.picker-opt.picker-opt-disabled{pointer-events:none}.picker-opt-disabled{opacity:0}.picker-opts-left{-ms-flex-pack:start;justify-content:flex-start}.picker-opts-right{-ms-flex-pack:end;justify-content:flex-end}.picker-opt:active,.picker-opt:focus{outline:none}.picker-prefix{position:relative;-ms-flex:1;flex:1;text-align:end;white-space:nowrap}.picker-suffix{position:relative;-ms-flex:1;flex:1;text-align:start;white-space:nowrap}.picker-col{-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;padding-top:0;padding-bottom:0;-webkit-transform-style:preserve-3d;transform-style:preserve-3d}.picker-prefix,.picker-suffix,.picker-opts{top:77px;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;color:inherit;font-size:22px;line-height:42px;pointer-events:none}.picker-opt{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;height:43px;-webkit-transition-timing-function:ease-out;transition-timing-function:ease-out;background:transparent;color:inherit;font-size:22px;line-height:42px;-webkit-backface-visibility:hidden;backface-visibility:hidden;pointer-events:auto}.picker-prefix,.picker-suffix,.picker-opt.picker-opt-selected{color:var(--ion-color-primary, #3880ff)}";
|
|
25484
25607
|
|
|
25485
25608
|
/**
|
|
25486
|
-
* @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.
|
|
25487
25609
|
* @internal
|
|
25488
25610
|
*/
|
|
25489
|
-
class
|
|
25611
|
+
class PickerColumnCmp {
|
|
25490
25612
|
constructor(hostRef) {
|
|
25491
25613
|
registerInstance(this, hostRef);
|
|
25492
|
-
this.
|
|
25493
|
-
this.
|
|
25494
|
-
this.
|
|
25495
|
-
|
|
25496
|
-
|
|
25497
|
-
|
|
25498
|
-
|
|
25499
|
-
|
|
25500
|
-
|
|
25501
|
-
|
|
25502
|
-
|
|
25503
|
-
|
|
25504
|
-
|
|
25505
|
-
|
|
25506
|
-
|
|
25507
|
-
|
|
25508
|
-
|
|
25509
|
-
|
|
25510
|
-
|
|
25511
|
-
|
|
25512
|
-
|
|
25513
|
-
|
|
25514
|
-
|
|
25515
|
-
|
|
25516
|
-
|
|
25517
|
-
|
|
25518
|
-
|
|
25519
|
-
|
|
25520
|
-
|
|
25521
|
-
|
|
25522
|
-
|
|
25523
|
-
|
|
25524
|
-
|
|
25525
|
-
|
|
25526
|
-
|
|
25527
|
-
|
|
25528
|
-
|
|
25529
|
-
|
|
25530
|
-
|
|
25531
|
-
|
|
25532
|
-
|
|
25533
|
-
|
|
25534
|
-
|
|
25535
|
-
|
|
25536
|
-
|
|
25537
|
-
|
|
25538
|
-
|
|
25539
|
-
|
|
25540
|
-
|
|
25541
|
-
|
|
25542
|
-
|
|
25543
|
-
|
|
25544
|
-
|
|
25545
|
-
|
|
25546
|
-
|
|
25547
|
-
|
|
25548
|
-
|
|
25549
|
-
|
|
25550
|
-
|
|
25551
|
-
|
|
25552
|
-
|
|
25553
|
-
|
|
25554
|
-
|
|
25555
|
-
|
|
25556
|
-
|
|
25557
|
-
|
|
25558
|
-
|
|
25559
|
-
|
|
25560
|
-
|
|
25561
|
-
|
|
25562
|
-
|
|
25563
|
-
|
|
25564
|
-
|
|
25565
|
-
|
|
25566
|
-
|
|
25567
|
-
|
|
25568
|
-
|
|
25569
|
-
|
|
25570
|
-
|
|
25571
|
-
|
|
25572
|
-
|
|
25573
|
-
|
|
25574
|
-
|
|
25575
|
-
|
|
25576
|
-
|
|
25577
|
-
|
|
25578
|
-
|
|
25579
|
-
|
|
25580
|
-
|
|
25581
|
-
|
|
25582
|
-
|
|
25583
|
-
|
|
25584
|
-
|
|
25585
|
-
|
|
25586
|
-
|
|
25587
|
-
|
|
25588
|
-
|
|
25589
|
-
|
|
25590
|
-
|
|
25591
|
-
|
|
25592
|
-
|
|
25593
|
-
|
|
25594
|
-
|
|
25595
|
-
|
|
25596
|
-
|
|
25597
|
-
|
|
25598
|
-
|
|
25599
|
-
|
|
25600
|
-
|
|
25601
|
-
|
|
25602
|
-
|
|
25603
|
-
|
|
25604
|
-
|
|
25605
|
-
|
|
25606
|
-
if (ev.target.tagName === 'ION-PICKER-COLUMN-INTERNAL') {
|
|
25607
|
-
/**
|
|
25608
|
-
* If user taps 2 different columns
|
|
25609
|
-
* then we should just switch to input mode
|
|
25610
|
-
* for the new column rather than switching to
|
|
25611
|
-
* input mode for all columns.
|
|
25612
|
-
*/
|
|
25613
|
-
if (inputModeColumn && inputModeColumn === ev.target) {
|
|
25614
|
-
this.actionOnClick = () => {
|
|
25615
|
-
this.enterInputMode();
|
|
25616
|
-
};
|
|
25617
|
-
}
|
|
25618
|
-
else {
|
|
25619
|
-
this.actionOnClick = () => {
|
|
25620
|
-
this.enterInputMode(ev.target);
|
|
25621
|
-
};
|
|
25622
|
-
}
|
|
25623
|
-
}
|
|
25624
|
-
else {
|
|
25625
|
-
this.actionOnClick = () => {
|
|
25626
|
-
this.exitInputMode();
|
|
25627
|
-
};
|
|
25628
|
-
}
|
|
25629
|
-
/**
|
|
25630
|
-
* If we were not already in
|
|
25631
|
-
* input mode, then we should
|
|
25632
|
-
* enter input mode for all columns.
|
|
25633
|
-
*/
|
|
25614
|
+
this.ionPickerColChange = createEvent(this, "ionPickerColChange", 7);
|
|
25615
|
+
this.optHeight = 0;
|
|
25616
|
+
this.rotateFactor = 0;
|
|
25617
|
+
this.scaleFactor = 1;
|
|
25618
|
+
this.velocity = 0;
|
|
25619
|
+
this.y = 0;
|
|
25620
|
+
this.noAnimate = true;
|
|
25621
|
+
// `colDidChange` is a flag that gets set when the column is changed
|
|
25622
|
+
// dynamically. When this flag is set, the column will refresh
|
|
25623
|
+
// after the component re-renders to incorporate the new column data.
|
|
25624
|
+
// This is necessary because `this.refresh` queries for the option elements,
|
|
25625
|
+
// so it needs to wait for the latest elements to be available in the DOM.
|
|
25626
|
+
// Ex: column is created with 3 options. User updates the column data
|
|
25627
|
+
// to have 5 options. The column will still think it only has 3 options.
|
|
25628
|
+
this.colDidChange = false;
|
|
25629
|
+
this.col = undefined;
|
|
25630
|
+
}
|
|
25631
|
+
colChanged() {
|
|
25632
|
+
this.colDidChange = true;
|
|
25633
|
+
}
|
|
25634
|
+
async connectedCallback() {
|
|
25635
|
+
let pickerRotateFactor = 0;
|
|
25636
|
+
let pickerScaleFactor = 0.81;
|
|
25637
|
+
const mode = getIonMode$1(this);
|
|
25638
|
+
if (mode === 'ios') {
|
|
25639
|
+
pickerRotateFactor = -0.46;
|
|
25640
|
+
pickerScaleFactor = 1;
|
|
25641
|
+
}
|
|
25642
|
+
this.rotateFactor = pickerRotateFactor;
|
|
25643
|
+
this.scaleFactor = pickerScaleFactor;
|
|
25644
|
+
this.gesture = (await Promise.resolve().then(function () { return index; })).createGesture({
|
|
25645
|
+
el: this.el,
|
|
25646
|
+
gestureName: 'picker-swipe',
|
|
25647
|
+
gesturePriority: 100,
|
|
25648
|
+
threshold: 0,
|
|
25649
|
+
passive: false,
|
|
25650
|
+
onStart: (ev) => this.onStart(ev),
|
|
25651
|
+
onMove: (ev) => this.onMove(ev),
|
|
25652
|
+
onEnd: (ev) => this.onEnd(ev),
|
|
25653
|
+
});
|
|
25654
|
+
this.gesture.enable();
|
|
25655
|
+
// Options have not been initialized yet
|
|
25656
|
+
// Animation must be disabled through the `noAnimate` flag
|
|
25657
|
+
// Otherwise, the options will render
|
|
25658
|
+
// at the top of the column and transition down
|
|
25659
|
+
this.tmrId = setTimeout(() => {
|
|
25660
|
+
this.noAnimate = false;
|
|
25661
|
+
// After initialization, `refresh()` will be called
|
|
25662
|
+
// At this point, animation will be enabled. The options will
|
|
25663
|
+
// animate as they are being selected.
|
|
25664
|
+
this.refresh(true);
|
|
25665
|
+
}, 250);
|
|
25666
|
+
}
|
|
25667
|
+
componentDidLoad() {
|
|
25668
|
+
this.onDomChange();
|
|
25669
|
+
}
|
|
25670
|
+
componentDidUpdate() {
|
|
25671
|
+
// Options may have changed since last update.
|
|
25672
|
+
if (this.colDidChange) {
|
|
25673
|
+
// Animation must be disabled through the `onDomChange` parameter.
|
|
25674
|
+
// Otherwise, the recently added options will render
|
|
25675
|
+
// at the top of the column and transition down
|
|
25676
|
+
this.onDomChange(true, false);
|
|
25677
|
+
this.colDidChange = false;
|
|
25678
|
+
}
|
|
25679
|
+
}
|
|
25680
|
+
disconnectedCallback() {
|
|
25681
|
+
if (this.rafId !== undefined)
|
|
25682
|
+
cancelAnimationFrame(this.rafId);
|
|
25683
|
+
if (this.tmrId)
|
|
25684
|
+
clearTimeout(this.tmrId);
|
|
25685
|
+
if (this.gesture) {
|
|
25686
|
+
this.gesture.destroy();
|
|
25687
|
+
this.gesture = undefined;
|
|
25688
|
+
}
|
|
25689
|
+
}
|
|
25690
|
+
emitColChange() {
|
|
25691
|
+
this.ionPickerColChange.emit(this.col);
|
|
25692
|
+
}
|
|
25693
|
+
setSelected(selectedIndex, duration) {
|
|
25694
|
+
// if there is a selected index, then figure out it's y position
|
|
25695
|
+
// if there isn't a selected index, then just use the top y position
|
|
25696
|
+
const y = selectedIndex > -1 ? -(selectedIndex * this.optHeight) : 0;
|
|
25697
|
+
this.velocity = 0;
|
|
25698
|
+
// set what y position we're at
|
|
25699
|
+
if (this.rafId !== undefined)
|
|
25700
|
+
cancelAnimationFrame(this.rafId);
|
|
25701
|
+
this.update(y, duration, true);
|
|
25702
|
+
this.emitColChange();
|
|
25703
|
+
}
|
|
25704
|
+
update(y, duration, saveY) {
|
|
25705
|
+
if (!this.optsEl) {
|
|
25706
|
+
return;
|
|
25707
|
+
}
|
|
25708
|
+
// ensure we've got a good round number :)
|
|
25709
|
+
let translateY = 0;
|
|
25710
|
+
let translateZ = 0;
|
|
25711
|
+
const { col, rotateFactor } = this;
|
|
25712
|
+
const prevSelected = col.selectedIndex;
|
|
25713
|
+
const selectedIndex = (col.selectedIndex = this.indexForY(-y));
|
|
25714
|
+
const durationStr = duration === 0 ? '' : duration + 'ms';
|
|
25715
|
+
const scaleStr = `scale(${this.scaleFactor})`;
|
|
25716
|
+
const children = this.optsEl.children;
|
|
25717
|
+
for (let i = 0; i < children.length; i++) {
|
|
25718
|
+
const button = children[i];
|
|
25719
|
+
const opt = col.options[i];
|
|
25720
|
+
const optOffset = i * this.optHeight + y;
|
|
25721
|
+
let transform = '';
|
|
25722
|
+
if (rotateFactor !== 0) {
|
|
25723
|
+
const rotateX = optOffset * rotateFactor;
|
|
25724
|
+
if (Math.abs(rotateX) <= 90) {
|
|
25725
|
+
translateY = 0;
|
|
25726
|
+
translateZ = 90;
|
|
25727
|
+
transform = `rotateX(${rotateX}deg) `;
|
|
25634
25728
|
}
|
|
25635
25729
|
else {
|
|
25636
|
-
|
|
25637
|
-
* If there is only 1 numeric input column
|
|
25638
|
-
* then we should skip multi column input.
|
|
25639
|
-
*/
|
|
25640
|
-
const columns = el.querySelectorAll('ion-picker-column-internal.picker-column-numeric-input');
|
|
25641
|
-
const columnEl = columns.length === 1 ? ev.target : undefined;
|
|
25642
|
-
this.actionOnClick = () => {
|
|
25643
|
-
this.enterInputMode(columnEl);
|
|
25644
|
-
};
|
|
25645
|
-
}
|
|
25646
|
-
return;
|
|
25647
|
-
}
|
|
25648
|
-
this.actionOnClick = () => {
|
|
25649
|
-
this.exitInputMode();
|
|
25650
|
-
};
|
|
25651
|
-
};
|
|
25652
|
-
/**
|
|
25653
|
-
* Enters input mode to allow
|
|
25654
|
-
* for text entry of numeric values.
|
|
25655
|
-
* If on mobile, we focus a hidden input
|
|
25656
|
-
* field so that the on screen keyboard
|
|
25657
|
-
* is brought up. When tabbing using a
|
|
25658
|
-
* keyboard, picker columns receive an outline
|
|
25659
|
-
* to indicate they are focused. As a result,
|
|
25660
|
-
* we should not focus the hidden input as it
|
|
25661
|
-
* would cause the outline to go away, preventing
|
|
25662
|
-
* users from having any visual indication of which
|
|
25663
|
-
* column is focused.
|
|
25664
|
-
*/
|
|
25665
|
-
this.enterInputMode = (columnEl, focusInput = true) => {
|
|
25666
|
-
const { inputEl, el } = this;
|
|
25667
|
-
if (!inputEl) {
|
|
25668
|
-
return;
|
|
25669
|
-
}
|
|
25670
|
-
/**
|
|
25671
|
-
* Only active input mode if there is at
|
|
25672
|
-
* least one column that accepts numeric input.
|
|
25673
|
-
*/
|
|
25674
|
-
const hasInputColumn = el.querySelector('ion-picker-column-internal.picker-column-numeric-input');
|
|
25675
|
-
if (!hasInputColumn) {
|
|
25676
|
-
return;
|
|
25677
|
-
}
|
|
25678
|
-
/**
|
|
25679
|
-
* If columnEl is undefined then
|
|
25680
|
-
* it is assumed that all numeric pickers
|
|
25681
|
-
* are eligible for text entry.
|
|
25682
|
-
* (i.e. hour and minute columns)
|
|
25683
|
-
*/
|
|
25684
|
-
this.useInputMode = true;
|
|
25685
|
-
this.inputModeColumn = columnEl;
|
|
25686
|
-
/**
|
|
25687
|
-
* Users with a keyboard and mouse can
|
|
25688
|
-
* activate input mode where the input is
|
|
25689
|
-
* focused as well as when it is not focused,
|
|
25690
|
-
* so we need to make sure we clean up any
|
|
25691
|
-
* old listeners.
|
|
25692
|
-
*/
|
|
25693
|
-
if (focusInput) {
|
|
25694
|
-
if (this.destroyKeypressListener) {
|
|
25695
|
-
this.destroyKeypressListener();
|
|
25696
|
-
this.destroyKeypressListener = undefined;
|
|
25730
|
+
translateY = -9999;
|
|
25697
25731
|
}
|
|
25698
|
-
inputEl.focus();
|
|
25699
25732
|
}
|
|
25700
25733
|
else {
|
|
25701
|
-
|
|
25702
|
-
|
|
25703
|
-
el.removeEventListener('keypress', this.onKeyPress);
|
|
25704
|
-
};
|
|
25705
|
-
}
|
|
25706
|
-
this.emitInputModeChange();
|
|
25707
|
-
};
|
|
25708
|
-
this.onKeyPress = (ev) => {
|
|
25709
|
-
const { inputEl } = this;
|
|
25710
|
-
if (!inputEl) {
|
|
25711
|
-
return;
|
|
25712
|
-
}
|
|
25713
|
-
const parsedValue = parseInt(ev.key, 10);
|
|
25714
|
-
/**
|
|
25715
|
-
* Only numbers should be allowed
|
|
25716
|
-
*/
|
|
25717
|
-
if (!Number.isNaN(parsedValue)) {
|
|
25718
|
-
inputEl.value += ev.key;
|
|
25719
|
-
this.onInputChange();
|
|
25720
|
-
}
|
|
25721
|
-
};
|
|
25722
|
-
this.selectSingleColumn = () => {
|
|
25723
|
-
const { inputEl, inputModeColumn, singleColumnSearchTimeout } = this;
|
|
25724
|
-
if (!inputEl || !inputModeColumn) {
|
|
25725
|
-
return;
|
|
25726
|
-
}
|
|
25727
|
-
const values = inputModeColumn.items.filter((item) => item.disabled !== true);
|
|
25728
|
-
/**
|
|
25729
|
-
* If users pause for a bit, the search
|
|
25730
|
-
* value should be reset similar to how a
|
|
25731
|
-
* <select> behaves. So typing "34", waiting,
|
|
25732
|
-
* then typing "5" should select "05".
|
|
25733
|
-
*/
|
|
25734
|
-
if (singleColumnSearchTimeout) {
|
|
25735
|
-
clearTimeout(singleColumnSearchTimeout);
|
|
25736
|
-
}
|
|
25737
|
-
this.singleColumnSearchTimeout = setTimeout(() => {
|
|
25738
|
-
inputEl.value = '';
|
|
25739
|
-
this.singleColumnSearchTimeout = undefined;
|
|
25740
|
-
}, 1000);
|
|
25741
|
-
/**
|
|
25742
|
-
* For values that are longer than 2 digits long
|
|
25743
|
-
* we should shift the value over 1 character
|
|
25744
|
-
* to the left. So typing "456" would result in "56".
|
|
25745
|
-
* TODO: If we want to support more than just
|
|
25746
|
-
* time entry, we should update this value to be
|
|
25747
|
-
* the max length of all of the picker items.
|
|
25748
|
-
*/
|
|
25749
|
-
if (inputEl.value.length >= 3) {
|
|
25750
|
-
const startIndex = inputEl.value.length - 2;
|
|
25751
|
-
const newString = inputEl.value.substring(startIndex);
|
|
25752
|
-
inputEl.value = newString;
|
|
25753
|
-
this.selectSingleColumn();
|
|
25754
|
-
return;
|
|
25755
|
-
}
|
|
25756
|
-
/**
|
|
25757
|
-
* Checking the value of the input gets priority
|
|
25758
|
-
* first. For example, if the value of the input
|
|
25759
|
-
* is "1" and we entered "2", then the complete value
|
|
25760
|
-
* is "12" and we should select hour 12.
|
|
25761
|
-
*
|
|
25762
|
-
* Regex removes any leading zeros from values like "02",
|
|
25763
|
-
* but it keeps a single zero if there are only zeros in the string.
|
|
25764
|
-
* 0+(?=[1-9]) --> Match 1 or more zeros that are followed by 1-9
|
|
25765
|
-
* 0+(?=0$) --> Match 1 or more zeros that must be followed by one 0 and end.
|
|
25766
|
-
*/
|
|
25767
|
-
const findItemFromCompleteValue = values.find(({ text }) => {
|
|
25768
|
-
const parsedText = text.replace(/^0+(?=[1-9])|0+(?=0$)/, '');
|
|
25769
|
-
return parsedText === inputEl.value;
|
|
25770
|
-
});
|
|
25771
|
-
if (findItemFromCompleteValue) {
|
|
25772
|
-
inputModeColumn.setValue(findItemFromCompleteValue.value);
|
|
25773
|
-
return;
|
|
25774
|
-
}
|
|
25775
|
-
/**
|
|
25776
|
-
* If we typed "56" to get minute 56, then typed "7",
|
|
25777
|
-
* we should select "07" as "567" is not a valid minute.
|
|
25778
|
-
*/
|
|
25779
|
-
if (inputEl.value.length === 2) {
|
|
25780
|
-
const changedCharacter = inputEl.value.substring(inputEl.value.length - 1);
|
|
25781
|
-
inputEl.value = changedCharacter;
|
|
25782
|
-
this.selectSingleColumn();
|
|
25734
|
+
translateZ = 0;
|
|
25735
|
+
translateY = optOffset;
|
|
25783
25736
|
}
|
|
25784
|
-
|
|
25785
|
-
|
|
25786
|
-
|
|
25787
|
-
|
|
25788
|
-
* The zeroBehavior can be set to account for leading
|
|
25789
|
-
* or trailing zeros when looking at the item text.
|
|
25790
|
-
*/
|
|
25791
|
-
this.searchColumn = (colEl, value, zeroBehavior = 'start') => {
|
|
25792
|
-
const behavior = zeroBehavior === 'start' ? /^0+/ : /0$/;
|
|
25793
|
-
const item = colEl.items.find(({ text, disabled }) => disabled !== true && text.replace(behavior, '') === value);
|
|
25794
|
-
if (item) {
|
|
25795
|
-
colEl.setValue(item.value);
|
|
25737
|
+
const selected = selectedIndex === i;
|
|
25738
|
+
transform += `translate3d(0px,${translateY}px,${translateZ}px) `;
|
|
25739
|
+
if (this.scaleFactor !== 1 && !selected) {
|
|
25740
|
+
transform += scaleStr;
|
|
25796
25741
|
}
|
|
25797
|
-
|
|
25798
|
-
|
|
25799
|
-
|
|
25800
|
-
|
|
25801
|
-
return;
|
|
25742
|
+
// Update transition duration
|
|
25743
|
+
if (this.noAnimate) {
|
|
25744
|
+
opt.duration = 0;
|
|
25745
|
+
button.style.transitionDuration = '';
|
|
25802
25746
|
}
|
|
25803
|
-
|
|
25804
|
-
|
|
25805
|
-
|
|
25806
|
-
let value = inputEl.value;
|
|
25807
|
-
let minuteValue;
|
|
25808
|
-
switch (value.length) {
|
|
25809
|
-
case 1:
|
|
25810
|
-
this.searchColumn(firstColumn, value);
|
|
25811
|
-
break;
|
|
25812
|
-
case 2:
|
|
25813
|
-
/**
|
|
25814
|
-
* If the first character is `0` or `1` it is
|
|
25815
|
-
* possible that users are trying to type `09`
|
|
25816
|
-
* or `11` into the hour field, so we should look
|
|
25817
|
-
* at that first.
|
|
25818
|
-
*/
|
|
25819
|
-
const firstCharacter = inputEl.value.substring(0, 1);
|
|
25820
|
-
value = firstCharacter === '0' || firstCharacter === '1' ? inputEl.value : firstCharacter;
|
|
25821
|
-
this.searchColumn(firstColumn, value);
|
|
25822
|
-
/**
|
|
25823
|
-
* If only checked the first value,
|
|
25824
|
-
* we can check the second value
|
|
25825
|
-
* for a match in the minutes column
|
|
25826
|
-
*/
|
|
25827
|
-
if (value.length === 1) {
|
|
25828
|
-
minuteValue = inputEl.value.substring(inputEl.value.length - 1);
|
|
25829
|
-
this.searchColumn(lastColumn, minuteValue, 'end');
|
|
25830
|
-
}
|
|
25831
|
-
break;
|
|
25832
|
-
case 3:
|
|
25833
|
-
/**
|
|
25834
|
-
* If the first character is `0` or `1` it is
|
|
25835
|
-
* possible that users are trying to type `09`
|
|
25836
|
-
* or `11` into the hour field, so we should look
|
|
25837
|
-
* at that first.
|
|
25838
|
-
*/
|
|
25839
|
-
const firstCharacterAgain = inputEl.value.substring(0, 1);
|
|
25840
|
-
value =
|
|
25841
|
-
firstCharacterAgain === '0' || firstCharacterAgain === '1'
|
|
25842
|
-
? inputEl.value.substring(0, 2)
|
|
25843
|
-
: firstCharacterAgain;
|
|
25844
|
-
this.searchColumn(firstColumn, value);
|
|
25845
|
-
/**
|
|
25846
|
-
* If only checked the first value,
|
|
25847
|
-
* we can check the second value
|
|
25848
|
-
* for a match in the minutes column
|
|
25849
|
-
*/
|
|
25850
|
-
minuteValue = value.length === 1 ? inputEl.value.substring(1) : inputEl.value.substring(2);
|
|
25851
|
-
this.searchColumn(lastColumn, minuteValue, 'end');
|
|
25852
|
-
break;
|
|
25853
|
-
case 4:
|
|
25854
|
-
/**
|
|
25855
|
-
* If the first character is `0` or `1` it is
|
|
25856
|
-
* possible that users are trying to type `09`
|
|
25857
|
-
* or `11` into the hour field, so we should look
|
|
25858
|
-
* at that first.
|
|
25859
|
-
*/
|
|
25860
|
-
const firstCharacterAgainAgain = inputEl.value.substring(0, 1);
|
|
25861
|
-
value =
|
|
25862
|
-
firstCharacterAgainAgain === '0' || firstCharacterAgainAgain === '1'
|
|
25863
|
-
? inputEl.value.substring(0, 2)
|
|
25864
|
-
: firstCharacterAgainAgain;
|
|
25865
|
-
this.searchColumn(firstColumn, value);
|
|
25866
|
-
/**
|
|
25867
|
-
* If only checked the first value,
|
|
25868
|
-
* we can check the second value
|
|
25869
|
-
* for a match in the minutes column
|
|
25870
|
-
*/
|
|
25871
|
-
const minuteValueAgain = value.length === 1
|
|
25872
|
-
? inputEl.value.substring(1, inputEl.value.length)
|
|
25873
|
-
: inputEl.value.substring(2, inputEl.value.length);
|
|
25874
|
-
this.searchColumn(lastColumn, minuteValueAgain, 'end');
|
|
25875
|
-
break;
|
|
25876
|
-
default:
|
|
25877
|
-
const startIndex = inputEl.value.length - 4;
|
|
25878
|
-
const newString = inputEl.value.substring(startIndex);
|
|
25879
|
-
inputEl.value = newString;
|
|
25880
|
-
this.selectMultiColumn();
|
|
25881
|
-
break;
|
|
25747
|
+
else if (duration !== opt.duration) {
|
|
25748
|
+
opt.duration = duration;
|
|
25749
|
+
button.style.transitionDuration = durationStr;
|
|
25882
25750
|
}
|
|
25883
|
-
|
|
25884
|
-
|
|
25885
|
-
|
|
25886
|
-
* to determine which value users are trying
|
|
25887
|
-
* to select
|
|
25888
|
-
*/
|
|
25889
|
-
this.onInputChange = () => {
|
|
25890
|
-
const { useInputMode, inputEl, inputModeColumn } = this;
|
|
25891
|
-
if (!useInputMode || !inputEl) {
|
|
25892
|
-
return;
|
|
25751
|
+
// Update transform
|
|
25752
|
+
if (transform !== opt.transform) {
|
|
25753
|
+
opt.transform = transform;
|
|
25893
25754
|
}
|
|
25894
|
-
|
|
25895
|
-
|
|
25755
|
+
button.style.transform = transform;
|
|
25756
|
+
/**
|
|
25757
|
+
* Ensure that the select column
|
|
25758
|
+
* item has the selected class
|
|
25759
|
+
*/
|
|
25760
|
+
opt.selected = selected;
|
|
25761
|
+
if (selected) {
|
|
25762
|
+
button.classList.add(PICKER_OPT_SELECTED);
|
|
25896
25763
|
}
|
|
25897
25764
|
else {
|
|
25898
|
-
|
|
25765
|
+
button.classList.remove(PICKER_OPT_SELECTED);
|
|
25899
25766
|
}
|
|
25900
|
-
}
|
|
25901
|
-
|
|
25902
|
-
|
|
25903
|
-
|
|
25904
|
-
|
|
25905
|
-
|
|
25906
|
-
|
|
25907
|
-
|
|
25908
|
-
this.
|
|
25909
|
-
|
|
25910
|
-
inputModeColumn,
|
|
25911
|
-
});
|
|
25912
|
-
};
|
|
25767
|
+
}
|
|
25768
|
+
this.col.prevSelected = prevSelected;
|
|
25769
|
+
if (saveY) {
|
|
25770
|
+
this.y = y;
|
|
25771
|
+
}
|
|
25772
|
+
if (this.lastIndex !== selectedIndex) {
|
|
25773
|
+
// have not set a last index yet
|
|
25774
|
+
hapticSelectionChanged();
|
|
25775
|
+
this.lastIndex = selectedIndex;
|
|
25776
|
+
}
|
|
25913
25777
|
}
|
|
25914
|
-
|
|
25915
|
-
|
|
25916
|
-
|
|
25917
|
-
|
|
25918
|
-
|
|
25919
|
-
|
|
25920
|
-
|
|
25921
|
-
|
|
25922
|
-
|
|
25923
|
-
|
|
25778
|
+
decelerate() {
|
|
25779
|
+
if (this.velocity !== 0) {
|
|
25780
|
+
// still decelerating
|
|
25781
|
+
this.velocity *= DECELERATION_FRICTION;
|
|
25782
|
+
// do not let it go slower than a velocity of 1
|
|
25783
|
+
this.velocity = this.velocity > 0 ? Math.max(this.velocity, 1) : Math.min(this.velocity, -1);
|
|
25784
|
+
let y = this.y + this.velocity;
|
|
25785
|
+
if (y > this.minY) {
|
|
25786
|
+
// whoops, it's trying to scroll up farther than the options we have!
|
|
25787
|
+
y = this.minY;
|
|
25788
|
+
this.velocity = 0;
|
|
25789
|
+
}
|
|
25790
|
+
else if (y < this.maxY) {
|
|
25791
|
+
// gahh, it's trying to scroll down farther than we can!
|
|
25792
|
+
y = this.maxY;
|
|
25793
|
+
this.velocity = 0;
|
|
25794
|
+
}
|
|
25795
|
+
this.update(y, 0, true);
|
|
25796
|
+
const notLockedIn = Math.round(y) % this.optHeight !== 0 || Math.abs(this.velocity) > 1;
|
|
25797
|
+
if (notLockedIn) {
|
|
25798
|
+
// isn't locked in yet, keep decelerating until it is
|
|
25799
|
+
this.rafId = requestAnimationFrame(() => this.decelerate());
|
|
25800
|
+
}
|
|
25801
|
+
else {
|
|
25802
|
+
this.velocity = 0;
|
|
25803
|
+
this.emitColChange();
|
|
25804
|
+
hapticSelectionEnd();
|
|
25805
|
+
}
|
|
25806
|
+
}
|
|
25807
|
+
else if (this.y % this.optHeight !== 0) {
|
|
25808
|
+
// needs to still get locked into a position so options line up
|
|
25809
|
+
const currentPos = Math.abs(this.y % this.optHeight);
|
|
25810
|
+
// create a velocity in the direction it needs to scroll
|
|
25811
|
+
this.velocity = currentPos > this.optHeight / 2 ? 1 : -1;
|
|
25812
|
+
this.decelerate();
|
|
25813
|
+
}
|
|
25924
25814
|
}
|
|
25925
|
-
|
|
25926
|
-
|
|
25927
|
-
getElementRoot(this.el).addEventListener('focusout', this.onFocusOut);
|
|
25815
|
+
indexForY(y) {
|
|
25816
|
+
return Math.min(Math.max(Math.abs(Math.round(y / this.optHeight)), 0), this.col.options.length - 1);
|
|
25928
25817
|
}
|
|
25929
|
-
|
|
25930
|
-
|
|
25931
|
-
|
|
25932
|
-
|
|
25933
|
-
|
|
25934
|
-
|
|
25935
|
-
|
|
25936
|
-
|
|
25937
|
-
|
|
25818
|
+
onStart(detail) {
|
|
25819
|
+
// We have to prevent default in order to block scrolling under the picker
|
|
25820
|
+
// but we DO NOT have to stop propagation, since we still want
|
|
25821
|
+
// some "click" events to capture
|
|
25822
|
+
if (detail.event.cancelable) {
|
|
25823
|
+
detail.event.preventDefault();
|
|
25824
|
+
}
|
|
25825
|
+
detail.event.stopPropagation();
|
|
25826
|
+
hapticSelectionStart();
|
|
25827
|
+
// reset everything
|
|
25828
|
+
if (this.rafId !== undefined)
|
|
25829
|
+
cancelAnimationFrame(this.rafId);
|
|
25830
|
+
const options = this.col.options;
|
|
25831
|
+
let minY = options.length - 1;
|
|
25832
|
+
let maxY = 0;
|
|
25833
|
+
for (let i = 0; i < options.length; i++) {
|
|
25834
|
+
if (!options[i].disabled) {
|
|
25835
|
+
minY = Math.min(minY, i);
|
|
25836
|
+
maxY = Math.max(maxY, i);
|
|
25837
|
+
}
|
|
25838
|
+
}
|
|
25839
|
+
this.minY = -(minY * this.optHeight);
|
|
25840
|
+
this.maxY = -(maxY * this.optHeight);
|
|
25841
|
+
}
|
|
25842
|
+
onMove(detail) {
|
|
25843
|
+
if (detail.event.cancelable) {
|
|
25844
|
+
detail.event.preventDefault();
|
|
25845
|
+
}
|
|
25846
|
+
detail.event.stopPropagation();
|
|
25847
|
+
// update the scroll position relative to pointer start position
|
|
25848
|
+
let y = this.y + detail.deltaY;
|
|
25849
|
+
if (y > this.minY) {
|
|
25850
|
+
// scrolling up higher than scroll area
|
|
25851
|
+
y = Math.pow(y, 0.8);
|
|
25852
|
+
this.bounceFrom = y;
|
|
25853
|
+
}
|
|
25854
|
+
else if (y < this.maxY) {
|
|
25855
|
+
// scrolling down below scroll area
|
|
25856
|
+
y += Math.pow(this.maxY - y, 0.9);
|
|
25857
|
+
this.bounceFrom = y;
|
|
25858
|
+
}
|
|
25859
|
+
else {
|
|
25860
|
+
this.bounceFrom = 0;
|
|
25861
|
+
}
|
|
25862
|
+
this.update(y, 0, false);
|
|
25863
|
+
}
|
|
25864
|
+
onEnd(detail) {
|
|
25865
|
+
if (this.bounceFrom > 0) {
|
|
25866
|
+
// bounce back up
|
|
25867
|
+
this.update(this.minY, 100, true);
|
|
25868
|
+
this.emitColChange();
|
|
25938
25869
|
return;
|
|
25939
25870
|
}
|
|
25940
|
-
this.
|
|
25941
|
-
|
|
25942
|
-
|
|
25943
|
-
|
|
25944
|
-
|
|
25945
|
-
this.destroyKeypressListener();
|
|
25946
|
-
this.destroyKeypressListener = undefined;
|
|
25871
|
+
else if (this.bounceFrom < 0) {
|
|
25872
|
+
// bounce back down
|
|
25873
|
+
this.update(this.maxY, 100, true);
|
|
25874
|
+
this.emitColChange();
|
|
25875
|
+
return;
|
|
25947
25876
|
}
|
|
25948
|
-
this.
|
|
25877
|
+
this.velocity = clamp(-MAX_PICKER_SPEED, detail.velocityY * 23, MAX_PICKER_SPEED);
|
|
25878
|
+
if (this.velocity === 0 && detail.deltaY === 0) {
|
|
25879
|
+
const opt = detail.event.target.closest('.picker-opt');
|
|
25880
|
+
if (opt === null || opt === void 0 ? void 0 : opt.hasAttribute('opt-index')) {
|
|
25881
|
+
this.setSelected(parseInt(opt.getAttribute('opt-index'), 10), TRANSITION_DURATION);
|
|
25882
|
+
}
|
|
25883
|
+
}
|
|
25884
|
+
else {
|
|
25885
|
+
this.y += detail.deltaY;
|
|
25886
|
+
if (Math.abs(detail.velocityY) < 0.05) {
|
|
25887
|
+
const isScrollingUp = detail.deltaY > 0;
|
|
25888
|
+
const optHeightFraction = (Math.abs(this.y) % this.optHeight) / this.optHeight;
|
|
25889
|
+
if (isScrollingUp && optHeightFraction > 0.5) {
|
|
25890
|
+
this.velocity = Math.abs(this.velocity) * -1;
|
|
25891
|
+
}
|
|
25892
|
+
else if (!isScrollingUp && optHeightFraction <= 0.5) {
|
|
25893
|
+
this.velocity = Math.abs(this.velocity);
|
|
25894
|
+
}
|
|
25895
|
+
}
|
|
25896
|
+
this.decelerate();
|
|
25897
|
+
}
|
|
25898
|
+
}
|
|
25899
|
+
refresh(forceRefresh, animated) {
|
|
25900
|
+
var _a;
|
|
25901
|
+
let min = this.col.options.length - 1;
|
|
25902
|
+
let max = 0;
|
|
25903
|
+
const options = this.col.options;
|
|
25904
|
+
for (let i = 0; i < options.length; i++) {
|
|
25905
|
+
if (!options[i].disabled) {
|
|
25906
|
+
min = Math.min(min, i);
|
|
25907
|
+
max = Math.max(max, i);
|
|
25908
|
+
}
|
|
25909
|
+
}
|
|
25910
|
+
/**
|
|
25911
|
+
* Only update selected value if column has a
|
|
25912
|
+
* velocity of 0. If it does not, then the
|
|
25913
|
+
* column is animating might land on
|
|
25914
|
+
* a value different than the value at
|
|
25915
|
+
* selectedIndex
|
|
25916
|
+
*/
|
|
25917
|
+
if (this.velocity !== 0) {
|
|
25918
|
+
return;
|
|
25919
|
+
}
|
|
25920
|
+
const selectedIndex = clamp(min, (_a = this.col.selectedIndex) !== null && _a !== void 0 ? _a : 0, max);
|
|
25921
|
+
if (this.col.prevSelected !== selectedIndex || forceRefresh) {
|
|
25922
|
+
const y = selectedIndex * this.optHeight * -1;
|
|
25923
|
+
const duration = animated ? TRANSITION_DURATION : 0;
|
|
25924
|
+
this.velocity = 0;
|
|
25925
|
+
this.update(y, duration, true);
|
|
25926
|
+
}
|
|
25927
|
+
}
|
|
25928
|
+
onDomChange(forceRefresh, animated) {
|
|
25929
|
+
const colEl = this.optsEl;
|
|
25930
|
+
if (colEl) {
|
|
25931
|
+
// DOM READ
|
|
25932
|
+
// We perfom a DOM read over a rendered item, this needs to happen after the first render or after the the column has changed
|
|
25933
|
+
this.optHeight = colEl.firstElementChild ? colEl.firstElementChild.clientHeight : 0;
|
|
25934
|
+
}
|
|
25935
|
+
this.refresh(forceRefresh, animated);
|
|
25949
25936
|
}
|
|
25950
25937
|
render() {
|
|
25951
|
-
|
|
25938
|
+
const col = this.col;
|
|
25939
|
+
const mode = getIonMode$1(this);
|
|
25940
|
+
return (hAsync(Host, { class: Object.assign({ [mode]: true, 'picker-col': true, 'picker-opts-left': this.col.align === 'left', 'picker-opts-right': this.col.align === 'right' }, getClassMap(col.cssClass)), style: {
|
|
25941
|
+
'max-width': this.col.columnWidth,
|
|
25942
|
+
} }, col.prefix && (hAsync("div", { class: "picker-prefix", style: { width: col.prefixWidth } }, col.prefix)), hAsync("div", { class: "picker-opts", style: { maxWidth: col.optionsWidth }, ref: (el) => (this.optsEl = el) }, col.options.map((o, index) => (hAsync("button", { "aria-label": o.ariaLabel, class: { 'picker-opt': true, 'picker-opt-disabled': !!o.disabled }, "opt-index": index }, o.text)))), col.suffix && (hAsync("div", { class: "picker-suffix", style: { width: col.suffixWidth } }, col.suffix))));
|
|
25952
25943
|
}
|
|
25953
25944
|
get el() { return getElement(this); }
|
|
25945
|
+
static get watchers() { return {
|
|
25946
|
+
"col": ["colChanged"]
|
|
25947
|
+
}; }
|
|
25954
25948
|
static get style() { return {
|
|
25955
|
-
ios:
|
|
25956
|
-
md:
|
|
25949
|
+
ios: pickerColumnIosCss,
|
|
25950
|
+
md: pickerColumnMdCss
|
|
25957
25951
|
}; }
|
|
25958
25952
|
static get cmpMeta() { return {
|
|
25959
|
-
"$flags$":
|
|
25960
|
-
"$tagName$": "ion-picker-
|
|
25953
|
+
"$flags$": 32,
|
|
25954
|
+
"$tagName$": "ion-picker-legacy-column",
|
|
25961
25955
|
"$members$": {
|
|
25962
|
-
"
|
|
25956
|
+
"col": [16]
|
|
25963
25957
|
},
|
|
25964
|
-
"$listeners$":
|
|
25958
|
+
"$listeners$": undefined,
|
|
25965
25959
|
"$lazyBundleId$": "-",
|
|
25966
25960
|
"$attrsToReflect$": []
|
|
25967
25961
|
}; }
|
|
25968
25962
|
}
|
|
25963
|
+
const PICKER_OPT_SELECTED = 'picker-opt-selected';
|
|
25964
|
+
const DECELERATION_FRICTION = 0.97;
|
|
25965
|
+
const MAX_PICKER_SPEED = 90;
|
|
25966
|
+
const TRANSITION_DURATION = 150;
|
|
25969
25967
|
|
|
25970
25968
|
/**
|
|
25971
25969
|
* Returns the dimensions of the popover
|
|
@@ -34930,10 +34928,10 @@ registerComponents([
|
|
|
34930
34928
|
Nav,
|
|
34931
34929
|
NavLink,
|
|
34932
34930
|
Note,
|
|
34931
|
+
Picker$1,
|
|
34933
34932
|
Picker,
|
|
34933
|
+
PickerColumn,
|
|
34934
34934
|
PickerColumnCmp,
|
|
34935
|
-
PickerColumnInternal,
|
|
34936
|
-
PickerInternal,
|
|
34937
34935
|
Popover,
|
|
34938
34936
|
ProgressBar,
|
|
34939
34937
|
Radio,
|