diff --git a/packages/core/src/components.d.ts b/packages/core/src/components.d.ts index b743f8be51..f9e2f45f4e 100644 --- a/packages/core/src/components.d.ts +++ b/packages/core/src/components.d.ts @@ -1662,7 +1662,7 @@ declare global { enableBackdropDismiss?: boolean; enterAnimation?: AnimationBuilder; leaveAnimation?: AnimationBuilder; - modalId?: string; + modalId?: number; mode?: string; showBackdrop?: boolean; } diff --git a/packages/core/src/components/modal-controller/modal-controller.tsx b/packages/core/src/components/modal-controller/modal-controller.tsx index e60d780ecf..3747fe1496 100644 --- a/packages/core/src/components/modal-controller/modal-controller.tsx +++ b/packages/core/src/components/modal-controller/modal-controller.tsx @@ -1,73 +1,72 @@ import { Component, Listen, Method } from '@stencil/core'; import { Modal, ModalEvent, ModalOptions } from '../../index'; +let ids: 0; +const modals = new Map(); @Component({ tag: 'ion-modal-controller' }) export class ModalController { - private ids = 0; - private modalResolves: {[modalId: string]: Function} = {}; - private modals: HTMLIonModalElement[] = []; - @Method() create(opts?: ModalOptions): Promise { // create ionic's wrapping ion-modal component - const modal = document.createElement('ion-modal'); - - const id = this.ids++; + const modalElement = document.createElement('ion-modal'); // give this modal a unique id - modal.modalId = `modal-${id}`; + modalElement.modalId = ids++; // convert the passed in modal options into props // that get passed down into the new modal - Object.assign(modal, opts); + Object.assign(modalElement, opts); // append the modal element to the document body const appRoot = document.querySelector('ion-app') || document.body; - appRoot.appendChild(modal as any); + appRoot.appendChild(modalElement); - // store the resolve function to be called later up when the modal loads - return new Promise(resolve => { - this.modalResolves[modal.modalId] = resolve; - }); + return (modalElement as any).componentOnReady(); } - - @Listen('body:ionModalDidLoad') - protected modalDidLoad(ev: ModalEvent) { - const modal = ev.target as HTMLIonModalElement; - const modalResolve = this.modalResolves[modal.modalId]; - if (modalResolve) { - modalResolve(modal); - delete this.modalResolves[modal.modalId]; - } + @Method() + dismiss(data?: any, role?: any, modalId: number = -1) { + modalId = modalId >= 0 ? modalId : getHighestId(); + const modal = modals.get(modalId); + return modal.dismiss(data, role); } @Listen('body:ionModalWillPresent') protected modalWillPresent(ev: ModalEvent) { - this.modals.push(ev.target as HTMLIonModalElement); + console.log('modalWillPresent'); + modals.set(ev.target.modalId, ev.target); } @Listen('body:ionModalWillDismiss, body:ionModalDidUnload') protected modalWillDismiss(ev: ModalEvent) { - const index = this.modals.indexOf(ev.target as HTMLIonModalElement); - if (index > -1) { - this.modals.splice(index, 1); - } + console.log('modalWillDismiss'); + modals.delete(ev.target.modalId); } @Listen('body:keyup.escape') protected escapeKeyUp() { - const lastModal = this.modals[this.modals.length - 1]; - if (lastModal) { - lastModal.dismiss(); - } + removeLastModal(); } - +} + +function getHighestId() { + let minimum = -1; + modals.forEach((_modal: Modal, id: number) => { + if (id > minimum) { + minimum = id; + } + }); + return minimum; +} + +function removeLastModal() { + const toRemove = modals.get(getHighestId()); + return toRemove ? toRemove.dismiss() : Promise.resolve(); } diff --git a/packages/core/src/components/modal-controller/readme.md b/packages/core/src/components/modal-controller/readme.md index 8e0221f230..cdaaa28515 100644 --- a/packages/core/src/components/modal-controller/readme.md +++ b/packages/core/src/components/modal-controller/readme.md @@ -10,6 +10,9 @@ #### create() +#### dismiss() + + ---------------------------------------------- diff --git a/packages/core/src/components/modal/modal.tsx b/packages/core/src/components/modal/modal.tsx index 2a31b820eb..af08dd6c96 100644 --- a/packages/core/src/components/modal/modal.tsx +++ b/packages/core/src/components/modal/modal.tsx @@ -73,7 +73,7 @@ export class Modal { @Prop() cssClass: string; @Prop() enableBackdropDismiss: boolean = true; - @Prop() modalId: string; + @Prop() modalId: number; @Prop() showBackdrop: boolean = true; @Prop() enterAnimation: AnimationBuilder; @@ -103,7 +103,7 @@ export class Modal { this.delegate = new DomFrameworkDelegate(); } - const cssClasses = ['ion-page']; + const cssClasses = []; if (this.cssClass && this.cssClass.length) { cssClasses.push(this.cssClass); } @@ -228,6 +228,7 @@ export interface ModalOptions { export interface ModalEvent extends CustomEvent { + target: HTMLIonModalElement; detail: ModalEventDetail; } diff --git a/packages/core/src/components/modal/readme.md b/packages/core/src/components/modal/readme.md index 7492997633..bd65ec11f6 100644 --- a/packages/core/src/components/modal/readme.md +++ b/packages/core/src/components/modal/readme.md @@ -54,7 +54,7 @@ any #### modalId -string +number #### mode @@ -116,7 +116,7 @@ any #### modalId -string +number #### mode diff --git a/packages/core/src/components/modal/test/basic/index.html b/packages/core/src/components/modal/test/basic/index.html index 76d916ca65..da85d5c14e 100644 --- a/packages/core/src/components/modal/test/basic/index.html +++ b/packages/core/src/components/modal/test/basic/index.html @@ -30,6 +30,12 @@ window.addEventListener("ionModalDidDismiss", function(e){console.log('DidDismiss', e)}) window.addEventListener("ionModalWillDismiss", function(e){console.log('WillDismiss', e)}) async function presentModal() { + + // initialize controller + const modalController = document.querySelector('ion-modal-controller'); + await modalController.componentOnReady(); + + // create component to open const element = document.createElement('div'); element.innerHTML = ` @@ -38,11 +44,19 @@ -
Sure, I like dogs. I like caravans moar.
+

Super content

+
Additional content
+ Close the modal
`; - const modalController = document.querySelector('ion-modal-controller'); - await modalController.componentOnReady(); + + // listen for close event + const button = element.querySelector('ion-button'); + button.addEventListener('click', () => { + modalController.dismiss(); + }); + + // present the modal const modalElement = await modalController.create({ component: element }); diff --git a/packages/demos/conference-app/angular/package-lock.json b/packages/demos/conference-app/angular/package-lock.json index c3c9ef6c04..4649540fa8 100644 --- a/packages/demos/conference-app/angular/package-lock.json +++ b/packages/demos/conference-app/angular/package-lock.json @@ -47,9 +47,9 @@ } }, "@angular/animations": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-5.1.2.tgz", - "integrity": "sha512-so2i0He4Fh5YuvujC68k2/Hzyy56/vZAUmLTXHE+9f4RatjqV68LISseFXqcS8bhVuT7AD2ZEbHnM7nWhgDaTg==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-5.1.3.tgz", + "integrity": "sha512-DlcANlrQ2aaspCZZ6yHdEx1PaLKT1q3/xkdTgoKNTJfj9eautcrEuar8NoH0dkzXuQT0i9GewK6+zsF581rpdQ==", "requires": { "tslib": "1.8.1" } @@ -71,7 +71,7 @@ "common-tags": "1.6.0", "copy-webpack-plugin": "4.3.1", "core-object": "3.1.5", - "css-loader": "0.28.7", + "css-loader": "0.28.8", "cssnano": "3.10.0", "denodeify": "1.2.1", "ember-cli-string-utils": "1.1.0", @@ -96,7 +96,7 @@ "opn": "5.1.0", "portfinder": "1.0.13", "postcss-custom-properties": "6.2.0", - "postcss-loader": "2.0.9", + "postcss-loader": "2.0.10", "postcss-url": "7.3.0", "raw-loader": "0.5.1", "resolve": "1.5.0", @@ -109,7 +109,7 @@ "style-loader": "0.13.2", "stylus": "0.54.5", "stylus-loader": "3.0.1", - "uglifyjs-webpack-plugin": "1.1.5", + "uglifyjs-webpack-plugin": "1.1.6", "url-loader": "0.6.2", "webpack": "3.10.0", "webpack-dev-middleware": "1.12.2", @@ -182,25 +182,25 @@ } }, "@angular/common": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-5.1.2.tgz", - "integrity": "sha512-MqgMwsHXxxx8vmQrUFwhNcAg29eqClJdnMJ81DlD7XvEexyXxxoFrxnNea+aB3BUC1AzU0fEy24ngygmhjRmfw==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-5.1.3.tgz", + "integrity": "sha512-n0bzjfOVZH7+FPHQ3nnE3aAgMWebz4afO/Wh01LZNfVgcjdBxHblAYcMaoJeR7zW7f1zm51P6aDa4XlVtsVupQ==", "requires": { "tslib": "1.8.1" } }, "@angular/compiler": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-5.1.2.tgz", - "integrity": "sha512-asTrlMWRe24EzejBwBFVSfq3ZbYI9Xr9NbNtkHK4DRHutDA1wn5PQE5lHuUTNW2B/dmm9pm+5JTVtcbue0nEug==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-5.1.3.tgz", + "integrity": "sha512-YQyL52+CtduFqyodv3m+s8qNDRbmEyEv/ZZHEWNKxKFr7RQ5n7+pbjdincwGf2c2mBw4EqWLgyCdd9SFmjJd0w==", "requires": { "tslib": "1.8.1" } }, "@angular/compiler-cli": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-5.1.2.tgz", - "integrity": "sha512-dtSVF8RnxYCDSCDbWNv3xg379xAN/1s6odpF5lFyemUi/p2U9mkeXtHo5Y74PX/kdoVnXrTY8bCNnQPm3sHVZA==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-5.1.3.tgz", + "integrity": "sha512-5pmVgFch67qYxl04PitagfUgiw0k7Ak1Cvj5LY2gs0961SHo8qLRA2/4xUKAxv4rFy+fx2Qr9KD99YB+wbsb3A==", "dev": true, "requires": { "chokidar": "1.7.0", @@ -210,55 +210,55 @@ } }, "@angular/core": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-5.1.2.tgz", - "integrity": "sha512-nHQWvhdxg7RbhRcfV5EhWURUZBqtcBFajXTBYA2rVHPhm0lGqEUi38VW0ddO8MpPGz0pK2PNpgR3GwXp/egaNw==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-5.1.3.tgz", + "integrity": "sha512-lGlILYCumA5s8Pf+egDW6kjlrEQwnpUG2fBQ4SNRChzzRoTWeJ1XPCrEI9YyFvC8qUsYcDIZwHWBXQQqhdEvmQ==", "requires": { "tslib": "1.8.1" } }, "@angular/forms": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-5.1.2.tgz", - "integrity": "sha512-IQRZ2KF4303ga9nTzjU223steFLcaRrFyakM/+x8Hu1otzLeIoFiyDaFPBHtUvoRN14JlKusIi9m407mM2oNJQ==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-5.1.3.tgz", + "integrity": "sha512-DTUg7agXPjvacWHojl0vXuvyJ0Ik9I0D23KKWyzHZHlxXb4vfN7KYP9qIOMwadLLIog8MEu4a6EGgKAoPsZ/Ng==", "requires": { "tslib": "1.8.1" } }, "@angular/http": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@angular/http/-/http-5.1.2.tgz", - "integrity": "sha512-LvOgVPCxOii2TH8r8UrXQJjqrbgrt/HTNOtqqT1/CmemsnbGcBiYAnt5yiZ2aYQuop4RZLhQ/UpuSMLur9XPtg==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/@angular/http/-/http-5.1.3.tgz", + "integrity": "sha512-Ptnu15yjYnvKucLBRKrJqneFMkQYjfwDFgVASLb+YJhRzNFBnqcK8JdfilhP7f0WESANDcwtC/YoaShpiyugNA==", "requires": { "tslib": "1.8.1" } }, "@angular/language-service": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-5.1.2.tgz", - "integrity": "sha512-oFov/UQyvW3CJESJvC1nI0xSsWOc4Mx5N0Tbah9g2cryShT5PoFGDUE8+Pu5Yjl3uu+iNMnQ4F+J2DDRmyJTWQ==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-5.1.3.tgz", + "integrity": "sha512-qj5K02LdG637YzqgtQVHVwZbzLHWm2WZOHPthu0M04RjS6bZxD4Ng828IXxFydrxoyTcDO/x0Uy2OAb7+rbBQw==", "dev": true }, "@angular/platform-browser": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-5.1.2.tgz", - "integrity": "sha512-L78ijQ81tEh6nnOq2BqCDtbhqLbARs/2A9QZvEhMTTFu5MOQH0yk0VrjNv58Lch9yOj04EH/Qi7Wep2vFqb57g==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-5.1.3.tgz", + "integrity": "sha512-APMYMgEith68hsuSS8PpE0Dn1dEhJN1IkaIeL+ZlmhZQ4GktVAvMV2ySFYHoQofT5QIWEnvbT2r/cvgW9+8IUQ==", "requires": { "tslib": "1.8.1" } }, "@angular/platform-browser-dynamic": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-5.1.2.tgz", - "integrity": "sha512-LMMgG1RRngIMvU19+NFRUe2+2gKgzMpwddBVDondi71EqcfumD6NN343lNcHv5/5oWuJdaAx94A29qpAjyVt5Q==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-5.1.3.tgz", + "integrity": "sha512-LKyHzN0LZqcw8nL19yJsbqPMBZ2nxPYFDkbsBicxfr9RHWbWbDuIZXY5l742guzAFBPHhccx9Lpjd3Gwxi7syg==", "requires": { "tslib": "1.8.1" } }, "@angular/router": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-5.1.2.tgz", - "integrity": "sha512-gNP2vPTQLlpiRE6tRdZY9CHYs+XhYsiR6wAfUInMvJAocA6a2mQs4qPILJjus8WbcASDzU51C+sgHF++4gz+Qg==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-5.1.3.tgz", + "integrity": "sha512-dhrrk2jfbIQEGWkonRyAjrJSt/a3aLmRRWiSL3UUZhfUqMUGhaxwJn7hYB1uQyvhqTGKYncBvjMrdGFmsQInNQ==", "requires": { "tslib": "1.8.1" } @@ -284,17 +284,17 @@ "integrity": "sha512-i2j2J9KIobCqyX6LlrlYhaHgd7qmP1pzHs4XAthHgth8m6c4gsHsh+Pl3fqknD7AX18ghpqo3tVtv0EFhSFU3w==" }, "@ionic/angular": { - "version": "0.0.2-13", - "resolved": "https://registry.npmjs.org/@ionic/angular/-/angular-0.0.2-13.tgz", - "integrity": "sha512-PdV5ITq4oCFKNKCUg2/6GneRrCUQEWgfZeukcyIx0V+LbalZ1DUKtn94M74Bfjz/4rFk86G21aIlrq5PCVWZMg==", + "version": "0.0.2-14", + "resolved": "https://registry.npmjs.org/@ionic/angular/-/angular-0.0.2-14.tgz", + "integrity": "sha512-VoyiNplPOeaJn0clFNKllWIy6l2nBXmuU5UZqmTSBS/xDSXtiTwGwCao/uTjxAvorqh/BFsRvPSgWXthN733kQ==", "requires": { "@stencil/core": "0.1.1-0" } }, "@ionic/core": { - "version": "0.0.2-32", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-0.0.2-32.tgz", - "integrity": "sha512-43Y6nzBM3HqnitRMcuXlX51XjfVDgHdQJQTf6Ybp+VXxJ6CxV/9cQ28XrvtESa40QRfCLHV5MRNwUajy7F4xJw==" + "version": "0.0.2-33", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-0.0.2-33.tgz", + "integrity": "sha512-0bzDrY9GeZhFXVZ6N+ZnXAdxrvJX4v3wZbmxNp7j7g8KED7bOVwwLBovLZ6Brz8W/AX2J/T+PI/PseBCaIaGVw==" }, "@ionic/storage": { "version": "2.1.3", @@ -418,9 +418,9 @@ "integrity": "sha1-PWCmv23aOOP4pGlhFZg3nx9klQk=" }, "@types/node": { - "version": "6.0.95", - "resolved": "https://registry.npmjs.org/@types/node/-/node-6.0.95.tgz", - "integrity": "sha512-d1Twx1NM49dQ7jbNZfaHTQWuYL9cFVrGxYpbc3BvMf4626lOJOZnp2aJQNB9vP/WX3UOe1TrTUMABrGRu6FZhg==", + "version": "6.0.96", + "resolved": "https://registry.npmjs.org/@types/node/-/node-6.0.96.tgz", + "integrity": "sha512-fsOOY6tMQ3jCB2wD51XFDmmpgm4wVKkJECdcVRqapbJEa7awJDcr+SaH8toz+4r4KW8YQ3M7ybXMoSDo1QGewA==", "dev": true }, "@types/q": { @@ -767,7 +767,7 @@ "dev": true, "requires": { "browserslist": "1.7.7", - "caniuse-db": "1.0.30000784", + "caniuse-db": "1.0.30000789", "normalize-range": "0.1.2", "num2fraction": "1.2.2", "postcss": "5.2.18", @@ -1152,7 +1152,7 @@ "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", "dev": true, "requires": { - "caniuse-db": "1.0.30000784", + "caniuse-db": "1.0.30000789", "electron-to-chromium": "1.3.30" } }, @@ -1197,9 +1197,9 @@ "dev": true }, "cacache": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.1.tgz", - "integrity": "sha512-dRHYcs9LvG9cHgdPzjiI+/eS7e1xRhULrcyOx04RZQsszNJXU2SL9CyG60yLnge282Qq5nwTv+ieK2fH+WPZmA==", + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.2.tgz", + "integrity": "sha512-dljb7dk1jqO5ogE+dRpoR9tpHYv5xz9vPSNunh1+0wRuNdYxmzp9WmsyokgW/DUF1FDRVA/TMsmxt027R8djbQ==", "dev": true, "requires": { "bluebird": "3.5.1", @@ -1254,15 +1254,15 @@ "dev": true, "requires": { "browserslist": "1.7.7", - "caniuse-db": "1.0.30000784", + "caniuse-db": "1.0.30000789", "lodash.memoize": "4.1.2", "lodash.uniq": "4.5.0" } }, "caniuse-db": { - "version": "1.0.30000784", - "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000784.tgz", - "integrity": "sha1-G+lQEtlInHcZB0+BruV9vf/mNhs=", + "version": "1.0.30000789", + "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000789.tgz", + "integrity": "sha1-XPP+x1SABBqxYsoGQTFTFB4jQyU=", "dev": true }, "caseless": { @@ -1685,14 +1685,14 @@ "integrity": "sha512-xlcFiW/U7KrpS6dFuWq3r8Wb7koJx7QVc7LDFCosqkikaVSxkaYOnwDLwilbjrszZ0LYZXThDAJKcQCSrvdShQ==", "dev": true, "requires": { - "cacache": "10.0.1", + "cacache": "10.0.2", "find-cache-dir": "1.0.0", "globby": "7.1.1", "is-glob": "4.0.0", "loader-utils": "0.2.17", "lodash": "4.17.4", "minimatch": "3.0.4", - "p-limit": "1.1.0", + "p-limit": "1.2.0", "pify": "3.0.0", "serialize-javascript": "1.4.0" }, @@ -1886,9 +1886,9 @@ "dev": true }, "css-loader": { - "version": "0.28.7", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-0.28.7.tgz", - "integrity": "sha512-GxMpax8a/VgcfRrVy0gXD6yLd5ePYbXX/5zGgTVYp4wXtJklS8Z2VaUArJgc//f6/Dzil7BaJObdSv8eKKCPgg==", + "version": "0.28.8", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-0.28.8.tgz", + "integrity": "sha512-4jGj7Ag6WUZ5lQyE4te9sJLn0lgkz6HI3WDE4aw98AkW1IAKXPP4blTpPeorlLDpNsYvojo0SYgRJOdz2KbuAw==", "dev": true, "requires": { "babel-code-frame": "6.26.0", @@ -4439,7 +4439,7 @@ "ncname": "1.0.0", "param-case": "2.1.1", "relateurl": "0.2.7", - "uglify-js": "3.3.4" + "uglify-js": "3.3.5" }, "dependencies": { "commander": { @@ -4455,9 +4455,9 @@ "dev": true }, "uglify-js": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.3.4.tgz", - "integrity": "sha512-hfIwuAQI5dlXP30UtdmWoYF9k+ypVqBXIdmd6ZKBiaNHHvA8ty7ZloMe3+7S5AEKVkxHbjByl4DfRHQ7QpZquw==", + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.3.5.tgz", + "integrity": "sha512-ZebM2kgBL/UI9rKeAbsS2J0UPPv7SBy5hJNZml/YxB1zC6JK8IztcPs+cxilE4pu0li6vadVSFqiO7xFTKuSrg==", "dev": true, "requires": { "commander": "2.12.2", @@ -4656,7 +4656,7 @@ "integrity": "sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI=", "dev": true, "requires": { - "postcss": "6.0.15" + "postcss": "6.0.16" }, "dependencies": { "ansi-styles": { @@ -4691,9 +4691,9 @@ } }, "postcss": { - "version": "6.0.15", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.15.tgz", - "integrity": "sha512-v/SpyMzLbtkmh45zUdaqLAaqXqzPdSrw8p4cQVO0/w6YiYfpj4k+Wkzhn68qk9br+H+0qfddhdPEVnbmBPfXVQ==", + "version": "6.0.16", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.16.tgz", + "integrity": "sha512-m758RWPmSjFH/2MyyG3UOW1fgYbR9rtdzz5UNJnlm7OLtu4B2h9C6gi+bE4qFKghsBRFfZT8NzoQBs6JhLotoA==", "dev": true, "requires": { "chalk": "2.3.0", @@ -5330,7 +5330,7 @@ "html-encoding-sniffer": "1.0.2", "nwmatcher": "1.4.3", "parse5": "3.0.3", - "pn": "1.0.0", + "pn": "1.1.0", "request": "2.83.0", "request-promise-native": "1.0.5", "sax": "1.2.4", @@ -6709,10 +6709,13 @@ "dev": true }, "p-limit": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", - "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=", - "dev": true + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz", + "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==", + "dev": true, + "requires": { + "p-try": "1.0.0" + } }, "p-locate": { "version": "2.0.0", @@ -6720,7 +6723,7 @@ "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "dev": true, "requires": { - "p-limit": "1.1.0" + "p-limit": "1.2.0" } }, "p-map": { @@ -6729,6 +6732,12 @@ "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", "dev": true }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, "pako": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", @@ -6798,13 +6807,13 @@ "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz", "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==", "requires": { - "@types/node": "8.5.2" + "@types/node": "8.5.7" }, "dependencies": { "@types/node": { - "version": "8.5.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-8.5.2.tgz", - "integrity": "sha512-KA4GKOpgXnrqEH2eCVhiv2CsxgXGQJgV1X0vsGlh+WCnxbeAE1GT44ZsTU1IN5dEeV/gDupKa7gWo08V5IxWVQ==" + "version": "8.5.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.5.7.tgz", + "integrity": "sha512-+1ZfzGIq8Y3EV7hPF7bs3i+Gi2mqYOiEGGRxGYPrn+hTYLMmzg+/5TkMkCHiRtLB38XSNvr/43aQ9+cUq4BbBg==" } } }, @@ -6950,9 +6959,9 @@ } }, "pn": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pn/-/pn-1.0.0.tgz", - "integrity": "sha1-HPWjCw2AbNGPiPxBprXUrWFbO6k=" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", + "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==" }, "portfinder": { "version": "1.0.13", @@ -7041,7 +7050,7 @@ "dev": true, "requires": { "balanced-match": "1.0.0", - "postcss": "6.0.15" + "postcss": "6.0.16" }, "dependencies": { "ansi-styles": { @@ -7076,9 +7085,9 @@ } }, "postcss": { - "version": "6.0.15", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.15.tgz", - "integrity": "sha512-v/SpyMzLbtkmh45zUdaqLAaqXqzPdSrw8p4cQVO0/w6YiYfpj4k+Wkzhn68qk9br+H+0qfddhdPEVnbmBPfXVQ==", + "version": "6.0.16", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.16.tgz", + "integrity": "sha512-m758RWPmSjFH/2MyyG3UOW1fgYbR9rtdzz5UNJnlm7OLtu4B2h9C6gi+bE4qFKghsBRFfZT8NzoQBs6JhLotoA==", "dev": true, "requires": { "chalk": "2.3.0", @@ -7192,13 +7201,13 @@ } }, "postcss-loader": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-2.0.9.tgz", - "integrity": "sha512-sgoXPtmgVT3aBAhU47Kig8oPF+mbXl8Unjvtz1Qj1q2D2EvSVJW2mKJNzxv5y/LvA9xWwuvdysvhc7Zn80UWWw==", + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-2.0.10.tgz", + "integrity": "sha512-xQaDcEgJ/2JqFY18zpFkik8vyYs7oS5ZRbrjvDqkP97k2wYWfPT4+qA0m4o3pTSCsz0u26PNqs8ZO9FRUWAqrA==", "dev": true, "requires": { "loader-utils": "1.1.0", - "postcss": "6.0.15", + "postcss": "6.0.16", "postcss-load-config": "1.2.0", "schema-utils": "0.3.0" }, @@ -7235,9 +7244,9 @@ } }, "postcss": { - "version": "6.0.15", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.15.tgz", - "integrity": "sha512-v/SpyMzLbtkmh45zUdaqLAaqXqzPdSrw8p4cQVO0/w6YiYfpj4k+Wkzhn68qk9br+H+0qfddhdPEVnbmBPfXVQ==", + "version": "6.0.16", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.16.tgz", + "integrity": "sha512-m758RWPmSjFH/2MyyG3UOW1fgYbR9rtdzz5UNJnlm7OLtu4B2h9C6gi+bE4qFKghsBRFfZT8NzoQBs6JhLotoA==", "dev": true, "requires": { "chalk": "2.3.0", @@ -7352,7 +7361,7 @@ "integrity": "sha1-thTJcgvmgW6u41+zpfqh26agXds=", "dev": true, "requires": { - "postcss": "6.0.15" + "postcss": "6.0.16" }, "dependencies": { "ansi-styles": { @@ -7387,9 +7396,9 @@ } }, "postcss": { - "version": "6.0.15", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.15.tgz", - "integrity": "sha512-v/SpyMzLbtkmh45zUdaqLAaqXqzPdSrw8p4cQVO0/w6YiYfpj4k+Wkzhn68qk9br+H+0qfddhdPEVnbmBPfXVQ==", + "version": "6.0.16", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.16.tgz", + "integrity": "sha512-m758RWPmSjFH/2MyyG3UOW1fgYbR9rtdzz5UNJnlm7OLtu4B2h9C6gi+bE4qFKghsBRFfZT8NzoQBs6JhLotoA==", "dev": true, "requires": { "chalk": "2.3.0", @@ -7421,7 +7430,7 @@ "dev": true, "requires": { "css-selector-tokenizer": "0.7.0", - "postcss": "6.0.15" + "postcss": "6.0.16" }, "dependencies": { "ansi-styles": { @@ -7456,9 +7465,9 @@ } }, "postcss": { - "version": "6.0.15", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.15.tgz", - "integrity": "sha512-v/SpyMzLbtkmh45zUdaqLAaqXqzPdSrw8p4cQVO0/w6YiYfpj4k+Wkzhn68qk9br+H+0qfddhdPEVnbmBPfXVQ==", + "version": "6.0.16", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.16.tgz", + "integrity": "sha512-m758RWPmSjFH/2MyyG3UOW1fgYbR9rtdzz5UNJnlm7OLtu4B2h9C6gi+bE4qFKghsBRFfZT8NzoQBs6JhLotoA==", "dev": true, "requires": { "chalk": "2.3.0", @@ -7490,7 +7499,7 @@ "dev": true, "requires": { "css-selector-tokenizer": "0.7.0", - "postcss": "6.0.15" + "postcss": "6.0.16" }, "dependencies": { "ansi-styles": { @@ -7525,9 +7534,9 @@ } }, "postcss": { - "version": "6.0.15", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.15.tgz", - "integrity": "sha512-v/SpyMzLbtkmh45zUdaqLAaqXqzPdSrw8p4cQVO0/w6YiYfpj4k+Wkzhn68qk9br+H+0qfddhdPEVnbmBPfXVQ==", + "version": "6.0.16", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.16.tgz", + "integrity": "sha512-m758RWPmSjFH/2MyyG3UOW1fgYbR9rtdzz5UNJnlm7OLtu4B2h9C6gi+bE4qFKghsBRFfZT8NzoQBs6JhLotoA==", "dev": true, "requires": { "chalk": "2.3.0", @@ -7559,7 +7568,7 @@ "dev": true, "requires": { "icss-replace-symbols": "1.1.0", - "postcss": "6.0.15" + "postcss": "6.0.16" }, "dependencies": { "ansi-styles": { @@ -7594,9 +7603,9 @@ } }, "postcss": { - "version": "6.0.15", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.15.tgz", - "integrity": "sha512-v/SpyMzLbtkmh45zUdaqLAaqXqzPdSrw8p4cQVO0/w6YiYfpj4k+Wkzhn68qk9br+H+0qfddhdPEVnbmBPfXVQ==", + "version": "6.0.16", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.16.tgz", + "integrity": "sha512-m758RWPmSjFH/2MyyG3UOW1fgYbR9rtdzz5UNJnlm7OLtu4B2h9C6gi+bE4qFKghsBRFfZT8NzoQBs6JhLotoA==", "dev": true, "requires": { "chalk": "2.3.0", @@ -7725,7 +7734,7 @@ "mime": "1.6.0", "minimatch": "3.0.4", "mkdirp": "0.5.1", - "postcss": "6.0.15", + "postcss": "6.0.16", "xxhashjs": "0.2.1" }, "dependencies": { @@ -7761,9 +7770,9 @@ } }, "postcss": { - "version": "6.0.15", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.15.tgz", - "integrity": "sha512-v/SpyMzLbtkmh45zUdaqLAaqXqzPdSrw8p4cQVO0/w6YiYfpj4k+Wkzhn68qk9br+H+0qfddhdPEVnbmBPfXVQ==", + "version": "6.0.16", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.16.tgz", + "integrity": "sha512-m758RWPmSjFH/2MyyG3UOW1fgYbR9rtdzz5UNJnlm7OLtu4B2h9C6gi+bE4qFKghsBRFfZT8NzoQBs6JhLotoA==", "dev": true, "requires": { "chalk": "2.3.0", @@ -7869,7 +7878,7 @@ "integrity": "sha1-myIXQXCaTGLVzVPGqt1UpxE36V8=", "dev": true, "requires": { - "@types/node": "6.0.95", + "@types/node": "6.0.96", "@types/q": "0.0.32", "@types/selenium-webdriver": "2.53.43", "blocking-proxy": "0.0.5", @@ -9593,13 +9602,13 @@ "resolve": "1.5.0", "semver": "5.4.1", "tslib": "1.8.1", - "tsutils": "2.15.0" + "tsutils": "2.16.0" } }, "tsutils": { - "version": "2.15.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.15.0.tgz", - "integrity": "sha512-kKb1mSqRMwF0GHKya5/hZsI2m7Flg4ONZDeYu4e6Gx+kYAu86zsLNCHcUmNWhCRaUcKshNI272hOzuaCQDzJ2g==", + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.16.0.tgz", + "integrity": "sha512-9Ier/60O7OZRNPiw+or5QAtAY4kQA+WDiO/r6xOYATEyefH9bdfvTRLCxrYnFhQlZfET2vYXKfpr3Vw2BiArZw==", "dev": true, "requires": { "tslib": "1.8.1" @@ -9679,17 +9688,17 @@ "optional": true }, "uglifyjs-webpack-plugin": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.1.5.tgz", - "integrity": "sha512-YBGc9G7dv12Vjx8vUQs54DZgAXVf04LlG6dNNiEbTZjL3PbUqiY4uPB9Kv+fUJaqRskEGva/lS7sh08yJr7jnA==", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.1.6.tgz", + "integrity": "sha512-VUja+7rYbznEvUaeb8IxOCTUrq4BCb1ml0vffa+mfwKtrAwlqnU0ENF14DtYltV1cxd/HSuK51CCA/D/8kMQVw==", "dev": true, "requires": { - "cacache": "10.0.1", + "cacache": "10.0.2", "find-cache-dir": "1.0.0", - "schema-utils": "0.3.0", + "schema-utils": "0.4.3", "serialize-javascript": "1.4.0", "source-map": "0.6.1", - "uglify-es": "3.2.2", + "uglify-es": "3.3.5", "webpack-sources": "1.1.0", "worker-farm": "1.5.2" }, @@ -9700,6 +9709,16 @@ "integrity": "sha512-BFnaq5ZOGcDN7FlrtBT4xxkgIToalIIxwjxLWVJ8bGTpe1LroqMiqQXdA7ygc7CRvaYS+9zfPGFnJqFSayx+AA==", "dev": true }, + "schema-utils": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.3.tgz", + "integrity": "sha512-sgv/iF/T4/SewJkaVpldKC4WjSkz0JsOh2eKtxCPpCO1oR05+7MOF+H476HVRbLArkgA7j5TRJJ4p2jdFkUGQQ==", + "dev": true, + "requires": { + "ajv": "5.5.2", + "ajv-keywords": "2.1.1" + } + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -9707,9 +9726,9 @@ "dev": true }, "uglify-es": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.2.2.tgz", - "integrity": "sha512-l+s5VLzFwGJfS+fbqaGf/Dfwo1MF13jLOF2ekL0PytzqEqQ6cVppvHf4jquqFok+35USMpKjqkYxy6pQyUcuug==", + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.5.tgz", + "integrity": "sha512-7IvaFuYtfbcXm0fGb13mmRYVQdzQDXETAtvYHbCDPt2V88Y8l2HaULOyW6ueoYA0JhGIcLK7dtHkDcBWySqnBw==", "dev": true, "requires": { "commander": "2.12.2", diff --git a/packages/demos/conference-app/angular/src/pages/schedule/schedule.html b/packages/demos/conference-app/angular/src/pages/schedule/schedule.html index 0ea6e132fd..c2ca96b058 100644 --- a/packages/demos/conference-app/angular/src/pages/schedule/schedule.html +++ b/packages/demos/conference-app/angular/src/pages/schedule/schedule.html @@ -1,8 +1,11 @@ - - - - + + + + Menu + + + @@ -15,7 +18,8 @@ - + + Filter @@ -28,59 +32,33 @@ - - - - - +
+ + + {{group.time}} + + + - - - - - {{group.time}} - - - - - - - - - - - - - - - - + +

{{session.name}}

+

+ {{session.timeStart}} — + {{session.timeEnd}}: + {{session.location}} +

+
+ + + Favorite + + + Remove + + +
+
- - - No Sessions Found - - - - - - - - - - -
\ No newline at end of file diff --git a/packages/demos/conference-app/angular/src/pages/schedule/schedule.ts b/packages/demos/conference-app/angular/src/pages/schedule/schedule.ts index dec6ed90c2..33f55fbcb7 100644 --- a/packages/demos/conference-app/angular/src/pages/schedule/schedule.ts +++ b/packages/demos/conference-app/angular/src/pages/schedule/schedule.ts @@ -26,7 +26,8 @@ import { ScheduleFilterPage } from '../schedule-filter/schedule-filter'; @Component({ selector: 'page-schedule', - templateUrl: 'schedule.html' + templateUrl: 'schedule.html', + styleUrls: ['./schedule.scss'] }) export class SchedulePage { // the list is a child of the schedule page