@ionic/core 8.6.2-dev.11749668763.17db572c → 8.6.2-dev.11749761258.1b46b6a9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/ion-reorder-group.js +2 -21
- package/components/picker-column.js +22 -4
- package/dist/cjs/ion-picker-column.cjs.entry.js +22 -4
- package/dist/cjs/ion-reorder_2.cjs.entry.js +2 -21
- package/dist/collection/components/picker-column/picker-column.js +22 -4
- package/dist/collection/components/reorder-group/reorder-group.js +5 -81
- package/dist/docs.json +3 -73
- package/dist/esm/ion-picker-column.entry.js +22 -4
- package/dist/esm/ion-reorder_2.entry.js +2 -21
- package/dist/ionic/ionic.esm.js +1 -1
- package/dist/ionic/p-2020aa51.entry.js +4 -0
- package/dist/ionic/p-2dca6aac.entry.js +4 -0
- package/dist/types/components/reorder-group/reorder-group-interface.d.ts +0 -17
- package/dist/types/components/reorder-group/reorder-group.d.ts +4 -23
- package/dist/types/components.d.ts +4 -19
- package/dist/types/interface.d.ts +1 -5
- package/hydrate/index.js +24 -25
- package/hydrate/index.mjs +24 -25
- package/package.json +1 -1
- package/dist/ionic/p-14ae45e4.entry.js +0 -4
- package/dist/ionic/p-adfb508e.entry.js +0 -4
package/hydrate/index.mjs
CHANGED
|
@@ -24620,7 +24620,25 @@ class PickerColumn {
|
|
|
24620
24620
|
* elementsFromPoint can returns multiple elements
|
|
24621
24621
|
* so find the relevant picker column option if one exists.
|
|
24622
24622
|
*/
|
|
24623
|
-
|
|
24623
|
+
let newActiveElement = elementsAtPoint.find((el) => el.tagName === 'ION-PICKER-COLUMN-OPTION');
|
|
24624
|
+
/**
|
|
24625
|
+
* TODO(FW-6594): Remove this workaround when iOS 16 is no longer
|
|
24626
|
+
* supported.
|
|
24627
|
+
*
|
|
24628
|
+
* If `elementsFromPoint` failed to find the active element (a known
|
|
24629
|
+
* issue on iOS 16 when elements are in a Shadow DOM and the
|
|
24630
|
+
* referenceNode is the document), a fallback to `elementFromPoint`
|
|
24631
|
+
* is used. While `elementsFromPoint` returns all elements,
|
|
24632
|
+
* `elementFromPoint` returns only the top-most, which is sufficient
|
|
24633
|
+
* for this use case and appears to handle Shadow DOM retargeting
|
|
24634
|
+
* more reliably in this specific iOS bug.
|
|
24635
|
+
*/
|
|
24636
|
+
if (newActiveElement === undefined) {
|
|
24637
|
+
const fallbackActiveElement = referenceNode.elementFromPoint(centerX, centerY);
|
|
24638
|
+
if ((fallbackActiveElement === null || fallbackActiveElement === void 0 ? void 0 : fallbackActiveElement.tagName) === 'ION-PICKER-COLUMN-OPTION') {
|
|
24639
|
+
newActiveElement = fallbackActiveElement;
|
|
24640
|
+
}
|
|
24641
|
+
}
|
|
24624
24642
|
if (activeEl !== undefined) {
|
|
24625
24643
|
this.setPickerItemActiveState(activeEl, false);
|
|
24626
24644
|
}
|
|
@@ -24988,12 +25006,12 @@ class PickerColumn {
|
|
|
24988
25006
|
render() {
|
|
24989
25007
|
const { color, disabled, isActive, numericInput } = this;
|
|
24990
25008
|
const mode = getIonMode$1(this);
|
|
24991
|
-
return (hAsync(Host, { key: '
|
|
25009
|
+
return (hAsync(Host, { key: 'ea0280355b2f87895bf7dddd289ccf473aa759f3', class: createColorClasses$1(color, {
|
|
24992
25010
|
[mode]: true,
|
|
24993
25011
|
['picker-column-active']: isActive,
|
|
24994
25012
|
['picker-column-numeric-input']: numericInput,
|
|
24995
25013
|
['picker-column-disabled']: disabled,
|
|
24996
|
-
}) }, this.renderAssistiveFocusable(), hAsync("slot", { key: '
|
|
25014
|
+
}) }, this.renderAssistiveFocusable(), hAsync("slot", { key: '482992131cdeb85b1f61430d7fe1322a16345769', name: "prefix" }), hAsync("div", { key: '43f7f80d621d411ef366b3ca1396299e8c9a0c97', "aria-hidden": "true", class: "picker-opts", ref: (el) => {
|
|
24997
25015
|
this.scrollEl = el;
|
|
24998
25016
|
},
|
|
24999
25017
|
/**
|
|
@@ -25014,7 +25032,7 @@ class PickerColumn {
|
|
|
25014
25032
|
* To prevent this, we set the tabIndex to -1. This
|
|
25015
25033
|
* will match the behavior of the other browsers.
|
|
25016
25034
|
*/
|
|
25017
|
-
tabIndex: -1 }, hAsync("div", { key: '
|
|
25035
|
+
tabIndex: -1 }, hAsync("div", { key: '13a9ee686132af32240710730765de4c0003a9e8', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { key: 'dbccba4920833cfcebe9b0fc763458ec3053705a', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { key: '682b43f83a5ea2e46067457f3af118535e111edb', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("slot", { key: 'd27e1e1dc0504b2f4627a29912a05bb91e8e413a' }), hAsync("div", { key: '61c948dbb9cf7469aed3018542bc0954211585ba', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { key: 'cf46c277fbee65e35ff44ce0d53ce12aa9cbf9db', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { key: 'bbc0e2d491d3f836ab849493ade2f7fa6ad9244e', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0")), hAsync("slot", { key: 'd25cbbe14b2914fe7b878d43b4e3f4a8c8177d24', name: "suffix" })));
|
|
25018
25036
|
}
|
|
25019
25037
|
get el() { return getElement(this); }
|
|
25020
25038
|
static get watchers() { return {
|
|
@@ -29399,9 +29417,6 @@ class ReorderGroup {
|
|
|
29399
29417
|
constructor(hostRef) {
|
|
29400
29418
|
registerInstance(this, hostRef);
|
|
29401
29419
|
this.ionItemReorder = createEvent(this, "ionItemReorder", 7);
|
|
29402
|
-
this.ionReorderStart = createEvent(this, "ionReorderStart", 7);
|
|
29403
|
-
this.ionReorderMove = createEvent(this, "ionReorderMove", 7);
|
|
29404
|
-
this.ionReorderEnd = createEvent(this, "ionReorderEnd", 7);
|
|
29405
29420
|
this.lastToIndex = -1;
|
|
29406
29421
|
this.cachedHeights = [];
|
|
29407
29422
|
this.scrollElTop = 0;
|
|
@@ -29447,7 +29462,7 @@ class ReorderGroup {
|
|
|
29447
29462
|
}
|
|
29448
29463
|
}
|
|
29449
29464
|
/**
|
|
29450
|
-
* Completes the reorder operation. Must be called by the `
|
|
29465
|
+
* Completes the reorder operation. Must be called by the `ionItemReorder` event.
|
|
29451
29466
|
*
|
|
29452
29467
|
* If a list of items is passed, the list will be reordered and returned in the
|
|
29453
29468
|
* proper order.
|
|
@@ -29514,7 +29529,6 @@ class ReorderGroup {
|
|
|
29514
29529
|
this.state = 1 /* ReorderGroupState.Active */;
|
|
29515
29530
|
item.classList.add(ITEM_REORDER_SELECTED);
|
|
29516
29531
|
hapticSelectionStart();
|
|
29517
|
-
this.ionReorderStart.emit();
|
|
29518
29532
|
}
|
|
29519
29533
|
onMove(ev) {
|
|
29520
29534
|
const selectedItem = this.selectedItemEl;
|
|
@@ -29529,7 +29543,6 @@ class ReorderGroup {
|
|
|
29529
29543
|
const currentY = Math.max(top, Math.min(ev.currentY, bottom));
|
|
29530
29544
|
const deltaY = scroll + currentY - ev.startY;
|
|
29531
29545
|
const normalizedY = currentY - top;
|
|
29532
|
-
const fromIndex = this.lastToIndex;
|
|
29533
29546
|
const toIndex = this.itemIndexForTop(normalizedY);
|
|
29534
29547
|
if (toIndex !== this.lastToIndex) {
|
|
29535
29548
|
const fromIndex = indexForItem(selectedItem);
|
|
@@ -29539,10 +29552,6 @@ class ReorderGroup {
|
|
|
29539
29552
|
}
|
|
29540
29553
|
// Update selected item position
|
|
29541
29554
|
selectedItem.style.transform = `translateY(${deltaY}px)`;
|
|
29542
|
-
this.ionReorderMove.emit({
|
|
29543
|
-
from: fromIndex,
|
|
29544
|
-
to: toIndex,
|
|
29545
|
-
});
|
|
29546
29555
|
}
|
|
29547
29556
|
onEnd() {
|
|
29548
29557
|
const selectedItemEl = this.selectedItemEl;
|
|
@@ -29554,14 +29563,9 @@ class ReorderGroup {
|
|
|
29554
29563
|
const toIndex = this.lastToIndex;
|
|
29555
29564
|
const fromIndex = indexForItem(selectedItemEl);
|
|
29556
29565
|
if (toIndex === fromIndex) {
|
|
29557
|
-
// TODO(FW-6590): Remove this once the deprecated event is removed
|
|
29558
|
-
// Since the ionReorderEnd event is emitted at the end of every reorder
|
|
29559
|
-
// gesture, even if the item did not move, the user can always call
|
|
29560
|
-
// complete() to reset the state of the reorder group.
|
|
29561
29566
|
this.completeReorder();
|
|
29562
29567
|
}
|
|
29563
29568
|
else {
|
|
29564
|
-
// TODO(FW-6590): Remove this once the deprecated event is removed
|
|
29565
29569
|
this.ionItemReorder.emit({
|
|
29566
29570
|
from: fromIndex,
|
|
29567
29571
|
to: toIndex,
|
|
@@ -29569,11 +29573,6 @@ class ReorderGroup {
|
|
|
29569
29573
|
});
|
|
29570
29574
|
}
|
|
29571
29575
|
hapticSelectionEnd();
|
|
29572
|
-
this.ionReorderEnd.emit({
|
|
29573
|
-
from: fromIndex,
|
|
29574
|
-
to: toIndex,
|
|
29575
|
-
complete: this.completeReorder.bind(this),
|
|
29576
|
-
});
|
|
29577
29576
|
}
|
|
29578
29577
|
completeReorder(listOrReorder) {
|
|
29579
29578
|
const selectedItemEl = this.selectedItemEl;
|
|
@@ -29651,7 +29650,7 @@ class ReorderGroup {
|
|
|
29651
29650
|
}
|
|
29652
29651
|
render() {
|
|
29653
29652
|
const mode = getIonMode$1(this);
|
|
29654
|
-
return (hAsync(Host, { key: '
|
|
29653
|
+
return (hAsync(Host, { key: 'f30613b361c5c3095b7928a92fb4b1e8d6eff600', class: {
|
|
29655
29654
|
[mode]: true,
|
|
29656
29655
|
'reorder-enabled': !this.disabled,
|
|
29657
29656
|
'reorder-list-active': this.state !== 0 /* ReorderGroupState.Idle */,
|
package/package.json
CHANGED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
|
-
*/
|
|
4
|
-
import{r as t,d as i,a as e,h as s,e as n,j as o,k as a}from"./p-B_U9CtaY.js";import{d as r}from"./p-ZjP4CjeZ.js";import{r as l,g as c}from"./p-Do-uqmtX.js";import{b as d,a as h,h as p}from"./p-CKvCXMs9.js";import{c as f}from"./p-DiVJyqlX.js";import"./p-CIGNaXM1.js";const u=class{constructor(n){t(this,n),this.ionChange=i(this,"ionChange",7),this.isScrolling=!1,this.isColumnVisible=!1,this.canExitInputMode=!0,this.updateValueTextOnScroll=!1,this.ariaLabel=null,this.isActive=!1,this.disabled=!1,this.color="primary",this.numericInput=!1,this.centerPickerItemInView=(t,i=!0,e=!0)=>{const{isColumnVisible:s,scrollEl:n}=this;if(s&&n){const s=t.offsetTop-3*t.clientHeight+t.clientHeight/2;n.scrollTop!==s&&(this.canExitInputMode=e,this.updateValueTextOnScroll=!1,n.scroll({top:s,left:0,behavior:i?"smooth":void 0}))}},this.setPickerItemActiveState=(t,i)=>{i?t.classList.add(m):t.classList.remove(m)},this.inputModeChange=t=>{if(!this.numericInput)return;const{useInputMode:i,inputModeColumn:e}=t.detail;this.setInputModeActive(!(!i||void 0!==e&&e!==this.el))},this.setInputModeActive=t=>{this.isScrolling?this.scrollEndCallback=()=>{this.isActive=t}:this.isActive=t},this.initializeScrollListener=()=>{const t=e("ios"),{el:i,scrollEl:s}=this;let n,o=this.activeItem;const a=()=>{l((()=>{var e;if(!s)return;n&&(clearTimeout(n),n=void 0),this.isScrolling||(t&&d(),this.isScrolling=!0);const a=s.getBoundingClientRect(),l=a.x+a.width/2,c=a.y+a.height/2,f=i.getRootNode(),u=f instanceof ShadowRoot?f:r;if(void 0===u)return;const m=u.elementsFromPoint(l,c).find((t=>"ION-PICKER-COLUMN-OPTION"===t.tagName));void 0!==o&&this.setPickerItemActiveState(o,!1),void 0===m||m.disabled||(m!==o&&(t&&h(),this.canExitInputMode&&this.exitInputMode()),o=m,this.setPickerItemActiveState(m,!0),this.updateValueTextOnScroll&&(null===(e=this.assistiveFocusable)||void 0===e||e.setAttribute("aria-valuetext",this.getOptionValueText(m))),n=setTimeout((()=>{this.isScrolling=!1,this.updateValueTextOnScroll=!0,t&&p();const{scrollEndCallback:i}=this;i&&(i(),this.scrollEndCallback=void 0),this.canExitInputMode=!0,this.setValue(m.value)}),250))}))};l((()=>{s&&(s.addEventListener("scroll",a),this.destroyScrollListener=()=>{s.removeEventListener("scroll",a)})}))},this.exitInputMode=()=>{const{parentEl:t}=this;null!=t&&(t.exitInputMode(),this.el.classList.remove("picker-column-active"))},this.findNextOption=(t=1)=>{const{activeItem:i}=this;if(!i)return null;let e=i,s=i.nextElementSibling;for(;null!=s;){if(t>0&&t--,"ION-PICKER-COLUMN-OPTION"===s.tagName&&!s.disabled&&0===t)return s;e=s,s=s.nextElementSibling}return e},this.findPreviousOption=(t=1)=>{const{activeItem:i}=this;if(!i)return null;let e=i,s=i.previousElementSibling;for(;null!=s;){if(t>0&&t--,"ION-PICKER-COLUMN-OPTION"===s.tagName&&!s.disabled&&0===t)return s;e=s,s=s.previousElementSibling}return e},this.onKeyDown=t=>{const i=e("mobile");let s=null;switch(t.key){case"ArrowDown":s=i?this.findPreviousOption():this.findNextOption();break;case"ArrowUp":s=i?this.findNextOption():this.findPreviousOption();break;case"PageUp":s=i?this.findNextOption(5):this.findPreviousOption(5);break;case"PageDown":s=i?this.findPreviousOption(5):this.findNextOption(5);break;case"Home":s=this.el.querySelector("ion-picker-column-option:first-of-type");break;case"End":s=this.el.querySelector("ion-picker-column-option:last-of-type")}null!==s&&(this.setValue(s.value),t.preventDefault())},this.getOptionValueText=t=>{var i;return t?null!==(i=t.getAttribute("aria-label"))&&void 0!==i?i:t.innerText:""},this.renderAssistiveFocusable=()=>{const{activeItem:t}=this,i=this.getOptionValueText(t);return s("div",{ref:t=>this.assistiveFocusable=t,class:"assistive-focusable",role:"slider",tabindex:this.disabled?void 0:0,"aria-label":this.ariaLabel,"aria-valuemin":0,"aria-valuemax":0,"aria-valuenow":0,"aria-valuetext":i,"aria-orientation":"vertical",onKeyDown:t=>this.onKeyDown(t)})}}ariaLabelChanged(t){this.ariaLabel=t}valueChange(){this.isColumnVisible&&this.scrollActiveItemIntoView(!0)}componentWillLoad(){const t=this.parentEl=this.el.closest("ion-picker");new IntersectionObserver((t=>{if(t[t.length-1].isIntersecting){const{activeItem:t,el:i}=this;this.isColumnVisible=!0;const e=c(i).querySelector(`.${m}`);e&&this.setPickerItemActiveState(e,!1),this.scrollActiveItemIntoView(),t&&this.setPickerItemActiveState(t,!0),this.initializeScrollListener()}else this.isColumnVisible=!1,this.destroyScrollListener&&(this.destroyScrollListener(),this.destroyScrollListener=void 0)}),{threshold:.001,root:this.parentEl}).observe(this.el),null!==t&&t.addEventListener("ionInputModeChange",(t=>this.inputModeChange(t)))}componentDidRender(){const{el:t,activeItem:i,isColumnVisible:e,value:s}=this;if(e&&!i){const i=t.querySelector("ion-picker-column-option");null!==i&&i.value!==s&&this.setValue(i.value)}}async scrollActiveItemIntoView(t=!1){const i=this.activeItem;i&&this.centerPickerItemInView(i,t,!1)}async setValue(t){!0!==this.disabled&&this.value!==t&&(this.value=t,this.ionChange.emit({value:t}))}async setFocus(){this.assistiveFocusable&&this.assistiveFocusable.focus()}connectedCallback(){var t;this.ariaLabel=null!==(t=this.el.getAttribute("aria-label"))&&void 0!==t?t:"Select a value"}get activeItem(){const{value:t}=this;return Array.from(this.el.querySelectorAll("ion-picker-column-option")).find((i=>!(!this.disabled&&i.disabled)&&i.value===t))}render(){const{color:t,disabled:i,isActive:e,numericInput:a}=this,r=n(this);return s(o,{key:"a221dc10f1eb7c41637a16d2c7167c16939822fd",class:f(t,{[r]:!0,"picker-column-active":e,"picker-column-numeric-input":a,"picker-column-disabled":i})},this.renderAssistiveFocusable(),s("slot",{key:"81b0656f606856f3dc0a657bf167d81a5011405e",name:"prefix"}),s("div",{key:"71b9de67c04150255dd66592601c9d926db0c31c","aria-hidden":"true",class:"picker-opts",ref:t=>{this.scrollEl=t},tabIndex:-1},s("div",{key:"ebdc2f08c83db0cf17b4be29f28fcb00f529601e",class:"picker-item-empty","aria-hidden":"true"}," "),s("div",{key:"04ab56fcb8e6a7d6af00204c4560feb99ff34a56",class:"picker-item-empty","aria-hidden":"true"}," "),s("div",{key:"6cf8f538903faf0fe1e4130f3eaf7b4e2e17cb52",class:"picker-item-empty","aria-hidden":"true"}," "),s("slot",{key:"1cc392307b70c576be5b81b5226ceba735957f0f"}),s("div",{key:"23e3f28e2a99b9aa8b7c8f68ad9583e3ca63e9e2",class:"picker-item-empty","aria-hidden":"true"}," "),s("div",{key:"8a0563f09780c3116af0caebe4f40587ec1f041f",class:"picker-item-empty","aria-hidden":"true"}," "),s("div",{key:"13207e248fc0009f37e0c90a3ee2bac2f130b856",class:"picker-item-empty","aria-hidden":"true"}," ")),s("slot",{key:"55ecf2ab5f214f936c2468cbdb7952daf89416b8",name:"suffix"}))}get el(){return a(this)}static get watchers(){return{"aria-label":["ariaLabelChanged"],value:["valueChange"]}}},m="option-active";u.style=":host{display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;max-width:100%;height:200px;font-size:22px;text-align:center}.assistive-focusable{left:0;right:0;top:0;bottom:0;position:absolute;z-index:1;pointer-events:none}.assistive-focusable:focus{outline:none}.picker-opts{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0px;padding-bottom:0px;min-width:26px;max-height:200px;outline:none;text-align:inherit;-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}.picker-item-empty{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;overflow:hidden}.picker-opts::-webkit-scrollbar{display:none}::slotted(ion-picker-column-option){display:block;scroll-snap-align:center}.picker-item-empty,:host(:not([disabled])) ::slotted(ion-picker-column-option.option-disabled){scroll-snap-align:none}::slotted([slot=prefix]),::slotted([slot=suffix]){max-width:200px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::slotted([slot=prefix]){-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0;padding-bottom:0;-ms-flex-pack:end;justify-content:end}::slotted([slot=suffix]){-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0;padding-bottom:0;-ms-flex-pack:start;justify-content:start}:host(.picker-column-disabled) .picker-opts{overflow-y:hidden}:host(.picker-column-disabled) ::slotted(ion-picker-column-option){cursor:default;opacity:0.4;pointer-events:none}@media (any-hover: hover){:host(:focus) .picker-opts{outline:none;background:rgba(var(--ion-color-base-rgb), 0.2)}}";export{u as ion_picker_column}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
|
-
*/
|
|
4
|
-
import{r as t,e as s,h as e,j as i,k as r,d as o}from"./p-B_U9CtaY.js";import{j as n,k as h}from"./p-BLV6ykCk.js";import{f as a,g as c}from"./p-QwEXyOze.js";import{r as d}from"./p-Do-uqmtX.js";import{b as l,a as m,h as b}from"./p-CKvCXMs9.js";import"./p-CIGNaXM1.js";import"./p-ZjP4CjeZ.js";const p=class{constructor(s){t(this,s)}onClick(t){const s=this.el.closest("ion-reorder-group");t.preventDefault(),s&&s.disabled||t.stopImmediatePropagation()}render(){const t=s(this);return e(i,{key:"e6807bb349725682e99e791ac65e729a360d64e8",class:t},e("slot",{key:"1c691cdbffa6427ba08dc12184c69559ed5d5506"},e("ion-icon",{key:"8b4150302cdca475379582b2251737b5e74079b1",icon:"ios"===t?n:h,lazy:!1,class:"reorder-icon",part:"icon","aria-hidden":"true"})))}get el(){return r(this)}};p.style={ios:":host([slot]){display:none;line-height:0;z-index:100}.reorder-icon{display:block}::slotted(ion-icon){font-size:dynamic-font(16px)}.reorder-icon{font-size:2.125rem;opacity:0.4}",md:":host([slot]){display:none;line-height:0;z-index:100}.reorder-icon{display:block}::slotted(ion-icon){font-size:dynamic-font(16px)}.reorder-icon{font-size:1.9375rem;opacity:0.3}"};const f=class{constructor(s){t(this,s),this.ionItemReorder=o(this,"ionItemReorder",7),this.ionReorderStart=o(this,"ionReorderStart",7),this.ionReorderMove=o(this,"ionReorderMove",7),this.ionReorderEnd=o(this,"ionReorderEnd",7),this.lastToIndex=-1,this.cachedHeights=[],this.scrollElTop=0,this.scrollElBottom=0,this.scrollElInitial=0,this.containerTop=0,this.containerBottom=0,this.state=0,this.disabled=!0}disabledChanged(){this.gesture&&this.gesture.enable(!this.disabled)}async connectedCallback(){const t=a(this.el);t&&(this.scrollEl=await c(t)),this.gesture=(await import("./p-Cl0B-RWe.js")).createGesture({el:this.el,gestureName:"reorder",gesturePriority:110,threshold:0,direction:"y",passive:!1,canStart:t=>this.canStart(t),onStart:t=>this.onStart(t),onMove:t=>this.onMove(t),onEnd:()=>this.onEnd()}),this.disabledChanged()}disconnectedCallback(){this.onEnd(),this.gesture&&(this.gesture.destroy(),this.gesture=void 0)}complete(t){return Promise.resolve(this.completeReorder(t))}canStart(t){if(this.selectedItemEl||0!==this.state)return!1;const s=t.event.target.closest("ion-reorder");if(!s)return!1;const e=k(s,this.el);return!!e&&(t.data=e,!0)}onStart(t){t.event.preventDefault();const s=this.selectedItemEl=t.data,e=this.cachedHeights;e.length=0;const i=this.el,r=i.children;if(!r||0===r.length)return;let o=0;for(let t=0;t<r.length;t++){const s=r[t];o+=s.offsetHeight,e.push(o),s.$ionIndex=t}const n=i.getBoundingClientRect();if(this.containerTop=n.top,this.containerBottom=n.bottom,this.scrollEl){const t=this.scrollEl.getBoundingClientRect();this.scrollElInitial=this.scrollEl.scrollTop,this.scrollElTop=t.top+y,this.scrollElBottom=t.bottom-y}else this.scrollElInitial=0,this.scrollElTop=0,this.scrollElBottom=0;this.lastToIndex=u(s),this.selectedItemHeight=s.offsetHeight,this.state=1,s.classList.add(w),l(),this.ionReorderStart.emit()}onMove(t){const s=this.selectedItemEl;if(!s)return;const e=this.autoscroll(t.currentY),i=this.containerTop-e,r=Math.max(i,Math.min(t.currentY,this.containerBottom-e)),o=e+r-t.startY,n=this.lastToIndex,h=this.itemIndexForTop(r-i);if(h!==this.lastToIndex){const t=u(s);this.lastToIndex=h,m(),this.reorderMove(t,h)}s.style.transform=`translateY(${o}px)`,this.ionReorderMove.emit({from:n,to:h})}onEnd(){const t=this.selectedItemEl;if(this.state=2,!t)return void(this.state=0);const s=this.lastToIndex,e=u(t);s===e?this.completeReorder():this.ionItemReorder.emit({from:e,to:s,complete:this.completeReorder.bind(this)}),b(),this.ionReorderEnd.emit({from:e,to:s,complete:this.completeReorder.bind(this)})}completeReorder(t){const s=this.selectedItemEl;if(s&&2===this.state){const e=this.el.children,i=e.length,r=this.lastToIndex,o=u(s);d((()=>{r===o||void 0!==t&&!0!==t||this.el.insertBefore(s,o<r?e[r+1]:e[r]);for(let t=0;t<i;t++)e[t].style.transform=""})),Array.isArray(t)&&(t=v(t,o,r)),s.style.transition="",s.classList.remove(w),this.selectedItemEl=void 0,this.state=0}return t}itemIndexForTop(t){const s=this.cachedHeights;for(let e=0;e<s.length;e++)if(s[e]>t)return e;return s.length-1}reorderMove(t,s){const e=this.selectedItemHeight,i=this.el.children;for(let r=0;r<i.length;r++){let o="";r>t&&r<=s?o=`translateY(${-e}px)`:r<t&&r>=s&&(o=`translateY(${e}px)`),i[r].style.transform=o}}autoscroll(t){if(!this.scrollEl)return 0;let s=0;return t<this.scrollElTop?s=-10:t>this.scrollElBottom&&(s=g),0!==s&&this.scrollEl.scrollBy(0,s),this.scrollEl.scrollTop-this.scrollElInitial}render(){const t=s(this);return e(i,{key:"9ff97c31e99392e6e23e117bc248bb7c28ab8e4c",class:{[t]:!0,"reorder-enabled":!this.disabled,"reorder-list-active":0!==this.state}})}get el(){return r(this)}static get watchers(){return{disabled:["disabledChanged"]}}},u=t=>t.$ionIndex,k=(t,s)=>{let e;for(;t;){if(e=t.parentElement,e===s)return t;t=e}},y=60,g=10,w="reorder-selected",v=(t,s,e)=>{const i=t[s];return t.splice(s,1),t.splice(e,0,i),t.slice()};f.style=".reorder-list-active>*{display:block;-webkit-transition:-webkit-transform 300ms;transition:-webkit-transform 300ms;transition:transform 300ms;transition:transform 300ms, -webkit-transform 300ms;will-change:transform}.reorder-enabled{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.reorder-enabled ion-reorder{display:block;cursor:-webkit-grab;cursor:grab;pointer-events:all;-ms-touch-action:none;touch-action:none}.reorder-selected,.reorder-selected ion-reorder{cursor:-webkit-grabbing;cursor:grabbing}.reorder-selected{position:relative;-webkit-transition:none !important;transition:none !important;-webkit-box-shadow:0 0 10px rgba(0, 0, 0, 0.4);box-shadow:0 0 10px rgba(0, 0, 0, 0.4);opacity:0.8;z-index:100}.reorder-visible ion-reorder .reorder-icon{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}";export{p as ion_reorder,f as ion_reorder_group}
|