test-isc
Version:
An Ionic component similar to Ionic Select, that allows to search items, including async search, group, add, edit, delete items, and much more.
284 lines (283 loc) • 12.5 kB
JavaScript
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __generator = (this && this.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (_) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
var __spreadArrays = (this && this.__spreadArrays) || function () {
for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
for (var r = Array(s), k = 0, i = 0; i < il; i++)
for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
r[k] = a[j];
return r;
};
import { g as getIonMode, c as config } from './ionic-global-5d790111.js';
import { OVERLAY_BACK_BUTTON_PRIORITY } from './hardware-back-button-b3b61715.js';
var lastId = 0;
var activeAnimations = new WeakMap();
var createController = function (tagName) {
return {
create: function (options) {
return createOverlay(tagName, options);
},
dismiss: function (data, role, id) {
return dismissOverlay(document, data, role, tagName, id);
},
getTop: function () {
return __awaiter(this, void 0, void 0, function () {
return __generator(this, function (_a) {
return [2 /*return*/, getOverlay(document, tagName)];
});
});
}
};
};
var alertController = /*@__PURE__*/ createController('ion-alert');
var actionSheetController = /*@__PURE__*/ createController('ion-action-sheet');
var modalController = /*@__PURE__*/ createController('ion-modal');
var pickerController = /*@__PURE__*/ createController('ion-picker');
var popoverController = /*@__PURE__*/ createController('ion-popover');
var prepareOverlay = function (el) {
var doc = document;
connectListeners(doc);
var overlayIndex = lastId++;
el.overlayIndex = overlayIndex;
if (!el.hasAttribute('id')) {
el.id = "ion-overlay-" + overlayIndex;
}
};
var createOverlay = function (tagName, opts) {
return customElements.whenDefined(tagName).then(function () {
var doc = document;
var element = doc.createElement(tagName);
element.classList.add('overlay-hidden');
// convert the passed in overlay options into props
// that get passed down into the new overlay
Object.assign(element, opts);
// append the overlay element to the document body
getAppRoot(doc).appendChild(element);
return element.componentOnReady();
});
};
var connectListeners = function (doc) {
if (lastId === 0) {
lastId = 1;
// trap focus inside overlays
doc.addEventListener('focusin', function (ev) {
var lastOverlay = getOverlay(doc);
if (lastOverlay && lastOverlay.backdropDismiss && !isDescendant(lastOverlay, ev.target)) {
var firstInput = lastOverlay.querySelector('input,button');
if (firstInput) {
firstInput.focus();
}
}
});
// handle back-button click
doc.addEventListener('ionBackButton', function (ev) {
var lastOverlay = getOverlay(doc);
if (lastOverlay && lastOverlay.backdropDismiss) {
ev.detail.register(OVERLAY_BACK_BUTTON_PRIORITY, function () {
return lastOverlay.dismiss(undefined, BACKDROP);
});
}
});
// handle ESC to close overlay
doc.addEventListener('keyup', function (ev) {
if (ev.key === 'Escape') {
var lastOverlay = getOverlay(doc);
if (lastOverlay && lastOverlay.backdropDismiss) {
lastOverlay.dismiss(undefined, BACKDROP);
}
}
});
}
};
var dismissOverlay = function (doc, data, role, overlayTag, id) {
var overlay = getOverlay(doc, overlayTag, id);
if (!overlay) {
return Promise.reject('overlay does not exist');
}
return overlay.dismiss(data, role);
};
var getOverlays = function (doc, selector) {
if (selector === undefined) {
selector = 'ion-alert,ion-action-sheet,ion-loading,ion-modal,ion-picker,ion-popover,ion-toast';
}
return Array.from(doc.querySelectorAll(selector))
.filter(function (c) { return c.overlayIndex > 0; });
};
var getOverlay = function (doc, overlayTag, id) {
var overlays = getOverlays(doc, overlayTag);
return (id === undefined)
? overlays[overlays.length - 1]
: overlays.find(function (o) { return o.id === id; });
};
var present = function (overlay, name, iosEnterAnimation, mdEnterAnimation, opts) { return __awaiter(void 0, void 0, void 0, function () {
var mode, animationBuilder, completed;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
if (overlay.presented) {
return [2 /*return*/];
}
overlay.presented = true;
overlay.willPresent.emit();
mode = getIonMode(overlay);
animationBuilder = (overlay.enterAnimation)
? overlay.enterAnimation
: config.get(name, mode === 'ios' ? iosEnterAnimation : mdEnterAnimation);
return [4 /*yield*/, overlayAnimation(overlay, animationBuilder, overlay.el, opts)];
case 1:
completed = _a.sent();
if (completed) {
overlay.didPresent.emit();
}
overlay.el.focus();
return [2 /*return*/];
}
});
}); };
var dismiss = function (overlay, data, role, name, iosLeaveAnimation, mdLeaveAnimation, opts) { return __awaiter(void 0, void 0, void 0, function () {
var mode, animationBuilder, err_1;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
if (!overlay.presented) {
return [2 /*return*/, false];
}
overlay.presented = false;
_a.label = 1;
case 1:
_a.trys.push([1, 4, , 5]);
// Overlay contents should not be clickable during dismiss
overlay.el.style.setProperty('pointer-events', 'none');
overlay.willDismiss.emit({ data: data, role: role });
mode = getIonMode(overlay);
animationBuilder = (overlay.leaveAnimation)
? overlay.leaveAnimation
: config.get(name, mode === 'ios' ? iosLeaveAnimation : mdLeaveAnimation);
if (!(role !== 'gesture')) return [3 /*break*/, 3];
return [4 /*yield*/, overlayAnimation(overlay, animationBuilder, overlay.el, opts)];
case 2:
_a.sent();
_a.label = 3;
case 3:
overlay.didDismiss.emit({ data: data, role: role });
activeAnimations.delete(overlay);
return [3 /*break*/, 5];
case 4:
err_1 = _a.sent();
console.error(err_1);
return [3 /*break*/, 5];
case 5:
overlay.el.remove();
return [2 /*return*/, true];
}
});
}); };
var getAppRoot = function (doc) {
return doc.querySelector('ion-app') || doc.body;
};
var overlayAnimation = function (overlay, animationBuilder, baseEl, opts) { return __awaiter(void 0, void 0, void 0, function () {
var aniRoot, animation, activeAni;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
// Make overlay visible in case it's hidden
baseEl.classList.remove('overlay-hidden');
aniRoot = baseEl.shadowRoot || overlay.el;
animation = animationBuilder(aniRoot, opts);
if (!overlay.animated || !config.getBoolean('animated', true)) {
animation.duration(0);
}
if (overlay.keyboardClose) {
animation.beforeAddWrite(function () {
var activeElement = baseEl.ownerDocument.activeElement;
if (activeElement && activeElement.matches('input, ion-input, ion-textarea')) {
activeElement.blur();
}
});
}
activeAni = activeAnimations.get(overlay) || [];
activeAnimations.set(overlay, __spreadArrays(activeAni, [animation]));
return [4 /*yield*/, animation.play()];
case 1:
_a.sent();
return [2 /*return*/, true];
}
});
}); };
var eventMethod = function (element, eventName) {
var resolve;
var promise = new Promise(function (r) { return resolve = r; });
onceEvent(element, eventName, function (event) {
resolve(event.detail);
});
return promise;
};
var onceEvent = function (element, eventName, callback) {
var handler = function (ev) {
element.removeEventListener(eventName, handler);
callback(ev);
};
element.addEventListener(eventName, handler);
};
var isCancel = function (role) {
return role === 'cancel' || role === BACKDROP;
};
var isDescendant = function (parent, child) {
while (child) {
if (child === parent) {
return true;
}
child = child.parentElement;
}
return false;
};
var defaultGate = function (h) { return h(); };
var safeCall = function (handler, arg) {
if (typeof handler === 'function') {
var jmp = config.get('_zoneGate', defaultGate);
return jmp(function () {
try {
return handler(arg);
}
catch (e) {
console.error(e);
}
});
}
return undefined;
};
var BACKDROP = 'backdrop';
export { BACKDROP as B, present as a, pickerController as b, activeAnimations as c, dismiss as d, eventMethod as e, popoverController as f, actionSheetController as g, alertController as h, isCancel as i, modalController as m, prepareOverlay as p, safeCall as s };