Copy disabled (too large)
Download .txt
Showing preview only (10,074K chars total). Download the full file to get everything.
Repository: ionic-team/starters
Branch: main
Commit: cbac18102df5
Files: 754
Total size: 9.4 MB
Directory structure:
gitextract_q5flt7bx/
├── .github/
│ ├── CODEOWNERS
│ ├── ISSUE_TEMPLATE.md
│ ├── ionic-issue-bot.yml
│ └── workflows/
│ ├── main.yml
│ └── wizard-templates.yml
├── .gitignore
├── .gitmodules
├── .npmrc
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── angular/
│ ├── base/
│ │ ├── .browserslistrc
│ │ ├── .editorconfig
│ │ ├── .eslintrc.json
│ │ ├── .gitignore
│ │ ├── .vscode/
│ │ │ ├── extensions.json
│ │ │ └── settings.json
│ │ ├── angular.json
│ │ ├── ionic.config.json
│ │ ├── karma.conf.js
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── app/
│ │ │ │ ├── app.component.html
│ │ │ │ ├── app.component.scss
│ │ │ │ ├── app.component.spec.ts
│ │ │ │ ├── app.component.ts
│ │ │ │ └── app.module.ts
│ │ │ ├── environments/
│ │ │ │ ├── environment.prod.ts
│ │ │ │ └── environment.ts
│ │ │ ├── global.scss
│ │ │ ├── index.html
│ │ │ ├── main.ts
│ │ │ ├── polyfills.ts
│ │ │ ├── test.ts
│ │ │ ├── theme/
│ │ │ │ └── variables.scss
│ │ │ └── zone-flags.ts
│ │ ├── tsconfig.app.json
│ │ ├── tsconfig.json
│ │ └── tsconfig.spec.json
│ ├── community/
│ │ └── .gitkeep
│ └── official/
│ ├── blank/
│ │ ├── ionic.starter.json
│ │ └── src/
│ │ └── app/
│ │ ├── app-routing.module.ts
│ │ ├── app.component.html
│ │ ├── app.module.ts
│ │ └── home/
│ │ ├── home-routing.module.ts
│ │ ├── home.module.ts
│ │ ├── home.page.html
│ │ ├── home.page.scss
│ │ ├── home.page.spec.ts
│ │ └── home.page.ts
│ ├── list/
│ │ ├── ionic.config.json
│ │ ├── ionic.starter.json
│ │ └── src/
│ │ └── app/
│ │ ├── app-routing.module.ts
│ │ ├── app.component.html
│ │ ├── app.module.ts
│ │ ├── home/
│ │ │ ├── home-routing.module.ts
│ │ │ ├── home.module.ts
│ │ │ ├── home.page.html
│ │ │ ├── home.page.scss
│ │ │ ├── home.page.spec.ts
│ │ │ └── home.page.ts
│ │ ├── message/
│ │ │ ├── message.component.html
│ │ │ ├── message.component.scss
│ │ │ ├── message.component.spec.ts
│ │ │ ├── message.component.ts
│ │ │ └── message.module.ts
│ │ ├── services/
│ │ │ ├── data.service.spec.ts
│ │ │ └── data.service.ts
│ │ └── view-message/
│ │ ├── view-message-routing.module.ts
│ │ ├── view-message.module.ts
│ │ ├── view-message.page.html
│ │ ├── view-message.page.scss
│ │ ├── view-message.page.spec.ts
│ │ └── view-message.page.ts
│ ├── sidemenu/
│ │ ├── ionic.starter.json
│ │ └── src/
│ │ └── app/
│ │ ├── app-routing.module.ts
│ │ ├── app.component.html
│ │ ├── app.component.scss
│ │ ├── app.component.spec.ts
│ │ ├── app.component.ts
│ │ ├── app.module.ts
│ │ └── folder/
│ │ ├── folder-routing.module.ts
│ │ ├── folder.module.ts
│ │ ├── folder.page.html
│ │ ├── folder.page.scss
│ │ ├── folder.page.spec.ts
│ │ └── folder.page.ts
│ └── tabs/
│ ├── ionic.starter.json
│ └── src/
│ └── app/
│ ├── app-routing.module.ts
│ ├── app.component.html
│ ├── app.module.ts
│ ├── explore-container/
│ │ ├── explore-container.component.html
│ │ ├── explore-container.component.scss
│ │ ├── explore-container.component.spec.ts
│ │ ├── explore-container.component.ts
│ │ └── explore-container.module.ts
│ ├── tab1/
│ │ ├── tab1-routing.module.ts
│ │ ├── tab1.module.ts
│ │ ├── tab1.page.html
│ │ ├── tab1.page.scss
│ │ ├── tab1.page.spec.ts
│ │ └── tab1.page.ts
│ ├── tab2/
│ │ ├── tab2-routing.module.ts
│ │ ├── tab2.module.ts
│ │ ├── tab2.page.html
│ │ ├── tab2.page.scss
│ │ ├── tab2.page.spec.ts
│ │ └── tab2.page.ts
│ ├── tab3/
│ │ ├── tab3-routing.module.ts
│ │ ├── tab3.module.ts
│ │ ├── tab3.page.html
│ │ ├── tab3.page.scss
│ │ ├── tab3.page.spec.ts
│ │ └── tab3.page.ts
│ └── tabs/
│ ├── tabs-routing.module.ts
│ ├── tabs.module.ts
│ ├── tabs.page.html
│ ├── tabs.page.scss
│ ├── tabs.page.spec.ts
│ └── tabs.page.ts
├── angular-standalone/
│ ├── base/
│ │ ├── .browserslistrc
│ │ ├── .editorconfig
│ │ ├── .eslintrc.json
│ │ ├── .gitignore
│ │ ├── .vscode/
│ │ │ ├── extensions.json
│ │ │ └── settings.json
│ │ ├── angular.json
│ │ ├── ionic.config.json
│ │ ├── karma.conf.js
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── app/
│ │ │ │ ├── app.component.html
│ │ │ │ ├── app.component.scss
│ │ │ │ ├── app.component.spec.ts
│ │ │ │ └── app.component.ts
│ │ │ ├── environments/
│ │ │ │ ├── environment.prod.ts
│ │ │ │ └── environment.ts
│ │ │ ├── global.scss
│ │ │ ├── index.html
│ │ │ ├── main.ts
│ │ │ ├── polyfills.ts
│ │ │ ├── test.ts
│ │ │ ├── theme/
│ │ │ │ └── variables.scss
│ │ │ └── zone-flags.ts
│ │ ├── tsconfig.app.json
│ │ ├── tsconfig.json
│ │ └── tsconfig.spec.json
│ ├── community/
│ │ └── .gitkeep
│ └── official/
│ ├── blank/
│ │ ├── ionic.starter.json
│ │ └── src/
│ │ └── app/
│ │ ├── app.component.html
│ │ ├── app.component.ts
│ │ ├── app.routes.ts
│ │ └── home/
│ │ ├── home.page.html
│ │ ├── home.page.scss
│ │ ├── home.page.spec.ts
│ │ └── home.page.ts
│ ├── list/
│ │ ├── ionic.config.json
│ │ ├── ionic.starter.json
│ │ └── src/
│ │ └── app/
│ │ ├── app.component.html
│ │ ├── app.component.spec.ts
│ │ ├── app.component.ts
│ │ ├── app.routes.ts
│ │ ├── home/
│ │ │ ├── home.page.html
│ │ │ ├── home.page.scss
│ │ │ ├── home.page.spec.ts
│ │ │ └── home.page.ts
│ │ ├── message/
│ │ │ ├── message.component.html
│ │ │ ├── message.component.scss
│ │ │ ├── message.component.spec.ts
│ │ │ └── message.component.ts
│ │ ├── services/
│ │ │ ├── data.service.spec.ts
│ │ │ └── data.service.ts
│ │ └── view-message/
│ │ ├── view-message.page.html
│ │ ├── view-message.page.scss
│ │ ├── view-message.page.spec.ts
│ │ └── view-message.page.ts
│ ├── sidemenu/
│ │ ├── ionic.starter.json
│ │ └── src/
│ │ └── app/
│ │ ├── app.component.html
│ │ ├── app.component.scss
│ │ ├── app.component.spec.ts
│ │ ├── app.component.ts
│ │ ├── app.routes.ts
│ │ └── folder/
│ │ ├── folder.page.html
│ │ ├── folder.page.scss
│ │ ├── folder.page.spec.ts
│ │ └── folder.page.ts
│ └── tabs/
│ ├── ionic.starter.json
│ └── src/
│ └── app/
│ ├── app.component.html
│ ├── app.component.ts
│ ├── app.routes.ts
│ ├── explore-container/
│ │ ├── explore-container.component.html
│ │ ├── explore-container.component.scss
│ │ ├── explore-container.component.spec.ts
│ │ └── explore-container.component.ts
│ ├── tab1/
│ │ ├── tab1.page.html
│ │ ├── tab1.page.scss
│ │ ├── tab1.page.spec.ts
│ │ └── tab1.page.ts
│ ├── tab2/
│ │ ├── tab2.page.html
│ │ ├── tab2.page.scss
│ │ ├── tab2.page.spec.ts
│ │ └── tab2.page.ts
│ ├── tab3/
│ │ ├── tab3.page.html
│ │ ├── tab3.page.scss
│ │ ├── tab3.page.spec.ts
│ │ └── tab3.page.ts
│ └── tabs/
│ ├── tabs.page.html
│ ├── tabs.page.scss
│ ├── tabs.page.spec.ts
│ ├── tabs.page.ts
│ └── tabs.routes.ts
├── bin/
│ └── ionic-starters
├── integrations/
│ └── cordova/
│ ├── config.xml
│ └── resources/
│ ├── README.md
│ └── android/
│ └── xml/
│ └── network_security_config.xml
├── ionic-angular/
│ ├── base/
│ │ ├── .editorconfig
│ │ ├── .gitignore
│ │ ├── ionic.config.json
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── app/
│ │ │ │ ├── app.scss
│ │ │ │ └── main.ts
│ │ │ ├── index.html
│ │ │ ├── manifest.json
│ │ │ ├── service-worker.js
│ │ │ └── theme/
│ │ │ └── variables.scss
│ │ ├── tsconfig.json
│ │ └── tslint.json
│ ├── community/
│ │ └── .gitkeep
│ └── official/
│ ├── aws/
│ │ ├── README.md
│ │ ├── ionic.starter.json
│ │ └── src/
│ │ ├── app/
│ │ │ ├── app.component.ts
│ │ │ ├── app.html
│ │ │ └── app.module.ts
│ │ ├── assets/
│ │ │ └── aws-sdk.js
│ │ ├── index.html
│ │ ├── pages/
│ │ │ ├── about/
│ │ │ │ ├── about.html
│ │ │ │ ├── about.scss
│ │ │ │ └── about.ts
│ │ │ ├── account/
│ │ │ │ ├── account.html
│ │ │ │ ├── account.scss
│ │ │ │ └── account.ts
│ │ │ ├── confirm/
│ │ │ │ ├── confirm.html
│ │ │ │ ├── confirm.scss
│ │ │ │ └── confirm.ts
│ │ │ ├── confirmSignIn/
│ │ │ │ ├── confirmSignIn.html
│ │ │ │ ├── confirmSignIn.scss
│ │ │ │ └── confirmSignIn.ts
│ │ │ ├── confirmSignUp/
│ │ │ │ ├── confirmSignUp.html
│ │ │ │ ├── confirmSignUp.scss
│ │ │ │ └── confirmSignUp.ts
│ │ │ ├── login/
│ │ │ │ ├── login.html
│ │ │ │ ├── login.scss
│ │ │ │ └── login.ts
│ │ │ ├── settings/
│ │ │ │ ├── settings.html
│ │ │ │ └── settings.ts
│ │ │ ├── signup/
│ │ │ │ ├── signup.html
│ │ │ │ ├── signup.scss
│ │ │ │ └── signup.ts
│ │ │ ├── tabs/
│ │ │ │ ├── tabs.html
│ │ │ │ └── tabs.ts
│ │ │ ├── tasks/
│ │ │ │ ├── tasks.html
│ │ │ │ ├── tasks.scss
│ │ │ │ └── tasks.ts
│ │ │ └── tasks-create/
│ │ │ ├── tasks-create.html
│ │ │ ├── tasks-create.scss
│ │ │ └── tasks-create.ts
│ │ └── providers/
│ │ ├── aws.dynamodb.ts
│ │ └── providers.ts
│ ├── blank/
│ │ ├── ionic.starter.json
│ │ └── src/
│ │ ├── app/
│ │ │ ├── app.component.ts
│ │ │ ├── app.html
│ │ │ └── app.module.ts
│ │ └── pages/
│ │ └── home/
│ │ ├── home.html
│ │ ├── home.scss
│ │ └── home.ts
│ ├── sidemenu/
│ │ ├── ionic.starter.json
│ │ └── src/
│ │ ├── app/
│ │ │ ├── app.component.ts
│ │ │ ├── app.html
│ │ │ └── app.module.ts
│ │ └── pages/
│ │ ├── home/
│ │ │ ├── home.html
│ │ │ ├── home.scss
│ │ │ └── home.ts
│ │ └── list/
│ │ ├── list.html
│ │ ├── list.scss
│ │ └── list.ts
│ ├── super/
│ │ ├── README.md
│ │ ├── ionic.starter.json
│ │ └── src/
│ │ ├── app/
│ │ │ ├── app.component.ts
│ │ │ ├── app.module.ts
│ │ │ └── app.scss
│ │ ├── assets/
│ │ │ └── i18n/
│ │ │ ├── ar.json
│ │ │ ├── bs.json
│ │ │ ├── by.json
│ │ │ ├── da.json
│ │ │ ├── de.json
│ │ │ ├── el.json
│ │ │ ├── en.json
│ │ │ ├── es-eu.json
│ │ │ ├── es.json
│ │ │ ├── fil.json
│ │ │ ├── fr.json
│ │ │ ├── he.json
│ │ │ ├── it.json
│ │ │ ├── ja.json
│ │ │ ├── nb_NO.json
│ │ │ ├── nl.json
│ │ │ ├── pl.json
│ │ │ ├── pt-PT.json
│ │ │ ├── pt-br.json
│ │ │ ├── ru.json
│ │ │ ├── sk.json
│ │ │ ├── sl.json
│ │ │ ├── sn.json
│ │ │ ├── sv.json
│ │ │ ├── th.json
│ │ │ ├── tr.json
│ │ │ ├── ua.json
│ │ │ ├── zh-cmn-Hans.json
│ │ │ └── zh-cmn-Hant.json
│ │ ├── mocks/
│ │ │ └── providers/
│ │ │ └── items.ts
│ │ ├── models/
│ │ │ └── item.ts
│ │ ├── pages/
│ │ │ ├── README.md
│ │ │ ├── cards/
│ │ │ │ ├── README.md
│ │ │ │ ├── cards.html
│ │ │ │ ├── cards.module.ts
│ │ │ │ ├── cards.scss
│ │ │ │ └── cards.ts
│ │ │ ├── content/
│ │ │ │ ├── README.md
│ │ │ │ ├── content.html
│ │ │ │ ├── content.module.ts
│ │ │ │ ├── content.scss
│ │ │ │ └── content.ts
│ │ │ ├── index.ts
│ │ │ ├── item-create/
│ │ │ │ ├── README.md
│ │ │ │ ├── item-create.html
│ │ │ │ ├── item-create.module.ts
│ │ │ │ ├── item-create.scss
│ │ │ │ └── item-create.ts
│ │ │ ├── item-detail/
│ │ │ │ ├── README.md
│ │ │ │ ├── item-detail.html
│ │ │ │ ├── item-detail.module.ts
│ │ │ │ ├── item-detail.scss
│ │ │ │ └── item-detail.ts
│ │ │ ├── list-master/
│ │ │ │ ├── README.md
│ │ │ │ ├── list-master.html
│ │ │ │ ├── list-master.module.ts
│ │ │ │ ├── list-master.scss
│ │ │ │ └── list-master.ts
│ │ │ ├── login/
│ │ │ │ ├── README.md
│ │ │ │ ├── login.html
│ │ │ │ ├── login.module.ts
│ │ │ │ ├── login.scss
│ │ │ │ └── login.ts
│ │ │ ├── menu/
│ │ │ │ ├── README.md
│ │ │ │ ├── menu.html
│ │ │ │ ├── menu.module.ts
│ │ │ │ ├── menu.scss
│ │ │ │ └── menu.ts
│ │ │ ├── search/
│ │ │ │ ├── README.md
│ │ │ │ ├── search.html
│ │ │ │ ├── search.module.ts
│ │ │ │ ├── search.scss
│ │ │ │ └── search.ts
│ │ │ ├── settings/
│ │ │ │ ├── README.md
│ │ │ │ ├── settings.html
│ │ │ │ ├── settings.module.ts
│ │ │ │ ├── settings.scss
│ │ │ │ └── settings.ts
│ │ │ ├── signup/
│ │ │ │ ├── README.md
│ │ │ │ ├── signup.html
│ │ │ │ ├── signup.module.ts
│ │ │ │ ├── signup.scss
│ │ │ │ └── signup.ts
│ │ │ ├── tabs/
│ │ │ │ ├── README.md
│ │ │ │ ├── tabs.html
│ │ │ │ ├── tabs.module.ts
│ │ │ │ ├── tabs.scss
│ │ │ │ └── tabs.ts
│ │ │ ├── tutorial/
│ │ │ │ ├── README.md
│ │ │ │ ├── tutorial.html
│ │ │ │ ├── tutorial.module.ts
│ │ │ │ ├── tutorial.scss
│ │ │ │ └── tutorial.ts
│ │ │ └── welcome/
│ │ │ ├── README.md
│ │ │ ├── welcome.html
│ │ │ ├── welcome.module.ts
│ │ │ ├── welcome.scss
│ │ │ └── welcome.ts
│ │ ├── providers/
│ │ │ ├── api/
│ │ │ │ └── api.ts
│ │ │ ├── index.ts
│ │ │ ├── items/
│ │ │ │ └── items.ts
│ │ │ ├── settings/
│ │ │ │ └── settings.ts
│ │ │ └── user/
│ │ │ └── user.ts
│ │ └── theme/
│ │ └── variables.scss
│ ├── super.welcome.js
│ ├── tabs/
│ │ ├── ionic.starter.json
│ │ └── src/
│ │ ├── app/
│ │ │ ├── app.component.ts
│ │ │ ├── app.html
│ │ │ └── app.module.ts
│ │ └── pages/
│ │ ├── about/
│ │ │ ├── about.html
│ │ │ ├── about.scss
│ │ │ └── about.ts
│ │ ├── contact/
│ │ │ ├── contact.html
│ │ │ ├── contact.scss
│ │ │ └── contact.ts
│ │ ├── home/
│ │ │ ├── home.html
│ │ │ ├── home.scss
│ │ │ └── home.ts
│ │ └── tabs/
│ │ ├── tabs.html
│ │ └── tabs.ts
│ └── tutorial/
│ ├── ionic.starter.json
│ └── src/
│ ├── app/
│ │ ├── app.component.ts
│ │ ├── app.html
│ │ └── app.module.ts
│ └── pages/
│ ├── hello-ionic/
│ │ ├── hello-ionic.html
│ │ ├── hello-ionic.scss
│ │ └── hello-ionic.ts
│ ├── item-details/
│ │ ├── item-details.html
│ │ ├── item-details.scss
│ │ └── item-details.ts
│ └── list/
│ ├── list.html
│ ├── list.scss
│ └── list.ts
├── ionic1/
│ ├── base/
│ │ ├── .bowerrc
│ │ ├── .editorconfig
│ │ ├── .gitignore
│ │ ├── bower.json
│ │ ├── gulpfile.js
│ │ ├── hooks/
│ │ │ ├── README.md
│ │ │ └── after_prepare/
│ │ │ └── 010_add_platform_class.js
│ │ ├── ionic.config.json
│ │ ├── package.json
│ │ ├── scss/
│ │ │ └── ionic.app.scss
│ │ └── www/
│ │ ├── index.html
│ │ ├── js/
│ │ │ └── app.js
│ │ ├── lib/
│ │ │ └── ionic/
│ │ │ ├── .bower.json
│ │ │ ├── README.md
│ │ │ ├── bower.json
│ │ │ ├── css/
│ │ │ │ └── ionic.css
│ │ │ ├── js/
│ │ │ │ ├── ionic-angular.js
│ │ │ │ ├── ionic.bundle.js
│ │ │ │ └── ionic.js
│ │ │ └── scss/
│ │ │ ├── _action-sheet.scss
│ │ │ ├── _animations.scss
│ │ │ ├── _backdrop.scss
│ │ │ ├── _badge.scss
│ │ │ ├── _bar.scss
│ │ │ ├── _button-bar.scss
│ │ │ ├── _button.scss
│ │ │ ├── _checkbox.scss
│ │ │ ├── _form.scss
│ │ │ ├── _grid.scss
│ │ │ ├── _items.scss
│ │ │ ├── _list.scss
│ │ │ ├── _loading.scss
│ │ │ ├── _menu.scss
│ │ │ ├── _mixins.scss
│ │ │ ├── _modal.scss
│ │ │ ├── _platform.scss
│ │ │ ├── _popover.scss
│ │ │ ├── _popup.scss
│ │ │ ├── _progress.scss
│ │ │ ├── _radio.scss
│ │ │ ├── _range.scss
│ │ │ ├── _refresher.scss
│ │ │ ├── _reset.scss
│ │ │ ├── _scaffolding.scss
│ │ │ ├── _select.scss
│ │ │ ├── _slide-box.scss
│ │ │ ├── _slides.scss
│ │ │ ├── _spinner.scss
│ │ │ ├── _tabs.scss
│ │ │ ├── _toggle.scss
│ │ │ ├── _transitions.scss
│ │ │ ├── _type.scss
│ │ │ ├── _util.scss
│ │ │ ├── _variables.scss
│ │ │ ├── ionic.scss
│ │ │ ├── ionicons/
│ │ │ │ ├── _ionicons-font.scss
│ │ │ │ ├── _ionicons-icons.scss
│ │ │ │ ├── _ionicons-variables.scss
│ │ │ │ └── ionicons.scss
│ │ │ └── tsconfig.json
│ │ ├── manifest.json
│ │ └── service-worker.js
│ ├── community/
│ │ └── .gitkeep
│ └── official/
│ ├── blank/
│ │ ├── ionic.starter.json
│ │ └── www/
│ │ ├── css/
│ │ │ └── style.css
│ │ ├── index.html
│ │ └── js/
│ │ └── app.js
│ ├── maps/
│ │ ├── ionic.starter.json
│ │ └── www/
│ │ ├── css/
│ │ │ └── style.css
│ │ ├── index.html
│ │ ├── js/
│ │ │ ├── app.js
│ │ │ ├── controllers.js
│ │ │ └── directives.js
│ │ ├── lib/
│ │ │ └── ionic/
│ │ │ ├── css/
│ │ │ │ └── ionic.css
│ │ │ ├── js/
│ │ │ │ ├── angular/
│ │ │ │ │ ├── angular-animate.js
│ │ │ │ │ ├── angular-resource.js
│ │ │ │ │ ├── angular-sanitize.js
│ │ │ │ │ └── angular.js
│ │ │ │ ├── angular-ui/
│ │ │ │ │ └── angular-ui-router.js
│ │ │ │ ├── ionic-angular.js
│ │ │ │ ├── ionic.bundle.js
│ │ │ │ └── ionic.js
│ │ │ └── version.json
│ │ └── templates/
│ │ ├── browse.html
│ │ ├── menu.html
│ │ ├── playlist.html
│ │ ├── playlists.html
│ │ └── search.html
│ ├── sidemenu/
│ │ ├── ionic.starter.json
│ │ └── www/
│ │ ├── css/
│ │ │ └── style.css
│ │ ├── index.html
│ │ ├── js/
│ │ │ ├── app.js
│ │ │ └── controllers.js
│ │ └── templates/
│ │ ├── browse.html
│ │ ├── login.html
│ │ ├── menu.html
│ │ ├── playlist.html
│ │ ├── playlists.html
│ │ └── search.html
│ └── tabs/
│ ├── ionic.starter.json
│ └── www/
│ ├── css/
│ │ └── style.css
│ ├── index.html
│ ├── js/
│ │ ├── app.js
│ │ ├── controllers.js
│ │ └── services.js
│ └── templates/
│ ├── chat-detail.html
│ ├── tab-account.html
│ ├── tab-chats.html
│ ├── tab-dash.html
│ └── tabs.html
├── package.json
├── react/
│ ├── base/
│ │ ├── .eslintrc.js
│ │ ├── .gitignore
│ │ ├── .vscode/
│ │ │ └── extensions.json
│ │ ├── ionic.config.json
│ │ ├── package.json
│ │ ├── public/
│ │ │ ├── index.html
│ │ │ └── manifest.json
│ │ ├── src/
│ │ │ ├── App.test.tsx
│ │ │ ├── App.tsx
│ │ │ ├── index.tsx
│ │ │ ├── react-app-env.d.ts
│ │ │ ├── reportWebVitals.ts
│ │ │ ├── service-worker.ts
│ │ │ ├── serviceWorkerRegistration.ts
│ │ │ ├── setupTests.ts
│ │ │ └── theme/
│ │ │ └── variables.css
│ │ └── tsconfig.json
│ ├── community/
│ │ └── .gitkeep
│ └── official/
│ ├── blank/
│ │ ├── ionic.starter.json
│ │ └── src/
│ │ ├── App.tsx
│ │ ├── components/
│ │ │ ├── ExploreContainer.css
│ │ │ └── ExploreContainer.tsx
│ │ └── pages/
│ │ ├── Home.css
│ │ └── Home.tsx
│ ├── list/
│ │ ├── ionic.starter.json
│ │ └── src/
│ │ ├── App.tsx
│ │ ├── components/
│ │ │ ├── MessageListItem.css
│ │ │ └── MessageListItem.tsx
│ │ ├── data/
│ │ │ └── messages.ts
│ │ └── pages/
│ │ ├── Home.css
│ │ ├── Home.tsx
│ │ ├── ViewMessage.css
│ │ └── ViewMessage.tsx
│ ├── sidemenu/
│ │ ├── ionic.starter.json
│ │ └── src/
│ │ ├── App.tsx
│ │ ├── components/
│ │ │ ├── ExploreContainer.css
│ │ │ ├── ExploreContainer.tsx
│ │ │ ├── Menu.css
│ │ │ └── Menu.tsx
│ │ └── pages/
│ │ ├── Page.css
│ │ └── Page.tsx
│ └── tabs/
│ ├── ionic.starter.json
│ └── src/
│ ├── App.tsx
│ ├── components/
│ │ ├── ExploreContainer.css
│ │ └── ExploreContainer.tsx
│ └── pages/
│ ├── Tab1.css
│ ├── Tab1.tsx
│ ├── Tab2.css
│ ├── Tab2.tsx
│ ├── Tab3.css
│ └── Tab3.tsx
├── react-vite/
│ ├── base/
│ │ ├── .browserslistrc
│ │ ├── .gitignore
│ │ ├── .vscode/
│ │ │ └── extensions.json
│ │ ├── cypress/
│ │ │ ├── fixtures/
│ │ │ │ └── example.json
│ │ │ └── support/
│ │ │ ├── commands.ts
│ │ │ └── e2e.ts
│ │ ├── cypress.config.ts
│ │ ├── eslint.config.js
│ │ ├── index.html
│ │ ├── ionic.config.json
│ │ ├── package.json
│ │ ├── public/
│ │ │ └── manifest.json
│ │ ├── src/
│ │ │ ├── App.test.tsx
│ │ │ ├── App.tsx
│ │ │ ├── main.tsx
│ │ │ ├── setupTests.ts
│ │ │ ├── theme/
│ │ │ │ └── variables.css
│ │ │ └── vite-env.d.ts
│ │ ├── tsconfig.json
│ │ ├── tsconfig.node.json
│ │ └── vite.config.ts
│ ├── community/
│ │ └── .gitkeep
│ └── official/
│ ├── blank/
│ │ ├── cypress/
│ │ │ └── e2e/
│ │ │ └── test.cy.ts
│ │ ├── ionic.starter.json
│ │ └── src/
│ │ ├── App.tsx
│ │ ├── components/
│ │ │ ├── ExploreContainer.css
│ │ │ └── ExploreContainer.tsx
│ │ └── pages/
│ │ ├── Home.css
│ │ └── Home.tsx
│ ├── list/
│ │ ├── cypress/
│ │ │ └── e2e/
│ │ │ └── test.cy.ts
│ │ ├── ionic.starter.json
│ │ └── src/
│ │ ├── App.tsx
│ │ ├── components/
│ │ │ ├── MessageListItem.css
│ │ │ └── MessageListItem.tsx
│ │ ├── data/
│ │ │ └── messages.ts
│ │ └── pages/
│ │ ├── Home.css
│ │ ├── Home.tsx
│ │ ├── ViewMessage.css
│ │ └── ViewMessage.tsx
│ ├── sidemenu/
│ │ ├── cypress/
│ │ │ └── e2e/
│ │ │ └── test.cy.ts
│ │ ├── ionic.starter.json
│ │ └── src/
│ │ ├── App.tsx
│ │ ├── components/
│ │ │ ├── ExploreContainer.css
│ │ │ ├── ExploreContainer.tsx
│ │ │ ├── Menu.css
│ │ │ └── Menu.tsx
│ │ └── pages/
│ │ ├── Page.css
│ │ └── Page.tsx
│ └── tabs/
│ ├── cypress/
│ │ └── e2e/
│ │ └── test.cy.ts
│ ├── ionic.starter.json
│ └── src/
│ ├── App.tsx
│ ├── components/
│ │ ├── ExploreContainer.css
│ │ └── ExploreContainer.tsx
│ └── pages/
│ ├── Tab1.css
│ ├── Tab1.tsx
│ ├── Tab2.css
│ ├── Tab2.tsx
│ ├── Tab3.css
│ └── Tab3.tsx
├── src/
│ ├── commands/
│ │ ├── build.ts
│ │ ├── deploy.ts
│ │ ├── find-redundant.ts
│ │ ├── generate-checksum.ts
│ │ └── test.ts
│ ├── definitions.ts
│ ├── index.ts
│ ├── lib/
│ │ └── build.ts
│ └── utils/
│ └── index.ts
├── tsconfig.json
├── types/
│ ├── cross-spawn.d.ts
│ └── string-width.d.ts
├── vue/
│ ├── base/
│ │ ├── .browserslistrc
│ │ ├── .eslintrc.js
│ │ ├── .gitignore
│ │ ├── .vscode/
│ │ │ └── extensions.json
│ │ ├── babel.config.js
│ │ ├── cypress.json
│ │ ├── ionic.config.json
│ │ ├── jest.config.js
│ │ ├── package.json
│ │ ├── public/
│ │ │ └── index.html
│ │ ├── src/
│ │ │ ├── main.ts
│ │ │ ├── shims-vue.d.ts
│ │ │ └── theme/
│ │ │ └── variables.css
│ │ ├── tests/
│ │ │ └── e2e/
│ │ │ ├── .eslintrc.js
│ │ │ ├── plugins/
│ │ │ │ └── index.js
│ │ │ └── support/
│ │ │ ├── commands.js
│ │ │ └── index.js
│ │ └── tsconfig.json
│ ├── community/
│ │ └── .gitkeep
│ └── official/
│ ├── blank/
│ │ ├── ionic.starter.json
│ │ ├── src/
│ │ │ ├── App.vue
│ │ │ ├── router/
│ │ │ │ └── index.ts
│ │ │ └── views/
│ │ │ └── HomePage.vue
│ │ └── tests/
│ │ ├── e2e/
│ │ │ └── specs/
│ │ │ └── test.js
│ │ └── unit/
│ │ └── example.spec.ts
│ ├── list/
│ │ ├── ionic.starter.json
│ │ ├── src/
│ │ │ ├── App.vue
│ │ │ ├── components/
│ │ │ │ └── MessageListItem.vue
│ │ │ ├── data/
│ │ │ │ └── messages.ts
│ │ │ ├── router/
│ │ │ │ └── index.ts
│ │ │ └── views/
│ │ │ ├── HomePage.vue
│ │ │ └── ViewMessagePage.vue
│ │ └── tests/
│ │ ├── e2e/
│ │ │ └── specs/
│ │ │ └── test.js
│ │ └── unit/
│ │ └── example.spec.ts
│ ├── sidemenu/
│ │ ├── ionic.starter.json
│ │ ├── src/
│ │ │ ├── App.vue
│ │ │ ├── router/
│ │ │ │ └── index.ts
│ │ │ └── views/
│ │ │ └── FolderPage.vue
│ │ └── tests/
│ │ ├── e2e/
│ │ │ └── specs/
│ │ │ └── test.js
│ │ └── unit/
│ │ └── example.spec.ts
│ └── tabs/
│ ├── ionic.starter.json
│ ├── src/
│ │ ├── App.vue
│ │ ├── components/
│ │ │ └── ExploreContainer.vue
│ │ ├── router/
│ │ │ └── index.ts
│ │ └── views/
│ │ ├── Tab1Page.vue
│ │ ├── Tab2Page.vue
│ │ ├── Tab3Page.vue
│ │ └── TabsPage.vue
│ └── tests/
│ ├── e2e/
│ │ └── specs/
│ │ └── test.js
│ └── unit/
│ └── example.spec.ts
└── vue-vite/
├── base/
│ ├── .browserslistrc
│ ├── .eslintignore
│ ├── .eslintrc.cjs
│ ├── .gitignore
│ ├── .vscode/
│ │ └── extensions.json
│ ├── cypress.config.ts
│ ├── index.html
│ ├── ionic.config.json
│ ├── package.json
│ ├── src/
│ │ ├── main.ts
│ │ ├── theme/
│ │ │ └── variables.css
│ │ └── vite-env.d.ts
│ ├── tests/
│ │ └── e2e/
│ │ ├── fixtures/
│ │ │ └── example.json
│ │ └── support/
│ │ ├── commands.ts
│ │ └── e2e.ts
│ ├── tsconfig.json
│ ├── tsconfig.node.json
│ └── vite.config.ts
├── community/
│ └── .gitkeep
└── official/
├── blank/
│ ├── ionic.starter.json
│ ├── src/
│ │ ├── App.vue
│ │ ├── router/
│ │ │ └── index.ts
│ │ └── views/
│ │ └── HomePage.vue
│ └── tests/
│ ├── e2e/
│ │ └── specs/
│ │ └── test.cy.ts
│ └── unit/
│ └── example.spec.ts
├── list/
│ ├── ionic.starter.json
│ ├── src/
│ │ ├── App.vue
│ │ ├── components/
│ │ │ └── MessageListItem.vue
│ │ ├── data/
│ │ │ └── messages.ts
│ │ ├── router/
│ │ │ └── index.ts
│ │ └── views/
│ │ ├── HomePage.vue
│ │ └── ViewMessagePage.vue
│ └── tests/
│ ├── e2e/
│ │ └── specs/
│ │ └── test.cy.ts
│ └── unit/
│ └── example.spec.ts
├── sidemenu/
│ ├── ionic.starter.json
│ ├── src/
│ │ ├── App.vue
│ │ ├── router/
│ │ │ └── index.ts
│ │ └── views/
│ │ └── FolderPage.vue
│ └── tests/
│ ├── e2e/
│ │ └── specs/
│ │ └── test.cy.ts
│ └── unit/
│ └── example.spec.ts
└── tabs/
├── ionic.starter.json
├── src/
│ ├── App.vue
│ ├── components/
│ │ └── ExploreContainer.vue
│ ├── router/
│ │ └── index.ts
│ └── views/
│ ├── Tab1Page.vue
│ ├── Tab2Page.vue
│ ├── Tab3Page.vue
│ └── TabsPage.vue
└── tests/
├── e2e/
│ └── specs/
│ └── test.cy.ts
└── unit/
└── example.spec.ts
================================================
FILE CONTENTS
================================================
================================================
FILE: .github/CODEOWNERS
================================================
# Lines starting with '#' are comments.
# Each line is a file pattern followed by one or more owners.
# More details are here: https://help.github.com/articles/about-codeowners/
# The '*' pattern is global owners.
# Order is important. The last matching pattern has the most precedence.
# The folders are ordered as follows:
# In each subsection folders are ordered first by depth, then alphabetically.
# This should make it easy to add new rules without breaking existing ones.
* @ionic-team/framework
================================================
FILE: .github/ISSUE_TEMPLATE.md
================================================
<!-- 🚨 PLEASE READ 🚨
This issue tracker is for bug reports and feature requests for the Ionic Starter Templates.
- For support questions, see our support page: https://ionicframework.com/support
- For feature requests, feel free to delete this template and just describe the feature.
-->
**Starter Type:** <!-- ? angular, ionic-angular, ionic1, etc. -->
**Starter Template:** <!-- ? blank, tabs, etc. -->
**Description:**
<!-- Please describe the problem you're having. -->
**My `ionic info`:**
<!--
Post the output of running `ionic info` (within your project, if applicable)
below. `ionic info` is a CLI command that prints out environment information.
-->
```
<paste here>
```
**Other Information:**
<!--
e.g. stacktraces, related issues, suggestions how to fix, stackoverflow links,
forum links, etc
-->
================================================
FILE: .github/ionic-issue-bot.yml
================================================
triage:
label: triage
dryRun: false
closeAndLock:
labels:
- label: "ionitron: support"
message: >
Thanks for the issue! This issue appears to be a support request. We
use this issue tracker exclusively for bug reports and feature
requests. For support questions, please see our [Support
Page](https://ionicframework.com/support).
Thank you for using Ionic!
- label: "ionitron: pro"
message: >
Thanks for the issue! This issue appears to be related to our
commercial products. We use this issue tracker exclusively for bug
reports and feature requests. Please [open a support
ticket](https://ionicframework.com/support/request) and we'll be happy
to assist you.
Thank you for using Ionic!
- label: "ionitron: missing template"
message: >
Thanks for the issue! It appears that you have not filled out the
provided issue template. We use this issue template in order to gather
more information and further assist you. Please create a new issue and
ensure the template is fully filled out.
Thank you for using Ionic!
- label: "ionitron: cordova"
message: >
Thanks for the issue! We use this issue tracker exclusively for bug
reports and feature requests. It appears that this issue is associated
with Cordova. Please see Cordova's [Reporting
Issues](https://cordova.apache.org/contribute/issues.html) page.
Thank you for using Ionic!
close: true
lock: true
dryRun: false
wrongRepo:
repos:
- label: "ionitron: framework"
repo: ionic
message: >
Thanks for the issue! We use this issue tracker exclusively for bug
reports and feature requests. It appears that this issue is associated
with the Ionic Framework. I am moving this issue to the Ionic Framework
repository. Please track this issue over there.
Thank you for using Ionic!
- label: "ionitron: cli"
repo: ionic-cli
message: >
Thanks for the issue! We use this issue tracker exclusively for bug
reports and feature requests. It appears that this issue is associated
with the Ionic CLI. I am moving this issue to the Ionic CLI repository.
Please track this issue over there.
Thank you for using Ionic!
- label: "ionitron: capacitor"
repo: capacitor
message: >
Thanks for the issue! We use this issue tracker exclusively for bug
reports and feature requests. It appears that this issue is associated
with Capacitor. I am moving this issue to the Capacitor repository.
Please track this issue over there.
Thank you for using Ionic!
- label: "ionitron: ionic-native"
repo: ionic-native
message: >
Thanks for the issue! We use this issue tracker exclusively for bug
reports and feature requests. It appears that this issue is associated
with Ionic Native. I am moving this issue to the Ionic Native
repository. Please track this issue over there.
Thank you for using Ionic!
- label: "ionitron: ionic-site"
repo: ionic-site
message: >
Thanks for the issue! We use this issue tracker exclusively for bug
reports and feature requests. It appears that this issue is associated
with the Ionic website. I am moving this issue to the Ionic website
repository. Please track this issue over there.
Thank you for using Ionic!
close: true
lock: true
dryRun: false
================================================
FILE: .github/workflows/main.yml
================================================
name: Build & Test
on:
push:
branches:
- main
pull_request:
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: true
- uses: actions/setup-node@v4
with:
node-version: 20
- name: Build
run: |
npm install
npm run src:lint
npm run src:build
npm run starters:find-redundant
npm run starters:build -- --current
- run: tar -cf build.tar build dist
- uses: actions/upload-artifact@v4
with:
name: build
path: build.tar
test:
strategy:
matrix:
# We explicitly list each test app so they can
# be built in parallel rather than only specifying
# "vue" which would cause several projects to be built sequentially.
framework: ['vue-vite-official-blank', 'vue-vite-official-list', 'vue-vite-official-tabs', 'vue-vite-official-sidemenu', 'vue-official-blank', 'vue-official-list', 'vue-official-tabs', 'vue-official-sidemenu', 'react-vite-official-blank', 'react-vite-official-list', 'react-vite-official-tabs', 'react-vite-official-sidemenu', 'react-official-blank', 'react-official-list', 'react-official-tabs', 'react-official-sidemenu', 'angular-standalone-official-blank', 'angular-standalone-official-list', 'angular-standalone-official-tabs', 'angular-standalone-official-sidemenu', 'angular-official-blank', 'angular-official-list', 'angular-official-tabs', 'angular-official-sidemenu']
runs-on: ubuntu-latest
needs: build
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
name: build
- run: tar -xf build.tar
- uses: actions/setup-node@v4
with:
node-version: 20
cache: npm
cache-dependency-path: |
build/${{ matrix.framework }}/ionic.starter.json
build/${{ matrix.framework }}/package.json
- name: Test ${{ matrix.framework }}
run: |
npm install
rm -rf node_modules/@types
npm run starters:test -- --type=${{ matrix.framework }}
# This step allows us to have a required
# status check for each matrix job without having
# to manually add each matrix run in the branch protection rules.
# Source: https://github.community/t/status-check-for-a-matrix-jobs/127354
verify-test:
if: ${{ always() }}
needs: test
runs-on: ubuntu-latest
steps:
- name: Check build matrix status
if: ${{ needs.test.result != 'success' }}
run: exit 1
test-legacy:
strategy:
matrix:
framework: ['ionic-angular', 'ionic1']
runs-on: ubuntu-latest
needs: build
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
name: build
- run: tar -xf build.tar
- uses: actions/setup-node@v4
with:
# Legacy starter apps do not support
# node 16+ which is why we have a separate job
node-version: 14
cache: npm
cache-dependency-path: |
build/${{ matrix.framework }}-*/ionic.starter.json
build/${{ matrix.framework }}-*/package.json
- name: Test ${{ matrix.framework }}
run: |
npm install
rm -rf node_modules/@types
npm run starters:test -- --type=${{ matrix.framework }}
# This step allows us to have a required
# status check for each matrix job without having
# to manually add each matrix run in the branch protection rules.
# Source: https://github.community/t/status-check-for-a-matrix-jobs/127354
verify-test-legacy:
if: ${{ always() }}
needs: test-legacy
runs-on: ubuntu-latest
steps:
- name: Check build matrix status
if: ${{ needs.test-legacy.result != 'success' }}
run: exit 1
deploy:
runs-on: ubuntu-latest
needs: [verify-test, verify-test-legacy]
permissions:
contents: read
id-token: write
if: ${{ github.ref == 'refs/heads/main' }}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
- uses: actions/download-artifact@v4
with:
name: build
- run: tar -xf build.tar
- uses: aws-actions/configure-aws-credentials@v2
with:
role-to-assume: ${{ secrets.AWS_ROLE_ARN }}
aws-region: us-west-2
- name: Deploy
run: |
npm install
npm run starters:deploy -- --tag latest
================================================
FILE: .github/workflows/wizard-templates.yml
================================================
name: Generate Wizard Templates
on:
schedule:
- cron: '30 9 * * *'
jobs:
wizard-templates:
strategy:
matrix:
framework: ['angular', 'react', 'vue']
template: ['list', 'tabs', 'sidemenu']
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Ionic CLI
run: npm install -g @ionic/cli
- name: Run ionic start
run: ionic start __NAME__ ${{ matrix.template }} --type=${{ matrix.framework }} --capacitor --no-link --no-interactive --no-color --confirm
- name: Run git push
run: |
git config user.email hi@ionicframework.com
git config user.name Ionitron
git add __NAME__
git commit -m 'Initial commit'
git subtree split -P __NAME__ -b wizard/${{ matrix.framework }}-official-${{ matrix.template }}
git push -f origin wizard/${{ matrix.framework }}-official-${{ matrix.template }}
================================================
FILE: .gitignore
================================================
.idea
logs
*.log
npm-debug.log*
.DS_Store
node_modules/
.env
build/*
!build/.gitkeep
dist
starter-checksum*
================================================
FILE: .gitmodules
================================================
[submodule "ionic-angular/community/ionic-team/example"]
path = ionic-angular/community/ionic-team/example
url = https://github.com/ionic-team/starter-example.git
[submodule "ionic-angular/community/danielsogl/super"]
path = ionic-angular/community/danielsogl/super
url = https://github.com/danielsogl/ionic-super-starter.git
[submodule "ionic-angular/community/oktadeveloper/jhipster"]
path = ionic-angular/community/oktadeveloper/jhipster
url = https://github.com/oktadeveloper/ionic-jhipster-starter.git
[submodule "angular/community/oktadeveloper/jhipster"]
path = angular/community/oktadeveloper/jhipster
url = https://github.com/oktadeveloper/ionic-jhipster-starter.git
[submodule "angular/community/ionic-team/enterprise-tabs"]
path = angular/community/ionic-team/enterprise-tabs
url = https://github.com/ionic-team/ionic-enterprise-starter.git
[submodule "react/community/ionic-team/portals"]
path = react/community/ionic-team/portals
url = https://github.com/ionic-team/portals-starter-react
[submodule "angular/community/ionic-team/portals"]
path = angular/community/ionic-team/portals
url = https://github.com/ionic-team/portals-starter-angular
[submodule "vue/community/ionic-team/portals"]
path = vue/community/ionic-team/portals
url = https://github.com/ionic-team/portals-starter-vue
[submodule "vue-vite/community/ionic-team/portals"]
path = vue-vite/community/ionic-team/portals
url = https://github.com/ionic-team/portals-starter-vue-vite
# The portals app for React does not
# have any code that changes between Create React App
# and Vite which is why we map to the same repo.
[submodule "react-vite/community/ionic-team/portals"]
path = react-vite/community/ionic-team/portals
url = https://github.com/ionic-team/portals-starter-react
================================================
FILE: .npmrc
================================================
package-lock=false
================================================
FILE: CONTRIBUTING.md
================================================
# Contributing
## Getting Started
To get started, clone the repo, and install dependencies:
```bash
npm i
```
Then build using:
```bash
npm run src:build
```
or build and watch for changes using:
```bash
npm run src:watch
```
> [!NOTE]
> We use TypeScript, so the code must be compiled before it runs.
## Generating
You can generate the starters by running:
```bash
npm run starters:build -- --current
```
You can build a single starter by specifying the path:
```bash
npm run starters:build -- angular/official/tabs --current
```
* Starters are generated by overlaying starter files (located in
`<type>/official/<name>/` or `<type>/community/<scope>/<name>/`) onto base
files (located in `<type>/base/`) into the `build/` directory.
* If the `--current` flag is not passed to the build command, the base files will
be checked out from the value of the `baseref`.
* The `baseref` is defined in the starter's manifest file, which is a special
file that invokes additional operations on the generated starter files. [Example manifest file](https://github.com/ionic-team/starters/blob/7bcf9aa56289f36a5f03ed24bed76ba8c3ac89fe/vue/official/list/ionic.starter.json#L3).
## Previewing
You can preview the starters by navigating to the `build` directory and running `ls` to find the name of the starter you want to preview:
```bash
cd build/
ls
```
The commands to serve the app differ slightly based on the framework. View each framework's commands below.
### Angular
Navigate into the starter's directory, install dependencies, then serve the app:
```bash
cd angular-official-list/
npm i
npm run start
```
> [!NOTE]
> Navigate to http://localhost:4200/ in your browser to preview the app.
### React
Navigate into the starter's directory, install dependencies, then serve the app:
```bash
cd react-official-list/
npm i
npm run start
```
> [!NOTE]
> The browser will automatically open a tab and navigate to http://localhost:3000/ to preview the app.
### React Vite
Navigate into the starter's directory, install dependencies, then serve the app:
```bash
cd react-vite-official-list/
npm i
npm run dev
```
> [!NOTE]
> The URL to preview the app defaults to http://localhost:5173/ unless that port is in use. The exact URL will be displayed after running the dev server.
### Vue
Navigate into the starter's directory, install dependencies, then serve the app:
```bash
cd vue-official-list/
npm i
npm run serve
```
> [!NOTE]
> Navigate to http://localhost:8080/ in your browser to preview the app.
### Vue Vite
Navigate into the starter's directory, install dependencies, then serve the app:
```bash
cd vue-vite-official-list/
npm i
npm run dev
```
> [!NOTE]
> The URL to preview the app defaults to http://localhost:5173/ unless that port is in use. The exact URL will be displayed after running the dev server.
## Testing
You can test starters by running:
```bash
npm run starters:test
```
You can test a single starter by specifying the starter ID (also the starter's
directory name within the `build/` directory):
```bash
npm run starters:test -- angular-official-tabs
```
* Starters must be generated before they can be tested. The test command works
with starters generated in the `build/` directory.
* To test a starter, first the dependencies are installed (`npm install`), and
then the `scripts.test` key in the starter's manifest file is executed. This
way, each starter can define how it must be tested.
### Manifest Files
The starter manifest file (named `ionic.starter.json`) is a required JSON file
at the root of the starter. The build process reads the manifest and takes
actions based upon what's defined in the file.
| Key | Description
|----------------|-------------
| `name` | The human-readable name.
| `baseref` | The latest git ref (branch or sha) at which the starter is compatible with the base files (located in `<type>/base/`).
| `welcome` | _(optional)_ A custom message to be displayed when the user runs `ionic start` on the starter. See [Starter Welcome](#starter-welcome).
| `gitignore` | _(optional)_ During build, the defined array of strings will be added to the bottom of the project's `.gitignore` file.
| `packageJson` | _(optional)_ During build, the defined keys will be recursively merged into the generated `package.json`.
| `tsconfigJson` | _(optional)_ During build, the defined keys will be recursively merged into the generated `tsconfig.json`.
| `tarignore` | _(optional)_ During deploy, the defined array of strings will be interpreted as globs to ignore files to include in the tar file when deployed.
| `scripts` | _(optional)_ An object of scripts that run during build or deploy.
| `scripts.test` | _(optional)_ During test, after dependencies are installed, the defined script will be executed to test the starter.
### Community Starters
To submit your own starter,
1. Fork this repo.
1. Fork or copy the [Example
Starter](https://github.com/ionic-team/starter-example).
1. Add a git submodule for your starter at `<type>/community/<your github
name>/<github repo name>`. For example:
```bash
git submodule add https://github.com/ionic-team/starter-example.git ionic-angular/community/ionic-team/example
```
1. Build your starter. For example:
```bash
npm run starters:build -- ionic-angular/community/ionic-team/example
```
1. Copy the generated starter into a different directory and test it!
To update your starter,
1. Push changes to your starter repo freely.
1. Run `git pull` in your starters fork directory
(`ionic-angular/community/ionic-team/example` for example).
1. Commit the changes to your fork and create a PR.
Tips:
* When you `cd` into a git submodule directory (i.e.
`ionic-angular/community/ionic-team/example`), git commands operate on the
submodule as its own repository.
* Inside a submodule folder, `git remote add local /path/to/starter/at/local`
will add a new [git remote](https://git-scm.com/docs/git-remote) which you can
use to pull local changes in. Make commits in your local starter repo, then
`git pull local`.
* New commits in a submodule must also be saved in the base repository for PRs.
* Don't include a `.gitignore` file. If you need to ignore some files in your
starter repo, you can use the private gitignore file located at
`.git/info/exclude`. If you need to add entries, you can use the `gitignore`
key in your manifest file.
### Starter Welcome
For a custom message to be displayed for your starter during `ionic start`, you
can set the `welcome` key of your starter manifest file to a string. For
terminal colors and other formatting, you can create a quick script to generate
the message, JSON-encode it, and copy it into your manifest file. See [this
example
script](https://github.com/ionic-team/starters/tree/master/ionic-angular/official/super.welcome.js)
for the Super Starter.
## Deploying (Automatic through CI)
Starters are deployed automatically when new commits are pushed to the `master`
branch.
During the deploy process, the `build/` directory is read and an archive of each
generated starter is created and gzipped and uploaded to an S3 bucket. The S3
bucket has a CloudFront distribution for close-proximity downloads. The
distribution ID is `E1XZ2T0DZXJ521` and can be found [at this
URL](https://d2ql0qc7j8u4b2.cloudfront.net).
## Deploying (Manually)
First, make sure you pull down the latest community starter submodules by running:
```bash
git pull --recurse-submodules
```
If you have not already initialized the submodules locally run:
```bash
git submodule update --init --recursive
```
Then run:
```bash
npm run starters:deploy
```
You can use `npm run starters:deploy -- --dry` to test the tar process.
By default, starters are deployed to the `testing` "tag" (`latest` is
production). You can install tagged starters by specifying the `--tag=<tag>`
option to `ionic start`).
> Note you will need permissions to the S3 bucket to manually deploy
================================================
FILE: LICENSE
================================================
MIT License
Copyright (c) 2017 Ionic
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
================================================
FILE: README.md
================================================
# Ionic Starter Templates
:book: **Start an Ionic app**: See our [Getting
Started](https://ionicframework.com/docs) guide.
:mega: **Support**: See our [Support Page][ionic-support] for general
support questions. The issues on GitHub should be reserved for bug reports and
feature requests.
:sparkling_heart: **Modify or add starter templates**: See
[CONTRIBUTING.md](./CONTRIBUTING.md).
### Starters
Project Type | Ionic Framework Version | Framework Version | Build Tool | Template Links | Notes
-------------------------------------|-------------------------|-------------------|--------------------------|---------------------------------------------------------------------------| ----
**`ionic1`** | 1 | AngularJS | | [Base](ionic1/base) / [Starters](ionic1/official) | Legacy framework; supports AngularJS only.
**`ionic-angular`** | 2/3 | Angular (2+) | `@ionic/app-scripts` | [Base](ionic-angular/base) / [Starters](ionic-angular/official) | Uses legacy build tool; Angular CLI unsupported.
**`angular`** | 4+ | Angular (4+) | Angular CLI | [Base](angular/base) / [Starters](angular/official) | Modern Angular CLI tooling.
**`angular-standalone`** | 6+ | Angular (8+) | Angular CLI | [Base](angular-standalone/base) / [Starters](angular-standalone/official) | Supports standalone components introduced in Angular 8.
**`react` (Ionic CLI v6 and below)** | 4.11+ | React (16+) | `react-scripts` | [Base](react/base) / [Starters](react/official) | Uses Create React App; supports React Hooks.
**`react` (Ionic CLI v7+)** | 4.11+ | React (17+) | Vite (`vite`) | [Base](react-vite/base) / [Starters](react-vite/official) | Vite-based tooling for modern React development.
**`vue` (Ionic CLI v6 and below)** | 5.4+ | Vue (3+) | `@vue/cli-service` | [Base](vue/base) / [Starters](vue/official) | Uses Vue CLI; supports Vue Composition API.
**`vue` (Ionic CLI v7+)** | 5.4+ | Vue (3+) | Vite (`@vite/cli`) | [Base](vue-vite/base) / [Starters](vue-vite/official) | Vite-based tooling for modern Vue development.
### Integrations
* [Cordova](integrations/cordova)
[ionic-support]: https://ionicframework.com/support
[circle-badge]: https://circleci.com/gh/ionic-team/starters.svg?style=shield
[circle-badge-url]: https://circleci.com/gh/ionic-team/starters
================================================
FILE: angular/base/.browserslistrc
================================================
# This file is used by the build system to adjust CSS and JS output to support the specified browsers below.
# For additional information regarding the format and rule options, please see:
# https://github.com/browserslist/browserslist#queries
# For the full list of supported browsers by the Angular framework, please see:
# https://angular.dev/reference/versions#browser-support
# You can see what browsers were selected by your queries by running:
# npx browserslist
Chrome >=107
Firefox >=106
Edge >=107
Safari >=16.1
iOS >=16.1
================================================
FILE: angular/base/.editorconfig
================================================
# Editor configuration, see https://editorconfig.org
root = true
[*]
charset = utf-8
indent_style = space
indent_size = 2
insert_final_newline = true
trim_trailing_whitespace = true
[*.ts]
quote_type = single
[*.md]
max_line_length = off
trim_trailing_whitespace = false
================================================
FILE: angular/base/.eslintrc.json
================================================
{
"root": true,
"ignorePatterns": ["projects/**/*"],
"overrides": [
{
"files": ["*.ts"],
"parserOptions": {
"project": ["tsconfig.json"],
"createDefaultProgram": true
},
"extends": [
"plugin:@angular-eslint/recommended",
"plugin:@angular-eslint/template/process-inline-templates"
],
"rules": {
"@angular-eslint/prefer-standalone": "off",
"@angular-eslint/component-class-suffix": [
"error",
{
"suffixes": ["Page", "Component"]
}
],
"@angular-eslint/component-selector": [
"error",
{
"type": "element",
"prefix": "app",
"style": "kebab-case"
}
],
"@angular-eslint/directive-selector": [
"error",
{
"type": "attribute",
"prefix": "app",
"style": "camelCase"
}
]
}
},
{
"files": ["*.html"],
"extends": ["plugin:@angular-eslint/template/recommended"],
"rules": {}
}
]
}
================================================
FILE: angular/base/.gitignore
================================================
# Specifies intentionally untracked files to ignore when using Git
# http://git-scm.com/docs/gitignore
*~
*.sw[mnpcod]
.tmp
*.tmp
*.tmp.*
UserInterfaceState.xcuserstate
$RECYCLE.BIN/
*.log
log.txt
/.sourcemaps
/.versions
/coverage
# Ionic
/.ionic
/www
/platforms
/plugins
# Compiled output
/dist
/tmp
/out-tsc
/bazel-out
# Node
/node_modules
npm-debug.log
yarn-error.log
# IDEs and editors
.idea/
.project
.classpath
.c9/
*.launch
.settings/
*.sublime-project
*.sublime-workspace
# Visual Studio Code
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
.history/*
# Miscellaneous
/.angular
/.angular/cache
.sass-cache/
/.nx
/.nx/cache
/connect.lock
/coverage
/libpeerconnection.log
testem.log
/typings
# System files
.DS_Store
Thumbs.db
================================================
FILE: angular/base/.vscode/extensions.json
================================================
{
"recommendations": [
"Webnative.webnative"
]
}
================================================
FILE: angular/base/.vscode/settings.json
================================================
{
"typescript.preferences.autoImportFileExcludePatterns": ["@ionic/angular/common", "@ionic/angular/standalone"]
}
================================================
FILE: angular/base/angular.json
================================================
{
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
"version": 1,
"newProjectRoot": "projects",
"projects": {
"app": {
"projectType": "application",
"schematics": {},
"root": "",
"sourceRoot": "src",
"prefix": "app",
"architect": {
"build": {
"builder": "@angular-devkit/build-angular:browser",
"options": {
"outputPath": "www",
"index": "src/index.html",
"main": "src/main.ts",
"polyfills": "src/polyfills.ts",
"tsConfig": "tsconfig.app.json",
"inlineStyleLanguage": "scss",
"assets": [
{
"glob": "**/*",
"input": "src/assets",
"output": "assets"
},
{
"glob": "**/*.svg",
"input": "node_modules/ionicons/dist/ionicons/svg",
"output": "./svg"
}
],
"styles": ["src/global.scss", "src/theme/variables.scss"],
"scripts": []
},
"configurations": {
"production": {
"budgets": [
{
"type": "initial",
"maximumWarning": "2mb",
"maximumError": "5mb"
},
{
"type": "anyComponentStyle",
"maximumWarning": "2kb",
"maximumError": "4kb"
}
],
"fileReplacements": [
{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.prod.ts"
}
],
"outputHashing": "all"
},
"development": {
"buildOptimizer": false,
"optimization": false,
"vendorChunk": true,
"extractLicenses": false,
"sourceMap": true,
"namedChunks": true
},
"ci": {
"progress": false
}
},
"defaultConfiguration": "production"
},
"serve": {
"builder": "@angular-devkit/build-angular:dev-server",
"configurations": {
"production": {
"buildTarget": "app:build:production"
},
"development": {
"buildTarget": "app:build:development"
},
"ci": {
"progress": false
}
},
"defaultConfiguration": "development"
},
"extract-i18n": {
"builder": "@angular-devkit/build-angular:extract-i18n",
"options": {
"buildTarget": "app:build"
}
},
"test": {
"builder": "@angular-devkit/build-angular:karma",
"options": {
"main": "src/test.ts",
"polyfills": "src/polyfills.ts",
"tsConfig": "tsconfig.spec.json",
"karmaConfig": "karma.conf.js",
"inlineStyleLanguage": "scss",
"assets": [
{
"glob": "**/*",
"input": "src/assets",
"output": "assets"
},
{
"glob": "**/*.svg",
"input": "node_modules/ionicons/dist/ionicons/svg",
"output": "./svg"
}
],
"styles": ["src/global.scss", "src/theme/variables.scss"],
"scripts": []
},
"configurations": {
"ci": {
"progress": false,
"watch": false
}
}
},
"lint": {
"builder": "@angular-eslint/builder:lint",
"options": {
"lintFilePatterns": [
"src/**/*.ts",
"src/**/*.html"
]
}
}
}
}
},
"cli": {
"schematicCollections": [
"@ionic/angular-toolkit"
]
},
"schematics": {
"@ionic/angular-toolkit:component": {
"styleext": "scss"
},
"@ionic/angular-toolkit:page": {
"styleext": "scss"
}
}
}
================================================
FILE: angular/base/ionic.config.json
================================================
{
"name": "ionic-app-base",
"app_id": "",
"type": "angular",
"integrations": {}
}
================================================
FILE: angular/base/karma.conf.js
================================================
// Karma configuration file, see link for more information
// https://karma-runner.github.io/1.0/config/configuration-file.html
module.exports = function (config) {
config.set({
basePath: '',
frameworks: ['jasmine', '@angular-devkit/build-angular'],
plugins: [
require('karma-jasmine'),
require('karma-chrome-launcher'),
require('karma-jasmine-html-reporter'),
require('karma-coverage'),
require('@angular-devkit/build-angular/plugins/karma')
],
client: {
jasmine: {
// you can add configuration options for Jasmine here
// the possible options are listed at https://jasmine.github.io/api/edge/Configuration.html
// for example, you can disable the random execution with `random: false`
// or set a specific seed with `seed: 4321`
},
clearContext: false // leave Jasmine Spec Runner output visible in browser
},
jasmineHtmlReporter: {
suppressAll: true // removes the duplicated traces
},
coverageReporter: {
dir: require('path').join(__dirname, './coverage/app'),
subdir: '.',
reporters: [
{ type: 'html' },
{ type: 'text-summary' }
]
},
reporters: ['progress', 'kjhtml'],
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
autoWatch: true,
browsers: ['Chrome'],
singleRun: false,
restartOnFileChange: true
});
};
================================================
FILE: angular/base/package.json
================================================
{
"name": "ionic-app-base",
"version": "0.0.0",
"author": "Ionic Framework",
"homepage": "https://ionicframework.com/",
"scripts": {
"ng": "ng",
"start": "ng serve",
"build": "ng build",
"watch": "ng build --watch --configuration development",
"test": "ng test",
"lint": "ng lint"
},
"private": true,
"dependencies": {
"@angular/animations": "^20.0.0",
"@angular/common": "^20.0.0",
"@angular/compiler": "^20.0.0",
"@angular/core": "^20.0.0",
"@angular/forms": "^20.0.0",
"@angular/platform-browser": "^20.0.0",
"@angular/platform-browser-dynamic": "^20.0.0",
"@angular/router": "^20.0.0",
"@ionic/angular": "^8.0.0",
"ionicons": "^7.0.0",
"rxjs": "~7.8.0",
"tslib": "^2.3.0",
"zone.js": "~0.15.0"
},
"devDependencies": {
"@angular-devkit/build-angular": "^20.0.0",
"@angular-eslint/builder": "^20.0.0",
"@angular-eslint/eslint-plugin": "^20.0.0",
"@angular-eslint/eslint-plugin-template": "^20.0.0",
"@angular-eslint/schematics": "^20.0.0",
"@angular-eslint/template-parser": "^20.0.0",
"@angular/cli": "^20.0.0",
"@angular/compiler-cli": "^20.0.0",
"@angular/language-service": "^20.0.0",
"@ionic/angular-toolkit": "^12.0.0",
"@types/jasmine": "~5.1.0",
"@typescript-eslint/eslint-plugin": "^8.18.0",
"@typescript-eslint/parser": "^8.18.0",
"eslint": "^9.16.0",
"eslint-plugin-import": "^2.29.1",
"eslint-plugin-jsdoc": "^48.2.1",
"eslint-plugin-prefer-arrow": "1.2.2",
"jasmine-core": "~5.1.0",
"jasmine-spec-reporter": "~5.0.0",
"karma": "~6.4.0",
"karma-chrome-launcher": "~3.2.0",
"karma-coverage": "~2.2.0",
"karma-jasmine": "~5.1.0",
"karma-jasmine-html-reporter": "~2.1.0",
"typescript": "~5.9.0"
}
}
================================================
FILE: angular/base/src/app/app.component.html
================================================
<ion-app>
</ion-app>
================================================
FILE: angular/base/src/app/app.component.scss
================================================
================================================
FILE: angular/base/src/app/app.component.spec.ts
================================================
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { TestBed } from '@angular/core/testing';
import { AppComponent } from './app.component';
describe('AppComponent', () => {
beforeEach(async () => {
await TestBed.configureTestingModule({
declarations: [AppComponent],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
}).compileComponents();
});
it('should create the app', () => {
const fixture = TestBed.createComponent(AppComponent);
const app = fixture.componentInstance;
expect(app).toBeTruthy();
});
});
================================================
FILE: angular/base/src/app/app.component.ts
================================================
import { Component } from '@angular/core';
@Component({
selector: 'app-root',
templateUrl: 'app.component.html',
styleUrls: ['app.component.scss'],
standalone: false,
})
export class AppComponent {
constructor() {}
}
================================================
FILE: angular/base/src/app/app.module.ts
================================================
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { RouteReuseStrategy } from '@angular/router';
import { IonicModule, IonicRouteStrategy } from '@ionic/angular';
import { AppComponent } from './app.component';
@NgModule({
declarations: [AppComponent],
imports: [BrowserModule, IonicModule.forRoot()],
providers: [{ provide: RouteReuseStrategy, useClass: IonicRouteStrategy }],
bootstrap: [AppComponent],
})
export class AppModule {}
================================================
FILE: angular/base/src/environments/environment.prod.ts
================================================
export const environment = {
production: true
};
================================================
FILE: angular/base/src/environments/environment.ts
================================================
// This file can be replaced during build by using the `fileReplacements` array.
// `ng build` replaces `environment.ts` with `environment.prod.ts`.
// The list of file replacements can be found in `angular.json`.
export const environment = {
production: false
};
/*
* For easier debugging in development mode, you can import the following file
* to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.
*
* This import should be commented out in production mode because it will have a negative impact
* on performance if an error is thrown.
*/
// import 'zone.js/plugins/zone-error'; // Included with Angular CLI.
================================================
FILE: angular/base/src/global.scss
================================================
/*
* App Global CSS
* ----------------------------------------------------------------------------
* Put style rules here that you want to apply globally. These styles are for
* the entire app and not just one component. Additionally, this file can be
* used as an entry point to import other CSS/Sass files to be included in the
* output CSS.
* For more information on global stylesheets, visit the documentation:
* https://ionicframework.com/docs/layout/global-stylesheets
*/
/* Core CSS required for Ionic components to work properly */
@import "@ionic/angular/css/core.css";
/* Basic CSS for apps built with Ionic */
@import "@ionic/angular/css/normalize.css";
@import "@ionic/angular/css/structure.css";
@import "@ionic/angular/css/typography.css";
@import "@ionic/angular/css/display.css";
/* Optional CSS utils that can be commented out */
@import "@ionic/angular/css/padding.css";
@import "@ionic/angular/css/float-elements.css";
@import "@ionic/angular/css/text-alignment.css";
@import "@ionic/angular/css/text-transformation.css";
@import "@ionic/angular/css/flex-utils.css";
/**
* Ionic Dark Mode
* -----------------------------------------------------
* For more info, please see:
* https://ionicframework.com/docs/theming/dark-mode
*/
/* @import "@ionic/angular/css/palettes/dark.always.css"; */
/* @import "@ionic/angular/css/palettes/dark.class.css"; */
@import "@ionic/angular/css/palettes/dark.system.css";
================================================
FILE: angular/base/src/index.html
================================================
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Ionic App</title>
<base href="/" />
<meta name="color-scheme" content="light dark" />
<meta name="viewport" content="viewport-fit=cover, width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<meta name="format-detection" content="telephone=no" />
<meta name="msapplication-tap-highlight" content="no" />
<link rel="icon" type="image/png" href="assets/icon/favicon.png" />
<!-- add to homescreen for ios -->
<meta name="mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black" />
</head>
<body>
<app-root></app-root>
</body>
</html>
================================================
FILE: angular/base/src/main.ts
================================================
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { AppModule } from './app/app.module';
platformBrowserDynamic().bootstrapModule(AppModule)
.catch(err => console.log(err));
================================================
FILE: angular/base/src/polyfills.ts
================================================
/**
* This file includes polyfills needed by Angular and is loaded before the app.
* You can add your own extra polyfills to this file.
*
* This file is divided into 2 sections:
* 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers.
* 2. Application imports. Files imported after ZoneJS that should be loaded before your main
* file.
*
* The current setup is for so-called "evergreen" browsers; the last versions of browsers that
* automatically update themselves. This includes recent versions of Safari, Chrome (including
* Opera), Edge on the desktop, and iOS and Chrome on mobile.
*
* Learn more in https://angular.io/guide/browser-support
*/
/***************************************************************************************************
* BROWSER POLYFILLS
*/
/**
* By default, zone.js will patch all possible macroTask and DomEvents
* user can disable parts of macroTask/DomEvents patch by setting following flags
* because those flags need to be set before `zone.js` being loaded, and webpack
* will put import in the top of bundle, so user need to create a separate file
* in this directory (for example: zone-flags.ts), and put the following flags
* into that file, and then add the following code before importing zone.js.
* import './zone-flags';
*
* The flags allowed in zone-flags.ts are listed here.
*
* The following flags will work for all browsers.
*
* (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame
* (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick
* (window as any).__zone_symbol__UNPATCHED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames
*
* in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js
* with the following flag, it will bypass `zone.js` patch for IE/Edge
*
* (window as any).__Zone_enable_cross_context_check = true;
*
*/
import './zone-flags';
/***************************************************************************************************
* Zone JS is required by default for Angular itself.
*/
import 'zone.js'; // Included with Angular CLI.
/***************************************************************************************************
* APPLICATION IMPORTS
*/
================================================
FILE: angular/base/src/test.ts
================================================
// This file is required by karma.conf.js and loads recursively all the .spec and framework files
import 'zone.js/testing';
import { getTestBed } from '@angular/core/testing';
import {
BrowserDynamicTestingModule,
platformBrowserDynamicTesting
} from '@angular/platform-browser-dynamic/testing';
// First, initialize the Angular testing environment.
getTestBed().initTestEnvironment(
BrowserDynamicTestingModule,
platformBrowserDynamicTesting(),
);
================================================
FILE: angular/base/src/theme/variables.scss
================================================
// For information on how to create your own theme, please refer to:
// https://ionicframework.com/docs/theming/
================================================
FILE: angular/base/src/zone-flags.ts
================================================
/**
* Prevents Angular change detection from
* running with certain Web Component callbacks
*/
// eslint-disable-next-line no-underscore-dangle
(window as any).__Zone_disable_customElements = true;
================================================
FILE: angular/base/tsconfig.app.json
================================================
/* To learn more about this file see: https://angular.io/config/tsconfig. */
{
"extends": "./tsconfig.json",
"compilerOptions": {
"outDir": "./out-tsc/app",
"types": []
},
"files": [
"src/main.ts",
"src/polyfills.ts"
],
"include": [
"src/**/*.d.ts"
]
}
================================================
FILE: angular/base/tsconfig.json
================================================
/* To learn more about this file see: https://angular.io/config/tsconfig. */
{
"compileOnSave": false,
"compilerOptions": {
"baseUrl": "./",
"outDir": "./dist/out-tsc",
"forceConsistentCasingInFileNames": true,
"strict": true,
"noImplicitOverride": true,
"noPropertyAccessFromIndexSignature": true,
"noImplicitReturns": true,
"noFallthroughCasesInSwitch": true,
"sourceMap": true,
"declaration": false,
"downlevelIteration": true,
"experimentalDecorators": true,
"moduleResolution": "node",
"importHelpers": true,
"target": "es2022",
"module": "es2020",
"lib": [
"es2018",
"dom"
],
"skipLibCheck": true,
"useDefineForClassFields": false
},
"angularCompilerOptions": {
"enableI18nLegacyMessageIdFormat": false,
"strictInjectionParameters": true,
"strictInputAccessModifiers": true,
"strictTemplates": true
}
}
================================================
FILE: angular/base/tsconfig.spec.json
================================================
/* To learn more about this file see: https://angular.io/config/tsconfig. */
{
"extends": "./tsconfig.json",
"compilerOptions": {
"outDir": "./out-tsc/spec",
"types": [
"jasmine"
]
},
"files": [
"src/test.ts",
"src/polyfills.ts"
],
"include": [
"src/**/*.spec.ts",
"src/**/*.d.ts"
]
}
================================================
FILE: angular/community/.gitkeep
================================================
================================================
FILE: angular/official/blank/ionic.starter.json
================================================
{
"name": "Blank Starter",
"baseref": "main",
"tarignore": [
"node_modules",
"package-lock.json",
"www"
],
"scripts": {
"test": "npm run lint && npm run build && npm run test -- --configuration=ci --browsers=ChromeHeadless"
}
}
================================================
FILE: angular/official/blank/src/app/app-routing.module.ts
================================================
import { NgModule } from '@angular/core';
import { PreloadAllModules, RouterModule, Routes } from '@angular/router';
const routes: Routes = [
{
path: 'home',
loadChildren: () => import('./home/home.module').then( m => m.HomePageModule)
},
{
path: '',
redirectTo: 'home',
pathMatch: 'full'
},
];
@NgModule({
imports: [
RouterModule.forRoot(routes, { preloadingStrategy: PreloadAllModules })
],
exports: [RouterModule]
})
export class AppRoutingModule { }
================================================
FILE: angular/official/blank/src/app/app.component.html
================================================
<ion-app>
<ion-router-outlet></ion-router-outlet>
</ion-app>
================================================
FILE: angular/official/blank/src/app/app.module.ts
================================================
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { RouteReuseStrategy } from '@angular/router';
import { IonicModule, IonicRouteStrategy } from '@ionic/angular';
import { AppComponent } from './app.component';
import { AppRoutingModule } from './app-routing.module';
@NgModule({
declarations: [AppComponent],
imports: [BrowserModule, IonicModule.forRoot(), AppRoutingModule],
providers: [{ provide: RouteReuseStrategy, useClass: IonicRouteStrategy }],
bootstrap: [AppComponent],
})
export class AppModule {}
================================================
FILE: angular/official/blank/src/app/home/home-routing.module.ts
================================================
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { HomePage } from './home.page';
const routes: Routes = [
{
path: '',
component: HomePage,
}
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule]
})
export class HomePageRoutingModule {}
================================================
FILE: angular/official/blank/src/app/home/home.module.ts
================================================
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { IonicModule } from '@ionic/angular';
import { FormsModule } from '@angular/forms';
import { HomePage } from './home.page';
import { HomePageRoutingModule } from './home-routing.module';
@NgModule({
imports: [
CommonModule,
FormsModule,
IonicModule,
HomePageRoutingModule
],
declarations: [HomePage]
})
export class HomePageModule {}
================================================
FILE: angular/official/blank/src/app/home/home.page.html
================================================
<ion-header [translucent]="true">
<ion-toolbar>
<ion-title>
Blank
</ion-title>
</ion-toolbar>
</ion-header>
<ion-content [fullscreen]="true">
<ion-header collapse="condense">
<ion-toolbar>
<ion-title size="large">Blank</ion-title>
</ion-toolbar>
</ion-header>
<div id="container">
<strong>Ready to create an app?</strong>
<p>Start with Ionic <a target="_blank" rel="noopener noreferrer" href="https://ionicframework.com/docs/components">UI Components</a></p>
</div>
</ion-content>
================================================
FILE: angular/official/blank/src/app/home/home.page.scss
================================================
#container {
text-align: center;
position: absolute;
left: 0;
right: 0;
top: 50%;
transform: translateY(-50%);
}
#container strong {
font-size: 20px;
line-height: 26px;
}
#container p {
font-size: 16px;
line-height: 22px;
color: #8c8c8c;
margin: 0;
}
#container a {
text-decoration: none;
}
================================================
FILE: angular/official/blank/src/app/home/home.page.spec.ts
================================================
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { IonicModule } from '@ionic/angular';
import { HomePage } from './home.page';
describe('HomePage', () => {
let component: HomePage;
let fixture: ComponentFixture<HomePage>;
beforeEach(async () => {
await TestBed.configureTestingModule({
declarations: [HomePage],
imports: [IonicModule.forRoot()]
}).compileComponents();
fixture = TestBed.createComponent(HomePage);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
================================================
FILE: angular/official/blank/src/app/home/home.page.ts
================================================
import { Component } from '@angular/core';
@Component({
selector: 'app-home',
templateUrl: 'home.page.html',
styleUrls: ['home.page.scss'],
standalone: false,
})
export class HomePage {
constructor() {}
}
================================================
FILE: angular/official/list/ionic.config.json
================================================
{
"name": "list",
"integrations": {},
"type": "angular"
}
================================================
FILE: angular/official/list/ionic.starter.json
================================================
{
"name": "List Starter",
"baseref": "main",
"tarignore": [
"node_modules",
"package-lock.json",
"www"
],
"scripts": {
"test": "npm run lint && npm run build && npm run test -- --configuration=ci --browsers=ChromeHeadless"
}
}
================================================
FILE: angular/official/list/src/app/app-routing.module.ts
================================================
import { NgModule } from '@angular/core';
import { PreloadAllModules, RouterModule, Routes } from '@angular/router';
const routes: Routes = [
{
path: 'home',
loadChildren: () => import('./home/home.module').then( m => m.HomePageModule)
},
{
path: 'message/:id',
loadChildren: () => import('./view-message/view-message.module').then( m => m.ViewMessagePageModule)
},
{
path: '',
redirectTo: 'home',
pathMatch: 'full'
},
];
@NgModule({
imports: [
RouterModule.forRoot(routes, { preloadingStrategy: PreloadAllModules })
],
exports: [RouterModule]
})
export class AppRoutingModule { }
================================================
FILE: angular/official/list/src/app/app.component.html
================================================
<ion-app>
<ion-router-outlet></ion-router-outlet>
</ion-app>
================================================
FILE: angular/official/list/src/app/app.module.ts
================================================
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { RouteReuseStrategy } from '@angular/router';
import { IonicModule, IonicRouteStrategy } from '@ionic/angular';
import { AppComponent } from './app.component';
import { AppRoutingModule } from './app-routing.module';
@NgModule({
declarations: [AppComponent],
imports: [BrowserModule, IonicModule.forRoot(), AppRoutingModule],
providers: [{ provide: RouteReuseStrategy, useClass: IonicRouteStrategy }],
bootstrap: [AppComponent],
})
export class AppModule {}
================================================
FILE: angular/official/list/src/app/home/home-routing.module.ts
================================================
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { HomePage } from './home.page';
const routes: Routes = [
{
path: '',
component: HomePage
}
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule],
})
export class HomePageRoutingModule {}
================================================
FILE: angular/official/list/src/app/home/home.module.ts
================================================
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { IonicModule } from '@ionic/angular';
import { FormsModule } from '@angular/forms';
import { HomePage } from './home.page';
import { HomePageRoutingModule } from './home-routing.module';
import { MessageComponentModule } from '../message/message.module';
@NgModule({
imports: [
CommonModule,
FormsModule,
IonicModule,
MessageComponentModule,
HomePageRoutingModule
],
declarations: [HomePage]
})
export class HomePageModule {}
================================================
FILE: angular/official/list/src/app/home/home.page.html
================================================
<ion-header [translucent]="true">
<ion-toolbar>
<ion-title>
Inbox
</ion-title>
</ion-toolbar>
</ion-header>
<ion-content [fullscreen]="true">
<ion-refresher slot="fixed" (ionRefresh)="refresh($event)">
<ion-refresher-content></ion-refresher-content>
</ion-refresher>
<ion-header collapse="condense">
<ion-toolbar>
<ion-title size="large">
Inbox
</ion-title>
</ion-toolbar>
</ion-header>
<ion-list>
@for (message of getMessages(); track message) {
<app-message [message]="message"></app-message>
}
</ion-list>
</ion-content>
================================================
FILE: angular/official/list/src/app/home/home.page.scss
================================================
================================================
FILE: angular/official/list/src/app/home/home.page.spec.ts
================================================
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { RouterModule } from '@angular/router';
import { IonicModule } from '@ionic/angular';
import { MessageComponentModule } from '../message/message.module';
import { HomePage } from './home.page';
describe('HomePage', () => {
let component: HomePage;
let fixture: ComponentFixture<HomePage>;
beforeEach(async () => {
await TestBed.configureTestingModule({
declarations: [HomePage],
imports: [IonicModule.forRoot(), MessageComponentModule, RouterModule.forRoot([])]
}).compileComponents();
fixture = TestBed.createComponent(HomePage);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
================================================
FILE: angular/official/list/src/app/home/home.page.ts
================================================
import { Component, inject } from '@angular/core';
import { RefresherCustomEvent } from '@ionic/angular';
import { MessageComponent } from '../message/message.component';
import { DataService, Message } from '../services/data.service';
@Component({
selector: 'app-home',
templateUrl: 'home.page.html',
styleUrls: ['home.page.scss'],
standalone: false,
})
export class HomePage {
private data = inject(DataService);
constructor() {}
refresh(ev: any) {
setTimeout(() => {
(ev as RefresherCustomEvent).detail.complete();
}, 3000);
}
getMessages(): Message[] {
return this.data.getMessages();
}
}
================================================
FILE: angular/official/list/src/app/message/message.component.html
================================================
@if (message) {
<ion-item [routerLink]="'/message/' + message.id" [detail]="false">
<div slot="start" [class]="!message.read ? 'dot dot-unread' : 'dot'"></div>
<ion-label class="ion-text-wrap">
<h2>
{{ message.fromName }}
<span class="date">
<ion-note>{{ message.date }}</ion-note>
@if (isIos()) {
<ion-icon aria-hidden="true" name="chevron-forward" size="small"></ion-icon>
}
</span>
</h2>
<h3>{{ message.subject }}</h3>
<p>
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</p>
</ion-label>
</ion-item>
}
================================================
FILE: angular/official/list/src/app/message/message.component.scss
================================================
ion-item {
--padding-start: 0;
--inner-padding-end: 0;
}
ion-label {
margin-top: 12px;
margin-bottom: 12px;
}
ion-item h2 {
font-weight: 600;
margin: 0;
/**
* With larger font scales
* the date/time should wrap to the next
* line. However, there should be
* space between the name and the date/time
* if they can appear on the same line.
*/
display: flex;
flex-wrap: wrap;
justify-content: space-between;
}
ion-item p {
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
width: 95%;
}
ion-item .date {
align-items: center;
display: flex;
}
ion-item ion-icon {
color: #c9c9ca;
}
ion-item ion-note {
font-size: 0.9375rem;
margin-right: 8px;
font-weight: normal;
}
ion-item ion-note.md {
margin-right: 14px;
}
.dot {
display: block;
height: 12px;
width: 12px;
border-radius: 50%;
align-self: start;
margin: 16px 10px 16px 16px;
}
.dot-unread {
background: var(--ion-color-primary);
}
ion-footer ion-title {
font-size: 11px;
font-weight: normal;
}
================================================
FILE: angular/official/list/src/app/message/message.component.spec.ts
================================================
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { RouterModule } from '@angular/router';
import { IonicModule } from '@ionic/angular';
import { MessageComponent } from './message.component';
describe('MessageComponent', () => {
let component: MessageComponent;
let fixture: ComponentFixture<MessageComponent>;
beforeEach(async () => {
await TestBed.configureTestingModule({
declarations: [MessageComponent],
imports: [IonicModule.forRoot(), RouterModule.forRoot([])]
}).compileComponents();
fixture = TestBed.createComponent(MessageComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
================================================
FILE: angular/official/list/src/app/message/message.component.ts
================================================
import { ChangeDetectionStrategy, Component, inject, Input } from '@angular/core';
import { Platform } from '@ionic/angular';
import { Message } from '../services/data.service';
@Component({
selector: 'app-message',
templateUrl: './message.component.html',
styleUrls: ['./message.component.scss'],
standalone: false,
changeDetection: ChangeDetectionStrategy.OnPush,
})
export class MessageComponent {
private platform = inject(Platform);
@Input() message?: Message;
isIos() {
return this.platform.is('ios')
}
}
================================================
FILE: angular/official/list/src/app/message/message.module.ts
================================================
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { RouterModule } from '@angular/router';
import { IonicModule } from '@ionic/angular';
import { MessageComponent } from './message.component';
@NgModule({
imports: [ CommonModule, FormsModule, IonicModule, RouterModule],
declarations: [MessageComponent],
exports: [MessageComponent]
})
export class MessageComponentModule {}
================================================
FILE: angular/official/list/src/app/services/data.service.spec.ts
================================================
import { TestBed } from '@angular/core/testing';
import { DataService } from './data.service';
describe('DataService', () => {
beforeEach(() => TestBed.configureTestingModule({}));
it('should be created', () => {
const service: DataService = TestBed.inject(DataService);
expect(service).toBeTruthy();
});
});
================================================
FILE: angular/official/list/src/app/services/data.service.ts
================================================
import { Injectable } from '@angular/core';
export interface Message {
fromName: string;
subject: string;
date: string;
id: number;
read: boolean;
}
@Injectable({
providedIn: 'root'
})
export class DataService {
public messages: Message[] = [
{
fromName: 'Matt Chorsey',
subject: 'New event: Trip to Vegas',
date: '9:32 AM',
id: 0,
read: false
},
{
fromName: 'Lauren Ruthford',
subject: 'Long time no chat',
date: '6:12 AM',
id: 1,
read: false
},
{
fromName: 'Jordan Firth',
subject: 'Report Results',
date: '4:55 AM',
id: 2,
read: false
},
{
fromName: 'Bill Thomas',
subject: 'The situation',
date: 'Yesterday',
id: 3,
read: false
},
{
fromName: 'Joanne Pollan',
subject: 'Updated invitation: Swim lessons',
date: 'Yesterday',
id: 4,
read: false
},
{
fromName: 'Andrea Cornerston',
subject: 'Last minute ask',
date: 'Yesterday',
id: 5,
read: false
},
{
fromName: 'Moe Chamont',
subject: 'Family Calendar - Version 1',
date: 'Last Week',
id: 6,
read: false
},
{
fromName: 'Kelly Richardson',
subject: 'Placeholder Headhots',
date: 'Last Week',
id: 7,
read: false
}
];
constructor() { }
public getMessages(): Message[] {
return this.messages;
}
public getMessageById(id: number): Message {
return this.messages[id];
}
}
================================================
FILE: angular/official/list/src/app/view-message/view-message-routing.module.ts
================================================
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { ViewMessagePage } from './view-message.page';
const routes: Routes = [
{
path: '',
component: ViewMessagePage
}
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule],
})
export class ViewMessagePageRoutingModule {}
================================================
FILE: angular/official/list/src/app/view-message/view-message.module.ts
================================================
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { ViewMessagePage } from './view-message.page';
import { IonicModule } from '@ionic/angular';
import { ViewMessagePageRoutingModule } from './view-message-routing.module';
@NgModule({
imports: [
CommonModule,
FormsModule,
IonicModule,
ViewMessagePageRoutingModule
],
declarations: [ViewMessagePage]
})
export class ViewMessagePageModule {}
================================================
FILE: angular/official/list/src/app/view-message/view-message.page.html
================================================
<ion-header [translucent]="true">
<ion-toolbar>
<ion-buttons slot="start">
<ion-back-button [text]="getBackButtonText()" defaultHref="/"></ion-back-button>
</ion-buttons>
</ion-toolbar>
</ion-header>
@if (message) {
<ion-content [fullscreen]="true">
<ion-item>
<ion-icon aria-hidden="true" name="person-circle" color="primary"></ion-icon>
<ion-label class="ion-text-wrap">
<h2>
{{ message.fromName }}
<span class="date">
<ion-note>{{ message.date }}</ion-note>
</span>
</h2>
<h3>To: <ion-note>Me</ion-note></h3>
</ion-label>
</ion-item>
<div class="ion-padding">
<h1>{{ message.subject }}</h1>
<p>
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</p>
</div>
</ion-content>
}
================================================
FILE: angular/official/list/src/app/view-message/view-message.page.scss
================================================
ion-item {
--inner-padding-end: 0;
--background: transparent;
}
ion-label {
margin-top: 12px;
margin-bottom: 12px;
}
ion-item h2 {
font-weight: 600;
/**
* With larger font scales
* the date/time should wrap to the next
* line. However, there should be
* space between the name and the date/time
* if they can appear on the same line.
*/
display: flex;
flex-wrap: wrap;
justify-content: space-between;
}
ion-item .date {
align-items: center;
display: flex;
}
ion-item ion-icon {
font-size: 42px;
margin-right: 8px;
}
ion-item ion-note {
font-size: 0.9375rem;
margin-right: 12px;
font-weight: normal;
}
h1 {
margin: 0;
font-weight: bold;
font-size: 1.4rem;
}
p {
line-height: 1.4;
}
================================================
FILE: angular/official/list/src/app/view-message/view-message.page.spec.ts
================================================
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { IonicModule } from '@ionic/angular';
import { RouterModule } from '@angular/router';
import { ViewMessagePageRoutingModule } from './view-message-routing.module';
import { ViewMessagePage } from './view-message.page';
describe('ViewMessagePage', () => {
let component: ViewMessagePage;
let fixture: ComponentFixture<ViewMessagePage>;
beforeEach(async () => {
TestBed.configureTestingModule({
declarations: [ViewMessagePage],
imports: [IonicModule.forRoot(), ViewMessagePageRoutingModule, RouterModule.forRoot([])]
}).compileComponents();
fixture = TestBed.createComponent(ViewMessagePage);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
================================================
FILE: angular/official/list/src/app/view-message/view-message.page.ts
================================================
import { Component, inject, OnInit } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { IonicModule, Platform } from '@ionic/angular';
import { DataService, Message } from '../services/data.service';
@Component({
selector: 'app-view-message',
templateUrl: './view-message.page.html',
styleUrls: ['./view-message.page.scss'],
standalone: false,
})
export class ViewMessagePage implements OnInit {
public message!: Message;
private data = inject(DataService);
private activatedRoute = inject(ActivatedRoute);
private platform = inject(Platform);
constructor() {}
ngOnInit() {
const id = this.activatedRoute.snapshot.paramMap.get('id') as string;
this.message = this.data.getMessageById(parseInt(id, 10));
}
getBackButtonText() {
const isIos = this.platform.is('ios')
return isIos ? 'Inbox' : '';
}
}
================================================
FILE: angular/official/sidemenu/ionic.starter.json
================================================
{
"name": "Sidemenu Starter",
"baseref": "main",
"tarignore": [
"node_modules",
"package-lock.json",
"www"
],
"scripts": {
"test": "npm run lint && npm run build && npm run test -- --configuration=ci --browsers=ChromeHeadless"
}
}
================================================
FILE: angular/official/sidemenu/src/app/app-routing.module.ts
================================================
import { NgModule } from '@angular/core';
import { PreloadAllModules, RouterModule, Routes } from '@angular/router';
const routes: Routes = [
{
path: '',
redirectTo: 'folder/inbox',
pathMatch: 'full'
},
{
path: 'folder/:id',
loadChildren: () => import('./folder/folder.module').then( m => m.FolderPageModule)
}
];
@NgModule({
imports: [
RouterModule.forRoot(routes, { preloadingStrategy: PreloadAllModules })
],
exports: [RouterModule]
})
export class AppRoutingModule {}
================================================
FILE: angular/official/sidemenu/src/app/app.component.html
================================================
<ion-app>
<ion-split-pane contentId="main-content">
<ion-menu contentId="main-content" type="overlay">
<ion-content>
<ion-list id="inbox-list">
<ion-list-header>Inbox</ion-list-header>
<ion-note>hi@ionicframework.com</ion-note>
@for (p of appPages; track p; let i = $index) {
<ion-menu-toggle auto-hide="false">
<ion-item routerDirection="root" [routerLink]="[p.url]" lines="none" detail="false" routerLinkActive="selected">
<ion-icon aria-hidden="true" slot="start" [ios]="p.icon + '-outline'" [md]="p.icon + '-sharp'"></ion-icon>
<ion-label>{{ p.title }}</ion-label>
</ion-item>
</ion-menu-toggle>
}
</ion-list>
<ion-list id="labels-list">
<ion-list-header>Labels</ion-list-header>
@for (label of labels; track label) {
<ion-item lines="none">
<ion-icon aria-hidden="true" slot="start" ios="bookmark-outline" md="bookmark-sharp"></ion-icon>
<ion-label>{{ label }}</ion-label>
</ion-item>
}
</ion-list>
</ion-content>
</ion-menu>
<ion-router-outlet id="main-content"></ion-router-outlet>
</ion-split-pane>
</ion-app>
================================================
FILE: angular/official/sidemenu/src/app/app.component.scss
================================================
ion-menu ion-content {
--background: var(--ion-item-background, var(--ion-background-color, #fff));
}
ion-menu.md ion-content {
--padding-start: 8px;
--padding-end: 8px;
--padding-top: 20px;
--padding-bottom: 20px;
}
ion-menu.md ion-list {
padding: 20px 0;
}
ion-menu.md ion-note {
margin-bottom: 30px;
}
ion-menu.md ion-list-header,
ion-menu.md ion-note {
padding-left: 10px;
}
ion-menu.md ion-list#inbox-list {
border-bottom: 1px solid var(--ion-background-color-step-150, #d7d8da);
}
ion-menu.md ion-list#inbox-list ion-list-header {
font-size: 22px;
font-weight: 600;
min-height: 20px;
}
ion-menu.md ion-list#labels-list ion-list-header {
font-size: 16px;
margin-bottom: 18px;
color: #757575;
min-height: 26px;
}
ion-menu.md ion-item {
--padding-start: 10px;
--padding-end: 10px;
border-radius: 4px;
}
ion-menu.md ion-item.selected {
--background: rgba(var(--ion-color-primary-rgb), 0.14);
}
ion-menu.md ion-item.selected ion-icon {
color: var(--ion-color-primary);
}
ion-menu.md ion-item ion-icon {
color: #616e7e;
}
ion-menu.md ion-item ion-label {
font-weight: 500;
}
ion-menu.ios ion-content {
--padding-bottom: 20px;
}
ion-menu.ios ion-list {
padding: 20px 0 0 0;
}
ion-menu.ios ion-note {
line-height: 24px;
margin-bottom: 20px;
}
ion-menu.ios ion-item {
--padding-start: 16px;
--padding-end: 16px;
--min-height: 50px;
}
ion-menu.ios ion-item.selected ion-icon {
color: var(--ion-color-primary);
}
ion-menu.ios ion-item ion-icon {
font-size: 24px;
color: #73849a;
}
ion-menu.ios ion-list#labels-list ion-list-header {
margin-bottom: 8px;
}
ion-menu.ios ion-list-header,
ion-menu.ios ion-note {
padding-left: 16px;
padding-right: 16px;
}
ion-menu.ios ion-note {
margin-bottom: 8px;
}
ion-note {
display: inline-block;
font-size: 16px;
color: var(--ion-color-medium-shade);
}
ion-item.selected {
--color: var(--ion-color-primary);
}
================================================
FILE: angular/official/sidemenu/src/app/app.component.spec.ts
================================================
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { TestBed } from '@angular/core/testing';
import { RouterModule } from '@angular/router';
import { AppComponent } from './app.component';
describe('AppComponent', () => {
beforeEach(async () => {
await TestBed.configureTestingModule({
declarations: [AppComponent],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
imports: [RouterModule.forRoot([])],
}).compileComponents();
});
it('should create the app', () => {
const fixture = TestBed.createComponent(AppComponent);
const app = fixture.componentInstance;
expect(app).toBeTruthy();
});
// TODO(ROU-10799): Fix the flaky test.
xit('should have menu labels', () => {
const fixture = TestBed.createComponent(AppComponent);
fixture.detectChanges();
const app = fixture.nativeElement;
const menuItems = app.querySelectorAll('ion-label');
expect(menuItems.length).toEqual(12);
expect(menuItems[0].textContent).toContain('Inbox');
expect(menuItems[1].textContent).toContain('Outbox');
});
it('should have urls', () => {
const fixture = TestBed.createComponent(AppComponent);
fixture.detectChanges();
const app = fixture.nativeElement;
const menuItems = app.querySelectorAll('ion-item');
expect(menuItems.length).toEqual(12);
expect(menuItems[0].getAttribute('href')).toEqual('/folder/inbox');
expect(menuItems[1].getAttribute('href')).toEqual('/folder/outbox');
});
});
================================================
FILE: angular/official/sidemenu/src/app/app.component.ts
================================================
import { Component } from '@angular/core';
@Component({
selector: 'app-root',
templateUrl: 'app.component.html',
styleUrls: ['app.component.scss'],
standalone: false,
})
export class AppComponent {
public appPages = [
{ title: 'Inbox', url: '/folder/inbox', icon: 'mail' },
{ title: 'Outbox', url: '/folder/outbox', icon: 'paper-plane' },
{ title: 'Favorites', url: '/folder/favorites', icon: 'heart' },
{ title: 'Archived', url: '/folder/archived', icon: 'archive' },
{ title: 'Trash', url: '/folder/trash', icon: 'trash' },
{ title: 'Spam', url: '/folder/spam', icon: 'warning' },
];
public labels = ['Family', 'Friends', 'Notes', 'Work', 'Travel', 'Reminders'];
constructor() {}
}
================================================
FILE: angular/official/sidemenu/src/app/app.module.ts
================================================
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { RouteReuseStrategy } from '@angular/router';
import { IonicModule, IonicRouteStrategy } from '@ionic/angular';
import { AppComponent } from './app.component';
import { AppRoutingModule } from './app-routing.module';
@NgModule({
declarations: [AppComponent],
imports: [BrowserModule, IonicModule.forRoot(), AppRoutingModule],
providers: [{ provide: RouteReuseStrategy, useClass: IonicRouteStrategy }],
bootstrap: [AppComponent],
})
export class AppModule {}
================================================
FILE: angular/official/sidemenu/src/app/folder/folder-routing.module.ts
================================================
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { FolderPage } from './folder.page';
const routes: Routes = [
{
path: '',
component: FolderPage
}
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule],
})
export class FolderPageRoutingModule {}
================================================
FILE: angular/official/sidemenu/src/app/folder/folder.module.ts
================================================
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { IonicModule } from '@ionic/angular';
import { FolderPageRoutingModule } from './folder-routing.module';
import { FolderPage } from './folder.page';
@NgModule({
imports: [
CommonModule,
FormsModule,
IonicModule,
FolderPageRoutingModule
],
declarations: [FolderPage]
})
export class FolderPageModule {}
================================================
FILE: angular/official/sidemenu/src/app/folder/folder.page.html
================================================
<ion-header [translucent]="true">
<ion-toolbar>
<ion-buttons slot="start">
<ion-menu-button></ion-menu-button>
</ion-buttons>
<ion-title>{{ folder }}</ion-title>
</ion-toolbar>
</ion-header>
<ion-content [fullscreen]="true">
<ion-header collapse="condense">
<ion-toolbar>
<ion-title size="large">{{ folder }}</ion-title>
</ion-toolbar>
</ion-header>
<div id="container">
<strong class="capitalize">{{ folder }}</strong>
<p>Explore <a target="_blank" rel="noopener noreferrer" href="https://ionicframework.com/docs/components">UI Components</a></p>
</div>
</ion-content>
================================================
FILE: angular/official/sidemenu/src/app/folder/folder.page.scss
================================================
ion-menu-button {
color: var(--ion-color-primary);
}
#container {
text-align: center;
position: absolute;
left: 0;
right: 0;
top: 50%;
transform: translateY(-50%);
}
#container strong {
font-size: 20px;
line-height: 26px;
}
#container p {
font-size: 16px;
line-height: 22px;
color: #8c8c8c;
margin: 0;
}
#container a {
text-decoration: none;
}
================================================
FILE: angular/official/sidemenu/src/app/folder/folder.page.spec.ts
================================================
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { RouterModule } from '@angular/router';
import { IonicModule } from '@ionic/angular';
import { FolderPage } from './folder.page';
describe('FolderPage', () => {
let component: FolderPage;
let fixture: ComponentFixture<FolderPage>;
beforeEach(async () => {
await TestBed.configureTestingModule({
declarations: [FolderPage],
imports: [IonicModule.forRoot(), RouterModule.forRoot([])]
}).compileComponents();
fixture = TestBed.createComponent(FolderPage);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
================================================
FILE: angular/official/sidemenu/src/app/folder/folder.page.ts
================================================
import { Component, inject, OnInit } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
@Component({
selector: 'app-folder',
templateUrl: './folder.page.html',
styleUrls: ['./folder.page.scss'],
standalone: false,
})
export class FolderPage implements OnInit {
public folder!: string;
private activatedRoute = inject(ActivatedRoute);
constructor() {}
ngOnInit() {
this.folder = this.activatedRoute.snapshot.paramMap.get('id') as string;
}
}
================================================
FILE: angular/official/tabs/ionic.starter.json
================================================
{
"name": "Tabs Starter",
"baseref": "main",
"tarignore": [
"node_modules",
"package-lock.json",
"www"
],
"scripts": {
"test": "npm run lint && npm run build && npm run test -- --configuration=ci --browsers=ChromeHeadless"
}
}
================================================
FILE: angular/official/tabs/src/app/app-routing.module.ts
================================================
import { NgModule } from '@angular/core';
import { PreloadAllModules, RouterModule, Routes } from '@angular/router';
const routes: Routes = [
{
path: '',
loadChildren: () => import('./tabs/tabs.module').then(m => m.TabsPageModule)
}
];
@NgModule({
imports: [
RouterModule.forRoot(routes, { preloadingStrategy: PreloadAllModules })
],
exports: [RouterModule]
})
export class AppRoutingModule {}
================================================
FILE: angular/official/tabs/src/app/app.component.html
================================================
<ion-app>
<ion-router-outlet></ion-router-outlet>
</ion-app>
================================================
FILE: angular/official/tabs/src/app/app.module.ts
================================================
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { RouteReuseStrategy } from '@angular/router';
import { IonicModule, IonicRouteStrategy } from '@ionic/angular';
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
@NgModule({
declarations: [AppComponent],
imports: [BrowserModule, IonicModule.forRoot(), AppRoutingModule],
providers: [{ provide: RouteReuseStrategy, useClass: IonicRouteStrategy }],
bootstrap: [AppComponent],
})
export class AppModule {}
================================================
FILE: angular/official/tabs/src/app/explore-container/explore-container.component.html
================================================
<div id="container">
<strong>{{ name }}</strong>
<p>Explore <a target="_blank" rel="noopener noreferrer" href="https://ionicframework.com/docs/components">UI Components</a></p>
</div>
================================================
FILE: angular/official/tabs/src/app/explore-container/explore-container.component.scss
================================================
#container {
text-align: center;
position: absolute;
left: 0;
right: 0;
top: 50%;
transform: translateY(-50%);
}
#container strong {
font-size: 20px;
line-height: 26px;
}
#container p {
font-size: 16px;
line-height: 22px;
color: #8c8c8c;
margin: 0;
}
#container a {
text-decoration: none;
}
================================================
FILE: angular/official/tabs/src/app/explore-container/explore-container.component.spec.ts
================================================
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { IonicModule } from '@ionic/angular';
import { ExploreContainerComponent } from './explore-container.component';
describe('ExploreContainerComponent', () => {
let component: ExploreContainerComponent;
let fixture: ComponentFixture<ExploreContainerComponent>;
beforeEach(async () => {
await TestBed.configureTestingModule({
declarations: [ExploreContainerComponent],
imports: [IonicModule.forRoot()]
}).compileComponents();
fixture = TestBed.createComponent(ExploreContainerComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
================================================
FILE: angular/official/tabs/src/app/explore-container/explore-container.component.ts
================================================
import { Component, Input } from '@angular/core';
@Component({
selector: 'app-explore-container',
templateUrl: './explore-container.component.html',
styleUrls: ['./explore-container.component.scss'],
standalone: false,
})
export class ExploreContainerComponent {
@Input() name?: string;
}
================================================
FILE: angular/official/tabs/src/app/explore-container/explore-container.module.ts
================================================
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { IonicModule } from '@ionic/angular';
import { ExploreContainerComponent } from './explore-container.component';
@NgModule({
imports: [ CommonModule, FormsModule, IonicModule],
declarations: [ExploreContainerComponent],
exports: [ExploreContainerComponent]
})
export class ExploreContainerComponentModule {}
================================================
FILE: angular/official/tabs/src/app/tab1/tab1-routing.module.ts
================================================
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { Tab1Page } from './tab1.page';
const routes: Routes = [
{
path: '',
component: Tab1Page,
}
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule]
})
export class Tab1PageRoutingModule {}
================================================
FILE: angular/official/tabs/src/app/tab1/tab1.module.ts
================================================
import { IonicModule } from '@ionic/angular';
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { Tab1Page } from './tab1.page';
import { ExploreContainerComponentModule } from '../explore-container/explore-container.module';
import { Tab1PageRoutingModule } from './tab1-routing.module';
@NgModule({
imports: [
IonicModule,
CommonModule,
FormsModule,
ExploreContainerComponentModule,
Tab1PageRoutingModule
],
declarations: [Tab1Page]
})
export class Tab1PageModule {}
================================================
FILE: angular/official/tabs/src/app/tab1/tab1.page.html
================================================
<ion-header [translucent]="true">
<ion-toolbar>
<ion-title>
Tab 1
</ion-title>
</ion-toolbar>
</ion-header>
<ion-content [fullscreen]="true">
<ion-header collapse="condense">
<ion-toolbar>
<ion-title size="large">Tab 1</ion-title>
</ion-toolbar>
</ion-header>
<app-explore-container name="Tab 1 page"></app-explore-container>
</ion-content>
================================================
FILE: angular/official/tabs/src/app/tab1/tab1.page.scss
================================================
================================================
FILE: angular/official/tabs/src/app/tab1/tab1.page.spec.ts
================================================
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { IonicModule } from '@ionic/angular';
import { ExploreContainerComponentModule } from '../explore-container/explore-container.module';
import { Tab1Page } from './tab1.page';
describe('Tab1Page', () => {
let component: Tab1Page;
let fixture: ComponentFixture<Tab1Page>;
beforeEach(async () => {
await TestBed.configureTestingModule({
declarations: [Tab1Page],
imports: [IonicModule.forRoot(), ExploreContainerComponentModule]
}).compileComponents();
fixture = TestBed.createComponent(Tab1Page);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
================================================
FILE: angular/official/tabs/src/app/tab1/tab1.page.ts
================================================
import { Component } from '@angular/core';
@Component({
selector: 'app-tab1',
templateUrl: 'tab1.page.html',
styleUrls: ['tab1.page.scss'],
standalone: false,
})
export class Tab1Page {
constructor() {}
}
================================================
FILE: angular/official/tabs/src/app/tab2/tab2-routing.module.ts
================================================
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { Tab2Page } from './tab2.page';
const routes: Routes = [
{
path: '',
component: Tab2Page,
}
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule]
})
export class Tab2PageRoutingModule {}
================================================
FILE: angular/official/tabs/src/app/tab2/tab2.module.ts
================================================
import { IonicModule } from '@ionic/angular';
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { Tab2Page } from './tab2.page';
import { ExploreContainerComponentModule } from '../explore-container/explore-container.module';
import { Tab2PageRoutingModule } from './tab2-routing.module';
@NgModule({
imports: [
IonicModule,
CommonModule,
FormsModule,
ExploreContainerComponentModule,
Tab2PageRoutingModule
],
declarations: [Tab2Page]
})
export class Tab2PageModule {}
================================================
FILE: angular/official/tabs/src/app/tab2/tab2.page.html
================================================
<ion-header [translucent]="true">
<ion-toolbar>
<ion-title>
Tab 2
</ion-title>
</ion-toolbar>
</ion-header>
<ion-content [fullscreen]="true">
<ion-header collapse="condense">
<ion-toolbar>
<ion-title size="large">Tab 2</ion-title>
</ion-toolbar>
</ion-header>
<app-explore-container name="Tab 2 page"></app-explore-container>
</ion-content>
================================================
FILE: angular/official/tabs/src/app/tab2/tab2.page.scss
================================================
================================================
FILE: angular/official/tabs/src/app/tab2/tab2.page.spec.ts
================================================
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { IonicModule } from '@ionic/angular';
import { ExploreContainerComponentModule } from '../explore-container/explore-container.module';
import { Tab2Page } from './tab2.page';
describe('Tab2Page', () => {
let component: Tab2Page;
let fixture: ComponentFixture<Tab2Page>;
beforeEach(async () => {
await TestBed.configureTestingModule({
declarations: [Tab2Page],
imports: [IonicModule.forRoot(), ExploreContainerComponentModule]
}).compileComponents();
fixture = TestBed.createComponent(Tab2Page);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
================================================
FILE: angular/official/tabs/src/app/tab2/tab2.page.ts
================================================
import { Component } from '@angular/core';
@Component({
selector: 'app-tab2',
templateUrl: 'tab2.page.html',
styleUrls: ['tab2.page.scss'],
standalone: false,
})
export class Tab2Page {
constructor() {}
}
================================================
FILE: angular/official/tabs/src/app/tab3/tab3-routing.module.ts
================================================
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { Tab3Page } from './tab3.page';
const routes: Routes = [
{
path: '',
component: Tab3Page,
}
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule]
})
export class Tab3PageRoutingModule {}
================================================
FILE: angular/official/tabs/src/app/tab3/tab3.module.ts
================================================
import { IonicModule } from '@ionic/angular';
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { Tab3Page } from './tab3.page';
import { ExploreContainerComponentModule } from '../explore-container/explore-container.module';
import { Tab3PageRoutingModule } from './tab3-routing.module';
@NgModule({
imports: [
IonicModule,
CommonModule,
FormsModule,
ExploreContainerComponentModule,
Tab3PageRoutingModule
],
declarations: [Tab3Page]
})
export class Tab3PageModule {}
================================================
FILE: angular/official/tabs/src/app/tab3/tab3.page.html
================================================
<ion-header [translucent]="true">
<ion-toolbar>
<ion-title>
Tab 3
</ion-title>
</ion-toolbar>
</ion-header>
<ion-content [fullscreen]="true">
<ion-header collapse="condense">
<ion-toolbar>
<ion-title size="large">Tab 3</ion-title>
</ion-toolbar>
</ion-header>
<app-explore-container name="Tab 3 page"></app-explore-container>
</ion-content>
================================================
FILE: angular/official/tabs/src/app/tab3/tab3.page.scss
================================================
================================================
FILE: angular/official/tabs/src/app/tab3/tab3.page.spec.ts
================================================
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { IonicModule } from '@ionic/angular';
import { ExploreContainerComponentModule } from '../explore-container/explore-container.module';
import { Tab3Page } from './tab3.page';
describe('Tab3Page', () => {
let component: Tab3Page;
let fixture: ComponentFixture<Tab3Page>;
beforeEach(async () => {
await TestBed.configureTestingModule({
declarations: [Tab3Page],
imports: [IonicModule.forRoot(), ExploreContainerComponentModule]
}).compileComponents();
fixture = TestBed.createComponent(Tab3Page);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
================================================
FILE: angular/official/tabs/src/app/tab3/tab3.page.ts
================================================
import { Component } from '@angular/core';
@Component({
selector: 'app-tab3',
templateUrl: 'tab3.page.html',
styleUrls: ['tab3.page.scss'],
standalone: false,
})
export class Tab3Page {
constructor() {}
}
================================================
FILE: angular/official/tabs/src/app/tabs/tabs-routing.module.ts
================================================
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { TabsPage } from './tabs.page';
const routes: Routes = [
{
path: 'tabs',
component: TabsPage,
children: [
{
path: 'tab1',
loadChildren: () => import('../tab1/tab1.module').then(m => m.Tab1PageModule)
},
{
path: 'tab2',
loadChildren: () => import('../tab2/tab2.module').then(m => m.Tab2PageModule)
},
{
path: 'tab3',
loadChildren: () => import('../tab3/tab3.module').then(m => m.Tab3PageModule)
},
{
path: '',
redirectTo: '/tabs/tab1',
pathMatch: 'full'
}
]
},
{
path: '',
redirectTo: '/tabs/tab1',
pathMatch: 'full'
}
];
@NgModule({
imports: [RouterModule.forChild(routes)],
})
export class TabsPageRoutingModule {}
================================================
FILE: angular/official/tabs/src/app/tabs/tabs.module.ts
================================================
import { IonicModule } from '@ionic/angular';
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { TabsPageRoutingModule } from './tabs-routing.module';
import { TabsPage } from './tabs.page';
@NgModule({
imports: [
IonicModule,
CommonModule,
FormsModule,
TabsPageRoutingModule
],
declarations: [TabsPage]
})
export class TabsPageModule {}
================================================
FILE: angular/official/tabs/src/app/tabs/tabs.page.html
================================================
<ion-tabs>
<ion-tab-bar slot="bottom">
<ion-tab-button tab="tab1" href="/tabs/tab1">
<ion-icon aria-hidden="true" name="triangle"></ion-icon>
<ion-label>Tab 1</ion-label>
</ion-tab-button>
<ion-tab-button tab="tab2" href="/tabs/tab2">
<ion-icon aria-hidden="true" name="ellipse"></ion-icon>
<ion-label>Tab 2</ion-label>
</ion-tab-button>
<ion-tab-button tab="tab3" href="/tabs/tab3">
<ion-icon aria-hidden="true" name="square"></ion-icon>
<ion-label>Tab 3</ion-label>
</ion-tab-button>
</ion-tab-bar>
</ion-tabs>
================================================
FILE: angular/official/tabs/src/app/tabs/tabs.page.scss
================================================
================================================
FILE: angular/official/tabs/src/app/tabs/tabs.page.spec.ts
================================================
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { TabsPage } from './tabs.page';
describe('TabsPage', () => {
let component: TabsPage;
let fixture: ComponentFixture<TabsPage>;
beforeEach(async () => {
await TestBed.configureTestingModule({
declarations: [TabsPage],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
}).compileComponents();
});
beforeEach(() => {
fixture = TestBed.createComponent(TabsPage);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
================================================
FILE: angular/official/tabs/src/app/tabs/tabs.page.ts
================================================
import { Component } from '@angular/core';
@Component({
selector: 'app-tabs',
templateUrl: 'tabs.page.html',
styleUrls: ['tabs.page.scss'],
standalone: false,
})
export class TabsPage {
constructor() {}
}
================================================
FILE: angular-standalone/base/.browserslistrc
================================================
# This file is used by the build system to adjust CSS and JS output to support the specified browsers below.
# For additional information regarding the format and rule options, please see:
# https://github.com/browserslist/browserslist#queries
# For the full list of supported browsers by the Angular framework, please see:
# https://angular.dev/reference/versions#browser-support
# You can see what browsers were selected by your queries by running:
# npx browserslist
Chrome >=107
Firefox >=106
Edge >=107
Safari >=16.1
iOS >=16.1
================================================
FILE: angular-standalone/base/.editorconfig
================================================
# Editor configuration, see https://editorconfig.org
root = true
[*]
charset = utf-8
indent_style = space
indent_size = 2
insert_final_newline = true
trim_trailing_whitespace = true
[*.ts]
quote_type = single
[*.md]
max_line_length = off
trim_trailing_whitespace = false
================================================
FILE: angular-standalone/base/.eslintrc.json
================================================
{
"root": true,
"ignorePatterns": ["projects/**/*"],
"overrides": [
{
"files": ["*.ts"],
"parserOptions": {
"project": ["tsconfig.json"],
"createDefaultProgram": true
},
"extends": [
"plugin:@angular-eslint/recommended",
"plugin:@angular-eslint/template/process-inline-templates"
],
"rules": {
"@angular-eslint/component-class-suffix": [
"error",
{
"suffixes": ["Page", "Component"]
}
],
"@angular-eslint/component-selector": [
"error",
{
"type": "element",
"prefix": "app",
"style": "kebab-case"
}
],
"@angular-eslint/directive-selector": [
"error",
{
"type": "attribute",
"prefix": "app",
"style": "camelCase"
}
]
}
},
{
"files": ["*.html"],
"extends": ["plugin:@angular-eslint/template/recommended"],
"rules": {}
}
]
}
================================================
FILE: angular-standalone/base/.gitignore
================================================
# Specifies intentionally untracked files to ignore when using Git
# http://git-scm.com/docs/gitignore
*~
*.sw[mnpcod]
.tmp
*.tmp
*.tmp.*
UserInterfaceState.xcuserstate
$RECYCLE.BIN/
*.log
log.txt
/.sourcemaps
/.versions
/coverage
# Ionic
/.ionic
/www
/platforms
/plugins
# Compiled output
/dist
/tmp
/out-tsc
/bazel-out
# Node
/node_modules
npm-debug.log
yarn-error.log
# IDEs and editors
.idea/
.project
.classpath
.c9/
*.launch
.settings/
*.sublime-project
*.sublime-workspace
# Visual Studio Code
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
.history/*
# Miscellaneous
/.angular
/.angular/cache
.sass-cache/
/.nx
/.nx/cache
/connect.lock
/coverage
/libpeerconnection.log
testem.log
/typings
# System files
.DS_Store
Thumbs.db
================================================
FILE: angular-standalone/base/.vscode/extensions.json
================================================
{
"recommendations": [
"Webnative.webnative"
]
}
================================================
FILE: angular-standalone/base/.vscode/settings.json
================================================
{
"typescript.preferences.autoImportFileExcludePatterns": ["@ionic/angular/common", "@ionic/angular"]
}
================================================
FILE: angular-standalone/base/angular.json
================================================
{
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
"version": 1,
"newProjectRoot": "projects",
"projects": {
"app": {
"projectType": "application",
"schematics": {
"@ionic/angular-toolkit:page": {
"styleext": "scss",
"standalone": true
}
},
"root": "",
"sourceRoot": "src",
"prefix": "app",
"architect": {
"build": {
"builder": "@angular-devkit/build-angular:application",
"options": {
"outputPath": {
"base": "www",
"browser": ""
},
"index": "src/index.html",
"polyfills": [
"src/polyfills.ts"
],
"tsConfig": "tsconfig.app.json",
"inlineStyleLanguage": "scss",
"assets": [
{
"glob": "**/*",
"input": "src/assets",
"output": "assets"
}
],
"styles": ["src/global.scss", "src/theme/variables.scss"],
"scripts": [],
"browser": "src/main.ts"
},
"configurations": {
"production": {
"budgets": [
{
"type": "initial",
"maximumWarning": "2mb",
"maximumError": "5mb"
},
{
"type": "anyComponentStyle",
"maximumWarning": "2kb",
"maximumError": "4kb"
}
],
"fileReplacements": [
{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.prod.ts"
}
],
"outputHashing": "all"
},
"development": {
"optimization": false,
"extractLicenses": false,
"sourceMap": true,
"namedChunks": true
},
"ci": {
"progress": false
}
},
"defaultConfiguration": "production"
},
"serve": {
"builder": "@angular-devkit/build-angular:dev-server",
"configurations": {
"production": {
"buildTarget": "app:build:production"
},
"development": {
"buildTarget": "app:build:development"
},
"ci": {
"progress": false
}
},
"defaultConfiguration": "development"
},
"extract-i18n": {
"builder": "@angular-devkit/build-angular:extract-i18n",
"options": {
"buildTarget": "app:build"
}
},
"test": {
"builder": "@angular-devkit/build-angular:karma",
"options": {
"main": "src/test.ts",
"polyfills": "src/polyfills.ts",
"tsConfig": "tsconfig.spec.json",
"karmaConfig": "karma.conf.js",
"inlineStyleLanguage": "scss",
"assets": [
{
"glob": "**/*",
"input": "src/assets",
"output": "assets"
}
],
"styles": ["src/global.scss", "src/theme/variables.scss"],
"scripts": []
},
"configurations": {
"ci": {
"progress": false,
"watch": false
}
}
},
"lint": {
"builder": "@angular-eslint/builder:lint",
"options": {
"lintFilePatterns": ["src/**/*.ts", "src/**/*.html"]
}
}
}
}
},
"cli": {
"schematicCollections": ["@ionic/angular-toolkit"]
},
"schematics": {
"@ionic/angular-toolkit:component": {
"styleext": "scss"
},
"@ionic/angular-toolkit:page": {
"styleext": "scss"
},
"@angular-eslint/schematics:application": {
"setParserOptionsProject": true
},
"@angular-eslint/schematics:library": {
"setParserOptionsProject": true
}
}
}
================================================
FILE: angular-standalone/base/ionic.config.json
================================================
{
"name": "ionic-app-base",
"app_id": "",
"type": "angular-standalone",
"integrations": {}
}
================================================
FILE: angular-standalone/base/karma.conf.js
================================================
// Karma configuration file, see link for more information
// https://karma-runner.github.io/1.0/config/configuration-file.html
module.exports = function (config) {
config.set({
basePath: '',
frameworks: ['jasmine', '@angular-devkit/build-angular'],
plugins: [
require('karma-jasmine'),
require('karma-chrome-launcher'),
require('karma-jasmine-html-reporter'),
require('karma-coverage'),
require('@angular-devkit/build-angular/plugins/karma')
],
client: {
jasmine: {
// you can add configuration options for Jasmine here
// the possible options are listed at https://jasmine.github.io/api/edge/Configuration.html
// for example, you can disable the random execution with `random: false`
// or set a specific seed with `seed: 4321`
},
clearContext: false // leave Jasmine Spec Runner output visible in browser
},
jasmineHtmlReporter: {
suppressAll: true // removes the duplicated traces
},
coverageReporter: {
dir: require('path').join(__dirname, './coverage/app'),
subdir: '.',
reporters: [
{ type: 'html' },
{ type: 'text-summary' }
]
},
reporters: ['progress', 'kjhtml'],
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
autoWatch: true,
browsers: ['Chrome'],
singleRun: false,
restartOnFileChange: true
});
};
================================================
FILE: angular-standalone/base/package.json
================================================
{
"name": "ionic-app-base",
"version": "0.0.0",
"author": "Ionic Framework",
"homepage": "https://ionicframework.com/",
"scripts": {
"ng": "ng",
"start": "ng serve",
"build": "ng build",
"watch": "ng build --watch --configuration development",
"test": "ng test",
"lint": "ng lint"
},
"private": true,
"dependencies": {
"@angular/animations": "^20.0.0",
"@angular/common": "^20.0.0",
"@angular/compiler": "^20.0.0",
"@angular/core": "^20.0.0",
"@angular/forms": "^20.0.0",
"@angular/platform-browser": "^20.0.0",
"@angular/platform-browser-dynamic": "^20.0.0",
"@angular/router": "^20.0.0",
"@ionic/angular": "^8.0.0",
"ionicons": "^7.0.0",
"rxjs": "~7.8.0",
"tslib": "^2.3.0",
"zone.js": "~0.15.0"
},
"devDependencies": {
"@angular-devkit/build-angular": "^20.0.0",
"@angular-eslint/builder": "^20.0.0",
"@angular-eslint/eslint-plugin": "^20.0.0",
"@angular-eslint/eslint-plugin-template": "^20.0.0",
"@angular-eslint/schematics": "^20.0.0",
"@angular-eslint/template-parser": "^20.0.0",
"@angular/cli": "^20.0.0",
"@angular/compiler-cli": "^20.0.0",
"@angular/language-service": "^20.0.0",
"@ionic/angular-toolkit": "^12.0.0",
"@types/jasmine": "~5.1.0",
"@typescript-eslint/eslint-plugin": "^8.18.0",
"@typescript-eslint/parser": "^8.18.0",
"eslint": "^9.16.0",
"eslint-plugin-import": "^2.29.1",
"eslint-plugin-jsdoc": "^48.2.1",
"eslint-plugin-prefer-arrow": "1.2.2",
"jasmine-core": "~5.1.0",
"jasmine-spec-reporter": "~5.0.0",
"karma": "~6.4.0",
"karma-chrome-launcher": "~3.2.0",
"karma-coverage": "~2.2.0",
"karma-jasmine": "~5.1.0",
"karma-jasmine-html-reporter": "~2.1.0",
"typescript": "~5.9.0"
}
}
================================================
FILE: angular-standalone/base/src/app/app.component.html
================================================
<ion-app>
</ion-app>
================================================
FILE: angular-standalone/base/src/app/app.component.scss
================================================
================================================
FILE: angular-standalone/base/src/app/app.component.spec.ts
================================================
import { TestBed } from '@angular/core/testing';
import { provideRouter } from '@angular/router';
import { AppComponent } from './app.component';
describe('AppComponent', () => {
it('should create the app', async () => {
await TestBed.configureTestingModule({
imports: [AppComponent],
providers: [provideRouter([])]
}).compileComponents();
const fixture = TestBed.createComponent(AppComponent);
const app = fixture.componentInstance;
expect(app).toBeTruthy();
});
});
================================================
FILE: angular-standalone/base/src/app/app.component.ts
================================================
import { Component } from '@angular/core';
import { IonApp } from '@ionic/angular/standalone';
@Component({
selector: 'app-root',
templateUrl: 'app.component.html',
styleUrls: ['app.component.scss'],
imports: [IonApp],
})
export class AppComponent {
constructor() {}
}
================================================
FILE: angular-standalone/base/src/environments/environment.prod.ts
================================================
export const environment = {
production: true
};
================================================
FILE: angular-standalone/base/src/environments/environment.ts
================================================
// This file can be replaced during build by using the `fileReplacements` array.
// `ng build` replaces `environment.ts` with `environment.prod.ts`.
// The list of file replacements can be found in `angular.json`.
export const environment = {
production: false
};
/*
* For easier debugging in development mode, you can import the following file
* to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.
*
* This import should be commented out in production mode because it will have a negative impact
* on performance if an error is thrown.
*/
// import 'zone.js/plugins/zone-error'; // Included with Angular CLI.
================================================
FILE: angular-standalone/base/src/global.scss
================================================
/*
* App Global CSS
* ----------------------------------------------------------------------------
* Put style rules here that you want to apply globally. These styles are for
* the entire app and not just one component. Additionally, this file can be
* used as an entry point to import other CSS/Sass files to be included in the
* output CSS.
* For more information on global stylesheets, visit the documentation:
* https://ionicframework.com/docs/layout/global-stylesheets
*/
/* Core CSS required for Ionic components to work properly */
@import "@ionic/angular/css/core.css";
/* Basic CSS for apps built with Ionic */
@import "@ionic/angular/css/normalize.css";
@import "@ionic/angular/css/structure.css";
@import "@ionic/angular/css/typography.css";
@import "@ionic/angular/css/display.css";
/* Optional CSS utils that can be commented out */
@import "@ionic/angular/css/padding.css";
@import "@ionic/angular/css/float-elements.css";
@import "@ionic/angular/css/text-alignment.css";
@import "@ionic/angular/css/text-transformation.css";
@import "@ionic/angular/css/flex-utils.css";
/**
* Ionic Dark Mode
* -----------------------------------------------------
* For more info, please see:
* https://ionicframework.com/docs/theming/dark-mode
*/
/* @import "@ionic/angular/css/palettes/dark.always.css"; */
/* @import "@ionic/angular/css/palettes/dark.class.css"; */
@import '@ionic/angular/css/palettes/dark.system.css';
================================================
FILE: angular-standalone/base/src/index.html
================================================
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Ionic App</title>
<base href="/" />
<meta name="color-scheme" content="light dark" />
<meta name="viewport" content="viewport-fit=cover, width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<meta name="format-detection" content="telephone=no" />
<meta name="msapplication-tap-highlight" content="no" />
<link rel="icon" type="image/png" href="assets/icon/favicon.png" />
<!-- add to homescreen for ios -->
<meta name="mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black" />
</head>
<body>
<app-root></app-root>
</body>
</html>
================================================
FILE: angular-standalone/base/src/main.ts
================================================
import { bootstrapApplication } from '@angular/platform-browser';
import { RouteReuseStrategy, provideRouter, withPreloading, PreloadAllModules } from '@angular/router';
import { IonicRouteStrategy, provideIonicAngular } from '@ionic/angular/standalone';
import { routes } from './app/app.routes';
import { AppComponent } from './app/app.component';
bootstrapApplication(AppComponent, {
providers: [
{ provide: RouteReuseStrategy, useClass: IonicRouteStrategy },
provideIonicAngular(),
provideRouter(routes, withPreloading(PreloadAllModules)),
],
});
================================================
FILE: angular-standalone/base/src/polyfills.ts
================================================
/**
* This file includes polyfills needed by Angular and is loaded before the app.
* You can add your own extra polyfills to this file.
*
* This file is divided into 2 sections:
* 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers.
* 2. Application imports. Files imported after ZoneJS that should be loaded before your main
* file.
*
* The current setup is for so-called "evergreen" browsers; the last versions of browsers that
* automatically update themselves. This includes recent versions of Safari, Chrome (including
* Opera), Edge on the desktop, and iOS and Chrome on mobile.
*
* Learn more in https://angular.io/guide/browser-support
*/
/***************************************************************************************************
* BROWSER POLYFILLS
*/
/**
* By default, zone.js will patch all possible macroTask and DomEvents
* user can disable parts of macroTask/DomEvents patch by setting following flags
* because those flags need to be set before `zone.js` being loaded, and webpack
* will put import in the top of bundle, so user need to create a separate file
* in this directory (for example: zone-flags.ts), and put the following flags
* into that file, and then add the following code before importing zone.js.
* import './zone-flags';
*
* The flags allowed in zone-flags.ts are listed here.
*
* The following flags will work for all browsers.
*
* (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame
* (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick
* (window as any).__zone_symbol__UNPATCHED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames
*
* in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js
* with the following flag, it will bypass `zone.js` patch for IE/Edge
*
* (window as any).__Zone_enable_cross_context_check = true;
*
*/
import './zone-flags';
/***************************************************************************************************
* Zone JS is required by default for Angular itself.
*/
import 'zone.js'; // Included with Angular CLI.
/***************************************************************************************************
* APPLICATION IMPORTS
*/
================================================
FILE: angular-standalone/base/src/test.ts
================================================
// This file is required by karma.conf.js and loads recursively all the .spec and framework files
import 'zone.js/testing';
import { getTestBed } from '@angular/core/testing';
import {
BrowserDynamicTestingModule,
platformBrowserDynamicTesting
} from '@angular/platform-browser-dynamic/testing';
// First, initialize the Angular testing environment.
getTestBed().initTestEnvironment(
BrowserDynamicTestingModule,
platformBrowserDynamicTesting(),
);
================================================
FILE: angular-standalone/base/src/theme/variables.scss
================================================
// For information on how to create your own theme, please refer to:
// https://ionicframework.com/docs/theming/
================================================
FILE: angular-standalone/base/src/zone-flags.ts
================================================
/**
* Prevents Angular change detection from
* running with certain Web Component callbacks
*/
// eslint-disable-next-line no-underscore-dangle
(window as any).__Zone_disable_customElements = true;
================================================
FILE: angular-standalone/base/tsconfig.app.json
================================================
/* To learn more about this file see: https://angular.io/config/tsconfig. */
{
"extends": "./tsconfig.json",
"compilerOptions": {
"outDir": "./out-tsc/app",
"types": []
},
"files": [
"src/main.ts",
"src/polyfills.ts"
],
"include": [
"src/**/*.d.ts"
]
}
================================================
FILE: angular-standalone/base/tsconfig.json
================================================
/* To learn more about this file see: https://angular.io/config/tsconfig. */
{
"compileOnSave": false,
"compilerOptions": {
"baseUrl": "./",
"outDir": "./dist/out-tsc",
"forceConsistentCasingInFileNames": true,
"esModuleInterop": true,
"strict": true,
"noImplicitOverride": true,
"noPropertyAccessFromIndexSignature": true,
"noImplicitReturns": true,
"noFallthroughCasesInSwitch": true,
"sourceMap": true,
"declaration": false,
"experimentalDecorators": true,
"moduleResolution": "node",
"importHelpers": true,
"target": "es2022",
"module": "es2020",
"lib": ["es2018", "dom"],
"skipLibCheck": true,
"useDefineForClassFields": false
},
"angularCompilerOptions": {
"enableI18nLegacyMessageIdFormat": false,
"strictInjectionParameters": true,
"strictInputAccessModifiers": true,
"strictTemplates": true
}
}
================================================
FILE: angular-standalone/base/tsconfig.spec.json
================================================
/* To learn more about this file see: https://angular.io/config/tsconfig. */
{
"extends": "./tsconfig.json",
"compilerOptions": {
"outDir": "./out-tsc/spec",
"types": [
"jasmine"
]
},
"files": [
"src/test.ts",
"src/polyfills.ts"
],
"include": [
"src/**/*.spec.ts",
"src/**/*.d.ts"
]
}
================================================
FILE: angular-standalone/community/.gitkeep
================================================
================================================
FILE: angular-standalone/official/blank/ionic.starter.json
================================================
{
"name": "Blank Starter",
"baseref": "main",
"tarignore": [
"node_modules",
"package-lock.json",
"www"
],
"scripts": {
"test": "npm run lint && npm run build && npm run test -- --configuration=ci --browsers=ChromeHeadless"
}
}
================================================
FILE: angular-standalone/official/blank/src/app/app.component.html
================================================
<ion-app>
<ion-router-outlet></ion-router-outlet>
</ion-app>
================================================
FILE: angular-standalone/official/blank/src/app/app.component.ts
================================================
import { Component } from '@angular/core';
import { IonApp, IonRouterOutlet } from '@ionic/angular/standalone';
@Component({
selector: 'app-root',
templateUrl: 'app.component.html',
imports: [IonApp, IonRouterOutlet],
})
export class AppComponent {
constructor() {}
}
================================================
FILE: angular-standalone/official/blank/src/app/app.routes.ts
================================================
import { Routes } from '@angular/router';
export const routes: Routes = [
{
path: 'home',
loadComponent: () => import('./home/home.page').then((m) => m.HomePage),
},
{
path: '',
redirectTo: 'home',
pathMatch: 'full',
},
];
================================================
FILE: angular-standalone/official/blank/src/app/home/home.page.html
================================================
<ion-header [translucent]="true">
<ion-toolbar>
<ion-title>
Blank
</ion-title>
</ion-toolbar>
</ion-header>
<ion-content [fullscreen]="true">
<ion-header collapse="condense">
<ion-toolbar>
<ion-title size="large">Blank</ion-title>
</ion-toolbar>
</ion-header>
<div id="container">
<strong>Ready to create an app?</strong>
<p>Start with Ionic <a target="_blank" rel="noopener noreferrer" href="https://ionicframework.com/docs/components">UI Components</a></p>
</div>
</ion-content>
================================================
FILE: angular-standalone/official/blank/src/app/home/home.page.scss
================================================
#container {
text-align: center;
position: absolute;
left: 0;
right: 0;
top: 50%;
transform: translateY(-50%);
}
#container strong {
font-size: 20px;
line-height: 26px;
}
#container p {
font-size: 16px;
line-height: 22px;
color: #8c8c8c;
margin: 0;
}
#container a {
text-decoration: none;
}
================================================
FILE: angular-standalone/official/blank/src/app/home/home.page.spec.ts
================================================
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { HomePage } from './home.page';
describe('HomePage', () => {
let component: HomePage;
let fixture: ComponentFixture<HomePage>;
beforeEach(async () => {
fixture = TestBed.createComponent(HomePage);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
================================================
FILE: angular-standalone/official/blank/src/app/home/home.page.ts
================================================
import { Component } from '@angular/core';
import { IonHeader, IonToolbar, IonTitle, IonContent } from '@ionic/angular/standalone';
@Component({
selector: 'app-home',
templateUrl: 'home.page.html',
styleUrls: ['home.page.scss'],
imports: [IonHeader, IonToolbar, IonTitle, IonContent],
})
export class HomePage {
constructor() {}
}
================================================
FILE: angular-standalone/official/list/ionic.config.json
================================================
{
"name": "list",
"integrations": {},
"type": "angular"
}
================================================
FILE: angular-standalone/official/list/ionic.starter.json
================================================
{
"name": "List Starter",
"baseref": "main",
"tarignore": [
"node_modules",
"package-lock.json",
"www"
],
"scripts": {
"test": "npm run lint && npm run build && npm run test -- --configuration=ci --browsers=ChromeHeadless"
}
}
================================================
FILE: angular-standalone/official/list/src/app/app.component.html
================================================
<ion-app>
<ion-router-outlet></ion-router-outlet>
</ion-app>
================================================
FILE: angular-standalone/official/list/src/app/app.component.spec.ts
================================================
import { TestBed } from '@angular/core/testing';
import { provideRouter } from '@angular/router';
import { AppComponent } from './app.component';
describe('AppComponent', () => {
beforeEach(async () => {
await TestBed.configureTestingModule({
imports: [AppComponent],
providers: [provideRouter([])]
}).compileComponents();
});
it('should create the app', () => {
const fixture = TestBed.createComponent(AppComponent);
const app = fixture.componentInstance;
expect(app).toBeTruthy();
});
});
================================================
FILE: angular-standalone/official/list/src/app/app.component.ts
================================================
import { Component } from '@angular/core';
import { IonApp, IonRouterOutlet } from '@ionic/angular/standalone';
@Component({
selector: 'app-root',
templateUrl: 'app.component.html',
imports: [IonApp, IonRouterOutlet],
})
export class AppComponent {
constructor() {}
}
================================================
FILE: angular-standalone/official/list/src/app/app.routes.ts
================================================
import { Routes } from '@angular/router';
export const routes: Routes = [
{
path: 'home',
loadComponent: () => import('./home/home.page').then((m) => m.HomePage),
},
{
path: 'message/:id',
loadComponent: () =>
import('./view-message/view-message.page').then((m) => m.ViewMessagePage),
},
{
path: '',
redirectTo: 'home',
pathMatch: 'full',
},
];
================================================
FILE: angular-standalone/official/list/src/app/home/home.page.html
================================================
<ion-header [translucent]="true">
<ion-toolbar>
<ion-title>
Inbox
</ion-title>
</ion-toolbar>
</ion-header>
<ion-content [fullscreen]="true">
<ion-refresher slot="fixed" (ionRefresh)="refresh($event)">
<ion-refresher-content></ion-refresher-content>
</ion-refresher>
<ion-header collapse="condense">
<ion-toolbar>
<ion-title size="large">
Inbox
</ion-title>
</ion-toolbar>
</ion-header>
<ion-list>
@for (message of getMessages(); track message) {
<app-message [message]="message"></app-message>
}
</ion-list>
</ion-content>
================================================
FILE: angular-standalone/official/list/src/app/home/home.page.scss
================================================
================================================
FILE: angular-standalone/official/list/src/app/home/home.page.spec.ts
================================================
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { provideRouter } from '@angular/router';
import { HomePage } from './home.page';
describe('HomePage', () => {
let component: HomePage;
let fixture: ComponentFixture<HomePage>;
beforeEach(async () => {
await TestBed.configureTestingModule({
imports: [HomePage],
providers: [provideRouter([])],
}).compileComponents();
fixture = TestBed.createComponent(HomePage);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
================================================
FILE: angular-standalone/official/list/src/app/home/home.page.ts
================================================
import { Component, inject } from '@angular/core';
import { RefresherCustomEvent, IonHeader, IonToolbar, IonTitle, IonContent, IonRefresher, IonRefresherContent, IonList } from '@ionic/angular/standalone';
import { MessageComponent } from '../message/message.component';
import { DataService, Message } from '../services/data.service';
@Component({
selector: 'app-home',
templateUrl: 'home.page.html',
styleUrls: ['home.page.scss'],
imports: [IonHeader, IonToolbar, IonTitle, IonContent, IonRefresher, IonRefresherContent, IonList, MessageComponent],
})
export class HomePage {
private data = inject(DataService);
constructor() {}
refresh(ev: any) {
setTimeout(() => {
(ev as RefresherCustomEvent).detail.complete();
}, 3000);
}
getMessages(): Message[] {
return this.data.getMessages();
}
}
================================================
FILE: angular-standalone/official/list/src/app/message/message.component.html
================================================
@if (message) {
<ion-item
[routerLink]="'/message/' + message.id"
[detail]="false"
>
<div slot="start" [class]="!message.read ? 'dot dot-unread' : 'dot'"></div>
<ion-label class="ion-text-wrap">
<h2>
{{ message.fromName }}
<span class="date">
<ion-note>{{ message.date }}</ion-note>
@if (isIos()) {
<ion-icon
aria-hidden="true"
name="chevron-forward"
size="small"
></ion-icon>
}
</span>
</h2>
<h3>{{ message.subject }}</h3>
<p>
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
commodo consequat. Duis aute irure dolor in reprehenderit in voluptate
velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat
cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id
est laborum.
</p>
</ion-label>
</ion-item>
}
================================================
FILE: angular-standalone/official/list/src/app/message/message.component.scss
================================================
ion-item {
--padding-start: 0;
--inner-padding-end: 0;
}
ion-label {
margin-top: 12px;
margin-bottom: 12px;
}
ion-item h2 {
font-weight: 600;
margin: 0;
/**
* With larger font scales
* the date/time should wrap to the next
* line. However, there should be
* space between the name and the date/time
* if they can appear on the same line.
*/
display: flex;
flex-wrap: wrap;
justify-content: space-between;
}
ion-item p {
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
width: 95%;
}
ion-item .date {
align-items: center;
display: flex;
}
ion-item ion-icon {
color: #c9c9ca;
}
ion-item ion-note {
font-size: 0.9375rem;
margin-right: 8px;
font-weight: normal;
}
ion-item ion-note.md {
margin-right: 14px;
}
.dot {
display: block;
height: 12px;
width: 12px;
border-radius: 50%;
align-self: start;
margin: 16px 10px 16px 16px;
}
.dot-unread {
background: var(--ion-color-primary);
}
ion-footer ion-title {
font-size: 11px;
font-weight: normal;
}
================================================
FILE: angular-standalone/official/list/src/app/message/message.component.spec.ts
================================================
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { provideRouter } from '@angular/router';
import { ViewMessagePage } from '../view-message/view-message.page';
import { MessageComponent } from './message.component';
describe('MessageComponent', () => {
let component: MessageComponent;
let fixture: ComponentFixture<MessageComponent>;
beforeEach(async () => {
await TestBed.configureTestingModule({
imports: [MessageComponent, ViewMessagePage],
providers: [provideRouter([])]
}).compileComponents();
fixture = TestBed.createComponent(MessageComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
================================================
FILE: angular-standalone/official/list/src/app/message/message.component.ts
================================================
import { ChangeDetectionStrategy, Component, inject, Input } from '@angular/core';
import { RouterLink } from '@angular/router';
import { Platform, IonItem, IonLabel, IonNote, IonIcon } from '@ionic/angular/standalone';
import { addIcons } from 'ionicons';
import { chevronForward } from 'ionicons/icons';
import { Message } from '../services/data.service';
@Component({
selector: 'app-message',
templateUrl: './message.component.html',
styleUrls: ['./message.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush,
imports: [RouterLink, IonItem, IonLabel, IonNote, IonIcon],
})
export class MessageComponent {
private platform = inject(Platform);
@Input() message?: Message;
isIos() {
return this.platform.is('ios')
}
constructor() {
addIcons({ chevronForward });
}
}
================================================
FILE: angular-standalone/official/list/src/app/services/data.service.spec.ts
================================================
import { TestBed } from '@angular/core/testing';
import { DataService } from './data.service';
describe('DataService', () => {
beforeEach(() => TestBed.configureTestingModule({}));
it('should be created', () => {
const service: DataService = TestBed.inject(DataService);
expect(service).toBeTruthy();
});
});
================================================
FILE: angular-standalone/official/list/src/app/services/data.service.ts
================================================
import { Injectable } from '@angular/core';
export interface Message {
fromName: string;
subject: string;
date: string;
id: number;
read: boolean;
}
@Injectable({
providedIn: 'root'
})
export class DataService {
public messages: Message[] = [
{
fromName: 'Matt Chorsey',
subject: 'New event: Trip to Vegas',
date: '9:32 AM',
id: 0,
read: false
},
{
fromName: 'Lauren Ruthford',
subject: 'Long time no chat',
date: '6:12 AM',
id: 1,
read: false
},
{
fromName: 'Jordan Firth',
subject: 'Report Results',
date: '4:55 AM',
id: 2,
read: false
},
{
fromName: 'Bill Thomas',
subject: 'The situation',
date: 'Yesterday',
id: 3,
read: false
},
{
fromName: 'Joanne Pollan',
subject: 'Updated invitation: Swim lessons',
date: 'Yesterday',
id: 4,
read: false
},
{
fromName: 'Andrea Cornerston',
subject: 'Last minute ask',
date: 'Yesterday',
id: 5,
read: false
},
{
fromName: 'Moe Chamont',
subject: 'Family Calendar - Version 1',
date: 'Last Week',
id: 6,
read: false
},
{
fromName: 'Kelly Richardson',
subject: 'Placeholder Headhots',
date: 'Last Week',
id: 7,
read: false
}
];
constructor() { }
public getMessages(): Message[] {
return this.messages;
}
public getMessageById(id: number): Message {
return this.messages[id];
}
}
================================================
FILE: angular-standalone/official/list/src/app/view-message/view-message.page.html
================================================
<ion-header [translucent]="true">
<ion-toolbar>
<ion-buttons slot="start">
<ion-back-button
[text]="getBackButtonText()"
defaultHref="/"
></ion-back-button>
</ion-buttons>
</ion-toolbar>
</ion-header>
@if (message) {
<ion-content [fullscreen]="true">
<ion-item>
<ion-icon
aria-hidden="true"
name="person-circle"
color="primary"
></ion-icon>
<ion-label class="ion-text-wrap">
<h2>
{{ message.fromName }}
<span class="date">
<ion-note>{{ message.date }}</ion-note>
</span>
</h2>
<h3>To: <ion-note>Me</ion-note></h3>
</ion-label>
</ion-item>
<div class="ion-padding">
<h1>{{ message.subject }}</h1>
<p>
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
commodo consequat. Duis aute irure dolor in reprehenderit in voluptate
velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat
cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id
est laborum.
</p>
</div>
</ion-content>
}
================================================
FILE: angular-standalone/official/list/src/app/view-message/view-message.page.scss
================================================
ion-item {
--inner-padding-end: 0;
--background: transparent;
}
ion-label {
margin-top: 12px;
margin-bottom: 12px;
}
ion-item h2 {
font-weight: 600;
/**
* With larger font scales
* the date/time should wrap to the next
* line. However, there should be
* space between the name and the date/time
* if they can appear on the same line.
*/
display: flex;
flex-wrap: wrap;
justify-content: space-between;
}
ion-item .date {
align-items: center;
display: flex;
}
ion-item ion-icon {
font-size: 42px;
margin-right: 8px;
}
ion-item ion-note {
font-size: 0.9375rem;
margin-right: 12px;
font-weight: normal;
}
h1 {
margin: 0;
font-weight: bold;
font-size: 1.4rem;
}
p {
line-height: 1.4;
}
================================================
FILE: angular-standalone/official/list/src/app/view-message/view-message.page.spec.ts
================================================
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { provideRouter } from '@angular/router';
import { ViewMessagePage } from './view-message.page';
describe('ViewMessagePage', () => {
let component: ViewMessagePage;
let fixture: ComponentFixture<ViewMessagePage>;
beforeEach(async () => {
TestBed.configureTestingModule({
imports: [ViewMessagePage],
providers: [provideRouter([])],
}).compileComponents();
fixture = TestBed.createComponent(ViewMessagePage);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
================================================
FILE: angular-standalone/official/list/src/app/view-message/view-message.page.ts
================================================
import { Component, inject, OnInit } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { Platform, IonHeader, IonToolbar, IonButtons, IonBackButton, IonContent, IonItem, IonIcon, IonLabel, IonNote } from '@ionic/angular/standalone';
import { addIcons } from 'ionicons';
import { personCircle } from 'ionicons/icons';
import { DataService, Message } from '../services/data.service';
@Component({
selector: 'app-view-message',
templateUrl: './view-message.page.html',
styleUrls: ['./view-message.page.scss'],
imports: [IonHeader, IonToolbar, IonButtons, IonBackButton, IonContent, IonItem, IonIcon, IonLabel, IonNote],
})
export class ViewMessagePage implements OnInit {
public message!: Message;
private data = inject(DataService);
private activatedRoute = inject(ActivatedRoute);
private platform = inject(Platform);
constructor() {
addIcons({ personCircle });
}
ngOnInit() {
const id = this.activatedRoute.snapshot.paramMap.get('id') as string;
this.message = this.data.getMessageById(parseInt(id, 10));
}
getBackButtonText() {
const isIos = this.platform.is('ios')
return isIos ? 'Inbox' : '';
}
}
================================================
FILE: angular-standalone/official/sidemenu/ionic.starter.json
================================================
{
"name": "Sidemenu Starter",
"baseref": "main",
"tarignore": [
"node_modules",
"package-lock.json",
"www"
],
"scripts": {
"test": "npm run lint && npm run build && npm run test -- --configuration=ci --browsers=ChromeHeadless"
}
}
================================================
FILE: angular-standalone/official/sidemenu/src/app/app.component.html
================================================
<ion-app>
<ion-split-pane contentId="main-content">
<ion-menu contentId="main-content" type="overlay">
<ion-content>
<ion-list id="inbox-list">
<ion-list-header>Inbox</ion-list-header>
<ion-note>hi@ionicframework.com</ion-note>
@for (p of appPages; track p; let i = $index) {
<ion-menu-toggle auto-hide="false">
<ion-item routerDirection="root" [routerLink]="[p.url]" lines="none" detail="false" routerLinkActive="selected">
<ion-icon aria-hidden="true" slot="start" [ios]="p.icon + '-outline'" [md]="p.icon + '-sharp'"></ion-icon>
<ion-label>{{ p.title }}</ion-label>
</ion-item>
</ion-menu-toggle>
}
</ion-list>
<ion-list id="labels-list">
<ion-list-header>Labels</ion-list-header>
@for (label of labels; track label) {
<ion-item lines="none">
<ion-icon aria-hidden="true" slot="start" ios="bookmark-outline" md="bookmark-sharp"></ion-icon>
<ion-label>{{ label }}</ion-label>
</ion-item>
}
</ion-list>
</ion-content>
</ion-menu>
<ion-router-outlet id="main-content"></ion-router-outlet>
</ion-split-pane>
</ion-app>
================================================
FILE: angular-standalone/official/sidemenu/src/app/app.component.scss
================================================
ion-menu ion-content {
--background: var(--ion-item-background, var(--ion-background-color, #fff));
}
ion-menu.md ion-content {
--padding-start: 8px;
--padding-end: 8px;
--padding-top: 20px;
--padding-bottom: 20px;
}
ion-menu.md ion-list {
padding: 20px 0;
}
ion-menu.md ion-note {
margin-bottom: 30px;
}
ion-menu.md ion-list-header,
ion-menu.md ion-note {
padding-left: 10px;
}
ion-menu.md ion-list#inbox-list {
border-bottom: 1px solid var(--ion-background-color-step-150, #d7d8da);
}
ion-menu.md ion-list#inbox-list ion-list-header {
font-size: 22px;
font-weight: 600;
min-height: 20px;
}
ion-menu.md ion-list#labels-list ion-list-header {
font-size: 16px;
margin-bottom: 18px;
color: #757575;
min-height: 26px;
}
ion-menu.md ion-item {
--padding-start: 10px;
--padding-end: 10px;
border-radius: 4px;
}
ion-menu.md ion-item.selected {
--background: rgba(var(--ion-color-primary-rgb), 0.14);
}
ion-menu.md ion-item.selected ion-icon {
color: var(--ion-color-primary);
}
ion-menu.md ion-item ion-icon {
color: #616e7e;
}
ion-menu.md ion-item ion-label {
font-weight: 500;
}
ion-menu.ios ion-content {
--padding-bottom: 20px;
}
ion-menu.ios ion-list {
padding: 20px 0 0 0;
}
ion-menu.ios ion-note {
line-height: 24px;
margin-bottom: 20px;
}
ion-menu.ios ion-item {
--padding-start: 16px;
--padding-end: 16px;
--min-height: 50px;
}
ion-menu.ios ion-item.selected ion-icon {
color: var(--ion-color-primary);
}
ion-menu.ios ion-item ion-icon {
font-size: 24px;
color: #73849a;
}
ion-menu.ios ion-list#labels-list ion-list-header {
margin-bottom: 8px;
}
ion-menu.ios ion-list-header,
ion-menu.ios ion-note {
padding-left: 16px;
padding-right: 16px;
}
ion-menu.ios ion-note {
margin-bottom: 8px;
}
ion-note {
display: inline-block;
font-size: 16px;
color: var(--ion-color-medium-shade);
}
ion-item.selected {
--color: var(--ion-color-primary);
}
================================================
FILE: angular-standalone/official/sidemenu/src/app/app.component.spec.ts
================================================
import { TestBed } from '@angular/core/testing';
import { provideRouter } from '@angular/router';
import { AppComponent } from './app.component';
describe('AppComponent', () => {
beforeEach(async () => {
await TestBed.configureTestingModule({
imports: [AppComponent],
providers: [provideRouter([])]
}).compileComponents();
});
it('should create the app', () => {
const fixture = TestBed.createComponent(AppComponent);
const app = fixture.componentInstance;
expect(app).toBeTruthy();
});
it('should have menu labels', () => {
const fixture = TestBed.createComponent(AppComponent);
fixture.detectChanges();
const app = fixture.nativeElement;
const menuItems = app.querySelectorAll('ion-label');
expect(menuItems.length).toEqual(12);
expect(menuItems[0].textContent).toContain('Inbox');
expect(menuItems[1].textContent).toContain('Outbox');
});
it('should have urls', () => {
const fixture = TestBed.createComponent(AppComponent);
fixture.detectChanges();
const app = fixture.nativeElement;
const menuItems = app.querySelectorAll('ion-item');
expect(menuItems.length).toEqual(12);
expect(menuItems[0].getAttribute('href')).toEqual(
'/folder/inbox'
);
expect(menuItems[1].getAttribute('href')).toEqual(
'/folder/outbox'
);
});
});
================================================
FILE: angular-standalone/official/sidemenu/src/app/app.component.ts
================================================
import { Component } from '@angular/core';
import { RouterLink, RouterLinkActive } from '@angular/router';
import { IonApp, IonSplitPane, IonMenu, IonContent, IonList, IonListHeader, IonNote, IonMenuToggle, IonItem, IonIcon, IonLabel, IonRouterOutlet, IonRouterLink } from '@ionic/angular/standalone';
import { addIcons } from 'ionicons';
import { mailOutline, mailSharp, paperPlaneOutline, paperPlaneSharp, heartOutline, heartSharp, archiveOutline, archiveSharp, trashOutline, trashSharp, warningOutline, warningSharp, bookmarkOutline, bookmarkSharp } from 'ionicons/icons';
@Component({
selector: 'app-root',
templateUrl: 'app.component.html',
styleUrls: ['app.component.scss'],
imports: [RouterLink, RouterLinkActive, IonApp, IonSplitPane, IonMenu, IonContent, IonList, IonListHeader, IonNote, IonMenuToggle, IonItem, IonIcon, IonLabel, IonRouterLink, IonRouterOutlet],
})
export class AppComponent {
public appPages = [
{ title: 'Inbox', url: '/folder/inbox', icon: 'mail' },
{ title: 'Outbox', url: '/folder/outbox', icon: 'paper-plane' },
{ title: 'Favorites', url: '/folder/favorites', icon: 'heart' },
{ title: 'Archived', url: '/folder/archived', icon: 'archive' },
{ title: 'Trash', url: '/folder/trash', icon: 'trash' },
{ title: 'Spam', url: '/folder/spam', icon: 'warning' },
];
public labels = ['Family', 'Friends', 'Notes', 'Work', 'Travel', 'Reminders'];
constructor() {
addIcons({ mailOutline, mailSharp, paperPlaneOutline, paperPlaneSharp, heartOutline, heartSharp, archiveOutline, archiveSharp, trashOutline, trashSharp, warningOutline, warningSharp, bookmarkOutline, bookmarkSharp });
}
}
================================================
FILE: angular-standalone/official/sidemenu/src/app/app.routes.ts
================================================
import { Routes } from '@angular/router';
export const routes: Routes = [
{
path: '',
redirectTo: 'folder/inbox',
pathMatch: 'full',
},
{
path: 'folder/:id',
loadComponent: () =>
import('./folder/folder.page').then((m) => m.FolderPage),
},
];
================================================
FILE: angular-standalone/official/sidemenu/src/app/folder/folder.page.html
================================================
<ion-header [translucent]="true">
<ion-toolbar>
<ion-buttons slot="start">
<ion-menu-button></ion-menu-button>
</ion-buttons>
<ion-title>{{ folder }}</ion-title>
</ion-toolbar>
</ion-header>
<ion-content [fullscreen]="true">
<ion-header collapse="condense">
<ion-toolbar>
<ion-title size="large">{{ folder }}</ion-title>
</ion-toolbar>
</ion-header>
<div id="container">
<strong class="capitalize">{{ folder }}</strong>
<p>Explore <a target="_blank" rel="noopener noreferrer" href="https://ionicframework.com/docs/components">UI Components</a></p>
</div>
</ion-content>
================================================
FILE: angular-standalone/official/sidemenu/src/app/folder/folder.page.scss
================================================
ion-menu-button {
color: var(--ion-color-primary);
}
#container {
text-align: center;
position: absolute;
left: 0;
right: 0;
top: 50%;
transform: translateY(-50%);
}
#container strong {
font-size: 20px;
line-height: 26px;
}
#container p {
font-size: 16px;
line-height: 22px;
color: #8c8c8c;
margin: 0;
}
#container a {
text-decoration: none;
}
================================================
FILE: angular-standalone/official/sidemenu/src/app/folder/folder.page.spec.ts
================================================
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { provideRouter } from '@angular/router';
import { FolderPage } from './folder.page';
describe('FolderPage', () => {
let component: FolderPage;
let fixture: ComponentFixture<FolderPage>;
beforeEach(async () => {
await TestBed.configureTestingModule({
imports: [FolderPage],
providers: [provideRouter([])]
}).compileComponents();
fixture = TestBed.createComponent(FolderPage);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
================================================
FILE: angular-standalone/official/sidemenu/src/app/folder/folder.page.ts
================================================
import { Component, inject, OnInit } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { IonHeader, IonToolbar, IonButtons, IonMenuButton, IonTitle, IonContent } from '@ionic/angular/standalone';
@Component({
selector: 'app-folder',
templateUrl: './folder.page.html',
styleUrls: ['./folder.page.scss'],
imports: [IonHeader, IonToolbar, IonButtons, IonMenuButton, IonTitle, IonContent],
})
export class FolderPage implements OnInit {
public folder!: string;
private activatedRoute = inject(ActivatedRoute);
constructor() {}
ngOnInit() {
this.folder = this.activatedRoute.snapshot.paramMap.get('id') as string;
}
}
================================================
FILE: angular-standalone/official/tabs/ionic.starter.json
================================================
{
"name": "Tabs Starter",
"baseref": "main",
"tarignore": [
"node_modules",
"package-lock.json",
"www"
],
"scripts": {
"test": "npm run lint && npm run build && npm run test -- --configuration=ci --browsers=ChromeHeadless"
}
}
================================================
FILE: angular-standalone/official/tabs/src/app/app.component.html
================================================
<ion-app>
<ion-router-outlet></ion-router-outlet>
</ion-app>
================================================
FILE: angular-standalone/official/tabs/src/app/app.component.ts
================================================
import { Component } from '@angular/core';
import { IonApp, IonRouterOutlet } from '@ionic/angular/standalone';
@Component({
selector: 'app-root',
templateUrl: 'app.component.html',
imports: [IonApp, IonRouterOutlet],
})
export class AppComponent {
constructor() {}
}
================================================
FILE: angular-standalone/official/tabs/src/app/app.routes.ts
================================================
import { Routes } from '@angular/router';
export const routes: Routes = [
{
path: '',
loadChildren: () => import('./tabs/tabs.routes').then((m) => m.routes),
},
];
================================================
FILE: angular-standalone/official/tabs/src/app/explore-container/explore-container.component.html
================================================
<div id="container">
<strong>{{ name }}</strong>
<p>
Explore
<a
target="_blank"
rel="noopener noreferrer"
href="https://ionicframework.com/docs/components"
>UI Components</a
>
</p>
</div>
================================================
FILE: angular-standalone/official/tabs/src/app/explore-container/explore-container.component.scss
================================================
#container {
text-align: center;
position: absolute;
left: 0;
right: 0;
top: 50%;
transform: translateY(-50%);
}
#container strong {
font-size: 20px;
line-height: 26px;
}
#container p {
font-size: 16px;
line-height: 22px;
color: #8c8c8c;
margin: 0;
}
#container a {
text-decoration: none;
}
================================================
FILE: angular-standalone/official/tabs/src/app/explore-container/explore-container.component.spec.ts
================================================
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { ExploreContainerComponent } from './explore-container.component';
describe('ExploreContainerComponent', () => {
let component: ExploreContainerComponent;
let fixture: ComponentFixture<ExploreContainerComponent>;
beforeEach(async () => {
fixture = TestBed.createComponent(ExploreContainerComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
================================================
FILE: angular-standalone/official/tabs/src/app/explore-container/explore-container.component.ts
================================================
import { Component, Input } from '@angular/core';
@Component({
selector: 'app-explore-container',
templateUrl: './explore-container.component.html',
styleUrls: ['./explore-container.component.scss'],
})
export class ExploreContainerComponent {
@Input() name?: string;
}
================================================
FILE: angular-standalone/official/tabs/src/app/tab1/tab1.page.html
================================================
<ion-header [translucent]="true">
<ion-toolbar>
<ion-title>
Tab 1
</ion-title>
</ion-toolbar>
</ion-header>
<ion-content [fullscreen]="true">
<ion-header collapse="condense">
<ion-toolbar>
<ion-title size="large">Tab 1</ion-title>
</ion-toolbar>
</ion-header>
<app-explore-container name="Tab 1 page"></app-explore-container>
</ion-content>
================================================
FILE: angular-standalone/official/tabs/src/app/tab1/tab1.page.scss
================================================
================================================
FILE: angular-standalone/official/tabs/src/app/tab1/tab1.page.spec.ts
================================================
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { Tab1Page } from './tab1.page';
describe('Tab1Page', () => {
let component: Tab1Page;
let fixture: ComponentFixture<Tab1Page>;
beforeEach(async () => {
fixture = TestBed.createComponent(Tab1Page);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
================================================
FILE: angular-standalone/official/tabs/src/app/tab1/tab1.page.ts
================================================
import { Component } from '@angular/core';
import { IonHeader, IonToolbar, IonTitle, IonContent } from '@ionic/angular/standalone';
import { ExploreContainerComponent } from '../explore-container/explore-container.component';
@Component({
selector: 'app-tab1',
templateUrl: 'tab1.page.html',
styleUrls: ['tab1.page.scss'],
imports: [IonHeader, IonToolbar, IonTitle, IonContent, ExploreContainerComponent],
})
export class Tab1Page {
constructor() {}
}
================================================
FILE: angular-standalone/official/tabs/src/app/tab2/tab2.page.html
================================================
<ion-header [translucent]="true">
<ion-toolbar>
<ion-title>
Tab 2
</ion-title>
</ion-toolbar>
</ion-header>
<ion-content [fullscreen]="true">
<ion-header collapse="condense">
<ion-toolbar>
<ion-title size="large">Tab 2</ion-title>
</ion-toolbar>
</ion-header>
<app-explore-container name="Tab 2 page"></app-explore-container>
</ion-content>
================================================
FILE: angular-standalone/official/tabs/src/app/tab2/tab2.page.scss
================================================
================================================
FILE: angular-standalone/official/tabs/src/app/tab2/tab2.page.spec.ts
================================================
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { Tab2Page } from './tab2.page';
describe('Tab2Page', () => {
let component: Tab2Page;
let fixture: ComponentFixture<Tab2Page>;
beforeEach(async () => {
fixture = TestBed.createComponent(Tab2Page);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
================================================
FILE: angular-standalone/official/tabs/src/app/tab2/tab2.page.ts
================================================
import { Component } from '@angular/core';
import { IonHeader, IonToolbar, IonTitle, IonContent } from '@ionic/angular/standalone';
import { ExploreContainerComponent } from '../explore-container/explore-container.component';
@Component({
selector: 'app-tab2',
templateUrl: 'tab2.page.html',
styleUrls: ['tab2.page.scss'],
imports: [IonHeader, IonToolbar, IonTitle, IonContent, ExploreContainerComponent]
})
export class Tab2Page {
constructor() {}
}
================================================
FILE: angular-standalone/official/tabs/src/app/tab3/tab3.page.html
================================================
<ion-header [translucent]="true">
<ion-toolbar>
<ion-title>
Tab 3
</ion-title>
</ion-toolbar>
</ion-header>
<ion-content [fullscreen]="true">
<ion-header collapse="condense">
<ion-toolbar>
<ion-title size="large">Tab 3</ion-title>
</ion-toolbar>
</ion-header>
<app-explore-container name="Tab 3 page"></app-explore-container>
</ion-content>
================================================
FILE: angular-standalone/official/tabs/src/app/tab3/tab3.page.scss
================================================
================================================
FILE: angular-standalone/official/tabs/src/app/tab3/tab3.page.spec.ts
================================================
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { Tab3Page } from './tab3.page';
describe('Tab3Page', () => {
let component: Tab3Page;
let fixture: ComponentFixture<Tab3Page>;
beforeEach(async () => {
fixture = TestBed.createComponent(Tab3Page);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
================================================
FILE: angular-standalone/official/tabs/src/app/tab3/tab3.page.ts
================================================
import { Component } from '@angular/core';
import { IonHeader, IonToolbar, IonTitle, IonContent } from '@ionic/angular/standalone';
import { ExploreContainerComponent } from '../explore-container/explore-container.component';
@Component({
selector: 'app-tab3',
templateUrl: 'tab3.page.html',
styleUrls: ['tab3.page.scss'],
imports: [IonHeader, IonToolbar, IonTitle, IonContent, ExploreContainerComponent],
})
export class Tab3Page {
constructor() {}
}
================================================
FILE: angular-standalone/official/tabs/src/app/tabs/tabs.page.html
================================================
<ion-tabs>
<ion-tab-bar slot="bottom">
<ion-tab-button tab="tab1" href="/tabs/tab1">
<ion-icon aria-hidden="true" name="triangle"></ion-icon>
<ion-label>Tab 1</ion-label>
</ion-tab-button>
<ion-tab-button tab="tab2" href="/tabs/tab2">
<ion-icon aria-hidden="true" name="ellipse"></ion-icon>
<ion-label>Tab 2</ion-label>
</ion-tab-button>
<ion-tab-button tab="tab3" href="/tabs/tab3">
<ion-icon aria-hidden="true" name="square"></ion-icon>
<ion-label>Tab 3</ion-label>
</ion-tab-button>
</ion-tab-bar>
</ion-tabs>
================================================
FILE: angular-standalone/official/tabs/src/app/tabs/tabs.page.scss
================================================
================================================
FILE: angular-standalone/official/tabs/src/app/tabs/tabs.page.spec.ts
================================================
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { provideRouter } from '@angular/router';
import { TabsPage } from './tabs.page';
describe('TabsPage', () => {
let component: TabsPage;
let fixture: ComponentFixture<TabsPage>;
beforeEach(async () => {
await TestBed.configureTestingModule({
imports: [TabsPage],
providers: [provideRouter([])]
}).compileComponents();
});
beforeEach(() => {
fixture = TestBed.createComponent(TabsPage);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
================================================
FILE: angular-standalone/official/tabs/src/app/tabs/tabs.page.ts
================================================
import { Component, EnvironmentInjector, inject } from '@angular/core';
import { IonTabs, IonTabBar, IonTabButton, IonIcon, IonLabel } from '@ionic/angular/standalone';
import { addIcons } from 'ionicons';
import { triangle, ellipse, square } from 'ionicons/icons';
@Component({
selector: 'app-tabs',
templateUrl: 'tabs.page.html',
styleUrls: ['tabs.page.scss'],
imports: [IonTabs, IonTabBar, IonTabButton, IonIcon, IonLabel],
})
export class TabsPage {
public environmentInjector = inject(EnvironmentInjector);
constructor() {
addIcons({ triangle, ellipse, square });
}
}
================================================
FILE: angular-standalone/official/tabs/src/app/tabs/tabs.routes.ts
================================================
import { Routes } from '@angular/router';
import { TabsPage } from './tabs.page';
export const routes: Routes = [
{
path: 'tabs',
component: TabsPage,
children: [
{
path: 'tab1',
loadComponent: () =>
import('../tab1/tab1.page').then((m) => m.Tab1Page),
},
{
path: 'tab2',
loadComponent: () =>
import('../tab2/tab2.page').then((m) => m.Tab2Page),
},
{
path: 'tab3',
loadComponent: () =>
import('../tab3/tab3.page').then((m) => m.Tab3Page),
},
{
path: '',
redirectTo: '/tabs/tab1',
pathMatch: 'full',
},
],
},
{
path: '',
redirectTo: '/tabs/tab1',
pathMatch: 'full',
},
];
================================================
FILE: bin/ionic-starters
================================================
#!/usr/bin/env node
const { run } = require('../');
run(process.argv.slice(2), process.env).catch(e => { console.error(e); process.exitCode = 1; });
================================================
FILE: integrations/cordova/config.xml
================================================
<?xml version='1.0' encoding='utf-8'?>
<widget id="io.ionic.starter" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
<name>MyApp</name>
<description>An awesome Ionic/Cordova app.</description>
<author email="hi@ionicframework.com" href="https://ionicframework.com/">Ionic Framework Team</author>
<content src="index.html" />
<access origin="*" />
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />
<allow-intent href="tel:*" />
<allow-intent href="sms:*" />
<allow-intent href="mailto:*" />
<allow-intent href="geo:*" />
<preference name="ScrollEnabled" value="false" />
<preference name="BackupWebStorage" value="none" />
<preference name="SplashMaintainAspectRatio" value="true" />
<preference name="FadeSplashScreenDuration" value="300" />
<!--
Change these to configure how the splashscreen displays and fades in/out.
More info here: https://github.com/apache/cordova-plugin-splashscreen
-->
<preference name="SplashShowOnlyFirstTime" value="false" />
<preference name="SplashScreen" value="screen" />
<preference name="SplashScreenDelay" value="3000" />
<platform name="android">
<preference name="Scheme" value="http" />
<edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application" xmlns:android="http://schemas.android.com/apk/res/android">
<application android:networkSecurityConfig="@xml/network_security_config" />
</edit-config>
<resource-file src="resources/android/xml/network_security_config.xml" target="app/src/main/res/xml/network_security_config.xml" />
<allow-intent href="market:*" />
<icon density="ldpi" src="resources/android/icon/drawable-ldpi-icon.png" />
<icon density="mdpi" src="resources/android/icon/drawable-mdpi-icon.png" />
<icon density="hdpi" src="resources/android/icon/drawable-hdpi-icon.png" />
<icon density="xhdpi" src="resources/android/icon/drawable-xhdpi-icon.png" />
<icon density="xxhdpi" src="resources/android/icon/drawable-xxhdpi-icon.png" />
<icon density="xxxhdpi" src="resources/android/icon/drawable-xxxhdpi-icon.png" />
<splash density="land-ldpi" src="resources/android/splash/drawable-land-ldpi-screen.png" />
<splash density="land-mdpi" src="resources/android/splash/drawable-land-mdpi-screen.png" />
<splash density="land-hdpi" src="resources/android/splash/drawable-land-hdpi-screen.png" />
<splash density="land-xhdpi" src="resources/android/splash/drawable-land-xhdpi-screen.png" />
<splash density="land-xxhdpi" src="resources/android/splash/drawable-land-xxhdpi-screen.png" />
<splash density="land-xxxhdpi" src="resources/android/splash/drawable-land-xxxhdpi-screen.png" />
<splash density="port-ldpi" src="resources/android/splash/drawable-port-ldpi-screen.png" />
<splash density="port-mdpi" src="resources/android/splash/drawable-port-mdpi-screen.png" />
<splash density="port-hdpi" src="resources/android/splash/drawable-port-hdpi-screen.png" />
<splash density="port-xhdpi" src="resources/android/splash/drawable-port-xhdpi-screen.png" />
<splash density="port-xxhdpi" src="resources/android/splash/drawable-port-xxhdpi-screen.png" />
<splash density="port-xxxhdpi" src="resources/android/splash/drawable-port-xxxhdpi-screen.png" />
</platform>
<platform name="ios">
<allow-intent href="itms:*" />
<allow-intent href="itms-apps:*" />
<icon height="57" src="resources/ios/icon/icon.png" width="57" />
<icon height="114" src="resources/ios/icon/icon@2x.png" width="114" />
<icon height="29" src="resources/ios/icon/icon-small.png" width="29" />
<icon height="58" src="resources/ios/icon/icon-small@2x.png" width="58" />
<icon height="87" src="resources/ios/icon/icon-small@3x.png" width="87" />
<icon height="20" src="resources/ios/icon/icon-20.png" width="20" />
<icon height="40" src="resources/ios/icon/icon-20@2x.png" width="40" />
<icon height="60" src="resources/ios/icon/icon-20@3x.png" width="60" />
<icon height="48" src="resources/ios/icon/icon-24@2x.png" width="48" />
<icon height="55" src="resources/ios/icon/icon-27.5@2x.png" width="55" />
<icon height="29" src="resources/ios/icon/icon-29.png" width="29" />
<icon height="58" src="resources/ios/icon/icon-29@2x.png" width="58" />
<icon height="87" src="resources/ios/icon/icon-29@3x.png" width="87" />
<icon height="40" src="resources/ios/icon/icon-40.png" width="40" />
<icon height="80" src="resources/ios/icon/icon-40@2x.png" width="80" />
<icon height="120" src="resources/ios/icon/icon-40@3x.png" width="120" />
<icon height="88" src="resources/ios/icon/icon-44@2x.png" width="88" />
<icon height="50" src="resources/ios/icon/icon-50.png" width="50" />
<icon height="100" src="resources/ios/icon/icon-50@2x.png" width="100" />
<icon height="60" src="resources/ios/icon/icon-60.png" width="60" />
<icon height="120" src="resources/ios/icon/icon-60@2x.png" width="120" />
<icon height="180" src="resources/ios/icon/icon-60@3x.png" width="180" />
<icon height="72" src="resources/ios/icon/icon-72.png" width="72" />
<icon height="144" src="resources/ios/icon/icon-72@2x.png" width="144" />
<icon height="76" src="resources/ios/icon/icon-76.png" width="76" />
<icon height="152" src="resources/ios/icon/icon-76@2x.png" width="152" />
<icon height="167" src="resources/ios/icon/icon-83.5@2x.png" width="167" />
<icon height="172" src="resources/ios/icon/icon-86@2x.png" width="172" />
<icon height="196" src="resources/ios/icon/icon-98@2x.png" width="196" />
<icon height="1024" src="resources/ios/icon/icon-1024.png" width="1024" />
<splash height="480" src="resources/ios/splash/Default~iphone.png" width="320" />
<splash height="960" src="resources/ios/splash/Default@2x~iphone.png" width="640" />
<splash height="1024" src="resources/ios/splash/Default-Portrait~ipad.png" width="768" />
<splash height="768" src="resources/ios/splash/Default-Landscape~ipad.png" width="1024" />
<splash height="1125" src="resources/ios/splash/Default-Landscape-2436h.png" width="2436" />
<splash height="1242" src="resources/ios/splash/Default-Landscape-736h.png" width="2208" />
<splash height="2048" src="resources/ios/splash/Default-Portrait@2x~ipad.png" width="1536" />
<splash height="1536" src="resources/ios/splash/Default-Landscape@2x~ipad.png" width="2048" />
<splash height="2732" src="resources/ios/splash/Default-Portrait@~ipadpro.png" width="2048" />
<splash height="2048" src="resources/ios/splash/Default-Landscape@~ipadpro.png" width="2732" />
<splash height="1136" src="resources/ios/splash/Default-568h@2x~iphone.png" width="640" />
<splash height="1334" src="resources/ios/splash/Default-667h.png" width="750" />
<splash height="2208" src="resources/ios/splash/Default-736h.png" width="1242" />
<splash height="2436" src="resources/ios/splash/Default-2436h.png" width="1125" />
<splash height="2732" src="resources/ios/splash/Default@2x~universal~anyany.png" width="2732" />
</platform>
<plugin name="cordova-plugin-statusbar" spec="2.4.2" />
<plugin name="cordova-plugin-device" spec="2.0.2" />
<plugin name="cordova-plugin-splashscreen" spec="5.0.2" />
<plugin name="cordova-plugin-ionic-webview" spec="^5.0.0" />
<plugin name="cordova-plugin-ionic-keyboard" spec="^2.0.5" />
</widget>
================================================
FILE: integrations/cordova/resources/README.md
================================================
These are Cordova resources. You can replace icon.png and splash.png and run
`ionic cordova resources` to generate custom icons and splash screens for your
app. See `ionic cordova resources --help` for details.
Cordova reference documentation:
- Icons: https://cordova.apache.org/docs/en/latest/config_ref/images.html
- Splash Screens: https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-splashscreen/
================================================
FILE: integrations/cordova/resources/android/xml/network_security_config.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">localhost</domain>
</domain-config>
</network-security-config>
================================================
FILE: ionic-angular/base/.editorconfig
================================================
# EditorConfig helps developers define and maintain consistent coding styles between different editors and IDEs
# editorconfig.org
root = true
[*]
indent_style = space
indent_size = 2
# We recommend you to keep these unchanged
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
[*.md]
trim_trailing_whitespace = false
================================================
FILE: ionic-angular/base/.gitignore
================================================
# Specifies intentionally untracked files to ignore when using Git
# http://git-scm.com/docs/gitignore
*~
*.sw[mnpcod]
.tmp
*.tmp
*.tmp.*
*.sublime-project
*.sublime-workspace
.DS_Store
Thumbs.db
UserInterfaceState.xcuserstate
$RECYCLE.BIN/
*.log
log.txt
npm-debug.log*
/.idea
/.ionic
/.sass-cache
/.sourcemaps
/.versions
/.vscode
/coverage
/dist
/node_modules
/platforms
/plugins
/www
================================================
FILE: ionic-angular/base/ionic.config.json
================================================
{
"name": "ionic2-app-base",
"app_id": "",
"type": "ionic-angular",
"integrations": {}
}
================================================
FILE: ionic-angular/base/package.json
================================================
{
"name": "ionic-app-base",
"version": "0.0.0",
"author": "Ionic Framework",
"homepage": "https://ionicframework.com/",
"private": true,
"scripts": {
"start": "ionic-app-scripts serve",
"clean": "ionic-app-scripts clean",
"build": "ionic-app-scripts build",
"lint": "ionic-app-scripts lint"
},
"dependencies": {
"@angular/animations": "5.2.11",
"@angular/common": "5.2.11",
"@angular/compiler": "5.2.11",
"@angular/compiler-cli": "5.2.11",
"@angular/core": "5.2.11",
"@angular/forms": "5.2.11",
"@angular/platform-browser": "5.2.11",
"@angular/platform-browser-dynamic": "5.2.11",
"@ionic-native/core": "4.20.0",
"@ionic-native/splash-screen": "4.20.0",
"@ionic-native/status-bar": "4.20.0",
"@ionic/storage": "2.2.0",
"ionic-angular": "3.9.9",
"ionicons": "3.0.0",
"rxjs": "5.5.11",
"sw-toolbox": "3.6.0",
"zone.js": "0.8.29"
},
"devDependencies": {
"@ionic/app-scripts": "3.2.4",
"typescript": "2.6.2"
}
}
================================================
FILE: ionic-angular/base/src/app/app.scss
================================================
// https://ionicframework.com/docs/theming/
// App Global Sass
// --------------------------------------------------
// Put style rules here that you want to apply globally. These
// styles are for the entire app and not just one component.
// Additionally, this file can be also used as an entry point
// to import other Sass files to be included in the output CSS.
//
// Shared Sass variables, which can be used to adjust Ionic's
// default Sass variables, belong in "theme/variables.scss".
//
// To declare rules for a specific mode, create a child rule
// for the .md, .ios, or .wp mode classes. The mode class is
// automatically applied to the <body> element in the app.
================================================
FILE: ionic-angular/base/src/app/main.ts
================================================
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { AppModule } from './app.module';
platformBrowserDynamic().bootstrapModule(AppModule);
================================================
FILE: ionic-angular/base/src/index.html
================================================
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="UTF-8">
<title>Ionic App</title>
<meta name="viewport" content="viewport-fit=cover, width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
<meta name="format-detection" content="telephone=no">
<meta name="msapplication-tap-highlight" content="no">
<link rel="icon" type="image/x-icon" href="assets/icon/favicon.ico">
<link rel="manifest" href="manifest.json">
<meta name="theme-color" content="#4e8ef7">
<!-- add to homescreen for ios -->
<meta name="mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<!-- cordova.js required for cordova apps (remove if not needed) -->
<script src="cordova.js"></script>
<!-- un-comment this code to enable service worker
<script>
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('service-worker.js')
.then(() => console.log('service worker installed'))
.catch(err => console.error('Error', err));
}
</script>-->
<link href="build/main.css" rel="stylesheet">
</head>
<body>
<!-- Ionic's root component and where the app will load -->
<ion-app></ion-app>
<!-- The polyfills js is generated during the build process -->
<script src="build/polyfills.js"></script>
<!-- The vendor js is generated during the build process
It contains all of the dependencies in node_modules -->
<script src="build/vendor.js"></script>
<!-- The main bundle js is generated during the build process -->
<script src="build/main.js"></script>
</body>
</html>
================================================
FILE: ionic-angular/base/src/manifest.json
================================================
{
"name": "Ionic",
"short_name": "Ionic",
"start_url": "index.html",
"display": "standalone",
"icons": [{
"src": "assets/imgs/logo.png",
"sizes": "512x512",
"type": "image/png"
}],
"background_color": "#4e8ef7",
"theme_color": "#4e8ef7"
}
================================================
FILE: ionic-angular/base/src/service-worker.js
================================================
/**
* Check out https://googlechromelabs.github.io/sw-toolbox/ for
* more info on how to use sw-toolbox to custom configure your service worker.
*/
'use strict';
importScripts('./build/sw-toolbox.js');
self.toolbox.options.cache = {
name: 'ionic-cache'
};
// pre-cache our key assets
self.toolbox.precache(
[
'./build/main.js',
'./build/vendor.js',
'./build/main.css',
'./build/polyfills.js',
'index.html',
'manifest.json'
]
);
// dynamically cache any other local assets
self.toolbox.router.any('/*', self.toolbox.fastest);
// for any other requests go to the network, cache,
// and then only use that cached resource if your user goes offline
self.toolbox.router.default = self.toolbox.networkFirst;
================================================
FILE: ionic-angular/base/src/theme/variables.scss
================================================
// Ionic Variables and Theming. For more info, please see:
// https://ionicframework.com/docs/theming/
// Font path is used to include ionicons,
// roboto, and noto sans fonts
$font-path: "../assets/fonts";
// The app direction is used to include
// rtl styles in your app. For more info, please refer to:
// https://ionicframework.com/docs/theming/rtl-support/
$app-direction: ltr;
@import "ionic.globals";
// Shared Variables
// --------------------------------------------------
// To customize the look and feel of this app, you can override
// the Sass variables found in Ionic's source scss files.
// To view all the possible Ionic variables, see:
// https://ionicframework.com/docs/theming/overriding-ionic-variables/
// Named Color Variables
// --------------------------------------------------
// Named colors makes it easy to reuse colors on various components.
// It's highly recommended to change the default colors
// to match your app's branding. Ionic uses a Sass map of
// colors so you can add, rename and remove colors as needed.
// The "primary" color is the only required color in the map.
$colors: (
primary: #488aff,
secondary: #32db64,
danger: #f53d3d,
light: #f4f4f4,
dark: #222
);
// App iOS Variables
// --------------------------------------------------
// iOS only Sass variables can go here
// App Material Design Variables
// --------------------------------------------------
// Material Design only Sass variables can go here
// App Windows Variables
// --------------------------------------------------
// Windows only Sass variables can go here
// App Theme
// --------------------------------------------------
// Ionic apps can have different themes applied, which can
// then be future customized. This import comes last
// so that the above variables are used and Ionic's
// default are overridden.
@import "ionic.theme.default";
// Ionicons
// --------------------------------------------------
// The premium icon font for Ionic. For more info, please see:
// https://ionicframework.com/docs/ionicons/
@import "ionic.ionicons";
// Fonts
// --------------------------------------------------
@import "roboto";
@import "noto-sans";
================================================
FILE: ionic-angular/base/tsconfig.json
================================================
{
"compilerOptions": {
"allowSyntheticDefaultImports": true,
"declaration": false,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"lib": [
"dom",
"es2015"
],
"module": "es2015",
"moduleResolution": "node",
"sourceMap": true,
"target": "es5"
},
"include": [
"src/**/*.ts"
],
"exclude": [
"node_modules",
"src/**/*.spec.ts",
"src/**/__tests__/*.ts"
],
"compileOnSave": false,
"atom": {
"rewriteTsconfig": false
}
}
================================================
FILE: ionic-angular/base/tslint.json
================================================
{
"rules": {
"no-duplicate-variable": true,
"no-unused-variable": [
true
]
},
"rulesDirectory": [
"node_modules/tslint-eslint-rules/dist/rules"
]
}
================================================
FILE: ionic-angular/community/.gitkeep
================================================
================================================
FILE: ionic-angular/official/aws/README.md
================================================
# Ionic AWS Starter
This Ionic starter comes with a pre-configured [AWS Mobile Hub](https://aws.amazon.com/mobile/) project set up to use Amazon DynamoDB, S3, Pinpoint, and Cognito.
## Using the Starter
### Installing Ionic CLI 3.0
This starter project requires Ionic CLI 3.0, to install, run
```bash
npm install -g ionic@latest
```
Make sure to add `sudo` on Mac and Linux. If you encounter issues installing the Ionic 3 CLI, uninstall the old one using `npm uninstall -g ionic` first.
### Installing AWSMobile CLI
```
npm install -g awsmobile-cli
```
### Creating the Ionic Project
To create a new Ionic project using this AWS Mobile Hub starter, run
```bash
ionic start myApp aws
```
Which will create a new app in `./myApp`.
Once the app is created, `cd` into it:
```bash
cd myApp
```
### Creating AWS Mobile Hub Project
Init AWSMobile project
```bash
awsmobile init
Please tell us about your project:
? Where is your project's source directory: src
? Where is your project's distribution directory that stores build artifacts: www
? What is your project's build command: npm run-script build
? What is your project's start command for local test run: ionic serve
? What awsmobile project name would you like to use: ...
Successfully created AWS Mobile Hub project: ...
```
### Configuring AWS Mobile Hub Project
The starter project gives instructions on how to do this from the
command line, but some have reported bugs with
[awsmobile](https://github.com/ionic-team/starters/issues/46),
so here's how to do it in the browser.
#### NoSQL Database
Enable.
Create a custom table named `tasks`. Make it Private.
Accept `userId` as Partition key.
Add an attribute `taskId` with type string and make it a Sort key
Add an attribute `category` with type string.
Add an attribute `description` with type string.
Add an attribute `created` with type number.
Create an index `DateSorted` with userId as Partition key and taskId
as Sort key.
#### User Sign-In
Turn this on.
Set your password requirements.
#### Hosting and Streaming
Turn this on.
#### User File Storage
Turn this on.
### Configuring S3
From the AWS Console, go to S3.
Select the bucket named `<project name>-userfiles-mobilehub-<AWS resource number>`
Go to the Permissions tab. Click on CORS Configuration. Paste the
following into the editor and save.
```xml
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>HEAD</AllowedMethod>
<AllowedMethod>PUT</AllowedMethod>
<AllowedMethod>GET</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<ExposeHeader>x-amz-server-side-encryption</ExposeHeader>
<ExposeHeader>x-amz-request-id</ExposeHeader>
<ExposeHeader>x-amz-id-2</ExposeHeader>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
```
### Integrating Changes into App
Go back to the command line for your project.
```bash
awsmobile pull
```
Answer yes, when asked "? sync corresponding contents in backend/ with #current-backend-info/"
### Install dependencies
```bash
npm install
```
The following commands are needed due to breaking changes in
[aws-amplify](https://github.com/aws/aws-amplify) 0.4.6.
They may not be needed in the future.
```bash
npm install @types/zen-observable
npm install @types/paho-mqtt
```
### Running the app
Now the app is configured and wired up to the AWS Mobile Hub and AWS services. To run the app in the browser, run
```bash
ionic serve
```
To run the app on device, first add a platform, and then run it:
```bash
ionic cordova platform add ios
ionic cordova run ios
```
Or open the platform-specific project in the relevant IDE:
```bash
open platforms/ios/MyApp.xcodeproj
```
### Hosting app on Amazon S3
Since your Ionic app is just a web app, it can be hosted as a static website in an Amazon S3 bucket.
```
npm run build
awsmobile publish
```
================================================
FILE: ionic-angular/official/aws/ionic.starter.json
================================================
{
"name": "AWS Starter",
"baseref": "main",
"gitignore": [
"cors-policy.xml",
"mobile-hub-project.zip"
],
"tarignore": [
".sourcemaps",
"node_modules",
"package-lock.json",
"www"
],
"packageJson": {
"dependencies": {
"@ionic-native/camera": "4.5.3",
"aws-amplify": "^0.2.9"
},
"devDependencies": {
"@types/node": "^9.4.0"
}
}
}
================================================
FILE: ionic-angular/official/aws/src/app/app.component.ts
================================================
import { Component } from '@angular/core';
import { Platform } from 'ionic-angular';
import { StatusBar } from '@ionic-native/status-bar';
import { SplashScreen } from '@ionic-native/splash-screen';
import { Auth } from 'aws-amplify';
import { TabsPage } from '../pages/tabs/tabs';
import { LoginPage } from '../pages/login/login';
@Component({
templateUrl: 'app.html'
})
export class MyApp {
rootPage:any = null;
constructor(platform: Platform, statusBar: StatusBar, splashScreen: SplashScreen) {
let globalActions = function() {
// Okay, so the platform is ready and our plugins are available.
// Here you can do any higher level native things you might need.
statusBar.styleDefault();
splashScreen.hide();
};
platform.ready()
.then(() => {
Auth.currentAuthenticatedUser()
.then(() => { this.rootPage = TabsPage; })
.catch(() => { this.rootPage = LoginPage; })
.then(() => globalActions());
});
}
}
================================================
FILE: ionic-angular/official/aws/src/app/app.html
================================================
<ion-nav [root]="rootPage"></ion-nav>
================================================
FILE: ionic-angular/official/aws/src/app/app.module.ts
================================================
import { NgModule, ErrorHandler } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { IonicApp, IonicModule, IonicErrorHandler } from 'ionic-angular';
import { Camera } from '@ionic-native/camera';
import { MyApp } from './app.component';
import { LoginPage } from '../pages/login/login';
import { SignupPage } from '../pages/signup/signup';
import { ConfirmSignInPage } from '../pages/confirmSignIn/confirmSignIn';
import { ConfirmSignUpPage } from '../pages/confirmSignUp/confirmSignUp';
import { SettingsPage } from '../pages/settings/settings';
import { AboutPage } from '../pages/about/about';
import { AccountPage } from '../pages/account/account';
import { TabsPage } from '../pages/tabs/tabs';
import { TasksPage } from '../pages/tasks/tasks';
import { TasksCreatePage } from '../pages/tasks-create/tasks-create';
import { StatusBar } from '@ionic-native/status-bar';
import { SplashScreen } from '@ionic-native/splash-screen';
import { DynamoDB } from '../providers/aws.dynamodb';
import Amplify from 'aws-amplify';
const aws_exports = require('../aws-exports').default;
Amplify.configure(aws_exports);
@NgModule({
declarations: [
MyApp,
LoginPage,
SignupPage,
ConfirmSignInPage,
ConfirmSignUpPage,
SettingsPage,
AboutPage,
AccountPage,
TabsPage,
TasksPage,
TasksCreatePage
],
imports: [
BrowserModule,
IonicModule.forRoot(MyApp)
],
bootstrap: [IonicApp],
entryComponents: [
MyApp,
LoginPage,
SignupPage,
ConfirmSignInPage,
ConfirmSignUpPage,
SettingsPage,
AboutPage,
AccountPage,
TabsPage,
TasksPage,
TasksCreatePage
],
providers: [
StatusBar,
SplashScreen,
{provide: ErrorHandler, useClass: IonicErrorHandler},
Camera,
DynamoDB
]
})
export class AppModule {}
declare var AWS;
AWS.config.customUserAgent = AWS.config.customUserAgent + ' Ionic';
================================================
FILE: ionic-angular/official/aws/src/assets/aws-sdk.js
================================================
// AWS SDK for JavaScript v2.17.0
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
// License at https://sdk.amazonaws.com/js/BUNDLE_LICENSE.txt
(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
module.exports={
"version": "2.0",
"metadata": {
"apiVersion": "2015-12-08",
"endpointPrefix": "acm",
"jsonVersion": "1.1",
"protocol": "json",
"serviceAbbreviation": "ACM",
"serviceFullName": "AWS Certificate Manager",
"signatureVersion": "v4",
"targetPrefix": "CertificateManager",
"uid": "acm-2015-12-08"
},
"operations": {
"AddTagsToCertificate": {
"input": {
"type": "structure",
"required": [
"CertificateArn",
"Tags"
],
"members": {
"CertificateArn": {},
"Tags": {
"shape": "S3"
}
gitextract_q5flt7bx/
├── .github/
│ ├── CODEOWNERS
│ ├── ISSUE_TEMPLATE.md
│ ├── ionic-issue-bot.yml
│ └── workflows/
│ ├── main.yml
│ └── wizard-templates.yml
├── .gitignore
├── .gitmodules
├── .npmrc
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── angular/
│ ├── base/
│ │ ├── .browserslistrc
│ │ ├── .editorconfig
│ │ ├── .eslintrc.json
│ │ ├── .gitignore
│ │ ├── .vscode/
│ │ │ ├── extensions.json
│ │ │ └── settings.json
│ │ ├── angular.json
│ │ ├── ionic.config.json
│ │ ├── karma.conf.js
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── app/
│ │ │ │ ├── app.component.html
│ │ │ │ ├── app.component.scss
│ │ │ │ ├── app.component.spec.ts
│ │ │ │ ├── app.component.ts
│ │ │ │ └── app.module.ts
│ │ │ ├── environments/
│ │ │ │ ├── environment.prod.ts
│ │ │ │ └── environment.ts
│ │ │ ├── global.scss
│ │ │ ├── index.html
│ │ │ ├── main.ts
│ │ │ ├── polyfills.ts
│ │ │ ├── test.ts
│ │ │ ├── theme/
│ │ │ │ └── variables.scss
│ │ │ └── zone-flags.ts
│ │ ├── tsconfig.app.json
│ │ ├── tsconfig.json
│ │ └── tsconfig.spec.json
│ ├── community/
│ │ └── .gitkeep
│ └── official/
│ ├── blank/
│ │ ├── ionic.starter.json
│ │ └── src/
│ │ └── app/
│ │ ├── app-routing.module.ts
│ │ ├── app.component.html
│ │ ├── app.module.ts
│ │ └── home/
│ │ ├── home-routing.module.ts
│ │ ├── home.module.ts
│ │ ├── home.page.html
│ │ ├── home.page.scss
│ │ ├── home.page.spec.ts
│ │ └── home.page.ts
│ ├── list/
│ │ ├── ionic.config.json
│ │ ├── ionic.starter.json
│ │ └── src/
│ │ └── app/
│ │ ├── app-routing.module.ts
│ │ ├── app.component.html
│ │ ├── app.module.ts
│ │ ├── home/
│ │ │ ├── home-routing.module.ts
│ │ │ ├── home.module.ts
│ │ │ ├── home.page.html
│ │ │ ├── home.page.scss
│ │ │ ├── home.page.spec.ts
│ │ │ └── home.page.ts
│ │ ├── message/
│ │ │ ├── message.component.html
│ │ │ ├── message.component.scss
│ │ │ ├── message.component.spec.ts
│ │ │ ├── message.component.ts
│ │ │ └── message.module.ts
│ │ ├── services/
│ │ │ ├── data.service.spec.ts
│ │ │ └── data.service.ts
│ │ └── view-message/
│ │ ├── view-message-routing.module.ts
│ │ ├── view-message.module.ts
│ │ ├── view-message.page.html
│ │ ├── view-message.page.scss
│ │ ├── view-message.page.spec.ts
│ │ └── view-message.page.ts
│ ├── sidemenu/
│ │ ├── ionic.starter.json
│ │ └── src/
│ │ └── app/
│ │ ├── app-routing.module.ts
│ │ ├── app.component.html
│ │ ├── app.component.scss
│ │ ├── app.component.spec.ts
│ │ ├── app.component.ts
│ │ ├── app.module.ts
│ │ └── folder/
│ │ ├── folder-routing.module.ts
│ │ ├── folder.module.ts
│ │ ├── folder.page.html
│ │ ├── folder.page.scss
│ │ ├── folder.page.spec.ts
│ │ └── folder.page.ts
│ └── tabs/
│ ├── ionic.starter.json
│ └── src/
│ └── app/
│ ├── app-routing.module.ts
│ ├── app.component.html
│ ├── app.module.ts
│ ├── explore-container/
│ │ ├── explore-container.component.html
│ │ ├── explore-container.component.scss
│ │ ├── explore-container.component.spec.ts
│ │ ├── explore-container.component.ts
│ │ └── explore-container.module.ts
│ ├── tab1/
│ │ ├── tab1-routing.module.ts
│ │ ├── tab1.module.ts
│ │ ├── tab1.page.html
│ │ ├── tab1.page.scss
│ │ ├── tab1.page.spec.ts
│ │ └── tab1.page.ts
│ ├── tab2/
│ │ ├── tab2-routing.module.ts
│ │ ├── tab2.module.ts
│ │ ├── tab2.page.html
│ │ ├── tab2.page.scss
│ │ ├── tab2.page.spec.ts
│ │ └── tab2.page.ts
│ ├── tab3/
│ │ ├── tab3-routing.module.ts
│ │ ├── tab3.module.ts
│ │ ├── tab3.page.html
│ │ ├── tab3.page.scss
│ │ ├── tab3.page.spec.ts
│ │ └── tab3.page.ts
│ └── tabs/
│ ├── tabs-routing.module.ts
│ ├── tabs.module.ts
│ ├── tabs.page.html
│ ├── tabs.page.scss
│ ├── tabs.page.spec.ts
│ └── tabs.page.ts
├── angular-standalone/
│ ├── base/
│ │ ├── .browserslistrc
│ │ ├── .editorconfig
│ │ ├── .eslintrc.json
│ │ ├── .gitignore
│ │ ├── .vscode/
│ │ │ ├── extensions.json
│ │ │ └── settings.json
│ │ ├── angular.json
│ │ ├── ionic.config.json
│ │ ├── karma.conf.js
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── app/
│ │ │ │ ├── app.component.html
│ │ │ │ ├── app.component.scss
│ │ │ │ ├── app.component.spec.ts
│ │ │ │ └── app.component.ts
│ │ │ ├── environments/
│ │ │ │ ├── environment.prod.ts
│ │ │ │ └── environment.ts
│ │ │ ├── global.scss
│ │ │ ├── index.html
│ │ │ ├── main.ts
│ │ │ ├── polyfills.ts
│ │ │ ├── test.ts
│ │ │ ├── theme/
│ │ │ │ └── variables.scss
│ │ │ └── zone-flags.ts
│ │ ├── tsconfig.app.json
│ │ ├── tsconfig.json
│ │ └── tsconfig.spec.json
│ ├── community/
│ │ └── .gitkeep
│ └── official/
│ ├── blank/
│ │ ├── ionic.starter.json
│ │ └── src/
│ │ └── app/
│ │ ├── app.component.html
│ │ ├── app.component.ts
│ │ ├── app.routes.ts
│ │ └── home/
│ │ ├── home.page.html
│ │ ├── home.page.scss
│ │ ├── home.page.spec.ts
│ │ └── home.page.ts
│ ├── list/
│ │ ├── ionic.config.json
│ │ ├── ionic.starter.json
│ │ └── src/
│ │ └── app/
│ │ ├── app.component.html
│ │ ├── app.component.spec.ts
│ │ ├── app.component.ts
│ │ ├── app.routes.ts
│ │ ├── home/
│ │ │ ├── home.page.html
│ │ │ ├── home.page.scss
│ │ │ ├── home.page.spec.ts
│ │ │ └── home.page.ts
│ │ ├── message/
│ │ │ ├── message.component.html
│ │ │ ├── message.component.scss
│ │ │ ├── message.component.spec.ts
│ │ │ └── message.component.ts
│ │ ├── services/
│ │ │ ├── data.service.spec.ts
│ │ │ └── data.service.ts
│ │ └── view-message/
│ │ ├── view-message.page.html
│ │ ├── view-message.page.scss
│ │ ├── view-message.page.spec.ts
│ │ └── view-message.page.ts
│ ├── sidemenu/
│ │ ├── ionic.starter.json
│ │ └── src/
│ │ └── app/
│ │ ├── app.component.html
│ │ ├── app.component.scss
│ │ ├── app.component.spec.ts
│ │ ├── app.component.ts
│ │ ├── app.routes.ts
│ │ └── folder/
│ │ ├── folder.page.html
│ │ ├── folder.page.scss
│ │ ├── folder.page.spec.ts
│ │ └── folder.page.ts
│ └── tabs/
│ ├── ionic.starter.json
│ └── src/
│ └── app/
│ ├── app.component.html
│ ├── app.component.ts
│ ├── app.routes.ts
│ ├── explore-container/
│ │ ├── explore-container.component.html
│ │ ├── explore-container.component.scss
│ │ ├── explore-container.component.spec.ts
│ │ └── explore-container.component.ts
│ ├── tab1/
│ │ ├── tab1.page.html
│ │ ├── tab1.page.scss
│ │ ├── tab1.page.spec.ts
│ │ └── tab1.page.ts
│ ├── tab2/
│ │ ├── tab2.page.html
│ │ ├── tab2.page.scss
│ │ ├── tab2.page.spec.ts
│ │ └── tab2.page.ts
│ ├── tab3/
│ │ ├── tab3.page.html
│ │ ├── tab3.page.scss
│ │ ├── tab3.page.spec.ts
│ │ └── tab3.page.ts
│ └── tabs/
│ ├── tabs.page.html
│ ├── tabs.page.scss
│ ├── tabs.page.spec.ts
│ ├── tabs.page.ts
│ └── tabs.routes.ts
├── bin/
│ └── ionic-starters
├── integrations/
│ └── cordova/
│ ├── config.xml
│ └── resources/
│ ├── README.md
│ └── android/
│ └── xml/
│ └── network_security_config.xml
├── ionic-angular/
│ ├── base/
│ │ ├── .editorconfig
│ │ ├── .gitignore
│ │ ├── ionic.config.json
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── app/
│ │ │ │ ├── app.scss
│ │ │ │ └── main.ts
│ │ │ ├── index.html
│ │ │ ├── manifest.json
│ │ │ ├── service-worker.js
│ │ │ └── theme/
│ │ │ └── variables.scss
│ │ ├── tsconfig.json
│ │ └── tslint.json
│ ├── community/
│ │ └── .gitkeep
│ └── official/
│ ├── aws/
│ │ ├── README.md
│ │ ├── ionic.starter.json
│ │ └── src/
│ │ ├── app/
│ │ │ ├── app.component.ts
│ │ │ ├── app.html
│ │ │ └── app.module.ts
│ │ ├── assets/
│ │ │ └── aws-sdk.js
│ │ ├── index.html
│ │ ├── pages/
│ │ │ ├── about/
│ │ │ │ ├── about.html
│ │ │ │ ├── about.scss
│ │ │ │ └── about.ts
│ │ │ ├── account/
│ │ │ │ ├── account.html
│ │ │ │ ├── account.scss
│ │ │ │ └── account.ts
│ │ │ ├── confirm/
│ │ │ │ ├── confirm.html
│ │ │ │ ├── confirm.scss
│ │ │ │ └── confirm.ts
│ │ │ ├── confirmSignIn/
│ │ │ │ ├── confirmSignIn.html
│ │ │ │ ├── confirmSignIn.scss
│ │ │ │ └── confirmSignIn.ts
│ │ │ ├── confirmSignUp/
│ │ │ │ ├── confirmSignUp.html
│ │ │ │ ├── confirmSignUp.scss
│ │ │ │ └── confirmSignUp.ts
│ │ │ ├── login/
│ │ │ │ ├── login.html
│ │ │ │ ├── login.scss
│ │ │ │ └── login.ts
│ │ │ ├── settings/
│ │ │ │ ├── settings.html
│ │ │ │ └── settings.ts
│ │ │ ├── signup/
│ │ │ │ ├── signup.html
│ │ │ │ ├── signup.scss
│ │ │ │ └── signup.ts
│ │ │ ├── tabs/
│ │ │ │ ├── tabs.html
│ │ │ │ └── tabs.ts
│ │ │ ├── tasks/
│ │ │ │ ├── tasks.html
│ │ │ │ ├── tasks.scss
│ │ │ │ └── tasks.ts
│ │ │ └── tasks-create/
│ │ │ ├── tasks-create.html
│ │ │ ├── tasks-create.scss
│ │ │ └── tasks-create.ts
│ │ └── providers/
│ │ ├── aws.dynamodb.ts
│ │ └── providers.ts
│ ├── blank/
│ │ ├── ionic.starter.json
│ │ └── src/
│ │ ├── app/
│ │ │ ├── app.component.ts
│ │ │ ├── app.html
│ │ │ └── app.module.ts
│ │ └── pages/
│ │ └── home/
│ │ ├── home.html
│ │ ├── home.scss
│ │ └── home.ts
│ ├── sidemenu/
│ │ ├── ionic.starter.json
│ │ └── src/
│ │ ├── app/
│ │ │ ├── app.component.ts
│ │ │ ├── app.html
│ │ │ └── app.module.ts
│ │ └── pages/
│ │ ├── home/
│ │ │ ├── home.html
│ │ │ ├── home.scss
│ │ │ └── home.ts
│ │ └── list/
│ │ ├── list.html
│ │ ├── list.scss
│ │ └── list.ts
│ ├── super/
│ │ ├── README.md
│ │ ├── ionic.starter.json
│ │ └── src/
│ │ ├── app/
│ │ │ ├── app.component.ts
│ │ │ ├── app.module.ts
│ │ │ └── app.scss
│ │ ├── assets/
│ │ │ └── i18n/
│ │ │ ├── ar.json
│ │ │ ├── bs.json
│ │ │ ├── by.json
│ │ │ ├── da.json
│ │ │ ├── de.json
│ │ │ ├── el.json
│ │ │ ├── en.json
│ │ │ ├── es-eu.json
│ │ │ ├── es.json
│ │ │ ├── fil.json
│ │ │ ├── fr.json
│ │ │ ├── he.json
│ │ │ ├── it.json
│ │ │ ├── ja.json
│ │ │ ├── nb_NO.json
│ │ │ ├── nl.json
│ │ │ ├── pl.json
│ │ │ ├── pt-PT.json
│ │ │ ├── pt-br.json
│ │ │ ├── ru.json
│ │ │ ├── sk.json
│ │ │ ├── sl.json
│ │ │ ├── sn.json
│ │ │ ├── sv.json
│ │ │ ├── th.json
│ │ │ ├── tr.json
│ │ │ ├── ua.json
│ │ │ ├── zh-cmn-Hans.json
│ │ │ └── zh-cmn-Hant.json
│ │ ├── mocks/
│ │ │ └── providers/
│ │ │ └── items.ts
│ │ ├── models/
│ │ │ └── item.ts
│ │ ├── pages/
│ │ │ ├── README.md
│ │ │ ├── cards/
│ │ │ │ ├── README.md
│ │ │ │ ├── cards.html
│ │ │ │ ├── cards.module.ts
│ │ │ │ ├── cards.scss
│ │ │ │ └── cards.ts
│ │ │ ├── content/
│ │ │ │ ├── README.md
│ │ │ │ ├── content.html
│ │ │ │ ├── content.module.ts
│ │ │ │ ├── content.scss
│ │ │ │ └── content.ts
│ │ │ ├── index.ts
│ │ │ ├── item-create/
│ │ │ │ ├── README.md
│ │ │ │ ├── item-create.html
│ │ │ │ ├── item-create.module.ts
│ │ │ │ ├── item-create.scss
│ │ │ │ └── item-create.ts
│ │ │ ├── item-detail/
│ │ │ │ ├── README.md
│ │ │ │ ├── item-detail.html
│ │ │ │ ├── item-detail.module.ts
│ │ │ │ ├── item-detail.scss
│ │ │ │ └── item-detail.ts
│ │ │ ├── list-master/
│ │ │ │ ├── README.md
│ │ │ │ ├── list-master.html
│ │ │ │ ├── list-master.module.ts
│ │ │ │ ├── list-master.scss
│ │ │ │ └── list-master.ts
│ │ │ ├── login/
│ │ │ │ ├── README.md
│ │ │ │ ├── login.html
│ │ │ │ ├── login.module.ts
│ │ │ │ ├── login.scss
│ │ │ │ └── login.ts
│ │ │ ├── menu/
│ │ │ │ ├── README.md
│ │ │ │ ├── menu.html
│ │ │ │ ├── menu.module.ts
│ │ │ │ ├── menu.scss
│ │ │ │ └── menu.ts
│ │ │ ├── search/
│ │ │ │ ├── README.md
│ │ │ │ ├── search.html
│ │ │ │ ├── search.module.ts
│ │ │ │ ├── search.scss
│ │ │ │ └── search.ts
│ │ │ ├── settings/
│ │ │ │ ├── README.md
│ │ │ │ ├── settings.html
│ │ │ │ ├── settings.module.ts
│ │ │ │ ├── settings.scss
│ │ │ │ └── settings.ts
│ │ │ ├── signup/
│ │ │ │ ├── README.md
│ │ │ │ ├── signup.html
│ │ │ │ ├── signup.module.ts
│ │ │ │ ├── signup.scss
│ │ │ │ └── signup.ts
│ │ │ ├── tabs/
│ │ │ │ ├── README.md
│ │ │ │ ├── tabs.html
│ │ │ │ ├── tabs.module.ts
│ │ │ │ ├── tabs.scss
│ │ │ │ └── tabs.ts
│ │ │ ├── tutorial/
│ │ │ │ ├── README.md
│ │ │ │ ├── tutorial.html
│ │ │ │ ├── tutorial.module.ts
│ │ │ │ ├── tutorial.scss
│ │ │ │ └── tutorial.ts
│ │ │ └── welcome/
│ │ │ ├── README.md
│ │ │ ├── welcome.html
│ │ │ ├── welcome.module.ts
│ │ │ ├── welcome.scss
│ │ │ └── welcome.ts
│ │ ├── providers/
│ │ │ ├── api/
│ │ │ │ └── api.ts
│ │ │ ├── index.ts
│ │ │ ├── items/
│ │ │ │ └── items.ts
│ │ │ ├── settings/
│ │ │ │ └── settings.ts
│ │ │ └── user/
│ │ │ └── user.ts
│ │ └── theme/
│ │ └── variables.scss
│ ├── super.welcome.js
│ ├── tabs/
│ │ ├── ionic.starter.json
│ │ └── src/
│ │ ├── app/
│ │ │ ├── app.component.ts
│ │ │ ├── app.html
│ │ │ └── app.module.ts
│ │ └── pages/
│ │ ├── about/
│ │ │ ├── about.html
│ │ │ ├── about.scss
│ │ │ └── about.ts
│ │ ├── contact/
│ │ │ ├── contact.html
│ │ │ ├── contact.scss
│ │ │ └── contact.ts
│ │ ├── home/
│ │ │ ├── home.html
│ │ │ ├── home.scss
│ │ │ └── home.ts
│ │ └── tabs/
│ │ ├── tabs.html
│ │ └── tabs.ts
│ └── tutorial/
│ ├── ionic.starter.json
│ └── src/
│ ├── app/
│ │ ├── app.component.ts
│ │ ├── app.html
│ │ └── app.module.ts
│ └── pages/
│ ├── hello-ionic/
│ │ ├── hello-ionic.html
│ │ ├── hello-ionic.scss
│ │ └── hello-ionic.ts
│ ├── item-details/
│ │ ├── item-details.html
│ │ ├── item-details.scss
│ │ └── item-details.ts
│ └── list/
│ ├── list.html
│ ├── list.scss
│ └── list.ts
├── ionic1/
│ ├── base/
│ │ ├── .bowerrc
│ │ ├── .editorconfig
│ │ ├── .gitignore
│ │ ├── bower.json
│ │ ├── gulpfile.js
│ │ ├── hooks/
│ │ │ ├── README.md
│ │ │ └── after_prepare/
│ │ │ └── 010_add_platform_class.js
│ │ ├── ionic.config.json
│ │ ├── package.json
│ │ ├── scss/
│ │ │ └── ionic.app.scss
│ │ └── www/
│ │ ├── index.html
│ │ ├── js/
│ │ │ └── app.js
│ │ ├── lib/
│ │ │ └── ionic/
│ │ │ ├── .bower.json
│ │ │ ├── README.md
│ │ │ ├── bower.json
│ │ │ ├── css/
│ │ │ │ └── ionic.css
│ │ │ ├── js/
│ │ │ │ ├── ionic-angular.js
│ │ │ │ ├── ionic.bundle.js
│ │ │ │ └── ionic.js
│ │ │ └── scss/
│ │ │ ├── _action-sheet.scss
│ │ │ ├── _animations.scss
│ │ │ ├── _backdrop.scss
│ │ │ ├── _badge.scss
│ │ │ ├── _bar.scss
│ │ │ ├── _button-bar.scss
│ │ │ ├── _button.scss
│ │ │ ├── _checkbox.scss
│ │ │ ├── _form.scss
│ │ │ ├── _grid.scss
│ │ │ ├── _items.scss
│ │ │ ├── _list.scss
│ │ │ ├── _loading.scss
│ │ │ ├── _menu.scss
│ │ │ ├── _mixins.scss
│ │ │ ├── _modal.scss
│ │ │ ├── _platform.scss
│ │ │ ├── _popover.scss
│ │ │ ├── _popup.scss
│ │ │ ├── _progress.scss
│ │ │ ├── _radio.scss
│ │ │ ├── _range.scss
│ │ │ ├── _refresher.scss
│ │ │ ├── _reset.scss
│ │ │ ├── _scaffolding.scss
│ │ │ ├── _select.scss
│ │ │ ├── _slide-box.scss
│ │ │ ├── _slides.scss
│ │ │ ├── _spinner.scss
│ │ │ ├── _tabs.scss
│ │ │ ├── _toggle.scss
│ │ │ ├── _transitions.scss
│ │ │ ├── _type.scss
│ │ │ ├── _util.scss
│ │ │ ├── _variables.scss
│ │ │ ├── ionic.scss
│ │ │ ├── ionicons/
│ │ │ │ ├── _ionicons-font.scss
│ │ │ │ ├── _ionicons-icons.scss
│ │ │ │ ├── _ionicons-variables.scss
│ │ │ │ └── ionicons.scss
│ │ │ └── tsconfig.json
│ │ ├── manifest.json
│ │ └── service-worker.js
│ ├── community/
│ │ └── .gitkeep
│ └── official/
│ ├── blank/
│ │ ├── ionic.starter.json
│ │ └── www/
│ │ ├── css/
│ │ │ └── style.css
│ │ ├── index.html
│ │ └── js/
│ │ └── app.js
│ ├── maps/
│ │ ├── ionic.starter.json
│ │ └── www/
│ │ ├── css/
│ │ │ └── style.css
│ │ ├── index.html
│ │ ├── js/
│ │ │ ├── app.js
│ │ │ ├── controllers.js
│ │ │ └── directives.js
│ │ ├── lib/
│ │ │ └── ionic/
│ │ │ ├── css/
│ │ │ │ └── ionic.css
│ │ │ ├── js/
│ │ │ │ ├── angular/
│ │ │ │ │ ├── angular-animate.js
│ │ │ │ │ ├── angular-resource.js
│ │ │ │ │ ├── angular-sanitize.js
│ │ │ │ │ └── angular.js
│ │ │ │ ├── angular-ui/
│ │ │ │ │ └── angular-ui-router.js
│ │ │ │ ├── ionic-angular.js
│ │ │ │ ├── ionic.bundle.js
│ │ │ │ └── ionic.js
│ │ │ └── version.json
│ │ └── templates/
│ │ ├── browse.html
│ │ ├── menu.html
│ │ ├── playlist.html
│ │ ├── playlists.html
│ │ └── search.html
│ ├── sidemenu/
│ │ ├── ionic.starter.json
│ │ └── www/
│ │ ├── css/
│ │ │ └── style.css
│ │ ├── index.html
│ │ ├── js/
│ │ │ ├── app.js
│ │ │ └── controllers.js
│ │ └── templates/
│ │ ├── browse.html
│ │ ├── login.html
│ │ ├── menu.html
│ │ ├── playlist.html
│ │ ├── playlists.html
│ │ └── search.html
│ └── tabs/
│ ├── ionic.starter.json
│ └── www/
│ ├── css/
│ │ └── style.css
│ ├── index.html
│ ├── js/
│ │ ├── app.js
│ │ ├── controllers.js
│ │ └── services.js
│ └── templates/
│ ├── chat-detail.html
│ ├── tab-account.html
│ ├── tab-chats.html
│ ├── tab-dash.html
│ └── tabs.html
├── package.json
├── react/
│ ├── base/
│ │ ├── .eslintrc.js
│ │ ├── .gitignore
│ │ ├── .vscode/
│ │ │ └── extensions.json
│ │ ├── ionic.config.json
│ │ ├── package.json
│ │ ├── public/
│ │ │ ├── index.html
│ │ │ └── manifest.json
│ │ ├── src/
│ │ │ ├── App.test.tsx
│ │ │ ├── App.tsx
│ │ │ ├── index.tsx
│ │ │ ├── react-app-env.d.ts
│ │ │ ├── reportWebVitals.ts
│ │ │ ├── service-worker.ts
│ │ │ ├── serviceWorkerRegistration.ts
│ │ │ ├── setupTests.ts
│ │ │ └── theme/
│ │ │ └── variables.css
│ │ └── tsconfig.json
│ ├── community/
│ │ └── .gitkeep
│ └── official/
│ ├── blank/
│ │ ├── ionic.starter.json
│ │ └── src/
│ │ ├── App.tsx
│ │ ├── components/
│ │ │ ├── ExploreContainer.css
│ │ │ └── ExploreContainer.tsx
│ │ └── pages/
│ │ ├── Home.css
│ │ └── Home.tsx
│ ├── list/
│ │ ├── ionic.starter.json
│ │ └── src/
│ │ ├── App.tsx
│ │ ├── components/
│ │ │ ├── MessageListItem.css
│ │ │ └── MessageListItem.tsx
│ │ ├── data/
│ │ │ └── messages.ts
│ │ └── pages/
│ │ ├── Home.css
│ │ ├── Home.tsx
│ │ ├── ViewMessage.css
│ │ └── ViewMessage.tsx
│ ├── sidemenu/
│ │ ├── ionic.starter.json
│ │ └── src/
│ │ ├── App.tsx
│ │ ├── components/
│ │ │ ├── ExploreContainer.css
│ │ │ ├── ExploreContainer.tsx
│ │ │ ├── Menu.css
│ │ │ └── Menu.tsx
│ │ └── pages/
│ │ ├── Page.css
│ │ └── Page.tsx
│ └── tabs/
│ ├── ionic.starter.json
│ └── src/
│ ├── App.tsx
│ ├── components/
│ │ ├── ExploreContainer.css
│ │ └── ExploreContainer.tsx
│ └── pages/
│ ├── Tab1.css
│ ├── Tab1.tsx
│ ├── Tab2.css
│ ├── Tab2.tsx
│ ├── Tab3.css
│ └── Tab3.tsx
├── react-vite/
│ ├── base/
│ │ ├── .browserslistrc
│ │ ├── .gitignore
│ │ ├── .vscode/
│ │ │ └── extensions.json
│ │ ├── cypress/
│ │ │ ├── fixtures/
│ │ │ │ └── example.json
│ │ │ └── support/
│ │ │ ├── commands.ts
│ │ │ └── e2e.ts
│ │ ├── cypress.config.ts
│ │ ├── eslint.config.js
│ │ ├── index.html
│ │ ├── ionic.config.json
│ │ ├── package.json
│ │ ├── public/
│ │ │ └── manifest.json
│ │ ├── src/
│ │ │ ├── App.test.tsx
│ │ │ ├── App.tsx
│ │ │ ├── main.tsx
│ │ │ ├── setupTests.ts
│ │ │ ├── theme/
│ │ │ │ └── variables.css
│ │ │ └── vite-env.d.ts
│ │ ├── tsconfig.json
│ │ ├── tsconfig.node.json
│ │ └── vite.config.ts
│ ├── community/
│ │ └── .gitkeep
│ └── official/
│ ├── blank/
│ │ ├── cypress/
│ │ │ └── e2e/
│ │ │ └── test.cy.ts
│ │ ├── ionic.starter.json
│ │ └── src/
│ │ ├── App.tsx
│ │ ├── components/
│ │ │ ├── ExploreContainer.css
│ │ │ └── ExploreContainer.tsx
│ │ └── pages/
│ │ ├── Home.css
│ │ └── Home.tsx
│ ├── list/
│ │ ├── cypress/
│ │ │ └── e2e/
│ │ │ └── test.cy.ts
│ │ ├── ionic.starter.json
│ │ └── src/
│ │ ├── App.tsx
│ │ ├── components/
│ │ │ ├── MessageListItem.css
│ │ │ └── MessageListItem.tsx
│ │ ├── data/
│ │ │ └── messages.ts
│ │ └── pages/
│ │ ├── Home.css
│ │ ├── Home.tsx
│ │ ├── ViewMessage.css
│ │ └── ViewMessage.tsx
│ ├── sidemenu/
│ │ ├── cypress/
│ │ │ └── e2e/
│ │ │ └── test.cy.ts
│ │ ├── ionic.starter.json
│ │ └── src/
│ │ ├── App.tsx
│ │ ├── components/
│ │ │ ├── ExploreContainer.css
│ │ │ ├── ExploreContainer.tsx
│ │ │ ├── Menu.css
│ │ │ └── Menu.tsx
│ │ └── pages/
│ │ ├── Page.css
│ │ └── Page.tsx
│ └── tabs/
│ ├── cypress/
│ │ └── e2e/
│ │ └── test.cy.ts
│ ├── ionic.starter.json
│ └── src/
│ ├── App.tsx
│ ├── components/
│ │ ├── ExploreContainer.css
│ │ └── ExploreContainer.tsx
│ └── pages/
│ ├── Tab1.css
│ ├── Tab1.tsx
│ ├── Tab2.css
│ ├── Tab2.tsx
│ ├── Tab3.css
│ └── Tab3.tsx
├── src/
│ ├── commands/
│ │ ├── build.ts
│ │ ├── deploy.ts
│ │ ├── find-redundant.ts
│ │ ├── generate-checksum.ts
│ │ └── test.ts
│ ├── definitions.ts
│ ├── index.ts
│ ├── lib/
│ │ └── build.ts
│ └── utils/
│ └── index.ts
├── tsconfig.json
├── types/
│ ├── cross-spawn.d.ts
│ └── string-width.d.ts
├── vue/
│ ├── base/
│ │ ├── .browserslistrc
│ │ ├── .eslintrc.js
│ │ ├── .gitignore
│ │ ├── .vscode/
│ │ │ └── extensions.json
│ │ ├── babel.config.js
│ │ ├── cypress.json
│ │ ├── ionic.config.json
│ │ ├── jest.config.js
│ │ ├── package.json
│ │ ├── public/
│ │ │ └── index.html
│ │ ├── src/
│ │ │ ├── main.ts
│ │ │ ├── shims-vue.d.ts
│ │ │ └── theme/
│ │ │ └── variables.css
│ │ ├── tests/
│ │ │ └── e2e/
│ │ │ ├── .eslintrc.js
│ │ │ ├── plugins/
│ │ │ │ └── index.js
│ │ │ └── support/
│ │ │ ├── commands.js
│ │ │ └── index.js
│ │ └── tsconfig.json
│ ├── community/
│ │ └── .gitkeep
│ └── official/
│ ├── blank/
│ │ ├── ionic.starter.json
│ │ ├── src/
│ │ │ ├── App.vue
│ │ │ ├── router/
│ │ │ │ └── index.ts
│ │ │ └── views/
│ │ │ └── HomePage.vue
│ │ └── tests/
│ │ ├── e2e/
│ │ │ └── specs/
│ │ │ └── test.js
│ │ └── unit/
│ │ └── example.spec.ts
│ ├── list/
│ │ ├── ionic.starter.json
│ │ ├── src/
│ │ │ ├── App.vue
│ │ │ ├── components/
│ │ │ │ └── MessageListItem.vue
│ │ │ ├── data/
│ │ │ │ └── messages.ts
│ │ │ ├── router/
│ │ │ │ └── index.ts
│ │ │ └── views/
│ │ │ ├── HomePage.vue
│ │ │ └── ViewMessagePage.vue
│ │ └── tests/
│ │ ├── e2e/
│ │ │ └── specs/
│ │ │ └── test.js
│ │ └── unit/
│ │ └── example.spec.ts
│ ├── sidemenu/
│ │ ├── ionic.starter.json
│ │ ├── src/
│ │ │ ├── App.vue
│ │ │ ├── router/
│ │ │ │ └── index.ts
│ │ │ └── views/
│ │ │ └── FolderPage.vue
│ │ └── tests/
│ │ ├── e2e/
│ │ │ └── specs/
│ │ │ └── test.js
│ │ └── unit/
│ │ └── example.spec.ts
│ └── tabs/
│ ├── ionic.starter.json
│ ├── src/
│ │ ├── App.vue
│ │ ├── components/
│ │ │ └── ExploreContainer.vue
│ │ ├── router/
│ │ │ └── index.ts
│ │ └── views/
│ │ ├── Tab1Page.vue
│ │ ├── Tab2Page.vue
│ │ ├── Tab3Page.vue
│ │ └── TabsPage.vue
│ └── tests/
│ ├── e2e/
│ │ └── specs/
│ │ └── test.js
│ └── unit/
│ └── example.spec.ts
└── vue-vite/
├── base/
│ ├── .browserslistrc
│ ├── .eslintignore
│ ├── .eslintrc.cjs
│ ├── .gitignore
│ ├── .vscode/
│ │ └── extensions.json
│ ├── cypress.config.ts
│ ├── index.html
│ ├── ionic.config.json
│ ├── package.json
│ ├── src/
│ │ ├── main.ts
│ │ ├── theme/
│ │ │ └── variables.css
│ │ └── vite-env.d.ts
│ ├── tests/
│ │ └── e2e/
│ │ ├── fixtures/
│ │ │ └── example.json
│ │ └── support/
│ │ ├── commands.ts
│ │ └── e2e.ts
│ ├── tsconfig.json
│ ├── tsconfig.node.json
│ └── vite.config.ts
├── community/
│ └── .gitkeep
└── official/
├── blank/
│ ├── ionic.starter.json
│ ├── src/
│ │ ├── App.vue
│ │ ├── router/
│ │ │ └── index.ts
│ │ └── views/
│ │ └── HomePage.vue
│ └── tests/
│ ├── e2e/
│ │ └── specs/
│ │ └── test.cy.ts
│ └── unit/
│ └── example.spec.ts
├── list/
│ ├── ionic.starter.json
│ ├── src/
│ │ ├── App.vue
│ │ ├── components/
│ │ │ └── MessageListItem.vue
│ │ ├── data/
│ │ │ └── messages.ts
│ │ ├── router/
│ │ │ └── index.ts
│ │ └── views/
│ │ ├── HomePage.vue
│ │ └── ViewMessagePage.vue
│ └── tests/
│ ├── e2e/
│ │ └── specs/
│ │ └── test.cy.ts
│ └── unit/
│ └── example.spec.ts
├── sidemenu/
│ ├── ionic.starter.json
│ ├── src/
│ │ ├── App.vue
│ │ ├── router/
│ │ │ └── index.ts
│ │ └── views/
│ │ └── FolderPage.vue
│ └── tests/
│ ├── e2e/
│ │ └── specs/
│ │ └── test.cy.ts
│ └── unit/
│ └── example.spec.ts
└── tabs/
├── ionic.starter.json
├── src/
│ ├── App.vue
│ ├── components/
│ │ └── ExploreContainer.vue
│ ├── router/
│ │ └── index.ts
│ └── views/
│ ├── Tab1Page.vue
│ ├── Tab2Page.vue
│ ├── Tab3Page.vue
│ └── TabsPage.vue
└── tests/
├── e2e/
│ └── specs/
│ └── test.cy.ts
└── unit/
└── example.spec.ts
SYMBOL INDEX (2156 symbols across 163 files)
FILE: angular-standalone/base/src/app/app.component.ts
class AppComponent (line 10) | class AppComponent {
method constructor (line 11) | constructor() {}
FILE: angular-standalone/official/blank/src/app/app.component.ts
class AppComponent (line 9) | class AppComponent {
method constructor (line 10) | constructor() {}
FILE: angular-standalone/official/blank/src/app/home/home.page.ts
class HomePage (line 10) | class HomePage {
method constructor (line 11) | constructor() {}
FILE: angular-standalone/official/list/src/app/app.component.ts
class AppComponent (line 9) | class AppComponent {
method constructor (line 10) | constructor() {}
FILE: angular-standalone/official/list/src/app/home/home.page.ts
class HomePage (line 14) | class HomePage {
method constructor (line 16) | constructor() {}
method refresh (line 18) | refresh(ev: any) {
method getMessages (line 24) | getMessages(): Message[] {
FILE: angular-standalone/official/list/src/app/message/message.component.ts
class MessageComponent (line 16) | class MessageComponent {
method isIos (line 19) | isIos() {
method constructor (line 22) | constructor() {
FILE: angular-standalone/official/list/src/app/services/data.service.ts
type Message (line 3) | interface Message {
class DataService (line 14) | class DataService {
method constructor (line 74) | constructor() { }
method getMessages (line 76) | public getMessages(): Message[] {
method getMessageById (line 80) | public getMessageById(id: number): Message {
FILE: angular-standalone/official/list/src/app/view-message/view-message.page.ts
class ViewMessagePage (line 15) | class ViewMessagePage implements OnInit {
method constructor (line 21) | constructor() {
method ngOnInit (line 25) | ngOnInit() {
method getBackButtonText (line 30) | getBackButtonText() {
FILE: angular-standalone/official/sidemenu/src/app/app.component.ts
class AppComponent (line 14) | class AppComponent {
method constructor (line 24) | constructor() {
FILE: angular-standalone/official/sidemenu/src/app/folder/folder.page.ts
class FolderPage (line 11) | class FolderPage implements OnInit {
method constructor (line 14) | constructor() {}
method ngOnInit (line 16) | ngOnInit() {
FILE: angular-standalone/official/tabs/src/app/app.component.ts
class AppComponent (line 9) | class AppComponent {
method constructor (line 10) | constructor() {}
FILE: angular-standalone/official/tabs/src/app/explore-container/explore-container.component.ts
class ExploreContainerComponent (line 8) | class ExploreContainerComponent {
FILE: angular-standalone/official/tabs/src/app/tab1/tab1.page.ts
class Tab1Page (line 11) | class Tab1Page {
method constructor (line 12) | constructor() {}
FILE: angular-standalone/official/tabs/src/app/tab2/tab2.page.ts
class Tab2Page (line 11) | class Tab2Page {
method constructor (line 13) | constructor() {}
FILE: angular-standalone/official/tabs/src/app/tab3/tab3.page.ts
class Tab3Page (line 11) | class Tab3Page {
method constructor (line 12) | constructor() {}
FILE: angular-standalone/official/tabs/src/app/tabs/tabs.page.ts
class TabsPage (line 12) | class TabsPage {
method constructor (line 15) | constructor() {
FILE: angular/base/src/app/app.component.ts
class AppComponent (line 9) | class AppComponent {
method constructor (line 10) | constructor() {}
FILE: angular/base/src/app/app.module.ts
class AppModule (line 15) | class AppModule {}
FILE: angular/official/blank/src/app/app-routing.module.ts
class AppRoutingModule (line 22) | class AppRoutingModule { }
FILE: angular/official/blank/src/app/app.module.ts
class AppModule (line 16) | class AppModule {}
FILE: angular/official/blank/src/app/home/home-routing.module.ts
class HomePageRoutingModule (line 16) | class HomePageRoutingModule {}
FILE: angular/official/blank/src/app/home/home.module.ts
class HomePageModule (line 19) | class HomePageModule {}
FILE: angular/official/blank/src/app/home/home.page.ts
class HomePage (line 9) | class HomePage {
method constructor (line 11) | constructor() {}
FILE: angular/official/list/src/app/app-routing.module.ts
class AppRoutingModule (line 26) | class AppRoutingModule { }
FILE: angular/official/list/src/app/app.module.ts
class AppModule (line 16) | class AppModule {}
FILE: angular/official/list/src/app/home/home-routing.module.ts
class HomePageRoutingModule (line 17) | class HomePageRoutingModule {}
FILE: angular/official/list/src/app/home/home.module.ts
class HomePageModule (line 20) | class HomePageModule {}
FILE: angular/official/list/src/app/home/home.page.ts
class HomePage (line 13) | class HomePage {
method constructor (line 15) | constructor() {}
method refresh (line 17) | refresh(ev: any) {
method getMessages (line 23) | getMessages(): Message[] {
FILE: angular/official/list/src/app/message/message.component.ts
class MessageComponent (line 12) | class MessageComponent {
method isIos (line 15) | isIos() {
FILE: angular/official/list/src/app/message/message.module.ts
class MessageComponentModule (line 15) | class MessageComponentModule {}
FILE: angular/official/list/src/app/services/data.service.ts
type Message (line 3) | interface Message {
class DataService (line 14) | class DataService {
method constructor (line 74) | constructor() { }
method getMessages (line 76) | public getMessages(): Message[] {
method getMessageById (line 80) | public getMessageById(id: number): Message {
FILE: angular/official/list/src/app/view-message/view-message-routing.module.ts
class ViewMessagePageRoutingModule (line 17) | class ViewMessagePageRoutingModule {}
FILE: angular/official/list/src/app/view-message/view-message.module.ts
class ViewMessagePageModule (line 19) | class ViewMessagePageModule {}
FILE: angular/official/list/src/app/view-message/view-message.page.ts
class ViewMessagePage (line 13) | class ViewMessagePage implements OnInit {
method constructor (line 19) | constructor() {}
method ngOnInit (line 21) | ngOnInit() {
method getBackButtonText (line 26) | getBackButtonText() {
FILE: angular/official/sidemenu/src/app/app-routing.module.ts
class AppRoutingModule (line 22) | class AppRoutingModule {}
FILE: angular/official/sidemenu/src/app/app.component.ts
class AppComponent (line 8) | class AppComponent {
method constructor (line 18) | constructor() {}
FILE: angular/official/sidemenu/src/app/app.module.ts
class AppModule (line 16) | class AppModule {}
FILE: angular/official/sidemenu/src/app/folder/folder-routing.module.ts
class FolderPageRoutingModule (line 17) | class FolderPageRoutingModule {}
FILE: angular/official/sidemenu/src/app/folder/folder.module.ts
class FolderPageModule (line 20) | class FolderPageModule {}
FILE: angular/official/sidemenu/src/app/folder/folder.page.ts
class FolderPage (line 10) | class FolderPage implements OnInit {
method constructor (line 13) | constructor() {}
method ngOnInit (line 15) | ngOnInit() {
FILE: angular/official/tabs/src/app/app-routing.module.ts
class AppRoutingModule (line 16) | class AppRoutingModule {}
FILE: angular/official/tabs/src/app/app.module.ts
class AppModule (line 16) | class AppModule {}
FILE: angular/official/tabs/src/app/explore-container/explore-container.component.ts
class ExploreContainerComponent (line 9) | class ExploreContainerComponent {
FILE: angular/official/tabs/src/app/explore-container/explore-container.module.ts
class ExploreContainerComponentModule (line 14) | class ExploreContainerComponentModule {}
FILE: angular/official/tabs/src/app/tab1/tab1-routing.module.ts
class Tab1PageRoutingModule (line 16) | class Tab1PageRoutingModule {}
FILE: angular/official/tabs/src/app/tab1/tab1.module.ts
class Tab1PageModule (line 20) | class Tab1PageModule {}
FILE: angular/official/tabs/src/app/tab1/tab1.page.ts
class Tab1Page (line 9) | class Tab1Page {
method constructor (line 11) | constructor() {}
FILE: angular/official/tabs/src/app/tab2/tab2-routing.module.ts
class Tab2PageRoutingModule (line 16) | class Tab2PageRoutingModule {}
FILE: angular/official/tabs/src/app/tab2/tab2.module.ts
class Tab2PageModule (line 20) | class Tab2PageModule {}
FILE: angular/official/tabs/src/app/tab2/tab2.page.ts
class Tab2Page (line 9) | class Tab2Page {
method constructor (line 11) | constructor() {}
FILE: angular/official/tabs/src/app/tab3/tab3-routing.module.ts
class Tab3PageRoutingModule (line 16) | class Tab3PageRoutingModule {}
FILE: angular/official/tabs/src/app/tab3/tab3.module.ts
class Tab3PageModule (line 20) | class Tab3PageModule {}
FILE: angular/official/tabs/src/app/tab3/tab3.page.ts
class Tab3Page (line 9) | class Tab3Page {
method constructor (line 11) | constructor() {}
FILE: angular/official/tabs/src/app/tabs/tabs-routing.module.ts
class TabsPageRoutingModule (line 39) | class TabsPageRoutingModule {}
FILE: angular/official/tabs/src/app/tabs/tabs.module.ts
class TabsPageModule (line 19) | class TabsPageModule {}
FILE: angular/official/tabs/src/app/tabs/tabs.page.ts
class TabsPage (line 9) | class TabsPage {
method constructor (line 11) | constructor() {}
FILE: ionic-angular/official/aws/src/app/app.component.ts
class MyApp (line 13) | class MyApp {
method constructor (line 16) | constructor(platform: Platform, statusBar: StatusBar, splashScreen: Sp...
FILE: ionic-angular/official/aws/src/app/app.module.ts
class AppModule (line 69) | class AppModule {}
FILE: ionic-angular/official/aws/src/assets/aws-sdk.js
function s (line 4) | function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&re...
function finish (line 92138) | function finish(err) {
function credError (line 92142) | function credError(msg, err) {
function getAsyncCredentials (line 92148) | function getAsyncCredentials() {
function getStaticCredentials (line 92159) | function getStaticCredentials() {
function resolveNext (line 92702) | function resolveNext(err, creds) {
function convertInput (line 92877) | function convertInput(data, options) {
function formatSet (line 92913) | function formatSet(data, options) {
function filterEmptySetValues (line 92934) | function filterEmptySetValues(set) {
function convertOutput (line 92955) | function convertOutput(data) {
function typeOf (line 93362) | function typeOf(data) {
function isBinary (line 93376) | function isBinary(data) {
function callback (line 93550) | function callback(httpResp) {
function progress (line 93578) | function progress(httpResp) {
function error (line 93588) | function error(err) {
function executeSend (line 93600) | function executeSend() {
function buildMessage (line 93772) | function buildMessage() {
function JsonBuilder (line 94076) | function JsonBuilder() { }
function translate (line 94082) | function translate(value, shape) {
function translateStructure (line 94093) | function translateStructure(structure, shape) {
function translateList (line 94107) | function translateList(list, shape) {
function translateMap (line 94116) | function translateMap(map, shape) {
function translateScalar (line 94125) | function translateScalar(value, shape) {
function JsonParser (line 94134) | function JsonParser() { }
function translate (line 94140) | function translate(value, shape) {
function translateStructure (line 94151) | function translateStructure(structure, shape) {
function translateList (line 94167) | function translateList(list, shape) {
function translateMap (line 94179) | function translateMap(map, shape) {
function translateScalar (line 94191) | function translateScalar(value, shape) {
function Api (line 94208) | function Api(api, options) {
function memoize (line 94265) | function memoize(name, value, fn, nameTr) {
function Collection (line 94271) | function Collection(iterable, options, fn, nameTr) {
function Operation (line 94291) | function Operation(name, operation, options) {
function Paginator (line 94362) | function Paginator(name, paginator) {
function ResourceWaiter (line 94376) | function ResourceWaiter(name, waiter, options) {
function property (line 94409) | function property(obj, name, value) {
function memoizedProperty (line 94415) | function memoizedProperty(obj, name) {
function Shape (line 94421) | function Shape(shape, options, memberName) {
function CompositeShape (line 94537) | function CompositeShape(shape) {
function StructureShape (line 94546) | function StructureShape(shape, options) {
function ListShape (line 94596) | function ListShape(shape, options) {
function MapShape (line 94618) | function MapShape(shape, options) {
function TimestampShape (line 94640) | function TimestampShape(shape) {
function StringShape (line 94678) | function StringShape() {
function FloatShape (line 94691) | function FloatShape() {
function IntegerShape (line 94701) | function IntegerShape() {
function BinaryShape (line 94711) | function BinaryShape() {
function Base64Shape (line 94717) | function Base64Shape() {
function BooleanShape (line 94721) | function BooleanShape() {
function buildRequest (line 95050) | function buildRequest(req) {
function extractError (line 95064) | function extractError(resp) {
function extractData (line 95091) | function extractData(resp) {
function buildRequest (line 95115) | function buildRequest(req) {
function extractError (line 95132) | function extractError(resp) {
function extractData (line 95159) | function extractData(resp) {
function populateMethod (line 95208) | function populateMethod(req) {
function generateURI (line 95212) | function generateURI(endpointPath, operationPath, input, params) {
function populateURI (line 95266) | function populateURI(req) {
function populateHeaders (line 95274) | function populateHeaders(req) {
function buildRequest (line 95291) | function buildRequest(req) {
function extractError (line 95297) | function extractError() {
function extractData (line 95300) | function extractData(resp) {
function populateBody (line 95350) | function populateBody(req) {
function buildRequest (line 95370) | function buildRequest(req) {
function extractError (line 95378) | function extractError(resp) {
function extractData (line 95382) | function extractData(resp) {
function populateBody (line 95416) | function populateBody(req) {
function buildRequest (line 95439) | function buildRequest(req) {
function extractError (line 95447) | function extractError(resp) {
function extractData (line 95466) | function extractData(resp) {
function QueryParamSerializer (line 95502) | function QueryParamSerializer() {
function ucfirst (line 95509) | function ucfirst(shape) {
function serializeStructure (line 95517) | function serializeStructure(prefix, struct, rules, fn) {
function serializeMap (line 95528) | function serializeMap(name, map, rules, fn) {
function serializeList (line 95540) | function serializeList(name, list, rules, fn) {
function serializeMember (line 95566) | function serializeMember(name, value, rules, fn) {
function generateRegionPrefix (line 95650) | function generateRegionPrefix(region) {
function derivedKeys (line 95658) | function derivedKeys(service) {
function applyConfig (line 95675) | function applyConfig(service, config) {
function configureEndpoint (line 95684) | function configureEndpoint(service) {
function isTerminalState (line 95724) | function isTerminalState(machine) {
function wrappedCallback (line 95854) | function wrappedCallback(response) {
function wrappedCallback (line 95872) | function wrappedCallback(err, data) {
function CHECK_ACCEPTORS (line 96114) | function CHECK_ACCEPTORS(resp) {
function callNextListener (line 96853) | function callNextListener(err) {
function setApi (line 97319) | function setApi(api) {
function signedUrlBuilder (line 98432) | function signedUrlBuilder(request) {
function signedUrlSigner (line 98460) | function signedUrlSigner(request) {
function AcceptorStateMachine (line 99106) | function AcceptorStateMachine(states, state) {
function DomXmlParser (line 99955) | function DomXmlParser() { }
function parseXml (line 100027) | function parseXml(xml, shape) {
function parseStructure (line 100038) | function parseStructure(xml, shape) {
function parseMap (line 100062) | function parseMap(xml, shape) {
function parseList (line 100080) | function parseList(xml, shape) {
function parseScalar (line 100094) | function parseScalar(xml, shape) {
function parseUnknown (line 100111) | function parseUnknown(xml) {
function XmlBuilder (line 100140) | function XmlBuilder() { }
function serialize (line 100149) | function serialize(xml, value, shape) {
function serializeStructure (line 100158) | function serializeStructure(xml, params, shape) {
function serializeMap (line 100179) | function serializeMap(xml, map, shape) {
function serializeList (line 100190) | function serializeList(xml, list, shape) {
function serializeScalar (line 100206) | function serializeScalar(xml, value, shape) {
function applyNamespaces (line 100210) | function applyNamespaces(xml, shape) {
function EventEmitter (line 100228) | function EventEmitter() {
function g (line 100350) | function g() {
function isFunction (line 100474) | function isFunction(arg) {
function isNumber (line 100478) | function isNumber(arg) {
function isObject (line 100482) | function isObject(arg) {
function isUndefined (line 100486) | function isUndefined(arg) {
function defaultSetTimout (line 100497) | function defaultSetTimout() {
function defaultClearTimeout (line 100500) | function defaultClearTimeout () {
function runTimeout (line 100523) | function runTimeout(fun) {
function runClearTimeout (line 100543) | function runClearTimeout(marker) {
function cleanUpNextTick (line 100569) | function cleanUpNextTick() {
function drainQueue (line 100584) | function drainQueue() {
function Item (line 100621) | function Item(fun, array) {
function noop (line 100635) | function noop() {}
function error (line 100713) | function error(type) {
function map (line 100718) | function map(array, fn) {
function mapDomain (line 100728) | function mapDomain(string, fn) {
function ucs2decode (line 100742) | function ucs2decode(string) {
function ucs2encode (line 100766) | function ucs2encode(array) {
function basicToDigit (line 100780) | function basicToDigit(codePoint) {
function digitToBasic (line 100794) | function digitToBasic(digit, flag) {
function adapt (line 100799) | function adapt(delta, numPoints, firstTime) {
function decode (line 100810) | function decode(input) {
function encode (line 100890) | function encode(input) {
function toUnicode (line 100985) | function toUnicode(input) {
function toASCII (line 100994) | function toASCII(input) {
function hasOwnProperty (line 101047) | function hasOwnProperty(obj, prop) {
function map (line 101155) | function map (xs, f) {
function deprecated (line 101263) | function deprecated() {
function inspect (line 101304) | function inspect(obj, opts) {
function stylizeWithColor (line 101354) | function stylizeWithColor(str, styleType) {
function stylizeNoColor (line 101366) | function stylizeNoColor(str, styleType) {
function arrayToHash (line 101371) | function arrayToHash(array) {
function formatValue (line 101382) | function formatValue(ctx, value, recurseTimes) {
function formatPrimitive (line 101481) | function formatPrimitive(ctx, value) {
function formatError (line 101499) | function formatError(value) {
function formatArray (line 101504) | function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {
function formatProperty (line 101524) | function formatProperty(ctx, value, recurseTimes, visibleKeys, key, arra...
function reduceToSingleString (line 101583) | function reduceToSingleString(output, base, braces) {
function isArray (line 101604) | function isArray(ar) {
function isBoolean (line 101609) | function isBoolean(arg) {
function isNull (line 101614) | function isNull(arg) {
function isNullOrUndefined (line 101619) | function isNullOrUndefined(arg) {
function isNumber (line 101624) | function isNumber(arg) {
function isString (line 101629) | function isString(arg) {
function isSymbol (line 101634) | function isSymbol(arg) {
function isUndefined (line 101639) | function isUndefined(arg) {
function isRegExp (line 101644) | function isRegExp(re) {
function isObject (line 101649) | function isObject(arg) {
function isDate (line 101654) | function isDate(d) {
function isError (line 101659) | function isError(e) {
function isFunction (line 101665) | function isFunction(arg) {
function isPrimitive (line 101670) | function isPrimitive(arg) {
function objectToString (line 101682) | function objectToString(o) {
function pad (line 101687) | function pad(n) {
function timestamp (line 101695) | function timestamp() {
function hasOwnProperty (line 101723) | function hasOwnProperty(obj, prop) {
function typedArraySupport (line 101751) | function typedArraySupport () {
function kMaxLength (line 101763) | function kMaxLength () {
function createBuffer (line 101769) | function createBuffer (that, length) {
function Buffer (line 101788) | function Buffer (arg, encodingOrOffset, length) {
function from (line 101811) | function from (that, value, encodingOrOffset, length) {
function assertSize (line 101844) | function assertSize (size) {
function alloc (line 101852) | function alloc (that, size, fill, encoding) {
function allocUnsafe (line 101870) | function allocUnsafe (that, size) {
function fromString (line 101890) | function fromString (that, string, encoding) {
function fromArrayLike (line 101911) | function fromArrayLike (that, array) {
function fromArrayBuffer (line 101920) | function fromArrayBuffer (that, array, byteOffset, length) {
function fromObject (line 101948) | function fromObject (that, obj) {
function checked (line 101978) | function checked (length) {
function SlowBuffer (line 101986) | function SlowBuffer (length) {
function byteLength (line 102069) | function byteLength (string, encoding) {
function slowToString (line 102113) | function slowToString (encoding, start, end) {
function swap (line 102176) | function swap (b, n, m) {
function bidirectionalIndexOf (line 102301) | function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {
function arrayIndexOf (line 102351) | function arrayIndexOf (arr, val, byteOffset, encoding, dir) {
function hexWrite (line 102419) | function hexWrite (buf, string, offset, length) {
function utf8Write (line 102445) | function utf8Write (buf, string, offset, length) {
function asciiWrite (line 102449) | function asciiWrite (buf, string, offset, length) {
function latin1Write (line 102453) | function latin1Write (buf, string, offset, length) {
function base64Write (line 102457) | function base64Write (buf, string, offset, length) {
function ucs2Write (line 102461) | function ucs2Write (buf, string, offset, length) {
function base64Slice (line 102539) | function base64Slice (buf, start, end) {
function utf8Slice (line 102547) | function utf8Slice (buf, start, end) {
function decodeCodePointsArray (line 102619) | function decodeCodePointsArray (codePoints) {
function asciiSlice (line 102636) | function asciiSlice (buf, start, end) {
function latin1Slice (line 102646) | function latin1Slice (buf, start, end) {
function hexSlice (line 102656) | function hexSlice (buf, start, end) {
function utf16leSlice (line 102669) | function utf16leSlice (buf, start, end) {
function checkOffset (line 102715) | function checkOffset (offset, ext, length) {
function checkInt (line 102876) | function checkInt (buf, value, offset, ext, max, min) {
function objectWriteUInt16 (line 102929) | function objectWriteUInt16 (buf, value, offset, littleEndian) {
function objectWriteUInt32 (line 102963) | function objectWriteUInt32 (buf, value, offset, littleEndian) {
function checkIEEE754 (line 103113) | function checkIEEE754 (buf, value, offset, ext, max, min) {
function writeFloat (line 103118) | function writeFloat (buf, value, offset, littleEndian, noAssert) {
function writeDouble (line 103134) | function writeDouble (buf, value, offset, littleEndian, noAssert) {
function base64clean (line 103253) | function base64clean (str) {
function stringtrim (line 103262) | function stringtrim (str) {
function toHex (line 103267) | function toHex (n) {
function utf8ToBytes (line 103272) | function utf8ToBytes (string, units) {
function asciiToBytes (line 103342) | function asciiToBytes (str) {
function utf16leToBytes (line 103350) | function utf16leToBytes (str, units) {
function base64ToBytes (line 103366) | function base64ToBytes (str) {
function blitBuffer (line 103370) | function blitBuffer (src, dst, offset, length) {
function isnan (line 103378) | function isnan (val) {
function placeHoldersCount (line 103403) | function placeHoldersCount (b64) {
function byteLength (line 103412) | function byteLength (b64) {
function toByteArray (line 103416) | function toByteArray (b64) {
function tripletToBase64 (line 103446) | function tripletToBase64 (num) {
function encodeChunk (line 103450) | function encodeChunk (uint8, start, end) {
function fromByteArray (line 103460) | function fromByteArray (uint8) {
function toArray (line 103589) | function toArray(buf, bigEndian) {
function toBuffer (line 103603) | function toBuffer(arr, size, bigEndian) {
function hash (line 103612) | function hash(buf, fn, hashSize, bigEndian) {
function hmac (line 103635) | function hmac(fn, key, data) {
function hash (line 103655) | function hash(alg, key) {
function error (line 103678) | function error () {
function each (line 103699) | function each(a, f) {
function md5_vm_test (line 103724) | function md5_vm_test()
function core_md5 (line 103730) | function core_md5(x, len)
function md5_cmn (line 103826) | function md5_cmn(q, a, b, x, s, t)
function md5_ff (line 103830) | function md5_ff(a, b, c, d, x, s, t)
function md5_gg (line 103834) | function md5_gg(a, b, c, d, x, s, t)
function md5_hh (line 103838) | function md5_hh(a, b, c, d, x, s, t)
function md5_ii (line 103842) | function md5_ii(a, b, c, d, x, s, t)
function safe_add (line 103848) | function safe_add(x, y)
function bit_rol (line 103856) | function bit_rol(num, cnt)
function core_sha1 (line 103901) | function core_sha1(x, len)
function sha1_ft (line 103946) | function sha1_ft(t, b, c, d)
function sha1_kt (line 103955) | function sha1_kt(t)
function safe_add (line 103962) | function safe_add(x, y)
function rol (line 103970) | function rol(num, cnt)
function isArray (line 104058) | function isArray(obj) {
function isObject (line 104066) | function isObject(obj) {
function strictDeepEqual (line 104074) | function strictDeepEqual(first, second) {
function isFalse (line 104116) | function isFalse(obj) {
function objValues (line 104134) | function objValues(obj) {
function merge (line 104143) | function merge(a, b) {
function isAlpha (line 104234) | function isAlpha(ch) {
function isNum (line 104240) | function isNum(ch) {
function isAlphaNum (line 104244) | function isAlphaNum(ch) {
function Lexer (line 104251) | function Lexer() {
function Parser (line 104510) | function Parser() {
function TreeInterpreter (line 104870) | function TreeInterpreter(runtime) {
function Runtime (line 105135) | function Runtime(interpreter) {
function compile (line 105611) | function compile(stream) {
function tokenize (line 105617) | function tokenize(stream) {
function search (line 105622) | function search(data, expression) {
function hasOwnProperty (line 105641) | function hasOwnProperty(obj, prop) {
function Url (line 105754) | function Url() {
function urlParse (line 105805) | function urlParse(url, parseQueryString, slashesDenoteHost) {
function urlFormat (line 105990) | function urlFormat(obj) {
function urlResolve (line 106050) | function urlResolve(source, relative) {
function urlResolveObject (line 106058) | function urlResolveObject(source, relative) {
function isString (line 106295) | function isString(arg) {
function isObject (line 106299) | function isObject(arg) {
function isNull (line 106303) | function isNull(arg) {
function isNullOrUndefined (line 106306) | function isNullOrUndefined(arg) {
function buff_to_string (line 106350) | function buff_to_string(buf, offset) {
function v1 (line 106375) | function v1(options, buf, offset) {
function v4 (line 106433) | function v4(options, buf, offset) {
function XMLAttribute (line 106469) | function XMLAttribute(parent, name, value) {
function XMLBuilder (line 106508) | function XMLBuilder(name, options) {
function ctor (line 106568) | function ctor() { this.constructor = child; }
function XMLCData (line 106578) | function XMLCData(parent, text) {
function ctor (line 106618) | function ctor() { this.constructor = child; }
function XMLComment (line 106628) | function XMLComment(parent, text) {
function XMLDTDAttList (line 106672) | function XMLDTDAttList(parent, elementName, attributeName, attributeType...
function XMLDTDElement (line 106747) | function XMLDTDElement(parent, name, value) {
function XMLDTDEntity (line 106800) | function XMLDTDEntity(parent, pe, name, value) {
function XMLDTDNotation (line 106887) | function XMLDTDNotation(parent, name, value) {
function ctor (line 106944) | function ctor() { this.constructor = child; }
function XMLDeclaration (line 106956) | function XMLDeclaration(parent, version, encoding, standalone) {
function XMLDocType (line 107038) | function XMLDocType(parent, pubID, sysID) {
function ctor (line 107211) | function ctor() { this.constructor = child; }
function XMLElement (line 107233) | function XMLElement(parent, name, attributes) {
function XMLNode (line 107451) | function XMLNode(parent) {
function XMLProcessingInstruction (line 107765) | function XMLProcessingInstruction(parent, target, value) {
function ctor (line 107813) | function ctor() { this.constructor = child; }
function XMLRaw (line 107823) | function XMLRaw(parent, text) {
function XMLStringifier (line 107867) | function XMLStringifier(options) {
function ctor (line 108031) | function ctor() { this.constructor = child; }
function XMLText (line 108041) | function XMLText(parent, text) {
function every (line 108100) | function every(collection, predicate, thisArg) {
function arrayEvery (line 108112) | function arrayEvery(array, predicate) {
function baseAssign (line 108131) | function baseAssign(object, source, customizer) {
function baseCallback (line 108163) | function baseCallback(func, thisArg, argCount) {
function baseCopy (line 108185) | function baseCopy(source, object, props) {
function Object (line 108208) | function Object() {}
function baseEach (line 108228) | function baseEach(collection, iteratee) {
function baseEvery (line 108250) | function baseEvery(collection, predicate) {
function baseFor (line 108265) | function baseFor(object, iteratee, keysFunc) {
function baseForOwn (line 108287) | function baseForOwn(object, iteratee) {
function baseIsEqual (line 108297) | function baseIsEqual(value, other, customizer, isWhere, stackA, stackB) {
function baseIsEqualDeep (line 108335) | function baseIsEqualDeep(object, other, equalFunc, customizer, isWhere, ...
function baseIsFunction (line 108397) | function baseIsFunction(value) {
function baseIsMatch (line 108413) | function baseIsMatch(object, props, values, strictCompareFlags, customiz...
function baseMatches (line 108464) | function baseMatches(source) {
function baseMatchesProperty (line 108498) | function baseMatchesProperty(key, value) {
function baseProperty (line 108513) | function baseProperty(key) {
function baseToString (line 108535) | function baseToString(value) {
function bindCallback (line 108548) | function bindCallback(func, thisArg, argCount) {
function createAssigner (line 108581) | function createAssigner(assigner) {
function equalArrays (line 108620) | function equalArrays(array, other, equalFunc, customizer, isWhere, stack...
function equalByTag (line 108669) | function equalByTag(object, other, tag) {
function equalObjects (line 108702) | function equalObjects(object, other, equalFunc, customizer, isWhere, sta...
function isBindable (line 108768) | function isBindable(func) {
function isIndex (line 108791) | function isIndex(value, length) {
function isIterateeCall (line 108805) | function isIterateeCall(value, index, object) {
function isLength (line 108830) | function isLength(value) {
function isObjectLike (line 108838) | function isObjectLike(value) {
function isStrictComparable (line 108848) | function isStrictComparable(value) {
function shimKeys (line 108882) | function shimKeys(object) {
function toObject (line 108908) | function toObject(value) {
function isArguments (line 108928) | function isArguments(value) {
function isEmpty (line 108969) | function isEmpty(value) {
function isNative (line 109034) | function isNative(value) {
function isObject (line 109048) | function isObject(value) {
function isString (line 109068) | function isString(value) {
function isTypedArray (line 109126) | function isTypedArray(value) {
function create (line 109148) | function create(prototype, properties, guard) {
function keysIn (line 109197) | function keysIn(object) {
function escapeRegExp (line 109236) | function escapeRegExp(string) {
function identity (line 109292) | function identity(value) {
FILE: ionic-angular/official/aws/src/pages/about/about.ts
class AboutPage (line 7) | class AboutPage {
method constructor (line 9) | constructor() {
FILE: ionic-angular/official/aws/src/pages/account/account.ts
class AccountPage (line 14) | class AccountPage {
method constructor (line 24) | constructor(public navCtrl: NavController,
method refreshAvatar (line 42) | refreshAvatar() {
method dataURItoBlob (line 47) | dataURItoBlob(dataURI) {
method selectAvatar (line 57) | selectAvatar() {
method uploadFromFile (line 78) | uploadFromFile(event) {
method upload (line 89) | upload() {
FILE: ionic-angular/official/aws/src/pages/confirm/confirm.ts
class ConfirmPage (line 14) | class ConfirmPage {
method constructor (line 19) | constructor(public navCtrl: NavController, public navParams: NavParams) {
method confirm (line 23) | confirm() {
method resendCode (line 29) | resendCode() {
FILE: ionic-angular/official/aws/src/pages/confirmSignIn/confirmSignIn.ts
class ConfirmSignInPage (line 15) | class ConfirmSignInPage {
method constructor (line 20) | constructor(public navCtrl: NavController, public navParams: NavParams) {
method confirm (line 24) | confirm() {
method login (line 30) | login() {
FILE: ionic-angular/official/aws/src/pages/confirmSignUp/confirmSignUp.ts
class ConfirmSignUpPage (line 14) | class ConfirmSignUpPage {
method constructor (line 19) | constructor(public navCtrl: NavController, public navParams: NavParams) {
method confirm (line 23) | confirm() {
method resendCode (line 29) | resendCode() {
FILE: ionic-angular/official/aws/src/pages/login/login.ts
class LoginDetails (line 12) | class LoginDetails {
class LoginPage (line 21) | class LoginPage {
method constructor (line 25) | constructor(public navCtrl: NavController,
method login (line 30) | login() {
method signup (line 51) | signup() {
FILE: ionic-angular/official/aws/src/pages/settings/settings.ts
class SettingsPage (line 12) | class SettingsPage {
method constructor (line 17) | constructor(public app: App) {
method logout (line 20) | logout() {
FILE: ionic-angular/official/aws/src/pages/signup/signup.ts
class UserDetails (line 11) | class UserDetails {
class SignupPage (line 22) | class SignupPage {
method constructor (line 28) | constructor(public navCtrl: NavController,
method signup (line 33) | signup() {
method login (line 51) | login() {
FILE: ionic-angular/official/aws/src/pages/tabs/tabs.ts
class TabsPage (line 9) | class TabsPage {
method constructor (line 14) | constructor() {
FILE: ionic-angular/official/aws/src/pages/tasks-create/tasks-create.ts
class TasksCreatePage (line 8) | class TasksCreatePage {
method constructor (line 16) | constructor(public navCtrl: NavController,
method ionViewDidLoad (line 28) | ionViewDidLoad() {
method cancel (line 32) | cancel() {
method done (line 36) | done() {
FILE: ionic-angular/official/aws/src/pages/tasks/tasks.ts
class TasksPage (line 17) | class TasksPage {
method constructor (line 24) | constructor(public navCtrl: NavController,
method refreshData (line 36) | refreshData(refresher) {
method refreshTasks (line 41) | refreshTasks() {
method generateId (line 57) | generateId() {
method addTask (line 69) | addTask() {
method deleteTask (line 89) | deleteTask(task, index) {
FILE: ionic-angular/official/aws/src/providers/aws.dynamodb.ts
class DynamoDB (line 12) | class DynamoDB {
method constructor (line 14) | constructor() {
method getDocumentClient (line 17) | getDocumentClient() {
FILE: ionic-angular/official/blank/src/app/app.component.ts
class MyApp (line 10) | class MyApp {
method constructor (line 13) | constructor(platform: Platform, statusBar: StatusBar, splashScreen: Sp...
FILE: ionic-angular/official/blank/src/app/app.module.ts
class AppModule (line 30) | class AppModule {}
FILE: ionic-angular/official/blank/src/pages/home/home.ts
class HomePage (line 8) | class HomePage {
method constructor (line 10) | constructor(public navCtrl: NavController) {
FILE: ionic-angular/official/sidemenu/src/app/app.component.ts
class MyApp (line 12) | class MyApp {
method constructor (line 19) | constructor(public platform: Platform, public statusBar: StatusBar, pu...
method initializeApp (line 30) | initializeApp() {
method openPage (line 39) | openPage(page) {
FILE: ionic-angular/official/sidemenu/src/app/app.module.ts
class AppModule (line 34) | class AppModule {}
FILE: ionic-angular/official/sidemenu/src/pages/home/home.ts
class HomePage (line 8) | class HomePage {
method constructor (line 10) | constructor(public navCtrl: NavController) {
FILE: ionic-angular/official/sidemenu/src/pages/list/list.ts
class ListPage (line 8) | class ListPage {
method constructor (line 13) | constructor(public navCtrl: NavController, public navParams: NavParams) {
method itemTapped (line 31) | itemTapped(event, item) {
FILE: ionic-angular/official/super/src/app/app.component.ts
class MyApp (line 29) | class MyApp {
method constructor (line 48) | constructor(private translate: TranslateService, platform: Platform, s...
method initTranslate (line 58) | initTranslate() {
method openPage (line 84) | openPage(page) {
FILE: ionic-angular/official/super/src/app/app.module.ts
function createTranslateLoader (line 18) | function createTranslateLoader(http: HttpClient) {
function provideSettings (line 22) | function provideSettings(storage: Storage) {
class AppModule (line 70) | class AppModule { }
FILE: ionic-angular/official/super/src/mocks/providers/items.ts
class Items (line 6) | class Items {
method constructor (line 16) | constructor() {
method query (line 60) | query(params?: any) {
method add (line 78) | add(item: Item) {
method delete (line 82) | delete(item: Item) {
FILE: ionic-angular/official/super/src/models/item.ts
class Item (line 10) | class Item {
method constructor (line 12) | constructor(fields: any) {
type Item (line 22) | interface Item {
method constructor (line 12) | constructor(fields: any) {
FILE: ionic-angular/official/super/src/pages/cards/cards.module.ts
class CardsPageModule (line 19) | class CardsPageModule { }
FILE: ionic-angular/official/super/src/pages/cards/cards.ts
class CardsPage (line 9) | class CardsPage {
method constructor (line 12) | constructor(public navCtrl: NavController) {
FILE: ionic-angular/official/super/src/pages/content/content.module.ts
class ContentPageModule (line 19) | class ContentPageModule { }
FILE: ionic-angular/official/super/src/pages/content/content.ts
class ContentPage (line 9) | class ContentPage {
method constructor (line 11) | constructor(public navCtrl: NavController) { }
FILE: ionic-angular/official/super/src/pages/item-create/item-create.module.ts
class ItemCreatePageModule (line 19) | class ItemCreatePageModule { }
FILE: ionic-angular/official/super/src/pages/item-create/item-create.ts
class ItemCreatePage (line 11) | class ItemCreatePage {
method constructor (line 20) | constructor(public navCtrl: NavController, public viewCtrl: ViewContro...
method ionViewDidLoad (line 33) | ionViewDidLoad() {
method getPicture (line 37) | getPicture() {
method processWebImage (line 53) | processWebImage(event) {
method getProfileImageStyle (line 64) | getProfileImageStyle() {
method cancel (line 71) | cancel() {
method done (line 79) | done() {
FILE: ionic-angular/official/super/src/pages/item-detail/item-detail.module.ts
class ItemDetailPageModule (line 19) | class ItemDetailPageModule { }
FILE: ionic-angular/official/super/src/pages/item-detail/item-detail.ts
class ItemDetailPage (line 11) | class ItemDetailPage {
method constructor (line 14) | constructor(public navCtrl: NavController, navParams: NavParams, items...
FILE: ionic-angular/official/super/src/pages/list-master/list-master.module.ts
class ListMasterPageModule (line 19) | class ListMasterPageModule { }
FILE: ionic-angular/official/super/src/pages/list-master/list-master.ts
class ListMasterPage (line 12) | class ListMasterPage {
method constructor (line 15) | constructor(public navCtrl: NavController, public items: Items, public...
method ionViewDidLoad (line 22) | ionViewDidLoad() {
method addItem (line 29) | addItem() {
method deleteItem (line 42) | deleteItem(item) {
method openItem (line 49) | openItem(item: Item) {
FILE: ionic-angular/official/super/src/pages/login/login.module.ts
class LoginPageModule (line 19) | class LoginPageModule { }
FILE: ionic-angular/official/super/src/pages/login/login.ts
class LoginPage (line 13) | class LoginPage {
method constructor (line 25) | constructor(public navCtrl: NavController,
method doLogin (line 36) | doLogin() {
FILE: ionic-angular/official/super/src/pages/menu/menu.module.ts
class MenuPageModule (line 19) | class MenuPageModule { }
FILE: ionic-angular/official/super/src/pages/menu/menu.ts
type PageItem (line 4) | interface PageItem {
type PageList (line 8) | type PageList = PageItem[]
class MenuPage (line 15) | class MenuPage {
method constructor (line 23) | constructor(public navCtrl: NavController) {
method ionViewDidLoad (line 31) | ionViewDidLoad() {
method openPage (line 35) | openPage(page: PageItem) {
FILE: ionic-angular/official/super/src/pages/search/search.module.ts
class SearchPageModule (line 19) | class SearchPageModule { }
FILE: ionic-angular/official/super/src/pages/search/search.ts
class SearchPage (line 12) | class SearchPage {
method constructor (line 16) | constructor(public navCtrl: NavController, public navParams: NavParams...
method getItems (line 21) | getItems(ev) {
method openItem (line 35) | openItem(item: Item) {
FILE: ionic-angular/official/super/src/pages/settings/settings.module.ts
class SettingsPageModule (line 19) | class SettingsPageModule { }
FILE: ionic-angular/official/super/src/pages/settings/settings.ts
class SettingsPage (line 18) | class SettingsPage {
method constructor (line 37) | constructor(public navCtrl: NavController,
method _buildForm (line 44) | _buildForm() {
method ionViewDidLoad (line 68) | ionViewDidLoad() {
method ionViewWillEnter (line 73) | ionViewWillEnter() {
method ngOnChanges (line 92) | ngOnChanges() {
FILE: ionic-angular/official/super/src/pages/signup/signup.module.ts
class SignupPageModule (line 19) | class SignupPageModule { }
FILE: ionic-angular/official/super/src/pages/signup/signup.ts
class SignupPage (line 13) | class SignupPage {
method constructor (line 26) | constructor(public navCtrl: NavController,
method doSignup (line 36) | doSignup() {
FILE: ionic-angular/official/super/src/pages/tabs/tabs.module.ts
class TabsPageModule (line 19) | class TabsPageModule { }
FILE: ionic-angular/official/super/src/pages/tabs/tabs.ts
class TabsPage (line 12) | class TabsPage {
method constructor (line 21) | constructor(public navCtrl: NavController, public translateService: Tr...
FILE: ionic-angular/official/super/src/pages/tutorial/tutorial.module.ts
class TutorialPageModule (line 18) | class TutorialPageModule { }
FILE: ionic-angular/official/super/src/pages/tutorial/tutorial.ts
type Slide (line 6) | interface Slide {
class TutorialPage (line 17) | class TutorialPage {
method constructor (line 22) | constructor(public navCtrl: NavController, public menu: MenuController...
method startApp (line 53) | startApp() {
method onSlideChangeStart (line 60) | onSlideChangeStart(slider) {
method ionViewDidEnter (line 64) | ionViewDidEnter() {
method ionViewWillLeave (line 69) | ionViewWillLeave() {
FILE: ionic-angular/official/super/src/pages/welcome/welcome.module.ts
class WelcomePageModule (line 19) | class WelcomePageModule { }
FILE: ionic-angular/official/super/src/pages/welcome/welcome.ts
class WelcomePage (line 15) | class WelcomePage {
method constructor (line 17) | constructor(public navCtrl: NavController) { }
method login (line 19) | login() {
method signup (line 23) | signup() {
FILE: ionic-angular/official/super/src/providers/api/api.ts
class Api (line 8) | class Api {
method constructor (line 11) | constructor(public http: HttpClient) {
method get (line 14) | get(endpoint: string, params?: any, reqOpts?: any) {
method post (line 32) | post(endpoint: string, body: any, reqOpts?: any) {
method put (line 36) | put(endpoint: string, body: any, reqOpts?: any) {
method delete (line 40) | delete(endpoint: string, reqOpts?: any) {
method patch (line 44) | patch(endpoint: string, body: any, reqOpts?: any) {
FILE: ionic-angular/official/super/src/providers/items/items.ts
class Items (line 7) | class Items {
method constructor (line 9) | constructor(public api: Api) { }
method query (line 11) | query(params?: any) {
method add (line 15) | add(item: Item) {
method delete (line 18) | delete(item: Item) {
FILE: ionic-angular/official/super/src/providers/settings/settings.ts
class Settings (line 8) | class Settings {
method constructor (line 16) | constructor(public storage: Storage, defaults: any) {
method load (line 20) | load() {
method _mergeDefaults (line 33) | _mergeDefaults(defaults: any) {
method merge (line 42) | merge(settings: any) {
method setValue (line 49) | setValue(key: string, value: any) {
method setAll (line 54) | setAll(value: any) {
method getValue (line 58) | getValue(key: string) {
method save (line 65) | save() {
method allSettings (line 69) | get allSettings() {
FILE: ionic-angular/official/super/src/providers/user/user.ts
class User (line 27) | class User {
method constructor (line 30) | constructor(public api: Api) { }
method login (line 36) | login(accountInfo: any) {
method signup (line 56) | signup(accountInfo: any) {
method logout (line 74) | logout() {
method _loggedIn (line 81) | _loggedIn(resp) {
FILE: ionic-angular/official/tabs/src/app/app.component.ts
class MyApp (line 11) | class MyApp {
method constructor (line 14) | constructor(platform: Platform, statusBar: StatusBar, splashScreen: Sp...
FILE: ionic-angular/official/tabs/src/app/app.module.ts
class AppModule (line 40) | class AppModule {}
FILE: ionic-angular/official/tabs/src/pages/about/about.ts
class AboutPage (line 8) | class AboutPage {
method constructor (line 10) | constructor(public navCtrl: NavController) {
FILE: ionic-angular/official/tabs/src/pages/contact/contact.ts
class ContactPage (line 8) | class ContactPage {
method constructor (line 10) | constructor(public navCtrl: NavController) {
FILE: ionic-angular/official/tabs/src/pages/home/home.ts
class HomePage (line 8) | class HomePage {
method constructor (line 10) | constructor(public navCtrl: NavController) {
FILE: ionic-angular/official/tabs/src/pages/tabs/tabs.ts
class TabsPage (line 10) | class TabsPage {
method constructor (line 16) | constructor() {
FILE: ionic-angular/official/tutorial/src/app/app.component.ts
class MyApp (line 15) | class MyApp {
method constructor (line 22) | constructor(
method initializeApp (line 37) | initializeApp() {
method openPage (line 46) | openPage(page) {
FILE: ionic-angular/official/tutorial/src/app/app.module.ts
class AppModule (line 37) | class AppModule {}
FILE: ionic-angular/official/tutorial/src/pages/hello-ionic/hello-ionic.ts
class HelloIonicPage (line 7) | class HelloIonicPage {
method constructor (line 8) | constructor() {
FILE: ionic-angular/official/tutorial/src/pages/item-details/item-details.ts
class ItemDetailsPage (line 10) | class ItemDetailsPage {
method constructor (line 13) | constructor(public navCtrl: NavController, public navParams: NavParams) {
FILE: ionic-angular/official/tutorial/src/pages/list/list.ts
class ListPage (line 11) | class ListPage {
method constructor (line 15) | constructor(public navCtrl: NavController, public navParams: NavParams) {
method itemTapped (line 29) | itemTapped(event, item) {
FILE: ionic1/base/hooks/after_prepare/010_add_platform_class.js
function addPlatformBodyTag (line 16) | function addPlatformBodyTag(indexPath, platform) {
function findBodyTag (line 54) | function findBodyTag(html) {
function findClassAttr (line 61) | function findClassAttr(bodyTag) {
FILE: ionic1/base/www/lib/ionic/js/ionic-angular.js
function actionSheet (line 120) | function actionSheet(opts) {
function retain (line 368) | function retain() {
function release (line 379) | function release() {
function getElement (line 391) | function getElement() {
function preventClick (line 544) | function preventClick(ev) {
function addClickBlock (line 549) | function addClickBlock() {
function removeClickBlock (line 564) | function removeClickBlock() {
function getViewById (line 710) | function getViewById(viewId) {
function getBackView (line 714) | function getBackView(view) {
function getForwardView (line 718) | function getForwardView(view) {
function getHistoryById (line 722) | function getHistoryById(historyId) {
function getHistory (line 726) | function getHistory(scope) {
function getParentHistoryObj (line 742) | function getParentHistoryObj(scope) {
function setNavViews (line 756) | function setNavViews(viewId) {
function getCurrentStateId (line 762) | function getCurrentStateId() {
function getCurrentStateParams (line 779) | function getCurrentStateParams() {
function isAbstractTag (line 1417) | function isAbstractTag(ele) {
function canSwipeBack (line 1421) | function canSwipeBack(ele, viewLocals) {
function onHardwareBackButton (line 1496) | function onHardwareBackButton(e) {
function setStyles (line 1924) | function setStyles(ele, opacity, x, boxShadowOpacity) {
function setStyles (line 1959) | function setStyles(ctrl, opacity, titleX, backTextX) {
function enter (line 1975) | function enter(ctrlA, ctrlB, step) {
function leave (line 1982) | function leave(ctrlA, ctrlB, step) {
function setStyles (line 2014) | function setStyles(ele, x, opacity) {
function setStyles (line 2046) | function setStyles(ctrl, opacity) {
function setPlatformConfig (line 2092) | function setPlatformConfig(platformName, platformConfigs) {
function addConfig (line 2103) | function addConfig(configObj, platformObj) {
function createConfig (line 2121) | function createConfig(configObj, providerObj, platformPath) {
function stringObj (line 2152) | function stringObj(obj, str) {
function getLoader (line 2301) | function getLoader() {
function showLoader (line 2388) | function showLoader(options) {
function hideLoader (line 2409) | function hideLoader() {
function positionView (line 3158) | function positionView(target, popoverEle) {
function createPopup (line 3575) | function createPopup(options) {
function onHardwareBackButton (line 3659) | function onHardwareBackButton() {
function showPopup (line 3664) | function showPopup(options) {
function focusInput (line 3728) | function focusInput(element) {
function showAlert (line 3735) | function showAlert(opts) {
function showConfirm (line 3747) | function showConfirm(opts) {
function showPrompt (line 3761) | function showPrompt(opts) {
function getStyle (line 3810) | function getStyle(el, cssprop) {
function isStaticPositioned (line 3824) | function isStaticPositioned(element) {
function $ionicTemplateCache (line 4416) | function $ionicTemplateCache(templates) {
function run (line 4432) | function run() {
function fetchTemplate (line 4502) | function fetchTemplate(url) {
function loadAndCompile (line 4509) | function loadAndCompile(options) {
function warn (line 4561) | function warn(oldMethod, newMethod) {
function onReflow (line 4814) | function onReflow() {
function completeOnTransitionEnd (line 4835) | function completeOnTransitionEnd(ev) {
function transitionComplete (line 4839) | function transitionComplete() {
function cancelOnTransitionEnd (line 4873) | function cancelOnTransitionEnd(ev) {
function cancelTransition (line 4877) | function cancelTransition() {
function getViewElementIdentifier (line 5060) | function getViewElementIdentifier(locals, view) {
function viewState (line 5066) | function viewState(locals) {
function getTransitionData (line 5070) | function getTransitionData(viewLocals, enteringEle, direction, view) {
function getViewData (line 5092) | function getViewData(view) {
function navViewAttr (line 5103) | function navViewAttr(ele, value) {
function destroyViewEle (line 5111) | function destroyViewEle(ele) {
function compareStatePrefixes (line 5124) | function compareStatePrefixes(enteringStateName, exitingStateName) {
function getScopeForElement (line 5139) | function getScopeForElement(element, stateData) {
function aggregateNavViewChildren (line 5173) | function aggregateNavViewChildren(element) {
function isIOS9UIWebView (line 5236) | function isIOS9UIWebView(userAgent) {
function applyIOS9Shim (line 5240) | function applyIOS9Shim(browser) {
function $LocationDecorator (line 5287) | function $LocationDecorator($location, $timeout) {
function getEle (line 5681) | function getEle(className) {
function onInfinite (line 5727) | function onInfinite() {
function finishInfiniteScroll (line 5735) | function finishInfiniteScroll() {
function checkInfiniteBounds (line 5751) | function checkInfiniteBounds() {
function calculateMaxValue (line 5811) | function calculateMaxValue(maximum) {
function positionItem (line 6098) | function positionItem(ele, itemType) {
function transitionEnd (line 6265) | function transitionEnd() {
function deprecatedWarning (line 6405) | function deprecatedWarning(oldMethod, newMethod) {
function createNavElement (line 6412) | function createNavElement(type) {
function getOnScreenHeaderBar (line 6419) | function getOnScreenHeaderBar() {
function getOffScreenHeaderBar (line 6426) | function getOffScreenHeaderBar() {
function navBarAttr (line 6433) | function navBarAttr(ctrl, val) {
function navSwipeAttr (line 6437) | function navSwipeAttr(val) {
function onTabsLeave (line 6654) | function onTabsLeave(ev, data) {
function onDragStart (line 6811) | function onDragStart(ev) {
function onDrag (line 6851) | function onDrag(ev) {
function onRelease (line 6872) | function onRelease(ev) {
function getDragX (line 6920) | function getDragX(ev) {
function getSwipeCompletion (line 6924) | function getSwipeCompletion(dragX) {
function navSwipeAttr (line 6939) | function navSwipeAttr(val) {
function onTabsTop (line 6944) | function onTabsTop(ev, isTabsTop) {
function onBarSubheader (line 6949) | function onBarSubheader(ev, isBarSubheader) {
function getAssociatedNavBarCtrl (line 6954) | function getAssociatedNavBarCtrl() {
function handleMousedown (line 7008) | function handleMousedown(e) {
function handleTouchstart (line 7017) | function handleTouchstart(e) {
function handleTouchend (line 7026) | function handleTouchend() {
function handleTouchmove (line 7055) | function handleTouchmove(e) {
function handleScroll (line 7133) | function handleScroll(e) {
function overscroll (line 7138) | function overscroll(val) {
function nativescroll (line 7143) | function nativescroll(target, newScrollTop) {
function setScrollLock (line 7152) | function setScrollLock(enabled) {
function scrollTo (line 7192) | function scrollTo(Y, duration, callback) {
function destroy (line 7274) | function destroy() {
function activate (line 7303) | function activate() {
function deactivate (line 7308) | function deactivate() {
function start (line 7317) | function start() {
function show (line 7329) | function show() {
function hide (line 7334) | function hide() {
function tail (line 7339) | function tail() {
function createSvgElement (line 8051) | function createSvgElement(tagName, data, parent, spinnerName) {
function setSvgAttribute (line 8076) | function setSvgAttribute(ele, k, v) {
function animationValues (line 8080) | function animationValues(strValues, i) {
function run (line 8363) | function run() {
function easeInOutCubic (line 8408) | function easeInOutCubic(t, c) {
function afterEnter (line 8683) | function afterEnter() {
function titleUpdate (line 8706) | function titleUpdate(newTitle) {
function deregisterFns (line 8714) | function deregisterFns() {
function generateNavBarItem (line 8723) | function generateNavBarItem(html) {
function attrTrue (line 8731) | function attrTrue(key) {
function CollectionRepeatDirective (line 8940) | function CollectionRepeatDirective($ionicCollectionManager, $parse, $win...
function RepeatManagerFactory (line 9246) | function RepeatManagerFactory($rootScope, $window, $$rAF) {
function prelink (line 9921) | function prelink($scope, $element, $attr) {
function checkAsideExpose (line 10086) | function checkAsideExpose() {
function onResize (line 10092) | function onResize() {
function gestureDirective (line 10386) | function gestureDirective(directiveName) {
function tapScrollToTopDirective (line 10489) | function tapScrollToTopDirective() { //eslint-disable-line no-unused-vars
function headerFooterBarDirective (line 10529) | function headerFooterBarDirective(isHeader) {
function stopPropagation (line 10952) | function stopPropagation(ev) {
function init (line 10978) | function init() {
function stopPropagation (line 11057) | function stopPropagation(e) {
function onShow (line 11213) | function onShow(e) {
function onHide (line 11227) | function onHide() {
function keyboardAttachGetClientHeight (line 11249) | function keyboardAttachGetClientHeight(element) {
function init (line 11358) | function init() {
function hasIconClass (line 11699) | function hasIconClass(ele) {
function updateView (line 12204) | function updateView(firstTime) {
function eventStopPropagation (line 12270) | function eventStopPropagation(e) {
function prelink (line 12574) | function prelink($scope, $element, $attr) {
function prelink (line 12750) | function prelink($scope, $element, $attr, sideMenuCtrl) {
function prelink (line 13036) | function prelink($scope, $element, $attrs, ctrl) {
function freezeAllScrolls (line 13160) | function freezeAllScrolls(shouldFreeze) {
function getPager (line 13237) | function getPager() {
function attrStr (line 13743) | function attrStr(k, v) {
function selectIfMatchesState (line 13831) | function selectIfMatchesState() {
function tabSelected (line 13843) | function tabSelected(isSelected) {
function destroyTab (line 13878) | function destroyTab() {
function prelink (line 14042) | function prelink($scope, $element, $attr, tabsCtrl) {
function postLink (line 14084) | function postLink($scope, $element, $attr, tabsCtrl) {
FILE: ionic1/base/www/lib/ionic/js/ionic.bundle.js
function trueFn (line 38) | function trueFn() { return true; }
function DelegateInstance (line 58) | function DelegateInstance(instances, handle) {
function DelegateService (line 72) | function DelegateService() {
function instanceMethodCaller (line 95) | function instanceMethodCaller(methodName) {
function domReady (line 138) | function domReady() {
function setup (line 698) | function setup() {
function getParameterByName (line 2040) | function getParameterByName(name) {
function verifyPlatformReady (line 2460) | function verifyPlatformReady() {
function onWindowLoad (line 2469) | function onWindowLoad() {
function onPlatformReady (line 2490) | function onPlatformReady() {
function update (line 2583) | function update(fn) {
function tapEventListener (line 2924) | function tapEventListener(type, enable, useCapture) {
function tapClick (line 2932) | function tapClick(e) {
function triggerMouseEvent (line 2948) | function triggerMouseEvent(type, ele, x, y) {
function tapClickGateKeeper (line 2956) | function tapClickGateKeeper(e) {
function tapMouseDown (line 2978) | function tapMouseDown(e) {
function tapMouseUp (line 3007) | function tapMouseUp(e) {
function tapMouseMove (line 3025) | function tapMouseMove(e) {
function tapTouchStart (line 3036) | function tapTouchStart(e) {
function tapTouchEnd (line 3063) | function tapTouchEnd(e) {
function tapTouchMove (line 3080) | function tapTouchMove(e) {
function tapTouchCancel (line 3089) | function tapTouchCancel() {
function tapEnableTouchEvents (line 3095) | function tapEnableTouchEvents() {
function tapIgnoreEvent (line 3103) | function tapIgnoreEvent(e) {
function tapHandleFocus (line 3121) | function tapHandleFocus(ele) {
function tapFocusOutActive (line 3156) | function tapFocusOutActive() {
function tapFocusIn (line 3165) | function tapFocusIn(e) {
function tapFocusOut (line 3187) | function tapFocusOut() {
function tapActiveElement (line 3192) | function tapActiveElement(ele) {
function tapHasPointerMoved (line 3199) | function tapHasPointerMoved(endEvent) {
function tapContainingElement (line 3215) | function tapContainingElement(ele, allowSelf) {
function tapTargetElement (line 3225) | function tapTargetElement(ele) {
function isSelectOrOption (line 3238) | function isSelectOrOption(tagName){
function clear (line 3314) | function clear() {
function activateElements (line 3322) | function activateElements() {
function deactivateElements (line 3333) | function deactivateElements() {
function keyboardInit (line 3817) | function keyboardInit() {
function keyboardNativeShow (line 3847) | function keyboardNativeShow(e) {
function keyboardFocusIn (line 3876) | function keyboardFocusIn(e) {
function keyboardFocusOut (line 3944) | function keyboardFocusOut() {
function keyboardOrientationChange (line 3985) | function keyboardOrientationChange() {
function keyboardOnKeyDown (line 4017) | function keyboardOnKeyDown(e) {
function keyboardPreventDefault (line 4027) | function keyboardPreventDefault(e) {
function keyboardWaitForResize (line 4051) | function keyboardWaitForResize(callback, isOpening) {
function keyboardHide (line 4115) | function keyboardHide() {
function keyboardShow (line 4156) | function keyboardShow() {
function keyboardGetHeight (line 4196) | function keyboardGetHeight() {
function isPortraitViewportHeight (line 4235) | function isPortraitViewportHeight(viewportHeight) {
function isLandscapeViewportHeight (line 4241) | function isLandscapeViewportHeight(viewportHeight) {
function keyboardUpdateViewportHeight (line 4247) | function keyboardUpdateViewportHeight() {
function keyboardInitViewportHeight (line 4271) | function keyboardInitViewportHeight() {
function getViewportHeight (line 4289) | function getViewportHeight() {
function keyboardHasPlugin (line 4306) | function keyboardHasPlugin() {
function viewportLoadTag (line 4364) | function viewportLoadTag() {
function viewportUpdate (line 4387) | function viewportUpdate() {
function viewportTagUpdate (line 4471) | function viewportTagUpdate() {
function getEventTouches (line 5278) | function getEventTouches(e) {
function animateScroll (line 7227) | function animateScroll(Y, X) {
function makeInvisible (line 7674) | function makeInvisible() {
function setup (line 8358) | function setup() {
function prev (line 8416) | function prev(slideSpeed) {
function next (line 8423) | function next(slideSpeed) {
function circle (line 8430) | function circle(index) {
function slide (line 8437) | function slide(to, slideSpeed) {
function move (line 8485) | function move(index, dist, speed) {
function translate (line 8492) | function translate(index, dist, speed) {
function animate (line 8512) | function animate(from, to, speed) {
function begin (line 8551) | function begin() {
function stop (line 8557) | function stop() {
function isH (line 9335) | function isH() {
function round (line 9397) | function round(a) {
function onReady (line 9417) | function onReady () {
function _onReady (line 9441) | function _onReady() {
function autoplay (line 9460) | function autoplay() {
function forceSetTranslate (line 9925) | function forceSetTranslate() {
function findElementInEvent (line 10114) | function findElementInEvent(e, selector) {
function initObserver (line 10968) | function initObserver(target, options) {
function setControlledTranslate (line 11754) | function setControlledTranslate(c) {
function setControlledTransition (line 11794) | function setControlledTransition(c) {
function handleKeyboard (line 11849) | function handleKeyboard(e) {
function handleMousewheel (line 11944) | function handleMousewheel(e) {
function setParallaxTransform (line 12053) | function setParallaxTransform(el, progress) {
function normalizeEventName (line 12137) | function normalizeEventName (eventName) {
function handleLiveEvent (line 12666) | function handleLiveEvent(e) {
function proxy (line 12734) | function proxy(e) {
function fireCallBack (line 12758) | function fireCallBack(e) {
function addLibraryPlugin (line 13167) | function addLibraryPlugin(lib) {
function fireCallBack (line 13183) | function fireCallBack(e) {
function minErr (line 13413) | function minErr(module, ErrorConstructor) {
function isArrayLike (line 13624) | function isArrayLike(obj) {
function forEach (line 13681) | function forEach(obj, iterator, context) {
function forEachSorted (line 13725) | function forEachSorted(obj, iterator, context) {
function reverseParams (line 13739) | function reverseParams(iteratorFn) {
function nextUid (line 13753) | function nextUid() {
function setHashKey (line 13763) | function setHashKey(obj, h) {
function baseExtend (line 13772) | function baseExtend(dst, objs, deep) {
function extend (line 13824) | function extend(dst) {
function merge (line 13847) | function merge(dst) {
function toInt (line 13853) | function toInt(str) {
function inherit (line 13858) | function inherit(parent, extra) {
function noop (line 13878) | function noop() {}
function identity (line 13900) | function identity($) {return $;}
function valueFn (line 13904) | function valueFn(value) {return function valueRef() {return value;};}
function hasCustomToString (line 13906) | function hasCustomToString(obj) {
function isUndefined (line 13923) | function isUndefined(value) {return typeof value === 'undefined';}
function isDefined (line 13938) | function isDefined(value) {return typeof value !== 'undefined';}
function isObject (line 13954) | function isObject(value) {
function isBlankObject (line 13965) | function isBlankObject(value) {
function isString (line 13982) | function isString(value) {return typeof value === 'string';}
function isNumber (line 14003) | function isNumber(value) {return typeof value === 'number';}
function isDate (line 14018) | function isDate(value) {
function isFunction (line 14049) | function isFunction(value) {return typeof value === 'function';}
function isRegExp (line 14059) | function isRegExp(value) {
function isWindow (line 14071) | function isWindow(obj) {
function isScope (line 14076) | function isScope(obj) {
function isFile (line 14081) | function isFile(obj) {
function isFormData (line 14086) | function isFormData(obj) {
function isBlob (line 14091) | function isBlob(obj) {
function isBoolean (line 14096) | function isBoolean(value) {
function isPromiseLike (line 14101) | function isPromiseLike(obj) {
function isTypedArray (line 14107) | function isTypedArray(value) {
function isArrayBuffer (line 14111) | function isArrayBuffer(obj) {
function isElement (line 14141) | function isElement(node) {
function makeMap (line 14151) | function makeMap(str) {
function nodeName_ (line 14160) | function nodeName_(element) {
function includes (line 14164) | function includes(array, obj) {
function arrayRemove (line 14168) | function arrayRemove(array, value) {
function copy (line 14234) | function copy(source, destination) {
function shallowCopy (line 14376) | function shallowCopy(src, dst) {
function equals (line 14426) | function equals(o1, o2) {
function noUnsafeEval (line 14491) | function noUnsafeEval() {
function concat (line 14556) | function concat(array1, array2, index) {
function sliceArgs (line 14560) | function sliceArgs(args, startIndex) {
function bind (line 14584) | function bind(self, fn) {
function toJsonReplacer (line 14605) | function toJsonReplacer(key, value) {
function toJson (line 14637) | function toJson(obj, pretty) {
function fromJson (line 14658) | function fromJson(json) {
function timezoneToOffset (line 14666) | function timezoneToOffset(timezone, fallback) {
function addDateMinutes (line 14674) | function addDateMinutes(date, minutes) {
function convertTimezoneToLocal (line 14681) | function convertTimezoneToLocal(date, timezone, reverse) {
function startingTag (line 14692) | function startingTag(element) {
function tryDecodeURIComponent (line 14722) | function tryDecodeURIComponent(value) {
function parseKeyValue (line 14735) | function parseKeyValue(/**string*/keyValue) {
function toKeyValue (line 14762) | function toKeyValue(obj) {
function encodeUriSegment (line 14790) | function encodeUriSegment(val) {
function encodeUriQuery (line 14809) | function encodeUriQuery(val, pctEncodeSpaces) {
function getNgAttribute (line 14821) | function getNgAttribute(element, ngAttr) {
function angularInit (line 14966) | function angularInit(element, bootstrap) {
function bootstrap (line 15054) | function bootstrap(element, modules, config) {
function reloadWithDebugInfo (line 15132) | function reloadWithDebugInfo() {
function getTestability (line 15145) | function getTestability(rootElement) {
function snake_case (line 15155) | function snake_case(name, separator) {
function bindJQuery (line 15163) | function bindJQuery() {
function assertArg (line 15217) | function assertArg(arg, name, reason) {
function assertArgFn (line 15224) | function assertArgFn(arg, name, acceptArrayAnnotation) {
function assertNotHasOwnProperty (line 15239) | function assertNotHasOwnProperty(name, context) {
function getter (line 15253) | function getter(obj, path, bindFnToScope) {
function getBlockNodes (line 15277) | function getBlockNodes(nodes) {
function createMap (line 15307) | function createMap() {
function setupModuleLoader (line 15327) | function setupModuleLoader(window) {
function serializeObject (line 15682) | function serializeObject(obj) {
function toDebugString (line 15697) | function toDebugString(obj) {
function publishExternalAPI (line 15829) | function publishExternalAPI(angular) {
function jqNextId (line 16105) | function jqNextId() { return ++jqId; }
function camelCase (line 16118) | function camelCase(name) {
function jqLiteIsTextNode (line 16146) | function jqLiteIsTextNode(html) {
function jqLiteAcceptsData (line 16150) | function jqLiteAcceptsData(node) {
function jqLiteHasData (line 16157) | function jqLiteHasData(node) {
function jqLiteCleanData (line 16164) | function jqLiteCleanData(nodes) {
function jqLiteBuildFragment (line 16170) | function jqLiteBuildFragment(html, context) {
function jqLiteParseHTML (line 16207) | function jqLiteParseHTML(html, context) {
function jqLiteWrapNode (line 16222) | function jqLiteWrapNode(node, wrapper) {
function JQLite (line 16241) | function JQLite(element) {
function jqLiteClone (line 16266) | function jqLiteClone(element) {
function jqLiteDealoc (line 16270) | function jqLiteDealoc(element, onlyDescendants) {
function jqLiteOff (line 16281) | function jqLiteOff(element, type, fn, unsupported) {
function jqLiteRemoveData (line 16319) | function jqLiteRemoveData(element, name) {
function jqLiteExpandoStore (line 16341) | function jqLiteExpandoStore(element, createIfNecessary) {
function jqLiteData (line 16354) | function jqLiteData(element, key, value) {
function jqLiteHasClass (line 16380) | function jqLiteHasClass(element, selector) {
function jqLiteRemoveClass (line 16386) | function jqLiteRemoveClass(element, cssClasses) {
function jqLiteAddClass (line 16398) | function jqLiteAddClass(element, cssClasses) {
function jqLiteAddNodes (line 16415) | function jqLiteAddNodes(root, elements) {
function jqLiteController (line 16441) | function jqLiteController(element, name) {
function jqLiteInheritedData (line 16445) | function jqLiteInheritedData(element, name, value) {
function jqLiteEmpty (line 16465) | function jqLiteEmpty(element) {
function jqLiteRemove (line 16472) | function jqLiteRemove(element, keepData) {
function jqLiteDocumentLoaded (line 16479) | function jqLiteDocumentLoaded(action, win) {
function trigger (line 16499) | function trigger() {
function getBooleanAttrName (line 16553) | function getBooleanAttrName(element, name) {
function getAliasedAttrName (line 16561) | function getAliasedAttrName(name) {
function getText (line 16654) | function getText(element, value) {
function createEventHandler (line 16739) | function createEventHandler(element, events) {
function defaultHandlerWrapper (line 16791) | function defaultHandlerWrapper(element, event, handler) {
function specialMouseHandlerWrapper (line 16795) | function specialMouseHandlerWrapper(target, event, handler) {
function $$jqLiteProvider (line 17042) | function $$jqLiteProvider() {
function hashKey (line 17073) | function hashKey(obj, nextUidFn) {
function HashMap (line 17096) | function HashMap(array, isolatedUid) {
function extractArgs (line 17209) | function extractArgs(fn) {
function anonFn (line 17215) | function anonFn(fn) {
function annotate (line 17225) | function annotate(fn, strictDi, name) {
function createInjector (line 17772) | function createInjector(modulesToLoad, strictDi) {
function $AnchorScrollProvider (line 18041) | function $AnchorScrollProvider() {
function mergeClasses (line 18308) | function mergeClasses(a,b) {
function extractElementNode (line 18317) | function extractElementNode(element) {
function splitClasses (line 18326) | function splitClasses(classes) {
function prepareAnimateOptions (line 18351) | function prepareAnimateOptions(options) {
function updateData (line 18396) | function updateData(data, classes, value) {
function handleCSSClassChanges (line 18411) | function handleCSSClassChanges() {
function addRemoveClassesPostDigest (line 18440) | function addRemoveClassesPostDigest(element, add, remove) {
function domInsert (line 18554) | function domInsert(element, parentElement, afterElement) {
function waitForTick (line 18901) | function waitForTick(fn) {
function next (line 18936) | function next() {
function onProgress (line 18960) | function onProgress(response) {
function AnimateRunner (line 18968) | function AnimateRunner(host) {
function run (line 19124) | function run() {
function applyAnimationContents (line 19135) | function applyAnimationContents() {
function Browser (line 19176) | function Browser(window, document, $log, $sniffer) {
function $BrowserProvider (line 19504) | function $BrowserProvider() {
function $CacheFactoryProvider (line 19592) | function $CacheFactoryProvider() {
function $TemplateCacheProvider (line 19907) | function $TemplateCacheProvider() {
function $CompileProvider (line 20766) | function $CompileProvider($provide, $$sanitizeUriProvider) {
function directiveNormalize (line 23161) | function directiveNormalize(name) {
function nodesetLinkingFn (line 23210) | function nodesetLinkingFn(
function directiveLinkingFn (line 23217) | function directiveLinkingFn(
function tokenDifference (line 23225) | function tokenDifference(str1, str2) {
function removeComments (line 23241) | function removeComments(jqNodes) {
function identifierForController (line 23262) | function identifierForController(controller, ident) {
function $ControllerProvider (line 23281) | function $ControllerProvider() {
function $DocumentProvider (line 23463) | function $DocumentProvider() {
function $ExceptionHandlerProvider (line 23509) | function $ExceptionHandlerProvider() {
function serializeValue (line 23555) | function serializeValue(v) {
function $HttpParamSerializerProvider (line 23563) | function $HttpParamSerializerProvider() {
function $HttpParamSerializerJQLikeProvider (line 23600) | function $HttpParamSerializerJQLikeProvider() {
function defaultHttpResponseTransform (line 23672) | function defaultHttpResponseTransform(data, headers) {
function isJsonLike (line 23688) | function isJsonLike(str) {
function parseHeaders (line 23699) | function parseHeaders(headers) {
function headersGetter (line 23735) | function headersGetter(headers) {
function transformData (line 23765) | function transformData(data, headers, status, fns) {
function isSuccess (line 23778) | function isSuccess(status) {
function $HttpProvider (line 23789) | function $HttpProvider() {
function $xhrFactoryProvider (line 24891) | function $xhrFactoryProvider() {
function $HttpBackendProvider (line 24916) | function $HttpBackendProvider() {
function createHttpBackend (line 24922) | function createHttpBackend($browser, createXhr, $browserDefer, callbacks...
function $InterpolateProvider (line 25124) | function $InterpolateProvider() {
function $IntervalProvider (line 25449) | function $IntervalProvider() {
function encodePath (line 25670) | function encodePath(path) {
function parseAbsoluteUrl (line 25681) | function parseAbsoluteUrl(absoluteUrl, locationObj) {
function parseAppUrl (line 25690) | function parseAppUrl(relativeUrl, locationObj) {
function beginsWith (line 25715) | function beginsWith(begin, whole) {
function stripHash (line 25722) | function stripHash(url) {
function trimEmptyHash (line 25727) | function trimEmptyHash(url) {
function stripFile (line 25732) | function stripFile(url) {
function serverBase (line 25737) | function serverBase(url) {
function LocationHtml5Url (line 25751) | function LocationHtml5Url(appBase, appBaseNoFile, basePrefix) {
function LocationHashbangUrl (line 25830) | function LocationHashbangUrl(appBase, appBaseNoFile, hashPrefix) {
function LocationHashbangInHtml5Url (line 25942) | function LocationHashbangInHtml5Url(appBase, appBaseNoFile, hashPrefix) {
function locationGetter (line 26306) | function locationGetter(property) {
function locationGetterSetter (line 26313) | function locationGetterSetter(property, preprocess) {
function $LocationProvider (line 26359) | function $LocationProvider() {
function $LogProvider (line 26693) | function $LogProvider() {
function ensureSafeMemberName (line 26849) | function ensureSafeMemberName(name, fullExpression) {
function getStringValue (line 26860) | function getStringValue(name) {
function ensureSafeObject (line 26878) | function ensureSafeObject(obj, fullExpression) {
function ensureSafeFunction (line 26909) | function ensureSafeFunction(obj, fullExpression) {
function ensureSafeAssignContext (line 26923) | function ensureSafeAssignContext(obj, fullExpression) {
function ifDefined (line 27436) | function ifDefined(v, d) {
function plusFn (line 27440) | function plusFn(l, r) {
function isStateless (line 27446) | function isStateless($filter, filterName) {
function findConstantAndWatchExpressions (line 27451) | function findConstantAndWatchExpressions(ast, $filter) {
function getInputs (line 27559) | function getInputs(body) {
function isAssignable (line 27567) | function isAssignable(ast) {
function assignableAST (line 27571) | function assignableAST(ast) {
function isLiteral (line 27577) | function isLiteral(ast) {
function isConstant (line 27585) | function isConstant(ast) {
function ASTCompiler (line 27589) | function ASTCompiler(astBuilder, $filter) {
function ASTInterpreter (line 28088) | function ASTInterpreter(astBuilder, $filter) {
function isPossiblyDangerousMemberName (line 28488) | function isPossiblyDangerousMemberName(name) {
function getValueOf (line 28494) | function getValueOf(value) {
function $ParseProvider (line 28549) | function $ParseProvider() {
function $QProvider (line 29036) | function $QProvider() {
function $$QProvider (line 29045) | function $$QProvider() {
function qFactory (line 29061) | function qFactory(nextTick, exceptionHandler) {
function $$RAFProvider (line 29414) | function $$RAFProvider() { //rAF
function $RootScopeProvider (line 29511) | function $RootScopeProvider() {
function $$SanitizeUriProvider (line 30830) | function $$SanitizeUriProvider() {
function adjustMatcher (line 30921) | function adjustMatcher(matcher) {
function adjustMatchers (line 30949) | function adjustMatchers(matchers) {
function $SceDelegateProvider (line 31027) | function $SceDelegateProvider() {
function $SceProvider (line 31564) | function $SceProvider() {
function $SnifferProvider (line 31976) | function $SnifferProvider() {
function $TemplateRequestProvider (line 32064) | function $TemplateRequestProvider() {
function $$TestabilityProvider (line 32162) | function $$TestabilityProvider() {
function $TimeoutProvider (line 32277) | function $TimeoutProvider() {
function urlResolve (line 32428) | function urlResolve(url) {
function urlIsSameOrigin (line 32462) | function urlIsSameOrigin(requestUrl) {
function $WindowProvider (line 32509) | function $WindowProvider() {
function $$CookieReader (line 32522) | function $$CookieReader($document) {
function $$CookieReaderProvider (line 32564) | function $$CookieReaderProvider() {
function $FilterProvider (line 32668) | function $FilterProvider($provide) {
function filterFilter (line 32858) | function filterFilter() {
function createPredicateFn (line 32895) | function createPredicateFn(expression, comparator, matchAgainstAnyProp) {
function deepCompare (line 32932) | function deepCompare(actual, expected, comparator, matchAgainstAnyProp, ...
function getTypeForFilter (line 32982) | function getTypeForFilter(val) {
function currencyFilter (line 33043) | function currencyFilter($locale) {
function numberFilter (line 33115) | function numberFilter($locale) {
function parse (line 33140) | function parse(numStr) {
function roundNumber (line 33195) | function roundNumber(parsedNumber, fractionSize, minFrac, maxFrac) {
function formatNumber (line 33270) | function formatNumber(number, pattern, groupSep, decimalSep, fractionSiz...
function padNumber (line 33336) | function padNumber(num, digits, trim, negWrap) {
function dateGetter (line 33355) | function dateGetter(name, size, offset, trim, negWrap) {
function dateStrGetter (line 33367) | function dateStrGetter(name, shortForm, standAlone) {
function timeZoneGetter (line 33377) | function timeZoneGetter(date, formats, offset) {
function getFirstThursdayOfYear (line 33387) | function getFirstThursdayOfYear(year) {
function getThursdayThisWeek (line 33395) | function getThursdayThisWeek(datetime) {
function weekGetter (line 33401) | function weekGetter(size) {
function ampmGetter (line 33413) | function ampmGetter(date, formats) {
function eraGetter (line 33417) | function eraGetter(date, formats) {
function longEraGetter (line 33421) | function longEraGetter(date, formats) {
function dateFilter (line 33557) | function dateFilter($locale) {
function jsonFilter (line 33664) | function jsonFilter() {
function limitToFilter (line 33793) | function limitToFilter() {
function orderByFilter (line 34015) | function orderByFilter($parse) {
function ngDirective (line 34136) | function ngDirective(directive) {
function defaultLinkFn (line 34515) | function defaultLinkFn(scope, element, attr) {
function nullFormRenameControl (line 34617) | function nullFormRenameControl(control, name) {
function FormController (line 34665) | function FormController(element, attrs, $scope, $animate, $interpolate) {
function getSetter (line 35139) | function getSetter(expression) {
function stringBasedInputType (line 36246) | function stringBasedInputType(ctrl) {
function textInputType (line 36252) | function textInputType(scope, element, attr, ctrl, $sniffer, $browser) {
function baseInputType (line 36257) | function baseInputType(scope, element, attr, ctrl, $sniffer, $browser) {
function weekParser (line 36367) | function weekParser(isoWeek, existingDate) {
function createDateParser (line 36399) | function createDateParser(regexp, mapping) {
function createDateInputType (line 36449) | function createDateInputType(type, regexp, parseDate, format) {
function badInputChecker (line 36521) | function badInputChecker(scope, element, attr, ctrl) {
function numberInputType (line 36532) | function numberInputType(scope, element, attr, ctrl, $sniffer, $browser) {
function urlInputType (line 36586) | function urlInputType(scope, element, attr, ctrl, $sniffer, $browser) {
function emailInputType (line 36599) | function emailInputType(scope, element, attr, ctrl, $sniffer, $browser) {
function radioInputType (line 36612) | function radioInputType(scope, element, attr, ctrl) {
function parseConstantExpr (line 36634) | function parseConstantExpr($parse, context, name, expression, fallback) {
function checkboxInputType (line 36647) | function checkboxInputType(scope, element, attr, ctrl, $sniffer, $browse...
function classDirective (line 37230) | function classDirective(name, selector) {
function processParseErrors (line 39830) | function processParseErrors() {
function processSyncValidators (line 39850) | function processSyncValidators() {
function processAsyncValidators (line 39866) | function processAsyncValidators() {
function setValidity (line 39892) | function setValidity(name, isValid) {
function validationDone (line 39898) | function validationDone(allValid) {
function writeToModelIfNeeded (line 39978) | function writeToModelIfNeeded() {
function addSetValidityMethod (line 40554) | function addSetValidityMethod(context) {
function isObjectEmpty (line 40648) | function isObjectEmpty(obj) {
function parseOptionsExpression (line 40940) | function parseOptionsExpression(optionsExp, selectElement, scope) {
function ngOptionsPostLink (line 41102) | function ngOptionsPostLink(scope, selectElement, attr, ctrls) {
function updateElementText (line 41690) | function updateElementText(newText) {
function ngTranscludeCloneAttachFn (line 43016) | function ngTranscludeCloneAttachFn(clone) {
function chromeHack (line 43088) | function chromeHack(optionElement) {
function selectPreLink (line 43450) | function selectPreLink(scope, element, attr, ctrls) {
function selectPostLink (line 43514) | function selectPostLink(scope, element, attrs, ctrls) {
function getDecimals (line 43942) | function getDecimals(n) {
function getVF (line 43948) | function getVF(n, opt_precision) {
function assertArg (line 44178) | function assertArg(arg, name, reason) {
function mergeClasses (line 44185) | function mergeClasses(a,b) {
function packageStyles (line 44194) | function packageStyles(options) {
function pendClasses (line 44203) | function pendClasses(classes, fix, isPrefix) {
function removeFromArray (line 44220) | function removeFromArray(arr, val) {
function stripCommentsFromElement (line 44227) | function stripCommentsFromElement(element) {
function extractElementNode (line 44254) | function extractElementNode(element) {
function $$addClass (line 44264) | function $$addClass($$jqLite, element, className) {
function $$removeClass (line 44270) | function $$removeClass($$jqLite, element, className) {
function applyAnimationClassesFactory (line 44276) | function applyAnimationClassesFactory($$jqLite) {
function prepareAnimationOptions (line 44289) | function prepareAnimationOptions(options) {
function applyAnimationStyles (line 44303) | function applyAnimationStyles(element, options) {
function applyAnimationFromStyles (line 44308) | function applyAnimationFromStyles(element, options) {
function applyAnimationToStyles (line 44315) | function applyAnimationToStyles(element, options) {
function mergeAnimationDetails (line 44322) | function mergeAnimationDetails(element, oldAnimation, newAnimation) {
function resolveElementClasses (line 44363) | function resolveElementClasses(existing, toAdd, toRemove) {
function getDomNode (line 44421) | function getDomNode(element) {
function applyGeneratedPreparationClasses (line 44425) | function applyGeneratedPreparationClasses(element, event, options) {
function clearGeneratedClasses (line 44442) | function clearGeneratedClasses(element, options) {
function blockTransitions (line 44453) | function blockTransitions(node, duration) {
function blockKeyframeAnimations (line 44462) | function blockKeyframeAnimations(node, applyBlock) {
function applyInlineStyle (line 44469) | function applyInlineStyle(node, styleTuple) {
function concatWithSpace (line 44475) | function concatWithSpace(a,b) {
function scheduler (line 44484) | function scheduler(tasks) {
function nextTick (line 44514) | function nextTick() {
function setData (line 44621) | function setData(value) {
function getCssKeyframeDurationStyle (line 44867) | function getCssKeyframeDurationStyle(duration) {
function getCssDelayStyle (line 44871) | function getCssDelayStyle(delay, isKeyframeAnimation) {
function computeCssStyles (line 44876) | function computeCssStyles($window, element, properties) {
function parseMaxTime (line 44902) | function parseMaxTime(str) {
function truthyTimingValue (line 44917) | function truthyTimingValue(val) {
function getCssTransitionDurationStyle (line 44921) | function getCssTransitionDurationStyle(duration, applyOnlyDuration) {
function createLocalCacheLookup (line 44932) | function createLocalCacheLookup() {
function registerRestorableStyles (line 44968) | function registerRestorableStyles(backup, node, properties) {
function gcsHashFn (line 44988) | function gcsHashFn(node, extraClasses) {
function computeCachedCssStyles (line 44995) | function computeCachedCssStyles(node, className, cacheKey, properties) {
function computeCachedCssStaggerStyles (line 45011) | function computeCachedCssStaggerStyles(node, className, cacheKey, proper...
function waitUntilQuiet (line 45042) | function waitUntilQuiet(callback) {
function computeTimings (line 45061) | function computeTimings(node, className, cacheKey) {
function endFn (line 45331) | function endFn() {
function cancelFn (line 45335) | function cancelFn() {
function close (line 45339) | function close(rejected) { // jshint ignore:line
function applyBlocking (line 45398) | function applyBlocking(duration) {
function closeAndReturnNoopAnimator (line 45408) | function closeAndReturnNoopAnimator() {
function onAnimationProgress (line 45427) | function onAnimationProgress(event) {
function start (line 45454) | function start() {
function isDocumentFragment (line 45640) | function isDocumentFragment(node) {
function filterCssClasses (line 45671) | function filterCssClasses(classes) {
function getUniqueValues (line 45676) | function getUniqueValues(a, b) {
function prepareAnchoredAnimation (line 45684) | function prepareAnchoredAnimation(classes, outAnchor, inAnchor) {
function prepareFromToAnchorAnimation (line 45811) | function prepareFromToAnchorAnimation(from, to, classes, anchors) {
function prepareRegularAnimation (line 45864) | function prepareRegularAnimation(animationDetails) {
function applyOptions (line 45959) | function applyOptions() {
function close (line 45964) | function close() {
function onComplete (line 46026) | function onComplete(success) {
function endAnimations (line 46031) | function endAnimations(cancelled) {
function executeAnimationFn (line 46040) | function executeAnimationFn(fn, element, event, options, onDone) {
function groupEventedAnimations (line 46083) | function groupEventedAnimations(element, event, options, animations, fnN...
function packageAnimations (line 46124) | function packageAnimations(element, event, options, animations, fnName) {
function lookupAnimations (line 46166) | function lookupAnimations(classes) {
function endFnFactory (line 46212) | function endFnFactory() {
function done (line 46221) | function done(status) {
function prepareAnimation (line 46231) | function prepareAnimation(animationDetails) {
function makeTruthyCssClassMap (line 46255) | function makeTruthyCssClassMap(classString) {
function hasMatchingClasses (line 46269) | function hasMatchingClasses(newClassString, currentClassString) {
function isAllowed (line 46278) | function isAllowed(ruleType, element, currentAnimation, previousAnimatio...
function hasAnimationClasses (line 46284) | function hasAnimationClasses(animation, and) {
function postDigestTaskFactory (line 46351) | function postDigestTaskFactory() {
function normalizeAnimationDetails (line 46411) | function normalizeAnimationDetails(element, animation) {
function findCallbacks (line 46422) | function findCallbacks(parent, element, event) {
function filterFromRegistry (line 46464) | function filterFromRegistry(list, matchContainer, matchCallback) {
function queueAnimation (line 46523) | function queueAnimation(element, event, initialOptions) {
function closeChildAnimations (line 46795) | function closeChildAnimations(element) {
function clearElementAnimationState (line 46814) | function clearElementAnimationState(element) {
function isMatchingElement (line 46820) | function isMatchingElement(nodeOrElmA, nodeOrElmB) {
function areAnimationsAllowed (line 46831) | function areAnimationsAllowed(element, parentElement, event) {
function markElementAnimationState (line 46916) | function markElementAnimationState(element, state, details) {
function setRunner (line 46939) | function setRunner(element, runner) {
function removeRunner (line 46943) | function removeRunner(element) {
function getRunner (line 46947) | function getRunner(element) {
function sortAnimations (line 46957) | function sortAnimations(animations) {
function getAnchorNodes (line 47157) | function getAnchorNodes(node) {
function groupAnimations (line 47172) | function groupAnimations(animations) {
function cssClassesIntersection (line 47255) | function cssClassesIntersection(a,b) {
function invokeFirstDriver (line 47275) | function invokeFirstDriver(animationDetails) {
function beforeStart (line 47290) | function beforeStart() {
function updateAnimationRunners (line 47301) | function updateAnimationRunners(animation, newRunner) {
function handleDestroyedElement (line 47314) | function handleDestroyedElement() {
function close (line 47321) | function close(rejected) { // jshint ignore:line
function $SanitizeProvider (line 48366) | function $SanitizeProvider() {
function sanitizeText (line 48423) | function sanitizeText(chars) {
function toMap (line 48512) | function toMap(str, lowercaseKeys) {
function htmlParser (line 48554) | function htmlParser(html, handler) {
function attrToMap (line 48614) | function attrToMap(attrs) {
function encodeEntities (line 48631) | function encodeEntities(value) {
function htmlSanitizeWriter (line 48656) | function htmlSanitizeWriter(buf, uriValidator) {
function stripCustomNsAttrs (line 48710) | function stripCustomNsAttrs(node) {
function addText (line 48901) | function addText(text) {
function addLink (line 48908) | function addLink(url, text) {
function inherit (line 48971) | function inherit(parent, extra) {
function merge (line 48975) | function merge(dst) {
function ancestors (line 48993) | function ancestors(first, second) {
function objectKeys (line 49009) | function objectKeys(object) {
function indexOf (line 49028) | function indexOf(array, value) {
function inheritParams (line 49052) | function inheritParams(currentParams, newParams, $current, $to) {
function equalForKeys (line 49078) | function equalForKeys(a, b, keys) {
function filterByKeys (line 49098) | function filterByKeys(keys, values) {
function indexBy (line 49109) | function indexBy(array, propName) {
function pick (line 49119) | function pick(obj) {
function omit (line 49130) | function omit(obj) {
function pluck (line 49139) | function pluck(collection, key) {
function filter (line 49148) | function filter(collection, callback) {
function map (line 49159) | function map(collection, callback) {
function $Resolve (line 49262) | function $Resolve( $q, $injector) {
function $TemplateFactory (line 49516) | function $TemplateFactory( $http, $templateCache, $injector) {
function UrlMatcher (line 49682) | function UrlMatcher(pattern, config, parentMatcher) {
function decodePathArray (line 49857) | function decodePathArray(string) {
function encodeDashes (line 49943) | function encodeDashes(str) { // Replace dashes with encoded "\-"
function Type (line 50013) | function Type(config) {
function ArrayType (line 50112) | function ArrayType(type, mode) {
function $UrlMatcherFactory (line 50173) | function $UrlMatcherFactory() {
function $UrlRouterProvider (line 50669) | function $UrlRouterProvider( $locationProvider, $urlMatcherFactory) {
function $StateProvider (line 51088) | function $StateProvider( $urlRouterProvider, $urlMatcherFactory) {
function $ViewProvider (line 52442) | function $ViewProvider() {
function $ViewScrollProvider (line 52519) | function $ViewScrollProvider() {
function $ViewDirective (line 52679) | function $ViewDirective( $state, $injector, $uiViewScroll, $inte...
function $ViewDirectiveFill (line 52819) | function $ViewDirectiveFill ( $compile, $controller, $state, $int...
function getUiViewName (line 52859) | function getUiViewName(scope, attrs, element, $interpolate) {
function parseStateRef (line 52868) | function parseStateRef(ref, current) {
function stateContext (line 52876) | function stateContext(el) {
function $StateRefDirective (line 52947) | function $StateRefDirective($state, $timeout) {
function $StateRefActiveDirective (line 53092) | function $StateRefActiveDirective($state, $stateParams, $interpolate) {
function $IsStateFilter (line 53147) | function $IsStateFilter($state) {
function $IncludedByStateFilter (line 53165) | function $IncludedByStateFilter($state) {
function actionSheet (line 53303) | function actionSheet(opts) {
function retain (line 53551) | function retain() {
function release (line 53562) | function release() {
function getElement (line 53574) | function getElement() {
function preventClick (line 53727) | function preventClick(ev) {
function addClickBlock (line 53732) | function addClickBlock() {
function removeClickBlock (line 53747) | function removeClickBlock() {
function getViewById (line 53893) | function getViewById(viewId) {
function getBackView (line 53897) | function getBackView(view) {
function getForwardView (line 53901) | function getForwardView(view) {
function getHistoryById (line 53905) | function getHistoryById(historyId) {
function getHistory (line 53909) | function getHistory(scope) {
function getParentHistoryObj (line 53925) | function getParentHistoryObj(scope) {
function setNavViews (line 53939) | function setNavViews(viewId) {
function getCurrentStateId (line 53945) | function getCurrentStateId() {
function getCurrentStateParams (line 53962) | function getCurrentStateParams() {
function isAbstractTag (line 54600) | function isAbstractTag(ele) {
function canSwipeBack (line 54604) | function canSwipeBack(ele, viewLocals) {
function onHardwareBackButton (line 54679) | function onHardwareBackButton(e) {
function setStyles (line 55107) | function setStyles(ele, opacity, x, boxShadowOpacity) {
function setStyles (line 55142) | function setStyles(ctrl, opacity, titleX, backTextX) {
function enter (line 55158) | function enter(ctrlA, ctrlB, step) {
function leave (line 55165) | function leave(ctrlA, ctrlB, step) {
function setStyles (line 55197) | function setStyles(ele, x, opacity) {
function setStyles (line 55229) | function setStyles(ctrl, opacity) {
function setPlatformConfig (line 55275) | function setPlatformConfig(platformName, platformConfigs) {
function addConfig (line 55286) | function addConfig(configObj, platformObj) {
function createConfig (line 55304) | function createConfig(configObj, providerObj, platformPath) {
function stringObj (line 55335) | function stringObj(obj, str) {
function getLoader (line 55484) | function getLoader() {
function showLoader (line 55571) | function showLoader(options) {
function hideLoader (line 55592) | function hideLoader() {
function positionView (line 56341) | function positionView(target, popoverEle) {
function createPopup (line 56758) | function createPopup(options) {
function onHardwareBackButton (line 56842) | function onHardwareBackButton() {
function showPopup (line 56847) | function showPopup(options) {
function focusInput (line 56911) | function focusInput(element) {
function showAlert (line 56918) | function showAlert(opts) {
function showConfirm (line 56930) | function showConfirm(opts) {
function showPrompt (line 56944) | function showPrompt(opts) {
function getStyle (line 56993) | function getStyle(el, cssprop) {
function isStaticPositioned (line 57007) | function isStaticPositioned(element) {
function $ionicTemplateCache (line 57599) | function $ionicTemplateCache(templates) {
function run (line 57615) | function run() {
function fetchTemplate (line 57685) | function fetchTemplate(url) {
function loadAndCompile (line 57692) | function loadAndCompile(options) {
function warn (line 57744) | function warn(oldMethod, newMethod) {
function onReflow (line 57997) | function onReflow() {
function completeOnTransitionEnd (line 58018) | function completeOnTransitionEnd(ev) {
function transitionComplete (line 58022) | function transitionComplete() {
function cancelOnTransitionEnd (line 58056) | function cancelOnTransitionEnd(ev) {
function cancelTransition (line 58060) | function cancelTransition() {
function getViewElementIdentifier (line 58243) | function getViewElementIdentifier(locals, view) {
function viewState (line 58249) | function viewState(locals) {
function getTransitionData (line 58253) | function getTransitionData(viewLocals, enteringEle, direction, view) {
function getViewData (line 58275) | function getViewData(view) {
function navViewAttr (line 58286) | function navViewAttr(ele, value) {
function destroyViewEle (line 58294) | function destroyViewEle(ele) {
function compareStatePrefixes (line 58307) | function compareStatePrefixes(enteringStateName, exitingStateName) {
function getScopeForElement (line 58322) | function getScopeForElement(element, stateData) {
function aggregateNavViewChildren (line 58356) | function aggregateNavViewChildren(element) {
function isIOS9UIWebView (line 58419) | function isIOS9UIWebView(userAgent) {
function applyIOS9Shim (line 58423) | function applyIOS9Shim(browser) {
function $LocationDecorator (line 58470) | function $LocationDecorator($location, $timeout) {
function getEle (line 58864) | function getEle(className) {
function onInfinite (line 58910) | function onInfinite() {
function finishInfiniteScroll (line 58918) | function finishInfiniteScroll() {
function checkInfiniteBounds (line 58934) | function checkInfiniteBounds() {
function calculateMaxValue (line 58994) | function calculateMaxValue(maximum) {
function positionItem (line 59281) | function positionItem(ele, itemType) {
function transitionEnd (line 59448) | function transitionEnd() {
function deprecatedWarning (line 59588) | function deprecatedWarning(oldMethod, newMethod) {
function createNavElement (line 59595) | function createNavElement(type) {
function getOnScreenHeaderBar (line 59602) | function getOnScreenHeaderBar() {
function getOffScreenHeaderBar (line 59609) | function getOffScreenHeaderBar() {
function navBarAttr (line 59616) | function navBarAttr(ctrl, val) {
function navSwipeAttr (line 59620) | function navSwipeAttr(val) {
function onTabsLeave (line 59837) | function onTabsLeave(ev, data) {
function onDragStart (line 59994) | function onDragStart(ev) {
function onDrag (line 60034) | function onDrag(ev) {
function onRelease (line 60055) | function onRelease(ev) {
function getDragX (line 60103) | function getDragX(ev) {
function getSwipeCompletion (line 60107) | function getSwipeCompletion(dragX) {
function navSwipeAttr (line 60122) | function navSwipeAttr(val) {
function onTabsTop (line 60127) | function onTabsTop(ev, isTabsTop) {
function onBarSubheader (line 60132) | function onBarSubheader(ev, isBarSubheader) {
function getAssociatedNavBarCtrl (line 60137) | function getAssociatedNavBarCtrl() {
function handleMousedown (line 60191) | function handleMousedown(e) {
function handleTouchstart (line 60200) | function handleTouchstart(e) {
function handleTouchend (line 60209) | function handleTouchend() {
function handleTouchmove (line 60238) | function handleTouchmove(e) {
function handleScroll (line 60316) | function handleScroll(e) {
function overscroll (line 60321) | function overscroll(val) {
function nativescroll (line 60326) | function nativescroll(target, newScrollTop) {
function setScrollLock (line 60335) | function setScrollLock(enabled) {
function scrollTo (line 60375) | function scrollTo(Y, duration, callback) {
function destroy (line 60457) | function destroy() {
function activate (line 60486) | function activate() {
function deactivate (line 60491) | function deactivate() {
function start (line 60500) | function start() {
function show (line 60512) | function show() {
function hide (line 60517) | function hide() {
function tail (line 60522) | function tail() {
function createSvgElement (line 61234) | function createSvgElement(tagName, data, parent, spinnerName) {
function setSvgAttribute (line 61259) | function setSvgAttribute(ele, k, v) {
function animationValues (line 61263) | function animationValues(strValues, i) {
function run (line 61546) | function run() {
function easeInOutCubic (line 61591) | function easeInOutCubic(t, c) {
function afterEnter (line 61866) | function afterEnter() {
function titleUpdate (line 61889) | function titleUpdate(newTitle) {
function deregisterFns (line 61897) | function deregisterFns() {
function generateNavBarItem (line 61906) | function generateNavBarItem(html) {
function attrTrue (line 61914) | function attrTrue(key) {
function CollectionRepeatDirective (line 62123) | function CollectionRepeatDirective($ionicCollectionManager, $parse, $win...
function RepeatManagerFactory (line 62429) | function RepeatManagerFactory($rootScope, $window, $$rAF) {
function prelink (line 63104) | function prelink($scope, $element, $attr) {
function checkAsideExpose (line 63269) | function checkAsideExpose() {
function onResize (line 63275) | function onResize() {
function gestureDirective (line 63569) | function gestureDirective(directiveName) {
function tapScrollToTopDirective (line 63672) | function tapScrollToTopDirective() { //eslint-disable-line no-unused-vars
function headerFooterBarDirective (line 63712) | function headerFooterBarDirective(isHeader) {
function stopPropagation (line 64135) | function stopPropagation(ev) {
function init (line 64161) | function init() {
function stopPropagation (line 64240) | function stopPropagation(e) {
function onShow (line 64396) | function onShow(e) {
function onHide (line 64410) | function onHide() {
function keyboardAttachGetClientHeight (line 64432) | function keyboardAttachGetClientHeight(element) {
function init (line 64541) | function init() {
function hasIconClass (line 64882) | function hasIconClass(ele) {
function updateView (line 65387) | function updateView(firstTime) {
function eventStopPropagation (line 65453) | function eventStopPropagation(e) {
function prelink (line 65757) | function prelink($scope, $element, $attr) {
function prelink (line 65933) | function prelink($scope, $element, $attr, sideMenuCtrl) {
function prelink (line 66219) | function prelink($scope, $element, $attrs, ctrl) {
function freezeAllScrolls (line 66343) | function freezeAllScrolls(shouldFreeze) {
function getPager (line 66420) | function getPager() {
function attrStr (line 66926) | function attrStr(k, v) {
function selectIfMatchesState (line 67014) | function selectIfMatchesState() {
function tabSelected (line 67026) | function tabSelected(isSelected) {
function destroyTab (line 67061) | function destroyTab() {
function prelink (line 67225) | function prelink($scope, $element, $attr, tabsCtrl) {
function postLink (line 67267) | function postLink($scope, $element, $attr, tabsCtrl) {
FILE: ionic1/base/www/lib/ionic/js/ionic.js
function trueFn (line 31) | function trueFn() { return true; }
function DelegateInstance (line 51) | function DelegateInstance(instances, handle) {
function DelegateService (line 65) | function DelegateService() {
function instanceMethodCaller (line 88) | function instanceMethodCaller(methodName) {
function domReady (line 131) | function domReady() {
function setup (line 691) | function setup() {
function getParameterByName (line 2033) | function getParameterByName(name) {
function verifyPlatformReady (line 2453) | function verifyPlatformReady() {
function onWindowLoad (line 2462) | function onWindowLoad() {
function onPlatformReady (line 2483) | function onPlatformReady() {
function update (line 2576) | function update(fn) {
function tapEventListener (line 2917) | function tapEventListener(type, enable, useCapture) {
function tapClick (line 2925) | function tapClick(e) {
function triggerMouseEvent (line 2941) | function triggerMouseEvent(type, ele, x, y) {
function tapClickGateKeeper (line 2949) | function tapClickGateKeeper(e) {
function tapMouseDown (line 2971) | function tapMouseDown(e) {
function tapMouseUp (line 3000) | function tapMouseUp(e) {
function tapMouseMove (line 3018) | function tapMouseMove(e) {
function tapTouchStart (line 3029) | function tapTouchStart(e) {
function tapTouchEnd (line 3056) | function tapTouchEnd(e) {
function tapTouchMove (line 3073) | function tapTouchMove(e) {
function tapTouchCancel (line 3082) | function tapTouchCancel() {
function tapEnableTouchEvents (line 3088) | function tapEnableTouchEvents() {
function tapIgnoreEvent (line 3096) | function tapIgnoreEvent(e) {
function tapHandleFocus (line 3114) | function tapHandleFocus(ele) {
function tapFocusOutActive (line 3149) | function tapFocusOutActive() {
function tapFocusIn (line 3158) | function tapFocusIn(e) {
function tapFocusOut (line 3180) | function tapFocusOut() {
function tapActiveElement (line 3185) | function tapActiveElement(ele) {
function tapHasPointerMoved (line 3192) | function tapHasPointerMoved(endEvent) {
function tapContainingElement (line 3208) | function tapContainingElement(ele, allowSelf) {
function tapTargetElement (line 3218) | function tapTargetElement(ele) {
function isSelectOrOption (line 3231) | function isSelectOrOption(tagName){
function clear (line 3307) | function clear() {
function activateElements (line 3315) | function activateElements() {
function deactivateElements (line 3326) | function deactivateElements() {
function keyboardInit (line 3810) | function keyboardInit() {
function keyboardNativeShow (line 3840) | function keyboardNativeShow(e) {
function keyboardFocusIn (line 3869) | function keyboardFocusIn(e) {
function keyboardFocusOut (line 3937) | function keyboardFocusOut() {
function keyboardOrientationChange (line 3978) | function keyboardOrientationChange() {
function keyboardOnKeyDown (line 4010) | function keyboardOnKeyDown(e) {
function keyboardPreventDefault (line 4020) | function keyboardPreventDefault(e) {
function keyboardWaitForResize (line 4044) | function keyboardWaitForResize(callback, isOpening) {
function keyboardHide (line 4108) | function keyboardHide() {
function keyboardShow (line 4149) | function keyboardShow() {
function keyboardGetHeight (line 4189) | function keyboardGetHeight() {
function isPortraitViewportHeight (line 4228) | function isPortraitViewportHeight(viewportHeight) {
function isLandscapeViewportHeight (line 4234) | function isLandscapeViewportHeight(viewportHeight) {
function keyboardUpdateViewportHeight (line 4240) | function keyboardUpdateViewportHeight() {
function keyboardInitViewportHeight (line 4264) | function keyboardInitViewportHeight() {
function getViewportHeight (line 4282) | function getViewportHeight() {
function keyboardHasPlugin (line 4299) | function keyboardHasPlugin() {
function viewportLoadTag (line 4357) | function viewportLoadTag() {
function viewportUpdate (line 4380) | function viewportUpdate() {
function viewportTagUpdate (line 4464) | function viewportTagUpdate() {
function getEventTouches (line 5271) | function getEventTouches(e) {
function animateScroll (line 7220) | function animateScroll(Y, X) {
function makeInvisible (line 7667) | function makeInvisible() {
function setup (line 8351) | function setup() {
function prev (line 8409) | function prev(slideSpeed) {
function next (line 8416) | function next(slideSpeed) {
function circle (line 8423) | function circle(index) {
function slide (line 8430) | function slide(to, slideSpeed) {
function move (line 8478) | function move(index, dist, speed) {
function translate (line 8485) | function translate(index, dist, speed) {
function animate (line 8505) | function animate(from, to, speed) {
function begin (line 8544) | function begin() {
function stop (line 8550) | function stop() {
function isH (line 9328) | function isH() {
function round (line 9390) | function round(a) {
function onReady (line 9410) | function onReady () {
function _onReady (line 9434) | function _onReady() {
function autoplay (line 9453) | function autoplay() {
function forceSetTranslate (line 9918) | function forceSetTranslate() {
function findElementInEvent (line 10107) | function findElementInEvent(e, selector) {
function initObserver (line 10961) | function initObserver(target, options) {
function setControlledTranslate (line 11747) | function setControlledTranslate(c) {
function setControlledTransition (line 11787) | function setControlledTransition(c) {
function handleKeyboard (line 11842) | function handleKeyboard(e) {
function handleMousewheel (line 11937) | function handleMousewheel(e) {
function setParallaxTransform (line 12046) | function setParallaxTransform(el, progress) {
function normalizeEventName (line 12130) | function normalizeEventName (eventName) {
function handleLiveEvent (line 12659) | function handleLiveEvent(e) {
function proxy (line 12727) | function proxy(e) {
function fireCallBack (line 12751) | function fireCallBack(e) {
function addLibraryPlugin (line 13160) | function addLibraryPlugin(lib) {
function fireCallBack (line 13176) | function fireCallBack(e) {
FILE: ionic1/official/maps/www/js/directives.js
function initialize (line 10) | function initialize() {
FILE: ionic1/official/maps/www/lib/ionic/js/angular-ui/angular-ui-router.js
function inherit (line 27) | function inherit(parent, extra) {
function merge (line 31) | function merge(dst) {
function ancestors (line 49) | function ancestors(first, second) {
function keys (line 66) | function keys(object) {
function arraySearch (line 85) | function arraySearch(array, value) {
function inheritParams (line 109) | function inheritParams(currentParams, newParams, $current, $to) {
function normalize (line 132) | function normalize(keys, values) {
function equalForKeys (line 151) | function equalForKeys(a, b, keys) {
function filterByKeys (line 171) | function filterByKeys(keys, values) {
function $Resolve (line 194) | function $Resolve( $q, $injector) {
function $TemplateFactory (line 412) | function $TemplateFactory( $http, $templateCache, $injector) {
function UrlMatcher (line 534) | function UrlMatcher(pattern) {
function $UrlMatcherFactory (line 715) | function $UrlMatcherFactory() {
function $UrlRouterProvider (line 750) | function $UrlRouterProvider( $urlMatcherFactory) {
function $StateProvider (line 873) | function $StateProvider( $urlRouterProvider, $urlMatcherFactory, ...
function $ViewProvider (line 1433) | function $ViewProvider() {
function $ViewDirective (line 1462) | function $ViewDirective( $state, $compile, $controller, $injecto...
function parseStateRef (line 1578) | function parseStateRef(ref) {
function stateContext (line 1584) | function stateContext(el) {
function $StateRefDirective (line 1593) | function $StateRefDirective($state, $timeout) {
function $StateActiveDirective (line 1647) | function $StateActiveDirective($state, $stateParams, $interpolate) {
function $RouteProvider (line 1686) | function $RouteProvider( $stateProvider, $urlRouterProvider) {
FILE: ionic1/official/maps/www/lib/ionic/js/angular/angular-animate.js
function extractElementNode (line 287) | function extractElementNode(element) {
function isMatchingElement (line 296) | function isMatchingElement(elm1, elm2) {
function async (line 324) | function async(fn) {
function lookup (line 328) | function lookup(name) {
function performAnimation (line 608) | function performAnimation(animationEvent, className, element, parentElem...
function cancelChildAnimations (line 875) | function cancelChildAnimations(element) {
function cancelAnimations (line 887) | function cancelAnimations(animations) {
function cleanup (line 899) | function cleanup(element) {
function animationsDisabled (line 911) | function animationsDisabled(element, parentElement) {
function afterReflow (line 988) | function afterReflow(element, callback) {
function closeAllAnimations (line 1040) | function closeAllAnimations(elements, count) {
function getElementAnimationDetails (line 1049) | function getElementAnimationDetails(element, cacheKey) {
function parseMaxTime (line 1107) | function parseMaxTime(str) {
function getCacheKey (line 1118) | function getCacheKey(element) {
function animateSetup (line 1128) | function animateSetup(element, className, calculationDecorator) {
function blockTransitions (line 1193) | function blockTransitions(element) {
function blockKeyframeAnimations (line 1197) | function blockKeyframeAnimations(element) {
function unblockTransitions (line 1201) | function unblockTransitions(element) {
function unblockKeyframeAnimations (line 1209) | function unblockKeyframeAnimations(element) {
function animateRun (line 1217) | function animateRun(element, className, activeAnimationComplete) {
function prepareStaggerDelay (line 1311) | function prepareStaggerDelay(delayStyle, staggerDelay, index) {
function animateBefore (line 1320) | function animateBefore(element, className, calculationDecorator) {
function animateAfter (line 1328) | function animateAfter(element, className, afterAnimationComplete) {
function animate (line 1337) | function animate(element, className, animationComplete) {
function animateClose (line 1367) | function animateClose(element, className) {
function suffixClasses (line 1472) | function suffixClasses(classes, suffix) {
FILE: ionic1/official/maps/www/lib/ionic/js/angular/angular-resource.js
function isValidDottedPath (line 15) | function isValidDottedPath(path) {
function lookupDottedPath (line 20) | function lookupDottedPath(obj, path) {
function shallowClearAndCopy (line 35) | function shallowClearAndCopy(src, dst) {
function encodeUriSegment (line 337) | function encodeUriSegment(val) {
function encodeUriQuery (line 356) | function encodeUriQuery(val, pctEncodeSpaces) {
function Route (line 365) | function Route(template, defaults) {
function resourceFactory (line 430) | function resourceFactory(url, paramDefaults, actions) {
FILE: ionic1/official/maps/www/lib/ionic/js/angular/angular-sanitize.js
function $SanitizeProvider (line 140) | function $SanitizeProvider() {
function sanitizeText (line 152) | function sanitizeText(chars) {
function makeMap (line 219) | function makeMap(str) {
function htmlParser (line 238) | function htmlParser( html, handler ) {
function decodeEntities (line 377) | function decodeEntities(value) {
function encodeEntities (line 405) | function encodeEntities(value) {
function htmlSanitizeWriter (line 425) | function htmlSanitizeWriter(buf, uriValidator){
function addText (line 601) | function addText(text) {
function addLink (line 608) | function addLink(url, text) {
FILE: ionic1/official/maps/www/lib/ionic/js/angular/angular.js
function minErr (line 36) | function minErr(module) {
function isArrayLike (line 248) | function isArrayLike(obj) {
function forEach (line 291) | function forEach(obj, iterator, context) {
function sortedKeys (line 318) | function sortedKeys(obj) {
function forEachSorted (line 328) | function forEachSorted(obj, iterator, context) {
function reverseParams (line 342) | function reverseParams(iteratorFn) {
function nextUid (line 354) | function nextUid() {
function setHashKey (line 382) | function setHashKey(obj, h) {
function extend (line 404) | function extend(dst) {
function int (line 418) | function int(str) {
function inherit (line 423) | function inherit(parent, extra) {
function noop (line 442) | function noop() {}
function identity (line 461) | function identity($) {return $;}
function valueFn (line 465) | function valueFn(value) {return function() {return value;};}
function isUndefined (line 478) | function isUndefined(value){return typeof value === 'undefined';}
function isDefined (line 492) | function isDefined(value){return typeof value !== 'undefined';}
function isObject (line 507) | function isObject(value){return value != null && typeof value === 'objec...
function isString (line 521) | function isString(value){return typeof value === 'string';}
function isNumber (line 535) | function isNumber(value){return typeof value === 'number';}
function isDate (line 549) | function isDate(value){
function isArray (line 565) | function isArray(value) {
function isFunction (line 581) | function isFunction(value){return typeof value === 'function';}
function isRegExp (line 591) | function isRegExp(value) {
function isWindow (line 603) | function isWindow(obj) {
function isScope (line 608) | function isScope(obj) {
function isFile (line 613) | function isFile(obj) {
function isBoolean (line 618) | function isBoolean(value) {
function isElement (line 649) | function isElement(node) {
function makeMap (line 659) | function makeMap(str){
function map (line 680) | function map(obj, iterator, context) {
function size (line 701) | function size(obj, ownPropsOnly) {
function includes (line 716) | function includes(array, obj) {
function indexOf (line 720) | function indexOf(array, obj) {
function arrayRemove (line 729) | function arrayRemove(array, value) {
function isLeafNode (line 736) | function isLeafNode (node) {
function copy (line 804) | function copy(source, destination){
function shallowCopy (line 848) | function shallowCopy(src, dst) {
function equals (line 891) | function equals(o1, o2) {
function csp (line 932) | function csp() {
function concat (line 939) | function concat(array1, array2, index) {
function sliceArgs (line 943) | function sliceArgs(args, startIndex) {
function bind (line 966) | function bind(self, fn) {
function toJsonReplacer (line 987) | function toJsonReplacer(key, value) {
function toJson (line 1017) | function toJson(obj, pretty) {
function fromJson (line 1034) | function fromJson(json) {
function toBoolean (line 1041) | function toBoolean(value) {
function startingTag (line 1056) | function startingTag(element) {
function tryDecodeURIComponent (line 1088) | function tryDecodeURIComponent(value) {
function parseKeyValue (line 1101) | function parseKeyValue(/**string*/keyValue) {
function toKeyValue (line 1122) | function toKeyValue(obj) {
function encodeUriSegment (line 1150) | function encodeUriSegment(val) {
function encodeUriQuery (line 1169) | function encodeUriQuery(val, pctEncodeSpaces) {
function angularInit (line 1223) | function angularInit(element, bootstrap) {
function bootstrap (line 1285) | function bootstrap(element, modules) {
function snake_case (line 1327) | function snake_case(name, separator){
function bindJQuery (line 1334) | function bindJQuery() {
function assertArg (line 1361) | function assertArg(arg, name, reason) {
function assertArgFn (line 1368) | function assertArgFn(arg, name, acceptArrayAnnotation) {
function assertNotHasOwnProperty (line 1383) | function assertNotHasOwnProperty(name, context) {
function getter (line 1397) | function getter(obj, path, bindFnToScope) {
function getBlockElements (line 1421) | function getBlockElements(nodes) {
function setupModuleLoader (line 1448) | function setupModuleLoader(window) {
function publishExternalAPI (line 1845) | function publishExternalAPI(angular){
function jqNextId (line 2070) | function jqNextId() { return ++jqId; }
function camelCase (line 2082) | function camelCase(name) {
function jqLitePatchJQueryRemove (line 2098) | function jqLitePatchJQueryRemove(name, dispatchThis, filterElems, getter...
function JQLite (line 2134) | function JQLite(element) {
function jqLiteClone (line 2162) | function jqLiteClone(element) {
function jqLiteDealoc (line 2166) | function jqLiteDealoc(element){
function jqLiteOff (line 2173) | function jqLiteOff(element, type, fn, unsupported) {
function jqLiteRemoveData (line 2198) | function jqLiteRemoveData(element, name) {
function jqLiteExpandoStore (line 2217) | function jqLiteExpandoStore(element, key, value) {
function jqLiteData (line 2232) | function jqLiteData(element, key, value) {
function jqLiteHasClass (line 2258) | function jqLiteHasClass(element, selector) {
function jqLiteRemoveClass (line 2264) | function jqLiteRemoveClass(element, cssClasses) {
function jqLiteAddClass (line 2276) | function jqLiteAddClass(element, cssClasses) {
function jqLiteAddNodes (line 2292) | function jqLiteAddNodes(root, elements) {
function jqLiteController (line 2303) | function jqLiteController(element, name) {
function jqLiteInheritedData (line 2307) | function jqLiteInheritedData(element, name, value) {
function jqLiteEmpty (line 2326) | function jqLiteEmpty(element) {
function trigger (line 2342) | function trigger() {
function getBooleanAttrName (line 2389) | function getBooleanAttrName(element, name) {
function getText (line 2496) | function getText(element, value) {
function createEventHandler (line 2581) | function createEventHandler(element, events) {
function hashKey (line 2879) | function hashKey(obj) {
function HashMap (line 2900) | function HashMap(array){
function annotate (line 2997) | function annotate(fn) {
function createInjector (line 3529) | function createInjector(modulesToLoad) {
function $AnchorScrollProvider (line 3786) | function $AnchorScrollProvider() {
function Browser (line 4087) | function Browser(window, document, $log, $sniffer) {
function $BrowserProvider (line 4448) | function $BrowserProvider(){
function $CacheFactoryProvider (line 4493) | function $CacheFactoryProvider() {
function $TemplateCacheProvider (line 4694) | function $TemplateCacheProvider() {
function $CompileProvider (line 5198) | function $CompileProvider($provide, $$sanitizeUriProvider) {
function directiveNormalize (line 6629) | function directiveNormalize(name) {
function nodesetLinkingFn (line 6676) | function nodesetLinkingFn(
function directiveLinkingFn (line 6683) | function directiveLinkingFn(
function tokenDifference (line 6691) | function tokenDifference(str1, str2) {
function $ControllerProvider (line 6717) | function $ControllerProvider() {
function $DocumentProvider (line 6805) | function $DocumentProvider(){
function $ExceptionHandlerProvider (line 6843) | function $ExceptionHandlerProvider() {
function parseHeaders (line 6857) | function parseHeaders(headers) {
function headersGetter (line 6892) | function headersGetter(headers) {
function transformData (line 6917) | function transformData(data, headers, fns) {
function isSuccess (line 6929) | function isSuccess(status) {
function $HttpProvider (line 6934) | function $HttpProvider() {
function createXhr (line 7890) | function createXhr(method) {
function $HttpBackendProvider (line 7921) | function $HttpBackendProvider() {
function createHttpBackend (line 7927) | function createHttpBackend($browser, createXhr, $browserDefer, callbacks...
function $InterpolateProvider (line 8116) | function $InterpolateProvider() {
function $IntervalProvider (line 8318) | function $IntervalProvider() {
function $LocaleProvider (line 8513) | function $LocaleProvider(){
function encodePath (line 8586) | function encodePath(path) {
function parseAbsoluteUrl (line 8597) | function parseAbsoluteUrl(absoluteUrl, locationObj, appBase) {
function parseAppUrl (line 8606) | function parseAppUrl(relativeUrl, locationObj, appBase) {
function beginsWith (line 8631) | function beginsWith(begin, whole) {
function stripHash (line 8638) | function stripHash(url) {
function stripFile (line 8644) | function stripFile(url) {
function serverBase (line 8649) | function serverBase(url) {
function LocationHtml5Url (line 8662) | function LocationHtml5Url(appBase, basePrefix) {
function LocationHashbangUrl (line 8730) | function LocationHashbangUrl(appBase, hashPrefix) {
function LocationHashbangInHtml5Url (line 8826) | function LocationHashbangInHtml5Url(appBase, hashPrefix) {
function locationGetter (line 9049) | function locationGetter(property) {
function locationGetterSetter (line 9056) | function locationGetterSetter(property, preprocess) {
function $LocationProvider (line 9104) | function $LocationProvider(){
function $LogProvider (line 9323) | function $LogProvider(){
function ensureSafeMemberName (line 9481) | function ensureSafeMemberName(name, fullExpression) {
function ensureSafeObject (line 9490) | function ensureSafeObject(obj, fullExpression) {
function setter (line 10290) | function setter(obj, path, setValue, fullExp, options) {
function cspSafeGetterFn (line 10328) | function cspSafeGetterFn(key0, key1, key2, key3, key4, fullExp, options) {
function simpleGetterFn1 (line 10432) | function simpleGetterFn1(key0, fullExp) {
function simpleGetterFn2 (line 10441) | function simpleGetterFn2(key0, key1, fullExp) {
function getterFn (line 10452) | function getterFn(path, options, fullExp) {
function $ParseProvider (line 10580) | function $ParseProvider() {
function $QProvider (line 10883) | function $QProvider() {
function qFactory (line 10901) | function qFactory(nextTick, exceptionHandler) {
function $RootScopeProvider (line 11303) | function $RootScopeProvider(){
function $$SanitizeUriProvider (line 12328) | function $$SanitizeUriProvider() {
function escapeForRegexp (line 12414) | function escapeForRegexp(s) {
function adjustMatcher (line 12420) | function adjustMatcher(matcher) {
function adjustMatchers (line 12448) | function adjustMatchers(matchers) {
function $SceDelegateProvider (line 12524) | function $SceDelegateProvider() {
function $SceProvider (line 13060) | function $SceProvider() {
function $SnifferProvider (line 13492) | function $SnifferProvider() {
function $TimeoutProvider (line 13569) | function $TimeoutProvider() {
function urlResolve (line 13717) | function urlResolve(url, base) {
function urlIsSameOrigin (line 13751) | function urlIsSameOrigin(requestUrl) {
function $WindowProvider (line 13797) | function $WindowProvider(){
function $FilterProvider (line 13877) | function $FilterProvider($provide) {
function filterFilter (line 14046) | function filterFilter() {
function currencyFilter (line 14190) | function currencyFilter($locale) {
function numberFilter (line 14250) | function numberFilter($locale) {
function formatNumber (line 14259) | function formatNumber(number, pattern, groupSep, decimalSep, fractionSiz...
function padNumber (line 14333) | function padNumber(num, digits, trim) {
function dateGetter (line 14347) | function dateGetter(name, size, offset, trim) {
function dateStrGetter (line 14358) | function dateStrGetter(name, shortForm) {
function timeZoneGetter (line 14367) | function timeZoneGetter(date) {
function ampmGetter (line 14377) | function ampmGetter(date, formats) {
function dateFilter (line 14493) | function dateFilter($locale) {
function jsonFilter (line 14596) | function jsonFilter() {
function limitToFilter (line 14693) | function limitToFilter(){
function orderByFilter (line 14794) | function orderByFilter($parse){
function ngDirective (line 14845) | function ngDirective(directive) {
function FormController (line 15329) | function FormController(element, attrs) {
function validate (line 16099) | function validate(ctrl, validatorName, validity, value){
function textInputType (line 16104) | function textInputType(scope, element, attr, ctrl, $sniffer, $browser) {
function numberInputType (line 16237) | function numberInputType(scope, element, attr, ctrl, $sniffer, $browser) {
function urlInputType (line 16280) | function urlInputType(scope, element, attr, ctrl, $sniffer, $browser) {
function emailInputType (line 16291) | function emailInputType(scope, element, attr, ctrl, $sniffer, $browser) {
function radioInputType (line 16302) | function radioInputType(scope, element, attr, ctrl) {
function checkboxInputType (line 16324) | function checkboxInputType(scope, element, attr, ctrl) {
function toggleValidCss (line 16707) | function toggleValidCss(isValid, validationErrorKey) {
function getStringValue (line 17350) | function getStringValue() { return (parsed(scope) || '').toString(); }
function classDirective (line 17358) | function classDirective(name, selector) {
function getBlockStart (line 19465) | function getBlockStart(block) {
function getBlockEnd (line 19469) | function getBlockEnd(block) {
function setupAsSingle (line 20396) | function setupAsSingle(scope, selectElement, ngModelCtrl, selectCtrl) {
function setupAsMultiple (line 20421) | function setupAsMultiple(scope, selectElement, ctrl) {
function setupAsOptions (line 20452) | function setupAsOptions(scope, selectElement, ctrl) {
FILE: ionic1/official/maps/www/lib/ionic/js/ionic-angular.js
function delegateService (line 124) | function delegateService(methodNames) {
function onHardwareBackButton (line 1520) | function onHardwareBackButton(e) {
function createViewId (line 1574) | function createViewId(stateId) {
function getParentAnimationClass (line 1882) | function getParentAnimationClass(el) {
function setAnimationClass (line 1891) | function setAnimationClass() {
function $LocationDecorator (line 2025) | function $LocationDecorator($location, $timeout) {
function TapScrollToTopDirective (line 2187) | function TapScrollToTopDirective() {
function barDirective (line 2224) | function barDirective(isHeader) {
function prelink (line 2404) | function prelink($scope, $element, $attr, navViewCtrl) {
function prelink (line 3211) | function prelink($scope, $element, $attr, navBarCtrl) {
function prelink (line 3628) | function prelink($scope, $element, $attr) {
function prelink (line 3881) | function prelink($scope, $element, $attr, sideMenuCtrl) {
function prelink (line 4464) | function prelink($scope, $element, $attr, tabsCtrl) {
function attrStr (line 4530) | function attrStr(k,v) {
function selectTabIfMatchesState (line 4611) | function selectTabIfMatchesState() {
function onTap (line 4780) | function onTap(e) {
function stopEvent (line 4812) | function stopEvent(e) {
function updateView (line 5040) | function updateView(doAnimate) {
FILE: ionic1/official/maps/www/lib/ionic/js/ionic.bundle.js
function B1 (line 39) | function B1(t) { return t*t*t; }
function B2 (line 40) | function B2(t) { return 3*t*t*(1-t); }
function B3 (line 41) | function B3(t) { return 3*t*(1-t)*(1-t); }
function B4 (line 42) | function B4(t) { return (1-t)*(1-t)*(1-t); }
function domReady (line 150) | function domReady() {
function setup (line 617) | function setup() {
function onWindowLoad (line 2241) | function onWindowLoad() {
function onPlatformReady (line 2255) | function onPlatformReady() {
function update (line 2309) | function update(fn) {
function tapPolyfill (line 2391) | function tapPolyfill(orgEvent) {
function preventGhostClick (line 2426) | function preventGhostClick(e) {
function isRecentTap (line 2459) | function isRecentTap(event) {
function isScrolledSinceStart (line 2477) | function isScrolledSinceStart(event) {
function recordCoordinates (line 2492) | function recordCoordinates(event) {
function getCoordinates (line 2508) | function getCoordinates(event) {
function removeClickPrevent (line 2526) | function removeClickPrevent(e) {
function stopEvent (line 2535) | function stopEvent(e){
function blurActive (line 2541) | function blurActive() {
function recordStartCoordinates (line 2552) | function recordStartCoordinates(e) {
function activateElements (line 2640) | function activateElements() {
function deactivateElements (line 2651) | function deactivateElements() {
function onEnd (line 2660) | function onEnd(e) {
function clear (line 2665) | function clear() {
function androidKeyboardFix (line 2885) | function androidKeyboardFix() {
function shouldIgnorePress (line 3563) | function shouldIgnorePress(e) {
function setup (line 5970) | function setup() {
function prev (line 6023) | function prev() {
function next (line 6030) | function next() {
function circle (line 6037) | function circle(index) {
function slide (line 6044) | function slide(to, slideSpeed) {
function move (line 6087) | function move(index, dist, speed) {
function translate (line 6094) | function translate(index, dist, speed) {
function animate (line 6114) | function animate(from, to, speed) {
function begin (line 6153) | function begin() {
function stop (line 6159) | function stop() {
function minErr (line 7590) | function minErr(module) {
function isArrayLike (line 7802) | function isArrayLike(obj) {
function forEach (line 7845) | function forEach(obj, iterator, context) {
function sortedKeys (line 7872) | function sortedKeys(obj) {
function forEachSorted (line 7882) | function forEachSorted(obj, iterator, context) {
function reverseParams (line 7896) | function reverseParams(iteratorFn) {
function nextUid (line 7908) | function nextUid() {
function setHashKey (line 7936) | function setHashKey(obj, h) {
function extend (line 7958) | function extend(dst) {
function int (line 7972) | function int(str) {
function inherit (line 7977) | function inherit(parent, extra) {
function noop (line 7996) | function noop() {}
function identity (line 8015) | function identity($) {return $;}
function valueFn (line 8019) | function valueFn(value) {return function() {return value;};}
function isUndefined (line 8032) | function isUndefined(value){return typeof value === 'undefined';}
function isDefined (line 8046) | function isDefined(value){return typeof value !== 'undefined';}
function isObject (line 8061) | function isObject(value){return value != null && typeof value === 'objec...
function isString (line 8075) | function isString(value){return typeof value === 'string';}
function isNumber (line 8089) | function isNumber(value){return typeof value === 'number';}
function isDate (line 8103) | function isDate(value){
function isArray (line 8119) | function isArray(value) {
function isFunction (line 8135) | function isFunction(value){return typeof value === 'function';}
function isRegExp (line 8145) | function isRegExp(value) {
function isWindow (line 8157) | function isWindow(obj) {
function isScope (line 8162) | function isScope(obj) {
function isFile (line 8167) | function isFile(obj) {
function isBoolean (line 8172) | function isBoolean(value) {
function isElement (line 8203) | function isElement(node) {
function makeMap (line 8213) | function makeMap(str){
function map (line 8234) | function map(obj, iterator, context) {
function size (line 8255) | function size(obj, ownPropsOnly) {
function includes (line 8270) | function includes(array, obj) {
function indexOf (line 8274) | function indexOf(array, obj) {
function arrayRemove (line 8283) | function arrayRemove(array, value) {
function isLeafNode (line 8290) | function isLeafNode (node) {
function copy (line 8358) | function copy(source, destination){
function shallowCopy (line 8402) | function shallowCopy(src, dst) {
function equals (line 8445) | function equals(o1, o2) {
function csp (line 8486) | function csp() {
function concat (line 8493) | function concat(array1, array2, index) {
function sliceArgs (line 8497) | function sliceArgs(args, startIndex) {
function bind (line 8520) | function bind(self, fn) {
function toJsonReplacer (line 8541) | function toJsonReplacer(key, value) {
function toJson (line 8571) | function toJson(obj, pretty) {
function fromJson (line 8588) | function fromJson(json) {
function toBoolean (line 8595) | function toBoolean(value) {
function startingTag (line 8610) | function startingTag(element) {
function tryDecodeURIComponent (line 8642) | function tryDecodeURIComponent(value) {
function parseKeyValue (line 8655) | function parseKeyValue(/**string*/keyValue) {
function toKeyValue (line 8676) | function toKeyValue(obj) {
function encodeUriSegment (line 8704) | function encodeUriSegment(val) {
function encodeUriQuery (line 8723) | function encodeUriQuery(val, pctEncodeSpaces) {
function angularInit (line 8777) | function angularInit(element, bootstrap) {
function bootstrap (line 8839) | function bootstrap(element, modules) {
function snake_case (line 8881) | function snake_case(name, separator){
function bindJQuery (line 8888) | function bindJQuery() {
function assertArg (line 8915) | function assertArg(arg, name, reason) {
function assertArgFn (line 8922) | function assertArgFn(arg, name, acceptArrayAnnotation) {
function assertNotHasOwnProperty (line 8937) | function assertNotHasOwnProperty(name, context) {
function getter (line 8951) | function getter(obj, path, bindFnToScope) {
function getBlockElements (line 8975) | function getBlockElements(nodes) {
function setupModuleLoader (line 9002) | function setupModuleLoader(window) {
function publishExternalAPI (line 9399) | function publishExternalAPI(angular){
function jqNextId (line 9624) | function jqNextId() { return ++jqId; }
function camelCase (line 9636) | function camelCase(name) {
function jqLitePatchJQueryRemove (line 9652) | function jqLitePatchJQueryRemove(name, dispatchThis, filterElems, getter...
function JQLite (line 9688) | function JQLite(element) {
function jqLiteClone (line 9716) | function jqLiteClone(element) {
function jqLiteDealoc (line 9720) | function jqLiteDealoc(element){
function jqLiteOff (line 9727) | function jqLiteOff(element, type, fn, unsupported) {
function jqLiteRemoveData (line 9752) | function jqLiteRemoveData(element, name) {
function jqLiteExpandoStore (line 9771) | function jqLiteExpandoStore(element, key, value) {
function jqLiteData (line 9786) | function jqLiteData(element, key, value) {
function jqLiteHasClass (line 9812) | function jqLiteHasClass(element, selector) {
function jqLiteRemoveClass (line 9818) | function jqLiteRemoveClass(element, cssClasses) {
function jqLiteAddClass (line 9830) | function jqLiteAddClass(element, cssClasses) {
function jqLiteAddNodes (line 9846) | function jqLiteAddNodes(root, elements) {
function jqLiteController (line 9857) | function jqLiteController(element, name) {
function jqLiteInheritedData (line 9861) | function jqLiteInheritedData(element, name, value) {
function jqLiteEmpty (line 9880) | function jqLiteEmpty(element) {
function trigger (line 9896) | function trigger() {
function getBooleanAttrName (line 9943) | function getBooleanAttrName(element, name) {
function getText (line 10050) | function getText(element, value) {
function createEventHandler (line 10135) | function createEventHandler(element, events) {
function hashKey (line 10433) | function hashKey(obj) {
function HashMap (line 10454) | function HashMap(array){
function annotate (line 10551) | function annotate(fn) {
function createInjector (line 11083) | function createInjector(modulesToLoad) {
function $AnchorScrollProvider (line 11340) | function $AnchorScrollProvider() {
function Browser (line 11641) | function Browser(window, document, $log, $sniffer) {
function $BrowserProvider (line 12002) | function $BrowserProvider(){
function $CacheFactoryProvider (line 12047) | function $CacheFactoryProvider() {
function $TemplateCacheProvider (line 12248) | function $TemplateCacheProvider() {
function $CompileProvider (line 12752) | function $CompileProvider($provide, $$sanitizeUriProvider) {
function directiveNormalize (line 14183) | function directiveNormalize(name) {
function nodesetLinkingFn (line 14230) | function nodesetLinkingFn(
function directiveLinkingFn (line 14237) | function directiveLinkingFn(
function tokenDifference (line 14245) | function tokenDifference(str1, str2) {
function $ControllerProvider (line 14271) | function $ControllerProvider() {
function $DocumentProvider (line 14359) | function $DocumentProvider(){
function $ExceptionHandlerProvider (line 14397) | function $ExceptionHandlerProvider() {
function parseHeaders (line 14411) | function parseHeaders(headers) {
function headersGetter (line 14446) | function headersGetter(headers) {
function transformData (line 14471) | function transformData(data, headers, fns) {
function isSuccess (line 14483) | function isSuccess(status) {
function $HttpProvider (line 14488) | function $HttpProvider() {
function createXhr (line 15444) | function createXhr(method) {
function $HttpBackendProvider (line 15475) | function $HttpBackendProvider() {
function createHttpBackend (line 15481) | function createHttpBackend($browser, createXhr, $browserDefer, callbacks...
function $InterpolateProvider (line 15670) | function $InterpolateProvider() {
function $IntervalProvider (line 15872) | function $IntervalProvider() {
function $LocaleProvider (line 16067) | function $LocaleProvider(){
function encodePath (line 16140) | function encodePath(path) {
function parseAbsoluteUrl (line 16151) | function parseAbsoluteUrl(absoluteUrl, locationObj, appBase) {
function parseAppUrl (line 16160) | function parseAppUrl(relativeUrl, locationObj, appBase) {
function beginsWith (line 16185) | function beginsWith(begin, whole) {
function stripHash (line 16192) | function stripHash(url) {
function stripFile (line 16198) | function stripFile(url) {
function serverBase (line 16203) | function serverBase(url) {
function LocationHtml5Url (line 16216) | function LocationHtml5Url(appBase, basePrefix) {
function LocationHashbangUrl (line 16284) | function LocationHashbangUrl(appBase, hashPrefix) {
function LocationHashbangInHtml5Url (line 16380) | function LocationHashbangInHtml5Url(appBase, hashPrefix) {
function locationGetter (line 16603) | function locationGetter(property) {
function locationGetterSetter (line 16610) | function locationGetterSetter(property, preprocess) {
function $LocationProvider (line 16658) | function $LocationProvider(){
function $LogProvider (line 16877) | function $LogProvider(){
function ensureSafeMemberName (line 17035) | function ensureSafeMemberName(name, fullExpression) {
function ensureSafeObject (line 17044) | function ensureSafeObject(obj, fullExpression) {
function setter (line 17844) | function setter(obj, path, setValue, fullExp, options) {
function cspSafeGetterFn (line 17882) | function cspSafeGetterFn(key0, key1, key2, key3, key4, fullExp, options) {
function simpleGetterFn1 (line 17986) | function simpleGetterFn1(key0, fullExp) {
function simpleGetterFn2 (line 17995) | function simpleGetterFn2(key0, key1, fullExp) {
function getterFn (line 18006) | function getterFn(path, options, fullExp) {
function $ParseProvider (line 18134) | function $ParseProvider() {
function $QProvider (line 18437) | function $QProvider() {
function qFactory (line 18455) | function qFactory(nextTick, exceptionHandler) {
function $RootScopeProvider (line 18857) | function $RootScopeProvider(){
function $$SanitizeUriProvider (line 19882) | function $$SanitizeUriProvider() {
function escapeForRegexp (line 19968) | function escapeForRegexp(s) {
function adjustMatcher (line 19974) | function adjustMatcher(matcher) {
function adjustMatchers (line 20002) | function adjustMatchers(matchers) {
function $SceDelegateProvider (line 20078) | function $SceDelegateProvider() {
function $SceProvider (line 20614) | function $SceProvider() {
function $SnifferProvider (line 21046) | function $SnifferProvider() {
function $TimeoutProvider (line 21123) | function $TimeoutProvider() {
function urlResolve (line 21271) | function urlResolve(url, base) {
function urlIsSameOrigin (line 21305) | function urlIsSameOrigin(requestUrl) {
function $WindowProvider (line 21351) | function $WindowProvider(){
function $FilterProvider (line 21431) | function $FilterProvider($provide) {
function filterFilter (line 21600) | function filterFilter() {
function currencyFilter (line 21744) | function currencyFilter($locale) {
function numberFilter (line 21804) | function numberFilter($locale) {
function formatNumber (line 21813) | function formatNumber(number, pattern, groupSep, decimalSep, fractionSiz...
function padNumber (line 21887) | function padNumber(num, digits, trim) {
function dateGetter (line 21901) | function dateGetter(name, size, offset, trim) {
function dateStrGetter (line 21912) | function dateStrGetter(name, shortForm) {
function timeZoneGetter (line 21921) | function timeZoneGetter(date) {
function ampmGetter (line 21931) | function ampmGetter(date, formats) {
function dateFilter (line 22047) | function dateFilter($locale) {
function jsonFilter (line 22150) | function jsonFilter() {
function limitToFilter (line 22247) | function limitToFilter(){
function orderByFilter (line 22348) | function orderByFilter($parse){
function ngDirective (line 22399) | function ngDirective(directive) {
function FormController (line 22883) | function FormController(element, attrs) {
function validate (line 23653) | function validate(ctrl, validatorName, validity, value){
function textInputType (line 23658) | function textInputType(scope, element, attr, ctrl, $sniffer, $browser) {
function numberInputType (line 23791) | function numberInputType(scope, element, attr, ctrl, $sniffer, $browser) {
function urlInputType (line 23834) | function urlInputType(scope, element, attr, ctrl, $sniffer, $browser) {
function emailInputType (line 23845) | function emailInputType(scope, element, attr, ctrl, $sniffer, $browser) {
function radioInputType (line 23856) | function radioInputType(scope, element, attr, ctrl) {
function checkboxInputType (line 23878) | function checkboxInputType(scope, element, attr, ctrl) {
function toggleValidCss (line 24261) | function toggleValidCss(isValid, validationErrorKey) {
function getStringValue (line 24904) | function getStringValue() { return (parsed(scope) || '').toString(); }
function classDirective (line 24912) | function classDirective(name, selector) {
function getBlockStart (line 27019) | function getBlockStart(block) {
function getBlockEnd (line 27023) | function getBlockEnd(block) {
function setupAsSingle (line 27950) | function setupAsSingle(scope, selectElement, ngModelCtrl, selectCtrl) {
function setupAsMultiple (line 27975) | function setupAsMultiple(scope, selectElement, ctrl) {
function setupAsOptions (line 28006) | function setupAsOptions(scope, selectElement, ctrl) {
function extractElementNode (line 28645) | function extractElementNode(element) {
function isMatchingElement (line 28654) | function isMatchingElement(elm1, elm2) {
function async (line 28682) | function async(fn) {
function lookup (line 28686) | function lookup(name) {
function performAnimation (line 28966) | function performAnimation(animationEvent, className, element, parentElem...
function cancelChildAnimations (line 29233) | function cancelChildAnimations(element) {
function cancelAnimations (line 29245) | function cancelAnimations(animations) {
function cleanup (line 29257) | function cleanup(element) {
function animationsDisabled (line 29269) | function animationsDisabled(element, parentElement) {
function afterReflow (line 29346) | function afterReflow(element, callback) {
function closeAllAnimations (line 29398) | function closeAllAnimations(elements, count) {
function getElementAnimationDetails (line 29407) | function getElementAnimationDetails(element, cacheKey) {
function parseMaxTime (line 29465) | function parseMaxTime(str) {
function getCacheKey (line 29476) | function getCacheKey(element) {
function animateSetup (line 29486) | function animateSetup(element, className, calculationDecorator) {
function blockTransitions (line 29551) | function blockTransitions(element) {
function blockKeyframeAnimations (line 29555) | function blockKeyframeAnimations(element) {
function unblockTransitions (line 29559) | function unblockTransitions(element) {
function unblockKeyframeAnimations (line 29567) | function unblockKeyframeAnimations(element) {
function animateRun (line 29575) | function animateRun(element, className, activeAnimationComplete) {
function prepareStaggerDelay (line 29669) | function prepareStaggerDelay(delayStyle, staggerDelay, index) {
function animateBefore (line 29678) | function animateBefore(element, className, calculationDecorator) {
function animateAfter (line 29686) | function animateAfter(element, className, afterAnimationComplete) {
function animate (line 29695) | function animate(element, className, animationComplete) {
function animateClose (line 29725) | function animateClose(element, className) {
function suffixClasses (line 29830) | function suffixClasses(classes, suffix) {
function $SanitizeProvider (line 29991) | function $SanitizeProvider() {
function sanitizeText (line 30003) | function sanitizeText(chars) {
function makeMap (line 30070) | function makeMap(str) {
function htmlParser (line 30089) | function htmlParser( html, handler ) {
function decodeEntities (line 30228) | function decodeEntities(value) {
function encodeEntities (line 30256) | function encodeEntities(value) {
function htmlSanitizeWriter (line 30276) | function htmlSanitizeWriter(buf, uriValidator){
function addText (line 30452) | function addText(text) {
function addLink (line 30459) | function addLink(url, text) {
function inherit (line 30510) | function inherit(parent, extra) {
function merge (line 30514) | function merge(dst) {
function ancestors (line 30532) | function ancestors(first, second) {
function keys (line 30549) | function keys(object) {
function arraySearch (line 30568) | function arraySearch(array, value) {
function inheritParams (line 30592) | function inheritParams(currentParams, newParams, $current, $to) {
function normalize (line 30615) | function normalize(keys, values) {
function equalForKeys (line 30634) | function equalForKeys(a, b, keys) {
function filterByKeys (line 30654) | function filterByKeys(keys, values) {
function $Resolve (line 30677) | function $Resolve( $q, $injector) {
function $TemplateFactory (line 30895) | function $TemplateFactory( $http, $templateCache, $injector) {
function UrlMatcher (line 31017) | function UrlMatcher(pattern) {
function $UrlMatcherFactory (line 31198) | function $UrlMatcherFactory() {
function $UrlRouterProvider (line 31233) | function $UrlRouterProvider( $urlMatcherFactory) {
function $StateProvider (line 31356) | function $StateProvider( $urlRouterProvider, $urlMatcherFactory, ...
function $ViewProvider (line 31916) | function $ViewProvider() {
function $ViewDirective (line 31945) | function $ViewDirective( $state, $compile, $controller, $injecto...
function parseStateRef (line 32061) | function parseStateRef(ref) {
function stateContext (line 32067) | function stateContext(el) {
function $StateRefDirective (line 32076) | function $StateRefDirective($state, $timeout) {
function $StateActiveDirective (line 32130) | function $StateActiveDirective($state, $stateParams, $interpolate) {
function $RouteProvider (line 32169) | function $RouteProvider( $stateProvider, $urlRouterProvider) {
function delegateService (line 32383) | function delegateService(methodNames) {
function onHardwareBackButton (line 33779) | function onHardwareBackButton(e) {
function createViewId (line 33833) | function createViewId(stateId) {
function getParentAnimationClass (line 34141) | function getParentAnimationClass(el) {
function setAnimationClass (line 34150) | function setAnimationClass() {
function $LocationDecorator (line 34284) | function $LocationDecorator($location, $timeout) {
function TapScrollToTopDirective (line 34446) | function TapScrollToTopDirective() {
function barDirective (line 34483) | function barDirective(isHeader) {
function prelink (line 34663) | function prelink($scope, $element, $attr, navViewCtrl) {
function prelink (line 35470) | function prelink($scope, $element, $attr, navBarCtrl) {
function prelink (line 35887) | function prelink($scope, $element, $attr) {
function prelink (line 36140) | function prelink($scope, $element, $attr, sideMenuCtrl) {
function prelink (line 36723) | function prelink($scope, $element, $attr, tabsCtrl) {
function attrStr (line 36789) | function attrStr(k,v) {
function selectTabIfMatchesState (line 36870) | function selectTabIfMatchesState() {
function onTap (line 37039) | function onTap(e) {
function stopEvent (line 37071) | function stopEvent(e) {
function updateView (line 37299) | function updateView(doAnimate) {
FILE: ionic1/official/maps/www/lib/ionic/js/ionic.js
function B1 (line 33) | function B1(t) { return t*t*t; }
function B2 (line 34) | function B2(t) { return 3*t*t*(1-t); }
function B3 (line 35) | function B3(t) { return 3*t*(1-t)*(1-t); }
function B4 (line 36) | function B4(t) { return (1-t)*(1-t)*(1-t); }
function domReady (line 144) | function domReady() {
function setup (line 611) | function setup() {
function onWindowLoad (line 2235) | function onWindowLoad() {
function onPlatformReady (line 2249) | function onPlatformReady() {
function update (line 2303) | function update(fn) {
function tapPolyfill (line 2385) | function tapPolyfill(orgEvent) {
function preventGhostClick (line 2420) | function preventGhostClick(e) {
function isRecentTap (line 2453) | function isRecentTap(event) {
function isScrolledSinceStart (line 2471) | function isScrolledSinceStart(event) {
function recordCoordinates (line 2486) | function recordCoordinates(event) {
function getCoordinates (line 2502) | function getCoordinates(event) {
function removeClickPrevent (line 2520) | function removeClickPrevent(e) {
function stopEvent (line 2529) | function stopEvent(e){
function blurActive (line 2535) | function blurActive() {
function recordStartCoordinates (line 2546) | function recordStartCoordinates(e) {
function activateElements (line 2634) | function activateElements() {
function deactivateElements (line 2645) | function deactivateElements() {
function onEnd (line 2654) | function onEnd(e) {
function clear (line 2659) | function clear() {
function androidKeyboardFix (line 2879) | function androidKeyboardFix() {
function shouldIgnorePress (line 3557) | function shouldIgnorePress(e) {
function setup (line 5964) | function setup() {
function prev (line 6017) | function prev() {
function next (line 6024) | function next() {
function circle (line 6031) | function circle(index) {
function slide (line 6038) | function slide(to, slideSpeed) {
function move (line 6081) | function move(index, dist, speed) {
function translate (line 6088) | function translate(index, dist, speed) {
function animate (line 6108) | function animate(from, to, speed) {
function begin (line 6147) | function begin() {
function stop (line 6153) | function stop() {
FILE: react-vite/base/cypress.config.ts
method setupNodeEvents (line 6) | setupNodeEvents(on, config) {
FILE: react-vite/official/blank/src/components/ExploreContainer.tsx
type ContainerProps (line 3) | interface ContainerProps { }
FILE: react-vite/official/list/src/components/MessageListItem.tsx
type MessageListItemProps (line 9) | interface MessageListItemProps {
FILE: react-vite/official/list/src/data/messages.ts
type Message (line 1) | interface Message {
FILE: react-vite/official/list/src/pages/ViewMessage.tsx
function ViewMessage (line 20) | function ViewMessage() {
FILE: react-vite/official/sidemenu/src/components/ExploreContainer.tsx
type ContainerProps (line 3) | interface ContainerProps {
FILE: react-vite/official/sidemenu/src/components/Menu.tsx
type AppPage (line 17) | interface AppPage {
FILE: react-vite/official/tabs/src/components/ExploreContainer.tsx
type ContainerProps (line 3) | interface ContainerProps {
FILE: react/base/src/serviceWorkerRegistration.ts
type Config (line 23) | type Config = {
function register (line 28) | function register(config?: Config) {
function registerValidSW (line 62) | function registerValidSW(swUrl: string, config?: Config) {
function checkValidServiceWorker (line 106) | function checkValidServiceWorker(swUrl: string, config?: Config) {
function unregister (line 134) | function unregister() {
FILE: react/official/list/src/components/MessageListItem.tsx
type MessageListItemProps (line 10) | interface MessageListItemProps {
FILE: react/official/list/src/data/messages.ts
type Message (line 1) | interface Message {
FILE: react/official/list/src/pages/ViewMessage.tsx
function ViewMessage (line 22) | function ViewMessage() {
FILE: react/official/sidemenu/src/components/ExploreContainer.tsx
type ContainerProps (line 4) | interface ContainerProps {
FILE: react/official/sidemenu/src/components/Menu.tsx
type AppPage (line 18) | interface AppPage {
FILE: react/official/tabs/src/components/ExploreContainer.tsx
type ContainerProps (line 4) | interface ContainerProps {
FILE: src/commands/build.ts
class BuildCommand (line 18) | class BuildCommand extends Command {
method getMetadata (line 19) | async getMetadata(): Promise<CommandMetadata> {
method run (line 45) | async run(inputs: CommandLineInputs, options: CommandLineOptions) {
FILE: src/commands/deploy.ts
class DeployCommand (line 22) | class DeployCommand extends Command {
method getMetadata (line 23) | async getMetadata(): Promise<CommandMetadata> {
method run (line 42) | async run(inputs: CommandLineInputs, options: CommandLineOptions) {
function writeStarter (line 129) | async function writeStarter(rs: NodeJS.ReadableStream, dest: string) {
function upload (line 140) | async function upload(rs: NodeJS.ReadableStream, key: string, params?: P...
FILE: src/commands/find-redundant.ts
class FindRedundantCommand (line 16) | class FindRedundantCommand extends Command {
method getMetadata (line 17) | async getMetadata(): Promise<CommandMetadata> {
method run (line 31) | async run(inputs: CommandLineInputs, options: CommandLineOptions) {
FILE: src/commands/generate-checksum.ts
class GenerateChecksumCommand (line 12) | class GenerateChecksumCommand extends Command {
method getMetadata (line 13) | async getMetadata(): Promise<CommandMetadata> {
method run (line 20) | async run(inputs: CommandLineInputs, options: CommandLineOptions) {
FILE: src/commands/test.ts
class TestCommand (line 10) | class TestCommand extends Command {
method getMetadata (line 11) | async getMetadata(): Promise<CommandMetadata> {
method run (line 30) | async run(inputs: CommandLineInputs, options: CommandLineOptions) {
FILE: src/definitions.ts
type StarterList (line 3) | interface StarterList {
type StarterManifest (line 17) | interface StarterManifest {
type TsconfigJson (line 30) | type TsconfigJson = TsconfigBase & (TsconfgFiles | TsconfigExclude | Tsc...
type TsconfigBase (line 32) | interface TsconfigBase {
type TsconfgFiles (line 143) | interface TsconfgFiles {
type TsconfigExclude (line 146) | interface TsconfigExclude {
type TsconfigInclude (line 149) | interface TsconfigInclude {
FILE: src/index.ts
class StartersNamespace (line 9) | class StartersNamespace extends Namespace {
method getMetadata (line 10) | async getMetadata() {
method getCommands (line 17) | async getCommands(): Promise<CommandMap> {
function run (line 30) | async function run(argv: string[], env: { [k: string]: string }) {
FILE: src/lib/build.ts
constant STARTER_TYPE_OFFICIAL (line 12) | const STARTER_TYPE_OFFICIAL = 'official';
constant STARTER_TYPE_COMMUNITY (line 13) | const STARTER_TYPE_COMMUNITY = 'community';
constant REPO_DIRECTORY (line 14) | const REPO_DIRECTORY = path.resolve(path.dirname(path.dirname(__dirname)));
constant INTEGRATIONS_DIRECTORY (line 15) | const INTEGRATIONS_DIRECTORY = path.resolve(REPO_DIRECTORY, 'integration...
constant IONIC_TYPE_DIRECTORIES (line 16) | const IONIC_TYPE_DIRECTORIES = [
constant BUILD_DIRECTORY (line 27) | const BUILD_DIRECTORY = path.resolve(REPO_DIRECTORY, 'build');
constant STARTERS_LIST_PATH (line 28) | const STARTERS_LIST_PATH = path.resolve(BUILD_DIRECTORY, 'starters.json');
function getStarterInfoFromPath (line 30) | function getStarterInfoFromPath(starterDir: string): string[] {
function generateStarterName (line 34) | function generateStarterName(starterType: string, starterDir: string) {
function gatherChangedBaseFiles (line 45) | async function gatherChangedBaseFiles(): Promise<string[]> {
function getStarterDirectories (line 60) | async function getStarterDirectories(
function buildStarters (line 77) | async function buildStarters({
function buildStarterId (line 157) | function buildStarterId(ionicType: string, starterType: string, starterD...
function buildStarter (line 164) | async function buildStarter(ionicType: string, starterType: string, star...
FILE: src/utils/index.ts
constant IONIC_MANIFEST_FILE (line 11) | const IONIC_MANIFEST_FILE = 'ionic.starter.json';
function getCommandHeader (line 13) | function getCommandHeader(title: string): string {
function getDirectories (line 19) | async function getDirectories(p: string): Promise<string[]> {
function readTsconfigJson (line 27) | async function readTsconfigJson(dir: string): Promise<TsconfigJson> {
function readGitignore (line 37) | async function readGitignore(dir: string): Promise<string[]> {
function readStarterManifest (line 47) | async function readStarterManifest(dir: string): Promise<StarterManifest...
function log (line 55) | async function log(id: string, msg: string) {
function runcmd (line 59) | function runcmd(command: string, args: string[] = [], opts: SpawnOptions...
FILE: vue-vite/base/cypress.config.ts
method setupNodeEvents (line 11) | setupNodeEvents(on, config) {
FILE: vue-vite/official/list/src/data/messages.ts
type Message (line 1) | interface Message {
FILE: vue/official/list/src/data/messages.ts
type Message (line 1) | interface Message {
Copy disabled (too large)
Download .json
Condensed preview — 754 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (10,503K chars).
[
{
"path": ".github/CODEOWNERS",
"chars": 508,
"preview": "# Lines starting with '#' are comments.\n# Each line is a file pattern followed by one or more owners.\n\n# More details ar"
},
{
"path": ".github/ISSUE_TEMPLATE.md",
"chars": 820,
"preview": "<!-- 🚨 PLEASE READ 🚨\n\nThis issue tracker is for bug reports and feature requests for the Ionic Starter Templates.\n\n- For"
},
{
"path": ".github/ionic-issue-bot.yml",
"chars": 3626,
"preview": "triage:\n label: triage\n dryRun: false\n\ncloseAndLock:\n labels:\n - label: \"ionitron: support\"\n message: >\n "
},
{
"path": ".github/workflows/main.yml",
"chars": 4656,
"preview": "name: Build & Test\n\non:\n push:\n branches:\n - main\n pull_request:\n\njobs:\n build:\n runs-on: ubuntu-latest\n\n "
},
{
"path": ".github/workflows/wizard-templates.yml",
"chars": 951,
"preview": "name: Generate Wizard Templates\n\non:\n schedule:\n - cron: '30 9 * * *'\n\njobs:\n wizard-templates:\n strategy:\n "
},
{
"path": ".gitignore",
"chars": 113,
"preview": ".idea\nlogs\n*.log\nnpm-debug.log*\n\n.DS_Store\n\nnode_modules/\n\n.env\n\nbuild/*\n!build/.gitkeep\ndist\n\nstarter-checksum*\n"
},
{
"path": ".gitmodules",
"chars": 1777,
"preview": "[submodule \"ionic-angular/community/ionic-team/example\"]\n\tpath = ionic-angular/community/ionic-team/example\n\turl = https"
},
{
"path": ".npmrc",
"chars": 19,
"preview": "package-lock=false\n"
},
{
"path": "CONTRIBUTING.md",
"chars": 8039,
"preview": "# Contributing\n\n## Getting Started\n\nTo get started, clone the repo, and install dependencies:\n\n```bash\nnpm i\n```\n\nThen b"
},
{
"path": "LICENSE",
"chars": 1062,
"preview": "MIT License\n\nCopyright (c) 2017 Ionic\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof t"
},
{
"path": "README.md",
"chars": 2905,
"preview": "# Ionic Starter Templates\n\n:book: **Start an Ionic app**: See our [Getting\nStarted](https://ionicframework.com/docs) gui"
},
{
"path": "angular/base/.browserslistrc",
"chars": 538,
"preview": "# This file is used by the build system to adjust CSS and JS output to support the specified browsers below.\n# For addit"
},
{
"path": "angular/base/.editorconfig",
"chars": 274,
"preview": "# Editor configuration, see https://editorconfig.org\nroot = true\n\n[*]\ncharset = utf-8\nindent_style = space\nindent_size ="
},
{
"path": "angular/base/.eslintrc.json",
"chars": 1112,
"preview": "{\n \"root\": true,\n \"ignorePatterns\": [\"projects/**/*\"],\n \"overrides\": [\n {\n \"files\": [\"*.ts\"],\n \"parserOp"
},
{
"path": "angular/base/.gitignore",
"chars": 796,
"preview": "# Specifies intentionally untracked files to ignore when using Git\n# http://git-scm.com/docs/gitignore\n\n*~\n*.sw[mnpcod]\n"
},
{
"path": "angular/base/.vscode/extensions.json",
"chars": 64,
"preview": "{\n \"recommendations\": [\n \"Webnative.webnative\"\n ]\n}\n"
},
{
"path": "angular/base/.vscode/settings.json",
"chars": 117,
"preview": "{\n \"typescript.preferences.autoImportFileExcludePatterns\": [\"@ionic/angular/common\", \"@ionic/angular/standalone\"]\n}\n"
},
{
"path": "angular/base/angular.json",
"chars": 4225,
"preview": "{\n \"$schema\": \"./node_modules/@angular/cli/lib/config/schema.json\",\n \"version\": 1,\n \"newProjectRoot\": \"projects\",\n \""
},
{
"path": "angular/base/ionic.config.json",
"chars": 90,
"preview": "{\n \"name\": \"ionic-app-base\",\n \"app_id\": \"\",\n \"type\": \"angular\",\n \"integrations\": {}\n}\n"
},
{
"path": "angular/base/karma.conf.js",
"chars": 1420,
"preview": "// Karma configuration file, see link for more information\n// https://karma-runner.github.io/1.0/config/configuration-fi"
},
{
"path": "angular/base/package.json",
"chars": 1808,
"preview": "{\n \"name\": \"ionic-app-base\",\n \"version\": \"0.0.0\",\n \"author\": \"Ionic Framework\",\n \"homepage\": \"https://ionicframework"
},
{
"path": "angular/base/src/app/app.component.html",
"chars": 21,
"preview": "<ion-app>\n</ion-app>\n"
},
{
"path": "angular/base/src/app/app.component.scss",
"chars": 0,
"preview": ""
},
{
"path": "angular/base/src/app/app.component.spec.ts",
"chars": 552,
"preview": "import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';\nimport { TestBed } from '@angular/core/testing';\n\nimport { AppCo"
},
{
"path": "angular/base/src/app/app.component.ts",
"chars": 228,
"preview": "import { Component } from '@angular/core';\n\n@Component({\n selector: 'app-root',\n templateUrl: 'app.component.html',\n "
},
{
"path": "angular/base/src/app/app.module.ts",
"chars": 503,
"preview": "import { NgModule } from '@angular/core';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { RouteReuse"
},
{
"path": "angular/base/src/environments/environment.prod.ts",
"chars": 51,
"preview": "export const environment = {\n production: true\n};\n"
},
{
"path": "angular/base/src/environments/environment.ts",
"chars": 658,
"preview": "// This file can be replaced during build by using the `fileReplacements` array.\n// `ng build` replaces `environment.ts`"
},
{
"path": "angular/base/src/global.scss",
"chars": 1443,
"preview": "/*\n * App Global CSS\n * ----------------------------------------------------------------------------\n * Put style rules "
},
{
"path": "angular/base/src/index.html",
"chars": 730,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n <meta charset=\"utf-8\" />\n <title>Ionic App</title>\n\n <base href=\"/\" />\n\n <"
},
{
"path": "angular/base/src/main.ts",
"chars": 211,
"preview": "import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app/app.module"
},
{
"path": "angular/base/src/polyfills.ts",
"chars": 2363,
"preview": "/**\n * This file includes polyfills needed by Angular and is loaded before the app.\n * You can add your own extra polyfi"
},
{
"path": "angular/base/src/test.ts",
"chars": 459,
"preview": "// This file is required by karma.conf.js and loads recursively all the .spec and framework files\n\nimport 'zone.js/testi"
},
{
"path": "angular/base/src/theme/variables.scss",
"chars": 113,
"preview": "// For information on how to create your own theme, please refer to:\n// https://ionicframework.com/docs/theming/\n"
},
{
"path": "angular/base/src/zone-flags.ts",
"chars": 201,
"preview": "/**\n * Prevents Angular change detection from\n * running with certain Web Component callbacks\n */\n// eslint-disable-next"
},
{
"path": "angular/base/tsconfig.app.json",
"chars": 287,
"preview": "/* To learn more about this file see: https://angular.io/config/tsconfig. */\n{\n \"extends\": \"./tsconfig.json\",\n \"compil"
},
{
"path": "angular/base/tsconfig.json",
"chars": 927,
"preview": "/* To learn more about this file see: https://angular.io/config/tsconfig. */\n{\n \"compileOnSave\": false,\n \"compilerOpti"
},
{
"path": "angular/base/tsconfig.spec.json",
"chars": 333,
"preview": "/* To learn more about this file see: https://angular.io/config/tsconfig. */\n{\n \"extends\": \"./tsconfig.json\",\n \"compil"
},
{
"path": "angular/community/.gitkeep",
"chars": 0,
"preview": ""
},
{
"path": "angular/official/blank/ionic.starter.json",
"chars": 256,
"preview": "{\n \"name\": \"Blank Starter\",\n \"baseref\": \"main\",\n \"tarignore\": [\n \"node_modules\",\n \"package-lock.json\",\n \"www"
},
{
"path": "angular/official/blank/src/app/app-routing.module.ts",
"chars": 494,
"preview": "import { NgModule } from '@angular/core';\nimport { PreloadAllModules, RouterModule, Routes } from '@angular/router';\n\nco"
},
{
"path": "angular/official/blank/src/app/app.component.html",
"chars": 63,
"preview": "<ion-app>\n <ion-router-outlet></ion-router-outlet>\n</ion-app>\n"
},
{
"path": "angular/official/blank/src/app/app.module.ts",
"chars": 578,
"preview": "import { NgModule } from '@angular/core';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { RouteReuse"
},
{
"path": "angular/official/blank/src/app/home/home-routing.module.ts",
"chars": 338,
"preview": "import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { HomePage } fr"
},
{
"path": "angular/official/blank/src/app/home/home.module.ts",
"chars": 457,
"preview": "import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IonicModule } from '@"
},
{
"path": "angular/official/blank/src/app/home/home.page.html",
"chars": 531,
"preview": "<ion-header [translucent]=\"true\">\n <ion-toolbar>\n <ion-title>\n Blank\n </ion-title>\n </ion-toolbar>\n</ion-he"
},
{
"path": "angular/official/blank/src/app/home/home.page.scss",
"chars": 322,
"preview": "#container {\n text-align: center;\n\n position: absolute;\n left: 0;\n right: 0;\n top: 50%;\n transform: translateY(-50"
},
{
"path": "angular/official/blank/src/app/home/home.page.spec.ts",
"chars": 629,
"preview": "import { ComponentFixture, TestBed } from '@angular/core/testing';\nimport { IonicModule } from '@ionic/angular';\n\nimport"
},
{
"path": "angular/official/blank/src/app/home/home.page.ts",
"chars": 218,
"preview": "import { Component } from '@angular/core';\n\n@Component({\n selector: 'app-home',\n templateUrl: 'home.page.html',\n styl"
},
{
"path": "angular/official/list/ionic.config.json",
"chars": 64,
"preview": "{\n \"name\": \"list\",\n \"integrations\": {},\n \"type\": \"angular\"\n}\n"
},
{
"path": "angular/official/list/ionic.starter.json",
"chars": 255,
"preview": "{\n \"name\": \"List Starter\",\n \"baseref\": \"main\",\n \"tarignore\": [\n \"node_modules\",\n \"package-lock.json\",\n \"www\""
},
{
"path": "angular/official/list/src/app/app-routing.module.ts",
"chars": 633,
"preview": "import { NgModule } from '@angular/core';\nimport { PreloadAllModules, RouterModule, Routes } from '@angular/router';\n\nco"
},
{
"path": "angular/official/list/src/app/app.component.html",
"chars": 63,
"preview": "<ion-app>\n <ion-router-outlet></ion-router-outlet>\n</ion-app>\n"
},
{
"path": "angular/official/list/src/app/app.module.ts",
"chars": 578,
"preview": "import { NgModule } from '@angular/core';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { RouteReuse"
},
{
"path": "angular/official/list/src/app/home/home-routing.module.ts",
"chars": 339,
"preview": "import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\n\nimport { HomePage } f"
},
{
"path": "angular/official/list/src/app/home/home.module.ts",
"chars": 552,
"preview": "import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IonicModule } from '@"
},
{
"path": "angular/official/list/src/app/home/home.page.html",
"chars": 603,
"preview": "<ion-header [translucent]=\"true\">\n <ion-toolbar>\n <ion-title>\n Inbox\n </ion-title>\n </ion-toolbar>\n</ion-he"
},
{
"path": "angular/official/list/src/app/home/home.page.scss",
"chars": 0,
"preview": ""
},
{
"path": "angular/official/list/src/app/home/home.page.spec.ts",
"chars": 796,
"preview": "import { ComponentFixture, TestBed } from '@angular/core/testing';\nimport { RouterModule } from '@angular/router';\nimpor"
},
{
"path": "angular/official/list/src/app/home/home.page.ts",
"chars": 635,
"preview": "import { Component, inject } from '@angular/core';\nimport { RefresherCustomEvent } from '@ionic/angular';\nimport { Messa"
},
{
"path": "angular/official/list/src/app/message/message.component.html",
"chars": 1025,
"preview": "@if (message) {\n <ion-item [routerLink]=\"'/message/' + message.id\" [detail]=\"false\">\n <div slot=\"start\" [class]=\"!me"
},
{
"path": "angular/official/list/src/app/message/message.component.scss",
"chars": 1047,
"preview": "ion-item {\n --padding-start: 0;\n --inner-padding-end: 0;\n}\n\nion-label {\n margin-top: 12px;\n margin-bottom: 12px;\n}\n\n"
},
{
"path": "angular/official/list/src/app/message/message.component.spec.ts",
"chars": 759,
"preview": "import { ComponentFixture, TestBed } from '@angular/core/testing';\nimport { RouterModule } from '@angular/router';\nimpor"
},
{
"path": "angular/official/list/src/app/message/message.component.ts",
"chars": 534,
"preview": "import { ChangeDetectionStrategy, Component, inject, Input } from '@angular/core';\nimport { Platform } from '@ionic/angu"
},
{
"path": "angular/official/list/src/app/message/message.module.ts",
"chars": 477,
"preview": "import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@"
},
{
"path": "angular/official/list/src/app/services/data.service.spec.ts",
"chars": 326,
"preview": "import { TestBed } from '@angular/core/testing';\n\nimport { DataService } from './data.service';\n\ndescribe('DataService',"
},
{
"path": "angular/official/list/src/app/services/data.service.ts",
"chars": 1562,
"preview": "import { Injectable } from '@angular/core';\n\nexport interface Message {\n fromName: string;\n subject: string;\n date: s"
},
{
"path": "angular/official/list/src/app/view-message/view-message-routing.module.ts",
"chars": 368,
"preview": "import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\n\nimport { ViewMessageP"
},
{
"path": "angular/official/list/src/app/view-message/view-message.module.ts",
"chars": 508,
"preview": "import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@"
},
{
"path": "angular/official/list/src/app/view-message/view-message.page.html",
"chars": 1223,
"preview": "<ion-header [translucent]=\"true\">\n <ion-toolbar>\n <ion-buttons slot=\"start\">\n <ion-back-button [text]=\"getBackB"
},
{
"path": "angular/official/list/src/app/view-message/view-message.page.scss",
"chars": 748,
"preview": "ion-item {\n --inner-padding-end: 0;\n --background: transparent;\n}\n\nion-label {\n margin-top: 12px;\n margin-bottom: 12"
},
{
"path": "angular/official/list/src/app/view-message/view-message.page.spec.ts",
"chars": 855,
"preview": "import { ComponentFixture, TestBed } from '@angular/core/testing';\nimport { IonicModule } from '@ionic/angular';\nimport "
},
{
"path": "angular/official/list/src/app/view-message/view-message.page.ts",
"chars": 875,
"preview": "\nimport { Component, inject, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { I"
},
{
"path": "angular/official/sidemenu/ionic.starter.json",
"chars": 259,
"preview": "{\n \"name\": \"Sidemenu Starter\",\n \"baseref\": \"main\",\n \"tarignore\": [\n \"node_modules\",\n \"package-lock.json\",\n \""
},
{
"path": "angular/official/sidemenu/src/app/app-routing.module.ts",
"chars": 512,
"preview": "import { NgModule } from '@angular/core';\nimport { PreloadAllModules, RouterModule, Routes } from '@angular/router';\n\nco"
},
{
"path": "angular/official/sidemenu/src/app/app.component.html",
"chars": 1291,
"preview": "<ion-app>\n <ion-split-pane contentId=\"main-content\">\n <ion-menu contentId=\"main-content\" type=\"overlay\">\n <ion-"
},
{
"path": "angular/official/sidemenu/src/app/app.component.scss",
"chars": 1950,
"preview": "ion-menu ion-content {\n --background: var(--ion-item-background, var(--ion-background-color, #fff));\n}\n\nion-menu.md ion"
},
{
"path": "angular/official/sidemenu/src/app/app.component.spec.ts",
"chars": 1487,
"preview": "import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';\nimport { TestBed } from '@angular/core/testing';\n\nimport { Route"
},
{
"path": "angular/official/sidemenu/src/app/app.component.ts",
"chars": 724,
"preview": "import { Component } from '@angular/core';\n@Component({\n selector: 'app-root',\n templateUrl: 'app.component.html',\n s"
},
{
"path": "angular/official/sidemenu/src/app/app.module.ts",
"chars": 578,
"preview": "import { NgModule } from '@angular/core';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { RouteReuse"
},
{
"path": "angular/official/sidemenu/src/app/folder/folder-routing.module.ts",
"chars": 347,
"preview": "import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\n\nimport { FolderPage }"
},
{
"path": "angular/official/sidemenu/src/app/folder/folder.module.ts",
"chars": 472,
"preview": "import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@"
},
{
"path": "angular/official/sidemenu/src/app/folder/folder.page.html",
"chars": 624,
"preview": "<ion-header [translucent]=\"true\">\n <ion-toolbar>\n <ion-buttons slot=\"start\">\n <ion-menu-button></ion-menu-butto"
},
{
"path": "angular/official/sidemenu/src/app/folder/folder.page.scss",
"chars": 375,
"preview": "ion-menu-button {\n color: var(--ion-color-primary);\n}\n\n#container {\n text-align: center;\n position: absolute;\n left:"
},
{
"path": "angular/official/sidemenu/src/app/folder/folder.page.spec.ts",
"chars": 717,
"preview": "import { ComponentFixture, TestBed } from '@angular/core/testing';\nimport { RouterModule } from '@angular/router';\nimpor"
},
{
"path": "angular/official/sidemenu/src/app/folder/folder.page.ts",
"chars": 486,
"preview": "import { Component, inject, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\n@Component"
},
{
"path": "angular/official/tabs/ionic.starter.json",
"chars": 255,
"preview": "{\n \"name\": \"Tabs Starter\",\n \"baseref\": \"main\",\n \"tarignore\": [\n \"node_modules\",\n \"package-lock.json\",\n \"www\""
},
{
"path": "angular/official/tabs/src/app/app-routing.module.ts",
"chars": 417,
"preview": "import { NgModule } from '@angular/core';\nimport { PreloadAllModules, RouterModule, Routes } from '@angular/router';\n\nco"
},
{
"path": "angular/official/tabs/src/app/app.component.html",
"chars": 63,
"preview": "<ion-app>\n <ion-router-outlet></ion-router-outlet>\n</ion-app>\n"
},
{
"path": "angular/official/tabs/src/app/app.module.ts",
"chars": 578,
"preview": "import { NgModule } from '@angular/core';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { RouteReuse"
},
{
"path": "angular/official/tabs/src/app/explore-container/explore-container.component.html",
"chars": 187,
"preview": "<div id=\"container\">\n <strong>{{ name }}</strong>\n <p>Explore <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https"
},
{
"path": "angular/official/tabs/src/app/explore-container/explore-container.component.scss",
"chars": 322,
"preview": "#container {\n text-align: center;\n\n position: absolute;\n left: 0;\n right: 0;\n top: 50%;\n transform: translateY(-50"
},
{
"path": "angular/official/tabs/src/app/explore-container/explore-container.component.spec.ts",
"chars": 749,
"preview": "import { ComponentFixture, TestBed } from '@angular/core/testing';\nimport { IonicModule } from '@ionic/angular';\n\nimport"
},
{
"path": "angular/official/tabs/src/app/explore-container/explore-container.component.ts",
"chars": 302,
"preview": "import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'app-explore-container',\n templateUrl: './e"
},
{
"path": "angular/official/tabs/src/app/explore-container/explore-container.module.ts",
"chars": 461,
"preview": "import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@"
},
{
"path": "angular/official/tabs/src/app/tab1/tab1-routing.module.ts",
"chars": 338,
"preview": "import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { Tab1Page } fr"
},
{
"path": "angular/official/tabs/src/app/tab1/tab1.module.ts",
"chars": 590,
"preview": "import { IonicModule } from '@ionic/angular';\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@a"
},
{
"path": "angular/official/tabs/src/app/tab1/tab1.page.html",
"chars": 381,
"preview": "<ion-header [translucent]=\"true\">\n <ion-toolbar>\n <ion-title>\n Tab 1\n </ion-title>\n </ion-toolbar>\n</ion-he"
},
{
"path": "angular/official/tabs/src/app/tab1/tab1.page.scss",
"chars": 0,
"preview": ""
},
{
"path": "angular/official/tabs/src/app/tab1/tab1.page.spec.ts",
"chars": 760,
"preview": "import { ComponentFixture, TestBed } from '@angular/core/testing';\nimport { IonicModule } from '@ionic/angular';\n\nimport"
},
{
"path": "angular/official/tabs/src/app/tab1/tab1.page.ts",
"chars": 218,
"preview": "import { Component } from '@angular/core';\n\n@Component({\n selector: 'app-tab1',\n templateUrl: 'tab1.page.html',\n styl"
},
{
"path": "angular/official/tabs/src/app/tab2/tab2-routing.module.ts",
"chars": 338,
"preview": "import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { Tab2Page } fr"
},
{
"path": "angular/official/tabs/src/app/tab2/tab2.module.ts",
"chars": 590,
"preview": "import { IonicModule } from '@ionic/angular';\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@a"
},
{
"path": "angular/official/tabs/src/app/tab2/tab2.page.html",
"chars": 381,
"preview": "<ion-header [translucent]=\"true\">\n <ion-toolbar>\n <ion-title>\n Tab 2\n </ion-title>\n </ion-toolbar>\n</ion-he"
},
{
"path": "angular/official/tabs/src/app/tab2/tab2.page.scss",
"chars": 0,
"preview": ""
},
{
"path": "angular/official/tabs/src/app/tab2/tab2.page.spec.ts",
"chars": 760,
"preview": "import { ComponentFixture, TestBed } from '@angular/core/testing';\nimport { IonicModule } from '@ionic/angular';\n\nimport"
},
{
"path": "angular/official/tabs/src/app/tab2/tab2.page.ts",
"chars": 218,
"preview": "import { Component } from '@angular/core';\n\n@Component({\n selector: 'app-tab2',\n templateUrl: 'tab2.page.html',\n styl"
},
{
"path": "angular/official/tabs/src/app/tab3/tab3-routing.module.ts",
"chars": 338,
"preview": "import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { Tab3Page } fr"
},
{
"path": "angular/official/tabs/src/app/tab3/tab3.module.ts",
"chars": 590,
"preview": "import { IonicModule } from '@ionic/angular';\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@a"
},
{
"path": "angular/official/tabs/src/app/tab3/tab3.page.html",
"chars": 381,
"preview": "<ion-header [translucent]=\"true\">\n <ion-toolbar>\n <ion-title>\n Tab 3\n </ion-title>\n </ion-toolbar>\n</ion-he"
},
{
"path": "angular/official/tabs/src/app/tab3/tab3.page.scss",
"chars": 0,
"preview": ""
},
{
"path": "angular/official/tabs/src/app/tab3/tab3.page.spec.ts",
"chars": 760,
"preview": "import { ComponentFixture, TestBed } from '@angular/core/testing';\nimport { IonicModule } from '@ionic/angular';\n\nimport"
},
{
"path": "angular/official/tabs/src/app/tab3/tab3.page.ts",
"chars": 218,
"preview": "import { Component } from '@angular/core';\n\n@Component({\n selector: 'app-tab3',\n templateUrl: 'tab3.page.html',\n styl"
},
{
"path": "angular/official/tabs/src/app/tabs/tabs-routing.module.ts",
"chars": 882,
"preview": "import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { TabsPage } fr"
},
{
"path": "angular/official/tabs/src/app/tabs/tabs.module.ts",
"chars": 457,
"preview": "import { IonicModule } from '@ionic/angular';\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@a"
},
{
"path": "angular/official/tabs/src/app/tabs/tabs.page.html",
"chars": 581,
"preview": "<ion-tabs>\n\n <ion-tab-bar slot=\"bottom\">\n <ion-tab-button tab=\"tab1\" href=\"/tabs/tab1\">\n <ion-icon aria-hidden="
},
{
"path": "angular/official/tabs/src/app/tabs/tabs.page.scss",
"chars": 1,
"preview": "\n"
},
{
"path": "angular/official/tabs/src/app/tabs/tabs.page.spec.ts",
"chars": 668,
"preview": "import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';\nimport { ComponentFixture, TestBed } from '@angular/core/testing"
},
{
"path": "angular/official/tabs/src/app/tabs/tabs.page.ts",
"chars": 218,
"preview": "import { Component } from '@angular/core';\n\n@Component({\n selector: 'app-tabs',\n templateUrl: 'tabs.page.html',\n styl"
},
{
"path": "angular-standalone/base/.browserslistrc",
"chars": 538,
"preview": "# This file is used by the build system to adjust CSS and JS output to support the specified browsers below.\n# For addit"
},
{
"path": "angular-standalone/base/.editorconfig",
"chars": 274,
"preview": "# Editor configuration, see https://editorconfig.org\nroot = true\n\n[*]\ncharset = utf-8\nindent_style = space\nindent_size ="
},
{
"path": "angular-standalone/base/.eslintrc.json",
"chars": 1060,
"preview": "{\n \"root\": true,\n \"ignorePatterns\": [\"projects/**/*\"],\n \"overrides\": [\n {\n \"files\": [\"*.ts\"],\n \"parserOp"
},
{
"path": "angular-standalone/base/.gitignore",
"chars": 796,
"preview": "# Specifies intentionally untracked files to ignore when using Git\n# http://git-scm.com/docs/gitignore\n\n*~\n*.sw[mnpcod]\n"
},
{
"path": "angular-standalone/base/.vscode/extensions.json",
"chars": 64,
"preview": "{\n \"recommendations\": [\n \"Webnative.webnative\"\n ]\n}\n"
},
{
"path": "angular-standalone/base/.vscode/settings.json",
"chars": 106,
"preview": "{\n \"typescript.preferences.autoImportFileExcludePatterns\": [\"@ionic/angular/common\", \"@ionic/angular\"]\n}\n"
},
{
"path": "angular-standalone/base/angular.json",
"chars": 4158,
"preview": "{\n \"$schema\": \"./node_modules/@angular/cli/lib/config/schema.json\",\n \"version\": 1,\n \"newProjectRoot\": \"projects\",\n \""
},
{
"path": "angular-standalone/base/ionic.config.json",
"chars": 101,
"preview": "{\n \"name\": \"ionic-app-base\",\n \"app_id\": \"\",\n \"type\": \"angular-standalone\",\n \"integrations\": {}\n}\n"
},
{
"path": "angular-standalone/base/karma.conf.js",
"chars": 1420,
"preview": "// Karma configuration file, see link for more information\n// https://karma-runner.github.io/1.0/config/configuration-fi"
},
{
"path": "angular-standalone/base/package.json",
"chars": 1808,
"preview": "{\n \"name\": \"ionic-app-base\",\n \"version\": \"0.0.0\",\n \"author\": \"Ionic Framework\",\n \"homepage\": \"https://ionicframework"
},
{
"path": "angular-standalone/base/src/app/app.component.html",
"chars": 21,
"preview": "<ion-app>\n</ion-app>\n"
},
{
"path": "angular-standalone/base/src/app/app.component.scss",
"chars": 0,
"preview": ""
},
{
"path": "angular-standalone/base/src/app/app.component.spec.ts",
"chars": 510,
"preview": "import { TestBed } from '@angular/core/testing';\nimport { provideRouter } from '@angular/router';\nimport { AppComponent "
},
{
"path": "angular-standalone/base/src/app/app.component.ts",
"chars": 280,
"preview": "import { Component } from '@angular/core';\nimport { IonApp } from '@ionic/angular/standalone';\n\n@Component({\n selector:"
},
{
"path": "angular-standalone/base/src/environments/environment.prod.ts",
"chars": 51,
"preview": "export const environment = {\n production: true\n};\n"
},
{
"path": "angular-standalone/base/src/environments/environment.ts",
"chars": 658,
"preview": "// This file can be replaced during build by using the `fileReplacements` array.\n// `ng build` replaces `environment.ts`"
},
{
"path": "angular-standalone/base/src/global.scss",
"chars": 1443,
"preview": "/*\n * App Global CSS\n * ----------------------------------------------------------------------------\n * Put style rules "
},
{
"path": "angular-standalone/base/src/index.html",
"chars": 730,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n <meta charset=\"utf-8\" />\n <title>Ionic App</title>\n\n <base href=\"/\" />\n\n <"
},
{
"path": "angular-standalone/base/src/main.ts",
"chars": 569,
"preview": "import { bootstrapApplication } from '@angular/platform-browser';\nimport { RouteReuseStrategy, provideRouter, withPreloa"
},
{
"path": "angular-standalone/base/src/polyfills.ts",
"chars": 2362,
"preview": "/**\n * This file includes polyfills needed by Angular and is loaded before the app.\n * You can add your own extra polyfi"
},
{
"path": "angular-standalone/base/src/test.ts",
"chars": 459,
"preview": "// This file is required by karma.conf.js and loads recursively all the .spec and framework files\n\nimport 'zone.js/testi"
},
{
"path": "angular-standalone/base/src/theme/variables.scss",
"chars": 113,
"preview": "// For information on how to create your own theme, please refer to:\n// https://ionicframework.com/docs/theming/\n"
},
{
"path": "angular-standalone/base/src/zone-flags.ts",
"chars": 201,
"preview": "/**\n * Prevents Angular change detection from\n * running with certain Web Component callbacks\n */\n// eslint-disable-next"
},
{
"path": "angular-standalone/base/tsconfig.app.json",
"chars": 287,
"preview": "/* To learn more about this file see: https://angular.io/config/tsconfig. */\n{\n \"extends\": \"./tsconfig.json\",\n \"compil"
},
{
"path": "angular-standalone/base/tsconfig.json",
"chars": 906,
"preview": "/* To learn more about this file see: https://angular.io/config/tsconfig. */\n{\n \"compileOnSave\": false,\n \"compilerOpti"
},
{
"path": "angular-standalone/base/tsconfig.spec.json",
"chars": 333,
"preview": "/* To learn more about this file see: https://angular.io/config/tsconfig. */\n{\n \"extends\": \"./tsconfig.json\",\n \"compil"
},
{
"path": "angular-standalone/community/.gitkeep",
"chars": 0,
"preview": ""
},
{
"path": "angular-standalone/official/blank/ionic.starter.json",
"chars": 256,
"preview": "{\n \"name\": \"Blank Starter\",\n \"baseref\": \"main\",\n \"tarignore\": [\n \"node_modules\",\n \"package-lock.json\",\n \"www"
},
{
"path": "angular-standalone/official/blank/src/app/app.component.html",
"chars": 63,
"preview": "<ion-app>\n <ion-router-outlet></ion-router-outlet>\n</ion-app>\n"
},
{
"path": "angular-standalone/official/blank/src/app/app.component.ts",
"chars": 277,
"preview": "import { Component } from '@angular/core';\nimport { IonApp, IonRouterOutlet } from '@ionic/angular/standalone';\n\n@Compon"
},
{
"path": "angular-standalone/official/blank/src/app/app.routes.ts",
"chars": 252,
"preview": "import { Routes } from '@angular/router';\n\nexport const routes: Routes = [\n {\n path: 'home',\n loadComponent: () ="
},
{
"path": "angular-standalone/official/blank/src/app/home/home.page.html",
"chars": 531,
"preview": "<ion-header [translucent]=\"true\">\n <ion-toolbar>\n <ion-title>\n Blank\n </ion-title>\n </ion-toolbar>\n</ion-he"
},
{
"path": "angular-standalone/official/blank/src/app/home/home.page.scss",
"chars": 322,
"preview": "#container {\n text-align: center;\n\n position: absolute;\n left: 0;\n right: 0;\n top: 50%;\n transform: translateY(-50"
},
{
"path": "angular-standalone/official/blank/src/app/home/home.page.spec.ts",
"chars": 440,
"preview": "import { ComponentFixture, TestBed } from '@angular/core/testing';\n\nimport { HomePage } from './home.page';\n\ndescribe('H"
},
{
"path": "angular-standalone/official/blank/src/app/home/home.page.ts",
"chars": 342,
"preview": "import { Component } from '@angular/core';\nimport { IonHeader, IonToolbar, IonTitle, IonContent } from '@ionic/angular/s"
},
{
"path": "angular-standalone/official/list/ionic.config.json",
"chars": 64,
"preview": "{\n \"name\": \"list\",\n \"integrations\": {},\n \"type\": \"angular\"\n}\n"
},
{
"path": "angular-standalone/official/list/ionic.starter.json",
"chars": 255,
"preview": "{\n \"name\": \"List Starter\",\n \"baseref\": \"main\",\n \"tarignore\": [\n \"node_modules\",\n \"package-lock.json\",\n \"www\""
},
{
"path": "angular-standalone/official/list/src/app/app.component.html",
"chars": 63,
"preview": "<ion-app>\n <ion-router-outlet></ion-router-outlet>\n</ion-app>\n"
},
{
"path": "angular-standalone/official/list/src/app/app.component.spec.ts",
"chars": 536,
"preview": "import { TestBed } from '@angular/core/testing';\nimport { provideRouter } from '@angular/router';\n\nimport { AppComponent"
},
{
"path": "angular-standalone/official/list/src/app/app.component.ts",
"chars": 277,
"preview": "import { Component } from '@angular/core';\nimport { IonApp, IonRouterOutlet } from '@ionic/angular/standalone';\n\n@Compon"
},
{
"path": "angular-standalone/official/list/src/app/app.routes.ts",
"chars": 393,
"preview": "import { Routes } from '@angular/router';\n\nexport const routes: Routes = [\n {\n path: 'home',\n loadComponent: () ="
},
{
"path": "angular-standalone/official/list/src/app/home/home.page.html",
"chars": 603,
"preview": "<ion-header [translucent]=\"true\">\n <ion-toolbar>\n <ion-title>\n Inbox\n </ion-title>\n </ion-toolbar>\n</ion-he"
},
{
"path": "angular-standalone/official/list/src/app/home/home.page.scss",
"chars": 0,
"preview": ""
},
{
"path": "angular-standalone/official/list/src/app/home/home.page.spec.ts",
"chars": 626,
"preview": "import { ComponentFixture, TestBed } from '@angular/core/testing';\nimport { provideRouter } from '@angular/router';\n\nimp"
},
{
"path": "angular-standalone/official/list/src/app/home/home.page.ts",
"chars": 835,
"preview": "\nimport { Component, inject } from '@angular/core';\nimport { RefresherCustomEvent, IonHeader, IonToolbar, IonTitle, IonC"
},
{
"path": "angular-standalone/official/list/src/app/message/message.component.html",
"chars": 1141,
"preview": "@if (message) {\n <ion-item\n [routerLink]=\"'/message/' + message.id\"\n [detail]=\"false\"\n >\n <div slot=\"start\""
},
{
"path": "angular-standalone/official/list/src/app/message/message.component.scss",
"chars": 1047,
"preview": "ion-item {\n --padding-start: 0;\n --inner-padding-end: 0;\n}\n\nion-label {\n margin-top: 12px;\n margin-bottom: 12px;\n}\n\n"
},
{
"path": "angular-standalone/official/list/src/app/message/message.component.spec.ts",
"chars": 767,
"preview": "import { ComponentFixture, TestBed } from '@angular/core/testing';\nimport { provideRouter } from '@angular/router';\nimpo"
},
{
"path": "angular-standalone/official/list/src/app/message/message.component.ts",
"chars": 812,
"preview": "\nimport { ChangeDetectionStrategy, Component, inject, Input } from '@angular/core';\nimport { RouterLink } from '@angular"
},
{
"path": "angular-standalone/official/list/src/app/services/data.service.spec.ts",
"chars": 326,
"preview": "import { TestBed } from '@angular/core/testing';\n\nimport { DataService } from './data.service';\n\ndescribe('DataService',"
},
{
"path": "angular-standalone/official/list/src/app/services/data.service.ts",
"chars": 1562,
"preview": "import { Injectable } from '@angular/core';\n\nexport interface Message {\n fromName: string;\n subject: string;\n date: s"
},
{
"path": "angular-standalone/official/list/src/app/view-message/view-message.page.html",
"chars": 1325,
"preview": "<ion-header [translucent]=\"true\">\n <ion-toolbar>\n <ion-buttons slot=\"start\">\n <ion-back-button\n [text]=\""
},
{
"path": "angular-standalone/official/list/src/app/view-message/view-message.page.scss",
"chars": 746,
"preview": "ion-item {\n --inner-padding-end: 0;\n --background: transparent;\n}\n\nion-label {\n margin-top: 12px;\n margin-bottom: 12"
},
{
"path": "angular-standalone/official/list/src/app/view-message/view-message.page.spec.ts",
"chars": 670,
"preview": "import { ComponentFixture, TestBed } from '@angular/core/testing';\nimport { provideRouter } from '@angular/router';\n\nimp"
},
{
"path": "angular-standalone/official/list/src/app/view-message/view-message.page.ts",
"chars": 1182,
"preview": "\nimport { Component, inject, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { P"
},
{
"path": "angular-standalone/official/sidemenu/ionic.starter.json",
"chars": 259,
"preview": "{\n \"name\": \"Sidemenu Starter\",\n \"baseref\": \"main\",\n \"tarignore\": [\n \"node_modules\",\n \"package-lock.json\",\n \""
},
{
"path": "angular-standalone/official/sidemenu/src/app/app.component.html",
"chars": 1291,
"preview": "<ion-app>\n <ion-split-pane contentId=\"main-content\">\n <ion-menu contentId=\"main-content\" type=\"overlay\">\n <ion-"
},
{
"path": "angular-standalone/official/sidemenu/src/app/app.component.scss",
"chars": 1950,
"preview": "ion-menu ion-content {\n --background: var(--ion-item-background, var(--ion-background-color, #fff));\n}\n\nion-menu.md ion"
},
{
"path": "angular-standalone/official/sidemenu/src/app/app.component.spec.ts",
"chars": 1356,
"preview": "import { TestBed } from '@angular/core/testing';\nimport { provideRouter } from '@angular/router';\n\nimport { AppComponent"
},
{
"path": "angular-standalone/official/sidemenu/src/app/app.component.ts",
"chars": 1657,
"preview": "\nimport { Component } from '@angular/core';\nimport { RouterLink, RouterLinkActive } from '@angular/router';\nimport { Ion"
},
{
"path": "angular-standalone/official/sidemenu/src/app/app.routes.ts",
"chars": 278,
"preview": "import { Routes } from '@angular/router';\n\nexport const routes: Routes = [\n {\n path: '',\n redirectTo: 'folder/inb"
},
{
"path": "angular-standalone/official/sidemenu/src/app/folder/folder.page.html",
"chars": 624,
"preview": "<ion-header [translucent]=\"true\">\n <ion-toolbar>\n <ion-buttons slot=\"start\">\n <ion-menu-button></ion-menu-butto"
},
{
"path": "angular-standalone/official/sidemenu/src/app/folder/folder.page.scss",
"chars": 375,
"preview": "ion-menu-button {\n color: var(--ion-color-primary);\n}\n\n#container {\n text-align: center;\n position: absolute;\n left:"
},
{
"path": "angular-standalone/official/sidemenu/src/app/folder/folder.page.spec.ts",
"chars": 639,
"preview": "import { ComponentFixture, TestBed } from '@angular/core/testing';\nimport { provideRouter } from '@angular/router';\n\nimp"
},
{
"path": "angular-standalone/official/sidemenu/src/app/folder/folder.page.ts",
"chars": 666,
"preview": "import { Component, inject, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { Io"
},
{
"path": "angular-standalone/official/tabs/ionic.starter.json",
"chars": 255,
"preview": "{\n \"name\": \"Tabs Starter\",\n \"baseref\": \"main\",\n \"tarignore\": [\n \"node_modules\",\n \"package-lock.json\",\n \"www\""
},
{
"path": "angular-standalone/official/tabs/src/app/app.component.html",
"chars": 63,
"preview": "<ion-app>\n <ion-router-outlet></ion-router-outlet>\n</ion-app>\n"
},
{
"path": "angular-standalone/official/tabs/src/app/app.component.ts",
"chars": 277,
"preview": "import { Component } from '@angular/core';\nimport { IonApp, IonRouterOutlet } from '@ionic/angular/standalone';\n\n@Compon"
},
{
"path": "angular-standalone/official/tabs/src/app/app.routes.ts",
"chars": 177,
"preview": "import { Routes } from '@angular/router';\n\nexport const routes: Routes = [\n {\n path: '',\n loadChildren: () => imp"
},
{
"path": "angular-standalone/official/tabs/src/app/explore-container/explore-container.component.html",
"chars": 230,
"preview": "<div id=\"container\">\n <strong>{{ name }}</strong>\n <p>\n Explore\n <a\n target=\"_blank\"\n rel=\"noopener no"
},
{
"path": "angular-standalone/official/tabs/src/app/explore-container/explore-container.component.scss",
"chars": 322,
"preview": "#container {\n text-align: center;\n\n position: absolute;\n left: 0;\n right: 0;\n top: 50%;\n transform: translateY(-50"
},
{
"path": "angular-standalone/official/tabs/src/app/explore-container/explore-container.component.spec.ts",
"chars": 543,
"preview": "import { ComponentFixture, TestBed } from '@angular/core/testing';\n\nimport { ExploreContainerComponent } from './explore"
},
{
"path": "angular-standalone/official/tabs/src/app/explore-container/explore-container.component.ts",
"chars": 279,
"preview": "import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'app-explore-container',\n templateUrl: './e"
},
{
"path": "angular-standalone/official/tabs/src/app/tab1/tab1.page.html",
"chars": 381,
"preview": "<ion-header [translucent]=\"true\">\n <ion-toolbar>\n <ion-title>\n Tab 1\n </ion-title>\n </ion-toolbar>\n</ion-he"
},
{
"path": "angular-standalone/official/tabs/src/app/tab1/tab1.page.scss",
"chars": 0,
"preview": ""
},
{
"path": "angular-standalone/official/tabs/src/app/tab1/tab1.page.spec.ts",
"chars": 440,
"preview": "import { ComponentFixture, TestBed } from '@angular/core/testing';\n\nimport { Tab1Page } from './tab1.page';\n\ndescribe('T"
},
{
"path": "angular-standalone/official/tabs/src/app/tab1/tab1.page.ts",
"chars": 463,
"preview": "import { Component } from '@angular/core';\nimport { IonHeader, IonToolbar, IonTitle, IonContent } from '@ionic/angular/s"
},
{
"path": "angular-standalone/official/tabs/src/app/tab2/tab2.page.html",
"chars": 381,
"preview": "<ion-header [translucent]=\"true\">\n <ion-toolbar>\n <ion-title>\n Tab 2\n </ion-title>\n </ion-toolbar>\n</ion-he"
},
{
"path": "angular-standalone/official/tabs/src/app/tab2/tab2.page.scss",
"chars": 0,
"preview": ""
},
{
"path": "angular-standalone/official/tabs/src/app/tab2/tab2.page.spec.ts",
"chars": 440,
"preview": "import { ComponentFixture, TestBed } from '@angular/core/testing';\n\nimport { Tab2Page } from './tab2.page';\n\ndescribe('T"
},
{
"path": "angular-standalone/official/tabs/src/app/tab2/tab2.page.ts",
"chars": 464,
"preview": "import { Component } from '@angular/core';\nimport { IonHeader, IonToolbar, IonTitle, IonContent } from '@ionic/angular/s"
}
]
// ... and 554 more files (download for full content)
About this extraction
This page contains the full source code of the ionic-team/starters GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 754 files (9.4 MB), approximately 2.5M tokens, and a symbol index with 2156 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.